From 2646fc8a0a347f09d7eebd01966adeff5054fa43 Mon Sep 17 00:00:00 2001 From: Adrian Chiris Date: Thu, 31 Jul 2014 16:50:35 +0300 Subject: [PATCH] ported changes from MFT-3.7.0 --- debian/changelog | 9 +- debian/rules | 4 + dev_mgt/tools_dev_types.c | 21 +- dev_mgt/tools_dev_types.h | 3 +- flint/cmd_line_parser.cpp | 23 +- flint/err_msgs.h | 5 +- flint/flint.cpp | 2 +- flint/flint.h | 2 +- flint/flint_params.cpp | 3 +- flint/flint_params.h | 3 +- flint/subcommands.cpp | 163 +- flint/subcommands.h | 3 +- include/mtcr_ul/mtcr.h | 16 +- man/mstflint.1 | 25 +- mflash/mflash.c | 248 +- mflash/mflash.h | 11 +- mflash/mflash_access_layer.c | 1 - mflash/mflash_access_layer.h | 6 +- mflash/mflash_common_structs.h | 5 +- mflash/mflash_pack_layer.c | 11 +- mflash/mflash_pack_layer.h | 13 +- mflash/mflash_types.h | 5 +- mft_utils/Makefile.am | 4 +- mft_utils/errmsg.cpp | 194 + mft_utils/errmsg.h | 106 + mlxconfig/log | 13 - mlxconfig/mlxcfg_lib.cpp | 630 +- mlxconfig/mlxcfg_lib.h | 120 +- mlxconfig/mlxcfg_parser.cpp | 40 +- mlxconfig/mlxcfg_ui.cpp | 87 +- mlxconfig/mlxcfg_ui.h | 8 +- mlxfwops/lib/Makefile.am | 3 +- mlxfwops/lib/flint_base.cpp | 5 +- mlxfwops/lib/flint_base.h | 11 +- mlxfwops/lib/flint_io.cpp | 29 +- mlxfwops/lib/flint_io.h | 10 +- mlxfwops/lib/fs2_ops.cpp | 29 +- mlxfwops/lib/fs2_ops.h | 4 +- mlxfwops/lib/fs3_ops.cpp | 507 +- mlxfwops/lib/fs3_ops.h | 24 +- mlxfwops/lib/fw_ops.cpp | 97 +- mlxfwops/lib/fw_ops.h | 18 +- mlxfwops/lib/mlxfwops_com.h | 5 + mstdump/crd_lib/crdump.c | 5 +- mstdump/crd_lib/crdump.h | 5 +- mstdump/crd_main/mstdump.c | 5 +- mstdump/mstdump_dbs/ConnectIB.csv | 40 +- mstdump/mstdump_dbs/ConnectX4.csv | 3315 ++-- mstdump/mstdump_dbs/SwitchIB.csv | 15524 +++++++++------- mtcr_ul/mtcr_ib.h | 2 + mtcr_ul/mtcr_ib_ofed.c | 111 +- mtcr_ul/mtcr_int_defs.h | 4 +- mtcr_ul/mtcr_tools_cif.c | 12 +- mtcr_ul/mtcr_tools_cif.h | 1 - mtcr_ul/mtcr_ul.c | 36 +- mtcr_ul/packets_common.c | 5 +- mtcr_ul/packets_common.h | 5 +- reg_access/reg_access.c | 112 +- reg_access/reg_access.h | 12 +- small_utils/hca_self_test.ofed | 1 + tools_layouts/Makefile.am | 5 +- ...youts.c => register_access_open_layouts.c} | 214 +- ...youts.h => register_access_open_layouts.h} | 138 +- tools_layouts/tools_layouts.c | 542 - tools_layouts/tools_layouts.h | 222 - tools_layouts/tools_open_layouts.c | 996 + tools_layouts/tools_open_layouts.h | 440 + 67 files changed, 14718 insertions(+), 9560 deletions(-) create mode 100644 mft_utils/errmsg.cpp create mode 100644 mft_utils/errmsg.h delete mode 100644 mlxconfig/log rename tools_layouts/{register_access_layouts.c => register_access_open_layouts.c} (74%) rename tools_layouts/{register_access_layouts.h => register_access_open_layouts.h} (62%) delete mode 100644 tools_layouts/tools_layouts.c delete mode 100644 tools_layouts/tools_layouts.h create mode 100644 tools_layouts/tools_open_layouts.c create mode 100644 tools_layouts/tools_open_layouts.h diff --git a/debian/changelog b/debian/changelog index 24f5e8f..06407a5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,11 @@ -mstflint (3.6.0) unstable; urgency=low +mstflint (3.7.0) unstable; urgency=low + + * Updated from MFT-3.7.0 + + -- Adrian Chiris Mon, 28 Jul 2014 09:00:33 +0200 + + +mstflint (3.7.0) unstable; urgency=low * Updated from MFT-3.7.0 initial relese diff --git a/debian/rules b/debian/rules index c30bbdb..a578276 100755 --- a/debian/rules +++ b/debian/rules @@ -15,7 +15,11 @@ # This has to be exported to make some magic below work. export DH_OPTIONS +DEB_CONFIGURE_EXTRA_FLAGS ?= "" %: dh $@ + +override_dh_auto_configure: + dh_auto_configure -- $(DEB_CONFIGURE_EXTRA_FLAGS) diff --git a/dev_mgt/tools_dev_types.c b/dev_mgt/tools_dev_types.c index 2d3aa6d..2e1c9ab 100644 --- a/dev_mgt/tools_dev_types.c +++ b/dev_mgt/tools_dev_types.c @@ -30,7 +30,6 @@ * SOFTWARE. */ - #include #include #include @@ -53,9 +52,9 @@ struct dev_info { enum dm_dev_type dev_type; }; -#define DEVID_ADDR_ANAFA2 0x60014 -#define DEVID_ADDR 0xf0014 -#define DM_ARBEL_DEV_VER_ADDR 0x82600 +#define DEVID_ADDR_INFINISCALE_III 0x60014 +#define DEVID_ADDR 0xf0014 +#define DM_INFINIHOST_III_EX_DEV_VER_ADDR 0x82600 static struct dev_info g_devs_info[] = { { @@ -248,13 +247,13 @@ int dm_get_device_id(mfile* mf, } if (i == DeviceEndMarker) { - /* Special cases - Sinai HW id and Anafa2 devid address. */ + /* Special cases - InfiniHost_III_LX HW id and InfiniScale_III devid address. */ if (*ptr_hw_dev_id == 24204) { - /* Some old Sinais have hw dev is of 24204 */ + /* Some old InfiniHost_III_LXs have hw dev is of 24204 */ *ptr_dm_dev_id = DeviceInfiniHostIIILx; } else { - /* Try Anafa2 devid address */ - if (mread4(mf, DEVID_ADDR_ANAFA2, &dword) != 4) + /* Try InfiniScale_III devid address */ + if (mread4(mf, DEVID_ADDR_INFINISCALE_III, &dword) != 4) return 1; if ((int)EXTRACT(dword, 0, 16) == g_devs_info[DeviceInfiniScaleIII].hw_dev_id) { *ptr_dm_dev_id = DeviceInfiniScaleIII; @@ -268,11 +267,11 @@ int dm_get_device_id(mfile* mf, } } - /* Special cases: For Arbel we need to check the SW id as well */ + /* Special cases: For InfiniHost_III_EX we need to check the SW id as well */ if (*ptr_hw_dev_id == g_devs_info[DeviceInfiniHostIIIEx].hw_dev_id) { - if (mread4(mf, DM_ARBEL_DEV_VER_ADDR, &dword) != 4) + if (mread4(mf, DM_INFINIHOST_III_EX_DEV_VER_ADDR, &dword) != 4) { - //printf("FATAL - Can't read arbel dev_ver addr\n"); + //printf("FATAL - Can't read InfiniHost_III_EX dev_ver addr\n"); return 1; } diff --git a/dev_mgt/tools_dev_types.h b/dev_mgt/tools_dev_types.h index 21c587f..9859dc1 100644 --- a/dev_mgt/tools_dev_types.h +++ b/dev_mgt/tools_dev_types.h @@ -30,7 +30,6 @@ * SOFTWARE. */ - #ifndef TOOLS_DEV_TYPE_H #define TOOLS_DEV_TYPE_H @@ -116,7 +115,7 @@ u_int32_t dm_get_hw_dev_id(dm_dev_id_t type); /** * Returns the HW chip revision of the given device type or zero on failures, - * This is useful to distinguish between hermon and hermon_b0. + * This is useful to distinguish between ConnectX2 and ConnectX. */ u_int32_t dm_get_hw_rev_id(dm_dev_id_t type); diff --git a/flint/cmd_line_parser.cpp b/flint/cmd_line_parser.cpp index ee7b2f8..4c33961 100644 --- a/flint/cmd_line_parser.cpp +++ b/flint/cmd_line_parser.cpp @@ -173,6 +173,7 @@ FlagMetaData::FlagMetaData() { _flags.push_back(new Flag("", "use_image_ps", 0)); _flags.push_back(new Flag("", "use_image_guids", 0)); _flags.push_back(new Flag("", "use_image_rom", 0)); + _flags.push_back(new Flag("", "ignore_dev_data", 0)); _flags.push_back(new Flag("", "dual_image", 0)); _flags.push_back(new Flag("", "striped_image", 0)); _flags.push_back(new Flag("", "banks", 1)); @@ -301,7 +302,7 @@ bool getGUIDFromStr(string str, guid_t& guid, string prefixErr="") g = strtoull(str.c_str(), &endp, 16); if (*endp || (g == 0xffffffffffffffffULL && errno == ERANGE)) { if (prefixErr.size() == 0) { - printf("-E- Invalid GUID syntax (%s) %s \n", str.c_str(), errno ? strerror(errno) : "" ); + printf("-E- Invalid Guid/Mac/Uid syntax (%s) %s \n", str.c_str(), errno ? strerror(errno) : "" ); } else { printf("%s\n", prefixErr.c_str()); } @@ -607,6 +608,12 @@ void Flint::initCmdParser() { "Do not save the ROM which exists in the device.\n" "Commands affected: burn"); + AddOptions("ignore_dev_data", + ' ', + "", + "Do not attempt to take device data sections from device(sections will be taken from the image. FS3 Only).\n" + "Commands affected: burn"); + AddOptions("dual_image", ' ', "", @@ -688,7 +695,7 @@ ParseStatus Flint::HandleOption(string name, string value) string str1 = " "+it->second->getFlagL()+((it->second->getFlagS() == "") ? (" ") : ("|"))+it->second->getFlagS()\ +" "+it->second->getParam(); string str2 = ": " + it->second->getDesc()+"\n"; - printf("%-40s %s", str1.c_str(), str2.c_str()); + printf("%-44s %s", str1.c_str(), str2.c_str()); } cout<= '0') && ((cha) <= '9')) + ParseStatus Flint::parseCmdLine(int argc, char* argv[]) { //Step1 separate between option section and cmd section SubCmdMetaData subCmds; @@ -901,8 +912,8 @@ ParseStatus Flint::parseCmdLine(int argc, char* argv[]) { //first arg is the flint command we can copy as is newArgv[0] = strcpy(new char[strlen(argvOpt[0]) + 1], argvOpt[0]); while (i < argcOpt) { - if (argvOpt[i][0] == '-') //its a flag so we copy to new_argv as is - { + if (argvOpt[i][0] == '-' && !IS_NUM(argvOpt[i][1])) //its a flag (and not a number) so we copy to new_argv as is + { newArgv[j] = strcpy(new char[strlen(argvOpt[i]) + 1], argvOpt[i]); i++; @@ -913,7 +924,7 @@ ParseStatus Flint::parseCmdLine(int argc, char* argv[]) { argStart = i; argEnd = i; int argsSize = 0; - while (argEnd < argcOpt && argvOpt[argEnd][0] != '-') { + while (argEnd < argcOpt && (argvOpt[argEnd][0] != '-' || IS_NUM(argvOpt[argEnd][1]))) { argsSize += strlen(argvOpt[argEnd]) + 1; //for the comma argEnd++; } @@ -949,7 +960,7 @@ ParseStatus Flint::parseCmdLine(int argc, char* argv[]) { int lastFlagPos; char* strippedFlag; for (lastFlagPos = argc - 1; lastFlagPos > 0; lastFlagPos--) { - if (argv[lastFlagPos][0] == '-') + if (argv[lastFlagPos][0] == '-' && !IS_NUM(argv[lastFlagPos][1])) break; } if (lastFlagPos == 0) { diff --git a/flint/err_msgs.h b/flint/err_msgs.h index 04c6055..9d0c118 100644 --- a/flint/err_msgs.h +++ b/flint/err_msgs.h @@ -2,7 +2,7 @@ * * err_msgs.h - FLash INTerface * - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -71,11 +71,13 @@ typedef enum { #define FLINT_CMD_ARGS_ERROR "Command \"%s\" requires %d arguments, but %d arguments were given\n" #define FLINT_CMD_ARGS_ERROR2 "Command \"%s\" requires at most %d arguments, but %d arguments were given\n" #define FLINT_CMD_ARGS_ERROR3 "Command \"%s\" requires at least %d arguments, but %d arguments were given\n" +#define FLINT_CMD_ARGS_ERROR4 "Command \"%s\" requires %d or %d arguments, but %d arguments were given\n" #define FLINT_INVALID_OPTION_ERROR "Unknown option \"%s\" for the \"%s\" command. you can use %s.\n" #define FLINT_INVALID_FLAG_ERROR "Invalid switch \"%s\" is specified.\n" #define FLINT_INVALID_UID_NUM_BX_ERROR "Number of UIDs on BridgeX should be %d\n" #define FLINT_BX_BAD_MAC_FORMAT_ERROR "Bad mac ( %4.4x%8.8x ) %s. Please re-burn with a valid MACs value.\n" #define FLINT_INVALID_FLAG_WITH_FLAG_ERROR "Cannot specify \"%s\" flag with \"%s\" flag.\n" +#define FLINT_INVALID_FLAG_WITHOUT_FLAG_ERROR "\"%s\" flag must be specified with \"%s\" flag.\n" #define FLINT_INVALID_FLAG_WITH_CMD_ERROR "Cannot specify flag: %s with Command: %s\n" #define FLINT_CMD_VERIFY_ERROR "FW image verification failed: %s. AN HCA DEVICE CAN NOT BOOT FROM THIS IMAGE.\n" #define FLINT_FAILED_QUERY_ERROR "Failed to query %s: %s.%s\n" @@ -93,6 +95,7 @@ typedef enum { #define FLINT_FLASH_WRITE_ERROR "Flash write failed. %s\n" #define FLINT_INVALID_DATA_ERROR "Invalid data \"%s\"\n" #define FLINT_INVALID_SIZE_ERROR "Invalid size \"%s\", Length should be 4-bytes aligned.\n" +#define FLINT_INVALID_ARG_ERROR "Invalid argument \"%s\"\n" #define FLINT_OPEN_FILE_ERROR "Cannot open %s: %s\n" #define FLINT_WRITE_FILE_ERROR "Failed to write to %s: %s\n" #define FLINT_IO_OPEN_ERROR "Failed to open %s: %s\n" diff --git a/flint/flint.cpp b/flint/flint.cpp index bc9d2b7..83c2cdb 100644 --- a/flint/flint.cpp +++ b/flint/flint.cpp @@ -2,7 +2,7 @@ * * flint.cpp - FLash INTerface * - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU diff --git a/flint/flint.h b/flint/flint.h index 8bb86b5..24b68c7 100644 --- a/flint/flint.h +++ b/flint/flint.h @@ -1,6 +1,6 @@ /* * - * flint.h - FLash INTerface + * flint2.h - FLash INTerface * * Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. * diff --git a/flint/flint_params.cpp b/flint/flint_params.cpp index 9c6b460..f304c4d 100644 --- a/flint/flint_params.cpp +++ b/flint/flint_params.cpp @@ -2,7 +2,7 @@ * * flint_params.cpp - FLash INTerface * - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -68,6 +68,7 @@ FlintParams::FlintParams() use_image_rom = false; dual_image = false; striped_image = false; + ignore_dev_data = false; banks_specified = false; banks = 4; log_specified = false; diff --git a/flint/flint_params.h b/flint/flint_params.h index 37dc8e5..c1d1f3d 100644 --- a/flint/flint_params.h +++ b/flint/flint_params.h @@ -2,7 +2,7 @@ * * flint_params.h - FLash INTerface * - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -119,6 +119,7 @@ public: bool use_image_rom; bool dual_image; bool striped_image; + bool ignore_dev_data; bool banks_specified; int banks; bool log_specified; diff --git a/flint/subcommands.cpp b/flint/subcommands.cpp index 9ca8500..ca1759e 100644 --- a/flint/subcommands.cpp +++ b/flint/subcommands.cpp @@ -42,6 +42,8 @@ #include #include #include +#include +#include #include @@ -58,10 +60,12 @@ using namespace std; -#define INDENT "\t\t\t\t\t " +#define INDENT "\t\t\t\t\t\t" #define INDENTEX "\t" -// The Log file writing implementation +/*********************************** + * Log file writing implementation +************************************/ //global log file header FILE* flint_log_fh = NULL; @@ -175,6 +179,25 @@ int write_result_to_log(int is_failed, const char* err_msg, bool write) } return 0; } +/******************* + * Static functions + ******************/ + +static bool str2Num(const char* str, u_int32_t& num) { + char* endp; + u_int32_t tempNum; + + if (!str) { + return false; + } + tempNum = strtoul(str, &endp, 0); + if (*endp) { + return false; + } + num = tempNum; + return true; +} + /******************* * Class: Subcommand ******************/ @@ -654,10 +677,10 @@ void SubCommand::displayOneExpRomInfo(const rom_info_t& info) { const char* typeStr = FwOperations::expRomType2Str(info.exp_rom_product_id); if (info.exp_rom_product_id == 0xf) {// version id in this case is the freeStr that was moved to exp_rom_ver[0] in mlxfwops - printf("devid=%d version_id=%d type=%s", info.exp_rom_dev_id,info.exp_rom_ver[0], typeStr); + printf("devid=%d version_id=%d type=%s ", info.exp_rom_dev_id,info.exp_rom_ver[0], typeStr); } else { if (typeStr) { - printf("type=%s", typeStr); + printf("type=%s ", typeStr); } else { printf("0x%x - Unknown ROM product ID\n", info.exp_rom_product_id); return; @@ -846,8 +869,7 @@ bool SubCommand::reportGuidChanges(guid_t* new_guids, guid_t* new_macs,\ bool printMacs, bool printUids, int guidNum) { //should be used ONLY on FS2 in current implementation - - printf(" You are about to change the Guids/Macs/Uids on the device:\n\n"); + printf(" You are about to change the Guids/Macs/Uids on the %s:\n\n", _flintParams.device_specified ? "device" : "image"); printf(" New Values " GUID_SPACES "Current Values\n"); if (printUids) { printUidsFunc(new_guids, old_guids ); @@ -1001,6 +1023,53 @@ void SubCommand::printMissingGuidErr(bool ibDev, bool ethDev, bool bxDev) return; } +bool SubCommand::extractUIDArgs(std::vector& cmdArgs, u_int8_t& numOfGuids, u_int8_t& stepSize){ + //extract num_of_guids and step_size from numGuidsStr, stepStr + u_int32_t tempNumOfGuids = 0; + u_int32_t tempStepSize = 0; + string tag, valStr; + for (std::vector::iterator it = cmdArgs.begin(); it != cmdArgs.end(); it++) { + std::stringstream ss((it->c_str())); + // get the tag + if (!std::getline(ss, tag, '=')) { + reportErr(true, FLINT_INVALID_ARG_ERROR,it->c_str()); + return false; + } + // get the val + if (!std::getline(ss, valStr, '=')) { + reportErr(true, FLINT_INVALID_ARG_ERROR,it->c_str()); + return false; + } + // make sure no other tokens are present + if (!(!std::getline(ss, valStr, '='))) { + reportErr(true, FLINT_INVALID_ARG_ERROR,it->c_str()); + return false; + } + if (tag == "guids_num") { + if (!str2Num(valStr.c_str(), tempNumOfGuids)) { + reportErr(true, FLINT_INVALID_ARG_ERROR, it->c_str()); + return false; + } + } else if (tag == "step_size") { + if (!str2Num(valStr.c_str(), tempStepSize)) { + reportErr(true, FLINT_INVALID_ARG_ERROR, it->c_str()); + return false; + } + } else { + reportErr(true, FLINT_INVALID_ARG_ERROR, it->c_str()); + return false; + } + } + // perform checks + if (tempNumOfGuids <= 0 || tempNumOfGuids >= 256 || tempStepSize<=0 || tempStepSize>=256) { + reportErr(true, "Invalid argument values, values should be taken from the range [1..255]\n"); + return false; + } + numOfGuids = tempNumOfGuids; + stepSize = tempStepSize; + return true; +} + /*********************** *Class: BurnSubCommand **********************/ @@ -1071,6 +1140,10 @@ bool BurnSubCommand::verifyParams() reportErr(true, FLINT_INVALID_FLAG_WITH_FLAG_ERROR, "-use_image_ps", "-vsd"); return false; } + if (_flintParams.ignore_dev_data && !_flintParams.nofs) { + reportErr(true, FLINT_INVALID_FLAG_WITHOUT_FLAG_ERROR, "-nofs", "-ignore_dev_data"); + return false; + } return true; } @@ -1091,6 +1164,7 @@ void BurnSubCommand::updateBurnParams() _burnParams.useImageGuids = _flintParams.use_image_guids; _burnParams.singleImageBurn = !_flintParams.dual_image; _burnParams.noDevidCheck = _flintParams.no_devid_check; + _burnParams.useImgDevData = _flintParams.ignore_dev_data; if (_burnParams.userGuidsSpecified) { _burnParams.userUids = _flintParams.user_guids; } @@ -1187,7 +1261,7 @@ FlintStatus BurnSubCommand::burnFs3() return FLINT_FAILED; } // on FS3 burn we require query to pass - if (!_devQueryRes) { + if (!_devQueryRes && _burnParams.burnFailsafe) { reportErr(true, FLINT_FS3_BURN_ERROR, _fwOps->err()); return FLINT_FAILED; } @@ -1197,7 +1271,7 @@ FlintStatus BurnSubCommand::burnFs3() return FLINT_BURN_ABORTED; } // check Psid - if (!checkPSIDAndIbEth()) { + if (_devQueryRes && !checkPSIDAndIbEth()) { return FLINT_FAILED; } // deal with rom @@ -1211,7 +1285,16 @@ FlintStatus BurnSubCommand::burnFs3() return FLINT_FAILED; } } - + if (!_burnParams.burnFailsafe) { + printf("Burn process will not be failsafe. No checks will be performed.\n"); + if (_burnParams.useImgDevData) { + printf("ALL flash, including the device data sections will be overwritten.\n"); + } + printf("If this process fails, computer may remain in an inoperable state.\n"); + if (!askUser()) { + return FLINT_FAILED; + } + } if (!_fwOps->FwBurnAdvanced(_imgOps, _burnParams)) { reportErr(true, FLINT_FS3_BURN_ERROR, _fwOps->err()); return FLINT_FAILED; @@ -1219,6 +1302,10 @@ FlintStatus BurnSubCommand::burnFs3() PRINT_PROGRESS(_burnParams.progressFunc, 101); write_result_to_log(FLINT_SUCCESS, "", _flintParams.log_specified); + const char* resetRec = _fwOps->FwGetResetRecommandationStr(); + if (resetRec) { + printf("-I- %s\n", resetRec); + } return FLINT_SUCCESS; } @@ -1428,7 +1515,7 @@ void BurnSubCommand::dealWithExpRom() if (cond) { // Enter here when: // The fw on the flash is OK (passed query, and it should pass verify in mlxfwops) && - // ( The device is hermon || golan )&& + // ( The device is connectx || connectib )&& // The image fw supports modifying ROM OR it contains ROM &&. // The user didn't ask to burn the image rom. && // The fw on the flash doesn't contain product version @@ -2259,14 +2346,17 @@ SgSubCommand:: SgSubCommand() INDENTEX"flint will re-burn the current image using the given GUIDs/MACs/UIDs."; _flagLong = "sg"; _flagShort = ""; - _param = "[nocrc]"; + _param = "[guids_num= step_size=] | [nocrc]"; _paramExp = "nocrc: (optional) When specified the flint would not update\n" - INDENTEX"the full image crc after changing the guids"; + INDENTEX"the full image crc after changing the guids\n" + INDENTEX"num_of_guids: number of GUIDs to be allocated per physical port (FS3 Only)\n" + INDENTEX"step_size: step size between GUIDs (FS3 Only)"; _example = FLINT_NAME" -d "MST_DEV_EXAMPLE1" -guid 0x0002c9000100d050 sg"; _v = Wtv_Dev_Or_Img; _cmdType = SC_Sg; _ops = NULL; memset(&_info, 0, sizeof(_info)); + memset(&_sgParams, 0, sizeof(_sgParams)); } SgSubCommand:: ~SgSubCommand() @@ -2276,11 +2366,14 @@ SgSubCommand:: ~SgSubCommand() bool SgSubCommand::verifyParams() { - if (_flintParams.cmd_params.size() == 1 && _flintParams.cmd_params[0] != "nocrc") { - reportErr(true, "The sg parameter should be \"nocrc\" or nothing\n"); + if ((_flintParams.cmd_params.size() == 1 && _flintParams.cmd_params[0] != "nocrc")||\ + (_flintParams.cmd_params.size() == 2 && \ + !extractUIDArgs(_flintParams.cmd_params, _sgParams.numOfGUIDs, _sgParams.stepSize))) { + reportErr(true, "The sg parameter should be \"nocrc\", \"guids_num= step_size=\" or nothing\n"); return false; - } - if (_flintParams.cmd_params.size()> 1) { + } + + if (_flintParams.cmd_params.size()> 2) { reportErr(true, FLINT_CMD_ARGS_ERROR2,_name.c_str(), 1, (int)_flintParams.cmd_params.size()); return false; } @@ -2371,6 +2464,9 @@ FlintStatus SgSubCommand::sgFs2() { //different behaviours for fs2 device with blank guids and fs2 device with guids or image //different behaviour if isfailesafe or not + if (_flintParams.cmd_params.size() > 1) { + reportErr(true, FLINT_CMD_ARGS_ERROR2, _name.c_str(), 1, _flintParams.cmd_params.size()); + } if (_flintParams.device_specified && !_info.fs2_info.blank_guids) { // 2- FS2 device with no blank Guids @@ -2408,7 +2504,7 @@ FlintStatus SgSubCommand::sgFs2() FlintStatus SgSubCommand::sgFs3() { if ( _flintParams.uid_specified) { - // for golan we just need the base guid so we put it in the first location. + // for connectib we just need the base guid so we put it in the first location. _sgParams.userGuids.resize(1); _sgParams.userGuids[0]= _flintParams.baseUid; if (!_ops->FwSetGuids(_sgParams, &verifyCbFunc)) { @@ -2452,8 +2548,9 @@ SmgSubCommand:: SmgSubCommand() INDENTEX"Use -uid flag to set the desired GUIDs, intended for production use only."; _flagLong = "smg"; _flagShort = ""; - _param = ""; - _paramExp = "None"; + _param = "[guids_num= step_size=]"; + _paramExp = "guids_num: number of GUIDs to be allocated per physical port\n" + INDENTEX"step_size: step size between GUIDs"; _example = FLINT_NAME" -i fw_image.bin -uid 0x0002c9000100d050 smg" #ifndef __WIN__ "\n"INDENTEX FLINT_NAME" -d "MST_DEV_EXAMPLE3" -uid 0x0002c9000100d050 smg (should be used when device is idle)" @@ -2461,8 +2558,7 @@ SmgSubCommand:: SmgSubCommand() ; _v = Wtv_Dev_Or_Img; _cmdType = SC_Smg; - _baseGuid.h = 0; - _baseGuid.l = 0; + memset(&_baseGuid, 0, sizeof(_baseGuid)); } SmgSubCommand:: ~SmgSubCommand() @@ -2480,7 +2576,17 @@ bool SmgSubCommand::verifyParams() reportErr(true, FLINT_INVALID_OPTION_ERROR, "\"-uids\"", _name.c_str(), "\"-uid\""); return false; } - _baseGuid = _flintParams.baseUid; + + if (_flintParams.cmd_params.size() != 0 && _flintParams.cmd_params.size() != 2) { + reportErr(true, FLINT_CMD_ARGS_ERROR4, _name.c_str(), 0, 2, _flintParams.cmd_params.size()); + return false; + } + + if (_flintParams.cmd_params.size() == 2 &&\ + !extractUIDArgs(_flintParams.cmd_params, _baseGuid.num_of_guids, _baseGuid.step_size)) { + return false; + } + _baseGuid.uid = _flintParams.baseUid; //printf("-D-"GUID_FORMAT"\n", _baseGuid.h, _baseGuid.l); return true; } @@ -2492,14 +2598,19 @@ FlintStatus SmgSubCommand::executeCommand() } FwOperations *ops = _flintParams.device_specified ? _fwOps : _imgOps; //TODO: dispaly MFG guid changes - if (!ops->FwSetMFG(_baseGuid, &verifyCbFunc)) { + bool ret; + if (_flintParams.cmd_params.size() == 2) { + ret = ops->FwSetMFG(_baseGuid, &verifyCbFunc); + } else { + ret = ops->FwSetMFG(_baseGuid.uid, &verifyCbFunc); + } + if (!ret) { reportErr(true, FLINT_MFG_ERROR, ops->err()); return FLINT_FAILED; } return FLINT_SUCCESS; } - /*********************** *Class: Set Vpd Subcommand **********************/ @@ -2718,7 +2829,7 @@ FlintStatus DcSubCommand::executeCommand() { //check on what we are wroking ops = (_flintParams.device_specified) ? _fwOps : _imgOps; const char* file = _flintParams.cmd_params.size() == 1 ? _flintParams.cmd_params[0].c_str() : (const char*) NULL; - if (!ops->FwGetSection(H_FW_CONF, _sect)) { + if (!ops->FwGetSection(H_FW_CONF, _sect, _flintParams.striped_image)) { reportErr(true, FLINT_DUMP_ERROR, "Fw Configuration", ops->err()); return FLINT_FAILED; } @@ -2769,7 +2880,7 @@ FlintStatus DhSubCommand::executeCommand() { //check on what we are wroking ops = (_flintParams.device_specified) ? _fwOps : _imgOps; const char* file = _flintParams.cmd_params.size() == 1 ? _flintParams.cmd_params[0].c_str() : (const char*) NULL; - if (!ops->FwGetSection(H_HASH_FILE, _sect)) { + if (!ops->FwGetSection(H_HASH_FILE, _sect, _flintParams.striped_image)) { reportErr(true, FLINT_DUMP_ERROR, "Hash file", ops->err()); return FLINT_FAILED; } diff --git a/flint/subcommands.h b/flint/subcommands.h index 1d42ab5..b7bfb4f 100644 --- a/flint/subcommands.h +++ b/flint/subcommands.h @@ -127,6 +127,7 @@ protected: bool guidsSpecified, bool macsSpecified, bool uidsSpecified); void printMissingGuidErr(bool ibDev, bool ethDev, bool bxDev); + bool extractUIDArgs(std::vector& cmdArgs, u_int8_t& numOfGuids, u_int8_t& stepSize); bool getGUIDFromStr(string str, guid_t& guid, string prefixErr=""); bool getPasswordFromUser(const char *preStr, char buffer[MAX_PASSWORD_LEN+1]); bool askUser(const char* question=NULL, bool printAbrtMsg=true); @@ -296,7 +297,7 @@ public: class SmgSubCommand : public SubCommand { private: - guid_t _baseGuid; + fs3_guid_t _baseGuid; public: SmgSubCommand(); ~SmgSubCommand(); diff --git a/include/mtcr_ul/mtcr.h b/include/mtcr_ul/mtcr.h index 89166f9..c161481 100644 --- a/include/mtcr_ul/mtcr.h +++ b/include/mtcr_ul/mtcr.h @@ -1,6 +1,4 @@ /* - * mtcr.h - Mellanox Software tools (mst) driver definitions - * * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two @@ -12,7 +10,7 @@ * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: - * + * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. @@ -21,7 +19,7 @@ * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -102,6 +100,16 @@ typedef enum MError { ME_CMDIF_BAD_OP, ME_CMDIF_NOT_SUPP, ME_CMDIF_BAD_SYS, + ME_CMDIF_UNKN_TLV, + + //errors regarding MAD IF + ME_MAD_BUSY = 0x400, + ME_MAD_REDIRECT, + ME_MAD_BAD_VER, + ME_MAD_METHOD_NOT_SUPP, + ME_MAD_METHOD_ATTR_COMB_NOT_SUPP, + ME_MAD_BAD_DATA, + ME_MAD_GENERAL_ERR, ME_LAST } MError; diff --git a/man/mstflint.1 b/man/mstflint.1 index f7289a7..a68f4c9 100644 --- a/man/mstflint.1 +++ b/man/mstflint.1 @@ -1,5 +1,5 @@ .\"Text automatically generated by txt2man -.TH mstflint 3.6.0 "December 2013" "" "" +.TH mstflint 3.7.0 "August 2014" "" "" .SH NAME \fBmstflint \fP- Mellanox Technologies Firmware Update Tool .SH SYNOPSIS @@ -251,6 +251,13 @@ Commands affected: burn Commands affected: burn .TP .B +\fB--ignore_dev_data\fP +: Do not attempt to take device data sections +from device(sections will be taken from +the image. FS3 Only). +Commands affected: burn +.TP +.B \fB--dual_image\fP : Make the burn process burn two images on flash (previously default algorithm). Currentdefault @@ -330,7 +337,7 @@ bb .TP .B sg -[nocrc] : Set GUIDs. +[guids_num= step_size=] | [nocrc] : Set GUIDs. .TP .B smg @@ -573,7 +580,7 @@ If the GUIDs/MACs/UIDs in the image on flash are non-blank, .IP mstflint will re-burn the current image using the given GUIDs/MACs/UIDs. .IP -\fICommand\fP: sg [nocrc] +\fICommand\fP: sg [guids_num= step_size=] | [nocrc] .IP \fIParameters\fP: .IP @@ -581,6 +588,10 @@ nocrc: (optional) When specified the mstflint would not update .IP the full image crc after changing the guids .IP +num_of_guids: number of GUIDs to be allocated per physical port (FS3 Only) +.IP +step_size: step size between GUIDs (FS3 Only) +.IP \fIExamples\fP: .IP \(bu 4 mstflint \fB-d\fP 03:00.0 \fB-guid\fP 0x0002c9000100d050 sg @@ -596,9 +607,13 @@ mstflint \fB-d\fP 03:00.0 \fB-guid\fP 0x0002c9000100d050 sg .IP Use \fB-uid\fP flag to set the desired GUIDs. .IP -\fICommand\fP: smg +\fICommand\fP: smg [guids_num= step_size=] .IP -\fIParameters\fP: None +\fIParameters\fP: +.IP +num_of_guids: number of GUIDs to be allocated per physical port +.IP +step_size: step size between GUIDs .IP \fIExamples\fP: .IP \(bu 4 diff --git a/mflash/mflash.c b/mflash/mflash.c index 504c69d..1dc9477 100644 --- a/mflash/mflash.c +++ b/mflash/mflash.c @@ -34,7 +34,6 @@ // TODO: remove all commented defines and ifdefs of __be32.... or __cpu_to_be32... etc (they are taken from compatibility.h now) #ifdef IRISC -#include //#define __cpu_to_be32(val) (val) #define NULL 0 @@ -96,11 +95,12 @@ #include #include +#include #define SWAPL(l) ntohl(l) #define inline __inline #define OP_NOT_SUPPORTED EINVAL -#define usleep(x) Sleep(((x + 999)/1000) ) +#define usleep(x) Sleep(((x + 999)/1000)) #endif // __WIN__ #endif @@ -126,9 +126,14 @@ int mf_open_fw(mflash* mfl, flash_params_t* flash_params, int num_of_banks); int cntx_int_spi_get_status_data(mflash* mfl, u_int8_t op_type, u_int32_t* status, u_int8_t data_num); +// forward decl: +int mfl_com_lock(mflash* mfl); +int release_semaphore(mflash* mfl, int ignore_writer_lock); + // NOTE: This macro returns ... not nice. #define CHECK_RC(rc) do {if (rc) return rc;} while(0) +#define CHECK_RC_REL_SEM(mfl, rc) do {if (rc) {release_semaphore(mfl, 0); return rc;}} while(0) #define ARRSIZE(arr) (sizeof(arr)/sizeof(arr[0])) @@ -176,7 +181,7 @@ int cntx_int_spi_get_status_data(mflash* mfl, u_int8_t op_type, u_int32_t* statu #define CPUMODE 0xf0150 #define SWITCHX_HW_ID 0x245 -#define HERMON_HW_ID 0x190 +#define CONNECTX_HW_ID 0x190 #define CX3_PRO_HW_ID 0x1F7 #define CX3_HW_ID 0x1F5 #define CX4_HW_ID 0x209 @@ -207,7 +212,11 @@ enum FlashConstant { ERASE_SUBSECTOR_RETRIES = 10000, FLASH_CMD_CNT = 5000, // Number of reads till flash cmd is zeroed - GPIO_SEM_TRIES = 1024 , // Number of tries to obtain a GPIO sem. +#ifdef __WIN__ + GPIO_SEM_TRIES = 1024 , +#else + GPIO_SEM_TRIES = 4096 , // Number of tries to obtain a GPIO sem. +#endif MAX_WRITE_BUFFER_SIZE = 256 // Max buffer size for buffer write devices }; @@ -777,7 +786,6 @@ int spi_fill_attr_from_params(mflash* mfl, flash_params_t* flash_params, unsigne #define GET_FLASH_RETRY 2 int st_spi_fill_attr(mflash* mfl, flash_params_t* flash_params) { - int rc; flash_params_t *cur_flash_params, tmp_flash_params; unsigned type_index; @@ -1036,9 +1044,9 @@ int empty_set_bank(mflash* mfl, u_int32_t bank) { } int is_connectx_family(u_int32_t dev_id) { - if (dev_id == HERMON_HW_ID || // Hermon - dev_id == CX3_HW_ID || // CX3 - dev_id == CX3_PRO_HW_ID) { // Bental + if (dev_id == CONNECTX_HW_ID || + dev_id == CX3_HW_ID || + dev_id == CX3_PRO_HW_ID) { return 1; } return 0; @@ -1107,6 +1115,90 @@ int cntx_exec_cmd(mflash* mfl, u_int32_t gw_cmd, char* msg) { return gw_wait_ready(mfl, msg); } +/* + * execute a flash GW command and get the output: data0...data3 from the flash interface + * + * mfl - pointer to an initilized mflash obj + * gw_cmd - the flash gateway command to execute + * buff - pointer to a buffer where the output data from the flash GW will be written to + * buff_dword_sz - size for buff in dwords + * addr - if != NULL *addr will be written to the addr bits of the flash GW. (for commands that read from flash) + * msg - optional string that describes the action for debug purposes, not used ATM however its recommended to put usefull + * data for future dubugabillity. + * return : MFE_OK (0) upon success or a value != 0 upon error accroding to mlfash error code. + */ +int cntx_exec_cmd_get(mflash* mfl, u_int32_t gw_cmd, u_int32_t* buff,int buff_dword_sz, u_int32_t* addr, char* msg) +{ + int rc; + if (!mfl ||!buff || !buff_dword_sz) { + return MFE_BAD_PARAMS; + } + + rc = mfl_com_lock(mfl); CHECK_RC(rc); + + // write GW addr if needed + if (addr) { + if (mwrite4(mfl->mf, HCR_FLASH_ADDR, *addr) != 4) { + release_semaphore(mfl, 0); + return MFE_CR_ERROR; + } + } + // execute gw command + rc = cntx_exec_cmd(mfl, gw_cmd, msg); CHECK_RC_REL_SEM(mfl, rc); + // copy data from CR-space to buff + if (mread4_block(mfl->mf, HCR_FLASH_DATA, buff, (buff_dword_sz << 2)) != (buff_dword_sz << 2 )) { + release_semaphore(mfl, 0); + return MFE_CR_ERROR; + } + //release semaphore + release_semaphore(mfl, 0); + return MFE_OK; +} + +/* + * Set input in: data0...data3 from the flash interface and execute a flash GW command + * + * mfl - pointer to an initilized mflash obj + * gw_cmd - the flash gateway command to execute + * buff - if != NULL pointer to a buffer to the input data for the flash GW. + * buff_dword_sz - size for buff in dwords + * addr - if != NULL *addr will be written to the addr bits of the flash GW. (for commands that write from flash) + * msg - optional string that describes the action for debug purposes, not used ATM however its recommended to put usefull + * data for future dubugabillity. + * return : MFE_OK (0) upon success or a value != 0 upon error accroding to mlfash error code. + */ +int cntx_exec_cmd_set(mflash* mfl, u_int32_t gw_cmd, u_int32_t* buff,int buff_dword_sz, u_int32_t* addr, char* msg) +{ + int rc; + if (!mfl) { + return MFE_BAD_PARAMS; + } + + rc = mfl_com_lock(mfl); CHECK_RC(rc); + + // write data from buff to CR-space + if (buff && buff_dword_sz) { + if (mwrite4_block(mfl->mf, HCR_FLASH_DATA, buff, (buff_dword_sz << 2)) != (buff_dword_sz << 2 )) { + release_semaphore(mfl, 0); + return MFE_CR_ERROR; + } + } + + // write GW addr if needed + if (addr) { + if (mwrite4(mfl->mf, HCR_FLASH_ADDR, *addr) != 4) { + release_semaphore(mfl, 0); + return MFE_CR_ERROR; + } + } + // execute gw command + rc = cntx_exec_cmd(mfl, gw_cmd, msg); CHECK_RC_REL_SEM(mfl, rc); + + //release semaphore + release_semaphore(mfl, 0); + return MFE_OK; +} + int cntx_int_spi_get_status_data(mflash* mfl, u_int8_t op_type, u_int32_t* status, u_int8_t data_num) { int rc; @@ -1121,9 +1213,8 @@ int cntx_int_spi_get_status_data(mflash* mfl, u_int8_t op_type, u_int32_t* statu gw_cmd = MERGE(gw_cmd, op_type, HBO_CMD, HBS_CMD); - rc = cntx_exec_cmd(mfl, gw_cmd, "Read id"); CHECK_RC(rc); - MREAD4(HCR_FLASH_DATA, &flash_data); + rc = cntx_exec_cmd_get(mfl, gw_cmd, &flash_data, 1, NULL, "Read id"); CHECK_RC(rc); // printf("-D- cntx_int_spi_get_status_data: op=%02x status=%08x\n", op_type, flash_data); // Return status reg byte is at offset 3 in word @@ -1140,7 +1231,7 @@ int cntx_st_spi_write_enable(mflash* mfl) { gw_cmd = MERGE(gw_cmd, SFC_WREN, HBO_CMD, HBS_CMD); - rc = cntx_exec_cmd(mfl, gw_cmd, "WREN command"); CHECK_RC(rc); + rc = cntx_exec_cmd_set(mfl, gw_cmd, NULL, 0, NULL, "WREN command"); CHECK_RC(rc); //gw_cmd = MERGE(gw_cmd, 1 , HBO_CS_HOLD, 1); @@ -1219,10 +1310,7 @@ int cntx_spi_write_status_reg(mflash* mfl, u_int32_t status_reg, u_int8_t write_ if (status_is_double) { gw_cmd = MERGE(gw_cmd, 1, HBO_MSIZE, HBS_MSIZE); } - MWRITE4(HCR_FLASH_DATA, status_reg); - - return cntx_exec_cmd(mfl, gw_cmd, "Write-Status-Register"); - + return cntx_exec_cmd_set(mfl, gw_cmd, &status_reg, 1, NULL, "Write-Status-Register"); } @@ -1377,9 +1465,6 @@ int cntx_st_spi_block_read_ex (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_s gw_cmd = MERGE(gw_cmd, SFC_READ , HBO_CMD, HBS_CMD); rc = get_flash_offset(blk_addr, mfl->attr.log2_bank_size, &gw_addr); CHECK_RC(rc); - //printf("-D- cntx_st_spi_block_read_ex: write to gateway\n"); - MWRITE4(HCR_FLASH_ADDR, gw_addr); - } //printf("-D- gw_addr = %#x, gw_cmd = %#x, blk_addr = %#x, mfl->attr.log2_bank_size = %#x\n", gw_addr, gw_cmd, blk_addr, mfl->attr.log2_bank_size); if (!is_last) { @@ -1391,14 +1476,14 @@ int cntx_st_spi_block_read_ex (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_s gw_cmd = MERGE(gw_cmd, 1, HBO_DATA_PHASE, 1); gw_cmd = MERGE(gw_cmd, log2up(blk_size), BO_MSIZE, BS_MSIZE); - rc = cntx_exec_cmd(mfl, gw_cmd, "Read"); CHECK_RC(rc); + rc = cntx_exec_cmd_get(mfl, gw_cmd,(u_int32_t*)data, (blk_size >> 2), &gw_addr, "Read"); CHECK_RC(rc); - //if (mread_by_chunks(mfl->mf, HCR_FLASH_DATA, data, blk_size) != (int)blk_size) { - if (mread4_block(mfl->mf, HCR_FLASH_DATA, (u_int32_t*)data, blk_size) != (int)blk_size) { - return 2; + ////if (mread_by_chunks(mfl->mf, HCR_FLASH_DATA, data, blk_size) != (int)blk_size) { + //if (mread4_block(mfl->mf, HCR_FLASH_DATA, (u_int32_t*)data, blk_size) != (int)blk_size) { + // return 2; //fprintf(stderr, "-E- Cr read (0x%08x) failed: %s(%d)\n", HCR_FLASH_DATA, strerror(errno), (u_int32_t)errno); //exit(2); - } + //} for (i = 0; i < blk_size ; i+= 4) { *(u_int32_t*)(data + i) = __be32_to_cpu(*(u_int32_t*)(data + i)); @@ -1433,15 +1518,12 @@ int cntx_st_spi_block_read_old (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_ gw_cmd = MERGE(gw_cmd, SFC_READ, HBO_CMD, HBS_CMD); gw_addr = blk_addr & ONES32(mfl->attr.log2_bank_size); - MWRITE4(HCR_FLASH_ADDR, gw_addr); - rc = cntx_exec_cmd(mfl, gw_cmd, "Read"); CHECK_RC(rc); + rc = cntx_exec_cmd_get(mfl, gw_cmd, (u_int32_t*)data, (blk_size >> 2), &gw_addr, "Read"); CHECK_RC(rc); // Data: for (offs = 0 ; offs < blk_size ; offs += 4) { - u_int32_t word; - MREAD4(HCR_FLASH_DATA + offs, &word); - *((u_int32_t*)(data + offs))= __cpu_to_be32(word); + *((u_int32_t*)(data + offs))= __cpu_to_be32(*((u_int32_t*)(data + offs))); } return MFE_OK; @@ -1528,8 +1610,6 @@ int cntx_st_spi_block_write_ex (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_s gw_cmd = MERGE(gw_cmd, SFC_PP , HBO_CMD, HBS_CMD); gw_addr = blk_addr & ONES32(mfl->attr.log2_bank_size); //printf("-D- gw_addr = %#x, blk_addr = %#x\n", gw_addr, blk_addr); - - MWRITE4(HCR_FLASH_ADDR, gw_addr); } if (!is_last) { @@ -1549,13 +1629,7 @@ int cntx_st_spi_block_write_ex (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_s //printf("-D- word = %#x, %d\n", word, HBS_CMD); } - if (mwrite4_block(mfl->mf, HCR_FLASH_DATA, buff, blk_size) != (int)blk_size) { - return 2; - // fprintf(stderr, "-E- Cr chunk write (0x%08x) failed: %s(%d)\n", HCR_FLASH_DATA, strerror(errno), (u_int32_t)errno); - // exit(2); - } - - rc = cntx_exec_cmd(mfl, gw_cmd, "PP command"); CHECK_RC(rc); + rc = cntx_exec_cmd_set(mfl, gw_cmd, buff, (blk_size >> 2), &gw_addr, "PP command"); CHECK_RC(rc); // // Wait for end of write in flash (WriteInProgress = 0): @@ -1592,16 +1666,14 @@ int cntx_sst_spi_block_write_ex (mflash* mfl, u_int32_t blk_addr, u_int32_t blk_ gw_cmd = MERGE(gw_cmd, 0x02 , HBO_CMD, HBS_CMD); gw_addr = blk_addr & ONES32(mfl->attr.log2_bank_size); - MWRITE4(HCR_FLASH_ADDR, gw_addr); //gw_cmd = MERGE(gw_cmd, 1 , HBO_CS_HOLD, 1); word = MERGE(word, data[0] , 24 , 8); //printf("-D- data[0] = %#x, gw_addr = %#x, word = %#x, gw_cmd = %#x\n", data[0], gw_addr, word, gw_cmd); - MWRITE4(HCR_FLASH_DATA, word); - rc = cntx_exec_cmd(mfl, gw_cmd, "PB command"); CHECK_RC(rc); + rc = cntx_exec_cmd_set(mfl, gw_cmd, &word, 1, &gw_addr, "PB command"); CHECK_RC(rc); rc = st_spi_wait_wip(mfl, 0, 0, 50000); CHECK_RC(rc); // Full throttle polling - no cpu optimization for this flash @@ -1629,11 +1701,9 @@ int cntx_st_spi_erase_sect(mflash* mfl, u_int32_t addr) { gw_addr = addr & ONES32(mfl->attr.log2_bank_size); - MWRITE4(HCR_FLASH_ADDR, gw_addr); - // printf("-D- cntx_st_spi_erase_sect: addr = %#x, gw_cmd = %#x.\n", addr, gw_cmd); - rc = cntx_exec_cmd(mfl, gw_cmd, "ES"); CHECK_RC(rc); + rc = cntx_exec_cmd_set(mfl, gw_cmd, NULL, 0, &gw_addr, "ES"); CHECK_RC(rc); // Wait for erase completion rc = st_spi_wait_wip(mfl, ERASE_SUBSECTOR_INIT_DELAY, ERASE_SUBSECTOR_RETRY_DELAY, ERASE_SUBSECTOR_RETRIES); CHECK_RC(rc); @@ -1653,18 +1723,27 @@ f_mf_write get_write_blk_func(int command_set) int old_flash_lock(mflash* mfl, int lock_state) { // Obtain GPIO Semaphore - u_int32_t cnt=0; + static u_int32_t cnt=0; u_int32_t word; if (lock_state) { do { if (++cnt > GPIO_SEM_TRIES) { + cnt = 0; //printf("-E- Can not obtain Flash semaphore"); return MFE_SEM_LOCKED; } MREAD4(SEMAP63, &word); + if (word) { + usleep(1); + } } while (word); } else { MWRITE4(SEMAP63, 0); + if (cnt > 1) { + // we are not alone... + usleep(1); + } + cnt = 0; } mfl->is_locked = (lock_state != 0); @@ -1689,7 +1768,6 @@ int cntx_flash_init(mflash* mfl, flash_params_t* flash_params) { } - //TODO: Enable page_read (slightly better perf) //mfl->f_read = cntx_st_spi_page_read; mfl->f_read = read_chunks; @@ -1698,19 +1776,12 @@ int cntx_flash_init(mflash* mfl, flash_params_t* flash_params) { mfl->f_set_bank = empty_set_bank; mfl->f_get_info = cntx_get_flash_info; - - rc = mfl->f_lock(mfl, 1); - if (!mfl->opts[MFO_IGNORE_SEM_LOCK]) { - CHECK_RC(rc); - } else { - mfl->is_locked = 1; - } //if (is_life_fish) { // rc = cntx_init_gpios(mfl); CHECK_RC(rc); //} - mfl->f_spi_status = cntx_st_spi_get_status; + mfl->supp_sr_mod = 1; rc = st_spi_fill_attr(mfl, flash_params); CHECK_RC(rc); @@ -1740,18 +1811,29 @@ int is4_init_gpios(mflash* mfl) { int is4_flash_lock(mflash* mfl, int lock_state) { // Obtain GPIO Semaphore - u_int32_t cnt=0; + static u_int32_t cnt=0; u_int32_t word; + u_int32_t lock_status= 0; if (lock_state) { do { if (++cnt > GPIO_SEM_TRIES) { + cnt = 0; //printf("-E- Can not obtain Flash semaphore"); return MFE_SEM_LOCKED; } MREAD4(HCR_FLASH_CMD , &word); - } while (EXTRACT(word, HBO_LOCK, 1)); + lock_status = EXTRACT(word, HBO_LOCK, 1); + if (lock_status) { + usleep(1); + } + } while (lock_status); } else { MWRITE4(HCR_FLASH_CMD, 0); + if (cnt > 1) { + // we are not alone + usleep(1); + } + cnt = 0; } mfl->is_locked = (lock_state != 0); @@ -1854,6 +1936,10 @@ int check_cache_replacement_gaurd(mflash* mfl, u_int8_t *needs_cache_replacement int mfl_com_lock(mflash* mfl) { int rc; + // if we already locked the semaphore we dont want to re-lock it + if (mfl->is_locked) { + return MFE_OK; + } rc = mfl->f_lock(mfl, 1); if (!mfl->opts[MFO_IGNORE_SEM_LOCK]) { CHECK_RC(rc); @@ -1863,7 +1949,15 @@ int mfl_com_lock(mflash* mfl) return MFE_OK; } -// ConnectX and Shaldag flash interfaces are identical (except lock function) +int release_semaphore(mflash* mfl, int ignore_writer_lock) { + int rc; + if (mfl->is_locked && mfl->f_lock && (!mfl->writer_lock || ignore_writer_lock)) { + rc = mfl->f_lock(mfl, 0); CHECK_RC(rc); + } + return MFE_OK; +} + +// ConnectX and Is4 flash interfaces are identical (except lock function) // Use same functions // // TODO: Unify fith ConnectX inif function @@ -1880,13 +1974,12 @@ int gen4_flash_init_com(mflash* mfl, flash_params_t* flash_params, u_int8_t init mfl->f_get_info = cntx_get_flash_info; - rc = mfl_com_lock(mfl); CHECK_RC(rc); - if (init_cs_support) { // Update the chip_select_support according to the banks number of cs. rc = sx_init_cs_support(mfl); CHECK_RC(rc); } mfl->f_spi_status = cntx_st_spi_get_status; + mfl->supp_sr_mod = 1; rc = st_spi_fill_attr(mfl, flash_params); CHECK_RC(rc); @@ -1999,8 +2092,8 @@ int flash_init_inband_access(mflash* mfl, flash_params_t* flash_params) mfl->f_read_blk = sx_block_read; mfl->f_spi_status = empty_get_status; - // Lock the FW semaphore which synchronizes between multiple processes - rc = mfl_com_lock(mfl); CHECK_RC(rc); + mfl->supp_sr_mod = 0; + // Get the flash attribute rc = st_spi_fill_attr(mfl, flash_params); CHECK_RC(rc); update_max_write_size(mfl); CHECK_RC(rc); @@ -2023,9 +2116,8 @@ int uefi_flash_init(mflash* mfl, flash_params_t* flash_params) mfl->f_read_blk = sx_block_read; mfl->f_spi_status = empty_get_status; + mfl->supp_sr_mod = 0; - // Lock the FW semaphore which synchronizes between multiple processes - rc = mfl_com_lock(mfl); CHECK_RC(rc); // Get the flash attribute rc = st_spi_fill_attr(mfl, flash_params); CHECK_RC(rc); @@ -2076,7 +2168,7 @@ int icmd_init(mflash *mfl) #else int icmd_init(mflash *mfl) { - (void)mfl; + mfl = NULL; return MFE_NOT_IMPLEMENTED; } #endif @@ -2119,6 +2211,9 @@ int mf_read (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* da int mf_write (mflash* mfl, u_int32_t addr, u_int32_t len, u_int8_t* data) { CHECK_OUT_OF_RANGE(addr, len, mfl->attr.size); + // Locking semaphore for the entire existence of the mflash obj for write and erase only. + int rc = mfl_com_lock(mfl); CHECK_RC(rc); + mfl->writer_lock = 1; return mfl->f_write(mfl, addr, len, data); } @@ -2126,6 +2221,9 @@ int mf_erase_sector(mflash* mfl, u_int32_t addr) { if (addr >= mfl->attr.size) { return MFE_OUT_OF_RANGE; } + // Locking semaphore for the entire existence of the mflash obj for write and erase only. + int rc = mfl_com_lock(mfl); CHECK_RC(rc); + mfl->writer_lock = 1; return mfl->f_erase_sect(mfl, addr); } @@ -2214,7 +2312,7 @@ int mf_open_fw(mflash* mfl, flash_params_t* flash_params, int num_of_banks) } CHECK_RC(rc); } else if (mfl->access_type == MFAT_UEFI) { - mfl->opts[MFO_NUM_OF_BANKS] = 1; // We have only one flash in Golan and ConnectX-3 - Need to specify it better! + mfl->opts[MFO_NUM_OF_BANKS] = 1; // We have only one flash in ConnectIB and ConnectX-3 - Need to specify it better! rc = uefi_flash_init(mfl, flash_params); CHECK_RC(rc); } else { return MFE_UNKOWN_ACCESS_TYPE; @@ -2291,14 +2389,6 @@ int mf_open (mflash** pmfl, const char* dev, int num_of_banks, flash_ return MFE_OK; } -int release_semaphore(mflash* mfl) { - int rc; - if (mfl->is_locked && mfl->f_lock) { - rc = mfl->f_lock(mfl, 0); CHECK_RC(rc); - } - return MFE_OK; -} - int mf_close (mflash* mfl) { if (!mfl) { return MFE_BAD_PARAMS; @@ -2311,8 +2401,8 @@ int mf_close (mflash* mfl) { if (mfl->f_set_bank) { set_bank(mfl, 0); } - - release_semaphore(mfl); + // we release if we have writer_lock or not doesnt matter on close ... + release_semaphore(mfl, 1); if (mfl->mf && (mfl)->opts[MFO_CLOSE_MF_ON_EXIT]) { mclose(mfl->mf); @@ -2537,7 +2627,7 @@ int mf_set_dummy_cycles (mflash *mfl, u_int8_t num_of_cycles) return MFE_BAD_PARAMS; } int bank, rc; - if (!mfl->attr.dummy_cycles_support) { + if (!(mfl->attr.dummy_cycles_support && mfl->supp_sr_mod)) { return MFE_NOT_SUPPORTED_OPERATION; } for (bank = 0; bank < mfl->attr.banks_num; bank++) { @@ -2551,7 +2641,7 @@ int mf_get_dummy_cycles(mflash* mfl, u_int8_t *dummy_cycles_p) if (!mfl || !dummy_cycles_p) { return MFE_BAD_PARAMS; } - if (!mfl->attr.dummy_cycles_support) { + if (!(mfl->attr.dummy_cycles_support && mfl->supp_sr_mod)) { return MFE_NOT_SUPPORTED_OPERATION; } return mf_get_param_int(mfl, dummy_cycles_p, SFC_RDNVR, DUMMY_CYCLES_OFFSET_ST, 4, 2, 0); @@ -2566,7 +2656,7 @@ int mf_set_quad_en (mflash *mfl, u_int8_t quad_en) return MFE_BAD_PARAMS; } int bank, rc; - if (!mfl->attr.quad_en_support) { + if (!(mfl->attr.quad_en_support && mfl->supp_sr_mod)) { return MFE_NOT_SUPPORTED_OPERATION; } for (bank = 0; bank < mfl->attr.banks_num; bank++) { @@ -2584,7 +2674,7 @@ int mf_get_quad_en(mflash* mfl, u_int8_t *quad_en_p) if (!mfl || !quad_en_p) { return MFE_BAD_PARAMS; } - if (!mfl->attr.quad_en_support) { + if (!(mfl->attr.quad_en_support && mfl->supp_sr_mod)) { return MFE_NOT_SUPPORTED_OPERATION; } @@ -2832,7 +2922,7 @@ int mf_disable_hw_access(mflash* mfl) { int rc; // We need to release the semaphore because we will not have any access to semaphore after disabling the HW access - rc = release_semaphore(mfl); CHECK_RC(rc); + rc = release_semaphore(mfl, 1); CHECK_RC(rc); return cmdif_hw_access_int(mfl, 0, 1 /* Lock */); } diff --git a/mflash/mflash.h b/mflash/mflash.h index eb3c1b7..c5e269e 100644 --- a/mflash/mflash.h +++ b/mflash/mflash.h @@ -1,5 +1,9 @@ /* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * + * mflash.h - Mellanox Technilogies LTD. Flash access lib heared file + * ================================================================== + * + * Copyright (c) 2005 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -28,9 +32,10 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. + * + * Version: $Id: $ + * */ - - #ifndef MFLASH_H #define MFLASH_H diff --git a/mflash/mflash_access_layer.c b/mflash/mflash_access_layer.c index f28ed0f..10c9a55 100755 --- a/mflash/mflash_access_layer.c +++ b/mflash/mflash_access_layer.c @@ -30,7 +30,6 @@ * SOFTWARE. */ - #include #include #include diff --git a/mflash/mflash_access_layer.h b/mflash/mflash_access_layer.h index 2d43973..bfda06a 100755 --- a/mflash/mflash_access_layer.h +++ b/mflash/mflash_access_layer.h @@ -28,10 +28,14 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. + */ +/* + * mflash_inband.h * + * Created on: Jul 6, 2011 + * Author: mohammad */ - #ifndef MFLASH_ACCESS_LAYER_H_ #define MFLASH_ACCESS_LAYER_H_ diff --git a/mflash/mflash_common_structs.h b/mflash/mflash_common_structs.h index 9b413cf..3d76094 100644 --- a/mflash/mflash_common_structs.h +++ b/mflash/mflash_common_structs.h @@ -1,6 +1,4 @@ /* - * mflash_common_structs.h - Mellanox Technilogies LTD. Flash access lib heared file - * * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two @@ -21,7 +19,7 @@ * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -32,7 +30,6 @@ * SOFTWARE. */ - #ifndef MFLASH_COMMON_STRUCTS_H #define MFLASH_COMMON_STRUCTS_H diff --git a/mflash/mflash_pack_layer.c b/mflash/mflash_pack_layer.c index 2fbdd4f..b213421 100755 --- a/mflash/mflash_pack_layer.c +++ b/mflash/mflash_pack_layer.c @@ -28,9 +28,9 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. + * */ - #include #include #include @@ -109,12 +109,17 @@ int run_mfpa_command(mfile *mf, u_int8_t access_cmd, u_int8_t flash_bank, u_int3 if (access_cmd == REG_ACCESS_METHOD_SET) { mfpa.boot_address = boot_address; } - rc = reg_access_mfpa (mf, access_cmd, &mfpa); CHECK_RC(MError2MfError(rc)); + rc = reg_access_mfpa (mf, access_cmd, &mfpa); + rc = MError2MfError(rc); + if (rc && rc != MFE_REG_ACCESS_BAD_PARAM) { + // if rc is REG_ACCESS_BAD_PARAM it means we dont have that flash bank connected (no need to fail) + return rc; + } if (access_cmd == REG_ACCESS_METHOD_GET && jedec_p != NULL) { *jedec_p = mfpa.jedec_id; // HACK: FW had a bug and returned the same jedec-ID even there was no flash, so when flash doesn't exist jedec will be modified to 0xffffffff - if (flash_bank >= mfpa.flash_num) { + if (flash_bank >= mfpa.flash_num || rc == MFE_REG_ACCESS_BAD_PARAM) { *jedec_p = 0xffffffff; } } diff --git a/mflash/mflash_pack_layer.h b/mflash/mflash_pack_layer.h index eb54b15..bde82c3 100755 --- a/mflash/mflash_pack_layer.h +++ b/mflash/mflash_pack_layer.h @@ -29,7 +29,12 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - +/* + * mflash_inband.h + * + * Created on: Jul 6, 2011 + * Author: mohammad + */ #ifndef MFLASH_COMMON_H_ #define MFLASH_COMMON_H_ @@ -85,11 +90,15 @@ struct mflash { f_mf_erase_sect f_erase_sect; f_mf_reset f_reset; - // Relevant for SPI flash (InfiniHostIIILx, ConnectX) only. + // Relevant for SPI flash (InfiniHostIIILx, ConnectX) only f_st_spi_status f_spi_status; + // when set(1) we support modification of the flash status register + u_int8_t supp_sr_mod; int curr_bank; int is_locked; + // if writer_lock is set, semaphore should be freed only in mf_close()/disable_hw_access() + int writer_lock; flash_attr attr; diff --git a/mflash/mflash_types.h b/mflash/mflash_types.h index 29e9ebd..1bc0ec5 100644 --- a/mflash/mflash_types.h +++ b/mflash/mflash_types.h @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -30,7 +30,6 @@ * SOFTWARE. */ - #ifndef MFLASH_TYPES_H #define MFLASH_TYPES_H diff --git a/mft_utils/Makefile.am b/mft_utils/Makefile.am index 8f276bb..a9d5ab5 100644 --- a/mft_utils/Makefile.am +++ b/mft_utils/Makefile.am @@ -17,9 +17,9 @@ INCLUDES = -I. -I$(USER_DIR)/common AM_CFLAGS = -MD -pipe -Wall -W -Werror -noinst_HEADERS = mft_sig_handler.h +noinst_HEADERS = mft_sig_handler.h errmsg.h noinst_LIBRARIES = libmftutils.a -libmftutils_a_SOURCES = mft_sig_handler.c +libmftutils_a_SOURCES = mft_sig_handler.c errmsg.cpp diff --git a/mft_utils/errmsg.cpp b/mft_utils/errmsg.cpp new file mode 100644 index 0000000..09e8a53 --- /dev/null +++ b/mft_utils/errmsg.cpp @@ -0,0 +1,194 @@ +/* + * - Mellanox Confidential and Proprietary - + * + * Copyright (C) Jan 2013, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". + * + * errmsg.cpp - ErrMsg class implementation. + * + * Created on: May 7, 2014 + * Author: adrianc + * + */ + +#include +#include +#include + +#include "errmsg.h" + +enum { + SUCCESS = 0, + FAILURE = 1 +}; + +ErrMsg::ErrMsg() { + _errMap[SUCCESS] = "SUCCESS"; + _errMap[FAILURE] = "FAILURE"; + _err = NULL; + _formatErr = NULL; + _lastErrCode = SUCCESS; +} + +ErrMsg::ErrMsg(std::map& errCodeMap) { + _errMap = errCodeMap; + _err = NULL; + _formatErr = NULL; + _lastErrCode = SUCCESS; +} + +const char* ErrMsg::getFormatErr(const char *prefix, ...) { + va_list args; + char* prevFormatErr = _formatErr; + va_start(args, prefix); + char* preStr = vprint(prefix, args); + int formatErrSz = strlen(_err) + strlen(preStr) + 10; + _formatErr = new char[formatErrSz]; + snprintf(_formatErr, formatErrSz, "-E- %s. %s", preStr, _err); + va_end(args); + delete[] prevFormatErr; + delete[] preStr; + return _formatErr; +} + +const char* ErrMsg::err2Str(int errCode) const { + std::map::const_iterator it; + if ( (it=_errMap.find(errCode)) == _errMap.end()) { + return "Unknown Error Code"; + } + return it->second.c_str(); +} + +char* ErrMsg::vprint(const char *format, va_list args) { + const int INIT_VAL = 1024; + int max_str, max_buf = INIT_VAL; + char *out_buf; + + while (1) { + out_buf = new char[max_buf]; + max_str = max_buf - 1; + + if (vsnprintf(out_buf, max_str, format, args) < max_str) { + return out_buf; + } + delete [] out_buf; + max_buf *= 2; + } +} + +int ErrMsg::errmsg(const char *format, ...) { + va_list args; + + char* prev_err = _err; + + va_start(args, format); + _err = vprint(format, args); + va_end(args); + + delete[] prev_err; + _lastErrCode = FAILURE; + return FAILURE; +} + +int ErrMsg::errmsg(int errCode, const char *format, ...) { + va_list args; + char* prev_err = _err; + + va_start(args, format); + _err = vprint(format, args); + va_end(args); + + delete[] prev_err; + _lastErrCode = errCode; + return errCode; +} + +int ErrMsg::errmsg(int errCode) { + char* prevErr = _err; + int errSz = strlen(err2Str(errCode)) + 1; + char* newError = new char[errSz]; + snprintf(newError, errSz, "%s", err2Str(errCode)); + _err = newError; + delete[] prevErr; + _lastErrCode = errCode; + return errCode; + +} +void ErrMsg::errmsgConcatCom(const char* format, va_list args, const char* suffix) { + char* prevErr = _err; + char* currError = vprint(format, args); + int errSz = strlen(currError) + strlen(suffix) + 10; + char* newError = new char[errSz]; + if (strlen(currError) == 0) { + snprintf(newError,errSz, "%s", suffix); + } else { + if (strlen(suffix) == 0) { + snprintf(newError,errSz, "%s", currError); + } else { + snprintf(newError,errSz, "%s. %s", currError, suffix); + } + } + _err = newError; + + delete[] prevErr; + delete[] currError; +} + +int ErrMsg::errmsgConcatMsg(int errCode, const ErrMsg& errMsgObj, const char *format, ...) { + va_list args; + va_start(args, format); + errmsgConcatCom(format, args, errMsgObj.err()); + va_end(args); + _lastErrCode = errCode; + return errCode; +} + +int ErrMsg::errmsgConcatMsg(const ErrMsg& errMsgObj, const char *format, ...) { + va_list args; + va_start(args, format); + errmsgConcatCom(format, args, errMsgObj.err()); + va_end(args); + _lastErrCode = FAILURE; + return FAILURE; +} + +int ErrMsg::errmsgConcatMsg(int errCode, const ErrMsg& errMsgObj) { + return errmsg(errCode, "%s", errMsgObj.err()); +} + +int ErrMsg::errmsgConcatMsg(const ErrMsg& errMsgObj) { + return errmsg("%s", errMsgObj.err()); +} + +int ErrMsg::errmsgConcatErrCd(int errCode, const ErrMsg& errMsgObj, const char *format, ...) { + va_list args; + va_start(args, format); + errMsgObj.getLastErrCode(); + errmsgConcatCom(format, args, errMsgObj.err2Str(errMsgObj.getLastErrCode())); + va_end(args); + _lastErrCode = errCode; + return errCode; +} + +int ErrMsg::errmsgConcatErrCd(int errCode, const ErrMsg& errMsgObj) { + return errmsg(errCode, "%s", errMsgObj.err2Str(errMsgObj.getLastErrCode())); +} + +int ErrMsg::errmsgConcatErrCd(const ErrMsg& errMsgObj) { + return errmsg("%s", errMsgObj.err2Str(errMsgObj.getLastErrCode())); +} + +void ErrMsg::err_clear(){ + delete [] _err; + delete [] _formatErr; + _err = NULL; + _formatErr = NULL; +} + + diff --git a/mft_utils/errmsg.h b/mft_utils/errmsg.h new file mode 100644 index 0000000..db1c26b --- /dev/null +++ b/mft_utils/errmsg.h @@ -0,0 +1,106 @@ +/* + * - Mellanox Confidential and Proprietary - + * + * Copyright (C) Jan 2013, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". + * + * errmsg.h - base class that provides the returning of error messages for classes that inherit it. + * + * Created on: May 7, 2014 + * Author: adrianc + * + */ + +#ifndef ERRMSG_H_ +#define ERRMSG_H_ + +#include +#include + +/** + * ErrMsg Class Provides API for returning both error codes and error messages to the user app. + */ + +class ErrMsg { +public: + ErrMsg(); + ErrMsg(std::map& errCodeMap); + + ~ErrMsg() { err_clear();} + + const char* err() const { return _err;} + void updateErrCodes(std::map& errCodeMap) {_errMap = errCodeMap; return;} + + const char* getFormatErr(const char *prefix, ...) +#ifdef __GNUC__ + __attribute__ ((format (printf, 2, 3))) +#endif + ; + + void err_clear(); + + int getLastErrCode() const {return _lastErrCode;} + + const char* err2Str(int errCode) const; + +protected: + char* vprint(const char *format, va_list args); + + int errmsg(const char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format (printf, 2, 3))) +#endif + ; + + int errmsg(int errCode, const char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format (printf, 3, 4))) +#endif + ; + + int errmsg(int errCode); + + + int errmsgConcatMsg(int errCode, const ErrMsg& errMsgObj, const char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format (printf, 4, 5))) +#endif + ; + + int errmsgConcatMsg(const ErrMsg& errMsgObj, const char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format (printf, 3, 4))) +#endif + ; + + int errmsgConcatMsg(int errCode, const ErrMsg& errMsgObj); + + int errmsgConcatMsg(const ErrMsg& errMsgObj); + + + int errmsgConcatErrCd(int errCode, const ErrMsg& errMsgObj, const char *format, ...) +#ifdef __GNUC__ + __attribute__ ((format (printf, 4, 5))) +#endif + ; + + int errmsgConcatErrCd(int errCode, const ErrMsg& errMsgObj); + + int errmsgConcatErrCd(const ErrMsg& errMsgObj); + +private: + void errmsgConcatCom(const char* format, va_list args, const char* suffix); + + std::map _errMap; + char* _err; + char* _formatErr; + int _lastErrCode; +}; + +#endif /* ERRMSG_H_ */ diff --git a/mlxconfig/log b/mlxconfig/log deleted file mode 100644 index 268ef4a..0000000 --- a/mlxconfig/log +++ /dev/null @@ -1,13 +0,0 @@ - -Device #1: ----------- - -Device type: ConnectX3 -PCI device: /sys/bus/pci/devices/0000:03:00.0/config - - Configuration Value - ------------- ----- - SRIOV_EN 1 - NUM_OF_VFS 16 - WOL_MAGIC_EN_P1 1 - WOL_MAGIC_EN_P2 diff --git a/mlxconfig/mlxcfg_lib.cpp b/mlxconfig/mlxcfg_lib.cpp index 88adade..ba1220c 100644 --- a/mlxconfig/mlxcfg_lib.cpp +++ b/mlxconfig/mlxcfg_lib.cpp @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -29,48 +29,116 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - +/* + * mlxcfg_lib.cpp + * + * Created on: Feb 17, 2014 + * Author: adrianc + */ #include #include #include #include -#include +#include #include #include #include "mlxcfg_lib.h" +using namespace std; +/* + * Mask and offsets for working with the capability vector + * retrieved via query_dev_cap command. + */ #define SRIOV_MASK 0x1 #define WOL_P1_MASK 0x2 #define WOL_P2_MASK 0x4 #define VPI_P1_MASK 0x8 #define VPI_P2_MASK 0x10 +#define BAR_SZ_MASK 0x20 #define TOOL_CAP_BITS_ADDR 0xc0 #define MAX_VFS_ADDR 0x38 +#define MAX_BAR_SZ_ADDR 0xc8 #define DEFAULT_BAR_SZ_ADDR 0x48 -// for debug: +/* + * Debug print MACRO of the MNV Tlvs: + */ #ifdef _ENABLE_DEBUG_ # define DEBUG_PRINT_SEND(data_struct, struct_name)\ printf("-I- Data Sent:\n");\ - tools_##struct_name##_print(data_struct, stdout, 1) + tools_open_##struct_name##_print(data_struct, stdout, 1) # define DEBUG_PRINT_RECIEVE(data_struct, struct_name)\ printf("-I- Data Recieved:\n");\ - tools_##struct_name##_print(data_struct, stdout, 1) + tools_open_##struct_name##_print(data_struct, stdout, 1) #else # define DEBUG_PRINT_SEND(data_struct, struct_name) # define DEBUG_PRINT_RECIEVE(data_struct, struct_name) #endif +/* + * Enum for handling error messages + */ -using namespace std; +typedef enum { + MCE_SUCCESS = 0, + MCE_FAILED, + MCE_TLV_NOT_FOUND, + MCE_TLV_NOT_SUPP, + MCE_NVCFG_NOT_SUPP, + MCE_TOOLS_HCR_NOT_SUPP, + MCE_DRIVER_DOWN, + MCE_UNSUPPORTED_DEVICE, + MCE_UNSUPPORTED_CFG, + MCE_BAD_PARAMS, + MCE_BAD_PARAM_VAL, + MCE_DEV_BUSY, + MCE_UNKNOWN_TLV, + MCE_REG_NOT_SUPP, + MCE_METHOD_NOT_SUPP, + MCE_RES_NOT_AVAIL, + MCE_CONF_CORRUPT, + MCE_TLV_LEN_TOO_SMALL, + MCE_BAD_CONFIG, + MCE_ERASE_EXEEDED, + MCE_BAD_OP, + MCE_BAD_STATUS, + MCE_CR_ERROR, + MCE_NOT_IMPLEMENTED, + MCE_INCOMPLETE_PARAMS, + MCE_OPEN_DEVICE, + MCE_PCICONF, + MCE_UNKNOWN_ERR +}McStatus; -static McStatus translateRc(MError rc); -static McStatus mnvaCom(mfile* mf, u_int8_t* buff, u_int16_t len, u_int16_t type, reg_access_method_t method, u_int16_t typeMod=0); +/* + * Forward Declarations: + */ + +static MError mnvaCom(mfile* mf, u_int8_t* buff, u_int16_t len, u_int16_t type, reg_access_method_t method, u_int16_t typeMod=0); + +/* + * MlxCfgOps::CfgParams implementation + */ + +MlxCfgOps::CfgParams::CfgParams(mlxCfgType t, u_int32_t tlvT) { + // init the ErrMsg Class + std::map errmap; + errmap[MCE_SUCCESS] = "Success"; + errmap[MCE_FAILED] = "General Failure"; + errmap[MCE_BAD_PARAMS] = "Bad parameters"; + errmap[MCE_BAD_PARAM_VAL] = "Bad parameter value"; + errmap[MCE_BAD_STATUS] = "General Failure"; + + updateErrCodes(errmap); + type = t; + tlvType = tlvT; + _updated = false; +} /* * MlxCfgOps::SriovParams implementation @@ -96,29 +164,33 @@ u_int32_t MlxCfgOps::SriovParams::getParam(mlxCfgParam paramType) } -McStatus MlxCfgOps::SriovParams::getFromDev(mfile* mf) +int MlxCfgOps::SriovParams::getFromDev(mfile* mf) { if (_updated) { return MCE_SUCCESS; } - McStatus rc; + MError rc; // prep tlv - u_int8_t buff[tools_sriov_size()]; - struct tools_sriov sriovTlv; - memset(buff, 0, tools_sriov_size()); - memset(&sriovTlv, 0, sizeof(struct tools_sriov)); + u_int8_t buff[tools_open_sriov_size()]; + struct tools_open_sriov sriovTlv; + memset(buff, 0, tools_open_sriov_size()); + memset(&sriovTlv, 0, sizeof(struct tools_open_sriov)); // pack it - tools_sriov_pack(&sriovTlv, buff); + tools_open_sriov_pack(&sriovTlv, buff); // send it DEBUG_PRINT_SEND(&sriovTlv, sriov); - rc = mnvaCom(mf, buff, tools_sriov_size(), tlvType, REG_ACCESS_METHOD_GET, 0); + rc = mnvaCom(mf, buff, tools_open_sriov_size(), tlvType, REG_ACCESS_METHOD_GET, 0); // check rc DEBUG_PRINT_RECIEVE(&sriovTlv, sriov); - if (rc) { - return rc; + if (rc) {// when attempting to get a nv_cfg tlv from device ME_REG_ACCESS_RES_NOT_AVLBL means - no valid + // tlv found. i.e default configuration are on. + if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { + return MCE_SUCCESS; + } + return errmsg(MCE_BAD_STATUS, "Failed to get SRIOV configuration: %s", m_err2str(rc)); } // unpack and update - tools_sriov_unpack(&sriovTlv, buff); + tools_open_sriov_unpack(&sriovTlv, buff); _sriovEn = _sriovEn == MLXCFG_UNKNOWN ? sriovTlv.sriov_en : _sriovEn ; _numOfVfs = _numOfVfs == MLXCFG_UNKNOWN ? sriovTlv.total_vfs : _numOfVfs ; _updated = true; @@ -126,48 +198,46 @@ McStatus MlxCfgOps::SriovParams::getFromDev(mfile* mf) return MCE_SUCCESS; } -McStatus MlxCfgOps::SriovParams::setOnDev(mfile* mf) +int MlxCfgOps::SriovParams::setOnDev(mfile* mf, bool ignoreCheck) { - McStatus rc; + int rc; if (_sriovEn == MLXCFG_UNKNOWN || _numOfVfs == MLXCFG_UNKNOWN) { rc = getFromDev(mf); - if (rc) { - if (rc == MCE_RES_NOT_AVAIL) { - return MCE_INCOMPLETE_PARAMS; - } - return rc; + if (rc || _sriovEn == MLXCFG_UNKNOWN || _numOfVfs == MLXCFG_UNKNOWN) { // go here if we fail to get the tlv or it doesnt exsist (one of the params == MLXCFG_UNKNOWN) + return errmsg("%s please specify all the parameters for SRIOV.", err() ? err(): ""); } } - if (!isLegal(mf)) { - return MCE_BAD_PARAM_VAL; + if (!ignoreCheck && !isLegal(mf)) { + return MCE_BAD_PARAMS; } // prep tlv - u_int8_t buff[tools_sriov_size()]; - struct tools_sriov sriovTlv; + MError ret; + u_int8_t buff[tools_open_sriov_size()]; + struct tools_open_sriov sriovTlv; - memset(buff, 0, tools_sriov_size()); - memset(&sriovTlv, 0, sizeof(struct tools_sriov)); + memset(buff, 0, tools_open_sriov_size()); + memset(&sriovTlv, 0, sizeof(struct tools_open_sriov)); sriovTlv.sriov_en = _sriovEn; sriovTlv.total_vfs = _numOfVfs; // pack it - tools_sriov_pack(&sriovTlv, buff); + tools_open_sriov_pack(&sriovTlv, buff); // send it - rc = mnvaCom(mf, buff, tools_sriov_size(), tlvType, REG_ACCESS_METHOD_SET, 0); + ret = mnvaCom(mf, buff, tools_open_sriov_size(), tlvType, REG_ACCESS_METHOD_SET, 0); // check rc - if (rc) { - return rc; + if (ret) { + return errmsg("failed to set SRIOV params: %s",m_err2str(ret)); } _updated = false; return MCE_SUCCESS; } -McStatus MlxCfgOps::SriovParams::updateMaxVfs(mfile* mf) +int MlxCfgOps::SriovParams::updateMaxVfs(mfile* mf) { u_int64_t data = 0; int rc = tools_cmdif_query_dev_cap(mf, MAX_VFS_ADDR, &data); if (rc) { - return translateRc((MError)rc); + return errmsg("failed to query device capabilities: %s", m_err2str((MError)rc)); } _maxVfs = (u_int32_t)(data & 0xff); if (_maxVfs == 0) { // defined in CX PRM , if max_func_idx=0 then all functions(128) are operational @@ -184,12 +254,24 @@ bool MlxCfgOps::SriovParams::isLegal(mfile* mf) u_int64_t data = 0; int rc = tools_cmdif_query_dev_cap(mf, DEFAULT_BAR_SZ_ADDR, &data); if (rc) { - return translateRc((MError)rc); + errmsg("failed to query device capabilities: %s",m_err2str((MError)rc)); + return false; } data = EXTRACT64(data,16,6) + 1; // this is the default log2 bar size , we require numOfVfs*(2^log_uar_bar) <= 512 or else the node might not boot + double VfsMem = _numOfVfs*(std::pow((double)2, (int)data)); //TODO: when bar_size tlv will be supported, we need to change this to the current bar_size (and also check with the current tlv bar size) - //printf("-D- num_of_vfs*2^(bar_sz+1) = %d*2^%ld = %d\n", _numOfVfs, data, (int)(_numOfVfs*std::pow((double)2, (int)data))); - return ((_sriovEn == 0 || _sriovEn == 1 ) && (_numOfVfs <= _maxVfs) && (_numOfVfs*(std::pow((double)2, (int)data)) <= 512)); + //printf("-D- num_of_vfs*2^(bar_sz+1) = %d*2^%ld = %d\n", _numOfVfs, data, (int)(_numOfVfs*(std::pow((double)2, (int)data)))); + //printf("-D- maxVfs(default set by fw) : %d\n", _maxVfs); + if (_sriovEn != 0 && _sriovEn != 1) { + errmsg("illegal SRIOV_EN parameters value. (should be 0 or 1)"); + return false; + } + if ((_numOfVfs > _maxVfs) || (VfsMem > 512)){ + unsigned int maxAlowedVfs =static_cast(512/(std::pow((double)2, (int)data))); + errmsg("illegal SRIOV parameter value. Maximal number of VFs: %d", maxAlowedVfs < _maxVfs ? maxAlowedVfs : _maxVfs); + return false; + } + return true; } /* @@ -211,64 +293,64 @@ u_int32_t MlxCfgOps::WolParams::getParam(mlxCfgParam paramType) return MLXCFG_UNKNOWN; } -McStatus MlxCfgOps::WolParams::getFromDev(mfile* mf) +int MlxCfgOps::WolParams::getFromDev(mfile* mf) { if (_updated) { return MCE_SUCCESS; } - McStatus rc; + MError rc; // prep tlv - u_int8_t buff[tools_wol_size()]; - struct tools_wol wolTlv; - memset(buff, 0, tools_wol_size()); - memset(&wolTlv, 0, sizeof(struct tools_wol)); + u_int8_t buff[tools_open_wol_size()]; + struct tools_open_wol wolTlv; + memset(buff, 0, tools_open_wol_size()); + memset(&wolTlv, 0, sizeof(struct tools_open_wol)); // pack it - tools_wol_pack(&wolTlv, buff); + tools_open_wol_pack(&wolTlv, buff); // send it - rc = mnvaCom(mf, buff, tools_wol_size(), tlvType, REG_ACCESS_METHOD_GET, _port); + rc = mnvaCom(mf, buff, tools_open_wol_size(), tlvType, REG_ACCESS_METHOD_GET, _port); // check rc if (rc) { - return rc; + if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { + return MCE_SUCCESS; + } + return errmsg("Failed to get WOL port%d configuration: %s", _port, m_err2str(rc)); } // unpack and update - tools_wol_unpack(&wolTlv, buff); + tools_open_wol_unpack(&wolTlv, buff); _wolMagicEn = _wolMagicEn == MLXCFG_UNKNOWN ? wolTlv.en_wol_magic : _wolMagicEn ; _updated = true; return MCE_SUCCESS; } -McStatus MlxCfgOps::WolParams::setOnDev(mfile* mf) +int MlxCfgOps::WolParams::setOnDev(mfile* mf, bool ignoreCheck) { - McStatus rc; + int rc; if (_wolMagicEn == MLXCFG_UNKNOWN) { rc = getFromDev(mf); - if (rc) { - if (rc == MCE_RES_NOT_AVAIL) { - return MCE_INCOMPLETE_PARAMS; - } - return rc; + if (rc || _wolMagicEn == MLXCFG_UNKNOWN) { + return errmsg("%s please specify all the parameters for WOL.", err()? err() : ""); } } - if (!isLegal()) { - return MCE_BAD_PARAM_VAL; + if (!ignoreCheck && !isLegal()) { + return MCE_BAD_PARAMS; } - // prep tlv - u_int8_t buff[tools_wol_size()]; - struct tools_wol wolTlv; + MError ret; + u_int8_t buff[tools_open_wol_size()]; + struct tools_open_wol wolTlv; - memset(buff, 0, tools_wol_size()); - memset(&wolTlv, 0, sizeof(struct tools_wol)); + memset(buff, 0, tools_open_wol_size()); + memset(&wolTlv, 0, sizeof(struct tools_open_wol)); wolTlv.en_wol_magic= _wolMagicEn; // pack it - tools_wol_pack(&wolTlv, buff); + tools_open_wol_pack(&wolTlv, buff); // send it - rc = mnvaCom(mf, buff, tools_wol_size(), tlvType, REG_ACCESS_METHOD_SET, _port); + ret = mnvaCom(mf, buff, tools_open_wol_size(), tlvType, REG_ACCESS_METHOD_SET, _port); // check rc - if (rc) { - return rc; + if (ret) { + return errmsg("failed to set WOL params for port%d: %s", _port, m_err2str(ret)); } _updated = false; return MCE_SUCCESS; @@ -277,13 +359,124 @@ McStatus MlxCfgOps::WolParams::setOnDev(mfile* mf) bool MlxCfgOps::WolParams::isLegal(mfile* mf) { (void)mf; - return (_wolMagicEn == 0 || _wolMagicEn == 1 ); + if (_wolMagicEn == 0 || _wolMagicEn == 1 ) { + return true; + } + errmsg("illegal WOL parameter value. can be either 0 or 1."); + return false; +} + +/* + * BarSzParams Implementation + */ + +void MlxCfgOps::BarSzParams::setParam(mlxCfgParam paramType, u_int32_t val) +{ + if ((paramType == Mcp_Log_Bar_Size) ) { + _logBarSz = val; + } +} + +u_int32_t MlxCfgOps::BarSzParams::getParam(mlxCfgParam paramType) +{ + if (paramType == Mcp_Log_Bar_Size) { + return _logBarSz; + } + return MLXCFG_UNKNOWN; +} + +int MlxCfgOps::BarSzParams::getFromDev(mfile* mf) +{ + if (_updated) { + return MCE_SUCCESS; + } + MError rc; + // prep tlv + u_int8_t buff[tools_open_bar_size_size()]; + struct tools_open_bar_size barSzTlv; + memset(buff, 0, tools_open_bar_size_size()); + memset(&barSzTlv, 0, sizeof(struct tools_open_bar_size)); + // pack it + tools_open_bar_size_pack(&barSzTlv, buff); + // send it + rc = mnvaCom(mf, buff, tools_open_bar_size_size(), tlvType, REG_ACCESS_METHOD_GET, 0); + // check rc + if (rc) { + if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { + return MCE_SUCCESS; + } + return errmsg("Failed to get BAR size configuration: %s", m_err2str(rc)); + } + // unpack and update + tools_open_bar_size_unpack(&barSzTlv, buff); + _logBarSz = _logBarSz == MLXCFG_UNKNOWN ? barSzTlv.log_uar_bar_size : _logBarSz ; + _updated = true; + + return MCE_SUCCESS; +} + +int MlxCfgOps::BarSzParams::setOnDev(mfile* mf, bool ignoreCheck) +{ + int rc; + if (_logBarSz == MLXCFG_UNKNOWN) { + rc = getFromDev(mf); + if (rc || _logBarSz == MLXCFG_UNKNOWN) { + return errmsg("%s please specify all the parameters for BAR size.", err() ? err() : ""); + } + } + if (!ignoreCheck && !isLegal()) { + return MCE_BAD_PARAMS; + } + + // prep tlv + MError ret; + u_int8_t buff[tools_open_bar_size_size()]; + struct tools_open_bar_size barSzTlv; + + memset(buff, 0, tools_open_bar_size_size()); + memset(&barSzTlv, 0, sizeof(struct tools_open_bar_size)); + + barSzTlv.log_uar_bar_size= _logBarSz; + // pack it + tools_open_bar_size_pack(&barSzTlv, buff); + // send it + ret = mnvaCom(mf, buff, tools_open_bar_size_size(), tlvType, REG_ACCESS_METHOD_SET, 0); + // check rc + if (ret) { + return errmsg("failed to set BAR size params: %s",m_err2str(ret)); + } + _updated = false; + return MCE_SUCCESS; +} + +int MlxCfgOps::BarSzParams::updateBarSzInfo(mfile* mf) +{ + u_int64_t data = 0; + int rc = tools_cmdif_query_dev_cap(mf, MAX_BAR_SZ_ADDR, &data); + if (rc) { + return errmsg("Failed to query device capabilities: %s", m_err2str((MError)rc)); + } + _maxLogBarSz = (u_int32_t)(data & 0xffffffff); + _currLogBarSz = (u_int32_t)(data >> 32); + //printf("-D- vec 0x%lx max %d curr %d\n", data, maxBarSz, currBarSz); + return MCE_SUCCESS; +} + +bool MlxCfgOps::BarSzParams::isLegal(mfile* mf) +{ + (void)mf; + if (_logBarSz < _maxLogBarSz ) { + return true; + } + errmsg("given bar size is too large, max allowed log2 bar size: 0x%x", _maxLogBarSz); + return false; } /* * VpiParams Implementation */ + void MlxCfgOps::VpiParams::setParam(mlxCfgParam paramType, u_int32_t val) { if ((paramType == Mcp_Link_Type_P1 && _port == 1 ) || (paramType == Mcp_Link_Type_P2 && _port == 2) ) { @@ -299,64 +492,65 @@ u_int32_t MlxCfgOps::VpiParams::getParam(mlxCfgParam paramType) return MLXCFG_UNKNOWN; } -McStatus MlxCfgOps::VpiParams::getFromDev(mfile* mf) +int MlxCfgOps::VpiParams::getFromDev(mfile* mf) { if (_updated) { return MCE_SUCCESS; } - McStatus rc; + MError rc; // prep tlv - u_int8_t buff[tools_vpi_settings_size()]; - struct tools_vpi_settings vpiTlv; - memset(buff, 0, tools_vpi_settings_size()); - memset(&vpiTlv, 0, sizeof(struct tools_vpi_settings)); + u_int8_t buff[tools_open_vpi_settings_size()]; + struct tools_open_vpi_settings vpiTlv; + memset(buff, 0, tools_open_vpi_settings_size()); + memset(&vpiTlv, 0, sizeof(struct tools_open_vpi_settings)); // pack it - tools_vpi_settings_pack(&vpiTlv, buff); + tools_open_vpi_settings_pack(&vpiTlv, buff); // send it - rc = mnvaCom(mf, buff, tools_vpi_settings_size(), tlvType, REG_ACCESS_METHOD_GET, _port); + rc = mnvaCom(mf, buff, tools_open_vpi_settings_size(), tlvType, REG_ACCESS_METHOD_GET, _port); // check rc if (rc) { - return rc; + if (rc == ME_REG_ACCESS_RES_NOT_AVLBL) { + return MCE_SUCCESS; + } + return errmsg("Failed to get VPI port%d configuration: %s", _port, m_err2str(rc)); } // unpack and update - tools_vpi_settings_unpack(&vpiTlv, buff); + tools_open_vpi_settings_unpack(&vpiTlv, buff); _linkType = _linkType == MLXCFG_UNKNOWN ? vpiTlv.network_link_type : _linkType ; _updated = true; return MCE_SUCCESS; } -McStatus MlxCfgOps::VpiParams::setOnDev(mfile* mf) +int MlxCfgOps::VpiParams::setOnDev(mfile* mf, bool ignoreCheck) { - McStatus rc; + int rc; if (_linkType == MLXCFG_UNKNOWN) { rc = getFromDev(mf); - if (rc) { - if (rc == MCE_RES_NOT_AVAIL) { - return MCE_INCOMPLETE_PARAMS; - } - return rc; + if (rc || _linkType == MLXCFG_UNKNOWN) { + return errmsg("%s please specify all the parameters for VPI settings.", err() ? err() : ""); } } - if (!isLegal()) { - return MCE_BAD_PARAM_VAL; + if (!ignoreCheck && !isLegal()) { + return MCE_BAD_PARAMS; } // prep tlv - u_int8_t buff[tools_vpi_settings_size()]; - struct tools_vpi_settings vpiTlv; + MError ret; + u_int8_t buff[tools_open_vpi_settings_size()]; + struct tools_open_vpi_settings vpiTlv; - memset(buff, 0, tools_vpi_settings_size()); - memset(&vpiTlv, 0, sizeof(struct tools_vpi_settings)); + memset(buff, 0, tools_open_vpi_settings_size()); + memset(&vpiTlv, 0, sizeof(struct tools_open_vpi_settings)); vpiTlv.network_link_type= _linkType; // pack it - tools_vpi_settings_pack(&vpiTlv, buff); + tools_open_vpi_settings_pack(&vpiTlv, buff); // send it - rc = mnvaCom(mf, buff, tools_vpi_settings_size(), tlvType, REG_ACCESS_METHOD_SET, _port); + ret = mnvaCom(mf, buff, tools_open_vpi_settings_size(), tlvType, REG_ACCESS_METHOD_SET, _port); // check rc - if (rc) { - return rc; + if (ret) { + return errmsg("failed to set VPI port%d params: %s", _port, m_err2str(ret)); } _updated = false; return MCE_SUCCESS; @@ -365,7 +559,11 @@ McStatus MlxCfgOps::VpiParams::setOnDev(mfile* mf) bool MlxCfgOps::VpiParams::isLegal(mfile* mf) { (void)mf; - return (_linkType == 1 || _linkType == 2 || _linkType == 3 ); + if (_linkType == 1 || _linkType == 2 || _linkType == 3 ) { + return true; + } + errmsg("illegal VPI link type (should be 1|2|3)."); + return false; } /* @@ -374,6 +572,38 @@ bool MlxCfgOps::VpiParams::isLegal(mfile* mf) MlxCfgOps::MlxCfgOps() { + // init the ErrMsg Class + std::map errmap; + errmap[MCE_SUCCESS] = "Success"; + errmap[MCE_FAILED] = "General Failure"; + errmap[MCE_TLV_NOT_FOUND] = "Configuration not found"; + errmap[MCE_TLV_NOT_SUPP] = "Configuration TLV not supported"; + errmap[MCE_NVCFG_NOT_SUPP] = "Fw does not support NV access registers"; + errmap[MCE_TOOLS_HCR_NOT_SUPP] = "Unsupported FW (version 2.31.5000 or above required for CX3/PRO)"; + errmap[MCE_DRIVER_DOWN] = "Cannot perform operation, Driver might be down."; + errmap[MCE_UNSUPPORTED_DEVICE] = "Device not supported."; + errmap[MCE_UNSUPPORTED_CFG] = "Fw does not support configuration"; + errmap[MCE_BAD_PARAMS] = "Bad parameters"; + errmap[MCE_BAD_PARAM_VAL] = "Bad parameter value"; + errmap[MCE_DEV_BUSY] = "Device busy"; + errmap[MCE_UNKNOWN_TLV] = "Unknown TLV"; + errmap[MCE_REG_NOT_SUPP] = "Fw does not support NV access registers"; + errmap[MCE_METHOD_NOT_SUPP] = "Method not supported"; + errmap[MCE_RES_NOT_AVAIL] = "Resource not available"; + errmap[MCE_CONF_CORRUPT] = "Configuration is corrupted"; + errmap[MCE_TLV_LEN_TOO_SMALL] = "TLV length too small"; + errmap[MCE_BAD_CONFIG] = "Bad Configuration"; + errmap[MCE_ERASE_EXEEDED] = "Erase exceeded flash spec"; + errmap[MCE_BAD_OP] = "Bad Operation"; + errmap[MCE_BAD_STATUS] = "General Failure"; + errmap[MCE_CR_ERROR] = "CR-Error"; + errmap[MCE_NOT_IMPLEMENTED] = "Not implemented"; + errmap[MCE_INCOMPLETE_PARAMS] = "Failed to get missing configuration from device, please specify all the needed parameters"; + errmap[MCE_OPEN_DEVICE] = "Failed to open device"; + errmap[MCE_PCICONF] = "Access to device should be through configuration cycles only."; + errmap[MCE_UNKNOWN_ERR] = "General Error"; + + updateErrCodes(errmap); _mf = NULL; _suppVec = 0; _cfgList.resize(Mct_Last); @@ -382,6 +612,7 @@ MlxCfgOps::MlxCfgOps() _cfgList[Mct_Wol_P2] = new WolParams(2); _cfgList[Mct_Vpi_P1] = new VpiParams(1); _cfgList[Mct_Vpi_P2] = new VpiParams(2); + _cfgList[Mct_Bar_Size] = new BarSzParams(); return; } @@ -400,7 +631,7 @@ MlxCfgOps::~MlxCfgOps() #define CX3_HW_ID 501 #define CX3_PRO_HW_ID 503 -McStatus MlxCfgOps::supportsToolsHCR() +int MlxCfgOps::supportsToolsHCR() { // we also update the support vector u_int32_t devId; @@ -414,11 +645,11 @@ McStatus MlxCfgOps::supportsToolsHCR() rc = mget_mdevs_type(_mf, &type); #ifndef MST_UL if (type != MST_PCICONF) { - return MCE_PCICONF; + return errmsg(MCE_PCICONF); } #else if (type != MTCR_ACCESS_CONFIG) { - return MCE_PCICONF; + return errmsg(MCE_PCICONF); } #endif // check if we support tools_hcr @@ -427,24 +658,24 @@ McStatus MlxCfgOps::supportsToolsHCR() case ME_OK: return MCE_SUCCESS; case ME_CMDIF_BAD_SYS: - return MCE_DRIVER_DOWN; + return errmsg(MCE_DRIVER_DOWN); case ME_CMDIF_BAD_OP: case ME_CMDIF_TOUT: case ME_CMDIF_BUSY: - return MCE_TOOLS_HCR_NOT_SUPP; + return errmsg(MCE_TOOLS_HCR_NOT_SUPP); default: - return MCE_UNKNOWN_ERR; + return errmsg("general Error, %s", m_err2str((MError)rc)); } break; default: break; } - return MCE_UNSUPPORTED_DEVICE; + return errmsg(MCE_UNSUPPORTED_DEVICE); } -McStatus MlxCfgOps::openComChk() +int MlxCfgOps::openComChk() { - McStatus rc; + bool rc; // check if we support Tools HCR rc = supportsToolsHCR(); if (rc) { @@ -454,7 +685,15 @@ McStatus MlxCfgOps::openComChk() // TODO: change all configuration specific to updateInfo() as a virtual function in the base class and call that on all Cfg classes // update max Vfs if (supportsCfg(Mct_Sriov)) { - McStatus rc = static_cast(_cfgList[Mct_Sriov])->updateMaxVfs(_mf); + int rc = static_cast(_cfgList[Mct_Sriov])->updateMaxVfs(_mf); + if (rc) { + return rc; + } + } + + // get max/current bar size + if (supportsCfg(Mct_Bar_Size)) { + int rc = static_cast(_cfgList[Mct_Bar_Size])->updateBarSzInfo(_mf); if (rc) { return rc; } @@ -462,31 +701,33 @@ McStatus MlxCfgOps::openComChk() return MCE_SUCCESS; } -McStatus MlxCfgOps::open(const char* devStr) +int MlxCfgOps::open(const char* devStr) { _mf = mopen(devStr); if (_mf == NULL) { - return MCE_OPEN_DEVICE; + return errmsg(MCE_OPEN_DEVICE); } return openComChk(); } -McStatus MlxCfgOps::opend(mfile* mf) +int MlxCfgOps::opend(mfile* mf) { if (!mf) { - return MCE_BAD_PARAMS; + return errmsg(MCE_BAD_PARAMS); } _mf = mf; return openComChk(); } -// TODO: implement bool MlxCfgOps::supportsCfg(mlxCfgType cfg) { if (!isLegal(cfg)) { return false; } + if (cfg == Mct_Bar_Size) { // dont enable these just yet, no FW support + return false; + } return _suppVec & cfgSuppMask[cfg]; } @@ -498,23 +739,23 @@ bool MlxCfgOps::supportsParam(mlxCfgParam param) return supportsCfg(cfgParam2Type(param)); } -McStatus MlxCfgOps::getCfg(mlxCfgParam cfgParam, u_int32_t& val) +int MlxCfgOps::getCfg(mlxCfgParam cfgParam, u_int32_t& val) { if (!isLegal(cfgParam)) { return MCE_BAD_PARAMS; } - McStatus rc = _cfgList[cfgParam2Type(cfgParam)]->getFromDev(_mf); + int rc = _cfgList[cfgParam2Type(cfgParam)]->getFromDev(_mf); if (rc) { - return rc; + return errmsgConcatMsg(rc,*_cfgList[cfgParam2Type(cfgParam)]); } val = (_cfgList[cfgParam2Type(cfgParam)])->getParam(cfgParam); return MCE_SUCCESS; } -McStatus MlxCfgOps::getCfg(std::vector& infoVec) +int MlxCfgOps::getCfg(std::vector& infoVec) { for (std::vector::iterator it = infoVec.begin() ; it != infoVec.end(); it++) { - McStatus rc = getCfg(it->first,it->second); + int rc = getCfg(it->first,it->second); if (rc) { return rc; } @@ -522,20 +763,20 @@ McStatus MlxCfgOps::getCfg(std::vector& infoVec) return MCE_SUCCESS; } -McStatus MlxCfgOps::setCfg(mlxCfgParam cfgParam, u_int32_t val) +int MlxCfgOps::setCfg(mlxCfgParam cfgParam, u_int32_t val, bool ignoreCheck) { if (!isLegal(cfgParam)) { return MCE_BAD_PARAMS; } _cfgList[cfgParam2Type(cfgParam)]->setParam(cfgParam, val); - McStatus rc = _cfgList[cfgParam2Type(cfgParam)]->setOnDev(_mf); + int rc = _cfgList[cfgParam2Type(cfgParam)]->setOnDev(_mf, ignoreCheck); if (rc) { - return rc; + return errmsgConcatMsg(rc, *_cfgList[cfgParam2Type(cfgParam)]); } return MCE_SUCCESS; } -McStatus MlxCfgOps::setCfg(const std::vector& infoVec) +int MlxCfgOps::setCfg(const std::vector& infoVec, bool ignoreCheck) { // set params std::set CfgToSet; @@ -545,49 +786,60 @@ McStatus MlxCfgOps::setCfg(const std::vector& infoVec) return MCE_BAD_PARAMS; } if (!supportsParam(it->first)) { - return MCE_UNSUPPORTED_CFG; + return errmsg(MCE_UNSUPPORTED_CFG); } _cfgList[cfgParam2Type(it->first)]->setParam(it->first, it->second); CfgToSet.insert(_cfgList[cfgParam2Type(it->first)]); } //set on device exit on first failure for (std::set::iterator it = CfgToSet.begin() ; it != CfgToSet.end(); it++) { - McStatus rc = (*it)->setOnDev(_mf); + int rc = (*it)->setOnDev(_mf, ignoreCheck); if (rc) { - return rc; + return errmsgConcatMsg(rc, (**it)); } } return MCE_SUCCESS; } -McStatus MlxCfgOps::invalidateCfgs() +int MlxCfgOps::invalidateCfgs() { - struct tools_mnvia mnviaTlv; - u_int8_t buffer[tools_mnvia_size()]; - memset(&mnviaTlv, 0, sizeof(struct tools_mnvia)); - memset(buffer, 0, tools_mnvia_size()); + struct tools_open_mnvia mnviaTlv; + u_int8_t buffer[tools_open_mnvia_size()]; + memset(&mnviaTlv, 0, sizeof(struct tools_open_mnvia)); + memset(buffer, 0, tools_open_mnvia_size()); mnviaTlv.mnv_hdr.length = 0; mnviaTlv.mnv_hdr.type = 0; mnviaTlv.mnv_hdr.type_mod = 0; - tools_mnvia_pack(&mnviaTlv, buffer); + tools_open_mnvia_pack(&mnviaTlv, buffer); MError rc; rc = reg_access_mnvia(_mf, REG_ACCESS_METHOD_SET, &mnviaTlv); - return translateRc(rc); + if (rc) { + return errmsg("failed to invalidate configurations, %s.", m_err2str(rc)); + } + return MCE_SUCCESS; } bool MlxCfgOps::isLegal(mlxCfgType cfg) { - return (cfg >= Mct_Sriov && cfg < Mct_Last) ; + if (cfg >= Mct_Sriov && cfg < Mct_Last) { + return true; + } + errmsg("illegal configuration"); + return false; } bool MlxCfgOps::isLegal(mlxCfgParam cfg) { - return (cfg >= Mcp_Sriov_En && cfg < Mcp_Last) ; + if (cfg >= Mcp_Sriov_En && cfg < Mcp_Last) { + return true; + } + errmsg("illegal configuration parameter"); + return false; } -u_int64_t MlxCfgOps::cfgSuppMask[Mct_Last] = {SRIOV_MASK, WOL_P1_MASK, WOL_P2_MASK , VPI_P1_MASK, VPI_P2_MASK}; +u_int64_t MlxCfgOps::cfgSuppMask[Mct_Last] = {SRIOV_MASK, WOL_P1_MASK, WOL_P2_MASK , VPI_P1_MASK, VPI_P2_MASK, BAR_SZ_MASK}; mlxCfgType MlxCfgOps::cfgParam2Type(mlxCfgParam param) { @@ -604,103 +856,13 @@ mlxCfgType MlxCfgOps::cfgParam2Type(mlxCfgParam param) return Mct_Vpi_P1; case Mcp_Link_Type_P2 : return Mct_Vpi_P2; + case Mcp_Log_Bar_Size : + return Mct_Bar_Size; default : return Mct_Last; } } -const char* MlxCfgOps::err2str(McStatus rc) -{ - switch (rc) { - case MCE_TLV_NOT_FOUND: - return "Configuration not found."; - case MCE_TLV_NOT_SUPP: - return "The Configuration Tlv is not supported."; - case MCE_NVCFG_NOT_SUPP: - case MCE_REG_NOT_SUPP: - return "Fw does not support NV access registers."; - case MCE_TOOLS_HCR_NOT_SUPP: - return "Unsupported FW (version 2.31.5000 or above required for CX3/PRO)"; - case MCE_UNSUPPORTED_CFG: - return "Fw does not support configuration."; - case MCE_UNSUPPORTED_DEVICE: - return "Device not supported."; - case MCE_BAD_PARAMS: - return "Bad Parameters."; - case MCE_BAD_PARAM_VAL: - return "Illegal parameter value."; - case MCE_FAILED: - case MCE_BAD_STATUS: - case MCE_CR_ERROR: - return "General Failure"; - case MCE_NOT_IMPLEMENTED: - return "Not implemented."; - case MCE_DEV_BUSY: - return "Device busy."; - case MCE_UNKNOWN_TLV: - return "Unknown Tlv."; - case MCE_RES_NOT_AVAIL: - return "Resource not available"; - case MCE_CONF_CORRUPT: - return "Configuration is corrupted."; - case MCE_BAD_CONFIG: - return "bad configuration."; - case MCE_ERASE_EXEEDED: - return "Erase exceeded flash spec."; - case MCE_BAD_OP: - return "Bad Operation."; - case MCE_DRIVER_DOWN: - return "Cannot perform operation, Driver might be down."; - case MCE_INCOMPLETE_PARAMS: // HACK: atm SRIOV is the only configuration that might recv this error - return "Failed to get missing configuration from device, please specify all the needed parameters for SRIOV."; - case MCE_OPEN_DEVICE: - return "Failed to open device."; - case MCE_PCICONF: - return "Access to device should be through configuration cycles only."; - - default: - return "General Error."; - } -} - -McStatus translateRc(MError rc) { - switch (rc) { - case ME_OK: - return MCE_SUCCESS; - case ME_REG_ACCESS_DEV_BUSY: - case ME_SEM_LOCKED: - return MCE_DEV_BUSY; - case ME_REG_ACCESS_UNKNOWN_TLV: - return MCE_UNKNOWN_TLV; - case ME_REG_ACCESS_REG_NOT_SUPP: - return MCE_REG_NOT_SUPP; - case ME_REG_ACCESS_METHOD_NOT_SUPP: - return MCE_METHOD_NOT_SUPP; - case ME_REG_ACCESS_BAD_PARAM: - case ME_BAD_PARAMS: - return MCE_BAD_PARAMS; - case ME_REG_ACCESS_RES_NOT_AVLBL: - return MCE_RES_NOT_AVAIL; - case ME_REG_ACCESS_CONF_CORRUPT: - return MCE_CONF_CORRUPT; - case ME_REG_ACCESS_LEN_TOO_SMALL: - return MCE_TLV_LEN_TOO_SMALL; - case ME_REG_ACCESS_BAD_CONFIG: - return MCE_BAD_CONFIG; - case ME_REG_ACCESS_ERASE_EXEEDED: - return MCE_ERASE_EXEEDED; - case ME_CMDIF_BAD_OP: - return MCE_BAD_OP; - case ME_CMDIF_BAD_STATUS: - return MCE_BAD_STATUS; - case ME_CR_ERROR: - return MCE_CR_ERROR; - - default: - return MCE_UNKNOWN_ERR; - } -} - static void dealWithSignal() { int sig; @@ -717,10 +879,10 @@ static void dealWithSignal() return; } -McStatus mnvaCom(mfile* mf, u_int8_t* buff, u_int16_t len, u_int16_t type, reg_access_method_t method, u_int16_t typeMod) +MError mnvaCom(mfile* mf, u_int8_t* buff, u_int16_t len, u_int16_t type, reg_access_method_t method, u_int16_t typeMod) { - struct tools_mnva mnvaTlv; - memset(&mnvaTlv, 0, sizeof(struct tools_mnva)); + struct tools_open_mnva mnvaTlv; + memset(&mnvaTlv, 0, sizeof(struct tools_open_mnva)); mnvaTlv.mnv_hdr.length = len >> 2; // length is in dwords mnvaTlv.mnv_hdr.type = type; @@ -732,9 +894,9 @@ McStatus mnvaCom(mfile* mf, u_int8_t* buff, u_int16_t len, u_int16_t type, reg_a rc = reg_access_mnva(mf, method, &mnvaTlv); dealWithSignal(); if (rc) { - return translateRc(rc); + return rc; } memcpy(buff, mnvaTlv.data, len); - return MCE_SUCCESS; + return ME_OK; } diff --git a/mlxconfig/mlxcfg_lib.h b/mlxconfig/mlxcfg_lib.h index fe53e0d..8438b5e 100644 --- a/mlxconfig/mlxcfg_lib.h +++ b/mlxconfig/mlxcfg_lib.h @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -29,7 +29,12 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - +/* + * mlxcfg_lib.h + * + * Created on: Feb 17, 2014 + * Author: adrianc + */ #ifndef MLXCFG_LIB_H_ #define MLXCFG_LIB_H_ @@ -39,55 +44,24 @@ #include +#include "errmsg.h" + #define MLXCFG_UNKNOWN 0xffffffff #define WOL_TYPE 0x10 #define SRIOV_TYPE 0x11 #define VPI_TYPE 0x12 +#define BAR_SIZE_TYPE 0x13 - - -typedef enum { - MCE_SUCCESS = 0, - MCE_TLV_NOT_FOUND, - MCE_TLV_NOT_SUPP, - MCE_NVCFG_NOT_SUPP, - MCE_TOOLS_HCR_NOT_SUPP, - MCE_DRIVER_DOWN, - MCE_UNSUPPORTED_DEVICE, - MCE_UNSUPPORTED_CFG, - MCE_BAD_PARAMS, - MCE_BAD_PARAM_VAL, - MCE_DEV_BUSY, - MCE_UNKNOWN_TLV, - MCE_REG_NOT_SUPP, - MCE_METHOD_NOT_SUPP, - MCE_RES_NOT_AVAIL, - MCE_CONF_CORRUPT, - MCE_TLV_LEN_TOO_SMALL, - MCE_BAD_CONFIG, - MCE_ERASE_EXEEDED, - MCE_BAD_OP, - MCE_BAD_STATUS, - MCE_CR_ERROR, - MCE_NOT_IMPLEMENTED, - MCE_INCOMPLETE_PARAMS, - MCE_OPEN_DEVICE, - MCE_PCICONF, - MCE_UNKNOWN_ERR, - MCE_FAILED, - MCE_LAST - -}McStatus; - typedef enum { Mct_Sriov = 0, Mct_Wol_P1, Mct_Wol_P2, Mct_Vpi_P1, Mct_Vpi_P2, + Mct_Bar_Size, Mct_Last } mlxCfgType; @@ -98,46 +72,45 @@ typedef enum { Mcp_Wol_Magic_En_P2, Mcp_Link_Type_P1, Mcp_Link_Type_P2, + Mcp_Log_Bar_Size, Mcp_Last } mlxCfgParam; typedef std::pair cfgInfo; -class MlxCfgOps { +class MlxCfgOps : public ErrMsg { public: MlxCfgOps(); ~MlxCfgOps(); - McStatus open(const char* devStr); - McStatus opend(mfile* mf); + int open(const char* devStr); + int opend(mfile* mf); // no need to close , this is done in destructor bool supportsCfg(mlxCfgType cfg); bool supportsParam(mlxCfgParam param); - McStatus getCfg(mlxCfgParam cfgParam, u_int32_t& val); - McStatus getCfg(std::vector& infoVec); + int getCfg(mlxCfgParam cfgParam, u_int32_t& val); + int getCfg(std::vector& infoVec); - McStatus setCfg(mlxCfgParam cfgParam, u_int32_t val); - McStatus setCfg(const std::vector& infoVec); + int setCfg(mlxCfgParam cfgParam, u_int32_t val, bool ignoreCheck=false); + int setCfg(const std::vector& infoVec, bool ignoreCheck=false); - McStatus invalidateCfgs(); - - static const char* err2str(McStatus rc); + int invalidateCfgs(); private: - class CfgParams + class CfgParams : public ErrMsg { public: - CfgParams(mlxCfgType t=Mct_Last, u_int32_t tlvT=0) : type(t), tlvType(tlvT), _updated(false) {} + CfgParams(mlxCfgType t=Mct_Last, u_int32_t tlvT=0); virtual ~CfgParams() {} virtual void setParam(mlxCfgParam paramType, u_int32_t val) = 0; virtual u_int32_t getParam(mlxCfgParam paramType) = 0; - virtual McStatus getFromDev(mfile* mf) = 0; - virtual McStatus setOnDev(mfile* mf) = 0; + virtual int getFromDev(mfile* mf) = 0; + virtual int setOnDev(mfile* mf, bool ignoreCheck=false) = 0; mlxCfgType type; u_int32_t tlvType; @@ -155,10 +128,10 @@ private: virtual void setParam(mlxCfgParam paramType, u_int32_t val); virtual u_int32_t getParam(mlxCfgParam paramType); - virtual McStatus getFromDev(mfile* mf); - virtual McStatus setOnDev(mfile* mf); + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); - McStatus updateMaxVfs(mfile* mf); + int updateMaxVfs(mfile* mf); private: virtual bool isLegal(mfile* mf); @@ -177,9 +150,8 @@ private: virtual void setParam(mlxCfgParam paramType, u_int32_t val); virtual u_int32_t getParam(mlxCfgParam paramType); - virtual McStatus getFromDev(mfile* mf); - virtual McStatus setOnDev(mfile* mf); - + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); private: virtual bool isLegal(mfile* mf=NULL); @@ -197,9 +169,8 @@ private: virtual void setParam(mlxCfgParam paramType, u_int32_t val); virtual u_int32_t getParam(mlxCfgParam paramType); - virtual McStatus getFromDev(mfile* mf); - virtual McStatus setOnDev(mfile* mf); - + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); private: virtual bool isLegal(mfile* mf=NULL); @@ -207,8 +178,31 @@ private: u_int32_t _linkType; }; - McStatus openComChk(); - McStatus supportsToolsHCR(); + class BarSzParams : public CfgParams + { + public: + BarSzParams() : CfgParams(Mct_Bar_Size, BAR_SIZE_TYPE) ,_maxLogBarSz(1), _currLogBarSz(1), _logBarSz(MLXCFG_UNKNOWN) {} + ~BarSzParams() {}; + + virtual void setParam(mlxCfgParam paramType, u_int32_t val); + virtual u_int32_t getParam(mlxCfgParam paramType); + + virtual int getFromDev(mfile* mf); + virtual int setOnDev(mfile* mf, bool ignoreCheck=false); + + int updateBarSzInfo(mfile* mf); + + private: + virtual bool isLegal(mfile* mf=NULL); + u_int32_t _maxLogBarSz; + u_int32_t _currLogBarSz; + u_int32_t _logBarSz; + + }; + + + int openComChk(); + int supportsToolsHCR(); bool isLegal(mlxCfgType cfg); bool isLegal(mlxCfgParam cfg); diff --git a/mlxconfig/mlxcfg_parser.cpp b/mlxconfig/mlxcfg_parser.cpp index ae2f559..d10c241 100644 --- a/mlxconfig/mlxcfg_parser.cpp +++ b/mlxconfig/mlxcfg_parser.cpp @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -49,7 +49,7 @@ using namespace std; -static void printFlagLine(string flag_s, string flag_l,string param, string desc) +static void printFlagLine(string flag_s, string flag_l, string param, string desc) { printf(IDENT2"-%s|--%s", flag_s.c_str(), flag_l.c_str()); if (param.length()) { @@ -66,7 +66,7 @@ void MlxCfg::printHelp() printf(IDENT"NAME:\n" IDENT2 MLXCFG_NAME"\n" IDENT"SYNOPSIS:\n" - IDENT2 MLXCFG_NAME " [-d ] [-y] [parameters to set]\n"); + IDENT2 MLXCFG_NAME " [-d ] [-y] |q[uery]|r[eset]>\n"); // print options printf("\n"); @@ -79,18 +79,21 @@ void MlxCfg::printHelp() //print commands printf("\n"); printf(IDENT"COMMANDS:\n"); - printf(IDENT2"q[uery]\t: query current supported configurations.\n"); - printf(IDENT2"s[et]\t: set configurations to a specific device.\n"); - printf(IDENT2"r[eset]\t: reset configurations to their default value.\n"); + printf(IDENT2"%-24s : %s\n","q[uery]", "query current supported configurations."); + printf(IDENT2"%-24s : %s\n","s[et]", "set configurations to a specific device."); + printf(IDENT2"%-24s : %s\n","r[eset]", "reset configurations to their default value."); // print supported commands printf("\n"); printf(IDENT"Supported Configurations:\n"); - printf(IDENT2"SRIOV\t\t\t: SRIOV_EN=<1|0> NUM_OF_VFS=\n"); - printf(IDENT2"WOL_PORT1\t\t: WOL_MAGIC_EN_P1=<1|0>\n"); - printf(IDENT2"WOL_PORT2\t\t: WOL_MAGIC_EN_P2=<1|0>\n"); - printf(IDENT2"VPI_SETTINGS_PORT1\t: LINK_TYPE_P1=<1|2|3> , 1=Infiniband 2=Ethernet 3=VPI(auto-sense).\n"); - printf(IDENT2"VPI_SETTINGS_PORT2\t: LINK_TYPE_P2=<1|2|3>\n"); + printf(IDENT2"%-24s : %s\n","SRIOV", "SRIOV_EN=<1|0> NUM_OF_VFS="); + printf(IDENT2"%-24s : %s\n","WOL_PORT1", "WOL_MAGIC_EN_P1"); + printf(IDENT2"%-24s : %s\n","WOL_PORT2", "WOL_MAGIC_EN_P2=<1|0>"); + printf(IDENT2"%-24s : %s\n","VPI_SETTINGS_PORT1", "LINK_TYPE_P1=<1|2|3> , 1=Infiniband 2=Ethernet 3=VPI(auto-sense)."); + printf(IDENT2"%-24s : %s\n","VPI_SETTINGS_PORT2", "LINK_TYPE_P2=<1|2|3>"); + //printf(IDENT2"%-24s : %s\n","BAR_SIZE", "LOG_BAR_SIZE= , example: for 8Mb bar size set LOG_BAR_SIZE=3"); + + // print usage examples printf("\n"); printf(IDENT"Examples:\n"); printf(IDENT2"%-35s: %s\n", "To query current Configuration", MLXCFG_NAME" -d "MST_DEV_EXAMPLE" query"); @@ -107,6 +110,11 @@ void MlxCfg::printVersion() print_version_string(MLXCFG_NAME, ""); } +void MlxCfg::printUsage() { + printf("\n"IDENT"Usage:\n" + IDENT2 MLXCFG_NAME " [-d ] [-y] |q[uery]|r[eset]>\n\n"); +} + bool MlxCfg::tagExsists(mlxCfgParam tag) { for (std::vector::iterator it = _mlxParams.params.begin() ; it != _mlxParams.params.end(); it++) { if (it->first == tag) { @@ -129,7 +137,8 @@ mlxCfgStatus MlxCfg::processArg(string tag, u_int32_t val) break; } } - if (i == Mcp_Last) { + // we dont support BAR_SZ atm + if (i == Mcp_Last || i == Mcp_Log_Bar_Size) { return err(true, "Unknown Parameter: %s", tag.c_str()); } return MLX_CFG_OK; @@ -177,7 +186,7 @@ mlxCfgStatus MlxCfg::extractCfgArgs(int argc, char* argv[]) return err(true, "Invalid Configuration argument %s", argv[i]); } //printf("-D- %s %s\n", tag.c_str(), valstr.c_str()); - if (!strToNum(valstr, val)) { + if (!strToNum(valstr, val, 10)) { return err(true, "Failed to parse %s=%s", tag.c_str(), valstr.c_str()); } // store val in the correct place in mlxconfig Params @@ -219,6 +228,9 @@ mlxCfgStatus MlxCfg::parseArgs(int argc, char* argv[]) } else if (arg == "reset" || arg == "r") { _mlxParams.cmd = Mc_Reset; break; + // hidden flag --force used to ignore parameter checks + } else if (arg == "--force"){ + _mlxParams.force = true; } else { return err(true, "invalid argument: %s", arg.c_str()); } diff --git a/mlxconfig/mlxcfg_ui.cpp b/mlxconfig/mlxcfg_ui.cpp index aa3e858..48a3e4e 100644 --- a/mlxconfig/mlxcfg_ui.cpp +++ b/mlxconfig/mlxcfg_ui.cpp @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -29,7 +29,6 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ - #include #include #include @@ -78,9 +77,8 @@ void TerminationHandler(int signum) fatal_error_in_progress = 1; signal (signum, SIG_DFL); - printf("\n Received signal %d. \n", signum); + printf("\n Received signal %d.\n", signum); fflush(stdout); - raise(signum); } @@ -121,7 +119,7 @@ void initHandler() #endif std::string MlxCfgParams::param2str[Mcp_Last]= {"SRIOV_EN", "NUM_OF_VFS", "WOL_MAGIC_EN_P1", "WOL_MAGIC_EN_P2",\ - "LINK_TYPE_P1", "LINK_TYPE_P2"}; + "LINK_TYPE_P1", "LINK_TYPE_P2", "LOG_BAR_SIZE"}; u_int32_t MlxCfgParams::getParamVal(mlxCfgParam p) { @@ -170,9 +168,9 @@ if (question == NULL) { char ansbuff[32]; ansbuff[0] = '\0'; fflush(stdout); - //fgets(ansbuff, 30, stdin); - int rc=fscanf(stdin, "%30s", ansbuff); - (void)rc; // avoid warnings + int cnt=fscanf(stdin, "%30s", ansbuff); + (void)cnt; // avoid warnings + if ( strcasecmp(ansbuff, "y") && strcasecmp(ansbuff, "yes")) { @@ -195,10 +193,11 @@ mlxCfgStatus MlxCfg::queryDevsCfg() int numOfDev; dev_info* dev = mdevices_info(MDEVS_TAVOR_CR, &numOfDev); - if (numOfDev == -1) { + if (dev == NULL) { return err(true, "Failed to get devices."); } if (numOfDev == 0) { + mdevices_info_destroy(dev, numOfDev); return err(true, NO_DEV_ERR); } //printf("-D- num of dev: %d , 1st dev : %s\n", numOfDev, buf); @@ -219,30 +218,25 @@ mlxCfgStatus MlxCfg::queryDevsCfg() return shouldFail? MLX_CFG_ERROR : MLX_CFG_OK; } -#define IDENT "\t" -#define IDENT2 "\t\t" - - static void printParam(u_int32_t param) { if (param == MLXCFG_UNKNOWN) { - printf("N/A"); + printf("%-8s", "N/A"); } else { - printf("%d", param); + printf("%-8d", param); } return; } static void printOneParam(const char* name, u_int32_t currVal, bool printNewCfg=false, u_int32_t newVal= MLXCFG_UNKNOWN) { - printf(IDENT"%s"IDENT, name); + printf(" %-16s", name); printParam(currVal); - printf(IDENT); if (printNewCfg) { if (newVal == MLXCFG_UNKNOWN) { printParam(currVal); } else { - printf("%d", newVal); + printf("%-8d", newVal); } } printf("\n"); @@ -271,34 +265,37 @@ const char* MlxCfg::getDeviceName(const char* dev) mlxCfgStatus MlxCfg::queryDevCfg(const char* dev,const char* pci, int devIndex, bool printNewCfg) { MlxCfgOps ops; - McStatus rc; + bool rc; bool failedToGetCfg = false; bool nothingSupported = true; (void) pci; // print opening printf("\nDevice #%d:\n", devIndex); printf("----------\n\n"); - printf("Device type:"IDENT"%s\n", getDeviceName(dev)); - printf("PCI device:"IDENT"%s\n", dev); + printf("%-16s%-16s\n", "Device type:", getDeviceName(dev)); + printf("%-16s%-16s\n", "PCI device:", dev); // TODO : get this info - //printf("Part Number:"IDENT"%s\n", "123456"); - //printf("Psid:"IDENT2"%s\n", "78901111"); + //printf("%-16s%-16s\n", "Part Number:", "123456"); + //printf("%-16s%-16s\n", "Psid:", "78901111"); printf("\n"); rc = ops.open(dev); if (rc) { - err(false, "Failed to query device: %s. %s", dev, MlxCfgOps::err2str(rc)); + err(false, "Failed to query device: %s. %s", dev, ops.err()); return MLX_CFG_ERROR_EXIT; } //print configuration Header - printf("Configurations:"IDENT2"Current"); + printf("%-16s%16s","Configurations:","Current"); if (printNewCfg) { - printf(IDENT"New"); + printf(" %s", "New"); } printf("\n"); for (int p = (int)Mcp_Sriov_En ; p < (int)Mcp_Last; ++p) { + if (p == Mcp_Log_Bar_Size) { // we dont support bar size atm + continue; + } if (!ops.supportsParam((mlxCfgParam)p)) { continue; } @@ -306,10 +303,11 @@ mlxCfgStatus MlxCfg::queryDevCfg(const char* dev,const char* pci, int devIndex, u_int32_t currentParam = MLXCFG_UNKNOWN ; u_int32_t newParam = _mlxParams.getParamVal((mlxCfgParam)p); rc = ops.getCfg((mlxCfgParam)p, currentParam); - if (rc && rc != MCE_RES_NOT_AVAIL) { + if (rc) { failedToGetCfg = true; - printf(IDENT"%s"IDENT"failed to get current configuration. %s\n", MlxCfgParams::param2str[p].c_str(),\ - MlxCfgOps::err2str(rc)); + printf(" %-16s%-16s %s\n", MlxCfgParams::param2str[p].c_str(), "failed to get current configuration.",\ + ops.err()); + err(false, "Failed to query device configuration"); } else { printOneParam(MlxCfgParams::param2str[p].c_str(), currentParam, printNewCfg, newParam); } @@ -330,6 +328,10 @@ mlxCfgStatus MlxCfg::setDevCfg() // even if there is problem fetching the current cfg we will attempt to write the new info // if the user agrees + if (_mlxParams.force) { + printf("\n-W- Force flag specified, the validity of the Parameters will not be checked !\n"); + printf("-W- Incorrect configuration might yield unexpected results. running in this mode is not recommended."); + } // ask user if(!askUser("Apply new Configuration?")) { printErr(); @@ -338,19 +340,19 @@ mlxCfgStatus MlxCfg::setDevCfg() // write cfgs MlxCfgOps ops; - McStatus rc; + bool rc; rc = ops.open(_mlxParams.device.c_str()); if (rc) { return err(false, "Failed to set configuration on device: %s. %s", _mlxParams.device.c_str(), \ - MlxCfgOps::err2str(rc)); + ops.err()); } printf("Applying... "); // set Configuration - rc = ops.setCfg(_mlxParams.params); + rc = ops.setCfg(_mlxParams.params, _mlxParams.force); if (rc) { printf("Failed!\n"); - err(true, "Failed to set configuration: %s", MlxCfgOps::err2str(rc)); + err(true, "Failed to set configuration: %s", ops.err()); return MLX_CFG_ERROR; } @@ -382,10 +384,11 @@ mlxCfgStatus MlxCfg::resetDevsCfg() int numOfDev; dev_info* dev = mdevices_info(MDEVS_TAVOR_CR, &numOfDev); - if (numOfDev == -1) { + if (dev == NULL) { return err(true, "Failed to get devices."); } if (numOfDev == 0) { + mdevices_info_destroy(dev, numOfDev); return err(true, NO_DEV_ERR); } if (!askUser("Reset configuration for all devices? ")){ @@ -421,17 +424,17 @@ mlxCfgStatus MlxCfg::resetDevsCfg() mlxCfgStatus MlxCfg::resetDevCfg(const char* dev) { MlxCfgOps ops; - McStatus rc; + bool rc; rc = ops.open(dev); if (rc) { - return err(false, "Failed to open device: %s. %s", dev, MlxCfgOps::err2str(rc)); + return err(false, "Failed to open device: %s. %s", dev, ops.err()); } // reset cfg rc = ops.invalidateCfgs(); if (rc) { - return err(false, "failed to reset configurations. %s", ops.err2str(rc)); + return err(false, "failed to reset configurations. %s", ops.err()); } return MLX_CFG_OK; @@ -444,6 +447,8 @@ mlxCfgStatus MlxCfg::execute(int argc, char* argv[]) if (rc) { if (rc == MLX_CFG_OK_EXIT) { rc = MLX_CFG_OK; + } else { + printUsage(); } return rc; } @@ -469,11 +474,11 @@ mlxCfgStatus MlxCfg::execute(int argc, char* argv[]) mlxCfgStatus MlxCfg::test(const char* dev) { - McStatus rc; + bool rc; MlxCfgOps ops; rc = ops.open(dev); if (rc) { - return err(true, "Failed to open device: %s. %s", dev, MlxCfgOps::err2str(rc)); + return err(true, "Failed to open device: %s. %s", dev, ops.err()); } u_int32_t val; rc =ops.invalidateCfgs(); @@ -485,7 +490,7 @@ mlxCfgStatus MlxCfg::test(const char* dev) rc =ops.getCfg(Mcp_Wol_Magic_En_P1, val); printf("get sriov_en get after set : rc = %d , val = %d\n", rc,val); if (rc) { - printf("-D- %s\n",MlxCfgOps::err2str(rc)); + printf("-D- %s\n",ops.err()); } return MLX_CFG_OK; } diff --git a/mlxconfig/mlxcfg_ui.h b/mlxconfig/mlxcfg_ui.h index b9798f8..7a86eaa 100644 --- a/mlxconfig/mlxcfg_ui.h +++ b/mlxconfig/mlxcfg_ui.h @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -59,7 +59,7 @@ typedef enum { class MlxCfgParams { public: - MlxCfgParams() : device(),cmd(Mc_UnknownCmd), yes(false) {} + MlxCfgParams() : device(),cmd(Mc_UnknownCmd), yes(false), force(false) {} ~MlxCfgParams() {} std::string device; @@ -67,6 +67,7 @@ public: bool yes; std::vector params; static std::string param2str[Mcp_Last]; + bool force;// ignore parameter checks u_int32_t getParamVal(mlxCfgParam p); }; @@ -83,6 +84,7 @@ private: // User interface and parsing methods void printHelp(); void printVersion(); + void printUsage(); mlxCfgStatus parseArgs(int argc, char* argv[]); //Helper functions for parse args mlxCfgStatus processArg(std::string tag, u_int32_t val); diff --git a/mlxfwops/lib/Makefile.am b/mlxfwops/lib/Makefile.am index 4fab8fe..68e05e2 100755 --- a/mlxfwops/lib/Makefile.am +++ b/mlxfwops/lib/Makefile.am @@ -32,13 +32,14 @@ # Makefile.am -- Process this file with automake to produce Makefile.in MTCR_DIR = $(top_srcdir)/mtcr_ul +MTCR_INC_DIR = $(top_srcdir)/include/mtcr_ul MFLASH_DIR = $(top_srcdir)/mflash MINIXZ_DIR = $(top_srcdir)/ext_libs/minixz COMMON_DIR = $(top_srcdir)/common LAYOUTS_DIR = $(top_srcdir)/tools_layouts UTILS_LIB = $(top_srcdir)/mft_utils -INCLUDES = -I$(srcdir) -I$(MTCR_DIR) -I$(MFLASH_DIR) -I$(top_srcdir)/ext_libs/json -I$(MINIXZ_DIR)\ +INCLUDES = -I$(srcdir) -I$(MTCR_INC_DIR) -I$(MFLASH_DIR) -I$(top_srcdir)/ext_libs/json -I$(MINIXZ_DIR)\ -I$(COMMON_DIR) -I$(MFT_EXT_LIBS_INC_DIR)/zlib -I $(LAYOUTS_DIR) -I$(top_srcdir)/common -I$(UTILS_LIB) MLXFWOPS_VERSION = 1 diff --git a/mlxfwops/lib/flint_base.cpp b/mlxfwops/lib/flint_base.cpp index f041f17..fe6574c 100755 --- a/mlxfwops/lib/flint_base.cpp +++ b/mlxfwops/lib/flint_base.cpp @@ -2,7 +2,7 @@ * * flint_base.cpp - FLash INTerface * - * Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. + * Copyright (c) 2011 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -31,6 +31,9 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. + * + * Version: $Id: flint_base.cpp 7522 2011-11-16 15:37:21Z mohammad $ + * */ #include diff --git a/mlxfwops/lib/flint_base.h b/mlxfwops/lib/flint_base.h index c11374a..53ec8d6 100755 --- a/mlxfwops/lib/flint_base.h +++ b/mlxfwops/lib/flint_base.h @@ -2,7 +2,7 @@ * * flint_base.h - FLash INTerface * - * Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. + * Copyright (c) 2011 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -31,6 +31,9 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. + * + * Version: $Id: flint_base.h 7522 2011-11-16 15:37:21Z mohammad $ + * */ #ifndef FLINT_BASE_H #define FLINT_BASE_H @@ -224,9 +227,9 @@ namespace std {}; using namespace std; #define CONNECT_IB_HW_ID 511 #define BRIDGEX_HW_ID 6100 #define IS4_HW_ID 435 -#define TAVOR_HW_ID 23108 -#define ARBEL_HW_ID 25208 -#define SINAI_HW_ID 25204 +#define INFINIHOST_HW_ID 23108 +#define INFINIHOST_III_EX_HW_ID 25208 +#define INFINIHOST_III_LX_HW_ID 25204 #define CONNECT_IB_SW_ID 4113 // FS3 defines diff --git a/mlxfwops/lib/flint_io.cpp b/mlxfwops/lib/flint_io.cpp index 3e86e0e..af92954 100755 --- a/mlxfwops/lib/flint_io.cpp +++ b/mlxfwops/lib/flint_io.cpp @@ -2,7 +2,7 @@ * * flint_io.cpp - FLash INTerface * - * Copyright (c) 2013 Mellanox Technologies Ltd. All rights reserved. + * Copyright (c) 2011 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -31,6 +31,9 @@ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. + * + * Version: $Id: flint_io.cpp 7522 2011-11-16 15:37:21Z mohammad $ + * */ #include @@ -207,7 +210,7 @@ bool Flash::open_com_checks(const char *device, int rc, bool force_lock) if (rc != MFE_OK) { if (rc == MFE_SEM_LOCKED) { - return errmsgAdv(_advErrors, "Can not obtain Flash semaphore (62).", "You can run \"flint -clear_semaphore -d \" to force semaphore unlock. See help for details."); + return errmsgAdv(_advErrors, "Can not obtain Flash semaphore (63).", "You can run \"flint -clear_semaphore -d \" to force semaphore unlock. See help for details."); } if (rc == MFE_LOCKED_CRSPACE) { _cr_space_locked = 1; @@ -267,6 +270,7 @@ bool Flash::open(const char *device, bool force_lock, bool read_only, int num_of // Open device int rc; _advErrors = advErr; + _ignore_cache_replacement = ignore_cashe_replacement ? true : false; (void)read_only; // not used , avoid compiler warnings TODO: remove this var from function def rc = mf_open(&_mfl, device, num_of_banks, flash_params, ignore_cashe_replacement); //printf("device: %s , forceLock: %s , read only: %s, num of banks: %d, flash params is null: %s, ocr: %d, rc: %d\n", @@ -750,6 +754,27 @@ bool Flash::set_attr(char *param_name, char *param_val_str) return true; } +bool Flash::is_flash_write_protected() +{ + int bank; + int rc; + write_protect_info_t protect_info; + + if (_attr.write_protect_support) { + for (bank = 0; bank < _attr.banks_num; bank++) { + rc = mf_get_write_protect(_mfl, bank, &protect_info); + if (rc == MFE_OK && protect_info.sectors_num != 0) { + return true; + } else { + if (rc && rc != MFE_NOT_SUPPORTED_OPERATION) { // We ignore when operation is not supported + return true; + } + } + } + } + return false; +} + void Flash::deal_with_signal() { int sig; diff --git a/mlxfwops/lib/flint_io.h b/mlxfwops/lib/flint_io.h index df383ca..e0235de 100755 --- a/mlxfwops/lib/flint_io.h +++ b/mlxfwops/lib/flint_io.h @@ -2,7 +2,7 @@ * * flint_io.h - FLash INTerface * - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. + * Copyright (c) 2011 Mellanox Technologies Ltd. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -35,8 +35,6 @@ * Version: $Id: flint_io.h 7522 2011-11-16 15:37:21Z mohammad $ * */ - - #ifndef FLINT_IO_H #define FLINT_IO_H @@ -222,6 +220,7 @@ public: FBase(true), _mfl(NULL), _no_flash_verify(false), + _ignore_cache_replacement(false), _curr_sector(0xffffffff), _port_num(0), _cr_space_locked(0) @@ -274,6 +273,7 @@ public: u_int32_t get_rev_id () {return _attr.rev_id; } u_int32_t get_port_num () {return _port_num;} u_int8_t get_cr_space_locked () {return _cr_space_locked;} + bool get_ignore_cache_replacment() {return _cr_space_locked;} bool sw_reset(); @@ -302,6 +302,8 @@ public: bool set_attr(char *param_name, char *param_val_str); + + bool is_flash_write_protected(); static void deal_with_signal(); enum { @@ -329,9 +331,11 @@ protected: bool write_sector_with_erase(u_int32_t addr, void *data, int cnt); bool write_with_erase(u_int32_t addr, void *data, int cnt); + mflash* _mfl; flash_attr _attr; bool _no_flash_verify; + bool _ignore_cache_replacement; // for FS3 devices flash access. u_int32_t _curr_sector; u_int32_t _port_num; diff --git a/mlxfwops/lib/fs2_ops.cpp b/mlxfwops/lib/fs2_ops.cpp index cda498b..24bc702 100644 --- a/mlxfwops/lib/fs2_ops.cpp +++ b/mlxfwops/lib/fs2_ops.cpp @@ -1065,7 +1065,7 @@ bool Fs2Operations::CheckBxMacsFormat(guid_t* guids, int index, int user_uids) //////////////////////////////////////////////////////////////////////// void Fs2Operations::patchGUIDsSection(u_int32_t *buf, u_int32_t ind, guid_t guids[MAX_GUIDS], int nguids) { - u_int32_t new_buf[MAX_GUIDS*2]; + u_int32_t new_buf[MAX_GUIDS*2] = {0}; // Form new GUID section for (u_int32_t i=0; i<(u_int32_t)nguids; i++) { @@ -1406,9 +1406,6 @@ bool Fs2Operations::Fs2Burn(Fs2Operations &imageOps, ExtBurnParams& burnParams) } } - - - // Guids patch _burnBlankGuids = burnParams.blankGuids; bool isGuidsSpecified = burnParams.userMacsSpecified || burnParams.userGuidsSpecified || @@ -1434,8 +1431,6 @@ bool Fs2Operations::Fs2Burn(Fs2Operations &imageOps, ExtBurnParams& burnParams) return false; } } - - // TODO: EXp Rom checks - Take from flash ..?? return Fs2FailSafeBurn(imageOps, !burnParams.burnFailsafe, "", burnParams.progressFunc); } @@ -1493,6 +1488,14 @@ bool Fs2Operations::FwReadRom(std::vector& romSect) return true; } +bool Fs2Operations::FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc) +{ + // avoid compiler warrnings + (void)baseGuid; + (void)callBackFunc; + return errmsg("This command is not supported for FS2 FW image."); +} + bool Fs2Operations::FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc) { // avoid compiler warrnings @@ -1501,13 +1504,13 @@ bool Fs2Operations::FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc) return errmsg("This command is not supported for FS2 FW image."); } -bool Fs2Operations::FwGetSection (u_int32_t sectType, std::vector& sectInfo) +bool Fs2Operations::FwGetSection (u_int32_t sectType, std::vector& sectInfo, bool stripedImage) { if (sectType != H_FW_CONF && sectType != H_HASH_FILE) { return errmsg("Hash File section not found in the given image."); } initSectToRead(sectType); - if (!Fs2Verify()) { + if (!Fs2Verify((VerifyCallBack)NULL, stripedImage)) { return false; } if (sectType == H_FW_CONF) { @@ -1574,8 +1577,10 @@ bool Fs2Operations::ReburnNewImage(u_int8_t *data, const char *feature_name, Pro // Re-write the image to the file. if (!WriteImageToFile(_fname, striped_data, striped_length)) { + delete[] striped_data; return false; } + delete[] striped_data; } return true; } @@ -2031,3 +2036,11 @@ bool Fs2Operations::FwShiftDevData(PrintCallBack progressFunc) (void)progressFunc; return errmsg("Shifting device data sections is not supported in FS2 image format."); } + +const char* Fs2Operations::FwGetResetRecommandationStr() +{ + if (!_devName) {// not an mst device + return NULL; + } + return NULL; +} diff --git a/mlxfwops/lib/fs2_ops.h b/mlxfwops/lib/fs2_ops.h index 0fc63db..a17dde7 100644 --- a/mlxfwops/lib/fs2_ops.h +++ b/mlxfwops/lib/fs2_ops.h @@ -59,14 +59,16 @@ public: // virtual bool FwSetGuids(std::vector& userGuids, std::vector& userMacs, bool updateCrc=true, PrintCallBack callBackFunc=(PrintCallBack)NULL); virtual bool FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, ProgressCallBack progressFunc); + virtual bool FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); virtual bool FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); virtual bool FwSetVSD(char* vsdStr, ProgressCallBack progressFunc=(ProgressCallBack)NULL, PrintCallBack printFunc=(PrintCallBack)NULL); virtual bool FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc=(PrintCallBack)NULL); virtual bool FwSetAccessKey(hw_key_t userKey, ProgressCallBack progressFunc=(ProgressCallBack)NULL); virtual bool FwShiftDevData(PrintCallBack progressFunc=(PrintCallBack)NULL); virtual bool FwResetNvData(); + virtual const char* FwGetResetRecommandationStr(); - virtual bool FwGetSection (u_int32_t sectType, std::vector& sectInfo); + virtual bool FwGetSection (u_int32_t sectType, std::vector& sectInfo, bool stripedImage=false); diff --git a/mlxfwops/lib/fs3_ops.cpp b/mlxfwops/lib/fs3_ops.cpp index f5461f4..014c00b 100644 --- a/mlxfwops/lib/fs3_ops.cpp +++ b/mlxfwops/lib/fs3_ops.cpp @@ -33,12 +33,18 @@ #include #include +#include -#include "fs3_ops.h" +#include +#include -#include +#include "fs3_ops.h" #define FS3_FLASH_SIZE 0x400000 +#define FS3_LOG_CHUNK_SIZE 21 + +#define FS3_DFLT_GUID_NUM_TO_ALLOCATE 8 +#define FS3_DFLT_GUID_STEP 1 const u_int32_t Fs3Operations::_itocSignature[4] = { ITOC_ASCII, // Ascii of "MTFW" @@ -191,10 +197,22 @@ bool Fs3Operations::GetDevInfo(u_int8_t *buff) return true; } +bool Fs3Operations::GetRomInfo(u_int8_t *buff, u_int32_t size) +{ + TOCPUn(buff, size/4); + // update _romSect buff + GetSectData(_romSect, (u_int32_t*)buff, size); + // parse rom Info and fill rom_info struct + RomInfo rInfo(_romSect); + rInfo.ParseInfo(); + rInfo.initRomsInfo(&_fwImgInfo.ext_info.roms_info); + return true; +} + -bool Fs3Operations::GetImageInfoFromSection(u_int8_t *buff, u_int8_t sect_type, u_int8_t check_support_only) +bool Fs3Operations::GetImageInfoFromSection(u_int8_t *buff, u_int8_t sect_type, u_int32_t sect_size, u_int8_t check_support_only) { #define EXEC_GET_INFO_OR_GET_SUPPORT(get_info_func, buff, check_support_only) (check_support_only) ? true : get_info_func(buff); @@ -205,6 +223,10 @@ bool Fs3Operations::GetImageInfoFromSection(u_int8_t *buff, u_int8_t sect_type, return EXEC_GET_INFO_OR_GET_SUPPORT(GetImageInfo, buff, check_support_only); case FS3_DEV_INFO: return EXEC_GET_INFO_OR_GET_SUPPORT(GetDevInfo, buff, check_support_only); + case FS3_ROM_CODE: + return check_support_only ? true : GetRomInfo(buff, sect_size); + default: + break; } if (check_support_only) { @@ -215,7 +237,7 @@ bool Fs3Operations::GetImageInfoFromSection(u_int8_t *buff, u_int8_t sect_type, bool Fs3Operations::IsGetInfoSupported(u_int8_t sect_type) { - return GetImageInfoFromSection((u_int8_t*)NULL, sect_type, 1); + return GetImageInfoFromSection((u_int8_t*)NULL, sect_type, 0, 1); } bool Fs3Operations::IsFs3SectionReadable(u_int8_t type, QueryOptions queryOptions) @@ -230,8 +252,7 @@ bool Fs3Operations::IsFs3SectionReadable(u_int8_t type, QueryOptions queryOption return false; } else if (queryOptions.quickQuery) { - // TODO: FS3_ROM_CODE , should be part of IsGetInfoSupported .. - if ( IsGetInfoSupported(type) || type == FS3_ROM_CODE) { + if ( IsGetInfoSupported(type)) { return true; } return false; @@ -315,7 +336,6 @@ bool Fs3Operations::VerifyTOC(u_int32_t dtoc_addr, bool& bad_signature, VerifyCa std::vector buffv(entry_size_in_bytes); u_int8_t *buff = (u_int8_t*)(&(buffv[0])); - if (show_itoc) { cibfw_itoc_entry_dump(&toc_entry, stdout); DumpFs3CRCCheck(toc_entry.type, phys_addr, entry_size_in_bytes, 0, 0, true, verifyCallBackFunc); @@ -327,38 +347,31 @@ bool Fs3Operations::VerifyTOC(u_int32_t dtoc_addr, bool& bad_signature, VerifyCa //printf("-D- flash_addr: %#x, toc_entry_size = %#x, actual sect = %#x, from itoc: %#x\n", flash_addr, toc_entry.size, sect_crc, // toc_entry.section_crc); if (!DumpFs3CRCCheck(toc_entry.type, phys_addr, entry_size_in_bytes, sect_crc, toc_entry.section_crc, false, verifyCallBackFunc)) { + if (toc_entry.device_data) { + _badDevDataSections = true; + } ret_val = false; } else { //printf("-D- toc type : 0x%.8x\n" , toc_entry.type); GetSectData(_fs3ImgInfo.tocArr[section_index].section_data, (u_int32_t*)buff, toc_entry.size * 4); if (IsGetInfoSupported(toc_entry.type)) { - if (!GetImageInfoFromSection(buff, toc_entry.type)) { - return errmsg("Failed to get info from section %d", toc_entry.type); + if (!GetImageInfoFromSection(buff, toc_entry.type, toc_entry.size * 4)) { + ret_val = false; + errmsg("Failed to get info from section %d", toc_entry.type); } } else if (toc_entry.type == FS3_DBG_LOG_MAP) { TOCPUn(buff, toc_entry.size); GetSectData(_fwConfSect, (u_int32_t*)buff, toc_entry.size * 4); - } else if (toc_entry.type == FS3_ROM_CODE) { - // TODO: Need to put the ROM is part of GetImageInfoFromSection function not alone - - TOCPUn(buff, toc_entry.size); - GetSectData(_romSect, (u_int32_t*)buff, toc_entry.size * 4); - RomInfo rInfo(_romSect); - rInfo.ParseInfo(); - rInfo.initRomsInfo(&_fwImgInfo.ext_info.roms_info); - } } } } } else { - - // TODO: print crc error /* printf("-D- Bad ITOC CRC: toc_entry.itoc_entry_crc = %#x, actual crc: %#x, entry_size_in_bytes = %#x\n", toc_entry.itoc_entry_crc, entry_crc, entry_size_in_bytes); */ - ret_val = false; + return errmsg("Bad Itoc Entry CRC. Expected: 0x%x , Actual: 0x%x", toc_entry.itoc_entry_crc, entry_crc); } _fs3ImgInfo.tocArr[section_index].entry_addr = entry_addr; @@ -369,6 +382,7 @@ bool Fs3Operations::VerifyTOC(u_int32_t dtoc_addr, bool& bad_signature, VerifyCa } while (toc_entry.type != FS3_END); _fs3ImgInfo.numOfItocs = section_index - 1; if (!mfg_exists) { + _badDevDataSections = true; return errmsg("No \""MFG_INFO"\" info section."); } return ret_val; @@ -394,21 +408,20 @@ bool Fs3Operations::Fs3Verify(VerifyCallBack verifyCallBackFunc, bool show_itoc, u_int32_t offset; bool bad_signature; - // TODO: We need to check this paramater - _isFullVerify = true; - CntxFindAllImageStart(_ioAccess, cntx_image_start, &cntx_image_num); if (cntx_image_num == 0) { return errmsg("No valid FS3 image found"); } + if (cntx_image_num > 1) { // ATM we support only one valid image + return errmsg("More than one FS3 image found"); + } u_int32_t image_start = cntx_image_start[0]; offset = 0; - // TODO: Check more than one image // Read BOOT //f.set_address_convertor(0, 0); // Put info _fwImgInfo.imgStart = image_start; - _fwImgInfo.cntxLog2ChunkSize = 21; // TODO: should it be hardcoded + _fwImgInfo.cntxLog2ChunkSize = FS3_LOG_CHUNK_SIZE; _fwImgInfo.ext_info.is_failsafe = true; _fwImgInfo.actuallyFailsafe = true; _fwImgInfo.magicPatternFound = 1; @@ -420,15 +433,15 @@ bool Fs3Operations::Fs3Verify(VerifyCallBack verifyCallBackFunc, bool show_itoc, - report_callback(verifyCallBackFunc, "\nFS3 failsafe image\n\n"); // TODO: Do we have non-faisafe image - // TODO: Get BOOT2 - No need to read all always + report_callback(verifyCallBackFunc, "\nFS3 failsafe image\n\n"); + // Get BOOT2 - Only if quickQuery == false offset += FS2_BOOT_START; - FS3_CHECKB2(0, offset, true, PRE_CRC_OUTPUT, verifyCallBackFunc); - + if (queryOptions.quickQuery == false) { + FS3_CHECKB2(0, offset, true, PRE_CRC_OUTPUT, verifyCallBackFunc); + } offset += _fs3ImgInfo.bootSize; _fs3ImgInfo.firstItocIsEmpty = false; // printf("-D- image_start = %#x\n", image_start); - // TODO: Get info of the failsafe from the Image header - no need always failsafe // Go over the ITOC entries u_int32_t sector_size = (_ioAccess->is_flash()) ? _ioAccess->get_sector_size() : FS3_DEFAULT_SECTOR_SIZE; offset = (offset % sector_size == 0) ? offset : (offset + sector_size - offset % 0x1000); @@ -547,14 +560,15 @@ bool Fs3Operations::BurnFs3Image(Fs3Operations &imageOps, ExtBurnParams& burnParams) { u_int8_t is_curr_image_in_odd_chunks; - u_int32_t new_image_start, image_size = 0; + u_int32_t new_image_start, last_img_data_addr = 0; Flash *f = (Flash*)(this->_ioAccess); FImage *fim = (FImage*)(imageOps._ioAccess); u_int8_t *data8 = (u_int8_t *) fim->getBuf(); - if (_fwImgInfo.imgStart != 0) { + if (_fwImgInfo.imgStart != 0 || !burnParams.burnFailsafe) { + // if the burn is not failsafe we also burn the image at 0x0 is_curr_image_in_odd_chunks = 1; new_image_start = 0; } else { @@ -568,165 +582,213 @@ bool Fs3Operations::BurnFs3Image(Fs3Operations &imageOps, return false; } + // update device data sections in itoc array (take them from device if we are burning failsafe) f->set_address_convertor(imageOps._fwImgInfo.cntxLog2ChunkSize, !is_curr_image_in_odd_chunks); - for (int i = 0; i < imageOps._fs3ImgInfo.numOfItocs; i++) { struct toc_info *itoc_info_p = &imageOps._fs3ImgInfo.tocArr[i]; struct cibfw_itoc_entry *toc_entry = &itoc_info_p->toc_entry; // printf("-D- itoc_addr = %#x\n", itoc_info_p->entry_addr); - if (toc_entry->device_data) { - // TODO: Copy the ITOC from Device + if (toc_entry->device_data) {// updare dev_data itoc with the device's dev_data section addr // printf("-D- toc_entry: %#x\n", toc_entry->itoc_entry_crc); - if (!UpdateDevDataITOC(data8, itoc_info_p, _fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs)) { - return false; + if (burnParams.burnFailsafe || !burnParams.useImgDevData) { + // we update the device data entires if : a. we burn failsafe or b. we burn non-failsafe but we take the device data anyway + if(!UpdateDevDataITOC(data8, itoc_info_p, _fs3ImgInfo.tocArr, _fs3ImgInfo.numOfItocs)){ + return false; + } } // printf("-D- After toc_entry: %#x\n", toc_entry->itoc_entry_crc); } else { u_int32_t last_addr_of_itoc = (toc_entry->flash_addr + toc_entry->size) << 2; - image_size = (last_addr_of_itoc > image_size) ? last_addr_of_itoc : image_size; + last_img_data_addr = (last_addr_of_itoc > last_img_data_addr) ? last_addr_of_itoc : last_img_data_addr; } } + // Check that the dev data is not being overridden - // TODO: Check that the dev data is not been overridden - { - u_int32_t zeroes = 0; - int allow_nofs = 0; - - if (!writeImage(burnParams.progressFunc, 16 , data8 + 16, image_size - 16)) { - return false; - } - if (!f->is_flash()) { - return true; - } - // Write new signature - if (!f->write(0, data8, 16, true)) { - return false; - } - bool boot_address_was_updated = true; - // Write new image start address to crspace (for SW reset) - if (!f->update_boot_addr(new_image_start)) { - boot_address_was_updated = false; - } - - if (imageOps._fwImgInfo.ext_info.is_failsafe) { - if (allow_nofs) { - // When burning in nofs, remnant of older image with different chunk size - // may reside on the flash - - // Invalidate all images marking on flash except the one we've just burnt - - u_int32_t cntx_image_start[CNTX_START_POS_SIZE]; - u_int32_t cntx_image_num; - - CntxFindAllImageStart(f, cntx_image_start, &cntx_image_num); - // Address convertor is disabled now - use phys addresses - for (u_int32_t i = 0; i < cntx_image_num; i++) { - if (cntx_image_start[i] != new_image_start) { - if (!f->write(cntx_image_start[i], &zeroes, sizeof(zeroes), true)) { - return false; - } - } - } - } else { - // invalidate previous signature - f->set_address_convertor(imageOps._fwImgInfo.cntxLog2ChunkSize, is_curr_image_in_odd_chunks); - if (!f->write(0, &zeroes, sizeof(zeroes), true)) { - return false; - } - } - } - if (boot_address_was_updated == false) { - report_warn("Failed to update FW boot address. Power cycle the device in order to load the new FW.\n"); - } + // find the lowest dev_data entry addr: + u_int32_t first_dev_data_addr = 0xffffffff; + u_int32_t last_dev_data_address = 0; + for (int i = 0; i < imageOps._fs3ImgInfo.numOfItocs; i++) { + struct toc_info *itoc_info_p = &imageOps._fs3ImgInfo.tocArr[i]; + struct cibfw_itoc_entry *toc_entry = &itoc_info_p->toc_entry; + if (toc_entry->device_data) { + u_int32_t addr_of_itoc = toc_entry->flash_addr << 2; + u_int32_t last_addr_of_itoc = (toc_entry->flash_addr + toc_entry->size) << 2; + first_dev_data_addr = addr_of_itoc < first_dev_data_addr ? addr_of_itoc : first_dev_data_addr; + last_dev_data_address = last_addr_of_itoc > last_dev_data_address ? last_addr_of_itoc : last_dev_data_address; + } + } + //printf("-D- last image addr: 0x%x, first dev data addr: 0x%x\n", last_img_data_addr, first_dev_data_addr); + // compare with last_img_data_addr (last non dev data address) + if (last_img_data_addr >= first_dev_data_addr) { + return errmsg("Failed to burn FW. Device data sections will be overridden by the operation."); + } + + u_int32_t zeroes = 0; + int allow_nofs = 0; + // write the image without the device data sections + if (!writeImage(burnParams.progressFunc, 16 , data8 + 16, last_img_data_addr - 16)) { + return false; + } + // write device data sections if needed + if (!burnParams.burnFailsafe && burnParams.useImgDevData) { + if (!writeImage((ProgressCallBack)NULL, first_dev_data_addr , data8 + first_dev_data_addr, (last_dev_data_address - first_dev_data_addr), true)) { + return false; + } + } + if (!f->is_flash()) { + return true; + } + // Write new signature + if (!f->write(0, data8, 16, true)) { + return false; + } + bool boot_address_was_updated = true; + + // if we access without cache replacement or the burn was non failsafe, update YU bootloaders. + // if we access with cache replacement notify currently running fw of new image start address to crspace (for SW reset) + if (!burnParams.burnFailsafe || f->get_ignore_cache_replacment()) { + boot_address_was_updated = f->update_boot_addr(new_image_start); + } else { + _isfuSupported = Fs3IsfuActivateImage(new_image_start); + boot_address_was_updated = _isfuSupported; + } + + if (imageOps._fwImgInfo.ext_info.is_failsafe) { + if (allow_nofs) { + // When burning in nofs, remnant of older image with different chunk size + // may reside on the flash - + // Invalidate all images marking on flash except the one we've just burnt + + u_int32_t cntx_image_start[CNTX_START_POS_SIZE]; + u_int32_t cntx_image_num; + + CntxFindAllImageStart(f, cntx_image_start, &cntx_image_num); + // Address convertor is disabled now - use phys addresses + for (u_int32_t i = 0; i < cntx_image_num; i++) { + if (cntx_image_start[i] != new_image_start) { + if (!f->write(cntx_image_start[i], &zeroes, sizeof(zeroes), true)) { + return false; + } + } + } + } else { + // invalidate previous signature + f->set_address_convertor(imageOps._fwImgInfo.cntxLog2ChunkSize, is_curr_image_in_odd_chunks); + if (!f->write(0, &zeroes, sizeof(zeroes), true)) { + return false; + } + } + } + if (boot_address_was_updated == false) { + report_warn("Failed to update FW boot address. Power cycle the device in order to load the new FW.\n"); } - // TODO: Update the signature return true; } bool Fs3Operations::Fs3Burn(Fs3Operations &imageOps, ExtBurnParams& burnParams) { - if (imageOps.FwType() != FIT_FS3) { return errmsg("FW image type is not FS3\n"); } bool devIntQueryRes = Fs3IntQuery(); - if (!devIntQueryRes) { + if (!devIntQueryRes && burnParams.burnFailsafe) { return false; } + + if (!burnParams.burnFailsafe) { + // some checks in case we burn in a non-failsafe manner and attempt to integrate existing device + // data sections from device. + if (!burnParams.useImgDevData) { // we will take device data section from device: perform some checks + if (_fs3ImgInfo.itocAddr == 0) { + return errmsg("Cannot extract device data sections: invalid ITOC section. please ignore extracting device data sections."); + } + if (_badDevDataSections) { + return errmsg("Cannot integrate device data sections: device data sections are corrupted. please ignore extracting device data sections."); + } + } else { // we will take device data sections from image: make sure device is not write protected + if (_ioAccess->is_flash() && ((Flash*)_ioAccess)->is_flash_write_protected()) { + return errmsg("Cannot burn device data sections, Flash is write protected."); + } + } + } + // for image we execute full verify to bring all the information needed for ROM Patch if (!imageOps.Fs3IntQuery(true, false)) { return false; } - if (!CheckPSID(imageOps, burnParams.allowPsidChange)) { - return false; - } - // Check if the burnt FW version is OK - if (!CheckFwVersion(imageOps, burnParams.ignoreVersionCheck)) { - // special_ret_val = RC_FW_ALREADY_UPDATED; + Fs3Operations *imgToBurn = &imageOps; + bool createNewImg = false; + std::vector newImageData(imageOps._fwImgInfo.lastImageAddr); + + if (devIntQueryRes && !CheckPSID(imageOps, burnParams.allowPsidChange)) { return false; } - std::vector newImageData(imageOps._fwImgInfo.lastImageAddr); - Fs3Operations *imgToBurn = &imageOps; - bool createNewImg = false; + if (burnParams.burnFailsafe) { - // ROM patchs - if (((burnParams.burnRomOptions == ExtBurnParams::BRO_FROM_DEV_IF_EXIST) && (_fwImgInfo.ext_info.roms_info.exp_rom_found)) || // There is ROM in device and user choses to keep it - ((burnParams.burnRomOptions == ExtBurnParams::BRO_DEFAULT) && (!imageOps._fwImgInfo.ext_info.roms_info.exp_rom_found && _fwImgInfo.ext_info.roms_info.exp_rom_found))) { // No ROM in image and ROM in device - // here we should take rom from device and insert into the image - // i.e if we have rom in image remove it and put the rom from the device else just put rom from device. - // 1. use Fs3ModifySection to integrate _romSect buff with the image , newImageData contains the modified image buffer - std::vector romSect = _romSect; - TOCPUn((u_int32_t*)&romSect[0], romSect.size()/4); - if (!imageOps.Fs3ReplaceSectionInDevImg(FS3_ROM_CODE, FS3_PCI_CODE, true, (u_int8_t*)&newImageData[0], imageOps._fwImgInfo.lastImageAddr, - (u_int32_t*)&romSect[0], (u_int32_t)romSect.size(), true)) { - return errmsg("failed to update ROM in image. %s", imageOps.err()); + // Check if the burnt FW version is OK + if (!CheckFwVersion(imageOps, burnParams.ignoreVersionCheck)) { + return false; } - createNewImg = true; - } - // image vsd patch - if (!burnParams.useImagePs && burnParams.vsdSpecified ) { - // get image info section : - struct toc_info *imageInfoToc; - if (!imageOps.Fs3GetItocInfo(imageOps._fs3ImgInfo.tocArr, imageOps._fs3ImgInfo.numOfItocs, FS3_IMAGE_INFO, imageInfoToc)){ - return errmsg("failed to get Image Info section."); - } - // modify it: - std::vector imageInfoSect = imageInfoToc->section_data; - struct cibfw_image_info image_info; - cibfw_image_info_unpack(&image_info, &imageInfoSect[0]); - strncpy(image_info.vsd, burnParams.userVsd, VSD_LEN); - cibfw_image_info_pack(&image_info, &imageInfoSect[0]); - // re-insert it into the image: - if (!imageOps.Fs3ReplaceSectionInDevImg(FS3_IMAGE_INFO, FS3_FW_ADB, true, (u_int8_t*)&newImageData[0], imageOps._fwImgInfo.lastImageAddr, - (u_int32_t*)&imageInfoSect[0], (u_int32_t)imageInfoSect.size(), true)) { - return errmsg("failed to update image VSD in image. %s", imageOps.err()); + // ROM patchs + if (((burnParams.burnRomOptions == ExtBurnParams::BRO_FROM_DEV_IF_EXIST) && (_fwImgInfo.ext_info.roms_info.exp_rom_found)) || // There is ROM in device and user choses to keep it + ((burnParams.burnRomOptions == ExtBurnParams::BRO_DEFAULT) && (!imageOps._fwImgInfo.ext_info.roms_info.exp_rom_found && _fwImgInfo.ext_info.roms_info.exp_rom_found))) { // No ROM in image and ROM in device + // here we should take rom from device and insert into the image + // i.e if we have rom in image remove it and put the rom from the device else just put rom from device. + // 1. use Fs3ModifySection to integrate _romSect buff with the image , newImageData contains the modified image buffer + std::vector romSect = _romSect; + TOCPUn((u_int32_t*)&romSect[0], romSect.size()/4); + if (!imageOps.Fs3ReplaceSectionInDevImg(FS3_ROM_CODE, FS3_PCI_CODE, true, (u_int8_t*)&newImageData[0], imageOps._fwImgInfo.lastImageAddr, + (u_int32_t*)&romSect[0], (u_int32_t)romSect.size(), true)) { + return errmsg("failed to update ROM in image. %s", imageOps.err()); + } + createNewImg = true; } - createNewImg = true; - } - // create fs3Operation Obj (handl type BUFF) if NEEDED - // open the image buffer - if (createNewImg) { - FwOperations* newImageOps = FwOperationsCreate((void*)&newImageData[0], (void*)&imageOps._fwImgInfo.lastImageAddr, (char*)NULL, FHT_FW_BUFF); - if (!newImageOps) { - return errmsg("Internal error: The prepared image is corrupted."); - } - // 3. verify it - if (!((Fs3Operations*)newImageOps)->Fs3IntQuery(true,false)) { - errmsg("Internal error: The prepared image is corrupted: %s", newImageOps->err()); - newImageOps->FwCleanUp(); - delete newImageOps; - return false; - } - // 4. pass it to BurnFs3Image instead of imageOps - imgToBurn = (Fs3Operations*)newImageOps; - } + // image vsd patch + if (!burnParams.useImagePs && burnParams.vsdSpecified ) { + // get image info section : + struct toc_info *imageInfoToc; + if (!imageOps.Fs3GetItocInfo(imageOps._fs3ImgInfo.tocArr, imageOps._fs3ImgInfo.numOfItocs, FS3_IMAGE_INFO, imageInfoToc)){ + return errmsg("failed to get Image Info section."); + } + // modify it: + std::vector imageInfoSect = imageInfoToc->section_data; + struct cibfw_image_info image_info; + cibfw_image_info_unpack(&image_info, &imageInfoSect[0]); + strncpy(image_info.vsd, burnParams.userVsd, VSD_LEN); + cibfw_image_info_pack(&image_info, &imageInfoSect[0]); + // re-insert it into the image: + if (!imageOps.Fs3ReplaceSectionInDevImg(FS3_IMAGE_INFO, FS3_FW_ADB, true, (u_int8_t*)&newImageData[0], imageOps._fwImgInfo.lastImageAddr, + (u_int32_t*)&imageInfoSect[0], (u_int32_t)imageInfoSect.size(), true)) { + return errmsg("failed to update image VSD in image. %s", imageOps.err()); + } + createNewImg = true; + } + // create fs3Operation Obj (handl type BUFF) if NEEDED + // open the image buffer + if (createNewImg) { + FwOperations* newImageOps = FwOperationsCreate((void*)&newImageData[0], (void*)&imageOps._fwImgInfo.lastImageAddr, (char*)NULL, FHT_FW_BUFF); + if (!newImageOps) { + return errmsg("Internal error: The prepared image is corrupted."); + } + // 3. verify it + if (!((Fs3Operations*)newImageOps)->Fs3IntQuery(true,false)) { + errmsg("Internal error: The prepared image is corrupted: %s", newImageOps->err()); + newImageOps->FwCleanUp(); + delete newImageOps; + return false; + } + // 4. pass it to BurnFs3Image instead of imageOps + imgToBurn = (Fs3Operations*)newImageOps; + } + } bool rc = BurnFs3Image(*imgToBurn, burnParams); if (imgToBurn != &imageOps) { imgToBurn->FwCleanUp(); @@ -804,8 +866,9 @@ bool Fs3Operations::FwReadRom(std::vector& romSect) return true; } -bool Fs3Operations::FwGetSection (u_int32_t sectType, std::vector& sectInfo) +bool Fs3Operations::FwGetSection (u_int32_t sectType, std::vector& sectInfo, bool stripedImage) { + (void) stripedImage; // unused for FS3 //we treat H_FW_CONF as FS3_DBG_LOG_MAP //FwGetSection only supports retrieving FS3_DBG_LOG_MAP section atm. if (sectType != H_FW_CONF && sectType != FS3_DBG_LOG_MAP) { @@ -825,18 +888,27 @@ bool Fs3Operations::FwGetSection (u_int32_t sectType, std::vector& sec return true; } - -bool Fs3Operations::FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc) +bool Fs3Operations::FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc) { - + if (!baseGuid.num_of_guids || !baseGuid.step_size) { + return errmsg("invalid values for number_of_Guids(%d)/step_size(%d) should be: [1..255]", baseGuid.num_of_guids, baseGuid.step_size); + } if (!Fs3UpdateSection(&baseGuid, FS3_MFG_INFO, false, CMD_SET_MFG_GUIDS, callBackFunc)) { return false; } return true; } +bool Fs3Operations::FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc) +{ + // in FS3 default behavior when setting GUIDs / MFG is to assign 8 guids per port with step size of 1 between them. + fs3_guid_t bGuid = {baseGuid, FS3_DFLT_GUID_NUM_TO_ALLOCATE, FS3_DFLT_GUID_STEP}; + return FwSetMFG(bGuid, callBackFunc); +} + bool Fs3Operations::FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, ProgressCallBack progressFunc) { + fs3_guid_t usrGuid; // Avoid Warning because there is no need for progressFunc (void)progressFunc; if (sgParam.userGuids.empty()) { @@ -851,7 +923,18 @@ bool Fs3Operations::FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc, return errmsg("guids override is not set, cannot set device guids"); } - if (!Fs3UpdateSection(&sgParam.userGuids[0], FS3_DEV_INFO, true, CMD_SET_GUIDS, callBackFunc)) { + if (sgParam.numOfGUIDs && sgParam.stepSize) { + // user requested to specify the step and num of guids to be allocated per port + usrGuid.num_of_guids = sgParam.numOfGUIDs; + usrGuid.step_size = sgParam.stepSize; + } else { + // default behavior num_of_guids=8 step_size=1 + usrGuid.num_of_guids = FS3_DFLT_GUID_NUM_TO_ALLOCATE; + usrGuid.step_size = FS3_DFLT_GUID_STEP; + } + usrGuid.uid = sgParam.userGuids[0]; + + if (!Fs3UpdateSection(&usrGuid, FS3_DEV_INFO, true, CMD_SET_GUIDS, callBackFunc)) { return false; } return true; @@ -976,7 +1059,6 @@ bool Fs3Operations::UpdateItocAfterInsert(fs3_section_t sectionType, u_int32_t n bool Fs3Operations::UpdateImageAfterInsert(struct toc_info *tocArr, u_int32_t numOfItocs, u_int8_t* newImgData, u_int32_t newImageSize) { - // Copy data before itocAddr and ITOC header memcpy(newImgData, &_fs3ImgInfo.imageCache[0], _fs3ImgInfo.itocAddr); memcpy(&newImgData[_fs3ImgInfo.itocAddr], _fs3ImgInfo.itocHeader, CIBFW_ITOC_HEADER_SIZE); @@ -985,7 +1067,6 @@ bool Fs3Operations::UpdateImageAfterInsert(struct toc_info *tocArr, u_int32_t nu u_int32_t itocOffset = _fs3ImgInfo.itocAddr + CIBFW_ITOC_HEADER_SIZE + i * CIBFW_ITOC_ENTRY_SIZE; struct toc_info *currItoc = &tocArr[i]; u_int8_t sectType = currItoc->toc_entry.type; - // TODO: What should we do with Itoc Addr u_int32_t sectAddr = currItoc->toc_entry.flash_addr << 2; u_int32_t sectSize = currItoc->toc_entry.size * 4; // Some checks @@ -1132,7 +1213,7 @@ bool Fs3Operations::Fs3GetItocInfo(struct toc_info *tocArr, int num_of_itocs, fs return errmsg("ITOC entry type: %s (%d) not found", GetSectionNameByType(sect_type), sect_type); } -bool Fs3Operations::Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector section_data, guid_t base_uid, +bool Fs3Operations::Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_guid_t base_uid, std::vector &newSectionData) { struct cibfw_mfg_info mfg_info; @@ -1145,20 +1226,28 @@ bool Fs3Operations::Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vect return true; } -bool Fs3Operations::Fs3ChangeUidsFromBase(guid_t base_uid, struct cibfw_guids *guids) +bool Fs3Operations::Fs3ChangeUidsFromBase(fs3_guid_t base_uid, struct cibfw_guids *guids) { - u_int64_t base_uid_64 = base_uid.l | (u_int64_t)base_uid.h << 32; + u_int64_t base_uid_64 = base_uid.uid.l | (u_int64_t)base_uid.uid.h << 32; // Should be put somewhere in common place - u_int64_t base_mac_64 = ((u_int64_t)base_uid.l & 0xffffff) | (((u_int64_t)base_uid.h & 0xffffff00) << 16); + u_int64_t base_mac_64 = ((u_int64_t)base_uid.uid.l & 0xffffff) | (((u_int64_t)base_uid.uid.h & 0xffffff00) << 16); guids->guids[0].uid = base_uid_64; - guids->guids[1].uid = base_uid_64 + 8; + guids->guids[0].num_allocated = base_uid.num_of_guids; + guids->guids[0].step = base_uid.step_size; + guids->guids[1].uid = base_uid_64 + (base_uid.num_of_guids * base_uid.step_size); + guids->guids[1].num_allocated = base_uid.num_of_guids; + guids->guids[1].step = base_uid.step_size; guids->macs[0].uid = base_mac_64; - guids->macs[1].uid = base_mac_64 + 8; + guids->macs[0].num_allocated = base_uid.num_of_guids; + guids->macs[0].step = base_uid.step_size; + guids->macs[1].uid = base_mac_64 + (base_uid.num_of_guids * base_uid.step_size); + guids->macs[1].num_allocated = base_uid.num_of_guids; + guids->macs[1].step = base_uid.step_size; return true; } -bool Fs3Operations::Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector section_data, guid_t base_uid, +bool Fs3Operations::Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_guid_t base_uid, std::vector &newSectionData) { struct cibfw_device_info dev_info; @@ -1175,12 +1264,6 @@ bool Fs3Operations::Fs3UpdateVsdSection(struct toc_info *curr_toc, std::vector VSD_LEN) { - return errmsg("VSD string is too long(%d), max allowed length: %d", (int)len, VSD_LEN); - } strcpy(dev_info.vsd, user_vsd); newSectionData = section_data; memset((u_int8_t*)&newSectionData[0], 0, curr_toc->toc_entry.size * 4); @@ -1319,14 +1402,14 @@ bool Fs3Operations::Fs3UpdateSection(void *new_info, fs3_section_t sect_type, b } if (sect_type == FS3_MFG_INFO) { - guid_t base_uid = *(guid_t*)new_info; + fs3_guid_t base_uid = *(fs3_guid_t*)new_info; type_msg = "GUID"; if (!Fs3UpdateMfgUidsSection(curr_toc, curr_toc->section_data, base_uid, newUidSection)) { return false; } } else if (sect_type == FS3_DEV_INFO) { if (cmd_type == CMD_SET_GUIDS) { - guid_t base_uid = *(guid_t*)new_info; + fs3_guid_t base_uid = *(fs3_guid_t*)new_info; type_msg = "GUID"; if (!Fs3UpdateUidsSection(curr_toc, curr_toc->section_data, base_uid, newUidSection)) { return false; @@ -1582,27 +1665,75 @@ bool Fs3Operations::FwShiftDevData(PrintCallBack progressFunc) std::sort(sortedTocs.begin(), sortedTocs.end(), TocComp(_fwImgInfo.imgStart)); // shift the location of device data sections by SHIFT_SIZE (60kb) - for (std::vector::iterator it = sortedTocs.begin() ; it != sortedTocs.end(); it++) { - if ((*it)->toc_entry.device_data) { - // update the itoc (basically update the flash_addr and itoc entry crc) - struct toc_info *currToc = *it; - if (!Fs3UpdateItocInfo(currToc, ((currToc->toc_entry.flash_addr << 2) - SHIFT_SIZE))) { - PRINT_PROGRESS(progressFunc,(char*)"FAILED\n"); - return false; - } - // write the section to its new place in the flash - if (!writeImage((ProgressCallBack)NULL, getAbsAddr(currToc) , (u_int8_t*)&currToc->section_data[0], (currToc->toc_entry.size << 2), true)) { - PRINT_PROGRESS(progressFunc,(char*)"FAILED\n"); - return false; - } - } - } + for (std::vector::iterator it = sortedTocs.begin() ; it != sortedTocs.end(); it++) { + if ((*it)->toc_entry.device_data) { + // update the itoc (basically update the flash_addr and itoc entry crc) + struct toc_info *currToc = *it; + if (!Fs3UpdateItocInfo(currToc, ((currToc->toc_entry.flash_addr << 2) - SHIFT_SIZE))) { + PRINT_PROGRESS(progressFunc,(char*)"FAILED\n"); + return false; + } + // write the section to its new place in the flash + if (!writeImage((ProgressCallBack)NULL, getAbsAddr(currToc) , (u_int8_t*)&currToc->section_data[0], (currToc->toc_entry.size << 2), true)) { + PRINT_PROGRESS(progressFunc,(char*)"FAILED\n"); + return false; + } + } + } PRINT_PROGRESS(progressFunc,(char*)"OK\n"); - // update itoc section + // update itoc section if (!reburnItocSection(progressFunc)) { return false; } return true; } +const char* Fs3Operations::FwGetResetRecommandationStr() +{ +#if defined(_WIN_) || defined(MST_UL) + // mlxfwreset tool not supported for windows yet + return (const char*)NULL; +#endif + + if (!_isfuSupported) { + return NULL; + } + return "To load new FW run mlxfwreset or reboot machine."; +} + +bool Fs3Operations::Fs3IsfuActivateImage(u_int32_t newImageStart) +{ +#ifndef MST_UL // ISFU not supported for mstflint + int rc; + mfile *mf = NULL; + struct cibfw_register_mfai mfai; + memset(&mfai, 0, sizeof(mfai)); + if (!_devName) {// not an mst device + return true; + } + // send MFRL register + mf = mopen(_devName); + if (!mf) { + return false; + } + /* GET method not supported yet for this register so we cant read->modify->write it + * ill assume the un-needed fields are zero + */ + //rc = reg_access_mfai(mf,REG_ACCESS_METHOD_GET, &mfai); + //if (rc) { + // printf("-D- isfu3 0x%x\n", rc); + // return false; + // } + mfai.address = newImageStart; + mfai.use_address = 1; + rc = reg_access_mfai(mf,REG_ACCESS_METHOD_SET, &mfai); + mclose(mf); + if (rc) { + return false; + } +#else + return ((Flash*)(this->_ioAccess))->update_boot_addr(newImageStart); +#endif + return true; +} diff --git a/mlxfwops/lib/fs3_ops.h b/mlxfwops/lib/fs3_ops.h index d845a48..5639db4 100644 --- a/mlxfwops/lib/fs3_ops.h +++ b/mlxfwops/lib/fs3_ops.h @@ -44,11 +44,7 @@ class Fs3Operations : public FwOperations { public: - Fs3Operations(FBase *ioAccess) : - FwOperations(ioAccess) - { - _isFullVerify = false; - }; + Fs3Operations(FBase *ioAccess) : FwOperations(ioAccess), _isfuSupported(false), _badDevDataSections(false){}; virtual ~Fs3Operations() {}; //virtual void print_type() {printf("-D- FS3 type!\n");}; @@ -68,13 +64,14 @@ public: virtual bool FwSetGuids(sg_params_t& sgParam, PrintCallBack callBack, ProgressCallBack progressFunc); virtual bool FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); - virtual bool FwGetSection (u_int32_t sectType, std::vector& sectInfo); + virtual bool FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL); + virtual bool FwGetSection (u_int32_t sectType, std::vector& sectInfo, bool stripedImage=false); virtual bool FwSetVSD(char* vsdStr, ProgressCallBack progressFunc=(ProgressCallBack)NULL, PrintCallBack printFunc=(PrintCallBack)NULL); virtual bool FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc=(PrintCallBack)NULL); virtual bool FwSetAccessKey(hw_key_t userKey, ProgressCallBack progressFunc=(ProgressCallBack)NULL); virtual bool FwResetNvData(); virtual bool FwShiftDevData(PrintCallBack progressFunc=(PrintCallBack)NULL); - + virtual const char* FwGetResetRecommandationStr(); private: #define CRC_CHECK_OUTPUT CRC_CHECK_OLD")" @@ -136,22 +133,23 @@ private: bool CheckTocSignature(struct cibfw_itoc_header *itoc_header, u_int32_t first_signature); bool DumpFs3CRCCheck(u_int8_t sect_type, u_int32_t sect_addr, u_int32_t sect_size, u_int32_t crc_act, u_int32_t crc_exp, bool ignore_crc = false, VerifyCallBack verifyCallBackFunc = (VerifyCallBack)NULL); - bool GetImageInfoFromSection(u_int8_t *buff, u_int8_t sect_type, u_int8_t check_support_only = 0); + bool GetImageInfoFromSection(u_int8_t *buff, u_int8_t sect_type, u_int32_t sect_size, u_int8_t check_support_only = 0); bool IsGetInfoSupported(u_int8_t sect_type); bool IsFs3SectionReadable(u_int8_t type, QueryOptions queryOptions); bool GetMfgInfo(u_int8_t *buff); bool GetDevInfo(u_int8_t *buff); bool GetImageInfo(u_int8_t *buff); + bool GetRomInfo(u_int8_t *buff, u_int32_t size); bool Fs3IntQuery(bool readRom = true, bool quickQuery=true); bool Fs3Burn(Fs3Operations &imageOps, ExtBurnParams& burnParams); bool BurnFs3Image(Fs3Operations &imageOps, ExtBurnParams& burnParams); bool UpdateDevDataITOC(u_int8_t *image_data, struct toc_info *image_toc_entry, struct toc_info *flash_toc_arr, int flash_toc_size); bool Fs3UpdateSection(void *new_info, fs3_section_t sect_type=FS3_DEV_INFO, bool is_sect_failsafe=true, CommandType cmd_type=CMD_UNKNOWN, PrintCallBack callBackFunc=(PrintCallBack)NULL ); bool Fs3GetItocInfo(struct toc_info *tocArr, int num_of_itocs, fs3_section_t sect_type, struct toc_info *&curr_toc); - bool Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector section_data, guid_t base_uid, + bool Fs3UpdateMfgUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_guid_t base_uid, std::vector &newSectionData); - bool Fs3ChangeUidsFromBase(guid_t base_uid, struct cibfw_guids *guids); - bool Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector section_data, guid_t base_uid, + bool Fs3ChangeUidsFromBase(fs3_guid_t base_uid, struct cibfw_guids *guids); + bool Fs3UpdateUidsSection(struct toc_info *curr_toc, std::vector section_data, fs3_guid_t base_uid, std::vector &newSectionData); bool Fs3UpdateVsdSection(struct toc_info *curr_toc, std::vector section_data, char* user_vsd, std::vector &newSectionData); @@ -186,6 +184,7 @@ private: bool getLastFwSAddr(u_int32_t& lastAddr); bool getFirstDevDataAddr(u_int32_t& firstAddr); bool reburnItocSection(PrintCallBack callBackFunc); + bool Fs3IsfuActivateImage(u_int32_t newImageStart); // this class is for sorting the itoc array by ascending absolute flash_addr used in FwShiftDevData class TocComp { @@ -204,7 +203,8 @@ private: static const SectionInfo _fs3SectionsInfoArr[]; static const u_int32_t _itocSignature[4]; Fs3ImgInfo _fs3ImgInfo; - bool _isFullVerify; + bool _isfuSupported; + bool _badDevDataSections; // set true if during verify one of the device data section is corrupt or mfg section missing }; diff --git a/mlxfwops/lib/fw_ops.cpp b/mlxfwops/lib/fw_ops.cpp index 251afcd..a342c30 100644 --- a/mlxfwops/lib/fw_ops.cpp +++ b/mlxfwops/lib/fw_ops.cpp @@ -98,7 +98,17 @@ int FwOperations::getBufferSignature(u_int8_t* buf, u_int32_t size) return res; } - +const char * FwOperations::err2str(int errNum) +{ + switch(errNum) { + case -4: + return "Found MFA(s) with higher Version, upgrade tool to work with it"; + case -3: + return "File Signature is invalid"; + default: + return "Failed to get MFA Image"; + } +} int FwOperations::getMfaImg(char* fileName, char *psid, u_int8_t **imgbuf) { int res; @@ -108,8 +118,10 @@ int FwOperations::getMfaImg(char* fileName, char *psid, u_int8_t **imgbuf) if (psid == NULL) { return -1; //No psid => no image } + if ((res = mfa_open_file(&mfa_d, fileName))) { - return -1; + res = res < 0 ? res : -1 * res; + return res; } res = mfa_get_image(mfa_d, psid, image_type, (char*)"", imgbuf); @@ -129,7 +141,8 @@ int FwOperations::getMfaImg(u_int8_t* mfa_buf, int size, char *psid, u_int8_t ** return -1; //No psid => no image } if ((res = mfa_open_buf(&mfa_d, mfa_buf, size))) { - return -1; + res = res < 0 ? res : -1 * res; + return res; } res = mfa_get_image(mfa_d, psid, image_type, (char*)"", imgbuf); @@ -147,6 +160,9 @@ void FwOperations::FwCleanUp() if (_fname != NULL) { delete[] _fname; } + if (_devName != NULL) { + delete[] _devName; + } } @@ -156,6 +172,12 @@ void FwOperations::FwInitCom() } +void FwOperations::getSupporteHwId(u_int32_t **supportedHwId, u_int32_t &supportedHwIdNum) +{ + *supportedHwId = _fwImgInfo.supportedHwId; + supportedHwIdNum = _fwImgInfo.supportedHwIdNum; + +} bool FwOperations::checkBoot2(u_int32_t beg, u_int32_t offs, u_int32_t& next, bool fullRead, const char *pref, VerifyCallBack verifyCallBackFunc) { @@ -173,9 +195,13 @@ bool FwOperations::checkBoot2(u_int32_t beg, u_int32_t offs, u_int32_t& next, bo } _fwImgInfo.bootSize = (size + 4) * 4; + // Get absolute address on flash when checking BOOT2 for FS3 image format (for FS2 its always displayed as contiguous) + // Adrianc: why dont we show them both in the same way when running verify. + u_int32_t boot2AbsAddr = (this->FwType() == FIT_FS3 && _ioAccess->is_flash()) ? \ + _ioAccess->get_phys_from_cont(beg, _fwImgInfo.cntxLog2ChunkSize, (_fwImgInfo.imgStart != 0)) : beg; - sprintf(pr, "%s /0x%08x-0x%08x (0x%06x)/ (BOOT2)", pref, offs+beg, - offs+beg+(size+4)*4-1, (size+4)*4); + sprintf(pr, "%s /0x%08x-0x%08x (0x%06x)/ (BOOT2)", pref, offs+boot2AbsAddr, + offs+boot2AbsAddr+(size+4)*4-1, (size+4)*4); if ((_ioAccess->is_flash() && fullRead == true) || !_ioAccess->is_flash()) { Crc16 crc; @@ -347,7 +373,7 @@ bool FwOperations::FwAccessCreate(fw_ops_params_t& fwParams, FBase **ioAccessP) u_int8_t* imgbuf; int sz; if ((sz = getMfaImg(fwParams.fileHndl, fwParams.psid, &imgbuf)) < 0) { - WriteToErrBuff(fwParams.errBuff,"Failed to get MFA Image.", fwParams.errBuffSize); + WriteToErrBuff(fwParams.errBuff, err2str(sz), fwParams.errBuffSize); return false; } *ioAccessP = new FImage; @@ -385,7 +411,7 @@ bool FwOperations::FwAccessCreate(fw_ops_params_t& fwParams, FBase **ioAccessP) u_int8_t* imgbuf; int sz; if ((sz = getMfaImg((u_int8_t*)fwParams.buffHndl, numInfo, fwParams.psid, &imgbuf)) < 0) { - WriteToErrBuff(fwParams.errBuff,"Failed to get MFA Image.", fwParams.errBuffSize); + WriteToErrBuff(fwParams.errBuff, err2str(sz), fwParams.errBuffSize); return false; } *ioAccessP = new FImage; @@ -533,6 +559,9 @@ FwOperations* FwOperations::FwOperationsCreate(fw_ops_params_t& fwParams) if (fwParams.hndlType == FHT_FW_FILE) { fwops->_fname = strcpy(new char[strlen(fwParams.fileHndl)+ 1], fwParams.fileHndl); } + if (fwParams.hndlType == FHT_MST_DEV) { + fwops->_devName = strcpy(new char[strlen(fwParams.mstHndl)+ 1], fwParams.mstHndl); + } return fwops; } @@ -674,27 +703,28 @@ chip_type_t FwOperations::getChipTypeFromHwDevid(u_int32_t hwDevId) { return CT_UNKNOWN; } -// TODO:combine both databases(hwDevData and hwDev2Str) and remove old unsupporded devices i.e tavor arbel sinai +// TODO:combine both databases(hwDevData and hwDev2Str) and remove old unsupporded devices i.e infinihost infinihost_iii_ex infinihost_iii_lx const FwOperations::HwDevData FwOperations::hwDevData[] = { - { "InfiniHost", TAVOR_HW_ID, CT_UNKNOWN, 2, {23108, 0}}, - { "InfiniHost III Ex", ARBEL_HW_ID, CT_UNKNOWN,2 , {25208, 25218, 0}}, - { "InfiniHost III Lx", SINAI_HW_ID, CT_UNKNOWN, 1, {25204, 0}}, + { "InfiniHost", INFINIHOST_HW_ID, CT_UNKNOWN, 2, {23108, 0}}, + { "InfiniHost III Ex", INFINIHOST_III_EX_HW_ID, CT_UNKNOWN,2 , {25208, 25218, 0}}, + { "InfiniHost III Lx", INFINIHOST_III_LX_HW_ID, CT_UNKNOWN, 1, {25204, 0}}, { "ConnectX", CX_HW_ID, CT_CONNECTX, 2, {25408, 25418, 26418, 26438, 26428, 25448, 26448, 26468, 25458, 26458, 26478, 26488, 4097, 4098, 0}}, - { "ConnectX3", CX3_HW_ID, CT_CONNECTX, 2, {4099, 4100, 4101, 4102, - 4103, 4104, 4105, 4106, + { "ConnectX-3", CX3_HW_ID, CT_CONNECTX, 2, {4099, 4100, 4101, 4102, + 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112, 0}}, - { "Connect_IB", CONNECT_IB_HW_ID, CT_CONNECT_IB, 2, {CONNECT_IB_SW_ID, 4114, 4115, 4116, + { "ConnectX-3Pro", CX3_PRO_HW_ID, CT_CONNECTX, 2, {4103,0}}, + { "Connect_IB", CONNECT_IB_HW_ID, CT_CONNECT_IB, 2, {CONNECT_IB_SW_ID, 4114, 4115, 4116, 4117, 4118, 4119, 4120, 4121, 4122, 4123, 4124, 0}}, { "InfiniScale IV", IS4_HW_ID, CT_IS4, 0, {48436, 48437, 48438, 0}}, { "BridgeX", BRIDGEX_HW_ID, CT_BRIDGEX, 0, {64102, 64112, 64122, 0}}, { "SwitchX", SWITCHX_HW_ID, CT_SWITCHX, 0, {51000, 0}}, { "Switch_IB", SWITCH_IB_HW_ID, CT_SWITCH_IB,0, {52000, 0}}, - { "ConnectX4", CX4_HW_ID, CT_CONNECTX, 0, {4115, 0}}, + { "ConnectX-4", CX4_HW_ID, CT_CONNECTX, 0, {4115, 0}}, { (char*)NULL , 0, CT_UNKNOWN, 0, {0}},// zero devid terminator }; @@ -704,16 +734,17 @@ const FwOperations::HwDev2Str FwOperations::hwDev2Str[] = { {"ConnectX-2", CX_HW_ID, 0xB0}, {"ConnectX-3 A0", CX3_HW_ID, 0x00}, {"ConnectX-3 A1", CX3_HW_ID, 0x01}, + {"ConnectX-3Pro", CX3_PRO_HW_ID, 0x0}, {"ConnectX-4", CX4_HW_ID, 0x00}, {"SwitchX A0", SWITCHX_HW_ID, 0x00}, {"SwitchX A1", SWITCHX_HW_ID, 0x01}, {"BridgeX", BRIDGEX_HW_ID, 0xA0}, {"InfiniScale IV A0", IS4_HW_ID, 0xA0}, {"InfiniScale IV A1", IS4_HW_ID, 0xA1}, - {"InfiniHost A0", TAVOR_HW_ID, 0xA0}, - {"InfiniHost A1", TAVOR_HW_ID, 0xA1}, - {"InfiniHost III Lx", SINAI_HW_ID, 0xA0}, - {"InfiniHost III Ex", ARBEL_HW_ID, 0xA0}, + {"InfiniHost A0", INFINIHOST_HW_ID, 0xA0}, + {"InfiniHost A1", INFINIHOST_HW_ID, 0xA1}, + {"InfiniHost III Lx", INFINIHOST_III_LX_HW_ID, 0xA0}, + {"InfiniHost III Ex", INFINIHOST_III_EX_HW_ID, 0xA0}, {"SwitchIB A0", SWITCH_IB_HW_ID, 0x00}, { (char*)NULL , (u_int32_t)0, (u_int8_t)0x00}, // zero device ID terminator }; @@ -1126,10 +1157,10 @@ bool FwOperations::RomInfo::GetExpRomVerForOneRom(u_int32_t verOffset) // Following mlxsign: // 31:24 0 Compatible with UEFI // 23:16 ProductID Product ID: - // 0x1 - CLP implementation for Sinai (MT25408) - // 0x2 - CLP implementation for Hermon DDR (MT25418) - // 0x3 - CLP implementation for Hermon QDR (MT26428) - // 0x4 - CLP implementation for Hermon ETHERNET (MT25448) + // 0x1 - CLP implementation for InfiniHost_III_Lx (MT25408) + // 0x2 - CLP implementation for Connectx DDR (MT25418) + // 0x3 - CLP implementation for Connectx QDR (MT26428) + // 0x4 - CLP implementation for Connectx ETHERNET (MT25448) // 0X10 - PXE // 0x11 - UEFI // 0x12 - CLP with device ID and Version @@ -1144,7 +1175,7 @@ bool FwOperations::RomInfo::GetExpRomVerForOneRom(u_int32_t verOffset) // 15:0 SubMinor version Product sub minor version*. Not valid if // ProductID < 0x10 or == 0x12. // - // 31:16 Device ID The PCI Device ID (ex. 0x634A for Hermon + // 31:16 Device ID The PCI Device ID (ex. 0x634A for Connectx // DDR). Not valid if ProductID < 0x10. // 15:12 Port Number Port number: 0 - Port independent, 1 - Port 1, 2 - Port 2 // 8:11 Reserved @@ -1402,23 +1433,23 @@ const char* FwOperations::expRomType2Str(u_int16_t type) { switch (type) { case 0x1: - return "CLP1 "; + return "CLP1"; case 0x2: - return "CLP2 "; + return "CLP2"; case 0x3: - return "CLP3 "; + return "CLP3"; case 0x4: - return "CLP4 "; + return "CLP4"; case 0xf: - return "CLP "; // hack as 0xf isnt always CLP (its type is defined in the free string inside the ROM) + return "CLP"; // hack as 0xf isnt always CLP (its type is defined in the free string inside the ROM) case 0x10: - return "PXE "; + return "PXE"; case 0x11: - return "UEFI "; + return "UEFI"; case 0x12: - return "CLP "; + return "CLP"; case 0x21: - return "FCODE "; + return "FCODE"; default: return (const char*)NULL; } diff --git a/mlxfwops/lib/fw_ops.h b/mlxfwops/lib/fw_ops.h index af107cb..b1dee77 100644 --- a/mlxfwops/lib/fw_ops.h +++ b/mlxfwops/lib/fw_ops.h @@ -59,7 +59,7 @@ public: FwOperations(FBase *ioAccess) : _ioAccess(ioAccess), _isCached(false), _wasVerified(false), - _quickQuery(false), _printFunc((PrintCallBack)NULL), _fname(NULL), _advErrors(true) + _quickQuery(false), _printFunc((PrintCallBack)NULL), _fname(NULL), _devName(NULL), _advErrors(true) { memset(_sectionsToRead, 0, sizeof(_sectionsToRead)); memset(&_fwImgInfo, 0, sizeof(_fwImgInfo)); @@ -94,14 +94,16 @@ public: virtual bool FwSetGuids(sg_params_t& sgParam, PrintCallBack callBackFunc=(PrintCallBack)NULL, ProgressCallBack progressFunc=(ProgressCallBack)NULL) = 0; + virtual bool FwSetMFG(fs3_guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL) = 0; virtual bool FwSetMFG(guid_t baseGuid, PrintCallBack callBackFunc=(PrintCallBack)NULL) = 0; // use progressFunc when dealing with FS2 image and printFunc when dealing with FS3 image. virtual bool FwSetVSD(char* vsdStr, ProgressCallBack progressFunc=(ProgressCallBack)NULL, PrintCallBack printFunc=(PrintCallBack)NULL) = 0; virtual bool FwSetVPD(char* vpdFileStr, PrintCallBack callBackFunc=(PrintCallBack)NULL) = 0; virtual bool FwSetAccessKey(hw_key_t userKey, ProgressCallBack progressFunc=(ProgressCallBack)NULL) = 0; - virtual bool FwGetSection (u_int32_t sectType, std::vector& sectInfo)= 0; + virtual bool FwGetSection (u_int32_t sectType, std::vector& sectInfo, bool stripedImage=false)= 0; virtual bool FwResetNvData() = 0; virtual bool FwShiftDevData(PrintCallBack progressFunc=(PrintCallBack)NULL) = 0; + virtual const char* FwGetResetRecommandationStr() = 0; void FwCleanUp(); virtual bool FwInit() = 0; @@ -110,13 +112,13 @@ public: //needed for flint low level operations bool FwSwReset(); - + //virtual bool FwBurnBlock(FwOperations &FwImageAccess); // Add call back static FwOperations* FwOperationsCreate(void* fwHndl, void *info, char* psid, fw_hndl_type_t hndlType, char* errBuff=(char*)NULL, int buffSize=0); static FwOperations* FwOperationsCreate(fw_ops_params_t& fwParams); //bool GetExpRomVersionWrapper(); - + void getSupporteHwId(u_int32_t **supportedHwId, u_int32_t &supportedHwIdNum); class MLXFWOP_API RomInfo : ErrMsg { public: @@ -178,6 +180,7 @@ public: bool singleImageBurn; bool noDevidCheck; bool ignoreVersionCheck; + bool useImgDevData; // FS3 image only - take device data sections from image (valid only if burnFailsafe== false) BurnRomOption burnRomOptions; //callback fun @@ -190,7 +193,7 @@ public: ExtBurnParams():userGuidsSpecified(false), userMacsSpecified(false), userUidsSpecified(false), vsdSpecified(false),blankGuids(false), burnFailsafe(true), allowPsidChange(false), useImagePs(false), useImageGuids(false), singleImageBurn(true), noDevidCheck(false), - ignoreVersionCheck(false), burnRomOptions(BRO_DEFAULT), progressFunc(NULL), + ignoreVersionCheck(false), useImgDevData(false), burnRomOptions(BRO_DEFAULT), progressFunc(NULL), userVsd(NULL){} }; @@ -226,6 +229,8 @@ public: bool guidsSpecified; bool uidsSpecified; std::vector userGuids; + u_int8_t numOfGUIDs; // number of GUIDs to allocate for each port. (FS3 image Only) + u_int8_t stepSize; // step size between GUIDs. (FS3 Image Only). }; protected: @@ -338,6 +343,7 @@ protected: PrintCallBack _printFunc; const char* _fname; + const char* _devName; // show advanced error msgs bool _advErrors; @@ -357,7 +363,7 @@ private: static u_int8_t CheckFwFormat(FBase& f, bool getFwFormatFromImg = false); static bool CntxFindMagicPattern (FBase* ioAccess, u_int32_t addr); static void WriteToErrBuff(char* errBuff, const char* errStr, int size); - + static const char * err2str(int errNum); // Methods // Static Members diff --git a/mlxfwops/lib/mlxfwops_com.h b/mlxfwops/lib/mlxfwops_com.h index 766861d..67c1941 100644 --- a/mlxfwops/lib/mlxfwops_com.h +++ b/mlxfwops/lib/mlxfwops_com.h @@ -127,6 +127,11 @@ typedef struct guid { } guid_t; typedef guid_t hw_key_t; +typedef struct fs3_guid { + guid_t uid; + u_int8_t num_of_guids; + u_int8_t step_size; +} fs3_guid_t; typedef struct rom_info { u_int16_t exp_rom_product_id; // 0 - invalid. diff --git a/mstdump/crd_lib/crdump.c b/mstdump/crd_lib/crdump.c index 0ed72cc..ffb5279 100755 --- a/mstdump/crd_lib/crdump.c +++ b/mstdump/crd_lib/crdump.c @@ -19,7 +19,7 @@ * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -30,7 +30,6 @@ * SOFTWARE. */ - #define _GNU_SOURCE #include #include @@ -505,7 +504,7 @@ static int crd_read_line(IN FILE *fd, OUT char *tmp) { int c = fgetc(fd); if (c == '#') { char* _ptr=fgets (tmp, 300, fd); - (void)_ptr;// avoid warnings + (void)_ptr;//avoid warning tmp[0] = 0; continue; } diff --git a/mstdump/crd_lib/crdump.h b/mstdump/crd_lib/crdump.h index 45d34de..b8403e5 100644 --- a/mstdump/crd_lib/crdump.h +++ b/mstdump/crd_lib/crdump.h @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -30,7 +30,6 @@ * SOFTWARE. */ - #ifndef _CRDUMP_H_ #define _CRDUMP_H_ diff --git a/mstdump/crd_main/mstdump.c b/mstdump/crd_main/mstdump.c index 5188ab9..f0f7754 100755 --- a/mstdump/crd_main/mstdump.c +++ b/mstdump/crd_main/mstdump.c @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -30,7 +30,6 @@ * SOFTWARE. */ - #include #include #include diff --git a/mstdump/mstdump_dbs/ConnectIB.csv b/mstdump/mstdump_dbs/ConnectIB.csv index 050d90f..7086530 100755 --- a/mstdump/mstdump_dbs/ConnectIB.csv +++ b/mstdump/mstdump_dbs/ConnectIB.csv @@ -587,8 +587,7 @@ 0x05214c,1, 0x052154,1, 0x052160,4, -0x05217c,1, -0x052194,11, +0x05217c,17, 0x0521c4,3, 0x0521d4,3, 0x0521e4,3, @@ -621,7 +620,7 @@ 0x05255c,9, 0x0525dc,9, 0x052604,1, -0x052654,28, +0x052640,33, 0x0526d0,1, 0x0526e4,1, 0x0526ec,1, @@ -1352,8 +1351,7 @@ 0x0a280c,4, 0x0a2c04,2, 0x0a2c10,2, -0x0a2c1c,2, -0x0a2c28,3, +0x0a2c1c,6, 0x0a2c38,14, 0x0a2c78,9, 0x0a2d04,2, @@ -2111,9 +2109,7 @@ 0x0e0030,1, 0x0e0048,2, 0x0e0058,2, -0x0e0068,11, -0x0e009c,2, -0x0e00ac,14, +0x0e0068,31, 0x0e0180,2, 0x0e01e0,1, 0x0e01e8,3, @@ -2123,9 +2119,7 @@ 0x0e0230,1, 0x0e0248,2, 0x0e0258,2, -0x0e0268,11, -0x0e029c,2, -0x0e02ac,14, +0x0e0268,31, 0x0e0380,2, 0x0e03e0,1, 0x0e03e8,3, @@ -2135,9 +2129,7 @@ 0x0e0430,1, 0x0e0448,2, 0x0e0458,2, -0x0e0468,11, -0x0e049c,2, -0x0e04ac,14, +0x0e0468,31, 0x0e0580,2, 0x0e05e0,1, 0x0e05e8,3, @@ -2147,9 +2139,7 @@ 0x0e0630,1, 0x0e0648,2, 0x0e0658,2, -0x0e0668,11, -0x0e069c,2, -0x0e06ac,14, +0x0e0668,31, 0x0e0780,2, 0x0e07e0,1, 0x0e07e8,3, @@ -2159,9 +2149,7 @@ 0x0e0830,1, 0x0e0848,2, 0x0e0858,2, -0x0e0868,11, -0x0e089c,2, -0x0e08ac,14, +0x0e0868,31, 0x0e0980,2, 0x0e09e0,1, 0x0e09e8,3, @@ -2171,9 +2159,7 @@ 0x0e0a30,1, 0x0e0a48,2, 0x0e0a58,2, -0x0e0a68,11, -0x0e0a9c,2, -0x0e0aac,14, +0x0e0a68,31, 0x0e0b80,2, 0x0e0be0,1, 0x0e0be8,3, @@ -2183,9 +2169,7 @@ 0x0e0c30,1, 0x0e0c48,2, 0x0e0c58,2, -0x0e0c68,11, -0x0e0c9c,2, -0x0e0cac,14, +0x0e0c68,31, 0x0e0d80,2, 0x0e0de0,1, 0x0e0de8,3, @@ -2195,9 +2179,7 @@ 0x0e0e30,1, 0x0e0e48,2, 0x0e0e58,2, -0x0e0e68,11, -0x0e0e9c,2, -0x0e0eac,14, +0x0e0e68,31, 0x0e0f80,2, 0x0e0fe0,1, 0x0e0fe8,3, diff --git a/mstdump/mstdump_dbs/ConnectX4.csv b/mstdump/mstdump_dbs/ConnectX4.csv index 77697d6..2dd5953 100644 --- a/mstdump/mstdump_dbs/ConnectX4.csv +++ b/mstdump/mstdump_dbs/ConnectX4.csv @@ -1,169 +1,178 @@ #Addr, Size, Enable addr -0x000000,16385, -0x010010,8, -0x010104,1, -0x01010c,4, -0x010200,1, -0x010210,4, -0x010300,4, -0x010400,3, -0x010410,1, -0x010444,1, -0x01044c,4, -0x010480,2, +0x000000,16388, +0x010084,1, +0x01008c,2, +0x010180,5, +0x01019c,5, +0x010304,1, +0x0103bc,52, 0x010500,35, -0x010590,1, -0x010600,32, -0x010704,1, -0x01070c,1, -0x010804,2, -0x010814,3, -0x010824,2, -0x010834,3, -0x010844,2, -0x010854,5, -0x010a00,6, -0x011004,1, -0x01100c,4, -0x011204,1, -0x011214,4, -0x011228,1, -0x011244,1, -0x011250,4, -0x011264,1, -0x011274,1, -0x01127c,1, -0x0112a4,1, -0x011300,4, -0x011314,1, -0x01131c,3, -0x011404,2, -0x011430,20, -0x011484,2, -0x011498,5, -0x0114bc,1, -0x0114c8,1, -0x0114d4,2, -0x01150c,3, -0x011524,3, -0x011608,3, -0x011618,4, -0x011680,16, -0x011704,2, -0x011730,20, -0x011784,3, -0x011794,3, -0x0117c0,6, -0x011800,35, -0x0118a4,1, -0x0118ac,1, -0x0118c4,3, -0x0118d4,1, -0x0118dc,2, -0x011900,35, -0x011b04,2, -0x011b14,3, -0x011b24,2, -0x011b38,6, -0x011b60,5, -0x011c04,1, -0x011cb8,18, -0x011d98,1, -0x011e00,1, -0x011e08,1, -0x011e10,1, -0x012000,32, -0x012200,32, -0x012400,32, -0x012600,32, -0x012800,20, -0x012888,22, -0x012900,18, -0x012a00,36, -0x012b00,3, -0x012b10,1, -0x012b20,1, -0x012b30,1, -0x012b40,1, -0x012b50,1, -0x012b60,1, -0x012c00,1, -0x012c08,1, -0x012c10,1, -0x012c18,1, -0x012c20,1, -0x012c28,1, -0x012c30,1, -0x012c38,1, -0x012c50,1, -0x012c58,1, -0x012c60,1, -0x012c68,1, -0x012c70,1, -0x012c78,1, -0x012c80,1, -0x012c88,1, -0x012d00,5, -0x012d20,2, -0x012e00,6, -0x012e20,6, -0x012e80,5, -0x013000,4, -0x013084,1, -0x01308c,2, -0x013180,5, -0x01319c,5, -0x013304,1, -0x0133bc,52, -0x013500,35, -0x013604,1, -0x01360c,1, -0x013624,1, -0x01362c,1, -0x013644,1, -0x01364c,3, -0x013800,1, -0x013808,2, -0x013a04,1, -0x013a0c,4, -0x015000,32, -0x015100,2, -0x015110,3, -0x015120,2, -0x015144,3, +0x010604,1, +0x01060c,1, +0x010624,1, +0x01062c,1, +0x010644,1, +0x01064c,3, +0x010800,1, +0x010808,2, +0x010844,1, +0x01084c,4, +0x011000,32, +0x011200,32, +0x011400,32, +0x011600,32, +0x011800,20, +0x011888,22, +0x011900,18, +0x011a00,36, +0x011b00,3, +0x011b10,1, +0x011b20,1, +0x011b30,1, +0x011b40,1, +0x011b50,1, +0x011b60,1, +0x011b70,1, +0x011c00,128, +0x012000,1, +0x012008,1, +0x012010,1, +0x012018,1, +0x012020,1, +0x012028,1, +0x012030,1, +0x012038,1, +0x012050,1, +0x012058,1, +0x012060,1, +0x012068,1, +0x012070,1, +0x012078,1, +0x012080,1, +0x012088,1, +0x012090,1, +0x012100,5, +0x012120,2, +0x012180,6, +0x0121a0,6, +0x012200,5, +0x012220,6, +0x012240,3, +0x012280,9, +0x0122c0,16, +0x014000,1, +0x014010,10, +0x014104,1, +0x01410c,4, +0x014200,1, +0x014210,4, +0x014300,4, +0x014400,3, +0x014410,1, +0x014444,1, +0x01444c,4, +0x014480,2, +0x014500,35, +0x014590,1, +0x014600,32, +0x014704,1, +0x01470c,1, +0x014804,2, +0x014814,3, +0x014824,2, +0x014834,3, +0x014844,2, +0x014854,5, +0x014a00,4, +0x014a14,2, +0x015004,1, +0x01500c,4, 0x015204,1, -0x01520c,1, -0x015224,1, -0x01522c,1, -0x015234,1, -0x01523c,1, +0x015214,4, +0x015228,1, 0x015244,1, -0x01524c,1, -0x015254,1, -0x01525c,2, -0x015270,1, -0x015280,1, -0x015290,1, -0x0152a0,1, -0x0152b0,1, -0x0152c0,1, -0x0152d0,1, -0x0152e0,1, -0x0152f0,1, -0x015300,1, -0x015310,1, -0x015320,1, -0x015330,1, -0x016800,3, -0x016820,8, +0x015250,4, +0x015274,1, +0x01527c,1, +0x0152a4,1, +0x015300,4, +0x015314,1, +0x01531c,3, +0x015404,2, +0x015430,20, +0x015484,2, +0x015498,5, +0x0154bc,1, +0x0154c8,1, +0x0154d4,2, +0x01550c,3, +0x015524,3, +0x015608,3, +0x015618,4, +0x015680,16, +0x015704,2, +0x015730,20, +0x015784,3, +0x015794,3, +0x0157c0,6, +0x015800,52, +0x0158d4,1, +0x0158dc,1, +0x0158e4,3, +0x0158f4,1, +0x0158fc,52, +0x015b04,2, +0x015b14,3, +0x015b24,2, +0x015b38,6, +0x015b60,5, +0x015c04,1, +0x015cb8,18, +0x015d98,1, +0x015e00,1, +0x015e08,1, +0x015e10,1, +0x016000,32, +0x016100,3, +0x016110,3, +0x016120,2, +0x016144,3, +0x016204,1, +0x01620c,1, +0x016224,1, +0x01622c,1, +0x016234,1, +0x01623c,1, +0x016244,1, +0x01624c,1, +0x016254,1, +0x01625c,2, +0x016270,1, +0x016280,1, +0x016290,1, +0x0162a0,1, +0x0162b0,1, +0x0162c0,1, +0x0162d0,1, +0x0162e0,1, +0x0162f0,1, +0x016300,1, +0x016310,1, +0x016320,1, +0x016330,1, +0x016340,32, +0x016800,9, +0x016840,16, 0x017800,1, -0x017818,1, -0x017834,1, -0x017904,4, -0x017934,1, -0x01794c,1, -0x017970,2, +0x017828,1, +0x017850,1, +0x017878,1, +0x0178a0,13, +0x0179ac,1, +0x0179d8,4, 0x017a00,6, +0x017a20,6, +0x017a40,3, 0x017c00,6, 0x017c20,6, 0x017c40,6, @@ -173,7 +182,7 @@ 0x017cc0,6, 0x017ce0,6, 0x017d00,3, -0x017d10,4, +0x017d10,5, 0x018400,11, 0x018430,2, 0x018440,4, @@ -182,16 +191,16 @@ 0x018640,4, 0x018800,1, 0x018810,4, -0x018c04,1, -0x018c0c,4, +0x018844,1, +0x01884c,4, 0x01a400,7, 0x01a420,2, 0x01a444,1, 0x01a44c,1, 0x01a800,1, 0x01a814,3, -0x01ac04,1, -0x01ac0c,4, +0x01a844,1, +0x01a84c,4, 0x01c400,7, 0x01c500,8, 0x01c544,1, @@ -202,31 +211,32 @@ 0x01c60c,3, 0x01c800,1, 0x01c814,3, -0x01cc04,1, -0x01cc0c,4, +0x01c844,1, +0x01c84c,4, 0x01f400,1, 0x01f408,4, 0x01f41c,3, 0x01f500,2, 0x01f800,1, 0x01f814,3, -0x01fc04,1, -0x01fc0c,4, +0x01f844,1, +0x01f84c,4, 0x020004,1, 0x02000c,4, 0x020080,9, +0x020800,16, +0x020900,192, 0x021004,1, 0x02100c,4, 0x021400,5, -0x021418,1, +0x021418,5, 0x021480,1, 0x021704,2, 0x02173c,17, 0x021804,1, 0x02180c,4, -0x021a00,2, -0x022000,131, -0x022220,4, +0x021840,2, +0x022280,12, 0x022408,6, 0x022444,1, 0x022454,3, @@ -239,86 +249,108 @@ 0x02280c,4, 0x022904,4, 0x022924,4, -0x024000,5, -0x024020,1, -0x024030,8, -0x024058,1, -0x024060,1, -0x024070,9, -0x0240a0,1, -0x0240b0,4, -0x024100,25, +0x024000,34, +0x0240c0,19, +0x024120,10, 0x024200,5, -0x024218,3, -0x0243a0,6, -0x0243bc,26, -0x024428,3, -0x024440,3, -0x024464,1, -0x02446c,1, -0x024474,3, -0x024484,1, -0x02448c,4, -0x024500,1, -0x02450c,7, -0x024530,1, -0x024544,4, -0x024560,1, -0x024570,1, -0x024580,4, -0x0245a4,2, -0x0245b4,3, -0x0245c4,2, -0x0245d4,3, -0x024600,2, -0x02460c,1, -0x024624,3, -0x024674,1, -0x02467c,1, -0x024684,1, -0x02468c,4, -0x024704,1, -0x02470c,4, -0x024780,32, -0x024824,4, -0x024864,6, -0x024888,10, -0x0248b4,3, +0x024220,1, +0x024230,8, +0x024258,1, +0x024260,1, +0x024270,9, +0x0242a0,1, +0x0242b0,4, +0x0242c8,2, +0x024300,5, +0x024318,2, +0x02439c,7, +0x0243bc,17, +0x024424,4, +0x024464,13, +0x0244a4,1, +0x0244ac,3, +0x0244c0,2, +0x0244d0,3, +0x0244e0,3, +0x0244f0,3, +0x024500,3, +0x024510,3, +0x024520,3, +0x024530,3, +0x024888,14, 0x0248c4,1, 0x0248cc,1, 0x0248d4,1, -0x0248dc,7, +0x0248dc,1, +0x0248f0,2, 0x024908,6, 0x024928,6, 0x024968,6, 0x024984,3, 0x024994,1, 0x02499c,6, -0x024a00,14, -0x024a40,8, +0x0249b8,4, +0x024a08,6, +0x024a28,6, +0x024a68,6, +0x024a84,1, +0x024a8c,1, +0x024a94,1, +0x024a9c,9, +0x024ae0,6, +0x024b00,14, +0x024b40,8, +0x024c00,2, +0x024c24,3, +0x024c34,3, 0x025004,6, -0x025800,2, +0x025800,37, 0x026000,99, -0x028000,2, -0x028404,1, -0x02840c,4, +0x026800,10, +0x02682c,1, +0x026840,2, +0x026864,1, +0x02686c,1, +0x026874,3, +0x026884,1, +0x02688c,5, +0x026904,1, +0x02690c,4, +0x026980,33, +0x026a0c,7, +0x026a30,1, +0x026a44,4, +0x026a60,1, +0x026a70,1, +0x026b00,6, +0x026b44,2, +0x026b68,6, +0x026b84,2, +0x026ba8,10, +0x026c00,7, +0x026c44,1, +0x026c4c,1, +0x026c84,1, +0x026c8c,4, +0x026cc4,1, +0x026ccc,4, 0x028800,2, -0x028c04,1, -0x028c0c,4, -0x029004,1, -0x02900c,5, -0x029b20,2, -0x029b30,4, -0x029b50,5, +0x028844,1, +0x02884c,4, +0x029004,7, +0x029b30,2, +0x029b50,4, 0x02a004,1, 0x02a00c,4, +0x02a040,6, 0x02a200,1, -0x02a210,9, -0x02a3fc,1, -0x02a484,16, -0x02a504,16, +0x02a210,8, +0x02a484,1, +0x02a4c0,16, 0x02a780,1, -0x02a790,4, +0x02a790,5, +0x02a7b0,1, +0x02a7c0,1, 0x02a900,1, 0x02aa04,1, 0x02aa0c,4, @@ -328,7 +360,9 @@ 0x02abb4,1, 0x02abbc,1, 0x02abc4,1, -0x02abcc,9, +0x02abcc,1, +0x02abe0,4, +0x02abf4,2, 0x02ac00,2, 0x02ac10,3, 0x02ac44,3, @@ -364,6 +398,9 @@ 0x02ade8,1, 0x02adf0,1, 0x02adf8,1, +0x02ae00,6, +0x02ae20,5, +0x02ae40,4, 0x02c000,6, 0x02c100,5, 0x02c204,1, @@ -371,13 +408,19 @@ 0x02c224,1, 0x02c22c,4, 0x02c244,2, -0x02c400,3, -0x02c418,3, -0x02c434,3, -0x02c504,6, -0x02c534,3, -0x02c54c,1, -0x02c570,3, +0x02c250,5, +0x02c400,2, +0x02c428,2, +0x02c450,2, +0x02c478,2, +0x02c4a0,25, +0x02c5ac,1, +0x02c5d8,4, +0x02c600,6, +0x02c620,6, +0x02c640,6, +0x02c660,6, +0x02c680,3, 0x02c800,3, 0x02c820,6, 0x02c840,6, @@ -398,18 +441,24 @@ 0x02ca20,6, 0x02ca40,6, 0x02ca60,6, -0x02cc00,3, -0x02cc20,9, +0x02ca80,6, +0x02caa0,6, +0x02cac0,6, +0x02cae0,6, +0x02cb00,6, +0x02cb20,6, 0x02cc48,4, +0x02cd00,9, +0x02cd40,17, 0x030004,2, 0x030034,19, 0x030084,2, 0x0300bc,17, 0x030104,2, -0x030138,18, -0x030300,5, -0x030340,1, -0x03034c,1, +0x030138,27, +0x030300,7, +0x030340,2, +0x03034c,2, 0x030384,1, 0x0303c0,16, 0x030404,1, @@ -418,39 +467,45 @@ 0x03080c,4, 0x030c04,1, 0x030c0c,4, -0x030e00,1, -0x031000,7, -0x031100,7, -0x031200,18, +0x030c40,4, +0x031000,11, +0x031100,11, +0x031200,17, +0x031280,6, 0x031304,1, -0x03130c,3, +0x03130c,5, 0x031400,6, 0x031420,1, 0x031444,2, 0x031454,3, 0x031464,2, -0x031474,3, +0x031474,11, 0x031500,14, 0x031540,8, -0x034200,19, -0x034254,21, -0x0342ac,1, +0x031600,13, +0x031640,6, +0x031700,2, +0x034200,24, +0x034280,10, +0x0342ac,2, 0x0342c0,6, -0x0342f0,4, -0x034600,19, -0x034654,21, -0x0346ac,1, +0x0342f0,39, +0x034600,24, +0x034680,10, +0x0346ac,2, 0x0346c0,6, -0x0346f0,4, -0x034c00,10, +0x0346f0,39, +0x034c00,6, +0x034c20,2, 0x034c40,9, 0x034c80,9, -0x034e04,3, +0x034e04,2, +0x034e14,3, 0x034e44,1, 0x034e4c,4, 0x034e80,5, 0x034f04,1, -0x034f20,9, +0x034f18,11, 0x034f80,1, 0x035000,2, 0x035010,3, @@ -459,43 +514,96 @@ 0x035210,3, 0x035244,3, 0x035300,64, -0x037000,5, +0x035410,2, +0x037000,6, 0x03702c,7, -0x037080,4, -0x037094,1, -0x037100,2, +0x037080,10, +0x0370ac,3, +0x037100,4, 0x037200,2, 0x037210,3, 0x037244,3, -0x037300,69, +0x037300,70, 0x03742c,7, -0x037480,4, -0x037494,1, -0x037500,2, +0x037480,10, +0x0374ac,3, +0x037500,4, 0x037600,2, 0x037610,3, 0x037644,3, -0x037700,69, +0x037700,74, 0x038000,3, -0x038104,2, -0x03813c,3, -0x038400,1, -0x038418,1, -0x038434,1, -0x038504,4, -0x038534,1, -0x03854c,1, -0x038570,2, +0x038104,3, +0x03813c,2, +0x038150,3, +0x038400,2, +0x038428,2, +0x038450,2, +0x038478,2, +0x0384a0,22, +0x0385ac,1, +0x0385d8,4, 0x038600,6, +0x038620,6, +0x038640,6, +0x038660,6, +0x038680,3, 0x038800,3, 0x038820,6, 0x038840,6, 0x038860,6, 0x038880,6, -0x038900,20, -0x038958,1, -0x038980,3, -0x0389a0,25, +0x0388a0,6, +0x0388c0,6, +0x038900,28, +0x038978,1, +0x038a40,25, +0x038ac0,16, +0x039000,35, +0x039090,3, +0x039100,35, +0x039190,3, +0x039200,35, +0x039290,3, +0x039300,35, +0x039390,3, +0x039400,35, +0x039490,3, +0x039500,1, +0x039800,3, +0x039884,1, +0x0398c0,16, +0x039904,2, +0x039934,19, +0x039984,2, +0x0399c0,16, +0x039a04,2, +0x039a10,4, +0x039a24,2, +0x039a30,4, +0x039a44,2, +0x039a50,4, +0x039a64,2, +0x039a70,8, +0x039c00,14, +0x039c40,8, +0x039d00,11, +0x039d40,11, +0x039d84,1, +0x039dc0,26, +0x039e30,2, +0x039e44,3, +0x039e54,1, +0x039e5c,2, +0x039e80,2, +0x039e90,3, +0x039ea4,1, +0x039eac,3, +0x039ec0,3, +0x039f00,9, +0x039f40,22, +0x039fa0,6, +0x039fc0,8, 0x03c000,3, 0x03c010,3, 0x03c020,3, @@ -529,7 +637,6 @@ 0x03c930,5, 0x03c950,5, 0x03c970,5, -0x03c990,1, 0x03c9a4,3, 0x03ca78,34, 0x03cb3c,18, @@ -557,36 +664,51 @@ 0x03f210,1, 0x03f300,6, 0x03f320,6, -0x03f340,3, -0x03f360,8, +0x03f380,9, +0x03f3c0,16, 0x050000,1, 0x050008,2, -0x051004,8, -0x052004,1, -0x052078,34, -0x052104,1, -0x05210c,1, -0x052114,1, -0x052124,1, -0x05212c,1, -0x052134,1, -0x052144,1, -0x05214c,1, -0x052154,1, -0x052160,4, -0x05217c,1, -0x052194,11, -0x0521c4,3, -0x0521d4,3, -0x0521e4,3, -0x0521f4,1, -0x0521fc,1, -0x052204,1, -0x05220c,1, -0x052214,1, -0x05221c,1, -0x052234,1, -0x05223c,2, +0x050044,8, +0x050104,1, +0x050178,34, +0x050204,1, +0x05020c,1, +0x050214,1, +0x050224,1, +0x05022c,1, +0x050234,1, +0x05023c,1, +0x050244,1, +0x05024c,1, +0x050254,1, +0x050280,1, +0x0502b0,21, +0x050334,3, +0x050344,3, +0x050354,3, +0x050364,1, +0x05036c,1, +0x050374,1, +0x05037c,1, +0x050384,1, +0x05038c,1, +0x050394,1, +0x05039c,1, +0x0503a4,1, +0x0503ac,1, +0x051004,1, +0x051038,18, +0x051100,2, +0x051144,1, +0x05114c,4, +0x051184,2, +0x051198,2, +0x0511a4,1, +0x0511b0,5, +0x0511d0,6, +0x052100,3, +0x052220,1, +0x052230,5, 0x052260,9, 0x0522c4,3, 0x0522d4,3, @@ -600,37 +722,32 @@ 0x052410,2, 0x05241c,1, 0x052424,1, -0x05242c,23, -0x052490,16, +0x05242c,41, 0x0524d4,1, 0x0524dc,9, -0x05251c,9, -0x05255c,9, -0x0525dc,9, +0x052510,12, +0x052550,12, +0x0525d0,12, 0x052604,1, -0x052654,28, +0x052640,33, 0x0526d0,1, -0x052710,14, -0x0527ec,1, -0x0527fc,40, -0x052c00,3, -0x052c20,6, -0x052c40,6, -0x052c60,6, -0x052c80,6, -0x052ca0,6, -0x052cc0,6, -0x052ce0,6, -0x052d00,6, -0x052d20,6, -0x052e00,32, +0x0526e4,1, +0x0526ec,1, +0x0526f4,1, +0x052710,17, +0x052764,1, +0x052770,6, +0x0527ec,2, +0x052804,4, +0x052840,11, +0x052e74,1, +0x052e7c,1, 0x052e84,1, 0x052e8c,1, 0x052e94,1, 0x052e9c,1, -0x052ea4,1, -0x052eac,1, -0x052eb4,4, +0x052ea4,4, +0x052ec0,1, 0x052ed0,1, 0x052ee0,1, 0x052ef0,1, @@ -650,6 +767,23 @@ 0x052fd0,1, 0x052fe0,1, 0x052ff0,1, +0x053000,54, +0x053400,3, +0x053420,6, +0x053440,6, +0x053460,6, +0x053480,6, +0x0534a0,6, +0x0534c0,6, +0x0534e0,6, +0x053500,6, +0x053520,6, +0x053540,6, +0x053560,6, +0x053600,33, +0x053690,1, +0x0536a0,1, +0x0536b0,1, 0x054004,1, 0x05400c,4, 0x054204,1, @@ -659,15 +793,19 @@ 0x05422c,1, 0x054234,1, 0x054244,1, -0x05424c,1, +0x05424c,3, +0x054304,1, +0x054340,16, 0x054800,1, -0x054810,22, -0x0548a8,16, -0x054928,15, -0x054a00,11, -0x054b0c,3, +0x054810,6, +0x054928,9, +0x054954,4, +0x054a00,14, +0x054a80,6, 0x054c00,5, -0x055000,5, +0x054c20,1, +0x054c30,1, +0x055000,6, 0x055020,24, 0x055100,13, 0x055140,11, @@ -684,28 +822,30 @@ 0x055540,6, 0x055560,6, 0x055580,6, +0x0555a0,6, +0x0555c0,6, +0x0555e0,6, 0x056000,2, -0x056404,1, -0x05640c,4, +0x056044,1, +0x05604c,4, 0x056800,2, -0x056c04,1, -0x056c0c,4, -0x057004,1, -0x05700c,5, +0x056844,1, +0x05684c,4, +0x057004,7, 0x057b20,2, -0x057b30,4, +0x057b30,2, 0x057b50,5, 0x058004,1, 0x05800c,4, 0x058800,7, 0x058820,6, 0x058844,2, -0x058850,9, -0x058880,1, +0x058864,9, 0x058890,1, 0x0588a0,1, 0x0588b0,1, 0x0588c0,1, +0x0588d0,1, 0x058904,3, 0x058978,66, 0x058a84,1, @@ -730,28 +870,33 @@ 0x059870,1, 0x059880,1, 0x059890,1, -0x0598c4,2, +0x0598a0,1, +0x0598d4,2, 0x059900,3, -0x059940,3, -0x059960,8, +0x059980,9, +0x0599c0,32, +0x059a44,3, +0x059a54,1, +0x059a5c,1, 0x059c00,1, -0x059c18,1, -0x059c34,1, -0x059d04,4, -0x059d34,1, -0x059d4c,1, -0x059d70,2, +0x059c28,1, +0x059c50,1, +0x059c78,1, +0x059ca0,20, +0x059dac,1, +0x059dd8,4, 0x059e00,6, +0x059e20,6, +0x059e40,3, 0x05a000,4, 0x05a020,2, 0x05a030,1, -0x05a040,1, -0x05a04c,1, +0x05a04c,2, 0x05a080,5, 0x05a0a0,1, 0x05a0b0,1, 0x05a0c0,1, -0x060004,11, +0x060020,4, 0x060120,4, 0x060144,2, 0x060154,7, @@ -760,8 +905,13 @@ 0x06018c,1, 0x0601a0,4, 0x0601b8,2, +0x0601c4,2, +0x0601e4,7, 0x060204,1, 0x06020c,4, +0x060240,16, +0x060304,1, +0x06030c,1, 0x060400,2, 0x060420,3, 0x060430,1, @@ -785,19 +935,23 @@ 0x060c30,3, 0x061004,1, 0x061010,1, -0x061018,1, -0x061020,2, +0x061018,4, 0x061044,2, 0x061054,3, 0x061100,32, 0x061200,1, 0x061404,1, 0x06140c,4, +0x061440,2, +0x061468,2, +0x061478,2, 0x06180c,8, -0x061904,3, -0x061914,3, -0x061934,3, -0x061a00,4, +0x061908,6, +0x061928,6, +0x061968,6, +0x061988,6, +0x0619a8,6, +0x0619e8,14, 0x062008,5, 0x062024,3, 0x062034,1, @@ -815,6 +969,9 @@ 0x0620d0,1, 0x0620e0,1, 0x0620f4,4, +0x0621c0,2, +0x0621e4,3, +0x0621f4,3, 0x062404,1, 0x06240c,4, 0x062800,12, @@ -828,7 +985,8 @@ 0x06292c,1, 0x062934,1, 0x06293c,2, -0x062950,2, +0x062950,3, +0x062960,2, 0x063000,1, 0x063010,4, 0x063024,1, @@ -849,6 +1007,7 @@ 0x063164,1, 0x06316c,1, 0x063174,1, +0x063180,16, 0x063208,1, 0x063210,1, 0x063218,1, @@ -878,27 +1037,31 @@ 0x064884,2, 0x0648c8,14, 0x065018,2, -0x065040,3, -0x065060,8, -0x065104,5, +0x065080,9, +0x0650c0,16, +0x065104,3, +0x065114,1, 0x065200,3, 0x065220,6, 0x065240,6, 0x065260,6, 0x065280,6, +0x065300,1, 0x065f00,2, 0x066000,2, -0x066018,2, -0x066034,2, -0x066104,6, -0x066134,2, -0x06614c,1, -0x066170,3, +0x066028,2, +0x066050,2, +0x066078,2, +0x0660a0,25, +0x0661ac,1, +0x0661d8,4, 0x066200,6, 0x066220,6, -0x0662c0,1, +0x066240,6, +0x066260,6, +0x066280,3, 0x066400,8, -0x066500,14, +0x066500,16, 0x066550,8, 0x066574,3, 0x070004,1, @@ -909,9 +1072,10 @@ 0x070524,1, 0x07052c,1, 0x070534,1, +0x070540,4, 0x070600,142, 0x070884,2, -0x0708c4,15, +0x0708b4,19, 0x070904,1, 0x070940,16, 0x071000,1, @@ -926,8 +1090,8 @@ 0x07141c,1, 0x071424,1, 0x07142c,1, -0x071504,1, -0x071540,16, +0x071434,1, +0x07143c,1, 0x071800,2, 0x071904,1, 0x071940,16, @@ -972,21 +1136,24 @@ 0x0733a0,1, 0x0733c0,1, 0x0733e0,1, -0x074830,7, -0x074860,8, -0x074884,2, +0x073800,16, +0x074830,4, +0x074884,1, 0x074890,4, 0x074900,6, 0x074920,6, -0x074a00,3, +0x074980,9, +0x0749c0,19, 0x074c00,1, -0x074c18,1, -0x074c34,1, -0x074d04,3, -0x074d34,1, -0x074d4c,1, -0x074d70,2, +0x074c28,1, +0x074c50,1, +0x074c78,1, +0x074ca0,12, +0x074dac,1, +0x074dd8,4, 0x074e00,6, +0x074e20,6, +0x074e40,3, 0x075000,3, 0x075010,2, 0x075020,3, @@ -994,15 +1161,15 @@ 0x078000,20, 0x078054,9, 0x07807c,3, -0x07808c,2, -0x078098,4, +0x07808c,7, 0x078100,5, 0x078118,4, 0x078130,2, 0x078204,2, 0x078244,15, 0x078284,2, -0x0782c4,22, +0x0782c4,17, +0x07830c,4, 0x078320,2, 0x078340,2, 0x078360,2, @@ -1015,15 +1182,17 @@ 0x078804,18, 0x078850,4, 0x078884,1, -0x07889c,1, -0x0788ac,21, +0x07889c,8, +0x0788c0,16, +0x079000,9, +0x079040,16, 0x079804,2, 0x079828,6, 0x079844,2, 0x079868,6, 0x079884,2, 0x0798a8,7, -0x0798d0,8, +0x0798d0,7, 0x079904,1, 0x07990c,1, 0x079914,1, @@ -1042,7 +1211,7 @@ 0x079cfc,4, 0x079d10,2, 0x079d24,1, -0x079d2c,2, +0x079d2c,1, 0x079d80,2, 0x079d8c,1, 0x079f00,6, @@ -1051,8 +1220,7 @@ 0x079f60,6, 0x079fa0,3, 0x079fb0,1, -0x079fc0,3, -0x079fe0,11, +0x07a000,3, 0x07a010,3, 0x07a020,3, 0x07a040,9, @@ -1085,7 +1253,6 @@ 0x07a930,5, 0x07a950,5, 0x07a970,5, -0x07a990,1, 0x07a9a4,3, 0x07aa78,34, 0x07ab3c,18, @@ -1103,18 +1270,22 @@ 0x080340,14, 0x08037c,3, 0x08038c,1, +0x0803c0,2, +0x0803e4,3, +0x0803f4,3, 0x080404,6, 0x080804,2, 0x080874,35, 0x081000,129, 0x081210,4, -0x081224,4, -0x081240,3, +0x081228,3, +0x081240,2, 0x081264,2, 0x081274,3, 0x081284,2, 0x081298,2, -0x081300,2, +0x0812a4,1, +0x0812b4,21, 0x081310,8, 0x081344,1, 0x08134c,1, @@ -1124,13 +1295,19 @@ 0x081384,2, 0x081390,4, 0x081404,2, -0x081474,35, +0x081478,34, 0x081504,2, -0x081518,12, +0x081518,13, +0x081580,5, +0x081598,2, +0x0815a4,8, 0x082000,29, 0x082340,14, 0x08237c,3, 0x08238c,1, +0x0823c0,2, +0x0823e4,3, +0x0823f4,3, 0x082404,1, 0x08240c,4, 0x082804,2, @@ -1138,12 +1315,14 @@ 0x082904,2, 0x082974,35, 0x083000,129, -0x083210,7, +0x083210,6, 0x083244,2, 0x083254,7, 0x083284,1, 0x08328c,1, 0x083294,1, +0x0832a4,1, +0x0832b4,19, 0x083304,2, 0x083310,4, 0x083324,2, @@ -1152,6 +1331,9 @@ 0x084340,14, 0x08437c,3, 0x08438c,1, +0x0843c0,2, +0x0843e4,3, +0x0843f4,3, 0x084404,1, 0x08440c,4, 0x084804,2, @@ -1163,6 +1345,8 @@ 0x085210,7, 0x085240,12, 0x085280,2, +0x0852a4,1, +0x0852b4,3, 0x085304,1, 0x08530c,1, 0x085314,1, @@ -1174,7 +1358,7 @@ 0x085378,2, 0x085384,2, 0x085398,2, -0x085400,7, +0x0853c0,23, 0x086000,2, 0x086020,2, 0x086040,1, @@ -1187,10 +1371,9 @@ 0x0868a0,6, 0x0868c0,6, 0x0868e0,6, -0x086980,3, -0x0869a0,9, -0x0869c8,1, -0x0869d0,3, +0x086900,9, +0x086940,25, +0x0869c0,16, 0x087000,26, 0x087100,1, 0x087108,1, @@ -1210,12 +1393,14 @@ 0x087178,1, 0x087180,10, 0x0871b0,9, +0x087200,1, +0x087208,1, +0x087210,3, 0x090000,17, 0x090060,2, 0x09006c,1, 0x090104,1, -0x090110,12, -0x090180,9, +0x090140,25, 0x0901a8,2, 0x0901c0,9, 0x0901e8,2, @@ -1229,7 +1414,6 @@ 0x090448,1, 0x090500,6, 0x090520,2, -0x090540,1, 0x090564,2, 0x090578,3, 0x091004,3, @@ -1251,38 +1435,41 @@ 0x0931c0,1, 0x093200,3, 0x093404,1, -0x093410,12, +0x093440,16, 0x093504,1, 0x09353c,28, 0x0935b0,2, 0x0935c0,3, -0x094040,3, -0x094080,3, -0x0940a0,9, +0x094000,9, +0x094040,19, +0x0940a0,6, +0x0940c0,1, 0x094800,1, -0x094818,1, -0x094834,1, -0x094904,3, -0x094934,1, -0x09494c,1, -0x094970,2, +0x094828,1, +0x094850,1, +0x094878,1, +0x0948a0,8, +0x0949ac,1, +0x0949d8,4, 0x094a00,6, +0x094a20,6, +0x094a40,3, 0x096000,1, 0x096010,4, -0x096024,4, +0x096028,3, 0x096104,1, -0x09610c,5, +0x09610c,7, 0x096204,1, 0x09620c,4, 0x096488,1, 0x096498,3, -0x0964b0,6, +0x0964b0,4, 0x096504,1, 0x09650c,4, -0x096584,3, +0x096584,4, 0x096600,16, 0x096644,2, -0x096658,3, +0x096658,10, 0x096684,2, 0x0966bc,51, 0x096800,11, @@ -1290,82 +1477,139 @@ 0x0968a0,12, 0x097100,6, 0x097120,1, -0x0a0000,1, -0x0a0008,3, -0x0a0018,4, -0x0a0030,2, -0x0a003c,1, -0x0a0080,1, -0x0a0090,1, -0x0a0804,1, -0x0a080c,4, -0x0a0c00,2, -0x0a0c0c,5, -0x0a0c40,1, -0x0a0c50,4, -0x0a0c70,1, -0x0a0c80,1, -0x0a0ca0,21, +0x0a0000,10, +0x0a0030,4, +0x0a0080,6, +0x0a00a0,8, +0x0a0400,10, +0x0a0460,4, +0x0a0480,6, +0x0a04a0,6, +0x0a0800,14, +0x0a0840,6, +0x0a0860,18, +0x0a0c00,30, +0x0a0c80,2, 0x0a1004,1, 0x0a100c,4, -0x0a1400,2, -0x0a140c,2, -0x0a1440,1, -0x0a1450,4, -0x0a1470,1, -0x0a1480,4, -0x0a14f0,1, -0x0a1804,1, -0x0a180c,4, -0x0a1a00,9, -0x0a1a30,2, -0x0a1a3c,2, -0x0a1a48,4, -0x0a1c00,32, -0x0a1c84,1, -0x0a1d04,1, -0x0a1d18,26, -0x0a2000,32, -0x0a2100,3, -0x0a2110,6, -0x0a212c,4, -0x0a2140,1, -0x0a2200,1, -0x0a2304,1, -0x0a231c,9, +0x0a1044,2, +0x0a1054,4, +0x0a1084,1, +0x0a108c,4, +0x0a10c4,2, +0x0a10d4,4, +0x0a1104,1, +0x0a1140,16, +0x0a1184,1, +0x0a118c,4, +0x0a11c4,1, +0x0a11d0,12, +0x0a1204,1, +0x0a1210,12, +0x0a1244,1, +0x0a1250,12, +0x0a1284,1, +0x0a1290,12, +0x0a12c4,1, +0x0a12cc,5, +0x0a12e4,1, +0x0a12ec,5, +0x0a1304,1, +0x0a130c,5, +0x0a1324,1, +0x0a132c,5, +0x0a1344,1, +0x0a134c,5, +0x0a1364,1, +0x0a136c,5, +0x0a1384,1, +0x0a138c,5, +0x0a13a4,1, +0x0a13ac,5, +0x0a13c4,7, +0x0a13e4,1, +0x0a13ec,1, +0x0a13f4,1, +0x0a13fc,25, +0x0a2004,1, +0x0a200c,4, +0x0a2400,2, +0x0a240c,6, +0x0a2440,1, +0x0a2450,4, +0x0a2468,3, +0x0a2480,1, +0x0a24a0,10, +0x0a24d0,9, 0x0a2804,1, 0x0a280c,4, -0x0a2c04,2, -0x0a2c10,2, -0x0a2c1c,2, -0x0a2c28,3, -0x0a2c38,14, -0x0a2c78,9, -0x0a2d04,2, -0x0a2d40,20, -0x0a2da4,1, -0x0a2dac,1, -0x0a2db4,1, -0x0a2dc0,1, -0x0a4000,14, -0x0a5000,2, -0x0a5018,2, -0x0a5034,2, -0x0a5104,6, -0x0a5134,2, -0x0a514c,1, -0x0a5170,3, -0x0a5200,6, -0x0a5220,6, -0x0a52c0,2, -0x0a6000,3, -0x0a6020,6, -0x0a6040,6, -0x0a6060,6, -0x0a6080,6, -0x0a7000,2, -0x0a7040,3, -0x0a7060,10, +0x0a2c00,2, +0x0a2c0c,2, +0x0a2c40,1, +0x0a2c50,4, +0x0a2c68,3, +0x0a2c88,2, +0x0a2cf0,1, +0x0a3004,1, +0x0a300c,4, +0x0a3040,2, +0x0a3064,3, +0x0a3074,4, +0x0a3200,9, +0x0a3230,2, +0x0a323c,2, +0x0a3248,4, +0x0a3400,1, +0x0a3408,3, +0x0a3418,4, +0x0a3430,2, +0x0a343c,1, +0x0a3480,1, +0x0a3490,1, +0x0a3504,1, +0x0a3510,76, +0x0a4000,32, +0x0a4100,3, +0x0a4110,6, +0x0a412c,4, +0x0a4140,1, +0x0a4304,1, +0x0a4318,10, +0x0a4804,1, +0x0a480c,4, +0x0a4c04,2, +0x0a4c10,2, +0x0a4c1c,6, +0x0a4c38,2, +0x0a4c50,8, +0x0a4c78,19, +0x0a4d04,2, +0x0a4d40,20, +0x0a4da4,1, +0x0a4dac,1, +0x0a4db4,1, +0x0a4dc0,1, +0x0a5000,14, +0x0a6000,2, +0x0a6028,2, +0x0a6050,2, +0x0a6078,2, +0x0a60a0,36, +0x0a61ac,1, +0x0a61d8,4, +0x0a6200,6, +0x0a6220,6, +0x0a6240,6, +0x0a6260,6, +0x0a6280,3, +0x0a6400,3, +0x0a6420,6, +0x0a6440,6, +0x0a6460,6, +0x0a6480,6, +0x0a6500,9, +0x0a6540,18, +0x0a65c0,3, 0x0a8000,10, 0x0a802c,15, 0x0a806c,5, @@ -1374,7 +1618,6 @@ 0x0a8434,6, 0x0a8450,2, 0x0a845c,5, -0x0a8480,1, 0x0a84c4,1, 0x0a84cc,4, 0x0a8604,1, @@ -1406,7 +1649,7 @@ 0x0a9100,10, 0x0a91f4,3, 0x0a920c,35, -0x0a92a8,6, +0x0a92a4,7, 0x0a930c,39, 0x0a940c,35, 0x0a949c,9, @@ -1439,14 +1682,14 @@ 0x0a9f20,6, 0x0a9f40,6, 0x0a9f60,6, -0x0a9f80,3, -0x0a9fa0,23, -0x0aa004,1, -0x0aa00c,4, +0x0a9f80,9, +0x0a9fc0,31, +0x0aa204,1, +0x0aa20c,4, 0x0b0000,2, 0x0b0010,4, -0x0b1000,5, -0x0b1020,10, +0x0b1000,15, +0x0b1040,10, 0x0b1080,20, 0x0b1100,2, 0x0b1110,2, @@ -1503,67 +1746,65 @@ 0x0b1700,8, 0x0b1760,2, 0x0b176c,1, -0x0b1780,8, +0x0b1780,3, +0x0b1790,3, 0x0b17e0,2, 0x0b17ec,1, -0x0b1800,3, -0x0b1820,8, -0x0b2000,3, -0x0b2010,8, -0x0b2080,3, -0x0b20a0,8, -0x0b2100,3, -0x0b2110,8, -0x0b2180,3, -0x0b21a0,8, -0x0b2200,3, -0x0b2210,8, -0x0b2280,3, -0x0b22a0,8, -0x0b2300,3, -0x0b2310,8, -0x0b2380,3, -0x0b23a0,8, -0x0b2400,3, -0x0b2410,8, -0x0b2480,3, -0x0b24a0,8, -0x0b2500,3, -0x0b2510,8, -0x0b2580,3, -0x0b25a0,8, -0x0b2600,3, -0x0b2610,8, -0x0b2680,3, -0x0b26a0,8, -0x0b2700,3, -0x0b2710,8, -0x0b2780,3, -0x0b27a0,8, +0x0b1800,9, +0x0b1840,16, +0x0b2000,2, +0x0b2010,12, +0x0b2080,9, +0x0b20c0,18, +0x0b2110,12, +0x0b2180,9, +0x0b21c0,18, +0x0b2210,12, +0x0b2280,9, +0x0b22c0,18, +0x0b2310,12, +0x0b2380,9, +0x0b23c0,18, +0x0b2410,12, +0x0b2480,9, +0x0b24c0,18, +0x0b2510,12, +0x0b2580,9, +0x0b25c0,18, +0x0b2610,12, +0x0b2680,9, +0x0b26c0,18, +0x0b2710,12, +0x0b2780,9, +0x0b27c0,16, 0x0b2900,1, 0x0b2910,1, -0x0b3000,38, -0x0b3100,3, -0x0b3120,13, -0x0b3160,4, -0x0b3184,5, -0x0b3200,1, -0x0b3220,12, +0x0b3000,151, 0x0b3404,1, 0x0b340c,4, -0x0b3800,64, -0x0b4004,1, -0x0b4010,12, -0x0b4100,3, -0x0b4120,8, -0x0b5000,1, -0x0b5018,1, -0x0b5034,1, -0x0b5104,2, -0x0b5134,1, -0x0b514c,1, -0x0b5170,2, +0x0b3800,73, +0x0b3940,20, +0x0b39a0,4, +0x0b39c4,5, +0x0b3a00,1, +0x0b3a20,8, +0x0b3a44,3, +0x0b4000,7, +0x0b4040,12, +0x0b4100,9, +0x0b4140,16, +0x0b5000,2, +0x0b5028,2, +0x0b5050,2, +0x0b5078,2, +0x0b50a0,5, +0x0b51ac,1, +0x0b51d8,4, 0x0b5200,6, +0x0b5220,6, +0x0b5240,6, +0x0b5260,6, +0x0b5280,3, 0x0b6800,3, 0x0b6820,6, 0x0b6840,6, @@ -1573,725 +1814,1441 @@ 0x0b68c0,6, 0x0b68e0,6, 0x0b6900,6, -0x0c0000,4, -0x0c0058,2, -0x0c0064,1, -0x0c0120,2, -0x0c0130,2, -0x0c0140,1, -0x0c0184,11, -0x0c01c4,3, -0x0c01dc,3, -0x0c0280,13, -0x0c02c0,3, -0x0c0400,16, -0x0c0500,3, -0x0c0804,1, -0x0c080c,4, -0x0c0a7c,1, -0x0c0ae8,6, -0x0c0b20,24, -0x0c0ba0,28, -0x0c0c80,20, -0x0c0d00,3, -0x0c0d20,6, -0x0c0d80,4, -0x0c0da0,1, -0x0c0da8,12, -0x0c0e00,17, -0x0c0e80,4, -0x0c0ec0,6, -0x0c0ee0,6, -0x0c1000,32, -0x0c1084,5, -0x0c10f8,3, -0x0c1108,3, -0x0c1118,7, -0x0c1144,2, -0x0c1160,11, -0x0c1200,13, -0x0c1244,2, -0x0c1268,6, -0x0c12a0,1, -0x0c12c8,6, -0x0c12e8,6, -0x0c1310,1, -0x0c1340,4, -0x0c13e8,8, -0x0c140c,14, -0x0c147c,1, -0x0c1700,2, -0x0c1720,8, -0x0c1800,3, -0x0c1810,3, -0x0c1820,3, -0x0c1830,3, -0x0c1840,3, -0x0c1850,3, -0x0c1860,3, -0x0c1870,3, -0x0c1880,3, -0x0c1890,3, -0x0c18a0,3, -0x0c18b0,3, -0x0c18c0,3, -0x0c18d0,3, -0x0c18e0,3, -0x0c18f0,3, -0x0c1900,68, -0x0c1c00,34, -0x0c1d00,3, -0x0c1d40,4, -0x0c1d84,1, -0x0c1d90,4, -0x0c1e00,3, -0x0c1e20,6, -0x0c1e40,6, -0x0c1e60,6, -0x0c1f80,3, -0x0c1fa0,8, -0x0c2000,1, -0x0c2018,1, -0x0c2034,1, -0x0c2104,1, -0x0c2134,1, -0x0c214c,1, -0x0c2170,2, -0x0c2200,6, -0x0c2400,36, -0x0c24a0,8, -0x0c2500,1, -0x0c2584,7, -0x0c2604,1, -0x0c26f0,70, -0x0c8000,25, -0x0c8068,4, -0x0c807c,4, -0x0c80a0,3, -0x0c80b0,2, -0x0c80c8,6, -0x0c8180,6, -0x0c81a0,6, -0x0c9000,1, -0x0c9018,1, -0x0c9034,1, -0x0c9104,1, -0x0c9134,1, -0x0c914c,1, -0x0c9170,2, -0x0c9200,6, -0x0c9400,3, -0x0c9500,3, -0x0c9520,10, -0x0ca000,3, -0x0ca010,36, -0x0ca0a4,2, -0x0ca0b0,2, -0x0ca0c0,14, -0x0ca100,14, -0x0ca140,5, -0x0ca160,4, -0x0ca180,13, -0x0ca1b8,11, -0x0ca1e8,3, -0x0ca1f8,8, -0x0ca220,6, -0x0ca240,6, -0x0ca260,6, -0x0ca280,6, -0x0ca2a0,6, -0x0ca2c0,6, -0x0ca2e0,6, -0x0ca300,6, -0x0ca320,6, -0x0ca340,6, -0x0ca360,6, -0x0ca400,6, -0x0ca420,6, -0x0ca440,6, -0x0ca460,6, -0x0ca480,6, -0x0ca4a0,6, -0x0ca4c0,6, -0x0ca4e0,6, -0x0ca500,6, -0x0ca520,6, -0x0ca540,6, -0x0ca560,6, -0x0ca580,6, -0x0ca5a0,6, -0x0ca5c0,6, -0x0ca5e0,6, -0x0ca6fc,1, -0x0ca704,1, -0x0ca72c,17, -0x0ca780,16, -0x0ca800,8, -0x0ca824,5, -0x0ca840,8, -0x0ca864,5, -0x0ca880,8, -0x0ca8a4,5, -0x0ca8c0,8, -0x0ca8e4,5, -0x0ca900,8, -0x0ca924,5, -0x0ca940,8, -0x0ca964,5, -0x0ca980,8, -0x0ca9a4,5, -0x0ca9c0,8, -0x0ca9e4,5, -0x0caa00,8, -0x0caa24,5, -0x0caa40,8, -0x0caa64,5, -0x0caa80,8, -0x0caaa4,5, -0x0caac0,8, -0x0caae4,5, -0x0cab00,8, -0x0cab24,5, -0x0cab40,8, -0x0cab64,5, -0x0cab80,8, -0x0caba4,5, -0x0cabc0,8, -0x0cabe4,5, -0x0cac04,6, -0x0cac20,2, -0x0cac30,2, -0x0cac40,2, -0x0cac50,2, -0x0cb000,16, -0x0cb044,1, -0x0cb04c,1, -0x0cb100,16, -0x0cb1f0,6, -0x0cb210,3, -0x0cb220,2, -0x0cb230,3, -0x0cb240,2, -0x0cb250,3, -0x0cb260,2, -0x0cb270,3, -0x0cb280,2, -0x0cb290,3, -0x0cb2a0,2, -0x0cb2b0,3, -0x0cb2c0,2, -0x0cb2d0,3, -0x0cb2e0,2, -0x0cb2f0,3, -0x0cb300,2, -0x0cb310,3, -0x0cb320,2, -0x0cb330,3, -0x0cb340,2, -0x0cb350,3, -0x0cb360,2, -0x0cb370,3, -0x0cb380,2, -0x0cb390,3, -0x0cb3a0,2, -0x0cb3b0,3, -0x0cb3c0,2, -0x0cb3d0,3, -0x0cb3e0,2, -0x0cb3f0,3, -0x0cb400,17, -0x0cb59c,25, -0x0cb700,11, -0x0cb74c,2, -0x0cb760,24, -0x0cb800,19, -0x0cb850,16, -0x0cb89c,1, -0x0cb8b0,9, -0x0cb8e0,1, -0x0cb8f0,3, -0x0cb900,17, -0x0cb958,1, -0x0cb980,1, -0x0cb994,2, -0x0cb9ac,11, -0x0cb9ec,4, -0x0cba00,19, -0x0cba50,16, -0x0cba9c,1, -0x0cbab0,9, -0x0cbae0,1, -0x0cbaf0,3, -0x0cbb00,17, -0x0cbb58,1, -0x0cbb80,1, -0x0cbb94,2, -0x0cbbac,11, -0x0cbbec,4, -0x0cbc00,19, -0x0cbc50,16, -0x0cbc9c,1, -0x0cbcb0,9, -0x0cbce0,1, -0x0cbcf0,3, -0x0cbd00,17, -0x0cbd58,1, -0x0cbd80,1, -0x0cbd94,2, -0x0cbdac,11, -0x0cbdec,4, -0x0cbe00,19, -0x0cbe50,16, -0x0cbe9c,1, -0x0cbeb0,9, -0x0cbee0,1, -0x0cbef0,3, -0x0cbf00,17, -0x0cbf58,1, -0x0cbf80,1, -0x0cbf94,2, -0x0cbfac,11, -0x0cbfec,4, -0x0d0000,7, -0x0d002c,18, +0x0d0000,5, +0x0d002c,1, +0x0d0038,4, +0x0d0054,1, +0x0d0070,1, +0x0d0080,3, +0x0d00a0,6, +0x0d00c0,6, +0x0d0100,3, +0x0d0120,6, +0x0d0140,6, +0x0d0180,8, 0x0d1000,2, 0x0d100c,1, 0x0d1020,13, 0x0d1058,1, 0x0d1060,6, 0x0d1080,1, -0x0d10a0,6, 0x0d1100,2, 0x0d110c,1, 0x0d1120,13, 0x0d1158,1, 0x0d1160,6, 0x0d1180,1, -0x0d11a0,6, 0x0d1200,2, 0x0d120c,1, 0x0d1220,13, 0x0d1258,1, 0x0d1260,6, 0x0d1280,1, -0x0d12a0,6, 0x0d1300,2, 0x0d130c,1, 0x0d1320,13, 0x0d1358,1, 0x0d1360,6, 0x0d1380,1, -0x0d13a0,6, 0x0d1400,14, 0x0d1440,1, 0x0d1448,1, 0x0d1450,6, -0x0d1480,6, +0x0d1480,7, +0x0d14a0,4, 0x0d1500,26, +0x0d1580,14, +0x0d15c0,2, 0x0d1600,4, 0x0d1620,6, 0x0d1640,3, 0x0d1660,6, -0x0d1800,5, -0x0d1820,3, -0x0d1830,3, -0x0d1840,3, +0x0d1700,2, +0x0d170c,1, +0x0d1720,6, +0x0d1800,11, +0x0d1830,7, +0x0d1850,5, +0x0d1870,9, +0x0d18a0,2, 0x0d1a00,1, 0x0d1a08,13, -0x0d1a40,9, +0x0d1a40,11, 0x0d1c00,24, -0x0d1c64,1, -0x0d1c80,6, -0x0d1ca0,3, -0x0d1cb0,2, -0x0d1d00,6, -0x0d1d40,13, -0x0d1d80,8, +0x0d1c64,5, +0x0d1c80,3, +0x0d1c90,2, +0x0d1d00,12, +0x0d1d40,16, +0x0d1d90,4, +0x0d1dc0,12, +0x0d1e00,1, +0x0d1e20,1, +0x0d1e28,10, +0x0d1e5c,7, +0x0d1f00,12, 0x0d2000,2, 0x0d200c,1, 0x0d2020,13, 0x0d2058,1, 0x0d2060,6, 0x0d2080,1, -0x0d20a0,6, 0x0d2100,2, 0x0d210c,1, 0x0d2120,13, 0x0d2158,1, 0x0d2160,6, 0x0d2180,1, -0x0d21a0,6, 0x0d2200,2, 0x0d220c,1, 0x0d2220,13, 0x0d2258,1, 0x0d2260,6, 0x0d2280,1, -0x0d22a0,6, 0x0d2300,2, 0x0d230c,1, 0x0d2320,13, 0x0d2358,1, 0x0d2360,6, 0x0d2380,1, -0x0d23a0,6, 0x0d2400,14, 0x0d2440,1, 0x0d2448,1, 0x0d2450,6, -0x0d2480,6, +0x0d2480,7, +0x0d24a0,4, 0x0d2500,26, +0x0d2580,14, +0x0d25c0,2, 0x0d2600,4, 0x0d2620,6, 0x0d2640,3, 0x0d2660,6, -0x0d2800,5, -0x0d2820,3, -0x0d2830,3, -0x0d2840,3, +0x0d2700,2, +0x0d270c,1, +0x0d2720,6, +0x0d2800,11, +0x0d2830,7, +0x0d2850,5, +0x0d2870,9, +0x0d28a0,2, 0x0d2a00,1, 0x0d2a08,13, -0x0d2a40,9, +0x0d2a40,11, 0x0d2c00,24, -0x0d2c64,1, -0x0d2c80,6, -0x0d2ca0,3, -0x0d2cb0,2, -0x0d2d00,6, -0x0d2d40,13, -0x0d2d80,8, -0x0d3000,8, -0x0d3024,5, -0x0d3040,8, -0x0d3064,5, -0x0d3080,8, -0x0d30a4,5, -0x0d30c0,8, -0x0d30e4,5, -0x0d3100,8, -0x0d3124,5, -0x0d3140,8, -0x0d3164,5, -0x0d3180,8, -0x0d31a4,5, -0x0d31c0,8, -0x0d31e4,5, -0x0d3204,5, -0x0d3220,2, -0x0d3230,2, -0x0d3240,2, +0x0d2c64,5, +0x0d2c80,3, +0x0d2c90,2, +0x0d2d00,12, +0x0d2d40,16, +0x0d2d90,4, +0x0d2dc0,12, +0x0d2e00,1, +0x0d2e20,1, +0x0d2e28,10, +0x0d2e5c,7, +0x0d2f00,12, 0x0d3400,1, -0x0d3418,1, -0x0d3434,1, -0x0d3504,1, -0x0d3534,1, -0x0d354c,1, -0x0d3570,2, +0x0d3428,1, +0x0d3450,1, +0x0d3478,1, +0x0d34a0,5, +0x0d35ac,1, +0x0d35d8,4, 0x0d3600,6, -0x0d3800,19, -0x0d3850,16, -0x0d389c,1, -0x0d38b0,9, -0x0d38e0,1, -0x0d38f0,3, -0x0d3900,17, -0x0d3958,1, -0x0d3980,1, -0x0d3994,2, -0x0d39ac,11, -0x0d39ec,4, -0x0d3a00,19, -0x0d3a50,16, -0x0d3a9c,1, -0x0d3ab0,9, -0x0d3ae0,1, -0x0d3af0,3, -0x0d3b00,17, -0x0d3b58,1, -0x0d3b80,1, -0x0d3b94,2, -0x0d3bac,11, -0x0d3bec,4, -0x0d3c00,11, -0x0d3c4c,2, -0x0d3c60,40, -0x0d3d04,1, -0x0d3d2c,17, -0x0d3d80,16, -0x0d3e00,6, +0x0d3620,6, +0x0d3640,3, +0x0d3e00,3, 0x0d3e20,6, -0x0d3e40,3, -0x0d3e50,1, +0x0d3e40,6, +0x0d3e80,3, +0x0d3e90,1, +0x0d4000,29, +0x0d4078,5, +0x0d4090,2, +0x0d40a0,10, +0x0d4100,93, +0x0d4278,5, +0x0d4290,2, +0x0d42a0,10, +0x0d4300,93, +0x0d4478,5, +0x0d4490,2, +0x0d44a0,10, +0x0d4500,93, +0x0d4678,5, +0x0d4690,2, +0x0d46a0,10, +0x0d4700,94, +0x0d487c,1, +0x0d4a00,8, +0x0d4a24,15, +0x0d4a64,23, +0x0d4ac4,6, +0x0d4b00,4, +0x0d4b20,3, +0x0d4c00,2, +0x0d4c40,14, +0x0d4c80,9, +0x0d4d00,9, +0x0d4d2c,1, +0x0d4d80,9, +0x0d4e00,2, +0x0d4e0c,1, +0x0d4e14,5, +0x0d4e2c,1, +0x0d4e34,5, +0x0d4e4c,1, +0x0d4e54,5, +0x0d4e6c,1, +0x0d4e74,5, +0x0d4e8c,1, +0x0d4e94,5, +0x0d4eac,1, +0x0d4eb4,3, +0x0d5000,29, +0x0d5078,5, +0x0d5090,2, +0x0d50a0,10, +0x0d5100,93, +0x0d5278,5, +0x0d5290,2, +0x0d52a0,10, +0x0d5300,93, +0x0d5478,5, +0x0d5490,2, +0x0d54a0,10, +0x0d5500,93, +0x0d5678,5, +0x0d5690,2, +0x0d56a0,10, +0x0d5700,94, +0x0d587c,1, +0x0d5a00,8, +0x0d5a24,15, +0x0d5a64,23, +0x0d5ac4,6, +0x0d5b00,4, +0x0d5b20,3, +0x0d5c00,2, +0x0d5c40,14, +0x0d5c80,9, +0x0d5d00,9, +0x0d5d2c,1, +0x0d5d80,9, +0x0d5e00,2, +0x0d5e0c,1, +0x0d5e14,5, +0x0d5e2c,1, +0x0d5e34,5, +0x0d5e4c,1, +0x0d5e54,5, +0x0d5e6c,1, +0x0d5e74,5, +0x0d5e8c,1, +0x0d5e94,5, +0x0d5eac,1, +0x0d5eb4,3, +0x0d6000,14, +0x0d6070,3, +0x0d6080,6, +0x0d6100,9, +0x0d6204,8, +0x0d6240,13, +0x0d6280,16, +0x0d6400,8, +0x0d6424,15, +0x0d6464,15, +0x0d64a4,15, +0x0d64e4,23, +0x0d6544,6, +0x0d6580,10, +0x0d65ac,1, +0x0d65b4,5, +0x0d65cc,1, +0x0d65d4,5, +0x0d65ec,1, +0x0d65f4,13, +0x0d6680,7, +0x0d66a0,5, +0x0d66c0,5, +0x0d66e0,4, +0x0d6800,19, +0x0d6850,10, +0x0d6880,19, +0x0d68d0,10, +0x0d6900,19, +0x0d6950,10, +0x0d6980,19, +0x0d69d0,10, +0x0d6a00,19, +0x0d6a50,10, +0x0d6a80,19, +0x0d6ad0,10, +0x0d6b00,19, +0x0d6b50,10, +0x0d6b80,19, +0x0d6bd0,10, +0x0d6c00,19, +0x0d6c50,10, +0x0d6c84,1, +0x0d6c94,8, +0x0d6cb8,9, +0x0d6ce0,4, 0x0d8000,6, 0x0d8020,3, 0x0d8030,3, 0x0d8040,6, -0x0d8060,4, -0x0d8080,6, -0x0d8100,28, +0x0d8060,17, +0x0d80c0,38, +0x0d8180,1, 0x0d8400,2, -0x0d8418,2, -0x0d8434,2, -0x0d8504,4, -0x0d8534,2, -0x0d854c,1, -0x0d8570,2, +0x0d8428,2, +0x0d8450,2, +0x0d8478,2, +0x0d84a0,16, +0x0d85ac,1, +0x0d85d8,4, 0x0d8600,6, 0x0d8620,6, -0x0d8800,1, -0x0d8820,13, -0x0d8858,8, -0x0d8900,12, -0x0d8984,1, -0x0d89bc,18, -0x0d8a20,13, -0x0d8a58,8, -0x0d8b00,12, -0x0d8b84,1, -0x0d8bbc,17, -0x0d9000,6, -0x0d9020,6, -0x0d9048,3, -0x0d9080,6, -0x0d909c,1, -0x0d90a4,2, -0x0d90b8,3, -0x0d9100,5, -0x0d9120,5, -0x0d9190,10, -0x0d9200,12, -0x0d9234,15, -0x0d9280,26, -0x0d9300,2, -0x0d9320,1, -0x0d9404,4, -0x0d9418,16, -0x0d9460,3, -0x0d9600,7, -0x0d9644,9, -0x0d9680,6, -0x0d96a0,2, -0x0d9800,6, -0x0d9820,6, -0x0d9848,3, -0x0d9880,6, -0x0d989c,1, -0x0d98a4,2, -0x0d98b8,3, -0x0d9900,5, -0x0d9920,5, -0x0d9990,10, -0x0d9a00,12, -0x0d9a34,15, -0x0d9a80,26, -0x0d9b00,2, -0x0d9b20,1, -0x0d9c04,4, -0x0d9c18,16, -0x0d9c60,3, -0x0d9e00,7, -0x0d9e44,9, -0x0d9e80,6, -0x0d9ea0,2, -0x0db000,4, -0x0db018,18, -0x0db100,4, -0x0db118,18, -0x0db200,8, -0x0db300,6, -0x0db320,5, -0x0db340,6, -0x0db360,5, -0x0db380,6, -0x0db400,3, -0x0db420,8, -0x0db500,10, -0x0db544,2, -0x0db55c,9, -0x0db584,7, -0x0db5a4,2, -0x0db5b8,3, -0x0db600,2, -0x0dbfc4,13, -0x0dc000,366, -0x0dc800,366, +0x0d8640,6, +0x0d8660,6, +0x0d8680,3, +0x0d8800,2, +0x0d9000,35, +0x0d9100,26, +0x0d916c,4, +0x0d9180,2, +0x0d91a0,1, +0x0d91c0,9, +0x0d91e8,1, +0x0d9200,6, +0x0d9220,6, +0x0d9248,3, +0x0d9280,6, +0x0d929c,1, +0x0d92a4,2, +0x0d92b8,9, +0x0d9304,4, +0x0d9328,3, +0x0d9340,6, +0x0d9400,1, +0x0d9410,2, +0x0d9424,2, +0x0d9434,1, +0x0d9444,1, +0x0d9480,27, +0x0d9500,6, +0x0d9520,12, +0x0d9700,7, +0x0d9744,9, +0x0d976c,2, +0x0d9780,6, +0x0d97a0,2, +0x0d9800,35, +0x0d9900,26, +0x0d996c,4, +0x0d9980,2, +0x0d99a0,1, +0x0d99c0,9, +0x0d99e8,1, +0x0d9a00,6, +0x0d9a20,6, +0x0d9a48,3, +0x0d9a80,6, +0x0d9a9c,1, +0x0d9aa4,2, +0x0d9ab8,9, +0x0d9b04,4, +0x0d9b28,3, +0x0d9b40,6, +0x0d9c00,1, +0x0d9c10,2, +0x0d9c24,2, +0x0d9c34,1, +0x0d9c44,1, +0x0d9c80,27, +0x0d9d00,6, +0x0d9d20,12, +0x0d9f00,7, +0x0d9f44,9, +0x0d9f6c,2, +0x0d9f80,6, +0x0d9fa0,2, +0x0db000,1028, +0x0dc018,18, +0x0dc100,4, +0x0dc118,18, +0x0dc200,12, +0x0dc300,6, +0x0dc320,5, +0x0dc340,6, +0x0dc360,5, +0x0dc380,6, +0x0dc400,9, +0x0dc440,26, +0x0dc4c4,1, +0x0dc4cc,1, +0x0dc4d4,1, +0x0dc50c,7, +0x0dc544,2, +0x0dc55c,9, +0x0dc584,7, +0x0dc5a4,2, +0x0dc5b8,2, +0x0dc5c4,2, +0x0dc5d8,2, +0x0dc600,2, +0x0dcfbc,15, +0x0dd000,14, +0x0dd040,8, +0x0dd104,1, +0x0dd10c,1, +0x0dd200,8, +0x0dd244,2, +0x0dd268,18, +0x0dd404,1, +0x0dd440,40, +0x0dd504,3, +0x0dd514,3, +0x0dd524,3, +0x0dd534,3, +0x0dd544,3, +0x0dd554,3, +0x0dd564,3, +0x0dd574,3, +0x0dd584,3, +0x0dd594,3, +0x0dd5a4,3, +0x0dd5b4,3, +0x0dd604,2, +0x0dd640,16, +0x0dd684,3, +0x0dd704,2, +0x0dd740,18, +0x0ddc00,4, +0x0ddc80,1, +0x0ddd00,6, +0x0ddd20,6, +0x0ddd40,6, +0x0ddd80,1, +0x0dde00,3, +0x0dde20,10, +0x0dde50,6, +0x0dde80,9, +0x0ddec0,16, +0x0de000,123, +0x0de200,2, +0x0de20c,3, +0x0de220,2, +0x0de22c,3, +0x0de240,2, +0x0de24c,3, +0x0de260,2, +0x0de26c,3, +0x0de280,2, +0x0de28c,3, +0x0de2a0,2, +0x0de2ac,3, +0x0de2c0,2, +0x0de2cc,3, +0x0de2e0,2, +0x0de2ec,3, +0x0de300,2, +0x0de30c,3, +0x0de320,2, +0x0de32c,3, +0x0de340,2, +0x0de34c,3, +0x0de360,2, +0x0de36c,3, +0x0de380,2, +0x0de38c,3, +0x0de3a0,2, +0x0de3ac,3, +0x0de3c0,2, +0x0de3cc,3, +0x0de3e0,2, +0x0de3ec,3, +0x0de400,123, +0x0de600,2, +0x0de60c,3, +0x0de620,2, +0x0de62c,3, +0x0de640,2, +0x0de64c,3, +0x0de660,2, +0x0de66c,3, +0x0de680,2, +0x0de68c,3, +0x0de6a0,2, +0x0de6ac,3, +0x0de6c0,2, +0x0de6cc,3, +0x0de6e0,2, +0x0de6ec,3, +0x0de700,2, +0x0de70c,3, +0x0de720,2, +0x0de72c,3, +0x0de740,2, +0x0de74c,3, +0x0de760,2, +0x0de76c,3, +0x0de780,2, +0x0de78c,3, +0x0de7a0,2, +0x0de7ac,3, +0x0de7c0,2, +0x0de7cc,3, +0x0de7e0,2, +0x0de7ec,3, +0x0de800,123, +0x0dea00,2, +0x0dea0c,3, +0x0dea20,2, +0x0dea2c,3, +0x0dea40,2, +0x0dea4c,3, +0x0dea60,2, +0x0dea6c,3, +0x0dea80,2, +0x0dea8c,3, +0x0deaa0,2, +0x0deaac,3, +0x0deac0,2, +0x0deacc,3, +0x0deae0,2, +0x0deaec,3, +0x0deb00,2, +0x0deb0c,3, +0x0deb20,2, +0x0deb2c,3, +0x0deb40,2, +0x0deb4c,3, +0x0deb60,2, +0x0deb6c,3, +0x0deb80,2, +0x0deb8c,3, +0x0deba0,2, +0x0debac,3, +0x0debc0,2, +0x0debcc,3, +0x0debe0,2, +0x0debec,3, +0x0dec00,123, +0x0dee00,2, +0x0dee0c,3, +0x0dee20,2, +0x0dee2c,3, +0x0dee40,2, +0x0dee4c,3, +0x0dee60,2, +0x0dee6c,3, +0x0dee80,2, +0x0dee8c,3, +0x0deea0,2, +0x0deeac,3, +0x0deec0,2, +0x0deecc,3, +0x0deee0,2, +0x0deeec,3, +0x0def00,2, +0x0def0c,3, +0x0def20,2, +0x0def2c,3, +0x0def40,2, +0x0def4c,3, +0x0def60,2, +0x0def6c,3, +0x0def80,2, +0x0def8c,3, +0x0defa0,2, +0x0defac,3, +0x0defc0,2, +0x0defcc,3, +0x0defe0,2, +0x0defec,3, +0x0df000,123, +0x0df200,2, +0x0df20c,3, +0x0df220,2, +0x0df22c,3, +0x0df240,2, +0x0df24c,3, +0x0df260,2, +0x0df26c,3, +0x0df280,2, +0x0df28c,3, +0x0df2a0,2, +0x0df2ac,3, +0x0df2c0,2, +0x0df2cc,3, +0x0df2e0,2, +0x0df2ec,3, +0x0df300,2, +0x0df30c,3, +0x0df320,2, +0x0df32c,3, +0x0df340,2, +0x0df34c,3, +0x0df360,2, +0x0df36c,3, +0x0df380,2, +0x0df38c,3, +0x0df3a0,2, +0x0df3ac,3, +0x0df3c0,2, +0x0df3cc,3, +0x0df3e0,2, +0x0df3ec,3, +0x0df400,2, 0x0e0000,3, -0x0e001c,2, -0x0e0030,1, +0x0e0010,2, +0x0e001c,1, +0x0e0024,4, 0x0e0048,2, 0x0e0058,2, -0x0e0068,11, -0x0e009c,2, -0x0e00ac,14, -0x0e0180,2, +0x0e0068,31, +0x0e00f0,1, +0x0e00fc,35, 0x0e01e0,1, -0x0e01e8,3, -0x0e01f8,1, -0x0e0200,3, -0x0e021c,2, -0x0e0230,1, -0x0e0248,2, -0x0e0258,2, -0x0e0268,11, -0x0e029c,2, -0x0e02ac,14, -0x0e0380,2, -0x0e03e0,1, -0x0e03e8,3, -0x0e03f8,1, +0x0e01e8,5, +0x0e0204,5, +0x0e021c,1, +0x0e0300,16, 0x0e0400,3, -0x0e041c,2, -0x0e0430,1, +0x0e0410,2, +0x0e041c,1, +0x0e0424,4, 0x0e0448,2, 0x0e0458,2, -0x0e0468,11, -0x0e049c,2, -0x0e04ac,14, -0x0e0580,2, +0x0e0468,31, +0x0e04f0,1, +0x0e04fc,35, 0x0e05e0,1, -0x0e05e8,3, -0x0e05f8,1, -0x0e0600,3, -0x0e061c,2, -0x0e0630,1, -0x0e0648,2, -0x0e0658,2, -0x0e0668,11, -0x0e069c,2, -0x0e06ac,14, -0x0e0780,2, -0x0e07e0,1, -0x0e07e8,3, -0x0e07f8,1, +0x0e05e8,5, +0x0e0604,5, +0x0e061c,1, +0x0e0700,16, 0x0e0800,3, -0x0e081c,2, -0x0e0830,1, +0x0e0810,2, +0x0e081c,1, +0x0e0824,4, 0x0e0848,2, 0x0e0858,2, -0x0e0868,11, -0x0e089c,2, -0x0e08ac,14, -0x0e0980,2, +0x0e0868,31, +0x0e08f0,1, +0x0e08fc,35, 0x0e09e0,1, -0x0e09e8,3, -0x0e09f8,1, -0x0e0a00,3, -0x0e0a1c,2, -0x0e0a30,1, -0x0e0a48,2, -0x0e0a58,2, -0x0e0a68,11, -0x0e0a9c,2, -0x0e0aac,14, -0x0e0b80,2, -0x0e0be0,1, -0x0e0be8,3, -0x0e0bf8,1, +0x0e09e8,5, +0x0e0a04,5, +0x0e0a1c,1, +0x0e0b00,16, 0x0e0c00,3, -0x0e0c1c,2, -0x0e0c30,1, +0x0e0c10,2, +0x0e0c1c,1, +0x0e0c24,4, 0x0e0c48,2, 0x0e0c58,2, -0x0e0c68,11, -0x0e0c9c,2, -0x0e0cac,14, -0x0e0d80,2, +0x0e0c68,31, +0x0e0cf0,1, +0x0e0cfc,35, 0x0e0de0,1, -0x0e0de8,3, -0x0e0df8,1, -0x0e0e00,3, -0x0e0e1c,2, -0x0e0e30,1, -0x0e0e48,2, -0x0e0e58,2, -0x0e0e68,11, -0x0e0e9c,2, -0x0e0eac,14, -0x0e0f80,2, -0x0e0fe0,1, -0x0e0fe8,3, -0x0e0ff8,1, -0x0e1400,8, -0x0e1450,3, -0x0e1460,3, -0x0e1474,5, -0x0e14a0,8, -0x0e14e0,7, -0x0e1504,1, -0x0e1540,16, -0x0e15f0,3, -0x0e1604,1, -0x0e1640,16, +0x0e0de8,5, +0x0e0e04,5, +0x0e0e1c,1, +0x0e0f00,16, +0x0e1000,3, +0x0e1010,2, +0x0e101c,1, +0x0e1024,4, +0x0e1048,2, +0x0e1058,2, +0x0e1068,31, +0x0e10f0,1, +0x0e10fc,35, +0x0e11e0,1, +0x0e11e8,5, +0x0e1204,5, +0x0e121c,1, +0x0e1300,16, +0x0e1400,3, +0x0e1410,2, +0x0e141c,1, +0x0e1424,4, +0x0e1448,2, +0x0e1458,2, +0x0e1468,31, +0x0e14f0,1, +0x0e14fc,35, +0x0e15e0,1, +0x0e15e8,5, +0x0e1604,5, +0x0e161c,1, 0x0e1700,16, -0x0e1a00,4, -0x0e2000,1, -0x0e2018,1, -0x0e2034,1, -0x0e2104,1, -0x0e2134,1, -0x0e214c,1, -0x0e2170,2, -0x0e2200,6, -0x0e2420,2, -0x0e2430,10, -0x0e2460,6, -0x0e2480,6, -0x0e24a0,3, -0x0e2504,4, -0x0e2600,16, -0x0e2644,5, -0x0e2660,6, -0x0e2804,8, -0x0e2828,5, -0x0e2844,3, -0x0e2854,6, -0x0e2880,4, -0x0e28a0,6, -0x0e2a04,3, -0x0e2b00,33, -0x0e2c40,3, -0x0e2c60,11, +0x0e1800,3, +0x0e1810,2, +0x0e181c,1, +0x0e1824,4, +0x0e1848,2, +0x0e1858,2, +0x0e1868,31, +0x0e18f0,1, +0x0e18fc,35, +0x0e19e0,1, +0x0e19e8,5, +0x0e1a04,5, +0x0e1a1c,1, +0x0e1b00,16, +0x0e1c00,3, +0x0e1c10,2, +0x0e1c1c,1, +0x0e1c24,4, +0x0e1c48,2, +0x0e1c58,2, +0x0e1c68,31, +0x0e1cf0,1, +0x0e1cfc,35, +0x0e1de0,1, +0x0e1de8,5, +0x0e1e04,5, +0x0e1e1c,1, +0x0e1f00,16, +0x0e20c0,8, +0x0e20f4,3, +0x0e2108,3, +0x0e2200,5, +0x0e2218,36, +0x0e2300,6, +0x0e2330,4, +0x0e2600,1, +0x0e260c,1, +0x0e26e0,6, +0x0e2700,6, +0x0e2720,6, +0x0e2740,3, +0x0e2780,6, +0x0e27a0,6, +0x0e27c0,3, +0x0e2800,67, +0x0e2a00,6, +0x0e2a20,6, +0x0e2a40,3, +0x0e2a50,3, +0x0e2a60,1, +0x0e2a80,17, +0x0e3020,10, +0x0e3070,1, +0x0e3080,2, +0x0e308c,1, +0x0e3400,1, +0x0e3440,21, +0x0e34e4,13, +0x0e3520,6, +0x0e3540,6, +0x0e3560,6, +0x0e3580,6, +0x0e3600,16, +0x0e3804,3, +0x0e3900,33, +0x0e3a00,6, +0x0e3a20,2, +0x0e3a40,8, +0x0e3a64,5, +0x0e3c00,1, +0x0e3c28,1, +0x0e3c50,1, +0x0e3c78,1, +0x0e3ca0,2, +0x0e3dac,1, +0x0e3dd8,4, +0x0e3e00,6, +0x0e3e20,6, +0x0e3e40,3, +0x0e4010,12, +0x0e4044,3, +0x0e4084,2, +0x0e40bc,84, +0x0e4240,18, +0x0e45f0,4, +0x0e4604,1, +0x0e4640,16, +0x0e46f0,4, +0x0e4704,1, +0x0e4740,16, +0x0e5000,8, +0x0e6000,7, 0x0e8000,9, -0x0e8050,1, -0x0e8064,6, -0x0e8080,1, -0x0e8088,2, +0x0e8044,6, +0x0e8080,15, 0x0f0000,3, -0x0f0014,8, -0x0f0040,3, -0x0f0050,4, -0x0f0080,12, +0x0f0014,9, +0x0f004c,3, +0x0f0060,8, +0x0f00a0,5, 0x0f00f0,2, -0x0f0100,3, -0x0f0118,5, +0x0f0100,5, +0x0f0118,1, 0x0f0130,6, -0x0f015c,13, +0x0f015c,12, +0x0f0190,3, 0x0f01a0,3, 0x0f01c0,2, 0x0f01d0,10, 0x0f0200,61, 0x0f0404,8, -0x0f0440,4, -0x0f0460,1, -0x0f0468,3, +0x0f0440,12, 0x0f0480,6, 0x0f04a0,8, 0x0f04e0,6, 0x0f0500,6, 0x0f0520,8, 0x0f0560,6, -0x0f05dc,73, -0x0f0704,1, -0x0f0714,10, +0x0f0580,1, +0x0f0588,3, +0x0f05dc,9, 0x0f0800,17, 0x0f0850,9, -0x0f0880,4, -0x0f089c,5, -0x0f08bc,5, -0x0f08dc,1, -0x0f0900,6, -0x0f0920,6, -0x0f0940,6, -0x0f0980,3, -0x0f0990,1, -0x0f0ffc,1, +0x0f0880,9, +0x0f08b0,9, +0x0f08e0,9, +0x0f0920,4, +0x0f093c,5, +0x0f095c,5, +0x0f097c,5, +0x0f099c,5, +0x0f09bc,5, +0x0f09dc,1, +0x0f0a80,3, +0x0f0a90,4, +0x0f0c00,128, +0x0f0e04,1, +0x0f0e14,9, +0x0f0e3c,1, +0x0f1000,1, +0x0f1200,6, +0x0f1220,6, +0x0f1240,6, +0x0f1260,6, +0x0f1280,6, +0x0f12a0,6, +0x0f12c0,6, +0x0f12e0,6, +0x0f1300,3, +0x0f4000,7, +0x0f4100,2, +0x0f4180,34, +0x0f4300,2, +0x0f4380,42, +0x0f4800,7, +0x0f4900,2, +0x0f4980,34, +0x0f4b00,2, +0x0f4b80,42, +0x0f5000,7, +0x0f5100,2, +0x0f5180,34, +0x0f5300,2, +0x0f5380,42, +0x0f5800,7, +0x0f5900,2, +0x0f5980,34, +0x0f5b00,2, +0x0f5b80,42, +0x0f6000,7, +0x0f6100,2, +0x0f6180,34, +0x0f6300,2, +0x0f6380,42, +0x0f6800,7, +0x0f6900,2, +0x0f6980,34, +0x0f6b00,2, +0x0f6b80,42, +0x100000,1, +0x100008,1, +0x100010,2, +0x100020,1, +0x100028,1, +0x100030,2, +0x100040,1, +0x100048,1, +0x100050,2, +0x100060,1, +0x100068,1, +0x100070,2, +0x100080,21, +0x100100,21, +0x100180,21, +0x100200,21, +0x100284,1, +0x1003b0,4, +0x100400,13, +0x100440,13, +0x100480,13, +0x1004c0,13, +0x100500,68, +0x100618,1, +0x100804,1, +0x10080c,4, +0x100820,9, +0x100880,24, +0x100900,24, +0x100c00,1, +0x100c08,2, +0x100c80,33, +0x100d80,4, +0x100da0,6, +0x100e00,4, +0x100e20,1, +0x100e28,7, +0x100e48,7, +0x100e68,7, +0x100e88,6, +0x100ee0,6, +0x100f00,6, +0x100f1c,10, +0x100f70,8, +0x100f94,4, +0x100fc0,6, +0x100fe0,6, +0x101800,3, +0x101810,3, +0x101820,3, +0x101830,3, +0x101840,17, +0x1018a8,6, +0x1018c8,6, +0x101920,1, +0x101940,4, +0x101980,8, +0x101a00,10, +0x101a30,7, +0x101a50,4, +0x101a80,1, +0x101a90,4, +0x101c00,34, +0x101d00,3, +0x101f80,9, +0x101fc0,17, +0x102028,1, +0x102050,1, +0x102078,1, +0x1020a0,8, +0x1021ac,1, +0x1021d8,4, +0x102200,6, +0x102220,6, +0x102240,3, +0x102400,36, +0x1024a0,8, +0x102500,1, +0x102584,9, +0x1025ac,2, +0x1025fc,1, +0x102604,1, +0x1026ec,69, +0x103000,32, +0x103084,5, +0x1030f8,3, +0x103108,3, +0x103118,7, +0x103144,1, +0x103160,11, +0x103200,32, +0x103284,5, +0x1032f8,3, +0x103308,3, +0x103318,7, +0x103344,1, +0x103360,11, +0x103400,32, +0x103484,5, +0x1034f8,3, +0x103508,3, +0x103518,7, +0x103544,1, +0x103560,11, +0x103600,32, +0x103684,5, +0x1036f8,3, +0x103708,3, +0x103718,7, +0x103744,1, +0x103760,11, +0x103a00,64, +0x104000,3, +0x104020,3, +0x104040,3, +0x104060,3, +0x104084,1, +0x104090,4, +0x1040a4,1, +0x1040b0,4, +0x1040c4,1, +0x1040d0,4, +0x1040e4,1, +0x1040f0,21, +0x104150,5, +0x104278,34, +0x104304,10, +0x104330,1, +0x104340,16, +0x1043b4,4, +0x1043c8,4, +0x1043dc,4, +0x1043f0,4, +0x104404,1, +0x104470,36, +0x104504,1, +0x104570,36, +0x104604,1, +0x104670,36, +0x104704,1, +0x104770,50, +0x104840,2, +0x104900,1, +0x104908,1, +0x104984,1, +0x1049a0,24, +0x104a80,3, +0x104aa0,6, +0x104ac0,6, +0x104b00,3, +0x104b20,6, +0x104b40,6, +0x104b80,3, +0x104ba0,6, +0x104bc0,6, +0x104c00,3, +0x104c20,6, +0x104c40,6, +0x104c80,3, +0x104ca0,6, +0x104cc0,6, +0x105000,448, +0x105704,11, +0x105734,1, +0x106010,1, +0x110000,4, +0x110014,2, +0x110020,5, +0x110040,5, +0x110060,6, +0x110080,7, +0x1100a0,4, +0x1100b8,8, +0x1100e0,6, +0x110200,4, +0x110214,2, +0x110220,5, +0x110240,5, +0x110260,6, +0x110280,7, +0x1102a0,4, +0x1102b8,8, +0x1102e0,6, +0x110400,4, +0x110414,2, +0x110420,5, +0x110440,5, +0x110460,6, +0x110480,7, +0x1104a0,4, +0x1104b8,8, +0x1104e0,6, +0x110600,4, +0x110614,2, +0x110620,5, +0x110640,5, +0x110660,6, +0x110680,7, +0x1106a0,4, +0x1106b8,8, +0x1106e0,6, +0x110800,31, +0x110880,3, +0x110890,2, +0x111000,1, +0x111028,1, +0x111050,1, +0x111078,1, +0x1110a0,5, +0x1111ac,1, +0x1111d8,4, +0x111200,6, +0x111220,6, +0x111240,3, +0x111400,3, +0x111480,9, +0x1114c0,25, +0x111540,25, +0x1115c0,25, +0x111640,17, +0x111688,2, +0x118000,29, +0x118078,5, +0x118090,2, +0x1180a0,10, +0x118100,93, +0x118278,5, +0x118290,2, +0x1182a0,10, +0x118300,93, +0x118478,5, +0x118490,2, +0x1184a0,10, +0x118500,93, +0x118678,5, +0x118690,2, +0x1186a0,10, +0x118700,94, +0x11887c,1, +0x118a00,8, +0x118a24,15, +0x118a64,23, +0x118ac4,6, +0x118b00,4, +0x118b20,3, +0x118c00,2, +0x118c40,14, +0x118c80,9, +0x118d00,9, +0x118d2c,1, +0x118d80,9, +0x118e00,2, +0x118e0c,1, +0x118e14,5, +0x118e2c,1, +0x118e34,5, +0x118e4c,1, +0x118e54,5, +0x118e6c,1, +0x118e74,5, +0x118e8c,1, +0x118e94,5, +0x118eac,1, +0x118eb4,3, +0x119000,29, +0x119078,5, +0x119090,2, +0x1190a0,10, +0x119100,93, +0x119278,5, +0x119290,2, +0x1192a0,10, +0x119300,93, +0x119478,5, +0x119490,2, +0x1194a0,10, +0x119500,93, +0x119678,5, +0x119690,2, +0x1196a0,10, +0x119700,94, +0x11987c,1, +0x119a00,8, +0x119a24,15, +0x119a64,23, +0x119ac4,6, +0x119b00,4, +0x119b20,3, +0x119c00,2, +0x119c40,14, +0x119c80,9, +0x119d00,9, +0x119d2c,1, +0x119d80,9, +0x119e00,2, +0x119e0c,1, +0x119e14,5, +0x119e2c,1, +0x119e34,5, +0x119e4c,1, +0x119e54,5, +0x119e6c,1, +0x119e74,5, +0x119e8c,1, +0x119e94,5, +0x119eac,1, +0x119eb4,3, +0x11a000,29, +0x11a078,5, +0x11a090,2, +0x11a0a0,10, +0x11a100,93, +0x11a278,5, +0x11a290,2, +0x11a2a0,10, +0x11a300,93, +0x11a478,5, +0x11a490,2, +0x11a4a0,10, +0x11a500,93, +0x11a678,5, +0x11a690,2, +0x11a6a0,10, +0x11a700,94, +0x11a87c,1, +0x11aa00,8, +0x11aa24,15, +0x11aa64,23, +0x11aac4,6, +0x11ab00,4, +0x11ab20,3, +0x11ac00,2, +0x11ac40,14, +0x11ac80,9, +0x11ad00,9, +0x11ad2c,1, +0x11ad80,9, +0x11ae00,2, +0x11ae0c,1, +0x11ae14,5, +0x11ae2c,1, +0x11ae34,5, +0x11ae4c,1, +0x11ae54,5, +0x11ae6c,1, +0x11ae74,5, +0x11ae8c,1, +0x11ae94,5, +0x11aeac,1, +0x11aeb4,3, +0x11b000,29, +0x11b078,5, +0x11b090,2, +0x11b0a0,10, +0x11b100,93, +0x11b278,5, +0x11b290,2, +0x11b2a0,10, +0x11b300,93, +0x11b478,5, +0x11b490,2, +0x11b4a0,10, +0x11b500,93, +0x11b678,5, +0x11b690,2, +0x11b6a0,10, +0x11b700,94, +0x11b87c,1, +0x11ba00,8, +0x11ba24,15, +0x11ba64,23, +0x11bac4,6, +0x11bb00,4, +0x11bb20,3, +0x11bc00,2, +0x11bc40,14, +0x11bc80,9, +0x11bd00,9, +0x11bd2c,1, +0x11bd80,9, +0x11be00,2, +0x11be0c,1, +0x11be14,5, +0x11be2c,1, +0x11be34,5, +0x11be4c,1, +0x11be54,5, +0x11be6c,1, +0x11be74,5, +0x11be8c,1, +0x11be94,5, +0x11beac,1, +0x11beb4,3, +0x11c000,19, +0x11c050,10, +0x11c080,19, +0x11c0d0,10, +0x11c100,19, +0x11c150,10, +0x11c180,19, +0x11c1d0,10, +0x11c200,19, +0x11c250,10, +0x11c280,19, +0x11c2d0,10, +0x11c300,19, +0x11c350,10, +0x11c380,19, +0x11c3d0,10, +0x11c400,19, +0x11c450,10, +0x11c480,19, +0x11c4d0,10, +0x11c500,19, +0x11c550,10, +0x11c580,19, +0x11c5d0,10, +0x11c600,19, +0x11c650,10, +0x11c680,19, +0x11c6d0,10, +0x11c700,19, +0x11c750,10, +0x11c780,19, +0x11c7d0,10, +0x11c800,19, +0x11c850,10, +0x11c884,1, +0x11c894,22, +0x11c900,7, +0x11d000,8, +0x11d028,3, +0x11d040,5, +0x11d080,8, +0x11d0a8,3, +0x11d0c0,5, +0x11d100,8, +0x11d128,3, +0x11d140,5, +0x11d180,8, +0x11d1a8,3, +0x11d1c0,5, +0x11d200,7, +0x11d220,7, +0x11d240,7, +0x11d260,7, +0x11d280,7, +0x11d2a0,7, +0x11d2c0,7, +0x11d2e0,7, +0x11d300,7, +0x11d320,7, +0x11d340,7, +0x11d360,7, +0x11d380,7, +0x11d3a0,7, +0x11d3c0,7, +0x11d3e0,7, +0x11d400,6, +0x11d420,6, +0x11d440,6, +0x11d460,6, +0x11d480,6, +0x11d4a0,6, +0x11d4c0,6, +0x11d4e0,6, +0x11d500,52, +0x11d5e0,8, +0x11d604,1, +0x11d60c,4, +0x11d620,4, +0x11d634,33, +0x11d800,101, +0x11da00,3, +0x11da10,1, +0x11da18,2, +0x11da24,14, +0x11da80,3, +0x11da90,1, +0x11da98,2, +0x11daa4,14, +0x11db00,3, +0x11db10,1, +0x11db18,2, +0x11db24,14, +0x11db80,3, +0x11db90,1, +0x11db98,2, +0x11dba4,14, +0x11dc00,17, +0x11e000,72, +0x11e200,72, +0x11e400,72, +0x11e600,72, +0x11e800,6, +0x11e820,6, +0x11e840,6, +0x11e860,6, +0x11e880,6, +0x11e8a0,6, +0x11e8c0,6, +0x11e8e0,6, +0x11e900,6, +0x11e920,1, +0x11ea00,6, +0x11ea20,6, +0x11ea40,6, +0x11ea60,6, +0x11ea80,6, +0x11eaa0,6, +0x11eac0,6, +0x11eae0,6, +0x11eb00,6, +0x11eb20,1, +0x11ec00,6, +0x11ec20,6, +0x11ec40,6, +0x11ec60,6, +0x11ec80,6, +0x11eca0,6, +0x11ecc0,6, +0x11ece0,6, +0x11ed00,6, +0x11ed20,1, +0x11ee00,6, +0x11ee20,6, +0x11ee40,6, +0x11ee60,6, +0x11ee80,6, +0x11eea0,6, +0x11eec0,6, +0x11eee0,6, +0x11ef00,6, +0x11ef20,1, +0x11f000,14, +0x11f040,2, +0x11f080,14, +0x11f0c0,2, +0x11f100,14, +0x11f140,2, +0x11f180,14, +0x11f1c0,2, +0x11f400,17, +0x11f448,4, +0x11f460,3, +0x11f470,3, +0x11f480,12, +0x11f500,17, +0x11f548,4, +0x11f560,3, +0x11f570,3, +0x11f580,12, +0x11f600,17, +0x11f648,4, +0x11f660,3, +0x11f670,3, +0x11f680,12, +0x11f700,17, +0x11f748,4, +0x11f760,3, +0x11f770,3, +0x11f780,12, +0x11f904,8, +0x11f940,13, +0x11f980,16, +0x11fa00,6, +0x11fa20,3, +0x11fa30,3, +0x11fa40,17, +0x11fb00,8, +0x11fb24,15, +0x11fb64,15, +0x11fba4,15, +0x11fbe4,23, +0x11fc44,6, +0x11fc80,10, +0x11fcac,1, +0x11fcb4,5, +0x11fccc,1, +0x11fcd4,5, +0x11fcec,1, +0x11fcf4,13, +0x11fd80,7, +0x11fda0,5, +0x11fdc0,5, +0x11fde0,4, diff --git a/mstdump/mstdump_dbs/SwitchIB.csv b/mstdump/mstdump_dbs/SwitchIB.csv index 43b887d..b8e46e5 100644 --- a/mstdump/mstdump_dbs/SwitchIB.csv +++ b/mstdump/mstdump_dbs/SwitchIB.csv @@ -1,1610 +1,1933 @@ -#Addr, Size, Enable addr -0x000000,1, -0x000008,14, -0x000080,1, -0x000088,18, -0x000100,9, -0x000134,2, -0x00014c,4, -0x00016c,6, -0x00018c,8, -0x0001b0,1, -0x000200,2, -0x00020c,1, -0x000214,13, -0x000254,5, -0x00026c,7, -0x0002a8,3, -0x0002c0,8, -0x000300,6, -0x000380,3, -0x0003a0,14, -0x0003e0,9, +#Addr, Size, Enable addr +0x000400,1, 0x000408,14, 0x000480,1, 0x000488,18, 0x000500,9, 0x000534,2, 0x00054c,4, -0x00056c,6, -0x00058c,8, -0x0005b0,1, -0x000600,2, -0x00060c,1, -0x000614,13, -0x000654,5, -0x00066c,7, +0x00056c,11, +0x0005ac,8, +0x0005d0,1, +0x000604,1, +0x00060c,13, +0x000644,1, +0x000654,3, +0x000664,1, +0x00066c,8, 0x0006a8,3, 0x0006c0,8, 0x000700,6, -0x000780,3, -0x0007a0,14, -0x0007e0,9, +0x000760,4, +0x000780,8, +0x0007b8,8, +0x0007dc,10, 0x000808,14, 0x000880,1, 0x000888,18, 0x000900,9, 0x000934,2, 0x00094c,4, -0x00096c,6, -0x00098c,8, -0x0009b0,1, -0x000a00,2, -0x000a0c,1, -0x000a14,13, -0x000a54,5, -0x000a6c,7, +0x00096c,11, +0x0009ac,8, +0x0009d0,1, +0x000a04,1, +0x000a0c,13, +0x000a44,1, +0x000a54,3, +0x000a64,1, +0x000a6c,8, 0x000aa8,3, 0x000ac0,8, 0x000b00,6, -0x000b80,3, -0x000ba0,14, -0x000be0,9, +0x000b60,4, +0x000b80,8, +0x000bb8,8, +0x000bdc,10, 0x000c08,14, 0x000c80,1, 0x000c88,18, 0x000d00,9, 0x000d34,2, 0x000d4c,4, -0x000d6c,6, -0x000d8c,8, -0x000db0,1, -0x000e00,2, -0x000e0c,1, -0x000e14,13, -0x000e54,5, -0x000e6c,7, +0x000d6c,11, +0x000dac,8, +0x000dd0,1, +0x000e04,1, +0x000e0c,13, +0x000e44,1, +0x000e54,3, +0x000e64,1, +0x000e6c,8, 0x000ea8,3, 0x000ec0,8, 0x000f00,6, -0x000f80,3, -0x000fa0,14, -0x000fe0,9, +0x000f60,4, +0x000f80,8, +0x000fb8,8, +0x000fdc,10, 0x001008,14, 0x001080,1, 0x001088,18, 0x001100,9, 0x001134,2, 0x00114c,4, -0x00116c,6, -0x00118c,8, -0x0011b0,1, -0x001200,2, -0x00120c,1, -0x001214,13, -0x001254,5, -0x00126c,7, +0x00116c,11, +0x0011ac,8, +0x0011d0,1, +0x001204,1, +0x00120c,13, +0x001244,1, +0x001254,3, +0x001264,1, +0x00126c,8, 0x0012a8,3, 0x0012c0,8, 0x001300,6, -0x001380,3, -0x0013a0,14, -0x0013e0,9, +0x001360,4, +0x001380,8, +0x0013b8,8, +0x0013dc,10, 0x001408,14, 0x001480,1, 0x001488,18, 0x001500,9, 0x001534,2, 0x00154c,4, -0x00156c,6, -0x00158c,8, -0x0015b0,1, -0x001600,2, -0x00160c,1, -0x001614,13, -0x001654,5, -0x00166c,7, +0x00156c,11, +0x0015ac,8, +0x0015d0,1, +0x001604,1, +0x00160c,13, +0x001644,1, +0x001654,3, +0x001664,1, +0x00166c,8, 0x0016a8,3, 0x0016c0,8, 0x001700,6, -0x001780,3, -0x0017a0,14, -0x0017e0,9, +0x001760,4, +0x001780,8, +0x0017b8,8, +0x0017dc,10, 0x001808,14, 0x001880,1, 0x001888,18, 0x001900,9, 0x001934,2, 0x00194c,4, -0x00196c,6, -0x00198c,8, -0x0019b0,1, -0x001a00,2, -0x001a0c,1, -0x001a14,13, -0x001a54,5, -0x001a6c,7, +0x00196c,11, +0x0019ac,8, +0x0019d0,1, +0x001a04,1, +0x001a0c,13, +0x001a44,1, +0x001a54,3, +0x001a64,1, +0x001a6c,8, 0x001aa8,3, 0x001ac0,8, 0x001b00,6, -0x001b80,3, -0x001ba0,14, -0x001be0,9, +0x001b60,4, +0x001b80,8, +0x001bb8,8, +0x001bdc,10, 0x001c08,14, 0x001c80,1, 0x001c88,18, 0x001d00,9, 0x001d34,2, 0x001d4c,4, -0x001d6c,6, -0x001d8c,8, -0x001db0,1, -0x001e00,2, -0x001e0c,1, -0x001e14,13, -0x001e54,5, -0x001e6c,7, +0x001d6c,11, +0x001dac,8, +0x001dd0,1, +0x001e04,1, +0x001e0c,13, +0x001e44,1, +0x001e54,3, +0x001e64,1, +0x001e6c,8, 0x001ea8,3, 0x001ec0,8, 0x001f00,6, -0x001f80,3, -0x001fa0,14, -0x001fe0,9, +0x001f60,4, +0x001f80,8, +0x001fb8,8, +0x001fdc,10, 0x002008,14, 0x002080,1, 0x002088,18, 0x002100,9, 0x002134,2, 0x00214c,4, -0x00216c,6, -0x00218c,8, -0x0021b0,1, -0x002200,2, -0x00220c,1, -0x002214,13, -0x002254,5, -0x00226c,7, +0x00216c,11, +0x0021ac,8, +0x0021d0,1, +0x002204,1, +0x00220c,13, +0x002244,1, +0x002254,3, +0x002264,1, +0x00226c,8, 0x0022a8,3, 0x0022c0,8, 0x002300,6, -0x002380,3, -0x0023a0,14, -0x0023e0,9, +0x002360,4, +0x002380,8, +0x0023b8,8, +0x0023dc,10, 0x002408,14, 0x002480,1, 0x002488,18, 0x002500,9, 0x002534,2, 0x00254c,4, -0x00256c,6, -0x00258c,8, -0x0025b0,1, -0x002600,2, -0x00260c,1, -0x002614,13, -0x002654,5, -0x00266c,7, +0x00256c,11, +0x0025ac,8, +0x0025d0,1, +0x002604,1, +0x00260c,13, +0x002644,1, +0x002654,3, +0x002664,1, +0x00266c,8, 0x0026a8,3, 0x0026c0,8, 0x002700,6, -0x002780,3, -0x0027a0,14, -0x0027e0,9, +0x002760,4, +0x002780,8, +0x0027b8,8, +0x0027dc,10, 0x002808,14, 0x002880,1, 0x002888,18, 0x002900,9, 0x002934,2, 0x00294c,4, -0x00296c,6, -0x00298c,8, -0x0029b0,1, -0x002a00,2, -0x002a0c,1, -0x002a14,13, -0x002a54,5, -0x002a6c,7, +0x00296c,11, +0x0029ac,8, +0x0029d0,1, +0x002a04,1, +0x002a0c,13, +0x002a44,1, +0x002a54,3, +0x002a64,1, +0x002a6c,8, 0x002aa8,3, 0x002ac0,8, 0x002b00,6, -0x002b80,3, -0x002ba0,14, -0x002be0,9, +0x002b60,4, +0x002b80,8, +0x002bb8,8, +0x002bdc,10, 0x002c08,14, 0x002c80,1, 0x002c88,18, 0x002d00,9, 0x002d34,2, 0x002d4c,4, -0x002d6c,6, -0x002d8c,8, -0x002db0,1, -0x002e00,2, -0x002e0c,1, -0x002e14,13, -0x002e54,5, -0x002e6c,7, +0x002d6c,11, +0x002dac,8, +0x002dd0,1, +0x002e04,1, +0x002e0c,13, +0x002e44,1, +0x002e54,3, +0x002e64,1, +0x002e6c,8, 0x002ea8,3, 0x002ec0,8, 0x002f00,6, -0x002f80,3, -0x002fa0,14, -0x002fe0,9, +0x002f60,4, +0x002f80,8, +0x002fb8,8, +0x002fdc,10, 0x003008,14, 0x003080,1, 0x003088,18, 0x003100,9, 0x003134,2, 0x00314c,4, -0x00316c,6, -0x00318c,8, -0x0031b0,1, -0x003200,2, -0x00320c,1, -0x003214,13, -0x003254,5, -0x00326c,7, +0x00316c,11, +0x0031ac,8, +0x0031d0,1, +0x003204,1, +0x00320c,13, +0x003244,1, +0x003254,3, +0x003264,1, +0x00326c,8, 0x0032a8,3, 0x0032c0,8, 0x003300,6, -0x003380,3, -0x0033a0,14, -0x0033e0,9, +0x003360,4, +0x003380,8, +0x0033b8,8, +0x0033dc,10, 0x003408,14, 0x003480,1, 0x003488,18, 0x003500,9, 0x003534,2, 0x00354c,4, -0x00356c,6, -0x00358c,8, -0x0035b0,1, -0x003600,2, -0x00360c,1, -0x003614,13, -0x003654,5, -0x00366c,7, +0x00356c,11, +0x0035ac,8, +0x0035d0,1, +0x003604,1, +0x00360c,13, +0x003644,1, +0x003654,3, +0x003664,1, +0x00366c,8, 0x0036a8,3, 0x0036c0,8, 0x003700,6, -0x003780,3, -0x0037a0,14, -0x0037e0,9, +0x003760,4, +0x003780,8, +0x0037b8,8, +0x0037dc,10, 0x003808,14, 0x003880,1, 0x003888,18, 0x003900,9, 0x003934,2, 0x00394c,4, -0x00396c,6, -0x00398c,8, -0x0039b0,1, -0x003a00,2, -0x003a0c,1, -0x003a14,13, -0x003a54,5, -0x003a6c,7, +0x00396c,11, +0x0039ac,8, +0x0039d0,1, +0x003a04,1, +0x003a0c,13, +0x003a44,1, +0x003a54,3, +0x003a64,1, +0x003a6c,8, 0x003aa8,3, 0x003ac0,8, 0x003b00,6, -0x003b80,3, -0x003ba0,14, -0x003be0,9, +0x003b60,4, +0x003b80,8, +0x003bb8,8, +0x003bdc,10, 0x003c08,14, 0x003c80,1, 0x003c88,18, 0x003d00,9, 0x003d34,2, 0x003d4c,4, -0x003d6c,6, -0x003d8c,8, -0x003db0,1, -0x003e00,2, -0x003e0c,1, -0x003e14,13, -0x003e54,5, -0x003e6c,7, +0x003d6c,11, +0x003dac,8, +0x003dd0,1, +0x003e04,1, +0x003e0c,13, +0x003e44,1, +0x003e54,3, +0x003e64,1, +0x003e6c,8, 0x003ea8,3, 0x003ec0,8, 0x003f00,6, -0x003f80,3, -0x003fa0,14, -0x003fe0,9, +0x003f60,4, +0x003f80,8, +0x003fb8,8, +0x003fdc,10, 0x004008,14, 0x004080,1, 0x004088,18, 0x004100,9, 0x004134,2, 0x00414c,4, -0x00416c,6, -0x00418c,8, -0x0041b0,1, -0x004200,2, -0x00420c,1, -0x004214,13, -0x004254,5, -0x00426c,7, +0x00416c,11, +0x0041ac,8, +0x0041d0,1, +0x004204,1, +0x00420c,13, +0x004244,1, +0x004254,3, +0x004264,1, +0x00426c,8, 0x0042a8,3, 0x0042c0,8, 0x004300,6, -0x004380,3, -0x0043a0,14, -0x0043e0,9, +0x004360,4, +0x004380,8, +0x0043b8,8, +0x0043dc,10, 0x004408,14, 0x004480,1, 0x004488,18, 0x004500,9, 0x004534,2, 0x00454c,4, -0x00456c,6, -0x00458c,8, -0x0045b0,1, -0x004600,2, -0x00460c,1, -0x004614,13, -0x004654,5, -0x00466c,7, +0x00456c,11, +0x0045ac,8, +0x0045d0,1, +0x004604,1, +0x00460c,13, +0x004644,1, +0x004654,3, +0x004664,1, +0x00466c,8, 0x0046a8,3, 0x0046c0,8, 0x004700,6, -0x004780,3, -0x0047a0,14, -0x0047e0,9, +0x004760,4, +0x004780,8, +0x0047b8,8, +0x0047dc,10, 0x004808,14, 0x004880,1, 0x004888,18, 0x004900,9, 0x004934,2, 0x00494c,4, -0x00496c,6, -0x00498c,8, -0x0049b0,1, -0x004a00,2, -0x004a0c,1, -0x004a14,13, -0x004a54,5, -0x004a6c,7, +0x00496c,11, +0x0049ac,8, +0x0049d0,1, +0x004a04,1, +0x004a0c,13, +0x004a44,1, +0x004a54,3, +0x004a64,1, +0x004a6c,8, 0x004aa8,3, 0x004ac0,8, 0x004b00,6, -0x004b80,3, -0x004ba0,14, -0x004be0,9, +0x004b60,4, +0x004b80,8, +0x004bb8,8, +0x004bdc,10, 0x004c08,14, 0x004c80,1, 0x004c88,18, 0x004d00,9, 0x004d34,2, 0x004d4c,4, -0x004d6c,6, -0x004d8c,8, -0x004db0,1, -0x004e00,2, -0x004e0c,1, -0x004e14,13, -0x004e54,5, -0x004e6c,7, +0x004d6c,11, +0x004dac,8, +0x004dd0,1, +0x004e04,1, +0x004e0c,13, +0x004e44,1, +0x004e54,3, +0x004e64,1, +0x004e6c,8, 0x004ea8,3, 0x004ec0,8, 0x004f00,6, -0x004f80,3, -0x004fa0,14, -0x004fe0,9, -0x005018,1, -0x005034,1, -0x00512c,1, -0x005190,1, -0x0051ac,1, -0x0051d8,4, -0x005200,8, -0x005400,13, -0x005460,3, -0x005470,2, -0x005504,2, -0x005518,1, -0x005540,1, -0x008000,1, -0x008008,14, -0x008080,1, -0x008088,18, -0x008100,9, -0x008134,2, -0x00814c,4, -0x00816c,6, -0x00818c,8, -0x0081b0,1, -0x008200,2, -0x00820c,1, -0x008214,13, -0x008254,5, -0x00826c,7, -0x0082a8,3, -0x0082c0,8, -0x008300,6, -0x008380,3, -0x0083a0,14, -0x0083e0,9, +0x004f60,4, +0x004f80,8, +0x004fb8,8, +0x004fdc,10, +0x005008,14, +0x005080,1, +0x005088,18, +0x005100,9, +0x005134,2, +0x00514c,4, +0x00516c,11, +0x0051ac,8, +0x0051d0,1, +0x005204,1, +0x00520c,13, +0x005244,1, +0x005254,3, +0x005264,1, +0x00526c,8, +0x0052a8,3, +0x0052c0,8, +0x005300,6, +0x005360,4, +0x005380,8, +0x0053b8,8, +0x0053dc,10, +0x005428,1, +0x005450,1, +0x005478,1, +0x0054a0,1, +0x0055ac,1, +0x0055d8,4, +0x005600,6, +0x005620,6, +0x005640,3, +0x005800,13, +0x005840,6, +0x005860,3, +0x005880,2, +0x005904,2, +0x005918,1, +0x005940,1, +0x008400,1, 0x008408,14, 0x008480,1, 0x008488,18, 0x008500,9, 0x008534,2, 0x00854c,4, -0x00856c,6, -0x00858c,8, -0x0085b0,1, -0x008600,2, -0x00860c,1, -0x008614,13, -0x008654,5, -0x00866c,7, +0x00856c,11, +0x0085ac,8, +0x0085d0,1, +0x008604,1, +0x00860c,13, +0x008644,1, +0x008654,3, +0x008664,1, +0x00866c,8, 0x0086a8,3, 0x0086c0,8, 0x008700,6, -0x008780,3, -0x0087a0,14, -0x0087e0,9, +0x008760,4, +0x008780,8, +0x0087b8,8, +0x0087dc,10, 0x008808,14, 0x008880,1, 0x008888,18, 0x008900,9, 0x008934,2, 0x00894c,4, -0x00896c,6, -0x00898c,8, -0x0089b0,1, -0x008a00,2, -0x008a0c,1, -0x008a14,13, -0x008a54,5, -0x008a6c,7, +0x00896c,11, +0x0089ac,8, +0x0089d0,1, +0x008a04,1, +0x008a0c,13, +0x008a44,1, +0x008a54,3, +0x008a64,1, +0x008a6c,8, 0x008aa8,3, 0x008ac0,8, 0x008b00,6, -0x008b80,3, -0x008ba0,14, -0x008be0,9, +0x008b60,4, +0x008b80,8, +0x008bb8,8, +0x008bdc,10, 0x008c08,14, 0x008c80,1, 0x008c88,18, 0x008d00,9, 0x008d34,2, 0x008d4c,4, -0x008d6c,6, -0x008d8c,8, -0x008db0,1, -0x008e00,2, -0x008e0c,1, -0x008e14,13, -0x008e54,5, -0x008e6c,7, +0x008d6c,11, +0x008dac,8, +0x008dd0,1, +0x008e04,1, +0x008e0c,13, +0x008e44,1, +0x008e54,3, +0x008e64,1, +0x008e6c,8, 0x008ea8,3, 0x008ec0,8, 0x008f00,6, -0x008f80,3, -0x008fa0,14, -0x008fe0,9, +0x008f60,4, +0x008f80,8, +0x008fb8,8, +0x008fdc,10, 0x009008,14, 0x009080,1, 0x009088,18, 0x009100,9, 0x009134,2, 0x00914c,4, -0x00916c,6, -0x00918c,8, -0x0091b0,1, -0x009200,2, -0x00920c,1, -0x009214,13, -0x009254,5, -0x00926c,7, +0x00916c,11, +0x0091ac,8, +0x0091d0,1, +0x009204,1, +0x00920c,13, +0x009244,1, +0x009254,3, +0x009264,1, +0x00926c,8, 0x0092a8,3, 0x0092c0,8, 0x009300,6, -0x009380,3, -0x0093a0,14, -0x0093e0,9, +0x009360,4, +0x009380,8, +0x0093b8,8, +0x0093dc,10, 0x009408,14, 0x009480,1, 0x009488,18, 0x009500,9, 0x009534,2, 0x00954c,4, -0x00956c,6, -0x00958c,8, -0x0095b0,1, -0x009600,2, -0x00960c,1, -0x009614,13, -0x009654,5, -0x00966c,7, +0x00956c,11, +0x0095ac,8, +0x0095d0,1, +0x009604,1, +0x00960c,13, +0x009644,1, +0x009654,3, +0x009664,1, +0x00966c,8, 0x0096a8,3, 0x0096c0,8, 0x009700,6, -0x009780,3, -0x0097a0,14, -0x0097e0,9, +0x009760,4, +0x009780,8, +0x0097b8,8, +0x0097dc,10, 0x009808,14, 0x009880,1, 0x009888,18, 0x009900,9, 0x009934,2, 0x00994c,4, -0x00996c,6, -0x00998c,8, -0x0099b0,1, -0x009a00,2, -0x009a0c,1, -0x009a14,13, -0x009a54,5, -0x009a6c,7, +0x00996c,11, +0x0099ac,8, +0x0099d0,1, +0x009a04,1, +0x009a0c,13, +0x009a44,1, +0x009a54,3, +0x009a64,1, +0x009a6c,8, 0x009aa8,3, 0x009ac0,8, 0x009b00,6, -0x009b80,3, -0x009ba0,14, -0x009be0,9, +0x009b60,4, +0x009b80,8, +0x009bb8,8, +0x009bdc,10, 0x009c08,14, 0x009c80,1, 0x009c88,18, 0x009d00,9, 0x009d34,2, 0x009d4c,4, -0x009d6c,6, -0x009d8c,8, -0x009db0,1, -0x009e00,2, -0x009e0c,1, -0x009e14,13, -0x009e54,5, -0x009e6c,7, +0x009d6c,11, +0x009dac,8, +0x009dd0,1, +0x009e04,1, +0x009e0c,13, +0x009e44,1, +0x009e54,3, +0x009e64,1, +0x009e6c,8, 0x009ea8,3, 0x009ec0,8, 0x009f00,6, -0x009f80,3, -0x009fa0,14, -0x009fe0,9, +0x009f60,4, +0x009f80,8, +0x009fb8,8, +0x009fdc,10, 0x00a008,14, 0x00a080,1, 0x00a088,18, 0x00a100,9, 0x00a134,2, 0x00a14c,4, -0x00a16c,6, -0x00a18c,8, -0x00a1b0,1, -0x00a200,2, -0x00a20c,1, -0x00a214,13, -0x00a254,5, -0x00a26c,7, +0x00a16c,11, +0x00a1ac,8, +0x00a1d0,1, +0x00a204,1, +0x00a20c,13, +0x00a244,1, +0x00a254,3, +0x00a264,1, +0x00a26c,8, 0x00a2a8,3, 0x00a2c0,8, 0x00a300,6, -0x00a380,3, -0x00a3a0,14, -0x00a3e0,9, +0x00a360,4, +0x00a380,8, +0x00a3b8,8, +0x00a3dc,10, 0x00a408,14, 0x00a480,1, 0x00a488,18, 0x00a500,9, 0x00a534,2, 0x00a54c,4, -0x00a56c,6, -0x00a58c,8, -0x00a5b0,1, -0x00a600,2, -0x00a60c,1, -0x00a614,13, -0x00a654,5, -0x00a66c,7, +0x00a56c,11, +0x00a5ac,8, +0x00a5d0,1, +0x00a604,1, +0x00a60c,13, +0x00a644,1, +0x00a654,3, +0x00a664,1, +0x00a66c,8, 0x00a6a8,3, 0x00a6c0,8, 0x00a700,6, -0x00a780,3, -0x00a7a0,14, -0x00a7e0,9, +0x00a760,4, +0x00a780,8, +0x00a7b8,8, +0x00a7dc,10, 0x00a808,14, 0x00a880,1, 0x00a888,18, 0x00a900,9, 0x00a934,2, 0x00a94c,4, -0x00a96c,6, -0x00a98c,8, -0x00a9b0,1, -0x00aa00,2, -0x00aa0c,1, -0x00aa14,13, -0x00aa54,5, -0x00aa6c,7, +0x00a96c,11, +0x00a9ac,8, +0x00a9d0,1, +0x00aa04,1, +0x00aa0c,13, +0x00aa44,1, +0x00aa54,3, +0x00aa64,1, +0x00aa6c,8, 0x00aaa8,3, 0x00aac0,8, 0x00ab00,6, -0x00ab80,3, -0x00aba0,14, -0x00abe0,9, +0x00ab60,4, +0x00ab80,8, +0x00abb8,8, +0x00abdc,10, 0x00ac08,14, 0x00ac80,1, 0x00ac88,18, 0x00ad00,9, 0x00ad34,2, 0x00ad4c,4, -0x00ad6c,6, -0x00ad8c,8, -0x00adb0,1, -0x00ae00,2, -0x00ae0c,1, -0x00ae14,13, -0x00ae54,5, -0x00ae6c,7, +0x00ad6c,11, +0x00adac,8, +0x00add0,1, +0x00ae04,1, +0x00ae0c,13, +0x00ae44,1, +0x00ae54,3, +0x00ae64,1, +0x00ae6c,8, 0x00aea8,3, 0x00aec0,8, 0x00af00,6, -0x00af80,3, -0x00afa0,14, -0x00afe0,9, +0x00af60,4, +0x00af80,8, +0x00afb8,8, +0x00afdc,10, 0x00b008,14, 0x00b080,1, 0x00b088,18, 0x00b100,9, 0x00b134,2, 0x00b14c,4, -0x00b16c,6, -0x00b18c,8, -0x00b1b0,1, -0x00b200,2, -0x00b20c,1, -0x00b214,13, -0x00b254,5, -0x00b26c,7, +0x00b16c,11, +0x00b1ac,8, +0x00b1d0,1, +0x00b204,1, +0x00b20c,13, +0x00b244,1, +0x00b254,3, +0x00b264,1, +0x00b26c,8, 0x00b2a8,3, 0x00b2c0,8, 0x00b300,6, -0x00b380,3, -0x00b3a0,14, -0x00b3e0,9, +0x00b360,4, +0x00b380,8, +0x00b3b8,8, +0x00b3dc,10, 0x00b408,14, 0x00b480,1, 0x00b488,18, 0x00b500,9, 0x00b534,2, 0x00b54c,4, -0x00b56c,6, -0x00b58c,8, -0x00b5b0,1, -0x00b600,2, -0x00b60c,1, -0x00b614,13, -0x00b654,5, -0x00b66c,7, +0x00b56c,11, +0x00b5ac,8, +0x00b5d0,1, +0x00b604,1, +0x00b60c,13, +0x00b644,1, +0x00b654,3, +0x00b664,1, +0x00b66c,8, 0x00b6a8,3, 0x00b6c0,8, 0x00b700,6, -0x00b780,3, -0x00b7a0,14, -0x00b7e0,9, +0x00b760,4, +0x00b780,8, +0x00b7b8,8, +0x00b7dc,10, 0x00b808,14, 0x00b880,1, 0x00b888,18, 0x00b900,9, 0x00b934,2, 0x00b94c,4, -0x00b96c,6, -0x00b98c,8, -0x00b9b0,1, -0x00ba00,2, -0x00ba0c,1, -0x00ba14,13, -0x00ba54,5, -0x00ba6c,7, +0x00b96c,11, +0x00b9ac,8, +0x00b9d0,1, +0x00ba04,1, +0x00ba0c,13, +0x00ba44,1, +0x00ba54,3, +0x00ba64,1, +0x00ba6c,8, 0x00baa8,3, 0x00bac0,8, 0x00bb00,6, -0x00bb80,3, -0x00bba0,14, -0x00bbe0,9, +0x00bb60,4, +0x00bb80,8, +0x00bbb8,8, +0x00bbdc,10, 0x00bc08,14, 0x00bc80,1, 0x00bc88,18, 0x00bd00,9, 0x00bd34,2, 0x00bd4c,4, -0x00bd6c,6, -0x00bd8c,8, -0x00bdb0,1, -0x00be00,2, -0x00be0c,1, -0x00be14,13, -0x00be54,5, -0x00be6c,7, +0x00bd6c,11, +0x00bdac,8, +0x00bdd0,1, +0x00be04,1, +0x00be0c,13, +0x00be44,1, +0x00be54,3, +0x00be64,1, +0x00be6c,8, 0x00bea8,3, 0x00bec0,8, 0x00bf00,6, -0x00bf80,3, -0x00bfa0,14, -0x00bfe0,9, +0x00bf60,4, +0x00bf80,8, +0x00bfb8,8, +0x00bfdc,10, 0x00c008,14, 0x00c080,1, 0x00c088,18, 0x00c100,9, 0x00c134,2, 0x00c14c,4, -0x00c16c,6, -0x00c18c,8, -0x00c1b0,1, -0x00c200,2, -0x00c20c,1, -0x00c214,13, -0x00c254,5, -0x00c26c,7, +0x00c16c,11, +0x00c1ac,8, +0x00c1d0,1, +0x00c204,1, +0x00c20c,13, +0x00c244,1, +0x00c254,3, +0x00c264,1, +0x00c26c,8, 0x00c2a8,3, 0x00c2c0,8, 0x00c300,6, -0x00c380,3, -0x00c3a0,14, -0x00c3e0,9, +0x00c360,4, +0x00c380,8, +0x00c3b8,8, +0x00c3dc,10, 0x00c408,14, 0x00c480,1, 0x00c488,18, 0x00c500,9, 0x00c534,2, 0x00c54c,4, -0x00c56c,6, -0x00c58c,8, -0x00c5b0,1, -0x00c600,2, -0x00c60c,1, -0x00c614,13, -0x00c654,5, -0x00c66c,7, +0x00c56c,11, +0x00c5ac,8, +0x00c5d0,1, +0x00c604,1, +0x00c60c,13, +0x00c644,1, +0x00c654,3, +0x00c664,1, +0x00c66c,8, 0x00c6a8,3, 0x00c6c0,8, 0x00c700,6, -0x00c780,3, -0x00c7a0,14, -0x00c7e0,9, +0x00c760,4, +0x00c780,8, +0x00c7b8,8, +0x00c7dc,10, 0x00c808,14, 0x00c880,1, 0x00c888,18, 0x00c900,9, 0x00c934,2, 0x00c94c,4, -0x00c96c,6, -0x00c98c,8, -0x00c9b0,1, -0x00ca00,2, -0x00ca0c,1, -0x00ca14,13, -0x00ca54,5, -0x00ca6c,7, +0x00c96c,11, +0x00c9ac,8, +0x00c9d0,1, +0x00ca04,1, +0x00ca0c,13, +0x00ca44,1, +0x00ca54,3, +0x00ca64,1, +0x00ca6c,8, 0x00caa8,3, 0x00cac0,8, 0x00cb00,6, -0x00cb80,3, -0x00cba0,14, -0x00cbe0,9, +0x00cb60,4, +0x00cb80,8, +0x00cbb8,8, +0x00cbdc,10, 0x00cc08,14, 0x00cc80,1, 0x00cc88,18, 0x00cd00,9, 0x00cd34,2, 0x00cd4c,4, -0x00cd6c,6, -0x00cd8c,8, -0x00cdb0,1, -0x00ce00,2, -0x00ce0c,1, -0x00ce14,13, -0x00ce54,5, -0x00ce6c,7, +0x00cd6c,11, +0x00cdac,8, +0x00cdd0,1, +0x00ce04,1, +0x00ce0c,13, +0x00ce44,1, +0x00ce54,3, +0x00ce64,1, +0x00ce6c,8, 0x00cea8,3, 0x00cec0,8, 0x00cf00,6, -0x00cf80,3, -0x00cfa0,14, -0x00cfe0,9, -0x00d018,1, -0x00d034,1, -0x00d12c,1, -0x00d190,1, -0x00d1ac,1, -0x00d1d8,4, -0x00d200,8, -0x00d400,13, -0x00d460,3, -0x00d470,2, -0x00d504,2, -0x00d518,1, -0x00d540,1, +0x00cf60,4, +0x00cf80,8, +0x00cfb8,8, +0x00cfdc,10, +0x00d008,14, +0x00d080,1, +0x00d088,18, +0x00d100,9, +0x00d134,2, +0x00d14c,4, +0x00d16c,11, +0x00d1ac,8, +0x00d1d0,1, +0x00d204,1, +0x00d20c,13, +0x00d244,1, +0x00d254,3, +0x00d264,1, +0x00d26c,8, +0x00d2a8,3, +0x00d2c0,8, +0x00d300,6, +0x00d360,4, +0x00d380,8, +0x00d3b8,8, +0x00d3dc,10, +0x00d428,1, +0x00d450,1, +0x00d478,1, +0x00d4a0,1, +0x00d5ac,1, +0x00d5d8,4, +0x00d600,6, +0x00d620,6, +0x00d640,3, +0x00d800,13, +0x00d840,6, +0x00d860,3, +0x00d880,2, +0x00d904,2, +0x00d918,1, +0x00d940,1, 0x010000,1, 0x010008,10, 0x010034,16, -0x010080,37, +0x010080,33, +0x010110,5, 0x010128,2, 0x010134,1, -0x01013c,10, -0x010168,4, -0x01017c,3, -0x01018c,10, -0x0101c0,6, -0x0101e0,1, +0x01013c,13, +0x010174,1, +0x01017c,7, +0x0101a0,17, +0x0101e8,3, 0x010200,1, 0x010208,10, 0x010234,16, -0x010280,37, +0x010280,33, +0x010310,5, 0x010328,2, 0x010334,1, -0x01033c,10, -0x010368,4, -0x01037c,3, -0x01038c,10, -0x0103c0,6, -0x0103e0,1, +0x01033c,13, +0x010374,1, +0x01037c,7, +0x0103a0,17, +0x0103e8,3, 0x010400,1, 0x010408,10, 0x010434,16, -0x010480,37, +0x010480,33, +0x010510,5, 0x010528,2, 0x010534,1, -0x01053c,10, -0x010568,4, -0x01057c,3, -0x01058c,10, -0x0105c0,6, -0x0105e0,1, +0x01053c,13, +0x010574,1, +0x01057c,7, +0x0105a0,17, +0x0105e8,3, 0x010600,1, 0x010608,10, 0x010634,16, -0x010680,37, +0x010680,33, +0x010710,5, 0x010728,2, 0x010734,1, -0x01073c,10, -0x010768,4, -0x01077c,3, -0x01078c,10, -0x0107c0,6, -0x0107e0,1, +0x01073c,13, +0x010774,1, +0x01077c,7, +0x0107a0,17, +0x0107e8,3, 0x010800,1, 0x010808,10, 0x010834,16, -0x010880,37, +0x010880,33, +0x010910,5, 0x010928,2, 0x010934,1, -0x01093c,10, -0x010968,4, -0x01097c,3, -0x01098c,10, -0x0109c0,6, -0x0109e0,1, +0x01093c,13, +0x010974,1, +0x01097c,7, +0x0109a0,17, +0x0109e8,3, 0x010a00,1, 0x010a08,10, 0x010a34,16, -0x010a80,37, +0x010a80,33, +0x010b10,5, 0x010b28,2, 0x010b34,1, -0x010b3c,10, -0x010b68,4, -0x010b7c,3, -0x010b8c,10, -0x010bc0,6, -0x010be0,1, +0x010b3c,13, +0x010b74,1, +0x010b7c,7, +0x010ba0,17, +0x010be8,3, 0x010c00,1, 0x010c08,10, 0x010c34,16, -0x010c80,37, +0x010c80,33, +0x010d10,5, 0x010d28,2, 0x010d34,1, -0x010d3c,10, -0x010d68,4, -0x010d7c,3, -0x010d8c,10, -0x010dc0,6, -0x010de0,1, +0x010d3c,13, +0x010d74,1, +0x010d7c,7, +0x010da0,17, +0x010de8,3, 0x010e00,1, 0x010e08,10, 0x010e34,16, -0x010e80,37, +0x010e80,33, +0x010f10,5, 0x010f28,2, 0x010f34,1, -0x010f3c,10, -0x010f68,4, -0x010f7c,3, -0x010f8c,10, -0x010fc0,6, -0x010fe0,1, +0x010f3c,13, +0x010f74,1, +0x010f7c,7, +0x010fa0,17, +0x010fe8,3, 0x011000,1, 0x011008,10, 0x011034,16, -0x011080,37, +0x011080,33, +0x011110,5, 0x011128,2, 0x011134,1, -0x01113c,10, -0x011168,4, -0x01117c,3, -0x01118c,10, -0x0111c0,6, -0x0111e0,1, +0x01113c,13, +0x011174,1, +0x01117c,7, +0x0111a0,17, +0x0111e8,3, 0x011200,1, 0x011208,10, 0x011234,16, -0x011280,37, +0x011280,33, +0x011310,5, 0x011328,2, 0x011334,1, -0x01133c,10, -0x011368,4, -0x01137c,3, -0x01138c,10, -0x0113c0,6, -0x0113e0,1, +0x01133c,13, +0x011374,1, +0x01137c,7, +0x0113a0,17, +0x0113e8,3, 0x011400,1, 0x011408,10, 0x011434,16, -0x011480,37, +0x011480,33, +0x011510,5, 0x011528,2, 0x011534,1, -0x01153c,10, -0x011568,4, -0x01157c,3, -0x01158c,10, -0x0115c0,6, -0x0115e0,1, +0x01153c,13, +0x011574,1, +0x01157c,7, +0x0115a0,17, +0x0115e8,3, 0x011600,1, 0x011608,10, 0x011634,16, -0x011680,37, +0x011680,33, +0x011710,5, 0x011728,2, 0x011734,1, -0x01173c,10, -0x011768,4, -0x01177c,3, -0x01178c,10, -0x0117c0,6, -0x0117e0,1, +0x01173c,13, +0x011774,1, +0x01177c,7, +0x0117a0,17, +0x0117e8,3, 0x011800,1, 0x011808,10, 0x011834,16, -0x011880,37, +0x011880,33, +0x011910,5, 0x011928,2, 0x011934,1, -0x01193c,10, -0x011968,4, -0x01197c,3, -0x01198c,10, -0x0119c0,6, -0x0119e0,1, +0x01193c,13, +0x011974,1, +0x01197c,7, +0x0119a0,17, +0x0119e8,3, 0x011a00,1, 0x011a08,10, 0x011a34,16, -0x011a80,37, +0x011a80,33, +0x011b10,5, 0x011b28,2, 0x011b34,1, -0x011b3c,10, -0x011b68,4, -0x011b7c,3, -0x011b8c,10, -0x011bc0,6, -0x011be0,1, +0x011b3c,13, +0x011b74,1, +0x011b7c,7, +0x011ba0,17, +0x011be8,3, 0x011c00,1, 0x011c08,10, 0x011c34,16, -0x011c80,37, +0x011c80,33, +0x011d10,5, 0x011d28,2, 0x011d34,1, -0x011d3c,10, -0x011d68,4, -0x011d7c,3, -0x011d8c,10, -0x011dc0,6, -0x011de0,1, +0x011d3c,13, +0x011d74,1, +0x011d7c,7, +0x011da0,17, +0x011de8,3, 0x011e00,1, 0x011e08,10, 0x011e34,16, -0x011e80,37, +0x011e80,33, +0x011f10,5, 0x011f28,2, 0x011f34,1, -0x011f3c,10, -0x011f68,4, -0x011f7c,3, -0x011f8c,10, -0x011fc0,6, -0x011fe0,1, +0x011f3c,13, +0x011f74,1, +0x011f7c,7, +0x011fa0,17, +0x011fe8,3, 0x012000,1, 0x012008,10, 0x012034,16, -0x012080,37, +0x012080,33, +0x012110,5, 0x012128,2, 0x012134,1, -0x01213c,10, -0x012168,4, -0x01217c,3, -0x01218c,10, -0x0121c0,6, -0x0121e0,1, +0x01213c,13, +0x012174,1, +0x01217c,7, +0x0121a0,17, +0x0121e8,3, 0x012200,1, 0x012208,10, 0x012234,16, -0x012280,37, +0x012280,33, +0x012310,5, 0x012328,2, 0x012334,1, -0x01233c,10, -0x012368,4, -0x01237c,3, -0x01238c,10, -0x0123c0,6, -0x0123e0,1, +0x01233c,13, +0x012374,1, +0x01237c,7, +0x0123a0,17, +0x0123e8,3, 0x012800,2, 0x01280c,37, 0x0128a4,64, -0x012a00,52, -0x012ad4,2, -0x012ae4,38, -0x012bac,1, -0x012bb4,1, -0x012bbc,4, -0x012bd0,2, -0x012bdc,2, -0x012c00,6, -0x012c20,6, -0x012c40,6, -0x012c60,6, -0x012c80,3, -0x012d00,10, -0x012d30,4, -0x012e00,57, -0x012f00,1, +0x012a00,84, +0x012b54,2, +0x012b7c,1, +0x012b84,1, +0x012b8c,4, +0x012ba4,1, +0x012bac,75, +0x012d00,60, +0x012dfc,7, +0x012e20,6, +0x012e40,6, +0x012e60,6, +0x012e80,3, +0x012f00,14, +0x012f40,1, 0x013000,3, -0x013018,3, -0x013034,3, -0x01312c,6, -0x013190,3, +0x013028,3, +0x013050,3, +0x013078,3, +0x0130a0,6, 0x0131ac,1, 0x0131d8,4, -0x013200,24, +0x013200,6, +0x013220,6, +0x013240,6, +0x013260,6, +0x013280,6, +0x0132a0,6, +0x0132c0,3, 0x013400,6, 0x013420,3, -0x013440,2, +0x013440,3, 0x013500,13, 0x013540,1, 0x013900,1, 0x014000,1, 0x014008,10, 0x014034,16, -0x014080,37, +0x014080,33, +0x014110,5, 0x014128,2, 0x014134,1, -0x01413c,10, -0x014168,4, -0x01417c,3, -0x01418c,10, -0x0141c0,6, -0x0141e0,1, +0x01413c,13, +0x014174,1, +0x01417c,7, +0x0141a0,17, +0x0141e8,3, 0x014200,1, 0x014208,10, 0x014234,16, -0x014280,37, +0x014280,33, +0x014310,5, 0x014328,2, 0x014334,1, -0x01433c,10, -0x014368,4, -0x01437c,3, -0x01438c,10, -0x0143c0,6, -0x0143e0,1, +0x01433c,13, +0x014374,1, +0x01437c,7, +0x0143a0,17, +0x0143e8,3, 0x014400,1, 0x014408,10, 0x014434,16, -0x014480,37, +0x014480,33, +0x014510,5, 0x014528,2, 0x014534,1, -0x01453c,10, -0x014568,4, -0x01457c,3, -0x01458c,10, -0x0145c0,6, -0x0145e0,1, +0x01453c,13, +0x014574,1, +0x01457c,7, +0x0145a0,17, +0x0145e8,3, 0x014600,1, 0x014608,10, 0x014634,16, -0x014680,37, +0x014680,33, +0x014710,5, 0x014728,2, 0x014734,1, -0x01473c,10, -0x014768,4, -0x01477c,3, -0x01478c,10, -0x0147c0,6, -0x0147e0,1, +0x01473c,13, +0x014774,1, +0x01477c,7, +0x0147a0,17, +0x0147e8,3, 0x014800,1, 0x014808,10, 0x014834,16, -0x014880,37, +0x014880,33, +0x014910,5, 0x014928,2, 0x014934,1, -0x01493c,10, -0x014968,4, -0x01497c,3, -0x01498c,10, -0x0149c0,6, -0x0149e0,1, +0x01493c,13, +0x014974,1, +0x01497c,7, +0x0149a0,17, +0x0149e8,3, 0x014a00,1, 0x014a08,10, 0x014a34,16, -0x014a80,37, +0x014a80,33, +0x014b10,5, 0x014b28,2, 0x014b34,1, -0x014b3c,10, -0x014b68,4, -0x014b7c,3, -0x014b8c,10, -0x014bc0,6, -0x014be0,1, +0x014b3c,13, +0x014b74,1, +0x014b7c,7, +0x014ba0,17, +0x014be8,3, 0x014c00,1, 0x014c08,10, 0x014c34,16, -0x014c80,37, +0x014c80,33, +0x014d10,5, 0x014d28,2, 0x014d34,1, -0x014d3c,10, -0x014d68,4, -0x014d7c,3, -0x014d8c,10, -0x014dc0,6, -0x014de0,1, +0x014d3c,13, +0x014d74,1, +0x014d7c,7, +0x014da0,17, +0x014de8,3, 0x014e00,1, 0x014e08,10, 0x014e34,16, -0x014e80,37, +0x014e80,33, +0x014f10,5, 0x014f28,2, 0x014f34,1, -0x014f3c,10, -0x014f68,4, -0x014f7c,3, -0x014f8c,10, -0x014fc0,6, -0x014fe0,1, +0x014f3c,13, +0x014f74,1, +0x014f7c,7, +0x014fa0,17, +0x014fe8,3, 0x015000,1, 0x015008,10, 0x015034,16, -0x015080,37, +0x015080,33, +0x015110,5, 0x015128,2, 0x015134,1, -0x01513c,10, -0x015168,4, -0x01517c,3, -0x01518c,10, -0x0151c0,6, -0x0151e0,1, +0x01513c,13, +0x015174,1, +0x01517c,7, +0x0151a0,17, +0x0151e8,3, 0x015200,1, 0x015208,10, 0x015234,16, -0x015280,37, +0x015280,33, +0x015310,5, 0x015328,2, 0x015334,1, -0x01533c,10, -0x015368,4, -0x01537c,3, -0x01538c,10, -0x0153c0,6, -0x0153e0,1, +0x01533c,13, +0x015374,1, +0x01537c,7, +0x0153a0,17, +0x0153e8,3, 0x015400,1, 0x015408,10, 0x015434,16, -0x015480,37, +0x015480,33, +0x015510,5, 0x015528,2, 0x015534,1, -0x01553c,10, -0x015568,4, -0x01557c,3, -0x01558c,10, -0x0155c0,6, -0x0155e0,1, +0x01553c,13, +0x015574,1, +0x01557c,7, +0x0155a0,17, +0x0155e8,3, 0x015600,1, 0x015608,10, 0x015634,16, -0x015680,37, +0x015680,33, +0x015710,5, 0x015728,2, 0x015734,1, -0x01573c,10, -0x015768,4, -0x01577c,3, -0x01578c,10, -0x0157c0,6, -0x0157e0,1, +0x01573c,13, +0x015774,1, +0x01577c,7, +0x0157a0,17, +0x0157e8,3, 0x015800,1, 0x015808,10, 0x015834,16, -0x015880,37, +0x015880,33, +0x015910,5, 0x015928,2, 0x015934,1, -0x01593c,10, -0x015968,4, -0x01597c,3, -0x01598c,10, -0x0159c0,6, -0x0159e0,1, +0x01593c,13, +0x015974,1, +0x01597c,7, +0x0159a0,17, +0x0159e8,3, 0x015a00,1, 0x015a08,10, 0x015a34,16, -0x015a80,37, +0x015a80,33, +0x015b10,5, 0x015b28,2, 0x015b34,1, -0x015b3c,10, -0x015b68,4, -0x015b7c,3, -0x015b8c,10, -0x015bc0,6, -0x015be0,1, +0x015b3c,13, +0x015b74,1, +0x015b7c,7, +0x015ba0,17, +0x015be8,3, 0x015c00,1, 0x015c08,10, 0x015c34,16, -0x015c80,37, +0x015c80,33, +0x015d10,5, 0x015d28,2, 0x015d34,1, -0x015d3c,10, -0x015d68,4, -0x015d7c,3, -0x015d8c,10, -0x015dc0,6, -0x015de0,1, +0x015d3c,13, +0x015d74,1, +0x015d7c,7, +0x015da0,17, +0x015de8,3, 0x015e00,1, 0x015e08,10, 0x015e34,16, -0x015e80,37, +0x015e80,33, +0x015f10,5, 0x015f28,2, 0x015f34,1, -0x015f3c,10, -0x015f68,4, -0x015f7c,3, -0x015f8c,10, -0x015fc0,6, -0x015fe0,1, +0x015f3c,13, +0x015f74,1, +0x015f7c,7, +0x015fa0,17, +0x015fe8,3, 0x016000,1, 0x016008,10, 0x016034,16, -0x016080,37, +0x016080,33, +0x016110,5, 0x016128,2, 0x016134,1, -0x01613c,10, -0x016168,4, -0x01617c,3, -0x01618c,10, -0x0161c0,6, -0x0161e0,1, +0x01613c,13, +0x016174,1, +0x01617c,7, +0x0161a0,17, +0x0161e8,3, 0x016200,1, 0x016208,10, 0x016234,16, -0x016280,37, +0x016280,33, +0x016310,5, 0x016328,2, 0x016334,1, -0x01633c,10, -0x016368,4, -0x01637c,3, -0x01638c,10, -0x0163c0,6, -0x0163e0,1, +0x01633c,13, +0x016374,1, +0x01637c,7, +0x0163a0,17, +0x0163e8,3, 0x016800,2, 0x01680c,37, 0x0168a4,64, -0x016a00,52, -0x016ad4,2, -0x016ae4,38, -0x016bac,1, -0x016bb4,1, -0x016bbc,4, -0x016bd0,2, -0x016bdc,2, -0x016c00,6, -0x016c20,6, -0x016c40,6, -0x016c60,6, -0x016c80,3, -0x016d00,10, -0x016d30,4, -0x016e00,57, -0x016f00,1, +0x016a00,84, +0x016b54,2, +0x016b7c,1, +0x016b84,1, +0x016b8c,4, +0x016ba4,1, +0x016bac,75, +0x016d00,60, +0x016dfc,7, +0x016e20,6, +0x016e40,6, +0x016e60,6, +0x016e80,3, +0x016f00,14, +0x016f40,1, 0x017000,3, -0x017018,3, -0x017034,3, -0x01712c,6, -0x017190,3, +0x017028,3, +0x017050,3, +0x017078,3, +0x0170a0,6, 0x0171ac,1, 0x0171d8,4, -0x017200,24, +0x017200,6, +0x017220,6, +0x017240,6, +0x017260,6, +0x017280,6, +0x0172a0,6, +0x0172c0,3, 0x017400,6, 0x017420,3, -0x017440,2, +0x017440,3, 0x017500,13, 0x017540,1, 0x017900,1, -0x018000,6, -0x018020,4, -0x018040,6, -0x018060,4, -0x018080,6, -0x0180a0,4, -0x0180c0,6, -0x0180e0,4, -0x018100,6, -0x018120,4, -0x018140,6, -0x018160,4, -0x018180,6, -0x0181a0,4, -0x0181c0,6, -0x0181e0,4, -0x018200,6, -0x018220,4, -0x018240,6, -0x018260,4, -0x018280,6, -0x0182a0,4, -0x0182c0,6, -0x0182e0,4, -0x018300,6, -0x018320,4, -0x018340,6, -0x018360,4, -0x018380,6, -0x0183a0,4, -0x0183c0,6, -0x0183e0,4, -0x018400,6, -0x018420,4, -0x018440,6, -0x018460,4, -0x018480,6, -0x0184a0,4, -0x0184c0,6, -0x0184e0,4, -0x018500,6, -0x018520,4, -0x018540,6, -0x018560,4, -0x018580,6, -0x0185a0,4, -0x0185c0,6, -0x0185e0,4, -0x018600,6, -0x018620,4, -0x018640,6, -0x018660,4, -0x018680,6, -0x0186a0,4, -0x0186c0,6, -0x0186e0,4, -0x018700,6, -0x018720,4, -0x018740,6, -0x018760,4, -0x018780,6, -0x0187a0,4, -0x0187c0,6, -0x0187e0,4, -0x018800,6, -0x018820,4, -0x018840,6, -0x018860,4, -0x018880,6, -0x0188a0,4, -0x0188c0,6, -0x0188e0,4, -0x018900,6, -0x018920,4, -0x018940,6, -0x018960,4, -0x018980,6, -0x0189a0,4, -0x0189c0,6, -0x0189e0,4, -0x019000,7, -0x019020,1, -0x019040,7, -0x019060,1, -0x019080,7, -0x0190a0,1, -0x0190c0,7, -0x0190e0,1, -0x019100,7, -0x019120,1, -0x019140,7, -0x019160,1, -0x019180,7, -0x0191a0,1, -0x0191c0,7, -0x0191e0,1, -0x019200,7, -0x019220,1, -0x019240,7, -0x019260,1, -0x019280,7, -0x0192a0,1, -0x0192c0,7, -0x0192e0,1, -0x019300,7, -0x019320,1, -0x019340,7, -0x019360,1, -0x019380,7, -0x0193a0,1, -0x0193c0,7, -0x0193e0,1, -0x019400,7, -0x019420,1, -0x019440,7, -0x019460,1, -0x019480,7, -0x0194a0,1, -0x0194c0,7, -0x0194e0,1, -0x019500,7, -0x019520,1, -0x019540,7, -0x019560,1, -0x019580,7, -0x0195a0,1, -0x0195c0,7, -0x0195e0,1, -0x019600,7, -0x019620,1, -0x019640,7, -0x019660,1, -0x019680,7, -0x0196a0,1, -0x0196c0,7, -0x0196e0,1, -0x019700,7, -0x019720,1, -0x019740,7, -0x019760,1, -0x019780,7, -0x0197a0,1, -0x0197c0,7, -0x0197e0,1, -0x019800,7, -0x019820,1, -0x019840,7, -0x019860,1, -0x019880,7, -0x0198a0,1, -0x0198c0,7, -0x0198e0,1, -0x019900,6, +0x018000,9, +0x018030,8, +0x018080,9, +0x0180b0,8, +0x018100,9, +0x018130,8, +0x018180,9, +0x0181b0,8, +0x018200,9, +0x018230,8, +0x018280,9, +0x0182b0,8, +0x018300,9, +0x018330,8, +0x018380,9, +0x0183b0,8, +0x018400,9, +0x018430,8, +0x018480,9, +0x0184b0,8, +0x018500,9, +0x018530,8, +0x018580,9, +0x0185b0,8, +0x018600,9, +0x018630,8, +0x018680,9, +0x0186b0,8, +0x018700,9, +0x018730,8, +0x018780,9, +0x0187b0,8, +0x018800,9, +0x018830,8, +0x018880,9, +0x0188b0,8, +0x018900,9, +0x018930,8, +0x018980,9, +0x0189b0,8, +0x018a00,9, +0x018a30,8, +0x018a80,9, +0x018ab0,8, +0x018b00,9, +0x018b30,8, +0x018b80,9, +0x018bb0,8, +0x018c00,9, +0x018c30,8, +0x018c80,9, +0x018cb0,8, +0x018d00,9, +0x018d30,8, +0x018d80,9, +0x018db0,8, +0x018e00,9, +0x018e30,8, +0x018e80,9, +0x018eb0,8, +0x018f00,9, +0x018f30,8, +0x018f80,9, +0x018fb0,8, +0x019000,9, +0x019030,8, +0x019080,9, +0x0190b0,8, +0x019100,9, +0x019130,8, +0x019180,9, +0x0191b0,8, +0x019200,6, +0x019220,3, +0x019230,10, +0x019260,3, +0x019270,10, +0x0192a0,3, +0x0192b0,10, +0x0192e0,3, +0x0192f0,10, +0x019320,3, +0x019330,10, +0x019360,3, +0x019370,10, +0x0193a0,3, +0x0193b0,10, +0x0193e0,3, +0x0193f0,10, +0x019420,3, +0x019430,10, +0x019460,3, +0x019470,10, +0x0194a0,3, +0x0194b0,10, +0x0194e0,3, +0x0194f0,10, +0x019520,3, +0x019530,10, +0x019560,3, +0x019570,10, +0x0195a0,3, +0x0195b0,10, +0x0195e0,3, +0x0195f0,10, +0x019620,3, +0x019630,10, +0x019660,3, +0x019670,10, +0x0196a0,3, +0x0196b0,10, +0x0196e0,3, +0x0196f0,10, +0x019720,3, +0x019730,10, +0x019760,3, +0x019770,10, +0x0197a0,3, +0x0197b0,10, +0x0197e0,3, +0x0197f0,10, +0x019820,3, +0x019830,10, +0x019860,3, +0x019870,10, +0x0198a0,3, +0x0198b0,10, +0x0198e0,3, +0x0198f0,10, 0x019920,3, -0x019980,3, -0x0199ac,1, -0x0199c0,3, -0x0199d0,3, -0x0199fc,5, -0x019ff4,41, -0x01a100,37, -0x01a200,18, -0x01b400,2, -0x01c000,12, -0x01c03c,13, -0x01c07c,13, -0x01c0bc,13, -0x01c0fc,13, -0x01c13c,13, -0x01c17c,13, -0x01c1bc,13, -0x01c1fc,13, -0x01c23c,13, -0x01c27c,13, -0x01c2bc,13, -0x01c2fc,13, -0x01c33c,13, -0x01c37c,13, -0x01c3bc,13, -0x01c3fc,13, -0x01c43c,13, -0x01c47c,13, -0x01c4bc,13, -0x01c4fc,13, -0x01c53c,13, -0x01c57c,13, -0x01c5bc,13, -0x01c5fc,13, -0x01c63c,13, -0x01c67c,13, -0x01c6bc,13, -0x01c6fc,13, -0x01c73c,13, -0x01c77c,13, -0x01c7bc,13, -0x01c7fc,13, -0x01c83c,13, -0x01c87c,13, -0x01c8bc,13, -0x01c8fc,1, -0x01ca00,2, -0x01ca1c,3, -0x01ca3c,3, -0x01ca5c,3, -0x01ca7c,3, -0x01ca9c,3, -0x01cabc,3, -0x01cadc,3, -0x01cafc,3, -0x01cb1c,3, -0x01cb3c,3, -0x01cb5c,3, -0x01cb7c,3, -0x01cb9c,3, -0x01cbbc,3, -0x01cbdc,3, -0x01cbfc,3, -0x01cc1c,3, -0x01cc3c,3, -0x01cc5c,3, -0x01cc7c,3, -0x01cc9c,3, -0x01ccbc,3, -0x01ccdc,3, -0x01ccfc,3, -0x01cd1c,3, -0x01cd3c,3, -0x01cd5c,3, -0x01cd7c,3, -0x01cd9c,3, -0x01cdbc,3, -0x01cddc,3, -0x01cdfc,3, -0x01ce1c,3, -0x01ce3c,3, -0x01ce5c,3, -0x01ce7c,14, -0x01cec0,1, -0x01f3ec,1, -0x01f3fc,12, -0x01f440,2, -0x01f45c,1, +0x019930,10, +0x019960,3, +0x019970,10, +0x0199a0,3, +0x0199b0,10, +0x0199e0,3, +0x0199f0,10, +0x019a20,3, +0x019a30,10, +0x019a60,3, +0x019a70,10, +0x019aa0,3, +0x019ab0,10, +0x019ae0,3, +0x019af0,4, +0x01a400,13, +0x01a440,6, +0x01a460,3, +0x01a480,8, +0x01a4b0,7, +0x01a4d0,3, +0x01a500,6, +0x01a520,6, +0x01a540,6, +0x01a560,6, +0x01a580,6, +0x01a5a0,6, +0x01a5c0,6, +0x01a5e0,6, +0x01a600,6, +0x01a620,6, +0x01a640,6, +0x01a660,6, +0x01a680,6, +0x01a6a0,6, +0x01a6c0,6, +0x01a6e0,6, +0x01a700,6, +0x01a720,6, +0x01a740,6, +0x01a760,6, +0x01a780,6, +0x01a7a0,6, +0x01a7c0,6, +0x01a7e0,6, +0x01a800,6, +0x01a820,6, +0x01a840,6, +0x01a860,6, +0x01a880,6, +0x01a8a0,6, +0x01a8c0,6, +0x01a8e0,6, +0x01a900,6, +0x01a920,6, +0x01a940,6, +0x01a960,6, +0x01ab00,6, +0x01ab20,3, +0x01ab30,10, +0x01ab60,3, +0x01ab70,10, +0x01aba0,3, +0x01abb0,10, +0x01abe0,3, +0x01abf0,9, +0x01acf4,3, +0x01b000,38, +0x01b100,37, +0x01b200,18, +0x01b400,6, +0x01b420,6, +0x01b440,6, +0x01b460,6, +0x01b480,6, +0x01b4a0,6, +0x01b4c0,6, +0x01b4e0,6, +0x01b500,6, +0x01b520,6, +0x01b540,6, +0x01b560,6, +0x01b580,6, +0x01b5a0,6, +0x01b5c0,6, +0x01b5e0,6, +0x01b600,6, +0x01b620,6, +0x01b640,3, +0x01b800,6, +0x01b820,6, +0x01b840,6, +0x01b860,6, +0x01b880,6, +0x01b8a0,6, +0x01b8c0,6, +0x01b8e0,6, +0x01b900,6, +0x01b920,6, +0x01b940,6, +0x01b960,6, +0x01b980,6, +0x01b9a0,6, +0x01b9c0,6, +0x01b9e0,6, +0x01ba00,6, +0x01ba20,6, +0x01ba40,6, +0x01ba60,3, +0x01bc00,2, +0x01c000,22, +0x01c060,3, +0x01c070,26, +0x01c0e0,3, +0x01c0f0,26, +0x01c160,3, +0x01c170,26, +0x01c1e0,3, +0x01c1f0,26, +0x01c260,3, +0x01c270,26, +0x01c2e0,3, +0x01c2f0,26, +0x01c360,3, +0x01c370,26, +0x01c3e0,3, +0x01c3f0,26, +0x01c460,3, +0x01c470,26, +0x01c4e0,3, +0x01c4f0,26, +0x01c560,3, +0x01c570,26, +0x01c5e0,3, +0x01c5f0,26, +0x01c660,3, +0x01c670,26, +0x01c6e0,3, +0x01c6f0,26, +0x01c760,3, +0x01c770,26, +0x01c7e0,3, +0x01c7f0,26, +0x01c860,3, +0x01c870,26, +0x01c8e0,3, +0x01c8f0,26, +0x01c960,3, +0x01c970,26, +0x01c9e0,3, +0x01c9f0,26, +0x01ca60,3, +0x01ca70,26, +0x01cae0,3, +0x01caf0,26, +0x01cb60,3, +0x01cb70,26, +0x01cbe0,3, +0x01cbf0,26, +0x01cc60,3, +0x01cc70,26, +0x01cce0,3, +0x01ccf0,26, +0x01cd60,3, +0x01cd70,26, +0x01cde0,3, +0x01cdf0,26, +0x01ce60,3, +0x01ce70,26, +0x01cee0,3, +0x01cef0,26, +0x01cf60,3, +0x01cf70,26, +0x01cfe0,3, +0x01cff0,26, +0x01d060,3, +0x01d070,26, +0x01d0e0,3, +0x01d0f0,26, +0x01d160,3, +0x01d170,26, +0x01d1e0,3, +0x01d1f0,6, +0x01d800,6, +0x01d820,4, +0x01d840,8, +0x01d87c,7, +0x01d8a0,4, +0x01d8c0,8, +0x01d8fc,7, +0x01d920,4, +0x01d940,8, +0x01d97c,7, +0x01d9a0,4, +0x01d9c0,8, +0x01d9fc,7, +0x01da20,4, +0x01da40,8, +0x01da7c,7, +0x01daa0,4, +0x01dac0,8, +0x01dafc,7, +0x01db20,4, +0x01db40,8, +0x01db7c,7, +0x01dba0,4, +0x01dbc0,8, +0x01dbfc,7, +0x01dc20,4, +0x01dc40,8, +0x01dc7c,7, +0x01dca0,4, +0x01dcc0,8, +0x01dcfc,7, +0x01dd20,4, +0x01dd40,8, +0x01dd7c,7, +0x01dda0,4, +0x01ddc0,8, +0x01ddfc,7, +0x01de20,4, +0x01de40,8, +0x01de7c,7, +0x01dea0,4, +0x01dec0,8, +0x01defc,7, +0x01df20,4, +0x01df40,8, +0x01df7c,7, +0x01dfa0,4, +0x01dfc0,8, +0x01dffc,7, +0x01e020,4, +0x01e040,8, +0x01e07c,7, +0x01e0a0,4, +0x01e0c0,8, +0x01e0fc,7, +0x01e120,4, +0x01e140,8, +0x01e17c,7, +0x01e1a0,4, +0x01e1c0,8, +0x01e1fc,7, +0x01e220,4, +0x01e240,8, +0x01e27c,7, +0x01e2a0,4, +0x01e2c0,8, +0x01e2fc,7, +0x01e320,4, +0x01e340,8, +0x01e37c,7, +0x01e3a0,4, +0x01e3c0,8, +0x01e3fc,7, +0x01e420,4, +0x01e440,8, +0x01e47c,7, +0x01e4a0,4, +0x01e4c0,8, +0x01e4fc,7, +0x01e520,4, +0x01e540,8, +0x01e57c,7, +0x01e5a0,4, +0x01e5c0,8, +0x01e5fc,7, +0x01e620,4, +0x01e640,8, +0x01e67c,7, +0x01e6a0,4, +0x01e6c0,8, +0x01e6fc,7, +0x01e720,4, +0x01e740,8, +0x01e77c,7, +0x01e7a0,4, +0x01e7c0,8, +0x01e7fc,7, +0x01e820,4, +0x01e840,8, +0x01e87c,7, +0x01e8a0,4, +0x01e8c0,8, +0x01e8fc,7, +0x01e920,4, +0x01e940,8, +0x01e97c,7, +0x01e9a0,4, +0x01e9c0,8, +0x01e9fc,7, +0x01ea20,4, +0x01ea40,8, +0x01ea7c,7, +0x01eaa0,4, +0x01eac0,8, +0x01eafc,1, +0x01f408,13, +0x01f440,1, +0x01f448,1, +0x01f45c,4, +0x01f470,10, +0x01f4a0,6, +0x01f4c0,6, +0x01f4e0,3, 0x01f800,4, -0x01f818,4, -0x01f834,4, -0x01f92c,4, -0x01f990,4, +0x01f828,4, +0x01f850,4, +0x01f878,4, +0x01f8a0,4, 0x01f9ac,1, 0x01f9d8,4, -0x01fa00,32, -0x01fc00,1, -0x049000,7, -0x049020,2, -0x049030,20, -0x0490b8,4, -0x0490cc,7, +0x01fa00,6, +0x01fa20,6, +0x01fa40,6, +0x01fa60,6, +0x01fa80,6, +0x01faa0,6, +0x01fac0,6, +0x01fae0,6, +0x01fb00,3, +0x01fc00,13, +0x01fc40,3, +0x01fc50,6, +0x01fc6c,1, +0x01fc80,6, +0x01fca0,6, +0x01fcc0,6, +0x01fce0,3, +0x01fd00,1, +0x01fd80,6, +0x01fda0,6, +0x01fdc0,6, +0x01fde0,3, +0x01fe00,1, +0x01fe08,4, +0x01fffc,1, +0x049000,6, +0x049020,20, +0x049080,10, +0x0490b0,1, +0x0490c0,3, +0x0490d0,3, 0x049100,2, -0x049110,1, -0x049120,2, -0x049140,1, -0x049200,7, -0x049220,2, -0x049230,20, -0x0492b8,4, -0x0492cc,7, +0x049110,3, +0x049120,4, +0x049140,7, +0x049160,7, +0x049180,3, +0x049190,1, +0x049200,6, +0x049220,20, +0x049280,10, +0x0492b0,1, +0x0492c0,3, +0x0492d0,3, 0x049300,2, -0x049310,1, -0x049320,2, -0x049340,1, -0x049400,7, -0x049420,2, -0x049430,20, -0x0494b8,4, -0x0494cc,7, +0x049310,3, +0x049320,4, +0x049340,7, +0x049360,7, +0x049380,3, +0x049390,1, +0x049400,6, +0x049420,20, +0x049480,10, +0x0494b0,1, +0x0494c0,3, +0x0494d0,3, 0x049500,2, -0x049510,1, -0x049520,2, -0x049540,1, +0x049510,3, +0x049520,4, +0x049540,7, +0x049560,7, +0x049580,3, +0x049590,1, 0x049608,2, 0x049620,1, 0x049648,2, @@ -1621,25 +1944,29 @@ 0x0497a0,1, 0x0497c8,2, 0x0497e0,1, -0x049800,2, -0x049820,1, -0x049840,20, -0x049904,7, -0x049a00,21, -0x049a60,2, -0x050200,1, -0x05020c,16, -0x050260,1, -0x0502a0,3, -0x0502c0,16, -0x0503bc,1, +0x049804,28, +0x049880,2, +0x0498a0,2, +0x0498c0,1, +0x0498e0,1, +0x049a00,13, +0x049a40,2, +0x049a4c,4, +0x050400,11, +0x050430,6, +0x050460,3, +0x0504a0,3, +0x050700,13, +0x050740,7, +0x050760,7, 0x051800,162, 0x051a90,2, 0x051aa0,2, 0x051c00,8, -0x051d00,27, -0x051d80,2, +0x051d00,26, +0x051d84,1, 0x051d94,9, +0x051e00,16, 0x058400,12, 0x058440,7, 0x058460,2, @@ -1649,57 +1976,85 @@ 0x058500,6, 0x058520,6, 0x058540,3, -0x058580,2, +0x058584,1, 0x058590,9, 0x0585e0,7, -0x058600,7, -0x058630,11, -0x058670,19, +0x058600,10, +0x058640,10, +0x058680,15, +0x0586d8,9, 0x058800,6, 0x058820,6, -0x058840,3, -0x058900,6, +0x058840,6, +0x058860,6, +0x058880,6, +0x0588a0,6, +0x0588c0,6, +0x0588e0,6, +0x058900,3, +0x058a00,6, +0x058b00,6, +0x058b20,6, +0x058b40,6, +0x058b60,6, +0x058b80,6, +0x058ba0,6, +0x058bc0,3, 0x060000,32, 0x060200,64, 0x060400,96, 0x060600,2, 0x060800,96, 0x060a00,2, -0x060c00,4, -0x060fd8,3, -0x060ff4,3, -0x061040,8, -0x061080,1, -0x0610c0,39, -0x061160,3, -0x061200,1, +0x060c20,8, +0x060f80,6, +0x060fa0,7, +0x060fd8,2, +0x060fe4,1, +0x060ff0,10, +0x061020,16, +0x061084,1, +0x0610c0,16, +0x061204,1, 0x061220,8, +0x061250,3, +0x061260,5, +0x061280,6, +0x0612a0,6, 0x061300,3, 0x061310,2, 0x061320,2, -0x061340,4, -0x062000,17, -0x062050,15, -0x062090,1, +0x061330,1, +0x061340,3, +0x062000,16, +0x062060,7, +0x062080,5, 0x062100,2, -0x06210c,1, -0x062114,1, -0x06211c,5, -0x063600,18, -0x063650,9, -0x063680,1, -0x06368c,3, -0x06369c,4, +0x06210c,2, +0x062118,1, +0x062120,1, +0x062180,10, +0x0621b0,2, +0x0621c0,2, +0x0621d0,5, +0x062200,3, +0x062210,3, +0x062280,4, +0x063600,5, +0x063620,14, +0x063660,5, +0x063684,1, +0x06368c,10, 0x063700,1, -0x063710,4, -0x063800,16, -0x063850,9, -0x063880,1, -0x06388c,3, -0x06389c,4, -0x06390c,7, -0x063930,5, -0x063948,2, +0x063800,5, +0x063820,12, +0x063860,5, +0x063884,1, +0x06388c,10, +0x063904,1, +0x06390c,5, +0x063940,1, +0x063950,2, 0x0639fc,1, 0x064000,5, 0x064020,1, @@ -1956,7 +2311,7 @@ 0x064fd0,1, 0x064fe0,1, 0x064ff0,1, -0x065000,1, +0x065000,8, 0x066000,5, 0x066020,1, 0x066030,1, @@ -2212,34 +2567,41 @@ 0x066fd0,1, 0x066fe0,1, 0x066ff0,1, -0x067000,1, -0x067020,1, -0x067100,1, +0x067000,16, +0x067100,8, +0x067124,7, +0x067144,7, 0x067200,3, 0x0677f8,2, -0x06f000,4, -0x06f014,10, -0x06f040,1, -0x06f048,3, -0x06f058,1, -0x06f060,1, +0x06f008,2, +0x06f014,11, +0x06f044,1, +0x06f04c,3, +0x06f05c,1, +0x06f064,1, 0x06f07c,1, -0x06f500,1, -0x06f518,2, +0x06f500,2, +0x06f518,1, +0x06f520,3, 0x06f540,6, +0x06f580,10, +0x06f800,2, 0x070000,4, -0x070020,9, -0x070048,6, -0x070064,6, -0x070080,1, -0x070200,33, +0x070020,25, +0x070088,8, +0x070100,6, +0x070120,7, +0x070140,4, +0x070200,24, +0x070280,1, +0x070288,4, 0x070300,37, 0x070b00,14, 0x070b40,14, -0x070b80,2, +0x070b84,1, 0x070c00,1, 0x070c10,3, -0x070c40,2, +0x070c3c,3, 0x070c50,8, 0x071000,7, 0x072000,7, @@ -2247,124 +2609,127 @@ 0x0731d0,3, 0x0731e0,3, 0x0731f0,3, -0x073200,5, -0x073230,30, +0x073200,2, +0x073210,7, +0x073230,1, +0x073240,48, +0x073338,15, 0x074000,8, -0x074040,8, -0x074800,2, +0x074044,3, +0x074060,4, +0x074080,8, +0x075000,1024, 0x07f000,2, -0x07f018,2, -0x07f034,2, -0x07f12c,23, -0x07f190,2, +0x07f028,2, +0x07f050,2, +0x07f078,2, +0x07f0a0,23, 0x07f1ac,1, 0x07f1d8,4, -0x07f200,16, +0x07f200,6, +0x07f220,6, +0x07f240,6, +0x07f260,6, +0x07f280,3, 0x07fa00,6, 0x07fb00,7, 0x07fb20,7, 0x07fb40,7, 0x07fb60,1, -0x07fc00,1, +0x07fb70,1, +0x07fb80,7, +0x07fc00,3, 0x080000,32771, -0x0a0010,7, -0x0a0030,1, +0x0a0010,2, +0x0a001c,6, 0x0a0038,2, 0x0a0048,2, 0x0a0058,2, -0x0a0068,11, -0x0a009c,2, +0x0a0068,15, 0x0a00ac,14, 0x0a00f0,1, 0x0a00fc,35, 0x0a01e0,1, 0x0a01e8,5, 0x0a0200,3, -0x0a0210,7, -0x0a0230,1, +0x0a0210,2, +0x0a021c,6, 0x0a0238,2, 0x0a0248,2, 0x0a0258,2, -0x0a0268,11, -0x0a029c,2, +0x0a0268,15, 0x0a02ac,14, 0x0a02f0,1, 0x0a02fc,35, 0x0a03e0,1, 0x0a03e8,5, 0x0a0400,3, -0x0a0410,7, -0x0a0430,1, +0x0a0410,2, +0x0a041c,6, 0x0a0438,2, 0x0a0448,2, 0x0a0458,2, -0x0a0468,11, -0x0a049c,2, +0x0a0468,15, 0x0a04ac,14, 0x0a04f0,1, 0x0a04fc,35, 0x0a05e0,1, 0x0a05e8,5, 0x0a0600,3, -0x0a0610,7, -0x0a0630,1, +0x0a0610,2, +0x0a061c,6, 0x0a0638,2, 0x0a0648,2, 0x0a0658,2, -0x0a0668,11, -0x0a069c,2, +0x0a0668,15, 0x0a06ac,14, 0x0a06f0,1, 0x0a06fc,35, 0x0a07e0,1, 0x0a07e8,5, 0x0a0800,3, -0x0a0810,7, -0x0a0830,1, +0x0a0810,2, +0x0a081c,6, 0x0a0838,2, 0x0a0848,2, 0x0a0858,2, -0x0a0868,11, -0x0a089c,2, +0x0a0868,15, 0x0a08ac,14, 0x0a08f0,1, 0x0a08fc,35, 0x0a09e0,1, 0x0a09e8,5, 0x0a0a00,3, -0x0a0a10,7, -0x0a0a30,1, +0x0a0a10,2, +0x0a0a1c,6, 0x0a0a38,2, 0x0a0a48,2, 0x0a0a58,2, -0x0a0a68,11, -0x0a0a9c,2, +0x0a0a68,15, 0x0a0aac,14, 0x0a0af0,1, 0x0a0afc,35, 0x0a0be0,1, 0x0a0be8,5, 0x0a0c00,3, -0x0a0c10,7, -0x0a0c30,1, +0x0a0c10,2, +0x0a0c1c,6, 0x0a0c38,2, 0x0a0c48,2, 0x0a0c58,2, -0x0a0c68,11, -0x0a0c9c,2, +0x0a0c68,15, 0x0a0cac,14, 0x0a0cf0,1, 0x0a0cfc,35, 0x0a0de0,1, 0x0a0de8,5, 0x0a0e00,3, -0x0a0e10,7, -0x0a0e30,1, +0x0a0e10,2, +0x0a0e1c,6, 0x0a0e38,2, 0x0a0e48,2, 0x0a0e58,2, -0x0a0e68,11, -0x0a0e9c,2, +0x0a0e68,15, 0x0a0eac,14, 0x0a0ef0,1, 0x0a0efc,35, @@ -2374,151 +2739,173 @@ 0x0a1208,2, 0x0a1218,2, 0x0a1404,17, -0x0a1480,33, -0x0a1540,16, +0x0a1484,1, +0x0a14a0,17, +0x0a1504,1, +0x0a1540,17, 0x0a15e0,8, 0x0a1604,3, 0x0a1700,33, 0x0a1800,6, -0x0a1820,1, -0x0a1828,1, -0x0a1830,4, +0x0a1820,10, 0x0a1870,1, -0x0a1c00,1, -0x0a1c18,1, -0x0a1c34,1, -0x0a1d04,2, -0x0a1d34,1, -0x0a1d4c,1, -0x0a1d70,2, -0x0a1e00,8, +0x0a1c00,2, +0x0a1c28,2, +0x0a1c50,2, +0x0a1c78,2, +0x0a1ca0,7, +0x0a1dac,1, +0x0a1dd8,4, +0x0a1e00,6, +0x0a1e20,6, +0x0a1e40,6, +0x0a1e60,6, +0x0a1e80,3, 0x0a2010,2, 0x0a201c,1, 0x0a2028,2, 0x0a2040,8, 0x0a2064,5, -0x0a20f4,20, -0x0a2150,20, -0x0a2210,27, -0x0a2280,3, -0x0a2290,2, -0x0a22a0,4, -0x0a23fc,129, -0x0a2800,4, -0x0a2818,6, -0x0a2838,6, -0x0a2858,6, -0x0a2878,5, -0x0a2900,4, -0x0a2918,6, -0x0a2938,5, -0x0a2980,4, -0x0a2998,13, -0x0a3120,48, -0x0a3500,41, -0x0a35c0,2, -0x0a35d0,4, +0x0a20d0,8, +0x0a20f4,22, +0x0a2150,2, +0x0a2160,8, +0x0a2184,3, +0x0a21a0,8, +0x0a2200,4, +0x0a2218,50, +0x0a2300,8, +0x0a2330,3, +0x0a2600,1, +0x0a2800,6, +0x0a2820,6, +0x0a2840,6, +0x0a2860,6, +0x0a2880,3, +0x0a2900,6, +0x0a2920,6, +0x0a2940,3, +0x0a2980,6, +0x0a29a0,6, +0x0a29c0,6, +0x0a29e0,3, +0x0a2a00,6, +0x0a2a20,3, +0x0a2a30,1, +0x0a3120,6, +0x0a3140,6, +0x0a3160,6, +0x0a3180,6, +0x0a31a0,6, +0x0a31c0,6, 0x0a3604,2, 0x0a3700,16, +0x0a3a00,1, +0x0a3b00,8, 0x0c1000,1, -0x0c1018,1, -0x0c1034,1, -0x0c112c,9, -0x0c1190,1, +0x0c1028,1, +0x0c1050,1, +0x0c1078,1, +0x0c10a0,9, 0x0c11ac,1, 0x0c11d8,4, -0x0c1200,8, +0x0c1200,6, +0x0c1220,6, +0x0c1240,3, 0x0c1400,6, 0x0c1420,3, -0x0c1500,5, -0x0c1520,11, -0x0c2000,13, -0x0c2040,22, -0x0c20a0,6, -0x0c20c0,3, +0x0c1500,13, +0x0c1540,3, +0x0c2000,14, +0x0c2070,3, +0x0c2080,6, 0x0c2100,9, -0x0c2400,2, -0x0c240c,6, -0x0c2440,13, -0x0c2480,16, -0x0c2800,1, -0x0c2808,3, -0x0c281c,8, -0x0c2840,3, -0x0c2850,3, -0x0c2880,1, -0x0c2888,3, -0x0c289c,8, -0x0c28c0,3, -0x0c28d0,3, -0x0c2900,1, -0x0c2908,3, -0x0c291c,8, -0x0c2940,3, -0x0c2950,3, -0x0c2980,1, -0x0c2988,3, -0x0c299c,8, -0x0c29c0,3, -0x0c29d0,3, -0x0c2a00,1, -0x0c2a08,3, -0x0c2a1c,8, -0x0c2a40,3, -0x0c2a50,3, -0x0c2a80,1, -0x0c2a88,3, -0x0c2a9c,8, -0x0c2ac0,3, -0x0c2ad0,3, -0x0c2b00,1, -0x0c2b08,3, -0x0c2b1c,8, -0x0c2b40,3, -0x0c2b50,3, -0x0c2b80,1, -0x0c2b88,3, -0x0c2b9c,8, -0x0c2bc0,3, -0x0c2bd0,3, -0x0c2c00,1, -0x0c2c08,3, -0x0c2c1c,8, -0x0c2c40,3, -0x0c2c50,3, -0x0c2c80,2, -0x0c2c94,13, -0x0c3000,4, -0x0c3014,6, -0x0c3030,5, -0x0c3080,4, -0x0c3094,6, -0x0c30b0,5, -0x0c3100,4, -0x0c3114,6, -0x0c3130,5, -0x0c3180,4, -0x0c3194,6, -0x0c31b0,5, -0x0c3200,3, -0x0c3210,23, -0x0c3500,3, -0x0c3510,12, -0x0c3580,3, -0x0c3590,12, -0x0c3600,3, -0x0c3610,12, -0x0c3680,3, -0x0c3690,12, -0x0c3700,4, -0x0c3718,13, -0x0c3800,25, -0x0c3880,25, -0x0c3900,25, -0x0c3980,25, -0x0c3a00,17, -0x0c3a50,3, -0x0c3a60,3, +0x0c2204,1, +0x0c220c,6, +0x0c2240,13, +0x0c2280,16, +0x0c2400,8, +0x0c2424,15, +0x0c2464,15, +0x0c24a4,15, +0x0c24e4,23, +0x0c2544,6, +0x0c2580,10, +0x0c25ac,1, +0x0c25b4,5, +0x0c25cc,1, +0x0c25d4,5, +0x0c25ec,1, +0x0c25f4,13, +0x0c2680,7, +0x0c26a0,5, +0x0c26c0,5, +0x0c26e0,3, +0x0c2800,19, +0x0c2850,10, +0x0c2880,19, +0x0c28d0,10, +0x0c2900,19, +0x0c2950,10, +0x0c2980,19, +0x0c29d0,10, +0x0c2a00,19, +0x0c2a50,10, +0x0c2a80,19, +0x0c2ad0,10, +0x0c2b00,19, +0x0c2b50,10, +0x0c2b80,19, +0x0c2bd0,10, +0x0c2c00,19, +0x0c2c50,10, +0x0c2c84,1, +0x0c2c94,8, +0x0c2cb8,9, +0x0c2ce0,4, +0x0c3000,29, +0x0c3078,5, +0x0c3090,2, +0x0c30a0,10, +0x0c3100,93, +0x0c3278,5, +0x0c3290,2, +0x0c32a0,10, +0x0c3300,93, +0x0c3478,5, +0x0c3490,2, +0x0c34a0,10, +0x0c3500,93, +0x0c3678,5, +0x0c3690,2, +0x0c36a0,10, +0x0c3700,93, +0x0c387c,1, +0x0c3a00,8, +0x0c3a24,15, +0x0c3a64,23, +0x0c3ac4,6, +0x0c3b00,4, +0x0c3b20,3, +0x0c3c00,2, +0x0c3c40,14, +0x0c3c80,9, +0x0c3d00,9, +0x0c3d2c,1, +0x0c3d80,6, +0x0c3e00,2, +0x0c3e0c,1, +0x0c3e14,5, +0x0c3e2c,1, +0x0c3e34,5, +0x0c3e4c,1, +0x0c3e54,5, +0x0c3e6c,1, +0x0c3e74,5, +0x0c3e8c,1, +0x0c3e94,5, +0x0c3eac,1, +0x0c3eb4,3, 0x0c8000,25, 0x0c8068,4, 0x0c807c,4, @@ -2532,10 +2919,10 @@ 0x0ca0a4,2, 0x0ca0b0,2, 0x0ca0c0,14, -0x0ca100,16, +0x0ca100,12, +0x0ca140,4, 0x0ca160,1, 0x0ca184,1, -0x0ca18c,1, 0x0ca194,2, 0x0ca1b8,3, 0x0ca1d0,5, @@ -2552,8 +2939,11 @@ 0x0ca360,6, 0x0ca380,6, 0x0ca3a0,6, +0x0ca3c0,6, +0x0ca3e0,6, +0x0ca400,6, 0x0ca6fc,1, -0x0ca800,71, +0x0ca800,72, 0x0cb000,4, 0x0cb044,1, 0x0cb04c,1, @@ -2566,59 +2956,57 @@ 0x0cb250,3, 0x0cb260,2, 0x0cb270,3, +0x0cb280,1, 0x0cb400,5, 0x0cb59c,1, 0x0cb5ac,9, 0x0d0000,5, 0x0d0020,4, -0x0d0034,9, -0x0d005c,7, +0x0d0034,17, 0x0d0080,1, 0x0d00a0,6, 0x0d0100,5, 0x0d0120,4, -0x0d0134,9, -0x0d015c,7, +0x0d0134,17, 0x0d0180,1, 0x0d01a0,6, 0x0d0200,5, 0x0d0220,4, -0x0d0234,9, -0x0d025c,7, +0x0d0234,17, 0x0d0280,1, 0x0d02a0,6, 0x0d0300,5, 0x0d0320,4, -0x0d0334,9, -0x0d035c,7, +0x0d0334,17, 0x0d0380,1, 0x0d03a0,6, -0x0d0400,4, -0x0d0440,4, +0x0d0400,6, +0x0d0440,6, 0x0d0480,3, 0x0d04c0,3, -0x0d0500,5, -0x0d0518,8, +0x0d0500,6, +0x0d051c,7, +0x0d0540,1, 0x0d0c00,13, -0x0d0c40,11, +0x0d0c40,12, 0x0d0c80,13, -0x0d0cc0,11, +0x0d0cc0,12, 0x0d0d00,6, 0x0d0d20,6, -0x0d0e00,10, +0x0d0d80,14, +0x0d0dc0,2, 0x0d0e40,11, -0x0d0e80,8, +0x0d0e80,6, +0x0d0ea0,6, 0x0d1000,2, 0x0d1010,5, 0x0d1040,3, 0x0d1050,3, -0x0d1060,7, -0x0d1080,7, -0x0d10a0,7, -0x0d10c0,7, -0x0d1100,7, -0x0d1140,7, -0x0d1180,5, +0x0d1060,32, +0x0d1100,8, +0x0d1140,8, +0x0d1180,3, +0x0d1190,2, 0x0d119c,9, 0x0d1218,9, 0x0d1240,3, @@ -2631,75 +3019,84 @@ 0x0d12e4,1, 0x0d1400,8, 0x0d1424,2, -0x0d1500,3, +0x0d1500,5, 0x0d1520,4, -0x0d1540,3, +0x0d1540,5, 0x0d1560,4, 0x0d1800,24, -0x0d1864,2, -0x0d1880,6, -0x0d1900,12, -0x0d1940,6, -0x0d1960,6, +0x0d1864,5, +0x0d1880,8, +0x0d1900,13, 0x0d1980,4, +0x0d19a0,6, 0x0d19c0,6, 0x0d19dc,1, 0x0d1a00,6, 0x0d1a1c,1, 0x0d1a40,1, +0x0d1a60,1, 0x0d1a68,23, +0x0d1ac8,6, 0x0d1b00,17, +0x0d1b48,6, 0x0d1b80,12, +0x0d1c00,6, +0x0d1c20,6, +0x0d1c40,6, +0x0d1c60,3, +0x0d1d00,6, +0x0d1d20,6, +0x0d1d40,3, +0x0d1d80,6, +0x0d1da0,6, +0x0d1dc0,3, 0x0d2000,5, 0x0d2020,4, -0x0d2034,9, -0x0d205c,7, +0x0d2034,17, 0x0d2080,1, 0x0d20a0,6, 0x0d2100,5, 0x0d2120,4, -0x0d2134,9, -0x0d215c,7, +0x0d2134,17, 0x0d2180,1, 0x0d21a0,6, 0x0d2200,5, 0x0d2220,4, -0x0d2234,9, -0x0d225c,7, +0x0d2234,17, 0x0d2280,1, 0x0d22a0,6, 0x0d2300,5, 0x0d2320,4, -0x0d2334,9, -0x0d235c,7, +0x0d2334,17, 0x0d2380,1, 0x0d23a0,6, -0x0d2400,4, -0x0d2440,4, +0x0d2400,6, +0x0d2440,6, 0x0d2480,3, 0x0d24c0,3, -0x0d2500,5, -0x0d2518,8, +0x0d2500,6, +0x0d251c,7, +0x0d2540,1, 0x0d2c00,13, -0x0d2c40,11, +0x0d2c40,12, 0x0d2c80,13, -0x0d2cc0,11, +0x0d2cc0,12, 0x0d2d00,6, 0x0d2d20,6, -0x0d2e00,10, +0x0d2d80,14, +0x0d2dc0,2, 0x0d2e40,11, -0x0d2e80,8, +0x0d2e80,6, +0x0d2ea0,6, 0x0d3000,2, 0x0d3010,5, 0x0d3040,3, 0x0d3050,3, -0x0d3060,7, -0x0d3080,7, -0x0d30a0,7, -0x0d30c0,7, -0x0d3100,7, -0x0d3140,7, -0x0d3180,5, +0x0d3060,32, +0x0d3100,8, +0x0d3140,8, +0x0d3180,3, +0x0d3190,2, 0x0d319c,9, 0x0d3218,9, 0x0d3240,3, @@ -2712,116 +3109,154 @@ 0x0d32e4,1, 0x0d3400,8, 0x0d3424,2, -0x0d3500,3, +0x0d3500,5, 0x0d3520,4, -0x0d3540,3, +0x0d3540,5, 0x0d3560,4, 0x0d3800,24, -0x0d3864,2, -0x0d3880,6, -0x0d3900,12, -0x0d3940,6, -0x0d3960,6, +0x0d3864,5, +0x0d3880,8, +0x0d3900,13, 0x0d3980,4, +0x0d39a0,6, 0x0d39c0,6, 0x0d39dc,1, 0x0d3a00,6, 0x0d3a1c,1, 0x0d3a40,1, +0x0d3a60,1, 0x0d3a68,23, +0x0d3ac8,6, 0x0d3b00,17, +0x0d3b48,6, 0x0d3b80,12, +0x0d3c00,6, +0x0d3c20,6, +0x0d3c40,6, +0x0d3c60,3, +0x0d3d00,6, +0x0d3d20,6, +0x0d3d40,3, +0x0d3d80,6, +0x0d3da0,6, +0x0d3dc0,3, 0x0d4000,5, 0x0d4038,1, 0x0d4044,1, +0x0d4050,2, 0x0d4100,6, 0x0d8000,6, 0x0d8020,3, -0x0d8030,9, -0x0d8080,6, -0x0d8100,20, -0x0d8400,1, -0x0d8418,1, -0x0d8434,1, -0x0d852c,4, -0x0d8590,1, -0x0d85ac,1, -0x0d85d8,4, -0x0d8600,8, +0x0d8030,8, +0x0d8100,6, +0x0d8120,10, +0x0d8150,8, +0x0d8800,6, +0x0d8820,3, +0x0d8830,4, +0x0d8858,2, +0x0d8864,1, +0x0d8874,3, +0x0d8898,2, +0x0d88a4,1, +0x0d88b4,3, 0x0d9000,6, 0x0d9020,6, 0x0d9040,3, 0x0d9080,14, 0x0d90bc,1, 0x0d90c4,13, -0x0d90fc,6, -0x0d9120,5, -0x0d9190,10, -0x0d9200,16, -0x0d9244,32, -0x0d9300,26, +0x0d90fc,5, +0x0d9120,4, +0x0d9140,3, +0x0d9180,3, +0x0d9190,3, +0x0d91a0,1, +0x0d91e0,6, +0x0d9200,20, +0x0d925c,30, +0x0d9300,24, 0x0d9380,2, 0x0d93a0,1, 0x0d93c0,11, -0x0d9404,4, -0x0d9418,16, +0x0d9404,3, +0x0d9420,11, 0x0d9460,3, +0x0d9480,6, 0x0d9500,6, +0x0d9520,6, 0x0d9540,1, 0x0d9558,2, 0x0d9600,17, -0x0d9800,366, +0x0d9800,410, 0x0da000,6, 0x0da020,6, 0x0da040,3, 0x0da080,14, 0x0da0bc,1, 0x0da0c4,13, -0x0da0fc,6, -0x0da120,5, -0x0da190,10, -0x0da200,16, -0x0da244,32, -0x0da300,26, +0x0da0fc,5, +0x0da120,4, +0x0da140,3, +0x0da180,3, +0x0da190,3, +0x0da1a0,1, +0x0da1e0,6, +0x0da200,20, +0x0da25c,30, +0x0da300,24, 0x0da380,2, 0x0da3a0,1, 0x0da3c0,11, -0x0da404,4, -0x0da418,16, +0x0da404,3, +0x0da420,11, 0x0da460,3, +0x0da480,6, 0x0da500,6, +0x0da520,6, 0x0da540,1, 0x0da558,2, 0x0da600,17, -0x0da800,366, -0x0db000,4, -0x0db020,9, -0x0db048,6, -0x0db064,6, -0x0db080,1, -0x0db100,4, -0x0db120,9, -0x0db148,6, -0x0db164,6, -0x0db180,1, -0x0db200,35, -0x0db290,6, -0x0db2b4,6, -0x0db2d0,5, -0x0db2e8,5, -0x0db300,37, -0x0db400,6, -0x0db420,3, -0x0db438,4, -0x0db454,3, -0x0db478,4, -0x0db494,3, +0x0da800,410, 0x0db800,5, 0x0db818,1, 0x0db854,6, 0x0db880,2, 0x0db8a4,1, -0x0e8000,4, +0x0db8ac,2, +0x0dba00,28, +0x0dba7c,13, +0x0dbab4,1, +0x0dbabc,10, +0x0dbb04,1, +0x0dbb0c,5, +0x0dbb24,1, +0x0dbb34,9, +0x0dbb60,6, +0x0dbb80,22, +0x0dbbe0,3, +0x0dbbf0,2, +0x0dbc00,5, +0x0dbc18,1, +0x0dbc54,6, +0x0dbc80,2, +0x0dbca4,1, +0x0dbcac,2, +0x0dbe00,28, +0x0dbe7c,13, +0x0dbeb4,1, +0x0dbebc,10, +0x0dbf04,1, +0x0dbf0c,5, +0x0dbf24,1, +0x0dbf34,9, +0x0dbf60,6, +0x0dbf80,22, +0x0dbfe0,3, +0x0dbff0,2, +0x0dc000,1, +0x0e8000,1, +0x0e8008,2, 0x0e8058,3, 0x0e8120,2, 0x0e8130,2, @@ -2830,10 +3265,12 @@ 0x0e81c4,3, 0x0e81dc,3, 0x0e8280,13, -0x0e8400,24, +0x0e8400,16, +0x0e8444,7, 0x0e8500,4, -0x0e8800,2, -0x0e8824,9, +0x0e8804,1, +0x0e8824,7, +0x0e8844,1, 0x0e884c,27, 0x0e88d4,2, 0x0e8c00,1, @@ -2854,15 +3291,18 @@ 0x0e90f8,1, 0x0e9100,1, 0x0e9108,5, -0x0e9138,4, +0x0e9138,2, +0x0e9144,1, 0x0e9160,13, 0x0e91a0,3, 0x0e9200,2, -0x0e9214,19, -0x0e9278,10, +0x0e9214,11, +0x0e9244,7, +0x0e92b8,2, +0x0e92c4,7, 0x0e9310,1, 0x0e9340,4, -0x0e9384,6, +0x0e9380,7, 0x0e9400,14, 0x0e9440,10, 0x0e947c,1, @@ -2889,7 +3329,7 @@ 0x0e9d00,3, 0x0e9d40,2, 0x0e9d4c,1, -0x0e9d80,2, +0x0e9d84,1, 0x0e9d90,4, 0x0e9e00,6, 0x0e9e20,6, @@ -2900,43 +3340,45 @@ 0x0e9f80,13, 0x0e9fc0,2, 0x0ea000,1, -0x0ea018,1, -0x0ea034,1, -0x0ea12c,3, -0x0ea190,1, +0x0ea028,1, +0x0ea050,1, +0x0ea078,1, +0x0ea0a0,3, 0x0ea1ac,1, 0x0ea1d8,4, -0x0ea200,8, +0x0ea200,6, +0x0ea220,6, +0x0ea240,3, 0x0ea400,6, -0x0ea420,24, +0x0ea420,2, +0x0ea430,2, +0x0ea440,2, +0x0ea450,6, +0x0ea470,2, 0x0ea490,24, 0x0ea520,8, -0x0ea600,2, -0x0ea6f0,71, +0x0ea604,1, +0x0ea6f0,72, 0x0f0000,3, -0x0f0014,8, -0x0f0044,28, +0x0f0014,10, +0x0f0044,15, 0x0f00f0,2, -0x0f0100,5, +0x0f0100,1, +0x0f0108,3, 0x0f0118,1, -0x0f0130,6, -0x0f015c,12, -0x0f0190,3, +0x0f0130,4, +0x0f0180,3, +0x0f0190,2, 0x0f01a0,3, 0x0f01c0,2, 0x0f01d0,10, 0x0f0200,61, -0x0f0404,8, +0x0f0404,9, 0x0f0440,12, -0x0f0480,6, -0x0f04a0,8, -0x0f04e0,6, -0x0f0500,6, -0x0f0520,8, -0x0f0560,6, -0x0f0580,1, -0x0f0588,3, -0x0f05dc,9, +0x0f0480,5, +0x0f04b8,19, +0x0f05a0,1, +0x0f05c0,8, 0x0f0800,17, 0x0f0850,9, 0x0f0880,9, @@ -2949,243 +3391,760 @@ 0x0f099c,5, 0x0f09bc,5, 0x0f09dc,1, -0x0f0a80,3, -0x0f0a90,4, +0x0f0a90,2, 0x0f0c00,128, 0x0f0e04,1, 0x0f0e14,9, 0x0f0e3c,1, -0x0f1000,1, -0x0f1200,6, -0x0f1220,6, -0x0f1240,6, -0x0f1260,6, -0x0f1280,6, -0x0f12a0,6, -0x0f12c0,6, -0x0f12e0,6, -0x0f1300,3, +0x0f1000,3, +0x0f1010,4, +0x0f1080,10, +0x0f10c0,1, +0x0f10e0,2, +0x0f10ec,1, +0x0f10f4,3, +0x0f1400,6, +0x0f1420,6, +0x0f1440,6, +0x0f1460,6, +0x0f1480,6, +0x0f14a0,6, +0x0f14c0,6, +0x0f14e0,6, +0x0f1500,6, +0x0f1520,6, +0x0f1540,6, +0x0f1560,6, +0x0f1580,6, +0x0f15a0,6, +0x0f15c0,6, +0x0f15e0,6, +0x0f1600,6, +0x0f1620,3, +0x0f1800,3, +0x0f2000,2, +0x0f200c,3, +0x0f2020,8, +0x0f2060,6, +0x0f2080,2, +0x0f208c,3, +0x0f20a0,8, +0x0f20e0,6, +0x0f2100,2, +0x0f210c,3, +0x0f2120,8, +0x0f2160,6, +0x0f2180,2, +0x0f218c,3, +0x0f21a0,8, +0x0f21e0,6, +0x0f2200,2, +0x0f220c,3, +0x0f2220,8, +0x0f2260,6, +0x0f2280,2, +0x0f228c,3, +0x0f22a0,8, +0x0f22e0,6, +0x0f2300,2, +0x0f230c,3, +0x0f2320,8, +0x0f2360,6, +0x0f2380,2, +0x0f238c,3, +0x0f23a0,8, +0x0f23e0,6, +0x0f2400,2, +0x0f240c,3, +0x0f2420,8, +0x0f2460,6, +0x0f2480,2, +0x0f248c,3, +0x0f24a0,8, +0x0f24e0,6, +0x0f2500,2, +0x0f250c,3, +0x0f2520,8, +0x0f2560,6, +0x0f2580,2, +0x0f258c,3, +0x0f25a0,8, +0x0f25e0,6, +0x0f2600,2, +0x0f260c,3, +0x0f2620,8, +0x0f2660,6, +0x0f2680,2, +0x0f268c,3, +0x0f26a0,8, +0x0f26e0,6, +0x0f2700,2, +0x0f270c,3, +0x0f2720,8, +0x0f2760,6, +0x0f2780,2, +0x0f278c,3, +0x0f27a0,8, +0x0f27e0,6, +0x0f2800,2, +0x0f280c,3, +0x0f2820,8, +0x0f2860,6, +0x0f2880,2, +0x0f288c,3, +0x0f28a0,8, +0x0f28e0,6, +0x0f2900,2, +0x0f290c,3, +0x0f2920,8, +0x0f2960,6, +0x0f2980,2, +0x0f298c,3, +0x0f29a0,8, +0x0f29e0,6, 0x0f4000,7, -0x0f4100,2, -0x0f4180,34, -0x0f4300,2, -0x0f4380,42, +0x0f4020,4, +0x0f4204,1, +0x0f4280,35, +0x0f4310,4, +0x0f4404,1, +0x0f4480,34, +0x0f4510,10, +0x0f453c,3, 0x0f4800,7, -0x0f4900,2, -0x0f4980,34, -0x0f4b00,2, -0x0f4b80,42, +0x0f4820,4, +0x0f4a04,1, +0x0f4a80,35, +0x0f4b10,4, +0x0f4c04,1, +0x0f4c80,34, +0x0f4d10,10, +0x0f4d3c,3, 0x0f5000,7, -0x0f5100,2, -0x0f5180,34, -0x0f5300,2, -0x0f5380,42, +0x0f5020,4, +0x0f5204,1, +0x0f5280,35, +0x0f5310,4, +0x0f5404,1, +0x0f5480,34, +0x0f5510,10, +0x0f553c,3, 0x0f5800,7, -0x0f5900,2, -0x0f5980,34, -0x0f5b00,2, -0x0f5b80,42, +0x0f5820,4, +0x0f5a04,1, +0x0f5a80,35, +0x0f5b10,4, +0x0f5c04,1, +0x0f5c80,34, +0x0f5d10,10, +0x0f5d3c,3, 0x0f6000,7, -0x0f6100,2, -0x0f6180,34, -0x0f6300,2, -0x0f6380,42, +0x0f6020,4, +0x0f6204,1, +0x0f6280,35, +0x0f6310,4, +0x0f6404,1, +0x0f6480,34, +0x0f6510,10, +0x0f653c,3, 0x0f6800,7, -0x0f6900,2, -0x0f6980,34, -0x0f6b00,2, -0x0f6b80,42, +0x0f6820,4, +0x0f6a04,1, +0x0f6a80,35, +0x0f6b10,4, +0x0f6c04,1, +0x0f6c80,34, +0x0f6d10,10, +0x0f6d3c,3, 0x0f8000,9, -0x0f8044,6, -0x0f8080,7, -0x0f80a0,1, -0x0f80c0,12, -0x0f8100,9, -0x0f8144,6, -0x0f8180,7, -0x0f81a0,1, -0x0f81c0,12, +0x0f8048,6, +0x0f8100,6, +0x0f8120,6, +0x0f8140,3, +0x0f8180,6, +0x0f81c0,3, +0x0f81d0,2, 0x0f8200,9, -0x0f8244,6, -0x0f8280,7, -0x0f82a0,1, -0x0f82c0,12, -0x0f8300,9, -0x0f8344,6, -0x0f8380,7, -0x0f83a0,1, -0x0f83c0,12, +0x0f8248,6, +0x0f8300,6, +0x0f8320,6, +0x0f8340,3, +0x0f8380,6, +0x0f83c0,3, +0x0f83d0,2, 0x0f8400,9, -0x0f8444,6, -0x0f8480,7, -0x0f84a0,1, -0x0f84c0,12, -0x0f8500,9, -0x0f8544,6, -0x0f8580,7, -0x0f85a0,1, -0x0f85c0,12, +0x0f8448,6, +0x0f8500,6, +0x0f8520,6, +0x0f8540,3, +0x0f8580,6, +0x0f85c0,3, +0x0f85d0,2, 0x0f8600,9, -0x0f8644,6, -0x0f8680,7, -0x0f86a0,1, -0x0f86c0,12, -0x0f8700,9, -0x0f8744,6, -0x0f8780,7, -0x0f87a0,1, -0x0f87c0,12, +0x0f8648,6, +0x0f8700,6, +0x0f8720,6, +0x0f8740,3, +0x0f8780,6, +0x0f87c0,3, +0x0f87d0,2, 0x0f8800,9, -0x0f8844,6, -0x0f8880,7, -0x0f88a0,1, -0x0f88c0,12, -0x0f8900,9, -0x0f8944,6, -0x0f8980,7, -0x0f89a0,1, -0x0f89c0,12, +0x0f8848,6, +0x0f8900,6, +0x0f8920,6, +0x0f8940,3, +0x0f8980,6, +0x0f89c0,3, +0x0f89d0,2, 0x0f8a00,9, -0x0f8a44,6, -0x0f8a80,7, -0x0f8aa0,1, -0x0f8ac0,12, -0x0f8b00,9, -0x0f8b44,6, -0x0f8b80,7, -0x0f8ba0,1, -0x0f8bc0,12, +0x0f8a48,6, +0x0f8b00,6, +0x0f8b20,6, +0x0f8b40,3, +0x0f8b80,6, +0x0f8bc0,3, +0x0f8bd0,2, 0x0f8c00,9, -0x0f8c44,6, -0x0f8c80,7, -0x0f8ca0,1, -0x0f8cc0,12, -0x0f8d00,9, -0x0f8d44,6, -0x0f8d80,7, -0x0f8da0,1, -0x0f8dc0,12, +0x0f8c48,6, +0x0f8d00,6, +0x0f8d20,6, +0x0f8d40,3, +0x0f8d80,6, +0x0f8dc0,3, +0x0f8dd0,2, 0x0f8e00,9, -0x0f8e44,6, -0x0f8e80,7, -0x0f8ea0,1, -0x0f8ec0,12, -0x0f8f00,9, -0x0f8f44,6, -0x0f8f80,7, -0x0f8fa0,1, -0x0f8fc0,12, +0x0f8e48,6, +0x0f8f00,6, +0x0f8f20,6, +0x0f8f40,3, +0x0f8f80,6, +0x0f8fc0,3, +0x0f8fd0,2, 0x0f9000,9, -0x0f9044,6, -0x0f9080,7, -0x0f90a0,1, -0x0f90c0,12, -0x0f9100,9, -0x0f9144,6, -0x0f9180,7, -0x0f91a0,1, -0x0f91c0,12, +0x0f9048,6, +0x0f9100,6, +0x0f9120,6, +0x0f9140,3, +0x0f9180,6, +0x0f91c0,3, +0x0f91d0,2, 0x0f9200,9, -0x0f9244,6, -0x0f9280,7, -0x0f92a0,1, -0x0f92c0,12, -0x0f9300,9, -0x0f9344,6, -0x0f9380,7, -0x0f93a0,1, -0x0f93c0,12, +0x0f9248,6, +0x0f9300,6, +0x0f9320,6, +0x0f9340,3, +0x0f9380,6, +0x0f93c0,3, +0x0f93d0,2, 0x0f9400,9, -0x0f9444,6, -0x0f9480,7, -0x0f94a0,1, -0x0f94c0,12, -0x0f9500,9, -0x0f9544,6, -0x0f9580,7, -0x0f95a0,1, -0x0f95c0,12, +0x0f9448,6, +0x0f9500,6, +0x0f9520,6, +0x0f9540,3, +0x0f9580,6, +0x0f95c0,3, +0x0f95d0,2, 0x0f9600,9, -0x0f9644,6, -0x0f9680,7, -0x0f96a0,1, -0x0f96c0,12, -0x0f9700,9, -0x0f9744,6, -0x0f9780,7, -0x0f97a0,1, -0x0f97c0,12, +0x0f9648,6, +0x0f9700,6, +0x0f9720,6, +0x0f9740,3, +0x0f9780,6, +0x0f97c0,3, +0x0f97d0,2, +0x0f9800,9, +0x0f9848,6, +0x0f9900,6, +0x0f9920,6, +0x0f9940,3, +0x0f9980,6, +0x0f99c0,3, +0x0f99d0,2, +0x0f9a00,9, +0x0f9a48,6, +0x0f9b00,6, +0x0f9b20,6, +0x0f9b40,3, +0x0f9b80,6, +0x0f9bc0,3, +0x0f9bd0,2, +0x0f9c00,9, +0x0f9c48,6, +0x0f9d00,6, +0x0f9d20,6, +0x0f9d40,3, +0x0f9d80,6, +0x0f9dc0,3, +0x0f9dd0,2, +0x0f9e00,9, +0x0f9e48,6, +0x0f9f00,6, +0x0f9f20,6, +0x0f9f40,3, +0x0f9f80,6, +0x0f9fc0,3, +0x0f9fd0,2, +0x0fa000,9, +0x0fa048,6, +0x0fa100,6, +0x0fa120,6, +0x0fa140,3, +0x0fa180,6, +0x0fa1c0,3, +0x0fa1d0,2, +0x0fa200,9, +0x0fa248,6, +0x0fa300,6, +0x0fa320,6, +0x0fa340,3, +0x0fa380,6, +0x0fa3c0,3, +0x0fa3d0,2, +0x0fa400,9, +0x0fa448,6, +0x0fa480,10, +0x0fa4c0,1, +0x0fa4e0,2, +0x0fa4ec,1, +0x0fa4f4,9, +0x0fa520,6, +0x0fa540,3, +0x0fa580,4, +0x0fa5c0,3, +0x0fa5d0,6, +0x0fa600,9, +0x0fa648,6, +0x0fa680,10, +0x0fa6c0,1, +0x0fa6e0,2, +0x0fa6ec,1, +0x0fa6f4,9, +0x0fa720,6, +0x0fa740,3, +0x0fa780,4, +0x0fa7c0,3, +0x0fa7d0,6, +0x0fa800,9, +0x0fa848,6, +0x0fa880,10, +0x0fa8c0,1, +0x0fa8e0,2, +0x0fa8ec,1, +0x0fa8f4,9, +0x0fa920,6, +0x0fa940,3, +0x0fa980,6, +0x0fa9c0,3, +0x0fa9d0,2, +0x0faa00,9, +0x0faa48,6, +0x0faa80,10, +0x0faac0,1, +0x0faae0,2, +0x0faaec,1, +0x0faaf4,9, +0x0fab20,6, +0x0fab40,3, +0x0fab80,6, +0x0fabc0,3, +0x0fabd0,2, +0x0fac00,9, +0x0fac48,6, +0x0fac80,10, +0x0facc0,1, +0x0face0,2, +0x0facec,1, +0x0facf4,9, +0x0fad20,6, +0x0fad40,3, +0x0fad80,10, +0x0fadc0,3, +0x0fadd0,2, +0x0fade8,2, +0x0fae00,9, +0x0fae48,6, +0x0fae80,10, +0x0faec0,1, +0x0faee0,2, +0x0faeec,1, +0x0faef4,9, +0x0faf20,6, +0x0faf40,3, +0x0faf80,8, +0x0fafc0,3, +0x0fafd0,2, 0x100000,6, -0x100080,9, -0x100100,6, -0x100180,9, -0x100200,9, -0x100240,24, -0x100300,2, +0x100100,30, +0x100180,5, +0x100200,6, +0x100300,30, +0x100380,5, +0x100400,11, +0x100430,29, +0x100500,2, +0x10050c,4, +0x100520,5, +0x10053c,1, +0x100544,1, +0x10054c,5, +0x100564,3, +0x100600,4, +0x100620,6, +0x100640,6, +0x100660,6, +0x100680,6, +0x1006a0,4, +0x100800,6, +0x100820,6, +0x100840,6, +0x100860,3, +0x100884,14, +0x1008c0,16, +0x100c00,20, +0x100c58,4, +0x100c70,2, +0x100c7c,7, +0x100d00,4, +0x100d30,2, +0x100d3c,12, +0x100d70,2, +0x100d80,3, +0x100e00,32, 0x101000,6, -0x101080,9, -0x101100,6, -0x101180,9, -0x101200,9, -0x101240,24, -0x101300,2, +0x101100,30, +0x101180,5, +0x101200,6, +0x101300,30, +0x101380,5, +0x101400,11, +0x101430,29, +0x101500,2, +0x10150c,4, +0x101520,5, +0x10153c,1, +0x101544,1, +0x10154c,5, +0x101564,3, +0x101600,4, +0x101620,6, +0x101640,6, +0x101660,6, +0x101680,6, +0x1016a0,4, +0x101800,6, +0x101820,6, +0x101840,6, +0x101860,3, +0x101884,14, +0x1018c0,16, +0x101c00,20, +0x101c58,4, +0x101c70,2, +0x101c7c,7, +0x101d00,4, +0x101d30,2, +0x101d3c,12, +0x101d70,2, +0x101d80,3, +0x101e00,32, 0x102000,6, -0x102080,9, -0x102100,6, -0x102180,9, -0x102200,9, -0x102240,24, -0x102300,2, +0x102100,30, +0x102180,5, +0x102200,6, +0x102300,30, +0x102380,5, +0x102400,11, +0x102430,29, +0x102500,2, +0x10250c,4, +0x102520,5, +0x10253c,1, +0x102544,1, +0x10254c,5, +0x102564,3, +0x102600,4, +0x102620,6, +0x102640,6, +0x102660,6, +0x102680,6, +0x1026a0,4, +0x102800,6, +0x102820,6, +0x102840,6, +0x102860,3, +0x102884,14, +0x1028c0,16, +0x102c00,20, +0x102c58,4, +0x102c70,2, +0x102c7c,7, +0x102d00,4, +0x102d30,2, +0x102d3c,12, +0x102d70,2, +0x102d80,3, +0x102e00,32, 0x103000,6, -0x103080,9, -0x103100,6, -0x103180,9, -0x103200,9, -0x103240,24, -0x103300,2, +0x103100,30, +0x103180,5, +0x103200,6, +0x103300,30, +0x103380,5, +0x103400,11, +0x103430,29, +0x103500,2, +0x10350c,4, +0x103520,5, +0x10353c,1, +0x103544,1, +0x10354c,5, +0x103564,3, +0x103600,4, +0x103620,6, +0x103640,6, +0x103660,6, +0x103680,6, +0x1036a0,4, +0x103800,6, +0x103820,6, +0x103840,6, +0x103860,3, +0x103884,14, +0x1038c0,16, +0x103c00,20, +0x103c58,4, +0x103c70,2, +0x103c7c,7, +0x103d00,4, +0x103d30,2, +0x103d3c,12, +0x103d70,2, +0x103d80,3, +0x103e00,32, 0x104000,6, -0x104080,9, -0x104100,6, -0x104180,9, -0x104200,9, -0x104240,24, -0x104300,2, +0x104100,30, +0x104180,5, +0x104200,6, +0x104300,30, +0x104380,5, +0x104400,11, +0x104430,29, +0x104500,2, +0x10450c,4, +0x104520,5, +0x10453c,1, +0x104544,1, +0x10454c,5, +0x104564,3, +0x104600,4, +0x104620,6, +0x104640,6, +0x104660,6, +0x104680,6, +0x1046a0,4, +0x104800,6, +0x104820,6, +0x104840,6, +0x104860,3, +0x104884,14, +0x1048c0,16, +0x104c00,20, +0x104c58,4, +0x104c70,2, +0x104c7c,7, +0x104d00,4, +0x104d30,2, +0x104d3c,12, +0x104d70,2, +0x104d80,3, +0x104e00,32, 0x105000,6, -0x105080,9, -0x105100,6, -0x105180,9, -0x105200,9, -0x105240,24, -0x105300,2, +0x105100,30, +0x105180,5, +0x105200,6, +0x105300,30, +0x105380,5, +0x105400,11, +0x105430,29, +0x105500,2, +0x10550c,4, +0x105520,5, +0x10553c,1, +0x105544,1, +0x10554c,5, +0x105564,3, +0x105600,4, +0x105620,6, +0x105640,6, +0x105660,6, +0x105680,6, +0x1056a0,4, +0x105800,6, +0x105820,6, +0x105840,6, +0x105860,3, +0x105884,14, +0x1058c0,16, +0x105c00,20, +0x105c58,4, +0x105c70,2, +0x105c7c,7, +0x105d00,4, +0x105d30,2, +0x105d3c,12, +0x105d70,2, +0x105d80,3, +0x105e00,32, 0x106000,6, -0x106080,9, -0x106100,6, -0x106180,9, -0x106200,9, -0x106240,24, -0x106300,2, +0x106100,30, +0x106180,5, +0x106200,6, +0x106300,30, +0x106380,5, +0x106400,11, +0x106430,29, +0x106500,2, +0x10650c,4, +0x106520,5, +0x10653c,1, +0x106544,1, +0x10654c,5, +0x106564,3, +0x106600,4, +0x106620,6, +0x106640,6, +0x106660,6, +0x106680,6, +0x1066a0,4, +0x106800,6, +0x106820,6, +0x106840,6, +0x106860,3, +0x106884,14, +0x1068c0,16, +0x106c00,20, +0x106c58,4, +0x106c70,2, +0x106c7c,7, +0x106d00,4, +0x106d30,2, +0x106d3c,12, +0x106d70,2, +0x106d80,3, +0x106e00,32, 0x107000,6, -0x107080,9, -0x107100,6, -0x107180,9, -0x107200,9, -0x107240,24, -0x107300,2, +0x107100,30, +0x107180,5, +0x107200,6, +0x107300,30, +0x107380,5, +0x107400,11, +0x107430,29, +0x107500,2, +0x10750c,4, +0x107520,5, +0x10753c,1, +0x107544,1, +0x10754c,5, +0x107564,3, +0x107600,4, +0x107620,6, +0x107640,6, +0x107660,6, +0x107680,6, +0x1076a0,4, +0x107800,6, +0x107820,6, +0x107840,6, +0x107860,3, +0x107884,14, +0x1078c0,16, +0x107c00,20, +0x107c58,4, +0x107c70,2, +0x107c7c,7, +0x107d00,4, +0x107d30,2, +0x107d3c,12, +0x107d70,2, +0x107d80,3, +0x107e00,32, 0x108000,6, -0x108080,9, -0x108100,6, -0x108180,9, -0x108200,9, -0x108240,24, -0x108300,2, +0x108100,30, +0x108180,5, +0x108200,6, +0x108300,30, +0x108380,5, +0x108400,11, +0x108430,29, +0x108500,2, +0x10850c,4, +0x108520,5, +0x10853c,1, +0x108544,1, +0x10854c,5, +0x108564,3, +0x108600,4, +0x108620,6, +0x108640,6, +0x108660,6, +0x108680,6, +0x1086a0,4, +0x108800,6, +0x108820,6, +0x108840,6, +0x108860,3, +0x108884,14, +0x1088c0,16, +0x108c00,20, +0x108c58,4, +0x108c70,2, +0x108c7c,7, +0x108d00,4, +0x108d30,2, +0x108d3c,12, +0x108d70,2, +0x108d80,3, +0x108e00,32, 0x109000,6, -0x109080,9, -0x109100,6, -0x109180,9, -0x109200,9, -0x109240,24, -0x109300,2, -0x114000,5, +0x109100,30, +0x109180,5, +0x109200,6, +0x109300,30, +0x109380,5, +0x109400,11, +0x109430,29, +0x109500,2, +0x10950c,4, +0x109520,5, +0x10953c,1, +0x109544,1, +0x10954c,5, +0x109564,3, +0x109600,4, +0x109620,6, +0x109640,6, +0x109660,6, +0x109680,6, +0x1096a0,4, +0x109800,6, +0x109820,6, +0x109840,6, +0x109860,3, +0x109884,14, +0x1098c0,16, +0x109c00,20, +0x109c58,4, +0x109c70,2, +0x109c7c,7, +0x109d00,4, +0x109d30,2, +0x109d3c,12, +0x109d70,2, +0x109d80,3, +0x109e00,32, +0x10a000,1, +0x113ffc,6, 0x114018,3, 0x114028,3, 0x114038,3, @@ -3195,98 +4154,422 @@ 0x114078,3, 0x114088,12, 0x1140c8,13, -0x114100,25, -0x114180,9, +0x114100,29, +0x114178,11, 0x1141c0,3, 0x1141d0,3, +0x1141e0,6, 0x114400,5, -0x114418,5, -0x114434,5, -0x11452c,3, -0x114590,5, +0x114428,5, +0x114450,5, +0x114478,5, +0x1144a0,4, 0x1145ac,1, 0x1145d8,4, -0x114600,40, -0x114900,6, -0x114920,26, -0x114c00,20, -0x114c60,2, -0x114c70,10, -0x114d00,9, -0x114d30,7, -0x114e00,64, +0x114600,6, +0x114620,6, +0x114640,6, +0x114660,6, +0x114680,6, +0x1146a0,6, +0x1146c0,6, +0x1146e0,6, +0x114700,6, +0x114720,6, +0x114740,3, +0x114900,7, +0x114920,36, +0x114c00,1, +0x114c08,1, +0x114c10,5, +0x114c38,1, +0x114c60,7, 0x115000,1, +0x115008,11, +0x115038,10, +0x115068,3, +0x115104,4, +0x115128,3, +0x115204,5, +0x115220,10, +0x115250,3, +0x115280,6, +0x1152a0,6, +0x1152c0,6, +0x1152e0,3, +0x115300,7, 0x140000,6, -0x140080,9, -0x140100,6, -0x140180,9, -0x140200,9, -0x140240,24, -0x140300,2, +0x140100,30, +0x140180,5, +0x140200,6, +0x140300,30, +0x140380,5, +0x140400,11, +0x140430,29, +0x140500,2, +0x14050c,4, +0x140520,5, +0x14053c,1, +0x140544,1, +0x14054c,5, +0x140564,3, +0x140600,4, +0x140620,6, +0x140640,6, +0x140660,6, +0x140680,6, +0x1406a0,4, +0x140800,6, +0x140820,6, +0x140840,6, +0x140860,3, +0x140884,14, +0x1408c0,16, +0x140c00,20, +0x140c58,4, +0x140c70,2, +0x140c7c,7, +0x140d00,4, +0x140d30,2, +0x140d3c,12, +0x140d70,2, +0x140d80,3, +0x140e00,32, 0x141000,6, -0x141080,9, -0x141100,6, -0x141180,9, -0x141200,9, -0x141240,24, -0x141300,2, +0x141100,30, +0x141180,5, +0x141200,6, +0x141300,30, +0x141380,5, +0x141400,11, +0x141430,29, +0x141500,2, +0x14150c,4, +0x141520,5, +0x14153c,1, +0x141544,1, +0x14154c,5, +0x141564,3, +0x141600,4, +0x141620,6, +0x141640,6, +0x141660,6, +0x141680,6, +0x1416a0,4, +0x141800,6, +0x141820,6, +0x141840,6, +0x141860,3, +0x141884,14, +0x1418c0,16, +0x141c00,20, +0x141c58,4, +0x141c70,2, +0x141c7c,7, +0x141d00,4, +0x141d30,2, +0x141d3c,12, +0x141d70,2, +0x141d80,3, +0x141e00,32, 0x142000,6, -0x142080,9, -0x142100,6, -0x142180,9, -0x142200,9, -0x142240,24, -0x142300,2, +0x142100,30, +0x142180,5, +0x142200,6, +0x142300,30, +0x142380,5, +0x142400,11, +0x142430,29, +0x142500,2, +0x14250c,4, +0x142520,5, +0x14253c,1, +0x142544,1, +0x14254c,5, +0x142564,3, +0x142600,4, +0x142620,6, +0x142640,6, +0x142660,6, +0x142680,6, +0x1426a0,4, +0x142800,6, +0x142820,6, +0x142840,6, +0x142860,3, +0x142884,14, +0x1428c0,16, +0x142c00,20, +0x142c58,4, +0x142c70,2, +0x142c7c,7, +0x142d00,4, +0x142d30,2, +0x142d3c,12, +0x142d70,2, +0x142d80,3, +0x142e00,32, 0x143000,6, -0x143080,9, -0x143100,6, -0x143180,9, -0x143200,9, -0x143240,24, -0x143300,2, +0x143100,30, +0x143180,5, +0x143200,6, +0x143300,30, +0x143380,5, +0x143400,11, +0x143430,29, +0x143500,2, +0x14350c,4, +0x143520,5, +0x14353c,1, +0x143544,1, +0x14354c,5, +0x143564,3, +0x143600,4, +0x143620,6, +0x143640,6, +0x143660,6, +0x143680,6, +0x1436a0,4, +0x143800,6, +0x143820,6, +0x143840,6, +0x143860,3, +0x143884,14, +0x1438c0,16, +0x143c00,20, +0x143c58,4, +0x143c70,2, +0x143c7c,7, +0x143d00,4, +0x143d30,2, +0x143d3c,12, +0x143d70,2, +0x143d80,3, +0x143e00,32, 0x144000,6, -0x144080,9, -0x144100,6, -0x144180,9, -0x144200,9, -0x144240,24, -0x144300,2, +0x144100,30, +0x144180,5, +0x144200,6, +0x144300,30, +0x144380,5, +0x144400,11, +0x144430,29, +0x144500,2, +0x14450c,4, +0x144520,5, +0x14453c,1, +0x144544,1, +0x14454c,5, +0x144564,3, +0x144600,4, +0x144620,6, +0x144640,6, +0x144660,6, +0x144680,6, +0x1446a0,4, +0x144800,6, +0x144820,6, +0x144840,6, +0x144860,3, +0x144884,14, +0x1448c0,16, +0x144c00,20, +0x144c58,4, +0x144c70,2, +0x144c7c,7, +0x144d00,4, +0x144d30,2, +0x144d3c,12, +0x144d70,2, +0x144d80,3, +0x144e00,32, 0x145000,6, -0x145080,9, -0x145100,6, -0x145180,9, -0x145200,9, -0x145240,24, -0x145300,2, +0x145100,30, +0x145180,5, +0x145200,6, +0x145300,30, +0x145380,5, +0x145400,11, +0x145430,29, +0x145500,2, +0x14550c,4, +0x145520,5, +0x14553c,1, +0x145544,1, +0x14554c,5, +0x145564,3, +0x145600,4, +0x145620,6, +0x145640,6, +0x145660,6, +0x145680,6, +0x1456a0,4, +0x145800,6, +0x145820,6, +0x145840,6, +0x145860,3, +0x145884,14, +0x1458c0,16, +0x145c00,20, +0x145c58,4, +0x145c70,2, +0x145c7c,7, +0x145d00,4, +0x145d30,2, +0x145d3c,12, +0x145d70,2, +0x145d80,3, +0x145e00,32, 0x146000,6, -0x146080,9, -0x146100,6, -0x146180,9, -0x146200,9, -0x146240,24, -0x146300,2, +0x146100,30, +0x146180,5, +0x146200,6, +0x146300,30, +0x146380,5, +0x146400,11, +0x146430,29, +0x146500,2, +0x14650c,4, +0x146520,5, +0x14653c,1, +0x146544,1, +0x14654c,5, +0x146564,3, +0x146600,4, +0x146620,6, +0x146640,6, +0x146660,6, +0x146680,6, +0x1466a0,4, +0x146800,6, +0x146820,6, +0x146840,6, +0x146860,3, +0x146884,14, +0x1468c0,16, +0x146c00,20, +0x146c58,4, +0x146c70,2, +0x146c7c,7, +0x146d00,4, +0x146d30,2, +0x146d3c,12, +0x146d70,2, +0x146d80,3, +0x146e00,32, 0x147000,6, -0x147080,9, -0x147100,6, -0x147180,9, -0x147200,9, -0x147240,24, -0x147300,2, +0x147100,30, +0x147180,5, +0x147200,6, +0x147300,30, +0x147380,5, +0x147400,11, +0x147430,29, +0x147500,2, +0x14750c,4, +0x147520,5, +0x14753c,1, +0x147544,1, +0x14754c,5, +0x147564,3, +0x147600,4, +0x147620,6, +0x147640,6, +0x147660,6, +0x147680,6, +0x1476a0,4, +0x147800,6, +0x147820,6, +0x147840,6, +0x147860,3, +0x147884,14, +0x1478c0,16, +0x147c00,20, +0x147c58,4, +0x147c70,2, +0x147c7c,7, +0x147d00,4, +0x147d30,2, +0x147d3c,12, +0x147d70,2, +0x147d80,3, +0x147e00,32, 0x148000,6, -0x148080,9, -0x148100,6, -0x148180,9, -0x148200,9, -0x148240,24, -0x148300,2, +0x148100,30, +0x148180,5, +0x148200,6, +0x148300,30, +0x148380,5, +0x148400,11, +0x148430,29, +0x148500,2, +0x14850c,4, +0x148520,5, +0x14853c,1, +0x148544,1, +0x14854c,5, +0x148564,3, +0x148600,4, +0x148620,6, +0x148640,6, +0x148660,6, +0x148680,6, +0x1486a0,4, +0x148800,6, +0x148820,6, +0x148840,6, +0x148860,3, +0x148884,14, +0x1488c0,16, +0x148c00,20, +0x148c58,4, +0x148c70,2, +0x148c7c,7, +0x148d00,4, +0x148d30,2, +0x148d3c,12, +0x148d70,2, +0x148d80,3, +0x148e00,32, 0x149000,6, -0x149080,9, -0x149100,6, -0x149180,9, -0x149200,9, -0x149240,24, -0x149300,2, -0x154000,5, +0x149100,30, +0x149180,5, +0x149200,6, +0x149300,30, +0x149380,5, +0x149400,11, +0x149430,29, +0x149500,2, +0x14950c,4, +0x149520,5, +0x14953c,1, +0x149544,1, +0x14954c,5, +0x149564,3, +0x149600,4, +0x149620,6, +0x149640,6, +0x149660,6, +0x149680,6, +0x1496a0,4, +0x149800,6, +0x149820,6, +0x149840,6, +0x149860,3, +0x149884,14, +0x1498c0,16, +0x149c00,20, +0x149c58,4, +0x149c70,2, +0x149c7c,7, +0x149d00,4, +0x149d30,2, +0x149d3c,12, +0x149d70,2, +0x149d80,3, +0x149e00,32, +0x14a000,1, +0x153ffc,6, 0x154018,3, 0x154028,3, 0x154038,3, @@ -3296,27 +4579,50 @@ 0x154078,3, 0x154088,12, 0x1540c8,13, -0x154100,25, -0x154180,9, +0x154100,29, +0x154178,11, 0x1541c0,3, 0x1541d0,3, +0x1541e0,6, 0x154400,5, -0x154418,5, -0x154434,5, -0x15452c,3, -0x154590,5, +0x154428,5, +0x154450,5, +0x154478,5, +0x1544a0,4, 0x1545ac,1, 0x1545d8,4, -0x154600,40, -0x154900,6, -0x154920,26, -0x154c00,20, -0x154c60,2, -0x154c70,10, -0x154d00,9, -0x154d30,7, -0x154e00,64, +0x154600,6, +0x154620,6, +0x154640,6, +0x154660,6, +0x154680,6, +0x1546a0,6, +0x1546c0,6, +0x1546e0,6, +0x154700,6, +0x154720,6, +0x154740,3, +0x154900,7, +0x154920,36, +0x154c00,1, +0x154c08,1, +0x154c10,5, +0x154c38,1, +0x154c60,7, 0x155000,1, +0x155008,11, +0x155038,10, +0x155068,3, +0x155104,4, +0x155128,3, +0x155204,5, +0x155220,10, +0x155250,3, +0x155280,6, +0x1552a0,6, +0x1552c0,6, +0x1552e0,3, +0x155300,7, 0x180000,6, 0x180020,6, 0x180040,6, @@ -3328,54 +4634,51 @@ 0x180110,1, 0x200000,5, 0x200020,4, -0x200034,9, -0x20005c,7, +0x200034,17, 0x200080,1, 0x2000a0,6, 0x200100,5, 0x200120,4, -0x200134,9, -0x20015c,7, +0x200134,17, 0x200180,1, 0x2001a0,6, 0x200200,5, 0x200220,4, -0x200234,9, -0x20025c,7, +0x200234,17, 0x200280,1, 0x2002a0,6, 0x200300,5, 0x200320,4, -0x200334,9, -0x20035c,7, +0x200334,17, 0x200380,1, 0x2003a0,6, -0x200400,4, -0x200440,4, +0x200400,6, +0x200440,6, 0x200480,3, 0x2004c0,3, -0x200500,5, -0x200518,8, +0x200500,6, +0x20051c,7, +0x200540,1, 0x200c00,13, -0x200c40,11, +0x200c40,12, 0x200c80,13, -0x200cc0,11, +0x200cc0,12, 0x200d00,6, 0x200d20,6, -0x200e00,10, +0x200d80,14, +0x200dc0,2, 0x200e40,11, -0x200e80,8, +0x200e80,6, +0x200ea0,6, 0x201000,2, 0x201010,5, 0x201040,3, 0x201050,3, -0x201060,7, -0x201080,7, -0x2010a0,7, -0x2010c0,7, -0x201100,7, -0x201140,7, -0x201180,5, +0x201060,32, +0x201100,8, +0x201140,8, +0x201180,3, +0x201190,2, 0x20119c,9, 0x201218,9, 0x201240,3, @@ -3388,75 +4691,84 @@ 0x2012e4,1, 0x201400,8, 0x201424,2, -0x201500,3, +0x201500,5, 0x201520,4, -0x201540,3, +0x201540,5, 0x201560,4, 0x201800,24, -0x201864,2, -0x201880,6, -0x201900,12, -0x201940,6, -0x201960,6, +0x201864,5, +0x201880,8, +0x201900,13, 0x201980,4, +0x2019a0,6, 0x2019c0,6, 0x2019dc,1, 0x201a00,6, 0x201a1c,1, 0x201a40,1, +0x201a60,1, 0x201a68,23, +0x201ac8,6, 0x201b00,17, +0x201b48,6, 0x201b80,12, +0x201c00,6, +0x201c20,6, +0x201c40,6, +0x201c60,3, +0x201d00,6, +0x201d20,6, +0x201d40,3, +0x201d80,6, +0x201da0,6, +0x201dc0,3, 0x202000,5, 0x202020,4, -0x202034,9, -0x20205c,7, +0x202034,17, 0x202080,1, 0x2020a0,6, 0x202100,5, 0x202120,4, -0x202134,9, -0x20215c,7, +0x202134,17, 0x202180,1, 0x2021a0,6, 0x202200,5, 0x202220,4, -0x202234,9, -0x20225c,7, +0x202234,17, 0x202280,1, 0x2022a0,6, 0x202300,5, 0x202320,4, -0x202334,9, -0x20235c,7, +0x202334,17, 0x202380,1, 0x2023a0,6, -0x202400,4, -0x202440,4, +0x202400,6, +0x202440,6, 0x202480,3, 0x2024c0,3, -0x202500,5, -0x202518,8, +0x202500,6, +0x20251c,7, +0x202540,1, 0x202c00,13, -0x202c40,11, +0x202c40,12, 0x202c80,13, -0x202cc0,11, +0x202cc0,12, 0x202d00,6, 0x202d20,6, -0x202e00,10, +0x202d80,14, +0x202dc0,2, 0x202e40,11, -0x202e80,8, +0x202e80,6, +0x202ea0,6, 0x203000,2, 0x203010,5, 0x203040,3, 0x203050,3, -0x203060,7, -0x203080,7, -0x2030a0,7, -0x2030c0,7, -0x203100,7, -0x203140,7, -0x203180,5, +0x203060,32, +0x203100,8, +0x203140,8, +0x203180,3, +0x203190,2, 0x20319c,9, 0x203218,9, 0x203240,3, @@ -3469,349 +4781,409 @@ 0x2032e4,1, 0x203400,8, 0x203424,2, -0x203500,3, +0x203500,5, 0x203520,4, -0x203540,3, +0x203540,5, 0x203560,4, 0x203800,24, -0x203864,2, -0x203880,6, -0x203900,12, -0x203940,6, -0x203960,6, +0x203864,5, +0x203880,8, +0x203900,13, 0x203980,4, +0x2039a0,6, 0x2039c0,6, 0x2039dc,1, 0x203a00,6, 0x203a1c,1, 0x203a40,1, +0x203a60,1, 0x203a68,23, +0x203ac8,6, 0x203b00,17, +0x203b48,6, 0x203b80,12, -0x204000,4, -0x204014,6, -0x204030,5, -0x204080,4, -0x204094,6, -0x2040b0,5, -0x204100,4, -0x204114,6, -0x204130,5, -0x204180,4, -0x204194,6, -0x2041b0,5, -0x204200,3, -0x204210,23, -0x204500,3, -0x204510,12, -0x204580,3, -0x204590,12, -0x204600,3, -0x204610,12, -0x204680,3, -0x204690,12, -0x204700,4, -0x204718,13, -0x204800,25, -0x204880,25, -0x204900,25, -0x204980,25, -0x204a00,17, -0x204a50,3, -0x204a60,3, -0x205000,4, -0x205014,6, -0x205030,5, -0x205080,4, -0x205094,6, -0x2050b0,5, -0x205100,4, -0x205114,6, -0x205130,5, -0x205180,4, -0x205194,6, -0x2051b0,5, -0x205200,3, -0x205210,23, -0x205500,3, -0x205510,12, -0x205580,3, -0x205590,12, -0x205600,3, -0x205610,12, -0x205680,3, -0x205690,12, -0x205700,4, -0x205718,13, -0x205800,25, -0x205880,25, -0x205900,25, -0x205980,25, -0x205a00,17, -0x205a50,3, -0x205a60,3, -0x206000,13, -0x206040,22, -0x2060a0,6, -0x2060c0,3, +0x203c00,6, +0x203c20,6, +0x203c40,6, +0x203c60,3, +0x203d00,6, +0x203d20,6, +0x203d40,3, +0x203d80,6, +0x203da0,6, +0x203dc0,3, +0x204000,29, +0x204078,5, +0x204090,2, +0x2040a0,10, +0x204100,93, +0x204278,5, +0x204290,2, +0x2042a0,10, +0x204300,93, +0x204478,5, +0x204490,2, +0x2044a0,10, +0x204500,93, +0x204678,5, +0x204690,2, +0x2046a0,10, +0x204700,93, +0x20487c,1, +0x204a00,8, +0x204a24,15, +0x204a64,23, +0x204ac4,6, +0x204b00,4, +0x204b20,3, +0x204c00,2, +0x204c40,14, +0x204c80,9, +0x204d00,9, +0x204d2c,1, +0x204d80,6, +0x204e00,2, +0x204e0c,1, +0x204e14,5, +0x204e2c,1, +0x204e34,5, +0x204e4c,1, +0x204e54,5, +0x204e6c,1, +0x204e74,5, +0x204e8c,1, +0x204e94,5, +0x204eac,1, +0x204eb4,3, +0x205000,29, +0x205078,5, +0x205090,2, +0x2050a0,10, +0x205100,93, +0x205278,5, +0x205290,2, +0x2052a0,10, +0x205300,93, +0x205478,5, +0x205490,2, +0x2054a0,10, +0x205500,93, +0x205678,5, +0x205690,2, +0x2056a0,10, +0x205700,93, +0x20587c,1, +0x205a00,8, +0x205a24,15, +0x205a64,23, +0x205ac4,6, +0x205b00,4, +0x205b20,3, +0x205c00,2, +0x205c40,14, +0x205c80,9, +0x205d00,9, +0x205d2c,1, +0x205d80,6, +0x205e00,2, +0x205e0c,1, +0x205e14,5, +0x205e2c,1, +0x205e34,5, +0x205e4c,1, +0x205e54,5, +0x205e6c,1, +0x205e74,5, +0x205e8c,1, +0x205e94,5, +0x205eac,1, +0x205eb4,3, +0x206000,14, +0x206070,3, +0x206080,6, 0x206100,9, -0x206400,2, -0x20640c,6, -0x206440,13, -0x206480,16, -0x206800,1, -0x206808,3, -0x20681c,8, -0x206840,3, -0x206850,3, -0x206880,1, -0x206888,3, -0x20689c,8, -0x2068c0,3, -0x2068d0,3, -0x206900,1, -0x206908,3, -0x20691c,8, -0x206940,3, -0x206950,3, -0x206980,1, -0x206988,3, -0x20699c,8, -0x2069c0,3, -0x2069d0,3, -0x206a00,1, -0x206a08,3, -0x206a1c,8, -0x206a40,3, -0x206a50,3, -0x206a80,1, -0x206a88,3, -0x206a9c,8, -0x206ac0,3, -0x206ad0,3, -0x206b00,1, -0x206b08,3, -0x206b1c,8, -0x206b40,3, -0x206b50,3, -0x206b80,1, -0x206b88,3, -0x206b9c,8, -0x206bc0,3, -0x206bd0,3, -0x206c00,1, -0x206c08,3, -0x206c1c,8, -0x206c40,3, -0x206c50,3, -0x206c80,2, -0x206c94,13, +0x206204,1, +0x20620c,6, +0x206240,13, +0x206280,16, +0x206400,8, +0x206424,15, +0x206464,15, +0x2064a4,15, +0x2064e4,23, +0x206544,6, +0x206580,10, +0x2065ac,1, +0x2065b4,5, +0x2065cc,1, +0x2065d4,5, +0x2065ec,1, +0x2065f4,13, +0x206680,7, +0x2066a0,5, +0x2066c0,5, +0x2066e0,3, +0x206800,19, +0x206850,10, +0x206880,19, +0x2068d0,10, +0x206900,19, +0x206950,10, +0x206980,19, +0x2069d0,10, +0x206a00,19, +0x206a50,10, +0x206a80,19, +0x206ad0,10, +0x206b00,19, +0x206b50,10, +0x206b80,19, +0x206bd0,10, +0x206c00,19, +0x206c50,10, +0x206c84,1, +0x206c94,8, +0x206cb8,9, +0x206ce0,4, 0x207000,6, 0x207020,3, -0x207034,1, 0x207040,7, 0x207060,6, 0x207100,5, 0x207138,1, 0x207144,1, -0x207400,1, -0x207418,1, -0x207434,1, -0x20752c,5, -0x207590,1, -0x2075ac,1, -0x2075d8,4, -0x207600,8, +0x207150,2, 0x208000,6, 0x208020,3, 0x208030,9, -0x208080,6, -0x208100,20, +0x208100,6, +0x208120,10, +0x208150,8, 0x208400,1, -0x208418,1, -0x208434,1, -0x20852c,4, -0x208590,1, +0x208428,1, +0x208450,1, +0x208478,1, +0x2084a0,8, 0x2085ac,1, 0x2085d8,4, -0x208600,8, +0x208600,6, +0x208620,6, +0x208640,3, +0x208800,6, +0x208820,3, +0x208830,4, +0x208858,2, +0x208864,1, +0x208874,3, +0x208898,2, +0x2088a4,1, +0x2088b4,3, 0x209000,6, 0x209020,6, 0x209040,3, 0x209080,14, 0x2090bc,1, 0x2090c4,13, -0x2090fc,6, -0x209120,5, -0x209190,10, -0x209200,16, -0x209244,32, -0x209300,26, +0x2090fc,5, +0x209120,4, +0x209140,3, +0x209180,3, +0x209190,3, +0x2091a0,1, +0x2091e0,6, +0x209200,20, +0x20925c,30, +0x209300,24, 0x209380,2, 0x2093a0,1, 0x2093c0,11, -0x209404,4, -0x209418,16, +0x209404,3, +0x209420,11, 0x209460,3, +0x209480,6, 0x209500,6, +0x209520,6, 0x209540,1, 0x209558,2, 0x209600,17, -0x209800,366, +0x209800,410, 0x20a000,6, 0x20a020,6, 0x20a040,3, 0x20a080,14, 0x20a0bc,1, 0x20a0c4,13, -0x20a0fc,6, -0x20a120,5, -0x20a190,10, -0x20a200,16, -0x20a244,32, -0x20a300,26, +0x20a0fc,5, +0x20a120,4, +0x20a140,3, +0x20a180,3, +0x20a190,3, +0x20a1a0,1, +0x20a1e0,6, +0x20a200,20, +0x20a25c,30, +0x20a300,24, 0x20a380,2, 0x20a3a0,1, 0x20a3c0,11, -0x20a404,4, -0x20a418,16, +0x20a404,3, +0x20a420,11, 0x20a460,3, +0x20a480,6, 0x20a500,6, +0x20a520,6, 0x20a540,1, 0x20a558,2, 0x20a600,17, -0x20a800,366, +0x20a800,410, 0x20b000,4, -0x20b020,9, -0x20b048,6, -0x20b064,6, -0x20b080,1, +0x20b020,25, +0x20b088,8, 0x20b100,4, -0x20b120,9, -0x20b148,6, -0x20b164,6, -0x20b180,1, -0x20b200,35, -0x20b290,6, -0x20b2b4,6, -0x20b2d0,5, -0x20b2e8,5, +0x20b120,25, +0x20b188,8, +0x20b200,34, 0x20b300,37, -0x20b400,6, -0x20b420,3, -0x20b438,4, -0x20b454,3, -0x20b478,4, -0x20b494,3, +0x20b400,16, +0x20b464,1, +0x20b474,3, +0x20b500,6, +0x20b520,2, +0x20b530,9, +0x20b570,10, +0x20b5a0,2, +0x20b5b0,9, +0x20b5f0,4, +0x20b620,7, +0x20b640,16, +0x20b700,6, +0x20b720,6, +0x20b740,6, +0x20b760,6, +0x20b780,3, 0x20b800,5, 0x20b818,1, 0x20b854,6, 0x20b880,2, 0x20b8a4,1, +0x20b8ac,2, 0x20ba00,28, -0x20ba7c,5, -0x20bab0,2, +0x20ba7c,13, +0x20bab4,1, 0x20babc,10, -0x20bb00,2, -0x20bb0c,7, +0x20bb04,1, +0x20bb0c,5, +0x20bb24,1, 0x20bb34,9, 0x20bb60,6, -0x20bb80,8, +0x20bb80,22, +0x20bbe0,3, +0x20bbf0,2, 0x20bc00,5, 0x20bc18,1, 0x20bc54,6, 0x20bc80,2, 0x20bca4,1, +0x20bcac,2, 0x20be00,28, -0x20be7c,5, -0x20beb0,2, +0x20be7c,13, +0x20beb4,1, 0x20bebc,10, -0x20bf00,2, -0x20bf0c,7, +0x20bf04,1, +0x20bf0c,5, +0x20bf24,1, 0x20bf34,9, 0x20bf60,6, -0x20bf80,8, -0x20c000,4, -0x20c014,10, -0x20c040,1, -0x20c048,3, -0x20c058,1, -0x20c060,1, +0x20bf80,22, +0x20bfe0,3, +0x20bff0,2, +0x20c008,2, +0x20c014,11, +0x20c044,1, +0x20c04c,3, +0x20c05c,1, +0x20c064,1, 0x20c07c,1, -0x20c500,1, -0x20c518,2, +0x20c500,2, +0x20c518,1, +0x20c520,3, 0x20c540,6, -0x20c800,4, -0x20c814,10, -0x20c840,1, -0x20c848,3, -0x20c858,1, -0x20c860,1, +0x20c580,10, +0x20c808,2, +0x20c814,11, +0x20c844,1, +0x20c84c,3, +0x20c85c,1, +0x20c864,1, 0x20c87c,1, -0x20cd00,1, -0x20cd18,2, +0x20cd00,2, +0x20cd18,1, +0x20cd20,3, 0x20cd40,6, +0x20cd80,10, 0x20d800,2, -0x20d818,2, -0x20d834,2, -0x20d92c,6, -0x20d990,2, +0x20d828,2, +0x20d850,2, +0x20d878,2, +0x20d8a0,6, 0x20d9ac,1, 0x20d9d8,4, -0x20da00,16, -0x20dc00,3, -0x20dc20,2, -0x20dc40,1, +0x20da00,6, +0x20da20,6, +0x20da40,6, +0x20da60,6, +0x20da80,3, +0x20dc00,6, +0x20dc20,3, +0x20dc40,2, +0x20dc60,1, 0x210000,5, 0x210020,4, -0x210034,9, -0x21005c,7, +0x210034,17, 0x210080,1, 0x2100a0,6, 0x210100,5, 0x210120,4, -0x210134,9, -0x21015c,7, +0x210134,17, 0x210180,1, 0x2101a0,6, 0x210200,5, 0x210220,4, -0x210234,9, -0x21025c,7, +0x210234,17, 0x210280,1, 0x2102a0,6, 0x210300,5, 0x210320,4, -0x210334,9, -0x21035c,7, +0x210334,17, 0x210380,1, 0x2103a0,6, -0x210400,4, -0x210440,4, +0x210400,6, +0x210440,6, 0x210480,3, 0x2104c0,3, -0x210500,5, -0x210518,8, +0x210500,6, +0x21051c,7, +0x210540,1, 0x210c00,13, -0x210c40,11, +0x210c40,12, 0x210c80,13, -0x210cc0,11, +0x210cc0,12, 0x210d00,6, 0x210d20,6, -0x210e00,10, +0x210d80,14, +0x210dc0,2, 0x210e40,11, -0x210e80,8, +0x210e80,6, +0x210ea0,6, 0x211000,2, 0x211010,5, 0x211040,3, 0x211050,3, -0x211060,7, -0x211080,7, -0x2110a0,7, -0x2110c0,7, -0x211100,7, -0x211140,7, -0x211180,5, +0x211060,32, +0x211100,8, +0x211140,8, +0x211180,3, +0x211190,2, 0x21119c,9, 0x211218,9, 0x211240,3, @@ -3824,75 +5196,84 @@ 0x2112e4,1, 0x211400,8, 0x211424,2, -0x211500,3, +0x211500,5, 0x211520,4, -0x211540,3, +0x211540,5, 0x211560,4, 0x211800,24, -0x211864,2, -0x211880,6, -0x211900,12, -0x211940,6, -0x211960,6, +0x211864,5, +0x211880,8, +0x211900,13, 0x211980,4, +0x2119a0,6, 0x2119c0,6, 0x2119dc,1, 0x211a00,6, 0x211a1c,1, 0x211a40,1, +0x211a60,1, 0x211a68,23, +0x211ac8,6, 0x211b00,17, +0x211b48,6, 0x211b80,12, +0x211c00,6, +0x211c20,6, +0x211c40,6, +0x211c60,3, +0x211d00,6, +0x211d20,6, +0x211d40,3, +0x211d80,6, +0x211da0,6, +0x211dc0,3, 0x212000,5, 0x212020,4, -0x212034,9, -0x21205c,7, +0x212034,17, 0x212080,1, 0x2120a0,6, 0x212100,5, 0x212120,4, -0x212134,9, -0x21215c,7, +0x212134,17, 0x212180,1, 0x2121a0,6, 0x212200,5, 0x212220,4, -0x212234,9, -0x21225c,7, +0x212234,17, 0x212280,1, 0x2122a0,6, 0x212300,5, 0x212320,4, -0x212334,9, -0x21235c,7, +0x212334,17, 0x212380,1, 0x2123a0,6, -0x212400,4, -0x212440,4, +0x212400,6, +0x212440,6, 0x212480,3, 0x2124c0,3, -0x212500,5, -0x212518,8, +0x212500,6, +0x21251c,7, +0x212540,1, 0x212c00,13, -0x212c40,11, +0x212c40,12, 0x212c80,13, -0x212cc0,11, +0x212cc0,12, 0x212d00,6, 0x212d20,6, -0x212e00,10, +0x212d80,14, +0x212dc0,2, 0x212e40,11, -0x212e80,8, +0x212e80,6, +0x212ea0,6, 0x213000,2, 0x213010,5, 0x213040,3, 0x213050,3, -0x213060,7, -0x213080,7, -0x2130a0,7, -0x2130c0,7, -0x213100,7, -0x213140,7, -0x213180,5, +0x213060,32, +0x213100,8, +0x213140,8, +0x213180,3, +0x213190,2, 0x21319c,9, 0x213218,9, 0x213240,3, @@ -3905,349 +5286,409 @@ 0x2132e4,1, 0x213400,8, 0x213424,2, -0x213500,3, +0x213500,5, 0x213520,4, -0x213540,3, +0x213540,5, 0x213560,4, 0x213800,24, -0x213864,2, -0x213880,6, -0x213900,12, -0x213940,6, -0x213960,6, +0x213864,5, +0x213880,8, +0x213900,13, 0x213980,4, +0x2139a0,6, 0x2139c0,6, 0x2139dc,1, 0x213a00,6, 0x213a1c,1, 0x213a40,1, +0x213a60,1, 0x213a68,23, +0x213ac8,6, 0x213b00,17, +0x213b48,6, 0x213b80,12, -0x214000,4, -0x214014,6, -0x214030,5, -0x214080,4, -0x214094,6, -0x2140b0,5, -0x214100,4, -0x214114,6, -0x214130,5, -0x214180,4, -0x214194,6, -0x2141b0,5, -0x214200,3, -0x214210,23, -0x214500,3, -0x214510,12, -0x214580,3, -0x214590,12, -0x214600,3, -0x214610,12, -0x214680,3, -0x214690,12, -0x214700,4, -0x214718,13, -0x214800,25, -0x214880,25, -0x214900,25, -0x214980,25, -0x214a00,17, -0x214a50,3, -0x214a60,3, -0x215000,4, -0x215014,6, -0x215030,5, -0x215080,4, -0x215094,6, -0x2150b0,5, -0x215100,4, -0x215114,6, -0x215130,5, -0x215180,4, -0x215194,6, -0x2151b0,5, -0x215200,3, -0x215210,23, -0x215500,3, -0x215510,12, -0x215580,3, -0x215590,12, -0x215600,3, -0x215610,12, -0x215680,3, -0x215690,12, -0x215700,4, -0x215718,13, -0x215800,25, -0x215880,25, -0x215900,25, -0x215980,25, -0x215a00,17, -0x215a50,3, -0x215a60,3, -0x216000,13, -0x216040,22, -0x2160a0,6, -0x2160c0,3, +0x213c00,6, +0x213c20,6, +0x213c40,6, +0x213c60,3, +0x213d00,6, +0x213d20,6, +0x213d40,3, +0x213d80,6, +0x213da0,6, +0x213dc0,3, +0x214000,29, +0x214078,5, +0x214090,2, +0x2140a0,10, +0x214100,93, +0x214278,5, +0x214290,2, +0x2142a0,10, +0x214300,93, +0x214478,5, +0x214490,2, +0x2144a0,10, +0x214500,93, +0x214678,5, +0x214690,2, +0x2146a0,10, +0x214700,93, +0x21487c,1, +0x214a00,8, +0x214a24,15, +0x214a64,23, +0x214ac4,6, +0x214b00,4, +0x214b20,3, +0x214c00,2, +0x214c40,14, +0x214c80,9, +0x214d00,9, +0x214d2c,1, +0x214d80,6, +0x214e00,2, +0x214e0c,1, +0x214e14,5, +0x214e2c,1, +0x214e34,5, +0x214e4c,1, +0x214e54,5, +0x214e6c,1, +0x214e74,5, +0x214e8c,1, +0x214e94,5, +0x214eac,1, +0x214eb4,3, +0x215000,29, +0x215078,5, +0x215090,2, +0x2150a0,10, +0x215100,93, +0x215278,5, +0x215290,2, +0x2152a0,10, +0x215300,93, +0x215478,5, +0x215490,2, +0x2154a0,10, +0x215500,93, +0x215678,5, +0x215690,2, +0x2156a0,10, +0x215700,93, +0x21587c,1, +0x215a00,8, +0x215a24,15, +0x215a64,23, +0x215ac4,6, +0x215b00,4, +0x215b20,3, +0x215c00,2, +0x215c40,14, +0x215c80,9, +0x215d00,9, +0x215d2c,1, +0x215d80,6, +0x215e00,2, +0x215e0c,1, +0x215e14,5, +0x215e2c,1, +0x215e34,5, +0x215e4c,1, +0x215e54,5, +0x215e6c,1, +0x215e74,5, +0x215e8c,1, +0x215e94,5, +0x215eac,1, +0x215eb4,3, +0x216000,14, +0x216070,3, +0x216080,6, 0x216100,9, -0x216400,2, -0x21640c,6, -0x216440,13, -0x216480,16, -0x216800,1, -0x216808,3, -0x21681c,8, -0x216840,3, -0x216850,3, -0x216880,1, -0x216888,3, -0x21689c,8, -0x2168c0,3, -0x2168d0,3, -0x216900,1, -0x216908,3, -0x21691c,8, -0x216940,3, -0x216950,3, -0x216980,1, -0x216988,3, -0x21699c,8, -0x2169c0,3, -0x2169d0,3, -0x216a00,1, -0x216a08,3, -0x216a1c,8, -0x216a40,3, -0x216a50,3, -0x216a80,1, -0x216a88,3, -0x216a9c,8, -0x216ac0,3, -0x216ad0,3, -0x216b00,1, -0x216b08,3, -0x216b1c,8, -0x216b40,3, -0x216b50,3, -0x216b80,1, -0x216b88,3, -0x216b9c,8, -0x216bc0,3, -0x216bd0,3, -0x216c00,1, -0x216c08,3, -0x216c1c,8, -0x216c40,3, -0x216c50,3, -0x216c80,2, -0x216c94,13, +0x216204,1, +0x21620c,6, +0x216240,13, +0x216280,16, +0x216400,8, +0x216424,15, +0x216464,15, +0x2164a4,15, +0x2164e4,23, +0x216544,6, +0x216580,10, +0x2165ac,1, +0x2165b4,5, +0x2165cc,1, +0x2165d4,5, +0x2165ec,1, +0x2165f4,13, +0x216680,7, +0x2166a0,5, +0x2166c0,5, +0x2166e0,3, +0x216800,19, +0x216850,10, +0x216880,19, +0x2168d0,10, +0x216900,19, +0x216950,10, +0x216980,19, +0x2169d0,10, +0x216a00,19, +0x216a50,10, +0x216a80,19, +0x216ad0,10, +0x216b00,19, +0x216b50,10, +0x216b80,19, +0x216bd0,10, +0x216c00,19, +0x216c50,10, +0x216c84,1, +0x216c94,8, +0x216cb8,9, +0x216ce0,4, 0x217000,6, 0x217020,3, -0x217034,1, 0x217040,7, 0x217060,6, 0x217100,5, 0x217138,1, 0x217144,1, -0x217400,1, -0x217418,1, -0x217434,1, -0x21752c,5, -0x217590,1, -0x2175ac,1, -0x2175d8,4, -0x217600,8, +0x217150,2, 0x218000,6, 0x218020,3, 0x218030,9, -0x218080,6, -0x218100,20, +0x218100,6, +0x218120,10, +0x218150,8, 0x218400,1, -0x218418,1, -0x218434,1, -0x21852c,4, -0x218590,1, +0x218428,1, +0x218450,1, +0x218478,1, +0x2184a0,8, 0x2185ac,1, 0x2185d8,4, -0x218600,8, +0x218600,6, +0x218620,6, +0x218640,3, +0x218800,6, +0x218820,3, +0x218830,4, +0x218858,2, +0x218864,1, +0x218874,3, +0x218898,2, +0x2188a4,1, +0x2188b4,3, 0x219000,6, 0x219020,6, 0x219040,3, 0x219080,14, 0x2190bc,1, 0x2190c4,13, -0x2190fc,6, -0x219120,5, -0x219190,10, -0x219200,16, -0x219244,32, -0x219300,26, +0x2190fc,5, +0x219120,4, +0x219140,3, +0x219180,3, +0x219190,3, +0x2191a0,1, +0x2191e0,6, +0x219200,20, +0x21925c,30, +0x219300,24, 0x219380,2, 0x2193a0,1, 0x2193c0,11, -0x219404,4, -0x219418,16, +0x219404,3, +0x219420,11, 0x219460,3, +0x219480,6, 0x219500,6, +0x219520,6, 0x219540,1, 0x219558,2, 0x219600,17, -0x219800,366, +0x219800,410, 0x21a000,6, 0x21a020,6, 0x21a040,3, 0x21a080,14, 0x21a0bc,1, 0x21a0c4,13, -0x21a0fc,6, -0x21a120,5, -0x21a190,10, -0x21a200,16, -0x21a244,32, -0x21a300,26, +0x21a0fc,5, +0x21a120,4, +0x21a140,3, +0x21a180,3, +0x21a190,3, +0x21a1a0,1, +0x21a1e0,6, +0x21a200,20, +0x21a25c,30, +0x21a300,24, 0x21a380,2, 0x21a3a0,1, 0x21a3c0,11, -0x21a404,4, -0x21a418,16, +0x21a404,3, +0x21a420,11, 0x21a460,3, +0x21a480,6, 0x21a500,6, +0x21a520,6, 0x21a540,1, 0x21a558,2, 0x21a600,17, -0x21a800,366, +0x21a800,410, 0x21b000,4, -0x21b020,9, -0x21b048,6, -0x21b064,6, -0x21b080,1, +0x21b020,25, +0x21b088,8, 0x21b100,4, -0x21b120,9, -0x21b148,6, -0x21b164,6, -0x21b180,1, -0x21b200,35, -0x21b290,6, -0x21b2b4,6, -0x21b2d0,5, -0x21b2e8,5, +0x21b120,25, +0x21b188,8, +0x21b200,34, 0x21b300,37, -0x21b400,6, -0x21b420,3, -0x21b438,4, -0x21b454,3, -0x21b478,4, -0x21b494,3, +0x21b400,16, +0x21b464,1, +0x21b474,3, +0x21b500,6, +0x21b520,2, +0x21b530,9, +0x21b570,10, +0x21b5a0,2, +0x21b5b0,9, +0x21b5f0,4, +0x21b620,7, +0x21b640,16, +0x21b700,6, +0x21b720,6, +0x21b740,6, +0x21b760,6, +0x21b780,3, 0x21b800,5, 0x21b818,1, 0x21b854,6, 0x21b880,2, 0x21b8a4,1, +0x21b8ac,2, 0x21ba00,28, -0x21ba7c,5, -0x21bab0,2, +0x21ba7c,13, +0x21bab4,1, 0x21babc,10, -0x21bb00,2, -0x21bb0c,7, +0x21bb04,1, +0x21bb0c,5, +0x21bb24,1, 0x21bb34,9, 0x21bb60,6, -0x21bb80,8, +0x21bb80,22, +0x21bbe0,3, +0x21bbf0,2, 0x21bc00,5, 0x21bc18,1, 0x21bc54,6, 0x21bc80,2, 0x21bca4,1, +0x21bcac,2, 0x21be00,28, -0x21be7c,5, -0x21beb0,2, +0x21be7c,13, +0x21beb4,1, 0x21bebc,10, -0x21bf00,2, -0x21bf0c,7, +0x21bf04,1, +0x21bf0c,5, +0x21bf24,1, 0x21bf34,9, 0x21bf60,6, -0x21bf80,8, -0x21c000,4, -0x21c014,10, -0x21c040,1, -0x21c048,3, -0x21c058,1, -0x21c060,1, +0x21bf80,22, +0x21bfe0,3, +0x21bff0,2, +0x21c008,2, +0x21c014,11, +0x21c044,1, +0x21c04c,3, +0x21c05c,1, +0x21c064,1, 0x21c07c,1, -0x21c500,1, -0x21c518,2, +0x21c500,2, +0x21c518,1, +0x21c520,3, 0x21c540,6, -0x21c800,4, -0x21c814,10, -0x21c840,1, -0x21c848,3, -0x21c858,1, -0x21c860,1, +0x21c580,10, +0x21c808,2, +0x21c814,11, +0x21c844,1, +0x21c84c,3, +0x21c85c,1, +0x21c864,1, 0x21c87c,1, -0x21cd00,1, -0x21cd18,2, +0x21cd00,2, +0x21cd18,1, +0x21cd20,3, 0x21cd40,6, +0x21cd80,10, 0x21d800,2, -0x21d818,2, -0x21d834,2, -0x21d92c,6, -0x21d990,2, +0x21d828,2, +0x21d850,2, +0x21d878,2, +0x21d8a0,6, 0x21d9ac,1, 0x21d9d8,4, -0x21da00,16, -0x21dc00,3, -0x21dc20,2, -0x21dc40,1, +0x21da00,6, +0x21da20,6, +0x21da40,6, +0x21da60,6, +0x21da80,3, +0x21dc00,6, +0x21dc20,3, +0x21dc40,2, +0x21dc60,1, 0x220000,5, 0x220020,4, -0x220034,9, -0x22005c,7, +0x220034,17, 0x220080,1, 0x2200a0,6, 0x220100,5, 0x220120,4, -0x220134,9, -0x22015c,7, +0x220134,17, 0x220180,1, 0x2201a0,6, 0x220200,5, 0x220220,4, -0x220234,9, -0x22025c,7, +0x220234,17, 0x220280,1, 0x2202a0,6, 0x220300,5, 0x220320,4, -0x220334,9, -0x22035c,7, +0x220334,17, 0x220380,1, 0x2203a0,6, -0x220400,4, -0x220440,4, +0x220400,6, +0x220440,6, 0x220480,3, 0x2204c0,3, -0x220500,5, -0x220518,8, +0x220500,6, +0x22051c,7, +0x220540,1, 0x220c00,13, -0x220c40,11, +0x220c40,12, 0x220c80,13, -0x220cc0,11, +0x220cc0,12, 0x220d00,6, 0x220d20,6, -0x220e00,10, +0x220d80,14, +0x220dc0,2, 0x220e40,11, -0x220e80,8, +0x220e80,6, +0x220ea0,6, 0x221000,2, 0x221010,5, 0x221040,3, 0x221050,3, -0x221060,7, -0x221080,7, -0x2210a0,7, -0x2210c0,7, -0x221100,7, -0x221140,7, -0x221180,5, +0x221060,32, +0x221100,8, +0x221140,8, +0x221180,3, +0x221190,2, 0x22119c,9, 0x221218,9, 0x221240,3, @@ -4260,75 +5701,84 @@ 0x2212e4,1, 0x221400,8, 0x221424,2, -0x221500,3, +0x221500,5, 0x221520,4, -0x221540,3, +0x221540,5, 0x221560,4, 0x221800,24, -0x221864,2, -0x221880,6, -0x221900,12, -0x221940,6, -0x221960,6, +0x221864,5, +0x221880,8, +0x221900,13, 0x221980,4, +0x2219a0,6, 0x2219c0,6, 0x2219dc,1, 0x221a00,6, 0x221a1c,1, 0x221a40,1, +0x221a60,1, 0x221a68,23, +0x221ac8,6, 0x221b00,17, +0x221b48,6, 0x221b80,12, +0x221c00,6, +0x221c20,6, +0x221c40,6, +0x221c60,3, +0x221d00,6, +0x221d20,6, +0x221d40,3, +0x221d80,6, +0x221da0,6, +0x221dc0,3, 0x222000,5, 0x222020,4, -0x222034,9, -0x22205c,7, +0x222034,17, 0x222080,1, 0x2220a0,6, 0x222100,5, 0x222120,4, -0x222134,9, -0x22215c,7, +0x222134,17, 0x222180,1, 0x2221a0,6, 0x222200,5, 0x222220,4, -0x222234,9, -0x22225c,7, +0x222234,17, 0x222280,1, 0x2222a0,6, 0x222300,5, 0x222320,4, -0x222334,9, -0x22235c,7, +0x222334,17, 0x222380,1, 0x2223a0,6, -0x222400,4, -0x222440,4, +0x222400,6, +0x222440,6, 0x222480,3, 0x2224c0,3, -0x222500,5, -0x222518,8, +0x222500,6, +0x22251c,7, +0x222540,1, 0x222c00,13, -0x222c40,11, +0x222c40,12, 0x222c80,13, -0x222cc0,11, +0x222cc0,12, 0x222d00,6, 0x222d20,6, -0x222e00,10, +0x222d80,14, +0x222dc0,2, 0x222e40,11, -0x222e80,8, +0x222e80,6, +0x222ea0,6, 0x223000,2, 0x223010,5, 0x223040,3, 0x223050,3, -0x223060,7, -0x223080,7, -0x2230a0,7, -0x2230c0,7, -0x223100,7, -0x223140,7, -0x223180,5, +0x223060,32, +0x223100,8, +0x223140,8, +0x223180,3, +0x223190,2, 0x22319c,9, 0x223218,9, 0x223240,3, @@ -4341,349 +5791,409 @@ 0x2232e4,1, 0x223400,8, 0x223424,2, -0x223500,3, +0x223500,5, 0x223520,4, -0x223540,3, +0x223540,5, 0x223560,4, 0x223800,24, -0x223864,2, -0x223880,6, -0x223900,12, -0x223940,6, -0x223960,6, +0x223864,5, +0x223880,8, +0x223900,13, 0x223980,4, +0x2239a0,6, 0x2239c0,6, 0x2239dc,1, 0x223a00,6, 0x223a1c,1, 0x223a40,1, +0x223a60,1, 0x223a68,23, +0x223ac8,6, 0x223b00,17, +0x223b48,6, 0x223b80,12, -0x224000,4, -0x224014,6, -0x224030,5, -0x224080,4, -0x224094,6, -0x2240b0,5, -0x224100,4, -0x224114,6, -0x224130,5, -0x224180,4, -0x224194,6, -0x2241b0,5, -0x224200,3, -0x224210,23, -0x224500,3, -0x224510,12, -0x224580,3, -0x224590,12, -0x224600,3, -0x224610,12, -0x224680,3, -0x224690,12, -0x224700,4, -0x224718,13, -0x224800,25, -0x224880,25, -0x224900,25, -0x224980,25, -0x224a00,17, -0x224a50,3, -0x224a60,3, -0x225000,4, -0x225014,6, -0x225030,5, -0x225080,4, -0x225094,6, -0x2250b0,5, -0x225100,4, -0x225114,6, -0x225130,5, -0x225180,4, -0x225194,6, -0x2251b0,5, -0x225200,3, -0x225210,23, -0x225500,3, -0x225510,12, -0x225580,3, -0x225590,12, -0x225600,3, -0x225610,12, -0x225680,3, -0x225690,12, -0x225700,4, -0x225718,13, -0x225800,25, -0x225880,25, -0x225900,25, -0x225980,25, -0x225a00,17, -0x225a50,3, -0x225a60,3, -0x226000,13, -0x226040,22, -0x2260a0,6, -0x2260c0,3, +0x223c00,6, +0x223c20,6, +0x223c40,6, +0x223c60,3, +0x223d00,6, +0x223d20,6, +0x223d40,3, +0x223d80,6, +0x223da0,6, +0x223dc0,3, +0x224000,29, +0x224078,5, +0x224090,2, +0x2240a0,10, +0x224100,93, +0x224278,5, +0x224290,2, +0x2242a0,10, +0x224300,93, +0x224478,5, +0x224490,2, +0x2244a0,10, +0x224500,93, +0x224678,5, +0x224690,2, +0x2246a0,10, +0x224700,93, +0x22487c,1, +0x224a00,8, +0x224a24,15, +0x224a64,23, +0x224ac4,6, +0x224b00,4, +0x224b20,3, +0x224c00,2, +0x224c40,14, +0x224c80,9, +0x224d00,9, +0x224d2c,1, +0x224d80,6, +0x224e00,2, +0x224e0c,1, +0x224e14,5, +0x224e2c,1, +0x224e34,5, +0x224e4c,1, +0x224e54,5, +0x224e6c,1, +0x224e74,5, +0x224e8c,1, +0x224e94,5, +0x224eac,1, +0x224eb4,3, +0x225000,29, +0x225078,5, +0x225090,2, +0x2250a0,10, +0x225100,93, +0x225278,5, +0x225290,2, +0x2252a0,10, +0x225300,93, +0x225478,5, +0x225490,2, +0x2254a0,10, +0x225500,93, +0x225678,5, +0x225690,2, +0x2256a0,10, +0x225700,93, +0x22587c,1, +0x225a00,8, +0x225a24,15, +0x225a64,23, +0x225ac4,6, +0x225b00,4, +0x225b20,3, +0x225c00,2, +0x225c40,14, +0x225c80,9, +0x225d00,9, +0x225d2c,1, +0x225d80,6, +0x225e00,2, +0x225e0c,1, +0x225e14,5, +0x225e2c,1, +0x225e34,5, +0x225e4c,1, +0x225e54,5, +0x225e6c,1, +0x225e74,5, +0x225e8c,1, +0x225e94,5, +0x225eac,1, +0x225eb4,3, +0x226000,14, +0x226070,3, +0x226080,6, 0x226100,9, -0x226400,2, -0x22640c,6, -0x226440,13, -0x226480,16, -0x226800,1, -0x226808,3, -0x22681c,8, -0x226840,3, -0x226850,3, -0x226880,1, -0x226888,3, -0x22689c,8, -0x2268c0,3, -0x2268d0,3, -0x226900,1, -0x226908,3, -0x22691c,8, -0x226940,3, -0x226950,3, -0x226980,1, -0x226988,3, -0x22699c,8, -0x2269c0,3, -0x2269d0,3, -0x226a00,1, -0x226a08,3, -0x226a1c,8, -0x226a40,3, -0x226a50,3, -0x226a80,1, -0x226a88,3, -0x226a9c,8, -0x226ac0,3, -0x226ad0,3, -0x226b00,1, -0x226b08,3, -0x226b1c,8, -0x226b40,3, -0x226b50,3, -0x226b80,1, -0x226b88,3, -0x226b9c,8, -0x226bc0,3, -0x226bd0,3, -0x226c00,1, -0x226c08,3, -0x226c1c,8, -0x226c40,3, -0x226c50,3, -0x226c80,2, -0x226c94,13, +0x226204,1, +0x22620c,6, +0x226240,13, +0x226280,16, +0x226400,8, +0x226424,15, +0x226464,15, +0x2264a4,15, +0x2264e4,23, +0x226544,6, +0x226580,10, +0x2265ac,1, +0x2265b4,5, +0x2265cc,1, +0x2265d4,5, +0x2265ec,1, +0x2265f4,13, +0x226680,7, +0x2266a0,5, +0x2266c0,5, +0x2266e0,3, +0x226800,19, +0x226850,10, +0x226880,19, +0x2268d0,10, +0x226900,19, +0x226950,10, +0x226980,19, +0x2269d0,10, +0x226a00,19, +0x226a50,10, +0x226a80,19, +0x226ad0,10, +0x226b00,19, +0x226b50,10, +0x226b80,19, +0x226bd0,10, +0x226c00,19, +0x226c50,10, +0x226c84,1, +0x226c94,8, +0x226cb8,9, +0x226ce0,4, 0x227000,6, 0x227020,3, -0x227034,1, 0x227040,7, 0x227060,6, 0x227100,5, 0x227138,1, 0x227144,1, -0x227400,1, -0x227418,1, -0x227434,1, -0x22752c,5, -0x227590,1, -0x2275ac,1, -0x2275d8,4, -0x227600,8, +0x227150,2, 0x228000,6, 0x228020,3, 0x228030,9, -0x228080,6, -0x228100,20, +0x228100,6, +0x228120,10, +0x228150,8, 0x228400,1, -0x228418,1, -0x228434,1, -0x22852c,4, -0x228590,1, +0x228428,1, +0x228450,1, +0x228478,1, +0x2284a0,8, 0x2285ac,1, 0x2285d8,4, -0x228600,8, +0x228600,6, +0x228620,6, +0x228640,3, +0x228800,6, +0x228820,3, +0x228830,4, +0x228858,2, +0x228864,1, +0x228874,3, +0x228898,2, +0x2288a4,1, +0x2288b4,3, 0x229000,6, 0x229020,6, 0x229040,3, 0x229080,14, 0x2290bc,1, 0x2290c4,13, -0x2290fc,6, -0x229120,5, -0x229190,10, -0x229200,16, -0x229244,32, -0x229300,26, +0x2290fc,5, +0x229120,4, +0x229140,3, +0x229180,3, +0x229190,3, +0x2291a0,1, +0x2291e0,6, +0x229200,20, +0x22925c,30, +0x229300,24, 0x229380,2, 0x2293a0,1, 0x2293c0,11, -0x229404,4, -0x229418,16, +0x229404,3, +0x229420,11, 0x229460,3, +0x229480,6, 0x229500,6, +0x229520,6, 0x229540,1, 0x229558,2, 0x229600,17, -0x229800,366, +0x229800,410, 0x22a000,6, 0x22a020,6, 0x22a040,3, 0x22a080,14, 0x22a0bc,1, 0x22a0c4,13, -0x22a0fc,6, -0x22a120,5, -0x22a190,10, -0x22a200,16, -0x22a244,32, -0x22a300,26, +0x22a0fc,5, +0x22a120,4, +0x22a140,3, +0x22a180,3, +0x22a190,3, +0x22a1a0,1, +0x22a1e0,6, +0x22a200,20, +0x22a25c,30, +0x22a300,24, 0x22a380,2, 0x22a3a0,1, 0x22a3c0,11, -0x22a404,4, -0x22a418,16, +0x22a404,3, +0x22a420,11, 0x22a460,3, +0x22a480,6, 0x22a500,6, +0x22a520,6, 0x22a540,1, 0x22a558,2, 0x22a600,17, -0x22a800,366, +0x22a800,410, 0x22b000,4, -0x22b020,9, -0x22b048,6, -0x22b064,6, -0x22b080,1, +0x22b020,25, +0x22b088,8, 0x22b100,4, -0x22b120,9, -0x22b148,6, -0x22b164,6, -0x22b180,1, -0x22b200,35, -0x22b290,6, -0x22b2b4,6, -0x22b2d0,5, -0x22b2e8,5, +0x22b120,25, +0x22b188,8, +0x22b200,34, 0x22b300,37, -0x22b400,6, -0x22b420,3, -0x22b438,4, -0x22b454,3, -0x22b478,4, -0x22b494,3, +0x22b400,16, +0x22b464,1, +0x22b474,3, +0x22b500,6, +0x22b520,2, +0x22b530,9, +0x22b570,10, +0x22b5a0,2, +0x22b5b0,9, +0x22b5f0,4, +0x22b620,7, +0x22b640,16, +0x22b700,6, +0x22b720,6, +0x22b740,6, +0x22b760,6, +0x22b780,3, 0x22b800,5, 0x22b818,1, 0x22b854,6, 0x22b880,2, 0x22b8a4,1, +0x22b8ac,2, 0x22ba00,28, -0x22ba7c,5, -0x22bab0,2, +0x22ba7c,13, +0x22bab4,1, 0x22babc,10, -0x22bb00,2, -0x22bb0c,7, +0x22bb04,1, +0x22bb0c,5, +0x22bb24,1, 0x22bb34,9, 0x22bb60,6, -0x22bb80,8, +0x22bb80,22, +0x22bbe0,3, +0x22bbf0,2, 0x22bc00,5, 0x22bc18,1, 0x22bc54,6, 0x22bc80,2, 0x22bca4,1, +0x22bcac,2, 0x22be00,28, -0x22be7c,5, -0x22beb0,2, +0x22be7c,13, +0x22beb4,1, 0x22bebc,10, -0x22bf00,2, -0x22bf0c,7, +0x22bf04,1, +0x22bf0c,5, +0x22bf24,1, 0x22bf34,9, 0x22bf60,6, -0x22bf80,8, -0x22c000,4, -0x22c014,10, -0x22c040,1, -0x22c048,3, -0x22c058,1, -0x22c060,1, +0x22bf80,22, +0x22bfe0,3, +0x22bff0,2, +0x22c008,2, +0x22c014,11, +0x22c044,1, +0x22c04c,3, +0x22c05c,1, +0x22c064,1, 0x22c07c,1, -0x22c500,1, -0x22c518,2, +0x22c500,2, +0x22c518,1, +0x22c520,3, 0x22c540,6, -0x22c800,4, -0x22c814,10, -0x22c840,1, -0x22c848,3, -0x22c858,1, -0x22c860,1, +0x22c580,10, +0x22c808,2, +0x22c814,11, +0x22c844,1, +0x22c84c,3, +0x22c85c,1, +0x22c864,1, 0x22c87c,1, -0x22cd00,1, -0x22cd18,2, +0x22cd00,2, +0x22cd18,1, +0x22cd20,3, 0x22cd40,6, +0x22cd80,10, 0x22d800,2, -0x22d818,2, -0x22d834,2, -0x22d92c,6, -0x22d990,2, +0x22d828,2, +0x22d850,2, +0x22d878,2, +0x22d8a0,6, 0x22d9ac,1, 0x22d9d8,4, -0x22da00,16, -0x22dc00,3, -0x22dc20,2, -0x22dc40,1, +0x22da00,6, +0x22da20,6, +0x22da40,6, +0x22da60,6, +0x22da80,3, +0x22dc00,6, +0x22dc20,3, +0x22dc40,2, +0x22dc60,1, 0x230000,5, 0x230020,4, -0x230034,9, -0x23005c,7, +0x230034,17, 0x230080,1, 0x2300a0,6, 0x230100,5, 0x230120,4, -0x230134,9, -0x23015c,7, +0x230134,17, 0x230180,1, 0x2301a0,6, 0x230200,5, 0x230220,4, -0x230234,9, -0x23025c,7, +0x230234,17, 0x230280,1, 0x2302a0,6, 0x230300,5, 0x230320,4, -0x230334,9, -0x23035c,7, +0x230334,17, 0x230380,1, 0x2303a0,6, -0x230400,4, -0x230440,4, +0x230400,6, +0x230440,6, 0x230480,3, 0x2304c0,3, -0x230500,5, -0x230518,8, +0x230500,6, +0x23051c,7, +0x230540,1, 0x230c00,13, -0x230c40,11, +0x230c40,12, 0x230c80,13, -0x230cc0,11, +0x230cc0,12, 0x230d00,6, 0x230d20,6, -0x230e00,10, +0x230d80,14, +0x230dc0,2, 0x230e40,11, -0x230e80,8, +0x230e80,6, +0x230ea0,6, 0x231000,2, 0x231010,5, 0x231040,3, 0x231050,3, -0x231060,7, -0x231080,7, -0x2310a0,7, -0x2310c0,7, -0x231100,7, -0x231140,7, -0x231180,5, +0x231060,32, +0x231100,8, +0x231140,8, +0x231180,3, +0x231190,2, 0x23119c,9, 0x231218,9, 0x231240,3, @@ -4696,75 +6206,84 @@ 0x2312e4,1, 0x231400,8, 0x231424,2, -0x231500,3, +0x231500,5, 0x231520,4, -0x231540,3, +0x231540,5, 0x231560,4, 0x231800,24, -0x231864,2, -0x231880,6, -0x231900,12, -0x231940,6, -0x231960,6, +0x231864,5, +0x231880,8, +0x231900,13, 0x231980,4, +0x2319a0,6, 0x2319c0,6, 0x2319dc,1, 0x231a00,6, 0x231a1c,1, 0x231a40,1, +0x231a60,1, 0x231a68,23, +0x231ac8,6, 0x231b00,17, +0x231b48,6, 0x231b80,12, +0x231c00,6, +0x231c20,6, +0x231c40,6, +0x231c60,3, +0x231d00,6, +0x231d20,6, +0x231d40,3, +0x231d80,6, +0x231da0,6, +0x231dc0,3, 0x232000,5, 0x232020,4, -0x232034,9, -0x23205c,7, +0x232034,17, 0x232080,1, 0x2320a0,6, 0x232100,5, 0x232120,4, -0x232134,9, -0x23215c,7, +0x232134,17, 0x232180,1, 0x2321a0,6, 0x232200,5, 0x232220,4, -0x232234,9, -0x23225c,7, +0x232234,17, 0x232280,1, 0x2322a0,6, 0x232300,5, 0x232320,4, -0x232334,9, -0x23235c,7, +0x232334,17, 0x232380,1, 0x2323a0,6, -0x232400,4, -0x232440,4, +0x232400,6, +0x232440,6, 0x232480,3, 0x2324c0,3, -0x232500,5, -0x232518,8, +0x232500,6, +0x23251c,7, +0x232540,1, 0x232c00,13, -0x232c40,11, +0x232c40,12, 0x232c80,13, -0x232cc0,11, +0x232cc0,12, 0x232d00,6, 0x232d20,6, -0x232e00,10, +0x232d80,14, +0x232dc0,2, 0x232e40,11, -0x232e80,8, +0x232e80,6, +0x232ea0,6, 0x233000,2, 0x233010,5, 0x233040,3, 0x233050,3, -0x233060,7, -0x233080,7, -0x2330a0,7, -0x2330c0,7, -0x233100,7, -0x233140,7, -0x233180,5, +0x233060,32, +0x233100,8, +0x233140,8, +0x233180,3, +0x233190,2, 0x23319c,9, 0x233218,9, 0x233240,3, @@ -4777,349 +6296,409 @@ 0x2332e4,1, 0x233400,8, 0x233424,2, -0x233500,3, +0x233500,5, 0x233520,4, -0x233540,3, +0x233540,5, 0x233560,4, 0x233800,24, -0x233864,2, -0x233880,6, -0x233900,12, -0x233940,6, -0x233960,6, +0x233864,5, +0x233880,8, +0x233900,13, 0x233980,4, +0x2339a0,6, 0x2339c0,6, 0x2339dc,1, 0x233a00,6, 0x233a1c,1, 0x233a40,1, +0x233a60,1, 0x233a68,23, +0x233ac8,6, 0x233b00,17, +0x233b48,6, 0x233b80,12, -0x234000,4, -0x234014,6, -0x234030,5, -0x234080,4, -0x234094,6, -0x2340b0,5, -0x234100,4, -0x234114,6, -0x234130,5, -0x234180,4, -0x234194,6, -0x2341b0,5, -0x234200,3, -0x234210,23, -0x234500,3, -0x234510,12, -0x234580,3, -0x234590,12, -0x234600,3, -0x234610,12, -0x234680,3, -0x234690,12, -0x234700,4, -0x234718,13, -0x234800,25, -0x234880,25, -0x234900,25, -0x234980,25, -0x234a00,17, -0x234a50,3, -0x234a60,3, -0x235000,4, -0x235014,6, -0x235030,5, -0x235080,4, -0x235094,6, -0x2350b0,5, -0x235100,4, -0x235114,6, -0x235130,5, -0x235180,4, -0x235194,6, -0x2351b0,5, -0x235200,3, -0x235210,23, -0x235500,3, -0x235510,12, -0x235580,3, -0x235590,12, -0x235600,3, -0x235610,12, -0x235680,3, -0x235690,12, -0x235700,4, -0x235718,13, -0x235800,25, -0x235880,25, -0x235900,25, -0x235980,25, -0x235a00,17, -0x235a50,3, -0x235a60,3, -0x236000,13, -0x236040,22, -0x2360a0,6, -0x2360c0,3, +0x233c00,6, +0x233c20,6, +0x233c40,6, +0x233c60,3, +0x233d00,6, +0x233d20,6, +0x233d40,3, +0x233d80,6, +0x233da0,6, +0x233dc0,3, +0x234000,29, +0x234078,5, +0x234090,2, +0x2340a0,10, +0x234100,93, +0x234278,5, +0x234290,2, +0x2342a0,10, +0x234300,93, +0x234478,5, +0x234490,2, +0x2344a0,10, +0x234500,93, +0x234678,5, +0x234690,2, +0x2346a0,10, +0x234700,93, +0x23487c,1, +0x234a00,8, +0x234a24,15, +0x234a64,23, +0x234ac4,6, +0x234b00,4, +0x234b20,3, +0x234c00,2, +0x234c40,14, +0x234c80,9, +0x234d00,9, +0x234d2c,1, +0x234d80,6, +0x234e00,2, +0x234e0c,1, +0x234e14,5, +0x234e2c,1, +0x234e34,5, +0x234e4c,1, +0x234e54,5, +0x234e6c,1, +0x234e74,5, +0x234e8c,1, +0x234e94,5, +0x234eac,1, +0x234eb4,3, +0x235000,29, +0x235078,5, +0x235090,2, +0x2350a0,10, +0x235100,93, +0x235278,5, +0x235290,2, +0x2352a0,10, +0x235300,93, +0x235478,5, +0x235490,2, +0x2354a0,10, +0x235500,93, +0x235678,5, +0x235690,2, +0x2356a0,10, +0x235700,93, +0x23587c,1, +0x235a00,8, +0x235a24,15, +0x235a64,23, +0x235ac4,6, +0x235b00,4, +0x235b20,3, +0x235c00,2, +0x235c40,14, +0x235c80,9, +0x235d00,9, +0x235d2c,1, +0x235d80,6, +0x235e00,2, +0x235e0c,1, +0x235e14,5, +0x235e2c,1, +0x235e34,5, +0x235e4c,1, +0x235e54,5, +0x235e6c,1, +0x235e74,5, +0x235e8c,1, +0x235e94,5, +0x235eac,1, +0x235eb4,3, +0x236000,14, +0x236070,3, +0x236080,6, 0x236100,9, -0x236400,2, -0x23640c,6, -0x236440,13, -0x236480,16, -0x236800,1, -0x236808,3, -0x23681c,8, -0x236840,3, -0x236850,3, -0x236880,1, -0x236888,3, -0x23689c,8, -0x2368c0,3, -0x2368d0,3, -0x236900,1, -0x236908,3, -0x23691c,8, -0x236940,3, -0x236950,3, -0x236980,1, -0x236988,3, -0x23699c,8, -0x2369c0,3, -0x2369d0,3, -0x236a00,1, -0x236a08,3, -0x236a1c,8, -0x236a40,3, -0x236a50,3, -0x236a80,1, -0x236a88,3, -0x236a9c,8, -0x236ac0,3, -0x236ad0,3, -0x236b00,1, -0x236b08,3, -0x236b1c,8, -0x236b40,3, -0x236b50,3, -0x236b80,1, -0x236b88,3, -0x236b9c,8, -0x236bc0,3, -0x236bd0,3, -0x236c00,1, -0x236c08,3, -0x236c1c,8, -0x236c40,3, -0x236c50,3, -0x236c80,2, -0x236c94,13, +0x236204,1, +0x23620c,6, +0x236240,13, +0x236280,16, +0x236400,8, +0x236424,15, +0x236464,15, +0x2364a4,15, +0x2364e4,23, +0x236544,6, +0x236580,10, +0x2365ac,1, +0x2365b4,5, +0x2365cc,1, +0x2365d4,5, +0x2365ec,1, +0x2365f4,13, +0x236680,7, +0x2366a0,5, +0x2366c0,5, +0x2366e0,3, +0x236800,19, +0x236850,10, +0x236880,19, +0x2368d0,10, +0x236900,19, +0x236950,10, +0x236980,19, +0x2369d0,10, +0x236a00,19, +0x236a50,10, +0x236a80,19, +0x236ad0,10, +0x236b00,19, +0x236b50,10, +0x236b80,19, +0x236bd0,10, +0x236c00,19, +0x236c50,10, +0x236c84,1, +0x236c94,8, +0x236cb8,9, +0x236ce0,4, 0x237000,6, 0x237020,3, -0x237034,1, 0x237040,7, 0x237060,6, 0x237100,5, 0x237138,1, 0x237144,1, -0x237400,1, -0x237418,1, -0x237434,1, -0x23752c,5, -0x237590,1, -0x2375ac,1, -0x2375d8,4, -0x237600,8, +0x237150,2, 0x238000,6, 0x238020,3, 0x238030,9, -0x238080,6, -0x238100,20, +0x238100,6, +0x238120,10, +0x238150,8, 0x238400,1, -0x238418,1, -0x238434,1, -0x23852c,4, -0x238590,1, +0x238428,1, +0x238450,1, +0x238478,1, +0x2384a0,8, 0x2385ac,1, 0x2385d8,4, -0x238600,8, +0x238600,6, +0x238620,6, +0x238640,3, +0x238800,6, +0x238820,3, +0x238830,4, +0x238858,2, +0x238864,1, +0x238874,3, +0x238898,2, +0x2388a4,1, +0x2388b4,3, 0x239000,6, 0x239020,6, 0x239040,3, 0x239080,14, 0x2390bc,1, 0x2390c4,13, -0x2390fc,6, -0x239120,5, -0x239190,10, -0x239200,16, -0x239244,32, -0x239300,26, +0x2390fc,5, +0x239120,4, +0x239140,3, +0x239180,3, +0x239190,3, +0x2391a0,1, +0x2391e0,6, +0x239200,20, +0x23925c,30, +0x239300,24, 0x239380,2, 0x2393a0,1, 0x2393c0,11, -0x239404,4, -0x239418,16, +0x239404,3, +0x239420,11, 0x239460,3, +0x239480,6, 0x239500,6, +0x239520,6, 0x239540,1, 0x239558,2, 0x239600,17, -0x239800,366, +0x239800,410, 0x23a000,6, 0x23a020,6, 0x23a040,3, 0x23a080,14, 0x23a0bc,1, 0x23a0c4,13, -0x23a0fc,6, -0x23a120,5, -0x23a190,10, -0x23a200,16, -0x23a244,32, -0x23a300,26, +0x23a0fc,5, +0x23a120,4, +0x23a140,3, +0x23a180,3, +0x23a190,3, +0x23a1a0,1, +0x23a1e0,6, +0x23a200,20, +0x23a25c,30, +0x23a300,24, 0x23a380,2, 0x23a3a0,1, 0x23a3c0,11, -0x23a404,4, -0x23a418,16, +0x23a404,3, +0x23a420,11, 0x23a460,3, +0x23a480,6, 0x23a500,6, +0x23a520,6, 0x23a540,1, 0x23a558,2, 0x23a600,17, -0x23a800,366, +0x23a800,410, 0x23b000,4, -0x23b020,9, -0x23b048,6, -0x23b064,6, -0x23b080,1, +0x23b020,25, +0x23b088,8, 0x23b100,4, -0x23b120,9, -0x23b148,6, -0x23b164,6, -0x23b180,1, -0x23b200,35, -0x23b290,6, -0x23b2b4,6, -0x23b2d0,5, -0x23b2e8,5, +0x23b120,25, +0x23b188,8, +0x23b200,34, 0x23b300,37, -0x23b400,6, -0x23b420,3, -0x23b438,4, -0x23b454,3, -0x23b478,4, -0x23b494,3, +0x23b400,16, +0x23b464,1, +0x23b474,3, +0x23b500,6, +0x23b520,2, +0x23b530,9, +0x23b570,10, +0x23b5a0,2, +0x23b5b0,9, +0x23b5f0,4, +0x23b620,7, +0x23b640,16, +0x23b700,6, +0x23b720,6, +0x23b740,6, +0x23b760,6, +0x23b780,3, 0x23b800,5, 0x23b818,1, 0x23b854,6, 0x23b880,2, 0x23b8a4,1, +0x23b8ac,2, 0x23ba00,28, -0x23ba7c,5, -0x23bab0,2, +0x23ba7c,13, +0x23bab4,1, 0x23babc,10, -0x23bb00,2, -0x23bb0c,7, +0x23bb04,1, +0x23bb0c,5, +0x23bb24,1, 0x23bb34,9, 0x23bb60,6, -0x23bb80,8, +0x23bb80,22, +0x23bbe0,3, +0x23bbf0,2, 0x23bc00,5, 0x23bc18,1, 0x23bc54,6, 0x23bc80,2, 0x23bca4,1, +0x23bcac,2, 0x23be00,28, -0x23be7c,5, -0x23beb0,2, +0x23be7c,13, +0x23beb4,1, 0x23bebc,10, -0x23bf00,2, -0x23bf0c,7, +0x23bf04,1, +0x23bf0c,5, +0x23bf24,1, 0x23bf34,9, 0x23bf60,6, -0x23bf80,8, -0x23c000,4, -0x23c014,10, -0x23c040,1, -0x23c048,3, -0x23c058,1, -0x23c060,1, +0x23bf80,22, +0x23bfe0,3, +0x23bff0,2, +0x23c008,2, +0x23c014,11, +0x23c044,1, +0x23c04c,3, +0x23c05c,1, +0x23c064,1, 0x23c07c,1, -0x23c500,1, -0x23c518,2, +0x23c500,2, +0x23c518,1, +0x23c520,3, 0x23c540,6, -0x23c800,4, -0x23c814,10, -0x23c840,1, -0x23c848,3, -0x23c858,1, -0x23c860,1, +0x23c580,10, +0x23c808,2, +0x23c814,11, +0x23c844,1, +0x23c84c,3, +0x23c85c,1, +0x23c864,1, 0x23c87c,1, -0x23cd00,1, -0x23cd18,2, +0x23cd00,2, +0x23cd18,1, +0x23cd20,3, 0x23cd40,6, +0x23cd80,10, 0x23d800,2, -0x23d818,2, -0x23d834,2, -0x23d92c,6, -0x23d990,2, +0x23d828,2, +0x23d850,2, +0x23d878,2, +0x23d8a0,6, 0x23d9ac,1, 0x23d9d8,4, -0x23da00,16, -0x23dc00,3, -0x23dc20,2, -0x23dc40,1, +0x23da00,6, +0x23da20,6, +0x23da40,6, +0x23da60,6, +0x23da80,3, +0x23dc00,6, +0x23dc20,3, +0x23dc40,2, +0x23dc60,1, 0x240000,5, 0x240020,4, -0x240034,9, -0x24005c,7, +0x240034,17, 0x240080,1, 0x2400a0,6, 0x240100,5, 0x240120,4, -0x240134,9, -0x24015c,7, +0x240134,17, 0x240180,1, 0x2401a0,6, 0x240200,5, 0x240220,4, -0x240234,9, -0x24025c,7, +0x240234,17, 0x240280,1, 0x2402a0,6, 0x240300,5, 0x240320,4, -0x240334,9, -0x24035c,7, +0x240334,17, 0x240380,1, 0x2403a0,6, -0x240400,4, -0x240440,4, +0x240400,6, +0x240440,6, 0x240480,3, 0x2404c0,3, -0x240500,5, -0x240518,8, +0x240500,6, +0x24051c,7, +0x240540,1, 0x240c00,13, -0x240c40,11, +0x240c40,12, 0x240c80,13, -0x240cc0,11, +0x240cc0,12, 0x240d00,6, 0x240d20,6, -0x240e00,10, +0x240d80,14, +0x240dc0,2, 0x240e40,11, -0x240e80,8, +0x240e80,6, +0x240ea0,6, 0x241000,2, 0x241010,5, 0x241040,3, 0x241050,3, -0x241060,7, -0x241080,7, -0x2410a0,7, -0x2410c0,7, -0x241100,7, -0x241140,7, -0x241180,5, +0x241060,32, +0x241100,8, +0x241140,8, +0x241180,3, +0x241190,2, 0x24119c,9, 0x241218,9, 0x241240,3, @@ -5132,75 +6711,84 @@ 0x2412e4,1, 0x241400,8, 0x241424,2, -0x241500,3, +0x241500,5, 0x241520,4, -0x241540,3, +0x241540,5, 0x241560,4, 0x241800,24, -0x241864,2, -0x241880,6, -0x241900,12, -0x241940,6, -0x241960,6, +0x241864,5, +0x241880,8, +0x241900,13, 0x241980,4, +0x2419a0,6, 0x2419c0,6, 0x2419dc,1, 0x241a00,6, 0x241a1c,1, 0x241a40,1, +0x241a60,1, 0x241a68,23, +0x241ac8,6, 0x241b00,17, +0x241b48,6, 0x241b80,12, +0x241c00,6, +0x241c20,6, +0x241c40,6, +0x241c60,3, +0x241d00,6, +0x241d20,6, +0x241d40,3, +0x241d80,6, +0x241da0,6, +0x241dc0,3, 0x242000,5, 0x242020,4, -0x242034,9, -0x24205c,7, +0x242034,17, 0x242080,1, 0x2420a0,6, 0x242100,5, 0x242120,4, -0x242134,9, -0x24215c,7, +0x242134,17, 0x242180,1, 0x2421a0,6, 0x242200,5, 0x242220,4, -0x242234,9, -0x24225c,7, +0x242234,17, 0x242280,1, 0x2422a0,6, 0x242300,5, 0x242320,4, -0x242334,9, -0x24235c,7, +0x242334,17, 0x242380,1, 0x2423a0,6, -0x242400,4, -0x242440,4, +0x242400,6, +0x242440,6, 0x242480,3, 0x2424c0,3, -0x242500,5, -0x242518,8, +0x242500,6, +0x24251c,7, +0x242540,1, 0x242c00,13, -0x242c40,11, +0x242c40,12, 0x242c80,13, -0x242cc0,11, +0x242cc0,12, 0x242d00,6, 0x242d20,6, -0x242e00,10, +0x242d80,14, +0x242dc0,2, 0x242e40,11, -0x242e80,8, +0x242e80,6, +0x242ea0,6, 0x243000,2, 0x243010,5, 0x243040,3, 0x243050,3, -0x243060,7, -0x243080,7, -0x2430a0,7, -0x2430c0,7, -0x243100,7, -0x243140,7, -0x243180,5, +0x243060,32, +0x243100,8, +0x243140,8, +0x243180,3, +0x243190,2, 0x24319c,9, 0x243218,9, 0x243240,3, @@ -5213,349 +6801,409 @@ 0x2432e4,1, 0x243400,8, 0x243424,2, -0x243500,3, +0x243500,5, 0x243520,4, -0x243540,3, +0x243540,5, 0x243560,4, 0x243800,24, -0x243864,2, -0x243880,6, -0x243900,12, -0x243940,6, -0x243960,6, +0x243864,5, +0x243880,8, +0x243900,13, 0x243980,4, +0x2439a0,6, 0x2439c0,6, 0x2439dc,1, 0x243a00,6, 0x243a1c,1, 0x243a40,1, +0x243a60,1, 0x243a68,23, +0x243ac8,6, 0x243b00,17, +0x243b48,6, 0x243b80,12, -0x244000,4, -0x244014,6, -0x244030,5, -0x244080,4, -0x244094,6, -0x2440b0,5, -0x244100,4, -0x244114,6, -0x244130,5, -0x244180,4, -0x244194,6, -0x2441b0,5, -0x244200,3, -0x244210,23, -0x244500,3, -0x244510,12, -0x244580,3, -0x244590,12, -0x244600,3, -0x244610,12, -0x244680,3, -0x244690,12, -0x244700,4, -0x244718,13, -0x244800,25, -0x244880,25, -0x244900,25, -0x244980,25, -0x244a00,17, -0x244a50,3, -0x244a60,3, -0x245000,4, -0x245014,6, -0x245030,5, -0x245080,4, -0x245094,6, -0x2450b0,5, -0x245100,4, -0x245114,6, -0x245130,5, -0x245180,4, -0x245194,6, -0x2451b0,5, -0x245200,3, -0x245210,23, -0x245500,3, -0x245510,12, -0x245580,3, -0x245590,12, -0x245600,3, -0x245610,12, -0x245680,3, -0x245690,12, -0x245700,4, -0x245718,13, -0x245800,25, -0x245880,25, -0x245900,25, -0x245980,25, -0x245a00,17, -0x245a50,3, -0x245a60,3, -0x246000,13, -0x246040,22, -0x2460a0,6, -0x2460c0,3, +0x243c00,6, +0x243c20,6, +0x243c40,6, +0x243c60,3, +0x243d00,6, +0x243d20,6, +0x243d40,3, +0x243d80,6, +0x243da0,6, +0x243dc0,3, +0x244000,29, +0x244078,5, +0x244090,2, +0x2440a0,10, +0x244100,93, +0x244278,5, +0x244290,2, +0x2442a0,10, +0x244300,93, +0x244478,5, +0x244490,2, +0x2444a0,10, +0x244500,93, +0x244678,5, +0x244690,2, +0x2446a0,10, +0x244700,93, +0x24487c,1, +0x244a00,8, +0x244a24,15, +0x244a64,23, +0x244ac4,6, +0x244b00,4, +0x244b20,3, +0x244c00,2, +0x244c40,14, +0x244c80,9, +0x244d00,9, +0x244d2c,1, +0x244d80,6, +0x244e00,2, +0x244e0c,1, +0x244e14,5, +0x244e2c,1, +0x244e34,5, +0x244e4c,1, +0x244e54,5, +0x244e6c,1, +0x244e74,5, +0x244e8c,1, +0x244e94,5, +0x244eac,1, +0x244eb4,3, +0x245000,29, +0x245078,5, +0x245090,2, +0x2450a0,10, +0x245100,93, +0x245278,5, +0x245290,2, +0x2452a0,10, +0x245300,93, +0x245478,5, +0x245490,2, +0x2454a0,10, +0x245500,93, +0x245678,5, +0x245690,2, +0x2456a0,10, +0x245700,93, +0x24587c,1, +0x245a00,8, +0x245a24,15, +0x245a64,23, +0x245ac4,6, +0x245b00,4, +0x245b20,3, +0x245c00,2, +0x245c40,14, +0x245c80,9, +0x245d00,9, +0x245d2c,1, +0x245d80,6, +0x245e00,2, +0x245e0c,1, +0x245e14,5, +0x245e2c,1, +0x245e34,5, +0x245e4c,1, +0x245e54,5, +0x245e6c,1, +0x245e74,5, +0x245e8c,1, +0x245e94,5, +0x245eac,1, +0x245eb4,3, +0x246000,14, +0x246070,3, +0x246080,6, 0x246100,9, -0x246400,2, -0x24640c,6, -0x246440,13, -0x246480,16, -0x246800,1, -0x246808,3, -0x24681c,8, -0x246840,3, -0x246850,3, -0x246880,1, -0x246888,3, -0x24689c,8, -0x2468c0,3, -0x2468d0,3, -0x246900,1, -0x246908,3, -0x24691c,8, -0x246940,3, -0x246950,3, -0x246980,1, -0x246988,3, -0x24699c,8, -0x2469c0,3, -0x2469d0,3, -0x246a00,1, -0x246a08,3, -0x246a1c,8, -0x246a40,3, -0x246a50,3, -0x246a80,1, -0x246a88,3, -0x246a9c,8, -0x246ac0,3, -0x246ad0,3, -0x246b00,1, -0x246b08,3, -0x246b1c,8, -0x246b40,3, -0x246b50,3, -0x246b80,1, -0x246b88,3, -0x246b9c,8, -0x246bc0,3, -0x246bd0,3, -0x246c00,1, -0x246c08,3, -0x246c1c,8, -0x246c40,3, -0x246c50,3, -0x246c80,2, -0x246c94,13, +0x246204,1, +0x24620c,6, +0x246240,13, +0x246280,16, +0x246400,8, +0x246424,15, +0x246464,15, +0x2464a4,15, +0x2464e4,23, +0x246544,6, +0x246580,10, +0x2465ac,1, +0x2465b4,5, +0x2465cc,1, +0x2465d4,5, +0x2465ec,1, +0x2465f4,13, +0x246680,7, +0x2466a0,5, +0x2466c0,5, +0x2466e0,3, +0x246800,19, +0x246850,10, +0x246880,19, +0x2468d0,10, +0x246900,19, +0x246950,10, +0x246980,19, +0x2469d0,10, +0x246a00,19, +0x246a50,10, +0x246a80,19, +0x246ad0,10, +0x246b00,19, +0x246b50,10, +0x246b80,19, +0x246bd0,10, +0x246c00,19, +0x246c50,10, +0x246c84,1, +0x246c94,8, +0x246cb8,9, +0x246ce0,4, 0x247000,6, 0x247020,3, -0x247034,1, 0x247040,7, 0x247060,6, 0x247100,5, 0x247138,1, 0x247144,1, -0x247400,1, -0x247418,1, -0x247434,1, -0x24752c,5, -0x247590,1, -0x2475ac,1, -0x2475d8,4, -0x247600,8, +0x247150,2, 0x248000,6, 0x248020,3, 0x248030,9, -0x248080,6, -0x248100,20, +0x248100,6, +0x248120,10, +0x248150,8, 0x248400,1, -0x248418,1, -0x248434,1, -0x24852c,4, -0x248590,1, +0x248428,1, +0x248450,1, +0x248478,1, +0x2484a0,8, 0x2485ac,1, 0x2485d8,4, -0x248600,8, +0x248600,6, +0x248620,6, +0x248640,3, +0x248800,6, +0x248820,3, +0x248830,4, +0x248858,2, +0x248864,1, +0x248874,3, +0x248898,2, +0x2488a4,1, +0x2488b4,3, 0x249000,6, 0x249020,6, 0x249040,3, 0x249080,14, 0x2490bc,1, 0x2490c4,13, -0x2490fc,6, -0x249120,5, -0x249190,10, -0x249200,16, -0x249244,32, -0x249300,26, +0x2490fc,5, +0x249120,4, +0x249140,3, +0x249180,3, +0x249190,3, +0x2491a0,1, +0x2491e0,6, +0x249200,20, +0x24925c,30, +0x249300,24, 0x249380,2, 0x2493a0,1, 0x2493c0,11, -0x249404,4, -0x249418,16, +0x249404,3, +0x249420,11, 0x249460,3, +0x249480,6, 0x249500,6, +0x249520,6, 0x249540,1, 0x249558,2, 0x249600,17, -0x249800,366, +0x249800,410, 0x24a000,6, 0x24a020,6, 0x24a040,3, 0x24a080,14, 0x24a0bc,1, 0x24a0c4,13, -0x24a0fc,6, -0x24a120,5, -0x24a190,10, -0x24a200,16, -0x24a244,32, -0x24a300,26, +0x24a0fc,5, +0x24a120,4, +0x24a140,3, +0x24a180,3, +0x24a190,3, +0x24a1a0,1, +0x24a1e0,6, +0x24a200,20, +0x24a25c,30, +0x24a300,24, 0x24a380,2, 0x24a3a0,1, 0x24a3c0,11, -0x24a404,4, -0x24a418,16, +0x24a404,3, +0x24a420,11, 0x24a460,3, +0x24a480,6, 0x24a500,6, +0x24a520,6, 0x24a540,1, 0x24a558,2, 0x24a600,17, -0x24a800,366, +0x24a800,410, 0x24b000,4, -0x24b020,9, -0x24b048,6, -0x24b064,6, -0x24b080,1, +0x24b020,25, +0x24b088,8, 0x24b100,4, -0x24b120,9, -0x24b148,6, -0x24b164,6, -0x24b180,1, -0x24b200,35, -0x24b290,6, -0x24b2b4,6, -0x24b2d0,5, -0x24b2e8,5, +0x24b120,25, +0x24b188,8, +0x24b200,34, 0x24b300,37, -0x24b400,6, -0x24b420,3, -0x24b438,4, -0x24b454,3, -0x24b478,4, -0x24b494,3, +0x24b400,16, +0x24b464,1, +0x24b474,3, +0x24b500,6, +0x24b520,2, +0x24b530,9, +0x24b570,10, +0x24b5a0,2, +0x24b5b0,9, +0x24b5f0,4, +0x24b620,7, +0x24b640,16, +0x24b700,6, +0x24b720,6, +0x24b740,6, +0x24b760,6, +0x24b780,3, 0x24b800,5, 0x24b818,1, 0x24b854,6, 0x24b880,2, 0x24b8a4,1, +0x24b8ac,2, 0x24ba00,28, -0x24ba7c,5, -0x24bab0,2, +0x24ba7c,13, +0x24bab4,1, 0x24babc,10, -0x24bb00,2, -0x24bb0c,7, +0x24bb04,1, +0x24bb0c,5, +0x24bb24,1, 0x24bb34,9, 0x24bb60,6, -0x24bb80,8, +0x24bb80,22, +0x24bbe0,3, +0x24bbf0,2, 0x24bc00,5, 0x24bc18,1, 0x24bc54,6, 0x24bc80,2, 0x24bca4,1, +0x24bcac,2, 0x24be00,28, -0x24be7c,5, -0x24beb0,2, +0x24be7c,13, +0x24beb4,1, 0x24bebc,10, -0x24bf00,2, -0x24bf0c,7, +0x24bf04,1, +0x24bf0c,5, +0x24bf24,1, 0x24bf34,9, 0x24bf60,6, -0x24bf80,8, -0x24c000,4, -0x24c014,10, -0x24c040,1, -0x24c048,3, -0x24c058,1, -0x24c060,1, +0x24bf80,22, +0x24bfe0,3, +0x24bff0,2, +0x24c008,2, +0x24c014,11, +0x24c044,1, +0x24c04c,3, +0x24c05c,1, +0x24c064,1, 0x24c07c,1, -0x24c500,1, -0x24c518,2, +0x24c500,2, +0x24c518,1, +0x24c520,3, 0x24c540,6, -0x24c800,4, -0x24c814,10, -0x24c840,1, -0x24c848,3, -0x24c858,1, -0x24c860,1, +0x24c580,10, +0x24c808,2, +0x24c814,11, +0x24c844,1, +0x24c84c,3, +0x24c85c,1, +0x24c864,1, 0x24c87c,1, -0x24cd00,1, -0x24cd18,2, +0x24cd00,2, +0x24cd18,1, +0x24cd20,3, 0x24cd40,6, +0x24cd80,10, 0x24d800,2, -0x24d818,2, -0x24d834,2, -0x24d92c,6, -0x24d990,2, +0x24d828,2, +0x24d850,2, +0x24d878,2, +0x24d8a0,6, 0x24d9ac,1, 0x24d9d8,4, -0x24da00,16, -0x24dc00,3, -0x24dc20,2, -0x24dc40,1, +0x24da00,6, +0x24da20,6, +0x24da40,6, +0x24da60,6, +0x24da80,3, +0x24dc00,6, +0x24dc20,3, +0x24dc40,2, +0x24dc60,1, 0x250000,5, 0x250020,4, -0x250034,9, -0x25005c,7, +0x250034,17, 0x250080,1, 0x2500a0,6, 0x250100,5, 0x250120,4, -0x250134,9, -0x25015c,7, +0x250134,17, 0x250180,1, 0x2501a0,6, 0x250200,5, 0x250220,4, -0x250234,9, -0x25025c,7, +0x250234,17, 0x250280,1, 0x2502a0,6, 0x250300,5, 0x250320,4, -0x250334,9, -0x25035c,7, +0x250334,17, 0x250380,1, 0x2503a0,6, -0x250400,4, -0x250440,4, +0x250400,6, +0x250440,6, 0x250480,3, 0x2504c0,3, -0x250500,5, -0x250518,8, +0x250500,6, +0x25051c,7, +0x250540,1, 0x250c00,13, -0x250c40,11, +0x250c40,12, 0x250c80,13, -0x250cc0,11, +0x250cc0,12, 0x250d00,6, 0x250d20,6, -0x250e00,10, +0x250d80,14, +0x250dc0,2, 0x250e40,11, -0x250e80,8, +0x250e80,6, +0x250ea0,6, 0x251000,2, 0x251010,5, 0x251040,3, 0x251050,3, -0x251060,7, -0x251080,7, -0x2510a0,7, -0x2510c0,7, -0x251100,7, -0x251140,7, -0x251180,5, +0x251060,32, +0x251100,8, +0x251140,8, +0x251180,3, +0x251190,2, 0x25119c,9, 0x251218,9, 0x251240,3, @@ -5568,75 +7216,84 @@ 0x2512e4,1, 0x251400,8, 0x251424,2, -0x251500,3, +0x251500,5, 0x251520,4, -0x251540,3, +0x251540,5, 0x251560,4, 0x251800,24, -0x251864,2, -0x251880,6, -0x251900,12, -0x251940,6, -0x251960,6, +0x251864,5, +0x251880,8, +0x251900,13, 0x251980,4, +0x2519a0,6, 0x2519c0,6, 0x2519dc,1, 0x251a00,6, 0x251a1c,1, 0x251a40,1, +0x251a60,1, 0x251a68,23, +0x251ac8,6, 0x251b00,17, +0x251b48,6, 0x251b80,12, +0x251c00,6, +0x251c20,6, +0x251c40,6, +0x251c60,3, +0x251d00,6, +0x251d20,6, +0x251d40,3, +0x251d80,6, +0x251da0,6, +0x251dc0,3, 0x252000,5, 0x252020,4, -0x252034,9, -0x25205c,7, +0x252034,17, 0x252080,1, 0x2520a0,6, 0x252100,5, 0x252120,4, -0x252134,9, -0x25215c,7, +0x252134,17, 0x252180,1, 0x2521a0,6, 0x252200,5, 0x252220,4, -0x252234,9, -0x25225c,7, +0x252234,17, 0x252280,1, 0x2522a0,6, 0x252300,5, 0x252320,4, -0x252334,9, -0x25235c,7, +0x252334,17, 0x252380,1, 0x2523a0,6, -0x252400,4, -0x252440,4, +0x252400,6, +0x252440,6, 0x252480,3, 0x2524c0,3, -0x252500,5, -0x252518,8, +0x252500,6, +0x25251c,7, +0x252540,1, 0x252c00,13, -0x252c40,11, +0x252c40,12, 0x252c80,13, -0x252cc0,11, +0x252cc0,12, 0x252d00,6, 0x252d20,6, -0x252e00,10, +0x252d80,14, +0x252dc0,2, 0x252e40,11, -0x252e80,8, +0x252e80,6, +0x252ea0,6, 0x253000,2, 0x253010,5, 0x253040,3, 0x253050,3, -0x253060,7, -0x253080,7, -0x2530a0,7, -0x2530c0,7, -0x253100,7, -0x253140,7, -0x253180,5, +0x253060,32, +0x253100,8, +0x253140,8, +0x253180,3, +0x253190,2, 0x25319c,9, 0x253218,9, 0x253240,3, @@ -5649,349 +7306,409 @@ 0x2532e4,1, 0x253400,8, 0x253424,2, -0x253500,3, +0x253500,5, 0x253520,4, -0x253540,3, +0x253540,5, 0x253560,4, 0x253800,24, -0x253864,2, -0x253880,6, -0x253900,12, -0x253940,6, -0x253960,6, +0x253864,5, +0x253880,8, +0x253900,13, 0x253980,4, +0x2539a0,6, 0x2539c0,6, 0x2539dc,1, 0x253a00,6, 0x253a1c,1, 0x253a40,1, +0x253a60,1, 0x253a68,23, +0x253ac8,6, 0x253b00,17, +0x253b48,6, 0x253b80,12, -0x254000,4, -0x254014,6, -0x254030,5, -0x254080,4, -0x254094,6, -0x2540b0,5, -0x254100,4, -0x254114,6, -0x254130,5, -0x254180,4, -0x254194,6, -0x2541b0,5, -0x254200,3, -0x254210,23, -0x254500,3, -0x254510,12, -0x254580,3, -0x254590,12, -0x254600,3, -0x254610,12, -0x254680,3, -0x254690,12, -0x254700,4, -0x254718,13, -0x254800,25, -0x254880,25, -0x254900,25, -0x254980,25, -0x254a00,17, -0x254a50,3, -0x254a60,3, -0x255000,4, -0x255014,6, -0x255030,5, -0x255080,4, -0x255094,6, -0x2550b0,5, -0x255100,4, -0x255114,6, -0x255130,5, -0x255180,4, -0x255194,6, -0x2551b0,5, -0x255200,3, -0x255210,23, -0x255500,3, -0x255510,12, -0x255580,3, -0x255590,12, -0x255600,3, -0x255610,12, -0x255680,3, -0x255690,12, -0x255700,4, -0x255718,13, -0x255800,25, -0x255880,25, -0x255900,25, -0x255980,25, -0x255a00,17, -0x255a50,3, -0x255a60,3, -0x256000,13, -0x256040,22, -0x2560a0,6, -0x2560c0,3, +0x253c00,6, +0x253c20,6, +0x253c40,6, +0x253c60,3, +0x253d00,6, +0x253d20,6, +0x253d40,3, +0x253d80,6, +0x253da0,6, +0x253dc0,3, +0x254000,29, +0x254078,5, +0x254090,2, +0x2540a0,10, +0x254100,93, +0x254278,5, +0x254290,2, +0x2542a0,10, +0x254300,93, +0x254478,5, +0x254490,2, +0x2544a0,10, +0x254500,93, +0x254678,5, +0x254690,2, +0x2546a0,10, +0x254700,93, +0x25487c,1, +0x254a00,8, +0x254a24,15, +0x254a64,23, +0x254ac4,6, +0x254b00,4, +0x254b20,3, +0x254c00,2, +0x254c40,14, +0x254c80,9, +0x254d00,9, +0x254d2c,1, +0x254d80,6, +0x254e00,2, +0x254e0c,1, +0x254e14,5, +0x254e2c,1, +0x254e34,5, +0x254e4c,1, +0x254e54,5, +0x254e6c,1, +0x254e74,5, +0x254e8c,1, +0x254e94,5, +0x254eac,1, +0x254eb4,3, +0x255000,29, +0x255078,5, +0x255090,2, +0x2550a0,10, +0x255100,93, +0x255278,5, +0x255290,2, +0x2552a0,10, +0x255300,93, +0x255478,5, +0x255490,2, +0x2554a0,10, +0x255500,93, +0x255678,5, +0x255690,2, +0x2556a0,10, +0x255700,93, +0x25587c,1, +0x255a00,8, +0x255a24,15, +0x255a64,23, +0x255ac4,6, +0x255b00,4, +0x255b20,3, +0x255c00,2, +0x255c40,14, +0x255c80,9, +0x255d00,9, +0x255d2c,1, +0x255d80,6, +0x255e00,2, +0x255e0c,1, +0x255e14,5, +0x255e2c,1, +0x255e34,5, +0x255e4c,1, +0x255e54,5, +0x255e6c,1, +0x255e74,5, +0x255e8c,1, +0x255e94,5, +0x255eac,1, +0x255eb4,3, +0x256000,14, +0x256070,3, +0x256080,6, 0x256100,9, -0x256400,2, -0x25640c,6, -0x256440,13, -0x256480,16, -0x256800,1, -0x256808,3, -0x25681c,8, -0x256840,3, -0x256850,3, -0x256880,1, -0x256888,3, -0x25689c,8, -0x2568c0,3, -0x2568d0,3, -0x256900,1, -0x256908,3, -0x25691c,8, -0x256940,3, -0x256950,3, -0x256980,1, -0x256988,3, -0x25699c,8, -0x2569c0,3, -0x2569d0,3, -0x256a00,1, -0x256a08,3, -0x256a1c,8, -0x256a40,3, -0x256a50,3, -0x256a80,1, -0x256a88,3, -0x256a9c,8, -0x256ac0,3, -0x256ad0,3, -0x256b00,1, -0x256b08,3, -0x256b1c,8, -0x256b40,3, -0x256b50,3, -0x256b80,1, -0x256b88,3, -0x256b9c,8, -0x256bc0,3, -0x256bd0,3, -0x256c00,1, -0x256c08,3, -0x256c1c,8, -0x256c40,3, -0x256c50,3, -0x256c80,2, -0x256c94,13, +0x256204,1, +0x25620c,6, +0x256240,13, +0x256280,16, +0x256400,8, +0x256424,15, +0x256464,15, +0x2564a4,15, +0x2564e4,23, +0x256544,6, +0x256580,10, +0x2565ac,1, +0x2565b4,5, +0x2565cc,1, +0x2565d4,5, +0x2565ec,1, +0x2565f4,13, +0x256680,7, +0x2566a0,5, +0x2566c0,5, +0x2566e0,3, +0x256800,19, +0x256850,10, +0x256880,19, +0x2568d0,10, +0x256900,19, +0x256950,10, +0x256980,19, +0x2569d0,10, +0x256a00,19, +0x256a50,10, +0x256a80,19, +0x256ad0,10, +0x256b00,19, +0x256b50,10, +0x256b80,19, +0x256bd0,10, +0x256c00,19, +0x256c50,10, +0x256c84,1, +0x256c94,8, +0x256cb8,9, +0x256ce0,4, 0x257000,6, 0x257020,3, -0x257034,1, 0x257040,7, 0x257060,6, 0x257100,5, 0x257138,1, 0x257144,1, -0x257400,1, -0x257418,1, -0x257434,1, -0x25752c,5, -0x257590,1, -0x2575ac,1, -0x2575d8,4, -0x257600,8, +0x257150,2, 0x258000,6, 0x258020,3, 0x258030,9, -0x258080,6, -0x258100,20, +0x258100,6, +0x258120,10, +0x258150,8, 0x258400,1, -0x258418,1, -0x258434,1, -0x25852c,4, -0x258590,1, +0x258428,1, +0x258450,1, +0x258478,1, +0x2584a0,8, 0x2585ac,1, 0x2585d8,4, -0x258600,8, +0x258600,6, +0x258620,6, +0x258640,3, +0x258800,6, +0x258820,3, +0x258830,4, +0x258858,2, +0x258864,1, +0x258874,3, +0x258898,2, +0x2588a4,1, +0x2588b4,3, 0x259000,6, 0x259020,6, 0x259040,3, 0x259080,14, 0x2590bc,1, 0x2590c4,13, -0x2590fc,6, -0x259120,5, -0x259190,10, -0x259200,16, -0x259244,32, -0x259300,26, +0x2590fc,5, +0x259120,4, +0x259140,3, +0x259180,3, +0x259190,3, +0x2591a0,1, +0x2591e0,6, +0x259200,20, +0x25925c,30, +0x259300,24, 0x259380,2, 0x2593a0,1, 0x2593c0,11, -0x259404,4, -0x259418,16, +0x259404,3, +0x259420,11, 0x259460,3, +0x259480,6, 0x259500,6, +0x259520,6, 0x259540,1, 0x259558,2, 0x259600,17, -0x259800,366, +0x259800,410, 0x25a000,6, 0x25a020,6, 0x25a040,3, 0x25a080,14, 0x25a0bc,1, 0x25a0c4,13, -0x25a0fc,6, -0x25a120,5, -0x25a190,10, -0x25a200,16, -0x25a244,32, -0x25a300,26, +0x25a0fc,5, +0x25a120,4, +0x25a140,3, +0x25a180,3, +0x25a190,3, +0x25a1a0,1, +0x25a1e0,6, +0x25a200,20, +0x25a25c,30, +0x25a300,24, 0x25a380,2, 0x25a3a0,1, 0x25a3c0,11, -0x25a404,4, -0x25a418,16, +0x25a404,3, +0x25a420,11, 0x25a460,3, +0x25a480,6, 0x25a500,6, +0x25a520,6, 0x25a540,1, 0x25a558,2, 0x25a600,17, -0x25a800,366, +0x25a800,410, 0x25b000,4, -0x25b020,9, -0x25b048,6, -0x25b064,6, -0x25b080,1, +0x25b020,25, +0x25b088,8, 0x25b100,4, -0x25b120,9, -0x25b148,6, -0x25b164,6, -0x25b180,1, -0x25b200,35, -0x25b290,6, -0x25b2b4,6, -0x25b2d0,5, -0x25b2e8,5, +0x25b120,25, +0x25b188,8, +0x25b200,34, 0x25b300,37, -0x25b400,6, -0x25b420,3, -0x25b438,4, -0x25b454,3, -0x25b478,4, -0x25b494,3, +0x25b400,16, +0x25b464,1, +0x25b474,3, +0x25b500,6, +0x25b520,2, +0x25b530,9, +0x25b570,10, +0x25b5a0,2, +0x25b5b0,9, +0x25b5f0,4, +0x25b620,7, +0x25b640,16, +0x25b700,6, +0x25b720,6, +0x25b740,6, +0x25b760,6, +0x25b780,3, 0x25b800,5, 0x25b818,1, 0x25b854,6, 0x25b880,2, 0x25b8a4,1, +0x25b8ac,2, 0x25ba00,28, -0x25ba7c,5, -0x25bab0,2, +0x25ba7c,13, +0x25bab4,1, 0x25babc,10, -0x25bb00,2, -0x25bb0c,7, +0x25bb04,1, +0x25bb0c,5, +0x25bb24,1, 0x25bb34,9, 0x25bb60,6, -0x25bb80,8, +0x25bb80,22, +0x25bbe0,3, +0x25bbf0,2, 0x25bc00,5, 0x25bc18,1, 0x25bc54,6, 0x25bc80,2, 0x25bca4,1, +0x25bcac,2, 0x25be00,28, -0x25be7c,5, -0x25beb0,2, +0x25be7c,13, +0x25beb4,1, 0x25bebc,10, -0x25bf00,2, -0x25bf0c,7, +0x25bf04,1, +0x25bf0c,5, +0x25bf24,1, 0x25bf34,9, 0x25bf60,6, -0x25bf80,8, -0x25c000,4, -0x25c014,10, -0x25c040,1, -0x25c048,3, -0x25c058,1, -0x25c060,1, +0x25bf80,22, +0x25bfe0,3, +0x25bff0,2, +0x25c008,2, +0x25c014,11, +0x25c044,1, +0x25c04c,3, +0x25c05c,1, +0x25c064,1, 0x25c07c,1, -0x25c500,1, -0x25c518,2, +0x25c500,2, +0x25c518,1, +0x25c520,3, 0x25c540,6, -0x25c800,4, -0x25c814,10, -0x25c840,1, -0x25c848,3, -0x25c858,1, -0x25c860,1, +0x25c580,10, +0x25c808,2, +0x25c814,11, +0x25c844,1, +0x25c84c,3, +0x25c85c,1, +0x25c864,1, 0x25c87c,1, -0x25cd00,1, -0x25cd18,2, +0x25cd00,2, +0x25cd18,1, +0x25cd20,3, 0x25cd40,6, +0x25cd80,10, 0x25d800,2, -0x25d818,2, -0x25d834,2, -0x25d92c,6, -0x25d990,2, +0x25d828,2, +0x25d850,2, +0x25d878,2, +0x25d8a0,6, 0x25d9ac,1, 0x25d9d8,4, -0x25da00,16, -0x25dc00,3, -0x25dc20,2, -0x25dc40,1, +0x25da00,6, +0x25da20,6, +0x25da40,6, +0x25da60,6, +0x25da80,3, +0x25dc00,6, +0x25dc20,3, +0x25dc40,2, +0x25dc60,1, 0x260000,5, 0x260020,4, -0x260034,9, -0x26005c,7, +0x260034,17, 0x260080,1, 0x2600a0,6, 0x260100,5, 0x260120,4, -0x260134,9, -0x26015c,7, +0x260134,17, 0x260180,1, 0x2601a0,6, 0x260200,5, 0x260220,4, -0x260234,9, -0x26025c,7, +0x260234,17, 0x260280,1, 0x2602a0,6, 0x260300,5, 0x260320,4, -0x260334,9, -0x26035c,7, +0x260334,17, 0x260380,1, 0x2603a0,6, -0x260400,4, -0x260440,4, +0x260400,6, +0x260440,6, 0x260480,3, 0x2604c0,3, -0x260500,5, -0x260518,8, +0x260500,6, +0x26051c,7, +0x260540,1, 0x260c00,13, -0x260c40,11, +0x260c40,12, 0x260c80,13, -0x260cc0,11, +0x260cc0,12, 0x260d00,6, 0x260d20,6, -0x260e00,10, +0x260d80,14, +0x260dc0,2, 0x260e40,11, -0x260e80,8, +0x260e80,6, +0x260ea0,6, 0x261000,2, 0x261010,5, 0x261040,3, 0x261050,3, -0x261060,7, -0x261080,7, -0x2610a0,7, -0x2610c0,7, -0x261100,7, -0x261140,7, -0x261180,5, +0x261060,32, +0x261100,8, +0x261140,8, +0x261180,3, +0x261190,2, 0x26119c,9, 0x261218,9, 0x261240,3, @@ -6004,75 +7721,84 @@ 0x2612e4,1, 0x261400,8, 0x261424,2, -0x261500,3, +0x261500,5, 0x261520,4, -0x261540,3, +0x261540,5, 0x261560,4, 0x261800,24, -0x261864,2, -0x261880,6, -0x261900,12, -0x261940,6, -0x261960,6, +0x261864,5, +0x261880,8, +0x261900,13, 0x261980,4, +0x2619a0,6, 0x2619c0,6, 0x2619dc,1, 0x261a00,6, 0x261a1c,1, 0x261a40,1, +0x261a60,1, 0x261a68,23, +0x261ac8,6, 0x261b00,17, +0x261b48,6, 0x261b80,12, +0x261c00,6, +0x261c20,6, +0x261c40,6, +0x261c60,3, +0x261d00,6, +0x261d20,6, +0x261d40,3, +0x261d80,6, +0x261da0,6, +0x261dc0,3, 0x262000,5, 0x262020,4, -0x262034,9, -0x26205c,7, +0x262034,17, 0x262080,1, 0x2620a0,6, 0x262100,5, 0x262120,4, -0x262134,9, -0x26215c,7, +0x262134,17, 0x262180,1, 0x2621a0,6, 0x262200,5, 0x262220,4, -0x262234,9, -0x26225c,7, +0x262234,17, 0x262280,1, 0x2622a0,6, 0x262300,5, 0x262320,4, -0x262334,9, -0x26235c,7, +0x262334,17, 0x262380,1, 0x2623a0,6, -0x262400,4, -0x262440,4, +0x262400,6, +0x262440,6, 0x262480,3, 0x2624c0,3, -0x262500,5, -0x262518,8, +0x262500,6, +0x26251c,7, +0x262540,1, 0x262c00,13, -0x262c40,11, +0x262c40,12, 0x262c80,13, -0x262cc0,11, +0x262cc0,12, 0x262d00,6, 0x262d20,6, -0x262e00,10, +0x262d80,14, +0x262dc0,2, 0x262e40,11, -0x262e80,8, +0x262e80,6, +0x262ea0,6, 0x263000,2, 0x263010,5, 0x263040,3, 0x263050,3, -0x263060,7, -0x263080,7, -0x2630a0,7, -0x2630c0,7, -0x263100,7, -0x263140,7, -0x263180,5, +0x263060,32, +0x263100,8, +0x263140,8, +0x263180,3, +0x263190,2, 0x26319c,9, 0x263218,9, 0x263240,3, @@ -6085,349 +7811,409 @@ 0x2632e4,1, 0x263400,8, 0x263424,2, -0x263500,3, +0x263500,5, 0x263520,4, -0x263540,3, +0x263540,5, 0x263560,4, 0x263800,24, -0x263864,2, -0x263880,6, -0x263900,12, -0x263940,6, -0x263960,6, +0x263864,5, +0x263880,8, +0x263900,13, 0x263980,4, +0x2639a0,6, 0x2639c0,6, 0x2639dc,1, 0x263a00,6, 0x263a1c,1, 0x263a40,1, +0x263a60,1, 0x263a68,23, +0x263ac8,6, 0x263b00,17, +0x263b48,6, 0x263b80,12, -0x264000,4, -0x264014,6, -0x264030,5, -0x264080,4, -0x264094,6, -0x2640b0,5, -0x264100,4, -0x264114,6, -0x264130,5, -0x264180,4, -0x264194,6, -0x2641b0,5, -0x264200,3, -0x264210,23, -0x264500,3, -0x264510,12, -0x264580,3, -0x264590,12, -0x264600,3, -0x264610,12, -0x264680,3, -0x264690,12, -0x264700,4, -0x264718,13, -0x264800,25, -0x264880,25, -0x264900,25, -0x264980,25, -0x264a00,17, -0x264a50,3, -0x264a60,3, -0x265000,4, -0x265014,6, -0x265030,5, -0x265080,4, -0x265094,6, -0x2650b0,5, -0x265100,4, -0x265114,6, -0x265130,5, -0x265180,4, -0x265194,6, -0x2651b0,5, -0x265200,3, -0x265210,23, -0x265500,3, -0x265510,12, -0x265580,3, -0x265590,12, -0x265600,3, -0x265610,12, -0x265680,3, -0x265690,12, -0x265700,4, -0x265718,13, -0x265800,25, -0x265880,25, -0x265900,25, -0x265980,25, -0x265a00,17, -0x265a50,3, -0x265a60,3, -0x266000,13, -0x266040,22, -0x2660a0,6, -0x2660c0,3, +0x263c00,6, +0x263c20,6, +0x263c40,6, +0x263c60,3, +0x263d00,6, +0x263d20,6, +0x263d40,3, +0x263d80,6, +0x263da0,6, +0x263dc0,3, +0x264000,29, +0x264078,5, +0x264090,2, +0x2640a0,10, +0x264100,93, +0x264278,5, +0x264290,2, +0x2642a0,10, +0x264300,93, +0x264478,5, +0x264490,2, +0x2644a0,10, +0x264500,93, +0x264678,5, +0x264690,2, +0x2646a0,10, +0x264700,93, +0x26487c,1, +0x264a00,8, +0x264a24,15, +0x264a64,23, +0x264ac4,6, +0x264b00,4, +0x264b20,3, +0x264c00,2, +0x264c40,14, +0x264c80,9, +0x264d00,9, +0x264d2c,1, +0x264d80,6, +0x264e00,2, +0x264e0c,1, +0x264e14,5, +0x264e2c,1, +0x264e34,5, +0x264e4c,1, +0x264e54,5, +0x264e6c,1, +0x264e74,5, +0x264e8c,1, +0x264e94,5, +0x264eac,1, +0x264eb4,3, +0x265000,29, +0x265078,5, +0x265090,2, +0x2650a0,10, +0x265100,93, +0x265278,5, +0x265290,2, +0x2652a0,10, +0x265300,93, +0x265478,5, +0x265490,2, +0x2654a0,10, +0x265500,93, +0x265678,5, +0x265690,2, +0x2656a0,10, +0x265700,93, +0x26587c,1, +0x265a00,8, +0x265a24,15, +0x265a64,23, +0x265ac4,6, +0x265b00,4, +0x265b20,3, +0x265c00,2, +0x265c40,14, +0x265c80,9, +0x265d00,9, +0x265d2c,1, +0x265d80,6, +0x265e00,2, +0x265e0c,1, +0x265e14,5, +0x265e2c,1, +0x265e34,5, +0x265e4c,1, +0x265e54,5, +0x265e6c,1, +0x265e74,5, +0x265e8c,1, +0x265e94,5, +0x265eac,1, +0x265eb4,3, +0x266000,14, +0x266070,3, +0x266080,6, 0x266100,9, -0x266400,2, -0x26640c,6, -0x266440,13, -0x266480,16, -0x266800,1, -0x266808,3, -0x26681c,8, -0x266840,3, -0x266850,3, -0x266880,1, -0x266888,3, -0x26689c,8, -0x2668c0,3, -0x2668d0,3, -0x266900,1, -0x266908,3, -0x26691c,8, -0x266940,3, -0x266950,3, -0x266980,1, -0x266988,3, -0x26699c,8, -0x2669c0,3, -0x2669d0,3, -0x266a00,1, -0x266a08,3, -0x266a1c,8, -0x266a40,3, -0x266a50,3, -0x266a80,1, -0x266a88,3, -0x266a9c,8, -0x266ac0,3, -0x266ad0,3, -0x266b00,1, -0x266b08,3, -0x266b1c,8, -0x266b40,3, -0x266b50,3, -0x266b80,1, -0x266b88,3, -0x266b9c,8, -0x266bc0,3, -0x266bd0,3, -0x266c00,1, -0x266c08,3, -0x266c1c,8, -0x266c40,3, -0x266c50,3, -0x266c80,2, -0x266c94,13, +0x266204,1, +0x26620c,6, +0x266240,13, +0x266280,16, +0x266400,8, +0x266424,15, +0x266464,15, +0x2664a4,15, +0x2664e4,23, +0x266544,6, +0x266580,10, +0x2665ac,1, +0x2665b4,5, +0x2665cc,1, +0x2665d4,5, +0x2665ec,1, +0x2665f4,13, +0x266680,7, +0x2666a0,5, +0x2666c0,5, +0x2666e0,3, +0x266800,19, +0x266850,10, +0x266880,19, +0x2668d0,10, +0x266900,19, +0x266950,10, +0x266980,19, +0x2669d0,10, +0x266a00,19, +0x266a50,10, +0x266a80,19, +0x266ad0,10, +0x266b00,19, +0x266b50,10, +0x266b80,19, +0x266bd0,10, +0x266c00,19, +0x266c50,10, +0x266c84,1, +0x266c94,8, +0x266cb8,9, +0x266ce0,4, 0x267000,6, 0x267020,3, -0x267034,1, 0x267040,7, 0x267060,6, 0x267100,5, 0x267138,1, 0x267144,1, -0x267400,1, -0x267418,1, -0x267434,1, -0x26752c,5, -0x267590,1, -0x2675ac,1, -0x2675d8,4, -0x267600,8, +0x267150,2, 0x268000,6, 0x268020,3, 0x268030,9, -0x268080,6, -0x268100,20, +0x268100,6, +0x268120,10, +0x268150,8, 0x268400,1, -0x268418,1, -0x268434,1, -0x26852c,4, -0x268590,1, +0x268428,1, +0x268450,1, +0x268478,1, +0x2684a0,8, 0x2685ac,1, 0x2685d8,4, -0x268600,8, +0x268600,6, +0x268620,6, +0x268640,3, +0x268800,6, +0x268820,3, +0x268830,4, +0x268858,2, +0x268864,1, +0x268874,3, +0x268898,2, +0x2688a4,1, +0x2688b4,3, 0x269000,6, 0x269020,6, 0x269040,3, 0x269080,14, 0x2690bc,1, 0x2690c4,13, -0x2690fc,6, -0x269120,5, -0x269190,10, -0x269200,16, -0x269244,32, -0x269300,26, +0x2690fc,5, +0x269120,4, +0x269140,3, +0x269180,3, +0x269190,3, +0x2691a0,1, +0x2691e0,6, +0x269200,20, +0x26925c,30, +0x269300,24, 0x269380,2, 0x2693a0,1, 0x2693c0,11, -0x269404,4, -0x269418,16, +0x269404,3, +0x269420,11, 0x269460,3, +0x269480,6, 0x269500,6, +0x269520,6, 0x269540,1, 0x269558,2, 0x269600,17, -0x269800,366, +0x269800,410, 0x26a000,6, 0x26a020,6, 0x26a040,3, 0x26a080,14, 0x26a0bc,1, 0x26a0c4,13, -0x26a0fc,6, -0x26a120,5, -0x26a190,10, -0x26a200,16, -0x26a244,32, -0x26a300,26, +0x26a0fc,5, +0x26a120,4, +0x26a140,3, +0x26a180,3, +0x26a190,3, +0x26a1a0,1, +0x26a1e0,6, +0x26a200,20, +0x26a25c,30, +0x26a300,24, 0x26a380,2, 0x26a3a0,1, 0x26a3c0,11, -0x26a404,4, -0x26a418,16, +0x26a404,3, +0x26a420,11, 0x26a460,3, +0x26a480,6, 0x26a500,6, +0x26a520,6, 0x26a540,1, 0x26a558,2, 0x26a600,17, -0x26a800,366, +0x26a800,410, 0x26b000,4, -0x26b020,9, -0x26b048,6, -0x26b064,6, -0x26b080,1, +0x26b020,25, +0x26b088,8, 0x26b100,4, -0x26b120,9, -0x26b148,6, -0x26b164,6, -0x26b180,1, -0x26b200,35, -0x26b290,6, -0x26b2b4,6, -0x26b2d0,5, -0x26b2e8,5, +0x26b120,25, +0x26b188,8, +0x26b200,34, 0x26b300,37, -0x26b400,6, -0x26b420,3, -0x26b438,4, -0x26b454,3, -0x26b478,4, -0x26b494,3, +0x26b400,16, +0x26b464,1, +0x26b474,3, +0x26b500,6, +0x26b520,2, +0x26b530,9, +0x26b570,10, +0x26b5a0,2, +0x26b5b0,9, +0x26b5f0,4, +0x26b620,7, +0x26b640,16, +0x26b700,6, +0x26b720,6, +0x26b740,6, +0x26b760,6, +0x26b780,3, 0x26b800,5, 0x26b818,1, 0x26b854,6, 0x26b880,2, 0x26b8a4,1, +0x26b8ac,2, 0x26ba00,28, -0x26ba7c,5, -0x26bab0,2, +0x26ba7c,13, +0x26bab4,1, 0x26babc,10, -0x26bb00,2, -0x26bb0c,7, +0x26bb04,1, +0x26bb0c,5, +0x26bb24,1, 0x26bb34,9, 0x26bb60,6, -0x26bb80,8, +0x26bb80,22, +0x26bbe0,3, +0x26bbf0,2, 0x26bc00,5, 0x26bc18,1, 0x26bc54,6, 0x26bc80,2, 0x26bca4,1, +0x26bcac,2, 0x26be00,28, -0x26be7c,5, -0x26beb0,2, +0x26be7c,13, +0x26beb4,1, 0x26bebc,10, -0x26bf00,2, -0x26bf0c,7, +0x26bf04,1, +0x26bf0c,5, +0x26bf24,1, 0x26bf34,9, 0x26bf60,6, -0x26bf80,8, -0x26c000,4, -0x26c014,10, -0x26c040,1, -0x26c048,3, -0x26c058,1, -0x26c060,1, +0x26bf80,22, +0x26bfe0,3, +0x26bff0,2, +0x26c008,2, +0x26c014,11, +0x26c044,1, +0x26c04c,3, +0x26c05c,1, +0x26c064,1, 0x26c07c,1, -0x26c500,1, -0x26c518,2, +0x26c500,2, +0x26c518,1, +0x26c520,3, 0x26c540,6, -0x26c800,4, -0x26c814,10, -0x26c840,1, -0x26c848,3, -0x26c858,1, -0x26c860,1, +0x26c580,10, +0x26c808,2, +0x26c814,11, +0x26c844,1, +0x26c84c,3, +0x26c85c,1, +0x26c864,1, 0x26c87c,1, -0x26cd00,1, -0x26cd18,2, +0x26cd00,2, +0x26cd18,1, +0x26cd20,3, 0x26cd40,6, +0x26cd80,10, 0x26d800,2, -0x26d818,2, -0x26d834,2, -0x26d92c,6, -0x26d990,2, +0x26d828,2, +0x26d850,2, +0x26d878,2, +0x26d8a0,6, 0x26d9ac,1, 0x26d9d8,4, -0x26da00,16, -0x26dc00,3, -0x26dc20,2, -0x26dc40,1, +0x26da00,6, +0x26da20,6, +0x26da40,6, +0x26da60,6, +0x26da80,3, +0x26dc00,6, +0x26dc20,3, +0x26dc40,2, +0x26dc60,1, 0x270000,5, 0x270020,4, -0x270034,9, -0x27005c,7, +0x270034,17, 0x270080,1, 0x2700a0,6, 0x270100,5, 0x270120,4, -0x270134,9, -0x27015c,7, +0x270134,17, 0x270180,1, 0x2701a0,6, 0x270200,5, 0x270220,4, -0x270234,9, -0x27025c,7, +0x270234,17, 0x270280,1, 0x2702a0,6, 0x270300,5, 0x270320,4, -0x270334,9, -0x27035c,7, +0x270334,17, 0x270380,1, 0x2703a0,6, -0x270400,4, -0x270440,4, +0x270400,6, +0x270440,6, 0x270480,3, 0x2704c0,3, -0x270500,5, -0x270518,8, +0x270500,6, +0x27051c,7, +0x270540,1, 0x270c00,13, -0x270c40,11, +0x270c40,12, 0x270c80,13, -0x270cc0,11, +0x270cc0,12, 0x270d00,6, 0x270d20,6, -0x270e00,10, +0x270d80,14, +0x270dc0,2, 0x270e40,11, -0x270e80,8, +0x270e80,6, +0x270ea0,6, 0x271000,2, 0x271010,5, 0x271040,3, 0x271050,3, -0x271060,7, -0x271080,7, -0x2710a0,7, -0x2710c0,7, -0x271100,7, -0x271140,7, -0x271180,5, +0x271060,32, +0x271100,8, +0x271140,8, +0x271180,3, +0x271190,2, 0x27119c,9, 0x271218,9, 0x271240,3, @@ -6440,75 +8226,84 @@ 0x2712e4,1, 0x271400,8, 0x271424,2, -0x271500,3, +0x271500,5, 0x271520,4, -0x271540,3, +0x271540,5, 0x271560,4, 0x271800,24, -0x271864,2, -0x271880,6, -0x271900,12, -0x271940,6, -0x271960,6, +0x271864,5, +0x271880,8, +0x271900,13, 0x271980,4, +0x2719a0,6, 0x2719c0,6, 0x2719dc,1, 0x271a00,6, 0x271a1c,1, 0x271a40,1, +0x271a60,1, 0x271a68,23, +0x271ac8,6, 0x271b00,17, +0x271b48,6, 0x271b80,12, +0x271c00,6, +0x271c20,6, +0x271c40,6, +0x271c60,3, +0x271d00,6, +0x271d20,6, +0x271d40,3, +0x271d80,6, +0x271da0,6, +0x271dc0,3, 0x272000,5, 0x272020,4, -0x272034,9, -0x27205c,7, +0x272034,17, 0x272080,1, 0x2720a0,6, 0x272100,5, 0x272120,4, -0x272134,9, -0x27215c,7, +0x272134,17, 0x272180,1, 0x2721a0,6, 0x272200,5, 0x272220,4, -0x272234,9, -0x27225c,7, +0x272234,17, 0x272280,1, 0x2722a0,6, 0x272300,5, 0x272320,4, -0x272334,9, -0x27235c,7, +0x272334,17, 0x272380,1, 0x2723a0,6, -0x272400,4, -0x272440,4, +0x272400,6, +0x272440,6, 0x272480,3, 0x2724c0,3, -0x272500,5, -0x272518,8, +0x272500,6, +0x27251c,7, +0x272540,1, 0x272c00,13, -0x272c40,11, +0x272c40,12, 0x272c80,13, -0x272cc0,11, +0x272cc0,12, 0x272d00,6, 0x272d20,6, -0x272e00,10, +0x272d80,14, +0x272dc0,2, 0x272e40,11, -0x272e80,8, +0x272e80,6, +0x272ea0,6, 0x273000,2, 0x273010,5, 0x273040,3, 0x273050,3, -0x273060,7, -0x273080,7, -0x2730a0,7, -0x2730c0,7, -0x273100,7, -0x273140,7, -0x273180,5, +0x273060,32, +0x273100,8, +0x273140,8, +0x273180,3, +0x273190,2, 0x27319c,9, 0x273218,9, 0x273240,3, @@ -6521,349 +8316,409 @@ 0x2732e4,1, 0x273400,8, 0x273424,2, -0x273500,3, +0x273500,5, 0x273520,4, -0x273540,3, +0x273540,5, 0x273560,4, 0x273800,24, -0x273864,2, -0x273880,6, -0x273900,12, -0x273940,6, -0x273960,6, +0x273864,5, +0x273880,8, +0x273900,13, 0x273980,4, +0x2739a0,6, 0x2739c0,6, 0x2739dc,1, 0x273a00,6, 0x273a1c,1, 0x273a40,1, +0x273a60,1, 0x273a68,23, +0x273ac8,6, 0x273b00,17, +0x273b48,6, 0x273b80,12, -0x274000,4, -0x274014,6, -0x274030,5, -0x274080,4, -0x274094,6, -0x2740b0,5, -0x274100,4, -0x274114,6, -0x274130,5, -0x274180,4, -0x274194,6, -0x2741b0,5, -0x274200,3, -0x274210,23, -0x274500,3, -0x274510,12, -0x274580,3, -0x274590,12, -0x274600,3, -0x274610,12, -0x274680,3, -0x274690,12, -0x274700,4, -0x274718,13, -0x274800,25, -0x274880,25, -0x274900,25, -0x274980,25, -0x274a00,17, -0x274a50,3, -0x274a60,3, -0x275000,4, -0x275014,6, -0x275030,5, -0x275080,4, -0x275094,6, -0x2750b0,5, -0x275100,4, -0x275114,6, -0x275130,5, -0x275180,4, -0x275194,6, -0x2751b0,5, -0x275200,3, -0x275210,23, -0x275500,3, -0x275510,12, -0x275580,3, -0x275590,12, -0x275600,3, -0x275610,12, -0x275680,3, -0x275690,12, -0x275700,4, -0x275718,13, -0x275800,25, -0x275880,25, -0x275900,25, -0x275980,25, -0x275a00,17, -0x275a50,3, -0x275a60,3, -0x276000,13, -0x276040,22, -0x2760a0,6, -0x2760c0,3, +0x273c00,6, +0x273c20,6, +0x273c40,6, +0x273c60,3, +0x273d00,6, +0x273d20,6, +0x273d40,3, +0x273d80,6, +0x273da0,6, +0x273dc0,3, +0x274000,29, +0x274078,5, +0x274090,2, +0x2740a0,10, +0x274100,93, +0x274278,5, +0x274290,2, +0x2742a0,10, +0x274300,93, +0x274478,5, +0x274490,2, +0x2744a0,10, +0x274500,93, +0x274678,5, +0x274690,2, +0x2746a0,10, +0x274700,93, +0x27487c,1, +0x274a00,8, +0x274a24,15, +0x274a64,23, +0x274ac4,6, +0x274b00,4, +0x274b20,3, +0x274c00,2, +0x274c40,14, +0x274c80,9, +0x274d00,9, +0x274d2c,1, +0x274d80,6, +0x274e00,2, +0x274e0c,1, +0x274e14,5, +0x274e2c,1, +0x274e34,5, +0x274e4c,1, +0x274e54,5, +0x274e6c,1, +0x274e74,5, +0x274e8c,1, +0x274e94,5, +0x274eac,1, +0x274eb4,3, +0x275000,29, +0x275078,5, +0x275090,2, +0x2750a0,10, +0x275100,93, +0x275278,5, +0x275290,2, +0x2752a0,10, +0x275300,93, +0x275478,5, +0x275490,2, +0x2754a0,10, +0x275500,93, +0x275678,5, +0x275690,2, +0x2756a0,10, +0x275700,93, +0x27587c,1, +0x275a00,8, +0x275a24,15, +0x275a64,23, +0x275ac4,6, +0x275b00,4, +0x275b20,3, +0x275c00,2, +0x275c40,14, +0x275c80,9, +0x275d00,9, +0x275d2c,1, +0x275d80,6, +0x275e00,2, +0x275e0c,1, +0x275e14,5, +0x275e2c,1, +0x275e34,5, +0x275e4c,1, +0x275e54,5, +0x275e6c,1, +0x275e74,5, +0x275e8c,1, +0x275e94,5, +0x275eac,1, +0x275eb4,3, +0x276000,14, +0x276070,3, +0x276080,6, 0x276100,9, -0x276400,2, -0x27640c,6, -0x276440,13, -0x276480,16, -0x276800,1, -0x276808,3, -0x27681c,8, -0x276840,3, -0x276850,3, -0x276880,1, -0x276888,3, -0x27689c,8, -0x2768c0,3, -0x2768d0,3, -0x276900,1, -0x276908,3, -0x27691c,8, -0x276940,3, -0x276950,3, -0x276980,1, -0x276988,3, -0x27699c,8, -0x2769c0,3, -0x2769d0,3, -0x276a00,1, -0x276a08,3, -0x276a1c,8, -0x276a40,3, -0x276a50,3, -0x276a80,1, -0x276a88,3, -0x276a9c,8, -0x276ac0,3, -0x276ad0,3, -0x276b00,1, -0x276b08,3, -0x276b1c,8, -0x276b40,3, -0x276b50,3, -0x276b80,1, -0x276b88,3, -0x276b9c,8, -0x276bc0,3, -0x276bd0,3, -0x276c00,1, -0x276c08,3, -0x276c1c,8, -0x276c40,3, -0x276c50,3, -0x276c80,2, -0x276c94,13, +0x276204,1, +0x27620c,6, +0x276240,13, +0x276280,16, +0x276400,8, +0x276424,15, +0x276464,15, +0x2764a4,15, +0x2764e4,23, +0x276544,6, +0x276580,10, +0x2765ac,1, +0x2765b4,5, +0x2765cc,1, +0x2765d4,5, +0x2765ec,1, +0x2765f4,13, +0x276680,7, +0x2766a0,5, +0x2766c0,5, +0x2766e0,3, +0x276800,19, +0x276850,10, +0x276880,19, +0x2768d0,10, +0x276900,19, +0x276950,10, +0x276980,19, +0x2769d0,10, +0x276a00,19, +0x276a50,10, +0x276a80,19, +0x276ad0,10, +0x276b00,19, +0x276b50,10, +0x276b80,19, +0x276bd0,10, +0x276c00,19, +0x276c50,10, +0x276c84,1, +0x276c94,8, +0x276cb8,9, +0x276ce0,4, 0x277000,6, 0x277020,3, -0x277034,1, 0x277040,7, 0x277060,6, 0x277100,5, 0x277138,1, 0x277144,1, -0x277400,1, -0x277418,1, -0x277434,1, -0x27752c,5, -0x277590,1, -0x2775ac,1, -0x2775d8,4, -0x277600,8, +0x277150,2, 0x278000,6, 0x278020,3, 0x278030,9, -0x278080,6, -0x278100,20, +0x278100,6, +0x278120,10, +0x278150,8, 0x278400,1, -0x278418,1, -0x278434,1, -0x27852c,4, -0x278590,1, +0x278428,1, +0x278450,1, +0x278478,1, +0x2784a0,8, 0x2785ac,1, 0x2785d8,4, -0x278600,8, +0x278600,6, +0x278620,6, +0x278640,3, +0x278800,6, +0x278820,3, +0x278830,4, +0x278858,2, +0x278864,1, +0x278874,3, +0x278898,2, +0x2788a4,1, +0x2788b4,3, 0x279000,6, 0x279020,6, 0x279040,3, 0x279080,14, 0x2790bc,1, 0x2790c4,13, -0x2790fc,6, -0x279120,5, -0x279190,10, -0x279200,16, -0x279244,32, -0x279300,26, +0x2790fc,5, +0x279120,4, +0x279140,3, +0x279180,3, +0x279190,3, +0x2791a0,1, +0x2791e0,6, +0x279200,20, +0x27925c,30, +0x279300,24, 0x279380,2, 0x2793a0,1, 0x2793c0,11, -0x279404,4, -0x279418,16, +0x279404,3, +0x279420,11, 0x279460,3, +0x279480,6, 0x279500,6, +0x279520,6, 0x279540,1, 0x279558,2, 0x279600,17, -0x279800,366, +0x279800,410, 0x27a000,6, 0x27a020,6, 0x27a040,3, 0x27a080,14, 0x27a0bc,1, 0x27a0c4,13, -0x27a0fc,6, -0x27a120,5, -0x27a190,10, -0x27a200,16, -0x27a244,32, -0x27a300,26, +0x27a0fc,5, +0x27a120,4, +0x27a140,3, +0x27a180,3, +0x27a190,3, +0x27a1a0,1, +0x27a1e0,6, +0x27a200,20, +0x27a25c,30, +0x27a300,24, 0x27a380,2, 0x27a3a0,1, 0x27a3c0,11, -0x27a404,4, -0x27a418,16, +0x27a404,3, +0x27a420,11, 0x27a460,3, +0x27a480,6, 0x27a500,6, +0x27a520,6, 0x27a540,1, 0x27a558,2, 0x27a600,17, -0x27a800,366, +0x27a800,410, 0x27b000,4, -0x27b020,9, -0x27b048,6, -0x27b064,6, -0x27b080,1, +0x27b020,25, +0x27b088,8, 0x27b100,4, -0x27b120,9, -0x27b148,6, -0x27b164,6, -0x27b180,1, -0x27b200,35, -0x27b290,6, -0x27b2b4,6, -0x27b2d0,5, -0x27b2e8,5, +0x27b120,25, +0x27b188,8, +0x27b200,34, 0x27b300,37, -0x27b400,6, -0x27b420,3, -0x27b438,4, -0x27b454,3, -0x27b478,4, -0x27b494,3, +0x27b400,16, +0x27b464,1, +0x27b474,3, +0x27b500,6, +0x27b520,2, +0x27b530,9, +0x27b570,10, +0x27b5a0,2, +0x27b5b0,9, +0x27b5f0,4, +0x27b620,7, +0x27b640,16, +0x27b700,6, +0x27b720,6, +0x27b740,6, +0x27b760,6, +0x27b780,3, 0x27b800,5, 0x27b818,1, 0x27b854,6, 0x27b880,2, 0x27b8a4,1, +0x27b8ac,2, 0x27ba00,28, -0x27ba7c,5, -0x27bab0,2, +0x27ba7c,13, +0x27bab4,1, 0x27babc,10, -0x27bb00,2, -0x27bb0c,7, +0x27bb04,1, +0x27bb0c,5, +0x27bb24,1, 0x27bb34,9, 0x27bb60,6, -0x27bb80,8, +0x27bb80,22, +0x27bbe0,3, +0x27bbf0,2, 0x27bc00,5, 0x27bc18,1, 0x27bc54,6, 0x27bc80,2, 0x27bca4,1, +0x27bcac,2, 0x27be00,28, -0x27be7c,5, -0x27beb0,2, +0x27be7c,13, +0x27beb4,1, 0x27bebc,10, -0x27bf00,2, -0x27bf0c,7, +0x27bf04,1, +0x27bf0c,5, +0x27bf24,1, 0x27bf34,9, 0x27bf60,6, -0x27bf80,8, -0x27c000,4, -0x27c014,10, -0x27c040,1, -0x27c048,3, -0x27c058,1, -0x27c060,1, +0x27bf80,22, +0x27bfe0,3, +0x27bff0,2, +0x27c008,2, +0x27c014,11, +0x27c044,1, +0x27c04c,3, +0x27c05c,1, +0x27c064,1, 0x27c07c,1, -0x27c500,1, -0x27c518,2, +0x27c500,2, +0x27c518,1, +0x27c520,3, 0x27c540,6, -0x27c800,4, -0x27c814,10, -0x27c840,1, -0x27c848,3, -0x27c858,1, -0x27c860,1, +0x27c580,10, +0x27c808,2, +0x27c814,11, +0x27c844,1, +0x27c84c,3, +0x27c85c,1, +0x27c864,1, 0x27c87c,1, -0x27cd00,1, -0x27cd18,2, +0x27cd00,2, +0x27cd18,1, +0x27cd20,3, 0x27cd40,6, +0x27cd80,10, 0x27d800,2, -0x27d818,2, -0x27d834,2, -0x27d92c,6, -0x27d990,2, +0x27d828,2, +0x27d850,2, +0x27d878,2, +0x27d8a0,6, 0x27d9ac,1, 0x27d9d8,4, -0x27da00,16, -0x27dc00,3, -0x27dc20,2, -0x27dc40,1, +0x27da00,6, +0x27da20,6, +0x27da40,6, +0x27da60,6, +0x27da80,3, +0x27dc00,6, +0x27dc20,3, +0x27dc40,2, +0x27dc60,1, 0x280000,5, 0x280020,4, -0x280034,9, -0x28005c,7, +0x280034,17, 0x280080,1, 0x2800a0,6, 0x280100,5, 0x280120,4, -0x280134,9, -0x28015c,7, +0x280134,17, 0x280180,1, 0x2801a0,6, 0x280200,5, 0x280220,4, -0x280234,9, -0x28025c,7, +0x280234,17, 0x280280,1, 0x2802a0,6, 0x280300,5, 0x280320,4, -0x280334,9, -0x28035c,7, +0x280334,17, 0x280380,1, 0x2803a0,6, -0x280400,4, -0x280440,4, +0x280400,6, +0x280440,6, 0x280480,3, 0x2804c0,3, -0x280500,5, -0x280518,8, +0x280500,6, +0x28051c,7, +0x280540,1, 0x280c00,13, -0x280c40,11, +0x280c40,12, 0x280c80,13, -0x280cc0,11, +0x280cc0,12, 0x280d00,6, 0x280d20,6, -0x280e00,10, +0x280d80,14, +0x280dc0,2, 0x280e40,11, -0x280e80,8, +0x280e80,6, +0x280ea0,6, 0x281000,2, 0x281010,5, 0x281040,3, 0x281050,3, -0x281060,7, -0x281080,7, -0x2810a0,7, -0x2810c0,7, -0x281100,7, -0x281140,7, -0x281180,5, +0x281060,32, +0x281100,8, +0x281140,8, +0x281180,3, +0x281190,2, 0x28119c,9, 0x281218,9, 0x281240,3, @@ -6876,75 +8731,84 @@ 0x2812e4,1, 0x281400,8, 0x281424,2, -0x281500,3, +0x281500,5, 0x281520,4, -0x281540,3, +0x281540,5, 0x281560,4, 0x281800,24, -0x281864,2, -0x281880,6, -0x281900,12, -0x281940,6, -0x281960,6, +0x281864,5, +0x281880,8, +0x281900,13, 0x281980,4, +0x2819a0,6, 0x2819c0,6, 0x2819dc,1, 0x281a00,6, 0x281a1c,1, 0x281a40,1, +0x281a60,1, 0x281a68,23, +0x281ac8,6, 0x281b00,17, +0x281b48,6, 0x281b80,12, +0x281c00,6, +0x281c20,6, +0x281c40,6, +0x281c60,3, +0x281d00,6, +0x281d20,6, +0x281d40,3, +0x281d80,6, +0x281da0,6, +0x281dc0,3, 0x282000,5, 0x282020,4, -0x282034,9, -0x28205c,7, +0x282034,17, 0x282080,1, 0x2820a0,6, 0x282100,5, 0x282120,4, -0x282134,9, -0x28215c,7, +0x282134,17, 0x282180,1, 0x2821a0,6, 0x282200,5, 0x282220,4, -0x282234,9, -0x28225c,7, +0x282234,17, 0x282280,1, 0x2822a0,6, 0x282300,5, 0x282320,4, -0x282334,9, -0x28235c,7, +0x282334,17, 0x282380,1, 0x2823a0,6, -0x282400,4, -0x282440,4, +0x282400,6, +0x282440,6, 0x282480,3, 0x2824c0,3, -0x282500,5, -0x282518,8, +0x282500,6, +0x28251c,7, +0x282540,1, 0x282c00,13, -0x282c40,11, +0x282c40,12, 0x282c80,13, -0x282cc0,11, +0x282cc0,12, 0x282d00,6, 0x282d20,6, -0x282e00,10, +0x282d80,14, +0x282dc0,2, 0x282e40,11, -0x282e80,8, +0x282e80,6, +0x282ea0,6, 0x283000,2, 0x283010,5, 0x283040,3, 0x283050,3, -0x283060,7, -0x283080,7, -0x2830a0,7, -0x2830c0,7, -0x283100,7, -0x283140,7, -0x283180,5, +0x283060,32, +0x283100,8, +0x283140,8, +0x283180,3, +0x283190,2, 0x28319c,9, 0x283218,9, 0x283240,3, @@ -6957,349 +8821,409 @@ 0x2832e4,1, 0x283400,8, 0x283424,2, -0x283500,3, +0x283500,5, 0x283520,4, -0x283540,3, +0x283540,5, 0x283560,4, 0x283800,24, -0x283864,2, -0x283880,6, -0x283900,12, -0x283940,6, -0x283960,6, +0x283864,5, +0x283880,8, +0x283900,13, 0x283980,4, +0x2839a0,6, 0x2839c0,6, 0x2839dc,1, 0x283a00,6, 0x283a1c,1, 0x283a40,1, +0x283a60,1, 0x283a68,23, +0x283ac8,6, 0x283b00,17, +0x283b48,6, 0x283b80,12, -0x284000,4, -0x284014,6, -0x284030,5, -0x284080,4, -0x284094,6, -0x2840b0,5, -0x284100,4, -0x284114,6, -0x284130,5, -0x284180,4, -0x284194,6, -0x2841b0,5, -0x284200,3, -0x284210,23, -0x284500,3, -0x284510,12, -0x284580,3, -0x284590,12, -0x284600,3, -0x284610,12, -0x284680,3, -0x284690,12, -0x284700,4, -0x284718,13, -0x284800,25, -0x284880,25, -0x284900,25, -0x284980,25, -0x284a00,17, -0x284a50,3, -0x284a60,3, -0x285000,4, -0x285014,6, -0x285030,5, -0x285080,4, -0x285094,6, -0x2850b0,5, -0x285100,4, -0x285114,6, -0x285130,5, -0x285180,4, -0x285194,6, -0x2851b0,5, -0x285200,3, -0x285210,23, -0x285500,3, -0x285510,12, -0x285580,3, -0x285590,12, -0x285600,3, -0x285610,12, -0x285680,3, -0x285690,12, -0x285700,4, -0x285718,13, -0x285800,25, -0x285880,25, -0x285900,25, -0x285980,25, -0x285a00,17, -0x285a50,3, -0x285a60,3, -0x286000,13, -0x286040,22, -0x2860a0,6, -0x2860c0,3, +0x283c00,6, +0x283c20,6, +0x283c40,6, +0x283c60,3, +0x283d00,6, +0x283d20,6, +0x283d40,3, +0x283d80,6, +0x283da0,6, +0x283dc0,3, +0x284000,29, +0x284078,5, +0x284090,2, +0x2840a0,10, +0x284100,93, +0x284278,5, +0x284290,2, +0x2842a0,10, +0x284300,93, +0x284478,5, +0x284490,2, +0x2844a0,10, +0x284500,93, +0x284678,5, +0x284690,2, +0x2846a0,10, +0x284700,93, +0x28487c,1, +0x284a00,8, +0x284a24,15, +0x284a64,23, +0x284ac4,6, +0x284b00,4, +0x284b20,3, +0x284c00,2, +0x284c40,14, +0x284c80,9, +0x284d00,9, +0x284d2c,1, +0x284d80,6, +0x284e00,2, +0x284e0c,1, +0x284e14,5, +0x284e2c,1, +0x284e34,5, +0x284e4c,1, +0x284e54,5, +0x284e6c,1, +0x284e74,5, +0x284e8c,1, +0x284e94,5, +0x284eac,1, +0x284eb4,3, +0x285000,29, +0x285078,5, +0x285090,2, +0x2850a0,10, +0x285100,93, +0x285278,5, +0x285290,2, +0x2852a0,10, +0x285300,93, +0x285478,5, +0x285490,2, +0x2854a0,10, +0x285500,93, +0x285678,5, +0x285690,2, +0x2856a0,10, +0x285700,93, +0x28587c,1, +0x285a00,8, +0x285a24,15, +0x285a64,23, +0x285ac4,6, +0x285b00,4, +0x285b20,3, +0x285c00,2, +0x285c40,14, +0x285c80,9, +0x285d00,9, +0x285d2c,1, +0x285d80,6, +0x285e00,2, +0x285e0c,1, +0x285e14,5, +0x285e2c,1, +0x285e34,5, +0x285e4c,1, +0x285e54,5, +0x285e6c,1, +0x285e74,5, +0x285e8c,1, +0x285e94,5, +0x285eac,1, +0x285eb4,3, +0x286000,14, +0x286070,3, +0x286080,6, 0x286100,9, -0x286400,2, -0x28640c,6, -0x286440,13, -0x286480,16, -0x286800,1, -0x286808,3, -0x28681c,8, -0x286840,3, -0x286850,3, -0x286880,1, -0x286888,3, -0x28689c,8, -0x2868c0,3, -0x2868d0,3, -0x286900,1, -0x286908,3, -0x28691c,8, -0x286940,3, -0x286950,3, -0x286980,1, -0x286988,3, -0x28699c,8, -0x2869c0,3, -0x2869d0,3, -0x286a00,1, -0x286a08,3, -0x286a1c,8, -0x286a40,3, -0x286a50,3, -0x286a80,1, -0x286a88,3, -0x286a9c,8, -0x286ac0,3, -0x286ad0,3, -0x286b00,1, -0x286b08,3, -0x286b1c,8, -0x286b40,3, -0x286b50,3, -0x286b80,1, -0x286b88,3, -0x286b9c,8, -0x286bc0,3, -0x286bd0,3, -0x286c00,1, -0x286c08,3, -0x286c1c,8, -0x286c40,3, -0x286c50,3, -0x286c80,2, -0x286c94,13, +0x286204,1, +0x28620c,6, +0x286240,13, +0x286280,16, +0x286400,8, +0x286424,15, +0x286464,15, +0x2864a4,15, +0x2864e4,23, +0x286544,6, +0x286580,10, +0x2865ac,1, +0x2865b4,5, +0x2865cc,1, +0x2865d4,5, +0x2865ec,1, +0x2865f4,13, +0x286680,7, +0x2866a0,5, +0x2866c0,5, +0x2866e0,3, +0x286800,19, +0x286850,10, +0x286880,19, +0x2868d0,10, +0x286900,19, +0x286950,10, +0x286980,19, +0x2869d0,10, +0x286a00,19, +0x286a50,10, +0x286a80,19, +0x286ad0,10, +0x286b00,19, +0x286b50,10, +0x286b80,19, +0x286bd0,10, +0x286c00,19, +0x286c50,10, +0x286c84,1, +0x286c94,8, +0x286cb8,9, +0x286ce0,4, 0x287000,6, 0x287020,3, -0x287034,1, 0x287040,7, 0x287060,6, 0x287100,5, 0x287138,1, 0x287144,1, -0x287400,1, -0x287418,1, -0x287434,1, -0x28752c,5, -0x287590,1, -0x2875ac,1, -0x2875d8,4, -0x287600,8, +0x287150,2, 0x288000,6, 0x288020,3, 0x288030,9, -0x288080,6, -0x288100,20, +0x288100,6, +0x288120,10, +0x288150,8, 0x288400,1, -0x288418,1, -0x288434,1, -0x28852c,4, -0x288590,1, +0x288428,1, +0x288450,1, +0x288478,1, +0x2884a0,8, 0x2885ac,1, 0x2885d8,4, -0x288600,8, +0x288600,6, +0x288620,6, +0x288640,3, +0x288800,6, +0x288820,3, +0x288830,4, +0x288858,2, +0x288864,1, +0x288874,3, +0x288898,2, +0x2888a4,1, +0x2888b4,3, 0x289000,6, 0x289020,6, 0x289040,3, 0x289080,14, 0x2890bc,1, 0x2890c4,13, -0x2890fc,6, -0x289120,5, -0x289190,10, -0x289200,16, -0x289244,32, -0x289300,26, +0x2890fc,5, +0x289120,4, +0x289140,3, +0x289180,3, +0x289190,3, +0x2891a0,1, +0x2891e0,6, +0x289200,20, +0x28925c,30, +0x289300,24, 0x289380,2, 0x2893a0,1, 0x2893c0,11, -0x289404,4, -0x289418,16, +0x289404,3, +0x289420,11, 0x289460,3, +0x289480,6, 0x289500,6, +0x289520,6, 0x289540,1, 0x289558,2, 0x289600,17, -0x289800,366, +0x289800,410, 0x28a000,6, 0x28a020,6, 0x28a040,3, 0x28a080,14, 0x28a0bc,1, 0x28a0c4,13, -0x28a0fc,6, -0x28a120,5, -0x28a190,10, -0x28a200,16, -0x28a244,32, -0x28a300,26, +0x28a0fc,5, +0x28a120,4, +0x28a140,3, +0x28a180,3, +0x28a190,3, +0x28a1a0,1, +0x28a1e0,6, +0x28a200,20, +0x28a25c,30, +0x28a300,24, 0x28a380,2, 0x28a3a0,1, 0x28a3c0,11, -0x28a404,4, -0x28a418,16, +0x28a404,3, +0x28a420,11, 0x28a460,3, +0x28a480,6, 0x28a500,6, +0x28a520,6, 0x28a540,1, 0x28a558,2, 0x28a600,17, -0x28a800,366, +0x28a800,410, 0x28b000,4, -0x28b020,9, -0x28b048,6, -0x28b064,6, -0x28b080,1, +0x28b020,25, +0x28b088,8, 0x28b100,4, -0x28b120,9, -0x28b148,6, -0x28b164,6, -0x28b180,1, -0x28b200,35, -0x28b290,6, -0x28b2b4,6, -0x28b2d0,5, -0x28b2e8,5, +0x28b120,25, +0x28b188,8, +0x28b200,34, 0x28b300,37, -0x28b400,6, -0x28b420,3, -0x28b438,4, -0x28b454,3, -0x28b478,4, -0x28b494,3, +0x28b400,16, +0x28b464,1, +0x28b474,3, +0x28b500,6, +0x28b520,2, +0x28b530,9, +0x28b570,10, +0x28b5a0,2, +0x28b5b0,9, +0x28b5f0,4, +0x28b620,7, +0x28b640,16, +0x28b700,6, +0x28b720,6, +0x28b740,6, +0x28b760,6, +0x28b780,3, 0x28b800,5, 0x28b818,1, 0x28b854,6, 0x28b880,2, 0x28b8a4,1, +0x28b8ac,2, 0x28ba00,28, -0x28ba7c,5, -0x28bab0,2, +0x28ba7c,13, +0x28bab4,1, 0x28babc,10, -0x28bb00,2, -0x28bb0c,7, +0x28bb04,1, +0x28bb0c,5, +0x28bb24,1, 0x28bb34,9, 0x28bb60,6, -0x28bb80,8, +0x28bb80,22, +0x28bbe0,3, +0x28bbf0,2, 0x28bc00,5, 0x28bc18,1, 0x28bc54,6, 0x28bc80,2, 0x28bca4,1, +0x28bcac,2, 0x28be00,28, -0x28be7c,5, -0x28beb0,2, +0x28be7c,13, +0x28beb4,1, 0x28bebc,10, -0x28bf00,2, -0x28bf0c,7, +0x28bf04,1, +0x28bf0c,5, +0x28bf24,1, 0x28bf34,9, 0x28bf60,6, -0x28bf80,8, -0x28c000,4, -0x28c014,10, -0x28c040,1, -0x28c048,3, -0x28c058,1, -0x28c060,1, +0x28bf80,22, +0x28bfe0,3, +0x28bff0,2, +0x28c008,2, +0x28c014,11, +0x28c044,1, +0x28c04c,3, +0x28c05c,1, +0x28c064,1, 0x28c07c,1, -0x28c500,1, -0x28c518,2, +0x28c500,2, +0x28c518,1, +0x28c520,3, 0x28c540,6, -0x28c800,4, -0x28c814,10, -0x28c840,1, -0x28c848,3, -0x28c858,1, -0x28c860,1, +0x28c580,10, +0x28c808,2, +0x28c814,11, +0x28c844,1, +0x28c84c,3, +0x28c85c,1, +0x28c864,1, 0x28c87c,1, -0x28cd00,1, -0x28cd18,2, +0x28cd00,2, +0x28cd18,1, +0x28cd20,3, 0x28cd40,6, +0x28cd80,10, 0x28d800,2, -0x28d818,2, -0x28d834,2, -0x28d92c,6, -0x28d990,2, +0x28d828,2, +0x28d850,2, +0x28d878,2, +0x28d8a0,6, 0x28d9ac,1, 0x28d9d8,4, -0x28da00,16, -0x28dc00,3, -0x28dc20,2, -0x28dc40,1, +0x28da00,6, +0x28da20,6, +0x28da40,6, +0x28da60,6, +0x28da80,3, +0x28dc00,6, +0x28dc20,3, +0x28dc40,2, +0x28dc60,1, 0x290000,5, 0x290020,4, -0x290034,9, -0x29005c,7, +0x290034,17, 0x290080,1, 0x2900a0,6, 0x290100,5, 0x290120,4, -0x290134,9, -0x29015c,7, +0x290134,17, 0x290180,1, 0x2901a0,6, 0x290200,5, 0x290220,4, -0x290234,9, -0x29025c,7, +0x290234,17, 0x290280,1, 0x2902a0,6, 0x290300,5, 0x290320,4, -0x290334,9, -0x29035c,7, +0x290334,17, 0x290380,1, 0x2903a0,6, -0x290400,4, -0x290440,4, +0x290400,6, +0x290440,6, 0x290480,3, 0x2904c0,3, -0x290500,5, -0x290518,8, +0x290500,6, +0x29051c,7, +0x290540,1, 0x290c00,13, -0x290c40,11, +0x290c40,12, 0x290c80,13, -0x290cc0,11, +0x290cc0,12, 0x290d00,6, 0x290d20,6, -0x290e00,10, +0x290d80,14, +0x290dc0,2, 0x290e40,11, -0x290e80,8, +0x290e80,6, +0x290ea0,6, 0x291000,2, 0x291010,5, 0x291040,3, 0x291050,3, -0x291060,7, -0x291080,7, -0x2910a0,7, -0x2910c0,7, -0x291100,7, -0x291140,7, -0x291180,5, +0x291060,32, +0x291100,8, +0x291140,8, +0x291180,3, +0x291190,2, 0x29119c,9, 0x291218,9, 0x291240,3, @@ -7312,75 +9236,84 @@ 0x2912e4,1, 0x291400,8, 0x291424,2, -0x291500,3, +0x291500,5, 0x291520,4, -0x291540,3, +0x291540,5, 0x291560,4, 0x291800,24, -0x291864,2, -0x291880,6, -0x291900,12, -0x291940,6, -0x291960,6, +0x291864,5, +0x291880,8, +0x291900,13, 0x291980,4, +0x2919a0,6, 0x2919c0,6, 0x2919dc,1, 0x291a00,6, 0x291a1c,1, 0x291a40,1, +0x291a60,1, 0x291a68,23, +0x291ac8,6, 0x291b00,17, +0x291b48,6, 0x291b80,12, +0x291c00,6, +0x291c20,6, +0x291c40,6, +0x291c60,3, +0x291d00,6, +0x291d20,6, +0x291d40,3, +0x291d80,6, +0x291da0,6, +0x291dc0,3, 0x292000,5, 0x292020,4, -0x292034,9, -0x29205c,7, +0x292034,17, 0x292080,1, 0x2920a0,6, 0x292100,5, 0x292120,4, -0x292134,9, -0x29215c,7, +0x292134,17, 0x292180,1, 0x2921a0,6, 0x292200,5, 0x292220,4, -0x292234,9, -0x29225c,7, +0x292234,17, 0x292280,1, 0x2922a0,6, 0x292300,5, 0x292320,4, -0x292334,9, -0x29235c,7, +0x292334,17, 0x292380,1, 0x2923a0,6, -0x292400,4, -0x292440,4, +0x292400,6, +0x292440,6, 0x292480,3, 0x2924c0,3, -0x292500,5, -0x292518,8, +0x292500,6, +0x29251c,7, +0x292540,1, 0x292c00,13, -0x292c40,11, +0x292c40,12, 0x292c80,13, -0x292cc0,11, +0x292cc0,12, 0x292d00,6, 0x292d20,6, -0x292e00,10, +0x292d80,14, +0x292dc0,2, 0x292e40,11, -0x292e80,8, +0x292e80,6, +0x292ea0,6, 0x293000,2, 0x293010,5, 0x293040,3, 0x293050,3, -0x293060,7, -0x293080,7, -0x2930a0,7, -0x2930c0,7, -0x293100,7, -0x293140,7, -0x293180,5, +0x293060,32, +0x293100,8, +0x293140,8, +0x293180,3, +0x293190,2, 0x29319c,9, 0x293218,9, 0x293240,3, @@ -7393,349 +9326,409 @@ 0x2932e4,1, 0x293400,8, 0x293424,2, -0x293500,3, +0x293500,5, 0x293520,4, -0x293540,3, +0x293540,5, 0x293560,4, 0x293800,24, -0x293864,2, -0x293880,6, -0x293900,12, -0x293940,6, -0x293960,6, +0x293864,5, +0x293880,8, +0x293900,13, 0x293980,4, +0x2939a0,6, 0x2939c0,6, 0x2939dc,1, 0x293a00,6, 0x293a1c,1, 0x293a40,1, +0x293a60,1, 0x293a68,23, +0x293ac8,6, 0x293b00,17, +0x293b48,6, 0x293b80,12, -0x294000,4, -0x294014,6, -0x294030,5, -0x294080,4, -0x294094,6, -0x2940b0,5, -0x294100,4, -0x294114,6, -0x294130,5, -0x294180,4, -0x294194,6, -0x2941b0,5, -0x294200,3, -0x294210,23, -0x294500,3, -0x294510,12, -0x294580,3, -0x294590,12, -0x294600,3, -0x294610,12, -0x294680,3, -0x294690,12, -0x294700,4, -0x294718,13, -0x294800,25, -0x294880,25, -0x294900,25, -0x294980,25, -0x294a00,17, -0x294a50,3, -0x294a60,3, -0x295000,4, -0x295014,6, -0x295030,5, -0x295080,4, -0x295094,6, -0x2950b0,5, -0x295100,4, -0x295114,6, -0x295130,5, -0x295180,4, -0x295194,6, -0x2951b0,5, -0x295200,3, -0x295210,23, -0x295500,3, -0x295510,12, -0x295580,3, -0x295590,12, -0x295600,3, -0x295610,12, -0x295680,3, -0x295690,12, -0x295700,4, -0x295718,13, -0x295800,25, -0x295880,25, -0x295900,25, -0x295980,25, -0x295a00,17, -0x295a50,3, -0x295a60,3, -0x296000,13, -0x296040,22, -0x2960a0,6, -0x2960c0,3, +0x293c00,6, +0x293c20,6, +0x293c40,6, +0x293c60,3, +0x293d00,6, +0x293d20,6, +0x293d40,3, +0x293d80,6, +0x293da0,6, +0x293dc0,3, +0x294000,29, +0x294078,5, +0x294090,2, +0x2940a0,10, +0x294100,93, +0x294278,5, +0x294290,2, +0x2942a0,10, +0x294300,93, +0x294478,5, +0x294490,2, +0x2944a0,10, +0x294500,93, +0x294678,5, +0x294690,2, +0x2946a0,10, +0x294700,93, +0x29487c,1, +0x294a00,8, +0x294a24,15, +0x294a64,23, +0x294ac4,6, +0x294b00,4, +0x294b20,3, +0x294c00,2, +0x294c40,14, +0x294c80,9, +0x294d00,9, +0x294d2c,1, +0x294d80,6, +0x294e00,2, +0x294e0c,1, +0x294e14,5, +0x294e2c,1, +0x294e34,5, +0x294e4c,1, +0x294e54,5, +0x294e6c,1, +0x294e74,5, +0x294e8c,1, +0x294e94,5, +0x294eac,1, +0x294eb4,3, +0x295000,29, +0x295078,5, +0x295090,2, +0x2950a0,10, +0x295100,93, +0x295278,5, +0x295290,2, +0x2952a0,10, +0x295300,93, +0x295478,5, +0x295490,2, +0x2954a0,10, +0x295500,93, +0x295678,5, +0x295690,2, +0x2956a0,10, +0x295700,93, +0x29587c,1, +0x295a00,8, +0x295a24,15, +0x295a64,23, +0x295ac4,6, +0x295b00,4, +0x295b20,3, +0x295c00,2, +0x295c40,14, +0x295c80,9, +0x295d00,9, +0x295d2c,1, +0x295d80,6, +0x295e00,2, +0x295e0c,1, +0x295e14,5, +0x295e2c,1, +0x295e34,5, +0x295e4c,1, +0x295e54,5, +0x295e6c,1, +0x295e74,5, +0x295e8c,1, +0x295e94,5, +0x295eac,1, +0x295eb4,3, +0x296000,14, +0x296070,3, +0x296080,6, 0x296100,9, -0x296400,2, -0x29640c,6, -0x296440,13, -0x296480,16, -0x296800,1, -0x296808,3, -0x29681c,8, -0x296840,3, -0x296850,3, -0x296880,1, -0x296888,3, -0x29689c,8, -0x2968c0,3, -0x2968d0,3, -0x296900,1, -0x296908,3, -0x29691c,8, -0x296940,3, -0x296950,3, -0x296980,1, -0x296988,3, -0x29699c,8, -0x2969c0,3, -0x2969d0,3, -0x296a00,1, -0x296a08,3, -0x296a1c,8, -0x296a40,3, -0x296a50,3, -0x296a80,1, -0x296a88,3, -0x296a9c,8, -0x296ac0,3, -0x296ad0,3, -0x296b00,1, -0x296b08,3, -0x296b1c,8, -0x296b40,3, -0x296b50,3, -0x296b80,1, -0x296b88,3, -0x296b9c,8, -0x296bc0,3, -0x296bd0,3, -0x296c00,1, -0x296c08,3, -0x296c1c,8, -0x296c40,3, -0x296c50,3, -0x296c80,2, -0x296c94,13, +0x296204,1, +0x29620c,6, +0x296240,13, +0x296280,16, +0x296400,8, +0x296424,15, +0x296464,15, +0x2964a4,15, +0x2964e4,23, +0x296544,6, +0x296580,10, +0x2965ac,1, +0x2965b4,5, +0x2965cc,1, +0x2965d4,5, +0x2965ec,1, +0x2965f4,13, +0x296680,7, +0x2966a0,5, +0x2966c0,5, +0x2966e0,3, +0x296800,19, +0x296850,10, +0x296880,19, +0x2968d0,10, +0x296900,19, +0x296950,10, +0x296980,19, +0x2969d0,10, +0x296a00,19, +0x296a50,10, +0x296a80,19, +0x296ad0,10, +0x296b00,19, +0x296b50,10, +0x296b80,19, +0x296bd0,10, +0x296c00,19, +0x296c50,10, +0x296c84,1, +0x296c94,8, +0x296cb8,9, +0x296ce0,4, 0x297000,6, 0x297020,3, -0x297034,1, 0x297040,7, 0x297060,6, 0x297100,5, 0x297138,1, 0x297144,1, -0x297400,1, -0x297418,1, -0x297434,1, -0x29752c,5, -0x297590,1, -0x2975ac,1, -0x2975d8,4, -0x297600,8, +0x297150,2, 0x298000,6, 0x298020,3, 0x298030,9, -0x298080,6, -0x298100,20, +0x298100,6, +0x298120,10, +0x298150,8, 0x298400,1, -0x298418,1, -0x298434,1, -0x29852c,4, -0x298590,1, +0x298428,1, +0x298450,1, +0x298478,1, +0x2984a0,8, 0x2985ac,1, 0x2985d8,4, -0x298600,8, +0x298600,6, +0x298620,6, +0x298640,3, +0x298800,6, +0x298820,3, +0x298830,4, +0x298858,2, +0x298864,1, +0x298874,3, +0x298898,2, +0x2988a4,1, +0x2988b4,3, 0x299000,6, 0x299020,6, 0x299040,3, 0x299080,14, 0x2990bc,1, 0x2990c4,13, -0x2990fc,6, -0x299120,5, -0x299190,10, -0x299200,16, -0x299244,32, -0x299300,26, +0x2990fc,5, +0x299120,4, +0x299140,3, +0x299180,3, +0x299190,3, +0x2991a0,1, +0x2991e0,6, +0x299200,20, +0x29925c,30, +0x299300,24, 0x299380,2, 0x2993a0,1, 0x2993c0,11, -0x299404,4, -0x299418,16, +0x299404,3, +0x299420,11, 0x299460,3, +0x299480,6, 0x299500,6, +0x299520,6, 0x299540,1, 0x299558,2, 0x299600,17, -0x299800,366, +0x299800,410, 0x29a000,6, 0x29a020,6, 0x29a040,3, 0x29a080,14, 0x29a0bc,1, 0x29a0c4,13, -0x29a0fc,6, -0x29a120,5, -0x29a190,10, -0x29a200,16, -0x29a244,32, -0x29a300,26, +0x29a0fc,5, +0x29a120,4, +0x29a140,3, +0x29a180,3, +0x29a190,3, +0x29a1a0,1, +0x29a1e0,6, +0x29a200,20, +0x29a25c,30, +0x29a300,24, 0x29a380,2, 0x29a3a0,1, 0x29a3c0,11, -0x29a404,4, -0x29a418,16, +0x29a404,3, +0x29a420,11, 0x29a460,3, +0x29a480,6, 0x29a500,6, +0x29a520,6, 0x29a540,1, 0x29a558,2, 0x29a600,17, -0x29a800,366, +0x29a800,410, 0x29b000,4, -0x29b020,9, -0x29b048,6, -0x29b064,6, -0x29b080,1, +0x29b020,25, +0x29b088,8, 0x29b100,4, -0x29b120,9, -0x29b148,6, -0x29b164,6, -0x29b180,1, -0x29b200,35, -0x29b290,6, -0x29b2b4,6, -0x29b2d0,5, -0x29b2e8,5, +0x29b120,25, +0x29b188,8, +0x29b200,34, 0x29b300,37, -0x29b400,6, -0x29b420,3, -0x29b438,4, -0x29b454,3, -0x29b478,4, -0x29b494,3, +0x29b400,16, +0x29b464,1, +0x29b474,3, +0x29b500,6, +0x29b520,2, +0x29b530,9, +0x29b570,10, +0x29b5a0,2, +0x29b5b0,9, +0x29b5f0,4, +0x29b620,7, +0x29b640,16, +0x29b700,6, +0x29b720,6, +0x29b740,6, +0x29b760,6, +0x29b780,3, 0x29b800,5, 0x29b818,1, 0x29b854,6, 0x29b880,2, 0x29b8a4,1, +0x29b8ac,2, 0x29ba00,28, -0x29ba7c,5, -0x29bab0,2, +0x29ba7c,13, +0x29bab4,1, 0x29babc,10, -0x29bb00,2, -0x29bb0c,7, +0x29bb04,1, +0x29bb0c,5, +0x29bb24,1, 0x29bb34,9, 0x29bb60,6, -0x29bb80,8, +0x29bb80,22, +0x29bbe0,3, +0x29bbf0,2, 0x29bc00,5, 0x29bc18,1, 0x29bc54,6, 0x29bc80,2, 0x29bca4,1, +0x29bcac,2, 0x29be00,28, -0x29be7c,5, -0x29beb0,2, +0x29be7c,13, +0x29beb4,1, 0x29bebc,10, -0x29bf00,2, -0x29bf0c,7, +0x29bf04,1, +0x29bf0c,5, +0x29bf24,1, 0x29bf34,9, 0x29bf60,6, -0x29bf80,8, -0x29c000,4, -0x29c014,10, -0x29c040,1, -0x29c048,3, -0x29c058,1, -0x29c060,1, +0x29bf80,22, +0x29bfe0,3, +0x29bff0,2, +0x29c008,2, +0x29c014,11, +0x29c044,1, +0x29c04c,3, +0x29c05c,1, +0x29c064,1, 0x29c07c,1, -0x29c500,1, -0x29c518,2, +0x29c500,2, +0x29c518,1, +0x29c520,3, 0x29c540,6, -0x29c800,4, -0x29c814,10, -0x29c840,1, -0x29c848,3, -0x29c858,1, -0x29c860,1, +0x29c580,10, +0x29c808,2, +0x29c814,11, +0x29c844,1, +0x29c84c,3, +0x29c85c,1, +0x29c864,1, 0x29c87c,1, -0x29cd00,1, -0x29cd18,2, +0x29cd00,2, +0x29cd18,1, +0x29cd20,3, 0x29cd40,6, +0x29cd80,10, 0x29d800,2, -0x29d818,2, -0x29d834,2, -0x29d92c,6, -0x29d990,2, +0x29d828,2, +0x29d850,2, +0x29d878,2, +0x29d8a0,6, 0x29d9ac,1, 0x29d9d8,4, -0x29da00,16, -0x29dc00,3, -0x29dc20,2, -0x29dc40,1, +0x29da00,6, +0x29da20,6, +0x29da40,6, +0x29da60,6, +0x29da80,3, +0x29dc00,6, +0x29dc20,3, +0x29dc40,2, +0x29dc60,1, 0x2a0000,5, 0x2a0020,4, -0x2a0034,9, -0x2a005c,7, +0x2a0034,17, 0x2a0080,1, 0x2a00a0,6, 0x2a0100,5, 0x2a0120,4, -0x2a0134,9, -0x2a015c,7, +0x2a0134,17, 0x2a0180,1, 0x2a01a0,6, 0x2a0200,5, 0x2a0220,4, -0x2a0234,9, -0x2a025c,7, +0x2a0234,17, 0x2a0280,1, 0x2a02a0,6, 0x2a0300,5, 0x2a0320,4, -0x2a0334,9, -0x2a035c,7, +0x2a0334,17, 0x2a0380,1, 0x2a03a0,6, -0x2a0400,4, -0x2a0440,4, +0x2a0400,6, +0x2a0440,6, 0x2a0480,3, 0x2a04c0,3, -0x2a0500,5, -0x2a0518,8, +0x2a0500,6, +0x2a051c,7, +0x2a0540,1, 0x2a0c00,13, -0x2a0c40,11, +0x2a0c40,12, 0x2a0c80,13, -0x2a0cc0,11, +0x2a0cc0,12, 0x2a0d00,6, 0x2a0d20,6, -0x2a0e00,10, +0x2a0d80,14, +0x2a0dc0,2, 0x2a0e40,11, -0x2a0e80,8, +0x2a0e80,6, +0x2a0ea0,6, 0x2a1000,2, 0x2a1010,5, 0x2a1040,3, 0x2a1050,3, -0x2a1060,7, -0x2a1080,7, -0x2a10a0,7, -0x2a10c0,7, -0x2a1100,7, -0x2a1140,7, -0x2a1180,5, +0x2a1060,32, +0x2a1100,8, +0x2a1140,8, +0x2a1180,3, +0x2a1190,2, 0x2a119c,9, 0x2a1218,9, 0x2a1240,3, @@ -7748,75 +9741,84 @@ 0x2a12e4,1, 0x2a1400,8, 0x2a1424,2, -0x2a1500,3, +0x2a1500,5, 0x2a1520,4, -0x2a1540,3, +0x2a1540,5, 0x2a1560,4, 0x2a1800,24, -0x2a1864,2, -0x2a1880,6, -0x2a1900,12, -0x2a1940,6, -0x2a1960,6, +0x2a1864,5, +0x2a1880,8, +0x2a1900,13, 0x2a1980,4, +0x2a19a0,6, 0x2a19c0,6, 0x2a19dc,1, 0x2a1a00,6, 0x2a1a1c,1, 0x2a1a40,1, +0x2a1a60,1, 0x2a1a68,23, +0x2a1ac8,6, 0x2a1b00,17, +0x2a1b48,6, 0x2a1b80,12, +0x2a1c00,6, +0x2a1c20,6, +0x2a1c40,6, +0x2a1c60,3, +0x2a1d00,6, +0x2a1d20,6, +0x2a1d40,3, +0x2a1d80,6, +0x2a1da0,6, +0x2a1dc0,3, 0x2a2000,5, 0x2a2020,4, -0x2a2034,9, -0x2a205c,7, +0x2a2034,17, 0x2a2080,1, 0x2a20a0,6, 0x2a2100,5, 0x2a2120,4, -0x2a2134,9, -0x2a215c,7, +0x2a2134,17, 0x2a2180,1, 0x2a21a0,6, 0x2a2200,5, 0x2a2220,4, -0x2a2234,9, -0x2a225c,7, +0x2a2234,17, 0x2a2280,1, 0x2a22a0,6, 0x2a2300,5, 0x2a2320,4, -0x2a2334,9, -0x2a235c,7, +0x2a2334,17, 0x2a2380,1, 0x2a23a0,6, -0x2a2400,4, -0x2a2440,4, +0x2a2400,6, +0x2a2440,6, 0x2a2480,3, 0x2a24c0,3, -0x2a2500,5, -0x2a2518,8, +0x2a2500,6, +0x2a251c,7, +0x2a2540,1, 0x2a2c00,13, -0x2a2c40,11, +0x2a2c40,12, 0x2a2c80,13, -0x2a2cc0,11, +0x2a2cc0,12, 0x2a2d00,6, 0x2a2d20,6, -0x2a2e00,10, +0x2a2d80,14, +0x2a2dc0,2, 0x2a2e40,11, -0x2a2e80,8, +0x2a2e80,6, +0x2a2ea0,6, 0x2a3000,2, 0x2a3010,5, 0x2a3040,3, 0x2a3050,3, -0x2a3060,7, -0x2a3080,7, -0x2a30a0,7, -0x2a30c0,7, -0x2a3100,7, -0x2a3140,7, -0x2a3180,5, +0x2a3060,32, +0x2a3100,8, +0x2a3140,8, +0x2a3180,3, +0x2a3190,2, 0x2a319c,9, 0x2a3218,9, 0x2a3240,3, @@ -7829,349 +9831,409 @@ 0x2a32e4,1, 0x2a3400,8, 0x2a3424,2, -0x2a3500,3, +0x2a3500,5, 0x2a3520,4, -0x2a3540,3, +0x2a3540,5, 0x2a3560,4, 0x2a3800,24, -0x2a3864,2, -0x2a3880,6, -0x2a3900,12, -0x2a3940,6, -0x2a3960,6, +0x2a3864,5, +0x2a3880,8, +0x2a3900,13, 0x2a3980,4, +0x2a39a0,6, 0x2a39c0,6, 0x2a39dc,1, 0x2a3a00,6, 0x2a3a1c,1, 0x2a3a40,1, +0x2a3a60,1, 0x2a3a68,23, +0x2a3ac8,6, 0x2a3b00,17, +0x2a3b48,6, 0x2a3b80,12, -0x2a4000,4, -0x2a4014,6, -0x2a4030,5, -0x2a4080,4, -0x2a4094,6, -0x2a40b0,5, -0x2a4100,4, -0x2a4114,6, -0x2a4130,5, -0x2a4180,4, -0x2a4194,6, -0x2a41b0,5, -0x2a4200,3, -0x2a4210,23, -0x2a4500,3, -0x2a4510,12, -0x2a4580,3, -0x2a4590,12, -0x2a4600,3, -0x2a4610,12, -0x2a4680,3, -0x2a4690,12, -0x2a4700,4, -0x2a4718,13, -0x2a4800,25, -0x2a4880,25, -0x2a4900,25, -0x2a4980,25, -0x2a4a00,17, -0x2a4a50,3, -0x2a4a60,3, -0x2a5000,4, -0x2a5014,6, -0x2a5030,5, -0x2a5080,4, -0x2a5094,6, -0x2a50b0,5, -0x2a5100,4, -0x2a5114,6, -0x2a5130,5, -0x2a5180,4, -0x2a5194,6, -0x2a51b0,5, -0x2a5200,3, -0x2a5210,23, -0x2a5500,3, -0x2a5510,12, -0x2a5580,3, -0x2a5590,12, -0x2a5600,3, -0x2a5610,12, -0x2a5680,3, -0x2a5690,12, -0x2a5700,4, -0x2a5718,13, -0x2a5800,25, -0x2a5880,25, -0x2a5900,25, -0x2a5980,25, -0x2a5a00,17, -0x2a5a50,3, -0x2a5a60,3, -0x2a6000,13, -0x2a6040,22, -0x2a60a0,6, -0x2a60c0,3, +0x2a3c00,6, +0x2a3c20,6, +0x2a3c40,6, +0x2a3c60,3, +0x2a3d00,6, +0x2a3d20,6, +0x2a3d40,3, +0x2a3d80,6, +0x2a3da0,6, +0x2a3dc0,3, +0x2a4000,29, +0x2a4078,5, +0x2a4090,2, +0x2a40a0,10, +0x2a4100,93, +0x2a4278,5, +0x2a4290,2, +0x2a42a0,10, +0x2a4300,93, +0x2a4478,5, +0x2a4490,2, +0x2a44a0,10, +0x2a4500,93, +0x2a4678,5, +0x2a4690,2, +0x2a46a0,10, +0x2a4700,93, +0x2a487c,1, +0x2a4a00,8, +0x2a4a24,15, +0x2a4a64,23, +0x2a4ac4,6, +0x2a4b00,4, +0x2a4b20,3, +0x2a4c00,2, +0x2a4c40,14, +0x2a4c80,9, +0x2a4d00,9, +0x2a4d2c,1, +0x2a4d80,6, +0x2a4e00,2, +0x2a4e0c,1, +0x2a4e14,5, +0x2a4e2c,1, +0x2a4e34,5, +0x2a4e4c,1, +0x2a4e54,5, +0x2a4e6c,1, +0x2a4e74,5, +0x2a4e8c,1, +0x2a4e94,5, +0x2a4eac,1, +0x2a4eb4,3, +0x2a5000,29, +0x2a5078,5, +0x2a5090,2, +0x2a50a0,10, +0x2a5100,93, +0x2a5278,5, +0x2a5290,2, +0x2a52a0,10, +0x2a5300,93, +0x2a5478,5, +0x2a5490,2, +0x2a54a0,10, +0x2a5500,93, +0x2a5678,5, +0x2a5690,2, +0x2a56a0,10, +0x2a5700,93, +0x2a587c,1, +0x2a5a00,8, +0x2a5a24,15, +0x2a5a64,23, +0x2a5ac4,6, +0x2a5b00,4, +0x2a5b20,3, +0x2a5c00,2, +0x2a5c40,14, +0x2a5c80,9, +0x2a5d00,9, +0x2a5d2c,1, +0x2a5d80,6, +0x2a5e00,2, +0x2a5e0c,1, +0x2a5e14,5, +0x2a5e2c,1, +0x2a5e34,5, +0x2a5e4c,1, +0x2a5e54,5, +0x2a5e6c,1, +0x2a5e74,5, +0x2a5e8c,1, +0x2a5e94,5, +0x2a5eac,1, +0x2a5eb4,3, +0x2a6000,14, +0x2a6070,3, +0x2a6080,6, 0x2a6100,9, -0x2a6400,2, -0x2a640c,6, -0x2a6440,13, -0x2a6480,16, -0x2a6800,1, -0x2a6808,3, -0x2a681c,8, -0x2a6840,3, -0x2a6850,3, -0x2a6880,1, -0x2a6888,3, -0x2a689c,8, -0x2a68c0,3, -0x2a68d0,3, -0x2a6900,1, -0x2a6908,3, -0x2a691c,8, -0x2a6940,3, -0x2a6950,3, -0x2a6980,1, -0x2a6988,3, -0x2a699c,8, -0x2a69c0,3, -0x2a69d0,3, -0x2a6a00,1, -0x2a6a08,3, -0x2a6a1c,8, -0x2a6a40,3, -0x2a6a50,3, -0x2a6a80,1, -0x2a6a88,3, -0x2a6a9c,8, -0x2a6ac0,3, -0x2a6ad0,3, -0x2a6b00,1, -0x2a6b08,3, -0x2a6b1c,8, -0x2a6b40,3, -0x2a6b50,3, -0x2a6b80,1, -0x2a6b88,3, -0x2a6b9c,8, -0x2a6bc0,3, -0x2a6bd0,3, -0x2a6c00,1, -0x2a6c08,3, -0x2a6c1c,8, -0x2a6c40,3, -0x2a6c50,3, -0x2a6c80,2, -0x2a6c94,13, +0x2a6204,1, +0x2a620c,6, +0x2a6240,13, +0x2a6280,16, +0x2a6400,8, +0x2a6424,15, +0x2a6464,15, +0x2a64a4,15, +0x2a64e4,23, +0x2a6544,6, +0x2a6580,10, +0x2a65ac,1, +0x2a65b4,5, +0x2a65cc,1, +0x2a65d4,5, +0x2a65ec,1, +0x2a65f4,13, +0x2a6680,7, +0x2a66a0,5, +0x2a66c0,5, +0x2a66e0,3, +0x2a6800,19, +0x2a6850,10, +0x2a6880,19, +0x2a68d0,10, +0x2a6900,19, +0x2a6950,10, +0x2a6980,19, +0x2a69d0,10, +0x2a6a00,19, +0x2a6a50,10, +0x2a6a80,19, +0x2a6ad0,10, +0x2a6b00,19, +0x2a6b50,10, +0x2a6b80,19, +0x2a6bd0,10, +0x2a6c00,19, +0x2a6c50,10, +0x2a6c84,1, +0x2a6c94,8, +0x2a6cb8,9, +0x2a6ce0,4, 0x2a7000,6, 0x2a7020,3, -0x2a7034,1, 0x2a7040,7, 0x2a7060,6, 0x2a7100,5, 0x2a7138,1, 0x2a7144,1, -0x2a7400,1, -0x2a7418,1, -0x2a7434,1, -0x2a752c,5, -0x2a7590,1, -0x2a75ac,1, -0x2a75d8,4, -0x2a7600,8, +0x2a7150,2, 0x2a8000,6, 0x2a8020,3, 0x2a8030,9, -0x2a8080,6, -0x2a8100,20, +0x2a8100,6, +0x2a8120,10, +0x2a8150,8, 0x2a8400,1, -0x2a8418,1, -0x2a8434,1, -0x2a852c,4, -0x2a8590,1, +0x2a8428,1, +0x2a8450,1, +0x2a8478,1, +0x2a84a0,8, 0x2a85ac,1, 0x2a85d8,4, -0x2a8600,8, +0x2a8600,6, +0x2a8620,6, +0x2a8640,3, +0x2a8800,6, +0x2a8820,3, +0x2a8830,4, +0x2a8858,2, +0x2a8864,1, +0x2a8874,3, +0x2a8898,2, +0x2a88a4,1, +0x2a88b4,3, 0x2a9000,6, 0x2a9020,6, 0x2a9040,3, 0x2a9080,14, 0x2a90bc,1, 0x2a90c4,13, -0x2a90fc,6, -0x2a9120,5, -0x2a9190,10, -0x2a9200,16, -0x2a9244,32, -0x2a9300,26, +0x2a90fc,5, +0x2a9120,4, +0x2a9140,3, +0x2a9180,3, +0x2a9190,3, +0x2a91a0,1, +0x2a91e0,6, +0x2a9200,20, +0x2a925c,30, +0x2a9300,24, 0x2a9380,2, 0x2a93a0,1, 0x2a93c0,11, -0x2a9404,4, -0x2a9418,16, +0x2a9404,3, +0x2a9420,11, 0x2a9460,3, +0x2a9480,6, 0x2a9500,6, +0x2a9520,6, 0x2a9540,1, 0x2a9558,2, 0x2a9600,17, -0x2a9800,366, +0x2a9800,410, 0x2aa000,6, 0x2aa020,6, 0x2aa040,3, 0x2aa080,14, 0x2aa0bc,1, 0x2aa0c4,13, -0x2aa0fc,6, -0x2aa120,5, -0x2aa190,10, -0x2aa200,16, -0x2aa244,32, -0x2aa300,26, +0x2aa0fc,5, +0x2aa120,4, +0x2aa140,3, +0x2aa180,3, +0x2aa190,3, +0x2aa1a0,1, +0x2aa1e0,6, +0x2aa200,20, +0x2aa25c,30, +0x2aa300,24, 0x2aa380,2, 0x2aa3a0,1, 0x2aa3c0,11, -0x2aa404,4, -0x2aa418,16, +0x2aa404,3, +0x2aa420,11, 0x2aa460,3, +0x2aa480,6, 0x2aa500,6, +0x2aa520,6, 0x2aa540,1, 0x2aa558,2, 0x2aa600,17, -0x2aa800,366, +0x2aa800,410, 0x2ab000,4, -0x2ab020,9, -0x2ab048,6, -0x2ab064,6, -0x2ab080,1, +0x2ab020,25, +0x2ab088,8, 0x2ab100,4, -0x2ab120,9, -0x2ab148,6, -0x2ab164,6, -0x2ab180,1, -0x2ab200,35, -0x2ab290,6, -0x2ab2b4,6, -0x2ab2d0,5, -0x2ab2e8,5, +0x2ab120,25, +0x2ab188,8, +0x2ab200,34, 0x2ab300,37, -0x2ab400,6, -0x2ab420,3, -0x2ab438,4, -0x2ab454,3, -0x2ab478,4, -0x2ab494,3, +0x2ab400,16, +0x2ab464,1, +0x2ab474,3, +0x2ab500,6, +0x2ab520,2, +0x2ab530,9, +0x2ab570,10, +0x2ab5a0,2, +0x2ab5b0,9, +0x2ab5f0,4, +0x2ab620,7, +0x2ab640,16, +0x2ab700,6, +0x2ab720,6, +0x2ab740,6, +0x2ab760,6, +0x2ab780,3, 0x2ab800,5, 0x2ab818,1, 0x2ab854,6, 0x2ab880,2, 0x2ab8a4,1, +0x2ab8ac,2, 0x2aba00,28, -0x2aba7c,5, -0x2abab0,2, +0x2aba7c,13, +0x2abab4,1, 0x2ababc,10, -0x2abb00,2, -0x2abb0c,7, +0x2abb04,1, +0x2abb0c,5, +0x2abb24,1, 0x2abb34,9, 0x2abb60,6, -0x2abb80,8, +0x2abb80,22, +0x2abbe0,3, +0x2abbf0,2, 0x2abc00,5, 0x2abc18,1, 0x2abc54,6, 0x2abc80,2, 0x2abca4,1, +0x2abcac,2, 0x2abe00,28, -0x2abe7c,5, -0x2abeb0,2, +0x2abe7c,13, +0x2abeb4,1, 0x2abebc,10, -0x2abf00,2, -0x2abf0c,7, +0x2abf04,1, +0x2abf0c,5, +0x2abf24,1, 0x2abf34,9, 0x2abf60,6, -0x2abf80,8, -0x2ac000,4, -0x2ac014,10, -0x2ac040,1, -0x2ac048,3, -0x2ac058,1, -0x2ac060,1, +0x2abf80,22, +0x2abfe0,3, +0x2abff0,2, +0x2ac008,2, +0x2ac014,11, +0x2ac044,1, +0x2ac04c,3, +0x2ac05c,1, +0x2ac064,1, 0x2ac07c,1, -0x2ac500,1, -0x2ac518,2, +0x2ac500,2, +0x2ac518,1, +0x2ac520,3, 0x2ac540,6, -0x2ac800,4, -0x2ac814,10, -0x2ac840,1, -0x2ac848,3, -0x2ac858,1, -0x2ac860,1, +0x2ac580,10, +0x2ac808,2, +0x2ac814,11, +0x2ac844,1, +0x2ac84c,3, +0x2ac85c,1, +0x2ac864,1, 0x2ac87c,1, -0x2acd00,1, -0x2acd18,2, +0x2acd00,2, +0x2acd18,1, +0x2acd20,3, 0x2acd40,6, +0x2acd80,10, 0x2ad800,2, -0x2ad818,2, -0x2ad834,2, -0x2ad92c,6, -0x2ad990,2, +0x2ad828,2, +0x2ad850,2, +0x2ad878,2, +0x2ad8a0,6, 0x2ad9ac,1, 0x2ad9d8,4, -0x2ada00,16, -0x2adc00,3, -0x2adc20,2, -0x2adc40,1, +0x2ada00,6, +0x2ada20,6, +0x2ada40,6, +0x2ada60,6, +0x2ada80,3, +0x2adc00,6, +0x2adc20,3, +0x2adc40,2, +0x2adc60,1, 0x2b0000,5, 0x2b0020,4, -0x2b0034,9, -0x2b005c,7, +0x2b0034,17, 0x2b0080,1, 0x2b00a0,6, 0x2b0100,5, 0x2b0120,4, -0x2b0134,9, -0x2b015c,7, +0x2b0134,17, 0x2b0180,1, 0x2b01a0,6, 0x2b0200,5, 0x2b0220,4, -0x2b0234,9, -0x2b025c,7, +0x2b0234,17, 0x2b0280,1, 0x2b02a0,6, 0x2b0300,5, 0x2b0320,4, -0x2b0334,9, -0x2b035c,7, +0x2b0334,17, 0x2b0380,1, 0x2b03a0,6, -0x2b0400,4, -0x2b0440,4, +0x2b0400,6, +0x2b0440,6, 0x2b0480,3, 0x2b04c0,3, -0x2b0500,5, -0x2b0518,8, +0x2b0500,6, +0x2b051c,7, +0x2b0540,1, 0x2b0c00,13, -0x2b0c40,11, +0x2b0c40,12, 0x2b0c80,13, -0x2b0cc0,11, +0x2b0cc0,12, 0x2b0d00,6, 0x2b0d20,6, -0x2b0e00,10, +0x2b0d80,14, +0x2b0dc0,2, 0x2b0e40,11, -0x2b0e80,8, +0x2b0e80,6, +0x2b0ea0,6, 0x2b1000,2, 0x2b1010,5, 0x2b1040,3, 0x2b1050,3, -0x2b1060,7, -0x2b1080,7, -0x2b10a0,7, -0x2b10c0,7, -0x2b1100,7, -0x2b1140,7, -0x2b1180,5, +0x2b1060,32, +0x2b1100,8, +0x2b1140,8, +0x2b1180,3, +0x2b1190,2, 0x2b119c,9, 0x2b1218,9, 0x2b1240,3, @@ -8184,75 +10246,84 @@ 0x2b12e4,1, 0x2b1400,8, 0x2b1424,2, -0x2b1500,3, +0x2b1500,5, 0x2b1520,4, -0x2b1540,3, +0x2b1540,5, 0x2b1560,4, 0x2b1800,24, -0x2b1864,2, -0x2b1880,6, -0x2b1900,12, -0x2b1940,6, -0x2b1960,6, +0x2b1864,5, +0x2b1880,8, +0x2b1900,13, 0x2b1980,4, +0x2b19a0,6, 0x2b19c0,6, 0x2b19dc,1, 0x2b1a00,6, 0x2b1a1c,1, 0x2b1a40,1, +0x2b1a60,1, 0x2b1a68,23, +0x2b1ac8,6, 0x2b1b00,17, +0x2b1b48,6, 0x2b1b80,12, +0x2b1c00,6, +0x2b1c20,6, +0x2b1c40,6, +0x2b1c60,3, +0x2b1d00,6, +0x2b1d20,6, +0x2b1d40,3, +0x2b1d80,6, +0x2b1da0,6, +0x2b1dc0,3, 0x2b2000,5, 0x2b2020,4, -0x2b2034,9, -0x2b205c,7, +0x2b2034,17, 0x2b2080,1, 0x2b20a0,6, 0x2b2100,5, 0x2b2120,4, -0x2b2134,9, -0x2b215c,7, +0x2b2134,17, 0x2b2180,1, 0x2b21a0,6, 0x2b2200,5, 0x2b2220,4, -0x2b2234,9, -0x2b225c,7, +0x2b2234,17, 0x2b2280,1, 0x2b22a0,6, 0x2b2300,5, 0x2b2320,4, -0x2b2334,9, -0x2b235c,7, +0x2b2334,17, 0x2b2380,1, 0x2b23a0,6, -0x2b2400,4, -0x2b2440,4, +0x2b2400,6, +0x2b2440,6, 0x2b2480,3, 0x2b24c0,3, -0x2b2500,5, -0x2b2518,8, +0x2b2500,6, +0x2b251c,7, +0x2b2540,1, 0x2b2c00,13, -0x2b2c40,11, +0x2b2c40,12, 0x2b2c80,13, -0x2b2cc0,11, +0x2b2cc0,12, 0x2b2d00,6, 0x2b2d20,6, -0x2b2e00,10, +0x2b2d80,14, +0x2b2dc0,2, 0x2b2e40,11, -0x2b2e80,8, +0x2b2e80,6, +0x2b2ea0,6, 0x2b3000,2, 0x2b3010,5, 0x2b3040,3, 0x2b3050,3, -0x2b3060,7, -0x2b3080,7, -0x2b30a0,7, -0x2b30c0,7, -0x2b3100,7, -0x2b3140,7, -0x2b3180,5, +0x2b3060,32, +0x2b3100,8, +0x2b3140,8, +0x2b3180,3, +0x2b3190,2, 0x2b319c,9, 0x2b3218,9, 0x2b3240,3, @@ -8265,349 +10336,409 @@ 0x2b32e4,1, 0x2b3400,8, 0x2b3424,2, -0x2b3500,3, +0x2b3500,5, 0x2b3520,4, -0x2b3540,3, +0x2b3540,5, 0x2b3560,4, 0x2b3800,24, -0x2b3864,2, -0x2b3880,6, -0x2b3900,12, -0x2b3940,6, -0x2b3960,6, +0x2b3864,5, +0x2b3880,8, +0x2b3900,13, 0x2b3980,4, +0x2b39a0,6, 0x2b39c0,6, 0x2b39dc,1, 0x2b3a00,6, 0x2b3a1c,1, 0x2b3a40,1, +0x2b3a60,1, 0x2b3a68,23, +0x2b3ac8,6, 0x2b3b00,17, +0x2b3b48,6, 0x2b3b80,12, -0x2b4000,4, -0x2b4014,6, -0x2b4030,5, -0x2b4080,4, -0x2b4094,6, -0x2b40b0,5, -0x2b4100,4, -0x2b4114,6, -0x2b4130,5, -0x2b4180,4, -0x2b4194,6, -0x2b41b0,5, -0x2b4200,3, -0x2b4210,23, -0x2b4500,3, -0x2b4510,12, -0x2b4580,3, -0x2b4590,12, -0x2b4600,3, -0x2b4610,12, -0x2b4680,3, -0x2b4690,12, -0x2b4700,4, -0x2b4718,13, -0x2b4800,25, -0x2b4880,25, -0x2b4900,25, -0x2b4980,25, -0x2b4a00,17, -0x2b4a50,3, -0x2b4a60,3, -0x2b5000,4, -0x2b5014,6, -0x2b5030,5, -0x2b5080,4, -0x2b5094,6, -0x2b50b0,5, -0x2b5100,4, -0x2b5114,6, -0x2b5130,5, -0x2b5180,4, -0x2b5194,6, -0x2b51b0,5, -0x2b5200,3, -0x2b5210,23, -0x2b5500,3, -0x2b5510,12, -0x2b5580,3, -0x2b5590,12, -0x2b5600,3, -0x2b5610,12, -0x2b5680,3, -0x2b5690,12, -0x2b5700,4, -0x2b5718,13, -0x2b5800,25, -0x2b5880,25, -0x2b5900,25, -0x2b5980,25, -0x2b5a00,17, -0x2b5a50,3, -0x2b5a60,3, -0x2b6000,13, -0x2b6040,22, -0x2b60a0,6, -0x2b60c0,3, +0x2b3c00,6, +0x2b3c20,6, +0x2b3c40,6, +0x2b3c60,3, +0x2b3d00,6, +0x2b3d20,6, +0x2b3d40,3, +0x2b3d80,6, +0x2b3da0,6, +0x2b3dc0,3, +0x2b4000,29, +0x2b4078,5, +0x2b4090,2, +0x2b40a0,10, +0x2b4100,93, +0x2b4278,5, +0x2b4290,2, +0x2b42a0,10, +0x2b4300,93, +0x2b4478,5, +0x2b4490,2, +0x2b44a0,10, +0x2b4500,93, +0x2b4678,5, +0x2b4690,2, +0x2b46a0,10, +0x2b4700,93, +0x2b487c,1, +0x2b4a00,8, +0x2b4a24,15, +0x2b4a64,23, +0x2b4ac4,6, +0x2b4b00,4, +0x2b4b20,3, +0x2b4c00,2, +0x2b4c40,14, +0x2b4c80,9, +0x2b4d00,9, +0x2b4d2c,1, +0x2b4d80,6, +0x2b4e00,2, +0x2b4e0c,1, +0x2b4e14,5, +0x2b4e2c,1, +0x2b4e34,5, +0x2b4e4c,1, +0x2b4e54,5, +0x2b4e6c,1, +0x2b4e74,5, +0x2b4e8c,1, +0x2b4e94,5, +0x2b4eac,1, +0x2b4eb4,3, +0x2b5000,29, +0x2b5078,5, +0x2b5090,2, +0x2b50a0,10, +0x2b5100,93, +0x2b5278,5, +0x2b5290,2, +0x2b52a0,10, +0x2b5300,93, +0x2b5478,5, +0x2b5490,2, +0x2b54a0,10, +0x2b5500,93, +0x2b5678,5, +0x2b5690,2, +0x2b56a0,10, +0x2b5700,93, +0x2b587c,1, +0x2b5a00,8, +0x2b5a24,15, +0x2b5a64,23, +0x2b5ac4,6, +0x2b5b00,4, +0x2b5b20,3, +0x2b5c00,2, +0x2b5c40,14, +0x2b5c80,9, +0x2b5d00,9, +0x2b5d2c,1, +0x2b5d80,6, +0x2b5e00,2, +0x2b5e0c,1, +0x2b5e14,5, +0x2b5e2c,1, +0x2b5e34,5, +0x2b5e4c,1, +0x2b5e54,5, +0x2b5e6c,1, +0x2b5e74,5, +0x2b5e8c,1, +0x2b5e94,5, +0x2b5eac,1, +0x2b5eb4,3, +0x2b6000,14, +0x2b6070,3, +0x2b6080,6, 0x2b6100,9, -0x2b6400,2, -0x2b640c,6, -0x2b6440,13, -0x2b6480,16, -0x2b6800,1, -0x2b6808,3, -0x2b681c,8, -0x2b6840,3, -0x2b6850,3, -0x2b6880,1, -0x2b6888,3, -0x2b689c,8, -0x2b68c0,3, -0x2b68d0,3, -0x2b6900,1, -0x2b6908,3, -0x2b691c,8, -0x2b6940,3, -0x2b6950,3, -0x2b6980,1, -0x2b6988,3, -0x2b699c,8, -0x2b69c0,3, -0x2b69d0,3, -0x2b6a00,1, -0x2b6a08,3, -0x2b6a1c,8, -0x2b6a40,3, -0x2b6a50,3, -0x2b6a80,1, -0x2b6a88,3, -0x2b6a9c,8, -0x2b6ac0,3, -0x2b6ad0,3, -0x2b6b00,1, -0x2b6b08,3, -0x2b6b1c,8, -0x2b6b40,3, -0x2b6b50,3, -0x2b6b80,1, -0x2b6b88,3, -0x2b6b9c,8, -0x2b6bc0,3, -0x2b6bd0,3, -0x2b6c00,1, -0x2b6c08,3, -0x2b6c1c,8, -0x2b6c40,3, -0x2b6c50,3, -0x2b6c80,2, -0x2b6c94,13, +0x2b6204,1, +0x2b620c,6, +0x2b6240,13, +0x2b6280,16, +0x2b6400,8, +0x2b6424,15, +0x2b6464,15, +0x2b64a4,15, +0x2b64e4,23, +0x2b6544,6, +0x2b6580,10, +0x2b65ac,1, +0x2b65b4,5, +0x2b65cc,1, +0x2b65d4,5, +0x2b65ec,1, +0x2b65f4,13, +0x2b6680,7, +0x2b66a0,5, +0x2b66c0,5, +0x2b66e0,3, +0x2b6800,19, +0x2b6850,10, +0x2b6880,19, +0x2b68d0,10, +0x2b6900,19, +0x2b6950,10, +0x2b6980,19, +0x2b69d0,10, +0x2b6a00,19, +0x2b6a50,10, +0x2b6a80,19, +0x2b6ad0,10, +0x2b6b00,19, +0x2b6b50,10, +0x2b6b80,19, +0x2b6bd0,10, +0x2b6c00,19, +0x2b6c50,10, +0x2b6c84,1, +0x2b6c94,8, +0x2b6cb8,9, +0x2b6ce0,4, 0x2b7000,6, 0x2b7020,3, -0x2b7034,1, 0x2b7040,7, 0x2b7060,6, 0x2b7100,5, 0x2b7138,1, 0x2b7144,1, -0x2b7400,1, -0x2b7418,1, -0x2b7434,1, -0x2b752c,5, -0x2b7590,1, -0x2b75ac,1, -0x2b75d8,4, -0x2b7600,8, +0x2b7150,2, 0x2b8000,6, 0x2b8020,3, 0x2b8030,9, -0x2b8080,6, -0x2b8100,20, +0x2b8100,6, +0x2b8120,10, +0x2b8150,8, 0x2b8400,1, -0x2b8418,1, -0x2b8434,1, -0x2b852c,4, -0x2b8590,1, +0x2b8428,1, +0x2b8450,1, +0x2b8478,1, +0x2b84a0,8, 0x2b85ac,1, 0x2b85d8,4, -0x2b8600,8, +0x2b8600,6, +0x2b8620,6, +0x2b8640,3, +0x2b8800,6, +0x2b8820,3, +0x2b8830,4, +0x2b8858,2, +0x2b8864,1, +0x2b8874,3, +0x2b8898,2, +0x2b88a4,1, +0x2b88b4,3, 0x2b9000,6, 0x2b9020,6, 0x2b9040,3, 0x2b9080,14, 0x2b90bc,1, 0x2b90c4,13, -0x2b90fc,6, -0x2b9120,5, -0x2b9190,10, -0x2b9200,16, -0x2b9244,32, -0x2b9300,26, +0x2b90fc,5, +0x2b9120,4, +0x2b9140,3, +0x2b9180,3, +0x2b9190,3, +0x2b91a0,1, +0x2b91e0,6, +0x2b9200,20, +0x2b925c,30, +0x2b9300,24, 0x2b9380,2, 0x2b93a0,1, 0x2b93c0,11, -0x2b9404,4, -0x2b9418,16, +0x2b9404,3, +0x2b9420,11, 0x2b9460,3, +0x2b9480,6, 0x2b9500,6, +0x2b9520,6, 0x2b9540,1, 0x2b9558,2, 0x2b9600,17, -0x2b9800,366, +0x2b9800,410, 0x2ba000,6, 0x2ba020,6, 0x2ba040,3, 0x2ba080,14, 0x2ba0bc,1, 0x2ba0c4,13, -0x2ba0fc,6, -0x2ba120,5, -0x2ba190,10, -0x2ba200,16, -0x2ba244,32, -0x2ba300,26, +0x2ba0fc,5, +0x2ba120,4, +0x2ba140,3, +0x2ba180,3, +0x2ba190,3, +0x2ba1a0,1, +0x2ba1e0,6, +0x2ba200,20, +0x2ba25c,30, +0x2ba300,24, 0x2ba380,2, 0x2ba3a0,1, 0x2ba3c0,11, -0x2ba404,4, -0x2ba418,16, +0x2ba404,3, +0x2ba420,11, 0x2ba460,3, +0x2ba480,6, 0x2ba500,6, +0x2ba520,6, 0x2ba540,1, 0x2ba558,2, 0x2ba600,17, -0x2ba800,366, +0x2ba800,410, 0x2bb000,4, -0x2bb020,9, -0x2bb048,6, -0x2bb064,6, -0x2bb080,1, +0x2bb020,25, +0x2bb088,8, 0x2bb100,4, -0x2bb120,9, -0x2bb148,6, -0x2bb164,6, -0x2bb180,1, -0x2bb200,35, -0x2bb290,6, -0x2bb2b4,6, -0x2bb2d0,5, -0x2bb2e8,5, +0x2bb120,25, +0x2bb188,8, +0x2bb200,34, 0x2bb300,37, -0x2bb400,6, -0x2bb420,3, -0x2bb438,4, -0x2bb454,3, -0x2bb478,4, -0x2bb494,3, +0x2bb400,16, +0x2bb464,1, +0x2bb474,3, +0x2bb500,6, +0x2bb520,2, +0x2bb530,9, +0x2bb570,10, +0x2bb5a0,2, +0x2bb5b0,9, +0x2bb5f0,4, +0x2bb620,7, +0x2bb640,16, +0x2bb700,6, +0x2bb720,6, +0x2bb740,6, +0x2bb760,6, +0x2bb780,3, 0x2bb800,5, 0x2bb818,1, 0x2bb854,6, 0x2bb880,2, 0x2bb8a4,1, +0x2bb8ac,2, 0x2bba00,28, -0x2bba7c,5, -0x2bbab0,2, +0x2bba7c,13, +0x2bbab4,1, 0x2bbabc,10, -0x2bbb00,2, -0x2bbb0c,7, +0x2bbb04,1, +0x2bbb0c,5, +0x2bbb24,1, 0x2bbb34,9, 0x2bbb60,6, -0x2bbb80,8, +0x2bbb80,22, +0x2bbbe0,3, +0x2bbbf0,2, 0x2bbc00,5, 0x2bbc18,1, 0x2bbc54,6, 0x2bbc80,2, 0x2bbca4,1, +0x2bbcac,2, 0x2bbe00,28, -0x2bbe7c,5, -0x2bbeb0,2, +0x2bbe7c,13, +0x2bbeb4,1, 0x2bbebc,10, -0x2bbf00,2, -0x2bbf0c,7, +0x2bbf04,1, +0x2bbf0c,5, +0x2bbf24,1, 0x2bbf34,9, 0x2bbf60,6, -0x2bbf80,8, -0x2bc000,4, -0x2bc014,10, -0x2bc040,1, -0x2bc048,3, -0x2bc058,1, -0x2bc060,1, +0x2bbf80,22, +0x2bbfe0,3, +0x2bbff0,2, +0x2bc008,2, +0x2bc014,11, +0x2bc044,1, +0x2bc04c,3, +0x2bc05c,1, +0x2bc064,1, 0x2bc07c,1, -0x2bc500,1, -0x2bc518,2, +0x2bc500,2, +0x2bc518,1, +0x2bc520,3, 0x2bc540,6, -0x2bc800,4, -0x2bc814,10, -0x2bc840,1, -0x2bc848,3, -0x2bc858,1, -0x2bc860,1, +0x2bc580,10, +0x2bc808,2, +0x2bc814,11, +0x2bc844,1, +0x2bc84c,3, +0x2bc85c,1, +0x2bc864,1, 0x2bc87c,1, -0x2bcd00,1, -0x2bcd18,2, +0x2bcd00,2, +0x2bcd18,1, +0x2bcd20,3, 0x2bcd40,6, +0x2bcd80,10, 0x2bd800,2, -0x2bd818,2, -0x2bd834,2, -0x2bd92c,6, -0x2bd990,2, +0x2bd828,2, +0x2bd850,2, +0x2bd878,2, +0x2bd8a0,6, 0x2bd9ac,1, 0x2bd9d8,4, -0x2bda00,16, -0x2bdc00,3, -0x2bdc20,2, -0x2bdc40,1, +0x2bda00,6, +0x2bda20,6, +0x2bda40,6, +0x2bda60,6, +0x2bda80,3, +0x2bdc00,6, +0x2bdc20,3, +0x2bdc40,2, +0x2bdc60,1, 0x2c0000,5, 0x2c0020,4, -0x2c0034,9, -0x2c005c,7, +0x2c0034,17, 0x2c0080,1, 0x2c00a0,6, 0x2c0100,5, 0x2c0120,4, -0x2c0134,9, -0x2c015c,7, +0x2c0134,17, 0x2c0180,1, 0x2c01a0,6, 0x2c0200,5, 0x2c0220,4, -0x2c0234,9, -0x2c025c,7, +0x2c0234,17, 0x2c0280,1, 0x2c02a0,6, 0x2c0300,5, 0x2c0320,4, -0x2c0334,9, -0x2c035c,7, +0x2c0334,17, 0x2c0380,1, 0x2c03a0,6, -0x2c0400,4, -0x2c0440,4, +0x2c0400,6, +0x2c0440,6, 0x2c0480,3, 0x2c04c0,3, -0x2c0500,5, -0x2c0518,8, +0x2c0500,6, +0x2c051c,7, +0x2c0540,1, 0x2c0c00,13, -0x2c0c40,11, +0x2c0c40,12, 0x2c0c80,13, -0x2c0cc0,11, +0x2c0cc0,12, 0x2c0d00,6, 0x2c0d20,6, -0x2c0e00,10, +0x2c0d80,14, +0x2c0dc0,2, 0x2c0e40,11, -0x2c0e80,8, +0x2c0e80,6, +0x2c0ea0,6, 0x2c1000,2, 0x2c1010,5, 0x2c1040,3, 0x2c1050,3, -0x2c1060,7, -0x2c1080,7, -0x2c10a0,7, -0x2c10c0,7, -0x2c1100,7, -0x2c1140,7, -0x2c1180,5, +0x2c1060,32, +0x2c1100,8, +0x2c1140,8, +0x2c1180,3, +0x2c1190,2, 0x2c119c,9, 0x2c1218,9, 0x2c1240,3, @@ -8620,75 +10751,84 @@ 0x2c12e4,1, 0x2c1400,8, 0x2c1424,2, -0x2c1500,3, +0x2c1500,5, 0x2c1520,4, -0x2c1540,3, +0x2c1540,5, 0x2c1560,4, 0x2c1800,24, -0x2c1864,2, -0x2c1880,6, -0x2c1900,12, -0x2c1940,6, -0x2c1960,6, +0x2c1864,5, +0x2c1880,8, +0x2c1900,13, 0x2c1980,4, +0x2c19a0,6, 0x2c19c0,6, 0x2c19dc,1, 0x2c1a00,6, 0x2c1a1c,1, 0x2c1a40,1, +0x2c1a60,1, 0x2c1a68,23, +0x2c1ac8,6, 0x2c1b00,17, +0x2c1b48,6, 0x2c1b80,12, +0x2c1c00,6, +0x2c1c20,6, +0x2c1c40,6, +0x2c1c60,3, +0x2c1d00,6, +0x2c1d20,6, +0x2c1d40,3, +0x2c1d80,6, +0x2c1da0,6, +0x2c1dc0,3, 0x2c2000,5, 0x2c2020,4, -0x2c2034,9, -0x2c205c,7, +0x2c2034,17, 0x2c2080,1, 0x2c20a0,6, 0x2c2100,5, 0x2c2120,4, -0x2c2134,9, -0x2c215c,7, +0x2c2134,17, 0x2c2180,1, 0x2c21a0,6, 0x2c2200,5, 0x2c2220,4, -0x2c2234,9, -0x2c225c,7, +0x2c2234,17, 0x2c2280,1, 0x2c22a0,6, 0x2c2300,5, 0x2c2320,4, -0x2c2334,9, -0x2c235c,7, +0x2c2334,17, 0x2c2380,1, 0x2c23a0,6, -0x2c2400,4, -0x2c2440,4, +0x2c2400,6, +0x2c2440,6, 0x2c2480,3, 0x2c24c0,3, -0x2c2500,5, -0x2c2518,8, +0x2c2500,6, +0x2c251c,7, +0x2c2540,1, 0x2c2c00,13, -0x2c2c40,11, +0x2c2c40,12, 0x2c2c80,13, -0x2c2cc0,11, +0x2c2cc0,12, 0x2c2d00,6, 0x2c2d20,6, -0x2c2e00,10, +0x2c2d80,14, +0x2c2dc0,2, 0x2c2e40,11, -0x2c2e80,8, +0x2c2e80,6, +0x2c2ea0,6, 0x2c3000,2, 0x2c3010,5, 0x2c3040,3, 0x2c3050,3, -0x2c3060,7, -0x2c3080,7, -0x2c30a0,7, -0x2c30c0,7, -0x2c3100,7, -0x2c3140,7, -0x2c3180,5, +0x2c3060,32, +0x2c3100,8, +0x2c3140,8, +0x2c3180,3, +0x2c3190,2, 0x2c319c,9, 0x2c3218,9, 0x2c3240,3, @@ -8701,349 +10841,409 @@ 0x2c32e4,1, 0x2c3400,8, 0x2c3424,2, -0x2c3500,3, +0x2c3500,5, 0x2c3520,4, -0x2c3540,3, +0x2c3540,5, 0x2c3560,4, 0x2c3800,24, -0x2c3864,2, -0x2c3880,6, -0x2c3900,12, -0x2c3940,6, -0x2c3960,6, +0x2c3864,5, +0x2c3880,8, +0x2c3900,13, 0x2c3980,4, +0x2c39a0,6, 0x2c39c0,6, 0x2c39dc,1, 0x2c3a00,6, 0x2c3a1c,1, 0x2c3a40,1, +0x2c3a60,1, 0x2c3a68,23, +0x2c3ac8,6, 0x2c3b00,17, +0x2c3b48,6, 0x2c3b80,12, -0x2c4000,4, -0x2c4014,6, -0x2c4030,5, -0x2c4080,4, -0x2c4094,6, -0x2c40b0,5, -0x2c4100,4, -0x2c4114,6, -0x2c4130,5, -0x2c4180,4, -0x2c4194,6, -0x2c41b0,5, -0x2c4200,3, -0x2c4210,23, -0x2c4500,3, -0x2c4510,12, -0x2c4580,3, -0x2c4590,12, -0x2c4600,3, -0x2c4610,12, -0x2c4680,3, -0x2c4690,12, -0x2c4700,4, -0x2c4718,13, -0x2c4800,25, -0x2c4880,25, -0x2c4900,25, -0x2c4980,25, -0x2c4a00,17, -0x2c4a50,3, -0x2c4a60,3, -0x2c5000,4, -0x2c5014,6, -0x2c5030,5, -0x2c5080,4, -0x2c5094,6, -0x2c50b0,5, -0x2c5100,4, -0x2c5114,6, -0x2c5130,5, -0x2c5180,4, -0x2c5194,6, -0x2c51b0,5, -0x2c5200,3, -0x2c5210,23, -0x2c5500,3, -0x2c5510,12, -0x2c5580,3, -0x2c5590,12, -0x2c5600,3, -0x2c5610,12, -0x2c5680,3, -0x2c5690,12, -0x2c5700,4, -0x2c5718,13, -0x2c5800,25, -0x2c5880,25, -0x2c5900,25, -0x2c5980,25, -0x2c5a00,17, -0x2c5a50,3, -0x2c5a60,3, -0x2c6000,13, -0x2c6040,22, -0x2c60a0,6, -0x2c60c0,3, +0x2c3c00,6, +0x2c3c20,6, +0x2c3c40,6, +0x2c3c60,3, +0x2c3d00,6, +0x2c3d20,6, +0x2c3d40,3, +0x2c3d80,6, +0x2c3da0,6, +0x2c3dc0,3, +0x2c4000,29, +0x2c4078,5, +0x2c4090,2, +0x2c40a0,10, +0x2c4100,93, +0x2c4278,5, +0x2c4290,2, +0x2c42a0,10, +0x2c4300,93, +0x2c4478,5, +0x2c4490,2, +0x2c44a0,10, +0x2c4500,93, +0x2c4678,5, +0x2c4690,2, +0x2c46a0,10, +0x2c4700,93, +0x2c487c,1, +0x2c4a00,8, +0x2c4a24,15, +0x2c4a64,23, +0x2c4ac4,6, +0x2c4b00,4, +0x2c4b20,3, +0x2c4c00,2, +0x2c4c40,14, +0x2c4c80,9, +0x2c4d00,9, +0x2c4d2c,1, +0x2c4d80,6, +0x2c4e00,2, +0x2c4e0c,1, +0x2c4e14,5, +0x2c4e2c,1, +0x2c4e34,5, +0x2c4e4c,1, +0x2c4e54,5, +0x2c4e6c,1, +0x2c4e74,5, +0x2c4e8c,1, +0x2c4e94,5, +0x2c4eac,1, +0x2c4eb4,3, +0x2c5000,29, +0x2c5078,5, +0x2c5090,2, +0x2c50a0,10, +0x2c5100,93, +0x2c5278,5, +0x2c5290,2, +0x2c52a0,10, +0x2c5300,93, +0x2c5478,5, +0x2c5490,2, +0x2c54a0,10, +0x2c5500,93, +0x2c5678,5, +0x2c5690,2, +0x2c56a0,10, +0x2c5700,93, +0x2c587c,1, +0x2c5a00,8, +0x2c5a24,15, +0x2c5a64,23, +0x2c5ac4,6, +0x2c5b00,4, +0x2c5b20,3, +0x2c5c00,2, +0x2c5c40,14, +0x2c5c80,9, +0x2c5d00,9, +0x2c5d2c,1, +0x2c5d80,6, +0x2c5e00,2, +0x2c5e0c,1, +0x2c5e14,5, +0x2c5e2c,1, +0x2c5e34,5, +0x2c5e4c,1, +0x2c5e54,5, +0x2c5e6c,1, +0x2c5e74,5, +0x2c5e8c,1, +0x2c5e94,5, +0x2c5eac,1, +0x2c5eb4,3, +0x2c6000,14, +0x2c6070,3, +0x2c6080,6, 0x2c6100,9, -0x2c6400,2, -0x2c640c,6, -0x2c6440,13, -0x2c6480,16, -0x2c6800,1, -0x2c6808,3, -0x2c681c,8, -0x2c6840,3, -0x2c6850,3, -0x2c6880,1, -0x2c6888,3, -0x2c689c,8, -0x2c68c0,3, -0x2c68d0,3, -0x2c6900,1, -0x2c6908,3, -0x2c691c,8, -0x2c6940,3, -0x2c6950,3, -0x2c6980,1, -0x2c6988,3, -0x2c699c,8, -0x2c69c0,3, -0x2c69d0,3, -0x2c6a00,1, -0x2c6a08,3, -0x2c6a1c,8, -0x2c6a40,3, -0x2c6a50,3, -0x2c6a80,1, -0x2c6a88,3, -0x2c6a9c,8, -0x2c6ac0,3, -0x2c6ad0,3, -0x2c6b00,1, -0x2c6b08,3, -0x2c6b1c,8, -0x2c6b40,3, -0x2c6b50,3, -0x2c6b80,1, -0x2c6b88,3, -0x2c6b9c,8, -0x2c6bc0,3, -0x2c6bd0,3, -0x2c6c00,1, -0x2c6c08,3, -0x2c6c1c,8, -0x2c6c40,3, -0x2c6c50,3, -0x2c6c80,2, -0x2c6c94,13, +0x2c6204,1, +0x2c620c,6, +0x2c6240,13, +0x2c6280,16, +0x2c6400,8, +0x2c6424,15, +0x2c6464,15, +0x2c64a4,15, +0x2c64e4,23, +0x2c6544,6, +0x2c6580,10, +0x2c65ac,1, +0x2c65b4,5, +0x2c65cc,1, +0x2c65d4,5, +0x2c65ec,1, +0x2c65f4,13, +0x2c6680,7, +0x2c66a0,5, +0x2c66c0,5, +0x2c66e0,3, +0x2c6800,19, +0x2c6850,10, +0x2c6880,19, +0x2c68d0,10, +0x2c6900,19, +0x2c6950,10, +0x2c6980,19, +0x2c69d0,10, +0x2c6a00,19, +0x2c6a50,10, +0x2c6a80,19, +0x2c6ad0,10, +0x2c6b00,19, +0x2c6b50,10, +0x2c6b80,19, +0x2c6bd0,10, +0x2c6c00,19, +0x2c6c50,10, +0x2c6c84,1, +0x2c6c94,8, +0x2c6cb8,9, +0x2c6ce0,4, 0x2c7000,6, 0x2c7020,3, -0x2c7034,1, 0x2c7040,7, 0x2c7060,6, 0x2c7100,5, 0x2c7138,1, 0x2c7144,1, -0x2c7400,1, -0x2c7418,1, -0x2c7434,1, -0x2c752c,5, -0x2c7590,1, -0x2c75ac,1, -0x2c75d8,4, -0x2c7600,8, +0x2c7150,2, 0x2c8000,6, 0x2c8020,3, 0x2c8030,9, -0x2c8080,6, -0x2c8100,20, +0x2c8100,6, +0x2c8120,10, +0x2c8150,8, 0x2c8400,1, -0x2c8418,1, -0x2c8434,1, -0x2c852c,4, -0x2c8590,1, +0x2c8428,1, +0x2c8450,1, +0x2c8478,1, +0x2c84a0,8, 0x2c85ac,1, 0x2c85d8,4, -0x2c8600,8, +0x2c8600,6, +0x2c8620,6, +0x2c8640,3, +0x2c8800,6, +0x2c8820,3, +0x2c8830,4, +0x2c8858,2, +0x2c8864,1, +0x2c8874,3, +0x2c8898,2, +0x2c88a4,1, +0x2c88b4,3, 0x2c9000,6, 0x2c9020,6, 0x2c9040,3, 0x2c9080,14, 0x2c90bc,1, 0x2c90c4,13, -0x2c90fc,6, -0x2c9120,5, -0x2c9190,10, -0x2c9200,16, -0x2c9244,32, -0x2c9300,26, +0x2c90fc,5, +0x2c9120,4, +0x2c9140,3, +0x2c9180,3, +0x2c9190,3, +0x2c91a0,1, +0x2c91e0,6, +0x2c9200,20, +0x2c925c,30, +0x2c9300,24, 0x2c9380,2, 0x2c93a0,1, 0x2c93c0,11, -0x2c9404,4, -0x2c9418,16, +0x2c9404,3, +0x2c9420,11, 0x2c9460,3, +0x2c9480,6, 0x2c9500,6, +0x2c9520,6, 0x2c9540,1, 0x2c9558,2, 0x2c9600,17, -0x2c9800,366, +0x2c9800,410, 0x2ca000,6, 0x2ca020,6, 0x2ca040,3, 0x2ca080,14, 0x2ca0bc,1, 0x2ca0c4,13, -0x2ca0fc,6, -0x2ca120,5, -0x2ca190,10, -0x2ca200,16, -0x2ca244,32, -0x2ca300,26, +0x2ca0fc,5, +0x2ca120,4, +0x2ca140,3, +0x2ca180,3, +0x2ca190,3, +0x2ca1a0,1, +0x2ca1e0,6, +0x2ca200,20, +0x2ca25c,30, +0x2ca300,24, 0x2ca380,2, 0x2ca3a0,1, 0x2ca3c0,11, -0x2ca404,4, -0x2ca418,16, +0x2ca404,3, +0x2ca420,11, 0x2ca460,3, +0x2ca480,6, 0x2ca500,6, +0x2ca520,6, 0x2ca540,1, 0x2ca558,2, 0x2ca600,17, -0x2ca800,366, +0x2ca800,410, 0x2cb000,4, -0x2cb020,9, -0x2cb048,6, -0x2cb064,6, -0x2cb080,1, +0x2cb020,25, +0x2cb088,8, 0x2cb100,4, -0x2cb120,9, -0x2cb148,6, -0x2cb164,6, -0x2cb180,1, -0x2cb200,35, -0x2cb290,6, -0x2cb2b4,6, -0x2cb2d0,5, -0x2cb2e8,5, +0x2cb120,25, +0x2cb188,8, +0x2cb200,34, 0x2cb300,37, -0x2cb400,6, -0x2cb420,3, -0x2cb438,4, -0x2cb454,3, -0x2cb478,4, -0x2cb494,3, +0x2cb400,16, +0x2cb464,1, +0x2cb474,3, +0x2cb500,6, +0x2cb520,2, +0x2cb530,9, +0x2cb570,10, +0x2cb5a0,2, +0x2cb5b0,9, +0x2cb5f0,4, +0x2cb620,7, +0x2cb640,16, +0x2cb700,6, +0x2cb720,6, +0x2cb740,6, +0x2cb760,6, +0x2cb780,3, 0x2cb800,5, 0x2cb818,1, 0x2cb854,6, 0x2cb880,2, 0x2cb8a4,1, +0x2cb8ac,2, 0x2cba00,28, -0x2cba7c,5, -0x2cbab0,2, +0x2cba7c,13, +0x2cbab4,1, 0x2cbabc,10, -0x2cbb00,2, -0x2cbb0c,7, +0x2cbb04,1, +0x2cbb0c,5, +0x2cbb24,1, 0x2cbb34,9, 0x2cbb60,6, -0x2cbb80,8, +0x2cbb80,22, +0x2cbbe0,3, +0x2cbbf0,2, 0x2cbc00,5, 0x2cbc18,1, 0x2cbc54,6, 0x2cbc80,2, 0x2cbca4,1, +0x2cbcac,2, 0x2cbe00,28, -0x2cbe7c,5, -0x2cbeb0,2, +0x2cbe7c,13, +0x2cbeb4,1, 0x2cbebc,10, -0x2cbf00,2, -0x2cbf0c,7, +0x2cbf04,1, +0x2cbf0c,5, +0x2cbf24,1, 0x2cbf34,9, 0x2cbf60,6, -0x2cbf80,8, -0x2cc000,4, -0x2cc014,10, -0x2cc040,1, -0x2cc048,3, -0x2cc058,1, -0x2cc060,1, +0x2cbf80,22, +0x2cbfe0,3, +0x2cbff0,2, +0x2cc008,2, +0x2cc014,11, +0x2cc044,1, +0x2cc04c,3, +0x2cc05c,1, +0x2cc064,1, 0x2cc07c,1, -0x2cc500,1, -0x2cc518,2, +0x2cc500,2, +0x2cc518,1, +0x2cc520,3, 0x2cc540,6, -0x2cc800,4, -0x2cc814,10, -0x2cc840,1, -0x2cc848,3, -0x2cc858,1, -0x2cc860,1, +0x2cc580,10, +0x2cc808,2, +0x2cc814,11, +0x2cc844,1, +0x2cc84c,3, +0x2cc85c,1, +0x2cc864,1, 0x2cc87c,1, -0x2ccd00,1, -0x2ccd18,2, +0x2ccd00,2, +0x2ccd18,1, +0x2ccd20,3, 0x2ccd40,6, +0x2ccd80,10, 0x2cd800,2, -0x2cd818,2, -0x2cd834,2, -0x2cd92c,6, -0x2cd990,2, +0x2cd828,2, +0x2cd850,2, +0x2cd878,2, +0x2cd8a0,6, 0x2cd9ac,1, 0x2cd9d8,4, -0x2cda00,16, -0x2cdc00,3, -0x2cdc20,2, -0x2cdc40,1, +0x2cda00,6, +0x2cda20,6, +0x2cda40,6, +0x2cda60,6, +0x2cda80,3, +0x2cdc00,6, +0x2cdc20,3, +0x2cdc40,2, +0x2cdc60,1, 0x2d0000,5, 0x2d0020,4, -0x2d0034,9, -0x2d005c,7, +0x2d0034,17, 0x2d0080,1, 0x2d00a0,6, 0x2d0100,5, 0x2d0120,4, -0x2d0134,9, -0x2d015c,7, +0x2d0134,17, 0x2d0180,1, 0x2d01a0,6, 0x2d0200,5, 0x2d0220,4, -0x2d0234,9, -0x2d025c,7, +0x2d0234,17, 0x2d0280,1, 0x2d02a0,6, 0x2d0300,5, 0x2d0320,4, -0x2d0334,9, -0x2d035c,7, +0x2d0334,17, 0x2d0380,1, 0x2d03a0,6, -0x2d0400,4, -0x2d0440,4, +0x2d0400,6, +0x2d0440,6, 0x2d0480,3, 0x2d04c0,3, -0x2d0500,5, -0x2d0518,8, +0x2d0500,6, +0x2d051c,7, +0x2d0540,1, 0x2d0c00,13, -0x2d0c40,11, +0x2d0c40,12, 0x2d0c80,13, -0x2d0cc0,11, +0x2d0cc0,12, 0x2d0d00,6, 0x2d0d20,6, -0x2d0e00,10, +0x2d0d80,14, +0x2d0dc0,2, 0x2d0e40,11, -0x2d0e80,8, +0x2d0e80,6, +0x2d0ea0,6, 0x2d1000,2, 0x2d1010,5, 0x2d1040,3, 0x2d1050,3, -0x2d1060,7, -0x2d1080,7, -0x2d10a0,7, -0x2d10c0,7, -0x2d1100,7, -0x2d1140,7, -0x2d1180,5, +0x2d1060,32, +0x2d1100,8, +0x2d1140,8, +0x2d1180,3, +0x2d1190,2, 0x2d119c,9, 0x2d1218,9, 0x2d1240,3, @@ -9056,75 +11256,84 @@ 0x2d12e4,1, 0x2d1400,8, 0x2d1424,2, -0x2d1500,3, +0x2d1500,5, 0x2d1520,4, -0x2d1540,3, +0x2d1540,5, 0x2d1560,4, 0x2d1800,24, -0x2d1864,2, -0x2d1880,6, -0x2d1900,12, -0x2d1940,6, -0x2d1960,6, +0x2d1864,5, +0x2d1880,8, +0x2d1900,13, 0x2d1980,4, +0x2d19a0,6, 0x2d19c0,6, 0x2d19dc,1, 0x2d1a00,6, 0x2d1a1c,1, 0x2d1a40,1, +0x2d1a60,1, 0x2d1a68,23, +0x2d1ac8,6, 0x2d1b00,17, +0x2d1b48,6, 0x2d1b80,12, +0x2d1c00,6, +0x2d1c20,6, +0x2d1c40,6, +0x2d1c60,3, +0x2d1d00,6, +0x2d1d20,6, +0x2d1d40,3, +0x2d1d80,6, +0x2d1da0,6, +0x2d1dc0,3, 0x2d2000,5, 0x2d2020,4, -0x2d2034,9, -0x2d205c,7, +0x2d2034,17, 0x2d2080,1, 0x2d20a0,6, 0x2d2100,5, 0x2d2120,4, -0x2d2134,9, -0x2d215c,7, +0x2d2134,17, 0x2d2180,1, 0x2d21a0,6, 0x2d2200,5, 0x2d2220,4, -0x2d2234,9, -0x2d225c,7, +0x2d2234,17, 0x2d2280,1, 0x2d22a0,6, 0x2d2300,5, 0x2d2320,4, -0x2d2334,9, -0x2d235c,7, +0x2d2334,17, 0x2d2380,1, 0x2d23a0,6, -0x2d2400,4, -0x2d2440,4, +0x2d2400,6, +0x2d2440,6, 0x2d2480,3, 0x2d24c0,3, -0x2d2500,5, -0x2d2518,8, +0x2d2500,6, +0x2d251c,7, +0x2d2540,1, 0x2d2c00,13, -0x2d2c40,11, +0x2d2c40,12, 0x2d2c80,13, -0x2d2cc0,11, +0x2d2cc0,12, 0x2d2d00,6, 0x2d2d20,6, -0x2d2e00,10, +0x2d2d80,14, +0x2d2dc0,2, 0x2d2e40,11, -0x2d2e80,8, +0x2d2e80,6, +0x2d2ea0,6, 0x2d3000,2, 0x2d3010,5, 0x2d3040,3, 0x2d3050,3, -0x2d3060,7, -0x2d3080,7, -0x2d30a0,7, -0x2d30c0,7, -0x2d3100,7, -0x2d3140,7, -0x2d3180,5, +0x2d3060,32, +0x2d3100,8, +0x2d3140,8, +0x2d3180,3, +0x2d3190,2, 0x2d319c,9, 0x2d3218,9, 0x2d3240,3, @@ -9137,349 +11346,409 @@ 0x2d32e4,1, 0x2d3400,8, 0x2d3424,2, -0x2d3500,3, +0x2d3500,5, 0x2d3520,4, -0x2d3540,3, +0x2d3540,5, 0x2d3560,4, 0x2d3800,24, -0x2d3864,2, -0x2d3880,6, -0x2d3900,12, -0x2d3940,6, -0x2d3960,6, +0x2d3864,5, +0x2d3880,8, +0x2d3900,13, 0x2d3980,4, +0x2d39a0,6, 0x2d39c0,6, 0x2d39dc,1, 0x2d3a00,6, 0x2d3a1c,1, 0x2d3a40,1, +0x2d3a60,1, 0x2d3a68,23, +0x2d3ac8,6, 0x2d3b00,17, +0x2d3b48,6, 0x2d3b80,12, -0x2d4000,4, -0x2d4014,6, -0x2d4030,5, -0x2d4080,4, -0x2d4094,6, -0x2d40b0,5, -0x2d4100,4, -0x2d4114,6, -0x2d4130,5, -0x2d4180,4, -0x2d4194,6, -0x2d41b0,5, -0x2d4200,3, -0x2d4210,23, -0x2d4500,3, -0x2d4510,12, -0x2d4580,3, -0x2d4590,12, -0x2d4600,3, -0x2d4610,12, -0x2d4680,3, -0x2d4690,12, -0x2d4700,4, -0x2d4718,13, -0x2d4800,25, -0x2d4880,25, -0x2d4900,25, -0x2d4980,25, -0x2d4a00,17, -0x2d4a50,3, -0x2d4a60,3, -0x2d5000,4, -0x2d5014,6, -0x2d5030,5, -0x2d5080,4, -0x2d5094,6, -0x2d50b0,5, -0x2d5100,4, -0x2d5114,6, -0x2d5130,5, -0x2d5180,4, -0x2d5194,6, -0x2d51b0,5, -0x2d5200,3, -0x2d5210,23, -0x2d5500,3, -0x2d5510,12, -0x2d5580,3, -0x2d5590,12, -0x2d5600,3, -0x2d5610,12, -0x2d5680,3, -0x2d5690,12, -0x2d5700,4, -0x2d5718,13, -0x2d5800,25, -0x2d5880,25, -0x2d5900,25, -0x2d5980,25, -0x2d5a00,17, -0x2d5a50,3, -0x2d5a60,3, -0x2d6000,13, -0x2d6040,22, -0x2d60a0,6, -0x2d60c0,3, +0x2d3c00,6, +0x2d3c20,6, +0x2d3c40,6, +0x2d3c60,3, +0x2d3d00,6, +0x2d3d20,6, +0x2d3d40,3, +0x2d3d80,6, +0x2d3da0,6, +0x2d3dc0,3, +0x2d4000,29, +0x2d4078,5, +0x2d4090,2, +0x2d40a0,10, +0x2d4100,93, +0x2d4278,5, +0x2d4290,2, +0x2d42a0,10, +0x2d4300,93, +0x2d4478,5, +0x2d4490,2, +0x2d44a0,10, +0x2d4500,93, +0x2d4678,5, +0x2d4690,2, +0x2d46a0,10, +0x2d4700,93, +0x2d487c,1, +0x2d4a00,8, +0x2d4a24,15, +0x2d4a64,23, +0x2d4ac4,6, +0x2d4b00,4, +0x2d4b20,3, +0x2d4c00,2, +0x2d4c40,14, +0x2d4c80,9, +0x2d4d00,9, +0x2d4d2c,1, +0x2d4d80,6, +0x2d4e00,2, +0x2d4e0c,1, +0x2d4e14,5, +0x2d4e2c,1, +0x2d4e34,5, +0x2d4e4c,1, +0x2d4e54,5, +0x2d4e6c,1, +0x2d4e74,5, +0x2d4e8c,1, +0x2d4e94,5, +0x2d4eac,1, +0x2d4eb4,3, +0x2d5000,29, +0x2d5078,5, +0x2d5090,2, +0x2d50a0,10, +0x2d5100,93, +0x2d5278,5, +0x2d5290,2, +0x2d52a0,10, +0x2d5300,93, +0x2d5478,5, +0x2d5490,2, +0x2d54a0,10, +0x2d5500,93, +0x2d5678,5, +0x2d5690,2, +0x2d56a0,10, +0x2d5700,93, +0x2d587c,1, +0x2d5a00,8, +0x2d5a24,15, +0x2d5a64,23, +0x2d5ac4,6, +0x2d5b00,4, +0x2d5b20,3, +0x2d5c00,2, +0x2d5c40,14, +0x2d5c80,9, +0x2d5d00,9, +0x2d5d2c,1, +0x2d5d80,6, +0x2d5e00,2, +0x2d5e0c,1, +0x2d5e14,5, +0x2d5e2c,1, +0x2d5e34,5, +0x2d5e4c,1, +0x2d5e54,5, +0x2d5e6c,1, +0x2d5e74,5, +0x2d5e8c,1, +0x2d5e94,5, +0x2d5eac,1, +0x2d5eb4,3, +0x2d6000,14, +0x2d6070,3, +0x2d6080,6, 0x2d6100,9, -0x2d6400,2, -0x2d640c,6, -0x2d6440,13, -0x2d6480,16, -0x2d6800,1, -0x2d6808,3, -0x2d681c,8, -0x2d6840,3, -0x2d6850,3, -0x2d6880,1, -0x2d6888,3, -0x2d689c,8, -0x2d68c0,3, -0x2d68d0,3, -0x2d6900,1, -0x2d6908,3, -0x2d691c,8, -0x2d6940,3, -0x2d6950,3, -0x2d6980,1, -0x2d6988,3, -0x2d699c,8, -0x2d69c0,3, -0x2d69d0,3, -0x2d6a00,1, -0x2d6a08,3, -0x2d6a1c,8, -0x2d6a40,3, -0x2d6a50,3, -0x2d6a80,1, -0x2d6a88,3, -0x2d6a9c,8, -0x2d6ac0,3, -0x2d6ad0,3, -0x2d6b00,1, -0x2d6b08,3, -0x2d6b1c,8, -0x2d6b40,3, -0x2d6b50,3, -0x2d6b80,1, -0x2d6b88,3, -0x2d6b9c,8, -0x2d6bc0,3, -0x2d6bd0,3, -0x2d6c00,1, -0x2d6c08,3, -0x2d6c1c,8, -0x2d6c40,3, -0x2d6c50,3, -0x2d6c80,2, -0x2d6c94,13, +0x2d6204,1, +0x2d620c,6, +0x2d6240,13, +0x2d6280,16, +0x2d6400,8, +0x2d6424,15, +0x2d6464,15, +0x2d64a4,15, +0x2d64e4,23, +0x2d6544,6, +0x2d6580,10, +0x2d65ac,1, +0x2d65b4,5, +0x2d65cc,1, +0x2d65d4,5, +0x2d65ec,1, +0x2d65f4,13, +0x2d6680,7, +0x2d66a0,5, +0x2d66c0,5, +0x2d66e0,3, +0x2d6800,19, +0x2d6850,10, +0x2d6880,19, +0x2d68d0,10, +0x2d6900,19, +0x2d6950,10, +0x2d6980,19, +0x2d69d0,10, +0x2d6a00,19, +0x2d6a50,10, +0x2d6a80,19, +0x2d6ad0,10, +0x2d6b00,19, +0x2d6b50,10, +0x2d6b80,19, +0x2d6bd0,10, +0x2d6c00,19, +0x2d6c50,10, +0x2d6c84,1, +0x2d6c94,8, +0x2d6cb8,9, +0x2d6ce0,4, 0x2d7000,6, 0x2d7020,3, -0x2d7034,1, 0x2d7040,7, 0x2d7060,6, 0x2d7100,5, 0x2d7138,1, 0x2d7144,1, -0x2d7400,1, -0x2d7418,1, -0x2d7434,1, -0x2d752c,5, -0x2d7590,1, -0x2d75ac,1, -0x2d75d8,4, -0x2d7600,8, +0x2d7150,2, 0x2d8000,6, 0x2d8020,3, 0x2d8030,9, -0x2d8080,6, -0x2d8100,20, +0x2d8100,6, +0x2d8120,10, +0x2d8150,8, 0x2d8400,1, -0x2d8418,1, -0x2d8434,1, -0x2d852c,4, -0x2d8590,1, +0x2d8428,1, +0x2d8450,1, +0x2d8478,1, +0x2d84a0,8, 0x2d85ac,1, 0x2d85d8,4, -0x2d8600,8, +0x2d8600,6, +0x2d8620,6, +0x2d8640,3, +0x2d8800,6, +0x2d8820,3, +0x2d8830,4, +0x2d8858,2, +0x2d8864,1, +0x2d8874,3, +0x2d8898,2, +0x2d88a4,1, +0x2d88b4,3, 0x2d9000,6, 0x2d9020,6, 0x2d9040,3, 0x2d9080,14, 0x2d90bc,1, 0x2d90c4,13, -0x2d90fc,6, -0x2d9120,5, -0x2d9190,10, -0x2d9200,16, -0x2d9244,32, -0x2d9300,26, +0x2d90fc,5, +0x2d9120,4, +0x2d9140,3, +0x2d9180,3, +0x2d9190,3, +0x2d91a0,1, +0x2d91e0,6, +0x2d9200,20, +0x2d925c,30, +0x2d9300,24, 0x2d9380,2, 0x2d93a0,1, 0x2d93c0,11, -0x2d9404,4, -0x2d9418,16, +0x2d9404,3, +0x2d9420,11, 0x2d9460,3, +0x2d9480,6, 0x2d9500,6, +0x2d9520,6, 0x2d9540,1, 0x2d9558,2, 0x2d9600,17, -0x2d9800,366, +0x2d9800,410, 0x2da000,6, 0x2da020,6, 0x2da040,3, 0x2da080,14, 0x2da0bc,1, 0x2da0c4,13, -0x2da0fc,6, -0x2da120,5, -0x2da190,10, -0x2da200,16, -0x2da244,32, -0x2da300,26, +0x2da0fc,5, +0x2da120,4, +0x2da140,3, +0x2da180,3, +0x2da190,3, +0x2da1a0,1, +0x2da1e0,6, +0x2da200,20, +0x2da25c,30, +0x2da300,24, 0x2da380,2, 0x2da3a0,1, 0x2da3c0,11, -0x2da404,4, -0x2da418,16, +0x2da404,3, +0x2da420,11, 0x2da460,3, +0x2da480,6, 0x2da500,6, +0x2da520,6, 0x2da540,1, 0x2da558,2, 0x2da600,17, -0x2da800,366, +0x2da800,410, 0x2db000,4, -0x2db020,9, -0x2db048,6, -0x2db064,6, -0x2db080,1, +0x2db020,25, +0x2db088,8, 0x2db100,4, -0x2db120,9, -0x2db148,6, -0x2db164,6, -0x2db180,1, -0x2db200,35, -0x2db290,6, -0x2db2b4,6, -0x2db2d0,5, -0x2db2e8,5, +0x2db120,25, +0x2db188,8, +0x2db200,34, 0x2db300,37, -0x2db400,6, -0x2db420,3, -0x2db438,4, -0x2db454,3, -0x2db478,4, -0x2db494,3, +0x2db400,16, +0x2db464,1, +0x2db474,3, +0x2db500,6, +0x2db520,2, +0x2db530,9, +0x2db570,10, +0x2db5a0,2, +0x2db5b0,9, +0x2db5f0,4, +0x2db620,7, +0x2db640,16, +0x2db700,6, +0x2db720,6, +0x2db740,6, +0x2db760,6, +0x2db780,3, 0x2db800,5, 0x2db818,1, 0x2db854,6, 0x2db880,2, 0x2db8a4,1, +0x2db8ac,2, 0x2dba00,28, -0x2dba7c,5, -0x2dbab0,2, +0x2dba7c,13, +0x2dbab4,1, 0x2dbabc,10, -0x2dbb00,2, -0x2dbb0c,7, +0x2dbb04,1, +0x2dbb0c,5, +0x2dbb24,1, 0x2dbb34,9, 0x2dbb60,6, -0x2dbb80,8, +0x2dbb80,22, +0x2dbbe0,3, +0x2dbbf0,2, 0x2dbc00,5, 0x2dbc18,1, 0x2dbc54,6, 0x2dbc80,2, 0x2dbca4,1, +0x2dbcac,2, 0x2dbe00,28, -0x2dbe7c,5, -0x2dbeb0,2, +0x2dbe7c,13, +0x2dbeb4,1, 0x2dbebc,10, -0x2dbf00,2, -0x2dbf0c,7, +0x2dbf04,1, +0x2dbf0c,5, +0x2dbf24,1, 0x2dbf34,9, 0x2dbf60,6, -0x2dbf80,8, -0x2dc000,4, -0x2dc014,10, -0x2dc040,1, -0x2dc048,3, -0x2dc058,1, -0x2dc060,1, +0x2dbf80,22, +0x2dbfe0,3, +0x2dbff0,2, +0x2dc008,2, +0x2dc014,11, +0x2dc044,1, +0x2dc04c,3, +0x2dc05c,1, +0x2dc064,1, 0x2dc07c,1, -0x2dc500,1, -0x2dc518,2, +0x2dc500,2, +0x2dc518,1, +0x2dc520,3, 0x2dc540,6, -0x2dc800,4, -0x2dc814,10, -0x2dc840,1, -0x2dc848,3, -0x2dc858,1, -0x2dc860,1, +0x2dc580,10, +0x2dc808,2, +0x2dc814,11, +0x2dc844,1, +0x2dc84c,3, +0x2dc85c,1, +0x2dc864,1, 0x2dc87c,1, -0x2dcd00,1, -0x2dcd18,2, +0x2dcd00,2, +0x2dcd18,1, +0x2dcd20,3, 0x2dcd40,6, +0x2dcd80,10, 0x2dd800,2, -0x2dd818,2, -0x2dd834,2, -0x2dd92c,6, -0x2dd990,2, +0x2dd828,2, +0x2dd850,2, +0x2dd878,2, +0x2dd8a0,6, 0x2dd9ac,1, 0x2dd9d8,4, -0x2dda00,16, -0x2ddc00,3, -0x2ddc20,2, -0x2ddc40,1, +0x2dda00,6, +0x2dda20,6, +0x2dda40,6, +0x2dda60,6, +0x2dda80,3, +0x2ddc00,6, +0x2ddc20,3, +0x2ddc40,2, +0x2ddc60,1, 0x2e0000,5, 0x2e0020,4, -0x2e0034,9, -0x2e005c,7, +0x2e0034,17, 0x2e0080,1, 0x2e00a0,6, 0x2e0100,5, 0x2e0120,4, -0x2e0134,9, -0x2e015c,7, +0x2e0134,17, 0x2e0180,1, 0x2e01a0,6, 0x2e0200,5, 0x2e0220,4, -0x2e0234,9, -0x2e025c,7, +0x2e0234,17, 0x2e0280,1, 0x2e02a0,6, 0x2e0300,5, 0x2e0320,4, -0x2e0334,9, -0x2e035c,7, +0x2e0334,17, 0x2e0380,1, 0x2e03a0,6, -0x2e0400,4, -0x2e0440,4, +0x2e0400,6, +0x2e0440,6, 0x2e0480,3, 0x2e04c0,3, -0x2e0500,5, -0x2e0518,8, +0x2e0500,6, +0x2e051c,7, +0x2e0540,1, 0x2e0c00,13, -0x2e0c40,11, +0x2e0c40,12, 0x2e0c80,13, -0x2e0cc0,11, +0x2e0cc0,12, 0x2e0d00,6, 0x2e0d20,6, -0x2e0e00,10, +0x2e0d80,14, +0x2e0dc0,2, 0x2e0e40,11, -0x2e0e80,8, +0x2e0e80,6, +0x2e0ea0,6, 0x2e1000,2, 0x2e1010,5, 0x2e1040,3, 0x2e1050,3, -0x2e1060,7, -0x2e1080,7, -0x2e10a0,7, -0x2e10c0,7, -0x2e1100,7, -0x2e1140,7, -0x2e1180,5, +0x2e1060,32, +0x2e1100,8, +0x2e1140,8, +0x2e1180,3, +0x2e1190,2, 0x2e119c,9, 0x2e1218,9, 0x2e1240,3, @@ -9492,75 +11761,84 @@ 0x2e12e4,1, 0x2e1400,8, 0x2e1424,2, -0x2e1500,3, +0x2e1500,5, 0x2e1520,4, -0x2e1540,3, +0x2e1540,5, 0x2e1560,4, 0x2e1800,24, -0x2e1864,2, -0x2e1880,6, -0x2e1900,12, -0x2e1940,6, -0x2e1960,6, +0x2e1864,5, +0x2e1880,8, +0x2e1900,13, 0x2e1980,4, +0x2e19a0,6, 0x2e19c0,6, 0x2e19dc,1, 0x2e1a00,6, 0x2e1a1c,1, 0x2e1a40,1, +0x2e1a60,1, 0x2e1a68,23, +0x2e1ac8,6, 0x2e1b00,17, +0x2e1b48,6, 0x2e1b80,12, +0x2e1c00,6, +0x2e1c20,6, +0x2e1c40,6, +0x2e1c60,3, +0x2e1d00,6, +0x2e1d20,6, +0x2e1d40,3, +0x2e1d80,6, +0x2e1da0,6, +0x2e1dc0,3, 0x2e2000,5, 0x2e2020,4, -0x2e2034,9, -0x2e205c,7, +0x2e2034,17, 0x2e2080,1, 0x2e20a0,6, 0x2e2100,5, 0x2e2120,4, -0x2e2134,9, -0x2e215c,7, +0x2e2134,17, 0x2e2180,1, 0x2e21a0,6, 0x2e2200,5, 0x2e2220,4, -0x2e2234,9, -0x2e225c,7, +0x2e2234,17, 0x2e2280,1, 0x2e22a0,6, 0x2e2300,5, 0x2e2320,4, -0x2e2334,9, -0x2e235c,7, +0x2e2334,17, 0x2e2380,1, 0x2e23a0,6, -0x2e2400,4, -0x2e2440,4, +0x2e2400,6, +0x2e2440,6, 0x2e2480,3, 0x2e24c0,3, -0x2e2500,5, -0x2e2518,8, +0x2e2500,6, +0x2e251c,7, +0x2e2540,1, 0x2e2c00,13, -0x2e2c40,11, +0x2e2c40,12, 0x2e2c80,13, -0x2e2cc0,11, +0x2e2cc0,12, 0x2e2d00,6, 0x2e2d20,6, -0x2e2e00,10, +0x2e2d80,14, +0x2e2dc0,2, 0x2e2e40,11, -0x2e2e80,8, +0x2e2e80,6, +0x2e2ea0,6, 0x2e3000,2, 0x2e3010,5, 0x2e3040,3, 0x2e3050,3, -0x2e3060,7, -0x2e3080,7, -0x2e30a0,7, -0x2e30c0,7, -0x2e3100,7, -0x2e3140,7, -0x2e3180,5, +0x2e3060,32, +0x2e3100,8, +0x2e3140,8, +0x2e3180,3, +0x2e3190,2, 0x2e319c,9, 0x2e3218,9, 0x2e3240,3, @@ -9573,349 +11851,409 @@ 0x2e32e4,1, 0x2e3400,8, 0x2e3424,2, -0x2e3500,3, +0x2e3500,5, 0x2e3520,4, -0x2e3540,3, +0x2e3540,5, 0x2e3560,4, 0x2e3800,24, -0x2e3864,2, -0x2e3880,6, -0x2e3900,12, -0x2e3940,6, -0x2e3960,6, +0x2e3864,5, +0x2e3880,8, +0x2e3900,13, 0x2e3980,4, +0x2e39a0,6, 0x2e39c0,6, 0x2e39dc,1, 0x2e3a00,6, 0x2e3a1c,1, 0x2e3a40,1, +0x2e3a60,1, 0x2e3a68,23, +0x2e3ac8,6, 0x2e3b00,17, +0x2e3b48,6, 0x2e3b80,12, -0x2e4000,4, -0x2e4014,6, -0x2e4030,5, -0x2e4080,4, -0x2e4094,6, -0x2e40b0,5, -0x2e4100,4, -0x2e4114,6, -0x2e4130,5, -0x2e4180,4, -0x2e4194,6, -0x2e41b0,5, -0x2e4200,3, -0x2e4210,23, -0x2e4500,3, -0x2e4510,12, -0x2e4580,3, -0x2e4590,12, -0x2e4600,3, -0x2e4610,12, -0x2e4680,3, -0x2e4690,12, -0x2e4700,4, -0x2e4718,13, -0x2e4800,25, -0x2e4880,25, -0x2e4900,25, -0x2e4980,25, -0x2e4a00,17, -0x2e4a50,3, -0x2e4a60,3, -0x2e5000,4, -0x2e5014,6, -0x2e5030,5, -0x2e5080,4, -0x2e5094,6, -0x2e50b0,5, -0x2e5100,4, -0x2e5114,6, -0x2e5130,5, -0x2e5180,4, -0x2e5194,6, -0x2e51b0,5, -0x2e5200,3, -0x2e5210,23, -0x2e5500,3, -0x2e5510,12, -0x2e5580,3, -0x2e5590,12, -0x2e5600,3, -0x2e5610,12, -0x2e5680,3, -0x2e5690,12, -0x2e5700,4, -0x2e5718,13, -0x2e5800,25, -0x2e5880,25, -0x2e5900,25, -0x2e5980,25, -0x2e5a00,17, -0x2e5a50,3, -0x2e5a60,3, -0x2e6000,13, -0x2e6040,22, -0x2e60a0,6, -0x2e60c0,3, +0x2e3c00,6, +0x2e3c20,6, +0x2e3c40,6, +0x2e3c60,3, +0x2e3d00,6, +0x2e3d20,6, +0x2e3d40,3, +0x2e3d80,6, +0x2e3da0,6, +0x2e3dc0,3, +0x2e4000,29, +0x2e4078,5, +0x2e4090,2, +0x2e40a0,10, +0x2e4100,93, +0x2e4278,5, +0x2e4290,2, +0x2e42a0,10, +0x2e4300,93, +0x2e4478,5, +0x2e4490,2, +0x2e44a0,10, +0x2e4500,93, +0x2e4678,5, +0x2e4690,2, +0x2e46a0,10, +0x2e4700,93, +0x2e487c,1, +0x2e4a00,8, +0x2e4a24,15, +0x2e4a64,23, +0x2e4ac4,6, +0x2e4b00,4, +0x2e4b20,3, +0x2e4c00,2, +0x2e4c40,14, +0x2e4c80,9, +0x2e4d00,9, +0x2e4d2c,1, +0x2e4d80,6, +0x2e4e00,2, +0x2e4e0c,1, +0x2e4e14,5, +0x2e4e2c,1, +0x2e4e34,5, +0x2e4e4c,1, +0x2e4e54,5, +0x2e4e6c,1, +0x2e4e74,5, +0x2e4e8c,1, +0x2e4e94,5, +0x2e4eac,1, +0x2e4eb4,3, +0x2e5000,29, +0x2e5078,5, +0x2e5090,2, +0x2e50a0,10, +0x2e5100,93, +0x2e5278,5, +0x2e5290,2, +0x2e52a0,10, +0x2e5300,93, +0x2e5478,5, +0x2e5490,2, +0x2e54a0,10, +0x2e5500,93, +0x2e5678,5, +0x2e5690,2, +0x2e56a0,10, +0x2e5700,93, +0x2e587c,1, +0x2e5a00,8, +0x2e5a24,15, +0x2e5a64,23, +0x2e5ac4,6, +0x2e5b00,4, +0x2e5b20,3, +0x2e5c00,2, +0x2e5c40,14, +0x2e5c80,9, +0x2e5d00,9, +0x2e5d2c,1, +0x2e5d80,6, +0x2e5e00,2, +0x2e5e0c,1, +0x2e5e14,5, +0x2e5e2c,1, +0x2e5e34,5, +0x2e5e4c,1, +0x2e5e54,5, +0x2e5e6c,1, +0x2e5e74,5, +0x2e5e8c,1, +0x2e5e94,5, +0x2e5eac,1, +0x2e5eb4,3, +0x2e6000,14, +0x2e6070,3, +0x2e6080,6, 0x2e6100,9, -0x2e6400,2, -0x2e640c,6, -0x2e6440,13, -0x2e6480,16, -0x2e6800,1, -0x2e6808,3, -0x2e681c,8, -0x2e6840,3, -0x2e6850,3, -0x2e6880,1, -0x2e6888,3, -0x2e689c,8, -0x2e68c0,3, -0x2e68d0,3, -0x2e6900,1, -0x2e6908,3, -0x2e691c,8, -0x2e6940,3, -0x2e6950,3, -0x2e6980,1, -0x2e6988,3, -0x2e699c,8, -0x2e69c0,3, -0x2e69d0,3, -0x2e6a00,1, -0x2e6a08,3, -0x2e6a1c,8, -0x2e6a40,3, -0x2e6a50,3, -0x2e6a80,1, -0x2e6a88,3, -0x2e6a9c,8, -0x2e6ac0,3, -0x2e6ad0,3, -0x2e6b00,1, -0x2e6b08,3, -0x2e6b1c,8, -0x2e6b40,3, -0x2e6b50,3, -0x2e6b80,1, -0x2e6b88,3, -0x2e6b9c,8, -0x2e6bc0,3, -0x2e6bd0,3, -0x2e6c00,1, -0x2e6c08,3, -0x2e6c1c,8, -0x2e6c40,3, -0x2e6c50,3, -0x2e6c80,2, -0x2e6c94,13, +0x2e6204,1, +0x2e620c,6, +0x2e6240,13, +0x2e6280,16, +0x2e6400,8, +0x2e6424,15, +0x2e6464,15, +0x2e64a4,15, +0x2e64e4,23, +0x2e6544,6, +0x2e6580,10, +0x2e65ac,1, +0x2e65b4,5, +0x2e65cc,1, +0x2e65d4,5, +0x2e65ec,1, +0x2e65f4,13, +0x2e6680,7, +0x2e66a0,5, +0x2e66c0,5, +0x2e66e0,3, +0x2e6800,19, +0x2e6850,10, +0x2e6880,19, +0x2e68d0,10, +0x2e6900,19, +0x2e6950,10, +0x2e6980,19, +0x2e69d0,10, +0x2e6a00,19, +0x2e6a50,10, +0x2e6a80,19, +0x2e6ad0,10, +0x2e6b00,19, +0x2e6b50,10, +0x2e6b80,19, +0x2e6bd0,10, +0x2e6c00,19, +0x2e6c50,10, +0x2e6c84,1, +0x2e6c94,8, +0x2e6cb8,9, +0x2e6ce0,4, 0x2e7000,6, 0x2e7020,3, -0x2e7034,1, 0x2e7040,7, 0x2e7060,6, 0x2e7100,5, 0x2e7138,1, 0x2e7144,1, -0x2e7400,1, -0x2e7418,1, -0x2e7434,1, -0x2e752c,5, -0x2e7590,1, -0x2e75ac,1, -0x2e75d8,4, -0x2e7600,8, +0x2e7150,2, 0x2e8000,6, 0x2e8020,3, 0x2e8030,9, -0x2e8080,6, -0x2e8100,20, +0x2e8100,6, +0x2e8120,10, +0x2e8150,8, 0x2e8400,1, -0x2e8418,1, -0x2e8434,1, -0x2e852c,4, -0x2e8590,1, +0x2e8428,1, +0x2e8450,1, +0x2e8478,1, +0x2e84a0,8, 0x2e85ac,1, 0x2e85d8,4, -0x2e8600,8, +0x2e8600,6, +0x2e8620,6, +0x2e8640,3, +0x2e8800,6, +0x2e8820,3, +0x2e8830,4, +0x2e8858,2, +0x2e8864,1, +0x2e8874,3, +0x2e8898,2, +0x2e88a4,1, +0x2e88b4,3, 0x2e9000,6, 0x2e9020,6, 0x2e9040,3, 0x2e9080,14, 0x2e90bc,1, 0x2e90c4,13, -0x2e90fc,6, -0x2e9120,5, -0x2e9190,10, -0x2e9200,16, -0x2e9244,32, -0x2e9300,26, +0x2e90fc,5, +0x2e9120,4, +0x2e9140,3, +0x2e9180,3, +0x2e9190,3, +0x2e91a0,1, +0x2e91e0,6, +0x2e9200,20, +0x2e925c,30, +0x2e9300,24, 0x2e9380,2, 0x2e93a0,1, 0x2e93c0,11, -0x2e9404,4, -0x2e9418,16, +0x2e9404,3, +0x2e9420,11, 0x2e9460,3, +0x2e9480,6, 0x2e9500,6, +0x2e9520,6, 0x2e9540,1, 0x2e9558,2, 0x2e9600,17, -0x2e9800,366, +0x2e9800,410, 0x2ea000,6, 0x2ea020,6, 0x2ea040,3, 0x2ea080,14, 0x2ea0bc,1, 0x2ea0c4,13, -0x2ea0fc,6, -0x2ea120,5, -0x2ea190,10, -0x2ea200,16, -0x2ea244,32, -0x2ea300,26, +0x2ea0fc,5, +0x2ea120,4, +0x2ea140,3, +0x2ea180,3, +0x2ea190,3, +0x2ea1a0,1, +0x2ea1e0,6, +0x2ea200,20, +0x2ea25c,30, +0x2ea300,24, 0x2ea380,2, 0x2ea3a0,1, 0x2ea3c0,11, -0x2ea404,4, -0x2ea418,16, +0x2ea404,3, +0x2ea420,11, 0x2ea460,3, +0x2ea480,6, 0x2ea500,6, +0x2ea520,6, 0x2ea540,1, 0x2ea558,2, 0x2ea600,17, -0x2ea800,366, +0x2ea800,410, 0x2eb000,4, -0x2eb020,9, -0x2eb048,6, -0x2eb064,6, -0x2eb080,1, +0x2eb020,25, +0x2eb088,8, 0x2eb100,4, -0x2eb120,9, -0x2eb148,6, -0x2eb164,6, -0x2eb180,1, -0x2eb200,35, -0x2eb290,6, -0x2eb2b4,6, -0x2eb2d0,5, -0x2eb2e8,5, +0x2eb120,25, +0x2eb188,8, +0x2eb200,34, 0x2eb300,37, -0x2eb400,6, -0x2eb420,3, -0x2eb438,4, -0x2eb454,3, -0x2eb478,4, -0x2eb494,3, +0x2eb400,16, +0x2eb464,1, +0x2eb474,3, +0x2eb500,6, +0x2eb520,2, +0x2eb530,9, +0x2eb570,10, +0x2eb5a0,2, +0x2eb5b0,9, +0x2eb5f0,4, +0x2eb620,7, +0x2eb640,16, +0x2eb700,6, +0x2eb720,6, +0x2eb740,6, +0x2eb760,6, +0x2eb780,3, 0x2eb800,5, 0x2eb818,1, 0x2eb854,6, 0x2eb880,2, 0x2eb8a4,1, +0x2eb8ac,2, 0x2eba00,28, -0x2eba7c,5, -0x2ebab0,2, +0x2eba7c,13, +0x2ebab4,1, 0x2ebabc,10, -0x2ebb00,2, -0x2ebb0c,7, +0x2ebb04,1, +0x2ebb0c,5, +0x2ebb24,1, 0x2ebb34,9, 0x2ebb60,6, -0x2ebb80,8, +0x2ebb80,22, +0x2ebbe0,3, +0x2ebbf0,2, 0x2ebc00,5, 0x2ebc18,1, 0x2ebc54,6, 0x2ebc80,2, 0x2ebca4,1, +0x2ebcac,2, 0x2ebe00,28, -0x2ebe7c,5, -0x2ebeb0,2, +0x2ebe7c,13, +0x2ebeb4,1, 0x2ebebc,10, -0x2ebf00,2, -0x2ebf0c,7, +0x2ebf04,1, +0x2ebf0c,5, +0x2ebf24,1, 0x2ebf34,9, 0x2ebf60,6, -0x2ebf80,8, -0x2ec000,4, -0x2ec014,10, -0x2ec040,1, -0x2ec048,3, -0x2ec058,1, -0x2ec060,1, +0x2ebf80,22, +0x2ebfe0,3, +0x2ebff0,2, +0x2ec008,2, +0x2ec014,11, +0x2ec044,1, +0x2ec04c,3, +0x2ec05c,1, +0x2ec064,1, 0x2ec07c,1, -0x2ec500,1, -0x2ec518,2, +0x2ec500,2, +0x2ec518,1, +0x2ec520,3, 0x2ec540,6, -0x2ec800,4, -0x2ec814,10, -0x2ec840,1, -0x2ec848,3, -0x2ec858,1, -0x2ec860,1, +0x2ec580,10, +0x2ec808,2, +0x2ec814,11, +0x2ec844,1, +0x2ec84c,3, +0x2ec85c,1, +0x2ec864,1, 0x2ec87c,1, -0x2ecd00,1, -0x2ecd18,2, +0x2ecd00,2, +0x2ecd18,1, +0x2ecd20,3, 0x2ecd40,6, +0x2ecd80,10, 0x2ed800,2, -0x2ed818,2, -0x2ed834,2, -0x2ed92c,6, -0x2ed990,2, +0x2ed828,2, +0x2ed850,2, +0x2ed878,2, +0x2ed8a0,6, 0x2ed9ac,1, 0x2ed9d8,4, -0x2eda00,16, -0x2edc00,3, -0x2edc20,2, -0x2edc40,1, +0x2eda00,6, +0x2eda20,6, +0x2eda40,6, +0x2eda60,6, +0x2eda80,3, +0x2edc00,6, +0x2edc20,3, +0x2edc40,2, +0x2edc60,1, 0x2f0000,5, 0x2f0020,4, -0x2f0034,9, -0x2f005c,7, +0x2f0034,17, 0x2f0080,1, 0x2f00a0,6, 0x2f0100,5, 0x2f0120,4, -0x2f0134,9, -0x2f015c,7, +0x2f0134,17, 0x2f0180,1, 0x2f01a0,6, 0x2f0200,5, 0x2f0220,4, -0x2f0234,9, -0x2f025c,7, +0x2f0234,17, 0x2f0280,1, 0x2f02a0,6, 0x2f0300,5, 0x2f0320,4, -0x2f0334,9, -0x2f035c,7, +0x2f0334,17, 0x2f0380,1, 0x2f03a0,6, -0x2f0400,4, -0x2f0440,4, +0x2f0400,6, +0x2f0440,6, 0x2f0480,3, 0x2f04c0,3, -0x2f0500,5, -0x2f0518,8, +0x2f0500,6, +0x2f051c,7, +0x2f0540,1, 0x2f0c00,13, -0x2f0c40,11, +0x2f0c40,12, 0x2f0c80,13, -0x2f0cc0,11, +0x2f0cc0,12, 0x2f0d00,6, 0x2f0d20,6, -0x2f0e00,10, +0x2f0d80,14, +0x2f0dc0,2, 0x2f0e40,11, -0x2f0e80,8, +0x2f0e80,6, +0x2f0ea0,6, 0x2f1000,2, 0x2f1010,5, 0x2f1040,3, 0x2f1050,3, -0x2f1060,7, -0x2f1080,7, -0x2f10a0,7, -0x2f10c0,7, -0x2f1100,7, -0x2f1140,7, -0x2f1180,5, +0x2f1060,32, +0x2f1100,8, +0x2f1140,8, +0x2f1180,3, +0x2f1190,2, 0x2f119c,9, 0x2f1218,9, 0x2f1240,3, @@ -9928,75 +12266,84 @@ 0x2f12e4,1, 0x2f1400,8, 0x2f1424,2, -0x2f1500,3, +0x2f1500,5, 0x2f1520,4, -0x2f1540,3, +0x2f1540,5, 0x2f1560,4, 0x2f1800,24, -0x2f1864,2, -0x2f1880,6, -0x2f1900,12, -0x2f1940,6, -0x2f1960,6, +0x2f1864,5, +0x2f1880,8, +0x2f1900,13, 0x2f1980,4, +0x2f19a0,6, 0x2f19c0,6, 0x2f19dc,1, 0x2f1a00,6, 0x2f1a1c,1, 0x2f1a40,1, +0x2f1a60,1, 0x2f1a68,23, +0x2f1ac8,6, 0x2f1b00,17, +0x2f1b48,6, 0x2f1b80,12, +0x2f1c00,6, +0x2f1c20,6, +0x2f1c40,6, +0x2f1c60,3, +0x2f1d00,6, +0x2f1d20,6, +0x2f1d40,3, +0x2f1d80,6, +0x2f1da0,6, +0x2f1dc0,3, 0x2f2000,5, 0x2f2020,4, -0x2f2034,9, -0x2f205c,7, +0x2f2034,17, 0x2f2080,1, 0x2f20a0,6, 0x2f2100,5, 0x2f2120,4, -0x2f2134,9, -0x2f215c,7, +0x2f2134,17, 0x2f2180,1, 0x2f21a0,6, 0x2f2200,5, 0x2f2220,4, -0x2f2234,9, -0x2f225c,7, +0x2f2234,17, 0x2f2280,1, 0x2f22a0,6, 0x2f2300,5, 0x2f2320,4, -0x2f2334,9, -0x2f235c,7, +0x2f2334,17, 0x2f2380,1, 0x2f23a0,6, -0x2f2400,4, -0x2f2440,4, +0x2f2400,6, +0x2f2440,6, 0x2f2480,3, 0x2f24c0,3, -0x2f2500,5, -0x2f2518,8, +0x2f2500,6, +0x2f251c,7, +0x2f2540,1, 0x2f2c00,13, -0x2f2c40,11, +0x2f2c40,12, 0x2f2c80,13, -0x2f2cc0,11, +0x2f2cc0,12, 0x2f2d00,6, 0x2f2d20,6, -0x2f2e00,10, +0x2f2d80,14, +0x2f2dc0,2, 0x2f2e40,11, -0x2f2e80,8, +0x2f2e80,6, +0x2f2ea0,6, 0x2f3000,2, 0x2f3010,5, 0x2f3040,3, 0x2f3050,3, -0x2f3060,7, -0x2f3080,7, -0x2f30a0,7, -0x2f30c0,7, -0x2f3100,7, -0x2f3140,7, -0x2f3180,5, +0x2f3060,32, +0x2f3100,8, +0x2f3140,8, +0x2f3180,3, +0x2f3190,2, 0x2f319c,9, 0x2f3218,9, 0x2f3240,3, @@ -10009,349 +12356,409 @@ 0x2f32e4,1, 0x2f3400,8, 0x2f3424,2, -0x2f3500,3, +0x2f3500,5, 0x2f3520,4, -0x2f3540,3, +0x2f3540,5, 0x2f3560,4, 0x2f3800,24, -0x2f3864,2, -0x2f3880,6, -0x2f3900,12, -0x2f3940,6, -0x2f3960,6, +0x2f3864,5, +0x2f3880,8, +0x2f3900,13, 0x2f3980,4, +0x2f39a0,6, 0x2f39c0,6, 0x2f39dc,1, 0x2f3a00,6, 0x2f3a1c,1, 0x2f3a40,1, +0x2f3a60,1, 0x2f3a68,23, +0x2f3ac8,6, 0x2f3b00,17, +0x2f3b48,6, 0x2f3b80,12, -0x2f4000,4, -0x2f4014,6, -0x2f4030,5, -0x2f4080,4, -0x2f4094,6, -0x2f40b0,5, -0x2f4100,4, -0x2f4114,6, -0x2f4130,5, -0x2f4180,4, -0x2f4194,6, -0x2f41b0,5, -0x2f4200,3, -0x2f4210,23, -0x2f4500,3, -0x2f4510,12, -0x2f4580,3, -0x2f4590,12, -0x2f4600,3, -0x2f4610,12, -0x2f4680,3, -0x2f4690,12, -0x2f4700,4, -0x2f4718,13, -0x2f4800,25, -0x2f4880,25, -0x2f4900,25, -0x2f4980,25, -0x2f4a00,17, -0x2f4a50,3, -0x2f4a60,3, -0x2f5000,4, -0x2f5014,6, -0x2f5030,5, -0x2f5080,4, -0x2f5094,6, -0x2f50b0,5, -0x2f5100,4, -0x2f5114,6, -0x2f5130,5, -0x2f5180,4, -0x2f5194,6, -0x2f51b0,5, -0x2f5200,3, -0x2f5210,23, -0x2f5500,3, -0x2f5510,12, -0x2f5580,3, -0x2f5590,12, -0x2f5600,3, -0x2f5610,12, -0x2f5680,3, -0x2f5690,12, -0x2f5700,4, -0x2f5718,13, -0x2f5800,25, -0x2f5880,25, -0x2f5900,25, -0x2f5980,25, -0x2f5a00,17, -0x2f5a50,3, -0x2f5a60,3, -0x2f6000,13, -0x2f6040,22, -0x2f60a0,6, -0x2f60c0,3, +0x2f3c00,6, +0x2f3c20,6, +0x2f3c40,6, +0x2f3c60,3, +0x2f3d00,6, +0x2f3d20,6, +0x2f3d40,3, +0x2f3d80,6, +0x2f3da0,6, +0x2f3dc0,3, +0x2f4000,29, +0x2f4078,5, +0x2f4090,2, +0x2f40a0,10, +0x2f4100,93, +0x2f4278,5, +0x2f4290,2, +0x2f42a0,10, +0x2f4300,93, +0x2f4478,5, +0x2f4490,2, +0x2f44a0,10, +0x2f4500,93, +0x2f4678,5, +0x2f4690,2, +0x2f46a0,10, +0x2f4700,93, +0x2f487c,1, +0x2f4a00,8, +0x2f4a24,15, +0x2f4a64,23, +0x2f4ac4,6, +0x2f4b00,4, +0x2f4b20,3, +0x2f4c00,2, +0x2f4c40,14, +0x2f4c80,9, +0x2f4d00,9, +0x2f4d2c,1, +0x2f4d80,6, +0x2f4e00,2, +0x2f4e0c,1, +0x2f4e14,5, +0x2f4e2c,1, +0x2f4e34,5, +0x2f4e4c,1, +0x2f4e54,5, +0x2f4e6c,1, +0x2f4e74,5, +0x2f4e8c,1, +0x2f4e94,5, +0x2f4eac,1, +0x2f4eb4,3, +0x2f5000,29, +0x2f5078,5, +0x2f5090,2, +0x2f50a0,10, +0x2f5100,93, +0x2f5278,5, +0x2f5290,2, +0x2f52a0,10, +0x2f5300,93, +0x2f5478,5, +0x2f5490,2, +0x2f54a0,10, +0x2f5500,93, +0x2f5678,5, +0x2f5690,2, +0x2f56a0,10, +0x2f5700,93, +0x2f587c,1, +0x2f5a00,8, +0x2f5a24,15, +0x2f5a64,23, +0x2f5ac4,6, +0x2f5b00,4, +0x2f5b20,3, +0x2f5c00,2, +0x2f5c40,14, +0x2f5c80,9, +0x2f5d00,9, +0x2f5d2c,1, +0x2f5d80,6, +0x2f5e00,2, +0x2f5e0c,1, +0x2f5e14,5, +0x2f5e2c,1, +0x2f5e34,5, +0x2f5e4c,1, +0x2f5e54,5, +0x2f5e6c,1, +0x2f5e74,5, +0x2f5e8c,1, +0x2f5e94,5, +0x2f5eac,1, +0x2f5eb4,3, +0x2f6000,14, +0x2f6070,3, +0x2f6080,6, 0x2f6100,9, -0x2f6400,2, -0x2f640c,6, -0x2f6440,13, -0x2f6480,16, -0x2f6800,1, -0x2f6808,3, -0x2f681c,8, -0x2f6840,3, -0x2f6850,3, -0x2f6880,1, -0x2f6888,3, -0x2f689c,8, -0x2f68c0,3, -0x2f68d0,3, -0x2f6900,1, -0x2f6908,3, -0x2f691c,8, -0x2f6940,3, -0x2f6950,3, -0x2f6980,1, -0x2f6988,3, -0x2f699c,8, -0x2f69c0,3, -0x2f69d0,3, -0x2f6a00,1, -0x2f6a08,3, -0x2f6a1c,8, -0x2f6a40,3, -0x2f6a50,3, -0x2f6a80,1, -0x2f6a88,3, -0x2f6a9c,8, -0x2f6ac0,3, -0x2f6ad0,3, -0x2f6b00,1, -0x2f6b08,3, -0x2f6b1c,8, -0x2f6b40,3, -0x2f6b50,3, -0x2f6b80,1, -0x2f6b88,3, -0x2f6b9c,8, -0x2f6bc0,3, -0x2f6bd0,3, -0x2f6c00,1, -0x2f6c08,3, -0x2f6c1c,8, -0x2f6c40,3, -0x2f6c50,3, -0x2f6c80,2, -0x2f6c94,13, +0x2f6204,1, +0x2f620c,6, +0x2f6240,13, +0x2f6280,16, +0x2f6400,8, +0x2f6424,15, +0x2f6464,15, +0x2f64a4,15, +0x2f64e4,23, +0x2f6544,6, +0x2f6580,10, +0x2f65ac,1, +0x2f65b4,5, +0x2f65cc,1, +0x2f65d4,5, +0x2f65ec,1, +0x2f65f4,13, +0x2f6680,7, +0x2f66a0,5, +0x2f66c0,5, +0x2f66e0,3, +0x2f6800,19, +0x2f6850,10, +0x2f6880,19, +0x2f68d0,10, +0x2f6900,19, +0x2f6950,10, +0x2f6980,19, +0x2f69d0,10, +0x2f6a00,19, +0x2f6a50,10, +0x2f6a80,19, +0x2f6ad0,10, +0x2f6b00,19, +0x2f6b50,10, +0x2f6b80,19, +0x2f6bd0,10, +0x2f6c00,19, +0x2f6c50,10, +0x2f6c84,1, +0x2f6c94,8, +0x2f6cb8,9, +0x2f6ce0,4, 0x2f7000,6, 0x2f7020,3, -0x2f7034,1, 0x2f7040,7, 0x2f7060,6, 0x2f7100,5, 0x2f7138,1, 0x2f7144,1, -0x2f7400,1, -0x2f7418,1, -0x2f7434,1, -0x2f752c,5, -0x2f7590,1, -0x2f75ac,1, -0x2f75d8,4, -0x2f7600,8, +0x2f7150,2, 0x2f8000,6, 0x2f8020,3, 0x2f8030,9, -0x2f8080,6, -0x2f8100,20, +0x2f8100,6, +0x2f8120,10, +0x2f8150,8, 0x2f8400,1, -0x2f8418,1, -0x2f8434,1, -0x2f852c,4, -0x2f8590,1, +0x2f8428,1, +0x2f8450,1, +0x2f8478,1, +0x2f84a0,8, 0x2f85ac,1, 0x2f85d8,4, -0x2f8600,8, +0x2f8600,6, +0x2f8620,6, +0x2f8640,3, +0x2f8800,6, +0x2f8820,3, +0x2f8830,4, +0x2f8858,2, +0x2f8864,1, +0x2f8874,3, +0x2f8898,2, +0x2f88a4,1, +0x2f88b4,3, 0x2f9000,6, 0x2f9020,6, 0x2f9040,3, 0x2f9080,14, 0x2f90bc,1, 0x2f90c4,13, -0x2f90fc,6, -0x2f9120,5, -0x2f9190,10, -0x2f9200,16, -0x2f9244,32, -0x2f9300,26, +0x2f90fc,5, +0x2f9120,4, +0x2f9140,3, +0x2f9180,3, +0x2f9190,3, +0x2f91a0,1, +0x2f91e0,6, +0x2f9200,20, +0x2f925c,30, +0x2f9300,24, 0x2f9380,2, 0x2f93a0,1, 0x2f93c0,11, -0x2f9404,4, -0x2f9418,16, +0x2f9404,3, +0x2f9420,11, 0x2f9460,3, +0x2f9480,6, 0x2f9500,6, +0x2f9520,6, 0x2f9540,1, 0x2f9558,2, 0x2f9600,17, -0x2f9800,366, +0x2f9800,410, 0x2fa000,6, 0x2fa020,6, 0x2fa040,3, 0x2fa080,14, 0x2fa0bc,1, 0x2fa0c4,13, -0x2fa0fc,6, -0x2fa120,5, -0x2fa190,10, -0x2fa200,16, -0x2fa244,32, -0x2fa300,26, +0x2fa0fc,5, +0x2fa120,4, +0x2fa140,3, +0x2fa180,3, +0x2fa190,3, +0x2fa1a0,1, +0x2fa1e0,6, +0x2fa200,20, +0x2fa25c,30, +0x2fa300,24, 0x2fa380,2, 0x2fa3a0,1, 0x2fa3c0,11, -0x2fa404,4, -0x2fa418,16, +0x2fa404,3, +0x2fa420,11, 0x2fa460,3, +0x2fa480,6, 0x2fa500,6, +0x2fa520,6, 0x2fa540,1, 0x2fa558,2, 0x2fa600,17, -0x2fa800,366, +0x2fa800,410, 0x2fb000,4, -0x2fb020,9, -0x2fb048,6, -0x2fb064,6, -0x2fb080,1, +0x2fb020,25, +0x2fb088,8, 0x2fb100,4, -0x2fb120,9, -0x2fb148,6, -0x2fb164,6, -0x2fb180,1, -0x2fb200,35, -0x2fb290,6, -0x2fb2b4,6, -0x2fb2d0,5, -0x2fb2e8,5, +0x2fb120,25, +0x2fb188,8, +0x2fb200,34, 0x2fb300,37, -0x2fb400,6, -0x2fb420,3, -0x2fb438,4, -0x2fb454,3, -0x2fb478,4, -0x2fb494,3, +0x2fb400,16, +0x2fb464,1, +0x2fb474,3, +0x2fb500,6, +0x2fb520,2, +0x2fb530,9, +0x2fb570,10, +0x2fb5a0,2, +0x2fb5b0,9, +0x2fb5f0,4, +0x2fb620,7, +0x2fb640,16, +0x2fb700,6, +0x2fb720,6, +0x2fb740,6, +0x2fb760,6, +0x2fb780,3, 0x2fb800,5, 0x2fb818,1, 0x2fb854,6, 0x2fb880,2, 0x2fb8a4,1, +0x2fb8ac,2, 0x2fba00,28, -0x2fba7c,5, -0x2fbab0,2, +0x2fba7c,13, +0x2fbab4,1, 0x2fbabc,10, -0x2fbb00,2, -0x2fbb0c,7, +0x2fbb04,1, +0x2fbb0c,5, +0x2fbb24,1, 0x2fbb34,9, 0x2fbb60,6, -0x2fbb80,8, +0x2fbb80,22, +0x2fbbe0,3, +0x2fbbf0,2, 0x2fbc00,5, 0x2fbc18,1, 0x2fbc54,6, 0x2fbc80,2, 0x2fbca4,1, +0x2fbcac,2, 0x2fbe00,28, -0x2fbe7c,5, -0x2fbeb0,2, +0x2fbe7c,13, +0x2fbeb4,1, 0x2fbebc,10, -0x2fbf00,2, -0x2fbf0c,7, +0x2fbf04,1, +0x2fbf0c,5, +0x2fbf24,1, 0x2fbf34,9, 0x2fbf60,6, -0x2fbf80,8, -0x2fc000,4, -0x2fc014,10, -0x2fc040,1, -0x2fc048,3, -0x2fc058,1, -0x2fc060,1, +0x2fbf80,22, +0x2fbfe0,3, +0x2fbff0,2, +0x2fc008,2, +0x2fc014,11, +0x2fc044,1, +0x2fc04c,3, +0x2fc05c,1, +0x2fc064,1, 0x2fc07c,1, -0x2fc500,1, -0x2fc518,2, +0x2fc500,2, +0x2fc518,1, +0x2fc520,3, 0x2fc540,6, -0x2fc800,4, -0x2fc814,10, -0x2fc840,1, -0x2fc848,3, -0x2fc858,1, -0x2fc860,1, +0x2fc580,10, +0x2fc808,2, +0x2fc814,11, +0x2fc844,1, +0x2fc84c,3, +0x2fc85c,1, +0x2fc864,1, 0x2fc87c,1, -0x2fcd00,1, -0x2fcd18,2, +0x2fcd00,2, +0x2fcd18,1, +0x2fcd20,3, 0x2fcd40,6, +0x2fcd80,10, 0x2fd800,2, -0x2fd818,2, -0x2fd834,2, -0x2fd92c,6, -0x2fd990,2, +0x2fd828,2, +0x2fd850,2, +0x2fd878,2, +0x2fd8a0,6, 0x2fd9ac,1, 0x2fd9d8,4, -0x2fda00,16, -0x2fdc00,3, -0x2fdc20,2, -0x2fdc40,1, +0x2fda00,6, +0x2fda20,6, +0x2fda40,6, +0x2fda60,6, +0x2fda80,3, +0x2fdc00,6, +0x2fdc20,3, +0x2fdc40,2, +0x2fdc60,1, 0x300000,5, 0x300020,4, -0x300034,9, -0x30005c,7, +0x300034,17, 0x300080,1, 0x3000a0,6, 0x300100,5, 0x300120,4, -0x300134,9, -0x30015c,7, +0x300134,17, 0x300180,1, 0x3001a0,6, 0x300200,5, 0x300220,4, -0x300234,9, -0x30025c,7, +0x300234,17, 0x300280,1, 0x3002a0,6, 0x300300,5, 0x300320,4, -0x300334,9, -0x30035c,7, +0x300334,17, 0x300380,1, 0x3003a0,6, -0x300400,4, -0x300440,4, +0x300400,6, +0x300440,6, 0x300480,3, 0x3004c0,3, -0x300500,5, -0x300518,8, +0x300500,6, +0x30051c,7, +0x300540,1, 0x300c00,13, -0x300c40,11, +0x300c40,12, 0x300c80,13, -0x300cc0,11, +0x300cc0,12, 0x300d00,6, 0x300d20,6, -0x300e00,10, +0x300d80,14, +0x300dc0,2, 0x300e40,11, -0x300e80,8, +0x300e80,6, +0x300ea0,6, 0x301000,2, 0x301010,5, 0x301040,3, 0x301050,3, -0x301060,7, -0x301080,7, -0x3010a0,7, -0x3010c0,7, -0x301100,7, -0x301140,7, -0x301180,5, +0x301060,32, +0x301100,8, +0x301140,8, +0x301180,3, +0x301190,2, 0x30119c,9, 0x301218,9, 0x301240,3, @@ -10364,75 +12771,84 @@ 0x3012e4,1, 0x301400,8, 0x301424,2, -0x301500,3, +0x301500,5, 0x301520,4, -0x301540,3, +0x301540,5, 0x301560,4, 0x301800,24, -0x301864,2, -0x301880,6, -0x301900,12, -0x301940,6, -0x301960,6, +0x301864,5, +0x301880,8, +0x301900,13, 0x301980,4, +0x3019a0,6, 0x3019c0,6, 0x3019dc,1, 0x301a00,6, 0x301a1c,1, 0x301a40,1, +0x301a60,1, 0x301a68,23, +0x301ac8,6, 0x301b00,17, +0x301b48,6, 0x301b80,12, +0x301c00,6, +0x301c20,6, +0x301c40,6, +0x301c60,3, +0x301d00,6, +0x301d20,6, +0x301d40,3, +0x301d80,6, +0x301da0,6, +0x301dc0,3, 0x302000,5, 0x302020,4, -0x302034,9, -0x30205c,7, +0x302034,17, 0x302080,1, 0x3020a0,6, 0x302100,5, 0x302120,4, -0x302134,9, -0x30215c,7, +0x302134,17, 0x302180,1, 0x3021a0,6, 0x302200,5, 0x302220,4, -0x302234,9, -0x30225c,7, +0x302234,17, 0x302280,1, 0x3022a0,6, 0x302300,5, 0x302320,4, -0x302334,9, -0x30235c,7, +0x302334,17, 0x302380,1, 0x3023a0,6, -0x302400,4, -0x302440,4, +0x302400,6, +0x302440,6, 0x302480,3, 0x3024c0,3, -0x302500,5, -0x302518,8, +0x302500,6, +0x30251c,7, +0x302540,1, 0x302c00,13, -0x302c40,11, +0x302c40,12, 0x302c80,13, -0x302cc0,11, +0x302cc0,12, 0x302d00,6, 0x302d20,6, -0x302e00,10, +0x302d80,14, +0x302dc0,2, 0x302e40,11, -0x302e80,8, +0x302e80,6, +0x302ea0,6, 0x303000,2, 0x303010,5, 0x303040,3, 0x303050,3, -0x303060,7, -0x303080,7, -0x3030a0,7, -0x3030c0,7, -0x303100,7, -0x303140,7, -0x303180,5, +0x303060,32, +0x303100,8, +0x303140,8, +0x303180,3, +0x303190,2, 0x30319c,9, 0x303218,9, 0x303240,3, @@ -10445,349 +12861,409 @@ 0x3032e4,1, 0x303400,8, 0x303424,2, -0x303500,3, +0x303500,5, 0x303520,4, -0x303540,3, +0x303540,5, 0x303560,4, 0x303800,24, -0x303864,2, -0x303880,6, -0x303900,12, -0x303940,6, -0x303960,6, +0x303864,5, +0x303880,8, +0x303900,13, 0x303980,4, +0x3039a0,6, 0x3039c0,6, 0x3039dc,1, 0x303a00,6, 0x303a1c,1, 0x303a40,1, +0x303a60,1, 0x303a68,23, +0x303ac8,6, 0x303b00,17, +0x303b48,6, 0x303b80,12, -0x304000,4, -0x304014,6, -0x304030,5, -0x304080,4, -0x304094,6, -0x3040b0,5, -0x304100,4, -0x304114,6, -0x304130,5, -0x304180,4, -0x304194,6, -0x3041b0,5, -0x304200,3, -0x304210,23, -0x304500,3, -0x304510,12, -0x304580,3, -0x304590,12, -0x304600,3, -0x304610,12, -0x304680,3, -0x304690,12, -0x304700,4, -0x304718,13, -0x304800,25, -0x304880,25, -0x304900,25, -0x304980,25, -0x304a00,17, -0x304a50,3, -0x304a60,3, -0x305000,4, -0x305014,6, -0x305030,5, -0x305080,4, -0x305094,6, -0x3050b0,5, -0x305100,4, -0x305114,6, -0x305130,5, -0x305180,4, -0x305194,6, -0x3051b0,5, -0x305200,3, -0x305210,23, -0x305500,3, -0x305510,12, -0x305580,3, -0x305590,12, -0x305600,3, -0x305610,12, -0x305680,3, -0x305690,12, -0x305700,4, -0x305718,13, -0x305800,25, -0x305880,25, -0x305900,25, -0x305980,25, -0x305a00,17, -0x305a50,3, -0x305a60,3, -0x306000,13, -0x306040,22, -0x3060a0,6, -0x3060c0,3, +0x303c00,6, +0x303c20,6, +0x303c40,6, +0x303c60,3, +0x303d00,6, +0x303d20,6, +0x303d40,3, +0x303d80,6, +0x303da0,6, +0x303dc0,3, +0x304000,29, +0x304078,5, +0x304090,2, +0x3040a0,10, +0x304100,93, +0x304278,5, +0x304290,2, +0x3042a0,10, +0x304300,93, +0x304478,5, +0x304490,2, +0x3044a0,10, +0x304500,93, +0x304678,5, +0x304690,2, +0x3046a0,10, +0x304700,93, +0x30487c,1, +0x304a00,8, +0x304a24,15, +0x304a64,23, +0x304ac4,6, +0x304b00,4, +0x304b20,3, +0x304c00,2, +0x304c40,14, +0x304c80,9, +0x304d00,9, +0x304d2c,1, +0x304d80,6, +0x304e00,2, +0x304e0c,1, +0x304e14,5, +0x304e2c,1, +0x304e34,5, +0x304e4c,1, +0x304e54,5, +0x304e6c,1, +0x304e74,5, +0x304e8c,1, +0x304e94,5, +0x304eac,1, +0x304eb4,3, +0x305000,29, +0x305078,5, +0x305090,2, +0x3050a0,10, +0x305100,93, +0x305278,5, +0x305290,2, +0x3052a0,10, +0x305300,93, +0x305478,5, +0x305490,2, +0x3054a0,10, +0x305500,93, +0x305678,5, +0x305690,2, +0x3056a0,10, +0x305700,93, +0x30587c,1, +0x305a00,8, +0x305a24,15, +0x305a64,23, +0x305ac4,6, +0x305b00,4, +0x305b20,3, +0x305c00,2, +0x305c40,14, +0x305c80,9, +0x305d00,9, +0x305d2c,1, +0x305d80,6, +0x305e00,2, +0x305e0c,1, +0x305e14,5, +0x305e2c,1, +0x305e34,5, +0x305e4c,1, +0x305e54,5, +0x305e6c,1, +0x305e74,5, +0x305e8c,1, +0x305e94,5, +0x305eac,1, +0x305eb4,3, +0x306000,14, +0x306070,3, +0x306080,6, 0x306100,9, -0x306400,2, -0x30640c,6, -0x306440,13, -0x306480,16, -0x306800,1, -0x306808,3, -0x30681c,8, -0x306840,3, -0x306850,3, -0x306880,1, -0x306888,3, -0x30689c,8, -0x3068c0,3, -0x3068d0,3, -0x306900,1, -0x306908,3, -0x30691c,8, -0x306940,3, -0x306950,3, -0x306980,1, -0x306988,3, -0x30699c,8, -0x3069c0,3, -0x3069d0,3, -0x306a00,1, -0x306a08,3, -0x306a1c,8, -0x306a40,3, -0x306a50,3, -0x306a80,1, -0x306a88,3, -0x306a9c,8, -0x306ac0,3, -0x306ad0,3, -0x306b00,1, -0x306b08,3, -0x306b1c,8, -0x306b40,3, -0x306b50,3, -0x306b80,1, -0x306b88,3, -0x306b9c,8, -0x306bc0,3, -0x306bd0,3, -0x306c00,1, -0x306c08,3, -0x306c1c,8, -0x306c40,3, -0x306c50,3, -0x306c80,2, -0x306c94,13, +0x306204,1, +0x30620c,6, +0x306240,13, +0x306280,16, +0x306400,8, +0x306424,15, +0x306464,15, +0x3064a4,15, +0x3064e4,23, +0x306544,6, +0x306580,10, +0x3065ac,1, +0x3065b4,5, +0x3065cc,1, +0x3065d4,5, +0x3065ec,1, +0x3065f4,13, +0x306680,7, +0x3066a0,5, +0x3066c0,5, +0x3066e0,3, +0x306800,19, +0x306850,10, +0x306880,19, +0x3068d0,10, +0x306900,19, +0x306950,10, +0x306980,19, +0x3069d0,10, +0x306a00,19, +0x306a50,10, +0x306a80,19, +0x306ad0,10, +0x306b00,19, +0x306b50,10, +0x306b80,19, +0x306bd0,10, +0x306c00,19, +0x306c50,10, +0x306c84,1, +0x306c94,8, +0x306cb8,9, +0x306ce0,4, 0x307000,6, 0x307020,3, -0x307034,1, 0x307040,7, 0x307060,6, 0x307100,5, 0x307138,1, 0x307144,1, -0x307400,1, -0x307418,1, -0x307434,1, -0x30752c,5, -0x307590,1, -0x3075ac,1, -0x3075d8,4, -0x307600,8, +0x307150,2, 0x308000,6, 0x308020,3, 0x308030,9, -0x308080,6, -0x308100,20, +0x308100,6, +0x308120,10, +0x308150,8, 0x308400,1, -0x308418,1, -0x308434,1, -0x30852c,4, -0x308590,1, +0x308428,1, +0x308450,1, +0x308478,1, +0x3084a0,8, 0x3085ac,1, 0x3085d8,4, -0x308600,8, +0x308600,6, +0x308620,6, +0x308640,3, +0x308800,6, +0x308820,3, +0x308830,4, +0x308858,2, +0x308864,1, +0x308874,3, +0x308898,2, +0x3088a4,1, +0x3088b4,3, 0x309000,6, 0x309020,6, 0x309040,3, 0x309080,14, 0x3090bc,1, 0x3090c4,13, -0x3090fc,6, -0x309120,5, -0x309190,10, -0x309200,16, -0x309244,32, -0x309300,26, +0x3090fc,5, +0x309120,4, +0x309140,3, +0x309180,3, +0x309190,3, +0x3091a0,1, +0x3091e0,6, +0x309200,20, +0x30925c,30, +0x309300,24, 0x309380,2, 0x3093a0,1, 0x3093c0,11, -0x309404,4, -0x309418,16, +0x309404,3, +0x309420,11, 0x309460,3, +0x309480,6, 0x309500,6, +0x309520,6, 0x309540,1, 0x309558,2, 0x309600,17, -0x309800,366, +0x309800,410, 0x30a000,6, 0x30a020,6, 0x30a040,3, 0x30a080,14, 0x30a0bc,1, 0x30a0c4,13, -0x30a0fc,6, -0x30a120,5, -0x30a190,10, -0x30a200,16, -0x30a244,32, -0x30a300,26, +0x30a0fc,5, +0x30a120,4, +0x30a140,3, +0x30a180,3, +0x30a190,3, +0x30a1a0,1, +0x30a1e0,6, +0x30a200,20, +0x30a25c,30, +0x30a300,24, 0x30a380,2, 0x30a3a0,1, 0x30a3c0,11, -0x30a404,4, -0x30a418,16, +0x30a404,3, +0x30a420,11, 0x30a460,3, +0x30a480,6, 0x30a500,6, +0x30a520,6, 0x30a540,1, 0x30a558,2, 0x30a600,17, -0x30a800,366, +0x30a800,410, 0x30b000,4, -0x30b020,9, -0x30b048,6, -0x30b064,6, -0x30b080,1, +0x30b020,25, +0x30b088,8, 0x30b100,4, -0x30b120,9, -0x30b148,6, -0x30b164,6, -0x30b180,1, -0x30b200,35, -0x30b290,6, -0x30b2b4,6, -0x30b2d0,5, -0x30b2e8,5, +0x30b120,25, +0x30b188,8, +0x30b200,34, 0x30b300,37, -0x30b400,6, -0x30b420,3, -0x30b438,4, -0x30b454,3, -0x30b478,4, -0x30b494,3, +0x30b400,16, +0x30b464,1, +0x30b474,3, +0x30b500,6, +0x30b520,2, +0x30b530,9, +0x30b570,10, +0x30b5a0,2, +0x30b5b0,9, +0x30b5f0,4, +0x30b620,7, +0x30b640,16, +0x30b700,6, +0x30b720,6, +0x30b740,6, +0x30b760,6, +0x30b780,3, 0x30b800,5, 0x30b818,1, 0x30b854,6, 0x30b880,2, 0x30b8a4,1, +0x30b8ac,2, 0x30ba00,28, -0x30ba7c,5, -0x30bab0,2, +0x30ba7c,13, +0x30bab4,1, 0x30babc,10, -0x30bb00,2, -0x30bb0c,7, +0x30bb04,1, +0x30bb0c,5, +0x30bb24,1, 0x30bb34,9, 0x30bb60,6, -0x30bb80,8, +0x30bb80,22, +0x30bbe0,3, +0x30bbf0,2, 0x30bc00,5, 0x30bc18,1, 0x30bc54,6, 0x30bc80,2, 0x30bca4,1, +0x30bcac,2, 0x30be00,28, -0x30be7c,5, -0x30beb0,2, +0x30be7c,13, +0x30beb4,1, 0x30bebc,10, -0x30bf00,2, -0x30bf0c,7, +0x30bf04,1, +0x30bf0c,5, +0x30bf24,1, 0x30bf34,9, 0x30bf60,6, -0x30bf80,8, -0x30c000,4, -0x30c014,10, -0x30c040,1, -0x30c048,3, -0x30c058,1, -0x30c060,1, +0x30bf80,22, +0x30bfe0,3, +0x30bff0,2, +0x30c008,2, +0x30c014,11, +0x30c044,1, +0x30c04c,3, +0x30c05c,1, +0x30c064,1, 0x30c07c,1, -0x30c500,1, -0x30c518,2, +0x30c500,2, +0x30c518,1, +0x30c520,3, 0x30c540,6, -0x30c800,4, -0x30c814,10, -0x30c840,1, -0x30c848,3, -0x30c858,1, -0x30c860,1, +0x30c580,10, +0x30c808,2, +0x30c814,11, +0x30c844,1, +0x30c84c,3, +0x30c85c,1, +0x30c864,1, 0x30c87c,1, -0x30cd00,1, -0x30cd18,2, +0x30cd00,2, +0x30cd18,1, +0x30cd20,3, 0x30cd40,6, +0x30cd80,10, 0x30d800,2, -0x30d818,2, -0x30d834,2, -0x30d92c,6, -0x30d990,2, +0x30d828,2, +0x30d850,2, +0x30d878,2, +0x30d8a0,6, 0x30d9ac,1, 0x30d9d8,4, -0x30da00,16, -0x30dc00,3, -0x30dc20,2, -0x30dc40,1, +0x30da00,6, +0x30da20,6, +0x30da40,6, +0x30da60,6, +0x30da80,3, +0x30dc00,6, +0x30dc20,3, +0x30dc40,2, +0x30dc60,1, 0x310000,5, 0x310020,4, -0x310034,9, -0x31005c,7, +0x310034,17, 0x310080,1, 0x3100a0,6, 0x310100,5, 0x310120,4, -0x310134,9, -0x31015c,7, +0x310134,17, 0x310180,1, 0x3101a0,6, 0x310200,5, 0x310220,4, -0x310234,9, -0x31025c,7, +0x310234,17, 0x310280,1, 0x3102a0,6, 0x310300,5, 0x310320,4, -0x310334,9, -0x31035c,7, +0x310334,17, 0x310380,1, 0x3103a0,6, -0x310400,4, -0x310440,4, +0x310400,6, +0x310440,6, 0x310480,3, 0x3104c0,3, -0x310500,5, -0x310518,8, +0x310500,6, +0x31051c,7, +0x310540,1, 0x310c00,13, -0x310c40,11, +0x310c40,12, 0x310c80,13, -0x310cc0,11, +0x310cc0,12, 0x310d00,6, 0x310d20,6, -0x310e00,10, +0x310d80,14, +0x310dc0,2, 0x310e40,11, -0x310e80,8, +0x310e80,6, +0x310ea0,6, 0x311000,2, 0x311010,5, 0x311040,3, 0x311050,3, -0x311060,7, -0x311080,7, -0x3110a0,7, -0x3110c0,7, -0x311100,7, -0x311140,7, -0x311180,5, +0x311060,32, +0x311100,8, +0x311140,8, +0x311180,3, +0x311190,2, 0x31119c,9, 0x311218,9, 0x311240,3, @@ -10800,75 +13276,84 @@ 0x3112e4,1, 0x311400,8, 0x311424,2, -0x311500,3, +0x311500,5, 0x311520,4, -0x311540,3, +0x311540,5, 0x311560,4, 0x311800,24, -0x311864,2, -0x311880,6, -0x311900,12, -0x311940,6, -0x311960,6, +0x311864,5, +0x311880,8, +0x311900,13, 0x311980,4, +0x3119a0,6, 0x3119c0,6, 0x3119dc,1, 0x311a00,6, 0x311a1c,1, 0x311a40,1, +0x311a60,1, 0x311a68,23, +0x311ac8,6, 0x311b00,17, +0x311b48,6, 0x311b80,12, +0x311c00,6, +0x311c20,6, +0x311c40,6, +0x311c60,3, +0x311d00,6, +0x311d20,6, +0x311d40,3, +0x311d80,6, +0x311da0,6, +0x311dc0,3, 0x312000,5, 0x312020,4, -0x312034,9, -0x31205c,7, +0x312034,17, 0x312080,1, 0x3120a0,6, 0x312100,5, 0x312120,4, -0x312134,9, -0x31215c,7, +0x312134,17, 0x312180,1, 0x3121a0,6, 0x312200,5, 0x312220,4, -0x312234,9, -0x31225c,7, +0x312234,17, 0x312280,1, 0x3122a0,6, 0x312300,5, 0x312320,4, -0x312334,9, -0x31235c,7, +0x312334,17, 0x312380,1, 0x3123a0,6, -0x312400,4, -0x312440,4, +0x312400,6, +0x312440,6, 0x312480,3, 0x3124c0,3, -0x312500,5, -0x312518,8, +0x312500,6, +0x31251c,7, +0x312540,1, 0x312c00,13, -0x312c40,11, +0x312c40,12, 0x312c80,13, -0x312cc0,11, +0x312cc0,12, 0x312d00,6, 0x312d20,6, -0x312e00,10, +0x312d80,14, +0x312dc0,2, 0x312e40,11, -0x312e80,8, +0x312e80,6, +0x312ea0,6, 0x313000,2, 0x313010,5, 0x313040,3, 0x313050,3, -0x313060,7, -0x313080,7, -0x3130a0,7, -0x3130c0,7, -0x313100,7, -0x313140,7, -0x313180,5, +0x313060,32, +0x313100,8, +0x313140,8, +0x313180,3, +0x313190,2, 0x31319c,9, 0x313218,9, 0x313240,3, @@ -10881,296 +13366,359 @@ 0x3132e4,1, 0x313400,8, 0x313424,2, -0x313500,3, +0x313500,5, 0x313520,4, -0x313540,3, +0x313540,5, 0x313560,4, 0x313800,24, -0x313864,2, -0x313880,6, -0x313900,12, -0x313940,6, -0x313960,6, +0x313864,5, +0x313880,8, +0x313900,13, 0x313980,4, +0x3139a0,6, 0x3139c0,6, 0x3139dc,1, 0x313a00,6, 0x313a1c,1, 0x313a40,1, +0x313a60,1, 0x313a68,23, +0x313ac8,6, 0x313b00,17, +0x313b48,6, 0x313b80,12, -0x314000,4, -0x314014,6, -0x314030,5, -0x314080,4, -0x314094,6, -0x3140b0,5, -0x314100,4, -0x314114,6, -0x314130,5, -0x314180,4, -0x314194,6, -0x3141b0,5, -0x314200,3, -0x314210,23, -0x314500,3, -0x314510,12, -0x314580,3, -0x314590,12, -0x314600,3, -0x314610,12, -0x314680,3, -0x314690,12, -0x314700,4, -0x314718,13, -0x314800,25, -0x314880,25, -0x314900,25, -0x314980,25, -0x314a00,17, -0x314a50,3, -0x314a60,3, -0x315000,4, -0x315014,6, -0x315030,5, -0x315080,4, -0x315094,6, -0x3150b0,5, -0x315100,4, -0x315114,6, -0x315130,5, -0x315180,4, -0x315194,6, -0x3151b0,5, -0x315200,3, -0x315210,23, -0x315500,3, -0x315510,12, -0x315580,3, -0x315590,12, -0x315600,3, -0x315610,12, -0x315680,3, -0x315690,12, -0x315700,4, -0x315718,13, -0x315800,25, -0x315880,25, -0x315900,25, -0x315980,25, -0x315a00,17, -0x315a50,3, -0x315a60,3, -0x316000,13, -0x316040,22, -0x3160a0,6, -0x3160c0,3, +0x313c00,6, +0x313c20,6, +0x313c40,6, +0x313c60,3, +0x313d00,6, +0x313d20,6, +0x313d40,3, +0x313d80,6, +0x313da0,6, +0x313dc0,3, +0x314000,29, +0x314078,5, +0x314090,2, +0x3140a0,10, +0x314100,93, +0x314278,5, +0x314290,2, +0x3142a0,10, +0x314300,93, +0x314478,5, +0x314490,2, +0x3144a0,10, +0x314500,93, +0x314678,5, +0x314690,2, +0x3146a0,10, +0x314700,93, +0x31487c,1, +0x314a00,8, +0x314a24,15, +0x314a64,23, +0x314ac4,6, +0x314b00,4, +0x314b20,3, +0x314c00,2, +0x314c40,14, +0x314c80,9, +0x314d00,9, +0x314d2c,1, +0x314d80,6, +0x314e00,2, +0x314e0c,1, +0x314e14,5, +0x314e2c,1, +0x314e34,5, +0x314e4c,1, +0x314e54,5, +0x314e6c,1, +0x314e74,5, +0x314e8c,1, +0x314e94,5, +0x314eac,1, +0x314eb4,3, +0x315000,29, +0x315078,5, +0x315090,2, +0x3150a0,10, +0x315100,93, +0x315278,5, +0x315290,2, +0x3152a0,10, +0x315300,93, +0x315478,5, +0x315490,2, +0x3154a0,10, +0x315500,93, +0x315678,5, +0x315690,2, +0x3156a0,10, +0x315700,93, +0x31587c,1, +0x315a00,8, +0x315a24,15, +0x315a64,23, +0x315ac4,6, +0x315b00,4, +0x315b20,3, +0x315c00,2, +0x315c40,14, +0x315c80,9, +0x315d00,9, +0x315d2c,1, +0x315d80,6, +0x315e00,2, +0x315e0c,1, +0x315e14,5, +0x315e2c,1, +0x315e34,5, +0x315e4c,1, +0x315e54,5, +0x315e6c,1, +0x315e74,5, +0x315e8c,1, +0x315e94,5, +0x315eac,1, +0x315eb4,3, +0x316000,14, +0x316070,3, +0x316080,6, 0x316100,9, -0x316400,2, -0x31640c,6, -0x316440,13, -0x316480,16, -0x316800,1, -0x316808,3, -0x31681c,8, -0x316840,3, -0x316850,3, -0x316880,1, -0x316888,3, -0x31689c,8, -0x3168c0,3, -0x3168d0,3, -0x316900,1, -0x316908,3, -0x31691c,8, -0x316940,3, -0x316950,3, -0x316980,1, -0x316988,3, -0x31699c,8, -0x3169c0,3, -0x3169d0,3, -0x316a00,1, -0x316a08,3, -0x316a1c,8, -0x316a40,3, -0x316a50,3, -0x316a80,1, -0x316a88,3, -0x316a9c,8, -0x316ac0,3, -0x316ad0,3, -0x316b00,1, -0x316b08,3, -0x316b1c,8, -0x316b40,3, -0x316b50,3, -0x316b80,1, -0x316b88,3, -0x316b9c,8, -0x316bc0,3, -0x316bd0,3, -0x316c00,1, -0x316c08,3, -0x316c1c,8, -0x316c40,3, -0x316c50,3, -0x316c80,2, -0x316c94,13, +0x316204,1, +0x31620c,6, +0x316240,13, +0x316280,16, +0x316400,8, +0x316424,15, +0x316464,15, +0x3164a4,15, +0x3164e4,23, +0x316544,6, +0x316580,10, +0x3165ac,1, +0x3165b4,5, +0x3165cc,1, +0x3165d4,5, +0x3165ec,1, +0x3165f4,13, +0x316680,7, +0x3166a0,5, +0x3166c0,5, +0x3166e0,3, +0x316800,19, +0x316850,10, +0x316880,19, +0x3168d0,10, +0x316900,19, +0x316950,10, +0x316980,19, +0x3169d0,10, +0x316a00,19, +0x316a50,10, +0x316a80,19, +0x316ad0,10, +0x316b00,19, +0x316b50,10, +0x316b80,19, +0x316bd0,10, +0x316c00,19, +0x316c50,10, +0x316c84,1, +0x316c94,8, +0x316cb8,9, +0x316ce0,4, 0x317000,6, 0x317020,3, -0x317034,1, 0x317040,7, 0x317060,6, 0x317100,5, 0x317138,1, 0x317144,1, -0x317400,1, -0x317418,1, -0x317434,1, -0x31752c,5, -0x317590,1, -0x3175ac,1, -0x3175d8,4, -0x317600,8, +0x317150,2, 0x318000,6, 0x318020,3, 0x318030,9, -0x318080,6, -0x318100,20, +0x318100,6, +0x318120,10, +0x318150,8, 0x318400,1, -0x318418,1, -0x318434,1, -0x31852c,4, -0x318590,1, +0x318428,1, +0x318450,1, +0x318478,1, +0x3184a0,8, 0x3185ac,1, 0x3185d8,4, -0x318600,8, +0x318600,6, +0x318620,6, +0x318640,3, +0x318800,6, +0x318820,3, +0x318830,4, +0x318858,2, +0x318864,1, +0x318874,3, +0x318898,2, +0x3188a4,1, +0x3188b4,3, 0x319000,6, 0x319020,6, 0x319040,3, 0x319080,14, 0x3190bc,1, 0x3190c4,13, -0x3190fc,6, -0x319120,5, -0x319190,10, -0x319200,16, -0x319244,32, -0x319300,26, +0x3190fc,5, +0x319120,4, +0x319140,3, +0x319180,3, +0x319190,3, +0x3191a0,1, +0x3191e0,6, +0x319200,20, +0x31925c,30, +0x319300,24, 0x319380,2, 0x3193a0,1, 0x3193c0,11, -0x319404,4, -0x319418,16, +0x319404,3, +0x319420,11, 0x319460,3, +0x319480,6, 0x319500,6, +0x319520,6, 0x319540,1, 0x319558,2, 0x319600,17, -0x319800,366, +0x319800,410, 0x31a000,6, 0x31a020,6, 0x31a040,3, 0x31a080,14, 0x31a0bc,1, 0x31a0c4,13, -0x31a0fc,6, -0x31a120,5, -0x31a190,10, -0x31a200,16, -0x31a244,32, -0x31a300,26, +0x31a0fc,5, +0x31a120,4, +0x31a140,3, +0x31a180,3, +0x31a190,3, +0x31a1a0,1, +0x31a1e0,6, +0x31a200,20, +0x31a25c,30, +0x31a300,24, 0x31a380,2, 0x31a3a0,1, 0x31a3c0,11, -0x31a404,4, -0x31a418,16, +0x31a404,3, +0x31a420,11, 0x31a460,3, +0x31a480,6, 0x31a500,6, +0x31a520,6, 0x31a540,1, 0x31a558,2, 0x31a600,17, -0x31a800,366, +0x31a800,410, 0x31b000,4, -0x31b020,9, -0x31b048,6, -0x31b064,6, -0x31b080,1, +0x31b020,25, +0x31b088,8, 0x31b100,4, -0x31b120,9, -0x31b148,6, -0x31b164,6, -0x31b180,1, -0x31b200,35, -0x31b290,6, -0x31b2b4,6, -0x31b2d0,5, -0x31b2e8,5, +0x31b120,25, +0x31b188,8, +0x31b200,34, 0x31b300,37, -0x31b400,6, -0x31b420,3, -0x31b438,4, -0x31b454,3, -0x31b478,4, -0x31b494,3, +0x31b400,16, +0x31b464,1, +0x31b474,3, +0x31b500,6, +0x31b520,2, +0x31b530,9, +0x31b570,10, +0x31b5a0,2, +0x31b5b0,9, +0x31b5f0,4, +0x31b620,7, +0x31b640,16, +0x31b700,6, +0x31b720,6, +0x31b740,6, +0x31b760,6, +0x31b780,3, 0x31b800,5, 0x31b818,1, 0x31b854,6, 0x31b880,2, 0x31b8a4,1, +0x31b8ac,2, 0x31ba00,28, -0x31ba7c,5, -0x31bab0,2, +0x31ba7c,13, +0x31bab4,1, 0x31babc,10, -0x31bb00,2, -0x31bb0c,7, +0x31bb04,1, +0x31bb0c,5, +0x31bb24,1, 0x31bb34,9, 0x31bb60,6, -0x31bb80,8, +0x31bb80,22, +0x31bbe0,3, +0x31bbf0,2, 0x31bc00,5, 0x31bc18,1, 0x31bc54,6, 0x31bc80,2, 0x31bca4,1, +0x31bcac,2, 0x31be00,28, -0x31be7c,5, -0x31beb0,2, +0x31be7c,13, +0x31beb4,1, 0x31bebc,10, -0x31bf00,2, -0x31bf0c,7, +0x31bf04,1, +0x31bf0c,5, +0x31bf24,1, 0x31bf34,9, 0x31bf60,6, -0x31bf80,8, -0x31c000,4, -0x31c014,10, -0x31c040,1, -0x31c048,3, -0x31c058,1, -0x31c060,1, +0x31bf80,22, +0x31bfe0,3, +0x31bff0,2, +0x31c008,2, +0x31c014,11, +0x31c044,1, +0x31c04c,3, +0x31c05c,1, +0x31c064,1, 0x31c07c,1, -0x31c500,1, -0x31c518,2, +0x31c500,2, +0x31c518,1, +0x31c520,3, 0x31c540,6, -0x31c800,4, -0x31c814,10, -0x31c840,1, -0x31c848,3, -0x31c858,1, -0x31c860,1, +0x31c580,10, +0x31c808,2, +0x31c814,11, +0x31c844,1, +0x31c84c,3, +0x31c85c,1, +0x31c864,1, 0x31c87c,1, -0x31cd00,1, -0x31cd18,2, +0x31cd00,2, +0x31cd18,1, +0x31cd20,3, 0x31cd40,6, +0x31cd80,10, 0x31d800,2, -0x31d818,2, -0x31d834,2, -0x31d92c,6, -0x31d990,2, +0x31d828,2, +0x31d850,2, +0x31d878,2, +0x31d8a0,6, 0x31d9ac,1, 0x31d9d8,4, -0x31da00,16, -0x31dc00,3, -0x31dc20,2, -0x31dc40,1, +0x31da00,6, +0x31da20,6, +0x31da40,6, +0x31da60,6, +0x31da80,3, +0x31dc00,6, +0x31dc20,3, +0x31dc40,2, +0x31dc60,1, diff --git a/mtcr_ul/mtcr_ib.h b/mtcr_ul/mtcr_ib.h index 96298c2..2a36327 100644 --- a/mtcr_ul/mtcr_ib.h +++ b/mtcr_ul/mtcr_ib.h @@ -56,5 +56,7 @@ int mib_swreset(mfile *mf); int mib_get_chunk_size(mfile *mf); int mib_acces_reg_mad(mfile *mf, u_int8_t *data); +int mib_smp_set(mfile* mf, u_int8_t* data, u_int16_t attr_id, u_int32_t attr_mod); +int mib_smp_get(mfile* mf, u_int8_t* data, u_int16_t attr_id, u_int32_t attr_mod); #endif diff --git a/mtcr_ul/mtcr_ib_ofed.c b/mtcr_ul/mtcr_ib_ofed.c index da85397..3fb30c1 100644 --- a/mtcr_ul/mtcr_ib_ofed.c +++ b/mtcr_ul/mtcr_ib_ofed.c @@ -57,7 +57,6 @@ #include #include - #ifdef MST_UL #include #include "mtcr.h" @@ -65,6 +64,7 @@ #endif #include "mtcr_ib.h" +#include #include @@ -83,7 +83,10 @@ return -1;\ }\ } while(0) + #define MY_GetProcAddress(ivm, func_name) MY_GetPointerAddress(ivm, func_name, f_##func_name) + #define MY_GetProcAddressIgnoreFail(ivm, func_name) \ + ivm->func_name = (f_##func_name)GetProcAddress(ivm->dl_handle, #func_name) #define MY_GetVarAddress(ivm, var_name) MY_GetPointerAddress(ivm, var_name, void*) #define DLL_HANDLE HINSTANCE @@ -107,6 +110,10 @@ return -1;\ } \ } while(0) + + #define MY_DLSYM_IGNORE_FAIL(mf, func_name) \ + mf->func_name = dlsym(mf->dl_handle, #func_name) + #define OP_NOT_SUPPORTED EOPNOTSUPP #define IBMAD_CALL_CONV @@ -193,8 +200,12 @@ typedef uint8_t* IBMAD_CALL_CONV (*f_ib_vendor_call_via)(void *data, ib_portid_t const struct ibmad_port *srcport); typedef uint8_t* IBMAD_CALL_CONV (*f_smp_query_via)(void *buf, ib_portid_t *id, unsigned attrid, unsigned mod, unsigned timeout, const struct ibmad_port *srcport); +typedef uint8_t* IBMAD_CALL_CONV (*f_smp_query_status_via)(void *buf, ib_portid_t *id, unsigned attrid, unsigned mod, + unsigned timeout, int *rstatus, const struct ibmad_port *srcport); typedef uint8_t* IBMAD_CALL_CONV (*f_smp_set_via)(void *buf, ib_portid_t *id, unsigned attrid, unsigned mod, unsigned timeout, const struct ibmad_port *srcport ); +typedef uint8_t* IBMAD_CALL_CONV (*f_smp_set_status_via)(void *buf, ib_portid_t *id, unsigned attrid, unsigned mod, + unsigned timeout, int *rstatus, const struct ibmad_port *srcport ); typedef void IBMAD_CALL_CONV (*f_mad_rpc_set_retries)(struct ibmad_port *port, int retries); typedef void IBMAD_CALL_CONV (*f_mad_rpc_set_timeout)(struct ibmad_port *port, int timeout); @@ -224,7 +235,9 @@ struct __ibvsmad_hndl_t f_ib_vendor_call_via ib_vendor_call_via; f_ib_resolve_portid_str_via ib_resolve_portid_str_via; f_smp_query_via smp_query_via; + f_smp_query_status_via smp_query_status_via; f_smp_set_via smp_set_via; + f_smp_set_status_via smp_set_status_via; f_mad_rpc_set_retries mad_rpc_set_retries; f_mad_rpc_set_timeout mad_rpc_set_timeout; f_mad_get_field mad_get_field; @@ -391,7 +404,9 @@ int process_dynamic_linking(ibvs_mad *ivm, int mad_init) MY_GetProcAddress(ivm, ib_vendor_call_via ); MY_GetProcAddress(ivm, ib_resolve_portid_str_via); MY_GetProcAddress(ivm, smp_query_via ); + MY_GetProcAddressIgnoreFail(ivm, smp_query_status_via ); MY_GetProcAddress(ivm, smp_set_via ); + MY_GetProcAddressIgnoreFail(ivm, smp_set_status_via ); MY_GetProcAddress(ivm, mad_rpc_set_retries ); MY_GetProcAddress(ivm, mad_rpc_set_timeout ); MY_GetProcAddress(ivm, portid2str ); @@ -427,7 +442,7 @@ int process_dynamic_linking(ibvs_mad *ivm, int mad_init) } } if (!ivm->dl_handle) { - const char* errstr = dlerror(); + const char* errstr=dlerror(); IBERROR(("%s", errstr)); //free(ivm); return -1; @@ -441,12 +456,14 @@ int process_dynamic_linking(ibvs_mad *ivm, int mad_init) MY_DLSYM(ivm, ib_vendor_call_via ); MY_DLSYM(ivm, ib_resolve_portid_str_via); MY_DLSYM(ivm, smp_query_via ); + MY_DLSYM_IGNORE_FAIL(ivm, smp_query_status_via ); MY_DLSYM(ivm, smp_set_via ); + MY_DLSYM_IGNORE_FAIL(ivm, smp_set_status_via ); MY_DLSYM(ivm, mad_rpc_set_retries ); MY_DLSYM(ivm, mad_rpc_set_timeout ); MY_DLSYM(ivm, mad_get_field ); - MY_DLSYM(ivm, portid2str ); - MY_DLSYM(ivm, ibdebug ); + MY_DLSYM(ivm, portid2str ); + MY_DLSYM(ivm, ibdebug ); return 0; } @@ -883,14 +900,92 @@ mib_swreset(mfile *mf) #define IB_SMP_ATTR_REG_ACCESS 0xff52 +static int mib_status_translate(int status) +{ + switch ((status >> 2) & 0x7) { + case 1: + return ME_MAD_BAD_VER; + case 2: + return ME_MAD_METHOD_NOT_SUPP; + case 3: + return ME_MAD_METHOD_ATTR_COMB_NOT_SUPP; + case 7: + return ME_MAD_BAD_DATA; + } + + if (status & 0x1) + return ME_MAD_BUSY; + else if ((status >> 1) & 0x1) + return ME_MAD_REDIRECT; + + return ME_MAD_GENERAL_ERR; +} + int mib_acces_reg_mad(mfile *mf, u_int8_t *data) { u_int8_t* p; ibvs_mad* h = (ibvs_mad*)(mf->ctx); + int status = -1; + // Call smp set function - p = h->smp_set_via(data, &(h->portid), IB_SMP_ATTR_REG_ACCESS, 0, 0, h->srcport); - if (!p) { - return -1; + if (h->smp_set_status_via) { + p = h->smp_set_status_via(data, &(h->portid), IB_SMP_ATTR_REG_ACCESS, 0, 0, &status, h->srcport); + } else { + p = h->smp_set_via(data, &(h->portid), IB_SMP_ATTR_REG_ACCESS, 0, 0, h->srcport); } - return 0; + if (!p || status > 0) { + if (status != -1) { + return mib_status_translate(status); + } else { + return -1; + } + } + + return ME_OK; +} + +int mib_smp_set(mfile* mf, u_int8_t* data, u_int16_t attr_id, u_int32_t attr_mod) +{ + u_int8_t* p; + int status = -1; + ibvs_mad* h = (ibvs_mad*)(mf->ctx); + // Call smp set function + if (h->smp_set_status_via) { + p = h->smp_set_status_via(data, &(h->portid), attr_id, attr_mod, 0, &status, h->srcport); + } else { + p = h->smp_set_via(data, &(h->portid), attr_id, attr_mod, 0, h->srcport); + } + if (!p || status > 0) { + if (status != -1) { + return mib_status_translate(status); + } else { + return -1; + } + } + + return ME_OK; +} + +int mib_smp_get(mfile* mf, u_int8_t* data, u_int16_t attr_id, u_int32_t attr_mod) +{ + u_int8_t* p; + int status = -1; + ibvs_mad* h = (ibvs_mad*)(mf->ctx); + + // Call smp set function + if (h->smp_query_status_via) { + p = h->smp_query_status_via(data, &(h->portid), attr_id, attr_mod, 0, &status, h->srcport); + } else { + p = h->smp_query_via(data, &(h->portid), attr_id, attr_mod, 0, h->srcport); + } + + if (!p || status > 0) { + if (status != -1) { + return mib_status_translate(status); + } else { + return -1; + } + } + + return ME_OK; } diff --git a/mtcr_ul/mtcr_int_defs.h b/mtcr_ul/mtcr_int_defs.h index 3efe2da..1cae007 100644 --- a/mtcr_ul/mtcr_int_defs.h +++ b/mtcr_ul/mtcr_int_defs.h @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND diff --git a/mtcr_ul/mtcr_tools_cif.c b/mtcr_ul/mtcr_tools_cif.c index b6f83c4..87caa05 100644 --- a/mtcr_ul/mtcr_tools_cif.c +++ b/mtcr_ul/mtcr_tools_cif.c @@ -30,7 +30,6 @@ * SOFTWARE. */ - #include #include #include @@ -234,12 +233,17 @@ static int translate_status(int status) { switch (status) { case 0x0: return ME_OK; + case 0x1: + return ME_CMDIF_BUSY; case 0x2: return ME_CMDIF_BAD_OP; + case 0x3: + return ME_CMDIF_UNKN_TLV; case 0x4: return ME_CMDIF_BAD_SYS; default: - return ME_CR_ERROR; + //fprintf(stderr, "-D- Unknown status: 0x%x\n", status); + return ME_CMDIF_BAD_STATUS; } } @@ -258,7 +262,7 @@ static int tools_cmdif_mbox_read(mfile* mf, u_int32_t offset, u_int64_t* output) *output = cmdif.out_param; //printf("-D- outparam: 0x%lx\n", cmdif.out_param); if (rc || cmdif.status) { - return ME_CR_ERROR; + return rc ? rc : translate_status(cmdif.status); } //printf("-D- mbox read OK\n"); return ME_OK; @@ -278,7 +282,7 @@ static int tools_cmdif_mbox_write(mfile* mf, u_int32_t offset, u_int64_t input) int rc = tools_cmdif_send_cmd_int(mf, &cmdif); if (rc || cmdif.status) { - return ME_CR_ERROR; + return rc ? rc : translate_status(cmdif.status); } return ME_OK; } diff --git a/mtcr_ul/mtcr_tools_cif.h b/mtcr_ul/mtcr_tools_cif.h index 704d5e6..7d3c8b5 100644 --- a/mtcr_ul/mtcr_tools_cif.h +++ b/mtcr_ul/mtcr_tools_cif.h @@ -30,7 +30,6 @@ * SOFTWARE. */ - #ifndef _MTCR_TOOLS_CIF /* guard */ #define _MTCR_TOOLS_CIF diff --git a/mtcr_ul/mtcr_ul.c b/mtcr_ul/mtcr_ul.c index cef82f2..5a49e73 100644 --- a/mtcr_ul/mtcr_ul.c +++ b/mtcr_ul/mtcr_ul.c @@ -428,7 +428,7 @@ int mtcr_mmap(struct pcicr_context *mf, const char *name, off_t off, int ioctl_n return -1; } } - */ + */ mf->fd = open(name, O_RDWR | O_SYNC); if (mf->fd < 0) return -1; @@ -456,6 +456,7 @@ int mtcr_mmap(struct pcicr_context *mf, const char *name, off_t off, int ioctl_n int mtcr_pcicr_mread4(mfile *mf, unsigned int offset, u_int32_t *value) { struct pcicr_context *ctx = mf->ctx; + if (offset >= MTCR_MAP_SIZE) { errno = EINVAL; return 0; @@ -908,6 +909,10 @@ dev_info* mdevices_info(int mask, int* len) rc = mdevices(devs, size, mask); } while (rc == -1); + if ( rc <= 0 ) { + len = 0; + return NULL; + } // For each device read dev_info* dev_info_arr = (dev_info*) malloc(sizeof(dev_info)*rc); memset(dev_info_arr, 0, sizeof(dev_info)*rc); @@ -1476,7 +1481,7 @@ static int mreg_send_wrapper(mfile* mf, u_int8_t *data, int r_icmd_size, int w_i return ME_MAD_SEND_FAILED; } } else if (supports_icmd(mf)) { - #ifdef MST_UL //ugly hack to avoid compiler warrnings + #if defined(MST_UL) && !defined(MST_UL_ICMD) //ugly hack to avoid compiler warrnings if (0) { rc = icmd_send_command_int(mf, FLASH_REG_ACCESS, data, w_icmd_size, r_icmd_size, 0); } @@ -1719,15 +1724,34 @@ const char* m_err2str(MError status) // TOOLS HCR access errors case ME_CMDIF_BUSY: - return "Tools HCR busy."; + return "Tools HCR busy"; case ME_CMDIF_TOUT: - return "Tools HCR time out."; + return "Tools HCR time out"; case ME_CMDIF_BAD_OP: return "Operation not supported"; case ME_CMDIF_NOT_SUPP: - return "Tools HCR not supported."; + return "Tools HCR not supported"; case ME_CMDIF_BAD_SYS: - return "bad system status (driver may be down or Fw does not support this operation)."; + return "bad system status (driver may be down or Fw does not support this operation)"; + case ME_CMDIF_UNKN_TLV: + return "Unknown TLV"; + + // MAD IFC errors + case ME_MAD_BUSY: + return "Temporarily busy. MAD discarded. This is not an error"; + case ME_MAD_REDIRECT: + return "Redirection. This is not an error"; + case ME_MAD_BAD_VER: + return "Bad version"; + case ME_MAD_METHOD_NOT_SUPP: + return "Method not supported"; + case ME_MAD_METHOD_ATTR_COMB_NOT_SUPP: + return "Method and attribute combination isn't supported"; + case ME_MAD_BAD_DATA: + return "Bad attribute modifer or field"; + case ME_MAD_GENERAL_ERR: + return "Unknown MAD error"; + default: return "Unknown error code"; } diff --git a/mtcr_ul/packets_common.c b/mtcr_ul/packets_common.c index 14c3d31..2482361 100644 --- a/mtcr_ul/packets_common.c +++ b/mtcr_ul/packets_common.c @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -30,7 +30,6 @@ * SOFTWARE. */ - #include "packets_common.h" #include #include diff --git a/mtcr_ul/packets_common.h b/mtcr_ul/packets_common.h index e67bd06..daf28fe 100644 --- a/mtcr_ul/packets_common.h +++ b/mtcr_ul/packets_common.h @@ -14,12 +14,12 @@ * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. - * + * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -30,7 +30,6 @@ * SOFTWARE. */ - #ifndef packet_common_H #define packet_common_H diff --git a/reg_access/reg_access.c b/reg_access/reg_access.c index 337170a..f6b92c2 100644 --- a/reg_access/reg_access.c +++ b/reg_access/reg_access.c @@ -30,99 +30,61 @@ * SOFTWARE. */ - #include "reg_access.h" -#define REG_ID_PPTCS 0x5801 -#define REG_ID_PGMP 0x5802 -#define REG_ID_PPTS 0x5803 -#define REG_ID_PLTS 0x5804 -#define REG_ID_PLSRP 0x5805 -#define REG_ID_PGPS 0x5806 -#define REG_ID_PAOS 0x5006 -#define REG_ID_PTYS 0x5004 -#define REG_ID_MCIA 0x9014 -#define REG_ID_MTMP 0x900a -#define REG_ID_PMLP 0x5002 #define REG_ID_MFPA 0x9010 #define REG_ID_MFBA 0x9011 #define REG_ID_MFBE 0x9012 +#define REG_ID_PMDIO 0x9017 +#define REG_ID_PMDIC 0x9021 #define REG_ID_MNVA 0x9024 #define REG_ID_MNVI 0x9025 #define REG_ID_MNVIA 0x9029 -// for debug: -#ifdef _ENABLE_DEBUG_ -# define DEBUG_PRINT_SEND(data_struct, struct_name)\ - printf("-I- Data Sent:\n");\ - register_access_##struct_name##_print(data_struct, stdout, 1) -# define DEBUG_PRINT_RECIEVE(data_struct, struct_name)\ - printf("-I- Data Recieved:\n");\ - register_access_##struct_name##_print(data_struct, stdout, 1) -#else -# define DEBUG_PRINT_SEND(data_struct, struct_name) -# define DEBUG_PRINT_RECIEVE(data_struct, struct_name) -#endif +// TODO: get correct register ID for mfrl mfai +#define REG_ID_MFRL 0x9028 +#define REG_ID_MFAI 0x9029 // for debug: +//#define _ENABLE_DEBUG_ #ifdef _ENABLE_DEBUG_ -# define DEBUG_PRINT_SEND2(data_struct, struct_name)\ - printf("-I- Data Sent:\n");\ - tools_##struct_name##_print(data_struct, stdout, 1) -# define DEBUG_PRINT_RECIEVE2(data_struct, struct_name)\ - printf("-I- Data Recieved:\n");\ - tools_##struct_name##_print(data_struct, stdout, 1) +# define DEBUG_PRINT_SEND(data_struct, struct_name, method, prefix)\ + printf("-I- Data Sent (Method: %s):\n", method == REG_ACCESS_METHOD_SET ? "SET" : "GET");\ + prefix##_##struct_name##_print(data_struct, stdout, 1) +# define DEBUG_PRINT_RECIEVE(data_struct, struct_name, method, prefix)\ + printf("-I- Data Received (Mehtod: %s):\n", method == REG_ACCESS_METHOD_SET ? "SET" : "GET");\ + prefix##_##struct_name##_print(data_struct, stdout, 1) #else -# define DEBUG_PRINT_SEND2(data_struct, struct_name) -# define DEBUG_PRINT_RECIEVE2(data_struct, struct_name) +# define DEBUG_PRINT_SEND(data_struct, struct_name, method, prefix) +# define DEBUG_PRINT_RECIEVE(data_struct, struct_name, method, prefix) #endif /***************************************************/ // register access for variable size registers (like mfba) -#define REG_ACCCESS_VAR(mf, methdod, reg_id, data_struct, struct_name, reg_size , r_reg_size, w_reg_size)\ - int status = 0, rc;\ - int max_data_size = register_access_##struct_name##_size();\ +#define REG_ACCCESS_VAR(mf, methdod, reg_id, data_struct, struct_name, reg_size , r_reg_size, w_reg_size, prefix)\ + int status = 0;\ + int rc;\ + int max_data_size = prefix##_##struct_name##_size();\ u_int8_t data[max_data_size];\ - register_access_##struct_name##_pack(data_struct, data);\ + prefix##_##struct_name##_pack(data_struct, data);\ if (method != REG_ACCESS_METHOD_GET && method != REG_ACCESS_METHOD_SET) {\ return ME_REG_ACCESS_BAD_METHOD;\ }\ - DEBUG_PRINT_SEND(data_struct, struct_name);\ + DEBUG_PRINT_SEND(data_struct, struct_name, method, prefix);\ rc = maccess_reg(mf, reg_id, (maccess_reg_method_t)method, data, reg_size, r_reg_size, w_reg_size, &status);\ - register_access_##struct_name##_unpack(data_struct, data);\ - DEBUG_PRINT_RECIEVE(data_struct, struct_name);\ + prefix##_##struct_name##_unpack(data_struct, data);\ + DEBUG_PRINT_RECIEVE(data_struct, struct_name, method, prefix);\ if (rc || status) {\ return (reg_access_status_t)rc;\ }\ return ME_OK // register access for static sized registers -#define REG_ACCCESS(mf, methdod, reg_id, data_struct, struct_name)\ - int data_size = register_access_##struct_name##_size();\ - REG_ACCCESS_VAR(mf, methdod, reg_id, data_struct, struct_name, data_size, data_size, data_size)\ - - -// register access for registers defined in tools.adb (this is why I DONT like MACROS!!!) - -#define REG_ACCESS_TOOLS(mf, methdod, reg_id, data_struct, struct_name, reg_size , r_reg_size, w_reg_size)\ - int status = 0, rc;\ - int max_data_size = tools_##struct_name##_size();\ - u_int8_t data[max_data_size];\ - tools_##struct_name##_pack(data_struct, data);\ - if (method != REG_ACCESS_METHOD_GET && method != REG_ACCESS_METHOD_SET) {\ - return ME_REG_ACCESS_BAD_METHOD;\ - }\ - DEBUG_PRINT_SEND2(data_struct, struct_name);\ - rc = maccess_reg(mf, reg_id, (maccess_reg_method_t)method, data, reg_size, r_reg_size, w_reg_size, &status);\ - tools_##struct_name##_unpack(data_struct, data);\ - DEBUG_PRINT_RECIEVE2(data_struct, struct_name);\ - if (rc || status) {\ - return (reg_access_status_t)rc;\ - }\ - return ME_OK - +#define REG_ACCCESS(mf, methdod, reg_id, data_struct, struct_name, prefix)\ + int data_size = prefix##_##struct_name##_size();\ + REG_ACCCESS_VAR(mf, methdod, reg_id, data_struct, struct_name, data_size, data_size, data_size, prefix) /************************************ * Function: reg_access_mfba @@ -141,7 +103,7 @@ reg_access_status_t reg_access_mfba(mfile* mf, reg_access_method_t method, struc r_size_reg -= mfba->size; } //printf("-D- MFBA: data size: %d, reg_size: %d, r_size_reg: %d, w_size_reg: %d\n",mfba->size,reg_size,r_size_reg,w_size_reg); - REG_ACCCESS_VAR(mf, method, REG_ID_MFBA, mfba, mfba, reg_size, r_size_reg, w_size_reg); + REG_ACCCESS_VAR(mf, method, REG_ID_MFBA, mfba, mfba, reg_size, r_size_reg, w_size_reg, register_access); } /************************************ @@ -149,7 +111,7 @@ reg_access_status_t reg_access_mfba(mfile* mf, reg_access_method_t method, struc ************************************/ reg_access_status_t reg_access_mfbe(mfile* mf, reg_access_method_t method, struct register_access_mfbe* mfbe) { - REG_ACCCESS(mf, method, REG_ID_MFBE, mfbe, mfbe); + REG_ACCCESS(mf, method, REG_ID_MFBE, mfbe, mfbe, register_access); } /************************************ @@ -157,16 +119,16 @@ reg_access_status_t reg_access_mfbe(mfile* mf, reg_access_method_t method, struc ************************************/ reg_access_status_t reg_access_mfpa(mfile* mf, reg_access_method_t method, struct register_access_mfpa* mfpa) { - REG_ACCCESS(mf, method, REG_ID_MFPA, mfpa, mfpa); + REG_ACCCESS(mf, method, REG_ID_MFPA, mfpa, mfpa, register_access); } /************************************ * Function: reg_access_mnva ************************************/ -reg_access_status_t reg_access_mnva (mfile* mf, reg_access_method_t method, struct tools_mnva* mnva) +reg_access_status_t reg_access_mnva (mfile* mf, reg_access_method_t method, struct tools_open_mnva* mnva) { // reg_size is in bytes - u_int32_t reg_size = (mnva->mnv_hdr.length << 2) + tools_mnv_hdr_size(); + u_int32_t reg_size = (mnva->mnv_hdr.length << 2) + tools_open_mnv_hdr_size(); u_int32_t r_size_reg = reg_size; u_int32_t w_size_reg= reg_size; if (method == REG_ACCESS_METHOD_GET) { @@ -174,31 +136,29 @@ reg_access_status_t reg_access_mnva (mfile* mf, reg_access_method_t method, stru } else { r_size_reg -= mnva->mnv_hdr.length << 2; } - REG_ACCESS_TOOLS(mf, method, REG_ID_MNVA, mnva, mnva, reg_size , r_size_reg, w_size_reg); + REG_ACCCESS_VAR(mf, method, REG_ID_MNVA, mnva, mnva, reg_size , r_size_reg, w_size_reg, tools_open); } /************************************ * Function: reg_access_mnvi ************************************/ -reg_access_status_t reg_access_mnvi (mfile* mf, reg_access_method_t method, struct tools_mnvi* mnvi) +reg_access_status_t reg_access_mnvi (mfile* mf, reg_access_method_t method, struct tools_open_mnvi* mnvi) { if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method return ME_REG_ACCESS_BAD_METHOD; } - u_int32_t reg_size = tools_mnvi_size(); - REG_ACCESS_TOOLS(mf, method, REG_ID_MNVI, mnvi, mnvi, reg_size , reg_size, reg_size); + REG_ACCCESS(mf, method, REG_ID_MNVI, mnvi, mnvi, tools_open); } /************************************ - * Function: reg_access_mnvia + * Function: reg_access_mnvi ************************************/ -reg_access_status_t reg_access_mnvia (mfile* mf, reg_access_method_t method, struct tools_mnvia* mnvia) +reg_access_status_t reg_access_mnvia (mfile* mf, reg_access_method_t method, struct tools_open_mnvia* mnvia) { if (method != REG_ACCESS_METHOD_SET ) { // this register supports only set method return ME_REG_ACCESS_BAD_METHOD; } - u_int32_t reg_size = tools_mnvia_size(); - REG_ACCESS_TOOLS(mf, method, REG_ID_MNVIA, mnvia, mnvia, reg_size , reg_size, reg_size); + REG_ACCCESS(mf, method, REG_ID_MNVIA, mnvia, mnvia, tools_open); } /************************************ diff --git a/reg_access/reg_access.h b/reg_access/reg_access.h index 6176dfe..c021ab9 100644 --- a/reg_access/reg_access.h +++ b/reg_access/reg_access.h @@ -30,7 +30,6 @@ * SOFTWARE. */ - #ifndef REG_ACCESS_H #define REG_ACCESS_H #ifdef __cplusplus @@ -38,10 +37,10 @@ extern "C" { #endif #include -#include +#include // Hack, we include this for the MNV registers as they are not officialy a part of register_access so we defined them in tools.adb -#include +#include enum { // header lengths in bytes REG_ACCESS_MFBA_HEADER_LEN = 12, @@ -55,13 +54,14 @@ typedef enum { // we use the same error messages as mtcr typedef MError reg_access_status_t; + const char* reg_access_err2str(reg_access_status_t status); reg_access_status_t reg_access_mfba (mfile* mf, reg_access_method_t method, struct register_access_mfba* mfba); reg_access_status_t reg_access_mfbe (mfile* mf, reg_access_method_t method, struct register_access_mfbe* mfbe); reg_access_status_t reg_access_mfpa (mfile* mf, reg_access_method_t method, struct register_access_mfpa* mfpa); -reg_access_status_t reg_access_mnva (mfile* mf, reg_access_method_t method, struct tools_mnva* mnva); -reg_access_status_t reg_access_mnvi (mfile* mf, reg_access_method_t method, struct tools_mnvi* mnvi); -reg_access_status_t reg_access_mnvia (mfile* mf, reg_access_method_t method, struct tools_mnvia* mnvia); +reg_access_status_t reg_access_mnva (mfile* mf, reg_access_method_t method, struct tools_open_mnva* mnva); +reg_access_status_t reg_access_mnvi (mfile* mf, reg_access_method_t method, struct tools_open_mnvi* mnvi); +reg_access_status_t reg_access_mnvia (mfile* mf, reg_access_method_t method, struct tools_open_mnvia* mnvia); #ifdef __cplusplus } diff --git a/small_utils/hca_self_test.ofed b/small_utils/hca_self_test.ofed index 6bd7670..acd4fd9 100755 --- a/small_utils/hca_self_test.ofed +++ b/small_utils/hca_self_test.ofed @@ -144,6 +144,7 @@ fi mlx4_core_ko=`modinfo mlx4_core | grep filename | awk '{print $NF}'` +mlx4_core_ko=`readlink -f $mlx4_core_ko` if [ $OS_TYPE = "DEBIAN" ]; then RPM_CHECK_FAIL=0 RPM_CUR_BOOTED_KER=1 diff --git a/tools_layouts/Makefile.am b/tools_layouts/Makefile.am index 0717143..a760c43 100644 --- a/tools_layouts/Makefile.am +++ b/tools_layouts/Makefile.am @@ -36,6 +36,5 @@ AM_CFLAGS = -Wall -W -g -MP -MD -pipe $(COMPILER_FPIC) noinst_LIBRARIES = libtools_layouts.a libtools_layouts_a_SOURCES = cibfw_layouts.c adb_to_c_utils.c adb_to_c_utils.h cibfw_layouts.h \ - register_access_layouts.c register_access_layouts.c \ - tools_layouts.c tools_layouts.h - + register_access_open_layouts.h register_access_open_layouts.c \ + tools_open_layouts.c tools_open_layouts.h diff --git a/tools_layouts/register_access_layouts.c b/tools_layouts/register_access_open_layouts.c similarity index 74% rename from tools_layouts/register_access_layouts.c rename to tools_layouts/register_access_open_layouts.c index 8120255..2752339 100644 --- a/tools_layouts/register_access_layouts.c +++ b/tools_layouts/register_access_open_layouts.c @@ -1,44 +1,26 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: + +/* - Mellanox Confidential and Proprietary - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. */ + /*** - *** This file was generated at "2014-03-11 10:09:59" + *** This file was generated at "2014-07-08 14:00:34" *** by: - *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access/register_access.adb --file-prefix register_access --prefix register_access_ - *** and modified to fit the needs of mstflint. + *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access_open/register_access_open.adb --file-prefix register_access_open --prefix register_access_ ***/ -#include "register_access_layouts.h" +#include "register_access_open_layouts.h" -void register_access_Byte_pack(const struct register_access_Byte *ptr_struct, u_int8_t* ptr_buff){ +void register_access_mfba_pack(const struct register_access_mfba *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -46,12 +28,26 @@ void register_access_Byte_pack(const struct register_access_Byte *ptr_struct, u_ (void)ptr_struct; (void)ptr_buff; - offset=0; - adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->val); + offset=26; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->fs); + + offset=23; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->p); + + offset=55; + adb2c_push_bits_to_buff(ptr_buff, offset, 9, (u_int32_t)ptr_struct->size); + + offset=72; + adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->address); + + for (i=0; i < 64; i++) { + offset=adb2c_calc_array_field_address(96, 32, i, 2144, 0); + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->data[i]); + } } -void register_access_Byte_unpack(struct register_access_Byte *ptr_struct, const u_int8_t* ptr_buff){ +void register_access_mfba_unpack(struct register_access_mfba *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -59,30 +55,58 @@ void register_access_Byte_unpack(struct register_access_Byte *ptr_struct, const (void)ptr_struct; (void)ptr_buff; - offset=0; - ptr_struct->val = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + offset=26; + ptr_struct->fs = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=23; + ptr_struct->p = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=55; + ptr_struct->size = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 9); + + offset=72; + ptr_struct->address = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24); + + for (i=0; i < 64; i++) { + offset=adb2c_calc_array_field_address(96, 32, i, 2144, 0); + ptr_struct->data[i] = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + } } -void register_access_Byte_print(const struct register_access_Byte *ptr_struct, FILE* file, int indent_level){ +void register_access_mfba_print(const struct register_access_mfba *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== Byte ========\n"); + fprintf(file, "======== mfba ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "val : "UH_FMT"\n", ptr_struct->val); + fprintf(file, "fs : "UH_FMT"\n", ptr_struct->fs); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "p : "UH_FMT"\n", ptr_struct->p); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "size : "UH_FMT"\n", ptr_struct->size); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "address : "UH_FMT"\n", ptr_struct->address); + + for (i=0; i < 64; i++) { + adb2c_add_indentation(file, indent_level); + fprintf(file, "data[%3d] : "U32H_FMT"\n", i, ptr_struct->data[i]); + } } -int register_access_Byte_size(){ - return 1; +int register_access_mfba_size(){ + return 268; } -void register_access_Byte_dump(const struct register_access_Byte *ptr_struct, FILE* file) { - register_access_Byte_print(ptr_struct, file, 0); +void register_access_mfba_dump(const struct register_access_mfba *ptr_struct, FILE* file) { + register_access_mfba_print(ptr_struct, file, 0); } void register_access_mfpa_pack(const struct register_access_mfpa *ptr_struct, u_int8_t* ptr_buff){ @@ -195,7 +219,7 @@ void register_access_mfpa_dump(const struct register_access_mfpa *ptr_struct, FI register_access_mfpa_print(ptr_struct, file, 0); } -void register_access_mfba_pack(const struct register_access_mfba *ptr_struct, u_int8_t* ptr_buff){ +void register_access_mfbe_pack(const struct register_access_mfbe *ptr_struct, u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -209,20 +233,12 @@ void register_access_mfba_pack(const struct register_access_mfba *ptr_struct, u_ offset=23; adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->p); - offset=55; - adb2c_push_bits_to_buff(ptr_buff, offset, 9, (u_int32_t)ptr_struct->size); - offset=72; adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->address); - for (i=0; i < 64; i++) { - offset=adb2c_calc_array_field_address(96, 32, i, 2144, 0); - adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->data[i]); - } - } -void register_access_mfba_unpack(struct register_access_mfba *ptr_struct, const u_int8_t* ptr_buff){ +void register_access_mfbe_unpack(struct register_access_mfbe *ptr_struct, const u_int8_t* ptr_buff){ u_int32_t offset; int i=0; (void)offset; @@ -236,22 +252,14 @@ void register_access_mfba_unpack(struct register_access_mfba *ptr_struct, const offset=23; ptr_struct->p = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - offset=55; - ptr_struct->size = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 9); - offset=72; ptr_struct->address = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24); - for (i=0; i < 64; i++) { - offset=adb2c_calc_array_field_address(96, 32, i, 2144, 0); - ptr_struct->data[i] = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); - } - } -void register_access_mfba_print(const struct register_access_mfba *ptr_struct, FILE* file, int indent_level){ +void register_access_mfbe_print(const struct register_access_mfbe *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mfba ========\n"); + fprintf(file, "======== mfbe ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; @@ -263,88 +271,56 @@ void register_access_mfba_print(const struct register_access_mfba *ptr_struct, F adb2c_add_indentation(file, indent_level); fprintf(file, "p : "UH_FMT"\n", ptr_struct->p); - adb2c_add_indentation(file, indent_level); - fprintf(file, "size : "UH_FMT"\n", ptr_struct->size); - adb2c_add_indentation(file, indent_level); fprintf(file, "address : "UH_FMT"\n", ptr_struct->address); - for (i=0; i < 64; i++) { - adb2c_add_indentation(file, indent_level); - fprintf(file, "data[%3d] : "U32H_FMT"\n", i, ptr_struct->data[i]); - } - } -int register_access_mfba_size(){ - return 268; +int register_access_mfbe_size(){ + return 12; } -void register_access_mfba_dump(const struct register_access_mfba *ptr_struct, FILE* file) { - register_access_mfba_print(ptr_struct, file, 0); +void register_access_mfbe_dump(const struct register_access_mfbe *ptr_struct, FILE* file) { + register_access_mfbe_print(ptr_struct, file, 0); } -void register_access_mfbe_pack(const struct register_access_mfbe *ptr_struct, u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=26; - adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->fs); - - offset=23; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->p); - - offset=72; - adb2c_push_bits_to_buff(ptr_buff, offset, 24, (u_int32_t)ptr_struct->address); - +void register_access_register_access_open_Nodes_pack(const union register_access_register_access_open_Nodes *ptr_struct, u_int8_t* ptr_buff) +{ + memcpy(ptr_buff, ptr_struct, 268); } -void register_access_mfbe_unpack(struct register_access_mfbe *ptr_struct, const u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=26; - ptr_struct->fs = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); - - offset=23; - ptr_struct->p = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=72; - ptr_struct->address = (u_int32_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 24); - +void register_access_register_access_open_Nodes_unpack(union register_access_register_access_open_Nodes *ptr_struct, const u_int8_t* ptr_buff) +{ + memcpy(ptr_struct, ptr_buff, 268); } -void register_access_mfbe_print(const struct register_access_mfbe *ptr_struct, FILE* file, int indent_level){ +void register_access_register_access_open_Nodes_print(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file, int indent_level){ adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mfbe ========\n"); + fprintf(file, "======== register_access_open_Nodes ========\n"); int i=0; (void)i;(void)ptr_struct; (void)file; (void)indent_level; adb2c_add_indentation(file, indent_level); - fprintf(file, "fs : "UH_FMT"\n", ptr_struct->fs); + fprintf(file, "mfbe:\n"); + register_access_mfbe_print(&(ptr_struct->mfbe), file, indent_level + 1); adb2c_add_indentation(file, indent_level); - fprintf(file, "p : "UH_FMT"\n", ptr_struct->p); + fprintf(file, "mfpa:\n"); + register_access_mfpa_print(&(ptr_struct->mfpa), file, indent_level + 1); adb2c_add_indentation(file, indent_level); - fprintf(file, "address : "UH_FMT"\n", ptr_struct->address); + fprintf(file, "mfba:\n"); + register_access_mfba_print(&(ptr_struct->mfba), file, indent_level + 1); } -int register_access_mfbe_size(){ - return 12; +int register_access_register_access_open_Nodes_size(){ + return 268; } -void register_access_mfbe_dump(const struct register_access_mfbe *ptr_struct, FILE* file) { - register_access_mfbe_print(ptr_struct, file, 0); +void register_access_register_access_open_Nodes_dump(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file) { + register_access_register_access_open_Nodes_print(ptr_struct, file, 0); } + diff --git a/tools_layouts/register_access_layouts.h b/tools_layouts/register_access_open_layouts.h similarity index 62% rename from tools_layouts/register_access_layouts.h rename to tools_layouts/register_access_open_layouts.h index dda2ab3..9e5962d 100644 --- a/tools_layouts/register_access_layouts.h +++ b/tools_layouts/register_access_open_layouts.h @@ -1,43 +1,25 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: + +/* - Mellanox Confidential and Proprietary - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. */ + /*** - *** This file was generated at "2014-03-11 10:09:59" + *** This file was generated at "2014-07-08 14:00:34" *** by: - *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access/register_access.adb --file-prefix register_access --prefix register_access_ - *** and modified to fit the needs of mstflint. + *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/register_access_open/register_access_open.adb --file-prefix register_access_open --prefix register_access_ ***/ -#ifndef REGISTER_ACCESS_LAYOUTS_H -#define REGISTER_ACCESS_LAYOUTS_H +#ifndef REGISTER_ACCESS_OPEN_LAYOUTS_H +#define REGISTER_ACCESS_OPEN_LAYOUTS_H #ifdef __cplusplus @@ -45,12 +27,27 @@ extern "C" { #endif #include "adb_to_c_utils.h"/* Description - */ -/* Size in bytes - 1 */ -struct register_access_Byte { +/* Size in bytes - 268 */ +struct register_access_mfba { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - */ - /* 0.0 - 0.7 */ - u_int8_t val; + /* Description - Flash Select */ + /* 0.4 - 0.5 */ + u_int8_t fs; + /* Description - Parallel */ + /* 0.8 - 0.8 */ + u_int8_t p; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - Transaction size */ + /* 4.0 - 4.8 */ + u_int16_t size; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - address in bytes */ + /* 8.0 - 8.23 */ + u_int32_t address; +/*---------------- DWORD[3] (Offset 0xc) ----------------*/ + /* Description - data */ + /* 12.0 - 268.31 */ + u_int32_t data[64]; }; /* Description - */ @@ -89,8 +86,8 @@ struct register_access_mfpa { }; /* Description - */ -/* Size in bytes - 268 */ -struct register_access_mfba {/* Nodes */ +/* Size in bytes - 12 */ +struct register_access_mfbe { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ /* Description - Flash Select */ /* 0.4 - 0.5 */ @@ -98,51 +95,29 @@ struct register_access_mfba {/* Nodes */ /* Description - Parallel */ /* 0.8 - 0.8 */ u_int8_t p; -/*---------------- DWORD[1] (Offset 0x4) ----------------*/ - /* Description - Transaction size */ - /* 4.0 - 4.8 */ - u_int16_t size; /*---------------- DWORD[2] (Offset 0x8) ----------------*/ /* Description - address in bytes */ /* 8.0 - 8.23 */ u_int32_t address; -/*---------------- DWORD[3] (Offset 0xc) ----------------*/ - /* Description - data */ - /* 12.0 - 268.31 */ - u_int32_t data[64]; }; /* Description - */ -/* Size in bytes - 12 */ -struct register_access_mfbe { +/* Size in bytes - 268 */ +union register_access_register_access_open_Nodes { /*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - Flash Select */ - /* 0.4 - 0.5 */ - u_int8_t fs; - /* Description - Parallel */ - /* 0.8 - 0.8 */ - u_int8_t p; -/*---------------- DWORD[2] (Offset 0x8) ----------------*/ - /* Description - address in bytes */ - /* 8.0 - 8.23 */ - u_int32_t address; + /* Description - */ + /* 0.0 - 12.31 */ + struct register_access_mfbe mfbe; + /* Description - */ + /* 0.0 - 36.31 */ + struct register_access_mfpa mfpa; + /* Description - */ + /* 0.0 - 268.31 */ + struct register_access_mfba mfba; }; + /*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/ -/* Byte */ -void register_access_Byte_pack(const struct register_access_Byte *ptr_struct, u_int8_t* ptr_buff); -void register_access_Byte_unpack(struct register_access_Byte *ptr_struct, const u_int8_t* ptr_buff); -void register_access_Byte_print(const struct register_access_Byte *ptr_struct, FILE* file, int indent_level); -int register_access_Byte_size(); -#define REGISTER_ACCESS_BYTE_SIZE (0x1) -void register_access_Byte_dump(const struct register_access_Byte *ptr_struct, FILE* file); -/* mfpa */ -void register_access_mfpa_pack(const struct register_access_mfpa *ptr_struct, u_int8_t* ptr_buff); -void register_access_mfpa_unpack(struct register_access_mfpa *ptr_struct, const u_int8_t* ptr_buff); -void register_access_mfpa_print(const struct register_access_mfpa *ptr_struct, FILE* file, int indent_level); -int register_access_mfpa_size(); -#define REGISTER_ACCESS_MFPA_SIZE (0x24) -void register_access_mfpa_dump(const struct register_access_mfpa *ptr_struct, FILE* file); /* mfba */ void register_access_mfba_pack(const struct register_access_mfba *ptr_struct, u_int8_t* ptr_buff); void register_access_mfba_unpack(struct register_access_mfba *ptr_struct, const u_int8_t* ptr_buff); @@ -150,6 +125,13 @@ void register_access_mfba_print(const struct register_access_mfba *ptr_struct, F int register_access_mfba_size(); #define REGISTER_ACCESS_MFBA_SIZE (0x10c) void register_access_mfba_dump(const struct register_access_mfba *ptr_struct, FILE* file); +/* mfpa */ +void register_access_mfpa_pack(const struct register_access_mfpa *ptr_struct, u_int8_t* ptr_buff); +void register_access_mfpa_unpack(struct register_access_mfpa *ptr_struct, const u_int8_t* ptr_buff); +void register_access_mfpa_print(const struct register_access_mfpa *ptr_struct, FILE* file, int indent_level); +int register_access_mfpa_size(); +#define REGISTER_ACCESS_MFPA_SIZE (0x24) +void register_access_mfpa_dump(const struct register_access_mfpa *ptr_struct, FILE* file); /* mfbe */ void register_access_mfbe_pack(const struct register_access_mfbe *ptr_struct, u_int8_t* ptr_buff); void register_access_mfbe_unpack(struct register_access_mfbe *ptr_struct, const u_int8_t* ptr_buff); @@ -157,9 +139,17 @@ void register_access_mfbe_print(const struct register_access_mfbe *ptr_struct, F int register_access_mfbe_size(); #define REGISTER_ACCESS_MFBE_SIZE (0xc) void register_access_mfbe_dump(const struct register_access_mfbe *ptr_struct, FILE* file); +/* register_access_open_Nodes */ +void register_access_register_access_open_Nodes_pack(const union register_access_register_access_open_Nodes *ptr_struct, u_int8_t* ptr_buff); +void register_access_register_access_open_Nodes_unpack(union register_access_register_access_open_Nodes *ptr_struct, const u_int8_t* ptr_buff); +void register_access_register_access_open_Nodes_print(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file, int indent_level); +int register_access_register_access_open_Nodes_size(); +#define REGISTER_ACCESS_REGISTER_ACCESS_OPEN_NODES_SIZE (0x10c) +void register_access_register_access_open_Nodes_dump(const union register_access_register_access_open_Nodes *ptr_struct, FILE* file); + #ifdef __cplusplus } #endif -#endif // REGISTER_ACCESS_LAYOUTS_H +#endif // REGISTER_ACCESS_OPEN_LAYOUTS_H diff --git a/tools_layouts/tools_layouts.c b/tools_layouts/tools_layouts.c deleted file mode 100644 index 39ae8e5..0000000 --- a/tools_layouts/tools_layouts.c +++ /dev/null @@ -1,542 +0,0 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/*** - *** This file was generated at "2014-03-11 10:10:14" - *** by: - *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools/tools.adb --file-prefix tools --prefix tools_ - *** and modified to fit the needs of mstflint. - ***/ -#include "tools_layouts.h" - -void tools_mnv_hdr_pack(const struct tools_mnv_hdr *ptr_struct, u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=16; - adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->type); - - offset=2; - adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->length); - - offset=40; - adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->type_mod); - - offset=39; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->shadow); - - offset=37; - adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->pad_cnt); - - offset=32; - adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->version); - -} - -void tools_mnv_hdr_unpack(struct tools_mnv_hdr *ptr_struct, const u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=16; - ptr_struct->type = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); - - offset=2; - ptr_struct->length = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12); - - offset=40; - ptr_struct->type_mod = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); - - offset=39; - ptr_struct->shadow = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=37; - ptr_struct->pad_cnt = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); - - offset=32; - ptr_struct->version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4); - -} - -void tools_mnv_hdr_print(const struct tools_mnv_hdr *ptr_struct, FILE* file, int indent_level){ - adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mnv_hdr ========\n"); - int i=0; - (void)i;(void)ptr_struct; - (void)file; - (void)indent_level; - - adb2c_add_indentation(file, indent_level); - fprintf(file, "type : "UH_FMT"\n", ptr_struct->type); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "length : "UH_FMT"\n", ptr_struct->length); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "type_mod : "UH_FMT"\n", ptr_struct->type_mod); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "shadow : "UH_FMT"\n", ptr_struct->shadow); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "pad_cnt : "UH_FMT"\n", ptr_struct->pad_cnt); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "version : "UH_FMT"\n", ptr_struct->version); - -} - -int tools_mnv_hdr_size(){ - return 8; -} - -void tools_mnv_hdr_dump(const struct tools_mnv_hdr *ptr_struct, FILE* file) { - tools_mnv_hdr_print(ptr_struct, file, 0); -} - -void tools_mnvia_pack(const struct tools_mnvia *ptr_struct, u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=0; - tools_mnv_hdr_pack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); - -} - -void tools_mnvia_unpack(struct tools_mnvia *ptr_struct, const u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=0; - tools_mnv_hdr_unpack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); - -} - -void tools_mnvia_print(const struct tools_mnvia *ptr_struct, FILE* file, int indent_level){ - adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mnvia ========\n"); - int i=0; - (void)i;(void)ptr_struct; - (void)file; - (void)indent_level; - - adb2c_add_indentation(file, indent_level); - fprintf(file, "mnv_hdr:\n"); - tools_mnv_hdr_print(&(ptr_struct->mnv_hdr), file, indent_level + 1); - -} - -int tools_mnvia_size(){ - return 8; -} - -void tools_mnvia_dump(const struct tools_mnvia *ptr_struct, FILE* file) { - tools_mnvia_print(ptr_struct, file, 0); -} - -void tools_mnvi_pack(const struct tools_mnvi *ptr_struct, u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=0; - tools_mnv_hdr_pack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); - -} - -void tools_mnvi_unpack(struct tools_mnvi *ptr_struct, const u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=0; - tools_mnv_hdr_unpack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); - -} - -void tools_mnvi_print(const struct tools_mnvi *ptr_struct, FILE* file, int indent_level){ - adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mnvi ========\n"); - int i=0; - (void)i;(void)ptr_struct; - (void)file; - (void)indent_level; - - adb2c_add_indentation(file, indent_level); - fprintf(file, "mnv_hdr:\n"); - tools_mnv_hdr_print(&(ptr_struct->mnv_hdr), file, indent_level + 1); - -} - -int tools_mnvi_size(){ - return 8; -} - -void tools_mnvi_dump(const struct tools_mnvi *ptr_struct, FILE* file) { - tools_mnvi_print(ptr_struct, file, 0); -} - -void tools_mnva_pack(const struct tools_mnva *ptr_struct, u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=0; - tools_mnv_hdr_pack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); - - for (i=0; i < 128; i++) { - offset=adb2c_calc_array_field_address(88, 8, i, 2048, 1); - adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->data[i]); - } - -} - -void tools_mnva_unpack(struct tools_mnva *ptr_struct, const u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=0; - tools_mnv_hdr_unpack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); - - for (i=0; i < 128; i++) { - offset=adb2c_calc_array_field_address(88, 8, i, 2048, 1); - ptr_struct->data[i] = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); - } - -} - -void tools_mnva_print(const struct tools_mnva *ptr_struct, FILE* file, int indent_level){ - adb2c_add_indentation(file, indent_level); - fprintf(file, "======== mnva ========\n"); - int i=0; - (void)i;(void)ptr_struct; - (void)file; - (void)indent_level; - - adb2c_add_indentation(file, indent_level); - fprintf(file, "mnv_hdr:\n"); - tools_mnv_hdr_print(&(ptr_struct->mnv_hdr), file, indent_level + 1); - - for (i=0; i < 128; i++) { - adb2c_add_indentation(file, indent_level); - fprintf(file, "data[%3d] : "UH_FMT"\n", i, ptr_struct->data[i]); - } - -} - -int tools_mnva_size(){ - return 256; -} - -void tools_mnva_dump(const struct tools_mnva *ptr_struct, FILE* file) { - tools_mnva_print(ptr_struct, file, 0); -} - -void tools_sriov_pack(const struct tools_sriov *ptr_struct, u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=16; - adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->total_vfs); - - offset=0; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->sriov_en); - -} - -void tools_sriov_unpack(struct tools_sriov *ptr_struct, const u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=16; - ptr_struct->total_vfs = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); - - offset=0; - ptr_struct->sriov_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - -} - -void tools_sriov_print(const struct tools_sriov *ptr_struct, FILE* file, int indent_level){ - adb2c_add_indentation(file, indent_level); - fprintf(file, "======== sriov ========\n"); - int i=0; - (void)i;(void)ptr_struct; - (void)file; - (void)indent_level; - - adb2c_add_indentation(file, indent_level); - fprintf(file, "total_vfs : "UH_FMT"\n", ptr_struct->total_vfs); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "sriov_en : "UH_FMT"\n", ptr_struct->sriov_en); - -} - -int tools_sriov_size(){ - return 4; -} - -void tools_sriov_dump(const struct tools_sriov *ptr_struct, FILE* file) { - tools_sriov_print(ptr_struct, file, 0); -} - -void tools_bar_size_pack(const struct tools_bar_size *ptr_struct, u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=0; - adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->log_uar_bar_size); - -} - -void tools_bar_size_unpack(struct tools_bar_size *ptr_struct, const u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=0; - ptr_struct->log_uar_bar_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); - -} - -void tools_bar_size_print(const struct tools_bar_size *ptr_struct, FILE* file, int indent_level){ - adb2c_add_indentation(file, indent_level); - fprintf(file, "======== bar_size ========\n"); - int i=0; - (void)i;(void)ptr_struct; - (void)file; - (void)indent_level; - - adb2c_add_indentation(file, indent_level); - fprintf(file, "log_uar_bar_size : "U32H_FMT"\n", ptr_struct->log_uar_bar_size); - -} - -int tools_bar_size_size(){ - return 4; -} - -void tools_bar_size_dump(const struct tools_bar_size *ptr_struct, FILE* file) { - tools_bar_size_print(ptr_struct, file, 0); -} - -void tools_vpi_settings_pack(const struct tools_vpi_settings *ptr_struct, u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=30; - adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->network_link_type); - -} - -void tools_vpi_settings_unpack(struct tools_vpi_settings *ptr_struct, const u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=30; - ptr_struct->network_link_type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); - -} - -void tools_vpi_settings_print(const struct tools_vpi_settings *ptr_struct, FILE* file, int indent_level){ - adb2c_add_indentation(file, indent_level); - fprintf(file, "======== vpi_settings ========\n"); - int i=0; - (void)i;(void)ptr_struct; - (void)file; - (void)indent_level; - - adb2c_add_indentation(file, indent_level); - fprintf(file, "network_link_type : "UH_FMT"\n", ptr_struct->network_link_type); - -} - -int tools_vpi_settings_size(){ - return 4; -} - -void tools_vpi_settings_dump(const struct tools_vpi_settings *ptr_struct, FILE* file) { - tools_vpi_settings_print(ptr_struct, file, 0); -} - -void tools_wol_pack(const struct tools_wol *ptr_struct, u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=22; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->reserved0); - - offset=21; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_magic); - - offset=20; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->reserved1); - - offset=19; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->reserved2); - - offset=18; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->reserved3); - - offset=17; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->reserved4); - - offset=16; - adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->reserved5); - -} - -void tools_wol_unpack(struct tools_wol *ptr_struct, const u_int8_t* ptr_buff){ - u_int32_t offset; - int i=0; - (void)offset; - (void)i; - (void)ptr_struct; - (void)ptr_buff; - - offset=22; - ptr_struct->reserved0 = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=21; - ptr_struct->en_wol_magic = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=20; - ptr_struct->reserved1 = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=19; - ptr_struct->reserved2 = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=18; - ptr_struct->reserved3 = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=17; - ptr_struct->reserved4 = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - - offset=16; - ptr_struct->reserved5 = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); - -} - -void tools_wol_print(const struct tools_wol *ptr_struct, FILE* file, int indent_level){ - adb2c_add_indentation(file, indent_level); - fprintf(file, "======== wol ========\n"); - int i=0; - (void)i;(void)ptr_struct; - (void)file; - (void)indent_level; - - adb2c_add_indentation(file, indent_level); - fprintf(file, "reserved0 : "UH_FMT"\n", ptr_struct->reserved0); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "en_wol_magic : "UH_FMT"\n", ptr_struct->en_wol_magic); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "reserved1 : "UH_FMT"\n", ptr_struct->reserved1); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "reserved2 : "UH_FMT"\n", ptr_struct->reserved2); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "reserved3 : "UH_FMT"\n", ptr_struct->reserved3); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "reserved4 : "UH_FMT"\n", ptr_struct->reserved4); - - adb2c_add_indentation(file, indent_level); - fprintf(file, "reserved5 : "UH_FMT"\n", ptr_struct->reserved5); - -} - -int tools_wol_size(){ - return 8; -} - -void tools_wol_dump(const struct tools_wol *ptr_struct, FILE* file) { - tools_wol_print(ptr_struct, file, 0); -} - diff --git a/tools_layouts/tools_layouts.h b/tools_layouts/tools_layouts.h deleted file mode 100644 index e1d3ced..0000000 --- a/tools_layouts/tools_layouts.h +++ /dev/null @@ -1,222 +0,0 @@ -/* - * Copyright (C) Jan 2013 Mellanox Technologies Ltd. All rights reserved. - * - * This software is available to you under a choice of one of two - * licenses. You may choose to be licensed under the terms of the GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/*** - *** This file was generated at "2014-03-11 10:10:14" - *** by: - *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools/tools.adb --file-prefix tools --prefix tools_ - *** and modified to fit the needs of mstflint. - ***/ -#ifndef TOOLS_LAYOUTS_H -#define TOOLS_LAYOUTS_H - - -#ifdef __cplusplus -extern "C" { -#endif - -#include "adb_to_c_utils.h" - -/* Description - */ -/* Size in bytes - 8 */ -struct tools_mnv_hdr { -/*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - Tlv type */ - /* 0.0 - 0.15 */ - u_int16_t type; - /* Description - size of tlv data in dwords (not including header) */ - /* 0.18 - 0.29 */ - u_int16_t length; -/*---------------- DWORD[1] (Offset 0x4) ----------------*/ - /* Description - Type Modifier. E.G.: Port number when the config is port related */ - /* 4.16 - 4.23 */ - u_int8_t type_mod; - /* Description - Shadow: i.e if set the Fw will not update the tlv immediately but wait for a command */ - /* 4.24 - 4.24 */ - u_int8_t shadow; - /* Description - Pad count: for non dword alligned tlvs */ - /* 4.25 - 4.26 */ - u_int8_t pad_cnt; - /* Description - Data version can be set by caller or left as 0. */ - /* 4.28 - 8.31 */ - u_int8_t version; -}; - -/* Description - */ -/* Size in bytes - 8 */ -struct tools_mnvia { -/*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - */ - /* 0.0 - 8.31 */ - struct tools_mnv_hdr mnv_hdr; -}; - -/* Description - */ -/* Size in bytes - 8 */ -struct tools_mnvi { -/*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - */ - /* 0.0 - 8.31 */ - struct tools_mnv_hdr mnv_hdr; -}; - -/* Description - */ -/* Size in bytes - 256 */ -struct tools_mnva { -/*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - */ - /* 0.0 - 8.31 */ - struct tools_mnv_hdr mnv_hdr; -/*---------------- DWORD[2] (Offset 0x8) ----------------*/ - /* Description - */ - /* 8.24 - 136.23 */ - u_int8_t data[128]; -}; - -/* Description - */ -/* Size in bytes - 4 */ -struct tools_sriov { -/*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - The total number of VFs that can be supported. */ - /* 0.0 - 0.15 */ - u_int16_t total_vfs; - /* Description - 1 when SRIOV is enabled: SRIOV capability will appear on the PCI configuration header. */ - /* 0.31 - 4.31 */ - u_int8_t sriov_en; -}; - -/* Description - */ -/* Size in bytes - 4 */ -struct tools_bar_size { -/*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - Base 2 log of the size of the physical function’s first BAR, in MBs. E.g. for 8MB the value is 3. */ - /* 0.0 - 4.31 */ - u_int32_t log_uar_bar_size; -}; - -/* Description - */ -/* Size in bytes - 4 */ -struct tools_vpi_settings { -/*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* Description - Default link type: -0 InfiniBand -1 Ethernet - */ - /* 0.0 - 0.1 */ - u_int8_t network_link_type; -}; - -/* Description - */ -/* Size in bytes - 8 */ -struct tools_wol { -/*---------------- DWORD[0] (Offset 0x0) ----------------*/ - /* 0.9 - 0.9 */ - u_int8_t reserved0; - /* Description - Enable Wake on magic packet */ - /* 0.10 - 0.10 */ - u_int8_t en_wol_magic; - /* 0.11 - 0.11 */ - u_int8_t reserved1; - /* 0.12 - 0.12 */ - u_int8_t reserved2; - /* 0.13 - 0.13 */ - u_int8_t reserved3; - /* 0.14 - 0.14 */ - u_int8_t reserved4; - /* 0.15 - 0.15 */ - u_int8_t reserved5; -}; -/*---------------- DWORD[8] (Offset 0x20) ----------------*/ -/*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/ - -/* mnv_hdr */ -void tools_mnv_hdr_pack(const struct tools_mnv_hdr *ptr_struct, u_int8_t* ptr_buff); -void tools_mnv_hdr_unpack(struct tools_mnv_hdr *ptr_struct, const u_int8_t* ptr_buff); -void tools_mnv_hdr_print(const struct tools_mnv_hdr *ptr_struct, FILE* file, int indent_level); -int tools_mnv_hdr_size(); -#define TOOLS_MNV_HDR_SIZE (0x8) -void tools_mnv_hdr_dump(const struct tools_mnv_hdr *ptr_struct, FILE* file); -/* mnvia */ -void tools_mnvia_pack(const struct tools_mnvia *ptr_struct, u_int8_t* ptr_buff); -void tools_mnvia_unpack(struct tools_mnvia *ptr_struct, const u_int8_t* ptr_buff); -void tools_mnvia_print(const struct tools_mnvia *ptr_struct, FILE* file, int indent_level); -int tools_mnvia_size(); -#define TOOLS_MNVIA_SIZE (0x8) -void tools_mnvia_dump(const struct tools_mnvia *ptr_struct, FILE* file); -/* mnvi */ -void tools_mnvi_pack(const struct tools_mnvi *ptr_struct, u_int8_t* ptr_buff); -void tools_mnvi_unpack(struct tools_mnvi *ptr_struct, const u_int8_t* ptr_buff); -void tools_mnvi_print(const struct tools_mnvi *ptr_struct, FILE* file, int indent_level); -int tools_mnvi_size(); -#define TOOLS_MNVI_SIZE (0x8) -void tools_mnvi_dump(const struct tools_mnvi *ptr_struct, FILE* file); -/* mnva */ -void tools_mnva_pack(const struct tools_mnva *ptr_struct, u_int8_t* ptr_buff); -void tools_mnva_unpack(struct tools_mnva *ptr_struct, const u_int8_t* ptr_buff); -void tools_mnva_print(const struct tools_mnva *ptr_struct, FILE* file, int indent_level); -int tools_mnva_size(); -#define TOOLS_MNVA_SIZE (0x100) -void tools_mnva_dump(const struct tools_mnva *ptr_struct, FILE* file); -/* sriov */ -void tools_sriov_pack(const struct tools_sriov *ptr_struct, u_int8_t* ptr_buff); -void tools_sriov_unpack(struct tools_sriov *ptr_struct, const u_int8_t* ptr_buff); -void tools_sriov_print(const struct tools_sriov *ptr_struct, FILE* file, int indent_level); -int tools_sriov_size(); -#define TOOLS_SRIOV_SIZE (0x4) -void tools_sriov_dump(const struct tools_sriov *ptr_struct, FILE* file); -/* bar_size */ -void tools_bar_size_pack(const struct tools_bar_size *ptr_struct, u_int8_t* ptr_buff); -void tools_bar_size_unpack(struct tools_bar_size *ptr_struct, const u_int8_t* ptr_buff); -void tools_bar_size_print(const struct tools_bar_size *ptr_struct, FILE* file, int indent_level); -int tools_bar_size_size(); -#define TOOLS_BAR_SIZE_SIZE (0x4) -void tools_bar_size_dump(const struct tools_bar_size *ptr_struct, FILE* file); -/* vpi_settings */ -void tools_vpi_settings_pack(const struct tools_vpi_settings *ptr_struct, u_int8_t* ptr_buff); -void tools_vpi_settings_unpack(struct tools_vpi_settings *ptr_struct, const u_int8_t* ptr_buff); -void tools_vpi_settings_print(const struct tools_vpi_settings *ptr_struct, FILE* file, int indent_level); -int tools_vpi_settings_size(); -#define TOOLS_VPI_SETTINGS_SIZE (0x4) -void tools_vpi_settings_dump(const struct tools_vpi_settings *ptr_struct, FILE* file); -/* wol */ -void tools_wol_pack(const struct tools_wol *ptr_struct, u_int8_t* ptr_buff); -void tools_wol_unpack(struct tools_wol *ptr_struct, const u_int8_t* ptr_buff); -void tools_wol_print(const struct tools_wol *ptr_struct, FILE* file, int indent_level); -int tools_wol_size(); -#define TOOLS_WOL_SIZE (0x8) -void tools_wol_dump(const struct tools_wol *ptr_struct, FILE* file); - -#ifdef __cplusplus -} -#endif - -#endif // TOOLS_LAYOUTS_H diff --git a/tools_layouts/tools_open_layouts.c b/tools_layouts/tools_open_layouts.c new file mode 100644 index 0000000..0e086a3 --- /dev/null +++ b/tools_layouts/tools_open_layouts.c @@ -0,0 +1,996 @@ + +/* - Mellanox Confidential and Proprietary - + * + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". + * + */ + + +/*** + *** This file was generated at "2014-07-08 14:00:09" + *** by: + *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_ + ***/ +#include "tools_open_layouts.h" + +void tools_open_pmdio_addr_data_pack(const struct tools_open_pmdio_addr_data *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->data); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->addr); + +} + +void tools_open_pmdio_addr_data_unpack(struct tools_open_pmdio_addr_data *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + ptr_struct->data = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=0; + ptr_struct->addr = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + +} + +void tools_open_pmdio_addr_data_print(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== pmdio_addr_data ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "data : "UH_FMT"\n", ptr_struct->data); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "addr : "UH_FMT"\n", ptr_struct->addr); + +} + +int tools_open_pmdio_addr_data_size(){ + return 4; +} + +void tools_open_pmdio_addr_data_dump(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file) { + tools_open_pmdio_addr_data_print(ptr_struct, file, 0); +} + +void tools_open_mnv_hdr_pack(const struct tools_open_mnv_hdr *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->type); + + offset=2; + adb2c_push_bits_to_buff(ptr_buff, offset, 12, (u_int32_t)ptr_struct->length); + + offset=40; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->type_mod); + + offset=39; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->shadow); + + offset=37; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->pad_cnt); + + offset=32; + adb2c_push_bits_to_buff(ptr_buff, offset, 4, (u_int32_t)ptr_struct->version); + +} + +void tools_open_mnv_hdr_unpack(struct tools_open_mnv_hdr *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + ptr_struct->type = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=2; + ptr_struct->length = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 12); + + offset=40; + ptr_struct->type_mod = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=39; + ptr_struct->shadow = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=37; + ptr_struct->pad_cnt = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=32; + ptr_struct->version = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 4); + +} + +void tools_open_mnv_hdr_print(const struct tools_open_mnv_hdr *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== mnv_hdr ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "type : "UH_FMT"\n", ptr_struct->type); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "length : "UH_FMT"\n", ptr_struct->length); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "type_mod : "UH_FMT"\n", ptr_struct->type_mod); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "shadow : "UH_FMT"\n", ptr_struct->shadow); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "pad_cnt : "UH_FMT"\n", ptr_struct->pad_cnt); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "version : "UH_FMT"\n", ptr_struct->version); + +} + +int tools_open_mnv_hdr_size(){ + return 8; +} + +void tools_open_mnv_hdr_dump(const struct tools_open_mnv_hdr *ptr_struct, FILE* file) { + tools_open_mnv_hdr_print(ptr_struct, file, 0); +} + +void tools_open_pmdio_pack(const struct tools_open_pmdio *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=29; + adb2c_push_bits_to_buff(ptr_buff, offset, 3, (u_int32_t)ptr_struct->operation); + + offset=22; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->clause); + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->local_port); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->lock); + + offset=59; + adb2c_push_bits_to_buff(ptr_buff, offset, 5, (u_int32_t)ptr_struct->reg_adr_mmd); + + offset=48; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->last_op_idx); + + offset=40; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->num_ops_done); + + for (i=0; i < 64; i++) { + offset=adb2c_calc_array_field_address(64, 32, i, 2112, 1); + tools_open_pmdio_addr_data_pack(&(ptr_struct->mdio_trans[i]), ptr_buff + offset/8); + } + +} + +void tools_open_pmdio_unpack(struct tools_open_pmdio *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=29; + ptr_struct->operation = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 3); + + offset=22; + ptr_struct->clause = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=8; + ptr_struct->local_port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=0; + ptr_struct->lock = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=59; + ptr_struct->reg_adr_mmd = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 5); + + offset=48; + ptr_struct->last_op_idx = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=40; + ptr_struct->num_ops_done = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + for (i=0; i < 64; i++) { + offset=adb2c_calc_array_field_address(64, 32, i, 2112, 1); + tools_open_pmdio_addr_data_unpack(&(ptr_struct->mdio_trans[i]), ptr_buff + offset/8); + } + +} + +void tools_open_pmdio_print(const struct tools_open_pmdio *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== pmdio ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "operation : "UH_FMT"\n", ptr_struct->operation); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "clause : "UH_FMT"\n", ptr_struct->clause); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "local_port : "UH_FMT"\n", ptr_struct->local_port); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "lock : "UH_FMT"\n", ptr_struct->lock); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "reg_adr_mmd : "UH_FMT"\n", ptr_struct->reg_adr_mmd); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "last_op_idx : "UH_FMT"\n", ptr_struct->last_op_idx); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "num_ops_done : "UH_FMT"\n", ptr_struct->num_ops_done); + + for (i=0; i < 64; i++) { + adb2c_add_indentation(file, indent_level); + fprintf(file, "mdio_trans[%3d]:\n", i); + tools_open_pmdio_addr_data_print(&(ptr_struct->mdio_trans[i]), file, indent_level + 1); + } + +} + +int tools_open_pmdio_size(){ + return 264; +} + +void tools_open_pmdio_dump(const struct tools_open_pmdio *ptr_struct, FILE* file) { + tools_open_pmdio_print(ptr_struct, file, 0); +} + +void tools_open_pmdic_pack(const struct tools_open_pmdic *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=8; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->local_port); + + offset=56; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->operation_cap); + + offset=38; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->clause); + + offset=32; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->mdio_preset); + + offset=88; + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->misc_cap); + +} + +void tools_open_pmdic_unpack(struct tools_open_pmdic *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=8; + ptr_struct->local_port = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=56; + ptr_struct->operation_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + + offset=38; + ptr_struct->clause = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=32; + ptr_struct->mdio_preset = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + + offset=88; + ptr_struct->misc_cap = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + +} + +void tools_open_pmdic_print(const struct tools_open_pmdic *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== pmdic ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "local_port : "UH_FMT"\n", ptr_struct->local_port); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "operation_cap : "UH_FMT"\n", ptr_struct->operation_cap); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "clause : "UH_FMT"\n", ptr_struct->clause); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mdio_preset : "UH_FMT"\n", ptr_struct->mdio_preset); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "misc_cap : "UH_FMT"\n", ptr_struct->misc_cap); + +} + +int tools_open_pmdic_size(){ + return 12; +} + +void tools_open_pmdic_dump(const struct tools_open_pmdic *ptr_struct, FILE* file) { + tools_open_pmdic_print(ptr_struct, file, 0); +} + +void tools_open_mnvia_pack(const struct tools_open_mnvia *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_mnv_hdr_pack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + +} + +void tools_open_mnvia_unpack(struct tools_open_mnvia *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_mnv_hdr_unpack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + +} + +void tools_open_mnvia_print(const struct tools_open_mnvia *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== mnvia ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mnv_hdr:\n"); + tools_open_mnv_hdr_print(&(ptr_struct->mnv_hdr), file, indent_level + 1); + +} + +int tools_open_mnvia_size(){ + return 8; +} + +void tools_open_mnvia_dump(const struct tools_open_mnvia *ptr_struct, FILE* file) { + tools_open_mnvia_print(ptr_struct, file, 0); +} + +void tools_open_mnvi_pack(const struct tools_open_mnvi *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_mnv_hdr_pack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + +} + +void tools_open_mnvi_unpack(struct tools_open_mnvi *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_mnv_hdr_unpack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + +} + +void tools_open_mnvi_print(const struct tools_open_mnvi *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== mnvi ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mnv_hdr:\n"); + tools_open_mnv_hdr_print(&(ptr_struct->mnv_hdr), file, indent_level + 1); + +} + +int tools_open_mnvi_size(){ + return 8; +} + +void tools_open_mnvi_dump(const struct tools_open_mnvi *ptr_struct, FILE* file) { + tools_open_mnvi_print(ptr_struct, file, 0); +} + +void tools_open_mnva_pack(const struct tools_open_mnva *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_mnv_hdr_pack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + + for (i=0; i < 128; i++) { + offset=adb2c_calc_array_field_address(88, 8, i, 2048, 1); + adb2c_push_bits_to_buff(ptr_buff, offset, 8, (u_int32_t)ptr_struct->data[i]); + } + +} + +void tools_open_mnva_unpack(struct tools_open_mnva *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + tools_open_mnv_hdr_unpack(&(ptr_struct->mnv_hdr), ptr_buff + offset/8); + + for (i=0; i < 128; i++) { + offset=adb2c_calc_array_field_address(88, 8, i, 2048, 1); + ptr_struct->data[i] = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 8); + } + +} + +void tools_open_mnva_print(const struct tools_open_mnva *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== mnva ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mnv_hdr:\n"); + tools_open_mnv_hdr_print(&(ptr_struct->mnv_hdr), file, indent_level + 1); + + for (i=0; i < 128; i++) { + adb2c_add_indentation(file, indent_level); + fprintf(file, "data[%3d] : "UH_FMT"\n", i, ptr_struct->data[i]); + } + +} + +int tools_open_mnva_size(){ + return 256; +} + +void tools_open_mnva_dump(const struct tools_open_mnva *ptr_struct, FILE* file) { + tools_open_mnva_print(ptr_struct, file, 0); +} + +void tools_open_sriov_pack(const struct tools_open_sriov *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 16, (u_int32_t)ptr_struct->total_vfs); + + offset=0; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->sriov_en); + +} + +void tools_open_sriov_unpack(struct tools_open_sriov *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=16; + ptr_struct->total_vfs = (u_int16_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 16); + + offset=0; + ptr_struct->sriov_en = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + +} + +void tools_open_sriov_print(const struct tools_open_sriov *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== sriov ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "total_vfs : "UH_FMT"\n", ptr_struct->total_vfs); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "sriov_en : "UH_FMT"\n", ptr_struct->sriov_en); + +} + +int tools_open_sriov_size(){ + return 4; +} + +void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file) { + tools_open_sriov_print(ptr_struct, file, 0); +} + +void tools_open_bar_size_pack(const struct tools_open_bar_size *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->log_uar_bar_size); + +} + +void tools_open_bar_size_unpack(struct tools_open_bar_size *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + ptr_struct->log_uar_bar_size = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + +} + +void tools_open_bar_size_print(const struct tools_open_bar_size *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== bar_size ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "log_uar_bar_size : "U32H_FMT"\n", ptr_struct->log_uar_bar_size); + +} + +int tools_open_bar_size_size(){ + return 4; +} + +void tools_open_bar_size_dump(const struct tools_open_bar_size *ptr_struct, FILE* file) { + tools_open_bar_size_print(ptr_struct, file, 0); +} + +void tools_open_vpi_settings_pack(const struct tools_open_vpi_settings *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=30; + adb2c_push_bits_to_buff(ptr_buff, offset, 2, (u_int32_t)ptr_struct->network_link_type); + +} + +void tools_open_vpi_settings_unpack(struct tools_open_vpi_settings *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=30; + ptr_struct->network_link_type = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 2); + +} + +void tools_open_vpi_settings_print(const struct tools_open_vpi_settings *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== vpi_settings ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "network_link_type : "UH_FMT"\n", ptr_struct->network_link_type); + +} + +int tools_open_vpi_settings_size(){ + return 4; +} + +void tools_open_vpi_settings_dump(const struct tools_open_vpi_settings *ptr_struct, FILE* file) { + tools_open_vpi_settings_print(ptr_struct, file, 0); +} + +void tools_open_wol_pack(const struct tools_open_wol *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=22; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_psswd_magic); + + offset=21; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_magic); + + offset=20; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_arp); + + offset=19; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_bc); + + offset=18; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_mc); + + offset=17; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_uc); + + offset=16; + adb2c_push_bits_to_buff(ptr_buff, offset, 1, (u_int32_t)ptr_struct->en_wol_phy); + +} + +void tools_open_wol_unpack(struct tools_open_wol *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=22; + ptr_struct->en_wol_psswd_magic = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=21; + ptr_struct->en_wol_magic = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=20; + ptr_struct->en_wol_arp = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=19; + ptr_struct->en_wol_bc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=18; + ptr_struct->en_wol_mc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=17; + ptr_struct->en_wol_uc = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + + offset=16; + ptr_struct->en_wol_phy = (u_int8_t)adb2c_pop_bits_from_buff(ptr_buff, offset, 1); + +} + +void tools_open_wol_print(const struct tools_open_wol *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== wol ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "en_wol_psswd_magic : "UH_FMT"\n", ptr_struct->en_wol_psswd_magic); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "en_wol_magic : "UH_FMT"\n", ptr_struct->en_wol_magic); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "en_wol_arp : "UH_FMT"\n", ptr_struct->en_wol_arp); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "en_wol_bc : "UH_FMT"\n", ptr_struct->en_wol_bc); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "en_wol_mc : "UH_FMT"\n", ptr_struct->en_wol_mc); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "en_wol_uc : "UH_FMT"\n", ptr_struct->en_wol_uc); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "en_wol_phy : "UH_FMT"\n", ptr_struct->en_wol_phy); + +} + +int tools_open_wol_size(){ + return 8; +} + +void tools_open_wol_dump(const struct tools_open_wol *ptr_struct, FILE* file) { + tools_open_wol_print(ptr_struct, file, 0); +} + +void tools_open_phy_reg_pack(const union tools_open_phy_reg *ptr_struct, u_int8_t* ptr_buff) +{ + memcpy(ptr_buff, ptr_struct, 264); +} + +void tools_open_phy_reg_unpack(union tools_open_phy_reg *ptr_struct, const u_int8_t* ptr_buff) +{ + memcpy(ptr_struct, ptr_buff, 264); +} + +void tools_open_phy_reg_print(const union tools_open_phy_reg *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== phy_reg ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "pmdic:\n"); + tools_open_pmdic_print(&(ptr_struct->pmdic), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "pmdio:\n"); + tools_open_pmdio_print(&(ptr_struct->pmdio), file, indent_level + 1); + +} + +int tools_open_phy_reg_size(){ + return 264; +} + +void tools_open_phy_reg_dump(const union tools_open_phy_reg *ptr_struct, FILE* file) { + tools_open_phy_reg_print(ptr_struct, file, 0); +} + +void tools_open_mnv_cfg_pack(const union tools_open_mnv_cfg *ptr_struct, u_int8_t* ptr_buff) +{ + memcpy(ptr_buff, ptr_struct, 256); +} + +void tools_open_mnv_cfg_unpack(union tools_open_mnv_cfg *ptr_struct, const u_int8_t* ptr_buff) +{ + memcpy(ptr_struct, ptr_buff, 256); +} + +void tools_open_mnv_cfg_print(const union tools_open_mnv_cfg *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== mnv_cfg ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mnva:\n"); + tools_open_mnva_print(&(ptr_struct->mnva), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mnvi:\n"); + tools_open_mnvi_print(&(ptr_struct->mnvi), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "mnvia:\n"); + tools_open_mnvia_print(&(ptr_struct->mnvia), file, indent_level + 1); + +} + +int tools_open_mnv_cfg_size(){ + return 256; +} + +void tools_open_mnv_cfg_dump(const union tools_open_mnv_cfg *ptr_struct, FILE* file) { + tools_open_mnv_cfg_print(ptr_struct, file, 0); +} + +void tools_open_nv_cfg_pack(const union tools_open_nv_cfg *ptr_struct, u_int8_t* ptr_buff) +{ + memcpy(ptr_buff, ptr_struct, 256); +} + +void tools_open_nv_cfg_unpack(union tools_open_nv_cfg *ptr_struct, const u_int8_t* ptr_buff) +{ + memcpy(ptr_struct, ptr_buff, 256); +} + +void tools_open_nv_cfg_print(const union tools_open_nv_cfg *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== nv_cfg ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "wol:\n"); + tools_open_wol_print(&(ptr_struct->wol), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "vpi_settings:\n"); + tools_open_vpi_settings_print(&(ptr_struct->vpi_settings), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "bar_size:\n"); + tools_open_bar_size_print(&(ptr_struct->bar_size), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "sriov:\n"); + tools_open_sriov_print(&(ptr_struct->sriov), file, indent_level + 1); + +} + +int tools_open_nv_cfg_size(){ + return 256; +} + +void tools_open_nv_cfg_dump(const union tools_open_nv_cfg *ptr_struct, FILE* file) { + tools_open_nv_cfg_print(ptr_struct, file, 0); +} + +void tools_open_tools_open_pack(const union tools_open_tools_open *ptr_struct, u_int8_t* ptr_buff) +{ + memcpy(ptr_buff, ptr_struct, 1048576); +} + +void tools_open_tools_open_unpack(union tools_open_tools_open *ptr_struct, const u_int8_t* ptr_buff) +{ + memcpy(ptr_struct, ptr_buff, 1048576); +} + +void tools_open_tools_open_print(const union tools_open_tools_open *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== tools_open ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "NVConfig:\n"); + tools_open_nv_cfg_print(&(ptr_struct->NVConfig), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "MNV_Reg:\n"); + tools_open_mnv_cfg_print(&(ptr_struct->MNV_Reg), file, indent_level + 1); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "Phy_Reg:\n"); + tools_open_phy_reg_print(&(ptr_struct->Phy_Reg), file, indent_level + 1); + +} + +int tools_open_tools_open_size(){ + return 1048576; +} + +void tools_open_tools_open_dump(const union tools_open_tools_open *ptr_struct, FILE* file) { + tools_open_tools_open_print(ptr_struct, file, 0); +} + +void tools_open_uint64_pack(const struct tools_open_uint64 *ptr_struct, u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->hi); + + offset=32; + adb2c_push_integer_to_buff(ptr_buff, offset, 4, (u_int64_t)ptr_struct->lo); + +} + +void tools_open_uint64_unpack(struct tools_open_uint64 *ptr_struct, const u_int8_t* ptr_buff){ + u_int32_t offset; + int i=0; + (void)offset; + (void)i; + (void)ptr_struct; + (void)ptr_buff; + + offset=0; + ptr_struct->hi = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + + offset=32; + ptr_struct->lo = (u_int32_t)adb2c_pop_integer_from_buff(ptr_buff, offset, 4); + +} + +void tools_open_uint64_print(const struct tools_open_uint64 *ptr_struct, FILE* file, int indent_level){ + adb2c_add_indentation(file, indent_level); + fprintf(file, "======== uint64 ========\n"); + int i=0; + (void)i;(void)ptr_struct; + (void)file; + (void)indent_level; + + adb2c_add_indentation(file, indent_level); + fprintf(file, "hi : "U32H_FMT"\n", ptr_struct->hi); + + adb2c_add_indentation(file, indent_level); + fprintf(file, "lo : "U32H_FMT"\n", ptr_struct->lo); + +} + +int tools_open_uint64_size(){ + return 8; +} + +void tools_open_uint64_dump(const struct tools_open_uint64 *ptr_struct, FILE* file) { + tools_open_uint64_print(ptr_struct, file, 0); +} + diff --git a/tools_layouts/tools_open_layouts.h b/tools_layouts/tools_open_layouts.h new file mode 100644 index 0000000..7cc9234 --- /dev/null +++ b/tools_layouts/tools_open_layouts.h @@ -0,0 +1,440 @@ + +/* - Mellanox Confidential and Proprietary - + * + * Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. + * + * Except as specifically permitted herein, no portion of the information, + * including but not limited to object code and source code, may be reproduced, + * modified, distributed, republished or otherwise exploited in any form or by + * any means for any purpose without the prior written permission of Mellanox + * Technologies Ltd. Use of software subject to the terms and conditions + * detailed in the file "LICENSE.txt". + * + */ + + +/*** + *** This file was generated at "2014-07-08 14:00:09" + *** by: + *** > /mswg/release/eat_me/last_release/adabe_plugins/adb2c/adb2pack.py --input adb/tools_open/tools_open.adb --file-prefix tools_open --prefix tools_open_ + ***/ +#ifndef TOOLS_OPEN_LAYOUTS_H +#define TOOLS_OPEN_LAYOUTS_H + + +#ifdef __cplusplus +extern "C" { +#endif + +#include "adb_to_c_utils.h"/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_pmdio_addr_data { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Data (Clause 22) / Address/Data (Clause 45) */ + /* 0.0 - 0.15 */ + u_int16_t data; + /* Description - Address (Clause 45) +This field is only valid for Address + Read and Address + Write operations, providing the address. For other Clause 45 operations the data field provides the address when appropriate. + */ + /* 0.16 - 4.31 */ + u_int16_t addr; +}; + +/* Description - */ +/* Size in bytes - 8 */ +struct tools_open_mnv_hdr { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Tlv type */ + /* 0.0 - 0.15 */ + u_int16_t type; + /* Description - size of tlv data in dwords (not including header) */ + /* 0.18 - 0.29 */ + u_int16_t length; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - Type Modifier. E.G.: Port number when the config is port related */ + /* 4.16 - 4.23 */ + u_int8_t type_mod; + /* Description - Shadow: i.e if set the Fw will not update the tlv immediately but wait for a command */ + /* 4.24 - 4.24 */ + u_int8_t shadow; + /* Description - Pad count: for non dword alligned tlvs */ + /* 4.25 - 4.26 */ + u_int8_t pad_cnt; + /* Description - Data version can be set by caller or left as 0. */ + /* 4.28 - 8.31 */ + u_int8_t version; +}; + +/* Description - */ +/* Size in bytes - 264 */ +struct tools_open_pmdio { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - 000 - NOP +001 - Address (reserved for Clause 22) +010 - Read +011 - Write +100 - Post Read Increment Address (reserved for Clause 22) +110 - Address + Read - Generates Address cycle and then Read cycle in Clause 45 (reserved for Clause 22) +111 - Address + Write - Generates Address cycle and then Write cycle in Clause 45 (reserved for Clause 22) + */ + /* 0.0 - 0.2 */ + u_int8_t operation; + /* Description - MDIO I/F definition: +00 - Clause 22 +01 - Clause 45 + */ + /* 0.8 - 0.9 */ + u_int8_t clause; + /* Description - Local port number */ + /* 0.16 - 0.23 */ + u_int8_t local_port; + /* Description - Lock bit. Setting this bit will lock the access to port's MDIO +Used for operations that requires continuous MDIO accesses. + +In order to guarantee atomicity of some operations, the port MDIO interface can be locked to a specific interface. +When the lock bit is set, no MDIO accesses through another interface (FW/driver/tools) are allowed on the port. +An attempt to set the lock bit while it is locked by another interface should return a RESOURCE/_BUSY status. + */ + /* 0.31 - 4.31 */ + u_int8_t lock; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - Reg Address (Clause 22) / MDIO Manageable Device address (Clause 45) */ + /* 4.0 - 4.4 */ + u_int8_t reg_adr_mmd; + /* Description - Index of last entry in the operations list. 0 means single operation (backward compatible). +Valid values are 0..63 + */ + /* 4.8 - 4.15 */ + u_int8_t last_op_idx; + /* Description - Number of operations actually executed by FW. Driver write 0 to this field. FW increment the field with any execution of an entry in the operations list. */ + /* 4.16 - 4.23 */ + u_int8_t num_ops_done; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - addr/data entry */ + /* 8.0 - 264.31 */ + struct tools_open_pmdio_addr_data mdio_trans[64]; +}; + +/* Description - */ +/* Size in bytes - 12 */ +struct tools_open_pmdic { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Local port number */ + /* 0.16 - 0.23 */ + u_int8_t local_port; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - Bit 0 - NOP +Bit 1 - Address (reserved for Clause 22) +Bit 2 - Read +Bit 3 - Write +Bit 4 - Post Read Increment Address (reserved for Clause 22) +Bit 6 - Address + Read - Generates Address cycle and then Read cycle in Clause 45 (reserved for Clause 22) +Bit 7- Address + Write - Generates Address cycle and then Write cycle in Clause 45 (reserved for Clause 22) + */ + /* 4.0 - 4.7 */ + u_int8_t operation_cap; + /* Description - MDIO I/F definition: +00 - Clause 22 +01 - Clause 45 + */ + /* 4.24 - 4.25 */ + u_int8_t clause; + /* Description - MDIO present: +00 - MDIO not present +01 - External MDIO present + */ + /* 4.30 - 8.31 */ + u_int8_t mdio_preset; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - Bit 0 External Phy FW master +Used for external Phy FW burning. When set, the MDIO I/F is used for an external phy FW burn + */ + /* 8.0 - 8.7 */ + u_int8_t misc_cap; +}; + +/* Description - */ +/* Size in bytes - 8 */ +struct tools_open_mnvia { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 8.31 */ + struct tools_open_mnv_hdr mnv_hdr; +}; + +/* Description - */ +/* Size in bytes - 8 */ +struct tools_open_mnvi { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 8.31 */ + struct tools_open_mnv_hdr mnv_hdr; +}; + +/* Description - */ +/* Size in bytes - 256 */ +struct tools_open_mnva { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 8.31 */ + struct tools_open_mnv_hdr mnv_hdr; +/*---------------- DWORD[2] (Offset 0x8) ----------------*/ + /* Description - */ + /* 8.24 - 136.23 */ + u_int8_t data[128]; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_sriov { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - The total number of VFs that can be supported. */ + /* 0.0 - 0.15 */ + u_int16_t total_vfs; + /* Description - 1 when SRIOV is enabled: SRIOV capability will appear on the PCI configuration header. */ + /* 0.31 - 4.31 */ + u_int8_t sriov_en; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_bar_size { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Base 2 log of the size of the physical function’s first BAR, in MBs. E.g. for 8MB the value is 3. */ + /* 0.0 - 4.31 */ + u_int32_t log_uar_bar_size; +}; + +/* Description - */ +/* Size in bytes - 4 */ +struct tools_open_vpi_settings { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Default link type: +0 InfiniBand +1 Ethernet + */ + /* 0.0 - 0.1 */ + u_int8_t network_link_type; +}; + +/* Description - */ +/* Size in bytes - 8 */ +struct tools_open_wol { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Enable Wake on secure on password magic packet */ + /* 0.9 - 0.9 */ + u_int8_t en_wol_psswd_magic; + /* Description - Enable Wake on magic packet */ + /* 0.10 - 0.10 */ + u_int8_t en_wol_magic; + /* Description - Enable Wake on ARP */ + /* 0.11 - 0.11 */ + u_int8_t en_wol_arp; + /* Description - Enable Wake on broadcast message */ + /* 0.12 - 0.12 */ + u_int8_t en_wol_bc; + /* Description - Enable Wake on multicast message */ + /* 0.13 - 0.13 */ + u_int8_t en_wol_mc; + /* Description - Enable Wake on unicast message */ + /* 0.14 - 0.14 */ + u_int8_t en_wol_uc; + /* Description - Enable Wake on PHY activity */ + /* 0.15 - 0.15 */ + u_int8_t en_wol_phy; +}; + +/* Description - */ +/* Size in bytes - 264 */ +union tools_open_phy_reg { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 12.31 */ + struct tools_open_pmdic pmdic; + /* Description - */ + /* 0.0 - 264.31 */ + struct tools_open_pmdio pmdio; +}; + +/* Description - */ +/* Size in bytes - 256 */ +union tools_open_mnv_cfg { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 256.31 */ + struct tools_open_mnva mnva; + /* Description - */ + /* 0.0 - 8.31 */ + struct tools_open_mnvi mnvi; + /* Description - */ + /* 0.0 - 8.31 */ + struct tools_open_mnvia mnvia; +}; + +/* Description - */ +/* Size in bytes - 256 */ +union tools_open_nv_cfg { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 8.31 */ + struct tools_open_wol wol; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_vpi_settings vpi_settings; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_bar_size bar_size; + /* Description - */ + /* 0.0 - 4.31 */ + struct tools_open_sriov sriov; +}; + +/* Description - */ +/* Size in bytes - 1048576 */ +union tools_open_tools_open { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - Non-Volatile Cfg Tlvs */ + /* 0.0 - 256.31 */ + union tools_open_nv_cfg NVConfig; + /* Description - Misc NV Registers, this is temporary untill we integrate with fw db */ + /* 0.0 - 256.31 */ + union tools_open_mnv_cfg MNV_Reg; + /* Description - Register for accessing FW managed external PHY */ + /* 0.0 - 264.31 */ + union tools_open_phy_reg Phy_Reg; +}; + +/* Description - */ +/* Size in bytes - 8 */ +struct tools_open_uint64 { +/*---------------- DWORD[0] (Offset 0x0) ----------------*/ + /* Description - */ + /* 0.0 - 4.31 */ + u_int32_t hi; +/*---------------- DWORD[1] (Offset 0x4) ----------------*/ + /* Description - */ + /* 4.0 - 8.31 */ + u_int32_t lo; +}; + + +/*================= PACK/UNPACK/PRINT FUNCTIONS ======================*/ +/* pmdio_addr_data */ +void tools_open_pmdio_addr_data_pack(const struct tools_open_pmdio_addr_data *ptr_struct, u_int8_t* ptr_buff); +void tools_open_pmdio_addr_data_unpack(struct tools_open_pmdio_addr_data *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_pmdio_addr_data_print(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file, int indent_level); +int tools_open_pmdio_addr_data_size(); +#define TOOLS_OPEN_PMDIO_ADDR_DATA_SIZE (0x4) +void tools_open_pmdio_addr_data_dump(const struct tools_open_pmdio_addr_data *ptr_struct, FILE* file); +/* mnv_hdr */ +void tools_open_mnv_hdr_pack(const struct tools_open_mnv_hdr *ptr_struct, u_int8_t* ptr_buff); +void tools_open_mnv_hdr_unpack(struct tools_open_mnv_hdr *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_mnv_hdr_print(const struct tools_open_mnv_hdr *ptr_struct, FILE* file, int indent_level); +int tools_open_mnv_hdr_size(); +#define TOOLS_OPEN_MNV_HDR_SIZE (0x8) +void tools_open_mnv_hdr_dump(const struct tools_open_mnv_hdr *ptr_struct, FILE* file); +/* pmdio */ +void tools_open_pmdio_pack(const struct tools_open_pmdio *ptr_struct, u_int8_t* ptr_buff); +void tools_open_pmdio_unpack(struct tools_open_pmdio *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_pmdio_print(const struct tools_open_pmdio *ptr_struct, FILE* file, int indent_level); +int tools_open_pmdio_size(); +#define TOOLS_OPEN_PMDIO_SIZE (0x108) +void tools_open_pmdio_dump(const struct tools_open_pmdio *ptr_struct, FILE* file); +/* pmdic */ +void tools_open_pmdic_pack(const struct tools_open_pmdic *ptr_struct, u_int8_t* ptr_buff); +void tools_open_pmdic_unpack(struct tools_open_pmdic *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_pmdic_print(const struct tools_open_pmdic *ptr_struct, FILE* file, int indent_level); +int tools_open_pmdic_size(); +#define TOOLS_OPEN_PMDIC_SIZE (0xc) +void tools_open_pmdic_dump(const struct tools_open_pmdic *ptr_struct, FILE* file); +/* mnvia */ +void tools_open_mnvia_pack(const struct tools_open_mnvia *ptr_struct, u_int8_t* ptr_buff); +void tools_open_mnvia_unpack(struct tools_open_mnvia *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_mnvia_print(const struct tools_open_mnvia *ptr_struct, FILE* file, int indent_level); +int tools_open_mnvia_size(); +#define TOOLS_OPEN_MNVIA_SIZE (0x8) +void tools_open_mnvia_dump(const struct tools_open_mnvia *ptr_struct, FILE* file); +/* mnvi */ +void tools_open_mnvi_pack(const struct tools_open_mnvi *ptr_struct, u_int8_t* ptr_buff); +void tools_open_mnvi_unpack(struct tools_open_mnvi *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_mnvi_print(const struct tools_open_mnvi *ptr_struct, FILE* file, int indent_level); +int tools_open_mnvi_size(); +#define TOOLS_OPEN_MNVI_SIZE (0x8) +void tools_open_mnvi_dump(const struct tools_open_mnvi *ptr_struct, FILE* file); +/* mnva */ +void tools_open_mnva_pack(const struct tools_open_mnva *ptr_struct, u_int8_t* ptr_buff); +void tools_open_mnva_unpack(struct tools_open_mnva *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_mnva_print(const struct tools_open_mnva *ptr_struct, FILE* file, int indent_level); +int tools_open_mnva_size(); +#define TOOLS_OPEN_MNVA_SIZE (0x100) +void tools_open_mnva_dump(const struct tools_open_mnva *ptr_struct, FILE* file); +/* sriov */ +void tools_open_sriov_pack(const struct tools_open_sriov *ptr_struct, u_int8_t* ptr_buff); +void tools_open_sriov_unpack(struct tools_open_sriov *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_sriov_print(const struct tools_open_sriov *ptr_struct, FILE* file, int indent_level); +int tools_open_sriov_size(); +#define TOOLS_OPEN_SRIOV_SIZE (0x4) +void tools_open_sriov_dump(const struct tools_open_sriov *ptr_struct, FILE* file); +/* bar_size */ +void tools_open_bar_size_pack(const struct tools_open_bar_size *ptr_struct, u_int8_t* ptr_buff); +void tools_open_bar_size_unpack(struct tools_open_bar_size *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_bar_size_print(const struct tools_open_bar_size *ptr_struct, FILE* file, int indent_level); +int tools_open_bar_size_size(); +#define TOOLS_OPEN_BAR_SIZE_SIZE (0x4) +void tools_open_bar_size_dump(const struct tools_open_bar_size *ptr_struct, FILE* file); +/* vpi_settings */ +void tools_open_vpi_settings_pack(const struct tools_open_vpi_settings *ptr_struct, u_int8_t* ptr_buff); +void tools_open_vpi_settings_unpack(struct tools_open_vpi_settings *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_vpi_settings_print(const struct tools_open_vpi_settings *ptr_struct, FILE* file, int indent_level); +int tools_open_vpi_settings_size(); +#define TOOLS_OPEN_VPI_SETTINGS_SIZE (0x4) +void tools_open_vpi_settings_dump(const struct tools_open_vpi_settings *ptr_struct, FILE* file); +/* wol */ +void tools_open_wol_pack(const struct tools_open_wol *ptr_struct, u_int8_t* ptr_buff); +void tools_open_wol_unpack(struct tools_open_wol *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_wol_print(const struct tools_open_wol *ptr_struct, FILE* file, int indent_level); +int tools_open_wol_size(); +#define TOOLS_OPEN_WOL_SIZE (0x8) +void tools_open_wol_dump(const struct tools_open_wol *ptr_struct, FILE* file); +/* phy_reg */ +void tools_open_phy_reg_pack(const union tools_open_phy_reg *ptr_struct, u_int8_t* ptr_buff); +void tools_open_phy_reg_unpack(union tools_open_phy_reg *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_phy_reg_print(const union tools_open_phy_reg *ptr_struct, FILE* file, int indent_level); +int tools_open_phy_reg_size(); +#define TOOLS_OPEN_PHY_REG_SIZE (0x108) +void tools_open_phy_reg_dump(const union tools_open_phy_reg *ptr_struct, FILE* file); +/* mnv_cfg */ +void tools_open_mnv_cfg_pack(const union tools_open_mnv_cfg *ptr_struct, u_int8_t* ptr_buff); +void tools_open_mnv_cfg_unpack(union tools_open_mnv_cfg *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_mnv_cfg_print(const union tools_open_mnv_cfg *ptr_struct, FILE* file, int indent_level); +int tools_open_mnv_cfg_size(); +#define TOOLS_OPEN_MNV_CFG_SIZE (0x100) +void tools_open_mnv_cfg_dump(const union tools_open_mnv_cfg *ptr_struct, FILE* file); +/* nv_cfg */ +void tools_open_nv_cfg_pack(const union tools_open_nv_cfg *ptr_struct, u_int8_t* ptr_buff); +void tools_open_nv_cfg_unpack(union tools_open_nv_cfg *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_nv_cfg_print(const union tools_open_nv_cfg *ptr_struct, FILE* file, int indent_level); +int tools_open_nv_cfg_size(); +#define TOOLS_OPEN_NV_CFG_SIZE (0x100) +void tools_open_nv_cfg_dump(const union tools_open_nv_cfg *ptr_struct, FILE* file); +/* tools_open */ +void tools_open_tools_open_pack(const union tools_open_tools_open *ptr_struct, u_int8_t* ptr_buff); +void tools_open_tools_open_unpack(union tools_open_tools_open *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_tools_open_print(const union tools_open_tools_open *ptr_struct, FILE* file, int indent_level); +int tools_open_tools_open_size(); +#define TOOLS_OPEN_TOOLS_OPEN_SIZE (0x100000) +void tools_open_tools_open_dump(const union tools_open_tools_open *ptr_struct, FILE* file); +/* uint64 */ +void tools_open_uint64_pack(const struct tools_open_uint64 *ptr_struct, u_int8_t* ptr_buff); +void tools_open_uint64_unpack(struct tools_open_uint64 *ptr_struct, const u_int8_t* ptr_buff); +void tools_open_uint64_print(const struct tools_open_uint64 *ptr_struct, FILE* file, int indent_level); +int tools_open_uint64_size(); +#define TOOLS_OPEN_UINT64_SIZE (0x8) +void tools_open_uint64_dump(const struct tools_open_uint64 *ptr_struct, FILE* file); + + +#ifdef __cplusplus +} +#endif + +#endif // TOOLS_OPEN_LAYOUTS_H -- 2.41.0