diff --git a/add-ins/NitroSystem/NitroSystem_forTWL-080408-SDK5_0FCplus5-patch-jp.zip b/add-ins/NitroSystem/NitroSystem_forTWL-080408-SDK5_0FCplus5-patch-jp.zip deleted file mode 100644 index 3c329023..00000000 Binary files a/add-ins/NitroSystem/NitroSystem_forTWL-080408-SDK5_0FCplus5-patch-jp.zip and /dev/null differ diff --git a/add-ins/NitroSystem/NitroSystem_forTWL-080408-jp.zip b/add-ins/NitroSystem/NitroSystem_forTWL-080408-jp.zip deleted file mode 100644 index ce07e42d..00000000 Binary files a/add-ins/NitroSystem/NitroSystem_forTWL-080408-jp.zip and /dev/null differ diff --git a/build/tests/AppVersionViewer/ARM9/Makefile b/build/tests/AppVersionViewer/ARM9/Makefile deleted file mode 100644 index 5e20a362..00000000 --- a/build/tests/AppVersionViewer/ARM9/Makefile +++ /dev/null @@ -1,150 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 0 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = TRUE -GAMECODE = 0BZA -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=N -DVERSION_VIEWER=TRUE -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCDIR = $(DISP_INFO)/ARM9/src - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c \ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_NAME = AppVersionViewer -TARGET_BIN = $(TARGET_NAME).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - liberrorlog$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont_launcher$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE) -OBJDIR = ./obj/$(TWL_BUILDTYPE) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = $(DISP_INFO)/ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/AppVersionViewer/ARM9/main.rsf b/build/tests/AppVersionViewer/ARM9/main.rsf deleted file mode 100644 index 36a4c3fe..00000000 --- a/build/tests/AppVersionViewer/ARM9/main.rsf +++ /dev/null @@ -1,248 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - - # TITLE NAME: Your product name within 12bytes - # - TitleName "DispInfo" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile ../banner/banner.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess $(DISPINFO_SDACCESS) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess $(DISPINFO_NANDACCESS) - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - LockSCFG $(DISPINFO_LOCKSCFG) - HwAESSlotA_SSLClientCert $(DISPINFO_AES) - DisableDebug TRUE - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - #Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType $(DISPINFO_APPTYPE) -# AppType SYSTEM - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media $(DISPINFO_MEDIA) -# Media NAND - # - # Data only title : [TRUE/FALSE] - # don't have to edit - ##DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure $(DISPINFO_SECURE) -# Secure TRUE - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(DISPINFO_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile FALSE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/AppVersionViewer/banner/Makefile b/build/tests/AppVersionViewer/banner/Makefile deleted file mode 100644 index a6a3b396..00000000 --- a/build/tests/AppVersionViewer/banner/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/icon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/AppVersionViewer/banner/banner_v3.bsf b/build/tests/AppVersionViewer/banner/banner_v3.bsf deleted file mode 100644 index d3ede19a..00000000 Binary files a/build/tests/AppVersionViewer/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/AppVersionViewer/banner/icon/icon.bmp b/build/tests/AppVersionViewer/banner/icon/icon.bmp deleted file mode 100644 index b2ddda22..00000000 Binary files a/build/tests/AppVersionViewer/banner/icon/icon.bmp and /dev/null differ diff --git a/build/tests/CalcHMAC_forBroadOn/Makefile b/build/tests/CalcHMAC_forBroadOn/Makefile deleted file mode 100644 index 755280bf..00000000 --- a/build/tests/CalcHMAC_forBroadOn/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CalcHMAC_forBroadOn -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: #$ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -SRCS = CalcHMAC_forBroadOn.c - -TARGET_BIN = CalcHMAC_forBroadOn.srl - -TITLEID_LO = 0BRA - -ROM_SPEC = main.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -LINCLUDES = $(ROOT)/build/libraries/lcfg/ARM9.TWL/include -LLIBRARIES = liblcfg$(TWL_LIBSUFFIX).a - -ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo.der' -endif - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \ - -DPRIVKEY_PATH='$(TWL_IPL_RED_PRIVATE_ROOT)/keys/rsa' \ - -DCARD_REGION='$(CARD_REGION)' - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CalcHMAC_forBroadOn/main.rsf b/build/tests/CalcHMAC_forBroadOn/main.rsf deleted file mode 100644 index e35eb49e..00000000 --- a/build/tests/CalcHMAC_forBroadOn/main.rsf +++ /dev/null @@ -1,171 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - RomVersion 2 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 2G - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(PRIVKEY_PATH) - Root /key - File $(HWINFO_PRIVKEY) -} diff --git a/build/tests/CalcHMAC_forBroadOn/src/CalcHMAC_forBroadOn.c b/build/tests/CalcHMAC_forBroadOn/src/CalcHMAC_forBroadOn.c deleted file mode 100644 index 9019ea4e..00000000 --- a/build/tests/CalcHMAC_forBroadOn/src/CalcHMAC_forBroadOn.c +++ /dev/null @@ -1,368 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include -#include -#include -#include -#include -#include -#include -#include "TWLStoreFile.h" - -// define data------------------------------------------------------------------ -#define HWINFO_PRIVKEY_PATH "rom:key/private_HWInfo.der" // »•i—p”é–§Œ® -#define RSA_KEY_LENGTH_1024 RSA_KEY_LENGTH -#define HWINFO_S_BODY_SIZE 0x1C - -#define PATH_K00A317_JP "sdmc:/hwinfo_s/HWInfo_S.K00A317_JP.dat" -#define PATH_K00A317_US "sdmc:/hwinfo_s/HWInfo_S.K00A317_US.dat" -#define PATH_K00A317_EU "sdmc:/hwinfo_s/HWInfo_S.K00A317_EU.dat" -#define PATH_K00A317_AU "sdmc:/hwinfo_s/HWInfo_S.K00A317_AU.dat" -#define PATH_K00A319_JP "sdmc:/hwinfo_s/HWInfo_S.K00A319_JP.dat" -#define PATH_K00A319_US "sdmc:/hwinfo_s/HWInfo_S.K00A319_US.dat" -#define PATH_K00A319_EU "sdmc:/hwinfo_s/HWInfo_S.K00A319_EU.dat" -#define PATH_K00A319_AU "sdmc:/hwinfo_s/HWInfo_S.K00A319_AU.dat" - -//------------------------------------------------------------------------------ -extern s32 CRYPTO_RSA_Sign_custom(CRYPTORSASignContext *context, CRYPTORSASignParam *param); - -//------------------------------------------------------------------------------ -static u8 s_privKey[ 4096 ] ATTRIBUTE_ALIGN(32); -static TSFHeader s_header; - -/*----------------------------------------------------------------------------*/ -static const u64 FuseID_K00A317 = 0x08a1080105112134LLU; -static const u64 FuseID_K00A319 = 0x08a1080105112122LLU; - -/*----------------------------------------------------------------------------*/ -static const u8 HWINFO_S_K00A317_JP[HWINFO_S_BODY_SIZE] = -{ - 0x01, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x00, /* region */ - 'T', 'J', 'N', '5', '6', '3', '2', '0', - '4', '0', '2', '0', 0x00, 'K', 0x00, /* serialNo */ - 'J', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A317_US[HWINFO_S_BODY_SIZE] = -{ - 0x26, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x01, /* region */ - 'T', 'N', '5', '6', '3', '2', '0', '4', - '0', '2', '0', 0x00, 0x00, 'K', 0x00, /* serialNo */ - 'E', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A317_EU[HWINFO_S_BODY_SIZE] = -{ - 0x3E, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x02, /* region */ - 'T', 'E', 'N', '5', '6', '3', '2', '0', - '4', '0', '2', '0', 0x00, 'K', 0x00, /* serialNo */ - 'P', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A317_AU[HWINFO_S_BODY_SIZE] = -{ - 0x02, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x03, /* region */ - 'T', 'A', 'N', '5', '6', '3', '2', '0', - '4', '0', '2', '0', 0x00, 'K', 0x00, /* serialNo */ - 'U', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - - -/*----------------------------------------------------------------------------*/ -static const u8 HWINFO_S_K00A319_JP[HWINFO_S_BODY_SIZE] = -{ - 0x01, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x00, /* region */ - 'T', 'J', 'N', '3', '5', '3', '8', '9', - '0', '3', '3', '4', 0x00, 'K', 0x00, /* serialNo */ - 'J', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A319_US[HWINFO_S_BODY_SIZE] = -{ - 0x26, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x01, /* region */ - 'T', 'N', '3', '5', '3', '8', '9', '0', - '3', '3', '4', 0x00, 0x00, 'K', 0x00, /* serialNo */ - 'E', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A319_EU[HWINFO_S_BODY_SIZE] = -{ - 0x3E, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x02, /* region */ - 'T', 'E', 'N', '3', '5', '3', '8', '9', - '0', '3', '3', '4', 0x00, 'K', 0x00, /* serialNo */ - 'P', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -static const u8 HWINFO_S_K00A319_AU[HWINFO_S_BODY_SIZE] = -{ - 0x02, 0x00, 0x00, 0x00, /* validLanguageBitmap */ - 0x00, 0x00, 0x00, 0x00, /* flags, rsv */ - 0x03, /* region */ - 'T', 'A', 'N', '3', '5', '3', '8', '9', - '0', '3', '3', '4', 0x00, 'K', 0x00, /* serialNo */ - 'U', 'A', 'N', 'H' /* launcherTitleID_Lo */ -}; - -//================================================================================ - -static void CalcHWSecureInfoHMAC( void *pDstHMAC, const void* body, u64 fuseID ) -{ - u8 key[SVC_SHA1_DIGEST_SIZE]; - int i; - SVC_CalcSHA1(key, &fuseID, sizeof(u64)); - SVC_CalcHMACSHA1( pDstHMAC, body, HWINFO_S_BODY_SIZE, key, SVC_SHA1_DIGEST_SIZE); - - OS_TPrintf( "key : " ); - for( i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) { - OS_TPrintf( "%02x", key[ i ] ); - } - OS_TPrintf( "\n" ); - OS_TPrintf( "hmac: " ); - for( i = 0; i < SVC_SHA1_DIGEST_SIZE; i++ ) { - OS_TPrintf( "%02x", ((u8 *)pDstHMAC)[ i ] ); - } - OS_TPrintf( "\n" ); - - return; -} - -// –¼ŽZoiBERƒGƒ“ƒR[ƒh‚È‚µj -static BOOL CalcSignature( void *pDstSign, const void *pSrc, u32 len, const u8 *pPrivKeyDER, u32 keyFileLen, u32 keyLen ) -{ - CRYPTORSASignContext context; - CRYPTORSASignInitParam initParam; - CRYPTORSASignParam param; - int result_len; - - initParam.key = (void*)pPrivKeyDER; - initParam.key_len = keyFileLen; - if( CRYPTO_RSA_SignInit(&context, &initParam) != 0 ) { - return FALSE; - } - - param.in = (void *)pSrc; - param.in_len = len; - param.out = pDstSign; - param.out_size = keyLen; - - result_len = CRYPTO_RSA_Sign_custom(&context, ¶m); - if( result_len != keyLen ) { - return FALSE; - } - - return CRYPTO_RSA_SignTerminate(&context) == 0 ? TRUE : FALSE; -} - - -static BOOL LCFGi_THW_WriteSecureInfoCustom( char *pPath, const LCFGTWLHWSecureInfo *pSrcInfo, u64 fuseID, const u8 *pPrivKeyDER, u32 keyFileLen ) -{ - TSFHeader header; - - // ƒwƒbƒ_‰Šú‰» - MI_CpuClear8( &header, sizeof(TSFHeader) ); - header.version = LCFG_TWL_HWINFO_SECURE_VERSION; - header.bodyLength = sizeof( LCFGTWLHWSecureInfo ); - - // ƒwƒbƒ_–¼ŽZo - { - u8 hmac_sha1[ SVC_SHA1_DIGEST_SIZE ]; - CalcHWSecureInfoHMAC( hmac_sha1, pSrcInfo, fuseID ); - if( !CalcSignature( (void *)header.digest.rsa, hmac_sha1, SVC_SHA1_DIGEST_SIZE, pPrivKeyDER, keyFileLen, RSA_KEY_LENGTH_1024 ) ) { - return FALSE; - } - } - - // ƒtƒ@ƒCƒ‹¶¬ - (void)FS_CreateFileAuto( pPath, FS_PERMIT_R | FS_PERMIT_W ); - { -#define HWINFO_FILE_LEN ( 16 * 1024 ) - FSFile file[1]; - char *pBuffer = OS_Alloc( HWINFO_FILE_LEN ); - - if( !FS_OpenFileEx( file, pPath, FS_FILEMODE_RW ) ) { - return FALSE; - } - if( FS_SetFileLength( file, HWINFO_FILE_LEN ) != FS_RESULT_SUCCESS ) { - (void)FS_CloseFile( file ); - return FALSE; - } - if( pBuffer ) { - MI_CpuFillFast( pBuffer, 0xffffffff, HWINFO_FILE_LEN ); - (void)FS_WriteFile( file, pBuffer, HWINFO_FILE_LEN ); - } - (void)FS_CloseFile( file ); - } - - // ƒ‰ƒCƒg - if( !LCFGi_TSF_WriteFile( pPath, &header, (const void *)pSrcInfo, NULL ) ) { - return FALSE; - } - return TRUE; -} - - -// ”é–§Œ®‚̃Š[ƒh -static BOOL ReadPrivateKey( void *pBuffer, u32 *pKeyFileLen, char *pPath ) -{ - BOOL retval = TRUE; - FSFile file; - - FS_InitFile( &file ); - if( !FS_OpenFileEx( &file, pPath, FS_FILEMODE_R ) ) - { - OS_TPrintf( "PrivateKey read failed.\n" ); - retval = FALSE; - }else { - *pKeyFileLen = FS_GetFileLength( &file ); - if( *pKeyFileLen > 0 ) { - if( FS_ReadFile( &file, pBuffer, (s32)*pKeyFileLen ) == *pKeyFileLen ) { - OS_TPrintf( "PrivateKey read succeeded.\n" ); - }else { - OS_TPrintf( "PrivateKey read failed.\n" ); - retval = FALSE; - } - } - FS_CloseFile( &file ); - } - return retval; -} - -/*---------------------------------------------------------------------------* - Name: InitAllocSystem - - Description: ƒq[ƒv‚ð쬂µ‚Ä OS_Alloc ‚ªŽg‚¦‚邿‚¤‚É‚µ‚Ü‚·B - - Arguments: ‚È‚µB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static void InitAllocSystem() -{ - void* newArenaLo; - OSHeapHandle hHeap; - - // ƒƒCƒ“ƒAƒŠ[ƒi‚̃AƒƒP[ƒgƒVƒXƒeƒ€‚ð‰Šú‰» - newArenaLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetMainArenaLo(newArenaLo); - - // ƒƒCƒ“ƒAƒŠ[ƒiã‚Ƀq[ƒv‚ðì¬ - hHeap = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap); -} - -extern u64 g_HWInfoFuseROM; -extern char *g_pHwInfoPath; - - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void TwlMain(void) -{ - BOOL retval; - u32 keyLen; - - OS_Init(); - InitAllocSystem(); - (void)OS_SetIrqMask(0); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); - FS_Init( FS_DMA_NOT_USE ); - CRYPTO_SetMemAllocator( OS_AllocFromMain, OS_FreeToMain, NULL ); - - OS_TPrintf("---- HMAC over HWInfo_S for PROD boards @ BroadOn ----\n"); - - if( !ReadPrivateKey( s_privKey, &keyLen, HWINFO_PRIVKEY_PATH ) ) { - OS_TPrintf("PrivateKey read failed.\n"); - }else { - OS_TPrintf("TS-Board: K00A317\n"); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_JP, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_JP, FuseID_K00A317, s_privKey, keyLen ); - OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_US, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_US, FuseID_K00A317, s_privKey, keyLen ); - OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_EU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_EU, FuseID_K00A317, s_privKey, keyLen ); - OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A317_AU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A317_AU, FuseID_K00A317, s_privKey, keyLen ); - OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" ); - - OS_TPrintf("TS-Board: K00A319\n"); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_JP, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_JP, FuseID_K00A319, s_privKey, keyLen ); - OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_US, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_US, FuseID_K00A319, s_privKey, keyLen ); - OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_EU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_EU, FuseID_K00A319, s_privKey, keyLen ); - OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" ); - retval = LCFGi_THW_WriteSecureInfoCustom( PATH_K00A319_AU, (const LCFGTWLHWSecureInfo *)HWINFO_S_K00A319_AU, FuseID_K00A319, s_privKey, keyLen ); - OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" ); - } -#if 0 - OS_TPrintf("---- Verify phase ----\n"); - { - OS_TPrintf("TS-Board: K00A317\n"); - g_HWInfoFuseROM = FuseID_K00A317; - g_pHwInfoPath = PATH_K00A317_JP; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A317_US; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A317_EU; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A317_AU; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" ); - - OS_TPrintf("TS-Board: K00A319\n"); - g_HWInfoFuseROM = FuseID_K00A319; - g_pHwInfoPath = PATH_K00A319_JP; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" JP: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A319_US; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" US: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A319_EU; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" EU: %s\n", retval ? "succeeded" : "failed" ); - g_pHwInfoPath = PATH_K00A319_AU; - retval = LCFG_ReadHWSecureInfo(); - OS_TPrintf(" AU: %s\n", retval ? "succeeded" : "failed" ); - } -#endif - OS_Terminate(); -} diff --git a/build/tests/CheckCardAccess/Makefile b/build/tests/CheckCardAccess/Makefile deleted file mode 100644 index a9bcdf87..00000000 --- a/build/tests/CheckCardAccess/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardAccess -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.off Makefile.normal Makefile.game - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardAccess/Makefile.game b/build/tests/CheckCardAccess/Makefile.game deleted file mode 100644 index 336eafb1..00000000 --- a/build/tests/CheckCardAccess/Makefile.game +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardAccess -# File: Makefile.game -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: #$ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -TARGET_NAME = finalize_check_game -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).tad - -SRCS = ./src/main.c ./src/font.c - -MACRO_FLAGS += -DMY_TARGET_NAME=\"$(basename $(TARGET_BIN))\" - -#------------------------- - -ROM_SPEC = game_mode.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -.PHONY: build_time - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardAccess/Makefile.normal b/build/tests/CheckCardAccess/Makefile.normal deleted file mode 100644 index 267b70f0..00000000 --- a/build/tests/CheckCardAccess/Makefile.normal +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardAccess -# File: Makefile.normal -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: #$ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -TARGET_NAME = finalize_check_normal -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).tad - -SRCS = ./src/main.c ./src/font.c - -MACRO_FLAGS += -DMY_TARGET_NAME=\"$(basename $(TARGET_BIN))\" - -#------------------------- - -ROM_SPEC = normal_mode.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -.PHONY: build_time - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardAccess/Makefile.off b/build/tests/CheckCardAccess/Makefile.off deleted file mode 100644 index 4585c909..00000000 --- a/build/tests/CheckCardAccess/Makefile.off +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardAccess -# File: Makefile.off -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: #$ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -TARGET_NAME = finalize_check_slotpoweroff -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).tad - -SRCS = ./src/main.c ./src/font.c - -MACRO_FLAGS += -DMY_TARGET_NAME=\"$(basename $(TARGET_BIN))\" - -#------------------------- - -ROM_SPEC = slot_power_off.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -.PHONY: build_time - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardAccess/game_mode.rsf b/build/tests/CheckCardAccess/game_mode.rsf deleted file mode 100644 index f8d2dba8..00000000 --- a/build/tests/CheckCardAccess/game_mode.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - # RomHeaderTemplate ../rh/0C5A/rom_header_0c5a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - # BannerFile "banner_LTD/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode 4CDA - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - GameCardNitroMode TRUE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/CheckCardAccess/normal_mode.rsf b/build/tests/CheckCardAccess/normal_mode.rsf deleted file mode 100644 index 888fbd4d..00000000 --- a/build/tests/CheckCardAccess/normal_mode.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - # RomHeaderTemplate ../rh/0C4A/rom_header_0c4a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - # BannerFile "banner_LTD/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode 4CDA - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - GameCardOn TRUE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/CheckCardAccess/slot_power_off.rsf b/build/tests/CheckCardAccess/slot_power_off.rsf deleted file mode 100644 index b0013f6f..00000000 --- a/build/tests/CheckCardAccess/slot_power_off.rsf +++ /dev/null @@ -1,243 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - # RomHeaderTemplate ../rh/0C3A/rom_header_0c3a.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - # BannerFile "banner_LTD/banner.bnr" - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode 4CDA - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/CheckCardAccess/src/font.c b/build/tests/CheckCardAccess/src/font.c deleted file mode 100644 index 9500697a..00000000 --- a/build/tests/CheckCardAccess/src/font.c +++ /dev/null @@ -1,579 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: font.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CheckCardAccess/src/font.h b/build/tests/CheckCardAccess/src/font.h deleted file mode 100644 index b4a94093..00000000 --- a/build/tests/CheckCardAccess/src/font.h +++ /dev/null @@ -1,36 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: font.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif -/*===========================================================================*/ - -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // FONT_H_ diff --git a/build/tests/CheckCardAccess/src/hotswTypes.h b/build/tests/CheckCardAccess/src/hotswTypes.h deleted file mode 100644 index 02d0843e..00000000 --- a/build/tests/CheckCardAccess/src/hotswTypes.h +++ /dev/null @@ -1,134 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - HOTSW - include - File: type.h - - Copyright 2007-2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - *---------------------------------------------------------------------------*/ -#ifndef __HOTSW_TYPES_H__ -#define __HOTSW_TYPES_H__ - -#include -#include -#include "romSpec.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -static inline void HOTSW_WaitCardCtrl(void) -{ - while( reg_MI_MCCNT1_A & REG_MI_MCCNT1_START_MASK ){} -} - -// Define ------------------------------------------------------------------- -// --- Boot Segment -#define BOOT_SEGMENT_SIZE 0x1000 - -// --- Secure Segment -#define SECURE_SEGMENT_START 0x4000 -#define SECURE_SEGMENT_SIZE 0x4000 -#define SECURE_SEGMENT_END (SECURE_SEGMENT_START + SECURE_SEGMENT_SIZE) - -// --- TWL Card -#define TWLCARD_BORDER_OFFSET 0x80000 - -// --- Page / Segment (Byte) -#define PAGE_SIZE 0x200 -#define ONE_SEGMENT_SIZE 0x1000 - -// --- Page / Segment (Word) -#define PAGE_WORD_SIZE 0x80 -#define ONE_SEGMENT_WORD_SIZE 0x400 - -// --- Rom Emulation -#define ROM_EMULATION_DATA_SIZE 0x20 - -// --- Thread -#define HOTSW_THREAD_STACK_SIZE (1024 * 2) -#define HOTSW_DMA_MSG_NUM 8 -#define HOTSW_INSERT_MSG_NUM 16 -#define HOTSW_PULLED_MSG_NUM 16 -#define HOTSW_CTRL_MSG_NUM 8 -#define HOTSW_MSG_BUFFER_NUM (HOTSW_INSERT_MSG_NUM + HOTSW_PULLED_MSG_NUM + HOTSW_CTRL_MSG_NUM) -#define HOTSW_POLLING_CTRL_BUFFER_NUM 4 - -// --- Card Control Reg 0 -#define HOTSW_E2PROM_CTRL_MASK 0x00ff - -// --- Card Control Reg 1 -#define START_FLG_MASK 0x80000000 -#define READY_FLG_MASK 0x00800000 - -#define LATENCY1_SHIFT 0 -#define LATENCY1_MASK 0x00001fff - -#define DS_SHIFT 13 -#define DS_MASK 0x00002000 - -#define SE_SHIFT 14 -#define SE_MASK 0x00004000 - -#define SCR_SHIFT 15 -#define SCR_MASK 0x00008000 - -#define LATENCY2_SHIFT 16 -#define LATENCY2_MASK 0x003f0000 - -#define CS_SHIFT 22 -#define CS_MASK 0x00400000 - -#define RDY_SHIFT 23 -#define RDY_MASK 0x00800000 - -#define PC_SHIFT 24 -#define PC_MASK 0x07000000 - -#define CT_SHIFT 27 -#define CT_MASK 0x08000000 - -#define TRM_SHIFT 28 -#define TRM_MASK 0x10000000 - -#define RESB_SHIFT 29 -#define RESB_MASK 0x20000000 - -#define WR_SHIFT 30 -#define WR_MASK 0x40000000 - -#define START_SHIFT 31 -#define START_MASK 0x80000000 - -#define SCRAMBLE_MASK 0x1040e000 // ƒXƒNƒ‰ƒ“ƒuƒ‹ŠÖŒW‚̃tƒ‰ƒOƒ}ƒXƒN -#define SECURE_COMMAND_SCRAMBLE_MASK 0x00406000 // CS SE DS‚̃}ƒXƒN - -// --- Page Count -#define PAGE_0 0x0UL << PC_SHIFT -#define PAGE_1 0x1UL << PC_SHIFT -#define PAGE_2 0x2UL << PC_SHIFT -#define PAGE_4 0x3UL << PC_SHIFT -#define PAGE_8 0x4UL << PC_SHIFT -#define PAGE_16 0x5UL << PC_SHIFT -#define PAGE_32 0x6UL << PC_SHIFT -#define PAGE_STAT 0x7UL << PC_SHIFT - - -// union --------------------------------------------------------------------- -typedef union -{ - u64 dw; - u8 b[8]; -} Cmd64; - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif // __HOTSW_TYPES_H__ \ No newline at end of file diff --git a/build/tests/CheckCardAccess/src/main.c b/build/tests/CheckCardAccess/src/main.c deleted file mode 100644 index a449884a..00000000 --- a/build/tests/CheckCardAccess/src/main.c +++ /dev/null @@ -1,768 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - CARD - hotswDebug - File: main_finalize.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - *---------------------------------------------------------------------------*/ - -#include -#include -#include "DEMO.h" -#include "hotswTypes.h" -#include "font.h" - -#define SDK_MAKERCODE '10' -#define DIGEST_HASH_BLOCK_SIZE_SHA1 (512/8) - -#define MY_TEMP_BUFFER_SIZE 0x80000 -#define GAME_FIELD_START_ADDRESS 0x8000 - -#define ONE_SEGMENT_PAGE_NUM 8 - -#define READY_MASK 0x00800000 -#define CARD_COMMAND_MASK 0x07000000 - -#define MY_ROMHEADER_TWL ((ROM_Header_Short *)HW_TWL_CARD_ROM_HEADER_BUF) -#define MY_ROMHEADER_NTR ((ROM_Header_Short *)HW_CARD_ROM_HEADER) -#define MY_ROMHEADER_NAND ((ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF) - -// --------------------------------------------------------------- -// HMACSHA1‚ÌŒ® -static u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = { - 0x21, 0x06, 0xc0, 0xde, - 0xba, 0x98, 0xce, 0x3f, - 0xa6, 0x92, 0xe3, 0x9d, - 0x46, 0xf2, 0xed, 0x01, - - 0x76, 0xe3, 0xcc, 0x08, - 0x56, 0x23, 0x63, 0xfa, - 0xca, 0xd4, 0xec, 0xdf, - 0x9a, 0x62, 0x78, 0x34, - - 0x8f, 0x6d, 0x63, 0x3c, - 0xfe, 0x22, 0xca, 0x92, - 0x20, 0x88, 0x97, 0x23, - 0xd2, 0xcf, 0xae, 0xc2, - - 0x32, 0x67, 0x8d, 0xfe, - 0xca, 0x83, 0x64, 0x98, - 0xac, 0xfd, 0x3e, 0x37, - 0x87, 0x46, 0x58, 0x24 -}; - -static u32 rhBuf[BOOT_SEGMENT_SIZE/sizeof(u32)]; -static u32 checkBuf[MY_TEMP_BUFFER_SIZE/sizeof(u32)]; - -static u16 card_lock_id; -static BOOL error, flxhash, ltdhash, romheader; -static BOOL isTwlApplication; -static BOOL isTwlCard; -static ROM_Header_Short *rh; - -static u16 screen[32 * 32] ATTRIBUTE_ALIGN(HW_CACHE_LINE_SIZE); - -// --------------------------------------------------------------- -static void CheckMirrorImage(void); -static int CompRomHeaderForNTR(void* buf); -static void CheckRomHeader(void); -static BOOL CheckHashValue(void* buf, u32 size, void* digest); -static void MY_LoadCard_arm7Static(void); -static void MY_LoadCard_arm7LtdStatic(void); -static void CheckBackupDevice(void); -static void ShowResult(void); -static void debugMessage(void); - -static void ReadBootSegNormal(void* buf); -static void SetCommand(Cmd64 *cndLE); -static void ReadPageGame(u32 start_addr, void* buf, u32 size); -static void ReadCardData(void* dest, s32 offset, s32 length); - -static void VBlankIntr (void); -static void PrintString (s16 x, s16 y, u8 palette, char *text, ...); -static void VolumeSwitchCallback(SNDEXResult result, void* arg); - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: ƒƒCƒ“ ƒGƒ“ƒgƒŠƒ|ƒCƒ“ƒg. - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - CARDRomHeader *card_header = (void*)CARD_GetRomHeader(); - - OS_Init(); - OS_InitTick(); - CARD_Init(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - if ( card_header->maker_code == SDK_MAKERCODE ) - { - CARD_Enable(TRUE); - } - - /* •\Ž¦Ý’è‰Šú‰» */ - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - MI_CpuFillFast((void*)HW_OAM, GX_LCD_SIZE_Y, HW_OAM_SIZE); - MI_CpuClearFast((void*)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void*)HW_DB_OAM, GX_LCD_SIZE_Y, HW_DB_OAM_SIZE); - MI_CpuClearFast((void*)HW_DB_PLTT, HW_DB_PLTT_SIZE); - GX_SetBankForBG(GX_VRAM_BG_128_A); - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, // SCR ƒx[ƒXƒuƒƒbƒN 31 - GX_BG_CHARBASE_0x00000, // CHR ƒx[ƒXƒuƒƒbƒN 0 - GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - MI_CpuClearFast((void*)screen, sizeof(screen)); - DC_FlushRange(screen, sizeof(screen)); - GX_LoadBG0Scr(screen, 0, sizeof(screen)); - - /* Š„ž‚ÝÝ’è */ - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* LCD •\ަŠJŽn */ - GX_DispOn(); - GXS_DispOn(); - - PrintString(0, 0, 0xc, "+++ Card Access Check +++"); - - // NANDƒAƒvƒŠ‚ªHYB‚Ìê‡ - if(MY_ROMHEADER_NAND->platform_code == 0x02){ - PrintString(0, 2, 0x5, ""); - } - else if(MY_ROMHEADER_NAND->platform_code == 0x03){ - PrintString(0, 2, 0x6, ""); - } - - // ƒJ[ƒhƒAƒvƒŠƒ^ƒCƒv‚ð”»•ÊBŽg‚¤Rom Header Buffer ‚ðؑւ¦‚é - if(MY_ROMHEADER_NTR->platform_code & PLATFORM_CODE_FLAG_TWL){ - PrintString(0, 5, 0xf, "- TWL Application -"); - isTwlApplication = TRUE; - rh = MY_ROMHEADER_TWL; - } - else{ - PrintString(0, 5, 0xf, "- NTR Application -"); - isTwlApplication = FALSE; - rh = MY_ROMHEADER_NTR; - } - - // ƒJ[ƒhƒ^ƒCƒv‚Ì”»•Ê - isTwlCard = (*(vu32 *)(HW_BOOT_CHECK_INFO_BUF) & HOTSW_ROMID_TWLROM_MASK) ? TRUE : FALSE; - - // ’Frh‚̉Šú‰»‚ªI‚í‚Á‚Ä‚©‚çŒÄ‚Ño‚· -// debugMessage(); - - // ƒtƒ‰ƒO‚̉Šú‰» - error = FALSE; - flxhash = TRUE; - ltdhash = TRUE; - romheader = TRUE; - - // ƒƒbƒNID‚ðŽæ“¾‚µ‚Ä‚¨‚­ - card_lock_id = (u16)OS_GetLockID(); - - if(isTwlApplication){ - MY_LoadCard_arm7Static(); - MY_LoadCard_arm7LtdStatic(); - } - else{ - CheckMirrorImage(); - } - - CheckRomHeader(); - CheckBackupDevice(); - - ShowResult(); - - while(1){ -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - } -} - - -/*---------------------------------------------------------------------------* - Name: CheckMirrorImage - - Description: - - Gameƒ‚[ƒhŽž ¨ GameƒRƒ}ƒ“ƒh OK - NormalƒRƒ}ƒ“ƒh All 1 - - Normalƒ‚[ƒhŽž ¨ GameƒRƒ}ƒ“ƒh All 1 - NormalƒRƒ}ƒ“ƒh OK - - SlotPowerOffŽž ¨ GameƒRƒ}ƒ“ƒh All 0 - NormalƒRƒ}ƒ“ƒh All 0 - *---------------------------------------------------------------------------*/ -static void CheckMirrorImage(void) -{ - u32 buf1[PAGE_SIZE/sizeof(u32)]; - u32 buf2[PAGE_SIZE/sizeof(u32)]; - u32 buf_ff[PAGE_SIZE/sizeof(u32)]; - u32 buf_00[PAGE_SIZE/sizeof(u32)]; - - MI_CpuFill8( buf_ff, 0xff, sizeof(buf_ff) ); - MI_CpuFill8( buf_00, 0x0, sizeof(buf_00) ); - - CARD_LockRom(card_lock_id); - - // Gameƒ‚[ƒh‚̃Rƒ}ƒ“ƒh‚ÅKey Table—Ìˆæ‚ÆGame—̈æ“Ç‚Þ - ReadCardData(buf1, (s32)0x1000, (s32)PAGE_SIZE); - ReadCardData(buf2, (s32)0x8000, (s32)PAGE_SIZE); - - CARD_UnlockRom(card_lock_id); - - // Gameƒ‚[ƒh‚ÅKey Table—̈悩‚çGame—̈æ‚̃Cƒ[ƒW‚ª“ǂ߂ĂȂ©‚Á‚½‚çA•s–¾‚ȃ‚[ƒh - if(MI_CpuComp8( buf1, buf2, PAGE_SIZE )){ - error = TRUE; - PrintString(0, 7, 0x1, "Unknown Mode"); - } - else{ - // “¯‚¶ƒf[ƒ^‚Å‚à ALL 1(GameModeŽž) or ALL 0(SlotPowerOffŽž)‚Ȃ炿‚á‚ñ‚Ɠǂ߂ĂȂ¢‚Ì‚ÅANormalƒ‚[ƒh - if(!MI_CpuComp8( buf_ff, buf2, PAGE_SIZE ) || !MI_CpuComp8( buf_00, buf2, PAGE_SIZE )){ - flxhash = FALSE; - ltdhash = FALSE; - PrintString(0, 7, 0x1, "Flx Area : Not Accessible"); - } - // Key Table—̈æ“Ç‚ñ‚ÅAGame—̈æ‚̃Cƒ[ƒW‚ªo‚Ä‚½‚çGameƒ‚[ƒh - else{ - flxhash = TRUE; - ltdhash = FALSE; - PrintString(0, 7, 0x8, "Flx Area : Accessible"); - } - } -} - - -/*---------------------------------------------------------------------------* - Name: CheckRomHeader - - Description: - *---------------------------------------------------------------------------*/ -static void CheckRomHeader(void) -{ - int result; - u8* pBuf = (u8 *)rhBuf; - u8* romHeader = (u8 *)rh; - - CARD_LockRom(card_lock_id); - - ReadBootSegNormal(pBuf); - - CARD_UnlockRom(card_lock_id); - - // ŽÀۂɓǂñ‚¾Rom Header‚ÆIPL‚œǂñ‚¾Rom Header‚ð”äŠr - if(isTwlApplication){ - result = MI_CpuComp8( pBuf, romHeader, HW_TWL_CARD_ROM_HEADER_BUF_SIZE ); - } - else{ - result = CompRomHeaderForNTR(pBuf); - } - - // Œ‹‰Ê - if(result){ - romheader = FALSE; - PrintString(0, 11, 0x1, "Boot Segment : Not Accessible"); - } - else{ - romheader = TRUE; - PrintString(0, 11, 0x8, "Boot Segment : Accessible"); - } - -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); -} - - -static int CompRomHeaderForNTR(void* buf){ - u8* pBuf = (u8 *)buf; - u8* romHeader = (u8 *)rh; - u32 remainSize = HW_CARD_ROM_HEADER_SIZE; - - while(remainSize){ - // ƒ}ƒXƒNRomƒRƒ“ƒgƒ[ƒ‹î•ñ‚ª•Ï‚í‚Á‚Ä‚é‚Ì‚ÅA‚»‚±‚Í”ò‚΂·B - if((HW_CARD_ROM_HEADER_SIZE - remainSize) == 0x60){ - pBuf += 4; - romHeader += 4; - remainSize -= 4; - } - if(*pBuf == *romHeader){ - remainSize--; - } - else{ -// OS_TPrintf("Error (adr:0x%08x)\n", HW_CARD_ROM_HEADER_SIZE - remainSize); -// OS_TPrintf("read : 0x%02x real : 0x%02x\n", *pBuf, *romHeader); - break; - } - pBuf++; - romHeader++; - } - - return (int)remainSize; -} - - -/*---------------------------------------------------------------------------* - Name: CheckHashValue - - Description: ƒ‚ƒWƒ…[ƒ‹ƒnƒbƒVƒ…ƒ`ƒFƒbƒN - *---------------------------------------------------------------------------*/ -static BOOL CheckHashValue(void* buf, u32 size, void* digest) -{ - u8 sha1data[DIGEST_SIZE_SHA1]; - BOOL retval = TRUE; - - // ƒNƒŠƒA - MI_CpuClear8(sha1data, sizeof(sha1data)); - - // ARM7í’“ƒ‚ƒWƒ…[ƒ‹‚ÌHash’lƇ - SVC_CalcHMACSHA1( sha1data, - buf, - size, - s_digestDefaultKey, - sizeof(s_digestDefaultKey) ); - - return SVC_CompareSHA1( sha1data, digest ); -} - - -/*---------------------------------------------------------------------------* - Name: MY_LoadCard_arm7Static - - Description: ARM7í’“ƒ‚ƒWƒ…[ƒ‹ “Ç‚Ýo‚µEƒnƒbƒVƒ…ƒ`ƒFƒbƒN - *---------------------------------------------------------------------------*/ -static void MY_LoadCard_arm7Static(void) -{ - BOOL result; - u32* pBuf = checkBuf; - - CARD_LockRom(card_lock_id); - - ReadCardData(pBuf, (s32)rh->sub_rom_offset, (s32)rh->sub_size); - - CARD_UnlockRom(card_lock_id); - - result = CheckHashValue(checkBuf, rh->sub_size, (void *)rh->sub_static_digest); - - if(result){ - flxhash = TRUE; - PrintString(0, 7, 0x8, "Flx Area : Accessible"); - } - else{ - flxhash = FALSE; - PrintString(0, 7, 0x1, "Flx Area : Not Accessible"); - } - -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); -} - - -/*---------------------------------------------------------------------------* - Name: MY_LoadCard_arm7LtdStatic - - Description: ARM7Šg’£í’“ƒ‚ƒWƒ…[ƒ‹ “Ç‚Ýo‚µEƒnƒbƒVƒ…ƒ`ƒFƒbƒN - *---------------------------------------------------------------------------*/ -static void MY_LoadCard_arm7LtdStatic(void) -{ - BOOL result; - u32* pBuf = checkBuf; - - CARD_LockRom(card_lock_id); - - ReadCardData(pBuf, (s32)rh->sub_ltd_rom_offset, (s32)rh->sub_ltd_size); - - CARD_UnlockRom(card_lock_id); - - result = CheckHashValue(checkBuf, rh->sub_ltd_size, (void *)rh->sub_ltd_static_digest); - - if(result){ - ltdhash = TRUE; - PrintString(0, 9, 0x8, "Ltd Area : Accessible"); - } - else{ - ltdhash = FALSE; - PrintString(0, 9, 0x1, "Ltd Area : Not Accessible"); - } - -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); -} - - -/*---------------------------------------------------------------------------* - Name: CheckBackupDevice - - Description: Backup Device ‚ւ̃AƒNƒZƒXƒ`ƒFƒbƒN - - ’FEEPROM 512 kb‚̃TƒuŠî”Õ‚ÆŽg‚Á‚ÄŒŸ¸‚·‚é - *---------------------------------------------------------------------------*/ -static void CheckBackupDevice(void) -{ - BOOL identify; - static CARDResult last_result = CARD_RESULT_SUCCESS; - - CARD_LockBackup(card_lock_id); - - identify = CARD_IdentifyBackup(CARD_BACKUP_TYPE_EEPROM_512KBITS); - if (!identify) - { - PrintString(0, 13, 0x1, "Backup Device Identify Error..."); - error = TRUE; - CARD_UnlockBackup(card_lock_id); - return; - } - - { - u32 pos = 0; - static u8 tmp_buf[65536]; - int i; - const u32 page_size = CARD_GetBackupPageSize(); - const u32 total_size = CARD_GetBackupTotalSize(); - - for (i = 0; i < page_size; ++i) - { - tmp_buf[i] = (u8)(pos * 3 + i); - } - - if (!CARD_IsBackupEeprom()){ - PrintString(0, 13, 0x1, "Please Use EEPROM..."); - error = TRUE; - return; - } - - PrintString(0, 13, 0xf, "Backup Device Check Start..."); -// DEMO_DrawFlip(); - - while(pos < total_size){ - CARD_WriteAndVerifyEepromAsync(pos, tmp_buf, page_size, NULL, NULL); - - (void)CARD_WaitBackupAsync(); - last_result = CARD_GetResultCode(); - - pos += page_size; - - if (last_result != CARD_RESULT_SUCCESS){ - break; - } - } - - if (last_result != CARD_RESULT_SUCCESS){ - PrintString(0, 14, 0x1, "Backup Device : Not Accessible"); - error = TRUE; - } - else{ - PrintString(0, 14, 0x8, "Backup Device : Accessible"); - } - } - - CARD_UnlockBackup(card_lock_id); - -// DEMO_DrawFlip(); - OS_WaitVBlankIntr(); -} - - -/*---------------------------------------------------------------------------* - Name: ReadBootSegNormal - - Description: ƒm[ƒ}ƒ‹ƒ‚[ƒh‚ÌBoot Segment“ǂݞ‚Ý - *---------------------------------------------------------------------------*/ -#define TIME_OUT 1000 - -static void ReadBootSegNormal(void* buf) -{ - u32 i, loop, pc, size, counter; - u64 page = 0; - Cmd64 cndLE; - BOOL isType1; - - OSTick start; - - isType1 = (*(vu32 *)(HW_BOOT_CHECK_INFO_BUF) & HOTSW_ROMID_1TROM_MASK) ? FALSE : TRUE; - - if(isType1){ - loop = 0x1UL; - pc = 0x4UL; - size = BOOT_SEGMENT_SIZE; - } - else{ - loop = ONE_SEGMENT_PAGE_NUM; - pc = 0x1UL; - size = PAGE_SIZE; - } - - counter = 0; - - HOTSW_WaitCardCtrl(); - - for(i=0; i TIME_OUT){ - return; - } - } - *((u32 *)buf + counter++) = reg_MI_MCD1_A; - } - - page++; - - OS_SpinWait( 100 ); - } -} - - -/*---------------------------------------------------------------------------* - Name: HOTSWi_SetCommand - - Description: ˆø”‚Å—^‚¦‚ç‚ꂽƒRƒ}ƒ“ƒh‚̃Gƒ“ƒfƒBƒAƒ“‚ð•Ï‚¦‚ăŒƒWƒXƒ^‚ɃZƒbƒg‚·‚é - *---------------------------------------------------------------------------*/ -static void SetCommand(Cmd64 *cndLE) -{ - Cmd64 cndBE; - - // ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“‚É’¼‚· - cndBE.b[7] = cndLE->b[0]; - cndBE.b[6] = cndLE->b[1]; - cndBE.b[5] = cndLE->b[2]; - cndBE.b[4] = cndLE->b[3]; - cndBE.b[3] = cndLE->b[4]; - cndBE.b[2] = cndLE->b[5]; - cndBE.b[1] = cndLE->b[6]; - cndBE.b[0] = cndLE->b[7]; - - // MCCMD ƒŒƒWƒXƒ^Ý’è - reg_MI_MCCMD0_A = *(u32*)cndBE.b; - reg_MI_MCCMD1_A = *(u32*)&cndBE.b[4]; -} - - -/*---------------------------------------------------------------------------* - Name: ReadPageGame - - Description: ƒQ[ƒ€ƒ‚[ƒh‚ÅAŽw’肳‚ꂽƒy[ƒW‚ðŽw’èƒoƒbƒtƒ@‚ÉŽw’èƒTƒCƒY•ª‚ð“ǂݞ‚Þ - *---------------------------------------------------------------------------*/ -static void ReadPageGame(u32 start_addr, void* buf, u32 size) -{ - u32 loop, counter=0; - u64 i, page; - Cmd64 cndLE; - u32 rom_ctrl = *(vu32 *)(HW_CARD_ROM_HEADER + 0x60); - - OSTick start; - - rom_ctrl = rom_ctrl & ~CARD_COMMAND_MASK; - page = (u32)(start_addr / PAGE_SIZE); - loop = (u32)(size / PAGE_SIZE); - loop = (size % PAGE_SIZE) ? loop + 1 : loop; - - HOTSW_WaitCardCtrl(); - - for(i=0; i TIME_OUT){ - return; - } - } - *((u32 *)buf + counter++) = reg_MI_MCD1_A; - } - } - - OS_SpinWait( 100 ); -} - - -/*---------------------------------------------------------------------------* - Name: ReadCardData - - Description: ƒJ[ƒh‚©‚ç’†“r”¼’[‚ȃTƒCƒY(page“r’†)‚̃f[ƒ^‚ð“Ç‚Ýo‚·ŠÖ” - ƒGƒ‰[ƒR[ƒh‚ð•Ô‚· - *---------------------------------------------------------------------------*/ -static void ReadCardData(void* dest, s32 offset, s32 length) -{ - static u8 page_buffer[512]; - u32 page_offset = (u32)(offset & -512); - u32 buffer_offset = (u32)(offset % 512); - u32 valid_length = 512 - buffer_offset; - u32 remain_length; - - // ŠJŽnƒAƒhƒŒƒX‚ªƒy[ƒW‚Ì“r’† - if ( offset % 512 ) - { - ReadPageGame(page_offset, page_buffer, 512); - - MI_CpuCopy8(page_buffer + buffer_offset, dest, (length < valid_length ? length : valid_length)); - - dest = (u8*)dest + valid_length; - offset += valid_length; - length -= valid_length; - if ( length < 0) - { - return; - } - } - - remain_length = (u32)(length % 512); - ReadPageGame((u32)offset, dest, (u32)(length - remain_length)); - - // ƒPƒc‚ªƒy[ƒW“r’† - if( remain_length ){ - dest = (u8*)dest + (length - remain_length); - offset += length - remain_length; - - ReadPageGame((u32)offset, page_buffer, 512); - - MI_CpuCopy8(page_buffer, dest, remain_length); - } -} - - -/*---------------------------------------------------------------------------* - Name: ShowResult - - Description: Result•\ަ - *---------------------------------------------------------------------------*/ -static void ShowResult(void) -{ - PrintString(0, 16, 0xf, "-- Result --"); - - if(romheader && !flxhash && !ltdhash){ - PrintString(0, 18, 0x4, "Normal Mode"); - } - else if((!romheader && flxhash && !ltdhash) || - (!romheader && flxhash && ltdhash && !isTwlCard)){ - PrintString(0, 18, 0x5, "Game Mode"); - } - else if(!romheader && !flxhash && !ltdhash){ - PrintString(0, 18, 0x6, "Slot Power Off"); - } - else{ - PrintString(0, 18, 0x1, "Unknown Mode"); - } - - if(error){ - PrintString(0, 20, 0x1, "Backup Device Error"); - } - -// DEMO_DrawFlip(); -// OS_WaitVBlankIntr(); -} - - -/*---------------------------------------------------------------------------* - Name: debugMessage - - Description: - *---------------------------------------------------------------------------*/ -static void debugMessage(void) -{ - PrintString(0, 4, 0xf, "amr7 NmlRomOfs : 0x%08x", rh->sub_rom_offset); - PrintString(0, 5, 0xf, "amr7 LtdRomOfs : 0x%08x", rh->sub_ltd_rom_offset); - - OS_TPrintf("amr7 NmlRomOfs : 0x%08x\n", rh->sub_rom_offset); - OS_TPrintf("amr7 NmlSize : 0x%08x\n", rh->sub_size); - OS_TPrintf("amr7 LtdRomOfs : 0x%08x\n", rh->sub_ltd_rom_offset); - OS_TPrintf("amr7 LtdSize : 0x%08x\n", rh->sub_ltd_size); -} - - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: ‚uƒuƒ‰ƒ“ƒNŠ„ž‚݃xƒNƒgƒ‹B - *---------------------------------------------------------------------------*/ -static void VBlankIntr (void) -{ - /* ‰¼‘zƒXƒNƒŠ[ƒ“‚ð VRAM ‚É”½‰f */ - DC_FlushRange(screen, sizeof(screen)); - GX_LoadBG0Scr(screen, 0, sizeof(screen)); - - /* IRQ ƒ`ƒFƒbƒNƒtƒ‰ƒO‚ðƒZƒbƒg */ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - - -/*---------------------------------------------------------------------------* - Name: PrintString - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í32•¶Žš‚Ü‚ÅB - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - palette - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -static void PrintString (s16 x, s16 y, u8 palette, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *((u16*)(&temp[32])) = 0x0000; - for (i = 0; ; i++) - { - if (temp[i] == 0x00) - { - break; - } - screen[((y * 32) + x + i) % (32 * 32)] = (u16)((palette << 12) | temp[i]); - } -} \ No newline at end of file diff --git a/build/tests/CheckCardAccess/src/romSpec.h b/build/tests/CheckCardAccess/src/romSpec.h deleted file mode 100644 index cb96f899..00000000 --- a/build/tests/CheckCardAccess/src/romSpec.h +++ /dev/null @@ -1,152 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - HOTSW - include - File: romSpec.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef __HOTSW_ROMSPEC_H__ -#define __HOTSW_ROMSPEC_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -// ROM memory map - -#define HOTSW_PAGE_SIZE 0x200 // 512B -#define HOTSW_BOOT_SEG_SIZE 0x1000 // 4KB -#define HOTSW_LOAD_TABLE_SIZE 0x2000 // 8KB -#define HOTSW_KEYTABLE_AREA_SIZE 0x3000 // 12KB -#define HOTSW_KEYTABLE2_AREA_SIZE 0x3000 // 12KB -#define HOTSW_SECURE_AREA_SIZE 0x4000 // 16KB -#define HOTSW_SECURE2_AREA_SIZE 0x4000 // 16KB -#define HOTSW_ROMEMU_INFO_SIZE 0x20 - -#define HOTSW_BOOTSEGMENT_AREA_OFS 0x0000 // 0KB -#define HOTSW_KEYTABLE_AREA_OFS 0x1000 // 4KB -#define HOTSW_SECURE_AREA_OFS 0x4000 // 16KB -#define HOTSW_GAME_AREA_OFS 0x8000 // 32KB -#define HOTSW_SECURE2_AREA_OFS 0x3000 // 12KB -#define HOTSW_GAME2_AREA_OFS 0x7000 // 28KB -#define HOTSW_ROMEMU_INFO_OFS (HOTSW_SECURE_AREA_OFS - HOTSW_PAGE_SIZE + 0x160) - - -// ROM ID - -#define HOTSW_ROMID_1TROM_MASK 0x80000000UL -#define HOTSW_ROMID_TWLROM_MASK 0x40000000UL -#define HOTSW_ROMID_RFSSUP_MASK 0x20000000UL -#define HOTSW_ROMID_SIZE_MASK 0x0000ff00UL - -// ROM STATUS - -#define HOTSW_ROMST_RFS_WARN_L1_MASK 0x00000004UL -#define HOTSW_ROMST_RFS_WARN_L2_MASK 0x00000008UL -#define HOTSW_ROMST_RFS_READY_MASK 0x00000020UL - - -// NORMAL command - -#define HSWOP_N_OP_MASK 0xff00000000000000ULL -#define HSWOP_N_OP_SIZE 8 - -#define HSWOP_N_OP_RD_ID 0x9000000000000000ULL -#define HSWOP_N_OP_RD_PAGE 0x0000000000000000ULL -#define HSWOP_N_OP_WR_PAGE 0x8000000000000000ULL -#define HSWOP_N_OP_LD_TABLE 0x9f00000000000000ULL -#define HSWOP_N_OP_RD_CACHE_START 0x5800000000000000ULL -#define HSWOP_N_OP_RD_CACHE 0x6000000000000000ULL -#define HSWOP_N_OP_RD_CACHE_LAST 0x6800000000000000ULL -#define HSWOP_N_OP_RD_STAT 0xd600000000000000ULL -#define HSWOP_N_OP_RFS_BLK 0xb500000000000000ULL -#define HSWOP_N_OP_CHG_MODE 0x3c00000000000000ULL -#define HSWOP_N_OP_CHG2_MODE 0x3d00000000000000ULL - -#define HSWOP_N_RD_ID_PAD 0x00ffffffffffffffULL -#define HSWOP_N_RD_PAGE_PAD 0x00fffffeff00ffffULL -#define HSWOP_N_CHG_MODE_PAD 0x00000000f00000ffULL -#define HSWOP_N_CHG2_MODE_PAD HSWOP_N_CHG_MODE_PAD - -#define HSWOP_N_RD_PAGE_ADDR_SHIFT 33 -#define HSWOP_N_RD_PAGE_ADDR_SIZE 23 -#define HSWOP_N_RD_PAGE_ADDR_MASK 0x00fffffe00000000ULL - -#define HSWOP_N_VAE_SHIFT 32 -#define HSWOP_N_VAE_SIZE 24 -#define HSWOP_N_VAE_MASK 0x00ffffff00000000ULL - -#define HSWOP_N_VBI_SHIFT 8 -#define HSWOP_N_VBI_SIZE 20 -#define HSWOP_N_VBI_MASK 0x000000000fffff00ULL - - -// SECURE command - -#define HSWOP_S_OP_MASK 0xf000000000000000ULL -#define HSWOP_S_OP_SIZE 4 - -#define HSWOP_S_OP_RD_ID 0x1000000000000000ULL -#define HSWOP_S_OP_RD_SEG 0x2000000000000000ULL -#define HSWOP_S_OP_PNG_ON 0x4000000000000000ULL -#define HSWOP_S_OP_PNG_OFF 0x6000000000000000ULL -#define HSWOP_S_OP_CHG_MODE 0xa000000000000000ULL - -#define HSWOP_S_VA_SHIFT HSWOP_S_VB_SIZE -#define HSWOP_S_VA_SIZE 24 -#define HSWOP_S_VA_MASK 0x00000ffffff00000ULL - -#define HSWOP_S_VB_SHIFT 0 -#define HSWOP_S_VB_SIZE 20 -#define HSWOP_S_VB_MASK 0x00000000000fffffULL - -#define HSWOP_S_VC_SHIFT (HSWOP_S_VA_SIZE + HSWOP_S_VB_SIZE) -#define HSWOP_S_VC_SIZE 16 -#define HSWOP_S_VC_MASK 0x0ffff00000000000ULL - -#define HSWOP_S_VD_SHIFT HSWOP_S_VA_SHIFT -#define HSWOP_S_VD_SIZE HSWOP_S_VA_SIZE -#define HSWOP_S_VD_MASK HSWOP_S_VA_MASK - - -// GAME command - -#define HSWOP_G_OP_MASK 0xff00000000000000ULL -#define HSWOP_G_OP_SIZE 8 - -#define HSWOP_G_OP_RD_ID 0xb800000000000000ULL -#define HSWOP_G_OP_RD_UID 0xb900000000000000ULL -#define HSWOP_G_OP_RD_PAGE 0xb700000000000000ULL -#define HSWOP_G_OP_WR_PAGE 0x8000000000000000ULL -#define HSWOP_G_OP_RD_CACHE_START HSWOP_N_OP_RD_CACHE_START -#define HSWOP_G_OP_RD_CACHE HSWOP_N_OP_RD_CACHE -#define HSWOP_G_OP_RD_CACHE_LAST HSWOP_N_OP_RD_CACHE_LAST -#define HSWOP_G_OP_RD_STAT HSWOP_N_OP_RD_STAT -#define HSWOP_G_OP_RFS_BLK HSWOP_N_OP_RFS_BLK - -#define HSWOP_G_RD_ID_PAD 0x00ffffffffffffffULL -#define HSWOP_G_RD_UID_PAD 0x00ffffffffffffffULL -#define HSWOP_G_RD_PAGE_PAD 0x00f0000000ffffffULL - -#define HSWOP_G_RD_PAGE_ADDR_SHIFT 33 -#define HSWOP_G_RD_PAGE_ADDR_SIZE 23 -#define HSWOP_G_RD_PAGE_ADDR_MASK 0x000ffffe00000000ULL - - -#ifdef __cplusplus -} /* extern "C" */ - -#endif - -/* __HOTSW_ROMSPEC_H__ */ -#endif diff --git a/build/tests/CheckCardMode/Makefile b/build/tests/CheckCardMode/Makefile deleted file mode 100644 index f63e8dc8..00000000 --- a/build/tests/CheckCardMode/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckCardMode -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: #$ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL - -SRCS = ./src/main.c ./src/font.c - -TARGET_BIN = card_mode_check.srl - -MACRO_FLAGS += -DMY_TARGET_NAME=\"$(basename $(TARGET_BIN))\" - -#------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckCardMode/src/font.c b/build/tests/CheckCardMode/src/font.c deleted file mode 100644 index 9500697a..00000000 --- a/build/tests/CheckCardMode/src/font.c +++ /dev/null @@ -1,579 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: font.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CheckCardMode/src/font.h b/build/tests/CheckCardMode/src/font.h deleted file mode 100644 index b4a94093..00000000 --- a/build/tests/CheckCardMode/src/font.h +++ /dev/null @@ -1,36 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: font.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif -/*===========================================================================*/ - -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ -#ifdef __cplusplus -} // extern "C" -#endif - -#endif // FONT_H_ diff --git a/build/tests/CheckCardMode/src/hotswTypes.h b/build/tests/CheckCardMode/src/hotswTypes.h deleted file mode 100644 index 02d0843e..00000000 --- a/build/tests/CheckCardMode/src/hotswTypes.h +++ /dev/null @@ -1,134 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - HOTSW - include - File: type.h - - Copyright 2007-2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - *---------------------------------------------------------------------------*/ -#ifndef __HOTSW_TYPES_H__ -#define __HOTSW_TYPES_H__ - -#include -#include -#include "romSpec.h" - -#ifdef __cplusplus -extern "C" { -#endif - - -static inline void HOTSW_WaitCardCtrl(void) -{ - while( reg_MI_MCCNT1_A & REG_MI_MCCNT1_START_MASK ){} -} - -// Define ------------------------------------------------------------------- -// --- Boot Segment -#define BOOT_SEGMENT_SIZE 0x1000 - -// --- Secure Segment -#define SECURE_SEGMENT_START 0x4000 -#define SECURE_SEGMENT_SIZE 0x4000 -#define SECURE_SEGMENT_END (SECURE_SEGMENT_START + SECURE_SEGMENT_SIZE) - -// --- TWL Card -#define TWLCARD_BORDER_OFFSET 0x80000 - -// --- Page / Segment (Byte) -#define PAGE_SIZE 0x200 -#define ONE_SEGMENT_SIZE 0x1000 - -// --- Page / Segment (Word) -#define PAGE_WORD_SIZE 0x80 -#define ONE_SEGMENT_WORD_SIZE 0x400 - -// --- Rom Emulation -#define ROM_EMULATION_DATA_SIZE 0x20 - -// --- Thread -#define HOTSW_THREAD_STACK_SIZE (1024 * 2) -#define HOTSW_DMA_MSG_NUM 8 -#define HOTSW_INSERT_MSG_NUM 16 -#define HOTSW_PULLED_MSG_NUM 16 -#define HOTSW_CTRL_MSG_NUM 8 -#define HOTSW_MSG_BUFFER_NUM (HOTSW_INSERT_MSG_NUM + HOTSW_PULLED_MSG_NUM + HOTSW_CTRL_MSG_NUM) -#define HOTSW_POLLING_CTRL_BUFFER_NUM 4 - -// --- Card Control Reg 0 -#define HOTSW_E2PROM_CTRL_MASK 0x00ff - -// --- Card Control Reg 1 -#define START_FLG_MASK 0x80000000 -#define READY_FLG_MASK 0x00800000 - -#define LATENCY1_SHIFT 0 -#define LATENCY1_MASK 0x00001fff - -#define DS_SHIFT 13 -#define DS_MASK 0x00002000 - -#define SE_SHIFT 14 -#define SE_MASK 0x00004000 - -#define SCR_SHIFT 15 -#define SCR_MASK 0x00008000 - -#define LATENCY2_SHIFT 16 -#define LATENCY2_MASK 0x003f0000 - -#define CS_SHIFT 22 -#define CS_MASK 0x00400000 - -#define RDY_SHIFT 23 -#define RDY_MASK 0x00800000 - -#define PC_SHIFT 24 -#define PC_MASK 0x07000000 - -#define CT_SHIFT 27 -#define CT_MASK 0x08000000 - -#define TRM_SHIFT 28 -#define TRM_MASK 0x10000000 - -#define RESB_SHIFT 29 -#define RESB_MASK 0x20000000 - -#define WR_SHIFT 30 -#define WR_MASK 0x40000000 - -#define START_SHIFT 31 -#define START_MASK 0x80000000 - -#define SCRAMBLE_MASK 0x1040e000 // ƒXƒNƒ‰ƒ“ƒuƒ‹ŠÖŒW‚̃tƒ‰ƒOƒ}ƒXƒN -#define SECURE_COMMAND_SCRAMBLE_MASK 0x00406000 // CS SE DS‚̃}ƒXƒN - -// --- Page Count -#define PAGE_0 0x0UL << PC_SHIFT -#define PAGE_1 0x1UL << PC_SHIFT -#define PAGE_2 0x2UL << PC_SHIFT -#define PAGE_4 0x3UL << PC_SHIFT -#define PAGE_8 0x4UL << PC_SHIFT -#define PAGE_16 0x5UL << PC_SHIFT -#define PAGE_32 0x6UL << PC_SHIFT -#define PAGE_STAT 0x7UL << PC_SHIFT - - -// union --------------------------------------------------------------------- -typedef union -{ - u64 dw; - u8 b[8]; -} Cmd64; - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif // __HOTSW_TYPES_H__ \ No newline at end of file diff --git a/build/tests/CheckCardMode/src/main.c b/build/tests/CheckCardMode/src/main.c deleted file mode 100644 index 4bd9f8d9..00000000 --- a/build/tests/CheckCardMode/src/main.c +++ /dev/null @@ -1,535 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - CARD - hotswDebug - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - *---------------------------------------------------------------------------*/ - -#include -#include -#include "DEMO.h" -#include "hotswTypes.h" -#include "font.h" - -#define SDK_MAKERCODE '10' -#define DIGEST_HASH_BLOCK_SIZE_SHA1 (512/8) - -#define MY_TEMP_BUFFER_SIZE 0x80000 -#define GAME_FIELD_START_ADDRESS 0x8000 - -#define READY_MASK 0x00800000 -#define CARD_COMMAND_MASK 0x07000000 - -#define MY_ROMHEADER_TWL ((ROM_Header_Short *)HW_TWL_CARD_ROM_HEADER_BUF) -#define MY_ROMHEADER_NTR ((ROM_Header_Short *)HW_CARD_ROM_HEADER) - -// --------------------------------------------------------------- -// HMACSHA1‚ÌŒ® -static u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = { - 0x21, 0x06, 0xc0, 0xde, - 0xba, 0x98, 0xce, 0x3f, - 0xa6, 0x92, 0xe3, 0x9d, - 0x46, 0xf2, 0xed, 0x01, - - 0x76, 0xe3, 0xcc, 0x08, - 0x56, 0x23, 0x63, 0xfa, - 0xca, 0xd4, 0xec, 0xdf, - 0x9a, 0x62, 0x78, 0x34, - - 0x8f, 0x6d, 0x63, 0x3c, - 0xfe, 0x22, 0xca, 0x92, - 0x20, 0x88, 0x97, 0x23, - 0xd2, 0xcf, 0xae, 0xc2, - - 0x32, 0x67, 0x8d, 0xfe, - 0xca, 0x83, 0x64, 0x98, - 0xac, 0xfd, 0x3e, 0x37, - 0x87, 0x46, 0x58, 0x24 -}; - -static u32 checkBuf[MY_TEMP_BUFFER_SIZE/sizeof(u32)] ATTRIBUTE_ALIGN(16); - -static ROM_Header_Short *rh; -static BOOL isTwlApplication; -static BOOL isTwlCard; -static BOOL flxhash, ltdhash, mirrorimage; -static u16 card_lock_id; - -static u16 screen[32 * 32] ATTRIBUTE_ALIGN(HW_CACHE_LINE_SIZE); - -// --------------------------------------------------------------- -static BOOL CheckHashValue(void* buf, u32 size, void* digest); -static void MY_LoadCard_arm7Static(void); -static void MY_LoadCard_arm7LtdStatic(void); -static void debugMessage(void); -static void ShowResult(void); - -static void SetCommand(Cmd64 *cndLE); -static void ReadIDGame(void); -static void ReadPageGame(u32 start_addr, void* buf, u32 size); -static void ReadCardData(void* dest, s32 offset, s32 length); -static void isGameModeForNTR(void); - -static void VBlankIntr (void); -static void PrintString (s16 x, s16 y, u8 palette, char *text, ...); -static void VolumeSwitchCallback(SNDEXResult result, void* arg); - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: ƒƒCƒ“ ƒGƒ“ƒgƒŠƒ|ƒCƒ“ƒg. - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - CARDRomHeader *card_header = (void*)CARD_GetRomHeader(); - - OS_Init(); - OS_InitTick(); - CARD_Init(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - if ( card_header->maker_code == SDK_MAKERCODE ) - { - CARD_Enable(TRUE); - } - - /* •\Ž¦Ý’è‰Šú‰» */ - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void*)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - MI_CpuFillFast((void*)HW_OAM, GX_LCD_SIZE_Y, HW_OAM_SIZE); - MI_CpuClearFast((void*)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void*)HW_DB_OAM, GX_LCD_SIZE_Y, HW_DB_OAM_SIZE); - MI_CpuClearFast((void*)HW_DB_PLTT, HW_DB_PLTT_SIZE); - GX_SetBankForBG(GX_VRAM_BG_128_A); - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, // SCR ƒx[ƒXƒuƒƒbƒN 31 - GX_BG_CHARBASE_0x00000, // CHR ƒx[ƒXƒuƒƒbƒN 0 - GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - MI_CpuClearFast((void*)screen, sizeof(screen)); - DC_FlushRange(screen, sizeof(screen)); - GX_LoadBG0Scr(screen, 0, sizeof(screen)); - - /* Š„ž‚ÝÝ’è */ - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* LCD •\ަŠJŽn */ - GX_DispOn(); - GXS_DispOn(); - - PrintString(0, 0, 0xa, "***** Card Mode Check *****"); - - // ƒJ[ƒhƒAƒvƒŠƒ^ƒCƒv‚ð”»•ÊBŽg‚¤Rom Header Buffer ‚ðؑւ¦‚é - if(MY_ROMHEADER_NTR->platform_code & PLATFORM_CODE_FLAG_TWL){ - PrintString(0, 2, 0xf, "- TWL Application -"); - isTwlApplication = TRUE; - rh = MY_ROMHEADER_TWL; - } - else{ - PrintString(0, 2, 0xf, "- NTR Application -"); - isTwlApplication = FALSE; - rh = MY_ROMHEADER_NTR; - } - - OS_Printf("Buf Adr : 0x%08x\n", checkBuf); - - // ƒJ[ƒhƒ^ƒCƒv‚Ì”»•Ê - isTwlCard = (*(vu32 *)(HW_BOOT_CHECK_INFO_BUF) & HOTSW_ROMID_TWLROM_MASK) ? TRUE : FALSE; - - // ’Frh‚̉Šú‰»‚ªI‚í‚Á‚Ä‚©‚çŒÄ‚Ño‚· - debugMessage(); - - // ƒtƒ‰ƒO‚̉Šú‰» - flxhash = FALSE; - ltdhash = FALSE; - mirrorimage = FALSE; - - // ƒƒbƒNID‚ðŽæ“¾‚µ‚Ä‚¨‚­ - card_lock_id = (u16)OS_GetLockID(); - - if(isTwlApplication){ - MY_LoadCard_arm7Static(); - MY_LoadCard_arm7LtdStatic(); - } - else{ - isGameModeForNTR(); - } - - ShowResult(); - - while(1){ - DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - } -} - - -/*---------------------------------------------------------------------------* - Name: ShowResult - - Description: - *---------------------------------------------------------------------------*/ -static void ShowResult(void) -{ - PrintString(0, 13, 0xf, "-- Result --"); - - if(flxhash && ltdhash){ - if(isTwlCard){ - PrintString(0, 15, 0x6, "Game2 Mode"); - } - else{ - PrintString(0, 15, 0x5, "Game Mode"); - } - } - else if(mirrorimage){ - PrintString(0, 15, 0x5, "Game Mode"); - } - else{ - PrintString(0, 15, 0x1, "Unknown Mode"); - } -} - - -/*---------------------------------------------------------------------------* - Name: debugMessage - - Description: - *---------------------------------------------------------------------------*/ -static void debugMessage(void) -{ - PrintString(0, 4, 0xf, "amr7 NmlRomOfs : 0x%08x", rh->sub_rom_offset); - PrintString(0, 5, 0xf, "amr7 LtdRomOfs : 0x%08x", rh->sub_ltd_rom_offset); - - OS_TPrintf("amr7 NmlRomOfs : 0x%08x\n", rh->sub_rom_offset); - OS_TPrintf("amr7 NmlSize : 0x%08x\n", rh->sub_size); - OS_TPrintf("amr7 LtdRomOfs : 0x%08x\n", rh->sub_ltd_rom_offset); - OS_TPrintf("amr7 LtdSize : 0x%08x\n", rh->sub_ltd_size); -} - - -/*---------------------------------------------------------------------------* - Name: CheckHashValue - - Description: ƒ‚ƒWƒ…[ƒ‹ƒnƒbƒVƒ…ƒ`ƒFƒbƒN - *---------------------------------------------------------------------------*/ -static BOOL CheckHashValue(void* buf, u32 size, void* digest) -{ - u8 sha1data[DIGEST_SIZE_SHA1]; - BOOL retval = TRUE; - - // ƒNƒŠƒA - MI_CpuClear8(sha1data, sizeof(sha1data)); - - // ARM7í’“ƒ‚ƒWƒ…[ƒ‹‚ÌHash’lƇ - SVC_CalcHMACSHA1( sha1data, - buf, - size, - s_digestDefaultKey, - sizeof(s_digestDefaultKey) ); - - return SVC_CompareSHA1( sha1data, digest ); -} - - -/*---------------------------------------------------------------------------* - Name: MY_LoadCard_arm7Static - - Description: ARM7í’“ƒ‚ƒWƒ…[ƒ‹ “Ç‚Ýo‚µEƒnƒbƒVƒ…ƒ`ƒFƒbƒN - *---------------------------------------------------------------------------*/ -static void MY_LoadCard_arm7Static(void) -{ - BOOL result; - u32* pBuf = checkBuf; - - CARD_LockRom(card_lock_id); - - ReadCardData(pBuf, (s32)rh->sub_rom_offset, (s32)rh->sub_size); - - CARD_UnlockRom(card_lock_id); - - result = CheckHashValue(pBuf, rh->sub_size, (void *)rh->sub_static_digest); - - if(result){ - flxhash = TRUE; - PrintString(0, 7, 0x8, "Flx Area : Accessible"); - } - else{ - flxhash = FALSE; - PrintString(0, 7, 0x1, "Flx Area : Not Accessible"); - } -} - - -/*---------------------------------------------------------------------------* - Name: MY_LoadCard_arm7LtdStatic - - Description: ARM7Šg’£í’“ƒ‚ƒWƒ…[ƒ‹ “Ç‚Ýo‚µEƒnƒbƒVƒ…ƒ`ƒFƒbƒN - *---------------------------------------------------------------------------*/ -static void MY_LoadCard_arm7LtdStatic(void) -{ - BOOL result; - u32* pBuf = checkBuf; - - CARD_LockRom(card_lock_id); - - ReadCardData(pBuf, (s32)rh->sub_ltd_rom_offset, (s32)rh->sub_ltd_size); - - CARD_UnlockRom(card_lock_id); - - result = CheckHashValue(pBuf, rh->sub_ltd_size, (void *)rh->sub_ltd_static_digest); - - if(result){ - ltdhash = TRUE; - PrintString(0, 9, 0x8, "Ltd Area : Accessible"); - } - else{ - ltdhash = FALSE; - PrintString(0, 9, 0x1, "Ltd Area : Not Accessible"); - } -} - - -/*---------------------------------------------------------------------------* - Name: isGameModeForNTR - - Description: Gameƒ‚[ƒh‚©‚Ç‚¤‚©”»’è‚·‚é - *---------------------------------------------------------------------------*/ -static void isGameModeForNTR(void) -{ - u32 buf1[PAGE_SIZE/sizeof(u32)]; - u32 buf2[PAGE_SIZE/sizeof(u32)]; - int result; - - /* Rom Header—̈æ‚ð“Ç‚ñ‚ÅAGame—̈æ‚̃Cƒ[ƒW‚ªo‚Ä‚½‚çGameƒ‚[ƒh */ - ReadCardData(buf1, (s32)0, (s32)PAGE_SIZE); - ReadCardData(buf2, (s32)GAME_FIELD_START_ADDRESS, (s32)PAGE_SIZE); - - result = MI_CpuComp8( buf1, buf2, PAGE_SIZE ); - - if(result){ - mirrorimage = FALSE; - PrintString(0, 7, 0x1, "Flx Area : Not Accessible"); - } - else{ - mirrorimage = TRUE; - PrintString(0, 7, 0x8, "Flx Area : Accessible"); - } -} - - -/*---------------------------------------------------------------------------* - Name: HOTSWi_SetCommand - - Description: ˆø”‚Å—^‚¦‚ç‚ꂽƒRƒ}ƒ“ƒh‚̃Gƒ“ƒfƒBƒAƒ“‚ð•Ï‚¦‚ăŒƒWƒXƒ^‚ɃZƒbƒg‚·‚é - *---------------------------------------------------------------------------*/ -static void SetCommand(Cmd64 *cndLE) -{ - Cmd64 cndBE; - - // ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“‚É’¼‚· - cndBE.b[7] = cndLE->b[0]; - cndBE.b[6] = cndLE->b[1]; - cndBE.b[5] = cndLE->b[2]; - cndBE.b[4] = cndLE->b[3]; - cndBE.b[3] = cndLE->b[4]; - cndBE.b[2] = cndLE->b[5]; - cndBE.b[1] = cndLE->b[6]; - cndBE.b[0] = cndLE->b[7]; - - // MCCMD ƒŒƒWƒXƒ^Ý’è - reg_MI_MCCMD0_A = *(u32*)cndBE.b; - reg_MI_MCCMD1_A = *(u32*)&cndBE.b[4]; -} - - -/*---------------------------------------------------------------------------* - Name: ReadIDGame - - Description: ƒQ[ƒ€ƒ‚[ƒh‚ÅID‚ð“ǂݞ‚Þ - *---------------------------------------------------------------------------*/ -static void ReadIDGame(void) -{ - u32 id; - Cmd64 cndLE; - u32 rom_ctrl = *(vu32 *)(HW_CARD_ROM_HEADER + 0x60); - - rom_ctrl = rom_ctrl & ~CARD_COMMAND_MASK; - - // ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“‚Åì‚Á‚Ä - cndLE.dw = HSWOP_G_OP_RD_ID; - - // MCCMD ƒŒƒWƒXƒ^Ý’è - SetCommand(&cndLE); - - // MCCNT0 ƒŒƒWƒXƒ^Ý’è - reg_MI_MCCNT0_A = (u16)((reg_MI_MCCNT0_A & 0x00ff) | REG_MI_MCCNT0_E_MASK); - - // MCCNT1 ƒŒƒWƒXƒ^Ý’è - reg_MI_MCCNT1_A = rom_ctrl | START_MASK | PAGE_1; - - while(reg_MI_MCCNT1_A & START_MASK){ - while(!(reg_MI_MCCNT1_A & READY_MASK)){} - id = reg_MI_MCD1_A; - } - - OS_Printf("Card ID : 0x%08x\n", id); - - OS_SpinWait( 100 ); -} - - -/*---------------------------------------------------------------------------* - Name: ReadPageGame - - Description: ƒQ[ƒ€ƒ‚[ƒh‚ÅAŽw’肳‚ꂽƒy[ƒW‚ðŽw’èƒoƒbƒtƒ@‚ÉŽw’èƒTƒCƒY•ª‚ð“ǂݞ‚Þ - - CT=150ns Pagecount=1page Latency=RomHeader‚ÅŽw’è‚Ì’l - *---------------------------------------------------------------------------*/ -static void ReadPageGame(u32 start_addr, void* buf, u32 size) -{ - u32 loop, counter=0; - u64 i, page; - Cmd64 cndLE; - u32 rom_ctrl = *(vu32 *)(HW_CARD_ROM_HEADER + 0x60); - - rom_ctrl = rom_ctrl & ~CARD_COMMAND_MASK; - page = (u32)(start_addr / PAGE_SIZE); - loop = (u32)(size / PAGE_SIZE); - loop = (size % PAGE_SIZE) ? loop + 1 : loop; - - for(i=0; i -#include - -#define HASH_PATH "/sign/DSHashTable.bin" - -/* - ‚±‚̃Tƒ“ƒvƒ‹‚̓eƒXƒg—p‚Å‚ ‚èACARDŠÖ”‚Ì‘ã‚í‚è‚ÉFSŠÖ”‚Å - DHTƒ‰ƒCƒuƒ‰ƒŠ‚ªŽÀ‘•‚³‚ê‚Ä‚¢‚é‘O’ñ‚Å‚ ‚é -*/ - -#define ROM_PATH "/srl" - -#define DS_HASH_TABLE_NUMS 3000 -#define DS_HASH_TABLE_SIZE (sizeof(DHTHeader) + DS_HASH_TABLE_NUMS * sizeof(DHTDatabase)) - -/* - DHTƒtƒ@ƒCƒ‹“ǂݞ‚Ýæ -*/ -static u8 dht_buffer[DS_HASH_TABLE_SIZE] ATTRIBUTE_ALIGN(32); -static DHTFile *const dht = (DHTFile*)dht_buffer; -/* - Phase2—pƒoƒbƒtƒ@ -*/ -static DHTPhase2Work p2work; - -/* - ŽÀۂɂ̓AƒhƒŒƒXŒÅ’è -*/ -#include -static ROM_Header_Short rom_header ATTRIBUTE_ALIGN(32); // Žg‚¤‚Ì‚Í DHT_DS_HEADER_SIZE ‚¾‚¯ -static u8 rom_arm9[3*1024*1024] ATTRIBUTE_ALIGN(32); -static u8 rom_arm7[1024*1024] ATTRIBUTE_ALIGN(32); -#include - -/* - ƒfƒoƒCƒXƒAƒNƒZƒXAPI -*/ -#if 1 -// FS”Å (arg == FSFile*) -static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) -{ - FSFile* fp = arg; - s32 result; - if ( !FS_SeekFile(fp, offset, FS_SEEK_SET) ) - { - OS_TPrintf("Cannot seek to the offset (%d bytes).\n", offset); - return FALSE; - } - result = FS_ReadFile(fp, dest, length); - if ( result != length ) - { - OS_TPrintf("Cannot read the data (%d bytes).\n", length); - return FALSE; - } - return TRUE; -} -static BOOL ReadImageEx(SVCHMACSHA1Context* ctx, s32 offset, s32 length, void* arg) -{ - if ( !ReadImage(p2work.buffer, offset, length, arg) ) - { - return FALSE; - } - DHT_CheckHashPhase2ExUpdate(ctx, p2work.buffer, length); - return TRUE; -} -#else -#ifdef SDK_ARM9 -#define PAGE_SIZE 512 -// CARD”Å (arg == dma no) -static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) -{ - u32 dma = (u32)arg; - CARD_ReadRom(dma, (void*)offset, dest, (u32)length); - return TRUE; -} -#else -// HOTSW”Å (arg == CardBootData* cdb) -#include -#include -static BOOL ReadImage(void* dest, s32 offset, s32 length, void* arg) -{ - HotSwState retval; - if ( offset % 512 ) - { - static u8 page_buffer[512]; - u32 page_offset = (u32)(offset & -512); - u32 buffer_offset = (u32)(offset % 512); - u32 valid_length = 512 - buffer_offset; - retval = ReadPageGame((CardBootData*)arg, page_offset, page_buffer, 512); - if (retval != HOTSW_SUCCESS) - { - return FALSE; - } - MI_CpuCopy8(page_buffer + buffer_offset, dest, (length < valid_length ? length : valid_length)); - dest = (u8*)dest + valid_length; - offset += valid_length; - length -= valid_length; - if ( length < 0) - { - return TRUE; - } - } - retval = ReadPageGame((CardBootData*)arg, (u32)offset, dest, (u32)length); - return (retval == HOTSW_SUCCESS); -} -#endif -#endif - -static void VBlankIntr( void ) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -/* - ŒŸØ–{”Ô‚Ì‚¤‚¿AŽÀۂɂ̓I[ƒo[ƒwƒbƒh‚ɂȂç‚È‚¢ˆ— -*/ -static BOOL CheckValidation(FSFile* fp) -{ - const DHTDatabase *db; - s32 result; - - // ƒwƒbƒ_‚̓ǂݞ‚Ý - result = FS_ReadFile(fp, &rom_header, DHT_DS_HEADER_SIZE); - if ( result != DHT_DS_HEADER_SIZE ) - { - OS_TPrintf("Cannot read ROM header.\n"); - return FALSE; - } - // ARM9•”•ª - if ( rom_header.main_size > sizeof(rom_arm9) ) - { - OS_TPrintf("Too large main size (%d > %d).\n", rom_header.main_size, sizeof(rom_arm9)); - return FALSE; - } - if ( !FS_SeekFile(fp, (s32)rom_header.main_rom_offset, FS_SEEK_SET) ) - { - OS_TPrintf("Cannot seek to ARM9 static.\n"); - return FALSE; - } - result = FS_ReadFile(fp, rom_arm9, (s32)rom_header.main_size); - if ( result != rom_header.main_size ) - { - OS_TPrintf("Cannot read ARM9 static.\n"); - return FALSE; - } - // ARM7•”•ª - if ( rom_header.sub_size > sizeof(rom_arm7) ) - { - OS_TPrintf("Too large sub size (%d > %d).\n", rom_header.sub_size, sizeof(rom_arm7)); - return FALSE; - } - if ( !FS_SeekFile(fp, (s32)rom_header.sub_rom_offset, FS_SEEK_SET) ) - { - OS_TPrintf("Cannot seek to ARM7 static.\n"); - return FALSE; - } - result = FS_ReadFile(fp, rom_arm7, (s32)rom_header.sub_size); - if ( result != rom_header.sub_size ) - { - OS_TPrintf("Cannot read ARM7 static.\n"); - return FALSE; - } - - // ƒf[ƒ^ƒx[ƒX‚ÌŒŸõ - db = DHT_GetDatabase(dht, &rom_header); - if ( !db ) - { - return FALSE; - } -//OS_TPrintf("FOUND: 0x%08X: %.4s(%d)\n", db, db->game_code, db->rom_version); - // ƒnƒbƒVƒ…ŒvŽZ (1) - ‰B•Á‰Â”\‚Ȃ͂¸ - if ( !DHT_CheckHashPhase1(db->hash[0], &rom_header, rom_arm9, rom_arm7) ) - { - return FALSE; - } - // ƒnƒbƒVƒ…ŒvŽZ (2) - ‰B•Á‚͓‚¢‚© - if ( !DHT_CheckHashPhase2(db->hash[1], &rom_header, &p2work, ReadImage, fp) ) - { - // ƒnƒbƒVƒ…ŒvŽZ (2ex) - ‰B•Á‚͓‚¢‚© (ޏ”s‚µ‚½ê‡‚àŒ©‚Ä‚¨‚­) - if ( !DHT_CheckHashPhase2Ex(db->hash[1], &rom_header, (DHTPhase2ExWork*)&p2work, ReadImage, ReadImageEx, fp) ) - { - return FALSE; - } - return FALSE; - } - // ƒnƒbƒVƒ…ŒvŽZ (2ex) - ‰B•Á‚͓‚¢‚© - if ( !DHT_CheckHashPhase2Ex(db->hash[1], &rom_header, (DHTPhase2ExWork*)&p2work, ReadImage, ReadImageEx, fp) ) - { - return FALSE; - } - - return TRUE; -} - -void TwlMain(void) -{ - OS_Init(); - OS_InitTick(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - // Š„‚螂݋–‰Â---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - FS_Init(FS_DMA_NOT_USE); - { - FSFile file; - if ( !FS_OpenFileEx(&file, HASH_PATH, FS_FILEMODE_R) ) - { - OS_TPanic("Cannot open %s.\n", HASH_PATH); - } - // –¼ƒ[ƒh - if ( !DHT_PrepareDatabase(dht, &file) ) - { - OS_TPanic("Cannot prepare the database.\n"); - } - FS_CloseFile(&file); - } - - // –{”Ô - { - FSFile dir; - FSDirectoryEntryInfo info; - BOOL result; - result = FS_OpenDirectory(&dir, ROM_PATH, FS_FILEMODE_R); - if ( !result ) - { - OS_TPanic("Cannot open " ROM_PATH ".\n"); - } - while ( FS_ReadDirectory(&dir, &info) ) - { - FSFile file; - OSTick begin; - char path[FS_ENTRY_LONGNAME_MAX+sizeof(ROM_PATH)+1]; - if ( info.attributes & FS_ATTRIBUTE_IS_DIRECTORY ) - { - OS_TPrintf("%s is directory.\n", info.longname); - continue; - } - STD_CopyString(path, ROM_PATH "/"); - STD_ConcatenateString(path, info.longname); - if (!FS_OpenFileEx(&file, path, FS_FILEMODE_R)) - { - OS_TPrintf("Cannot open %s.\n", path); - continue; - } - OS_TPrintf("\nTrying %s...\n", path); - begin = OS_GetTick(); - if ( !CheckValidation(&file) ) - { - OS_TPrintf("Failed. %d msec (includes loading static data).\n", (int)OS_TicksToMilliSeconds(OS_GetTick()-begin)); - } - else - { - OS_TPrintf("Success. %d msec (includes loading static data).\n", (int)OS_TicksToMilliSeconds(OS_GetTick()-begin)); - } - FS_CloseFile(&file); - } - FS_CloseDirectory(&dir); - } - - OS_TPrintf("\nDone.\n"); - OS_Terminate(); -} - diff --git a/build/tests/CheckPreloadParameters/Makefile b/build/tests/CheckPreloadParameters/Makefile deleted file mode 100644 index 15e918ad..00000000 --- a/build/tests/CheckPreloadParameters/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_PLATFORM = TWL - -SRCS = main.c -TARGET_BIN = main.tad - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckPreloadParameters/banner/Makefile b/build/tests/CheckPreloadParameters/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/CheckPreloadParameters/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/CheckPreloadParameters/banner/banner_v3.bsf b/build/tests/CheckPreloadParameters/banner/banner_v3.bsf deleted file mode 100644 index 86449213..00000000 Binary files a/build/tests/CheckPreloadParameters/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/CheckPreloadParameters/banner/icon/gameIcon.bmp b/build/tests/CheckPreloadParameters/banner/icon/gameIcon.bmp deleted file mode 100644 index 8ec56f1c..00000000 Binary files a/build/tests/CheckPreloadParameters/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/CheckPreloadParameters/src/main.c b/build/tests/CheckPreloadParameters/src/main.c deleted file mode 100644 index 7f4f7499..00000000 --- a/build/tests/CheckPreloadParameters/src/main.c +++ /dev/null @@ -1,457 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - CheckPreloadParameters - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include -#include - -void VBlankIntr(void); - -OSOwnerInfoEx s_owner; -static char *s_strCountry[ 256 ]; -static char *s_strRegion[ OS_TWL_REGION_MAX ]; -static char *s_strUserColor[ OS_FAVORITE_COLOR_MAX ]; -static char *s_strRatingOgn[ OS_TWL_PCTL_OGN_MAX ]; -static char *s_strLanguage[ OS_LANGUAGE_CODE_MAX ]; - - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void TwlMain(void) -{ - char string[ 256 ]; - int srcLen, dstLen; - OS_Init(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - OS_GetOwnerInfoEx( &s_owner ); - OS_TPrintf( "Language : %02x %s\n", s_owner.language, s_strLanguage[ s_owner.language ] ); - OS_TPrintf( "UserColor : %02x %s\n", s_owner.favoriteColor, s_strUserColor[ s_owner.favoriteColor ] ); - OS_TPrintf( "Birthday : %02d/%02d\n", s_owner.birthday.month, s_owner.birthday.day ); - { - MI_CpuClear8( string, sizeof(string) ); - srcLen = (int)s_owner.nickNameLength; - dstLen = sizeof(string); - STD_ConvertStringUnicodeToSjis( string, &dstLen, s_owner.nickName, &srcLen, NULL ); - OS_TPrintf( "Nickname : %s\n", string ); - - MI_CpuClear8( string, sizeof(string) ); - srcLen = (int)s_owner.commentLength; - dstLen = sizeof(string); - STD_ConvertStringUnicodeToSjis( string, &dstLen, s_owner.comment, &srcLen, NULL ); - OS_TPrintf( "Comment : %s\n", string ); - } - OS_TPrintf( "Country : %s\n", s_strCountry[ s_owner.country ] ); - - OS_TPrintf( "IsAgreeEULA : %s\n", OS_IsAgreeEULA() ? "Agree" : "Not agree" ); - OS_TPrintf( "AgreedEULAVersion : %d\n", OS_GetAgreedEULAVersion() ); - OS_TPrintf( "ROMHeaderEULAVersion : %d\n", OS_GetROMHeaderEULAVersion() ); - - OS_TPrintf( "AvailableWireless : %s\n", OS_IsAvailableWireless() ? "TRUE" : "FALSE" ); - PMi_SetWirelessLED( OS_IsAvailableWireless() ? PM_WIRELESS_LED_ON : PM_WIRELESS_LED_OFF ); - - { - const LCFGTWLParentalControl *pPC = (const LCFGTWLParentalControl *)OS_GetParentalControlInfoPtr(); - - OS_TPrintf( "ParentalControls :\n"); - OS_TPrintf( " isSetParentalControl : %s\n", pPC->flags.isSetParentalControl ? "TRUE" : "FALSE" ); - OS_TPrintf( " PictoChat : %s\n", pPC->flags.pictoChat ? "TRUE" : "FALSE" ); - OS_TPrintf( " DS Download : %s\n", pPC->flags.dsDownload ? "TRUE" : "FALSE" ); - OS_TPrintf( " Browser : %s\n", pPC->flags.browser ? "TRUE" : "FALSE" ); - OS_TPrintf( " WiiPoint : %s\n", pPC->flags.wiiPoint ? "TRUE" : "FALSE" ); - OS_TPrintf( " PhotoExchange : %s\n", pPC->flags.photoExchange ? "TRUE" : "FALSE" ); - OS_TPrintf( " UGC : %s\n", pPC->flags.ugc ? "TRUE" : "FALSE" ); - OS_TPrintf( " RatingOgn : %s\n", pPC->ogn < LCFG_TWL_PCTL_OGN_MAX ? s_strRatingOgn[ pPC->ogn ] : s_strRatingOgn[ LCFG_TWL_PCTL_OGN_MAX ] ); - OS_TPrintf( " RatingAge : %d\n", pPC->ratingAge ); - OS_TPrintf( " SecretQ ID : %d\n", pPC->secretQuestionID ); - OS_TPrintf( " Password : %s\n", pPC->password ); - MI_CpuClear8( string, sizeof(string) ); - srcLen = (int)pPC->secretAnswerLength; - dstLen = sizeof(string); - STD_ConvertStringUnicodeToSjis( string, &dstLen, pPC->secretAnswer, &srcLen, NULL ); - OS_TPrintf( " SecretAnswer : %s\n", string ); - } - - { - int i; - const u8 *p = OS_GetMovableUniqueIDPtr(); - OS_TPrintf( "MovableUniqueID :" ); - for( i = 0; i < OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN; i++ ) { - if( ( i & 0x0f ) == 0 ) { - OS_TPrintf( "\n" ); - } - OS_TPrintf( " %02x,", *p++ ); - } - OS_TPrintf( "\n" ); - } - OS_TPrintf( "ForceDisableWireless : %s\n", OS_IsForceDisableWireless() ? "TRUE" : "FALSE" ); - OS_TPrintf( "Region : %02x %s\n", OS_GetRegion(), ( OS_GetRegion() == 0xff ) ? "Invalid" : s_strRegion[ OS_GetRegion() ] ); - { - u8 string[ 16 ]; - OS_GetSerialNo( string ); - OS_TPrintf( "SerialNo : %s\n", string ); - } - - OS_TPrintf("***End of demo\n"); - OS_Terminate(); -} - - - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - - - -static char *s_strRegion[] = { - "JAPAN", - "AMERICA", - "EUROPA", - "AUSTRALIA", - "CHINA", - "KOREA", -}; - -static char *s_strUserColor[] = { - "GRAY ", - "BROWN ", - "RED ", - "PINK ", - "ORANGE ", - "YELLOW ", - "LIME_GREEN", - "GREEN ", - "DARK_GREEN", - "SEA_GREEN ", - "TURQUOISE ", - "BLUE ", - "DARK_BLUE ", - "PURPLE ", - "VIOLET ", - "MAGENTA ", -}; - -static char *s_strLanguage[] = { - "JAPANESE", - "ENGLISH", - "FRENCH", - "GERMAN", - "ITALIAN", - "SPANISH", - "CHINESE", - "KOREAN", -}; - -static char *s_strRatingOgn[] = { - "CERO", - "ESRB", - "RESERVED2", - "USK", - "PEGI_GENERAL", - "RESERVED5", - "PEGI_PORTUGAL", - "PEGI_BBFC", - "OFLC", - "GRB", - "RESERVED_A", - "RESERVED_B", - "RESERVED_C", - "RESERVED_D", - "RESERVED_E", - "UNKNOWN", -}; - -static char *s_strCountry[] = { - "UNDEFINED ", // –¢Ý’è - "JAPAN ", // “ú–{ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "Anguilla ", // ƒAƒ“ƒMƒ‰ - "ANTIGUA_AND_BARBUDA", // ƒAƒ“ƒeƒBƒOƒAEƒo[ƒu[ƒ_ - "ARGENTINA ", // ƒAƒ‹ƒ[ƒ“ƒ`ƒ“ - "ARUBA", // ƒAƒ‹ƒo - "BAHAMAS", // ƒoƒnƒ} - "BARBADOS", // ƒoƒ‹ƒoƒhƒX - "BELIZE", // ƒxƒŠ[ƒY - "BOLIVIA", // ƒ{ƒŠƒrƒA - "BRAZIL", // ƒuƒ‰ƒWƒ‹ - "BRITISH_VIRGIN_ISLANDS", // ‰p—̃”ƒ@[ƒWƒ“”“‡ - "CANADA", // ƒJƒiƒ_ - "CAYMAN_ISLANDS", // ƒPƒCƒ}ƒ“”“‡ - "CHILE ", // ƒ`ƒŠ - "COLOMBIA", // ƒRƒƒ“ƒrƒA - "COSTA_RICA", // ƒRƒXƒ^ƒŠƒJ - "DOMINICA", // ƒhƒ~ƒjƒJ‘ - "DOMINICAN_REPUBLIC", // ƒhƒ~ƒjƒJ‹¤˜a‘ - "ECUADOR", // ƒGƒNƒAƒhƒ‹ - "EL_SALVADOR", // ƒGƒ‹ƒTƒ‹ƒoƒhƒ‹ - "FRENCH_GUIANA", // ƒtƒ‰ƒ“ƒX—̃MƒAƒi - "GRENADA", // ƒOƒŒƒiƒ_ - "GUADELOUPE", // ƒOƒAƒhƒ‹[ƒv - "GUATEMALA ", // ƒOƒAƒeƒ}ƒ‰ - "GUYANA", // ƒKƒCƒAƒi - "HAITI", // ƒnƒCƒ` - "HONDURAS", // ƒzƒ“ƒWƒ…ƒ‰ƒX - "JAMAICA", // ƒWƒƒƒ}ƒCƒJ - "MARTINIQUE", // ƒ}ƒ‹ƒeƒBƒj[ƒN - "MEXICO", // ƒƒLƒVƒR - "MONTSERRAT", // ƒ‚ƒ“ƒgƒZƒ‰ƒg - "NETHERLANDS_ANTILLES", // ƒIƒ‰ƒ“ƒ_—̃Aƒ“ƒeƒBƒ‹ - "NICARAGUA", // ƒjƒJƒ‰ƒOƒA - "PANAMA ", // ƒpƒiƒ} - "PARAGUAY", // ƒpƒ‰ƒOƒAƒC - "PERU", // ƒyƒ‹[ - "ST_KITTS_AND_NEVIS", // ƒZƒ“ƒgƒLƒbƒcEƒlƒCƒrƒX - "ST_LUCIA", // ƒZƒ“ƒgƒ‹ƒVƒA - "ST_VINCENT_AND_THE_GRENADINES", // ƒZƒ“ƒgƒrƒ“ƒZƒ“ƒgEƒOƒŒƒiƒfƒB[ƒ“ - "SURINAME", // ƒXƒŠƒiƒ€ - "TRINIDAD_AND_TOBAGO", // ƒgƒŠƒjƒ_[ƒhEƒgƒoƒS - "TURKS_AND_CAICOS_ISLANDS", // ƒ^[ƒNƒXEƒJƒCƒRƒX”“‡ - "UNITED_STATES", // ƒAƒƒŠƒJ - "URUGUAY ", // ƒEƒ‹ƒOƒAƒC - "US_VIRGIN_ISLANDS", // •ė̃o[ƒWƒ“”“‡ - "VENEZUELA", // ƒxƒlƒYƒGƒ‰ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "ALBANIA ", // ƒAƒ‹ƒoƒjƒA - "AUSTRALIA", // ƒI[ƒXƒgƒ‰ƒŠƒA - "AUSTRIA", // ƒI[ƒXƒgƒŠƒA - "BELGIUM", // ƒxƒ‹ƒM[ - "BOSNIA_AND_HERZEGOVINA", // ƒ{ƒXƒjƒAEƒwƒ‹ƒcƒFƒSƒrƒi - "BOTSWANA", // ƒ{ƒcƒƒi - "BULGARIA ", // ƒuƒ‹ƒKƒŠƒA - "CROATIA", // ƒNƒƒAƒ`ƒA - "CYPRUS", // ƒLƒvƒƒX - "CZECH_REPUBLIC", // ƒ`ƒFƒR - "DENMARK", // ƒfƒ“ƒ}[ƒN - "ESTONIA", // ƒGƒXƒgƒjƒA - "FINLAND", // ƒtƒBƒ“ƒ‰ƒ“ƒh - "FRANCE", // ƒtƒ‰ƒ“ƒX - "GERMANY", // ƒhƒCƒc - "GREECE", // ƒMƒŠƒVƒƒ - "HUNGARY ", // ƒnƒ“ƒKƒŠ[ - "ICELAND", // ƒAƒCƒXƒ‰ƒ“ƒh - "IRELAND", // ƒAƒCƒ‹ƒ‰ƒ“ƒh - "ITALY", // ƒCƒ^ƒŠƒA - "LATVIA", // ƒ‰ƒgƒrƒA - "LESOTHO", // ƒŒƒ\ƒg - "LIECHTENSTEIN", // ƒŠƒqƒeƒ“ƒVƒ…ƒ^ƒCƒ“ - "LITHUANIA", // ƒŠƒgƒAƒjƒA - "LUXEMBOURG", // ƒ‹ƒNƒZƒ“ƒuƒ‹ƒN - "MACEDONIA", // ƒ}ƒPƒhƒjƒA - "MALTA ", // ƒ}ƒ‹ƒ^ - "MONTENEGRO", // ƒ‚ƒ“ƒeƒlƒOƒ - "MOZAMBIQUE", // ƒ‚ƒUƒ“ƒr[ƒN - "NAMIBIA", // ƒiƒ~ƒrƒA - "NETHERLANDS", // ƒIƒ‰ƒ“ƒ_ - "NEW_ZEALAND", // ƒjƒ…[ƒW[ƒ‰ƒ“ƒh - "NORWAY", // ƒmƒ‹ƒEƒF[ - "POLAND", // ƒ|[ƒ‰ƒ“ƒh - "PORTUGAL", // ƒ|ƒ‹ƒgƒKƒ‹ - "ROMANIA", // ƒ‹[ƒ}ƒjƒA - "RUSSIA ", // ƒƒVƒA - "SERBIA", // ƒZƒ‹ƒrƒA - "SLOVAKIA", // ƒXƒƒoƒLƒA - "SLOVENIA", // ƒXƒƒxƒjƒA - "SOUTH_AFRICA", // “ìƒAƒtƒŠƒJ - "SPAIN", // ƒXƒyƒCƒ“ - "SWAZILAND", // ƒXƒƒWƒ‰ƒ“ƒh - "SWEDEN", // ƒXƒEƒF[ƒfƒ“ - "SWITZERLAND", // ƒXƒCƒX - "TURKEY", // ƒgƒ‹ƒR - "UNITED_KINGDOM ", // ƒCƒMƒŠƒX - "ZAMBIA", // ƒUƒ“ƒrƒA - "ZIMBABWE", // ƒWƒ“ƒoƒuƒG - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "TAIWAN ", // ‘ä˜p - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "SOUTH_KOREA ", // ŠØ‘ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "HONG_KONG ", // ƒzƒ“ƒRƒ“ - "MACAU", // ƒ}ƒJƒI - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "INDONESIA ", // ƒCƒ“ƒhƒlƒVƒA - "SINGAPORE ", // ƒVƒ“ƒKƒ|[ƒ‹ - "THAILAND ", // ƒ^ƒC - "PHILIPPINES", // ƒtƒBƒŠƒsƒ“ - "MALAYSIA", // ƒ}ƒŒ[ƒVƒA - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "CHINA ", // ’†‘ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UAE ", // ƒAƒ‰ƒuŽñ’·‘˜A–M - "INDIA ", // ƒCƒ“ƒh - "EGYPT ", // ƒGƒWƒvƒg - "OMAN", // ƒIƒ}[ƒ“ - "QATAR", // ƒJƒ^[ƒ‹ - "KUWAIT", // ƒNƒEƒF[ƒg - "SAUDI_ARABIA", // ƒTƒEƒWƒAƒ‰ƒrƒA - "SYRIA", // ƒVƒŠƒA - "BAHRAIN", // ƒo[ƒŒ[ƒ“ - "JORDAN", // ƒˆƒ‹ƒ_ƒ“ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "OTHERS ", - "UNKNOWN ", -}; - diff --git a/build/tests/CheckSharedFont/Makefile b/build/tests/CheckSharedFont/Makefile deleted file mode 100644 index 2087d1e2..00000000 --- a/build/tests/CheckSharedFont/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - FS - overlay -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_BIN = main.srl - -SRCS = main.c loadSharedFont.c - -LLIBRARIES += libsharedfont$(TWL_LIBSUFFIX).a libna$(TWL_LIBSUFFIX).a - -ROM_SPEC = ROM-TS_nand.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CheckSharedFont/ROM-TS_nand.rsf b/build/tests/CheckSharedFont/ROM-TS_nand.rsf deleted file mode 100644 index 546adb61..00000000 --- a/build/tests/CheckSharedFont/ROM-TS_nand.rsf +++ /dev/null @@ -1,263 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [0 - 255] - # - #AgreeEULAVersion 0 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization [0 - 31, ALWAYS, FREE] - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / ALWAYS / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/CheckSharedFont/src/loadSharedFont.c b/build/tests/CheckSharedFont/src/loadSharedFont.c deleted file mode 100644 index 6d858c85..00000000 --- a/build/tests/CheckSharedFont/src/loadSharedFont.c +++ /dev/null @@ -1,147 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: loadSharedFont.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "loadSharedFont.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- -#define FONT_LOAD_THREAD_PRIO 13 -#define THREAD_STACK_SIZE 1024 - -// function's prototype------------------------------------------------------- - -// global variable------------------------------------------------------------- -BOOL g_isSucceededLoad[ OS_SHARED_FONT_CN_KR_MAX + 1 ]; - -const char *str_fontname[ OS_SHARED_FONT_CN_KR_MAX + 1 ] = { - "SHARE_FONT_WW_L", - "SHARE_FONT_WW_M", - "SHARE_FONT_WW_S", - "SHARE_FONT_CN_L", - "SHARE_FONT_CN_M", - "SHARE_FONT_CN_S", - "SHARE_FONT_KR_L", - "SHARE_FONT_KR_M", - "SHARE_FONT_KR_S", - "SHARE_FONT_CN_KR_MAX", -}; - -// static variable------------------------------------------------------------- -static u64 s_fontLoadThreadStack[THREAD_STACK_SIZE / sizeof(u64)]; -static OSThread s_fontLoadThread; -static OSTick s_fontLoadStartTick; -static u8 *s_pFontBuffer[ OS_SHARED_FONT_CN_KR_MAX + 1 ]; // “ǂݞ‚݂̓eƒXƒg‚Ȃ̂Ń[ƒhæ‚Ístatic•Ï”‚É‚µ‚Ä‚¢‚éB -static BOOL s_isStarted = FALSE; - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// ‹¤—LƒtƒHƒ“ƒgƒ[ƒh -// ============================================================================ -BOOL LoadSharedFontInit( void ) -{ - u8 *pBuffer; - int size; - - s_fontLoadStartTick = OS_GetTick(); - - // ƒ[ƒhƒXƒŒƒbƒh¶¬ - OS_CreateThread(&s_fontLoadThread, - LoadSharedFontThread, - NULL, - s_fontLoadThreadStack + THREAD_STACK_SIZE / sizeof(u64), - THREAD_STACK_SIZE, FONT_LOAD_THREAD_PRIO); - - // ƒtƒHƒ“ƒgƒ[ƒh€”õ - if( !OS_InitSharedFont() ) { - OS_TPrintf( "OS_InitSharedFont failed.\n" ); - return FALSE; - } - size = OS_GetSharedFontTableSize(); - if( size < 0 ) { - OS_TPrintf( "OS_GetSharedTableSize failed.\n" ); - return FALSE; - } - - pBuffer = OS_Alloc( (u32)size ); - if( pBuffer == NULL ) { - OS_TPrintf( "malloc failed.\n" ); - return FALSE; - } - if( !OS_LoadSharedFontTable( pBuffer ) ) { - OS_TPrintf( "OS_LoadSharedTable failed.\n" ); - return FALSE; - } - - // ƒ[ƒhƒXƒŒƒbƒh‹N“® - OS_WakeupThreadDirect(&s_fontLoadThread); - s_isStarted = TRUE; - return TRUE; -} - - -void LoadSharedFontThread( void *arg ) -{ -#pragma unused(arg) - BOOL retval = TRUE; - OSSharedFontIndex i; - - for( i = OS_SHARED_FONT_WW_L; i < OS_SHARED_FONT_CN_KR_MAX + 1; i++ ) { - int size; - - OS_TPrintf( "%s read.\n", str_fontname[ i ] ); - - size = OS_GetSharedFontSize( i ); - if( size < 0 ) { - OS_TPrintf( " get font size failed.\n" ); - retval = FALSE; - } - - // FS‚̃LƒƒƒbƒVƒ…‚ª‰ö‚µ‚»‚¤‚Ȃ̂ÅA‚Ƃ肠‚¦‚¸ƒAƒ‰ƒCƒ“ƒƒ“ƒg‚ð‚Æ‚Á‚Ä‚¨‚­B - size = MATH_ROUNDUP( size, 32 ); - - s_pFontBuffer[ i ] = OS_Alloc( (u32)size ); - if( s_pFontBuffer[ i ] == NULL ) { - OS_TPrintf( " malloc failed.\n" ); - retval = FALSE; - } - - if( OS_LoadSharedFont( i, s_pFontBuffer[ i ] ) ) { - OS_TPrintf( " load succeeded.\n" ); - g_isSucceededLoad[ i ] = TRUE; - }else { - OS_TPrintf( " load failed.\n" ); - g_isSucceededLoad[ i ] = FALSE; - retval = FALSE; - } - } - OS_TPrintf( "Shared Font load time = %dms\n", OS_TicksToMilliSeconds( OS_GetTick() - s_fontLoadStartTick ) ); -} - - -BOOL IsFinishedLoadSharedFont( void ) -{ - if( s_isStarted ) { - return OS_IsThreadTerminated( &s_fontLoadThread ); - }else { - return TRUE; - } -} - diff --git a/build/tests/CheckSharedFont/src/loadSharedFont.h b/build/tests/CheckSharedFont/src/loadSharedFont.h deleted file mode 100644 index fb350e47..00000000 --- a/build/tests/CheckSharedFont/src/loadSharedFont.h +++ /dev/null @@ -1,42 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: loadSharedFont.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __LOAD_SHARED_FONT_H__ -#define __LOAD_SHARED_FONT_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -// define data------------------------------------------------------- -// global variables-------------------------------------------------- -extern BOOL g_isSucceededLoad[ OS_SHARED_FONT_CN_KR_MAX + 1 ]; -extern const char *str_fontname[ OS_SHARED_FONT_CN_KR_MAX + 1 ]; - -// function---------------------------------------------------------- -BOOL LoadSharedFontInit( void ); -void LoadSharedFontThread( void *arg ); -BOOL IsFinishedLoadSharedFont( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __LOAD_SHARED_FONT_H__ diff --git a/build/tests/CheckSharedFont/src/main.c b/build/tests/CheckSharedFont/src/main.c deleted file mode 100644 index 0d2f9185..00000000 --- a/build/tests/CheckSharedFont/src/main.c +++ /dev/null @@ -1,98 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - FS - overlay - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - - -#include - -#include "DEMO.h" -#include "loadSharedFont.h" - -/*---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒƒCƒ“ƒGƒ“ƒgƒŠ - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - - OS_Init(); - OS_InitTick(); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - { - OSHeapHandle hh; - void *tmp; - tmp = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tmp); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_TPanic("ARM9: Fail to create heap...\n"); - } - (void)OS_SetCurrentHeap(OS_ARENA_MAIN, hh); - } - - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBitmap(); - DEMOHookConsole(); - - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 0, 1)); - DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR); - DEMOStartDisplay(); - - FS_Init(FS_DMA_NOT_USE); - - OS_TPrintf("--------------------------------\n" - "Shared Font sample.\n"); - - if( LoadSharedFontInit() ) { - - while( !IsFinishedLoadSharedFont() ) { - OS_WaitVBlankIntr(); - } - - // Œ‹‰Ê•\ަ - { - int i; - int ox = 10; - int oy = 60; - DEMOFillRect(0, 0, GX_LCD_SIZE_X, GX_LCD_SIZE_Y, DEMO_RGB_CLEAR); - DEMOSetBitmapTextColor(GX_RGBA(0, 31, 0, 1)); - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 31, 1)); - DEMODrawFrame(ox, oy, 240, 10 + ( OS_SHARED_FONT_CN_KR_MAX + 1 ) * 10, GX_RGBA( 0, 31, 0, 1)); - for (i = 0; i < OS_SHARED_FONT_CN_KR_MAX + 1; ++i) - { - DEMODrawText(ox + 10, oy + 5 + i * 10, "%s load %s", - str_fontname[ i ], g_isSucceededLoad[ i ] ? "suceeded" : "failed"); - } - } - DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - } - - OS_Terminate(); -} - - diff --git a/build/tests/CreateDevKp/ARM9/Makefile b/build/tests/CreateDevKp/ARM9/Makefile deleted file mode 100644 index d776bcac..00000000 --- a/build/tests/CreateDevKp/ARM9/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 0 -TARGET_NAME = CreateDevKP -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = CDKP -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main.rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/CreateDevKp/ARM9/main.rsf b/build/tests/CreateDevKp/ARM9/main.rsf deleted file mode 100644 index af290caa..00000000 --- a/build/tests/CreateDevKp/ARM9/main.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_0.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/CreateDevKp/ARM9/src/RomTypeTest.c b/build/tests/CreateDevKp/ARM9/src/RomTypeTest.c deleted file mode 100644 index ec236dca..00000000 --- a/build/tests/CreateDevKp/ARM9/src/RomTypeTest.c +++ /dev/null @@ -1,143 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: DS_Chat.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "misc.h" -#include "RomTypeTest.h" - -// define data------------------------------------------ -#define RETURN_BUTTON_TOP_X 2 -#define RETURN_BUTTON_TOP_Y 21 -#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + 8 ) -#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) - -#define ENABLE_CONTENT 0 -#define ENABLE_SHARED2 0 - -#if (ENABLE_CONTENT == 1) -#define CTRUE TRUE -#else -#define CTRUE FALSE -#endif - -#if (ENABLE_SHARED2 == 1) -#define STRUE TRUE -#else -#define STRUE FALSE -#endif - -#define TEST_NUM 15 - -typedef enum AccessPermission { - PERMISSION_NA = 0, - PERMISSION_RO, - PERMISSION_RW, - PERMISSION_ERROR, - PERMISSION_MAX -} -AccessPermission; - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- -static AccessPermission RWExTestCore( char *path, char *testfile ); -static AccessPermission SRLTest( void ); -static AccessPermission ContentTest( void ); -static void FinalizeRWTest( FSFile *file, char* filename ); -static AccessPermission RWTestCore( char *path, char *testfile ); -static AccessPermission RWTest( char *path ); -static void TestFSPermission( void ); - -// global variable ------------------------------------- -RTCDrawProperty g_rtcDraw = { - TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y -}; - -// static variable ------------------------------------- - -// const data ----------------------------------------- - -static BOOL CreateFile( void ) -{ - int len; - FSFile file[1]; - - FS_InitFile( file ); - - // ƒtƒ@ƒCƒ‹ì¬ƒeƒXƒg - if ( FS_CreateFile("nand:/sys/dev.kp", FS_PERMIT_R | FS_PERMIT_W) ) - { - // ƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ - if ( !FS_OpenFileEx( file, "nand:/sys/dev.kp", FS_FILEMODE_W ) ) - { - // ƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ޏ”s - OS_TPrintf("%s:open failed.\n","nand:/sys/dev.kp"); - return FALSE; - } - // ƒtƒ@ƒCƒ‹ƒ‰ƒCƒg - len = FS_WriteFile( file, "test", 5); - if( len != 5 ) - { - // ƒ‰ƒCƒgޏ”s - OS_TPrintf("%s:write failed.\n","nand:/sys/dev.kp"); - return FALSE; - } - // ƒtƒ@ƒCƒ‹ƒNƒ[ƒY - if( !FS_CloseFile( file ) ) - { - // ƒNƒ[ƒYޏ”s - OS_TPrintf("%s:close failed.\n","nand:/sys/dev.kp"); - return FALSE; - } - }else - { - OS_TPrintf("%s:create failed.\n","nand:/sys/dev.kp"); - return FALSE; - } - - return TRUE; -} - -// ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̉Šú‰» -void RomTypeTestInit( void ) -{ - BOOL res; - - GX_DispOff(); - GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - - PrintfSJIS( 1 * 8, 9 * 8, TXT_COLOR_BLACK, "CreateFile"); - - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); - - res = CreateFile(); - - if(res) - { - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_BLACK, (const u16 *)L"Succeed." ); - }else - { - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_BLACK, (const u16 *)L"NG." ); - } - -} - - diff --git a/build/tests/CreateDevKp/ARM9/src/RomTypeTest.h b/build/tests/CreateDevKp/ARM9/src/RomTypeTest.h deleted file mode 100644 index 39905e52..00000000 --- a/build/tests/CreateDevKp/ARM9/src/RomTypeTest.h +++ /dev/null @@ -1,35 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: RomTypeTest.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __ROM_TYPE_TEST_H__ -#define __ROM_TYPE_TEST_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -// define data---------------------------------------------------------- - -void RomTypeTestInit( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __ROM_TYPE_TEST_H__ diff --git a/build/tests/CreateDevKp/ARM9/src/main.c b/build/tests/CreateDevKp/ARM9/src/main.c deleted file mode 100644 index 4b651a3c..00000000 --- a/build/tests/CreateDevKp/ARM9/src/main.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "misc.h" -#include "RomTypeTest.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -static void INTR_VBlank( void ); - -// global variable------------------------------------------------------------- - -// static variable------------------------------------------------------------- - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// function's description -// ============================================================================ -void TwlMain(void) -{ - - // ‰Šú‰»---------------------------------- - OS_Init(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - GX_Init(); - GX_SetPower(GX_POWER_ALL); // ŠeƒƒWƒbƒN ƒpƒ[ON - - // Š„‚螂݋–‰Â---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // ƒfƒoƒCƒX‰Šú‰»------------------------------- - TP_Init(); - (void)RTC_Init(); - - // ƒVƒXƒeƒ€‚̉Šú‰»------------------ - InitAllocator(); - - InitBG(); - RomTypeTestInit(); - // ƒƒCƒ“ƒ‹[ƒv---------------------------- - while(1){ - OS_WaitIrq(1, OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„‚螂ݑ҂¿ - - ReadKeyPad(); // ƒL[“ü—͂̎擾 - ReadTP(); // TP“ü—͂̎擾 - - } -} - - -// ============================================================================ -// Š„‚螂݈— -// ============================================================================ - -// Vƒuƒ‰ƒ“ƒNŠ„‚èž‚Ý -static void INTR_VBlank(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„žƒ`ƒFƒbƒN‚̃Zƒbƒg -} - diff --git a/build/tests/CreateDevKp/Makefile b/build/tests/CreateDevKp/Makefile deleted file mode 100644 index 66754bca..00000000 --- a/build/tests/CreateDevKp/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/CreateDevKp/banner/Makefile b/build/tests/CreateDevKp/banner/Makefile deleted file mode 100644 index 97c32d52..00000000 --- a/build/tests/CreateDevKp/banner/Makefile +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 0 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/CreateDevKp/banner/icon/gameIcon.bmp b/build/tests/CreateDevKp/banner/icon/gameIcon.bmp deleted file mode 100644 index 5fe5ee2c..00000000 Binary files a/build/tests/CreateDevKp/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/CreateDevKp/banner/icon/msk_pictchat_icon.bin b/build/tests/CreateDevKp/banner/icon/msk_pictchat_icon.bin deleted file mode 100644 index 5b2734aa..00000000 Binary files a/build/tests/CreateDevKp/banner/icon/msk_pictchat_icon.bin and /dev/null differ diff --git a/build/tests/CreateDevKp/banner/test-utf16_0_v3.TWL.bsf b/build/tests/CreateDevKp/banner/test-utf16_0_v3.TWL.bsf deleted file mode 100644 index 347fe362..00000000 Binary files a/build/tests/CreateDevKp/banner/test-utf16_0_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/Makefile b/build/tests/CustomSystemUpdater/ARM7.TWL/Makefile deleted file mode 100644 index 3aec1362..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -##override TWL_PLATFORM = TS -TWL_NO_STD_PCHDR = True -override TARGET_CODEGEN = ARM - -ifndef TWLSDK_NOCRYPTO -#---------------------------------------------------------------------------- - -SRCS = main.c \ - kami_pxi.c \ - formatter.c - -TARGET_NAME = armadillo - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).response.template - -CRT0_O = crt0.SCR.TWL.o - -# ƒXƒ^ƒbƒN•s‘«–hŽ~‚̈×AƒCƒ“ƒ‰ƒCƒ““WŠJ‚¹‚¸‚ɃRƒ“ƒpƒCƒ‹‚·‚é -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \ - ../common/include \ - ../../../systemMenu_tools/common/ARM7/include \ - -SRCDIR += ../../../systemMenu_tools/common/ARM7/src - -LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ - libsdio_sp$(TWL_LIBSUFFIX).a \ - libathdrv_sp$(TWL_LIBSUFFIX).a \ - libwpa_sp$(TWL_LIBSUFFIX).a \ - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -endif #ifndef TWLSDK_NOCRYPTO - -#===== End of Makefile ===== diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/armadillo.lsf b/build/tests/CustomSystemUpdater/ARM7.TWL/armadillo.lsf deleted file mode 100644 index 177f5206..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/armadillo.lsf +++ /dev/null @@ -1,86 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lsf -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - StackSize 1024 1024 - - Library $(CRT0_O) -} - -#-------- -Ltdautoload SCRWRAM -{ - Address 0x03740000 - - Library libsubpsyscall.a - Library libsyscall_sp.twl.a - Library $(CW_LIBS) - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) - - Object * (.etable) - Object $(OBJDIR)/main.o - Object $(OBJDIR)/kami_pxi.o - Object $(OBJDIR)/formatter.o - - Library libsea_sp$(LIBSUFFIX).a - Library libcrypto_sp$(LIBSUFFIX).a - - Library libos_sp$(LIBSUFFIX).a - Library libmi_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libi2c_sp$(LIBSUFFIX).a - Library libsdio_sp$(LIBSUFFIX).a - Library libpad_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a -# Library libwm_sp$(LIBSUFFIX).a -# Library libnwm_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwl_sp$(LIBSUFFIX).a - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - Library libfs_sp$(LIBSUFFIX).a - Library libcard_sp$(LIBSUFFIX).a - Library libcamera_sp$(LIBSUFFIX).a - - Object * (.wram) - Object * (.ltdwram) - Object * (.rsvwram) - Object * (.main) - Object * (.ltdmain) -} diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/include/kami_pxi.h b/build/tests/CustomSystemUpdater/ARM7.TWL/include/kami_pxi.h deleted file mode 100644 index cbce8090..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/include/kami_pxi.h +++ /dev/null @@ -1,44 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef TWL_CAMERA_TEST_CAMERATEST_H_ -#define TWL_CAMERA_TEST_CAMERATEST_H_ - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -void KamiPxiInit( void ); - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_CAMERA_TEST_CAMERATEST_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/src/kami_pxi.c b/build/tests/CustomSystemUpdater/ARM7.TWL/src/kami_pxi.c deleted file mode 100644 index c3caa3f1..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/src/kami_pxi.c +++ /dev/null @@ -1,262 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "kami_pxi.h" -#include "fifo.h" -#include "twl/cdc.h" -#include "formatter.h" -#include -#include -#include -#include -#include - -typedef unsigned char byte; /* Don't change */ -typedef unsigned short word; /* Don't change */ -typedef unsigned long dword; /* Don't change */ -#define BOOLEAN int - -extern BOOL FATFSi_nandRtfsIo( int driveno, dword block, void* buffer, word count, BOOLEAN reading); -extern BOOL sdmcFormatNandLog( BOOL verify_flag); - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -#define KAMITEST_MESSAGE_ARRAY_MAX 4 // ƒXƒŒƒbƒh“¯Šú—pƒƒbƒZ[ƒWƒLƒ…[‚̃TƒCƒY -#define KAMITEST_THREAD_STACK_SIZE 2048 // ƒXƒŒƒbƒh‚̃Xƒ^ƒbƒNƒTƒCƒY - -#define KAMITEST_THREAD_PRIORITY 6 - -// ƒAƒ‰ƒCƒƒ“ƒg’²®‚µ‚ăRƒs[‚·‚é -#define KAMI_UNPACK_U16(d, s) \ - (*(d) = (u16)((((u8*)s)[0] << 0) | (((u8*)s)[1] << 8))) -#define KAMI_UNPACK_U32(d, s) \ - (*(d) = (u32)((((u8*)s)[0] << 0) | (((u8*)s)[1] << 8) | (((u8*)s)[2] << 16) | (((u8*)s)[3] << 24))) - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ -typedef struct KamiWork -{ - BOOL result; - u32 total; - u32 current; - KamiCommand command; - u8 data[KAMITEST_PXI_DATA_SIZE_MAX]; // Œã‘±ƒf[ƒ^Ši”[—p - - OSMessageQueue msgQ; // ƒXƒŒƒbƒh“¯Šú—pƒƒbƒZ[ƒWƒLƒ…[ - OSMessage msgArray[KAMITEST_MESSAGE_ARRAY_MAX]; - // ƒƒbƒZ[ƒW‚ðŠi”[‚·‚éƒoƒbƒtƒ@ - OSThread thread; // KAMI—pƒXƒŒƒbƒh - u64 stack[KAMITEST_THREAD_STACK_SIZE / sizeof(u64)]; - // KAMI—pƒXƒŒƒbƒh‚̃Xƒ^ƒbƒN -} -KamiWork; - -/*---------------------------------------------------------------------------* - ÓI•Ï”’è‹` - *---------------------------------------------------------------------------*/ -static BOOL kamiInitialized; -static KamiWork kamiWork; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err); -static void KamiReturnResult(KamiCommand command, KAMIPxiResult result); -static void KamiReturnResultEx(KamiCommand command, KAMIPxiResult result, u8 size, u8* data); -static void KamiThread(void *arg); - -void KamiPxiInit(void) -{ - if (kamiInitialized) - { - return; - } - kamiInitialized = TRUE; - - PXI_Init(); - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_KAMITEST, KamiPxiCallback); - - OS_InitMessageQueue(&kamiWork.msgQ, kamiWork.msgArray, KAMITEST_MESSAGE_ARRAY_MAX); - OS_CreateThread(&kamiWork.thread, KamiThread, 0, - (void *)(kamiWork.stack + (KAMITEST_THREAD_STACK_SIZE / sizeof(u64))), - KAMITEST_THREAD_STACK_SIZE, KAMITEST_THREAD_PRIORITY); - OS_WakeupThreadDirect(&kamiWork.thread); -} - -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused( tag ) - if (err) - { - return; - } - if (data & KAMITEST_PXI_START_BIT) // 擪ƒf[ƒ^ - { - kamiWork.total = (u8)((data & KAMITEST_PXI_DATA_NUMS_MASK) >> KAMITEST_PXI_DATA_NUMS_SHIFT); - kamiWork.current = 0; - kamiWork.command = (KamiCommand)((data & KAMITEST_PXI_COMMAND_MASK) >> KAMITEST_PXI_COMMAND_SHIFT); - kamiWork.data[kamiWork.current++] = (u8)((data & KAMITEST_PXI_1ST_DATA_MASK) >> KAMITEST_PXI_1ST_DATA_SHIFT); - } - else // Œã‘±ƒf[ƒ^ - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0xFF0000) >> 16); - kamiWork.data[kamiWork.current++] = (u8)((data & 0x00FF00) >> 8); - kamiWork.data[kamiWork.current++] = (u8)((data & 0x0000FF) >> 0); - } - if (kamiWork.current >= kamiWork.total) - { - switch (kamiWork.command) - { - case KAMI_EXE_FORMAT: - case KAMI_NAND_IO: - case KAMI_CLEAR_NAND_ERRORLOG: - case KAMI_GET_IS_TOOL_TYPE: - if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK)) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_FATAL_ERROR); - } - break; - - default: - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); - } - } -} - -static void KamiReturnResult(KamiCommand command, KAMIPxiResult result) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | KAMITEST_PXI_RESULT_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - ((1 << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((result << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } -} - -static void KamiReturnResultEx(KamiCommand command, KAMIPxiResult result, u8 size, u8* data) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | KAMITEST_PXI_RESULT_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - (((size+1) << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((result << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - int i; - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } - for (i = 0; i < size; i+= 3) - { - pxiData = (u32)((data[i] << 16) | (data[i+1] << 8) | data[i+2]); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } - } -} - -static void KamiThread(void *arg) -{ -#pragma unused( arg ) - OSMessage msg; - BOOL result; - - while (TRUE) - { - (void)OS_ReceiveMessage(&kamiWork.msgQ, &msg, OS_MESSAGE_BLOCK); - switch (kamiWork.command) - { - case KAMI_EXE_FORMAT: - { - result = ExeFormat((FormatMode)kamiWork.data[0]); // Quick or Full - if (result) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_TRUE); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_NAND_IO: - { - BOOL is_read; - u32 block; - void* buffer; - u32 count; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U32(&block, &kamiWork.data[1]); - KAMI_UNPACK_U32((u32 *)(&buffer), &kamiWork.data[5]); - KAMI_UNPACK_U32(&count, &kamiWork.data[9]); - - result = FATFSi_nandRtfsIo( 0, block, buffer, (u16)count, is_read ); - if (result) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_TRUE); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_CLEAR_NAND_ERRORLOG: - { - if (sdmcFormatNandLog(TRUE)) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_GET_IS_TOOL_TYPE: - { - IsToolType type = IS_TOOL_TYPE_ERROR; - u8 temp = I2C_ReadRegister( I2C_SLAVE_DEBUGGER, 0); - if (temp != (u8)(-1)) // Ô” AƒLƒƒƒvƒ`ƒƒˆÈŠO‚Í’ÊMƒGƒ‰[ - { - if (temp == 0x44) - { - type = IS_TOOL_TYPE_DEBUGGER; - } - else if (temp == 0x43) - { - type = IS_TOOL_TYPE_CAPTURE; - } - } - - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(IsToolType), (u8*)&type); - } - break; - - default: - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); - } - } -} - -#include diff --git a/build/tests/CustomSystemUpdater/ARM7.TWL/src/main.c b/build/tests/CustomSystemUpdater/ARM7.TWL/src/main.c deleted file mode 100644 index a68e6750..00000000 --- a/build/tests/CustomSystemUpdater/ARM7.TWL/src/main.c +++ /dev/null @@ -1,576 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" -#include "kami_pxi.h" - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -/* ŠeƒXƒŒƒbƒh—Dæ“x */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // Žb’è -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_NWM_COMMAND 9 -#define THREAD_PRIO_NWM_WPA 10 -#define THREAD_PRIO_HOTSW 11 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* ROM “à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh */ -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/* Žg—p DMA ”Ô† */ -#define DMA_NO_FATFS FATFS_DMA_4 // = 0 -#define DMA_NO_NWM 3 - -/* ƒJ[ƒhƒ`ƒƒƒ^ƒŠƒ“ƒOƒJƒEƒ“ƒ^ */ -#define CHATTERING_COUNTER 0x1988 // 100ms•ª (0x1988 * 15.3us = 100000us) - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(void); -static void InitializeFatfs(void); - -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig* ncdsp); -#endif -static void VBlankIntr(void); - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: ‹N“®ƒxƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void -TwlSpMain(void) -{ - OSHeapHandle heapHandle; - - /* OS ‰Šú‰» */ - OS_Init(); - PrintDebugInfo(); - - /* NVRAM ‚©‚烆[ƒU[î•ñ“Ç‚Ýo‚µ */ - ReadUserInfo(); - - /* ƒq[ƒv—̈æÝ’è */ - heapHandle = InitializeAllocateSystem(); - - /* ƒ{ƒ^ƒ““ü—̓T[ƒ`‰Šú‰» */ - (void)PAD_InitXYButton(); - - /* Š„ž‚Ý‹–‰Â */ - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* Šeƒ‰ƒCƒuƒ‰ƒŠ‰Šú‰» */ - AES_Init(THREAD_PRIO_AES); // AES - SEA_Init(THREAD_PRIO_SEA); // SEA - FS_Init(FS_DMA_NOT_USE); // FS for CARD - FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD - InitializeFatfs(); // FAT-FS -// InitializeNwm(heapHandle); // TWL –³ü - MCU_InitIrq(THREAD_PRIO_MCU); // ƒ}ƒCƒRƒ“ - CDC_InitLib(); // CODECƒ‰ƒCƒuƒ‰ƒŠ‰Šú‰» - CAMERA_Init(); // ƒJƒƒ‰ - - SND_Init(THREAD_PRIO_SND); // ƒTƒEƒ“ƒh - SNDEX_Init(THREAD_PRIO_SNDEX); // ƒTƒEƒ“ƒhŠg’£ - RTC_Init(THREAD_PRIO_RTC); // RTC -// WVR_Begin(heapHandle); // NITRO –³ü - SPI_Init(THREAD_PRIO_SPI); - -/////////////// -#ifndef NAND_INITIALIZER_LIMITED_MODE - KamiPxiInit(); -#endif -/////////////// - - while (TRUE) - { - OS_Halt(); - - /* ƒ\ƒtƒgƒEƒFƒAƒŠƒZƒbƒg—v‹‚ÍŠÄŽ‹‚µ‚È‚¢ */ - /* AGB ƒJ[ƒgƒŠƒbƒW‚Ì‘}”²ƒ`ƒFƒbƒN‚Ís‚í‚È‚¢ */ - /* DS ƒJ[ƒh‚Ì‘}”²ƒ`ƒFƒbƒN‚Ís‚í‚È‚¢ */ - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ìî•ñ‚ðƒfƒoƒbƒOo—Í‚·‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - OS_TPrintf("ARM7: This component is running on TWL.\n"); - OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n"); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: ƒƒ‚ƒŠŠ„“–‚ăVƒXƒeƒ€‚ð‰Šú‰»‚·‚éB - Arguments: None. - Returns: OSHeapHandle - WRAM ƒAƒŠ[ƒiã‚ÉŠm•Û‚³‚ꂽƒq[ƒv‚̃nƒ“ƒhƒ‹‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static OSHeapHandle -InitializeAllocateSystem(void) -{ - OSHeapHandle hh; - void* subLo = (void*)OS_GetWramSubArenaLo(); - void* subHi = (void*)OS_GetWramSubArenaHi(); - void* privLo = (void*)OS_GetWramSubPrivArenaLo(); - void* privHi = (void*)OS_GetWramSubPrivArenaHi(); - - if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM)) - { - /* SUB ƒAƒŠ[ƒi‚ð SUBPRIV ƒAƒŠ[ƒi‚É‹zŽû */ - OS_SetWramSubArenaHi(subLo); - OS_SetWramSubPrivArenaLo(subLo); - privLo = subLo; - } - - /* ƒAƒŠ[ƒi‚ð 0 ƒNƒŠƒA */ - MI_CpuClear8(privLo, (u32)privHi - (u32)privLo); - - /* ƒq[ƒv쬉Šú‰» */ - privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1); - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi); - if (hh < 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - - /* ƒJƒŒƒ“ƒgƒq[ƒv‚ÉÝ’è */ - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - /* ƒq[ƒvƒTƒCƒY‚ÌŠm”F */ - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if (heapSize <= 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - OS_TPrintf("ARM7: heap size [%d]\n", heapSize); - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éBFATFS‰Šú‰»ŠÖ”“à‚ŃXƒŒƒbƒh‹xŽ~ - ‚·‚éˆ×A‹xŽ~’†“®ì‚·‚éƒ_ƒ~[‚̃XƒŒƒbƒh‚ð—§‚Ä‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - // FATFSƒ‰ƒCƒuƒ‰ƒŠ‚̉Šú‰» - if(!FATFS_Init( FATFS_DMA_4, FATFS_DMA_5, THREAD_PRIO_FATFS)) - { - // do nothing - } -} - -//#ifdef WM_PRECALC_ALLOWEDCHANNEL -//extern u16 WMSP_GetAllowedChannel(u16 bitField); -//#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAM‚©‚烆[ƒU[î•ñ‚ð“Ç‚Ýo‚µA‹¤—L—̈æ‚É“WŠJ‚·‚éB - ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚éƒoƒbƒtƒ@‚ª—¼•û‰ó‚ê‚Ä‚¢‚éꇂÍA - ‹¤—L—̈æ‚̃†[ƒU[î•ñŠi”[ꊂðƒNƒŠƒA‚·‚éB - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // ƒIƒtƒZƒbƒg“Ç‚Ýo‚µ -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCDEx(temp); -#else - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‹N“®‚ð—}§ - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ƒjƒbƒNƒl[ƒ€‚ð•â³ - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // ƒRƒƒ“ƒg‚ð•â³ - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // ‹¤—L—̈æ‚ɃXƒgƒA - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // ‹¤—L—̈æ‚ðƒNƒŠƒA - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // –³üMACƒAƒhƒŒƒX‚ðƒ†[ƒU[î•ñ‚ÌŒã‚ë‚É“WŠJ - { - u8 wMac[6]; - - // NVRAM‚©‚çMACƒAƒhƒŒƒX‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // ‹¤—L—̈æ‚É“WŠJ - MI_CpuCopy8(wMac, p, 6); - } -/* -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚©‚çŽg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - { - u16 enableChannel; - u16 allowedChannel; - - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // Žg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ(MACƒAƒhƒŒƒX‚ÌŒã‚ë‚Ì2ƒoƒCƒg) - p = (u8 *)((u32)p + 6); - // ‹¤—L—̈æ‚É“WŠJ - *((u16 *)p) = allowedChannel; - } -#endif -*/ -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ƒ†[ƒU[î•ñ‚ªŠg’£ƒRƒ“ƒtƒBƒO‚ɑΉž‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚𒲸‚·‚éB - - Arguments: None. - - Returns: BOOL - Šg’£ƒ†[ƒU[î•ñ‚ª—LŒø‚ÈꇂÉTRUE‚ð•Ô‚·B - –³Œø‚Å‚ ‚éꇂÍFALSE‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM“à“o˜^ƒGƒŠƒA‚Ìî•ñ‚©‚çAŠg’£Œ¾ŒêƒR[ƒh‚̑ΉžŒ¾Œêƒrƒbƒgƒ}ƒbƒv - ‚ÉŠÖ‚·‚éî•ñ‚ð’Šo‚·‚éB - - Arguments: None. - - Returns: u16 - DSƒJ[ƒhA‚à‚µ‚­‚Í ƒ}ƒ‹ƒ`ƒu[ƒgƒoƒCƒiƒŠ‚ª‘Ήž‚µ‚Ä‚¢‚é - Œ¾ŒêƒR[ƒh‚̃rƒbƒgƒ}ƒbƒv‚ð•Ô‚·BDSƒJ[ƒh‚ªŠg’£Œ¾Œê - ƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡‚Í 0 ‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM“à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh‚ðŠm”F - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - 3: ƒAƒvƒŠ‚Ì‹N“®‚ð—}§‚·‚ׂ«B - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚é‚© - if (IsValidConfigEx()) - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚éê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // Šg’£ƒf[ƒ^—p CRC ‚ª³‚µ‚­Aݒ茾ŒêƒR[ƒh‚ª‘ΉžŒ¾ŒêƒR[ƒh‚Ɋ܂܂ê‚éꇂɳ“–‚Æ”»’f - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // Šg’£Œ¾ŒêƒR[ƒh‚Å’Ê팾ŒêƒR[ƒh‚ðã‘‚« - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚邪A - // IPL2‚̑ΉžŒ¾ŒêƒR[ƒh‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªŠÜ‚Ü‚ê‚È‚¢ê‡‚Í‹N“®‚ð—}§ - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚éꇂ͋N“®‚ð—}§ - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - crc_flag |= (1 << i); - } - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // Šeƒ~ƒ‰[ƒf[ƒ^‚ÌCRC & saveCount³“–«ƒ`ƒFƒbƒN - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC‚ª³‚µ‚­AsaveCount’l‚ª0x80–¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’fB - crc_flag |= (1 << i); - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ƒuƒ‰ƒ“ƒNŠ„‚螂݃xƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -extern void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/ARM9-TS.lsf b/build/tests/CustomSystemUpdater/ARM9.TWL/ARM9-TS.lsf deleted file mode 100644 index 35e3fba0..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/ARM9-TS.lsf +++ /dev/null @@ -1,57 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: ARM9-TS.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL LCF SPEC FILE -# - -Static $(TARGET_NAME) -{ - Address $(ADDRESS_STATIC) - Object $(OBJS_STATIC) - Library $(LLIBS) $(GLIBS) $(CW_LIBS) - StackSize 4096 4096 -} - -Autoload ITCM -{ - Address $(ADDRESS_ITCM) - Object * (.itcm) - Object $(OBJS_AUTOLOAD) (.text) - Object $(OBJS_AUTOLOAD) (.rodata) - Object $(OBJS_AUTOLOAD) (.init) - Object $(OBJS_AUTOLOAD) (.ctor) - Object $(OBJS_AUTOLOAD) (.sinit) -} - -Autoload DTCM -{ - Address $(ADDRESS_DTCM) - Object * (.dtcm) - Object $(OBJS_AUTOLOAD) (.data) - Object $(OBJS_AUTOLOAD) (.sdata) - Object $(OBJS_AUTOLOAD) (.bss) - Object $(OBJS_AUTOLOAD) (.sbss) -} - -Ltdautoload LTDMAIN -{ - # NITRO/TWL ‹¤—L‚̃I[ƒo[ƒŒƒC‚ªÝ‚éꇂÍA‚³‚ç‚É‚»‚ÌŒã‚ë‚É”z’u‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - After $(TARGET_NAME) - Object * (.ltdmain) - Object $(OBJS_LTDAUTOLOAD) - Library $(LLIBS_EX) $(GLIBS_EX) -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/Makefile b/build/tests/CustomSystemUpdater/ARM9.TWL/Makefile deleted file mode 100644 index 08a2e0c7..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/Makefile +++ /dev/null @@ -1,150 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -#============================================================================ -#»•iŒ®‚ðŽg‚Á‚½‘‚«ž‚Ý‚ðs‚¤ê‡‚ÍATwlIPL/build/buildtools/commondefs‚Ì"FIRM_USE_PRODUCT_KEYS=TRUE"‚ð—LŒø‚É‚µ‚Ä‚­‚¾‚³‚¢B -#============================================================================ - -# COMPILE SWITCH for build SystemUpdater -IGNORE_VERSION_CHECK ?= TRUE - -# MAKEROM SWITCH for build SystemUpdater -SYSM_DISABLE_DEBUG ?= TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -#TARGET_CODEGEN = THUMB - -TITLEID_LO = 0SUA -#TARGET_TAD = - -TARGET_BIN = CustomSystemUpdater_$(SYSM_REGION).srl -LCFILE_SPEC = ARM9-TS.lsf -ROM_SPEC = main.rsf - -MAKEROM_ARM7_BASE = ../ARM7.TWL/bin/$(TWL_BUILDTYPE_ARM7)/armadillo -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -SRCS = main.c \ - font_data.c \ - graphics.c \ - kami_font.c \ - import.c \ - hwi.c \ - kami_pxi.c \ - kami_write_nandfirm.c \ - hw_info.c \ - keypad.c \ - kami_copy_file.c \ - debugger_hw_reset_control.c \ - debugger_card_rom.c - -LINCLUDES = include \ - ../common/include \ - $(ROOT)/build/libraries/lcfg/ARM9.TWL/include \ - $(ROOT)/build/libraries/fs/common/include \ - ../../../systemMenu_tools/common/ARM9/include \ - -SRCDIR = src \ - ../../../systemMenu_tools/HWInfoWriter/ARM9/src \ - ../../../systemMenu_tools/common/ARM9/src \ - -#LCFILE = # using default - -DATA_ROOT = ../data -ROMSET_FILE = ../romset -ROM_CHECKER = ../romchecker.rb - -SUMAKER = ../sumaker.rb custom -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) -ifdef FIRM_USE_PRODUCT_KEYS -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo.der' \ - -DHWID_PRIVKEY='private_HWID.der' -else -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo_dev.der' \ - -DHWID_PRIVKEY='private_HWID_dev.der' -endif -endif - -ifeq ($(IGNORE_VERSION_CHECK),TRUE) -MACRO_FLAGS += -DIGNORE_VERSION_CHECK -endif - - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \ - -DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa' \ - -DCARD_REGION='$(CARD_REGION)' \ - -DDISABLE_DEBUG='$(SYSM_DISABLE_DEBUG)' - -MAKETAD_FLAGS += -s - -SYSMENU_LIBS = \ - libnamut$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - liblcfg$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -#INSTALL_DIR = $(SDK_NMENU_DATADIR) -INSTALL_DIR = ../bin - -#---------------------------------------------------------------------------- - - -#include $(ROMSET_FILE) - -.PHONY: build_time check_rom sumaker - -check_rom: -ifeq ($(DISABLE_ROMCHECK),) - $(ROM_CHECKER) $(ROMSET) $(SYSM_REGION) - $(ROM_CHECKER) $(ROMSET) VERUP -endif -#ifeq ($(DISABLE_ROMCHECK),) -# $(ROM_CHECKER) $(DATA_ROOT)/$(ROMSET) -#endif - -build_time: - echo -n "#define BUILD_TIME \"`date \"+%Y/%m/%d %H:%M:%S\"`\"" > include/build_time.h - -sumaker: - $(SUMAKER) $(ROMSET) $(SYSM_REGION) - -do-build: sumaker check_rom build_time $(TARGETS) - -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/graphics.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/graphics.h deleted file mode 100644 index f76dfeb1..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/graphics.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: graphics.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef GRAPHICS_H_ -#define GRAPHICS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -void InitGraphics(void); -void DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color); -void DrawQuad(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color); -void DrawResult(BOOL result); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* GRAPHICS_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/hw_info.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/hw_info.h deleted file mode 100644 index 1c43c56e..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/hw_info.h +++ /dev/null @@ -1,71 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: process_hw_info.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef HW_INFO_H_ -#define HW_INFO_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: HWî•ñ‘S‘̂̃‰ƒCƒg - - Description: - - Arguments: region : - wirelessForceOff : –³ü‹­§OFF‚È‚çTRUE‚ðŽw’è - - Returns: None. - *---------------------------------------------------------------------------*/ -BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff ); - - -/*---------------------------------------------------------------------------* - Name: HWInfoƒtƒ@ƒCƒ‹‚Ìíœ - - Description: - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -BOOL DeleteHWInfoFile( void ); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* HW_INFO_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/import.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/import.h deleted file mode 100644 index 8c04f1f6..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/import.h +++ /dev/null @@ -1,49 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: import.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef PROCESS_IMPORT_H_ -#define PROCESS_IMPORT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -s32 kamiImportTad(int no, int total, const char* path); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* PROCESS_IMPORT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_copy_file.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_copy_file.h deleted file mode 100644 index d2fb008c..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_copy_file.h +++ /dev/null @@ -1,41 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - SystemUpdater - File: kami_copy_file.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef KAMI_COPY_FILE_H_ -#define KAMI_COPY_FILE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -BOOL kamiCopyFile(char* srcPath, char* dstPath); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_COPY_FILE_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_font.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_font.h deleted file mode 100644 index ad5095e2..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_font.h +++ /dev/null @@ -1,94 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef KAMI_FONT_H_ -#define KAMI_FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern u8 prog_state; -enum -{ STATE_NONE, STATE_SELECT, STATE_KS_PARENTINIT, STATE_KS_PARENT, STATE_KS_CHILDINIT, - STATE_KS_CHILDSCAN, STATE_KS_CHILD -}; -extern OSHeapHandle heapHandle; // Heapƒnƒ“ƒhƒ‹; - -extern const u16 BgScDataMain[32 * 24]; -extern const u16 BgScDataSub[32 * 24]; -extern const u32 sampleCharData[8 * 0x100]; -extern const u16 PlttDataObj[16][16]; -extern const u16 PlttDataMain[16][16]; -extern const u16 PlttDataSub[16][16]; - -void kamiFontInit(void); -void kamiFontClear(void); -void kamiFontClearMain(void); -void kamiFontPut(u16 x, u16 y, u16 color, u16 no); -void kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontFill(s16 x, s16 y, u8 color, s16 value, s32 length); -void kamiFontFillChar(int lineNo, u8 color1, u8 color2); -void kamiFontLoadScreenData(void); -void kamiFontPrintfConsole(u8 color, const char *text, ...); -void kamiFontPrintfConsoleEx(u8 color, const char *text, ...); - -// ã‰æ–ʃRƒ“ƒ\[ƒ‹•¶Žš—ñ—pƒpƒŒƒbƒg -#define CONSOLE_ORANGE 0 -#define CONSOLE_RED 1 -#define CONSOLE_GREEN 2 - -// ‰º‰æ–ʃtƒHƒ“ƒg—pƒpƒŒƒbƒg -#define FONT_COLOR_BLACK 0 -#define FONT_COLOR_RED 1 -#define FONT_COLOR_GREEN 2 -#define FONT_COLOR_BLUE 3 -#define FONT_COLOR_YELLOW 4 -#define FONT_COLOR_CYAN 5 -#define FONT_COLOR_PURPLE 6 - -// ‰º‰æ–Ê”wŒi—pƒpƒŒƒbƒg -#define BG_COLOR_TRANS 0 -#define BG_COLOR_WHITE 1 -#define BG_COLOR_BLACK 2 -#define BG_COLOR_GRAY 3 -#define BG_COLOR_PURPLE 4 -#define BG_COLOR_PINK 5 -#define BG_COLOR_BLUE 6 -#define BG_COLOR_GREEN 7 -#define BG_COLOR_VIOLET 8 -#define BG_COLOR_RED 9 -#define BG_COLOR_YELLOW 10 - -#define BG_COLOR_NONE 0xff - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_pxi.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_pxi.h deleted file mode 100644 index c05de9d4..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_pxi.h +++ /dev/null @@ -1,89 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef TWL_KAMI_TEST_KAMITEST_H_ -#define TWL_KAMI_TEST_KAMITEST_H_ - -#include "fifo.h" - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -// ˆ—Œ‹‰Ê’è‹` -typedef enum KAMIResult -{ - KAMI_RESULT_SUCCESS = 0, - KAMI_RESULT_SUCCESS_TRUE = 0, - KAMI_RESULT_SUCCESS_FALSE, - KAMI_RESULT_INVALID_COMMAND, - KAMI_RESULT_INVALID_PARAMETER, - KAMI_RESULT_ILLEGAL_STATUS, - KAMI_RESULT_BUSY, - KAMI_RESULT_FATAL_ERROR, - KAMI_RESULT_SEND_ERROR, - KAMI_RESULT_MAX -} -KAMIResult; - - -typedef enum { - FORMAT_MODE_QUICK, // QuickƒtƒH[ƒ}ƒbƒg - FORMAT_MODE_FULL // FullƒtƒH[ƒ}ƒbƒg(Šeƒp[ƒeƒBƒVƒ‡ƒ““à‚ð0xFF‚Å–„‚ß‚éj -} FormatMode; - -// ƒR[ƒ‹ƒoƒbƒN -typedef void (*KAMICallback)(KAMIResult result, void *arg); - - -void KamiPxiInit( void ); - -KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback); -KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read); -KAMIResult kamiClearNandErrorLog( void ); -KAMIResult kamiGetIsToolType( IsToolType *pType ); - -// (d—v) -// ARM7‚ª“ǂݑ‚«‚·‚邽‚߃Š[ƒh‘O‚ÍInvalidateAƒ‰ƒCƒg‘O‚̓tƒ‰ƒbƒVƒ…‚µ‚Ä‚­‚¾‚³‚¢B -// -static KAMIResult kamiNandRead(u32 block, void* buffer, u32 count) -{ - return kamiNandIo(block, buffer, count, TRUE); -} -static KAMIResult kamiNandWrite(u32 block, void* buffer, u32 count) -{ - return kamiNandIo(block, buffer, count, FALSE); -} - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_KAMI_TEST_KAMITEST_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_write_nandfirm.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_write_nandfirm.h deleted file mode 100644 index 90fe68bd..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/kami_write_nandfirm.h +++ /dev/null @@ -1,52 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_write_nandfirm.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef KAMI_WRITE_NAND_FIRM -#define KAMI_WRITE_NAND_FIRM - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -typedef void* (*KAMIAlloc)(u32 size); -typedef void (*KAMIFree)(void* ptr); - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFunc); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_WRITE_NAND_FIRM */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/include/keypad.h b/build/tests/CustomSystemUpdater/ARM9.TWL/include/keypad.h deleted file mode 100644 index 2f5a1602..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/include/keypad.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef KAMI_KEY_PAD_H_ -#define KAMI_KEY_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -void kamiPadRead(void); -BOOL kamiPadIsTrigger(u16 key); -BOOL kamiPadIsRepeatTrigger(u16 key); -BOOL kamiPadIsPress(u16 key); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_KEY_PAD_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/font_data.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/font_data.c deleted file mode 100644 index 54031a91..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/font_data.c +++ /dev/null @@ -1,734 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: font_data.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include - -/*---------------------- ‚a‚fƒXƒNƒŠ[ƒ“ ---------------------------*/ - -const u16 BgScDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -const u16 BgScDataSub[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -/*---------------------- ƒpƒŒƒbƒgƒf[ƒ^ ---------------------------*/ -#define RGB555(r,g,b) (b<<10|g<<5|r) - -const u16 PlttDataObj[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(31, 0, 0), RGB555(5, 5, 20),}, // Black - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White -}; - -// ã‰æ–ʃRƒ“ƒ\[ƒ‹•¶Žš—ñƒpƒŒƒbƒg -const u16 PlttDataMain[16][16] = { - {RGB555(31, 31, 31), RGB555(31, 10, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Orange - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555( 5, 5, 5), RGB555( 5, 5, 5), RGB555( 5, 5, 5), RGB555(31, 31, 31),}, // Black -}; - -// ‰º‰æ–ʃRƒ“ƒ\[ƒ‹•¶Žš—ñƒpƒŒƒbƒg -const u16 PlttDataSub[16][16] = { - {RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(25, 25, 25), RGB555(31, 31, 31),}, // Black - {RGB555(31, 31, 31), RGB555(21, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555( 0, 21, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555( 0, 0, 21), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(21, 21, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 21, 21), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(21, 0, 21), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(20, 20, 20), RGB555(20, 20, 20), RGB555(20, 20, 20),}, // Gray - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - - // ”wŒiƒJƒ‰[‚Í‚±‚Ì16”ÔƒpƒŒƒbƒg - // ”’ • ŠD ‚ނ炳‚« ƒsƒ“ƒN ‚Ý‚¸‚¢‚ë —Î ÂŽ‡ Ô ‰© - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(20, 20, 20), RGB555(31, 15, 31), RGB555(31, 20, 20), RGB555(20, 29, 31), RGB555(20, 31, 20), RGB555(21, 21, 31), RGB555(31, 0, 0), RGB555(31, 31, 10), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), } // White -}; - -/*---------------------- ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^ -------------------------*/ - -const u32 sampleCharData[8 * 0x100] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x11111111, 0x11111111, // 0001h use for import progress bar - 0x11111111, 0x11111111, 0x00000000, 0x00000000, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh 0 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh 1 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h 2 - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h 3 - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h 4 - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h 5 - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h 6 - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h 7 - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h 8 - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h 9 - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h 10 - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h 11 - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah 12 - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh 13 - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech 14 - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh 15 - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh 16 - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh 17 - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h 18 - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h 19 - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h 20 - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h 21 - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h 22 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h 23 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - - 0x33330000, - 0x33330000, - 0x33000000, - 0x33000000, // 00f6h - 0x33000000, - 0x33000000, - 0x33330000, - 0x33330000, - - - 0x00020000, // 00f7h - 0x00020000, - 0x00020000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00f8h - 0x00000000, - 0x00000000, - 0x00000000, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00f9h - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00fah - 0x11111111, - 0x11111111, - 0x11111111, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00fbh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fch - 0x00020000, - 0x00020000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fdh - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00000000, // 00feh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00020000, - 0x00220000, - 0x02122222, - 0x21111112, - 0x21111112, - 0x02122222, - 0x00220000, - 0x00020000, - - - -/* - 0x00022222, - 0x00002112, - 0x00021112, - 0x00211122, - 0x02111202, - 0x21112000, - 0x02120000, - 0x00200000, -*/ - -/* - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -*/ -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/graphics.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/graphics.c deleted file mode 100644 index 0064e83d..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/graphics.c +++ /dev/null @@ -1,199 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: praphics.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -//#include -#include -#include "kami_font.h" -#include "graphics.h" - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitGraphics - - Description: •\ަ‚̉Šú‰»ˆ— - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void -InitGraphics(void) -{ - GX_DispOff(); - GXS_DispOff(); - - //---- VRAM ƒNƒŠƒA - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - - //---- OAM‚ƃpƒŒƒbƒgƒNƒŠƒA - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- ‚n‚a‚iƒoƒ“ƒN‚ÌÝ’è - GX_SetBankForOBJ(GX_VRAM_OBJ_128_A); - GX_SetBankForSubOBJ(GX_VRAM_SUB_OBJ_128_D); - - //---- ‚a‚fƒoƒ“ƒN‚ÌÝ’è - GX_SetBankForBG(GX_VRAM_BG_128_B); - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - //---- •\ަƒ‚[ƒhÝ’è - GX_SetGraphicsMode (GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_3D); - GX_SetVisiblePlane (GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - - //---- 3D‰Šú‰» - G3X_Init(); - G3X_InitMtxStack(); - G2_SetBG0Priority(3); - G3X_AlphaTest(FALSE, 0); - G3X_AntiAlias(TRUE); - G3X_EdgeMarking(FALSE); - G3X_SetFog(FALSE, (GXFogBlend)0, (GXFogSlope)0, 0); - G3X_SetClearColor(0, 0, 0x7fff, 63, FALSE); - G3_ViewPort(0, 0, 255, 191); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - - //---- 32KƒoƒCƒg‚ÌOBJ‚Å2Dƒ}ƒbƒvƒ‚[ƒh‚ÅŽg—p - GX_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_2D); - - // ƒXƒNƒŠ[ƒ“ƒIƒtƒZƒbƒg‹y‚уLƒƒƒ‰ƒNƒ^[ƒIƒtƒZƒbƒg‚ÌÝ’è - GX_SetBGScrOffset(GX_BGSCROFFSET_0x00000); - GX_SetBGCharOffset(GX_BGCHAROFFSET_0x10000); - - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x00000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x2000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2_BG1Mosaic(FALSE); - G2S_BG1Mosaic(FALSE); - - //---- ƒf[ƒ^ƒ[ƒh - GX_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBG1Char( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBGPltt ( PlttDataMain, 0, sizeof(PlttDataMain)); - GX_LoadBG1Scr ( BgScDataMain, 0, sizeof(BgScDataMain)); - GX_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GXS_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBG0Char( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBGPltt ( PlttDataSub, 0, sizeof(PlttDataSub)); - GXS_LoadBG0Scr ( BgScDataSub, 0, sizeof(BgScDataSub)); - GXS_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GX_DispOn(); - GXS_DispOn(); -} - -/*---------------------------------------------------------------------------* - Name: DrawLine - - Description: ŽOŠpƒ|ƒŠƒSƒ“‚Åü‚ð•`‰æ - - Arguments: sx - •`‰æ‚·‚éü‚ÌŠJŽn“_‚Ì‚˜À•W - sy - •`‰æ‚·‚éü‚ÌŠJŽn“_‚Ì‚™À•W - ex - •`‰æ‚·‚éü‚ÌI“_‚Ì‚˜À•W - ey - •`‰æ‚·‚éü‚ÌI“_‚Ì‚™À•W - color - •`‰æ‚·‚éü‚ÌF - - Returns: None. - *---------------------------------------------------------------------------*/ -void -DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color) -{ - fx16 fsx = (fx16)(((sx - 128) * 0x1000) / 128); - fx16 fsy = (fx16)(((96 - sy) * 0x1000) / 96); - fx16 fex = (fx16)(((ex - 128) * 0x1000) / 128); - fx16 fey = (fx16)(((96 - ey) * 0x1000) / 96); - - G3_Begin(GX_BEGIN_TRIANGLES); - { - G3_Color( color ); - G3_Vtx(fsx, fsy, 0); - G3_Color( color ); - G3_Vtx(fex, fey, 0); - G3_Color( color ); - G3_Vtx(fsx, fsy, 1); - } - G3_End(); -} - -/*---------------------------------------------------------------------------* - Name: DrawQuad - - Description: ŽlŠpƒ|ƒŠƒSƒ“‚ð•`‰æ - - Arguments: sx - •`‰æ‚·‚éü‚ÌŠJŽn“_‚Ì‚˜À•W - sy - •`‰æ‚·‚éü‚ÌŠJŽn“_‚Ì‚™À•W - ex - •`‰æ‚·‚éü‚ÌI“_‚Ì‚˜À•W - ey - •`‰æ‚·‚éü‚ÌI“_‚Ì‚™À•W - color - •`‰æ‚·‚éü‚ÌF - - Returns: None. - *---------------------------------------------------------------------------*/ -void -DrawQuad(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color) -{ - fx16 fsx = (fx16)(((sx - 128) * 0x1000) / 128); - fx16 fsy = (fx16)(((96 - sy) * 0x1000) / 96); - fx16 fex = (fx16)(((ex - 128) * 0x1000) / 128); - fx16 fey = (fx16)(((96 - ey) * 0x1000) / 96); - - G3_Begin(GX_BEGIN_QUADS); - { - G3_Color( color ); - G3_Vtx(fsx, fsy, 0); - - G3_Color( color ); - G3_Vtx(fex, fsy, 0); - - G3_Color( color ); - G3_Vtx(fex, fey, 0); - - G3_Color( color ); - G3_Vtx(fsx, fey, 0); - } - G3_End(); -} - diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/hw_info.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/hw_info.c deleted file mode 100644 index ed50cbac..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/hw_info.c +++ /dev/null @@ -1,147 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - SystemUpdater - File: hw_info.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include "kami_font.h" -#include "kami_pxi.h" -#include "hwi.h" -#include "hw_info.h" -// -#include "TWLHWInfo_api.h" -#include "TWLSettings_api.h" -// -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”錾 - *---------------------------------------------------------------------------*/ - -BOOL WriteHWNormalInfoFile( void ); -BOOL WriteHWSecureInfoFile( u8 region ); -BOOL DeleteHWInfoFile( void ); - -/*---------------------------------------------------------------------------* - Name: HWî•ñ‘S‘̂̃‰ƒCƒg - - Description: - - Arguments: region : - - Returns: None. - *---------------------------------------------------------------------------*/ - -BOOL WriteHWInfoFile( u8 region, BOOL wirelessForceOff ) -{ - static const char *pMsgSecureWriting = "Writing Secure File..."; - static const char *pMsgNormalWriting = "Writing Normal File..."; - static const char *pMsgSignWriting = "Writing Sign File..."; - static const char *pMsgSucceeded = "Success!\n"; - static const char *pMsgFailed = "Failed!\n"; - u32 installedSoftBoxCount = 0; - BOOL result = TRUE; - - // ƒZƒLƒ…ƒAƒtƒ@ƒCƒ‹‚̃‰ƒCƒg - if( HWI_WriteHWSecureInfoFile( region, NULL, wirelessForceOff ) ) { // ‚Ƃ肠‚¦‚¸–³ü‚Í—LŒø‚ÅB -// kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - // ƒm[ƒ}ƒ‹ƒtƒ@ƒCƒ‹‚̃‰ƒCƒg(ˆÚs‰Â”\‚ȃ†ƒj[ƒNID‚Ì‚½‚߂ɃZƒLƒ…ƒAƒtƒ@ƒCƒ‹‚ÌŒã‚Å‘‚«ž‚Þj - if( HWI_WriteHWNormalInfoFile() ) { -// kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - // HWID–¼ƒtƒ@ƒCƒ‹‚̃‰ƒCƒg - if( HWI_WriteHWIDSignFile() ) { -// kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - // CFGƒf[ƒ^‚ÌC³ - if (!HWI_ModifyLanguage( region )) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "Fail! Write TWLSettings\n" ); - result = FALSE; - } - - return result; -} - -/*---------------------------------------------------------------------------* - Name: HWInfoƒtƒ@ƒCƒ‹‚Ìíœ - - Description: - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ - -BOOL DeleteHWInfoFile( void ) -{ - static const char *pMsgNormalDeleting = "Deleting Normal File..."; - static const char *pMsgSecureDeleting = "Deteting Secure File..."; - static const char *pMsgSucceeded = "Success!\n"; - static const char *pMsgFailed = "Failed!\n"; - BOOL result = TRUE; - - // ƒm[ƒ}ƒ‹ƒtƒ@ƒCƒ‹ - kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgNormalDeleting ); - if( HWI_DeleteHWNormalInfoFile() ) { - OS_TPrintf( "%s delete succeeded.\n", (char *)LCFG_TWL_HWINFO_NORMAL_PATH ); - kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - OS_TPrintf( "%s delete failed.\n", (char *)LCFG_TWL_HWINFO_NORMAL_PATH ); - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - // ƒZƒLƒ…ƒAƒtƒ@ƒCƒ‹ - kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSecureDeleting ); - if( HWI_DeleteHWSecureInfoFile() ) { - OS_TPrintf( "%s delete succeeded.\n", (char *)LCFG_TWL_HWINFO_SECURE_PATH ); - kamiFontPrintfConsoleEx(CONSOLE_ORANGE, pMsgSucceeded ); - }else { - OS_TPrintf( "%s delete failed.\n", (char *)LCFG_TWL_HWINFO_SECURE_PATH ); - kamiFontPrintfConsoleEx(CONSOLE_RED, pMsgFailed ); - result = FALSE; - } - - return result; -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/import.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/import.c deleted file mode 100644 index b422e173..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/import.c +++ /dev/null @@ -1,194 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: process_import.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include -#include "kami_font.h" -#include "import.h" -#include "hw_info.h" -#include "TWLHWInfo_api.h" -#include "graphics.h" - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define THREAD_STACK_SIZE (16*1024) - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static u32 sCurrentProgress; -static vu8 sNowImport = FALSE; -static vu8 sProgress = FALSE; -static u8 sStack[THREAD_STACK_SIZE]; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”錾 - *---------------------------------------------------------------------------*/ - -static void ProgressThread(void* arg); -static void Destructor(void* arg); -void ProgressDraw(f32 ratio); - -/*---------------------------------------------------------------------------* - ˆ—ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: kamiImportTad - - Description: .tad ƒtƒ@ƒCƒ‹ƒCƒ“ƒ|[ƒg - - Arguments: no - - Returns: None. - *---------------------------------------------------------------------------*/ - -s32 kamiImportTad(int no, int total, const char* path) -{ - NAMTadInfo tadInfo; - OSThread thread; - s32 nam_result; - - kamiFontPrintfMain( 4, 9, 8, "Now Updating... %d / %d", no, total ); - kamiFontLoadScreenData(); - - // tadƒtƒ@ƒCƒ‹‚Ìî•ñŽæ“¾ - nam_result = NAM_ReadTadInfo(&tadInfo, path); - if ( nam_result != NAM_OK ) - { - return nam_result; - } - - // ES‚ÌŽd—l‚Ō¢ e-ticket ‚ª‚ ‚邯V‚µ‚¢ e-ticket ‚ðŽg‚Á‚½ƒCƒ“ƒ|[ƒg‚ª‚Å‚«‚È‚¢ - // Žb’è‘Ήž‚Æ‚µ‚ÄŠY“–ƒ^ƒCƒgƒ‹‚ðŠ®‘S휂µ‚Ä‚©‚çƒCƒ“ƒ|[ƒg‚·‚é - nam_result = NAM_DeleteTitleCompletely(tadInfo.titleInfo.titleId); - if ( nam_result != NAM_OK ) - { - kamiFontPrintfConsole(CONSOLE_RED, "Fail! RetCode=%x\n", nam_result); - return FALSE; - } - - // ƒCƒ“ƒ|[ƒgŠJŽnƒtƒ‰ƒO‚ð—§‚Ä‚é - sNowImport = TRUE; - - // i’»ƒXƒŒƒbƒhì¬ - MI_CpuClear8(sStack, THREAD_STACK_SIZE); - OS_CreateThread(&thread, ProgressThread, NULL, - (void*)((u32)sStack + THREAD_STACK_SIZE), THREAD_STACK_SIZE, OS_GetCurrentThread()->priority - 1); - OS_WakeupThreadDirect(&thread); - - // ImportŠJŽn - nam_result = NAM_ImportTad( path ); - - // ƒCƒ“ƒ|[ƒgŠJŽnƒtƒ‰ƒO‚ð‰º‚°‚é - sNowImport = FALSE; - - // i’»ƒXƒŒƒbƒh‚ÌŽ©—ÍI—¹‚ð‘Ò‚Â - while (sProgress){}; - - // InstalledSoftBoxCount, FreeSoftBoxCount ‚Ì’l‚ðŒ»Ý‚ÌNAND‚Ìó‘Ԃɇ‚킹‚ÄXV‚µ‚Ü‚·B - (void)NAMUT_UpdateSoftBoxCount(); - - return nam_result; -} - -/*---------------------------------------------------------------------------* - Name: ProgressThread - - Description: .tad ƒtƒ@ƒCƒ‹ƒCƒ“ƒ|[ƒg‚Ìi’»‚ð•\ަ‚·‚éƒXƒŒƒbƒhB - i’»‚ª100%‚É’B‚·‚邯ˆ—‚𔲂¯‚éB - - Arguments: arg - Žg—p‚µ‚È‚¢B - - Returns: None. - *---------------------------------------------------------------------------*/ - -static void ProgressThread(void* /*arg*/) -{ - u32 currentSize; - u32 totalSize = 0; - u32 totalSizeBk = 0; - - sProgress = TRUE; - - while (sNowImport) - { - NAM_GetProgress(¤tSize, &totalSize); - - if ((totalSize > 0 && totalSize == currentSize) || totalSizeBk > totalSize) - { - // Šù‚ɃCƒ“ƒ|[ƒg‚ªI—¹ - ProgressDraw((f32)1.0); - break; - } - else if (totalSize > 0) - { - ProgressDraw((f32)currentSize/totalSize); - } - - totalSizeBk = totalSize; - - // Vƒuƒ‰ƒ“ƒN‘Ò‚¿ - OS_WaitVBlankIntr(); - } - - sProgress = FALSE; -} - -/*---------------------------------------------------------------------------* - Name: ProgressDraw - - Description: ƒCƒ“ƒ|[ƒg‚Ìi’»‚ð•\ަ‚µ‚Ü‚· - - Arguments: - - Returns: None. - *---------------------------------------------------------------------------*/ - -void ProgressDraw(f32 ratio) -{ - s16 x = (s16)(30 + (226 - 30)*ratio); - - // 3D‰Šú‰» - G3X_Reset(); - G3_Identity(); - G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0); - - // ƒOƒŠ[ƒ“ƒo[ - DrawQuad( 30, 90, x, 95, GX_RGB(12, 25, 12)); - - // ƒOƒŒ[ƒo[ - DrawQuad( 30, 90, 226, 95, GX_RGB(28, 28, 28)); - - // ƒOƒŒ[ƒ_ƒCƒAƒƒO - DrawQuad( 20, 60, 236, 110, GX_RGB(25, 25, 25)); - - // 3DƒXƒƒbƒv - G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_copy_file.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_copy_file.c deleted file mode 100644 index c9365276..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_copy_file.c +++ /dev/null @@ -1,105 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_copy_file.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include "kami_font.h" -#include "kami_copy_file.h" - -/*---------------------------------------------------------------------------* - ƒ}ƒNƒ - *---------------------------------------------------------------------------*/ - -#define ROUND_UP(value, alignment) \ - (((u32)(value) + (alignment-1)) & ~(alignment-1)) - -/*---------------------------------------------------------------------------* - ˆ—ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -BOOL kamiCopyFile(char* srcPath, char* dstPath) -{ - FSFile file; - BOOL open_is_ok; - BOOL read_is_ok; - void* pTempBuf; - u32 file_size; - u32 alloc_size; - BOOL result = TRUE; - - // ROMƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ - FS_InitFile(&file); - open_is_ok = FS_OpenFile(&file, srcPath); - if (!open_is_ok) - { - OS_Printf("FS_OpenFile(\"%s\") ... ERROR!\n", srcPath); - return FALSE; - } - - // ROMƒtƒ@ƒCƒ‹ƒŠ[ƒh - file_size = FS_GetFileLength(&file) ; - alloc_size = ROUND_UP(file_size, 32) ; - pTempBuf = OS_Alloc( alloc_size ); - SDK_NULL_ASSERT(pTempBuf); - DC_InvalidateRange(pTempBuf, alloc_size); - read_is_ok = FS_ReadFile( &file, pTempBuf, (s32)file_size ); - if (!read_is_ok) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_ReadFile(\"%s\") ... ERROR!\n", srcPath); - FS_CloseFile(&file); - OS_Free(pTempBuf); - return FALSE; - } - - // ROMƒtƒ@ƒCƒ‹ƒNƒ[ƒY - FS_CloseFile(&file); - - // ˆê’U‘ÎÛƒf[ƒ^‚ð휂·‚é - (void)FS_DeleteFile(dstPath); - - // ƒ^[ƒQƒbƒgƒtƒ@ƒCƒ‹ì¬ - if (!FS_CreateFile(dstPath, FS_PERMIT_R | FS_PERMIT_W)) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_CreateFile(%s) failed.\n", dstPath); - result = FALSE; - } - else - { - // ƒ^[ƒQƒbƒgƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ - FS_InitFile(&file); - open_is_ok = FS_OpenFileEx(&file, dstPath, FS_FILEMODE_W); - if (!open_is_ok) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_OpenFile(%s) failed.\n", dstPath); - result = FALSE; - } - // nand:sys/TWLFontTable.dat‘‚«ž‚Ý - else if (FS_WriteFile(&file, pTempBuf, (s32)file_size) == -1) - { - kamiFontPrintfConsoleEx(CONSOLE_RED, "FS_WritFile() failed.\n"); - result = FALSE; - } - (void)FS_CloseFile(&file); - } - - OS_Free(pTempBuf); - - return result; -} - diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_font.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_font.c deleted file mode 100644 index fb3818b6..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_font.c +++ /dev/null @@ -1,407 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "kami_font.h" - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define SCREEN_DATA_COLOR_PLTT_SHIFT 12 -#define NUM_OF_PRINT_TARGET 2 - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static u8 sXPos; -static u8 sYPos; - -static u32 sBackColorCharData[24*8]; - -static u16 sFontScreenDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sFontScreenDataSub[24*32] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sBackColorScreenData[32 * 24] = { - 0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de, - 0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df, - 0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0, - 0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1, - 0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2, - 0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3, - 0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4, - 0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5, - 0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6, - 0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7, - 0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8, - 0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9, - 0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea, - 0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb, - 0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec, - 0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed, - 0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee, - 0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef, - 0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0, - 0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1, - 0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2, - 0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3, - 0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4, - 0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5, -}; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”錾 - *---------------------------------------------------------------------------*/ - -static void kamiFontReturnConsole( void ); - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontInit(void) -{ - // ”wŒi—pƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^ - MI_CpuCopy32( &sampleCharData[8 * 0xde], sBackColorCharData, sizeof(sBackColorCharData) ); - - // ”wŒi—pƒXƒNƒŠ[ƒ“ƒf[ƒ^ƒZƒbƒg - DC_FlushRange ( sBackColorScreenData, sizeof(sBackColorScreenData) ); - GXS_LoadBG1Scr ( sBackColorScreenData, 0, sizeof(sBackColorScreenData) ); -} - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontLoadScreenData(void) -{ - DC_FlushRange ( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); - GX_LoadBG0Scr ( sFontScreenDataMain, 0, sizeof(sFontScreenDataMain) ); - - DC_FlushRange ( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); - GXS_LoadBG0Scr ( sFontScreenDataSub, 0, sizeof(sFontScreenDataSub) ); - - // ”wŒiƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‘‚«Š·‚¦ - DC_FlushRange( sBackColorCharData, sizeof(sBackColorCharData) ); - GXS_LoadBG0Char( sBackColorCharData, 0xde*32, sizeof(sBackColorCharData) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClear - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚ðƒNƒŠƒA‚·‚é - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClear(void) -{ - MI_CpuClear8( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClearMain - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚ðƒNƒŠƒA‚·‚é - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClearMain(void) -{ - MI_CpuClear8( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í32•¶Žš‚Ü‚ÅB - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataSub[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í32•¶Žš‚Ü‚ÅB - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataMain[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontFillChar - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - value - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontFillChar(int lineNo, u8 color1, u8 color2) -{ - s32 i; - u32 line; - int charNo = 0xde + lineNo; - - if (color1 < 0x10) - { - line = (u32)(0x11111111 * color1); - - for (i = 0;i<4; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } - - if (color2 < 0x10) - { - line = (u32)(0x11111111 * color2); - - for (i = 4;i<8; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsole - - Description: ‰¼‘zƒRƒ“ƒ\[ƒ‹‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í256•¶Žš‚Ü‚ÅB - - Arguments: color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsole(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - // I’[’ljÁ - *(u16 *)(&temp[256]) = 0x0000; - - for(i=0; temp[i] != 0x00; i++) - { - if (temp[i] == 0x0A) - { - // ‰üsƒR[ƒh - kamiFontReturnConsole(); - } - else - { - // ˆê•¶Žš‚¸‚‘‚«ž‚Ý - sFontScreenDataMain[((sYPos * 32) + sXPos) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - - // XÀ•W‚ª‰E’[‚É“ž’B‚µ‚½ê‡‚͉üsˆ— - if (++sXPos >= 32) - { - kamiFontReturnConsole(); - } - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsoleEx - - Description: ‰¼‘zƒRƒ“ƒ\[ƒ‹‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í256•¶Žš‚Ü‚ÅB - OS_Printf‚à‚‚¢‚łɎÀs‚·‚éB - - Arguments: color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsoleEx(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - kamiFontPrintfConsole(color, temp); - OS_TPrintf(temp); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontReturnConsole - - Description: ‰¼‘zƒRƒ“ƒ\[ƒ‹‚É‚¨‚¯‚é‰üsˆ—‚ðs‚¤ - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -kamiFontReturnConsole( void ) -{ - sXPos = 0; - if (sYPos < 23) - { - // ŽŸ‚Ìs‚Ö - sYPos++; - } - else - { - // Šù‚ÉÅIs‚É“ž’B‚µ‚Ä‚¢‚éꇃVƒtƒg‚ðs‚¤ - MI_CpuCopy32( &sFontScreenDataMain[32], sFontScreenDataMain, sizeof(u16)*32*23 ); - MI_CpuClear32( &sFontScreenDataMain[32*23], sizeof(u16)*32); - } -} - diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_pxi.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_pxi.c deleted file mode 100644 index f3ce7f2a..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_pxi.c +++ /dev/null @@ -1,370 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "kami_pxi.h" -#include "fifo.h" - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -// ‹l‚߂ăRƒs[‚·‚é -#define KAMI_PACK_U16(d, s) \ - ((d)[0] = (u8)((*((u16*)s) >> 0) & 0xFF), \ - (d)[1] = (u8)((*((u16*)s) >> 8) & 0xFF)) - -#define KAMI_PACK_U32(d, s) \ - ((d)[0] = (u8)((*((u32*)s) >> 0) & 0xFF), \ - (d)[1] = (u8)((*((u32*)s) >> 8) & 0xFF), \ - (d)[2] = (u8)((*((u32*)s) >> 16) & 0xFF), \ - (d)[3] = (u8)((*((u32*)s) >> 24) & 0xFF)) - - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ -typedef struct KamiWork -{ - BOOL lock; - - KamiCommand command; - KAMIPxiResult result; - KAMICallback callback; - void* arg; - - u32 total; - u32 current; - u8* data; -} -KamiWork; - -/*---------------------------------------------------------------------------* - ÓI•Ï”’è‹` - *---------------------------------------------------------------------------*/ -static BOOL kamiInitialized; -static KamiWork kamiWork; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static BOOL KamiSendPxiCommand(KamiCommand command, u8 size, u8 data); -static void KamiSendPxiData(u8 *pData); -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err); -static void KamiDone(KAMIResult result); -static void KamiWaitBusy(void); - - -void KamiPxiInit( void ) -{ - kamiWork.lock = FALSE; - - PXI_Init(); - while ( !PXI_IsCallbackReady(PXI_FIFO_TAG_KAMITEST, PXI_PROC_ARM7 )) - { - } - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_KAMITEST, KamiPxiCallback); - if ( 0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, KAMITEST_PXI_START_BIT | (KAMI_TEST_COMMAND << KAMITEST_PXI_COMMAND_SHIFT), 0)) - { - return; - } -} - -/*---------------------------------------------------------------------------* - Name: ƒtƒH[ƒ}ƒbƒgŽÀsŠÖ” - - Description: - - Arguments: FormatMode - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback) -{ - OSIntrMode enabled; - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = callback; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_EXE_FORMAT, 1, format_mode) == FALSE) - { - return KAMI_RESULT_SEND_ERROR; - } - return KAMI_RESULT_SUCCESS; -} - -/*---------------------------------------------------------------------------* - Name: NANDƒAƒNƒZƒXŠÖ” - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - // ƒf[ƒ^ì¬ - KAMI_PACK_U32(&data[0], &block); - KAMI_PACK_U32(&data[4], &buffer); - KAMI_PACK_U32(&data[8], &count); - - if (KamiSendPxiCommand(KAMI_NAND_IO, 12, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiClearNandErrorLog - - Description: NVRAM‚ÌNANDƒGƒ‰[î•ñ‚ðƒNƒŠƒA‚µ‚Ü‚·B - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiClearNandErrorLog( void ) -{ - OSIntrMode enabled; - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_CLEAR_NAND_ERRORLOG, 0, (u8)0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiGetIsToolType - - Description: IS-TWL-DEBUGGER or CAPTURE ‚ðŽæ“¾‚µ‚Ü‚·i“¯Šú”Åj - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiGetIsToolType( IsToolType *pType ) -{ - OSIntrMode enabled; - - if (pType == NULL) - { - return KAMI_RESULT_INVALID_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = (u8*)pType; - (void)OS_RestoreInterrupts(enabled); - - if (KamiSendPxiCommand(KAMI_GET_IS_TOOL_TYPE, 0, 0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - PXIŠÖ˜A - *---------------------------------------------------------------------------*/ - -static BOOL KamiSendPxiCommand(KamiCommand command, u8 size, u8 data) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - ((size << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((data << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - return FALSE; - } - return TRUE; -} - -static void KamiSendPxiData(u8 *pData) -{ - u32 pxiData = (u32)((pData[0] << 16) | (pData[1] << 8) | pData[2]); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } -} - -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused( tag ) - if (err) - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - if (data & KAMITEST_PXI_START_BIT) // 擪ƒf[ƒ^ - { - if (data & KAMITEST_PXI_RESULT_BIT) - { - kamiWork.total = (u8)((data & KAMITEST_PXI_DATA_NUMS_MASK) >> KAMITEST_PXI_DATA_NUMS_SHIFT); - kamiWork.current = 0; - kamiWork.command = (KamiCommand)((data & KAMITEST_PXI_COMMAND_MASK) >> KAMITEST_PXI_COMMAND_SHIFT); - kamiWork.result = (KAMIPxiResult)((data & KAMITEST_PXI_1ST_DATA_MASK) >> KAMITEST_PXI_1ST_DATA_SHIFT); - } - else // –¢’m‚̃f[ƒ^ - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - } - else // Œã‘±ƒf[ƒ^ - { - if (kamiWork.data == NULL) - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0xFF0000) >> 16); - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0x00FF00) >> 8); - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0x0000FF) >> 0); - } - } - if (kamiWork.current == kamiWork.total-1) - { - KAMIResult result; - switch (kamiWork.result) - { - case KAMI_PXI_RESULT_SUCCESS: // alias KAMI_PXI_RESULT_SUCCESS_TRUE - result = KAMI_RESULT_SUCCESS; // alias KAMI_RESULT_SUCCESS_TRUE - break; - case KAMI_PXI_RESULT_SUCCESS_FALSE: - result = KAMI_RESULT_SUCCESS_FALSE; - break; - case KAMI_PXI_RESULT_INVALID_COMMAND: - result = KAMI_RESULT_INVALID_COMMAND; - break; - case KAMI_PXI_RESULT_INVALID_PARAMETER: - result = KAMI_RESULT_INVALID_PARAMETER; - break; - case KAMI_PXI_RESULT_ILLEGAL_STATUS: - result = KAMI_RESULT_ILLEGAL_STATUS; - break; - case KAMI_PXI_RESULT_BUSY: - result = KAMI_RESULT_BUSY; - break; - default: - result = KAMI_RESULT_FATAL_ERROR; - } - KamiDone(result); - return; - } -} - -extern void PXIi_HandlerRecvFifoNotEmpty(void); -static void KamiWaitBusy(void) -{ - volatile BOOL *p = &kamiWork.lock; - - while (*p) - { - if (OS_GetCpsrIrq() == OS_INTRMODE_IRQ_DISABLE) - { - PXIi_HandlerRecvFifoNotEmpty(); - } - } -} - -static void KamiDone(KAMIResult result) -{ - KAMICallback callback = kamiWork.callback; - void* arg = kamiWork.arg; - kamiWork.callback = NULL; - kamiWork.arg = NULL; - if (kamiWork.lock) - { - kamiWork.lock = FALSE; - } - if (callback) - { - callback(result, arg); - } -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_write_nandfirm.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_write_nandfirm.c deleted file mode 100644 index cac9c5ee..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/kami_write_nandfirm.c +++ /dev/null @@ -1,332 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_write_nandfirm.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include "kami_font.h" -#include "kami_pxi.h" - -#include -#include "kami_write_nandfirm.h" - -/*---------------------------------------------------------------------------* - ƒ}ƒNƒ’è‹` - *---------------------------------------------------------------------------*/ - -// NANDƒtƒ@[ƒ€‘‚«ž‚Ý‚ÌÛ‚ÉNVRAM‚Ì–¢Š„‚è“–‚ė̈æ{—\–ñ—̈æ‚ð‚OƒNƒŠƒA‚·‚éꇂ͒è‹`‚µ‚Ü‚·iŠJ”­—pj -//#define CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define NAND_BLOCK_BYTE 0x200 -#define NAND_FIRM_START_OFFSET 0x200 -#define NAND_FIRM_START_OFFSET_IN_FILE 0x200 - -#define NVRAM_PAGE_SIZE 0x100 -#define NVRAM_NORFIRM_RESERVED_ADDRESS 0x200 -#define NVRAM_NORFIRM_NANDBOOT_FLAG_OFFSET 0xff -#define NVRAM_NORFIRM_NANDBOOT_FLAG 0x80 - -#define NVRAM_NON_ASIGNED_AREA_ADDRESS 0x300 - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static u8 sNvramPageSizeBuffer[NVRAM_PAGE_SIZE] ATTRIBUTE_ALIGN(32); // ARM7‚©‚çƒAƒNƒZƒX‚·‚邽‚߃Xƒ^ƒbƒN‚Å‚Í‘Ê–Ú -static u32 sReservedAreaEndAddress; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -void kamiEraseNandfirmVersion( u32 nandfirmsize ); - -/*---------------------------------------------------------------------------* - Name: kamiWriteNandfirm - - Description: - - Arguments: no - - Returns: None. - *---------------------------------------------------------------------------*/ -BOOL kamiWriteNandfirm(const char* pFullPath, NAMAlloc allocFunc, NAMFree freeFunc) -{ - FSFile file; - - BOOL open_is_ok; - BOOL read_is_ok; - u8* pTempBuf; - u32 file_size; - u32 nandfirm_size; - u32 alloc_size; - u32 write_block; - BOOL result = TRUE; - u16 crc_w1, crc_w2; - u16 crc_r1, crc_r2; - u16 crc_norfirm_reserved_area_w, crc_norfirm_reserved_area_r; -#ifdef CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL - u32 write_offset; -#endif // CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL - - // .nandƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ - FS_InitFile(&file); - open_is_ok = FS_OpenFile(&file, pFullPath); - if (!open_is_ok) - { - OS_Warning("Failure! FS_OpenFile"); - return FALSE; - } - - // ƒTƒCƒYƒ`ƒFƒbƒN - file_size = FS_GetFileLength(&file) ; - if (file_size > (800*1024)) - { - kamiFontPrintfConsoleEx(1, "too big file size!\n"); - FS_CloseFile(&file); - return FALSE; - } - - nandfirm_size = file_size - NAND_FIRM_START_OFFSET_IN_FILE; - - // ƒoƒbƒtƒ@Šm•Û - // ‘‚«ž‚Ý‚ªƒuƒƒbƒN’PˆÊ(512byte)‚Å‚ ‚邱‚Æ‚ðl—¶‚µ512ƒAƒ‰ƒCƒƒ“ƒg‚ðŠm•Û - alloc_size = MATH_ROUNDUP(file_size, 512); - pTempBuf = allocFunc( alloc_size ); - if (pTempBuf == NULL) - { - kamiFontPrintfConsoleEx(1, "Fail Alloc()!\n"); - FS_CloseFile(&file); - return FALSE; - } - - MI_CpuClear8( pTempBuf, alloc_size ); - - // .nandƒtƒ@ƒCƒ‹ƒŠ[ƒh - DC_FlushRange(pTempBuf, alloc_size); - read_is_ok = FS_ReadFile( &file, pTempBuf, (s32)file_size ); - DC_FlushRange(pTempBuf, file_size); - if (!read_is_ok) - { - kamiFontPrintfConsoleEx(1, "Fail FS_ReadFile!\n"); - FS_CloseFile(&file); - freeFunc(pTempBuf); - return FALSE; - } - - // ƒtƒ@ƒCƒ‹ƒNƒ[ƒY - FS_CloseFile(&file); - - // ‘‚«ž‚Ý‘O‚ÌCRC‚ðŒvŽZ - crc_w1 = SVC_GetCRC16( 0xffff, pTempBuf, sizeof(NORHeaderDS) ); - crc_w2 = SVC_GetCRC16( 0xffff, pTempBuf+NAND_FIRM_START_OFFSET_IN_FILE, nandfirm_size ); - - // ‚Ü‚¸NORHeaderDS—̈æ‚ð‘‚«ž‚Þi40byte?j - if (NVRAMi_Write(0, sizeof(NORHeaderDS), (void*)pTempBuf) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } - - // CRC‚ðŒvŽZ‚·‚é‚̂ŔO‚Ì‚½‚߂ɃNƒŠƒA‚µ‚Ä‚©‚烊[ƒh‚·‚é - MI_CpuClear8( pTempBuf, sizeof(NORHeaderDS) ); - DC_FlushRange(pTempBuf, sizeof(NORHeaderDS)); - - // CRCƒ`ƒFƒbƒN‚Ì‚½‚ßNvram‚©‚烊[ƒh - if (NVRAMi_Read(0, sizeof(NORHeaderDS), pTempBuf) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()!\n"); - } - DC_FlushRange(pTempBuf, sizeof(NORHeaderDS)); - - // ‘‚«ž‚ÝŒã‚ÌCRC‚ðŒvŽZ - crc_r1 = SVC_GetCRC16( 0xffff, pTempBuf, sizeof(NORHeaderDS) ); - - // NVRAM擪•”•ª‚ÌCRC”äŠr - if ( crc_w1 != crc_r1 ) - { - freeFunc(pTempBuf); - kamiFontPrintfConsoleEx(1, "Fail! CRC check %x!=%x\n", crc_w1, crc_r1); - return FALSE; - } - - // nandfirm ‹N“®ƒtƒ‰ƒO‚ð—§‚Ä‚é - MI_CpuClear8( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - sNvramPageSizeBuffer[NVRAM_NORFIRM_NANDBOOT_FLAG_OFFSET] = NVRAM_NORFIRM_NANDBOOT_FLAG; - DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE); - - // NORƒtƒ@[ƒ€ƒŠƒU[ƒu—̈æ‚Ì‘‚«ž‚݃f[ƒ^‚ÌCRC‚ðŒvŽZ - crc_norfirm_reserved_area_w = SVC_GetCRC16( 0xffff, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - if (NVRAMi_Write(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } - - // CRC‚ðŒvŽZ‚·‚é‚̂ŔO‚Ì‚½‚߂ɃNƒŠƒA‚µ‚Ä‚©‚烊[ƒh‚·‚é - MI_CpuClear8( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - // “ǂݞ‚Ý‚ÍARM7‚ª’¼Úƒƒ‚ƒŠ‚É‘‚«o‚·‚½‚ß - DC_FlushRange(sNvramPageSizeBuffer, NVRAM_PAGE_SIZE); - - if (NVRAMi_Read(NVRAM_NORFIRM_RESERVED_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n"); - result = FALSE; - } - - // ‘‚«ž‚ÝŒã‚ÌCRC‚ðŒvŽZ - DC_FlushRange(sNvramPageSizeBuffer, NVRAM_PAGE_SIZE); - crc_norfirm_reserved_area_r = SVC_GetCRC16( 0xffff, sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - // NORƒtƒ@[ƒ€ƒŠƒU[ƒu—̈æ‚ÌCRC”äŠr - if ( crc_norfirm_reserved_area_w != crc_norfirm_reserved_area_r ) - { - kamiFontPrintfConsoleEx(1, "Fail! Norfirm Reserved Area CRC check %x!=%x\n", crc_norfirm_reserved_area_w, crc_norfirm_reserved_area_r); - result = FALSE; - } - -#ifdef CLEAR_NON_ASIGNED_AREA_AND_RESERVED_AREA_ALL - DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - // –¢Š„‚è“–‚ė̈æ{—\–ñ—̈æ‚ð‚OƒNƒŠƒA‚µ‚Ü‚·iŠJ”­—pj - if (NVRAMi_Read(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_PAGE_SIZE, &sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n"); - result = FALSE; - } - sReservedAreaEndAddress = (u32)(*(u16 *)sNvramPageSizeBuffer << NVRAM_CONFIG_DATA_OFFSET_SHIFT) - 0xA00;// TWL WiFiÝ’è + NTR WiFiÝ’è ‚ð·‚µˆø‚­ - //OS_Printf("end = %x\n", sReservedAreaEndAddress); - - MI_CpuFill8( sNvramPageSizeBuffer, 0x00, NVRAM_PAGE_SIZE ); - DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - for (write_offset=NVRAM_NON_ASIGNED_AREA_ADDRESS; write_offset < sReservedAreaEndAddress; write_offset += NVRAM_PAGE_SIZE) - { - if (NVRAMi_Write(write_offset, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } - } - //OS_Printf("write_offset = %x\n", write_offset); -#else - // –¢Š„‚è“–‚Ä—Ìˆææ“ª256byte{—\–ñ—̈æ‚ð‚OƒNƒŠƒA‚µ‚Ü‚· - - MI_CpuFill8( sNvramPageSizeBuffer, 0x00, NVRAM_PAGE_SIZE ); - DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - if (NVRAMi_Write(NVRAM_NON_ASIGNED_AREA_ADDRESS, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } - - DC_InvalidateRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - if (NVRAMi_Read(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_PAGE_SIZE, &sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Read()\n"); - result = FALSE; - } - sReservedAreaEndAddress = (u32)(*(u16 *)sNvramPageSizeBuffer << NVRAM_CONFIG_DATA_OFFSET_SHIFT) - 0xA00;// TWL WiFiÝ’è + NTR WiFiÝ’è ‚ð·‚µˆø‚­ - - MI_CpuFill8( sNvramPageSizeBuffer, 0x00, NVRAM_PAGE_SIZE ); - DC_FlushRange( sNvramPageSizeBuffer, NVRAM_PAGE_SIZE ); - - if (NVRAMi_Write(sReservedAreaEndAddress - 0x100, NVRAM_PAGE_SIZE, sNvramPageSizeBuffer) != NVRAM_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail NVRAMi_Write()\n"); - result = FALSE; - } -#endif - - // NANDƒƒOî•ñ‚̃NƒŠƒA - if (kamiClearNandErrorLog() != KAMI_RESULT_SUCCESS) - { - kamiFontPrintfConsoleEx(1, "Fail kamiClearNandErrorLog()\n"); - result = FALSE; - } - - // nandfirmƒo[ƒWƒ‡ƒ“‚ÌÁ‹ŽiƒfƒoƒbƒO—pj - kamiEraseNandfirmVersion(nandfirm_size); - -// kamiFontPrintfConsoleEx(0, "NAND Firm Import Start!\n"); - - // NAND‘‚«ž‚Ý - write_block = nandfirm_size/NAND_BLOCK_BYTE + (nandfirm_size % NAND_BLOCK_BYTE != 0); - kamiNandWrite( NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE, pTempBuf+NAND_FIRM_START_OFFSET, write_block ); // ƒuƒƒbƒN’PˆÊAƒoƒCƒg’PˆÊAƒuƒƒbƒN’PˆÊ - kamiFontLoadScreenData(); - - // CRC‚ðŒvŽZ‚·‚é‚̂ŔO‚Ì‚½‚߂ɃNƒŠƒA‚µ‚Ä‚©‚烊[ƒh‚·‚é - MI_CpuClear8( pTempBuf, nandfirm_size ); - DC_FlushRange(pTempBuf, nandfirm_size); - - // CRCƒ`ƒFƒbƒN‚Ì‚½‚ßNand‚©‚烊[ƒh - if (kamiNandRead(NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE, pTempBuf, write_block ) == KAMI_RESULT_SEND_ERROR) - { - kamiFontPrintfConsoleEx(1, "kamiNandRead ... %s!\n", "ERROR"); - } - DC_FlushRange(pTempBuf, nandfirm_size); - - // ‘‚«ž‚ÝŒã‚ÌCRC‚ðŒvŽZ - crc_r2 = SVC_GetCRC16( 0xffff, pTempBuf, nandfirm_size ); - - // NAND•”•ª‚ɂ‚¢‚Ä‚ÌCRCƒ`ƒFƒbƒN - if (crc_w2 == crc_r2) - { -// kamiFontPrintfConsoleEx(0, "Success! CRC check %x==%x\n", crc_w2, crc_r2); - } - else - { - result = FALSE; - kamiFontPrintfConsoleEx(1, "Fail! CRC check %x!=%x\n", crc_w2, crc_r2); - } - - // ƒƒ‚ƒŠ‰ð•ú - freeFunc(pTempBuf); - - return result; -} - -/*---------------------------------------------------------------------------* - Name: kamiEraseNandfirmVersion - - Description: nandfirm‚̃o[ƒWƒ‡ƒ“î•ñ‚ðÁ‹Ž‚µ‚Ü‚·BiƒfƒoƒbƒO—pj - - Arguments: no - - Returns: None. - *---------------------------------------------------------------------------*/ -void kamiEraseNandfirmVersion( u32 nandfirmsize ) -{ - u8 buffer[NAND_BLOCK_BYTE]; - u32 blockNo; - - if ((nandfirmsize % NAND_BLOCK_BYTE)==0) - { - blockNo = NAND_FIRM_START_OFFSET/NAND_BLOCK_BYTE + nandfirmsize/NAND_BLOCK_BYTE; - MI_CpuClear8( buffer, NAND_BLOCK_BYTE ); - DC_FlushRange(buffer, NAND_BLOCK_BYTE); - kamiNandWrite( blockNo, buffer, 1 ); // ƒuƒƒbƒN’PˆÊAƒoƒCƒg’PˆÊAƒuƒƒbƒN’PˆÊ - } -} diff --git a/build/tests/CustomSystemUpdater/ARM9.TWL/src/keypad.c b/build/tests/CustomSystemUpdater/ARM9.TWL/src/keypad.c deleted file mode 100644 index 155c4bc2..00000000 --- a/build/tests/CustomSystemUpdater/ARM9.TWL/src/keypad.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "keypad.h" - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_TRIGGER_START 20 -#define KEY_REPEAT_TRIGGER_TERM 5 - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static u16 Cont; -static u16 Trg; -static u16 Release; -static u16 RepeatTrg; -static u8 key = 60; - -static int repeat_counter; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -void -kamiPadRead(void) -{ - u16 ReadData; - - ReadData = PAD_Read(); - Trg = (u16)(ReadData & (ReadData ^ Cont)); - Release = (u16)(Cont & (ReadData ^ Cont)); - Cont = ReadData; - - RepeatTrg = Trg; - if (++repeat_counter > (KEY_REPEAT_TRIGGER_START + KEY_REPEAT_TRIGGER_TERM)) - { - repeat_counter = KEY_REPEAT_TRIGGER_START; - } - if (repeat_counter == KEY_REPEAT_TRIGGER_START) - { - RepeatTrg = ReadData; - } - if (!ReadData) - { - repeat_counter = 0; - } -} - -BOOL -kamiPadIsTrigger(u16 key) -{ - return (Trg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsRepeatTrigger(u16 key) -{ - return (RepeatTrg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsPress(u16 key) -{ - return (Cont & key)? TRUE : FALSE; -} - diff --git a/build/tests/CustomSystemUpdater/Makefile b/build/tests/CustomSystemUpdater/Makefile deleted file mode 100644 index 9ae3341f..00000000 --- a/build/tests/CustomSystemUpdater/Makefile +++ /dev/null @@ -1,123 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TARGET_CODEGEN = THUMB -override TWL_ARCHGEN = LIMITED - - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -#.PHONY: no_rom_set -#no_rom_set: -# echo "Usage: make ROMSET=dirname" -# -#ifeq ($(ROMSET),) -# no_rom_set -#endif -# - -# ƒŠ[ƒWƒ‡ƒ“‚ªŽw’肳‚ê‚ĂȂ©‚Á‚½‚ç‘S•”‚â‚é -ifeq ($(REGION),) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -do-build: do-something -clean: do-something -clobber: do-something -install: do-something -do-build: MY_GOAL= -clean: MY_GOAL=clean -clobber: MY_GOAL=clobber -install: MY_GOAL=install - -do-something: - -$(REMAKE) TWLSDK_PLATFORM=TWL REGION=JPN ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL) - -rm `find . -name "*autogen*"` - -$(REMAKE) TWLSDK_PLATFORM=TWL REGION=AUS ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL) - -rm `find . -name "*autogen*"` - -$(REMAKE) TWLSDK_PLATFORM=TWL REGION=USA ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL) - -rm `find . -name "*autogen*"` - -$(REMAKE) TWLSDK_PLATFORM=TWL REGION=EUR ROMSET=$(ROMSET) DISABLE_ROMCHECK=$(DISABLE_ROMCHECK) SKIP_SUBDIR=FALSE $(MY_GOAL) -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -else - -LAUNCHER_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/Launcher -MACHINESETTINGS_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/MachineSettings -WLANFIRM_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/wlanfirm -DS_HASH_TABLE = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/DSHashTable -SHARED_FONT_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/sharedFont -NANDFIRM_DIR = $(TWL_IPL_RED_ROOT)/build/nandfirm/menu-launcher - - - -# Šù‘¶ƒf[ƒ^‚ðŽg—p‚·‚éꇂÍTRUE‚ðŽw’è -SKIP_CREATE_DATA = TRUE - -ifeq ($(SKIP_CREATE_DATA),FALSE) -SUBDIRS = $(LAUNCHER_DIR) \ - $(MACHINESETTINGS_DIR) \ - $(WLANFIRM_DIR) \ - $(DS_HASH_TABLE) \ - $(SHARED_FONT_DIR) \ - $(NANDFIRM_DIR) \ - data \ - banner \ - ARM7.TWL \ - ARM9.TWL -else -SUBDIRS = banner \ - ARM7.TWL \ - ARM9.TWL -endif - -# CustomSystemUpdater -export SYSM_REGION = $(REGION) -export ROMSET := $(ROMSET) -export DISABLE_ROMCHECK := $(DISABLE_ROMCHECK) - -# COMPILE SWITCH for build SystemMenu - -export SYSM_UPDATER_RELEASE = TRUE - -export SYSM_DO_NOT_SHOW_LAUNCHER = TRUE -export SYSM_DISABLE_WDS_SCAN = FALSE -export SYSM_IGNORE_WLFIRM_SIGNCHECK = FALSE -export SYSM_DISABLE_WLFIRM_LOAD = FALSE -export SYSM_DISABLE_INITIAL_SETTINGS = TRUE -export SYSM_OUTSIDE_UI = TRUE - -export SYSM_BUILD_FOR_PRODUCTION_TEST = FALSE - -# MAKEROM SWITCH for build SystemMenu -export SYSM_DISABLE_DEBUG = FALSE -export SYSM_USE_WLANFIRM_LOCAL_PUBKEY = FALSE - - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -endif - -#===== End of Makefile ===== diff --git a/build/tests/CustomSystemUpdater/banner/Makefile b/build/tests/CustomSystemUpdater/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/CustomSystemUpdater/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/CustomSystemUpdater/banner/banner_AUS.bnr b/build/tests/CustomSystemUpdater/banner/banner_AUS.bnr deleted file mode 100644 index 4828a00d..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_AUS.bnr and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/banner_EUR.bnr b/build/tests/CustomSystemUpdater/banner/banner_EUR.bnr deleted file mode 100644 index c4d8d0fc..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_EUR.bnr and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/banner_JPN.bnr b/build/tests/CustomSystemUpdater/banner/banner_JPN.bnr deleted file mode 100644 index 4480b5e0..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_JPN.bnr and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/banner_USA.bnr b/build/tests/CustomSystemUpdater/banner/banner_USA.bnr deleted file mode 100644 index 110376b6..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_USA.bnr and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/banner_v3.bsf b/build/tests/CustomSystemUpdater/banner/banner_v3.bsf deleted file mode 100644 index d1c48580..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/banner/icon/gameIcon.bmp b/build/tests/CustomSystemUpdater/banner/icon/gameIcon.bmp deleted file mode 100644 index 7bba6103..00000000 Binary files a/build/tests/CustomSystemUpdater/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/CustomSystemUpdater/common/include/fifo.h b/build/tests/CustomSystemUpdater/common/include/fifo.h deleted file mode 100644 index 892475dd..00000000 --- a/build/tests/CustomSystemUpdater/common/include/fifo.h +++ /dev/null @@ -1,90 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - SystemUpdater - include - File: fifo.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef TWL_KAMI_TEST_FIFO_H_ -#define TWL_KAMI_TEST_FIFO_H_ - -#include - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -#define PXI_FIFO_TAG_KAMITEST PXI_FIFO_TAG_USER_1 - -#define KAMI_PXI_CONTINUOUS_PACKET_MAX 10 -#define KAMITEST_PXI_DATA_SIZE_MAX ((KAMI_PXI_CONTINUOUS_PACKET_MAX-1)*3+1) // Å‘åƒf[ƒ^” - -#define KAMITEST_PXI_START_BIT 0x02000000 // 擪ƒpƒPƒbƒg‚ðˆÓ–¡‚·‚é -#define KAMITEST_PXI_RESULT_BIT 0x00008000 // PXI‚̉ž“š‚ðŽ¦‚· - -#define KAMITEST_PXI_COMMAND_SHIFT 8 // ƒRƒ}ƒ“ƒhŠi”[•”•ª‚̈ʒu -#define KAMITEST_PXI_COMMAND_MASK 0x00007f00 // ƒRƒ}ƒ“ƒhŠi”[•”•ª‚̃}ƒXƒN -#define KAMITEST_PXI_DATA_NUMS_MASK 0x00ff0000 // ƒf[ƒ^”—̈æ -#define KAMITEST_PXI_DATA_NUMS_SHIFT 16 // ƒf[ƒ^”ˆÊ’u -#define KAMITEST_PXI_1ST_DATA_MASK 0x000000ff // 擪ƒpƒPƒbƒg‚̃f[ƒ^—̈æ -#define KAMITEST_PXI_1ST_DATA_SHIFT 0 // 擪ƒpƒPƒbƒg‚̃f[ƒ^ˆÊ’u - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -typedef enum KAMIPxiResult -{ - KAMI_PXI_RESULT_SUCCESS = 0, // ˆ—¬Œ÷ (void/void*Œ^) // ꇂɂæ‚èŒã‘±ƒpƒPƒbƒg‚ ‚è - KAMI_PXI_RESULT_SUCCESS_TRUE = 0, // ˆ—¬Œ÷ (BOOLŒ^) - KAMI_PXI_RESULT_SUCCESS_FALSE, // ˆ—¬Œ÷ (BOOLŒ^) - KAMI_PXI_RESULT_INVALID_COMMAND, // •s³‚ÈPXIƒRƒ}ƒ“ƒh - KAMI_PXI_RESULT_INVALID_PARAMETER, // •s³‚ȃpƒ‰ƒ[ƒ^ - KAMI_PXI_RESULT_ILLEGAL_STATUS, // KAMI‚Ìó‘Ô‚É‚æ‚舗‚ðŽÀs•s‰Â - KAMI_PXI_RESULT_BUSY, // ‘¼‚ÌƒŠƒNƒGƒXƒg‚ðŽÀs’† - KAMI_PXI_RESULT_FATAL_ERROR, // ‚»‚Ì‘¼‰½‚ç‚©‚ÌŒ´ˆö‚ň—‚ÉŽ¸”s - KAMI_PXI_RESULT_MAX -} -KAMIPxiResult; - - -typedef enum KamiCommand -{ - KAMI_TEST_COMMAND, - KAMI_EXE_FORMAT, - KAMI_NAND_IO, - KAMI_CLEAR_NAND_ERRORLOG, - KAMI_GET_IS_TOOL_TYPE -} -KamiCommand; - -typedef enum _IsToolType -{ - IS_TOOL_TYPE_ERROR, - IS_TOOL_TYPE_DEBUGGER, - IS_TOOL_TYPE_CAPTURE -} -IsToolType; - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_KAMI_TEST_FIFO_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/CustomSystemUpdater/custom_base.yaml b/build/tests/CustomSystemUpdater/custom_base.yaml deleted file mode 100644 index 7624d9d2..00000000 --- a/build/tests/CustomSystemUpdater/custom_base.yaml +++ /dev/null @@ -1,10 +0,0 @@ ---- -:DataPath: . -:NandFirm: nandfirm_rcplus.nand -:TargetPath: . -:TemplatePath: template -:RSF: ARM9.TWL/main.rsf -:TadFiles: -:SRC: ARM9.TWL/src/main.c -:FontFile: TWLFontTable.dat -:Region: EUR diff --git a/build/tests/CustomSystemUpdater/default.yaml b/build/tests/CustomSystemUpdater/default.yaml deleted file mode 100644 index de8a0c89..00000000 --- a/build/tests/CustomSystemUpdater/default.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -:SRC: ARM9.TWL/src/main.c -:FontFile: TWLFontTable.dat -:DataPath: data -:NandFirm: menu_launcher.nand -:TargetPath: . -:TemplatePath: template -:RSF: ARM9.TWL/main.rsf -:TadFiles: -- HNAA.tad -- HNBA.tad -- HNCA.tad -- HNLA.tad -- HNHA.tad diff --git a/build/tests/CustomSystemUpdater/makecsu.sh b/build/tests/CustomSystemUpdater/makecsu.sh deleted file mode 100755 index c8a17d1f..00000000 --- a/build/tests/CustomSystemUpdater/makecsu.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/sh -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: autoupload.sh -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -gen_updater(){ -#ruby sumaker.rb custom $1 $2 -make ROMSET=$1 REGION=$2 -rm `find . -name "*autogen*"` -} - - -if [ $# -lt 1 ]; -then - echo "Usage: makecsu vername" - exit -fi - - -gen_updater $1 JPN -gen_updater $1 USA -gen_updater $1 AUS -gen_updater $1 EUR diff --git a/build/tests/CustomSystemUpdater/romchecker.rb b/build/tests/CustomSystemUpdater/romchecker.rb deleted file mode 100755 index 18da809c..00000000 --- a/build/tests/CustomSystemUpdater/romchecker.rb +++ /dev/null @@ -1,207 +0,0 @@ -#!/bin/ruby -#---------------------------------------------------------------------------- -# Project: TwlSDK -# File: romchecker.rb -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -ALL_REGION = [ - "C", "D", "E", "H", -] - -FIX_REGION = [ - "A", "B", "F", "G", "I", "J", "K", "L", -] - -HEADER = "HN" - -ROM_DATA = { - "#{HEADER}A" => ["Launcher", "00030017"], - "#{HEADER}B" => ["–{‘ÌÝ’è", "00030015"], - "#{HEADER}C" => ["–³üƒtƒ@[ƒ€", "0003000f"], - "#{HEADER}D" => ["DSƒ_ƒEƒ“ƒ[ƒhƒvƒŒƒC", "00030005"], - "#{HEADER}E" => ["ƒsƒNƒgƒ`ƒƒƒbƒg", "00030005"], - "#{HEADER}F" => ["ƒVƒ‡ƒbƒv", "00030015"], - "#{HEADER}G" => ["ƒtƒ‹ƒuƒ‰ƒEƒU", "00030004"], - "#{HEADER}H" => ["DSƒnƒbƒVƒ…ƒŠƒXƒg", "0003000f"], - "#{HEADER}I" => ["ŽÊ^’ ", "00030005"], - "#{HEADER}J" => ["ƒzƒbƒgƒXƒ|ƒbƒg", "00030005"], - "#{HEADER}K" => ["DSƒTƒEƒ“ƒh", "00030005"], - "#{HEADER}L" => ["ƒo[ƒWƒ‡ƒ“ƒf[ƒ^", "0003000f"], -} - -REGION_DIRS = { - "AUS" => ["aus", "U"], - "EUR" => ["euro", "P"], - "JPN" => ["jp", "J"], - "USA" => ["usa", "E"], - "VERUP" => ["verup", "UPJE"], -} - -REG_PATH = /[a-zA-Z0-9\.\-_]+\/[a-zA-Z0-9\.\-_*]+\z/ -NAND_FIRM = "*.nand" -FONT_DATA = "*.dat" - -# ƒtƒ@ƒCƒ‹‚ðŒŸõ‚µAROM“à‚Ɋ܂܂ê‚é‚ׂ«‚©‚Ç‚¤‚©‚ð”»’è‚·‚é -# ðŒ‚Ɉê’v‚µ‚½ƒtƒ@ƒCƒ‹–¼‚Ì”z—ñ‚Ì—v‘f”‚Å”»’è -# 0 ŒÂ@ƒtƒ@ƒCƒ‹‚ª‚È‚¢ -# 1 ŒÂ@³í‚Á‚Û‚¢ -# 2 ŒÂˆÈã@ƒo[ƒWƒ‡ƒ“ˆá‚¢‚âAƒŠ[ƒWƒ‡ƒ“ˆá‚¢‚ª¬‚´‚Á‚Ä‚¢‚é -def check_pickuped(path, print_success) - ret = true - files = Dir.glob(path) - p_path = path.slice(REG_PATH) - #p files - case - when files.size == 0 - $stdout.printf( "NG:#{p_path} -- #{p_path} is not included ***********\n") - ret = false - when files.size == 1 && print_success - $stdout.printf( "OK:#{files[0].slice(REG_PATH)}\n") - when files.size >= 2 - $stdout.printf("NG:") - files.each{|file| - $stdout.printf( "#{file.slice(REG_PATH)} ") - } - $stdout.printf("-- Too many files are included ***********\n") - ret = false - end - ret -end - -def add_rom_list(rom_list, code, region, version, size) - rom_list << [code, region, version, size] -end - -def make_rom_list(target_dir, region) - region_dir = REGION_DIRS[region][0] - region_codes = (REGION_DIRS[region][1] + "A").unpack("A" * (REGION_DIRS[region][1].size + 1)) - #p region_codes - # o—Í—pƒŠƒXƒg - rom_list = [] - - (ALL_REGION + FIX_REGION).each{|app_code| - region_codes.each{|region_code| - search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}#{region_code}*.tad") - files = Dir.glob(search_path) - files.each{|tad| - add_rom_list(rom_list, "#{HEADER}#{app_code}", region_code, get_rom_version(tad), File.stat(tad).size) - } - } - } - write_rom_list(rom_list, "rom_list_#{region}.txt") -end - -def write_rom_list(rom_list, file_name) - region_name = { - "A" => "ALL", "E" => "USA", "U" => "AUS", "J" => "JPN", "P" => "EUR" - } - out = "" - sp = [8, 20, 10, 17, 10, 14] - line = "" - sp.each{|s| - line += "+#{"-" * s}" - } - line += "+\n" - out += line - out += sprintf("|%#{sp[0]}s|%-#{sp[1]}s|%#{sp[2]}s|%-#{sp[3]}s|%#{sp[4]}s|%#{sp[5]}s|\n", - "ƒR[ƒh", "–¼‘O", "ƒŠ[ƒWƒ‡ƒ“", "ƒ^ƒCƒgƒ‹ID", "ƒo[ƒWƒ‡ƒ“", "ƒtƒ@ƒCƒ‹ƒTƒCƒY") - out += line - rom_list.each{|rom| - rom_data = ROM_DATA[rom[0]] - size = (rom[3].to_s).reverse.scan(/.{1,3}/).join(",").reverse - out += sprintf("|%#{sp[0]}s|%-#{sp[1]}s|%-#{sp[2]}s|%8s %8x|%#{sp[4]}s|%#{sp[5]}s|\n", - rom[0] + rom[1], rom_data[0],region_name[rom[1]], rom_data[1], (rom[0] + rom[1]).unpack("N")[0], rom[2], size); - } - out += line - File.open(file_name, "w") {|file| - file.puts out - } -end - -def get_rom_version(path) - files = Dir.glob(path) - files[0].slice(/v[0-9]+/).delete("v") -end - -def check(target_dir, region) - ret = true - if REGION_DIRS[region] == nil - puts "Invalid region, [JPN, USA, EUR, AUS, VERUP]" - return false - end - region_dir = REGION_DIRS[region][0] - region_code = REGION_DIRS[region][1] - - # o—Í—pƒŠƒXƒg - rom_list = [] - - ALL_REGION.each{|app_code| - # ƒI[ƒ‹ƒŠ[ƒWƒ‡ƒ“‚̃ƒ€‚ªŠÜ‚Ü‚ê‚Ä‚¢‚é‚©‚̃`ƒFƒbƒN - search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}A*.tad") - #if ret &= check_pickuped(search_path, false) - #add_rom_list(rom_list, "#{HEADER}#{app_code}", "A", get_rom_version(search_path)) - #end - check_pickuped(search_path, false) - } - FIX_REGION.each{|app_code| - # ŠeƒŠ[ƒWƒ‡ƒ“ŒÅ—L‚̃ƒ€‚ªŠÜ‚Ü‚ê‚Ä‚¢‚é‚©‚̃`ƒFƒbƒN - search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}#{region_code}*.tad") - #if ret &= check_pickuped(search_path, false) - #add_rom_list(rom_list, "#{HEADER}#{app_code}", region_code, get_rom_version(search_path)) - #end - ret &= check_pickuped(search_path, false) - } - (ALL_REGION + FIX_REGION).each{|app_code| - # HNxy ‚ª ŠeƒŠ[ƒWƒ‡ƒ“‚²‚Æ1‚‚¾‚¯‘¶Ý‚·‚é‚©‚̃`ƒFƒbƒN - # HNxA ‚Æ HNxU ‚È‚ÇAa‚Æu‚ª¬Ý‚µ‚Ä‚¢‚½‚è‚·‚邯‚±‚±‚łЂÁ‚©‚©‚é - search_path = File.join(target_dir, region_dir, "#{HEADER}#{app_code}*.tad") - ret &= check_pickuped(search_path, false) - } - - # nand firm, font ‚̃`ƒFƒbƒN - search_path = File.join(target_dir, region_dir, NAND_FIRM) - ret &= check_pickuped(search_path, false) - search_path = File.join(target_dir, region_dir, FONT_DATA) - ret &= check_pickuped(search_path, false) - $stdout.printf("\n") - - # CSU‚Ɋ܂܂ê‚Ä‚¢‚郃€‚̈ꗗ‚ð‘‚«o‚· -# write_rom_list(rom_list, "rom_list_#{region}.txt") - -# make_rom_list(target_dir, region) - - ret -end - -# ‚±‚Á‚©‚烃Cƒ“ - -if ARGV.size < 2 - p "Usage: #{__FILE__} targetdir region" - exit -1 -end - -# ƒJƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠ‚Ì•ÏX -Dir.chdir(File.dirname(File.expand_path(__FILE__))) - - -target = ARGV[0] -region = ARGV[1] -make_rom_list(target, region) -if region == "VERUP" - exit 0 -else - exit check(target,region) ? 0 : -1 -end - diff --git a/build/tests/CustomSystemUpdater/sumaker.rb b/build/tests/CustomSystemUpdater/sumaker.rb deleted file mode 100755 index 8d630ebf..00000000 --- a/build/tests/CustomSystemUpdater/sumaker.rb +++ /dev/null @@ -1,212 +0,0 @@ -#!/bin/ruby -#---------------------------------------------------------------------------- -# Project: TwlSDK -# File: sumaker.rb -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -require "yaml" -require "fileutils" -require "tempfile" - -DEFAULT_CONFIG = "default.yaml" -CUSTOM_CONFIG = "custom.yaml" - -FILE_MATCH = /[a-zA-Z0-9\-_\.]+\z/ - -REGION = { - "JPN" => "OS_TWL_REGION_JAPAN", - "EUR" => "OS_TWL_REGION_EUROPE", - "AUS" => "OS_TWL_REGION_AUSTRALIA", - "USA" => "OS_TWL_REGION_AMERICA", -} - -REGION_PATH = { - "JPN" => "jp", - "EUR" => "euro", - "AUS" => "aus", - "USA" => "usa", -} - -# ƒfƒtƒHƒ‹ƒgÝ’è‚Ìì¬ -def make_default_config - config = { - :TadFiles => [ - "HNAA.tad", - "HNBA.tad", - "HNCA.tad", - "HNLA.tad", - "HNHA.tad", - ], - :FontFile => "TWLFontTable.dat", - :NandFirm => "menu_launcher.nand", - :TargetPath => ".", - :TemplatePath => "template", - :RSF => "ARM9.TWL/main.rsf", - :SRC => "ARM9.TWL/src/main.c", - :DataPath => ".", - :Region => "JPN", - } - write_config(DEFAULT_CONFIG, config) - -end - -# ƒtƒ@ƒCƒ‹–¼‚ɃXƒNƒŠƒvƒg‚ð’u‚¢‚Ä‚ ‚éƒfƒBƒŒƒNƒgƒŠ‚ð‚­‚Á‚‚¯‚é -def calc_path(filename) -# File.join(File.dirname(File.expand_path(__FILE__)), filename) -filename -end - -# ƒRƒ“ƒtƒBƒOƒtƒ@ƒCƒ‹‚ð“Ç‚ñ‚Å“WŠJ -def read_config(filename) - YAML.load(File.read(calc_path(filename))) -end - -# ƒRƒ“ƒtƒBƒO‚̃‰ƒCƒg -def write_config(filename, data) - File.open(calc_path(filename), "w") {|file| - file.write data.to_yaml - } -end - -# ƒf[ƒ^“à‚Ì•¶Žš—ñ‚ð’u‚«Š·‚¦‚é -def replace_data(src, mark, data) - while src.index(/%#{mark}%/) != nil do - src = src.sub(/%#{mark}%/, data) - end - src -end - - -# ƒtƒ@ƒCƒ‹‚ð‘‚«ž‚Þ -def write_data(filename, data) - temp = Tempfile.new("temp") - temp.puts data - temp.close - FileUtils.cp(temp.path, calc_path(filename)) -end - -# main.rsf‚Ì‘‚«Š·‚¦ -def make_rsf(config) - tadlist = config[:TadFiles].dup - tadlist << config[:FontFile] << config[:NandFirm] - tadlist = tadlist.join(" ") - src = File.read(File.join(config[:TemplatePath], config[:RSF])) - #src = File.read(config[:TemplatePath] + "/" + config[:RSF]) - src = replace_data(src, "datapath", config[:DataPath]) - src = replace_data(src, "regionname", config[:Region]) - write_data(File.join(config[:TargetPath], config[:RSF]), replace_data(src, "filelist", tadlist)) - #write_data(config[:TargetPath] + "/" + config[:RSF], replace_data(src, "filelist", tadlist)) -end - -# main.c ‚Ì‘‚«Š·‚¦ -def make_main(config) - filelist = config[:TadFiles] - data = [] - for t in filelist do - data.push("\t\"rom:/data/" + t + "\", \n") - end - data = data.join - #src = File.read(config[:TemplatePath] + "/" + config[:SRC]) - src = File.read(File.join(config[:TemplatePath], config[:SRC])) - mod = replace_data(src, "tadlist", data) - mod = replace_data(mod, "nandfirm", config[:NandFirm]) - mod = replace_data(mod, "fontfile", config[:FontFile]) - - # region - region_name = (config[:Region] != nil) ? config[:Region] : "JPN" - region = (REGION[region_name] != nil) ? REGION[region_name] : REGION["JPN"] - mod = replace_data(mod, "region", region) - mod = replace_data(mod, "regionname", region_name) - #write_data(config[:TargetPath] + "/" + config[:SRC], mod) - write_data(File.join(config[:TargetPath], config[:SRC]), mod) - -end - -# SystemUpdater‚ð쬂·‚é -def make_updater(filename) - config = read_config(filename) - make_rsf(config) - make_main(config) -end - -# ƒfƒBƒŒƒNƒgƒŠ“à‚Ìtad‚ðŒŸõ -def pickup_files(target_dir, name) - Dir.glob(target_dir + name) -end - - -# ‚±‚Á‚©‚烃Cƒ“ - -#sumaker mode [filename] - -if ARGV.size == 0 - p "Usage: sumaker mode [filename]" - exit -end - -mode = ARGV[0] - -case mode -when "default" then - # ƒfƒtƒHƒ‹ƒgÝ’è‚Åì¬ - make_default_config - make_updater(DEFAULT_CONFIG) -when "custom" then - if ARGV.size < 3 - p "Usage: sumaker custom target_dir region" - exit -1 - end - # ƒJƒXƒ^ƒ€Ý’è‚Åì¬ - config = "custom_base.yaml" - region = ARGV[2] - - # ƒJƒŒƒ“ƒgƒfƒBƒŒƒNƒgƒŠ•ÏX - Dir.chdir(File.dirname(File.expand_path(__FILE__))) - - - # ƒx[ƒXƒRƒ“ƒtƒBƒO‚ÉAdataƒfƒBƒŒƒNƒgƒŠ“à‚Ìtad‚Ænand‚ð’ljÁ - config = read_config(config) - if config[:TadFiles] == nil - config[:TadFiles] = [] - end - - - #config[:DataPath] += "/#{ARGV[1]}/#{REGION_PATH[region]}" - config[:DataPath] = File.join(config[:DataPath], ARGV[1], REGION_PATH[region]) - config[:Region] = region - tads = pickup_files(config[:DataPath], "/*.tad") - nand = pickup_files(config[:DataPath], "/*.nand") - font = pickup_files(config[:DataPath], "/*.dat") -# ƒtƒHƒ“ƒgƒtƒ@ƒCƒ‹–¼•ÏX - system("mv #{font} #{File.join(config[:DataPath], "TWLFontTable")}.dat") - font = pickup_files(config[:DataPath], "/*.dat") - - if nand.size > 0 - config[:NandFirm] = nand[0].slice(FILE_MATCH) - end - if font.size > 0 - config[:FontFile] = font[0].slice(FILE_MATCH) - end - for tad in tads do - tad = tad.slice(FILE_MATCH) - config[:TadFiles] << tad - end - config[:TadFiles] = config[:TadFiles].uniq - write_config(CUSTOM_CONFIG, config) - make_updater(CUSTOM_CONFIG) - - exit 0 -end - diff --git a/build/tests/CustomSystemUpdater/template/ARM9.TWL/main.rsf b/build/tests/CustomSystemUpdater/template/ARM9.TWL/main.rsf deleted file mode 100644 index 1e5df836..00000000 --- a/build/tests/CustomSystemUpdater/template/ARM9.TWL/main.rsf +++ /dev/null @@ -1,229 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: main.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - RomSize 64M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_%regionname%.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - # ========= SystemUpdater‚Í“Á•ʂȌ®‚ðŽg‚¤ ========= - CommonClientKey TRUE - #CommonClientKeyForDebugger TRUE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - HwAESSlotB TRUE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - HwAESSlotC TRUE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # DisableDebug FÅIROM‚Å‚ÍAŽÀsŽž‚ɃfƒoƒbƒO‚Å‚«‚È‚¢‚悤‚ÉTRUE‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - # - DisableDebug $(DISABLE_DEBUG) - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../%datapath% - Root /data - File %filelist% - HostRoot $(PRIVKEY_PATH) - Root /key - File $(HWINFO_PRIVKEY) $(HWID_PRIVKEY) -} diff --git a/build/tests/CustomSystemUpdater/template/ARM9.TWL/src/main.c b/build/tests/CustomSystemUpdater/template/ARM9.TWL/src/main.c deleted file mode 100644 index 0825e574..00000000 --- a/build/tests/CustomSystemUpdater/template/ARM9.TWL/src/main.c +++ /dev/null @@ -1,765 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: SystemUpdater - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include // atoi -#include -#include -#include -#include -#include -#include -#include "kami_pxi.h" -#include "kami_font.h" -#include "kami_write_nandfirm.h" -#include "kami_copy_file.h" -#include "import.h" -#include "hw_info.h" -#include "graphics.h" -#include "hwi.h" -#include "keypad.h" -#include "debugger_hw_reset_control.h" -#include "debugger_card_rom.h" -#include "build_time.h" - -#define SCRAMBLE_MASK 0x00406000 - -extern const char *g_strIPLSvnRevision; -extern const char *g_strSDKSvnRevision; - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -typedef struct _SystemUpdaterLog -{ - int magic_code; - int sdk_version; - int ipl_version; - int reserve[5]; -} SystemUpdaterLog; - -typedef struct _CopyFileList -{ - char* srcPath; - char* dstPath; -} CopyFileList; - -/*---------------------------------------------------------------------------* - “à•”’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define SYSTEM_UPDATER_LOG_PATH "nand:/sys/log/updater.log" -#define NAND_FIRM_PATH_IN_ROM "rom:/data/%nandfirm%" - -#define SYSTEM_UPDATER_MAGIC_CODE 44001111 - -// ƒŠƒgƒ‰ƒC‰ñ” -#define MAX_RETRY_COUNT 2 - -static const char* ImportTadFileList[] = -{ -%tadlist% -}; - -static const CopyFileList sCopyFileList[] = -{ - { "rom:/data/%fontfile%", "nand:sys/%fontfile%" } -}; - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static NAMTitleId titleId; -static s16 printLine; -static vu8 sIsFormatFinish; -static u8 sFormatResult; -static s32 sLockId; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void VBlankIntr(void); -static void InitAllocation(void); -static BOOL IgnoreRemoval(void); -static void DrawWaitButtonA(void); -static void DrawInvalidConsole(void); -static void DrawCancel(void); -static void DrawAlready(SystemUpdaterLog* log); -static void DrawResult(BOOL result); -static void FormatCallback(KAMIResult result, void* arg); - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void -TwlMain() -{ - BOOL result; - BOOL hw_info_result; - BOOL nand_firm_result; - int tadNum; - int i,j; - - // »•iƒrƒ‹ƒhƒ‰ƒ“ƒ`ƒƒ[•ƒfƒoƒbƒKã‚ł̋N“®‘Ήž - if ( OS_GetRunningConsoleType() & OS_CONSOLE_TWLDEBUGGER ) - { - ROM_Header *dh = (void *)HW_ROM_HEADER_BUF; - dh->s.game_cmd_param &= ~SCRAMBLE_MASK; - } - - OS_Init(); - OS_InitThread(); - OS_InitTick(); - OS_InitAlarm(); - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitArenaEx(); - OS_InitIrqTable(); - OS_SetIrqStackChecker(); - MI_Init(); - OS_InitVAlarm(); - OSi_InitVramExclusive(); - OS_InitThread(); - OS_InitReset(); - GX_Init(); - FX_Init(); - SND_Init(); - TP_Init(); - RTC_Init(); - - KamiPxiInit(); /* “ÆŽ©PXI‰Šú‰» */ - - // Vƒuƒ‰ƒ“ƒNŠ„‚èž‚ÝÝ’è - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)OS_EnableIrqMask(OS_IE_FIFO_RECV); - (void)OS_EnableIrq(); - (void)GX_VBlankIntr(TRUE); - - // initialize file-system - FS_Init(FS_DMA_NOT_USE); - - InitAllocation(); - - // NAMƒ‰ƒCƒuƒ‰ƒŠ‰Šú‰» - NAM_Init( OS_AllocFromMain, OS_FreeToMain ); - NAMUT_Init( OS_AllocFromMain, OS_FreeToMain ); // SoftBoxCount‚ÌŒvŽZ‚É•K—v - - // •\ަŠÖ˜A‰Šú‰» - InitGraphics(); - kamiFontInit(); - - // ƒƒCƒ“ƒXƒŒƒbƒh‚̃J[ƒhƒƒbƒNIDŽæ“¾ - sLockId = OS_GetLockID(); - - /* always preload FS table for faster directory access. */ - { - u32 need_size = FS_GetTableSize(); - void *p_table = OS_Alloc(need_size); - SDK_ASSERT(p_table != NULL); - (void)FS_LoadTable(p_table, need_size); - } - - // ƒRƒ“ƒ\[ƒ‹ƒ`ƒFƒbƒN - { - u32 console = OS_GetRunningConsoleType(); - enum { IS_TWL_DEBUGGER=0, IS_TWL_CAPTURE, TWL, UNKNOWN }; - int running = UNKNOWN; - - // SystemUpdater‚̓fƒoƒbƒO•s‰Â‚Å쬂³‚ê‚邽‚ßOS_CONSOLE_TWL‚ªŽæ“¾‚³‚ê‚é - // Ô” ‚ɃJ[ƒh‚ð‘}‚µ‚ÄSystemUpdater‚ðŽÀs‚µ‚½ê‡‚à“¯—li’A‚µOS_CONSOLE_TWLTYPE_RETAIL‚ɂ͂Ȃç‚È‚¢j - // ƒfƒoƒbƒK‚©‚Ç‚¤‚©‚Ì”»’è‚̓ƒ‚ƒŠƒTƒCƒYƒ`ƒFƒbƒN‚É‚æ‚ès‚¤ - // ”O‚Ì‚½‚ßOS_CONSOLE_TWLTYPE_RETAIL‚łȂ¢‚±‚Æ‚àŠm”F‚·‚é - - if ((console & OS_CONSOLE_SIZE_MASK) == OS_CONSOLE_SIZE_32MB) - { - if ((console & OS_CONSOLE_TWLTYPE_MASK) != OS_CONSOLE_TWLTYPE_RETAIL) - { - IsToolType type; - kamiGetIsToolType(&type); - if (type == IS_TOOL_TYPE_DEBUGGER) - { - running = IS_TWL_DEBUGGER; - } - else if (type == IS_TOOL_TYPE_ERROR) // TSƒ{[ƒhƒvƒ‰ƒX + ‹ŒŽd—lƒfƒoƒbƒK - { - running = IS_TWL_DEBUGGER; - } - else if (type == IS_TOOL_TYPE_CAPTURE) - { - running = IS_TWL_CAPTURE; - } - } - } - else if ((console & OS_CONSOLE_MASK) == OS_CONSOLE_TWL) - { - IsToolType type; - kamiGetIsToolType(&type); - if (type == IS_TOOL_TYPE_CAPTURE) - { - running = IS_TWL_CAPTURE; - } - else - { - running = TWL; - } - } - - switch (running) - { - case IS_TWL_DEBUGGER: - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "Running on IS_TWL_DEBUGGER."); - break; - case IS_TWL_CAPTURE: - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "Running on IS_TWL_CAPTURE."); - break; - case TWL: - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "Running on TWL CONSOLE."); - break; - case UNKNOWN: - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "Running on UNKNOWN."); - break; - } - -#ifdef SYSM_BUILD_FOR_DEBUGGER - // ƒfƒoƒbƒKŒü‚¯SystemUpdater‚ÍŽÀ‹@‚ƃLƒƒƒvƒ`ƒƒ‚ł͓®ì‚³‚¹‚È‚¢ - if (running != IS_TWL_DEBUGGER) - { - kamiFontPrintfMain( 2, 9, 3, " Sorry, "); - kamiFontPrintfMain( 2, 10, 3, " This SystemUpdater can not "); - kamiFontPrintfMain( 2, 11, 3, " execute on TWL-CONSOLE. "); - DrawInvalidConsole(); - } -#else - // ŽÀ‹@Œü‚¯SystemUpdater‚̓fƒoƒbƒK‚ł͓®ì‚³‚¹‚È‚¢ - if (running == IS_TWL_DEBUGGER) - { - kamiFontPrintfMain( 2, 9, 3, " Sorry, "); - kamiFontPrintfMain( 2, 10, 3, " This SystemUpdater can not "); - kamiFontPrintfMain( 2, 11, 3, " execute on IS-TWL-DEBUGGER."); - DrawInvalidConsole(); - } -#endif // SYSM_BUILD_FOR_DEBUGGER - - // UNKNOWN‚͓͂®ì‚³‚¹‚È‚¢ - if (running == UNKNOWN) - { - kamiFontPrintfMain( 2, 9, 3, " Sorry, "); - kamiFontPrintfMain( 2, 10, 3, " This SystemUpdater can not "); - kamiFontPrintfMain( 2, 11, 3, " execute on UNKNOWN CONSOLE."); - DrawInvalidConsole(); - } - } - - // iXV‰Â”\ðŒj - // 1.ƒƒO‚ª‘¶Ý‚µ‚È‚¢ - // 2.ƒƒO‚ª‘¶Ý‚µAƒƒO‚É‹Lڂ̃}ƒWƒbƒNƒR[ƒh‚ª•s³i‰”ÅSystemUpdaterŽÀsŒã‚Ìó‘Ôj - // 2.ƒƒO‚ª‘¶Ý‚µAƒƒO‚É‹Lڂ̃}ƒWƒbƒNƒR[ƒh‚ª³‚µ‚­‚©‚ƒƒO‚É‹LÚ‚Ì - // SDK & IPL ‚̃o[ƒWƒ‡ƒ“‚ª SystemUpdater ‚Ì‚»‚êˆÈ‰º‚Å‚ ‚é - -#ifdef IGNORE_VERSION_CHECK - if( 0 ) -#endif // IGNORE_VERSION_CHECK - { - SystemUpdaterLog log; - FSFile file; - FS_InitFile( &file ); - - if (FS_OpenFileEx(&file, SYSTEM_UPDATER_LOG_PATH, FS_FILEMODE_R) == TRUE) - { - DC_InvalidateRange(&log, sizeof(log)); - - if (FS_ReadFile(&file, &log, sizeof(log)) == sizeof(log)) - { - // ƒƒOƒŠ[ƒh¬Œ÷ - OS_Printf("[%d, %d]\n", log.sdk_version, log.ipl_version); - - // ‰”ÅSystemUpdaterŽÀsó‘ԂłȂ¢‚±‚Æ‚ðƒ}ƒWƒbƒNƒR[ƒh‚Å”»•Ê‚·‚é - if (log.magic_code == SYSTEM_UPDATER_MAGIC_CODE) - { - // ƒ}ƒWƒbƒNƒR[ƒhASDKƒo[ƒWƒ‡ƒ“AIPLƒo[ƒWƒ‡ƒ“‚ÌŠm”F - if (log.sdk_version > atoi(g_strSDKSvnRevision) || - log.ipl_version > atoi(g_strIPLSvnRevision)) - { - // XV•s‰Â - DrawAlready(&log); - } - } - } - else - { - // ƒƒOƒŠ[ƒhޏ”s - OS_Warning("Failure! FS_ReadFile"); - } - - FS_CloseFile(&file); - } - } - - // ‚`ƒ{ƒ^ƒ“‘Ò‚¿ - DrawWaitButtonA(); - - // TWL‚ÌXVˆ—‚ðŽÀs’†‚Å‚· - CARD_LockRom((u16)sLockId); - (void)CARDi_ReadRomIDCoreEx(DEBUGGER_COMMAND_NOW_UPDATE); - CARD_UnlockRom((u16)sLockId); - - // ISƒfƒoƒbƒK‚̃n[ƒhƒEƒFƒAƒŠƒZƒbƒg‚ð‹ÖŽ~‚·‚é - DEBUGGER_HwResetDisable(); - - // HWInfoŠÖ˜A‚Ì‘O€”õ - switch (HWI_Init( OS_AllocFromMain, OS_FreeToMain )) - { - case HWI_INIT_FAILURE: - OS_Warning(" Fail! : HWI_INIT()"); - break; - case HWI_INIT_SUCCESS_PRO_SIGNATURE_MODE: - break; - case HWI_INIT_SUCCESS_DEV_SIGNATURE_MODE: - break; - case HWI_INIT_SUCCESS_NO_SIGNATRUE_MODE: - break; - } - - result = TRUE; - - // Š®‘S‚ÉÁ‹Ž - NAMUT_Format(); - - // ƒtƒH[ƒ}ƒbƒgŽÀs - sIsFormatFinish = FALSE; - ExeFormatAsync(FORMAT_MODE_QUICK, FormatCallback); - kamiFontPrintfMain( 7, 11, 8, "Now Format..."); - while(!sIsFormatFinish){}; - if (sFormatResult) - { - kamiFontPrintf( 0, printLine++, FONT_COLOR_GREEN, "NAND Format Success."); - } - else - { - kamiFontPrintf( 0, printLine++, FONT_COLOR_RED, "NAND Format Failure!"); - } - kamiFontPrintfMain( 7, 11, 8, " "); - - // ƒtƒH[ƒ}ƒbƒgŒã‚ÍES‚É•K—v‚ȃtƒ@ƒCƒ‹‚ª‚È‚­‚È‚Á‚Ä‚¢‚邽‚ß - // ES_InitLib‚ðŒÄ‚Ño‚·‚±‚Æ‚Å쬂µ‚Ä‚¨‚­ - NAM_End( NULL, NULL ); - NAM_Init( OS_AllocFromMain, OS_FreeToMain ); - - // ‘Sƒn[ƒhƒEƒFƒAî•ñ‚ÌXV - for (i=0;isdk_version, log->ipl_version ); - kamiFontPrintfMain( 3, 13, 1, "--------------------------"); - - while(1) - { - G3X_Reset(); - G3_Identity(); - G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0); - - DrawQuad( 10, 50, 246, 128, GX_RGB(28, 28, 28)); - - G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); - - OS_WaitVBlankIntr(); - } -} - -/*---------------------------------------------------------------------------* - Name: DrawResult - - Description: ˆ—Œ‹‰Ê‚ð•\ަ‚µ‚Ü‚·B - - Arguments: - - Returns: None. - *---------------------------------------------------------------------------*/ -static void DrawResult(BOOL result) -{ - // 3D‰Šú‰» - G3X_Reset(); - G3_Identity(); - G3_PolygonAttr(GX_LIGHTMASK_NONE, GX_POLYGONMODE_DECAL, GX_CULL_NONE, 0, 31, 0); - - // "Now Updating.." ‚ðÁ‹Ž - kamiFontPrintfMain( 0, 9, 7, " "); - - if (result) - { - kamiFontPrintfMain( 9, 10, 7, "Update Success!"); - // ƒOƒŠ[ƒ“ƒ_ƒCƒAƒƒO - DrawQuad( 50, 50, 206, 120, GX_RGB(12, 25, 12)); - } - else - { - kamiFontPrintfMain( 9, 10, 7, "Update Failure!"); - // ƒŒƒbƒhƒ_ƒCƒAƒƒO - DrawQuad( 50, 50, 206, 120, GX_RGB(31, 0, 0)); - } - - kamiFontLoadScreenData(); - - // 3DƒXƒƒbƒv - G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_W); -} - -/*---------------------------------------------------------------------------* - Name: FormatCallback - - Description: ƒtƒH[ƒ}ƒbƒgƒR[ƒ‹ƒoƒbƒN - - Arguments: - - Returns: None. - *---------------------------------------------------------------------------*/ -static void FormatCallback(KAMIResult result, void* /*arg*/) -{ - if ( result == KAMI_RESULT_SUCCESS_TRUE ) - { - sFormatResult = TRUE; - } - else - { - sFormatResult = FALSE; - } - - sIsFormatFinish = TRUE; -} diff --git a/build/tests/CustomSystemUpdater/work/aftercls.sh b/build/tests/CustomSystemUpdater/work/aftercls.sh deleted file mode 100755 index 2ec65c6e..00000000 --- a/build/tests/CustomSystemUpdater/work/aftercls.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/sh -#! bash -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: aftercls.sh -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -AQUA='//10.116.1.5' -CLSED_PATH="${AQUA}/TWL_debug/sysmenu/rom/debug_rom/CLS_processed" -DAILY_CLSED_DIR=`date +'%Y%m%d'`_cls - -if [ $# -lt 1 ]; -then - echo "input target dir name" - exit -fi - -echo "tocsu.sh" -./tocsu.sh $1 - -echo "toaqua.rb" -./toaqua.rb $1 - -# Aqua‚ÖƒRƒs[ -echo "Copying to Aqua" -cp -r $1_foraqua ${CLSED_PATH}/${DAILY_CLSED_DIR} - -# Shop ROM ‚̃Rƒs[ -shopdir="${AQUA}/TWL_debug/shop/rom/cls/${DAILY_CLSED_DIR}" -/bin/mkdir ${shopdir} -/bin/cp $1_foraqua/verup/tad/shop* ${shopdir} - -# NZV ROM ‚̃Rƒs[ -nzvdir="${AQUA}/TWL_debug/nintendo_spot/rom/clsprocessed/"`date +'%Y%m%d'` -/bin/mkdir ${nzvdir} -/bin/cp -r $1/HNJ* ${nzvdir} \ No newline at end of file diff --git a/build/tests/CustomSystemUpdater/work/cls.sh b/build/tests/CustomSystemUpdater/work/cls.sh deleted file mode 100755 index d58e276f..00000000 --- a/build/tests/CustomSystemUpdater/work/cls.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -#! bash -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: conv2svnDir.sh -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -move_data_to_tmp() { - tmp=tmp/$1 - install -d $tmp - for src in `find $1 -name v* -type d` - do - mv $src $tmp - done -} - -do_cls() { - tmp=tmp/$1 - for target in `find $tmp -name v* -type d | sort -t / -n -k 3.2` - do - cp -rp $target $1 - t=`echo "$target" | cut -c 5-` - if [ -f $t/*.cls ]; then - echo "$t:Already cls processed" - else - genLic $1 - fi -# genLic $1 - done -} - -for app in `find . -maxdepth 1 -mindepth 1 -type d` -do - name=`echo "$app" | cut -c 3-` - move_data_to_tmp $name - do_cls $name -done - -rm -rf tmp diff --git a/build/tests/CustomSystemUpdater/work/mkcls.py b/build/tests/CustomSystemUpdater/work/mkcls.py deleted file mode 100644 index 668f22af..00000000 --- a/build/tests/CustomSystemUpdater/work/mkcls.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import sys, os, struct -import string, random -import re, shutil, binascii - -def roundup(val, align): - return int((val+align-1)/align)*align - -def randstr(n): - words = ''.join([string.digits,string.letters,'.','+']) - return ''.join(random.choice(words) for i in xrange(n)) - -def main(): - try: - tadfile = sys.argv[1] - except: - print '%s : please specfy the tad file' % (sys.argv[0]) - exit(-1) - - #--- parse *.tad - fin = open(tadfile, 'rb') - try: - tadData = fin.read() - except: - fin.close() - start, end = 0, struct.calcsize('>l2sh6l') - (hdrSize, tadType, tadVersion, certSize, crlSize, ticketSize, tmdSize, - contentSize, metaSize) = struct.unpack('>l2sh6l', tadData[start:end]) - certOffset = roundup(hdrSize, 64) - crlOffset = roundup(certOffset + certSize, 64) - ticketOffset = roundup(crlOffset + crlSize, 64) - tmdOffset = roundup(ticketOffset + ticketSize, 64) - contentOffset = roundup(tmdOffset + tmdSize, 64) - metaOffset = roundup(contentOffset + contentSize, 64) - fileSize = roundup(metaOffset + metaSize, 64) - - #print '-'*20+'\n' - #print ' hdrSize %s\n' % hdrSize, - #print ' tadType %s\n' % tadType, - #print ' tadVersion, %s\n' % tadVersion, - #print ' certSize, %s\n' % certSize, - #print ' crlSize, %s\n' % crlSize, - #print ' ticketSize, %s\n' % ticketSize, - #print ' tmdSize, %s\n' % tmdSize, - #print ' contentSize, %s\n' % contentSize, - #print ' metaSize %s' - #print '\n'+'-'*20 - #open("cert.bin", 'wb').write(tadData[certOffset:certOffset+certSize]) - #open("crl.bin", 'wb').write(tadData[crlOffset:crlOffset+crlSize]) - #open("ticket.bin", 'wb').write(tadData[ticketOffset:ticketOffset+ticketSize]) - #open("tmd.bin", 'wb').write(tadData[tmdOffset:tmdOffset+tmdSize]) - #open("content.bin", 'wb').write(tadData[contentOffset:contentOffset+contentSize]) - #open("meta.bin", 'wb').write(tadData[metaOffset:metaOffset+metaSize]) - - #--- parse TMD - tmd = tadData[tmdOffset:tmdOffset+tmdSize] - - #--- RSA2048 signature - (sigB, sigE) = (0, struct.calcsize('>i256s60s64s')) - (IOSCCertSigType, IOSCRsaSig2048, IOSCSigDummy, IOSCName)\ - = struct.unpack('>i256s60s64s', tmd[sigB:sigE]) - - #print "=== RSA2048 signature ===============" - #print "IOSCCertSigType : %x" % IOSCCertSigType - #print "IOSCRsaSig2048 : %s" % IOSCRsaSig2048 - #print "IOSCSigDummy : %s" % IOSCSigDummy - #print "IOSCName : %s" % IOSCName - - #--- ESTitleMetaHeader - (tmhB, tmhE) = (sigE, sigE+struct.calcsize('>4B5iH62si3H')) - (version, - caCrlVersion, - signerCrlVersion, - dummy, - sysVersion_H, - sysVersion_L, - titleId_H, - titleId_L, - titleType, - groupID, - reserved, - accessRights, - titleVersion, - numContents, - bootIndex) = struct.unpack('>4B5iH62si3H',tmd[tmhB:tmhE]) - - print "=== ESTitleMetaHeader ===============" - #print ('version : %d ') % version - #print ('caCrlVersion : %d ') % caCrlVersion - #print ('signerCrlVersion : %d ') % signerCrlVersion - #print ('dummy : %s ') % dummy - #print ('sysVersion_H : %x ') % sysVersion_H - #print ('sysVersion_L : %x ') % sysVersion_L - print ('titleId_H : %08x ') % titleId_H - print ('titleId_L : %08x ') % titleId_L - #print ('titleType : %x ') % titleType - print ('groupID : %x ') % groupID - #print ('reserved[62] : %s ') % reserved - #print ('accessRights : %d ') % accessRights - print ('titleVersion : %d ') % titleVersion - #print ('numContents : %d ') % numContents - #print ('bootIndex : %d ') % bootIndex - - #--- make directory for cls - tadpath = os.path.dirname(tadfile) - gamecode = binascii.unhexlify('%x'%titleId_L) - keycode = gamecode[:3] - sysdic = { 'HNA':'menu', - 'HNB':'setting', - 'HNC':'wfirm', - 'HND':'dlplay', - 'HNE':'pchat', - 'HNF':'shop', - 'HNG':'browser', - 'HNH':'whlist', - 'HNI':'photo', - 'HNJ':'nzv', - 'HNK':'sound', - 'HNL':'verdata', - } - try: - suffix = sysdic.get(keycode) - if suffix: - clsdir = ''.join(['./',gamecode,'-',suffix]) - else: - clsdir = ''.join(['./',gamecode]) - os.mkdir(clsdir) - except: - print '%s : can not create dir %s' % (sys.argv[0],clsdir) - - #--- write properties - properties = open(''.join([clsdir,'/properties']),'w') - properties.write('TITLE_ID\t\t\t\t%08x%08x\n' % (titleId_H, titleId_L)) - properties.write('TITLE_NAME\t\t\t\t%s\n' % gamecode) - properties.write('TITLE_TYPE\t\t\t\t%s\n' % 'TWL_SYS') - properties.write('PASSWORD\t\t\t\t%s\n' % randstr(64)) - properties.write('ALLOW_COMMON_TICKET\t\t%s\n' % '1') - - #--- make version dir - verdir = ''.join([clsdir,'/v',str(titleVersion)]) - try: - os.mkdir(verdir) - except: - print '%s : can not create dir %s' % (sys.argv[0],verdir) - else: - shutil.copy(tadfile,verdir) - -if __name__ == '__main__': - sys.exit(main() or 0) \ No newline at end of file diff --git a/build/tests/CustomSystemUpdater/work/pickup_tad.dev.sh b/build/tests/CustomSystemUpdater/work/pickup_tad.dev.sh deleted file mode 100755 index 98479574..00000000 --- a/build/tests/CustomSystemUpdater/work/pickup_tad.dev.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh -#! bash -f - -#---- commands -LS='/bin/ls' -ECHO='/bin/echo' -HEAD='/bin/head' -FIND='/bin/find' -COPY='/bin/cp' -DATE='/bin/date' -XARGS='/bin/xargs' -MKDIR='/bin/mkdir' -CHDIR='cd' - -#---- values -aqua_server='//10.116.1.5' -debug_dir="${aqua_server}/TWL_debug/sysmenu/rom/debug_rom" -redroms="${debug_dir}/sd.roms.template*" -clsbase="${debug_dir}/CLS_base" -datedir=`${DATE} +%Y%m%d` -regions='jp usa euro aus' - -#---- call pickup_tad.pl -${ECHO} "===== getting latest apps files =====" -perl ./pickup_tad.pl - -#---- gets the latest sd.roms.template roms -#redrom_dir=`${LS} -d --full-time ${redroms} | sort -k 7,10 | tail -n 1` -redrom_dir=`${LS} -dt ${redroms} | ${HEAD} -n 1` -${ECHO} -e "===== getting sd.roms.template* rom files =====" -${ECHO} -e "sd.roms.template dir : ${redrom_dir}" -${ECHO} -e "copy *.(tad|dat|nand) file -> ${datedir} dir\n" -${FIND} ${redrom_dir} -regextype posix-egrep -regex ".*.(tad|dat|nand)" | ${XARGS} ${COPY} -fut ${datedir} > /dev/null - -#---- gets the cls base roms -${ECHO} -e "===== getting sd.roms.template* rom files =====" -${ECHO} -e "CLS_base dir : ${clsbase}" -${ECHO} -e "copy *.tad file -> ${datedir} dir" -${FIND} ${clsbase} -name "*.tad" | ${XARGS} ${COPY} -fut ${datedir} > /dev/null - -#---- call mkcls.py -${ECHO} -e "===== create forcls dirs =====" -${MKDIR} ${datedir}_forcls -${CHDIR} ${datedir}_forcls -${FIND} ../${datedir} -name "*.tad" -exec ../mkcls.py {} \; - -${ECHO} -e "===== copy *.nand *.dat files -> (jp|usa|euro|aus) dirs =====\n" -for region in ${regions} -do - ${MKDIR} ${region} - ${COPY} ../${datedir}/*.nand ${region} - ${COPY} ../${datedir}/*.dat ${region} -done - -${COPY} ../cls.sh ./ \ No newline at end of file diff --git a/build/tests/CustomSystemUpdater/work/pickup_tad.pl b/build/tests/CustomSystemUpdater/work/pickup_tad.pl deleted file mode 100755 index b003899e..00000000 --- a/build/tests/CustomSystemUpdater/work/pickup_tad.pl +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/perl -w -I/usr/local/bin -use File::Copy; -use File::Copy::Recursive qw(fcopy rcopy dircopy); -use Class::Struct; -use POSIX 'strftime'; -use File::Find; - -require "util.pl"; - -my @apps = ("download_play", - "full_browser", - "nintendo_spot", - "photo", - "pictchat", - "shop", - "sound", - "sysmenu"); - -my $flgDate = 0; - -my $i; -my $date_dir = ""; -my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); -my $str_today = sprintf("%04d%02d%02d", $year+1900, $mon+1, $mday); -my $flghelp = 0; -my $err; -my @list_tad; - - -for ($i = 0; $i < $#ARGV+1; $i++) { - - my $opt = $ARGV[$i]; - - if ( $opt eq "-d" ) { - $flgDate = 1; - unless ( $#ARGV <= $i ) { - #$date_dir = $aqua_dir."/SD_".$ARGV[$i+1]; - $str_today = $ARGV[$i+1]; - $err = [ 1, "Not date (\"$date_dir\") !!"] if ( $date_dir !~ /[0-9]{8}/ ); - $i++; - - } else { - $err = [1,"No argument after -d !!"]; - } - } elsif ( $opt eq "-h" ) { - &show_help; - exit 0; - } else { - print "Unknown option: $opt\n"; - &show_help; - exit 1; - } - do { - print "*** Error *** : $err->[1]"; - exit 1; - } if ( $err->[0] ); -} - -# each application directory -foreach $app ( @apps ) -{ - my $dir_date; - #$dir_app = sprintf('//Aqua/TWL_debug/%s/rom/tad', $app); -$dir_app = sprintf('//10.116.1.5/TWL_debug/%s/rom/tad', $app); - $dir_app_date = &search_date_dir($dir_app); - - print "* $dir_app\n - $dir_app_date\n\n"; - - find( sub - { - do { - push @list_tad, $File::Find::name }if (/\.tad$/); - }, $dir_app_date - ); - #foreach ( @list_tad ) { print " * $_\n"; } -} - -#print "Date: $date_dir\n"; - -# Actually not today -mkdir($str_today); - -# copy to the local date directory -foreach ( @list_tad ) { - print("$_\n"); - copy($_, $str_today); -} - -# -exit 0; - -#----------------------------------------------------------------------- -# name : show_help -# function : -#----------------------------------------------------------------------- -sub show_help -{ -print <<__MSG_HELP__; -Usage: -\$ perl pickup_tad.pl [-d yyyymmdd] -__MSG_HELP__ -} - -#----------------------------------------------------------------------- -# name : search_date_dir -# function : -#----------------------------------------------------------------------- -sub search_date_dir -{ - my $root_dir; - my $date_dir; - my $prefix = ($#_<1) ? "" : $_[1]; - my $full_prefix; - my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); - - $year += 1900; - $mon += 1; - - $root_dir = ( $#_ < 0 ) ? "." : $_[0]; - - $full_prefix = $root_dir."/".$prefix; - $date_dir = $full_prefix.sprintf("%04d%02d%02d", $year, $mon, $mday); - - # search directory on going back date - while ( $year >= 2000 ) { - if ( -e "$date_dir" and -d "$date_dir") { - return "$date_dir"; - } else { - $mday -= 1; - $date_dir = $full_prefix.sprintf("%04d%02d%02d", $year, $mon, $mday); - } - do { - $mday = 31; # constant - $mon -= 1; - unless ( $mon ) { - $mon = 12; - $year -= 1; - } - } unless ( $mday ) ; - } - print "*** Error *** : Can't find the date directory !!\n"; - return 0; -} - -__END__ - diff --git a/build/tests/CustomSystemUpdater/work/toaqua.rb b/build/tests/CustomSystemUpdater/work/toaqua.rb deleted file mode 100755 index 3840ed68..00000000 --- a/build/tests/CustomSystemUpdater/work/toaqua.rb +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/ruby -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: toaqua.sh -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -require "find" -require "fileutils" - -REGION_DIR = { - "U" => ["aus"], - "E" => ["usa"], - "J" => ["jp"], - "P" => ["euro"], - "A" => ["aus", "usa", "jp", "euro"], -} - -VERUP_DIR = "verup" -VERUP_CLS = "#{VERUP_DIR}/cls" -VERUP_TAD = "#{VERUP_DIR}/tad" - -def proc(target_dir, output_dir) - Find.find(target_dir){ |path| - next unless File.file?(path) && (/[a-z0-9A-Z]{4}-.*v[0-9]+\.tad\.out/ =~ path) != nil -# p path - src = path - - # ƒfƒBƒŒƒNƒgƒŠ“à‚Ìtadƒtƒ@ƒCƒ‹‚Ì.tad‚æ‚è‘O‚ðŽæ‚èo‚· - dest = "" - version = "" - Find.find(File.split(src)[0]){|tad| - # .tad ‚ªŒ©‚‚©‚Á‚½ - if (/.*\.tad\z/ =~ tad) != nil - dest = File.split(tad)[1] - end - if (/.*\.cls\z/ =~ tad) != nil - p tad - version = tad.slice(/v[0-9]+/) - end - } - dest = /\.tad/.match(dest).pre_match + "-" + version + ".tad" - # ƒŠ[ƒWƒ‡ƒ“‚ð”»•Ê‚µ‚ăRƒs[ - regions = REGION_DIR[File.split(src)[1][3..3]] - for region in regions do - if version != "v0" - p version - p src - system("cp #{src} #{[output_dir, "#{VERUP_TAD}", dest].join("/")}") - system("cp #{src.sub(/\.tad\.out/, ".cls")} #{[output_dir, "#{VERUP_CLS}", dest.sub(/\.tad/, ".cls")].join("/")}") - else - system("cp #{src} #{[output_dir, region, dest].join("/")}") - end - end - } - -end - -# ‚±‚Á‚©‚烃Cƒ“ - -if ARGV.size < 1 - $stdout.printf("Usage:#{__FILE__} target_clsed_dir output_dir") - exit -1 -end -src = ARGV[0].sub(/\/\z/, "") -out = "#{src}_foraqua" -system("mkdir #{out}") -system("mkdir #{out}/aus") -system("mkdir #{out}/usa") -system("mkdir #{out}/euro") -system("mkdir #{out}/jp") -system("mkdir #{out}/#{VERUP_DIR}") -system("mkdir #{out}/#{VERUP_CLS}") -system("mkdir #{out}/#{VERUP_TAD}") - -system("cp -rf #{src}/aus #{out}") -system("cp -rf #{src}/usa #{out}") -system("cp -rf #{src}/euro #{out}") -system("cp -rf #{src}/jp #{out}") - -proc(src, out) - diff --git a/build/tests/CustomSystemUpdater/work/tocls.sh b/build/tests/CustomSystemUpdater/work/tocls.sh deleted file mode 100755 index b7725bb5..00000000 --- a/build/tests/CustomSystemUpdater/work/tocls.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/sh -#! bash -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: conv2svnDir.sh -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - - -if [ $# -lt 1 ]; -then - echo "input target dir name" - exit -fi - -target=`echo $1 | sed -e 's/\/$//'` -target=$target"_forcls" -echo $target - -mkdir $target -cd $target -find ../$1 -name "*.tad" -exec ../mkcls.py {} \; -cp ../cls.sh ./ - -# nandƒtƒ@[ƒ€‚ÆAƒtƒHƒ“ƒg‚ðˆê‰žƒŠ[ƒWƒ‡ƒ“–ˆ‚ɃRƒs[ -mkdir jp -mkdir aus -mkdir usa -mkdir euro - -cp `find ../$1/jp -name "*.nand"` jp -cp `find ../$1/jp -name "*.nand"` aus -cp `find ../$1/jp -name "*.nand"` usa -cp `find ../$1/jp -name "*.nand"` euro -cp `find ../$1/jp -name "*.dat"` jp -cp `find ../$1/jp -name "*.dat"` aus -cp `find ../$1/jp -name "*.dat"` usa -cp `find ../$1/jp -name "*.dat"` euro - - diff --git a/build/tests/CustomSystemUpdater/work/tocsu.sh b/build/tests/CustomSystemUpdater/work/tocsu.sh deleted file mode 100755 index c4d9ea7d..00000000 --- a/build/tests/CustomSystemUpdater/work/tocsu.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh -#! bash -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools -# File: tocsu.sh -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - - - -if [ $# -lt 1 ]; -then - echo "input target dir name" - exit -fi - - -target=`echo $1 | sed -e 's/\/$//'` -target=$target"_forcsu" -echo $target - - -tmp=`echo $1 | sed -e 's/\/$//'`_tmp -mkdir $target -cd $target - -mkdir jp -mkdir aus -mkdir usa -mkdir euro - -cp -rf ../$1/jp . -cp -rf ../$1/aus . -cp -rf ../$1/usa . -cp -rf ../$1/euro . - -mkdir verup -mkdir $tmp - -find ../$1 -name "*.out" -exec cp {} $tmp \; - -find $tmp -regex "[^/]*/...[jaJA].*v0\.tad\.out" | gawk -F/ '{printf("cp %s jp/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > jp.sh -find $tmp -regex "[^/]*/...[uaUA].*v0\.tad\.out" | gawk -F/ '{printf("cp %s aus/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > aus.sh -find $tmp -regex "[^/]*/...[paPA].*v0\.tad\.out" | gawk -F/ '{printf("cp %s euro/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > euro.sh -find $tmp -regex "[^/]*/...[eaEA].*v0\.tad\.out" | gawk -F/ '{printf("cp %s usa/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > usa.sh -find $tmp -regex "[^/]*/.*v[^0][0-9]*\.tad\.out" | gawk -F/ '{printf("cp %s verup/%s\n",$0, $2)}' | sed -e 's/\.out$//g' > verup.sh - -./jp.sh -./aus.sh -./euro.sh -./usa.sh -./verup.sh - -mv $tmp ../ -rm -rf *.sh diff --git a/build/tests/CustomSystemUpdater/work/util.pl b/build/tests/CustomSystemUpdater/work/util.pl deleted file mode 100755 index e6d9a075..00000000 --- a/build/tests/CustomSystemUpdater/work/util.pl +++ /dev/null @@ -1,110 +0,0 @@ - -package util; - -#----------------------------------------------------------------------- -# name : get_title_version -# function : get the title version from the specified tad file -#----------------------------------------------------------------------- -sub get_title_version { - - my $titleVersion = 0 ; - my $cmdPython = "/usr/bin/python.exe"; - my $scrpPython = "/usr/local/bin/mkcls.py"; - $tad = $_[0]; - - open(PY, "$cmdPython $scrpPython $tad | ") or die "$!"; - $titleVersion = $1 if ( =~ /([0-9]{1,})/) ; - close(PY); - - $titleVersion; -} - -#----------------------------------------------------------------------- -# name : get_nlist -# function : get the list of the specified directory except "." and ".." -#----------------------------------------------------------------------- -sub get_nlist { - my $dirname = ( $#_ < 0) ? "." : $_[0]; - my @list; - - unless ( opendir(DIR, "$dirname") ) { - print "Can't open directory: $dirname\n"; - return ""; - } - - foreach $node ( readdir(DIR) ) { - push(@list, $node) unless ( $node =~ /^\.{1,2}$/ ); - } - closedir(DIR); - - @list; -} - - -#----------------------------------------------------------------------- -# name : fecheck -# function : check the specified file existence (Error if no file) -#----------------------------------------------------------------------- -sub fecheck { - my $filename = $_[0]; - unless ( -e $filename ) { -print </dev/null && \ - $(MAKEBANNER) -d -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -#---------------------------------------------------------------------------- -# test -#---------------------------------------------------------------------------- -#include $(NITROSDK_ROOT)/build/buildtools/commondefs.emtype.ISD - -test: $(TARGETS) - $(ADDBANNER) $(TARGETS) $(TARGETS:.bnr=.srl) -ifdef ISD_NITLOAD - $(ISD_NITLOAD) $(TARGETS:.bnr=.srl) -endif - -# diff --git a/build/tests/DispOwnerInfo/banner/myGameBanner.bsf b/build/tests/DispOwnerInfo/banner/myGameBanner.bsf deleted file mode 100644 index 3c65700e..00000000 Binary files a/build/tests/DispOwnerInfo/banner/myGameBanner.bsf and /dev/null differ diff --git a/build/tests/DispOwnerInfo/banner/myGameIcon.bmp b/build/tests/DispOwnerInfo/banner/myGameIcon.bmp deleted file mode 100644 index 0b2bcfd1..00000000 Binary files a/build/tests/DispOwnerInfo/banner/myGameIcon.bmp and /dev/null differ diff --git a/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bncmp b/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bncmp deleted file mode 100644 index 29754732..00000000 Binary files a/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bncmp and /dev/null differ diff --git a/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bnfr b/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bnfr deleted file mode 100644 index 36525719..00000000 Binary files a/build/tests/DispOwnerInfo/data/NITRO_LC_Font_s.bnfr and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f08han.dat b/build/tests/DispOwnerInfo/font/f08han.dat deleted file mode 100644 index 11a56ec7..00000000 Binary files a/build/tests/DispOwnerInfo/font/f08han.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f08zen.dat b/build/tests/DispOwnerInfo/font/f08zen.dat deleted file mode 100644 index c36ef492..00000000 Binary files a/build/tests/DispOwnerInfo/font/f08zen.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f10han.dat b/build/tests/DispOwnerInfo/font/f10han.dat deleted file mode 100644 index 8917e0f0..00000000 Binary files a/build/tests/DispOwnerInfo/font/f10han.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f10zen.dat b/build/tests/DispOwnerInfo/font/f10zen.dat deleted file mode 100644 index 256b04c1..00000000 Binary files a/build/tests/DispOwnerInfo/font/f10zen.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f12han.dat b/build/tests/DispOwnerInfo/font/f12han.dat deleted file mode 100644 index 08bd466f..00000000 Binary files a/build/tests/DispOwnerInfo/font/f12han.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f12zen.dat b/build/tests/DispOwnerInfo/font/f12zen.dat deleted file mode 100644 index ee38836d..00000000 Binary files a/build/tests/DispOwnerInfo/font/f12zen.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f16han.dat b/build/tests/DispOwnerInfo/font/f16han.dat deleted file mode 100644 index 6477fda3..00000000 Binary files a/build/tests/DispOwnerInfo/font/f16han.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/font/f16zen.dat b/build/tests/DispOwnerInfo/font/f16zen.dat deleted file mode 100644 index 2e1f78f7..00000000 Binary files a/build/tests/DispOwnerInfo/font/f16zen.dat and /dev/null differ diff --git a/build/tests/DispOwnerInfo/include/fnt.h b/build/tests/DispOwnerInfo/include/fnt.h deleted file mode 100644 index 3f9d6b63..00000000 --- a/build/tests/DispOwnerInfo/include/fnt.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef FNT_H_ -#define FNT_H_ - -#include "fnt/fnt_enum.h" -#include "fnt/fnt_struct.h" -#include "fnt/fnt_func.h" -#include "fnt/fnt_data.h" - -#endif // FNT_H_ diff --git a/build/tests/DispOwnerInfo/include/fnt/fnt_data.h b/build/tests/DispOwnerInfo/include/fnt/fnt_data.h deleted file mode 100644 index e4a7f162..00000000 --- a/build/tests/DispOwnerInfo/include/fnt/fnt_data.h +++ /dev/null @@ -1,32 +0,0 @@ -extern u8 NITRO_LC_Font_t_bncmp[]; -extern u8 NITRO_LC_Font_t_bncmp_end[]; -extern u8 NITRO_LC_Font_t_bnfr[]; -extern u8 NITRO_LC_Font_t_bnfr_end[]; -extern u8 NITRO_LC_Font_s_bncmp[]; -extern u8 NITRO_LC_Font_s_bncmp_end[]; -extern u8 NITRO_LC_Font_s_bnfr[]; -extern u8 NITRO_LC_Font_s_bnfr_end[]; -extern u8 NITRO_LC_Font_Chinese_t_bncmp[]; -extern u8 NITRO_LC_Font_Chinese_t_bncmp_end[]; -extern u8 NITRO_LC_Font_Chinese_t_bnfr[]; -extern u8 NITRO_LC_Font_Chinese_t_bnfr_end[]; -extern u8 NITRO_LC_Font_Chinese_s_bncmp[]; -extern u8 NITRO_LC_Font_Chinese_s_bncmp_end[]; -extern u8 NITRO_LC_Font_Chinese_s_bnfr[]; -extern u8 NITRO_LC_Font_Chinese_s_bnfr_end[]; -extern u8 NITRO_LC_Font_Hangul_t_bncmp[]; -extern u8 NITRO_LC_Font_Hangul_t_bncmp_end[]; -extern u8 NITRO_LC_Font_Hangul_t_bnfr[]; -extern u8 NITRO_LC_Font_Hangul_t_bnfr_end[]; -extern u8 NITRO_LC_Font_Hangul_s_bncmp[]; -extern u8 NITRO_LC_Font_Hangul_s_bncmp_end[]; -extern u8 NITRO_LC_Font_Hangul_s_bnfr[]; -extern u8 NITRO_LC_Font_Hangul_s_bnfr_end[]; -extern u8 NITRO_LC_Font_s_NAT_WW_bncmp[]; -extern u8 NITRO_LC_Font_s_NAT_WW_bncmp_end[]; -extern u8 NITRO_LC_Font_s_NAT_WW_bnfr[]; -extern u8 NITRO_LC_Font_s_NAT_WW_bnfr_end[]; -extern u8 NITRO_LC_Font_s_NAT_KR_bncmp[]; -extern u8 NITRO_LC_Font_s_NAT_KR_bncmp_end[]; -extern u8 NITRO_LC_Font_s_NAT_KR_bnfr[]; -extern u8 NITRO_LC_Font_s_NAT_KR_bnfr_end[]; diff --git a/build/tests/DispOwnerInfo/include/fnt/fnt_enum.h b/build/tests/DispOwnerInfo/include/fnt/fnt_enum.h deleted file mode 100644 index e78252fc..00000000 --- a/build/tests/DispOwnerInfo/include/fnt/fnt_enum.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef FNT_ENUM_H_ -#define FNT_ENUM_H_ - -enum tFntDrawContextType -{ - FNT_DCTYPE_4BITS, - FNT_DCTYPE_8BITS, - FNT_DCTYPE_LAST -}; - -enum tFntPosXOrigin -{ - FNT_POSX_ORIGIN_LEFT, - FNT_POSX_ORIGIN_CENTER, - FNT_POSX_ORIGIN_RIGHT, - FNT_POSX_ORIGIN_LAST -}; - -enum tFntPosYOrigin -{ - FNT_POSY_ORIGIN_TOP, - FNT_POSY_ORIGIN_CENTER, - FNT_POSY_ORIGIN_BOTTOM, - FNT_POSY_ORIGIN_LAST -}; - -enum tFntTextHAlign -{ - FNT_H_ALIGN_LEFT, - FNT_H_ALIGN_CENTER, - FNT_H_ALIGN_RIGHT, - FNT_H_ALIGN_LAST -}; - -#endif // FNT_ENUM_H_ diff --git a/build/tests/DispOwnerInfo/include/fnt/fnt_func.h b/build/tests/DispOwnerInfo/include/fnt/fnt_func.h deleted file mode 100644 index 196749b5..00000000 --- a/build/tests/DispOwnerInfo/include/fnt/fnt_func.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef FNT_FUNC_H_ -#define FNT_FUNC_H_ - -// fnt_utils.c -extern int fnt_GetLeftFromOrigin( tFntPosition posx, int width ); -extern int fnt_GetTopFromOrigin ( tFntPosition posy, int height ); - -// fnt_font.c -extern void fnt_CreateFont ( tFntEntry* font, const void* fontRsrc, const void* cmapRsrc ); -extern void fnt_CreateDrawContext( tFntDrawContext* dc, u16* canvas, u16 width, u16 height, int type, tFntEntry* font ); - -extern void fnt_DrawLetter ( tFntEntry* font, tFntDrawContext* dc, s32 x, s32 y, u16 letter, int palette ); -extern void fnt_DrawLetterGlyph( tFntEntry* font, tFntDrawContext* dc, s32 x, s32 y, u16 glyph, int palette ); -extern void fnt_DrawString ( tFntEntry* font, tFntDrawContext* dc, tFntPosition posx, tFntPosition posy, int step_x, int step_y, const u16* str, int palette ); -extern int fnt_GetLetterWidth ( tFntEntry* font, u16 letter ); -extern int fnt_GetLetterOffset( tFntEntry* font, u16 letter ); -extern void fnt_DrawLetterGlyphFast( tFntEntry* font, tFntDrawContext* dc, s32 x, s32 y, u16 glyph, int palette ); -extern BOOL fnt_SetDefaultLetter( tFntEntry* font, u16 letter ); - -extern const u16* fnt_GetLineWidth ( tFntEntry* font, const u16* str, int* pwidth, int step_x ); -extern int fnt_GetStringWidth ( tFntEntry* font, const u16* str, int step_x ); -extern int fnt_GetStringHeight( tFntEntry* font, const u16* str, int step_y ); - -extern void fnt_ClearRect( tFntDrawContext* dc, u16 x, u16 y, u16 height, u16 width ); - - -// fnt_layout.c -extern void fnt_DrawMessage ( tFntDrawContext* dc, tFntMessage* message, const u16* mes_data ); -extern void fnt_DrawLetterLayout( tFntDrawContext* dc, const void* layout ); -extern tFntMessage* fnt_GetFntMessage ( const void* layout, int index ); -extern const u16* fnt_GetMessage ( const void* layout, int index ); -extern int fnt_GetMessageNum ( const void* layout ); -extern int fnt_LoadCelltoOam ( const void* celldata, GXOamAttr* poam, tFntPosition posx, tFntPosition posy, int cell_index ); -extern int fnt_DrawCellLayout ( const void* celldata, const void* layout, GXOamAttr* poam ); - -// fnt_celldata.c -extern int fnt_GetCellOamNum ( const void* celldata, int index ); -extern tFntCellCharInfo* fnt_GetCellCharInfo ( const void* celldata, int index ); -extern tFntCellCharOam* fnt_GetCellOam ( const void* celldata, int index ); -extern const void* fnt_GetCellObjChar ( const void* celldata ); -extern u32 fnt_GetCellObjCharSizeAll( const void* celldata ); -extern int fnt_GetCellCharVramMode ( const void* celldata ); -extern int fnt_GetCellCharNameShift ( const void* celldata ); - -// fnt_touch.c -extern int fnt_GetFntRegionNum ( const void* base ); -extern tFntRegion* fnt_GetFntRegion ( const void* base, int index ); -extern int fnt_GetHitFntRegionIndex( const void* base, int x, int y ); - -#endif // FNT_FUNC_H_ diff --git a/build/tests/DispOwnerInfo/include/fnt/fnt_struct.h b/build/tests/DispOwnerInfo/include/fnt/fnt_struct.h deleted file mode 100644 index 9ff11878..00000000 --- a/build/tests/DispOwnerInfo/include/fnt/fnt_struct.h +++ /dev/null @@ -1,224 +0,0 @@ -#ifndef FNT_STRUCT_H_ -#define FNT_STRUCT_H_ - -/** -------------------------------------------------------------------- - ƒZƒ‹î•ñ\‘¢‘Ì - ----------------------------------------------------------------------*/ -typedef struct tagFntCellInfo -{ - u16 width : 5; // Å‘å32 - u16 height : 5; // Å‘å32 - u16 dummy : 6; -} tFntCellInfo; - -/** -------------------------------------------------------------------- - •î•ñ\‘¢‘Ì - ----------------------------------------------------------------------*/ -typedef struct tagFntWidthEntry -{ - u16 offset : 8; // ƒIƒtƒZƒbƒgi‘‚«‚Í‚¶‚߂܂ł̃sƒNƒZƒ‹”j - u16 width : 8; // • -} tFntWidthEntry; - -/** -------------------------------------------------------------------- - ƒtƒHƒ“ƒgCMAP‚̘A‘±—̈æ—p\‘¢‘Ì - ----------------------------------------------------------------------*/ -typedef struct tagFntCtEntry -{ - u16 start; - u16 end; -} tFntCtEntry; - -/** -------------------------------------------------------------------- - ƒtƒHƒ“ƒgŠÇ—\‘¢‘Ì - ----------------------------------------------------------------------*/ -typedef struct tagFntEntry -{ - const u16* font_image; // ƒtƒHƒ“ƒgƒCƒ[ƒW‚ւ̃|ƒCƒ“ƒ^ - const u16* cmap; // ƒR[ƒh->glyph•ÏŠ·—pcmap‚ւ̃|ƒCƒ“ƒ^ - tFntCtEntry* ctmap; // ƒR[ƒh->glyph•ÏŠ·—pcmap‚ւ̃|ƒCƒ“ƒ^ - tFntWidthEntry* width_table; // •ƒe[ƒuƒ‹ - u16 glyph_num; // glyph” - u16 default_glyph; // Œ©‚‚©‚ç‚È‚©‚Á‚½‚Æ‚«‚ÉŽg‚í‚ê‚é•¶Žš‚Ìglyph - s16 cell_size; // ˆê•¶Žš‚̃Zƒ‹ƒTƒCƒYiƒ[ƒh’PˆÊj - tFntCellInfo cell_info; // ƒZƒ‹‚Ìî•ñ - u16 cmap_num; // glyph_comp == 1‚̂Ƃ«‚Ìcmap‚Ì” - u16 ctmap_num; // glyph_comp == 1‚̂Ƃ«‚Ìctmap‚Ì” - u32 glyph_sort : 1; // ƒOƒŠƒt‚ªƒ\[ƒg‚³‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚© - u32 glyph_comp : 1; // ƒOƒŠƒt‚̘A‘±‚³‚ê‚Ä‚¢‚é•”•ª‚ªˆ³k‚³‚ê‚Ä‚¢‚é‚©‚Ç‚¤‚© -} tFntEntry; - -/** -------------------------------------------------------------------- - •`‰æ‚·‚éæ‚ÌƒfƒoƒCƒXƒRƒ“ƒeƒLƒXƒgŠÇ—\‘¢‘Ì - ----------------------------------------------------------------------*/ -typedef struct tagFntDrawContext -{ - u16* canvas; - u16 width; - u16 height; - u16 canvas_type; - u8 pad[2]; - tFntEntry* font; -} tFntDrawContext; - - -/** -------------------------------------------------------------------- - ƒŒƒCƒAƒEƒg•\ަ—p‚Ì\‘¢‘Ì - ----------------------------------------------------------------------*/ -/** -------------------------------------------------------------------- - ƒŒƒCƒAƒEƒgƒwƒbƒ_[ - ----------------------------------------------------------------------*/ -typedef struct tagFntLayoutHeader -{ - u8 name[4]; - u16 version; - u16 table_num; -} tFntLayoutHeader; - -/** -------------------------------------------------------------------- - CMAPƒwƒbƒ_[ - ----------------------------------------------------------------------*/ -typedef struct tagFntCmapHeader -{ - u32 ct_offset; - u32 cm_offset; -} tFntCmapHeader; - -/** -------------------------------------------------------------------- - ƒŒƒCƒAƒEƒg•\ަ‚Ì‚½‚߂̃ƒbƒZ[ƒW\‘¢‘Ì - ----------------------------------------------------------------------*/ -typedef struct tagFntPosition -{ - s16 pos : 12; - u16 pos_origin : 2; - u16 text_align : 2; -} tFntPosition; // ‚±‚Ì錾‚Å‚àA2Bytes‚É‚«‚¿‚ñ‚ÆŽû‚Ü‚éBˆ—Œn‚É‚æ‚Á‚Ä‚ÍAsizeof()‚Ń`ƒFƒbƒN‚·‚邱‚ÆB - - - - -/** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - •¶ŽšƒŒƒCƒAƒEƒg‚ð•\ަ‚·‚邽‚ß‚Ì\‘¢‘ÌB - - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ -/** -------------------------------------------------------------------- - ƒƒbƒZ[ƒW\‘¢‘Ì - - ƒƒbƒZ[ƒWƒf[ƒ^‚ÍA - tFntLayoutHeader header; - tFntMessage message[header.table_num]; - ‚Å\¬‚³‚ê‚Ü‚·B - ----------------------------------------------------------------------*/ -typedef struct tagFntMessage -{ - // ˆÊ’u - tFntPosition x; - tFntPosition y; - - // •¶ŽšŠÔŠu - s16 spacing_x : 8; - s16 spacing_y : 8; - - // F - u16 color : 8; - u16 palette : 4; - u16 font : 4; - - // ƒƒbƒZ[ƒW‚ւ̃IƒtƒZƒbƒg - u32 offset; -} tFntMessage; - - - - -/** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - OBJ‚̃Zƒ‹‚ðˆµ‚¤‚½‚ß‚Ì\‘¢‘Ì - - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ -/** -------------------------------------------------------------------- - ƒZƒ‹î•ñ\‘¢‘Ì - - ƒZƒ‹ƒf[ƒ^‚ÍA - tFntLayoutHeader header; - tFntCell cell[header.table_num]; - ‚Å\¬‚³‚ê‚Ü‚·B - ----------------------------------------------------------------------*/ -typedef struct tagFntCell -{ - // ˆÊ’u - tFntPosition x; - tFntPosition y; - - // ƒZƒ‹ƒLƒƒƒ‰ƒNƒ^‚ւ̃Cƒ“ƒfƒbƒNƒX - u32 cell_index; -} tFntCell; - -/** -------------------------------------------------------------------- - ƒZƒ‹ƒLƒƒƒ‰ƒNƒ^î•ñ\‘¢‘Ì - - ƒZƒ‹ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‚ÍA - tFntLayoutHeader header; - tFntCellCharHeader char_header; - tFntCellCharInfo cellchar_info[header.table_num]; - tFntCellCharOam cellchar_oam[]; - u16 char_data[]; - ‚Å\¬‚³‚ê‚Ü‚·B - ----------------------------------------------------------------------*/ -/** -------------------------------------------------------------------- - ƒZƒ‹ƒLƒƒƒ‰ƒNƒ^ƒwƒbƒ_ - ----------------------------------------------------------------------*/ -typedef struct tagFntCellCharHeader -{ - u32 cell_offset; // tFntCellChar”z—ñ‚ւ̃IƒtƒZƒbƒg - u32 oam_offset; // tFntOamChar”z—ñ‚ւ̃IƒtƒZƒbƒg - u32 char_offset; // ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‚ւ̃IƒtƒZƒbƒg - u32 char_size; // ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‚̃TƒCƒY - u32 char_mode : 3; // OBJVRAMMODE_CHAR_1D‚ÌEXOBJƒtƒ‰ƒO -} tFntCellCharHeader; - -/** -------------------------------------------------------------------- - ƒZƒ‹ƒLƒƒƒ‰ƒNƒ^î•ñ - ----------------------------------------------------------------------*/ -typedef struct tagFntCellCharInfo -{ - u16 width : 8; // ƒZƒ‹‚̑傫‚³î•ñB - u16 height : 8; - u16 oam_index; // oam_offset[oam_index] ‚©‚çA - u16 oam_num; // oam_num•ª‚¾‚¯‚Ìoam‚ðŽg—p‚µ‚Ü‚·B -} tFntCellCharInfo; - -/** -------------------------------------------------------------------- - OAMî•ñ - ----------------------------------------------------------------------*/ -typedef struct tagFntCellCharOam -{ - GXOamAttr attr; // CharName‚Ì•”•ª‚ÍAŽg—p‚µ‚Ü‚¹‚ñBiƒ[ƒhˆÊ’u‚ðƒ†[ƒU’è‹`‚É‚·‚邽‚ßBj - u16 char_index; // ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‚̃Cƒ“ƒfƒbƒNƒXB - u16 char_num; // ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‚Ì”BiÅ‘åA64‚®‚ç‚¢j -} tFntCellCharOam; - - - - -/** ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - - ƒ^ƒbƒ`‚ÌêŠ‚ðŽæ“¾‚·‚邽‚ß‚Ì\‘¢‘Ì - - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ -/** -------------------------------------------------------------------- - ƒŠ[ƒWƒ‡ƒ“î•ñ - ----------------------------------------------------------------------*/ -typedef struct tagFntRegion -{ - // ˆÊ’u - tFntPosition x; - tFntPosition y; - - // ƒTƒCƒY - u16 width : 8; // ƒZƒ‹‚̑傫‚³î•ñB - u16 height : 8; -} tFntRegion; - -#endif // FNT_STRUCT_H_ diff --git a/build/tests/DispOwnerInfo/main.rsf b/build/tests/DispOwnerInfo/main.rsf deleted file mode 100644 index cc22e856..00000000 --- a/build/tests/DispOwnerInfo/main.rsf +++ /dev/null @@ -1,41 +0,0 @@ -# -# Nitro ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).sbin" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.sbin" - OverlayTable "$(MAKEROM_ARM9:r)_table.sbin" - Nef "$(MAKEROM_ARM9:r).nef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7:r).sbin" - OverlayDefs "$(MAKEROM_ARM7:r)_defs.sbin" - OverlayTable "$(MAKEROM_ARM7:r)_table.sbin" - Nef "$(MAKEROM_ARM7:r).nef" -} - -Property -{ - BannerFile ./banner/myGameBanner.bnr -# ForChina TRUE -# ForKorea TRUE -# RomSpeedType MROM -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - - Align 512 - Padding 0xFF - - HostRoot data - Root /data - File *.bncmp *.bnfr -} - diff --git a/build/tests/DispOwnerInfo/mlib/ARM9-TS/Release/libfnt.a b/build/tests/DispOwnerInfo/mlib/ARM9-TS/Release/libfnt.a deleted file mode 100644 index 8a3c5675..00000000 Binary files a/build/tests/DispOwnerInfo/mlib/ARM9-TS/Release/libfnt.a and /dev/null differ diff --git a/build/tests/DispOwnerInfo/mlib/ARM9-TS/Rom/libfnt.a b/build/tests/DispOwnerInfo/mlib/ARM9-TS/Rom/libfnt.a deleted file mode 100644 index 6d345064..00000000 Binary files a/build/tests/DispOwnerInfo/mlib/ARM9-TS/Rom/libfnt.a and /dev/null differ diff --git a/build/tests/DispOwnerInfo/readme.txt b/build/tests/DispOwnerInfo/readme.txt deleted file mode 100644 index 13d1e7b0..00000000 --- a/build/tests/DispOwnerInfo/readme.txt +++ /dev/null @@ -1,28 +0,0 @@ -ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì’†ŠØ‘Ήžî•ñ - -WW”ł̂ÝFrev.1‚æ‚è - - ƒTƒ“ƒvƒ‹@NitroSDK 2.00 : rev.1.34 - -’†‘‘ΉžFrev.1.35‚æ‚è - ƒTƒ“ƒvƒ‹@NitroSDK 2.01 : rev.1.38 - -ŠØ‘‘ΉžFrev.1.43‚æ‚è - ƒTƒ“ƒvƒ‹@TwlSDK 5.1PR1 : rev.* - - - -ƒrƒ‹ƒh•û–@ - -NitroSDK2.00, 2.01‚ÍACW1.00fc‚Ńrƒ‹ƒh‚µ‚Ä‚­‚¾‚³‚¢B -TwlSDK5.1PR1‚ÍACW1.02‚Ńrƒ‹ƒh‚µ‚Ä‚­‚¾‚³‚¢B‚Ü‚½ATWLSDK_PLATFORM=NITRO‚̊‹«‚Ńrƒ‹ƒh‚µ‚Ä‚­‚¾‚³‚¢B - -쬂·‚éƒoƒCƒiƒŠ‚ÌŽí—Þ -‰º‹L‘g‚݇‚킹‚ŃoƒCƒiƒŠ‚ð쬂µ‚Ü‚·B - -SDK | WW | CN | KR | --------------|----|----|----| -NitroSDK2.00 | › | ~ | ~ | -NitroSDK2.01 | › | › | ~ | -TwlSDK5.1PR1 | › | › | › | - diff --git a/build/tests/DispOwnerInfo/src/NitroConfigData.h b/build/tests/DispOwnerInfo/src/NitroConfigData.h deleted file mode 100644 index 23ff02f9..00000000 --- a/build/tests/DispOwnerInfo/src/NitroConfigData.h +++ /dev/null @@ -1,679 +0,0 @@ -/********************************************************************/ -/* NitroConfigData.h */ -/* NITRO-IPL */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - NITRÝ’èƒf[ƒ^’è‹`@ƒwƒbƒ_ - - - $Log: NitroConfigData.h,v $ - Revision 1.4.2.2.4.1.4.1 2007/01/22 07:36:16 yosiokat - NAT-IPL2‚ւ̑ΉžB - - Revision 1.4.2.5 2006/06/26 02:57:54 yosiokat - EŒ¾ŒêƒR[ƒh‚ðŠØ‘Œê‚ɑΉž‚³‚¹‚éB - Eˆê•”‚Ì’è‹`ƒf[ƒ^‚Ì–¼Ì•ÏXB - - Revision 1.4.2.4 2006/02/06 11:34:56 yosiokat - NCD_GetIPL2BM7RomAddrŠÖ”‚̒ljÁB - - Revision 1.4.2.3 2006/02/06 08:27:19 yosiokat - IPL2ƒo[ƒWƒ‡ƒ“‚Ì’è‹`‚ðIPLType.h‚Ì’è‹`’l‚ðŽg‚¤‚悤•ÏXB - - Revision 1.4.2.2 2005/10/31 08:49:57 yosiokat - USG_BACKLIGHT_DEFAULT‚ð"2"‚É•ÏXB - - Revision 1.4.2.1 2005/10/25 08:14:41 yosiokat - USG‘Ήž‚Ì‚½‚ßAˆÈ‰º‚Ì•ÏX‚ðs‚¤B - ENitroConfigData\‘¢‘Ì‚ÉbackLightBrightness‚ð’ljÁB - EIPL2_TYPE”»’è—p‚Ì’è”’è‹`‚ÉUSG‚Ì‚à‚Ì‚ð’ljÁB - - Revision 1.4 2005/04/01 05:45:04 yosiokat - ÅV”Å‚ÉXVB - - Revision 1.3 2005/03/31 06:06:54 yosiokat - NitroConfigDataƒAƒNƒZƒXŠÖ”‚Ì‘S–ʉü’èB - - Revision 1.31.2.2 2005/03/16 00:36:01 yosiokat - Œ¾ŒêƒR[ƒh‚Ì’†‘Œê’ljÁ‚É”º‚¤NitroConfigDataEx‚ÌVÝ‚ÆNitroConfigData‚̎戵‚¢‚Ì•ÏXB - - Revision 1.31.2.1 2005/03/11 11:08:56 yosiokat - ’†‘Œê‚̒ljÁB - - Revision 1.31 2005/02/15 02:38:27 yosiokat - NCD_CorrectData‚ÌíœB - - Revision 1.30 2005/02/07 11:12:03 yosiokat - NCD_CorrectData‚̒ljÁB - - Revision 1.29 2004/09/25 10:42:54 Yosiokat - NvOption“à‚Ìrsv—̈æ‚ÉrtcOffsetŽZo—pƒpƒ‰ƒ[ƒ^rtcLastSetYear‚ð•Û‘¶‚·‚邿‚¤•ÏXB - - Revision 1.28 2004/09/16 07:02:51 Yosiokat - ƒI[ƒi[î•ñ‚̃jƒbƒNƒl[ƒ€AD‚«‚ÈFA’a¶“ú‚ðƒNƒŠƒA‚·‚éNCD_ClearOwnerInfo‚̒ljÁB - - Revision 1.27 2004/09/01 09:18:35 Yosiokat - ENvOption‚ÉdestroyFlashFlag‚ð’ljÁB - Eã‹LƒAƒNƒZƒXŠÖ”NCD_GetDestroyFlashANCD_SetDestroyFlash‚ð’ljÁB - - Revision 1.26 2004/08/31 09:52:38 Yosiokat - small fix. - - Revision 1.25 2004/08/27 12:36:08 Yosiokat - IPL2_BUILD_‚ðSDK_SMALL_BUILD‚É•ÏXB - - Revision 1.24 2004/08/25 09:27:41 Yosiokat - E•K—v‚È‚­‚È‚Á‚½‰º‹L—v‘f‚ðrsv‚É•ÏXBiƒtƒH[ƒ}ƒbƒg‚̌݊·‚ð•ۂ‚½‚ßAƒf[ƒ^‚Í‹l‚߂Ȃ¢j - NvAlarm.second - NvAlarm.enableWeek - NvOption.detectPullOutCardFlag - NvOption.detectPullOutCtrdgFlag - NvOption.timezone - - Revision 1.23 2004/08/25 05:12:20 Yosiokat - ƒuƒ‰ƒ“ƒ`ƒ^ƒOred_ipl2_2004_08_24_pp2_isdbg_fix‚Ƃ̃}[ƒWB - - Revision 1.22 2004/08/25 01:28:23 Yosiokat - ENvOption.backLightOffFlag‚ªƒrƒbƒgƒtƒB[ƒ‹ƒh‚ɂȂÁ‚Ä‚¢‚È‚©‚Á‚½‚Ì‚ðC³B - ENvOption.input_birthdayƒtƒ‰ƒO‚ð’ljÁBƒAƒNƒZƒXŠÖ”NCD_GetInputBirthdayANCD_SetInputBirthday - ENCDStore‚ð32byte’PˆÊ‚̃TƒCƒY‚É‚È‚é‚æ‚¤’²®BiƒLƒƒƒbƒVƒ…ƒ‰ƒCƒ“‚É‚ ‚킹‚éj - - Revision 1.21 2004/08/23 08:24:23 Yosiokat - ƒoƒbƒNƒ‰ƒCƒgON,OFFƒtƒ‰ƒO‚ðIPl2_work‚©‚çÄ“xNitroConfigData‚É–ß‚·B - - Revision 1.20 2004/08/19 06:06:02 yosiokat - NitroConfigData‚ɃrƒbƒgƒtƒB[ƒ‹ƒh‚ªŽg‚í‚ê‚Ä‚¢‚邽‚ßA‘¼ƒRƒ“ƒpƒCƒ‰‚Å–â‘肪o‚é‰Â”\«‚ª‚ ‚éB - ‚Ƃ肠‚¦‚¸ASDK_CW‚ª’è‹`‚³‚ê‚Ä‚¢‚È‚¯‚ê‚ÎAƒwƒbƒ_‚ðØ‚Á‚ăGƒ‰[‚ðo‚³‚¹‚邱‚Æ‚ÅA‘¼ƒRƒ“ƒpƒCƒ‰‚Å–â‘肪‚È‚¢‚©‚ðŠm”F‚Å‚«‚邿‚¤‚É‚µ‚Ä‚¨‚­B - - Revision 1.19 2004/08/18 07:33:00 Yosiokat - ENCD_FAVORITE_COLOR_MAX_NUM’ljÁB - ENitroConfigData.option.input_favoriteColor’ljÁB - - Revision 1.18 2004/08/17 05:44:19 Nakasima - EtopLcdBackLightOff‚ðNitroConfigData‚©‚çIPL2_work‚ÖˆÚ“®B - EdetectPullOutFlag‚ð휂µAdetectPullOutCardFla‚ÆdetectPullOutCtrdgFlag‚ð’ljÁB - - Revision 1.17 2004/08/16 10:13:09 Yosiokat - pullCardFlag‚ðdetectPullOutFlag‚É•ÏXB - - Revision 1.16 2004/08/16 10:09:34 Yosiokat - NvOption‚ÉpullCardFlag‚ð’ljÁB - - Revision 1.15 2004/08/13 07:41:30 Yosiokat - ENvOwnerInfo‚©‚çsex‚ðíœB - ENvOption‚©‚çbottomLcdBackLightOff‚ðíœB - ENvOption‚ÉautoBootFlag‚ð’ljÁB - ENCD_SetSex, NCD_GetSex‚ðíœB - ENCD_GetRtcClockAdjustANCD_GetAutoBootFlagANCD_SetRtcClockAdjustANCD_SetAutoBootFlag‚̒ljÁB - - Revision 1.14 2004/07/29 04:53:18 Yosiokat - \‘¢‘̂̃pƒfƒBƒ“ƒO‚𖾎¦“I‚ɒljÁB - - Revision 1.13 2004/07/18 10:55:13 Yosiokat - NITROÝ’èƒf[ƒ^‚̃ZƒbƒgŠÖ”‚ð—pˆÓB - - Revision 1.12 2004/07/17 09:00:14 Yosiokat - E\‘¢‘̃TƒCƒY‚̃Rƒƒ“ƒgC³B - - Revision 1.11 2004/07/15 12:47:33 Yosiokat - EƒI[ƒi[î•ñ‚Ì’a¶“ú‚Ìu”Nv‚ðíœB - - Revision 1.10 2004/07/15 12:26:43 Yosiokat - ENITROÝ’èƒf[ƒ^‚̃tƒH[ƒ}ƒbƒg‚ð•ÏXB - EƒI[ƒi[î•ñ‚ðˆÈ‰º‚̂悤‚É•ÏXB - @a)ƒjƒbƒNƒl[ƒ€’·‚ð‚P‚O‚É•ÏXB - @b)ƒRƒƒ“ƒgƒf[ƒ^‚ð’ljÁ - @c)ŒŒ‰tŒ^ƒf[ƒ^‚ðíœB - @d)D‚«‚ÈFƒf[ƒ^‚ð’ljÁBi’†g‚Í–¢’èj - e)«•ʃf[ƒ^‚ðƒrƒbƒgƒtƒB[ƒ‹ƒh‚ÉB - EƒAƒ‰[ƒ€î•ñ‚ð’ljÁB - Eƒ^ƒbƒ`ƒpƒlƒ‹ƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“î•ñ‚ÌŠe—v‘f‚ðÚׂɒè‹`B - E‚»‚Ì‘¼‚Ìî•ñ‚ðƒIƒvƒVƒ‡ƒ“î•ñ‚ɂ܂Ƃ߂éBiŒ¾ŒêƒR[ƒh‚àƒrƒbƒgƒtƒB[ƒ‹ƒh‚Æ‚µ‚Ä‚±‚±‚É“ü‚ê‚éBj - - Revision 1.9 2004/07/13 00:20:15 Yosiokat - Esmall fix. - - Revision 1.8 2004/07/05 02:29:23 Yosiokat - Œ¾ŒêƒR[ƒh‚ðFRENCH‚ÉC³B - - Revision 1.7 2004/06/28 01:56:17 Yosiokat - EƒoƒbƒNƒ‰ƒCƒgON,OFFÝ’è‚Ì’l‚ð’ljÁB - ETPAŒ¾ŒêÝ’èARTCAƒI[ƒi[î•ñ‚Ì“ü—Íς݃tƒ‰ƒO‚ð’ljÁB - Eƒo[ƒWƒ‡ƒ“‚ð"3"‚ÉB - - Revision 1.6 2004/06/14 04:55:10 yosiokat - NitroConfigData‚ÌrtcOffset‚ðint‚©‚çs64‚É•ÏXB - ‚±‚ê‚É”º‚¢NCDƒtƒH[ƒ}ƒbƒg‚̃o[ƒWƒ‡ƒ“‚ð"2"‚É•ÏXB - - Revision 1.5 2004/06/07 10:51:58 Yosiokat - ƒI[ƒi[î•ñ‚̃jƒbƒNƒl[ƒ€‚ðSJIS‚©‚çUnicodeiUTF16j‚É•ÏX‚µ‚½‚½‚ßAƒo[ƒWƒ‡ƒ“‚ð‚P‚Éã‚°‚éB - - Revision 1.4 2004/05/21 06:12:17 Yosiokat - ƒwƒbƒ_‚ÌC++‘Ήž•”•ª‚Åu};v‚̃Zƒ~ƒRƒƒ“‚ªƒGƒ‰[‚ɂȂÁ‚Ä‚¢‚½‚Ì‚ÅAíœB - - Revision 1.3 2004/05/21 05:37:46 Yosiokat - TPƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“‚ðNVRAM‚ɕۑ¶‚·‚éƒf[ƒ^‚ÉLCD‚̶ãƒ|ƒCƒ“ƒg{LCD‚̉E‰ºƒ|ƒCƒ“ƒg‚ðŠÜ‚߂邿‚¤•ÏXBiƒTƒCƒY‚ª8->12byte‚Öj - ‚Ü‚½ASDK‚Éconfig.h‚Ì–¼‘O‚ÅNitroConfigData.h‚Æ“¯ˆêƒtƒ@ƒCƒ‹‚ª“ü‚Á‚Ä‚¢‚½‚Ì‚ÅA‚±‚ê‚ðƒCƒ“ƒNƒ‹[ƒh‚µ‚È‚¢‚悤AMakefile‚ŃRƒ“ƒpƒCƒ‹Žž‚ÉIPL2_BUILD_ƒVƒ“ƒ{ƒ‹‚ð—^‚¦‚邿‚¤•ÏXB - - Revision 1.2 2004/05/19 08:25:28 yosiokat - XVƒƒO‚̒ljÁB - - -*/ - - -#ifndef NITRO_CONFIG_DATA_H_ -#define NITRO_CONFIG_DATA_H_ -#if defined(SDK_CW) // NitroConfigData‚ɃrƒbƒgƒtƒB[ƒ‹ƒh‚ðŽg‚Á‚Ä‚¢‚é‚Ì‚ÅAƒRƒ“ƒpƒCƒ‰ˆË‘¶‚Å•s‹ï‡‚ª”­¶‚·‚é‰Â”\«‚ª‚ ‚éB - // ‚æ‚Á‚ÄACWˆÈŠO‚̃Rƒ“ƒpƒCƒ‰‚ÌꇂÍA‚±‚̃wƒbƒ_‚𖳌ø‚É‚µ‚ăGƒ‰[‚ðo‚³‚¹‚邿‚¤‚É‚µ‚ÄÄŠm”F‚·‚éB -#ifdef __cplusplus -extern "C" { -#endif - - -#include - -#define USING_COMPONENT // IPL2ã‚ł͂Ȃ¢‚Ì‚ÅA‚±‚̃XƒCƒbƒ`‚ð—LŒø‚ÉB - - -// define data ------------------------------------ -#define NITRO_CONFIG_DATA_VERSION 5 // NITROÝ’èƒf[ƒ^ƒtƒH[ƒ}ƒbƒgƒo[ƒWƒ‡ƒ“ -#define NITRO_CONFIG_DATA_EX_VERSION 1 // Šg’£NITROÝ’èƒf[ƒ^ƒtƒH[ƒ}ƒbƒgƒo[ƒWƒ‡ƒ“ -#define NCD_NICKNAME_LENGTH 10 // ƒjƒbƒNƒl[ƒ€’· -#define NCD_COMMENT_LENGTH 26 // ƒRƒƒ“ƒg’· -#define NCD_FAVORITE_COLOR_MAX_NUM 16 // D‚«‚ÈF‚ÌÅ‘å” - -#define NCD_ROM_ADDR_SHIFT 3 // IPL2ƒwƒbƒ_‚ÌNitroConfigDataŠi”[ƒAƒhƒŒƒX‚̃Vƒtƒg’l -#define FONT_ROM_ADDR_SHIFT 2 // IPL2ƒwƒbƒ_‚̃tƒHƒ“ƒgƒf[ƒ^Ši”[ƒAƒhƒŒƒX‚̃Vƒtƒg’l -#define NCD_SYS_RSV_SIZE 1024 // ƒVƒXƒeƒ€—\–ñ—̈æƒTƒCƒY -#define NCD_APP_RSV_SIZE 512 // ƒAƒvƒŠ@—\–ñ—̈æƒTƒCƒY - // NCD_SYS_RSV_ROM_ADDR = ncd_rom_addr - NCD_SYS_RSV_SIZE - // NCD_APP_RSV_ROM_ADDR = ncd_rom_addr - NCD_SYS_RSV_SIZE - NCD_APP_RSV_SIZE -#define USG_BACKLIGHT_DEFAULT 2 // USG‚̃oƒbƒNƒ‰ƒCƒgƒfƒtƒHƒ‹ƒg’l - - -// Œ¾ŒêÝ’èƒR[ƒh -typedef enum NvLangCode{ - LANG_JAPANESE =0, // “ú–{Œê - LANG_ENGLISH, // ‰pŒê - LANG_FRENCH, // ƒtƒ‰ƒ“ƒXŒê - LANG_GERMAN, // ƒhƒCƒcŒê - LANG_ITALIAN, // ƒCƒ^ƒŠƒAŒê - LANG_SPANISH, // ƒXƒyƒCƒ“Œê - LANG_CHINESE, // ’†‘Œê - LANG_HANGUL, // ŠØ‘Œê - LANG_CODE_MAX -}NvLangCode; - -#define LANG_CODE_MAX_WW LANG_CHINESE // ’†‘”ňȑO‚Ì’Êí”ÅIPL2‚Å‚ÌLANG_CODE_MAX - -#define LANG_BITMAP_WW ( ( 0x0001 << LANG_JAPANESE ) \ - | ( 0x0001 << LANG_ENGLISH ) \ - | ( 0x0001 << LANG_FRENCH ) \ - | ( 0x0001 << LANG_GERMAN ) \ - | ( 0x0001 << LANG_ITALIAN ) \ - | ( 0x0001 << LANG_SPANISH ) ) // ’Ê픳ł̑ΉžŒ¾Œêƒrƒbƒgƒ}ƒbƒv - -#define LANG_BITMAP_CN ( ( 0x0001 << LANG_ENGLISH ) \ - | ( 0x0001 << LANG_FRENCH ) \ - | ( 0x0001 << LANG_GERMAN ) \ - | ( 0x0001 << LANG_ITALIAN ) \ - | ( 0x0001 << LANG_SPANISH ) \ - | ( 0x0001 << LANG_CHINESE ) ) // ’†‘”łł̑ΉžŒ¾Œêƒrƒbƒgƒ}ƒbƒv - -#define LANG_BITMAP_KR ( ( 0x0001 << LANG_JAPANESE ) \ - | ( 0x0001 << LANG_ENGLISH ) \ - | ( 0x0001 << LANG_FRENCH ) \ - | ( 0x0001 << LANG_GERMAN ) \ - | ( 0x0001 << LANG_SPANISH ) \ - | ( 0x0001 << LANG_HANGUL ) ) // ŠØ‘”łł̑ΉžŒ¾Œêƒrƒbƒgƒ}ƒbƒv - -// “ú•tƒf[ƒ^ -typedef struct NvDate{ - u8 month; // ŒŽ:01`12 - u8 day; // “ú:01`31 -}NvDate; // 2byte - -// ƒjƒbƒNƒl[ƒ€ -typedef struct NvNickname{ - u16 str[NCD_NICKNAME_LENGTH]; // ƒjƒbƒNƒl[ƒ€iUnicode(UTF16)‚ÅÅ‘å10•¶ŽšAI’[ƒR[ƒh‚È‚µj - u8 length; // •¶Žš” - u8 rsv; -}NvNickname; // 22byte - -// ƒRƒƒ“ƒg -typedef struct NvComment{ - u16 str[NCD_COMMENT_LENGTH]; //ƒRƒƒ“ƒgiUnicode(UTF16)‚ÅÅ‘å26•¶ŽšAI’[ƒR[ƒh‚È‚µj - u8 length; // •¶Žš” - u8 rsv; -}NvComment; // 54byte - -// ƒI[ƒi[î•ñ -typedef struct NvOwnerInfo{ - u8 favoriteColor : 4; // D‚«‚ÈF - u8 rsv : 4; // —\–ñB - NvDate birthday; // ¶”NŒŽ“ú - u8 pad; - NvNickname nickname; // ƒjƒbƒNƒl[ƒ€ - NvComment comment; // ƒRƒƒ“ƒg -}NvOwnerInfo; // 80byte - -// IPL—p–ÚŠo‚Ü‚µŽžŒvƒf[ƒ^ -typedef struct NvAlarm{ - u8 hour; // ƒAƒ‰[ƒ€Žž:00`23 - u8 minute; // ƒAƒ‰[ƒ€•ª:00`59 - u8 rsv1; // —\–ñ - u8 pad; - u16 alarmOn : 1; // ƒAƒ‰[ƒ€ON,OFFi0:OFF, 1:ONj - u16 rsv2 : 15; // —\–ñ -}NvAlarm; // 6byte - -// ƒ^ƒbƒ`ƒpƒlƒ‹ƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“ƒf[ƒ^ -typedef struct NvTpCalibData{ - u16 raw_x1; // ‘æ‚PƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ““_‚ÌTPŽæ“¾’lX - u16 raw_y1; // @@@@V@@@@@@@@TPŽæ“¾’lY - u8 dx1; // @@@@V@@@@@@@@LCDÀ•W X - u8 dy1; // @@@@V@@@@@@@@LCDÀ•W Y - u16 raw_x2; // ‘æ‚QƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ““_‚ÌTPŽæ“¾’lX - u16 raw_y2; // @@@@V@@@@@@@@TPŽæ“¾’lY - u8 dx2; // @@@@V@@@@@@@@LCDÀ•W X - u8 dy2; // @@@@V@@@@@@@@LCDÀ•W Y -}NvTpCalibData; // 12byte - -// ƒIƒvƒVƒ‡ƒ“î•ñ -typedef struct NvOption{ - u16 language : 3; // Œ¾ŒêƒR[ƒhiLANG_SPANISH‚܂ł̕W€Œ¾ŒêƒR[ƒh‚ª“ü‚éj - u16 agbLcd : 1; // AGBƒ‚[ƒh‚Å‹N“®‚·‚鎞‚ɂǂ¿‚ç‚ÌLCD‚Å‹N“®‚·‚é‚©Hi0:TOP,1:BOTTOMj - u16 backLightBrightness : 2; // ƒoƒbƒNƒ‰ƒCƒg‹P“xƒf[ƒ^ - u16 autoBootFlag : 1; // ‹N“®ƒV[ƒPƒ“ƒX‚ÅAƒƒjƒ…[’âŽ~‚È‚µ‚ÅŽ©“®‹N“®‚·‚é‚©‚Ç‚¤‚©H(0:OFF, 1:ON) - u16 backLightOffFlag : 1; // ƒoƒbƒNƒ‰ƒCƒgON,OFFƒtƒ‰ƒOi0:ON, 1:OFFj - u16 rsv2 : 1; // —\–ñB - u16 destroyFlashFlag : 1; // ƒtƒ‰ƒbƒVƒ…‰ó‚êƒV[ƒPƒ“ƒX’†ƒtƒ‰ƒO - u16 input_birthday : 1; // ’a¶“ú‚ª“ü—Í‚³‚ꂽ‚©H - u16 input_favoriteColor : 1; // D‚«‚ÈF‚ª“ü—Í‚³‚ꂽ‚©H - u16 input_tp : 1; // ƒ^ƒbƒ`ƒpƒlƒ‹‚ªƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“‚³‚ꂽ‚©Hi V ) - u16 input_language : 1; // Œ¾Œê“ü—Í‚ª‚³‚ꂽ‚©H@ (0:–¢Ý’è, 1:Ý’èÏ‚Ý) - u16 input_rtc : 1; // RTCݒ肪‚³‚ꂽ‚©H ( V@@@@@ ) - u16 input_nickname : 1; // ƒjƒbƒNƒl[ƒ€‚ª“ü—Í‚³‚ꂽ‚©H ( V@@@@@ ) - u8 rtcLastSetYear; // RTC‚Ì‘O‰ñÝ’è”N - u8 rtcClockAdjust; // RTCƒNƒƒbƒN’²®’l - s64 rtcOffset; // RTCݒ莞‚̃IƒtƒZƒbƒg’liƒ†[ƒU[‚ªRTCÝ’è‚ð•ÏX‚·‚é“x‚É‚»‚Ì’l‚ɉž‚¶‚Ä‘Œ¸‚µ‚Ü‚·Bj -}NvOption; // 12byte - -// NITROŠeŽíÝ’èƒf[ƒ^ -typedef struct NitroConfigData{ - u8 version; // ƒtƒ‰ƒbƒVƒ…Ši”[ƒf[ƒ^ƒtƒH[ƒ}ƒbƒg‚̃o[ƒWƒ‡ƒ“ - u8 pad; - NvOwnerInfo owner; // ƒI[ƒi[î•ñ - NvAlarm alarm; // IPL—p–ÚŠo‚Ü‚µŽžŒvƒf[ƒ^ - NvTpCalibData tp; // ƒ^ƒbƒ`ƒpƒlƒ‹ƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“ƒf[ƒ^ - NvOption option; // ƒIƒvƒVƒ‡ƒ“ -}NitroConfigData; // 112byte - -// NITROŠeŽíÝ’èƒf[ƒ^‚ÌNVRAM•Û‘¶ŽžƒtƒH[ƒ}ƒbƒg -typedef struct NCDStore{ - NitroConfigData ncd; // NITROŠeŽíÝ’èƒf[ƒ^ - u16 saveCount; // 0x00-0x7f‚ðƒ‹[ƒv‚µ‚ăJƒEƒ“ƒg‚µAƒJƒEƒ“ƒg’l‚ªV‚µ‚¢ƒf[ƒ^‚ª—LŒøB - u16 crc16; // NITROŠeŽíÝ’èƒf[ƒ^‚Ì16bitCRC - u8 pad[ 128 - sizeof(NitroConfigData) - 4]; -}NCDStore; // 128byte // ¦–{—ˆ‚È‚çAsaveCount‚Æcrc16‚Í256byte‚ÌÅŒã‚É•t‰Á‚µ‚ÄAŠÔ‚ɃpƒfƒBƒ“ƒO‚ð–„‚ß‚é•û‚ª‚¢‚¢B - - -//---------------------------------------------- -// IPL2’†‘”łł̊g’£ƒtƒH[ƒ}ƒbƒg -//---------------------------------------------- -// Šg’£NITROÝ’èƒf[ƒ^ -typedef struct NitroConfigDataEx{ - u8 version; // ƒo[ƒWƒ‡ƒ“ - u8 language; // Œ¾ŒêƒR[ƒhiLANG_CHINESEˆÈ~‚ÉŠg’£‚³‚ꂽ’l‚ª“ü‚éBj - u16 valid_language_bitmap; // –{IPL2‚Å—LŒø‚ÈŒ¾ŒêƒR[ƒh‚ðŽ¦‚µ‚½ƒrƒbƒgƒ}ƒbƒv - u8 pad[ 256 - sizeof(NitroConfigData) - 4 - 4 - 2 ]; // 4:saveCount+crc16, 2:NCDEx.version+NCDEx.language, 2:crc16_ex -}NitroConfigDataEx; // 138bytes - -// NITROŠeŽíÝ’èƒf[ƒ^‚ÌNVRAM•Û‘¶ŽžƒtƒH[ƒ}ƒbƒg -typedef struct NCDStoreEx{ - NitroConfigData ncd; // NITROŠeŽíÝ’èƒf[ƒ^ - u16 saveCount; // 0x00-0x7f‚ðƒ‹[ƒv‚µ‚ăJƒEƒ“ƒg‚µAƒJƒEƒ“ƒg’l‚ªV‚µ‚¢ƒf[ƒ^‚ª—LŒøB - u16 crc16; // NITROŠeŽíÝ’èƒf[ƒ^‚Ì16bitCRC - NitroConfigDataEx ncd_ex; - u16 crc16_ex; -}NCDStoreEx; // 256byte // ¦–{—ˆ‚È‚çAsaveCount‚Æcrc16‚Í256byte‚ÌÅŒã‚É•t‰Á‚µ‚ÄAŠÔ‚ɃpƒfƒBƒ“ƒO‚ð–„‚ß‚é•û‚ª‚¢‚¢B - - -typedef struct NCDTimeStamp { - u8 minute; - u8 hour; - u8 day; - u8 month; - u8 year; -}NCDTimeStamp; - - -//========================================================= -// NVRAM‚ւ̃Š[ƒhƒ‰ƒCƒgŠÖ” -//========================================================= -#ifdef SDK_ARM9 -extern int NVRAMm_ReadNitroConfigData (NitroConfigData *dstp); -extern void NVRAMm_WriteNitroConfigData(NitroConfigData *dstp); -#endif - - -//========================================================= -// NITROÝ’èƒf[ƒ^‚ւ̃AƒNƒZƒXŠÖ” -//========================================================= -extern NitroConfigDataEx ncdEx; -extern u16 valid_lang_bitmap; - -#define GetNcdWorkAddr() ( (NitroConfigData *)( HW_NVRAM_USER_INFO ) ) -#define GetNcdExWorkAddr() ( &ncdEx ) - // NITROÝ’èƒf[ƒ^—̈æ‚̃AƒhƒŒƒXŠl“¾ - -extern void NCD_ClearOwnerInfo( void ); // ƒjƒbƒNƒl[ƒ€E’a¶“úED‚«‚ÈF‚̃NƒŠƒA - -#ifdef USING_COMPONENT -extern void NCD_ReadIPL2Header ( void ); // IPL2ƒwƒbƒ_‚̓ǂÝo‚µB -extern u8 NCD_GetIPL2Type ( void ); // IPL2ƒ^ƒCƒv‚̎擾B -extern u16 NCD_GetIPL2TypeEx ( void ); // Šg’£IPL2ƒ^ƒCƒv‚̎擾B -extern u8 *NCD_GetIPL2Version ( void ); // IPL2ƒo[ƒWƒ‡ƒ“‚̎擾B -extern u32 NCD_GetNCDRomAddr ( void ); // NCDŠi”[ROMƒAƒhƒŒƒX‚̎擾B -extern u32 NCD_GetSysRsvRomAddr( void ); // ƒVƒXƒeƒ€—\–ñ—̈æROMƒAƒhƒŒƒX‚̎擾B -extern u32 NCD_GetAppRsvRomAddr( void ); // ƒAƒvƒŠ@—\–ñ—̈æROMƒAƒhƒŒƒX‚̎擾B -extern u32 NCD_GetIPL2BM7RomAddr( void ); // ƒu[ƒgƒƒjƒ…[ARM7ƒR[ƒhROMƒAƒhƒŒƒX‚̎擾B -extern u32 NCD_GetIPL2DataRomAddr( void ); // IPL2ƒf[ƒ^ROMƒAƒhƒŒƒX‚̎擾B -extern u32 NCD_GetFontBncmpRomAddr( void ); // ƒtƒHƒ“ƒgƒf[ƒ^bncmp‚ÌROMƒAƒhƒŒƒXŽæ“¾Bi’†‘”ÅA“ú–{Œü‚¯ŽŽ—V‘䔳ł̂ݗLŒøBj -extern u32 NCD_GetFontBnfrRomAddr( void ); // ƒtƒHƒ“ƒgƒf[ƒ^bnfr ‚ÌROMƒAƒhƒŒƒXŽæ“¾Bi’†‘”ÅA“ú–{Œü‚¯ŽŽ—V‘䔳ł̂ݗLŒøBj -#endif - -//========================================================= -// ƒf[ƒ^Žæ“¾ -//========================================================= - -//----------------------------------- -// ƒI[ƒi[î•ñ‘S‘̂̎擾B -static inline NvOwnerInfo *NCD_GetOwnerInfo(void) -{ - return &GetNcdWorkAddr()->owner; -} - -// D‚«‚ÈF‚̎擾B -static inline u8 NCD_GetFavoriteColor(void) -{ - return (u8)GetNcdWorkAddr()->owner.favoriteColor; -} - -// ’a¶“ú‚̎擾B -static inline NvDate *NCD_GetBirthday(void) -{ - return &GetNcdWorkAddr()->owner.birthday; -} - -// ƒjƒbƒNƒl[ƒ€‚̎擾B -static inline NvNickname *NCD_GetNickname(void) -{ - return &GetNcdWorkAddr()->owner.nickname; -} - -// ƒRƒƒ“ƒg‚̎擾B -static inline NvComment *NCD_GetComment(void) -{ - return &GetNcdWorkAddr()->owner.comment; -} - - -//----------------------------------- -// ƒAƒ‰[ƒ€î•ñ‚̎擾B -static inline NvAlarm *NCD_GetAlarmData(void) -{ - return &GetNcdWorkAddr()->alarm; -} - - -//----------------------------------- -// ƒ^ƒbƒ`ƒpƒlƒ‹ƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“ƒf[ƒ^‚̎擾B -static inline NvTpCalibData *NCD_GetTPCalibration(void) -{ - return &GetNcdWorkAddr()->tp; -} - - -//----------------------------------- -// ƒIƒvƒVƒ‡ƒ“î•ñ‚̎擾B - -// Œ¾ŒêƒR[ƒh‚̎擾 -static inline NvLangCode NCD_GetLanguageOrg(void) -{ - return (NvLangCode)GetNcdWorkAddr()->option.language; -} - -static inline NvLangCode NCD_GetLanguage(void) -{ - return (NvLangCode)GetNcdExWorkAddr()->language; -} - - -// RTCƒIƒtƒZƒbƒg’l‚̎擾 -static inline s64 NCD_GetRtcOffset(void) -{ - return GetNcdWorkAddr()->option.rtcOffset; -} - -// RTCƒNƒƒbƒN’²®’l‚̎擾 -static inline u8 NCD_GetRtcClockAdjust(void) -{ - return GetNcdWorkAddr()->option.rtcClockAdjust; -} - -// RTC‚Ì‘O‰ñƒZƒbƒg‚µ‚½”N‚̎擾 -static inline u8 NCD_GetRtcLastSetYear(void) -{ - return GetNcdWorkAddr()->option.rtcLastSetYear; -} - -// ‹N“®ƒV[ƒPƒ“ƒX‚ÌŽ©“®‹N“®ON‚©Hi0:OFF, 1:ONj -static inline int NCD_GetAutoBootFlag(void) -{ - return (int)GetNcdWorkAddr()->option.autoBootFlag; -} - -// ƒoƒbƒNƒ‰ƒCƒgOFF‚©Hi0:ON, 1:OFFj -static inline int NCD_GetBackLightOffFlag(void) -{ - return (int)GetNcdWorkAddr()->option.backLightOffFlag; -} - -// ƒtƒ‰ƒbƒVƒ…‰ó‚êƒV[ƒPƒ“ƒX’†‚©‚Ç‚¤‚©H -static inline int NCD_GetDestroyFlash(void) -{ - return (int)GetNcdWorkAddr()->option.destroyFlashFlag; -} - -// ’a¶“úƒf[ƒ^‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚é‚©H -static inline int NCD_GetInputBirthday(void) -{ - return (int)GetNcdWorkAddr()->option.input_birthday; -} - -// D‚«‚ÈFƒf[ƒ^‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚é‚©H -static inline int NCD_GetInputFavoriteColor(void) -{ - return (int)GetNcdWorkAddr()->option.input_favoriteColor; -} - -// TPƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“ƒf[ƒ^‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚é‚©H -static inline int NCD_GetInputTP(void) -{ - return (int)GetNcdWorkAddr()->option.input_tp; -} - -// Œ¾ŒêƒR[ƒh‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚é‚©H -static inline int NCD_GetInputLanguage(void) -{ - return (int)GetNcdWorkAddr()->option.input_language; -} - -// RTCƒf[ƒ^‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚é‚©H -static inline int NCD_GetInputRTC(void) -{ - return (int)GetNcdWorkAddr()->option.input_rtc; -} - -// ƒI[ƒi[î•ñ‚̃jƒbƒNƒl[ƒ€‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚é‚©H -static inline int NCD_GetInputNickname(void) -{ - return (int)GetNcdWorkAddr()->option.input_nickname; -} - -//========================================================= -// ƒf[ƒ^ƒZƒbƒg -//========================================================= -//----------------------------------- -// ƒI[ƒi[î•ñ‘S‘̂̃ZƒbƒgB -static inline void NCD_SetOwnerInfo(NvOwnerInfo *owinfop) -{ - SVC_CpuCopy( owinfop, &GetNcdWorkAddr()->owner, sizeof(NvOwnerInfo), 16); -} - -// D‚«‚ÈF‚̃ZƒbƒgB -static inline void NCD_SetFavoriteColor(u8 favoriteColor) -{ - GetNcdWorkAddr()->owner.favoriteColor = favoriteColor; -} - -// ’a¶“ú‚̃ZƒbƒgB -static inline void NCD_SetBirthday(NvDate *birthp) -{ - GetNcdWorkAddr()->owner.birthday.month = birthp->month; - GetNcdWorkAddr()->owner.birthday.day = birthp->day; -} - -// ƒjƒbƒNƒl[ƒ€‚̃ZƒbƒgB -static inline void NCD_SetNickname(NvNickname *namep) -{ - SVC_CpuCopy( namep, &GetNcdWorkAddr()->owner.nickname, sizeof(NvNickname), 16); -} - -// ƒRƒƒ“ƒg‚̃ZƒbƒgB -static inline void NCD_SetComment(NvComment *commentp) -{ - SVC_CpuCopy( commentp, &GetNcdWorkAddr()->owner.comment, sizeof(NvComment), 16); -} - - -//----------------------------------- -// ƒAƒ‰[ƒ€î•ñ‚̃ZƒbƒgB -static inline void NCD_SetAlarmData(NvAlarm *alarmp) -{ - SVC_CpuCopy( alarmp, &GetNcdWorkAddr()->alarm, sizeof(NvAlarm), 16); -} - - -//----------------------------------- -// ƒ^ƒbƒ`ƒpƒlƒ‹ƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“ƒf[ƒ^‚̃ZƒbƒgB -static inline void NCD_SetTPCalibration(NvTpCalibData *tp_calibp) -{ - SVC_CpuCopy( tp_calibp, &GetNcdWorkAddr()->tp, sizeof(NvTpCalibData), 16); -} - - -//----------------------------------- -// ƒIƒvƒVƒ‡ƒ“î•ñ‚̃ZƒbƒgB - -// Œ¾ŒêƒR[ƒh‚̃Zƒbƒg -#if 0 -static inline void NCD_SetLanguage(NvLangCode language) -{ - GetNcdExWorkAddr()->language = language; - GetNcdExWorkAddr()->valid_language_bitmap = LANG_BITMAP_CHINESE; - - if( language == LANG_CHINESE ) { - GetNcdWorkAddr()->option.language = LANG_ENGLISH; - }else { - GetNcdWorkAddr()->option.language = language; - } -} -#endif - -// RTCƒIƒtƒZƒbƒg’l‚̃Zƒbƒg -static inline void NCD_SetRtcOffset(s64 rtcOffset) -{ - GetNcdWorkAddr()->option.rtcOffset = rtcOffset; -} - -// RTCƒNƒƒbƒN’²®’l‚̃Zƒbƒg -static inline void NCD_SetRtcClockAdjust(u8 rtcClockAdjust) -{ - GetNcdWorkAddr()->option.rtcClockAdjust = rtcClockAdjust; -} - - -// RTC‚ÌLastSetYear‚ւ̃Zƒbƒg -static inline void NCD_SetRtcLastSetYear(u8 rtcLastSetYear) -{ - GetNcdWorkAddr()->option.rtcLastSetYear = rtcLastSetYear; -} - - -// ‹N“®ƒV[ƒPƒ“ƒX‚ÌŽ©“®‹N“®ON,OFFƒtƒ‰ƒO‚ðƒZƒbƒgB -static inline void NCD_SetAutoBootFlag(BOOL autoBootFlag) -{ - GetNcdWorkAddr()->option.autoBootFlag = (u16)autoBootFlag; -} - -// ƒoƒbƒNƒ‰ƒCƒgON,OFFƒtƒ‰ƒO‚ðƒZƒbƒgB -static inline void NCD_SetBackLightOffFlag(BOOL backLightOffFlag) -{ - GetNcdWorkAddr()->option.backLightOffFlag = (u16)backLightOffFlag; -} - -// ƒtƒ‰ƒbƒVƒ…‰ó‚êƒV[ƒPƒ“ƒX’†‚©‚Ç‚¤‚©‚̃tƒ‰ƒOƒZƒbƒgB -static inline void NCD_SetDestroyFlash(BOOL destroy) -{ - GetNcdWorkAddr()->option.destroyFlashFlag = (u16)destroy; -} - -// ’a¶“úƒf[ƒ^‚Ì“ü—Íς݃tƒ‰ƒOƒZƒbƒgB -static inline void NCD_SetInputBirthday(BOOL input) -{ - GetNcdWorkAddr()->option.input_birthday = (u16)input; -} - -// D‚«‚ÈFƒf[ƒ^‚Ì“ü—Íς݃tƒ‰ƒOƒZƒbƒgB -static inline void NCD_SetInputFavoriteColor(BOOL input) -{ - GetNcdWorkAddr()->option.input_favoriteColor = (u16)input; -} - -// TPƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“ƒf[ƒ^‚Ì“ü—Íς݃tƒ‰ƒOƒZƒbƒgB -static inline void NCD_SetInputTP(BOOL input) -{ - GetNcdWorkAddr()->option.input_tp = (u16)input; -} - -// Œ¾ŒêƒR[ƒh‚Ì“ü—Íς݃tƒ‰ƒOƒZƒbƒgB -static inline void NCD_SetInputLanguage(BOOL input) -{ - GetNcdWorkAddr()->option.input_language = (u16)input; -} - -// RTCƒf[ƒ^‚Ì“ü—Íς݃tƒ‰ƒOƒZƒbƒgB -static inline void NCD_SetInputRTC(BOOL input) -{ - GetNcdWorkAddr()->option.input_rtc = (u16)input; -} - -// ƒI[ƒi[î•ñ‚̃jƒbƒNƒl[ƒ€‚Ì“ü—Íς݃tƒ‰ƒOƒZƒbƒgB -static inline void NCD_SetInputNickname(BOOL input) -{ - GetNcdWorkAddr()->option.input_nickname = (u16)input; -} - - - -#ifdef __cplusplus -} -#endif - -#endif // SDK_CW -#endif // NITRO_CONFIG_DATA_H_ diff --git a/build/tests/DispOwnerInfo/src/data.c b/build/tests/DispOwnerInfo/src/data.c deleted file mode 100644 index 39420c0e..00000000 --- a/build/tests/DispOwnerInfo/src/data.c +++ /dev/null @@ -1,595 +0,0 @@ -/********************************************************************/ -/* data.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - ƒf[ƒ^ŒQ - - $Log: data.c,v $ - Revision 1.3 2005/04/02 07:43:18 yosiokat - IPL2ƒtƒHƒ“ƒg•\ަ‚Ì‚½‚߂̃f[ƒ^’è‹`’ljÁB - - Revision 1.2 2005/03/31 06:01:14 yosiokat - ƒCƒ“ƒfƒ“ƒg’²®B - - Revision 1.1 2004/08/31 06:20:24 Yosiokat - Initial revision - - -*/ - - - -#include -#include "data.h" - -// global variables---------------------------------------- -int (*nowProcess)(void); // Œ»ÝŽÀs’†‚̃vƒƒZƒX -GXOamAttr oamBakM[ 128 ]; // OAM ƒoƒbƒNƒAƒbƒv -GXOamAttr oamBakS[ 128 ]; // OAM ƒoƒbƒNƒAƒbƒv -u16 bgBakM[ 32*24 ]; // BG ƒoƒbƒNƒAƒbƒv -u16 bgBakS[ 32*24 ]; // BG ƒoƒbƒNƒAƒbƒv -TpWork tpd; // ƒ^ƒbƒ`ƒpƒlƒ‹ƒf[ƒ^ -KeyWork pad; // ƒL[ƒpƒbƒh“ü—̓f[ƒ^ - - -// IPL2ƒtƒHƒ“ƒg•\ަ—p -tFntEntry font_m; -tFntDrawContext context_m; -u16 canvas_m[ CANVAS_WIDTH * CANVAS_HEIGHT / 4 ] ATTRIBUTE_ALIGN(32); -u16 screen_m[ (CANVAS_WIDTH>>3) * (CANVAS_HEIGHT>>3) ] ATTRIBUTE_ALIGN(32); - -tFntEntry font_s; -tFntDrawContext context_s; -u16 canvas_s[ CANVAS_WIDTH * CANVAS_HEIGHT / 4 ] ATTRIBUTE_ALIGN(32); -u16 screen_s[ (CANVAS_WIDTH>>3) * (CANVAS_HEIGHT>>3) ] ATTRIBUTE_ALIGN(32); - -u16 s_Palette[] = { - 0x0000, 0x001f, 0x03e0, 0x03ff, - 0x7c00, 0x7c1f, 0x7fe0, 0x7fff, - 0x0000, 0x001f, 0x03e0, 0x03ff, - 0x7c00, 0x7c1f, 0x7fe0, 0x7fff, -}; - -/*---------------------- ƒpƒŒƒbƒgƒf[ƒ^ ---------------------------*/ -#define RGB555(r,g,b) (b<<10|g<<5|r) - -// ”wŒi•ƒx[ƒX -const u16 myPlttData[13][16] = { - {RGB555( 0, 0, 0), RGB555(31, 31, 31), RGB555(15, 15, 15), RGB555( 0, 0, 0),}, // White - {RGB555( 0, 0, 0), RGB555(31, 0, 0), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Red - {RGB555( 0, 0, 0), RGB555( 0, 19, 0), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Green - {RGB555( 0, 0, 0), RGB555( 0, 11, 31), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Blue - {RGB555( 0, 0, 0), RGB555(31, 31, 0), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Yellow - {RGB555( 0, 0, 0), RGB555( 0, 31, 31), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Cyan - {RGB555( 0, 0, 0), RGB555(31, 0, 31), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Purple - {RGB555( 0, 0, 0), RGB555( 0, 31, 0), RGB555( 0, 0, 0), RGB555( 0, 0, 0),}, // Light Green - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // HighLight Yellow - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555( 0, 31, 31), RGB555( 0, 31, 31),}, // HighLight CYAN - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // HighLight WHITE - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555( 0, 11, 31), RGB555( 0, 11, 31),}, // HighLight BLUE - {RGB555( 0, 0, 0), RGB555( 0, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // HighLight RED -}; - - -/*---------------------- ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^ -------------------------*/ -/* -const u32 sampleCharData[8*0x100] = { - 0x00000000,0x00000000,0x00000000,0x00000000, // 0000h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x01010010,0x01010010,0x00000110, // 0001h - 0x00011010,0x01100010,0x00000010,0x00000010, - 0x00000000,0x01011010,0x01010010,0x00010010, // 0002h - 0x00100010,0x00100010,0x00100001,0x00100001, - 0x00000000,0x01010001,0x01010001,0x01111111, // 0003h - 0x00000001,0x00000001,0x00000001,0x01111110, - 0x00000000,0x01010000,0x01111111,0x00100000, // 0004h - 0x00100000,0x00010000,0x00001000,0x00000110, - 0x00000000,0x01010000,0x01010100,0x00001010, // 0005h - 0x00010001,0x00100001,0x01000000,0x00000000, - 0x00000000,0x01011000,0x01011000,0x01111111, // 0006h - 0x00001000,0x00101010,0x01001010,0x01001001, - 0x00000000,0x01010010,0x01101111,0x01010010, // 0007h - 0x00010010,0x00010010,0x00010010,0x00001001, - 0x00000000,0x01010010,0x01011111,0x00000100, // 0008h - 0x00011111,0x00001000,0x00000001,0x00011110, - 0x00000000,0x01010000,0x01011000,0x00000110, // 0009h - 0x00000001,0x00000110,0x00011000,0x00100000, - 0x00000000,0x01010000,0x01111101,0x00010001, // 000ah - 0x00010001,0x00010001,0x00010001,0x00001010, - 0x00000000,0x01010000,0x01011110,0x00100000, // 000bh - 0x00000000,0x00000001,0x00000001,0x00111110, - 0x00000000,0x01010100,0x01011111,0x00001000, // 000ch - 0x00010000,0x00000001,0x00000001,0x00011110, - 0x00000000,0x01010001,0x01010001,0x00000001, // 000dh - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x01010000,0x01111111,0x00011000, // 000eh - 0x00010100,0x00010100,0x00011000,0x00001100, - 0x00000000,0x01010010,0x01111111,0x00010010, // 000fh - 0x00010010,0x00000010,0x00000010,0x00111100, - 0x00000000,0x00001110,0x01010100,0x01010010, // 0010h - 0x00111111,0x00000100,0x00000100,0x00011000, - 0x00000000,0x01010100,0x01011111,0x00000100, // 0011h - 0x01110100,0x00000010,0x00001010,0x01110010, - 0x00000000,0x01010100,0x01011111,0x00000010, // 0012h - 0x00011110,0x00100001,0x00100000,0x00011110, - 0x00000000,0x01010000,0x01011100,0x00100011, // 0013h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x01010000,0x01111111,0x00010000, // 0014h - 0x00001000,0x00001000,0x00001000,0x00110000, - 0x00000000,0x01010010,0x01010010,0x00001100, // 0015h - 0x00000010,0x00000001,0x00000001,0x00111110, - 0x00000000,0x01010001,0x01111101,0x00010001, // 0016h - 0x00010001,0x00111001,0x01010101,0x00011001, - 0x00000000,0x01010100,0x01010011,0x01110010, // 0017h - 0x00010001,0x00010001,0x00001010,0x00000100, - 0x00000000,0x01011110,0x01011000,0x00000100, // 0018h - 0x00101001,0x01010001,0x01010001,0x00001100, - 0x00000000,0x01010000,0x01011100,0x00010010, // 0019h - 0x00010010,0x00100001,0x01000000,0x00000000, - 0x00000000,0x01011101,0x01010001,0x00111101, // 001ah - 0x00010001,0x00011001,0x00110101,0x00001001, - 0x00000000,0x01110001,0x01011101,0x00110001, // 001bh - 0x00010001,0x00111001,0x01010101,0x00011001, - 0x00000000,0x01110100,0x01010011,0x00110010, // 001ch - 0x00010001,0x00010001,0x00001010,0x00000100, - 0x00000000,0x01101110,0x01011000,0x00100100, // 001dh - 0x00101001,0x01010001,0x01010001,0x00001100, - 0x00000000,0x01110000,0x01011100,0x00110010, // 001eh - 0x00010010,0x00100001,0x01000000,0x00000000, - 0x00000000,0x01111101,0x01010001,0x00111101, // 001fh - 0x00010001,0x00011001,0x00110101,0x00001001, - 0x00000000,0x00000000,0x00000000,0x00000000, // 0020h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00001000,0x00001000,0x00001000, // 0021h - 0x00001000,0x00001000,0x00000000,0x00001000, - 0x00000000,0x01101100,0x01001000,0x00100100, // 0022h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00100100,0x01111111,0x00100100, // 0023h - 0x00100100,0x01111111,0x00010010,0x00010010, - 0x00000000,0x00001000,0x01111110,0x00001001, // 0024h - 0x00111110,0x01001000,0x00111111,0x00001000, - 0x00000000,0x01000010,0x00100101,0x00010010, // 0025h - 0x00001000,0x00100100,0x01010010,0x00100001, - 0x00000000,0x00001110,0x00010001,0x00001001, // 0026h - 0x01000110,0x00101001,0x00110001,0x01001110, - 0x00000000,0x00011000,0x00010000,0x00001000, // 0027h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x01110000,0x00001000,0x00000100, // 0028h - 0x00000100,0x00000100,0x00001000,0x01110000, - 0x00000000,0x00000111,0x00001000,0x00010000, // 0029h - 0x00010000,0x00010000,0x00001000,0x00000111, - 0x00000000,0x00001000,0x01001001,0x00101010, // 002ah - 0x00011100,0x00101010,0x01001001,0x00001000, - 0x00000000,0x00001000,0x00001000,0x00001000, // 002bh - 0x01111111,0x00001000,0x00001000,0x00001000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 002ch - 0x00000000,0x00001100,0x00001000,0x00000100, - 0x00000000,0x00000000,0x00000000,0x00000000, // 002dh - 0x01111111,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 002eh - 0x00000000,0x00000000,0x00000000,0x00001100, - 0x00000000,0x01000000,0x00100000,0x00010000, // 002fh - 0x00001000,0x00000100,0x00000010,0x00000001, - 0x00000000,0x00111110,0x01000001,0x01000001, // 0030h - 0x01000001,0x01000001,0x01000001,0x00111110, - 0x00000000,0x00011100,0x00010000,0x00010000, // 0031h - 0x00010000,0x00010000,0x00010000,0x00010000, - 0x00000000,0x00111110,0x01000001,0x01000000, // 0032h - 0x00111110,0x00000001,0x00000001,0x01111111, - 0x00000000,0x00111110,0x01000001,0x01000000, // 0033h - 0x00111110,0x01000000,0x01000001,0x00111110, - 0x00000000,0x00100000,0x00110000,0x00101000, // 0034h - 0x00100100,0x00100010,0x01111111,0x00100000, - 0x00000000,0x01111111,0x00000001,0x00111111, // 0035h - 0x01000000,0x01000000,0x01000001,0x00111110, - 0x00000000,0x00111110,0x00000001,0x00111111, // 0036h - 0x01000001,0x01000001,0x01000001,0x00111110, - 0x00000000,0x01111111,0x00100000,0x00100000, // 0037h - 0x00010000,0x00010000,0x00001000,0x00001000, - 0x00000000,0x00111110,0x01000001,0x01000001, // 0038h - 0x00111110,0x01000001,0x01000001,0x00111110, - 0x00000000,0x00111110,0x01000001,0x01000001, // 0039h - 0x01000001,0x01111110,0x01000000,0x00111110, - 0x00000000,0x00000000,0x00001100,0x00000000, // 003ah - 0x00000000,0x00000000,0x00001100,0x00000000, - 0x00000000,0x00000000,0x00001100,0x00000000, // 003bh - 0x00000000,0x00001100,0x00001000,0x00000100, - 0x00000000,0x01100000,0x00011000,0x00000110, // 003ch - 0x00000001,0x00000110,0x00011000,0x01100000, - 0x00000000,0x00000000,0x01111111,0x00000000, // 003dh - 0x00000000,0x00000000,0x01111111,0x00000000, - 0x00000000,0x00000011,0x00001100,0x00110000, // 003eh - 0x01000000,0x00110000,0x00001100,0x00000011, - 0x00000000,0x00111110,0x01000001,0x01000001, // 003fh - 0x00110000,0x00001000,0x00000000,0x00001000, - 0x00000000,0x00011100,0x00100010,0x01001001, // 0040h - 0x01010101,0x01010101,0x01010101,0x00111010, - 0x00000000,0x00001000,0x00010100,0x00010100, // 0041h - 0x00100010,0x00111110,0x01000001,0x01000001, - 0x00000000,0x00111111,0x01000001,0x01000001, // 0042h - 0x00111111,0x01000001,0x01000001,0x00111111, - 0x00000000,0x00111100,0x01000010,0x00000001, // 0043h - 0x00000001,0x00000001,0x01000010,0x00111100, - 0x00000000,0x00011111,0x00100001,0x01000001, // 0044h - 0x01000001,0x01000001,0x00100001,0x00011111, - 0x00000000,0x01111111,0x00000001,0x00000001, // 0045h - 0x01111111,0x00000001,0x00000001,0x01111111, - 0x00000000,0x01111111,0x00000001,0x00000001, // 0046h - 0x00111111,0x00000001,0x00000001,0x00000001, - 0x00000000,0x00111100,0x01000010,0x00000001, // 0047h - 0x01111001,0x01000001,0x01000010,0x00111100, - 0x00000000,0x01000001,0x01000001,0x01000001, // 0048h - 0x01111111,0x01000001,0x01000001,0x01000001, - 0x00000000,0x00111110,0x00001000,0x00001000, // 0049h - 0x00001000,0x00001000,0x00001000,0x00111110, - 0x00000000,0x01000000,0x01000000,0x01000000, // 004ah - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x01100001,0x00011001,0x00000101, // 004bh - 0x00000011,0x00000101,0x00011001,0x01100001, - 0x00000000,0x00000001,0x00000001,0x00000001, // 004ch - 0x00000001,0x00000001,0x00000001,0x01111111, - 0x00000000,0x01000001,0x01100011,0x01010101, // 004dh - 0x01001001,0x01000001,0x01000001,0x01000001, - 0x00000000,0x01000001,0x01000011,0x01000101, // 004eh - 0x01001001,0x01010001,0x01100001,0x01000001, - 0x00000000,0x00011100,0x00100010,0x01000001, // 004fh - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x00111111,0x01000001,0x01000001, // 0050h - 0x00111111,0x00000001,0x00000001,0x00000001, - 0x00000000,0x00011100,0x00100010,0x01000001, // 0051h - 0x01000001,0x01011001,0x00100010,0x01011100, - 0x00000000,0x00111111,0x01000001,0x01000001, // 0052h - 0x00111111,0x01000001,0x01000001,0x01000001, - 0x00000000,0x00111110,0x01000001,0x00000001, // 0053h - 0x00111110,0x01000000,0x01000001,0x00111110, - 0x00000000,0x01111111,0x00001000,0x00001000, // 0054h - 0x00001000,0x00001000,0x00001000,0x00001000, - 0x00000000,0x01000001,0x01000001,0x01000001, // 0055h - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x01000001,0x01000001,0x00100010, // 0056h - 0x00100010,0x00010100,0x00010100,0x00001000, - 0x00000000,0x01000001,0x01000001,0x01000001, // 0057h - 0x01001001,0x01010101,0x01100011,0x01000001, - 0x00000000,0x01000001,0x00100010,0x00010100, // 0058h - 0x00001000,0x00010100,0x00100010,0x01000001, - 0x00000000,0x01000001,0x00100010,0x00010100, // 0059h - 0x00001000,0x00001000,0x00001000,0x00001000, - 0x00000000,0x01111111,0x00100000,0x00010000, // 005ah - 0x00001000,0x00000100,0x00000010,0x01111111, - 0x00000000,0x01111100,0x00000100,0x00000100, // 005bh - 0x00000100,0x00000100,0x00000100,0x01111100, - 0x00000000,0x00100010,0x00010100,0x00111110, // 005ch - 0x00001000,0x00111110,0x00001000,0x00001000, - 0x00000000,0x00011111,0x00010000,0x00010000, // 005dh - 0x00010000,0x00010000,0x00010000,0x00011111, - 0x00000000,0x00001000,0x00010100,0x00100010, // 005eh - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 005fh - 0x00000000,0x00000000,0x00000000,0x01111111, - 0x00000000,0x00010000,0x00001000,0x00011000, // 0060h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00011110,0x00100001, // 0061h - 0x00111110,0x00100001,0x00100001,0x01011110, - 0x00000000,0x00000001,0x00000001,0x00111111, // 0062h - 0x01000001,0x01000001,0x01000001,0x00111111, - 0x00000000,0x00000000,0x00111100,0x01000010, // 0063h - 0x00000001,0x00000001,0x01000010,0x00111100, - 0x00000000,0x01000000,0x01000000,0x01111110, // 0064h - 0x01000001,0x01000001,0x01000001,0x01111110, - 0x00000000,0x00000000,0x00111110,0x01000001, // 0065h - 0x01111111,0x00000001,0x01000001,0x00111110, - 0x00000000,0x00110000,0x00001000,0x00001000, // 0066h - 0x01111111,0x00001000,0x00001000,0x00001000, - 0x00000000,0x00000000,0x01111110,0x01000001, // 0067h - 0x01000001,0x01111110,0x01000000,0x00111110, - 0x00000000,0x00000001,0x00000001,0x00000001, // 0068h - 0x00111111,0x01000001,0x01000001,0x01000001, - 0x00000000,0x00001000,0x00000000,0x00001000, // 0069h - 0x00001000,0x00001000,0x00001000,0x00001000, - 0x00000000,0x00100000,0x00000000,0x00100000, // 006ah - 0x00100000,0x00100001,0x00100001,0x00011110, - 0x00000000,0x00000001,0x00000001,0x01100001, // 006bh - 0x00011001,0x00000111,0x00011001,0x01100001, - 0x00000000,0x00001000,0x00001000,0x00001000, // 006ch - 0x00001000,0x00001000,0x00001000,0x00001000, - 0x00000000,0x00000000,0x00110111,0x01001001, // 006dh - 0x01001001,0x01001001,0x01001001,0x01001001, - 0x00000000,0x00000000,0x00111111,0x01000001, // 006eh - 0x01000001,0x01000001,0x01000001,0x01000001, - 0x00000000,0x00000000,0x00011100,0x00100010, // 006fh - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x00000000,0x00111101,0x01000011, // 0070h - 0x01000001,0x01000011,0x00111101,0x00000001, - 0x00000000,0x00000000,0x01011110,0x01100001, // 0071h - 0x01000001,0x01100001,0x01011110,0x01000000, - 0x00000000,0x00000000,0x00110001,0x00001101, // 0072h - 0x00000011,0x00000001,0x00000001,0x00000001, - 0x00000000,0x00000000,0x00111110,0x01000001, // 0073h - 0x00001110,0x00110000,0x01000001,0x00111110, - 0x00000000,0x00000100,0x00000100,0x01111111, // 0074h - 0x00000100,0x00000100,0x00000100,0x01111000, - 0x00000000,0x00000000,0x01000001,0x01000001, // 0075h - 0x01000001,0x01000001,0x01000001,0x01111110, - 0x00000000,0x00000000,0x01000001,0x01000001, // 0076h - 0x00100010,0x00100010,0x00010100,0x00001000, - 0x00000000,0x00000000,0x01000001,0x01000001, // 0077h - 0x01001001,0x00101010,0x00101010,0x00010100, - 0x00000000,0x00000000,0x00100001,0x00010010, // 0078h - 0x00001100,0x00001100,0x00010010,0x00100001, - 0x00000000,0x00000000,0x01000001,0x01000001, // 0079h - 0x00100010,0x00011100,0x00001000,0x00000110, - 0x00000000,0x00000000,0x00111111,0x00010000, // 007ah - 0x00001000,0x00000100,0x00000010,0x00111111, - 0x00000000,0x00001000,0x00011110,0x01100100, // 007bh - 0x00011000,0x00100100,0x00000100,0x01111000, - 0x00000000,0x00000000,0x00011110,0x00000100, // 007ch - 0x00011110,0x00110101,0x00101101,0x00010010, - 0x00000000,0x00000000,0x00000000,0x00010001, // 007dh - 0x00100001,0x00100001,0x00000001,0x00000010, - 0x00000000,0x00000000,0x00011100,0x00000000, // 007eh - 0x00011110,0x00100000,0x00100000,0x00011100, - 0x00000000,0x00000000,0x00011100,0x00000000, // 007fh - 0x00111110,0x00010000,0x00001100,0x00110010, - 0x00000000,0x00000000,0x00000100,0x00101111, // 0080h - 0x01000100,0x00011110,0x00100101,0x00010110, - 0x00000000,0x00000000,0x00001010,0x00011110, // 0081h - 0x00101011,0x00100010,0x00010100,0x00000100, - 0x00000000,0x00000000,0x00001000,0x00011101, // 0082h - 0x00101011,0x00101001,0x00011001,0x00000100, - 0x00000000,0x00000000,0x00001000,0x00111000, // 0083h - 0x00001000,0x00011110,0x00101001,0x00000110, - 0x00000000,0x00000000,0x00000000,0x00011100, // 0084h - 0x00100011,0x00100000,0x00100000,0x00011100, - 0x00000000,0x00000110,0x01001001,0x00110000, // 0085h - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000100,0x00111111,0x00000100, // 0086h - 0x00111110,0x01010101,0x01001101,0x00100110, - 0x00000000,0x00000000,0x00100001,0x01000001, // 0087h - 0x01000001,0x01000001,0x00000001,0x00000010, - 0x00000000,0x00111100,0x00000000,0x00111110, // 0088h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x00011100,0x00000000,0x00111110, // 0089h - 0x00010000,0x00001000,0x00010100,0x01100010, - 0x00000000,0x00100100,0x01011111,0x00000100, // 008ah - 0x00111110,0x01000101,0x01000101,0x00100010, - 0x00000000,0x00100010,0x01001111,0x01010010, // 008bh - 0x01010010,0x00010010,0x00010010,0x00001001, - 0x00000000,0x00000100,0x00111110,0x00001000, // 008ch - 0x00111110,0x00010000,0x00000010,0x00111100, - 0x00000000,0x00100000,0x00011000,0x00000110, // 008dh - 0x00000001,0x00000110,0x00011000,0x00100000, - 0x00000000,0x00100000,0x01111101,0x00100001, // 008eh - 0x00100001,0x00100001,0x00100001,0x00010010, - 0x00000000,0x00011110,0x00100000,0x00000000, // 008fh - 0x00000000,0x00000001,0x00000001,0x00111110, - 0x00000000,0x00001000,0x01111111,0x00010000, // 0090h - 0x00100000,0x00000010,0x00000010,0x00111100, - 0x00000000,0x00000001,0x00000001,0x00000001, // 0091h - 0x01000001,0x01000001,0x00100010,0x00011100, - 0x00000000,0x00010000,0x01111111,0x00011000, // 0092h - 0x00010100,0x00010100,0x00011000,0x00001100, - 0x00000000,0x00100010,0x01111111,0x00100010, // 0093h - 0x00100010,0x00000010,0x00000010,0x01111100, - 0x00000000,0x00111100,0x00010000,0x00001100, // 0094h - 0x01111111,0x00001000,0x00001000,0x00110000, - 0x00000000,0x00000100,0x00011111,0x00000100, // 0095h - 0x01110100,0x00000010,0x00001010,0x01110010, - 0x00000000,0x00001000,0x01111111,0x00000100, // 0096h - 0x00111100,0x01000010,0x01000000,0x00111100, - 0x00000000,0x00000000,0x00011100,0x00100011, // 0097h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x01111111,0x00010000,0x00001000, // 0098h - 0x00001000,0x00001000,0x00001000,0x00110000, - 0x00000000,0x00000010,0x00110010,0x00001100, // 0099h - 0x00000010,0x00000001,0x00000001,0x00111110, - 0x00000000,0x00100100,0x01001111,0x01000010, // 009ah - 0x00010001,0x00111100,0x00010010,0x00001100, - 0x00000000,0x00000010,0x01111010,0x01000010, // 009bh - 0x00000010,0x00000010,0x00001010,0x01110010, - 0x00000000,0x00100010,0x00111110,0x01010010, // 009ch - 0x01001011,0x01101101,0x01010101,0x00110010, - 0x00000000,0x00110010,0x01001011,0x01000110, // 009dh - 0x01000110,0x01110010,0x01001011,0x00110010, - 0x00000000,0x00011100,0x00101010,0x01001001, // 009eh - 0x01001001,0x01000101,0x01000101,0x00110010, - 0x00000000,0x00100001,0x01111101,0x00100001, // 009fh - 0x00100001,0x00111001,0x01100101,0x00011001, - 0x00000000,0x00000100,0x00100011,0x01100010, // 00a0h - 0x00100001,0x00100001,0x00010010,0x00001100, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00a1h - 0x00000000,0x00000100,0x00001010,0x00000100, - 0x00000000,0x01110000,0x00010000,0x00010000, // 00a2h - 0x00010000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00a3h - 0x00001000,0x00001000,0x00001000,0x00001110, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00a4h - 0x00000000,0x00000010,0x00000100,0x00000100, - 0x00000000,0x00000000,0x00000000,0x00011000, // 00a5h - 0x00011000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x01111111,0x01000000,0x01111111, // 00a6h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x00000000,0x00111111,0x00100000, // 00a7h - 0x00010100,0x00001100,0x00000100,0x00000010, - 0x00000000,0x00000000,0x00100000,0x00100000, // 00a8h - 0x00010000,0x00001111,0x00001000,0x00001000, - 0x00000000,0x00000000,0x00000100,0x00111111, // 00a9h - 0x00100001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x00000000,0x00000000,0x00111110, // 00aah - 0x00001000,0x00001000,0x00001000,0x01111111, - 0x00000000,0x00000000,0x00010000,0x00111111, // 00abh - 0x00011000,0x00010100,0x00010010,0x00011001, - 0x00000000,0x00000000,0x00000010,0x00111111, // 00ach - 0x00100010,0x00010010,0x00000100,0x00000100, - 0x00000000,0x00000000,0x00000000,0x00111110, // 00adh - 0x00100000,0x00100000,0x00100000,0x01111111, - 0x00000000,0x00000000,0x00111110,0x00100000, // 00aeh - 0x00111110,0x00100000,0x00100000,0x00111110, - 0x00000000,0x00000000,0x00100101,0x00101010, // 00afh - 0x00101010,0x00100000,0x00010000,0x00001110, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00b0h - 0x01111111,0x00000000,0x00000000,0x00000000, - 0x00000000,0x01111111,0x01000000,0x00101000, // 00b1h - 0x00011000,0x00001000,0x00001000,0x00000100, - 0x00000000,0x01000000,0x00100000,0x00011000, // 00b2h - 0x00010111,0x00010000,0x00010000,0x00010000, - 0x00000000,0x00001000,0x01111111,0x01000001, // 00b3h - 0x01000001,0x01000000,0x00100000,0x00011000, - 0x00000000,0x00000000,0x00111110,0x00001000, // 00b4h - 0x00001000,0x00001000,0x00001000,0x01111111, - 0x00000000,0x00100000,0x01111111,0x00110000, // 00b5h - 0x00101000,0x00100100,0x00100010,0x00110001, - 0x00000000,0x00000100,0x01111111,0x01000100, // 00b6h - 0x01000100,0x01000100,0x01000010,0x00100001, - 0x00000000,0x00000100,0x00111111,0x00001000, // 00b7h - 0x01111111,0x00010000,0x00010000,0x00010000, - 0x00000000,0x01111100,0x01000100,0x01000100, // 00b8h - 0x01000010,0x01000000,0x00100000,0x00011000, - 0x00000000,0x00000010,0x01111110,0x00100010, // 00b9h - 0x00100001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x01111110,0x01000000,0x01000000, // 00bah - 0x01000000,0x01000000,0x01000000,0x01111110, - 0x00000000,0x00100010,0x01111111,0x00100010, // 00bbh - 0x00100010,0x00100000,0x00010000,0x00001100, - 0x00000000,0x00000011,0x00000100,0x01000011, // 00bch - 0x01000100,0x00100000,0x00011000,0x00000111, - 0x00000000,0x01111111,0x01000000,0x00100000, // 00bdh - 0x00010000,0x00011000,0x00100100,0x01000011, - 0x00000000,0x00000010,0x01111111,0x01000010, // 00beh - 0x00100010,0x00000010,0x00000010,0x01111100, - 0x00000000,0x01000001,0x01000010,0x01000000, // 00bfh - 0x00100000,0x00100000,0x00011000,0x00000110, - 0x00000000,0x01111110,0x01000010,0x01001110, // 00c0h - 0x01110001,0x01000000,0x00100000,0x00011000, - 0x00000000,0x01100000,0x00011110,0x00010000, // 00c1h - 0x01111111,0x00010000,0x00010000,0x00001100, - 0x00000000,0x01000101,0x01001010,0x01001010, // 00c2h - 0x01000000,0x00100000,0x00010000,0x00001110, - 0x00000000,0x00111110,0x00000000,0x01111111, // 00c3h - 0x00010000,0x00010000,0x00001000,0x00000110, - 0x00000000,0x00000010,0x00000010,0x00000110, // 00c4h - 0x00011010,0x01100010,0x00000010,0x00000010, - 0x00000000,0x00010000,0x00010000,0x01111111, // 00c5h - 0x00010000,0x00010000,0x00001000,0x00000110, - 0x00000000,0x00000000,0x00111110,0x00000000, // 00c6h - 0x00000000,0x00000000,0x00000000,0x01111111, - 0x00000000,0x01111110,0x01000000,0x01000100, // 00c7h - 0x00101000,0x00010000,0x00101000,0x01000110, - 0x00000000,0x00001000,0x01111111,0x00100000, // 00c8h - 0x00010000,0x00011100,0x01101011,0x00001000, - 0x00000000,0x01000000,0x01000000,0x01000000, // 00c9h - 0x00100000,0x00100000,0x00011000,0x00000111, - 0x00000000,0x00010010,0x00100010,0x00100010, // 00cah - 0x01000010,0x01000010,0x01000001,0x01000001, - 0x00000000,0x00000001,0x00000001,0x01111111, // 00cbh - 0x00000001,0x00000001,0x00000001,0x01111110, - 0x00000000,0x01111111,0x01000000,0x01000000, // 00cch - 0x01000000,0x00100000,0x00010000,0x00001110, - 0x00000000,0x00000000,0x00000100,0x00001010, // 00cdh - 0x00010001,0x00100001,0x01000000,0x00000000, - 0x00000000,0x00001000,0x00001000,0x01111111, // 00ceh - 0x00001000,0x00101010,0x01001010,0x01001001, - 0x00000000,0x01111111,0x01000000,0x01000000, // 00cfh - 0x00100010,0x00010100,0x00001000,0x00010000, - 0x00000000,0x00001110,0x01110000,0x00001110, // 00d0h - 0x01110000,0x00000110,0x00011000,0x01100000, - 0x00000000,0x00001000,0x00001000,0x00000100, // 00d1h - 0x00000100,0x00100010,0x01000010,0x01111111, - 0x00000000,0x01000000,0x01000000,0x00100100, // 00d2h - 0x00101000,0x00010000,0x00101100,0x01000011, - 0x00000000,0x01111111,0x00000100,0x01111111, // 00d3h - 0x00000100,0x00000100,0x00000100,0x01111000, - 0x00000000,0x00000010,0x01111111,0x01000010, // 00d4h - 0x00100010,0x00010100,0x00000100,0x00000100, - 0x00000000,0x00000000,0x00111110,0x00100000, // 00d5h - 0x00100000,0x00100000,0x00100000,0x01111111, - 0x00000000,0x01111110,0x01000000,0x01000000, // 00d6h - 0x01111110,0x01000000,0x01000000,0x01111110, - 0x00000000,0x00111110,0x00000000,0x01111111, // 00d7h - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x01000010,0x01000010,0x01000010, // 00d8h - 0x01000010,0x01000000,0x00100000,0x00011000, - 0x00000000,0x00001010,0x00001010,0x00001010, // 00d9h - 0x01001010,0x01001010,0x00101010,0x00011001, - 0x00000000,0x00000010,0x00000010,0x01000010, // 00dah - 0x01000010,0x00100010,0x00010010,0x00001110, - 0x00000000,0x01111111,0x01000001,0x01000001, // 00dbh - 0x01000001,0x01000001,0x01000001,0x01111111, - 0x00000000,0x01111111,0x01000001,0x01000001, // 00dch - 0x01000000,0x01000000,0x00100000,0x00011100, - 0x00000000,0x01000011,0x01000100,0x01000000, // 00ddh - 0x01000000,0x00100000,0x00010000,0x00001111, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00deh - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00000000,0x00000000,0x00000000, // 00dfh - 0x00000000,0x00000000,0x00000000,0x00000000, - 0x00000000,0x00011110,0x00001000,0x00000100, // 00e0h - 0x00101001,0x01010001,0x01010001,0x00001100, - 0x00000000,0x00000000,0x00001100,0x00010010, // 00e1h - 0x00010010,0x00100001,0x01000000,0x00000000, - 0x00000000,0x01111101,0x00100001,0x01111101, // 00e2h - 0x00100001,0x00111001,0x01100101,0x00011001, - 0x00000000,0x00111100,0x00010000,0x00111100, // 00e3h - 0x00010000,0x00011100,0x00110010,0x00001100, - 0x00000000,0x00001110,0x00101000,0x00101000, // 00e4h - 0x00111110,0x01100101,0x00100101,0x00010010, - 0x00000000,0x00000100,0x00101111,0x01000100, // 00e5h - 0x00000110,0x01000101,0x01000101,0x00111110, - 0x00000000,0x00100010,0x00100010,0x00111110, // 00e6h - 0x01010010,0x01010101,0x01001101,0x00100110, - 0x00000000,0x00000100,0x00011111,0x00000010, // 00e7h - 0x00011111,0x01000010,0x01000010,0x00111100, - 0x00000000,0x00010010,0x00111110,0x01010011, // 00e8h - 0x01000010,0x00100100,0x00000100,0x00000100, - 0x00000000,0x00001000,0x00111101,0x01001011, // 00e9h - 0x01001001,0x01001001,0x00111000,0x00000100, - 0x00000000,0x00001000,0x00111000,0x00001000, // 00eah - 0x00001000,0x00011110,0x00101001,0x00000110, - 0x00000000,0x00011000,0x00100000,0x00000100, // 00ebh - 0x00111010,0x01000110,0x01000000,0x00111000, - 0x00000000,0x01000010,0x01000010,0x01000010, // 00ech - 0x01000110,0x01000000,0x00100000,0x00011000, - 0x00000000,0x00111110,0x00010000,0x00111100, // 00edh - 0x01000011,0x01001100,0x01010010,0x00111100, - 0x00000000,0x00100010,0x00110011,0x00101010, // 00eeh - 0x00100110,0x00100010,0x00100011,0x01000010, - 0x00000000,0x00111110,0x00010000,0x00111100, // 00efh - 0x01000011,0x01000000,0x01000010,0x00111100, - 0x00000000,0x00000010,0x00111011,0x01000110, // 00f0h - 0x01000010,0x01000011,0x01000010,0x00110010, - 0x00000000,0x00000100,0x00000100,0x00000010, // 00f1h - 0x01000110,0x01000101,0x01000101,0x00111001, - 0x00000000,0x01010100,0x01111111,0x00100100, // 00f2h - 0x00100100,0x00100100,0x00100010,0x00010001, - 0x00000000,0x01010100,0x01011111,0x00000100, // 00f3h - 0x00111111,0x00001000,0x00001000,0x00001000, - 0x00000000,0x01011110,0x01100010,0x00100010, // 00f4h - 0x00100001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x01010010,0x01111110,0x00100010, // 00f5h - 0x00100001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x01010000,0x01111111,0x00100000, // 00f6h - 0x00100000,0x00100000,0x00100000,0x00111111, - 0x00000000,0x01010010,0x01010010,0x00111111, // 00f7h - 0x00010010,0x00010000,0x00010000,0x00001100, - 0x00000000,0x01010011,0x01010100,0x00100011, // 00f8h - 0x00100100,0x00010000,0x00001000,0x00000111, - 0x00000000,0x01010000,0x01011111,0x00010000, // 00f9h - 0x00001000,0x00001100,0x00010010,0x00100001, - 0x00000000,0x01010010,0x01111111,0x00100010, // 00fah - 0x00010010,0x00000010,0x00000010,0x00111100, - 0x00000000,0x01010001,0x01010010,0x00100000, // 00fbh - 0x00100000,0x00010000,0x00001000,0x00000110, - 0x00000000,0x01011110,0x01010010,0x00100110, // 00fch - 0x00111001,0x00100000,0x00010000,0x00001100, - 0x00000000,0x01010000,0x01011110,0x00010000, // 00fdh - 0x01111111,0x00010000,0x00010000,0x00001100, - 0x00000000,0x00100101,0x01001010,0x00101010, // 00feh - 0x00100000,0x00010000,0x00001000,0x00000111, - 0x00000000,0x01011110,0x01010000,0x00111111, // 00ffh - 0x00001000,0x00001000,0x00001000,0x00000110 -}; -*/ - - diff --git a/build/tests/DispOwnerInfo/src/data.h b/build/tests/DispOwnerInfo/src/data.h deleted file mode 100644 index cdfa09ce..00000000 --- a/build/tests/DispOwnerInfo/src/data.h +++ /dev/null @@ -1,108 +0,0 @@ -/********************************************************************/ -/* data.h */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - ƒf[ƒ^’è‹`@ƒwƒbƒ_ -*/ - -#ifndef __DATA_H__ -#define __DATA_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include -#include - -// define data--------------------------------------------- - - // ƒpƒŒƒbƒgƒJƒ‰[ -#define WHITE ( 1 << 12 ) -#define RED ( 2 << 12 ) -#define GREEN ( 3 << 12 ) -#define BLUE ( 4 << 12 ) -#define YELLOW ( 5 << 12 ) -#define CYAN ( 6 << 12 ) -#define PURPLE ( 7 << 12 ) -#define LIGHTGREEN ( 8 << 12 ) -#define HIGHLIGHT_Y ( 9 << 12 ) -#define HIGHLIGHT_C ( 10 << 12 ) -#define HIGHLIGHT_W ( 11 << 12 ) -#define HIGHLIGHT_B ( 12 << 12 ) -#define HIGHLIGHT_R ( 13 << 12 ) - - -// fntƒ‰ƒCƒuƒ‰ƒŠ‚̃Jƒ‰[Žw’è -#define FNT_BLACK 0 -#define FNT_RED 1 -#define FNT_LIGHT_GREEN 2 -#define FNT_YELLOW 3 -#define FNT_BLUE 4 -#define FNT_PURPLE 5 -#define FNT_VERMILION 6 -#define FNT_WHITE 7 -#define FNT_SYUIRO 8 -#define FNT_GREEN 9 -#define FNT_USER_COLOR 10 - - -#define CANVAS_WIDTH 256 // •¶Žš•\ަƒLƒƒƒ“ƒpƒX‰¡ƒhƒbƒg” -#define CANVAS_HEIGHT 192 // @@@V@@@@@cƒhƒbƒg” -#define LINE_DOT_NUM 10 - - - // ƒL[ƒf[ƒ^ƒ[ƒN -typedef struct { - u16 trg; // ƒgƒŠƒK“ü—Í - u16 cont; // ƒxƒ^ “ü—Í -}KeyWork; - - - // ƒ^ƒbƒ`ƒpƒlƒ‹ƒ[ƒN -typedef struct { - int detached; // ¡‰ñ‚̃f[ƒ^“ü—͂Ń^ƒbƒ`‚ª—£‚ꂽ‚±‚Æ‚ðŽ¦‚·B - BOOL initial; // ‰Šú‰»’¼Œã‚ÍATP‚ªƒfƒ^ƒbƒ`‚³‚ê‚é‚Ü‚ÅAƒf[ƒ^Žæ“¾‚µ‚È‚¢‚悤‚É‚·‚éB - TPData disp; // ¡‰ñ‚Ì“ü—Í’liLCDÀ•Wj - TPData raw; // ¡‰ñ‚Ì“ü—Í’liTP À•Wj - TPData last; // ‘O‰ñ‚Ì“ü—Í’liLCDÀ•Wj -}TpWork; - - -// global variables---------------------------------------- -extern int (*nowProcess)( void ); -extern GXOamAttr oamBakM[ 128 ]; // OAM ƒoƒbƒNƒAƒbƒv -extern GXOamAttr oamBakS[ 128 ]; // OAM ƒoƒbƒNƒAƒbƒv -extern u16 bgBakM[ 32*24 ]; // BG ƒoƒbƒNƒAƒbƒv -extern u16 bgBakS[ 32*24 ]; // BG ƒoƒbƒNƒAƒbƒv -extern TpWork tpd; // ƒ^ƒbƒ`ƒpƒlƒ‹ƒf[ƒ^ -extern KeyWork pad; // ƒL[ƒpƒbƒh“ü—̓f[ƒ^ - -extern tFntEntry font_m; -extern tFntDrawContext context_m; -extern u16 canvas_m[ CANVAS_WIDTH * CANVAS_HEIGHT / 4 ] ATTRIBUTE_ALIGN(32); -extern u16 screen_m[ (CANVAS_WIDTH>>3) * (CANVAS_HEIGHT>>3) ] ATTRIBUTE_ALIGN(32); - -extern tFntEntry font_s; -extern tFntDrawContext context_s; -extern u16 canvas_s[ CANVAS_WIDTH * CANVAS_HEIGHT / 4 ] ATTRIBUTE_ALIGN(32); -extern u16 screen_s[ (CANVAS_WIDTH>>3) * (CANVAS_HEIGHT>>3) ] ATTRIBUTE_ALIGN(32); - -extern u16 s_Palette[ 0x10 ]; - -// global const data--------------------------------------- -extern const u16 myPlttData[13][16]; - - -// function------------------------------------------------ - - -#ifdef __cplusplus -} -#endif - -#endif // __DATA_H__ diff --git a/build/tests/DispOwnerInfo/src/dispNCD.c b/build/tests/DispOwnerInfo/src/dispNCD.c deleted file mode 100644 index 1efdbacb..00000000 --- a/build/tests/DispOwnerInfo/src/dispNCD.c +++ /dev/null @@ -1,282 +0,0 @@ -/********************************************************************/ -/* dispNCD.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - NITROÝ’èƒf[ƒ^•\ަ - - $Log: dispNCD.c,v $ - Revision 1.7.2.2.8.1 2007/01/22 07:36:16 yosiokat - NAT-IPL2‚ւ̑ΉžB - - Revision 1.7.2.3 2006/06/26 04:09:02 yosiokat - DrawNCD_Element‚ÌŒ¾ŒêƒR[ƒh‚Ì•\ަ”»’è•”‚ðC³B - - Revision 1.7.2.2 2006/02/01 06:32:43 yosiokat - IPL2ƒo[ƒWƒ‡ƒ“î•ñŽæ“¾ŠÖ”‚Ì®—B - - Revision 1.7.2.1 2005/10/25 08:19:39 yosiokat - E’†‘”Å‚©‚Ç‚¤‚©‚Ì”»’è‚ðŠÖ”IsIPLTypeChinese‚Ås‚¤‚悤•ÏXB - EUSG”ł̎ž‚ÉAƒoƒbƒNƒ‰ƒCƒg‹P“xî•ñi‚O`‚Rj‚ð•\ަ‚·‚邿‚¤•ÏXB - - Revision 1.7 2005/04/14 05:53:47 yosiokat - NITROÝ’èƒf[ƒ^ŠÖŒW‚ð‹­§“I‚É’†‘”łɂ·‚éƒXƒCƒbƒ`FORCE_CHINA‚ð’ljÁB - - Revision 1.6 2005/04/02 10:04:08 yosiokat - ƒ†[ƒU[ƒJƒ‰[‚ÌF•\ަ‚ɑΉžB - - Revision 1.5 2005/04/02 07:42:54 yosiokat - ƒ†[ƒU[ƒl[ƒ€•ƒRƒƒ“ƒg‚ðIPL2ƒtƒHƒ“ƒg‚ðŽg—p‚µ‚Ä‘S‚Ä•\ަ‚Å‚«‚邿‚¤•ÏXB - - Revision 1.4 2005/04/01 05:47:24 yosiokat - NitroConfigDataEx‘ΉžIPL2‚ÌŽž‚É‚ÍAŒ¾ŒêƒR[ƒh‚ðEx‘¤‚à•\ަ‚·‚邿‚¤•ÏXB - - Revision 1.3 2005/03/31 05:59:15 yosiokat - EŒ¾ŒêƒR[ƒh‚ÉCHINESEAUNKNOWN‚̒ljÁB - ETPƒf[ƒ^ƒ[ƒN‚̃NƒŠƒA‚ðInitTPData()‚É•ÏXB - - Revision 1.2 2005/03/09 04:44:39 yosiokat - ‹@”\’ljÁB - - Revision 1.1.1.1 2004/08/31 06:20:24 Yosiokat - no message - - -*/ - -#include -#include "main.h" -#include "NitroConfigData.h" -#include "font.h" - -// define data------------------------------------------ -#define CANCEL_BUTTON_LT_X 2 -#define CANCEL_BUTTON_LT_Y 22 -#define CANCEL_BUTTON_RB_X (CANCEL_BUTTON_LT_X+8) -#define CANCEL_BUTTON_RB_Y (CANCEL_BUTTON_LT_Y+2) - -#define IPL2_GAIJI_SIKAKU 0x25a0 - -/* –{‘Ìî•ñ : u‚¨‹C‚É“ü‚è‚ÌFv’è” (GXRgb) */ -#define FAVORITE_COLOR_VALUE_GRAY GX_RGB(12,16,19) -#define FAVORITE_COLOR_VALUE_BROWN GX_RGB(23, 9, 0) -#define FAVORITE_COLOR_VALUE_RED GX_RGB(31, 0, 3) -#define FAVORITE_COLOR_VALUE_PINK GX_RGB(31,17,31) -#define FAVORITE_COLOR_VALUE_ORANGE GX_RGB(31,18, 0) -#define FAVORITE_COLOR_VALUE_YELLOW GX_RGB(30,28, 0) -#define FAVORITE_COLOR_VALUE_LIME_GREEN GX_RGB(21,31, 0) -#define FAVORITE_COLOR_VALUE_GREEN GX_RGB( 0,31, 0) -#define FAVORITE_COLOR_VALUE_DARK_GREEN GX_RGB( 0,20, 7) -#define FAVORITE_COLOR_VALUE_SEA_GREEN GX_RGB( 9,27,17) -#define FAVORITE_COLOR_VALUE_TURQUOISE GX_RGB( 6,23,30) -#define FAVORITE_COLOR_VALUE_BLUE GX_RGB( 0,11,30) -#define FAVORITE_COLOR_VALUE_DARK_BLUE GX_RGB( 0, 0,18) -#define FAVORITE_COLOR_VALUE_PURPLE GX_RGB(17, 0,26) -#define FAVORITE_COLOR_VALUE_VIOLET GX_RGB(26, 0,29) -#define FAVORITE_COLOR_VALUE_MAGENTA GX_RGB(31, 0,18) - - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- -static void DrawNCD_ElementName( void ); -static void DrawNCD_Element( void ); -static void DispUserNameAndComment( u16 color ); - -// global variable ------------------------------------- - -// static variable ------------------------------------- - -// const data ----------------------------------------- -static const u8 *str_lcd[] = { (const u8 *)"TOP", - (const u8 *)"BOTTOM" }; -static const u8 *str_onoff[] = { (const u8 *)"OFF", - (const u8 *)"ON" }; -static const u8 *str_inputFlags[] = { - (const u8 *)"NAME", - (const u8 *)"RTC ", - (const u8 *)"LANG", - (const u8 *)"TP ", - (const u8 *)"COL ", - (const u8 *)"BDAY", }; -static const u8 *str_language[] = { (const u8 *)"JAPANESE", - (const u8 *)"ENGLISH", - (const u8 *)"FRENCH", - (const u8 *)"GERMAN", - (const u8 *)"ITALIAN", - (const u8 *)"SPANISH", - (const u8 *)"CHINISE", - (const u8 *)"HANGUL", - (const u8 *)"UNKNOWN", -}; - -static const u8 *str_userColor[] = { - (const u8 *)"GRAY", - (const u8 *)"BROWN", - (const u8 *)"RED", - (const u8 *)"PINK", - (const u8 *)"ORANGE", - (const u8 *)"YELLOW", - (const u8 *)"LIME GREEN ", - (const u8 *)"GREEN", - (const u8 *)"DARK GREEN", - (const u8 *)"SEA GREEN", - (const u8 *)"TURQUOISE", - (const u8 *)"BLUE", - (const u8 *)"DARK BLUE", - (const u8 *)"PURPLE", - (const u8 *)"VIOLET", - (const u8 *)"MAGENTA", -}; - -static const u16 palette_userColor[] = { - FAVORITE_COLOR_VALUE_GRAY, - FAVORITE_COLOR_VALUE_BROWN, - FAVORITE_COLOR_VALUE_RED, - FAVORITE_COLOR_VALUE_PINK, - FAVORITE_COLOR_VALUE_ORANGE, - FAVORITE_COLOR_VALUE_YELLOW, - FAVORITE_COLOR_VALUE_LIME_GREEN, - FAVORITE_COLOR_VALUE_GREEN, - FAVORITE_COLOR_VALUE_DARK_GREEN, - FAVORITE_COLOR_VALUE_SEA_GREEN, - FAVORITE_COLOR_VALUE_TURQUOISE, - FAVORITE_COLOR_VALUE_BLUE, - FAVORITE_COLOR_VALUE_DARK_BLUE, - FAVORITE_COLOR_VALUE_PURPLE, - FAVORITE_COLOR_VALUE_VIOLET, - FAVORITE_COLOR_VALUE_MAGENTA, -}; - -static const u16 str_sikaku[] = L"¡¡¡¡"; - -//====================================================== -// NITROÝ’èƒf[ƒ^•\ަ -//====================================================== - -// NITROÝ’èƒf[ƒ^•\ަ‚̉Šú‰» -void SEQ_DispNCD_init( void ) -{ - GXS_SetVisiblePlane( GX_PLANEMASK_NONE ); - GX_SetVisiblePlane ( GX_PLANEMASK_NONE ); - - SVC_CpuClearFast( 0x0000, bgBakM, sizeof(bgBakM) ); - SVC_CpuClearFast( 0x0000, bgBakS, sizeof(bgBakS) ); - - ClearAllStringSJIS(); - -// (void)DrawStringSJIS( 1, 0, YELLOW, (const u8 *)"Disp OwnerInfo [Use SDK 2.00 W]" ); -// (void)DrawStringSJIS( 1, 0, YELLOW, (const u8 *)"Disp OwnerInfo [Use SDK 2.01 WC]" ); - (void)DrawStringSJIS( 1, 0, YELLOW, (const u8 *)"Disp OwnerInfo [Use SDK 5.01 PR1 WCK]" ); - - DrawNCD_ElementName(); - DrawNCD_Element(); - - GX_SetVisiblePlane ( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 | GX_PLANEMASK_OBJ ); -} - - -// NITROÝ’èƒf[ƒ^‚Ì•\ަ -int SEQ_DispNCD( void ) -{ - BOOL tp_cancel = FALSE; - - return 0; -} - - -// NITROÝ’èƒf[ƒ^‚Ì—v‘f–¼•\ަ -static void DrawNCD_ElementName( void ) -{ - { // TOP LCD - SetTargetScreenSJIS( BOTTOM_SCREEN ); - (void)DrawStringSJIS( 1, 4, CYAN , (const u8 *)"[OPTION]" ); - (void)DrawStringSJIS( 2, 6, LIGHTGREEN, (const u8 *)"Language :" ); - (void)DrawStringSJIS( 1, 8, CYAN , (const u8 *)"[OWNER]" ); - (void)DrawStringSJIS( 2, 10, LIGHTGREEN, (const u8 *)"fav color:" ); - (void)DrawStringSJIS( 2, 12, LIGHTGREEN, (const u8 *)"birthday :" ); - (void)DrawStringSJIS( 2, 14, LIGHTGREEN, (const u8 *)"nickname :" ); - (void)DrawStringSJIS( 2, 16, LIGHTGREEN, (const u8 *)"comment :" ); -// SetTargetScreenSJIS( BOTTOM_SCREEN ); - } -} - - -// NITROÝ’èƒf[ƒ^‚ÌŠe—v‘f•\ަ -static void DrawNCD_Element( void ) -{ - const u8 *str; - OSOwnerInfo info; - OS_GetOwnerInfo( &info ); - - { // TOP LCD - SetTargetScreenSJIS( BOTTOM_SCREEN ); - if( info.language < LANG_CODE_MAX ) { - str = str_language[ info.language ]; - }else { - str = str_language[ LANG_CODE_MAX ]; - } - (void)DrawStringSJISEx( 12, 6, WHITE, str, 0 ); - -// SetTargetScreenSJIS( BOTTOM_SCREEN ); - } - { - int temp; - - // ƒ†[ƒU[ƒJƒ‰[ - { - tFntPosition x = (tFntPosition){ 12 * 8 , FNT_POSX_ORIGIN_LEFT, FNT_H_ALIGN_LEFT }; - tFntPosition y = (tFntPosition){ 11 * 8 + 4, FNT_POSY_ORIGIN_BOTTOM , 0 /*unused*/ }; - temp = info.favoriteColor; - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, str_sikaku, FNT_USER_COLOR ); - (void)DrawDecimalSJIS( 18, 10, WHITE, &temp, 2, 4 ); - (void)DrawStringSJIS ( 20, 10, WHITE, str_userColor[ temp ] ); - GXS_LoadBGPltt( &palette_userColor[ temp ], FNT_USER_COLOR * 2, 2 ); - } - (void)DrawStringSJIS ( 14, 12, WHITE, (const u8 *)"/" ); - (void)DrawDecimalSJIS( 12, 12, WHITE, &info.birthday.month, 2, 1 ); - (void)DrawDecimalSJIS( 15, 12, WHITE, &info.birthday.day, 2, 1 ); - - // ƒ†[ƒU[ƒl[ƒ€AƒRƒƒ“ƒg - DispUserNameAndComment( FNT_WHITE ); - - // ƒ†[ƒU[ƒl[ƒ€’·AƒRƒƒ“ƒg’· - (void)DrawDecimalSJIS ( 0, 14, YELLOW, &info.nickNameLength, 2, 1 ); - (void)DrawDecimalSJIS ( 0, 16, YELLOW, &info.commentLength, 2, 1 ); - } -} - - -static void DispUserNameAndComment( u16 color ) -{ - u16 color2 = ( color == FNT_BLACK ) ? (u16)FNT_BLACK : (u16)FNT_YELLOW; - u16 buff[ 256 ]; - tFntPosition x = (tFntPosition){ 12 * 8 , FNT_POSX_ORIGIN_LEFT, FNT_H_ALIGN_LEFT }; - tFntPosition y = (tFntPosition){ 15 * 8 + 4, FNT_POSY_ORIGIN_BOTTOM , 0 /*unused*/ }; - OSOwnerInfo info; - OS_GetOwnerInfo( &info ); - - // ƒ†[ƒU[ƒl[ƒ€‚Ì•\ަ - MI_CpuCopy16 ( info.nickName, buff, NCD_NICKNAME_LENGTH * 2 ); - buff[ NCD_NICKNAME_LENGTH ] = 0; - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, buff, color2 ); - buff[ info.nickNameLength ] = 0; - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, buff, color ); - - - // ƒRƒƒ“ƒg‚Ì•\ަ - y.pos = 19 * 8 + 4; - MI_CpuCopy16( info.comment, buff, (u32)( info.commentLength * 2 ) ); - buff[ info.commentLength ] = 0; - if ( info.commentLength > 13 ) { // 2s‚ɂ܂½‚ª‚鎞B - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, &buff[13], color ); - } - buff[ 13 ] = 0; - y.pos -= 2 * 8; - fnt_DrawString( &font_s, &context_s, x, y, 1, 0, buff, color ); -} - - diff --git a/build/tests/DispOwnerInfo/src/font.c b/build/tests/DispOwnerInfo/src/font.c deleted file mode 100644 index 5d57afd5..00000000 --- a/build/tests/DispOwnerInfo/src/font.c +++ /dev/null @@ -1,1094 +0,0 @@ -/********************************************************************/ -/* font.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - ƒtƒHƒ“ƒgˆ— - - - $Log: font.c,v $ - Revision 1.1 2004/08/31 06:20:24 Yosiokat - Initial revision - - - - - // **** old logs **** - - Revision 1.19 2004/08/25 02:21:40 Yosiokat - E1.14‚̃Rƒƒ“ƒg‚͊ԈႢ‚Ì‚½‚ßAăRƒ~ƒbƒgB - Esmall fix. - - Revision 1.18 2004/08/25 02:15:51 Yosiokat - ƒ^ƒOred_ipl2_2004_08_24_pp2_isdbg_fix‚ÌíœB - - Revision 1.17 2004/08/20 11:35:29 Yosiokat - small fix. - - Revision 1.16 2004/08/18 07:17:29 Yosiokat - ㉺LCD‚ðƒ^[ƒQƒbƒg‚É‚µ‚ÄA•ʌ‚ɉŠú‰»‚Å‚«‚邿‚¤•ÏXB - - Revision 1.15 2004/08/17 07:52:03 Yosiokat - ESetTargetScreenSJIS‚ð’ljÁ‚µ‚ÄA㉺LCD‚̂ǂ¿‚ç‚É‚à•¶Žš•\ަ‚ª‰Â”\‚É‚È‚é‚æ‚¤•ÏXB - - Revision 1.14 2004/08/16 10:03:08 Yosiokat - GetStrEntry‚Ŕ͈͊O‚Ìhandle‚ª—^‚¦‚ç‚ꂽۂÉNULL‚ð•Ô‚·‚悤•ÏXB - - Revision 1.13 2004/08/13 07:32:58 Yosiokat - small fix. - - Revision 1.12 2004/08/13 04:33:18 Yosiokat - small fix. - - Revision 1.11 2004/08/10 07:02:10 yosiokat - small fix. - - Revision 1.10 2004/08/07 05:44:44 Yosiokat - ESJIS•¶Žš—ñ•\ަŠÖ”‚ðˆø”‚Ńnƒ“ƒhƒ‹‚ðŽw’肵‚È‚¢Žd—l‚É•ÏX‚·‚éB - Eã‹L•ÏX‚ɑΉž‚µ‚ÄAƒNƒŠƒAŠÖ”‚àŽd—l•ÏXB - - Revision 1.9 2004/07/29 04:58:42 Yosiokat - \‘¢‘̂̃pƒfƒBƒ“ƒO‚𖾎¦“I‚ɒljÁB - - Revision 1.8 2004/07/13 00:31:48 Yosiokat - EƒTƒuLCD‘¤‚ÌVRAM‚ð‘ÎÛ‚É‚·‚邿‚¤•ÏXB - - Revision 1.7 2004/06/15 13:09:10 Yosiokat - EMY_Printf‚ðOS_Printf‚ÉB - - Revision 1.6 2004/06/06 06:28:24 Yosiokat - OS_Printf‚ðOS_Printf‚ÉB - - Revision 1.5 2004/06/06 02:39:31 Yosiokat - SJISƒR[ƒh”»’è—p‚Ì’è”’è‹`‚ðfont.h‚Ɉړ®B - - Revision 1.4 2004/05/31 11:53:23 yosiokat - __DEBUG‚ð__PRINT‚É•ÏXB - - Revision 1.3 2004/05/26 05:07:34 Yosiokat - DrawStringSJIS‚ŋ󕶎š—ñ‚ðŽw’肵‚½Û‚ɈÙ퓮삷‚éƒoƒO‚ðC³B - - Revision 1.2 2004/05/26 01:16:57 Yosiokat - •¶Žš§Œä‚ðSJISƒx[ƒX‚É•ÏX’†B - - Revision 1.1 2004/05/25 08:59:22 Yosiokat - •¶Žš—ñ‚ðSJIS‚ŧŒä‚·‚邿‚¤‚É•ÏXB - - -*/ - - -#include -#include "font.h" -#include "data.h" - -// define data---------------------------------- -#define SEARCH_ENTRY_MAX_NUM 128 // ˆ—‚ªd‚­‚È‚é‚Ì‚ð–h‚®‚½‚ß‚ÌAƒGƒ“ƒgƒŠ‚̃T[ƒ`‰ñ”ãŒÀ -#define NITRO_CHAR_SIZE 0x20 // NITRO•W€ƒLƒƒƒ‰ƒNƒ^ƒTƒCƒY(4bitƒJƒ‰[j -#define CHAR_CODE_OFFSET (SJIS_CHAR_VRAM_OFFSET / NITRO_CHAR_SIZE) // ƒLƒƒƒ‰ƒiƒ“ƒo[‚ðƒXƒNƒŠ[ƒ“‚É“]‘—‚·‚éۂ̃IƒtƒZƒbƒgiBG_CHAR_VRAM+0x4000‚©‚çŽn‚߂Ă¢‚é‚Ì‚ÅAƒIƒtƒZƒbƒg‚Í0x200j -#define DRAW_CHAR_NUM_LIMIT (SJIS_CHAR_VRAM_SIZE / NITRO_CHAR_SIZE) // ‚P‚‚̕¶Žš—ñ‚Å•\ަ‚Å‚«‚éƒLƒƒƒ‰ƒNƒ^”‚ÌŒÀŠE - -#define HANDLE_INDEX 0x40000000 - -// ƒtƒHƒ“ƒg\¬ƒf[ƒ^ -typedef struct FontComponent { - u16 need_tate_dot; // •¶Žš‚ð•\ަ‚·‚é‚̂ɕK—v‚ȃLƒƒƒ‰’PˆÊ‚̃hƒbƒg” - u16 tate_dot; // •¶ŽšƒLƒƒƒ‰‚Ìcƒhƒbƒg” - u16 yoko_dot; // •¶ŽšƒLƒƒƒ‰‚̉¡ƒhƒbƒg” - u16 org_char_size; // •¶ŽšƒLƒƒƒ‰‚ÌbyteƒTƒCƒY - u32 org_row_size; // •¶ŽšƒLƒƒƒ‰ - u32 start_adr; // ƒLƒƒƒ‰ƒNƒ^ƒoƒCƒiƒŠ‚̃Xƒ^[ƒgƒAƒhƒŒƒX - u32 end_adr; // ƒLƒƒƒ‰ƒNƒ^ƒoƒCƒiƒŠ‚̃Gƒ“ƒhƒAƒhƒŒƒX -}FontComponent; - - -// VRAMƒLƒƒƒ‰ƒf[ƒ^‚̃ƒ‚ƒŠƒuƒƒbƒN“®“IŠm•ÛƒŠƒXƒg -typedef struct CharAllocListTag CharAllocList; -struct CharAllocListTag { - CharAllocList *next; // ŽŸ‚̃ƒ‚ƒŠƒuƒƒbƒNŠm•Û\‘¢‘̂ւ̃|ƒCƒ“ƒ^ - u16 memTop; // ƒLƒƒƒ‰Š„‚è“–‚ăe[ƒuƒ‹charAllocTbl‚Ìè—LƒuƒƒbƒN‚Ìæ“ªƒ|ƒCƒ“ƒg - u16 memNum; // Šm•Û‚µ‚½ƒƒ‚ƒŠƒuƒƒbƒN‚Ì” -}CharAllocListTag; - - -// SJIS•¶Žš—ñ•\ަ‚Ì‚½‚ß‚ÌVRAMƒGƒ“ƒgƒŠƒf[ƒ^ -typedef struct StrEntry { - const FontComponent *font; // •\ަ‚·‚éƒtƒHƒ“ƒg‚Ì\¬—v‘f - u32 dataAddr; // ƒf[ƒ^Œ³‚̃AƒhƒŒƒXiID‚Æ‚µ‚ÄŽg—pj - u32 *charMemp; // “®“I‚ÉŠm•Û‚µ‚½VRAMƒƒ‚ƒŠƒuƒƒbƒN‚ւ̃|ƒCƒ“ƒ^ - u16 charNum; // ƒg[ƒ^ƒ‹‚̃Lƒƒƒ‰” - u16 drawPos; // •\ަˆÊ’uiBGƒXƒNƒŠ[ƒ“ƒoƒbƒtƒ@‚Ìæ“ª‚©‚ç‚Ì2byteƒIƒtƒZƒbƒgj -}StrEntry; - - -// ƒtƒHƒ“ƒg‚Ì•¶ŽšŠÔŠu‹l‚ß“WŠJ—pƒf[ƒ^ -typedef struct FontPropotion { - u16 *leftp; // Œ»Ý‚̶‘¤ƒtƒHƒ“ƒgƒf[ƒ^‚ւ̃|ƒCƒ“ƒ^ - u16 *rightp; // Œ»Ý‚̉E‘¤ƒtƒHƒ“ƒgƒf[ƒ^‚ւ̃|ƒCƒ“ƒ^ - u16 h_offset; // 16x16ƒhƒbƒg’PˆÊ‚̃Lƒƒƒ‰ƒNƒ^ƒf[ƒ^“à‚ÌŒ»Ý‚̉¡ƒIƒtƒZƒbƒg - u8 pad[2]; - u32 buff16x16[2][16/2]; -}FontPropotion; - -// ƒCƒ“ƒNƒŠƒƒ“ƒg^ƒCƒ“ƒNƒŠƒƒ“ƒg‚È‚µƒtƒ‰ƒOiSetScrData‚ÅŽg—pj -typedef enum IncFlag { - NO_INC, // ƒCƒ“ƒNƒŠƒƒ“ƒg‚È‚µ - INC_1 // ‚PƒCƒ“ƒNƒŠƒƒ“ƒg -}IncFlag; - -// extern data---------------------------- -extern void _binary_f12han_dat(void); -extern void _binary_f12han_dat_end(void); - - -// function's prototype declaration------------- -static void SetScrData(u16 code_top, StrEntry *sEntryp, IncFlag inc_flag); -static u16 MeasureStringCharWidth(const u8 *str); -static void SpreadStringCloser(u8 *str, StrEntry *sEntryp, u16 v_offset); -static void SetFirstFont(u8 **strpp, u16 v_offset, FontPropotion *fontProp); -static u8 * CloseFontChar(u8 **strpp, u16 v_offset, FontPropotion *fontProp); -static u32 CalcCharCodeAddress(u8 **strpp, const FontComponent **font); -static void SpreadFontZen(u16 bit0_color, u16 bit1_color, u8 *fromAdr, u32 *toAdr); -static void InitStrEntryTable( StrEntry **sEntrypp ); -static StrEntry *GetStrEntry( u16 handle ); -static StrEntry **GetStrEntryAddress( u16 handle ); -static int InsertStrEntry(u16 *handle, u16 charNum); -static int InsertStrEntry2(u16 handle, u16 charNum); -static u16 DeleteStrEntry( u16 handle); -static BOOL GetEmptyStrEntry(u32 dataAddr, u16 *handlep); -static u16 SearchStrEntry(u32 dataAddr); -static u8 * HexToDecimalString(const void *hexp, u8 *strp, u16 figure, u16 size); -static u8 * HexToString(const void *hexp, u8 *strp, u16 figure); -static void InitAllocSystemSJIS( TargetScreen target ); -static void *AllocMemoryFromVram( int size ); -static void FreeMemoryToVram( void *p ); - -static u16 DrawStringSJIS_Core(u16 x, u16 y, u16 color, const void *strp, int handleIndex); -static int CalcHandleIndex(u32 dataAddr, int index); - -// global variables----------------------------- - - -// static variables----------------------------- -static int font_init = 0; -static TargetScreen targetScreen = BOTTOM_SCREEN; -static const FontComponent *nowFontHan; -static StrEntry *entryTblS[ STR_ENTRY_MAX_NUM ]; -static StrEntry *entryTblM[ STR_ENTRY_MAX_NUM ]; -static StrEntry **entryTblp; -static u16 *bgBakp; - -// const data----------------------------------- -const u16 tbl_ASCII_to_SJIS[0x100]; -const FontComponent fontTypeTableHan[] = { - { 16, 12, 6, 12, 14*0xbc, (u32)&_binary_f12han_dat, (u32)&_binary_f12han_dat_end}, -}; - - -// functions description------------------------ - -//---------------------------------------------- -// APIŠÖ” -//---------------------------------------------- - -// ƒtƒHƒ“ƒgAPI‚̉Šú‰» -void InitFont( TargetScreen target) -{ - if( font_init & (0x01 << target ) ) { // ƒ^[ƒQƒbƒg‚ª‰Šú‚·‚݂Ȃ烊ƒ^[ƒ“ - return; - } - - InitAllocSystemSJIS( target ); // ƒ^[ƒQƒbƒg‚ÌVRAMƒAƒŠ[ƒi‰Šú‰» - - if( target == TOP_SCREEN ) { // ƒ^[ƒQƒbƒg‚̃Gƒ“ƒgƒŠ‚ð‰Šú‰» - InitStrEntryTable( &entryTblM[0] ); - }else { - InitStrEntryTable( &entryTblS[0] ); - } - - if( font_init == 0 ) { // ‚Ü‚¾‰½‚à‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢‚È‚çAƒXƒNƒŠ[ƒ“‚ð‰ŠúÝ’è‚ÉB - SetTargetScreenSJIS( target ); - } - - SetFont( (FontType)0 ); - font_init |= 0x01 << target; -} - - -// •\ަƒtƒHƒ“ƒg‚ÌØ‚è‘Ö‚¦ -void SetFont(FontType font) -{ - if(font >= FONT_TYPE_MAX) { - font = (FontType)0; - } - nowFontHan = &fontTypeTableHan[font]; -} - - -// •\ަƒ^[ƒQƒbƒgƒXƒNƒŠ[ƒ“‚ÌØ‚è‘Ö‚¦ -void SetTargetScreenSJIS( TargetScreen target ) -{ - targetScreen = target; - if( target == TOP_SCREEN ) { - entryTblp = &entryTblM[0]; - bgBakp = bgBakM; - }else { - entryTblp = &entryTblS[0]; - bgBakp = bgBakS; - } -} - - -// Žw’肳‚ꂽSJIS•¶Žš—ñ‚ð•\ަ‚·‚éBiƒnƒ“ƒhƒ‹Žw’è‚È‚µ‚Ńnƒ“ƒhƒ‹ŽZo‰ÁŽZ’l•t‚«j -static u16 DrawStringSJIS_Core(u16 x, u16 y, u16 color, const void *strp, int handleIndex) -{ - StrEntry *sEntryp; - int newEntry; - u16 handle; - u16 charNum; - u16 code; - u16 v_offset = 1; // ¦v_offset‚͈ø”‚É‚·‚邱‚Æ‚à‚Å‚«‚éB - - InitFont( targetScreen ); - - // ‹ó•¶Žš—ñƒ`ƒFƒbƒN - if(*(u8 *)strp == 0x00) { - return 0; - } - - // •¶Žš—ñ•\ަ‚É•K—v‚ȃLƒƒƒ‰ƒNƒ^”‚Ì‘ª’è - charNum = MeasureStringCharWidth((const u8 *)strp); - if(charNum > DRAW_CHAR_NUM_LIMIT) { // •K—vƒLƒƒƒ‰ƒNƒ^”‚ª‚T‚P‚QˆÈ“à‚Ȃ烃‚ƒŠŠm•ÛB - OS_Printf("SJIS-draw: str length max over.\n"); - return DSJIS_ERR_STR_LENGTH_TOO_LONG; - } - - // ƒnƒ“ƒhƒ‹Žæ“¾ - if( !GetEmptyStrEntry( (u32)handleIndex, &handle ) ) { - OS_Printf("SJIS-draw: error StrEntry get failed.\n"); - return DSJIS_ERR_ENTRY_GET_FAILED; - } - - // •¶Žš—ñƒGƒ“ƒgƒŠ‚Ì“o˜^ - newEntry = InsertStrEntry2( handle, charNum ); - if(newEntry < 0) { - OS_Printf("SJIS-draw: error StrEntry alloc failed.\n"); - return DSJIS_ERR_ENTRY_ALLOC_FAILED; - } - sEntryp = GetStrEntry(handle); // ƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^‚ðŠi”[ - sEntryp->dataAddr = (u32)handleIndex; - - // VRAMƒLƒƒƒ‰ƒƒ‚ƒŠ‚Ì“®“IŠm•Û - if(newEntry > 0) { - sEntryp->charMemp = AllocMemoryFromVram( charNum * NITRO_CHAR_SIZE * 2 ); - // ¦c‚à‚QƒLƒƒƒ‰•ª•K—v‚Ȃ̂ÅANITRO_CHAR_SIZE*2 -// OS_Printf("alloc charMemp = %x\n",sEntryp->charMemp); - if( sEntryp->charMemp == NULL ) { // ƒƒ‚ƒŠŠm•Û‚ÉŽ¸”s‚µ‚½‚çAƒGƒ“ƒgƒŠ‚̃ƒ‚ƒŠ‚ð‰ð•ú‚µ‚ÄƒŠƒ^[ƒ“ - OS_Printf("VRAM char memory alloc failed.\n"); - OS_Free(sEntryp); - return DSJIS_ERR_CHAR_ALLOC_FAILED; - } - } - - // •¶Žš—ñƒGƒ“ƒgƒŠ‚Ì“o˜^ - sEntryp->font = nowFontHan; // Œ»Ý‚̃tƒHƒ“ƒgƒ^ƒCƒv‚ðŠi”[ - sEntryp->drawPos = (u16)(x + y * 0x20); // •\Ž¦êŠ‚ðŠi”[B - sEntryp->charNum = charNum; - - // c”z’uˆÊ’uŽw’èv_offset‚Ì‹¸³ - if(v_offset) { - if(((nowFontHan->tate_dot & 0x07)== 0)) { // c8dot or 16dot‚ÌꇂÍv_offset‚Í0 - v_offset = 0; - }else { - if( (16 - nowFontHan->tate_dot) < v_offset ) { // ‚»‚êˆÈŠO‚ÌŽž‚ÍAc16dot‚ÉŽû‚Ü‚é”͈͂ɋ¸³ - v_offset = (u16)(16 - nowFontHan->tate_dot); - } - } - } - // ‘ÎÛ•¶Žš—ñ‚̃tƒHƒ“ƒgƒf[ƒ^‚ðƒrƒbƒg“WŠJ•ƒLƒƒƒ‰ƒf[ƒ^‹l‚ß‚ð‚¨‚±‚È‚Á‚ÄAŠm•Û‚µ‚½VRAMƒLƒƒƒ‰ƒƒ‚ƒŠ‚É“]‘— - SpreadStringCloser((u8 *)strp, sEntryp, v_offset); - - // ƒXƒNƒŠ[ƒ“ƒf[ƒ^‚É¡‰ñ‚Ì•¶Žš—ñ‚̃Lƒƒƒ‰ƒiƒ“ƒo[‚ð‘‚«ž‚Ý - code = (u16)( (((u32)sEntryp->charMemp - (u32)G2_GetBG1CharPtr()) / NITRO_CHAR_SIZE) | color ); - SetScrData(code, sEntryp, INC_1); - - return handle; -} - -// ƒnƒ“ƒhƒ‹ƒCƒ“ƒfƒbƒNƒX‚ÌŽZo -static int CalcHandleIndex(u32 dataAddr, int index) -{ - if(index) { - index += HANDLE_INDEX + (int)dataAddr; // ƒCƒ“ƒfƒbƒNƒX‚ð‰ÁŽZ‚µ‚½ê‡‚ÍA‘¼‚̃f[ƒ^‚̃AƒhƒŒƒX‚Æ”í‚ç‚È‚¢‚悤ANITROƒƒ‚ƒŠƒ}ƒbƒvŠO‚É‚È‚é‚æ‚¤ƒIƒtƒZƒbƒg‚ð‰ÁŽZB - }else { - index = (int)dataAddr; - } - return index; -} - - -// Žw’肳‚ꂽSJIS•¶Žš—ñ‚ð•\ަ‚·‚éBiƒnƒ“ƒhƒ‹Žw’è‚È‚µj -u16 DrawStringSJIS(u16 x, u16 y, u16 color, const void *strp) -{ - return DrawStringSJIS_Core( x, y, color, strp, (int)strp); // index = strp ‚ÅCore‚ðƒR[ƒ‹ -} - - -// Žw’肳‚ꂽ’l‚ð16i”‚Å•\ަ‚·‚éBiƒnƒ“ƒhƒ‹Žw’è‚È‚µ”Åj -u16 DrawHexSJIS(u16 x, u16 y, u16 color, const void *hexp, u16 figure) -{ - u8 buff[16]; - u8 *strp = HexToString(hexp, buff, figure); - return DrawStringSJIS_Core(x, y, color, strp, (int)hexp); -} - - -// Žw’肳‚ꂽ’l‚ð10i”‚Å•\ަ‚·‚éBiƒnƒ“ƒhƒ‹Žw’è‚È‚µ”Åj -u16 DrawDecimalSJIS(u16 x, u16 y, u16 color, const void *hexp, u16 figure, u16 size) -{ - u8 buff[16]; - u8 *strp = HexToDecimalString(hexp, buff, figure, size); - return DrawStringSJIS_Core(x, y, color, strp, (int)hexp); -} - - -// Žw’肳‚ꂽSJIS•¶Žš—ñ‚ð•\ަ‚·‚éBiƒnƒ“ƒhƒ‹Žw’è‚È‚µ‚Ńnƒ“ƒhƒ‹ŽZo‰ÁŽZ’l•t‚«j -u16 DrawStringSJISEx(u16 x, u16 y, u16 color, const void *strp, int index) -{ - index = CalcHandleIndex( (u32)strp, index); - return DrawStringSJIS_Core( x, y, color, strp, index); // index ‚ð‰ÁŽZ‚µ‚ÄCore‚ðƒR[ƒ‹ -} - - -// Žw’肳‚ꂽ’l‚ð16i”‚Å•\ަ‚·‚éBiƒnƒ“ƒhƒ‹Žw’è‚È‚µ”Åj -u16 DrawHexSJISEx(u16 x, u16 y, u16 color, const void *hexp, u16 figure, int index) -{ - u8 buff[16]; - u8 *strp = HexToString(hexp, buff, figure); - index = CalcHandleIndex( (u32)hexp, index); - return DrawStringSJIS_Core(x, y, color, strp, index); -} - - -// Žw’肳‚ꂽ’l‚ð10i”‚Å•\ަ‚·‚éBiƒnƒ“ƒhƒ‹Žw’è‚È‚µ”Åj -u16 DrawDecimalSJISEx(u16 x, u16 y, u16 color, const void *hexp, u16 figure, u16 size, int index) -{ - u8 buff[16]; - u8 *strp = HexToDecimalString(hexp, buff, figure, size); - index = CalcHandleIndex( (u32)hexp, index); - return DrawStringSJIS_Core(x, y, color, strp, index); -} - - -// Žw’èƒR[ƒh‚©‚çŽn‚Ü‚éƒXƒNƒŠ[ƒ“ƒf[ƒ^‚̃Zƒbƒg -static void SetScrData(u16 code_top, StrEntry *sEntryp, IncFlag inc_flag) -{ - u16 i; - u16 lastPos; - u16 pos_l; - u16 *buffp_l; - u16 *buffp_h; - - lastPos = 0x800 >> 1; // ƒoƒbƒtƒ@ÅIˆÊ’u == BGƒXƒNƒŠ[ƒ“ƒTƒCƒY(0x800) - pos_l = (u16)(sEntryp->drawPos + 0x0020); // ‰º8dotƒLƒƒƒ‰ƒNƒ^•\ަˆÊ’u - buffp_h = bgBakp + sEntryp->drawPos; - buffp_l = buffp_h + 0x0020; - - for(i = 0; i < sEntryp->charNum; i++) { - *buffp_h++ = code_top; - code_top += inc_flag; - if(nowFontHan->need_tate_dot == 16) { // •K—vcƒhƒbƒg‚ª16‚Ìê‡i8ƒhƒbƒg•¶ŽšˆÈŠO‘S•”jA‚à‚¤‚PƒLƒƒƒ‰ƒZƒbƒg - *buffp_l++ = code_top; - } - code_top += inc_flag; - pos_l++; - if(pos_l == lastPos) { - break; - } - } -} - - -// Žw’肳‚ꂽƒnƒ“ƒhƒ‹‚ÌSJIS•¶Žš—ñ‚ðƒNƒŠƒA‚·‚éB -void ClearStringSJIS_handle(u16 handle) -{ - StrEntry *sEntryp; - - InitFont( targetScreen ); - - sEntryp = GetStrEntry(handle); - if(sEntryp == NULL) { - return; - } - - // ƒXƒNƒŠ[ƒ“ƒf[ƒ^‚̃NƒŠƒA - SetScrData(0x0000, sEntryp, NO_INC); - - // ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‚̃NƒŠƒA -// MI_CpuClearFast(sEntryp->charMemp, sEntryp->charNum * NITRO_CHAR_SIZE * 2); - // “®“I‚ÉŠm•Û‚µ‚½VRAMƒLƒƒƒ‰ƒf[ƒ^‚̃NƒŠƒA - FreeMemoryToVram( sEntryp->charMemp ); // ‚±‚̃Gƒ“ƒgƒŠ‚ªŠm•Û‚µ‚Ä‚¢‚½ƒLƒƒƒ‰ƒNƒ^ƒƒ‚ƒŠ‚̉ð•úB - (void)DeleteStrEntry(handle); -} - - -// Žw’肳‚ꂽƒf[ƒ^ƒAƒhƒŒƒX‚Å•\ަ‚µ‚Ä‚¢‚éSJIS•¶Žš—ñ‚ðƒNƒŠƒA‚·‚éB -void ClearStringSJIS(void *datap) -{ - u16 handle = SearchStrEntry( (u32)datap ); - - if( handle > STR_ENTRY_MAX_NUM ) { - return; - } - ClearStringSJIS_handle(handle); -} - - -// Žw’肳‚ꂽƒf[ƒ^ƒAƒhƒŒƒX‚Å•\ަ‚µ‚Ä‚¢‚éSJIS•¶Žš—ñ‚ðƒNƒŠƒA‚·‚éBExŒn‚Å•`‰æ‚µ‚½‚à‚Ì‚ðÁ‚·ê‡B -void ClearStringSJISEx(void *datap, int handleIndex) -{ - u16 handle; - - handleIndex = CalcHandleIndex( (u32)datap, handleIndex); - - handle = SearchStrEntry( (u32)handleIndex ); - - if( handle > STR_ENTRY_MAX_NUM ) { - return; - } - ClearStringSJIS_handle(handle); -} - - - -// Œ»Ý“o˜^‚³‚ê‚Ä‚¢‚é‘S‚Ä‚ÌSJIS•¶Žš—ñ‚ðƒNƒŠƒA‚·‚éi“®“Iƒƒ‚ƒŠ‚à‘S‚ĉð•új -void ClearAllStringSJIS(void) -{ - u16 handle; - - InitFont( targetScreen ); - - for(handle = 0; handle < STR_ENTRY_MAX_NUM; handle++) { - if( GetStrEntry( handle ) != NULL) { - ClearStringSJIS_handle(handle); - } - } -} - - -// Žw’肳‚ꂽƒnƒ“ƒhƒ‹‚Å•\ަ‚³‚ê‚Ä‚¢‚é•¶Žš—ñ‚̃Jƒ‰[‚ð•ÏXB -u16 ChangeColorSJIS(u16 handle, u16 new_color) -{ - int i; - u16 *buffp_l; - u16 *buffp_h; - StrEntry *sEntryp = GetStrEntry( handle ); // ƒGƒ“ƒgƒŠ‚ւ̃|ƒCƒ“ƒ^‚ðŠi”[ - - if((handle > STR_ENTRY_MAX_NUM) || (sEntryp == NULL)) { - return 0; - } - - buffp_h = bgBakp + sEntryp->drawPos; - buffp_l = buffp_h + 0x20; - for(i = 0; i < sEntryp->charNum; i++) { - *buffp_h = (u16)((*buffp_h & 0x0fff) | new_color); - *buffp_l = (u16)((*buffp_l & 0x0fff) | new_color); - buffp_h++; - buffp_l++; - } - return 1; -} - -//---------------------------------------------- -// •¶Žš—ñƒGƒ“ƒgƒŠƒe[ƒuƒ‹‚̈— -//---------------------------------------------- - -// ƒGƒ“ƒgƒŠƒe[ƒuƒ‹‚̉Šú‰» -static void InitStrEntryTable( StrEntry **sEntrypp ) -{ - u16 i; - for(i = 0; i < STR_ENTRY_MAX_NUM; i++) { - *sEntrypp++ = NULL; - } -} - - -// Žw’肳‚ꂽƒnƒ“ƒhƒ‹‚ÌStrEntryƒ|ƒCƒ“ƒ^‚ð•Ô‚· -static StrEntry * GetStrEntry( u16 handle ) -{ - if ( handle >= STR_ENTRY_MAX_NUM ) { - return NULL; - }else { -// return entryTblS[ handle ]; - return entryTblp[ handle ]; - } -} - - -// Žw’肳‚ꂽƒnƒ“ƒhƒ‹‚ÌStrEntryƒ|ƒCƒ“ƒ^‚ւ̃|ƒCƒ“ƒ^‚ð•Ô‚· -static StrEntry ** GetStrEntryAddress( u16 handle ) -{ - if ( handle >= STR_ENTRY_MAX_NUM ) { - return NULL; - }else { -// return &entryTblS[ handle ]; - return &entryTblp[ handle ]; - } -} - - -// StrEntry‚Ì“o˜^ -static int InsertStrEntry(u16 *handle, u16 charNum) -{ - StrEntry **sEntrypp = GetStrEntryAddress( *handle ); - - if(*handle >= STR_ENTRY_MAX_NUM) { - return -1; - }else if(*handle > 0) { - if( *sEntrypp != NULL) { // Žw’èƒnƒ“ƒhƒ‹‚ÉŠù‚ɃGƒ“ƒgƒŠ‚ª‚ ‚éꇂÍAŠm•Ûƒƒ‚ƒŠ—Ê‚ðV‹Kƒƒ‚ƒŠ—ʂƔä‚ׂÄA - if( charNum > (*sEntrypp)->charNum ) { // ÄŠm•Û‚ª•K—v‚ÈꇂÍAƒƒ‚ƒŠ‰ð•ú¨ÄŠm•Û‚ðs‚¤B -// OS_Printf("SJIS: same entry free to charMemory.\n"); -// OS_Printf("free charMemp = %x\n",(*sEntrypp)->charMemp); - SetScrData( 0x0000, *sEntrypp, NO_INC ); // ƒXƒNƒŠ[ƒ“ƒf[ƒ^‚̃NƒŠƒA - FreeMemoryToVram( (*sEntrypp)->charMemp ); // ‚±‚̃Gƒ“ƒgƒŠ‚ªŠm•Û‚µ‚Ä‚¢‚½ƒLƒƒƒ‰ƒNƒ^ƒƒ‚ƒŠ‚̉ð•úB - return 1; - }else { - if( charNum < (*sEntrypp)->charNum ) { - SetScrData( 0x0000, *sEntrypp, NO_INC ); // ƒXƒNƒŠ[ƒ“ƒf[ƒ^‚̃NƒŠƒA - } - return 0; // ‚±‚̃Gƒ“ƒgƒŠ‚Å‚ÍAƒLƒƒƒ‰ƒNƒ^ƒƒ‚ƒŠ‚ðŒp‘±‚µ‚ÄŽg—p - } - } - } - - // *handle == 0 // Žw’èƒnƒ“ƒhƒ‹‚ª‚O‚ÌŽž‚ÍV‚µ‚¢ƒnƒ“ƒhƒ‹‚ðŠm•Û - *handle = 0; - sEntrypp = GetStrEntryAddress( *handle ); - - for( ; *handle < STR_ENTRY_MAX_NUM; (*handle)++ ) { - if( *sEntrypp++ == NULL) { // NULLƒGƒ“ƒgƒŠ‚ð’T‚· - break; - } - } - if(*handle == STR_ENTRY_MAX_NUM) { - return -1; // NULLƒGƒ“ƒgƒŠ‚ªŒ©‚‚©‚ç‚È‚©‚Á‚½‚çAƒGƒ‰[I—¹B - } - - // StrEntry‚̃ƒ‚ƒŠŠm•Û - *sEntrypp = (StrEntry *)OS_Alloc( sizeof(StrEntry) ); - if( *sEntrypp == NULL) { - OS_Printf("StrEntry allocate failed.\n"); - return -1; - }else { - return 1; - } -} - - -// ƒGƒ“ƒgƒŠ‘}“üˆ—‚Q -static int InsertStrEntry2(u16 handle, u16 charNum) -{ - StrEntry **sEntrypp = GetStrEntryAddress( handle ); - - if( *sEntrypp != NULL) { // Žw’èƒnƒ“ƒhƒ‹‚ÉŠù‚ɃGƒ“ƒgƒŠ‚ª‚ ‚éꇂÍAŠm•Ûƒƒ‚ƒŠ—Ê‚ðV‹Kƒƒ‚ƒŠ—ʂƔä‚ׂÄA - if( charNum > (*sEntrypp)->charNum ) { // ÄŠm•Û‚ª•K—v‚ÈꇂÍAƒƒ‚ƒŠ‰ð•ú¨ÄŠm•Û‚ðs‚¤B -// OS_Printf("SJIS: same entry free to charMemory.\n"); -// OS_Printf("free charMemp = %x\n",(*sEntrypp)->charMemp); - SetScrData( 0x0000, *sEntrypp, NO_INC ); // ƒXƒNƒŠ[ƒ“ƒf[ƒ^‚̃NƒŠƒA - FreeMemoryToVram( (*sEntrypp)->charMemp ); // ‚±‚̃Gƒ“ƒgƒŠ‚ªŠm•Û‚µ‚Ä‚¢‚½ƒLƒƒƒ‰ƒNƒ^ƒƒ‚ƒŠ‚̉ð•úB - return 1; - }else { - if( charNum < (*sEntrypp)->charNum ) { - SetScrData( 0x0000, *sEntrypp, NO_INC ); // ƒXƒNƒŠ[ƒ“ƒf[ƒ^‚̃NƒŠƒA - } - return 0; // ‚±‚̃Gƒ“ƒgƒŠ‚Å‚ÍAƒLƒƒƒ‰ƒNƒ^ƒƒ‚ƒŠ‚ðŒp‘±‚µ‚ÄŽg—p - } - } - - // StrEntry‚̃ƒ‚ƒŠ‚ðV‹KŠm•Û - *sEntrypp = (StrEntry *)OS_Alloc( sizeof(StrEntry) ); - if( *sEntrypp == NULL) { - OS_Printf("StrEntry allocate failed.\n"); - return -1; - }else { - return 1; - } -} - - -// Žw’肳‚ꂽƒnƒ“ƒhƒ‹‚ÌStrEntry—v‘f‚ðƒGƒ“ƒgƒŠƒe[ƒuƒ‹‚©‚çíœ -static u16 DeleteStrEntry(u16 handle) -{ - StrEntry **sEntrypp = GetStrEntryAddress( handle ); - - if( *sEntrypp == NULL) { - return NULL; - } - - OS_Free( *sEntrypp ); - *sEntrypp = NULL; - - return handle; -} - - -// ‹ó‚«ƒGƒ“ƒgƒŠ‚ð’T‚·i‚ ‚ñ‚ÜŒø—¦‚æ‚­‚È‚¢j -static BOOL GetEmptyStrEntry(u32 dataAddr, u16 *handlep) -{ - int i = SEARCH_ENTRY_MAX_NUM; // ˆ—‚ªd‚­‚È‚é‚Ì‚ð–h‚®‚½‚ßAƒT[ƒ`‰ñ”‚ɧŒÀ‚ð‰Á‚¦‚éB - u16 handle = (u16)( (dataAddr >> 2) & (STR_ENTRY_MAX_NUM - 1) ); - - while(i--) { - StrEntry *sEntryp = GetStrEntry( handle ); - if( sEntryp == NULL ) { - *handlep = handle; - return TRUE; // V‹Kƒnƒ“ƒhƒ‹ˆÊ’uŠm•Û - }else { - if( sEntryp->dataAddr == dataAddr ) { - *handlep = handle; - return TRUE; // Šù‘¶ƒnƒ“ƒhƒ‹ˆÊ’u”­Œ© - } - handle = (u16)( (handle + 1) & (STR_ENTRY_MAX_NUM - 1) ); - } - } - return FALSE; -} - - -// Žw’èƒf[ƒ^‚̃nƒ“ƒhƒ‹‚ð’T‚·i‚ ‚ñ‚ÜŒø—¦‚æ‚­‚È‚¢j -static u16 SearchStrEntry(u32 dataAddr) -{ - int i = SEARCH_ENTRY_MAX_NUM; // ˆ—‚ªd‚­‚È‚é‚Ì‚ð–h‚®‚½‚ßAƒT[ƒ`‰ñ”‚ɧŒÀ‚ð‰Á‚¦‚éB - u16 handle = (u16)( (dataAddr >> 2) & (STR_ENTRY_MAX_NUM - 1) ); - - while(i--) { - StrEntry *sEntryp = GetStrEntry( handle ); - if(sEntryp != NULL) { - if( sEntryp->dataAddr == dataAddr ) { - return handle; // Šù‘¶ƒnƒ“ƒhƒ‹ˆÊ’u”­Œ© - } - } - handle = (u16)( (handle + 1) & (STR_ENTRY_MAX_NUM - 1) ); - } - return 0xffff; -} - - -//---------------------------------------------- -// ƒLƒƒƒ‰ƒNƒ^VRAM‚Ì“®“IŠm•Ûˆ— -//---------------------------------------------- - -// •¶Žš—ñ•\ަ‚É•K—v‚ȃLƒƒƒ‰ƒNƒ^”‚Ì‘ª’è -static u16 MeasureStringCharWidth(const u8 *str) -{ - u16 totalWidth = 0; // •¶Žš—ñ‚̃g[ƒ^ƒ‹‚̉¡ƒhƒbƒgƒTƒCƒY - u16 charNum = 0; // •¶Žš—ñ•\ަ‚É•K—v‚ȃLƒƒƒ‰ƒNƒ^” - - // •¶Žš—ñ‚̃g[ƒ^ƒ‹‚̉¡ƒhƒbƒgƒTƒCƒY‚ðŽZo - while(*str) { // Še•¶Žš‚Í@SJIS@‚©@ASCII@‚©H - if( ((*str >= SJIS_HIGHER_CODE1_MIN) && (*str <= SJIS_HIGHER_CODE1_MAX)) - || ((*str >= SJIS_HIGHER_CODE2_MIN) && (*str <= SJIS_HIGHER_CODE2_MAX)) ) { - str += 2; // SJIS•¶Žš - totalWidth += nowFontHan->yoko_dot; - }else { - str++; // ASCII•¶Žš - totalWidth += nowFontHan->yoko_dot; - } - } - // ƒg[ƒ^ƒ‹‰¡ƒhƒbƒg”‚©‚çA•¶Žš—ñ‚Ì•\ަ‚É•K—v‚ȃLƒƒƒ‰ƒNƒ^”‚ðŽZo - charNum = (u16)(totalWidth >> 3); - if(totalWidth & 0x0007) { - charNum = (u16)(charNum + 1); - } - - return charNum; -} - - -//---------------------------------------------- -// ƒtƒHƒ“ƒgƒf[ƒ^¨NITROƒLƒƒƒ‰ƒf[ƒ^‚ւ̕ϊ·ŠÖ”ŒQ -//---------------------------------------------- - -// Žw’肳‚ꂽ•¶Žš—ñ‚ðŽw’胃‚ƒŠƒuƒƒbƒN‚É“WŠJ‚µ‚È‚ª‚ç“]‘—iŽg—pƒtƒHƒ“ƒg‚É‚æ‚Á‚Ä•¶Žš‹l‚ß‚às‚¤j -static void SpreadStringCloser(u8 *strp, StrEntry *sEntryp, u16 v_offset) -{ - u32 charBuff[(NITRO_CHAR_SIZE * 4) / 4]; // 16x16ƒLƒƒƒ‰‚Q•¶Žš‚Å‚SƒLƒƒƒ‰•ª‚̃oƒbƒtƒ@Bi‚Q•¶Žš“WŠJ‚µ‚ÄA•¶Žš‹l‚ß‚ðs‚¤‚½‚ßj - u8 *charMemp; - u8 *fromAdr; - u16 i; - u16 charNum; - FontPropotion fontPro; - - // Spread target string char data to WRAM pool - charNum = sEntryp->charNum; - charMemp = (u8 *)sEntryp->charMemp; - fontPro.h_offset = 0; - fontPro.leftp = (u16 *)0x0; - fontPro.rightp = (u16 *)0x0; - - while(1) { - // —×Ú‚·‚é2‚‚Ì1bitƒtƒHƒ“ƒgƒf[ƒ^‚ð16x16ƒhƒbƒgƒLƒƒƒ‰ƒNƒ^”z—ñ‚Ƀ[ƒh - if(fontPro.h_offset == 0) { - SetFirstFont(&strp, v_offset, &fontPro); // •\ަ•¶Žš—ñ‚ð16x16ƒhƒbƒg’PˆÊ‚É‹æØ‚Á‚½Žž‚Éæ“ª‚É‚­‚éƒLƒƒƒ‰ƒNƒ^‚ðƒ[ƒh - } - fromAdr = CloseFontChar(&strp, v_offset, &fontPro); // ã‹LƒLƒƒƒ‰ƒNƒ^‚É—×Ú‚·‚éƒLƒƒƒ‰ƒNƒ^‚ðƒ[ƒh - - // ƒ[ƒh‚µ‚½1bitƒtƒHƒ“ƒgƒf[ƒ^‚ð4bitNITROƒLƒƒƒ‰ƒf[ƒ^‚É“WŠJ - SpreadFontZen(3, 1, fromAdr, (u32 *)charBuff); // ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‚ð4bit‚É“WŠJB - - // “WŠJ‚µ‚½ƒLƒƒƒ‰ƒf[ƒ^‚ðVRAM‚ɃRƒs[ - fromAdr = (u8 *)charBuff; - for(i = 0; i < 2; i++) { // ¶¬‚µ‚½16x16ƒhƒbƒgi‚SƒLƒƒƒ‰j•ª‚̃f[ƒ^‚ð“]‘— - MI_CpuCopyFast(fromAdr, charMemp, (NITRO_CHAR_SIZE * 2)); - fromAdr += NITRO_CHAR_SIZE * 2; - charMemp+= NITRO_CHAR_SIZE * 2; - if(--charNum == 0) { - return; - } - } - } -} - - -// ʼn‚̃tƒHƒ“ƒgƒf[ƒ^‚ðƒoƒbƒtƒ@‚ɃZƒbƒg -static void SetFirstFont(u8 **strpp, u16 v_offset, FontPropotion *fontProp) -{ - u8 tate; - u8 *fontAdr; - u16 *firstp; - const FontComponent *fontComp; - - if(**strpp == 0x00) { - return; - } - - fontAdr = (u8 *)CalcCharCodeAddress(strpp, &fontComp); // ¡‰ñ‚Ì•¶Žš‚̃R[ƒh‚©‚çAƒtƒHƒ“ƒgƒf[ƒ^Ši”[ƒAƒhƒŒƒX‚ðŽZoB - - MI_CpuClearFast(fontProp->buff16x16[0], 64); // 16x16ƒhƒbƒg’PˆÊ‚̈ꎞ“WŠJƒoƒbƒtƒ@‚̃NƒŠƒA - - firstp = (u16 *)fontProp->buff16x16[0] + v_offset; - for(tate = 0; tate < fontComp->tate_dot - 1; tate++) { - *firstp = (u16)(*fontAdr++ << 8); - if(fontComp->yoko_dot > 8) { - *firstp |= *fontAdr++; - } - firstp++; - } - fontProp->h_offset = fontComp->yoko_dot; - fontProp->leftp = (u16 *)fontProp->buff16x16[0]; - fontProp->rightp = (u16 *)fontProp->buff16x16[1]; -} - - -// —×Ú‚·‚éƒtƒHƒ“ƒgƒf[ƒ^‚ðƒoƒbƒtƒ@‚ɃZƒbƒg -static u8 * CloseFontChar(u8 **strpp, u16 v_offset, FontPropotion *fontProp) -{ - u8 tate; - u8 *fontAdr; - u16 *temp; - u16 *leftp_tmp; - u16 *rightp_tmp; - const FontComponent *fontComp; - - while(fontProp->h_offset < 16) { - if(**strpp == 0x00) { - break; - } - - fontAdr = (u8 *)CalcCharCodeAddress(strpp, &fontComp); // ¡‰ñ‚Ì•¶Žš‚̃R[ƒh‚©‚çAƒtƒHƒ“ƒgƒf[ƒ^Ši”[ƒAƒhƒŒƒX‚ðŽZoB - - leftp_tmp = fontProp->leftp + v_offset; // ƒtƒHƒ“ƒgƒf[ƒ^‚ð‰¡ƒhƒbƒg‹l‚ß‚µ‚È‚ª‚çƒ[ƒh - rightp_tmp = fontProp->rightp + v_offset; - for(tate=0; tate < fontComp->tate_dot - 1; tate++) { - *rightp_tmp = (u16)(*fontAdr++ << 8); - if(fontComp->yoko_dot > 8) { - *rightp_tmp |= *fontAdr++; - } - - *leftp_tmp |= *rightp_tmp >> fontProp->h_offset; - *rightp_tmp <<= 16 - fontProp->h_offset; - leftp_tmp++; - rightp_tmp++; - } - fontProp->h_offset += fontComp->yoko_dot; - } - fontProp->h_offset -= 16; - temp = fontProp->leftp; - fontProp->leftp = fontProp->rightp; - fontProp->rightp = temp; - return (u8 *)temp; -} - - -// •¶ŽšƒR[ƒh‚ɑΉž‚µ‚½ƒtƒHƒ“ƒgƒf[ƒ^Ši”[ƒAƒhƒŒƒX‚ðŽZo‚·‚éB -static u32 CalcCharCodeAddress(u8 **strpp, const FontComponent **font) -{ - u8 higher_code; - u8 lower_code; - u16 sjis_code; - u32 adr; - - // ‘ÎÛ•¶Žš‚ª@SJIS or ASCII@‚©‚ð”»’è - higher_code = *(*strpp)++; - if( ((higher_code >= SJIS_HIGHER_CODE1_MIN) && (higher_code <= SJIS_HIGHER_CODE1_MAX)) - ||((higher_code >= SJIS_HIGHER_CODE2_MIN) && (higher_code <= SJIS_HIGHER_CODE2_MAX)) ) { // SJIS‚©H - lower_code = *(*strpp)++; - *font = nowFontHan; - }else { // ASCII - sjis_code = tbl_ASCII_to_SJIS[higher_code]; - higher_code = (u8)(sjis_code >> 8); - lower_code = (u8)(sjis_code & 0x00ff); - *font = nowFontHan; - } - - // •¶ŽšƒR[ƒh‚©‚çƒtƒHƒ“ƒgƒf[ƒ^ƒAƒhƒŒƒX‚ðŽZo - if(higher_code <= SJIS_HIGHER_CODE1_MIN + 3) { - higher_code -= 0x81; - }else if(higher_code <= SJIS_HIGHER_CODE1_MIN + 6) { - higher_code -= 0x83; - }else if(higher_code <= SJIS_HIGHER_CODE1_MAX) { - higher_code -= 0x84; - }else if(higher_code >= SJIS_HIGHER_CODE2_MIN) { - higher_code -= 0xc4; - } - - if(lower_code < 0x80) { - lower_code -= 0x40; - }else { - lower_code -= 0x41; - } - - adr = (*font)->start_adr - +((*font)->org_row_size) * higher_code - +((*font)->org_char_size+2) * lower_code + 2; - - return adr; -} - - -// Žw’èƒoƒbƒtƒ@‚Ì1bitƒtƒHƒ“ƒgƒf[ƒ^‚ð4bitNITROƒLƒƒƒ‰ƒf[ƒ^‚É“WŠJB -static void SpreadFontZen(u16 bit0_color, u16 bit1_color, u8 *fromAdr, u32 *toAdr) -{ - int i; - u8 tate; - u8 yoko; - u8 rd_data; - u32 wr_data; - u32 b0c; - u32 b1c; - u32 *toAdr_left; - u32 *toAdr_right; - - toAdr_left = toAdr; - toAdr_right = toAdr + 16; // toAdr + (16 * 4byte) - - for(tate = 0; tate < nowFontHan->need_tate_dot; tate++) { // ƒLƒƒƒ‰ƒNƒ^‚Ìcƒhƒbƒg”‚¾‚¯“WŠJ - // ¶‰E‚»‚ꂼ‚ê‚Ì8dotƒLƒƒƒ‰‚ð“WŠJ - for(yoko = 0; yoko < 2; yoko++) { - wr_data = 0x00000000; // ƒ‰ƒCƒgƒf[ƒ^‰Šú‰» - - if(tate < nowFontHan->tate_dot) { - rd_data = *fromAdr++; // ¶‰E8dotƒLƒƒƒ‰‚̓ǂÝo‚µ - b0c = (u32)bit0_color; // bit0 ‚̃Jƒ‰[ - b1c = (u32)bit1_color; // bit1 ‚̃Jƒ‰[ - - for(i = 0; i < 8; i++) { // 8dot•ª‚ÌŠe1bit‚Ì”»’è - if(rd_data & 0x80) { - wr_data |= b1c; // "1"‚ðƒJƒ‰[‚P‚Ö - }else { - wr_data |= b0c; // "0"‚ðƒJƒ‰[‚O‚Ö - } - rd_data <<= 1; - b0c <<= 4; - b1c <<= 4; - } - } - - if(yoko==0) { - *toAdr_right++ = wr_data; // 32bit‘‚«‚±‚Ý - }else { - *toAdr_left++ = wr_data; - } - } - } -} - - -//---------------------------------------------- -// MALLOCƒVƒXƒeƒ€‚̉Šú‰» -//---------------------------------------------- - -// VRAMã‚Ƀq[ƒv‚ðì¬BiƒAƒŠ[ƒi‚ÉVRAM‚͂Ȃ¢‚Ì‚ÅAWRAM_MAIN, WRAM_SUB‚̃AƒŠ[ƒi‚Å‘ã—pj -static void InitAllocSystemSJIS( TargetScreen target ) -{ - void* tempLo; - OSHeapHandle hh; - - // VRAMã‚Ƀq[ƒv‚ðì¬ - - if( target == TOP_SCREEN ) { - // ƒƒCƒ“LCD - OS_SetArenaLo( OS_ARENA_WRAM_MAIN, (void *)VRAM_M_ARENA_LO ); - OS_SetArenaHi( OS_ARENA_WRAM_MAIN, (void *)VRAM_M_ARENA_HI ); - tempLo = OS_InitAlloc( OS_ARENA_WRAM_MAIN, OS_GetWramMainArenaLo(), OS_GetWramMainArenaHi(), 1 ); - OS_SetArenaLo( OS_ARENA_WRAM_MAIN, tempLo ); - - hh = OS_CreateHeap( OS_ARENA_WRAM_MAIN, OS_GetWramMainArenaLo(), OS_GetWramMainArenaHi() ); - if(hh < 0) OS_Panic( "ARM9-MAIN LCD: Fail to create heap...\n" ); - OS_Printf( " arena lo = %x\n", OS_GetWramMainArenaLo() ); - OS_Printf( "WRAM arena hi = %x\n", OS_GetWramMainArenaHi() ); - hh = OS_SetCurrentHeap( OS_ARENA_WRAM_MAIN, hh ); - }else { // BOTTOM_SCREEN - // ƒTƒuLCD - OS_SetArenaLo( OS_ARENA_WRAM_SUB, (void *)VRAM_S_ARENA_LO ); - OS_SetArenaHi( OS_ARENA_WRAM_SUB, (void *)VRAM_S_ARENA_HI ); - tempLo = OS_InitAlloc( OS_ARENA_WRAM_SUB, OS_GetWramSubArenaLo(), OS_GetWramSubArenaHi(), 1 ); - OS_SetArenaLo( OS_ARENA_WRAM_SUB, tempLo ); - - hh = OS_CreateHeap( OS_ARENA_WRAM_SUB, OS_GetWramSubArenaLo(), OS_GetWramSubArenaHi() ); - if(hh < 0) OS_Panic( "ARM9-SUB LCD: Fail to create heap...\n" ); - OS_Printf( "WRAM arena lo = %x\n", OS_GetWramSubArenaLo() ); - OS_Printf( "WRAM arena hi = %x\n", OS_GetWramSubArenaHi() ); - hh = OS_SetCurrentHeap( OS_ARENA_WRAM_SUB, hh ); - } -} - - -// VRAM‚ւ̃Lƒƒƒ‰ƒƒ‚ƒŠŠm•Û -static void *AllocMemoryFromVram( int size ) -{ - if ( targetScreen == TOP_SCREEN ) { - return OS_AllocFromWramMain( size ); // ¦c‚à‚QƒLƒƒƒ‰•ª•K—v‚Ȃ̂ÅANITRO_CHAR_SIZE*2 - }else { - return OS_AllocFromWramSub ( size ); // ¦c‚à‚QƒLƒƒƒ‰•ª•K—v‚Ȃ̂ÅANITRO_CHAR_SIZE*2 - } -} - - -// VRAM‚ւ̃Lƒƒƒ‰ƒƒ‚ƒŠ‰ð•ú -static void FreeMemoryToVram( void *p ) -{ - if ( targetScreen == TOP_SCREEN ) { - OS_FreeToWramMain( p ); - }else { - OS_FreeToWramSub( p ); - } -} - - -//---------------------------------------------- -// 16iƒf[ƒ^‚ð•¶Žš—ñ‚ɕϊ· -//---------------------------------------------- - -// ƒƒCƒ“ƒƒ‚ƒŠ‚©‚ç‚Å‚à‘åä•v‚ÈŒ`Ž®‚Å‚Ì1byte‚̃f[ƒ^“Ç‚Ýo‚µB -__inline static u16 ReadByteHWBus(const void *srcp) -{ - if((int)srcp & 0x00000001) return (u16)(*(u16 *)((int)srcp ^ 0x00000001) >> 8); - else return (u16)(*(u16 *)(srcp) & 0x00ff); -} - -// 16iƒf[ƒ^‚ð10i•¶Žš—ñ‚ɕϊ· -static u8 *HexToDecimalString(const void *hexp, u8 *strp, u16 figure, u16 size) -{ - u16 i; - u32 target = 0; - - for(i = 0; i < size; i++) { - target |= ReadByteHWBus( ((u8 *)hexp)++ ) << (8 * i); - } - - strp += figure; - *strp-- = 0x00; - for(i = 0; i < figure; i++) { - CP_SetDiv32_32(target, 10); - *strp-- = (u8 )(CP_GetDivRemainder32() + 0x30); - target = (u32) CP_GetDivResult32(); - } - return (strp + 1); -} - - -// 16iƒf[ƒ^‚ð16i•¶Žš—ñ‚ɕϊ· -static u8 *HexToString(const void *hexp, u8 *strp, u16 figure) -{ - u16 i; - u8 hex; - - strp += figure; - *strp-- = 0x00; - - for(i = 0; i < figure; i++){ - hex = (u8)ReadByteHWBus(hexp); - if(i & 0x01){ - hex = (u8)( (hex >> 4) & 0x0f); - ((u8 *)hexp)++; - }else{ - hex = (u8)( hex & 0x0f); - } - if(hex < 0x000a) hex += 0x30; - else hex += 0x41 - 0x0a; - *strp-- = hex; - } - return (strp + 1); -} - - -//---------------------------------------------- -// ASCII -> SJIS •ÏŠ·ƒe[ƒuƒ‹ -//---------------------------------------------- - -const u16 tbl_ASCII_to_SJIS[0x100] = { - // 00 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // 10 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // 20 - 0x8140,0x8149,0x8168,0x81f2,0x8190,0x8193,0x8195,0x8166, - 0x8169,0x816a,0x8196,0x817b,0x8143,0x817c,0x8144,0x815e, - // 30 - 0x824f,0x8250,0x8251,0x8252,0x8253,0x8254,0x8255,0x8256, - 0x8257,0x8258,0x8146,0x8147,0x8183,0x8181,0x8184,0x8148, - // 40 - 0x8197,0x8260,0x8261,0x8262,0x8263,0x8264,0x8265,0x8266, - 0x8267,0x8268,0x8269,0x826a,0x826b,0x826c,0x826d,0x826e, - // 50 - 0x826f,0x8270,0x8271,0x8272,0x8273,0x8274,0x8275,0x8276, - 0x8277,0x8278,0x8279,0x816d,0x818f,0x816e,0x814f,0x8151, - // 60 - 0x8165,0x8281,0x8282,0x8283,0x8284,0x8285,0x8286,0x8287, - 0x8288,0x8289,0x828a,0x828b,0x828c,0x828d,0x828e,0x828f, - // 70 - 0x8290,0x8291,0x8292,0x8293,0x8294,0x8295,0x8296,0x8297, - 0x8298,0x8299,0x829a,0x816f,0x8162,0x8170,0x8160,0x81fc, - - // 80 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // 90 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // a0 - 0x81fc,0x8142,0x8175,0x8176,0x8141,0x8145,0x8192,0x8340, - 0x8342,0x8344,0x8346,0x8348,0x8383,0x8385,0x8387,0x8362, - // b0 - 0x815b,0x8341,0x8343,0x8345,0x8347,0x8349,0x834a,0x834c, - 0x834e,0x8350,0x8352,0x8354,0x8356,0x8358,0x835a,0x835c, - // c0 - 0x835e,0x8360,0x8363,0x8365,0x8367,0x8369,0x836a,0x836b, - 0x836c,0x836d,0x836e,0x8371,0x8374,0x8377,0x837a,0x837d, - // d0 - 0x837e,0x837f,0x838a,0x8382,0x8384,0x8386,0x8388,0x8389, - 0x838a,0x838b,0x838c,0x838d,0x838f,0x8393,0x814a,0x814b, - - // e0 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - // f0 - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, - 0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc,0x81fc, -}; - diff --git a/build/tests/DispOwnerInfo/src/font.h b/build/tests/DispOwnerInfo/src/font.h deleted file mode 100644 index 3d13af9a..00000000 --- a/build/tests/DispOwnerInfo/src/font.h +++ /dev/null @@ -1,123 +0,0 @@ -/********************************************************************/ -/* font.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - ƒtƒHƒ“ƒgˆ—ƒwƒbƒ_ - - - $Log: font.h,v $ - Revision 1.2 2005/03/09 04:44:39 yosiokat - ‹@”\’ljÁB - - Revision 1.1.1.1 2004/08/31 06:20:24 Yosiokat - no message - - - - - // **** old logs **** - - Revision 1.7 2004/08/18 07:17:26 Yosiokat - ㉺LCD‚ðƒ^[ƒQƒbƒg‚É‚µ‚ÄA•ʌ‚ɉŠú‰»‚Å‚«‚邿‚¤•ÏXB - - Revision 1.6 2004/08/17 07:52:03 Yosiokat - ESetTargetScreenSJIS‚ð’ljÁ‚µ‚ÄA㉺LCD‚̂ǂ¿‚ç‚É‚à•¶Žš•\ަ‚ª‰Â”\‚É‚È‚é‚æ‚¤•ÏXB - - Revision 1.5 2004/08/07 05:44:43 Yosiokat - ESJIS•¶Žš—ñ•\ަŠÖ”‚ðˆø”‚Ńnƒ“ƒhƒ‹‚ðŽw’肵‚È‚¢Žd—l‚É•ÏX‚·‚éB - Eã‹L•ÏX‚ɑΉž‚µ‚ÄAƒNƒŠƒAŠÖ”‚àŽd—l•ÏXB - - Revision 1.4 2004/07/13 00:31:48 Yosiokat - EƒTƒuLCD‘¤‚ÌVRAM‚ð‘ÎÛ‚É‚·‚邿‚¤•ÏXB - - Revision 1.3 2004/06/06 02:39:31 Yosiokat - SJISƒR[ƒh”»’è—p‚Ì’è”’è‹`‚ðfont.h‚Ɉړ®B - - Revision 1.2 2004/05/26 01:16:57 Yosiokat - •¶Žš§Œä‚ðSJISƒx[ƒX‚É•ÏX’†B - - Revision 1.1 2004/05/25 08:59:22 Yosiokat - •¶Žš—ñ‚ðSJIS‚ŧŒä‚·‚邿‚¤‚É•ÏXB - - -*/ - -#ifndef __FONT_H_ -#define __FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -// define data---------------------------------- -#define STR_ENTRY_MAX_NUM 256 // “o˜^‰Â”\‚È•¶Žš—ñƒf[ƒ^‚ÌÅ‘åŒÂ” - -#define SJIS_CHAR_VRAM_OFFSET 0x100 // SJIS•¶Žš—ñƒLƒƒƒ‰ƒNƒ^—pVRAM‚̃IƒtƒZƒbƒg’l -#define SJIS_CHAR_VRAM_SIZE (0x8000 + 0x20) // @@V@@@@@@@@@@‚̃TƒCƒYi0x20‚̓q[ƒv‚̃wƒbƒ_j - -#define VRAM_M_ARENA_LO (HW_BG_VRAM + SJIS_CHAR_VRAM_OFFSET - 0x20) -#define VRAM_M_ARENA_HI (VRAM_M_ARENA_LO + SJIS_CHAR_VRAM_SIZE) -#define VRAM_S_ARENA_LO (HW_DB_BG_VRAM + SJIS_CHAR_VRAM_OFFSET - 0x20) -#define VRAM_S_ARENA_HI (VRAM_S_ARENA_LO + SJIS_CHAR_VRAM_SIZE) - // VRAMƒAƒŠ[ƒi‚ÌLo & Hi - // SJISƒR[ƒh”»’è—p‚Ì’l -#define SJIS_HIGHER_CODE1_MIN 0x81 -#define SJIS_HIGHER_CODE1_MAX 0x9f -#define SJIS_HIGHER_CODE2_MIN 0xe0 -#define SJIS_HIGHER_CODE2_MAX 0xea - -// ŠÖ”‚̃Gƒ‰[ƒŠƒ^[ƒ“’l -#define DSJIS_ERR_ENTRY_GET_FAILED 0x8000 -#define DSJIS_ERR_ENTRY_ALLOC_FAILED 0x8001 -#define DSJIS_ERR_CHAR_ALLOC_FAILED 0x8002 -#define DSJIS_ERR_STR_MEMORY_OVER 0x8003 -#define DSJIS_ERR_STR_LENGTH_TOO_LONG 0x8004 - -// SetTargetScreenSJIS‚̈ø”target -typedef enum TargetScreen { - TOP_SCREEN =0, - BOTTOM_SCREEN -}TargetScreen; - -// ƒtƒHƒ“ƒgŽí—Þƒf[ƒ^iSelectFont‚ÅŽw’èj -typedef enum FontType{ // ‘SŠp@@”¼Šp - FONT12, // 12x12 & 12x 7dot - FONT_TYPE_MAX -}FontType; - - -// function's prototype declaration------------- - -void InitFont( TargetScreen target ); -void SetFont( FontType font ); -void SetTargetScreenSJIS( TargetScreen target ); -u16 ChangeColorSJIS( u16 handle, u16 new_color ); - -// ˆÈ‰º‚Ì•\ަŠÖ”‚ÍAƒf[ƒ^ƒAƒhƒŒƒX‚©‚çƒf[ƒ^ƒnƒ“ƒhƒ‹‚ðŽZo‚·‚é‚Ì‚ÅAƒnƒ“ƒhƒ‹‚ðˆø”‚Å—^‚¦‚È‚­‚Ä—Ç‚¢‚ªA“¯ˆêƒAƒhƒŒƒX‚̃f[ƒ^‚𕡔ꊂɔz’u‚·‚邱‚Æ‚ª‚Å‚«‚È‚¢B -u16 DrawStringSJIS ( u16 x, u16 y, u16 color, const void *str ); -u16 DrawHexSJIS ( u16 x, u16 y, u16 color, const void *hexp, u16 figure ); -u16 DrawDecimalSJIS( u16 x, u16 y, u16 color, const void *hexp, u16 figure, u16 size ); - -// ExŒn‚ÍAˆø”‚Éindex‚ðÝ‚¯‚邱‚Æ‚ÅAã‹LŠÖ”‚ŧŒÀ‚³‚ê‚Ä‚¢‚铯ˆêƒAƒhƒŒƒXƒf[ƒ^‚Ì•¡”ꊔz’u‚ɑΉž‚µ‚Ä‚¢‚éB -u16 DrawStringSJISEx ( u16 x, u16 y, u16 color, const void *strp, int index ); -u16 DrawHexSJISEx ( u16 x, u16 y, u16 color, const void *hexp, u16 figure, int index ); -u16 DrawDecimalSJISEx( u16 x, u16 y, u16 color, const void *hexp, u16 figure, u16 size, int index ); - -// •\ަ•¶Žš—ñƒNƒŠƒAŠÖ” -void ClearStringSJIS( void *datap ); -void ClearStringSJISEx( void *datap, int handleIndex ); -void ClearStringSJIS_handle( u16 handle ); -void ClearAllStringSJIS( void ); - - -#ifdef __cplusplus -} -#endif - -#endif // __FONT_H_ - diff --git a/build/tests/DispOwnerInfo/src/initFunc.c b/build/tests/DispOwnerInfo/src/initFunc.c deleted file mode 100644 index ceb4211d..00000000 --- a/build/tests/DispOwnerInfo/src/initFunc.c +++ /dev/null @@ -1,149 +0,0 @@ -/********************************************************************/ -/* initFunc.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - ‰Šú‰»ŠÖ”ŒQ - - $Log: initFunc.c,v $ - Revision 1.2.10.1 2007/01/22 07:36:16 yosiokat - NAT-IPL2‚ւ̑ΉžB - - Revision 1.2.2.1 2006/02/06 11:34:35 yosiokat - GetIPL2CRC16‚ðUSG-IPL2-WW”łł̃R[ƒh‚ÌNVRAMŠi”[ƒtƒH[ƒ}ƒbƒg‚ª•ÏX‚³‚ꂽ‚±‚Æ‚É - ‘Ήž‚³‚¹‚éB - - Revision 1.2 2005/04/02 07:42:19 yosiokat - IPL2ƒtƒHƒ“ƒg‚ð"s"‚É•ÏXB - - Revision 1.1 2005/04/02 06:41:18 yosiokat - main.c‚©‚ç‹N“®Žž‚̉Šú‰»ŠÖ”‚𕪗£B - - -*/ - - -#include -#include "data.h" -#include "main.h" - -// define data--------------------------------------------- - -// extern data--------------------------------------------- - -// function's prototype------------------------------------ - -// global variables---------------------------------------- -u32 ipl2_crc32 = 0; - -// static variables---------------------------------------- - - -// const data---------------------------------------------- - - -// ================================================================== -/* function */ - -// •\ަŒn‰Šú‰» -void InitDisp( void ) -{ - // ƒƒCƒ“LCD - { - GX_SetBankForBG ( GX_VRAM_BG_128_A ); // @V@@@@@BG —p - GX_SetBankForOBJ( GX_VRAM_OBJ_32_FG ); // @V@@@@@OBJ—p - GX_SetGraphicsMode( GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D ); - G2_SetBG1Control( GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 256 colors mode - GX_BG_SCRBASE_0xf000, // screen base offset + 0x0000 is the address for BG #0 screen - GX_BG_CHARBASE_0x00000, // character base offset + 0x04000 is the address for BG #0 characters - GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled - ); - G2_SetBG1Priority( 3 ); - G2_BG1Mosaic( FALSE ); - G2_SetBG2ControlText( GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, - GX_BG_CHARBASE_0x10000 - ); - G2_SetBG2Priority( 2 ); - G2_BG2Mosaic( FALSE ); - MI_CpuClearFast( (void *)HW_BG_VRAM, 0x20000 ); // BG -VRAM ƒNƒŠƒA - MI_CpuClearFast( (void *)HW_OBJ_VRAM, 0x8000 ); // OBJ-VRAM ƒNƒŠƒA - MI_CpuClearFast( (void *)HW_PLTT, HW_PLTT_SIZE ); // ƒpƒŒƒbƒg ƒNƒŠƒA // NitroSDK‚Å‚Ícrt0.c‚ŃNƒŠƒA‚µ‚Ä‚¢‚éB - MI_CpuFill32( (void *)HW_OAM, 192, HW_OAM_SIZE ); // OAM ƒNƒŠƒA // NitroSDK‚Å‚Ícrt0.c‚ŃNƒŠƒA‚µ‚Ä‚¢‚éB - MI_CpuCopyFast( myPlttData, (void *)( HW_BG_PLTT + 2 * 16 ), sizeof(myPlttData) ); // BGƒpƒŒƒbƒg ƒZƒbƒg - MI_CpuCopyFast( myPlttData, (void *)( HW_BG_PLTT + 2 * 16 ), sizeof(myPlttData) ); // OBJƒpƒŒƒbƒg ƒZƒbƒg - } - // ƒTƒuLCD - { - GXS_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_1D_32K); - GX_SetBankForSubBG ( GX_VRAM_SUB_BG_128_C ); // VRAM-C for BGs - GX_SetBankForSubOBJ( GX_VRAM_SUB_OBJ_128_D ); // VRAM-D for BGs - GXS_SetGraphicsMode( GX_BGMODE_0 ); // BGMODE is 0 - G2S_SetBG1Control( GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 256 colors mode - GX_BG_SCRBASE_0xf000, // screen base offset + 0x0000 is the address for BG #0 screen - GX_BG_CHARBASE_0x00000, // character base offset + 0x04000 is the address for BG #0 characters - GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled - ); - G2S_SetBG1Priority( 3 ); - G2S_BG1Mosaic( FALSE ); - G2S_SetBG2ControlText( GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, - GX_BG_CHARBASE_0x10000 - ); - G2S_SetBG2Priority( 2 ); - G2S_BG2Mosaic( FALSE ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 ); // display only BG #0 - MI_CpuFill32( (void *)HW_DB_OAM, 192, HW_OAM_SIZE ); // OAM ƒNƒŠƒA - MI_CpuClearFast( (void *)HW_DB_BG_VRAM, 0x20000 ); // BG -VRAM ƒNƒŠƒA - MI_CpuClearFast( (void *)HW_DB_OBJ_VRAM, 0x20000 ); // OBJ -VRAM ƒNƒŠƒA - MI_CpuCopyFast( myPlttData, (void *)( HW_DB_BG_PLTT + 2 * 16 ), sizeof(myPlttData) ); // BGƒpƒŒƒbƒg ƒZƒbƒg - MI_CpuCopyFast( myPlttData, (void *)( HW_DB_BG_PLTT + 2 * 16 ), sizeof(myPlttData) ); // OBJƒpƒŒƒbƒg ƒZƒbƒg - } -} - - -//--------------------------------------------------------------------------- -// IPL2ƒtƒHƒ“ƒg‰Šú‰» -//--------------------------------------------------------------------------- -void InitIPL2Font( void ) -{ - // ƒtƒHƒ“ƒgƒCƒ“ƒXƒ^ƒ“ƒX‚Ìì¬B - // •`‰æ—p‚̃Lƒƒƒ‰ƒNƒ^ƒoƒbƒtƒ@‚ðì¬B - fnt_CreateFont( &font_m, NITRO_LC_Font_s_bnfr, NITRO_LC_Font_s_bncmp ); - fnt_CreateDrawContext( &context_m, canvas_m, CANVAS_WIDTH, CANVAS_HEIGHT, FNT_DCTYPE_4BITS, &font_m ); - - fnt_CreateFont( &font_s, NITRO_LC_Font_s_bnfr, NITRO_LC_Font_s_bncmp ); - fnt_CreateDrawContext( &context_s, canvas_s, CANVAS_WIDTH, CANVAS_HEIGHT, FNT_DCTYPE_4BITS, &font_s ); - - InitIPL2FontBG(); -} - -//--------------------------------------------------------------------------- -// IPL2ƒtƒHƒ“ƒg•\ަ—pƒXƒNƒŠ[ƒ“•ƒpƒŒƒbƒg‰Šú‰» -//--------------------------------------------------------------------------- -void InitIPL2FontBG( void ) -{ - int x, y; - - GX_LoadBGPltt ( s_Palette, 0, sizeof(s_Palette) ); - GXS_LoadBGPltt( s_Palette, 0, sizeof(s_Palette) ); - for ( y = 0 ; y < (CANVAS_HEIGHT >> 3) ; ++y ) { - for ( x = 0 ; x < (CANVAS_WIDTH >> 3) ; ++x ) { - screen_m[ y * 32 + x] = (u16)(y * 32 + x); - screen_s[ y * 32 + x] = (u16)(y * 32 + x); - } - } - DC_FlushRange ( screen_m, (CANVAS_WIDTH >> 3) * (CANVAS_HEIGHT >> 3) * 2 ); - GX_LoadBG2Scr ( screen_m, 0, (CANVAS_WIDTH >> 3) * (CANVAS_HEIGHT >> 3) * 2 ); - MI_CpuFillFast( canvas_m, 0, sizeof(canvas_m) ); - - DC_FlushRange ( screen_s, (CANVAS_WIDTH >> 3) * (CANVAS_HEIGHT >> 3) * 2 ); - GXS_LoadBG2Scr( screen_s, 0, (CANVAS_WIDTH >> 3) * (CANVAS_HEIGHT >> 3) * 2 ); - MI_CpuFillFast( canvas_s, 0, sizeof(canvas_s) ); -} diff --git a/build/tests/DispOwnerInfo/src/main.c b/build/tests/DispOwnerInfo/src/main.c deleted file mode 100644 index 4929f803..00000000 --- a/build/tests/DispOwnerInfo/src/main.c +++ /dev/null @@ -1,167 +0,0 @@ -/********************************************************************/ -/* main.c */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - ƒƒCƒ“ - - $Log: main.c,v $ - Revision 1.7 2005/04/06 08:26:57 yosiokat - IPL2ƒtƒHƒ“ƒgƒ`ƒFƒbƒN‚ł̃ƒ‚ƒŠŠm•ÛƒTƒCƒY‘‰Á‚É”º‚¢Aƒq[ƒvƒTƒCƒY‚ð0x100000‚É‘‰ÁB - - Revision 1.6 2005/04/02 07:41:57 yosiokat - EIPL2ƒtƒHƒ“ƒg•\ަ‚ɑΉžB - E‹N“®Žž‚̉Šú‰»ƒ‹[ƒ`ƒ“‚ðinitFunc.c‚É•ª—£B - - Revision 1.5 2005/04/01 05:46:48 yosiokat - ƒfƒoƒbƒO•Ï”••\ަ’ljÁB - - Revision 1.4 2005/03/31 05:58:17 yosiokat - ENVRAMƒAƒNƒZƒXŠÖ”‚ðC³‚µA•ʃ\[ƒX‚É•ª—£B - EIPL2ƒwƒbƒ_î•ñŽæ“¾‚ðê—pŠÖ”‚ð—p‚¢‚邿‚¤•ÏXB - EGetIPL2CRC16‚ÌNVRAMƒAƒNƒZƒXŠÖ”‚ð•ÏXB - - Revision 1.3 2005/03/09 04:44:39 yosiokat - ‹@”\’ljÁB - - Revision 1.2 2004/09/23 11:28:32 Yosiokat - –{‘̃tƒ‰ƒbƒVƒ…‚ÉŠi”[‚³‚ê‚Ä‚¢‚éIPL2 ver‚ð•\ަ‚·‚邿‚¤•ÏXB - - Revision 1.1.1.1 2004/08/31 06:20:24 Yosiokat - no message - - -*/ - - -#include -#include "data.h" -#include "main.h" - -// define data--------------------------------------------- - -// extern data--------------------------------------------- - -// function's prototype------------------------------------ -static void VBlankIntr( void ); - -// global variables---------------------------------------- - -// static variables---------------------------------------- - - -// const data---------------------------------------------- - - - -// ================================================================== -/* function */ - -static const char *isbn[4] = { "0-000000-00-0", "000-0000-000", "0000", " 000" }; - -// ƒƒCƒ“ -void NitroMain( void ) -{ - /* OS ‰Šú‰» */ - OS_InitPrintServer(); - OS_Init(); -// OS_InitChina(); // SDK 2.01‚Ìê‡ -// OS_InitChina( isbn ); // SDK 5.1 ‚Ìê‡ - PXI_InitFifo(); - OS_InitThread(); - OS_InitTick(); - OS_InitAlarm(); - FX_Init(); - TP_Init(); - (void)RTC_Init(); - - /* GX ‰Šú‰» */ - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - /* Vƒuƒ‰ƒ“ƒNŠ„žÝ’è */ - (void)OS_SetIrqFunction( OS_IE_V_BLANK, VBlankIntr ); - (void)OS_EnableIrqMask( OS_IE_V_BLANK ); - (void)OS_EnableIrqMask(OS_IE_FIFO_RECV); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - (void)GX_VBlankIntr( TRUE ); - - { /* ƒƒ‚ƒŠŠ„‚è“–‚ẲŠú‰» */ - enum { MAIN_HEAP_SIZE = 0x100000 } ; - void *heapStart, *nstart; - int hh; - - nstart = OS_InitAlloc( OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 16 ); - OS_SetMainArenaLo( nstart ); - heapStart = OS_AllocFromMainArenaLo( (u32)MAIN_HEAP_SIZE, 32 ); - hh = OS_CreateHeap( OS_ARENA_MAIN, heapStart, (void*)( (u32)heapStart + MAIN_HEAP_SIZE ) ); - (void)OS_SetCurrentHeap( OS_ARENA_MAIN, hh ); - } - - { /* FS ‰Šú‰» */ - static u32 fs_tablework[0x100 / 4]; - FS_Init(FS_DMA_NOT_USE); - (void)FS_LoadTable(fs_tablework, sizeof(fs_tablework)); - } - - // Disp‰Šú‰» - InitDisp(); - InitIPL2Font(); - /* •\ަŠJŽn */ - GX_DispOn(); - GXS_DispOn(); - - // ‰ŠúƒƒCƒ“ƒ‹[ƒvŠÖ”‚ÌÝ’è - pad.cont = 0xffff; - - SEQ_DispNCD_init(); - nowProcess = SEQ_DispNCD; - - /* ƒƒCƒ“ƒ‹[ƒv */ - while(1) { - SVC_WaitVBlankIntr(); - ReadKeyPad(); - - (void)nowProcess(); - - OS_PrintServer(); - } -} - - -// ‚uƒuƒ‰ƒ“ƒNŠ„‚螂݈— -static void VBlankIntr( void ) -{ - // OAM, BG-VRAM‚ÌXV - DC_FlushRange ( oamBakM, sizeof(oamBakM) ); - DC_FlushRange ( oamBakS, sizeof(oamBakS) ); - DC_FlushRange ( bgBakM, sizeof(bgBakM) ); - DC_FlushRange ( bgBakS, sizeof(bgBakS) ); - MI_CpuCopyFast( oamBakM, (void*)HW_OAM, sizeof(oamBakM) ); - MI_CpuCopyFast( oamBakS, (void*)HW_DB_OAM, sizeof(oamBakS) ); - MI_CpuCopyFast( bgBakM, (void*)(HW_BG_VRAM + 0xf000), sizeof(bgBakM) ); - MI_CpuCopyFast( bgBakS, (void*)(HW_DB_BG_VRAM + 0xf000), sizeof(bgBakS) ); - - // BG2ƒLƒƒƒ‰ƒNƒ^‚É“]‘—B - DC_FlushRange ( context_m.canvas, sizeof( canvas_m ) ); - GX_LoadBG2Char ( context_m.canvas, 0, sizeof( canvas_m ) ); - DC_FlushRange ( context_s.canvas, sizeof( canvas_s ) ); - GXS_LoadBG2Char( context_s.canvas, 0, sizeof( canvas_s ) ); - - //---- Š„‚螂݃`ƒFƒbƒNƒtƒ‰ƒO - OS_SetIrqCheckFlag( OS_IE_V_BLANK ); -} - - -// ƒL[“ü—̓f[ƒ^“Ç‚Ýo‚µ -void ReadKeyPad( void ) -{ - u16 readData = PAD_Read(); - pad.trg = (u16)(readData & (readData ^ pad.cont)); // ƒgƒŠƒK “ü—Í - pad.cont = readData; // ƒxƒ^ “ü—Í -} - diff --git a/build/tests/DispOwnerInfo/src/main.h b/build/tests/DispOwnerInfo/src/main.h deleted file mode 100644 index e654fccb..00000000 --- a/build/tests/DispOwnerInfo/src/main.h +++ /dev/null @@ -1,41 +0,0 @@ -/********************************************************************/ -/* main.h */ -/* DebugForIPL2 */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - ƒƒCƒ“’è‹`@ƒwƒbƒ_ -*/ - -#ifndef __MAIN_H__ -#define __MAIN_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include -#include -#include "myFunc.h" - -// define data-------------------------------------------- -#define MSG_VIEW_COUNT 30 - - -// function----------------------------------------------- -extern void SEQ_DispNCD_init( void ); -extern int SEQ_DispNCD( void ); - -// ƒvƒƒOƒ‰ƒ€‹N“®Žž‚ÉŽg—p -extern void InitDisp( void ); -extern void InitIPL2Font( void ); -extern void InitIPL2FontBG( void ); -extern void ReadKeyPad( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __MAIN_H__ diff --git a/build/tests/DispOwnerInfo/src/myChar.c b/build/tests/DispOwnerInfo/src/myChar.c deleted file mode 100644 index 1787d52d..00000000 --- a/build/tests/DispOwnerInfo/src/myChar.c +++ /dev/null @@ -1,667 +0,0 @@ -/********************************************************************/ -/* myChar.c */ -/* NITRO-IPL */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - ƒLƒƒƒ‰ƒNƒ^•ƒpƒŒƒbƒgƒf[ƒ^ - - - $Log: myChar.c,v $ - Revision 1.1 2005/02/08 04:41:25 yosiokat - V‹K’ljÁB - - Revision 1.2 2004/05/19 08:25:28 yosiokat - XVƒƒO‚̒ljÁB - - -*/ - -#include "myFunc.h" - -// ƒpƒŒƒbƒgƒf[ƒ^-------------------------------------------------------------- - -// ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^------------------------------------------------------------ -const u16 myChar[0x2800*8/16]={ - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //0 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //2 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //3 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //4 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //5 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //6 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //7 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //8 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //b - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //c - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //d - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //e - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //10 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //11 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //12 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //13 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //14 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //15 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //16 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //17 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //18 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //19 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1a - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1b - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1c - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1d - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1e - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //1f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //20 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x1333,0x3321, //21 - 0x1333,0x3321,0x2333,0x3332,0x1333,0x3321,0x2333,0x3332, - 0x2113,0x3211,0x2113,0x3211,0x2123,0x3212,0x3213,0x3321, //22 - 0x3323,0x3332,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x2133,0x3321,0x1113,0x3211,0x2123,0x3321, //23 - 0x2133,0x3321,0x1113,0x3211,0x2123,0x3321,0x3233,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x1133,0x3211,0x1213,0x3322, //24 - 0x1123,0x3311,0x1233,0x2112,0x1113,0x3211,0x1223,0x3322, - 0x3333,0x3333,0x2133,0x2133,0x1213,0x3212,0x2123,0x3321, //25 - 0x1233,0x3212,0x2133,0x2121,0x3213,0x3212,0x3323,0x3323, - 0x3333,0x3333,0x1133,0x3331,0x2113,0x3212,0x1123,0x3321, //26 - 0x2113,0x2111,0x3213,0x3213,0x1123,0x2121,0x2233,0x3232, - 0x1133,0x3332,0x1133,0x3332,0x1233,0x3332,0x2133,0x3333, //27 - 0x3233,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3213,0x3333,0x3321,0x1333,0x3332, //28 - 0x1333,0x3332,0x1333,0x3332,0x2333,0x3331,0x3333,0x3312, - 0x3333,0x3333,0x3133,0x3333,0x1233,0x3333,0x2333,0x3321, //29 - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3332,0x2133,0x3333, - 0x3333,0x3333,0x1333,0x3332,0x1213,0x3212,0x1133,0x3321, //2a - 0x1233,0x3332,0x1133,0x3321,0x1213,0x3212,0x1323,0x3222, - 0x3333,0x3333,0x3333,0x3333,0x1333,0x3332,0x1333,0x3332, //2b - 0x1113,0x3211,0x1223,0x3222,0x1333,0x3332,0x2333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //2c - 0x1133,0x3332,0x1133,0x3332,0x1233,0x3332,0x2133,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //2d - 0x1113,0x3211,0x2223,0x3222,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //2e - 0x3333,0x3333,0x3333,0x3333,0x2133,0x3333,0x2233,0x3333, - 0x3333,0x3333,0x3333,0x2133,0x3333,0x3213,0x3333,0x3321, //2f - 0x1333,0x3332,0x2133,0x3333,0x3213,0x3333,0x3323,0x3333, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //30 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1333,0x3321,0x1133,0x3321,0x1233,0x3321, //31 - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x2112,0x1133,0x3211, //32 - 0x2113,0x3322,0x2113,0x3333,0x1113,0x2111,0x2223,0x3222, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x2112,0x1133,0x3211, //33 - 0x2233,0x2112,0x3333,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x3333,0x3211,0x1333,0x3211,0x2133,0x3211, //34 - 0x3213,0x3211,0x1113,0x2111,0x2223,0x3211,0x3333,0x3322, - 0x3333,0x3333,0x1113,0x3211,0x2213,0x3322,0x1113,0x3211, //35 - 0x2223,0x2112,0x3333,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x3322,0x1113,0x3211, //36 - 0x2113,0x2112,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1113,0x2111,0x2223,0x2122,0x3333,0x3213, //37 - 0x3333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3332, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x1123,0x3211, //38 - 0x2113,0x2112,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //39 - 0x1123,0x2111,0x2233,0x2112,0x1133,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, //3a - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, //3b - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x2333,0x3321, - 0x3333,0x3333,0x3333,0x3321,0x1333,0x3332,0x2133,0x3333, //3c - 0x2133,0x3333,0x1233,0x3333,0x2333,0x3321,0x3333,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1133,0x3211, //3d - 0x2233,0x3222,0x1133,0x3211,0x2233,0x3222,0x3333,0x3333, - 0x3333,0x3333,0x1333,0x3333,0x2333,0x3331,0x3333,0x3212, //3e - 0x3333,0x3213,0x3333,0x3321,0x1333,0x3332,0x2333,0x3333, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //3f - 0x3223,0x3211,0x1333,0x3321,0x2333,0x3332,0x1333,0x3321, - 0x3333,0x3333,0x1133,0x3321,0x2213,0x3212,0x1213,0x2121, //40 - 0x2113,0x2121,0x2113,0x2121,0x1213,0x3211,0x1123,0x2121, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //41 - 0x1113,0x2111,0x2113,0x2112,0x2113,0x2113,0x2223,0x2223, - 0x3333,0x3333,0x1113,0x3211,0x2113,0x2112,0x1113,0x3211, //42 - 0x2113,0x2112,0x2113,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2223, //43 - 0x2113,0x3333,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1113,0x3211,0x2113,0x2112,0x2113,0x2113, //44 - 0x2113,0x2113,0x2113,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x1113,0x2111,0x2113,0x2222,0x1113,0x3211, //45 - 0x2113,0x3222,0x2113,0x3333,0x1113,0x2111,0x2223,0x2222, - 0x3333,0x3333,0x1113,0x2111,0x2113,0x2222,0x1113,0x3211, //46 - 0x2113,0x3222,0x2113,0x3333,0x2113,0x3333,0x2223,0x3333, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x3322,0x2113,0x2111, //47 - 0x2113,0x2112,0x2113,0x2113,0x1123,0x2111,0x2233,0x3222, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x1113,0x2111, //48 - 0x2113,0x2112,0x2113,0x2113,0x2113,0x2113,0x2223,0x2223, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3321,0x1333,0x3321, //49 - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x3333,0x2113,0x3333,0x2113,0x3333,0x2113, //4a - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x3211,0x1113,0x3322, //4b - 0x1113,0x3331,0x2113,0x3311,0x2113,0x2112,0x2223,0x2223, - 0x3333,0x3333,0x2113,0x3333,0x2113,0x3333,0x2113,0x3333, //4c - 0x2113,0x3333,0x2113,0x3333,0x1113,0x2111,0x2223,0x2222, - 0x3333,0x3333,0x2133,0x2133,0x1113,0x1112,0x1113,0x1112, //4d - 0x1113,0x1111,0x2113,0x1121,0x2113,0x1121,0x3223,0x2232, - 0x3333,0x3333,0x2113,0x2113,0x1113,0x2112,0x1113,0x2112, //4e - 0x2113,0x2111,0x2113,0x2111,0x2113,0x2112,0x2223,0x2223, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //4f - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x1113,0x3211,0x2113,0x2112,0x1113,0x3211, //50 - 0x2113,0x3322,0x2113,0x3333,0x2113,0x3333,0x2223,0x3333, - 0x3333,0x3333,0x1133,0x3211,0x2113,0x2112,0x2113,0x2113, //51 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x2111, - 0x3333,0x3333,0x1113,0x3211,0x2113,0x2112,0x1113,0x3211, //52 - 0x2113,0x2112,0x2113,0x2113,0x2113,0x2113,0x2223,0x2223, - 0x3333,0x3333,0x1133,0x2111,0x2113,0x3222,0x1123,0x3331, //53 - 0x1233,0x3311,0x2333,0x2112,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x1113,0x2111,0x1223,0x3221,0x1333,0x3321, //54 - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x2113,0x2113, //55 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x2113,0x2113, //56 - 0x2113,0x2113,0x2123,0x3213,0x1233,0x3321,0x2333,0x3332, - 0x3333,0x3333,0x2113,0x1121,0x2113,0x1121,0x2113,0x1121, //57 - 0x1113,0x1111,0x1123,0x2112,0x2133,0x2133,0x3233,0x3233, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x1123,0x3211, //58 - 0x1233,0x3211,0x2113,0x2112,0x2113,0x2113,0x3223,0x3223, - 0x3333,0x3333,0x2113,0x2113,0x2113,0x2113,0x2133,0x3213, //59 - 0x1133,0x3211,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x1113,0x2111,0x2223,0x2112,0x1333,0x3221, //5a - 0x1133,0x3332,0x2113,0x3333,0x1113,0x2111,0x2223,0x2222, - 0x3333,0x3333,0x1333,0x3321,0x1333,0x3322,0x1333,0x3332, //5b - 0x1333,0x3332,0x1333,0x3332,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x3313,0x3333,0x3123,0x3333,0x1233,0x3333, //5c - 0x2333,0x3331,0x3333,0x3312,0x3333,0x3123,0x3333,0x3233, - 0x3333,0x3333,0x1333,0x3321,0x2333,0x3321,0x3333,0x3321, //5d - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x1333,0x3332,0x2133,0x3321,0x3233,0x3322, //5e - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //5f - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x2222, - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3332,0x2333,0x3321, //60 - 0x3333,0x3332,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2213,0x2112, //61 - 0x1123,0x2111,0x2113,0x2112,0x1123,0x2111,0x2233,0x2222, - 0x2113,0x3333,0x2113,0x3333,0x1113,0x3211,0x2113,0x2112, //62 - 0x2113,0x2113,0x2113,0x2113,0x1113,0x3211,0x2223,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2113,0x2122, //63 - 0x2113,0x3233,0x2113,0x2133,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x2113,0x3333,0x2113,0x1133,0x2111,0x2113,0x2112, //64 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x2111,0x2233,0x2222, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2113,0x2112, //65 - 0x1113,0x2111,0x2113,0x3222,0x1123,0x2111,0x2233,0x3222, - 0x1333,0x3211,0x1133,0x3322,0x1113,0x3321,0x1123,0x3332, //66 - 0x1133,0x3332,0x1133,0x3332,0x1133,0x3332,0x2233,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x2111,0x2113,0x2112, //67 - 0x2113,0x2113,0x1123,0x2111,0x2213,0x2112,0x1133,0x3211, - 0x2113,0x3333,0x2113,0x3333,0x1113,0x3311,0x2113,0x2112, //68 - 0x2113,0x2113,0x2113,0x2113,0x2113,0x2113,0x2223,0x2223, - 0x1333,0x3321,0x2333,0x3332,0x1333,0x3321,0x1333,0x3321, //69 - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3211,0x3333,0x3322,0x3333,0x3211,0x3333,0x3211, //6a - 0x3333,0x3211,0x3333,0x3211,0x3213,0x3211,0x1123,0x3321, - 0x2113,0x3333,0x2113,0x3213,0x2113,0x3211,0x1113,0x3321, //6b - 0x1113,0x3321,0x2113,0x3311,0x2113,0x2112,0x2223,0x3223, - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x1333,0x3321, //6c - 0x1333,0x3321,0x1333,0x3321,0x1333,0x3321,0x2333,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x1211,0x1121, //6d - 0x1211,0x1121,0x1211,0x1121,0x1211,0x1121,0x2322,0x2232, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x3211,0x2113,0x2112, //6e - 0x2113,0x2113,0x2113,0x2113,0x2113,0x2113,0x2223,0x2223, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2113,0x2112, //6f - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x3211,0x2113,0x2112, //70 - 0x2113,0x2113,0x1113,0x3211,0x2113,0x3322,0x2113,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x2111,0x2113,0x2112, //71 - 0x2113,0x2113,0x1123,0x2111,0x2233,0x2112,0x3333,0x2113, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x2112,0x1133,0x2111, //72 - 0x1133,0x3222,0x1133,0x3332,0x1133,0x3332,0x2233,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x1113,0x3322, //73 - 0x1133,0x3211,0x2233,0x2111,0x1133,0x3211,0x2233,0x3322, - 0x1133,0x3332,0x1113,0x3321,0x1123,0x3332,0x1133,0x3332, //74 - 0x1133,0x3332,0x1133,0x3332,0x1233,0x3321,0x2333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2113,0x2113,0x2113, //75 - 0x2113,0x2113,0x2113,0x2113,0x1123,0x3211,0x2233,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2113,0x2113,0x2113, //76 - 0x2113,0x2113,0x2113,0x3213,0x1113,0x3321,0x2223,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1211,0x1121,0x1211,0x1121, //77 - 0x1211,0x1121,0x1211,0x1121,0x1111,0x2111,0x2222,0x3222, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2113,0x2113,0x2113, //78 - 0x1123,0x3211,0x2113,0x2112,0x2113,0x2113,0x3223,0x3223, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2113,0x2113,0x2113, //79 - 0x2113,0x2113,0x1123,0x2111,0x2233,0x2112,0x1133,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x3211, //7a - 0x1333,0x3321,0x1133,0x3332,0x1113,0x2111,0x2223,0x2222, - 0x3333,0x3333,0x3333,0x3321,0x1333,0x3332,0x1333,0x3332, //7b - 0x2133,0x3333,0x1333,0x3332,0x1333,0x3332,0x3333,0x3321, - 0x3333,0x3333,0x1333,0x3332,0x1333,0x3332,0x1333,0x3332, //7c - 0x1333,0x3332,0x1333,0x3332,0x1333,0x3332,0x2333,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x3333,0x3321,0x3333,0x3321, //7d - 0x3333,0x3213,0x3333,0x3321,0x3333,0x3321,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3113,0x3333, //7e - 0x1221,0x2133,0x2332,0x3211,0x3333,0x3322,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //7f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x2211,0x2222,0x2211,0x2222,0x2211,0x2222,0x2211,0x2222, //80 - 0x2211,0x2222,0x2211,0x2222,0x2211,0x2222,0x2211,0x2222, - 0x1111,0x2222,0x1111,0x2222,0x1111,0x2222,0x1111,0x2222, //81 - 0x1111,0x2222,0x1111,0x2222,0x1111,0x2222,0x1111,0x2222, - 0x1111,0x2211,0x1111,0x2211,0x1111,0x2211,0x1111,0x2211, //82 - 0x1111,0x2211,0x1111,0x2211,0x1111,0x2211,0x1111,0x2211, - 0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111, //83 - 0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111,0x1111, - 0x2222,0x2222,0x2222,0x2222,0x2222,0x2222,0x2222,0x2222, //84 - 0x2222,0x2222,0x2222,0x2222,0x2222,0x2222,0x2222,0x2222, - 0x1333,0x3331,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, //85 - 0x1333,0x3331,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, - 0x1333,0x3331,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, //86 - 0x1111,0x1111,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //87 - 0x1111,0x1111,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x3333,0x2213, //88 - 0x3333,0x1213,0x3333,0x1213,0x3333,0x1213,0x3333,0x1213, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x1111,0x2222,0x2222, //89 - 0x1111,0x1111,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x1111,0x2222,0x2222, //8a - 0x1111,0x1111,0x1333,0x3331,0x1333,0x3331,0x1333,0x3331, - 0x3333,0x1213,0x3333,0x1213,0x3333,0x1213,0x3333,0x1213, //8b - 0x3333,0x1213,0x3333,0x1213,0x3333,0x1213,0x3333,0x1213, - 0x3133,0x3333,0x1133,0x3333,0x1133,0x3331,0x1133,0x3311, //8c - 0x1133,0x3321,0x1133,0x3332,0x2133,0x3333,0x3233,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x3332, //8d - 0x2123,0x3213,0x1133,0x3321,0x1213,0x3212,0x2113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //8e - 0x3333,0x3321,0x3213,0x3213,0x3213,0x3213,0x2133,0x3323, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1333,0x3332, //8f - 0x1133,0x3332,0x2213,0x3321,0x3323,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x2133,0x3333, //90 - 0x1113,0x3321,0x1223,0x3332,0x2133,0x3333,0x1213,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x3312, //91 - 0x2123,0x3323,0x1113,0x3321,0x2113,0x3213,0x2113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3213,0x3321, //92 - 0x1123,0x3211,0x2113,0x3212,0x1223,0x3322,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1333,0x3332, //93 - 0x1213,0x3321,0x1113,0x3212,0x1213,0x3211,0x1323,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1333,0x3332, //94 - 0x1333,0x3321,0x1133,0x3332,0x1213,0x3321,0x1123,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //95 - 0x1333,0x3321,0x2113,0x3212,0x3223,0x3213,0x1333,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //96 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //97 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //98 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //99 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9a - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9b - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9c - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9d - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9e - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //9f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a0 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a1 - 0x3333,0x3333,0x1133,0x3321,0x2133,0x3321,0x1133,0x3321, - 0x3333,0x3333,0x1333,0x3211,0x1333,0x3322,0x1333,0x3332, //a2 - 0x1333,0x3332,0x2333,0x3332,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3321, //a3 - 0x3333,0x3321,0x3333,0x3321,0x1133,0x3321,0x2233,0x3322, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a4 - 0x3333,0x3333,0x3333,0x3333,0x2133,0x3333,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //a5 - 0x1333,0x3332,0x2333,0x3332,0x3333,0x3333,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x2122, //a6 - 0x1113,0x2111,0x2223,0x2122,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x3321, //a7 - 0x2223,0x3321,0x2133,0x3321,0x2133,0x3332,0x3213,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3321, //a8 - 0x1133,0x3332,0x2111,0x3333,0x2122,0x3333,0x2133,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1333,0x3332, //a9 - 0x1113,0x3211,0x2213,0x3212,0x3323,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //aa - 0x1133,0x3321,0x1233,0x3332,0x1333,0x3332,0x1113,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3321, //ab - 0x1113,0x3211,0x2223,0x3321,0x1333,0x3321,0x2113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1213,0x3211, //ac - 0x2111,0x3212,0x2122,0x3323,0x1333,0x3332,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //ad - 0x1113,0x3321,0x2223,0x3321,0x3333,0x3321,0x1113,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1133,0x3211, //ae - 0x2233,0x3212,0x1133,0x3211,0x2233,0x3212,0x1133,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //af - 0x1213,0x3212,0x2323,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //b0 - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3322,0x3333,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2222,0x3212, //b1 - 0x2133,0x3213,0x2133,0x3321,0x2133,0x3332,0x3211,0x3333, - 0x3333,0x3333,0x3333,0x2133,0x3333,0x3213,0x1333,0x3321, //b2 - 0x2113,0x3321,0x3223,0x3321,0x3333,0x3321,0x3333,0x3321, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x2111,0x2213,0x2122, //b3 - 0x3323,0x2133,0x3333,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x3211,0x1223,0x3322, //b4 - 0x1333,0x3332,0x1333,0x3332,0x1333,0x3332,0x1111,0x2111, - 0x3333,0x3333,0x3333,0x3213,0x1113,0x2111,0x2223,0x3212, //b5 - 0x3333,0x3211,0x1333,0x3212,0x1333,0x3212,0x2113,0x3213, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x2111,0x1223,0x2122, //b6 - 0x1333,0x2132,0x2133,0x2133,0x2133,0x2133,0x3213,0x3213, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x2111,0x2223,0x3221, //b7 - 0x3333,0x3321,0x1113,0x1111,0x2223,0x2212,0x3333,0x3213, - 0x3333,0x3333,0x1133,0x2111,0x2133,0x2122,0x3213,0x2133, //b8 - 0x3323,0x3213,0x3333,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3213,0x3333,0x1113,0x2111,0x2213,0x3212, //b9 - 0x3321,0x3213,0x3332,0x3321,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x2122, //ba - 0x3333,0x2133,0x3333,0x2133,0x3333,0x2133,0x1113,0x2111, - 0x3333,0x3333,0x3213,0x3213,0x1111,0x2111,0x2212,0x3212, //bb - 0x3213,0x3213,0x3323,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x2113,0x2133,0x3223,0x2133, //bc - 0x2113,0x2133,0x3223,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x3212, //bd - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3212,0x2113,0x2133, - 0x3333,0x3333,0x2133,0x3333,0x1133,0x2111,0x2111,0x2122, //be - 0x2122,0x3213,0x2133,0x3323,0x2133,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x2133,0x3213,0x2133, //bf - 0x2123,0x3213,0x3233,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x1133,0x2111,0x2133,0x2122,0x2133,0x2133, //c0 - 0x1213,0x2111,0x2323,0x2122,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x3333,0x3333,0x3213,0x1113,0x3321,0x2223,0x3321, //c1 - 0x1111,0x2111,0x2222,0x3221,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1213,0x2132,0x1213,0x2132, //c2 - 0x2323,0x2133,0x3333,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3322,0x1111,0x2111, //c3 - 0x2222,0x3221,0x3333,0x3321,0x1333,0x3332,0x2113,0x3333, - 0x3333,0x3333,0x2133,0x3333,0x2133,0x3333,0x2133,0x3333, //c4 - 0x1133,0x3332,0x2133,0x3211,0x2133,0x3322,0x2133,0x3333, - 0x3333,0x3333,0x3333,0x3321,0x1111,0x2111,0x2222,0x3221, //c5 - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3332,0x2113,0x3333, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2233,0x3322, //c6 - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1113,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2222,0x3212, //c7 - 0x3133,0x3321,0x1233,0x3332,0x2133,0x3321,0x3211,0x3213, - 0x3333,0x3333,0x1333,0x3332,0x1111,0x2111,0x2222,0x3212, //c8 - 0x3333,0x3321,0x1133,0x3212,0x1211,0x2132,0x1322,0x3232, - 0x3333,0x3333,0x3333,0x3213,0x3333,0x3213,0x3333,0x3213, //c9 - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3332,0x2113,0x3333, - 0x3333,0x3333,0x1333,0x3332,0x3333,0x3321,0x3213,0x3213, //ca - 0x3213,0x3213,0x3321,0x2133,0x3321,0x2133,0x3321,0x2133, - 0x3333,0x3333,0x3213,0x2133,0x3213,0x3211,0x1113,0x3322, //cb - 0x2213,0x3333,0x3213,0x3333,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2222,0x2122, //cc - 0x3333,0x3213,0x3333,0x3213,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x2133,0x3333,0x1213,0x3332, //cd - 0x3321,0x3321,0x3332,0x3213,0x3333,0x2133,0x3333,0x3233, - 0x3333,0x3333,0x1333,0x3332,0x1111,0x2111,0x1222,0x3222, //ce - 0x1213,0x3212,0x1213,0x2132,0x1321,0x2132,0x1321,0x2132, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2222,0x2122, //cf - 0x3213,0x3213,0x2133,0x3321,0x1333,0x3332,0x3333,0x3321, - 0x3333,0x3333,0x3113,0x3333,0x1223,0x3311,0x2333,0x2122, //d0 - 0x1133,0x3231,0x2233,0x3212,0x1113,0x3322,0x2223,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x2133,0x3333,0x3213,0x3333, //d1 - 0x3213,0x3213,0x3321,0x2133,0x3321,0x2133,0x1111,0x2111, - 0x3333,0x3333,0x3333,0x3213,0x3213,0x3213,0x2133,0x3321, //d2 - 0x1333,0x3332,0x1333,0x3332,0x2133,0x3321,0x3211,0x3213, - 0x3333,0x3333,0x3333,0x3333,0x1111,0x2111,0x2122,0x3222, //d3 - 0x1111,0x2111,0x2122,0x3222,0x2133,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x2133,0x3333,0x1133,0x2111,0x2111,0x2122, //d4 - 0x2122,0x3213,0x2133,0x3323,0x1333,0x3332,0x1333,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x3321,0x2223,0x3321, //d5 - 0x3333,0x3321,0x3333,0x3321,0x3333,0x3321,0x1111,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2223,0x2122, //d6 - 0x1113,0x2111,0x2223,0x2122,0x3333,0x2133,0x1113,0x2111, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3322,0x1111,0x2111, //d7 - 0x2222,0x2122,0x3333,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x3333,0x3213,0x3213,0x3213,0x3213,0x3213,0x3213, //d8 - 0x3213,0x3213,0x3323,0x3213,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x1213,0x3332,0x1213,0x3332, //d9 - 0x1213,0x2132,0x1213,0x2132,0x1213,0x3212,0x1321,0x3321, - 0x3333,0x3333,0x3213,0x3333,0x3213,0x3333,0x3213,0x3333, //da - 0x3213,0x3213,0x3213,0x3213,0x3213,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2213,0x2122, //db - 0x3213,0x2133,0x3213,0x2133,0x3213,0x2133,0x1113,0x2111, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2111,0x2213,0x2122, //dc - 0x3323,0x2133,0x3333,0x2133,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x1113,0x2132,0x2223,0x2133, //dd - 0x3333,0x2133,0x3333,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x2111,0x1223,0x2122, //de - 0x1333,0x2132,0x2133,0x2133,0x2133,0x2133,0x3213,0x3213, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x2111,0x2223,0x3221, //df - 0x3333,0x3321,0x1113,0x1111,0x2223,0x2212,0x3333,0x3213, - 0x3333,0x1213,0x3333,0x2323,0x1133,0x2111,0x2133,0x2122, //e0 - 0x3213,0x3213,0x3323,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3213,0x2323,0x1113,0x2111,0x2213,0x3212, //e1 - 0x3321,0x3213,0x3332,0x3321,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x1113,0x2111,0x2223,0x2122, //e2 - 0x3333,0x2133,0x3333,0x2133,0x3333,0x2133,0x1113,0x2111, - 0x3333,0x1313,0x3333,0x2323,0x3213,0x3213,0x1111,0x2111, //e3 - 0x2212,0x3212,0x3213,0x3213,0x3323,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x2113,0x2133,0x3223,0x2133, //e4 - 0x2113,0x2133,0x3223,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1113,0x2111,0x2223,0x3212, //e5 - 0x3333,0x3321,0x3333,0x3321,0x1333,0x3212,0x2113,0x2133, - 0x3333,0x1313,0x2133,0x2323,0x1133,0x2111,0x2111,0x2122, //e6 - 0x2122,0x3213,0x2133,0x3323,0x2133,0x3333,0x1133,0x2111, - 0x3333,0x1313,0x3333,0x2323,0x3213,0x2133,0x3213,0x2133, //e7 - 0x2123,0x3213,0x3233,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x1133,0x2111,0x2133,0x2122, //e8 - 0x1213,0x2111,0x2323,0x2122,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1113,0x3211,0x2223,0x3321, //e9 - 0x1111,0x2111,0x2222,0x3221,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x1213,0x2132,0x1213,0x2132, //ea - 0x2323,0x2133,0x3333,0x2133,0x3333,0x3213,0x1113,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1113,0x3211,0x2223,0x3322, //eb - 0x1111,0x2111,0x2222,0x3221,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x2133,0x1313,0x2133,0x2323,0x2133,0x3333, //ec - 0x1133,0x3333,0x2133,0x3211,0x2133,0x3322,0x2133,0x3333, - 0x3333,0x1313,0x1333,0x2323,0x3333,0x3331,0x3213,0x3213, //ed - 0x3213,0x3213,0x3321,0x2133,0x3321,0x2133,0x3321,0x2133, - 0x3333,0x1313,0x3213,0x2323,0x3213,0x2111,0x1113,0x3222, //ee - 0x2213,0x3333,0x3213,0x3333,0x3213,0x3333,0x1123,0x2111, - 0x3333,0x1313,0x3333,0x2323,0x1111,0x2111,0x2222,0x2122, //ef - 0x3333,0x3213,0x3333,0x3213,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x3333,0x1313,0x2133,0x2323,0x1213,0x3332, //f0 - 0x3321,0x3321,0x3332,0x3213,0x3333,0x2133,0x3333,0x3233, - 0x3333,0x1313,0x1333,0x2323,0x1111,0x2111,0x1222,0x3222, //f1 - 0x1213,0x3212,0x1213,0x2132,0x1321,0x2132,0x1321,0x2132, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x2111,0x2213,0x2122, //f2 - 0x3323,0x2133,0x3333,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3133,0x1333,0x1212,0x3333,0x2121,0x3213,0x3213, //f3 - 0x3213,0x3213,0x3321,0x2133,0x3321,0x2133,0x3321,0x2133, - 0x3333,0x3133,0x3213,0x1213,0x3213,0x2111,0x1113,0x3222, //f4 - 0x2213,0x3333,0x3213,0x3333,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x3133,0x3333,0x1213,0x1111,0x2111,0x2222,0x2122, //f5 - 0x3333,0x3213,0x3333,0x3213,0x3333,0x3321,0x1113,0x3332, - 0x3333,0x3133,0x3333,0x1213,0x2133,0x2123,0x1213,0x3232, //f6 - 0x3321,0x3321,0x3332,0x3213,0x3333,0x2133,0x3333,0x3233, - 0x3333,0x3133,0x1333,0x1212,0x1111,0x2111,0x1222,0x3222, //f7 - 0x1213,0x3212,0x1213,0x2132,0x1321,0x2132,0x1321,0x2132, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2123,0x3322, //f8 - 0x1113,0x2113,0x1223,0x3221,0x2133,0x3332,0x1133,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3321,0x2123,0x2132, //f9 - 0x1113,0x3211,0x2121,0x2121,0x1321,0x2132,0x2113,0x3213, - 0x3333,0x3333,0x3213,0x3333,0x3213,0x3213,0x3213,0x2133, //fa - 0x3213,0x2133,0x3213,0x2133,0x1213,0x3232,0x2133,0x3333, - 0x3333,0x3333,0x1133,0x3321,0x2233,0x3332,0x1333,0x3211, //fb - 0x2113,0x2122,0x3223,0x2133,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x3333,0x1133,0x3321,0x2233,0x3332,0x1113,0x3211, //fc - 0x2223,0x3321,0x1333,0x3332,0x2133,0x3321,0x3213,0x2113, - 0x3333,0x3333,0x2133,0x2133,0x1133,0x2121,0x2113,0x3232, //fd - 0x1123,0x3211,0x2113,0x2122,0x2121,0x2133,0x2113,0x3213, - 0x3333,0x3333,0x3333,0x3321,0x2133,0x3213,0x1111,0x2132, //fe - 0x2122,0x2121,0x3213,0x3321,0x3321,0x3321,0x1132,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2223,0x3321, //ff - 0x1133,0x2111,0x2233,0x3212,0x3313,0x3323,0x1133,0x3211, - 0x3333,0x3333,0x3333,0x3213,0x3333,0x3321,0x1333,0x3332, //100 - 0x2133,0x3333,0x1333,0x3332,0x3333,0x3321,0x3333,0x3213, - 0x3333,0x3333,0x3333,0x3213,0x1213,0x2111,0x2213,0x3212, //101 - 0x3213,0x3213,0x3213,0x3213,0x2133,0x3213,0x3233,0x3321, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2233,0x2122, //102 - 0x3333,0x3213,0x3333,0x3323,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2223,0x3321, //103 - 0x3333,0x3212,0x3333,0x3213,0x3213,0x3333,0x1123,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x3333,0x3213,0x3333, //104 - 0x3213,0x3333,0x3213,0x3333,0x3213,0x3213,0x1123,0x3321, - 0x3333,0x3333,0x3333,0x3321,0x1113,0x2111,0x2223,0x3221, //105 - 0x1133,0x3321,0x2133,0x3321,0x1333,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x3321,0x1113,0x2111, //106 - 0x3211,0x3321,0x3212,0x3321,0x3213,0x2133,0x1133,0x3211, - 0x3333,0x3333,0x2133,0x2133,0x2133,0x2133,0x3233,0x3213, //107 - 0x1113,0x2111,0x1223,0x3222,0x2133,0x3333,0x1333,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2123,0x3322, //108 - 0x3213,0x2111,0x3213,0x3222,0x1213,0x3332,0x3321,0x2111, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3211,0x2123,0x3322, //109 - 0x1213,0x3311,0x2113,0x2122,0x3223,0x2133,0x1333,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2211,0x2122, //10a - 0x3322,0x2133,0x3333,0x2133,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x3333,0x3333,0x2113,0x1133,0x3211,0x2211,0x3321, //10b - 0x1322,0x3332,0x1333,0x3332,0x3333,0x3321,0x3333,0x2113, - 0x3333,0x3333,0x3213,0x3333,0x3213,0x2133,0x2133,0x3211, //10c - 0x1133,0x3322,0x2213,0x3333,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x3333,0x2133,0x3333,0x1111,0x2112,0x2212,0x3223, //10d - 0x3213,0x3213,0x1321,0x3211,0x2132,0x2112,0x1333,0x3221, - 0x3333,0x3333,0x3333,0x3333,0x1213,0x2111,0x2213,0x3222, //10e - 0x3213,0x3333,0x3213,0x3333,0x3213,0x3321,0x2133,0x2113, - 0x3333,0x3333,0x3333,0x3321,0x3213,0x3321,0x1213,0x3211, //10f - 0x2113,0x2121,0x1121,0x2112,0x2121,0x2121,0x3213,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x3211,0x1211,0x2122, //110 - 0x2112,0x2133,0x3213,0x2111,0x3211,0x2121,0x3212,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x1133,0x3211,0x2113,0x2122, //111 - 0x2121,0x2133,0x2121,0x2133,0x2121,0x2133,0x3213,0x3213, - 0x3333,0x3333,0x3333,0x3213,0x1121,0x2111,0x2221,0x3212, //112 - 0x3321,0x3213,0x1321,0x3211,0x2121,0x2112,0x1332,0x3221, - 0x3333,0x3333,0x2133,0x3333,0x2111,0x3213,0x3212,0x2113, //113 - 0x3321,0x3213,0x3321,0x3213,0x3321,0x3321,0x1113,0x3332, - 0x3333,0x3333,0x1133,0x3333,0x2233,0x3321,0x3333,0x3332, //114 - 0x1213,0x3332,0x3321,0x2121,0x3321,0x2121,0x1132,0x3232, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x1133,0x3332, //115 - 0x2213,0x3321,0x3321,0x3213,0x3332,0x2133,0x3333,0x2233, - 0x3333,0x3333,0x1321,0x2111,0x2321,0x3212,0x1321,0x2111, //116 - 0x2321,0x3212,0x1321,0x3211,0x2121,0x2112,0x1213,0x3221, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3321,0x1113,0x3211, //117 - 0x2223,0x3321,0x1113,0x3321,0x2221,0x3211,0x1113,0x3322, - 0x3333,0x3333,0x1113,0x3321,0x1223,0x3332,0x2133,0x3213, //118 - 0x1113,0x3211,0x2121,0x2112,0x3211,0x3213,0x3322,0x3321, - 0x3333,0x3333,0x2133,0x3333,0x1111,0x3212,0x2122,0x2133, //119 - 0x2113,0x3333,0x2121,0x2133,0x3213,0x2133,0x1133,0x3211, - 0x3333,0x3333,0x3333,0x3321,0x1213,0x3211,0x2113,0x2121, //11a - 0x1211,0x2132,0x1121,0x2132,0x2121,0x2133,0x3213,0x3213, - 0x3333,0x3333,0x1333,0x3332,0x1113,0x3321,0x2123,0x3332, //11b - 0x1113,0x3321,0x2123,0x2132,0x2133,0x2133,0x1333,0x3211, - 0x3333,0x3333,0x3333,0x3321,0x1213,0x3211,0x2113,0x2121, //11c - 0x3211,0x2132,0x2122,0x3213,0x2133,0x3323,0x1333,0x3332, - 0x3333,0x3333,0x1333,0x3332,0x1321,0x3211,0x1121,0x2122, //11d - 0x1211,0x2132,0x1321,0x2132,0x1332,0x3212,0x2133,0x3323, - 0x3333,0x3333,0x1333,0x3332,0x1333,0x3211,0x1333,0x3322, //11e - 0x1333,0x3332,0x1113,0x3321,0x1221,0x3212,0x2113,0x3323, - 0x3333,0x3333,0x1133,0x3321,0x2233,0x3332,0x2133,0x3211, //11f - 0x1213,0x2122,0x2113,0x2133,0x3223,0x2133,0x1333,0x3211, - 0x3333,0x3333,0x2133,0x3333,0x3213,0x3213,0x3213,0x3213, //120 - 0x2113,0x3213,0x3223,0x3213,0x3333,0x3321,0x1133,0x3332, - 0x3333,0x3333,0x1113,0x3211,0x2223,0x3321,0x1333,0x3211, //121 - 0x2113,0x2122,0x1221,0x2121,0x2132,0x2121,0x1333,0x3211, - 0x3333,0x3333,0x3333,0x3211,0x1213,0x3212,0x1211,0x3212, //122 - 0x2112,0x3213,0x3213,0x3213,0x3211,0x3213,0x3212,0x2133, - 0x3333,0x3333,0x1333,0x3211,0x2113,0x3321,0x1223,0x3332, //123 - 0x1133,0x3211,0x2211,0x2122,0x3322,0x2133,0x1333,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x3213,0x3311,0x1211,0x2122, //124 - 0x2112,0x2133,0x3213,0x2133,0x3211,0x2133,0x3212,0x3211, - 0x3333,0x3333,0x3333,0x3333,0x1333,0x3332,0x1333,0x3332, //125 - 0x2133,0x3333,0x1133,0x3332,0x1213,0x2132,0x3321,0x3211, - 0x3333,0x1313,0x3333,0x2323,0x2133,0x3213,0x1111,0x2132, //126 - 0x2122,0x2121,0x3213,0x3221,0x3321,0x3321,0x1132,0x3332, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x3211,0x2223,0x3321, //127 - 0x1133,0x2111,0x2233,0x3212,0x3313,0x3323,0x1123,0x3211, - 0x3333,0x1313,0x3333,0x2323,0x3333,0x3321,0x1333,0x3332, //128 - 0x2133,0x3333,0x1233,0x3333,0x2333,0x3331,0x3333,0x3312, - 0x3333,0x1313,0x3333,0x2323,0x1213,0x2111,0x3213,0x3213, //129 - 0x3213,0x3213,0x3213,0x3213,0x2123,0x3213,0x3233,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1133,0x3211,0x2233,0x2122, //12a - 0x3333,0x3213,0x3333,0x3323,0x3213,0x3333,0x1123,0x3111, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x3211,0x2223,0x3321, //12b - 0x3333,0x3212,0x3333,0x3213,0x3213,0x3323,0x1123,0x3211, - 0x3333,0x3333,0x3333,0x3131,0x3213,0x3232,0x3213,0x3333, //12c - 0x3213,0x3333,0x3213,0x3333,0x3213,0x3213,0x1133,0x3321, - 0x3333,0x1313,0x3333,0x2321,0x1113,0x2111,0x2223,0x3321, //12d - 0x1133,0x3321,0x2133,0x3321,0x1333,0x3321,0x1113,0x3332, - 0x3333,0x1313,0x3333,0x2323,0x3213,0x3321,0x1113,0x2111, //12e - 0x2211,0x3221,0x3212,0x3321,0x3213,0x2132,0x1133,0x3211, - 0x3333,0x1313,0x2133,0x2323,0x2133,0x2133,0x3233,0x3213, //12f - 0x1113,0x3111,0x1223,0x3222,0x2133,0x3333,0x1233,0x2111, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x3211,0x2123,0x3322, //130 - 0x3213,0x2111,0x3213,0x3222,0x1213,0x3332,0x2321,0x2111, - 0x3333,0x1313,0x1333,0x2322,0x1113,0x3211,0x2123,0x3322, //131 - 0x1213,0x3211,0x2113,0x2122,0x3223,0x2133,0x1333,0x3211, - 0x3333,0x1313,0x3333,0x2323,0x1133,0x3211,0x2211,0x2122, //132 - 0x3322,0x2133,0x3333,0x2133,0x3333,0x3213,0x1133,0x3321, - 0x3333,0x1313,0x3333,0x2323,0x1133,0x2111,0x2211,0x3221, //133 - 0x1322,0x3332,0x1333,0x3332,0x3333,0x3321,0x3333,0x2113, - 0x3333,0x1313,0x3213,0x2323,0x3213,0x2133,0x2133,0x3211, //134 - 0x1133,0x3322,0x2213,0x3333,0x3213,0x3333,0x1133,0x2111, - 0x3333,0x1313,0x3333,0x2323,0x1121,0x2111,0x2221,0x3212, //135 - 0x3321,0x3213,0x1321,0x3211,0x2121,0x2112,0x1332,0x3221, - 0x3333,0x1313,0x2133,0x2323,0x2111,0x3213,0x3212,0x2113, //136 - 0x3321,0x3213,0x3321,0x3213,0x3321,0x3321,0x1113,0x3332, - 0x3333,0x1313,0x1133,0x2323,0x2233,0x3321,0x3333,0x3332, //137 - 0x1213,0x3332,0x2321,0x2121,0x3321,0x2121,0x1132,0x3232, - 0x3333,0x3333,0x3333,0x3131,0x3333,0x3232,0x1133,0x3332, //138 - 0x2213,0x3321,0x3321,0x3213,0x3332,0x2133,0x3333,0x3233, - 0x3333,0x1313,0x1321,0x2321,0x2321,0x3212,0x1321,0x2111, //139 - 0x2321,0x3212,0x1321,0x3211,0x2121,0x2112,0x1213,0x3221, - 0x3333,0x3133,0x3333,0x1213,0x1121,0x2111,0x2221,0x3212, //13a - 0x3321,0x3213,0x1321,0x3211,0x2121,0x2112,0x1332,0x3221, - 0x3333,0x3133,0x2133,0x1213,0x2111,0x2123,0x3213,0x1113, //13b - 0x3321,0x2213,0x3321,0x3213,0x3321,0x3321,0x1113,0x3332, - 0x3333,0x3133,0x1133,0x1213,0x2233,0x2121,0x3333,0x3232, //13c - 0x1213,0x3332,0x3321,0x2121,0x3321,0x2121,0x1132,0x3232, - 0x3333,0x3313,0x3333,0x2121,0x3333,0x3212,0x1133,0x3322, //13d - 0x2213,0x3321,0x3321,0x3213,0x3332,0x2133,0x3333,0x3233, - 0x3333,0x3133,0x1321,0x1211,0x2321,0x2112,0x1321,0x2111, //13e - 0x2321,0x3212,0x1321,0x3211,0x2121,0x2112,0x1213,0x3221, - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, //13f - 0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333,0x3333, -}; diff --git a/build/tests/DispOwnerInfo/src/myFunc.c b/build/tests/DispOwnerInfo/src/myFunc.c deleted file mode 100644 index eaa7679d..00000000 --- a/build/tests/DispOwnerInfo/src/myFunc.c +++ /dev/null @@ -1,361 +0,0 @@ -/********************************************************************/ -/* myFunc.c */ -/* NITRO-IPL */ -/* */ -/* Copyright (C) 2003-2004 NINTENDO Co.,Ltd. */ -/********************************************************************/ -/* - •W€ƒTƒuƒ‹[ƒ`ƒ“ŒQ - - - $Log: myFunc.c,v $ - Revision 1.1.4.1 2006/02/01 06:29:37 yosiokat - mf_strcpy‚ÌŽd—l•ÏXB - - Revision 1.1 2005/02/08 04:41:25 yosiokat - V‹K’ljÁB - - Revision 1.2 2004/05/19 08:25:28 yosiokat - XVƒƒO‚̒ljÁB - - -*/ - -#include "myFunc.h" - -// define data---------------------------------- -#define CHAR_INDEX 0x200 // ƒLƒƒƒ‰ƒx[ƒX0x4000 - - -// function's prototype------------------------- -void mf_copyBuffer(u8 *srcp,u8 *dstp,u16 length); - -// extern data---------------------------------- -//extern u16 bgBakS[32*24]; // BG ƒoƒbƒNƒAƒbƒv -//extern u32 oamBakS[128*2]; // OAM ƒoƒbƒNƒAƒbƒv - - -// const data----------------------------------- -const u16 csr_charList1[] ={0x008c, 0x008c, 0x008c, 0x008c}; -const u8 str_time_period[]={" . ."}; - - -// global variable------------------------------ -MyTime myTime; -//KeyWork pad; - -// static variable------------------------------ -static u16 csr_animeCount, csr_animeCharNum; -static u16 key_rapid[4]; -static u16 blinkCount; -static u16 csr_pos_x, csr_pos_y, csr_add_y; - - -// ============================================================================ -// function's description -// ============================================================================ - -// BgBakƒIƒtƒZƒbƒg’lŽZo -__inline static u16 *calcBgOffset(u16 pos_x,u16 pos_y) -{ - return bgBakS+pos_x+(pos_y<<5); -} - - -// ƒƒCƒ“ƒƒ‚ƒŠ‚©‚ç‚Å‚à‘åä•v‚ÈŒ`Ž®‚Å‚Ì1byte‚̃f[ƒ^“Ç‚Ýo‚µB -__inline static u16 ReadByteHWBus(const void *srcp) -{ - if((int)srcp & 0x00000001) return (u16)(*(u16 *)((int)srcp ^ 0x00000001) >> 8); - else return (u16)(*(u16 *)(srcp) & 0x00ff); -} - - -// ‰Šú‰» -void mf_init(void) -{ - mf_KEYPAD_initRapid(); - mf_CSR_init(0,0,0); - mf_BLINK_initCounter(); -} -/* -// ƒL[“ü—͓ǂÝo‚µ -void mf_KEYPAD_read(void) -{ - u16 ReadData= PAD_Read(); - pad.trg = (u16)(ReadData & (ReadData ^ pad.cont)); // ƒgƒŠƒK “ü—Í - pad.cont= ReadData; // ƒxƒ^ “ü—Í -} -*/ - -// ƒL[˜AŽË“ü—͈—@‰Šú‰»i\ŽšƒL[‚Ì‚Ýj -void mf_KEYPAD_initRapid(void) -{ - u16 *krp=key_rapid; - - *krp++=0; - *krp++=0; - *krp++=0; - *krp++=0; -} - - -// ƒL[˜AŽË“ü—Íi\ŽšƒL[‚Ì‚Ýj -void mf_KEYPAD_rapid(void) -{ - u16 mask,i; - - for(i=0;i<4;i++){ - mask=(u16)(0x0001<<(i+4)); - if(pad.cont & mask){ - key_rapid[i]++; - if(key_rapid[i]==30) { - pad.trg|=mask; - key_rapid[i]=20; - } - }else{ - key_rapid[i]=0; - } - } -} - - -// 10iƒf[ƒ^•\ަ -void mf_drawDecimal(u16 pos_x,u16 pos_y,u16 color,const void *valuep,u8 drawLength,u8 size) -{ - u16 count,charCode; - u16 *dstp; - u32 mask,divisor,target; - - mask=0xff; - while(--size>0) mask=(mask<<8)|0xff; - target=(*(u32 *)valuep)&mask; - count=10; - divisor=1000000000; - dstp=calcBgOffset(pos_x,pos_y); - while(count) { - CP_SetDiv32_32(target, divisor); - if (count<=drawLength) { - charCode=(u16)(CP_GetDivResult32()+0x0030); - *dstp++ =(u16)( charCode | color | CHAR_INDEX ); - } - target=(u32)CP_GetDivRemainder32(); - CP_SetDiv32_32(divisor, 10); - divisor=(u32)CP_GetDivResult32(); - count--; - } -} - - -// 16iƒf[ƒ^•\ަ -void mf_drawHex(u16 pos_x,u16 pos_y,u16 color,const void *valuep,u8 drawLength) -{ - u16 count,charCode; - u16 *dstp=calcBgOffset(pos_x,pos_y)+drawLength-1; - - for(count=0;count>4) & 0x000f); - ((u8 *)valuep)++; - }else{ - charCode=(u16)( charCode & 0x000f); - } - if (charCode<0x000a) charCode+=0x0030; - else charCode+=0x0041-0x000a; - *dstp--=(u16)( charCode | color | CHAR_INDEX ); - } -} - - -// 1byte•¶Žš—ñƒf[ƒ^•\ަi0x00`0xff‚܂łÌ1•¶Žš‚ª1byte‚Å—Ç‚¢•¶Žš—ñ‚ð•`‰æ‚·‚é -void mf_drawString(u16 pos_x,u16 pos_y, u16 color, const u8 *strp) -{ - u16 data16; - u16 *dstp=calcBgOffset(pos_x,pos_y); - - while(1) { - data16=ReadByteHWBus(strp++); - if(data16==0) break; - *dstp++=(u16)( color | data16 | CHAR_INDEX ); - } -} - - -// 2byte•¶Žš—ñƒf[ƒ^•\ަi0x0100ˆÈ~‚Ì1•¶Žš‚É2byte•K—v‚È•¶Žš—ñ‚ð•`‰æ‚·‚é -void mf_drawString2(u16 pos_x,u16 pos_y, u16 color, const u16 *strp) -{ - u16 *dstp=calcBgOffset(pos_x,pos_y); - - while(*strp) *dstp++ = (u16)( *strp++ | color | CHAR_INDEX ); -} - - -// ‹éŒ`BGƒNƒŠƒA -void mf_clearRect(u16 pos_x,u16 pos_y,u8 height,u8 width) -{ - u16 i,j; - u16 *dstp=calcBgOffset(pos_x,pos_y); - - for(i=0;i -#include "data.h" - -// define data --------------------------------- - -// ŽžŠÔŒv‘ª\‘¢‘Ì -typedef struct { - int enable; - int frame; - int second; - int minute; - int hour; -}MyTime; - -// ƒL[ƒf[ƒ^Eƒ[ƒNƒGƒŠƒA\‘¢‘Ì -//typedef struct { -// u16 trg; // ƒgƒŠƒK“ü—Í -// u16 cont; // ƒxƒ^ “ü—Í -//}KeyWork; - - -// global variable------------------------------ -extern MyTime myTime; -//extern KeyWork pad; - - -// const data----------------------------------- -extern const u16 myChar[0x2800*8/16]; // ƒLƒƒƒ‰ƒNƒ^[ƒf[ƒ^ - - -// function------------------------------------- -extern void mf_init(void); -extern void mf_KEYPAD_read(void); -extern void mf_KEYPAD_initRapid(void); -extern void mf_KEYPAD_rapid(void); -extern void mf_drawDecimal(u16 pos_x,u16 pos_y,u16 color,const void *valuep,u8 drawLength,u8 size); -extern void mf_drawHex(u16 pos_x,u16 pos_y,u16 color,const void *valuep,u8 drawLength); -extern void mf_drawString(u16 pos_x,u16 pos_y,u16 color,const u8 *strp); -extern void mf_drawString2(u16 pos_x,u16 pos_y,u16 color,const u16 *strp); -extern void mf_clearRect(u16 pos_x,u16 pos_y,u8 height,u8 width); -extern void mf_CSR_init(u16 pos_x,u16 pos_y,u16 add_y); -extern void mf_CSR_moveAndAnime(int nowNum); -extern void mf_CSR_anime(const u16 *csr_charListp); -extern void mf_BLINK_initCounter(void); -extern void mf_BLINK_drawString(u16 pos_x,u16 pos_y,u16 color,const u8 *strp); -extern void mf_waitXframe(u16 frame); -extern void mf_TIME_init(void); -extern void mf_TIME_start(int init_flag); -extern void mf_TIME_stop(void); -extern void mf_TIME_count(void); -extern void mf_TIME_draw(u16 pos_x,u16 pos_y,u16 color); -extern u8* mf_strcpy(const u8 *str1p,u8 *str2p); -extern u8 mf_strcmp(const u8 *str1p,const u8 *str2p); - - -#ifdef __cplusplus - -#endif - -#endif // __MY_FUNC_H__ - diff --git a/build/tests/DisplaySystemInformation/ARM7/Makefile b/build/tests/DisplaySystemInformation/ARM7/Makefile deleted file mode 100644 index eab0b68e..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/Makefile +++ /dev/null @@ -1,85 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -override TWL_PLATFORM = TS -TWL_NO_STD_PCHDR = True -TARGET_CODEGEN ?= ALL - -#---------------------------------------------------------------------------- -DISP_INFO = $(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation - -SRCS = overwriteRtc.c crt0.SCR.c main.c - -TARGET_NAME = armadillo - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(TARGET_NAME).response.template - -CRT0_O = $(DISP_INFO)/ARM7/obj/ARM7-TS.LTD/Release/crt0.SCR.o - -# ƒXƒ^ƒbƒN•s‘«–hŽ~‚̈×AƒCƒ“ƒ‰ƒCƒ““WŠJ‚¹‚¸‚ɃRƒ“ƒpƒCƒ‹‚·‚é -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - - -TWL_NO_STD_PCHDR = True - -MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA -DSDK_NOINIT - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - -#-------------------------------- -# install target -#-------------------------------- -#INSTALL_TARGETS = $(BINDIR)/$(TARGET_NAME).tef \ -# $(BINDIR)/$(TARGET_NAME).TWL.FLX.sbin \ -# $(BINDIR)/$(TARGET_NAME)_defs.TWL.FLX.sbin \ -# $(BINDIR)/$(TARGET_NAME).TWL.LTD.sbin \ -# $(BINDIR)/$(TARGET_NAME)_defs.TWL.LTD.sbin - -#INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE) - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \ - $(DISP_INFO)/common/include \ - $(TWLSDK_ROOT)/build/libraries/init/common/include - - -LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ - libsdio_sp$(TWL_LIBSUFFIX).a \ - libathdrv_sp$(TWL_LIBSUFFIX).a \ - libwpa_sp$(TWL_LIBSUFFIX).a \ - libsea_sp$(TWL_LIBSUFFIX).a \ - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM7/armadillo.lcf.template b/build/tests/DisplaySystemInformation/ARM7/armadillo.lcf.template deleted file mode 100644 index 6ae1bd6b..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/armadillo.lcf.template +++ /dev/null @@ -1,400 +0,0 @@ -#--------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lcf.template -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#--------------------------------------------------------------------------- -MEMORY -{ - (RWX) : ORIGIN = , LENGTH = 0x0 > - binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - - binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - - check.WORKRAM (RWX) : ORIGIN = 0x03740000, LENGTH = 0xd0000 > workram.check -} - -KEEP_SECTION -{ - .sinit -} - -SECTIONS -{ - ############################ STATIC ################################# - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_STATIC_START =.; - OBJECT(_start,*) - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_SINIT_START =.; - - - - - - - - - - - - - WRITEW 0; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_END =.; - - SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; - __sinit__ = SDK_STATIC_SINIT_START; # for static initializer - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_STATIC_BSS_START =.; - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_BSS_END = .; - - SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; - - } >> - - ############################ STATIC_FOOTER ########################## - .binary.STATIC_FOOTER: - { - WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE - WRITEW _start_ModuleParams - ADDR(.); - WRITEW 0; # NO DIGEST - WRITEW _start_LtdModuleParams - ADDR(.); - - } > binary.STATIC_FOOTER - - ############################ OVERLAYDEFS ############################ - .F: - { - ### module information - WRITEW ADDR(.); # load address - WRITEW _start; # entry address - WRITEW SDK_STATIC_SIZE; # size of module - WRITEW _start_AutoloadDoneCallback; # callback autoload done - - } > F - - ########################### LTDAUTOLOADS ############################ - SDK_LTDAUTOLOAD_TOP_START = 0x02f00000; - SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC —̈悪–³‚¢‘ã‚í‚è‚É 4 bytes ‚̃_ƒ~[‚ªƒoƒCƒiƒŠƒtƒ@ƒCƒ‹‚Ìæ“ª‚É“ü‚é # - SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; - SDK_LTDAUTOLOAD_SIZE = 0; - SDK_LTDAUTOLOAD_BSS_END = 0x03740000; - - .binary.LTDAUTOLOAD_TOP: - { - WRITEW 0; - - } > binary.LTDAUTOLOAD_TOP - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDAUTOLOAD..START =.; - - - - - - - - - . = ALIGN(4); - SDK_STATIC_ETABLE_START =.; - __exception_table_start__ =.; - EXCEPTION - __exception_table_end__ =.; - SDK_STATIC_ETABLE_END =.; - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..SINIT_START =.; - - - - - - - - - - - - - WRITEW 0; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(4); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..END =.; - - SDK_LTDAUTOLOAD..SIZE = SDK_LTDAUTOLOAD..END - SDK_LTDAUTOLOAD..START; - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDAUTOLOAD..BSS_START =.; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..BSS_END =.; - SDK_LTDAUTOLOAD_BSS_END =.; - - SDK_LTDAUTOLOAD..BSS_SIZE = SDK_LTDAUTOLOAD..BSS_END - SDK_LTDAUTOLOAD..BSS_START; - - } >> - - - SDK_MOUNT_INFO_TABLE = SDK_LTDAUTOLOAD_BSS_END; - SDK_LTDAUTOLOAD_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400; - - ######################### LTDAUTOLOAD_INFO ########################## - .binary.LTDAUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_LTDAUTOLOAD..SIZE; - WRITEW SDK_LTDAUTOLOAD..SINIT_START; - WRITEW SDK_LTDAUTOLOAD..BSS_SIZE; - - - } > binary.LTDAUTOLOAD_INFO - - SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE; - SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO); - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO); - - ########################## LTDOVERLAYDEFS ########################### - .L: - { - ### TWL limited extended static module information - WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address - WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table - WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module - WRITEW 0; # padding - - } > L - - ############################ OTHERS ################################# - SDK_SUBPRIV_ARENA_LO = 0x02ffc000; # ƒƒCƒ“ƒƒ‚ƒŠƒAƒŠ[ƒi‚̓TƒCƒY 0 - SDK_SEA_KEY_STORE = SDK_LTDAUTOLOAD_BSS_END; - SDK_WRAM_ARENA_LO = SDK_LTDAUTOLOAD_BSS_END + 0x40; - - SDK_IRQ_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; - - .check.WORKRAM: - { - . = SDK_WRAM_ARENA_LO + 0x80 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; - - } > check.WORKRAM -} diff --git a/build/tests/DisplaySystemInformation/ARM7/armadillo.lsf b/build/tests/DisplaySystemInformation/ARM7/armadillo.lsf deleted file mode 100644 index 4519fc34..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/armadillo.lsf +++ /dev/null @@ -1,85 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lsf -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - StackSize 1024 1024 - - Library $(CRT0_O) -} - -#-------- -Ltdautoload SCRWRAM -{ - Address 0x03740000 - - Library libsubpsyscall.a - Library libsyscall_sp.twl.a - Library $(CW_LIBS) - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) - - Object * (.etable) - Object $(OBJDIR)/main.o - Object $(OBJDIR)/overwriteRtc.o - - Library libsea_sp$(LIBSUFFIX).a - Library libcrypto_sp$(LIBSUFFIX).a - - Library libos_sp$(LIBSUFFIX).a - Library libmi_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libi2c_sp$(LIBSUFFIX).a - Library libsdio_sp$(LIBSUFFIX).a - Library libpad_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a - Library libwm_sp$(LIBSUFFIX).a - Library libnwm_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwl_sp$(LIBSUFFIX).a - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a -# Library libfs_sp$(LIBSUFFIX).a -# Library libcard_sp$(LIBSUFFIX).a -# Library libcamera_sp$(LIBSUFFIX).a - - Object * (.wram) - Object * (.ltdwram) - Object * (.rsvwram) - Object * (.main) - Object * (.ltdmain) -} diff --git a/build/tests/DisplaySystemInformation/ARM7/armadillo.response.template b/build/tests/DisplaySystemInformation/ARM7/armadillo.response.template deleted file mode 100644 index b68c3564..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/armadillo.response.template +++ /dev/null @@ -1,22 +0,0 @@ - - - - - -l - - - - - - - -l - - - - - - - - -l - - diff --git a/build/tests/DisplaySystemInformation/ARM7/src/main.c b/build/tests/DisplaySystemInformation/ARM7/src/main.c deleted file mode 100644 index 219de8c5..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/src/main.c +++ /dev/null @@ -1,632 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" - -#include "address.h" - - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -/* ŠeƒXƒŒƒbƒh—Dæ“x */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // Žb’è -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_NWM_COMMAND 9 -#define THREAD_PRIO_NWM_WPA 10 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* ROM “à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh */ -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/* Žg—p DMA ”Ô† */ -#define DMA_NO_FATFS FATFS_DMA_4 // = 0 -#define DMA_NO_NWM NWMSP_DMA_7 - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(void); -static void InitializeFatfs(void); -static void InitializeNwm(OSHeapHandle hh); -static void DummyThread(void* arg); - -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig* ncdsp); -#endif -static void VBlankIntr(void); - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: ‹N“®ƒxƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void -TwlSpMain(void) -{ - OSHeapHandle heapHandle; - - // OS‰Šú‰»‚ÅARM9‚Æ“¯Šú‚·‚é‘O‚ÉSCFG‚Ìî•ñ‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚«o‚· - // ƒŒƒWƒXƒ^î•ñ‚ðƒRƒs[ - MI_CpuMove16( (void*)REG_ROM_ADDR, DISPINFO_SHARED_SCFG_REG_ADDR, DISPINFO_SHARED_SCFG_REG_SIZE ); - // WRAM‚É‘Þ”ð‚³‚ê‚Ă镪‚àƒRƒs[ - MI_CpuMove16( (void*)HWi_WSYS04_ADDR, DISPINFO_SHARED_SCFG_WRAM_ADDR, DISPINFO_SHARED_SCFG_WRAM_SIZE ); - - /* OS ‰Šú‰» */ - OS_Init(); - PrintDebugInfo(); - - /* NVRAM ‚©‚烆[ƒU[î•ñ“Ç‚Ýo‚µ */ - ReadUserInfo(); - - /* ƒq[ƒv—̈æÝ’è */ - heapHandle = InitializeAllocateSystem(); - - /* ƒ{ƒ^ƒ““ü—̓T[ƒ`‰Šú‰» */ - (void)PAD_InitXYButton(); - - /* Š„ž‚Ý‹–‰Â */ - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* Šeƒ‰ƒCƒuƒ‰ƒŠ‰Šú‰» */ - AES_Init(THREAD_PRIO_AES); // AES - SEA_Init(THREAD_PRIO_SEA); // SEA -// FS_Init(FS_DMA_NOT_USE); // FS for CARD -// FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD - InitializeFatfs(); // FAT-FS - InitializeNwm(heapHandle); // TWL –³ü - MCU_InitIrq(THREAD_PRIO_MCU); // ƒ}ƒCƒRƒ“ - CDC_InitLib(); // CODEC -// if (OSi_IsCodecTwlMode() == TRUE) -// { -// CAMERA_Init(); // ƒJƒƒ‰ -// } - SND_Init(THREAD_PRIO_SND); // ƒTƒEƒ“ƒh - SNDEX_Init(THREAD_PRIO_SNDEX); // ƒTƒEƒ“ƒhŠg’£ - RTC_Init(THREAD_PRIO_RTC); // RTC - WVR_Begin(heapHandle); // NITRO –³ü - SPI_Init(THREAD_PRIO_SPI); - - while (TRUE) - { - OS_Halt(); - - /* ƒ\ƒtƒgƒEƒFƒAƒŠƒZƒbƒg—v‹‚ÍŠÄŽ‹‚µ‚È‚¢ */ - /* AGB ƒJ[ƒgƒŠƒbƒW‚Ì‘}”²ƒ`ƒFƒbƒN‚Ís‚í‚È‚¢ */ - /* DS ƒJ[ƒh‚Ì‘}”²ƒ`ƒFƒbƒN‚Ís‚í‚È‚¢ */ - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ìî•ñ‚ðƒfƒoƒbƒOo—Í‚·‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - OS_TPrintf("ARM7: This component is running on TWL.\n"); - OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n"); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: ƒƒ‚ƒŠŠ„“–‚ăVƒXƒeƒ€‚ð‰Šú‰»‚·‚éB - Arguments: None. - Returns: OSHeapHandle - WRAM ƒAƒŠ[ƒiã‚ÉŠm•Û‚³‚ꂽƒq[ƒv‚̃nƒ“ƒhƒ‹‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static OSHeapHandle -InitializeAllocateSystem(void) -{ - OSHeapHandle hh; - void* subLo = (void*)OS_GetWramSubArenaLo(); - void* subHi = (void*)OS_GetWramSubArenaHi(); - void* privLo = (void*)OS_GetWramSubPrivArenaLo(); - void* privHi = (void*)OS_GetWramSubPrivArenaHi(); - - if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM)) - { - /* SUB ƒAƒŠ[ƒi‚ð SUBPRIV ƒAƒŠ[ƒi‚É‹zŽû */ - OS_SetWramSubArenaHi(subLo); - OS_SetWramSubPrivArenaLo(subLo); - privLo = subLo; - } - - /* ƒAƒŠ[ƒi‚ð 0 ƒNƒŠƒA */ - MI_CpuClear8(privLo, (u32)privHi - (u32)privLo); - - /* ƒq[ƒv쬉Šú‰» */ - privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1); - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi); - if (hh < 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - - /* ƒJƒŒƒ“ƒgƒq[ƒv‚ÉÝ’è */ - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - /* ƒq[ƒvƒTƒCƒY‚ÌŠm”F */ - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if (heapSize <= 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - OS_TPrintf("ARM7: heap size [%d]\n", heapSize); - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éBFATFS‰Šú‰»ŠÖ”“à‚ŃXƒŒƒbƒh‹xŽ~ - ‚·‚éˆ×A‹xŽ~’†“®ì‚·‚éƒ_ƒ~[‚̃XƒŒƒbƒh‚ð—§‚Ä‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - OSThread thread; - u32 stack[18]; - - /* ƒ_ƒ~[ƒXƒŒƒbƒhì¬ */ - OS_CreateThread(&thread, DummyThread, NULL, - (void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX); - OS_WakeupThreadDirect(&thread); - - /* FATFS ‰Šú‰» */ - /* [TODO] DMA ‚Í NOT_USE ‚̂܂܂ŗǂ¢H */ - if(!FATFS_Init(DMA_NO_FATFS, FATFS_DMA_NOT_USE, THREAD_PRIO_FATFS)) - { - /* do nothing */ - } - - /* ƒ_ƒ~[ƒXƒŒƒbƒh”jŠü */ - OS_KillThread(&thread, NULL); -} - -/*---------------------------------------------------------------------------* - Name: InitializeNwm - Description: NWMƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éB - Arguments: hh - —˜—p‰Â”\‚ȃq[ƒv‚̃nƒ“ƒhƒ‹‚ðŽw’èB - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeNwm(OSHeapHandle hh) -{ - NwmspInit nwmInit; - - /* [TODO] Šm•Û‚µ‚Ä‚¢‚éƒq[ƒv—̈悪V–³üˆêŽ®‚ª•K—v‚Æ‚µ‚Ä‚¢‚郃‚ƒŠ—ʈÈã‚©‚̃`ƒFƒbƒN‚ª•K—v */ - - nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMAND; - nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT; - nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO; - - nwmInit.dmaNo = DMA_NO_NWM; - nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.drvHeap.handle = hh; - - nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA; - nwmInit.wpaHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.wpaHeap.handle = hh; - - NWMSP_Init(&nwmInit); -} - -/*---------------------------------------------------------------------------* - Name: DummyThread - Description: FATFSƒ‰ƒCƒuƒ‰ƒŠACDCƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éÛ‚É—§‚Ä‚éƒ_ƒ~[‚Ì - ƒXƒŒƒbƒhB - Arguments: arg - Žg—p‚µ‚È‚¢B - Returns: None. - *---------------------------------------------------------------------------*/ -static void -DummyThread(void* arg) -{ -#pragma unused(arg) - while (TRUE) - { - } -} - -#ifdef WM_PRECALC_ALLOWEDCHANNEL -extern u16 WMSP_GetAllowedChannel(u16 bitField); -#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAM‚©‚烆[ƒU[î•ñ‚ð“Ç‚Ýo‚µA‹¤—L—̈æ‚É“WŠJ‚·‚éB - ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚éƒoƒbƒtƒ@‚ª—¼•û‰ó‚ê‚Ä‚¢‚éꇂÍA - ‹¤—L—̈æ‚̃†[ƒU[î•ñŠi”[ꊂðƒNƒŠƒA‚·‚éB - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // ƒIƒtƒZƒbƒg“Ç‚Ýo‚µ -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCDEx(temp); -#else - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‹N“®‚ð—}§ - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ƒjƒbƒNƒl[ƒ€‚ð•â³ - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // ƒRƒƒ“ƒg‚ð•â³ - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // ‹¤—L—̈æ‚ɃXƒgƒA - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // ‹¤—L—̈æ‚ðƒNƒŠƒA - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // –³üMACƒAƒhƒŒƒX‚ðƒ†[ƒU[î•ñ‚ÌŒã‚ë‚É“WŠJ - { - u8 wMac[6]; - - // NVRAM‚©‚çMACƒAƒhƒŒƒX‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // ‹¤—L—̈æ‚É“WŠJ - MI_CpuCopy8(wMac, p, 6); - } - -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚©‚çŽg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - { - u16 enableChannel; - u16 allowedChannel; - - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // Žg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ(MACƒAƒhƒŒƒX‚ÌŒã‚ë‚Ì2ƒoƒCƒg) - p = (u8 *)((u32)p + 6); - // ‹¤—L—̈æ‚É“WŠJ - *((u16 *)p) = allowedChannel; - } -#endif -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ƒ†[ƒU[î•ñ‚ªŠg’£ƒRƒ“ƒtƒBƒO‚ɑΉž‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚𒲸‚·‚éB - - Arguments: None. - - Returns: BOOL - Šg’£ƒ†[ƒU[î•ñ‚ª—LŒø‚ÈꇂÉTRUE‚ð•Ô‚·B - –³Œø‚Å‚ ‚éꇂÍFALSE‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM“à“o˜^ƒGƒŠƒA‚Ìî•ñ‚©‚çAŠg’£Œ¾ŒêƒR[ƒh‚̑ΉžŒ¾Œêƒrƒbƒgƒ}ƒbƒv - ‚ÉŠÖ‚·‚éî•ñ‚ð’Šo‚·‚éB - - Arguments: None. - - Returns: u16 - DSƒJ[ƒhA‚à‚µ‚­‚Í ƒ}ƒ‹ƒ`ƒu[ƒgƒoƒCƒiƒŠ‚ª‘Ήž‚µ‚Ä‚¢‚é - Œ¾ŒêƒR[ƒh‚̃rƒbƒgƒ}ƒbƒv‚ð•Ô‚·BDSƒJ[ƒh‚ªŠg’£Œ¾Œê - ƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡‚Í 0 ‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM“à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh‚ðŠm”F - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - 3: ƒAƒvƒŠ‚Ì‹N“®‚ð—}§‚·‚ׂ«B - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚é‚© - if (IsValidConfigEx()) - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚éê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // Šg’£ƒf[ƒ^—p CRC ‚ª³‚µ‚­Aݒ茾ŒêƒR[ƒh‚ª‘ΉžŒ¾ŒêƒR[ƒh‚Ɋ܂܂ê‚éꇂɳ“–‚Æ”»’f - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // Šg’£Œ¾ŒêƒR[ƒh‚Å’Ê팾ŒêƒR[ƒh‚ðã‘‚« - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚邪A - // IPL2‚̑ΉžŒ¾ŒêƒR[ƒh‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªŠÜ‚Ü‚ê‚È‚¢ê‡‚Í‹N“®‚ð—}§ - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚éꇂ͋N“®‚ð—}§ - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - crc_flag |= (1 << i); - } - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // Šeƒ~ƒ‰[ƒf[ƒ^‚ÌCRC & saveCount³“–«ƒ`ƒFƒbƒN - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC‚ª³‚µ‚­AsaveCount’l‚ª0x80–¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’fB - crc_flag |= (1 << i); - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ƒuƒ‰ƒ“ƒNŠ„‚螂݃xƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -extern void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c b/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c deleted file mode 100644 index af04b9d0..00000000 --- a/build/tests/DisplaySystemInformation/ARM7/src/overwriteRtc.c +++ /dev/null @@ -1,67 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - File: overwriteRtc.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include - -extern BOOL RTC_IsAvailablePxiCommand(u16 command); - -/*---------------------------------------------------------------------------* - Name: RTC_IsAvailablePxiCommand - - Description: PXI ƒRƒ}ƒ“ƒh‚ª—LŒø‚È RTC ‘€ìƒRƒ}ƒ“ƒh‚Å‚ ‚é‚©‚Ç‚¤‚©’²¸‚·‚éB - - Arguments: command - ’²¸‚·‚éƒRƒ}ƒ“ƒhB - - Returns: BOOL - —LŒø‚ȃRƒ}ƒ“ƒh‚Å‚ ‚éê‡‚É TRUE ‚ð•Ô‚·Bˆ—‚Å‚«‚È - ‚¢–³Œø‚ȃRƒ}ƒ“ƒh‚Å‚ ‚éê‡‚É‚Í FALSE ‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -BOOL -RTC_IsAvailablePxiCommand(u16 command) -{ - switch (command) - { - case RTC_PXI_COMMAND_RESET: - case RTC_PXI_COMMAND_SET_HOUR_FORMAT: - case RTC_PXI_COMMAND_READ_DATETIME: - case RTC_PXI_COMMAND_READ_DATE: - case RTC_PXI_COMMAND_READ_TIME: - case RTC_PXI_COMMAND_READ_PULSE: - case RTC_PXI_COMMAND_READ_ALARM1: - case RTC_PXI_COMMAND_READ_ALARM2: - case RTC_PXI_COMMAND_READ_STATUS1: - case RTC_PXI_COMMAND_READ_STATUS2: - case RTC_PXI_COMMAND_READ_ADJUST: - case RTC_PXI_COMMAND_READ_FREE: - case RTC_PXI_COMMAND_WRITE_DATETIME: - case RTC_PXI_COMMAND_WRITE_DATE: - case RTC_PXI_COMMAND_WRITE_TIME: - case RTC_PXI_COMMAND_WRITE_PULSE: - case RTC_PXI_COMMAND_WRITE_ALARM1: - case RTC_PXI_COMMAND_WRITE_ALARM2: - case RTC_PXI_COMMAND_WRITE_STATUS1: - case RTC_PXI_COMMAND_WRITE_STATUS2: - case RTC_PXI_COMMAND_WRITE_ADJUST: - case RTC_PXI_COMMAND_WRITE_FREE: - return TRUE; - } - return FALSE; -} - diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/Makefile b/build/tests/DisplaySystemInformation/ARM7_armadillo/Makefile deleted file mode 100644 index 16d7b87c..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -override TWL_PLATFORM = TS -TWL_NO_STD_PCHDR = True -TARGET_CODEGEN ?= ALL - -#---------------------------------------------------------------------------- -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SRCS = overwriteRtc.c crt0.SCR.c main.c - -TARGET_NAME = armadillo - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(TARGET_NAME).response.template - -CRT0_O = crt0.SCR.o - -# ƒXƒ^ƒbƒN•s‘«–hŽ~‚̈×AƒCƒ“ƒ‰ƒCƒ““WŠJ‚¹‚¸‚ɃRƒ“ƒpƒCƒ‹‚·‚é -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - - -TWL_NO_STD_PCHDR = True - -MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA -DSDK_NOINIT - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - -#-------------------------------- -# install target -#-------------------------------- -#INSTALL_TARGETS = $(BINDIR)/$(TARGET_NAME).tef \ -# $(BINDIR)/$(TARGET_NAME).TWL.FLX.sbin \ -# $(BINDIR)/$(TARGET_NAME)_defs.TWL.FLX.sbin \ -# $(BINDIR)/$(TARGET_NAME).TWL.LTD.sbin \ -# $(BINDIR)/$(TARGET_NAME)_defs.TWL.LTD.sbin - -#INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE) - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include \ - $(DISP_INFO)/common/include \ - $(TWLSDK_ROOT)/build/libraries/init/common/include - -LLIBRARY_DIRS += $(DISP_INFO)/ARM7_armadillo/obj/$(TWL_BUILDTYPE_ARM7) - -LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ - libsdio_sp$(TWL_LIBSUFFIX).a \ - libathdrv_sp$(TWL_LIBSUFFIX).a \ - libwpa_sp$(TWL_LIBSUFFIX).a \ - libsea_sp$(TWL_LIBSUFFIX).a \ - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lcf.template b/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lcf.template deleted file mode 100644 index 6ae1bd6b..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lcf.template +++ /dev/null @@ -1,400 +0,0 @@ -#--------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lcf.template -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#--------------------------------------------------------------------------- -MEMORY -{ - (RWX) : ORIGIN = , LENGTH = 0x0 > - binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - - binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - - check.WORKRAM (RWX) : ORIGIN = 0x03740000, LENGTH = 0xd0000 > workram.check -} - -KEEP_SECTION -{ - .sinit -} - -SECTIONS -{ - ############################ STATIC ################################# - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_STATIC_START =.; - OBJECT(_start,*) - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_SINIT_START =.; - - - - - - - - - - - - - WRITEW 0; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_END =.; - - SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; - __sinit__ = SDK_STATIC_SINIT_START; # for static initializer - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_STATIC_BSS_START =.; - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_BSS_END = .; - - SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; - - } >> - - ############################ STATIC_FOOTER ########################## - .binary.STATIC_FOOTER: - { - WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE - WRITEW _start_ModuleParams - ADDR(.); - WRITEW 0; # NO DIGEST - WRITEW _start_LtdModuleParams - ADDR(.); - - } > binary.STATIC_FOOTER - - ############################ OVERLAYDEFS ############################ - .F: - { - ### module information - WRITEW ADDR(.); # load address - WRITEW _start; # entry address - WRITEW SDK_STATIC_SIZE; # size of module - WRITEW _start_AutoloadDoneCallback; # callback autoload done - - } > F - - ########################### LTDAUTOLOADS ############################ - SDK_LTDAUTOLOAD_TOP_START = 0x02f00000; - SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC —̈悪–³‚¢‘ã‚í‚è‚É 4 bytes ‚̃_ƒ~[‚ªƒoƒCƒiƒŠƒtƒ@ƒCƒ‹‚Ìæ“ª‚É“ü‚é # - SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; - SDK_LTDAUTOLOAD_SIZE = 0; - SDK_LTDAUTOLOAD_BSS_END = 0x03740000; - - .binary.LTDAUTOLOAD_TOP: - { - WRITEW 0; - - } > binary.LTDAUTOLOAD_TOP - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDAUTOLOAD..START =.; - - - - - - - - - . = ALIGN(4); - SDK_STATIC_ETABLE_START =.; - __exception_table_start__ =.; - EXCEPTION - __exception_table_end__ =.; - SDK_STATIC_ETABLE_END =.; - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..SINIT_START =.; - - - - - - - - - - - - - WRITEW 0; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(4); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..END =.; - - SDK_LTDAUTOLOAD..SIZE = SDK_LTDAUTOLOAD..END - SDK_LTDAUTOLOAD..START; - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDAUTOLOAD..BSS_START =.; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..BSS_END =.; - SDK_LTDAUTOLOAD_BSS_END =.; - - SDK_LTDAUTOLOAD..BSS_SIZE = SDK_LTDAUTOLOAD..BSS_END - SDK_LTDAUTOLOAD..BSS_START; - - } >> - - - SDK_MOUNT_INFO_TABLE = SDK_LTDAUTOLOAD_BSS_END; - SDK_LTDAUTOLOAD_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400; - - ######################### LTDAUTOLOAD_INFO ########################## - .binary.LTDAUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_LTDAUTOLOAD..SIZE; - WRITEW SDK_LTDAUTOLOAD..SINIT_START; - WRITEW SDK_LTDAUTOLOAD..BSS_SIZE; - - - } > binary.LTDAUTOLOAD_INFO - - SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE; - SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO); - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO); - - ########################## LTDOVERLAYDEFS ########################### - .L: - { - ### TWL limited extended static module information - WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address - WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table - WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module - WRITEW 0; # padding - - } > L - - ############################ OTHERS ################################# - SDK_SUBPRIV_ARENA_LO = 0x02ffc000; # ƒƒCƒ“ƒƒ‚ƒŠƒAƒŠ[ƒi‚̓TƒCƒY 0 - SDK_SEA_KEY_STORE = SDK_LTDAUTOLOAD_BSS_END; - SDK_WRAM_ARENA_LO = SDK_LTDAUTOLOAD_BSS_END + 0x40; - - SDK_IRQ_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; - - .check.WORKRAM: - { - . = SDK_WRAM_ARENA_LO + 0x80 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; - - } > check.WORKRAM -} diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lsf b/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lsf deleted file mode 100644 index 4519fc34..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.lsf +++ /dev/null @@ -1,85 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lsf -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - StackSize 1024 1024 - - Library $(CRT0_O) -} - -#-------- -Ltdautoload SCRWRAM -{ - Address 0x03740000 - - Library libsubpsyscall.a - Library libsyscall_sp.twl.a - Library $(CW_LIBS) - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) - - Object * (.etable) - Object $(OBJDIR)/main.o - Object $(OBJDIR)/overwriteRtc.o - - Library libsea_sp$(LIBSUFFIX).a - Library libcrypto_sp$(LIBSUFFIX).a - - Library libos_sp$(LIBSUFFIX).a - Library libmi_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libi2c_sp$(LIBSUFFIX).a - Library libsdio_sp$(LIBSUFFIX).a - Library libpad_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a - Library libwm_sp$(LIBSUFFIX).a - Library libnwm_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwl_sp$(LIBSUFFIX).a - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a -# Library libfs_sp$(LIBSUFFIX).a -# Library libcard_sp$(LIBSUFFIX).a -# Library libcamera_sp$(LIBSUFFIX).a - - Object * (.wram) - Object * (.ltdwram) - Object * (.rsvwram) - Object * (.main) - Object * (.ltdmain) -} diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.response.template b/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.response.template deleted file mode 100644 index b68c3564..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/armadillo.response.template +++ /dev/null @@ -1,22 +0,0 @@ - - - - - -l - - - - - - - -l - - - - - - - - -l - - diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/crt0.SCR.c b/build/tests/DisplaySystemInformation/ARM7_armadillo/src/crt0.SCR.c deleted file mode 100644 index 52d0ff28..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/crt0.SCR.c +++ /dev/null @@ -1,714 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - ARM7.TWL - File: crt0.SCR.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#ifndef SDK_FINALROM -#include -#endif -#include "boot_sync.h" - -/*---------------------------------------------------------------------------*/ -void _start(void); -void _start_AutoloadDoneCallback(void* argv[]); - -/*---------------------------------------------------------------------------* - ŠO•”ŽQÆ - *---------------------------------------------------------------------------*/ -/* ƒŠƒ“ƒJƒXƒNƒŠƒvƒg‚É‚æ‚è’è‹`‚³‚ê‚éƒVƒ“ƒ{ƒ‹ŽQÆ */ -extern void SDK_AUTOLOAD_LIST(void); -extern void SDK_AUTOLOAD_LIST_END(void); -extern void SDK_AUTOLOAD_START(void); -extern void SDK_STATIC_START(void); -extern void SDK_STATIC_BSS_START(void); -extern void SDK_STATIC_BSS_END(void); -extern void SDK_LTDAUTOLOAD_LIST(void); -extern void SDK_LTDAUTOLOAD_LIST_END(void); -extern void SDK_LTDAUTOLOAD_START(void); -extern void SDK_WRAM_ARENA_LO(void); - -/* ŠO•”ŠÖ”ŽQÆ */ -extern void OS_IrqHandler(void); -#ifndef SDK_NOINIT -extern void _fp_init(void); -extern void __call_static_initializers(void); -#endif - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -#define SDK_NITROCODE_LE 0x2106c0de -#define SDK_NITROCODE_BE 0xdec00621 -#define SDK_TWLCODE_LE 0x6314c0de -#define SDK_TWLCODE_BE 0xdec01463 - -/* .rodata ƒZƒNƒVƒ‡ƒ“‚É”z’u‚·‚éƒ[ƒh‚É•K—v‚Èî•ñ */ -void* const _start_ModuleParams[] = -{ - (void*)0, - (void*)0, - (void*)0, - (void*)SDK_STATIC_BSS_START, - (void*)SDK_STATIC_BSS_END, - (void*)0, - (void*)0, - (void*)SDK_NITROCODE_BE, - (void*)SDK_NITROCODE_LE, -}; - -void* const _start_LtdModuleParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LIST, - (void*)SDK_LTDAUTOLOAD_LIST_END, - (void*)SDK_LTDAUTOLOAD_START, - (void*)0, - (void*)SDK_TWLCODE_BE, - (void*)SDK_TWLCODE_LE, -}; - -/*---------------------------------------------------------------------------* - Name: ShakeHand - Description: ARM9 ‚Ì ShakeHand ŠÖ”‚Æ“¯Šú‚ðŽæ‚éB - ƒƒCƒ“ƒƒ‚ƒŠ‚łȂ¢ƒƒ‚ƒŠ‹óŠÔ‚ÅŽÀs‚³‚ê‚é•K—v‚ª‚ ‚éB - Arguments: r0 - ARM9 “¯Šú—p•Ï”‚ւ̃|ƒCƒ“ƒ^B - r1 - ARM7 “¯Šú—p•Ï”‚ւ̃|ƒCƒ“ƒ^B - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_ShakeHand[10] = -{ - 0xe1d020b0, /* ldrh r2, [r0] ; “¯Šú•Ï”‚X‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe1d130b0, /* ldrh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe2833001, /* @1: add r3, r3, #1 ; “¯Šú•Ï”‚V ++ */ - 0xe1c130b0, /* strh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚­ */ - 0xe1d0c0b0, /* ldrh r12, [r0] ; “¯Šú•Ï”‚X‚ÌŒ»ó‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe152000c, /* cmp r2, r12 ; “¯Šú•Ï”‚X‚̕ω»‚ð”»’è‚·‚é */ - 0x0afffffa, /* beq @1 ; •ω»‚µ‚Ä‚¢‚È‚¯‚ê‚΃‹[ƒv */ - 0xe2833001, /* add r3, r3, #1 ; “¯Šú•Ï”‚V ++ */ - 0xe1c130b0, /* strh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚­ */ - 0xe12fff1e /* bx lr ; ƒnƒ“ƒhƒVƒFƒCƒNŠ®—¹ */ -}; - -/*---------------------------------------------------------------------------* - Name: Stop - Description: ƒvƒƒOƒ‰ƒ€‚ð’âŽ~‚·‚éB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_Stop[2] = -{ - 0xef000006, /* @1: swi #6 ; SVC_Halt */ - 0xeafffffd /* b @1 ; ƒ‹[ƒv */ -}; - -/*---------------------------------------------------------------------------* - Name: GotoMain - Description: ARM9 ‚É“Á’è‚Ìó‘ԂɂȂÁ‚½‚±‚Æ‚ð“`‚¦‚½ã‚ÅAMain ŠÖ”‚ÖƒWƒƒƒ“ƒv - ‚·‚éB“¯Žž‚ÉŽw’èƒoƒbƒtƒ@‚Ì 0 ƒNƒŠƒA‚ðs‚¤BƒXƒ^ƒbƒN“à‚Å“®ì‚³‚¹ - ‚邱‚Æ‚ð‘z’肵‚Ä‚¢‚éˆ×AƒXƒ^ƒbƒN‚ðˆêØŽg—p‚µ‚È‚¢B - Arguments: r0 - 0 ƒNƒŠƒA‚·‚éƒoƒbƒtƒ@‚Ìæ“ªƒAƒhƒŒƒXB - 4 ƒoƒCƒgƒAƒ‰ƒCƒ“‚³‚ꂽƒAƒhƒŒƒX‚Å‚ ‚é•K—v‚ª‚ ‚éB - r1 - ãˆÊ 8 bit: ARM9 ‚É“`‚¦‚éƒtƒF[ƒY”Ô†B - ‰ºˆÊ 24 bit: 0 ƒNƒŠƒA‚·‚éƒoƒbƒtƒ@‚̃TƒCƒYB - 4 ‚Ì”{”‚Å‚ ‚é•K—v‚ª‚ ‚éB - r2 - “¯Šú—pƒtƒF[ƒYŠÇ—•Ï”‚ւ̃|ƒCƒ“ƒ^B - r3 - Main ŠÖ”‚̃|ƒCƒ“ƒ^BMain ŠÖ”‚ª Thumb ƒR[ƒh‚Å‚ ‚éê‡ - ‚É‚ÍAbx –½—߂ŃWƒƒƒ“ƒv‚·‚邽‚ßʼnºˆÊƒrƒbƒg‚ª 1 ‚ɂȂÁ‚Ä - ‚¢‚é•K—v‚ª‚ ‚éB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_GotoMain[10] = -{ - 0xe59fc01c, /* @1: ldr r12, [pc, #28] ; ‰ºˆÊ 24 bit ƒ}ƒXƒN‚ð—pˆÓ */ - 0xe111000c, /* tst r1, r12 ; ƒNƒŠƒAƒoƒbƒtƒ@ŽcƒTƒCƒY‚ðƒ`ƒFƒbƒN */ - 0xe3a0c000, /* mov r12, #0 ; ƒNƒŠƒA—p•Ï”‚ð—pˆÓ */ - 0x1480c004, /* strne r12, [r0], #4 ; 4 ƒoƒCƒgƒNƒŠƒA */ - 0x12411004, /* subne r1, r1, #4 ; ƒNƒŠƒAƒoƒbƒtƒ@ŽcƒTƒCƒY -= 4 */ - 0x1afffff9, /* bne @1 ; ŽcƒTƒCƒY‚ª 0 ‚ɂȂé‚܂Ń‹[ƒv */ - 0xe1a01c21, /* mov r1, r1, LSR #24 ; ƒtƒF[ƒYŠÇ—•Ï”‚ÌXV’l‚ð—pˆÓ */ - 0xe1c210b0, /* strh r1, [r2] ; ƒtƒF[ƒYŠÇ—•Ï”‚ðXV */ - 0xe12fff13, /* bx r3 ; Main ŠÖ”‚ÖƒWƒƒƒ“ƒv */ - 0x00fffffc /* 0x00fffffc */ -}; - - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”ƒvƒƒgƒ^ƒCƒv - *---------------------------------------------------------------------------*/ -static void INITi_CheckSysConfig(void); -static void INITi_DetectMainMemorySize(void); -static void INITi_Stop(void); -static void INITi_DoAutoload(void); -#ifndef SDK_NOINIT -static void INITi_ShelterStaticInitializer(u32* ptr); -static void INITi_CallStaticInitializers(void); -#endif - -static void* INITi_Copy32(void* dst, void* src, u32 size); -static void* INITi_Fill32(void* dst, u32 value, u32 size); - -/*---------------------------------------------------------------------------*/ -#include - -/*---------------------------------------------------------------------------* - Name: _start - Description: ‹N“®ƒxƒNƒ^B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start(void) -{ -@000: - /* Š„ž‚݋֎~ */ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - - /* SCFG Ý’è‚ðŠm”F */ - bl INITi_CheckSysConfig - - /* ƒ‰ƒ“ƒ`ƒƒ[‚©‚ç“n‚³‚ꂽî•ñ‚ð‘Þ”ð */ - ldr r3, =SDK_WRAM_ARENA_LO - sub r2, r3, #0x40 - ldr r1, =HW_LAUNCHER_DELIVER_PARAM_BUF -@001: - cmp r2, r3 - ldrlt r0, [r1], #4 - strlt r0, [r2], #4 - blt @001 - - /* ƒnƒ“ƒhƒVƒFƒCƒN—pƒ}ƒCƒNƒƒR[ƒh‚ðê—p WRAM ‚ɃRƒs[ */ - ldr r1, =microcode_ShakeHand - ldr r2, =HW_PRV_WRAM - add r3, r2, #40 // sizeof(microcode_ShakeHand) -@002: ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @002 - - /* ê—p WRAM ã‚̃R[ƒh‚Å ARM9 ‚ƃnƒ“ƒhƒVƒFƒCƒN */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 - -@010: - /* ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^Ý’è */ - mov r0, #HW_PSR_SVC_MODE // SuperVisor mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_SVC_STACK_END - mov r0, #HW_PSR_IRQ_MODE // IRQ mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r1, sp, r1 - sub sp, sp, #4 // 4 bytes for IRQ stack check code - mov r0, #HW_PSR_SYS_MODE // System mode - msr cpsr_csfx, r0 - sub sp, r1, #4 // 4 bytes for SYS stack check code - - /* ƒXƒ^ƒbƒN—̈æ‚ðƒNƒŠƒA */ - ldr r0, =SDK_SYS_STACKSIZE - sub r1, r1, r0 - ldr r2, =HW_PRV_WRAM_IRQ_STACK_END - mov r0, #0 -@011: cmp r1, r2 - strlt r0, [r1], #4 - blt @011 - - /* ƒvƒŠƒ[ƒhƒpƒ‰ƒ[ƒ^ƒAƒhƒŒƒX‚ªŠi”[‚³‚ê‚Ä‚¢‚È‚¢ê‡‚ÍAƒfƒtƒHƒ‹ƒg’l‚ðƒZƒbƒg */ - ldr r0, =HW_PRELOAD_PARAMETER_ADDR - ldr r1, [r0] - cmp r1, #0 - ldreq r1, =HW_PARAM_TWL_SETTINGS_DATA_DEFAULT - streq r1, [r0] - - /* Autoload ‚ðŽÀŽ{ */ - bl INITi_DoAutoload - - /* STATIC ƒZƒOƒƒ“ƒg‚Ì .bss ƒZƒNƒVƒ‡ƒ“‚ð 0 ƒNƒŠƒA */ - mov r1, #0 // r1 = clear value for STATIC bss section - ldr r3, =_start_ModuleParams - ldr r0, [r3, #12] // r0 = start address of STATIC bss section - ldr r2, [r3, #16] - subs r2, r2, r0 // r2 = size of STATIC bss section - blgt INITi_Fill32 - - /* ƒƒCƒ“ƒƒ‚ƒŠƒTƒCƒY‚𒲸 */ - bl INITi_DetectMainMemorySize - -#ifndef SDK_FINALROM - /* ƒfƒoƒbƒOo—̓EƒBƒ“ƒhƒE‚ðÝ’è */ - ldr r1, =HW_PRINT_OUTPUT_ARM9 - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9 - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7 << 8) - strh r0, [r1] - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9ERR - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7ERR << 8) - strh r0, [r1, #2] -#endif - - /* IRQ Š„ž‚݃xƒNƒ^Ý’è */ - ldr r1, =HW_INTR_VECTOR_BUF - ldr r0, =OS_IrqHandler - str r0, [r1] - -#ifndef SDK_NOINIT - /* c++ —p‰Šú‰» */ - bl _fp_init - bl TwlSpStartUp - bl __call_static_initializers - bl INITi_CallStaticInitializers -#endif - -@0f0: - /* Main ŠÖ”‚ւ̃Wƒƒƒ“ƒv—pƒ}ƒCƒNƒƒR[ƒh‚ðƒXƒ^ƒbƒN‚Ì’ê‚ɃRƒs[ */ - ldr r1, =microcode_GotoMain - sub r2, sp, #40 - mov r3, sp -@0f1: cmp r2, r3 - ldrlt r0, [r1], #4 - strlt r0, [r2], #4 - blt @0f1 - - /* ƒ}ƒCƒNƒƒR[ƒh‚ðŒo—R‚µ‚Ä Main ŠÖ”‚ÖƒWƒƒƒ“ƒv */ - ldr r0, =SDK_STATIC_START - bic r0, r0, #0x00000003 - ldr r1, =SDK_STATIC_BSS_END - sub r1, r1, r0 - add r1, r1, #3 - bic r1, r1, #0x00000003 - bic r1, r1, #0xff000000 - mov r2, #BOOT_SYNC_PHASE_4 - mov r2, r2, LSL #24 - orr r1, r1, r2 - ldr r2, =HW_BOOT_SYNC_PHASE - ldr r3, =TwlSpMain - ldr lr, =HW_RESET_VECTOR - sub r12, sp, #40 - bx r12 - /* never return */ -} - -/*---------------------------------------------------------------------------* - Name: _start_AutoloadDoneCallback - Description: ƒI[ƒgƒ[ƒhŠ®—¹ƒR[ƒ‹ƒoƒbƒNB - Arguments: argv - ƒI[ƒgƒ[ƒhƒpƒ‰ƒ[ƒ^‚ð•ÛŽ‚µ‚Ä‚¢‚é”z—ñB - argv[0] = SDK_AUTOLOAD_LIST - argv[1] = SDK_AUTOLOAD_LIST_END - argv[2] = SDK_AUTOLOAD_START - argv[3] = SDK_STATIC_BSS_START - argv[4] = SDK_STATIC_BSS_END - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start_AutoloadDoneCallback(void* argv[]) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CheckSysConfig - Description: SCFG ŠÖ˜A I/O ƒŒƒWƒXƒ^‚Ì“à—e‚ðŠm”F‚·‚éB - A7-SCFG ƒuƒƒbƒN‚ªƒAƒNƒZƒX—LŒø‚ÈꇂɂÍAƒ[ƒ_[‚ªs‚¤Ý’èˆ - —‚ð‘ãs‚µ‚½ã‚ŃAƒNƒZƒX‚𖳌ø‰»‚·‚éB - ARM7 ê—p WRAM “à‚Ƀ[ƒ_[‚ª“WŠJ‚µ‚Ä‚¢‚é I/O ƒŒƒWƒXƒ^î•ñ‚ðŠm - ”F‚µ‚½ã‚ŃƒCƒ“ƒƒ‚ƒŠã‚Ì‹¤—L—̈æ‚ɃRƒs[‚·‚éB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_CheckSysConfig(void) -{ - /* A7-SCFG ‚̃AƒNƒZƒX‰Â”Û”»’è */ - ldr r1, =REG_EXT_ADDR - ldr r0, [r1] - ldr r2, =HW_PRV_WRAM_SYSRV - tst r0, #REG_SCFG_EXT_CFG_MASK - beq @invalid - - /* ƒNƒƒbƒN‹Ÿ‹‹î•ñAJTAGî•ñ‚ðWRAM‚É“WŠJ */ -/* ldr r3, =REG_JTAG_ADDR // SCFG-JTAG - ldrh r1, [r3] - and r0, r1, #(REG_SCFG_JTAG_CPUJE_MASK | REG_SCFG_JTAG_ARM7SEL_MASK) - and r3, r1, #REG_SCFG_JTAG_DSPJE_MASK - orr r0, r0, r3, LSR #(REG_SCFG_JTAG_DSPJE_SHIFT - HWi_WSYS09_JTAG_DSPJE_SHIFT) - - ldr r3, =REG_CLK_ADDR - ldrh r1, [r3] - and r3, r1, #(REG_SCFG_CLK_AESHCLK_MASK | REG_SCFG_CLK_SD2HCLK_MASK | REG_SCFG_CLK_SD1HCLK_MASK) - orr r0, r0, r3, LSL #(HWi_WSYS09_CLK_SD1HCLK_SHIFT - REG_SCFG_CLK_SD1HCLK_SHIFT) - and r3, r1, #(REG_SCFG_CLK_SNDMCLK_MASK | REG_SCFG_CLK_WRAMHCLK_MASK) - orr r0, r0, r3, LSR #(REG_SCFG_CLK_WRAMHCLK_SHIFT - HWi_WSYS09_CLK_WRAMHCLK_SHIFT) - - strb r0, [r2, #HWi_WSYS09_WRAMOFFSET] -*/ - - /* A7-SCFG ƒuƒƒbƒN‚ւ̃AƒNƒZƒX‚𖳌ø‰» */ -// ldr r1, =REG_EXT_ADDR -// ldr r0, [r1] -// bic r0, r0, #REG_SCFG_EXT_CFG_MASK -// str r0, [r1] - -@invalid: - /* ROM Ý’èANITRO –³üÝ’è“à—e‚ðŠm”F */ - ldrb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - and r0, r0, #(HWi_WSYS08_ROM_ARM7RSEL_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK | HWi_WSYS08_ROM_ARM9SEC_MASK) - cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK - blne INITi_Stop - - /* SCFG ƒŒƒWƒXƒ^Ý’èî•ñ‚ð‹¤—L—̈æ‚ɃRƒs[ */ - ldr r2, =HW_PRV_WRAM_SYSRV - ldr r3, =HW_SYS_CONF_BUF - ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] - str r0, [r3, #HWi_WSYS04_OFFSET] - ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] - strh r0, [r3, #HWi_WSYS08_OFFSET] - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_DetectMainMemorySize - Description: ƒƒCƒ“ƒƒ‚ƒŠƒTƒCƒY‚𒲸‚·‚éB - ’²¸Œ‹‰Ê‚Í (u16*)HW_MMEMCHECER_SUB ‚ÉŠi”[‚³‚ê‚éB - Ši”[‚³‚ê‚é’l‚Í [OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32B] - NOTE: ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚ª NITRO ‚ÌꇂÍl—¶‚µ‚Ä‚¢‚È‚¢B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -#define OSi_IMAGE_DIFFERENCE2 0xb000000 -#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK) -#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK) - -#define OSi_CHECKNUM1 0x55 -#define OSi_CHECKNUM2 0xaa -#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz) - -static asm void -INITi_DetectMainMemorySize(void) -{ - ldr r2, =HW_MMEMCHECKER_SUB - add r3, r2, #OSi_IMAGE_DIFFERENCE2 - mov r0, #OS_CONSOLE_SIZE_16MB - - /* OSi_CHECKNUM1 (0x55) ‘‚«ž‚݃eƒXƒg */ - mov r1, #OSi_CHECKNUM1 - strb r1, [r3] - - ldr r2, =OSi_100usWAIT -@1 subs r2, r2, #4 - bcs @1 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM1 - bne @check_smix - - /* OSi_CHECKNUM2 (0xaa) ‚ð ‘‚«ž‚݃eƒXƒg */ - mov r1, #OSi_CHECKNUM2 - strb r1, [r3] - - ldr r2, =OSi_100usWAIT -@2 subs r2, r2, #4 - bcs @2 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM2 - moveq r0, #OS_CONSOLE_SIZE_32MB - -@check_smix: - /* SMIX ƒŒƒWƒXƒ^‚𒲸 */ - ldr r3, =REG_SMX_CNT_ADDR - ldrh r1, [r3] - and r1, r1, #OSi_DETECT_NITRO_MASK - cmp r1, #OSi_DETECT_NITRO_VAL - orreq r0, r0, #OS_CHIPTYPE_SMX_MASK - - /* ’²¸Œ‹‰Ê‚ðŠi”[ */ - ldr r2, =HW_MMEMCHECKER_SUB - strb r0, [r2] - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Stop - Description: ƒvƒƒOƒ‰ƒ€‚ð’âŽ~‚·‚éBARM7 ê—p WRAM ‚É Halt ‚ðŒJ‚è•Ô‚·ƒ‹[ƒv - ŠÖ”‚ðƒRƒs[‚µAƒRƒs[‚µ‚½ŠÖ”‚ðŽÀs‚·‚éB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_Stop(void) -{ - ldr r1, =microcode_Stop - ldr r2, =HW_PRV_WRAM - add r3, r2, #8 // sizeof(microcode_Stop) -@copy_loop: - ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @copy_loop - -@stop_loop: - ldr r0, =HW_PRV_WRAM - mov lr, pc - bx r0 - b @stop_loop - /* never return */ -} - -/*---------------------------------------------------------------------------* - Name: INITi_DoAutoload - Description: ƒŠƒ“ƒNî•ñ‚ɉˆ‚Á‚ÄAŠeƒI[ƒgƒ[ƒhƒuƒƒbƒN‚̌Œèƒf[ƒ^•”‚Ì“WŠJ - ‹y‚ѕϔ•”‚Ì 0 ƒNƒŠƒA‚ðs‚¤B - NITRO ŒÝŠ·ƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg‚Í‘¶Ý‚¹‚¸ATWL ê—pƒZƒOƒƒ“ƒg - ‚݂̂ª‘¶Ý‚·‚邯‚¢‚¤‘O’ñB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ - -static asm void -INITi_DoAutoload(void) -{ - stmfd sp!, {lr} - - /* ƒI[ƒgƒ[ƒh‚ðŽÀŽ{ */ -@000: - ldr r0, =_start_LtdModuleParams - ldr r12, [r0] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_LTDAUTOLOAD_START -@001: - cmp r12, r3 - bge @010 - /* ŒÅ’èƒZƒNƒVƒ‡ƒ“ */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer ƒe[ƒuƒ‹ */ - ldr r0, [r12], #4 -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss ƒZƒNƒVƒ‡ƒ“ */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = sizeo of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} - b @001 - - /* ƒI[ƒgƒ[ƒhƒŠƒXƒgEƒI[ƒgƒ[ƒhŒ³ƒoƒbƒtƒ@‚ðƒNƒŠƒA */ -@010: - ldr r1, =_start_LtdModuleParams - ldr r12, [r1] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r1, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r0, [r1, #8] // r0 = SDK_LTDAUTOLOAD_START -@011: - cmp r12, r3 - bge @0f0 - mov r1, #0 // r1 = clear value - str r1, [r12], #4 - ldr r2, [r12] // r2 = size of fixed section - str r1, [r12], #4 - str r1, [r12], #4 - str r1, [r12], #4 - bl INITi_Fill32 - b @011 - -@0f0: - /* ƒI[ƒgƒ[ƒhŠ®—¹ƒR[ƒ‹ƒoƒbƒNŒÄ‚Ño‚µ */ - ldr r0, =_start_ModuleParams - ldr r1, =_start_LtdModuleParams - ldmfd sp!, {lr} - b _start_AutoloadDoneCallback -} - -#ifndef SDK_NOINIT - -//static asm void -/*---------------------------------------------------------------------------* - Name: INITi_ShelterStaticInitializer - Description: ŠeƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg“à‚Ì static initializer ‚ւ̃|ƒCƒ“ƒ^ - ƒe[ƒuƒ‹‚ð IRQ ƒXƒ^ƒbƒN‚ÌÅã•”‚É‘Þ”ð‚·‚éB - Arguments: ptr - ƒZƒOƒƒ“ƒg“à‚̃|ƒCƒ“ƒ^ƒe[ƒuƒ‹‚ւ̃|ƒCƒ“ƒ^B - ƒe[ƒuƒ‹‚Í NULL ‚ÅI’[‚³‚ê‚Ä‚¢‚é•K—v‚ª‚ ‚éB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterStaticInitializer(u32* ptr) -{ - /* ˆø”Šm”F */ - cmp r0, #0 - bxeq lr - - /* ‘Þ”ðêŠæ“ªƒAƒhƒŒƒX‚ðŒvŽZ */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 -@001: - /* ‘Þ”ðêŠæ“ª‚©‚ç‹ó‚«êŠ‚ð’²¸ */ - ldr r2, [r1] - cmp r2, #0 - addne r1, r1, #4 - bne @001 -@002: - /* ‹ó‚«êŠ‚Éƒe[ƒuƒ‹‚ðƒRƒs[ */ - ldr r2, [r0], #4 - str r2, [r1], #4 - cmp r2, #0 - bne @002 - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CallStaticInitializers - Description: ŠeƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg“à‚Ì static initializer ‚ðŒÄ‚Ño‚·B - ƒI[ƒgƒ[ƒhˆ—‚É‚æ‚Á‚Ä IRQ ƒXƒ^ƒbƒN‚ÌÅã•”‚É‘Þ”ð‚³‚ê‚Ä‚¢‚é - ŠÖ”ƒ|ƒCƒ“ƒ^ƒe[ƒuƒ‹‚ðˆê‚‚¸‚ŒĂÑo‚·B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_CallStaticInitializers(void) -{ - stmdb sp!, {lr} - - /* ƒe[ƒuƒ‹‘Þ”ðêŠæ“ªƒAƒhƒŒƒX‚ðŒvŽZ */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 -@001: - /* ƒe[ƒuƒ‹‚ÉŠÇ—‚³‚ê‚Ä‚¢‚éƒ|ƒCƒ“ƒ^‚ðˆê‚‚¸‚ŒĂÑo‚µ */ - ldr r0, [r1] - cmp r0, #0 - beq @002 - stmfd sp!, {r1} - mov lr, pc - bx r0 - ldmfd sp!, {r1} - /* ˆê’UŒÄ‚Ño‚µ‚½ƒ|ƒCƒ“ƒ^‚̓[ƒƒNƒŠƒA (IRQƒXƒ^ƒbƒN‚ðŠÔŽØ‚肵‚Ä‚¢‚éˆ×) */ - mov r0, #0 - str r0, [r1], #4 - b @001 -@002: - ldmia sp!, {lr} - bx lr -} -#endif - -/*---------------------------------------------------------------------------* - Name: INITi_Copy32 - Description: 32 bit ’PˆÊ‚ŃRƒs[‚ðs‚¤BƒXƒ^ƒbƒN‚ð 36 ƒoƒCƒgÁ”ï‚·‚邪A - ƒŒƒWƒXƒ^ r3 - r12 ‚Í”j‰ó‚µ‚È‚¢B - Arguments: r0 - ƒRƒs[æ‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r1 - ƒRƒs[Œ³‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r2 - ƒRƒs[‚·‚é’·‚³‚ðƒoƒCƒg’PˆÊ‚ÅŽw’è ( 4 ‚Ì”{” )B - Returns: r0 - ƒRƒs[Œã‚̃Rƒs[æ‚ւ̃|ƒCƒ“ƒ^ ( r0 + r2 )B - r1 - ƒRƒs[Œã‚̃Rƒs[Œ³‚ւ̃|ƒCƒ“ƒ^ ( r1 + r2 )B - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Copy32(void* dst, void* src, u32 size) -{ - stmfd sp!, {r3-r11} - - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - ldmia r1!, {r4-r11} - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - ldmneia r1!, {r4-r7} - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - ldmneia r1!, {r4-r5} - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - ldmneia r1!, {r4} - stmneia r0!, {r4} - - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Fill32 - Description: 32 bit ’PˆÊ‚Ńoƒbƒtƒ@“à—e‚ðŽw’èƒf[ƒ^‚Å–„‚ß‚éBƒXƒ^ƒbƒN‚ð 36 - ƒoƒCƒgÁ”ï‚·‚邪AƒŒƒWƒXƒ^ r3 - r12 ‚Í”j‰ó‚µ‚È‚¢B - Arguments: r0 - ƒoƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r1 - ƒoƒbƒtƒ@‚ð–„‚ß‚é“à—e‚ð 32 bit ’l‚ÅŽw’èB - r2 - ƒoƒbƒtƒ@‚𖄂߂钷‚³‚ðƒoƒCƒg’PˆÊ‚ÅŽw’è ( 4 ‚Ì”{” )B - Returns: r0 - ˆ—Œã‚̃oƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^ ( r0 + r2 )B - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Fill32(void* dst, u32 value, u32 size) -{ - stmfd sp!, {r3-r11} - - mov r4, r1 - mov r5, r1 - mov r6, r1 - mov r7, r1 - mov r8, r1 - mov r9, r1 - mov r10, r1 - mov r11, r1 - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - stmneia r0!, {r4} - - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: NitroSpStartUp - Description: Hook for user start up. - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL void -NitroSpStartUp(void) -{ -} - -#include diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/main.c b/build/tests/DisplaySystemInformation/ARM7_armadillo/src/main.c deleted file mode 100644 index 219de8c5..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/main.c +++ /dev/null @@ -1,632 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" - -#include "address.h" - - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -/* ŠeƒXƒŒƒbƒh—Dæ“x */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // Žb’è -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_NWM_COMMAND 9 -#define THREAD_PRIO_NWM_WPA 10 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* ROM “à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh */ -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/* Žg—p DMA ”Ô† */ -#define DMA_NO_FATFS FATFS_DMA_4 // = 0 -#define DMA_NO_NWM NWMSP_DMA_7 - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(void); -static void InitializeFatfs(void); -static void InitializeNwm(OSHeapHandle hh); -static void DummyThread(void* arg); - -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig* ncdsp); -#endif -static void VBlankIntr(void); - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: ‹N“®ƒxƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void -TwlSpMain(void) -{ - OSHeapHandle heapHandle; - - // OS‰Šú‰»‚ÅARM9‚Æ“¯Šú‚·‚é‘O‚ÉSCFG‚Ìî•ñ‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚«o‚· - // ƒŒƒWƒXƒ^î•ñ‚ðƒRƒs[ - MI_CpuMove16( (void*)REG_ROM_ADDR, DISPINFO_SHARED_SCFG_REG_ADDR, DISPINFO_SHARED_SCFG_REG_SIZE ); - // WRAM‚É‘Þ”ð‚³‚ê‚Ă镪‚àƒRƒs[ - MI_CpuMove16( (void*)HWi_WSYS04_ADDR, DISPINFO_SHARED_SCFG_WRAM_ADDR, DISPINFO_SHARED_SCFG_WRAM_SIZE ); - - /* OS ‰Šú‰» */ - OS_Init(); - PrintDebugInfo(); - - /* NVRAM ‚©‚烆[ƒU[î•ñ“Ç‚Ýo‚µ */ - ReadUserInfo(); - - /* ƒq[ƒv—̈æÝ’è */ - heapHandle = InitializeAllocateSystem(); - - /* ƒ{ƒ^ƒ““ü—̓T[ƒ`‰Šú‰» */ - (void)PAD_InitXYButton(); - - /* Š„ž‚Ý‹–‰Â */ - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - /* Šeƒ‰ƒCƒuƒ‰ƒŠ‰Šú‰» */ - AES_Init(THREAD_PRIO_AES); // AES - SEA_Init(THREAD_PRIO_SEA); // SEA -// FS_Init(FS_DMA_NOT_USE); // FS for CARD -// FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD - InitializeFatfs(); // FAT-FS - InitializeNwm(heapHandle); // TWL –³ü - MCU_InitIrq(THREAD_PRIO_MCU); // ƒ}ƒCƒRƒ“ - CDC_InitLib(); // CODEC -// if (OSi_IsCodecTwlMode() == TRUE) -// { -// CAMERA_Init(); // ƒJƒƒ‰ -// } - SND_Init(THREAD_PRIO_SND); // ƒTƒEƒ“ƒh - SNDEX_Init(THREAD_PRIO_SNDEX); // ƒTƒEƒ“ƒhŠg’£ - RTC_Init(THREAD_PRIO_RTC); // RTC - WVR_Begin(heapHandle); // NITRO –³ü - SPI_Init(THREAD_PRIO_SPI); - - while (TRUE) - { - OS_Halt(); - - /* ƒ\ƒtƒgƒEƒFƒAƒŠƒZƒbƒg—v‹‚ÍŠÄŽ‹‚µ‚È‚¢ */ - /* AGB ƒJ[ƒgƒŠƒbƒW‚Ì‘}”²ƒ`ƒFƒbƒN‚Ís‚í‚È‚¢ */ - /* DS ƒJ[ƒh‚Ì‘}”²ƒ`ƒFƒbƒN‚Ís‚í‚È‚¢ */ - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ìî•ñ‚ðƒfƒoƒbƒOo—Í‚·‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - OS_TPrintf("ARM7: This component is running on TWL.\n"); - OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n"); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: ƒƒ‚ƒŠŠ„“–‚ăVƒXƒeƒ€‚ð‰Šú‰»‚·‚éB - Arguments: None. - Returns: OSHeapHandle - WRAM ƒAƒŠ[ƒiã‚ÉŠm•Û‚³‚ꂽƒq[ƒv‚̃nƒ“ƒhƒ‹‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static OSHeapHandle -InitializeAllocateSystem(void) -{ - OSHeapHandle hh; - void* subLo = (void*)OS_GetWramSubArenaLo(); - void* subHi = (void*)OS_GetWramSubArenaHi(); - void* privLo = (void*)OS_GetWramSubPrivArenaLo(); - void* privHi = (void*)OS_GetWramSubPrivArenaHi(); - - if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM)) - { - /* SUB ƒAƒŠ[ƒi‚ð SUBPRIV ƒAƒŠ[ƒi‚É‹zŽû */ - OS_SetWramSubArenaHi(subLo); - OS_SetWramSubPrivArenaLo(subLo); - privLo = subLo; - } - - /* ƒAƒŠ[ƒi‚ð 0 ƒNƒŠƒA */ - MI_CpuClear8(privLo, (u32)privHi - (u32)privLo); - - /* ƒq[ƒv쬉Šú‰» */ - privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1); - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi); - if (hh < 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - - /* ƒJƒŒƒ“ƒgƒq[ƒv‚ÉÝ’è */ - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - /* ƒq[ƒvƒTƒCƒY‚ÌŠm”F */ - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if (heapSize <= 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - OS_TPrintf("ARM7: heap size [%d]\n", heapSize); - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éBFATFS‰Šú‰»ŠÖ”“à‚ŃXƒŒƒbƒh‹xŽ~ - ‚·‚éˆ×A‹xŽ~’†“®ì‚·‚éƒ_ƒ~[‚̃XƒŒƒbƒh‚ð—§‚Ä‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - OSThread thread; - u32 stack[18]; - - /* ƒ_ƒ~[ƒXƒŒƒbƒhì¬ */ - OS_CreateThread(&thread, DummyThread, NULL, - (void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX); - OS_WakeupThreadDirect(&thread); - - /* FATFS ‰Šú‰» */ - /* [TODO] DMA ‚Í NOT_USE ‚̂܂܂ŗǂ¢H */ - if(!FATFS_Init(DMA_NO_FATFS, FATFS_DMA_NOT_USE, THREAD_PRIO_FATFS)) - { - /* do nothing */ - } - - /* ƒ_ƒ~[ƒXƒŒƒbƒh”jŠü */ - OS_KillThread(&thread, NULL); -} - -/*---------------------------------------------------------------------------* - Name: InitializeNwm - Description: NWMƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éB - Arguments: hh - —˜—p‰Â”\‚ȃq[ƒv‚̃nƒ“ƒhƒ‹‚ðŽw’èB - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeNwm(OSHeapHandle hh) -{ - NwmspInit nwmInit; - - /* [TODO] Šm•Û‚µ‚Ä‚¢‚éƒq[ƒv—̈悪V–³üˆêŽ®‚ª•K—v‚Æ‚µ‚Ä‚¢‚郃‚ƒŠ—ʈÈã‚©‚̃`ƒFƒbƒN‚ª•K—v */ - - nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMAND; - nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT; - nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO; - - nwmInit.dmaNo = DMA_NO_NWM; - nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.drvHeap.handle = hh; - - nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA; - nwmInit.wpaHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.wpaHeap.handle = hh; - - NWMSP_Init(&nwmInit); -} - -/*---------------------------------------------------------------------------* - Name: DummyThread - Description: FATFSƒ‰ƒCƒuƒ‰ƒŠACDCƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éÛ‚É—§‚Ä‚éƒ_ƒ~[‚Ì - ƒXƒŒƒbƒhB - Arguments: arg - Žg—p‚µ‚È‚¢B - Returns: None. - *---------------------------------------------------------------------------*/ -static void -DummyThread(void* arg) -{ -#pragma unused(arg) - while (TRUE) - { - } -} - -#ifdef WM_PRECALC_ALLOWEDCHANNEL -extern u16 WMSP_GetAllowedChannel(u16 bitField); -#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAM‚©‚烆[ƒU[î•ñ‚ð“Ç‚Ýo‚µA‹¤—L—̈æ‚É“WŠJ‚·‚éB - ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚éƒoƒbƒtƒ@‚ª—¼•û‰ó‚ê‚Ä‚¢‚éꇂÍA - ‹¤—L—̈æ‚̃†[ƒU[î•ñŠi”[ꊂðƒNƒŠƒA‚·‚éB - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // ƒIƒtƒZƒbƒg“Ç‚Ýo‚µ -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCDEx(temp); -#else - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‹N“®‚ð—}§ - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ƒjƒbƒNƒl[ƒ€‚ð•â³ - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // ƒRƒƒ“ƒg‚ð•â³ - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // ‹¤—L—̈æ‚ɃXƒgƒA - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // ‹¤—L—̈æ‚ðƒNƒŠƒA - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // –³üMACƒAƒhƒŒƒX‚ðƒ†[ƒU[î•ñ‚ÌŒã‚ë‚É“WŠJ - { - u8 wMac[6]; - - // NVRAM‚©‚çMACƒAƒhƒŒƒX‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // ‹¤—L—̈æ‚É“WŠJ - MI_CpuCopy8(wMac, p, 6); - } - -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚©‚çŽg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - { - u16 enableChannel; - u16 allowedChannel; - - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // Žg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ(MACƒAƒhƒŒƒX‚ÌŒã‚ë‚Ì2ƒoƒCƒg) - p = (u8 *)((u32)p + 6); - // ‹¤—L—̈æ‚É“WŠJ - *((u16 *)p) = allowedChannel; - } -#endif -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ƒ†[ƒU[î•ñ‚ªŠg’£ƒRƒ“ƒtƒBƒO‚ɑΉž‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚𒲸‚·‚éB - - Arguments: None. - - Returns: BOOL - Šg’£ƒ†[ƒU[î•ñ‚ª—LŒø‚ÈꇂÉTRUE‚ð•Ô‚·B - –³Œø‚Å‚ ‚éꇂÍFALSE‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM“à“o˜^ƒGƒŠƒA‚Ìî•ñ‚©‚çAŠg’£Œ¾ŒêƒR[ƒh‚̑ΉžŒ¾Œêƒrƒbƒgƒ}ƒbƒv - ‚ÉŠÖ‚·‚éî•ñ‚ð’Šo‚·‚éB - - Arguments: None. - - Returns: u16 - DSƒJ[ƒhA‚à‚µ‚­‚Í ƒ}ƒ‹ƒ`ƒu[ƒgƒoƒCƒiƒŠ‚ª‘Ήž‚µ‚Ä‚¢‚é - Œ¾ŒêƒR[ƒh‚̃rƒbƒgƒ}ƒbƒv‚ð•Ô‚·BDSƒJ[ƒh‚ªŠg’£Œ¾Œê - ƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡‚Í 0 ‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM“à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh‚ðŠm”F - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - 3: ƒAƒvƒŠ‚Ì‹N“®‚ð—}§‚·‚ׂ«B - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚é‚© - if (IsValidConfigEx()) - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚éê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // Šg’£ƒf[ƒ^—p CRC ‚ª³‚µ‚­Aݒ茾ŒêƒR[ƒh‚ª‘ΉžŒ¾ŒêƒR[ƒh‚Ɋ܂܂ê‚éꇂɳ“–‚Æ”»’f - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // Šg’£Œ¾ŒêƒR[ƒh‚Å’Ê팾ŒêƒR[ƒh‚ðã‘‚« - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚邪A - // IPL2‚̑ΉžŒ¾ŒêƒR[ƒh‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªŠÜ‚Ü‚ê‚È‚¢ê‡‚Í‹N“®‚ð—}§ - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚éꇂ͋N“®‚ð—}§ - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - crc_flag |= (1 << i); - } - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // Šeƒ~ƒ‰[ƒf[ƒ^‚ÌCRC & saveCount³“–«ƒ`ƒFƒbƒN - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC‚ª³‚µ‚­AsaveCount’l‚ª0x80–¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’fB - crc_flag |= (1 << i); - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ƒuƒ‰ƒ“ƒNŠ„‚螂݃xƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -extern void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/overwriteRtc.c b/build/tests/DisplaySystemInformation/ARM7_armadillo/src/overwriteRtc.c deleted file mode 100644 index af04b9d0..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_armadillo/src/overwriteRtc.c +++ /dev/null @@ -1,67 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - File: overwriteRtc.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include - -extern BOOL RTC_IsAvailablePxiCommand(u16 command); - -/*---------------------------------------------------------------------------* - Name: RTC_IsAvailablePxiCommand - - Description: PXI ƒRƒ}ƒ“ƒh‚ª—LŒø‚È RTC ‘€ìƒRƒ}ƒ“ƒh‚Å‚ ‚é‚©‚Ç‚¤‚©’²¸‚·‚éB - - Arguments: command - ’²¸‚·‚éƒRƒ}ƒ“ƒhB - - Returns: BOOL - —LŒø‚ȃRƒ}ƒ“ƒh‚Å‚ ‚éê‡‚É TRUE ‚ð•Ô‚·Bˆ—‚Å‚«‚È - ‚¢–³Œø‚ȃRƒ}ƒ“ƒh‚Å‚ ‚éê‡‚É‚Í FALSE ‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -BOOL -RTC_IsAvailablePxiCommand(u16 command) -{ - switch (command) - { - case RTC_PXI_COMMAND_RESET: - case RTC_PXI_COMMAND_SET_HOUR_FORMAT: - case RTC_PXI_COMMAND_READ_DATETIME: - case RTC_PXI_COMMAND_READ_DATE: - case RTC_PXI_COMMAND_READ_TIME: - case RTC_PXI_COMMAND_READ_PULSE: - case RTC_PXI_COMMAND_READ_ALARM1: - case RTC_PXI_COMMAND_READ_ALARM2: - case RTC_PXI_COMMAND_READ_STATUS1: - case RTC_PXI_COMMAND_READ_STATUS2: - case RTC_PXI_COMMAND_READ_ADJUST: - case RTC_PXI_COMMAND_READ_FREE: - case RTC_PXI_COMMAND_WRITE_DATETIME: - case RTC_PXI_COMMAND_WRITE_DATE: - case RTC_PXI_COMMAND_WRITE_TIME: - case RTC_PXI_COMMAND_WRITE_PULSE: - case RTC_PXI_COMMAND_WRITE_ALARM1: - case RTC_PXI_COMMAND_WRITE_ALARM2: - case RTC_PXI_COMMAND_WRITE_STATUS1: - case RTC_PXI_COMMAND_WRITE_STATUS2: - case RTC_PXI_COMMAND_WRITE_ADJUST: - case RTC_PXI_COMMAND_WRITE_FREE: - return TRUE; - } - return FALSE; -} - diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/Makefile b/build/tests/DisplaySystemInformation/ARM7_racoon/Makefile deleted file mode 100644 index bc239513..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -TWL_NO_STD_PCHDR = True -TARGET_CODEGEN ?= ALL - -#---------------------------------------------------------------------------- - -SRCDIR += ./src - -SRCS = main.c initScfg.c - -TARGET_NAME = racoon - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(TARGET_NAME).response.template - -CRT0_O = crt0.LTD.TWL.o - -# ƒXƒ^ƒbƒN•s‘«–hŽ~‚̈×AƒCƒ“ƒ‰ƒCƒ““WŠJ‚¹‚¸‚ɃRƒ“ƒpƒCƒ‹‚·‚é -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -ifeq ($(TWL_PLATFORM),BB) -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000' -else -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000' -endif - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - - -#-------------------------------- -# install target -#-------------------------------- -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include\ - $(DISP_INFO)/common/include -#LLIBRARIES += libwl_sp.TWL.LTD.a libsdio_hcd_twl$(TWL_LIBSUFFIX).a libsdio_busdriver$(TWL_LIBSUFFIX).a libsdio_lib$(TWL_LIBSUFFIX).a libARM7athdrv$(TWL_LIBSUFFIX).a -LLIBRARIES += libwl_sp.TWL.LTD.a -#LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ -# libcdc_sp$(TWL_LIBSUFFIX).a \ -# libtpex_sp$(TWL_LIBSUFFIX).a \ -# libmicex_sp$(TWL_LIBSUFFIX).a \ -# libsdio_hcd_twl$(TWL_LIBSUFFIX).a \ -# libsdio_busdriver$(TWL_LIBSUFFIX).a \ -# libsdio_lib$(TWL_LIBSUFFIX).a \ -# librompatch_sp$(TWL_LIBSUFFIX).a \ -# libARM7athdrv$(TWL_LIBSUFFIX).a - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lcf.template b/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lcf.template deleted file mode 100644 index 90b672ea..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lcf.template +++ /dev/null @@ -1,935 +0,0 @@ -#--------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: racoon.lcf.template -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#--------------------------------------------------------------------------- -MEMORY -{ - (RWX) : ORIGIN = , LENGTH = 0x0 > - - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWXO): ORIGIN = , LENGTH = 0x0 > - - - check.WORKRAM (RWX) : ORIGIN = 0x037c0000, LENGTH = 0x50000 > workram.check - - binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWXO): ORIGIN = , LENGTH = 0x0 > - - - check.LTDMAIN (RWX) : ORIGIN = 0x02f88000, LENGTH = 0x74000 > ltdmain.check - check.RSVWRAM (RWX) : ORIGIN = 0x03040000, LENGTH = 0x08000 > rsvwram.check -} - -KEEP_SECTION -{ - .sinit -} - -SECTIONS -{ - ############################ STATIC ################################# - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_STATIC_START =.; - SDK_STATIC_TEXT_START =.; - #:::::::::: text/rodata - OBJECT(_start,*) - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_STATIC_SINIT_END =.; - #:::::::::: text/rodata - SDK_STATIC_TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - SDK_STATIC_DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_STATIC_DATA_END =.; - . = ALIGN(4); - SDK_STATIC_END =.; - - SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; - SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; - SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; - __sinit__ = SDK_STATIC_SINIT_START; # for static initializer - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_STATIC_BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_STATIC_BSS_END = .; - - SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; - - } >> - - - ############################ AUTOLOADS ############################## - SDK_AUTOLOAD.WRAM.START = 0x037c0000; - SDK_AUTOLOAD.WRAM.END = SDK_AUTOLOAD.WRAM.START; - SDK_AUTOLOAD.WRAM.BSS_END = SDK_AUTOLOAD.WRAM.START; - SDK_AUTOLOAD.WRAM.SIZE = 0; - SDK_AUTOLOAD.WRAM.BSS_SIZE = 0; - SDK_AUTOLOAD_START = SDK_STATIC_END; - SDK_AUTOLOAD_SIZE = 0; - SDK_AUTOLOAD_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_AUTOLOAD__ID =; - SDK_AUTOLOAD..ID =; - SDK_AUTOLOAD..START =.; - SDK_AUTOLOAD..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - . = ALIGN(4); - SDK_STATIC_ETABLE_START =.; - __exception_table_start__ =.; - EXCEPTION - __exception_table_end__ =.; - SDK_STATIC_ETABLE_END =.; - - - - - - - - - - - - - - . = ALIGN(4); - SDK_AUTOLOAD..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_AUTOLOAD..SINIT_END =.; - #:::::::::: text/rodata - SDK_AUTOLOAD..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(4); - SDK_AUTOLOAD..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: data - SDK_AUTOLOAD..DATA_END =.; - . = ALIGN(4); - SDK_AUTOLOAD..END =.; - - SDK_AUTOLOAD..TEXT_SIZE = SDK_AUTOLOAD..TEXT_END - SDK_AUTOLOAD..TEXT_START; - SDK_AUTOLOAD..DATA_SIZE = SDK_AUTOLOAD..DATA_END - SDK_AUTOLOAD..DATA_START; - SDK_AUTOLOAD..SIZE = SDK_AUTOLOAD..END - SDK_AUTOLOAD..START; - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_AUTOLOAD..BSS_START = .; - #:::::::::: bss - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_AUTOLOAD..BSS_END = .; - - SDK_AUTOLOAD..BSS_SIZE = SDK_AUTOLOAD..BSS_END - SDK_AUTOLOAD..BSS_START; - - } >> - - - - SDK_AUTOLOAD_WRAM_START = SDK_AUTOLOAD.WRAM.START; - SDK_AUTOLOAD_WRAM_END = SDK_AUTOLOAD.WRAM.END; - SDK_MOUNT_INFO_TABLE = SDK_AUTOLOAD.WRAM.BSS_END; - SDK_AUTOLOAD_WRAM_BSS_END = SDK_MOUNT_INFO_TABLE + 0x400; - SDK_AUTOLOAD_WRAM_SIZE = SDK_AUTOLOAD.WRAM.SIZE; - SDK_AUTOLOAD_WRAM_BSS_SIZE = SDK_AUTOLOAD.WRAM.BSS_SIZE; - - ############################ AUTOLOAD_INFO ########################## - .binary.AUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_AUTOLOAD..SIZE; - WRITEW SDK_AUTOLOAD..SINIT_START; - WRITEW SDK_AUTOLOAD..BSS_SIZE; - - - } > binary.AUTOLOAD_INFO - - SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; - SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - - ############################ STATIC_FOOTER ########################## - .binary.STATIC_FOOTER: - { - WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE - WRITEW _start_ModuleParams - ADDR(.); - WRITEW 0; # NO DIGEST - WRITEW _start_LtdModuleParams - ADDR(.); - } > binary.STATIC_FOOTER - - ############################ OVERLAYS ############################### - SDK_OVERLAY_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_OVERLAY__ID =; ### SEGMENT OVERLAY ID - SDK_OVERLAY..ID =; - SDK_OVERLAY..START =.; - SDK_OVERLAY..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_OVERLAY..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_OVERLAY..SINIT_END =.; - #:::::::::: text/rodata - SDK_OVERLAY..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - SDK_OVERLAY..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_OVERLAY..DATA_END =.; - . = ALIGN(4); - SDK_OVERLAY..END =.; - - SDK_OVERLAY..TEXT_SIZE = SDK_OVERLAY..TEXT_END - SDK_OVERLAY..TEXT_START; - SDK_OVERLAY..DATA_SIZE = SDK_OVERLAY..DATA_END - SDK_OVERLAY..DATA_START; - SDK_OVERLAY..SIZE = SDK_OVERLAY..END - SDK_OVERLAY..START; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_OVERLAY..BSS_START = .; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_OVERLAY..BSS_END = .; - - SDK_OVERLAY..BSS_SIZE = SDK_OVERLAY..BSS_END - SDK_OVERLAY..BSS_START; - - } >> - - - - ############################ OVERLAYDEFS ############################ - .F: - { - ### module information - WRITEW ADDR(.); # load address - WRITEW _start; # entry address - WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module - WRITEW _start_AutoloadDoneCallback; # callback autoload done - - ### overlay filename - - WRITES (""); # Overlay - - - } > F - - ############################ OVERLAYTABLE ########################### - .F: - { - - WRITEW ; # overlay ID - WRITEW ADDR(.); # load address - WRITEW SDK_OVERLAY..SIZE; # size of module - WRITEW SDK_OVERLAY..BSS_SIZE; # size of bss - WRITEW SDK_OVERLAY..SINIT_START; # start address of static init - WRITEW SDK_OVERLAY..SINIT_END; # end address of static init - WRITEW ; # ROM file ID - WRITEW 0; # Reserved - - - } > F - - ############################ OTHERS ################################# - SDK_WRAM_ARENA_LO = SDK_AUTOLOAD_WRAM_BSS_END; - - SDK_IRQ_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE = ; # allocated in WRAM - SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; - - .check.WORKRAM: - { - . = . + SDK_AUTOLOAD_WRAM_BSS_END - SDK_AUTOLOAD.WRAM.START + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; - - } > check.WORKRAM - - ########################### LTDAUTOLOADS ############################ - SDK_LTDAUTOLOAD.LTDMAIN.START = 0x02f88000; - SDK_LTDAUTOLOAD.LTDMAIN.END = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD.LTDMAIN.BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0; - SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0; - SDK_LTDAUTOLOAD_TOP_START = 0x02e80000; - SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC —̈悪–³‚¢‘ã‚í‚è‚É 4 bytes ‚̃_ƒ~[‚ªƒoƒCƒiƒŠƒtƒ@ƒCƒ‹‚Ìæ“ª‚É“ü‚é # - SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; - SDK_LTDAUTOLOAD_SIZE = 0; - SDK_LTDAUTOLOAD_NUMBER = ; - - .binary.LTDAUTOLOAD_TOP: - { - WRITEW 0; - - } > binary.LTDAUTOLOAD_TOP - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - SDK_LTDAUTOLOAD__ID =; - SDK_LTDAUTOLOAD..ID =; - SDK_LTDAUTOLOAD..START =.; - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDAUTOLOAD..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_LTDAUTOLOAD..SINIT_END =.; - #:::::::::: text/rodata - SDK_LTDAUTOLOAD..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(4); - SDK_LTDAUTOLOAD..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: data - SDK_LTDAUTOLOAD..DATA_END =.; - . = ALIGN(4); - SDK_LTDAUTOLOAD..END =.; - - SDK_LTDAUTOLOAD..TEXT_SIZE = SDK_LTDAUTOLOAD..TEXT_END - SDK_LTDAUTOLOAD..TEXT_START; - SDK_LTDAUTOLOAD..DATA_SIZE = SDK_LTDAUTOLOAD..DATA_END - SDK_LTDAUTOLOAD..DATA_START; - SDK_LTDAUTOLOAD..SIZE = SDK_LTDAUTOLOAD..END - SDK_LTDAUTOLOAD..START; - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDAUTOLOAD..BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_LTDAUTOLOAD..BSS_END =.; - - SDK_LTDAUTOLOAD..BSS_SIZE = SDK_LTDAUTOLOAD..BSS_END - SDK_LTDAUTOLOAD..BSS_START; - - } >> - - - - SDK_LTDAUTOLOAD_LTDMAIN_START = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD_LTDMAIN_END = SDK_LTDAUTOLOAD.LTDMAIN.END; - SDK_LTDAUTOLOAD_LTDMAIN_BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END; - SDK_LTDAUTOLOAD_LTDMAIN_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.SIZE; - SDK_LTDAUTOLOAD_LTDMAIN_BSS_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE; - - ######################### LTDAUTOLOAD_INFO ########################## - .binary.LTDAUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_LTDAUTOLOAD..SIZE; - WRITEW SDK_LTDAUTOLOAD..SINIT_START; - WRITEW SDK_LTDAUTOLOAD..BSS_SIZE; - - - } > binary.LTDAUTOLOAD_INFO - - SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE; - SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO); - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO); - - ########################### LTDOVERLAYS ############################# - SDK_LTDOVERLAY_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - SDK_LTDOVERLAY__ID =; - SDK_LTDOVERLAY..ID =; - SDK_LTDOVERLAY..START =.; - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDOVERLAY..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDOVERLAY..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_LTDOVERLAY..SINIT_END =.; - #:::::::::: text/rodata - SDK_LTDOVERLAY..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(4); - SDK_LTDOVERLAY..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_LTDOVERLAY..DATA_END =.; - . = ALIGN(4); - SDK_LTDOVERLAY..END =.; - - SDK_LTDOVERLAY..TEXT_SIZE = SDK_LTDOVERLAY..TEXT_END - SDK_LTDOVERLAY..TEXT_START; - SDK_LTDOVERLAY..DATA_SIZE = SDK_LTDOVERLAY..DATA_END - SDK_LTDOVERLAY..DATA_START; - SDK_LTDOVERLAY..SIZE = SDK_LTDOVERLAY..END - SDK_LTDOVERLAY..START; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(4); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDOVERLAY..BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(4); - SDK_LTDOVERLAY..BSS_END =.; - - SDK_LTDOVERLAY..BSS_SIZE = SDK_LTDOVERLAY..BSS_END - SDK_LTDOVERLAY..BSS_START; - - } >> - - - - ########################## LTDOVERLAYDEFS ########################### - .L: - { - ### TWL limited extended static module information - WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address - WRITEW SDK_MOUNT_INFO_TABLE; # address of the FS mount information table - WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module - WRITEW 0; # padding - - ### TWL limited overlay filename - - WRITES (""); - - - } > L - - ######################### LTDOVERLAYTABLE ########################### - .L: - { - - WRITES # overlay ID - WRITEW ADDR(.); # load address - WRITEW SDK_LTDOVERLAY..SIZE; # size of module - WRITEW SDK_LTDOVERLAY..BSS_SIZE; # size of bss - WRITEW SDK_LTDOVERLAY..SINIT_START; # start address of static init - WRITEW SDK_LTDOVERLAY..SINIT_END; # end address of static init - WRITEW # ROM file ID - WRITEW 0; # Reserved - - - } > L - - ############################ OTHERS ################################# - SDK_SUBPRIV_ARENA_LO = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END; - .check.LTDMAIN: - { - . = SDK_SUBPRIV_ARENA_LO; - - } > check.LTDMAIN - - .check.RSVWRAM: - { - . = SDK_LTDAUTOLOAD.RSVWRAM.BSS_END; - - } > check.RSVWRAM - -} diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lsf b/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lsf deleted file mode 100644 index 4a239534..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.lsf +++ /dev/null @@ -1,231 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: racoon.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - Library $(CRT0_O) - Object $(OBJDIR)/initScfg.o - StackSize 1024 1024 -} - -#-------- -Autoload WRAM -{ - Address $(ADDRESS_LTDWRAM) - - Library libsubpsyscall.a \ - libsyscall_sp.twl.a \ - $(CW_LIBS) \ - libos_sp$(LIBSUFFIX).a \ - libmi_sp$(LIBSUFFIX).a \ - libpad_sp$(LIBSUFFIX).a \ - libpxi_sp$(LIBSUFFIX).a \ - libstd_sp$(LIBSUFFIX).a \ - libexi_sp$(LIBSUFFIX).a \ - libsnd_sp$(LIBSUFFIX).a \ - libspi_sp$(LIBSUFFIX).a \ - libpm_sp$(LIBSUFFIX).a \ - libmath_sp$(LIBSUFFIX).a \ - libscfg_sp$(LIBSUFFIX).a \ - libtp_sp$(LIBSUFFIX).a \ - libmic_sp$(LIBSUFFIX).a \ - libfs_sp$(LIBSUFFIX).a \ - libcard_sp$(LIBSUFFIX).a \ - libi2c_sp$(LIBSUFFIX).a \ - libcamera_sp$(LIBSUFFIX).a \ - libcdc_sp$(LIBSUFFIX).a \ - libsndex_sp$(LIBSUFFIX).a \ - libtpex_sp$(LIBSUFFIX).a \ - libmicex_sp$(LIBSUFFIX).a \ - libmcu_sp$(LIBSUFFIX).a \ - - Library libsdio_sp$(LIBSUFFIX).a - - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - - - Object * (.etable) - Object * (.wram) - Object * (.ltdwram) - Object $(OBJDIR)/main.o - - # caches in fatfs library, that should be on WRAM. - # 2007/12/11 OBJECT() ‚É‚æ‚é .bss ƒVƒ“ƒ{ƒ‹‚ÌƒŠƒ“ƒN‚ª‚¤‚Ü‚­‚¢‚©‚È‚¢‚Ì‚ÅA - # •Ï”’è‹`‰ÓŠ‚É pragma ‚Å .ltdwram ƒZƒNƒVƒ‡ƒ“‚Ɋ܂܂ê‚邿‚¤‚ÉŽb’è‘Îô‚µ‚Ü‚µ‚½B -# Object OBJECT( FATFSi___mem_drives_structures , libfatfs_sp$(LIBSUFFIX).a) (.bss) - - ##### - # Sub-routines in WL library , that should be on WRAM. - # in TaskMan.o - Object OBJECT( MainTaskRoutine , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AddTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DeleteTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( LowestIdleTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ExecuteMessage , libwl_sp$(LIBSUFFIX).a ) (.text) - # in BufMan.o - Object OBJECT( NewHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DeleteHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AllocateHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ReleaseHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( MoveHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AddHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( GetHeapBufNextAdrs , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlCmdIf.o - Object OBJECT( RequestCmdTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SendMessageToWmDirect , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlNic.o - Object OBJECT( WStart , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WStop , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WSetStaState , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlIntr.o - Object OBJECT( WlIntr , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrPreTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrActEnd , libwl_sp$(LIBSUFFIX).a ) (.text) -# Object OBJECT( WlIntrAckCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxErr , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxCntup , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrMpEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrStartTx , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrStartRx , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SetParentTbttTxq , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( MacBugTxMp , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AdjustRingPointer , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( CheckKeyTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlIntrTask.o - Object OBJECT( WlIntrTxBeaconTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrMpEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SetParentTbttTxqTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( TakeoutRxFrame , libwl_sp$(LIBSUFFIX).a ) (.text) - # in TxCtrl.o - Object OBJECT( InitTxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) - # in RxCtrl.o - Object OBJECT( InitRxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WaitLoop.o - Object OBJECT( WaitLoop_Rxpe , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_Waitus , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_ClrAid , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text) - - -} - -#-------- -Ltdautoload RSVWRAM -{ - Address 0x03040000 - Object * (.rsvwram) - Library libathdrv_sp$(LIBSUFFIX).a (.bss) - Library libathdrv_sp$(LIBSUFFIX).a (.data) - - ##### - # Sub-routines in TWL WIRELESS Driver , that should be on WRAM. - Object OBJECT( HTCSendPktCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCIssueSend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCTrySend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCSendPkt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCProcessCreditRpt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevRecvPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCProcessRecvHeader, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCRecvCompleteHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCRecvMessagePendingHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCAddReceivePkt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AR6KFreeIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AR6KAllocIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevGetEventAsyncHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevCheckPendingRecvMsgsAsync, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevDsrHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HIFReadWrite, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( hifRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( hifIRQHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HIFAckInterrupt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_credit_distribute, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_alloc, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_alloc_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_put, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_push, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_pull, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_free, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_to_data, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_to_len, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_headroom, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_drv_return_netbuf, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ath_queue_remove_from_head, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ath_queue_insert_tail, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_alloc_cookie, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_driver_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_tx_complete, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_dix_2_dot3, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_data_hdr_add, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_data_hdr_remove, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_ibss_map_epid, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DL_ListInsertTail, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DL_ListRemove, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_control_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_cmd_send, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_control_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_implicit_create_pstream, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCAllocControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCFreeControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( BMILZData, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( bmiBufferSend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( BMIWriteMemory, libathdrv_sp$(LIBSUFFIX).a ) (.text) - - - # FATFS core symbols - Object OBJECT(FATFSi_lfi2text, libfatfs_sp$(LIBSUFFIX).a) (.text) # 360 BYTEs - Object OBJECT(FATFSi_pc_findin, libfatfs_sp$(LIBSUFFIX).a) (.text) # 904 BYTEs - Object OBJECT(FATFSi_pc_patcmp_vfat, libfatfs_sp$(LIBSUFFIX).a) (.text) # 436 BYTEs - Object OBJECT(FATFSi_pc_ascii_mfile, libfatfs_sp$(LIBSUFFIX).a) (.text) # 160 BYTEs - Object OBJECT(FATFSi_map_ascii_to_unicode, libfatfs_sp$(LIBSUFFIX).a) (.text) # 48 BYTEs - Object OBJECT(SDCARD_Intr_Thread, libfatfs_sp$(LIBSUFFIX).a) (.text) # 520 BYTEs - Object OBJECT(FATFSi_unicode_cmp_to_ascii_char, libfatfs_sp$(LIBSUFFIX).a) (.text) # 40 BYTEs - Object OBJECT(FATFSi_pc_read_blk, libfatfs_sp$(LIBSUFFIX).a) (.text) # 352 BYTEs -} - -#-------- -Ltdautoload LTDMAIN -{ - Address 0x02f88000 - - Object * (.ltdmain) - Library libwm_sp$(LIBSUFFIX).a \ - libnwm_sp$(LIBSUFFIX).a \ - libwvr_sp$(LIBSUFFIX).a \ - libwl_sp$(LIBSUFFIX).a - - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - - Library libfatfs_sp$(LIBSUFFIX).a \ - libaes_sp$(LIBSUFFIX).a - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) -} diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.response.template b/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.response.template deleted file mode 100644 index 88b18081..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/racoon.response.template +++ /dev/null @@ -1,40 +0,0 @@ - - - - - -l - - - - - - - -l - - - - -og ,0 -ol - - - - - -l - - - - - - - - -l - - - - -og ,0 -ol - - - - - -l - - diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/src/initScfg.c b/build/tests/DisplaySystemInformation/ARM7_racoon/src/initScfg.c deleted file mode 100644 index 611fb1b1..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/src/initScfg.c +++ /dev/null @@ -1,108 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: viewSystemInfo.h - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev:$ - $Author:$ - *---------------------------------------------------------------------------*/ - -#include -#include - -extern void INIT_InitializeScfg(void); - -#include -/*---------------------------------------------------------------------------* - Name: INIT_InitializeScfg - - Description: ƒ[ƒ_[‚ªs‚¤ SCFG ƒuƒƒbƒN‚Ö‚Ìݒ舗‚ð‘ãs‚·‚éˆ×‚ÌŠÖ”B - crt0 “à‚ÌŽãƒVƒ“ƒ{ƒ‹‚ðã‘‚«‚·‚éB - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -asm void -INIT_InitializeScfg(void) -{ - // SCFG enable? - ldr r2, =REG_EXT_ADDR - ldr r0, [r2] - tst r0, #REG_SCFG_EXT_CFG_MASK - beq @end - - /* NITRO ŒÝŠ·–³ü‚Ì‘—ŽóM‹@”\‚ð“®ì */ - ldr r1, =REG_WL_ADDR - ldrh r0, [r1] - orr r0, r0, #REG_SCFG_WL_OFFB_MASK - strh r0, [r1] - - /* V‹KƒTƒEƒ“ƒhƒuƒƒbƒN‚ւ̃NƒƒbƒN‹Ÿ‹‹ */ - ldr r1, =REG_CLK_ADDR - ldrh r0, [r1] - orr r0, r0, #REG_SCFG_CLK_SNDMCLK_MASK - strh r0, [r1] - - /* ARM7 ‘¤‚Ì DMA ‚É‚ÍV DMA ‰ñ˜H‚ðÌ—p */ - ldr r1, =REG_EXT_ADDR - ldr r0, [r1] - orr r0, r0, #REG_SCFG_EXT_DMAC_MASK - str r0, [r1] - - ldr r2, =HW_PRV_WRAM_SYSRV - //EXT(extentions) - ldr r3, =REG_EXT_ADDR - ldr r0, [r3] - str r0, [r2, #HWi_WSYS04_WRAMOFFSET] - //OPT(bonding option) - ldr r3, =REG_OP_ADDR - ldrb r0, [r3] - //A9ROM(ARM9 ROM) - ldr r3, =REG_A9ROM_ADDR - ldrb r1, [r3] - and r12,r1, #(REG_SCFG_A9ROM_RSEL_MASK | REG_SCFG_A9ROM_SEC_MASK) - orr r0, r0, r12, LSL #(HWi_WSYS08_ROM_ARM9RSEL_SHIFT - REG_SCFG_A9ROM_RSEL_SHIFT) - //A7ROM(ARM7 ROM) - ldr r3, =REG_A7ROM_ADDR - ldrb r1, [r3] - and r12,r1, #(REG_SCFG_A7ROM_RSEL_MASK | REG_SCFG_A7ROM_FUSE_MASK) - orr r0, r0, r12, LSL #(HWi_WSYS08_ROM_ARM7RSEL_SHIFT - REG_SCFG_A7ROM_RSEL_SHIFT) - //DS-WL(DS wireless) - ldr r3, =REG_WL_ADDR - ldrb r1, [r3] - and r12,r1, #REG_SCFG_WL_OFFB_MASK - orr r0, r0, r12, LSL #(HWi_WSYS08_WL_OFFB_SHIFT - REG_SCFG_WL_OFFB_SHIFT) - strb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - //OPT(JTAG info) - ldr r3, =REG_JTAG_ADDR - ldrh r0, [r3] - and r12,r0, #REG_SCFG_JTAG_DSPJE_MASK - orr r0, r0, r12, LSR #(REG_SCFG_JTAG_DSPJE_SHIFT - HWi_WSYS09_JTAG_DSPJE_SHIFT) - //CLK(only wram clock) - ldr r3, =REG_CLK_ADDR - ldrh r1, [r3] - and r12,r1, #(REG_SCFG_CLK_AESHCLK_MASK | REG_SCFG_CLK_SD2HCLK_MASK | REG_SCFG_CLK_SD1HCLK_MASK) - orr r0, r0, r12, LSL #(HWi_WSYS09_CLK_SD1HCLK_SHIFT - REG_SCFG_CLK_SD1HCLK_SHIFT) - and r12,r1, #(REG_SCFG_CLK_SNDMCLK_MASK | REG_SCFG_CLK_WRAMHCLK_MASK) - orr r0, r0, r12, LSR #(REG_SCFG_CLK_WRAMHCLK_SHIFT - HWi_WSYS09_CLK_WRAMHCLK_SHIFT) - strb r0, [r2, #HWi_WSYS09_WRAMOFFSET] - - /* A7-SCFG ƒuƒƒbƒN‚ւ̃AƒNƒZƒX‚𖳌ø‰» */ -// ldr r1, =REG_EXT_ADDR -// ldr r0, [r1] -// bic r0, r0, #REG_SCFG_EXT_CFG_MASK -// str r0, [r1] - -@end: - bx lr -} -#include diff --git a/build/tests/DisplaySystemInformation/ARM7_racoon/src/main.c b/build/tests/DisplaySystemInformation/ARM7_racoon/src/main.c deleted file mode 100644 index ccfd1a6d..00000000 --- a/build/tests/DisplaySystemInformation/ARM7_racoon/src/main.c +++ /dev/null @@ -1,992 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: main.c - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev:$ - $Author:$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" -#include "address.h" - -#ifdef SDK_SEA -#include -#endif // ifdef SDK_SEA - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -#define WM_WL_HEAP_SIZE 0x2100 -#define ATH_DRV_HEAP_SIZE 0x5800 -#define WPA_HEAP_SIZE 0x1C00 - -#define MEM_TYPE_WRAM 0 -#define MEM_TYPE_MAIN 1 - -/* Priorities of each threads */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // Žb’è -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* [TODO] ˆÈ‰º‚Í New WM ‘¤‚ɈÚs‚·‚é‚Ù‚¤‚ªD‚Ü‚µ‚¢? */ -#define NWM_DMANO NWMSP_DMA_7 -#define THREAD_PRIO_NWM_COMMMAND 9 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_NWM_WPA 10 - -// ROM “à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(u8 memType); -static OSHeapHandle InitializeAllocateSystemCore(u8 memType); -#ifdef SDK_TWLHYB -static OSHeapHandle InitializeAllocateSystemCoreEx(u8 memType); -#endif -static void DummyThread(void* arg); -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp); -#endif -static void VBlankIntr(void); -static void InitializeFatfs(void); -static void InitializeNwm(OSHeapHandle drvHeapHandle, OSHeapHandle wpaHeapHandle); -/*---------------------------------------------------------------------------* - ŠO•”ƒVƒ“ƒ{ƒ‹ŽQÆ - *---------------------------------------------------------------------------*/ -#ifdef SDK_TWLHYB -extern void SDK_LTDAUTOLOAD_LTDWRAM_BSS_END(void); -extern void SDK_LTDAUTOLOAD_LTDMAIN_BSS_END(void); -#endif - - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: ‹N“®ƒxƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void TwlSpMain(void) -{ - OSHeapHandle wramHeapHandle, mainHeapHandle; - - - // OS‰Šú‰»‚ÅARM9‚Æ“¯Šú‚·‚é‘O‚ÉSCFG‚Ìî•ñ‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚«o‚· - // ƒŒƒWƒXƒ^î•ñ‚ðƒRƒs[ - MI_CpuMove16( (void*)REG_ROM_ADDR, DISPINFO_SHARED_SCFG_REG_ADDR, DISPINFO_SHARED_SCFG_REG_SIZE ); - // WRAM‚É‘Þ”ð‚³‚ê‚Ă镪‚àƒRƒs[ - MI_CpuMove16( (void*)HWi_WSYS04_ADDR, DISPINFO_SHARED_SCFG_WRAM_ADDR, DISPINFO_SHARED_SCFG_WRAM_SIZE ); - - // OS ‰Šú‰» - OS_Init(); - PrintDebugInfo(); - - // NVRAM ‚©‚烆[ƒU[î•ñ“Ç‚Ýo‚µ - ReadUserInfo(); - - // ƒq[ƒv—̈æÝ’è - wramHeapHandle = InitializeAllocateSystem(MEM_TYPE_WRAM); - mainHeapHandle = InitializeAllocateSystem(MEM_TYPE_MAIN); - - // ƒ{ƒ^ƒ““ü—̓T[ƒ`‰Šú‰» - (void)PAD_InitXYButton(); - - // Š„‚螂݋–‰Â - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - // ƒtƒ@ƒCƒ‹ƒVƒXƒeƒ€‰Šú‰» - FS_Init(FS_DMA_NOT_USE); - FS_CreateReadServerThread(THREAD_PRIO_FS); - - if (OS_IsRunOnTwl() == TRUE) - { - InitializeFatfs(); // FATFS ‰Šú‰» -#ifndef SDK_SEA // IŽb’舒uI - // NWM ‰Šú‰» -#ifdef SDK_TWLLTD - InitializeNwm(mainHeapHandle, mainHeapHandle); // LIMITED ƒ‚[ƒh‚Å‚Í –³ü‚̃q[ƒv‚ð MAIN ‚©‚çŠm•Û -#else - InitializeNwm(wramHeapHandle, mainHeapHandle); // HYBRID ƒ‚[ƒh‚Å‚Í –³ü‚̃q[ƒv‚ð WRAM ‚©‚çŠm•Û -#endif -#endif // ifndef SDK_SEA - AES_Init(THREAD_PRIO_AES); // AES ‰Šú‰» - -#ifdef SDK_SEA - SEA_Init(THREAD_PRIO_SEA); -#endif // ifdef SDK_SEA - MCU_InitIrq(THREAD_PRIO_MCU); // MCU ‰Šú‰» - - CDC_InitLib(); // CODECƒ‰ƒCƒuƒ‰ƒŠ‰Šú‰» - } - - if (OSi_IsCodecTwlMode() == TRUE) - { - // ƒJƒƒ‰‰Šú‰» - CAMERA_Init(); - /* CODEC ‚ª TWL ƒ‚[ƒh‚łȂ¢‚ƃVƒƒƒbƒ^[‰¹‚ð‹­§“I‚ɖ‚炷 - ‹@”\‚ªŽg—p‚Å‚«‚Ü‚¹‚ñB‚±‚̈×ACODEC ‚ª TWL ƒ‚[ƒh‚Ìê‡ - ‚ɂ̂݃Jƒƒ‰ƒ‰ƒCƒuƒ‰ƒŠ‚ðŽg—p‰Â”\‚Èó‘Ô‚É‚µ‚Ü‚·B */ - } - - // ƒTƒEƒ“ƒh‰Šú‰» - SND_Init(THREAD_PRIO_SND); - if (OS_IsRunOnTwl() == TRUE) - { - SNDEX_Init(THREAD_PRIO_SNDEX); - } - - // RTC ‰Šú‰» - RTC_Init(THREAD_PRIO_RTC); - - // ‹Œ–³ü‰Šú‰» -#ifndef SDK_SEA // IŽb’舒uI - WVR_Begin(wramHeapHandle); -#endif // ifdef SDK_SEA - - // SPI ‰Šú‰» - SPI_Init(THREAD_PRIO_SPI); - - - while (TRUE) - { - OS_Halt(); - - //---- check reset - if (OS_IsResetOccurred()) - { - //VIB_STOP - CTRDG_VibPulseEdgeUpdate(NULL); - - OS_ResetSystem(); - } - - //---- check pull out cartridge - CTRDG_CheckPullOut_Polling(); - -#ifndef SDK_SMALL_BUILD - //---- check pull out card - CARD_CheckPullOut_Polling(); -#endif - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ìî•ñ‚ðƒfƒoƒbƒOo—Í‚·‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - if(OS_IsRunOnTwl()) - { - OS_TPrintf("ARM7: This component is running on TWL.\n"); - } - else - { - OS_TPrintf("ARM7: This component is running on NITRO.\n"); - } -#ifdef SDK_SEA -#ifdef SDK_TWLLTD - OS_TPrintf("ARM7: This component is \"armadillo.TWL\"\n"); -#else /* ifdef SDK_TWLLTD */ -#error invalid parameter combination -#endif /* ifdef SDK_TWLLTD else */ -#else /* ifdef SDK_SEA */ -#ifdef SDK_TWLLTD - OS_TPrintf("ARM7: This component is \"racoon.TWL\"\n"); -#else /* ifdef SDK_TWLLTD */ -#ifdef SDK_WIRELESS_IN_VRAM - OS_TPrintf("ARM7: This component is \"ichneumon.TWL\"\n"); -#else /* ifdef SDK_WIRELESS_IN_VRAM */ - OS_TPrintf("ARM7: This component is \"mongoose.TWL\"\n"); -#endif /* ifdef SDK_WIRELESS_IN_VRAM else */ -#endif /* ifdef SDK_TWLLTD else */ -#endif /* ifdef SDK_SEA else */ -} - -#include -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éBFATFS‰Šú‰»ŠÖ”“à‚ŃXƒŒƒbƒh‹xŽ~ - ‚·‚éˆ×A‹xŽ~’†“®ì‚·‚éƒ_ƒ~[‚̃XƒŒƒbƒh‚ð—§‚Ä‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - OSThread thread; - u32 stack[18]; - - // ƒ_ƒ~[ƒXƒŒƒbƒhì¬ - OS_CreateThread(&thread, DummyThread, NULL, - (void*)((u32)stack + (sizeof(u32) * 18)), sizeof(u32) * 18, OS_THREAD_PRIORITY_MAX); - OS_WakeupThreadDirect(&thread); - - - // FATFSƒ‰ƒCƒuƒ‰ƒŠ‚̉Šú‰» - if(!FATFS_Init( FATFS_DMA_4, FATFS_DMA_5, THREAD_PRIO_FATFS)) - { - // do nothing - } - - // ƒ_ƒ~[ƒXƒŒƒbƒh”jŠü - OS_KillThread(&thread, NULL); -} -#include - -#include -/*---------------------------------------------------------------------------* - Name: InitializeNwm - Description: NWMƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeNwm(OSHeapHandle drvHeapHandle, OSHeapHandle wpaHeapHandle) -{ - NwmspInit nwmInit; - - nwmInit.dmaNo = NWM_DMANO; - nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMMAND; - nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT; - nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO; - -#ifdef SDK_TWLLTD - nwmInit.drvHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */ -#else - nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; /* [TODO] */ -#endif - nwmInit.drvHeap.handle = drvHeapHandle; - - nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA; - nwmInit.wpaHeap.id = OS_ARENA_MAIN_SUBPRIV; /* [TODO] */ - nwmInit.wpaHeap.handle = wpaHeapHandle; - - NWMSP_Init(&nwmInit); - -} -#include - -#include -/*---------------------------------------------------------------------------* - Name: DummyThread - Description: FATFSƒ‰ƒCƒuƒ‰ƒŠACDCƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éÛ‚É—§‚Ä‚éƒ_ƒ~[‚Ì - ƒXƒŒƒbƒhB - Arguments: arg - Žg—p‚µ‚È‚¢B - Returns: None. - *---------------------------------------------------------------------------*/ -static void -DummyThread(void* arg) -{ -#pragma unused(arg) - while (TRUE) - { - } -} -#include - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: ƒƒ‚ƒŠŠ„“–‚ăVƒXƒeƒ€‚ð‰Šú‰»‚·‚éB - Arguments: None. - Returns: OSHeapHandle - WRAM ƒAƒŠ[ƒiã‚ÉŠm•Û‚³‚ꂽƒq[ƒv‚̃nƒ“ƒhƒ‹‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static OSHeapHandle InitializeAllocateSystem(u8 memType) -{ - - OSHeapHandle hh; - -#ifdef SDK_TWLHYB - if( OS_IsRunOnTwl() == TRUE) - { - hh = InitializeAllocateSystemCoreEx(memType); /* Hybrid ‚ð TWL ‚Å“®ì‚³‚¹‚é */ - } - else -#endif - { - hh = InitializeAllocateSystemCore(memType); /* Hybrid ‚ð DS ‚Å“®ì‚³‚¹‚é or Limited */ - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystemCore - Description: ƒƒ‚ƒŠŠ„“–‚ăVƒXƒeƒ€‚ð‰Šú‰»‚·‚éB - Hybrid ‚ð DS ‚Å“®ì‚³‚¹‚½ê‡ALimited ‚ð TWL ‚Å“®ì‚³‚¹‚½ê‡‚É“®ì - Arguments: None. - Returns: OSHeapHandle - WRAM ƒAƒŠ[ƒiã‚ÉŠm•Û‚³‚ꂽƒq[ƒv‚̃nƒ“ƒhƒ‹‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static OSHeapHandle InitializeAllocateSystemCore(u8 memType) -{ - OSHeapHandle hh; - - /* MAIN */ - if(memType == MEM_TYPE_MAIN) - { - { - void* lo = (void*)OS_GetSubPrivArenaLo(); - void* hi = (void*)OS_GetSubPrivArenaHi(); - - // ƒAƒŠ[ƒi‚ð 0 ƒNƒŠƒA - MI_CpuClear8(lo, (u32)hi - (u32)lo); - - // ƒƒ‚ƒŠŠ„‚è“–‚ĉŠú‰» - lo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, lo, hi, 1); - // ƒAƒŠ[ƒi‰ºˆÊƒAƒhƒŒƒX‚ðÝ’è - OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, lo); - - // ƒq[ƒvì¬ - hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, lo, hi); - - if (hh < 0) - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - } - // ƒJƒŒƒ“ƒgƒq[ƒv‚ÉÝ’è - (void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh); - // ƒq[ƒvƒTƒCƒY‚ÌŠm”F - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh); - - if( heapSize <= 0) /* ƒq[ƒv—̈æ‚ÌŠm•Û‚ÉŽ¸”s */ - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - - #ifdef SDK_TWLLTD - { - if ((ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE) > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, ATH_DRV_HEAP_SIZE + WPA_HEAP_SIZE); - } - } - #endif - OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize); - } - } - - /* WRAM */ - if( memType == MEM_TYPE_WRAM) - { - { - void* lo = (void*)OS_GetWramSubPrivArenaLo(); - void* hi = (void*)OS_GetWramSubPrivArenaHi(); - - // ƒAƒŠ[ƒi‚ð 0 ƒNƒŠƒA - MI_CpuClear8(lo, (u32)hi - (u32)lo); - - // ƒƒ‚ƒŠŠ„‚è“–‚ĉŠú‰» - lo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, lo, hi, 1); - // ƒAƒŠ[ƒi‰ºˆÊƒAƒhƒŒƒX‚ðÝ’è - OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, lo); - - // ƒq[ƒvì¬ - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, lo, hi); - - if (hh < 0) - { - OS_Panic("ARM7: Failed to WRAM create heap.\n"); - } - } - - // ƒJƒŒƒ“ƒgƒq[ƒv‚ÉÝ’è - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - // ƒq[ƒvƒTƒCƒY‚ÌŠm”F - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if( heapSize <= 0) /* ƒq[ƒv—̈æ‚ÌŠm•Û‚ÉŽ¸”s */ - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - - if (WM_WL_HEAP_SIZE > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE); - } - OS_TPrintf("ARM7: WRAM heap size is %d\n", heapSize); - } - } - return hh; -} - -#ifdef SDK_TWLHYB -#include -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystemCoreEx - Description: ƒƒ‚ƒŠŠ„“–‚ăVƒXƒeƒ€‚ð‰Šú‰»‚·‚éB - Hybrid ‚ð TWL ‚Å“®ì‚³‚¹‚½ê‡‚É“®ì - Arguments: None. - Returns: OSHeapHandle - WRAM ƒAƒŠ[ƒiã‚ÉŠm•Û‚³‚ꂽƒq[ƒv‚̃nƒ“ƒhƒ‹‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static OSHeapHandle InitializeAllocateSystemCoreEx(u8 memType) -{ - OSHeapHandle hh; - - if(memType == MEM_TYPE_MAIN) - { - { - void* basicLo = (void*)OS_GetSubPrivArenaLo(); - void* basicHi = (void*)OS_GetSubPrivArenaHi(); - void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDMAIN_BSS_END, 32); - void* extraHi = (void*)MATH_ROUNDDOWN(HW_MAIN_MEM_SUB, 32); - -#if SDK_DEBUG - // debug information - OS_TPrintf("ARM7: MAIN arena basicLo = %p\n", basicLo); - OS_TPrintf("ARM7: MAIN arena basicHi = %p\n", basicHi); - OS_TPrintf("ARM7: MAIN arena extraLo = %p\n", extraLo); - OS_TPrintf("ARM7: MAIN arena extraHi = %p\n", extraHi); -#endif - // ƒAƒŠ[ƒi‚ð 0 ƒNƒŠƒA - MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo); - MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo); - - // ƒƒ‚ƒŠŠ„‚è“–‚ĉŠú‰» - if ((u32)basicLo < (u32)extraLo) - { - basicLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, basicLo, extraHi, 1); - // ƒAƒŠ[ƒi‰ºˆÊƒAƒhƒŒƒX‚ðÝ’è - OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, basicLo); - } - else - { - extraLo = OS_InitAlloc(OS_ARENA_MAIN_SUBPRIV, extraLo, basicHi, 1); - } - - // ƒq[ƒvì¬ - hh = OS_CreateHeap(OS_ARENA_MAIN_SUBPRIV, basicLo, basicHi); - - if (hh < 0) - { - OS_Panic("ARM7: Failed to create MAIN heap.\n"); - } - - // ƒq[ƒvƒTƒCƒY‚ÌŠm”F - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh); - - if( heapSize <= 0) /* ƒq[ƒv—̈æ‚ÌŠm•Û‚ÉŽ¸”s */ - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - - OS_TPrintf("ARM7: MAIN heap size is %d (before AddToHead)\n", heapSize); - } - - // ƒq[ƒv‚ÉŠg’£ƒuƒƒbƒN‚ð’ljÁ - OS_AddToHeap(OS_ARENA_MAIN_SUBPRIV, hh, extraLo, extraHi); - } - // ƒJƒŒƒ“ƒgƒq[ƒv‚ÉÝ’è - (void)OS_SetCurrentHeap(OS_ARENA_MAIN_SUBPRIV, hh); - // ƒq[ƒvƒTƒCƒY‚ÌŠm”F - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_MAIN_SUBPRIV, hh); - - if( heapSize <= 0) /* ƒq[ƒv—̈æ‚ÌŠm•Û‚ÉŽ¸”s */ - { - OS_Panic("ARM7: Failed to MAIN create heap.\n"); - } - - if ((WPA_HEAP_SIZE) > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WPA_HEAP_SIZE); - } - OS_TPrintf("ARM7: MAIN heap size is %d\n", heapSize); - } - } - - if(memType == MEM_TYPE_WRAM) - { - { - void* basicLo = (void*)OS_GetWramSubPrivArenaLo(); - void* basicHi = (void*)OS_GetWramSubPrivArenaHi(); - void* extraLo = (void*)MATH_ROUNDUP((u32)SDK_LTDAUTOLOAD_LTDWRAM_BSS_END, 32); - void* extraHi = (void*)MATH_ROUNDDOWN(HW_WRAM_A_HYB_END, 32); - -#if SDK_DEBUG - // debug information - OS_TPrintf("ARM7: WRAM arena basicLo = %p\n", basicLo); - OS_TPrintf("ARM7: WRAM arena basicHi = %p\n", basicHi); - OS_TPrintf("ARM7: WRAM arena extraLo = %p\n", extraLo); - OS_TPrintf("ARM7: WRAM arena extraHi = %p\n", extraHi); -#endif - - // ƒAƒŠ[ƒi‚ð 0 ƒNƒŠƒA - MI_CpuClear8(basicLo, (u32)basicHi - (u32)basicLo); - MI_CpuClear8(extraLo, (u32)extraHi - (u32)extraLo); - - // ƒƒ‚ƒŠŠ„‚è“–‚ĉŠú‰» - if ((u32)basicLo < (u32)extraLo) - { - basicLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, basicLo, extraHi, 1); - // ƒAƒŠ[ƒi‰ºˆÊƒAƒhƒŒƒX‚ðÝ’è - OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, basicLo); - } - else - { - extraLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, extraLo, basicHi, 1); - } - - // ƒq[ƒvì¬ - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, basicLo, basicHi); - - if (hh < 0) - { - OS_Panic("ARM7: Failed to WRAM create heap.\n"); - } - - // ƒq[ƒvƒTƒCƒY‚ÌŠm”F - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if( heapSize <= 0) /* ƒq[ƒv—̈æ‚ÌŠm•Û‚ÉŽ¸”s */ - { - OS_Panic("ARM7: Failed to WRAM create heap.\n"); - } - - if (WM_WL_HEAP_SIZE > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE); - } - OS_TPrintf("ARM7: WRAM heap size is %d (before AddToHeap)\n", heapSize); - } - - // ƒq[ƒv‚ÉŠg’£ƒuƒƒbƒN‚ð’ljÁ - OS_AddToHeap(OS_ARENA_WRAM_SUBPRIV, hh, extraLo, extraHi); - } - - // ƒJƒŒƒ“ƒgƒq[ƒv‚ÉÝ’è - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - // ƒq[ƒvƒTƒCƒY‚ÌŠm”F - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if( heapSize <= 0) /* ƒq[ƒv—̈æ‚ÌŠm•Û‚ÉŽ¸”s */ - { - OS_Panic("ARM7: Failed to WRAM create heap.\n"); - } - - if (ATH_DRV_HEAP_SIZE + WM_WL_HEAP_SIZE > heapSize) - { - OS_Panic("Insufficient heap size. (0x%x < 0x%x)\n", heapSize, WM_WL_HEAP_SIZE + ATH_DRV_HEAP_SIZE ); - } - OS_TPrintf("ARM7: WRAM heap size is %d\n", heapSize); - } - } - - return hh; -} -#include -#endif - -#ifdef WM_PRECALC_ALLOWEDCHANNEL -extern u16 WMSP_GetAllowedChannel(u16 bitField); -#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAM‚©‚烆[ƒU[î•ñ‚ð“Ç‚Ýo‚µA‹¤—L—̈æ‚É“WŠJ‚·‚éB - ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚éƒoƒbƒtƒ@‚ª—¼•û‰ó‚ê‚Ä‚¢‚éꇂÍA - ‹¤—L—̈æ‚̃†[ƒU[î•ñŠi”[ꊂðƒNƒŠƒA‚·‚éB - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // ƒIƒtƒZƒbƒg“Ç‚Ýo‚µ -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCDEx(temp); -#else - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‹N“®‚ð—}§ - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ƒjƒbƒNƒl[ƒ€‚ð•â³ - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // ƒRƒƒ“ƒg‚ð•â³ - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // ‹¤—L—̈æ‚ɃXƒgƒA - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // ‹¤—L—̈æ‚ðƒNƒŠƒA - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // –³üMACƒAƒhƒŒƒX‚ðƒ†[ƒU[î•ñ‚ÌŒã‚ë‚É“WŠJ - { - u8 wMac[6]; - - // NVRAM‚©‚çMACƒAƒhƒŒƒX‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // ‹¤—L—̈æ‚É“WŠJ - MI_CpuCopy8(wMac, p, 6); - } - -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚©‚çŽg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - { - u16 enableChannel; - u16 allowedChannel; - - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // Žg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ(MACƒAƒhƒŒƒX‚ÌŒã‚ë‚Ì2ƒoƒCƒg) - p = (u8 *)((u32)p + 6); - // ‹¤—L—̈æ‚É“WŠJ - *((u16 *)p) = allowedChannel; - } -#endif -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ƒ†[ƒU[î•ñ‚ªŠg’£ƒRƒ“ƒtƒBƒO‚ɑΉž‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚𒲸‚·‚éB - - Arguments: None. - - Returns: BOOL - Šg’£ƒ†[ƒU[î•ñ‚ª—LŒø‚ÈꇂÉTRUE‚ð•Ô‚·B - –³Œø‚Å‚ ‚éꇂÍFALSE‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM“à“o˜^ƒGƒŠƒA‚Ìî•ñ‚©‚çAŠg’£Œ¾ŒêƒR[ƒh‚̑ΉžŒ¾Œêƒrƒbƒgƒ}ƒbƒv - ‚ÉŠÖ‚·‚éî•ñ‚ð’Šo‚·‚éB - - Arguments: None. - - Returns: u16 - DSƒJ[ƒhA‚à‚µ‚­‚Í ƒ}ƒ‹ƒ`ƒu[ƒgƒoƒCƒiƒŠ‚ª‘Ήž‚µ‚Ä‚¢‚é - Œ¾ŒêƒR[ƒh‚̃rƒbƒgƒ}ƒbƒv‚ð•Ô‚·BDSƒJ[ƒh‚ªŠg’£Œ¾Œê - ƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡‚Í 0 ‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM“à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh‚ðŠm”F - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - 3: ƒAƒvƒŠ‚Ì‹N“®‚ð—}§‚·‚ׂ«B - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚é‚© - if (IsValidConfigEx()) - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚éê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // Šg’£ƒf[ƒ^—p CRC ‚ª³‚µ‚­Aݒ茾ŒêƒR[ƒh‚ª‘ΉžŒ¾ŒêƒR[ƒh‚Ɋ܂܂ê‚éꇂɳ“–‚Æ”»’f - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // Šg’£Œ¾ŒêƒR[ƒh‚Å’Ê팾ŒêƒR[ƒh‚ðã‘‚« - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚邪A - // IPL2‚̑ΉžŒ¾ŒêƒR[ƒh‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªŠÜ‚Ü‚ê‚È‚¢ê‡‚Í‹N“®‚ð—}§ - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚éꇂ͋N“®‚ð—}§ - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - crc_flag |= (1 << i); - } - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // Šeƒ~ƒ‰[ƒf[ƒ^‚ÌCRC & saveCount³“–«ƒ`ƒFƒbƒN - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC‚ª³‚µ‚­AsaveCount’l‚ª0x80–¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’fB - crc_flag |= (1 << i); - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ƒuƒ‰ƒ“ƒNŠ„‚螂݃xƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile b/build/tests/DisplaySystemInformation/ARM9/Makefile deleted file mode 100644 index e9e4bbbd..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 Makefile.2 Makefile.3\ - Makefile.4 Makefile.5 Makefile.6 Makefile.7\ - Makefile.8 Makefile.9 Makefile.10 Makefile.11\ - Makefile.12 Makefile.13 Makefile.14 Makefile.15\ - Makefile.16 Makefile.17 -#SUBMAKES = Makefile.0 - - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -rb: - ruby makeMaking.rb - -do-build : - $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.0 b/build/tests/DisplaySystemInformation/ARM9/Makefile.0 deleted file mode 100644 index cb3eda39..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.0 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 0 -IS_SECURE_APP = FALSE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B0A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.1 b/build/tests/DisplaySystemInformation/ARM9/Makefile.1 deleted file mode 100644 index 80bab1c8..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.1 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 1 -IS_SECURE_APP = FALSE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B1A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.10 b/build/tests/DisplaySystemInformation/ARM9/Makefile.10 deleted file mode 100644 index 0711243c..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.10 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 10 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = TRUE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B8A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.11 b/build/tests/DisplaySystemInformation/ARM9/Makefile.11 deleted file mode 100644 index 27d1ce33..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.11 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 11 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = TRUE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B9A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.12 b/build/tests/DisplaySystemInformation/ARM9/Makefile.12 deleted file mode 100644 index b8fe42b3..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.12 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 12 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = FALSE -INVISIBLE_SCFG = TRUE -GAMECODE = 0BAA -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.13 b/build/tests/DisplaySystemInformation/ARM9/Makefile.13 deleted file mode 100644 index 93fd362c..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.13 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 13 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = FALSE -INVISIBLE_SCFG = FALSE -GAMECODE = 0BBA -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.14 b/build/tests/DisplaySystemInformation/ARM9/Makefile.14 deleted file mode 100644 index 2cdaeca5..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.14 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 14 -IS_SECURE_APP = TRUE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = TRUE -INVISIBLE_SCFG = TRUE -GAMECODE = 022A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.15 b/build/tests/DisplaySystemInformation/ARM9/Makefile.15 deleted file mode 100644 index 91ea73d3..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.15 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 15 -IS_SECURE_APP = TRUE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = TRUE -INVISIBLE_SCFG = FALSE -GAMECODE = 023A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.16 b/build/tests/DisplaySystemInformation/ARM9/Makefile.16 deleted file mode 100644 index 0c7889df..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.16 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 16 -IS_SECURE_APP = TRUE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = TRUE -GAMECODE = 024A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.17 b/build/tests/DisplaySystemInformation/ARM9/Makefile.17 deleted file mode 100644 index 80892409..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.17 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 17 -IS_SECURE_APP = TRUE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = FALSE -GAMECODE = 025A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.2 b/build/tests/DisplaySystemInformation/ARM9/Makefile.2 deleted file mode 100644 index e093bac7..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.2 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 2 -IS_SECURE_APP = FALSE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B2A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.3 b/build/tests/DisplaySystemInformation/ARM9/Makefile.3 deleted file mode 100644 index 71dede94..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.3 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 3 -IS_SECURE_APP = FALSE -IS_NAND_APP = FALSE -NAND_ACCESS = FALSE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B3A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.4 b/build/tests/DisplaySystemInformation/ARM9/Makefile.4 deleted file mode 100644 index fbc31554..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.4 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 4 -IS_SECURE_APP = FALSE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = TRUE -GAMECODE = 020A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.5 b/build/tests/DisplaySystemInformation/ARM9/Makefile.5 deleted file mode 100644 index e7c3a0ba..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.5 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 5 -IS_SECURE_APP = FALSE -IS_NAND_APP = TRUE -NAND_ACCESS = TRUE -AES_SLOT = DONTCARE -INVISIBLE_SCFG = FALSE -GAMECODE = 021A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.6 b/build/tests/DisplaySystemInformation/ARM9/Makefile.6 deleted file mode 100644 index 2d721c30..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.6 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 6 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = TRUE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B4A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.7 b/build/tests/DisplaySystemInformation/ARM9/Makefile.7 deleted file mode 100644 index 1fc0debe..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.7 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 7 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = TRUE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B5A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.8 b/build/tests/DisplaySystemInformation/ARM9/Makefile.8 deleted file mode 100644 index 5e6f23c9..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.8 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 8 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = TRUE -GAMECODE = 0B6A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/Makefile.9 b/build/tests/DisplaySystemInformation/ARM9/Makefile.9 deleted file mode 100644 index 96a07b8c..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/Makefile.9 +++ /dev/null @@ -1,143 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### -FILE_IDX = 9 -IS_SECURE_APP = TRUE -IS_NAND_APP = FALSE -NAND_ACCESS = TRUE -AES_SLOT = FALSE -INVISIBLE_SCFG = FALSE -GAMECODE = 0B7A -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/filemove.rb b/build/tests/DisplaySystemInformation/ARM9/filemove.rb deleted file mode 100755 index 6fb1af4c..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/filemove.rb +++ /dev/null @@ -1,23 +0,0 @@ -#! ruby -Ks -startDir = "/cygdrive/c/home/TWL_IPL/build/tests/DisplaySystemInformation/ARM9/bin/ARM9-TS.LTD.thumb/Rom" -dstDir = "/cygdrive/c/home/TWL_IPL/build/tests/DisplaySystemInformation/ARM9/bin/ARM9-TS.LTD.thumb/roms" - -Dir::chdir "./bin/ARM9-TS.LTD.thumb/Rom" - -dirList = Dir::entries "." -`mkdir #{dstDir}` - -for dir in dirList - - puts "===== #{dir} =====" - Dir::chdir "./#{dir}" - - Dir::glob("./*.{tad,srl}").each {|f| - puts "cp #{f} #{dstDir}/" - `cp #{f} #{dstDir}/` - } - - - - Dir::chdir startDir -end diff --git a/build/tests/DisplaySystemInformation/ARM9/main_normal.rsf b/build/tests/DisplaySystemInformation/ARM9/main_normal.rsf deleted file mode 100644 index 10ed7d54..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/main_normal.rsf +++ /dev/null @@ -1,250 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "DispInfo" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - #BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - BannerFile ../banner/$(DISPINFO_GAMECODE).bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess $(DISPINFO_SDACCESS) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess $(DISPINFO_NANDACCESS) - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - LockSCFG $(DISPINFO_LOCKSCFG) - -# AESSlotƒtƒ‰ƒO‚̓m[ƒ}ƒ‹ƒAƒvƒŠ‚ł͗˜—p‚Å‚«‚È‚¢ - HwAESSlotA_SSLClientCert FALSE - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType $(DISPINFO_APPTYPE) - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media $(DISPINFO_MEDIA) - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure $(DISPINFO_SECURE) - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(DISPINFO_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile FALSE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/main_secure.rsf b/build/tests/DisplaySystemInformation/ARM9/main_secure.rsf deleted file mode 100644 index 3f2e6385..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/main_secure.rsf +++ /dev/null @@ -1,247 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - - # TITLE NAME: Your product name within 12bytes - # - TitleName "DispInfo" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile ../banner/$(DISPINFO_GAMECODE).bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess $(DISPINFO_SDACCESS) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess $(DISPINFO_NANDACCESS) - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - LockSCFG $(DISPINFO_LOCKSCFG) - HwAESSlotA_SSLClientCert $(DISPINFO_AES) - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - #Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType $(DISPINFO_APPTYPE) -# AppType SYSTEM - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media $(DISPINFO_MEDIA) -# Media NAND - # - # Data only title : [TRUE/FALSE] - # don't have to edit - ##DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure $(DISPINFO_SECURE) -# Secure TRUE - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(DISPINFO_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile FALSE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/makeConditions.txt b/build/tests/DisplaySystemInformation/ARM9/makeConditions.txt deleted file mode 100644 index 99e6ff33..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/makeConditions.txt +++ /dev/null @@ -1,19 +0,0 @@ -FILE_IDX IS_SECURE_APP IS_NAND_APP NAND_ACCESS AES_SLOT INVISIBLE_SCFG GAMECODE -0 0 0 1 D 1 0B0A -1 0 0 1 D 0 0B1A -2 0 0 0 D 1 0B2A -3 0 0 0 D 0 0B3A -4 0 1 1 D 1 020A -5 0 1 1 D 0 021A -6 1 0 1 1 1 0B4A -7 1 0 1 1 0 0B5A -8 1 0 1 0 1 0B6A -9 1 0 1 0 0 0B7A -10 1 0 0 1 1 0B8A -11 1 0 0 1 0 0B9A -12 1 0 0 0 1 0BAA -13 1 0 0 0 0 0BBA -14 1 1 1 1 1 022A -15 1 1 1 1 0 023A -16 1 1 1 0 1 024A -17 1 1 1 0 0 025A diff --git a/build/tests/DisplaySystemInformation/ARM9/makeFooter.txt b/build/tests/DisplaySystemInformation/ARM9/makeFooter.txt deleted file mode 100644 index 6231895a..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/makeFooter.txt +++ /dev/null @@ -1,115 +0,0 @@ -###################################### - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - - -MACRO_FLAGS += -DNAM_ENABLE=$(IS_SECURE_APP) -DDISPINFO_BIN_IDX=$(FILE_IDX) -TWL_NANDAPP = $(IS_NAND_APP) - -DISP_INFO = $(call eupath,$(TWL_IPL_RED_ROOT)/build/tests/DisplaySystemInformation) - -SUBDIRS = - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c viewSystemInfo.c drawFunc.c control.c\ - strResource.c misc.c util.c\ - get_versionData.c get_sysmenu.c get_scfg.c get_owner.c\ - get_hw.c get_parental.c get_other.c\ - get_secureUser.c get_font.c get_wl.c get_whitelist.c\ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include \ - $(DISP_INFO)/common/include \ - $(ES_ROOT)/twl/include - -TARGET_BIN = DispInfo_$(FILE_IDX).$(FILE_SUFFIX) - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - - - -#============================================================================= - -include $(TWLSDK_ROOT)/add-ins/es/commondefs.es -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifeq ($(IS_SECURE_APP),TRUE) - DEFAULT_COMP_ARM7 = armadillo - WRAM_MAP = MAP_TS_SCR - APPTYPE = SYSTEM - MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - ROM_SPEC = main_secure.rsf - MAKETAD_OPTION += -s -else - WRAM_MAP = $(MAKEROM_WRAM_MAPPING) - DEFAULT_COMP_ARM7 = racoon - APPTYPE = USER - ROM_SPEC = main_normal.rsf -endif - -ifeq ($(IS_NAND_APP),TRUE) - MEDIA = NAND - FILE_SUFFIX = tad -else - MEDIA = GAMECARD - FILE_SUFFIX = srl -endif - -ifeq ($(INVISIBLE_SCFG),TRUE) - SCFG_SUFFIX = LockSCFG -else - SCFG_SUFFIX = UnlockSCFG -endif - -BINDIR = ./bin/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) -OBJDIR = ./obj/$(TWL_BUILDTYPE)/DispInfo_$(FILE_IDX) - - -MAKEROM_FLAGS += -DDISPINFO_WRAM_MAP=$(WRAM_MAP) \ - -DDISPINFO_APPTYPE=$(APPTYPE) \ - -DDISPINFO_SECURE=$(IS_SECURE_APP) \ - -DDISPINFO_MEDIA=$(MEDIA) \ - -DDISPINFO_NANDACCESS=$(NAND_ACCESS) \ - -DDISPINFO_LOCKSCFG=$(INVISIBLE_SCFG) \ - -DDISPINFO_AES=$(AES_SLOT) \ - -DDISPINFO_GAMECODE=$(GAMECODE) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - - -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7_$(DEFAULT_COMP_ARM7)/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -#include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/ARM9/makeHeader.txt b/build/tests/DisplaySystemInformation/ARM9/makeHeader.txt deleted file mode 100644 index 0fcb308b..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/makeHeader.txt +++ /dev/null @@ -1,21 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - DisplaySystemInformation -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -###################################### \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/makeMaking.rb b/build/tests/DisplaySystemInformation/ARM9/makeMaking.rb deleted file mode 100755 index 06b04a2a..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/makeMaking.rb +++ /dev/null @@ -1,54 +0,0 @@ -fHead = open("makeHeader.txt") -fFoot = open("makeFooter.txt") -contentHead = fHead.read -contentFoot = fFoot.read -fHead.close -fFoot.close - -fCond = open("makeConditions.txt") -numArg = 0 - -argList = Array.new -fCond.gets.split(/\s+/).each do |arg| - numArg += 1 - argList.push arg -end - -puts "argList" -puts argList - - -fileIdx = 0 - -while l = fCond.gets - next if l[0] == '#' - argIdx = 0 - - puts "file making: Makefile." + fileIdx.to_s - f = open("Makefile." + fileIdx.to_s, "w") - f.puts contentHead - - l.split(/\t+/).each do |value| - strVal = "TRUE" if value == "1" - strVal = "FALSE" if value == "0" - strVal = "DONTCARE" if value == "D" - - if argList[argIdx] == "GAMECODE" || argList[argIdx] == "FILE_IDX" - argSet = "#{argList[argIdx]}\t=\t#{value}" - else - argSet = "#{argList[argIdx]}\t=\t#{strVal}" - end - - f.puts argSet - - argIdx += 1 - end - - f.puts contentFoot - f.close - fileIdx += 1 -end - -fCond.close - -(0...fileIdx).each{ |i| print "Makefile.#{i} "} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/control.c b/build/tests/DisplaySystemInformation/ARM9/src/control.c deleted file mode 100644 index d74e83d5..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/control.c +++ /dev/null @@ -1,425 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: control.c - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "misc.h" -#include "drawFunc.h" -#include "control.h" -#include "strResource.h" -#include "viewSystemInfo.h" - -#define SAVE_COUNT_MASK 0x7f // saveCount‚Ì’l‚͈̔͂ðƒ}ƒXƒN‚·‚éB(0x00-0x7fj - - -// TSFƒwƒbƒ_ -typedef struct TSFHeader{ - union digest { - u8 sha1[ SVC_SHA1_DIGEST_SIZE ]; // SHA-1ƒ_ƒCƒWƒFƒXƒg - u8 rsa[ RSA_KEY_LENGTH ]; // RSA–¼ - u8 dst[ RSA_KEY_LENGTH ]; // “]‘——p‚ÌÅ‘åƒTƒCƒY—v‘f - }digest; - u8 version; // ƒf[ƒ^ver. - u8 saveCount; // ƒZ[ƒuƒJƒEƒ“ƒgiƒ~ƒ‰[ƒŠƒ“ƒO‚µ‚È‚¢ƒtƒ@ƒCƒ‹‚ÍŽg—p‚µ‚È‚¢j - u8 rsv[2]; // —\–ñ - u32 bodyLength; // ƒf[ƒ^’· -}TSFHeader; // 134bytes - -static const char *s_TSDPath[] = { - (const char *)"nand:/shared1/TWLCFG0.dat", - (const char *)"nand:/shared1/TWLCFG1.dat", -}; - - -static int selectLine[ROOTMENU_SIZE+1]; -BOOL resetUserData( void ); -BOOL breakUserData( u8 idx ); -BOOL resetRTC( void ); -static void TSDi_ClearSettingsDirect( LCFGTWLSettingsData *pTSD ); -static BOOL LCFGi_TSD_WriteSettingsDirectForRecovery( const LCFGTWLSettingsData *pSrcInfo, int index ); -static BOOL LCFGi_TSF_WriteFile( char *pPath, TSFHeader *pHeader, const void *pSrcBody, u8 *pSaveCount ); - - - -BOOL executeControl( int *line, int *changeLine, u8 *mode ) -{ - BOOL controlFlag = FALSE; - - // ㉺‚Å€–Ú•ÏX - if( ( pad.trg & PAD_KEY_UP ) || ( pad.trg & PAD_KEY_DOWN ) ) - { - controlFlag = TRUE; - *changeLine = !*changeLine; - } - - if( ( pad.trg & PAD_BUTTON_A ) && *changeLine ) - { - BOOL result = TRUE; - controlFlag = TRUE; - - *mode |= MODE_RESULT_DISPLAY_MASK; - - switch( *line ) - { - case MENU_RESET_INFO: - result = resetUserData(); - break; - - case MENU_BREAK_DATA: - result &= breakUserData(0); - result &= breakUserData(1); - break; - - case MENU_RTC_RESET: - result = resetRTC(); - break; - } - - *mode = (u8) ((*mode & ~MODE_RESULT_MASK ) | ( result << MODE_RESULT_SHIFT) ); - } - - // B‚ŃLƒƒƒ“ƒZƒ‹‚µ‚Ä–ß‚é - if( (pad.trg & PAD_BUTTON_B) || - ( ( pad.trg & PAD_BUTTON_A ) && !*changeLine) ) - { - controlFlag = TRUE; - *mode = 0; - } - - return controlFlag; -} - -ChangeCotnrolResult changeControl( int *menu, int *line, int *changeLine, u8 *mode ) -{ - int linemax = gAllInfo[*menu][*line].numKindName; - BOOL controlFlag = FALSE; - - if( !gAllInfo[*menu][*line].changable ) - { - // ‰½‚©‚̊ԈႢ - *mode = 0; - return CHANGE_CONTROL; - } - - // ㉺‚Å€–Ú•ÏX - if( pad.trg & PAD_KEY_UP ) - { - controlFlag = TRUE; - - if( --(*changeLine) < 0 ) - { - // ƒ‰ƒCƒ“‚ðƒfƒNƒŠƒƒ“ƒg‚µ‚½Œ‹‰Êƒ}ƒCƒiƒX‚ɂȂÁ‚½‚çˆê”ÔÅŒã‚Ö - *changeLine = linemax - 1; - } - } - else if( pad.trg & PAD_KEY_DOWN ) - { - controlFlag = TRUE; - - if( ++(*changeLine) >= linemax ) - { - // ƒ‰ƒCƒ“‚ðƒCƒ“ƒNƒŠƒƒ“ƒg‚µ‚½Œ‹‰ÊAmaxline‚ð’´‚¦‚½‚çʼn‚Ö - *changeLine = 0; - } - } - - if( pad.trg & PAD_BUTTON_A ) - { - switch( gAllInfo[*menu][*line].argType ) - { - case ARG_INT: - gAllInfo[*menu][*line].changeFunc.cInt(*changeLine); - break; - - case ARG_BOOL: - gAllInfo[*menu][*line].changeFunc.cBool(*changeLine); - break; - - case ARG_OTHER: - // ˜_—’l‚Å‚àint‚Å‚à“n‚¹‚È‚¢ŠÖ”‚ÍŽc”O‚ȑΉž‚ð‚·‚é - if( *menu == MENU_SCFG_ARM7 && *line == SCFG_ARM9_RST_DSP ) - { - *changeLine == 0 ? SCFG_ReleaseResetDSP(): SCFG_ResetDSP(); - } - else if( *menu == MENU_SCFG_ARM7 && *line == SCFG_ARM9_EXT_PS ) - { - SCFGPsramBoundary idx = SCFG_PSRAM_BOUNDARY_4MB; - - switch(*changeLine) - { - case 0: - idx = SCFG_PSRAM_BOUNDARY_4MB; - break; - case 1: - idx = SCFG_PSRAM_BOUNDARY_16MB; - break; - case 2: - idx = SCFG_PSRAM_BOUNDARY_32MB; - break; - } - - SCFG_SetPsramBoundary( idx ); - - } - - else if( *menu == MENU_SCFG_ARM7 && *line == SCFG_ARM9_EXT_CFG ) - { - if( *changeLine == 0 ) - { - SCFG_SetConfigBlockInaccessible(); - } - } - - break; - } - - return CHANGE_VALUE_CHANGED; - } - - // B‚ŃLƒƒƒ“ƒZƒ‹‚µ‚Ä–ß‚é - if( pad.trg & PAD_BUTTON_B ) - { - controlFlag = TRUE; - *mode = 0; - } - - return controlFlag ? CHANGE_CONTROL : CHANGE_NOTHING ; -} - - -BOOL control( int *menu, int *line, int *changeLine, u8 *mode ) -{ - int linemax = s_numMenu[*menu]; // ‘I‘𒆃y[ƒW‚Ì€–Ú” - BOOL controlFlag = FALSE; // ‰½‚©‘€ì‚ª‚ ‚Á‚½‚çTRUE‚ɂȂé - - // ㉺‚Å€–Ú•ÏX - if( pad.trg & PAD_KEY_UP ) - { - controlFlag = TRUE; - - if( --(*line) < 0 ) - { - // ƒ‰ƒCƒ“‚ðƒfƒNƒŠƒƒ“ƒg‚µ‚½Œ‹‰Êƒ}ƒCƒiƒX‚ɂȂÁ‚½‚çˆê”ÔÅŒã‚Ö - *line = linemax - 1; - } - } - else if( pad.trg & PAD_KEY_DOWN ) - { - controlFlag = TRUE; - - if( ++(*line) >= linemax ) - { - // ƒ‰ƒCƒ“‚ðƒCƒ“ƒNƒŠƒƒ“ƒg‚µ‚½Œ‹‰ÊAmaxline‚ð’´‚¦‚½‚çʼn‚Ö - *line = 0; - } - } - - // ¶‰E‚Ńy[ƒW‘—‚è - if( pad.trg & PAD_KEY_RIGHT ) - { - controlFlag = TRUE; - *line += DISP_NUM_LINES - 2; - - if( *line >= linemax ) - { - *line = linemax - 1; - } - } - else if( pad.trg & PAD_KEY_LEFT ) - { - controlFlag = TRUE; - *line -= DISP_NUM_LINES - 2; - - if( *line < 0 ) - { - *line = 0; - } - } - - // Aƒ{ƒ^ƒ“ - if( pad.trg & PAD_BUTTON_A ) - { - if(*menu == MENU_ROOT) - { - controlFlag = TRUE; - - switch( *line ) - { - case MENU_ROOT : - case MENU_OWNER: - case MENU_PARENTAL: - case MENU_SECURE_USER: - case MENU_OTHER: - case MENU_NORMAL_HW: - case MENU_SECURE_HW: - case MENU_SCFG_ARM7: - case MENU_SCFG_ARM9: - case MENU_SYSMENU: - case MENU_FONT: - case MENU_WL: - case MENU_WHITE: - case MENU_VERSION: - // ¡‚̉æ–ʂ̑I‘ðˆÊ’u‚ð‹L˜^ - selectLine[ROOTMENU_SIZE] = *line; - - // ŽŸ‚̃ƒjƒ…[‰æ–Ê‚ðŠJ‚­ - *menu = *line; - *line = selectLine[*menu]; - break; - - case MENU_RESET_INFO: - case MENU_BREAK_DATA: - case MENU_RTC_RESET: - *mode |= MODE_EXECUTE_MASK; - *changeLine = 0; // ƒfƒtƒHƒ‹ƒgˆÊ’u‚ðcancel‚É‚µ‚Ä‚¨‚­ - break; - } - } - else if( *menu != MENU_VERSION && *menu != MENU_FONT && gAllInfo[*menu][*line].changable ) - { - controlFlag = TRUE; - - // •ÏX‰Â”\‚È€–Ú‚Í•ÏX‰æ–Ê‚ðŠJ‚­ - *mode |= MODE_CHANGE_MASK; - *changeLine = gAllInfo[*menu][*line].iValue; - } - - } - - if( pad.trg & PAD_BUTTON_B ) - { - if( *menu != MENU_ROOT ) - { - controlFlag = TRUE; - - // Ý’è’l•\ަ‰æ–ʂ̂Ƃ«‚̓‹[ƒg‚É–ß‚é - selectLine[*menu] = *line; - *menu = MENU_ROOT; - *line = selectLine[ROOTMENU_SIZE]; - } - } - - if( ( pad.trg & PAD_BUTTON_SELECT ) && *menu == MENU_SCFG_ARM7 ) - { - controlFlag = TRUE; - - // ARM7SCFG‚Ì•\ަƒf[ƒ^‚ðØ‚è‘Ö‚¦‚é - switchViewMode(); - } - - return controlFlag; -} - -BOOL resetUserData( void ) -// idx(0 or 1)”Ԗڂ̃†[ƒUƒf[ƒ^‚ðƒŠƒZƒbƒg‚·‚é -{ - LCFGTWLTPCalibData calib; - // DisplayInit‚ňê‰ñRead‚µ‚Ă邩‚ç‚¢‚ç‚ñ‚©‚Á‚½ -// u8 *dataBuf = (u8*) Alloc (LCFG_READ_TEMP); - -// LCFG_ReadTWLSettings( (u8 (*)[ LCFG_READ_TEMP ])dataBuf ); - - // ƒoƒbƒNƒAƒbƒv‚ð‚‚Ԃ·‚½‚߂ɓñ‰ñ‘‚«ž‚Þ - LCFG_TSD_GetTPCalibration( &calib ); // TPƒLƒƒƒŠƒuƒŒ[ƒVƒ‡ƒ“‚ÍŽc‚·B - LCFG_ClearTWLSettings( LCFG_TSD_GetInstalledSoftBoxCount() ); - LCFG_TSD_SetTPCalibration( &calib ); - - if( ! LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ]) gBufLCFG ) ) - { - OS_TPrintf( "Write Setting failed.\n" ); - return FALSE; - } - - if( ! LCFG_WriteTWLSettings( (u8 (*)[ LCFG_WRITE_TEMP ]) gBufLCFG ) ) - { - OS_TPrintf( "Write Setting failed.\n" ); - return FALSE; - } - - OS_TPrintf("Clear Setting Succeeded.\n" ); - -// TSDi_ClearSettingsDirect( (LCFGTWLSettingsData *)(&dataBuf[ LCFG_TEMP_BUFFER_SIZE*idx ]) ); -// LCFGi_TSD_WriteSettingsDirectForRecovery( (LCFGTWLSettingsData *)&dataBuf[ LCFG_TEMP_BUFFER_SIZE*idx ], idx ); - - return TRUE; -} - -BOOL breakUserData( u8 idx ) -{ - // LCFG API‚ðŽg‚킸‚ÉAFSƒŒƒxƒ‹‚Ńtƒ@ƒCƒ‹‚ð“Ç‚ñ‚ÅAƒf[ƒ^‚ð”j‰ó‚µ‚Ä‚©‚ç‘‚«–ß‚· - FSFile file; - u8 *fileBuf = (u8*) Alloc ( LCFG_TEMP_BUFFER_SIZE ); - - FS_InitFile( &file ); - - if( !FS_OpenFileEx( &file, s_TSDPath[idx], FS_FILEMODE_R | FS_FILEMODE_W ) ) - { - OS_TPrintf("OpenFile failed. result: %d path: %s\n", FS_GetArchiveResultCode(&file), s_TSDPath[idx]); - return FALSE; - } - - // “K“–‚Ƀf[ƒ^‚ð‰ó‚· - MI_CpuFill8( fileBuf, 0xFF, LCFG_TEMP_BUFFER_SIZE ); - - // ƒf[ƒ^‚Ì‘‚«–ß‚µ - FS_SeekFileToBegin( &file ); - - if( FS_WriteFile( &file, fileBuf, LCFG_TEMP_BUFFER_SIZE ) == -1 ) - { - OS_TPrintf("writeFile failed. path: %s\n", s_TSDPath[idx]); - return FALSE; - } - - FS_CloseFile( &file ); - - OS_TPrintf("Breaking UserData Succeeded. path: %s\n", s_TSDPath[idx]); - return TRUE; -} - - -BOOL resetRTC( void ) -{ - RTCResult result; - RTCDate date; - RTCTime time; - - date.year = 0; - date.month = 1; - date.day = 1; - date.week = RTC_WEEK_SUNDAY; - - time.hour = 0; - time.minute = 0; - time.second = 0; - - // result‚ͬŒ÷‚µ‚½‚çƒ[ƒ‚ª•Ô‚é - result = RTC_SetDate( &date ); - if( result != RTC_RESULT_SUCCESS ) - { - OS_TPrintf("RTC Date Reset Failed. err: %d", result ); - return FALSE; - } - - result |= RTC_SetTime( &time ); - if( result != RTC_RESULT_SUCCESS ) - { - OS_TPrintf("RTC Time Reset Failed. err: %d", result ); - return FALSE; - } - - return TRUE; -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/control.h b/build/tests/DisplaySystemInformation/ARM9/src/control.h deleted file mode 100644 index 93598285..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/control.h +++ /dev/null @@ -1,41 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: control.h - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __DISPLAY_SYSTEM_CONTROL_H__ -#define __DISPLAY_SYSTEM_CONTROL_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum ChangeCotnrolResult{ - CHANGE_NOTHING, - CHANGE_CONTROL, - CHANGE_VALUE_CHANGED -} ChangeCotnrolResult; - -BOOL executeControl( int *line, int *changeLine, u8 *mode ); -ChangeCotnrolResult changeControl( int *menu, int *line, int *changeLine, u8 *changeMode ); -BOOL control( int *menu, int *line, int *changeLine, u8 *changeMode ); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c deleted file mode 100644 index ea3c8eba..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.c +++ /dev/null @@ -1,1085 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: drawFunc.c - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - - -#include -#include -#include -#include -#include - -#include "drawFunc.h" -#include "getInformation.h" -#include "viewSystemInfo.h" -#include "misc.h" -#include "strResource.h" -#include "myIoreg_SCFG.h" - - - -// •`‰æŠÖ˜A -#define HEADER_UP 0 -#define HEADER_LEFT 10 -#define PAGE_LEFT 160 -#define FOOTER_UP 110 -#define FOOTER_LEFT 10 -#define ALLOW_LEFT 0 - -#define AST_LEFT ( ALLOW_LEFT + LINE_OFFSET ) -#define KIND_UP 10 // €–Ú–¼‚ÌãÀ•W -#define KIND_LEFT ( AST_LEFT + 10 ) // €–Ú–¼‚̶À•W -#define VALUE_UP KIND_UP // €–Ú’l‚ÌãÀ•W -#define VALUE_LEFT 140 // €–Ú’l‚̶À•W -#define LINE_OFFSET 15 // 1s‚²‚Ƃ̃IƒtƒZƒbƒg -#define ROW_OFFSET 15 // ’·‚¢€–Ú‚ªŒ»‚ꂽ‚Æ‚«‚Ì’i‘g—p - -#define REGISTER_NAME_LEFT 10 -#define REGISTER_NAME_UP 15 -#define REGISTER_DATA_LEFT 50 -#define REGISTER_DATA_UP 15 - -#define FOOTER_REGIST 0 -#define FOOTER_CONTROL1 1 -#define FOOTER_CONTROL2 2 -#define FOOTER_MENU 3 -#define FOOTER_LINES 4 - -#define CHANGE_ITEMNAME_UP 20 -#define CHANGE_ITEMNAME_LEFT 20 -#define CHANGE_VALUE_LEFT 80 -#define CHANGE_VALUE_UP 80 -#define CHANGE_ALLOW_LEFT (CHANGE_VALUE_LEFT - 15) -#define CHANGE_NOW_SETTING_UP 150 - -#define RESULT_LEFT CHANGE_ITEMNAME_LEFT -#define RESULT_UP CHANGE_NOW_SETTING_UP - - -#define SCROLL_MARGIN 2 // ‰æ–Ê’[‰½s‚ŃXƒNƒ[ƒ‹‚·‚é‚© - -#define UNIQUE_BUF 12 -#define BINARY_BUF 18 - -/* global variables -------------------- */ - -static int gDrawIdx[ROOTMENU_SIZE+1] = {0}; // ¡‰½€–Ú–Ú‚©‚牺‚ð•`‰æ‚µ‚Ä‚¢‚é‚Ì‚© -static int gMenuLineSize[ROOTMENU_SIZE] = {}; // Šeƒƒjƒ…[‚Ì‘S‘Ìs” -static const int gRegisterIdx[2][SCFG_ARM7_MENU_SIZE]; -static BOOL gSelectedARM7SCFGReg = TRUE; // ARM7SCFG‚ŃŒƒWƒXƒ^ƒTƒCƒh‚Ì•`‰æ‚È‚çtrue,‹¤—L—̈æ‚È‚çfalse - -/* function prototypes -------------------- */ - -void calibrateDrawIdx( int menu, int idx ); -void printData( int x, int y, int color, DispInfoEntry *entry ); -void printValue( int menu,int entryLine, int drawOffset, DispInfoEntry *entry ); -void printKindName( int menu, int entryLine, int drawOffset, int selected ); -void printBinary16( int x, int y, u16 value, int selected, int selectSize ); -void printBinary32( int x, int y, u32 value, int selected, int selectSize ); -void drawRegister( int menu, int selected ); -void drawChangeMode( DispInfoEntry *Entry, int changeLine ); -void drawExecuteMode( const char *command, int changeLine, u8 mode ); -void drawFontInfo( int idx, int drawLine, int selected ); -void drawVersion( int idx, int drawLine ,int selected ); -void printUniqueID( int drawLineOffset, char *uniqueId ); -int getPageNum( int valueIdx, const int* pageOffset ); -int countMenuLine( int menu ); -int countLinesDown( int menu, int idx ); - -void drawHeader( int menu, int line) -// ‰æ–Ê’[‚ÉŠÈ’P‚Èî•ñ‚ð•\ަ‚·‚é -{ - u16 buf[256]; - -#ifdef VERSION_VIEWER - PrintfSJISSub( HEADER_LEFT, HEADER_UP, TXT_COLOR_RED, "%s $Rev$" , "AppVesionViewer" ); -#else - PrintfSJISSub( HEADER_LEFT, HEADER_UP, TXT_COLOR_RED, "%s %d $Rev$" , "DisplaySystemInfo", DISPINFO_BIN_IDX ); -#endif - - if( menu != MENU_ROOT ) - { - swprintf(buf, 256, L"Root > %s", s_strRootMenu[menu] ); - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_MENU * LINE_OFFSET, TXT_COLOR_BLUE, buf ); - - swprintf(buf, 256, L"%d / %d", line+1 , s_numMenu[menu] ); - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_LINES * LINE_OFFSET, TXT_COLOR_BLUE, buf ); - } - else - { - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_MENU * LINE_OFFSET, TXT_COLOR_BLUE, (const u16 *)L"Root" ); - swprintf(buf, 256, L"%d / %d", line+1 , ROOTMENU_SIZE ); - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_LINES * LINE_OFFSET, TXT_COLOR_BLUE, buf ); - } - -#ifndef VERSION_VIEWER - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_CONTROL1 * LINE_OFFSET, TXT_COLOR_BLUE, (const u16 *)L" A: Decide B: Back "); - - if( menu == MENU_SCFG_ARM7 ) - { - PrintfSJISSub( FOOTER_LEFT, FOOTER_UP + FOOTER_REGIST * LINE_OFFSET, TXT_COLOR_RED, s_strSCFGViewMode[ gSelectedARM7SCFGReg ] ); - PutStringUTF16Sub( FOOTER_LEFT, FOOTER_UP + FOOTER_CONTROL2 * LINE_OFFSET, TXT_COLOR_BLUE, (const u16 *)L" Select: Switch Viewing Area" ); - } -#endif -} - -void printData( int x, int y, int color, DispInfoEntry *entry ) -{ - if( entry->isNumData ) - { - // ”’lƒf[ƒ^‚¾‚Á‚½‚ç‚»‚̂܂܃vƒŠƒ“ƒg - PrintfSJIS( x, y, color, "%d", entry->iValue ); - } - else if( entry->isSjis ) - { - if( entry->str.sjis == s_strCorrect[0] ) - { - color = TXT_COLOR_RED; - } - - // SJIS•¶Žš—ñ - PrintfSJIS( x, y, color, "%s", entry->str.sjis ); - } - else - { - // UTF16•¶Žš—ñ - PutStringUTF16( x, y, color, entry->str.utf ); - } - -} - -int countMenuLine( int menu ) -{ - int i; - int sum = 0; - - for( i=0; ifromLCFG ) - { - // LCFGŒo—R‚Ŏ擾‚µ‚½ƒf[ƒ^‚Í‚ɂ·‚é - txtColor = TXT_COLOR_BLUE; - } - - ////////////////////////////////////////////// - // “ÁŽê•`‰æ‚ðs‚¤•K—v‚ª‚ ‚éꇂ̈—‚Í‚±‚± // - ////////////////////////////////////////////// - - if( menu == MENU_OWNER && entryLine == OWNER_COLOR ) - { - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawOffset, TXT_UCOLOR_GRAY + entry->iValue , "¡" ); - printData( VALUE_LEFT + LINE_OFFSET , VALUE_UP + LINE_OFFSET*drawOffset, txtColor, entry ); - return; - } - - if( menu == MENU_NORMAL_HW && entryLine == NORMAL_HW_UNIQUE_ID ) - { - printUniqueID( drawOffset, entry->str.sjis ); - entry->numLines = 4; - return; - } - - if( menu == MENU_PARENTAL && entryLine == PARENTAL_PASSWORD ) - { - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, txtColor, "%04d", entry->iValue ); - return; - } - - if( menu == MENU_SYSMENU && entryLine == SYSMENU_VERSION_NUM ) - { - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, - txtColor, "%d.%d", entry->iValue >> 16, entry->iValue & 0xFFFF ); - return; - } - - if( ( menu == MENU_SYSMENU && entryLine == SYSMENU_TIMESTAMP )|| - ( menu == MENU_FONT && entryLine == FONT_TIMESTAMP )) - { - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, txtColor, "%08lx", entry->iValue ); - return; - } - - if( menu == MENU_SECURE_HW && entryLine == SECURE_HW_LAUNCHER_ID ) - { - char buf[5]; - - if( entry->iValue == 0 ) - { - // î•ñ‚ªŽó‚¯Žæ‚ê‚Ä‚¢‚È‚¢ó‘Ô - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * (1 + drawOffset), txtColor, s_strNA ); - } - - MI_CpuCopy( &(entry->iValue), buf, 4 ); - buf[4] = '\0'; - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * (1 + drawOffset), txtColor, "%s", buf ); - return; - } - - if( ( menu == MENU_SECURE_HW && entryLine == SECURE_HW_FUSE ) || - ( menu == MENU_OTHER && entryLine == OTHER_RTC_OFFSET ) || - ( menu == MENU_OTHER && entryLine == OTHER_TP_RSV ) ) - { - // 16•¶Žš‚ð8•¶Žš‚Ì“ñ’i‘g‚݂ɕÏX - char buf[9] = {0}; - STD_StrLCpy( buf, entry->str.sjis , 9 ); - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * drawOffset, txtColor, "%s", buf ); - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * (1+drawOffset), txtColor, "%s", &(entry->str.sjis[8]) ); - return; - } - - if( ( menu == MENU_SYSMENU && entryLine == SYSMENU_EULA_URL ) || - ( menu == MENU_SYSMENU && entryLine == SYSMENU_NUP_HOST )) - { - char buf[17] = {0}; - int i, lineOffset = 0; - - for( i = 0; i < STD_StrLen( entry->str.sjis ) ; i+=16 ) - { - STD_StrLCpy( buf, &(entry->str.sjis[i]), 17 ); - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET * ( drawOffset + lineOffset++), txtColor, "%s", buf ); - } - - entry->numLines = lineOffset > 0 ? lineOffset : 1; - return; - } - - if( ( menu == MENU_OWNER && entryLine == OWNER_COMMENT ) || - ( menu == MENU_PARENTAL && entryLine == PARENTAL_ANSWER )) - { - u16 buf[11] = {0}; - int i, lineOffset = 0; - - for( i = 0; i < wcslen( entry->str.utf ) ; i+=10 ) - { - MI_CpuCopy( &(entry->str.utf[i]), buf, 20 ); - PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET * ( drawOffset + lineOffset++), txtColor, buf ); - } - - // €–Ú‚ª‹ó•¶Žš‚µ‚©‚È‚¢‚Æ‚«‚Å‚à1s•\ަ‚¾‚¯‚Í‚³‚ê‚邿‚¤‚É‚·‚é - entry->numLines = lineOffset > 0 ? lineOffset : 1; - - return; - } - - - ////////////////////////// - // ’Êí‚Ì€–Ú•`‰æ‚Í‚±‚± // - ////////////////////////// - - if( entry->isAligned ) - { - printData( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawOffset, txtColor, entry ); - } - else - { - // €–Ú–¼‚ª’·‚­‚ÄŽš‰º‚°‚ª•K—v‚Èê‡ - printData( VALUE_LEFT, VALUE_UP + LINE_OFFSET* ( drawOffset + 1 ), txtColor, entry ); - } -} - -void drawRegister( int menu, int selected ) -{ -#ifndef VERSION_VIEWER - // SCFGƒŒƒWƒXƒ^‚̃oƒCƒiƒŠ‚ðƒTƒu‰æ–ʂɕ`‰æ‚·‚é - int selectRegSize = 1; - int selectBitNum; - - if( menu == MENU_SCFG_ARM7 && selected < SCFG_ARM7_MI_SC1_CDET) - { - // ARM7‚Ì‘O”¼4‚ - u32 regRom = 0; - u16 regClk = 0; - u16 regJtag = 0; - u32 regExt = 0; - selectBitNum = gRegisterIdx[0][selected]; - - regRom = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_ROM_OFFSET - 0x4000] ); - regClk = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_CLK_OFFSET - 0x4000] ); - regJtag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_JTAG_OFFSET - 0x4000] ); - regExt = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_EXT_OFFSET - 0x4000] ); - - if( selected == SCFG_ARM7_EXT_PS ) - { - selectRegSize = 2; - } - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM7RegisterName[0] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regRom, selectBitNum, selectRegSize); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[1] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regClk, selectBitNum - 32, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[2] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regJtag, selectBitNum - 48, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 4*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[3] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 4*LINE_OFFSET, regExt, selectBitNum - 64, selectRegSize ); - } - else if( menu == MENU_SCFG_ARM7 && selected >= SCFG_ARM7_MI_SC1_CDET ) - { - // SCFG‚̌㔼4‚ - u32 regMc1 = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_MC_OFFSET - 0x4000] ); - u16 regMc2 = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC2_OFFSET - 0x4000] ); - u16 regOldWL = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_WL_OFFSET - 0x4000] ); - u16 regOption = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_OP_OFFSET - 0x4000] ); - selectBitNum = gRegisterIdx[0][selected]; - - if( selected == SCFG_ARM7_MI_SC1_MODE || - selected == SCFG_ARM7_MI_SC2_MODE || - selected == SCFG_ARM7_OP_FORM || - selected == SCFG_ARM7_OP_APP ) - { - selectRegSize = 2; - } - else if( selected == SCFG_ARM7_MI_CC || selected == SCFG_ARM7_MI_CA ) - { - selectRegSize = 16; - } - - // •`‰æ - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM7RegisterName[4] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regMc1, selectBitNum - 96, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[5]); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regMc2, selectBitNum - 128, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[6] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regOldWL, selectBitNum - 144, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 4*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM7RegisterName[7] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 4*LINE_OFFSET, regOption, selectBitNum - 160, selectRegSize ); - - } - else if( menu == MENU_SCFG_ARM9 ) - { - // ARM9‘¤‚ÌSCFGƒŒƒWƒXƒ^ƒZƒbƒg - u16 regRom = MI_LoadLE16( (void*) (HW_IOREG + REG_A9ROM_OFFSET) ); - u16 regClk = MI_LoadLE16( (void*) (HW_IOREG + REG_CLK_OFFSET) ); - u16 regRst = MI_LoadLE16( (void*) (HW_IOREG + REG_RST_OFFSET) ); - u32 regExt = MI_LoadLE32( (void*) (HW_IOREG + REG_EXT_OFFSET) ); - u16 regMc = MI_LoadLE16( (void*) (HW_IOREG + REG_MC_OFFSET ) ); - selectBitNum = gRegisterIdx[1][selected]; - - if( selected == SCFG_ARM9_EXT_PS) - { - selectRegSize = 2; - } - - // •`‰æ - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP, TXT_COLOR_BLACK, s_strARM9RegisterName[0] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP, regRom, selectBitNum, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + LINE_OFFSET, TXT_COLOR_BLACK, s_strARM9RegisterName[1] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + LINE_OFFSET, regClk, selectBitNum - 16, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 2*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM9RegisterName[2] ); - printBinary16( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 2*LINE_OFFSET, regRst, selectBitNum - 32, selectRegSize ); - - PrintfSJISSub( REGISTER_NAME_LEFT, REGISTER_NAME_UP + 3*LINE_OFFSET, TXT_COLOR_BLACK, s_strARM9RegisterName[3] ); - printBinary32( REGISTER_DATA_LEFT, REGISTER_DATA_UP + 3*LINE_OFFSET, regExt, selectBitNum - 48, selectRegSize ); - - } -#endif // ifndef VERSION_VIEWER -} - -void printBinary32( int x, int y, u32 value, int selected, int selectSize ) -{ - printBinary16( x, y, (u16)(value >> 16), selected - 16, selectSize ); - printBinary16( x, y + LINE_OFFSET, (u16)(value & 0xFFFF), selected, selectSize ); -} - -void printBinary16( int x, int y, u16 value, int selected, int selectSize ) -{ - // 16ƒrƒbƒg‚̃oƒCƒiƒŠ‚ðƒfƒBƒXƒvƒŒƒC‚É•`‰æ - - int i; - int bitNum; - u16 buf[BINARY_BUF] = {0}; // 16bit + 1 space + 1 EOS - u16 mask = 0x8000; - - for( i = 0; i < BINARY_BUF; i++) - { - if( i%9 == 8 ) - { - buf[i] = L'@'; - continue; - } - - if( value & mask ) - { - buf[i] = L'‚P'; - } - else - { - buf[i] = L'‚O'; - } - - mask = (u16)( mask >> 1 ); - } - - buf[BINARY_BUF] = L'\0'; - - PutStringUTF16Sub( x, y, TXT_COLOR_BLACK, buf ); - - if( selected >= 16 || selected < 0 ) - { - // •`‰æƒŒƒWƒXƒ^“à‚É‘I‘ð€–ڂɑΉž‚·‚éƒrƒbƒg‚ª‚È‚¯‚ê‚΂±‚ê‚ÅI‚í‚è - return; - } - - // ƒ}ƒXƒN‚ðƒŠƒZƒbƒg - mask = 0x8000; - - // ¡‰ñ‚Ì•`‰æƒŒƒWƒXƒ^“à‚É‘I‘ð€–ڂɑΉž‚·‚éƒrƒbƒg‚ª‚ ‚邯‚« - // ‚»‚̃rƒbƒg‚¾‚¯ÔŽš‚Å•\ަ‚·‚é - for( i = 0, bitNum = 0; bitNum < 16; i++ ) - { - if( i == 8 ) - { - // 8ƒrƒbƒgA8ƒrƒbƒg‚ÌŠÔ‚Ì‹ó”’ - buf[i] = L'@'; - continue; - } - - if( selected <= 15 - bitNum && 15 - bitNum < selected + selectSize ) - { - buf[i] = ( value & ( mask >> bitNum )) ? L'‚P': L'‚O' ; - } - else - { - buf[i] = L'@'; - } - - bitNum++; - } - - PutStringUTF16Sub( x, y, TXT_COLOR_RED, buf ); -} - -void drawChangeMode( DispInfoEntry *entry, int changeLine ) -// ’l•ÏX‰æ–ʂ̕`‰æ -{ - int i; - - // €–Ú–¼ - PrintfSJIS( CHANGE_ITEMNAME_LEFT, CHANGE_ITEMNAME_UP, TXT_COLOR_RED, entry->kind ); - - if( entry->kindNameList != NULL ) - { - // BOOL’l‚Å•ÏXÝ’è‚·‚逖ڂÌꇂ͒lˆê——‚ð‘I‘ðŽˆ‚Æ‚µ‚Ä•\ަ - PrintfSJIS( CHANGE_ITEMNAME_LEFT, CHANGE_NOW_SETTING_UP, TXT_COLOR_BLACK, "Now Setting: %s", entry->kindNameList[entry->iValue] ); - - for( i = 0; i < entry->numKindName; i++ ) - { - int kindColor = TXT_COLOR_BLACK; - - if( i == changeLine ) - { - kindColor = TXT_COLOR_GREEN; - PutStringUTF16( CHANGE_ALLOW_LEFT, CHANGE_VALUE_UP + i*LINE_OFFSET, TXT_COLOR_BLACK, (const u16 *)L"¨" ); - } - - PrintfSJIS( CHANGE_VALUE_LEFT, CHANGE_VALUE_UP + i*LINE_OFFSET, kindColor, entry->kindNameList[i] ); - } - } - -} - -void drawExecuteMode( const char *command, int changeLine, u8 mode ) -{ -#ifndef VERSION_VIEWER - int i; - - // €–Ú–¼ - PrintfSJIS( CHANGE_ITEMNAME_LEFT, CHANGE_ITEMNAME_UP, TXT_COLOR_RED, command ); - - for( i = 0; i < 2 ; i++ ) - { - int kindColor = TXT_COLOR_BLACK; - - if( i == changeLine ) - { - kindColor = TXT_COLOR_GREEN; - PutStringUTF16( CHANGE_ALLOW_LEFT, CHANGE_VALUE_UP + i*LINE_OFFSET, TXT_COLOR_BLACK, (const u16 *)L"¨" ); - } - - PrintfSJIS( CHANGE_VALUE_LEFT, CHANGE_VALUE_UP + i*LINE_OFFSET, kindColor, s_strOK[i] ); - } - - if( mode & MODE_RESULT_DISPLAY_MASK ) - { - PrintfSJIS( RESULT_LEFT, RESULT_UP, TXT_COLOR_BLACK, s_strResult[ (mode & MODE_RESULT_MASK) >> MODE_RESULT_SHIFT ] ); - } -#endif // VERSION_VIEWER - -} - -void drawVersion( int idx, int drawLine ,int selected ) -{ - int kindColor = TXT_COLOR_BLACK; - u16 value = gContentsVersion[idx]; - - if( idx == selected) - { - // ‘I‘ð€–Ú‚Í‚¢‚ë‚©‚¦‚é - kindColor = TXT_COLOR_GREEN; - PutStringUTF16( ALLOW_LEFT, KIND_UP + LINE_OFFSET*drawLine, TXT_COLOR_BLACK, (const u16 *)L"¨"); - } - - - // €–Ú–¼ - // gContentsTitle[i]‚Í“ª4ƒoƒCƒg‚ªƒCƒjƒVƒƒƒ‹ƒR[ƒh‚̃rƒbƒOƒGƒ“ƒfƒBƒAƒ“‹LqA - // ‚¨K4ƒoƒCƒg‚ªƒAƒvƒŠ‚̃tƒ‰ƒO - { - u64 id = gContentsTitle[idx]; - char buf[5] = {0}; - int i; - - for(i = 3; 0<=i; i-- ) - { - buf[i] = (char)(id & 0xFF) ; - id >>= 8; - } - - PrintfSJIS( KIND_LEFT, KIND_UP + LINE_OFFSET*drawLine , kindColor, "%s", buf ); - } - - // ’l - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLine , TXT_COLOR_BLACK, "%x.%x", value >> 8, value & 0xFF ); -} - -void drawFontInfo( int idx, int drawLine, int selected ) -{ -#ifndef VERSION_VIEWER - int color = TXT_COLOR_BLACK; - int fontIdx = idx / NUM_FONT_INFO; - int dataType = idx % NUM_FONT_INFO; - - static const char* s_strFontDataType[] = { - "name", - "size", - "hash" - }; - - // Ží—Þ–¼ - if( idx == selected) - { - color = TXT_COLOR_GREEN; - PutStringUTF16( ALLOW_LEFT, KIND_UP + LINE_OFFSET*drawLine, TXT_COLOR_BLACK, (const u16 *)L"¨"); - } - - PrintfSJIS( KIND_LEFT, KIND_UP + LINE_OFFSET*drawLine , color, "font%d %s", fontIdx, s_strFontDataType[dataType] ); - - // ’l - switch( dataType ) - { - case 0: - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLine , TXT_COLOR_BLACK, (char*)gFontInfo[fontIdx].name ); - break; - - case 1: - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLine , TXT_COLOR_BLACK, "%d byte", gFontInfo[fontIdx].size ); - break; - - case 2: - if( gFontInfo[fontIdx].isHashOK ) - { - color = TXT_COLOR_BLACK; - } - else - { - color = TXT_COLOR_RED; - } - - PrintfSJIS( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLine , color, s_strCorrect[ gFontInfo[fontIdx].isHashOK ] ); - break; - } -#endif // ifdef VERSION_VIEWER -} -void drawMenu( int menu, int line, int changeLine, u8 mode ) -// î•ñˆê——‚ð•`‰æ‚·‚é -{ - int lineNum = 0; - int i=0; - - drawHeader( menu, line ); - drawRegister( menu, line ); - - if( mode & MODE_CHANGE_MASK ) - { - // •ÏXƒ‚[ƒh‰æ–ʂ̕`‰æ - drawChangeMode( &gAllInfo[menu][line], changeLine ); - return; - } - - if( mode & MODE_EXECUTE_MASK ) - { - drawExecuteMode( s_strMetaMenu[MENU_ROOT][line] , changeLine, mode ); - return; - } - - // •`‰æˆÊ’u‚Ì’²® - if( line - gDrawIdx[menu] < SCROLL_MARGIN ) - { - gDrawIdx[menu] = line - SCROLL_MARGIN >= 0 ? line - SCROLL_MARGIN : 0; - } - else if( countLinesDown(menu, line) < SCROLL_MARGIN ) - { - calibrateDrawIdx( menu, line ); - } - - for( i = gDrawIdx[menu] ; i < s_numMenu[menu] && lineNum < DISP_NUM_LINES ; i++ ) - { - // ‰Â•Ï’·€–ڂȃo[ƒWƒ‡ƒ“î•ñ‚¾‚¯“Á—ሗ - if( menu == MENU_VERSION && VERSION_OTHER <= i ) - { - drawVersion( i - VERSION_OTHER, lineNum++, line - VERSION_OTHER ); - continue; - } - - if( menu == MENU_FONT && FONT_INFO <= i ) - { - drawFontInfo( i - FONT_INFO, lineNum++, line - FONT_INFO ); - continue; - } - - // €–Ú–¼‚Ì•`‰æ - printKindName( menu, i, lineNum, line ); - - // ’l‚Ì•`‰æ - if( menu == MENU_SCFG_ARM7 && !gSelectedARM7SCFGReg ) - { - // ARM7‚ÌSCFG‚Å‹¤—L—̈摤‚Ì’l‚ð•\ަ‚µ‚Ă邯‚«‚̓IƒtƒZƒbƒg‚ð‰Á‚¦‚é - printValue( menu, i, lineNum, &gAllInfo[menu][i + SCFG_ARM7_SHARED_OFFSET] ); - } - else if( menu != MENU_ROOT ) - { - printValue( menu, i, lineNum, &gAllInfo[menu][i] ); - } - - // •`‰æƒIƒtƒZƒbƒg‚ÌXV - lineNum += menu != MENU_ROOT ? gAllInfo[menu][i].numLines : 1; - } - - /* - // ƒXƒNƒ[ƒ‹ƒo[‚Æ‚©o‚·H - // ‘S‘Ì‚Ìs”‚ð”cˆ¬ - if( gMenuLineSize[menu] == 0 ) - { - gMenuLineSize[menu] = countMenuLine(menu); - } - */ -} - -int countLinesDown( int menu, int idx ) -// ‘I‘ð€–Ú‚æ‚艺‘¤‚ɉ½€–Ú•\ަ‚³‚ê‚Ä‚¢‚é‚©ƒJƒEƒ“ƒg -{ - int i; - int lines = 0; - - for( i = gDrawIdx[menu]; lines < DISP_NUM_LINES && i < s_numMenu[menu] ; i++ ) - { - lines += ( menu == MENU_VERSION && VERSION_OTHER <= i ) || - ( menu == MENU_FONT && FONT_INFO <= i ) || - ( menu == MENU_ROOT ) ? - 1 : gAllInfo[menu][i].numLines; - } - - return (i-1) - idx; -} - -void calibrateDrawIdx( int menu, int idx ) -// Ü‚è•Ô‚µ€–Ú‚Æ‚©‚ª‚ ‚邯•`‰æˆÊ’u‚ª‚¸‚ê‚é‚̂Š-// ‰º‘¤‚Éí‚É2€–Ú•\ަ‚³‚ê‚邿‚¤‚ɕⳂðs‚¤ -{ - int i; - int lines = 0; - - // ‚Ü‚¸‚ÍŽ©•ª‚Ɖº2€–Ú‚Ìs”‚ð’Tõ - for( i = 0; i <= 2 && i + idx < s_numMenu[menu] ; i++ ) - { - lines += ( menu == MENU_VERSION && VERSION_OTHER <= i+idx ) || - ( menu == MENU_FONT && FONT_INFO <= i+idx ) || - ( menu == MENU_ROOT ) ? - 1 : gAllInfo[menu][i + idx].numLines; - } - - // Ž©•ª‚æ‚èã•ûŒü‚Ö’Tõ - for( i = 1; 0 <= idx - i && lines < DISP_NUM_LINES ; i++) - { - lines += ( menu == MENU_VERSION && VERSION_OTHER <= i+idx ) || - ( menu == MENU_FONT && FONT_INFO <= i+idx ) || - ( menu == MENU_ROOT ) ? - 1 : gAllInfo[menu][idx - i].numLines; - } - - // ƒ‹[ƒv‚ªˆê‰ñ—]Œv‚ɉñ‚é - i--; - - if( lines < DISP_NUM_LINES ) - { - // idx - i‚ªƒ[ƒ‚æ‚謂³‚­‚È‚Á‚½ê‡ - gDrawIdx[menu] = 0; - } - else if( lines == DISP_NUM_LINES ) - { - // •\ަs”‚¿‚傤‚ǂ͂»‚Ì‚Ü‚Ü - gDrawIdx[menu] = idx - i; - } - else if( lines == DISP_NUM_LINES + 1 && gAllInfo[menu][ idx - i ].numLines != 1) - { - // 1sˆì‚ê‚Ä‚ÄA‚©‚ˆê”Ôã‚Ì€–Ú‚ª•¡”s•`‰æ‚¾‚Á‚½ê‡‚Í‚»‚Ì‚Ü‚Ü - gDrawIdx[menu] = idx - i; - } - else - { - // ‚»‚êˆÈŠO‚Ìꇂ͈ê”Ôã‚Ìs‚ðŠO‚· - gDrawIdx[menu] = idx - i + 1; - } - -} - -void switchViewMode( void ) -// ARM7SCFG‚̃ŒƒWƒXƒ^ƒf[ƒ^‚Æ‹¤—L—̈æƒf[ƒ^‚Ì•\ަ“à—e‚ðØ‚è‘Ö‚¦‚é -{ - gSelectedARM7SCFGReg = !gSelectedARM7SCFGReg; -} - -/* -void drawKindName( int menu, int page, int line ) -// €–Ú–¼•`‰æŠÖ” -{ - int linenum = 0; - int offset = 0; - - if( menu == MENU_ROOT ) - { - // ƒ‹[ƒgƒƒjƒ…[‚ɂ̓Cƒ“ƒfƒNƒXƒf[ƒ^‚ª‚È‚¢‚Ì‚ÅAŠÔŠu‚ð‚ ‚¯‚È‚¢‚±‚Æ‚ð‘O’ñ‚É—…—ñ‚·‚邾‚¯ - for(linenum = 0; linenum < ROOTMENU_SIZE ; linenum++) - { - if( linenum == line ) - { - // ‘I‘𒆂̀–Ú‚Í•\ަF‚©‚¦‚Ä–îˆó•\ަ - PutStringUTF16( ALLOW_LEFT, KIND_UP + LINE_OFFSET*linenum, TXT_COLOR_BLACK, (const u16 *)L"¨" ); - PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET*linenum, TXT_COLOR_GREEN, s_strMetaMenu[MENU_ROOT][linenum]) ; - } - else - { - PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET*linenum, TXT_COLOR_BLACK, s_strMetaMenu[MENU_ROOT][linenum]) ; - } - } - - } - else - { - for(linenum = s_pageOffset[menu][page] ; linenum < s_pageOffset[menu][page+1] ; linenum++) - { - if( linenum == s_pageOffset[menu][page] + line ) - { - // ‘I‘𒆂̀–Ú‚Í•\ަF‚©‚¦‚Ä–îˆó•\ަ - PutStringUTF16( ALLOW_LEFT, KIND_UP + LINE_OFFSET * gMenuKindOffset[menu][linenum], - TXT_COLOR_BLACK, (const u16 *)L"¨" ); - PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET * gMenuKindOffset[menu][linenum], - TXT_COLOR_GREEN, s_strMetaMenu[menu][linenum]) ; - } - else - { - PutStringUTF16( KIND_LEFT, KIND_UP + LINE_OFFSET * gMenuKindOffset[menu][linenum], - TXT_COLOR_BLACK, s_strMetaMenu[menu][linenum]) ; - } - } - } -} - -void drawOwnerMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - // utf16‚Å•`‰æ‚·‚é‚à‚Ì‚¾‚¯•ª‚¯‚é - if( valueIdx == OWNER_NICKNAME ) - { - kindOffset[valueIdx] = drawKindOffset; - PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, gUserName) ; - } - else if( valueIdx == OWNER_COMMENT ) - { - kindOffset[valueIdx] = drawKindOffset; - PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, gUserComment) ; - } - else if( valueIdx == OWNER_COLOR ) - { - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_UCOLOR_G5, "¡" ); - PrintfSJIS( VALUE_LEFT + LINE_OFFSET , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - - } - else - { - // sjis‚Å•`‰æ‚·‚é‚à‚Ì - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - } - -} - -void drawParentalMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - // utf16‚Å•`‰æ‚·‚é‚à‚Ì‚¾‚¯•ª‚¯‚é - if(valueIdx == PARENTAL_ANSWER) - { - kindOffset[valueIdx] = drawKindOffset; - PutStringUTF16( VALUE_LEFT, VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, gSecretAnswer) ; - } - else - { - // sjis‚Å•`‰æ‚·‚é‚à‚Ì - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - } -} - - -void drawNormalHWMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - // •`‰æ‚µ‚¢‚łɃCƒ“ƒfƒNƒX·•ªƒf[ƒ^‚ð‚¢‚ê‚é - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - -} - - -void drawSecureHWMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - // •¡”s•K—v‚È€–Ú‚ª‚ ‚邯•`‰æˆÊ’u‚ª‚¸‚ê‚邽‚ß - // •`‰æƒIƒtƒZƒbƒg‚ð’²®‚·‚鈗‚ª•K—v - if( valueIdx >= SECURE_HW_FORCE_DISABLE && page == getPageNum( SECURE_HW_FORCE_DISABLE, pageOffset ) ) - { - drawLineOffset++; - } - - if( valueIdx > SECURE_HW_UNIQUE_ID && page == getPageNum( SECURE_HW_UNIQUE_ID, pageOffset ) ) - { - drawLineOffset += OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 / UNIQUE_BUF; - } - - // “¯‚¶‚悤‚É€–Ú–¼‚̃IƒtƒZƒbƒg‚à’²® - if( valueIdx > SECURE_HW_FORCE_DISABLE && page == getPageNum( SECURE_HW_FORCE_DISABLE, pageOffset ) ) - { - drawKindOffset++; - } - - if( valueIdx > SECURE_HW_UNIQUE_ID && page == getPageNum( SECURE_HW_UNIQUE_ID, pageOffset ) ) - { - drawKindOffset += OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 / UNIQUE_BUF; - } - - - // •`‰æ‚·‚éA‚‚¢‚łɃCƒ“ƒfƒNƒXƒf[ƒ^‚à“ü‚ê‚é - if( valueIdx == SECURE_HW_UNIQUE_ID ) - { - kindOffset[valueIdx] = drawKindOffset; - printUniqueID(drawLineOffset); - } - else - { - kindOffset[valueIdx] = drawKindOffset; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - } -} - -void drawSCFGARM7Menu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - kindOffset[valueIdx] = linenum; -} - -void drawSCFGARM9Menu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - kindOffset[valueIdx] = drawKindOffset; - -} - -void drawVersionMenu( int page, int linenum, int valueIdx, char** info, int* kindOffset, const int* pageOffset ) -{ - int drawLineOffset = linenum, drawKindOffset = linenum; - - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET*drawLineOffset, TXT_COLOR_BLACK, info[valueIdx] ); - kindOffset[valueIdx] = drawKindOffset; - -} -*/ - -void printUniqueID( int drawLineOffset, char *uniqueId) -// ƒ†ƒj[ƒNID‚ð®Œ`‚µ‚Äo—Í -{ - char buf[UNIQUE_BUF+1]; - int i; - - for( i=0; i * UNIQUE_BUF < OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 ; i++) - { - strncpy(buf, &uniqueId[i * UNIQUE_BUF], UNIQUE_BUF); - buf[UNIQUE_BUF] = '\0'; - PrintfSJIS( VALUE_LEFT , VALUE_UP + LINE_OFFSET * (drawLineOffset + i), TXT_COLOR_BLACK, buf ); - } - -} - -int getPageNum( int valueIdx, const int* pageOffset ) -// valueIdx‚ª‰½ƒy[ƒW–Ú‚É‚ ‚é‚©‚ðpageOffset‚©‚ç’²‚ׂé -{ - int i; - - for( i=0; i < MAXITEM - 1; i++ ) - { - if( valueIdx > pageOffset[i] && valueIdx < pageOffset[i+1] ) - { - return i; - } - } - - return -1; -} - -const static int gRegisterIdx[2][SCFG_ARM7_MENU_SIZE] = { - // ARM7, ARM9‚ÌSCFG‚ÌŠe€–Ú‚ªƒŒƒWƒXƒ^‚É‚¨‚¢‚đΉž‚µ‚Ä‚¢‚é‚Ì‚©‚ðƒŠƒXƒg‚Å‹Lq - - // ARM7 side - { - DISP_REG_SCFG_ROM_ARM9SEL_SHIFT, - DISP_REG_SCFG_ROM_ARM9RSEL_SHIFT, - DISP_REG_SCFG_ROM_ARM7SEL_SHIFT, - DISP_REG_SCFG_ROM_ARM7RSEL_SHIFT, - DISP_REG_SCFG_ROM_ARM7FUSE_SHIFT, - DISP_REG_SCFG_ROM_ROMWE_SHIFT, - - DISP_REG_SCFG_CLK_SD1HCLK_SHIFT + 32, - DISP_REG_SCFG_CLK_SD2HCLK_SHIFT + 32, - DISP_REG_SCFG_CLK_AESHCLK_SHIFT + 32, - DISP_REG_SCFG_CLK_WRAMHCLK_SHIFT + 32, - DISP_REG_SCFG_CLK_SNDMCLK_SHIFT + 32, - - DISP_REG_SCFG_JTAG_ARM7SEL_SHIFT + 48, - DISP_REG_SCFG_JTAG_CPUJE_SHIFT + 48, - DISP_REG_SCFG_JTAG_DSPJE_SHIFT + 48, - - DISP_REG_SCFG_EXT_DMA_SHIFT + 64, - DISP_REG_SCFG_EXT_SDMA_SHIFT + 64, - DISP_REG_SCFG_EXT_SND_SHIFT + 64, - DISP_REG_SCFG_EXT_MC_SHIFT + 64, - DISP_REG_SCFG_EXT_INTC_SHIFT + 64, - DISP_REG_SCFG_EXT_SPI_SHIFT + 64, - DISP_REG_SCFG_EXT_DSEL_SHIFT + 64, - DISP_REG_SCFG_EXT_SIO_SHIFT + 64, - DISP_REG_SCFG_EXT_LCDC_SHIFT + 64, - DISP_REG_SCFG_EXT_VRAM_SHIFT + 64, - DISP_REG_SCFG_EXT_PSRAM_SHIFT + 64, - DISP_REG_SCFG_EXT_DMAC_SHIFT + 64, - DISP_REG_SCFG_EXT_AES_SHIFT + 64, - DISP_REG_SCFG_EXT_SD1_SHIFT + 64, - DISP_REG_SCFG_EXT_SD2_SHIFT + 64, - DISP_REG_SCFG_EXT_MIC_SHIFT + 64, - DISP_REG_SCFG_EXT_I2S_SHIFT + 64, - DISP_REG_SCFG_EXT_I2C_SHIFT + 64, - DISP_REG_SCFG_EXT_GPIO_SHIFT + 64, - DISP_REG_SCFG_EXT_MC_B_SHIFT + 64, - DISP_REG_SCFG_EXT_WRAM_SHIFT + 64, - DISP_REG_SCFG_EXT_PUENABLE_SHIFT + 64, - DISP_REG_SCFG_EXT_CFG_SHIFT + 64, - - DISP_REG_MI_MC1_SL1_CDET_SHIFT + 96, - DISP_REG_MI_MC1_SL1_M0_SHIFT + 96, - DISP_REG_MI_MC1_SL2_CDET_SHIFT + 96, - DISP_REG_MI_MC1_SL2_M0_SHIFT + 96, - DISP_REG_MI_MC1_SWP_SHIFT + 96, - DISP_REG_MI_MC1_CC_SHIFT + 96, - - DISP_REG_MI_MC2_CA_SHIFT + 128, - - DISP_REG_SCFG_WL_OFFB_SHIFT + 144, - - DISP_REG_SCFG_OP_OP0_SHIFT + 160, - DISP_REG_SCFG_OP_OP0_SHIFT + 160 - }, - - // ARM9 side - { - REG_SCFG_A9ROM_SEC_SHIFT, - REG_SCFG_A9ROM_RSEL_SHIFT, - - REG_SCFG_CLK_CPUSPD_SHIFT + 16, - REG_SCFG_CLK_DSPHCLK_SHIFT + 16, - REG_SCFG_CLK_CAMHCLK_SHIFT + 16, - REG_SCFG_CLK_WRAMHCLK_SHIFT + 16, - REG_SCFG_CLK_CAMCKI_SHIFT + 16, - - REG_SCFG_RST_DSPRSTB_SHIFT + 32, - - REG_SCFG_EXT_DMA_SHIFT + 48, - REG_SCFG_EXT_GEO_SHIFT + 48, - REG_SCFG_EXT_REN_SHIFT + 48, - REG_SCFG_EXT_G2DE_SHIFT + 48, - REG_SCFG_EXT_DIV_SHIFT + 48, - REG_SCFG_EXT_MC_SHIFT + 48, - REG_SCFG_EXT_INTC_SHIFT + 48, - REG_SCFG_EXT_LCDC_SHIFT + 48, - REG_SCFG_EXT_VRAM_SHIFT + 48, - REG_SCFG_EXT_PSRAM_SHIFT + 48, - REG_SCFG_EXT_DMAC_SHIFT + 48, - REG_SCFG_EXT_CAM_SHIFT + 48, - REG_SCFG_EXT_DSP_SHIFT + 48, - REG_SCFG_EXT_MC_B_SHIFT + 48, - REG_SCFG_EXT_WRAM_SHIFT + 48, - REG_SCFG_EXT_CFG_SHIFT + 48, - - } -}; \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h b/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h deleted file mode 100644 index 50958e22..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/drawFunc.h +++ /dev/null @@ -1,54 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: drawFunc.h - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __DRAW_FUNC__ -#define __DRAW_FUNC__ - -#include -#include "strResource.h" - -#ifdef __cplusplus -extern "C" { -#endif - - - - -// Šeƒƒjƒ…[ƒTƒCƒY - -#define DISP_NUM_LINES 11 // ˆêƒy[ƒW‚ ‚½‚è‚Ì€–Ú” - -/* global variables ----------------- */ - -#define MAXITEM 50 -#define MAXPAGE 5 - -// Še€–Ú‚ð•\ަ‚·‚邯‚«‚ÌsƒIƒtƒZƒbƒg•\ -extern int gMenuKindOffset[ROOTMENU_SIZE][MAXITEM]; - -/* function prototypes ----------------- */ - -void drawHeader( int menu, int line ); -void drawMenu( int menu, int line, int changeLine, u8 mode ); -void printResult( BOOL res ); -void switchViewMode( void ); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/build/tests/DisplaySystemInformation/ARM9/src/getInformation.h b/build/tests/DisplaySystemInformation/ARM9/src/getInformation.h deleted file mode 100644 index e861e041..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/getInformation.h +++ /dev/null @@ -1,59 +0,0 @@ - -#ifndef __DISPLAY_INFO_GETINFORMATION__ - -#include - -#define __DISPLAY_INFO_GETINFORMATION__ - -// ‰‰ñ“ǂݞ‚Ý‚©”Û‚© -static BOOL firstRead; - -// NANDƒAƒvƒŠî•ñ -extern s32 gNumContents; -extern OSTitleId *gContentsTitle; -extern u16 *gContentsVersion; - -#ifndef VERSION_VIEWER - -#define TWL_SYSMENU_VER_STR_LEN 28 // ƒVƒXƒeƒ€ƒƒjƒ…[ƒo[ƒWƒ‡ƒ“•¶Žš—ñMAX bytes -#define TWL_EULA_URL_LEN 128 -#define TWL_NUP_HOSTNAME_LEN 64 - -#define NUM_FONT_INFO 3 // ƒtƒHƒ“ƒgˆê‚“–‚½‚è‚̃ƒjƒ…[”B–¼‘OAƒTƒCƒYAƒnƒbƒVƒ…‚ÌŽO€–Ú - -typedef struct FontInfo{ - u8 *name; // ‚¨–¼‘O - u32 size; // ‘å‚«‚³ - u8 *data; // ƒf[ƒ^–{‘Ì - u8 *hash; // ƒf[ƒ^‚̃nƒbƒVƒ…’l - BOOL isHashOK; // ƒnƒbƒVƒ…’l‚ªŠù’m‚Ì‚à‚̂ƈê’v‚·‚é‚© -} FontInfo; - - - -// ‹¤—LƒtƒHƒ“ƒgî•ñ -extern FontInfo gFontInfo[ OS_SHARED_FONT_MAX ]; - -// LCFGƒf[ƒ^‚ð“ǂݞ‚Þ‚½‚߂̃oƒbƒtƒ@ -extern u8 *bufLCFG; - -#endif // ifndef VERSION_VIEWER - -void getVersions( void ); -void getContentsVersion( void ); - -#ifndef VERSION_VIEWER -void getSysmenuInfo( void ); -void getSCFGInfo( void ); -void getOwnerInfo( void ); -void getHWInfo( void ); -void getParentalInfo( void ); -void getOtherInfo( void ); -void getSecureUserInfo( void ); -void getFontInfo( void ); -void getWLInfo( void ); -void getWhiteListInfo( void ); - -#endif // ifndef VERSION_VIEWER - -#endif // ifdef __DISPLAY_INFO_GETINFORMATION__ \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_font.c b/build/tests/DisplaySystemInformation/ARM9/src/get_font.c deleted file mode 100644 index 843b8679..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_font.c +++ /dev/null @@ -1,118 +0,0 @@ -#include -#include - -#include "misc.h" -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" -#include "util.h" - -#define NUM_FONT_HASHDATA 3 - -const static char* s_strFontHash[] = { - "07381F6C1FF7421BA309196FA9FC750706B031AD", - "EF271DAD8B67EDB3DDE2655C6C35288D1334132D", - "28e68d0496ab28d7f082b70fc8f4f9081dee2ccc" -}; - -FontInfo gFontInfo[ OS_SHARED_FONT_MAX ]; - -void loadFontName( OSSharedFontIndex idx ); -void loadFont( OSSharedFontIndex idx ); -void releaseFont( OSSharedFontIndex idx ); -BOOL checkFontHash( OSSharedFontIndex idx ); - - -void getFontInfo( void ) -{ - u32 time; - int tableSize = 0; - u8 *tableBuf; - OSSharedFontIndex fontIdx; - - OS_InitSharedFont(); - - // ƒtƒHƒ“ƒgƒe[ƒuƒ‹ƒoƒbƒtƒ@‚ÌŠm•Û - tableSize = OS_GetSharedFontTableSize(); - tableBuf = (u8*) Alloc ( (u32)tableSize ); - SDK_ASSERT( tableBuf ); - - time = OS_GetSharedFontTimestamp(); - OS_TPrintf("SharedFont Time Stamp %08lx\n", time ); - gAllInfo[MENU_FONT][FONT_TIMESTAMP].iValue = (int) time; - gAllInfo[MENU_FONT][FONT_TIMESTAMP].isNumData = TRUE; - - if( ! OS_LoadSharedFontTable( (void*)tableBuf ) ) - { - OS_TPrintf("Loading shared font table failed.\n"); - Free(tableBuf); - return; - } - - for( fontIdx = (OSSharedFontIndex) 0; fontIdx < OS_SHARED_FONT_MAX; fontIdx++ ) - { - loadFontName( fontIdx ); - - // ƒTƒCƒYŽæ“¾ - gFontInfo[fontIdx].size = (u32) OS_GetSharedFontSize( (OSSharedFontIndex)fontIdx ); - - loadFont( fontIdx ); - gFontInfo[fontIdx].isHashOK = checkFontHash( fontIdx ); - releaseFont( fontIdx ); - } - - Free(tableBuf); - s_numMenu[MENU_FONT] = FONT_INFO + ( NUM_FONT_INFO * OS_SHARED_FONT_MAX ); -} - -void loadFontName( OSSharedFontIndex idx ) -{ - // –¼‘OŽæ“¾ - const u8* fontName = OS_GetSharedFontName( (OSSharedFontIndex)idx ); - int fontNameLength = STD_StrLen( (char*)fontName ); - - OS_TPrintf("fontname length: %d\n", fontNameLength ); - if( gFontInfo[idx].name == NULL ){ - // –¼‘O‚̂Ƃ±‚ë‚Ƀƒ‚ƒŠ‚ªŠ„‚è“–‚Ä‚ç‚ê‚ĂȂ©‚Á‚½‚肵‚½‚ç - - gFontInfo[idx].name = (u8*) Alloc ( sizeof(u8) * (fontNameLength + 1) ); - } - - SDK_ASSERT( gFontInfo[idx].name ); - STD_StrLCpy( (char*)gFontInfo[idx].name, (char*)fontName, fontNameLength + 1 ); -} - -void loadFont( OSSharedFontIndex idx ) -{ - // ‚Å‚à•ʂɕ’i•K—v‚Ȃ킯‚¶‚á‚È‚¢‚©‚烃‚ƒŠŠm•Û‚Ì‚½‚߂ɂà - // ƒnƒbƒVƒ…’lŽæ‚èI‚í‚Á‚½‚çŠJ•ú‚·‚邿‚¤‚É‚·‚é‚©‚ÈH - if( gFontInfo[idx].data == NULL ) - { - // ƒf[ƒ^ƒoƒbƒtƒ@‚Ƀƒ‚ƒŠ‚ªŠ„‚è“–‚Ä‚ç‚ê‚ĂȂ©‚Á‚½‚èA - // ¬‚³‚©‚Á‚½‚肵‚½ê‡‚ÍŠ„‚è“–‚ĂȂ¨‚·B - - gFontInfo[idx].data = (u8*) Alloc ( gFontInfo[idx].size ); - } - - SDK_ASSERT( gFontInfo[idx].data ); - OS_LoadSharedFont( idx, (void*)gFontInfo[idx].data ); -} - -void releaseFont( OSSharedFontIndex idx ) -{ - if( gFontInfo[idx].data != NULL ) - { - Free( gFontInfo[idx].data ); - } -} - -BOOL checkFontHash( OSSharedFontIndex idx ) -{ - u8 digestBuf[MATH_SHA1_DIGEST_SIZE], cmpBuf[MATH_SHA1_DIGEST_SIZE]; - - // ŽÀ‘ÔAŒŸØ—p‚»‚ꂼ‚ê‚̃nƒbƒVƒ…‚ðŽZo - strToHexa( s_strFontHash[idx], cmpBuf, MATH_SHA1_DIGEST_SIZE ); - MATH_CalcSHA1( digestBuf, gFontInfo[idx].data , gFontInfo[idx].size ); - - return MI_CpuComp8( cmpBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0; -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_hw.c b/build/tests/DisplaySystemInformation/ARM9/src/get_hw.c deleted file mode 100644 index ab1f42df..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_hw.c +++ /dev/null @@ -1,108 +0,0 @@ -#include -//#include -#include -#include - - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - -void getNormalHWInfo( void ); -void getSecureHWInfo( void ); - -void getHWInfo( void ) -{ - getNormalHWInfo(); - getSecureHWInfo(); -} - - -void getNormalHWInfo( void ) -{ - int value; - - - value = (int)LCFG_NSD_GetRTCClockAdjust(); - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_ADJUST].iValue = value; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_ADJUST].isNumData = TRUE; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_RTC_ADJUST].fromLCFG = TRUE; - - { - int i; - char ascii[] = "0123456789abcdef"; - const u8 *unq = OS_GetMovableUniqueIDPtr(); - // 16i‚Å1ƒoƒCƒg‚¸‚‹l‚߂Ă¢‚­ - // ƒoƒbƒtƒ@‚ª’·‚³‚Ì3”{’·‚Ȃ̂ÍAƒf[ƒ^‚ð"%02x-%02x-%02x..."‚É’uŠ·‚·‚邽‚ß - for(i=0; i < OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3; i += 3, unq++ ) - { - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i] = ascii[(*unq>>4) & 0x0f]; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i+1] = ascii[*unq & 0x0f]; - gAllInfo[MENU_NORMAL_HW][NORMAL_HW_UNIQUE_ID].str.sjis[i+2] = - (i+2) == (OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 - 1) ? (char)'\0' : (char)'-' ; - OS_TPrintf("uniqid: %d\n", *unq); - } - } - -} - -void getSecureHWInfo( void ) -{ - int value; - - value = OS_IsForceDisableWireless(); - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].iValue = value; - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].isAligned = FALSE; - gAllInfo[MENU_SECURE_HW][SECURE_HW_FORCE_DISABLE].numLines = 2; - - value = OS_GetRegion(); - gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].iValue = value; - gAllInfo[MENU_SECURE_HW][SECURE_HW_REGION].str.sjis = s_strRegion[ value ]; - - { - u8 serialBuf[OS_TWL_HWINFO_SERIALNO_LEN_MAX]; - OS_GetSerialNo( serialBuf ); - snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_SERIAL].str.sjis , OS_TWL_HWINFO_SERIALNO_LEN_MAX, "%s", serialBuf); - } - - { - u64 buf; - buf = OS_GetValidLanguageBitmap(); - OS_TPrintf("language bitmap : %lx\n", buf ); - snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_LANGUAGE].str.sjis , - DISPINFO_BUFSIZE-1, "%08lx", OS_GetValidLanguageBitmap() ); - - - // fuseRomƒf[ƒ^‚̓ǂÝo‚µ - // secure‚ȃAƒvƒŠˆÈŠO‚̓n[ƒh“I‚ÉØ‚è—£‚³‚ê‚é‚̂Ń[ƒ‚ɂȂé - buf = SCFG_ReadFuseData(); - OS_TPrintf("fuse data : %016llx\n", buf); - snprintf( gAllInfo[MENU_SECURE_HW][SECURE_HW_FUSE].str.sjis , - DISPINFO_BUFSIZE-1, "%016llx", SCFG_ReadFuseData() ); - gAllInfo[MENU_SECURE_HW][SECURE_HW_FUSE].numLines = 2; - - } - - // ƒ‰ƒ“ƒ`ƒƒ‚̃^ƒCƒgƒ‹IDLo‚̎擾 - if( LCFG_ReadHWSecureInfo() ) - { - const u8 *titleIDLo = LCFG_THW_GetLauncherTitleID_LoPtr(); - value = ( int )( titleIDLo[0] << 8*3 | - titleIDLo[1] << 8*2 | - titleIDLo[2] << 8*1 | - titleIDLo[3] << 8*0 ); - - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].iValue = value; - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].isNumData = TRUE; - } - else - { - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].str.sjis = s_strNA; - } - - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].isAligned = FALSE; - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].numLines = 2; - gAllInfo[MENU_SECURE_HW][SECURE_HW_LAUNCHER_ID].fromLCFG = TRUE; - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_other.c b/build/tests/DisplaySystemInformation/ARM9/src/get_other.c deleted file mode 100644 index 2b53a7d1..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_other.c +++ /dev/null @@ -1,69 +0,0 @@ -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - -void getOtherInfo( void ) -{ - // ‚±‚̕ӂ©‚çƒ}ƒNƒ‚Ŷ¬‚µ‚½•ª - s64 rtcoffset; - int value; - LCFGTWLTPCalibData tpdata; - - value = OS_IsAgreeEULA(); - gAllInfo[MENU_OTHER][OTHER_AGREE_EULA].iValue = value; - gAllInfo[MENU_OTHER][OTHER_AGREE_EULA].str.sjis = s_strBool[value]; - - gAllInfo[MENU_OTHER][OTHER_EULA_VERSION].iValue = OS_GetAgreedEULAVersion(); - gAllInfo[MENU_OTHER][OTHER_EULA_VERSION].isNumData = TRUE; - - value = OS_IsAvailableWireless(); - gAllInfo[MENU_OTHER][OTHER_WIRELESS].iValue = value; - gAllInfo[MENU_OTHER][OTHER_WIRELESS].str.sjis = s_strEnable[value]; - - rtcoffset = OS_GetOwnerRtcOffset(); - snprintf( gAllInfo[MENU_OTHER][OTHER_RTC_OFFSET].str.sjis, - DISPINFO_BUFSIZE-1, "%016llx", rtcoffset ); - gAllInfo[MENU_OTHER][OTHER_RTC_OFFSET].numLines = 2; - - LCFG_TSD_GetTPCalibration( &tpdata ); - gAllInfo[MENU_OTHER][OTHER_TP_RAWX1].iValue = tpdata.data.raw_x1; - gAllInfo[MENU_OTHER][OTHER_TP_RAWX1].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_RAWX1].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_RAWX2].iValue = tpdata.data.raw_x2; - gAllInfo[MENU_OTHER][OTHER_TP_RAWX2].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_RAWX2].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_DX1].iValue = tpdata.data.dx1; - gAllInfo[MENU_OTHER][OTHER_TP_DX1].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_DX1].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_DY1].iValue = tpdata.data.dy1; - gAllInfo[MENU_OTHER][OTHER_TP_DY1].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_DY1].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_RAWY1].iValue = tpdata.data.raw_y1; - gAllInfo[MENU_OTHER][OTHER_TP_RAWY1].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_RAWY1].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_RAWY2].iValue = tpdata.data.raw_y2; - gAllInfo[MENU_OTHER][OTHER_TP_RAWY2].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_RAWY2].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_DX2].iValue = tpdata.data.dx2; - gAllInfo[MENU_OTHER][OTHER_TP_DX2].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_DX2].fromLCFG = TRUE; - - gAllInfo[MENU_OTHER][OTHER_TP_DY2].iValue = tpdata.data.dy2; - gAllInfo[MENU_OTHER][OTHER_TP_DY2].isNumData = TRUE; - gAllInfo[MENU_OTHER][OTHER_TP_DY2].fromLCFG = TRUE; - - snprintf( gAllInfo[MENU_OTHER][OTHER_TP_RSV].str.sjis, - DISPINFO_BUFSIZE, "%016llx", MI_LoadLE64( tpdata.rsv ) ); - gAllInfo[MENU_OTHER][OTHER_TP_RSV].fromLCFG = TRUE; - - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_owner.c b/build/tests/DisplaySystemInformation/ARM9/src/get_owner.c deleted file mode 100644 index bc9246b4..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_owner.c +++ /dev/null @@ -1,37 +0,0 @@ -#include -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - - -void getOwnerInfo( void ) -// ƒI[ƒi[î•ñŽü‚è‚ðŽæ“¾‚·‚é -{ - OSOwnerInfoEx ownerInfo; - - OS_TPrintf( "...Owner Information\n"); - // –{‘ÌÝ’è‚Ü‚í‚è - OS_GetOwnerInfoEx( &ownerInfo ); - - // ‘S‘Ìî•ñ‚ɂ‚߂Ă¢‚­ - // “DL‚·‚¬‚é‚â‚è•û‚Ȃ̂ł ‚Æ‚Ål‚¦‚é - gAllInfo[MENU_OWNER][OWNER_LANGUAGE].str.sjis = s_strLanguage[ ownerInfo.language ]; - gAllInfo[MENU_OWNER][OWNER_LANGUAGE].iValue = ownerInfo.language; - - gAllInfo[MENU_OWNER][OWNER_COLOR].str.sjis = s_strUserColor[ ownerInfo.favoriteColor ]; - gAllInfo[MENU_OWNER][OWNER_COLOR].iValue = ownerInfo.favoriteColor; - - snprintf( gAllInfo[MENU_OWNER][OWNER_BIRTHDAY].str.sjis, DISPINFO_BUFSIZE-1, "%02d/%02d", ownerInfo.birthday.month, ownerInfo.birthday.day); - gAllInfo[MENU_OWNER][OWNER_BIRTHDAY].iValue = ownerInfo.birthday.month * 100 + ownerInfo.birthday.day; - - gAllInfo[MENU_OWNER][OWNER_COUNTRY].str.sjis = s_strCountry[ownerInfo.country]; - gAllInfo[MENU_OWNER][OWNER_COUNTRY].iValue = ownerInfo.country; - - wcsncpy( gAllInfo[MENU_OWNER][OWNER_NICKNAME].str.utf , ownerInfo.nickName, OS_OWNERINFO_NICKNAME_MAX + 1); - gAllInfo[MENU_OWNER][OWNER_NICKNAME].isSjis = FALSE; - wcsncpy( gAllInfo[MENU_OWNER][OWNER_COMMENT].str.utf , ownerInfo.comment, OS_OWNERINFO_COMMENT_MAX + 1 ); - gAllInfo[MENU_OWNER][OWNER_COMMENT].isSjis = FALSE; -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_parental.c b/build/tests/DisplaySystemInformation/ARM9/src/get_parental.c deleted file mode 100644 index 3e0021ca..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_parental.c +++ /dev/null @@ -1,53 +0,0 @@ -#include -#include -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - -void getParentalInfo( void ) -// ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹î•ñ‚ðŽæ“¾‚·‚é -{ - // ƒyƒAƒŒƒ“ƒ^ƒ‹ƒRƒ“ƒgƒ[ƒ‹‚Ü‚í‚è - const LCFGTWLParentalControl *pPC = (const LCFGTWLParentalControl *) OS_GetParentalControlInfoPtr(); - - OS_TPrintf( "...Parental Control Information\n" ); - - gAllInfo[MENU_PARENTAL][PARENTAL_FLAG].str.sjis = s_strBool[ pPC->flags.isSetParentalControl ]; - gAllInfo[MENU_PARENTAL][PARENTAL_FLAG].iValue = (int) pPC->flags.isSetParentalControl; - - gAllInfo[MENU_PARENTAL][PARENTAL_PICTOCHAT].str.sjis = s_strBool[ pPC->flags.pictoChat ]; - gAllInfo[MENU_PARENTAL][PARENTAL_PICTOCHAT].iValue = (int) pPC->flags.pictoChat; - - gAllInfo[MENU_PARENTAL][PARENTAL_DOWNLOAD].str.sjis = s_strBool[ pPC->flags.dsDownload ]; - gAllInfo[MENU_PARENTAL][PARENTAL_DOWNLOAD].iValue = (int) pPC->flags.dsDownload; - - gAllInfo[MENU_PARENTAL][PARENTAL_BROWSER].str.sjis = s_strBool[ pPC->flags.browser ]; - gAllInfo[MENU_PARENTAL][PARENTAL_BROWSER].iValue = (int) pPC->flags.browser; - - gAllInfo[MENU_PARENTAL][PARENTAL_WIIPOINT].str.sjis = s_strBool[ pPC->flags.wiiPoint ]; - gAllInfo[MENU_PARENTAL][PARENTAL_WIIPOINT].iValue = (int) pPC->flags.wiiPoint; - - gAllInfo[MENU_PARENTAL][PARENTAL_PHOTO_EXCHANGE].str.sjis = s_strBool[ pPC->flags.photoExchange ]; - gAllInfo[MENU_PARENTAL][PARENTAL_PHOTO_EXCHANGE].iValue = (int) pPC->flags.photoExchange; - - gAllInfo[MENU_PARENTAL][PARENTAL_UGC].str.sjis = s_strBool[ pPC->flags.ugc ]; - gAllInfo[MENU_PARENTAL][PARENTAL_UGC].iValue = (int) pPC->flags.ugc; - - gAllInfo[MENU_PARENTAL][PARENTAL_ORGANIZATION].str.sjis = s_strRatingOrg[ pPC->ogn ]; - gAllInfo[MENU_PARENTAL][PARENTAL_ORGANIZATION].iValue = (int) pPC->ogn; - - gAllInfo[MENU_PARENTAL][PARENTAL_AGE].iValue = pPC->ratingAge; - gAllInfo[MENU_PARENTAL][PARENTAL_AGE].isNumData = TRUE; - - gAllInfo[MENU_PARENTAL][PARENTAL_QUESTION_ID].iValue = pPC->secretQuestionID; - gAllInfo[MENU_PARENTAL][PARENTAL_QUESTION_ID].isNumData = TRUE; - - gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD].iValue = atoi( pPC->password ) ; - gAllInfo[MENU_PARENTAL][PARENTAL_PASSWORD].isNumData = TRUE; - - wcsncpy( gAllInfo[MENU_PARENTAL][PARENTAL_ANSWER].str.utf , pPC->secretAnswer, OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1); - gAllInfo[MENU_PARENTAL][PARENTAL_ANSWER].isSjis = FALSE; -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c b/build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c deleted file mode 100644 index bd9b96e4..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_scfg.c +++ /dev/null @@ -1,1137 +0,0 @@ - -#include -#include "getInformation.h" -#include "viewSystemInfo.h" -#include "strResource.h" -#include "myIoreg_SCFG.h" -//#include "misc.h" - -void getSCFGARM9Info( void ); -void getSCFGARM7InfoReg( void ); -void getSCFGARM7InfoShared( void ); -void setSCFGAccessFlag( BOOL flag ); -void setPsramBoundaryFlag( int idx ); -void setDSPResetFlag( BOOL flag ); -BOOL scfgTotalCheck( void ); -void getTotalCheckResult( void ); -u64 getArm7CheckData( BOOL isSecure, BOOL isNandAccessable, BOOL isVisibleSCFG, BOOL isDebugger ); -u32 getArm9CheckData( void ); - -void getSCFGInfo( void ) -{ - getSCFGARM9Info(); - getSCFGARM7InfoReg(); - getSCFGARM7InfoShared(); - getTotalCheckResult(); -} - -void getSCFGARM9Info( void ) -// ARM9‘¤‚Ŏ擾‚Å‚«‚éSCFGî•ñ‚ðŽæ“¾‚·‚é -// ARM9SCFGAPI‚̓ŒƒWƒXƒ^‚ð’¼ÚŽQÆ‚µ‚Ä‚¢‚é‚Ì‚ÅAAPI‚ðŽg‚Á‚Ä‚àƒŒƒWƒXƒ^‚ð’¼ÚŒ©‚Ä‚à“¯‚¶’l -{ - int value; - - // ROM§ŒäƒŒƒWƒXƒ^ - - // IsSecureRomAccessible‚̕Ԃè’l‚̓ŒƒWƒXƒ^ƒrƒbƒg‚ª”½“] - value = !SCFG_IsSecureRomAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].str.sjis = s_strJoint[ value ]; - - value = SCFG_GetSystemRomType() == SCFG_SYSTEM_ROM_FOR_NITRO; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].str.sjis = s_strRomMode[ value ]; - - // ƒNƒƒbƒN§ŒäƒŒƒWƒXƒ^ - value = SCFG_GetCpuSpeed(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].str.sjis = s_strCpuSpeed[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changeFunc.cBool = SCFG_SetCpuSpeed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].kindNameList = s_strCpuSpeed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].numKindName = 2; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].changable = TRUE; - - value = SCFG_IsClockSuppliedToDSP(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].str.sjis = s_strSupply[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].changeFunc.cBool = SCFG_SupplyClockToDSP; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].kindNameList = s_strSupply; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].numKindName = 2; - - value = SCFG_IsClockSuppliedToCamera(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].str.sjis = s_strSupply[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].changeFunc.cBool = SCFG_SupplyClockToCamera; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].kindNameList = s_strSupply; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].numKindName = 2; - - value = SCFG_IsClockSuppliedToWram(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].str.sjis = s_strSupply[ value ]; - - value = SCFG_IsCameraCKIClockEnable(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].changeFunc.cBool = SCFG_SetCameraCKIClock; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].numKindName = 2; - - // V‹KƒuƒƒbƒN§ŒäƒŒƒWƒXƒ^ - value = ! SCFG_IsDSPReset(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].str.sjis = s_strBool[ !value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].kindNameList = s_strBool; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].changeFunc.cBool = setDSPResetFlag; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].numKindName = 2; - - // Šg’£‹@”\§ŒäƒŒƒWƒXƒ^ - - value = SCFG_IsDmacFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].changeFunc.cBool = SCFG_SetDmacFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].numKindName = 2; - - value = SCFG_IsGeometryFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].changeFunc.cBool = SCFG_SetGeometryFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].numKindName = 2; - - value = SCFG_IsRendererFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].changeFunc.cBool = SCFG_SetRendererFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].numKindName = 2; - - value = SCFG_Is2DEngineFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].changeFunc.cBool = SCFG_Set2DEngineFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].numKindName = 2; - - value = SCFG_IsDividerFixed(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].changeFunc.cBool = SCFG_SetDividerFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].numKindName = 2; - - value = SCFG_IsCardFixed() ; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].changeFunc.cBool = SCFG_SetCardFixed; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].numKindName = 2; - - value = SCFG_IsIntcExpanded(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].changeFunc.cBool = SCFG_SetIntcExpanded; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].numKindName = 2; - - value = SCFG_IsLCDCExpanded(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].changeFunc.cBool = SCFG_SetLCDCExpanded; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].numKindName = 2; - - value = SCFG_IsVRAMExpanded(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].changeFunc.cBool = SCFG_SetVRAMExpanded; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].kindNameList = s_strEnable; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].numKindName = 2; - - { - u8 idx; - value = SCFG_GetPsramdBoundary(); - - if( value == SCFG_PSRAM_BOUNDARY_4MB ) - { - idx = 0; - } - else if ( value == SCFG_PSRAM_BOUNDARY_16MB ) - { - idx = 1; - } - else if ( value == SCFG_PSRAM_BOUNDARY_32MB ) - { - idx = 2; - } - - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].iValue = idx; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].str.sjis = s_strPSRAM[ idx ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].argType = ARG_INT; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].kindNameList = s_strPSRAM; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].numKindName = 3; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].changeFunc.cInt = setPsramBoundaryFlag; - } - - value = SCFG_IsNDmaAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].changeFunc.cBool = SCFG_SetNDmaAccessible; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].numKindName = 2; - - value = SCFG_IsCameraAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].changeFunc.cBool = SCFG_SetCameraAccessible; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].numKindName = 2; - - value = SCFG_IsDSPAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].changeFunc.cBool = SCFG_SetDSPAccessible; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].numKindName = 2; - - value = (reg_SCFG_EXT & REG_SCFG_EXT_MC_B_MASK) || 0; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MCB].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MCB].str.sjis = s_strAccess[ value ]; - - value = SCFG_IsWRAMAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_WRAM].str.sjis = s_strAccess[ value ]; - - value = SCFG_IsConfigBlockAccessible(); - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].iValue = value; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].str.sjis = s_strAccess[ value ]; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].changable = TRUE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].argType = ARG_BOOL; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].kindNameList = s_strAccess; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].changeFunc.cBool = setSCFGAccessFlag; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].numKindName = 2; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].numLines = 2; - -} - -void getSCFGARM7InfoReg( void ) -{ - // ƒŒƒWƒXƒ^‚É’¼ÚŠi”[‚³‚ê‚Ä‚¢‚é‚Ù‚¤‚ÌSCFGƒf[ƒ^‚ðŽæ“¾ - - - int value; - - // ROM§ŒäƒŒƒWƒXƒ^(L)A(H) - { - // SECƒtƒ‰ƒO‚ÍTRUE = ؂藣‚µ(ƒAƒNƒZƒX•s‰Â), FALSE = Ú‘±(ƒAƒNƒZƒX‰Â) - value = ( gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_SEC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].str.sjis = s_strJoint[ value ]; - - value = ( gArm7SCFGReg[DISP_REG_A9ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A9ROM_RSEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].str.sjis = s_strRomMode[ value ]; - - // SECƒtƒ‰ƒO‚ÍTRUE = ؂藣‚µ(ƒAƒNƒZƒX•s‰Â), FALSE = Ú‘±(ƒAƒNƒZƒX‰Â) - value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_SEC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].str.sjis = s_strJoint[ value ]; - - value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_RSEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].str.sjis = s_strRomMode[ value ]; - - // FuseROMƒtƒ‰ƒO‚ÍTRUE = ؂藣‚µ(ƒAƒNƒZƒX•s‰Â), FALSE = Ú‘±(ƒAƒNƒZƒX‰Â) - value = ( gArm7SCFGReg[DISP_REG_A7ROM_OFFSET - 0x4000] & DISP_REG_SCFG_A7ROM_FUSE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].str.sjis = s_strJoint[ value ]; - - value = ( gArm7SCFGReg[DISP_REG_ROMWE_OFFSET - 0x4000] & DISP_REG_SCFG_ROMWE_WE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].str.sjis = s_strEnable[ value ]; - } - - // V‹KƒuƒƒbƒNƒNƒƒbƒN§ŒäƒŒƒWƒXƒ^ - { - u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_CLK_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_SCFG_CLK_SD1HCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_SD2HCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_AESHCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_WRAMHCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].str.sjis = s_strSupply[ value ]; - - value = ( flag & DISP_REG_SCFG_CLK_SNDMCLK_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].str.sjis = s_strSupply[ value ]; - } - - // JTAG§ŒäƒŒƒWƒXƒ^ - { - u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_JTAG_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_SCFG_JTAG_ARM7SEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].numLines = 2; - - value = ( flag & DISP_REG_SCFG_JTAG_CPUJE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_JTAG_DSPJE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].str.sjis = s_strEnable[ value ]; - } - - // Šg’£‹@”\§ŒäƒŒƒWƒXƒ^ - { - u32 flag = MI_LoadLE32( &gArm7SCFGReg[DISP_REG_EXT_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_SCFG_EXT_DMA_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SDMA_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SND_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_MC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].numLines = 2; - - value = ( flag & DISP_REG_SCFG_EXT_INTC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].numLines = 2; - - value = ( flag & DISP_REG_SCFG_EXT_SPI_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_DSEL_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].numLines = 2; - - value = ( flag & DISP_REG_SCFG_EXT_SIO_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_LCDC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_VRAM_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].str.sjis = s_strEnable[ value ]; - - { - u8 idx = 0; - value = (int) ( (flag & DISP_REG_SCFG_EXT_PSRAM_MASK) >> DISP_REG_SCFG_EXT_PSRAM_SHIFT ); - - - if( value <= 1 ) - { - idx = 0; - } - else if ( value == 2 ) - { - idx = 1; - } - else if ( value == 3 ) - { - idx = 2; - } - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].str.sjis = s_strPSRAM[idx]; - } - - value = ( flag & DISP_REG_SCFG_EXT_DMAC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_AES_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SD1_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_SD2_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_MIC_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_I2S_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_I2C_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_GPIO_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_MC_B_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_WRAM_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_PUENABLE_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].str.sjis = s_strEnable[ value ]; - - value = ( flag & DISP_REG_SCFG_EXT_CFG_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].str.sjis = s_strEnable[ value ]; - - } - - // ƒƒ‚ƒŠƒJ[ƒh I/F §ŒäƒŒƒWƒXƒ^ - { - u16 flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC_OFFSET - 0x4000] ); - - value = ( flag & DISP_REG_MI_MC_SL1_CDET_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].str.sjis = s_strBool[ value ]; - - value = ( flag & DISP_REG_MI_MC_SL2_CDET_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].str.sjis = s_strBool[ value ]; - - value = ( flag & DISP_REG_MI_MC_SWP_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].str.sjis = s_strBool[ value ]; - - value = (flag & DISP_REG_MI_MC_SL1_MODE_MASK) >> DISP_REG_MI_MC_SL1_MODE_SHIFT ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].str.sjis = s_strMCMode[value]; - - value = (flag & DISP_REG_MI_MC_SL2_MODE_MASK) >> DISP_REG_MI_MC_SL2_MODE_SHIFT; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].str.sjis = s_strMCMode[value]; - - flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MCCHAT_OFFSET - 0x4000] ); - value = (flag & DISP_REG_MI_MCCHAT_CC_MASK) >> DISP_REG_MI_MCCHAT_CC_SHIFT; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].iValue = value; - snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].str.sjis , DISPINFO_BUFSIZE-1, "%04x", value); - - flag = MI_LoadLE16( &gArm7SCFGReg[DISP_REG_MC2_OFFSET - 0x4000] ); - value = (flag & DISP_REG_MI_MC2_CA_MASK ) >> DISP_REG_MI_MC2_CA_SHIFT; - ;gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CA].iValue = value; - snprintf( gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CA].str.sjis , DISPINFO_BUFSIZE-1, "%04x", value ); - } - - // ‹Œ–³ü‘—ŽóM§ŒäƒŒƒWƒXƒ^ - { - u8 flag = gArm7SCFGReg[DISP_REG_WL_OFFSET - 0x4000]; - - value = ( flag & DISP_REG_SCFG_WL_OFFB_MASK ) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_WL_OFFB].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_WL_OFFB].str.sjis = s_strEnable[ value ]; - } - - // ƒIƒvƒVƒ‡ƒ“’[Žq“Ç‚Ýo‚µƒŒƒWƒXƒ^ - { - - u8 flag = gArm7SCFGReg[DISP_REG_OP_OFFSET - 0x4000]; - value = (flag & DISP_REG_SCFG_OP_OPT_MASK) >> DISP_REG_SCFG_OP_OPT_SHIFT; - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_FORM].iValue = (value & 0x2) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_FORM].str.sjis = value == 3 ? s_strRomForm[1] : s_strRomForm[0]; - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_APP].iValue = (value & 0x1) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_OP_APP].str.sjis = s_strRomApp[ value ]; - } -} - -void getSCFGARM7InfoShared( void ) -{ - // ‹¤—L—̈æ‚É‘Þ”ð‚³‚ê‚½‚Ù‚¤‚ÌSCFGƒf[ƒ^‚ðŽæ“¾‚·‚é - int value; - - // Šg’£‹@”\§ŒäƒŒƒWƒXƒ^ (4byte) - { - u32 extData = MI_LoadLE32( &gArm7SCFGShared[HWi_WSYS04_OFFSET] ); - - value = (extData & DISP_REG_SCFG_EXT_DMA_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMA].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SDMA_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SDMA].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SDMA].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SND_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SND].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SND].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_MC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MC].numLines = 2; - - value = (extData & DISP_REG_SCFG_EXT_INTC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_INTC].numLines = 2; - - value = (extData & DISP_REG_SCFG_EXT_SPI_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SPI].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SPI].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_DSEL_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].str.sjis = s_strEnable[ value ]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DSEL].numLines = 2; - - value = (extData & DISP_REG_SCFG_EXT_LCDC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_LCDC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_LCDC].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_VRAM_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_VRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_VRAM].str.sjis = s_strEnable[ value ]; - - { - u8 idx = 0; - value = (int) ( (extData & HWi_WSYS04_EXT_PSRAM_MASK ) >> HWi_WSYS04_EXT_PSRAM_SHIFT ); - - if( value <= 1 ) - { - idx = 0; - } - else if ( value == 2 ) - { - idx = 1; - } - else if ( value == 3 ) - { - idx = 2; - } - - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PS].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PS].str.sjis = s_strPSRAM[idx]; - } - - value = (extData & DISP_REG_SCFG_EXT_DMAC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMAC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_DMAC].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_AES_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_AES].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_AES].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SD1_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD1].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD1].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_SD2_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD2].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_SD2].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_MIC_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MIC].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MIC].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_I2S_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2S].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2S].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_I2C_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2C].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_I2C].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_GPIO_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_GPIO].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_GPIO].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_MC_B_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MCB].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_MCB].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_WRAM_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_WRAM].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_WRAM].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_PUENABLE_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PU].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_PU].str.sjis = s_strEnable[ value ]; - - value = (extData & DISP_REG_SCFG_EXT_CFG_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_CFG].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_EXT_CFG].str.sjis = s_strEnable[ value ]; - } - - // ƒ{ƒ“ƒfƒBƒ“ƒOAromó‘ÔA‹Œ–³üƒŒƒWƒXƒ^ ( 1byte ) - { - u8 regData = gArm7SCFGShared[HWi_WSYS08_OFFSET]; - - value = (regData & HWi_WSYS08_OP_OPT_MASK) >> HWi_WSYS08_OP_OPT_SHIFT ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_FORM].iValue = (value & 0x2) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_FORM].str.sjis = value == 3 ? s_strRomForm[1] : s_strRomForm[0]; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_APP].iValue = (value & 0x1) || 0 ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_OP_APP].str.sjis = s_strRomApp[ value ]; - - // rom§Œä - value = ( regData & HWi_WSYS08_ROM_ARM9SEC_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_SEC ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_SEC ].str.sjis = s_strJoint[ value ] ; - - value = ( regData & HWi_WSYS08_ROM_ARM9RSEL_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_RSEL ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM9_RSEL ].str.sjis = s_strRomMode[value] ; - - value = ( regData & HWi_WSYS08_ROM_ARM7RSEL_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_RSEL ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_RSEL ].str.sjis = s_strRomMode[value] ; - - value = ( regData & HWi_WSYS08_ROM_ARM7FUSE_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_FUSE ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_ROM_ARM7_FUSE ].str.sjis = s_strJoint[ value ] ; - - // - value = ( regData & HWi_WSYS08_WL_OFFB_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_WL_OFFB ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_WL_OFFB ].str.sjis = s_strEnable[value] ; - - } - - // jtagAclkƒŒƒWƒXƒ^ ( 1byte ) - { - u8 regData = gArm7SCFGShared[HWi_WSYS09_OFFSET]; - - value = ( regData & HWi_WSYS09_JTAG_ARM7SEL_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].str.sjis = s_strEnable[value] ; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].isAligned = FALSE; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_A7 ].numLines = 2; - - value = ( regData & HWi_WSYS09_JTAG_CPUJE_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_CPU ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_CPU ].str.sjis = s_strEnable[value] ; - - value = ( regData & HWi_WSYS09_JTAG_DSPJE_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_DSP ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_JTAG_DSP ].str.sjis = s_strEnable[value] ; - - value = ( regData & HWi_WSYS09_CLK_SD1HCLK_MASK) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD1 ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD1 ].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_SD2HCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD2 ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SD2 ].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_AESHCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_AES ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_AES ].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_WRAMHCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_WRAM ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_WRAM].str.sjis = s_strSupply[value] ; - - value = ( regData & HWi_WSYS09_CLK_SNDMCLK_MASK ) || 0; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SND ].iValue = value; - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_SHARED_OFFSET + SCFG_ARM7_CLK_SND ].str.sjis = s_strSupply[value] ; - } -} - -void setDSPResetFlag( BOOL flag ) -{ - if( flag ) - { - SCFG_ResetDSP(); - } - else - { - SCFG_ReleaseResetDSP(); - } -} - -void setPsramBoundaryFlag( int idx ) -{ - SCFGPsramBoundary value; - - if( idx < 0 || 2 < idx ) - { - return; - } - - OS_TPrintf("call setPsramBoundary( %d )\n", idx ); - - switch( idx ) - { - case 0: - value = SCFG_PSRAM_BOUNDARY_4MB; - break; - - case 1: - value = SCFG_PSRAM_BOUNDARY_16MB; - break; - - case 2: - value = SCFG_PSRAM_BOUNDARY_32MB; - break; - } - - SCFG_SetPsramBoundary( value ); -} - -void setSCFGAccessFlag( BOOL flag ) -{ - // Inaccessible = false‚Ȃ̂Ńtƒ‰ƒO”½“] - if( !flag ) - { - SCFG_SetConfigBlockInaccessible(); - } -} - -void getTotalCheckResult( void ) -{ - BOOL isSecure; - BOOL isNandAccessable; - BOOL isVisibleSCFG; - BOOL isDebugger; - u64 arm7res; - u32 arm9res; - - isDebugger = ( OS_GetRunningConsoleType() & OS_CONSOLE_TWLDEBUGGER ) || 0; - - switch( DISPINFO_BIN_IDX ) - { - case 0: - case 4: - isSecure = FALSE; - isNandAccessable = TRUE; - isVisibleSCFG = FALSE; - break; - - case 1: - case 5: - isSecure = FALSE; - isNandAccessable = TRUE; - isVisibleSCFG = TRUE; - break; - case 2: - isSecure = FALSE; - isNandAccessable = FALSE; - isVisibleSCFG = FALSE; - break; - case 3: - isSecure = FALSE; - isNandAccessable = FALSE; - isVisibleSCFG = TRUE; - break; - case 6: - case 8: - case 14: - case 16: - isSecure = TRUE; - isNandAccessable = TRUE; - isVisibleSCFG = FALSE; - break; - - case 7: - case 9: - case 15: - case 17: - isSecure = TRUE; - isNandAccessable = TRUE; - isVisibleSCFG = TRUE; - break; - - case 10: - case 12: - isSecure = TRUE; - isNandAccessable = FALSE; - isVisibleSCFG = FALSE; - break; - - case 11: - case 13: - isSecure = TRUE; - isNandAccessable = FALSE; - isVisibleSCFG = TRUE; - break; - - default: - // mast not come here - return; - } - - // SCFGƒf[ƒ^‚ÌŒŸØ - arm7res = getArm7CheckData( isSecure, isNandAccessable, isVisibleSCFG, isDebugger ); - arm9res = getArm9CheckData( ); - - - // —¼•û‚Æ‚à0‚ª•Ô‚Á‚Ä‚­‚ê‚γ‰ð - if( !arm7res && !arm9res ) - { - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_TOTAL_CHECK].str.sjis = s_strCorrect[TRUE]; - STD_StrLCpy( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CHECK_ERROR7].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - STD_StrLCpy( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CHECK_ERROR9].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - } - else - { - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_TOTAL_CHECK].str.sjis = s_strCorrect[FALSE]; - STD_TSNPrintf( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CHECK_ERROR7].str.sjis, - DISPINFO_BUFSIZE, "%012llx", arm7res ); - STD_TSNPrintf( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CHECK_ERROR9].str.sjis, - DISPINFO_BUFSIZE, "%08x", arm9res ); - - } -} -/* -BOOL scfgTotalCheck( BOOL isSecure, BOOL isNandAccessable, BOOL isVisibleSCFG, BOOL isDebugger ) -{ - // ARM7 check - - if( isVisibleSCFG && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue != isSecure && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue == isNandAccessable && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue == 3 && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue == isNandAccessable && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue && - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue ) - { - arm7res = TRUE; - } - else if( !isVisibleSCFG && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue && - ! gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue && - !gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue ) - { - arm7res = TRUE; - } - else - { - arm7res = FALSE; - } - - - // arm9 check - // ‚±‚Á‚¿‚ÍSCFGLock‚Å‚àŒ©‚¦‚é - if( gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_SEC].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_ROM_STATE].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CPU].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_DSP].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_WRAM].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_CLK_CAM_CKI].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_RST_DSP].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMA].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_GEO].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_REN].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_2DE].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DIV].iValue && - ! gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_MC].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_INTC].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_LCDC].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_VRAM].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_PS].iValue == 2 && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DMAC].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CAM].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_DSP].iValue && - gAllInfo[MENU_SCFG_ARM9][SCFG_ARM9_EXT_CFG].iValue ) - { - arm9res = TRUE; - } - else - { - arm9res = FALSE; - } - - return arm9res && arm7res; -}*/ - -u64 getArm7CheckData( BOOL isSecure, BOOL isNandAccessable, BOOL isVisibleSCFG, BOOL isDebugger ) -{ - // ‹K’è’l‚É‘S‚Ĉê’v‚µ‚Ä‚¢‚ê‚΃[ƒ‚ª‹A‚é - // ˆê’v‚µ‚Ä‚¢‚È‚¯‚ê‚ÎAˆê’v‚µ‚Ä‚¢‚È‚¢€–ڂɑΉž‚µ‚½ƒrƒbƒg‚ª—§‚Á‚½ƒf[ƒ^‚ª‹A‚é - - u64 result = 0; - - int correctValue[SCFG_ARM7_MENU_SIZE] = { - // ROM status - TRUE, FALSE, TRUE, FALSE, 0, FALSE, - // CLK - 0, TRUE, TRUE, TRUE, TRUE, - // JTAG - 0, 0, 0, - // EXP - FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, - TRUE, TRUE, TRUE, 3, TRUE, TRUE, 0, TRUE, - TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, 0, - // MI - FALSE, 2, 0, FALSE, FALSE, 0x1998, 0x264c, - // old wireless - TRUE - // Bonding op‚Í•s’è - }; - - correctValue[SCFG_ARM7_ROM_ARM7_FUSE] = !isSecure; - correctValue[SCFG_ARM7_CLK_SD1] = isNandAccessable; - correctValue[SCFG_ARM7_JTAG_CPU] = isDebugger; - correctValue[SCFG_ARM7_JTAG_DSP] = isDebugger; - correctValue[SCFG_ARM7_JTAG_A7] = isDebugger; - correctValue[SCFG_ARM7_EXT_SD1] = isNandAccessable; - correctValue[SCFG_ARM7_EXT_CFG] = isVisibleSCFG; - correctValue[SCFG_ARM7_MI_SC2_CDET] = !isDebugger; - - if( isVisibleSCFG ) - { -/* result = - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_SEC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM9_SEC) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM9_RSEL].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM9_RSEL ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_SEC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM7_SEC ) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_RSEL].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM7_RSEL ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_ARM7_FUSE].iValue != isSecure) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_ARM7_FUSE ) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_ROM_WE].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_ROM_WE ) | - - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD1].iValue == isNandAccessable) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_SD1 ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SD2].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_SD2 ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_AES].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_AES ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_WRAM].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_WRAM ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_CLK_SND].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_CLK_SND ) | - - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_CPU].iValue == isDebugger) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_JTAG_CPU ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_DSP].iValue == isDebugger ) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_JTAG_DSP ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_JTAG_A7].iValue == isDebugger ) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_JTAG_A7 ) | - - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMA].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_DMA ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SDMA].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SDMA ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SND].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SND ) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MC].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_MC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_INTC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_INTC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SPI].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SPI ) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DSEL].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_DSEL ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SIO].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SIO ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_LCDC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_LCDC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_VRAM].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_VRAM ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PS].iValue == 3) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_PS ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_DMAC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_DMAC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_AES].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_AES ) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD1].iValue == isNandAccessable) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SD1 ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_SD2].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_SD2 ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MIC].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_MIC ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2S].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_I2S ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_I2C].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_I2C ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_GPIO].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_GPIO ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_MCB].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_MCB ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_WRAM].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_WRAM ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_PU].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_PU ) | - gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_EXT_CFG].iValue << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_EXT_CFG ) | - - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_CDET].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SC1_CDET) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC1_MODE].iValue == 2) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SC1_MODE) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_CDET].iValue != isDebugger ) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SC2_CDET) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SC2_MODE].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SC2_MODE) | - (!gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_SWP].iValue) << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SWP) | - (gAllInfo[MENU_SCFG_ARM7][SCFG_ARM7_MI_CC].iValue) == 0x1988) - << (SCFG_ARM7_MENU_SIZE - SCFG_ARM7_MI_SWP) | - ;*/ - int index; - - for( index = 0; index < SCFG_ARM7_MENU_SIZE ; index++ ) - { - if(SCFG_ARM7_OP_FORM <= index) - { - // ‚±‚̕ӂ̒l‚ÍŠJ”­‹@‚©—ÊŽY‹@‚©‚ŕςí‚é‚̂Ŗڎ‹‚Å”»’f - //result |= 0 << index; - continue; - } - - OS_TPrintf("%d:%d:%d ", index, gAllInfo[MENU_SCFG_ARM7][index].iValue ,correctValue[index] ); - result |= ( gAllInfo[MENU_SCFG_ARM7][index].iValue != correctValue[index] ) << index; - } - - return result; - } - else - { - int index; - result = 0; - - for( index = 0; index < SCFG_ARM7_MENU_SIZE ; index++ ) - { - result |= ( gAllInfo[MENU_SCFG_ARM7][index].iValue ) << index; - } - - return result; - } - -} - -u32 getArm9CheckData( void ) -{ - u32 result = 0; - int index; - - int correctValue[SCFG_ARM9_MENU_SIZE] = { - // ROM status - TRUE, FALSE, - // CLK - TRUE, FALSE, TRUE, TRUE, FALSE, - // RST - FALSE, - // EXT - FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, - TRUE, TRUE, TRUE, 2, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE - }; - - for( index = 0; index < SCFG_ARM9_MENU_SIZE ; index++ ) - { - if( SCFG_ARM9_TOTAL_CHECK <= index) - { - //result |= 0 << index; - continue; - } - - OS_TPrintf("%d:%d ",gAllInfo[MENU_SCFG_ARM9][index].iValue ,correctValue[index] ); - result |= ( gAllInfo[MENU_SCFG_ARM9][index].iValue != correctValue[index] ) << index; - } - - OS_TPrintf("\nresult: %d\n", result); - return result; - -} - - \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_secureUser.c b/build/tests/DisplaySystemInformation/ARM9/src/get_secureUser.c deleted file mode 100644 index f42a1ee0..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_secureUser.c +++ /dev/null @@ -1,112 +0,0 @@ -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - - -void getSecureUserInfo( void ) -{ - int value; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].fromLCFG = TRUE; - - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].isAligned = FALSE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].numLines = 2; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].fromLCFG = TRUE; - STD_StrCpy( gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].str.sjis, "0000" ); - - if( gLCFGAccessible ) - { - - value = LCFG_TSD_IsFinishedInitialSetting(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].changable = TRUE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].argType = ARG_BOOL; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].kindNameList = s_strBool; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_SETTINGS].numKindName = 2; - - value = LCFG_TSD_IsFinishedInitialSetting_Launcher(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].changable = TRUE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].changeFunc.cBool = LCFG_TSD_SetFlagFinishedInitialSetting_Launcher; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].argType = ARG_BOOL; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].kindNameList = s_strBool; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INITIAL_LAUNCHER].numKindName = 2; - - value = LCFG_TSD_IsFinishedBrokenTWLSettings(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].str.sjis = s_strBool[ value ]; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].changable = TRUE; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].changeFunc.cBool = LCFG_TSD_SetFlagFinishedBrokenTWLSettings; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].argType = ARG_BOOL; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].kindNameList = s_strBool; - gAllInfo[MENU_SECURE_USER][SECURE_USER_BROKEN_SETTINGS].numKindName = 2; - - value = LCFG_TSD_GetInstalledSoftBoxCount(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_INSTALLED_SOFTBOX].isNumData = TRUE; - - - value = LCFG_TSD_GetFreeSoftBoxCount(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_FREE_SOFTBOX].isNumData = TRUE; - - value = LCFG_TSD_GetLastTimeBootSoftIndex(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_IDX].isNumData = TRUE; - - value = LCFG_TSD_GetLastTimeBootSoftPlatform(); - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].iValue = value; - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_PLATFORM].isNumData = TRUE; - - - { - u64 buf = LCFG_TSD_GetLastTimeBootSoftTitleID(); - - - if( buf ) - // buf‚ª0‚¾‚Á‚½‚ç‘O‰ñ‹N“®‚µ‚½ƒAƒvƒŠ‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢ - { - u32 titleID = MI_LoadBE32( &buf ); - - OS_TPrintf("Lastboot ID: %x Title ID: %x\n", buf, titleID ); - - MI_CpuCopy( &titleID, gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].str.sjis, 4 ); - gAllInfo[MENU_SECURE_USER][SECURE_USER_LASTBOOT_ID].str.sjis[8] = '\0'; - } - } - } - - -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c b/build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c deleted file mode 100644 index 78824d98..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_sysmenu.c +++ /dev/null @@ -1,265 +0,0 @@ -#include -#include -#include -#include -#include - -#include "getInformation.h" -#include "viewSystemInfo.h" -#include "strResource.h" -#include "misc.h" -#include "util.h" - - -#define FILE_VERSION "verdata:/version.bin" -#define FILE_EULA_URL "verdata:/eula_url.bin" -#define FILE_NUP_HOSTNAME "verdata:/nup_host.bin" -#define FILE_TIMESTAMP "verdata:/time_stamp.bin" - -#define FILE_SIGN_NUP_CERT "verdata:/.twl-nup-cert.der" -#define FILE_SIGN_NUP_PRV "verdata:/.twl-nup-prvkey.der" -#define FILE_SIGN_SHOP_CERT "verdata:/.twl-shop-cert.der" -#define FILE_SIGN_SHOP_PRV "verdata:/.twl-shop-prvkey.der" -#define FILE_SIGN_NINTENDO_CAG2 "verdata:/NintendoCA-G2.der" -#define NUM_FILE_SIGN 5 - - -typedef struct SystemMenuVersion { - u16 major; - u16 minor; - u16 str[ TWL_SYSMENU_VER_STR_LEN / sizeof(u16) ]; -}SystemMenuVersion; - -static char* s_strSignFilePath[] = { - FILE_SIGN_NUP_CERT, - FILE_SIGN_NUP_PRV, - FILE_SIGN_SHOP_CERT, - FILE_SIGN_SHOP_PRV, - FILE_SIGN_NINTENDO_CAG2, -}; - -static char* s_strSignHashDev[] = { - "01e03e86fe11c5172ba742045c63e65c2f058e99", - "7497940e3a3591d592b46ff99d75ebe102c27550", - "cf130c7674bae733f3b106109bb06cc0d6ac1a18", - "ab38a52a384ab63ea8397de6eae8a96d6c108888", - "c60b2a5cc90f0630cca33040df6b3378239f3bfa" -}; - -static char* s_strSignHashProd[] = { - "0626f8ac62baaa0b70c543a33962e54507d451d6", - "58c198c8099d579500cb5d9007bf81404a3c41fa", - "72445f08ab30a41aff9e20a2e64ca7d2b263765e", - "43a81069e6b6300dbe08d6fc3583d0c384a37996", - "c60b2a5cc90f0630cca33040df6b3378239f3bfa" -}; - - -void getSysmenuInfo( void ) -{ - u8 *pBuffer = (u8*) Alloc (NA_VERSION_DATA_WORK_SIZE); - - // numLine‚âallined‚Ìݒ肪•K—v‚Ȃ̂ł ‚¦‚ăGƒ‰[ƒ`ƒFƒbƒN‚Í‚µ‚È‚¢ - NA_LoadVersionDataArchive( pBuffer, NA_VERSION_DATA_WORK_SIZE) ; - - - // ƒo[ƒWƒ‡ƒ“‚̓ǂÝo‚µ - { - FSFile file; - SystemMenuVersion bufVersion; - s32 len; - - FS_InitFile(&file); - - if ( FS_OpenFileEx(&file, FILE_VERSION, FS_FILEMODE_R)) - { - len = FS_ReadFile(&file, &bufVersion, sizeof(SystemMenuVersion)); - FS_CloseFile(&file); - - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_NUM].iValue = (int)( bufVersion.major << 16 | bufVersion.minor ); - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_NUM].isNumData = TRUE; - - wcsncpy( gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].str.utf, bufVersion.str, TWL_SYSMENU_VER_STR_LEN ); - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].isSjis = FALSE; - } - else - { - // ¬Œ÷‚µ‚È‚©‚Á‚½ê‡‚̓f[ƒ^‚ÍN/A - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].str.sjis = s_strNA; - gAllInfo[MENU_SYSMENU][SYSMENU_VERSION_STR].isSjis = TRUE; - } - } - - // EULA URL‚̓ǂÝo‚µ - { - FSFile file; - s32 len; - - FS_InitFile(&file); - - if ( FS_OpenFileEx(&file, FILE_EULA_URL, FS_FILEMODE_R)) { - len = FS_ReadFile(&file, gAllInfo[MENU_SYSMENU][SYSMENU_EULA_URL].str.sjis , TWL_EULA_URL_LEN) ; - FS_CloseFile(&file); - } - else - { - STD_StrLCpy( gAllInfo[MENU_SYSMENU][SYSMENU_EULA_URL].str.sjis, s_strNA, TWL_EULA_URL_LEN ); - } - } - - // NUP HOST NAME ‚̓ǂÝo‚µ - { - FSFile file; - s32 len; - - FS_InitFile(&file); - - if ( FS_OpenFileEx(&file, FILE_NUP_HOSTNAME, FS_FILEMODE_R)) { - len = FS_ReadFile(&file, gAllInfo[MENU_SYSMENU][SYSMENU_NUP_HOST].str.sjis, TWL_NUP_HOSTNAME_LEN); - FS_CloseFile(&file); - } - else - { - STD_StrLCpy( gAllInfo[MENU_SYSMENU][SYSMENU_NUP_HOST].str.sjis, s_strNA , TWL_NUP_HOSTNAME_LEN ); - } - - } - - // ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv ‚̓ǂÝo‚µ - { - FSFile file; - s32 len; - - FS_InitFile(&file); - - if ( FS_OpenFileEx(&file, FILE_TIMESTAMP, FS_FILEMODE_R)) { - len = FS_ReadFile(&file, &gAllInfo[MENU_SYSMENU][SYSMENU_TIMESTAMP].iValue, sizeof(u32) ); - gAllInfo[MENU_SYSMENU][SYSMENU_TIMESTAMP].isNumData = TRUE; - FS_CloseFile(&file); - } - } - - // –¼‚ÌÆ‡ - { - FSFile file[NUM_FILE_SIGN]; - u32 fileLen[NUM_FILE_SIGN], maxFileSize = 0; - u8 i; - u8 *srcBuf, *dstBuf, digestBuf[MATH_SHA1_DIGEST_SIZE], - cmpDigestDevBuf[MATH_SHA1_DIGEST_SIZE], cmpDigestProdBuf[MATH_SHA1_DIGEST_SIZE]; - - for( i=0 ; i < NUM_FILE_SIGN; i++ ) - { - // ʼn‚ɃGƒ“ƒgƒŠ‚Ìs”î•ñ‚ðݒ肵‚Ä‚¨‚­ - gAllInfo[MENU_SYSMENU][i + SYSMENU_HASH_IDX].numLines = 2; - gAllInfo[MENU_SYSMENU][i + SYSMENU_HASH_IDX].isAligned = FALSE; - } - - for( i=0 ; i < NUM_FILE_SIGN; i++ ) - { - FS_InitFile( &file[i] ); - - // –¼‚³‚ꂽƒtƒ@ƒCƒ‹‚ð‚»‚ê‚¼‚êƒI[ƒvƒ“ - if( !FS_OpenFileEx( &file[i], s_strSignFilePath[i], FS_FILEMODE_R ) ) - { - // ŠJ‚¯‚È‚©‚Á‚½‚çNANDƒAƒNƒZƒX‹ÖŽ~ó‘ԂȂ̂Ŗ߂é - OS_Printf("sysmenu info error: Openfile failed.\n" ); - return ; - } - - // ƒtƒ@ƒCƒ‹—e—Ê‚ð‚»‚ê‚¼‚êŽæ“¾ - fileLen[i] = FS_GetFileLength( &file[i] ); - } - - // ƒoƒbƒtƒ@‚ð‘å‚«‚­‚µ‚½‚èk‚ß‚½‚肵‚½‚­‚È‚¢‚̂Š- // ˆê”Ô‘å‚«‚¢ƒtƒ@ƒCƒ‹‚Æ“¯‚¶‘å‚«‚³‚̃oƒbƒtƒ@‚ðŠm•Û‚µ‚Ä‚µ‚Ü‚¤ - for( i=0 ; i < NUM_FILE_SIGN; i++ ) - { - if( maxFileSize < fileLen[i] ) - { - maxFileSize = fileLen[i]; - } - } - - srcBuf = (u8*) Alloc ( maxFileSize ); - dstBuf = (u8*) Alloc ( maxFileSize ); - - // ‚»‚ꂼ‚ê‚̃tƒ@ƒCƒ‹‚ɑ΂µ‚Ä–¼ŒŸØ‚ðs‚¤ - for( i=0 ; i < NUM_FILE_SIGN; i++ ) - { - u8 idx = (u8)(SYSMENU_HASH_IDX + i) ; - - OS_TPrintf("Checking signature...%s\n", s_strMetaMenu[MENU_SYSMENU][idx] ); - - // ƒtƒ@ƒCƒ‹“ǂݞ‚Ý - FS_ReadFile( &file[i], srcBuf, (s32)fileLen[i] ); - OS_TPrintf("FileSize: %d byte HeadData: %02x%02x%02x\n", fileLen[i], srcBuf[0], srcBuf[1], srcBuf[2] ); - - if( SYSMENU_NUP_CERT <= idx && idx < SYSMENU_NINTENDO_CAG2 ) - { - s32 result; - - // SYSMENU_NUP_CERT‚©‚ç‚Ì4ƒtƒ@ƒCƒ‹‚͈Ɖ»‚³‚ê‚Ä‚¢‚é‚̂ŕ¡‡‰»‚·‚é - result = NA_DecodeVersionData( srcBuf, fileLen[i] , dstBuf, fileLen[i] ); - - if( result < 0 ) - { - OS_TPrintf( "NA_DecodeVersionData() Failed. errCode: %d\n", result ); - continue; - } - - // oƒR[ƒh‚·‚邯ƒtƒ@ƒCƒ‹ƒTƒCƒY‚ª•Ï‚í‚é‚Á‚Û‚¢‚Ì‚ÅXV‚·‚é - fileLen[i] = (u32)result; - - OS_TPrintf("Dacode VersionData... HeadData: %02x%02x%02x\n", dstBuf[0], dstBuf[1], dstBuf[2] ); - - // •¡‡‰»ƒf[ƒ^‚©‚çƒLƒƒƒbƒVƒ…‚ðŒvŽZ - MATH_CalcSHA1( digestBuf, dstBuf, fileLen[i] ); - } - else - { - // ‚»‚êˆÈŠO‚Í‚»‚̂܂܃nƒbƒVƒ…‚ð‹‚ß‚é - MATH_CalcSHA1( digestBuf, srcBuf, fileLen[i] ); - } - - strToHexa( s_strSignHashDev[i] , cmpDigestDevBuf, MATH_SHA1_DIGEST_SIZE ); - strToHexa( s_strSignHashProd[i], cmpDigestProdBuf, MATH_SHA1_DIGEST_SIZE ); - - gAllInfo[MENU_SYSMENU][idx].numLines = 2; - gAllInfo[MENU_SYSMENU][idx].isAligned = FALSE; - - putBinary( cmpDigestDevBuf, MATH_SHA1_DIGEST_SIZE ); - putBinary( cmpDigestProdBuf, MATH_SHA1_DIGEST_SIZE ); - putBinary( digestBuf, MATH_SHA1_DIGEST_SIZE ); - - // ƒnƒbƒVƒ…’l‚ªˆê’v‚µ‚½‚çcorrect,ˆê’v‚µ‚È‚©‚Á‚½‚çincorrect - if( MI_CpuComp8( cmpDigestDevBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0 ) - { - gAllInfo[MENU_SYSMENU][idx].str.sjis = - idx == SYSMENU_NINTENDO_CAG2 ? s_strCorrect[1] : s_strSysMenuKey[1]; - } - else if( MI_CpuComp8( cmpDigestProdBuf, digestBuf, MATH_SHA1_DIGEST_SIZE ) == 0 ) - { - gAllInfo[MENU_SYSMENU][idx].str.sjis = - idx == SYSMENU_NINTENDO_CAG2 ? s_strCorrect[1] : s_strSysMenuKey[2]; - } - else - { - gAllInfo[MENU_SYSMENU][idx].str.sjis = s_strSysMenuKey[0]; - } - - - } - - // ƒoƒbƒtƒ@‚ÌŠJ•ú - Free( srcBuf ); - Free( dstBuf ); - } - - - // SystemMenuVersion‚̃Aƒ“ƒ}ƒEƒ“ƒg - if( !NA_UnloadVersionDataArchive() ) { - return; - } - - Free(pBuffer); -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c b/build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c deleted file mode 100644 index d2269f89..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_versionData.c +++ /dev/null @@ -1,55 +0,0 @@ - -#include -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" -#include "misc.h" - -void getWirelessVersion( void ); -void getContentsVersion( void ); -void getSharedFontVersion( void ); - - -void getContentsVersion( void ) -// ƒRƒ“ƒeƒ“ƒcƒŠƒXƒg‚ð‚à‚Æ‚ÉŠeƒRƒ“ƒeƒ“ƒc‚̃^ƒCƒgƒ‹ID‚ƃo[ƒWƒ‡ƒ“‚ðŽæ“¾ -{ - NAMTitleInfo info; - int i; - - gNumContents = NAM_GetNumTitles(); - - if( gNumContents < 0 ) - { - // NAM‚ª‘Ê–Ú‚¾‚Æ‚©ANANDƒAƒNƒZƒX‚Å‚«‚È‚¢‚¾‚Æ‚©‚ÌꇂÍI—¹ - return ; - } - - OS_TPrintf(" numContents: %d\n", gNumContents); - - if( gContentsTitle == NULL ) - { - // ‰‰ñˆ—‚ÌŽž‚̓oƒbƒtƒ@‚ðŠm•Û - gContentsTitle = (NAMTitleId*) Alloc( sizeof(NAMTitleId) * gNumContents ); - gContentsVersion = (u16*) Alloc( sizeof(u16) * (u32)gNumContents); - SDK_ASSERT( gContentsTitle ); - SDK_ASSERT( gContentsVersion ); - } - - NAM_GetTitleList( gContentsTitle, (u32)gNumContents); - SDK_POINTER_ASSERT( gContentsTitle ); - SDK_POINTER_ASSERT( gContentsVersion ); - - for( i=0; i -#include -#include -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" -#include "util.h" -#include "misc.h" - -#define WHITELIST_TITLEID 0x0003000f484e4841 -#define DS_HASH_TABLE_SIZE (256*1024) - -void getWhitelistHash( void ); -void getNumDHTEntry( void ); -BOOL cmpHash( void *src1, void *src2 ); - -void getWhiteListInfo( void ) -{ - OS_TPrintf("...Whitelist Information\n"); - - getWhitelistHash(); - getNumDHTEntry(); -} - -void getWhitelistHash( void ) -{ - u32 tmdSize=0, fileSize; - ESTitleMeta *tmd; - - FSFile file; - char filePath[NAM_PATH_LEN+1]; - u8 *fileBuf, digestBuf[MATH_SHA1_DIGEST_SIZE]; - - - // ESƒ‰ƒCƒuƒ‰ƒŠ‚ðŽg‚Á‚ănƒbƒVƒ…’l‚ðŽæ“¾‚·‚é - // ˆê‰ñ–ڂ̌ĂÑo‚µ‚ŃTƒCƒY‚ðŽæ“¾‚µ‚Ä“ñ‰ñ–Ú‚Å’l‚ð‚à‚炤 - ES_GetTmd( WHITELIST_TITLEID, NULL, &tmdSize ); - tmd = (ESTitleMeta*) Alloc ( tmdSize ); - SDK_ASSERT( tmd ); - ES_GetTmd( WHITELIST_TITLEID , tmd, &tmdSize ); - - if( tmd == NULL ) - { - OS_TPrintf("getting tmd hash failed.\n" ); - return; - } - - putBinary( (u8*)&tmd->contents[0].hash , MATH_SHA1_DIGEST_SIZE ); - - // ƒzƒƒCƒgƒŠƒXƒg‚̃tƒ@ƒCƒ‹‚ÌŽÀ‘Ô‚ðˆø‚Á’£‚Á‚Ä‚­‚é - FS_InitFile( &file ); - NAM_GetTitleBootContentPath( filePath , WHITELIST_TITLEID ); - - OS_TPrintf("filepath : %s\n", filePath ); - - if( ! FS_OpenFileEx( &file, filePath, FS_FILEMODE_R ) ) - { - OS_TPrintf("whitelist info error: FS_OpenFileEx() failed. FSResult: %d\n", FS_GetArchiveResultCode(filePath) ); - return; - } - - fileSize = FS_GetFileLength( &file ); - - fileBuf = (u8*) Alloc ( fileSize ); - SDK_ASSERT( fileBuf ); - - if( fileSize != FS_ReadFile( &file, fileBuf, (s32)fileSize ) ) - { - OS_TPrintf("whitelist info error: FS_ReadFileEx() failed. FSResult: %d\n", FS_GetArchiveResultCode(filePath) ); - return; - } - - MATH_CalcSHA1( digestBuf, fileBuf, fileSize ); - putBinary( digestBuf, MATH_SHA1_DIGEST_SIZE ); - - gAllInfo[MENU_WHITE][WHITE_HASH].str.sjis = s_strCorrect [ cmpHash( digestBuf, &tmd->contents[0].hash ) ]; - - FS_CloseFile( &file ); - Free( tmd ); - Free( fileBuf ); - -} - -void getNumDHTEntry( void ) -{ - DHTFile *dht; - FSFile file; - char filePath[NAM_PATH_LEN+1]; - - dht = (DHTFile*) Alloc (DS_HASH_TABLE_SIZE); - SDK_ASSERT(dht); - - FS_InitFile( &file ); - NAM_GetTitleBootContentPathFast( filePath , WHITELIST_TITLEID ); - - OS_TPrintf("DHTEntry reading...\n"); - - if( ! FS_OpenFileEx( &file, filePath, FS_FILEMODE_R ) ) - { - OS_TPrintf("whitelist info error: FS_OpenFileEx() failed. FSResult: %d\n", FS_GetArchiveResultCode(filePath) ); - return; - } - -/* if( ! FS_SeekFile( &file, sizeof(ROM_Header), FS_SEEK_SET ) ) - { - OS_TPrintf("whitelist info error: FS_SeekFile() failed. FSResult: %d\n", FS_GetArchiveResultCode(filePath) ); - return; - } -*/ - if( ! DHT_PrepareDatabase( dht, &file ) ) - { - OS_TPrintf("whitelist info error: PrepareDatabase() failed.\n" ); - return; - } - - DC_FlushRange( dht, DHT_GetDatabaseLength( dht )); - OS_TPrintf(" dht.header.nums : %d\n", dht->header.nums); - - FS_CloseFile( &file ); - gAllInfo[MENU_WHITE][WHITE_NUM].iValue = (int)dht->header.nums; - gAllInfo[MENU_WHITE][WHITE_NUM].isNumData = TRUE; - - Free(dht); -} - -// “ñ‚‚̃nƒbƒVƒ…‚ð”äŠr‚µ‚Ĉê’v‚µ‚Ä‚½‚ç•Ô‚· -// ‚Å‚àsrc2‚̓rƒbƒOƒGƒ“ƒfƒBƒAƒ“‚â‚Ë‚ñ -BOOL cmpHash( void *src1, void *src2 ) -{ - u8 *u1 = (u8*)src1; - u8 *u2 = (u8*)src2; - - return MI_CpuComp8( u1, u2, MATH_SHA1_DIGEST_SIZE ) == 0 ; - -} \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/get_wl.c b/build/tests/DisplaySystemInformation/ARM9/src/get_wl.c deleted file mode 100644 index 5532d3e8..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/get_wl.c +++ /dev/null @@ -1,142 +0,0 @@ -#include -#include - -#include "viewSystemInfo.h" -#include "strResource.h" -#include "getInformation.h" - -#define WL_TITLEID 0x0003000F484E4341 - -#define WL_FW_LOADSIZE 0x10 -#define WL_FW_LOAD_OFFSET 0xa0 -#define WL_FW_VERSION_LO_IDX 0x1 -#define WL_FW_VERSION_HI_IDX 0x0 -#define WL_FW_VERSION_SIZE 0x2 -#define WL_NUM_FW_IDX 0x2 -#define WL_NUM_FW_SIZE 0x2 -#define WL_FW1_OFFSET_IDX 0x4 -#define WL_FW_TYPE_IDX 0xc -#define WL_FW_TYPE_SIZE 0x4 - -#define WL_FW2_OFFSET_IDX 0xc4 -#define WL_FW2_TYPE_IDX 0xcc - -#define WL_FW_SECTION_OFFSET 0x4 -#define WL_FW_VER_MINUSOFFSET 0x2c - -#define WL_FW_IDX_OFFSET 3 - - - - -void getWLInfo( void ) -{ - FSFile file; - char filePath[NAM_PATH_LEN+1]; - char filebuf[WL_FW_LOADSIZE]; - int res; - - FS_InitFile( &file ); - NAM_GetTitleBootContentPath( filePath , WL_TITLEID); // –³üƒtƒ@[ƒ€‚̃tƒ@ƒCƒ‹ƒpƒX‚ðŽæ“¾ - OS_TPrintf("wireless firm path: %s\n", filePath ) ; - - if( FS_OpenFileEx( &file, filePath, FS_FILEMODE_R ) ) - { - int value; - s32 fwOffset, sectionOffset; - - /* - // ƒo[ƒWƒ‡ƒ“î•ñ‚̓ǂݎæ‚è - FS_SeekFile( &file, WL_FW_VERSION_OFFSET, FS_SEEK_SET ); - res = FS_ReadFile( &file, filebuf, WL_FW_VERSION_SIZE ); - - if( res == WL_FW_VERSION_SIZE ) - { - snprintf( gAllInfo[MENU_WL][WL_VERSION].str.sjis, DISPINFO_BUFSIZE-1, "%d.%d", filebuf[0], filebuf[1] ); - gAllInfo[MENU_WL][WL_VERSION].iValue = filebuf[0] *100 + filebuf[1]; - } - - // ƒtƒ@[ƒ€ƒEƒFƒA‚Ì”‚̎擾 - FS_SeekFile( &file, WL_NUM_FW, FS_SEEK_SET ); - res = FS_ReadFile( &file, filebuf, 2 ); - - if( res == WL_NUM_FW_SIZE ) - { - gAllInfo[MENU_WL][WL_NUM_FW].iValue = filebuf[0]; - gAllInfo[MENU_WL][WL_NUM_FW].isNumData = TRUE; - } - - // ƒtƒ@[ƒ€ƒ^ƒCƒv‚̎擾 - FS_SeekFile( &file, WL_FW_TYPE_OFFSET, FS_SEEK_SET ); - res = FS_ReadFile( &file, filebuf, WL_FW_TYPE_SIZE ); - - if( res == WL_FW_TYPE_SIZE ) - { - int value = (int) MI_LoadLE32( filebuf ); - gAllInfo[MENU_WL][WL_FW_TYPE].iValue = value; - gAllInfo[MENU_WL][WL_FW_TYPE].str.sjis = s_strWLFWType[ value ]; - }*/ - - FS_SeekFile( &file, WL_FW_LOAD_OFFSET , FS_SEEK_SET); - res = FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE); - - if( res == WL_FW_LOADSIZE ) - { - int value; - - snprintf( gAllInfo[MENU_WL][WL_VERSION].str.sjis, DISPINFO_BUFSIZE-1, "%d.%d", - filebuf[WL_FW_VERSION_HI_IDX], filebuf[WL_FW_VERSION_LO_IDX] ); - - gAllInfo[MENU_WL][WL_NUM_FW].iValue = (int) MI_LoadLE8( &filebuf[WL_NUM_FW_IDX] ); - gAllInfo[MENU_WL][WL_NUM_FW].isNumData = TRUE; - - fwOffset = (s32)MI_LoadLE32( &filebuf[WL_FW1_OFFSET_IDX] ); - - value = (int) MI_LoadLE32( &filebuf[WL_FW_TYPE_IDX] ); - gAllInfo[MENU_WL][WL_FW1_TYPE].iValue = value; - gAllInfo[MENU_WL][WL_FW1_TYPE].str.sjis = s_strWLFWType[ value ]; - - FS_SeekFile( &file, fwOffset, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - sectionOffset = (s32)MI_LoadLE32( &filebuf[WL_FW_SECTION_OFFSET] ); - - FS_SeekFile( &file, fwOffset + sectionOffset - WL_FW_VER_MINUSOFFSET, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - snprintf( gAllInfo[MENU_WL][WL_FW1_VER].str.sjis, DISPINFO_BUFSIZE-1, "%08x", - MI_LoadLE32( filebuf ) ); - } - - if( gAllInfo[MENU_WL][WL_NUM_FW].iValue == 2 ) - { - FS_SeekFile( &file, WL_FW2_OFFSET_IDX, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - fwOffset = (s32)MI_LoadLE32( filebuf ); - - value = (int) MI_LoadLE32( &filebuf[WL_FW2_TYPE_IDX - WL_FW2_OFFSET_IDX] ); - gAllInfo[MENU_WL][WL_FW2_TYPE].str.sjis = s_strWLFWType[ value ]; - - FS_SeekFile( &file, fwOffset, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - sectionOffset = (s32)MI_LoadLE32( &filebuf[WL_FW_SECTION_OFFSET] ); - - FS_SeekFile( &file, fwOffset + sectionOffset - WL_FW_VER_MINUSOFFSET, FS_SEEK_SET ); - FS_ReadFile( &file, filebuf, WL_FW_LOADSIZE ); - snprintf( gAllInfo[MENU_WL][WL_FW2_VER].str.sjis, DISPINFO_BUFSIZE-1, "%08x", - MI_LoadLE32( filebuf ) ); - } - else - { - STD_StrLCpy( gAllInfo[MENU_WL][WL_FW2_VER].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - } - - FS_CloseFile( &file ); - } - else - { - // “ǂݞ‚߂Ȃ©‚Á‚½‚ç‚Æ‚è‚ ‚¦‚¸N/A‚Á‚Ä“ü‚ê‚Ä‚¨‚­ - STD_StrLCpy( gAllInfo[MENU_WL][WL_VERSION].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - STD_StrLCpy( gAllInfo[MENU_WL][WL_FW2_VER].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - STD_StrLCpy( gAllInfo[MENU_WL][WL_FW1_VER].str.sjis, s_strNA, DISPINFO_BUFSIZE ); - } - -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/infodata.xls b/build/tests/DisplaySystemInformation/ARM9/src/infodata.xls deleted file mode 100644 index b78857f8..00000000 Binary files a/build/tests/DisplaySystemInformation/ARM9/src/infodata.xls and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/ARM9/src/main.c b/build/tests/DisplaySystemInformation/ARM9/src/main.c deleted file mode 100644 index 8df2ebd5..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/main.c +++ /dev/null @@ -1,120 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: main.c - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - - -#include -#include -#include -#include -#include "misc.h" -#include "viewSystemInfo.h" -#include "address.h" - -#define CANVAS0_WIDTH 15 -#define CANVAS0_HEIGHT 10 -#define CANVAS0_LEFT 10 -#define CANVAS0_TOP 10 - -#define CANVAS1_WIDTH 10 -#define CANVAS1_HEIGHT 10 -#define CANVAS1_LEFT 130 -#define CANVAS1_TOP 10 - -#define TEXT_HSPACE 1 // •¶Žš—ñ•`‰æŽž‚Ì•¶ŽšŠÔ (ƒsƒNƒZƒ‹’PˆÊ) -#define TEXT_VSPACE 1 // •¶Žš—ñ•`‰æŽž‚ÌsŠÔ (ƒsƒNƒZƒ‹’PˆÊ) -#define CHARACTER_OFFSET 1 - -///////////////////////////// - -void VBlankHandler( void ); - -///////////////////////////// - - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ - - - -void TwlMain( void ) -{ - - OS_Init(); - OS_InitTick(); - OS_TPrintf("Initialize begin\n"); - - // ARM7‘¤‚Ńƒ‚ƒŠ“à‚ɃZƒbƒg‚³‚ꂽSCFG‚̃f[ƒ^‚ðŠm•Û - MI_CpuMove16( DISPINFO_SHARED_SCFG_REG_ADDR, gArm7SCFGReg, DISPINFO_SHARED_SCFG_REG_SIZE ); - // WRAM‚É‘Þ”ð‚³‚ê‚Ă镪‚àƒRƒs[ - MI_CpuMove16( DISPINFO_SHARED_SCFG_WRAM_ADDR, gArm7SCFGShared, DISPINFO_SHARED_SCFG_WRAM_SIZE ); - - //---- interrupt setting - OS_EnableIrq(); - OS_EnableInterrupts(); - - OS_InitSharedFont(); - GX_Init(); - - OS_SetIrqFunction( OS_IE_V_BLANK, VBlankHandler ); - OS_EnableIrqMask( OS_IE_V_BLANK ); - GX_VBlankIntr( TRUE ); - - OS_TPrintf("RTC Initilize...\n"); - RTC_Init(); - - OS_TPrintf("Allocator Initialize...\n"); - InitAllocator(); - CRYPTO_SetAllocator( Alloc, Free ); - -#if NAM_ENABLE - OS_TPrintf("NAM Initialize...\n"); - NAM_Init( Alloc, Free ); -#endif - - InitBG(); - OS_TPrintf("Initialize Finished\n"); - displayInfoInit(); - - OS_TPrintf("begin mainloop\n"); - - - // ƒƒCƒ“ƒ‹[ƒv - while( 1 ) - { - OS_WaitIrq(1, OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„‚螂ݑ҂¿ - - ReadKeyPad(); // ƒL[“ü—͂̎擾 - - displayInfoMain(); // ƒrƒ…[ƒAXV - } - - OS_Terminate(); - -} - - -void VBlankHandler(void) -{ - OS_SetIrqCheckFlag( OS_IE_V_BLANK ); // Vƒuƒ‰ƒ“ƒNŠ„žƒ`ƒFƒbƒN‚̃Zƒbƒg -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/misc.c b/build/tests/DisplaySystemInformation/ARM9/src/misc.c deleted file mode 100644 index 2e81ed3b..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/misc.c +++ /dev/null @@ -1,759 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: misc.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "misc.h" - -// define data----------------------------------------------------------------- -#define NTR_IPL_FONT_DATA "data/NTR_IPL_font_m.NFTR" - -#define STRING_LENGTH_MAX 256 - -#define GRAY(x) GX_RGB(x, x, x) - -enum -{ - TXT_CPALETTE_MAIN, - TXT_CPALETTE_USERCOLOR, - TXT_CPALETTE_USERCOLORSAMPLE, - TXT_CPALETTE_4BPP, - TXT_NUM_CPALEETE -}; - -// ƒfƒ‚‹¤’ʂ̃Jƒ‰[ƒpƒŒƒbƒg -GXRgb TXTColorPalette[TXT_NUM_CPALEETE * 16] = -{ - GX_RGB(31, 31, 31), GX_RGB(31, 31, 31), GX_RGB( 0, 0, 0), GX_RGB(31, 0, 0),// Šî–{•¶ŽšF - GX_RGB( 0, 31, 0), GX_RGB( 0, 0, 31), GX_RGB( 0, 31, 31), GX_RGB(31, 0, 31), - GX_RGB(31, 31, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), - GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), GX_RGB( 0, 0, 0), - - GX_RGB( 0, 0, 0), GX_RGB(12, 16, 19), GX_RGB(23, 9, 0), GX_RGB(31, 0, 3),// ƒ†[ƒU[ƒJƒ‰[—̈æ - GX_RGB(31, 17, 31), GX_RGB(31, 18, 0), GX_RGB(30, 28, 0), GX_RGB(21, 31, 0), - GX_RGB( 0, 20, 7), GX_RGB( 9, 27, 17), GX_RGB( 6, 23, 30), GX_RGB( 0, 11, 30), - GX_RGB( 0, 0, 18), GX_RGB(17, 0, 26), GX_RGB(26, 0, 29), GX_RGB(31, 0, 18), - - GX_RGB(12, 16, 19), GX_RGB(23, 9, 0), GX_RGB(31, 0, 3), GX_RGB(31, 17, 31),// ƒ†[ƒU[ƒJƒ‰[‚̃Tƒ“ƒvƒ‹—̈æ - GX_RGB(31, 18, 0), GX_RGB(30, 28, 0), GX_RGB(21, 31, 0), GX_RGB( 0, 31, 0), - GX_RGB( 0, 20, 7), GX_RGB( 9, 27, 17), GX_RGB( 6, 23, 30), GX_RGB( 0, 11, 30), - GX_RGB( 0, 0, 18), GX_RGB(17, 0, 26), GX_RGB(26, 0, 29), GX_RGB(31, 0, 18), - - GRAY(31), GRAY(29), GRAY(27), GRAY(25), - GRAY(23), GRAY(21), GRAY(19), GRAY(17), - GRAY(15), GRAY(14), GRAY(12), GRAY(10), - GRAY( 8), GRAY( 6), GRAY( 3), GRAY( 0), -}; - -// ƒOƒ‰ƒfƒpƒŒƒbƒg‚ðì‚邽‚߂̃}ƒNƒ -#define MAKECOLOR(r,g,b) GX_RGB( 0, 0, 0), GX_RGB(r, g, b), MC(r,g,b,1), MC(r,g,b,2),\ - MC(r,g,b,3), MC(r,g,b,4), MC(r,g,b,5), MC(r,g,b,6),\ - MC(r,g,b,7), MC(r,g,b,8), MC(r,g,b,9), MC(r,g,b,10),\ - MC(r,g,b,11), MC(r,g,b,12), MC(r,g,b,13), GX_RGB(31, 31, 31) - -#define MC(r,g,b,i) GX_RGB(r+((31-r)*i)/14, g+((31-g)*i)/14, b+((31-b)*i)/14) - -// ƒ†[ƒU[ƒJƒ‰[ƒpƒŒƒbƒgØ‚è‘Ö‚¦—p -GXRgb TempPalette[16 * 16] = -{ - MAKECOLOR(12, 16, 19), - MAKECOLOR(23, 9, 0), - MAKECOLOR(31, 0, 3), - MAKECOLOR(31, 17, 31), - MAKECOLOR(31, 18, 0), - MAKECOLOR(30, 28, 0), - MAKECOLOR(21, 31, 0), - MAKECOLOR( 0, 31, 0), - MAKECOLOR( 0, 20, 7), - MAKECOLOR( 9, 27, 17), - MAKECOLOR( 6, 23, 30), - MAKECOLOR( 0, 11, 30), - MAKECOLOR( 0, 0, 18), - MAKECOLOR(17, 0, 26), - MAKECOLOR(26, 0, 29), - MAKECOLOR(31, 0, 18), -}; - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- -#define CANVAS_WIDTH 32 // •¶Žš•`‰æˆæ‚Ì• (ƒLƒƒƒ‰ƒNƒ^’PˆÊ) -#define CANVAS_HEIGHT 24 // •¶Žš•`‰æˆæ‚Ì‚‚³ (ƒLƒƒƒ‰ƒNƒ^’PˆÊ) -#define CANVAS_LEFT 0 // •¶Žš•`‰æˆæ‚̈ʒuX (ƒLƒƒƒ‰ƒNƒ^’PˆÊ) -#define CANVAS_TOP 0 // •¶Žš•`‰æˆæ‚̈ʒuY (ƒLƒƒƒ‰ƒNƒ^’PˆÊ) - -#define TEXT_HSPACE 1 // •¶Žš—ñ•`‰æŽž‚Ì•¶ŽšŠÔ (ƒsƒNƒZƒ‹’PˆÊ) -#define TEXT_VSPACE 1 // •¶Žš—ñ•`‰æŽž‚ÌsŠÔ (ƒsƒNƒZƒ‹’PˆÊ) - -#define CHARACTER_OFFSET 0 // Žg—p‚·‚éƒLƒƒƒ‰ƒNƒ^—ñ‚ÌŠJŽn”Ô† - -// RTCƒf[ƒ^•\ަˆÊ’uƒ[ƒN -typedef struct RtcDrawPos{ - int date_x; - int date_y; - int time_x; - int time_y; -}RtcDrawPos; - -// function's prototype------------------------------------------------------- -static BOOL WaitDetachTP( void ); -static void StartDetachTP( void ); -static void InitScreen( void ); -static void InitCanvas( void ); - -// global variable------------------------------------------------------------- -KeyWork pad; // ƒL[ƒpƒbƒh“ü—̓f[ƒ^ -TpWork tpd; // ƒ^ƒbƒ`ƒpƒlƒ‹“ü—̓f[ƒ^ -NNSFndAllocator g_allocator; // ƒƒ‚ƒŠƒAƒƒP[ƒ^ -NNSG2dFont gFont; // ƒtƒHƒ“ƒg -NNSG2dCharCanvas gCanvas; // CharCanvas -NNSG2dTextCanvas gTextCanvas; // TextCanvas -NNSG2dCharCanvas gCanvasSub; // CharCanvas -NNSG2dTextCanvas gTextCanvasSub; // TextCanvas - -// static variable------------------------------------------------------------- -static int s_detach_count; -static RtcDrawPos s_rtcPos; -static RTCDate s_rtcDate; -static RTCTime s_rtcTime; -static u16 s_vcount; - -static char s_strBuffer[ STRING_LENGTH_MAX * 2 ] ATTRIBUTE_ALIGN(2); -static u16 s_strBufferUTF16[ STRING_LENGTH_MAX ]; - -// const data------------------------------------------------------------------ - -// —j“úƒf[ƒ^•\ަ—p•¶ŽšƒR[ƒh -const u8 *const g_strWeek[] ATTRIBUTE_ALIGN(2) = { - (const u8 *)"SUN", - (const u8 *)"MON", - (const u8 *)"TUE", - (const u8 *)"WED", - (const u8 *)"THU", - (const u8 *)"FRI", - (const u8 *)"SAT", -}; - - -// ============================================================================ -// ƒƒ‚ƒŠŠÇ— -// ============================================================================ - -// ƒAƒƒP[ƒ^‚̉Šú‰» -void InitAllocator( void ) -{ - // ¦Žb’è‘Îô@FS_Init“à‚ŃnƒbƒVƒ…ƒ`ƒFƒbƒN—p‚̃q[ƒv‚ðŠm•Û‚µ‚Ä‚¢‚邽‚ßA - // ƒ†[ƒU[ƒq[ƒv‚ÌŠm•Û‘O‚ÉFS_Init‚ðs‚¤•K—v‚ª‚ ‚éB - - // ƒtƒ@ƒCƒ‹ƒVƒXƒeƒ€‰Šú‰» - FS_Init( FS_DMA_NOT_USE ); - - { - NNSFndAllocator *pAllocator = &g_allocator; - u32 arenaLow = MATH_ROUNDUP ( (u32)OS_GetMainArenaLo(), 16 ); - u32 arenaHigh = MATH_ROUNDDOWN( (u32)OS_GetMainArenaHi(), 16 ); - u32 heapSize = arenaHigh - arenaLow; - void* heapMemory = OS_AllocFromMainArenaLo( heapSize, 16 ); - NNSFndHeapHandle heapHandle; - SDK_NULL_ASSERT( pAllocator ); - - heapHandle = NNS_FndCreateExpHeap( heapMemory, heapSize ); - SDK_ASSERT( heapHandle != NNS_FND_HEAP_INVALID_HANDLE ); - - NNS_FndInitAllocatorForExpHeap( pAllocator, heapHandle, 32 ); - } -} - - -// ƒƒ‚ƒŠŠ„‚è“–‚Ä -void *Alloc( u32 size ) -{ - return NNS_FndAllocFromAllocator( &g_allocator, size ); -} - - -// ƒƒ‚ƒŠ‰ð•ú -void Free( void *pBuffer ) -{ - NNS_FndFreeToAllocator( &g_allocator, pBuffer ); -} - - -// ============================================================================ -// ‰æ–ÊÝ’è -// ============================================================================ - -// BG‰Šú‰» -void InitBG(void) -{ - // ‰æ–ÊOFF - GX_DispOff(); - GXS_DispOff(); - - // VRAM‚ÌŠ„‚è“–‚Ä‚ð‘S‚ĉðœ - GX_DisableBankForBG(); - GX_DisableBankForOBJ(); - GX_DisableBankForSubBG(); - GX_DisableBankForSubOBJ(); - - // ƒƒCƒ“2DƒGƒ“ƒWƒ“‚Ìo—Í‚ð‰º‰æ–Ê‚É - GX_SetDispSelect( GX_DISP_SELECT_SUB_MAIN ); - - // ƒƒCƒ“LCD - { - // VRAMŠ„‚è“–‚Ä - GX_SetBankForBG ( GX_VRAM_BG_128_A ); - GX_SetBankForOBJ( GX_VRAM_OBJ_128_B ); - - MI_CpuClearFast( (void *)HW_BG_VRAM, 0x20000 ); // BG -VRAM ƒNƒŠƒA - MI_CpuClearFast( (void *)HW_OBJ_VRAM, 0x20000 ); // OBJ-VRAM ƒNƒŠƒA - MI_DmaFill32( 3, (void *)HW_OAM, 192, HW_OAM_SIZE ); // OAM ƒNƒŠƒA - - // ƒJƒ‰[ƒpƒŒƒbƒg‚ðÝ’è - GX_LoadBGPltt( TXTColorPalette, 0, sizeof(TXTColorPalette) ); - - // BGƒ‚[ƒhÝ’è - GX_SetGraphicsMode( GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D ); - - GX_SetBGScrOffset ( GX_BGSCROFFSET_0x10000 ); - GX_SetBGCharOffset( GX_BGCHAROFFSET_0x00000 ); - } - // ƒTƒuLCD - { - // VRAMŠ„‚è“–‚Ä - GX_SetBankForSubBG ( GX_VRAM_SUB_BG_128_C ); // VRAM-C for BGs - GX_SetBankForSubOBJ( GX_VRAM_SUB_OBJ_128_D ); // VRAM-D for BGs - - MI_CpuClearFast( (void *)HW_DB_BG_VRAM, 0x20000 ); // BG -VRAM ƒNƒŠƒA - MI_CpuClearFast( (void *)HW_DB_OBJ_VRAM, 0x20000 ); // OBJ -VRAM ƒNƒŠƒA - - // ƒJƒ‰[ƒpƒŒƒbƒg‚ðÝ’è - GXS_LoadBGPltt( TXTColorPalette, 0, sizeof(TXTColorPalette) ); - - // BGƒ‚[ƒhÝ’è - GXS_SetGraphicsMode( GX_BGMODE_0 ); // BGMODE is 0 - } - InitScreen(); - InitCanvas(); -} - - -// ƒXƒNƒŠ[ƒ“‰Šú‰» -static void InitScreen( void ) -{ - // ƒƒCƒ“‰æ–Ê BG 0 ‚ðÝ’è - G2_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, // ƒXƒNƒŠ[ƒ“ƒTƒCƒY 256x256 - GX_BG_COLORMODE_256, // ƒJƒ‰[ƒ‚[ƒh 256F - GX_BG_SCRBASE_0xf800, // ƒXƒNƒŠ[ƒ“ƒx[ƒX - GX_BG_CHARBASE_0x00000, // ƒLƒƒƒ‰ƒNƒ^ƒx[ƒX - GX_BG_EXTPLTT_01 // Šg’£ƒpƒŒƒbƒgƒXƒƒbƒg - ); - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 16 colors mode - GX_BG_SCRBASE_0xe800, // screen base offset + 0x0000 is the address for BG #1 screen - GX_BG_CHARBASE_0x10000, // character base offset + 0x04000 is the address for BG #0 characters - GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled - ); - G2_SetBG2ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 16 colors mode - GX_BG_SCRBASE_0xd800, // screen base offset + 0x0000 is the address for BG #1 screen - GX_BG_CHARBASE_0x14000 // character base offset + 0x04000 is the address for BG #0 characters - ); - GX_SetVisiblePlane( GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1); - G2_SetBG2Priority(0); - G2_SetBG0Priority(1); - G2_SetBG1Priority(2); - - // ƒTƒu‰æ–Ê BG 0 ‚ðÝ’è - G2S_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, // 256pix x 256pix text - GX_BG_COLORMODE_16, // use 16 colors mode - GX_BG_SCRBASE_0xf800, // screen base offset + 0x0000 is the address for BG #0 screen - GX_BG_CHARBASE_0x00000, // character base offset + 0x04000 is the address for BG #0 characters - GX_BG_EXTPLTT_01 // use BGExtPltt slot #0 if BGExtPltt is enabled - ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); // display only BG #0 -} - - -// •¶Žš—ñ•`‰æ‚̉Šú‰» -static void InitCanvas( void ) -{ - CMN_InitFileSystem( &g_allocator ); - - // ƒtƒHƒ“ƒg‚ð“ǂݞ‚݂܂· - { - void* pFontFile; - u32 size = CMN_LoadFile( &pFontFile, NTR_IPL_FONT_DATA, &g_allocator); - NNS_G2D_ASSERT( size > 0 ); - NNS_G2dFontInitUTF16(&gFont, pFontFile); -// NNS_G2dPrintFont(&gFont); - } - - { - // CharCanvas ‚̉Šú‰» - NNS_G2dCharCanvasInitForBG( - &gCanvas, - (GXCharFmt256*)G2_GetBG0CharPtr() + CHARACTER_OFFSET, - CANVAS_WIDTH, - CANVAS_HEIGHT, - NNS_G2D_CHARA_COLORMODE_256 - ); - - // TextCanvas‚̉Šú‰» - NNS_G2dTextCanvasInit( - &gTextCanvas, - &gCanvas, - &gFont, - TEXT_HSPACE, - TEXT_VSPACE - ); - - // ƒXƒNƒŠ[ƒ“‚ðÝ’è - NNS_G2dMapScrToCharText( - G2_GetBG0ScrPtr(), - CANVAS_WIDTH, - CANVAS_HEIGHT, - CANVAS_LEFT, - CANVAS_TOP, - NNS_G2D_TEXT_BG_WIDTH_256, - CHARACTER_OFFSET, - TXT_CPALETTE_MAIN - ); - } - { - // CharCanvas ‚̉Šú‰» - NNS_G2dCharCanvasInitForBG( - &gCanvasSub, - (GXCharFmt16*)G2S_GetBG0CharPtr() + CHARACTER_OFFSET, - CANVAS_WIDTH, - CANVAS_HEIGHT, - NNS_G2D_CHARA_COLORMODE_16 - ); - - // TextCanvas‚̉Šú‰» - NNS_G2dTextCanvasInit( - &gTextCanvasSub, - &gCanvasSub, - &gFont, - TEXT_HSPACE, - TEXT_VSPACE - ); - - // ƒXƒNƒŠ[ƒ“‚ðÝ’è - NNS_G2dMapScrToCharText( - G2S_GetBG0ScrPtr(), - CANVAS_WIDTH, - CANVAS_HEIGHT, - CANVAS_LEFT, - CANVAS_TOP, - NNS_G2D_TEXT_BG_WIDTH_256, - CHARACTER_OFFSET, - TXT_CPALETTE_MAIN - ); - } -} - - -// UTF16‚ł̒¼Ú•¶Žš•\ަ -void PutStringUTF16( int x, int y, int color, const u16 *strUTF16 ) -{ - NNS_G2dTextCanvasDrawText( &gTextCanvas, x, y, color, TXT_DRAWTEXT_FLAG_DEFAULT, - strUTF16 ); -} - -void PutStringUTF16Sub( int x, int y, int color, const u16 *strUTF16 ) -{ - NNS_G2dTextCanvasDrawText( &gTextCanvasSub, x, y, color, TXT_DRAWTEXT_FLAG_DEFAULT, - strUTF16 ); -} - - -// ‘Ž®•t‚«‚Å쬂µ‚½•¶Žš—ñ‚ð•\ަ‚µ‚½ê‡‚Ì•‚ðŽæ“¾‚·‚é -int GetPrintfWidth( const NNSG2dTextCanvas *pCanvas, const char *fmt, ... ) -{ - int srcLen; - int dstLen = sizeof(s_strBufferUTF16); - va_list vlist; - va_start(vlist, fmt); - srcLen = STD_TVSNPrintf( s_strBuffer, sizeof(s_strBuffer), fmt, vlist); - va_end(vlist); - s_strBuffer[ srcLen ] = 0; - - (void)STD_ConvertStringSjisToUnicode( s_strBufferUTF16, &dstLen, s_strBuffer, &srcLen, NULL ); - s_strBufferUTF16[ dstLen ] = 0; - - return NNS_G2dTextCanvasGetTextWidth( pCanvas, s_strBufferUTF16 ); -} - - -// SJIS‚ÅPrintfŒ`Ž®‚Å•¶Žš•\ަi“à•”‚ÅUTF16‚ɕϊ·) -void PrintfSJIS( int x, int y, int color, const char *fmt, ... ) -{ - int srcLen; - int dstLen = sizeof(s_strBufferUTF16); - va_list vlist; - va_start(vlist, fmt); - srcLen = STD_TVSNPrintf( s_strBuffer, sizeof(s_strBuffer), fmt, vlist); - va_end(vlist); - s_strBuffer[ srcLen ] = 0; - - (void)STD_ConvertStringSjisToUnicode( s_strBufferUTF16, &dstLen, s_strBuffer, &srcLen, NULL ); - s_strBufferUTF16[ dstLen ] = 0; - - NNS_G2dTextCanvasDrawText(&gTextCanvas, x, y, color, TXT_DRAWTEXT_FLAG_DEFAULT, - s_strBufferUTF16 ); -} - -void PrintfSJISSub( int x, int y, int color, const char *fmt, ... ) -{ - int srcLen; - int dstLen = sizeof(s_strBufferUTF16); - va_list vlist; - va_start(vlist, fmt); - srcLen = STD_TVSNPrintf( s_strBuffer, sizeof(s_strBuffer), fmt, vlist); - va_end(vlist); - s_strBuffer[ srcLen ] = 0; - - (void)STD_ConvertStringSjisToUnicode( s_strBufferUTF16, &dstLen, s_strBuffer, &srcLen, NULL ); - s_strBufferUTF16[ dstLen ] = 0; - - NNS_G2dTextCanvasDrawText(&gTextCanvasSub, x, y, color, TXT_DRAWTEXT_FLAG_DEFAULT, - s_strBufferUTF16 ); -} - - -// ƒL[“ü—͓ǂÝo‚µ-------------------------------- -void ReadKeyPad(void) -{ - u16 readData = PAD_Read(); - pad.trg = (u16)(readData & (readData ^ pad.cont)); // ƒgƒŠƒK “ü—Í - pad.cont = readData; // ƒxƒ^ “ü—Í -} - - -// ƒ^ƒbƒ`ƒpƒlƒ‹ƒf[ƒ^‚̎擾----------------------- -void ReadTP(void) -{ - TP_GetCalibratedPoint( &tpd.last, &tpd.raw ); // ‘O‰ñ‚ÌTPƒf[ƒ^‚ð‘Þ”ð - - if( TP_RequestRawSampling(&tpd.raw) ) { // ƒ^ƒbƒ`ƒpƒlƒ‹‚̃Tƒ“ƒvƒŠƒ“ƒO - SVC_CpuClear(0x0000, &tpd.raw, sizeof(tpd.raw), 16); // SPI-busy‚Ńf[ƒ^Žæ“¾‚ÉŽ¸”s‚µ‚½Žž‚Íhƒf[ƒ^‚È‚µh‚ÅƒŠƒ^[ƒ“B - return; - } - TP_GetCalibratedPoint( &tpd.disp, &tpd.raw ); // TPÀ•W‚©‚çLCDÀ•W‚ɕϊ·B - - if( !WaitDetachTP() ) { // TPƒfƒ^ƒbƒ`‘Ò‚¿‚ðs‚¤B - SVC_CpuClear(0x0000, &tpd.disp, sizeof(tpd.disp), 16); // SPI-busy‚Ńf[ƒ^Žæ“¾‚ÉŽ¸”s‚µ‚½Žž‚Íhƒf[ƒ^‚È‚µh‚ÅƒŠƒ^[ƒ“B - return; - } -#if 0 - if(tpd.disp.touch) { // Œ»Ý‚ÌTPƒf[ƒ^‚ð•\ަ - switch ( tpd.disp.validity ) { - case TP_VALIDITY_VALID: - OS_Printf("( %3d, %3d ) -> ( %3d, %3d )\n", tpd.raw.x, tpd.raw.y, tpd.disp.x, tpd.disp.y); - break; - case TP_VALIDITY_INVALID_X: - OS_Printf("( *%3d, %3d ) -> ( *%3d, %3d )\n", tpd.raw.x, tpd.raw.y, tpd.disp.x, tpd.disp.y); - break; - case TP_VALIDITY_INVALID_Y: - OS_Printf("( %3d, *%3d ) -> ( %3d, *%3d )\n", tpd.raw.x, tpd.raw.y, tpd.disp.x, tpd.disp.y); - break; - case TP_VALIDITY_INVALID_XY: - OS_Printf("( *%3d, *%3d ) -> ( *%3d, *%3d )\n", tpd.raw.x, tpd.raw.y, tpd.disp.x, tpd.disp.y); - break; - } - } -#endif -} - - -// TPƒfƒ^ƒbƒ`‚ð‘Ò‚Â -static BOOL WaitDetachTP( void ) -{ - // s_detach_count‚ªŽn“®‚µ‚Ä‚¢‚½‚çAƒJƒEƒ“ƒg”»’èB - if(s_detach_count > 0) { - if(tpd.disp.touch == 0) { // TP‚ª‰Ÿ‚³‚ê‚Ä‚¢‚È‚¯‚ê‚ÎAƒJƒEƒ“ƒgis‚µ‹K’è’l‚ÅÄ“ü—Í‚ðŽó‚¯•t‚¯‚éB - s_detach_count--; - }else { - s_detach_count = TP_CSR_DETACH_COUNT; - } - return FALSE; - } - return TRUE; -} - - -// TPƒfƒ^ƒbƒ`‘Ò‚¿‚ÌŠJŽn -static void StartDetachTP( void ) -{ - s_detach_count = TP_CSR_DETACH_COUNT; -} - - -//====================================================== -// ƒƒjƒ…[§Œä -//====================================================== - -// ƒƒjƒ…[•`‰æ -void DrawMenu( u16 nowCsr, const MenuParam *pMenu ) -{ - int i; - int color; - - for( i = 0; i < pMenu->num; i++ ) { - if(i == nowCsr) { - if( !pMenu->pos[ i ].enable ) { - color = pMenu->disable_color; - }else { - color = pMenu->select_color; - } - }else { - color = pMenu->normal_color; - } - PutStringUTF16( pMenu->pos[ i ].x, pMenu->pos[ i ].y, color, (pMenu->str_elem)[ i ] ); - } -} - -// ƒ^ƒbƒ`ƒpƒlƒ‹‚É‚æ‚é‘I‘ð‚ðs‚¤ŠÖ”E”Ä—p”ÅB -// Žå‚Ƀ`ƒƒƒ^ƒŠƒ“ƒO‚ð‹zŽû‚·‚é’ö“x‚Ì‹@”\‚ðŽ‚ÂB -// SelectSomethingFuncŒ^‚ÌŠÖ”ƒ|ƒCƒ“ƒ^func‚É‚ÍAŽŸ‚ÉŽ¦‚·ðŒ‚ð–ž‚½‚·ŠÖ”‚ðì‚èAƒŠƒXƒg‚É‚µ‚ăZƒbƒg‚µ‚ÄŽg‚¤B -// ‚PD—v‘fã‚Ń^ƒbƒ`‚µ‚Ä‚¢‚ê‚ÎTRUE‚ð•Ô‚µA‚»‚¤‚łȂ¯‚ê‚ÎFALSE‚ð•Ô‚·B -// ‚QD‘æˆêˆø”‚É—^‚¦‚½ƒ|ƒCƒ“ƒ^‚ÌŽw‚·•Ï”‚ɃJ[ƒ\ƒ‹ˆÊ’u‚ð“ü‚ê‚ĕԂ·B -BOOL SelectSomethingByTP( u16 *nowCsr, SelectSomethingFunc func[], int funcnum ) -{ - int i; - static u16 detach_count = 0; - static u16 csr_old = 0xffff; - static u16 same_csr_count = 0; - - // detach_count‚ªŽn“®‚µ‚Ä‚¢‚½‚çAƒJƒEƒ“ƒg”»’èB - if( detach_count > 0 ) { - if( tpd.disp.touch == 0 ) { // TP‚ª‰Ÿ‚³‚ê‚Ä‚¢‚È‚¯‚ê‚ÎAƒJƒEƒ“ƒgis‚µATP_CSR_DETACH_COUNTƒJƒEƒ“ƒg‚Ńƒjƒ…[‘I‘ð - if( ++detach_count == TP_CSR_DETACH_COUNT ) { - detach_count = 0; - same_csr_count = 0; - *nowCsr = csr_old; - return TRUE; - }else { - return FALSE; - } - } - } - detach_count=0; // detachƒJƒEƒ“ƒg’l‚̃NƒŠƒA - - for( i = 0; i < funcnum; i++ ) { - if( tpd.disp.touch ) { // ƒ^ƒbƒ`ƒpƒlƒ‹‚ªƒ^ƒbƒ`‚³‚ê‚Ä‚¢‚é‚È‚çA - u16 csr; - if( func[i]( &csr, &tpd.disp ) ) { // func‚Í—v‘fã‚Ƀ^ƒbƒ`‚³‚ê‚Ä‚¢‚ê‚ÎTRUE‚ð•Ô‚µAƒJ[ƒ\ƒ‹ˆÊ’u‚à•Ô‚µ‚Ä‚­‚ê‚éŠÖ” - if( tpd.disp.validity == TP_VALIDITY_VALID ) { // ƒJ[ƒ\ƒ‹‚ð‚»‚Ì—v‘f‚Ɉړ® - if( csr_old == csr ) { - if( same_csr_count < TP_CSR_TOUCH_COUNT ) { - same_csr_count++; - } - if( same_csr_count == TP_CSR_TOUCH_COUNT ) { - *nowCsr = csr; - } - return FALSE; - }else { - csr_old = csr; - } - break; - } - }else { - } - }else { // touch==0 - if( same_csr_count == TP_CSR_TOUCH_COUNT ) { - detach_count = 1; - break; - } - } - } - same_csr_count = 0; - return FALSE; -} - -// ƒ^ƒbƒ`ƒpƒlƒ‹‚É‚æ‚郃jƒ…[‘I‘ð -BOOL SelectMenuByTP( u16 *nowCsr, const MenuParam *pMenu ) -{ - u16 i; - static u16 detach_count = 0; - static u16 csr_old = 0xff; - static u16 same_csr_count = 0; - - // detach_count‚ªŽn“®‚µ‚Ä‚¢‚½‚çAƒJƒEƒ“ƒg”»’èB - if( detach_count > 0 ) { - if( tpd.disp.touch == 0 ) { // TP‚ª‰Ÿ‚³‚ê‚Ä‚¢‚È‚¯‚ê‚ÎAƒJƒEƒ“ƒgis‚µA‚P‚OƒJƒEƒ“ƒg‚Ńƒjƒ…[‘I‘ð - if( ++detach_count == TP_CSR_DETACH_COUNT ) { - detach_count = 0; - return TRUE; - }else { - return FALSE; - } - } - } - detach_count=0; // detachƒJƒEƒ“ƒg’l‚̃NƒŠƒA - - for( i = 0; i < pMenu->num; i++ ) { - if( tpd.disp.touch ) { // ƒ^ƒbƒ`ƒpƒlƒ‹‚ªƒƒjƒ…[‚Ì—v‘fã‚Ń^ƒbƒ`‚³‚ê‚Ä‚¢‚é‚È‚çA - NNSG2dTextRect rect = NNS_G2dTextCanvasGetTextRect( &gTextCanvas, (pMenu->str_elem)[ i ] ); - u16 top_x = (u16)( pMenu->pos[ i ].x ); // ƒƒjƒ…[—v‘f‚ÌLCDÀ•W‚ðŽZo - u16 top_y = (u16)( pMenu->pos[ i ].y ); - u16 bottom_x = (u16)( top_x + rect.width ); - u16 bottom_y = (u16)( top_y + rect.height ); - - - if( WithinRangeTP( top_x, top_y, bottom_x, bottom_y, &tpd.disp ) ) { - if( tpd.disp.validity == TP_VALIDITY_VALID ) { // ƒJ[ƒ\ƒ‹‚ð‚»‚Ì—v‘f‚Ɉړ® - if( csr_old == i ) { - if( same_csr_count < TP_CSR_TOUCH_COUNT ) { - same_csr_count++; - } - if( same_csr_count == TP_CSR_TOUCH_COUNT ) { - *nowCsr = i; - } - return FALSE; - }else { - csr_old = i; - } - break; - } - }else { - } - }else { // touch==0 - if( same_csr_count == TP_CSR_TOUCH_COUNT ) { - detach_count = 1; - break; - } - } - } - same_csr_count = 0; - return FALSE; -} - - -// Œ»Ý‚̃^ƒbƒ`ƒpƒlƒ‹À•W‚ªŽw’è—̈æ“à‚É‚ ‚é‚©‚Ç‚¤‚©‚ð•Ô‚·B -BOOL WithinRangeTP( int top_x, int top_y, int bottom_x, int bottom_y, TPData *tgt ) -{ - if( ( tgt->x >= top_x ) && - ( tgt->x <= bottom_x ) && - ( tgt->y >= top_y ) && - ( tgt->y <= bottom_y ) ) { - return TRUE; - }else { - return FALSE; - } -} - - -// ƒoƒi[ƒAƒCƒRƒ“OBJ‚̃[ƒh -void SetBannerIconOBJ( GXOamAttr *pDstOAM, BannerFileV1 *bannerp ) -{ - GXS_LoadOBJPltt( bannerp->pltt, 15, BANNER_PLTT_SIZE ); - MI_CpuCopyFast( bannerp->image, (void *)(HW_DB_OBJ_VRAM + 0x20), BANNER_IMAGE_SIZE ); - G2_SetOBJAttr( pDstOAM, // OAM pointer - 32, // X position - 32, // Y position - 0, // Priority - GX_OAM_MODE_NORMAL, // Bitmap mode - FALSE, // mosaic off - GX_OAM_EFFECT_NONE, // affine off - GX_OAM_SHAPE_32x32, // 16x16 size - GX_OAM_COLOR_16, // 16 color - 1, // charactor - 15, // palette - 0); // affine -} - - -//=============================================== -// RTCƒAƒNƒZƒXƒ‹[ƒ`ƒ“ -//=============================================== - -// RTCƒf[ƒ^‚̎擾 -BOOL GetRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ) -{ - if( forceGetFlag || ( pRTCDraw->vcount++ == 59 ) ) { - pRTCDraw->vcount = 0; - MI_CpuCopy16( &pRTCDraw->date, &pRTCDraw->date_old, sizeof(RTCDate) ); - MI_CpuCopy16( &pRTCDraw->time, &pRTCDraw->time_old, sizeof(RTCTime) ); - (void)RTC_GetDateTime( &pRTCDraw->date, &pRTCDraw->time ); - return TRUE; - } - return FALSE; -} - - -// RTCƒf[ƒ^‚Ì•\ަ -void DrawRTCData( RTCDrawProperty *pRTCDraw ) -{ - void (*pPrintFunc)( int x, int y, int color, const char *fmt, ... ) = - ( pRTCDraw->isTopLCD ) ? PrintfSJISSub : PrintfSJIS; - - // ‘ORTCî•ñ‚ÌÁ‹Ž - { - u32 year = pRTCDraw->date_old.year + 2000; - pPrintFunc( pRTCDraw->date_x, pRTCDraw->date_y, TXT_COLOR_WHITE, "%04d/%02d/%02d[%3s]", - year, - pRTCDraw->date_old.month, - pRTCDraw->date_old.day, - g_strWeek[ pRTCDraw->date_old.week ] - ); - pPrintFunc( pRTCDraw->time_x, pRTCDraw->time_y, TXT_COLOR_WHITE, "%02d:%02d:%02d", - pRTCDraw->time_old.hour, - pRTCDraw->time_old.minute, - pRTCDraw->time_old.second - ); - } - // RTCî•ñ‚Ì•\ަ - { - u32 year = pRTCDraw->date.year + 2000; - pPrintFunc( pRTCDraw->date_x, pRTCDraw->date_y, TXT_COLOR_BLACK, "%d/%02d/%02d[%3s]", - year, - pRTCDraw->date.month, - pRTCDraw->date.day, - g_strWeek[ pRTCDraw->date.week ] - ); - pPrintFunc( pRTCDraw->time_x, pRTCDraw->time_y, TXT_COLOR_BLACK, "%02d:%02d:%02d", - pRTCDraw->time.hour, - pRTCDraw->time.minute, - pRTCDraw->time.second - ); - } -} - -// RTCƒf[ƒ^‚̎擾&•\ަ -void GetAndDrawRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ) -{ - if( GetRTCData( pRTCDraw, forceGetFlag ) ) { - DrawRTCData( pRTCDraw ); - } -} - -// ƒ†[ƒU[ƒJƒ‰[—̈æ‚ÌØ‚è‘Ö‚¦ -void ChangeUserColor( u8 col ) -{ - int l; - if(col > 15) return; - for(l=0;l<16;l++) - { - TXTColorPalette[16+l] = TempPalette[16 * col + l]; - } - GX_LoadBGPltt( TXTColorPalette, 0, sizeof(TXTColorPalette) ); -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/misc.h b/build/tests/DisplaySystemInformation/ARM9/src/misc.h deleted file mode 100644 index ba7cd3bc..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/misc.h +++ /dev/null @@ -1,196 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: misc.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __MISC_H__ -#define __MISC_H__ - -#include -#include - -#define NNS_G2D_UNICODE -#include -#include -#include -#include - -#include "cmn.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// define data---------------------------------------------------------- -#define TP_CSR_TOUCH_COUNT 2 // TPƒJ[ƒ\ƒ‹‚̃`ƒƒƒ^ƒŠƒ“ƒO‹zŽû‚Ì‚½‚߂̃JƒEƒ“ƒg’l -#define TP_CSR_DETACH_COUNT 2 // TPƒJ[ƒ\ƒ‹‚ðu‘I‘ðv‚Æ”»’è‚·‚éTPƒfƒ^ƒbƒ`‚©‚ç‚̃JƒEƒ“ƒg’l - -// DrawText ‚ł̶ãŠñ‚¹ -#define TXT_DRAWTEXT_FLAG_DEFAULT (NNS_G2D_VERTICALORIGIN_TOP | NNS_G2D_HORIZONTALORIGIN_LEFT | NNS_G2D_HORIZONTALALIGN_LEFT) - -// TXTColorPalette ‚ÌF–¼ 256FƒpƒŒƒbƒg‚ւ̃[ƒh‚ð‘z’è -enum -{ - // ƒpƒŒƒbƒg0 TXT_CPALETTE_MAIN - TXT_COLOR_NULL=0, - TXT_COLOR_WHITE, - TXT_COLOR_BLACK, - TXT_COLOR_RED, - TXT_COLOR_GREEN, - TXT_COLOR_BLUE, - TXT_COLOR_CYAN, - TXT_COLOR_MAGENTA, - TXT_COLOR_YELLOW, - - // ƒ†[ƒU[ƒJƒ‰[ƒOƒ‰ƒf[ƒVƒ‡ƒ“ƒpƒŒƒbƒg—̈æ - TXT_UCOLOR_GNULL=16, - TXT_UCOLOR_G0, - TXT_UCOLOR_G1, - TXT_UCOLOR_G2, - TXT_UCOLOR_G3, - TXT_UCOLOR_G4, - TXT_UCOLOR_G5, - TXT_UCOLOR_G6, - TXT_UCOLOR_G7, - TXT_UCOLOR_G8, - TXT_UCOLOR_G9, - TXT_UCOLOR_G10, - TXT_UCOLOR_G11, - TXT_UCOLOR_G12, - TXT_UCOLOR_G13, - TXT_UCOLOR_GWHITE, - - // ƒ†[ƒU[ƒJƒ‰[ƒTƒ“ƒvƒ‹—̈æ - TXT_UCOLOR_GRAY=32, - TXT_UCOLOR_BROWN, - TXT_UCOLOR_RED, - TXT_UCOLOR_PINK, - TXT_UCOLOR_ORANGE, - TXT_UCOLOR_YELLOW, - TXT_UCOLOR_LIMEGREEN, - TXT_UCOLOR_GREEN, - TXT_UCOLOR_DARKGREEN, - TXT_UCOLOR_SEAGREEN, - TXT_UCOLOR_TURQUOISE, - TXT_UCOLOR_BLUE, - TXT_UCOLOR_DARKBLUE, - TXT_UCOLOR_PURPLE, - TXT_UCOLOR_VIOLET, - TXT_UCOLOR_MAGENTA, - - // ƒpƒŒƒbƒg TXT_CPALETTE_4BPP - TXT_COLOR_4BPP_NULL=48, - TXT_COLOR_4BPP_BG=49, - TXT_COLOR_4BPP_TEXT=49 -}; - -// ŽžŒv•\Ž¦êŠ -#define RTC_DATE_TOP_X ( 9 * 8 ) -#define RTC_DATE_TOP_Y ( 10 * 8 ) -#define RTC_TIME_TOP_X ( 12 * 8 ) -#define RTC_TIME_TOP_Y ( 12 * 8 ) - - -// ƒL[ƒf[ƒ^ƒ[ƒN -typedef struct { - u16 trg; // ƒgƒŠƒK“ü—Í - u16 cont; // ƒxƒ^ “ü—Í -}KeyWork; - - -// ƒ^ƒbƒ`ƒpƒlƒ‹ƒ[ƒN -typedef struct { - int detached; // ¡‰ñ‚̃f[ƒ^“ü—͂Ń^ƒbƒ`‚ª—£‚ꂽ‚±‚Æ‚ðŽ¦‚·B - TPData disp; // ¡‰ñ‚Ì“ü—Í’liLCDÀ•Wj - TPData raw; // ¡‰ñ‚Ì“ü—Í’liTP À•Wj - TPData last; // ‘O‰ñ‚Ì“ü—Í’liLCDÀ•Wj -}TpWork; - - -// ƒƒjƒ…[—v‘fÀ•W -typedef struct MenuPos { - BOOL enable; - int x; - int y; -}MenuPos; - - -// ƒƒjƒ…[\¬ƒpƒ‰ƒ[ƒ^\‘¢‘Ì -typedef struct MenuParam { - int num; - int normal_color; - int select_color; - int disable_color; - MenuPos *pos; - const u16 **str_elem; -}MenuParam; - - -// RTCƒf[ƒ^•\ަˆÊ’uƒ[ƒN -typedef struct RTCDrawProperty { - BOOL isTopLCD; - int date_x; - int date_y; - int time_x; - int time_y; - int vcount; - RTCDate date; - RTCTime time; - RTCDate date_old; - RTCTime time_old; -}RTCDrawProperty; - -typedef BOOL (*SelectSomethingFunc)( u16 *csr, TPData *tgt ); - -// global variables-------------------------------------------------- -extern TpWork tpd; // ƒ^ƒbƒ`ƒpƒlƒ‹ƒf[ƒ^ -extern KeyWork pad; // ƒL[ƒpƒbƒh“ü—̓f[ƒ^ -extern const u8 *const g_strWeek[ 7 ]; // —j“ú•¶Žš—ñ -extern RTCDrawProperty g_rtcDraw; - -extern NNSFndAllocator g_allocator; // ƒƒ‚ƒŠƒAƒƒP[ƒ^ -extern NNSG2dFont gFont; // ƒtƒHƒ“ƒg -extern NNSG2dCharCanvas gCanvas; // CharCanvas -extern NNSG2dTextCanvas gTextCanvas; // TextCanvas -extern NNSG2dCharCanvas gCanvasSub; // CharCanvas -extern NNSG2dTextCanvas gTextCanvasSub; // TextCanvas - -// function------------------------------------------------------------- -void InitAllocator( void ); -void *Alloc( u32 size ); -void Free( void *pBuffer ); -void InitBG( void ); -int GetPrintfWidth( const NNSG2dTextCanvas *pCanvas, const char *fmt, ... ); -void PutStringUTF16 ( int x, int y, int color, const u16 *strUTF16 ); -void PutStringUTF16Sub( int x, int y, int color, const u16 *strUTF16 ); -void PrintfSJIS ( int x, int y, int color, const char *fmt, ... ); -void PrintfSJISSub( int x, int y, int color, const char *fmt, ... ); -void ReadKeyPad( void ); -void ReadTP( void ); -void DrawMenu( u16 nowCsr, const MenuParam *pMenu ); -BOOL SelectSomethingByTP( u16 *nowCsr, SelectSomethingFunc func[], int funcnum ); -BOOL SelectMenuByTP( u16 *nowCsr, const MenuParam *pMenu ); -BOOL WithinRangeTP( int top_x, int top_y, int bottom_x, int bottom_y, TPData *tgt ); -void SetBannerIconOBJ( GXOamAttr *pDstOAM, BannerFileV1 *bannerp ); -BOOL GetRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ); -void DrawRTCData( RTCDrawProperty *pRTCDraw ); -void GetAndDrawRTCData( RTCDrawProperty *pRTCDraw, BOOL forceGetFlag ); -void ChangeUserColor( u8 col ); - -#ifdef __cplusplus -} -#endif - -#endif // __MISC_H__ diff --git a/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h b/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h deleted file mode 100644 index 8961cca5..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/myIoreg_SCFG.h +++ /dev/null @@ -1,533 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: myIoreg_SCFG.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - *---------------------------------------------------------------------------*/ - -// ARM9‘¤‚Ŏ󂯎æ‚Á‚½ARM7‚ÌSCFG‚ðŽQÆ‚·‚邽‚ß‚É -// ARM9‘¤‚Ȃ̂ÉARM7ˆË‘¶‚̃IƒtƒZƒbƒgî•ñ‚ª•K—v... - - -// ƒ}ƒNƒÄ’è‹`‚ð–h‚®‚½‚߂̋ê“÷‚Ìô - -#ifndef __MY_IOREG_SCFG_H__ -#define __MY_IOREG_SCFG_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Definition of Register offsets, addresses and variables. - */ - - -/* ROM */ - -#define DISP_REG_ROM_OFFSET 0x4000 -#define DISP_REG_ROM_ADDR (HW_REG_BASE + DISP_REG_ROM_OFFSET) - -/* A9ROM */ - -#define DISP_REG_A9ROM_OFFSET 0x4000 -#define DISP_REG_A9ROM_ADDR (HW_REG_BASE + DISP_REG_A9ROM_OFFSET) - -/* A7ROM */ - -#define DISP_REG_A7ROM_OFFSET 0x4001 -#define DISP_REG_A7ROM_ADDR (HW_REG_BASE + DISP_REG_A7ROM_OFFSET) - -/* ROMWE */ - -#define DISP_REG_ROMWE_OFFSET 0x4002 -#define DISP_REG_ROMWE_ADDR (HW_REG_BASE + DISP_REG_ROMWE_OFFSET) - -/* CLK */ - -#define DISP_REG_CLK_OFFSET 0x4004 -#define DISP_REG_CLK_ADDR (HW_REG_BASE + DISP_REG_CLK_OFFSET) - -/* JTAG */ - -#define DISP_REG_JTAG_OFFSET 0x4006 -#define DISP_REG_JTAG_ADDR (HW_REG_BASE + DISP_REG_JTAG_OFFSET) - -/* EXT */ - -#define DISP_REG_EXT_OFFSET 0x4008 -#define DISP_REG_EXT_ADDR (HW_REG_BASE + DISP_REG_EXT_OFFSET) - -/* MC */ - -#define DISP_REG_MC_OFFSET 0x4010 -#define DISP_REG_MC_ADDR (HW_REG_BASE + DISP_REG_MC_OFFSET) - -/* MCCHAT */ - -#define DISP_REG_MCCHAT_OFFSET 0x4012 -#define DISP_REG_MCCHAT_ADDR (HW_REG_BASE + DISP_REG_MCCHAT_OFFSET) - -/* MC2 */ - -#define DISP_REG_MC2_OFFSET 0x4014 -#define DISP_REG_MC2_ADDR (HW_REG_BASE + DISP_REG_MC2_OFFSET) - - -/* WL */ - -#define DISP_REG_WL_OFFSET 0x4020 -#define DISP_REG_WL_ADDR (HW_REG_BASE + DISP_REG_WL_OFFSET) - -/* OP */ - -#define DISP_REG_OP_OFFSET 0x4024 -#define DISP_REG_OP_ADDR (HW_REG_BASE + DISP_REG_OP_OFFSET) - - -/* - * Definitions of Register fields - */ - - -/* ROM */ - -#define DISP_REG_SCFG_ROM_ROMWE_SHIFT 16 -#define DISP_REG_SCFG_ROM_ROMWE_SIZE 1 -#define DISP_REG_SCFG_ROM_ROMWE_MASK 0x00010000 - -#define DISP_REG_SCFG_ROM_ARM7FUSE_SHIFT 10 -#define DISP_REG_SCFG_ROM_ARM7FUSE_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM7FUSE_MASK 0x00000400 - -#define DISP_REG_SCFG_ROM_ARM7RSEL_SHIFT 9 -#define DISP_REG_SCFG_ROM_ARM7RSEL_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM7RSEL_MASK 0x00000200 - -#define DISP_REG_SCFG_ROM_ARM7SEL_SHIFT 8 -#define DISP_REG_SCFG_ROM_ARM7SEL_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM7SEL_MASK 0x00000100 - -#define DISP_REG_SCFG_ROM_ARM9RSEL_SHIFT 1 -#define DISP_REG_SCFG_ROM_ARM9RSEL_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM9RSEL_MASK 0x00000002 - -#define DISP_REG_SCFG_ROM_ARM9SEL_SHIFT 0 -#define DISP_REG_SCFG_ROM_ARM9SEL_SIZE 1 -#define DISP_REG_SCFG_ROM_ARM9SEL_MASK 0x00000001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_ROM_FIELD( romwe, arm7fuse, arm7rsel, arm7sel, arm9rsel, arm9sel ) \ - (u32)( \ - ((u32)(romwe) << DISP_REG_SCFG_ROM_ROMWE_SHIFT) | \ - ((u32)(arm7fuse) << DISP_REG_SCFG_ROM_ARM7FUSE_SHIFT) | \ - ((u32)(arm7rsel) << DISP_REG_SCFG_ROM_ARM7RSEL_SHIFT) | \ - ((u32)(arm7sel) << DISP_REG_SCFG_ROM_ARM7SEL_SHIFT) | \ - ((u32)(arm9rsel) << DISP_REG_SCFG_ROM_ARM9RSEL_SHIFT) | \ - ((u32)(arm9sel) << DISP_REG_SCFG_ROM_ARM9SEL_SHIFT)) -#endif - - -/* A9ROM */ - -#define DISP_REG_SCFG_A9ROM_RSEL_SHIFT 1 -#define DISP_REG_SCFG_A9ROM_RSEL_SIZE 1 -#define DISP_REG_SCFG_A9ROM_RSEL_MASK 0x02 - -#define DISP_REG_SCFG_A9ROM_SEC_SHIFT 0 -#define DISP_REG_SCFG_A9ROM_SEC_SIZE 1 -#define DISP_REG_SCFG_A9ROM_SEC_MASK 0x01 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_A9ROM_FIELD( rsel, sec ) \ - (u8)( \ - ((u32)(rsel) << DISP_REG_SCFG_A9ROM_RSEL_SHIFT) | \ - ((u32)(sec) << DISP_REG_SCFG_A9ROM_SEC_SHIFT)) -#endif - - -/* A7ROM */ - -#define DISP_REG_SCFG_A7ROM_FUSE_SHIFT 2 -#define DISP_REG_SCFG_A7ROM_FUSE_SIZE 1 -#define DISP_REG_SCFG_A7ROM_FUSE_MASK 0x04 - -#define DISP_REG_SCFG_A7ROM_RSEL_SHIFT 1 -#define DISP_REG_SCFG_A7ROM_RSEL_SIZE 1 -#define DISP_REG_SCFG_A7ROM_RSEL_MASK 0x02 - -#define DISP_REG_SCFG_A7ROM_SEC_SHIFT 0 -#define DISP_REG_SCFG_A7ROM_SEC_SIZE 1 -#define DISP_REG_SCFG_A7ROM_SEC_MASK 0x01 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_A7ROM_FIELD( fuse, rsel, sec ) \ - (u8)( \ - ((u32)(fuse) << DISP_REG_SCFG_A7ROM_FUSE_SHIFT) | \ - ((u32)(rsel) << DISP_REG_SCFG_A7ROM_RSEL_SHIFT) | \ - ((u32)(sec) << DISP_REG_SCFG_A7ROM_SEC_SHIFT)) -#endif - - -/* ROMWE */ - -#define DISP_REG_SCFG_ROMWE_WE_SHIFT 0 -#define DISP_REG_SCFG_ROMWE_WE_SIZE 1 -#define DISP_REG_SCFG_ROMWE_WE_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_ROMWE_FIELD( we ) \ - (u16)( \ - ((u32)(we) << DISP_REG_SCFG_ROMWE_WE_SHIFT)) -#endif - - -/* CLK */ - -#define DISP_REG_SCFG_CLK_SNDMCLK_SHIFT 8 -#define DISP_REG_SCFG_CLK_SNDMCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_SNDMCLK_MASK 0x0100 - -#define DISP_REG_SCFG_CLK_WRAMHCLK_SHIFT 7 -#define DISP_REG_SCFG_CLK_WRAMHCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_WRAMHCLK_MASK 0x0080 - -#define DISP_REG_SCFG_CLK_AESHCLK_SHIFT 2 -#define DISP_REG_SCFG_CLK_AESHCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_AESHCLK_MASK 0x0004 - -#define DISP_REG_SCFG_CLK_SD2HCLK_SHIFT 1 -#define DISP_REG_SCFG_CLK_SD2HCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_SD2HCLK_MASK 0x0002 - -#define DISP_REG_SCFG_CLK_SD1HCLK_SHIFT 0 -#define DISP_REG_SCFG_CLK_SD1HCLK_SIZE 1 -#define DISP_REG_SCFG_CLK_SD1HCLK_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_CLK_FIELD( sndmclk, wramhclk, aeshclk, sd2hclk, sd1hclk ) \ - (u16)( \ - ((u32)(sndmclk) << DISP_REG_SCFG_CLK_SNDMCLK_SHIFT) | \ - ((u32)(wramhclk) << DISP_REG_SCFG_CLK_WRAMHCLK_SHIFT) | \ - ((u32)(aeshclk) << DISP_REG_SCFG_CLK_AESHCLK_SHIFT) | \ - ((u32)(sd2hclk) << DISP_REG_SCFG_CLK_SD2HCLK_SHIFT) | \ - ((u32)(sd1hclk) << DISP_REG_SCFG_CLK_SD1HCLK_SHIFT)) -#endif - - -/* JTAG */ - -#define DISP_REG_SCFG_JTAG_DSPJE_SHIFT 8 -#define DISP_REG_SCFG_JTAG_DSPJE_SIZE 1 -#define DISP_REG_SCFG_JTAG_DSPJE_MASK 0x0100 - -#define DISP_REG_SCFG_JTAG_CPUJE_SHIFT 1 -#define DISP_REG_SCFG_JTAG_CPUJE_SIZE 1 -#define DISP_REG_SCFG_JTAG_CPUJE_MASK 0x0002 - -#define DISP_REG_SCFG_JTAG_ARM7SEL_SHIFT 0 -#define DISP_REG_SCFG_JTAG_ARM7SEL_SIZE 1 -#define DISP_REG_SCFG_JTAG_ARM7SEL_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_JTAG_FIELD( dspje, cpuje, arm7sel ) \ - (u16)( \ - ((u32)(dspje) << DISP_REG_SCFG_JTAG_DSPJE_SHIFT) | \ - ((u32)(cpuje) << DISP_REG_SCFG_JTAG_CPUJE_SHIFT) | \ - ((u32)(arm7sel) << DISP_REG_SCFG_JTAG_ARM7SEL_SHIFT)) -#endif - - -/* EXT */ - -#define DISP_REG_SCFG_EXT_CFG_SHIFT 31 -#define DISP_REG_SCFG_EXT_CFG_SIZE 1 -#define DISP_REG_SCFG_EXT_CFG_MASK 0x80000000 - -#define DISP_REG_SCFG_EXT_PUENABLE_SHIFT 28 -#define DISP_REG_SCFG_EXT_PUENABLE_SIZE 1 -#define DISP_REG_SCFG_EXT_PUENABLE_MASK 0x10000000 - -#define DISP_REG_SCFG_EXT_SD20_SHIFT 28 -#define DISP_REG_SCFG_EXT_SD20_SIZE 1 -#define DISP_REG_SCFG_EXT_SD20_MASK 0x10000000 - -#define DISP_REG_SCFG_EXT_NEWB_ACCESS_E_SHIFT 16 -#define DISP_REG_SCFG_EXT_NEWB_ACCESS_E_SIZE 10 -#define DISP_REG_SCFG_EXT_NEWB_ACCESS_E_MASK 0x03ff0000 - -#define DISP_REG_SCFG_EXT_WRAM_SHIFT 25 -#define DISP_REG_SCFG_EXT_WRAM_SIZE 1 -#define DISP_REG_SCFG_EXT_WRAM_MASK 0x02000000 - -#define DISP_REG_SCFG_EXT_MC_B_SHIFT 24 -#define DISP_REG_SCFG_EXT_MC_B_SIZE 1 -#define DISP_REG_SCFG_EXT_MC_B_MASK 0x01000000 - -#define DISP_REG_SCFG_EXT_GPIO_SHIFT 23 -#define DISP_REG_SCFG_EXT_GPIO_SIZE 1 -#define DISP_REG_SCFG_EXT_GPIO_MASK 0x00800000 - -#define DISP_REG_SCFG_EXT_I2C_SHIFT 22 -#define DISP_REG_SCFG_EXT_I2C_SIZE 1 -#define DISP_REG_SCFG_EXT_I2C_MASK 0x00400000 - -#define DISP_REG_SCFG_EXT_I2S_SHIFT 21 -#define DISP_REG_SCFG_EXT_I2S_SIZE 1 -#define DISP_REG_SCFG_EXT_I2S_MASK 0x00200000 - -#define DISP_REG_SCFG_EXT_MIC_SHIFT 20 -#define DISP_REG_SCFG_EXT_MIC_SIZE 1 -#define DISP_REG_SCFG_EXT_MIC_MASK 0x00100000 - -#define DISP_REG_SCFG_EXT_SD2_SHIFT 19 -#define DISP_REG_SCFG_EXT_SD2_SIZE 1 -#define DISP_REG_SCFG_EXT_SD2_MASK 0x00080000 - -#define DISP_REG_SCFG_EXT_SD1_SHIFT 18 -#define DISP_REG_SCFG_EXT_SD1_SIZE 1 -#define DISP_REG_SCFG_EXT_SD1_MASK 0x00040000 - -#define DISP_REG_SCFG_EXT_AES_SHIFT 17 -#define DISP_REG_SCFG_EXT_AES_SIZE 1 -#define DISP_REG_SCFG_EXT_AES_MASK 0x00020000 - -#define DISP_REG_SCFG_EXT_DMAC_SHIFT 16 -#define DISP_REG_SCFG_EXT_DMAC_SIZE 1 -#define DISP_REG_SCFG_EXT_DMAC_MASK 0x00010000 - -#define DISP_REG_SCFG_EXT_NITROB_EX_E_SHIFT 8 -#define DISP_REG_SCFG_EXT_NITROB_EX_E_SIZE 8 -#define DISP_REG_SCFG_EXT_NITROB_EX_E_MASK 0x0000ff00 - -#define DISP_REG_SCFG_EXT_PSRAM_SHIFT 14 -#define DISP_REG_SCFG_EXT_PSRAM_SIZE 2 -#define DISP_REG_SCFG_EXT_PSRAM_MASK 0x0000c000 - -#define DISP_REG_SCFG_EXT_VRAM_SHIFT 13 -#define DISP_REG_SCFG_EXT_VRAM_SIZE 1 -#define DISP_REG_SCFG_EXT_VRAM_MASK 0x00002000 - -#define DISP_REG_SCFG_EXT_LCDC_SHIFT 12 -#define DISP_REG_SCFG_EXT_LCDC_SIZE 1 -#define DISP_REG_SCFG_EXT_LCDC_MASK 0x00001000 - -#define DISP_REG_SCFG_EXT_SIO_SHIFT 11 -#define DISP_REG_SCFG_EXT_SIO_SIZE 1 -#define DISP_REG_SCFG_EXT_SIO_MASK 0x00000800 - -#define DISP_REG_SCFG_EXT_DSEL_SHIFT 10 -#define DISP_REG_SCFG_EXT_DSEL_SIZE 1 -#define DISP_REG_SCFG_EXT_DSEL_MASK 0x00000400 - -#define DISP_REG_SCFG_EXT_SPI_SHIFT 9 -#define DISP_REG_SCFG_EXT_SPI_SIZE 1 -#define DISP_REG_SCFG_EXT_SPI_MASK 0x00000200 - -#define DISP_REG_SCFG_EXT_INTC_SHIFT 8 -#define DISP_REG_SCFG_EXT_INTC_SIZE 1 -#define DISP_REG_SCFG_EXT_INTC_MASK 0x00000100 - -#define DISP_REG_SCFG_EXT_NITROB_MOD_E_SHIFT 0 -#define DISP_REG_SCFG_EXT_NITROB_MOD_E_SIZE 8 -#define DISP_REG_SCFG_EXT_NITROB_MOD_E_MASK 0x000000ff - -#define DISP_REG_SCFG_EXT_MC_SHIFT 7 -#define DISP_REG_SCFG_EXT_MC_SIZE 1 -#define DISP_REG_SCFG_EXT_MC_MASK 0x00000080 - -#define DISP_REG_SCFG_EXT_SND_SHIFT 2 -#define DISP_REG_SCFG_EXT_SND_SIZE 1 -#define DISP_REG_SCFG_EXT_SND_MASK 0x00000004 - -#define DISP_REG_SCFG_EXT_SDMA_SHIFT 1 -#define DISP_REG_SCFG_EXT_SDMA_SIZE 1 -#define DISP_REG_SCFG_EXT_SDMA_MASK 0x00000002 - -#define DISP_REG_SCFG_EXT_DMA_SHIFT 0 -#define DISP_REG_SCFG_EXT_DMA_SIZE 1 -#define DISP_REG_SCFG_EXT_DMA_MASK 0x00000001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_EXT_FIELD( cfg, puenable, sd20, newb_access_e, wram, mc_b, gpio, i2c, i2s, mic, sd2, sd1, aes, dmac, nitrob_ex_e, psram, vram, lcdc, sio, dsel, spi, intc, nitrob_mod_e, mc, snd, sdma, dma ) \ - (u32)( \ - ((u32)(cfg) << DISP_REG_SCFG_EXT_CFG_SHIFT) | \ - ((u32)(puenable) << DISP_REG_SCFG_EXT_PUENABLE_SHIFT) | \ - ((u32)(sd20) << DISP_REG_SCFG_EXT_SD20_SHIFT) | \ - ((u32)(newb_access_e) << DISP_REG_SCFG_EXT_NEWB_ACCESS_E_SHIFT) | \ - ((u32)(wram) << DISP_REG_SCFG_EXT_WRAM_SHIFT) | \ - ((u32)(mc_b) << DISP_REG_SCFG_EXT_MC_B_SHIFT) | \ - ((u32)(gpio) << DISP_REG_SCFG_EXT_GPIO_SHIFT) | \ - ((u32)(i2c) << DISP_REG_SCFG_EXT_I2C_SHIFT) | \ - ((u32)(i2s) << DISP_REG_SCFG_EXT_I2S_SHIFT) | \ - ((u32)(mic) << DISP_REG_SCFG_EXT_MIC_SHIFT) | \ - ((u32)(sd2) << DISP_REG_SCFG_EXT_SD2_SHIFT) | \ - ((u32)(sd1) << DISP_REG_SCFG_EXT_SD1_SHIFT) | \ - ((u32)(aes) << DISP_REG_SCFG_EXT_AES_SHIFT) | \ - ((u32)(dmac) << DISP_REG_SCFG_EXT_DMAC_SHIFT) | \ - ((u32)(nitrob_ex_e) << DISP_REG_SCFG_EXT_NITROB_EX_E_SHIFT) | \ - ((u32)(psram) << DISP_REG_SCFG_EXT_PSRAM_SHIFT) | \ - ((u32)(vram) << DISP_REG_SCFG_EXT_VRAM_SHIFT) | \ - ((u32)(lcdc) << DISP_REG_SCFG_EXT_LCDC_SHIFT) | \ - ((u32)(sio) << DISP_REG_SCFG_EXT_SIO_SHIFT) | \ - ((u32)(dsel) << DISP_REG_SCFG_EXT_DSEL_SHIFT) | \ - ((u32)(spi) << DISP_REG_SCFG_EXT_SPI_SHIFT) | \ - ((u32)(intc) << DISP_REG_SCFG_EXT_INTC_SHIFT) | \ - ((u32)(nitrob_mod_e) << DISP_REG_SCFG_EXT_NITROB_MOD_E_SHIFT) | \ - ((u32)(mc) << DISP_REG_SCFG_EXT_MC_SHIFT) | \ - ((u32)(snd) << DISP_REG_SCFG_EXT_SND_SHIFT) | \ - ((u32)(sdma) << DISP_REG_SCFG_EXT_SDMA_SHIFT) | \ - ((u32)(dma) << DISP_REG_SCFG_EXT_DMA_SHIFT)) -#endif - -/* MC1 */ - -#define DISP_REG_MI_MC1_CC_SHIFT 16 -#define DISP_REG_MI_MC1_CC_SIZE 16 -#define DISP_REG_MI_MC1_CC_MASK 0xffff0000 - -#define DISP_REG_MI_MC1_SWP_SHIFT 15 -#define DISP_REG_MI_MC1_SWP_SIZE 1 -#define DISP_REG_MI_MC1_SWP_MASK 0x00008000 - -#define DISP_REG_MI_MC1_SL2_STATUS_SHIFT 4 -#define DISP_REG_MI_MC1_SL2_STATUS_SIZE 4 -#define DISP_REG_MI_MC1_SL2_STATUS_MASK 0x000000f0 - -#define DISP_REG_MI_MC1_SL2_M1_SHIFT 7 -#define DISP_REG_MI_MC1_SL2_M1_SIZE 1 -#define DISP_REG_MI_MC1_SL2_M1_MASK 0x00000080 - -#define DISP_REG_MI_MC1_SL2_M0_SHIFT 6 -#define DISP_REG_MI_MC1_SL2_M0_SIZE 1 -#define DISP_REG_MI_MC1_SL2_M0_MASK 0x00000040 - -#define DISP_REG_MI_MC1_SL2_CDET_SHIFT 4 -#define DISP_REG_MI_MC1_SL2_CDET_SIZE 1 -#define DISP_REG_MI_MC1_SL2_CDET_MASK 0x00000010 - -#define DISP_REG_MI_MC1_SL1_STATUS_SHIFT 0 -#define DISP_REG_MI_MC1_SL1_STATUS_SIZE 4 -#define DISP_REG_MI_MC1_SL1_STATUS_MASK 0x0000000f - -#define DISP_REG_MI_MC1_SL1_M1_SHIFT 3 -#define DISP_REG_MI_MC1_SL1_M1_SIZE 1 -#define DISP_REG_MI_MC1_SL1_M1_MASK 0x00000008 - -#define DISP_REG_MI_MC1_SL1_M0_SHIFT 2 -#define DISP_REG_MI_MC1_SL1_M0_SIZE 1 -#define DISP_REG_MI_MC1_SL1_M0_MASK 0x00000004 - -#define DISP_REG_MI_MC1_SL1_CDET_SHIFT 0 -#define DISP_REG_MI_MC1_SL1_CDET_SIZE 1 -#define DISP_REG_MI_MC1_SL1_CDET_MASK 0x00000001 - - -/* MC */ - -#define DISP_REG_MI_MC_SWP_SHIFT 15 -#define DISP_REG_MI_MC_SWP_SIZE 1 -#define DISP_REG_MI_MC_SWP_MASK 0x8000 - -#define DISP_REG_MI_MC_SL2_MODE_SHIFT 6 -#define DISP_REG_MI_MC_SL2_MODE_SIZE 2 -#define DISP_REG_MI_MC_SL2_MODE_MASK 0x00c0 - -#define DISP_REG_MI_MC_SL2_CDET_SHIFT 4 -#define DISP_REG_MI_MC_SL2_CDET_SIZE 1 -#define DISP_REG_MI_MC_SL2_CDET_MASK 0x0010 - -#define DISP_REG_MI_MC_SL1_MODE_SHIFT 2 -#define DISP_REG_MI_MC_SL1_MODE_SIZE 2 -#define DISP_REG_MI_MC_SL1_MODE_MASK 0x000c - -#define DISP_REG_MI_MC_SL1_CDET_SHIFT 0 -#define DISP_REG_MI_MC_SL1_CDET_SIZE 1 -#define DISP_REG_MI_MC_SL1_CDET_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_MI_MC_FIELD( swp, sl2_mode, sl2_cdet, sl1_mode, sl1_cdet ) \ - (u16)( \ - ((u32)(swp) << DISP_REG_MI_MC_SWP_SHIFT) | \ - ((u32)(sl2_mode) << DISP_REG_MI_MC_SL2_MODE_SHIFT) | \ - ((u32)(sl2_cdet) << DISP_REG_MI_MC_SL2_CDET_SHIFT) | \ - ((u32)(sl1_mode) << DISP_REG_MI_MC_SL1_MODE_SHIFT) | \ - ((u32)(sl1_cdet) << DISP_REG_MI_MC_SL1_CDET_SHIFT)) -#endif - -/* MCCHAT */ - -#define DISP_REG_MI_MCCHAT_CC_SHIFT 0 -#define DISP_REG_MI_MCCHAT_CC_SIZE 16 -#define DISP_REG_MI_MCCHAT_CC_MASK 0xffff - -#ifndef SDK_ASM -#define DISP_REG_MI_MCCHAT_FIELD( cc ) \ - (u16)( \ - ((u32)(cc) << DISP_REG_MI_MCCHAT_CC_SHIFT)) -#endif - - -/* MC2 */ - -#define DISP_REG_MI_MC2_CA_SHIFT 0 -#define DISP_REG_MI_MC2_CA_SIZE 16 -#define DISP_REG_MI_MC2_CA_MASK 0xffff - -#ifndef SDK_ASM -#define DISP_REG_MI_MC2_FIELD( ca ) \ - (u16)( \ - ((u32)(ca) << DISP_REG_MI_MC2_CA_SHIFT)) -#endif - - -/* WL */ - -#define DISP_REG_SCFG_WL_OFFB_SHIFT 0 -#define DISP_REG_SCFG_WL_OFFB_SIZE 1 -#define DISP_REG_SCFG_WL_OFFB_MASK 0x0001 - -#ifndef SDK_ASM -#define DISP_REG_SCFG_WL_FIELD( offb ) \ - (u16)( \ - ((u32)(offb) << DISP_REG_SCFG_WL_OFFB_SHIFT)) -#endif - - -/* OP */ - -#define DISP_REG_SCFG_OP_OP1_SHIFT 1 -#define DISP_REG_SCFG_OP_OP1_SIZE 1 -#define DISP_REG_SCFG_OP_OP1_MASK 0x0002 - -#define DISP_REG_SCFG_OP_OP0_SHIFT 0 -#define DISP_REG_SCFG_OP_OP0_SIZE 1 -#define DISP_REG_SCFG_OP_OP0_MASK 0x0001 - -#define DISP_REG_SCFG_OP_OPT_SHIFT 0 -#define DISP_REG_SCFG_OP_OPT_SIZE 2 -#define DISP_REG_SCFG_OP_OPT_MASK 0x0003 - -#ifndef SDK_ASM - -#define DISP_REG_SCFG_OP_FIELD( op1, op0, opt ) \ - (u16)( \ - ((u32)(op1) << DISP_REG_SCFG_OP_OP1_SHIFT) | \ - ((u32)(op0) << DISP_REG_SCFG_OP_OP0_SHIFT) | \ - ((u32)(opt) << DISP_REG_SCFG_OP_OPT_SHIFT)) -#endif - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/* TWL_IOREG_SCFG_H_ */ -#endif diff --git a/build/tests/DisplaySystemInformation/ARM9/src/strResource.c b/build/tests/DisplaySystemInformation/ARM9/src/strResource.c deleted file mode 100644 index 9e70045d..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/strResource.c +++ /dev/null @@ -1,726 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: strResource.c - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "drawFunc.h" - - -// VERSION_MENU_SIZEAFONTMENU_SIZE‚¾‚¯ƒRƒ“ƒeƒ“ƒc”‚ɉž‚¶‚ĉ•ςȂ̂Åconst‚ł͂Ȃ¢ - -#ifdef VERSION_VIEWER - -int s_numMenu[] = { - VERSIONMENU_SIZE, - ROOTMENU_SIZE -}; - -const char *s_strRootMenu[] = { - "ƒInstalled Content Version„" -}; - - -const char **s_strMetaMenu[] = { - NULL, - s_strRootMenu -}; - -#else - -int s_numMenu[] = { - OWNERMENU_SIZE, - PARENTALMENU_SIZE, - SECURE_USER_MENU_SIZE, - OTHERMENU_SIZE, - NORMAL_HW_MENU_SIZE, - SECURE_HW_MENU_SIZE, - SCFG_ARM7_MENU_SIZE, - SCFG_ARM9_MENU_SIZE, - SYSMENU_MENU_SIZE, - FONTMENU_SIZE, - WLMENU_SIZE, - WHITEMENU_SIZE, - VERSIONMENU_SIZE, - 0, - 0, - 0, - ROOTMENU_SIZE -}; - -const char *s_strARM7RegisterName[] = { - "ROM", - "CLK", - "JTAG", - "EXP", - "MC1", - "MC2", - "DSWL", - "OPT", -}; - -const char *s_strARM9RegisterName[] = { - "ROM", - "CLK", - "RST", - "EXP", -}; - -const char *s_strSCFGViewMode[] = { - "", - "" -}; - -const char *s_strRootMenu[] = { - "ƒOwner„", - "ƒParental control„", - "ƒSecure User Info„", - "ƒOther Info„", - "ƒNormal Hardware Info„", - "ƒSecure Hardware Info„", - "ƒSCFG Info (ARM7 side)„", - "ƒSCFG Info (ARM9 side)„", - "ƒSystemMenu Version„", - "ƒShared Font„", - "ƒWireless Firmware„", - "ƒWhitelist„", - "ƒInstalled Content Version„", - "Reset HW Setting to Default", - "break HW Setting", - "Reset RTC Data" -}; - -const char *s_strOwnerMenu[] = { - "Language", - "Favorite color", - "Birthday", - "Country", - "Nickname", - "Comment" -}; - -const char *s_strParentalMenu[] = { - "Parental control", - "Picto Chat", - "ds Download", - "browser", - "Wii Point", - "Photo Exchange", - "UGC", - "Organization", - "Age", - "Password", - "Quastion id", - "Answer" -}; - -const char *s_strSecureUserMenu[] = { - "Finished Initial Setting(Setting)", - "Finished Initial Setting(Launcher)", - "Finished Broken Setting Sequence", - "Installed Softbox Count", - "Free Softbox Count", - "Last Boot Soft Index", - "Last Boot Soft Platform", - "Last Boot Soft ID" -}; - -const char *s_strOtherMenu[] = { - "Agree EULA", - "EULA Version", - "Wireless", - "RTC Offset", - "TP Calib raw x1", - "TP Calib raw y1", - "TP Calib dx1", - "TP Calib dy1", - "TP Calib raw x2", - "TP Calib raw y2", - "TP Calib dx2", - "TP Calib dy2", - "TP Calib RSV" -}; - -const char *s_strNormalHWMenu[] = { - "RTC Adjustment", - "Unique ID" -}; - -const char *s_strSecureHWMenu[] = { - "Force Disable Wireless", - "Region", - "Serial No", - "Language Bitmap", - "Fuse Data", - "Launcher TitleID Lo" -}; - -const char *s_strSCFGArm9Menu[] = { - "ARM9 SecureROM", - "Rom Status", - - "CPU Speed", - "DSP Clock", - "Camera Clock", - "WRAM Clock", - "Camera CKI", - - "DSP Reset Flag", - - "Fixed DMA", - "Fixed Geometry", - "Fixed Renderer", - "Fixed 2D Engine", - "Fixed Divider", - "Fixed Card I/F", - "Expanded VRAM", - "Expanded LCDC", - "Expanded INTC", - "PSRAM Boundary", - "New DMA Access", - "Camera Access", - "DSP Access", - "MemoryCard I/F", - "WRAM Access", - "CFG Block Access", - "All SCFG Check", - "SCFG Check Err7", - "SCFG Check Err9" -}; - -const char *s_strSCFGArm7Menu[] = { - - // rom§Œä - "ARM9 SecureROM", - "ARM9 ROM Type", - "ARM7 SecureROM", - "ARM7 ROM Type", - "ARM7 FuseRom", - "Write Rom Area", - - // V‹KƒuƒƒbƒNƒNƒƒbƒN - "SD1 I/F Clock", - "SD2 I/F Clock", - "AES Clock", - "WRAM Clock", - "SND Clock", - - // JTAG - "Chain ARM7 to CPU JTAG", - "CPU JTAG", - "DSP JTAG", - - // Šg’£‹@”\ - "Fixed A7-DMAC1", - "Fixed Sound DMA", - "Fixed Sound", - "Fixed Memory Card", - "Expanded A7-INTC", - "Expanded SPI", - "Expanded Sound DMA", - "Expanded SIO", - "Expanded LCDC", - "Expanded VRAM", - "PSRAM Boundary", - "A7-DMAC2 Block", - "AES Block", - "SD1 I/F Block", - "SD2 I/F Block", - "Mic Block", - "I2S I/F Block", - "I2C I/F Block", - "GPIO Block", - "MemoryCard I/F", - "Shared WRAM", - "PU Resistance", - "ALL SCFG Block", - - // ƒƒ‚ƒŠƒJ[ƒh I/F - "MC Slot1 DET", - "MC Slot1 Mode", - "MC Slot2 DET", - "MC Slot2 Mode", - "Swap MC1 MC2", - "Chatter. Count", - "MC Counter Data", - - // ‹Œ–³ü - "Old Wireless", - - // ƒIƒvƒVƒ‡ƒ“’[Žq“Ç‚Ýo‚µ - "Option Form", - "Option App for" -}; - -const char *s_strSystemMenu[] = { - "Timestamp", - "Version (numeric)", - "Version (string)", - "EULA URL", - "NUP Hostname", - - ".twl-nup-cert.der" , - ".twl-nup-prvkey.der", - ".twl-shop-cert.der", - ".twl-shop-prvkey.der", - "NintendoCA-G2.der" -}; - -const char *s_strFontMenu[] = { - "Timestamp", -}; - -const char *s_strWLMenu[] = { - "Version", - "Num of FW", - "FW1 type", - "FW1 version", - "FW2 type", - "FW2 version" -}; - -const char *s_strWhiteMenu[] = { - "Num of Entry", - "Tmd Hash" -}; - -const char **s_strMetaMenu[] = { - s_strOwnerMenu, - s_strParentalMenu, - s_strSecureUserMenu, - s_strOtherMenu, - s_strNormalHWMenu, - s_strSecureHWMenu, - s_strSCFGArm7Menu, - s_strSCFGArm9Menu, - s_strSystemMenu, - s_strFontMenu, - s_strWLMenu, - s_strWhiteMenu, - NULL, - NULL, - NULL, - NULL, - s_strRootMenu -}; - -char *s_strAccess[] = { - "Inaccessible", - "Accessible" -}; - -char *s_strJoint[] = { - "Jointed", - "DisJointed" -}; - -char *s_strSupply[] = { - "STOPPED", - "SUPPLIED" -}; - -char *s_strPSRAM[] = { - "4MB", - "16MB", - "32MB" -}; - -char *s_strRomMode[] = { - "TWL 64KB ROM", - "NITRO 8KB ROM" - -}; - -char *s_strCpuSpeed[] = { - "67.03 MHz", - "134.06 MHz" -}; - -char *s_strRomForm[] = { - "Included ROM", - "Downloaded PROM" -}; - -char *s_strRomApp[] = { - "Mass Product", - "Development 1", - "Development 2", - "PROM Download" -}; - -char *s_strWLFWType[] = { - "2in1 module 1.1", - "2in1 module 2.0", - "One Chip (M&M)" -}; - -char *s_strMCMode[] = { - "00", - "01", - "10", - "11" -}; - -char *s_strEnable[] = { - "DISABLED", - "ENABLED" -}; - -char *s_strResult[] = { - "Failed.", - "Succeeded.", - "" -}; - - - -char *s_strSysMenuKey[] = { - "Incorrect", - "correct: dev", - "correct: prod" -}; - -char *s_strBool[] = { - "FALSE", - "TRUE" -}; - - -char *s_strRatingOrg[] = { - "CERO", - "ESRB", - "BBFC", - "USK", - "PEGI general", - "PEGI Finland", - "PEGI Portugal", - "PEGI and BBFC Great Briten", - "OFLC", - "GRB" -}; - - char *s_strRegion[] = { - "JAPAN", - "AMERICA", - "EUROPA", - "AUSTRALIA", - "CHINA", - "KOREA", -}; - - char *s_strUserColor[] = { - "GRAY ", - "BROWN ", - "RED ", - "PINK ", - "ORANGE ", - "YELLOW ", - "LIME GREEN", - "GREEN ", - "DARK GREEN", - "SEA GREEN ", - "TURQUOISE ", - "BLUE ", - "DARK BLUE ", - "PURPLE ", - "VIOLET ", - "MAGENTA ", -}; - -char *s_strLanguage[] = { - "JAPANESE", - "ENGLISH", - "FRENCH", - "GERMAN", - "ITALIAN", - "SPANISH", - "CHINESE", - "KOREAN", -}; - -char *s_strCountry[] = { - "UNDEFINED ", // –¢Ý’è - "JAPAN ", // “ú–{ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "Anguilla ", // ƒAƒ“ƒMƒ‰ - "ANTIGUA_AND_BARBUDA", // ƒAƒ“ƒeƒBƒOƒAEƒo[ƒu[ƒ_ - "ARGENTINA ", // ƒAƒ‹ƒ[ƒ“ƒ`ƒ“ - "ARUBA", // ƒAƒ‹ƒo - "BAHAMAS", // ƒoƒnƒ} - "BARBADOS", // ƒoƒ‹ƒoƒhƒX - "BELIZE", // ƒxƒŠ[ƒY - "BOLIVIA", // ƒ{ƒŠƒrƒA - "BRAZIL", // ƒuƒ‰ƒWƒ‹ - "BRITISH_VIRGIN_ISLANDS", // ‰p—̃”ƒ@[ƒWƒ“”“‡ - "CANADA", // ƒJƒiƒ_ - "CAYMAN_ISLANDS", // ƒPƒCƒ}ƒ“”“‡ - "CHILE ", // ƒ`ƒŠ - "COLOMBIA", // ƒRƒƒ“ƒrƒA - "COSTA_RICA", // ƒRƒXƒ^ƒŠƒJ - "DOMINICA", // ƒhƒ~ƒjƒJ‘ - "DOMINICAN_REPUBLIC", // ƒhƒ~ƒjƒJ‹¤˜a‘ - "ECUADOR", // ƒGƒNƒAƒhƒ‹ - "EL_SALVADOR", // ƒGƒ‹ƒTƒ‹ƒoƒhƒ‹ - "FRENCH_GUIANA", // ƒtƒ‰ƒ“ƒX—̃MƒAƒi - "GRENADA", // ƒOƒŒƒiƒ_ - "GUADELOUPE", // ƒOƒAƒhƒ‹[ƒv - "GUATEMALA ", // ƒOƒAƒeƒ}ƒ‰ - "GUYANA", // ƒKƒCƒAƒi - "HAITI", // ƒnƒCƒ` - "HONDURAS", // ƒzƒ“ƒWƒ…ƒ‰ƒX - "JAMAICA", // ƒWƒƒƒ}ƒCƒJ - "MARTINIQUE", // ƒ}ƒ‹ƒeƒBƒj[ƒN - "MEXICO", // ƒƒLƒVƒR - "MONTSERRAT", // ƒ‚ƒ“ƒgƒZƒ‰ƒg - "NETHERLANDS_ANTILLES", // ƒIƒ‰ƒ“ƒ_—̃Aƒ“ƒeƒBƒ‹ - "NICARAGUA", // ƒjƒJƒ‰ƒOƒA - "PANAMA ", // ƒpƒiƒ} - "PARAGUAY", // ƒpƒ‰ƒOƒAƒC - "PERU", // ƒyƒ‹[ - "ST_KITTS_AND_NEVIS", // ƒZƒ“ƒgƒLƒbƒcEƒlƒCƒrƒX - "ST_LUCIA", // ƒZƒ“ƒgƒ‹ƒVƒA - "ST_VINCENT_AND_THE_GRENADINES", // ƒZƒ“ƒgƒrƒ“ƒZƒ“ƒgEƒOƒŒƒiƒfƒB[ƒ“ - "SURINAME", // ƒXƒŠƒiƒ€ - "TRINIDAD_AND_TOBAGO", // ƒgƒŠƒjƒ_[ƒhEƒgƒoƒS - "TURKS_AND_CAICOS_ISLANDS", // ƒ^[ƒNƒXEƒJƒCƒRƒX”“‡ - "UNITED_STATES", // ƒAƒƒŠƒJ - "URUGUAY ", // ƒEƒ‹ƒOƒAƒC - "US_VIRGIN_ISLANDS", // •ė̃o[ƒWƒ“”“‡ - "VENEZUELA", // ƒxƒlƒYƒGƒ‰ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "ALBANIA ", // ƒAƒ‹ƒoƒjƒA - "AUSTRALIA", // ƒI[ƒXƒgƒ‰ƒŠƒA - "AUSTRIA", // ƒI[ƒXƒgƒŠƒA - "BELGIUM", // ƒxƒ‹ƒM[ - "BOSNIA_AND_HERZEGOVINA", // ƒ{ƒXƒjƒAEƒwƒ‹ƒcƒFƒSƒrƒi - "BOTSWANA", // ƒ{ƒcƒƒi - "BULGARIA ", // ƒuƒ‹ƒKƒŠƒA - "CROATIA", // ƒNƒƒAƒ`ƒA - "CYPRUS", // ƒLƒvƒƒX - "CZECH_REPUBLIC", // ƒ`ƒFƒR - "DENMARK", // ƒfƒ“ƒ}[ƒN - "ESTONIA", // ƒGƒXƒgƒjƒA - "FINLAND", // ƒtƒBƒ“ƒ‰ƒ“ƒh - "FRANCE", // ƒtƒ‰ƒ“ƒX - "GERMANY", // ƒhƒCƒc - "GREECE", // ƒMƒŠƒVƒƒ - "HUNGARY ", // ƒnƒ“ƒKƒŠ[ - "ICELAND", // ƒAƒCƒXƒ‰ƒ“ƒh - "IRELAND", // ƒAƒCƒ‹ƒ‰ƒ“ƒh - "ITALY", // ƒCƒ^ƒŠƒA - "LATVIA", // ƒ‰ƒgƒrƒA - "LESOTHO", // ƒŒƒ\ƒg - "LIECHTENSTEIN", // ƒŠƒqƒeƒ“ƒVƒ…ƒ^ƒCƒ“ - "LITHUANIA", // ƒŠƒgƒAƒjƒA - "LUXEMBOURG", // ƒ‹ƒNƒZƒ“ƒuƒ‹ƒN - "MACEDONIA", // ƒ}ƒPƒhƒjƒA - "MALTA ", // ƒ}ƒ‹ƒ^ - "MONTENEGRO", // ƒ‚ƒ“ƒeƒlƒOƒ - "MOZAMBIQUE", // ƒ‚ƒUƒ“ƒr[ƒN - "NAMIBIA", // ƒiƒ~ƒrƒA - "NETHERLANDS", // ƒIƒ‰ƒ“ƒ_ - "NEW_ZEALAND", // ƒjƒ…[ƒW[ƒ‰ƒ“ƒh - "NORWAY", // ƒmƒ‹ƒEƒF[ - "POLAND", // ƒ|[ƒ‰ƒ“ƒh - "PORTUGAL", // ƒ|ƒ‹ƒgƒKƒ‹ - "ROMANIA", // ƒ‹[ƒ}ƒjƒA - "RUSSIA ", // ƒƒVƒA - "SERBIA", // ƒZƒ‹ƒrƒA - "SLOVAKIA", // ƒXƒƒoƒLƒA - "SLOVENIA", // ƒXƒƒxƒjƒA - "SOUTH_AFRICA", // “ìƒAƒtƒŠƒJ - "SPAIN", // ƒXƒyƒCƒ“ - "SWAZILAND", // ƒXƒƒWƒ‰ƒ“ƒh - "SWEDEN", // ƒXƒEƒF[ƒfƒ“ - "SWITZERLAND", // ƒXƒCƒX - "TURKEY", // ƒgƒ‹ƒR - "UNITED_KINGDOM ", // ƒCƒMƒŠƒX - "ZAMBIA", // ƒUƒ“ƒrƒA - "ZIMBABWE", // ƒWƒ“ƒoƒuƒG - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "TAIWAN ", // ‘ä˜p - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "SOUTH_KOREA ", // ŠØ‘ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "HONG_KONG ", // ƒzƒ“ƒRƒ“ - "MACAU", // ƒ}ƒJƒI - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "INDONESIA ", // ƒCƒ“ƒhƒlƒVƒA - "SINGAPORE ", // ƒVƒ“ƒKƒ|[ƒ‹ - "THAILAND ", // ƒ^ƒC - "PHILIPPINES", // ƒtƒBƒŠƒsƒ“ - "MALAYSIA", // ƒ}ƒŒ[ƒVƒA - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "CHINA ", // ’†‘ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UAE ", // ƒAƒ‰ƒuŽñ’·‘˜A–M - "INDIA ", // ƒCƒ“ƒh - "EGYPT ", // ƒGƒWƒvƒg - "OMAN", // ƒIƒ}[ƒ“ - "QATAR", // ƒJƒ^[ƒ‹ - "KUWAIT", // ƒNƒEƒF[ƒg - "SAUDI_ARABIA", // ƒTƒEƒWƒAƒ‰ƒrƒA - "SYRIA", // ƒVƒŠƒA - "BAHRAIN", // ƒo[ƒŒ[ƒ“ - "JORDAN", // ƒˆƒ‹ƒ_ƒ“ - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "UNKNOWN", - "OTHERS ", - "UNKNOWN ", -}; - - -#endif // else VERSION_VIEWER - -char *s_strOK[] = { - "CANCEL", - "OK" -}; - -char *s_strCorrect[] = { - "Incorrect", - "Correct" -}; - -char s_strNA[] = { - "N/A" -}; diff --git a/build/tests/DisplaySystemInformation/ARM9/src/strResource.h b/build/tests/DisplaySystemInformation/ARM9/src/strResource.h deleted file mode 100644 index 97c8928f..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/strResource.h +++ /dev/null @@ -1,293 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: strResource.h - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __DISPLAY_INFO_RESOURCE__ -#define __DISPLAY_INFO_RESOURCE__ - -// ƒƒjƒ…[ID -#ifdef VERSION_VIEWER - #define ROOTMENU_SIZE 1 - #define MENU_ROOT 1 - #define MENU_VERSION 0 - #define MENU_OWNER 10 - #define MENU_PARENTAL 11 - #define MENU_SECURE_USER 12 - #define MENU_OTHER 13 - #define MENU_NORMAL_HW 14 - #define MENU_SECURE_HW 15 - #define MENU_SCFG_ARM7 16 - #define MENU_SCFG_ARM9 17 - #define MENU_SYSMENU 18 - #define MENU_FONT 19 - #define MENU_WL 20 - #define MENU_WHITE 21 - #define MENU_RESET_INFO 22 - #define MENU_BREAK_DATA 23 - #define MENU_RTC_RESET 24 - -#else - #define ROOTMENU_SIZE 16 - - #define MENU_ROOT 16 - #define MENU_OWNER 0 - #define MENU_PARENTAL 1 - #define MENU_SECURE_USER 2 - #define MENU_OTHER 3 - #define MENU_NORMAL_HW 4 - #define MENU_SECURE_HW 5 - #define MENU_SCFG_ARM7 6 - #define MENU_SCFG_ARM9 7 - #define MENU_SYSMENU 8 - #define MENU_FONT 9 - #define MENU_WL 10 - #define MENU_WHITE 11 - #define MENU_VERSION 12 - #define MENU_RESET_INFO 13 - #define MENU_BREAK_DATA 14 - #define MENU_RTC_RESET 15 -#endif // else VERSION_VIEWER - -#define OWNERMENU_SIZE 6 - -#define OWNER_LANGUAGE 0 -#define OWNER_COLOR 1 -#define OWNER_BIRTHDAY 2 -#define OWNER_COUNTRY 3 -#define OWNER_NICKNAME 4 -#define OWNER_COMMENT 5 - -#define PARENTALMENU_SIZE 12 - -#define PARENTAL_FLAG 0 -#define PARENTAL_PICTOCHAT 1 -#define PARENTAL_DOWNLOAD 2 -#define PARENTAL_BROWSER 3 -#define PARENTAL_WIIPOINT 4 -#define PARENTAL_PHOTO_EXCHANGE 5 -#define PARENTAL_UGC 6 -#define PARENTAL_ORGANIZATION 7 -#define PARENTAL_AGE 8 -#define PARENTAL_PASSWORD 9 -#define PARENTAL_QUESTION_ID 10 -#define PARENTAL_ANSWER 11 - -#define SECURE_USER_MENU_SIZE 8 - -#define SECURE_USER_INITIAL_SETTINGS 0 -#define SECURE_USER_INITIAL_LAUNCHER 1 -#define SECURE_USER_BROKEN_SETTINGS 2 -#define SECURE_USER_INSTALLED_SOFTBOX 3 -#define SECURE_USER_FREE_SOFTBOX 4 -#define SECURE_USER_LASTBOOT_IDX 5 -#define SECURE_USER_LASTBOOT_PLATFORM 6 -#define SECURE_USER_LASTBOOT_ID 7 - -#define OTHERMENU_SIZE 13 - -#define OTHER_AGREE_EULA 0 -#define OTHER_EULA_VERSION 1 -#define OTHER_WIRELESS 2 -#define OTHER_RTC_OFFSET 3 -#define OTHER_TP_RAWX1 4 -#define OTHER_TP_RAWY1 5 -#define OTHER_TP_DX1 6 -#define OTHER_TP_DY1 7 -#define OTHER_TP_RAWX2 8 -#define OTHER_TP_RAWY2 9 -#define OTHER_TP_DX2 10 -#define OTHER_TP_DY2 11 -#define OTHER_TP_RSV 12 - -#define NORMAL_HW_MENU_SIZE 2 - -#define NORMAL_HW_RTC_ADJUST 0 -#define NORMAL_HW_UNIQUE_ID 1 - -#define SECURE_HW_MENU_SIZE 6 - -#define SECURE_HW_FORCE_DISABLE 0 -#define SECURE_HW_REGION 1 -#define SECURE_HW_SERIAL 2 -#define SECURE_HW_LANGUAGE 3 -#define SECURE_HW_FUSE 4 -#define SECURE_HW_LAUNCHER_ID 5 - -#define SCFG_ARM9_MENU_SIZE 27 - -#define SCFG_ARM9_ROM_SEC 0 -#define SCFG_ARM9_ROM_STATE 1 -#define SCFG_ARM9_CLK_CPU 2 -#define SCFG_ARM9_CLK_DSP 3 -#define SCFG_ARM9_CLK_CAM 4 -#define SCFG_ARM9_CLK_WRAM 5 -#define SCFG_ARM9_CLK_CAM_CKI 6 -#define SCFG_ARM9_RST_DSP 7 -#define SCFG_ARM9_EXT_DMA 8 -#define SCFG_ARM9_EXT_GEO 9 -#define SCFG_ARM9_EXT_REN 10 -#define SCFG_ARM9_EXT_2DE 11 -#define SCFG_ARM9_EXT_DIV 12 -#define SCFG_ARM9_EXT_MC 13 -#define SCFG_ARM9_EXT_INTC 14 -#define SCFG_ARM9_EXT_LCDC 15 -#define SCFG_ARM9_EXT_VRAM 16 -#define SCFG_ARM9_EXT_PS 17 -#define SCFG_ARM9_EXT_DMAC 18 -#define SCFG_ARM9_EXT_CAM 19 -#define SCFG_ARM9_EXT_DSP 20 -#define SCFG_ARM9_EXT_MCB 21 -#define SCFG_ARM9_EXT_WRAM 22 -#define SCFG_ARM9_EXT_CFG 23 -#define SCFG_ARM9_TOTAL_CHECK 24 -#define SCFG_ARM9_CHECK_ERROR7 25 -#define SCFG_ARM9_CHECK_ERROR9 26 - -#define SCFG_ARM7_MENU_SIZE 47 - -#define SCFG_ARM7_ROM_ARM9_SEC 0 -#define SCFG_ARM7_ROM_ARM9_RSEL 1 -#define SCFG_ARM7_ROM_ARM7_SEC 2 -#define SCFG_ARM7_ROM_ARM7_RSEL 3 -#define SCFG_ARM7_ROM_ARM7_FUSE 4 -#define SCFG_ARM7_ROM_WE 5 -#define SCFG_ARM7_CLK_SD1 6 -#define SCFG_ARM7_CLK_SD2 7 -#define SCFG_ARM7_CLK_AES 8 -#define SCFG_ARM7_CLK_WRAM 9 -#define SCFG_ARM7_CLK_SND 10 -#define SCFG_ARM7_JTAG_A7 11 -#define SCFG_ARM7_JTAG_CPU 12 -#define SCFG_ARM7_JTAG_DSP 13 -#define SCFG_ARM7_EXT_DMA 14 -#define SCFG_ARM7_EXT_SDMA 15 -#define SCFG_ARM7_EXT_SND 16 -#define SCFG_ARM7_EXT_MC 17 -#define SCFG_ARM7_EXT_INTC 18 -#define SCFG_ARM7_EXT_SPI 19 -#define SCFG_ARM7_EXT_DSEL 20 -#define SCFG_ARM7_EXT_SIO 21 -#define SCFG_ARM7_EXT_LCDC 22 -#define SCFG_ARM7_EXT_VRAM 23 -#define SCFG_ARM7_EXT_PS 24 -#define SCFG_ARM7_EXT_DMAC 25 -#define SCFG_ARM7_EXT_AES 26 -#define SCFG_ARM7_EXT_SD1 27 -#define SCFG_ARM7_EXT_SD2 28 -#define SCFG_ARM7_EXT_MIC 29 -#define SCFG_ARM7_EXT_I2S 30 -#define SCFG_ARM7_EXT_I2C 31 -#define SCFG_ARM7_EXT_GPIO 32 -#define SCFG_ARM7_EXT_MCB 33 -#define SCFG_ARM7_EXT_WRAM 34 -#define SCFG_ARM7_EXT_PU 35 -#define SCFG_ARM7_EXT_CFG 36 -#define SCFG_ARM7_MI_SC1_CDET 37 -#define SCFG_ARM7_MI_SC1_MODE 38 -#define SCFG_ARM7_MI_SC2_CDET 39 -#define SCFG_ARM7_MI_SC2_MODE 40 -#define SCFG_ARM7_MI_SWP 41 -#define SCFG_ARM7_MI_CC 42 -#define SCFG_ARM7_MI_CA 43 -#define SCFG_ARM7_WL_OFFB 44 -#define SCFG_ARM7_OP_FORM 45 -#define SCFG_ARM7_OP_APP 46 - -#define SCFG_ARM7_SHARED_OFFSET 47 - -#define SYSMENU_MENU_SIZE 10 - -#define SYSMENU_TIMESTAMP 0 -#define SYSMENU_VERSION_NUM 1 -#define SYSMENU_VERSION_STR 2 -#define SYSMENU_EULA_URL 3 -#define SYSMENU_NUP_HOST 4 - -#define SYSMENU_NUP_CERT 5 -#define SYSMENU_NUP_PRV 6 -#define SYSMENU_SHOP_CERT 7 -#define SYSMENU_SHOP_PRV 8 -#define SYSMENU_NINTENDO_CAG2 9 - -#define SYSMENU_HASH_IDX 5 - -#define FONTMENU_SIZE 1 - -#define FONT_TIMESTAMP 0 -#define FONT_INFO 1 - -#define WLMENU_SIZE 6 - -#define WL_VERSION 0 -#define WL_NUM_FW 1 -#define WL_FW1_TYPE 2 -#define WL_FW1_VER 3 -#define WL_FW2_TYPE 4 -#define WL_FW2_VER 5 - -#define WHITEMENU_SIZE 2 - -#define WHITE_NUM 0 -#define WHITE_HASH 1 - -#define VERSIONMENU_SIZE 0 - -#define VERSION_OTHER 0 - -extern int s_numMenu[]; -extern const char *s_strRootMenu[]; -extern const char *s_strOwnerMenu[]; -extern const char *s_strParentalMenu[]; -extern const char *s_strSecureUserMenu[]; -extern const char *s_strOtherMenu[]; -extern const char *s_strNormalHWMenu[]; -extern const char *s_strSecureHWMenu[]; -extern const char *s_strSCFGARM7Menu[]; -extern const char *s_strSCFGARM9Menu[]; -extern const char *s_strOtherMenu[]; -extern const char *s_strSystemMenu[]; -extern const char *s_strFontMenu[] ; -extern const char *s_strWLMenu[]; -extern const char *s_strWhiteMenu[]; -extern const char **s_strMetaMenu[]; -extern const char *s_strARM7RegisterName[]; -extern const char *s_strARM9RegisterName[]; -extern const char *s_strSCFGViewMode[]; - -extern char *s_strEnable[]; -extern char *s_strJoint[]; -extern char *s_strCorrect[]; -extern char *s_strSysMenuKey[]; -extern char *s_strSupply[]; -extern char *s_strRomMode[]; -extern char *s_strPSRAM[]; -extern char *s_strCpuSpeed[]; -extern char *s_strOK[]; -extern char *s_strWLFWType[]; -extern char *s_strResult[]; -extern char *s_strBool[]; -extern char *s_strAccess[]; -extern char *s_strRomApp[]; -extern char *s_strRomForm[]; -extern char *s_strMCMode[]; -extern char *s_strRatingOrg[]; -extern char *s_strRegion[]; -extern char *s_strUserColor[]; -extern char *s_strLanguage[]; -extern char *s_strCountry[]; -extern char s_strNA[]; - -#endif // ifndef __DISPLAY_INFO_RESOURCE__ \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/util.c b/build/tests/DisplaySystemInformation/ARM9/src/util.c deleted file mode 100644 index 95ece923..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/util.c +++ /dev/null @@ -1,46 +0,0 @@ -#include -#include "util.h" - -u8 ctoh( const char c ); - -void putBinary( u8 *src, u32 size ) -{ - int i; - for( i = 0; i < size; i++ ) - { - OS_TPrintf( "%x", src[i] ); - } - - OS_TPrintf( "\n" ); -} - -u8 ctoh( const char c ) -{ - if( '0' <= c && c <= '9' ) - { - return (u8) (c - '0'); - } - - if( 'a' <= c && c <= 'f' ) - { - return (u8) ((c - 'a') + 10); - } - - if( 'A' <= c && c <= 'F' ) - { - return (u8) ((c - 'A') + 10); - } - - return 0; -} - -void strToHexa( const char *src, u8 *dst, u32 length ) -// Žó‚¯Žæ‚Á‚½•¶Žš—ñ”z—ñ‚ð16i”z—ñ‚Ö•ÏŠ· -// length‚Í•¶Žš”‚ł͂Ȃ­ƒoƒCƒg”‚Ȃ̂ŒˆÓ -{ - int i; - for( i = 0; i < length*2 ; i += 2 ) - { - dst[i/2] = (u8) ( (ctoh( src[i] ) << 4) | ctoh( src[i+1] ) ); - } -} diff --git a/build/tests/DisplaySystemInformation/ARM9/src/util.h b/build/tests/DisplaySystemInformation/ARM9/src/util.h deleted file mode 100644 index dda95543..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/util.h +++ /dev/null @@ -1,10 +0,0 @@ - -#ifndef __DISPLAY_INFO_UTIL__ -#define __DISPLAY_INFO_UTIL__ - -#include - -void putBinary( u8 *src, u32 size ); -void strToHexa( const char *src, u8 *dst, u32 length ); - -#endif \ No newline at end of file diff --git a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c b/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c deleted file mode 100644 index 88f1d520..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.c +++ /dev/null @@ -1,317 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: viewSystemInfo.c - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include - -#include "misc.h" -#include "viewSystemInfo.h" -#include "strResource.h" -#include "control.h" - -#include "getInformation.h" - -/* function prototype ----------------------------- */ -void getAllInfo( void ); -void initInfo( void ); -void infoAlloc( DispInfoEntry *p, u8 index, u8 size, BOOL isSjis ); -void printAllInfo ( void ); -void getParentalInfo( void ); -void getOtherInfo( void ); - - -/* global variables ----------------------------- */ - -DispInfoEntry* gAllInfo[ROOTMENU_SIZE]; // ‚»‚ꂼ‚ê‚̃ƒjƒ…[‚²‚Ƃɀ–Ú‚Ì’†g‚ð"•¶Žš—ñ‚Å"Ž‚Â”z—ñ - -// ƒRƒ“ƒeƒ“ƒcƒ^ƒCƒgƒ‹ŠÖŒW -OSTitleId *gContentsTitle; // ƒRƒ“ƒeƒ“ƒcƒ^ƒCƒgƒ‹‚̈ꗗ -s32 gNumContents; // gContentsTitle‚Ɋ܂܂ê‚éƒ^ƒCƒgƒ‹‚Ì” -u16 *gContentsVersion; // gContentsTitle‚»‚ꂼ‚ê‚̃o[ƒWƒ‡ƒ“î•ñ - -// ARM7‘¤‚ÌSCFGƒf[ƒ^‚ð•ÛŽ -u8 gArm7SCFGReg[DISPINFO_SHARED_SCFG_REG_SIZE]; -u8 gArm7SCFGShared[DISPINFO_SHARED_SCFG_WRAM_SIZE]; - -// LCFGRead‚ÌŒ‹‰Ê -BOOL gLCFGAccessible; -u8 * gBufLCFG; - -/* static data ---------------------------------- */ - - -/* function definition -------------------------- */ - -void displayInfoMain( void ) -{ - static int menu = MENU_ROOT; - static int line = 0; // Œ»Ý‘I‘ð‚µ‚Ä‚¢‚éƒy[ƒWƒiƒ“ƒo‚Æs - static int changeLine = 0; // changeMode—p - static BOOL firstCall = TRUE; // ʼn‚̌ĂÑo‚µ‚©”Û‚© - - // 0: changemode 1: executemode 2: result on/off 3:(require 2=true) success/failed - static u8 modeFlag = 0; - - static BOOL isChangeMode = FALSE; - static BOOL executeMode = FALSE; - - BOOL repaintFlag = FALSE; - ChangeCotnrolResult changeResult = CHANGE_NOTHING; - - // ‰‰ñ‚̌ĂÑo‚µŽž‚Í‘S‚Ä‚Ìî•ñ‚ðŽæ“¾‚µ‚È‚¨‚· - if( firstCall ) - { - initInfo(); - getAllInfo(); - } - - if( modeFlag & MODE_CHANGE_MASK ) - { - changeResult = changeControl( &menu, &line, &changeLine, &modeFlag ); - } - else if( modeFlag & MODE_EXECUTE_MASK ) - { - repaintFlag |= executeControl( &line, &changeLine, &modeFlag ); - } - else - { - repaintFlag |= control( &menu, &line, &changeLine, &modeFlag ); - } - - if( changeResult == CHANGE_VALUE_CHANGED ) - { - // ’l‚ªXV‚³‚ꂽ‚Æ‚«‚Í‘S•”Žæ“¾‚µ‚È‚¨‚· - LCFG_WriteTWLSettings( (u8 (*) [LCFG_WRITE_TEMP] ) gBufLCFG ); - getAllInfo(); - } - - // ƒpƒbƒhî•ñ‚Å‘I‚ñ‚Å‚éꊂƂ©î•ñ‚Æ‚©XV - if( changeResult == CHANGE_VALUE_CHANGED || changeResult == CHANGE_CONTROL || repaintFlag || firstCall ) - { - // ‰½‚©‘€ì‚ª‚ ‚Á‚½‚Æ‚«‚̓Lƒƒƒ“ƒoƒXƒNƒŠƒA‚µ‚Ä•`‰æ‚µ‚È‚¨‚µ - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - NNS_G2dCharCanvasClear( &gCanvasSub, TXT_COLOR_WHITE ); - // î•ñˆê——‚ð•`‰æ‚·‚é - drawMenu( menu, line, changeLine, modeFlag ); - - firstCall = FALSE; - } - -} - -void initInfo( void ) -// ŒÅ’è•¶Žš—ñ‚őΉž‚Å‚«‚È‚¢€–Ú‚É•¶Žš—ñ—̈æ‚ðŠ„‚è“–‚Ä‚é -{ - -#ifndef VERSION_VIEWER - OS_TPrintf("buffer initialize\n"); - - // sjis (char) - infoAlloc( gAllInfo[MENU_OWNER], OWNER_BIRTHDAY, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_USER], SECURE_USER_LASTBOOT_ID, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_LAUNCHER_ID, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_NORMAL_HW], NORMAL_HW_UNIQUE_ID, OS_TWL_HWINFO_MOVABLE_UNIQUE_ID_LEN*3 , TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_SERIAL , OS_TWL_HWINFO_SERIALNO_LEN_MAX + 1, TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_LANGUAGE, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SECURE_HW], SECURE_HW_FUSE, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SCFG_ARM7], SCFG_ARM7_MI_CC, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SCFG_ARM7], SCFG_ARM7_MI_CA, DISPINFO_BUFSIZE , TRUE ); - infoAlloc( gAllInfo[MENU_SCFG_ARM9], SCFG_ARM9_CHECK_ERROR7, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_SCFG_ARM9], SCFG_ARM9_CHECK_ERROR9, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_WL], WL_VERSION, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_WL], WL_FW1_VER, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_WL], WL_FW2_VER, DISPINFO_BUFSIZE, TRUE ); - infoAlloc( gAllInfo[MENU_OTHER], OTHER_RTC_OFFSET, DISPINFO_BUFSIZE, TRUE); - infoAlloc( gAllInfo[MENU_OTHER], OTHER_TP_RSV, DISPINFO_BUFSIZE, TRUE); - - - // utf(u16) - infoAlloc( gAllInfo[MENU_SYSMENU], SYSMENU_EULA_URL, TWL_EULA_URL_LEN + 1, FALSE ); - infoAlloc( gAllInfo[MENU_SYSMENU], SYSMENU_NUP_HOST, TWL_NUP_HOSTNAME_LEN + 1, FALSE ); - infoAlloc( gAllInfo[MENU_OWNER], OWNER_NICKNAME, OS_OWNERINFO_NICKNAME_MAX + 1 , FALSE ); - infoAlloc( gAllInfo[MENU_OWNER], OWNER_COMMENT, OS_OWNERINFO_COMMENT_MAX + 1 , FALSE ); - infoAlloc( gAllInfo[MENU_PARENTAL], PARENTAL_ANSWER, OS_TWL_PCTL_SECRET_ANSWER_LENGTH_MAX + 1 , FALSE ); - infoAlloc( gAllInfo[MENU_SYSMENU], SYSMENU_VERSION_STR, TWL_SYSMENU_VER_STR_LEN + 1, FALSE ); - - OS_TPrintf( "information alloc succeeded\n" ); -#endif -} - - -void infoAlloc( DispInfoEntry *p, u8 index, u8 size, BOOL isSjis ) -// initInfo‚Ìì‹Æ—pŠÖ”BisSjis=true‚¾‚Æchar‚ðAfalse‚È‚çu16‚ðŠ„‚è“–‚Ä‚é -{ - if( isSjis ) - { - p[index].str.sjis = (char*) Alloc (sizeof(char) * size); - SDK_ASSERT( p->str.sjis ); - p[index].str.sjis[size] = '\0'; - } - else - { - p[index].str.utf = (u16*) Alloc (sizeof(u16) * size); - SDK_ASSERT( p->str.utf ); - p[index].str.utf[size-1] = '\0'; - } - -} - - -void getAllInfo( void ) -// -{ - static BOOL firstRead = TRUE; - - OS_TPrintf("reflesh Information\n"); - -#ifndef VERSION_VIEWER - getOwnerInfo(); - getParentalInfo(); - getSecureUserInfo(); - getOtherInfo(); - getHWInfo(); - getSCFGInfo(); - getSysmenuInfo(); - getFontInfo(); - - if( firstRead ){ - getWLInfo(); - getWhiteListInfo(); - } -#endif - -#if NAM_ENABLE - if( firstRead ){ - getContentsVersion(); - } -#endif - - - printAllInfo(); - firstRead = FALSE; - OS_TPrintf("reflesh information finished\n"); -} - - -void displayInfoInit( void ) -{ - int loop1, loop2; - - GX_DispOff(); - GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - OS_TPrintf(" size version: %d\n", s_numMenu[MENU_VERSION]); - // ‘S‘Ìî•ñ‚ðŽ‚Â”z—ñ‚ðƒZƒbƒg - // ‰Â”\‚È‚à‚̂͗pˆÓ‚µ‚½static•¶Žš—ñ‚ւ̃|ƒCƒ“ƒ^‚őΉž - // •K—v‚È‚à‚Ì‚¾‚¯‚ ‚Æ‚Åmalloc‚·‚é - for(loop1=0; loop1isNumData ) - { - OS_TPrintf("%d %d : %d\n", loop1, loop2, entry->iValue); - } - else if( entry->isSjis ) - { - OS_TPrintf("%d %d : %s\n", loop1, loop2, entry->str.sjis); - } - else - { - OS_TPrintf("%d %d : %s\n", loop1, loop2, entry->str.utf); - } - - } - } -} - - diff --git a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.h b/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.h deleted file mode 100644 index 33bdef68..00000000 --- a/build/tests/DisplaySystemInformation/ARM9/src/viewSystemInfo.h +++ /dev/null @@ -1,101 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: viewSystemInfo.h - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __LOAD_VIEW_INFO__ -#define __LOAD_VIEW_INFO__ - -#include -#include "drawFunc.h" -#include "address.h" - -#define DISPINFO_BUFSIZE 64 - -#define MODE_CHANGE_MASK 0x1 -#define MODE_EXECUTE_MASK 0x2 -#define MODE_RESULT_DISPLAY_MASK 0x4 -#define MODE_RESULT_MASK 0x8 -#define MODE_RESULT_SHIFT 3 - -#ifdef __cplusplus -extern "C" { -#endif - -//////////////////////////////// - -typedef enum ChangeFuncArg{ - ARG_BOOL, - ARG_INT, - ARG_OTHER -} ChangeFuncArg; - -typedef struct DispInfoEntry -{ - BOOL isNumData; // •\ަ‚·‚邯‚«‚Í”’lƒf[ƒ^‚©•¶Žš—ñƒf[ƒ^‚© - BOOL isSjis; // UTF16‚Å•`‰æ‚·‚éƒf[ƒ^‚¾‚¯FALSE isNumData=TRUE‚Ȃ疢’è‹` - BOOL isAligned; // ˆê—ñ‚É•\ަ‚Å‚«‚é‚È‚çTRUEAŽš‰º‚°‚ª•K—v‚È‚çFALSE - BOOL fromLCFG; // LCFG‚©‚çŽæ“¾‚µ‚½ƒf[ƒ^‚ÍF‚‚¯‚Ä•\ަ - int numLines; // €–Ú–¼A€–Ú“à—e‚ð•\ަ‚·‚é‚̂ɕK—v‚Ès” - - const char *kind; // €–Ú–¼ - - union { - char* sjis; - u16* utf; - } str; - - int iValue; // ƒf[ƒ^‚Ì”’lŒ^•\Œ»(ƒCƒ“ƒfƒNƒX‚Æ‚©) - - BOOL changable; // ‚»‚Ì’l‚ª•ÏX‰Â”\‚©”Û‚© - - // ‚±‚±‚©‚çæ‚Íchangable‚ªtrue‚̃Gƒ“ƒgƒŠ‚Ì‚Ýݒ肳‚ê‚é - ChangeFuncArg argType; // ’l‚ð•ÏX‚·‚邽‚߂̊֔‚̈ø”Œ^ - - // ’l‚ð•ÏX‚·‚邽‚߂̊֔ - union { - void (*cBool)(bool); - void (*cInt)(int); - } changeFunc; - - char **kindNameList; // €–Ú–¼ˆê——‚Ìæ“ª‚ւ̃|ƒCƒ“ƒ^ - int numKindName; // €–Ú–¼ˆê——‚Ì’·‚³ - -} DispInfoEntry; - - -//////////////////////////////// - -// ŠeŽí–{‘ÌAƒ†[ƒUî•ñ -extern DispInfoEntry* gAllInfo[ROOTMENU_SIZE]; - -extern u8 gArm7SCFGReg[DISPINFO_SHARED_SCFG_REG_SIZE]; // ARM7‚©‚ç‚̃f[ƒ^Žæ“¾—pƒoƒbƒtƒ@ -extern u8 gArm7SCFGShared[DISPINFO_SHARED_SCFG_WRAM_SIZE]; // ARM7‚©‚ç‚̃f[ƒ^Žæ“¾—pƒoƒbƒtƒ@ - -extern BOOL gLCFGAccessible; -extern u8* gBufLCFG; - -//////////////////////////////// - -void displayInfoMain( void ); -void displayInfoInit( void ); - -//////////////////////////////// - -#ifdef __cplusplus -} -#endif - -#endif // __LOAD_VIEW_INFO__ diff --git a/build/tests/DisplaySystemInformation/Makefile b/build/tests/DisplaySystemInformation/Makefile deleted file mode 100644 index 6c2cd85e..00000000 --- a/build/tests/DisplaySystemInformation/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM7_armadillo ARM7_racoon ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/banner/MakeFooter.txt b/build/tests/DisplaySystemInformation/banner/MakeFooter.txt deleted file mode 100644 index 91571e63..00000000 --- a/build/tests/DisplaySystemInformation/banner/MakeFooter.txt +++ /dev/null @@ -1,29 +0,0 @@ -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/MakeHeader.txt b/build/tests/DisplaySystemInformation/banner/MakeHeader.txt deleted file mode 100644 index 10cdc670..00000000 --- a/build/tests/DisplaySystemInformation/banner/MakeHeader.txt +++ /dev/null @@ -1,18 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - diff --git a/build/tests/DisplaySystemInformation/banner/Makefile b/build/tests/DisplaySystemInformation/banner/Makefile deleted file mode 100644 index bfd869e7..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = \ - Makefile.0B0A Makefile.0B1A Makefile.0B2A Makefile.0B3A \ - Makefile.020A Makefile.021A Makefile.0B4A Makefile.0B5A \ - Makefile.0B6A Makefile.0B7A Makefile.0B8A Makefile.0B9A \ - Makefile.0BAA Makefile.0BBA Makefile.022A Makefile.023A \ - Makefile.024A Makefile.025A - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.020A b/build/tests/DisplaySystemInformation/banner/Makefile.020A deleted file mode 100644 index 69b02397..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.020A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 020A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.021A b/build/tests/DisplaySystemInformation/banner/Makefile.021A deleted file mode 100644 index bbc7f3ba..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.021A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 021A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.022A b/build/tests/DisplaySystemInformation/banner/Makefile.022A deleted file mode 100644 index 9222801e..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.022A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 022A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.023A b/build/tests/DisplaySystemInformation/banner/Makefile.023A deleted file mode 100644 index adbe8786..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.023A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 023A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.024A b/build/tests/DisplaySystemInformation/banner/Makefile.024A deleted file mode 100644 index 80b12300..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.024A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 024A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.025A b/build/tests/DisplaySystemInformation/banner/Makefile.025A deleted file mode 100644 index 0d270f76..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.025A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 025A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B0A b/build/tests/DisplaySystemInformation/banner/Makefile.0B0A deleted file mode 100644 index 6a1317f5..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B0A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B0A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B1A b/build/tests/DisplaySystemInformation/banner/Makefile.0B1A deleted file mode 100644 index 8cd89489..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B1A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B1A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B2A b/build/tests/DisplaySystemInformation/banner/Makefile.0B2A deleted file mode 100644 index 7a5328be..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B2A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B2A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B3A b/build/tests/DisplaySystemInformation/banner/Makefile.0B3A deleted file mode 100644 index 9840501b..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B3A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B3A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B4A b/build/tests/DisplaySystemInformation/banner/Makefile.0B4A deleted file mode 100644 index d5dc7e7e..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B4A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B4A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B5A b/build/tests/DisplaySystemInformation/banner/Makefile.0B5A deleted file mode 100644 index 39dd75c0..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B5A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B5A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B6A b/build/tests/DisplaySystemInformation/banner/Makefile.0B6A deleted file mode 100644 index 7ea49c4d..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B6A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B6A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B7A b/build/tests/DisplaySystemInformation/banner/Makefile.0B7A deleted file mode 100644 index 29b6af03..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B7A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B7A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B8A b/build/tests/DisplaySystemInformation/banner/Makefile.0B8A deleted file mode 100644 index 2792ec15..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B8A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B8A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0B9A b/build/tests/DisplaySystemInformation/banner/Makefile.0B9A deleted file mode 100644 index 57f5b803..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0B9A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0B9A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0BAA b/build/tests/DisplaySystemInformation/banner/Makefile.0BAA deleted file mode 100644 index 99da9ee9..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0BAA +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0BAA -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/Makefile.0BBA b/build/tests/DisplaySystemInformation/banner/Makefile.0BBA deleted file mode 100644 index f270f2e2..00000000 --- a/build/tests/DisplaySystemInformation/banner/Makefile.0BBA +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0BBA -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/DisplaySystemInformation/banner/banner020A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner020A_v3.bsf deleted file mode 100644 index c7a40f7f..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner020A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner021A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner021A_v3.bsf deleted file mode 100644 index 69f00f12..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner021A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner022A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner022A_v3.bsf deleted file mode 100644 index 01d4f69c..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner022A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner023A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner023A_v3.bsf deleted file mode 100644 index ce71e021..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner023A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner024A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner024A_v3.bsf deleted file mode 100644 index 74f6562f..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner024A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner025A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner025A_v3.bsf deleted file mode 100644 index 83d5343d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner025A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B0A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B0A_v3.bsf deleted file mode 100644 index cb327e33..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B0A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B1A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B1A_v3.bsf deleted file mode 100644 index 93165d66..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B1A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B2A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B2A_v3.bsf deleted file mode 100644 index 42fdbd71..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B2A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B3A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B3A_v3.bsf deleted file mode 100644 index ce03f18c..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B3A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B4A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B4A_v3.bsf deleted file mode 100644 index 3a3bf323..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B4A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B5A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B5A_v3.bsf deleted file mode 100644 index 5a99c642..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B5A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B6A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B6A_v3.bsf deleted file mode 100644 index df218cb7..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B6A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B7A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B7A_v3.bsf deleted file mode 100644 index 73ee7b0e..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B7A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B8A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B8A_v3.bsf deleted file mode 100644 index e3f3f29b..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B8A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0B9A_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0B9A_v3.bsf deleted file mode 100644 index 1082fd89..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0B9A_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0BAA_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0BAA_v3.bsf deleted file mode 100644 index eae1319c..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0BAA_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/banner0BBA_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner0BBA_v3.bsf deleted file mode 100644 index e20c3b3b..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner0BBA_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/bannerOption.txt b/build/tests/DisplaySystemInformation/banner/bannerOption.txt deleted file mode 100644 index 9da03c6f..00000000 --- a/build/tests/DisplaySystemInformation/banner/bannerOption.txt +++ /dev/null @@ -1,19 +0,0 @@ -#gamecode bannerStr -0B0A DisplayInfo_0 -0B1A DisplayInfo_1 -0B2A DisplayInfo_2 -0B3A DisplayInfo_3 -020A DisplayInfo_4 -021A DisplayInfo_5 -0B4A DisplayInfo_6 -0B5A DisplayInfo_7 -0B6A DisplayInfo_8 -0B7A DisplayInfo_9 -0B8A DisplayInfo_10 -0B9A DisplayInfo_11 -0BAA DisplayInfo_12 -0BBA DisplayInfo_13 -022A DisplayInfo_14 -023A DisplayInfo_15 -024A DisplayInfo_16 -025A DisplayInfo_17 diff --git a/build/tests/DisplaySystemInformation/banner/banner_v3.bsf b/build/tests/DisplaySystemInformation/banner/banner_v3.bsf deleted file mode 100644 index 74965f85..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/020A.bmp b/build/tests/DisplaySystemInformation/banner/icon/020A.bmp deleted file mode 100644 index b6545ca6..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/020A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/021A.bmp b/build/tests/DisplaySystemInformation/banner/icon/021A.bmp deleted file mode 100644 index 142af23d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/021A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/022A.bmp b/build/tests/DisplaySystemInformation/banner/icon/022A.bmp deleted file mode 100644 index 6a9ad050..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/022A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/023A.bmp b/build/tests/DisplaySystemInformation/banner/icon/023A.bmp deleted file mode 100644 index 33ed807f..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/023A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/024A.bmp b/build/tests/DisplaySystemInformation/banner/icon/024A.bmp deleted file mode 100644 index 7b135f8b..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/024A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/025A.bmp b/build/tests/DisplaySystemInformation/banner/icon/025A.bmp deleted file mode 100644 index 3e036a6d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/025A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B0A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B0A.bmp deleted file mode 100644 index 3c3291e2..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B0A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B1A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B1A.bmp deleted file mode 100644 index 25552817..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B1A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B2A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B2A.bmp deleted file mode 100644 index 454a960e..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B2A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B3A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B3A.bmp deleted file mode 100644 index fcd2a529..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B3A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B4A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B4A.bmp deleted file mode 100644 index f7224bae..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B4A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B5A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B5A.bmp deleted file mode 100644 index bda8474b..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B5A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B6A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B6A.bmp deleted file mode 100644 index 2d92ad53..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B6A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B7A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B7A.bmp deleted file mode 100644 index 400f5e2e..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B7A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B8A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B8A.bmp deleted file mode 100644 index b2e14b09..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B8A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0B9A.bmp b/build/tests/DisplaySystemInformation/banner/icon/0B9A.bmp deleted file mode 100644 index 342bc36d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0B9A.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0BAA.bmp b/build/tests/DisplaySystemInformation/banner/icon/0BAA.bmp deleted file mode 100644 index d6c7d062..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0BAA.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/0BBA.bmp b/build/tests/DisplaySystemInformation/banner/icon/0BBA.bmp deleted file mode 100644 index 70f2589d..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/0BBA.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/icon/gameIcon.bmp b/build/tests/DisplaySystemInformation/banner/icon/gameIcon.bmp deleted file mode 100644 index 8ec56f1c..00000000 Binary files a/build/tests/DisplaySystemInformation/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/DisplaySystemInformation/banner/makeMaker.rb b/build/tests/DisplaySystemInformation/banner/makeMaker.rb deleted file mode 100755 index d3a74246..00000000 --- a/build/tests/DisplaySystemInformation/banner/makeMaker.rb +++ /dev/null @@ -1,27 +0,0 @@ -fFoot = open "MakeFooter.txt" -fHead = open "MakeHeader.txt" - -contentFoot = fFoot.read -contentHead = fHead.read - -fFoot.close -fHead.close - -gamecodeList = ["020A","021A","022A","023A","024A","025A", - "0B0A","0B1A","0B2A","0B3A","0B4A","0B5A", - "0B6A","0B7A","0B8A","0B9A","0BAA","0BBA", - ] -fileNameList = [] - -for gamecode in gamecodeList - - fileName = "Makefile.#{gamecode}" - fileNameList << fileName - f = open( fileName, "w") - f.puts contentHead - f.puts "GAMECODE\t=\t#{gamecode}" - f.puts contentFoot - f.close -end - -print fileNameList diff --git a/build/tests/DisplaySystemInformation/common/include/address.h b/build/tests/DisplaySystemInformation/common/include/address.h deleted file mode 100644 index 4eeaf221..00000000 --- a/build/tests/DisplaySystemInformation/common/include/address.h +++ /dev/null @@ -1,28 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: main.c - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev:$ - $Author:$ - *---------------------------------------------------------------------------*/ - -#ifndef __DISP_INFO_ADDRESS_H__ -#define __DISP_INFO_ADDRESS_H__ - -#include - -#define DISPINFO_SHARED_SCFG_REG_ADDR (void*)0x02fff000 -#define DISPINFO_SHARED_SCFG_REG_SIZE 0x26U -#define DISPINFO_SHARED_SCFG_WRAM_ADDR (void*)0x02fff030 -#define DISPINFO_SHARED_SCFG_WRAM_SIZE 0x06U - -#endif \ No newline at end of file diff --git a/build/tests/ErrorLogTest/ARM9/Makefile b/build/tests/ErrorLogTest/ARM9/Makefile deleted file mode 100644 index 32b13e36..00000000 --- a/build/tests/ErrorLogTest/ARM9/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/ErrorLogTest/ARM9/Makefile.0 b/build/tests/ErrorLogTest/ARM9/Makefile.0 deleted file mode 100644 index 3ebe7c11..00000000 --- a/build/tests/ErrorLogTest/ARM9/Makefile.0 +++ /dev/null @@ -1,56 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - ErrorLogTest -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -SUBDIRS = $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/errorLog - -GAMECODE = 0B5A -MEDIA = gamecard -TARGET_BIN = main.srl - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(MEDIA) - -#---------------------------------------------------------------------------- - - - -MISC_DIR = ../../../systemMenu_RED/misc -LINCLUDES += $(MISC_DIR)/include - -SRCS = ErrorLogTest.c $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LLIBRARIES += liberrorlog$(TWL_LIBSUFFIX).a - -ROM_SPEC = main.rsf -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -MAKEROM_FLAGS += -DERRLOGTEST_GAMECODE=$(GAMECODE) \ - -DERRLOGTEST_MEDIA=$(MEDIA) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/ErrorLogTest/ARM9/Makefile.1 b/build/tests/ErrorLogTest/ARM9/Makefile.1 deleted file mode 100644 index 5f502fdb..00000000 --- a/build/tests/ErrorLogTest/ARM9/Makefile.1 +++ /dev/null @@ -1,55 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - ErrorLogTest -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -SUBDIRS = $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/errorLog - -GAMECODE = 013A -MEDIA = NAND -TARGET_BIN = main.tad - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(MEDIA) -#---------------------------------------------------------------------------- - - - -MISC_DIR = ../../../systemMenu_RED/misc -LINCLUDES += $(MISC_DIR)/include - -SRCS = ErrorLogTest.c $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LLIBRARIES += liberrorlog$(TWL_LIBSUFFIX).a - -ROM_SPEC = main.rsf -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -MAKEROM_FLAGS += -DERRLOGTEST_GAMECODE=$(GAMECODE) \ - -DERRLOGTEST_MEDIA=$(MEDIA) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/ErrorLogTest/ARM9/main.rsf b/build/tests/ErrorLogTest/ARM9/main.rsf deleted file mode 100644 index 8ba5e5dd..00000000 --- a/build/tests/ErrorLogTest/ARM9/main.rsf +++ /dev/null @@ -1,269 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner.bnr - - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [0 - 255] - # - #AgreeEULAVersion 0 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media $(ERRLOGTEST_MEDIA) - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(ERRLOGTEST_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - Secure TRUE - AppType System -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} - -Rating -{ - # - # Permited age to play for each rating organization [0 - 31, ALWAYS, FREE] - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / ALWAYS / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/ErrorLogTest/ARM9/src/ErrorLogTest.c b/build/tests/ErrorLogTest/ARM9/src/ErrorLogTest.c deleted file mode 100644 index a3a23892..00000000 --- a/build/tests/ErrorLogTest/ARM9/src/ErrorLogTest.c +++ /dev/null @@ -1,137 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - ErrorLog - File: errorLog.h - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "misc.h" - -// ‚È‚º‚©ƒoƒbƒtƒ@ƒTƒCƒY‚ª256byte‚ð’´‚¦‚邯o—Í‚ªŒ‡‚¯‚邿‚¤‚ɂȂé -// ƒ_ƒ“ƒv‚ðŒ©‚é‚ÆAOS_TPrintf()ŒÄ‚Ño‚µŽž‚É‚àƒoƒbƒtƒ@‚ɂ͂¿‚á‚ñ‚ÆŠi”[‚³‚ê‚Ä‚¢‚é–Í—l -// Œ´ˆö‚ÍŒ»Ý’²¸’† -#define BUFSIZE 128 - -void VBlankIntr(void); - - -void TwlMain( void ) -{ - int numEntry; - - OS_Init(); - RTC_Init(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - FS_Init( FS_DMA_NOT_USE ); - InitAllocator(); -// FS_DeleteFile("nand:/sys/log/sysmenu.log"); - - ERRORLOG_Init( Alloc, Free ); - - numEntry = ERRORLOG_GetNum(); - OS_TPrintf("API: before numEntry : %d\n", numEntry ); - ERRORLOG_Write( 0x80000 ); - ERRORLOG_Printf( "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" - "this is overflow message!\nthis is overflow message!\nthis is overflow message!\n" ); - -/* - ERRORLOG_Write( (u64)0x77700040051LL ); - ERRORLOG_Printf( "%d hyoooo nyoronyoro\naboooon dogaaaaaaaan", 2+5 ); - - - ERRORLOG_Printf( "menuRedIplManager.cpp [l.73] RED FATAL 0" ); - ERRORLOG_Printf( "this is too long long long long long long long long long long long long string.\n" - "this is too long long long long long long long long long long long long string.\n" - "this is too long long long long long long long long long long long long string.\n" - "this is too long long long long long long long long long long long long string.\n" ); - */ - -/* - if( numEntry > 2 ) - { - pEntry = ERRORLOG_Read(1); - OS_TPrintf("entry[1] : %02d-%02d-%02d %02d:%02d:%02d errorCode: %d\n", - pEntry->year, - pEntry->month, - pEntry->day, - pEntry->hour, - pEntry->minute, - pEntry->second, - pEntry->errorCode); - } -*/ - OS_TPrintf( "*** log file data\n" ); - - { - // ƒƒOƒtƒ@ƒCƒ‹‚Ì’†g‚ðo—Í - FSFile file; - char buf[BUFSIZE+1]; - int numEntry = 0; - int totalSize = 0, nowSize = 0; - buf[BUFSIZE] = '\0'; - - FS_InitFile( &file ); - FS_OpenFileEx( &file, "nand:/sys/log/sysmenu.log", FS_FILEMODE_R ); - - while( ( nowSize = FS_ReadFile( &file, buf, BUFSIZE ) ) == BUFSIZE ) - { - char *p = buf; - - OS_TPrintf("%s",buf); - totalSize += nowSize; - - while( (p = STD_SearchChar(p, '#')) != NULL) - { - // '#'‚ªo‚Ä‚«‚½‰ñ”‚¾‚¯ƒGƒ“ƒgƒŠ”‚ð‘‚â‚· - numEntry++; - p++; - } - - } - - //OS_TPrintf("%s\n",buf); - OS_TPrintf("\n"); - FS_CloseFile( &file ); - - totalSize += nowSize; - - OS_TPrintf("count: \'#\' count : %d\n", numEntry ); - OS_TPrintf("total Size : %d\n", totalSize); - } - - numEntry = ERRORLOG_GetNum(); - OS_TPrintf("API: end numEntry : %d\n", numEntry ); - - - ERRORLOG_End(); - OS_TPrintf( "*** End of demo\n" ); - OS_Terminate(); -} - -void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - diff --git a/build/tests/ErrorLogTest/Makefile b/build/tests/ErrorLogTest/Makefile deleted file mode 100644 index 737d6bcd..00000000 --- a/build/tests/ErrorLogTest/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - ErrorLogTest -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -SUBDIRS = ARM9 banner - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/ErrorLogTest/about.txt b/build/tests/ErrorLogTest/about.txt deleted file mode 100644 index ba84c322..00000000 --- a/build/tests/ErrorLogTest/about.txt +++ /dev/null @@ -1,11 +0,0 @@ -ErrorLogTest - - -ƒ‰ƒ“ƒ`ƒƒ‚É‘g‚Ýž‚܂ꂽErrorLogƒ‰ƒCƒuƒ‰ƒŠ‚̃eƒXƒg—pƒAƒvƒŠ‚Å‚·B -ŽÀs‚³‚ê‚邯ERRORLOG_Write()‚ðŒÄ‚Ño‚µAƒGƒ‰[ƒƒO‚Ì‘‚«ž‚Ý‚ðs‚Á‚Ä‚©‚ç -ƒRƒ“ƒ\[ƒ‹‚ÉŒ»Ý‚̃ƒOƒGƒ“ƒgƒŠ”‚â‚»‚Ì’†g‚ðo—Í‚µ‚ÄI—¹‚µ‚Ü‚·B -–ˆ‰ñƒƒO‘‚«ž‚Ý‚ðs‚¤‚½‚ßAŽÀs‚·‚邽‚тɃƒOƒGƒ“ƒgƒŠ‚Ì‘”‚Í‘‰Á‚µ‚Ü‚·‚ªA -ƒƒOƒtƒ@ƒCƒ‹‚ª16KBŒÅ’è‚Å쬂³‚ê‚Ä‚¢‚邽‚ßAŒÃ‚¢ƒƒO‚Í‡ŽŸíœ‚³‚ê‚Ä‚¢‚«‚Ü‚·B - -‚Ü‚½A’¼ÚWriteŠÖ”‚ðŒÄ‚ñ‚Å‚¢‚邽‚ßAFatalError‚ðŽÀÛ‚É”­¶‚³‚¹‚¸‚É -ƒGƒ‰[ƒƒO‚̶¬‚â‘‚«ž‚Ý‚ð‚µ‚½‚¢‚Æ‚«‚É—˜—p‚·‚邱‚Æ‚à‰Â”\‚Å‚·B diff --git a/build/tests/ErrorLogTest/banner/Makefile b/build/tests/ErrorLogTest/banner/Makefile deleted file mode 100644 index 1f8aa1d4..00000000 --- a/build/tests/ErrorLogTest/banner/Makefile +++ /dev/null @@ -1,49 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/ErrorLogTest/banner/banner_v3.bsf b/build/tests/ErrorLogTest/banner/banner_v3.bsf deleted file mode 100644 index d45ce7bc..00000000 Binary files a/build/tests/ErrorLogTest/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/ErrorLogTest/banner/icon/gameIcon.bmp b/build/tests/ErrorLogTest/banner/icon/gameIcon.bmp deleted file mode 100644 index af71c8e5..00000000 Binary files a/build/tests/ErrorLogTest/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/FakeRomHeader/Makefile b/build/tests/FakeRomHeader/Makefile deleted file mode 100644 index 892956ee..00000000 --- a/build/tests/FakeRomHeader/Makefile +++ /dev/null @@ -1,99 +0,0 @@ -#! make -f -#--------------------------------------------------------------------------- -# Project: TwlSDK - tools - mastering.TWL -# File: Makefile.TWL -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: #$ -# $Rev$ -# $Author$ -#--------------------------------------------------------------------------- -TARGET_PLATFORM = TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - - - -TARGETS = FakeRomHeader$(SUFFIX).exe - -SOURCES_C = main.c keys.c - -SOURCES = $(SOURCES_C) - -OBJECTS = $(SOURCES:.c=.o) - -INCDIR = $(TWLSDK_ROOT)/build/tools/makerom.TWL \ - $(TWL_IPL_RED_ROOT)/include - -REVISION_H = revision.h - -#INSTALL_DIR = $(FIRM_INSTALL_TOOLSDIR)/bin -#INSTALL_TARGETS = $(TARGETS) - -MACROS += $(addprefix -I,$(INCDIR)) -DPLATFORM_ENDIAN_LITTLE - -LIBACSIGN = $(ROOT)/build/tools/makerom.TWL/acsign/lib/X86/libacsign_x86.a -LIBAES = $(ROOT)/build/tools/makerom.TWL/aes/lib/X86/libaes_x86.a -LIBDIGEST = $(ROOT)/build/tools/makerom.TWL/digest/lib/X86/libdigest_x86.a -#LIBDGT = $(ROOT)/build/tools/libdgt.TWL/lib/libdgt.TWL.a - -ifeq ($(KEY_LAUNCHER),TRUE) -MACROS += -DKEY_LAUNCHER -SUFFIX = .launcher -else -ifeq ($(KEY_SECURE),TRUE) -MACROS += -DKEY_SECURE -SUFFIX = .secure -else -ifeq ($(KEY_SYSTEM),TRUE) -MACROS += -DKEY_SYSTEM -SUFFIX = .sys -else -MACROS += -DKEY_USER -SUFFIX = .user -endif -endif -endif - -LDIRT_CLEAN = $(OBJECTS) $(TARGETS) *.BAK $(REVISION_H) - -include $(TWLSDK_ROOT)/build/buildtools/twl/modulerules.x86 - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(REVISION_H) $(OBJECTS) $(LIBACSIGN) $(LIBAES) $(LIBDIGEST) - $(CC_X86) $+ -o $@ -lnetapi32 -lwsock32 - -main.o: main.c - -#main.h: - -# avoid to warning message -#misc.o:WARNING += -Wno-format-y2k - -# - -$(REVISION_H) :: - @if test -e $(TWLSDK_ROOT)/.svn; then \ - LANG=C svn info $(call empath,$(TWLSDK_ROOT)) | grep 'Revision' | sed "s|Revision: \(.*\)|#define SDK_REVISION \"\1\"|" > $(REVISION_H); \ - else \ - echo "#define SDK_REVISION \"-\"" > $(REVISION_H); \ - fi - @if test -e $(TWL_IPL_RED_ROOT)/.svn; then \ - LANG=C svn info $(call empath,$(TWL_IPL_RED_ROOT)) | grep 'Revision' | sed "s|Revision: \(.*\)|#define IPL_REVISION \"\1\"|" >> $(REVISION_H); \ - else \ - echo "#define IPL_REVISION \"-\"" >> $(REVISION_H); \ - fi - -#test: path.c misc.c -# $(CC_X86) -DTEST $+ -o $@ diff --git a/build/tests/FakeRomHeader/README.txt b/build/tests/FakeRomHeader/README.txt deleted file mode 100644 index 6a287402..00000000 --- a/build/tests/FakeRomHeader/README.txt +++ /dev/null @@ -1,35 +0,0 @@ -ROMƒwƒbƒ_‹U‘•ƒc[ƒ‹ - -›What? - -EPC—pƒRƒ}ƒ“ƒhƒ‰ƒCƒ“ƒc[ƒ‹ -E“üo—Í - - “ü—Í: SRL - - o—Í: SRL - - —¼ŽÒ‚̈Ⴂ: o—ÍSRL‚É‚ÍV‚½‚ȃwƒbƒ_CRC‚Æ–¼‚ª‚‚¢‚Ä‚¢‚é - (‚‚܂èA–¼ƒ`ƒFƒbƒN‚ª’Ê‚é) - -›ƒrƒ‹ƒh•û–@ - - ‚ӂ‚¤‚É make ‚·‚邯A–¼‚ÌŒ®‚ªƒ†[ƒUƒAƒvƒŠ—p‚ɂȂè‚Ü‚·B - Œ®‚ð•Ï‚¦‚½‚¢‚Æ‚«AˆÈ‰º‚̃IƒvƒVƒ‡ƒ“‚ð‚‚¯‚Ä make ‚µ‚Ä‚­‚¾‚³‚¢B - - make KEY_SYSTEM=TRUE ƒVƒXƒeƒ€ƒAƒvƒŠ—p‚ÌŒ®‚ª‘I‘ð‚³‚ê‚é - make KEY_SECURE=TRUE ƒZƒLƒ…ƒAƒAƒvƒŠ—p‚ÌŒ®‚ª‘I‘ð‚³‚ê‚é - make KEY_LAUNCHER=TRUE ƒ‰ƒ“ƒ`ƒƒƒAƒvƒŠ—p‚ÌŒ®‚ª‘I‘ð‚³‚ê‚é - -›ŽÀs•û–@ - - ./fakeRomHeader [Option] input_file output_file - - EƒIƒvƒVƒ‡ƒ“ - -p: ƒvƒ‰ƒbƒgƒtƒH[ƒ€ƒR[ƒh‚ð0x01‚É‚µ‚Ü‚·B - -s: –¼—LŒøƒtƒ‰ƒO‚ðOff‚É‚µ‚Ü‚·B - -d: VEŠJ”­—pˆÃ†ƒtƒ‰ƒO‚ð0‚É‚µ‚ÄA‹ŒEŠJ”­—pˆÃ†ƒtƒ‰ƒO‚ð1‚É‚µ‚Ü‚·B - - E‘¼‚É‚àROMƒwƒbƒ_‚ð‚¢‚¶‚肽‚¢‚Æ‚« - -> ƒoƒCƒiƒŠƒGƒfƒBƒ^‚ȂǂÅROMƒwƒbƒ_‚ð‚¢‚¶‚Á‚½Œã‚ÉA - –{ƒc[ƒ‹‚ðƒIƒvƒVƒ‡ƒ“‚È‚µ‚ÅŽÀs‚·‚邯A - ‚»‚ÌROMƒwƒbƒ_‚©‚çƒwƒbƒ_CRC‚Æ–¼‚ðÄŒvŽZ‚µ‚¯’¼‚µ‚Ü‚·B - -ˆÈã diff --git a/build/tests/FakeRomHeader/keys.c b/build/tests/FakeRomHeader/keys.c deleted file mode 100644 index 67431383..00000000 --- a/build/tests/FakeRomHeader/keys.c +++ /dev/null @@ -1,243 +0,0 @@ -// –¼—p‚ÌŒ®ƒf[ƒ^ from makerom.TWL - -#include -#include "keys.h" - -#ifdef KEY_USER -// ŠJ”­‹@—pROMƒwƒbƒ_–¼ŒöŠJŒ® -const u8 g_devPubKey_DER[ 0xa2 ] = { - 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xAC, 0x93, 0xBB, - 0x3C, 0x15, 0x5C, 0x5F, 0x25, 0xB0, 0x4C, 0x37, 0xA4, 0x2D, 0x85, 0x29, 0x1D, 0x7A, 0x9D, 0x2D, - 0xD5, 0x79, 0xB5, 0x5D, 0xB1, 0x08, 0x20, 0x9C, 0xF0, 0x4C, 0x56, 0x27, 0x97, 0xF8, 0x7E, 0x3E, - 0xCB, 0x94, 0x06, 0x05, 0x94, 0x00, 0x92, 0x9B, 0xB0, 0x5B, 0x06, 0xF6, 0xAF, 0xAA, 0x9C, 0xA5, - 0xF0, 0x11, 0xA7, 0x8A, 0xCB, 0x0C, 0x11, 0xD6, 0x0C, 0x3D, 0x30, 0xAC, 0x51, 0x79, 0x5A, 0xB5, - 0x7F, 0x11, 0x92, 0x74, 0x48, 0x82, 0x81, 0xBF, 0x3B, 0xFA, 0x93, 0xBF, 0x6B, 0x5B, 0x3F, 0x86, - 0x96, 0x4F, 0xCC, 0x90, 0x12, 0xB2, 0x39, 0x8D, 0x68, 0x16, 0x7B, 0xC6, 0x87, 0xF1, 0xF5, 0x60, - 0x62, 0x39, 0xFB, 0x10, 0x7E, 0x48, 0x7F, 0xDD, 0x82, 0x38, 0x38, 0x76, 0xB5, 0xCE, 0x21, 0x4B, - 0xC9, 0x6F, 0x31, 0x8D, 0x23, 0x57, 0x3D, 0xB6, 0x6C, 0xEE, 0xC2, 0x0D, 0x11, 0x02, 0x03, 0x01, - 0x00, 0x01, -}; -// ŠJ”­‹@—pƒAƒvƒŠROMƒwƒbƒ_–¼”é–§Œ® -const u8 g_devPrivKey_DER[ 0x263 ] = { - 0x30, 0x82, 0x02, 0x5F, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xAC, 0x93, 0xBB, 0x3C, 0x15, - 0x5C, 0x5F, 0x25, 0xB0, 0x4C, 0x37, 0xA4, 0x2D, 0x85, 0x29, 0x1D, 0x7A, 0x9D, 0x2D, 0xD5, 0x79, - 0xB5, 0x5D, 0xB1, 0x08, 0x20, 0x9C, 0xF0, 0x4C, 0x56, 0x27, 0x97, 0xF8, 0x7E, 0x3E, 0xCB, 0x94, - 0x06, 0x05, 0x94, 0x00, 0x92, 0x9B, 0xB0, 0x5B, 0x06, 0xF6, 0xAF, 0xAA, 0x9C, 0xA5, 0xF0, 0x11, - 0xA7, 0x8A, 0xCB, 0x0C, 0x11, 0xD6, 0x0C, 0x3D, 0x30, 0xAC, 0x51, 0x79, 0x5A, 0xB5, 0x7F, 0x11, - 0x92, 0x74, 0x48, 0x82, 0x81, 0xBF, 0x3B, 0xFA, 0x93, 0xBF, 0x6B, 0x5B, 0x3F, 0x86, 0x96, 0x4F, - 0xCC, 0x90, 0x12, 0xB2, 0x39, 0x8D, 0x68, 0x16, 0x7B, 0xC6, 0x87, 0xF1, 0xF5, 0x60, 0x62, 0x39, - 0xFB, 0x10, 0x7E, 0x48, 0x7F, 0xDD, 0x82, 0x38, 0x38, 0x76, 0xB5, 0xCE, 0x21, 0x4B, 0xC9, 0x6F, - 0x31, 0x8D, 0x23, 0x57, 0x3D, 0xB6, 0x6C, 0xEE, 0xC2, 0x0D, 0x11, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x00, 0x95, 0xDC, 0xC8, 0x18, 0x19, 0xF8, 0x98, 0x0B, 0x73, 0x78, 0x0C, 0x4D, - 0x7E, 0xD6, 0x06, 0xE9, 0x39, 0x83, 0xEA, 0xBC, 0x59, 0xAF, 0x7C, 0x87, 0xF2, 0x25, 0xD8, 0x02, - 0xF8, 0x57, 0x4C, 0x94, 0xB4, 0xCE, 0x74, 0x9B, 0x76, 0x94, 0x70, 0x1D, 0xA1, 0x0D, 0xAF, 0x33, - 0x4B, 0x28, 0xD5, 0xE9, 0xA0, 0x3F, 0xDD, 0xFD, 0x86, 0x67, 0x36, 0xA8, 0xB2, 0x77, 0x7E, 0xA8, - 0x2C, 0x2E, 0xEB, 0x43, 0x7B, 0xE4, 0xA3, 0x66, 0x7C, 0x3A, 0x00, 0x90, 0xC5, 0xF5, 0xF8, 0x59, - 0xF9, 0x95, 0x88, 0x2A, 0xA8, 0xF4, 0x94, 0x41, 0x05, 0x02, 0xA0, 0x47, 0xC0, 0xC1, 0xB9, 0x80, - 0x1F, 0x49, 0xBB, 0x09, 0xBF, 0x42, 0xBA, 0xE6, 0xEE, 0x8D, 0x21, 0x1D, 0xFB, 0x8F, 0xC7, 0xB7, - 0x71, 0x00, 0xFB, 0x35, 0x13, 0xD8, 0xBC, 0xA3, 0x3F, 0x3A, 0xCF, 0x96, 0xB0, 0x0B, 0x8A, 0x61, - 0x9C, 0x70, 0xF8, 0x91, 0x02, 0x41, 0x00, 0xD8, 0xAA, 0x14, 0x21, 0x49, 0x7A, 0x2C, 0xC3, 0xAA, - 0xDA, 0xFB, 0x17, 0xB0, 0xD7, 0xF5, 0x5A, 0x77, 0xEE, 0xF0, 0xA9, 0x09, 0x18, 0x85, 0x21, 0xD4, - 0x12, 0x4F, 0x85, 0x35, 0x05, 0x20, 0x36, 0x22, 0x65, 0x2C, 0xDD, 0xFA, 0xF5, 0x8E, 0xA5, 0x2E, - 0xC4, 0xFD, 0xD1, 0xFA, 0xC6, 0x8A, 0x0F, 0x98, 0x69, 0xD9, 0x82, 0x50, 0xDF, 0xFA, 0x80, 0xC3, - 0xFE, 0x5E, 0x15, 0x59, 0xA8, 0xD4, 0x05, 0x02, 0x41, 0x00, 0xCB, 0xE8, 0x9A, 0xF2, 0x5F, 0xC1, - 0x75, 0xA5, 0x1E, 0x95, 0xE4, 0x4F, 0x1A, 0x48, 0xA1, 0x75, 0x9A, 0x6E, 0xDB, 0xA2, 0x31, 0xD6, - 0x66, 0x29, 0xEA, 0x19, 0x37, 0x0C, 0xB2, 0x89, 0xD3, 0x03, 0x15, 0xE6, 0x7A, 0x1A, 0xCB, 0xCE, - 0xB9, 0x79, 0x11, 0x9B, 0x71, 0x78, 0xA5, 0xBB, 0x07, 0x6F, 0xA3, 0x05, 0x3B, 0x84, 0x23, 0x47, - 0xAB, 0x20, 0x34, 0x39, 0xB0, 0x59, 0x87, 0xEC, 0xCE, 0x9D, 0x02, 0x41, 0x00, 0xB8, 0xE0, 0x98, - 0x00, 0xB7, 0x64, 0x0B, 0x22, 0x83, 0x7E, 0x0B, 0xD7, 0xF1, 0x4C, 0xB5, 0xCD, 0x96, 0x9D, 0x4A, - 0xB9, 0xD2, 0x4B, 0x1B, 0xFE, 0xFB, 0xA9, 0x0C, 0x35, 0xCC, 0x42, 0x2D, 0x74, 0x43, 0xF1, 0x35, - 0x51, 0xCD, 0x3D, 0x0F, 0x95, 0x1F, 0xCD, 0x74, 0x10, 0x62, 0xFE, 0x5A, 0xFC, 0x67, 0xBF, 0x9A, - 0x9C, 0x3A, 0x4A, 0x84, 0xC4, 0xAF, 0x79, 0x33, 0xEA, 0xDF, 0xF0, 0xD1, 0xC9, 0x02, 0x41, 0x00, - 0xAA, 0x5B, 0x16, 0x00, 0xC2, 0xB1, 0x5D, 0x39, 0x6B, 0x59, 0x2D, 0x5A, 0x4D, 0x0A, 0x3B, 0x22, - 0x86, 0xB8, 0x71, 0x74, 0x8B, 0x90, 0xA4, 0xE0, 0x05, 0xBD, 0xB5, 0x39, 0x3D, 0x7C, 0x5A, 0x37, - 0xAC, 0xB7, 0x56, 0x72, 0x46, 0xAD, 0xDA, 0x54, 0xE4, 0xB9, 0xEA, 0x4E, 0x32, 0xA0, 0x13, 0xF1, - 0x57, 0xD0, 0x4A, 0x4D, 0xF6, 0x2F, 0xAD, 0x2F, 0x85, 0x92, 0x60, 0xDC, 0x1B, 0xEC, 0x63, 0x1D, - 0x02, 0x41, 0x00, 0xAC, 0x40, 0x43, 0xF2, 0x74, 0x2C, 0x56, 0xF4, 0xB9, 0x52, 0xB0, 0xCC, 0x89, - 0xC7, 0x70, 0x33, 0xA9, 0xC0, 0xD3, 0x4E, 0x35, 0xFC, 0x49, 0x69, 0xCB, 0x22, 0x9C, 0x0D, 0xD0, - 0xE1, 0x8F, 0xCC, 0xF4, 0xAD, 0x25, 0xC2, 0xE1, 0x84, 0xD6, 0x34, 0x35, 0x89, 0xFA, 0xC4, 0xBA, - 0x43, 0x34, 0xF4, 0xD2, 0xB2, 0x36, 0x56, 0xB9, 0x96, 0x78, 0x4D, 0x7A, 0xE3, 0x4D, 0xA9, 0x5E, - 0xF5, 0x3E, 0x88, -}; -#endif //#ifdef KEY_USER - -#ifdef KEY_SYSTEM -// ŠJ”­—pƒVƒXƒeƒ€ƒAƒvƒŠ ROMƒwƒbƒ_–¼—pŒöŠJŒ® -const u8 g_devPubKey_DER[ 0xa2 ] = { - 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xE9, 0x9E, 0xA7, - 0x9F, 0x59, 0x4D, 0xF4, 0xA7, 0x60, 0x04, 0xBD, 0x47, 0xF2, 0xB3, 0x64, 0xCD, 0x16, 0x79, 0xC1, - 0x47, 0x39, 0xF6, 0xA9, 0xF8, 0xEE, 0x1A, 0xD0, 0x72, 0xCF, 0x43, 0x97, 0x0C, 0x93, 0xA1, 0x38, - 0x4E, 0x13, 0x40, 0x6C, 0x10, 0x59, 0x43, 0xE2, 0x71, 0x29, 0x54, 0x14, 0x2C, 0xC5, 0xDA, 0x59, - 0x4D, 0xB4, 0x6A, 0xEF, 0x85, 0x61, 0x6F, 0x7F, 0x1C, 0x59, 0x34, 0x2C, 0xC6, 0x24, 0xF3, 0x7B, - 0xC3, 0xB7, 0x40, 0xD1, 0x46, 0xF8, 0x90, 0xB7, 0xC2, 0x98, 0x50, 0xAF, 0x95, 0x52, 0x42, 0xDB, - 0xAC, 0xD6, 0x7E, 0xA9, 0xC3, 0x3D, 0x1B, 0x51, 0x56, 0x07, 0x06, 0xD0, 0x0B, 0x01, 0xBB, 0x58, - 0x93, 0xEA, 0xA0, 0x2C, 0xC7, 0x7D, 0x6A, 0x31, 0x7E, 0xC9, 0xE2, 0xDA, 0xFE, 0x1F, 0x2E, 0x9D, - 0xA7, 0x54, 0x84, 0xDC, 0x28, 0xB9, 0x18, 0xEA, 0x16, 0xF2, 0x95, 0x55, 0x6D, 0x02, 0x03, 0x01, - 0x00, 0x01, -}; - -// ŠJ”­—pƒVƒXƒeƒ€ƒAƒvƒŠ ROMƒwƒbƒ_–¼—p”é–§Œ® -const u8 g_devPrivKey_DER[ 0x263 ] = { - 0x30, 0x82, 0x02, 0x5E, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xE9, 0x9E, 0xA7, 0x9F, 0x59, - 0x4D, 0xF4, 0xA7, 0x60, 0x04, 0xBD, 0x47, 0xF2, 0xB3, 0x64, 0xCD, 0x16, 0x79, 0xC1, 0x47, 0x39, - 0xF6, 0xA9, 0xF8, 0xEE, 0x1A, 0xD0, 0x72, 0xCF, 0x43, 0x97, 0x0C, 0x93, 0xA1, 0x38, 0x4E, 0x13, - 0x40, 0x6C, 0x10, 0x59, 0x43, 0xE2, 0x71, 0x29, 0x54, 0x14, 0x2C, 0xC5, 0xDA, 0x59, 0x4D, 0xB4, - 0x6A, 0xEF, 0x85, 0x61, 0x6F, 0x7F, 0x1C, 0x59, 0x34, 0x2C, 0xC6, 0x24, 0xF3, 0x7B, 0xC3, 0xB7, - 0x40, 0xD1, 0x46, 0xF8, 0x90, 0xB7, 0xC2, 0x98, 0x50, 0xAF, 0x95, 0x52, 0x42, 0xDB, 0xAC, 0xD6, - 0x7E, 0xA9, 0xC3, 0x3D, 0x1B, 0x51, 0x56, 0x07, 0x06, 0xD0, 0x0B, 0x01, 0xBB, 0x58, 0x93, 0xEA, - 0xA0, 0x2C, 0xC7, 0x7D, 0x6A, 0x31, 0x7E, 0xC9, 0xE2, 0xDA, 0xFE, 0x1F, 0x2E, 0x9D, 0xA7, 0x54, - 0x84, 0xDC, 0x28, 0xB9, 0x18, 0xEA, 0x16, 0xF2, 0x95, 0x55, 0x6D, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x81, 0x00, 0xCF, 0x67, 0xAA, 0x3B, 0x1F, 0x26, 0xC5, 0x68, 0x7F, 0x27, 0x55, 0xFF, - 0xF5, 0x29, 0x6C, 0xF9, 0x62, 0xD5, 0xCF, 0x50, 0xF3, 0xD5, 0xD8, 0x4B, 0x06, 0xE0, 0xC9, 0x64, - 0xD4, 0x3B, 0x96, 0x73, 0x74, 0xF1, 0x71, 0xB2, 0x67, 0x07, 0x0F, 0xA9, 0x68, 0x06, 0x8B, 0x97, - 0x99, 0x70, 0x6A, 0xC4, 0xE1, 0x16, 0x9B, 0xA8, 0x0F, 0xDF, 0xCC, 0x2B, 0xE7, 0x37, 0xFC, 0x6A, - 0x67, 0x8B, 0x99, 0x9E, 0xD1, 0xDA, 0xCC, 0x68, 0xFC, 0xEB, 0x8D, 0xFE, 0x42, 0x84, 0x72, 0x88, - 0x05, 0xAF, 0x23, 0x32, 0x30, 0x1F, 0xFA, 0xCC, 0x67, 0x52, 0x93, 0x6C, 0xC1, 0x0A, 0xCF, 0xD6, - 0xD3, 0x5F, 0x75, 0xE9, 0x4D, 0x32, 0xC0, 0x31, 0x1B, 0xD4, 0xB5, 0x4B, 0xB4, 0x4E, 0xB0, 0x3E, - 0xD5, 0x6C, 0x3C, 0xDC, 0x57, 0xBB, 0x32, 0x24, 0x41, 0x9C, 0x79, 0xBE, 0xFC, 0xC0, 0x3B, 0x63, - 0x0C, 0x5D, 0xC6, 0xE5, 0x02, 0x41, 0x00, 0xF6, 0x77, 0x12, 0x72, 0x63, 0xD0, 0x9B, 0x22, 0xC6, - 0x4F, 0x19, 0x1E, 0x2A, 0xE1, 0x97, 0xCF, 0x28, 0xD3, 0xC3, 0x5E, 0xFB, 0x22, 0x57, 0xE5, 0x4F, - 0x90, 0x83, 0x53, 0xB0, 0x80, 0xD3, 0x2D, 0xFB, 0x77, 0x55, 0x52, 0x5E, 0x00, 0xD8, 0x72, 0x39, - 0x93, 0xF0, 0x89, 0x83, 0x97, 0xFB, 0x78, 0xD2, 0xB0, 0xCD, 0xED, 0x1C, 0x9B, 0x8F, 0x5D, 0xBD, - 0x00, 0x26, 0x37, 0xA1, 0xE5, 0x38, 0xE7, 0x02, 0x41, 0x00, 0xF2, 0xA8, 0x5D, 0x86, 0xE0, 0x33, - 0xC8, 0x93, 0x5C, 0xB9, 0xBD, 0xCF, 0x27, 0x70, 0x81, 0x79, 0xE1, 0x12, 0x82, 0x09, 0x64, 0xCB, - 0xDB, 0xCF, 0xBB, 0x52, 0xD3, 0x3F, 0x22, 0x90, 0x47, 0x23, 0xAA, 0x20, 0x7D, 0x92, 0xFD, 0xD6, - 0x58, 0x68, 0xF3, 0xB1, 0xFA, 0x7B, 0x81, 0x0D, 0x8F, 0x22, 0xDC, 0x84, 0x08, 0x91, 0x60, 0x07, - 0xE8, 0x98, 0x9A, 0x84, 0xDA, 0x4C, 0x24, 0xC7, 0x10, 0x8B, 0x02, 0x41, 0x00, 0xB3, 0xB0, 0xAA, - 0x75, 0x55, 0xCA, 0x90, 0x60, 0xB1, 0x1E, 0x98, 0x1C, 0x83, 0x7D, 0x08, 0x36, 0x53, 0xF8, 0xD8, - 0x77, 0x16, 0x37, 0xBA, 0xC7, 0x87, 0xD3, 0xBF, 0xBB, 0xB3, 0x72, 0xA9, 0x04, 0xDC, 0x52, 0xEB, - 0x94, 0xEA, 0xCE, 0x49, 0x00, 0x36, 0x74, 0x62, 0xA9, 0x8F, 0x94, 0xAE, 0x16, 0x2F, 0xDE, 0x11, - 0xB4, 0xEE, 0xE7, 0x87, 0x85, 0xFB, 0x36, 0xF1, 0xA6, 0x1B, 0xD5, 0xC8, 0x3F, 0x02, 0x40, 0x73, - 0x18, 0x72, 0xCC, 0x1F, 0x99, 0xD0, 0x40, 0x3D, 0x52, 0x08, 0x7A, 0xB2, 0x5D, 0x45, 0xBC, 0x76, - 0x8A, 0x1D, 0xCD, 0xB0, 0xD6, 0x94, 0xDB, 0x32, 0x21, 0xB5, 0xFB, 0x13, 0x3C, 0xD5, 0xD1, 0x4F, - 0xC7, 0x7B, 0x68, 0x76, 0x27, 0xED, 0xE5, 0x51, 0xF9, 0x90, 0x32, 0x76, 0x62, 0xE5, 0x0A, 0x87, - 0x07, 0xC5, 0x3C, 0x97, 0x0D, 0x09, 0x41, 0x20, 0xC1, 0x74, 0xFD, 0x7A, 0xD0, 0x44, 0xC3, 0x02, - 0x41, 0x00, 0xAF, 0xA3, 0x2C, 0x53, 0x8E, 0x8E, 0xA8, 0xE7, 0x36, 0xC0, 0x5C, 0x9E, 0x95, 0xEE, - 0xC1, 0x97, 0x02, 0x63, 0x7F, 0x3B, 0x4E, 0xB2, 0x0F, 0xF2, 0x7A, 0xBD, 0x57, 0x9C, 0x8B, 0x85, - 0xA8, 0x5D, 0x14, 0x3B, 0x7B, 0xF0, 0xBE, 0xFE, 0x0F, 0x8E, 0x4F, 0xD5, 0xB8, 0x49, 0xE8, 0x90, - 0xF5, 0x12, 0xBF, 0xB2, 0xD6, 0xE2, 0x78, 0x20, 0x26, 0x6C, 0x3F, 0x5C, 0xE4, 0x57, 0x6D, 0xE9, - 0xB4, 0x63, -}; -#endif // #ifdef KEY_SYSTEM - -#ifdef KEY_SECURE -// ŠJ”­—pƒVƒ‡ƒbƒvƒAƒvƒŠ ROMƒwƒbƒ_–¼—pŒöŠJŒ® -const u8 g_devPubKey_DER[ 0xa2 ] = { - 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xA7, 0x9F, 0x54, - 0xA0, 0xC7, 0x45, 0xAE, 0xF6, 0x63, 0xA7, 0x53, 0xB7, 0x0A, 0xCC, 0x0B, 0xCB, 0x65, 0xE1, 0x11, - 0xC6, 0x05, 0x15, 0xB5, 0x6E, 0xBD, 0xAC, 0x0C, 0xCA, 0xF4, 0x7C, 0x68, 0x7A, 0xF9, 0x0E, 0x5D, - 0x98, 0x5B, 0xC8, 0x4D, 0x22, 0x3B, 0xA3, 0xBE, 0x8B, 0x5B, 0x7F, 0x26, 0x44, 0x9F, 0xC4, 0x48, - 0x44, 0xB1, 0x32, 0xB7, 0xBE, 0x63, 0xBA, 0xD6, 0xC1, 0x10, 0xCE, 0xF6, 0xED, 0x47, 0x8F, 0xE1, - 0xFF, 0x7F, 0x5A, 0xD5, 0x5D, 0x94, 0x38, 0x2F, 0xA1, 0xD4, 0xEF, 0x82, 0xB1, 0x0D, 0xC4, 0x43, - 0xEC, 0xBE, 0x77, 0xB6, 0x82, 0x9C, 0xFA, 0x17, 0x87, 0x84, 0x82, 0x25, 0x46, 0xFB, 0xD6, 0x05, - 0xC8, 0x9A, 0x7E, 0xAD, 0x44, 0x40, 0x0D, 0x35, 0x9C, 0x45, 0x44, 0x64, 0x36, 0x61, 0x4B, 0xF7, - 0xE6, 0x31, 0x5C, 0x7D, 0x96, 0x73, 0xE8, 0xAC, 0xB4, 0xE3, 0x5E, 0xD1, 0x9D, 0x02, 0x03, 0x01, - 0x00, 0x01, -}; - -// ŠJ”­—pƒVƒ‡ƒbƒvƒAƒvƒŠ ROMƒwƒbƒ_–¼—p”é–§Œ® -const u8 g_devPrivKey_DER[ 0x263 ] = { - 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xA7, 0x9F, 0x54, 0xA0, 0xC7, - 0x45, 0xAE, 0xF6, 0x63, 0xA7, 0x53, 0xB7, 0x0A, 0xCC, 0x0B, 0xCB, 0x65, 0xE1, 0x11, 0xC6, 0x05, - 0x15, 0xB5, 0x6E, 0xBD, 0xAC, 0x0C, 0xCA, 0xF4, 0x7C, 0x68, 0x7A, 0xF9, 0x0E, 0x5D, 0x98, 0x5B, - 0xC8, 0x4D, 0x22, 0x3B, 0xA3, 0xBE, 0x8B, 0x5B, 0x7F, 0x26, 0x44, 0x9F, 0xC4, 0x48, 0x44, 0xB1, - 0x32, 0xB7, 0xBE, 0x63, 0xBA, 0xD6, 0xC1, 0x10, 0xCE, 0xF6, 0xED, 0x47, 0x8F, 0xE1, 0xFF, 0x7F, - 0x5A, 0xD5, 0x5D, 0x94, 0x38, 0x2F, 0xA1, 0xD4, 0xEF, 0x82, 0xB1, 0x0D, 0xC4, 0x43, 0xEC, 0xBE, - 0x77, 0xB6, 0x82, 0x9C, 0xFA, 0x17, 0x87, 0x84, 0x82, 0x25, 0x46, 0xFB, 0xD6, 0x05, 0xC8, 0x9A, - 0x7E, 0xAD, 0x44, 0x40, 0x0D, 0x35, 0x9C, 0x45, 0x44, 0x64, 0x36, 0x61, 0x4B, 0xF7, 0xE6, 0x31, - 0x5C, 0x7D, 0x96, 0x73, 0xE8, 0xAC, 0xB4, 0xE3, 0x5E, 0xD1, 0x9D, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x80, 0x48, 0xCA, 0x9C, 0x49, 0xA5, 0xBF, 0xD1, 0x17, 0x16, 0x77, 0x97, 0x97, 0x29, - 0x8D, 0x2A, 0xA2, 0x0D, 0x80, 0x0B, 0xE3, 0xDE, 0x59, 0x6B, 0x0C, 0xC8, 0x39, 0x6A, 0xE4, 0xC7, - 0xFF, 0x2E, 0xB0, 0x18, 0x6F, 0xF0, 0x9D, 0x35, 0x5E, 0x6A, 0x80, 0xAF, 0x3D, 0x90, 0x85, 0x9C, - 0x1A, 0x3F, 0x58, 0x15, 0xB9, 0x7B, 0x58, 0xB9, 0x4A, 0xB9, 0x18, 0x68, 0xDE, 0xBE, 0x5B, 0xE1, - 0x1C, 0xBF, 0x85, 0xDF, 0x5F, 0x30, 0xFD, 0xD2, 0xEC, 0xC0, 0x77, 0x33, 0x62, 0x58, 0xEC, 0xC1, - 0x47, 0xF7, 0x41, 0xE8, 0x2B, 0x21, 0x83, 0xE0, 0x8E, 0xE0, 0xF4, 0x03, 0x5D, 0x07, 0x84, 0x91, - 0xFA, 0x5B, 0xD8, 0xD3, 0x47, 0x90, 0x6E, 0x7D, 0x81, 0x9C, 0x1A, 0xB3, 0x03, 0x2F, 0xBC, 0x1A, - 0x28, 0x01, 0xBB, 0x78, 0x33, 0x60, 0xD2, 0x32, 0x34, 0x09, 0xEE, 0x08, 0x35, 0x50, 0x7A, 0x02, - 0x77, 0xB9, 0x01, 0x02, 0x41, 0x00, 0xCF, 0x39, 0xB3, 0x95, 0xDB, 0x1A, 0x2C, 0xD5, 0x6B, 0x0E, - 0xD8, 0x7B, 0xEC, 0x36, 0x14, 0xC5, 0x6C, 0x6C, 0x03, 0x34, 0xCB, 0x8A, 0x03, 0xF0, 0x94, 0x9C, - 0x2E, 0xBB, 0xA4, 0x24, 0x85, 0x6F, 0x3C, 0x8B, 0xAD, 0x44, 0x88, 0xA1, 0xDC, 0x88, 0xFE, 0xE7, - 0x02, 0x24, 0xB3, 0x73, 0xEA, 0xD1, 0xF6, 0x61, 0x6A, 0x73, 0x00, 0x86, 0x0B, 0x67, 0xAB, 0x00, - 0xFB, 0xF7, 0xFD, 0x0D, 0x92, 0x91, 0x02, 0x41, 0x00, 0xCF, 0x13, 0x5C, 0xD1, 0x72, 0x12, 0xA5, - 0x1D, 0x3A, 0x86, 0xAB, 0xAC, 0x87, 0x11, 0x37, 0x6D, 0xEB, 0x90, 0x14, 0x41, 0x7B, 0xAA, 0x38, - 0x88, 0xFF, 0xAF, 0xAA, 0xAE, 0x12, 0x3E, 0x7C, 0x28, 0x59, 0xDB, 0xBE, 0xAE, 0x79, 0x20, 0x0C, - 0x4F, 0xE5, 0xAB, 0x97, 0x64, 0x0D, 0x1E, 0x31, 0x54, 0x10, 0xB0, 0x1C, 0x7E, 0x5A, 0x7B, 0x98, - 0x32, 0x00, 0xF7, 0xE0, 0x18, 0x15, 0x53, 0xFC, 0x4D, 0x02, 0x41, 0x00, 0x90, 0x5F, 0x38, 0x01, - 0xD0, 0x9B, 0x44, 0xDF, 0x0F, 0x6E, 0x51, 0x5E, 0xCC, 0xEB, 0xC4, 0xBE, 0xE2, 0xD1, 0xC1, 0xCE, - 0x17, 0x7C, 0x39, 0x50, 0x74, 0x88, 0xF7, 0x7A, 0x1D, 0x5A, 0xA0, 0x68, 0x26, 0x3B, 0x7D, 0xE4, - 0xC0, 0x78, 0x5C, 0x68, 0x49, 0x86, 0xF2, 0x14, 0x55, 0xBE, 0x0D, 0xBC, 0x68, 0x35, 0xE8, 0x6E, - 0xE4, 0xCF, 0x7E, 0xC4, 0xA3, 0xFB, 0xD4, 0x90, 0x2A, 0x8A, 0x39, 0x31, 0x02, 0x41, 0x00, 0x93, - 0x88, 0xE3, 0x17, 0xA2, 0xA3, 0xA0, 0x1A, 0x4C, 0x09, 0x89, 0x24, 0xD9, 0xF2, 0xAD, 0x40, 0x56, - 0x96, 0x07, 0xA8, 0x84, 0x18, 0x4A, 0x41, 0x69, 0x92, 0x5A, 0x13, 0xBD, 0x91, 0xE1, 0x59, 0xCA, - 0x73, 0xE2, 0xCE, 0x62, 0x24, 0x30, 0x41, 0x78, 0x8C, 0x21, 0xC7, 0xBA, 0x04, 0xE9, 0xF6, 0x50, - 0x11, 0x79, 0xAB, 0x98, 0x81, 0xF8, 0x74, 0x9F, 0xF5, 0xFB, 0x26, 0x8D, 0x83, 0x91, 0xFD, 0x02, - 0x40, 0x4D, 0xA4, 0x03, 0x7E, 0x00, 0xB6, 0xA2, 0xEE, 0x85, 0x19, 0x5C, 0xB3, 0xBE, 0x06, 0x48, - 0xF7, 0xA8, 0x27, 0xB3, 0xC9, 0xED, 0x60, 0xE1, 0x56, 0x0A, 0x3F, 0x8D, 0x64, 0x56, 0xBA, 0x2E, - 0xC3, 0xF6, 0x2D, 0x95, 0x38, 0x87, 0x58, 0xD6, 0x95, 0xF7, 0xA6, 0xD6, 0xEE, 0x85, 0x7D, 0xD7, - 0x93, 0x80, 0xF5, 0x1D, 0xBF, 0x5F, 0x3E, 0x3A, 0x22, 0x29, 0x18, 0xE5, 0x95, 0x73, 0x0D, 0xEA, - 0x42, -}; -#endif // #ifdef KEY_SECURE - -#ifdef KEY_LAUNCHER -// ŠJ”­—pƒVƒXƒeƒ€ƒAƒvƒŠ ROMƒwƒbƒ_–¼—pŒöŠJŒ® -const u8 g_devPubKey_DER[ 0xa2 ] = { - 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xBC, 0xFD, 0xA1, - 0xFF, 0x1F, 0x66, 0xDF, 0xEC, 0xB4, 0x69, 0xF8, 0xF7, 0x43, 0x0C, 0x5D, 0x0F, 0x00, 0xD7, 0x20, - 0x49, 0x42, 0x06, 0x03, 0x29, 0x85, 0x0B, 0x99, 0x59, 0x61, 0x98, 0x70, 0x6E, 0xFF, 0xF6, 0xB4, - 0x70, 0x66, 0xF0, 0xDD, 0x8F, 0xDC, 0xE9, 0xF2, 0x0D, 0xD0, 0x21, 0x1D, 0x77, 0xB8, 0x9C, 0x51, - 0x87, 0xC0, 0xB1, 0x33, 0xAB, 0x13, 0x96, 0x0B, 0x47, 0xB8, 0x42, 0x4A, 0x0D, 0xC3, 0x77, 0xE1, - 0x87, 0xB1, 0x6B, 0x24, 0x31, 0x10, 0x8A, 0x47, 0xF2, 0x32, 0xF4, 0xC9, 0x78, 0x25, 0x13, 0xD4, - 0x80, 0x10, 0x05, 0x52, 0xC3, 0xE7, 0x50, 0x7B, 0x29, 0x49, 0xCE, 0x93, 0xD9, 0x8F, 0x2A, 0xB5, - 0x4D, 0xD1, 0xC1, 0x91, 0xD8, 0x07, 0x16, 0x10, 0x15, 0xFF, 0xD6, 0x84, 0x8F, 0x54, 0x3D, 0x91, - 0x5B, 0x37, 0x45, 0x48, 0xE4, 0x6B, 0x62, 0xD2, 0x11, 0x9B, 0x0D, 0x71, 0x69, 0x02, 0x03, 0x01, - 0x00, 0x01, -}; - -// ŠJ”­—pƒVƒXƒeƒ€ƒAƒvƒŠ ROMƒwƒbƒ_–¼—p”é–§Œ® -const u8 g_devPrivKey_DER[ 0x263 ] = { - 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, 0x00, 0xBC, 0xFD, 0xA1, 0xFF, 0x1F, - 0x66, 0xDF, 0xEC, 0xB4, 0x69, 0xF8, 0xF7, 0x43, 0x0C, 0x5D, 0x0F, 0x00, 0xD7, 0x20, 0x49, 0x42, - 0x06, 0x03, 0x29, 0x85, 0x0B, 0x99, 0x59, 0x61, 0x98, 0x70, 0x6E, 0xFF, 0xF6, 0xB4, 0x70, 0x66, - 0xF0, 0xDD, 0x8F, 0xDC, 0xE9, 0xF2, 0x0D, 0xD0, 0x21, 0x1D, 0x77, 0xB8, 0x9C, 0x51, 0x87, 0xC0, - 0xB1, 0x33, 0xAB, 0x13, 0x96, 0x0B, 0x47, 0xB8, 0x42, 0x4A, 0x0D, 0xC3, 0x77, 0xE1, 0x87, 0xB1, - 0x6B, 0x24, 0x31, 0x10, 0x8A, 0x47, 0xF2, 0x32, 0xF4, 0xC9, 0x78, 0x25, 0x13, 0xD4, 0x80, 0x10, - 0x05, 0x52, 0xC3, 0xE7, 0x50, 0x7B, 0x29, 0x49, 0xCE, 0x93, 0xD9, 0x8F, 0x2A, 0xB5, 0x4D, 0xD1, - 0xC1, 0x91, 0xD8, 0x07, 0x16, 0x10, 0x15, 0xFF, 0xD6, 0x84, 0x8F, 0x54, 0x3D, 0x91, 0x5B, 0x37, - 0x45, 0x48, 0xE4, 0x6B, 0x62, 0xD2, 0x11, 0x9B, 0x0D, 0x71, 0x69, 0x02, 0x03, 0x01, 0x00, 0x01, - 0x02, 0x81, 0x80, 0x16, 0x65, 0xDC, 0xC8, 0x16, 0x99, 0xA3, 0x9A, 0x32, 0xFB, 0x88, 0x35, 0x0D, - 0xAE, 0x2E, 0x6D, 0x33, 0xC5, 0x4B, 0x1F, 0x43, 0x82, 0xE0, 0xE7, 0x0F, 0xCC, 0x83, 0x1D, 0x13, - 0xB2, 0xF4, 0x48, 0x43, 0x6F, 0xA2, 0x8C, 0xDB, 0xB6, 0x5A, 0x1B, 0xCD, 0xAB, 0xB0, 0x33, 0x30, - 0xE2, 0x6B, 0xD2, 0x9F, 0x7F, 0x6F, 0x2E, 0x2E, 0x89, 0x11, 0xBD, 0x89, 0xB1, 0xB3, 0x9E, 0x89, - 0x58, 0xD9, 0xDB, 0xB9, 0x91, 0x00, 0xDA, 0x17, 0xA9, 0x14, 0xC3, 0x83, 0xFF, 0xFF, 0x46, 0x0F, - 0x5F, 0x81, 0x1B, 0x5B, 0x02, 0xD2, 0x29, 0xEF, 0x48, 0xB7, 0xDF, 0x8C, 0x34, 0xED, 0xA2, 0xEC, - 0xC0, 0x79, 0x50, 0xC6, 0xAD, 0x0B, 0x98, 0x28, 0xC2, 0x17, 0x80, 0x96, 0x67, 0x3A, 0x22, 0xD7, - 0x60, 0x61, 0x98, 0xF6, 0xAB, 0x10, 0x1E, 0xE6, 0x23, 0x06, 0x4B, 0x61, 0xAF, 0xFE, 0xD5, 0xAF, - 0xB8, 0x3D, 0x81, 0x02, 0x41, 0x00, 0xE2, 0x82, 0xC3, 0x83, 0x2A, 0xEF, 0xA0, 0x86, 0x15, 0xFD, - 0x80, 0x23, 0x2B, 0x1C, 0x80, 0x0C, 0xF7, 0xA0, 0xA3, 0x53, 0x2B, 0xAD, 0xF9, 0xF6, 0xF7, 0xA3, - 0x7E, 0x1A, 0x5E, 0xE7, 0x18, 0x6D, 0xF3, 0xD6, 0xDE, 0x68, 0xBB, 0x4A, 0x54, 0xAF, 0xDF, 0xA5, - 0xEC, 0xA7, 0x62, 0xBB, 0xCB, 0x7A, 0xDE, 0x3F, 0xFB, 0x9A, 0x99, 0x2A, 0xF7, 0x2D, 0x23, 0x98, - 0x9A, 0x9F, 0xCE, 0xFB, 0x67, 0xB1, 0x02, 0x41, 0x00, 0xD5, 0x98, 0x63, 0x19, 0x3D, 0x80, 0xDF, - 0x71, 0x13, 0x6A, 0xF4, 0x5E, 0x62, 0x99, 0x16, 0x34, 0x18, 0xF9, 0xDC, 0x58, 0x2F, 0xC3, 0xD8, - 0x8B, 0x68, 0xC1, 0x43, 0x98, 0xF0, 0xEC, 0x39, 0xE3, 0x40, 0x6E, 0x08, 0x9F, 0xED, 0x17, 0xBE, - 0xCC, 0x87, 0x4A, 0xAD, 0x99, 0x15, 0x09, 0xD0, 0xBB, 0xDB, 0x13, 0xF0, 0x53, 0xDF, 0xCB, 0x66, - 0x1A, 0xD1, 0xF2, 0x14, 0xB7, 0x17, 0xFA, 0xCB, 0x39, 0x02, 0x41, 0x00, 0xD8, 0xA2, 0x05, 0x89, - 0x32, 0x8C, 0x41, 0xB3, 0x5B, 0xDE, 0xBA, 0x29, 0x68, 0x76, 0xF6, 0x84, 0xF0, 0x64, 0x23, 0x30, - 0x4D, 0x4B, 0x34, 0x11, 0x1E, 0x60, 0xB0, 0x1F, 0x5A, 0x7A, 0x9C, 0xE3, 0xB3, 0xDC, 0xE1, 0x93, - 0xBA, 0xE4, 0x69, 0x40, 0x57, 0x9E, 0xA2, 0x4A, 0xA8, 0x64, 0x41, 0x44, 0xBE, 0xC0, 0xE4, 0xCA, - 0xC4, 0x08, 0xD2, 0xA3, 0xCA, 0x32, 0x8E, 0x57, 0x9F, 0x26, 0xD4, 0xD1, 0x02, 0x41, 0x00, 0x9B, - 0xD5, 0x50, 0x07, 0xAC, 0x2D, 0x87, 0xD7, 0x71, 0xB9, 0x48, 0x8C, 0x4C, 0x17, 0x30, 0x71, 0xD5, - 0xFF, 0x05, 0x59, 0x79, 0x8F, 0xC3, 0x3F, 0x02, 0xB0, 0x6D, 0xE6, 0xF9, 0x6E, 0xFF, 0x54, 0xE3, - 0x3E, 0xE4, 0x1F, 0xF9, 0xD4, 0xA7, 0x29, 0x85, 0x53, 0x60, 0x90, 0x1D, 0x1F, 0x4A, 0x20, 0xA4, - 0x57, 0x49, 0xB1, 0x87, 0xC7, 0x57, 0xB9, 0x1D, 0x8F, 0x26, 0xB9, 0xE6, 0x4E, 0xDD, 0x51, 0x02, - 0x40, 0x4F, 0xE6, 0xC8, 0x11, 0x14, 0xA2, 0xF9, 0xC3, 0xD1, 0x7B, 0x74, 0x48, 0x8F, 0x33, 0xB4, - 0xF6, 0xFF, 0xEE, 0xDC, 0x4E, 0x34, 0xF9, 0x66, 0xB8, 0x25, 0x3A, 0x05, 0xF5, 0x29, 0x1B, 0x12, - 0x61, 0x6C, 0xCD, 0xF1, 0x0D, 0xE6, 0x68, 0xED, 0x81, 0x44, 0x96, 0x07, 0x5A, 0x43, 0x72, 0x93, - 0xDC, 0xEE, 0xD7, 0x81, 0x82, 0x22, 0x5E, 0x07, 0x15, 0x02, 0xA5, 0xE9, 0x54, 0x59, 0x86, 0x03, - 0x02, -}; -#endif // #ifdef KEY_LAUNCHER diff --git a/build/tests/FakeRomHeader/keys.h b/build/tests/FakeRomHeader/keys.h deleted file mode 100644 index 349ae8e4..00000000 --- a/build/tests/FakeRomHeader/keys.h +++ /dev/null @@ -1,14 +0,0 @@ -// –¼—p‚ÌŒ®ƒf[ƒ^‚Ì錾 - -#include - -// Œ®‚ÌŽí—Þ -//#define KEY_USER -//#define KEY_SYSTEM -//#define KEY_SECURE -//#define KEY_LAUNCHER - -// ŠJ”­‹@—pROMƒwƒbƒ_–¼Œ® -extern const u8 g_devPubKey_DER[ 0xa2 ]; -extern const u8 g_devPrivKey_DER[ 0x263 ]; - diff --git a/build/tests/FakeRomHeader/main.c b/build/tests/FakeRomHeader/main.c deleted file mode 100644 index d09d497f..00000000 --- a/build/tests/FakeRomHeader/main.c +++ /dev/null @@ -1,533 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlFirmware - tools - mastering - File: mastering.c - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: #$ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include -#include -#include // strcasecmp() -#include // getopt() -#include // stat() -#include -#include -#include -#include -#include -#include "revision.h" -#include "keys.h" - -#define CARD_LATENCY_MASK 0x083f1fff -#define CARD_MROM_GAME_LATENCY 0x00010017 -#define CARD_MROM_SECURE_HW_LATENCY 0x001808f8 -#define CARD_MROM_SECURE_SW_LATENCY 0x051e -#define CARD_1TROM_GAME_LATENCY 0x00010657 -#define CARD_1TROM_SECURE_HW_LATENCY 0x081808f8 -#define CARD_1TROM_SECURE_SW_LATENCY 0x0d7e - - -/*---------------------------------------------------------------------------* - - - 錾 & ’è” - - - *---------------------------------------------------------------------------*/ - -// -- “à•”ƒpƒ‰ƒ[ƒ^ - -// CRC (makerom.TWL/misc.c‚Æmakerom.TWL/format_rom_private.h‚©‚çƒRƒsƒy) -#define CRC16_INIT_VALUE (0xffff) -#define CALC_CRC16_SIZE (0x15e) - -// ƒtƒ@ƒCƒ‹ƒRƒs[—pƒoƒbƒtƒ@ -#define BUFSIZE (16*1024) -static u8 buf[ BUFSIZE ]; - -// -- Context - -typedef struct _SContext -{ - // ƒIƒvƒVƒ‡ƒ“ - BOOL bPlatform; - BOOL bSignFlag; - BOOL bDevFlag; - BOOL bVerFlag; - BOOL bDebugger; - BOOL bCheckCard; - int verNum; - BOOL bMROM; - BOOL bNTR; - - FILE *ifp; - FILE *ofp; -} -SContext; - -// -- internal function -static BOOL iMain( SContext *pContext ); -u16 CalcCRC16(u16 start, u8 *data, int size); -BOOL SignRomHeader( ROM_Header *prh ); -static void SetRomSpeedByIndex(ROM_Header * header, tRomSpeedType idx); - -/*---------------------------------------------------------------------------* - - - ƒOƒ[ƒoƒ‹•Ï” - - - *---------------------------------------------------------------------------*/ - -BOOL DebugMode = FALSE; - -/*---------------------------------------------------------------------------* - - - ‚¨‚¨‚à‚Æ‚Ì–{‘Ì - - - *---------------------------------------------------------------------------*/ - -void usage() -{ - printf( "-----------------------------------------------------------------------------\n" ); - printf( "Usage: fakeRomHeader.exe input_file output_file\n" ); - printf( " input_file : a ROM data file (generated by makerom.TWL).\n" ); - printf( " output_file : a destination file.\n" ); - printf( "\nOption:\n" ); - printf( "-h : print help only.\n" ); - printf( "-p : write invalid platform code in a ROM Header.\n" ); - printf( "-s : negate flag for the signature in a ROM Header.\n" ); - printf( "-d : negate a new developer encrypt flag, and assert an old one.\n" ); - printf( "-v NUM: change ROM version in a ROM Header.\n" ); - printf( "-m : [Only NTR limited ROM] Rom speed type replace 1TROM from MROM.\n" ); - printf( "-D : assert a disable flag of debugger alalysis.\n" ); - printf( "-c : assert a check(inspection) card flag.\n" ); - printf( "-N : skip sign [using for NTR limited ROM]" ); - printf( "-f : force to overwrite a output_file.\n" ); - printf( "-----------------------------------------------------------------------------\n" ); -} - -int main(int argc, char *argv[]) -{ - SContext context; - char *pSrc, *pDst; - int opt; - extern char *optarg; - extern int optind, opterr; - struct stat st; - BOOL bResult; - BOOL bForceOverwrite = FALSE; - - printf( "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" ); - printf( " fakeRomHeader [%s-%s]\n", SDK_REVISION, IPL_REVISION ); - printf( "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n" ); - - // context ‚̉Šú‰» - memset( &context, 0, sizeof(SContext) ); - - // ƒIƒvƒVƒ‡ƒ“ - while( (opt = getopt(argc, argv, "hpsdmv:DcfN")) >= 0 ) - { - switch( opt ) - { - case 'h': - usage(); - return 0; - break; - - case 'p': - context.bPlatform = TRUE; - break; - - case 's': - context.bSignFlag = TRUE; - break; - - case 'd': - context.bDevFlag = TRUE; - break; - - case 'v': - context.bVerFlag = TRUE; - context.verNum = atoi(optarg); - break; - - case 'm': - context.bMROM = TRUE; - break; - - case 'D': - context.bDebugger = TRUE; - break; - - case 'c': - context.bCheckCard = TRUE; - break; - - case 'N': - context.bNTR = TRUE; - break; - - case 'f': - bForceOverwrite = TRUE; - break; - - default: // ƒIƒvƒVƒ‡ƒ“ˆø”‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢‚Æ‚«‚É‚àŽÀs‚³‚ê‚é - usage(); - fprintf( stdout, "error: illegal option\n" ); - exit(1); - break; - } - } - argc = argc - optind; - argv = argv + optind; - - // ˆø”ˆ— - if( argc != 2 ) - { - usage(); - printf( "error arguments\n" ); - exit(1); - } - else - { - pSrc = argv[0]; - pDst = argv[1]; - } - - printf( "input_file: %s\n", pSrc ); - printf( "output_file: %s\n", pDst ); - printf( "\n" ); - - // “ü—̓tƒ@ƒCƒ‹‚Æo—̓tƒ@ƒCƒ‹–¼‚ª“¯‚¶‚È‚çƒ_ƒ - if( (strlen(pSrc) == strlen(pDst)) && (memcmp(pSrc, pDst, strlen(pSrc)) == 0) ) - { - printf( "The name of output_file must be different from the one of input_file\n" ); - exit(1); - } - - // o—̓tƒ@ƒCƒ‹‚ª‘¶Ý‚·‚邯‚«ã‘‚«‚·‚é‚©‚Ç‚¤‚©‚ðŠm”F‚·‚é - if( !bForceOverwrite && stat( pDst, &st )==0 ) - { - char ans; - printf( "The %s already exists. Overwrite it? (y or n) ", pDst ); - //fscanf( stdin, "%c", &ans ); - ans = (char)getch(); // ƒŠƒ^[ƒ“ƒL[‚È‚µ - printf( "%c\n", ans ); // getch ‚ł͓ü—Í‚ª•\ަ‚³‚ê‚È‚¢‚̂Ŏ©•ª‚Å•\ަ‚·‚é•K—v‚ ‚è - printf( "\n" ); - if( !(ans=='y') && !(ans=='Y') ) - { - printf( "mastering is aborted.\n" ); - exit(1); - } - } - - // ƒtƒ@ƒCƒ‹‚ðŠJ‚­ - context.ifp = fopen(pSrc, "rb"); - context.ofp = fopen(pDst, "wb+"); - if( !(context.ifp) || !(context.ofp) ) - { - printf( "fopen failed.\n" ); - bResult = FALSE; - goto FINALIZE; - } - - // –{ˆ— - bResult = iMain( &context ); - -// I—¹ˆ— -FINALIZE: - - if( !bResult ) - { - printf( "\n" ); - printf( "error.\n" ); - } - else - { - printf( "\n" ); - printf( "succeeded.\n" ); - } - if( context.ifp ) fclose(context.ifp); // Ž‘Œ¹‚̉ð•ú - if( context.ofp ) fclose(context.ofp); - - if( (!bResult) && (stat( pDst, &st ) == 0) ) - { - unlink( pDst ); // o—̓tƒ@ƒCƒ‹‚ð휂·‚é - } - return 0; -} - -/*---------------------------------------------------------------------------* - - ROMƒwƒbƒ_‚Ì‹U‘• - - *---------------------------------------------------------------------------*/ - -static BOOL iMain( SContext *pContext ) -{ - ROM_Header rh; - int size; - - // ROMƒwƒbƒ_‚ðƒŠ[ƒh - fseek( pContext->ifp, 0, SEEK_SET ); - if( sizeof(ROM_Header) != fread( &rh, 1, sizeof(ROM_Header), pContext->ifp ) ) - { - printf( "fread failed in reading ROM Header\n" ); - return FALSE; - } - - // ROMƒwƒbƒ_‚ð‚¢‚¶‚é - { - if( pContext->bPlatform ) - { - printf( "platform_code: 0x%02x -> 0x01\n", rh.s.platform_code ); - rh.s.platform_code = 0x01; - } - - if( pContext->bSignFlag ) - { - printf( "enable_signature: 0x%02x -> 0x00\n", rh.s.enable_signature ); - rh.s.enable_signature = 0x0; - } - - if( pContext->bDevFlag ) - { - printf( "old dev. encrypt: 0x%02x -> 0x01x\n", rh.s.developer_encrypt_old ); - printf( "new dev. encrypt: 0x%02x -> 0x00x\n", rh.s.exFlags.developer_encrypt ); - rh.s.developer_encrypt_old = 0x1; - rh.s.exFlags.developer_encrypt = 0x0; - } - - if( pContext->bVerFlag ) - { - printf( "ROM version: 0x%02x -> 0x%02x\n", rh.s.rom_version, pContext->verNum ); - rh.s.rom_version = pContext->verNum; - } - - if( pContext->bMROM ) - { - if( rh.s.platform_code != 0x00 ) - { - printf( "ERROR: This option is only for NTR Limited." ); - return FALSE; - } - //if( (rh.s.game_cmd_param & CARD_LATENCY_MASK) != CARD_MROM_GAME_LATENCY ) - //{ - // printf( "ERROR: This option is only for MROM Setting" ); - // return FALSE; - //} - SetRomSpeedByIndex( &rh, ONETROM ); - printf( "ROM Speed Type: **** -> 1TROM\n" ); - } - - if( pContext->bDebugger ) - { - if( rh.s.disable_debug == 0 ) - { - rh.s.disable_debug = 0x1; - printf( "Debugger analysis: Enable -> Disable\n" ); - } - else - { - printf( "Debugger analysis: Originally Disable\n" ); - } - } - - if( pContext->bCheckCard ) - { - if( rh.s.inspect_card == 0 ) - { - rh.s.inspect_card = 0x1; - printf( "Check Card Flag: Disable -> Enable\n" ); - } - else - { - printf( "Check Card Flag: Originally Enable\n" ); - } - } - } - - // ƒwƒbƒ_CRCŒvŽZ - rh.s.header_crc16 = CalcCRC16( CRC16_INIT_VALUE, (u8*)&rh, CALC_CRC16_SIZE ); - - // –¼ - if( !(pContext->bMROM) && !(pContext->bNTR) ) // NTRê—pƒIƒvƒVƒ‡ƒ“‚̂Ƃ«‚Í–¼‚µ‚È‚¢ - { - if( !SignRomHeader( &rh ) ) - { - return FALSE; - } - } - else - { - printf( "skip sign\n" ); - } - - // ƒtƒ@ƒCƒ‹‚ðƒRƒs‚é - fseek( pContext->ifp, 0, SEEK_END ); - size = ftell( pContext->ifp ); - fseek( pContext->ifp, 0, SEEK_SET ); - fseek( pContext->ofp, 0, SEEK_SET ); - while( size > 0 ) - { - int len = (BUFSIZE < size)?BUFSIZE:size; - - if( len != fread( buf, 1, len, pContext->ifp ) ) - { - printf( "fread failed in a copying file\n" ); - return FALSE; - } - if( len != fwrite( buf, 1, len, pContext->ofp ) ) - { - printf( "fwrite failed in a copying file\n" ); - return FALSE; - } - - size -= len; - } - - // ROMƒwƒbƒ_‚ðã‘‚« - fseek( pContext->ofp, 0, SEEK_SET ); - if( sizeof(ROM_Header) != fwrite( &rh, 1, sizeof(ROM_Header), pContext->ofp ) ) - { - printf( "fwrite failed in a copying file\n" ); - return FALSE; - } - - return TRUE; -} - -/*---------------------------------------------------------------------------* - - CRC‚ÌŒvŽZ - - *---------------------------------------------------------------------------*/ - -static u16 crc16_table[16] = { - 0x0000, 0xCC01, 0xD801, 0x1400, - 0xF001, 0x3C00, 0x2800, 0xE401, - 0xA001, 0x6C00, 0x7800, 0xB401, - 0x5000, 0x9C01, 0x8801, 0x4400 -}; - -u16 CalcCRC16(u16 start, u8 *data, int size) -{ - u16 r1; - u16 total = start; - - while (size-- > 0) - { - // ‰ºˆÊ4bit - r1 = crc16_table[total & 0xf]; - total = (total >> 4) & 0x0fff; - total = total ^ r1 ^ crc16_table[*data & 0xf]; - - // ãˆÊ4bit - r1 = crc16_table[total & 0xf]; - total = (total >> 4) & 0x0fff; - total = total ^ r1 ^ crc16_table[(*data >> 4) & 0xf]; - - data++; - } - return total; -} - - -/*---------------------------------------------------------------------------* - - ROMƒwƒbƒ_‚Ì–¼ - - *---------------------------------------------------------------------------*/ - -BOOL SignRomHeader( ROM_Header *prh ) -{ - SignatureData signSrc; // –¼‚Ì‚à‚Æ‚ƂȂéƒ_ƒCƒWƒFƒXƒg’l - u8 signDst[ RSA_KEY_LENGTH ]; // –¼‚ÌŠi”[æTmpƒoƒbƒtƒ@ - u8 decryptBlock[ RSA_KEY_LENGTH ]; // –¼‚ð‰ðœŒãƒuƒƒbƒNƒoƒbƒtƒ@ - BOOL result; - int pos; - - // ROMƒwƒbƒ_‚̃_ƒCƒWƒFƒXƒg‚ðŽZo(擪‚©‚çØ–¾‘—̈æ‚Ì’¼‘O‚܂łª‘ÎÛ) - ACSign_DigestUnit( - signSrc.digest, - prh, - (u32)&(prh->certificate) - (u32)prh // this->pRomHeader ‚̓}ƒl[ƒWƒq[ƒvã‚É‚ ‚é‚̂ŎÀƒAƒhƒŒƒX‚ðŽæ“¾‚Å‚«‚È‚¢ - ); - -#ifdef KEY_USER - printf( "Signature Key: USER\n" ); -#endif -#ifdef KEY_SYSTEM - printf( "Signature Key: SYSTEM\n" ); -#endif -#ifdef KEY_SECURE - printf( "Signature Key: SECURE\n" ); -#endif -#ifdef KEY_LAUNCHER - printf( "Signature Key: LAUNCHER\n" ); -#endif - - // ƒ_ƒCƒWƒFƒXƒg‚É–¼‚ð‚©‚¯‚é - result = ACSign_Encrypto( signDst, g_devPrivKey_DER, &signSrc, sizeof(SignatureData) ); - if( !result ) - { - printf( "ACSign_Encrypto encryption failed.\n" ); - return FALSE; - } - - // –¼‚ð‰ðœ‚µ‚ă_ƒCƒWƒFƒXƒg‚ƈê’v‚·‚é‚©ƒxƒŠƒtƒ@ƒC‚·‚é - result = ACSign_Decrypto( decryptBlock, g_devPubKey_DER, signDst, RSA_KEY_LENGTH ); - for( pos=0; pos < RSA_KEY_LENGTH; pos++ ) - { - if( decryptBlock[pos] == 0x0 ) // ‰ðœŒãƒuƒƒbƒN‚©‚çŽÀƒf[ƒ^‚ðƒT[ƒ` - break; - } - if( !result || (memcmp( &signSrc, &(decryptBlock[pos+1]), sizeof(SignatureData) ) != 0) ) - { - printf( "Verification a signature failed.\n" ); - return FALSE; - } - - // ROMƒwƒbƒ_‚É–¼‚ðã‘‚« - memcpy( prh->signature, signDst, RSA_KEY_LENGTH ); - - return TRUE; -} // ECSrlResult RCSrl::signRomHeader(void) - - -/*---------------------------------------------------------------------------* - - ROM Speed Type‚ÌÝ’è - - *---------------------------------------------------------------------------*/ - -static ROM_LT romSpeedTypeLatencyTable[] = { - {CARD_1TROM_GAME_LATENCY, CARD_1TROM_SECURE_HW_LATENCY, CARD_1TROM_SECURE_SW_LATENCY}, - {CARD_MROM_GAME_LATENCY, CARD_MROM_SECURE_HW_LATENCY, CARD_MROM_SECURE_SW_LATENCY}, -}; - -static void SetRomSpeedByIndex(ROM_Header * header, tRomSpeedType idx) -{ - ROM_LT *l = &romSpeedTypeLatencyTable[idx]; - - header->s.game_cmd_param &= ~CARD_LATENCY_MASK; - header->s.game_cmd_param |= l->game_latency; - header->s.secure_cmd_param &= ~CARD_LATENCY_MASK; - header->s.secure_cmd_param |= l->secure_hw_latency; - header->s.secure_cmd_latency = l->secure_sw_latency; -} - - -// end of file diff --git a/build/tests/FatalErrorChecker/ARM9/Makefile b/build/tests/FatalErrorChecker/ARM9/Makefile deleted file mode 100644 index 12e304a0..00000000 --- a/build/tests/FatalErrorChecker/ARM9/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - FatalErrorChecker -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE - -SUBDIRS = - -SRCS = main.c \ - keypad.c \ - kami_font.c \ - graphics.c \ - font_data.c - -LINCLUDES += $(MISC_DIR)/include - -ROM_SPEC = main.rsf - -TARGET_BIN = menu.srl - -LLIBRARIES += liberrorlog$(TWL_LIBSUFFIX).a - -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe -DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorChecker/ARM9/main.rsf b/build/tests/FatalErrorChecker/ARM9/main.rsf deleted file mode 100644 index f0fc5c0f..00000000 --- a/build/tests/FatalErrorChecker/ARM9/main.rsf +++ /dev/null @@ -1,245 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "FatalChecker" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile ../banner/banner.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - LockSCFG FALSE - - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media gamecard - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 0G6A - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/FatalErrorChecker/ARM9/src/font_data.c b/build/tests/FatalErrorChecker/ARM9/src/font_data.c deleted file mode 100644 index aa1ba501..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/font_data.c +++ /dev/null @@ -1,734 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: font_data.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include - -/*---------------------- ‚a‚fƒXƒNƒŠ[ƒ“ ---------------------------*/ - -const u16 BgScDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -const u16 BgScDataSub[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -/*---------------------- ƒpƒŒƒbƒgƒf[ƒ^ ---------------------------*/ -#define RGB555(r,g,b) (b<<10|g<<5|r) - -const u16 PlttDataObj[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(31, 0, 0), RGB555(5, 5, 20),}, // Black - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White -}; - -// ã‰æ–ʃRƒ“ƒ\[ƒ‹•¶Žš—ñƒpƒŒƒbƒg -const u16 PlttDataMain[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Orange - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555( 0, 0, 0), RGB555(0, 0, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Black -}; - -// ‰º‰æ–ʃRƒ“ƒ\[ƒ‹•¶Žš—ñƒpƒŒƒbƒg -const u16 PlttDataSub[16][16] = { - {RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(25, 25, 25), RGB555(31, 31, 31),}, // Black - {RGB555(31, 31, 31), RGB555(21, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555( 0, 21, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555( 0, 0, 21), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(21, 21, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 21, 21), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(21, 0, 21), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(20, 20, 20), RGB555(20, 20, 20), RGB555(20, 20, 20),}, // Gray - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - - // ”wŒiƒJƒ‰[‚Í‚±‚Ì16”ÔƒpƒŒƒbƒg - // ”’ • ŠD ‚ނ炳‚« ƒsƒ“ƒN ‚Ý‚¸‚¢‚ë —Î ÂŽ‡ Ô ‰© ’ƒ - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(20, 20, 20), RGB555(31, 15, 31), RGB555(31, 20, 20), RGB555(20, 29, 31), RGB555(20, 31, 20), RGB555(21, 21, 31), RGB555(31, 0, 0), RGB555(31, 31, 10), RGB555(25, 15, 15), RGB555(31, 31, 31), RGB555(31, 31, 31), } // White -}; - -/*---------------------- ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^ -------------------------*/ - -const u32 sampleCharData[8 * 0x100] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x11111111, 0x11111111, // 0001h use for import progress bar - 0x11111111, 0x11111111, 0x00000000, 0x00000000, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh 0 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh 1 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h 2 - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h 3 - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h 4 - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h 5 - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h 6 - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h 7 - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h 8 - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h 9 - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h 10 - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h 11 - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah 12 - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh 13 - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech 14 - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh 15 - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh 16 - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh 17 - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h 18 - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h 19 - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h 20 - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h 21 - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h 22 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h 23 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - - 0x33330000, - 0x33330000, - 0x33000000, - 0x33000000, // 00f6h - 0x33000000, - 0x33000000, - 0x33330000, - 0x33330000, - - - 0x00020000, // 00f7h - 0x00020000, - 0x00020000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00f8h - 0x00000000, - 0x00000000, - 0x00000000, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00f9h - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00fah - 0x11111111, - 0x11111111, - 0x11111111, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00fbh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fch - 0x00020000, - 0x00020000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fdh - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00000000, // 00feh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00020000, - 0x00220000, - 0x02122222, - 0x21111112, - 0x21111112, - 0x02122222, - 0x00220000, - 0x00020000, - - - -/* - 0x00022222, - 0x00002112, - 0x00021112, - 0x00211122, - 0x02111202, - 0x21112000, - 0x02120000, - 0x00200000, -*/ - -/* - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -*/ -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/FatalErrorChecker/ARM9/src/graphics.c b/build/tests/FatalErrorChecker/ARM9/src/graphics.c deleted file mode 100644 index 1de138e9..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/graphics.c +++ /dev/null @@ -1,160 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: praphics.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -//#include -#include -#include "kami_font.h" -#include "graphics.h" - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitGraphics - - Description: •\ަ‚̉Šú‰»ˆ— - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void -InitGraphics(void) -{ - GX_DispOff(); - GXS_DispOff(); - - //---- VRAM ƒNƒŠƒA - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - - //---- OAM‚ƃpƒŒƒbƒgƒNƒŠƒA - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- ‚n‚a‚iƒoƒ“ƒN‚ÌÝ’è - GX_SetBankForOBJ(GX_VRAM_OBJ_128_A); - GX_SetBankForSubOBJ(GX_VRAM_SUB_OBJ_128_D); - - //---- ‚a‚fƒoƒ“ƒN‚ÌÝ’è - GX_SetBankForBG(GX_VRAM_BG_128_B); - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - //---- •\ަƒ‚[ƒhÝ’è - GX_SetGraphicsMode (GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_3D); - GX_SetVisiblePlane (GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - - //---- 3D‰Šú‰» - G3X_Init(); - G3X_InitMtxStack(); - G2_SetBG0Priority(0); - G3X_AlphaTest(FALSE, 0); - G3X_AntiAlias(TRUE); - G3X_EdgeMarking(FALSE); - G3X_SetFog(FALSE, (GXFogBlend)0, (GXFogSlope)0, 0); - G3X_SetClearColor(0, 0, 0x7fff, 63, FALSE); - G3_ViewPort(0, 0, 255, 191); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - - //---- 32KƒoƒCƒg‚ÌOBJ‚Å2Dƒ}ƒbƒvƒ‚[ƒh‚ÅŽg—p - GX_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_2D); - - // ƒXƒNƒŠ[ƒ“ƒIƒtƒZƒbƒg‹y‚уLƒƒƒ‰ƒNƒ^[ƒIƒtƒZƒbƒg‚ÌÝ’è - GX_SetBGScrOffset(GX_BGSCROFFSET_0x00000); - GX_SetBGCharOffset(GX_BGCHAROFFSET_0x10000); - - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x00000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x2000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2_BG1Mosaic(FALSE); - G2S_BG1Mosaic(FALSE); - - //---- ƒf[ƒ^ƒ[ƒh - GX_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBG1Char( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBGPltt ( PlttDataMain, 0, sizeof(PlttDataMain)); - GX_LoadBG1Scr ( BgScDataMain, 0, sizeof(BgScDataMain)); - GX_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GXS_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBG0Char( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBGPltt ( PlttDataSub, 0, sizeof(PlttDataSub)); - GXS_LoadBG0Scr ( BgScDataSub, 0, sizeof(BgScDataSub)); - GXS_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GX_DispOn(); - GXS_DispOn(); -} - -/*---------------------------------------------------------------------------* - Name: DrawLine - - Description: ŽOŠpƒ|ƒŠƒSƒ“‚Åü‚ð•`‰æ - - Arguments: sx - •`‰æ‚·‚éü‚ÌŠJŽn“_‚Ì‚˜À•W - sy - •`‰æ‚·‚éü‚ÌŠJŽn“_‚Ì‚™À•W - ex - •`‰æ‚·‚éü‚ÌI“_‚Ì‚˜À•W - ey - •`‰æ‚·‚éü‚ÌI“_‚Ì‚™À•W - color - •`‰æ‚·‚éü‚ÌF - - Returns: None. - *---------------------------------------------------------------------------*/ -void -DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color) -{ - fx16 fsx = (fx16)(((sx - 128) * 0x1000) / 128); - fx16 fsy = (fx16)(((96 - sy) * 0x1000) / 96); - fx16 fex = (fx16)(((ex - 128) * 0x1000) / 128); - fx16 fey = (fx16)(((96 - ey) * 0x1000) / 96); - - G3_Begin(GX_BEGIN_TRIANGLES); - { - G3_Color( color ); - G3_Vtx(fsx, fsy, 0); - G3_Color( color ); - G3_Vtx(fex, fey, 0); - G3_Color( color ); - G3_Vtx(fsx, fsy, 1); - } - G3_End(); -} diff --git a/build/tests/FatalErrorChecker/ARM9/src/graphics.h b/build/tests/FatalErrorChecker/ARM9/src/graphics.h deleted file mode 100644 index ddd8c4f6..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/graphics.h +++ /dev/null @@ -1,46 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: graphics.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef GRAPHICS_H_ -#define GRAPHICS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -void InitGraphics(void); -void DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* GRAPHICS_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/FatalErrorChecker/ARM9/src/kami_font.c b/build/tests/FatalErrorChecker/ARM9/src/kami_font.c deleted file mode 100644 index fb3818b6..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/kami_font.c +++ /dev/null @@ -1,407 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "kami_font.h" - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define SCREEN_DATA_COLOR_PLTT_SHIFT 12 -#define NUM_OF_PRINT_TARGET 2 - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static u8 sXPos; -static u8 sYPos; - -static u32 sBackColorCharData[24*8]; - -static u16 sFontScreenDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sFontScreenDataSub[24*32] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sBackColorScreenData[32 * 24] = { - 0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de, - 0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df, - 0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0, - 0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1, - 0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2, - 0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3, - 0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4, - 0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5, - 0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6, - 0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7, - 0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8, - 0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9, - 0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea, - 0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb, - 0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec, - 0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed, - 0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee, - 0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef, - 0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0, - 0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1, - 0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2, - 0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3, - 0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4, - 0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5, -}; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”錾 - *---------------------------------------------------------------------------*/ - -static void kamiFontReturnConsole( void ); - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontInit(void) -{ - // ”wŒi—pƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^ - MI_CpuCopy32( &sampleCharData[8 * 0xde], sBackColorCharData, sizeof(sBackColorCharData) ); - - // ”wŒi—pƒXƒNƒŠ[ƒ“ƒf[ƒ^ƒZƒbƒg - DC_FlushRange ( sBackColorScreenData, sizeof(sBackColorScreenData) ); - GXS_LoadBG1Scr ( sBackColorScreenData, 0, sizeof(sBackColorScreenData) ); -} - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontLoadScreenData(void) -{ - DC_FlushRange ( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); - GX_LoadBG0Scr ( sFontScreenDataMain, 0, sizeof(sFontScreenDataMain) ); - - DC_FlushRange ( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); - GXS_LoadBG0Scr ( sFontScreenDataSub, 0, sizeof(sFontScreenDataSub) ); - - // ”wŒiƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‘‚«Š·‚¦ - DC_FlushRange( sBackColorCharData, sizeof(sBackColorCharData) ); - GXS_LoadBG0Char( sBackColorCharData, 0xde*32, sizeof(sBackColorCharData) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClear - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚ðƒNƒŠƒA‚·‚é - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClear(void) -{ - MI_CpuClear8( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClearMain - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚ðƒNƒŠƒA‚·‚é - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClearMain(void) -{ - MI_CpuClear8( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í32•¶Žš‚Ü‚ÅB - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataSub[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í32•¶Žš‚Ü‚ÅB - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataMain[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontFillChar - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - value - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontFillChar(int lineNo, u8 color1, u8 color2) -{ - s32 i; - u32 line; - int charNo = 0xde + lineNo; - - if (color1 < 0x10) - { - line = (u32)(0x11111111 * color1); - - for (i = 0;i<4; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } - - if (color2 < 0x10) - { - line = (u32)(0x11111111 * color2); - - for (i = 4;i<8; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsole - - Description: ‰¼‘zƒRƒ“ƒ\[ƒ‹‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í256•¶Žš‚Ü‚ÅB - - Arguments: color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsole(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - // I’[’ljÁ - *(u16 *)(&temp[256]) = 0x0000; - - for(i=0; temp[i] != 0x00; i++) - { - if (temp[i] == 0x0A) - { - // ‰üsƒR[ƒh - kamiFontReturnConsole(); - } - else - { - // ˆê•¶Žš‚¸‚‘‚«ž‚Ý - sFontScreenDataMain[((sYPos * 32) + sXPos) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - - // XÀ•W‚ª‰E’[‚É“ž’B‚µ‚½ê‡‚͉üsˆ— - if (++sXPos >= 32) - { - kamiFontReturnConsole(); - } - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsoleEx - - Description: ‰¼‘zƒRƒ“ƒ\[ƒ‹‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í256•¶Žš‚Ü‚ÅB - OS_Printf‚à‚‚¢‚łɎÀs‚·‚éB - - Arguments: color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsoleEx(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - kamiFontPrintfConsole(color, temp); - OS_TPrintf(temp); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontReturnConsole - - Description: ‰¼‘zƒRƒ“ƒ\[ƒ‹‚É‚¨‚¯‚é‰üsˆ—‚ðs‚¤ - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -kamiFontReturnConsole( void ) -{ - sXPos = 0; - if (sYPos < 23) - { - // ŽŸ‚Ìs‚Ö - sYPos++; - } - else - { - // Šù‚ÉÅIs‚É“ž’B‚µ‚Ä‚¢‚éꇃVƒtƒg‚ðs‚¤ - MI_CpuCopy32( &sFontScreenDataMain[32], sFontScreenDataMain, sizeof(u16)*32*23 ); - MI_CpuClear32( &sFontScreenDataMain[32*23], sizeof(u16)*32); - } -} - diff --git a/build/tests/FatalErrorChecker/ARM9/src/kami_font.h b/build/tests/FatalErrorChecker/ARM9/src/kami_font.h deleted file mode 100644 index d9855fd0..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/kami_font.h +++ /dev/null @@ -1,95 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef KAMI_FONT_H_ -#define KAMI_FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern u8 prog_state; -enum -{ STATE_NONE, STATE_SELECT, STATE_KS_PARENTINIT, STATE_KS_PARENT, STATE_KS_CHILDINIT, - STATE_KS_CHILDSCAN, STATE_KS_CHILD -}; -extern OSHeapHandle heapHandle; // Heapƒnƒ“ƒhƒ‹; - -extern const u16 BgScDataMain[32 * 24]; -extern const u16 BgScDataSub[32 * 24]; -extern const u32 sampleCharData[8 * 0x100]; -extern const u16 PlttDataObj[16][16]; -extern const u16 PlttDataMain[16][16]; -extern const u16 PlttDataSub[16][16]; - -void kamiFontInit(void); -void kamiFontClear(void); -void kamiFontClearMain(void); -void kamiFontPut(u16 x, u16 y, u16 color, u16 no); -void kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontFill(s16 x, s16 y, u8 color, s16 value, s32 length); -void kamiFontFillChar(int lineNo, u8 color1, u8 color2); -void kamiFontLoadScreenData(void); -void kamiFontPrintfConsole(u8 color, const char *text, ...); -void kamiFontPrintfConsoleEx(u8 color, const char *text, ...); - -// ã‰æ–ʃRƒ“ƒ\[ƒ‹•¶Žš—ñ—pƒpƒŒƒbƒg -#define CONSOLE_ORANGE 0 -#define CONSOLE_RED 1 -#define CONSOLE_GREEN 2 - -// ‰º‰æ–ʃtƒHƒ“ƒg—pƒpƒŒƒbƒg -#define FONT_COLOR_BLACK 0 -#define FONT_COLOR_RED 1 -#define FONT_COLOR_GREEN 2 -#define FONT_COLOR_BLUE 3 -#define FONT_COLOR_YELLOW 4 -#define FONT_COLOR_CYAN 5 -#define FONT_COLOR_PURPLE 6 - -// ‰º‰æ–Ê”wŒi—pƒpƒŒƒbƒg -#define BG_COLOR_TRANS 0 -#define BG_COLOR_WHITE 1 -#define BG_COLOR_BLACK 2 -#define BG_COLOR_GRAY 3 -#define BG_COLOR_PURPLE 4 -#define BG_COLOR_PINK 5 -#define BG_COLOR_BLUE 6 -#define BG_COLOR_GREEN 7 -#define BG_COLOR_VIOLET 8 -#define BG_COLOR_RED 9 -#define BG_COLOR_YELLOW 10 -#define BG_COLOR_BROWN 11 - -#define BG_COLOR_NONE 0xff - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/FatalErrorChecker/ARM9/src/keypad.c b/build/tests/FatalErrorChecker/ARM9/src/keypad.c deleted file mode 100644 index 155c4bc2..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/keypad.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "keypad.h" - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_TRIGGER_START 20 -#define KEY_REPEAT_TRIGGER_TERM 5 - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static u16 Cont; -static u16 Trg; -static u16 Release; -static u16 RepeatTrg; -static u8 key = 60; - -static int repeat_counter; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -void -kamiPadRead(void) -{ - u16 ReadData; - - ReadData = PAD_Read(); - Trg = (u16)(ReadData & (ReadData ^ Cont)); - Release = (u16)(Cont & (ReadData ^ Cont)); - Cont = ReadData; - - RepeatTrg = Trg; - if (++repeat_counter > (KEY_REPEAT_TRIGGER_START + KEY_REPEAT_TRIGGER_TERM)) - { - repeat_counter = KEY_REPEAT_TRIGGER_START; - } - if (repeat_counter == KEY_REPEAT_TRIGGER_START) - { - RepeatTrg = ReadData; - } - if (!ReadData) - { - repeat_counter = 0; - } -} - -BOOL -kamiPadIsTrigger(u16 key) -{ - return (Trg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsRepeatTrigger(u16 key) -{ - return (RepeatTrg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsPress(u16 key) -{ - return (Cont & key)? TRUE : FALSE; -} - diff --git a/build/tests/FatalErrorChecker/ARM9/src/keypad.h b/build/tests/FatalErrorChecker/ARM9/src/keypad.h deleted file mode 100644 index 2f5a1602..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/keypad.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef KAMI_KEY_PAD_H_ -#define KAMI_KEY_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -void kamiPadRead(void); -BOOL kamiPadIsTrigger(u16 key); -BOOL kamiPadIsRepeatTrigger(u16 key); -BOOL kamiPadIsPress(u16 key); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_KEY_PAD_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/FatalErrorChecker/ARM9/src/main.c b/build/tests/FatalErrorChecker/ARM9/src/main.c deleted file mode 100644 index df65d888..00000000 --- a/build/tests/FatalErrorChecker/ARM9/src/main.c +++ /dev/null @@ -1,652 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - Tests - FatalErrorChecker - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "kami_font.h" -#include "graphics.h" -#include "keypad.h" - -#define BUFSIZE 256 - -#define FATAL_ERROR_MAX 51 -#define NUM_ENTRY_PER_PAGE 5 -#define NUM_LINE_PER_ENTRY 4 -#define SKIP_SPAN 5 -#define FOOTER_Y 22 - -#define ASK_LINE_OFFSET 9 -#define RESULT_LINE_OFFSET 13 - -#define SCREEN_WIDTH 32 - -#define DST_LOGFILE_PATH "sdmc:/sysmenu.log" -#define ERRORLOG_LOGFILE_PATH "nand:/sys/log/sysmenu.log" - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ -static char *s_strError[ FATAL_ERROR_MAX ]; -static BOOL nowEntryView; -static BOOL nowAskingCopy; -static BOOL nowAskingDelete; -static BOOL resetConsoleFlag; -static int drawIndex = 0; -static int numEntry; -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void VBlankIntr(void); -static void InitAllocation(void); -static void drawErrorLog( void ); -static BOOL deleteLogfile(); -static void control(); -static void removeLC( char *dst, const char *src ); -static void drawMessage( void ); -static void kamiFontPrintfWrap( s16 x, s16 y, u8 color, char *fmt, ... ); -static s16 kamiFontPrintfWrapSub( s16 x, s16 y, u8 color, char *str ); -static BOOL copyLogToSD( void ); -int convertLF( char *dst, char *src ); -static void drawMenu( void ); -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void -TwlMain() -{ - char tst[] = "\n\n\n\n\na"; - - OS_Init(); - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitArenaEx(); - OS_InitIrqTable(); - OS_SetIrqStackChecker(); - MI_Init(); - OSi_InitVramExclusive(); - OS_InitThread(); - OS_InitReset(); - GX_Init(); - - - // Vƒuƒ‰ƒ“ƒNŠ„‚èž‚ÝÝ’è - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)OS_EnableIrqMask(OS_IE_FIFO_RECV); - (void)OS_EnableIrq(); - (void)GX_VBlankIntr(TRUE); - - // initialize file-system - FS_Init(FS_DMA_NOT_USE); - - // FS_Init‚ÌŒã‚Ì•û‚ª—Ç‚¢–Í—l - InitAllocation(); - - // •\ަŠÖ˜A‰Šú‰» - InitGraphics(); - kamiFontInit(); - - /* always preload FS table for faster directory access. */ - { - u32 need_size = FS_GetTableSize(); - void *p_table = OS_Alloc(need_size); - SDK_ASSERT(p_table != NULL); - (void)FS_LoadTable(p_table, need_size); - } - - ERRORLOG_Init( OS_AllocFromMain, OS_FreeToMain ); - - numEntry = ERRORLOG_GetNum(); - nowEntryView = FALSE; - nowAskingCopy = FALSE; - nowAskingDelete = FALSE; - resetConsoleFlag = TRUE; - - while (1) - { - static i = 0 ; - kamiPadRead(); - - // Vƒuƒ‰ƒ“ƒN‘Ò‚¿ - OS_WaitVBlankIntr(); - - // ƒtƒHƒ“ƒgƒXƒNƒŠ[ƒ“ƒf[ƒ^ƒ[ƒh - kamiFontLoadScreenData(); - - if( resetConsoleFlag ) - { - drawMenu(); - resetConsoleFlag = FALSE; - } - - // ‘€ìŒŸo‚Æ•`‰æ - control(); - - if( nowEntryView ) - { - drawMessage(); - } - else - { - drawErrorLog(); - } - - } - -} - -static void drawMessage( void ) -{ - char titlebuf[5]; - const ErrorLogEntry *entry = ERRORLOG_Read( drawIndex ); - kamiFontClear(); - - if( entry->isBroken ) - { - kamiFontPrintf( 0, 0 , FONT_COLOR_BLACK, "%02d: Broken Entry", drawIndex); - - kamiFontPrintfWrap( 0, 2, FONT_COLOR_BLACK, "%s\n" ,entry->errorStr ); - - } - else if( entry->isLauncherError ) - { - STD_CopyLStringZeroFill( titlebuf, (char*)&entry->titleId, 5); - - kamiFontPrintf( 0, 0, FONT_COLOR_BLACK, "%02d: RED %02d/%02d/%02d %02d:%02d:%02d" , - drawIndex , entry->year, entry->month, entry->day, - entry->hour, entry->minute, entry->second ); - - kamiFontPrintf( 0, 1, FONT_COLOR_BLACK, "titleID: %s errorCode: %d", - titlebuf, entry->errorCode ); - - kamiFontPrintfWrap( 0, 3, FONT_COLOR_BLACK, s_strError[entry->errorCode] ); - - } - else{ - STD_CopyLStringZeroFill( titlebuf, (char*)&entry->titleId, 5); - - kamiFontPrintf( 0, 0 , FONT_COLOR_BLACK, "%02d: FFT %02d/%02d/%02d %02d:%02d:%02d" , - drawIndex , entry->year, entry->month, entry->day, - entry->hour, entry->minute, entry->second ); - - kamiFontPrintf( 0, 1, FONT_COLOR_BLACK, "titleID: %s", titlebuf ); - - kamiFontPrintfWrap( 0, 3, FONT_COLOR_BLACK, entry->errorStr ); - - } - -} - -static void drawErrorLog( void ) -{ - char titlebuf[5]; - s16 i; - - kamiFontClear(); - - for( i = 0; i < NUM_ENTRY_PER_PAGE && i+drawIndex < numEntry ; i++ ) - { - u8 color = (i == 0) ? (u8)FONT_COLOR_BLUE : (u8)FONT_COLOR_BLACK; - s16 posY = (s16)(i * NUM_LINE_PER_ENTRY); - const ErrorLogEntry *entry = ERRORLOG_Read( i + drawIndex ); - char drawBuf[256 + 1]; - - if( entry->isBroken ) - { -// kamiFontPrintf( 0, posY , color, "%02d: Broken Entry", i + drawIndex); - kamiFontPrintf( 0, posY , color, "%02d: Broken Entry", i + drawIndex); - - // ‰üs‚ðŽæ‚èœ‚¢‚Ä‚©‚ç•\ަ - removeLC( drawBuf, entry->errorStr ); - kamiFontPrintf( 0, (s16)( posY + 1), color, drawBuf ); - - } - else if( entry->isLauncherError ) - { - STD_CopyLStringZeroFill( titlebuf, (char*)&entry->titleId, 5); - - kamiFontPrintf( 0, posY , color, "%02d: RED %02d/%02d/%02d %02d:%02d:%02d" , - i + drawIndex , entry->year, entry->month, entry->day, - entry->hour, entry->minute, entry->second ); - - kamiFontPrintf( 0, (s16)( posY + 1), color, "titleID: %s errorCode: %d", - titlebuf, entry->errorCode ); - - kamiFontPrintf( 0, (s16)( posY + 2), color, s_strError[entry->errorCode] ); - } - else{ - STD_CopyLStringZeroFill( titlebuf, (char*)&entry->titleId, 5); - - kamiFontPrintf( 0, posY , color, "%02d: FFT %02d/%02d/%02d %02d:%02d:%02d" , - i + drawIndex , entry->year, entry->month, entry->day, - entry->hour, entry->minute, entry->second ); - - kamiFontPrintf( 0, (s16)( posY + 1), color, "titleID: %s", titlebuf ); - - // ‰üs‚ðŽæ‚èœ‚¢‚Ä‚©‚ç•\ަ - removeLC( drawBuf, entry->errorStr ); - kamiFontPrintf( 0, (s16)( posY + 2), color, drawBuf ); - - } - } - - kamiFontPrintf( 0, FOOTER_Y , FONT_COLOR_BLACK, "numEntry : %d", numEntry ); -} - -static void control() -{ - if( nowAskingCopy ) - { - // –{“–‚É‚â‚é‚ÌH‚Á‚Ä•·‚¢‚Ä‚éÅ’† - if( kamiPadIsTrigger( PAD_BUTTON_A )) - { - BOOL result; - kamiFontPrintfMain( 0, ASK_LINE_OFFSET+2, CONSOLE_ORANGE, "now copying..."); - result = copyLogToSD(); - nowAskingCopy = FALSE; - } - - if( kamiPadIsTrigger( PAD_BUTTON_B )) - { - drawMenu(); - nowAskingCopy = FALSE; - } - - return; - } - - if( nowAskingDelete ) - { - // –{“–‚É‚â‚é‚ÌH‚Á‚Ä•·‚¢‚Ä‚éÅ’† - if( kamiPadIsTrigger( PAD_BUTTON_A )) - { - BOOL result; - kamiFontPrintfMain( 0, ASK_LINE_OFFSET+2, CONSOLE_ORANGE, "now deleting..."); - result = deleteLogfile(); - nowAskingDelete = FALSE; - } - - if( kamiPadIsTrigger( PAD_BUTTON_B )) - { - drawMenu(); - nowAskingDelete = FALSE; - } - - return; - } - - if( kamiPadIsTrigger( PAD_KEY_UP ) ) - { - drawIndex--; - } - else if( kamiPadIsTrigger( PAD_KEY_DOWN ) ) - { - drawIndex++; - } - - if( kamiPadIsTrigger( PAD_KEY_LEFT ) ) - { - drawIndex -= SKIP_SPAN; - } - else if( kamiPadIsTrigger( PAD_KEY_RIGHT ) ) - { - drawIndex += SKIP_SPAN; - } - - if( kamiPadIsTrigger( PAD_BUTTON_A ) ) - { - if( 0 < numEntry ) - { - nowEntryView = !nowEntryView ; - } - } - else if( kamiPadIsTrigger( PAD_BUTTON_X ) ) - { - drawMenu(); - kamiFontPrintfMain( 0, ASK_LINE_OFFSET, CONSOLE_ORANGE, "Copy Logfile to SD. OK ?"); - kamiFontPrintfMain( 0, ASK_LINE_OFFSET + 1, CONSOLE_ORANGE, "A: Decide B: Cancel"); - - nowAskingCopy = TRUE; - } - else if ( kamiPadIsTrigger( PAD_BUTTON_Y ) ) - { - drawMenu(); - kamiFontPrintfMain( 0, ASK_LINE_OFFSET, CONSOLE_ORANGE, "Delete Logfile From NAND. OK ?"); - kamiFontPrintfMain( 0, ASK_LINE_OFFSET + 1, CONSOLE_ORANGE, "A: Decide B: Cancel"); - - nowAskingDelete = TRUE; - } - - // ‘€ì‚ÌŒ‹‰ÊA•`‰æƒCƒ“ƒfƒNƒX‚ª‚Í‚Ýo‚µ‚»‚¤‚¾‚Á‚½‚çC³ - drawIndex = numEntry-1 < drawIndex ? numEntry-1 : drawIndex ; - drawIndex = drawIndex < 0 ? 0: drawIndex; -} - -// src‚©‚ç‰üs‚ðŽæ‚èœ‚¢‚Ädst‚Ɉø‚«“n‚· -static void removeLC( char *dst, const char *src ) -{ - char *idx; - STD_StrCpy( dst, src ); - - while( ( idx = STD_StrChr( dst, '\n' )) != NULL ) - { - *idx = ' '; - } -} - - -static void kamiFontPrintfWrap( s16 x, s16 y, u8 color, char *fmt, ... ) -{ - va_list vlist; - char temp[BUFSIZE + 1]; - char *head, *tail; - - va_start(vlist, fmt); - (void)vsnprintf(temp, BUFSIZE+1, fmt, vlist); - va_end(vlist); - - head = temp; - - // I’[’ljÁ - temp[BUFSIZE] = '\0'; - - // Ž©‘O‚Åctok“I‚ÈŽ–‚ð‚µ‚Ä‰üs‚ð•ÊX‚Éo—Í‚·‚é - tail = STD_StrChr( temp, '\n' ); - while( tail != NULL ) - { - *tail = '\0'; - y += kamiFontPrintfWrapSub( x, y, color, head ); - head = tail+1; - tail = STD_StrChr( head, '\n' ); - } - - kamiFontPrintfWrapSub( x, y, color, head ); -} - -// •\ަ‰Â”\•¶Žš”‚ÅŽ©“®Ü‚è•Ô‚µ -// •Ô‚è’l‚Í•`‰æ‚É—˜—p‚µ‚½s” -static s16 kamiFontPrintfWrapSub( s16 x, s16 y, u8 color, char *str ) -{ - char *head = str; - char buf[SCREEN_WIDTH+1]; - s16 linecount = 0; - int length; - - while( SCREEN_WIDTH <= ( length = STD_StrLen( head )) ) - { - STD_StrLCpy( buf, head, SCREEN_WIDTH+1 ); - kamiFontPrintf( x, (s16)(y + linecount++), color, buf ); - head += SCREEN_WIDTH; - } - - kamiFontPrintf( x, (s16)(y + linecount++), color, head ); - - return linecount; - -} - - -static BOOL deleteLogfile( void ) -{ - - if( !FS_DeleteFile( ERRORLOG_LOGFILE_PATH ) ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Delete Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_DeleteFile" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, - "errorCode : %d", FS_GetArchiveResultCode( ERRORLOG_LOGFILE_PATH ) ); - - return FALSE; - } - - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Delete Succeeded!") ; - return TRUE; -} - -static BOOL copyLogToSD( void ) -{ - FSFile src, dst; - // ň«‚œǂݞ‚ñ‚¾ƒTƒCƒY‚Ì”{‚Ì•¶Žš—ñ‚ɂȂé‰Â”\«‚ª‚ ‚é - char buf[BUFSIZE + 1]; - char winbuf[BUFSIZE*2 +1]; - s32 readSize; - s32 writeSize = 0; - - buf[256] = '\0'; - FS_InitFile( &dst ); - - // ‚Ü‚¸ƒtƒ@ƒCƒ‹‚ðíœ - FS_DeleteFile( DST_LOGFILE_PATH ); - - if( ! FS_CreateFile( DST_LOGFILE_PATH, FS_PERMIT_R | FS_PERMIT_W ) ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_CreateFile" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, "errorCode : %d", FS_GetArchiveResultCode( DST_LOGFILE_PATH ) ); - return FALSE; - } - - // ƒtƒ@ƒCƒ‹ì¬‚ɬŒ÷ - if( !FS_OpenFileEx( &dst , DST_LOGFILE_PATH, FS_FILEMODE_RW )) - { - // 쬂µ‚½ƒtƒ@ƒCƒ‹‚ðopen‚Å‚«‚È‚©‚Á‚½ê‡ - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_OpenFile / FS_SetFileLength" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, "errorCode : %d", FS_GetArchiveResultCode( DST_LOGFILE_PATH ) ); - return FALSE; - } - - // ƒTƒCƒY•ÏX‚ªI‚í‚Á‚½‚çA”O‚Ì‚½‚߃tƒ@ƒCƒ‹ƒTƒCƒY•ÏX•s‰Â‚ÈRWLƒ‚[ƒh‚ÅŠJ‚«‚È‚¨‚µ‚Ä‚¨‚­ - // ¨ƒtƒ@ƒCƒ‹ƒTƒCƒY‰Â•Ï’·‚É•ÏX - FS_CloseFile( &dst ); - - if( !FS_OpenFileEx( &dst, DST_LOGFILE_PATH, FS_FILEMODE_RW ) ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_OpenFile dst" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, "errorCode : %d", FS_GetArchiveResultCode( DST_LOGFILE_PATH ) ); - return FALSE; - } - - if( !FS_OpenFileEx( &src, ERRORLOG_LOGFILE_PATH, FS_FILEMODE_R ) ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_OpenFile src" ); - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+2, CONSOLE_ORANGE, "errorCode : %d", FS_GetArchiveResultCode( DST_LOGFILE_PATH ) ); - } - - if( !FS_SeekFileToBegin( &src )) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_SeekFileToBegin" ); - return FALSE; - } - - while( ( readSize = FS_ReadFile( &src, buf, 256 )) > 0 ) - { - int size; - size = convertLF( winbuf, buf ); - - if( FS_WriteFile( &dst, winbuf, size ) < 0 ) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_WriteFile" ); - return FALSE; - } - - } - - - if( !FS_CloseFile( &src )) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_CloseFile(src)" ); - } - - - if( !FS_CloseFile( &dst )) - { - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Failed!") ; - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET+1, CONSOLE_ORANGE, "func: FS_CloseFile(dst)" ); - } - kamiFontPrintfMain( 0, RESULT_LINE_OFFSET, CONSOLE_ORANGE, "Copy Succeeded!") ; - - return TRUE; - -} - -static void drawMenu( void ) -{ - int line = 0; - - kamiFontClearMain(); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "How to"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "+-----------------------------+"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l U/D Key : Scroll Line l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l L/R Key : Scroll Page l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l A Button : Switch View Mode l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l X Button : Copy to SDCard l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "l Y Button : Delete Logfile l"); - kamiFontPrintfMain( 0, (s16)(line++), CONSOLE_ORANGE, "+-----------------------------+"); -} - -// LF‚ðLFCR‚É’uŠ·‚µ‚Ä‘‚«–ß‚· -// dst‚Íň«Žž‚Åsrc‚Ì“ñ”{‚̗̈悪•K—v -int convertLF( char *dst, char *src ) -{ - char *head = src, *tail; - int writesize = 0; - - tail = STD_StrChr( src, '\n' ); - - while( tail != NULL ) - { - *tail = '\0'; - writesize += STD_StrLCpy( &dst[writesize], head,BUFSIZE ); - dst[writesize] = 0x0d; - dst[writesize+1] = 0x0a; - writesize += 2; - - head = tail + 1; - tail = STD_StrChr( head, '\n' ); - } - - writesize += STD_StrLCpy( &dst[writesize], head, BUFSIZE ); - - return writesize; -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: VBlankŠ„‚螂݈— - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} - -/*---------------------------------------------------------------------------* - Name: InitAllocation - - Description: ƒq[ƒv‚̉Šú‰». - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitAllocation(void) -{ - void *tmp; - OSHeapHandle hh; - - /* ƒAƒŠ[ƒi‚̉Šú‰» */ - tmp = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tmp); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - OS_Panic("ARM9: Fail to create heap...\n"); - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - - - -static char *s_strError[ FATAL_ERROR_MAX ] = { - "UNDEFINED", - "NAND", - "HWINFO_NORMAL", - "HWINFO_SECURE", - "TWLSETTINGS", - "SHARED_FONT", - "WLANFIRM_AUTH", - "WLANFIRM_LOAD", - "TITLE_LOAD_FAILED", - "TITLE_POINTER_ERROR", - "AUTHENTICATE_FAILED", - "ENTRY_ADDRESS_ERROR", - "TITLE_BOOTTYPE_ERROR", - "SIGN_DECRYPTION_FAILED", - "SIGN_COMPARE_FAILED", - "HEADER_HASH_CALC_FAILED", - "TITLEID_COMPARE_FAILED", - "VALID_SIGN_FLAG_OFF", - "CHECK_TITLE_LAUNCH_RIGHTS_FAILED", - "MODULE_HASH_CHECK_FAILED", - "MODULE_HASH_CALC_FAILED", - "MEDIA_CHECK_FAILED", - "DL_MAGICCODE_CHECK_FAILED", - "DL_SIGN_DECRYPTION_FAILED", - "DL_HASH_CALC_FAILED", - "DL_SIGN_COMPARE_FAILED", - "WHITELIST_INITDB_FAILED", - "WHITELIST_NOTFOUND", - "DHT_PHASE1_FAILED", - "DHT_PHASE2_FAILED", - "LANDING_TMP_JUMP_FLAG_OFF", - "TWL_BOOTTYPE_UNKNOWN", - "NTR_BOOTTYPE_UNKNOWN", - "PLATFORM_UNKNOWN", - "LOAD_UNFINISHED", - "LOAD_OPENFILE_FAILED", - "LOAD_MEMALLOC_FAILED", - "LOAD_SEEKFILE_FAILED", - "LOAD_READHEADER_FAILED", - "LOAD_LOGOCRC_ERROR = 39", - "LOAD_READDLSIGN_FAILED", - "LOAD_RELOCATEINFO_FAILED", - "LOAD_READMODULE_FAILED", - "NINTENDO_LOGO_CHECK_FAILED", - "SYSMENU_VERSION", - "DHT_PHASE1_CALC_FAILED", - "LOAD_UNKNOWN_BOOTTYPE", - "LOAD_AUTH_HEADER_FAILED", - "LOAD_NEVER_STARTED", - "EJECT_CARD_AFTER_LOAD_START", - "TITLEID_COMPARE_FAILED_NTR" -}; diff --git a/build/tests/FatalErrorChecker/Makefile b/build/tests/FatalErrorChecker/Makefile deleted file mode 100644 index 35985393..00000000 --- a/build/tests/FatalErrorChecker/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - - #---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorChecker/banner/Makefile b/build/tests/FatalErrorChecker/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/FatalErrorChecker/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/FatalErrorChecker/banner/banner_v3.bsf b/build/tests/FatalErrorChecker/banner/banner_v3.bsf deleted file mode 100644 index 3690eee1..00000000 Binary files a/build/tests/FatalErrorChecker/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/FatalErrorChecker/banner/icon/gameIcon.bmp b/build/tests/FatalErrorChecker/banner/icon/gameIcon.bmp deleted file mode 100644 index 1a32e5af..00000000 Binary files a/build/tests/FatalErrorChecker/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/FatalErrorMaker/ARM9/Makefile b/build/tests/FatalErrorMaker/ARM9/Makefile deleted file mode 100644 index 4144a38b..00000000 --- a/build/tests/FatalErrorMaker/ARM9/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/ARM9/Makefile.0 b/build/tests/FatalErrorMaker/ARM9/Makefile.0 deleted file mode 100644 index 3208af96..00000000 --- a/build/tests/FatalErrorMaker/ARM9/Makefile.0 +++ /dev/null @@ -1,87 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - FatalErrorMaker -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE - -SUBDIRS = - -MEDIA = NAND -GAMECODE = 012A -TARGET_BIN = FatalErrorMaker.tad -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(MEDIA) - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c fatalErrorMaker.c \ - $(MISC_DIR)/src/misc.c \ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include - -ROM_SPEC = main.rsf - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont_launcher$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -MAKEROM_FLAGS += -DFATALMAKER_GAMECODE=$(GAMECODE) \ - -DFATALMAKER_MEDIA=$(MEDIA) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - -DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/ARM9/Makefile.1 b/build/tests/FatalErrorMaker/ARM9/Makefile.1 deleted file mode 100644 index 2f3dde27..00000000 --- a/build/tests/FatalErrorMaker/ARM9/Makefile.1 +++ /dev/null @@ -1,87 +0,0 @@ -#/*---------------------------------------------------------------------------* -# Project: TwlIPL - tests - FatalErrorMaker -# File: makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -# *---------------------------------------------------------------------------*/ -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_NANDAPP = TRUE - -SUBDIRS = - -MEDIA = GameCard -GAMECODE = 0G4A -TARGET_BIN = FatalErrorMaker.srl -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(MEDIA) - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c fatalErrorMaker.c \ - $(MISC_DIR)/src/misc.c \ - $(MISC_DIR)/src/cmn.c - -LINCLUDES += $(MISC_DIR)/include - -ROM_SPEC = main.rsf - -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/rom_header_$(call toLower,$(GAMECODE)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(GAMECODE)/libsyscall.a - -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont_launcher$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - libreboot$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -MAKEROM_FLAGS += -DFATALMAKER_GAMECODE=$(GAMECODE) \ - -DFATALMAKER_MEDIA=$(MEDIA) \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - -DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/ARM9/main.rsf b/build/tests/FatalErrorMaker/ARM9/main.rsf deleted file mode 100644 index 3637e711..00000000 --- a/build/tests/FatalErrorMaker/ARM9/main.rsf +++ /dev/null @@ -1,248 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - - _GameCode $(FATALMAKER_GAMECODE) - - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "FatalMaker" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode 01 - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile ../banner/$(FATALMAKER_GAMECODE).bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - LockSCFG FALSE - - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media $(FATALMAKER_MEDIA) - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(FATALMAKER_GAMECODE) - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR - -} diff --git a/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.c b/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.c deleted file mode 100644 index c73b3cc4..00000000 --- a/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.c +++ /dev/null @@ -1,379 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - FatalErrorMaker - File: fatalErrorMaker.c - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "misc.h" -#include "fatalErrorMaker.h" - -#define NORMAL_INFO_PATH "nand:/sys/HWINFO_N.dat" -#define SECURE_INFO_PATH "nand:/sys/HWINFO_S.dat" -#define SHARED_FONT_PATH "nand:/sys/TWLFontTable.dat" -#define WIRELESS_TITLEID 0x0003000F484E4341 - -#define NOR_BUFSIZE 128 -#define NOR_SETTING_ADDRESS_OFFSET 0x20 -#define NOR_NANDFLAG_NEGATIVE_OFFSET ( 0x1fe00 - 0x1f380 ) -#define NOR_NANDFLAG_MASK 0x10 - -#define SELECT_MESSAGE "select data for breaking." -#define SUCCESS_MESSAGE "breaking data succeeded." -#define FAIL_MESSAGE "breaking data failed." -#define ALREADY_MESSAGE "this data is broken already." - -#define MENU_LINES 5 -#define INFORMATION_LEFT 20 -#define INFORMATION_UP 150 -#define SELECTION_LEFT 40 -#define RESULT_LEFT 190 -#define SELECTION_UP 30 -#define ALLOW_LEFT 25 -#define LINE_OFFSET 20 -#define HEADER_LEFT 5 -#define HEADER_UP 0 - -typedef enum FatalErrorTarget { - BREAK_HW_NORMAL = 0, - BREAK_HW_SECURE = 1, - BREAK_FONT = 2, - BREAK_WIRELESS = 3, - BREAK_NAND = 4 -} FatalErrorTarget; - - -typedef enum ControlResult { - CONTROL_RESULT_INITIAL = 0, - CONTROL_RESULT_SUCCESS = 1, - CONTROL_RESULT_FAILED = 2, - CONTROL_RESULT_ALREADY = 3, - CONTROL_RESULT_MOVE = 4, - CONTROL_RESULT_NONE = -1 -} ControlResult; - -ControlResult control( int *line, u8 *flag ); -void draw( int select, int result, int flag ); -BOOL breakNAND( void ); -BOOL breakData( FatalErrorTarget tgt ); -static void DumpBinary(u32 offset, void* data, u32 size); -void setParity( u8 *data ); - -static char* s_strInfo[4]; -static char* s_strMenu[ MENU_LINES ]; -static char* s_strFilePath[ MENU_LINES ]; - -void fatalMakerMain( void ) -{ - static int selectLine = 0; - static u8 brokenFlag = 0; // 0: NORMAL, 1: SECURE, 2: FONT, 3: WL, 4: NAND - ControlResult result ; - - result = control( &selectLine, &brokenFlag ); // “ü—Í‚ðŒÄ‚ñ‚Åó‘Ô‚ðXV - - // ‰æ–ʂ̕`‰æ - draw( selectLine, result , brokenFlag ); -} - -void draw( int select, int result, int flag ) -{ - static int lastBreakData; - static int lastStatus = CONTROL_RESULT_INITIAL; - int i; - - // ‰½‚ç‚©‚ÌŒˆ’蓮삪‚ ‚Á‚½ê‡‚ÍlastBreakData‚ðXV - if( result != CONTROL_RESULT_NONE && result != CONTROL_RESULT_MOVE ) - { - lastBreakData = select; - lastStatus = result; - } - - // ‘€ì‚ª‚ ‚Á‚½‚Æ‚«‚̓Lƒƒƒ“ƒpƒXƒNƒŠƒA - if( result != CONTROL_RESULT_NONE ) - { - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - } - - // €–Ú‚Ì—…—ñ - for( i = 0; i < MENU_LINES; i++ ) - { - if( i == select ) - { - PrintfSJIS( SELECTION_LEFT, SELECTION_UP + (i * LINE_OFFSET), TXT_COLOR_GREEN, s_strMenu[i] ); - } - else - { - PrintfSJIS( SELECTION_LEFT, SELECTION_UP + (i * LINE_OFFSET), TXT_COLOR_BLACK, s_strMenu[i] ); - } - - // ”j‰ó‚µ‚½‚©‚Ç‚¤‚©‚Ì•\ަ - if( flag & (1 << i) ) - { - PrintfSJIS( RESULT_LEFT, SELECTION_UP + (i * LINE_OFFSET), TXT_COLOR_RED, "BROKEN" ); - } - } - - PrintfSJIS( HEADER_LEFT, HEADER_UP, TXT_COLOR_RED, "Fatal Error Maker" ); - PrintfSJIS( INFORMATION_LEFT, INFORMATION_UP, TXT_COLOR_BLACK, s_strInfo[ lastStatus ] ); - PrintfSJIS( ALLOW_LEFT, SELECTION_UP + (select * LINE_OFFSET), TXT_COLOR_BLACK, "¨" ); - -} - -ControlResult control( int *line, u8 *flag ) -{ - BOOL controlFlag = FALSE; // ‰½‚ç‚©‚Ì‘€ì‚ª‚ ‚Á‚½‚©‚Ç‚¤‚©‚ðƒƒ‚‚é - - if( pad.trg & PAD_KEY_UP ) - { - controlFlag = TRUE; - - // ƒfƒNƒŠƒƒ“ƒg‚µ‚ă}ƒCƒiƒX‚ɂȂÁ‚½‚烋[ƒv - if( --*line < 0 ) - { - *line = MENU_LINES-1; - } - } - else if( pad.trg & PAD_KEY_DOWN ) - { - controlFlag = TRUE; - - // ƒCƒ“ƒNƒŠƒƒ“ƒg‚µ‚Ämax‚ð’´‚¦‚½‚烋[ƒv - if( MENU_LINES <= ++*line ) - { - *line = 0; - } - } - - if( pad.trg & PAD_BUTTON_A ) - { - controlFlag = TRUE; - - // ‘I‘ð€–Ú‚ð”j‰ó‚·‚é - if( *flag & (1 << *line) ) - { - // ƒtƒ‰ƒO‚ª—§‚Á‚Ä‚½‚çŠù‚É”j‰óς݂Ȃ̂ʼn½‚à‚µ‚È‚¢ - return CONTROL_RESULT_ALREADY; - } - - // ƒf[ƒ^‚ðŽÀÛ‚É”j‰ó‚·‚é - if( ! breakData( (FatalErrorTarget)*line ) ) - { - // ”j‰ó‚ÉŽ¸”s - return CONTROL_RESULT_FAILED; - } - - // ”j‰ó¬Œ÷ - *flag |= 1 << *line ; - return CONTROL_RESULT_SUCCESS; - } - - // “Á‚ɉ½‚à”j‰ó‚µ‚È‚¢ - return controlFlag ? CONTROL_RESULT_MOVE : CONTROL_RESULT_NONE; -} - -BOOL breakData( FatalErrorTarget tgt ) -{ - switch( tgt ) - { - case BREAK_FONT: - case BREAK_HW_NORMAL: - case BREAK_HW_SECURE: - case BREAK_WIRELESS: - // SharedFont, NormalInfo, SecureInfo‚ɂ‚¢‚Ă͊Y“–ƒpƒX‚«‚ß‚¤‚¿‚Å휂µ‚Ä‚µ‚Ü‚¤ - if( ! FS_DeleteFile( s_strFilePath[tgt] ) ) - { - OS_TPrintf( "FS_DeleteFile Error. file: %s err: %d\n" , - s_strFilePath[tgt], FS_GetArchiveResultCode( s_strFilePath[tgt] ) ); - - return FALSE; - } - - OS_TPrintf( "delete file succeeded. : %s\n", s_strFilePath[tgt] ); - return TRUE; - - case BREAK_NAND: - return breakNAND() ; - } - - // illegal argument - return FALSE; -} - -BOOL breakNAND( void ) -{ - static u8 buf[NOR_BUFSIZE] ; - u32 settingAddress; - NVRAMResult result; - - - // ‚Ü‚¸IPLƒwƒbƒ_‚©‚ç–{‘ÌÝ’è‚Ì‚ ‚éƒIƒtƒZƒbƒg‚ðŽæ“¾ - - // ƒLƒƒƒbƒVƒ…‚ð”jŠü - DC_InvalidateRange( buf, NOR_BUFSIZE); - result = NVRAMi_Read( NOR_SETTING_ADDRESS_OFFSET , NOR_BUFSIZE, buf ); - - if( result != NVRAM_RESULT_SUCCESS ) - { - // read‚ÉŽ¸”s - OS_TPrintf( "nvram_read() failed. errorcode: %d\n", result ); - return FALSE; - } - - OS_TPrintf("reading address... %x %x \n", buf[0], buf[1] ); - - // Ši”[‚³‚ê‚Ä‚¢‚é’l‚Ì8”{‚ªÝ’èƒAƒhƒŒƒX‚ÌŠJŽnƒAƒhƒŒƒX - settingAddress = ( (u32)(buf[1]) << 8 | (u32)buf[0]) * 8 ; - OS_TPrintf("settingAddress : %x\n", settingAddress ); - - DC_InvalidateRange( buf, NOR_BUFSIZE); - result = NVRAMi_Read( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , NOR_BUFSIZE, buf ); - - if( result != NVRAM_RESULT_SUCCESS ) - { - // read‚ÉŽ¸”s - OS_TPrintf( "nvram_read() failed. errorcode: %d\n", result ); - return FALSE; - } - - DumpBinary( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , buf, NOR_BUFSIZE ); - - OS_TPrintf(" now flag : %x\n", buf[NOR_BUFSIZE-1] ); - buf[ NOR_BUFSIZE - 1 ] |= NOR_NANDFLAG_MASK; - setParity( &buf[NOR_BUFSIZE-1] ); - OS_TPrintf(" now flag : %x\n", buf[NOR_BUFSIZE-1] ); - - // ƒLƒƒƒbƒVƒ…‚ð‘‚«–ß‚µ‚ÄA‚»‚ê‚©‚çnvram‚É‘‚«ž‚Þ - DC_StoreRange(buf, sizeof(buf)); - result = NVRAMi_Write( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , NOR_BUFSIZE, buf ); - - // “ǂݒ¼‚· - DC_InvalidateRange( buf, NOR_BUFSIZE); - result = NVRAMi_Verify( settingAddress - NOR_NANDFLAG_NEGATIVE_OFFSET , NOR_BUFSIZE, buf ); - - if( result != NVRAM_RESULT_SUCCESS ) - { - // write‚ÉŽ¸”s - OS_TPrintf( "nvram_verify() failed. errorcode: %d\n", result ); - return FALSE; - } - - // ‘‚«ž‚ݬŒ÷ - return TRUE; -} - -void fatalMakerInit( void ) -{ - static char filePath[NAM_PATH_LEN+1]; - - GX_DispOff(); - GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); - - // –³üƒtƒ@[ƒ€‚̃pƒX‚ðŽæ“¾‚·‚é - NAM_GetTitleBootContentPath( filePath , WIRELESS_TITLEID); // - s_strFilePath[ BREAK_WIRELESS ] = filePath; - OS_TPrintf( "wireless path : %s\n", filePath ); -} - -static char* s_strInfo[] = { - SELECT_MESSAGE, - SUCCESS_MESSAGE, - FAIL_MESSAGE, - ALREADY_MESSAGE -}; - -static char* s_strMenu[] = { - "HW Normal Info", - "HW Secure Info", - "Shared Font", - "Wireless Firmware", - "NAND" -}; - -static char* s_strFilePath[] = { - NORMAL_INFO_PATH, - SECURE_INFO_PATH, - SHARED_FONT_PATH, - NULL, // –³üƒtƒ@[ƒ€‚̃pƒX‚Í‚ ‚Æ‚©‚çNAMŒo—R‚Å“ü‚ê‚é - NULL -}; - - -/*---------------------------------------------------------------------------* - Name: DumpBinary - Description: ƒoƒCƒiƒŠƒf[ƒ^‚ð 16 i”•\‹L‚Ń_ƒ“ƒvo—Í‚·‚éB - Arguments: offset - 擪ƒAƒhƒŒƒX‚ðŽw’èB - data - ƒ_ƒ“ƒv•\ަ‚·‚éƒf[ƒ^‚ւ̃|ƒCƒ“ƒ^B - size - ƒ_ƒ“ƒv•\ަ‚·‚éƒf[ƒ^—Ê‚ðƒoƒCƒg’PˆÊ‚ÅŽw’èB - Returns: None. - *---------------------------------------------------------------------------*/ -static void -DumpBinary(u32 offset, void* data, u32 size) -{ -#pragma unused(data) - s32 i; - - if (size > 0) - { - if ((offset % 16) != 0) - { - OS_TPrintf("%08x:", (u32)(offset & ~0xf)); - for (i = 0; i < (offset % 16); i ++) - { - OS_TPrintf(" "); - if ((i % 16) == 7) - { - OS_TPrintf(" -"); - } - } - } - for (i = 0; i < size; i ++) - { - if (((offset + i) % 16) == 0) - { - OS_TPrintf("%08x:", offset + i); - } - OS_TPrintf(" %02x", ((u8*)data)[i]); - if (((offset + i) % 16) == 7) - { - OS_TPrintf(" -"); - } - else if (((offset + i) % 16) == 15) - { - OS_TPrintf("\n"); - } - } - if (((offset + i - 1) % 16) != 15) - { - OS_TPrintf("\n"); - } - } -} - -void setParity( u8 *data ) -{ - u8 i, parity; - - parity = 1; /* ’Êí‚Æ‹ti1‚ªŠï”ŒÂ‚Å0‚ɂȂéj*/ - for( i=0; i<7; i++) { /* 0-7iÅãˆÊƒrƒbƒg‚ªparityj */ - parity += ((*data >> i) & 0x01); - } - /* ƒpƒŠƒeƒBƒrƒbƒg‚ðã‘‚« */ - *data &= (u8)(~(0x80)); - *data |= ((parity << 7) & 0x80); -} \ No newline at end of file diff --git a/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.h b/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.h deleted file mode 100644 index 5ac04b27..00000000 --- a/build/tests/FatalErrorMaker/ARM9/src/fatalErrorMaker.h +++ /dev/null @@ -1,34 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - FatalErrorMaker - File: fatalErrorMaker.h - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __FATAL_ERROR_MAKE__ -#define __FATAL_ERROR_MAKE__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -void fatalMakerMain( void ); -void fatalMakerInit( void ); - -#ifdef __cplusplus -} -#endif - -#endif \ No newline at end of file diff --git a/build/tests/FatalErrorMaker/ARM9/src/main.c b/build/tests/FatalErrorMaker/ARM9/src/main.c deleted file mode 100644 index c3b8f043..00000000 --- a/build/tests/FatalErrorMaker/ARM9/src/main.c +++ /dev/null @@ -1,101 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - DisplaySystemInformation - File: main.c - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include - - -#include "misc.h" -#include "fatalErrorMaker.h" - -///////////////////////////// - -void VBlankHandler( void ); - -///////////////////////////// - - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ - - - -void TwlMain( void ) -{ - - OS_Init(); - OS_InitTick(); - OS_TPrintf("Initialize begin\n"); - - //---- interrupt setting - OS_EnableIrq(); - OS_EnableInterrupts(); - - GX_Init(); - - OS_SetIrqFunction( OS_IE_V_BLANK, VBlankHandler ); - OS_EnableIrqMask( OS_IE_V_BLANK ); - GX_VBlankIntr( TRUE ); - - OS_TPrintf("RTC Initilize...\n"); - RTC_Init(); - - OS_TPrintf("Allocator Initialize...\n"); - InitAllocator(); - - - InitBG(); - OS_TPrintf("Initialize Finished\n"); - - NVRAMi_Init(); - FS_Init( FS_DMA_NOT_USE ); - CRYPTO_SetAllocator( Alloc, Free ); - NAM_Init( Alloc, Free ); - - - fatalMakerInit(); - OS_TPrintf("begin mainloop\n"); - - - // ƒƒCƒ“ƒ‹[ƒv - while( 1 ) - { - OS_WaitIrq(1, OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„‚螂ݑ҂¿ - - ReadKeyPad(); // ƒL[“ü—͂̎擾 - - fatalMakerMain(); // ƒrƒ…[ƒAXV - } - - OS_Terminate(); - -} - - -void VBlankHandler(void) -{ - OS_SetIrqCheckFlag( OS_IE_V_BLANK ); // Vƒuƒ‰ƒ“ƒNŠ„žƒ`ƒFƒbƒN‚̃Zƒbƒg -} diff --git a/build/tests/FatalErrorMaker/Makefile b/build/tests/FatalErrorMaker/Makefile deleted file mode 100644 index 66754bca..00000000 --- a/build/tests/FatalErrorMaker/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/about.txt b/build/tests/FatalErrorMaker/about.txt deleted file mode 100644 index c58fb52b..00000000 --- a/build/tests/FatalErrorMaker/about.txt +++ /dev/null @@ -1,22 +0,0 @@ -FatalErrorMaker - -NANDA–³üƒtƒ@[ƒ€A‹¤—LƒtƒHƒ“ƒgAƒm[ƒ}ƒ‹HWî•ñAƒZƒLƒ…ƒAHWî•ñ‚ð -”j‰ó‚µAˆÓ}“I‚ÉFatal Error‚ðˆø‚«‹N‚±‚·ƒeƒXƒg‚Å‚·B -‹N“®‚·‚邯ƒƒjƒ…[‚ª•\ަ‚³‚ê‚é‚Ì‚ÅA”j‰ó‚µ‚½‚¢€–ڂɃJ[ƒ\ƒ‹‚ð‡‚킹‚ÄAƒ{ƒ^ƒ“‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢B -‹¤—LƒtƒHƒ“ƒgˆÈŠO‚ÍŽŸ‰ñ‹N“®Žž‚ÉŠmŽÀ‚ÉFatal Error‚ðˆø‚«‹N‚±‚·‚Æl‚¦‚ç‚ê‚é‚Ì‚ÅA -NAND Initializer‚ª—˜—p‚Å‚«‚邱‚Æ‚ðŠm”F‚µ‚½‚¤‚¦‚ÅŽÀs‚µ‚½‚Ù‚¤‚ª‚æ‚¢‚ÆŽv‚¢‚Ü‚·B - -Žè–@‚Æ‚µ‚Ä‚ÍANANDˆÈŠO‚ÌŠeƒf[ƒ^‚Í‚»‚ꂼ‚ê‚̃tƒ@ƒCƒ‹‚ðFS_DeleteFile()‚Å휂·‚邱‚Æ‚ÅA -NAND‚ÉŠÖ‚µ‚Ä‚ÍNORƒtƒ‰ƒbƒVƒ…‚É‚¨‚¯‚éNAND FATALƒGƒ‰[ƒtƒ‰ƒO(IPL/docs/ƒtƒ‰ƒbƒVƒ…ƒ}ƒbƒv_NOR.xlsŽQÆ)‚ð -—§‚Ă邱‚ƂŊY“–€–Ú‚Ì”j‰ó‚ðŽÀŒ»‚µ‚Ä‚¢‚Ü‚·B - - -”j‰ó‚µ‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚Í‹ï‘Ì“I‚Ɉȉº‚Ì’Ê‚è‚Å‚·B - -‹¤—LƒtƒHƒ“ƒgFnand:/sys/TWLFontTable.dat -ƒm[ƒ}ƒ‹î•ñFnand:/sys/HWINFO_N.dat -ƒZƒLƒ…ƒAî•ñFnand:/sys/HWINFO_S.dat - -‚Ü‚½A–³üƒtƒ@[ƒ€‚ÉŠÖ‚µ‚Ă̓Rƒ“ƒeƒ“ƒc‚Æ‚µ‚ÄtitleƒtƒHƒ‹ƒ_ˆÈ‰º‚É”z’u‚³‚ê‚Ä‚¢‚é‚Ì‚ÅA -NAMƒ‰ƒCƒuƒ‰ƒŠ‚ð—˜—p‚µ‚ăpƒX‚ðŽæ“¾‚µ‚Ä‚©‚ç휂µ‚É‚¢‚Á‚Ä‚¢‚Ü‚·B - diff --git a/build/tests/FatalErrorMaker/banner/Makefile b/build/tests/FatalErrorMaker/banner/Makefile deleted file mode 100644 index 960abdc6..00000000 --- a/build/tests/FatalErrorMaker/banner/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = \ - Makefile.012A Makefile.0G4A - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/FatalErrorMaker/banner/Makefile.012A b/build/tests/FatalErrorMaker/banner/Makefile.012A deleted file mode 100644 index cc294ddc..00000000 --- a/build/tests/FatalErrorMaker/banner/Makefile.012A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 012A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/FatalErrorMaker/banner/Makefile.0G4A b/build/tests/FatalErrorMaker/banner/Makefile.0G4A deleted file mode 100644 index 53a0164b..00000000 --- a/build/tests/FatalErrorMaker/banner/Makefile.0G4A +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -GAMECODE = 0G4A -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/$(GAMECODE).bmp -BANNER_SPEC = banner$(GAMECODE)_v3.bsf - -TARGETS = $(GAMECODE).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) - $(NTEXCONV) -no -bg -bgb -bgnc $(BANNER_ICON) >/dev/null && \ - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) diff --git a/build/tests/FatalErrorMaker/banner/banner.bnr b/build/tests/FatalErrorMaker/banner/banner.bnr deleted file mode 100644 index 7faf2304..00000000 Binary files a/build/tests/FatalErrorMaker/banner/banner.bnr and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/banner012A_v3.bsf b/build/tests/FatalErrorMaker/banner/banner012A_v3.bsf deleted file mode 100644 index eaf83c8d..00000000 Binary files a/build/tests/FatalErrorMaker/banner/banner012A_v3.bsf and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/banner0G4A_v3.bsf b/build/tests/FatalErrorMaker/banner/banner0G4A_v3.bsf deleted file mode 100644 index 248fcb42..00000000 Binary files a/build/tests/FatalErrorMaker/banner/banner0G4A_v3.bsf and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/bannerOption.txt b/build/tests/FatalErrorMaker/banner/bannerOption.txt deleted file mode 100644 index f8313a29..00000000 --- a/build/tests/FatalErrorMaker/banner/bannerOption.txt +++ /dev/null @@ -1,2 +0,0 @@ -012A FatalErrorMaker_card -0G4A FatalErrorMaker_nand \ No newline at end of file diff --git a/build/tests/FatalErrorMaker/banner/banner_v3.bsf b/build/tests/FatalErrorMaker/banner/banner_v3.bsf deleted file mode 100644 index 86449213..00000000 Binary files a/build/tests/FatalErrorMaker/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/icon/012A.bmp b/build/tests/FatalErrorMaker/banner/icon/012A.bmp deleted file mode 100644 index 8fb6cafb..00000000 Binary files a/build/tests/FatalErrorMaker/banner/icon/012A.bmp and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/icon/0G4A.bmp b/build/tests/FatalErrorMaker/banner/icon/0G4A.bmp deleted file mode 100644 index d8d531eb..00000000 Binary files a/build/tests/FatalErrorMaker/banner/icon/0G4A.bmp and /dev/null differ diff --git a/build/tests/FatalErrorMaker/banner/icon/gameIcon.bmp b/build/tests/FatalErrorMaker/banner/icon/gameIcon.bmp deleted file mode 100644 index 876eca5b..00000000 Binary files a/build/tests/FatalErrorMaker/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/FileRecoveryTest/Makefile b/build/tests/FileRecoveryTest/Makefile deleted file mode 100644 index c06e7830..00000000 --- a/build/tests/FileRecoveryTest/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - FileRecoveryTest -# File: Makefile -# -# Copyright **** Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev:$ -# $Author:$ -#---------------------------------------------------------------------------- -SUBDIRS = $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/util/ - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -#---------------------------------------------------------------------------- - -TARGET_BIN = main.srl - -SRCS = main.c - -LLIBRARIES += libsysmutil$(TWL_LIBSUFFIX).a - -ROM_SPEC = main.rsf - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/FileRecoveryTest/main.rsf b/build/tests/FileRecoveryTest/main.rsf deleted file mode 100644 index 30b63f3e..00000000 --- a/build/tests/FileRecoveryTest/main.rsf +++ /dev/null @@ -1,269 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [0 - 255] - # - #AgreeEULAVersion 0 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - Secure TRUE - AppType System -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} - -Rating -{ - # - # Permited age to play for each rating organization [0 - 31, ALWAYS, FREE] - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / ALWAYS / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/FileRecoveryTest/src/main.c b/build/tests/FileRecoveryTest/src/main.c deleted file mode 100644 index 460c313b..00000000 --- a/build/tests/FileRecoveryTest/src/main.c +++ /dev/null @@ -1,60 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: util_recoveryFile.h - - Copyright **** Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev:$ - $Author:$ -*---------------------------------------------------------------------------*/ - -#include -#include - -static char *s_strResult[4]; - -void VBlankIntr(void); - -void TwlMain( void ) -{ - char path[] = "nand:/tmp/a/b/c/d/hogehoge.dat"; - UTL_RecoveryStatus result; - - OS_Init(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - - // ‚Ƃ肠‚¦‚¸ƒtƒ@ƒCƒ‹ƒTƒCƒY‚É16byteŽw’è - result = UTL_RecoveryFile( path, 0x0010 ); - - OS_TPrintf("recovery result: %d\n", result); - OS_TPrintf("%s\n", s_strResult[result] ); - OS_TPrintf( "*** End of demo\n" ); - OS_Terminate(); - - -} - -void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -static char *s_strResult[] = { - "Target file exists and file size matched.", - "File size didn't match. Changing size succeeded.", - "Target file didn't exist. Creating file and setting size succeeded.", - "ERROR: File Recovery Failed." -}; \ No newline at end of file diff --git a/build/tests/HashCheckTemplate/ARM7/Makefile b/build/tests/HashCheckTemplate/ARM7/Makefile deleted file mode 100644 index e2d8e1b7..00000000 --- a/build/tests/HashCheckTemplate/ARM7/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBMAKES = Makefile_ltd Makefile_hyb Makefile_ltd_offset - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM7/Makefile_hyb b/build/tests/HashCheckTemplate/ARM7/Makefile_hyb deleted file mode 100644 index 0f47bbf5..00000000 --- a/build/tests/HashCheckTemplate/ARM7/Makefile_hyb +++ /dev/null @@ -1,88 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - mongoose.TWL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = HYBRID -override TWL_CODEGEN = ARM -TWL_NO_STD_PCHDR = True - -#---------------------------------------------------------------------------- - -SRCDIR += $(ROOT)/build/components/mongoose.TWL/src - -SRCS = main.c initScfg.c - -TARGET_NAME = mongoose_hct - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = mongoose_hct.lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/mongoose.TWL/mongoose.lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/mongoose.TWL/mongoose.response.template - -LLIBRARY_DIRS += ../crt/ARM7/obj/ARM7-TS.HYB/$(TWL_BUILD_DIR) -CRT0_O = crt0_hct.HYB.TWL.o - -# ƒXƒ^ƒbƒN•s‘«–hŽ~‚̈×AƒCƒ“ƒ‰ƒCƒ““WŠJ‚¹‚¸‚ɃRƒ“ƒpƒCƒ‹‚·‚é -CCFLAGS_OPT = -O4 -inline off - -# If THUMB, use ARM libraries -# CODEGEN ‚ª THUMB ‚Ìê‡AARM ‚Ńrƒ‹ƒh‚µ‚½‚à‚Ì‚ð THUMB ‚Æ‚µ‚Ä‘•‚¢‚Ü‚·B -ifeq ($(TARGET_CODEGEN),THUMB) -TWL_LIBSUFFIX = .TWL$(ARCHGEN_TYPE) -CODEGEN_CC = ARM -endif - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='$(if $(ISDBG_LIBS_NITRO),$(ISDBG_LIBS_NITRO),libstubsisd_sp$(TWL_LIBSUFFIX).a)' - -#-------------------------------- -# install target -#-------------------------------- -INSTALL_TARGETS = $(BINDIR)/$(TARGET_NAME).tef \ - $(BINDIR)/$(TARGET_NAME).TWL.FLX.sbin \ - $(BINDIR)/$(TARGET_NAME)_defs.TWL.FLX.sbin \ - $(BINDIR)/$(TARGET_NAME).TWL.LTD.sbin \ - $(BINDIR)/$(TARGET_NAME)_defs.TWL.LTD.sbin - -INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE) - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include - -#LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ -# libcdc_sp$(TWL_LIBSUFFIX).a \ -# libtpex_sp$(TWL_LIBSUFFIX).a \ -# libmicex_sp$(TWL_LIBSUFFIX).a \ -# libsdio_hcd_twl$(TWL_LIBSUFFIX).a \ -# libsdio_busdriver$(TWL_LIBSUFFIX).a \ -# libsdio_lib$(TWL_LIBSUFFIX).a \ -# librompatch_sp$(TWL_LIBSUFFIX).a \ -# libARM7athdrv$(TWL_LIBSUFFIX).a \ - - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM7/Makefile_ltd b/build/tests/HashCheckTemplate/ARM7/Makefile_ltd deleted file mode 100644 index 5893c9ca..00000000 --- a/build/tests/HashCheckTemplate/ARM7/Makefile_ltd +++ /dev/null @@ -1,81 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -override TWL_CODEGEN = ARM -TWL_NO_STD_PCHDR = True - -#---------------------------------------------------------------------------- - -SRCDIR += $(ROOT)/build/components/mongoose.TWL/src - -SRCS = main.c initScfg.c - -TARGET_NAME = racoon_hct - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = racoon_hct.lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.response.template - -LLIBRARY_DIRS += ../crt/ARM7/obj/ARM7-TS.LTD/$(TWL_BUILD_DIR) -CRT0_O = crt0_hct.LTD.TWL.o - -# ƒXƒ^ƒbƒN•s‘«–hŽ~‚̈×AƒCƒ“ƒ‰ƒCƒ““WŠJ‚¹‚¸‚ɃRƒ“ƒpƒCƒ‹‚·‚é -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#MACRO_FLAGS += -DSDK_ARM7COMP_LTD - -ifeq ($(TWL_PLATFORM),BB) -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000' -else -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000' -endif - -MAKELCF_FLAGS += -DADDRESS_FLXMAIN='0x02380000' - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include -#LLIBRARIES += libwl_sp.TWL.LTD.a libsdio_hcd_twl$(TWL_LIBSUFFIX).a libsdio_busdriver$(TWL_LIBSUFFIX).a libsdio_lib$(TWL_LIBSUFFIX).a libARM7athdrv$(TWL_LIBSUFFIX).a -LLIBRARIES += libwl_sp.TWL.LTD.a -#LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ -# libcdc_sp$(TWL_LIBSUFFIX).a \ -# libtpex_sp$(TWL_LIBSUFFIX).a \ -# libmicex_sp$(TWL_LIBSUFFIX).a \ -# libsdio_hcd_twl$(TWL_LIBSUFFIX).a \ -# libsdio_busdriver$(TWL_LIBSUFFIX).a \ -# libsdio_lib$(TWL_LIBSUFFIX).a \ -# librompatch_sp$(TWL_LIBSUFFIX).a \ -# libARM7athdrv$(TWL_LIBSUFFIX).a - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM7/Makefile_ltd_offset b/build/tests/HashCheckTemplate/ARM7/Makefile_ltd_offset deleted file mode 100644 index 123e2195..00000000 --- a/build/tests/HashCheckTemplate/ARM7/Makefile_ltd_offset +++ /dev/null @@ -1,83 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -override TWL_CODEGEN = ARM -TWL_NO_STD_PCHDR = True - -#---------------------------------------------------------------------------- - -SRCDIR += $(ROOT)/build/components/mongoose.TWL/src - -SRCS = main.c initScfg.c - -TARGET_NAME = racoon_hct_offset - -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = racoon_hct.lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/racoon.TWL/racoon.response.template - -LLIBRARY_DIRS += ../crt/ARM7/obj/ARM7-TS.LTD/$(TWL_BUILD_DIR) -CRT0_O = crt0_hct.LTD.TWL.o - -# ƒXƒ^ƒbƒN•s‘«–hŽ~‚̈×AƒCƒ“ƒ‰ƒCƒ““WŠJ‚¹‚¸‚ɃRƒ“ƒpƒCƒ‹‚·‚é -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#MACRO_FLAGS += -DSDK_ARM7COMP_LTD - -ifeq ($(TWL_PLATFORM),BB) -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037e0000' -else -MAKELCF_FLAGS += -DADDRESS_LTDWRAM='0x037c0000' -endif - -MAKELCF_FLAGS += -DADDRESS_FLXMAIN='0x02390000' - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - - -LINCLUDES = $(ROOT)/build/libraries/spi/ARM7/include -#LLIBRARIES += libwl_sp.TWL.LTD.a libsdio_hcd_twl$(TWL_LIBSUFFIX).a libsdio_busdriver$(TWL_LIBSUFFIX).a libsdio_lib$(TWL_LIBSUFFIX).a libARM7athdrv$(TWL_LIBSUFFIX).a -LLIBRARIES += libwl_sp.TWL.LTD.a -#LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ -# libcdc_sp$(TWL_LIBSUFFIX).a \ -# libtpex_sp$(TWL_LIBSUFFIX).a \ -# libmicex_sp$(TWL_LIBSUFFIX).a \ -# libsdio_hcd_twl$(TWL_LIBSUFFIX).a \ -# libsdio_busdriver$(TWL_LIBSUFFIX).a \ -# libsdio_lib$(TWL_LIBSUFFIX).a \ -# librompatch_sp$(TWL_LIBSUFFIX).a \ -# libARM7athdrv$(TWL_LIBSUFFIX).a - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM7/mongoose_hct.lsf b/build/tests/HashCheckTemplate/ARM7/mongoose_hct.lsf deleted file mode 100644 index 78e6357d..00000000 --- a/build/tests/HashCheckTemplate/ARM7/mongoose_hct.lsf +++ /dev/null @@ -1,172 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - mongoose.TWL -# File: mongoose.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - Library $(CRT0_O) \ - libos_sp$(LIBSUFFIX).a \ - libsyscall_sp.twl.a \ - libmi_sp$(LIBSUFFIX).a - Object $(OBJDIR)/initScfg.o - StackSize 1024 1024 -} - -#-------- -Autoload WRAM -{ - Address 0x037f8000 - - Library libsubpsyscall.a - Library $(CW_LIBS) - Library libpad_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libfs_sp$(LIBSUFFIX).a - Library libcard_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libctrdg_sp$(LIBSUFFIX).a - - Object * (.etable) - Object * (.wram) - Object $(OBJDIR)/main.o - - ##### - # Sub-routines in WL library , that should be on WRAM. - # in TaskMan.o - Object OBJECT( MainTaskRoutine , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( AddTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( DeleteTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( LowestIdleTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( ExecuteMessage , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in BufMan.o - Object OBJECT( NewHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( DeleteHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( AllocateHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( ReleaseHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( MoveHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( AddHeapBuf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( GetHeapBufNextAdrs , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WlCmdIf.o - ## Object OBJECT( RequestCmdTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( SendMessageToWmDirect , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WlNic.o - Object OBJECT( WStart , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WStop , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WSetStaState , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WlIntr.o - Object OBJECT( WlIntr , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrPreTbtt , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrTbtt , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrActEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) -# Object OBJECT( WlIntrAckCntOvf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrCntOvf , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrTxErr , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrRxCntup , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrTxEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrRxEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrMpEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrStartTx , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrStartRx , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( SetParentTbttTxq , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( MacBugTxMp , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( AdjustRingPointer , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( CheckKeyTxEnd , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WlIntrTask.o - Object OBJECT( WlIntrTxBeaconTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrTxEndTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrRxEndTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WlIntrMpEndTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( SetParentTbttTxqTask , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( TakeoutRxFrame , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in TxCtrl.o - Object OBJECT( InitTxCtrl , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in RxCtrl.o - Object OBJECT( InitRxCtrl , libwl_sp.TWL$(ARCHGEN).a ) (.text) - # in WaitLoop.o - Object OBJECT( WaitLoop_Rxpe , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WaitLoop_Waitus , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WaitLoop_ClrAid , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WaitLoop_BbpAccess , libwl_sp.TWL$(ARCHGEN).a ) (.text) - Object OBJECT( WaitLoop_RfAccess , libwl_sp.TWL$(ARCHGEN).a ) (.text) - -} - -#-------- -Autoload MAIN -{ - Address 0x02fe0000 - Library librtc_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwm_sp$(LIBSUFFIX).a - Library libwl_sp.TWL$(ARCHGEN).a - Library $(ISDBG_LIBS_NITRO) - Library $(ISDBG_LIBS_TWL) -} - -#-------- -Ltdautoload LTDWRAM -{ - Address 0x03000000 - Object * (.ltdwram) - Library libi2c_sp$(LIBSUFFIX).a - Library libcamera_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libaes_sp$(LIBSUFFIX).a - - Library libsdio_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - - Object OBJECT( wpa_sm_rx_eapol , libwpa_sp$(LIBSUFFIX).a ) (.text) - - # FATFS core symbols - Object OBJECT(FATFSi_lfi2text, libfatfs_sp$(LIBSUFFIX).a) (.text) # 360 BYTEs - Object OBJECT(FATFSi_pc_findin, libfatfs_sp$(LIBSUFFIX).a) (.text) # 904 BYTEs - Object OBJECT(FATFSi_pc_patcmp_vfat, libfatfs_sp$(LIBSUFFIX).a) (.text) # 436 BYTEs - Object OBJECT(FATFSi_pc_ascii_mfile, libfatfs_sp$(LIBSUFFIX).a) (.text) # 160 BYTEs - Object OBJECT(FATFSi_map_ascii_to_unicode, libfatfs_sp$(LIBSUFFIX).a) (.text) # 48 BYTEs - Object OBJECT(SDCARD_Intr_Thread, libfatfs_sp$(LIBSUFFIX).a) (.text) # 520 BYTEs - Object OBJECT(FATFSi_unicode_cmp_to_ascii_char, libfatfs_sp$(LIBSUFFIX).a) (.text) # 40 BYTEs - Object OBJECT(FATFSi_pc_read_blk, libfatfs_sp$(LIBSUFFIX).a) (.text) # 352 BYTEs - -} - -#-------- -Ltdautoload LTDMAIN -{ - Address 0x02f88000 - Object * (.ltdmain) - Library libnwm_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a - - Library libwpa_sp$(LIBSUFFIX).a -} diff --git a/build/tests/HashCheckTemplate/ARM7/racoon_hct.lsf b/build/tests/HashCheckTemplate/ARM7/racoon_hct.lsf deleted file mode 100644 index 2928fee8..00000000 --- a/build/tests/HashCheckTemplate/ARM7/racoon_hct.lsf +++ /dev/null @@ -1,231 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: racoon.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address $(ADDRESS_FLXMAIN) - Library $(CRT0_O) \ - libos_sp$(LIBSUFFIX).a \ - libsyscall_sp.twl.a \ - libmi_sp$(LIBSUFFIX).a - Object $(OBJDIR)/initScfg.o - StackSize 1024 1024 -} - -#-------- -Autoload WRAM -{ - Address $(ADDRESS_LTDWRAM) - - Library libsubpsyscall.a \ - $(CW_LIBS) \ - libpad_sp$(LIBSUFFIX).a \ - libpxi_sp$(LIBSUFFIX).a \ - libstd_sp$(LIBSUFFIX).a \ - libexi_sp$(LIBSUFFIX).a \ - libsnd_sp$(LIBSUFFIX).a \ - libspi_sp$(LIBSUFFIX).a \ - libpm_sp$(LIBSUFFIX).a \ - libmath_sp$(LIBSUFFIX).a \ - libscfg_sp$(LIBSUFFIX).a \ - libtp_sp$(LIBSUFFIX).a \ - libmic_sp$(LIBSUFFIX).a \ - libfs_sp$(LIBSUFFIX).a \ - libcard_sp$(LIBSUFFIX).a \ - libi2c_sp$(LIBSUFFIX).a \ - libcamera_sp$(LIBSUFFIX).a \ - libcdc_sp$(LIBSUFFIX).a \ - libsndex_sp$(LIBSUFFIX).a \ - libtpex_sp$(LIBSUFFIX).a \ - libmicex_sp$(LIBSUFFIX).a \ - libmcu_sp$(LIBSUFFIX).a \ - - Library libsdio_sp$(LIBSUFFIX).a - - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - - - Object * (.etable) - Object * (.wram) - Object * (.ltdwram) - Object $(OBJDIR)/main.o - - # caches in fatfs library, that should be on WRAM. - # 2007/12/11 OBJECT() ‚É‚æ‚é .bss ƒVƒ“ƒ{ƒ‹‚ÌƒŠƒ“ƒN‚ª‚¤‚Ü‚­‚¢‚©‚È‚¢‚Ì‚ÅA - # •Ï”’è‹`‰ÓŠ‚É pragma ‚Å .ltdwram ƒZƒNƒVƒ‡ƒ“‚Ɋ܂܂ê‚邿‚¤‚ÉŽb’è‘Îô‚µ‚Ü‚µ‚½B -# Object OBJECT( FATFSi___mem_drives_structures , libfatfs_sp$(LIBSUFFIX).a) (.bss) - - ##### - # Sub-routines in WL library , that should be on WRAM. - # in TaskMan.o - Object OBJECT( MainTaskRoutine , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AddTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DeleteTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( LowestIdleTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ExecuteMessage , libwl_sp$(LIBSUFFIX).a ) (.text) - # in BufMan.o - Object OBJECT( NewHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DeleteHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AllocateHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ReleaseHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( MoveHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AddHeapBuf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( GetHeapBufNextAdrs , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlCmdIf.o - Object OBJECT( RequestCmdTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SendMessageToWmDirect , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlNic.o - Object OBJECT( WStart , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WStop , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WSetStaState , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlIntr.o - Object OBJECT( WlIntr , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrPreTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTbtt , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrActEnd , libwl_sp$(LIBSUFFIX).a ) (.text) -# Object OBJECT( WlIntrAckCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrCntOvf , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxErr , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxCntup , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrMpEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrStartTx , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrStartRx , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SetParentTbttTxq , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( MacBugTxMp , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AdjustRingPointer , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( CheckKeyTxEnd , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WlIntrTask.o - Object OBJECT( WlIntrTxBeaconTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrTxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrRxEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WlIntrMpEndTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( SetParentTbttTxqTask , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( TakeoutRxFrame , libwl_sp$(LIBSUFFIX).a ) (.text) - # in TxCtrl.o - Object OBJECT( InitTxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) - # in RxCtrl.o - Object OBJECT( InitRxCtrl , libwl_sp$(LIBSUFFIX).a ) (.text) - # in WaitLoop.o - Object OBJECT( WaitLoop_Rxpe , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_Waitus , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_ClrAid , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_BbpAccess , libwl_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( WaitLoop_RfAccess , libwl_sp$(LIBSUFFIX).a ) (.text) - - -} - -#-------- -Ltdautoload RSVWRAM -{ - Address 0x03040000 - Object * (.rsvwram) - Library libathdrv_sp$(LIBSUFFIX).a (.bss) - Library libathdrv_sp$(LIBSUFFIX).a (.data) - - ##### - # Sub-routines in TWL WIRELESS Driver , that should be on WRAM. - Object OBJECT( HTCSendPktCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCIssueSend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCTrySend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCSendPkt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCProcessCreditRpt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevRecvPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCProcessRecvHeader, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCRecvCompleteHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCRecvMessagePendingHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCAddReceivePkt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AR6KFreeIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( AR6KAllocIOPacket, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevGetEventAsyncHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevCheckPendingRecvMsgsAsync, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DevDsrHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HIFReadWrite, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( hifRWCompletionHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( hifIRQHandler, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HIFAckInterrupt, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_credit_distribute, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_alloc, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_alloc_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_put, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_push, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_pull, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_free, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_to_data, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_to_len, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( a_netbuf_headroom, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_drv_return_netbuf, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ath_queue_remove_from_head, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ath_queue_insert_tail, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_alloc_cookie, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_driver_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_tx_complete, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_dix_2_dot3, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_data_hdr_add, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_data_hdr_remove, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( nin_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_ibss_map_epid, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DL_ListInsertTail, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( DL_ListRemove, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_control_rx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_cmd_send, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( ar6000_control_tx, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( wmi_implicit_create_pstream, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCAllocControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( HTCFreeControlBuffer, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( BMILZData, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( bmiBufferSend, libathdrv_sp$(LIBSUFFIX).a ) (.text) - Object OBJECT( BMIWriteMemory, libathdrv_sp$(LIBSUFFIX).a ) (.text) - - - # FATFS core symbols - Object OBJECT(FATFSi_lfi2text, libfatfs_sp$(LIBSUFFIX).a) (.text) # 360 BYTEs - Object OBJECT(FATFSi_pc_findin, libfatfs_sp$(LIBSUFFIX).a) (.text) # 904 BYTEs - Object OBJECT(FATFSi_pc_patcmp_vfat, libfatfs_sp$(LIBSUFFIX).a) (.text) # 436 BYTEs - Object OBJECT(FATFSi_pc_ascii_mfile, libfatfs_sp$(LIBSUFFIX).a) (.text) # 160 BYTEs - Object OBJECT(FATFSi_map_ascii_to_unicode, libfatfs_sp$(LIBSUFFIX).a) (.text) # 48 BYTEs - Object OBJECT(SDCARD_Intr_Thread, libfatfs_sp$(LIBSUFFIX).a) (.text) # 520 BYTEs - Object OBJECT(FATFSi_unicode_cmp_to_ascii_char, libfatfs_sp$(LIBSUFFIX).a) (.text) # 40 BYTEs - Object OBJECT(FATFSi_pc_read_blk, libfatfs_sp$(LIBSUFFIX).a) (.text) # 352 BYTEs -} - -#-------- -Ltdautoload LTDMAIN -{ - Address 0x02f88000 - - Object * (.ltdmain) - Library libwm_sp$(LIBSUFFIX).a \ - libnwm_sp$(LIBSUFFIX).a \ - libwvr_sp$(LIBSUFFIX).a \ - libwl_sp$(LIBSUFFIX).a - - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - - Library libfatfs_sp$(LIBSUFFIX).a \ - libaes_sp$(LIBSUFFIX).a - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) -} diff --git a/build/tests/HashCheckTemplate/ARM9/Makefile b/build/tests/HashCheckTemplate/ARM9/Makefile deleted file mode 100644 index a63deeb2..00000000 --- a/build/tests/HashCheckTemplate/ARM9/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBMAKES = Makefile_ltd Makefile_hyb - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM9/Makefile_hyb b/build/tests/HashCheckTemplate/ARM9/Makefile_hyb deleted file mode 100644 index 79a3f290..00000000 --- a/build/tests/HashCheckTemplate/ARM9/Makefile_hyb +++ /dev/null @@ -1,75 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -override TWL_ARCHGEN = HYBRID - -TARGET_NAME = HashCheckTemplate -TARGET_BIN = $(TARGET_NAME).tad - -TITLEID_LO = 0DTA - -ROM_SPEC = main.rsf -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(TITLEID_LO)/rom_header_$(call toLower,$(TITLEID_LO)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(TITLEID_LO)/libsyscall.a - -MISC_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/misc - -SRCS = main.c HashCheckTemplate.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)' \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - -#ƒfƒoƒbƒO—pƒpƒ‰ƒ[ƒ^’ljÁ -MAKEROM_FLAGS += -DSYSCALL_C='$(call empath,$(LIBSYSCALL:.a=_c.bin))' \ - -DARM9FLX_EXPAND=0x27c000 \ - -DARM7FLX_EXPAND=0x40000 \ - -DARM9LTD_EXPAND=0x280000 \ - -DARM7LTD_EXPAND=0x108000 - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.DEBUG.exe - -DEFAULT_COMP_ARM7 = mongoose_hct -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -LDIRT_CLEAN = $(TARGET_TAD) -INSTALL_TARGETS = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM9/Makefile_ltd b/build/tests/HashCheckTemplate/ARM9/Makefile_ltd deleted file mode 100644 index bf6f7936..00000000 --- a/build/tests/HashCheckTemplate/ARM9/Makefile_ltd +++ /dev/null @@ -1,75 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -override TWL_ARCHGEN = LIMITED - -TARGET_NAME = HashCheckTemplate -TARGET_BIN = $(TARGET_NAME).tad - -TITLEID_LO = 0DTA - -ROM_SPEC = main.rsf -ROM_HEADER_TEMPLATE = $(SYSMENU_ROM_HEADER_DIR)/$(TITLEID_LO)/rom_header_$(call toLower,$(TITLEID_LO)).template.sbin -LIBSYSCALL = $(SYSMENU_ROM_HEADER_DIR)/$(TITLEID_LO)/libsyscall.a - -MISC_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/misc - -SRCS = main.c HashCheckTemplate.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -F -DTITLEID_LO='$(TITLEID_LO)' \ - -DROM_HEADER_TEMPLATE='$(call empath,$(ROM_HEADER_TEMPLATE))' - -#ƒfƒoƒbƒO—pƒpƒ‰ƒ[ƒ^’ljÁ -MAKEROM_FLAGS += -DSYSCALL_C='$(call empath,$(LIBSYSCALL:.a=_c.bin))' \ - -DARM9FLX_EXPAND=0x27c000 \ - -DARM7FLX_EXPAND=0x40000 \ - -DARM9LTD_EXPAND=0x280000 \ - -DARM7LTD_EXPAND=0x108000 - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.DEBUG.exe - -DEFAULT_COMP_ARM7 = racoon_hct -DEFAULT_MAKEROM_ARM7_BASE = ../ARM7/bin/$(TWL_BUILDTYPE_ARM7)/$(DEFAULT_COMP_ARM7) -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - -LDIRT_CLEAN = $(TARGET_TAD) -INSTALL_TARGETS = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/ARM9/main.rsf b/build/tests/HashCheckTemplate/ARM9/main.rsf deleted file mode 100644 index 8f742b9a..00000000 --- a/build/tests/HashCheckTemplate/ARM9/main.rsf +++ /dev/null @@ -1,185 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - RomHeaderTemplate $(ROM_HEADER_TEMPLATE) - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType User - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.c b/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.c deleted file mode 100644 index 3764fe64..00000000 --- a/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.c +++ /dev/null @@ -1,151 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: HashCheckTemplate.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "misc.h" -#include "HashCheckTemplate.h" - -// define data------------------------------------------ -#define RETURN_BUTTON_TOP_X 2 -#define RETURN_BUTTON_TOP_Y 21 -#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + 8 ) -#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) - -#define UNDEF_CODE 0xe7ffdeff - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- - -// global variable ------------------------------------- -RTCDrawProperty g_rtcDraw = { - TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y -}; - -// static variable ------------------------------------- -static BOOL s_switch = TRUE; - -//static u32 dummy[1024*1024/2]={1,2,3,};//2MB - -// const data ----------------------------------------- - -//====================================================== -// Ä”z’uƒ`ƒFƒbƒJ[i‘½•ª‚±‚±‚©‚ç‚â‚鎖‚Í•\ަ‚Ì‚Ýj -//====================================================== - -/* -static void draw_sub1(u8 *ram_addr, u8 *header_addr, int y) -{ - int l; - PrintfSJIS(8,y,TXT_UCOLOR_DARKGREEN, "ARM9FLX ( VERIFY %s ) :",( (*(u32 *)0x02000180 == UNDEF_CODE) ? "OK" : "NG" )); - - for (l=0; l<20; l++) - { - PrintfSJIS(24+(l%10)*19, y+12+12*(l/10), TXT_COLOR_BLACK, "%.2x", *(ram_addr+l)); - if(s_switch) - { - PrintfSJIS(24+(l%10)*19, y+12+12*(l/10), (*(ram_addr+l) != *(header_addr+l)) ? TXT_COLOR_RED : TXT_COLOR_BLUE, "%.2x", *(header_addr+l)); - } - } -} -*/ - -static void draw_sub2(u8 *ram_addr, u8 *header_addr, int y, const u16 *str) -{ - int l; - PutStringUTF16(8,y,TXT_UCOLOR_DARKGREEN, str); - for (l=0; l<20; l++) - { - PrintfSJIS(24+(l%10)*19, y+12+12*(l/10), TXT_COLOR_BLACK, "%.2x", *(ram_addr+l)); - if(s_switch ) - { - PrintfSJIS(24+(l%10)*19, y+12+12*(l/10), (*(ram_addr+l) != *(header_addr+l)) ? TXT_COLOR_RED : TXT_COLOR_BLUE, "%.2x", *(header_addr+l)); - } - } -} - -static void encryObjdraw(void) -{ - int l; - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"decrypted encryObj (first 200 bytes)"); - for (l=0; l<50; l++) - { - PrintfSJIS(4+(l%4)*64, 24+12*(l/4), TXT_COLOR_BLACK, "%.8x", *(((u32 *)0x02000180)+l) ); - } -} - -static void draw() -{ - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - - PutStringUTF16( 1 * 8, 0 * 8, TXT_COLOR_BLUE, (const u16 *)L"SelfDigestChecker"); - PutStringUTF16( 3 * 8, 1 * 12, TXT_COLOR_BLACK, (const u16 *)L"Press A to Check Digest...."); - - draw_sub2((u8 *)0x02000100, (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x38c), 12*2+4, (const u16 *)L"ARM9FLX :" ); - draw_sub2((u8 *)0x02000120, (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x314), 12*5+8, (const u16 *)L"ARM7FLX :" ); - draw_sub2((u8 *)0x02000140, (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x350), 12*8+12, (const u16 *)L"ARM9LTD :" ); - draw_sub2((u8 *)0x02000160, (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x364), 12*11+16, (const u16 *)L"ARM7LTD :" ); -} - -// ‰Šú‰» -void HashCheckTemplateInit( void ) -{ - GX_DispOff(); - GXS_DispOff(); - - draw(); - - GetAndDrawRTCData( &g_rtcDraw, TRUE ); - - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); -} - -static u32 c; -// ƒƒCƒ“ƒ‹[ƒv -void HashCheckTemplateMain(void) -{ - BOOL tp_cancel = FALSE; - - ReadTP(); // ƒ^ƒbƒ`ƒpƒlƒ‹“ü—͂̎擾 - - // [RETURN]ƒ{ƒ^ƒ“‰Ÿ‰ºƒ`ƒFƒbƒN - if(tpd.disp.touch) { - tp_cancel = WithinRangeTP( RETURN_BUTTON_TOP_X * 8, RETURN_BUTTON_TOP_Y * 8 - 4, - RETURN_BUTTON_BOTTOM_X * 8, RETURN_BUTTON_BOTTOM_Y * 8 - 4, &tpd.disp ); - } - - if( ( pad.trg & PAD_BUTTON_A )) { - s_switch = !s_switch; - draw(); - } - - if( ( pad.trg & PAD_BUTTON_X )) { - encryObjdraw(); - } - - if( ( pad.trg & PAD_BUTTON_B ) || tp_cancel ) { -// SYSM_RebootLauncher(); - } - - GetAndDrawRTCData( &g_rtcDraw, FALSE ); -} - - diff --git a/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.h b/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.h deleted file mode 100644 index fe20f46a..00000000 --- a/build/tests/HashCheckTemplate/ARM9/src/HashCheckTemplate.h +++ /dev/null @@ -1,37 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: HashCheckTemplate.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __HASH_CHECK_TEMPLATE_H__ -#define __HASH_CHECK_TEMPLATE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - - -#include - -// define data---------------------------------------------------------- - -void HashCheckTemplateInit( void ); -void HashCheckTemplateMain( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __HASH_CHECK_TEMPLATE_H__ diff --git a/build/tests/HashCheckTemplate/ARM9/src/main.c b/build/tests/HashCheckTemplate/ARM9/src/main.c deleted file mode 100644 index c42a2d4d..00000000 --- a/build/tests/HashCheckTemplate/ARM9/src/main.c +++ /dev/null @@ -1,87 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "misc.h" -#include "HashCheckTemplate.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -static void INTR_VBlank( void ); - -// global variable------------------------------------------------------------- - -// static variable------------------------------------------------------------- - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// function's description -// ============================================================================ -void TwlMain(void) -{ - - // ‰Šú‰»---------------------------------- - OS_Init(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - GX_Init(); - GX_SetPower(GX_POWER_ALL); // ŠeƒƒWƒbƒN ƒpƒ[ON - - // Š„‚螂݋–‰Â---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // ƒfƒoƒCƒX‰Šú‰»------------------------------- - TP_Init(); - (void)RTC_Init(); - - // ƒVƒXƒeƒ€‚̉Šú‰»------------------ - OS_SetArenaHi(OS_ARENA_MAIN, (void *)0x02d00000);// arm9MMEMheap - InitAllocator(); - - InitBG(); - HashCheckTemplateInit(); - // ƒƒCƒ“ƒ‹[ƒv---------------------------- - while(1){ - OS_WaitIrq(1, OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„‚螂ݑ҂¿ - - ReadKeyPad(); // ƒL[“ü—͂̎擾 - ReadTP(); // TP“ü—͂̎擾 - - HashCheckTemplateMain(); - } -} - - -// ============================================================================ -// Š„‚螂݈— -// ============================================================================ - -// Vƒuƒ‰ƒ“ƒNŠ„‚èž‚Ý -static void INTR_VBlank(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„žƒ`ƒFƒbƒN‚̃Zƒbƒg -} - diff --git a/build/tests/HashCheckTemplate/Makefile b/build/tests/HashCheckTemplate/Makefile deleted file mode 100644 index 96d468e9..00000000 --- a/build/tests/HashCheckTemplate/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner crt ARM7 ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/banner/Makefile b/build/tests/HashCheckTemplate/banner/Makefile deleted file mode 100644 index cf9ea411..00000000 --- a/build/tests/HashCheckTemplate/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -d -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/HashCheckTemplate/banner/banner_v3.bsf b/build/tests/HashCheckTemplate/banner/banner_v3.bsf deleted file mode 100644 index fb39aad4..00000000 Binary files a/build/tests/HashCheckTemplate/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/HashCheckTemplate/banner/icon/gameIcon.bmp b/build/tests/HashCheckTemplate/banner/icon/gameIcon.bmp deleted file mode 100644 index 2d6194b1..00000000 Binary files a/build/tests/HashCheckTemplate/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/HashCheckTemplate/crt/ARM7/Makefile b/build/tests/HashCheckTemplate/crt/ARM7/Makefile deleted file mode 100644 index 75aef4bf..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - init - ARM7.TWL -# File: Makefile.LTD -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBMAKES = Makefile_ltd Makefile_hyb - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/crt/ARM7/Makefile_hyb b/build/tests/HashCheckTemplate/crt/ARM7/Makefile_hyb deleted file mode 100644 index 1af439e1..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/Makefile_hyb +++ /dev/null @@ -1,52 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - init - ARM7.TWL -# File: Makefile.HYB -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL - -# Codegen for sub processer -override TWL_PROC = ARM7 - -# Avoid to use pre-compile-header of "nitro.h" -TWL_NO_STD_PCHDR = True - -# Avoid to build THUMB version object -override TARGET_CODEGEN = ARM - -# Avoid to build LIMITED version object -override TWL_ARCHGEN = HYBRID - -SRCDIR = src -INCDIR = ../common/include - -SRCS = crt0_hct.HYB.c -TARGET_OBJ = crt0_hct.HYB.TWL.o - -MACRO_FLAGS += -DSDK_NOINIT - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -$(OBJDIR)/$(TARGET_OBJ): $(OBJDIR)/$(SRCS:.c=.o) - $(CP) $< $@ - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/crt/ARM7/Makefile_ltd b/build/tests/HashCheckTemplate/crt/ARM7/Makefile_ltd deleted file mode 100644 index 9b602b3f..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/Makefile_ltd +++ /dev/null @@ -1,52 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - init - ARM7.TWL -# File: Makefile.LTD -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL - -# Codegen for sub processer -override TWL_PROC = ARM7 - -# Avoid to use pre-compile-header of "nitro.h" -TWL_NO_STD_PCHDR = True - -# Avoid to build THUMB version object -override TARGET_CODEGEN = ARM - -# Avoid to build HYBRID version object -override TWL_ARCHGEN = LIMITED - -SRCDIR = src -INCDIR = ../common/include - -SRCS = crt0_hct.LTD.c -TARGET_OBJ = crt0_hct.LTD.TWL.o - -MACRO_FLAGS += -DSDK_NOINIT - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -$(OBJDIR)/$(TARGET_OBJ): $(OBJDIR)/$(SRCS:.c=.o) - $(CP) $< $@ - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.HYB.c b/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.HYB.c deleted file mode 100644 index 1e2a39f7..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.HYB.c +++ /dev/null @@ -1,918 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - ARM7.TWL - File: crt0.HYB.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "boot_sync.h" - - - -/*---------------------------------------------------------------------------*/ -void _start(void); -void _start_AutoloadDoneCallback(void* argv[]); -void WVR_ShelterExtWram(void); -void INIT_InitializeScfg(void); - -#define SDK_NITROCODE_LE 0x2106c0de -#define SDK_NITROCODE_BE 0xdec00621 - -#define SDK_TWLCODE_LE 0x6314c0de -#define SDK_TWLCODE_BE 0xdec01463 - -/* ŠO•”ŠÖ”ŽQÆ’è‹` */ -extern void OS_IrqHandler(void); -extern void _fp_init(void); -extern void __call_static_initializers(void); - -/* “à•”ŠÖ”ƒvƒƒgƒ^ƒCƒv’è‹` */ -static void INITi_SetHMACSHA1ToAppParam(void); -static void INITi_DoAutoload(void); -static void INITi_ShelterLtdBinary(void); -static BOOL INITi_IsRunOnTwl( void ); -static void INITi_CopySysConfig( void ); -static void INITi_DetectMainMemorySize(void); -#ifndef SDK_NOINIT -static void INITi_ShelterStaticInitializer(u32* ptr); -static void INITi_CallStaticInitializers(void); -#endif -static void* INITi_Copy32(void* dst, void* src, u32 size); -static void* INITi_Fill32(void* dst, u32 value, u32 size); - -/* ƒŠƒ“ƒJƒXƒNƒŠƒvƒg‚É‚æ‚è’è‹`‚³‚ê‚éƒVƒ“ƒ{ƒ‹ŽQÆ */ -extern void SDK_WRAM_ARENA_LO(void); -extern void SDK_AUTOLOAD_LIST(void); -extern void SDK_AUTOLOAD_LIST_END(void); -extern void SDK_AUTOLOAD_START(void); -extern void SDK_STATIC_BSS_START(void); -extern void SDK_STATIC_BSS_END(void); - -void* const _start_ModuleParams[] = -{ - (void*)SDK_AUTOLOAD_LIST, - (void*)SDK_AUTOLOAD_LIST_END, - (void*)SDK_AUTOLOAD_START, - (void*)SDK_STATIC_BSS_START, - (void*)SDK_STATIC_BSS_END, - (void*)0, // CompressedStaticEnd. This fixed number will be updated by compstatic tool. - (void*)SDK_CURRENT_VERSION_NUMBER, - (void*)SDK_NITROCODE_BE, - (void*)SDK_NITROCODE_LE, -}; - -extern void SDK_LTDAUTOLOAD_LIST(void); -extern void SDK_LTDAUTOLOAD_LIST_END(void); -extern void SDK_LTDAUTOLOAD_START(void); - -void* const _start_LtdModuleParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LIST, - (void*)SDK_LTDAUTOLOAD_LIST_END, - (void*)SDK_LTDAUTOLOAD_START, - (void*)0, // CompressedLtdautoloadEnd. This fixed number will be updated by compstatic tool. - (void*)SDK_TWLCODE_BE, - (void*)SDK_TWLCODE_LE, -}; - -extern void SDK_LTDAUTOLOAD_LTDMAIN_START(void); - -void* const _start_LtdMainParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LTDMAIN_START, -}; - -#ifdef DEBUG_WRAM_SETTING -u32 const wramMapping[12] = { - 0x8d898581, 0x8c888480, 0x9c989490, 0x8c888480, - 0x9c989490, 0x00000000, 0x09403900, 0x09803940, - 0x00403000, 0x09403900, 0x09803940, 0x0300000f -}; -#endif - -#define DIGEST_HASH_BLOCK_SIZE_SHA1 (512/8) -static const u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = -{ - 0x21, 0x06, 0xc0, 0xde, - 0xba, 0x98, 0xce, 0x3f, - 0xa6, 0x92, 0xe3, 0x9d, - 0x46, 0xf2, 0xed, 0x01, - - 0x76, 0xe3, 0xcc, 0x08, - 0x56, 0x23, 0x63, 0xfa, - 0xca, 0xd4, 0xec, 0xdf, - 0x9a, 0x62, 0x78, 0x34, - - 0x8f, 0x6d, 0x63, 0x3c, - 0xfe, 0x22, 0xca, 0x92, - 0x20, 0x88, 0x97, 0x23, - 0xd2, 0xcf, 0xae, 0xc2, - - 0x32, 0x67, 0x8d, 0xfe, - 0xca, 0x83, 0x64, 0x98, - 0xac, 0xfd, 0x3e, 0x37, - 0x87, 0x46, 0x58, 0x24, -}; - -/* IPL ‚É‚æ‚Á‚ăƒCƒ“ƒƒ‚ƒŠã‚É“WŠJ‚³‚ê‚éî•ñ‚̃AƒhƒŒƒX’è‹` */ -#define IPL_PARAM_DOWNLOAD_PARAMETER 0x023fe904 -#define IPL_PARAM_CARD_ROM_HEADER 0x023fe940 - -/*---------------------------------------------------------------------------* - Name: ShakeHand - Description: ARM9 ‚Ì ShakeHand ŠÖ”‚Æ“¯Šú‚ðŽæ‚éB - ƒƒCƒ“ƒƒ‚ƒŠ‚łȂ¢ƒƒ‚ƒŠ‹óŠÔ‚ÅŽÀs‚³‚ê‚é•K—v‚ª‚ ‚éB - Arguments: r0 - ARM9 “¯Šú—p•Ï”‚ւ̃|ƒCƒ“ƒ^B - r1 - ARM7 “¯Šú—p•Ï”‚ւ̃|ƒCƒ“ƒ^B - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_ShakeHand[10] = -{ - 0xe1d020b0, /* ldrh r2, [r0] ; “¯Šú•Ï”‚X‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe1d130b0, /* ldrh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe2833001, /* @1: add r3, r3, #1 ; “¯Šú•Ï”‚V ++ */ - 0xe1c130b0, /* strh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚­ */ - 0xe1d0c0b0, /* ldrh r12, [r0] ; “¯Šú•Ï”‚X‚ÌŒ»ó‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe152000c, /* cmp r2, r12 ; “¯Šú•Ï”‚X‚̕ω»‚ð”»’è‚·‚é */ - 0x0afffffa, /* beq @1 ; •ω»‚µ‚Ä‚¢‚È‚¯‚ê‚΃‹[ƒv */ - 0xe2833001, /* add r3, r3, #1 ; “¯Šú•Ï”‚V ++ */ - 0xe1c130b0, /* strh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚­ */ - 0xe12fff1e /* bx lr ; ƒnƒ“ƒhƒVƒFƒCƒNŠ®—¹ */ -}; - -#ifdef DEBUG_WRAM_SETTING -/*---------------------------------------------------------------------------* - Name: WaitAgreement - Description: ARM9 ‚Ì‹N“®ƒxƒNƒ^‚ª“Á’è‚Ìó‘ԂɂȂé‚܂ő҂ÂB - ƒƒCƒ“ƒƒ‚ƒŠ‚łȂ¢ƒƒ‚ƒŠ‹óŠÔ‚ÅŽÀs‚³‚ê‚é•K—v‚ª‚ ‚éB - Arguments: r0 - “¯Šú—pƒtƒF[ƒYŠÇ—•Ï”‚ւ̃|ƒCƒ“ƒ^B - r1 - ‘Ò‹@‚·‚éƒtƒF[ƒY”Ô†B - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_WaitAgreement[7] = -{ - 0xe1d020b0, /* @1: ldrh r2, [r0] ; ƒtƒF[ƒYŠÇ—•Ï”‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe1510002, /* cmp r1, r2 ; ‘Ò‹@ƒtƒF[ƒY”Ô†‚Æ”äŠr */ - 0x012fff1e, /* bxeq lr ; ˆê’v‚µ‚Ä‚¢‚ê‚Αҋ@Š®—¹ */ - 0xe3a03010, /* mov r3, #16 ; ‹óƒ‹[ƒv‰ñ”‰Šú‰» */ - 0xe2533001, /* @2: subs r3, r3, #1 ; ‹óƒ‹[ƒv‰ñ” -- */ - 0x1afffffd, /* bne @2 ; 16 ‰ñƒ‹[ƒv */ - 0xeafffff8 /* b @1 ; 擪‚É–ß‚é */ -}; -#endif - -/*---------------------------------------------------------------------------* - Name: GotoMain - Description: ARM9 ‚É“Á’è‚Ìó‘ԂɂȂÁ‚½‚±‚Æ‚ð“`‚¦‚½ã‚ÅAMain ŠÖ”‚ÖƒWƒƒƒ“ƒv - ‚·‚éBƒƒCƒ“ƒƒ‚ƒŠ‚łȂ¢ƒƒ‚ƒŠ‹óŠÔ‚ÅŽÀs‚³‚ê‚é•K—v‚ª‚ ‚éB - Arguments: r0 - Main ŠÖ”‚̃|ƒCƒ“ƒ^BMain ŠÖ”‚ª Thumb ƒR[ƒh‚Å‚ ‚éê‡ - ‚É‚ÍAbx –½—߂ŃWƒƒƒ“ƒv‚·‚邽‚ßʼnºˆÊƒrƒbƒg‚ª 1 ‚ɂȂÁ‚Ä - ‚¢‚é•K—v‚ª‚ ‚éB - r1 - “¯Šú—pƒtƒF[ƒYŠÇ—•Ï”‚ւ̃|ƒCƒ“ƒ^B - r2 - ARM9 ‚É“`‚¦‚éƒtƒF[ƒY”Ô†B - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_GotoMain[2] = -{ - 0xe1c120b0, /* strh r2, [r1] ; ƒtƒF[ƒYŠÇ—•Ï”‚ðXV */ - 0xe12fff10 /* bx r0 ; Main ŠÖ”‚ÖƒWƒƒƒ“ƒv */ -}; - -/*---------------------------------------------------------------------------*/ -#include - -/*---------------------------------------------------------------------------* - Name: _start - Description: ‹N“®ƒxƒNƒ^B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start(void) -{ -@000: - /* Š„‚螂݋֎~ */ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] // Use that LSB of HW_REG_BASE is 0b0 - - /* ƒnƒ“ƒhƒVƒFƒCƒN—pƒ}ƒCƒNƒƒR[ƒh‚ðê—p WRAM ‚ɃRƒs[ */ - ldr r1, =microcode_ShakeHand - ldr r2, =HW_PRV_WRAM - add r3, r2, #40 -@001: ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @001 - - /* ê—p WRAM ã‚̃R[ƒh‚Å ARM9 ‚ƃnƒ“ƒhƒVƒFƒCƒN */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 - - // ƒ[ƒh‚³‚ꂽƒAƒvƒŠ‚̃_ƒCƒWƒFƒXƒg‚ðŒvŽZ‚µ‚ăAƒvƒŠŠÔƒpƒ‰ƒ[ƒ^‚ÉŠi”[ - bl INITi_SetHMACSHA1ToAppParam - -@010: - /* ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^Ý’è */ - mov r0, #HW_PSR_SVC_MODE // SuperVisor mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_SVC_STACK_END - mov r0, #HW_PSR_IRQ_MODE // IRQ mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r1, sp, r1 - sub sp, sp, #4 // 4 bytes for stack check code - mov r0, #HW_PSR_SYS_MODE // System mode - msr cpsr_csfx, r0 - sub sp, r1, #4 // 4 bytes for stack check code - - /* ƒXƒ^ƒbƒN—̈æ‚ðƒNƒŠƒA */ - ldr r0, =SDK_SYS_STACKSIZE - sub r1, r1, r0 - ldr r2, =HW_PRV_WRAM_IRQ_STACK_END - mov r0, #0 -@011: cmp r1, r2 - strlt r0, [r1], #4 - blt @011 - - /* SCFG ‚ð HW_SYS_CONF_BUF ‚ÖƒRƒs[ */ - bl INIT_InitializeScfg - bl INITi_CopySysConfig - - /* TWL ƒn[ƒhƒEƒFƒAã‚Å“®ì‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚𒲸 */ - bl INITi_IsRunOnTwl - bne @013 - - /* TWL ƒn[ƒhƒEƒFƒAã‚Å“®ì‚µ‚Ä‚¢‚éê‡ */ - /* ƒvƒŠƒ[ƒhƒpƒ‰ƒ[ƒ^ƒAƒhƒŒƒX‚ªŠi”[‚³‚ê‚Ä‚¢‚È‚¢ê‡‚ÍAƒfƒtƒHƒ‹ƒg’l‚ðƒZƒbƒg */ - ldr r0, =HW_PRELOAD_PARAMETER_ADDR - ldr r1, [r0] - cmp r1, #0 - ldreq r1, =HW_PARAM_TWL_SETTINGS_DATA_DEFAULT - streq r1, [r0] - - b @020 - -@013: /* NTR ƒn[ƒhƒEƒFƒAã‚Å“®ì‚µ‚Ä‚¢‚éê‡ */ - /* ƒu[ƒgƒ^ƒCƒv‚ª MB ‚Ìꇂ̂ÝAROM ƒwƒbƒ_î•ñ‚ðŠ’èˆÊ’u‚ɃRƒs[ */ - ldr r0, =HW_WM_BOOT_BUF - ldrh r0, [r0] - cmp r0, #OS_BOOTTYPE_DOWNLOAD_MB - bne @020 - /* ƒJ[ƒh‚Ì ROM ƒwƒbƒ_î•ñ‚ð‹¤—LƒGƒŠƒA‚ɑޔð */ - ldr r0, =HW_CARD_ROM_HEADER - ldr r1, =IPL_PARAM_CARD_ROM_HEADER - mov r2, #HW_CARD_ROM_HEADER_SIZE - bl INITi_Copy32 - /* ƒ_ƒEƒ“ƒ[ƒhƒpƒ‰ƒ[ƒ^î•ñ‚ð‹¤—LƒGƒŠƒA‚ɑޔð */ - ldr r0, =HW_DOWNLOAD_PARAMETER - ldr r1, =IPL_PARAM_DOWNLOAD_PARAMETER - mov r2, #HW_DOWNLOAD_PARAMETER_SIZE - bl INITi_Copy32 - -@020: - /* Autoload ‚ðŽÀŽ{ */ - bl INITi_DoAutoload - - /* STATIC ƒuƒƒbƒN‚Ì .bss ƒZƒNƒVƒ‡ƒ“‚ð 0 ƒNƒŠƒA */ - mov r1, #0 // r1 = clear value for STATIC bss section - ldr r3, =_start_ModuleParams - ldr r0, [r3, #12] // r0 = start address of STATIC bss section - ldr r2, [r3, #16] - subs r2, r2, r0 // r2 = size of STATIC bss section - blgt INITi_Fill32 - - //---- detect main memory size - bl INITi_DetectMainMemorySize - -#ifndef SDK_FINALROM - //---- set debug print window - ldr r1, =HW_PRINT_OUTPUT_ARM9 - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9 - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7<<8) - strh r0, [r1] - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9ERR - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7ERR<<8) - strh r0, [r1, #2] -#endif - - /* Š„‚螂݃xƒNƒ^Ý’è */ - ldr r1, =HW_INTR_VECTOR_BUF - ldr r0, =OS_IrqHandler - str r0, [r1] - -#ifndef SDK_NOINIT - /* c++ —p‰Šú‰» */ - bl _fp_init - bl TwlSpStartUp - bl __call_static_initializers - bl INITi_CallStaticInitializers -#endif - -@030: - /* Main ŠÖ”‚ւ̃Wƒƒƒ“ƒv—pƒ}ƒCƒNƒƒR[ƒh‚ðƒXƒ^ƒbƒN‚Ì’ê‚ɃRƒs[ */ - ldr r1, =microcode_GotoMain - ldr r0, [r1], #4 - str r0, [sp, #-4] - ldr r0, [r1] - str r0, [sp] - - /* ƒ}ƒCƒNƒƒR[ƒh‚ðŒo—R‚µ‚Ä Main ŠÖ”‚ÖƒWƒƒƒ“ƒv */ - ldr r0, =TwlSpMain - ldr r1, =HW_BOOT_SYNC_PHASE - mov r2, #BOOT_SYNC_PHASE_4 - ldr lr, =HW_RESET_VECTOR - sub r3, sp, #4 - bx r3 -} - -#include -#include -#include -/*---------------------------------------------------------------------------* - Name: INITi_SetHMACSHA1ToAppParam - Description: ROM‚ªƒ[ƒh‚³‚ꂽŠeƒAƒvƒŠ—̈æ‚ÌHMACSHA1‚ðŒvŽZ‚µA“Á’è‚̃AƒhƒŒ - ƒX‚ɕۑ¶ - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -#define UNDEF_CODE 0xe7ffdeff -#define ENCRYPT_DEF_SIZE 0x800 -#define DGT_TGT_ADDR ( HW_MAIN_MEM + 0x0100 ) - -static void INITi_SetHMACSHA1ToAppParam(void) -{ - SVCHMACSHA1Context *pCon = ( SVCHMACSHA1Context * ) (0x2000300 - sizeof(SVCHMACSHA1Context)); - ROM_Header_Short *pROMH = (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; - u32 bak; - - // arm9_flx - bak = *(u32 *)pROMH->main_autoload_done; - *(u32 *)pROMH->main_autoload_done = 0xE12FFF1E; - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->main_ram_address, pROMH->main_size); - SVC_HMACSHA1GetHash(pCon, (void *)DGT_TGT_ADDR); - *(u32 *)pROMH->main_autoload_done = bak; - // arm7_flx - bak = *(u32 *)pROMH->sub_autoload_done; - *(u32 *)pROMH->sub_autoload_done = 0xE12FFF1E; - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->sub_ram_address, pROMH->sub_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 32)); - *(u32 *)pROMH->sub_autoload_done = bak; - // arm9_ltd - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->main_ltd_ram_address, pROMH->main_ltd_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 2 * 32)); - // arm7_ltd - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->sub_ltd_ram_address, pROMH->sub_ltd_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 3 * 32)); -} - -/*---------------------------------------------------------------------------* - Name: INITi_DoAutoload - Description: ƒŠƒ“ƒNî•ñ‚ɉˆ‚Á‚ÄAŠeƒI[ƒgƒ[ƒhƒuƒƒbƒN‚̌Œèƒf[ƒ^•”‚Ì“WŠJ - ‹y‚ѕϔ•”‚Ì 0 ƒNƒŠƒA‚ðs‚¤B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -/* - * < “ñ’iŠKƒI[ƒgƒ[ƒh > - * 0x02380000 ‚É crt0 ‹y‚шê’i–Úƒ[ƒhŒ³ƒoƒCƒiƒŠ‚ª”z’u‚³‚ê‚Ä‚¢‚éB - * NITRO ‚Æ‹¤—L‰Â”\‚È WRAM ã‚É”z’u‚³‚ê‚é‚ׂ«ƒoƒCƒiƒŠƒf[ƒ^‚ð 0x037f8000 ‚Ƀ[ƒh‚·‚éB - * NITRO ‚Æ‹¤—L‰Â”\‚È MAIN ã‚É”z’u‚³‚ê‚é‚ׂ«ƒoƒCƒiƒŠƒf[ƒ^‚ð 0x02fe0000 ‚Ƀ[ƒh‚·‚éB - * NITRO ‚Æ‹¤—L‰Â”\‚È VRAM ã‚É”z’u‚³‚ê‚é‚ׂ«ƒoƒCƒiƒŠƒf[ƒ^‚ª‚ ‚éê‡‚Í WVR ƒ‰ƒCƒuƒ‰ƒŠ‚̃[ƒ_ŠÖ”‚ðŒÄ‚Ño‚·B - * 0x02400000 ‚É ARM9 ‚Ì“ñ’i–Úƒ[ƒhŒ³ƒoƒCƒiƒŠ‚ª”z’u‚³‚ê‚Ä‚¢‚éB - * 0x04000 ƒoƒCƒg•ª‚̓J[ƒh ROM ‚©‚çēǂÝo‚µ•s‰Â‚Ȃ̂ÅA0x02f80000 - 0x02f84000 ‚É‘Þ”ð‚·‚éB - * 0x02e80000 ‚É“ñ’i–Úƒ[ƒhŒ³ƒoƒCƒiƒŠ‚ª”z’u‚³‚ê‚Ä‚¢‚éB - * 0x04000 ƒoƒCƒg•ª‚̓J[ƒh ROM ‚©‚çēǂÝo‚µ•s‰Â‚Ȃ̂ÅA0x02f84000 - 0x02f88000 ‚É‘Þ”ð‚·‚éB - * TWL ‚Å‚µ‚©“®ì‚µ‚È‚¢ WRAM ã‚É”z’u‚³‚ê‚é‚ׂ«ƒoƒCƒiƒŠƒf[ƒ^‚ð 0x03000000 ‚Ƀ[ƒh‚·‚éB - * TWL ‚Å‚µ‚©“®ì‚µ‚È‚¢ MAIN ã‚É”z’u‚³‚ê‚é‚ׂ«ƒoƒCƒiƒŠƒf[ƒ^‚ð 0x02f88000 ‚Ƀ[ƒh‚·‚éB - */ -static asm void -INITi_DoAutoload(void) -{ - stmfd sp!, {lr} - -@01_autoload: - /* NITRO ‹¤—pƒuƒƒbƒN‚ðƒI[ƒgƒ[ƒh */ - ldr r0, =_start_ModuleParams - ldr r12, [r0] // r12 = SDK_AUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_AUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_AUTOLOAD_START -@01_segments_loop: - cmp r12, r3 - bge @02_start - /* VRAM ‚ւ̃I[ƒgƒ[ƒhƒuƒƒbƒN‚©‚Ç‚¤‚©‚𒲸 */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, =HW_EXT_WRAM - cmp r0, r2 - beq @01_shelter_vram_segment - /* ŒÅ’èƒZƒNƒVƒ‡ƒ“ */ - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer ƒe[ƒuƒ‹ */ - ldr r0, [r12], #4 // r0 = start address of source range of static initializers table -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss ƒZƒNƒVƒ‡ƒ“ */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = size of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} // r1 = end address of source range of the autoload segment - b @01_segments_loop - -@01_shelter_vram_segment: - ldr r2, [r12], #12 // r2 = size of fixed section - add r1, r1, r2 // r1 = end address of source range of the autoload segment - /* VRAM ‚ւ̃I[ƒgƒ[ƒhƒuƒƒbƒN‚ðƒoƒbƒNƒAƒbƒv */ - stmfd sp!, {r1, r3, r12} - bl WVR_ShelterExtWram - ldmfd sp!, {r1, r3, r12} - b @01_segments_loop - -@02_start: - /* TWL ƒn[ƒhƒEƒFƒAã‚Å“®ì‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©’²¸ */ - bl INITi_IsRunOnTwl - bne @03_start - /* ēǂÝo‚µ•s‰Â•”•ª‚ð‘Þ”ð */ - bl INITi_ShelterLtdBinary - - /* TWL ê—pƒI[ƒgƒ[ƒhƒuƒƒbƒN‚Ì‘¶Ý‚ðŠm”F */ - ldr r1, =HW_TWL_ROM_HEADER_BUF - ldr r0, [r1, #ROM_Header.s.sub_ltd_size] - cmp r0, #0 - beq @03_start - -@02_autoload: - /* TWL ê—pƒuƒƒbƒN‚ðƒI[ƒgƒ[ƒh */ - ldr r0, =_start_LtdModuleParams - ldr r12, [r0] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_LTDAUTOLOAD_START -@02_segments_loop: - cmp r12, r3 - bge @03_start - /* ŒÅ’èƒZƒNƒVƒ‡ƒ“ */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer ƒe[ƒuƒ‹ */ - ldr r0, [r12], #4 -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss ƒZƒNƒVƒ‡ƒ“ */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = size of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} // r1 = end address of source range of the ltdautoload segment - b @02_segments_loop - -@03_start: - /* ƒI[ƒgƒ[ƒhŠ®—¹ƒR[ƒ‹ƒoƒbƒNŠÖ”ŒÄ‚Ño‚µ */ - ldr r0, =_start_ModuleParams - ldr r1, =_start_LtdModuleParams - ldmfd sp!, {lr} - b _start_AutoloadDoneCallback -} - -/*---------------------------------------------------------------------------* - Name: INITi_ShelterLtdBinary - Description: TWL ê—p‚̃I[ƒgƒ[ƒhŒ³ƒoƒCƒiƒŠƒf[ƒ^‚Ì“àAƒJ[ƒh ROM ‚©‚ç - ēǂÝo‚µ‚Å‚«‚È‚¢—̈æ‚̃f[ƒ^‚ð‘Þ”ðƒGƒŠƒA‚É‘Þ”ð‚·‚éB - ēǂÝo‚µ‚Å‚«‚È‚¢—̈æ‚̃f[ƒ^‚Í ARM7 —p‚Æ ARM9 —p‚ÌŠg’£í’“ - ƒ‚ƒWƒ…[ƒ‹‚Ì‚Q‚‚ɕª‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚é‚Ì‚ÅAç’·‚ł͂ ‚邪 - —¼•û‚Ìæ“ª‚©‚ç 0x4000 •ª‚ð‚»‚ê‚¼‚ê‘Þ”ð‚·‚éB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterLtdBinary(void) -{ - stmfd sp!, {lr} - - /* NAND ‚©‚çƒu[ƒg‚µ‚½ê‡‚É‚Í‘Þ”ð‚·‚éƒf[ƒ^‚ÌŽg‚¢“¹‚ª‚È‚¢ˆ×Aˆ—‚ðƒXƒLƒbƒv */ - ldr r3, =HW_TWL_ROM_HEADER_BUF - ldr r0, [r3, #ROM_Header.s.titleID_Hi] - tst r0, #TITLE_ID_HI_MEDIA_MASK - ldmnefd sp!, {pc} - -@shelter_arm7_ltdautoload_src: - /* ARM7 —pŠg’£í’“ƒ‚ƒWƒ…[ƒ‹‚Ì‘¶Ý‚ðŠm”F */ - ldr r1, [r3, #ROM_Header.s.sub_ltd_size] - cmp r1, #0 - beq @shelter_arm9_ltdautoload_src - - /* ARM7 —pŠg’£í’“ƒ‚ƒWƒ…[ƒ‹‚Ìæ“ª 16K bytes ‚ð‘Þ”ð */ - ldr r1, [r3, #ROM_Header.s.sub_ltd_ram_address] - ldr r0, =_start_LtdMainParams - ldr r0, [r0] - mov r2, #0x4000 // r2 = size of shelter buffer - sub r0, r0, r2 // r0 = SDK_LTDAUTOLOAD_LTDMAIN_START - 0x4000 - bl INITi_Copy32 - -@shelter_arm9_ltdautoload_src: - /* ARM9 —pŠg’£í’“ƒ‚ƒWƒ…[ƒ‹‚Ì‘¶Ý‚ðŠm”F */ - ldr r3, =HW_TWL_ROM_HEADER_BUF - ldr r1, [r3, #ROM_Header.s.main_ltd_size] - cmp r1, #0 - beq @end - - /* ARM9 —pŠg’£í’“ƒ‚ƒWƒ…[ƒ‹‚Ìæ“ª 16K bytes ‚ð‘Þ”ð */ - ldr r1, [r3, #ROM_Header.s.main_ltd_ram_address] - ldr r0, =_start_LtdMainParams - ldr r0, [r0] - mov r2, #0x4000 // r2 = size of shelter buffer - sub r0, r0, r2 - sub r0, r0, r2 // r0 = SDK_LTDAUTOLOAD_LTDMAIN_START - 0x8000 - bl INITi_Copy32 - -@end: - ldmfd sp!, {pc} -} - -#ifndef SDK_NOINIT -/*---------------------------------------------------------------------------* - Name: INITi_ShelterStaticInitializer - Description: ŠeƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg“à‚Ì static initializer ‚ւ̃|ƒCƒ“ƒ^ - ƒe[ƒuƒ‹‚ð IRQ ƒXƒ^ƒbƒN‚ÌÅã•”‚É‘Þ”ð‚·‚éB - Arguments: ptr - ƒZƒOƒƒ“ƒg“à‚̃|ƒCƒ“ƒ^ƒe[ƒuƒ‹‚ւ̃|ƒCƒ“ƒ^B - ƒe[ƒuƒ‹‚Í NULL ‚ÅI’[‚³‚ê‚Ä‚¢‚é•K—v‚ª‚ ‚éB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterStaticInitializer(u32* ptr) -{ - /* ˆø”Šm”F */ - cmp r0, #0 - bxeq lr - - /* ‘Þ”ðêŠæ“ªƒAƒhƒŒƒX‚ðŒvŽZ */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 - - /* ‘Þ”ðêŠæ“ª‚©‚ç‹ó‚«êŠ‚ð’²¸ */ -@001: ldr r2, [r1] - cmp r2, #0 - addne r1, r1, #4 - bne @001 - - /* ‹ó‚«êŠ‚Éƒe[ƒuƒ‹‚ðƒRƒs[ */ -@002: ldr r2, [r0], #4 - str r2, [r1], #4 - cmp r2, #0 - bne @002 - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CallStaticInitializers - Description: ŠeƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg“à‚Ì static initializer ‚ðŒÄ‚Ño‚·B - ƒI[ƒgƒ[ƒhˆ—‚É‚æ‚Á‚Ä IRQ ƒXƒ^ƒbƒN‚ÌÅã•”‚É‘Þ”ð‚³‚ê‚Ä‚¢‚é - ŠÖ”ƒ|ƒCƒ“ƒ^ƒe[ƒuƒ‹‚ðˆê‚‚¸‚ŒĂÑo‚·B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_CallStaticInitializers(void) -{ - stmdb sp!, {lr} - - /* ƒe[ƒuƒ‹‘Þ”ðêŠæ“ªƒAƒhƒŒƒX‚ðŒvŽZ */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 - - /* ƒe[ƒuƒ‹‚ÉŠÇ—‚³‚ê‚Ä‚¢‚éƒ|ƒCƒ“ƒ^‚ðˆê‚‚¸‚ŒĂÑo‚µ */ -@001: ldr r0, [r1] - cmp r0, #0 - beq @002 - stmdb sp!, {r1} - mov lr, pc - bx r0 - ldmia sp!, {r1} - /* ˆê’UŒÄ‚Ño‚µ‚½ƒ|ƒCƒ“ƒ^‚̓[ƒƒNƒŠƒA (IRQƒXƒ^ƒbƒN‚ðŠÔŽØ‚肵‚Ä‚¢‚éˆ×) */ - mov r0, #0 - str r0, [r1], #4 - b @001 - -@002: ldmia sp!, {lr} - bx lr -} -#endif - -/*---------------------------------------------------------------------------* - Name: _start_AutoloadDoneCallback - Description: ƒI[ƒgƒ[ƒhŠ®—¹ƒR[ƒ‹ƒoƒbƒNB - Arguments: argv - ƒI[ƒgƒ[ƒhƒpƒ‰ƒ[ƒ^‚ð•ÛŽ‚µ‚Ä‚¢‚é”z—ñB - argv[0] = SDK_AUTOLOAD_LIST - argv[1] = SDK_AUTOLOAD_LIST_END - argv[2] = SDK_AUTOLOAD_START - argv[3] = SDK_STATIC_BSS_START - argv[4] = SDK_STATIC_BSS_END - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start_AutoloadDoneCallback(void* argv[]) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: NitroSpStartUp - Description: Hook for user start up. - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL void -NitroSpStartUp(void) -{ -} - -/*---------------------------------------------------------------------------* - Name: INITi_IsRunOnTwl - - Description: check running platform - - This function is used in only Nitro-TWL hybrid mode. - (In Nitro mode and TWL limited mode, treated as constant) - - Arguments: None - - Returns: TRUE : running on TWL - FALSE : running on NITRO - *---------------------------------------------------------------------------*/ -static asm BOOL INITi_IsRunOnTwl( void ) -{ - ldr r0, =HW_PRV_WRAM_SYSRV - ldrb r0, [r0,#HWi_WSYS08_WRAMOFFSET] - and r0, r0, #HWi_WSYS08_ROM_ARM9SEC_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK - cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK - moveq r0, #TRUE - movne r0, #FALSE - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INIT_InitializeScfg - - Description: ƒ[ƒ_[‚ªs‚¤ SCFG ƒuƒƒbƒN‚Ö‚Ìݒ舗‚ð‘ãs‚·‚éˆ×‚ÌŠÖ”B - ˆ—‚ÌŽÀ‘Ì‚Í crt0 ‚ÌŠO•”‚É’è‹`‚·‚邽‚ßAŽãƒVƒ“ƒ{ƒ‹‚Æ‚·‚éB - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -INIT_InitializeScfg(void) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CopySysConfig - - Description: copy SCFG registers to HW_SYS_CONF_BUF and HW_PRV_WRAM_SYSRV - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static asm void INITi_CopySysConfig( void ) -{ - //---- copy scfg setting - ldr r2, =HW_PRV_WRAM_SYSRV - ldr r3, =HW_SYS_CONF_BUF - ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] - str r0, [r3, #HWi_WSYS04_OFFSET] - ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] - strh r0, [r3, #HWi_WSYS08_OFFSET] - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_DetectMainMemorySize - - Description: detect main memory size. - result is written into (u32*)HW_MMEMCHECKER_SUB. - value is [OS_CONSOLE_SIZE_4MB|OS_CONSOLE_SIZE_8MB| - OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32MB] - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -#define OSi_IMAGE_DIFFERENCE 0x400000 -#define OSi_IMAGE_DIFFERENCE2 0xb000000 -#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK) -#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK) - -#define OSi_CHECKNUM1 0x55 -#define OSi_CHECKNUM2 0xaa -#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz) - -static asm void INITi_DetectMainMemorySize( void ) -{ - stmfd sp!, {lr} - - //---- detect memory size - mov r0, #OS_CONSOLE_SIZE_4MB - mov r1, #0 - - ldr r2, =HW_MMEMCHECKER_SUB - sub r3, r2, #OSi_IMAGE_DIFFERENCE -@1: - strh r1, [r2] - ldrh r12, [r3] - cmp r1, r12 - bne @2 - - add r1, r1, #1 - cmp r1, #2 // check 2 loop - bne @1 - - //---- 4MB - b @3 - - //---- 8MB or 16MB or 32MB -@2: - // check if running on twl/nitro - bl INITi_IsRunOnTwl - movne r0, #OS_CONSOLE_SIZE_8MB - bne @3 - - //---- 16MB or 32MB - add r3, r2, #OSi_IMAGE_DIFFERENCE2 - mov r0, #OS_CONSOLE_SIZE_16MB - ldrb r2, [r3] - - mov r1, #OSi_CHECKNUM1 - strb r1, [r3] - - ldr r12, =OSi_100usWAIT -@4 subs r12, r12, #4 - bcs @4 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM1 - bne @3 - - mov r1, #OSi_CHECKNUM2 - strb r1, [r3] - - ldr r12, =OSi_100usWAIT -@5 subs r12, r12, #4 - bcs @5 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM2 - moveq r0, #OS_CONSOLE_SIZE_32MB - -@3: - //---- check SMX_CNT - strb r2, [r3] - ldr r3, =REG_SMX_CNT_ADDR - ldrh r1, [r3] - and r1, r1, #OSi_DETECT_NITRO_MASK - cmp r1, #OSi_DETECT_NITRO_VAL - orreq r0, r0, #OS_CHIPTYPE_SMX_MASK - - ldr r2, =HW_MMEMCHECKER_SUB - strh r0, [r2] - - ldmfd sp!, {lr} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: WVR_ShelterExtWram - Description: WVR ƒ‰ƒCƒuƒ‰ƒŠ—p‚É Šg’£ WRAM ‚É”z’u‚³‚ê‚éƒI[ƒgƒ[ƒhƒuƒƒbƒN‚ð - ƒƒCƒ“ƒƒ‚ƒŠ‚É‘Þ”ð‚·‚éŠÖ”‚̃_ƒ~[B - ŽÀÛ‚ÉŠg’£ WRAM ‚Ƀ‰ƒCƒuƒ‰ƒŠ‚ð”z’u‚·‚é•K—v‚Ì‚ ‚éƒRƒ“ƒ|[ƒlƒ“ƒg - ‚Å‚ÍA“–ŠÖ”‚Ì‹­ƒVƒ“ƒ{ƒ‹‚ª•Ê“rƒŠƒ“ƒN‚³‚ê‚éB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL void -WVR_ShelterExtWram(void) -{ -} - -/*---------------------------------------------------------------------------* - Name: INITi_Copy32 - Description: ‰Â”\‚ÈŒÀ‚è 32 ƒoƒCƒg’PˆÊ‚ÅA”¼’[‚È•ª‚Í 4 ƒoƒCƒg’PˆÊ‚ŃRƒs[‚ð - s‚¤B - ƒXƒ^ƒbƒN‚ð 36 ƒoƒCƒgÁ”ï‚·‚邪AƒŒƒWƒXƒ^ r3 - r12 ‚Í”j‰ó‚µ‚È‚¢B - Arguments: r0 - ƒRƒs[æ‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r1 - ƒRƒs[Œ³‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r2 - ƒRƒs[‚·‚é’·‚³‚ðƒoƒCƒg’PˆÊ‚ÅŽw’è ( 4 ‚Ì”{” )B - Returns: r0 - ƒRƒs[Œã‚̃Rƒs[æ‚ւ̃|ƒCƒ“ƒ^ ( r0 + r2 )B - r1 - ƒRƒs[Œã‚̃Rƒs[Œ³‚ւ̃|ƒCƒ“ƒ^ ( r1 + r2 )B - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Copy32(void* dst, void* src, u32 size) -{ - stmfd sp!, {r3-r11} - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - ldmia r1!, {r4-r11} - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - ldmneia r1!, {r4-r7} - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - ldmneia r1!, {r4-r5} - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - ldmneia r1!, {r4} - stmneia r0!, {r4} - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Fill32 - Description: ‰Â”\‚ÈŒÀ‚è 32 ƒoƒCƒg’PˆÊ‚ÅA”¼’[‚È•ª‚Í 4 ƒoƒCƒg’PˆÊ‚Ńoƒbƒtƒ@ - “à—e‚ðŽw’èƒf[ƒ^‚Å–„‚ß‚éB - ƒXƒ^ƒbƒN‚ð 36 ƒoƒCƒgÁ”ï‚·‚邪AƒŒƒWƒXƒ^ r3 - r12 ‚Í”j‰ó‚µ‚È‚¢B - Arguments: r0 - ƒoƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r1 - ƒoƒbƒtƒ@‚ð–„‚ß‚é“à—e‚ð 32 bit ’l‚ÅŽw’èB - r2 - ƒoƒbƒtƒ@‚𖄂߂钷‚³‚ðƒoƒCƒg’PˆÊ‚ÅŽw’è ( 4 ‚Ì”{” )B - Returns: r0 - ˆ—Œã‚̃oƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^ ( r0 + r2 )B - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Fill32(void* dst, u32 value, u32 size) -{ - stmfd sp!, {r3-r11} - mov r4, r1 - mov r5, r1 - mov r6, r1 - mov r7, r1 - mov r8, r1 - mov r9, r1 - mov r10, r1 - mov r11, r1 - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - stmneia r0!, {r4} - ldmfd sp!, {r3-r11} - bx lr -} - -#include diff --git a/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.LTD.c b/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.LTD.c deleted file mode 100644 index 110841fd..00000000 --- a/build/tests/HashCheckTemplate/crt/ARM7/src/crt0_hct.LTD.c +++ /dev/null @@ -1,861 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - ARM7.TWL - File: crt0.LTD.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "boot_sync.h" - -/*---------------------------------------------------------------------------*/ -void _start(void); -void _start_AutoloadDoneCallback(void* argv[]); -void INIT_InitializeScfg(void); - -#define SDK_NITROCODE_LE 0x2106c0de -#define SDK_NITROCODE_BE 0xdec00621 - -#define SDK_TWLCODE_LE 0x6314c0de -#define SDK_TWLCODE_BE 0xdec01463 - -/* ŠO•”ŠÖ”ŽQÆ’è‹` */ -extern void OS_IrqHandler(void); -extern void _fp_init(void); -extern void __call_static_initializers(void); - -/* “à•”ŠÖ”ƒvƒƒgƒ^ƒCƒv’è‹` */ -static void INITi_SetHMACSHA1ToAppParam(void); -static void INITi_DoAutoload(void); -static void INITi_ShelterLtdBinary(void); -static BOOL INITi_IsRunOnTwl( void ); -static void INITi_CopySysConfig( void ); -static void INITi_DetectMainMemorySize(void); -#ifndef SDK_NOINIT -static void INITi_ShelterStaticInitializer(u32* ptr); -static void INITi_CallStaticInitializers(void); -#endif -static void* INITi_Copy32(void* dst, void* src, u32 size); -static void* INITi_Fill32(void* dst, u32 value, u32 size); - -/* ƒŠƒ“ƒJƒXƒNƒŠƒvƒg‚É‚æ‚è’è‹`‚³‚ê‚éƒVƒ“ƒ{ƒ‹ŽQÆ */ -extern void SDK_AUTOLOAD_LIST(void); -extern void SDK_AUTOLOAD_LIST_END(void); -extern void SDK_AUTOLOAD_START(void); -extern void SDK_STATIC_BSS_START(void); -extern void SDK_STATIC_BSS_END(void); - -void* const _start_ModuleParams[] = -{ - (void*)SDK_AUTOLOAD_LIST, - (void*)SDK_AUTOLOAD_LIST_END, - (void*)SDK_AUTOLOAD_START, - (void*)SDK_STATIC_BSS_START, - (void*)SDK_STATIC_BSS_END, - (void*)0, // CompressedStaticEnd. This fixed number will be updated by compstatic tool. - (void*)SDK_CURRENT_VERSION_NUMBER, - (void*)SDK_NITROCODE_BE, - (void*)SDK_NITROCODE_LE, -}; - -extern void SDK_LTDAUTOLOAD_LIST(void); -extern void SDK_LTDAUTOLOAD_LIST_END(void); -extern void SDK_LTDAUTOLOAD_START(void); - -void* const _start_LtdModuleParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LIST, - (void*)SDK_LTDAUTOLOAD_LIST_END, - (void*)SDK_LTDAUTOLOAD_START, - (void*)0, // CompressedLtdautoloadEnd. This fixed number will be updated by compstatic tool. - (void*)SDK_TWLCODE_BE, - (void*)SDK_TWLCODE_LE, -}; - -extern void SDK_LTDAUTOLOAD_LTDMAIN_START(void); - -void* const _start_LtdMainParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LTDMAIN_START, -}; - -#ifdef DEBUG_WRAM_SETTING -u32 const wramMapping[12] = { - 0x8d898581, 0x8c888480, 0x9c989490, 0x8c888480, - 0x9c989490, 0x00000000, 0x09403900, 0x09803940, - 0x080037c0, 0x09403900, 0x09803940, 0x0000000f -}; -#endif - -#define DIGEST_HASH_BLOCK_SIZE_SHA1 (512/8) -static const u8 s_digestDefaultKey[ DIGEST_HASH_BLOCK_SIZE_SHA1 ] = -{ - 0x21, 0x06, 0xc0, 0xde, - 0xba, 0x98, 0xce, 0x3f, - 0xa6, 0x92, 0xe3, 0x9d, - 0x46, 0xf2, 0xed, 0x01, - - 0x76, 0xe3, 0xcc, 0x08, - 0x56, 0x23, 0x63, 0xfa, - 0xca, 0xd4, 0xec, 0xdf, - 0x9a, 0x62, 0x78, 0x34, - - 0x8f, 0x6d, 0x63, 0x3c, - 0xfe, 0x22, 0xca, 0x92, - 0x20, 0x88, 0x97, 0x23, - 0xd2, 0xcf, 0xae, 0xc2, - - 0x32, 0x67, 0x8d, 0xfe, - 0xca, 0x83, 0x64, 0x98, - 0xac, 0xfd, 0x3e, 0x37, - 0x87, 0x46, 0x58, 0x24, -}; - -/*---------------------------------------------------------------------------* - Name: ShakeHand - Description: ARM9 ‚Ì ShakeHand ŠÖ”‚Æ“¯Šú‚ðŽæ‚éB - ƒƒCƒ“ƒƒ‚ƒŠ‚łȂ¢ƒƒ‚ƒŠ‹óŠÔ‚ÅŽÀs‚³‚ê‚é•K—v‚ª‚ ‚éB - Arguments: r0 - ARM9 “¯Šú—p•Ï”‚ւ̃|ƒCƒ“ƒ^B - r1 - ARM7 “¯Šú—p•Ï”‚ւ̃|ƒCƒ“ƒ^B - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_ShakeHand[10] = -{ - 0xe1d020b0, /* ldrh r2, [r0] ; “¯Šú•Ï”‚X‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe1d130b0, /* ldrh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe2833001, /* @1: add r3, r3, #1 ; “¯Šú•Ï”‚V ++ */ - 0xe1c130b0, /* strh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚­ */ - 0xe1d0c0b0, /* ldrh r12, [r0] ; “¯Šú•Ï”‚X‚ÌŒ»ó‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe152000c, /* cmp r2, r12 ; “¯Šú•Ï”‚X‚̕ω»‚ð”»’è‚·‚é */ - 0x0afffffa, /* beq @1 ; •ω»‚µ‚Ä‚¢‚È‚¯‚ê‚΃‹[ƒv */ - 0xe2833001, /* add r3, r3, #1 ; “¯Šú•Ï”‚V ++ */ - 0xe1c130b0, /* strh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚­ */ - 0xe12fff1e /* bx lr ; ƒnƒ“ƒhƒVƒFƒCƒNŠ®—¹ */ -}; - -#ifdef DEBUG_WRAM_SETTING -/*---------------------------------------------------------------------------* - Name: WaitAgreement - Description: ARM9 ‚Ì‹N“®ƒxƒNƒ^‚ª“Á’è‚Ìó‘ԂɂȂé‚܂ő҂ÂB - ƒƒCƒ“ƒƒ‚ƒŠ‚łȂ¢ƒƒ‚ƒŠ‹óŠÔ‚ÅŽÀs‚³‚ê‚é•K—v‚ª‚ ‚éB - Arguments: r0 - “¯Šú—pƒtƒF[ƒYŠÇ—•Ï”‚ւ̃|ƒCƒ“ƒ^B - r1 - ‘Ò‹@‚·‚éƒtƒF[ƒY”Ô†B - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_WaitAgreement[7] = -{ - 0xe1d020b0, /* @1: ldrh r2, [r0] ; ƒtƒF[ƒYŠÇ—•Ï”‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe1510002, /* cmp r1, r2 ; ‘Ò‹@ƒtƒF[ƒY”Ô†‚Æ”äŠr */ - 0x012fff1e, /* bxeq lr ; ˆê’v‚µ‚Ä‚¢‚ê‚Αҋ@Š®—¹ */ - 0xe3a03010, /* mov r3, #16 ; ‹óƒ‹[ƒv‰ñ”‰Šú‰» */ - 0xe2533001, /* @2: subs r3, r3, #1 ; ‹óƒ‹[ƒv‰ñ” -- */ - 0x1afffffd, /* bne @2 ; 16 ‰ñƒ‹[ƒv */ - 0xeafffff8 /* b @1 ; 擪‚É–ß‚é */ -}; -#endif - -/*---------------------------------------------------------------------------* - Name: GotoMain - Description: ARM9 ‚É“Á’è‚Ìó‘ԂɂȂÁ‚½‚±‚Æ‚ð“`‚¦‚½ã‚ÅAMain ŠÖ”‚ÖƒWƒƒƒ“ƒv - ‚·‚éBƒƒCƒ“ƒƒ‚ƒŠ‚łȂ¢ƒƒ‚ƒŠ‹óŠÔ‚ÅŽÀs‚³‚ê‚é•K—v‚ª‚ ‚éB - Arguments: r0 - Main ŠÖ”‚̃|ƒCƒ“ƒ^BMain ŠÖ”‚ª Thumb ƒR[ƒh‚Å‚ ‚éê‡ - ‚É‚ÍAbx –½—߂ŃWƒƒƒ“ƒv‚·‚邽‚ßʼnºˆÊƒrƒbƒg‚ª 1 ‚ɂȂÁ‚Ä - ‚¢‚é•K—v‚ª‚ ‚éB - r1 - “¯Šú—pƒtƒF[ƒYŠÇ—•Ï”‚ւ̃|ƒCƒ“ƒ^B - r2 - ARM9 ‚É“`‚¦‚éƒtƒF[ƒY”Ô†B - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_GotoMain[2] = -{ - 0xe1c120b0, /* strh r2, [r1] ; ƒtƒF[ƒYŠÇ—•Ï”‚ðXV */ - 0xe12fff10 /* bx r0 ; Main ŠÖ”‚ÖƒWƒƒƒ“ƒv */ -}; - -/*---------------------------------------------------------------------------*/ -#include - -/*---------------------------------------------------------------------------* - Name: _start - Description: ‹N“®ƒxƒNƒ^B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start(void) -{ -@000: - /* Š„‚螂݋֎~ */ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] // Use that LSB of HW_REG_BASE is 0b0 - - /* ƒnƒ“ƒhƒVƒFƒCƒN—pƒ}ƒCƒNƒƒR[ƒh‚ðê—p WRAM ‚ɃRƒs[ */ - ldr r1, =microcode_ShakeHand - ldr r2, =HW_PRV_WRAM - add r3, r2, #40 -@001: ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @001 - - /* ê—p WRAM ã‚̃R[ƒh‚Å ARM9 ‚ƃnƒ“ƒhƒVƒFƒCƒN */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 - - // ƒ[ƒh‚³‚ꂽƒAƒvƒŠ‚̃_ƒCƒWƒFƒXƒg‚ðŒvŽZ‚µ‚ăAƒvƒŠŠÔƒpƒ‰ƒ[ƒ^‚ÉŠi”[ - bl INITi_SetHMACSHA1ToAppParam - -@010: - /* ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^Ý’è */ - mov r0, #HW_PSR_SVC_MODE // SuperVisor mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_SVC_STACK_END - mov r0, #HW_PSR_IRQ_MODE // IRQ mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r1, sp, r1 - sub sp, sp, #4 // 4 bytes for stack check code - mov r0, #HW_PSR_SYS_MODE - msr cpsr_csfx, r0 - sub sp, r1, #4 // 4 bytes for stack check code - - /* ƒXƒ^ƒbƒN—̈æ‚ðƒNƒŠƒA */ - ldr r0, =SDK_SYS_STACKSIZE - sub r1, r1, r0 - ldr r2, =HW_PRV_WRAM_IRQ_STACK_END - mov r0, #0 -@011: cmp r1, r2 - strlt r0, [r1], #4 - blt @011 - - /* SCFG ‚ð HW_SYS_CONF_BUF ‚ÖƒRƒs[ */ - bl INIT_InitializeScfg - bl INITi_CopySysConfig - - /* TWL ƒn[ƒhƒEƒFƒAã‚Å“®ì‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚𒲸 */ - bl INITi_IsRunOnTwl - /* TWL ƒn[ƒhƒEƒFƒAã‚Å“®ì‚µ‚Ä‚¢‚È‚¢ê‡‚͉i‹vƒ‹[ƒv */ -@012: bne @012 - - /* ƒvƒŠƒ[ƒhƒpƒ‰ƒ[ƒ^ƒAƒhƒŒƒX‚ªŠi”[‚³‚ê‚Ä‚¢‚È‚¢ê‡‚ÍAƒfƒtƒHƒ‹ƒg’l‚ðƒZƒbƒg */ - ldr r0, =HW_PRELOAD_PARAMETER_ADDR - ldr r1, [r0] - cmp r1, #0 - ldreq r1, =HW_PARAM_TWL_SETTINGS_DATA_DEFAULT - streq r1, [r0] - -@020: - /* Autoload ‚ðŽÀŽ{ */ - bl INITi_DoAutoload - - /* STATIC ƒuƒƒbƒN‚Ì .bss ƒZƒNƒVƒ‡ƒ“‚ð 0 ƒNƒŠƒA */ - mov r1, #0 // r1 = clear value for STATIC bss section - ldr r3, =_start_ModuleParams - ldr r0, [r3, #12] // r0 = start address of STATIC bss section - ldr r2, [r3, #16] - subs r2, r2, r0 // r2 = size of STATIC bss section - blgt INITi_Fill32 - - //---- detect main memory size - bl INITi_DetectMainMemorySize - -#ifndef SDK_FINALROM - //---- set debug print window - ldr r1, =HW_PRINT_OUTPUT_ARM9 - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9 - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7<<8) - strh r0, [r1] - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9ERR - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7ERR<<8) - strh r0, [r1, #2] -#endif - - /* Š„‚螂݃xƒNƒ^Ý’è */ - ldr r1, =HW_INTR_VECTOR_BUF - ldr r0, =OS_IrqHandler - str r0, [r1] - -#ifndef SDK_NOINIT - /* c++ —p‰Šú‰» */ - bl _fp_init - bl TwlSpStartUp - bl __call_static_initializers - bl INITi_CallStaticInitializers -#endif - -@030: - /* Main ŠÖ”‚ւ̃Wƒƒƒ“ƒv—pƒ}ƒCƒNƒƒR[ƒh‚ðƒXƒ^ƒbƒN‚Ì’ê‚ɃRƒs[ */ - ldr r1, =microcode_GotoMain - ldr r0, [r1], #4 - str r0, [sp, #-4] - ldr r0, [r1] - str r0, [sp] - - /* ƒ}ƒCƒNƒƒR[ƒh‚ðŒo—R‚µ‚Ä Main ŠÖ”‚ÖƒWƒƒƒ“ƒv */ - ldr r0, =TwlSpMain - ldr r1, =HW_BOOT_SYNC_PHASE - mov r2, #BOOT_SYNC_PHASE_4 - ldr lr, =HW_RESET_VECTOR - sub r3, sp, #4 - bx r3 -} - -#include -#include -#include -/*---------------------------------------------------------------------------* - Name: INITi_SetHMACSHA1ToAppParam - Description: ROM‚ªƒ[ƒh‚³‚ꂽŠeƒAƒvƒŠ—̈æ‚ÌHMACSHA1‚ðŒvŽZ‚µA“Á’è‚̃AƒhƒŒ - ƒX‚ɕۑ¶ - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -#define UNDEF_CODE 0xe7ffdeff -#define ENCRYPT_DEF_SIZE 0x800 -#define DGT_TGT_ADDR ( HW_MAIN_MEM + 0x0100 ) - -static void INITi_SetHMACSHA1ToAppParam(void) -{ - SVCHMACSHA1Context *pCon = ( SVCHMACSHA1Context * ) (0x2000300 - sizeof(SVCHMACSHA1Context)); - ROM_Header_Short *pROMH = (ROM_Header_Short *)HW_TWL_ROM_HEADER_BUF; - u32 bak; - - // arm9_flx - bak = *(u32 *)pROMH->main_autoload_done; - *(u32 *)pROMH->main_autoload_done = 0xE12FFF1E; - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->main_ram_address, pROMH->main_size); - SVC_HMACSHA1GetHash(pCon, (void *)DGT_TGT_ADDR); - *(u32 *)pROMH->main_autoload_done = bak; - // arm7_flx - bak = *(u32 *)pROMH->sub_autoload_done; - *(u32 *)pROMH->sub_autoload_done = 0xE12FFF1E; - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->sub_ram_address, pROMH->sub_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 32)); - *(u32 *)pROMH->sub_autoload_done = bak; - // arm9_ltd - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->main_ltd_ram_address, pROMH->main_ltd_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 2 * 32)); - // arm7_ltd - SVC_HMACSHA1Init(pCon, (void *)s_digestDefaultKey, DIGEST_HASH_BLOCK_SIZE_SHA1); - SVC_HMACSHA1Update(pCon, pROMH->sub_ltd_ram_address, pROMH->sub_ltd_size); - SVC_HMACSHA1GetHash(pCon, (void *)(DGT_TGT_ADDR + 3 * 32)); -} - -/*---------------------------------------------------------------------------* - Name: INITi_DoAutoload - Description: ƒŠƒ“ƒNî•ñ‚ɉˆ‚Á‚ÄAŠeƒI[ƒgƒ[ƒhƒuƒƒbƒN‚̌Œèƒf[ƒ^•”‚Ì“WŠJ - ‹y‚ѕϔ•”‚Ì 0 ƒNƒŠƒA‚ðs‚¤B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -/* - * < “ñ’iŠKƒI[ƒgƒ[ƒh > - * 0x02380000 ‚É crt0 ‹y‚шê’i–Úƒ[ƒhŒ³ƒoƒCƒiƒŠ‚ª”z’u‚³‚ê‚Ä‚¢‚éB - * NITRO ‚Æ‹¤—L‰Â”\‚È WRAM ã‚É”z’u‚³‚ê‚é‚ׂ«ƒoƒCƒiƒŠƒf[ƒ^‚ð 0x037c0000 ‚Ƀ[ƒh‚·‚éB - * TWL ‚Å‚µ‚©“®ì‚µ‚È‚¢ WRAM ã‚É”z’u‚³‚ê‚é‚ׂ«ƒoƒCƒiƒŠƒf[ƒ^‚𑱂«‚̃AƒhƒŒƒX‚Ƀ[ƒh‚·‚éB - * 0x02400000 ‚É ARM9 ‚Ì“ñ’i–Úƒ[ƒhŒ³ƒoƒCƒiƒŠ‚ª”z’u‚³‚ê‚Ä‚¢‚éB - * 0x04000 ƒoƒCƒg•ª‚̓J[ƒh ROM ‚©‚çēǂÝo‚µ•s‰Â‚Ȃ̂ÅA0x02f80000 - 0x02f84000 ‚É‘Þ”ð‚·‚éB - * 0x02e80000 ‚É“ñ’i–Úƒ[ƒhŒ³ƒoƒCƒiƒŠ‚ª”z’u‚³‚ê‚Ä‚¢‚éB - * 0x04000 ƒoƒCƒg•ª‚̓J[ƒh ROM ‚©‚çēǂÝo‚µ•s‰Â‚Ȃ̂ÅA0x02f84000 - 0x02f88000 ‚É‘Þ”ð‚·‚éB - * NITRO ‚Æ‹¤—L‰Â”\‚È MAIN ã‚É”z’u‚³‚ê‚é‚ׂ«ƒoƒCƒiƒŠƒf[ƒ^‚ð 0x02f88000 ‚Ƀ[ƒh‚·‚éB - * TWL ‚Å‚µ‚©“®ì‚µ‚È‚¢ MAIN ã‚É”z’u‚³‚ê‚é‚ׂ«ƒoƒCƒiƒŠƒf[ƒ^‚𑱂«‚̃AƒhƒŒƒX‚Ƀ[ƒh‚·‚éB - */ -static asm void -INITi_DoAutoload(void) -{ - stmfd sp!, {lr} - -@01_autoload: - /* WRAM —pƒuƒƒbƒN‚ðƒI[ƒgƒ[ƒh */ - ldr r0, =_start_ModuleParams - ldr r12, [r0] // r12 = SDK_AUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_AUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_AUTOLOAD_START -@01_segments_loop: - cmp r12, r3 - bge @02_start - /* ŒÅ’èƒZƒNƒVƒ‡ƒ“ */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer ƒe[ƒuƒ‹ */ - ldr r0, [r12], #4 // r0 = start address of source range of static initializers table -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss ƒZƒNƒVƒ‡ƒ“ */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = size of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} // r1 = end address of source range of the autoload segment - b @01_segments_loop - -@02_start: -#ifndef SDK_SYSMENU_BUILD - /* ēǂÝo‚µ•s‰Â•”•ª‚ð‘Þ”ð */ - bl INITi_ShelterLtdBinary -#endif // SDK_SYSMENU_BUILD - - /* ƒƒCƒ“ƒƒ‚ƒŠ—pƒI[ƒgƒ[ƒhƒuƒƒbƒN‚Ì‘¶Ý‚ðŠm”F */ - ldr r1, =HW_TWL_ROM_HEADER_BUF - ldr r0, [r1, #ROM_Header.s.sub_ltd_size] - cmp r0, #0 - beq @03_start - -@02_autoload: - /* ƒƒCƒ“ƒƒ‚ƒŠ—pƒuƒƒbƒN‚ðƒI[ƒgƒ[ƒh */ - ldr r0, =_start_LtdModuleParams - ldr r12, [r0] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_AUTOLOAD_START -@02_segments_loop: - cmp r12, r3 - bge @03_start - /* ŒÅ’èƒZƒNƒVƒ‡ƒ“ */ - ldr r0, [r12], #4 - ldr r2, [r12], #4 - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer ƒe[ƒuƒ‹ */ - ldr r0, [r12], #4 -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss ƒZƒNƒVƒ‡ƒ“ */ - ldmfd sp!, {r0} - mov r1, #0 - ldr r2, [r12], #4 - bl INITi_Fill32 - ldmfd sp!, {r1} - b @02_segments_loop - -@03_start: - /* ƒI[ƒgƒ[ƒhŠ®—¹ƒR[ƒ‹ƒoƒbƒNŠÖ”ŒÄ‚Ño‚µ */ - ldr r0, =_start_ModuleParams - ldr r1, =_start_LtdModuleParams - ldmfd sp!, {lr} - b _start_AutoloadDoneCallback -} - -/*---------------------------------------------------------------------------* - Name: INITi_ShelterLtdBinary - Description: TWL ê—p‚̃I[ƒgƒ[ƒhŒ³ƒoƒCƒiƒŠƒf[ƒ^‚Ì“àAƒJ[ƒh ROM ‚©‚ç - ēǂÝo‚µ‚Å‚«‚È‚¢—̈æ‚̃f[ƒ^‚ð‘Þ”ðƒGƒŠƒA‚É‘Þ”ð‚·‚éB - ēǂÝo‚µ‚Å‚«‚È‚¢—̈æ‚̃f[ƒ^‚Í ARM7 —p‚Æ ARM9 —p‚ÌŠg’£í’“ - ƒ‚ƒWƒ…[ƒ‹‚Ì‚Q‚‚ɕª‚©‚ê‚Ä‚¢‚é‰Â”\«‚ª‚ ‚é‚Ì‚ÅAç’·‚ł͂ ‚邪 - —¼•û‚Ìæ“ª‚©‚ç 0x4000 •ª‚ð‚»‚ê‚¼‚ê‘Þ”ð‚·‚éB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterLtdBinary(void) -{ - stmfd sp!, {lr} - - /* NAND ‚©‚çƒu[ƒg‚µ‚½ê‡‚É‚Í‘Þ”ð‚·‚éƒf[ƒ^‚ÌŽg‚¢“¹‚ª‚È‚¢ˆ×Aˆ—‚ðƒXƒLƒbƒv */ - ldr r3, =HW_TWL_ROM_HEADER_BUF - ldr r0, [r3, #ROM_Header.s.titleID_Hi] - tst r0, #TITLE_ID_HI_MEDIA_MASK - ldmnefd sp!, {pc} - -@shelter_arm7_ltdautoload_src: - /* ARM7 —pŠg’£í’“ƒ‚ƒWƒ…[ƒ‹‚Ì‘¶Ý‚ðŠm”F */ - ldr r1, [r3, #ROM_Header.s.sub_ltd_size] - cmp r1, #0 - beq @shelter_arm9_ltdautoload_src - - /* ARM7 —pŠg’£í’“ƒ‚ƒWƒ…[ƒ‹‚Ìæ“ª 16K bytes ‚ð‘Þ”ð */ - ldr r1, [r3, #ROM_Header.s.sub_ltd_ram_address] - ldr r0, =_start_LtdMainParams - ldr r0, [r0] - mov r2, #0x4000 // r2 = size of shelter buffer - sub r0, r0, r2 // r0 = SDK_LTDAUTOLOAD_LTDMAIN_START - 0x4000 - bl INITi_Copy32 - -@shelter_arm9_ltdautoload_src: - /* ARM9 —pŠg’£í’“ƒ‚ƒWƒ…[ƒ‹‚Ì‘¶Ý‚ðŠm”F */ - ldr r3, =HW_TWL_ROM_HEADER_BUF - ldr r1, [r3, #ROM_Header.s.main_ltd_size] - cmp r1, #0 - beq @end - - /* ARM9 —pŠg’£í’“ƒ‚ƒWƒ…[ƒ‹‚Ìæ“ª 16K bytes ‚ð‘Þ”ð */ - ldr r1, [r3, #ROM_Header.s.main_ltd_ram_address] - ldr r0, =_start_LtdMainParams - ldr r0, [r0] - mov r2, #0x4000 // r2 = size of shelter buffer - sub r0, r0, r2 - sub r0, r0, r2 // r0 = SDK_LTDAUTOLOAD_LTDMAIN_START - 0x8000 - bl INITi_Copy32 - -@end: - ldmfd sp!, {pc} -} - -#ifndef SDK_NOINIT -/*---------------------------------------------------------------------------* - Name: INITi_ShelterStaticInitializer - Description: ŠeƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg“à‚Ì static initializer ‚ւ̃|ƒCƒ“ƒ^ - ƒe[ƒuƒ‹‚ð IRQ ƒXƒ^ƒbƒN‚ÌÅã•”‚É‘Þ”ð‚·‚éB - Arguments: ptr - ƒZƒOƒƒ“ƒg“à‚̃|ƒCƒ“ƒ^ƒe[ƒuƒ‹‚ւ̃|ƒCƒ“ƒ^B - ƒe[ƒuƒ‹‚Í NULL ‚ÅI’[‚³‚ê‚Ä‚¢‚é•K—v‚ª‚ ‚éB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterStaticInitializer(u32* ptr) -{ - /* ˆø”Šm”F */ - cmp r0, #0 - bxeq lr - - /* ‘Þ”ðêŠæ“ªƒAƒhƒŒƒX‚ðŒvŽZ */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 - - /* ‘Þ”ðêŠæ“ª‚©‚ç‹ó‚«êŠ‚ð’²¸ */ -@001: ldr r2, [r1] - cmp r2, #0 - addne r1, r1, #4 - bne @001 - - /* ‹ó‚«êŠ‚Éƒe[ƒuƒ‹‚ðƒRƒs[ */ -@002: ldr r2, [r0], #4 - str r2, [r1], #4 - cmp r2, #0 - bne @002 - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CallStaticInitializers - Description: ŠeƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg“à‚Ì static initializer ‚ðŒÄ‚Ño‚·B - ƒI[ƒgƒ[ƒhˆ—‚É‚æ‚Á‚Ä IRQ ƒXƒ^ƒbƒN‚ÌÅã•”‚É‘Þ”ð‚³‚ê‚Ä‚¢‚é - ŠÖ”ƒ|ƒCƒ“ƒ^ƒe[ƒuƒ‹‚ðˆê‚‚¸‚ŒĂÑo‚·B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_CallStaticInitializers(void) -{ - stmdb sp!, {lr} - - /* ƒe[ƒuƒ‹‘Þ”ðêŠæ“ªƒAƒhƒŒƒX‚ðŒvŽZ */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 - - /* ƒe[ƒuƒ‹‚ÉŠÇ—‚³‚ê‚Ä‚¢‚éƒ|ƒCƒ“ƒ^‚ðˆê‚‚¸‚ŒĂÑo‚µ */ -@001: ldr r0, [r1] - cmp r0, #0 - beq @002 - stmdb sp!, {r1} - mov lr, pc - bx r0 - ldmia sp!, {r1} - /* ˆê’UŒÄ‚Ño‚µ‚½ƒ|ƒCƒ“ƒ^‚̓[ƒƒNƒŠƒA (IRQƒXƒ^ƒbƒN‚ðŠÔŽØ‚肵‚Ä‚¢‚éˆ×) */ - mov r0, #0 - str r0, [r1], #4 - b @001 - -@002: ldmia sp!, {lr} - bx lr -} -#endif - -/*---------------------------------------------------------------------------* - Name: _start_AutoloadDoneCallback - Description: ƒI[ƒgƒ[ƒhŠ®—¹ƒR[ƒ‹ƒoƒbƒNB - Arguments: argv - ƒI[ƒgƒ[ƒhƒpƒ‰ƒ[ƒ^‚ð•ÛŽ‚µ‚Ä‚¢‚é”z—ñB - argv[0] = SDK_AUTOLOAD_LIST - argv[1] = SDK_AUTOLOAD_LIST_END - argv[2] = SDK_AUTOLOAD_START - argv[3] = SDK_STATIC_BSS_START - argv[4] = SDK_STATIC_BSS_END - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start_AutoloadDoneCallback(void* argv[]) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: NitroSpStartUp - Description: Hook for user start up. - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL void -NitroSpStartUp(void) -{ -} - -/*---------------------------------------------------------------------------* - Name: INITi_IsRunOnTwl - - Description: check running platform - - This function is used in only Nitro-TWL hybrid mode. - (In Nitro mode and TWL limited mode, treated as constant) - - Arguments: None - - Returns: TRUE : running on TWL - FALSE : running on NITRO - *---------------------------------------------------------------------------*/ -static asm BOOL INITi_IsRunOnTwl( void ) -{ - ldr r0, =HW_PRV_WRAM_SYSRV - ldrb r0, [r0,#HWi_WSYS08_WRAMOFFSET] - and r0, r0, #HWi_WSYS08_ROM_ARM9SEC_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK - cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK - moveq r0, #TRUE - movne r0, #FALSE - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INIT_InitializeScfg - - Description: ƒ[ƒ_[‚ªs‚¤ SCFG ƒuƒƒbƒN‚Ö‚Ìݒ舗‚ð‘ãs‚·‚éˆ×‚ÌŠÖ”B - ˆ—‚ÌŽÀ‘Ì‚Í crt0 ‚ÌŠO•”‚É’è‹`‚·‚邽‚ßAŽãƒVƒ“ƒ{ƒ‹‚Æ‚·‚éB - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -INIT_InitializeScfg(void) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CopySysConfig - - Description: copy SCFG registers to HW_SYS_CONF_BUF and HW_PRV_WRAM_SYSRV - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static asm void INITi_CopySysConfig( void ) -{ - //---- copy scfg setting - ldr r2, =HW_PRV_WRAM_SYSRV - ldr r3, =HW_SYS_CONF_BUF - ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] - str r0, [r3, #HWi_WSYS04_OFFSET] - ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] - strh r0, [r3, #HWi_WSYS08_OFFSET] - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_DetectMainMemorySize - - Description: detect main memory size. - result is written into (u32*)HW_MMEMCHECKER_SUB. - value is [OS_CONSOLE_SIZE_4MB|OS_CONSOLE_SIZE_8MB| - OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32MB] - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -#define OSi_IMAGE_DIFFERENCE 0x400000 -#define OSi_IMAGE_DIFFERENCE2 0xb000000 -#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK) -#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK) - -#define OSi_CHECKNUM1 0x55 -#define OSi_CHECKNUM2 0xaa -#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz) - -static asm void INITi_DetectMainMemorySize( void ) -{ - stmfd sp!, {lr} - - //---- detect memory size - mov r0, #OS_CONSOLE_SIZE_4MB - mov r1, #0 - - ldr r2, =HW_MMEMCHECKER_SUB - sub r3, r2, #OSi_IMAGE_DIFFERENCE -@1: - strh r1, [r2] - ldrh r12, [r3] - cmp r1, r12 - bne @2 - - add r1, r1, #1 - cmp r1, #2 // check 2 loop - bne @1 - - //---- 4MB - b @3 - - //---- 8MB or 16MB or 32MB -@2: - // check if running on twl/nitro - bl INITi_IsRunOnTwl - movne r0, #OS_CONSOLE_SIZE_8MB - bne @3 - - //---- 16MB or 32MB - add r3, r2, #OSi_IMAGE_DIFFERENCE2 - mov r0, #OS_CONSOLE_SIZE_16MB - ldrb r2, [r3] - - mov r1, #OSi_CHECKNUM1 - strb r1, [r3] - - ldr r12, =OSi_100usWAIT -@4 subs r12, r12, #4 - bcs @4 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM1 - bne @3 - - mov r1, #OSi_CHECKNUM2 - strb r1, [r3] - - ldr r12, =OSi_100usWAIT -@5 subs r12, r12, #4 - bcs @5 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM2 - moveq r0, #OS_CONSOLE_SIZE_32MB - -@3: - //---- check SMX_CNT - strb r2, [r3] - ldr r3, =REG_SMX_CNT_ADDR - ldrh r1, [r3] - and r1, r1, #OSi_DETECT_NITRO_MASK - cmp r1, #OSi_DETECT_NITRO_VAL - orreq r0, r0, #OS_CHIPTYPE_SMX_MASK - - ldr r2, =HW_MMEMCHECKER_SUB - strh r0, [r2] - - ldmfd sp!, {lr} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Copy32 - Description: ‰Â”\‚ÈŒÀ‚è 32 ƒoƒCƒg’PˆÊ‚ÅA”¼’[‚È•ª‚Í 4 ƒoƒCƒg’PˆÊ‚ŃRƒs[‚ð - s‚¤B - ƒXƒ^ƒbƒN‚ð 36 ƒoƒCƒgÁ”ï‚·‚邪AƒŒƒWƒXƒ^ r3 - r12 ‚Í”j‰ó‚µ‚È‚¢B - Arguments: r0 - ƒRƒs[æ‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r1 - ƒRƒs[Œ³‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r2 - ƒRƒs[‚·‚é’·‚³‚ðƒoƒCƒg’PˆÊ‚ÅŽw’è ( 4 ‚Ì”{” )B - Returns: r0 - ƒRƒs[Œã‚̃Rƒs[æ‚ւ̃|ƒCƒ“ƒ^ ( r0 + r2 )B - r1 - ƒRƒs[Œã‚̃Rƒs[Œ³‚ւ̃|ƒCƒ“ƒ^ ( r1 + r2 )B - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Copy32(void* dst, void* src, u32 size) -{ - stmfd sp!, {r3-r11} - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - ldmia r1!, {r4-r11} - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - ldmneia r1!, {r4-r7} - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - ldmneia r1!, {r4-r5} - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - ldmneia r1!, {r4} - stmneia r0!, {r4} - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Fill32 - Description: ‰Â”\‚ÈŒÀ‚è 32 ƒoƒCƒg’PˆÊ‚ÅA”¼’[‚È•ª‚Í 4 ƒoƒCƒg’PˆÊ‚Ńoƒbƒtƒ@ - “à—e‚ðŽw’èƒf[ƒ^‚Å–„‚ß‚éB - ƒXƒ^ƒbƒN‚ð 36 ƒoƒCƒgÁ”ï‚·‚邪AƒŒƒWƒXƒ^ r3 - r12 ‚Í”j‰ó‚µ‚È‚¢B - Arguments: r0 - ƒoƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r1 - ƒoƒbƒtƒ@‚ð–„‚ß‚é“à—e‚ð 32 bit ’l‚ÅŽw’èB - r2 - ƒoƒbƒtƒ@‚𖄂߂钷‚³‚ðƒoƒCƒg’PˆÊ‚ÅŽw’è ( 4 ‚Ì”{” )B - Returns: r0 - ˆ—Œã‚̃oƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^ ( r0 + r2 )B - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Fill32(void* dst, u32 value, u32 size) -{ - stmfd sp!, {r3-r11} - mov r4, r1 - mov r5, r1 - mov r6, r1 - mov r7, r1 - mov r8, r1 - mov r9, r1 - mov r10, r1 - mov r11, r1 - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - stmneia r0!, {r4} - ldmfd sp!, {r3-r11} - bx lr -} - -#include diff --git a/build/tests/HashCheckTemplate/crt/Makefile b/build/tests/HashCheckTemplate/crt/Makefile deleted file mode 100644 index e7337139..00000000 --- a/build/tests/HashCheckTemplate/crt/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - init -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = ARM7 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/HashCheckTemplate/crt/common/include/boot_sync.h b/build/tests/HashCheckTemplate/crt/common/include/boot_sync.h deleted file mode 100644 index c744ffe2..00000000 --- a/build/tests/HashCheckTemplate/crt/common/include/boot_sync.h +++ /dev/null @@ -1,35 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - common - File: boot_sync.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef TWL_LIBRARIES_INIT_COMMON_BOOT_SYNC_H_ -#define TWL_LIBRARIES_INIT_COMMON_BOOT_SYNC_H_ -#ifdef __cplusplus -extern "C" { -#endif -/*---------------------------------------------------------------------------*/ - -#define BOOT_SYNC_PHASE_1 1 -#define BOOT_SYNC_PHASE_2 2 -#define BOOT_SYNC_PHASE_3 3 -#define BOOT_SYNC_PHASE_4 4 -#define BOOT_SYNC_PHASE_5 5 -#define BOOT_SYNC_PHASE_6 6 - -/*---------------------------------------------------------------------------*/ -#ifdef __cplusplus -} /* extern "C" */ -#endif -#endif /* TWL_LIBRARIES_INIT_COMMON_BOOT_SYNC_H_ */ diff --git a/build/tests/HashCheckTemplate/memo.txt b/build/tests/HashCheckTemplate/memo.txt deleted file mode 100644 index cf41343d..00000000 --- a/build/tests/HashCheckTemplate/memo.txt +++ /dev/null @@ -1,49 +0,0 @@ -yISƒfƒoƒbƒK‚ªƒR[ƒh‚ð•ÏX‚·‚é‰ÓŠz -EARM9.flx.static, ARM7.flx.static - _start_AutoloadDoneCallback‚Ìæ“ªƒR[ƒh‚ðISƒfƒoƒbƒK‚̃‚ƒjƒ^ƒvƒƒOƒ‰ƒ€‚Ö‚Ì•ªŠò‚É‘‚«Š·‚¦‚é‚Ì‚ÅA -@ƒnƒbƒVƒ…‚𳂵‚­ŒvŽZ‚·‚éꇂÍA‚»‚̃AƒhƒŒƒX‚̃R[ƒh‚ðŒ³X‚Ì’l‚Å‚ ‚é0xE12FFF1E(= BX LR)‚ɃAƒvƒŠ‚Å‘‚«Š·‚¦‚Ä‚â‚é -@•K—v‚ª‚ ‚éB -EƒuƒŒ[ƒNƒ|ƒCƒ“ƒgÝ’è‰ÓŠ -@ƒuƒŒ[ƒNƒ|ƒCƒ“ƒgÝ’è‰ÓŠ‚ÍAƒfƒoƒbƒK‚É‚æ‚Á‚Ä–¢’è‹`–½—ß‚ª–„‚ßž‚Ü‚ê‚é‚Ì‚ÅAƒnƒbƒVƒ…‚𳂵‚­ŒvŽZ‚·‚éꇂÍA‘S‚Ä‚Ì -@ƒuƒŒ[ƒNƒ|ƒCƒ“ƒg‚𖳌ø‚É‚·‚é•K—v‚ª‚ ‚éB - -‚È‚¨A‚±‚ê‚ç‚ÍA’P‘̃u[ƒg‚Ȃ牽‚àƒPƒA‚µ‚È‚­‚ÄOK. - - - -yblowfishˆÃ†‰»ƒVƒXƒeƒ€ƒR[ƒ‹z -ARM9FLX‚Ìæ“ª0x800ƒoƒCƒg(2kƒoƒCƒg)‚̓VƒXƒeƒ€ƒR[ƒ‹‚ª”z’u‚³‚êABlowfishˆÃ†‰»‚³‚ê‚Ä‚¢‚éiˆÃ†‰»—̈æjB -‚ÅAƒ‰ƒ“ƒ`ƒƒ[‚ªƒu[ƒg’¼‘O‚ɈƉ»‚ð‰ðœ‚·‚éB -ƒwƒbƒ_‚É–„‚ßž‚Ü‚ê‚Ä‚¢‚éARM9FLX‚̃nƒbƒVƒ…‚ÍAˆÃ†‰»‚³‚ꂽó‘Ԃł̃nƒbƒVƒ…‚Å‚ ‚éB -HashCheckTemplate‚ÅARM9FLX‚̃nƒbƒVƒ…‚ðŒvŽZ‚·‚鎞“_‚Å‚ÍA‚·‚łɈƉ»‚ª‰ðœ‚³‚ê‚Ä‚¢‚邽‚ßAŒvŽZ‚ª‡‚í‚È‚¢B -‚Ç‚¤‚É‚©‚µ‚ĉðœ‘O‚̈Ɖ»—̈æ‚ðŽè‚É“ü‚ê‚é•K—v‚ª‚ ‚éB - - -EROMƒwƒbƒ_‚ª"NTRJ"‚Ìê‡ -@ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ã‚Åã‹LˆÃ†—̈æ‚ð00‚Å–„‚ß‚ê‚ÎŒvŽZ‚ª‡‚¤B -@HashCheckTemplate‚̂悤‚ȃeƒXƒgƒvƒƒOƒ‰ƒ€‚Å‚ÍAˆÃ†‰»—̈æ‚Í00‚Å–„‚ß‚ç‚ê‚邽‚߂ł ‚éB -@ƒˆÃ†‰»—̈悪00‚Å‚ ‚Á‚½Ž–‚ÌŠm”F„ -@1)ˆÃ†‰ðœŽžA擪0x800ƒoƒCƒg‚Ì‚¤‚¿æ“ª2ƒoƒCƒg‚̈Ɖ𜌋‰Ê‚ª"encryObj"‚łȂ¢ê‡‚Í‘S‘̂̈Ɖðœ‚ð‚¹‚¸A“ÁŽêˆ— -@ ‚Æ‚µ‚Ä–¢’è‹`–½—߃R[ƒhi0xe7ffdeffj‚Å–„‚ß‚ç‚ê‚éB -@ ‚æ‚Á‚ÄAˆÃ†‰»—̈æ‚É“–‚½‚é•”•ª‚ªŽÀsŽž‚É–¢’è‹`–½—߃R[ƒh‚Å–„‚Ü‚Á‚Ä‚é‚Ì‚ðŠm”F‚·‚ê‚Ηǂ¢B - -@2)makerom“Á•ʔłÌmakerom.TWL.DEBUG.exe/makerom.TWL.sys.DEBUG.exe/makerom.TWL.secure.DEBUG.exe‚ðŽg—p‚·‚éBiSDK‚É“Y•tj -@ ‚±‚Ìmakerom‚ðŽg—p‚µ‚ÄAMAKEROM_FLAGS‚ÅA-DSYSCALL_C‚ÌŽw’è‚ð‚µ‚È‚©‚Á‚½ê‡AROMƒwƒbƒ_‚Ìnitro_whitelist_phase2_diegst‚É -@ ã‹LˆÃ†—̈æ‚𜂢‚½ó‘Ô‚ÌARM9.FLX.static‚̃nƒbƒVƒ…’l‚ªŠi”[‚³‚ê‚éB - -EROMƒwƒbƒ_‚ª"NTRJ"ˆÈŠO‚Ì³Ž®ROMƒwƒbƒ_‚ðŽg—p‚µ‚Ä‚¢‚éê‡ -@makerom“Á•ʔłÌmakerom.TWL.DEBUG.exe/makerom.TWL.sys.DEBUG.exe/makerom.TWL.secure.DEBUG.exe‚ðŽg—p‚·‚éBiSDK‚É“Y•tj -@‚±‚Ìmakerom‚ðŽg—p‚µ‚ÄAMAKEROM_FLAGS += -DSYSCALL_C='hoge/libsyscall_c.bin'‚ÌŒ`Ž®‚ÅA³Ž®”ÅROMƒwƒbƒ_‚É“Y•t‚µ‚Ä‚¢‚é -@ƒNƒ[ƒ“ƒu[ƒg—p‚̃fƒR[ƒhς݃VƒXƒeƒ€ƒR[ƒ‹ƒoƒCƒiƒŠ‚ðŽw’è‚·‚邱‚Æ‚ÅAROMƒwƒbƒ_‚Ìnitro_whitelist_phase2_diegst‚É -@ã‹LˆÃ†—̈æ‚ðƒfƒR[ƒh‚µ‚½ó‘Ô‚ÌARM9.FLX.static‚̃nƒbƒVƒ…’l‚ªŠi”[‚³‚ê‚éB - - - -ystaticƒTƒCƒYŠg’£z -@makerom“Á•ʔłÌmakerom.TWL.DEBUG.exe/makerom.TWL.sys.DEBUG.exe/makerom.TWL.secure.DEBUG.exe‚ðŽg—p‚·‚éBiSDK‚É“Y•tj -@MAKEROM_FLAGS‚ɉº‹L’è‹`‚ð’ljÁ‚·‚邱‚Æ‚ÅA‘ÎÛƒZƒOƒƒ“ƒg‚ðŽw’èƒTƒCƒY•ªƒ‰ƒ“ƒ_ƒ€’l‚ÅŠg’£‚Å‚«‚éB - ARM9.FLX.static : -DARM9FLX_EXPAND=Šg’£ƒTƒCƒY@iƒ‰ƒ“ƒ`ƒƒ[‚ųíƒu[ƒg‰Â”\ max ƒTƒCƒY = 0x27c000) - ARM7.FLX.static : -DARM7FLX_EXPAND=Šg’£ƒTƒCƒY@i@@V@@@@@@@@@@ max ƒTƒCƒY = 0x40000) - ARM9.LTD.static : -DARM9LTD_EXPAND=Šg’£ƒTƒCƒY@i@@V@@@@@@@@@@ max ƒTƒCƒY = 0x280000) - ARM7.LTD.static : -DARM7LTD_EXPAND=Šg’£ƒTƒCƒY@i@@V@@@@@@@@@@ max ƒTƒCƒY = 0x108000) - diff --git a/build/tests/HashCheckTemplate/test_roms/rombreak.bat b/build/tests/HashCheckTemplate/test_roms/rombreak.bat deleted file mode 100644 index 83c6ea10..00000000 --- a/build/tests/HashCheckTemplate/test_roms/rombreak.bat +++ /dev/null @@ -1,199 +0,0 @@ -mkdir break_dev -mkdir prod -mkdir break_prod - -"../../../tools/rombreaker/rombreaker.exe" -i twl_0E8A.srl -b HEADER -o "break_dev/twl_0E8A.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0E9A.nand.srl -b HEADER -o "break_dev/twl_0E9A.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EAA.srl -b ARM9FLX -o "break_dev/twl_0EAA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EBA.nand.srl -b ARM9FLX -o "break_dev/twl_0EBA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ECA.srl -b ARM7FLX -o "break_dev/twl_0ECA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EDA.nand.srl -b ARM7FLX -o "break_dev/twl_0EDA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EEA.srl -b ARM9LTD -o "break_dev/twl_0EEA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EFA.nand.srl -b ARM9LTD -o "break_dev/twl_0EFA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EGA.srl -b ARM7LTD -o "break_dev/twl_0EGA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EHA.nand.srl -b ARM7LTD -o "break_dev/twl_0EHA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EIA.nand.srl -b HEADER -o "break_dev/twl_0EIA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EJA.nand.srl -b ARM9FLX -o "break_dev/twl_0EJA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EKA.nand.srl -b ARM7FLX -o "break_dev/twl_0EKA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ELA.nand.srl -b ARM9LTD -o "break_dev/twl_0ELA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EMA.nand.srl -b ARM7LTD -o "break_dev/twl_0EMA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ENA.srl -b HEADER -o "break_dev/twl_0ENA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EOA.nand.srl -b HEADER -o "break_dev/twl_0EOA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EPA.srl -b ARM9FLX -o "break_dev/twl_0EPA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EQA.nand.srl -b ARM9FLX -o "break_dev/twl_0EQA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ERA.srl -b ARM7FLX -o "break_dev/twl_0ERA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ESA.nand.srl -b ARM7FLX -o "break_dev/twl_0ESA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0ETA.srl -b ARM9LTD -o "break_dev/twl_0ETA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EUA.nand.srl -b ARM9LTD -o "break_dev/twl_0EUA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EVA.srl -b ARM7LTD -o "break_dev/twl_0EVA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i twl_0EWA.nand.srl -b ARM7LTD -o "break_dev/twl_0EWA.nand.srl" - -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0E8A.srl "prod/twl_0E8A.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0E9A.nand.srl "prod/twl_0E9A.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EAA.srl "prod/twl_0EAA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EBA.nand.srl "prod/twl_0EBA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ECA.srl "prod/twl_0ECA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EDA.nand.srl "prod/twl_0EDA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EEA.srl "prod/twl_0EEA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EFA.nand.srl "prod/twl_0EFA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EGA.srl "prod/twl_0EGA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EHA.nand.srl "prod/twl_0EHA.nand.srl" - -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EIA.nand.srl "prod/twl_0EIA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EJA.nand.srl "prod/twl_0EJA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EKA.nand.srl "prod/twl_0EKA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ELA.nand.srl "prod/twl_0ELA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EMA.nand.srl "prod/twl_0EMA.nand.srl" - -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ENA.srl "prod/twl_0ENA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EOA.nand.srl "prod/twl_0EOA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EPA.srl "prod/twl_0EPA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EQA.nand.srl "prod/twl_0EQA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ERA.srl "prod/twl_0ERA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ESA.nand.srl "prod/twl_0ESA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0ETA.srl "prod/twl_0ETA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EUA.nand.srl "prod/twl_0EUA.nand.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EVA.srl "prod/twl_0EVA.srl" -"%TWL_IPL_RED_PRIVATE_ROOT%/tools/bin/mastering.TWL.exe" -t twl_0EWA.nand.srl "prod/twl_0EWA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0E8A.srl -b HEADER -o "break_prod/twl_0E8A.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0E9A.nand.srl -b HEADER -o "break_prod/twl_0E9A.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EAA.srl -b ARM9FLX -o "break_prod/twl_0EAA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EBA.nand.srl -b ARM9FLX -o "break_prod/twl_0EBA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ECA.srl -b ARM7FLX -o "break_prod/twl_0ECA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EDA.nand.srl -b ARM7FLX -o "break_prod/twl_0EDA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EEA.srl -b ARM9LTD -o "break_prod/twl_0EEA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EFA.nand.srl -b ARM9LTD -o "break_prod/twl_0EFA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EGA.srl -b ARM7LTD -o "break_prod/twl_0EGA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EHA.nand.srl -b ARM7LTD -o "break_prod/twl_0EHA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EIA.nand.srl -b HEADER -o "break_prod/twl_0EIA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EJA.nand.srl -b ARM9FLX -o "break_prod/twl_0EJA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EKA.nand.srl -b ARM7FLX -o "break_prod/twl_0EKA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ELA.nand.srl -b ARM9LTD -o "break_prod/twl_0ELA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EMA.nand.srl -b ARM7LTD -o "break_prod/twl_0EMA.nand.srl" - -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ENA.srl -b HEADER -o "break_prod/twl_0ENA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EOA.nand.srl -b HEADER -o "break_prod/twl_0EOA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EPA.srl -b ARM9FLX -o "break_prod/twl_0EPA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EQA.nand.srl -b ARM9FLX -o "break_prod/twl_0EQA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ERA.srl -b ARM7FLX -o "break_prod/twl_0ERA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ESA.nand.srl -b ARM7FLX -o "break_prod/twl_0ESA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0ETA.srl -b ARM9LTD -o "break_prod/twl_0ETA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EUA.nand.srl -b ARM9LTD -o "break_prod/twl_0EUA.nand.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EVA.srl -b ARM7LTD -o "break_prod/twl_0EVA.srl" -"../../../tools/rombreaker/rombreaker.exe" -i prod/twl_0EWA.nand.srl -b ARM7LTD -o "break_prod/twl_0EWA.nand.srl" - - -mkdir "break_dev/tad" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0E9A.nand.srl -v 0 -o break_dev/tad/twl_0E9A.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EBA.nand.srl -v 0 -o break_dev/tad/twl_0EBA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EDA.nand.srl -v 0 -o break_dev/tad/twl_0EDA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EFA.nand.srl -v 0 -o break_dev/tad/twl_0EFA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EHA.nand.srl -v 0 -o break_dev/tad/twl_0EHA.tad - -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EIA.nand.srl -s -v 0 -o break_dev/tad/twl_0EIA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EJA.nand.srl -s -v 0 -o break_dev/tad/twl_0EJA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EKA.nand.srl -s -v 0 -o break_dev/tad/twl_0EKA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0ELA.nand.srl -s -v 0 -o break_dev/tad/twl_0ELA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EMA.nand.srl -s -v 0 -o break_dev/tad/twl_0EMA.tad - -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EOA.nand.srl -s -v 0 -o break_dev/tad/twl_0EOA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EQA.nand.srl -s -v 0 -o break_dev/tad/twl_0EQA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0ESA.nand.srl -s -v 0 -o break_dev/tad/twl_0ESA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EUA.nand.srl -s -v 0 -o break_dev/tad/twl_0EUA.tad -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe break_dev/twl_0EWA.nand.srl -s -v 0 -o break_dev/tad/twl_0EWA.tad - -mkdir "break_prod/0E9A/v0" -cd "break_prod/0E9A/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0E9A.nand.srl -v 0 -p -o twl_0E9A.tad -mv properties ../ -cd ../../ - -mkdir "0EBA/v0" -cd "0EBA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EBA.nand.srl -v 0 -p -o twl_0EBA.tad -mv properties ../ -cd ../../ - -mkdir "0EDA/v0" -cd "0EDA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EDA.nand.srl -v 0 -p -o twl_0EDA.tad -mv properties ../ -cd ../../ - -mkdir "0EFA/v0" -cd "0EFA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EFA.nand.srl -v 0 -p -o twl_0EFA.tad -mv properties ../ -cd ../../ - -mkdir "0EHA/v0" -cd "0EHA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EHA.nand.srl -v 0 -p -o twl_0EHA.tad -mv properties ../ -cd ../../ - - -mkdir "0EIA/v0" -cd "0EIA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EIA.nand.srl -s -v 0 -p -o twl_0EIA.tad -mv properties ../ -cd ../../ - -mkdir "0EJA/v0" -cd "0EJA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EJA.nand.srl -s -v 0 -p -o twl_0EJA.tad -mv properties ../ -cd ../../ - -mkdir "0EKA/v0" -cd "0EKA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EKA.nand.srl -s -v 0 -p -o twl_0EKA.tad -mv properties ../ -cd ../../ - -mkdir "0ELA/v0" -cd "0ELA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0ELA.nand.srl -s -v 0 -p -o twl_0ELA.tad -mv properties ../ -cd ../../ - -mkdir "0EMA/v0" -cd "0EMA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EMA.nand.srl -s -v 0 -p -o twl_0EMA.tad -mv properties ../ -cd ../../ - - -mkdir "0EOA/v0" -cd "0EOA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EOA.nand.srl -s -v 0 -p -o twl_0EOA.tad -mv properties ../ -cd ../../ - -mkdir "0EQA/v0" -cd "0EQA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EQA.nand.srl -s -v 0 -p -o twl_0EQA.tad -mv properties ../ -cd ../../ - -mkdir "0ESA/v0" -cd "0ESA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0ESA.nand.srl -s -v 0 -p -o twl_0ESA.tad -mv properties ../ -cd ../../ - -mkdir "0EUA/v0" -cd "0EUA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EUA.nand.srl -s -v 0 -p -o twl_0EUA.tad -mv properties ../ -cd ../../ - -mkdir "0EWA/v0" -cd "0EWA/v0" -%TWLSDK_ROOT%/build/tools/maketad/bin/maketad.exe ../../twl_0EWA.nand.srl -s -v 0 -p -o twl_0EWA.tad -mv properties ../ -cd ../../ diff --git a/build/tests/HashCheckTemplate/test_roms/破壊ãšã¿ROMã®ä½œã‚Šæ–¹.txt b/build/tests/HashCheckTemplate/test_roms/破壊ãšã¿ROMã®ä½œã‚Šæ–¹.txt deleted file mode 100644 index 10b74350..00000000 --- a/build/tests/HashCheckTemplate/test_roms/破壊ãšã¿ROMã®ä½œã‚Šæ–¹.txt +++ /dev/null @@ -1,9 +0,0 @@ -TestMaker‚Å - -make boottest -make - -‚µ‚½‚ ‚ÆA‚±‚̃fƒBƒŒƒNƒgƒŠ‚ªì‹ÆƒfƒBƒŒƒNƒgƒŠ‚ɂȂÁ‚Ä‚¢‚éó‘Ô‚Årombreak.bat‚ðŽÀsB -i—v‚·‚é‚Éexplorer‚©‚çƒ_ƒuƒ‹ƒNƒŠƒbƒN‚ÅOKj - -‚±‚ê‚Åbraek_dev‚¨‚æ‚Ñbreak_prod‚Ì’†‚Ésrl‚Ætad‚܂łªŠ®¬B diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/Makefile b/build/tests/JumpToSettingForZonetest/ARM9.TWL/Makefile deleted file mode 100644 index 08b0b206..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -# nandapp ‚É‚·‚éꇂ͂±‚̕ӂƂ©‚̃Rƒƒ“ƒg‚ð‚Í‚¸‚· -# rsf‚Ì•û‚àmedia‚ðNand‚É‚·‚éi - -TWL_NANDAPP = TRUE - - -SRCS = main.c font.c screen.c keypad.c -LINCLUDES = ./include -SRCDIR = ./src - #TARGET_BIN = NewApp.srl -TARGET_BIN = JumpToSetting.tad -ROM_SPEC = main.rsf - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe -DEFAULT_MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -DEFAULT_MAKEROM_ARM7 = $(DEFAULT_MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - - MAKETAD_OPTION += -s -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/font.h b/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/font.h deleted file mode 100644 index 9e703b04..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/font.h +++ /dev/null @@ -1,43 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - demos - consoleType-1 - File: font.h - - Copyright 2003-2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Log: main.c,v $ - Revision 1.23 2006/01/18 02:11:29 kitase_hirotake - do-indent - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#ifndef FONT_H_ -#define FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern const u32 d_CharData[8 * 256]; -extern const u32 d_PaletteData[8 * 16]; - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/keypad.h b/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/keypad.h deleted file mode 100644 index 2f5a1602..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/keypad.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef KAMI_KEY_PAD_H_ -#define KAMI_KEY_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -void kamiPadRead(void); -BOOL kamiPadIsTrigger(u16 key); -BOOL kamiPadIsRepeatTrigger(u16 key); -BOOL kamiPadIsPress(u16 key); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_KEY_PAD_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/screen.h b/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/screen.h deleted file mode 100644 index 7e55f3e1..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/include/screen.h +++ /dev/null @@ -1,52 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - demos - consoleType-1 - File: screen.h - - Copyright 2003-2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Log: main.c,v $ - Revision 1.23 2006/01/18 02:11:29 kitase_hirotake - do-indent - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#ifndef SCREEN_H_ -#define SCREEN_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ -#include - -extern u16 gScreen[32 * 32]; - -#define CONSOLE_BLACK 0 -#define CONSOLE_RED 1 -#define CONSOLE_GREEN 2 -#define CONSOLE_BLUE 3 -#define CONSOLE_YELLOW 4 -#define CONSOLE_WHITE 15 - -void ClearScreen(void); -void PrintString(s16 x, s16 y, u8 palette, char *text, ...); -void ColorString(s16 x, s16 y, s16 length, u8 palette); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* SCREEN_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/main.rsf b/build/tests/JumpToSettingForZonetest/ARM9.TWL/main.rsf deleted file mode 100644 index 623fabb5..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/main.rsf +++ /dev/null @@ -1,197 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - TitleName "JumpSetting" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType SYSTEM - Secure TRUE - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 0JSA - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 1 - - # - # Use Shared2 fikle size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 128K -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/font.c b/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/font.c deleted file mode 100644 index c5c4bf70..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/font.c +++ /dev/null @@ -1,580 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - demos - consoleType-1 - File: font.c - - Copyright 2003-2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Log: main.c,v $ - Revision 1.23 2006/01/18 02:11:29 kitase_hirotake - do-indent - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include "font.h" - -/*---------------------------------------------------------------------------* - Character data - *---------------------------------------------------------------------------*/ -const u32 d_CharData[8 * 256] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01010010, 0x01010010, 0x00000110, // 0001h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 00f6h - 0x00100000, 0x00100000, 0x00100000, 0x00111111, - 0x00000000, 0x01010010, 0x01010010, 0x00111111, // 00f7h - 0x00010010, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01010011, 0x01010100, 0x00100011, // 00f8h - 0x00100100, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01010000, 0x01011111, 0x00010000, // 00f9h - 0x00001000, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x01010010, 0x01111111, 0x00100010, // 00fah - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x01010001, 0x01010010, 0x00100000, // 00fbh - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01011110, 0x01010010, 0x00100110, // 00fch - 0x00111001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010000, 0x01011110, 0x00010000, // 00fdh - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x00100101, 0x01001010, 0x00101010, // 00feh - 0x00100000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -}; - - -/*---------------------------------------------------------------------------* - Palette data - *---------------------------------------------------------------------------*/ -const u32 d_PaletteData[8 * 16] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // black - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x001f0000, 0x00000000, 0x00000000, 0x00000000, // red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03e00000, 0x00000000, 0x00000000, 0x00000000, // green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c000000, 0x00000000, 0x00000000, 0x00000000, // blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03ff0000, 0x00000000, 0x00000000, 0x00000000, // yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7c1f0000, 0x00000000, 0x00000000, 0x00000000, // purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fe00000, 0x00000000, 0x00000000, 0x00000000, // light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00180000, 0x00000000, 0x00000000, 0x00000000, // dark red - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03000000, 0x00000000, 0x00000000, 0x00000000, // dark green - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60000000, 0x00000000, 0x00000000, 0x00000000, // dark blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x03180000, 0x00000000, 0x00000000, 0x00000000, // dark yellow - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x60180000, 0x00000000, 0x00000000, 0x00000000, // dark purple - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x63000000, 0x00000000, 0x00000000, 0x00000000, // dark light blue - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x56b50000, 0x00000000, 0x00000000, 0x00000000, // gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x2d6b0000, 0x00000000, 0x00000000, 0x00000000, // dark gray - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x7fff0000, 0x00000000, 0x00000000, 0x00000000, // white - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/keypad.c b/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/keypad.c deleted file mode 100644 index 155c4bc2..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/keypad.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "keypad.h" - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_TRIGGER_START 20 -#define KEY_REPEAT_TRIGGER_TERM 5 - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static u16 Cont; -static u16 Trg; -static u16 Release; -static u16 RepeatTrg; -static u8 key = 60; - -static int repeat_counter; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -void -kamiPadRead(void) -{ - u16 ReadData; - - ReadData = PAD_Read(); - Trg = (u16)(ReadData & (ReadData ^ Cont)); - Release = (u16)(Cont & (ReadData ^ Cont)); - Cont = ReadData; - - RepeatTrg = Trg; - if (++repeat_counter > (KEY_REPEAT_TRIGGER_START + KEY_REPEAT_TRIGGER_TERM)) - { - repeat_counter = KEY_REPEAT_TRIGGER_START; - } - if (repeat_counter == KEY_REPEAT_TRIGGER_START) - { - RepeatTrg = ReadData; - } - if (!ReadData) - { - repeat_counter = 0; - } -} - -BOOL -kamiPadIsTrigger(u16 key) -{ - return (Trg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsRepeatTrigger(u16 key) -{ - return (RepeatTrg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsPress(u16 key) -{ - return (Cont & key)? TRUE : FALSE; -} - diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/main.c b/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/main.c deleted file mode 100644 index 87a0dc63..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/main.c +++ /dev/null @@ -1,174 +0,0 @@ - -#include -#include -#include "font.h" -#include "screen.h" -#include "keypad.h" - -#define DAMMY_TITLEID_HI 0x00030005 -#define DAMMY_TITLEID_LO 0x484e4a00 -#define JUMP_GAMECODE 0x00030015484e4241ULL -#define JUMP_PARAMETER 50 - -void VBlankIntr(void); -void myInit(void); - -void TwlMain( void ) -{ - unsigned char regioncode; - myInit(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - - PrintString(0, 0, CONSOLE_WHITE, "Press A key To AppJump"); - - switch(OS_GetRegion()){ - case OS_TWL_REGION_JAPAN: - regioncode = 'J'; - break; - case OS_TWL_REGION_AMERICA: - regioncode = 'E'; - break; - case OS_TWL_REGION_EUROPE: - regioncode = 'P'; - break; - case OS_TWL_REGION_AUSTRALIA: - regioncode = 'U'; - break; - case OS_TWL_REGION_KOREA: - regioncode = 'K'; - break; - case OS_TWL_REGION_CHINA: - regioncode = 'C'; - break; - default: - PrintString(0, 1, CONSOLE_RED, "Illegal Region setting!"); - OS_Terminate(); - goto ERROR; - } - - - while(1){ - kamiPadRead(); - - if(kamiPadIsTrigger(PAD_BUTTON_A)){ - OSDeliverArgInfo info; - u32 dammycode_lo = (u32)(DAMMY_TITLEID_LO | (u32)regioncode); - - // romheader‚̃^ƒCƒgƒ‹ID‚ð‘‚«Š·‚¦‚Äéx‚· - PrintString(0,3, CONSOLE_WHITE, "%x", dammycode_lo); - OS_WaitVBlankIntr(); - MI_StoreLE32((void*)(HW_TWL_ROM_HEADER_BUF + 0x230), dammycode_lo); - MI_StoreLE32((void*)(HW_TWL_ROM_HEADER_BUF + 0x234), DAMMY_TITLEID_HI); - - OS_InitDeliverArgInfo(&info, 0); - OS_SetSysParamToDeliverArg(JUMP_PARAMETER); - OS_EncodeDeliverArg(); - OS_DoApplicationJump(JUMP_GAMECODE, OS_APP_JUMP_NORMAL); - - PrintString(0, 1, CONSOLE_RED, "Jump Failed"); - } - - OS_WaitVBlankIntr(); - } - -ERROR: - - OS_WaitVBlankIntr(); - OS_Terminate(); -} - - -static void -VBlankIntr(void) -{ - //---- upload pseudo screen to VRAM - DC_FlushRange(gScreen, sizeof(gScreen)); - GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - - - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} - - -void myInit(void) -{ - //---- init - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - FX_Init(); - GX_Init(); - GX_DispOff(); - GXS_DispOff(); - - //---- init displaying - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - (void)GX_DisableBankForLCDC(); - - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- setting 2D for top screen - GX_SetBankForBG(GX_VRAM_BG_128_A); - - G2_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2_SetBG0Priority(0); - G2_BG0Mosaic(FALSE); - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GX_SetVisiblePlane(GX_PLANEMASK_BG0); - - GX_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GX_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - - //---- setting 2D for bottom screen - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - G2S_SetBG0Control(GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0xf800, GX_BG_CHARBASE_0x00000, GX_BG_EXTPLTT_01); - G2S_SetBG0Priority(0); - G2S_BG0Mosaic(FALSE); - GXS_SetGraphicsMode(GX_BGMODE_0); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0); - - GXS_LoadBG0Char(d_CharData, 0, sizeof(d_CharData)); - GXS_LoadBGPltt(d_PaletteData, 0, sizeof(d_PaletteData)); - - - //---- screen - MI_CpuFillFast((void *)gScreen, 0, sizeof(gScreen)); - DC_FlushRange(gScreen, sizeof(gScreen)); - /* DMA‘€ì‚ÅIOƒŒƒWƒXƒ^‚ÖƒAƒNƒZƒX‚·‚é‚̂ŃLƒƒƒbƒVƒ…‚Ì Wait ‚Í•s—v */ - // DC_WaitWriteBufferEmpty(); - GX_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - GXS_LoadBG0Scr(gScreen, 0, sizeof(gScreen)); - - //---- init interrupt - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - //---- FileSytem init - FS_Init(FS_DMA_NOT_USE); - - //---- start displaying - GX_DispOn(); - GXS_DispOn(); -} - diff --git a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/screen.c b/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/screen.c deleted file mode 100644 index 5b7b735e..00000000 --- a/build/tests/JumpToSettingForZonetest/ARM9.TWL/src/screen.c +++ /dev/null @@ -1,112 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - demos - consoleType-1 - File: screen.c - - Copyright 2003-2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Log: main.c,v $ - Revision 1.23 2006/01/18 02:11:29 kitase_hirotake - do-indent - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include -#include "screen.h" - -u16 gScreen[32 * 32]; - -/*---------------------------------------------------------------------------* - Name: ClearScreen - - Description: clear screen buffer - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ClearScreen(void) -{ - MI_CpuClearFast((void *)gScreen, sizeof(gScreen)); -} - -/*---------------------------------------------------------------------------* - Name: PrintString - - Description: enter string into screen buffer - string must be within 32 chars - - Arguments: x : x - y : y - palette : color (0-15) - text : string. end mark is NULL - - Returns: None. - *---------------------------------------------------------------------------*/ -void PrintString(s16 x, s16 y, u8 palette, char *text, ...) -{ - va_list vlist; - char temp[32 + 2], *tempPtr; - s32 i; - u16 *p, *pLimit; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0; - p = &gScreen[((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[32 * 32]; - tempPtr = &temp[0]; - - for (i = 0; *tempPtr; i++, tempPtr++) - { - *p = (u16)((palette << 12) | *tempPtr); - if (++p >= pLimit) - { - p = &gScreen[0]; - } - } -} - -/*---------------------------------------------------------------------------* - Name: ColorString - - Description: change string color which is put in screen buffer - - Arguments: x : x - y : y - length : number of characters to change color - palette : color (0-15) - - Returns: None. - *---------------------------------------------------------------------------*/ -void ColorString(s16 x, s16 y, s16 length, u8 palette) -{ - s32 i; - u16 *p, *pLimit; - - if (length < 0) - return; - - p = &gScreen[((y * 32) + x) % (32 * 32)]; - pLimit = &gScreen[32 * 32]; - - for (i = 0; i < length; i++) - { - u16 temp = *p; - temp &= 0x0fff; - temp |= (palette << 12); - *p = temp; - - if (++p >= pLimit) - { - p = &gScreen[0]; - } - } -} diff --git a/build/tests/JumpToSettingForZonetest/Makefile b/build/tests/JumpToSettingForZonetest/Makefile deleted file mode 100644 index 063c7eaf..00000000 --- a/build/tests/JumpToSettingForZonetest/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - camera -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - - -#---------------------------------------------------------------------------- - -SUBDIRS = \ - banner \ - ARM9.TWL - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/JumpToSettingForZonetest/banner/Makefile b/build/tests/JumpToSettingForZonetest/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/JumpToSettingForZonetest/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/JumpToSettingForZonetest/banner/banner_v3.bsf b/build/tests/JumpToSettingForZonetest/banner/banner_v3.bsf deleted file mode 100644 index 8881d35e..00000000 Binary files a/build/tests/JumpToSettingForZonetest/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/JumpToSettingForZonetest/banner/icon/gameIcon.bmp b/build/tests/JumpToSettingForZonetest/banner/icon/gameIcon.bmp deleted file mode 100644 index 3057c17d..00000000 Binary files a/build/tests/JumpToSettingForZonetest/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/Launcher_sdlog/Makefile b/build/tests/Launcher_sdlog/Makefile deleted file mode 100644 index 4b5881c4..00000000 --- a/build/tests/Launcher_sdlog/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -export SDLOG ?= ARM9 - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher - -SUBMAKES = sdlog/Makefile scripts/Makefile \ - $(LAUNCHER_DIR)/banner/Makefile $(LAUNCHER_DIR)/ARM9/Makefile_sdlog - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/Launcher_sdlog/jackal.TWL/Makefile b/build/tests/Launcher_sdlog/jackal.TWL/Makefile deleted file mode 100644 index c72c408c..00000000 --- a/build/tests/Launcher_sdlog/jackal.TWL/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - mongoose.TWL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -# Definition to override for jackal with sdlog -# - -LLIBRARIES += libossdlog_sp$(TWL_LIBSUFFIX).a -LLIBRARY_DIRS += $(call eupath, $(TWL_IPL_RED_ROOT)/build/tests/Launcher_sdlog/lib/$(TWL_LIBTYPE)) - -COMPONENT_DIR += $(SYSMENU_ROOT)/build/components/jackal.TWL -COMPONENT_SRC_DIR += $(COMPONENT_DIR)/../hyena.TWL/src - -override SUBDIRS = $(SYSMENU_ROOT)/build/libraries/aes \ - $(SYSMENU_ROOT)/build/components/jackal.TWL/wram_regs - -override SRCS =$(COMPONENT_SRC_DIR)/crt0.LTD.c $(COMPONENT_SRC_DIR)/main.c $(COMPONENT_SRC_DIR)/initScfg.c - -override TARGET_NAME = jackal - -# Generate my own lsf from original lsf of mongoose -LSF_ORG = $(COMPONENT_DIR)/$(TARGET_NAME).lsf -MAKE_LSF = make_lsf.pl -AUTOGEN_LSF = $(TARGET_NAME)_sdlog.lsf - -LDIRT_CLEAN = $(AUTOGEN_LSF) - -override TARGET_NEF = $(TARGET_NAME).tef -override LCFILE_SPEC = $(AUTOGEN_LSF) -override LCFILE_TEMPLATE = $(COMPONENT_DIR)/$(TARGET_NAME).lcf.template - -override TWL_INSTALL_COMPONENTSDIR= $(call eupath, $(TWL_IPL_RED_ROOT)/build/tests/Launcher_sdlog/components) -override INSTALL_DIR = $(TWL_INSTALL_COMPONENTSDIR)/$(TARGET_NAME)/$(TWL_BUILDTYPE) - -# - -include $(TWL_IPL_RED_ROOT)/build/components/jackal.TWL/Makefile - -$(AUTOGEN_LSF): $(LSF_ORG) $(MAKE_LSF) - @echo " make:" $@ - @perl $(MAKE_LSF) $(TARGET_NAME) - -#===== End of Makefile ===== - diff --git a/build/tests/Launcher_sdlog/jackal.TWL/make_lsf.pl b/build/tests/Launcher_sdlog/jackal.TWL/make_lsf.pl deleted file mode 100755 index cc4770f1..00000000 --- a/build/tests/Launcher_sdlog/jackal.TWL/make_lsf.pl +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlWLAN - components - mongoose_sdlog.TWL -# File: make_lsf.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $ROOT; - -my $COMPONENT = $ARGV[0]; -print $COMPONENT; -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $ROOT = $ENV{$_}; - } -} - -my $src = sprintf("$ROOT/build/components/%s.TWL/%s.lsf", $COMPONENT, $COMPONENT); -my $dst = sprintf("%s_sdlog.lsf", $COMPONENT); - - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/libos_sp/ ) - { - my $tmp = $line; - $tmp =~ s/libos_sp/libossdlog_sp/; - - print OUT $tmp; - next; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/Launcher_sdlog/readme.txt b/build/tests/Launcher_sdlog/readme.txt deleted file mode 100644 index 1a1c542a..00000000 --- a/build/tests/Launcher_sdlog/readme.txt +++ /dev/null @@ -1,48 +0,0 @@ -¡ SDLOG‘Ήž”щƒ“ƒ`ƒƒ[‚ɂ‚¢‚Ä - -ŽÀ‹@“™‚ł̂ŃfƒoƒbƒO—p‚ÉASDƒJ[ƒh‚ɃfƒoƒbƒOƒvƒŠƒ“ƒg‚ðo—Í‚·‚郉ƒ“ƒ`ƒƒ[‚Å‚·B - -TwlIPL/build/tests/Launcher_sdlog‚Ɉړ®‚µ‚ărƒ‹ƒh‚·‚邯A -“¯‚¶ƒfƒBƒŒƒNƒgƒŠ‚ÉHNAA.tad‚ªì¬‚³‚ê‚Ü‚·‚Ì‚ÅANandInitializer“™‚ÅImport‚µ‚ĉº‚³‚¢B - -œARM9‚̃fƒoƒbƒOƒvƒŠƒ“ƒg‚݂̂ðo—Í - -$ make SDLOG=ARM9 - -œARM9/ARM7‚̃fƒoƒbƒOƒvƒŠƒ“ƒg‚ðo—Í - -$ make SDLOG=ALL - - -¡ SDLOG(‰ü‘¢”Å)ƒ‰ƒCƒuƒ‰ƒŠ’´“K“–ƒŠƒtƒ@ƒŒƒ“ƒX - -// SDLOGƒVƒXƒeƒ€‚ÌŠJŽnBŠJŽnˆÈ~AOS_PrintfŒn‚ðæ‚ÁŽæ‚èASDƒƒOƒoƒbƒtƒ@‚É’~ϨSDƒJ[ƒh‘‚«o‚µ‚ðs‚¢‚Ü‚·B -// -// path: o—Í‚·‚éƒtƒ@ƒCƒ‹‚ð’u‚­SDƒJ[ƒhã‚̃fƒBƒŒƒNƒgƒŠ(—á:sdmc:/log) -// filename: o—Í‚·‚éƒtƒ@ƒCƒ‹–¼ -// buffer: ƒƒO‚̈ꎞ‘žæB‘å—ʂ̃ƒO‚ðŽc‚·ê‡‚Í 1KB ˆÈã‚ð„§ -// partitionSize: SD ƒJ[ƒh‚É‘‚«ž‚ÞƒTƒCƒYB bufferSize ‚Ì 1/n ‚ð„§ -// writeType: ã‘‚« or ’Ç‹L‚ÌŽw’èBƒtƒ@ƒCƒ‹‚ª‘¶Ý‚µ‚È‚¢ê‡‚͂ǂ¿‚ç‚àV‹K쬂ƂȂé - -BOOL SDLOG_InitEx(const char* path, const char* filename, char* buffer, u16 bufferSize, u16 partitionSize, SDLOGWriteType writeType); - -// OS_PrintfŒn‚ðæ‚ÁŽæ‚ç‚È‚¢”Å -// path: •Û‘¶æB sdmc:/sample ‚ÆŽw’è‚·‚邯 sdmc:/sample/Log0.log ‚É -// ƒƒO‚ª•Û‘¶‚³‚ê‚é(ƒtƒ@ƒCƒ‹–¼‚͌Œè‚Å‚·B) -BOOL SDLOG_Init(const char* path, char* buffer, u16 bufferSize, u16 partitionSize, SDLOGWriteType writeType); - - -// SDLOG‚ɃfƒoƒbƒOî•ñ‚ð‘‚«o‚·B -void SDLOG_Printf(const char *fmt, ...); - -// ƒoƒbƒtƒ@‚É’™‚ß‚ç‚ꂽƒƒO‚ð‹­§“I‚É SD ƒJ[ƒh‚É‘‚«ž‚Þ -// ‚±‚±‚ł͊mŽÀ‚ɃƒO‚ð‘‚«o‚µ‚½‚¢‚Æ‚¢‚¤êŠ‚É’Ç‰Á‚·‚邱‚Æ‚ð„§B -void SDLOG_Flush(void); - -// ‚Ü‚¾‘‚«o‚µ‚Ä‚¢‚È‚¢ƒƒO‚ð SD ƒJ[ƒh‚É‘‚«ž‚ñ‚Ńtƒ@ƒCƒ‹‚ðƒNƒ[ƒY -void SDLOG_FinishEx(void); // OS_Printfæ‚ÁŽæ‚è”Å -void SDLOG_Finish(void); // OS_Printfæ‚ÁŽæ‚ç‚È‚¢”Å - -// ARM7‚̃fƒoƒbƒOƒƒO‚ðo—Í -void SDLOG_PrintServer(void); - diff --git a/build/tests/Launcher_sdlog/scripts/Makefile b/build/tests/Launcher_sdlog/scripts/Makefile deleted file mode 100644 index 75bcf9e9..00000000 --- a/build/tests/Launcher_sdlog/scripts/Makefile +++ /dev/null @@ -1,60 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher - -SYSMENU_LIBRARIES_DIR = $(SYSMENU_ROOT)/build/libraries_sysmenu - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdater - -SCRIPTS_DIR = . - -MAKEFILES_ORG = $(LAUNCHER_DIR)/ARM9/Makefile -MAKE_MAKEFILES = $(SCRIPTS_DIR)/sdlog_makefile.pl -AUTOGEN_MAKEFILES = $(LAUNCHER_DIR)/ARM9/Makefile_sdlog -LDIRT_CLEAN += $(AUTOGEN_MAKEFILES) - -MAIN_ORG = $(LAUNCHER_DIR)/ARM9/src/main.c -MAKE_MAIN = $(SCRIPTS_DIR)/sdlog_main_c.pl -AUTOGEN_MAIN = $(LAUNCHER_DIR)/ARM9/src/main_sdlog.c -LDIRT_CLEAN += $(AUTOGEN_MAIN) - - - -TARGETS = $(AUTOGEN_MAKEFILES) $(AUTOGEN_MAIN) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_MAKEFILES): $(MAKEFILES_ORG) $(MAKE_MAKEFILES) - @echo " make:" $@ - @perl $(MAKE_MAKEFILES) - -$(AUTOGEN_MAIN): $(MAIN_ORG) $(MAKE_MAIN) - @echo " make:" $@ - @perl $(MAKE_MAIN) - -#===== End of Makefile ===== diff --git a/build/tests/Launcher_sdlog/scripts/sdlog_main_c.pl b/build/tests/Launcher_sdlog/scripts/sdlog_main_c.pl deleted file mode 100755 index 4ac96bbd..00000000 --- a/build/tests/Launcher_sdlog/scripts/sdlog_main_c.pl +++ /dev/null @@ -1,92 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: sdlog_main_c.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $src = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/src/main.c"; -my $dst = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/src/main_sdlog.c"; - - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - print OUT $line; - - if( $line =~ m/^\#include \"scanWDS\.h\"/ ) - { - print OUT "//\t[AUTO COMMENT] SDLOG‚̃wƒbƒ_‚ðƒCƒ“ƒNƒ‹[ƒh‚µAƒƒO—pƒoƒbƒtƒ@‚ð’è‹`‚µ‚Ü‚·B", $rn; - print OUT <<__SDLOG_DEFINE__; -\#ifdef USE_SDLOG -\#include "sd_log_wrapper.h" -\#define BUFFER_SIZE 0x800 -char logBuffer[ (BUFFER_SIZE + 1) ]; -\#endif -__SDLOG_DEFINE__ - } - if( $line =~ m/^[\t ]*RTC_Init\(\);/ ) - { - print OUT "//\t[AUTO COMMENT] SDƒJ[ƒh‚ÉOS_Printf‚̃ƒO‚ð‹L˜^‚·‚邽‚ß‚ÉASDLOG‚ð‰Šú‰»‚µ‚Ü‚·B", $rn; - print OUT <<__SDLOG_INITEX__; -\#ifdef USE_SDLOG - { - RTCDate rDate; - RTCTime rTime; - char filename[FS_ENTRY_LONGNAME_MAX]; - - (void)RTC_GetDateTime(&rDate, &rTime); - OS_SPrintf(filename, "Launcher_%02d%02d%02d_%02d%02d.txt", - rDate.year, rDate.month, rDate.day, - rTime.hour, rTime.minute); - - SDLOG_InitEx("sdmc:/log", filename, logBuffer, - BUFFER_SIZE, 0x80, SDLOG_WRITE_TYPE_CONTINUANCE); - } -\#endif -__SDLOG_INITEX__ - } - - if( $line =~ m/^[\t ]*OS_SetIrqCheckFlag\(OS_IE_V_BLANK\);/ ) - { - print OUT <<__SDLOG_PRINTARM7__; -\#ifdef USE_SDLOG -\#ifdef USE_SDLOG_SUBP - SDLOG_PrintServer(); -\#endif -\#endif -__SDLOG_PRINTARM7__ - } - -} -close(OUT); - diff --git a/build/tests/Launcher_sdlog/scripts/sdlog_makefile.pl b/build/tests/Launcher_sdlog/scripts/sdlog_makefile.pl deleted file mode 100755 index 04931aa7..00000000 --- a/build/tests/Launcher_sdlog/scripts/sdlog_makefile.pl +++ /dev/null @@ -1,103 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: sdlog_makefile.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $rn = "\x0D\x0A"; - -my $src = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile"; -my $dst = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile_sdlog"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/main\.c/ ) - { - $line =~ s/main\.c/main_sdlog\.c/; - } - - if( $line =~ m/^COMPONENT_DIR/ ) - { - $line =~ s/\/build\/components/\/build\/tests\/Launcher_sdlog/; - print OUT $line; - print OUT "override COMPONENTSDIR\t=\t\$(call eupath, \$(COMPONENT_DIR)/../components)", $rn; - next; - } - - if( $line =~ m/^WRAM_MAP_FILE[\t ]*=[\t ]*\$\(COMPONENT_DIR\)\/wram_regs\/wram_regs.rbin/ ) - { - $line =~ s/\$\(COMPONENT_DIR\)/\$\(TWL_IPL_RED_ROOT\)\/build\/components\/\$\(DEFAULT_COMP_ARM7\)\.TWL/; - } - - if( $line =~ m/^INSTALL_DIR/ ) - { - $line =~ s/\$\(SDK_NMENU_DATADIR\)/\$\(TWL_IPL_RED_ROOT\)\/build\/tests\/Launcher_sdlog/; - } - - if( $line =~ m/^TARGET_BIN[\t ]*=[\t ]*\$\(TITLEID_LO\)\.tad/ ) - { - $line =~ s/\.tad/_sdlog\.tad/; - print OUT <<__SDLOG_DESCRIPTIONS__; -\# -------------------------------------------------------------- -\# SDLOG -ifeq (\$(TWL_FINALROM),) \# SDLOG is enabled only on Release and Debug - -ifeq (\$(SDLOG), TRUE) -override SDLOG = ARM9 -endif - -ifneq (\$(filter ARM7,\$(SDLOG)),) -\$(error "Invalid SDLOG option : should be SDLOG=[ARM9/ALL]") -endif - -SDLOG_LIST = \$(if \$(filter ALL,\$(SDLOG)),ARM7 ARM9,\$(SDLOG)) - -ifneq (\$(filter ARM9,\$(SDLOG_LIST)),) -MACRO_FLAGS += -DUSE_SDLOG -ELIBRARIES += libsdlogRed\$(TWL_LIBSUFFIX).a -ELIBRARY_DIRS += \$(SYSMENU_ROOT)/build/tests/Launcher_sdlog/lib/\$(TWL_LIBTYPE) -EINCLUDES += \$(SYSMENU_ROOT)/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/include \\ - \$(ROOT)/build/tests/sdlog/sdlog/include -ifneq (\$(filter ARM7,\$(SDLOG_LIST)),) -MACRO_FLAGS += -DUSE_SDLOG_SUBP -endif \# SDLOG [ARM7] -endif \# SDLOG [ARM9] - -endif \# FINALROM - -__SDLOG_DESCRIPTIONS__ - } - - print OUT $line; -} -close(OUT); - diff --git a/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/Makefile b/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/Makefile deleted file mode 100644 index 75ec2c71..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/Makefile +++ /dev/null @@ -1,100 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- -override TARGET_PLATFORM = TWL - -TARGET_CODEGEN ?= ARM -TWL_ARCHGEN ?= LIMITED -TWL_PROC = ARM7 - -OS_LIBRARY_SRC_DIR_BASE = $(ROOT)/build/libraries/os -OS_LIBSRC_ARM7 = $(OS_LIBRARY_SRC_DIR_BASE)/ARM7/src -OS_LIBSRC_ARM7TWL = $(OS_LIBRARY_SRC_DIR_BASE)/ARM7.TWL/src -OS_LIBSRC_COMMON = $(OS_LIBRARY_SRC_DIR_BASE)/common/src - -SRCDIR = src ../common/src ../ARM7/src -INCDIR = $(OS_LIBSRC_ARM7TWL)/../../common/include - -SRCS = $(OS_LIBSRC_ARM7TWL)/os_irqHandler.c \ - $(OS_LIBSRC_COMMON)/os_irqTable.c \ - $(OS_LIBSRC_COMMON)/os_interrupt.c \ - $(OS_LIBSRC_COMMON)/os_pxi.c \ - $(OS_LIBSRC_COMMON)/os_spinLock.c \ - os_printf.c \ - $(OS_LIBSRC_COMMON)/os_thread.c \ - $(OS_LIBSRC_COMMON)/os_context.c \ - $(OS_LIBSRC_COMMON)/os_emulator.c \ - $(OS_LIBSRC_COMMON)/os_message.c \ - $(OS_LIBSRC_COMMON)/os_mutex.c \ - $(OS_LIBSRC_COMMON)/os_init.c \ - $(OS_LIBSRC_COMMON)/os_arena.c \ - $(OS_LIBSRC_COMMON)/os_alloc.c \ - $(OS_LIBSRC_COMMON)/os_exception.c \ - $(OS_LIBSRC_COMMON)/os_timer.c \ - $(OS_LIBSRC_COMMON)/os_tick.c \ - $(OS_LIBSRC_COMMON)/os_alarm.c \ - $(OS_LIBSRC_COMMON)/os_valarm.c \ - $(OS_LIBSRC_COMMON)/os_system.c \ - $(OS_LIBSRC_COMMON)/os_systemWork.c \ - $(OS_LIBSRC_COMMON)/os_profile.c \ - $(OS_LIBSRC_COMMON)/os_reset.c \ - $(OS_LIBSRC_COMMON)/os_ownerInfo.c \ - $(OS_LIBSRC_COMMON)/os_ownerInfoEx.c \ - $(OS_LIBSRC_COMMON)/os_entropy.c \ - $(OS_LIBSRC_ARM7)/os_terminate_sp.c \ - $(OS_LIBSRC_COMMON)/os_event.c \ - $(OS_LIBSRC_COMMON)/os_application_jump.c - -TARGET_LIB = libossdlog_sp$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -# DEBUG”Ńrƒ‹ƒh‚Ìê‡ARELEASE”łŃrƒ‹ƒh‚µ‚Ä -# DEBUG”ł̃‰ƒCƒuƒ‰ƒŠ‚ð‘•‚¢‚Ü‚·B - -ifdef TARGET_DEBUG -TWL_BUILD_TYPE = RELEASE -else -ifdef TWL_DEBUG -TWL_BUILD_TYPE = RELEASE -else -ifdef NITRO_DEBUG -TWL_BUILD_TYPE = RELEASE -endif -endif -endif - -#---------------------------------------------------------------------------- -# HYBRID / LIMITED —¼•û‚̃‰ƒCƒuƒ‰ƒŠ‚ð쬂µ‚Ü‚· -TWL_ARCHGEN ?= ALL - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -INSTALL_TARGETS = $(TARGETS) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/build/tests/Launcher_sdlog/lib/$(TWL_LIBTYPE) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/src/os_printf.c b/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/src/os_printf.c deleted file mode 100644 index 44c337ea..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM7.TWL/src/os_printf.c +++ /dev/null @@ -1,1536 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - OS - File: os_printf.c - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include -#include - -//---------------- for IS-NITRO-DEBUGGER -#ifdef SDK_LINK_ISD -# pragma warn_extracomma off -# include // has extracomma in enum -# pragma warn_extracomma reset -#else -void ISDPrint(const char *); -#endif - -//---------------- for IS-TWL-DEBUGGER -#ifdef SDK_LINK_ISTD -# pragma warn_extracomma off -# include // has extracomma in enum -# pragma warn_extracomma reset -#else -void ISTDPrintEx(int console, const char *); -#endif -//---- print output -#ifdef SDK_ARM9 -#define OSi_PRINT_OUTPUT (*(u8*)HW_PRINT_OUTPUT_ARM9) -#define OSi_PRINT_ERR_OUTPUT (*(u8*)HW_PRINT_OUTPUT_ARM9ERR) -#else -#define OSi_PRINT_OUTPUT (*(u8*)HW_PRINT_OUTPUT_ARM7) -#define OSi_PRINT_ERR_OUTPUT (*(u8*)HW_PRINT_OUTPUT_ARM7ERR) -#endif - -#ifndef SDK_FINALROM -static char common_buffer[256]; // thread unsafe, but less use of stack -#endif - -#if !defined(SDK_FINALROM) && defined(SDK_NO_MESSAGE) -#undef OSi_Warning -#undef OSi_TWarning -#undef OSi_Panic -#undef OSi_TPanic -void OSi_Warning(const char *file, int line, const char *fmt, ...); -void OSi_TWarning(const char *file, int line, const char *fmt, ...); -void OSi_Panic(const char *file, int line, const char *fmt, ...); -void OSi_TPanic(const char *file, int line, const char *fmt, ...); -#endif /* SDK_NO_MESSAGE */ - - -/*---------------------------------------------------------------------------* - Name: OS_PutChar - OS_FPutChar - - Description: put a letter for debug console - - Arguments: console : output window - c : char code , shuild be 0x01-0xff - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OS_PutChar(char c) -{ - OS_FPutChar((int)OSi_PRINT_OUTPUT, c); -} - -SDK_WEAK_SYMBOL void OS_FPutChar(int console, char c) -{ - char str[2]; - - str[0] = c; - str[1] = '\0'; - - // Because of no putchar-type function on ISDebugger library, - // use 'putstring' for a single letter outputting - OS_FPutString(console, str); -} -#endif - -/*---------------------------------------------------------------------------* - Name: OS_FPutString - - Description: put a string to debug console. - console port are automatically switched depends on emu/hw - - Arguments: console : output window - str : string - - Returns: None. - *---------------------------------------------------------------------------*/ -static void OS_PutStringDefault(const char* str); -static void OS_FPutStringInit(int console, const char *str); - -#ifndef SDK_FINALROM -static void OS_FPutStringDummy(int console, const char *str); -static void OS_FPutStringAris(int console, const char *str); -static void OS_FPutStringISD(int console, const char *str); -static void OS_FPutStringISTD(int console, const char *str); -#ifdef SDK_ARM7 -static void OS_FPutStringPrnSrv(int console, const char *str); -#endif -#endif - -#ifndef SDK_FINALROM -void (*OS_PutString) (const char *str) = OS_PutStringDefault; -void (*OS_FPutString) (int console, const char *str) = OS_FPutStringInit; -void (*OSi_FuncTerminate) (void) = OS_Terminate; -//---- hook function -static OSFPutStringHookType OSi_FPutStringHook = NULL; -#endif - - -/*---------------------------------------------------------------------------* - Name: OS_PutStringDefault - Description: OS_PutString initializer - *---------------------------------------------------------------------------*/ -static void OS_PutStringDefault(const char* str) -{ -#pragma unused(str) -#ifndef SDK_FINALROM - OS_FPutString(OS_PRINT_OUTPUT_CURRENT, str); -#endif -} - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringInit - Description: OS_FPutString initializer - *---------------------------------------------------------------------------*/ -static void OS_FPutStringInit(int console, const char *str) -{ -#ifndef SDK_FINALROM - OSIntrMode intr = OS_DisableInterrupts(); - u32 consoleType = OS_GetConsoleType(); - - OS_FPutString = OS_FPutStringDummy; - -#ifdef SDK_ARM9 - //---- arm9 - if ( consoleType & OS_CONSOLE_ENSATA ) - { - OS_FPutString = OS_FPutStringAris; - } - else if ( consoleType & OS_CONSOLE_TWLDEBUGGER ) - { - OS_FPutString = OS_FPutStringISTD; - } - else if ( consoleType & OS_CONSOLE_ISDEBUGGER ) - { -#ifndef SDK_TWLLTD - OS_FPutString = OS_FPutStringISD; -#endif - } -#else - //---- arm7 -// if ( consoleType & OS_CONSOLE_TWLDEBUGGER ) -// { -// OS_FPutString = OS_FPutStringISTD; -// } -// else - { - OS_FPutString = OS_FPutStringPrnSrv; - } -#endif - - OS_FPutString(console, str); - - (void)OS_RestoreInterrupts(intr); - -#else -#pragma unused(console, str) -#endif -} - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringDummy - Description: dummy OS_FPutString. do nothing. - *---------------------------------------------------------------------------*/ -static void OS_FPutStringDummy(int console, const char *str) -{ -#pragma unused(console, str) -#ifndef SDK_FINALROM - if ( OSi_FPutStringHook ) - { - OSi_FPutStringHook(OS_FPUTSTRING_DUMMY, console, str); - } -#endif -} - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringAris - Description: OS_FPutString for software simulator called ARIS - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif -static void OS_FPutStringAris(int console, const char *str) -{ - char c; - - if ( console == OS_PRINT_OUTPUT_CURRENT ) - { - console = (int)OSi_PRINT_OUTPUT; - } - else if ( console == OS_PRINT_OUTPUT_ERROR ) - { - console = (int)OSi_PRINT_ERR_OUTPUT; - } - - if ( console != OS_PRINT_OUTPUT_NONE ) - { - while ('\0' != (c = *str)) - { - reg_OS_EMU_CONSOLE_OUT = (u8)c; // Console out - str++; - } - if ( OSi_FPutStringHook ) - { - OSi_FPutStringHook(OS_FPUTSTRING_ARIS, console, str); - } - } -} -#ifdef SDK_CW_WARNOFF_SAFESTRB -#include -#endif -#endif - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringISD - Description: OS_FPutString for hardware emulator called IS Debugger - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -static void OS_FPutStringISD(int console, const char *str) -{ - // ISDPrint ‚̉Šú‰»ˆ— - OS_InitLock(); - - if ( console == OS_PRINT_OUTPUT_CURRENT ) - { - console = (int)OSi_PRINT_OUTPUT; - } - else if ( console == OS_PRINT_OUTPUT_ERROR ) - { - console = (int)OSi_PRINT_ERR_OUTPUT; - } - - if ( console != OS_PRINT_OUTPUT_NONE ) - { - ISDPrint(str); - if ( OSi_FPutStringHook ) - { - OSi_FPutStringHook(OS_FPUTSTRING_ISD, console, str); - } - } -} -#endif - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringISTD - Description: OS_FPutString for hardware emulator called IS TWL Debugger - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -static void OS_FPutStringISTD(int console, const char *str) -{ - // ISTDPrintEx ‚̉Šú‰»ˆ— - OS_InitLock(); - - if ( console == OS_PRINT_OUTPUT_CURRENT ) - { - console = (int)OSi_PRINT_OUTPUT; - } - else if ( console == OS_PRINT_OUTPUT_ERROR ) - { - console = (int)OSi_PRINT_ERR_OUTPUT; - } - - if ( console != OS_PRINT_OUTPUT_NONE ) - { - ISTDPrintEx(console, str); - if ( OSi_FPutStringHook ) - { - OSi_FPutStringHook(OS_FPUTSTRING_ISTD, console, str); - } - } -} -#endif - - -/*---------------------------------------------------------------------------* - Name: OS_VPrintf/OS_TVPrintf - - Description: print formatted strings (vprintf ver.) - - Arguments: fmt : format string - vlist : parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -// If you want to use "vsnprintf()" in ARM7, define SDK_USE_VSNPRINTF. -// "vsnprintf()" is able to print float format but the code size become hugely bigger. -// #define SDK_USE_VSNPRINTF - -#ifndef SDK_FINALROM -#if defined(SDK_ARM9) || defined(SDK_USE_VSNPRINTF) -SDK_WEAK_SYMBOL void OS_VPrintf(const char *fmt, va_list vlist) -{ - OS_VFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); -} -SDK_WEAK_SYMBOL void OS_VFPrintf(int console, const char *fmt, va_list vlist) -{ - (void)vsnprintf(common_buffer, sizeof(common_buffer), fmt, vlist); - OS_FPutString(console, common_buffer); -} -#else -SDK_WEAK_SYMBOL void OS_VPrintf(const char *fmt, va_list vlist) -{ - OS_TVFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); -} -SDK_WEAK_SYMBOL void OS_VFPrintf(int console, const char *fmt, va_list vlist) -{ - OS_TVFPrintf(console, fmt, vlist); -} -#endif -SDK_WEAK_SYMBOL void OS_TVPrintf(const char *fmt, va_list vlist) -{ - OS_TVFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); -} -SDK_WEAK_SYMBOL void OS_TVFPrintf(int console, const char *fmt, va_list vlist) -{ - (void)OS_VSNPrintf(common_buffer, sizeof(common_buffer), fmt, vlist); - OS_FPutString(console, common_buffer); -} -SDK_WEAK_SYMBOL void OS_TVPrintfEx(const char *fmt, va_list vlist) -{ - OS_TVFPrintfEx(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); -} -SDK_WEAK_SYMBOL void OS_TVFPrintfEx(int console, const char *fmt, va_list vlist) -{ - (void)OS_VSNPrintfEx(common_buffer, sizeof(common_buffer), fmt, vlist); - OS_FPutString(console, common_buffer); -} -#endif - -/*---------------------------------------------------------------------------* - Name: OS_Printf/OS_TPrintf/OS_TPrintfEx - OS_FPrintf/OS_TFPrintf/OS_TFPrintfEx - - Description: print formatted strings. - - Arguments: console : output window - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OS_Printf(const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_VFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_FPrintf(int console, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_VFPrintf(console, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TPrintf(const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVFPrintf(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TFPrintf(int console, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVFPrintf(console, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TPrintfEx(const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVFPrintfEx(OS_PRINT_OUTPUT_CURRENT, fmt, vlist); - va_end(vlist); -} - -SDK_WEAK_SYMBOL void OS_TFPrintfEx(int console, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TVFPrintfEx(console, fmt, vlist); - va_end(vlist); -} -#endif - - -/*---------------------------------------------------------------------------* - Name: OSi_Warning / OSi_TWarning - - Description: print warning message. - - Arguments: file : filename of warning location - line : line number of warning location - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OSi_Warning(const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_FPrintf(OS_PRINT_OUTPUT_ERROR, "%s:%d Warning:", file, line); - OS_VFPrintf(OS_PRINT_OUTPUT_ERROR, fmt, vlist); - OS_FPrintf(OS_PRINT_OUTPUT_ERROR, "\n"); - va_end(vlist); -} - - -SDK_WEAK_SYMBOL void OSi_TWarning(const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TPrintf("%s:%d Warning:", file, line); - OS_TVPrintf(fmt, vlist); - OS_TPrintf("\n"); - va_end(vlist); -} -#endif - -/*---------------------------------------------------------------------------* - Name: OSi_Panic/OSi_TPanic - - Description: print panic message and halt cpu. - - Arguments: file : filename of panic location - line : line number of panic location - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OSi_Panic(const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_FPrintf(OS_PRINT_OUTPUT_ERROR, "%s:%d Panic:", file, line); - OS_VFPrintf(OS_PRINT_OUTPUT_ERROR, fmt, vlist); - OS_FPrintf(OS_PRINT_OUTPUT_ERROR, "\n"); - OSi_FuncTerminate(); // Never Returns -} - -SDK_WEAK_SYMBOL void OSi_TPanic(const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_TPrintf("%s:%d Panic:", file, line); - OS_TVPrintf(fmt, vlist); - OS_TPrintf("\n"); - OSi_FuncTerminate(); // Never Returns -} -#endif - -/*---------------------------------------------------------------------------* - Name: OSi_FWarning / OSi_TFWarning - - Description: print warning message. - - Arguments: console : output window - file : filename of warning location - line : line number of warning location - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OSi_FWarning(int console, const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_FPrintf(console, "%s:%d Warning:", file, line); - OS_VFPrintf(console, fmt, vlist); - OS_FPrintf(console, "\n"); - va_end(vlist); -} - - -SDK_WEAK_SYMBOL void OSi_TFWarning(int console, const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - OS_TFPrintf(console, "%s:%d Warning:", file, line); - OS_TVFPrintf(console, fmt, vlist); - OS_TFPrintf(console, "\n"); - va_end(vlist); -} -#endif - -/*---------------------------------------------------------------------------* - Name: OSi_FPanic/OSi_TFPanic - - Description: print panic message and halt cpu. - - Arguments: file : filename of panic location - line : line number of panic location - fmt : format string - ... and parameters - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifndef SDK_FINALROM -SDK_WEAK_SYMBOL void OSi_FPanic(int console, const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_FPrintf(console, "%s:%d Panic:", file, line); - OS_VFPrintf(console, fmt, vlist); - OS_FPrintf(console, "\n"); - OSi_FuncTerminate(); // Never Returns -} - -SDK_WEAK_SYMBOL void OSi_TFPanic(int console, const char *file, int line, const char *fmt, ...) -{ - va_list vlist; - - va_start(vlist, fmt); - (void)OS_DisableInterrupts(); - OS_TFPrintf(console, "%s:%d Panic:", file, line); - OS_TVFPrintf(console, fmt, vlist); - OS_TFPrintf(console, "\n"); - OSi_FuncTerminate(); // Never Returns -} -#endif - -/*---------------------------------------------------------------------------* - Name: OS_InitPrintServer - - Description: initialize print server - - this code should be called before OS_InitLock() - - OS_InitLock() are also called from OS_Init() - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -#ifdef SDK_ARM9 -#ifndef SDK_FINALROM -void OS_InitPrintServer(void) -{ - OSPrintServerBuffer *p; - - // first, allocate buffer and register it. - OS_InitArena(); - p = OS_AllocFromSharedArenaHi(sizeof(OSPrintServerBuffer), 4); - p->in = p->out = 0UL; - PXI_SetComponentParam((u32)p); -} -#endif //SDK_FINALROM -#endif //SDK_ARM9 - - -/*---------------------------------------------------------------------------* - Name: OS_PrintServer - - Description: print a string comes from ARM7 via shared memory - - Arguments: str : string - - Returns: None. - *---------------------------------------------------------------------------*/ -#ifdef SDK_ARM9 -#ifndef SDK_FINALROM -#include // to access 'common_buffer' via cache -void OS_PrintServer(void) -{ - OSPrintServerBuffer *p; - register OSPrintWChar word; - - u32 in, out; - int i; - - p = (OSPrintServerBuffer *)PXI_GetComponentParam(); - - //---- If print buffer isn't set up, do nothing. - if (!p) - { - return; - } - - out = p->out; - in = p->in; - - while (in != out) - { - i = 0; - - while (in != out && i < sizeof(common_buffer) - 3) - { - word.s = p->buffer[out].s; - if (word.c[0]) - { - common_buffer[i++] = word.c[0]; // store via cache - - if (word.c[1]) - { - common_buffer[i++] = word.c[1]; // store via cache - } - } - out++; - if (out >= OS_PRINTSRV_WCHARSIZE) - out = 0; - } - common_buffer[i] = '\0'; // store via cache - OS_FPutString(OS_PRINT_OUTPUT_CURRENT, common_buffer); - } - - // tell finished - p->out = out; -} - -#include -#endif //SDK_FINALROM -#endif //SDK_ARM9 - - -/*---------------------------------------------------------------------------* - Name: OS_FPutStringPrnSrv - - Description: sends string to ARM9 via shared memory - - Arguments: console : output window - str : string to be sent - - Returns: None - *---------------------------------------------------------------------------*/ -#ifdef SDK_ARM7 -static void OS_FPutStringPrnSrv(int console, const char *str) -{ -#pragma unused(console, str) -#ifndef SDK_FINALROM - OSPrintServerBuffer *p; - register OSPrintWChar word; - - u32 in, in_tmp, out; - u32 isOdd; - - if ( console == OS_PRINT_OUTPUT_NONE ) - { - return; - } - - p = (OSPrintServerBuffer *)PXI_GetComponentParam(); - in = p->in; - out = p->out; - isOdd = ((u32)str) & 1; - - while (1) - { - in_tmp = in + 1; - if (in_tmp >= OS_PRINTSRV_WCHARSIZE) - in_tmp = 0; - if (out == in_tmp) - break; // Buffer full, then exit - - if (isOdd) - { - p->buffer[in].s = word.s = (u16)((*(u16 *)(str - 1)) & 0xff00); - str++; - isOdd = 0UL; - if (!word.c[1]) - break; - in = in_tmp; - } - else - { - p->buffer[in].s = word.s = *(u16 *)str; - str += 2; - if (!word.c[0]) - break; - in = in_tmp; - if (!word.c[1]) - break; - } - } - p->in = in; -#endif //SDK_FINALROM -} -#endif //SDK_ARM7 - - -#if defined(SDK_CW_WARNOFF_SAFESTRB) -#include -#endif - -/* inner function for sized-buffer output */ -typedef struct dst_string_tag -{ - size_t len; - char *cur; - char *base; -} -dst_string; - -static void string_put_char(dst_string * p, char c) -{ - if (p->len > 0) - *p->cur = c, --p->len; - ++p->cur; -} - -static void string_fill_char(dst_string * p, char c, int n) -{ - if (n > 0) - { - size_t i, k = p->len; - if (k > (size_t) n) - k = (size_t) n; - for (i = 0; i < k; ++i) - p->cur[i] = c; - p->len -= k; - p->cur += n; - } -} - -static void string_put_string(dst_string * p, const char *s, int n) -{ - if (n > 0) - { - size_t i, k = p->len; - if (k > (size_t) n) - k = (size_t) n; - for (i = 0; i < k; ++i) - p->cur[i] = s[i]; - p->len -= k; - p->cur += n; - } -} - -/*---------------------------------------------------------------------------* - Name: OS_SPrintf - - Description: equal to 'OS_VSPrintf' except argument style. - - Arguments: dst : destination buffer. - fmt : format string. - - Returns: length of the generated string. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_SPrintf(char *dst, const char *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = OS_VSPrintf(dst, fmt, va); - va_end(va); - return ret; -} - -/*---------------------------------------------------------------------------* - Name: OS_VSPrintf - - Description: equal to 'OS_VSNPrintf' except buffer size argument. - - Arguments: dst : destination buffer. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_VSPrintf(char *dst, const char *fmt, va_list vlist) -{ - return OS_VSNPrintf(dst, 0x7FFFFFFF, fmt, vlist); -} - -/*---------------------------------------------------------------------------* - Name: OS_SNPrintf - - Description: equal to 'OS_VSNPrintf' except argument style. - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_SNPrintf(char *dst, size_t len, const char *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = OS_VSNPrintf(dst, len, fmt, va); - va_end(va); - return ret; -} - -/*---------------------------------------------------------------------------* - Name: OS_VSNPrintf - - Description: small-size vsnprintf which is similar to 'vsnprintf' - without following supports. - * CodeWarrior Extensions (#s) - * MSL AltiVec Extensions (v, vh, vl, hv, lv, @) - * indexed argments (%m$, *m$) - * floating-point - * wchar_t - - Note: '+' and '#' do not work, MSL's sprintf(). - to keep same result, they are no implement. - { // exsample - char buf[5]; - sprintf(buf, "%-i\n", 45); // "45" (OK) - sprintf(buf, "%0i\n", 45); // "45" (OK) - sprintf(buf, "% i\n", 45); // " 45" (OK) - sprintf(buf, "%+i\n", 45); // "%+i" ("+45" expected) - sprintf(buf, "%#x\n", 45); // "%#x" ("0x2d" expected) - // but, this works correctly! - sprintf(buf, "% +i\n", 45); // "+45" (OK) - } - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_VSNPrintf(char *dst, size_t len, const char *fmt, va_list vlist) -{ - return STD_TVSNPrintf(dst, len, fmt, vlist); -} - -/*---------------------------------------------------------------------------* - Name: OS_VSNPrintfEx - - Description: OS_VSNPrintfEx is an addition of binary output to OS_VSNPrintfEx. - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL int OS_VSNPrintfEx(char *dst, size_t len, const char *fmt, va_list vlist) -{ - char buf[24]; - int n_buf; - char prefix[2]; - int n_prefix; - - const char *s = fmt; - - dst_string str; - str.len = len, str.cur = str.base = dst; - - while (*s) - { - if ((unsigned int)(((unsigned char)*s ^ 0x20) - 0xA1) < 0x3C) - { - /* Shift JIS character */ - string_put_char(&str, *s++); - if (*s) - string_put_char(&str, *s++); - } - else if (*s != '%') - { - /* normal ASCII character */ - string_put_char(&str, *s++); - } - else - { - /* output with format */ - enum - { - flag_blank = 000001, /* ' ' */ - flag_plus = 000002, /* '+' */ - flag_sharp = 000004, /* '#' */ - flag_minus = 000010, /* '-' */ - flag_zero = 000020, /* '0' */ - flag_l1 = 000040, /* "l" */ - flag_h1 = 000100, /* "h" */ - flag_l2 = 000200, /* "ll" */ - flag_h2 = 000400, /* "hh" */ - flag_unsigned = 010000, /* 'o', 'u', ... */ - flag_binary = 020000, /* 'b' */ - flag_colon = 040000, /* ':' */ - flag_end - }; - int flag = 0, width = 0, precision = -1, radix = 10; - char hex_char = 'a' - 10; - const char *p_start = s; - /* flags */ - for (;;) - { - switch (*++s) - { - case '+': - if (s[-1] != ' ') - break; - flag |= flag_plus; - continue; - case ' ': - flag |= flag_blank; - continue; - case '-': - flag |= flag_minus; - continue; - case '0': - flag |= flag_zero; - continue; - case ':': - flag |= flag_colon; - continue; - } - break; - } - /* width */ - if (*s == '*') - { - ++s, width = va_arg(vlist, int); - if (width < 0) - width = -width, flag |= flag_minus; - } - else - { - while ((*s >= '0') && (*s <= '9')) - width = (width * 10) + *s++ - '0'; - } - /* precision */ - if (*s == '.') - { - ++s, precision = 0; - if (*s == '*') - { - ++s, precision = va_arg(vlist, int); - if (precision < 0) - precision = -1; - } - else - { - while ((*s >= '0') && (*s <= '9')) - precision = (precision * 10) + *s++ - '0'; - } - } - /* option */ - switch (*s) - { - case 'h': - if (*++s != 'h') - flag |= flag_h1; - else - ++s, flag |= flag_h2; - break; - case 'l': - if (*++s != 'l') - flag |= flag_l1; - else - ++s, flag |= flag_l2; - break; - } - - /* type */ - switch (*s) - { - case 'd': /* signed decimal */ - case 'i': /* signed decimal */ - goto put_integer; - case 'o': /* unsigned octal */ - radix = 8; - flag |= flag_unsigned; - goto put_integer; - case 'u': /* unsigned decimal */ - flag |= flag_unsigned; - goto put_integer; - case 'X': /* unsigned hexadecimal */ - hex_char = 'A' - 10; - goto put_hexadecimal; - case 'x': /* unsigned hexadecimal */ - goto put_hexadecimal; - case 'p': /* pointer */ - /* equal to code warrior */ - flag |= flag_sharp; - precision = 8; - goto put_hexadecimal; - - case 'C': /* unicode-character */ - flag |= flag_l1; - case 'c': /* character */ - if (precision >= 0) - goto put_invalid; - { - int c = va_arg(vlist, int); - width -= 1; - if (flag & flag_minus) - { - if (flag & flag_l1) - { - char dst[2]; - - if (STD_ConvertCharUnicodeToSjis(dst, (u16)c) == 1) - { - string_put_char(&str, dst[0]); - } - else - { - string_put_string(&str, dst, 2); - } - } - else - { - string_put_char(&str, (char)c); - } - string_fill_char(&str, ' ', width); - } - else - { - char pad = (char)((flag & flag_zero) ? '0' : ' '); - string_fill_char(&str, pad, width); - - if (flag & flag_l1) - { - char dst[2]; - - if (STD_ConvertCharUnicodeToSjis(dst, (u16)c) == 1) - { - string_put_char(&str, dst[0]); - } - else - { - string_put_string(&str, dst, 2); - } - } - else - { - string_put_char(&str, (char)c); - } - } - ++s; - } - break; - - case 'S': /* unicode-string */ - flag |= flag_l1; - case 's': /* string */ - { - int n_buf = 0; - const char *p_buf = va_arg(vlist, const char *); - - if (precision < 0) - { - while (p_buf[n_buf]) - { - if (flag & flag_l1) - { - n_buf += 2; - } - else - { - ++n_buf; - } - } - } - else - { - while ((n_buf < precision) && p_buf[n_buf]) - { - if (flag & flag_l1) - { - n_buf += 2; - } - else - { - ++n_buf; - } - } - } - if (flag & flag_l1) - { - n_buf /= 2; - } - width -= n_buf; - if (flag & flag_minus) - { - if (flag & flag_l1) - { - u16 *w_buf = (u16 *)p_buf; - char dst[2]; - - while (n_buf--) - { - if (STD_ConvertCharUnicodeToSjis(dst, *w_buf) == 1) - { - string_put_char(&str, dst[0]); - } - else - { - string_put_string(&str, dst, 2); - } - w_buf++; - } - } - else - { - string_put_string(&str, p_buf, n_buf); - } - string_fill_char(&str, ' ', width); - } - else - { - char pad = (char)((flag & flag_zero) ? '0' : ' '); - string_fill_char(&str, pad, width); - - if (flag & flag_l1) - { - u16 *w_buf = (u16 *)p_buf; - char dst[2]; - - while (n_buf--) - { - if (STD_ConvertCharUnicodeToSjis(dst, *w_buf) == 1) - { - string_put_char(&str, dst[0]); - } - else - { - string_put_string(&str, dst, 2); - } - w_buf++; - } - } - else - { - string_put_string(&str, p_buf, n_buf); - } - } - ++s; - } - break; - - case 'B': /* binary */ - hex_char = 'A' - 10; - case 'b': /* binary */ - { - int n_buf = width; - int count = 0; - char *p_buf = va_arg(vlist, char *); - int column_count; - - if (n_buf <= 0) - { - n_buf = 1; - } - if (precision == 0) - { - precision = -1; - } - column_count = precision; - - while (1) - { - char left_char, right_char; - int left = ((p_buf[count] & 0xF0) >> 4); - int right = (p_buf[count] & 0x0F); - - left_char = (char)((left < 10) ? (left + '0') : (left + hex_char)); - right_char = (char)((right < 10) ? (right + '0') : (right + hex_char)); - - string_put_char(&str, left_char); - string_put_char(&str, right_char); - - count++; - - if (count >= n_buf) - break; - - if (column_count > 0) - { - --column_count; - } - - if (column_count == 0) - { - string_put_char(&str, '\n'); - if ((flag & flag_blank) && !(flag & flag_minus)) - { - string_put_char(&str, ' '); - } - column_count = precision; - } - else if (flag & flag_colon) - { - string_put_char(&str, ':'); - } - else if (flag & flag_blank) - { - string_put_char(&str, ' '); - } - } - ++s; - } - break; - - case 'n': /* store the number of output */ - { - int pos = str.cur - str.base; - if (flag & flag_h2) - ; - else if (flag & flag_h1) - *va_arg(vlist, signed short *) = (signed short)pos; - else if (flag & flag_l2) - *va_arg(vlist, u64 *) = (u64)pos; - else - *va_arg(vlist, signed int *) = (signed int)pos; - } - ++s; - break; - - case '%': /* output '%' */ - if (p_start + 1 != s) - goto put_invalid; - string_put_char(&str, *s++); - break; - - default: /* invalid type */ - goto put_invalid; - - put_invalid: - string_put_string(&str, p_start, s - p_start); - break; - - put_hexadecimal: - radix = 16; - flag |= flag_unsigned; - put_integer: - { - u64 val = 0; - n_prefix = 0; - - if (flag & flag_minus) - flag &= ~flag_zero; - if (precision < 0) - precision = 1; - else - flag &= ~flag_zero; - - if (flag & flag_unsigned) - { - if (flag & flag_h2) - val = va_arg(vlist, unsigned char); - else if (flag & flag_h1) - val = va_arg(vlist, unsigned short); - else if (flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, unsigned long); - flag &= ~(flag_plus | flag_blank); - if (flag & flag_sharp) - { - if (radix == 16) - { - if (val != 0) - { - prefix[0] = (char)(hex_char + (10 + 'x' - 'a')); - prefix[1] = '0'; - n_prefix = 2; - } - } - else if (radix == 8) - { - prefix[0] = '0'; - n_prefix = 1; - } - } - } - else - { - if (flag & flag_h2) - val = va_arg(vlist, char); - else if (flag & flag_h1) - val = va_arg(vlist, short); - else if (flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, long); - if ((val >> 32) & 0x80000000) - { - val = ~val + 1; - prefix[0] = '-'; - n_prefix = 1; - } - else - { - if (val || precision) - { - if (flag & flag_plus) - { - prefix[0] = '+'; - n_prefix = 1; - } - else if (flag & flag_blank) - { - prefix[0] = ' '; - n_prefix = 1; - } - } - } - } - n_buf = 0; - switch (radix) - { - case 8: - while (val != 0) - { - int d = (int)(val & 0x07); - val >>= 3; - buf[n_buf++] = (char)(d + '0'); - } - break; - case 10: - if ((val >> 32) == 0) - { -#if defined(SDK_CW) || defined(SDK_RX) || defined(__MWERKS__) -#pragma optimize_for_size off -#endif - u32 v = (u32)val; - while (v != 0) - { - // u32 ‚ƒ蔂̜ŽZ‚Å‚ ‚ê‚ÎAƒRƒ“ƒpƒCƒ‰‚ªŽ©“®“I‚É - // ƒ}ƒWƒbƒNƒiƒ“ƒo[‚ðŽg—p‚µ‚½ÏŽZ‚ɕϊ·‚·‚é - u32 r = v / 10; - int d = (int)(v - (r * 10)); - v = r; - buf[n_buf++] = (char)(d + '0'); - } - } - else - { - while (val != 0) - { - u64 r = val / 10; - int d = (int)(val - (r * 10)); - val = r; - buf[n_buf++] = (char)(d + '0'); - } - } - break; - case 16: - while (val != 0) - { - int d = (int)(val & 0x0f); - val >>= 4; - buf[n_buf++] = (char)((d < 10) ? (d + '0') : (d + hex_char)); - } - break; - } - if ((n_prefix > 0) && (prefix[0] == '0')) - { - n_prefix = 0; - buf[n_buf++] = '0'; - } - } - goto put_to_stream; - - put_to_stream: - { - int n_pad = precision - n_buf; - if (flag & flag_zero) - { - if (n_pad < width - n_buf - n_prefix) - n_pad = width - n_buf - n_prefix; - } - if (n_pad > 0) - width -= n_pad; - width -= n_prefix + n_buf; - if (!(flag & flag_minus)) - string_fill_char(&str, ' ', width); - while (n_prefix > 0) - string_put_char(&str, prefix[--n_prefix]); - string_fill_char(&str, '0', n_pad); - while (n_buf > 0) - string_put_char(&str, buf[--n_buf]); - if (flag & flag_minus) - string_fill_char(&str, ' ', width); - ++s; - } - break; - } - } - } - - if (str.len > 0) - *str.cur = '\0'; - else if (len > 0) - str.base[len - 1] = '\0'; - return str.cur - str.base; -} - - -#if defined(SDK_CW_WARNOFF_SAFESTRB) -#include -#endif - -//================================================================================ -// Set output of print (for IS-TWL-DEBUGGER) -//================================================================================ -#ifndef SDK_FINALROM -#ifdef SDK_LINK_ISTD -/*---------------------------------------------------------------------------* - Name: OS_SetPrintOutput - - Description: Specify the output window OS_Printf uses. - This is only for IS-TWL-DEBUGGER. - - Arguments: proc : processor - OS_PRINT_OUTPUT_PROC_ARM9 : ARM9 - OS_PRINT_OUTPUT_PROC_ARM7 : ARM7 - OS_PRINT_OUTPUT_PROC_ARM9ERR : ARM9 for error - OS_PRINT_OUTPUT_PROC_ARM7ERR : ARM7 for error - num : window number (0-3) - - Returns: None. - *---------------------------------------------------------------------------*/ -void OS_SetPrintOutput( OSPrintOutputProc proc, int num ) -{ - SDK_ASSERT( (0<=num && num<=OS_PRINT_OUTPUT_WINDOW_MAX) || num==OS_PRINT_OUTPUT_NONE ); - SDK_ASSERT( 0<=(int)proc && (int)proc<=OS_PRINT_OUTPUT_PROC_ARM7ERR ); - *(u8*)(HW_PRINT_OUTPUT_ARM9 + proc) = (u8)num; -} -#endif -#endif - -//================================================================================ -// FPutString hook -//================================================================================ -#ifndef SDK_FINALROM -/*---------------------------------------------------------------------------* - Name: OS_SetFPutStringHook - - Description: set hook function in FPutString - - Arguments: func : hook function - - Returns: None. - *---------------------------------------------------------------------------*/ -void OS_SetFPutStringHook( OSFPutStringHookType func ) -{ - OSi_FPutStringHook = func; -} - -/*---------------------------------------------------------------------------* - Name: OS_GetFPutStringHook - - Description: get hook function in FPutString - - Arguments: None. - - Returns: hook function - *---------------------------------------------------------------------------*/ -OSFPutStringHookType OS_GetFPutStringHook(void) -{ - return OSi_FPutStringHook; -} -#endif - -//================================================================================ -// DUMMY PRINT (stub for FINALROM) -//================================================================================ -#ifdef SDK_FINALROM -#ifdef OS_Printf -#undef OS_Printf -#endif -void OS_Printf(const char *fmt, ...); -void OS_Printf(const char *fmt, ...) -{ -#pragma unused( fmt ) -} -#endif diff --git a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/Makefile b/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/Makefile deleted file mode 100644 index dca6850a..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TWL WLAN - libraries - os -# File: Makefile -# -# Copyright 2003 - 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL - -TWL_PROC = ARM9 - -TARGET_CODEGEN ?= ARM -TWL_ARCHGEN ?= LIMITED - -SRCDIR = ./src -INCDIR = ./include $(ROOT)/build/tests/sdlog/sdlog/include \ - $(ROOT)/build/tests/sdlog/sdlog/src - -SRCS = sd_log_wrapper.c - -SRCS += $(ROOT)/build/tests/sdlog/sdlog/src/os_log.c - -#---------------------------------------------------------------------------- - -TARGET_LIB = libsdlogRed$(TWL_LIBSUFFIX).a - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -INSTALL_TARGETS = $(TARGETS) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/build/tests/Launcher_sdlog/lib/$(TWL_LIBTYPE) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/include/sd_log_wrapper.h b/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/include/sd_log_wrapper.h deleted file mode 100644 index d32dc48e..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/include/sd_log_wrapper.h +++ /dev/null @@ -1,44 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - SDLOG - include - File: sd_log_wrapper.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef TWL_SD_LOG_WRAPPER_H_ -#define TWL_SD_LOG_WRAPPER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "log.h" -#include "sd_log.h" - -BOOL SDLOG_InitEx(const char* path, const char* filename, char* buffer, u16 bufferSize, u16 partitionSize, SDLOGWriteType writeType); - -void SDLOG_FinishEx(void); - -inline -void SDLOG_PrintServer(void) -{ - OS_PrintServer(); -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/* TWL_SD_LOG_WRAPPER_H_ */ -#endif diff --git a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/src/sd_log_wrapper.c b/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/src/sd_log_wrapper.c deleted file mode 100644 index d974dd09..00000000 --- a/build/tests/Launcher_sdlog/sdlog/ARM9.TWL/src/sd_log_wrapper.c +++ /dev/null @@ -1,179 +0,0 @@ - -#include -#include -#include "sd_log_wrapper.h" - -#include "sd_log.c" - -/* Function Prototype */ -static void OS_FPutStringSD(int console, const char *str); -static void SDLOGi_WriteThreadEx(void* arg); - -/* Static */ -static void (*HookedFPutString)(int console, const char *string); - -void TwlStartUp(void) -{ - OS_InitPrintServer(); // Should be called before PXI_Init() -} - -/*---------------------------------------------------------------------------* - Name: SDLOG_Init - - Description: Initialize - - Arguments: None - - Returns: ƒtƒ@ƒCƒ‹‚Ì쬂Ɏ¸”s‚µ‚½ê‡‚Í FALSE ‚ð•Ô‚· - *---------------------------------------------------------------------------*/ -BOOL SDLOG_InitEx(const char* path, const char* filename, char* buffer, u16 bufferSize, u16 partitionSize, SDLOGWriteType writeType) -{ - if( isInitialized ) - { - return FALSE; - } - - if( !FS_IsAvailable() ) - { - FS_Init(FS_DMA_NOT_USE); - } - - OS_InitLog(); - - { - int i = 0; - FS_InitFile(&work.logInfo[i].file); - - /* ƒtƒ@ƒCƒ‹ƒVƒXƒeƒ€‚̉Šú‰» */ - { - char tmpPath[256]; - - STD_TSPrintf(tmpPath, "%s/%s", path, filename); - - if( writeType == SDLOG_WRITE_TYPE_OVERWRITE ) - { - /* ã‘‚«Ý’è‚Ìꇂ̓tƒ@ƒCƒ‹‚ðíœ */ - (void)FS_DeleteFileAuto(tmpPath); - } - - if( !FS_CreateDirectoryAuto( path, FS_PERMIT_W | FS_PERMIT_R ) ) - { - //OS_TPrintf("%s L:%04d Error(%d)\n", __FILE__, __LINE__, FS_GetArchiveResultCode(tmpPath) ); - } - - if( !FS_CreateFile( tmpPath, FS_PERMIT_W | FS_PERMIT_R ) ) - { - //OS_TPrintf("%s L:%04d Error(%d)\n", __FILE__, __LINE__, FS_GetArchiveResultCode(tmpPath) ); - } - - if(!FS_OpenFileEx(&work.logInfo[i].file, tmpPath, FS_PERMIT_R | FS_PERMIT_W)) - { - //OS_TPrintf("%s L:%04d Error(%d)\n", __FILE__, __LINE__, FS_GetArchiveResultCode(tmpPath) ); - goto file_error; - } - - if( writeType == SDLOG_WRITE_TYPE_CONTINUANCE ) - { - /* ’Ç‹LÝ’è‚Ìꇂ̓tƒ@ƒCƒ‹’[‚܂ŃV[ƒN */ - FS_SeekFileToEnd(&work.logInfo[i].file); - } - } - - /* OS_Log ‚̔ݒè */ - work.logInfo[i].buffer = buffer; - work.logInfo[i].current = 0; - work.logInfo[i].bufferSize = bufferSize; - work.logInfo[i].partitionSize = partitionSize; - work.logInfo[i].writeType = writeType; - - OS_InitLogBuffer(&work.logInfo[i].info, buffer, partitionSize); - OS_SetLogWarningOffset(&work.logInfo[i].info, OS_LOG_WARNING_OFFSET_FULL ); - OS_SetLogAnnounceType(&work.logInfo[i].info, OS_LOG_ANNOUNCE_IMM); - - OS_SetLogCallback(&work.logInfo[i].info, SDlogCallback, (void *)i ); - } - - /* ƒJƒŒƒ“ƒg‚Í IS_TWL_DEBBUGER ‚Æ“¯‚¶‚­o—̓[ƒ */ - OS_SetLogCurrentInfo(&work.logInfo[0].info); - - /* Thread */ - if( OS_IsThreadAvailable() == FALSE ) - { - /*ƒXƒŒƒbƒhƒVƒXƒeƒ€‚ª—§‚¿ã‚ª‚Á‚Ä‚¢‚È‚¢ê‡‚Í—§‚¿ã‚°‚é*/ - OS_InitThread(); - } - - OS_InitMessageQueue(&work.writeQueue, work.writeMsg, WRITE_MESSAGE_COUNT ); - OS_CreateThread(&work.writeThread, SDLOGi_WriteThreadEx, NULL, - work.writeThreadStack+SDLOG_THREAD_STACK_SIZE/sizeof(u32), SDLOG_THREAD_STACK_SIZE, 15); - OS_WakeupThreadDirect(&work.writeThread); - - HookedFPutString = OS_FPutString; - OS_FPutString = OS_FPutStringSD; - - SDLOG_Printf("------------ START ------------\n"); - - isInitialized =TRUE; - - return TRUE; - -file_error: - return FALSE; -} - - -void OS_FPutStringSD(int console, const char *str) -{ -#pragma unused (console) - OS_LockMutex( &work.logInfo[0].info.mutex ); - OS_LogFPutString( &work.logInfo[0].info, str ); - OS_UnlockMutex( &work.logInfo[0].info.mutex ); -} - - -void SDLOG_FinishEx(void) -{ - SDLOG_Finish(); - - if (OS_FPutString == OS_FPutStringSD) { - OS_FPutString = HookedFPutString; - } -} - - -static void SDLOGi_WriteThreadEx(void* arg) -{ -#pragma unused(arg) - - u32 num; - const char* buffer; - u32 dataSize; - - OSMessage msg; - - while(TRUE) - { - - (void)OS_ReceiveMessage(&work.writeQueue, &msg, OS_MESSAGE_BLOCK); - num =(u32) msg; - (void)OS_ReceiveMessage(&work.writeQueue, &msg, OS_MESSAGE_BLOCK); - buffer =(const char*) msg; - (void)OS_ReceiveMessage(&work.writeQueue, &msg, OS_MESSAGE_BLOCK); - dataSize =(u32) msg; - - if(FS_WriteFile(&work.logInfo[num].file, buffer, (u16)dataSize) < 0) - { - if (OS_FPutString == OS_FPutStringSD) { - OS_FPutString = HookedFPutString; - OS_TPrintf("%s L:%d SD Write Error\n",__FILE__, __LINE__); - } - } else { - if (OS_FPutString == HookedFPutString) { - OS_FPutString = OS_FPutStringSD; - } - } - - FS_FlushFile(&work.logInfo[num].file); - - } -} \ No newline at end of file diff --git a/build/tests/Launcher_sdlog/sdlog/Makefile b/build/tests/Launcher_sdlog/sdlog/Makefile deleted file mode 100644 index b3a6c676..00000000 --- a/build/tests/Launcher_sdlog/sdlog/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TWL WLAN - libraries - os -# File: Makefile -# -# Copyright 2003 - 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -#---------------------------------------------------------------------------- - -TARGET_PLATFORM := TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -SUBDIRS := $(GSUBDIRS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/Makefile b/build/tests/Makefile deleted file mode 100644 index f1c4722d..00000000 --- a/build/tests/Makefile +++ /dev/null @@ -1,53 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS_P = \ - CheckDSHashTable \ - FatalErrorMaker \ - RomTypeTest \ - WirelessChecker \ - CheckPreloadParameters \ - FileRecoveryTest \ - Shared2File \ - build4WLDev \ - CheckSharedFont \ - HashCheckTemplate \ - SimpleBenchmark \ - compressSharedFontLoad/compSharedFont \ - compressSharedFontLoad/testLoadSpeed \ - DisplaySystemInformation \ - Launcher_sdlog \ - TestMaker \ - yuv2rgb \ - ErrorLogTest \ - Makefile \ - WDSTest \ - FatalErrorChecker \ - WDSWrapperTest \ - - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/Makefile b/build/tests/NotLaunchRom/Makefile deleted file mode 100644 index 103cac67..00000000 --- a/build/tests/NotLaunchRom/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 Makefile.2 - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/Makefile.0 b/build/tests/NotLaunchRom/Makefile.0 deleted file mode 100644 index a464e703..00000000 --- a/build/tests/NotLaunchRom/Makefile.0 +++ /dev/null @@ -1,51 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -IS_NAND_APP = TRUE -TWL_ARCHGEN = LIMITED - -TWL_NANDAPP = TRUE - -TARGET_BIN = notLaunch_secure.tad -ROM_SPEC = secure.rsf - -TARGET_PLATFORM = TWL - -SRCS = data.c main.c - - -BINDIR = ./bin/$(TWL_BUILDTYPE) - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -MAKETAD_OPTION += -s -MAKEROM = $(TWLSDK_ROOT)/tools/bin/makerom.TWL.secure.exe -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/Makefile.1 b/build/tests/NotLaunchRom/Makefile.1 deleted file mode 100644 index d01da319..00000000 --- a/build/tests/NotLaunchRom/Makefile.1 +++ /dev/null @@ -1,51 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -IS_NAND_APP = TRUE -TWL_ARCHGEN = LIMITED - -TWL_NANDAPP = TRUE - -TARGET_BIN = notLaunch_system.tad -ROM_SPEC = system.rsf - -TARGET_PLATFORM = TWL - -SRCS = data.c main.c - - -BINDIR = ./bin/$(TWL_BUILDTYPE) - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -MAKETAD_OPTION += -s -MAKEROM = $(call eupath,$(TWLSDK_ROOT)/tools/bin/makerom.TWL.sys.exe) -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/Makefile.2 b/build/tests/NotLaunchRom/Makefile.2 deleted file mode 100644 index b893f5e1..00000000 --- a/build/tests/NotLaunchRom/Makefile.2 +++ /dev/null @@ -1,54 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - CheckPreloadParameters -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -FILE_IDX = 0 -IS_NAND_APP = TRUE -TWL_ARCHGEN = LIMITED -GAMECODE = 010A - -TWL_NANDAPP = TRUE -TARGET_BIN = notLaunch_user.tad - -TARGET_PLATFORM = TWL - -SRCS = data.c main.c -ROM_SPEC = user.rsf - -BINDIR = ./bin/$(TWL_BUILDTYPE) - - - -MAKEROM_FLAGS += -DLOGOCHECK_MEDIA=$(MEDIA) \ - -DLOGOCHECK_BANNERPATH=$(BANNERPATH) \ - -DLOGOCHECK_GAMECODE=$(GAMECODE) - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/NotLaunchRom/include/data.h b/build/tests/NotLaunchRom/include/data.h deleted file mode 100644 index 524c8fe8..00000000 --- a/build/tests/NotLaunchRom/include/data.h +++ /dev/null @@ -1,28 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - GX - demos - UnitTours/2D_CharBg_1 - File: data.h - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef BG_DATA_H_ -#define BG_DATA_H_ - -#define SCREEN_SIZE (32 * 24) - -/*-------------------------- Data -------------------------------*/ -#define CHAR_SIZE (16 * 128 * sizeof(int)) -extern const unsigned int d_64_256_bg_schDT[16 * 128]; -extern const unsigned int d_64_256_bg_sclDT[8 * 16]; - -#endif diff --git a/build/tests/NotLaunchRom/secure.rsf b/build/tests/NotLaunchRom/secure.rsf deleted file mode 100644 index a267fce7..00000000 --- a/build/tests/NotLaunchRom/secure.rsf +++ /dev/null @@ -1,196 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile $(LOGOCHECK_BANNERPATH) - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - Secure TRUE - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch FALSE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 011A - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 1 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 128K -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/NotLaunchRom/src/data.c b/build/tests/NotLaunchRom/src/data.c deleted file mode 100644 index a8c960e0..00000000 --- a/build/tests/NotLaunchRom/src/data.c +++ /dev/null @@ -1,573 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - GX - demos - UnitTours/2D_CharBg_1 - File: data.c - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "data.h" - -/*---------------------- Palette Data ---------------------------*/ -const unsigned int d_64_256_bg_sclDT[8 * 16] = { - 0x628a7ffe, 0x6f0d6acb, 0x6aec6f2f, 0x77757352, // 0000h - 0x51e6460d, 0x66f05a27, 0x41845a8f, 0x49c53943, - 0x41c73567, 0x4e2c5668, 0x62ad41cb, 0x566c2924, // 0010h - 0x5eb1524f, 0x45e93566, 0x1ca16f55, 0x24e26b13, - 0x31442d02, 0x10607798, 0x7bba39aa, 0x7bdc779b, // 0020h - 0x66c90820, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0030h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0040h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0050h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0070h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0080h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0090h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00c0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00d0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00e0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00f0h - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - -/*---------------------- Character Data -------------------------*/ -const unsigned int d_64_256_bg_schDT[16 * 128] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0001h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x0f000000, - 0x00000000, 0x090d0000, 0x00000000, 0x0f0f0d0f, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0002h - 0x00000000, 0x01010000, 0x09000000, 0x0201010a, - 0x0f0e0d00, 0x0101010a, 0x090f0f0f, 0x1101010a, - 0x0a090f09, 0x11010101, 0x010a090f, 0x11010109, - 0x00000000, 0x00000000, 0x02010000, 0x04030302, // 0003h - 0x05020201, 0x04040403, 0x03050101, 0x06040404, - 0x04121110, 0x06060604, 0x17111016, 0x0b070603, - 0x1b111a1a, 0x0815171b, 0x17131b1b, 0x08080817, - 0x00000000, 0x00000000, 0x04030304, 0x00000304, // 0004h - 0x06070706, 0x06070706, 0x07060b04, 0x07070707, - 0x06151413, 0x06070b06, 0x0c080808, 0x18181318, - 0x0c180808, 0x18180c18, 0x0c18080c, 0x0c0c0c18, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0005h - 0x00000808, 0x00000000, 0x0b0c0b06, 0x00000006, - 0x0707060b, 0x00080b07, 0x07060c18, 0x13190b07, - 0x07060c18, 0x180b1c07, 0x0b0c1919, 0x1c060707, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0006h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x0000000c, 0x00000000, - 0x00000b06, 0x00000000, 0x0b0b0707, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0007h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0008h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0009h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 000fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0010h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x0d000000, 0x00000000, 0x23000000, - 0x00000000, 0x1d0e0000, 0x00000000, 0x0e0e0e00, - 0x1d000000, 0x0f090d0d, 0x0f0f0000, 0x0a0a0f0d, // 0011h - 0x1f0e0f00, 0x0a0a0d1d, 0x201d0e0f, 0x21090f0d, - 0x0f1d0e0f, 0x16200f0f, 0x0f0e0e20, 0x201f160d, - 0x0f090f0e, 0x161f2016, 0x0d0f090d, 0x1f1f0e1f, - 0x01010a0d, 0x1b020201, 0x0101010a, 0x03030502, // 0012h - 0x0201010a, 0x04030201, 0x01010a21, 0x04040111, - 0x11112121, 0x1317021b, 0x1a1a2121, 0x1b241b16, - 0x16090a09, 0x1b101b10, 0x1a020201, 0x151b1b1b, - 0x0604171b, 0x0c180c06, 0x0606171b, 0x180b0b06, // 0013h - 0x06041313, 0x0b0c180b, 0x0c0c130b, 0x0b0c0c0c, - 0x08150b17, 0x180c1813, 0x13041314, 0x19181308, - 0x0c0c141b, 0x19181813, 0x17141b15, 0x0c181808, - 0x180c0b0b, 0x190c0c0c, 0x0c0c070b, 0x070c0c0c, // 0014h - 0x0c181e07, 0x0707190c, 0x0c0c0b1e, 0x0722071e, - 0x19180c18, 0x1c220707, 0x1e190c0b, 0x1c1c0707, - 0x1c070707, 0x25071c07, 0x07070707, 0x1c1c0722, - 0x190c0c1e, 0x07070706, 0x1919191e, 0x19191e1e, // 0015h - 0x1e19191e, 0x1919191e, 0x1c1e1e1c, 0x1e19191e, - 0x221e1e1e, 0x1e1e1e22, 0x221c1c1c, 0x1c220722, - 0x221c1c25, 0x22222225, 0x22262525, 0x25252525, - 0x0707071c, 0x0000000b, 0x071c190c, 0x00000b06, // 0016h - 0x07061919, 0x000b061c, 0x1e1e1e1e, 0x0b0b0707, - 0x071e1e1e, 0x06060707, 0x07071e1c, 0x1c07071c, - 0x1e070722, 0x1c071e19, 0x1e1c2222, 0x0707070b, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0017h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x0000000c, 0x00000000, 0x00000006, 0x00000000, - 0x00000c0b, 0x00000000, 0x000c0b06, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0018h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0019h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 001fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x20200e00, 0x00000000, 0x200e0e1d, // 0020h - 0x00000000, 0x0d0e201d, 0x0e000000, 0x0e201f20, - 0x20000000, 0x0d0e0e0d, 0x20000000, 0x0f0f0d0e, - 0x1f200000, 0x0d0f0f20, 0x200e0000, 0x200d0e1d, - 0x1f0d090d, 0x0921211f, 0x2009090d, 0x0a211621, // 0021h - 0x0d09090f, 0x0a201f21, 0x0909090f, 0x090d0d0f, - 0x0f090f0f, 0x1f1a090f, 0x0a0f0f09, 0x110a0909, - 0x0a0d0d09, 0x01110a01, 0x0a210f0f, 0x0a090102, - 0x1a020502, 0x0b1b101b, 0x1a120505, 0x04131010, // 0022h - 0x11161103, 0x0404131a, 0x1111110a, 0x04060b1a, - 0x1a1b0a21, 0x0c03151b, 0x101b020a, 0x24111a10, - 0x1b120105, 0x0b171313, 0x1b110102, 0x0b131b15, - 0x0c141506, 0x19181819, 0x0c140b06, 0x07190c0b, // 0023h - 0x14140b06, 0x071c1e06, 0x08081904, 0x07070618, - 0x13142414, 0x07071813, 0x130c1414, 0x1c1e1918, - 0x0c040604, 0x0c180808, 0x14080b0b, 0x0c181808, - 0x221e1e1c, 0x221c1c1c, 0x221e191e, 0x25221c22, // 0024h - 0x221e191e, 0x25252225, 0x221e1919, 0x25221c22, - 0x1c1e1e07, 0x25221c07, 0x1e1e1c07, 0x221c1c1e, - 0x2207071e, 0x221c1c22, 0x1e19190c, 0x22221e1e, - 0x25252525, 0x25252626, 0x27272525, 0x22262627, // 0025h - 0x27272725, 0x22262727, 0x27272725, 0x22262727, - 0x27272725, 0x25252727, 0x27272525, 0x25252527, - 0x25252525, 0x25252525, 0x25252522, 0x25252525, - 0x07222222, 0x07070707, 0x22222222, 0x07070722, // 0026h - 0x22221c1c, 0x07071e07, 0x22071c1c, 0x190c0c19, - 0x1c071c22, 0x180c191e, 0x07222222, 0x180c1e1e, - 0x07070722, 0x18191c1e, 0x071c1c22, 0x191e1c07, - 0x000c0c1e, 0x00000000, 0x13131819, 0x00000000, // 0027h - 0x17180c06, 0x00000000, 0x14180b1e, 0x00000014, - 0x08130b0b, 0x00000014, 0x130c0b0b, 0x00000008, - 0x080c0b19, 0x00001308, 0x080c060b, 0x00001408, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0028h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0029h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x201d0000, 0x090f0e23, 0x201f0000, 0x090f0f20, // 0030h - 0x0d0d2000, 0x090f0f0d, 0x0d0d0e00, 0x090f0f0f, - 0x0d0d2000, 0x0f090f0d, 0x0d0e1d00, 0x0e090f0f, - 0x0e1d1d00, 0x200f0f0f, 0x1d1f2000, 0x0d0e0f0f, - 0x0f200d09, 0x02020202, 0x0f0e0d0a, 0x0201010a, // 0031h - 0x090f090a, 0x020a010a, 0x0d210d0f, 0x0502010a, - 0x1f1f231d, 0x0a0a0a20, 0x20201d23, 0x1f20161d, - 0x1f201d1d, 0x201f1d1d, 0x1f1f0e0e, 0x211d1f1f, - 0x1b111102, 0x1311241b, 0x11112112, 0x1b1b1110, // 0032h - 0x1a111b02, 0x141b1116, 0x10111103, 0x13150b13, - 0x15101a11, 0x04040404, 0x1b1a1a1f, 0x06040415, - 0x101a1a1a, 0x04040413, 0x1b112111, 0x24241b1b, - 0x14141b14, 0x190c0c13, 0x08131414, 0x18180c08, // 0033h - 0x08142414, 0x180c0b0c, 0x08131713, 0x0c0b070b, - 0x17131315, 0x0b06070b, 0x15241404, 0x080c0406, - 0x13141b0b, 0x0814130c, 0x1414241b, 0x13081314, - 0x1919190c, 0x25071e19, 0x190c1818, 0x22221e19, // 0034h - 0x19191813, 0x22221c19, 0x0c190c0c, 0x07220719, - 0x0b18180c, 0x07070706, 0x07190c18, 0x07070707, - 0x1e181813, 0x07070707, 0x180c1813, 0x07070618, - 0x25222222, 0x22252525, 0x22072222, 0x07222222, // 0035h - 0x22072222, 0x1e071e1c, 0x1c070707, 0x1e071c1e, - 0x07070707, 0x07070707, 0x07070707, 0x071e061e, - 0x07070707, 0x1c1e0b1e, 0x07070707, 0x1c1e0707, - 0x07071c07, 0x06061c07, 0x071e1e07, 0x06061c1c, // 0036h - 0x0719191e, 0x06061c06, 0x1e1e0619, 0x1c1c060b, - 0x180c0707, 0x06071c19, 0x18181e22, 0x06061c0c, - 0x18190707, 0x0606060c, 0x06060707, 0x06060604, - 0x0b06060b, 0x00001717, 0x0b0c0b0c, 0x00000403, // 0037h - 0x1914180b, 0x00130b04, 0x15170606, 0x00130c0c, - 0x0b0b0606, 0x00131b14, 0x06060606, 0x00041413, - 0x030b0606, 0x000b1413, 0x24241706, 0x000b1414, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0038h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0039h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 003fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x20200e00, 0x0f0d090f, 0x0e1d2000, 0x2021210f, // 0040h - 0x0d201d00, 0x1f0f0f0f, 0x0d0e2000, 0x0f090d0d, - 0x0d0d0e00, 0x090f0d0d, 0x0d0d0e00, 0x0f090f0f, - 0x0f0e0000, 0x1f0f0f0f, 0x20230000, 0x230e0f0f, - 0x1d0e0909, 0x11211f1d, 0x0d09090d, 0x090d200d, // 0041h - 0x0a0a0d1f, 0x020a090a, 0x0a09201f, 0x0201010a, - 0x09090d0e, 0x01020a0f, 0x0909090d, 0x020a0d0f, - 0x0a090f1d, 0x09200e0a, 0x090f0920, 0x161f210f, - 0x1b1b1a1a, 0x1b111010, 0x05151201, 0x17030117, // 0042h - 0x05030502, 0x04041701, 0x02010502, 0x04041717, - 0x05010101, 0x03151112, 0x02010102, 0x151b1112, - 0x17120a0a, 0x1b161202, 0x11111a1f, 0x12161112, - 0x1314141b, 0x08131313, 0x1314141b, 0x13140813, // 0043h - 0x24241013, 0x17241b1b, 0x13131504, 0x17241414, - 0x13130404, 0x04132413, 0x04040404, 0x04031703, - 0x04060404, 0x04040404, 0x04040604, 0x03030b04, - 0x0b060c08, 0x07070b0b, 0x0604060b, 0x0604060c, // 0044h - 0x0b040606, 0x0b0b0617, 0x0b040606, 0x0b040404, - 0x0b0b0406, 0x0b0b190b, 0x15030304, 0x0b15130b, - 0x03030304, 0x1b0b0b0b, 0x03030b0b, 0x240b0b03, - 0x071c061c, 0x06060707, 0x06060606, 0x06060606, // 0045h - 0x0606040b, 0x0c0b0404, 0x06060b0c, 0x170c0406, - 0x06040b03, 0x0404040b, 0x0b041513, 0x040b150b, - 0x0b040b1b, 0x15151503, 0x030b0414, 0x03170303, - 0x0606071c, 0x0b0b0b0b, 0x0604040b, 0x04030b0b, // 0046h - 0x0b040b15, 0x1504040b, 0x0b150b0b, 0x0b040603, - 0x0b17150b, 0x04040b04, 0x0b150b03, 0x04151503, - 0x15040404, 0x04030303, 0x15040404, 0x03121215, - 0x13241413, 0x00051b1b, 0x04131b17, 0x00151503, // 0047h - 0x040b1b17, 0x00171704, 0x13150b17, 0x00010117, - 0x10111504, 0x00010512, 0x10111504, 0x0001051b, - 0x11130504, 0x00000312, 0x13111703, 0x00000104, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0048h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0049h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 004fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x1d280000, 0x1d231d1d, 0x23280000, 0x0e231d1d, // 0050h - 0x20000000, 0x0f1d1d0e, 0x20000000, 0x090d0d0e, - 0x0e000000, 0x090f0e0d, 0x00000000, 0x0f0d200e, - 0x00000000, 0x0e0d0d0e, 0x00000000, 0x23200e00, - 0x200f0a0f, 0x0d201d1d, 0x0d0a0909, 0x011f1f20, // 0051h - 0x0a21200a, 0x0f0d0d0f, 0x0a1f0e09, 0x0f210f01, - 0x0a0a0e0d, 0x2020090a, 0x1d0d0d0d, 0x211d200e, - 0x231d1d1d, 0x0a1d231d, 0x23282323, 0x011f1f0f, - 0x1a1a1209, 0x03131111, 0x16120305, 0x121b101a, // 0052h - 0x21111209, 0x12161111, 0x1221090a, 0x1b160911, - 0x0101120f, 0x11161a01, 0x0212090a, 0x121a1101, - 0x1e180102, 0x120a1212, 0x14150202, 0x12091b16, - 0x03050303, 0x03031703, 0x0403171b, 0x15151504, // 0053h - 0x04030505, 0x17150304, 0x04030505, 0x03030304, - 0x03030502, 0x02020404, 0x03051201, 0x17050403, - 0x03051201, 0x05050303, 0x05021212, 0x02050305, - 0x15031515, 0x17171515, 0x03151b1b, 0x04040b15, // 0054h - 0x12101b17, 0x04040315, 0x1b130504, 0x03040312, - 0x03040101, 0x03030305, 0x0305171b, 0x05030303, - 0x03050502, 0x05030303, 0x03051212, 0x01050303, - 0x15050415, 0x04150517, 0x15151504, 0x04151512, // 0055h - 0x01050304, 0x04041513, 0x05150303, 0x04040305, - 0x05050503, 0x03040217, 0x05050502, 0x03030117, - 0x03011b02, 0x05030303, 0x03051112, 0x01050503, - 0x03040404, 0x17101715, 0x03040404, 0x121b1205, // 0056h - 0x05030304, 0x12020215, 0x05040403, 0x01121705, - 0x05030303, 0x01010205, 0x01050505, 0x1b05111a, - 0x1b030505, 0x12011111, 0x01121212, 0x01111205, - 0x031b1203, 0x00001205, 0x05111705, 0x00002111, // 0057h - 0x1b1b0205, 0x00000016, 0x11010502, 0x00000016, - 0x02011212, 0x00000012, 0x2912011b, 0x00000000, - 0x12120111, 0x00000000, 0x00091112, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0058h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0059h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x23281d00, 0x00000000, 0x23280000, // 0060h - 0x00000000, 0x23000000, 0x00000000, 0x23000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x1f231d23, 0x091d0f0e, 0x1f1d1d1d, 0x201d201f, // 0061h - 0x1d1d1d23, 0x20231d1d, 0x1d1d2323, 0x0e201f23, - 0x1f1d201d, 0x200f1d23, 0x1f1f2300, 0x1d0d1623, - 0x1f230000, 0x1d1d1f23, 0x1d000000, 0x1f1d1f1d, - 0x1f160a02, 0x1a16211d, 0x1f200e0a, 0x1f23231f, // 0062h - 0x1d0e0e0e, 0x1d1d1d1d, 0x1d1f1d1d, 0x1f1f1d1d, - 0x1d201d1d, 0x0d0f201f, 0x201d1d1d, 0x2902201d, - 0x1d0e2323, 0x090a0d23, 0x231d1d1f, 0x0f0a0a1d, - 0x031b1611, 0x05020503, 0x0112161f, 0x05052902, // 0063h - 0x12291a1f, 0x09010212, 0x09291220, 0x1f0d0a12, - 0x09290512, 0x0d1f110a, 0x29292929, 0x29090a01, - 0x29120a0a, 0x01292929, 0x2929090f, 0x01091229, - 0x05111f12, 0x12011205, 0x111f1105, 0x11011201, // 0064h - 0x1f1f1a09, 0x0a120511, 0x16211f1f, 0x01122911, - 0x09090a11, 0x0a290202, 0x29292929, 0x1f12091b, - 0x0d120229, 0x0d090916, 0x1d0d0a29, 0x120a0d1f, - 0x05030212, 0x01020205, 0x05030212, 0x05020205, // 0065h - 0x03050501, 0x03291b12, 0x02050505, 0x03011111, - 0x05050501, 0x29122929, 0x05022921, 0x01120105, - 0x02022909, 0x09090205, 0x02020229, 0x09120205, - 0x01091f21, 0x161f0d09, 0x12161601, 0x1f16111b, // 0066h - 0x12110504, 0x21160d01, 0x29010102, 0x12160f01, - 0x01020201, 0x021b1202, 0x12021229, 0x0005020a, - 0x12121201, 0x00002912, 0x2909110a, 0x00000029, - 0x00201101, 0x00000000, 0x00002912, 0x00000000, // 0067h - 0x00000001, 0x00000000, 0x00000029, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0068h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0069h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 006fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0070h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x200d2123, 0x00000000, 0x0d0f0000, // 0071h - 0x00000000, 0x0d000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x1d231d1d, 0x0d0d0f1f, 0x20201f20, 0x1d1f0a0d, // 0072h - 0x0909090d, 0x0e090a0a, 0x20200d00, 0x0a0a0a0e, - 0x23000000, 0x0a091d23, 0x00000000, 0x09090000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x090a090d, 0x12090d0d, 0x0e0e200f, 0x01010e20, // 0073h - 0x290d1d0d, 0x0d110d0a, 0x010e231d, 0x230d0502, - 0x1d1d200e, 0x23210a0e, 0x200e090a, 0x1d231f1d, - 0x090a0000, 0x1d1f2020, 0x00000000, 0x00000000, - 0x1f1d0d29, 0x200d201d, 0x211f2112, 0x20112120, // 0074h - 0x1621201f, 0x09161d0d, 0x1d21201f, 0x1d1d1d23, - 0x0d202121, 0x201f210d, 0x0f0d200d, 0x1f1d200f, - 0x0d201d1d, 0x00001d1d, 0x00000000, 0x00000000, - 0x2912090f, 0x0a292929, 0x121d2021, 0x090a0912, // 0075h - 0x091d210a, 0x09091112, 0x0f1d1111, 0x00090a0f, - 0x091d1d1d, 0x00000009, 0x00001d1d, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x0912120a, 0x00000000, 0x00001201, 0x00000000, // 0076h - 0x0000000a, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0077h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0078h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0079h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007ah - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007bh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007ch - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007dh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 007fh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000 -}; - - -/* EOF */ diff --git a/build/tests/NotLaunchRom/src/main.c b/build/tests/NotLaunchRom/src/main.c deleted file mode 100644 index 32bb2741..00000000 --- a/build/tests/NotLaunchRom/src/main.c +++ /dev/null @@ -1,109 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - GX - demos - UnitTours/2D_CharBg_1 - File: main.c - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -//--------------------------------------------------------------------------- -// A sample that use BG #0 as text mode: -// -// This sample simply displays a sphere on the display. -// -// HOWTO: -// 1. Transfer the character data by GX_LoadBGxChar(). -// 2. Transfer the palette data by GX_LoadBGPltt(). -// 3. Transfer the screen data by GX_LoadBGxScr(). -// -// Do not forget to flush the corresponding cache if you modified the data -// before transfer. -//--------------------------------------------------------------------------- - -#ifdef SDK_TWL -#include -#else -#include -#endif -#include "DEMO.h" -#include "data.h" - -static u16 sScrnBuf[SCREEN_SIZE]; // Buffer for screen data(BG #0) - -#ifdef SDK_TWL -void TwlMain(void) -#else -void NitroMain(void) -#endif -{ - //--------------------------------------------------------------------------- - // Initialize: - // They enable IRQ interrupts, initialize VRAM, and set BG #0 for text mode. - //--------------------------------------------------------------------------- - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBG0Only(); - - //--------------------------------------------------------------------------- - // Transmitting the character data and the palette data - //--------------------------------------------------------------------------- - GX_LoadBG0Char(d_64_256_bg_schDT, 0, sizeof(d_64_256_bg_schDT)); - GX_LoadBGPltt(d_64_256_bg_sclDT, 0, sizeof(d_64_256_bg_sclDT)); - - { - int i, j; - for (i = 0; i < 8; i++) - { - for (j = 0; j < 8; j++) - { - sScrnBuf[(i * 32) + j] = (u16)((i * 0x10) + j); - } - } - } - // Store the data onto the main memory, and invalidate the cache. - DC_FlushRange(sScrnBuf, sizeof(sScrnBuf)); - /* DMA‘€ì‚ÅIOƒŒƒWƒXƒ^‚ÖƒAƒNƒZƒX‚·‚é‚̂ŃLƒƒƒbƒVƒ…‚Ì Wait ‚Í•s—v */ - // DC_WaitWriteBufferEmpty(); - - // DMA transfer to BG #0 screen - GX_LoadBG0Scr(sScrnBuf, 0, sizeof(sScrnBuf)); - - DEMOStartDisplay(); - - //--------------------------------------------------------------------------- - // Main Loop - //--------------------------------------------------------------------------- - while (1) - { -#ifdef SDK_AUTOTEST - GX_SetBankForLCDC(GX_VRAM_LCDC_C); - EXT_TestSetVRAMForScreenShot(GX_VRAM_LCDC_C); - EXT_TestScreenShot(100, 0xC7953680); - EXT_TestTickCounter(); -#endif //SDK_AUTOTEST - - OS_WaitVBlankIntr(); // Waiting the end of VBlank interrupt - GX_LoadBG0Scr(sScrnBuf, 0, sizeof(sScrnBuf)); - } -} - -//--------------------------------------------------------------------------- -// VBlank interrupt function: -// -// Interrupt handlers are registered on the interrupt table by OS_SetIRQFunction. -// OS_EnableIrqMask selects IRQ interrupts to enable, and -// OS_EnableIrq enables IRQ interrupts. -// Notice that you have to call 'OS_SetIrqCheckFlag' to check a VBlank interrupt. -//--------------------------------------------------------------------------- -void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} diff --git a/build/tests/NotLaunchRom/system.rsf b/build/tests/NotLaunchRom/system.rsf deleted file mode 100644 index 7dd8942e..00000000 --- a/build/tests/NotLaunchRom/system.rsf +++ /dev/null @@ -1,195 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile $(LOGOCHECK_BANNERPATH) - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch FALSE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 011A - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 1 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 128K -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/NotLaunchRom/user.rsf b/build/tests/NotLaunchRom/user.rsf deleted file mode 100644 index 85b18697..00000000 --- a/build/tests/NotLaunchRom/user.rsf +++ /dev/null @@ -1,195 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile $(LOGOCHECK_BANNERPATH) - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType User - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(LOGOCHECK_GAMECODE) - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 1 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 128K -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/Makefile b/build/tests/RomTypeTest/ARM9/Makefile deleted file mode 100644 index 3ef269e2..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 Makefile.2 Makefile.3 Makefile.4 Makefile.5 \ - Makefile.6 Makefile.7 Makefile.8 Makefile.9 Makefile.a Makefile.b \ - Makefile.c Makefile.h \ - Makefile.i Makefile.j Makefile.k - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.0 b/build/tests/RomTypeTest/ARM9/Makefile.0 deleted file mode 100644 index a0db88bd..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.0 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 0 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.1 b/build/tests/RomTypeTest/ARM9/Makefile.1 deleted file mode 100644 index 295a0190..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.1 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 1 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.2 b/build/tests/RomTypeTest/ARM9/Makefile.2 deleted file mode 100644 index fdb9e52e..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.2 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 2 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.3 b/build/tests/RomTypeTest/ARM9/Makefile.3 deleted file mode 100644 index dceb5ad8..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.3 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 3 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.4 b/build/tests/RomTypeTest/ARM9/Makefile.4 deleted file mode 100644 index 023be1e1..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.4 +++ /dev/null @@ -1,61 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 4 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).srl -TITLEID_LO = RT$(TARGET_NUMBER)A -#TARGET_TAD = $(BINDIR)/$(TITLEID_LO).$(TWL_BUILD_DIR)$(CODEGEN_ARCH).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.5 b/build/tests/RomTypeTest/ARM9/Makefile.5 deleted file mode 100644 index 25957624..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.5 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 5 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.6 b/build/tests/RomTypeTest/ARM9/Makefile.6 deleted file mode 100644 index 9eccec93..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.6 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 6 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.7 b/build/tests/RomTypeTest/ARM9/Makefile.7 deleted file mode 100644 index fae03c69..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.7 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 7 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.8 b/build/tests/RomTypeTest/ARM9/Makefile.8 deleted file mode 100644 index b1b44b6f..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.8 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 8 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.9 b/build/tests/RomTypeTest/ARM9/Makefile.9 deleted file mode 100644 index 26a85d17..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.9 +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 9 -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.a b/build/tests/RomTypeTest/ARM9/Makefile.a deleted file mode 100644 index 83348305..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.a +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = a -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.b b/build/tests/RomTypeTest/ARM9/Makefile.b deleted file mode 100644 index 08b8224b..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.b +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = b -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.c b/build/tests/RomTypeTest/ARM9/Makefile.c deleted file mode 100644 index f8bd7ad8..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.c +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = c -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.h b/build/tests/RomTypeTest/ARM9/Makefile.h deleted file mode 100644 index ad5100a2..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.h +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = h -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.i b/build/tests/RomTypeTest/ARM9/Makefile.i deleted file mode 100644 index a1a1cb33..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.i +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = i -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.j b/build/tests/RomTypeTest/ARM9/Makefile.j deleted file mode 100644 index be75d339..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.j +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = j -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/Makefile.k b/build/tests/RomTypeTest/ARM9/Makefile.k deleted file mode 100644 index caf16051..00000000 --- a/build/tests/RomTypeTest/ARM9/Makefile.k +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = k -TARGET_NAME = RomTypeTest$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = RT$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c RomTypeTest.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -MAKETAD_OPTION += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/ARM9/main0.rsf b/build/tests/RomTypeTest/ARM9/main0.rsf deleted file mode 100644 index 4ba1965f..00000000 --- a/build/tests/RomTypeTest/ARM9/main0.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_0.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main1.rsf b/build/tests/RomTypeTest/ARM9/main1.rsf deleted file mode 100644 index 3f11e2da..00000000 --- a/build/tests/RomTypeTest/ARM9/main1.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_1.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main2.rsf b/build/tests/RomTypeTest/ARM9/main2.rsf deleted file mode 100644 index 045dddc3..00000000 --- a/build/tests/RomTypeTest/ARM9/main2.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_2.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main3.rsf b/build/tests/RomTypeTest/ARM9/main3.rsf deleted file mode 100644 index 78932ce2..00000000 --- a/build/tests/RomTypeTest/ARM9/main3.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_3.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main4.rsf b/build/tests/RomTypeTest/ARM9/main4.rsf deleted file mode 100644 index 68adda4e..00000000 --- a/build/tests/RomTypeTest/ARM9/main4.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_4.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - #Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main5.rsf b/build/tests/RomTypeTest/ARM9/main5.rsf deleted file mode 100644 index 95188af0..00000000 --- a/build/tests/RomTypeTest/ARM9/main5.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_5.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main6.rsf b/build/tests/RomTypeTest/ARM9/main6.rsf deleted file mode 100644 index b8155275..00000000 --- a/build/tests/RomTypeTest/ARM9/main6.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_6.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main7.rsf b/build/tests/RomTypeTest/ARM9/main7.rsf deleted file mode 100644 index bfc391a5..00000000 --- a/build/tests/RomTypeTest/ARM9/main7.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_7.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main8.rsf b/build/tests/RomTypeTest/ARM9/main8.rsf deleted file mode 100644 index 7ee473d5..00000000 --- a/build/tests/RomTypeTest/ARM9/main8.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_8.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/main9.rsf b/build/tests/RomTypeTest/ARM9/main9.rsf deleted file mode 100644 index 9cdf6617..00000000 --- a/build/tests/RomTypeTest/ARM9/main9.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_9.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/maina.rsf b/build/tests/RomTypeTest/ARM9/maina.rsf deleted file mode 100644 index b575ba4e..00000000 --- a/build/tests/RomTypeTest/ARM9/maina.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_a.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/mainb.rsf b/build/tests/RomTypeTest/ARM9/mainb.rsf deleted file mode 100644 index 85a3c914..00000000 --- a/build/tests/RomTypeTest/ARM9/mainb.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_b.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/mainc.rsf b/build/tests/RomTypeTest/ARM9/mainc.rsf deleted file mode 100644 index ac929d83..00000000 --- a/build/tests/RomTypeTest/ARM9/mainc.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_c.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/mainh.rsf b/build/tests/RomTypeTest/ARM9/mainh.rsf deleted file mode 100644 index 02d4c355..00000000 --- a/build/tests/RomTypeTest/ARM9/mainh.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_h.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/maini.rsf b/build/tests/RomTypeTest/ARM9/maini.rsf deleted file mode 100644 index 28e76872..00000000 --- a/build/tests/RomTypeTest/ARM9/maini.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_i.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess TRUE - SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/mainj.rsf b/build/tests/RomTypeTest/ARM9/mainj.rsf deleted file mode 100644 index 084716a8..00000000 --- a/build/tests/RomTypeTest/ARM9/mainj.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_j.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/maink.rsf b/build/tests/RomTypeTest/ARM9/maink.rsf deleted file mode 100644 index c53b6cd6..00000000 --- a/build/tests/RomTypeTest/ARM9/maink.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_k.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - #AppType USER - AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c b/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c deleted file mode 100644 index 0f77a0a7..00000000 --- a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.c +++ /dev/null @@ -1,419 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: DS_Chat.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "misc.h" -#include "RomTypeTest.h" - -// define data------------------------------------------ -#define RETURN_BUTTON_TOP_X 2 -#define RETURN_BUTTON_TOP_Y 21 -#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + 8 ) -#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) - -#define ENABLE_CONTENT 0 -#define ENABLE_SHARED2 0 - -#if (ENABLE_CONTENT == 1) -#define CTRUE TRUE -#else -#define CTRUE FALSE -#endif - -#if (ENABLE_SHARED2 == 1) -#define STRUE TRUE -#else -#define STRUE FALSE -#endif - -#define TEST_NUM 15 - -typedef enum AccessPermission { - PERMISSION_NA = 0, - PERMISSION_RO, - PERMISSION_RW, - PERMISSION_ERROR, - PERMISSION_MAX -} -AccessPermission; - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- -static AccessPermission RWExTestCore( char *path, char *testfile ); -static AccessPermission SRLTest( void ); -static AccessPermission ContentTest( void ); -static void FinalizeRWTest( FSFile *file, char* filename ); -static AccessPermission RWTestCore( char *path, char *testfile ); -static AccessPermission RWTest( char *path ); -static void TestFSPermission( void ); - -// global variable ------------------------------------- -RTCDrawProperty g_rtcDraw = { - TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y -}; - -// static variable ------------------------------------- -static BOOL s_quiettest = FALSE; - -// const data ----------------------------------------- -static AccessPermission s_answer_data[TEST_NUM]; - -static const u16 *s_answer_str[PERMISSION_MAX] = -{ - L"NA", - L"RO", - L"RW", - L"~", -}; - -static const u16 *s_test_name[TEST_NUM] = -{ - L"nand:", - L"nand2:", - L"content:", - L"shared1:", - L"shared2:", - L"photo:", - L"dataPub:", - L"dataPrv:", - L"sdmc:", - L"nand:/sys", - L"nand:/import", - L"nand:/tmp", - L"nand:/", - L"nand:/", - L"nand:/" -}; - -//====================================================== -// ƒeƒXƒgƒvƒƒOƒ‰ƒ€ -//====================================================== - -static AccessPermission RWExistTestCore( char *path, char *testfile ) -{ - char filename[256]; - int len; - char buf[5]; - FSFile file[1]; - AccessPermission result = PERMISSION_RW; - - FS_InitFile( file ); - STD_TSNPrintf( filename, 256, "%s/%s", path, testfile ); - - // RWLƒ‚[ƒhƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_RWL ) ) - { - // RWLƒ‚[ƒhƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ޏ”s - if( !s_quiettest ) OS_TPrintf("%s:RWL mode open failed.\n",filename); - FS_CloseFile( file ); - // Rƒ‚[ƒhƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_R ) ) - { - // Rƒ‚[ƒhƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ޏ”s - if( !s_quiettest ) OS_TPrintf("%s:R mode open failed.\n",filename); - return PERMISSION_NA; - } - result = PERMISSION_RO; - } - - // ƒtƒ@ƒCƒ‹ƒŠ[ƒh - len = FS_ReadFile( file, buf, 3 ); - if( len != 3 ) - { - // ƒŠ[ƒhޏ”s - if( !s_quiettest ) OS_TPrintf("%s:read failed.\n",filename); - FS_CloseFile( file ); - return PERMISSION_ERROR; - } - - // ƒtƒ@ƒCƒ‹ƒNƒ[ƒY - if( !FS_CloseFile( file ) ) - { - // ƒNƒ[ƒYޏ”s - if( !s_quiettest ) OS_TPrintf("%s:close failed.\n",filename); - return PERMISSION_ERROR; - } - - return result; -} - -static AccessPermission BannerTest( void ) -{ - return RWExistTestCore( "nand:", "" ); -} - -static AccessPermission SRLTest( void ) -{ - return RWExistTestCore( "nand:", "" ); -} - -static AccessPermission ContentTest( void ) -{ - return RWExistTestCore( "content:", "title.tmd" ); -} - -static AccessPermission Shared1Test( void ) -{ - return RWExistTestCore( "shared1:", "TWLCFG0.dat" ); -} - -static void FinalizeRWTest( FSFile *file, char* filename ) -{ - FS_CloseFile( file ); - FS_DeleteFile( filename ); -} - -// ƒpƒX–¼‚ÍÅŒã‚ɃXƒ‰ƒbƒVƒ…‚ð“ü‚ê‚È‚¢Ž– -static AccessPermission RWTestCore( char *path, char *testfile ) -{ - char filename[256]; - int len; - char buf[5]; - FSFile file[1]; - - FS_InitFile( file ); - STD_TSNPrintf( filename, 256, "%s/%s", path, testfile ); - - // ƒtƒ@ƒCƒ‹Žc‚Á‚Ă邯Œ™‚Ȃ̂Å휂ðæ‚É‘–‚点‚Ä‚¨‚­iƒeƒXƒgŒ‹‰Ê‚ɂ͉e‹¿‚¹‚¸j - FS_DeleteFile(filename); - - // ƒtƒ@ƒCƒ‹ì¬ƒeƒXƒg - if ( FS_CreateFile(filename, FS_PERMIT_R | FS_PERMIT_W) ) - { - // ƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_W ) ) - { - // ƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ޏ”s - if( !s_quiettest ) OS_TPrintf("%s:open failed.\n",filename); - FS_DeleteFile( filename ); - return PERMISSION_ERROR; - } - // ƒtƒ@ƒCƒ‹ƒ‰ƒCƒg - len = FS_WriteFile( file, "test", 5); - if( len != 5 ) - { - // ƒ‰ƒCƒgޏ”s - if( !s_quiettest ) OS_TPrintf("%s:write failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - // ƒtƒ@ƒCƒ‹ƒNƒ[ƒY - if( !FS_CloseFile( file ) ) - { - // ƒNƒ[ƒYޏ”s - if( !s_quiettest ) OS_TPrintf("%s:close failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - - // ƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_R ) ) - { - // ƒtƒ@ƒCƒ‹ƒI[ƒvƒ“ޏ”s - if( !s_quiettest ) OS_TPrintf("%s:open failed.\n",filename); - FS_DeleteFile( filename ); - return PERMISSION_ERROR; - } - // ƒtƒ@ƒCƒ‹ƒŠ[ƒh - len = FS_ReadFile( file, buf, len ); - if( len != 5 || STD_CompareString( buf, "test" ) != 0 ) - { - // ƒŠ[ƒhޏ”s - if( !s_quiettest ) OS_TPrintf("%s:read failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - // ƒtƒ@ƒCƒ‹ƒNƒ[ƒY - if( !FS_CloseFile( file ) ) - { - // ƒNƒ[ƒYޏ”s - if( !s_quiettest ) OS_TPrintf("%s:close failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - // ƒtƒ@ƒCƒ‹ƒfƒŠ[ƒg - if( !FS_DeleteFile( filename )) - { - // ƒfƒŠ[ƒgޏ”s - if( !s_quiettest ) OS_TPrintf("%s:delete failed.\n",filename); - FinalizeRWTest( file, filename ); - return PERMISSION_ERROR; - } - }else - { - // ƒtƒ@ƒCƒ‹ì¬Ž¸”s - FSResult fs_result = FS_GetArchiveResultCode( filename ); - if( !s_quiettest ) OS_TPrintf("%s:cleate failed.\n",filename); - OS_TPrintf( "FS_GetArchiveResultCode(%s) : %d\n", filename, fs_result ); - if( FS_RESULT_ERROR == fs_result ) - { - // ƒtƒ@ƒCƒ‹ì¬‚ÉNO_ENTRY‘¶Ý‚µ‚È‚¢ƒfƒBƒŒƒNƒgƒŠ‚̉º‚Ƀtƒ@ƒCƒ‹‚ðì‚낤‚Æ‚µ‚½‚©ƒ}ƒEƒ“ƒg‚³‚ê‚Ä‚¢‚È‚¢ - // ‚Ç‚¿‚ç‚É‚¹‚æƒAƒNƒZƒX‚Å‚«‚È‚¢‚µAƒfƒBƒŒƒNƒgƒŠ‚Ì‘¶Ý‚ðŠm”F‚·‚鎖‚à‚Å‚«‚È‚¢‚Ì‚ÅAƒp[ƒ~ƒbƒVƒ‡ƒ“NA‚Æ‚µ‚Ĉµ‚¤ - return PERMISSION_NA; - }else if( FS_RESULT_PERMISSION_DENIED == fs_result ) - { - // PERMISSION_DENIED‚ð–á‚Á‚½ê‡ARO‚łȂ¢Ž–‚ðŠm”F‚·‚é•K—v‚ª‚ ‚é - if ( !FS_OpenFileEx( file, filename, FS_FILEMODE_R ) ) - { - if( FS_RESULT_PERMISSION_DENIED == FS_GetArchiveResultCode( filename ) ) - { - // ‰Ë‹ó‚̃tƒ@ƒCƒ‹‚ðRƒ‚[ƒh‚œǂݞ‚à‚¤‚Æ‚µ‚½Œ‹‰Ê‚àDENIED‚È‚çƒp[ƒ~ƒbƒVƒ‡ƒ“NA - return PERMISSION_NA; - } - } - return PERMISSION_ERROR; - } - // ‚ ‚Æ‚ÍERRORˆµ‚¢ - return PERMISSION_ERROR; - } - - return PERMISSION_RW; -} - -static AccessPermission RWTest( char *path ) -{ - return RWTestCore( path, "test.txt" ); -} - -static AccessPermission TMPJumpTest( void ) -{ - return RWTestCore( "nand:", "" ); -} - -static void TestFSPermission( void ) -{ - AccessPermission result[TEST_NUM]; - BOOL test_ok = TRUE; - int l; - - result[0] = RWTest( "nand:" ); // nand: - result[1] = RWTest( "nand2:" ); // nand2: - result[2] = ContentTest(); // content: - result[3] = Shared1Test(); // shared1: - result[4] = RWTest( "shared2:" ); // shared2: - result[5] = RWTest( "photo:" ); // photo: - result[6] = RWTest( "dataPub:" ); // dataPub: - result[7] = RWTest( "dataPrv:" ); // dataPrv: - result[8] = RWTest( "sdmc:" ); // sdmc: - result[9] = RWTest( "nand:/sys" ); // nand:/sys - result[10] = RWTest( "nand:/import" ); // nand:/import - result[11] = RWTest( "nand:/tmp" ); // nand:/tmp - result[12] = SRLTest(); // nand:/ - result[13] = BannerTest(); // nand:/ - result[14] = TMPJumpTest(); // nand:/ - - for( l=0; ltitleID_Lo[1]); - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_WHITE, test_ok ? (const u16 *)L"Test Succeeded." : (const u16 *)L"Test Failed..." ); - - for( l=0; l<15; l++ ) - { - PutStringUTF16Sub( 8*1, l * 12, TXT_COLOR_WHITE, s_test_name[l]); - PutStringUTF16Sub( 8*18 + 8, l * 12, TXT_COLOR_WHITE, s_answer_str[ s_answer_data[l] ]); - PutStringUTF16Sub( 8*18 + 8*7, l * 12, ( result[l]==s_answer_data[l] ? TXT_COLOR_CYAN : TXT_COLOR_YELLOW ), s_answer_str[ result[l] ]); - } - -} - -static void makeAnswerData( void ) -{ - ROM_Header_Short *rhs = (ROM_Header_Short *)(HW_TWL_ROM_HEADER_BUF); - - BOOL isNandApp = (rhs->titleID_Hi & TITLE_ID_HI_MEDIA_MASK) ? TRUE : FALSE; - BOOL isSecureApp = (rhs->titleID_Hi & TITLE_ID_HI_SECURE_FLAG_MASK) ? TRUE : FALSE; - BOOL isNandAccessOn = (rhs->access_control.nand_access) ? TRUE : FALSE; - BOOL isSDCardAccessOn = (rhs->access_control.sd_card_access) ? TRUE : FALSE; - BOOL isEnablePublicSaveData = ( rhs->public_save_data_size != 0 ) ? TRUE : FALSE; - BOOL isEnablePrivateSaveData = ( rhs->private_save_data_size != 0 ) ? TRUE : FALSE; - - // ³‚µ‚¢ƒAƒNƒZƒXÝ’èî•ñ‚ð¶¬A“Á•M‚µ‚È‚¢ŒÀ‚è‚ÍAŽw’èðŒ‰º‚Ńtƒ‹ƒAƒNƒZƒX - s_answer_data[0] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand: iNANDƒAƒvƒŠ or NANDƒAƒNƒZƒXONjand SecureApp - s_answer_data[1] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand2: iNANDƒAƒvƒŠ or NANDƒAƒNƒZƒXONjand SecureApp - s_answer_data[2] = ( isNandApp && CTRUE ) ? PERMISSION_RO : PERMISSION_NA; // content: Œ»Ý–³ŒøB—LŒø‚ÌꇂÍNANDƒAƒvƒŠ‚Ì‚ÝReadOnly - s_answer_data[3] = ( isNandApp || isNandAccessOn ) ? PERMISSION_RO : PERMISSION_NA; // shared1: iNANDƒAƒvƒŠ or NANDƒAƒNƒZƒXONj‚ÅReadOnly - s_answer_data[4] = ( ( isNandApp || isNandAccessOn ) && STRUE ) ? PERMISSION_RW : PERMISSION_NA; // shared2: Œ»Ý–³ŒøB—LŒø‚ÌꇂÍiNANDƒAƒvƒŠ or NANDƒAƒNƒZƒXONj - s_answer_data[5] = ( isNandApp || isNandAccessOn ) ? PERMISSION_RW : PERMISSION_NA; // photo: NANDƒAƒvƒŠ or NANDƒAƒNƒZƒXON - s_answer_data[6] = ( isNandApp && isEnablePublicSaveData ) ? PERMISSION_RW : PERMISSION_NA; // dataPub: NANDƒAƒvƒŠ and dataPub ƒTƒCƒYÝ’è‚ ‚è - s_answer_data[7] = ( isNandApp && isEnablePrivateSaveData ) ? PERMISSION_RW : PERMISSION_NA; // dataPrv: NANDƒAƒvƒŠ and dataPrv ƒTƒCƒYÝ’è‚ ‚è - s_answer_data[8] = isSDCardAccessOn ? PERMISSION_RW : PERMISSION_NA; // sdmc: SDƒAƒNƒZƒX‰ÂiSDƒJ[ƒh‚ªŽh‚³‚Á‚Ä‚¢‚È‚¢‚ÆŽ¸”sj - s_answer_data[9] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand:/sys iNANDƒAƒvƒŠ or NANDƒAƒNƒZƒXONjand SecureApp - s_answer_data[10] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand:/import iNANDƒAƒvƒŠ or NANDƒAƒNƒZƒXONjand SecureApp - s_answer_data[11] = ( ( isNandApp || isNandAccessOn ) && isSecureApp ) ? PERMISSION_RW : PERMISSION_NA; // nand:/tmp iNANDƒAƒvƒŠ or NANDƒAƒNƒZƒXONjand SecureApp - s_answer_data[12] = isNandApp ? ( isSecureApp ? PERMISSION_RW : PERMISSION_RO ) : PERMISSION_NA; // nand:/ NANDƒAƒvƒŠ‚ÅReadOnlyiSecure‚Ìꇂ̓tƒ‹ƒAƒNƒZƒXj - s_answer_data[13] = isNandApp ? PERMISSION_RW : PERMISSION_NA; // nand:/ NANDƒAƒvƒŠ - s_answer_data[14] = ( isNandApp || isNandAccessOn ) ? PERMISSION_RW : PERMISSION_NA; // nand:/ NANDƒAƒvƒŠ or NANDƒAƒNƒZƒXON -} - -// ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̉Šú‰» -void RomTypeTestInit( void ) -{ - GX_DispOff(); - GXS_DispOff(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - - PrintfSJIS( 1 * 8, 9 * 8, TXT_COLOR_BLACK, "FATFSPermissionCheck %c", (char)((ROM_Header_Short *)(HW_TWL_ROM_HEADER_BUF))->titleID_Lo[1]); - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_BLACK, (const u16 *)L"Start." ); - //GetAndDrawRTCData( &g_rtcDraw, TRUE ); - - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); - - s_quiettest = FALSE; - - makeAnswerData(); - - TestFSPermission(); - -} - - -// ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̃ƒCƒ“ƒ‹[ƒv -void RomTypeTestMain(void) -{ - BOOL tp_cancel = FALSE; - - ReadTP(); // ƒ^ƒbƒ`ƒpƒlƒ‹“ü—͂̎擾 - - // [RETURN]ƒ{ƒ^ƒ“‰Ÿ‰ºƒ`ƒFƒbƒN - if(tpd.disp.touch) { - tp_cancel = WithinRangeTP( RETURN_BUTTON_TOP_X * 8, RETURN_BUTTON_TOP_Y * 8 - 4, - RETURN_BUTTON_BOTTOM_X * 8, RETURN_BUTTON_BOTTOM_Y * 8 - 4, &tpd.disp ); - } - - if( ( pad.trg & PAD_BUTTON_A ) ) { - } - - if( ( pad.trg & PAD_BUTTON_X ) ) { - } - - if( ( pad.trg & PAD_BUTTON_B ) || tp_cancel ) { -// SYSM_RebootLauncher(); - } - - //GetAndDrawRTCData( &g_rtcDraw, FALSE ); -} - - diff --git a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.h b/build/tests/RomTypeTest/ARM9/src/RomTypeTest.h deleted file mode 100644 index 86e4339b..00000000 --- a/build/tests/RomTypeTest/ARM9/src/RomTypeTest.h +++ /dev/null @@ -1,36 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: RomTypeTest.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __ROM_TYPE_TEST_H__ -#define __ROM_TYPE_TEST_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -// define data---------------------------------------------------------- - -void RomTypeTestInit( void ); -void RomTypeTestMain( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __ROM_TYPE_TEST_H__ diff --git a/build/tests/RomTypeTest/ARM9/src/main.c b/build/tests/RomTypeTest/ARM9/src/main.c deleted file mode 100644 index 72fe2c5e..00000000 --- a/build/tests/RomTypeTest/ARM9/src/main.c +++ /dev/null @@ -1,86 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "misc.h" -#include "RomTypeTest.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -static void INTR_VBlank( void ); - -// global variable------------------------------------------------------------- - -// static variable------------------------------------------------------------- - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// function's description -// ============================================================================ -void TwlMain(void) -{ - - // ‰Šú‰»---------------------------------- - OS_Init(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - GX_Init(); - GX_SetPower(GX_POWER_ALL); // ŠeƒƒWƒbƒN ƒpƒ[ON - - // Š„‚螂݋–‰Â---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // ƒfƒoƒCƒX‰Šú‰»------------------------------- - TP_Init(); - (void)RTC_Init(); - - // ƒVƒXƒeƒ€‚̉Šú‰»------------------ - InitAllocator(); - - InitBG(); - RomTypeTestInit(); - // ƒƒCƒ“ƒ‹[ƒv---------------------------- - while(1){ - OS_WaitIrq(1, OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„‚螂ݑ҂¿ - - ReadKeyPad(); // ƒL[“ü—͂̎擾 - ReadTP(); // TP“ü—͂̎擾 - - RomTypeTestMain(); - } -} - - -// ============================================================================ -// Š„‚螂݈— -// ============================================================================ - -// Vƒuƒ‰ƒ“ƒNŠ„‚èž‚Ý -static void INTR_VBlank(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„žƒ`ƒFƒbƒN‚̃Zƒbƒg -} - diff --git a/build/tests/RomTypeTest/Makefile b/build/tests/RomTypeTest/Makefile deleted file mode 100644 index 66754bca..00000000 --- a/build/tests/RomTypeTest/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/RomTypeTest/banner/Makefile b/build/tests/RomTypeTest/banner/Makefile deleted file mode 100644 index a03da7d0..00000000 --- a/build/tests/RomTypeTest/banner/Makefile +++ /dev/null @@ -1,35 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 Makefile.2 Makefile.3 Makefile.4 Makefile.5 \ - Makefile.6 Makefile.7 Makefile.8 Makefile.9 Makefile.a Makefile.b \ - Makefile.c Makefile.d Makefile.e Makefile.f Makefile.g Makefile.h \ - Makefile.i Makefile.j Makefile.k - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.0 b/build/tests/RomTypeTest/banner/Makefile.0 deleted file mode 100644 index 97c32d52..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.0 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 0 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.1 b/build/tests/RomTypeTest/banner/Makefile.1 deleted file mode 100644 index 54f8cd07..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.1 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 1 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.2 b/build/tests/RomTypeTest/banner/Makefile.2 deleted file mode 100644 index 13eeca27..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.2 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 2 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.3 b/build/tests/RomTypeTest/banner/Makefile.3 deleted file mode 100644 index 5bfadf81..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.3 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 3 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.4 b/build/tests/RomTypeTest/banner/Makefile.4 deleted file mode 100644 index 7ea01f33..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.4 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 4 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.5 b/build/tests/RomTypeTest/banner/Makefile.5 deleted file mode 100644 index 4c44bd16..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.5 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 5 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.6 b/build/tests/RomTypeTest/banner/Makefile.6 deleted file mode 100644 index a3cb390c..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.6 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 6 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.7 b/build/tests/RomTypeTest/banner/Makefile.7 deleted file mode 100644 index c4e38d94..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.7 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 7 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.8 b/build/tests/RomTypeTest/banner/Makefile.8 deleted file mode 100644 index b42bcec4..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.8 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 8 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.9 b/build/tests/RomTypeTest/banner/Makefile.9 deleted file mode 100644 index 5657c255..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.9 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 9 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.a b/build/tests/RomTypeTest/banner/Makefile.a deleted file mode 100644 index fc320423..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.a +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = a - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.b b/build/tests/RomTypeTest/banner/Makefile.b deleted file mode 100644 index 77b38975..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.b +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = b - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.c b/build/tests/RomTypeTest/banner/Makefile.c deleted file mode 100644 index c80098fe..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.c +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = c - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.d b/build/tests/RomTypeTest/banner/Makefile.d deleted file mode 100644 index 1187190a..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.d +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = d - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.e b/build/tests/RomTypeTest/banner/Makefile.e deleted file mode 100644 index 32024fb5..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.e +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = e - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.f b/build/tests/RomTypeTest/banner/Makefile.f deleted file mode 100644 index 2360a8d6..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.f +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = f - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.g b/build/tests/RomTypeTest/banner/Makefile.g deleted file mode 100644 index 3d947db4..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.g +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = g - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.h b/build/tests/RomTypeTest/banner/Makefile.h deleted file mode 100644 index 55893d65..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.h +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = h - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.i b/build/tests/RomTypeTest/banner/Makefile.i deleted file mode 100644 index 298a0bdb..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.i +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = i - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.j b/build/tests/RomTypeTest/banner/Makefile.j deleted file mode 100644 index e8d5ea6a..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.j +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = j - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/Makefile.k b/build/tests/RomTypeTest/banner/Makefile.k deleted file mode 100644 index b1cff1b6..00000000 --- a/build/tests/RomTypeTest/banner/Makefile.k +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = k - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/RomTypeTest/banner/banner_v3.bsf b/build/tests/RomTypeTest/banner/banner_v3.bsf deleted file mode 100644 index d595b6d3..00000000 Binary files a/build/tests/RomTypeTest/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/icon/gameIcon.bmp b/build/tests/RomTypeTest/banner/icon/gameIcon.bmp deleted file mode 100644 index 5fe5ee2c..00000000 Binary files a/build/tests/RomTypeTest/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/icon/msk_pictchat_icon.bin b/build/tests/RomTypeTest/banner/icon/msk_pictchat_icon.bin deleted file mode 100644 index 5b2734aa..00000000 Binary files a/build/tests/RomTypeTest/banner/icon/msk_pictchat_icon.bin and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_0_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_0_v3.TWL.bsf deleted file mode 100644 index f91f07dd..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_0_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_1_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_1_v3.TWL.bsf deleted file mode 100644 index b793ddcf..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_1_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_2_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_2_v3.TWL.bsf deleted file mode 100644 index b5bcbdb4..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_2_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_3_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_3_v3.TWL.bsf deleted file mode 100644 index e506e210..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_3_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_4_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_4_v3.TWL.bsf deleted file mode 100644 index e2025bf5..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_4_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_5_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_5_v3.TWL.bsf deleted file mode 100644 index f6cbe8a3..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_5_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_6_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_6_v3.TWL.bsf deleted file mode 100644 index 9886587c..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_6_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_7_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_7_v3.TWL.bsf deleted file mode 100644 index 27726336..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_7_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_8_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_8_v3.TWL.bsf deleted file mode 100644 index 8cb61ef2..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_8_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_9_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_9_v3.TWL.bsf deleted file mode 100644 index 3a35c6d0..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_9_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_a_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_a_v3.TWL.bsf deleted file mode 100644 index e7206a8a..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_a_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_b_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_b_v3.TWL.bsf deleted file mode 100644 index 02983981..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_b_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_c_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_c_v3.TWL.bsf deleted file mode 100644 index 7475a88a..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_c_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_d_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_d_v3.TWL.bsf deleted file mode 100644 index 58156ac8..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_d_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_e_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_e_v3.TWL.bsf deleted file mode 100644 index 69ecd6ec..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_e_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_f_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_f_v3.TWL.bsf deleted file mode 100644 index 63a152b1..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_f_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_g_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_g_v3.TWL.bsf deleted file mode 100644 index 3fcb24cf..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_g_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_h_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_h_v3.TWL.bsf deleted file mode 100644 index 19e03afe..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_h_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_i_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_i_v3.TWL.bsf deleted file mode 100644 index 59f07fb2..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_i_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_j_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_j_v3.TWL.bsf deleted file mode 100644 index cd034555..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_j_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/RomTypeTest/banner/test-utf16_k_v3.TWL.bsf b/build/tests/RomTypeTest/banner/test-utf16_k_v3.TWL.bsf deleted file mode 100644 index 88b33805..00000000 Binary files a/build/tests/RomTypeTest/banner/test-utf16_k_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/Shared2File/Makefile b/build/tests/Shared2File/Makefile deleted file mode 100644 index 199b8d48..00000000 --- a/build/tests/Shared2File/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos.TWL - nandApp - build -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- -TARGET_PLATFORM := TWL -TWL_ARCHGEN := LIMITED - -TITLEID_LO = 0S2A -SRCS = main.c -TARGET_BIN = shared2Test.tad - -TWL_NANDAPP = TRUE - -#------------------------- -#-- NAND ƒAƒvƒŠ‚ł͂¢‚­‚‚©‚̃pƒ‰ƒ[ƒ^‚ÌŽw’è‚Ì‚½‚߂ɌŗL‚Ì RSF ƒtƒ@ƒCƒ‹‚ª•K—v‚Å‚·B - -ROM_SPEC = main.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/Shared2File/main.rsf b/build/tests/Shared2File/main.rsf deleted file mode 100644 index d58d4d04..00000000 --- a/build/tests/Shared2File/main.rsf +++ /dev/null @@ -1,198 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - MakerCode "01" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType User - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode 0S2A - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - Shared2FileIndex 1 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - Shared2FileSize 128K -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/Shared2File/src/main.c b/build/tests/Shared2File/src/main.c deleted file mode 100644 index f182ab80..00000000 --- a/build/tests/Shared2File/src/main.c +++ /dev/null @@ -1,490 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - nandApp - demos - backup - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include -#include - -static void PrintBootType(); - -static void InitDEMOSystem(); -static void InitInteruptSystem(); -static void InitAllocSystem(); -static void InitFileSystem(); - -static char* LoadFile(const char* path); -static BOOL SaveFile(const char* path, void* pData, u32 size); -static u32 GetCounter(const char* root); -static void SetCounter(const char* root, u32 counter); -static void PrintBackup(const char* root); -static BOOL AddBackup(const char* root); -static void PrintAndAddBackup(const char* root); - -// OS_Printf‚̃tƒbƒNŠÖ” -#ifndef SDK_FINALROM -void OS_Printf(const char *fmt, ...) -{ - char dst[256]; - - int ret; - va_list va; - va_start(va, fmt); - ret = OS_VSPrintf(dst, fmt, va); - va_end(va); - - OS_PutString(dst); -} -#endif - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: ƒƒCƒ“ŠÖ”‚Å‚·B - - Arguments: ‚È‚µB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -void TwlMain(void) -{ - OS_Init(); - RTC_Init(); - InitInteruptSystem(); - InitFileSystem(); - InitAllocSystem(); - InitDEMOSystem(); - OS_Printf("*** start nandApp demo\n"); - - OS_Printf("Build:%s %s\n", __DATE__, __TIME__); - - PrintBootType(); - - // Shared2 ƒtƒ@ƒCƒ‹‚Í NAND ã‚ɕۑ¶‚³‚ê‚Ü‚·B - // ‚»‚Ì‚½‚ߎg—p‚·‚é API ‚Í FS API ‚ƂȂèA - // ƒtƒ@ƒCƒ‹ƒVƒXƒeƒ€‚Æ‚µ‚ăAƒNƒZƒX‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - { - // ushared2v‚Í ƒAƒvƒŠŠÔ‚Å‹¤—L‚Å‚«‚éƒtƒ@ƒCƒ‹‚̃A[ƒJƒCƒu–¼‚Å‚·B - OS_Printf("Shared2 file %04x:\n", *(u16 *)( HW_TWL_ROM_HEADER_BUF + 0x020c ) ); - PrintAndAddBackup("shared2:"); - - OS_Printf("\n"); - } - - OS_Printf("*** End of demo\n"); - - - // ƒ‰ƒ“ƒ`ƒƒ[‚É–ß‚ê‚邿‚¤‚ÉA - // I—¹‚µ‚È‚¢ - for (;;) - { - // ƒtƒŒ[ƒ€XVB - { - DEMO_DrawFlip(); - OS_WaitVBlankIntr(); - } - } - - OS_Terminate(); -} - - -/*---------------------------------------------------------------------------* - Name: LoadFile - - Description: “à•”‚Ńƒ‚ƒŠ‚ðŠm•Û‚µƒtƒ@ƒCƒ‹‚ð“ǂݞ‚݂܂·B - - Arguments: path: “ǂݞ‚Þƒtƒ@ƒCƒ‹‚̃pƒXB - - Returns: ƒtƒ@ƒCƒ‹‚ª‘¶Ý‚·‚é‚È‚çƒtƒ@ƒCƒ‹‚Ì“à—e‚ª“ǂݞ‚܂ꂽ - “à•”‚ÅŠm•Û‚µ‚½ƒoƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^‚ð•Ô‚µ‚Ü‚·B - ‚±‚̃|ƒCƒ“ƒ^‚Í FS_Free ‚ʼnð•ú‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - *---------------------------------------------------------------------------*/ -static char* LoadFile(const char* path) -{ - FSFile f; - BOOL bSuccess; - char* pBuffer; - u32 fileSize; - s32 readSize; - - FS_InitFile(&f); - - bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_R); - if( ! bSuccess ) - { - return NULL; - } - - fileSize = FS_GetFileLength(&f); - pBuffer = (char*)OS_Alloc(fileSize + 1); - SDK_POINTER_ASSERT(pBuffer); - - readSize = FS_ReadFile(&f, pBuffer, (s32)fileSize); - SDK_ASSERT( readSize == fileSize ); - - bSuccess = FS_CloseFile(&f); - SDK_ASSERT( bSuccess ); - - pBuffer[fileSize] = '\0'; - return pBuffer; -} - -/*---------------------------------------------------------------------------* - Name: SaveFile - - Description: ƒtƒ@ƒCƒ‹‚ð쬂µƒf[ƒ^‚ð‘‚«ž‚݂܂·B - “r’†‚̃fƒBƒŒƒNƒgƒŠ‚Í쬂µ‚Ü‚¹‚ñB - - Arguments: path: 쬂·‚éƒtƒ@ƒCƒ‹‚̃pƒXB - pData: ‘‚«ž‚Þƒf[ƒ^B - size: ‘‚«ž‚Þƒf[ƒ^‚̃TƒCƒYB - - Returns: ¬Œ÷‚·‚ê‚ÎTRUE - *---------------------------------------------------------------------------*/ -static BOOL SaveFile(const char* path, void* pData, u32 size) -{ - FSFile f; - BOOL bSuccess; - FSResult fsResult; - s32 writtenSize; - - FS_InitFile(&f); - - FS_CreateFile(path, (FS_PERMIT_R|FS_PERMIT_W)); - bSuccess = FS_OpenFileEx(&f, path, FS_FILEMODE_W); - if (bSuccess == FALSE) - { - FSResult res = FS_GetArchiveResultCode(path); - OS_Printf("Failed create file:%d\n", res); - return FALSE; - } - SDK_ASSERT( bSuccess ); - - fsResult = FS_SetFileLength(&f, 0); - SDK_ASSERT( fsResult == FS_RESULT_SUCCESS ); - - writtenSize = FS_WriteFile(&f, pData, (s32)size); - SDK_ASSERT( writtenSize == size ); - - bSuccess = FS_CloseFile(&f); - SDK_ASSERT( bSuccess ); - return TRUE; -} - -/*---------------------------------------------------------------------------* - Name: GetCounter - - Description: /counter.bin ‚ɕۑ¶‚³‚ê‚Ä‚¢‚éƒJƒEƒ“ƒ^’l‚ð“ǂݞ‚݂܂·B - - Arguments: root: counter.bin ‚ª•Û‘¶‚³‚ê‚Ä‚¢‚éƒfƒBƒŒƒNƒgƒŠ‚̃pƒXB - - Returns: ƒJƒEƒ“ƒ^’l‚ð•Ô‚µ‚Ü‚·B - /counter.bin ‚ª‘¶Ý‚µ‚È‚¢ê‡‚Í 0 ‚ð•Ô‚µ‚Ü‚·B - *---------------------------------------------------------------------------*/ -static u32 GetCounter(const char* root) -{ - char path[FS_FILE_NAME_MAX]; - char* pBuffer; - u32 counter = 0; - - STD_TSNPrintf(path, sizeof(path), "%s/counter.bin", root); - - pBuffer = LoadFile(path); - if( pBuffer != NULL ) - { - counter = MI_LoadLE32(pBuffer); - OS_Free(pBuffer); - } - - OS_Printf("%s counter is %d.\n", root, counter); - - return counter; -} - -/*---------------------------------------------------------------------------* - Name: SetCounter - - Description: /counter.bin ‚ɃJƒEƒ“ƒ^’l‚ð•Û‘¶‚µ‚Ü‚·B - ƒtƒ@ƒCƒ‹‚ª–³‚¢ê‡‚Í쬂µ‚Ü‚·B - - Arguments: root: counter.bin ‚ð•Û‘¶‚·‚éƒfƒBƒŒƒNƒgƒŠ‚̃pƒXB - counter: •Û‘¶‚·‚éƒJƒEƒ“ƒ^’lB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static void SetCounter(const char* root, u32 counter) -{ - char path[FS_FILE_NAME_MAX]; - - STD_TSNPrintf(path, sizeof(path), "%s/counter.bin", root); - (void)SaveFile(path, &counter, sizeof(counter)); -} - -/*---------------------------------------------------------------------------* - Name: PrintBackup - - Description: Žw’肳‚ꂽƒfƒBƒŒƒNƒgƒŠ‚Ì“à—e‚ð print ‚µ‚Ü‚·B - ƒTƒuƒfƒBƒŒƒNƒgƒŠ‚Ì“à—e‚Í print ‚µ‚Ü‚¹‚ñB - - Arguments: root: ‘Îۂ̃fƒBƒŒƒNƒgƒŠ‚̃pƒXB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static void PrintBackup(const char* root) -{ - FSFile dir; - FSDirectoryEntryInfo entry; - BOOL bSuccess; - int numEntry = 0; - - FS_InitFile(&dir); - - bSuccess = FS_OpenDirectory(&dir, root, FS_FILEMODE_R); - if( bSuccess ) - { - while( FS_ReadDirectory(&dir, &entry) ) - { - // Ž©•ª‚âe‚ðŽw‚·ƒGƒ“ƒgƒŠ‚̓XƒLƒbƒv‚µ‚Ü‚· - if( (STD_CompareString(entry.longname, ".") == 0) - || (STD_CompareString(entry.longname, "..") == 0) ) - { - continue; - } - - if( (entry.attributes & FS_ATTRIBUTE_IS_DIRECTORY) != 0 ) - { - // ƒfƒBƒŒƒNƒgƒŠ - OS_Printf(" d %s\n", entry.longname); - } - else - { - // ƒtƒ@ƒCƒ‹ - - char path[FS_FILE_NAME_MAX]; - char* text; - char* found_cr; - char* found_lf; - - // ʼn‚̉üs‚܂ł̓à—e‚ð•\ަ‚µ‚Ü‚·B - STD_TSNPrintf(path, sizeof(path), "%s/%s", root, entry.longname); - text = LoadFile(path); - SDK_POINTER_ASSERT(text); - - found_cr = STD_SearchString(text, "\r"); - if( found_cr != NULL ) - { - *found_cr = '\0'; - } - found_lf = STD_SearchString(text, "\n"); - if( found_lf != NULL ) - { - *found_lf = '\0'; - } - - OS_Printf(" f %-6s %s\n", entry.longname, text); - OS_Free(text); - } - - numEntry++; - } - - bSuccess = FS_CloseDirectory(&dir); - SDK_ASSERT( bSuccess ); - } - - if( numEntry == 0 ) - { - OS_TPrintf(" (no entry)\n"); - } -} - -/*---------------------------------------------------------------------------* - Name: AddBackup - - Description: ‘Îۂ̃fƒBƒŒƒNƒgƒŠ‚ɃeƒXƒg—p‚̃fƒBƒŒƒNƒgƒŠ‚ƃtƒ@ƒCƒ‹‚ð - 쬂µ‚Ü‚·B - - Arguments: root: ‘Îۂ̃fƒBƒŒƒNƒgƒŠ‚̃pƒXB - - Returns: ¬Œ÷‚·‚ê‚ÎTRUE - *---------------------------------------------------------------------------*/ -static BOOL AddBackup(const char* root) -{ - char path[FS_FILE_NAME_MAX]; - char text[256]; - u32 counter; - BOOL bSuccess; - u8 GameCode[ 5 ]; - - // ROMƒwƒbƒ_‚©‚çGameCodeŽæ“¾ - { - int i; - u8 *p = (u8 *)(HW_TWL_ROM_HEADER_BUF + 0x0233 ); - MI_CpuClear8( GameCode, sizeof(GameCode) ); - for( i = 0; i < 4; i++ ) { - GameCode[ i ] = *p--; - } - } - // ƒtƒ@ƒCƒ‹‚É‘‚«ž‚Þ“à—e‚𶬂µ‚Ü‚·B - STD_TSNPrintf(text, sizeof(text), ": generated by %s", GameCode ); - - // ƒtƒ@ƒCƒ‹–¼‚̶¬‚ÉŽg—p‚·‚éƒJƒEƒ“ƒ^’l‚ðŽæ“¾/XV‚µ‚Ü‚·B - counter = GetCounter(root); - counter++; - SetCounter(root, counter); - - // ƒfƒBƒŒƒNƒgƒŠ‚ðì¬ - STD_TSNPrintf(path, sizeof(path), "%s/dir_%d", root, counter); - bSuccess = FS_CreateDirectory(path, (FS_PERMIT_R|FS_PERMIT_W)); - if (bSuccess == FALSE) - { - FSResult res = FS_GetArchiveResultCode(path); - OS_Printf("Failed create directory:%d\n", res); - return FALSE; - } - SDK_ASSERT( bSuccess ); - - // ƒtƒ@ƒCƒ‹‚ðì¬ - STD_TSNPrintf(path, sizeof(path), "%s/file_%d", root, counter); - (void)SaveFile(path, text, (u32)STD_GetStringLength(text)); - return TRUE; -} - -/*---------------------------------------------------------------------------* - Name: PrintAndAddBackup - - Description: ‘Îۂ̃fƒBƒŒƒNƒgƒŠ‚Ì“à—e‚ð•\ަ‚µ‚½ŒãAƒeƒXƒg—p‚Ì - ƒfƒBƒŒƒNƒgƒŠ‚ƃtƒ@ƒCƒ‹‚ð쬂µ‚Ü‚·B - - Arguments: root: ‘Îۂ̃fƒBƒŒƒNƒgƒŠ‚̃pƒXB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static void PrintAndAddBackup(const char* root) -{ - PrintBackup(root); - (void)AddBackup(root); -} - - -/*---------------------------------------------------------------------------* - Name: PrintBootType - - Description: BootType ‚ð print ‚µ‚Ü‚·B - - Arguments: ‚È‚µB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static void PrintBootType() -{ - const OSBootType btype = OS_GetBootType(); - - switch( btype ) - { - case OS_BOOTTYPE_ROM: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_ROM\n"); break; - case OS_BOOTTYPE_NAND: OS_TPrintf("OS_GetBootType = OS_BOOTTYPE_NAND\n"); break; - default: - { - OS_Warning("unknown BootType(=%d)", btype); - } - break; - } -} - -/*---------------------------------------------------------------------------* - Name: InitDEMOSystem - - Description: ƒRƒ“ƒ\[ƒ‹‚̉æ–Êo—Í—p‚Ì•\Ž¦Ý’è‚ðs‚¢‚Ü‚·B - - Arguments: ‚È‚µB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static void InitDEMOSystem() -{ - // ‰æ–Ê•\ަ‚̉Šú‰»B - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBitmap(); - DEMOHookConsole(); - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 0, 1)); - DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR); - DEMOStartDisplay(); -} - -/*---------------------------------------------------------------------------* - Name: InitInteruptSystem - - Description: Š„‚螂݂ð‰Šú‰»‚µ‚Ü‚·B - - Arguments: ‚È‚µB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static void InitInteruptSystem() -{ - // ŒÂ•ÊŠ„‚螂݃tƒ‰ƒO‚ð‘S‚Ä•s‹–‰Â‚É - (void)OS_SetIrqMask(0); - - // ƒ}ƒXƒ^[Š„‚螂݃tƒ‰ƒO‚ð‹–‰Â‚É - (void)OS_EnableIrq(); - - // IRQ Š„‚èž‚Ý‚ð‹–‰Â‚µ‚Ü‚· - (void)OS_EnableInterrupts(); -} - -/*---------------------------------------------------------------------------* - Name: InitAllocSystem - - Description: ƒq[ƒv‚ð쬂µ‚Ä OS_Alloc ‚ªŽg‚¦‚邿‚¤‚É‚µ‚Ü‚·B - - Arguments: ‚È‚µB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static void InitAllocSystem() -{ - void* newArenaLo; - OSHeapHandle hHeap; - - // ƒƒCƒ“ƒAƒŠ[ƒi‚̃AƒƒP[ƒgƒVƒXƒeƒ€‚ð‰Šú‰» - newArenaLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetMainArenaLo(newArenaLo); - - // ƒƒCƒ“ƒAƒŠ[ƒiã‚Ƀq[ƒv‚ðì¬ - hHeap = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - OS_SetCurrentHeap(OS_ARENA_MAIN, hHeap); -} - -/*---------------------------------------------------------------------------* - Name: InitFileSystem - - Description: FS ‚ð‰Šú‰»‚µ‚Ü‚·B - ‚±‚ÌŠÖ”‚ðŒÄ‚Ño‚·‘O‚É InitInteruptSystem() ‚ª - ŒÄ‚΂ê‚Ä‚¢‚é•K—v‚ª‚ ‚è‚Ü‚·B - - Arguments: ‚È‚µB - - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static void InitFileSystem() -{ - // ARM7‚Ƃ̒ÊMFIFOŠ„‚螂݋–‰Â - (void)OS_EnableIrqMask(OS_IE_SPFIFO_RECV); - - // ƒtƒ@ƒCƒ‹ƒVƒXƒeƒ€‰Šú‰» - FS_Init( FS_DMA_NOT_USE ); -} diff --git a/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lcf.template b/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lcf.template deleted file mode 100644 index bdc95bb6..00000000 --- a/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lcf.template +++ /dev/null @@ -1,1048 +0,0 @@ -#--------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ARM9-TS.lcf.template -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#--------------------------------------------------------------------------- -MEMORY -{ - (RWX) : ORIGIN = , LENGTH = 0x0 > - - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.AUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - binary.STATIC_FOOTER (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - F (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWXO): ORIGIN = , LENGTH = 0x0 > - - - dummy.MAIN_EX.NITRO (RW) : ORIGIN = 0x023e0000, LENGTH = 0x0 - arena.MAIN.NITRO (RW) : ORIGIN = AFTER(,), LENGTH = 0x0 - arena.MAIN_EX.NITRO (RW) : ORIGIN = AFTER(dummy.MAIN_EX.NITRO,), LENGTH = 0x0 - arena.ITCM (RW) : ORIGIN = AFTER(ITCM,), LENGTH = 0x0 - arena.DTCM (RW) : ORIGIN = AFTER(DTCM,), LENGTH = 0x0 - - check.ITCM (RW) : ORIGIN = 0x0, LENGTH = 0x08000 > itcm.check - check.DTCM (RW) : ORIGIN = 0x0, LENGTH = 0x04000 > dtcm.check - check.MAIN.NITRO (RW) : ORIGIN = 0x02000000, LENGTH = 0x0f80000 > main.nitro.check - - binary.LTDAUTOLOAD_TOP (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWX) : ORIGIN = , LENGTH = 0x0 >> - - binary.LTDAUTOLOAD_INFO (RWX) : ORIGIN = 0, LENGTH = 0x0 >> - - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - L (RW) : ORIGIN = 0, LENGTH = 0x0 > - - (RWXO): ORIGIN = , LENGTH = 0x0 > - - - dummy.MAIN_EX.TWL (RW) : ORIGIN = 0x0d000000, LENGTH = 0x0 - arena.MAIN.TWL (RW) : ORIGIN = AFTER(,,LTDMAIN,), LENGTH = 0x0 - arena.MAIN_EX.TWL (RW) : ORIGIN = AFTER(dummy.MAIN_EX.TWL,,,LTDMAIN,), LENGTH = 0x0 - - check.MAIN.TWL (RW) : ORIGIN = 0x02000000, LENGTH = 0x0f80000 > main.twl.check - - binary.MODULE_FILES (RW) : ORIGIN = 0, LENGTH = 0x0 > component.files -} - -FORCE_ACTIVE -{ - SVC_SoftReset -} - -KEEP_SECTION -{ - .sinit -} - -SECTIONS -{ - ############################ STATIC ################################# - .: - { - ALIGNALL(4); - . = ALIGN(32); # Fit to cache line - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_STATIC_START =.; - SDK_STATIC_TEXT_START =.; - #:::::::::: text/rodata - libsyscall.a (.text) - OBJECT(_start,*) - crt0.FLX.TWL.o (.text) - crt0.FLX.TWL.o (.rodata) - # - # .version ƒZƒNƒVƒ‡ƒ“‚ð’ljÁ‚µ‚Ä‚¢‚Ü‚·B - # ‚±‚̃ZƒNƒVƒ‡ƒ“‚Ɋ܂܂ê‚éî•ñ‚̓ƒbƒgƒ`ƒFƒbƒN‚ÌÛ‚É - # •K—v‚ƂȂè‚Ü‚·‚Ì‚ÅA•K‚¸‚±‚̈ʒu‚ÉŽc‚·‚悤‚É‚µ‚ĉº‚³‚¢B - # - * (.version) - OBJECT(TwlMain,*) - - - - - - - * (.exception) - . = ALIGN(4); - SDK_STATIC_ETABLE_START =.; - __exception_table_start__ =.; - EXCEPTION - __exception_table_end__ =.; - SDK_STATIC_ETABLE_END =.; - - - - - - - - - - - - - . = ALIGN(4); - SDK_STATIC_SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_STATIC_SINIT_END =.; - #:::::::::: text/rodata - SDK_STATIC_TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(32); # Fit to cache line - SDK_STATIC_DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - . = ALIGN(4); - - SDK_LTDOVERLAYTABLE_DIGEST =.; - . = . + 20; - SDK_LTDOVERLAYTABLE_DIGEST_END =.; - SDK_OVERLAYTABLE_DIGEST =.; - . = . + 20; - SDK_OVERLAYTABLE_DIGEST_END =.; - SDK_OVERLAY_DIGEST =.; - . = . + * 20; - . = . + * 20; - SDK_OVERLAY_DIGEST_END =.; - #:::::::::: data - . = ALIGN(32); - SDK_STATIC_DATA_END =.; - SDK_STATIC_END =.; - - SDK_STATIC_TEXT_SIZE = SDK_STATIC_TEXT_END - SDK_STATIC_TEXT_START; - SDK_STATIC_DATA_SIZE = SDK_STATIC_DATA_END - SDK_STATIC_DATA_START; - SDK_STATIC_SIZE = SDK_STATIC_END - SDK_STATIC_START; - __sinit__ = SDK_STATIC_SINIT_START; # for static initializer - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); # Fit to cache line - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_STATIC_BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_STATIC_BSS_END = .; - - SDK_STATIC_BSS_SIZE = SDK_STATIC_BSS_END - SDK_STATIC_BSS_START; - - } >> - - - ############################ AUTOLOADS ############################## - SDK_AUTOLOAD.ITCM.START = 0x01ff8000; - SDK_AUTOLOAD.ITCM.END = SDK_AUTOLOAD.ITCM.START; - SDK_AUTOLOAD.ITCM.BSS_END = SDK_AUTOLOAD.ITCM.START; - SDK_AUTOLOAD.ITCM.SIZE = 0; - SDK_AUTOLOAD.ITCM.BSS_SIZE = 0; - SDK_AUTOLOAD.DTCM.START = 0x02fe0000; - SDK_AUTOLOAD.DTCM.END = SDK_AUTOLOAD.DTCM.START; - SDK_AUTOLOAD.DTCM.BSS_END = SDK_AUTOLOAD.DTCM.START; - SDK_AUTOLOAD.DTCM.SIZE = 0; - SDK_AUTOLOAD.DTCM.BSS_SIZE = 0; - SDK_AUTOLOAD_START = SDK_STATIC_END; - SDK_AUTOLOAD_SIZE = 0; - SDK_AUTOLOAD_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_AUTOLOAD__ID =; - SDK_AUTOLOAD..ID =; - SDK_AUTOLOAD..START =.; - SDK_AUTOLOAD..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_AUTOLOAD..SINIT_START = .; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_AUTOLOAD..SINIT_END = .; - #:::::::::: text/rodata - SDK_AUTOLOAD..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE BLOCK - # - . = ALIGN(32); - SDK_AUTOLOAD..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: data - SDK_AUTOLOAD..DATA_END =.; - . = ALIGN(32); - SDK_AUTOLOAD..END =.; - - SDK_AUTOLOAD..TEXT_SIZE = SDK_AUTOLOAD..TEXT_END - SDK_AUTOLOAD..TEXT_START; - SDK_AUTOLOAD..DATA_SIZE = SDK_AUTOLOAD..DATA_END - SDK_AUTOLOAD..DATA_START; - SDK_AUTOLOAD..SIZE = SDK_AUTOLOAD..END - SDK_AUTOLOAD..START; - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SDK_AUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL - - - # - # BSS BLOCK - # - SDK_AUTOLOAD..BSS_START = .; - #:::::::::: bss - - - - - - - - - - - - - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_AUTOLOAD..BSS_END = .; - - SDK_AUTOLOAD..BSS_SIZE = SDK_AUTOLOAD..BSS_END - SDK_AUTOLOAD..BSS_START; - - } >> - - - - SDK_AUTOLOAD_ITCM_START = SDK_AUTOLOAD.ITCM.START; - SDK_AUTOLOAD_ITCM_END = SDK_AUTOLOAD.ITCM.END; - SDK_AUTOLOAD_ITCM_BSS_END = SDK_AUTOLOAD.ITCM.BSS_END; - SDK_AUTOLOAD_ITCM_SIZE = SDK_AUTOLOAD.ITCM.SIZE; - SDK_AUTOLOAD_ITCM_BSS_SIZE = SDK_AUTOLOAD.ITCM.BSS_SIZE; - SDK_AUTOLOAD_DTCM_START = SDK_AUTOLOAD.DTCM.START; - SDK_AUTOLOAD_DTCM_END = SDK_AUTOLOAD.DTCM.END; - SDK_AUTOLOAD_DTCM_BSS_END = SDK_AUTOLOAD.DTCM.BSS_END; - SDK_AUTOLOAD_DTCM_SIZE = SDK_AUTOLOAD.DTCM.SIZE; - SDK_AUTOLOAD_DTCM_BSS_SIZE = SDK_AUTOLOAD.DTCM.BSS_SIZE; - - ############################ AUTOLOAD_INFO ########################## - .binary.AUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_AUTOLOAD..SIZE; - WRITEW SDK_AUTOLOAD..SINIT_START; - WRITEW SDK_AUTOLOAD..BSS_SIZE; - - - } > binary.AUTOLOAD_INFO - - SDK_AUTOLOAD_LIST = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE; - SDK_AUTOLOAD_LIST_END = SDK_AUTOLOAD_START + SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - SDK_AUTOLOAD_SIZE = SDK_AUTOLOAD_SIZE + SIZEOF(.binary.AUTOLOAD_INFO); - - ############################ STATIC_FOOTER ########################## - .binary.STATIC_FOOTER: - { - WRITEW 0xdec00621; # LE(0x2106C0DE) = NITRO CODE - WRITEW _start_ModuleParams - ADDR(.); - WRITEW SDK_OVERLAY_DIGEST - ADDR(.); - WRITEW _start_LtdModuleParams - ADDR(.); - } > binary.STATIC_FOOTER - - ############################ OVERLAYS ############################### - SDK_OVERLAY_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(32); # Fit to cache line - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # TEXT BLOCK: READ ONLY - # - SDK_OVERLAY__ID =; ### SEGMENT OVERLAY ID - SDK_OVERLAY..ID =; - SDK_OVERLAY..START =.; - SDK_OVERLAY..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_OVERLAY..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_OVERLAY..SINIT_END =.; - #:::::::::: text/rodata - SDK_OVERLAY..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(32); - SDK_OVERLAY..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_OVERLAY..DATA_END =.; - . = ALIGN(32); - SDK_OVERLAY..END =.; - - SDK_OVERLAY..TEXT_SIZE = SDK_OVERLAY..TEXT_END - SDK_OVERLAY..TEXT_START; - SDK_OVERLAY..DATA_SIZE = SDK_OVERLAY..DATA_END - SDK_OVERLAY..DATA_START; - SDK_OVERLAY..SIZE = SDK_OVERLAY..END - SDK_OVERLAY..START; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_OVERLAY..BSS_START = .; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_OVERLAY..BSS_END = .; - - SDK_OVERLAY..BSS_SIZE = SDK_OVERLAY..BSS_END - SDK_OVERLAY..BSS_START; - - } >> - - - - ############################ OVERLAYDEFS ############################ - .F: - { - ### module information - WRITEW ADDR(.); # load address - WRITEW _start; # entry address - WRITEW SDK_STATIC_SIZE + SDK_AUTOLOAD_SIZE; # size of module - WRITEW _start_AutoloadDoneCallback; # callback autoload done - - ### overlay filename - - WRITES (""); # Overlay - - - } > F - - ############################ OVERLAYTABLE ########################### - .F: - { - - WRITEW ; # overlay ID - WRITEW ADDR(.); # load address - WRITEW SDK_OVERLAY..SIZE; # size of module - WRITEW SDK_OVERLAY..BSS_SIZE; # size of bss - WRITEW SDK_OVERLAY..SINIT_START; # start address of static init - WRITEW SDK_OVERLAY..SINIT_END; # end address of static init - WRITEW ; # ROM file ID - WRITEW 0; # compressed state - - - } > F - - ############################ ARENA ################################## - .dummy.MAIN_EX.NITRO: - { - . = ALIGN(32); - - } > dummy.MAIN_EX.NITRO - - .arena.MAIN.NITRO: - { - . = ALIGN(32); - SDK_SECTION_ARENA_START =.; - - } > arena.MAIN.NITRO - - .arena.MAIN_EX.NITRO: - { - . = ALIGN(32); - SDK_SECTION_ARENA_EX_START =.; - - } > arena.MAIN_EX.NITRO - - .arena.ITCM: - { - . = ALIGN(32); - SDK_SECTION_ARENA_ITCM_START =.; - - } > arena.ITCM - - .arena.DTCM: - { - . = ALIGN(32); - SDK_SECTION_ARENA_DTCM_START =.; - - } > arena.DTCM - - ############################ OTHERS ################################# - SDK_MAIN_ARENA_LO = SDK_SECTION_ARENA_START; - SDK_IRQ_STACKSIZE = ; # allocated in DTCM - SDK_SYS_STACKSIZE = ; # when 0 means all remains of DTCM - SDK_SYS_STACKSIZE_SIGN = (SDK_SYS_STACKSIZE < 0x80000000) * 2 - 1; - - .check.ITCM: - { - . = . + SDK_AUTOLOAD_ITCM_SIZE + SDK_AUTOLOAD_ITCM_BSS_SIZE; - - . = . + SDK_OVERLAY..SIZE + SDK_OVERLAY..BSS_SIZE; - - - } > check.ITCM - - .check.DTCM: - { - . = . + SDK_AUTOLOAD_DTCM_SIZE + SDK_AUTOLOAD_DTCM_BSS_SIZE; - - . = . + SDK_OVERLAY..SIZE + SDK_OVERLAY..BSS_SIZE; - - . = . + 0x080 + SDK_IRQ_STACKSIZE + SDK_SYS_STACKSIZE * SDK_SYS_STACKSIZE_SIGN; - } > check.DTCM - - .check.MAIN.NITRO: - { - . = SDK_SECTION_ARENA_START; - - } > check.MAIN.NITRO - - ########################### LTDAUTOLOADS ############################ - SDK_LTDAUTOLOAD.LTDMAIN.START = SDK_STATIC_BSS_END; - SDK_LTDAUTOLOAD.LTDMAIN.END = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD.LTDMAIN.BSS_EDN = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD.LTDMAIN.SIZE = 0; - SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE = 0; - SDK_LTDAUTOLOAD_TOP_START = 0x02400000; - SDK_LTDAUTOLOAD_TOP_SIZE = 4; # STATIC —̈悪–³‚¢‘ã‚í‚è‚É 4 bytes ‚̃_ƒ~[‚ªƒoƒCƒiƒŠƒtƒ@ƒCƒ‹‚Ìæ“ª‚É“ü‚é # - SDK_LTDAUTOLOAD_START = SDK_LTDAUTOLOAD_TOP_START + SDK_LTDAUTOLOAD_TOP_SIZE; - SDK_LTDAUTOLOAD_SIZE = 0; - SDK_LTDAUTOLOAD_NUMBER = ; - - .binary.LTDAUTOLOAD_TOP: - { - WRITEW 0; - - } > binary.LTDAUTOLOAD_TOP - - - .: - { - ALIGNALL(4); - . = ALIGN(32); # Fit to cache line - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - SDK_LTDAUTOLOAD__ID =; - SDK_LTDAUTOLOAD..ID =; - SDK_LTDAUTOLOAD..START =.; - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDAUTOLOAD..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDAUTOLOAD..SINIT_START = .; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_LTDAUTOLOAD..SINIT_END = .; - #:::::::::: text/rodata - SDK_LTDAUTOLOAD..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(32); - SDK_LTDAUTOLOAD..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - - - - - - - #:::::::::: data - SDK_LTDAUTOLOAD..DATA_END =.; - . = ALIGN(32); - SDK_LTDAUTOLOAD..END =.; - - SDK_LTDAUTOLOAD..TEXT_SIZE = SDK_LTDAUTOLOAD..TEXT_END - SDK_LTDAUTOLOAD..TEXT_START; - SDK_LTDAUTOLOAD..DATA_SIZE = SDK_LTDAUTOLOAD..DATA_END - SDK_LTDAUTOLOAD..DATA_START; - SDK_LTDAUTOLOAD..SIZE = SDK_LTDAUTOLOAD..END - SDK_LTDAUTOLOAD..START; - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD..SIZE; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDAUTOLOAD..BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_LTDAUTOLOAD..BSS_END =.; - - SDK_LTDAUTOLOAD..BSS_SIZE = SDK_LTDAUTOLOAD..BSS_END - SDK_LTDAUTOLOAD..BSS_START; - - } >> - - - - SDK_LTDAUTOLOAD_LTDMAIN_START = SDK_LTDAUTOLOAD.LTDMAIN.START; - SDK_LTDAUTOLOAD_LTDMAIN_END = SDK_LTDAUTOLOAD.LTDMAIN.END; - SDK_LTDAUTOLOAD_LTDMAIN_BSS_END = SDK_LTDAUTOLOAD.LTDMAIN.BSS_END; - SDK_LTDAUTOLOAD_LTDMAIN_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.SIZE; - SDK_LTDAUTOLOAD_LTDMAIN_BSS_SIZE = SDK_LTDAUTOLOAD.LTDMAIN.BSS_SIZE; - - ######################### LTDAUTOLOAD_INFO ########################## - .binary.LTDAUTOLOAD_INFO: - { - - WRITEW ADDR(.); - WRITEW SDK_LTDAUTOLOAD..SIZE; - WRITEW SDK_LTDAUTOLOAD..SINIT_START; - WRITEW SDK_LTDAUTOLOAD..BSS_SIZE; - - - } > binary.LTDAUTOLOAD_INFO - - SDK_LTDAUTOLOAD_LIST = SDK_LTDAUTOLOAD_START + SDK_LTDAUTOLOAD_SIZE; - SDK_LTDAUTOLOAD_LIST_END = SDK_LTDAUTOLOAD_LIST + SIZEOF(.binary.LTDAUTOLOAD_INFO); - SDK_LTDAUTOLOAD_SIZE = SDK_LTDAUTOLOAD_SIZE + SIZEOF(.binary.LTDAUTOLOAD_INFO); - - ########################### LTDOVERLAYS ############################# - SDK_LTDOVERLAY_NUMBER = ; - - - .: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - SDK_LTDOVERLAY__ID =; - SDK_LTDOVERLAY..ID =; - SDK_LTDOVERLAY..START =.; - # - # TEXT BLOCK: READ ONLY - # - SDK_LTDOVERLAY..TEXT_START =.; - #:::::::::: text/rodata - - - - - - - - - - - - - - - - - - - . = ALIGN(4); - SDK_LTDOVERLAY..SINIT_START =.; - #:::::::::: ctor - - - - - - - - - - - - - WRITEW 0; - #:::::::::: ctor - SDK_LTDOVERLAY..SINIT_END =.; - #:::::::::: text/rodata - SDK_LTDOVERLAY..TEXT_END =.; - - # - # DATA BLOCK: READ WRITE - # - . = ALIGN(32); - SDK_LTDOVERLAY..DATA_START =.; - #:::::::::: data - - - - - - - - - - - - - #:::::::::: data - SDK_LTDOVERLAY..DATA_END =.; - . = ALIGN(32); - SDK_LTDOVERLAY..END =.; - - SDK_LTDOVERLAY..TEXT_SIZE = SDK_LTDOVERLAY..TEXT_END - SDK_LTDOVERLAY..TEXT_START; - SDK_LTDOVERLAY..DATA_SIZE = SDK_LTDOVERLAY..DATA_END - SDK_LTDOVERLAY..DATA_START; - SDK_LTDOVERLAY..SIZE = SDK_LTDOVERLAY..END - SDK_LTDOVERLAY..START; - - } > - - ..bss: - { - ALIGNALL(4); - . = ALIGN(32); - - # - # Definition to refer overlay segment, when same name symbols exist in multiple overlays. - # - - SEARCH_SYMBOL ; - - - # - # BSS BLOCK - # - SDK_LTDOVERLAY..BSS_START =.; - #:::::::::: bss - - - - - - - - - - - - - #:::::::::: bss - . = ALIGN(32); - SDK_LTDOVERLAY..BSS_END =.; - - SDK_LTDOVERLAY..BSS_SIZE = SDK_LTDOVERLAY..BSS_END - SDK_LTDOVERLAY..BSS_START; - - } >> - - - - ########################## LTDOVERLAYDEFS ########################### - .L: - { - ### TWL limited extended static module information - WRITEW SDK_LTDAUTOLOAD_TOP_START; # load address - WRITEW 0; # padding - WRITEW SDK_LTDAUTOLOAD_SIZE + SDK_LTDAUTOLOAD_TOP_SIZE; # size of module - WRITEW 0; # padding - - ### TWL limited overlay filename - - WRITES (""); - - - } > L - - ######################### LTDOVERLAYTABLE ########################### - .L: - { - - WRITEW ; # overlay ID - WRITEW ADDR(.); # load address - WRITEW SDK_LTDOVERLAY..SIZE; # size of module - WRITEW SDK_LTDOVERLAY..BSS_SIZE; # size of bss - WRITEW SDK_LTDOVERLAY..SINIT_START; # start address of static init - WRITEW SDK_LTDOVERLAY..SINIT_END; # end address of static init - WRITEW ; # ROM file ID - WRITEW 0; # compressed state - - - } > L - - ############################ ARENA ################################## - .dummy.MAIN_EX.TWL: - { - . = ALIGN(32); - - } > dummy.MAIN_EX.TWL - - .arena.MAIN.TWL: - { - . = ALIGN(32); - SDK_LTDMAIN_ARENA_LO =.; - - } > arena.MAIN.TWL - - .arena.MAIN_EX.TWL: - { - . = ALIGN(32); - SDK_LTDMAIN_EX_ARENA_LO =.; - - } > arena.MAIN_EX.TWL - - .check.MAIN.TWL: - { - . = SDK_LTDMAIN_ARENA_LO; - - } > check.MAIN.TWL - - ############################ OTHERS ################################# - # Module filelist - .binary.MODULE_FILES: - { - WRITES (""); - WRITES (""); - WRITES (""); - WRITES (""); - WRITES (""); - WRITES (""); - - } > binary.MODULE_FILES - -} diff --git a/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lsf b/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lsf deleted file mode 100644 index b4de7a96..00000000 --- a/build/tests/SimpleBenchmark/ARM9/ARM9-TS.lsf +++ /dev/null @@ -1,53 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ARM9-BB.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL LCF SPEC FILE -# - -Static $(TARGET_NAME) -{ - Address 0x02680200 - Object $(OBJS_STATIC) - Library $(LLIBS) $(GLIBS) $(CW_LIBS) -} - -Autoload ITCM -{ - Address 0x01ff8000 - Object * (.itcm) - Object $(OBJS_AUTOLOAD) (.text) - Object $(OBJS_AUTOLOAD) (.rodata) -} - -Autoload DTCM -{ - Address $(ADDRESS_DTCM) - Object * (.dtcm) - Object $(OBJS_AUTOLOAD) (.data) - Object $(OBJS_AUTOLOAD) (.sdata) - Object $(OBJS_AUTOLOAD) (.bss) - Object $(OBJS_AUTOLOAD) (.sbss) -} - -Ltdautoload LTDMAIN -{ - # NITRO/TWL ‹¤—L‚̃I[ƒo[ƒŒƒC‚ªÝ‚éꇂÍA‚³‚ç‚É‚»‚ÌŒã‚ë‚É”z’u‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - After $(TARGET_NAME) - Object * (.ltdmain) - Object $(OBJS_LTDAUTOLOAD) - Library $(LLIBS_EX) $(GLIBS_EX) -} diff --git a/build/tests/SimpleBenchmark/ARM9/Makefile b/build/tests/SimpleBenchmark/ARM9/Makefile deleted file mode 100644 index 4144a38b..00000000 --- a/build/tests/SimpleBenchmark/ARM9/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/commondefs - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/tests/RelocateChecker/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/SimpleBenchmark/ARM9/Makefile.0 b/build/tests/SimpleBenchmark/ARM9/Makefile.0 deleted file mode 100644 index fcfff216..00000000 --- a/build/tests/SimpleBenchmark/ARM9/Makefile.0 +++ /dev/null @@ -1,77 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- -# ƒRƒ“ƒ|[ƒlƒ“ƒg‘I‘ð ( jackal ) - -export DEFAULT_COMP_ARM7 = jackal - -COMPONENT_DIR = $(TWL_IPL_RED_ROOT)/build/components/$(DEFAULT_COMP_ARM7).TWL -WRAM_MAP_FILE = $(COMPONENT_DIR)/wram_regs/wram_regs.rbin - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 0 -TARGET_NAME = SimpleBenchmark$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TARGET_BIN = $(TARGET_NAME).tad -LCFILE_SPEC = ARM9-TS.lsf -LCFILE_TEMPLATE = ARM9-TS.lcf.template - -TITLEID_LO = SB$(TARGET_NUMBER)A - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c SimpleBenchmark.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LLIBRARIES = libhotsw$(TWL_LIBSUFFIX).a - -LINCLUDES = $(MISC_DIR)/include - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) -ADDRESS_DTCM = 0x0e000000 - -MAKEROM_FLAGS += -DWRAM_MAP_FILE='$(WRAM_MAP_FILE)' -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/SimpleBenchmark/ARM9/Makefile.1 b/build/tests/SimpleBenchmark/ARM9/Makefile.1 deleted file mode 100644 index c9ab05b9..00000000 --- a/build/tests/SimpleBenchmark/ARM9/Makefile.1 +++ /dev/null @@ -1,64 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - simpleShoot-1 -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- - -TWL_NANDAPP = TRUE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -TARGET_NUMBER = 1 -TARGET_NAME = SimpleBenchmark$(TARGET_NUMBER) -BINDIR = ./bin/$(TWL_BUILDTYPE)/$(TARGET_NAME) -TITLEID_LO = SB$(TARGET_NUMBER)A -TARGET_BIN = $(TARGET_NAME).tad - -ROM_SPEC = main$(TARGET_NUMBER).rsf - -MISC_DIR = ../../../systemMenu_RED/misc - -SRCS = main.c SimpleBenchmark.c \ - $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c - -LINCLUDES = $(MISC_DIR)/include - -LLIBRARIES = libhotsw$(TWL_LIBSUFFIX).a - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' -#MAKETAD_FLAGS += -s - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = $(TARGET_TAD) - -#---------------------------------------------------------------------------- - -do-build : $(TARGETS) - - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- - -#===== End of Makefile ===== diff --git a/build/tests/SimpleBenchmark/ARM9/main0.rsf b/build/tests/SimpleBenchmark/ARM9/main0.rsf deleted file mode 100644 index 7b576398..00000000 --- a/build/tests/SimpleBenchmark/ARM9/main0.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_0.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMappingDirect $(WRAM_MAP_FILE) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - #NANDAccess FALSE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/SimpleBenchmark/ARM9/main1.rsf b/build/tests/SimpleBenchmark/ARM9/main1.rsf deleted file mode 100644 index 8045315d..00000000 --- a/build/tests/SimpleBenchmark/ARM9/main1.rsf +++ /dev/null @@ -1,204 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner_1.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - #SDCardAccess FALSE - - # - # NandAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - #AppType SYSTEM - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - #Media GameCard - Media NAND - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure TRUE - Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot ../../../systemMenu_RED/data - Root /data - File NTR_IPL_font_m.NFTR -} diff --git a/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.c b/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.c deleted file mode 100644 index 95ad3985..00000000 --- a/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.c +++ /dev/null @@ -1,119 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: DS_Chat.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "misc.h" -#include "SimpleBenchmark.h" - -// define data------------------------------------------ -#define RETURN_BUTTON_TOP_X 2 -#define RETURN_BUTTON_TOP_Y 21 -#define RETURN_BUTTON_BOTTOM_X ( RETURN_BUTTON_TOP_X + 8 ) -#define RETURN_BUTTON_BOTTOM_Y ( RETURN_BUTTON_TOP_Y + 2 ) - -// extern data------------------------------------------ - -// function's prototype declaration--------------------- - -// global variable ------------------------------------- -RTCDrawProperty g_rtcDraw = { - TRUE, RTC_DATE_TOP_X, RTC_DATE_TOP_Y, RTC_TIME_TOP_X, RTC_TIME_TOP_Y -}; - -// ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̉Šú‰» -void SimpleBenchmarkInit( void ) -{ - OS_InitTick(); - - - if( (u32)OS_GetTitleId() == 0x53423041 ) //SB0A - { - HOTSW_Init(); - } - - GX_DispOff(); - GXS_DispOff(); - - GetAndDrawRTCData( &g_rtcDraw, TRUE ); - - GXS_SetVisiblePlane( GX_PLANEMASK_BG0 ); - GX_DispOn(); - GXS_DispOn(); -} - - -// ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̃ƒCƒ“ƒ‹[ƒv -void SimpleBenchmarkMain(void) -{ - BOOL tp_cancel = FALSE; - OSTick ot; - static u64 tm = 0; - - ReadTP(); // ƒ^ƒbƒ`ƒpƒlƒ‹“ü—͂̎擾 - - // [RETURN]ƒ{ƒ^ƒ“‰Ÿ‰ºƒ`ƒFƒbƒN - if(tpd.disp.touch) { - tp_cancel = WithinRangeTP( RETURN_BUTTON_TOP_X * 8, RETURN_BUTTON_TOP_Y * 8 - 4, - RETURN_BUTTON_BOTTOM_X * 8, RETURN_BUTTON_BOTTOM_Y * 8 - 4, &tpd.disp ); - } - - - ot = OS_GetTick(); - NNS_G2dCharCanvasClear( &gCanvas, TXT_COLOR_WHITE ); - PrintfSJIS( 0 * 8, 0 * 8, TXT_COLOR_RED, "%d\n",tm); - PutStringUTF16( 1 * 8, 2 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 3 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 4 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 5 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 6 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 7 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 8 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 9 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 10 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 11 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 12 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 13 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 14 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 15 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 16 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 17 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 18 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 19 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 20 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 21 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - PutStringUTF16( 1 * 8, 22 * 8, TXT_COLOR_BLUE, (const u16 *)L"SimpleBenchmarkTestSimpleBenchmarkTest"); - ot = OS_GetTick()-ot; - - tm = OS_TicksToMicroSeconds(ot); - - OS_TPrintf("%d\n", tm); - - if( ( pad.trg & PAD_BUTTON_A ) ) { - } - - if( ( pad.trg & PAD_BUTTON_X ) ) { - } - - if( ( pad.trg & PAD_BUTTON_B ) || tp_cancel ) { -// SYSM_RebootLauncher(); - } - - GetAndDrawRTCData( &g_rtcDraw, FALSE ); -} - - diff --git a/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.h b/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.h deleted file mode 100644 index c62094e6..00000000 --- a/build/tests/SimpleBenchmark/ARM9/src/SimpleBenchmark.h +++ /dev/null @@ -1,36 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: RomTypeTest.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __SIMPLE_BENCHMARK_H__ -#define __SIMPLE_BENCHMARK_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -// define data---------------------------------------------------------- - -void SimpleBenchmarkInit( void ); -void SimpleBenchmarkMain( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __SIMPLE_BENCHMARK_H__ diff --git a/build/tests/SimpleBenchmark/ARM9/src/main.c b/build/tests/SimpleBenchmark/ARM9/src/main.c deleted file mode 100644 index 7bac66bc..00000000 --- a/build/tests/SimpleBenchmark/ARM9/src/main.c +++ /dev/null @@ -1,86 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "misc.h" -#include "SimpleBenchmark.h" - -// extern data----------------------------------------------------------------- - -// define data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -static void INTR_VBlank( void ); - -// global variable------------------------------------------------------------- - -// static variable------------------------------------------------------------- - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// function's description -// ============================================================================ -void TwlMain(void) -{ - - // ‰Šú‰»---------------------------------- - OS_Init(); - - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - GX_Init(); - GX_SetPower(GX_POWER_ALL); // ŠeƒƒWƒbƒN ƒpƒ[ON - - // Š„‚螂݋–‰Â---------------------------- - (void)OS_SetIrqFunction(OS_IE_V_BLANK, INTR_VBlank); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - - // ƒfƒoƒCƒX‰Šú‰»------------------------------- - TP_Init(); - (void)RTC_Init(); - - // ƒVƒXƒeƒ€‚̉Šú‰»------------------ - InitAllocator(); - - InitBG(); - SimpleBenchmarkInit(); - // ƒƒCƒ“ƒ‹[ƒv---------------------------- - while(1){ - OS_WaitIrq(1, OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„‚螂ݑ҂¿ - - ReadKeyPad(); // ƒL[“ü—͂̎擾 - ReadTP(); // TP“ü—͂̎擾 - - SimpleBenchmarkMain(); - } -} - - -// ============================================================================ -// Š„‚螂݈— -// ============================================================================ - -// Vƒuƒ‰ƒ“ƒNŠ„‚èž‚Ý -static void INTR_VBlank(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // Vƒuƒ‰ƒ“ƒNŠ„žƒ`ƒFƒbƒN‚̃Zƒbƒg -} - diff --git a/build/tests/SimpleBenchmark/Makefile b/build/tests/SimpleBenchmark/Makefile deleted file mode 100644 index 66754bca..00000000 --- a/build/tests/SimpleBenchmark/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = banner ARM9 - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/SimpleBenchmark/banner/Makefile b/build/tests/SimpleBenchmark/banner/Makefile deleted file mode 100644 index a11fb47a..00000000 --- a/build/tests/SimpleBenchmark/banner/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -SUBDIRS = -SUBMAKES = Makefile.0 Makefile.1 - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - - -# diff --git a/build/tests/SimpleBenchmark/banner/Makefile.0 b/build/tests/SimpleBenchmark/banner/Makefile.0 deleted file mode 100644 index 97c32d52..00000000 --- a/build/tests/SimpleBenchmark/banner/Makefile.0 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 0 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/SimpleBenchmark/banner/Makefile.1 b/build/tests/SimpleBenchmark/banner/Makefile.1 deleted file mode 100644 index 54f8cd07..00000000 --- a/build/tests/SimpleBenchmark/banner/Makefile.1 +++ /dev/null @@ -1,48 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -BNRNUM = 1 - -ICON_DIR = ./icon - -BANNER_SPEC = test-utf16_$(BNRNUM)_v3.TWL.bsf - -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe - -TARGETS = banner_$(BNRNUM).bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) - $(MAKEBANNER) -p TWL $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/SimpleBenchmark/banner/banner_v3.bsf b/build/tests/SimpleBenchmark/banner/banner_v3.bsf deleted file mode 100644 index d595b6d3..00000000 Binary files a/build/tests/SimpleBenchmark/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/SimpleBenchmark/banner/icon/gameIcon.bmp b/build/tests/SimpleBenchmark/banner/icon/gameIcon.bmp deleted file mode 100644 index 5fe5ee2c..00000000 Binary files a/build/tests/SimpleBenchmark/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/SimpleBenchmark/banner/icon/msk_pictchat_icon.bin b/build/tests/SimpleBenchmark/banner/icon/msk_pictchat_icon.bin deleted file mode 100644 index 5b2734aa..00000000 Binary files a/build/tests/SimpleBenchmark/banner/icon/msk_pictchat_icon.bin and /dev/null differ diff --git a/build/tests/SimpleBenchmark/banner/test-utf16_0_v3.TWL.bsf b/build/tests/SimpleBenchmark/banner/test-utf16_0_v3.TWL.bsf deleted file mode 100644 index f59e3078..00000000 Binary files a/build/tests/SimpleBenchmark/banner/test-utf16_0_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/SimpleBenchmark/banner/test-utf16_1_v3.TWL.bsf b/build/tests/SimpleBenchmark/banner/test-utf16_1_v3.TWL.bsf deleted file mode 100644 index 462ba007..00000000 Binary files a/build/tests/SimpleBenchmark/banner/test-utf16_1_v3.TWL.bsf and /dev/null differ diff --git a/build/tests/TestComponent/ARM7.TWL/Makefile b/build/tests/TestComponent/ARM7.TWL/Makefile deleted file mode 100644 index da5bad5c..00000000 --- a/build/tests/TestComponent/ARM7.TWL/Makefile +++ /dev/null @@ -1,103 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TWL_PROC = ARM7 -override TWL_ARCHGEN = LIMITED -##override TWL_PLATFORM = TS -TWL_NO_STD_PCHDR = True -override TARGET_CODEGEN = ARM - -TARGET_FIRM = SYSTEMMENU - -ifndef TWLSDK_NOCRYPTO -#---------------------------------------------------------------------------- - -SRCS = crt0.SCFG_NOLOCK.c \ - main.c \ - kami_pxi.c \ - formatter.c \ - mcu_firm.c - -TARGET_NAME = armadillo - -TARGET_NEF = $(TARGET_NAME).tef -LCFILE_SPEC = $(TARGET_NAME).lsf -LCFILE_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).lcf.template -LDRES_TEMPLATE = $(ROOT)/build/components/$(TARGET_NAME).TWL/$(TARGET_NAME).response.template - -CRT0_O = crt0.SCFG_NOLOCK.o - -# ƒXƒ^ƒbƒN•s‘«–hŽ~‚̈×AƒCƒ“ƒ‰ƒCƒ““WŠJ‚¹‚¸‚ɃRƒ“ƒpƒCƒ‹‚·‚é -CCFLAGS_OPT = -O4 -inline off - -#---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -MACRO_FLAGS += -DSDK_ARM7COMP_LTD -DSDK_SEA -DSDK_NOINIT - -MAKELCF_FLAGS += -DISDBG_LIBS_TWL='$(if $(ISDBG_LIBS_TWL),$(ISDBG_LIBS_TWL),libstubsistd_sp$(TWL_LIBSUFFIX).a)' \ - -DISDBG_LIBS_NITRO='libstubsisd_sp$(TWL_LIBSUFFIX).a' - -LINCLUDES += $(ROOT)/build/libraries/spi/ARM7/include \ - $(ROOT)/build/libraries/os/common/include \ - $(TWL_IPL_RED_ROOT)/include \ - ../common/include \ - $(ROOT)/build/libraries/init/common/include \ - $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/common/ARM7/include \ - $(ROOT)/build/libraries/fatfs/ARM7.TWL/include \ - $(ROOT)/build/libraries/fatfs/ARM7.TWL/include/fatfs \ - $(ROOT)/build/libraries/fatfs/ARM7.TWL/include/twl/fatfs/ARM7 - -SRCDIR += ../../../systemMenu_tools/common/ARM7/src - -LLIBRARY_DIRS += $(TWL_IPL_RED_ROOT)/lib/ARM7-TS/$(TWL_BUILD_DIR) \ - ./obj/ARM7-TS.LTD/$(TWL_BUILD_DIR) - -LLIBRARIES += libwl_sp$(TWL_LIBSUFFIX).a \ - libsdio_sp$(TWL_LIBSUFFIX).a \ - libathdrv_sp$(TWL_LIBSUFFIX).a \ - libwpa_sp$(TWL_LIBSUFFIX).a \ - libhotsw_sp$(TWL_LIBSUFFIX).a \ - libreloc_info_sp$(TWL_LIBSUFFIX).a - -LLIBRARIES += libpm_sp.SYSMENU$(TWL_LIBSUFFIX).a -GLIBRARIES := $(filter-out libpm_sp$(TWL_LIBSUFFIX).a,$(GLIBRARIES)) - -LDEPENDS_NEF = $(TWL_LIBS) $(LLIBRARIES) - -#-------------------------------- -# install target -#-------------------------------- -INSTALL_TARGETS = $(BINDIR)/$(TARGET_NAME).tef \ - $(BINDIR)/$(TARGET_NAME).TWL.FLX.sbin \ - $(BINDIR)/$(TARGET_NAME)_defs.TWL.FLX.sbin \ - $(BINDIR)/$(TARGET_NAME).TWL.LTD.sbin \ - $(BINDIR)/$(TARGET_NAME)_defs.TWL.LTD.sbin - -INSTALL_DIR = $(SYSMENU_COMPONENTSDIR)/$(TARGET_NAME)_uji/$(TWL_BUILDTYPE) - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -endif #ifndef TWLSDK_NOCRYPTO - -#===== End of Makefile ===== diff --git a/build/tests/TestComponent/ARM7.TWL/armadillo.lsf b/build/tests/TestComponent/ARM7.TWL/armadillo.lsf deleted file mode 100644 index abe99fa6..00000000 --- a/build/tests/TestComponent/ARM7.TWL/armadillo.lsf +++ /dev/null @@ -1,89 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - armadillo.TWL -# File: armadillo.lsf -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# Nitro LCF SPEC FILE -# -#-------- -Static $(TARGET_NAME) -{ - Address 0x02380000 - StackSize 1024 1024 - - Library $(CRT0_O) -} - -#-------- -Ltdautoload SCRWRAM -{ - Address 0x03740000 - - Library libsubpsyscall.a - Library libsyscall_sp.twl.a - Library $(CW_LIBS) - Library $(ISDBG_LIBS_TWL) - Library $(ISDBG_LIBS_NITRO) - - Object * (.etable) - Object $(OBJDIR)/main.o - Object $(OBJDIR)/kami_pxi.o - Object $(OBJDIR)/formatter.o - Object $(OBJDIR)/mcu_firm.o - - Library libsea_sp$(LIBSUFFIX).a - Library libcrypto_sp$(LIBSUFFIX).a - - Library libos_sp$(LIBSUFFIX).a - Library libmi_sp$(LIBSUFFIX).a - Library libstd_sp$(LIBSUFFIX).a - Library libmath_sp$(LIBSUFFIX).a - Library libpxi_sp$(LIBSUFFIX).a - Library libexi_sp$(LIBSUFFIX).a - Library libi2c_sp$(LIBSUFFIX).a - Library libsdio_sp$(LIBSUFFIX).a - Library libpad_sp$(LIBSUFFIX).a - Library libscfg_sp$(LIBSUFFIX).a - Library libmcu_sp$(LIBSUFFIX).a - Library libcdc_sp$(LIBSUFFIX).a - Library libsnd_sp$(LIBSUFFIX).a - Library libsndex_sp$(LIBSUFFIX).a - Library libspi_sp$(LIBSUFFIX).a - Library libpm_sp.SYSMENU$(LIBSUFFIX).a - Library libtp_sp$(LIBSUFFIX).a - Library libtpex_sp$(LIBSUFFIX).a - Library libmic_sp$(LIBSUFFIX).a - Library libmicex_sp$(LIBSUFFIX).a - Library libnvram_sp$(LIBSUFFIX).a - Library librtc_sp$(LIBSUFFIX).a - Library libfatfs_sp$(LIBSUFFIX).a - Library libwm_sp$(LIBSUFFIX).a - Library libnwm_sp$(LIBSUFFIX).a - Library libwvr_sp$(LIBSUFFIX).a - Library libwl_sp$(LIBSUFFIX).a - Library libwpa_sp$(LIBSUFFIX).a - Library libathdrv_sp$(LIBSUFFIX).a - Library libfs_sp$(LIBSUFFIX).a - Library libcard_sp$(LIBSUFFIX).a - Library libcamera_sp$(LIBSUFFIX).a - Library libhotsw_sp$(LIBSUFFIX).a - Library libreloc_info_sp$(LIBSUFFIX).a - - Object * (.wram) - Object * (.ltdwram) - Object * (.rsvwram) - Object * (.main) - Object * (.ltdmain) -} diff --git a/build/tests/TestComponent/ARM7.TWL/include/kami_pxi.h b/build/tests/TestComponent/ARM7.TWL/include/kami_pxi.h deleted file mode 100644 index cbce8090..00000000 --- a/build/tests/TestComponent/ARM7.TWL/include/kami_pxi.h +++ /dev/null @@ -1,44 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef TWL_CAMERA_TEST_CAMERATEST_H_ -#define TWL_CAMERA_TEST_CAMERATEST_H_ - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -void KamiPxiInit( void ); - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_CAMERA_TEST_CAMERATEST_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM7.TWL/src/crt0.SCFG_NOLOCK.c b/build/tests/TestComponent/ARM7.TWL/src/crt0.SCFG_NOLOCK.c deleted file mode 100644 index 84ea2ede..00000000 --- a/build/tests/TestComponent/ARM7.TWL/src/crt0.SCFG_NOLOCK.c +++ /dev/null @@ -1,798 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - libraries - init - ARM7.TWL - File: crt0.SCR.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#ifndef SDK_FINALROM -#include -#endif -#include "boot_sync.h" - -/*---------------------------------------------------------------------------*/ -void _start(void); -void _start_AutoloadDoneCallback(void* argv[]); - -/*---------------------------------------------------------------------------* - ŠO•”ŽQÆ - *---------------------------------------------------------------------------*/ -/* ƒŠƒ“ƒJƒXƒNƒŠƒvƒg‚É‚æ‚è’è‹`‚³‚ê‚éƒVƒ“ƒ{ƒ‹ŽQÆ */ -extern void SDK_AUTOLOAD_LIST(void); -extern void SDK_AUTOLOAD_LIST_END(void); -extern void SDK_AUTOLOAD_START(void); -extern void SDK_STATIC_START(void); -extern void SDK_STATIC_BSS_START(void); -extern void SDK_STATIC_BSS_END(void); -extern void SDK_LTDAUTOLOAD_LIST(void); -extern void SDK_LTDAUTOLOAD_LIST_END(void); -extern void SDK_LTDAUTOLOAD_START(void); -extern void SDK_WRAM_ARENA_LO(void); - -/* ŠO•”ŠÖ”ŽQÆ */ -extern void OS_IrqHandler(void); -#ifndef SDK_NOINIT -extern void _fp_init(void); -extern void __call_static_initializers(void); -#endif - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -#define SDK_NITROCODE_LE 0x2106c0de -#define SDK_NITROCODE_BE 0xdec00621 -#define SDK_TWLCODE_LE 0x6314c0de -#define SDK_TWLCODE_BE 0xdec01463 - -/* .rodata ƒZƒNƒVƒ‡ƒ“‚É”z’u‚·‚éƒ[ƒh‚É•K—v‚Èî•ñ */ -void* const _start_ModuleParams[] = -{ - (void*)0, - (void*)0, - (void*)0, - (void*)SDK_STATIC_BSS_START, - (void*)SDK_STATIC_BSS_END, - (void*)0, - (void*)0, - (void*)SDK_NITROCODE_BE, - (void*)SDK_NITROCODE_LE, -}; - -void* const _start_LtdModuleParams[] = -{ - (void*)SDK_LTDAUTOLOAD_LIST, - (void*)SDK_LTDAUTOLOAD_LIST_END, - (void*)SDK_LTDAUTOLOAD_START, - (void*)0, - (void*)SDK_TWLCODE_BE, - (void*)SDK_TWLCODE_LE, -}; - -/*---------------------------------------------------------------------------* - Name: ShakeHand - Description: ARM9 ‚Ì ShakeHand ŠÖ”‚Æ“¯Šú‚ðŽæ‚éB - ƒƒCƒ“ƒƒ‚ƒŠ‚łȂ¢ƒƒ‚ƒŠ‹óŠÔ‚ÅŽÀs‚³‚ê‚é•K—v‚ª‚ ‚éB - Arguments: r0 - ARM9 “¯Šú—p•Ï”‚ւ̃|ƒCƒ“ƒ^B - r1 - ARM7 “¯Šú—p•Ï”‚ւ̃|ƒCƒ“ƒ^B - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_ShakeHand[10] = -{ - 0xe1d020b0, /* ldrh r2, [r0] ; “¯Šú•Ï”‚X‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe1d130b0, /* ldrh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe2833001, /* @1: add r3, r3, #1 ; “¯Šú•Ï”‚V ++ */ - 0xe1c130b0, /* strh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚­ */ - 0xe1d0c0b0, /* ldrh r12, [r0] ; “¯Šú•Ï”‚X‚ÌŒ»ó‚ð‹¤—Lƒƒ‚ƒŠ‚©‚ç“Ç‚Þ */ - 0xe152000c, /* cmp r2, r12 ; “¯Šú•Ï”‚X‚̕ω»‚ð”»’è‚·‚é */ - 0x0afffffa, /* beq @1 ; •ω»‚µ‚Ä‚¢‚È‚¯‚ê‚΃‹[ƒv */ - 0xe2833001, /* add r3, r3, #1 ; “¯Šú•Ï”‚V ++ */ - 0xe1c130b0, /* strh r3, [r1] ; “¯Šú•Ï”‚V‚ð‹¤—Lƒƒ‚ƒŠ‚É‘‚­ */ - 0xe12fff1e /* bx lr ; ƒnƒ“ƒhƒVƒFƒCƒNŠ®—¹ */ -}; - -/*---------------------------------------------------------------------------* - Name: Stop - Description: ƒvƒƒOƒ‰ƒ€‚ð’âŽ~‚·‚éB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_Stop[2] = -{ - 0xef000006, /* @1: swi #6 ; SVC_Halt */ - 0xeafffffd /* b @1 ; ƒ‹[ƒv */ -}; - -/*---------------------------------------------------------------------------* - Name: GotoMain - Description: ARM9 ‚É“Á’è‚Ìó‘ԂɂȂÁ‚½‚±‚Æ‚ð“`‚¦‚½ã‚ÅAMain ŠÖ”‚ÖƒWƒƒƒ“ƒv - ‚·‚éB“¯Žž‚ÉŽw’èƒoƒbƒtƒ@‚Ì 0 ƒNƒŠƒA‚ðs‚¤BƒXƒ^ƒbƒN“à‚Å“®ì‚³‚¹ - ‚邱‚Æ‚ð‘z’肵‚Ä‚¢‚éˆ×AƒXƒ^ƒbƒN‚ðˆêØŽg—p‚µ‚È‚¢B - Arguments: r0 - 0 ƒNƒŠƒA‚·‚éƒoƒbƒtƒ@‚Ìæ“ªƒAƒhƒŒƒXB - 4 ƒoƒCƒgƒAƒ‰ƒCƒ“‚³‚ꂽƒAƒhƒŒƒX‚Å‚ ‚é•K—v‚ª‚ ‚éB - r1 - ãˆÊ 8 bit: ARM9 ‚É“`‚¦‚éƒtƒF[ƒY”Ô†B - ‰ºˆÊ 24 bit: 0 ƒNƒŠƒA‚·‚éƒoƒbƒtƒ@‚̃TƒCƒYB - 4 ‚Ì”{”‚Å‚ ‚é•K—v‚ª‚ ‚éB - r2 - “¯Šú—pƒtƒF[ƒYŠÇ—•Ï”‚ւ̃|ƒCƒ“ƒ^B - r3 - Main ŠÖ”‚̃|ƒCƒ“ƒ^BMain ŠÖ”‚ª Thumb ƒR[ƒh‚Å‚ ‚éê‡ - ‚É‚ÍAbx –½—߂ŃWƒƒƒ“ƒv‚·‚邽‚ßʼnºˆÊƒrƒbƒg‚ª 1 ‚ɂȂÁ‚Ä - ‚¢‚é•K—v‚ª‚ ‚éB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static const u32 microcode_GotoMain[10] = -{ - 0xe59fc01c, /* @1: ldr r12, [pc, #28] ; ‰ºˆÊ 24 bit ƒ}ƒXƒN‚ð—pˆÓ */ - 0xe111000c, /* tst r1, r12 ; ƒNƒŠƒAƒoƒbƒtƒ@ŽcƒTƒCƒY‚ðƒ`ƒFƒbƒN */ - 0xe3a0c000, /* mov r12, #0 ; ƒNƒŠƒA—p•Ï”‚ð—pˆÓ */ - 0x1480c004, /* strne r12, [r0], #4 ; 4 ƒoƒCƒgƒNƒŠƒA */ - 0x12411004, /* subne r1, r1, #4 ; ƒNƒŠƒAƒoƒbƒtƒ@ŽcƒTƒCƒY -= 4 */ - 0x1afffff9, /* bne @1 ; ŽcƒTƒCƒY‚ª 0 ‚ɂȂé‚܂Ń‹[ƒv */ - 0xe1a01c21, /* mov r1, r1, LSR #24 ; ƒtƒF[ƒYŠÇ—•Ï”‚ÌXV’l‚ð—pˆÓ */ - 0xe1c210b0, /* strh r1, [r2] ; ƒtƒF[ƒYŠÇ—•Ï”‚ðXV */ - 0xe12fff13, /* bx r3 ; Main ŠÖ”‚ÖƒWƒƒƒ“ƒv */ - 0x00fffffc /* 0x00fffffc */ -}; - - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”ƒvƒƒgƒ^ƒCƒv - *---------------------------------------------------------------------------*/ -static void INITi_CheckSysConfig(void); -static void INITi_DetectMainMemorySize(void); -static void INITi_Stop(void); -static void INITi_DoAutoload(void); -#ifndef SDK_NOINIT -static void INITi_ShelterStaticInitializer(u32* ptr); -static void INITi_CallStaticInitializers(void); -#endif - -static void* INITi_Copy32(void* dst, void* src, u32 size); -static void* INITi_Fill32(void* dst, u32 value, u32 size); - -/*---------------------------------------------------------------------------*/ -#include - -/*---------------------------------------------------------------------------* - Name: _start - Description: ‹N“®ƒxƒNƒ^B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start(void) -{ -@000: - /* Š„ž‚݋֎~ */ - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - - /* SCFG Ý’è‚ðŠm”F */ - bl INITi_CheckSysConfig - - /* ƒvƒŠƒ[ƒhƒpƒ‰ƒ[ƒ^ƒAƒhƒŒƒX‚ªŠi”[‚³‚ê‚Ä‚¢‚È‚¢ê‡‚ÍAƒfƒtƒHƒ‹ƒg’l‚ðƒZƒbƒg */ - ldr r0, =HW_PRELOAD_PARAMETER_ADDR - ldr r1, [r0] - cmp r1, #0 - ldreq r1, =HW_PARAM_TWL_SETTINGS_DATA_DEFAULT - streq r1, [r0] - - /* ƒ‰ƒ“ƒ`ƒƒ[‚©‚ç“n‚³‚ꂽî•ñ‚ð‘Þ”ð */ - ldr r3, =SDK_WRAM_ARENA_LO - sub r2, r3, #0x40 - ldr r1, =HW_LAUNCHER_DELIVER_PARAM_BUF -@001: - cmp r2, r3 - ldrlt r0, [r1], #4 - strlt r0, [r2], #4 - blt @001 - - - /* ƒnƒ“ƒhƒVƒFƒCƒN—pƒ}ƒCƒNƒƒR[ƒh‚ðê—p WRAM ‚ɃRƒs[ */ - ldr r1, =microcode_ShakeHand - ldr r2, =HW_PRV_WRAM - add r3, r2, #40 // sizeof(microcode_ShakeHand) -@002: ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @002 - - /* ê—p WRAM ã‚̃R[ƒh‚Å ARM9 ‚ƃnƒ“ƒhƒVƒFƒCƒN */ - ldr r0, =HW_BOOT_SHAKEHAND_9 - ldr r1, =HW_BOOT_SHAKEHAND_7 - ldr r2, =HW_PRV_WRAM - mov lr, pc - bx r2 - -@010: - /* ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^Ý’è */ - mov r0, #HW_PSR_SVC_MODE // SuperVisor mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_SVC_STACK_END - mov r0, #HW_PSR_IRQ_MODE // IRQ mode - msr cpsr_c, r0 - ldr sp, =HW_PRV_WRAM_IRQ_STACK_END - ldr r1, =SDK_IRQ_STACKSIZE - sub r1, sp, r1 - sub sp, sp, #4 // 4 bytes for IRQ stack check code - mov r0, #HW_PSR_SYS_MODE // System mode - msr cpsr_csfx, r0 - sub sp, r1, #4 // 4 bytes for SYS stack check code - - /* ƒXƒ^ƒbƒN—̈æ‚ðƒNƒŠƒA */ - ldr r0, =SDK_SYS_STACKSIZE - sub r1, r1, r0 - ldr r2, =HW_PRV_WRAM_IRQ_STACK_END - mov r0, #0 -@011: cmp r1, r2 - strlt r0, [r1], #4 - blt @011 - - /* Autoload ‚ðŽÀŽ{ */ - bl INITi_DoAutoload - - /* STATIC ƒZƒOƒƒ“ƒg‚Ì .bss ƒZƒNƒVƒ‡ƒ“‚ð 0 ƒNƒŠƒA */ - mov r1, #0 // r1 = clear value for STATIC bss section - ldr r3, =_start_ModuleParams - ldr r0, [r3, #12] // r0 = start address of STATIC bss section - ldr r2, [r3, #16] - subs r2, r2, r0 // r2 = size of STATIC bss section - blgt INITi_Fill32 - - /* ƒƒCƒ“ƒƒ‚ƒŠƒTƒCƒY‚𒲸 */ - bl INITi_DetectMainMemorySize - -#ifndef SDK_FINALROM - /* ƒfƒoƒbƒOo—̓EƒBƒ“ƒhƒE‚ðÝ’è */ - ldr r1, =HW_PRINT_OUTPUT_ARM9 - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9 - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7 << 8) - strh r0, [r1] - mov r0, #OS_PRINT_OUTPUT_DEFAULT_ARM9ERR - orr r0, r0, #(OS_PRINT_OUTPUT_DEFAULT_ARM7ERR << 8) - strh r0, [r1, #2] -#endif - - /* IRQ Š„ž‚݃xƒNƒ^Ý’è */ - ldr r1, =HW_INTR_VECTOR_BUF - ldr r0, =OS_IrqHandler - str r0, [r1] - -#ifndef SDK_NOINIT - /* c++ —p‰Šú‰» */ - bl _fp_init - bl TwlSpStartUp - bl __call_static_initializers - bl INITi_CallStaticInitializers -#endif - -@0f0: - /* Main ŠÖ”‚ւ̃Wƒƒƒ“ƒv—pƒ}ƒCƒNƒƒR[ƒh‚ðƒXƒ^ƒbƒN‚Ì’ê‚ɃRƒs[ */ - ldr r1, =microcode_GotoMain - sub r2, sp, #40 - mov r3, sp -@0f1: cmp r2, r3 - ldrlt r0, [r1], #4 - strlt r0, [r2], #4 - blt @0f1 - - /* ƒ}ƒCƒNƒƒR[ƒh‚ðŒo—R‚µ‚Ä Main ŠÖ”‚ÖƒWƒƒƒ“ƒv */ - ldr r0, =SDK_STATIC_START - bic r0, r0, #0x00000003 - ldr r1, =SDK_STATIC_BSS_END - sub r1, r1, r0 - add r1, r1, #3 - bic r1, r1, #0x00000003 - bic r1, r1, #0xff000000 - mov r2, #BOOT_SYNC_PHASE_4 - mov r2, r2, LSL #24 - orr r1, r1, r2 - ldr r2, =HW_BOOT_SYNC_PHASE - ldr r3, =TwlSpMain - ldr lr, =HW_RESET_VECTOR - sub r12, sp, #40 - bx r12 - /* never return */ -} - -/*---------------------------------------------------------------------------* - Name: _start_AutoloadDoneCallback - Description: ƒI[ƒgƒ[ƒhŠ®—¹ƒR[ƒ‹ƒoƒbƒNB - Arguments: argv - ƒI[ƒgƒ[ƒhƒpƒ‰ƒ[ƒ^‚ð•ÛŽ‚µ‚Ä‚¢‚é”z—ñB - argv[0] = SDK_AUTOLOAD_LIST - argv[1] = SDK_AUTOLOAD_LIST_END - argv[2] = SDK_AUTOLOAD_START - argv[3] = SDK_STATIC_BSS_START - argv[4] = SDK_STATIC_BSS_END - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -SDK_WEAK_SYMBOL asm void -_start_AutoloadDoneCallback(void* argv[]) -{ - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CheckSysConfig - Description: SCFG ŠÖ˜A I/O ƒŒƒWƒXƒ^‚Ì“à—e‚ðŠm”F‚·‚éB - A7-SCFG ƒuƒƒbƒN‚ªƒAƒNƒZƒX—LŒø‚ÈꇂɂÍAƒ[ƒ_[‚ªs‚¤Ý’èˆ - —‚ð‘ãs‚µ‚½ã‚ŃAƒNƒZƒX‚𖳌ø‰»‚·‚éB - ARM7 ê—p WRAM “à‚Ƀ[ƒ_[‚ª“WŠJ‚µ‚Ä‚¢‚é I/O ƒŒƒWƒXƒ^î•ñ‚ðŠm - ”F‚µ‚½ã‚ŃƒCƒ“ƒƒ‚ƒŠã‚Ì‹¤—L—̈æ‚ɃRƒs[‚·‚éB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_CheckSysConfig(void) -{ - /* A7-SCFG ‚̃AƒNƒZƒX‰Â”Û”»’è */ - ldr r1, =REG_EXT_ADDR - ldr r0, [r1] - ldr r2, =HW_PRV_WRAM_SYSRV - tst r0, #REG_SCFG_EXT_CFG_MASK - beq @invalid - -@valid: - /* ARM7 Secure-ROM ؂藣‚µ */ - ldr r1, =REG_A7ROM_ADDR - ldrb r0, [r1] - orr r0, r0, #REG_SCFG_A7ROM_SEC_MASK - strb r0, [r1] - - /* ARM9 Secure-ROM ؂藣‚µ */ - ldr r1, =REG_A9ROM_ADDR - ldrb r0, [r1] - orr r0, r0, #REG_SCFG_A9ROM_SEC_MASK - strb r0, [r1] - - /* NITRO –³ü‚ð—LŒø‰» */ - ldr r1, =REG_WL_ADDR - ldrh r0, [r1] - orr r0, r0, #REG_SCFG_WL_OFFB_MASK - strh r0, [r1] - - /* ROM Ý’èANITRO –³üÝ’èAƒ{ƒ“ƒfƒBƒ“ƒOƒIƒvƒVƒ‡ƒ“î•ñ‚ð WRAM ‚É“WŠJ */ - ldr r3, =REG_OP_ADDR // SCFG-OP - ldrb r1, [r3] - and r0, r1, #(REG_SCFG_OP_OP1_MASK | REG_SCFG_OP_OP0_MASK) - ldr r3, =REG_A9ROM_ADDR // SCFG-ROM:0~7 - ldrb r1, [r3] - and r3, r1, #(REG_SCFG_A9ROM_RSEL_MASK | REG_SCFG_A9ROM_SEC_MASK) - orr r0, r0, r3, LSL #(HWi_WSYS08_ROM_ARM9RSEL_SHIFT - REG_SCFG_A9ROM_RSEL_SHIFT) - ldr r3, =REG_A7ROM_ADDR // SCFG-ROM:8~15 - ldrb r1, [r3] - and r3, r1, #(REG_SCFG_A7ROM_RSEL_MASK | REG_SCFG_A7ROM_FUSE_MASK) - orr r0, r0, r3, LSL #(HWi_WSYS08_ROM_ARM7RSEL_SHIFT - REG_SCFG_A7ROM_RSEL_SHIFT) - ldr r3, =REG_WL_ADDR // SCFG-WL - ldrb r1, [r3] - and r3, r1, #REG_SCFG_WL_OFFB_MASK - orr r0, r0, r3, LSL #(HWi_WSYS08_WL_OFFB_SHIFT - REG_SCFG_WL_OFFB_SHIFT) - strb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - - /* ŠeV‹KƒuƒƒbƒN‚ÖƒNƒƒbƒN‚ð‹Ÿ‹‹ */ - ldr r1, =REG_CLK_ADDR - ldrh r0, [r1] - ldr r3, =REG_SCFG_CLK_SNDMCLK_MASK | REG_SCFG_CLK_WRAMHCLK_MASK | REG_SCFG_CLK_AESHCLK_MASK | REG_SCFG_CLK_SD2HCLK_MASK | REG_SCFG_CLK_SD1HCLK_MASK - orr r0, r0, r3 - strh r0, [r1] - - /* JTAG î•ñ‚ð WRAM ‚É“WŠJ */ - ldr r3, =REG_JTAG_ADDR // SCFG-JTAG - ldrh r1, [r3] - and r0, r1, #(REG_SCFG_JTAG_CPUJE_MASK | REG_SCFG_JTAG_ARM7SEL_MASK) - and r3, r1, #REG_SCFG_JTAG_DSPJE_MASK - orr r0, r0, r3, LSR #(REG_SCFG_JTAG_DSPJE_SHIFT - HWi_WSYS09_JTAG_DSPJE_SHIFT) - strb r0, [r2, #HWi_WSYS09_WRAMOFFSET] - - /* ŠeŠg’£‹@”\‚ð—LŒø‰» */ - ldr r1, =REG_EXT_ADDR // SCFG_EXT - ldr r0, [r1] - ldr r3, =REG_SCFG_EXT_WRAM_MASK | REG_SCFG_EXT_GPIO_MASK | REG_SCFG_EXT_I2C_MASK | REG_SCFG_EXT_I2S_MASK | REG_SCFG_EXT_MIC_MASK | REG_SCFG_EXT_SD2_MASK | REG_SCFG_EXT_SD1_MASK | REG_SCFG_EXT_AES_MASK | REG_SCFG_EXT_DMAC_MASK - orr r0, r0, r3 - orr r0, r0, #(REG_SCFG_EXT_DSEL_MASK | REG_SCFG_EXT_INTC_MASK) - bic r0, r0, #REG_SCFG_EXT_MC_B_MASK - str r0, [r1] - - /* ŠeŠg’£‹@”\‚̧ŒäÝ’è“à—e‚ð WRAM ‚É“WŠJ */ - str r0, [r2, #HWi_WSYS04_WRAMOFFSET] - - /* ƒƒ‚ƒŠ[ƒJ[ƒh I/F ‚̃Xƒƒbƒg‘I‘ð */ - ldr r1, =REG_MC1_ADDR // SCFG_MC1 - ldr r0, [r1] - bic r0, r0, #REG_MI_MC1_SWP_MASK - str r0, [r1] - - /* WRAM-A/B/C ‚ª ARM7 ‚ÉŠ„‚è“–‚½‚Á‚Ä‚¢‚邱‚Æ‚ðŠm”F */ - ldr r1, =REG_MBK1_ADDR - ldr r0, [r1] - ldr r3, =0x8d898581 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK2_ADDR - ldr r0, [r1] - ldr r3, =0x8d898581 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK3_ADDR - ldr r0, [r1] - ldr r3, =0x9d999591 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK4_ADDR - ldr r0, [r1] - ldr r3, =0x8d898581 - cmp r0, r3 - blne INITi_Stop - ldr r1, =REG_MBK5_ADDR - ldr r0, [r1] - ldr r3, =0x9d999591 - cmp r0, r3 - blne INITi_Stop - - /* WRAM-A/B/C ‚̃ƒ‚ƒŠƒ}ƒbƒv‚ðÝ’è */ - ldr r1, =REG_MBK6_ADDR - ldr r0, =0x080037c0 - str r0, [r1] - ldr r1, =REG_MBK7_ADDR - ldr r0, =0x07c03780 - str r0, [r1] - ldr r1, =REG_MBK8_ADDR - ldr r0, =0x07803740 - str r0, [r1] - ldr r1, =REG_MBK9_ADDR - ldr r0, =0x00ffff0f - str r0, [r1] - - /* A7-SCFG ƒuƒƒbƒN‚ւ̃AƒNƒZƒX‚𖳌ø‰» */ - ldr r1, =REG_EXT_ADDR - ldr r0, [r1] -/* bic r0, r0, #REG_SCFG_EXT_CFG_MASK */ - str r0, [r1] - -@invalid: - /* ROM Ý’èANITRO –³üÝ’è“à—e‚ðŠm”F */ - ldrb r0, [r2, #HWi_WSYS08_WRAMOFFSET] - and r0, r0, #(HWi_WSYS08_ROM_ARM7RSEL_MASK | HWi_WSYS08_ROM_ARM9RSEL_MASK | HWi_WSYS08_ROM_ARM9SEC_MASK) - cmp r0, #HWi_WSYS08_ROM_ARM9SEC_MASK - blne INITi_Stop - - /* SCFG ƒŒƒWƒXƒ^Ý’èî•ñ‚ð‹¤—L—̈æ‚ɃRƒs[ */ - ldr r2, =HW_PRV_WRAM_SYSRV - ldr r3, =HW_SYS_CONF_BUF - ldr r0, [r2, #HWi_WSYS04_WRAMOFFSET] - str r0, [r3, #HWi_WSYS04_OFFSET] - ldrh r0, [r2, #HWi_WSYS08_WRAMOFFSET] - strh r0, [r3, #HWi_WSYS08_OFFSET] - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_DetectMainMemorySize - Description: ƒƒCƒ“ƒƒ‚ƒŠƒTƒCƒY‚𒲸‚·‚éB - ’²¸Œ‹‰Ê‚Í (u16*)HW_MMEMCHECER_SUB ‚ÉŠi”[‚³‚ê‚éB - Ši”[‚³‚ê‚é’l‚Í [OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32B] - NOTE: ƒvƒ‰ƒbƒgƒtƒH[ƒ€‚ª NITRO ‚ÌꇂÍl—¶‚µ‚Ä‚¢‚È‚¢B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -#define OSi_IMAGE_DIFFERENCE2 0xb000000 -#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK) -#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK) - -#define OSi_CHECKNUM1 0x55 -#define OSi_CHECKNUM2 0xaa -#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz) - -static asm void -INITi_DetectMainMemorySize(void) -{ - ldr r2, =HW_MMEMCHECKER_SUB - add r3, r2, #OSi_IMAGE_DIFFERENCE2 - mov r0, #OS_CONSOLE_SIZE_16MB - - /* OSi_CHECKNUM1 (0x55) ‘‚«ž‚݃eƒXƒg */ - mov r1, #OSi_CHECKNUM1 - strb r1, [r3] - - ldr r2, =OSi_100usWAIT -@1 subs r2, r2, #4 - bcs @1 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM1 - bne @check_smix - - /* OSi_CHECKNUM2 (0xaa) ‚ð ‘‚«ž‚݃eƒXƒg */ - mov r1, #OSi_CHECKNUM2 - strb r1, [r3] - - ldr r2, =OSi_100usWAIT -@2 subs r2, r2, #4 - bcs @2 - - ldrb r1, [r3] - cmp r1, #OSi_CHECKNUM2 - moveq r0, #OS_CONSOLE_SIZE_32MB - -@check_smix: - /* SMIX ƒŒƒWƒXƒ^‚𒲸 */ - ldr r3, =REG_SMX_CNT_ADDR - ldrh r1, [r3] - and r1, r1, #OSi_DETECT_NITRO_MASK - cmp r1, #OSi_DETECT_NITRO_VAL - orreq r0, r0, #OS_CHIPTYPE_SMX_MASK - - /* ’²¸Œ‹‰Ê‚ðŠi”[ */ - ldr r2, =HW_MMEMCHECKER_SUB - strb r0, [r2] - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Stop - Description: ƒvƒƒOƒ‰ƒ€‚ð’âŽ~‚·‚éBARM7 ê—p WRAM ‚É Halt ‚ðŒJ‚è•Ô‚·ƒ‹[ƒv - ŠÖ”‚ðƒRƒs[‚µAƒRƒs[‚µ‚½ŠÖ”‚ðŽÀs‚·‚éB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_Stop(void) -{ - ldr r1, =microcode_Stop - ldr r2, =HW_PRV_WRAM - add r3, r2, #8 // sizeof(microcode_Stop) -@copy_loop: - ldr r0, [r1], #4 - str r0, [r2], #4 - cmp r2, r3 - blt @copy_loop - -@stop_loop: - ldr r0, =HW_PRV_WRAM - mov lr, pc - bx r0 - b @stop_loop - /* never return */ -} - -/*---------------------------------------------------------------------------* - Name: INITi_DoAutoload - Description: ƒŠƒ“ƒNî•ñ‚ɉˆ‚Á‚ÄAŠeƒI[ƒgƒ[ƒhƒuƒƒbƒN‚̌Œèƒf[ƒ^•”‚Ì“WŠJ - ‹y‚ѕϔ•”‚Ì 0 ƒNƒŠƒA‚ðs‚¤B - NITRO ŒÝŠ·ƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg‚Í‘¶Ý‚¹‚¸ATWL ê—pƒZƒOƒƒ“ƒg - ‚݂̂ª‘¶Ý‚·‚邯‚¢‚¤‘O’ñB - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ - -static asm void -INITi_DoAutoload(void) -{ - stmfd sp!, {lr} - - /* ƒI[ƒgƒ[ƒh‚ðŽÀŽ{ */ -@000: - ldr r0, =_start_LtdModuleParams - ldr r12, [r0] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r0, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r1, [r0, #8] // r1 = SDK_LTDAUTOLOAD_START -@001: - cmp r12, r3 - bge @010 - /* ŒÅ’èƒZƒNƒVƒ‡ƒ“ */ - ldr r0, [r12], #4 // r0 = start address of destination range of fixed section - ldr r2, [r12], #4 // r2 = size of fixed section - bl INITi_Copy32 - stmfd sp!, {r0, r1} - /* static initializer ƒe[ƒuƒ‹ */ - ldr r0, [r12], #4 -#ifndef SDK_NOINIT - stmfd sp!, {r3, r12} - bl INITi_ShelterStaticInitializer - ldmfd sp!, {r3, r12} -#endif - /* bss ƒZƒNƒVƒ‡ƒ“ */ - ldmfd sp!, {r0} // r0 = start address of destination range of bss section - mov r1, #0 // r1 = clear value for bss section - ldr r2, [r12], #4 // r2 = sizeo of bss section - bl INITi_Fill32 - ldmfd sp!, {r1} - b @001 - - /* ƒI[ƒgƒ[ƒhƒŠƒXƒgEƒI[ƒgƒ[ƒhŒ³ƒoƒbƒtƒ@‚ðƒNƒŠƒA */ -@010: - ldr r1, =_start_LtdModuleParams - ldr r12, [r1] // r12 = SDK_LTDAUTOLOAD_LIST - ldr r3, [r1, #4] // r3 = SDK_LTDAUTOLOAD_LIST_END - ldr r0, [r1, #8] // r0 = SDK_LTDAUTOLOAD_START -@011: - cmp r12, r3 - bge @0f0 - mov r1, #0 // r1 = clear value - str r1, [r12], #4 - ldr r2, [r12] // r2 = size of fixed section - str r1, [r12], #4 - str r1, [r12], #4 - str r1, [r12], #4 - bl INITi_Fill32 - b @011 - -@0f0: - /* ƒI[ƒgƒ[ƒhŠ®—¹ƒR[ƒ‹ƒoƒbƒNŒÄ‚Ño‚µ */ - ldr r0, =_start_ModuleParams - ldr r1, =_start_LtdModuleParams - ldmfd sp!, {lr} - b _start_AutoloadDoneCallback -} - -#ifndef SDK_NOINIT - -static asm void -/*---------------------------------------------------------------------------* - Name: INITi_ShelterStaticInitializer - Description: ŠeƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg“à‚Ì static initializer ‚ւ̃|ƒCƒ“ƒ^ - ƒe[ƒuƒ‹‚ð IRQ ƒXƒ^ƒbƒN‚ÌÅã•”‚É‘Þ”ð‚·‚éB - Arguments: ptr - ƒZƒOƒƒ“ƒg“à‚̃|ƒCƒ“ƒ^ƒe[ƒuƒ‹‚ւ̃|ƒCƒ“ƒ^B - ƒe[ƒuƒ‹‚Í NULL ‚ÅI’[‚³‚ê‚Ä‚¢‚é•K—v‚ª‚ ‚éB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_ShelterStaticInitializer(u32* ptr) -{ - /* ˆø”Šm”F */ - cmp r0, #0 - bxeq lr - - /* ‘Þ”ðêŠæ“ªƒAƒhƒŒƒX‚ðŒvŽZ */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 -@001: - /* ‘Þ”ðêŠæ“ª‚©‚ç‹ó‚«êŠ‚ð’²¸ */ - ldr r2, [r1] - cmp r2, #0 - addne r1, r1, #4 - bne @001 -@002: - /* ‹ó‚«êŠ‚Éƒe[ƒuƒ‹‚ðƒRƒs[ */ - ldr r2, [r0], #4 - str r2, [r1], #4 - cmp r2, #0 - bne @002 - - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_CallStaticInitializers - Description: ŠeƒI[ƒgƒ[ƒhƒZƒOƒƒ“ƒg“à‚Ì static initializer ‚ðŒÄ‚Ño‚·B - ƒI[ƒgƒ[ƒhˆ—‚É‚æ‚Á‚Ä IRQ ƒXƒ^ƒbƒN‚ÌÅã•”‚É‘Þ”ð‚³‚ê‚Ä‚¢‚é - ŠÖ”ƒ|ƒCƒ“ƒ^ƒe[ƒuƒ‹‚ðˆê‚‚¸‚ŒĂÑo‚·B - Arguments: ‚È‚µB - Returns: ‚È‚µB - *---------------------------------------------------------------------------*/ -static asm void -INITi_CallStaticInitializers(void) -{ - stmdb sp!, {lr} - - /* ƒe[ƒuƒ‹‘Þ”ðêŠæ“ªƒAƒhƒŒƒX‚ðŒvŽZ */ - ldr r1, =HW_PRV_WRAM_IRQ_STACK_END - ldr r2, =SDK_IRQ_STACKSIZE - sub r1, r1, r2 - add r1, r1, #4 -@001: - /* ƒe[ƒuƒ‹‚ÉŠÇ—‚³‚ê‚Ä‚¢‚éƒ|ƒCƒ“ƒ^‚ðˆê‚‚¸‚ŒĂÑo‚µ */ - ldr r0, [r1] - cmp r0, #0 - beq @002 - stmfd sp!, {r1} - mov lr, pc - bx r0 - ldmfd sp!, {r1} - /* ˆê’UŒÄ‚Ño‚µ‚½ƒ|ƒCƒ“ƒ^‚̓[ƒƒNƒŠƒA (IRQƒXƒ^ƒbƒN‚ðŠÔŽØ‚肵‚Ä‚¢‚éˆ×) */ - mov r0, #0 - str r0, [r1], #4 - b @001 -@002: - ldmia sp!, {lr} - bx lr -} -#endif - -/*---------------------------------------------------------------------------* - Name: INITi_Copy32 - Description: 32 bit ’PˆÊ‚ŃRƒs[‚ðs‚¤BƒXƒ^ƒbƒN‚ð 36 ƒoƒCƒgÁ”ï‚·‚邪A - ƒŒƒWƒXƒ^ r3 - r12 ‚Í”j‰ó‚µ‚È‚¢B - Arguments: r0 - ƒRƒs[æ‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r1 - ƒRƒs[Œ³‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r2 - ƒRƒs[‚·‚é’·‚³‚ðƒoƒCƒg’PˆÊ‚ÅŽw’è ( 4 ‚Ì”{” )B - Returns: r0 - ƒRƒs[Œã‚̃Rƒs[æ‚ւ̃|ƒCƒ“ƒ^ ( r0 + r2 )B - r1 - ƒRƒs[Œã‚̃Rƒs[Œ³‚ւ̃|ƒCƒ“ƒ^ ( r1 + r2 )B - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Copy32(void* dst, void* src, u32 size) -{ - stmfd sp!, {r3-r11} - - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - ldmia r1!, {r4-r11} - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - ldmneia r1!, {r4-r7} - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - ldmneia r1!, {r4-r5} - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - ldmneia r1!, {r4} - stmneia r0!, {r4} - - ldmfd sp!, {r3-r11} - bx lr -} - -/*---------------------------------------------------------------------------* - Name: INITi_Fill32 - Description: 32 bit ’PˆÊ‚Ńoƒbƒtƒ@“à—e‚ðŽw’èƒf[ƒ^‚Å–„‚ß‚éBƒXƒ^ƒbƒN‚ð 36 - ƒoƒCƒgÁ”ï‚·‚邪AƒŒƒWƒXƒ^ r3 - r12 ‚Í”j‰ó‚µ‚È‚¢B - Arguments: r0 - ƒoƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^ ( 4 ƒoƒCƒgƒAƒ‰ƒCƒ“ )B - r1 - ƒoƒbƒtƒ@‚ð–„‚ß‚é“à—e‚ð 32 bit ’l‚ÅŽw’èB - r2 - ƒoƒbƒtƒ@‚𖄂߂钷‚³‚ðƒoƒCƒg’PˆÊ‚ÅŽw’è ( 4 ‚Ì”{” )B - Returns: r0 - ˆ—Œã‚̃oƒbƒtƒ@‚ւ̃|ƒCƒ“ƒ^ ( r0 + r2 )B - *---------------------------------------------------------------------------*/ -static asm void* -INITi_Fill32(void* dst, u32 value, u32 size) -{ - stmfd sp!, {r3-r11} - - mov r4, r1 - mov r5, r1 - mov r6, r1 - mov r7, r1 - mov r8, r1 - mov r9, r1 - mov r10, r1 - mov r11, r1 - bics r3, r2, #0x0000001f - beq @next - add r3, r0, r3 -@loop: - stmia r0!, {r4-r11} - cmp r3, r0 - bgt @loop -@next: - tst r2, #0x00000010 - stmneia r0!, {r4-r7} - tst r2, #0x00000008 - stmneia r0!, {r4-r5} - tst r2, #0x00000004 - stmneia r0!, {r4} - - ldmfd sp!, {r3-r11} - bx lr -} - -#include diff --git a/build/tests/TestComponent/ARM7.TWL/src/kami_pxi.c b/build/tests/TestComponent/ARM7.TWL/src/kami_pxi.c deleted file mode 100644 index cb0e5ac4..00000000 --- a/build/tests/TestComponent/ARM7.TWL/src/kami_pxi.c +++ /dev/null @@ -1,413 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include "kami_pxi.h" -#include "fifo.h" -#include "twl/cdc.h" -#include "formatter.h" -#include "mcu_firm.h" -#include -#include -#include -#include -#include - -/* sdmc.h ‚ÍFATFSƒ‰ƒCƒuƒ‰ƒŠ“à‚Ì”ñŒöŠJƒwƒbƒ_‚Ì‚½‚ßA•K—v‚È’è‹`‚ðƒ[ƒJƒ‹‚ÅŽ‚ÂB */ -//#include - -typedef enum { - SDMC_PORT_CARD = 0x400, - SDMC_PORT_NAND = 0x401 -}SDMC_PORT_NO; - -#define TRUE 1 /* Don't change */ -#define FALSE 0 /* Don't change */ - -typedef unsigned char byte; /* Don't change */ -typedef unsigned short word; /* Don't change */ -typedef unsigned long dword; /* Don't change */ - -#define BOOLEAN int - -extern BOOL FATFSi_nandRtfsIo( int driveno, dword block, void* buffer, word count, BOOLEAN reading); -extern BOOL sdmcFormatNandLog( BOOL verify_flag); -extern void sdmcGetCID( SDMC_PORT_NO port, u32* dest); -extern void SPI_Lock(u32 id); -extern void SPI_Unlock(u32 id); - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -#define KAMITEST_MESSAGE_ARRAY_MAX 4 // ƒXƒŒƒbƒh“¯Šú—pƒƒbƒZ[ƒWƒLƒ…[‚̃TƒCƒY -#define KAMITEST_THREAD_STACK_SIZE 2048 // ƒXƒŒƒbƒh‚̃Xƒ^ƒbƒNƒTƒCƒY - -#define KAMITEST_THREAD_PRIORITY 6 - -// ƒAƒ‰ƒCƒƒ“ƒg’²®‚µ‚ăRƒs[‚·‚é -#define KAMI_UNPACK_U8(d, s) \ - (*(d) = (u8)((((u8*)s)[0] << 0))) -#define KAMI_UNPACK_U16(d, s) \ - (*(d) = (u16)((((u8*)s)[0] << 0) | (((u8*)s)[1] << 8))) -#define KAMI_UNPACK_U32(d, s) \ - (*(d) = (u32)((((u8*)s)[0] << 0) | (((u8*)s)[1] << 8) | (((u8*)s)[2] << 16) | (((u8*)s)[3] << 24))) - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ -typedef struct KamiWork -{ - BOOL result; - u32 total; - u32 current; - KamiCommand command; - u8 data[KAMITEST_PXI_DATA_SIZE_MAX]; // Œã‘±ƒf[ƒ^Ši”[—p - - OSMessageQueue msgQ; // ƒXƒŒƒbƒh“¯Šú—pƒƒbƒZ[ƒWƒLƒ…[ - OSMessage msgArray[KAMITEST_MESSAGE_ARRAY_MAX]; - // ƒƒbƒZ[ƒW‚ðŠi”[‚·‚éƒoƒbƒtƒ@ - OSThread thread; // KAMI—pƒXƒŒƒbƒh - u64 stack[KAMITEST_THREAD_STACK_SIZE / sizeof(u64)]; - // KAMI—pƒXƒŒƒbƒh‚̃Xƒ^ƒbƒN -} -KamiWork; - -/*---------------------------------------------------------------------------* - ÓI•Ï”’è‹` - *---------------------------------------------------------------------------*/ -static BOOL kamiInitialized; -static KamiWork kamiWork; -static u32 kamiSpiLockId; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err); -static void KamiReturnResult(KamiCommand command, KAMIPxiResult result); -static void KamiReturnResultEx(KamiCommand command, KAMIPxiResult result, u8 size, u8* data); -static void KamiThread(void *arg); - -void KamiPxiInit(void) -{ - if (kamiInitialized) - { - return; - } - kamiInitialized = TRUE; - kamiSpiLockId = (u32)OS_GetLockID(); - if (kamiSpiLockId == OS_LOCK_ID_ERROR) - { - OS_Panic("%s: OS_GetLockID failed.\n", __FUNCTION__); - } - - PXI_Init(); - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_KAMITEST, KamiPxiCallback); - - OS_InitMessageQueue(&kamiWork.msgQ, kamiWork.msgArray, KAMITEST_MESSAGE_ARRAY_MAX); - OS_CreateThread(&kamiWork.thread, KamiThread, 0, - (void *)(kamiWork.stack + (KAMITEST_THREAD_STACK_SIZE / sizeof(u64))), - KAMITEST_THREAD_STACK_SIZE, KAMITEST_THREAD_PRIORITY); - OS_WakeupThreadDirect(&kamiWork.thread); -} - -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused( tag ) - if (err) - { - return; - } - if (data & KAMITEST_PXI_START_BIT) // 擪ƒf[ƒ^ - { - kamiWork.total = (u8)((data & KAMITEST_PXI_DATA_NUMS_MASK) >> KAMITEST_PXI_DATA_NUMS_SHIFT); - kamiWork.current = 0; - kamiWork.command = (KamiCommand)((data & KAMITEST_PXI_COMMAND_MASK) >> KAMITEST_PXI_COMMAND_SHIFT); - kamiWork.data[kamiWork.current++] = (u8)((data & KAMITEST_PXI_1ST_DATA_MASK) >> KAMITEST_PXI_1ST_DATA_SHIFT); - } - else // Œã‘±ƒf[ƒ^ - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0xFF0000) >> 16); - kamiWork.data[kamiWork.current++] = (u8)((data & 0x00FF00) >> 8); - kamiWork.data[kamiWork.current++] = (u8)((data & 0x0000FF) >> 0); - } - if (kamiWork.current >= kamiWork.total) - { - switch (kamiWork.command) - { - case KAMI_EXE_FORMAT: - case KAMI_NAND_IO: - case KAMI_MCU_WRITE_FIRM: - case KAMI_MCU_IO: - case KAMI_CODEC_IO: - case KAMI_ARM7_IO: - case KAMI_CDC_GO_DSMODE: - case KAMI_CLEAR_NAND_ERRORLOG: - case KAMI_GET_CAMERA_MODULE_TYPE: - case KAMI_GET_NAND_CID: - if (!OS_SendMessage(&kamiWork.msgQ, NULL, OS_MESSAGE_NOBLOCK)) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_FATAL_ERROR); - } - break; - - default: - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); - } - } -} - -static void KamiReturnResult(KamiCommand command, KAMIPxiResult result) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | KAMITEST_PXI_RESULT_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - ((1 << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((result << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } -} - -static void KamiReturnResultEx(KamiCommand command, KAMIPxiResult result, u8 size, u8* data) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | KAMITEST_PXI_RESULT_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - (((size+1) << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((result << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - int i; - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } - for (i = 0; i < size; i+= 3) - { - pxiData = (u32)((data[i] << 16) | (data[i+1] << 8) | data[i+2]); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } - } -} - -static void KamiThread(void *arg) -{ -#pragma unused( arg ) - OSMessage msg; - BOOL result; - - while (TRUE) - { - (void)OS_ReceiveMessage(&kamiWork.msgQ, &msg, OS_MESSAGE_BLOCK); - switch (kamiWork.command) - { - case KAMI_EXE_FORMAT: - { - result = ExeFormat((FormatMode)kamiWork.data[0]); // Quick or Full - if (result) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_TRUE); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_NAND_IO: - { - BOOL is_read; - u32 block; - void* buffer; - u32 count; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U32(&block, &kamiWork.data[1]); - KAMI_UNPACK_U32((u32 *)(&buffer), &kamiWork.data[5]); - KAMI_UNPACK_U32(&count, &kamiWork.data[9]); - - result = FATFSi_nandRtfsIo( 0, block, buffer, (u16)count, is_read ); - if (result) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_TRUE); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_MCU_WRITE_FIRM: - { - void* buffer; - KAMI_UNPACK_U32((u32 *)(&buffer), &kamiWork.data[1]); - - if ( MCU_WriteFirm( buffer ) ) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_MCU_IO: - { - BOOL is_read; - u32 reg_no; - u32 write; - u32 read; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U32(®_no, &kamiWork.data[1]); - KAMI_UNPACK_U32(&write, &kamiWork.data[5]); - - if (is_read) - { - read = MCU_ReadRegister( (u8)reg_no ); - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(u8), (u8*)&read ); - } - else - { - MCU_WriteRegister( (u8)reg_no, (u8)write ); - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - } - break; - - case KAMI_CODEC_IO: - { - BOOL is_read; - u8 page; - u8 reg_no; - u32 write; - u32 read; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U8(&page, &kamiWork.data[1]); - KAMI_UNPACK_U8(®_no, &kamiWork.data[2]); - KAMI_UNPACK_U32(&write, &kamiWork.data[5]); - - if (is_read) - { - SPI_Lock(kamiSpiLockId); // CODEC—pSPI”r‘¼ƒƒbƒN - read = CDC_ReadSpiRegisterEx( page, reg_no ); - SPI_Unlock(kamiSpiLockId); // CODEC—pSPI”r‘¼ƒƒbƒN - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(u8), (u8*)&read ); - } - else - { - SPI_Lock(kamiSpiLockId); // CODEC—pSPI”r‘¼ƒƒbƒN - CDC_WriteSpiRegisterEx( page, reg_no, (u8)write ); - SPI_Unlock(kamiSpiLockId); // CODEC—pSPI”r‘¼ƒƒbƒN - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - } - break; - - case KAMI_ARM7_IO: - { - BOOL is_read; - u32 addr; - u32 write; - u32 read; - - is_read = (BOOL)kamiWork.data[0]; - KAMI_UNPACK_U32(&addr, &kamiWork.data[1]); - KAMI_UNPACK_U32(&write, &kamiWork.data[5]); - - if (is_read) - { - read = *(u32 *)addr; - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(u32), (u8*)&read ); - } - else - { - *(u32 *)addr = write; - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - } - break; - - case KAMI_CDC_GO_DSMODE: - { - CDC_Init(); // IIR‚Ȃǂ̃pƒ‰ƒ[ƒ^‰Šú‰»‚Ì‚½‚ß - CDC_GoDsMode(); - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - break; - - case KAMI_CLEAR_NAND_ERRORLOG: - { - if (sdmcFormatNandLog(TRUE)) - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS); - } - else - { - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_SUCCESS_FALSE); - } - } - break; - - case KAMI_GET_CAMERA_MODULE_TYPE: - { - CameraModuleTypes types; - if (CAMERAi_IsSharpModule(CAMERA_SELECT_IN)) - { - types.in = CAMERA_MODULE_TYPE_SHARP; - } - else if (CAMERAi_IsMicronModule(CAMERA_SELECT_IN)) - { - types.in = CAMERA_MODULE_TYPE_MICRON; - } - else - { - types.in = CAMERA_MODULE_TYPE_UNKNOWN; - } - if (CAMERAi_IsSharpModule(CAMERA_SELECT_OUT)) - { - types.out = CAMERA_MODULE_TYPE_SHARP; - } - else if (CAMERAi_IsMicronModule(CAMERA_SELECT_OUT)) - { - types.out = CAMERA_MODULE_TYPE_MICRON; - } - else - { - types.out = CAMERA_MODULE_TYPE_UNKNOWN; - } - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(CameraModuleTypes), (u8*)&types); - } - break; - - case KAMI_GET_NAND_CID: - { - u8 buffer[16]; - sdmcGetCID( SDMC_PORT_NAND, (u32*)buffer); - KamiReturnResultEx(kamiWork.command, KAMI_PXI_RESULT_SUCCESS, sizeof(buffer), (u8*)buffer ); - } - break; - - default: - KamiReturnResult(kamiWork.command, KAMI_PXI_RESULT_INVALID_COMMAND); - } - } -} - -#include diff --git a/build/tests/TestComponent/ARM7.TWL/src/main.c b/build/tests/TestComponent/ARM7.TWL/src/main.c deleted file mode 100644 index b2a99285..00000000 --- a/build/tests/TestComponent/ARM7.TWL/src/main.c +++ /dev/null @@ -1,654 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - components - armadillo.TWL - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "nvram_sp.h" -#include "kami_pxi.h" -#include - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -/* ŠeƒXƒŒƒbƒh—Dæ“x */ -#define THREAD_PRIO_SPI 2 -#define THREAD_PRIO_MCU 4 // Žb’è -#define THREAD_PRIO_SND 6 -#define THREAD_PRIO_NWM_EVENT 7 -#define THREAD_PRIO_NWM_SDIO 8 -#define THREAD_PRIO_FATFS 8 -#define THREAD_PRIO_NWM_COMMAND 9 -#define THREAD_PRIO_NWM_WPA 10 -#define THREAD_PRIO_HOTSW 11 -#define THREAD_PRIO_AES 12 -#define THREAD_PRIO_SEA 12 -#define THREAD_PRIO_RTC 12 -#define THREAD_PRIO_SNDEX 14 -#define THREAD_PRIO_FS 15 -/* OS_THREAD_LAUNCHER_PRIORITY 16 */ - -/* ROM “à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh */ -#define ROMHEADER_FOR_CHINA_BIT 0x80 -#define ROMHEADER_FOR_KOREA_BIT 0x40 - -/* Žg—p DMA ”Ô† */ -#define DMA_NO_FATFS FATFS_DMA_4 // = 0 -#define DMA_NO_NWM 3 - -/* ƒJ[ƒhƒ`ƒƒƒ^ƒŠƒ“ƒOƒJƒEƒ“ƒ^ */ -#define CHATTERING_COUNTER 0x1988 // 100ms•ª (0x1988 * 15.3us = 100000us) - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void PrintDebugInfo(void); -static OSHeapHandle InitializeAllocateSystem(void); -static void InitializeFatfs(void); -static void InitializeNwm(OSHeapHandle hh); -static void InitializeCardPower(void); -static void InitializeCdc(void); - -static void ReadUserInfo(void); -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -static BOOL IsValidConfigEx(void); -static u16 GetRomValidLanguage(void); -static s32 CheckCorrectNCDEx(NVRAMConfigEx* ncdsp); -#else -static s32 CheckCorrectNCD(NVRAMConfig* ncdsp); -#endif -static void VBlankIntr(void); - -/*---------------------------------------------------------------------------* - Name: TwlSpMain - Description: ‹N“®ƒxƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -void -TwlSpMain(void) -{ - OSHeapHandle heapHandle; - - /* OS ‰Šú‰» */ - OS_Init(); - PrintDebugInfo(); - - /* NVRAM ‚©‚烆[ƒU[î•ñ“Ç‚Ýo‚µ */ - ReadUserInfo(); - - /* ƒq[ƒv—̈æÝ’è */ - heapHandle = InitializeAllocateSystem(); - - /* ƒ{ƒ^ƒ““ü—̓T[ƒ`‰Šú‰» */ - (void)PAD_InitXYButton(); - - /* Š„ž‚Ý‹–‰Â */ - (void)OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - -#ifndef NAND_INITIALIZER_LIMITED_MODE - KamiPxiInit(); -#endif - - /* Šeƒ‰ƒCƒuƒ‰ƒŠ‰Šú‰» */ - AES_Init(THREAD_PRIO_AES); // AES - SEA_Init(THREAD_PRIO_SEA); // SEA - FS_Init(FS_DMA_NOT_USE); // FS for CARD - FS_CreateReadServerThread(THREAD_PRIO_FS); // FS for CARD - InitializeFatfs(); // FAT-FS - InitializeNwm(heapHandle); // TWL –³ü - MCU_InitIrq(THREAD_PRIO_MCU); // ƒ}ƒCƒRƒ“ - - if (OSi_IsCodecTwlMode() == TRUE) - { - InitializeCdc(); // CODEC - CAMERA_Init(); // ƒJƒƒ‰ - } - - SND_Init(THREAD_PRIO_SND); // ƒTƒEƒ“ƒh - SNDEX_Init(THREAD_PRIO_SNDEX); // ƒTƒEƒ“ƒhŠg’£ - RTC_Init(THREAD_PRIO_RTC); // RTC - WVR_Begin(heapHandle); // NITRO –³ü - SPI_Init(THREAD_PRIO_SPI); - InitializeCardPower(); // ƒJ[ƒh“dŒ¹ONiŒŸ¸ƒvƒƒOƒ‰ƒ€—pj - - while (TRUE) - { - OS_Halt(); - - /* ƒ\ƒtƒgƒEƒFƒAƒŠƒZƒbƒg—v‹‚ÍŠÄŽ‹‚µ‚È‚¢ */ - /* AGB ƒJ[ƒgƒŠƒbƒW‚Ì‘}”²ƒ`ƒFƒbƒN‚Ís‚í‚È‚¢ */ - /* DS ƒJ[ƒh‚Ì‘}”²ƒ`ƒFƒbƒN‚Ís‚í‚È‚¢ */ - } -} - -/*---------------------------------------------------------------------------* - Name: PrintDebugInfo - Description: ARM7 ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ìî•ñ‚ðƒfƒoƒbƒOo—Í‚·‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -PrintDebugInfo(void) -{ - OS_TPrintf("ARM7: This component is running on TWL.\n"); - OS_TPrintf("ARM7: This component is \"armadillo.TWL\".\n"); -} - -/*---------------------------------------------------------------------------* - Name: InitializeAllocateSystem - Description: ƒƒ‚ƒŠŠ„“–‚ăVƒXƒeƒ€‚ð‰Šú‰»‚·‚éB - Arguments: None. - Returns: OSHeapHandle - WRAM ƒAƒŠ[ƒiã‚ÉŠm•Û‚³‚ꂽƒq[ƒv‚̃nƒ“ƒhƒ‹‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static OSHeapHandle -InitializeAllocateSystem(void) -{ - OSHeapHandle hh; - void* subLo = (void*)OS_GetWramSubArenaLo(); - void* subHi = (void*)OS_GetWramSubArenaHi(); - void* privLo = (void*)OS_GetWramSubPrivArenaLo(); - void* privHi = (void*)OS_GetWramSubPrivArenaHi(); - - if (((u32)privLo == HW_PRV_WRAM) && ((u32)subHi == HW_PRV_WRAM) && ((u32)subLo < HW_PRV_WRAM)) - { - /* SUB ƒAƒŠ[ƒi‚ð SUBPRIV ƒAƒŠ[ƒi‚É‹zŽû */ - OS_SetWramSubArenaHi(subLo); - OS_SetWramSubPrivArenaLo(subLo); - privLo = subLo; - } - - /* ƒAƒŠ[ƒi‚ð 0 ƒNƒŠƒA */ - MI_CpuClear8(privLo, (u32)privHi - (u32)privLo); - - /* ƒq[ƒv쬉Šú‰» */ - privLo = OS_InitAlloc(OS_ARENA_WRAM_SUBPRIV, privLo, privHi, 1); - hh = OS_CreateHeap(OS_ARENA_WRAM_SUBPRIV, privLo, privHi); - if (hh < 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - - /* ƒJƒŒƒ“ƒgƒq[ƒv‚ÉÝ’è */ - (void)OS_SetCurrentHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - /* ƒq[ƒvƒTƒCƒY‚ÌŠm”F */ - { - u32 heapSize; - - heapSize = (u32)OS_CheckHeap(OS_ARENA_WRAM_SUBPRIV, hh); - - if (heapSize <= 0) - { - OS_Panic("ARM7: Failed to create heap.\n"); - } - OS_TPrintf("ARM7: heap size [%d]\n", heapSize); - } - - return hh; -} - -/*---------------------------------------------------------------------------* - Name: InitializeFatfs - Description: FATFSƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeFatfs(void) -{ - // FATFSƒ‰ƒCƒuƒ‰ƒŠ‚̉Šú‰» - if(!FATFS_Init( FATFS_DMA_4, FATFS_DMA_5, THREAD_PRIO_FATFS)) - { - // do nothing - } -} - -/*---------------------------------------------------------------------------* - Name: InitializeNwm - Description: NWMƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éB - Arguments: hh - —˜—p‰Â”\‚ȃq[ƒv‚̃nƒ“ƒhƒ‹‚ðŽw’èB - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeNwm(OSHeapHandle hh) -{ - NwmspInit nwmInit; - - /* [TODO] Šm•Û‚µ‚Ä‚¢‚éƒq[ƒv—̈悪V–³üˆêŽ®‚ª•K—v‚Æ‚µ‚Ä‚¢‚郃‚ƒŠ—ʈÈã‚©‚̃`ƒFƒbƒN‚ª•K—v */ - - nwmInit.cmdPrio = THREAD_PRIO_NWM_COMMAND; - nwmInit.evtPrio = THREAD_PRIO_NWM_EVENT; - nwmInit.sdioPrio = THREAD_PRIO_NWM_SDIO; - - nwmInit.dmaNo = DMA_NO_NWM; - nwmInit.drvHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.drvHeap.handle = hh; - - nwmInit.wpaPrio = THREAD_PRIO_NWM_WPA; - nwmInit.wpaHeap.id = OS_ARENA_WRAM_SUBPRIV; - nwmInit.wpaHeap.handle = hh; - - NWMSP_Init(&nwmInit); -} - -/*---------------------------------------------------------------------------* - Name: InitializeCardPower - Description: ƒJ[ƒh“dŒ¹‚ðON‚·‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeCardPower(void) -{ - // ƒ`ƒƒƒbƒ^ƒŠƒ“ƒOƒJƒEƒ“ƒ^‚Ì’l‚ðÝ’è - reg_MI_MC1 = (u32)((reg_MI_MC1 & ~REG_MI_MC1_CC_MASK) | - (CHATTERING_COUNTER << REG_MI_MC1_CC_SHIFT)); - - // ƒ`ƒƒƒ^ƒŠƒ“ƒOƒJƒEƒ“ƒ^•ª‘҂‚±‚Ƃɂæ‚èCDET‚ª0‚ɂȂé - OS_SpinWait( OS_MSEC_TO_CPUCYC(200) ); - - // ƒJ[ƒhƒXƒƒbƒg‚P“dŒ¹ON - HOTSWi_TurnCardPowerOn(1); -} - -/*---------------------------------------------------------------------------* - Name: InitializeCdc - Description: CDCƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚·‚éB - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -static void -InitializeCdc(void) -{ - u32 spiLockId; - - spiLockId = (u32)OS_GetLockID(); - if (spiLockId == OS_LOCK_ID_ERROR) - { - OS_Warning("OS_GetLockID failed.\n"); - } - - /* CODEC ‰Šú‰» */ - SPI_Lock(spiLockId); - CDC_Init(); - SPI_Unlock(spiLockId); -} - -//#ifdef WM_PRECALC_ALLOWEDCHANNEL -//extern u16 WMSP_GetAllowedChannel(u16 bitField); -//#endif -/*---------------------------------------------------------------------------* - Name: ReadUserInfo - - Description: NVRAM‚©‚烆[ƒU[î•ñ‚ð“Ç‚Ýo‚µA‹¤—L—̈æ‚É“WŠJ‚·‚éB - ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚éƒoƒbƒtƒ@‚ª—¼•û‰ó‚ê‚Ä‚¢‚éꇂÍA - ‹¤—L—̈æ‚̃†[ƒU[î•ñŠi”[ꊂðƒNƒŠƒA‚·‚éB - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void ReadUserInfo(void) -{ - s32 offset; -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - NVRAMConfigEx temp[2]; -#else - NVRAMConfig temp[2]; -#endif - s32 check; - u8 *p = OS_GetSystemWork()->nvramUserInfo; - - // ƒIƒtƒZƒbƒg“Ç‚Ýo‚µ -#ifdef NVRAM_CONFIG_CONST_ADDRESS - offset = NVRAM_CONFIG_DATA_ADDRESS_DUMMY; -#else - NVRAM_ReadDataBytes(NVRAM_CONFIG_DATA_OFFSET_ADDRESS, NVRAM_CONFIG_DATA_OFFSET_SIZE, - (u8 *)(&offset)); - offset <<= NVRAM_CONFIG_DATA_OFFSET_SHIFT; -#endif - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfigEx), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfigEx), - (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCDEx(temp); -#else - // ƒ~ƒ‰[‚³‚ꂽ‚Q‚‚̃f[ƒ^‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes((u32)offset, sizeof(NVRAMConfig), (u8 *)(&temp[0])); - NVRAM_ReadDataBytes((u32)(offset + SPI_NVRAM_PAGE_SIZE), sizeof(NVRAMConfig), (u8 *)(&temp[1])); - // ‚Q‚‚̓à‚Ç‚¿‚ç‚ðŽg‚¤‚©”»’f - check = CheckCorrectNCD(temp); -#endif - - if (check >= 3) - { - // ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚Ì‹N“®‚ð—}§ - MI_CpuFill32(p, 0xffffffff, sizeof(NVRAMConfig)); - } - else if (check) - { - s32 i; - - // ƒjƒbƒNƒl[ƒ€‚ð•â³ - if (temp[check - 1].ncd.owner.nickname.length < NVRAM_CONFIG_NICKNAME_LENGTH) - { - for (i = NVRAM_CONFIG_NICKNAME_LENGTH; - i > temp[check - 1].ncd.owner.nickname.length; i--) - { - temp[check - 1].ncd.owner.nickname.str[i - 1] = 0x0000; - } - } - // ƒRƒƒ“ƒg‚ð•â³ - if (temp[check - 1].ncd.owner.comment.length < NVRAM_CONFIG_COMMENT_LENGTH) - { - for (i = NVRAM_CONFIG_COMMENT_LENGTH; i > temp[check - 1].ncd.owner.comment.length; - i--) - { - temp[check - 1].ncd.owner.comment.str[i - 1] = 0x0000; - } - } - // ‹¤—L—̈æ‚ɃXƒgƒA - MI_CpuCopy32(&temp[check - 1], p, sizeof(NVRAMConfig)); - } - else - { - // ‹¤—L—̈æ‚ðƒNƒŠƒA - MI_CpuClear32(p, sizeof(NVRAMConfig)); - } - - // –³üMACƒAƒhƒŒƒX‚ðƒ†[ƒU[î•ñ‚ÌŒã‚ë‚É“WŠJ - { - u8 wMac[6]; - - // NVRAM‚©‚çMACƒAƒhƒŒƒX‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_MACADDRESS_ADDRESS, 6, wMac); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ - p = (u8 *)((u32)p + ((sizeof(NVRAMConfig) + 3) & ~0x00000003)); - // ‹¤—L—̈æ‚É“WŠJ - MI_CpuCopy8(wMac, p, 6); - } -/* -#ifdef WM_PRECALC_ALLOWEDCHANNEL - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚©‚çŽg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - { - u16 enableChannel; - u16 allowedChannel; - - // Žg—p‰Â”\ƒ`ƒƒƒ“ƒlƒ‹‚ð“Ç‚Ýo‚µ - NVRAM_ReadDataBytes(NVRAM_CONFIG_ENABLECHANNEL_ADDRESS, 2, (u8 *)(&enableChannel)); - // Žg—p‹–‰Âƒ`ƒƒƒ“ƒlƒ‹‚ðŒvŽZ - allowedChannel = WMSP_GetAllowedChannel((u16)(enableChannel >> 1)); - // “WŠJæƒAƒhƒŒƒX‚ðŒvŽZ(MACƒAƒhƒŒƒX‚ÌŒã‚ë‚Ì2ƒoƒCƒg) - p = (u8 *)((u32)p + 6); - // ‹¤—L—̈æ‚É“WŠJ - *((u16 *)p) = allowedChannel; - } -#endif -*/ -} - -#ifdef NVRAM_CONFIG_DATA_EX_VERSION -/*---------------------------------------------------------------------------* - Name: IsValidConfigEx - - Description: ƒ†[ƒU[î•ñ‚ªŠg’£ƒRƒ“ƒtƒBƒO‚ɑΉž‚µ‚Ä‚¢‚é‚©‚Ç‚¤‚©‚𒲸‚·‚éB - - Arguments: None. - - Returns: BOOL - Šg’£ƒ†[ƒU[î•ñ‚ª—LŒø‚ÈꇂÉTRUE‚ð•Ô‚·B - –³Œø‚Å‚ ‚éꇂÍFALSE‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static BOOL IsValidConfigEx(void) -{ - u8 ipl2_type; - - NVRAM_ReadDataBytes(NVRAM_CONFIG_IPL2_TYPE_ADDRESS, NVRAM_CONFIG_IPL2_TYPE_SIZE, &ipl2_type); - if (ipl2_type == NVRAM_CONFIG_IPL2_TYPE_NORMAL) - { - return FALSE; - } - if (ipl2_type & NVRAM_CONFIG_IPL2_TYPE_EX_MASK) - { - return TRUE; - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: GetRomValidLanguage - - Description: ROM“à“o˜^ƒGƒŠƒA‚Ìî•ñ‚©‚çAŠg’£Œ¾ŒêƒR[ƒh‚̑ΉžŒ¾Œêƒrƒbƒgƒ}ƒbƒv - ‚ÉŠÖ‚·‚éî•ñ‚ð’Šo‚·‚éB - - Arguments: None. - - Returns: u16 - DSƒJ[ƒhA‚à‚µ‚­‚Í ƒ}ƒ‹ƒ`ƒu[ƒgƒoƒCƒiƒŠ‚ª‘Ήž‚µ‚Ä‚¢‚é - Œ¾ŒêƒR[ƒh‚̃rƒbƒgƒ}ƒbƒv‚ð•Ô‚·BDSƒJ[ƒh‚ªŠg’£Œ¾Œê - ƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡‚Í 0 ‚ð•Ô‚·B - *---------------------------------------------------------------------------*/ -static u16 GetRomValidLanguage(void) -{ - u16 ret = 0x0000; - u8 langBit = OS_GetSystemWork()->rom_header[0x1d]; - - // ROM“à“o˜^ƒGƒŠƒA‚ÌŠg’£Œ¾ŒêƒR[ƒh‚ðŠm”F - if (langBit == ROMHEADER_FOR_CHINA_BIT) - { - // for CHINA - ret |= (0x0001 << NVRAM_CONFIG_LANG_CHINESE); - } - else if (langBit == ROMHEADER_FOR_KOREA_BIT) - { - // for KOREA - ret |= (0x0001 << NVRAM_CONFIG_LANG_HANGUL); - } - return ret; -} - -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCDEx - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - 3: ƒAƒvƒŠ‚Ì‹N“®‚ð—}§‚·‚ׂ«B - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCDEx(NVRAMConfigEx * ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚é‚© - if (IsValidConfigEx()) - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚éê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - calc_crc = - SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd_ex), sizeof(NVRAMConfigDataEx)); - if ((ncdsp[i].crc16_ex == calc_crc) - && ((0x0001 << ncdsp[i].ncd_ex.language) & - (ncdsp[i].ncd_ex.valid_language_bitmap))) - { - // Šg’£ƒf[ƒ^—p CRC ‚ª³‚µ‚­Aݒ茾ŒêƒR[ƒh‚ª‘ΉžŒ¾ŒêƒR[ƒh‚Ɋ܂܂ê‚éꇂɳ“–‚Æ”»’f - if (rom_valid_language & ncdsp[i].ncd_ex.valid_language_bitmap) - { - // Šg’£Œ¾ŒêƒR[ƒh‚Å’Ê팾ŒêƒR[ƒh‚ðã‘‚« - ncdsp[i].ncd.option.language = ncdsp[i].ncd_ex.language; - } - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE) & ~ncdsp[i]. - ncd_ex.valid_language_bitmap) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚邪A - // IPL2‚̑ΉžŒ¾ŒêƒR[ƒh‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªŠÜ‚Ü‚ê‚È‚¢ê‡‚Í‹N“®‚ð—}§ - return 3; - } - crc_flag |= (1 << i); - } - } - } - } - else - { - // IPL‚ªŠg’£Œ¾ŒêƒR[ƒh‚ɑΉž‚µ‚Ä‚¢‚È‚¢ê‡ - u16 rom_valid_language = GetRomValidLanguage(); - - if (rom_valid_language & (0x0001 << NVRAM_CONFIG_LANG_CHINESE)) - { - // ROM “à“o˜^ƒGƒŠƒA‚É"’†‘Œê"Šg’£Œ¾ŒêƒR[ƒh‚ªÝ’肳‚ê‚Ä‚¢‚éꇂ͋N“®‚ð—}§ - return 3; - } - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC ‚ª³‚µ‚­ saveCount ’l‚ª 0x80 –¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’f - crc_flag |= (1 << i); - } - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} - -#else -/*---------------------------------------------------------------------------* - Name: CheckCorrectNCD - - Description: ƒ~ƒ‰[ƒŠƒ“ƒO‚³‚ê‚Ä‚¢‚郆[ƒU[î•ñ‚̂ǂ¿‚ç‚ðŽg‚¤‚ׂ«‚©”»’è‚·‚éB - - Arguments: nvdsp - ”äŠr‚·‚éƒRƒ“ƒtƒBƒOƒf[ƒ^‚Q‚‚̔z—ñB - - Returns: s32 - 0: —¼•û•s“KØB - 1: ”z—ñ[ 0 ]‚ª“KØB - 2: ”z—ñ[ 1 ]‚ª“KØB - *---------------------------------------------------------------------------*/ -static s32 CheckCorrectNCD(NVRAMConfig *ncdsp) -{ - u16 i; - u16 calc_crc; - s32 crc_flag = 0; - u16 saveCount; - - // Šeƒ~ƒ‰[ƒf[ƒ^‚ÌCRC & saveCount³“–«ƒ`ƒFƒbƒN - for (i = 0; i < 2; i++) - { - calc_crc = SVC_GetCRC16(0xffff, (void *)(&ncdsp[i].ncd), sizeof(NVRAMConfigData)); - - if ((ncdsp[i].crc16 == calc_crc) && (ncdsp[i].saveCount < NVRAM_CONFIG_SAVE_COUNT_MAX)) - { - // CRC‚ª³‚µ‚­AsaveCount’l‚ª0x80–¢–ž‚̃f[ƒ^‚𳓖‚Æ”»’fB - crc_flag |= (1 << i); - } - } - - // ³“–‚ȃf[ƒ^‚Ì‚¤‚¿‚ǂ̃f[ƒ^‚ª—LŒø‚©‚ð”»’è‚·‚éB - switch (crc_flag) - { - case 1: - case 2: - // •Еû‚ÌCRC‚¾‚¯³í - return crc_flag; - - case 3: - // —¼•û‚Æ‚àCRC‚ª³‚µ‚¯‚ê‚΂ǂ¿‚炪ÅV‚̃f[ƒ^‚©”»’f‚·‚éB - saveCount = (u8)((ncdsp[0].saveCount + 1) & NVRAM_CONFIG_SAVE_COUNT_MASK); - if (saveCount == ncdsp[1].saveCount) - { - return 2; - } - return 1; - } - - // —¼•û‚Æ‚àCRC‚ª•s³ - return 0; -} -#endif - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - Description: V ƒuƒ‰ƒ“ƒNŠ„‚螂݃xƒNƒ^B - Arguments: None. - Returns: None. - *---------------------------------------------------------------------------*/ -extern BOOL PMi_Initialized; -extern void PM_SelfBlinkProc(void); - -static void -VBlankIntr(void) -{ - if (PMi_Initialized) - { - PM_SelfBlinkProc(); - } -} diff --git a/build/tests/TestComponent/ARM9.TWL/ARM9-TS.lsf b/build/tests/TestComponent/ARM9.TWL/ARM9-TS.lsf deleted file mode 100644 index 9e89469d..00000000 --- a/build/tests/TestComponent/ARM9.TWL/ARM9-TS.lsf +++ /dev/null @@ -1,57 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ARM9-TS.lsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL LCF SPEC FILE -# - -Static $(TARGET_NAME) -{ - Address $(ADDRESS_STATIC) - Object $(OBJS_STATIC) - Library $(LLIBS) $(GLIBS) $(CW_LIBS) - StackSize 4096 4096 -} - -Autoload ITCM -{ - Address $(ADDRESS_ITCM) - Object * (.itcm) - Object $(OBJS_AUTOLOAD) (.text) - Object $(OBJS_AUTOLOAD) (.rodata) - Object $(OBJS_AUTOLOAD) (.init) - Object $(OBJS_AUTOLOAD) (.ctor) - Object $(OBJS_AUTOLOAD) (.sinit) -} - -Autoload DTCM -{ - Address $(ADDRESS_DTCM) - Object * (.dtcm) - Object $(OBJS_AUTOLOAD) (.data) - Object $(OBJS_AUTOLOAD) (.sdata) - Object $(OBJS_AUTOLOAD) (.bss) - Object $(OBJS_AUTOLOAD) (.sbss) -} - -Ltdautoload LTDMAIN -{ - # NITRO/TWL ‹¤—L‚̃I[ƒo[ƒŒƒC‚ªÝ‚éꇂÍA‚³‚ç‚É‚»‚ÌŒã‚ë‚É”z’u‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - After $(TARGET_NAME) - Object * (.ltdmain) - Object $(OBJS_LTDAUTOLOAD) - Library $(LLIBS_EX) $(GLIBS_EX) -} diff --git a/build/tests/TestComponent/ARM9.TWL/Makefile b/build/tests/TestComponent/ARM9.TWL/Makefile deleted file mode 100644 index 755c4c59..00000000 --- a/build/tests/TestComponent/ARM9.TWL/Makefile +++ /dev/null @@ -1,130 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - systemMenu_RED - NandInitializerRed -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- - -#============================================================================ -#»•iŒ®‚ðŽg‚Á‚½‘‚«ž‚Ý‚ðs‚¤ê‡‚ÍATwlIPL/build/buildtools/commondefs‚Ì"FIRM_USE_PRODUCT_KEYS=TRUE"‚ð—LŒø‚É‚µ‚Ä‚­‚¾‚³‚¢B -#============================================================================ -#============================================================================ -# ƒƒCƒ„ƒŒƒX‚Ì‹­§Disableƒtƒ‰ƒO‚ðÝ’è‰Â”\‚É‚·‚éꇒè‹`‚µ‚Ü‚·Bi—v:Make Cleanj -MACRO_FLAGS += -DUSE_WIRELESS_FORCE_DISABLE_SETTING -#============================================================================ -#============================================================================ -# ŠeŽíƒf[ƒ^‚ð‘‚«ž‚݉”\‚É‚·‚éꇒè‹`‚µ‚Ü‚·Bi—v:Make Cleanj -# ‹ï‘Ì“I‚É‚Í TWLFontTable.dat wrap.bin cert.sys ‚Ì3‚‚ł·B -MACRO_FLAGS += -DUSE_WRITE_VARIOUS_DATA -#============================================================================ -#============================================================================ -# dev.kp‚ð‘‚«ž‚݉”\‚É‚·‚éꇒè‹`‚µ‚Ü‚·Bi—v:Make Cleanj -#MACRO_FLAGS += -DWRITE_DEVKP_ENABLE -#============================================================================ -#============================================================================ -# ƒ}ƒŠƒNƒ‰ƒfƒoƒbƒO—p‚Æ‚µ‚Ä쬂·‚éꇒè‹`‚µ‚Ü‚·Bi—v:Make Cleanj -# EŽ©“®ˆ—‚É‚¨‚¢‚Ä"nand:/shared2/launcher/wrap.bin"‚ð쬂µ‚Ü‚·B -# EŽ©“®ˆ—‚É‚¨‚¢‚ÄŠJ”­—pCLS‚ÌØ–¾‘(cert.sys)‚ð‘‚«ž‚݂܂·B -# EŽ©“®ˆ—‚ÌÅŒã‚É–{‘̉Šú‰»‚ðs‚¢‚Ü‚·B -#MACRO_FLAGS += -DMARIOCLUB_VERSION -#============================================================================ - -SYSM_DISABLE_DEBUG = FALSE - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - -#TARGET_CODEGEN = THUMB - -TITLEID_LO = 0NRA -#TARGET_TAD = - -TARGET_BIN = TestComponent.srl -LCFILE_SPEC = ARM9-TS.lsf -ROM_SPEC = main.rsf - -MAKEROM_ARM7_BASE = $(SYSMENU_COMPONENTSDIR)/armadillo_uji/$(TWL_BUILDTYPE_ARM7)/armadillo -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -SRCS = main.c \ - kami_pxi.c \ - font_data.c \ - graphics.c \ - keypad.c \ - kami_font.c \ - - -LINCLUDES = ../common/include \ - $(ROOT)/build/libraries/lcfg/ARM9.TWL/include \ - ../../../systemMenu_tools/common/ARM9/include - -SRCDIR = src \ - ../../../systemMenu_tools/HWInfoWriter/ARM9/src \ - ../../../systemMenu_tools/common/ARM9/src - -#LCFILE = # using default - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - - -ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) -ifdef FIRM_USE_PRODUCT_KEYS -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo.der' \ - -DHWID_PRIVKEY='private_HWID.der' -else -MAKEROM_FLAGS += -DHWINFO_PRIVKEY='private_HWInfo_dev.der' \ - -DHWID_PRIVKEY='private_HWID_dev.der' -endif -endif - -MAKEROM_FLAGS += -DTITLEID_LO='$(TITLEID_LO)' \ - -DPRIVKEY_PATH='$(TWL_KEYSDIR)/rsa' \ - -DCARD_REGION='$(CARD_REGION)' \ - -DDISABLE_DEBUG='$(SYSM_DISABLE_DEBUG)' - -MAKETAD_FLAGS += -s - -SYSMENU_LIBS = \ - libnamut$(TWL_LIBSUFFIX).a - -SDK_APPEND_LIBS = \ - libes$(TWL_LIBSUFFIX).a \ - libboc$(TWL_LIBSUFFIX).a \ - libsfs$(TWL_LIBSUFFIX).a \ - libnam$(TWL_LIBSUFFIX).a \ - libsea$(TWL_LIBSUFFIX).a \ - liblcfg$(TWL_LIBSUFFIX).a \ - libna$(TWL_LIBSUFFIX).a - -LLIBRARIES += $(SYSMENU_LIBS) $(SDK_APPEND_LIBS) - -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#LDIRT_CLEAN = -#INSTALL_TARGETS = -INSTALL_DIR = $(SDK_NMENU_DATADIR) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#include $(TWLSDK_ROOT)/build/buildtools/modulerules -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/TestComponent/ARM9.TWL/include/graphics.h b/build/tests/TestComponent/ARM9.TWL/include/graphics.h deleted file mode 100644 index ddd8c4f6..00000000 --- a/build/tests/TestComponent/ARM9.TWL/include/graphics.h +++ /dev/null @@ -1,46 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: graphics.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef GRAPHICS_H_ -#define GRAPHICS_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -void InitGraphics(void); -void DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* GRAPHICS_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/include/kami_font.h b/build/tests/TestComponent/ARM9.TWL/include/kami_font.h deleted file mode 100644 index d9855fd0..00000000 --- a/build/tests/TestComponent/ARM9.TWL/include/kami_font.h +++ /dev/null @@ -1,95 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef KAMI_FONT_H_ -#define KAMI_FONT_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -extern u8 prog_state; -enum -{ STATE_NONE, STATE_SELECT, STATE_KS_PARENTINIT, STATE_KS_PARENT, STATE_KS_CHILDINIT, - STATE_KS_CHILDSCAN, STATE_KS_CHILD -}; -extern OSHeapHandle heapHandle; // Heapƒnƒ“ƒhƒ‹; - -extern const u16 BgScDataMain[32 * 24]; -extern const u16 BgScDataSub[32 * 24]; -extern const u32 sampleCharData[8 * 0x100]; -extern const u16 PlttDataObj[16][16]; -extern const u16 PlttDataMain[16][16]; -extern const u16 PlttDataSub[16][16]; - -void kamiFontInit(void); -void kamiFontClear(void); -void kamiFontClearMain(void); -void kamiFontPut(u16 x, u16 y, u16 color, u16 no); -void kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...); -void kamiFontFill(s16 x, s16 y, u8 color, s16 value, s32 length); -void kamiFontFillChar(int lineNo, u8 color1, u8 color2); -void kamiFontLoadScreenData(void); -void kamiFontPrintfConsole(u8 color, const char *text, ...); -void kamiFontPrintfConsoleEx(u8 color, const char *text, ...); - -// ã‰æ–ʃRƒ“ƒ\[ƒ‹•¶Žš—ñ—pƒpƒŒƒbƒg -#define CONSOLE_ORANGE 0 -#define CONSOLE_RED 1 -#define CONSOLE_GREEN 2 - -// ‰º‰æ–ʃtƒHƒ“ƒg—pƒpƒŒƒbƒg -#define FONT_COLOR_BLACK 0 -#define FONT_COLOR_RED 1 -#define FONT_COLOR_GREEN 2 -#define FONT_COLOR_BLUE 3 -#define FONT_COLOR_YELLOW 4 -#define FONT_COLOR_CYAN 5 -#define FONT_COLOR_PURPLE 6 - -// ‰º‰æ–Ê”wŒi—pƒpƒŒƒbƒg -#define BG_COLOR_TRANS 0 -#define BG_COLOR_WHITE 1 -#define BG_COLOR_BLACK 2 -#define BG_COLOR_GRAY 3 -#define BG_COLOR_PURPLE 4 -#define BG_COLOR_PINK 5 -#define BG_COLOR_BLUE 6 -#define BG_COLOR_GREEN 7 -#define BG_COLOR_VIOLET 8 -#define BG_COLOR_RED 9 -#define BG_COLOR_YELLOW 10 -#define BG_COLOR_BROWN 11 - -#define BG_COLOR_NONE 0xff - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_FONT_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/include/kami_pxi.h b/build/tests/TestComponent/ARM9.TWL/include/kami_pxi.h deleted file mode 100644 index a9ca7a50..00000000 --- a/build/tests/TestComponent/ARM9.TWL/include/kami_pxi.h +++ /dev/null @@ -1,123 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef TWL_KAMI_TEST_KAMITEST_H_ -#define TWL_KAMI_TEST_KAMITEST_H_ - -#include "fifo.h" - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -// ˆ—Œ‹‰Ê’è‹` -typedef enum KAMIResult -{ - KAMI_RESULT_SUCCESS = 0, - KAMI_RESULT_SUCCESS_TRUE = 0, - KAMI_RESULT_SUCCESS_FALSE, - KAMI_RESULT_INVALID_COMMAND, - KAMI_RESULT_INVALID_PARAMETER, - KAMI_RESULT_ILLEGAL_STATUS, - KAMI_RESULT_BUSY, - KAMI_RESULT_FATAL_ERROR, - KAMI_RESULT_SEND_ERROR, - KAMI_RESULT_MAX -} -KAMIResult; - - -typedef enum { - FORMAT_MODE_QUICK, // QuickƒtƒH[ƒ}ƒbƒg - FORMAT_MODE_FULL // FullƒtƒH[ƒ}ƒbƒg(Šeƒp[ƒeƒBƒVƒ‡ƒ““à‚ð0xFF‚Å–„‚ß‚éj -} FormatMode; - -// ƒR[ƒ‹ƒoƒbƒN -typedef void (*KAMICallback)(KAMIResult result, void *arg); - - -void KamiPxiInit( void ); - -KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback); -KAMIResult ExeFormat(FormatMode format_mode); -KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read); -KAMIResult kamiMcuWriteFirm(void* buffer ); -KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read); -KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read); -KAMIResult kamiCDC_GoDsMode( void ); -KAMIResult kamiClearNandErrorLog( void ); -KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg ); -KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes ); -KAMIResult kamiGetNandCID( void* buffer ); -KAMIResult kamiCodecIo(u8 page, u8 reg_no, u8* buffer, u8 value, BOOL is_read); - -// (d—v) -// ARM7‚ª“ǂݑ‚«‚·‚邽‚߃Š[ƒh‘O‚ÍInvalidateAƒ‰ƒCƒg‘O‚̓tƒ‰ƒbƒVƒ…‚µ‚Ä‚­‚¾‚³‚¢B -// -static KAMIResult kamiNandRead(u32 block, void* buffer, u32 count) -{ - return kamiNandIo(block, buffer, count, TRUE); -} -static KAMIResult kamiNandWrite(u32 block, void* buffer, u32 count) -{ - return kamiNandIo(block, buffer, count, FALSE); -} -static KAMIResult kamiMcuRead(u8 reg_no, void* buffer) -{ - return kamiMcuIo((u32)reg_no, buffer, 0, TRUE); -} -static KAMIResult kamiMcuWrite(u8 reg_no, u8 value) -{ - return kamiMcuIo((u32)reg_no, NULL, (u32)value, FALSE); -} -static KAMIResult kamiARM7Read(u32 addr, void* buffer) -{ - return kamiARM7Io(addr, buffer, 0, TRUE); -} -static KAMIResult kamiARM7Write(u32 addr, u8 value) -{ - return kamiARM7Io(addr, NULL, value, FALSE); -} - -static KAMIResult kamiCodecRead(u8 page, u8 reg_no, u8* buffer) -{ - return kamiCodecIo(page, reg_no, buffer, 0, TRUE); -} - -static KAMIResult kamiCodecWrite(u8 page, u8 reg_no, u8 value) -{ - return kamiCodecIo(page, reg_no, NULL, value, FALSE); -} - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_KAMI_TEST_KAMITEST_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/include/keypad.h b/build/tests/TestComponent/ARM9.TWL/include/keypad.h deleted file mode 100644 index 2f5a1602..00000000 --- a/build/tests/TestComponent/ARM9.TWL/include/keypad.h +++ /dev/null @@ -1,48 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef KAMI_KEY_PAD_H_ -#define KAMI_KEY_PAD_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -#include - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -void kamiPadRead(void); -BOOL kamiPadIsTrigger(u16 key); -BOOL kamiPadIsRepeatTrigger(u16 key); -BOOL kamiPadIsPress(u16 key); - -/*===========================================================================*/ - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* KAMI_KEY_PAD_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/main.rsf b/build/tests/TestComponent/ARM9.TWL/main.rsf deleted file mode 100644 index 7d39d6cb..00000000 --- a/build/tests/TestComponent/ARM9.TWL/main.rsf +++ /dev/null @@ -1,232 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-BB.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - RomVersion 2 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 2G - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile ../banner/banner.bnr - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD] - # don't have to edit - # - WramMapping MAP_TS_SCR - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - CommonClientKey TRUE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - HwAESSlotB TRUE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - HwAESSlotC TRUE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SCFG: scfg lock [TRUE/FALSE] - # - LockSCFG FALSE - - # - # DisableDebug FÅIROM‚Å‚ÍAŽÀsŽž‚ɃfƒoƒbƒO‚Å‚«‚È‚¢‚悤‚ÉTRUE‚É‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B - # - DisableDebug $(DISABLE_DEBUG) - - ### - #### END -} - - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - GameCode $(TITLEID_LO) - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 32K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 16K - - # - # Enable SubBannerFile - #SubBannerFile TRUE -} - - -RomSpec -{ - Offset 0x00000000 - Segment ALL -# HostRoot $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/NandInitializerRed/data -# Root /data -# File cert.sys -# HostRoot $(PRIVKEY_PATH) -# Root /key -# File $(HWINFO_PRIVKEY) $(HWID_PRIVKEY) -} diff --git a/build/tests/TestComponent/ARM9.TWL/src/font_data.c b/build/tests/TestComponent/ARM9.TWL/src/font_data.c deleted file mode 100644 index aa1ba501..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/font_data.c +++ /dev/null @@ -1,734 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: font_data.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include - -/*---------------------- ‚a‚fƒXƒNƒŠ[ƒ“ ---------------------------*/ - -const u16 BgScDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -const u16 BgScDataSub[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -/*---------------------- ƒpƒŒƒbƒgƒf[ƒ^ ---------------------------*/ -#define RGB555(r,g,b) (b<<10|g<<5|r) - -const u16 PlttDataObj[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(31, 0, 0), RGB555(5, 5, 20),}, // Black - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White -}; - -// ã‰æ–ʃRƒ“ƒ\[ƒ‹•¶Žš—ñƒpƒŒƒbƒg -const u16 PlttDataMain[16][16] = { - {RGB555( 0, 0, 0), RGB555(31, 10, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Orange - {RGB555(31, 31, 31), RGB555(31, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555(0, 31, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555(0, 0, 31), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(31, 31, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(31, 0, 31), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555( 0, 0, 0), RGB555(0, 0, 0), RGB555(0, 0, 0), RGB555(0, 0, 0),}, // Black -}; - -// ‰º‰æ–ʃRƒ“ƒ\[ƒ‹•¶Žš—ñƒpƒŒƒbƒg -const u16 PlttDataSub[16][16] = { - {RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(25, 25, 25), RGB555(31, 31, 31),}, // Black - {RGB555(31, 31, 31), RGB555(21, 0, 0), RGB555(31, 0, 0), RGB555(31, 0, 0),}, // Red - {RGB555(31, 31, 31), RGB555( 0, 21, 0), RGB555(0, 31, 0), RGB555(0, 31, 0),}, // Green - {RGB555(31, 31, 31), RGB555( 0, 0, 21), RGB555(0, 0, 31), RGB555(0, 0, 31),}, // Blue - {RGB555(31, 31, 31), RGB555(21, 21, 0), RGB555(31, 31, 0), RGB555(31, 31, 0),}, // Yellow - {RGB555(31, 31, 31), RGB555(0, 21, 21), RGB555(0, 31, 31), RGB555(0, 31, 31),}, // Cyan - {RGB555(31, 31, 31), RGB555(21, 0, 21), RGB555(31, 0, 31), RGB555(31, 0, 31),}, // Purple - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(20, 20, 20), RGB555(20, 20, 20), RGB555(20, 20, 20),}, // Gray - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555(31, 31, 31),}, // White - - // ”wŒiƒJƒ‰[‚Í‚±‚Ì16”ÔƒpƒŒƒbƒg - // ”’ • ŠD ‚ނ炳‚« ƒsƒ“ƒN ‚Ý‚¸‚¢‚ë —Î ÂŽ‡ Ô ‰© ’ƒ - {RGB555(31, 31, 31), RGB555(31, 31, 31), RGB555( 0, 0, 0), RGB555(20, 20, 20), RGB555(31, 15, 31), RGB555(31, 20, 20), RGB555(20, 29, 31), RGB555(20, 31, 20), RGB555(21, 21, 31), RGB555(31, 0, 0), RGB555(31, 31, 10), RGB555(25, 15, 15), RGB555(31, 31, 31), RGB555(31, 31, 31), } // White -}; - -/*---------------------- ƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^ -------------------------*/ - -const u32 sampleCharData[8 * 0x100] = { - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0000h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x11111111, 0x11111111, // 0001h use for import progress bar - 0x11111111, 0x11111111, 0x00000000, 0x00000000, - 0x00000000, 0x01011010, 0x01010010, 0x00010010, // 0002h - 0x00100010, 0x00100010, 0x00100001, 0x00100001, - 0x00000000, 0x01010001, 0x01010001, 0x01111111, // 0003h - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01010000, 0x01111111, 0x00100000, // 0004h - 0x00100000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x01010000, 0x01010100, 0x00001010, // 0005h - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011000, 0x01011000, 0x01111111, // 0006h - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01010010, 0x01101111, 0x01010010, // 0007h - 0x00010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x01010010, 0x01011111, 0x00000100, // 0008h - 0x00011111, 0x00001000, 0x00000001, 0x00011110, - 0x00000000, 0x01010000, 0x01011000, 0x00000110, // 0009h - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x01010000, 0x01111101, 0x00010001, // 000ah - 0x00010001, 0x00010001, 0x00010001, 0x00001010, - 0x00000000, 0x01010000, 0x01011110, 0x00100000, // 000bh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010100, 0x01011111, 0x00001000, // 000ch - 0x00010000, 0x00000001, 0x00000001, 0x00011110, - 0x00000000, 0x01010001, 0x01010001, 0x00000001, // 000dh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00011000, // 000eh - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x01010010, 0x01111111, 0x00010010, // 000fh - 0x00010010, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00001110, 0x01010100, 0x01010010, // 0010h - 0x00111111, 0x00000100, 0x00000100, 0x00011000, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 0011h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x01010100, 0x01011111, 0x00000010, // 0012h - 0x00011110, 0x00100001, 0x00100000, 0x00011110, - 0x00000000, 0x01010000, 0x01011100, 0x00100011, // 0013h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01010000, 0x01111111, 0x00010000, // 0014h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x01010010, 0x01010010, 0x00001100, // 0015h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x01010001, 0x01111101, 0x00010001, // 0016h - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01010100, 0x01010011, 0x01110010, // 0017h - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01011110, 0x01011000, 0x00000100, // 0018h - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01010000, 0x01011100, 0x00010010, // 0019h - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01011101, 0x01010001, 0x00111101, // 001ah - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x01110001, 0x01011101, 0x00110001, // 001bh - 0x00010001, 0x00111001, 0x01010101, 0x00011001, - 0x00000000, 0x01110100, 0x01010011, 0x00110010, // 001ch - 0x00010001, 0x00010001, 0x00001010, 0x00000100, - 0x00000000, 0x01101110, 0x01011000, 0x00100100, // 001dh - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x01110000, 0x01011100, 0x00110010, // 001eh - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x01010001, 0x00111101, // 001fh - 0x00010001, 0x00011001, 0x00110101, 0x00001001, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 0020h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 0021h - 0x00001000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x01101100, 0x01001000, 0x00100100, // 0022h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00100100, 0x01111111, 0x00100100, // 0023h - 0x00100100, 0x01111111, 0x00010010, 0x00010010, - 0x00000000, 0x00001000, 0x01111110, 0x00001001, // 0024h - 0x00111110, 0x01001000, 0x00111111, 0x00001000, - 0x00000000, 0x01000010, 0x00100101, 0x00010010, // 0025h - 0x00001000, 0x00100100, 0x01010010, 0x00100001, - 0x00000000, 0x00001110, 0x00010001, 0x00001001, // 0026h - 0x01000110, 0x00101001, 0x00110001, 0x01001110, - 0x00000000, 0x00011000, 0x00010000, 0x00001000, // 0027h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01110000, 0x00001000, 0x00000100, // 0028h - 0x00000100, 0x00000100, 0x00001000, 0x01110000, - 0x00000000, 0x00000111, 0x00001000, 0x00010000, // 0029h - 0x00010000, 0x00010000, 0x00001000, 0x00000111, - 0x00000000, 0x00001000, 0x01001001, 0x00101010, // 002ah - 0x00011100, 0x00101010, 0x01001001, 0x00001000, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 002bh - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002ch - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002dh - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 002eh - 0x00000000, 0x00000000, 0x00000000, 0x00001100, - 0x00000000, 0x01000000, 0x00100000, 0x00010000, // 002fh - 0x00001000, 0x00000100, 0x00000010, 0x00000001, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0030h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00011100, 0x00010000, 0x00010000, // 0031h - 0x00010000, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0032h - 0x00111110, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x00111110, 0x01000001, 0x01000000, // 0033h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00100000, 0x00110000, 0x00101000, // 0034h - 0x00100100, 0x00100010, 0x01111111, 0x00100000, - 0x00000000, 0x01111111, 0x00000001, 0x00111111, // 0035h - 0x01000000, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x00000001, 0x00111111, // 0036h - 0x01000001, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00100000, 0x00100000, // 0037h - 0x00010000, 0x00010000, 0x00001000, 0x00001000, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0038h - 0x00111110, 0x01000001, 0x01000001, 0x00111110, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 0039h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003ah - 0x00000000, 0x00000000, 0x00001100, 0x00000000, - 0x00000000, 0x00000000, 0x00001100, 0x00000000, // 003bh - 0x00000000, 0x00001100, 0x00001000, 0x00000100, - 0x00000000, 0x01100000, 0x00011000, 0x00000110, // 003ch - 0x00000001, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00000000, 0x01111111, 0x00000000, // 003dh - 0x00000000, 0x00000000, 0x01111111, 0x00000000, - 0x00000000, 0x00000011, 0x00001100, 0x00110000, // 003eh - 0x01000000, 0x00110000, 0x00001100, 0x00000011, - 0x00000000, 0x00111110, 0x01000001, 0x01000001, // 003fh - 0x00110000, 0x00001000, 0x00000000, 0x00001000, - 0x00000000, 0x00011100, 0x00100010, 0x01001001, // 0040h - 0x01010101, 0x01010101, 0x01010101, 0x00111010, - 0x00000000, 0x00001000, 0x00010100, 0x00010100, // 0041h - 0x00100010, 0x00111110, 0x01000001, 0x01000001, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0042h - 0x00111111, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0043h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x00011111, 0x00100001, 0x01000001, // 0044h - 0x01000001, 0x01000001, 0x00100001, 0x00011111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0045h - 0x01111111, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01111111, 0x00000001, 0x00000001, // 0046h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00111100, 0x01000010, 0x00000001, // 0047h - 0x01111001, 0x01000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0048h - 0x01111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x00001000, 0x00001000, // 0049h - 0x00001000, 0x00001000, 0x00001000, 0x00111110, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 004ah - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01100001, 0x00011001, 0x00000101, // 004bh - 0x00000011, 0x00000101, 0x00011001, 0x01100001, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 004ch - 0x00000001, 0x00000001, 0x00000001, 0x01111111, - 0x00000000, 0x01000001, 0x01100011, 0x01010101, // 004dh - 0x01001001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x01000001, 0x01000011, 0x01000101, // 004eh - 0x01001001, 0x01010001, 0x01100001, 0x01000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 004fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0050h - 0x00111111, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00011100, 0x00100010, 0x01000001, // 0051h - 0x01000001, 0x01011001, 0x00100010, 0x01011100, - 0x00000000, 0x00111111, 0x01000001, 0x01000001, // 0052h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00111110, 0x01000001, 0x00000001, // 0053h - 0x00111110, 0x01000000, 0x01000001, 0x00111110, - 0x00000000, 0x01111111, 0x00001000, 0x00001000, // 0054h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0055h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x01000001, 0x01000001, 0x00100010, // 0056h - 0x00100010, 0x00010100, 0x00010100, 0x00001000, - 0x00000000, 0x01000001, 0x01000001, 0x01000001, // 0057h - 0x01001001, 0x01010101, 0x01100011, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0058h - 0x00001000, 0x00010100, 0x00100010, 0x01000001, - 0x00000000, 0x01000001, 0x00100010, 0x00010100, // 0059h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01111111, 0x00100000, 0x00010000, // 005ah - 0x00001000, 0x00000100, 0x00000010, 0x01111111, - 0x00000000, 0x01111100, 0x00000100, 0x00000100, // 005bh - 0x00000100, 0x00000100, 0x00000100, 0x01111100, - 0x00000000, 0x00100010, 0x00010100, 0x00111110, // 005ch - 0x00001000, 0x00111110, 0x00001000, 0x00001000, - 0x00000000, 0x00011111, 0x00010000, 0x00010000, // 005dh - 0x00010000, 0x00010000, 0x00010000, 0x00011111, - 0x00000000, 0x00001000, 0x00010100, 0x00100010, // 005eh - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 005fh - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x00010000, 0x00001000, 0x00011000, // 0060h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00011110, 0x00100001, // 0061h - 0x00111110, 0x00100001, 0x00100001, 0x01011110, - 0x00000000, 0x00000001, 0x00000001, 0x00111111, // 0062h - 0x01000001, 0x01000001, 0x01000001, 0x00111111, - 0x00000000, 0x00000000, 0x00111100, 0x01000010, // 0063h - 0x00000001, 0x00000001, 0x01000010, 0x00111100, - 0x00000000, 0x01000000, 0x01000000, 0x01111110, // 0064h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0065h - 0x01111111, 0x00000001, 0x01000001, 0x00111110, - 0x00000000, 0x00110000, 0x00001000, 0x00001000, // 0066h - 0x01111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x01111110, 0x01000001, // 0067h - 0x01000001, 0x01111110, 0x01000000, 0x00111110, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0068h - 0x00111111, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00001000, 0x00000000, 0x00001000, // 0069h - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00100000, 0x00000000, 0x00100000, // 006ah - 0x00100000, 0x00100001, 0x00100001, 0x00011110, - 0x00000000, 0x00000001, 0x00000001, 0x01100001, // 006bh - 0x00011001, 0x00000111, 0x00011001, 0x01100001, - 0x00000000, 0x00001000, 0x00001000, 0x00001000, // 006ch - 0x00001000, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00110111, 0x01001001, // 006dh - 0x01001001, 0x01001001, 0x01001001, 0x01001001, - 0x00000000, 0x00000000, 0x00111111, 0x01000001, // 006eh - 0x01000001, 0x01000001, 0x01000001, 0x01000001, - 0x00000000, 0x00000000, 0x00011100, 0x00100010, // 006fh - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00000000, 0x00111101, 0x01000011, // 0070h - 0x01000001, 0x01000011, 0x00111101, 0x00000001, - 0x00000000, 0x00000000, 0x01011110, 0x01100001, // 0071h - 0x01000001, 0x01100001, 0x01011110, 0x01000000, - 0x00000000, 0x00000000, 0x00110001, 0x00001101, // 0072h - 0x00000011, 0x00000001, 0x00000001, 0x00000001, - 0x00000000, 0x00000000, 0x00111110, 0x01000001, // 0073h - 0x00001110, 0x00110000, 0x01000001, 0x00111110, - 0x00000000, 0x00000100, 0x00000100, 0x01111111, // 0074h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0075h - 0x01000001, 0x01000001, 0x01000001, 0x01111110, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0076h - 0x00100010, 0x00100010, 0x00010100, 0x00001000, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0077h - 0x01001001, 0x00101010, 0x00101010, 0x00010100, - 0x00000000, 0x00000000, 0x00100001, 0x00010010, // 0078h - 0x00001100, 0x00001100, 0x00010010, 0x00100001, - 0x00000000, 0x00000000, 0x01000001, 0x01000001, // 0079h - 0x00100010, 0x00011100, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111111, 0x00010000, // 007ah - 0x00001000, 0x00000100, 0x00000010, 0x00111111, - 0x00000000, 0x00001000, 0x00011110, 0x01100100, // 007bh - 0x00011000, 0x00100100, 0x00000100, 0x01111000, - 0x00000000, 0x00000000, 0x00011110, 0x00000100, // 007ch - 0x00011110, 0x00110101, 0x00101101, 0x00010010, - 0x00000000, 0x00000000, 0x00000000, 0x00010001, // 007dh - 0x00100001, 0x00100001, 0x00000001, 0x00000010, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007eh - 0x00011110, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00011100, 0x00000000, // 007fh - 0x00111110, 0x00010000, 0x00001100, 0x00110010, - 0x00000000, 0x00000000, 0x00000100, 0x00101111, // 0080h - 0x01000100, 0x00011110, 0x00100101, 0x00010110, - 0x00000000, 0x00000000, 0x00001010, 0x00011110, // 0081h - 0x00101011, 0x00100010, 0x00010100, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00011101, // 0082h - 0x00101011, 0x00101001, 0x00011001, 0x00000100, - 0x00000000, 0x00000000, 0x00001000, 0x00111000, // 0083h - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00000000, 0x00000000, 0x00011100, // 0084h - 0x00100011, 0x00100000, 0x00100000, 0x00011100, - 0x00000000, 0x00000110, 0x01001001, 0x00110000, // 0085h - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000100, 0x00111111, 0x00000100, // 0086h - 0x00111110, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000000, 0x00100001, 0x01000001, // 0087h - 0x01000001, 0x01000001, 0x00000001, 0x00000010, - 0x00000000, 0x00111100, 0x00000000, 0x00111110, // 0088h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00011100, 0x00000000, 0x00111110, // 0089h - 0x00010000, 0x00001000, 0x00010100, 0x01100010, - 0x00000000, 0x00100100, 0x01011111, 0x00000100, // 008ah - 0x00111110, 0x01000101, 0x01000101, 0x00100010, - 0x00000000, 0x00100010, 0x01001111, 0x01010010, // 008bh - 0x01010010, 0x00010010, 0x00010010, 0x00001001, - 0x00000000, 0x00000100, 0x00111110, 0x00001000, // 008ch - 0x00111110, 0x00010000, 0x00000010, 0x00111100, - 0x00000000, 0x00100000, 0x00011000, 0x00000110, // 008dh - 0x00000001, 0x00000110, 0x00011000, 0x00100000, - 0x00000000, 0x00100000, 0x01111101, 0x00100001, // 008eh - 0x00100001, 0x00100001, 0x00100001, 0x00010010, - 0x00000000, 0x00011110, 0x00100000, 0x00000000, // 008fh - 0x00000000, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00001000, 0x01111111, 0x00010000, // 0090h - 0x00100000, 0x00000010, 0x00000010, 0x00111100, - 0x00000000, 0x00000001, 0x00000001, 0x00000001, // 0091h - 0x01000001, 0x01000001, 0x00100010, 0x00011100, - 0x00000000, 0x00010000, 0x01111111, 0x00011000, // 0092h - 0x00010100, 0x00010100, 0x00011000, 0x00001100, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 0093h - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x00111100, 0x00010000, 0x00001100, // 0094h - 0x01111111, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000100, 0x00011111, 0x00000100, // 0095h - 0x01110100, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00001000, 0x01111111, 0x00000100, // 0096h - 0x00111100, 0x01000010, 0x01000000, 0x00111100, - 0x00000000, 0x00000000, 0x00011100, 0x00100011, // 0097h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01111111, 0x00010000, 0x00001000, // 0098h - 0x00001000, 0x00001000, 0x00001000, 0x00110000, - 0x00000000, 0x00000010, 0x00110010, 0x00001100, // 0099h - 0x00000010, 0x00000001, 0x00000001, 0x00111110, - 0x00000000, 0x00100100, 0x01001111, 0x01000010, // 009ah - 0x00010001, 0x00111100, 0x00010010, 0x00001100, - 0x00000000, 0x00000010, 0x01111010, 0x01000010, // 009bh - 0x00000010, 0x00000010, 0x00001010, 0x01110010, - 0x00000000, 0x00100010, 0x00111110, 0x01010010, // 009ch - 0x01001011, 0x01101101, 0x01010101, 0x00110010, - 0x00000000, 0x00110010, 0x01001011, 0x01000110, // 009dh - 0x01000110, 0x01110010, 0x01001011, 0x00110010, - 0x00000000, 0x00011100, 0x00101010, 0x01001001, // 009eh - 0x01001001, 0x01000101, 0x01000101, 0x00110010, - 0x00000000, 0x00100001, 0x01111101, 0x00100001, // 009fh - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00000100, 0x00100011, 0x01100010, // 00a0h - 0x00100001, 0x00100001, 0x00010010, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a1h - 0x00000000, 0x00000100, 0x00001010, 0x00000100, - 0x00000000, 0x01110000, 0x00010000, 0x00010000, // 00a2h - 0x00010000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a3h - 0x00001000, 0x00001000, 0x00001000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00a4h - 0x00000000, 0x00000010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00011000, // 00a5h - 0x00011000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x01111111, // 00a6h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x00000000, 0x00111111, 0x00100000, // 00a7h - 0x00010100, 0x00001100, 0x00000100, 0x00000010, - 0x00000000, 0x00000000, 0x00100000, 0x00100000, // 00a8h - 0x00010000, 0x00001111, 0x00001000, 0x00001000, - 0x00000000, 0x00000000, 0x00000100, 0x00111111, // 00a9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00aah - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00000000, 0x00010000, 0x00111111, // 00abh - 0x00011000, 0x00010100, 0x00010010, 0x00011001, - 0x00000000, 0x00000000, 0x00000010, 0x00111111, // 00ach - 0x00100010, 0x00010010, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00000000, 0x00111110, // 00adh - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00aeh - 0x00111110, 0x00100000, 0x00100000, 0x00111110, - 0x00000000, 0x00000000, 0x00100101, 0x00101010, // 00afh - 0x00101010, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00b0h - 0x01111111, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x01111111, 0x01000000, 0x00101000, // 00b1h - 0x00011000, 0x00001000, 0x00001000, 0x00000100, - 0x00000000, 0x01000000, 0x00100000, 0x00011000, // 00b2h - 0x00010111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x00001000, 0x01111111, 0x01000001, // 00b3h - 0x01000001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000000, 0x00111110, 0x00001000, // 00b4h - 0x00001000, 0x00001000, 0x00001000, 0x01111111, - 0x00000000, 0x00100000, 0x01111111, 0x00110000, // 00b5h - 0x00101000, 0x00100100, 0x00100010, 0x00110001, - 0x00000000, 0x00000100, 0x01111111, 0x01000100, // 00b6h - 0x01000100, 0x01000100, 0x01000010, 0x00100001, - 0x00000000, 0x00000100, 0x00111111, 0x00001000, // 00b7h - 0x01111111, 0x00010000, 0x00010000, 0x00010000, - 0x00000000, 0x01111100, 0x01000100, 0x01000100, // 00b8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00000010, 0x01111110, 0x00100010, // 00b9h - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00bah - 0x01000000, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00100010, 0x01111111, 0x00100010, // 00bbh - 0x00100010, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x00000011, 0x00000100, 0x01000011, // 00bch - 0x01000100, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x01111111, 0x01000000, 0x00100000, // 00bdh - 0x00010000, 0x00011000, 0x00100100, 0x01000011, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00beh - 0x00100010, 0x00000010, 0x00000010, 0x01111100, - 0x00000000, 0x01000001, 0x01000010, 0x01000000, // 00bfh - 0x00100000, 0x00100000, 0x00011000, 0x00000110, - 0x00000000, 0x01111110, 0x01000010, 0x01001110, // 00c0h - 0x01110001, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x01100000, 0x00011110, 0x00010000, // 00c1h - 0x01111111, 0x00010000, 0x00010000, 0x00001100, - 0x00000000, 0x01000101, 0x01001010, 0x01001010, // 00c2h - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00c3h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000010, 0x00000010, 0x00000110, // 00c4h - 0x00011010, 0x01100010, 0x00000010, 0x00000010, - 0x00000000, 0x00010000, 0x00010000, 0x01111111, // 00c5h - 0x00010000, 0x00010000, 0x00001000, 0x00000110, - 0x00000000, 0x00000000, 0x00111110, 0x00000000, // 00c6h - 0x00000000, 0x00000000, 0x00000000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000100, // 00c7h - 0x00101000, 0x00010000, 0x00101000, 0x01000110, - 0x00000000, 0x00001000, 0x01111111, 0x00100000, // 00c8h - 0x00010000, 0x00011100, 0x01101011, 0x00001000, - 0x00000000, 0x01000000, 0x01000000, 0x01000000, // 00c9h - 0x00100000, 0x00100000, 0x00011000, 0x00000111, - 0x00000000, 0x00010010, 0x00100010, 0x00100010, // 00cah - 0x01000010, 0x01000010, 0x01000001, 0x01000001, - 0x00000000, 0x00000001, 0x00000001, 0x01111111, // 00cbh - 0x00000001, 0x00000001, 0x00000001, 0x01111110, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cch - 0x01000000, 0x00100000, 0x00010000, 0x00001110, - 0x00000000, 0x00000000, 0x00000100, 0x00001010, // 00cdh - 0x00010001, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x00001000, 0x00001000, 0x01111111, // 00ceh - 0x00001000, 0x00101010, 0x01001010, 0x01001001, - 0x00000000, 0x01111111, 0x01000000, 0x01000000, // 00cfh - 0x00100010, 0x00010100, 0x00001000, 0x00010000, - 0x00000000, 0x00001110, 0x01110000, 0x00001110, // 00d0h - 0x01110000, 0x00000110, 0x00011000, 0x01100000, - 0x00000000, 0x00001000, 0x00001000, 0x00000100, // 00d1h - 0x00000100, 0x00100010, 0x01000010, 0x01111111, - 0x00000000, 0x01000000, 0x01000000, 0x00100100, // 00d2h - 0x00101000, 0x00010000, 0x00101100, 0x01000011, - 0x00000000, 0x01111111, 0x00000100, 0x01111111, // 00d3h - 0x00000100, 0x00000100, 0x00000100, 0x01111000, - 0x00000000, 0x00000010, 0x01111111, 0x01000010, // 00d4h - 0x00100010, 0x00010100, 0x00000100, 0x00000100, - 0x00000000, 0x00000000, 0x00111110, 0x00100000, // 00d5h - 0x00100000, 0x00100000, 0x00100000, 0x01111111, - 0x00000000, 0x01111110, 0x01000000, 0x01000000, // 00d6h - 0x01111110, 0x01000000, 0x01000000, 0x01111110, - 0x00000000, 0x00111110, 0x00000000, 0x01111111, // 00d7h - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00d8h - 0x01000010, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00001010, 0x00001010, 0x00001010, // 00d9h - 0x01001010, 0x01001010, 0x00101010, 0x00011001, - 0x00000000, 0x00000010, 0x00000010, 0x01000010, // 00dah - 0x01000010, 0x00100010, 0x00010010, 0x00001110, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dbh - 0x01000001, 0x01000001, 0x01000001, 0x01111111, - 0x00000000, 0x01111111, 0x01000001, 0x01000001, // 00dch - 0x01000000, 0x01000000, 0x00100000, 0x00011100, - 0x00000000, 0x01000011, 0x01000100, 0x01000000, // 00ddh - 0x01000000, 0x00100000, 0x00010000, 0x00001111, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00deh 0 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00000000, 0x00000000, 0x00000000, // 00dfh 1 - 0x00000000, 0x00000000, 0x00000000, 0x00000000, - 0x00000000, 0x00011110, 0x00001000, 0x00000100, // 00e0h 2 - 0x00101001, 0x01010001, 0x01010001, 0x00001100, - 0x00000000, 0x00000000, 0x00001100, 0x00010010, // 00e1h 3 - 0x00010010, 0x00100001, 0x01000000, 0x00000000, - 0x00000000, 0x01111101, 0x00100001, 0x01111101, // 00e2h 4 - 0x00100001, 0x00111001, 0x01100101, 0x00011001, - 0x00000000, 0x00111100, 0x00010000, 0x00111100, // 00e3h 5 - 0x00010000, 0x00011100, 0x00110010, 0x00001100, - 0x00000000, 0x00001110, 0x00101000, 0x00101000, // 00e4h 6 - 0x00111110, 0x01100101, 0x00100101, 0x00010010, - 0x00000000, 0x00000100, 0x00101111, 0x01000100, // 00e5h 7 - 0x00000110, 0x01000101, 0x01000101, 0x00111110, - 0x00000000, 0x00100010, 0x00100010, 0x00111110, // 00e6h 8 - 0x01010010, 0x01010101, 0x01001101, 0x00100110, - 0x00000000, 0x00000100, 0x00011111, 0x00000010, // 00e7h 9 - 0x00011111, 0x01000010, 0x01000010, 0x00111100, - 0x00000000, 0x00010010, 0x00111110, 0x01010011, // 00e8h 10 - 0x01000010, 0x00100100, 0x00000100, 0x00000100, - 0x00000000, 0x00001000, 0x00111101, 0x01001011, // 00e9h 11 - 0x01001001, 0x01001001, 0x00111000, 0x00000100, - 0x00000000, 0x00001000, 0x00111000, 0x00001000, // 00eah 12 - 0x00001000, 0x00011110, 0x00101001, 0x00000110, - 0x00000000, 0x00011000, 0x00100000, 0x00000100, // 00ebh 13 - 0x00111010, 0x01000110, 0x01000000, 0x00111000, - 0x00000000, 0x01000010, 0x01000010, 0x01000010, // 00ech 14 - 0x01000110, 0x01000000, 0x00100000, 0x00011000, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00edh 15 - 0x01000011, 0x01001100, 0x01010010, 0x00111100, - 0x00000000, 0x00100010, 0x00110011, 0x00101010, // 00eeh 16 - 0x00100110, 0x00100010, 0x00100011, 0x01000010, - 0x00000000, 0x00111110, 0x00010000, 0x00111100, // 00efh 17 - 0x01000011, 0x01000000, 0x01000010, 0x00111100, - 0x00000000, 0x00000010, 0x00111011, 0x01000110, // 00f0h 18 - 0x01000010, 0x01000011, 0x01000010, 0x00110010, - 0x00000000, 0x00000100, 0x00000100, 0x00000010, // 00f1h 19 - 0x01000110, 0x01000101, 0x01000101, 0x00111001, - 0x00000000, 0x01010100, 0x01111111, 0x00100100, // 00f2h 20 - 0x00100100, 0x00100100, 0x00100010, 0x00010001, - 0x00000000, 0x01010100, 0x01011111, 0x00000100, // 00f3h 21 - 0x00111111, 0x00001000, 0x00001000, 0x00001000, - 0x00000000, 0x01011110, 0x01100010, 0x00100010, // 00f4h 22 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - 0x00000000, 0x01010010, 0x01111110, 0x00100010, // 00f5h 23 - 0x00100001, 0x00100000, 0x00010000, 0x00001100, - - 0x33330000, - 0x33330000, - 0x33000000, - 0x33000000, // 00f6h - 0x33000000, - 0x33000000, - 0x33330000, - 0x33330000, - - - 0x00020000, // 00f7h - 0x00020000, - 0x00020000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00f8h - 0x00000000, - 0x00000000, - 0x00000000, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00f9h - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - 0x11111111, - - 0x11111111, // 00fah - 0x11111111, - 0x11111111, - 0x11111111, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00000000, // 00fbh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fch - 0x00020000, - 0x00020000, - 0x22222222, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00020000, // 00fdh - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - 0x00020000, - - 0x00000000, // 00feh - 0x00000000, - 0x00000000, - 0x22222222, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000, - - 0x00020000, - 0x00220000, - 0x02122222, - 0x21111112, - 0x21111112, - 0x02122222, - 0x00220000, - 0x00020000, - - - -/* - 0x00022222, - 0x00002112, - 0x00021112, - 0x00211122, - 0x02111202, - 0x21112000, - 0x02120000, - 0x00200000, -*/ - -/* - 0x00000000, 0x01011110, 0x01010000, 0x00111111, // 00ffh - 0x00001000, 0x00001000, 0x00001000, 0x00000110 -*/ -}; - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestComponent/ARM9.TWL/src/graphics.c b/build/tests/TestComponent/ARM9.TWL/src/graphics.c deleted file mode 100644 index 1de138e9..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/graphics.c +++ /dev/null @@ -1,160 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: praphics.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -//#include -#include -#include "kami_font.h" -#include "graphics.h" - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: InitGraphics - - Description: •\ަ‚̉Šú‰»ˆ— - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void -InitGraphics(void) -{ - GX_DispOff(); - GXS_DispOff(); - - //---- VRAM ƒNƒŠƒA - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - - //---- OAM‚ƃpƒŒƒbƒgƒNƒŠƒA - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); - MI_CpuFillFast((void *)HW_DB_OAM, 192, HW_DB_OAM_SIZE); - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); - - //---- ‚n‚a‚iƒoƒ“ƒN‚ÌÝ’è - GX_SetBankForOBJ(GX_VRAM_OBJ_128_A); - GX_SetBankForSubOBJ(GX_VRAM_SUB_OBJ_128_D); - - //---- ‚a‚fƒoƒ“ƒN‚ÌÝ’è - GX_SetBankForBG(GX_VRAM_BG_128_B); - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - - //---- •\ަƒ‚[ƒhÝ’è - GX_SetGraphicsMode (GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_3D); - GX_SetVisiblePlane (GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - GXS_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_OBJ); - - //---- 3D‰Šú‰» - G3X_Init(); - G3X_InitMtxStack(); - G2_SetBG0Priority(0); - G3X_AlphaTest(FALSE, 0); - G3X_AntiAlias(TRUE); - G3X_EdgeMarking(FALSE); - G3X_SetFog(FALSE, (GXFogBlend)0, (GXFogSlope)0, 0); - G3X_SetClearColor(0, 0, 0x7fff, 63, FALSE); - G3_ViewPort(0, 0, 255, 191); - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - - //---- 32KƒoƒCƒg‚ÌOBJ‚Å2Dƒ}ƒbƒvƒ‚[ƒh‚ÅŽg—p - GX_SetOBJVRamModeChar(GX_OBJVRAMMODE_CHAR_2D); - - // ƒXƒNƒŠ[ƒ“ƒIƒtƒZƒbƒg‹y‚уLƒƒƒ‰ƒNƒ^[ƒIƒtƒZƒbƒg‚ÌÝ’è - GX_SetBGScrOffset(GX_BGSCROFFSET_0x00000); - GX_SetBGCharOffset(GX_BGCHAROFFSET_0x10000); - - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x00000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG0Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2S_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, - GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x2000 , - GX_BG_CHARBASE_0x04000, - GX_BG_EXTPLTT_01 - ); - - G2_BG1Mosaic(FALSE); - G2S_BG1Mosaic(FALSE); - - //---- ƒf[ƒ^ƒ[ƒh - GX_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBG1Char( sampleCharData, 0, sizeof(sampleCharData)); - GX_LoadBGPltt ( PlttDataMain, 0, sizeof(PlttDataMain)); - GX_LoadBG1Scr ( BgScDataMain, 0, sizeof(BgScDataMain)); - GX_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GXS_LoadOBJ ( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBG0Char( sampleCharData, 0, sizeof(sampleCharData)); - GXS_LoadBGPltt ( PlttDataSub, 0, sizeof(PlttDataSub)); - GXS_LoadBG0Scr ( BgScDataSub, 0, sizeof(BgScDataSub)); - GXS_LoadOBJPltt( PlttDataObj, 0, sizeof(PlttDataObj)); - - GX_DispOn(); - GXS_DispOn(); -} - -/*---------------------------------------------------------------------------* - Name: DrawLine - - Description: ŽOŠpƒ|ƒŠƒSƒ“‚Åü‚ð•`‰æ - - Arguments: sx - •`‰æ‚·‚éü‚ÌŠJŽn“_‚Ì‚˜À•W - sy - •`‰æ‚·‚éü‚ÌŠJŽn“_‚Ì‚™À•W - ex - •`‰æ‚·‚éü‚ÌI“_‚Ì‚˜À•W - ey - •`‰æ‚·‚éü‚ÌI“_‚Ì‚™À•W - color - •`‰æ‚·‚éü‚ÌF - - Returns: None. - *---------------------------------------------------------------------------*/ -void -DrawLine(s16 sx, s16 sy, s16 ex, s16 ey, GXRgb color) -{ - fx16 fsx = (fx16)(((sx - 128) * 0x1000) / 128); - fx16 fsy = (fx16)(((96 - sy) * 0x1000) / 96); - fx16 fex = (fx16)(((ex - 128) * 0x1000) / 128); - fx16 fey = (fx16)(((96 - ey) * 0x1000) / 96); - - G3_Begin(GX_BEGIN_TRIANGLES); - { - G3_Color( color ); - G3_Vtx(fsx, fsy, 0); - G3_Color( color ); - G3_Vtx(fex, fey, 0); - G3_Color( color ); - G3_Vtx(fsx, fsy, 1); - } - G3_End(); -} diff --git a/build/tests/TestComponent/ARM9.TWL/src/kami_font.c b/build/tests/TestComponent/ARM9.TWL/src/kami_font.c deleted file mode 100644 index fb3818b6..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/kami_font.c +++ /dev/null @@ -1,407 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_font.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "kami_font.h" - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define SCREEN_DATA_COLOR_PLTT_SHIFT 12 -#define NUM_OF_PRINT_TARGET 2 - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static u8 sXPos; -static u8 sYPos; - -static u32 sBackColorCharData[24*8]; - -static u16 sFontScreenDataMain[32 * 24] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sFontScreenDataSub[24*32] = { - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, -}; - -static u16 sBackColorScreenData[32 * 24] = { - 0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de,0xf0de, - 0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df,0xf0df, - 0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0,0xf0e0, - 0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1,0xf0e1, - 0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2,0xf0e2, - 0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3,0xf0e3, - 0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4,0xf0e4, - 0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5,0xf0e5, - 0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6,0xf0e6, - 0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7,0xf0e7, - 0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8,0xf0e8, - 0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9,0xf0e9, - 0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea,0xf0ea, - 0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb,0xf0eb, - 0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec,0xf0ec, - 0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed,0xf0ed, - 0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee,0xf0ee, - 0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef,0xf0ef, - 0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0,0xf0f0, - 0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1,0xf0f1, - 0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2,0xf0f2, - 0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3,0xf0f3, - 0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4,0xf0f4, - 0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5,0xf0f5, -}; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”錾 - *---------------------------------------------------------------------------*/ - -static void kamiFontReturnConsole( void ); - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontInit(void) -{ - // ”wŒi—pƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^ - MI_CpuCopy32( &sampleCharData[8 * 0xde], sBackColorCharData, sizeof(sBackColorCharData) ); - - // ”wŒi—pƒXƒNƒŠ[ƒ“ƒf[ƒ^ƒZƒbƒg - DC_FlushRange ( sBackColorScreenData, sizeof(sBackColorScreenData) ); - GXS_LoadBG1Scr ( sBackColorScreenData, 0, sizeof(sBackColorScreenData) ); -} - -/*---------------------------------------------------------------------------* - Name: - - Description: - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontLoadScreenData(void) -{ - DC_FlushRange ( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); - GX_LoadBG0Scr ( sFontScreenDataMain, 0, sizeof(sFontScreenDataMain) ); - - DC_FlushRange ( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); - GXS_LoadBG0Scr ( sFontScreenDataSub, 0, sizeof(sFontScreenDataSub) ); - - // ”wŒiƒLƒƒƒ‰ƒNƒ^ƒf[ƒ^‘‚«Š·‚¦ - DC_FlushRange( sBackColorCharData, sizeof(sBackColorCharData) ); - GXS_LoadBG0Char( sBackColorCharData, 0xde*32, sizeof(sBackColorCharData) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClear - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚ðƒNƒŠƒA‚·‚é - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClear(void) -{ - MI_CpuClear8( sFontScreenDataSub, sizeof(sFontScreenDataSub) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontClearMain - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚ðƒNƒŠƒA‚·‚é - - Arguments: None - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontClearMain(void) -{ - MI_CpuClear8( sFontScreenDataMain, sizeof(sFontScreenDataMain) ); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í32•¶Žš‚Ü‚ÅB - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintf(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataSub[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintf - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í32•¶Žš‚Ü‚ÅB - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfMain(s16 x, s16 y, u8 color, char *text, ...) -{ - va_list vlist; - char temp[32 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 33, text, vlist); - va_end(vlist); - - *(u16 *)(&temp[32]) = 0x0000; - for (i = 0;temp[i] != 0x00; i++) - { - sFontScreenDataMain[((y * 32) + x + i) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontFillChar - - Description: ‰¼‘zƒXƒNƒŠ[ƒ“‚É - - Arguments: x - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é x À•W( ~ 8 ƒhƒbƒg )B - y - •¶Žš—ñ‚Ìæ“ª‚ð”z’u‚·‚é y À•W( ~ 8 ƒhƒbƒg )B - color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - value - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontFillChar(int lineNo, u8 color1, u8 color2) -{ - s32 i; - u32 line; - int charNo = 0xde + lineNo; - - if (color1 < 0x10) - { - line = (u32)(0x11111111 * color1); - - for (i = 0;i<4; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } - - if (color2 < 0x10) - { - line = (u32)(0x11111111 * color2); - - for (i = 4;i<8; i++) - { - sBackColorCharData[8 * lineNo + i] = line; - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsole - - Description: ‰¼‘zƒRƒ“ƒ\[ƒ‹‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í256•¶Žš‚Ü‚ÅB - - Arguments: color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsole(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - s32 i; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - // I’[’ljÁ - *(u16 *)(&temp[256]) = 0x0000; - - for(i=0; temp[i] != 0x00; i++) - { - if (temp[i] == 0x0A) - { - // ‰üsƒR[ƒh - kamiFontReturnConsole(); - } - else - { - // ˆê•¶Žš‚¸‚‘‚«ž‚Ý - sFontScreenDataMain[((sYPos * 32) + sXPos) % (24 * 32)] = - (u16)((color << SCREEN_DATA_COLOR_PLTT_SHIFT) | temp[i]); - - // XÀ•W‚ª‰E’[‚É“ž’B‚µ‚½ê‡‚͉üsˆ— - if (++sXPos >= 32) - { - kamiFontReturnConsole(); - } - } - } -} - -/*---------------------------------------------------------------------------* - Name: kamiFontPrintfConsoleEx - - Description: ‰¼‘zƒRƒ“ƒ\[ƒ‹‚É•¶Žš—ñ‚ð”z’u‚·‚éB•¶Žš—ñ‚Í256•¶Žš‚Ü‚ÅB - OS_Printf‚à‚‚¢‚łɎÀs‚·‚éB - - Arguments: color - •¶Žš‚ÌF‚ðƒpƒŒƒbƒg”Ô†‚ÅŽw’èB - text - ”z’u‚·‚é•¶Žš—ñBI’[•¶Žš‚ÍNULLB - ... - ‰¼‘zˆø”B - - Returns: None. - *---------------------------------------------------------------------------*/ -void -kamiFontPrintfConsoleEx(u8 color, const char *text, ...) -{ - va_list vlist; - char temp[256 + 2]; - - va_start(vlist, text); - (void)vsnprintf(temp, 256, text, vlist); - va_end(vlist); - - kamiFontPrintfConsole(color, temp); - OS_TPrintf(temp); -} - -/*---------------------------------------------------------------------------* - Name: kamiFontReturnConsole - - Description: ‰¼‘zƒRƒ“ƒ\[ƒ‹‚É‚¨‚¯‚é‰üsˆ—‚ðs‚¤ - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -kamiFontReturnConsole( void ) -{ - sXPos = 0; - if (sYPos < 23) - { - // ŽŸ‚Ìs‚Ö - sYPos++; - } - else - { - // Šù‚ÉÅIs‚É“ž’B‚µ‚Ä‚¢‚éꇃVƒtƒg‚ðs‚¤ - MI_CpuCopy32( &sFontScreenDataMain[32], sFontScreenDataMain, sizeof(u16)*32*23 ); - MI_CpuClear32( &sFontScreenDataMain[32*23], sizeof(u16)*32); - } -} - diff --git a/build/tests/TestComponent/ARM9.TWL/src/kami_pxi.c b/build/tests/TestComponent/ARM9.TWL/src/kami_pxi.c deleted file mode 100644 index eb6359ab..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/kami_pxi.c +++ /dev/null @@ -1,743 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: kami_pxi.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "kami_pxi.h" -#include "fifo.h" - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -// ‹l‚߂ăRƒs[‚·‚é -#define KAMI_PACK_U8(d, s) \ - ((d)[0] = (u8)((*((u8*)s) >> 0) & 0xFF)) - - -#define KAMI_PACK_U16(d, s) \ - ((d)[0] = (u8)((*((u16*)s) >> 0) & 0xFF), \ - (d)[1] = (u8)((*((u16*)s) >> 8) & 0xFF)) - -#define KAMI_PACK_U32(d, s) \ - ((d)[0] = (u8)((*((u32*)s) >> 0) & 0xFF), \ - (d)[1] = (u8)((*((u32*)s) >> 8) & 0xFF), \ - (d)[2] = (u8)((*((u32*)s) >> 16) & 0xFF), \ - (d)[3] = (u8)((*((u32*)s) >> 24) & 0xFF)) - - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ -typedef struct KamiWork -{ - BOOL lock; - - KamiCommand command; - KAMIPxiResult result; - KAMICallback callback; - void* arg; - - u32 total; - u32 current; - u8* data; -} -KamiWork; - -/*---------------------------------------------------------------------------* - ÓI•Ï”’è‹` - *---------------------------------------------------------------------------*/ -static BOOL kamiInitialized; -static KamiWork kamiWork; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static BOOL KamiSendPxiCommand(KamiCommand command, u8 size, u8 data); -static void KamiSendPxiData(u8 *pData); -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err); -static void KamiDone(KAMIResult result); -static void KamiWaitBusy(void); - - -void KamiPxiInit( void ) -{ - kamiWork.lock = FALSE; - - PXI_Init(); - while ( !PXI_IsCallbackReady(PXI_FIFO_TAG_KAMITEST, PXI_PROC_ARM7 )) - { - } - PXI_SetFifoRecvCallback(PXI_FIFO_TAG_KAMITEST, KamiPxiCallback); - if ( 0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, KAMITEST_PXI_START_BIT | (KAMI_TEST_COMMAND << KAMITEST_PXI_COMMAND_SHIFT), 0)) - { - return; - } -} - - - -/////////////////////////////////////////////////////////////////// - -//typedef void (*KAMICallback)(KAMIResult result, void *arg); -/* -void CDC_ReadCallback(KAMIResult result, void* arg); -void CDC_ReadCallback(KAMIResult result, void* arg) -{ - -} -*/ - -/*---------------------------------------------------------------------------* - Name: ƒtƒH[ƒ}ƒbƒgŽÀsŠÖ” - - Description: - - Arguments: FormatMode - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult ExeFormatAsync(FormatMode format_mode, KAMICallback callback) -{ - OSIntrMode enabled; - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = callback; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_EXE_FORMAT, 1, format_mode) == FALSE) - { - return KAMI_RESULT_SEND_ERROR; - } - return KAMI_RESULT_SUCCESS; -} - -KAMIResult ExeFormat(FormatMode format_mode) -{ - OSIntrMode enabled; - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_EXE_FORMAT, 1, format_mode)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: NANDƒAƒNƒZƒXŠÖ” - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiNandIo(u32 block, void* buffer, u32 count, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - // ƒf[ƒ^ì¬ - KAMI_PACK_U32(&data[0], &block); - KAMI_PACK_U32(&data[4], &buffer); - KAMI_PACK_U32(&data[8], &count); - - if (KamiSendPxiCommand(KAMI_NAND_IO, 13, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiMcuWriteFirm - - Description: MCUƒtƒ@[ƒ€XVŠÖ” - - Arguments: buffer : new mcu data buffer - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiMcuWriteFirm(void* buffer ) -{ - OSIntrMode enabled; - u8 data[4+2]; // 3‚Ì”{” - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - - // ƒf[ƒ^ì¬ - KAMI_PACK_U32(&data[0], &buffer); - - if (KamiSendPxiCommand(KAMI_MCU_WRITE_FIRM, 5, (u8)0)) - { - for (i = 0; i < 4; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: MCUƒAƒNƒZƒXŠÖ” - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiMcuIo(u32 reg_no, void* buffer, u32 value, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - if (is_read) - { - kamiWork.data = (u8*)buffer; - } - else - { - kamiWork.data = 0; - } - - // ƒf[ƒ^ì¬ - KAMI_PACK_U32(&data[0], ®_no); - KAMI_PACK_U32(&data[4], &value); - - if (KamiSendPxiCommand(KAMI_MCU_IO, 13, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: CODECƒAƒNƒZƒXŠÖ” - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiCodecIo(u8 page, u8 reg_no, u8* buffer, u8 value, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - if (is_read) - { - kamiWork.data = (u8*)buffer; - } - else - { - kamiWork.data = 0; - } - - // ƒf[ƒ^ì¬ - KAMI_PACK_U8(&data[0], &page); - KAMI_PACK_U8(&data[1], ®_no); - KAMI_PACK_U32(&data[4], &value); - - if (KamiSendPxiCommand(KAMI_CODEC_IO, 13, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: ARM7ƒAƒNƒZƒXŠÖ” - - Description: - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiARM7Io(u32 addr, u32* buffer, u32 value, BOOL is_read) -{ - OSIntrMode enabled; - u8 data[12]; - int i; - - MI_CpuClear8( data, sizeof(data)); - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - if (is_read) - { - kamiWork.data = (u8*)buffer; - } - else - { - kamiWork.data = 0; - } - - // ƒf[ƒ^ì¬ - KAMI_PACK_U32(&data[0], &addr); - KAMI_PACK_U32(&data[4], &value); - - if (KamiSendPxiCommand(KAMI_ARM7_IO, 13, (u8)is_read)) - { - for (i = 0; i < 12; i+=3) - { - KamiSendPxiData(&data[i]); - } - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiCDC_GoDsMode - - Description: CODEC‚ðDSƒ‚[ƒh‚Ö‘JˆÚ‚³‚¹‚éŠÖ” - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiCDC_GoDsMode( void ) -{ - OSIntrMode enabled; - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_CDC_GO_DSMODE, 0, (u8)0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiClearNandErrorLog - - Description: NVRAM‚ÌNANDƒGƒ‰[î•ñ‚ðƒNƒŠƒA‚µ‚Ü‚·B - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiClearNandErrorLog( void ) -{ - OSIntrMode enabled; - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = 0; - - if (KamiSendPxiCommand(KAMI_CLEAR_NAND_ERRORLOG, 0, (u8)0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiGetCameraModuleTypesAsync - - Description: ƒJƒƒ‰ƒ‚ƒWƒ…[ƒ‹ƒ^ƒCƒv‚ðŽæ“¾‚µ‚Ü‚·i”ñ“¯Šú”Åj - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiGetCameraModuleTypesAsync( CameraModuleTypes *pTypes, KAMICallback callback, void* arg ) -{ - OSIntrMode enabled; - - if (pTypes == NULL) - { - return KAMI_RESULT_INVALID_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - kamiWork.callback = callback; - kamiWork.arg = arg; - kamiWork.data = (u8*)pTypes; - (void)OS_RestoreInterrupts(enabled); - - if (KamiSendPxiCommand(KAMI_GET_CAMERA_MODULE_TYPE, 0, 0)) - { - return KAMI_RESULT_SUCCESS; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiGetCameraModuleTypes - - Description: ƒJƒƒ‰ƒ‚ƒWƒ…[ƒ‹ƒ^ƒCƒv‚ðŽæ“¾‚µ‚Ü‚·i“¯Šú”Åj - - Arguments: None. - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiGetCameraModuleTypes( CameraModuleTypes *pTypes ) -{ - OSIntrMode enabled; - - if (pTypes == NULL) - { - return KAMI_RESULT_INVALID_PARAMETER; - } - - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = (u8*)pTypes; - (void)OS_RestoreInterrupts(enabled); - - if (KamiSendPxiCommand(KAMI_GET_CAMERA_MODULE_TYPE, 0, 0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - Name: kamiGetNandCID - - Description: NAND‚ÌCID‚ðŽæ“¾‚µ‚Ü‚·B - - Arguments: buffer : 16ƒoƒCƒgƒoƒbƒtƒ@ - - Returns: - *---------------------------------------------------------------------------*/ - -KAMIResult kamiGetNandCID(void* buffer ) -{ - OSIntrMode enabled; - u8 data[4+2]; // 3‚Ì”{” - - MI_CpuClear8( data, sizeof(data)); - - // ƒƒbƒN - enabled = OS_DisableInterrupts(); - if (kamiWork.lock) - { - (void)OS_RestoreInterrupts(enabled); - return KAMI_RESULT_BUSY; - } - kamiWork.lock = TRUE; - (void)OS_RestoreInterrupts(enabled); - - kamiWork.callback = NULL; - kamiWork.arg = 0; - kamiWork.data = (u8*)buffer; - - if (KamiSendPxiCommand(KAMI_GET_NAND_CID, 0, 0)) - { - KamiWaitBusy(); - return (KAMIResult)kamiWork.result; - } - - return KAMI_RESULT_SEND_ERROR; -} - -/*---------------------------------------------------------------------------* - PXIŠÖ˜A - *---------------------------------------------------------------------------*/ - -static BOOL KamiSendPxiCommand(KamiCommand command, u8 size, u8 data) -{ - u32 pxiData = (u32)(KAMITEST_PXI_START_BIT | - ((command << KAMITEST_PXI_COMMAND_SHIFT) & KAMITEST_PXI_COMMAND_MASK) | - ((size << KAMITEST_PXI_DATA_NUMS_SHIFT) & KAMITEST_PXI_DATA_NUMS_MASK) | - ((data << KAMITEST_PXI_1ST_DATA_SHIFT) & KAMITEST_PXI_1ST_DATA_MASK)); - if (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - return FALSE; - } - return TRUE; -} - -static void KamiSendPxiData(u8 *pData) -{ - u32 pxiData = (u32)((pData[0] << 16) | (pData[1] << 8) | pData[2]); - while (0 > PXI_SendWordByFifo(PXI_FIFO_TAG_KAMITEST, pxiData, 0)) - { - } -} - -static void KamiPxiCallback(PXIFifoTag tag, u32 data, BOOL err) -{ -#pragma unused( tag ) - if (err) - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - if (data & KAMITEST_PXI_START_BIT) // 擪ƒf[ƒ^ - { - if (data & KAMITEST_PXI_RESULT_BIT) - { - kamiWork.total = (u8)((data & KAMITEST_PXI_DATA_NUMS_MASK) >> KAMITEST_PXI_DATA_NUMS_SHIFT); - kamiWork.current = 0; - kamiWork.command = (KamiCommand)((data & KAMITEST_PXI_COMMAND_MASK) >> KAMITEST_PXI_COMMAND_SHIFT); - kamiWork.result = (KAMIPxiResult)((data & KAMITEST_PXI_1ST_DATA_MASK) >> KAMITEST_PXI_1ST_DATA_SHIFT); - } - else // –¢’m‚̃f[ƒ^ - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - } - else // Œã‘±ƒf[ƒ^ - { - if (kamiWork.data == NULL) - { - KamiDone(KAMI_RESULT_FATAL_ERROR); - return; - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0xFF0000) >> 16); - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0x00FF00) >> 8); - } - if (kamiWork.current < kamiWork.total-1) - { - kamiWork.data[kamiWork.current++] = (u8)((data & 0x0000FF) >> 0); - } - } - if (kamiWork.current == kamiWork.total-1) - { - KAMIResult result; - switch (kamiWork.result) - { - case KAMI_PXI_RESULT_SUCCESS: // alias KAMI_PXI_RESULT_SUCCESS_TRUE - result = KAMI_RESULT_SUCCESS; // alias KAMI_RESULT_SUCCESS_TRUE - break; - case KAMI_PXI_RESULT_SUCCESS_FALSE: - result = KAMI_RESULT_SUCCESS_FALSE; - break; - case KAMI_PXI_RESULT_INVALID_COMMAND: - result = KAMI_RESULT_INVALID_COMMAND; - break; - case KAMI_PXI_RESULT_INVALID_PARAMETER: - result = KAMI_RESULT_INVALID_PARAMETER; - break; - case KAMI_PXI_RESULT_ILLEGAL_STATUS: - result = KAMI_RESULT_ILLEGAL_STATUS; - break; - case KAMI_PXI_RESULT_BUSY: - result = KAMI_RESULT_BUSY; - break; - default: - result = KAMI_RESULT_FATAL_ERROR; - } - KamiDone(result); - return; - } -} - -extern void PXIi_HandlerRecvFifoNotEmpty(void); -static void KamiWaitBusy(void) -{ - volatile BOOL *p = &kamiWork.lock; - - while (*p) - { - if (OS_GetCpsrIrq() == OS_INTRMODE_IRQ_DISABLE) - { - PXIi_HandlerRecvFifoNotEmpty(); - } - } -} - -static void KamiDone(KAMIResult result) -{ - KAMICallback callback = kamiWork.callback; - void* arg = kamiWork.arg; - kamiWork.callback = NULL; - kamiWork.arg = NULL; - if (kamiWork.lock) - { - kamiWork.lock = FALSE; - } - if (callback) - { - callback(result, arg); - } -} diff --git a/build/tests/TestComponent/ARM9.TWL/src/keypad.c b/build/tests/TestComponent/ARM9.TWL/src/keypad.c deleted file mode 100644 index 155c4bc2..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/keypad.c +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: keypad.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "keypad.h" - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define KEY_REPEAT_TRIGGER_START 20 -#define KEY_REPEAT_TRIGGER_TERM 5 - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static u16 Cont; -static u16 Trg; -static u16 Release; -static u16 RepeatTrg; -static u8 key = 60; - -static int repeat_counter; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -void -kamiPadRead(void) -{ - u16 ReadData; - - ReadData = PAD_Read(); - Trg = (u16)(ReadData & (ReadData ^ Cont)); - Release = (u16)(Cont & (ReadData ^ Cont)); - Cont = ReadData; - - RepeatTrg = Trg; - if (++repeat_counter > (KEY_REPEAT_TRIGGER_START + KEY_REPEAT_TRIGGER_TERM)) - { - repeat_counter = KEY_REPEAT_TRIGGER_START; - } - if (repeat_counter == KEY_REPEAT_TRIGGER_START) - { - RepeatTrg = ReadData; - } - if (!ReadData) - { - repeat_counter = 0; - } -} - -BOOL -kamiPadIsTrigger(u16 key) -{ - return (Trg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsRepeatTrigger(u16 key) -{ - return (RepeatTrg & key)? TRUE : FALSE; -} - -BOOL -kamiPadIsPress(u16 key) -{ - return (Cont & key)? TRUE : FALSE; -} - diff --git a/build/tests/TestComponent/ARM9.TWL/src/main.c b/build/tests/TestComponent/ARM9.TWL/src/main.c deleted file mode 100644 index 64ca2f34..00000000 --- a/build/tests/TestComponent/ARM9.TWL/src/main.c +++ /dev/null @@ -1,230 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - NandInitializer - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -#include -#include "kami_font.h" -#include "graphics.h" -#include "keypad.h" -#include "kami_pxi.h" - -#define SCRAMBLE_MASK 0x00406000 - -extern void HWInfoWriterInit( void ); - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ -typedef void* (*Process)(void); - -/*---------------------------------------------------------------------------* - “à•”•Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static Process sProcess; -static FSEventHook sSDHook; - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ -static void VBlankIntr(void); -static void InitAllocation(void); - -static void* DummyProcess0(void) -{ - return DummyProcess0; -} - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void -TwlMain() -{ - // »•iƒrƒ‹ƒhƒ‰ƒ“ƒ`ƒƒ[•ƒfƒoƒbƒKã‚ł̋N“®‘Ήž - if ( OS_GetRunningConsoleType() & OS_CONSOLE_TWLDEBUGGER ) - { - ROM_Header *dh = (void *)HW_ROM_HEADER_BUF; - dh->s.game_cmd_param &= ~SCRAMBLE_MASK; - } - - OS_Init(); - OS_InitTick(); - OS_InitArena(); - PXI_Init(); - OS_InitLock(); - OS_InitArenaEx(); - OS_InitIrqTable(); - OS_SetIrqStackChecker(); - MI_Init(); - OS_InitVAlarm(); - OSi_InitVramExclusive(); - OS_InitThread(); - OS_InitReset(); - GX_Init(); - FX_Init(); - SND_Init(); - SNDEX_Init(); - TP_Init(); - RTC_Init(); - -#ifndef NAND_INITIALIZER_LIMITED_MODE - KamiPxiInit(); /* “ÆŽ©PXI‰Šú‰» */ -#endif - - // Vƒuƒ‰ƒ“ƒNŠ„‚èž‚ÝÝ’è - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)OS_EnableIrqMask(OS_IE_FIFO_RECV); - (void)OS_EnableIrq(); - (void)GX_VBlankIntr(TRUE); - - // initialize file-system - FS_Init(FS_DMA_NOT_USE); - - // FATƒhƒ‰ƒCƒo‚ð‰Šú‰»‚µ‚Ü‚·B - // NAND‚ɃAƒNƒZƒX‚·‚邽‚߂ɕK—v‚Å‚·B - // ‚±‚ÌŠÖ”‚ÍTwlSDK_branchUIG‚ɂ͊܂܂ê‚Ä‚¢‚Ü‚¹‚ñB - FS_InitFatDriver(); - - // SDƒJ[ƒh‚Ì‘}”²ƒCƒxƒ“ƒgŠÄŽ‹ƒR[ƒ‹ƒoƒbƒNÝ’è -// FS_RegisterEventHook("sdmc", &sSDHook, SDEvents, NULL); - - // FS_Init‚ÌŒã‚Ì•û‚ª—Ç‚¢–Í—l - InitAllocation(); - - // •\ަŠÖ˜A‰Šú‰» - InitGraphics(); - kamiFontInit(); - - /* always preload FS table for faster directory access. */ - { - u32 need_size = FS_GetTableSize(); - void *p_table = OS_Alloc(need_size); - SDK_ASSERT(p_table != NULL); - (void)FS_LoadTable(p_table, need_size); - } - - // ‰ŠúƒV[ƒPƒ“ƒXÝ’è - sProcess = DummyProcess0; - - kamiFontPrintfConsole( CONSOLE_ORANGE, "This is Test Component\n"); - -#ifdef TWL_CAPTURE_VERSION - // memory-launcherŒo—R‚Å—§‚¿ã‚ª‚éTWLCaptureSystemWriter‚Å‚Í - // RED_LAUNCHER_VER‚ª0‚ŃtƒH[ƒ}ƒbƒg‚ÉŽ¸”s‚·‚é‚̂ŋ­§“I‚É‘‚«Š·‚¦‚é - MI_StoreLE8((void*)HW_TWL_RED_LAUNCHER_VER, 1); -#endif - -#ifdef AUTO_FORMAT_MODE -// ŒŸ¸H’ö‚Å‚ÍNAND‚ª‰Šú‰»‚³‚ê‚Ä‚¢‚È‚¢‚ª‚»‚Ìó‘Ô‚ÅFAT‚ɃAƒNƒZƒX‚·‚邯 -// –â‘肪‚ ‚邽‚ß‹­§“I‚ɃtƒH[ƒ}ƒbƒg‚ðs‚¤ 2008/06/18 -// ExeFormat(FORMAT_MODE_QUICK); -// -// Secureî•ñ‚ð“ǂݞ‚Þ‘O‚ɃtƒH[ƒ}ƒbƒg‚µ‚Ä‚µ‚Ü‚¤‚ÆSecureî•ñ‚ªÁ‚¦‚Ä‚µ‚Ü‚¤B -// ‚»‚¤‚·‚邯ƒVƒŠƒAƒ‹No‚ª‘‚«Š·‚í‚Á‚Ä‚µ‚Ü‚¤‚̂ł±‚̈—‚͂Ȃ­‚·B -// ŒŸ¸H’ö‚ƈقȂèNandInitializer‚ªŽÀs‚³‚ê‚é’iŠK‚ł̓tƒH[ƒ}ƒbƒgς݂Ȃ͂¸B -// ‰¼‚É–¢ƒtƒH[ƒ}ƒbƒg‚Å‚ ‚Á‚½‚Æ‚µ‚Ä‚àBadFormatˆµ‚¢‚ƂȂéB2009/03/05 -#endif - - // NAMƒ‰ƒCƒuƒ‰ƒŠ‰Šú‰» - NAM_Init( OS_AllocFromMain, OS_FreeToMain); - NAMUT_Init( OS_AllocFromMain, OS_FreeToMain); - -/* -{ - u8 temp; - kamiCodecRead( 1, 31, &temp); - OS_Printf("temp = %x\n", temp); - kamiCodecWrite( 1, 31, (temp & 0x7f)); - kamiCodecRead( 1, 31, &temp); - OS_Printf("temp = %x\n", temp); - -} -*/ - - while (1) - { - kamiPadRead(); - - // ƒRƒ}ƒ“ƒhƒtƒ‰ƒbƒVƒ… -// (void)SND_FlushCommand(SND_COMMAND_NOBLOCK); - - // Vƒuƒ‰ƒ“ƒN‘Ò‚¿ - OS_WaitVBlankIntr(); - - // ‚`‚q‚l‚VƒRƒ}ƒ“ƒh‰ž“šŽóM -// while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL) -// { -// } - - // ƒtƒHƒ“ƒgƒXƒNƒŠ[ƒ“ƒf[ƒ^ƒ[ƒh - kamiFontLoadScreenData(); - - sProcess = sProcess(); - } -} - -/*---------------------------------------------------------------------------* - Name: VBlankIntr - - Description: VBlankŠ„‚螂݈— - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} - -/*---------------------------------------------------------------------------* - Name: InitAllocation - - Description: ƒq[ƒv‚̉Šú‰». - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void InitAllocation(void) -{ - void *tmp; - OSHeapHandle hh; - - /* ƒAƒŠ[ƒi‚̉Šú‰» */ - tmp = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tmp); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - OS_Panic("ARM9: Fail to create heap...\n"); - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - diff --git a/build/tests/TestComponent/Makefile b/build/tests/TestComponent/Makefile deleted file mode 100644 index d593101e..00000000 --- a/build/tests/TestComponent/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tests - camera -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - - -#---------------------------------------------------------------------------- - -SUBDIRS = \ - banner \ - ARM7.TWL \ - ARM9.TWL \ - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/TestComponent/banner/Makefile b/build/tests/TestComponent/banner/Makefile deleted file mode 100644 index e373c033..00000000 --- a/build/tests/TestComponent/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ICON_DIR = ./icon - -BANNER_ICON = $(ICON_DIR)/gameIcon.bmp -BANNER_SPEC = banner_v3.bsf - -TARGETS = banner.bnr -INSTALL_DIR = ./ -INSTALL_TARGETS = $(TARGETS) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) -BANNER_ICON_MIDDLE = $(addprefix $(BANNER_ICON_NAME), .nbfs .nbfc .nbfp) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_MIDDLE) \ - $(TARGETS:.bnr=.srl) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON) $(BANNER_ICON_MIDDLE) - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/TestComponent/banner/banner_v3.bsf b/build/tests/TestComponent/banner/banner_v3.bsf deleted file mode 100644 index a86a720b..00000000 Binary files a/build/tests/TestComponent/banner/banner_v3.bsf and /dev/null differ diff --git a/build/tests/TestComponent/banner/icon/gameIcon.bmp b/build/tests/TestComponent/banner/icon/gameIcon.bmp deleted file mode 100644 index 34909746..00000000 Binary files a/build/tests/TestComponent/banner/icon/gameIcon.bmp and /dev/null differ diff --git a/build/tests/TestComponent/common/include/fifo.h b/build/tests/TestComponent/common/include/fifo.h deleted file mode 100644 index 7e00b943..00000000 --- a/build/tests/TestComponent/common/include/fifo.h +++ /dev/null @@ -1,105 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - camera-test - include - File: fifo.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef TWL_KAMI_TEST_FIFO_H_ -#define TWL_KAMI_TEST_FIFO_H_ - -#include - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ -#define PXI_FIFO_TAG_KAMITEST PXI_FIFO_TAG_USER_1 - -#define KAMI_PXI_CONTINUOUS_PACKET_MAX 10 -#define KAMITEST_PXI_DATA_SIZE_MAX ((KAMI_PXI_CONTINUOUS_PACKET_MAX-1)*3+1) // Å‘åƒf[ƒ^” - -#define KAMITEST_PXI_START_BIT 0x02000000 // 擪ƒpƒPƒbƒg‚ðˆÓ–¡‚·‚é -#define KAMITEST_PXI_RESULT_BIT 0x00008000 // PXI‚̉ž“š‚ðŽ¦‚· - -#define KAMITEST_PXI_COMMAND_SHIFT 8 // ƒRƒ}ƒ“ƒhŠi”[•”•ª‚̈ʒu -#define KAMITEST_PXI_COMMAND_MASK 0x00007f00 // ƒRƒ}ƒ“ƒhŠi”[•”•ª‚̃}ƒXƒN -#define KAMITEST_PXI_DATA_NUMS_MASK 0x00ff0000 // ƒf[ƒ^”—̈æ -#define KAMITEST_PXI_DATA_NUMS_SHIFT 16 // ƒf[ƒ^”ˆÊ’u -#define KAMITEST_PXI_1ST_DATA_MASK 0x000000ff // 擪ƒpƒPƒbƒg‚̃f[ƒ^—̈æ -#define KAMITEST_PXI_1ST_DATA_SHIFT 0 // 擪ƒpƒPƒbƒg‚̃f[ƒ^ˆÊ’u - -#ifdef __cplusplus -extern "C" { -#endif - -/*===========================================================================*/ - -typedef enum KAMIPxiResult -{ - KAMI_PXI_RESULT_SUCCESS = 0, // ˆ—¬Œ÷ (void/void*Œ^) // ꇂɂæ‚èŒã‘±ƒpƒPƒbƒg‚ ‚è - KAMI_PXI_RESULT_SUCCESS_TRUE = 0, // ˆ—¬Œ÷ (BOOLŒ^) - KAMI_PXI_RESULT_SUCCESS_FALSE, // ˆ—¬Œ÷ (BOOLŒ^) - KAMI_PXI_RESULT_INVALID_COMMAND, // •s³‚ÈPXIƒRƒ}ƒ“ƒh - KAMI_PXI_RESULT_INVALID_PARAMETER, // •s³‚ȃpƒ‰ƒ[ƒ^ - KAMI_PXI_RESULT_ILLEGAL_STATUS, // KAMI‚Ìó‘Ô‚É‚æ‚舗‚ðŽÀs•s‰Â - KAMI_PXI_RESULT_BUSY, // ‘¼‚ÌƒŠƒNƒGƒXƒg‚ðŽÀs’† - KAMI_PXI_RESULT_FATAL_ERROR, // ‚»‚Ì‘¼‰½‚ç‚©‚ÌŒ´ˆö‚ň—‚ÉŽ¸”s - KAMI_PXI_RESULT_MAX -} -KAMIPxiResult; - - -typedef enum KamiCommand -{ - KAMI_TEST_COMMAND, - KAMI_EXE_FORMAT, - KAMI_NAND_IO, - KAMI_MCU_IO, - KAMI_MCU_WRITE_FIRM, - KAMI_ARM7_IO, - KAMI_CDC_GO_DSMODE, - KAMI_CLEAR_NAND_ERRORLOG, - KAMI_GET_CAMERA_MODULE_TYPE, - KAMI_GET_NAND_CID, - KAMI_CODEC_IO -} -KamiCommand; - - -typedef enum CameraModuleType -{ - CAMERA_MODULE_TYPE_UNKNOWN, - CAMERA_MODULE_TYPE_SHARP, - CAMERA_MODULE_TYPE_MICRON -} -CameraModuleType; - - -typedef struct CameraModuleTypes -{ - CameraModuleType in; - CameraModuleType out; -} -CameraModuleTypes; - -/*===========================================================================*/ - - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* TWL_KAMI_TEST_FIFO_H_ */ - -/*---------------------------------------------------------------------------* - End of file - *---------------------------------------------------------------------------*/ diff --git a/build/tests/TestMaker/Makefile b/build/tests/TestMaker/Makefile deleted file mode 100644 index a4b0b349..00000000 --- a/build/tests/TestMaker/Makefile +++ /dev/null @@ -1,241 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - GX - demos - UnitTours/3D_Shininess -# File: Makefile -# -# Copyright 2003 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -ifeq ($(GAMECODE),) -#------------------------------------------------------------------------------------ -# sub make ‹N“® - -CONFIG = ./script/config.py -GENCLS = ./script/clsdir.py -GENFONT = ./script/fontcode.py -GENPARENTAL = ./script/parentalcontrol.py -FONTCODES = ./doc/20080617_DS_fontcodeList_NOE_FIANL.xls -CLSROMPARAM = ./config/romparam_forCLStest.yaml -PCROMPARAM = ./config/twl_parentalcontrol_spec.yaml -EULAROMPARAM = ./config/romparam_forEULAtest.yaml -SHOPROMPARAM = ./config/romparam_forShoptest.yaml -SAVEROMPARAM = ./config/romparam_forSavetest.yaml -FATFSPERMISSIONROMPARAM = ./config/romparam_forFATFSPermissiontest.yaml -BOOTROMPARAM = ./config/romparam_forBoottest.yaml -ROMPARAM = ./romparam.yaml -CODESLIST = ./codeslist - --include $(CODESLIST) - -build: $(GAMECODES) - -.PHONY: $(GAMECODES) clean config clstest fonttest parentaltest - -#---- CLS ƒeƒXƒgÝ’è -clstest: - cp -f $(CLSROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "CLS" - -#---- fontcode ƒeƒXƒgÝ’è -fonttest: - $(GENFONT) $(FONTCODES) $(ROMPARAM) "Reverse" - $(CONFIG) $(ROMPARAM) $(CODESLIST) "FONT" - -#---- parentarlcontrol ƒeƒXƒgÝ’è -parentaltest: - $(GENPARENTAL) $(PCROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "PARENTAL" - -#---- eula ƒeƒXƒgÝ’è -eulatest: - cp -f $(EULAROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "EULA" - -#---- shop ƒeƒXƒgÝ’è -shoptest: - cp -f $(SHOPROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "SHOP" - -#---- savedate ƒeƒXƒgÝ’è -savetest: - cp -f $(SAVEROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "SAVE" - -#---- fatfspermissiontest ƒeƒXƒgÝ’è -fatfspermissiontest: - cp -f $(FATFSPERMISSIONROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "FATFSPERMISSION" - -#---- boottest ƒeƒXƒgÝ’è -boottest: - cp -f $(BOOTROMPARAM) $(ROMPARAM) - $(CONFIG) $(ROMPARAM) $(CODESLIST) "BOOT" - -#---- config -config: - $(CONFIG) $(ROMPARAM) $(CODESLIST) "DEFAULT" - -$(GAMECODES): $(CODESLIST) - install -d $@ && $(MAKE) -k -C $@ -f ../Makefile GAMECODE=$@ TEST_TYPE=$(TEST_TYPE) - -forcls: - $(GENCLS) $(ROMPARAM) - -clean: - rm -Rf $(GAMECODES) - rm -f $(CODESLIST) - rm -Rf roms - rm -Rf forCLS - -else -#------------------------------------------------------------------------------------ -# sub make –{‘Ì - -SUBDIRS = - -#---- sysm_red_misc -MISC_DIR = ../../../systemMenu_RED/misc - -#---- default -BASEDIR = $(ROOT)/build/demos/os/consoleType-1 -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c font.c screen.c -BANNERSRC := $(wildcard ../banner/dummy/Cell/*.nce) -INSTALL_DIR = ../roms -MY_COMMONDEFS = $(TWLSDK_ROOT)/build/buildtools/commondefs \ - $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib -MY_MODULERULES = $(TWLSDK_ROOT)/build/buildtools/modulerules - -TARGET_PLATFORM := TWL -TWL_ARCHGEN := LIMITED -TWL_NANDAPP := TRUE - -ifeq ($(TEST_TYPE),CLS) -BASEDIR = $(ROOT)/build/demos/os/consoleType-1 -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c font.c screen.c -BANNERSRC := $(wildcard ../banner/dummy/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),FONT) -BASEDIR = $(ROOT)/build/demos/gx/UnitTours/3D_BoxTest -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c data.c -BANNERSRC := $(wildcard ../banner/font/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),PARENTAL) -BASEDIR = $(ROOT)/build/tests/ogntest/ -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c -BANNERSRC := $(wildcard ../banner/parental/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),EULA) -BASEDIR = $(ROOT)/build/demos/gx/UnitTours/3D_BoxTest -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c data.c -BANNERSRC := $(wildcard ../banner/eula/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),SHOP) -BASEDIR = $(ROOT)/build/tests/nandApp/40M -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = main.c -BANNERSRC := $(wildcard ../banner/shop/Cell/*.nce) -MAKEROM_ROMROOT = $(ROOT)/build/tests/nandApp/40M/rom_data -MAKEROM_ROMFILES = *.* -endif - -ifeq ($(TEST_TYPE),SAVE) -BASEDIR = $(ROOT)/build/tests/save_data/DisplayVersion -SRCDIR = $(BASEDIR)/src -INCDIR = $(BASEDIR)/include -SRCS = dataver.c font.c main.c menu.c screen.c -BANNERSRC := $(wildcard $(BASEDIR)/banner/data/Cell/*.nce) -endif - -ifeq ($(TEST_TYPE),FATFSPERMISSION) -TARGET_FIRM = SYSTEMMENU -BASEDIR = ../../RomTypeTest -SRCDIR = $(BASEDIR)/ARM9/src -INCDIR = $(BASEDIR)/ARM9/src $(MISC_DIR)/include -SRCS = main.c RomTypeTest.c $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c -BANNERSRC := $(wildcard ../banner/shop/Cell/*.nce) -INSTALL_DIR = $(BASEDIR)/test_roms -INSTALL_TARGETS += $(BINDIR)/twl_$(GAMECODE).$(INT_ROM_EXT) -MAKEROM_ROMROOT = ../../../systemMenu_RED/ -MAKEROM_ROMFILES = ./data/NTR_IPL_font_m.NFTR -MY_COMMONDEFS = $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MY_MODULERULES = $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -endif - -ifeq ($(TEST_TYPE),BOOT) -TARGET_FIRM = SYSTEMMENU -BASEDIR = ../../HashCheckTemplate -SUBDIRS = $(BASEDIR)/crt $(BASEDIR)/ARM7 -SRCDIR = $(BASEDIR)/ARM9/src -INCDIR = $(BASEDIR)/ARM9/src $(MISC_DIR)/include -SRCS = main.c HashCheckTemplate.c $(MISC_DIR)/src/misc.c $(MISC_DIR)/src/cmn.c -BANNERSRC := $(wildcard ../banner/shop/Cell/*.nce) -INSTALL_DIR = $(BASEDIR)/test_roms -INSTALL_TARGETS += $(BINDIR)/twl_$(GAMECODE).$(INT_ROM_EXT) -MAKEROM_ROMROOT = ../../../systemMenu_RED/ -MAKEROM_ROMFILES = ./data/NTR_IPL_font_m.NFTR -MY_COMMONDEFS = $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -MY_MODULERULES = $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules -endif - -BANNER = ./banner.bnr -MAKEBANNER = $(TWL_TOOLSDIR)/bin/makebanner.TWL.exe -BANNERCVTR = $(TWL_TOOLSDIR)/bin/bannercvtr.exe - -#---------------------------------------------------------------------------- - -TARGET_BIN = twl_$(GAMECODE).$(TARGET_SUFFIX) -ROM_SPEC = twl_$(GAMECODE).rsf - -#SRCDIR = # using default -#LCFILE = # using default - -INSTALL_TARGETS += $(BINDIR)/$(TARGET_BIN) - -include $(GAMECODE).param - -include $(MY_COMMONDEFS) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -$(TARGETS): $(BANNER) - -$(BANNER): $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) - $(MAKEBANNER) -A $(BANNER:.bnr=.bin) $(BANNER:.bnr=.bsf) $@ - -$(BANNER:.bnr=.bin): $(BANNERSRC) - $(BANNERCVTR) -o $@ $< - -include $(MY_MODULERULES) - -# sub make –{‘Ì -#------------------------------------------------------------------------------------ -endif - -#===== End of Makefile ===== diff --git a/build/tests/TestMaker/banner/dummy/Cell/Cell0.nce b/build/tests/TestMaker/banner/dummy/Cell/Cell0.nce deleted file mode 100644 index becd7177..00000000 Binary files a/build/tests/TestMaker/banner/dummy/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/dummy/Character/banner_anm_idea03_ALL.ncg b/build/tests/TestMaker/banner/dummy/Character/banner_anm_idea03_ALL.ncg deleted file mode 100644 index 383dda18..00000000 Binary files a/build/tests/TestMaker/banner/dummy/Character/banner_anm_idea03_ALL.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/dummy/ColorPalette/banner_anm_idea03.ncl b/build/tests/TestMaker/banner/dummy/ColorPalette/banner_anm_idea03.ncl deleted file mode 100644 index da867522..00000000 Binary files a/build/tests/TestMaker/banner/dummy/ColorPalette/banner_anm_idea03.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/dummy/Preview/Preview0.npv b/build/tests/TestMaker/banner/dummy/Preview/Preview0.npv deleted file mode 100644 index b57efd88..00000000 --- a/build/tests/TestMaker/banner/dummy/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5108 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\banner_anm_idea03_ALL.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\banner_anm_idea03_1 ‚̃Rƒs[.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/dummy/Scene/Scene0.nsn b/build/tests/TestMaker/banner/dummy/Scene/Scene0.nsn deleted file mode 100644 index 5a18ca2b..00000000 --- a/build/tests/TestMaker/banner/dummy/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\banner_anm_idea03.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\banner_anm_idea03_ALL.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:177:87:1203:702 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 2 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 6 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 542,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:64:10:862:685 -OBJECT.DOCUMENT0.FRAME0.LayerID = 1 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 624 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-1:-1:135:323:1085:976 -OBJECT.DOCUMENT0.FRAME1.LayerID = 0 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 113 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 546 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/dummy/workset.ini b/build/tests/TestMaker/banner/dummy/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/dummy/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/banner/eula/Cell/Cell0.nce b/build/tests/TestMaker/banner/eula/Cell/Cell0.nce deleted file mode 100644 index ab3ba8fb..00000000 Binary files a/build/tests/TestMaker/banner/eula/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/eula/Character/eula.ncg b/build/tests/TestMaker/banner/eula/Character/eula.ncg deleted file mode 100644 index b7de68cd..00000000 Binary files a/build/tests/TestMaker/banner/eula/Character/eula.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/eula/ColorPalette/eula.ncl b/build/tests/TestMaker/banner/eula/ColorPalette/eula.ncl deleted file mode 100644 index 99910793..00000000 Binary files a/build/tests/TestMaker/banner/eula/ColorPalette/eula.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/eula/Preview/Preview0.npv b/build/tests/TestMaker/banner/eula/Preview/Preview0.npv deleted file mode 100644 index 2c89eced..00000000 --- a/build/tests/TestMaker/banner/eula/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5348 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\eula.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\eula.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/eula/Scene/Scene0.nsn b/build/tests/TestMaker/banner/eula/Scene/Scene0.nsn deleted file mode 100644 index d447d80e..00000000 --- a/build/tests/TestMaker/banner/eula/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\eula.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\eula.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 2:3:-1:-1:-4:-30:107:187:1251:751 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 0 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 10 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 1329,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:156:74:857:824 -OBJECT.DOCUMENT0.FRAME0.LayerID = 2 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 527 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-4:-30:45:26:1239:777 -OBJECT.DOCUMENT0.FRAME1.LayerID = 1 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 284 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 636 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,0 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/eula/workset.ini b/build/tests/TestMaker/banner/eula/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/eula/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/banner/font/Cell/Cell0.nce b/build/tests/TestMaker/banner/font/Cell/Cell0.nce deleted file mode 100644 index ca5a3fb2..00000000 Binary files a/build/tests/TestMaker/banner/font/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/font/Character/font.ncg b/build/tests/TestMaker/banner/font/Character/font.ncg deleted file mode 100644 index 428f74e1..00000000 Binary files a/build/tests/TestMaker/banner/font/Character/font.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/font/ColorPalette/font.ncl b/build/tests/TestMaker/banner/font/ColorPalette/font.ncl deleted file mode 100644 index 99910793..00000000 Binary files a/build/tests/TestMaker/banner/font/ColorPalette/font.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/font/Preview/Preview0.npv b/build/tests/TestMaker/banner/font/Preview/Preview0.npv deleted file mode 100644 index 2ee73f82..00000000 --- a/build/tests/TestMaker/banner/font/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5360 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\font.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\font.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/font/Scene/Scene0.nsn b/build/tests/TestMaker/banner/font/Scene/Scene0.nsn deleted file mode 100644 index 59c312c0..00000000 --- a/build/tests/TestMaker/banner/font/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\font.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\font.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-4:-30:107:187:1251:751 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 0 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 2 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 0,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:156:74:857:824 -OBJECT.DOCUMENT0.FRAME0.LayerID = 2 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 527 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-4:-30:45:26:1239:777 -OBJECT.DOCUMENT0.FRAME1.LayerID = 1 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 284 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 636 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,0 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/font/workset.ini b/build/tests/TestMaker/banner/font/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/font/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/banner/parental/Cell/Cell0.nce b/build/tests/TestMaker/banner/parental/Cell/Cell0.nce deleted file mode 100644 index 32c9539e..00000000 Binary files a/build/tests/TestMaker/banner/parental/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/parental/Character/parental_control.ncg b/build/tests/TestMaker/banner/parental/Character/parental_control.ncg deleted file mode 100644 index ae83167b..00000000 Binary files a/build/tests/TestMaker/banner/parental/Character/parental_control.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/parental/ColorPalette/parental_control.ncl b/build/tests/TestMaker/banner/parental/ColorPalette/parental_control.ncl deleted file mode 100644 index 99910793..00000000 Binary files a/build/tests/TestMaker/banner/parental/ColorPalette/parental_control.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/parental/Preview/Preview0.npv b/build/tests/TestMaker/banner/parental/Preview/Preview0.npv deleted file mode 100644 index b57efd88..00000000 --- a/build/tests/TestMaker/banner/parental/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5108 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\banner_anm_idea03_ALL.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\banner_anm_idea03_1 ‚̃Rƒs[.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/parental/Scene/Scene0.nsn b/build/tests/TestMaker/banner/parental/Scene/Scene0.nsn deleted file mode 100644 index 2872adb9..00000000 --- a/build/tests/TestMaker/banner/parental/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\parental_control.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\parental_control.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-4:-30:404:56:1548:620 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 4 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 0,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:275:56:852:806 -OBJECT.DOCUMENT0.FRAME0.LayerID = 2 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 403 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-4:-30:12:111:1206:862 -OBJECT.DOCUMENT0.FRAME1.LayerID = 0 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 284 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 636 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 1,6 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,0 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/parental/workset.ini b/build/tests/TestMaker/banner/parental/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/parental/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/banner/shop/Cell/Cell0.nce b/build/tests/TestMaker/banner/shop/Cell/Cell0.nce deleted file mode 100644 index becd7177..00000000 Binary files a/build/tests/TestMaker/banner/shop/Cell/Cell0.nce and /dev/null differ diff --git a/build/tests/TestMaker/banner/shop/Character/banner_anm_idea03_ALL.ncg b/build/tests/TestMaker/banner/shop/Character/banner_anm_idea03_ALL.ncg deleted file mode 100644 index 383dda18..00000000 Binary files a/build/tests/TestMaker/banner/shop/Character/banner_anm_idea03_ALL.ncg and /dev/null differ diff --git a/build/tests/TestMaker/banner/shop/ColorPalette/banner_anm_idea03.ncl b/build/tests/TestMaker/banner/shop/ColorPalette/banner_anm_idea03.ncl deleted file mode 100644 index da867522..00000000 Binary files a/build/tests/TestMaker/banner/shop/ColorPalette/banner_anm_idea03.ncl and /dev/null differ diff --git a/build/tests/TestMaker/banner/shop/Preview/Preview0.npv b/build/tests/TestMaker/banner/shop/Preview/Preview0.npv deleted file mode 100644 index b57efd88..00000000 --- a/build/tests/TestMaker/banner/shop/Preview/Preview0.npv +++ /dev/null @@ -1,104 +0,0 @@ -#PROPLIST.VER 100/LINE 103 -PreviewDetail_State = 0 -PreviewDetail_Version = 4 -PreviewDetail_Comment = -PreviewDetail_Bg_State = 18 -PreviewDetail_Bg_NormalPaletteFile_State = 9 -PreviewDetail_Bg_NormalPaletteFile_FileName = -PreviewDetail_Bg_NormalPaletteFile_DataSize = 0 -PreviewDetail_Bg_Screens = 1 -PreviewDetail_Bg_0000Screen_State = 0 -PreviewDetail_Bg_0000Screen_ScreenFile_State = 11 -PreviewDetail_Bg_0000Screen_ScreenFile_FileName = -PreviewDetail_Bg_0000Screen_ScreenFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_CharacterFile_State = 10 -PreviewDetail_Bg_0000Screen_CharacterFile_FileName = -PreviewDetail_Bg_0000Screen_CharacterFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_State = 9 -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_FileName = -PreviewDetail_Bg_0000Screen_ExtendPaletteFile_DataSize = 0 -PreviewDetail_Bg_0000Screen_BgSurface = -1 -PreviewDetail_Bg_0000Screen_PositionX = 0 -PreviewDetail_Bg_0000Screen_PositionY = 0 -PreviewDetail_Bg_0000Screen_StartPositionX = 0 -PreviewDetail_Bg_0000Screen_StartPositionY = 0 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleX = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_ScaleY = 1.00 -PreviewDetail_Bg_0000Screen_AffineParam_Rotate = 0 -PreviewDetail_Bg_0000Screen_Priority = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeX = 0 -PreviewDetail_Bg_0000Screen_ScreenSizeY = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeX = 0 -PreviewDetail_Bg_0000Screen_CharacterSizeY = 0 -PreviewDetail_Bg_0000Screen_Comment = -PreviewDetail_Bg_3DPriority = 0 -PreviewDetail_Cell_State = 17921 -PreviewDetail_Cell_MultiCellFile_State = 13 -PreviewDetail_Cell_MultiCellFile_FileName = -PreviewDetail_Cell_MultiCellFile_DataSize = 0 -PreviewDetail_Cell_CellFile_State = 4 -PreviewDetail_Cell_CellFile_FileName = ..\Cell\Cell0.nce -PreviewDetail_Cell_CellFile_DataSize = 5108 -PreviewDetail_Cell_CharacterFile_State = 2 -PreviewDetail_Cell_CharacterFile_FileName = ..\Character\banner_anm_idea03_ALL.ncg -PreviewDetail_Cell_CharacterFile_DataSize = 4096 -PreviewDetail_Cell_ColorPaletteFile_State = 1 -PreviewDetail_Cell_ColorPaletteFile_FileName = ..\ColorPalette\banner_anm_idea03_1 ‚̃Rƒs[.ncl -PreviewDetail_Cell_ColorPaletteFile_DataSize = 512 -PreviewDetail_Cell_Animations = 1 -PreviewDetail_Cell_0000Animation_State = 1 -PreviewDetail_Cell_0000Animation_LabelId = 0 -PreviewDetail_Cell_0000Animation_LabelName = CellAnime0 -PreviewDetail_Cell_0000Animation_PositionX = 128 -PreviewDetail_Cell_0000Animation_PositionY = 96 -PreviewDetail_Cell_0000Animation_Comment = -PreviewDetail_Rambank_State = 0 -PreviewDetail_Rambank_CharacterBaseOffset = 0 -PreviewDetail_Rambank_CharacterBaseBlock0 = 0 -PreviewDetail_Rambank_CharacterBaseBlock1 = 0 -PreviewDetail_Rambank_CharacterBaseBlock2 = 0 -PreviewDetail_Rambank_CharacterBaseBlock3 = 0 -PreviewDetail_Rambank_ScreenBaseOffset = 0 -PreviewDetail_Rambank_ScreenBaseBlock0 = 0 -PreviewDetail_Rambank_ScreenBaseBlock1 = 0 -PreviewDetail_Rambank_ScreenBaseBlock2 = 0 -PreviewDetail_Rambank_ScreenBaseBlock3 = 0 -PreviewDetail_Rambank_Vrams = 7 -PreviewDetail_Rambank_0000Vram_State = 58 -PreviewDetail_Rambank_0000Vram_CurrentSize = 4096 -PreviewDetail_Rambank_0000Vram_MaxSize = 131072 -PreviewDetail_Rambank_0001Vram_State = 56 -PreviewDetail_Rambank_0001Vram_CurrentSize = 0 -PreviewDetail_Rambank_0001Vram_MaxSize = 131072 -PreviewDetail_Rambank_0002Vram_State = 24 -PreviewDetail_Rambank_0002Vram_CurrentSize = 0 -PreviewDetail_Rambank_0002Vram_MaxSize = 131072 -PreviewDetail_Rambank_0003Vram_State = 24 -PreviewDetail_Rambank_0003Vram_CurrentSize = 0 -PreviewDetail_Rambank_0003Vram_MaxSize = 131072 -PreviewDetail_Rambank_0004Vram_State = 120 -PreviewDetail_Rambank_0004Vram_CurrentSize = 0 -PreviewDetail_Rambank_0004Vram_MaxSize = 65536 -PreviewDetail_Rambank_0005Vram_State = 248 -PreviewDetail_Rambank_0005Vram_CurrentSize = 0 -PreviewDetail_Rambank_0005Vram_MaxSize = 16384 -PreviewDetail_Rambank_0006Vram_State = 248 -PreviewDetail_Rambank_0006Vram_CurrentSize = 0 -PreviewDetail_Rambank_0006Vram_MaxSize = 16384 -PreviewDetail_Effect_State = 524288 -PreviewDetail_Effect_AlphaCoefficient0 = 0 -PreviewDetail_Effect_AlphaCoefficient1 = 0 -PreviewDetail_Effect_BrightCoefficient = 0 -PreviewDetail_Effect_BgMosaicSizeX = 0 -PreviewDetail_Effect_BgMosaicSizeY = 0 -PreviewDetail_Effect_ObjMosaicSizeX = 0 -PreviewDetail_Effect_ObjMosaicSizeY = 0 -PreviewDetail_Window_State = 32768 -PreviewDetail_Window_WindowRect0Left = 0 -PreviewDetail_Window_WindowRect0Right = 0 -PreviewDetail_Window_WindowRect0Top = 0 -PreviewDetail_Window_WindowRect0Bottom = 0 -PreviewDetail_Window_WindowRect1Left = 0 -PreviewDetail_Window_WindowRect1Right = 0 -PreviewDetail_Window_WindowRect1Top = 0 -PreviewDetail_Window_WindowRect1Bottom = 0 diff --git a/build/tests/TestMaker/banner/shop/Scene/Scene0.nsn b/build/tests/TestMaker/banner/shop/Scene/Scene0.nsn deleted file mode 100644 index 5a18ca2b..00000000 --- a/build/tests/TestMaker/banner/shop/Scene/Scene0.nsn +++ /dev/null @@ -1,54 +0,0 @@ -INTELLIGENT SYSTEMS Co.,Ltd. NITRO-CHARACTER layout format version 1.00 -#PROPLIST.VER 100/LINE 49 -FILE.VERSION = 1 -PALETTE.DOCUMENT0 = ..\ColorPalette\banner_anm_idea03.ncl -PALETTE.COUNT = 1 -PREVIEW.DOCUMENT0 = ..\Preview\Preview0.npv -PREVIEW.COUNT = 1 -CHARACTER.DOCUMENT0 = ..\Character\banner_anm_idea03_ALL.ncg -CHARACTER.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:177:87:1203:702 -CHARACTER.DOCUMENT0.FRAME0.LayerID = 2 -CHARACTER.DOCUMENT0.FRAME0.View0.Grid = 1 -CHARACTER.DOCUMENT0.FRAME0.View0.Mag = 6 -CHARACTER.DOCUMENT0.FRAME0.View0.Scroll = 542,0 -CHARACTER.DOCUMENT0.FRAMECOUNT = 1 -CHARACTER.COUNT = 1 -SCREEN.COUNT = 0 -OBJECT.DOCUMENT0 = ..\Cell\Cell0.nce -OBJECT.DOCUMENT0.FRAME0.WindowPlacement = 0:1:-1:-1:-1:-1:64:10:862:685 -OBJECT.DOCUMENT0.FRAME0.LayerID = 1 -OBJECT.DOCUMENT0.FRAME0.PaneWidth0 = 150 -OBJECT.DOCUMENT0.FRAME0.PaneWidth1 = 624 -OBJECT.DOCUMENT0.FRAME0.PaneWidth2 = 0 -OBJECT.DOCUMENT0.FRAME0.TreeWidth = 93 -OBJECT.DOCUMENT0.FRAME0.List.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.List.Cursor = 0,7 -OBJECT.DOCUMENT0.FRAME0.List.HeaderWidth = 64,256 -OBJECT.DOCUMENT0.FRAME0.View.Grid = 1 -OBJECT.DOCUMENT0.FRAME0.View.Mag = 4 -OBJECT.DOCUMENT0.FRAME0.View.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAME0.Tree.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME0.Tree.HeaderWidth = 30,30,32,32,25,30,20,33,20,60,38,30,21,33,35,20 -OBJECT.DOCUMENT0.FRAMETYPE0 = 1 -OBJECT.DOCUMENT0.FRAME1.WindowPlacement = 0:1:-1:-1:-1:-1:135:323:1085:976 -OBJECT.DOCUMENT0.FRAME1.LayerID = 0 -OBJECT.DOCUMENT0.FRAME1.ColumnSize0 = 231 -OBJECT.DOCUMENT0.FRAME1.ColumnSize1 = 113 -OBJECT.DOCUMENT0.FRAME1.ColumnSize2 = 546 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeList.HeaderWidth = 59,34,256 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Scroll = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.Cursor = 0,0 -OBJECT.DOCUMENT0.FRAME1.AnimeView.HeaderWidth = 43,37,40,40,40,40,40,256 -OBJECT.DOCUMENT0.FRAME1.Anime.Grid = 0 -OBJECT.DOCUMENT0.FRAME1.Anime.Mag = 4 -OBJECT.DOCUMENT0.FRAME1.Anime.Scroll = 832,320 -OBJECT.DOCUMENT0.FRAMETYPE1 = 2 -OBJECT.DOCUMENT0.FRAMECOUNT = 2 -OBJECT.COUNT = 1 -MULTICELL.COUNT = 0 -NITRO-CHARACTER Scene format version 1.00 -#PROPLIST.VER 100/LINE 1 -Scene.Comment = diff --git a/build/tests/TestMaker/banner/shop/workset.ini b/build/tests/TestMaker/banner/shop/workset.ini deleted file mode 100644 index 75afb17d..00000000 --- a/build/tests/TestMaker/banner/shop/workset.ini +++ /dev/null @@ -1,4 +0,0 @@ -[LastScene] -File=Scene\Scene0.nsn -[Recent] -ExportFolder= diff --git a/build/tests/TestMaker/config/ROM-TS_nand_forPARENTAL.rsf b/build/tests/TestMaker/config/ROM-TS_nand_forPARENTAL.rsf deleted file mode 100644 index 35e5167d..00000000 --- a/build/tests/TestMaker/config/ROM-TS_nand_forPARENTAL.rsf +++ /dev/null @@ -1,251 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - #CERO FREE - #ESRB FREE - #USK FREE - #PEGI_GEN FREE - #PEGI_PRT FREE - #PEGI_BBFC FREE - #OFLC FREE - #GRB FREE -} diff --git a/build/tests/TestMaker/config/romparam_forBoottest.yaml b/build/tests/TestMaker/config/romparam_forBoottest.yaml deleted file mode 100644 index 29387e6c..00000000 Binary files a/build/tests/TestMaker/config/romparam_forBoottest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/romparam_forCLStest.yaml b/build/tests/TestMaker/config/romparam_forCLStest.yaml deleted file mode 100644 index 72206362..00000000 Binary files a/build/tests/TestMaker/config/romparam_forCLStest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/romparam_forEULAtest.yaml b/build/tests/TestMaker/config/romparam_forEULAtest.yaml deleted file mode 100644 index 1f9532f9..00000000 Binary files a/build/tests/TestMaker/config/romparam_forEULAtest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/romparam_forFATFSPermissiontest.yaml b/build/tests/TestMaker/config/romparam_forFATFSPermissiontest.yaml deleted file mode 100644 index 980299c9..00000000 Binary files a/build/tests/TestMaker/config/romparam_forFATFSPermissiontest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/romparam_forShoptest.yaml b/build/tests/TestMaker/config/romparam_forShoptest.yaml deleted file mode 100644 index 6804a5ed..00000000 Binary files a/build/tests/TestMaker/config/romparam_forShoptest.yaml and /dev/null differ diff --git a/build/tests/TestMaker/config/twl_parentalcontrol_spec.yaml b/build/tests/TestMaker/config/twl_parentalcontrol_spec.yaml deleted file mode 100644 index 70502ddc..00000000 Binary files a/build/tests/TestMaker/config/twl_parentalcontrol_spec.yaml and /dev/null differ diff --git a/build/tests/TestMaker/doc/20080617_DS_fontcodeList_NOE_FIANL.xls b/build/tests/TestMaker/doc/20080617_DS_fontcodeList_NOE_FIANL.xls deleted file mode 100644 index 6da552de..00000000 Binary files a/build/tests/TestMaker/doc/20080617_DS_fontcodeList_NOE_FIANL.xls and /dev/null differ diff --git a/build/tests/TestMaker/doc/twl_cls_checksheet_20080508.xls b/build/tests/TestMaker/doc/twl_cls_checksheet_20080508.xls deleted file mode 100644 index 9329f55a..00000000 Binary files a/build/tests/TestMaker/doc/twl_cls_checksheet_20080508.xls and /dev/null differ diff --git a/build/tests/TestMaker/doc/twl_parentalcontrol_spec_20080704.xls b/build/tests/TestMaker/doc/twl_parentalcontrol_spec_20080704.xls deleted file mode 100644 index 3a612cca..00000000 Binary files a/build/tests/TestMaker/doc/twl_parentalcontrol_spec_20080704.xls and /dev/null differ diff --git a/build/tests/TestMaker/readme.txt b/build/tests/TestMaker/readme.txt deleted file mode 100644 index 95b161ae..00000000 --- a/build/tests/TestMaker/readme.txt +++ /dev/null @@ -1,39 +0,0 @@ -#---------------------------------------------------------------------------- -# [CLS ƒeƒXƒg—p] ROM ì¬ -# -# -- CLS ƒeƒXƒg —p ROM ‚ð쬂µ‚Ü‚·B -# ‚±‚̃hƒLƒ…ƒƒ“ƒg‚͂قڊo‘‚Å‚·B -# -#---------------------------------------------------------------------------- - -* ’ˆÓ -- Python 2.5 ‚ÌŽÀsŠÂ‹«‚ª•K{‚Å‚·B‚·‚¢‚Ü‚¹‚ñB -- PyYAML ‚̃Cƒ“ƒXƒg[ƒ‹‚ª•K{‚Å‚·B‚·‚¢‚Ü‚¹‚ñB -- pyExcelerator ‚̃Cƒ“ƒXƒg[ƒ‹‚ªˆê•”•K—v‚Å‚·B‚·‚¢‚Ü‚¹‚ñB --- http://pyyaml.org/ ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B - -* —˜—p•û–@ - -- CLS ƒeƒXƒg ROM ì¬‚É‚Í make clstest -> make ‚µ‚Ä‚­‚¾‚³‚¢B -- FONT ƒeƒXƒg ROM ì¬‚É‚Í make fonttest -> make ‚µ‚Ä‚­‚¾‚³‚¢B -- PARENTAL ƒeƒXƒg ROM ì¬‚É‚Í make parentaltest -> make ‚µ‚Ä‚­‚¾‚³‚¢B -- EULA ƒeƒXƒg ROM ì¬‚É‚Í make eulatest -> make ‚µ‚Ä‚­‚¾‚³‚¢B -- ã‹L make ì‹ÆŒã‚ÉAmake forcls ‚Ƒł‚ÆA~ - CLS ‘€ì—pƒfƒBƒŒƒNƒgƒŠ (forCLS) ‚ª¶¬‚³‚ê‚Ü‚·B - -* ROM ¶¬ƒpƒ‰ƒ[ƒ^ -- romparam.yaml ‚Ƀpƒ‰ƒ[ƒ^‚ªŽw’肳‚ê‚Ä‚¢‚Ü‚·B -- CLS ƒeƒXƒg—pƒpƒ‰ƒ[ƒ^‚ÉŠÖ‚µ‚Ä‚ÍA - ./docs/twl_cls_checksheet_20080508.xls ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B -- FONT ƒeƒXƒg—pƒpƒ‰ƒ[ƒ^‚ÉŠÖ‚µ‚Ä‚ÍA - ./docs/20080617_DS_fontcodeList_NOE_FIANL.xls ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B -- PARENTAL ƒeƒXƒg—pƒpƒ‰ƒ[ƒ^‚ÉŠÖ‚µ‚Ä‚ÍA - ./docs/twl_parentalcontrol_spec_20080704.xls ‚ðŽQÆ‚µ‚Ä‚­‚¾‚³‚¢B -- EULA ƒeƒXƒg—pƒpƒ‰ƒ[ƒ^‚ÉŠÖ‚µ‚Ä‚ÍA - ¡ŒãŒŸØ“à—e‚ÌÚׂð‚‚߂é•K—v‚ª‚ ‚è‚Ü‚·B - -* CLS ƒeƒXƒg¶¬•¨ - HZ0A : System/NAND/ƒZƒLƒ…ƒA --> ShopApp / Menu - HZ4A : System/NAND/ƒf[ƒ^ --> ŽÊ^’  - HZ5A : System/”ñ•\ަ/NAND/ƒf[ƒ^ --> –³ü Firm - KZ2A : User/NAND --> Shop ”Ì”„ App \ No newline at end of file diff --git a/build/tests/TestMaker/romparam.yaml b/build/tests/TestMaker/romparam.yaml deleted file mode 100644 index 051094cf..00000000 Binary files a/build/tests/TestMaker/romparam.yaml and /dev/null differ diff --git a/build/tests/TestMaker/rsf/ROM-TS_custom.rsf b/build/tests/TestMaker/rsf/ROM-TS_custom.rsf deleted file mode 100644 index 3b2f97af..00000000 --- a/build/tests/TestMaker/rsf/ROM-TS_custom.rsf +++ /dev/null @@ -1,319 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G/4G] - # - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # CommonClientKey: launcher deliver common client Key [TRUE/FALSE] - # - #CommonClientKey FALSE - - # - # HwAESSlotA_SSLClientCert: launcher deliver HW AES slot A setting [TRUE/FALSE] - # - #HwAESSlotA_SSLClientCert FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - #HwAESSlotB FALSE - - # - # HwAESSlotB for Sign JPEG for Launcher: launcher deliver HW AES slot B setting for Sign JPEG for Launcher [TRUE/FALSE] - # - #HwAESSlotB_SignJPEGForLauncher FALSE - - # - # HwAESSlotC: launcher deliver HW AES slot C setting [TRUE/FALSE] - # - #HwAESSlotC FALSE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - #SDCardAccess FALSE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - #NANDAccess FALSE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [1 - 255] - # - #AgreeEULAVersion 1 - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - #Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType USER - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - #Launch TRUE - - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - #DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - #Secure FALSE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE - - # - # Game card transferd to nitro mode: [TRUE/FALSE] - # - #GameCardNitroMode FALSE - - # - # Shared2 file size: [DISABLE/0-4194304/0K-4096K/0M-4M] - # - #Shared2File0Size Disable - #Shared2File1Size Disable - #Shared2File2Size Disable - #Shared2File3Size Disable - #Shared2File4Size Disable - #Shared2File5Size Disable -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / PENDING / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/TestMaker/script/clsdir.py b/build/tests/TestMaker/script/clsdir.py deleted file mode 100644 index bfbfa795..00000000 --- a/build/tests/TestMaker/script/clsdir.py +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import os, sys, shutil -import yaml,codecs -import binascii - -romparampath = sys.argv[1] -romparam = yaml.load(codecs.open(romparampath,'r','utf16')) - -#----- 定数 -rsfkey = 'RSF' -bnrkey = 'Banner' -eulakey = 'EULA' -ratingkey = 'Rating' - -#----- forCLS ディレクトリã®ç”Ÿæˆ ------------------------------------ -forclsdir = './forCLS' -try: - os.mkdir(forclsdir) -except: - print 'clsdir.py : can not create dir %s' % forclsdir - -#----- cls æ“作用ディレクトリã®ç”Ÿæˆ --------------------------------- -for num in romparam.keys(): - gamecode = romparam[num][rsfkey]['GameCode'] - tadpath = ''.join(['./roms/','twl_',gamecode,'.tad']) - - #----- gamecode dir ã®ç”Ÿæˆ. - if os.path.exists(tadpath): - try: - clsappdir = ''.join([forclsdir,'/',gamecode]) - os.mkdir(clsappdir) - except: - print 'clsdir.py : can not create dir %s' % clsappdir - else: - print 'clsdir.py : can not create dir %s' % clsappdir - continue - - #----- version ディレクトリã®ç”Ÿæˆ - verdir = ''.join([clsappdir,'/v',str(romparam[num][rsfkey]['Version'])]) - try: - os.mkdir(verdir) - except: - print 'clsdir.py : can not create dir %s' % verdir - continue - - #----- tadfile ã®ã‚³ãƒ”ー - try: - shutil.copy(tadpath,verdir) - except (IOError, os.error), why: - print "Can't copy %s to %s: %s" % (`tadpath`, `verdir`, str(why)) - continue - - #----- TitleID å–å¾— - tmpId = 0x00030000 - keys = ('AppType','Launch','Media','DataOnly','Secure') - for shiftbit, key in enumerate(keys): - if key == 'Launch': - if not romparam[num][rsfkey][key]: - tmpId = tmpId + (1< 2 and key[1] == 1][:-29] - fonts = [sheet[key][1] for key in keys if key[0] > 2 and key[1] == 2][:-29] - - #--- ROM ã®ä½œæˆé †åºã®å¤‰æ›´ - if reverseflg: - fontcodes.reverse() - fonts.reverse() - - #--- romparam.yaml ã®ç”Ÿæˆ - try: - yamlfile = codecs.open(yamlpath, 'w', 'utf16') - except: - print 'genparam.py : can not open %s file' % yamlpath - continue - else: - #--- 定数値 - version = '0x0000' - apptype = 'USER' - launch = 'TRUE' - media = 'NAND' - dataonly = 'FALSE' - secure = 'FALSE' - etikect = 'personalized' - titlename = '' - titletype = 'TWL_APP' - filename = 'banner.bnr' - bnrver = '3' - codes = map(chr,range(ord('a'),ord('z')+1)) - for index, font in enumerate(fonts): - #--- gamecode, bnrtitle ã®æ±ºå®š - gamecode = ''.join(['4',codes[index/26],codes[(index%26)],'A']) - #--- 0x0060 ã ã‘特別対応 Excel データãŒå­˜åœ¨ã—ãªã„ãŸã‚(img 貼付) - if fontcodes[index] == '0x0060': - bnrline1 = repr(''.join(['\x60_',fontcodes[index]]))[2:-1] - else: - bnrline1 = repr(''.join([font,'_',fontcodes[index]]))[2:-1] - #--- index - yamlfile.write('#-- ROM No.%d ------------------------\n' % index) - yamlfile.write('%d:\n' % index) - #--- rsf & properties parameter - yamlfile.write(' RSF :\n') - yamlfile.write(' GameCode : %s\n' % gamecode ) - yamlfile.write(' Version : %s\n' % version ) - #yamlfile.write(' AppType : %s\n' % apptype ) - #yamlfile.write(' Launch : %s\n' % launch ) - yamlfile.write(' Media : %s\n' % media ) - #yamlfile.write(' DataOnly : %s\n' % dataonly ) - #yamlfile.write(' Secure : %s\n' % secure ) - yamlfile.write(' TitleName : %s\n' % titlename ) - yamlfile.write(' TitleType : %s\n' % titletype ) - yamlfile.write(' eTicket : %s\n' % etikect ) - #--- bsf parameter - yamlfile.write(' Banner :\n') - yamlfile.write(' File : %s\n' % filename ) - yamlfile.write(' Version : %s\n' % bnrver ) - for language in ('JP','EN','FR','GE','IT','SP','CN','HN'): - bnrline2 = ''.join(['No.',str(index),' Lang:',language]) - if font == '"': - yamlfile.write(" %s : ['%s', '%s']\n" % (language, bnrline1, bnrline2)) - else: - yamlfile.write(' %s : ["%s", "%s"]\n' % (language, bnrline1, bnrline2)) - yamlfile.write('\n\n') - finally: - yamlfile.close() \ No newline at end of file diff --git a/build/tests/TestMaker/script/parentalcontrol.py b/build/tests/TestMaker/script/parentalcontrol.py deleted file mode 100644 index 105a36d4..00000000 --- a/build/tests/TestMaker/script/parentalcontrol.py +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import sys, yaml, codecs - - -target = sys.argv[1] -yamlpath = sys.argv[2] -#target = '../config/twl_parentalcontrol_spec.yaml' -#yamlpath = '../romparam.yaml' -ognparam = yaml.load(codecs.open(target,'r','utf16')) - -#--- romparam.yaml ã®ç”Ÿæˆ -try: - yamlfile = codecs.open(yamlpath, 'w', 'utf16') -except: - print '%s : can not open %s file' % ('hoge', yamlpath) -else: - #--- 定数値 - version = '0x0000' - apptype = 'USER' - launch = 'TRUE' - media = 'NAND' - dataonly = 'FALSE' - secure = 'FALSE' - etikect = 'personalized' - titlename = '' - titletype = 'TWL_APP' - filename = 'banner.bnr' - bnrver = '3' - codes = map(chr,range(ord('a'),ord('z')+1)) - - index = 0 - for ogn in sorted(ognparam.keys()): - #--- CardRegion ã®æ±ºå®š - region = ognparam[ogn][0] - for age in ognparam[ogn][1]: - #--- gamecode, bnrtitle ã®æ±ºå®š - gamecode = ''.join(['4',codes[index/26],codes[(index%26)],'A']) - bnrline1 = ''.join([ogn,'/',str(age)]) - #--- index - yamlfile.write('#-- ROM No.%d ------------------------\n' % index) - yamlfile.write('%d:\n' % index) - #--- rsf & properties parameter - yamlfile.write(' RSF :\n') - yamlfile.write(' GameCode : %s\n' % gamecode ) - yamlfile.write(' Version : %s\n' % version ) - yamlfile.write(' AppType : %s\n' % apptype ) - yamlfile.write(' Launch : %s\n' % launch ) - yamlfile.write(' Media : %s\n' % media ) - yamlfile.write(' DataOnly : %s\n' % dataonly ) - yamlfile.write(' Secure : %s\n' % secure ) - yamlfile.write(' CardRegion : %s\n' % region ) - yamlfile.write(' TitleName : %s\n' % titlename ) - yamlfile.write(' TitleType : %s\n' % titletype ) - yamlfile.write(' eTicket : %s\n' % etikect ) - #--- bsf parameter - yamlfile.write(' Banner :\n') - yamlfile.write(' File : %s\n' % filename ) - yamlfile.write(' Version : %s\n' % bnrver ) - for language in ('JP','EN','FR','GE','IT','SP','CN','HN'): - bnrline2 = ''.join(['No.',str(index),' Lang:',language]) - yamlfile.write(" %s : %s" % (language,str(yaml.dump([bnrline1,bnrline2])))) - #--- Rating - yamlfile.write(' Rating :\n') - yamlfile.write(' Ogn : %s\n' % ogn ) - yamlfile.write(' Age : %s\n' % age ) - yamlfile.write('\n\n') - index = index + 1 -finally: - yamlfile.close() \ No newline at end of file diff --git a/build/tests/TestMaker/script/rename_eula.py b/build/tests/TestMaker/script/rename_eula.py deleted file mode 100644 index d65863f1..00000000 --- a/build/tests/TestMaker/script/rename_eula.py +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import os, sys, yaml, codecs - -#yamlpath = sys.argv[1] -yamlpath = '../romparam.yaml' -romparam = yaml.load(codecs.open(yamlpath,'r','utf16')) - -#----- 定数 -rsfkey = 'RSF' -bnrkey = 'Banner' -eulakey = 'EULA' -ratingkey = 'Rating' - -os.chdir('../roms') - -for num in romparam.keys(): - srcname = ''.join(['twl_',romparam[num][rsfkey]['GameCode'],'.tad']) - destname = ''.join([str(romparam[num][bnrkey]['JP'][0]),'.tad']) - os.rename(srcname,destname) \ No newline at end of file diff --git a/build/tests/TestMaker/script/rename_font.py b/build/tests/TestMaker/script/rename_font.py deleted file mode 100644 index 47074a1e..00000000 --- a/build/tests/TestMaker/script/rename_font.py +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import os, sys, yaml, codecs - -#yamlpath = sys.argv[1] -yamlpath = '../romparam.yaml' -romparam = yaml.load(codecs.open(yamlpath,'r','utf16')) - -#----- 定数 -rsfkey = 'RSF' -bnrkey = 'Banner' -eulakey = 'EULA' -ratingkey = 'Rating' - -os.chdir('../roms') - -for num in romparam.keys(): - srcname = ''.join(['twl_',romparam[num][rsfkey]['GameCode'],'.tad']) - #destname = ''.join([('No.%03d_' % num), - # romparam[num][bnrkey]['JP'][0].split('_')[1], - # '.tad']) - destname = ''.join([('No.%03d_' % num), - romparam[num][bnrkey]['JP'][1].split('_')[0], - '_L2.tad']) - - try: - os.rename(srcname,destname) - except: - print srcname, destname \ No newline at end of file diff --git a/build/tests/TestMaker/script/rename_parental.py b/build/tests/TestMaker/script/rename_parental.py deleted file mode 100644 index 5d6d11fe..00000000 --- a/build/tests/TestMaker/script/rename_parental.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python -# -*- coding:utf-8 -*- - -import os, sys, yaml, codecs - -#yamlpath = sys.argv[1] -yamlpath = '../romparam.yaml' -romparam = yaml.load(codecs.open(yamlpath,'r','utf16')) - -#----- 定数 -rsfkey = 'RSF' -bnrkey = 'Banner' -eulakey = 'EULA' -ratingkey = 'Rating' - -os.chdir('../roms') - -for num in romparam.keys(): - srcname = ''.join(['twl_',romparam[num][rsfkey]['GameCode'],'.tad']) - destname = ''.join([str(romparam[num][bnrkey]['JP'][0]).replace('/','_'),'.tad']) - os.rename(srcname,destname) - - srcname = ''.join(['twl_',romparam[num][rsfkey]['GameCode'],'.srl']) - destname = ''.join([str(romparam[num][bnrkey]['JP'][0]).replace('/','_'),'.srl']) - os.rename(srcname,destname) \ No newline at end of file diff --git a/build/tests/UjiPackage/Makefile b/build/tests/UjiPackage/Makefile deleted file mode 100644 index 9b70d85c..00000000 --- a/build/tests/UjiPackage/Makefile +++ /dev/null @@ -1,98 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL - build -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -# »•i‹Zp•”—pƒŠƒŠ[ƒXì¬Makefile - -TARGET_FIRM = SYSTEMMENU - -# -------------------------------- -# ƒcƒŠ[‚Ö‚ÌExport - -ifdef TWLSYSTEM_ROOT -export NITROSYSTEM_ROOT = $(TWLSYSTEM_ROOT) -endif - -export TARGET_CODEGEN = ALL - -# -------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -# check mandatory packages - -ifneq ($(TWLSDK_PRIVATE),TRUE) -$(error "TwlSDK-private is needed.") -endif - -ifneq ($(TWLSDK_SYSMENU_PRIVATE),TRUE) -$(error "TwlSDK-SysMenu-private is needed.") -endif - -ifneq ($(TWLSDK_SECURE7_PRIVATE),TRUE) -$(error "TwlSDK-Secure7-private is needed.") -endif - -ifneq ($(TWLSDK_TWL_WIRELESS_PRIVATE),TRUE) -$(error "TwlSDK-TwlWireless-private is needed.") -endif - -#---------------------------------------------------------------------------- - -SUBDIRS = \ - $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/namut/ARM9 \ - $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/reloc_info/ARM7 \ - $(TWL_IPL_RED_ROOT)/build/libraries_sysmenu/hotsw/ARM7 \ - $(TWL_IPL_RED_ROOT)/build/tests/TestComponent/ARM7.TWL - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -FIND := find -ARCHIVE_ROOT ?= . -PACKING_DATE_AND_TIME ?= $(shell date +"%Y%m%d %H%M") -PACKING_DATE ?= $(word 1,$(PACKING_DATE_AND_TIME)) -PACKING_TIME ?= $(word 2,$(PACKING_DATE_AND_TIME)) -ARCHIVE ?= TwlIPL-uji-$(PACKING_DATE)-$(PACKING_TIME).zip -PACKAGE_TMP ?= ./TwlIPL - -.PHONY: package - -package: - @echo --- Copy sources ---; \ - mkdir -p $(PACKAGE_TMP); \ - mkdir -p $(PACKAGE_TMP)/build; \ - mkdir -p $(PACKAGE_TMP)/build/tests; \ - mkdir -p $(PACKAGE_TMP)/build/systemMenu_tools; \ - $(CP) $(TWL_IPL_RED_ROOT)/build/tests/TestComponent $(PACKAGE_TMP)/build/tests/TestComponent; \ - $(CP) $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/common $(PACKAGE_TMP)/build/systemMenu_tools/common; \ - echo --- Build TwlIPL ---; \ - $(MAKE) full; \ - echo --- Packaging ---; \ - mkdir -p $(PACKAGE_TMP); \ - $(CP) $(TWL_IPL_RED_ROOT)/setup $(PACKAGE_TMP)/setup; \ - $(CP) $(TWL_IPL_RED_ROOT)/lib $(PACKAGE_TMP)/lib; \ - $(CP) $(TWL_IPL_RED_ROOT)/include $(PACKAGE_TMP)/include; \ - $(CP) $(TWL_IPL_RED_ROOT)/components $(PACKAGE_TMP)/components; \ - $(CP) $(TWL_IPL_RED_ROOT)/build/buildtools $(PACKAGE_TMP)/build/buildtools; \ - $(FIND) $(PACKAGE_TMP) -name ".svn" -a -type d -print -prune -exec $(RM) $(VERBOSE) {} \; - zip -r $(ARCHIVE_ROOT)/$(ARCHIVE) $(PACKAGE_TMP) - - - -#===== End of Makefile ===== diff --git a/build/tests/UjiPackage/readme.txt b/build/tests/UjiPackage/readme.txt deleted file mode 100644 index 80107ac6..00000000 --- a/build/tests/UjiPackage/readme.txt +++ /dev/null @@ -1,24 +0,0 @@ -»•i‹Zp•”ŒŸ¸ƒvƒƒOƒ‰ƒ€—pTwlIPLƒpƒbƒP[ƒWì¬Makefile - -¡•K—v‚ÈTwlSDKƒpƒbƒP[ƒW - - TWLSDK-5_1-20090303-jp.zip - TWLSDK-5_1-20090303-private-jp.zip - TWLSDK-5_1-20090303-private-Secure7-jp.zip - TWLSDK-5_1-20090303-private-SysMenu-jp.zip - TwlSDK-5_1-20090303-private-TwlWireless-jp.zip - - -¡ì‚è•û -1. ŠeŽí•Ï”‚ðÝ’è - -$ export TWLSDK_PLATFORM=TWL -$ export TWLSYSTEM_ROOT=(TwlSystem‚̃Cƒ“ƒXƒg[ƒ‹ƒfƒBƒŒƒNƒgƒŠ) -¦TWLSYSTEM‚ÍŽg—p‚µ‚Ü‚¹‚ñ‚ªATwlIPL‚Ìcommondefs‚ª‚«‚¿‚ñ‚ƉðŽß‚³‚ê‚È‚¢‚½‚ßA -@ݒ肵‚Ä‚­‚¾‚³‚¢B - -2. packageƒ^[ƒQƒbƒg‚ðŽw’肵‚Ämake - -$ make package - -TwlIPL-uji-(“ú•t)-(ŽžŠÔ).zip ‚ª‚±‚̃fƒBƒŒƒNƒgƒŠ‚ɶ¬‚³‚ê‚Ü‚·B diff --git a/build/tests/WDSTest/Makefile b/build/tests/WDSTest/Makefile deleted file mode 100644 index fe71f85b..00000000 --- a/build/tests/WDSTest/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_PROC = ARM9 - -SRCS = main.c -TARGET_BIN = main.srl - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LLIBRARIES += WDS$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/WDSTest/src/main.c b/build/tests/WDSTest/src/main.c deleted file mode 100644 index e896b5bb..00000000 --- a/build/tests/WDSTest/src/main.c +++ /dev/null @@ -1,297 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - WDSTest - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include -#include - -// ƒq[ƒv‰Šú‰»ŠÖ” -static void InitializeAllocateSystem(void); - -// ƒAƒNƒZƒXƒ|ƒCƒ“ƒgî•ñ‚̃fƒoƒbƒO•\ަ—pŠÖ” -static void DumpWDSApInfo( WDSApInfo *apinfo ); - -void VBlankIntr(void); - -// WDS”ñ“¯ŠúŠÖ”‚̃R[ƒ‹ƒoƒbƒNŠÖ”‚½‚¿ -// ƒR[ƒ‹ƒoƒbƒNŠÖ”“à‚ł̓AƒvƒŠƒP[ƒVƒ‡ƒ“‚̃Xƒe[ƒg•Ï”g_appstate‚ð•ÏX‚·‚é -void WDS_Initialize_CB(void *arg); -void WDS_StartScan_CB(void *arg); -void WDS_EndScan_CB(void *arg); -void WDS_End_CB(void *arg); - -// ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð§Œä‚·‚éƒXƒe[ƒg‚Ì—ñ‹“Œ^ -typedef enum AppState { - APP_STATE_WDSINIT, - APP_STATE_WDSWAITINIT, - APP_STATE_WDSSCAN, - APP_STATE_WDSWAITSCAN, - APP_STATE_WDSCOMPLETESCAN, - APP_STATE_WDSENDSCAN, - APP_STATE_WDSWAITENDSCAN, - APP_STATE_WDSCOMPLETEENDSCAN, - APP_STATE_WDSEND, - APP_STATE_WDSWAITEND, - APP_STATE_WDSCOMPLETEEND -} AppState; - -// ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ð§Œä‚·‚éƒXƒe[ƒg•Ï” -static AppState g_appstate = APP_STATE_WDSINIT; - -// Žó‚¯Žæ‚Á‚½ƒr[ƒRƒ“î•ñ‚ðŠi”[‚·‚é•Ï”(‚±‚Ì”z—ñ‚ðƒ‰ƒ“ƒ`ƒƒ[Œo—R‚ŃzƒbƒgƒXƒ|ƒbƒgƒ`ƒƒƒ“ƒlƒ‹‚É“n‚·) -static WDSBriefApInfo briefapinfo[WDS_APINFO_MAX]; - -// ŽžŠÔŒv‘ª—p -static OSTick wdsBegin; - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - u8 *wdsSysBuf; - OSTick wdsScanBeginTick = 0; - - // ŠeŽí‰Šú‰»ˆ— - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - InitializeAllocateSystem(); - - // WDSƒ‰ƒCƒuƒ‰ƒŠ‚ªŽg—p‚·‚éƒoƒbƒtƒ@‚ðŠm•Û(32ƒoƒCƒgƒAƒ‰ƒCƒ“ƒƒ“ƒg‚µ‚Ä‚¢‚é•K—v‚ª‚ ‚é) - wdsSysBuf = OS_Alloc( WDS_GetWorkAreaSize() ); - if( wdsSysBuf == NULL) - { - OS_Panic("OS_Alloc Failed"); - } - - // ƒƒCƒ“ƒ‹[ƒv - while( 1 ) { - OSTick now; - int i; - - OS_WaitVBlankIntr(); - switch( g_appstate ) - { - case APP_STATE_WDSINIT: - // ƒCƒjƒVƒƒƒ‹ƒXƒe[ƒg - - // WDSƒ‰ƒCƒuƒ‰ƒŠ‚̉Šú‰»ŠÖ”‚ðŒÄ‚Ño‚µA‚»‚Ì”ñ“¯Šúˆ—‚ÌŠ®—¹‚ð‘Ò‚Â - OS_Printf("*** WDS_Initialize\n"); - g_appstate = APP_STATE_WDSWAITINIT; - wdsBegin = OS_GetTick(); - if( WDS_Initialize( wdsSysBuf, WDS_Initialize_CB, 0 ) == 0 ) - { - OS_Printf("WDS_Initialize successed\n"); - } - else { - OS_TPrintf("WDS_Initialize failed"); - g_appstate = APP_STATE_WDSCOMPLETEEND; - } - break; - OS_Printf("*** WDS_Initialize waiting asyncronous process\n"); - case APP_STATE_WDSWAITINIT: - case APP_STATE_WDSWAITSCAN: - case APP_STATE_WDSWAITENDSCAN: - case APP_STATE_WDSWAITEND: - // ”ñ“¯Šúˆ—‚ÌŠ®—¹‚ð‘҂ƒXƒe[ƒgŒQ - - // ƒR[ƒ‹ƒoƒbƒNŠÖ”‚ªŒÄ‚Ño‚³‚êAƒXƒe[ƒg‚ª•ÏX‚³‚ê‚é‚Ì‚ð‘҂Ă΂悢 - break; - case APP_STATE_WDSSCAN: - // ‰Šú‰»‚ªŠ®—¹‚µ‚½’¼Œã‚©Aƒr[ƒRƒ“ƒXƒLƒƒƒ“Š®—¹Žž‚Ɉø‚«‘±‚«ƒXƒLƒƒƒ“‚ðs‚¤ê‡‚É“ü‚Á‚Ä‚­‚éƒXƒe[ƒg - - //OS_Printf("*** WDS_StartScan\n"); - // ƒr[ƒRƒ“ƒXƒLƒƒƒ“”ñ“¯Šúˆ—‚ðŠJŽn‚·‚é - g_appstate = APP_STATE_WDSWAITSCAN; - wdsBegin = OS_GetTick(); - if( WDS_StartScan( WDS_StartScan_CB ) == 0 ) - { - if( wdsScanBeginTick == 0 ) - wdsScanBeginTick = OS_GetTick(); - } - else { - OS_TPrintf("WDS_EndScan failed"); - g_appstate = APP_STATE_WDSEND; - } - break; - case APP_STATE_WDSCOMPLETESCAN: - // ƒXƒLƒƒƒ“Š®—¹Œã‚É“ü‚Á‚Ä‚­‚éƒXƒe[ƒg - - // ˆê‰ñ‚̃XƒLƒƒƒ“‚ł̓r[ƒRƒ“‚ðŽæ‚ê‚È‚¢‚±‚Æ‚ª‘½‚¢‚Ì‚ÅA2•bŠÔƒr[ƒRƒ“ŽóM‚ðŒJ‚è•Ô‚· - now = OS_GetTick(); - if( OS_TicksToMilliSeconds(now - wdsScanBeginTick) < 2000 ) - { - // ăXƒLƒƒƒ“‚Ì‚½‚߂ɃXƒLƒƒƒ“ŠJŽnƒXƒe[ƒg‚ɈÚs - g_appstate = APP_STATE_WDSSCAN; - } - else { - // ƒXƒLƒƒƒ“I—¹ƒXƒe[ƒg‚ɈÚs - g_appstate = APP_STATE_WDSENDSCAN; - } - break; - case APP_STATE_WDSENDSCAN: - // ƒXƒLƒƒƒ“‚ðI—¹‚³‚¹‚éÛ‚É“ü‚Á‚Ä‚­‚éƒXƒe[ƒg - OS_Printf("*** WDS_EndScan\n"); - - // ƒXƒLƒƒƒ“‚ðI—¹‚³‚¹‚é”ñ“¯Šúˆ—‚ðŠJŽn‚·‚é - wdsBegin = OS_GetTick(); - g_appstate = APP_STATE_WDSWAITENDSCAN; - if( WDS_EndScan( WDS_EndScan_CB ) == 0 ) - { - OS_Printf("WDS_EndScan successed\n"); - } - else { - OS_TPrintf("WDS_EndScan failed"); - g_appstate = APP_STATE_WDSEND; - } - break; - case APP_STATE_WDSCOMPLETEENDSCAN: - // ƒXƒLƒƒƒ“I—¹”ñ“¯Šúˆ—‚ªI‚í‚Á‚½Û‚É“ü‚Á‚Ä—ˆ‚éƒXƒe[ƒg - OS_Printf("*** WDS_GetApInfoAll\n"); - if( WDS_GetApInfoAll( briefapinfo ) != 0 ) - { - OS_Panic("WDS_GetApInfoAll failed\n"); - } - for( i = 0 ; i < WDS_APINFO_MAX ; i++ ) - { - if( briefapinfo[i].isvalid == TRUE ) - { - OS_TPrintf("rssi: %d\n", briefapinfo[i].rssi); - DumpWDSApInfo( &briefapinfo[i].apinfo ); - } - } - g_appstate = APP_STATE_WDSEND; - break; - case APP_STATE_WDSEND: - // WDSƒ‰ƒCƒuƒ‰ƒŠ‚ðI—¹‚µA–³üƒn[ƒh‚Ì“dŒ¹‚𗎂Ƃ·”ñ“¯Šúˆ—‚ðŠJŽn‚·‚é - OS_Printf("*** WDS_End\n"); - g_appstate = APP_STATE_WDSWAITEND; - wdsBegin = OS_GetTick(); - if( WDS_End( WDS_End_CB ) == 0 ) - { - OS_Printf("WDS_End successed\n"); - } - else { - OS_Panic("WDS_End failed"); - } - break; - case APP_STATE_WDSCOMPLETEEND: - // WDSƒ‰ƒCƒuƒ‰ƒŠ‚̉ð•úˆ—‚ªŠ®—¹‚µ‚½Û‚É“ü‚Á‚Ä—ˆ‚éƒXƒe[ƒg - - OS_TPrintf("WDS completed\n"); - OS_Terminate(); - } - } -} - -// ƒAƒNƒZƒXƒ|ƒCƒ“ƒgî•ñ‚̃fƒoƒbƒO•\ަ—pŠÖ” -static void DumpWDSApInfo( WDSApInfo *apinfo ) -{ - int i; - char buf[256]; - - OS_TPrintf( "================================\n" ); - // SSID - MI_CpuCopy8( apinfo->ssid, buf, WDS_SSID_BUF_SIZE) ; - buf[WDS_SSID_BUF_SIZE] = 0x00; - OS_TPrintf( "SSID: %s\n", buf ); - - // APNUM - MI_CpuCopy8( apinfo->apnum, buf, WDS_APNUM_BUF_SIZE) ; - buf[WDS_APNUM_BUF_SIZE] = 0x00; - OS_TPrintf( "APNUM: %s\n", buf ); - - // CHANNEL - OS_TPrintf( "channel: %d\n", apinfo->channel ); - - // ENCRYPTFLAG - OS_TPrintf( "encryptmethod: %d\n", apinfo->encryptflag); - - // WEPKEY - OS_TPrintf( "WEPKEY: " ); - for( i = 0 ; i < WDS_WEPKEY_BUF_SIZE ; i++ ) - { - OS_TPrintf( "%02x", apinfo->wepkey[i] ); - } - OS_TPrintf( "\n" ); - OS_TPrintf( "================================\n" ); -} - -static void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -// ƒq[ƒv‰Šú‰»ŠÖ” -static void InitializeAllocateSystem(void) -{ - void *tempLo; - OSHeapHandle hh; - - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_Panic("ARM9: Fail to create heap...\n"); - } - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -static void WDS_Initialize_CB(void *arg) -{ -#pragma unused(arg) - OS_TPrintf("WDS_Initialize_CB\n"); - g_appstate = APP_STATE_WDSSCAN; - OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); -} - -static void WDS_StartScan_CB(void *arg) -{ -#pragma unused(arg) - OS_TPrintf("WDS_StartScan_CB\n"); - g_appstate = APP_STATE_WDSCOMPLETESCAN; - OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); -} - -static void WDS_EndScan_CB(void *arg) -{ -#pragma unused(arg) - OS_TPrintf("WDS_EndScan_CB\n"); - g_appstate = APP_STATE_WDSCOMPLETEENDSCAN; - OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); -} - -static void WDS_End_CB(void *arg) -{ -#pragma unused(arg) - OS_TPrintf("WDS_End_CB\n"); - g_appstate = APP_STATE_WDSCOMPLETEEND; - OS_TPrintf("Elapsed time = %llu\n", OS_TicksToMicroSeconds( OS_GetTick() - wdsBegin ) ); -} diff --git a/build/tests/WDSWrapperTest/Makefile b/build/tests/WDSWrapperTest/Makefile deleted file mode 100644 index efc21709..00000000 --- a/build/tests/WDSWrapperTest/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: WDSWrapperTest -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED -TWL_PROC = ARM9 - -SRCS = main.c -TARGET_BIN = main.srl - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LLIBRARIES += WDS$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -#---------------------------------------------------------------------------- -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/WDSWrapperTest/src/main.c b/build/tests/WDSWrapperTest/src/main.c deleted file mode 100644 index c103a5d8..00000000 --- a/build/tests/WDSWrapperTest/src/main.c +++ /dev/null @@ -1,197 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - tests - WDSWrapperTest - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include - -// Vƒuƒ‰ƒ“ƒNŠÖ” -static void VBlankIntr(void) -{ - OS_SetIrqCheckFlag(OS_IE_V_BLANK); -} - -// ƒq[ƒv‰Šú‰»ŠÖ” -static void InitializeAllocateSystem(void) -{ - void *tempLo; - OSHeapHandle hh; - - tempLo = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tempLo); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_Panic("ARM9: Fail to create heap...\n"); - } - hh = OS_SetCurrentHeap(OS_ARENA_MAIN, hh); -} - -// WDSWrapper—pƒAƒƒP[ƒ^ -static void *Alloc_WDSWrapper( u32 size ) -{ - return OS_Alloc( size ); -} - -static void Free_WDSWrapper( void *ptr ) -{ - OS_Free( ptr ); -} - -char *callbackstring[] = { - "WDSWRAPPER_CALLBACK_INITIALIZE", - "WDSWRAPPER_CALLBACK_CLEANUP", - "WDSWRAPPER_CALLBACK_STARTSCAN", - "WDSWRAPPER_CALLBACK_STARTSCAN2", - "WDSWRAPPER_CALLBACK_STOPSCAN", -}; - -// WDSWrapper—pƒR[ƒ‹ƒoƒbƒNŠÖ” -static void Callback_WDSWrapper( void *ptr ) -{ - WDSWrapperCallbackParam *callback = (WDSWrapperCallbackParam *)ptr; - OS_TPrintf("Callback_WDSWrapper: %s %d ", callbackstring[callback->callback], callback->errcode ); - - switch( callback->callback ) { - case WDSWRAPPER_CALLBACK_INITIALIZE: - OS_TPrintf( "‰Šú‰»Š®—¹" ); - break; - case WDSWRAPPER_CALLBACK_STARTSCAN2: - // n•bŠÔŠu‚̃r[ƒRƒ“ŠÔŒ‡ƒXƒLƒƒƒ“ˆê‰ñ•ª‚ªŠ®—¹ - // ƒr[ƒRƒ“‚ðŽó‚¯Žæ‚Á‚Ä‚¢‚È‚¢‚Æ‚¢‚¤Œ‹‰Ê‚ªo‚½ê‡A‹­’²•\ަ‚ðÁ‚µ‚Ü‚· - if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_FAILURE ) - OS_TPrintf( "‹­’²•\ަ‚ðÁ‚µ‚Ü‚·" ); - else { - OS_TPrintf( "‹­’²•\ަ‚ð‚‚¯‚Ü‚·" ); - } - // ŽóM‚µ‚½ƒr[ƒRƒ“î•ñƒf[ƒ^‚ðArgument—̈æ‚É‘‚«ž‚Þ -#ifdef SDK_TWL - OS_TPrintf( "\n" ); - WDS_WrapperSetArgumentParam(); -#endif - break; - case WDSWRAPPER_CALLBACK_STARTSCAN: - // n•bŠÔŠu‚̃r[ƒRƒ“ŠÔŒ‡ƒXƒLƒƒƒ“ˆê‰ñ•ª‚ªŠ®—¹ - // ƒr[ƒRƒ“‚ðŽó‚¯Žæ‚Á‚Ä‚¢‚éꇂ̂݋­’²•\ަ‚ð•t‚¯‚Ü‚· - if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_SUCCESS ) - OS_TPrintf( "‹­’²•\ަ‚ð‚‚¯‚Ü‚·" ); - break; - case WDSWRAPPER_CALLBACK_STOPSCAN: - if( WDS_WrapperCheckValidBeacon() == WDSWRAPPER_ERRCODE_FAILURE ) - OS_TPrintf( "‹­’²•\ަ‚ðÁ‚µ‚Ü‚·" ); - else { - OS_TPrintf( "‹­’²•\ަ‚ð‚‚¯‚Ü‚·" ); - } - break; - case WDSWRAPPER_CALLBACK_CLEANUP: - OS_TPrintf( "‰ð•úŠ®—¹" ); - break; - } - OS_TPrintf( "\n" ); -} - -// ƒXƒŠ[ƒvƒ‚[ƒh‚É“ü‚é‘O‚ɌĂÑo‚³‚ê‚éƒR[ƒ‹ƒoƒbƒNŠÖ” -static void Callback_WDSPreSleep( void *ptr ) -{ -#pragma unused( ptr ) - WDS_WrapperCleanup(); - while( WDS_WrapperCheckThreadRunning() == WDSWRAPPER_ERRCODE_SUCCESS ) - OS_Sleep( 100 ); -} - -// ƒXƒŠ[ƒvƒ‚[ƒh‚©‚畜‹A‚·‚éۂɌĂÑo‚³‚ê‚éƒR[ƒ‹ƒoƒbƒNŠÖ” -static void Callback_WDSPostSleep( void *ptr ) -{ -#pragma unused( ptr ) - WDSWrapperInitializeParam param; - - // WDSWrapper‰Šú‰»‚Æ“®ìŠJŽn - param.threadprio = 20; - param.dmano = 1; - - param.callback = Callback_WDSWrapper; - param.alloc = Alloc_WDSWrapper; - param.free = Free_WDSWrapper; - WDS_WrapperInitialize( param ); -} - -// ƒƒCƒ“ŠÖ” -void NitroMain(void) -{ - WDSWrapperInitializeParam param; - u16 lastpad = 0x0000; - u16 nowpad = 0x0000; - PMSleepCallbackInfo presleepcallbackinfo, postsleepcallbackinfo; - - // ŠeŽí‰Šú‰»ˆ— - OS_Init(); - OS_InitTick(); - OS_InitAlarm(); - - //---- interrupt setting - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - OS_EnableIrqMask(OS_IE_V_BLANK); - OS_EnableIrq(); - GX_VBlankIntr(TRUE); - - //---- power manager callback - PM_SetSleepCallbackInfo( &presleepcallbackinfo, Callback_WDSPreSleep, NULL ); - PM_AppendPreSleepCallback( &presleepcallbackinfo ); - PM_SetSleepCallbackInfo( &postsleepcallbackinfo, Callback_WDSPostSleep, NULL ); - PM_AppendPostSleepCallback( &postsleepcallbackinfo ); - - InitializeAllocateSystem(); - - OS_TPrintf( "WDSWrapper Sample\n\n" ); - OS_TPrintf( "Xƒ{ƒ^ƒ“: WDSƒ‰ƒbƒp[‚ÆWDS‚ð‰Šú‰»‚µAŠÔŒ‡ƒXƒLƒƒƒ“‚ðŠJŽn\n" ); - OS_TPrintf( "Bƒ{ƒ^ƒ“: ƒXƒLƒƒƒ“‚ð’†’f\n" ); - OS_TPrintf( "Aƒ{ƒ^ƒ“: ƒXƒLƒƒƒ“‚ðÄŠJ\n" ); - OS_TPrintf( "Yƒ{ƒ^ƒ“: ƒXƒLƒƒƒ“‚ð’†’f‚µAWDSƒ‰ƒbƒp[‚ÆWDS‚ð‰ð•ú\n" ); - OS_TPrintf( "ƒXƒ^[ƒgƒ{ƒ^ƒ“: ƒq[ƒv‚ðƒ_ƒ“ƒv•\ަ\n" ); - OS_TPrintf( "ƒZƒŒƒNƒgƒ{ƒ^ƒ“: ƒXƒŠ[ƒvƒ‚[ƒhin/out\n" ); - - // ƒL[“ü—͂Œ†’fEÄŠJE‰ð•ú‚ð‚â‚é - while( 1 ) { - lastpad = nowpad; - nowpad = PAD_Read(); - - // Aƒ{ƒ^ƒ“: ƒXƒLƒƒƒ“‚ðÄŠJ - // Bƒ{ƒ^ƒ“: ƒXƒLƒƒƒ“‚ð’†’f - // Xƒ{ƒ^ƒ“: ƒ‰ƒbƒp[‚ð‰Šú‰» - // Yƒ{ƒ^ƒ“: ƒ‰ƒbƒp[‚ð‰ð•ú - // ƒXƒ^[ƒgƒ{ƒ^ƒ“: ƒq[ƒv‚ðƒ_ƒ“ƒv•\ަ - if( ( lastpad ^ nowpad ) & PAD_BUTTON_A && !( nowpad & PAD_BUTTON_A ) ) - WDS_WrapperStartScan(); - if( ( lastpad ^ nowpad ) & PAD_BUTTON_B && !( nowpad & PAD_BUTTON_B ) ) - WDS_WrapperStopScan(); - if( ( lastpad ^ nowpad ) & PAD_BUTTON_X && !( nowpad & PAD_BUTTON_X ) ) { - // WDSWrapper‰Šú‰»‚Æ“®ìŠJŽn - param.threadprio = 20; - param.dmano = 1; - - param.callback = Callback_WDSWrapper; - param.alloc = Alloc_WDSWrapper; - param.free = Free_WDSWrapper; - WDS_WrapperInitialize( param ); - } - if( ( lastpad ^ nowpad ) & PAD_BUTTON_Y && !( nowpad & PAD_BUTTON_Y ) ) - WDS_WrapperCleanup(); - if( ( lastpad ^ nowpad ) & PAD_BUTTON_START && !( nowpad & PAD_BUTTON_START ) ) - OS_DumpHeap( OS_ARENA_MAIN, OS_CURRENT_HEAP_HANDLE ); - if( ( lastpad ^ nowpad ) & PAD_BUTTON_SELECT && !( nowpad & PAD_BUTTON_SELECT ) ) { - PM_GoSleepMode( PM_TRIGGER_KEY, PM_PAD_LOGIC_OR, PAD_BUTTON_SELECT ); - } - OS_Sleep( 100 ); - } -} diff --git a/build/tests/WirelessChecker/@ b/build/tests/WirelessChecker/@ deleted file mode 100644 index bd33deb9..00000000 --- a/build/tests/WirelessChecker/@ +++ /dev/null @@ -1 +0,0 @@ -NINTENDO_RED_CONFIDENTIAL diff --git a/build/tests/WirelessChecker/Makefile b/build/tests/WirelessChecker/Makefile deleted file mode 100644 index b8b4ad89..00000000 --- a/build/tests/WirelessChecker/Makefile +++ /dev/null @@ -1,133 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - tools - Wireless Checker -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_PLATFORM = TWL -override TARGET_CODEGEN = ARM -override TWL_ARCHGEN = LIMITED - -SUBDIRS = libraries components rsf banner - -RES_DIR = ./resources - -SRCDIR = src -INCDIR = include $(ROOT)/build/libraries/wm/common.TWL/inc \ - $(ROOT)/build/libraries/wm/ARM9.TWL/nwm/inc - -ifeq ($(TWL_NANDAPP),TRUE) -ROM_SPEC = rsf/wireless_checker_nand.rsf -else -ROM_SPEC = rsf/wireless_checker.rsf -endif - -BANNER_FILE = ./banner/000A_WLCK.bnr -MAKEROM_FLAGS = -DBANNER_FILE='$(BANNER_FILE)' - -#---------------------------------- -# Font - -FONTCVTR_DIR = $(call empath,$(TWLSYSTEM_ROOT))/tools/fontcvtr -FONT_BMP = $(RES_DIR)/ds_ipl10.bmp - -TARGET_OBJ += $(FONT_O) -EXT_OBJS += $(OBJDIR)/$(FONT_O) - - -FONT_RES_LC = $(RES_DIR)/font.NFTR -FONT_O_LC = font.o - -FONT_RES = $(FONT_RES_LC) -FONT_O = $(FONT_O_LC) - -MACRO_FLAGS += -DTWLNMENU_USE_LC_FONT - - -LDIRT_CLEAN += $(FONT_RES_LC) $(FONT_RES_NO_LC) *.rsf $(REVISION_C) - -#---------------------------------------------------------------------------- - -ifeq ($(TWL_NANDAPP),TRUE) -TARGET_BIN = WirelessChecker_nand.tad -else -TARGET_BIN = WirelessChecker.srl -endif - -ifeq ($(TWL_NANDAPP),TRUE) -LCFILE_AUTOGEN = $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.nand.lcf)) -LDRES_AUTOGEN = $(BINDIR)/$(notdir $(LCFILE_SPEC:.lsf=.autogen.nand.response)) -endif - -SRCS = main.cpp \ - frame.cpp \ - test.cpp \ - test_wm.cpp \ - test_nwm.cpp \ - test_fatal.cpp \ - test_recovery.cpp \ - util/util.cpp \ - util/canvas.cpp \ - util/wprintf.cpp \ - util/memory.cpp - -LINCLUDES = $(ROOT)/build/libraries/wm/ARM9.TWL/nwm/inc \ - $(ROOT)/build/libraries/wm/common.TWL/inc - -LLIBRARY_DIRS = -LLIBRARIES = - -COMPONENT_NAME = racoon -MAKEROM_ARM7_BASE = ./components/racoon_wckr/bin/$(TWL_BUILDTYPE_ARM7)/racoon -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) - -include $(TWLSYSTEM_ROOT)/build/buildtools/commondefs - -LIBRARIES_UNLINK := libnwm$(TWL_LIBSUFFIX).a - -LLIBRARY_DIRS += ./libraries/nwm/ARM9/lib/$(TWL_BUILDTYPE_ARM9) -LLIBRARIES += libnwm.WCKR$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -# convert font - -$(FONT_RES): $(FONT_BMP) $(FONT_FILTER) -ifdef SILENT - echo "make font:" $(notdir $<) -endif - $(FONTCVTR_DIR)/fontcvtrc.exe \ - -i bmp -if $< -io $(FONTCVTR_DIR)/xlor/ds_ipl.xlor -ib 1 \ - -o nitro -of $@ -oe utf16 -oa 0x23 $(FONT_OPTION) - -$(OBJDIR)/$(FONT_O): $(FONT_RES) -ifdef SILENT - echo " b2o font:" $(notdir $<) -endif - $(BIN2OBJ) $< $@ --begin font_NFTR_begin --end font_NFTR_end --align 32 - -INSTALL_TARGETS = $(BINDIR)/$(TARGET_BIN) -INSTALL_DIR = ./ -#$(TWLSDK_INSTALL_ROOT)/bin/$(CODEGEN_PROC)-$(TWL_PLATFORM)/$(TWL_BUILD_DIR) - -do-build: $(TARGETS) -ifneq ($(TWL_NANDAPP),TRUE) - $(REMAKE) TWL_NANDAPP=TRUE SKIP_SUBDIR=TRUE -endif - -include $(TWLSYSTEM_ROOT)/build/buildtools/modulerules -include $(TWLSDK_ROOT)/build/buildtools/twl/modulerules.add-ins.nadk - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/banner/000A_WLCK.bmp b/build/tests/WirelessChecker/banner/000A_WLCK.bmp deleted file mode 100644 index 51252b83..00000000 Binary files a/build/tests/WirelessChecker/banner/000A_WLCK.bmp and /dev/null differ diff --git a/build/tests/WirelessChecker/banner/000A_WLCK.bsf b/build/tests/WirelessChecker/banner/000A_WLCK.bsf deleted file mode 100644 index a8d31c5b..00000000 Binary files a/build/tests/WirelessChecker/banner/000A_WLCK.bsf and /dev/null differ diff --git a/build/tests/WirelessChecker/banner/Makefile b/build/tests/WirelessChecker/banner/Makefile deleted file mode 100644 index f6ef1ca6..00000000 --- a/build/tests/WirelessChecker/banner/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -#! make -f -#--------------------------------------------------------------------------- -# Project: NitroSDK - tools -# File: Makefile -# -# Copyright 2003,2004 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Log: Makefile,v $ -# Revision 1.1 2004/11/01 08:25:59 ooe -# (none) -# -# $NoKeywords: $ -#--------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -BANNER_ICON = 000A_WLCK.bmp -BANNER_SPEC = 000A_WLCK.bsf - -TARGETS = $(BANNER_SPEC:.bsf=.bnr) - -BANNER_ICON_NAME = $(basename $(BANNER_ICON)) - -LDIRT_CLEAN = $(TARGETS) \ - $(BANNER_ICON_NAME).nbfs \ - $(BANNER_ICON_NAME).nbfc \ - $(BANNER_ICON_NAME).nbfp \ - $(TARGETS:.bnr=.srl) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(BANNER_SPEC) $(BANNER_ICON_NAME).nbfc $(BANNER_ICON_NAME).nbfp - $(MAKEBANNER) -N $(BANNER_ICON_NAME) $(BANNER_SPEC) $(TARGETS) - -# diff --git a/build/tests/WirelessChecker/components/Makefile b/build/tests/WirelessChecker/components/Makefile deleted file mode 100644 index 6ca34f03..00000000 --- a/build/tests/WirelessChecker/components/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TWL WLAN - components -# File: Makefile -# -# Copyright 2003 - 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Log: Makefile,v $ -# -# -# $NoKeywords: $ -#---------------------------------------------------------------------------- - - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS_P += racoon_wckr - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/components/racoon_wckr/Makefile b/build/tests/WirelessChecker/components/racoon_wckr/Makefile deleted file mode 100644 index 81bcb35e..00000000 --- a/build/tests/WirelessChecker/components/racoon_wckr/Makefile +++ /dev/null @@ -1,56 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - components - racoon.TWL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -# Definition to override for racoon_wckr -# - -LLIBRARIES += libnwm_sp.WCKR$(TWL_LIBSUFFIX).a -LLIBRARY_DIRS += ../../libraries/nwm/ARM7/lib/$(TWL_BUILDTYPE) - -COMPONENT_DIR += $(ROOT)/build/components/racoon.TWL -COMPONENT_SRC_DIR += $(ROOT)/build/components/mongoose.TWL/src - -override SRCS = $(COMPONENT_SRC_DIR)/main.c $(COMPONENT_SRC_DIR)/initScfg.c - -override TARGET_NAME = racoon - -# Generate my own lsf from original lsf of mongoose -LSF_ORG = $(COMPONENT_DIR)/$(TARGET_NAME).lsf -MAKE_LSF = make_lsf.pl -AUTOGEN_LSF = $(TARGET_NAME)_wckr.lsf - -LDIRT_CLEAN = $(AUTOGEN_LSF) - -override TARGET_NEF = $(TARGET_NAME).tef -override LCFILE_SPEC = $(AUTOGEN_LSF) -override LCFILE_TEMPLATE = $(COMPONENT_DIR)/$(TARGET_NAME).lcf.template -override LDRES_TEMPLATE = $(COMPONENT_DIR)/$(TARGET_NAME).response.template - -override TWL_INSTALL_COMPONENTSDIR= -override INSTALL_TARGETS = -override INSTALL_DIR = - -# - -include $(TWLSDK_ROOT)/build/components/racoon.TWL/Makefile - -$(AUTOGEN_LSF): $(LSF_ORG) $(MAKE_LSF) - @echo " make:" $@ - @perl $(MAKE_LSF) $(TARGET_NAME) - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/components/racoon_wckr/make_lsf.pl b/build/tests/WirelessChecker/components/racoon_wckr/make_lsf.pl deleted file mode 100755 index b3c48384..00000000 --- a/build/tests/WirelessChecker/components/racoon_wckr/make_lsf.pl +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlWLAN - components - mongoose_sdlog.TWL -# File: make_lsf.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $ROOT; - -my $COMPONENT = $ARGV[0]; -print $COMPONENT; -# search TWLSDK_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWLSDK_ROOT/s) { - $ROOT = $ENV{$_}; - } -} - -my $src = sprintf("$ROOT/build/components/%s.TWL/%s.lsf", $COMPONENT, $COMPONENT); -my $dst = sprintf("%s_wckr.lsf", $COMPONENT); - - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/libnwm_sp/ ) - { - $line =~ s/libnwm_sp/libnwm_sp\.WCKR/; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/WirelessChecker/libraries/Makefile b/build/tests/WirelessChecker/libraries/Makefile deleted file mode 100644 index 401e4ee5..00000000 --- a/build/tests/WirelessChecker/libraries/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = nwm - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/libraries/nwm/ARM7/Makefile b/build/tests/WirelessChecker/libraries/nwm/ARM7/Makefile deleted file mode 100644 index 3d20987a..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/ARM7/Makefile +++ /dev/null @@ -1,126 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - WM - libraries -# File: Makefile -# -# Copyright 2003 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -SUBDIRS = - -#---------------------------------------------------------------------------- -override TARGET_PLATFORM = TWL - -# Codegen for sub processer -TWL_PROC = ARM7 - -# build ARM & THUMB libraries -TARGET_CODEGEN ?= ALL - -MACRO_FLAGS = -DNWM_WRACK_FIRMWARE - -NWM_SRCDIR = $(ROOT)/build/libraries/wm/ARM7.TWL/nwm - -#---------------------------------------------------------------------------- - -# INCDIR ’ˆÓ“_F -INCDIR = $(NWM_SRCDIR)/inc $(NWM_SRCDIR)/../../inc \ - $(NWM_SRCDIR)/../../ARM7/inc $(NWM_SRCDIR)/../../common.TWL/inc \ - $(NWM_SRCDIR)/../common/inc \ - $(NWM_SRCDIR)/../../../wpa/include \ - $(TWLWIRELESS_ROOT)/include \ - $(TWLWIRELESS_ROOT)/host/include \ - $(TWLWIRELESS_ROOT)/host/wlan/include \ - $(TWLWIRELESS_ROOT)/host/os/twl/include \ - $(TWLWIRELESS_ROOT)/host/os/twl/library/athioctl/include \ - $(TWLWIRELESS_ROOT)/host/os/nitro/include \ - $(TWLWIRELESS_ROOT)/host/os/nitro/library/athioctl/include \ - $(ROOT)/build/libraries/spi/ARM7/include - -SRCDIR_ = ../../ARM7/src src ../../common.TWL/src - -SRCDIR = $(addprefix $(NWM_SRCDIR)/, $(SRCDIR_)) - -SRCS_ARM7 = nwmsp_system.c \ - nwmsp_cmd.c \ - nwmsp_event.c \ - nwmsp_wlan_handler.c \ - nwmsp_event_handler.c \ - nwmsp_beaconinfo.c - -SRCS_COMMON = nwm_loaddev.c \ - nwm_unloaddev.c \ - nwm_open.c \ - nwm_close.c \ - nwm_startscan.c \ - nwm_connect.c \ - nwm_disconnect.c \ - nwm_sendframe.c \ - nwm_recvframe.c \ - nwm_setwepkey.c \ - nwm_setpowersave.c \ - nwm_wpa.c \ - nwm_qos.c \ - nwm_reset.c - -SRCS = $(addprefix $(NWM_SRCDIR)/src/, $(SRCS_ARM7)) \ - $(addprefix $(NWM_SRCDIR)/../../common.TWL/src/, $(SRCS_COMMON)) \ - ../src/nwm_installfirm_autogen.c - -TARGET_LIB = libnwm_sp.WCKR$(TWL_LIBSUFFIX).a - -#---------------------------------------------------------------------------- - -# DEBUG”Ńrƒ‹ƒh‚Ìê‡ARELEASE”łŃrƒ‹ƒh‚µ‚Ä -# DEBUG”ł̃‰ƒCƒuƒ‰ƒŠ‚ð‘•‚¢‚Ü‚·B - -ifdef TARGET_DEBUG -TWL_BUILD_TYPE = RELEASE -else -ifdef TWL_DEBUG -TWL_BUILD_TYPE = RELEASE -CCFLAGS += -DNWM_DEBUG -else -ifdef NITRO_DEBUG -TWL_BUILD_TYPE = RELEASE -endif -endif -endif - -#---------------------------------------------------------------------------- -# Default ‚Å‚Í LIMITED ‚̃‰ƒCƒuƒ‰ƒŠ‚ð쬂µ‚Ü‚· -TWL_ARCHGEN ?= LIMITED - -#---------------------------------------------------------------------------- - -# V–³ü—p‚̃fƒoƒbƒOƒtƒ‰ƒO‚È‚Ç - -ifdef NWM_DEBUG -CCFLAGS += -DNWM_DEBUG -endif - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#INSTALL_TARGETS = $(TARGETS) -#INSTALL_DIR = $(SYSMENU_INSTALL_LIBDIR) -#GDIRT_INSTALLED = $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS))) - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - - -#===== End of Makefile ===== - diff --git a/build/tests/WirelessChecker/libraries/nwm/ARM9/Makefile b/build/tests/WirelessChecker/libraries/nwm/ARM9/Makefile deleted file mode 100644 index e8ecb1e6..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/ARM9/Makefile +++ /dev/null @@ -1,95 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - WM - libraries -# File: Makefile -# -# Copyright 2003 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -#SUBDIRS = wm_lib - -override TARGET_PLATFORM = TWL - -# Codegen for sub processer -TWL_PROC = ARM9 -TARGET_CODEGEN ?= ALL - -MACRO_FLAGS = -DNWM_WRACK_FIRMWARE - -NWM_SRCDIR = $(ROOT)/build/libraries/wm/ARM9.TWL/nwm - -# HYBRID / LIMITED —¼•û‚̃‰ƒCƒuƒ‰ƒŠ‚ð쬂µ‚Ü‚· -TWL_ARCHGEN ?= ALL - -# LoadDeviceEx ‚Å“]‘—‚·‚éƒtƒ@[ƒ€ƒEƒFƒA‚̃fƒBƒŒƒNƒgƒŠ -TWLWIRELESS_FW_DIR = $(ROOT)/add-ins/TwlWireless/$(TWLWIRELESS_PACKAGE)/binfile - -SRCDIR = ./src ../../common.TWL/src -INCDIR = $(NWM_SRCDIR)/inc $(NWM_SRCDIR)/../../inc $(NWM_SRCDIR)/../../ARM9/inc \ - $(NWM_SRCDIR)/../../common.TWL/inc $(NWM_SRCDIR)/../common/inc - -SRCS_ARM9 = nwm_init.c \ - nwm_system.c \ - nwm_end.c \ - nwm_cmd.c \ - nwm_passphrase.c - -SRCS_COMMON = nwm_loaddev.c \ - nwm_unloaddev.c \ - nwm_open.c \ - nwm_close.c \ - nwm_startscan.c \ - nwm_connect.c \ - nwm_disconnect.c \ - nwm_setwepkey.c \ - nwm_setpowersave.c \ - nwm_sendframe.c \ - nwm_recvframe.c \ - nwm_wpa.c \ - nwm_qos.c \ - nwm_reset.c - -SRCS = $(addprefix $(NWM_SRCDIR)/src/, $(SRCS_ARM9)) \ - $(addprefix $(NWM_SRCDIR)/../../common.TWL/src/, $(SRCS_COMMON)) \ - ../src/nwm_installfirm_autogen.c - -EXT_OBJS = $(OBJDIR)/nwm_firm.o - -TARGET_LIB = libnwm.WCKR$(TWL_LIBSUFFIX).a - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#INSTALL_TARGETS = $(TARGETS) - -#INSTALL_DIR = $(TWL_INSTALL_LIBDIR) - -GDIRT_INSTALLED = $(addprefix $(INSTALL_DIR)/,$(notdir $(INSTALL_TARGETS))) - -#---------------------------------------------------------------------------- -# V–³ü—p‚̃fƒoƒbƒOƒtƒ‰ƒO‚È‚Ç - -ifdef NWM_DEBUG -CCFLAGS += -DNWM_DEBUG -endif - -CCFLAGS += -DENABLE_RXACK - -#---------------------------------------------------------------------------- - -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -$(OBJDIR)/nwm_firm.o: $(TWLWIRELESS_FW_DIR)/nwm_firm.bin - $(BIN2OBJ) $(call empath, $<) $@ - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/libraries/nwm/Makefile b/build/tests/WirelessChecker/libraries/nwm/Makefile deleted file mode 100644 index a7c14231..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - wm -# File: Makefile -# -# Copyright 2003 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - - -TARGET_PLATFORM := TWL - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -SUBDIRS = scripts - -ifneq ($(filter TWL,$(TARGET_PLATFORM_LIST)),) -SUBDIRS_P += ARM9 -ifeq ($(TWLSDK_PRIVATE),TRUE) -SUBDIRS_P += ARM7 -endif -endif - -#---------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/libraries/nwm/scripts/Makefile b/build/tests/WirelessChecker/libraries/nwm/scripts/Makefile deleted file mode 100644 index 2582bc5b..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/scripts/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - libraries - wm -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -override TARGET_CODEGEN := ARM -override TWL_ARCHGEN := LIMITED - -NWM_ORG = $(ROOT)/build/libraries/wm/common.TWL/src/nwm_installfirm.c -MAKE_NWM = make_nwm_fw_wrack.pl -AUTOGEN_NWM = src/nwm_installfirm_autogen.c -LDIRT_CLEAN += $(AUTOGEN_NWM) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -TARGETS = $(AUTOGEN_NWM) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_NWM): $(NWM_ORG) $(MAKE_NWM) - @echo " make:" $@ - @perl $(MAKE_NWM) - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/libraries/nwm/scripts/make_nwm_fw_wrack.pl b/build/tests/WirelessChecker/libraries/nwm/scripts/make_nwm_fw_wrack.pl deleted file mode 100755 index 50d2ebf4..00000000 --- a/build/tests/WirelessChecker/libraries/nwm/scripts/make_nwm_fw_wrack.pl +++ /dev/null @@ -1,108 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: make_nwm_fw_wrack.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $rn = "\x0D\x0A"; - -my $SDKROOT; - -# search TWLSDK_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWLSDK_ROOT/s) { - $SDKROOT = $ENV{$_}; - } -} - -my $src = "$SDKROOT/build/libraries/wm/common.TWL/src/nwm_installfirm.c"; -my $dst_dir = "../src"; -my $dst_file = "nwm_installfirm_autogen.c"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - -mkdir $dst_dir unless -e $dst_dir; - -my $in_instfirm_count = 0; - -open(OUT, ">$dst_dir/$dst_file") or die "cant open $dst_dir/$dst_file\n"; -foreach my $line ( @lines ) -{ - if ( $line =~ m/^NWMRetCode NWMi_InstallFirmware\(NWMCallbackFunc callback, void\* addr, u32 size, BOOL isColdstart\)/ ) - { - print OUT <<__WRACK_FIRMWARE_API__; - -\#ifdef NWM_WRACK_FIRMWARE -NWMRetCode NWMi_WrackFirmware(NWMCallbackFunc callback); - -NWMRetCode NWMi_WrackFirmware(NWMCallbackFunc callback) -{ - NWMArm9Buf *sys = NWMi_GetSystemWork(); - NWMRetCode result; - - // ƒR[ƒ‹ƒoƒbƒNŠÖ”‚ð“o˜^ - NWMi_SetCallbackTable(NWM_APIID_INSTALL_FIRMWARE, callback); - - // ARM7‚ÉFIFO‚Å’Ê’m - result = NWMi_SendCommand(NWM_APIID_INSTALL_FIRMWARE, 5, - (u32)(sys->NWM7), (u32)(sys->status), (u32)(sys->fifo7to9), NULL, FALSE); - - return NWM_RETCODE_OPERATING; -} -\#endif // NWM_WRACK_FIRMWARE - -__WRACK_FIRMWARE_API__ - } - - if ( $line =~ m/MCU_SetWifiLedBlinkingStatus\( FALSE \);/ ) - { - print OUT "#ifndef NWM_WRACK_FIRMWARE", $rn; - } - - if( $line =~ m/^installfirm_err:/ ) - { - print OUT <<__WRACK_FIRMWARE__; - -\#else // NWM_WRACK_FIRMWARE -\#pragma unused (err) - // set WiFi_RST to disable WiFi - NWMSPi_SetWiFiReset(FALSE); - OS_Sleep(1); // wait 1msec - // set WiFi_RST to enable WiFi - NWMSPi_SetWiFiReset(TRUE); - { - NWMCallback *cb; - - NWMSP_ClearAPIActiveFlag(NWM_APIID_INSTALL_FIRMWARE); - // ³íI—¹ - cb = (NWMCallback *)NWMSP_GetBuffer4Callback2Nwm9(); - cb->apiid = NWM_APIID_INSTALL_FIRMWARE; - cb->retcode = NWM_RETCODE_FATAL_ERROR; - NWMSP_ReturnResult2Nwm9((void *)cb); - return; - } -\#endif // NWM_WRACK_FIRMWARE -__WRACK_FIRMWARE__ - } - print OUT $line; - - -} -close(OUT); - diff --git a/build/tests/WirelessChecker/readme.txt b/build/tests/WirelessChecker/readme.txt deleted file mode 100644 index 980f4e29..00000000 --- a/build/tests/WirelessChecker/readme.txt +++ /dev/null @@ -1,62 +0,0 @@ -* WirelessChecker - –{‘̃fƒoƒbƒO—p –³ü‹@”\ƒ`ƒFƒbƒNƒvƒƒOƒ‰ƒ€ - -- Šm”FŽè‡ - -1. –{‘Ì–³üƒtƒ‰ƒO‚ÌŠm”F - - ã‰æ–Ê‚Ìu–³üON/OFFÝ’èv‚¨‚æ‚Ñu–³ü‹­§OFF–{‘Ìv‚ÌÝ’è‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B - –³ü‚ªŽg—p‚Å‚«‚éó‘Ô‚ÍAˆÈ‰º‚Ìó‘Ô‚Å‚·B - - –³üON/OFFÝ’è[ON ] - –³ü‹­§OFF–{‘Ì[No ] - - -2. DS–³ü‚̉Šú‰»ƒeƒXƒg - - DS–³ü‚̉Šú‰»¨ƒXƒLƒƒƒ“¨I—¹‚ðƒeƒXƒg‚µ‚Ü‚·B - ƒAƒNƒeƒBƒuƒXƒLƒƒƒ“(“d”g‚ðo‚·ƒXƒLƒƒƒ“)‚ðs‚¢‚Ü‚·B - LED‚Ì“_–Å‚ðŠm”F‚·‚邱‚ƂŖ³ü‚ª³í‚É“®ì‚µ‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B - ‚Ü‚½A–³üON/OFFÝ’è‚ðOFF‚É‚·‚邱‚Æ‚ÅA‰Šú‰»‚ªŽ¸”s‚·‚邱‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B - -3. TWL–³ü‚̉Šú‰»ƒeƒXƒg - - TWL–³ü‚̉Šú‰»¨ƒXƒLƒƒƒ“¨I—¹‚ðƒeƒXƒg‚µ‚Ü‚·B - ƒAƒNƒeƒBƒuƒXƒLƒƒƒ“(“d”g‚ðo‚·ƒXƒLƒƒƒ“)‚ðs‚¢‚Ü‚·B - LED‚Ì“_–Å‚ðŠm”F‚·‚邱‚ƂŖ³ü‚ª³í‚É“®ì‚µ‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B - ‚Ü‚½A–³üON/OFFÝ’è‚ðOFF‚É‚·‚邱‚Æ‚ÅA‰Šú‰»‚ªŽ¸”s‚·‚邱‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B - -4. FATALƒGƒ‰[ƒŠƒJƒoƒŠƒeƒXƒg - - TWL–³üƒ‚ƒWƒ…[ƒ‹‚̃tƒ@[ƒ€ƒEƒFƒA‰ó‚ê‚ðƒGƒ~ƒ…ƒŒ[ƒg‚µA‚»‚ê‚É‚æ‚éFATALƒGƒ‰[”­¶ŒãA - ƒAƒvƒŠƒWƒƒƒ“ƒv‚É‚æ‚éƒn[ƒhƒEƒFƒAƒŠƒZƒbƒg‚ÅAƒtƒ@[ƒ€ƒEƒFƒA‚ªƒ[ƒh‚µ’¼‚³‚ê‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ü‚·B - Ä‹N“®Œã‚ÉŽ©“®“I‚ÉTWL–³ü‚̉Šú‰»ƒ`ƒFƒbƒN‚ðs‚¢‚Ü‚·B‰Šú‰»ƒ`ƒFƒbƒN‚ª¬Œ÷‚µALED‚ª“_–Å‚µ‚Ä‚¢‚邱‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B - -iˆÈ‰º‚Ì€–ڂ̓IƒvƒVƒ‡ƒ“‚Å‚·Bj - -5. FATALƒGƒ‰[ƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“ - €–Ú4.‚ÌFATALƒGƒ‰[‚ðŽè“®‚Å‹N‚±‚µ‚Ü‚·B‚±‚Ì‘€ì‚ðs‚Á‚½ŒãAuTWL–³ü‚̉Šú‰»ƒeƒXƒgv‚ªŽ¸”s‚·‚邱‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B - - -- TODO - -ENOA‚Æ‚©‚̃fƒoƒbƒO‚ɂނ¯‚ĉpŒê•\ަ‚à‘ΉžiHj - -- •ÏX—š—ð - -- 080801 - NANDƒAƒvƒŠ‚ɑΉžB - ƒoƒi[’ljÁB - ƒQ[ƒ€ƒR[ƒh’ljÁB - -- 080731 - FINALROM‚Ńrƒ‹ƒhB - ƒeƒXƒg—p‚̃vƒŠƒ“ƒgƒfƒoƒbƒO‚ªo‚Ä‚¢‚½‚Ì‚ðC³B - ƒRƒ}ƒ“ƒhƒƒO‚ð“ú–{Œê‰»B - TwlSDK 5.0 RC1‚Ńrƒ‹ƒhB - -- 080730 - ‰º‰æ–ʂɊȈՃwƒ‹ƒv‚ð•\ަB - -- 080725 - ʼn‚ÌƒŠƒŠ[ƒX - diff --git a/build/tests/WirelessChecker/resources/ds_ipl10.bmp b/build/tests/WirelessChecker/resources/ds_ipl10.bmp deleted file mode 100644 index 6fc8eedc..00000000 Binary files a/build/tests/WirelessChecker/resources/ds_ipl10.bmp and /dev/null differ diff --git a/build/tests/WirelessChecker/rsf/Makefile b/build/tests/WirelessChecker/rsf/Makefile deleted file mode 100644 index 93cda094..00000000 --- a/build/tests/WirelessChecker/rsf/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: NitroWiFi - demos - ps-ping -# File: Makefile -# -# Copyright 2005 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Log: Makefile,v $ -# -# $NoKeywords: $ -#---------------------------------------------------------------------------- - -# Generate my own lsf from original lsf of mongoose -RSF_ORG = $(ROOT)/include/twl/specfiles/ROM-TS.rsf -MAKE_RSF = make_rsf.pl - -AUTOGEN_RSF = wireless_checker.rsf - -LDIRT_CLEAN = $(AUTOGEN_RSF) - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -do-build: $(AUTOGEN_RSF) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_RSF): $(RSF_ORG) $(MAKE_RSF) - @echo " make:" $@ - perl $(MAKE_RSF) $(AUTOGEN_RSF) - -#===== End of Makefile ===== diff --git a/build/tests/WirelessChecker/rsf/make_rsf.pl b/build/tests/WirelessChecker/rsf/make_rsf.pl deleted file mode 100755 index 49691859..00000000 --- a/build/tests/WirelessChecker/rsf/make_rsf.pl +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlWLAN - demos - wifi -# File: make_rsf.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $ROOT; - -# search TWLSDK_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWLSDK_ROOT/s) { - $ROOT = $ENV{$_}; - } -} - -my $src1 = "$ROOT/include/twl/specfiles/ROM-TS.rsf"; -my $dst1 = "wireless_checker.rsf"; - - -my $rn = "\x0D\x0A"; - -open(F, $src1) or die "cant open $src1\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst1") or die "cant open $dst1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/TitleName\t+/ ) - { - $line =~ s/\t\#?TitleName.*\".*\"/\tTitleName\t\t\"WLAN CHECKER\"/; - } - - if( $line =~ m/^\tBannerFile/ ) - { - print OUT "\tBannerFile\t\t\$(BANNER_FILE)", $rn; - print OUT $rn, "\t#", $rn; - print OUT "\t# Permit LandingNormalJump: for TWL \"ApplicationJump\" function [TRUE/FALSE]", $rn; - print OUT "\t#", $rn; - print OUT "\tPermitLandingNormalJump\tTRUE", $rn; - next; - } - - print OUT $line; -} -close(OUT); - - -my $src2 = "$ROOT/include/twl/specfiles/ROM-TS_nand.rsf"; -my $dst2 = "wireless_checker_nand.rsf"; - -open(F, $src2) or die "cant open $src2\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst2") or die "cant open $dst2\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^\tBannerFile/ ) - { - print OUT "\tBannerFile\t\t\$(BANNER_FILE)", $rn; - next; - } - - if( $line =~ m/InitialCode\t+/ ) - { - $line =~ s/\t\#?InitialCode.*[a-zA-Z0-9]{4}/\tInitialCode\t\t\t\t000A/; - } - - if( $line =~ m/TitleName\t+/ ) - { - $line =~ s/\t\#?TitleName.*\".*\"/\tTitleName\t\t\"WLAN CHECKER\"/; - } - - if( $line =~ m/PermitLandingNormalJump/ ) - { - $line =~ s/\t\#?.*(TRUE|FALSE)/\tPermitLandingNormalJump\tTRUE/; - } - - print OUT $line; -} \ No newline at end of file diff --git a/build/tests/WirelessChecker/src/frame.cpp b/build/tests/WirelessChecker/src/frame.cpp deleted file mode 100644 index c8582dc0..00000000 --- a/build/tests/WirelessChecker/src/frame.cpp +++ /dev/null @@ -1,148 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: main.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "util/util.h" -#include "util/canvas.h" -#include "frame.h" - -namespace -{ - -} - -CFrame::CFrame() : m_itemIndex(ITEM_TEST_WM) -{ - OS_InitMessageQueue(&m_EntrMsgq, m_EntrMsg, sizeof(m_EntrMsg)/sizeof(m_EntrMsg[0])); - -} - -CFrame::CFrame(u8 item) -{ - m_itemIndex = item; - OS_InitMessageQueue(&m_EntrMsgq, m_EntrMsg, sizeof(m_EntrMsg)/sizeof(m_EntrMsg[0])); -} - -CFrame::~CFrame() -{ - -} - -void -CFrame::InitDisp() -{ - util::CCanvas* pcm = util::GetMain1Canvas(); - util::CCanvas* pcs = util::GetSub1Canvas(); - - pcm->Clear(util::COLOR_BLACK); - pcs->Clear(util::COLOR_BLACK); - pcm->Printf(16*5, 0, util::COLOR_WHITE, L"–³ü‹@”\Šm”Fƒc[ƒ‹"); - pcm->Printf(96, 16*1, util::COLOR_WHITE, L"BUILD TIME: %s %s", L""__DATE__, L""__TIME__); - - DrawBorder(pcm, 4, 16*2 + 4, 256 - 8, 192 - (16*2 + 4), util::COLOR_WHITE); - pcm->Printf(16*1, 16*3, util::COLOR_WHITE, L"–³üON/OFFÝ’è[ %s ]", TRUE == OS_IsAvailableWireless() ? L"ON ":L"OFF"); - pcm->Printf(16*8, 16*3, util::COLOR_WHITE, L"–³ü‹­§OFF–{‘Ì[ %s ]", TRUE == OS_IsForceDisableWireless() ? L"Yes":L"No "); - - pcm->Printf(16*2, 16*5, util::COLOR_WHITE, L"DS–³ü‚̉Šú‰»ƒeƒXƒg"); - pcm->Printf(16*2, 16*6, util::COLOR_WHITE, L"TWL–³ü‚̉Šú‰»ƒeƒXƒg"); - pcm->Printf(16*2, 16*7, util::COLOR_WHITE, L"FATALƒGƒ‰[ƒGƒ~ƒ…ƒŒ[ƒVƒ‡ƒ“"); - pcm->Printf(16*2, 16*8, util::COLOR_WHITE, L"FATALƒGƒ‰[ƒŠƒJƒoƒŠƒeƒXƒg"); - - DrawBorder(pcs, 4, 16*9 + 4, 256 - 8, 192 - (16*9 + 4), util::COLOR_WHITE); -} - -void -CFrame::CursorDisp(int xpos, int ystart, util::PaletteColor color) -{ - util::CCanvas* pcm = util::GetMain1Canvas(); - pcm->Clear(xpos, ystart, 16, 16*ITEM_NUM, util::COLOR_BLACK); - pcm->Print(xpos, ystart + 16*GetItemIndex(), color, L"¡"); -} - -void -CFrame::HelpDisp(util::PaletteColor color) -{ - util::CCanvas* pcs = util::GetSub1Canvas(); - pcs->Clear(8, 16*9 + 8, 256 - 16, 16*2, util::COLOR_BLACK); - - wchar_t *pHelpString1, *pHelpString2; - - switch (GetItemIndex()) - { - case ITEM_TEST_WM: - pHelpString1 = L"DS–³ü‚̉Šú‰»ƒeƒXƒg‚ðs‚¢‚Ü‚·B"; - pHelpString2 = L"LED‚Ì“_–Å‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B"; - break; - case ITEM_TEST_NWM: - pHelpString1 = L"TWL–³ü‚̉Šú‰»ƒeƒXƒg‚ðs‚¢‚Ü‚·B"; - pHelpString2 = L"LED‚Ì“_–Å‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B"; - break; - case ITEM_TEST_FATAL: - pHelpString1 = L"FATALƒGƒ‰[‚ð”­¶‚³‚¹ATWL–³ü‚ðŽg‚¦‚È‚­‚µ‚Ü‚·"; - pHelpString2 = L"HWƒŠƒZƒbƒg‚ʼnñ•œ‚µ‚Ü‚·B"; - break; - case ITEM_TEST_RECOVERY: - pHelpString1 = L"FATALƒGƒ‰[‚ÌƒŠƒJƒoƒŠ[‚ðƒeƒXƒg‚µ‚Ü‚·B"; - pHelpString2 = L"Ä‹N“®Œã‚ÉTWL–³ü‰Šú‰»‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B"; - break; - } - pcs->Print(8, 16*9 + 8, color, pHelpString1); - pcs->Print(8, 16*10 + 8, color, pHelpString2); -} - -BOOL -CFrame::AutoEnter() -{ - return OS_SendMessage(&m_EntrMsgq, (OSMessage)TRUE, OS_MESSAGE_NOBLOCK); -} - -void -CFrame::ProcessButton() -{ - if (util::IsPadTrigger(PAD_KEY_UP)) - { - decRound(); - } else - if (util::IsPadTrigger(PAD_KEY_DOWN)) - { - incRound(); - } - - if (util::IsPadTrigger(PAD_BUTTON_A)) - { - if (FALSE == OS_SendMessage(&m_EntrMsgq, (OSMessage)TRUE, OS_MESSAGE_NOBLOCK)) - { - // already entered - } - } -} - -BOOL -CFrame::IsEnter() -{ - OSMessage msg; - return OS_ReceiveMessage(&m_EntrMsgq, &msg, OS_MESSAGE_NOBLOCK); - -} - -void -CFrame::DrawBorder(util::CCanvas* pCanvas, int px, int py, int pw, int ph, util::PaletteColor color) -{ - pCanvas->Clear(px, py, pw, 1, color); - pCanvas->Clear(px, py + ph - 1, pw, 1, color); - pCanvas->Clear(px, py + 1, 1, ph - 2, color); - pCanvas->Clear(px + pw - 1, py + 1, 1, ph - 2, color); -} diff --git a/build/tests/WirelessChecker/src/frame.h b/build/tests/WirelessChecker/src/frame.h deleted file mode 100644 index 2fec1121..00000000 --- a/build/tests/WirelessChecker/src/frame.h +++ /dev/null @@ -1,72 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: frame.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef WIRELESS_CHECHER_FRAME_H_ -#define WIRELESS_CHECHER_FRAME_H_ - -#include -#include "util/util.h" -#include - -class CFrame -{ -public: - enum { - ITEM_TEST_WM, - ITEM_TEST_NWM, - ITEM_TEST_FATAL, - ITEM_TEST_RECOVERY, - ITEM_NUM - }; -private: - u8 m_itemIndex; - OSMessageQueue m_EntrMsgq; - OSMessage m_EntrMsg[1]; - BOOL m_isEnter; - - static const u8 m_itemNum = ITEM_NUM; - void incRound() - { - if (m_itemNum) - { - m_itemIndex = (u8)((m_itemIndex + 1)%m_itemNum); - } - } - void decRound() - { - if (m_itemNum) - { - m_itemIndex = (u8)((m_itemNum + m_itemIndex - 1)%m_itemNum); - } - } -public: - CFrame(); - CFrame(u8 item); - virtual ~CFrame(); - void InitDisp(); - void CursorDisp(int xpos, int ystart, util::PaletteColor color); - void HelpDisp(util::PaletteColor color); - virtual void ProcessButton(); - u8 GetItemIndex() - { - return m_itemIndex; - } - BOOL IsEnter(); - BOOL AutoEnter(); - void DrawBorder(util::CCanvas* pCanvas, int px, int py, int pw, int ph, util::PaletteColor color); -}; - -#endif // WIRELESS_CHECHER_TEST_NWM_H_ diff --git a/build/tests/WirelessChecker/src/main.cpp b/build/tests/WirelessChecker/src/main.cpp deleted file mode 100644 index 0069788b..00000000 --- a/build/tests/WirelessChecker/src/main.cpp +++ /dev/null @@ -1,135 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: main.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include "util/util.h" -#include "util/canvas.h" -#include "frame.h" -#include "test_wm.h" -#include "test_nwm.h" -#include "test_fatal.h" -#include "test_recovery.h" -#include - -namespace -{ - -} -// end of anonymous namespace - - -void -TwlStartUp(void) -{ - -} - -void -TwlMain(void) -{ - BOOL isFatalChecking = FALSE; - util::Init(); - - OSDeliverArgInfo argInfo; - if (TRUE == OS_IsValidDeliverArg()) - { - OS_InitDeliverArgInfo(&argInfo, 0); - OS_DecodeDeliverArg(); - if( (OS_GetDeliverArgc() > 0) && ( STD_CompareNString( (const char *)OS_GetDeliverArgv(1), "fatal", 3 ) == 0 ) ) - { - isFatalChecking = TRUE; - } - } - - // display on - util::WaitVBlankIntr(); - util::dispOn(); - - CFrame menu(isFatalChecking == TRUE ? CFrame::ITEM_TEST_RECOVERY:CFrame::ITEM_TEST_WM); - if (isFatalChecking == TRUE) - { - menu.AutoEnter(); - } - CTestWm wm; - CTestNwm nwm; - CTestFatal fatal; - CTestRecovery rcv; - menu.InitDisp(); - - for (;;) - { - util::UpdateGamePad(); - menu.ProcessButton(); - menu.CursorDisp(16*1, 16*5, util::COLOR_LIMEGREEN); - menu.HelpDisp(util::COLOR_WHITE); - - if (menu.IsEnter()) - { - BOOL result; - u8 itemidx = menu.GetItemIndex(); - util::CCanvas* pcm = util::GetMain1Canvas(); - - switch (itemidx) - { - case CFrame::ITEM_TEST_WM: - pcm->Clear(16*12, 16*5, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*5, util::COLOR_YELLOW, L"TESTING"); - util::WaitVBlankIntr(); - util::UpdateDisplay(); - result = wm.WirelessTest(); - pcm->Clear(16*12, 16*5, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*5, result == TRUE ? util::COLOR_TURQUOISE:util::COLOR_RED, result == TRUE ? L"SUCCESS":L"FAILURE"); - break; - case CFrame::ITEM_TEST_NWM: - pcm->Clear(16*12, 16*6, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*6, util::COLOR_YELLOW, L"TESTING"); - util::WaitVBlankIntr(); - util::UpdateDisplay(); - result = nwm.WirelessTest(); - pcm->Clear(16*12, 16*6, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*6, result == TRUE ? util::COLOR_TURQUOISE:util::COLOR_RED, result == TRUE ? L"SUCCESS":L"FAILURE"); - break; - case CFrame::ITEM_TEST_FATAL: - pcm->Clear(16*12, 16*7, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*7, util::COLOR_YELLOW, L"TESTING"); - result = fatal.WrackTest(); - pcm->Clear(16*12, 16*7, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*7, result == TRUE ? util::COLOR_TURQUOISE:util::COLOR_RED, result == TRUE ? L"SUCCESS":L"FAILURE"); - break; - case CFrame::ITEM_TEST_RECOVERY: - pcm->Clear(16*12, 16*8, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*8, util::COLOR_YELLOW, L"TESTING"); - if (isFatalChecking == FALSE) - { - result = rcv.RecoveryTest(); - } else { - result = rcv.RecoveryTest2(); - isFatalChecking = FALSE; - } - pcm->Clear(16*12, 16*8, 16*3, 16, util::COLOR_BLACK); - pcm->Print(16*12, 16*8, result == TRUE ? util::COLOR_TURQUOISE:util::COLOR_RED, result == TRUE ? L"SUCCESS":L"FAILURE"); - break; - } - } - - util::WaitVBlankIntr(); - util::UpdateDisplay(); - } - -} diff --git a/build/tests/WirelessChecker/src/test.cpp b/build/tests/WirelessChecker/src/test.cpp deleted file mode 100644 index 4dd480af..00000000 --- a/build/tests/WirelessChecker/src/test.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: main.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "util/canvas.h" -#include "util/util.h" -#include "util/wprintf.h" -#include -#include -#include -#include -//#include -#include -#include "test.h" - -CTest::CTest() : m_state(TEST_STATE_NONE) -{ - m_pc = util::GetSub1Canvas(); -} - -CTest::~CTest() -{ - -} - -BOOL -CTest::Init(void) -{ - return TRUE; -} - -BOOL -CTest::Enable(void) -{ - return TRUE; -} - -BOOL -CTest::ScanTest(void) -{ - return TRUE; -} - -BOOL -CTest::Disable(void) -{ - return TRUE; -} - -BOOL -CTest::End(void) -{ - return TRUE; -} - -u8 -CTest::GetState(void) -{ - return m_state; -} - -void CTest::LogClear(util::CCanvas* pc) -{ - pc->Clear(0, 0, 256, 16*9, util::COLOR_BLACK); - m_line = 0; - util::WaitVBlankIntr(); - util::UpdateDisplay(); -} - -void -CTest::LogPrintf(util::CCanvas* pc, const NNSG2dChar* text, ...) -{ - std::auto_ptr pLocalBuffer(new wchar_t[LOCAL_BUFFER_LEN]); - va_list args; - - va_start(args, text); - util::VSNWPrintf(pLocalBuffer.get(), LOCAL_BUFFER_LEN, text, args); - va_end(args); - pc->Print(16*1, 16*m_line++, util::COLOR_WHITE, pLocalBuffer.get()); - util::WaitVBlankIntr(); - util::UpdateDisplay(); -} diff --git a/build/tests/WirelessChecker/src/test.h b/build/tests/WirelessChecker/src/test.h deleted file mode 100644 index 21c4d985..00000000 --- a/build/tests/WirelessChecker/src/test.h +++ /dev/null @@ -1,54 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef WIRELESS_CHECHER_TEST_H_ -#define WIRELESS_CHECHER_TEST_H_ - -#include -#include "util/util.h" -#include "util/canvas.h" -#include -#include -#include - -class CTest - -{ -private: - u8 m_line; - static const int LOCAL_BUFFER_LEN = 1024; -public: - enum { - TEST_STATE_NONE, - TEST_STATE_INITIALIZED, - TEST_STATE_ENABLED, - TEST_STATE_NUM - }; - u8 m_state; - util::CCanvas *m_pc; - CTest(); - virtual ~CTest(); - virtual BOOL Init(void); - virtual BOOL Enable(void); - virtual BOOL ScanTest(void); - virtual BOOL Disable(void); - virtual BOOL End(void); - u8 GetState(void); - void LogClear(util::CCanvas* pc); - void LogPrintf(util::CCanvas* pc, const NNSG2dChar* text, ...); -}; - -#endif // WIRELESS_CHECHER_TEST_H_ diff --git a/build/tests/WirelessChecker/src/test_fatal.cpp b/build/tests/WirelessChecker/src/test_fatal.cpp deleted file mode 100644 index a3684aca..00000000 --- a/build/tests/WirelessChecker/src/test_fatal.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: test_fatal.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "util/util.h" -#include "util/canvas.h" -#include "test_fatal.h" -#include "nwm_arm9_private.h" -#pragma exceptions on - -extern "C" { -extern NWMRetCode NWMi_WrackFirmware(NWMCallbackFunc callback); -} - -namespace -{ - OSMessageQueue m_AsyncMsgq; - OSMessage m_AsyncMsg[1]; - - void m_WrackFirmCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_FATAL_ERROR ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_InitMessage(void) - { - OS_InitMessageQueue(&m_AsyncMsgq, m_AsyncMsg, sizeof(m_AsyncMsg)/sizeof(m_AsyncMsg[0])); - } - - BOOL m_WaitCallback(void) - { - OSMessage msg; - (void)OS_ReceiveMessage(&m_AsyncMsgq, &msg, OS_MESSAGE_BLOCK); - return (BOOL)msg; - } -} - - - - - -CTestFatal::CTestFatal() -{ - m_InitMessage(); -} - -CTestFatal::~CTestFatal() -{ - -} - -BOOL -CTestFatal::Wrack(void) -{ - try - { - if (m_state < TEST_STATE_INITIALIZED) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - - if (NWM_RETCODE_OPERATING != NWMi_WrackFirmware(m_WrackFirmCallback)) - { - throw L"WrackFirmware ޏ”s.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WrackFirmware ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"WrackFirmware ¬Œ÷.\n"); - - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - return TRUE; -} - -BOOL -CTestFatal::WrackTest(void) -{ - try - { - if (FALSE == Init()) - { - throw L"Init() ޏ”s.\n"; - } - - if (FALSE == Wrack()) - { - End(); - throw L"Wrack() ޏ”s.\n"; - } - - if (FALSE == End()) - { - throw L"End() ޏ”s.\n"; - } - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - LogPrintf(m_pc, L"ƒeƒXƒg‚ªŠ®—¹‚µ‚Ü‚µ‚½.\n"); - - return TRUE; -} diff --git a/build/tests/WirelessChecker/src/test_fatal.h b/build/tests/WirelessChecker/src/test_fatal.h deleted file mode 100644 index 128d582d..00000000 --- a/build/tests/WirelessChecker/src/test_fatal.h +++ /dev/null @@ -1,37 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test_fatal.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef WIRELESS_CHECHER_TEST_FATAL_H_ -#define WIRELESS_CHECHER_TEST_FATAL_H_ - -#include -#include "test.h" -#include "test_nwm.h" -#include "util/canvas.h" - -class CTestFatal - : public CTestNwm -{ -private: -public: - CTestFatal(); - virtual ~CTestFatal(); - BOOL Wrack(void); - BOOL WrackTest(void); -}; - - -#endif // WIRELESS_CHECHER_TEST_FATAL_H_ diff --git a/build/tests/WirelessChecker/src/test_nwm.cpp b/build/tests/WirelessChecker/src/test_nwm.cpp deleted file mode 100644 index 127afab7..00000000 --- a/build/tests/WirelessChecker/src/test_nwm.cpp +++ /dev/null @@ -1,355 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: test_nwm.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "util/util.h" -#include "util/canvas.h" -#include "test_nwm.h" -#pragma exceptions on - -namespace test_nwm -{ - OSMessageQueue m_AsyncMsgq; - OSMessage m_AsyncMsg[1]; - void m_InitMessage(void); - - void m_LoadDeviceCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - // TODO: get FW ver and RegDomain? - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - } - - void m_OpenCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_UnloadDeviceCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - } - - void m_CloseCallback(void *arg) - { - NWMCallback *cb = (NWMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_ScanCallback(void *arg) - { - NWMStartScanCallback *cb = (NWMStartScanCallback*)arg; - - OS_TPrintf("Number of BSS: %d\n", cb->bssDescCount); - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->retcode == NWM_RETCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_InitMessage(void) - { - OS_InitMessageQueue(&m_AsyncMsgq, m_AsyncMsg, sizeof(m_AsyncMsg)/sizeof(m_AsyncMsg[0])); - } - - BOOL m_WaitCallback(void) - { - OSMessage msg; - (void)OS_ReceiveMessage(&m_AsyncMsgq, &msg, OS_MESSAGE_BLOCK); - return (BOOL)msg; - } -} - - - - - -CTestNwm::CTestNwm() : m_pNwmBuffer(0), m_pScanBuffer(0) -{ - test_nwm::m_InitMessage(); -} - -CTestNwm::~CTestNwm() -{ - -} - - -BOOL -CTestNwm::Init(void) -{ - LogClear(m_pc); - - try - { - if (m_state != TEST_STATE_NONE) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - if (m_pNwmBuffer) - { - delete [] m_pNwmBuffer; - m_pNwmBuffer = 0; - throw L"NWMƒoƒbƒtƒ@‚ª•s³‚Å‚·.\n"; - } - - m_pNwmBuffer = new u8 [NWM_SYSTEM_BUF_SIZE + 0x20]; - - - if (NWM_RETCODE_SUCCESS != NWM_Init((void*)MATH_ROUNDUP((u32)m_pNwmBuffer, 32), NWM_SYSTEM_BUF_SIZE, m_DmaNo)) - { - throw L"NWM_Init ޏ”s.\n"; - } - - LogPrintf(m_pc, L"NWM_Init ¬Œ÷.\n"); - } - - catch (const wchar_t* string) - { - delete [] m_pNwmBuffer; - m_pNwmBuffer = 0; - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_INITIALIZED; - - return TRUE; -} - -BOOL -CTestNwm::Enable(void) -{ - try { - if (m_state != TEST_STATE_INITIALIZED) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - - if (NWM_RETCODE_OPERATING != NWM_LoadDevice(test_nwm::m_LoadDeviceCallback)) - { - throw L"NWM_LoadDevice ޏ”s.\n"; - } - - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_LoadDevice ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"NWM_LoadDevice ¬Œ÷.\n"); - - if (NWM_RETCODE_OPERATING != NWM_Open(test_nwm::m_OpenCallback)) - { - throw L"NWM_Open ޏ”s.\n"; - } - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_Open ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"NWM_Open ¬Œ÷.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - m_state = TEST_STATE_ENABLED; - return TRUE; -} - -BOOL -CTestNwm::ScanTest(void) -{ - try - { - - if (m_state != TEST_STATE_ENABLED) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - - if (m_pScanBuffer) - { - throw L"Scanƒoƒbƒtƒ@‚ª•s³‚Å‚·.\n"; - } - - m_pScanBuffer = new u8 [NWM_SIZE_SCANBUF_MAX + 0x20]; - - NWMScanParam param; - - MI_CpuClear8(m_pScanBuffer, NWM_SIZE_SCANBUF_MAX + 0x20); - DC_StoreRange(m_pScanBuffer, NWM_SIZE_SCANBUF_MAX + 0x20); - param.scanBuf = (NWMBssDesc*)MATH_ROUNDUP((u32)m_pScanBuffer, 32); - param.scanBufSize = NWM_SIZE_SCANBUF_MAX; - param.channelList = (u16)(NWM_GetAllowedChannel() >> 1); - param.channelDwellTime = NWM_GetDispersionScanPeriod(NWM_SCANTYPE_ACTIVE); - param.scanType = NWM_SCANTYPE_ACTIVE; - param.ssidLength = 0; - MI_CpuFill8(param.ssid, 0xFF, sizeof(param.ssid)); - - if (NWM_RETCODE_OPERATING != NWM_StartScan(test_nwm::m_ScanCallback, ¶m)) - { - throw L"NWM_StartScan ޏ”s.\n"; - } - - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_StartScan ”ñ“¯Šúˆ—ޏ”s.\n"; - } - - LogPrintf(m_pc, L"NWM_StartScan ¬Œ÷.\n"); - - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - delete [] m_pScanBuffer; - m_pScanBuffer = 0; - - return TRUE; -} - -BOOL -CTestNwm::Disable(void) -{ - try { - if (m_state != TEST_STATE_ENABLED) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - - if (NWM_RETCODE_OPERATING != NWM_Close(test_nwm::m_CloseCallback)) - { - throw L"NWM_Close ޏ”s.\n"; - } - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_Close ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"NWM_Close ¬Œ÷.\n"); - - if (NWM_RETCODE_OPERATING != NWM_UnloadDevice(test_nwm::m_UnloadDeviceCallback)) - { - throw L"NWM_UnloadDevice ޏ”s.\n"; - } - if (test_nwm::m_WaitCallback() == FALSE) - { - throw L"NWM_UnloadDevice ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"NWM_UnloadDevice ¬Œ÷.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - m_state = TEST_STATE_INITIALIZED; - return TRUE; - -} - -BOOL -CTestNwm::End(void) -{ - try - { - if (m_state != TEST_STATE_INITIALIZED) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - if (NWM_RETCODE_SUCCESS != NWM_End()) - { - throw L"NWM_End ޏ”s.\n"; - } - - LogPrintf(m_pc, L"NWM_End ¬Œ÷.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_NONE; - delete [] m_pNwmBuffer; - m_pNwmBuffer = 0; - - return TRUE; -} - -BOOL -CTestNwm::WirelessTest(void) -{ - try - { - if (FALSE == Init()) - { - throw L"Init() ޏ”s.\n"; - } - if (FALSE == Enable()) - { - End(); - throw L"Enable() ޏ”s.\n"; - } - if (FALSE == ScanTest()) - { - Disable(); - End(); - throw L"ScanTest() ޏ”s.\n"; - } - if (FALSE == Disable()) - { - throw L"Disable() ޏ”s.\n"; - } - if (FALSE == End()) - { - throw L"End() ޏ”s.\n"; - } - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - LogPrintf(m_pc, L"ƒeƒXƒg‚ªŠ®—¹‚µ‚Ü‚µ‚½.\n"); - - return TRUE; -} diff --git a/build/tests/WirelessChecker/src/test_nwm.h b/build/tests/WirelessChecker/src/test_nwm.h deleted file mode 100644 index cbc725f6..00000000 --- a/build/tests/WirelessChecker/src/test_nwm.h +++ /dev/null @@ -1,52 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test_nwm.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef WIRELESS_CHECHER_TEST_NWM_H_ -#define WIRELESS_CHECHER_TEST_NWM_H_ - -#include -#include "test.h" - -namespace test_nwm -{ - void m_LoadDeviceCallback(void *arg); - void m_OpenCallback(void *arg); - void m_UnloadDeviceCallback(void *arg); - void m_CloseCallback(void *arg); - void m_ScanCallback(void *arg); - BOOL m_WaitCallback(void); -} - -class CTestNwm - : public CTest -{ -private: - static const u8 m_DmaNo = 3; - u8 *m_pNwmBuffer; - u8 *m_pScanBuffer; -public: - CTestNwm(); - virtual ~CTestNwm(); - BOOL Init(void); - BOOL Enable(void); - BOOL ScanTest(void); - BOOL Disable(void); - BOOL End(void); - BOOL WirelessTest(void); -}; - - -#endif // WIRELESS_CHECHER_TEST_NWM_H_ diff --git a/build/tests/WirelessChecker/src/test_recovery.cpp b/build/tests/WirelessChecker/src/test_recovery.cpp deleted file mode 100644 index ab8ae1f0..00000000 --- a/build/tests/WirelessChecker/src/test_recovery.cpp +++ /dev/null @@ -1,97 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: test_recovery.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "util/util.h" -#include "util/canvas.h" -#include "test_recovery.h" -#include "nwm_arm9_private.h" -#pragma exceptions on - - -CTestRecovery::CTestRecovery() -{ -} - -CTestRecovery::~CTestRecovery() -{ - -} - - -BOOL -CTestRecovery::RecoveryTest(void) -{ - try - { - if (FALSE == Init()) - { - throw L"Init() ޏ”s.\n"; - } - - if (FALSE == Enable()) - { - End(); - throw L"Enable() ޏ”s.\n"; - } - - if (FALSE == Wrack()) - { - Disable(); - End(); - throw L"Wrack() ޏ”s.\n"; - } - - LogPrintf(m_pc, L"FATALƒGƒ‰[‚ð‘Ò‚Á‚Ä‚¢‚Ü‚·.\n"); - - if (TRUE == test_nwm::m_WaitCallback()) - { - Disable(); - End(); - throw L"FATALƒGƒ‰[‚ª‹N‚±‚è‚Ü‚¹‚ñ‚Å‚µ‚½.\n"; - } - - LogPrintf(m_pc, L"FATALƒGƒ‰[‚ª”­¶‚µ‚Ü‚µ‚½.\n"); - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_INITIALIZED; - End(); - LogPrintf(m_pc, L"3•bŒã‚ÉHWƒŠƒZƒbƒg‚ðs‚¢‚Ü‚·.\n"); - OS_Sleep(3000); - - OSDeliverArgInfo argInfo; - OS_InitDeliverArgInfo(&argInfo, 0); - OSi_SetDeliverArgState( OS_DELIVER_ARG_BUF_ACCESSIBLE | OS_DELIVER_ARG_BUF_WRITABLE ); - OS_SetStringToDeliverArg( "fatal" ); - OS_EncodeDeliverArg(); - OS_DoApplicationJump( - *(const OSTitleId*)(HW_TWL_ROM_HEADER_BUF + 0x230), - OS_APP_JUMP_NORMAL); - - return TRUE; -} - -BOOL -CTestRecovery::RecoveryTest2(void) -{ - return WirelessTest(); -} - diff --git a/build/tests/WirelessChecker/src/test_recovery.h b/build/tests/WirelessChecker/src/test_recovery.h deleted file mode 100644 index c346bc17..00000000 --- a/build/tests/WirelessChecker/src/test_recovery.h +++ /dev/null @@ -1,37 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test_recovery.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef WIRELESS_CHECHER_TEST_RECOVERY_H_ -#define WIRELESS_CHECHER_TEST_RECOVERY_H_ - -#include -#include "test.h" -#include "test_fatal.h" -#include "util/canvas.h" - -class CTestRecovery - : public CTestFatal -{ -private: -public: - CTestRecovery(); - ~CTestRecovery(); - BOOL RecoveryTest(void); - BOOL RecoveryTest2(void); -}; - - -#endif // WIRELESS_CHECHER_TEST_RECOVERY_H_ diff --git a/build/tests/WirelessChecker/src/test_wm.cpp b/build/tests/WirelessChecker/src/test_wm.cpp deleted file mode 100644 index f2b2a151..00000000 --- a/build/tests/WirelessChecker/src/test_wm.cpp +++ /dev/null @@ -1,376 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: test_nwm.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "util/util.h" -#include "util/canvas.h" -#include "test_wm.h" -#pragma exceptions on - -namespace -{ - OSMessageQueue m_AsyncMsgq; - OSMessage m_AsyncMsg[1]; - - void m_EnableCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - // TODO: get FW ver and RegDomain? - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - } - - void m_PowerOnCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_DisableCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - } - - void m_PowerOffCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_ScanCallback(void *arg) - { - WMStartScanExCallback *cb = (WMStartScanExCallback*)arg; - - OS_TPrintf("Number of BSS: %d\n", cb->bssDescCount); - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_EndScanCallback(void *arg) - { - WMCallback *cb = (WMCallback*)arg; - - if (FALSE == OS_SendMessage(&m_AsyncMsgq, (OSMessage)(cb->errcode == WM_ERRCODE_SUCCESS ? TRUE:FALSE), OS_MESSAGE_NOBLOCK)) - { - } - - } - - void m_InitMessage(void) - { - OS_InitMessageQueue(&m_AsyncMsgq, m_AsyncMsg, sizeof(m_AsyncMsg)/sizeof(m_AsyncMsg[0])); - } - - BOOL m_WaitCallback(void) - { - OSMessage msg; - (void)OS_ReceiveMessage(&m_AsyncMsgq, &msg, OS_MESSAGE_BLOCK); - return (BOOL)msg; - } -} - - - - - -CTestWm::CTestWm() : m_pWmBuffer(0), m_pScanBuffer(0) -{ - m_InitMessage(); - m_pc = util::GetSub1Canvas(); -} - -CTestWm::~CTestWm() -{ - -} - - -BOOL -CTestWm::Init(void) -{ - LogClear(m_pc); - - try - { - if (m_state != TEST_STATE_NONE) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - if (m_pWmBuffer) - { - delete [] m_pWmBuffer; - m_pWmBuffer = 0; - throw L"WM—pƒoƒbƒtƒ@‚ª•s³‚Å‚·.\n"; - } - - m_pWmBuffer = new u8 [WM_SYSTEM_BUF_SIZE + 0x20]; - - - if (WM_ERRCODE_SUCCESS != WM_Init((void*)MATH_ROUNDUP((u32)m_pWmBuffer, 32), m_DmaNo)) - { - throw L"WM_Init ޏ”s.\n"; - } - - LogPrintf(m_pc, L"WM_Init ¬Œ÷.\n"); - - } - - catch (const wchar_t* string) - { - delete [] m_pWmBuffer; - m_pWmBuffer = 0; - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_INITIALIZED; - - return TRUE; -} - -BOOL -CTestWm::Enable(void) -{ - try { - - if (m_state != TEST_STATE_INITIALIZED) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - - if (WM_ERRCODE_OPERATING != WM_Enable(m_EnableCallback)) - { - throw L"WM_Enable ޏ”s.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WM_Enable ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"WM_Enable ¬Œ÷.\n"); - if (WM_ERRCODE_OPERATING != WM_PowerOn(m_PowerOnCallback)) - { - throw L"WM_PowerOn ޏ”s.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WM_PowerOn ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"WM_PowerOn ¬Œ÷.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - m_state = TEST_STATE_ENABLED; - return TRUE; -} - -BOOL -CTestWm::ScanTest(void) -{ - try - { - - if (m_state != TEST_STATE_ENABLED) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - - if (m_pScanBuffer) - { - throw L"Scanƒoƒbƒtƒ@‚ª•s³‚Å‚·.\n"; - } - - m_pScanBuffer = new u8 [WM_SIZE_SCAN_EX_BUF + 0x20]; - - WMScanExParam param; - - MI_CpuClear8(m_pScanBuffer, WM_SIZE_SCAN_EX_BUF + 0x20); - DC_StoreRange(m_pScanBuffer, WM_SIZE_SCAN_EX_BUF + 0x20); - param.scanBuf = (WMBssDesc*)MATH_ROUNDUP((u32)m_pScanBuffer, 32); - param.scanBufSize = WM_SIZE_SCAN_EX_BUF; - param.channelList = (u16)WM_GetAllowedChannel(); - param.maxChannelTime = WM_GetDispersionScanPeriod(); - param.scanType = WM_SCANTYPE_ACTIVE; - param.ssidLength = 0; - MI_CpuFill8(param.ssid, 0xFF, sizeof(param.ssid)); - param.ssidMatchLength = 0; - - if (WM_ERRCODE_OPERATING != WM_StartScanEx(m_ScanCallback, ¶m)) - { - throw L"WM_StartScanEx ޏ”s.\n"; - } - - if (m_WaitCallback() == FALSE) - { - throw L"WM_StartScanEx ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"WM_StartScanEx ¬Œ÷.\n"); - - if (WM_ERRCODE_OPERATING != WM_EndScan(m_EndScanCallback)) - { - throw L"WM_EndScan ޏ”s.\n"; - } - - if (m_WaitCallback() == FALSE) - { - throw L"WM_EndScan ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"WM_EndScan ¬Œ÷.\n"); - - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - delete [] m_pScanBuffer; - m_pScanBuffer = 0; - - return TRUE; -} - -BOOL -CTestWm::Disable(void) -{ - try { - if (m_state != TEST_STATE_ENABLED) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·.\n"; - } - - if (WM_ERRCODE_OPERATING != WM_PowerOff(m_PowerOffCallback)) - { - throw L"WM_PowerOff ޏ”s.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WM_PowerOff ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"WM_PowerOff ¬Œ÷.\n"); - - if (WM_ERRCODE_OPERATING != WM_Disable(m_DisableCallback)) - { - throw L"WM_Disable ޏ”s.\n"; - } - if (m_WaitCallback() == FALSE) - { - throw L"WM_Disable ”ñ“¯Šúˆ—ޏ”s.\n"; - } - LogPrintf(m_pc, L"WM_Disable ¬Œ÷.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_INITIALIZED; - return TRUE; - -} - -BOOL -CTestWm::End(void) -{ - try - { - if (m_state != TEST_STATE_INITIALIZED) - { - throw L"ƒXƒe[ƒg‚ª•s³‚Å‚·\n"; - } - if (WM_ERRCODE_SUCCESS != WM_Finish()) - { - throw L"WM_Finish ޏ”s.\n"; - } - LogPrintf(m_pc, L"WM_Finish ¬Œ÷.\n"); - } - - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - m_state = TEST_STATE_NONE; - delete [] m_pWmBuffer; - m_pWmBuffer = 0; - - return TRUE; -} - -BOOL -CTestWm::WirelessTest(void) -{ - try - { - if (FALSE == Init()) - { - throw L"Init() ޏ”s.\n"; - } - if (FALSE == Enable()) - { - End(); - throw L"Enable() ޏ”s.\n"; - } - if (FALSE == ScanTest()) - { - Disable(); - End(); - throw L"ScanTest() ޏ”s.\n"; - } - if (FALSE == Disable()) - { - throw L"Disable() ޏ”s.\n"; - } - if (FALSE == End()) - { - throw L"End() ޏ”s.\n"; - } - } - catch (const wchar_t* string) - { - LogPrintf(m_pc, L"%s", string); - return FALSE; - } - - LogPrintf(m_pc, L"ƒeƒXƒg‚ªŠ®—¹‚µ‚Ü‚µ‚½.\n"); - - return TRUE; -} diff --git a/build/tests/WirelessChecker/src/test_wm.h b/build/tests/WirelessChecker/src/test_wm.h deleted file mode 100644 index 958a4919..00000000 --- a/build/tests/WirelessChecker/src/test_wm.h +++ /dev/null @@ -1,43 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: test_wm.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef WIRELESS_CHECHER_TEST_WM_H_ -#define WIRELESS_CHECHER_TEST_WM_H_ - -#include -#include "test.h" -#include "util/canvas.h" - -class CTestWm - : public CTest -{ -private: - static const u8 m_DmaNo = 3; - u8 *m_pWmBuffer; - u8 *m_pScanBuffer; -public: - CTestWm(); - virtual ~CTestWm(); - BOOL Init(void); - BOOL Enable(void); - BOOL ScanTest(void); - BOOL Disable(void); - BOOL End(void); - BOOL WirelessTest(void); -}; - - -#endif // WIRELESS_CHECHER_TEST_WM_H_ diff --git a/build/tests/WirelessChecker/src/util/canvas.cpp b/build/tests/WirelessChecker/src/util/canvas.cpp deleted file mode 100644 index 9e9156ef..00000000 --- a/build/tests/WirelessChecker/src/util/canvas.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: Canvas.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "util/canvas.h" -#include "util/util.h" -#include "util/wprintf.h" -#include -#include -#include -#include -//#include -#include - -namespace util -{ - -CCanvas::CCanvas() -: m_pFont(NULL) -{ -} - -CCanvas::~CCanvas() -{ -} - -void -CCanvas::Init(NNS_GFD_DST_TYPE type, u32 offset, void* pScrBase, const NNSG2dFont* pFont) -{ - m_transType = type; - m_transOffset = offset; - m_pFont = pFont; - - NNS_G2dCharCanvasInitForBG( - &m_cc, - m_offscreen, - CANVAS_WIDTH, - CANVAS_HEIGHT, - NNS_G2D_CHARA_COLORMODE_16 ); - - NNS_G2dTextCanvasInit( - &m_txn, - &m_cc, - m_pFont, - TEXT_HSPACE, - TEXT_VSPACE ); - - NNS_G2dMapScrToCharText( - pScrBase, - CANVAS_WIDTH, - CANVAS_HEIGHT, - CANVAS_LEFT, - CANVAS_TOP, - NNS_G2D_TEXT_BG_WIDTH_256, - CANVAS_CHARACTER_OFFSET, - DEFAULT_COLOR_PALETTE ); -} - -void -CCanvas::Clear(PaletteColor c) -{ - NNS_G2dCharCanvasClear(&m_cc, c); - RegisterTransferTask(); -} - -void -CCanvas::Clear(int x, int y, int w, int h, PaletteColor c) -{ - const int px = MATH_CLAMP(x, 0, HW_LCD_WIDTH); - const int py = MATH_CLAMP(y, 0, HW_LCD_HEIGHT); - const int pw = MATH_CLAMP(x + w, px, HW_LCD_WIDTH) - px; - const int ph = MATH_CLAMP(y + h, py, HW_LCD_HEIGHT) - py; - - if( pw > 0 && ph > 0 ) - { - NNS_G2dCharCanvasClearArea(&m_cc, c, px, py, pw, ph); - RegisterTransferTask(); - } -} - -void -CCanvas::Print(int x, int y, PaletteColor c, const NNSG2dChar* text) -{ - NNS_G2dTextCanvasDrawText( - &m_txn, - x, - y, - c, - DRAWTEXT_FLAG_DEFAULT, - text ); - - RegisterTransferTask(); -} - -void -CCanvas::Printf(int x, int y, PaletteColor c, const NNSG2dChar* text, ...) -{ - std::auto_ptr pLocalBuffer(new wchar_t[LOCAL_BUFFER_LEN]); - va_list args; - - va_start(args, text); - VSNWPrintf(pLocalBuffer.get(), LOCAL_BUFFER_LEN, text, args); - va_end(args); - - Print(x, y, c, pLocalBuffer.get()); -} - - -void -CCanvas::RegisterTransferTask() -{ - if( ! m_bTransferRegsitered ) - { - NNS_GfdRegisterNewVramTransferTask( - m_transType, - m_transOffset, - m_offscreen, - sizeof(m_offscreen) ); - - m_bTransferRegsitered = true; - } -} - -void -CCanvas::ResetTransferTask() -{ - m_bTransferRegsitered = false; -} - - -std::wstring -CCanvas::WrapText(std::wstring text, int width) -{ - int textWidth = 0; - - for( u32 i = 0; i < text.length(); ++i ) - { - const int charWidth = NNS_G2dFontGetCharWidth(m_pFont, text[i]); - - if( text[i] == L'\n' ) - { - textWidth = 0; - } - else if( (textWidth > 0) && ((textWidth + charWidth) > width) ) - { - text.insert(i - 1, 1, L'\n'); - textWidth = 0; - } - else - { - textWidth += charWidth + TEXT_HSPACE; - } - } - - return text; -} - - - -} -// end of namespace tlib diff --git a/build/tests/WirelessChecker/src/util/canvas.h b/build/tests/WirelessChecker/src/util/canvas.h deleted file mode 100644 index 0e6c7781..00000000 --- a/build/tests/WirelessChecker/src/util/canvas.h +++ /dev/null @@ -1,78 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: Canvas.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef TLIB_CONTROL_CANVAS_H_ -#define TLIB_CONTROL_CANVAS_H_ - -#define NNS_G2D_UNICODE -#include -#include -#include -#include -#include "util.h" - -namespace util -{ - -class CCanvas -{ -private: - static const int CANVAS_WIDTH = 32; - static const int CANVAS_HEIGHT = 24; - static const int CANVAS_LEFT = 0; - static const int CANVAS_TOP = 0; - static const int TEXT_HSPACE = 1; - static const int TEXT_VSPACE = 1; - static const int CANVAS_CHARACTER_OFFSET = 1; - - static const int LOCAL_BUFFER_LEN = 1024; - - static const u32 DRAWTEXT_FLAG_DEFAULT = ( NNS_G2D_VERTICALORIGIN_TOP - | NNS_G2D_HORIZONTALORIGIN_LEFT - | NNS_G2D_HORIZONTALALIGN_LEFT ); - -private: - NNSG2dCharCanvas m_cc; - NNSG2dTextCanvas m_txn; - GXCharFmt16 m_offscreen[32 * 24]; - const NNSG2dFont* m_pFont; - NNS_GFD_DST_TYPE m_transType; - u32 m_transOffset; - bool m_bTransferRegsitered; - -public: - CCanvas(); - ~CCanvas(); - -public: - void Init(NNS_GFD_DST_TYPE type, u32 offset, void* pScrBase, const NNSG2dFont* pFont); - void Clear (PaletteColor c); - void Clear (int x, int y, int w, int h, PaletteColor c); - void Print (int x, int y, PaletteColor c, const NNSG2dChar* text); - void Printf(int x, int y, PaletteColor c, const NNSG2dChar* text, ...); - std::wstring WrapText(std::wstring text, int width); - - void ResetTransferTask(); - -protected: - void RegisterTransferTask(); -}; - -} -// end of namespace tlib - - -#endif // TLIB_CONTROL_CANVAS_H_ diff --git a/build/tests/WirelessChecker/src/util/memory.cpp b/build/tests/WirelessChecker/src/util/memory.cpp deleted file mode 100644 index 5e0d1d57..00000000 --- a/build/tests/WirelessChecker/src/util/memory.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: Memory.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "util/memory.h" - - -namespace util -{ - - -namespace -{ - NNSFndHeapHandle shHeap; - NNSFndAllocator sAllocator; - OSMutex sLock; -} - - -void -InitMemory() -{ - u32 arenaLow = MATH_ROUNDUP ((u32)OS_GetMainArenaLo(), 16); - u32 arenaHigh = MATH_ROUNDDOWN((u32)OS_GetMainArenaHi(), 16); - u32 heapSize = arenaHigh - arenaLow; - void* heapMemory = OS_AllocFromMainArenaLo(heapSize, 16); - - shHeap = NNS_FndCreateExpHeap(heapMemory, heapSize); - SDK_ASSERT( shHeap != NNS_FND_HEAP_INVALID_HANDLE ); - - NNS_FndInitAllocatorForExpHeap(&sAllocator, shHeap, 4); - - OS_InitMutex(&sLock); -} - -NNSFndHeapHandle -GetHeapHandle() -{ - return shHeap; -} - -NNSFndAllocator* -GetAllocator() -{ - return &sAllocator; -} - -void* -Alloc(size_t size, int align) -{ - OS_LockMutex(&sLock); - SDK_ASSERT(NNS_FndCheckExpHeap(shHeap, NNS_FND_HEAP_ERROR_PRINT)); - void* p = NNS_FndAllocFromExpHeapEx(shHeap, size, align); - OS_UnlockMutex(&sLock); - - return p; -} - -void -Free(void* ptr) -{ - OS_LockMutex(&sLock); - SDK_ASSERT(NNS_FndCheckExpHeap(shHeap, NNS_FND_HEAP_ERROR_PRINT)); - SDK_ASSERT(NNS_FndCheckForMBlockExpHeap(ptr, shHeap, NNS_FND_HEAP_ERROR_PRINT)); - NNS_FndFreeToExpHeap(shHeap, ptr); - OS_UnlockMutex(&sLock); -} - - -} -// end of namespace util - - - - -//------------ global namespace ------------------------------------ - -void* -operator new(size_t size) -{ - // operator new[] ‚Å 32 byte ƒAƒ‰ƒCƒƒ“ƒg‚ð•ÛØ‚Å‚«‚È‚¢‚̂Š- // operator new ‚Å‚à 32 byte ƒAƒ‰ƒCƒƒ“ƒg‚Ís‚í‚È‚¢B - return util::Alloc(size, 4); -} - -void* -operator new[](size_t size) -{ - // operator new[] ‚Å‚Í 32 byteƒAƒ‰ƒCƒƒ“ƒg‚ð•ÛØ‚Å‚«‚È‚¢B - return util::Alloc(size, 4); -} - -void -operator delete(void* ptr) -{ - if( ptr != NULL ) - { - util::Free(ptr); - } -} - -void -operator delete[](void* ptr) -{ - if( ptr != NULL ) - { - util::Free(ptr); - } -} diff --git a/build/tests/WirelessChecker/src/util/memory.h b/build/tests/WirelessChecker/src/util/memory.h deleted file mode 100644 index c0e1ed39..00000000 --- a/build/tests/WirelessChecker/src/util/memory.h +++ /dev/null @@ -1,38 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: Memory.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef TLIB_SYSTEM_MEMORY_H_ -#define TLIB_SYSTEM_MEMORY_H_ - -#include -#include - -namespace util -{ - -void InitMemory(); - -NNSFndAllocator* GetAllocator(); -NNSFndHeapHandle GetHeapHandle(); -void* Alloc(size_t size, int align=32); -void Free(void* ptr); - -} -// end of namespace tlib - - - -#endif // TLIB_SYSTEM_MEMORY_H_ diff --git a/build/tests/WirelessChecker/src/util/util.cpp b/build/tests/WirelessChecker/src/util/util.cpp deleted file mode 100644 index 5828b7e8..00000000 --- a/build/tests/WirelessChecker/src/util/util.cpp +++ /dev/null @@ -1,276 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checker - File: util.cpp - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "util/util.h" -#include "util/canvas.h" -#include "util/memory.h" -#include -#include - -extern u8 font_NFTR_begin[]; -extern u8 font_NFTR_end[]; - -namespace util -{ - GamePad System_GamePadState; - int System_BaseWidth; - int System_LineHeight; - - namespace - { - const int REPEAT_START_FRAME = 15; - const int REPEAT_INTERVAL = 30; - const u32 TASK_ARRAY_NUM = 4; - const int CANVAS_CHARACTER_OFFSET = 1; - - GXRgb COLOR_PALETTE[18] = - { - GX_RGB(26, 26, 26), - GX_RGB(31, 31, 31), - GX_RGB( 0, 0, 0), - - GX_RGB(31, 0, 3), - GX_RGB(30, 28, 0), - GX_RGB(21, 31, 0), - GX_RGB( 6, 23, 30), - GX_RGB( 0, 11, 30), - GX_RGB(25, 23, 1), - GX_RGB(22, 22, 22), - GX_RGB(16, 16, 16), - - GX_RGB(29, 31, 31) - }; - NNSG2dFont sFont; - CCanvas sCanvasMain1; - CCanvas sCanvasMain3; - CCanvas sCanvasSub1; - CCanvas sCanvasSub3; - - NNSGfdVramTransferTask sTaskArray[TASK_ARRAY_NUM]; - - void ClearVram( void ) - { - //--------------------------------------------------------------------------- - // All VRAM banks to LCDC - //--------------------------------------------------------------------------- - GX_SetBankForLCDC(GX_VRAM_LCDC_ALL); - - //--------------------------------------------------------------------------- - // Clear all LCDC space - //--------------------------------------------------------------------------- - MI_CpuClearFast((void *)HW_LCDC_VRAM, HW_LCDC_VRAM_SIZE); - - //--------------------------------------------------------------------------- - // Disable the banks on LCDC - //--------------------------------------------------------------------------- - (void)GX_DisableBankForLCDC(); - - MI_CpuFillFast((void *)HW_OAM, 192, HW_OAM_SIZE); // clear OAM - MI_CpuClearFast((void *)HW_PLTT, HW_PLTT_SIZE); // clear the standard palette - - MI_CpuFillFast((void*)HW_DB_OAM, 192, HW_DB_OAM_SIZE); // clear OAM - MI_CpuClearFast((void *)HW_DB_PLTT, HW_DB_PLTT_SIZE); // clear the standard palette - } - - void InitFont(void* pNFTR) - { - NNS_G2dFontInitUTF16(&sFont, pNFTR); - - System_BaseWidth = NNS_G2dFontGetCellWidth(&sFont) / 2; - System_LineHeight = NNS_G2dFontGetLineFeed(&sFont); - } - - void VBlankIntr(void) - { - OS_SetIrqCheckFlag( OS_IE_V_BLANK ); - } - - - } // namespace - - void WaitVBlankIntr(void) - { - SVC_WaitVBlankIntr(); - } - - void dispOn(void) - { - GX_DispOn(); - GXS_DispOn(); - } - - CCanvas* GetMain1Canvas() { return &sCanvasMain1; } - CCanvas* GetMain3Canvas() { return &sCanvasMain3; } - CCanvas* GetSub1Canvas() { return &sCanvasSub1; } - CCanvas* GetSub3Canvas() { return &sCanvasSub3; } - - void UpdateGamePad(void) - { - u16 status = PAD_Read(); - - System_GamePadState.repeatTrigger = false; - - if( status != 0 ) - { - if( System_GamePadState.button == 0 ) - { - System_GamePadState.beginPress = 0; - } - else - { - System_GamePadState.beginPress++; - const int lapse = System_GamePadState.beginPress - REPEAT_START_FRAME; - - if( lapse >= 0 ) - { - if( (lapse % REPEAT_INTERVAL) == 0 ) - { - System_GamePadState.repeatTrigger = true; - } - } - } - } - - System_GamePadState.trigger = (u16)(status & (status ^ System_GamePadState.button)); - System_GamePadState.release = (u16)(System_GamePadState.button & (status ^ System_GamePadState.button)); - System_GamePadState.button = status; - } - - void UpdateDisplay(void) - { - sCanvasMain1.ResetTransferTask(); - sCanvasMain3.ResetTransferTask(); - sCanvasSub1 .ResetTransferTask(); - sCanvasSub3 .ResetTransferTask(); - NNS_GfdDoVramTransfer(); - } - - void Init() - { - OS_Init(); - FX_Init(); - GX_Init(); - - OS_InitTick(); - OS_InitAlarm(); - - GX_DispOff(); - GXS_DispOff(); - - RTC_Init(); - - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - ClearVram(); - - InitMemory(); - - // assign vram banks - GX_SetBankForBG(GX_VRAM_BG_128_A); - GX_SetBankForOBJ(GX_VRAM_OBJ_16_F); - GX_SetBankForSubBG(GX_VRAM_SUB_BG_128_C); - GX_SetBankForSubOBJ(GX_VRAM_SUB_OBJ_16_I); - GX_SetBankForLCDC(GX_VRAM_LCDC_B); - - // init screen - // BG 1 ‚ðÝ’è - G2_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, // ƒXƒNƒŠ[ƒ“ƒTƒCƒY 256x256 - GX_BG_COLORMODE_16, // ƒJƒ‰[ƒ‚[ƒh 16F - GX_BG_SCRBASE_0x0000, // ƒXƒNƒŠ[ƒ“ƒx[ƒX - GX_BG_CHARBASE_0x04000, // ƒLƒƒƒ‰ƒNƒ^ƒx[ƒX - GX_BG_EXTPLTT_01 ); // Šg’£ƒpƒŒƒbƒgƒXƒƒbƒg - - G2S_SetBG1Control( - GX_BG_SCRSIZE_TEXT_256x256, // ƒXƒNƒŠ[ƒ“ƒTƒCƒY 256x256 - GX_BG_COLORMODE_16, // ƒJƒ‰[ƒ‚[ƒh 16F - GX_BG_SCRBASE_0x0000, // ƒXƒNƒŠ[ƒ“ƒx[ƒX - GX_BG_CHARBASE_0x04000, // ƒLƒƒƒ‰ƒNƒ^ƒx[ƒX - GX_BG_EXTPLTT_01 ); // Šg’£ƒpƒŒƒbƒgƒXƒƒbƒg - - // BG 2 ‚ðÝ’è - G2_SetBG2ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // ƒXƒNƒŠ[ƒ“ƒTƒCƒY 256x256 - GX_BG_COLORMODE_16, // ƒJƒ‰[ƒ‚[ƒh 16F - GX_BG_SCRBASE_0x0800, // ƒXƒNƒŠ[ƒ“ƒx[ƒX - GX_BG_CHARBASE_0x0c000 ); // ƒLƒƒƒ‰ƒNƒ^ƒx[ƒX - - G2S_SetBG2ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // ƒXƒNƒŠ[ƒ“ƒTƒCƒY 256x256 - GX_BG_COLORMODE_16, // ƒJƒ‰[ƒ‚[ƒh 16F - GX_BG_SCRBASE_0x0800, // ƒXƒNƒŠ[ƒ“ƒx[ƒX - GX_BG_CHARBASE_0x0c000 ); // ƒLƒƒƒ‰ƒNƒ^ƒx[ƒX - - // BG 3 ‚ðÝ’è - G2_SetBG3ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // ƒXƒNƒŠ[ƒ“ƒTƒCƒY 256x256 - GX_BG_COLORMODE_16, // ƒJƒ‰[ƒ‚[ƒh 16F - GX_BG_SCRBASE_0x1000, // ƒXƒNƒŠ[ƒ“ƒx[ƒX - GX_BG_CHARBASE_0x14000 ); // ƒLƒƒƒ‰ƒNƒ^ƒx[ƒX - - G2S_SetBG3ControlText( - GX_BG_SCRSIZE_TEXT_256x256, // ƒXƒNƒŠ[ƒ“ƒTƒCƒY 256x256 - GX_BG_COLORMODE_16, // ƒJƒ‰[ƒ‚[ƒh 16F - GX_BG_SCRBASE_0x1000, // ƒXƒNƒŠ[ƒ“ƒx[ƒX - GX_BG_CHARBASE_0x14000 ); // ƒLƒƒƒ‰ƒNƒ^ƒx[ƒX - - // BG1/3 ‚ð‰ÂŽ‹‚É - GX_SetVisiblePlane ( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG3 ); - GXS_SetVisiblePlane( GX_PLANEMASK_BG1 | GX_PLANEMASK_BG3 ); - - // BG1/2/3 ‚Ì—D懈ÊÝ’è - G2_SetBG1Priority(3); - G2_SetBG2Priority(2); - G2_SetBG3Priority(1); - G2S_SetBG1Priority(3); - G2S_SetBG2Priority(2); - G2S_SetBG3Priority(1); - - GX_LoadBGPltt(COLOR_PALETTE, 0, sizeof(COLOR_PALETTE)); - GXS_LoadBGPltt(COLOR_PALETTE, 0, sizeof(COLOR_PALETTE)); - - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_0, GX_BG0_AS_2D); - GXS_SetGraphicsMode(GX_BGMODE_0); - GX_SetBGScrOffset(GX_BGSCROFFSET_0x00000); - GX_SetBGCharOffset(GX_BGCHAROFFSET_0x00000); - - InitFont(font_NFTR_begin); - - { - const u32 chrOffset = CANVAS_CHARACTER_OFFSET * sizeof(GXCharFmt16); - sCanvasMain1.Init(NNS_GFD_DST_2D_BG1_CHAR_MAIN, chrOffset, G2_GetBG1ScrPtr(), &sFont); - sCanvasMain3.Init(NNS_GFD_DST_2D_BG3_CHAR_MAIN, chrOffset, G2_GetBG3ScrPtr(), &sFont); - sCanvasSub1 .Init(NNS_GFD_DST_2D_BG1_CHAR_SUB, chrOffset, G2S_GetBG1ScrPtr(), &sFont); - sCanvasSub3 .Init(NNS_GFD_DST_2D_BG3_CHAR_SUB, chrOffset, G2S_GetBG3ScrPtr(), &sFont); - - NNS_GfdInitVramTransferManager(sTaskArray, TASK_ARRAY_NUM); - } - - PAD_Read(); - } - - u16 GetPadTrigger() - { - return static_cast(System_GamePadState.button); - } - -} // namespace util - diff --git a/build/tests/WirelessChecker/src/util/util.h b/build/tests/WirelessChecker/src/util/util.h deleted file mode 100644 index a84e4afb..00000000 --- a/build/tests/WirelessChecker/src/util/util.h +++ /dev/null @@ -1,103 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Wireless Checher - File: util.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef WIRELESS_CHECHER_UTIL_H_ -#define WIRELESS_CHECHER_UTIL_H_ - -#include - -namespace util -{ - -const int DEFAULT_COLOR_PALETTE = 0; - -enum PaletteColor -{ - COLOR_NULL=0, - COLOR_WHITE, - COLOR_BLACK, - - COLOR_RED, - COLOR_YELLOW, - COLOR_LIMEGREEN, - COLOR_TURQUOISE, - COLOR_BLUE, - COLOR_BROWN, - COLOR_LIGHTGRAY, - COLOR_DARKGRAY, - - COLOR_GUIDE_BG -}; - -struct GamePad -{ - u16 trigger; - u16 release; - u16 button; - bool repeatTrigger; - u8 padding0; - int beginPress; -}; - -void Init(void); -void WaitVBlankIntr(void); -void dispOn(void); -void UpdateGamePad(void); -void UpdateDisplay(void); - -class CCanvas; -CCanvas* GetMain1Canvas(); -CCanvas* GetMain3Canvas(); -CCanvas* GetSub1Canvas(); -CCanvas* GetSub3Canvas(); - -inline u16 -IsPadDown(u16 key) -{ - extern GamePad System_GamePadState; - return static_cast(System_GamePadState.trigger & key); -} -inline u16 -IsPadUp(u16 key) -{ - extern GamePad System_GamePadState; - return static_cast(System_GamePadState.release & key); -} -inline u16 -IsPadPress(u16 key) -{ - extern GamePad System_GamePadState; - return static_cast(System_GamePadState.button & key); -} -inline u16 -IsPadTrigger(u16 key) -{ - extern GamePad System_GamePadState; - if( System_GamePadState.repeatTrigger ) - { - return IsPadPress(key); - } - else - { - return IsPadDown(key); - } -} - -u16 GetPadTrigger(); - -} // namespace util - -#endif // WIRELESS_CHECHER_UTIL_H_ diff --git a/build/tests/WirelessChecker/src/util/wprintf.cpp b/build/tests/WirelessChecker/src/util/wprintf.cpp deleted file mode 100644 index 35879971..00000000 --- a/build/tests/WirelessChecker/src/util/wprintf.cpp +++ /dev/null @@ -1,387 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: WPrintf.cpp - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "util/wprintf.h" - -namespace util -{ -namespace -{ - /* inner function for sized-buffer output */ - - typedef struct dst_string_tag - { - size_t len; - wchar_t *cur; - wchar_t *base; - } dst_string; - - void - string_put_char(dst_string *p, wchar_t c) - { - if(p->len > 0) *p->cur = c, --p->len; - ++p->cur; - } - - void - string_fill_char(dst_string *p, wchar_t c, int n) - { - if(n > 0) { - size_t i, k = p->len; - if(k > (size_t)n) k = (size_t)n; - for( i = 0 ; i < k ; ++i ) - p->cur[i] = c; - p->len -= k; - p->cur += n; - } - } - - void - string_put_string(dst_string *p, const wchar_t *s, int n) - { - if(n > 0) { - size_t i, k = p->len; - if(k > (size_t)n) k = (size_t)n; - for( i = 0 ; i < k ; ++i ) - p->cur[i] = s[i]; - p->len -= k; - p->cur += n; - } - } -} - -// based on OS_VSNPrintf - -/*---------------------------------------------------------------------------* - Name: OS_VSNPrintf - - Description: small-size vsnprintf which is similar to 'vsnprintf' - without following supports. - * CodeWarrior Extensions (#s) - * MSL AltiVec Extensions (v, vh, vl, hv, lv, @) - * indexed argments (%m$, *m$) - * floating-point - * wchar_t - - Note: '+' and '#' do not work, MSL's sprintf(). - to keep same result, they are no implement. - { // exsample - wchar_t buf[5]; - sprintf(buf, "%-i\n", 45); // "45" (OK) - sprintf(buf, "%0i\n", 45); // "45" (OK) - sprintf(buf, "% i\n", 45); // " 45" (OK) - sprintf(buf, "%+i\n", 45); // "%+i" ("+45" expected) - sprintf(buf, "%#x\n", 45); // "%#x" ("0x2d" expected) - // but, this works correctly! - sprintf(buf, "% +i\n", 45); // "+45" (OK) - } - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -int -VSNWPrintf(wchar_t *dst, size_t len, const wchar_t *fmt, va_list vlist) -{ - wchar_t buf[24]; - int n_buf; - wchar_t prefix[2]; - int n_prefix; - - const wchar_t *s = fmt; - - dst_string str; - str.len = len, str.cur = str.base = dst; - - while(*s) { - if(*s != L'%') { - /* normal character */ - string_put_char(&str, *s++); - } else { - /* output with format */ - enum { - flag_blank = 000001, /* L' ' */ - flag_plus = 000002, /* L'+' */ - flag_sharp = 000004, /* L'#' */ - flag_minus = 000010, /* L'-' */ - flag_zero = 000020, /* L'0' */ - flag_l1 = 000040, /* "l" */ - flag_h1 = 000100, /* "h" */ - flag_l2 = 000200, /* "ll" */ - flag_h2 = 000400, /* "hh" */ - flag_unsigned = 010000, /* L'o', L'u', ... */ - flag_end } ; - int flag = 0, width = 0, precision = -1, radix = 10; - wchar_t hex_char = L'a' - 10; - const wchar_t *p_start = s; - /* flags */ - for( ; ; ) { - switch(*++s) { - case L'+':if(s[-1] != L' ') break; - flag |= flag_plus; continue; - case L' ':flag |= flag_blank;continue; - case L'-':flag |= flag_minus;continue; - case L'0':flag |= flag_zero; continue; - } - break; - } - /* width */ - if(*s == L'*') { - ++s, width = va_arg(vlist, int); - if(width < 0) - width = -width, flag |= flag_minus; - } else { - while((*s >= L'0') && (*s <= L'9')) - width = (width * 10) + *s++ - L'0'; - } - /* precision */ - if(*s == L'.') { - ++s, precision = 0; - if(*s == L'*') { - ++s, precision = va_arg(vlist, int); - if(precision < 0) precision = -1; - } else { - while((*s >= L'0') && (*s <= L'9')) - precision = (precision * 10) + *s++ - L'0'; - } - } - /* option */ - switch(*s) { - case L'h': - if(*++s != L'h') flag |= flag_h1; - else ++s, flag |= flag_h2; - break; - case L'l': - if(*++s != L'l') flag |= flag_l1; - else ++s, flag |= flag_l2; - break; - } - - /* type */ - switch(*s) { - case L'd': /* signed decimal */ - case L'i': /* signed decimal */ - goto put_integer; - case L'o': /* unsigned octal */ - radix = 8; - flag |= flag_unsigned; - goto put_integer; - case L'u': /* unsigned decimal */ - flag |= flag_unsigned; - goto put_integer; - case L'X': /* unsigned hexadecimal */ - hex_char = L'A' - 10; - goto put_hexadecimal; - case L'x': /* unsigned hexadecimal */ - goto put_hexadecimal; - case L'p': /* pointer */ - /* equal to code warrior */ - flag |= flag_sharp; - precision = 8; - goto put_hexadecimal; - - case L'c': /* character */ - if(precision >= 0) - goto put_invalid; - { - int c = va_arg(vlist, int); - width -= 1; - if(flag & flag_minus) { - string_put_char(&str, (wchar_t)c); - string_fill_char(&str, L' ', width); - } else { - wchar_t pad = (wchar_t)( - (flag & flag_zero) ? L'0' : L' '); - string_fill_char(&str, pad, width); - string_put_char(&str, (wchar_t)c); - } - ++s; - } - break; - - case L's': /* string */ - { - int n_buf = 0; - const wchar_t *p_buf = va_arg(vlist, const wchar_t*); - if(precision < 0) { - while(p_buf[n_buf]) - ++n_buf; - } else { - while((n_buf < precision) && p_buf[n_buf]) - ++n_buf; - } - width -= n_buf; - if(flag & flag_minus) { - string_put_string(&str, p_buf, n_buf); - string_fill_char(&str, L' ', width); - } else { - wchar_t pad = (wchar_t)( - (flag & flag_zero) ? L'0' : L' '); - string_fill_char(&str, pad, width); - string_put_string(&str, p_buf, n_buf); - } - ++s; - } - break; - - case L'n': /* store the number of output */ - { - int pos = str.cur - str.base; - if(flag & flag_h2) - ; - else if(flag & flag_h1) - *va_arg(vlist, signed short*) = (signed short)pos; - else if(flag & flag_l2) - *va_arg(vlist, u64*) = (u64)pos; - else - *va_arg(vlist, signed int*) = (signed int)pos; - } - ++s; - break; - - case L'%': /* output L'%' */ - if(p_start + 1 != s) - goto put_invalid; - string_put_char(&str, *s++); - break; - - default: /* invalid type */ - goto put_invalid; - -put_invalid: - string_put_string(&str, p_start, s - p_start); - break; - -put_hexadecimal: - radix = 16; - flag |= flag_unsigned; -put_integer: - { - u64 val = 0; - n_prefix = 0; - - if(flag & flag_minus) - flag &= ~flag_zero; - if(precision < 0) precision = 1; - else flag &= ~flag_zero; - - if(flag & flag_unsigned) { - if(flag & flag_h2) - val = va_arg(vlist, wchar_t); - else if(flag & flag_h1) - val = va_arg(vlist, unsigned short); - else if(flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, unsigned long); - flag &= ~(flag_plus | flag_blank); - if(flag & flag_sharp) { - if(radix == 16) { - if(val != 0) { - prefix[0] = (wchar_t)(hex_char + (10 + L'x' - L'a')); - prefix[1] = L'0'; - n_prefix = 2; - } - } else if(radix == 8) { - prefix[0] = L'0'; - n_prefix = 1; - } - } - } else { - if(flag & flag_h2) - val = va_arg(vlist, wchar_t); - else if(flag & flag_h1) - val = va_arg(vlist, short); - else if(flag & flag_l2) - val = va_arg(vlist, u64); - else - val = va_arg(vlist, long); - if((val >> 32) & 0x80000000) { - val = ~val + 1; - prefix[0] = L'-'; - n_prefix = 1; - } else { - if(val || precision) { - if(flag & flag_plus) { - prefix[0] = L'+'; - n_prefix = 1; - } else - if(flag & flag_blank) { - prefix[0] = L' '; - n_prefix = 1; - } - } - } - } - n_buf = 0; - while(val != 0) { - int d = (int)(val % radix); - val /= radix; - buf[n_buf++] = (wchar_t)((d < 10) ? - (d + L'0') : (d + hex_char)); - } - if((n_prefix > 0) && (prefix[0] == L'0')) { - n_prefix = 0; - buf[n_buf++] = L'0'; - } - } - goto put_to_stream; - -put_to_stream: - { - int n_pad = precision - n_buf; - if(flag & flag_zero) { - if(n_pad < width - n_buf - n_prefix) - n_pad = width - n_buf - n_prefix; - } - if(n_pad > 0) width -= n_pad; - width -= n_prefix + n_buf; - if(!(flag & flag_minus)) - string_fill_char(&str, L' ', width); - while(n_prefix > 0) - string_put_char(&str, prefix[--n_prefix]); - string_fill_char(&str, L'0', n_pad); - while(n_buf > 0) - string_put_char(&str, buf[--n_buf]); - if(flag & flag_minus) - string_fill_char(&str, L' ', width); - ++s; - } - break; - } - } - } - - if(str.len > 0) - *str.cur = '\0'; - else if(len > 0) - str.base[len - 1] = '\0'; - return str.cur - str.base; -} - - -} -// end of namespace tlib diff --git a/build/tests/WirelessChecker/src/util/wprintf.h b/build/tests/WirelessChecker/src/util/wprintf.h deleted file mode 100644 index d63dff9f..00000000 --- a/build/tests/WirelessChecker/src/util/wprintf.h +++ /dev/null @@ -1,100 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - Nmenu - File: WPrintf.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef TLIB_SYSTEM_WPRINTF_H_ -#define TLIB_SYSTEM_WPRINTF_H_ - - - -namespace util -{ - -int VSNWPrintf(wchar_t *dst, size_t len, const wchar_t *fmt, va_list vlist); - - -/*---------------------------------------------------------------------------* - Name: OS_SNPrintf - - Description: equal to 'OS_VSNPrintf' except argument style. - - Arguments: dst : destination buffer. - len : destination buffer size. - fmt : format string. - - Returns: length of the generated string. (except '\0') - if(result < len), - put NUL in dst[result]. - else if(len > 0), - put NUL in dst[len - 1]. - else, - do nothing. - *---------------------------------------------------------------------------*/ -inline int -SNWPrintf(wchar_t *dst, size_t len, const wchar_t *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = VSNWPrintf(dst, len, fmt, va); - va_end(va); - return ret; -} - -/*---------------------------------------------------------------------------* - Name: OS_VSPrintf - - Description: equal to 'OS_VSNPrintf' except buffer size argument. - - Arguments: dst : destination buffer. - fmt : format string. - vlist : parameters. - - Returns: length of the generated string. - *---------------------------------------------------------------------------*/ -inline int -VSWPrintf(wchar_t *dst, const wchar_t *fmt, va_list vlist) -{ - return VSNWPrintf(dst, 0x7FFFFFFF, fmt, vlist); -} - -/*---------------------------------------------------------------------------* - Name: OS_SPrintf - - Description: equal to 'OS_VSPrintf' except argument style. - - Arguments: dst : destination buffer. - fmt : format string. - - Returns: length of the generated string. - *---------------------------------------------------------------------------*/ -inline int -SWPrintf(wchar_t *dst, const wchar_t *fmt, ...) -{ - int ret; - va_list va; - va_start(va, fmt); - ret = VSWPrintf(dst, fmt, va); - va_end(va); - return ret; -} - - -} -// end of namespace tlib - - - -#endif // TLIB_SYSTEM_WPRINTF_H_ diff --git a/build/tests/build4WLDev/Makefile b/build/tests/build4WLDev/Makefile deleted file mode 100644 index 561282d0..00000000 --- a/build/tests/build4WLDev/Makefile +++ /dev/null @@ -1,146 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -# force to build for debugger -export SYSM_BUILD_FOR_DEBUGGER = TRUE - -# SDK configuration for export -override TWL_ARCHGEN := LIMITED -overrice TWL_CODEGEN := THUMB -export TWL_ARCHGEN -export OBJDIR = ./obj.WLAN/$(TWL_BUILDTYPE) -export DEPENDDIR = ./depend.WLAN/$(TWL_BUILDTYPE) -export LIBDIR = ./lib.WLAN/$(TWL_BUILDTYPE) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -export LDIRT_CLEAN = ./obj.WLAN ./depend.WLAN ./lib.WLAN - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher -MACHINESETTINGS_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/MachineSettings -WLANFIRM_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/wlanfirm -DS_HASH_TABLE = $(SYSMENU_ROOT)/build/systemMenu_RED/DSHashTable -SHARED_FONT_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/sharedFont -NANDFIRM_DIR = $(SYSMENU_ROOT)/build/nandfirm/menu-launcher - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdaterRegionSelect - -# ŽÀÛ‚É‘‚«ž‚Ý‚½‚¢ƒtƒ@ƒCƒ‹‚Ì’u‚©‚ê‚Ä‚¢‚édataƒtƒHƒ‹ƒ_‚ðŽw’è -export UPDATER_HOST_ROOT_DIR = $(call empath,$(SYSMENU_ROOT)/build/tests/build4WLDev/data_sysmenu) - -SUBMAKES = $(SYSMENU_ROOT)/build/libraries_sysmenu/Makefile \ - \ - $(LAUNCHER_DIR)/banner/Makefile \ - $(LAUNCHER_DIR)/ARM9/Makefile_autogen_HNAJ \ - $(LAUNCHER_DIR)/ARM9/Makefile_autogen_HNAE \ - $(SYSTEMUPDATER_DIR)/banner/Makefile \ - $(SYSTEMUPDATER_DIR)/ARM7.TWL/Makefile \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/Makefile_autogen - -# COMPILE SWITCH for build SystemMenu - -export SYSM_UPDATER_RELEASE = TRUE - -export SYSM_DO_NOT_SHOW_LAUNCHER = FALSE -export SYSM_DISABLE_WDS_SCAN = FALSE - -############################################# -# For Wireless development -# - -# disable signature check -export SYSM_IGNORE_WLFIRM_SIGNCHECK = TRUE - -export SYSM_DISABLE_WLFIRM_LOAD = FALSE -export SYSM_DISABLE_INITIAL_SETTINGS = TRUE -export SYSM_OUTSIDE_UI = TRUE - -export SYSM_DEV_WHITELIST_CHECK_SKIP = TRUE - -export SYSM_BUILD_FOR_PRODUCTION_TEST = FALSE - -# MAKEROM SWITCH for build SystemMenu -export SYSM_DISABLE_DEBUG = TRUE -export SYSM_USE_WLANFIRM_LOCAL_PUBKEY = FALSE - -# Option for SystemUpdater -export IGNORE_VERSION_CHECK = TRUE - -############################################# -# inhibit reentrant - -FIRST_CALL ?= TRUE -SKIP_SUBDIR ?= TRUE - -DATE_AND_TIME ?= $(shell date +"%y%m%d %H%M") - -DATE ?= $(word 1,$(DATE_AND_TIME)) -TIME ?= $(word 2,$(DATE_AND_TIME)) -TIME_NOZERO = $(shell echo $(TIME) | sed -e 's/^0*\(.\)/\1/') - -ifneq ($(FIRST_CALL),TRUE) -INSTALL_TARGETS = $(SYSTEMUPDATER_DIR)/ARM9.TWL/bin/$(TWL_BUILDTYPE)/SystemUpdater.srl -INSTALL_DIR = . -endif - -GDIRT_INSTALLED += ./$(notdir $(subst .srl,_WL_$(DATE)_*.srl,$(INSTALL_TARGETS))) - -#---------------------------------------------------------------------------- - -do-build: do-core -clean: cl-core -clobber: cl-core - -do-build: MY_TARGET=default -clean: MY_TARGET=clean -clobber: MY_TARGET=clobber - -do-core: -ifeq ($(FIRST_CALL),TRUE) - @echo Enter remake SKIP_SUBDIR=$(SKIP_SUBDIR) - +$(REMAKE) -C ./scripts SKIP_SUBDIR=FALSE $(MY_TARGET) - +$(REMAKE) FIRST_CALL=FALSE SKIP_SUBDIR=FALSE $(MY_TARGET) -endif - -cl-core: -ifeq ($(FIRST_CALL),TRUE) - +$(REMAKE) FIRST_CALL=FALSE SKIP_SUBDIR=FALSE $(MY_TARGET) - +$(REMAKE) -C ./scripts SKIP_SUBDIR=FALSE $(MY_TARGET) -endif - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -# Override generic DO_INSTALL -define DO_INSTALL - $(INSTALL) -d $(INSTALL_DIR) $(AND) \ - $(foreach FILE, $(INSTALL_TARGETS), \ - if [ ! -e $(INSTALL_DIR)/$(FILE) -o \ - $(FILE) -nt $(INSTALL_DIR)/$(FILE) ]; \ - then \ - $(ECHO) " install: $(FILE) -> $(subst .srl,_WL_$(DATE)_$(TIME).srl,$(FILE))" $(AND) \ - $(INSTALL) $(FILE) $(INSTALL_DIR)/$(notdir $(subst .srl,_WL_$(DATE)_$(TIME).srl,$(FILE))); \ - fi $(AND) ) $(TRUE) -endef - -test: - @echo SKIP_SUBDIR=$(SKIP_SUBDIR) -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/Makefile_environment b/build/tests/build4WLDev/Makefile_environment deleted file mode 100644 index d11a6952..00000000 --- a/build/tests/build4WLDev/Makefile_environment +++ /dev/null @@ -1,41 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -# force to build for debugger -export SYSM_BUILD_FOR_DEBUGGER = TRUE - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -# skip demos -export NITRO_WITHOUT_DEMOS = TRUE -export TWL_WITHOUT_DEMOS = TRUE - -override TWLSYSTEM_ROOT= -export TWLSYSTEM_ROOT - -SUBDIRS = $(ROOT) \ - $(NITROSYSTEM_ROOT) \ - - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/Makefile_old b/build/tests/build4WLDev/Makefile_old deleted file mode 100644 index dc98d6a4..00000000 --- a/build/tests/build4WLDev/Makefile_old +++ /dev/null @@ -1,144 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -# force to build for debugger -export SYSM_BUILD_FOR_DEBUGGER = TRUE - -# SDK configuration for export -override TWL_ARCHGEN := LIMITED -export TWL_ARCHGEN -export OBJDIR = ./obj.WLAN/$(TWL_BUILDTYPE) -export DEPENDDIR = ./depend.WLAN/$(TWL_BUILDTYPE) -export LIBDIR = ./lib.WLAN/$(TWL_BUILDTYPE) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -export LDIRT_CLEAN = ./obj.WLAN ./depend.WLAN ./lib.WLAN - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher -MACHINESETTINGS_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/MachineSettings -WLANFIRM_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/wlanfirm -DS_HASH_TABLE = $(SYSMENU_ROOT)/build/systemMenu_RED/DSHashTable -SHARED_FONT_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/sharedFont -NANDFIRM_DIR = $(SYSMENU_ROOT)/build/nandfirm/menu-launcher - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdater - -# ŽÀÛ‚É‘‚«ž‚Ý‚½‚¢ƒtƒ@ƒCƒ‹‚Ì’u‚©‚ê‚Ä‚¢‚édataƒtƒHƒ‹ƒ_‚ðŽw’è -export UPDATER_HOST_ROOT_DIR = $(call empath,$(SYSTEMUPDATER_DIR)/data) - -ifdef BUILD_TWLSDK -SUBMAKES += Makefile_environment -endif - -SUBMAKES += $(SYSMENU_ROOT)/build/tools/Makefile \ - $(SYSMENU_ROOT)/build/libraries/Makefile \ - $(SYSMENU_ROOT)/build/libraries_sysmenu/Makefile_autogen \ - \ - $(LAUNCHER_DIR)/Makefile_autogen \ - $(MACHINESETTINGS_DIR)/Makefile_autogen \ - $(WLANFIRM_DIR)/Makefile \ - $(DS_HASH_TABLE)/Makefile \ - $(SHARED_FONT_DIR)/Makefile \ - $(NANDFIRM_DIR)/Makefile \ - $(SYSTEMUPDATER_DIR)/data/Makefile \ - $(SYSTEMUPDATER_DIR)/banner/Makefile \ - $(SYSTEMUPDATER_DIR)/ARM7.TWL/Makefile \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/Makefile - -# COMPILE SWITCH for build SystemMenu - -export SYSM_UPDATER_RELEASE = TRUE - -export SYSM_DO_NOT_SHOW_LAUNCHER = TRUE -export SYSM_DISABLE_WDS_SCAN = FALSE - -############################################# -# For Wireless development -# - -# disable signature check -export SYSM_IGNORE_WLFIRM_SIGNCHECK = TRUE - -export SYSM_DISABLE_WLFIRM_LOAD = FALSE -export SYSM_DISABLE_INITIAL_SETTINGS = TRUE -export SYSM_OUTSIDE_UI = TRUE - -export SYSM_DEV_WHITELIST_CHECK_SKIP = TRUE - -export SYSM_BUILD_FOR_PRODUCTION_TEST = FALSE - -# MAKEROM SWITCH for build SystemMenu -export SYSM_DISABLE_DEBUG = TRUE -export SYSM_USE_WLANFIRM_LOCAL_PUBKEY = FALSE - -DATE_AND_TIME ?= $(shell date +"%y%m%d %H%M") - -DATE ?= $(word 1,$(DATE_AND_TIME)) -TIME ?= $(word 2,$(DATE_AND_TIME)) -TIME_NOZERO = $(shell echo $(TIME) | sed -e 's/^0*\(.\)/\1/') - -INSTALL_TARGETS = $(SYSTEMUPDATER_DIR)/ARM9.TWL/bin/$(TWL_BUILDTYPE)/SystemUpdater.srl -INSTALL_DIR = . - -GDIRT_INSTALLED += ./$(notdir $(subst .srl,_WL_$(DATE)_*.srl,$(INSTALL_TARGETS))) - -#---------------------------------------------------------------------------- - -SKIP_SUBDIR ?= TRUE - -do-build: do-core -clean: cl-core -clobber: cl-core - -do-build: MY_TARGET=default -clean: MY_TARGET=clean -clobber: MY_TARGET=clobber - -do-core: -ifeq ($(SKIP_SUBDIR),TRUE) - +$(REMAKE) -C ./scripts SKIP_SUBDIR=FALSE $(MY_TARGET) - +$(REMAKE) SKIP_SUBDIR=FALSE $(MY_TARGET) -endif - -cl-core: -ifeq ($(SKIP_SUBDIR),TRUE) - +$(REMAKE) SKIP_SUBDIR=FALSE $(MY_TARGET) - +$(REMAKE) -C ./scripts SKIP_SUBDIR=FALSE $(MY_TARGET) -endif - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -# Override generic DO_INSTALL -define DO_INSTALL - $(INSTALL) -d $(INSTALL_DIR) $(AND) \ - $(foreach FILE, $(INSTALL_TARGETS), \ - if [ ! -e $(INSTALL_DIR)/$(FILE) -o \ - $(FILE) -nt $(INSTALL_DIR)/$(FILE) ]; \ - then \ - $(ECHO) " install: $(FILE) -> $(subst .srl,_WL_$(DATE)_$(TIME).srl,$(FILE))" $(AND) \ - $(INSTALL) $(FILE) $(INSTALL_DIR)/$(notdir $(subst .srl,_WL_$(DATE)_$(TIME).srl,$(FILE))); \ - fi $(AND) ) $(TRUE) -endef - - -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/readme.txt b/build/tests/build4WLDev/readme.txt deleted file mode 100644 index 14f75eb3..00000000 --- a/build/tests/build4WLDev/readme.txt +++ /dev/null @@ -1,26 +0,0 @@ -* –³üŠJ”­—pSystemUpdater - -1. ŠeŽísystemMenuƒtƒ@ƒCƒ‹‚Ì—pˆÓ - -TwlIPL/build/tests/build4WLDev ‚Ì’¼‰º‚Ɉȉº‚̃fƒBƒŒƒNƒgƒŠ\¬‚Å -systemMenuŠÖ˜Aƒtƒ@ƒCƒ‹‚ð—pˆÓ‚µ‚Ä‚­‚¾‚³‚¢B(HNA*.tad‚Íœ‚¢‚Ä‚­‚¾‚³‚¢B) - -¦Region‚ÍAJapan‚ÆAmerica‚݂̂ðƒTƒ|[ƒgAŠJ”­ŽÀ‹@‚ɂ͑Ήž‚µ‚Ä‚¢‚Ü‚¹‚ñB - -data_sysmenu - +debugger - l +america/* - l +japan/* - -ã‹L‚Ì*‚É‚ÍA -HNA*.tadˆÈŠO‚Ì‘Stad‚Ænandƒtƒ@[ƒ€‚ƃtƒHƒ“ƒgƒf[ƒ^‚ð’u‚¢‚Ä‚­‚¾‚³‚¢B - - -2.SystemUpdater‚̃rƒ‹ƒh - -TwlIPL/build/tests/build4WLDev ‚Åmake‚ðŽÀs‚µ‚Ä‚­‚¾‚³‚¢B -¦TwlIPL_private‚ª•K—v‚Å‚·B - -ÅI“I‚ÉAˆÈ‰º‚̂悤‚È“ú•tŽžŠÔƒ^ƒO‚‚«‚ÌSystemUpdater‚ª“¯‚¶ƒfƒBƒŒƒNƒgƒŠ‚É쬂³‚ê‚Ü‚·B - -SystemUpdater_WL_yymmdd_hhmm.srl diff --git a/build/tests/build4WLDev/scripts/Makefile b/build/tests/build4WLDev/scripts/Makefile deleted file mode 100644 index 919866fa..00000000 --- a/build/tests/build4WLDev/scripts/Makefile +++ /dev/null @@ -1,74 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher - -SYSMENU_LIBRARIES_DIR = $(SYSMENU_ROOT)/build/libraries_sysmenu - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdaterRegionSelect - -SCRIPTS_DIR = ./ - -MAKEFILES_ORG = $(LAUNCHER_DIR)/ARM9/Makefile -MAKE_MAKEFILES = $(SCRIPTS_DIR)/launcher_makefile_region.pl -AUTOGEN_MAKEFILES = $(LAUNCHER_DIR)/ARM9/Makefile_autogen_HNAJ $(LAUNCHER_DIR)/ARM9/Makefile_autogen_HNAE - -LDIRT_CLEAN += $(AUTOGEN_MAKEFILES) - -LOADWLAN_ORG = $(LAUNCHER_DIR)/ARM9/src/loadWlanFirm.c -MAKE_LOADWLAN = $(SCRIPTS_DIR)/launcher_loadWlanFirm_c.pl -AUTOGEN_LOADWLAN = $(LAUNCHER_DIR)/ARM9/src/loadWlanFirm_autogen.c -LDIRT_CLEAN += $(AUTOGEN_LOADWLAN) - -SYSUP_ORG = $(SYSTEMUPDATER_DIR)/ARM9.TWL/src/process_check_console.c \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/src/process_select_region.c \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/Makefile -MAKE_SYSUP = $(SCRIPTS_DIR)/systemupdater_source.pl -AUTOGEN_SYSUP = $(SYSTEMUPDATER_DIR)/ARM9.TWL/src/process_check_console_autogen.c \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/src/process_select_region_autogen.c \ - $(SYSTEMUPDATER_DIR)/ARM9.TWL/Makefile_autogen -LDIRT_CLEAN += $(AUTOGEN_SYSUP) - - -TARGETS = $(AUTOGEN_MAKEFILES) $(AUTOGEN_LOADWLAN) $(AUTOGEN_SYSUP) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_MAKEFILES): $(MAKEFILES_ORG) $(MAKE_MAKEFILES) - @echo " make:" $@ - @perl $(MAKE_MAKEFILES) - -$(AUTOGEN_LOADWLAN): $(LOADWLAN_ORG) $(MAKE_LOADWLAN) - @echo " make:" $@ - @perl $(MAKE_LOADWLAN) - -$(AUTOGEN_SYSUP): $(SYSUP_ORG) $(MAKE_SYSUP) - @echo " make:" $@ - @perl $(MAKE_SYSUP) - - -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/scripts/Makefile_old b/build/tests/build4WLDev/scripts/Makefile_old deleted file mode 100644 index 481ac3b3..00000000 --- a/build/tests/build4WLDev/scripts/Makefile_old +++ /dev/null @@ -1,87 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: SystemUpdater -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -#---------------------------------------------------------------------------- - -LAUNCHER_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher -MACHINESETTINGS_DIR = $(SYSMENU_ROOT)/build/systemMenu_RED/MachineSettings - -SYSMENU_LIBRARIES_DIR = $(SYSMENU_ROOT)/build/libraries_sysmenu - -SYSTEMUPDATER_DIR = $(SYSMENU_ROOT)/build/systemMenu_tools/SystemUpdater - -SCRIPTS_DIR = ./ - -MAKEFILES_ORG = $(LAUNCHER_DIR)/Makefile $(LAUNCHER_DIR)/ARM9/Makefile \ - $(MACHINESETTINGS_DIR)/Makefile $(MACHINESETTINGS_DIR)/ARM9/Makefile -MAKE_MAKEFILES = $(SCRIPTS_DIR)/launcher_makefile.pl -AUTOGEN_MAKEFILES = $(LAUNCHER_DIR)/Makefile_autogen $(LAUNCHER_DIR)/ARM9/Makefile_autogen \ - $(MACHINESETTINGS_DIR)/Makefile_autogen $(MACHINESETTINGS_DIR)/ARM9/Makefile_autogen - -LDIRT_CLEAN += $(AUTOGEN_MAKEFILES) - -LOADWLAN_ORG = $(LAUNCHER_DIR)/ARM9/src/loadWlanFirm.c -MAKE_LOADWLAN = $(SCRIPTS_DIR)/launcher_loadWlanFirm_c.pl -AUTOGEN_LOADWLAN = $(LAUNCHER_DIR)/ARM9/src/loadWlanFirm_autogen.c -LDIRT_CLEAN += $(AUTOGEN_LOADWLAN) - -MACHSETTING_ORG = $(MACHINESETTINGS_DIR)/ARM9/src/MachineSetting.c -MAKE_MACHSETTING = $(SCRIPTS_DIR)/launcher_MachineSetting_c.pl -AUTOGEN_MACHSETTING = $(MACHINESETTINGS_DIR)/ARM9/src/MachineSetting_autogen.c -LDIRT_CLEAN += $(AUTOGEN_MACHSETTING) - -NWM_ORG = $(SYSMENU_LIBRARIES_DIR)/Makefile \ - $(SYSMENU_LIBRARIES_DIR)/nwm/Makefile \ - $(SYSMENU_LIBRARIES_DIR)/nwm/ARM7/Makefile \ - $(ROOT)/build/libraries/wm/ARM7.TWL/nwm/src/nwmsp_event_handler.c -MAKE_NWM = $(SCRIPTS_DIR)/launcher_fake_macaddress.pl -AUTOGEN_NWM = $(SYSMENU_LIBRARIES_DIR)/Makefile_autogen \ - $(SYSMENU_LIBRARIES_DIR)/nwm/Makefile_autogen \ - $(SYSMENU_LIBRARIES_DIR)/nwm/ARM7/Makefile_autogen \ - $(ROOT)/build/libraries/wm/ARM7.TWL/nwm/src/nwmsp_event_handler_autogen.c -LDIRT_CLEAN += $(AUTOGEN_NWM) - - -TARGETS = $(AUTOGEN_MAKEFILES) $(AUTOGEN_LOADWLAN) $(AUTOGEN_MACHSETTING) $(AUTOGEN_NWM) - -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -$(AUTOGEN_MAKEFILES): $(MAKEFILES_ORG) $(MAKE_MAKEFILES) - @echo " make:" $@ - @perl $(MAKE_MAKEFILES) - -$(AUTOGEN_LOADWLAN): $(LOADWLAN_ORG) $(MAKE_LOADWLAN) - @echo " make:" $@ - @perl $(MAKE_LOADWLAN) - -$(AUTOGEN_MACHSETTING): $(MACHSETTING_ORG) $(MAKE_MACHSETTING) - @echo " make:" $@ - @perl $(MAKE_MACHSETTING) - -$(AUTOGEN_NWM): $(NWM_ORG) $(MAKE_NWM) - @echo " make:" $@ - @perl $(MAKE_NWM) - -#===== End of Makefile ===== diff --git a/build/tests/build4WLDev/scripts/launcher_MachineSetting_c.pl b/build/tests/build4WLDev/scripts/launcher_MachineSetting_c.pl deleted file mode 100755 index 0d4e890a..00000000 --- a/build/tests/build4WLDev/scripts/launcher_MachineSetting_c.pl +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_MachineSetting_c.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $src = "$IPLROOT/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting.c"; -my $dst = "$IPLROOT/build/systemMenu_RED/MachineSettings/ARM9/src/MachineSetting_autogen.c"; - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - print OUT $line; - # ]—ˆ”łƂ̌©‚½–Ú‚Ì‹æ•ʂ̂½‚ß‚ÉA–³üŠJ”­—p‚Ì•\ަ‚ð’ljÁB - if( $line =~ m/^[\t ]*PrintfSJIS\(.*\"MACHINE SETTINGS IPL:%s SDK:%s\".*\);/ ) - { - print OUT "//\t[AUTO ADDITION] ]—ˆ”łƂ̌©‚½–Ú‚Ì‹æ•ʂ̂½‚ß‚ÉA–³üŠJ”­—p‚Ì•\\ަ‚ð’ljÁB", $rn; - print OUT "\tPrintfSJIS( 0, 22*8, TXT_COLOR_BLUE, \"[ BUILT FOR WIRELESS DEVELOPMENT ]\");", $rn; - } -} -close(OUT); - diff --git a/build/tests/build4WLDev/scripts/launcher_fake_macaddress.pl b/build/tests/build4WLDev/scripts/launcher_fake_macaddress.pl deleted file mode 100755 index 4480c292..00000000 --- a/build/tests/build4WLDev/scripts/launcher_fake_macaddress.pl +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_fake_macaddress.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $rn = "\x0D\x0A"; - -my $SDKROOT; - -# search TWLSDK_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWLSDK_ROOT/s) { - $SDKROOT = $ENV{$_}; - } -} - -my $src = "$SDKROOT/build/libraries/wm/ARM7.TWL/nwm/src/nwmsp_event_handler.c"; -my $dst = "$SDKROOT/build/libraries/wm/ARM7.TWL/nwm/src/nwmsp_event_handler_autogen.c"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^ *MI_CpuCopy8\(ev->macaddr, sys->status->macAddress, NWM_SIZE_MACADDR\);/ ) - { - print OUT "//\t\t[AUTO COMMENT] fake MAC address of TWL wireless, copy MAC address from that in NOR flash.", $rn; - # add comment out at the top of line - $line =~ s/ev->macaddr,/wmMac,/; - } - - print OUT $line; -} -close(OUT); - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $src_make1 = "$IPLROOT/build/libraries_sysmenu/Makefile"; -my $dst_make1 = "$IPLROOT/build/libraries_sysmenu/Makefile_autogen"; - -open(F, $src_make1) or die "cant open $src_make1\n"; -my @lines = ; -close(F); - -open(OUT, ">$dst_make1") or die "cant open $dst_make1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^SUBDIRS/ ) - { - print OUT "SUBMAKES\t\t=\t\tnwm/Makefile_autogen", $rn, $rn; - } - - if( $line =~ m/nwm/ ) - { - $line =~ s/^/\#/; - } - - print OUT $line; -} -close(OUT); - -my $src_make2 = "$IPLROOT/build/libraries_sysmenu/nwm/Makefile"; -my $dst_make2 = "$IPLROOT/build/libraries_sysmenu/nwm/Makefile_autogen"; - -open(F, $src_make2) or die "cant open $src_make2\n"; -my @lines = ; -close(F); - -open(OUT, ">$dst_make2") or die "cant open $dst_make2\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^SUBDIRS_P *\+= *ARM7/ ) - { - print OUT "SUBMAKES_P += ARM7/Makefile_autogen", $rn; - next - } - - print OUT $line; -} -close(OUT); - -my $src_make3 = "$IPLROOT/build/libraries_sysmenu/nwm/ARM7/Makefile"; -my $dst_make3 = "$IPLROOT/build/libraries_sysmenu/nwm/ARM7/Makefile_autogen"; - -open(F, $src_make3) or die "cant open $src_make3\n"; -my @lines = ; -close(F); - -open(OUT, ">$dst_make3") or die "cant open $dst_make3\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^[\t ]*nwmsp_event_handler\.c/ ) - { - $line =~ s/nwmsp_event_handler\.c/nwmsp_event_handler_autogen\.c/; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/build4WLDev/scripts/launcher_loadWlanFirm_c.pl b/build/tests/build4WLDev/scripts/launcher_loadWlanFirm_c.pl deleted file mode 100755 index c3841558..00000000 --- a/build/tests/build4WLDev/scripts/launcher_loadWlanFirm_c.pl +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_loadWlanFirm_c.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $src = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm.c"; -my $dst = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/src/loadWlanFirm_autogen.c"; - - -my $rn = "\x0D\x0A"; - -open(F, $src) or die "cant open $src\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst") or die "cant open $dst\n"; -foreach my $line ( @lines ) -{ - # WLAN‚ÌLoadŽž‚ÉŒÀ‚èAFatalError‚̃Zƒbƒg–³Œø‚É‚·‚éB - if( $line =~ m/^[\t ]*UTL_SetFatalError\([\t ]*FATAL_ERROR_WLANFIRM_(LOAD|AUTH)[\t ]*\)/ ) - { - print OUT "//\t[AUTO COMMENTOUT] –³üŠJ”­—pƒ‰ƒ“ƒ`ƒƒ[‚Ìê‡A–³üŠÖ˜A‚ÌFATALƒGƒ‰[”­¶‚Í–³Ž‹‚µ‚ău[ƒg‚·‚邿‚¤‚É‚µ‚Ü‚·B", $rn; - # add comment out at the top of line - $line =~ s/^/\/\//; - } - - print OUT $line; -} -close(OUT); - diff --git a/build/tests/build4WLDev/scripts/launcher_makefile.pl b/build/tests/build4WLDev/scripts/launcher_makefile.pl deleted file mode 100755 index c558652e..00000000 --- a/build/tests/build4WLDev/scripts/launcher_makefile.pl +++ /dev/null @@ -1,112 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_makefile.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $rn = "\x0D\x0A"; - -my $src1 = "$IPLROOT/build/systemMenu_RED/Launcher/Makefile"; -my $dst1 = "$IPLROOT/build/systemMenu_RED/Launcher/Makefile_autogen"; - -open(F, $src1) or die "cant open $src1\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst1") or die "cant open $dst1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^SUBDIRS\t*=\t*banner ARM9/ ) - { - print OUT "SUBMAKES\t\t=\tbanner/Makefile ARM9/Makefile_autogen", $rn; - next; - } - - print OUT $line; -} -close(OUT); - -my $src2 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile"; -my $dst2 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile_autogen"; - -open(F, $src2) or die "cant open $src2\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst2") or die "cant open $dst2\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/loadWlanFirm\.c/ ) - { - $line =~ s/loadWlanFirm\.c/loadWlanFirm_autogen\.c/; - } - - print OUT $line; -} -close(OUT); - -my $src3 = "$IPLROOT/build/systemMenu_RED/MachineSettings/Makefile"; -my $dst3 = "$IPLROOT/build/systemMenu_RED/MachineSettings/Makefile_autogen"; - -open(F, $src3) or die "cant open $src3\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst3") or die "cant open $dst3\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^SUBDIRS\t*=\t*banner ARM9/ ) - { - print OUT "SUBMAKES\t\t=\tbanner/Makefile ARM9/Makefile_autogen", $rn; - next; - } - - print OUT $line; -} -close(OUT); - -my $src4 = "$IPLROOT/build/systemMenu_RED/MachineSettings/ARM9/Makefile"; -my $dst4 = "$IPLROOT/build/systemMenu_RED/MachineSettings/ARM9/Makefile_autogen"; - -open(F, $src4) or die "cant open $src4\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst4") or die "cant open $dst4\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/ +MachineSetting\.c/ ) - { - $line =~ s/MachineSetting\.c/MachineSetting_autogen\.c/; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/build4WLDev/scripts/launcher_makefile_region.pl b/build/tests/build4WLDev/scripts/launcher_makefile_region.pl deleted file mode 100755 index f11bf281..00000000 --- a/build/tests/build4WLDev/scripts/launcher_makefile_region.pl +++ /dev/null @@ -1,112 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: launcher_makefile.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $rn = "\x0D\x0A"; - -my $src1 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile"; -my $dst1 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile_autogen_HNAJ"; - -open(F, $src1) or die "cant open $src1\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst1") or die "cant open $dst1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/loadWlanFirm\.c/ ) - { - $line =~ s/loadWlanFirm\.c/loadWlanFirm_autogen\.c/; - } - - if( $line =~ m/^TITLEID_LO/ ) - { - $line =~ s/HNAA/HNAJ/; - } - - if( $line =~ m/^CARD_REGION/ ) - { - $line =~ s/ALL/Japan/; - print OUT $line; - print OUT "BINDIR = ./bin.HNAJ/\$(TWL_BUILDTYPE)", $rn; - next; - } - - if( $line =~ m/^INSTALL_DIR/ ) - { - print OUT "INSTALL_DIR = \$(UPDATER_HOST_ROOT_DIR)/debugger/japan", $rn; - print OUT "MAKETAD := \$(TWL_IPL_RED_PRIVATE_TOOLSDIR)/bin/maketad.updater.exe", $rn; - next; - } - - print OUT $line; -} -close(OUT); - - -my $src2 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile"; -my $dst2 = "$IPLROOT/build/systemMenu_RED/Launcher/ARM9/Makefile_autogen_HNAE"; - -open(F, $src2) or die "cant open $src2\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst2") or die "cant open $dst2\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/loadWlanFirm\.c/ ) - { - $line =~ s/loadWlanFirm\.c/loadWlanFirm_autogen\.c/; - } - - if( $line =~ m/^TITLEID_LO/ ) - { - $line =~ s/HNAA/HNAE/; - } - - if( $line =~ m/^CARD_REGION/ ) - { - $line =~ s/ALL/America/; - print OUT $line; - print OUT "BINDIR = ./bin.HNAE/\$(TWL_BUILDTYPE)", $rn; - next; - } - - if( $line =~ m/^INSTALL_DIR/ ) - { - print OUT "INSTALL_DIR = \$(UPDATER_HOST_ROOT_DIR)/debugger/america", $rn; - print OUT "MAKETAD := \$(TWL_IPL_RED_PRIVATE_TOOLSDIR)/bin/maketad.updater.exe", $rn; - next; - } - - print OUT $line; -} -close(OUT); - diff --git a/build/tests/build4WLDev/scripts/systemupdater_source.pl b/build/tests/build4WLDev/scripts/systemupdater_source.pl deleted file mode 100755 index a997eec7..00000000 --- a/build/tests/build4WLDev/scripts/systemupdater_source.pl +++ /dev/null @@ -1,125 +0,0 @@ -#!/bin/perl -#---------------------------------------------------------------------------- -# Project: TwlIPL - tests - -# File: systemupdater_source.pl -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- - -use strict; - -my $IPLROOT; - -# search TWL_IPL_RED_ROOT -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_ROOT/s) { - $IPLROOT = $ENV{$_}; - } -} - -my $rn = "\x0D\x0A"; - -my $src1 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_check_console.c"; -my $dst1 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_check_console_autogen.c"; - -my $in_check_console = 0; - -open(F, $src1) or die "cant open $src1\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst1") or die "cant open $dst1\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/^void ProcessCheckConsole\(void\)/ ) - { - $in_check_console = 1; - } - - if ($in_check_console == 1) - { - if( $line =~ m/^\/\*/ ) - { - print OUT "\tkamiFontPrintfConsole( FONT_COLOR_GREEN, \"This updater is for Wireless development.\\n\");", $rn; - print OUT "//\t[AUTO COMMENTOUT] –³üŠJ”­—pSystemUpdater‚Ìê‡AƒRƒƒ“ƒgƒAƒEƒg‚ð‚Í‚¸‚µ‚Ü‚·B", $rn; - # add comment out at the top of line - $line =~ s/^/\/\//; - } - if( $line =~ m/^\*\// ) - { - print OUT "//\t[AUTO COMMENTOUT] –³üŠJ”­—pSystemUpdater‚Ìê‡AƒRƒƒ“ƒgƒAƒEƒg‚ð‚Í‚¸‚µ‚Ü‚·B", $rn; - # add comment out at the top of line - $line =~ s/^/\/\//; - } - if( $line =~ m/^}/ ) - { - $in_check_console = 0; - } - } - - print OUT $line; -} -close(OUT); - -my $src2 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_select_region.c"; -my $dst2 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/src/process_select_region_autogen.c"; - -open(F, $src2) or die "cant open $src2\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst2") or die "cant open $dst2\n"; -foreach my $line ( @lines ) -{ - # WLAN‚ÌLoadŽž‚ÉŒÀ‚èAFatalError‚̃Zƒbƒg–³Œø‚É‚·‚éB - if( $line =~ m/OS_TWL_REGION_AUSTRALIA/ ) - { - print OUT "//\t[AUTO COMMENTOUT] –³üŠJ”­—pSystemUpdater‚Ìê‡ARegion‚ÍJapan‚ÆAmerica‚Ì‚ÝB", $rn; - $line =~ s/OS_TWL_REGION_AUSTRALIA/OS_TWL_REGION_AMERICA/; - } - - print OUT $line; -} -close(OUT); - -my $src3 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/Makefile"; -my $dst3 = "$IPLROOT/build/systemMenu_tools/SystemUpdaterRegionSelect/ARM9.TWL/Makefile_autogen"; - -open(F, $src3) or die "cant open $src3\n"; -my @lines = ; -close(F); - - -open(OUT, ">$dst3") or die "cant open $dst3\n"; -foreach my $line ( @lines ) -{ - if( $line =~ m/UPDATER_HOST_ROOT_DIR =/ ) - { - $line =~ s/UPDATER_HOST_ROOT_DIR =/UPDATER_HOST_ROOT_DIR ?=/; - } - - if( $line =~ m/process_select_region\.c/ ) - { - $line =~ s/process_select_region\.c/process_select_region_autogen\.c/; - } - - if( $line =~ m/process_check_console\.c/ ) - { - $line =~ s/process_check_console\.c/process_check_console_autogen\.c/; - } - - print OUT $line; -} -close(OUT); diff --git a/build/tests/compressSharedFontLoad/README.txt b/build/tests/compressSharedFontLoad/README.txt deleted file mode 100644 index 5fed4e21..00000000 --- a/build/tests/compressSharedFontLoad/README.txt +++ /dev/null @@ -1,60 +0,0 @@ -# ------------------------------------------ -# ‹¤—LƒtƒHƒ“ƒgˆ³kŽž‚̃[ƒh‘¬“xŽÀŒ± -# -# ì¬ŽÒ : nishikawa_takeshi -# ------------------------------------------ - -ŽÀŒ±‚͈ȉº‚Ì2ƒXƒeƒbƒv‚©‚ç\¬‚³‚ê‚Ü‚·B - -1. ‹¤—LƒtƒHƒ“ƒg‚̈³k‚ƃCƒ“ƒ|[ƒg -2. ƒ[ƒh‘¬“x‚Ì‘ª’è - -ˆÈ‰ºAŠeƒXƒeƒbƒv‚ɂ‚¢‚Äà–¾‚µ‚Ü‚·B - - -# ------------------------------------------ -# ƒXƒeƒbƒv1 ‹¤—LƒtƒHƒ“ƒg‚̈³k‚ƃCƒ“ƒ|[ƒg -# ------------------------------------------ - -(1)‹¤—LƒtƒHƒ“ƒg‚̈³k - -compSharedFont ƒfƒBƒŒƒNƒgƒŠ‚Ɉړ®‚µ‚Ä make ‚µ‚Ä‚­‚¾‚³‚¢B - % cd compSharedFont - % make - -(2)ˆ³k‚µ‚½ƒtƒHƒ“ƒg‚̃Cƒ“ƒ|[ƒg - -ˆ³k‚³‚ꂽ‹¤—LƒtƒHƒ“ƒg‚ð NandInitializerRed ‚ŃCƒ“ƒ|[ƒg‚·‚é•K—v‚ª‚ ‚è‚Ü‚·‚ªA -NandInitializerRed ‚ÍASD‚©‚炳͂Ȃ­AROMƒA[ƒJƒCƒu‚©‚çƒCƒ“ƒ|[ƒg‚µ‚Ü‚·B -(‚‚܂èAŽ©g‚ÌSRL“à•”‚É‹¤—LƒtƒHƒ“ƒg‚ðŽ‚¿‚Ü‚·B) -‚»‚Ì‚½‚ßANandInitializerRed ‚ðÄ“xAƒrƒ‹ƒh‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B -ˆ³kƒtƒHƒ“ƒg‚Í(1)‚̈—‚É‚æ‚Á‚ÄANandInitializerRed ‚̃fƒBƒŒƒNƒgƒŠ‚ÉŽ©“®“I‚ɃRƒs[‚³‚ê‚Ü‚·‚Ì‚ÅA -ƒRƒs[‚·‚é•K—v‚Í‚ ‚è‚Ü‚¹‚ñB - - % cd $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/NandIntializerRed - % make clean; make - -ărƒ‹ƒh‚³‚ꂽ NandInitializerRed.srl (ARM9.TWL/bin/ˆÈ‰º‚É‚ ‚è‚Ü‚·) ‚ðSDƒJ[ƒh‚ɃRƒs[‚µ‚ÄA -SDƒJ[ƒhƒu[ƒg‚·‚邯Aƒƒjƒ…[‚©‚çƒtƒHƒ“ƒg‚ðƒCƒ“ƒ|[ƒg‚·‚逖ڂð‘I‘ð‚Å‚«‚Ü‚·B - -# ------------------------------------------ -# ƒXƒeƒbƒv2 ƒ[ƒh‘¬“x‚Ì‘ª’è -# ------------------------------------------ - -ƒ[ƒh‘¬“x‚Ì‘ª’èƒvƒƒOƒ‰ƒ€‚ÍAtestLoadSpeed ƒfƒBƒŒƒNƒgƒŠ‚É‚ ‚è‚Ü‚·B -‚±‚±‚ÅAOS ƒ‰ƒCƒuƒ‰ƒŠ‚Ì‹¤—LƒtƒHƒ“ƒgŠÖ˜A‚ÌŠÖ”‚ð•ÏX‚µA -‚³‚ê‚ÉATWLSDK ‚ð SYSMENU ƒpƒbƒP[ƒW‚Æ‚µ‚ărƒ‹ƒh‚µ‚È‚¨‚·•K—v‚ª‚ ‚è‚Ü‚·B -‚±‚ê‚ç‚Ì•ÏX‚ƃeƒXƒgƒvƒƒOƒ‰ƒ€‚̃rƒ‹ƒh‚ÍAmake ‚ɃIƒvƒVƒ‡ƒ“‚ð‚‚¯‚邯ީ“®“I‚ÉŽÀs‚³‚ê‚Ü‚·B -(‚¨D‚Ý‚ÅATWL_WITHOUT_DEMOS=TRUE ‚â TWL_FINALROM=TRUE ƒIƒvƒVƒ‡ƒ“‚ð‚¨‚Â‚¯‚­‚¾‚³‚¢B) - - % cd testLoadSpeed - % make TEST_TWLSDK_REBUILD=TRUE - -ã‹L‚Ì TWLSDK ‚Ì•ÏX‚ð‚µ‚È‚¢‚Æ‚«‚É‚ÍAƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̃rƒ‹ƒh‚ª³í‚ɂł«‚Ü‚¹‚ñB - -ƒeƒXƒgƒvƒƒOƒ‰ƒ€‚ð•ÏX‚·‚éê‡A–ˆ‰ñ TWLSDK ‚ðƒrƒ‹ƒh‚·‚é‚͎̂žŠÔ‚ª‚©‚©‚è‚Ü‚·‚Ì‚ÅA -ƒIƒvƒVƒ‡ƒ“‚ð‚‚¯‚¸‚É make ‚·‚邯AƒeƒXƒgƒvƒƒOƒ‰ƒ€‚̃rƒ‹ƒh‚̂ݎÀs‚µ‚Ü‚·B - - % make - -쬂³‚ꂽƒeƒXƒgƒvƒƒOƒ‰ƒ€‚ðŽÀs‚·‚ê‚ÎAˆ³k‚µ‚½‹¤—LƒtƒHƒ“ƒg‚̃[ƒhŽžŠÔ‚𑪒è‚Å‚«‚Ü‚·B diff --git a/build/tests/compressSharedFontLoad/compSharedFont/Makefile b/build/tests/compressSharedFontLoad/compSharedFont/Makefile deleted file mode 100644 index 3417d6b0..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/Makefile +++ /dev/null @@ -1,62 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile - -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: -# $Rev: -# $Author: -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -SUBDIRS = compBLZ_modified \ - ntrcomp - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -FONT_TIMESTAMP = 08061300 -FONT_DIR = WW -FONTS = TBF1_l.NFTR \ - TBF1_m.NFTR \ - TBF1_s.NFTR -FONT_RSC = $(addprefix $(FONT_DIR)/, $(FONTS)) - -FONT_ORG_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_RED/sharedFont/WW -FONT_ORG_RSC = $(addprefix $(FONT_ORG_DIR)/, $(FONTS)) - -ifneq ($(TWL_IPL_RED_PRIVATE_ROOT),) -FONT_TABLE = TWLFontTable.dat -endif - -GEN_FONT_TABLE = ./genFontTable.plx - -#---------------------------------------------------------------------------- -INSTALL_TARGETS = $(FONT_TABLE) -INSTALL_DIR = $(TWL_IPL_RED_ROOT)/build/systemMenu_tools/NandInitializerRed/data - -LDIRT_CLEAN = $(FONT_TABLE) $(FONT_RSC) - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -do-build : $(FONT_TABLE) - -# step1 : copy sharedFonts into local directory for work -$(FONT_RSC): - cp $(FONT_ORG_RSC) $(FONT_DIR) - -# step2 : compress sharedFonts and them in local directory -$(FONT_TABLE): $(FONT_RSC) - $(GEN_FONT_TABLE) $(FONT_TIMESTAMP) $(FONT_RSC) - -#===== End of Makefile ===== diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/Makefile b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/Makefile deleted file mode 100644 index 89101f6e..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/Makefile +++ /dev/null @@ -1,73 +0,0 @@ -#! make -f -#--------------------------------------------------------------------------- -# Project: TwlSDK - tools - compBLZ -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#--------------------------------------------------------------------------- - -TARGET_PLATFORM = TWL NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -#--------------------------------------------------------------------------- - -TARGET_BIN = compBLZ.exe -TARGETS = $(BINDIR)/$(TARGET_BIN) - -SRCS = main.c \ - compress.c \ - file.c \ - version.c - -HEADERS = common.h \ - compress.h \ - file.h - -INCDIR += ../../../include -OBJDIR = obj -BINDIR = bin - -OBJS = $(addprefix $(OBJDIR)/,$(SRCS:.c=.o)) - -MACROS += -DSDK_TWL $(addprefix -I,$(INCDIR)) -NEWDIRS = $(OBJDIR) $(BINDIR) -LDIRT_CLEAN += $(NEWDIRS) version.c - -#INSTALL_DIR = $(TWL_INSTALL_TOOLSDIR)/bin -#INSTALL_TARGETS = $(TARGETS) - -#--------------------------------------------------------------------------- - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - -do-build: $(TARGETS) - -$(TARGETS): $(OBJS) $(LIBDGT) $(MAKEFILE) - $(CC_X86) $(OBJS) $(LIBDGT) -o $@ - -$(OBJS):%.o: - $(COMPILE_C) - -$(OBJDIR)/main.o: main.c file.h version.c -$(OBJDIR)/compress.o: compress.c compress.h -$(OBJDIR)/file.o: file.c file.h -$(OBJDIR)/version.o: version.c - -version.c: $(filter-out version.c,$(SRCS)) $(HEADERS) $(MAKEFILE) - @for i in $^ ; \ - do \ - date -r $$i +'const unsigned long SDK_DATE_OF_LATEST_FILE=%Y%m%dUL;'; \ - done | sort | tail -1 > $@ - -#===== End of Makefile ===== diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/_ b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/_ deleted file mode 100644 index 95665859..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/_ +++ /dev/null @@ -1 +0,0 @@ -SDK_CONFIDENTIAL diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/common.h b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/common.h deleted file mode 100644 index 9f60ce54..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/common.h +++ /dev/null @@ -1,42 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: common.h - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef COMMON_H__ -#define COMMON_H__ - -typedef enum -{ - TRUE = 1, - FALSE = 0 -} -BOOL; - -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned long u32; -typedef signed char s8; -typedef signed short s16; -typedef signed long s32; - -// macro -#define MIN(a,b) ((a)<(b)?(a):(b)) -#define ROUNDUP4(x) (((x)+3)&~3) -#define LE(a) ((((a)<<24)&0xff000000)|(((a)<<8)&0x00ff0000)|\ - (((a)>>8)&0x0000ff00)|(((a)>>24)&0x000000ff)) -#define FREE(x) do { if (x){ free(x); x = NULL; } } while(0) - - -#endif //COMMON_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.c b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.c deleted file mode 100644 index 57f4b5bc..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.c +++ /dev/null @@ -1,374 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: compress.c - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include -#include -#include "file.h" -#include "compress.h" - -static int LZCompressRV(u8 *src_buffer, int src_size, u8 *dst_buffer, int dst_size); -static int FindMatched(u8 *src_buffer, int src_size, u8 *dic_buffer, int dic_size, int *index); -static int HowManyMatched(u8 *src_buffer, u8 *dic_buffer, int max_len); -static int CheckOverwrite(int orig_size, u8 *cmprs_buffer, int cmprs_buffer_size, - int *orig_safe, int *cmprs_safe); - - -/*---------------------------------------------------------------------------* - Name: Compress - - Description: Buffer ‚Ì‹t‡‚̈³k‚ðs‚È‚¤D - ‚½‚¾‚µˆ³kƒf[ƒ^‚Æ“WŠJƒf[ƒ^‚ªƒƒ‚ƒŠ‹óŠÔ‚ð‹¤—L‚Å‚«‚邿‚¤‚É - ’²®‚·‚é - - buffer : ”툳kƒf[ƒ^ - buffer_size : ”툳kƒf[ƒ^ƒTƒCƒY - - Return: >=0: ˆ³kŒã‚̃TƒCƒY - < 0: ޏ”s - *---------------------------------------------------------------------------*/ -int Compress(u8 *buffer_original, int buffer_original_size) -{ - u8 *buffer; - int buffer_size; - int buffer_start; - u8 *temp_buffer_original; - u8 *temp_buffer; - int temp_buffer_size; - int temp_buffer_start; - int compressed_size; - int aligned_size; - int total_size; - int reduced; - int i; - CompFooter *footer; - - // ‘O€”õ - if (NULL == (temp_buffer_original = (u8 *)malloc(buffer_original_size))) - { - ErrorPrintf("Cannot allocate memory size=%d\n", buffer_original_size); - return COMPRESS_FATAL_ERROR; - } - - if ((u32)buffer_original % 4 != 0) - { - ErrorPrintf("Top of buffer is not aligned by 4.\n"); - return COMPRESS_FATAL_ERROR; - } - - buffer = buffer_original; - buffer_size = buffer_original_size; - temp_buffer = temp_buffer_original; - temp_buffer_size = buffer_original_size; - - // ˆ³k‚ðs‚È‚¤ - reduced = LZCompressRV(buffer, buffer_size, temp_buffer, temp_buffer_size); - if (reduced < 0) - { - DebugPrintf("Compressed buffer size exceeds original data size.\n"); - free(temp_buffer_original); - return COMPRESS_LARGER_ORIGINAL; - } - - temp_buffer_size -= reduced; - temp_buffer += reduced; - - DebugPrintf("1: source size = %d compressed = %d\n", buffer_size, temp_buffer_size); - - // “WŠJ•s”\‚Èã‘‚«‚ª”­¶‚·‚é‚©Šm”F - if (!CheckOverwrite - (buffer_size, temp_buffer, temp_buffer_size, &buffer_start, &temp_buffer_start)) - { - // ã‘‚«‚ª”­¶‚·‚é‚Ȃ爳k”͈͂ð•ÏX‚·‚é - buffer += buffer_start; - buffer_size -= buffer_start; - temp_buffer += temp_buffer_start; - temp_buffer_size -= temp_buffer_start; - - DebugPrintf(" !! Shrink back Compressed region to avoid overwriting.\n" - " !! Expand non-compressed region = +%d\n" - "2: source size = %d compressed = %d\n", - buffer_start, buffer_size, temp_buffer_size); - } - - // PADDING ‚ƃpƒ‰ƒ[ƒ^—̈æ‚ð‰Á‚¦‚Ä‚à’´‚¦‚È‚¢‚©‚Ç‚¤‚©”»’è - compressed_size = buffer_start + temp_buffer_size; // header+body - aligned_size = ROUNDUP4(compressed_size); // +padding - total_size = aligned_size + sizeof(CompFooter); // +footer - - if (buffer_original_size <= total_size) - { - DebugPrintf("Compressed buffer size exceeds or equals original data size.\n"); - free(temp_buffer_original); - return COMPRESS_LARGER_ORIGINAL; - } - - // ƒf[ƒ^‚ðƒeƒ“ƒ|ƒ‰ƒŠƒoƒbƒtƒ@‚©‚猳ƒf[ƒ^‚Öã‘‚«‚·‚é - CopyBuffer(temp_buffer, buffer, temp_buffer_size); - free(temp_buffer_original); - - // ƒTƒCƒY‚ª 4 ‚Ì”{”‚É‚È‚é‚æ‚¤‚É PADDING - // LZ ‚ÌŽÀ‘•㈳k—̈æ‚Ìʼn‚̃oƒCƒg’l‚Í 0xff ‚ɂȂç‚È‚¢(ʼn‚͈³k - // ƒtƒ‰ƒO‚Å‚ ‚èAʼn‚̃f[ƒ^‚͈³k‚È‚µ‚ÅŠi”[‚³‚ê‚é‚©‚ç)‚̂Š0xff ‚Å - // –„‚ß‚é - for (i = compressed_size; i < aligned_size; i++) - { - buffer_original[i] = 0xff; - } - - // ƒTƒCƒYÝ’è - // compressBottom ‚Í sizeof(PAD)+sizeof(footer) ‚Ȃ̂Š1ƒoƒCƒg‚Å\•ª - footer = (CompFooter *) (buffer_original + aligned_size); - footer->bufferTop = total_size - buffer_start; // ³‚Ì’l - footer->compressBottom = total_size - compressed_size; // ³‚Ì’l - footer->originalBottom = buffer_original_size - total_size; // ³‚Ì’l - - return total_size; -} - - -/*---------------------------------------------------------------------------* - Name: LZCompressRV - - Description: LZ ˆ³k‚ðs‚È‚¤D‚½‚¾‚µƒf[ƒ^‚ÌŒã•û‚©‚爳kŠJŽn‚·‚é - ˆ³kŒ‹‰Ê‚àŒã‚ë‹l‚߂ɂȂé - - Returns: ˆ³kƒf[ƒ^‚Ìæ“ª index - ˆ³kƒf[ƒ^‚Í dst_buffer+index ‚©‚ç dst_buffer+dst_size-1 ‚܂Š- -1: ˆ³kޏ”s(ˆ³k‚µ‚½Œ‹‰Ê‚Ì•û‚ª‘å‚«‚¢ê‡) - *---------------------------------------------------------------------------*/ -static int LZCompressRV(u8 *src_buffer, int src_size, u8 *dst_buffer, int dst_size) -{ - int src_index = src_size; - int dst_index = dst_size; - int compflag; - int compflag_index; - int i; - - while (src_index > 0) - { - if (dst_index < 1) - return -1; // Buffer Overflow - - // 8bit ‚̈³kƒtƒ‰ƒO‚Ì‘}“üˆÊ’u‚ð—\–ñ - compflag = 0x00; - compflag_index = --dst_index; - - // ƒtƒ‰ƒOŒn—ñ‚ª8ƒrƒbƒgƒf[ƒ^‚Æ‚µ‚ÄŠi”[‚³‚ê‚邽‚ßA8‰ñƒ‹[ƒv - for (i = 0; i < 8; i++) - { - compflag <<= 1; - - if (src_index > 0) // src ‚ªŽc‚Á‚Ä‚¢‚é‚©”»’è - { - u8 *dic_buffer; - int dic_size; - u8 *ref_buffer; - int ref_size; - int index; - int len; - - dic_buffer = src_buffer + src_index; - dic_size = src_size - src_index; - ref_size = MIN(src_index, LZ_MAX_COPY); - ref_buffer = dic_buffer - ref_size; - - len = FindMatched(ref_buffer, ref_size, - dic_buffer, MIN(dic_size, LZ_MAX_DIC_LENGTH), &index); - - if (len >= LZ_MIN_COPY) - { - u16 half; - - // Offset/Len ‚Ì‹L˜^‚ª‰Â”\‚©‚Ç‚¤‚©Šm”F - if (dst_index < 2) - return -1; // Buffer Overflow - - // src index i‚ß‚é - src_index -= len; - - // len >= LZ_MIN_COPY ‚Ȃ̂ł»‚Ì•ªŒ¸ŽZ‚µ’lˆæ‚ðß–ñ‚·‚é - index -= (LZ_MIN_COPY - 1); - len -= (LZ_MIN_COPY - 0); - - // 16bit ƒf[ƒ^‚Æ‚µ‚Ä‚½‚½‚Þ - half = (u16)((index & (LZ_MAX_INDEX - 1)) | (len << LZ_BIT_INDEX)); - dst_buffer[--dst_index] = (half >> 8) & 0xff; - dst_buffer[--dst_index] = (half >> 0) & 0xff; - - // flag ƒZƒbƒg - compflag |= 0x01; - } - else - { - // ’l‚»‚̂܂܂ð‹L˜^‚·‚é & src index i‚ß‚é - if (dst_index < 1) - return -1; // Buffer Overflow - dst_buffer[--dst_index] = src_buffer[--src_index]; - } - } - } - // ˆ³kƒtƒ‰ƒO‚̕ۑ¶ - dst_buffer[compflag_index] = compflag; - } - return dst_index; -} - - -/*---------------------------------------------------------------------------* - Name: FindMatched - - Description: ˆê’v‚·‚éƒpƒ^[ƒ“‚ÌŒŸõ‚ðs‚È‚¤D‚½‚¾‚µƒf[ƒ^‚ÌŒã•û‚©‚ç‘O•û‚Ö‚Ì - ŒŸõ - - src_buffer[0...src_size-1] ‚̃pƒ^[ƒ“‚ð src_buffer ‚ÌŒã•û‚©‚ç - dic_buffer[0...dic_size-1] ‚̃pƒ^[ƒ“‚ÆÅ‘åˆê’v‚·‚é•”•ª‚ð - ŒŸõ‚·‚éD - - Returns: ˆê’v‚µ‚½ƒTƒCƒY - *index ˆê’v‚µ‚½ˆÊ’u - *---------------------------------------------------------------------------*/ -static int FindMatched(u8 *src_buffer, int src_size, u8 *dic_buffer, int dic_size, int *index) -{ - u8 *src_bottom = src_buffer + src_size - 1; - u8 char_src_bottom = *src_bottom; - int n, len, max_len; - - // •Ô’l‰Šú‰» - max_len = 0; - - for (n = 0; n < dic_size; n++) - { - // ‚‘¬‰»‚Ì‚½‚߂̃LƒƒƒbƒVƒ… - if (char_src_bottom == dic_buffer[n]) - { - len = HowManyMatched(src_bottom, dic_buffer + n, MIN(n + 1, src_size)); - if (max_len < len) - { - max_len = len; - *index = n; - } - } - } - - // ŬƒTƒCƒYˆÈã‚Ȃ笌÷ - return max_len; -} - - -/*---------------------------------------------------------------------------* - Name: HowManyMatched - - Description: 2‚‚̃pƒ^[ƒ“‚ª‹t‡‚ɂǂ±‚܂ňê’v‚µ‚Ä‚¢‚é‚©‚𒲸‚·‚é - - src_buffer, dic_buffer ”äŠrƒpƒ^[ƒ“‚̃AƒhƒŒƒX - (‚±‚̃AƒhƒŒƒX‚©‚ç‹t•ûŒü‚ÖŒŸõ‚·‚é) - max_len ő咲¸‚·‚é’·‚³ - - Returns: ˆê’v‚µ‚½’·‚³ - *---------------------------------------------------------------------------*/ -static int HowManyMatched(u8 *src_buffer, u8 *dic_buffer, int max_len) -{ - int i; - - // ƒpƒ^[ƒ“ˆê’vŒŸõ(‹t‡) - for (i = 0; i < max_len; i++) - { - if (*src_buffer != *dic_buffer) - { - break; - } - src_buffer--; - dic_buffer--; - } - return i; -} - - -/*---------------------------------------------------------------------------* - Name: CheckOverwrite - - Description: LZ “WŠJ‚Å“WŠJæ‚Æ“WŠJŒ³‚𓯂¶ƒAƒhƒŒƒX‚É’u‚¢‚½ê‡‚ÉA‚Ç‚±‚܂Š- ³í‚É“WŠJ‚ª‰Â”\‚©‚ðƒ`ƒFƒbƒN‚·‚é - - Returns: ÅŒã‚܂œWŠJ‰Â”\‚È‚ç TRUE “r’†‚܂łȂç FALSE - *---------------------------------------------------------------------------*/ -static int CheckOverwrite(int orig_size, u8 *cmprs_buffer, int cmprs_buffer_size, - int *orig_safe, int *cmprs_safe) -{ - int src = cmprs_buffer_size; - int dst = orig_size; - int flag; - int i; - -//#define DETAIL - while (dst > 0) - { - flag = cmprs_buffer[--src]; // ˆ³k”ñˆ³kƒtƒ‰ƒO 8 ƒ‹[ƒv•ª - -#ifdef DETAIL - DebugPrintf("%08x %08x FLG=0x%02x\n", src, dst, flag); -#endif - for (i = 0; i < 8; i++) - { - if (dst > 0) - { - if (flag & 0x80) // ˆ³kƒf[ƒ^‚©H - { - u16 half; - int len; - - // “WŠJ’·‚ðŒvŽZ - src -= 2; - half = (u16)(cmprs_buffer[src] | (cmprs_buffer[src + 1] << 8)); - len = ((half >> LZ_BIT_INDEX) & (LZ_MAX_LENGTH - 1)) + LZ_MIN_COPY; -#ifdef DETAIL - DebugPrintf("%08x %08x-%08x LEN=%d\n", src, dst - 1, dst - len, len); -#endif - // ƒ\[ƒXƒf[ƒ^‚ðã‘‚«‚µ‚Ä‚µ‚Ü‚¤‚©ƒ`ƒFƒbƒN - dst -= len; - - if (dst < 0) - { - ErrorPrintf("System error in CheckOverwrite???\n"); - exit(-1); // Panic!! - } - - if (dst < src) - { - // ã‘‚«‚µ‚Ä‚µ‚Ü‚¤‚Ȃ爳k‚ÍŒ»Ý‚̂Ƃ±‚ë‚܂łŎ~‚ß‚é - *orig_safe = dst; - *cmprs_safe = src; - return FALSE; - } - } - else - { - // ”ñˆ³kƒf[ƒ^‚Ȃ炻‚̂܂܃Rƒs[‚Ȃ̂Š- // ”j‰ó‚𔺂Ȃ¤ã‘‚«‚Í‹N‚±‚ç‚È‚¢ - src--; - dst--; -#ifdef DETAIL - DebugPrintf("%08x %08x CHR=0x%02x\n", src, dst, cmprs_buffer[src]); -#endif - } - flag <<= 1; - } - } - } - *orig_safe = 0; - *cmprs_safe = 0; - return TRUE; -} diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.h b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.h deleted file mode 100644 index 9b141d6c..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/compress.h +++ /dev/null @@ -1,55 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: compress.h - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef COMPRESS_H__ -#define COMPRESS_H__ -#include "common.h" - -//--------------------------------------------------------- -typedef struct -{ - u32 bufferTop:24; // ˆ³k—̈æI’[ - 擪 - u32 compressBottom:8; // ˆ³k—̈æI’[ - ƒf[ƒ^I’[ - u32 originalBottom; // “WŠJ—̈æI’[ - ˆ³k—̈æI’[ -} -CompFooter; - -//--------------------------------------------------------- -int Compress(u8 *buffer, int buffer_size); - -#define COMPRESS_LARGER_ORIGINAL (-1) -#define COMPRESS_FATAL_ERROR (-2) - - -// loader area -#define LOADER_SIZE_ARM9 (16*1024) -#define LOADER_SIZE_ARM7 ( 1*1024) - -// LZ compress parameters -#define LZ_BIT_INDEX 12 // 12bit offset -#define LZ_BIT_LENGTH 4 // 4bit length -#define LZ_MAX_INDEX (1 << LZ_BIT_INDEX) -#define LZ_MAX_LENGTH (1 << LZ_BIT_LENGTH) - -#define LZ_MIN_COPY 3 -#define LZ_MAX_COPY (LZ_MIN_COPY+LZ_MAX_LENGTH-1) -#define LZ_MAX_DIC_LENGTH (LZ_MIN_COPY+LZ_MAX_INDEX-1) - -// macro -#define MIN(a,b) ((a)<(b)?(a):(b)) -#define ROUNDUP4(x) (((x)+3)&~3) - -#endif diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.c b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.c deleted file mode 100644 index 871c6e46..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.c +++ /dev/null @@ -1,314 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: file.c - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include -#include // calloc() -#include // free(), exit() -#include // stat() -#include // strlen/strdup/strcpy -#include // va_start(),va_end() -#include // unlink() -#include "file.h" - - -/*---------------------------------------------------------------------------* - Name: ReadFile - - Description: ƒtƒ@ƒCƒ‹‚̓ǂݞ‚Ý ƒoƒbƒtƒ@‚ÌŠm•Û - *---------------------------------------------------------------------------*/ -int ReadFile(const char *filename, u8 **buffer) -{ - FILE *fp; - struct stat filestat; - int filesize; - - fp = NULL; - *buffer = NULL; - - if (filename == NULL) - { - ErrorPrintf("Not specified filename\n"); - goto error; - } - - /* Open file */ - if (stat(filename, &filestat) || !S_ISREG(filestat.st_mode) || - NULL == (fp = fopen(filename, "rb"))) - { - ErrorPrintf("Cannot open file '%s'\n", filename); - goto error; - } - - /* Read file */ - filesize = filestat.st_size; - if (NULL == (*buffer = malloc(filesize))) - { - ErrorPrintf("Cannot allocate memory size=%d\n", filesize); - goto error; - } - - if (filesize != fread(*buffer, sizeof(u8), filesize, fp)) - { - ErrorPrintf("Cannot read file '%s'\n", filename); - goto error; - } - - DebugPrintf("%p %8d bytes ReadFile \'%s\'\n", *buffer, filesize, filename); - - /* Close file */ - fclose(fp); - return filesize; - - error: - if (*buffer) - free(*buffer); - if (fp) - fclose(fp); - return -1; -} - - -/*---------------------------------------------------------------------------* - Name: WriteFile - - Description: ƒtƒ@ƒCƒ‹‚Ì쬑‚«ž‚Ý - *---------------------------------------------------------------------------*/ -int WriteFile(const char *filename, u8 *buffer, int size) -{ - FILE *fp; - - DebugPrintf("%p %8d bytes WriteFile \'%s\'\n", buffer, size, filename); - - /* Open file */ - if (NULL == (fp = fopen(filename, "wb"))) - { - ErrorPrintf("Cannot open file '%s'\n", filename); - return -1; - } - - /* Write file */ - if (size != fwrite(buffer, sizeof(u8), size, fp)) - { - ErrorPrintf("Cannot write file '%s'\n", filename); - (void)fclose(fp); - (void)unlink(filename); - return -1; - } - - /* Close file */ - if (0 > fclose(fp)) - { - ErrorPrintf("Cannot close file '%s'\n", filename); - (void)unlink(filename); - return -1; - } - return size; -} - -/*---------------------------------------------------------------------------* - Name: CopyBuffer - - Description: ƒoƒbƒtƒ@‚̃Rƒs[ - *---------------------------------------------------------------------------*/ -void CopyBuffer(const u8 *src, u8 *dst, int size) -{ - int i; - - if ((unsigned int)src > (unsigned int)dst) - { - for (i = 0; i < size; i++) - { - dst[i] = src[i]; - } - } - else - { - for (i = size - 1; i >= 0; i--) - { - dst[i] = src[i]; - } - } - return; -} - -/*---------------------------------------------------------------------------* - Name: GetDirName - - Description: ƒtƒ@ƒCƒ‹–¼‚̃fƒBƒŒƒNƒgƒŠ–¼‚ðŽæ“¾‚·‚é - *---------------------------------------------------------------------------*/ -char *GetDirName(const char *path) -{ - int i; - char *new_path; - - for (i = strlen(path) - 1; i >= 0; i--) - { - if (path[i] == '/' || path[i] == '\\') - { - if (NULL != (new_path = strdup(path))) - { - new_path[i] = '\0'; - } - return new_path; - } - if (path[i] == ':') - { - if (NULL != (new_path = malloc(i + 3))) - { - strncpy(new_path, path, i); - strcpy(new_path + i, ":."); - } - return new_path; - } - } - - return strdup("."); -} - -/*---------------------------------------------------------------------------* - Name: DebugPrintf - - Description: Debug o—Í—p Printf - *---------------------------------------------------------------------------*/ -BOOL bDebugMode = FALSE; - -void DebugPrintf(const char *fmt, ...) -{ - va_list va; - - if (bDebugMode) - { - va_start(va, fmt); - vfprintf(stderr, fmt, va); - va_end(va); - } -} - -/*---------------------------------------------------------------------------* - Name: ConsolePrintf - - Description: ’ÊíƒRƒ“ƒ\[ƒ‹o—Í—p Printf - *---------------------------------------------------------------------------*/ -void ConsolePrintf(const char *fmt, ...) -{ - va_list va; - - va_start(va, fmt); - vfprintf(stdout, fmt, va); - va_end(va); -} - -/*---------------------------------------------------------------------------* - Name: ErrorPrintf - - Description: Error o—Í—p Printf - *---------------------------------------------------------------------------*/ -void ErrorPrintf(const char *fmt, ...) -{ - va_list va; - - fprintf(stderr, "Error: "); - va_start(va, fmt); - vfprintf(stderr, fmt, va); - va_end(va); -} - - -/*---------------------------------------------------------------------------* - Name: StrDup - - Description: ƒGƒ‰[ƒnƒ“ƒhƒŠƒ“ƒO•ŒÃ‚¢’l‚Ì free •t‚« strdup ŠÖ” - *---------------------------------------------------------------------------*/ -char *StrDup(char *old, char *new) -{ - if (old) - { - free(old); - } - if (new && NULL == (new = strdup(new))) - { - ErrorPrintf("Cannot allocate memory\n"); - exit(1); - } - return new; -} - - -/*---------------------------------------------------------------------------* - Name: StrCat - - Description: •¶Žš—ñ‚̘AŒ‹ - *---------------------------------------------------------------------------*/ -char *StrCat(int num, ...) -{ - va_list va; - int i; - int size; - char *result; - - va_start(va, num); - size = 0; - for (i = 0; i < num; i++) - { - size += strlen(va_arg(va, char *)); - } - va_end(va); - - if (NULL == (result = malloc(size + 1))) - { - ErrorPrintf("Cannot allocate memory\n"); - exit(1); - } - - va_start(va, num); - result[0] = '\0'; - for (i = 0; i < num; i++) - { - (void)strcat(result, va_arg(va, char *)); - } - va_end(va); - - return result; -} - -//--------------------------------------------------------------------------- -// ƒpƒX•¶Žš—ñ‚©‚çƒtƒ@ƒCƒ‹–¼•”•ª‚̃|ƒCƒ“ƒ^‚ðŽæ“¾‚µAŠg’£Žq‚ðí‚é -// @param path ƒpƒX -// @return ƒtƒ@ƒCƒ‹–¼‚̃|ƒCƒ“ƒ^ -//--------------------------------------------------------------------------- -char *StrCutFname(char *path) -{ - char *search_tmp; - - if (path == NULL) - { - return NULL; - } - - if ((search_tmp = strrchr(path, '/')) != NULL) - { - path = (search_tmp + 1); - } - if ((search_tmp = strrchr(path, '\\')) != NULL) - { - path = (search_tmp + 1); - } - if ((search_tmp = strrchr(path, '.')) != NULL) - { - *search_tmp = '\0'; - } - return path; -} diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.h b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.h deleted file mode 100644 index b266b0ff..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/file.h +++ /dev/null @@ -1,35 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compstatic - File: file.h - - Copyright 2003 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef FILE_H__ -#define FILE_H__ - -#include "common.h" - -int ReadFile(const char *filename, u8 **buffer); -int WriteFile(const char *filename, u8 *buffer, int size); -void CopyBuffer(const u8 *src, u8 *dst, int size); -char *GetDirName(const char *filename); -void DebugPrintf(const char *fmt, ...); -void ErrorPrintf(const char *fmt, ...); -void ConsolePrintf(const char *fmt, ...); -char *StrDup(char *old, char *new); -char *StrCat(int num, ...); -char *StrCutFname(char *path); - -extern BOOL bDebugMode; - -#endif //FILE_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/main.c b/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/main.c deleted file mode 100644 index f7ec6980..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/compBLZ_modified/main.c +++ /dev/null @@ -1,171 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - tools - compBLZ - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#include -#include -#include -#include // getopt() -#include "file.h" -#include "compress.h" - -extern const unsigned long SDK_DATE_OF_LATEST_FILE; - -static void usage(void); - -/*---------------------------------------------------------------------------* - Name: main - - Description: - *---------------------------------------------------------------------------*/ -int main(int argc, char *argv[]) -{ - int n; - int result; - int iptfilesize; - - char* optfilename; - char* suffix; - u8* filebuf; - - BOOL optfname_flag = FALSE; // if optfilename input, this flag is true. - - optfilename = suffix = NULL; - - while ((n = getopt(argc, argv, "o:e:dhv")) != -1) - { - switch (n) - { - case 'o': // output file name - optfilename = optarg; - optfname_flag = TRUE; - break; - - case 'e': - suffix = optarg; - break; - - case 'd': // Show debug message - bDebugMode = TRUE; - break; - - case 'h': - case 'v': - default: - usage(); // Never returns - break; - } - - DebugPrintf("option -%c: %s\n", n, optarg ? optarg : "No ARG"); - } - - argc -= optind; - argv += optind; - - if (bDebugMode) - { - int i; - - DebugPrintf("argc=%d optind=%d\n", argc, optind); - for (i = 0; i < argc; i++) - { - DebugPrintf("argv[%d] = [%s]\n", i, argv[i]); - } - } - - if (argc == 1) - { - if (optfilename == NULL) - { - optfilename = argv[0]; - } - iptfilesize = ReadFile(argv[0], &filebuf); - } - else - { - usage(); // Never returns - } - - if (iptfilesize < 0) - { - ConsolePrintf("exit...\n"); - return 1; - } - - if ((result = Compress(filebuf, iptfilesize)) < 0) - { - switch (result) - { - case COMPRESS_LARGER_ORIGINAL: - ConsolePrintf("Inputdata ..... Not compressed (enlarged or same size as before)\n"); - break; - case COMPRESS_FATAL_ERROR: - ConsolePrintf("Fatal error occured\n"); - break; - } - ConsolePrintf("exit...\n"); - return 1; - } - - // cut file path and suffix of input file - if (!optfname_flag) - { - optfilename = StrCutFname(optfilename); - } - - // create output filename - if (suffix == NULL) - { - optfilename = StrCat(2, optfilename, "_BLZ.bin"); - } - else - { - optfilename = StrCat(2, optfilename, suffix); - } - - // output file - if (WriteFile(optfilename, filebuf, result) < 0) - { - ConsolePrintf("exit...\n\n"); - return 1; - } - - ConsolePrintf("Inputdata ..... Compressed ... %9d -> %9d\n", iptfilesize, result); - - return 0; -} - -/*---------------------------------------------------------------------------* - Name: usage - - Description: - *---------------------------------------------------------------------------*/ -static void usage(void) -{ - fprintf(stderr, - "TWL-SDK Development Tool - compBLZ - Compress data\n" - "Build %lu\n" - "\n" - "Usage: compBLZ [-d] [-o outputFile] [-e suffix] inputFile\n" - "\n" - " Compress data (backward LZ)\n" - "\n" - " -o outputFile FILENAME for output file (default:input filename)\n" - " -e suffix SUFFIX for output file (default:\"_BLZ\")\n" - " -d Show debug messages (for test purpose)\n" - " -h Show this message\n" "\n", SDK_DATE_OF_LATEST_FILE); - - exit(1); -} diff --git a/build/tests/compressSharedFontLoad/compSharedFont/genFontTable.plx b/build/tests/compressSharedFontLoad/compSharedFont/genFontTable.plx deleted file mode 100644 index 69cd3c09..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/genFontTable.plx +++ /dev/null @@ -1,261 +0,0 @@ -#!/usr/bin/perl - -# -# To Do -# EFont info table ‚Ì padding ‚ðˆ³kŒãƒtƒ@ƒCƒ‹ƒTƒCƒY‚ðŠi”[‚·‚éƒGƒ“ƒgƒŠ‚É•ÏX -# Eƒtƒ@ƒCƒ‹ƒTƒCƒY‚ðŽæ“¾‚µ‚Ä‹l‚ßž‚Þˆ—‚ð’ljÁ -# ESHA-1ƒnƒbƒVƒ…‚ð‚‚¯‚é‘O‚Ɉ³k‚·‚é -# - -###################################################################### -# genFontTable.pl -# -# generate Secure Shared Font Data Table -# -# [[ HEADER FORMAT ]] -# security code (128 bytes) : RSA signature of Header -# -# Header ( 32 bytes) -# TimeStamp ( 4 bytes) : date %y%m%d%H -# number ( 2 bytes) : number of font files -# padding ( 6 bytes) : -# padding ( 20 bytes) : SHA1 digest of Font info table -# -# Font info table ( 64 bytes * number) -# fileName ( 32 bytes) : font file name -# comp_length ( 4 bytes) : length of the compression file -# file offset ( 4 bytes) : file offset of Font data -# length ( 4 bytes) : length of file (bytes) -# digest ( 20 bytes) : SHA1 digest of Font data -# -# note: each section image is aligned to 32 bytes. -# -###################################################################### - -use POSIX 'strftime'; -use File::Basename; - -if ($#ARGV < 2) { - printf STDOUT ("Usage: %s [genFontTable] timestamp [Target font files...]\n", $0); - exit(-1); -} - -my $outFile = "TWLFontTable.dat"; -my $infoFile = "info.bin"; -my $headerFile = "header.bin"; -my $digestFile = "sha1.bin"; -my $signFile = "sign.bin"; -my $tempFile = "temp.bin"; -my $compprog = "./compBLZ_modified/bin/compBLZ.exe"; # ˆ³kƒvƒƒOƒ‰ƒ€ -my $compoption = "-e \"\""; -#my $compprog = "./ntrcomp/gcc/ntrcomp.exe"; -#my $compoption = "-h8 -A32 -s"; - -# ŒãŽn–– -sub deleteTemp { - system ("rm -f $infoFile"); - system ("rm -f $headerFile"); - system ("rm -f $digestFile"); - system ("rm -f $signFile"); - system ("rm -f $tempFile"); -} - -# ŠÂ‹«•Ï”‚©‚çSDK‚̃‹[ƒg‚ðƒT[ƒ`‚µ‚Ä(ntrcomp‚ÌꊓÁ’è‚É•K—v) -#foreach ( sort keys ( %ENV ) ){ -# if ($_ =~ m/TWLSDK_ROOT/s) { -# $SDKROOT = $ENV{$_}; -# } -#} -#printf "TWLSDK_ROOT is ${SDKROOT}\n"; - -my $signSize = 0x80; -my $headerSize = 0x20; -my @files; - -# —v‘f”ŽZo -my $num = 0; -foreach ( @ARGV ) { - next if( $_ eq $ARGV[0] ); - $files[ $num ] = $_; - $num++; -} - -# î•ñƒe[ƒuƒ‹‚Ìo—Í -{ - my $elementSize = 0x40; - my $fileNameMax = 0x20; - my $padLen = 0x04; - # offset length = 0x04; - # file length = 0x04; - my $sha1Len = 0x14; - - open INFO, ">$infoFile" or die; - binmode INFO; - - # ƒIƒtƒZƒbƒgŽZo - my $offset = $signSize + $headerSize + $num * $elementSize; - if( ( $offset % 32 ) > 0 ) { $offset += 32 - ( $offset % 32 ); } - - printf "---------------------------------------------------------------\n"; - printf "filename\toffset \torig_size\tcompressed_size\n"; - foreach ( @files ) { - # NULLŽw’莞‚ÍANULLo—Í - if( "NULL" eq basename( $_ ) ) { - syswrite( INFO, pack( "x$elementSize") ); - next; - } - - # ƒtƒ@ƒCƒ‹ƒl[ƒ€‚Ìo—Í - if( !( -e $_ ) ) { - close( INFO ); - deleteTemp(); - die "file not exist. : $_\n"; - } - my $name = basename( $_ ); - if( length $name >= $fileNameMax ) { - close( INFO ); - deleteTemp(); - die "file name length must be smaller than $fileNameMax. : $_\n"; - } - my $data = pack( "a$fileNameMax", $name ); - syswrite( INFO, $data, $fileNameMax ); - - # ˆ³k - # SDK‚ÌcompBLZ.exe‚͈ø”ƒoƒO‚ª‚ ‚邽‚߃[ƒJƒ‹‚ÉC³”Å‚ð“ü‚ê‚Ä‚¨‚­ - my $compfile = "$_.comp"; - system ("${compprog} $compoption $_ -o $compfile"); - - # ƒpƒfƒBƒ“ƒO‚Ìo—Í - #syswrite( INFO, pack( "x$padLen") ); - - # ˆ³kƒtƒ@ƒCƒ‹’·‚ðo—Í(‚à‚Æ‚à‚Æ‚Ípadding) - $data = pack( "L", -s $compfile ); - syswrite( INFO, $data, 4 ); - - # ƒtƒ@ƒCƒ‹ƒIƒtƒZƒbƒg‚Ìo—Í - $data = pack( "L", $offset ); - syswrite( INFO, $data, 4 ); - - # ƒtƒ@ƒCƒ‹’·‚Ìo—Í - $data = pack( "L", -s $_ ); - syswrite( INFO, $data, 4 ); - - # ƒtƒ@ƒCƒ‹‚ÌSHA1ƒnƒbƒVƒ…‚Ìo—Í - { - my $digest; - #system ("openssl dgst -sha1 -binary -out $digestFile $_"); - system ("openssl dgst -sha1 -binary -out $digestFile $compfile"); # ˆ³kŒã‚̃tƒ@ƒCƒ‹‚ɃnƒbƒVƒ…‚ð‚‚¯‚é - open DIGEST, $digestFile or die; - binmode DIGEST; - sysread( DIGEST, $digest, $sha1Len ); - close DIGEST; - syswrite( INFO, $digest, $sha1Len ); - } - - printf "%s\t0x%08x\t0x%08x\t0x%08x\n", $_, $offset, -s $_, -s $compfile; - - # ƒIƒtƒZƒbƒg‰ÁŽZ - #$offset += -s $_; - $offset += -s $compfile; - if( ( $offset % 32 ) > 0 ) { $offset += 32 - ( $offset % 32 ); } - } - close INFO; - printf "---------------------------------------------------------------\n"; -} - -# ƒwƒbƒ_‚Ìo—Í -{ - # timestampLen = 0x08; - # elementNumLen = 0x02; - my $padLen = 0x06; - my $sha1Len = 0x14; - - open HEADER, ">$headerFile" or die; - binmode HEADER; - - # ƒ^ƒCƒ€ƒXƒ^ƒ“ƒv‚Ìo—Í -# my $timestamp = strftime "%y%m%d%H", localtime; - my $timestamp = $ARGV[ 0 ]; - printf "timestamp = %s\n", $timestamp; - syswrite( HEADER, pack( "N", unpack( "L", pack( "H8", $timestamp ) ) ) ); - - # —v‘f”‚Ìo—Í - syswrite( HEADER, pack( "S", $num ) ); - - # ƒpƒfƒBƒ“ƒO‚Ìo—Í - syswrite( HEADER, pack( "x$padLen") ); - - # î•ñƒe[ƒuƒ‹‚ÌSHA1ƒnƒbƒVƒ…‚Ìo—Í - { - my $digest; - system ("openssl dgst -sha1 -binary -out $digestFile $infoFile"); - open DIGEST, $digestFile or die; - binmode DIGEST; - sysread( DIGEST, $digest, $sha1Len ); - close DIGEST; - syswrite( HEADER, $digest, $sha1Len ); - } - close HEADER; -} - -# ŠÂ‹«•Ï”ƒT[ƒ` -foreach ( sort keys ( %ENV ) ){ - if ($_ =~ m/TWL_IPL_RED_PRIVATE_ROOT/s) { - $KEYROOT = $ENV{$_}; - } -} -if (!$KEYROOT) { - deleteTemp(); - die "No TWL_IPL_RED_PRIVATE_ROOT is found.\n"; -} - -# ƒwƒbƒ_‚Ö‚Ì–¼•t‰Á -{ - system ( "openssl dgst -sha1 -binary -out $digestFile $headerFile" ); - system ( "openssl rsautl -sign -in $digestFile -inkey $KEYROOT/keys/rsa/private_sharedFont.der -keyform DER -out $signFile" ); - system ( "cat $signFile $headerFile >$tempFile" ); - system ( "cat $tempFile $infoFile >$outFile" ); - deleteTemp(); -} - - -# ƒtƒHƒ“ƒg‚Ìo—Í -{ - open FONTTABLE, ">>$outFile" or die; - binmode FONTTABLE; - - { - # ƒpƒfƒBƒ“ƒOo—Í - my $fileLen = -s $outFile; - my $padNum = ( $fileLen % 32 ) ? ( 32 - ( $fileLen % 32 ) ) : 0; - my $padding = pack( "x$padNum" ); - syswrite( FONTTABLE, $padding, $padNum ); - } - - foreach ( @files ) { - # NULLŽw’莞‚̓XƒLƒbƒv - if( "NULL" eq basename( $_ ) ) { - next; - } - - # ƒtƒHƒ“ƒgo—Í - #my $fileLen = -s $_; - #open TEST, $_ or die; - my $compfile = "$_.comp"; # ˆ³kƒtƒ@ƒCƒ‹‚ðo—Í - $fileLen = -s $compfile; - open TEST, $compfile or die; - binmode TEST; - sysread ( TEST, $buffer, $fileLen ); - close TEST; - syswrite( FONTTABLE, $buffer, $fileLen ); - - # ƒpƒfƒBƒ“ƒOo—Í - my $padNum = ( $fileLen % 32 ) ? ( 32 - ( $fileLen % 32 ) ) : 0; - my $padding = pack( "x$padNum" ); - syswrite( FONTTABLE, $padding, $padNum ); - - # ˆ³kƒtƒ@ƒCƒ‹‚ðíœ - system ("rm -rf $compfile"); - } - close FONTTABLE; -} diff --git a/build/tests/compressSharedFontLoad/compSharedFont/makeboot.bat b/build/tests/compressSharedFontLoad/compSharedFont/makeboot.bat deleted file mode 100644 index 2ec4818b..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/makeboot.bat +++ /dev/null @@ -1,18 +0,0 @@ -rem -rem ***** SD‹N“®ƒtƒ@ƒCƒ‹ì¬ƒc[ƒ‹ ***** -rem -rem sdmc_launcher_writer.gcd ‚ª‹N“®ƒtƒ@ƒCƒ‹‚Æ‚µ‚Ä menu.srl ‚µ‚©Žó‚¯•t‚¯‚È‚¢‚̂Š-rem ˆø”‚Æ‚µ‚Ä—^‚¦‚½ƒtƒ@ƒCƒ‹‚ð menu.srl ‚Æ‚µ‚ăRƒs[‚·‚é -rem - -if "%1" equ "" ( - echo ޏ”s‚µ‚Ü‚µ‚½B - echo ƒfƒBƒŒƒNƒgƒŠ‚²‚ƃhƒ‰ƒbƒOƒAƒ“ƒhƒhƒƒbƒv‚µ‚Ä‚­‚¾‚³‚¢B - echo: - goto end -) - -set progdir=%~dp0 - -del %progdir%\menu.srl -copy %1 %progdir%\menu.srl diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/@ b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/@ deleted file mode 100644 index ae91d2ff..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/@ +++ /dev/null @@ -1 +0,0 @@ -NINTENDO PRIVATE diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile deleted file mode 100644 index cb219807..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - build - tools - ntrcomp -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = NITRO - -export TWLSDK_PLATFORM = NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -SUBDIRS += gcc - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile.BAK b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile.BAK deleted file mode 100644 index 5d41f479..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/Makefile.BAK +++ /dev/null @@ -1,25 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - build - tools - ntrcomp -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -SUBDIRS += gcc - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile deleted file mode 100644 index 981c2ad2..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - build - tools - ntrcomp - gcc -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -OBJECTS = ntcompress_main.o ntcompress_test.o nitroCompLib.o multipleCompLib.o rangeCoder.o - -WIN32 ?= 1 - -ifneq ($(WIN32),0) -TARGETS = ntrcomp.exe -CC_X86 := gcc -mno-cygwin -else -TARGETS = ntrcomp -CC_X86 := gcc -endif - -LDIRT_CLEAN = $(OBJECTS) $(TARGETS) - -#INSTALL_DIR = $(NITRO_INSTALL_TOOLSDIR)/bin -#INSTALL_TARGETS = $(TARGETS) - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(OBJECTS) - $(CC_X86) $+ -o $@ - -ntcompress_main.o: ../src/ntcompress_main.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -ntcompress_test.o: ../src/ntcompress_test.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -nitroCompLib.o: ../src/nitroCompLib.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -multipleCompLib.o: ../src/multipleCompLib.c ../src/multipleCompLib.h - $(CC_X86) -c $< -o $@ -rangeCoder.o: ../src/rangeCoder.c ../src/rangeCoder.h - $(CC_X86) -c $< -o $@ - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile.BAK b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile.BAK deleted file mode 100644 index c1cde1a4..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/gcc/Makefile.BAK +++ /dev/null @@ -1,59 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - build - tools - ntrcomp - gcc -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = NITRO - -include $(TWLSDK_ROOT)/build/buildtools/commondefs - -OBJECTS = ntcompress_main.o ntcompress_test.o nitroCompLib.o multipleCompLib.o rangeCoder.o - -WIN32 ?= 1 - -ifneq ($(WIN32),0) -TARGETS = ntrcomp.exe -CC_X86 := gcc -mno-cygwin -else -TARGETS = ntrcomp -CC_X86 := gcc -endif - -LDIRT_CLEAN = $(OBJECTS) $(TARGETS) - -INSTALL_DIR = $(NITRO_INSTALL_TOOLSDIR)/bin -INSTALL_TARGETS = $(TARGETS) - -#---------------------------------------------------------------------------- -# build -#---------------------------------------------------------------------------- -do-build: $(TARGETS) - -$(TARGETS): $(OBJECTS) - $(CC_X86) $+ -o $@ - -ntcompress_main.o: ../src/ntcompress_main.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -ntcompress_test.o: ../src/ntcompress_test.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -nitroCompLib.o: ../src/nitroCompLib.c ../src/nitroCompLib.h - $(CC_X86) -c $< -o $@ -multipleCompLib.o: ../src/multipleCompLib.c ../src/multipleCompLib.h - $(CC_X86) -c $< -o $@ -rangeCoder.o: ../src/rangeCoder.c ../src/rangeCoder.h - $(CC_X86) -c $< -o $@ - -include $(TWLSDK_ROOT)/build/buildtools/modulerules.x86 - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.c deleted file mode 100644 index fcb44e89..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.c +++ /dev/null @@ -1,2494 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: multipleCompLib.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "multipleCompLib.h" - -#undef _DEBUG -#ifdef _DEBUG - -#endif - -#define LH_CODE_HEADER (0x40) -#define LRC_CODE_HEADER (0x50) - -#define BLEND_COMP_FLAG 1 - -#define LH_ENC_OFFSET_WIDTH /* ‚±‚Ìݒ肪—LŒø‚ÈꇂɂÍoffset’l‘S‘̂ł͂Ȃ­offset‚Ìbit’·‚𕄆‰»‚·‚é */ - -#if !defined(LH_ENC_OFFSET_WIDTH) - #define LH_OFFSET_BITS 12 - #define LH_OFFSET_TABLE_BITS LH_OFFSET_BITS -#else // if defined(LH_ENC_OFFSET_WIDTH) - #define LH_OFFSET_BITS 15 - #define LH_OFFSET_TABLE_BITS 5 -#endif - -#define LENGTH_BITS (8 + BLEND_COMP_FLAG) -#define OFFSET_SIZE_MAX (1 << 15) - -#define REVERSE_SEARCH - -typedef struct -{ - u16 WindowPos; // Œ»Ý‚̃Xƒ‰ƒCƒhŽ«‘‚Ìæ“ªˆÊ’u - u16 WindowLen; // Œ»Ý‚̃Xƒ‰ƒCƒhŽ«‘‚̃TƒCƒY - - s16 LZOffsetTable[ OFFSET_SIZE_MAX ]; // ƒIƒtƒZƒbƒgƒf[ƒ^‚̃e[ƒuƒ‹ - #ifdef REVERSE_SEARCH - s16 LZRevOffsetTable[ OFFSET_SIZE_MAX ]; // ƒIƒtƒZƒbƒgƒf[ƒ^‚Ì‹t‡ƒe[ƒuƒ‹ - #endif - s16 LZByteTable[ 256 ]; // ƒf[ƒ^‚Ìæ“ªƒe[ƒuƒ‹ - s16 LZEndTable [ 256 ]; // ƒf[ƒ^‚ÌI’[ƒe[ƒuƒ‹ - u8 OffsetBits; // ƒIƒtƒZƒbƒg‚ð•\Œ»‚·‚éˆ×‚̃rƒbƒg” -} LZCompressInfo; - -static LZCompressInfo gLZWork; - -INLINE u32 -RoundUp( u32 value, u32 base ) -{ - return (value + (base - 1)) & ~(base - 1); -} - -/*---------------------------------------------------------------------------* - Name: LZInitTable - Description: - Arguments: work - Returns: None. - *---------------------------------------------------------------------------*/ -static void -LZInitTable( LZCompressInfo* info ) -{ - u16 i; - - for ( i = 0; i < 256; i++ ) - { - info->LZByteTable[i] = -1; - info->LZEndTable[i] = -1; - } - info->WindowPos = 0; - info->WindowLen = 0; -} - -/*---------------------------------------------------------------------------* - Name: SlideByte - Description: Ž«‘‚ð1ƒoƒCƒgƒXƒ‰ƒCƒh - Arguments: *srcp - work - Returns: None. - *---------------------------------------------------------------------------*/ -static void -SlideByte( LZCompressInfo* info, const u8 *srcp ) -{ - s16 offset; - u8 in_data = *srcp; - u16 insert_offset; - -#if defined( REVERSE_SEARCH ) // ’Tõ‡‚ð‹t‚É‚·‚é(V‚µ‚¢ƒf[ƒ^‚ð—Dæ) - s16 *const LZByteTable = info->LZEndTable; - s16 *const LZEndTable = info->LZByteTable; - s16 *const LZOffsetTable = info->LZRevOffsetTable; - s16 *const LZRevOffsetTable = info->LZOffsetTable; -#else - s16 *const LZByteTable = info->LZByteTable; - s16 *const LZEndTable = info->LZEndTable; - s16 *const LZOffsetTable = info->LZOffsetTable; -#endif - const u16 windowPos = info->WindowPos; - const u16 windowLen = info->WindowLen; - const u32 OFFSET_SIZE = (1 << info->OffsetBits); - - if ( windowLen == OFFSET_SIZE ) - { - u8 out_data = *(srcp - OFFSET_SIZE); - if ((LZByteTable[out_data] = LZOffsetTable[LZByteTable[out_data]]) == -1) - { - LZEndTable[out_data] = -1; - } - else - { - #if defined( REVERSE_SEARCH ) - LZRevOffsetTable[LZByteTable[out_data]] = -1; - #endif - } - insert_offset = windowPos; - } - else - { - insert_offset = windowLen; - } - - offset = LZEndTable[in_data]; - if (offset == -1) - { - LZByteTable[in_data] = insert_offset; - #if defined( REVERSE_SEARCH ) - LZRevOffsetTable[insert_offset] = -1; - #endif - } - else - { - #if defined( REVERSE_SEARCH ) - LZRevOffsetTable[insert_offset] = offset; - #endif - LZOffsetTable[offset] = insert_offset; - } - LZEndTable[in_data] = insert_offset; - LZOffsetTable[insert_offset] = -1; - - if (windowLen == OFFSET_SIZE) - { - info->WindowPos = (u16)((windowPos + 1) % OFFSET_SIZE); - } - else - { - info->WindowLen++; - } -} - -/*---------------------------------------------------------------------------* - Name: LZSlide - Description: - Arguments: *srcp - n - Returns: None. - *---------------------------------------------------------------------------*/ -static void -LZSlide( LZCompressInfo* info, const u8 *srcp, u32 n ) -{ - u32 i; - - for (i = 0; i < n; i++) - { - SlideByte(info, srcp++); - } -} - -//-------------------------------------------------------- -// LZ77ˆ³k‚ŃXƒ‰ƒCƒh‘‹‚Ì’†‚©‚çÅ’·ˆê’v—ñ‚ðŒŸõ‚µ‚Ü‚·B -// Arguments: startp ƒf[ƒ^‚ÌŠJŽnˆÊ’u‚ðŽ¦‚·ƒ|ƒCƒ“ƒ^ -// nextp ŒŸõ‚ðŠJŽn‚·‚éƒf[ƒ^‚̃|ƒCƒ“ƒ^ -// remainSize Žc‚èƒf[ƒ^ƒTƒCƒY -// offset ˆê’v‚µ‚½ƒIƒtƒZƒbƒg‚ðŠi”[‚·‚é—̈æ‚ւ̃|ƒCƒ“ƒ^ -// Return : ˆê’v—ñ‚ªŒ©‚‚©‚Á‚½ê‡‚Í TRUE -// Œ©‚‚©‚ç‚È‚©‚Á‚½ê‡‚Í FALSE -//-------------------------------------------------------- -static u16 -SearchLZ( const LZCompressInfo* info, const u8 *nextp, u32 remainSize, u16 *offset, u16 minOffset, u32 maxLength ) -{ - const u8 *searchp; - const u8 *headp, *searchHeadp; - u16 currOffset; - u16 currLength = 2; - u16 tmpLength; - s32 w_offset; - const s16 * const LZOffsetTable = info->LZOffsetTable; - const u16 windowPos = info->WindowPos; - const u16 windowLen = info->WindowLen; - - if (remainSize < 3) - { - return 0; - } - - w_offset = info->LZByteTable[ *nextp ]; - - while (w_offset != -1) - { - if (w_offset < windowPos) - { - searchp = nextp - windowPos + w_offset; - } - else - { - searchp = nextp - windowLen - windowPos + w_offset; - } - - /* –³‚­‚Ä‚à—Ç‚¢‚ªA‹Í‚©‚É‚‘¬‰»‚·‚é */ - if (*(searchp + 1) != *(nextp + 1) || *(searchp + 2) != *(nextp + 2)) - { - w_offset = LZOffsetTable[ w_offset ]; - continue; - } - - if (nextp - searchp < minOffset) - { - // VRAM‚Í2ƒoƒCƒgƒAƒNƒZƒX‚Ȃ̂Š(VRAM‚©‚çƒf[ƒ^‚ð“Ç‚Ýo‚·ê‡‚ª‚ ‚邽‚ß)A - // ŒŸõ‘ÎÛƒf[ƒ^‚Í2ƒoƒCƒg‘O‚©‚ç‚̃f[ƒ^‚É‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B - // - // ƒIƒtƒZƒbƒg‚Í12ƒrƒbƒg‚ÅŠi”[‚³‚ê‚邽‚ßA4096ˆÈ‰º - #if defined( REVERSE_SEARCH ) - w_offset = LZOffsetTable[ w_offset ]; - continue; - #else - break; - #endif - } - tmpLength = 3; - searchHeadp = searchp + 3; - headp = nextp + 3; - - while (((u32)(headp - nextp) < remainSize) && (*headp == *searchHeadp)) - { - headp++; - searchHeadp++; - tmpLength++; - - // ƒf[ƒ^’·‚Í8ƒrƒbƒg‚ÅŠi”[‚³‚ê‚邽‚ßA258ˆÈ‰º (3‚̉º‘Ê‚ð‚Í‚©‚¹‚é) - if (tmpLength == maxLength) - { - break; - } - } - if (tmpLength > currLength) - { - // ő咷ƒIƒtƒZƒbƒg‚ðXV - currLength = tmpLength; - currOffset = (u16)((u32)nextp - (u32)searchp); - if (currLength == maxLength) - { - // ˆê’v’·‚ªÅ‘å‚Ȃ̂ÅAŒŸõ‚ðI—¹‚·‚éB - break; - } - } - w_offset = LZOffsetTable[w_offset]; - } - - if (currLength < 3) - { - return 0; - } - *offset = currOffset; - return currLength; -} - -/*---------------------------------------------------------------------------* - Name: LZCompWrite - - Description: - - Arguments: *srcp - size - *dstp - lzSearchOffset - - Returns: - *---------------------------------------------------------------------------*/ -static u32 -LZCompWrite_( const u8 *srcp, s32 size, u8 *dstp, u8 lzSearchOffset, u8 offsetBits ) -{ - u32 LZDstCount = 0; // ˆ³kƒf[ƒ^‚̃oƒCƒg” - u8 LZCompFlags; // ˆ³k‚Ì—L–³‚ðŽ¦‚·ƒtƒ‰ƒOŒn—ñ - u8 *LZCompFlagsp; // LZCompFlags ‚ðŠi”[‚·‚郃‚ƒŠ—̈æ‚ðƒ|ƒCƒ“ƒg - u16 lastOffset; // ˆê’vƒf[ƒ^‚܂ł̃IƒtƒZƒbƒg (‚»‚ÌŽž“_‚Å‚ÌÅ’·ˆê’vƒf[ƒ^) - u16 lastLength; // ˆê’vƒf[ƒ^’· (‚»‚ÌŽž“_‚Å‚ÌÅ’·ˆê’vƒf[ƒ^) - u8 i; - const u32 MAX_LENGTH = 0xFF + 3; - - LZInitTable( &gLZWork ); - gLZWork.OffsetBits = offsetBits; - - while ( size > 0 ) - { - LZCompFlags = 0; - LZCompFlagsp = dstp++; // ƒtƒ‰ƒOŒn—ñ‚ÌŠi”[æ - LZDstCount++; - - // ƒtƒ‰ƒOŒn—ñ‚ª8ƒrƒbƒgƒf[ƒ^‚Æ‚µ‚ÄŠi”[‚³‚ê‚邽‚ßA8‰ñƒ‹[ƒv - for ( i = 0; i < 8; i++ ) - { - LZCompFlags <<= 1; // ‰‰ñ (i=0) ‚Í“Á‚ɈӖ¡‚͂Ȃ¢ - if (size <= 0) - { - // I’[‚É—ˆ‚½ê‡‚̓tƒ‰ƒO‚ðÅŒã‚܂ŃVƒtƒg‚³‚¹‚Ä‚©‚çI—¹ - continue; - } - - if ( (lastLength = SearchLZ(&gLZWork, srcp, size, &lastOffset, lzSearchOffset, MAX_LENGTH)) != 0 ) - { - // ˆ³k‰Â”\‚Èꇂ̓tƒ‰ƒO‚ð—§‚Ä‚é - LZCompFlags |= 0x1; - - // ƒIƒtƒZƒbƒg‚ÍãˆÊ4ƒrƒbƒg‚ƉºˆÊ8ƒrƒbƒg‚É•ª‚¯‚ÄŠi”[ - *dstp++ = (u8)(lastLength - 3); - *dstp++ = (u8)((lastOffset - 1) & 0xff); // ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ - *dstp++ = (u8)((lastOffset - 1) >> 8); - LZDstCount += 3; - LZSlide( &gLZWork, srcp, lastLength ); - srcp += lastLength; - size -= lastLength; - } - else - { - // ˆ³k‚È‚µ - LZSlide( &gLZWork, srcp, 1 ); - *dstp++ = *srcp++; - size--; - LZDstCount++; - } - } // 8‰ñƒ‹[ƒvI—¹ - *LZCompFlagsp = LZCompFlags; // ƒtƒ‰ƒOŒn—ñ‚ðŠi”[ - } - - // 4ƒoƒCƒg‹«ŠEƒAƒ‰ƒCƒ“ƒƒ“ƒg - // ƒAƒ‰ƒCƒ“ƒƒ“ƒg—pƒf[ƒ^0 ‚̓f[ƒ^ƒTƒCƒY‚Ɋ܂߂Ȃ¢ - i = 0; - while ((LZDstCount + i) & 0x3) - { - *dstp++ = 0; - i++; - } - - return LZDstCount; -} - - -typedef struct -{ - u16 No; // ƒf[ƒ^No - s16 PaNo; // eNo - u32 Freq; // oŒ»•p“x - s16 ChNo[2]; // ŽqNo (0: ¶‘¤C 1: ‰E‘¤) - u16 PaDepth; // eƒm[ƒh‚Ì[‚³ - u16 LeafDepth; // —t‚܂łÌ[‚³ - u32 HuffCode; // ƒnƒtƒ}ƒ“•„† - u16 Bit; // ƒm[ƒh‚̃rƒbƒgƒf[ƒ^ - u16 HWord; // Še’†ŠÔß“_‚É‚¨‚¢‚ÄA‚»‚Ìß“_‚ðƒ‹[ƒg‚Æ‚·‚é•”•ª–Ø‚ð HuffTree Ši”[‚É•K—v‚ȃƒ‚ƒŠ—Ê -} -HuffData; - -typedef struct -{ - u8 leftOffsetNeed; // ¶‚ÌŽqß“_‚ւ̃IƒtƒZƒbƒg‚ª•K—v‚È‚ç1 - u8 rightOffsetNeed; // ‰E‚ÌŽqß“_‚ւ̃IƒtƒZƒbƒg‚ª•K—v‚È‚ç1 - u16 leftNodeNo; // ¶‚ÌŽqß“_No - u16 rightNodeNo; // ‰E‚ÌŽqß“_No -} -HuffTreeCtrlData; - -// ƒnƒtƒ}ƒ“ƒ[ƒNƒoƒbƒtƒ@\¬ -typedef struct -{ - HuffData* huffTable; // huffTable[ 512 ]; 12288B - u16* huffTree; // huffTree[ 256 * 2 ]; 512B - HuffTreeCtrlData* huffTreeCtrl; // huffTreeCtrl[ 256 ]; 1536B - u16 huffTreeTop; // - u8 bitSize; // - u8 padding_[1]; // -} -HuffInfo; // Œv 14340B - -static void HuffMakeHuffTree ( HuffInfo* info, u16 rootNo ); -static void HuffMakeSubsetHuffTree ( HuffInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ); -static BOOL HuffRemainingNodeCanSetOffset( HuffInfo* info, u16 costHWord ); -static void HuffSetOneNodeOffset ( HuffInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ); -static u16 HuffMakeNode ( HuffData* table, u8 bitSize ); - -static void HuffAddParentDepthToTable( HuffData *table, u16 leftNo, u16 rightNo ); -static void HuffAddCodeToTable ( HuffData* table, u16 nodeNo, u32 paHuffCode ); -static u16 HuffAddCountHWordToTable ( HuffData *table, u16 nodeNo ); - - -// ƒrƒbƒgƒXƒgƒŠ[ƒ€ -typedef struct -{ - u8* dstp; // o—Íæƒ|ƒCƒ“ƒ^ - u32 cnt; // o—̓TƒCƒY - u32 stream; // ƒJƒŒƒ“ƒgƒXƒgƒŠ[ƒ€ƒf[ƒ^ - u32 stream_len; // ƒXƒgƒŠ[ƒ€‚Ì’·‚³ -} -BitStream; - -static void -BitStream_Init( BitStream* context, u8* dstp ) -{ - context->dstp = dstp; - context->cnt = 0; - context->stream = 0; - context->stream_len = 0; -} - -static void -BitStream_Write( BitStream* context, u32 data, u32 width ) -{ - u32 i; - u32 stream = context->stream; - u32 cnt = context->cnt; - u32 stream_len = context->stream_len; - u32 mask = (1 << width) - 1; - - if ( width == 0 ) - { - return; - } - - stream = (stream << width) | ( data & mask ); - stream_len += width; - - for ( i = 0; i < stream_len / 8; i++ ) - { - context->dstp[ cnt++ ] = (u8)( stream >> ( stream_len - ( i + 1 ) * 8 ) ); - } - stream_len %= 8; - - context->stream = stream; - context->cnt = cnt; - context->stream_len = stream_len; -} - -static void -BitStream_Terminate( BitStream* context, u32 align ) -{ - u32 stream = context->stream; - u32 cnt = context->cnt; - u32 stream_len = context->stream_len; - - if ( stream_len > 0 ) - { - stream <<= 8 - stream_len; - - if ( context->stream_len != 0 ) - { - context->dstp[ cnt++ ] = (u8)( stream ); - } - } - - while ( cnt % align ) - { - context->dstp[ cnt++ ] = 0; - } - context->cnt = cnt; - context->stream_len = 0; -} - - - - -/*---------------------------------------------------------------------------* - Name: HuffInitTable - Description: - Arguments: info - bitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static void -HuffInitTable( HuffInfo* info, u8 bitSize ) -{ - u32 tableSize = (1 << bitSize); - u32 i; - - info->huffTable = (HuffData*)malloc( sizeof(HuffData) * tableSize * 2 ); - info->huffTree = (u16*)malloc( sizeof(u16) * tableSize * 2 ); - info->huffTreeCtrl = (HuffTreeCtrlData*)malloc( sizeof(HuffTreeCtrlData) * tableSize ); - - info->huffTreeTop = 1; - info->bitSize = bitSize; - - // huffTable‚ð‰Šú‰» - { - HuffData* table = info->huffTable; - const HuffData HUFF_TABLE_INIT_DATA = { 0, 0, 0, {-1, -1}, 0, 0, 0, 0, 0 }; - for ( i = 0; i < tableSize * 2; i++ ) - { - table[ i ] = HUFF_TABLE_INIT_DATA; - table[ i ].No = (u16)i; - } - } - - // huffTree, huffTreeCtrl‚ð‰Šú‰» - { - const HuffTreeCtrlData HUFF_TREE_CTRL_INIT_DATA = { 1, 1, 0, 0 }; - u16* huffTree = info->huffTree; - HuffTreeCtrlData* huffTreeCtrl = info->huffTreeCtrl; - - for ( i = 0; i < tableSize; i++ ) - { - huffTree[ i * 2 ] = 0; - huffTree[ i * 2 + 1 ] = 0; - huffTreeCtrl[ i ] = HUFF_TREE_CTRL_INIT_DATA; - } - } -} - - -/*---------------------------------------------------------------------------* - Name: LZCountHuffData - Description: - Arguments: srcp - srcSize - info8 - info16 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -LZCountHuffData( const u8* srcp, u32 srcSize, HuffInfo* info8, HuffInfo* info16 ) -{ - u32 srcCnt = 0; - u32 i; - - while ( srcCnt < srcSize ) - { - u8 compFlags = srcp[ srcCnt++ ]; // ˆ³k‚Ì—L–³‚ðŽ¦‚·ƒtƒ‰ƒO—ñ - for ( i = 0; i < 8; i++ ) - { - if ( compFlags & 0x80 ) // ˆ³k‚³‚ê‚Ä‚¢‚éAlength:8, offset:16 - { - u8 length = srcp[ srcCnt++ ]; - u16 offset = srcp[ srcCnt++ ]; // ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ - offset |= (srcp[ srcCnt++ ] << 8); - - #if BLEND_COMP_FLAG - info8->huffTable[ length | 0x100 ].Freq++; - #else - info8->huffTable[ length ].Freq++; - #endif - #if !defined(LH_ENC_OFFSET_WIDTH) - info16->huffTable[ offset ].Freq++; - #else - { - u32 offset_bit = 0; - while ( offset != 0 ) - { - ++offset_bit; - offset >>= 1; - } - info16->huffTable[ offset_bit ].Freq++; - } - #endif - } - else - { - u8 data = srcp[ srcCnt++ ]; - info8->huffTable[ data ].Freq++; - } - compFlags <<= 1; - if ( srcCnt >= srcSize ) - { - break; - } - } - } -} - - -/*---------------------------------------------------------------------------* - Name: ConstructHuffTree - Description: - Arguments: info - bitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static void -ConstructHuffTree( HuffInfo* info, u8 bitSize ) -{ - HuffData* table = info->huffTable; - u16 rootNo; - - // oŒ»•p“x‚©‚çƒm[ƒh‚ð\’z - rootNo = HuffMakeNode( table, bitSize ); - - // ƒnƒtƒ}ƒ“ƒR[ƒh¶¬ (table[i].HuffCode ‚É) - HuffAddCodeToTable( table, rootNo, 0x00 ); // PaDepth‚̃rƒbƒg”‚¾‚¯AHuffCode ‚̉ºˆÊƒrƒbƒg‚ðƒ}ƒXƒN‚µ‚½‚à‚Ì‚ªƒnƒtƒ}ƒ“ƒR[ƒh - - // Še’†ŠÔß“_‚É‚¨‚¢‚ÄA‚»‚Ìß“_‚ðƒ‹[ƒg‚Æ‚·‚é•”•ª–Ø‚ð huffTree Ši”[‚É•K—v‚ȃƒ‚ƒŠ—ʂ̌vŽZ - HuffAddCountHWordToTable( table, rootNo ); - - HuffMakeHuffTree( info, rootNo ); - info->huffTreeTop--; -} - -//----------------------------------------------------------------------- -// ƒnƒtƒ}ƒ“ƒR[ƒh•\ì¬ -//----------------------------------------------------------------------- -static void -HuffMakeHuffTree( HuffInfo* info, u16 rootNo ) -{ - s16 i; - s16 costHWord, tmpCostHWord; // •”•ª–؂̃R[ƒh•\‚ð쬂µ‚È‚©‚Á‚½Žž‚̃RƒXƒg Å‘å’l‚Ìß“_‚Ì•”•ª–؃R[ƒh•\‚ðì‚é - s16 costOffsetNeed, tmpCostOffsetNeed; - s16 costMaxKey; // ƒRƒXƒgŬ‚Ìß“_‚ð huffTreeBuf.huffTree ‚©‚ç“Á’è‚·‚邽‚ß‚Ìî•ñ - BOOL costMaxRightFlag; - u16 offsetNeedNum; - BOOL tmpRightFlag; - const u32 MAX_COST = 1 << (info->bitSize - 2); - - info->huffTreeTop = 1; - costOffsetNeed = 0; - - info->huffTreeCtrl[0].leftOffsetNeed = 0; // Žg—p‚µ‚È‚¢ (ƒe[ƒuƒ‹ƒTƒCƒY‚Æ‚µ‚ÄŽg—p) - info->huffTreeCtrl[0].rightNodeNo = rootNo; - - while ( 1 ) // return ‚·‚é‚܂Š- { - // ƒIƒtƒZƒbƒg‚ðÝ’è‚·‚é•K—v‚Ì‚ ‚éƒm[ƒh”‚ÌŒvŽZ - offsetNeedNum = 0; - for ( i = 0; i < info->huffTreeTop; i++ ) - { - if ( info->huffTreeCtrl[ i ].leftOffsetNeed ) - { - offsetNeedNum++; - } - if ( info->huffTreeCtrl[ i ].rightOffsetNeed ) - { - offsetNeedNum++; - } - } - - // Å‘åƒRƒXƒg‚Ìß“_‚ðŒŸõ - costHWord = -1; - costMaxKey = -1; - tmpRightFlag = 0; - - for ( i = 0; i < info->huffTreeTop; i++ ) - { - tmpCostOffsetNeed = (u16)( info->huffTreeTop - i ); - - // ¶‚ÌŽqß“_‚̃RƒXƒg•]‰¿ - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - tmpCostHWord = (s16)info->huffTable[ info->huffTreeCtrl[i].leftNodeNo ].HWord; - - if ( (u32)(tmpCostHWord + offsetNeedNum) > MAX_COST ) - { - goto leftCostEvaluationEnd; - } - if ( ! HuffRemainingNodeCanSetOffset( info, (u16)tmpCostHWord ) ) - { - goto leftCostEvaluationEnd; - } - if ( tmpCostHWord > costHWord ) - { - costMaxKey = i; - costMaxRightFlag = 0; - } - else if ( (tmpCostHWord == costHWord) && (tmpCostOffsetNeed > costOffsetNeed) ) - { - costMaxKey = i; - costMaxRightFlag = 0; - } - } -leftCostEvaluationEnd:{} - - if ( info->huffTreeCtrl[i].rightOffsetNeed ) - { - tmpCostHWord = (s16)info->huffTable[ info->huffTreeCtrl[i].rightNodeNo ].HWord; - - if ( (u32)(tmpCostHWord + offsetNeedNum) > MAX_COST ) - { - goto rightCostEvaluationEnd; - } - if ( ! HuffRemainingNodeCanSetOffset( info, (u16)tmpCostHWord ) ) - { - goto rightCostEvaluationEnd; - } - if ( tmpCostHWord > costHWord ) - { - costMaxKey = i; - costMaxRightFlag = 1; - } - else if ( (tmpCostHWord == costHWord) && (tmpCostOffsetNeed > costOffsetNeed) ) - { - costMaxKey = i; - costMaxRightFlag = 1; - } - } -rightCostEvaluationEnd:{} - } - - // •”•ª–Ø‚ð‚Ü‚é‚Ü‚é huffTree ‚ÉŠi”[ - if ( costMaxKey >= 0 ) - { - HuffMakeSubsetHuffTree( info, (u16)costMaxKey, costMaxRightFlag); - goto nextTreeMaking; - } - else - { - // •K—vƒIƒtƒZƒbƒgÅ‘å‚̃m[ƒh‚ðŒŸõ - for ( i = 0; i < info->huffTreeTop; i++ ) - { - u16 tmp = 0; - tmpRightFlag = 0; - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - tmp = info->huffTable[ info->huffTreeCtrl[i].leftNodeNo ].HWord; - } - if ( info->huffTreeCtrl[i].rightOffsetNeed ) - { - if ( info->huffTable[ info->huffTreeCtrl[i].rightNodeNo ].HWord > tmp ) - { - tmpRightFlag = 1; - } - } - if ( (tmp != 0) || (tmpRightFlag) ) - { - HuffSetOneNodeOffset( info, (u16)i, tmpRightFlag ); - goto nextTreeMaking; - } - } - } - return; -nextTreeMaking:{} - } -} - -//----------------------------------------------------------------------- -// •”•ª–Ø‚ð‚Ü‚é‚Ü‚é huffTree ‚ÉŠi”[ -//----------------------------------------------------------------------- -static void -HuffMakeSubsetHuffTree( HuffInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ) -{ - u16 i; - - i = info->huffTreeTop; - HuffSetOneNodeOffset( info, huffTreeNo, rightNodeFlag ); - - if ( rightNodeFlag ) - { - info->huffTreeCtrl[ huffTreeNo ].rightOffsetNeed = 0; - } - else - { - info->huffTreeCtrl[ huffTreeNo ].leftOffsetNeed = 0; - } - - while ( i < info->huffTreeTop ) - { - if ( info->huffTreeCtrl[ i ].leftOffsetNeed ) - { - HuffSetOneNodeOffset( info, i, 0 ); - info->huffTreeCtrl[ i ].leftOffsetNeed = 0; - } - if ( info->huffTreeCtrl[ i ].rightOffsetNeed ) - { - HuffSetOneNodeOffset( info, i, 1 ); - info->huffTreeCtrl[ i ].rightOffsetNeed = 0; - } - i++; - } -} - -//----------------------------------------------------------------------- -// —^‚¦‚ç‚ꂽƒf[ƒ^—ʂ̕”•ª–Ø‚ð“WŠJ‚µ‚Ä‚à huffTree \’z‚ÉŽxႪ‚È‚¢‚©’²‚ׂé -//----------------------------------------------------------------------- -static BOOL -HuffRemainingNodeCanSetOffset( HuffInfo* info, u16 costHWord ) -{ - u16 i; - s16 capacity; - const u32 MAX_COST = 1 << (info->bitSize - 2); - - capacity = (s16)( MAX_COST - costHWord ); - - // ƒIƒtƒZƒbƒg”‚Í i ‚ª¬‚³‚¢‚قǑ傫‚¢‚Ì‚ÅAƒ\[ƒg‚¹‚¸Ai = 0 -> huffTreeTop ‚ÅŒvŽZ‚·‚ê‚΂悢 - for ( i = 0; i < info->huffTreeTop; i++ ) - { - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - if ( (info->huffTreeTop - i) <= capacity ) - { - capacity--; - } - else - { - return 0; - } - } - if ( info->huffTreeCtrl[i].rightOffsetNeed ) - { - if ( (info->huffTreeTop - i) <= capacity ) - { - capacity--; - } - else - { - return 0; - } - } - } - - return 1; -} - - -/*---------------------------------------------------------------------------* - Name: HuffSetOneNodeOffset - Description: 1ß“_•ªAƒnƒtƒ}ƒ“ƒR[ƒh•\‚ðì¬ - Arguments: *table ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹ - huffTreeNo - rightNodeFlag ‰E‘¤‚̃m[ƒh‚Å‚ ‚é‚©‚Ç‚¤‚©‚̃tƒ‰ƒO - Returns: None. - *---------------------------------------------------------------------------*/ -static void -HuffSetOneNodeOffset( HuffInfo* info, u16 huffTreeNo, BOOL rightNodeFlag) -{ - u16 nodeNo; - u16 offsetData = 0; - - HuffData* huffTable = info->huffTable; - u16* huffTree = info->huffTree; - HuffTreeCtrlData* huffTreeCtrl = info->huffTreeCtrl; - u16 huffTreeTop = info->huffTreeTop; - - if (rightNodeFlag) - { - nodeNo = huffTreeCtrl[ huffTreeNo ].rightNodeNo; - huffTreeCtrl[ huffTreeNo ].rightOffsetNeed = 0; - } - else - { - nodeNo = huffTreeCtrl[ huffTreeNo ].leftNodeNo; - huffTreeCtrl [huffTreeNo ].leftOffsetNeed = 0; - } - - // ¶‚ÌŽqß“_ - if ( huffTable[ huffTable[nodeNo].ChNo[0] ].LeafDepth == 0) - { - offsetData |= 0x8000; - huffTree[ huffTreeTop * 2 + 0 ] = (u16)huffTable[ nodeNo ].ChNo[0]; - huffTreeCtrl[ huffTreeTop ].leftNodeNo = (u16)huffTable[ nodeNo ].ChNo[0]; - huffTreeCtrl[ huffTreeTop ].leftOffsetNeed = 0; // ƒIƒtƒZƒbƒg‚Í•K—v‚È‚­‚È‚é - } - else - { - huffTreeCtrl[ huffTreeTop ].leftNodeNo = (u16)huffTable[ nodeNo ].ChNo[0]; // ƒIƒtƒZƒbƒg‚Í•K—v - } - - // ‰E‚ÌŽqß“_ - if ( huffTable[ huffTable[ nodeNo ].ChNo[1] ].LeafDepth == 0 ) - { - offsetData |= 0x4000; - huffTree[ huffTreeTop * 2 + 1 ] = (u16)huffTable[nodeNo].ChNo[1]; - huffTreeCtrl[ huffTreeTop ].rightNodeNo = (u16)huffTable[ nodeNo ].ChNo[1]; - huffTreeCtrl[ huffTreeTop ].rightOffsetNeed = 0; // ƒIƒtƒZƒbƒg‚Í•K—v‚È‚­‚È‚é - } - else - { - huffTreeCtrl[ huffTreeTop ].rightNodeNo = (u16)huffTable[ nodeNo ].ChNo[1]; // ƒIƒtƒZƒbƒg‚Í•K—v - } - - offsetData |= (u16)( huffTreeTop - huffTreeNo - 1 ); - huffTree[ huffTreeNo * 2 + (rightNodeFlag? 1 : 0) ] = offsetData; - - info->huffTreeTop++; -} - -/*---------------------------------------------------------------------------* - Name: HuffMakeNode - Description: oŒ»•p“x‚©‚çƒm[ƒhƒf[ƒ^‚ð\’z - Arguments: table - Returns: None. - *---------------------------------------------------------------------------*/ -static u16 -HuffMakeNode( HuffData* table, u8 bitSize ) -{ - u16 dataNum = ( 1 << bitSize ); - u16 tableTop = (u16)dataNum; // ƒe[ƒuƒ‹ì¬Žž‚ÌAƒe[ƒuƒ‹ƒgƒbƒvNo - - u32 i; - s32 leftNo, rightNo; // 2•ª–Øì¬Žž‚̃m[ƒhNo - u16 rootNo; // “ñ•ª–؂̃‹[ƒgNo - - leftNo = -1; - rightNo = -1; - while ( 1 ) - { - // Freq‚̬‚³‚¢•”•ª–Ø’¸“_‚ð2‚Â’T‚· 1‚‚͕K‚¸Œ©‚‚©‚é‚Í‚¸ - // Žq’¸“_(¶)‚Ì’Tõ - for ( i = 0; i < tableTop; i++ ) - { - if ( ( table[i].Freq == 0 ) || - ( table[i].PaNo != 0 ) ) - { - continue; - } - - if ( leftNo < 0 ) - { - leftNo = i; - } - else if ( table[i].Freq < table[ leftNo ].Freq ) - { - leftNo = i; - } - } - - // Žq’¸“_(‰E)‚Ì’Tõ - for ( i = 0; i < tableTop; i++ ) - { - if ( ( table[i].Freq == 0 ) || - ( table[i].PaNo != 0 ) || - ( i == leftNo ) ) - { - continue; - } - - if ( rightNo < 0 ) - { - rightNo = i; - } - else if ( table[i].Freq < table[ rightNo ].Freq ) - { - rightNo = i; - } - } - - // 1‚‚µ‚©‚È‚©‚Á‚½‚çAƒe[ƒuƒ‹ì¬I—¹ - if ( rightNo < 0 ) - { - // ’l‚ªˆêŽí—Þ‚µ‚©‚È‚¢‘¶Ý‚µ‚È‚¢ê‡‚É‚Í01‚Ç‚¿‚ç‚à“¯‚¶’l‚ƂȂéƒm[ƒh‚ð‚P‚Â쬂·‚é - if ( tableTop == dataNum ) - { - table[ tableTop ].Freq = table[ leftNo ].Freq; - table[ tableTop ].ChNo[0] = (s16)leftNo; - table[ tableTop ].ChNo[1] = (s16)leftNo; - table[ tableTop ].LeafDepth = 1; - table[ leftNo ].PaNo = (s16)tableTop; - table[ leftNo ].Bit = 0; - table[ leftNo ].PaDepth = 1; - } - else - { - tableTop--; - } - rootNo = tableTop; - return rootNo; - } - - // ¶•”•ª–؂ƉE•”•ª–؂𓇂·‚é’¸“_ì¬ - table[ tableTop ].Freq = table[ leftNo ].Freq + table[ rightNo ].Freq; - table[ tableTop ].ChNo[0] = (s16)leftNo; - table[ tableTop ].ChNo[1] = (s16)rightNo; - if ( table[ leftNo ].LeafDepth > table[ rightNo ].LeafDepth ) - { - table[ tableTop ].LeafDepth = (u16)( table[ leftNo ].LeafDepth + 1 ); - } - else - { - table[ tableTop ].LeafDepth = (u16)( table[ rightNo ].LeafDepth + 1 ); - } - - table[ leftNo ].PaNo = table[ rightNo ].PaNo = (s16)( tableTop ); - table[ leftNo ].Bit = 0; - table[ rightNo ].Bit = 1; - - HuffAddParentDepthToTable( table, (u16)leftNo, (u16)rightNo ); - - tableTop++; - leftNo = rightNo = -1; - } -} - - -//----------------------------------------------------------------------- -// 2•¶–Øì¬Žž‚ÉA•”•ª–؂𓇂µ‚½‚Æ‚«‚ÉA•”•ª–؂̊e\¬ƒm[ƒh‚Ì[‚³‚ð{1‚·‚é -//----------------------------------------------------------------------- -static void -HuffAddParentDepthToTable( HuffData *table, u16 leftNo, u16 rightNo ) -{ - table[ leftNo ].PaDepth++; - table[ rightNo ].PaDepth++; - - if ( table[ leftNo ].LeafDepth != 0 ) - { - HuffAddParentDepthToTable( table, (u16)table[ leftNo ].ChNo[0], (u16)table[ leftNo ].ChNo[1] ); - } - if ( table[ rightNo ].LeafDepth != 0 ) - { - HuffAddParentDepthToTable( table, (u16)table[ rightNo ].ChNo[0], (u16)table[ rightNo ].ChNo[1] ); - } -} - -//----------------------------------------------------------------------- -// ƒnƒtƒ}ƒ“ƒR[ƒh¶¬ -//----------------------------------------------------------------------- -static void -HuffAddCodeToTable( HuffData* table, u16 nodeNo, u32 paHuffCode ) -{ - table[ nodeNo ].HuffCode = (paHuffCode << 1) | table[ nodeNo ].Bit; - - if ( table[ nodeNo ].LeafDepth != 0 ) - { - HuffAddCodeToTable( table, (u16)table[ nodeNo ].ChNo[0], table[ nodeNo ].HuffCode ); - HuffAddCodeToTable( table, (u16)table[ nodeNo ].ChNo[1], table[ nodeNo ].HuffCode ); - } -} - - -//----------------------------------------------------------------------- -// ’†ŠÔƒm[ƒh‚ª huffTree 쬂ɕK—v‚Æ‚·‚éƒf[ƒ^—Ê -//----------------------------------------------------------------------- -static u16 -HuffAddCountHWordToTable( HuffData *table, u16 nodeNo) -{ - u16 leftHWord, rightHWord; - - switch ( table[ nodeNo ].LeafDepth ) - { - case 0: - return 0; - case 1: - leftHWord = rightHWord = 0; - break; - default: - leftHWord = HuffAddCountHWordToTable( table, (u16)table[nodeNo].ChNo[0] ); - rightHWord = HuffAddCountHWordToTable( table, (u16)table[nodeNo].ChNo[1] ); - break; - } - - table[ nodeNo ].HWord = (u16)( leftHWord + rightHWord + 1 ); - return (u16)( leftHWord + rightHWord + 1 ); -} - - - -/*---------------------------------------------------------------------------* - Name: LZMakeHuffTree - Description: - Arguments: srcp - tree8 - tree16 - Returns: None. - *---------------------------------------------------------------------------*/ -static void -LZMakeHuffTree( const u8* srcp, u32 srcSize, HuffInfo* info8, HuffInfo* info16 ) -{ - HuffInitTable( info8, LENGTH_BITS ); - HuffInitTable( info16, LH_OFFSET_TABLE_BITS ); - - LZCountHuffData( srcp, srcSize, info8, info16 ); - - ConstructHuffTree( info8, LENGTH_BITS ); - ConstructHuffTree( info16, LH_OFFSET_TABLE_BITS ); -} - - -/*---------------------------------------------------------------------------* - Name: ExportHuffTree - Description: - Arguments: dstp - info - bitSize - Returns: - *---------------------------------------------------------------------------*/ -static u32 -ExportHuffTree( u8* dstp, HuffInfo* info, u8 bitSize ) -{ - BitStream stream; - u32 i; - u8* pSize; - u32 tblSize; - - BitStream_Init( &stream, dstp ); - - pSize = dstp; - BitStream_Write( &stream, 0, RoundUp( bitSize, 8 ) ); - - for ( i = 1; i < (u16)( (info->huffTreeTop + 1) * 2); i++ ) - { - u16 flags = (u16)( info->huffTree[ i ] & 0xC000 ); - u32 data = info->huffTree[ i ] | (flags >> (16 - bitSize)); - BitStream_Write( &stream, data, bitSize ); - } - BitStream_Terminate( &stream, 4 ); - - // ƒe[ƒuƒ‹ƒTƒCƒY‚Ì1/4‚ðƒTƒCƒY—̈æ‚Ö•Û‘¶ - tblSize = (stream.cnt / 4) - 1; - if ( RoundUp( bitSize, 8 ) == 8 ) - { - if ( tblSize >= 0x100 ) - { - fprintf(stderr, "table size is over!\n"); - } - *pSize = (u8)( tblSize ); - } - else // RoundUp( bitSize, 8 ) == 16 ) - { - if ( tblSize >= 0x10000 ) - { - fprintf(stderr, "table size is over!\n"); - } - *(u16*)pSize = (u16)( tblSize ); - } - return stream.cnt; -} - - -/*---------------------------------------------------------------------------* - Name: ConvertHuff - Description: - Arguments: info - data - stream - Returns: None. - *---------------------------------------------------------------------------*/ -static void -ConvertHuff( HuffInfo* info, u16 data, BitStream* stream ) -{ - u16 width = info->huffTable[ data ].PaDepth; - u32 code = info->huffTable[ data ].HuffCode; - - BitStream_Write( stream, code, width ); -} - - -/*---------------------------------------------------------------------------* - Name: LZConvertHuffData - Description: - Arguments: srcp - tmpSize - dstp - info8 - info16 - Returns: - *---------------------------------------------------------------------------*/ -static u32 -LZConvertHuffData( const u8* srcp, u32 srcSize, u8* dstp, HuffInfo* info8, HuffInfo* info16 ) -{ - u32 srcCnt = 0; - u32 dstCnt = 0; - - BitStream stream; - - BitStream_Init( &stream, dstp ); - - while ( srcCnt < srcSize ) - { - u32 i; - u8 compFlags = srcp[ srcCnt++ ]; // ˆ³k‚Ì—L–³‚ðŽ¦‚·ƒtƒ‰ƒO—ñ - #if BLEND_COMP_FLAG - #else - BitStream_Write( &stream, compFlags, 8 ); - #endif - - for ( i = 0; i < 8; i++ ) - { - if ( compFlags & 0x80 ) // ˆ³k‚³‚ê‚Ä‚¢‚éAlength:8, offset:16 - { - u8 length = srcp[ srcCnt++ ]; - u16 offset = srcp[ srcCnt++ ]; // ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ - offset |= srcp[ srcCnt++ ] << 8; - - #if BLEND_COMP_FLAG - ConvertHuff( info8, length | 0x100, &stream ); - #else - ConvertHuff( info8, length, &stream ); - #endif - #if ! defined(LH_ENC_OFFSET_WIDTH) - ConvertHuff( info16, offset, &stream ); - #else - { - u16 offset_bit = 0; - u16 offset_tmp = offset; - while ( offset_tmp > 0 ) - { - offset_tmp >>= 1; - ++offset_bit; - } - ConvertHuff( info16, offset_bit, &stream ); - // offset‚ª0‚Å‚ ‚邱‚Ƃ͂Ȃ¢‚Ì‚ÅAÅãˆÊ‚̃rƒbƒg‚ÍÈ—ª‚·‚é - BitStream_Write( &stream, offset & ~(1 << (offset_bit - 1)), offset_bit - 1 ); - } - #endif - } - else - { - u8 data = srcp[ srcCnt++ ]; - - ConvertHuff( info8, data, &stream ); - } - compFlags <<= 1; - if ( srcCnt >= srcSize ) - { - break; - } - } - } - - BitStream_Terminate( &stream, 4 ); - return stream.cnt; -} - -/*---------------------------------------------------------------------------* - Name: LHCompWrite - Description: - Arguments: *srcp - size - *dstp - Returns: - *---------------------------------------------------------------------------*/ -u32 -LHCompWrite( const u8 *srcp, s32 srcSize, u8 *dstp ) -{ - static HuffInfo sTree8; - static HuffInfo sTree16; - - u32 tmpSize; - u32 dstSize; - u8* tmpBuf = (u8*)malloc( srcSize * 3 ); - // ‚Ü‚¸‚Ísrcp‚ð•’Ê‚ÉLZˆ³k - tmpSize = LZCompWrite_( srcp, srcSize, tmpBuf, 2, LH_OFFSET_BITS ); - - // offset‚Ælength‚ÌWŒv - LZMakeHuffTree( tmpBuf, tmpSize, &sTree8, &sTree16 ); - - dstSize = 0; - - // ƒwƒbƒ_‚Ì‘‚«ž‚Ý - if ( srcSize < 0x1000000 && srcSize > 0 ) - { - *(u32*)dstp = LH_CODE_HEADER | ( srcSize << 8 ); - dstSize = 4; - } - else - { - *(u32*)dstp = LH_CODE_HEADER; - *(u32*)&dstp[4] = srcSize; - dstSize = 8; - } - // ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚ðo—Í - dstSize += ExportHuffTree( &dstp[ dstSize ], &sTree8, LENGTH_BITS ); - dstSize += ExportHuffTree( &dstp[ dstSize ], &sTree16, LH_OFFSET_TABLE_BITS ); - - // ˆ³kŒ‹‰Ê‚ðƒnƒtƒ}ƒ“•„†‰»‚µ‚È‚ª‚ço—Í - dstSize += LZConvertHuffData( tmpBuf, tmpSize, &dstp[ dstSize ], &sTree8, &sTree16 ); - - return dstSize; -} - - - -typedef struct -{ - u16 huffTable9 [ (1 << LENGTH_BITS) * 2 ]; - u16 huffTable12[ OFFSET_SIZE_MAX * 2 ]; -} -LHContext; - - -/*---------------------------------------------------------------------------* - Name: HuffImportTree - Description: - Arguments: pTable - srcp - bitSize - srcRemainSize - Returns: - *---------------------------------------------------------------------------*/ -static u32 -HuffImportTree( u16* pTable, const u8* srcp, u8 bitSize, u32 srcRemainSize ) -{ - u32 tableSize; - u32 idx = 1; - u32 data = 0; - u32 bitNum = 0; - u32 bitMask = (1 << bitSize) - 1; - u32 srcCnt = 0; - - if ( bitSize > 8 ) - { - tableSize = *(u16*)srcp; - srcp += 2; - srcCnt += 2; - } - else - { - tableSize = *srcp; - srcp += 1; - srcCnt += 1; - } - tableSize = (tableSize + 1) * 4; - if ( srcRemainSize < tableSize ) - { - return tableSize; - } - - while ( srcCnt < tableSize ) - { - while ( bitNum < bitSize ) - { - data <<= 8; - data |= *srcp++; - ++srcCnt; - bitNum += 8; - } - if ( idx < (u32)((1 << bitSize) * 2) ) - { - pTable[ idx++ ] = (u16)( ( data >> (bitNum - bitSize) ) & bitMask ); - } - bitNum -= bitSize; - } - - pTable[ 0 ] = (u16)idx; - return tableSize; -} - - -/*---------------------------------------------------------------------------* - Name: HuffVerifyTable - - Description: ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚Ì®‡«‚ðƒ`ƒFƒbƒN - - Arguments: pTable ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚ւ̃|ƒCƒ“ƒ^ - bit ƒnƒtƒ}ƒ“•„†‚̃rƒbƒg” - - Returns: ³í‚ȃe[ƒuƒ‹‚Ìê‡‚É‚Í TRUE - •s³‚ȃe[ƒuƒ‹‚Ìê‡‚É‚Í FALSE - *---------------------------------------------------------------------------*/ -static BOOL -HuffVerifyTable( const void* pTable, u8 bit ) -{ -#if !defined(LH_ENC_OFFSET_WIDTH) - enum { FLAGS_ARRAY_NUM = 8192 / 8 }; /* 1024Byte */ - static u8 end_flags[ FLAGS_ARRAY_NUM ]; -#else - enum { FLAGS_ARRAY_NUM = 1024 / 8 }; /* 128Byte */ - u8 end_flags[ FLAGS_ARRAY_NUM ]; -#endif - u16* treep = (u16*)pTable; - u16* treeStartp = treep + 1; - u32 treeSize = *treep; - u16* treeEndp = (u16*)pTable + treeSize; - u32 i; - u32 idx; - const u16 ofs_mask = (u16)( (1 << (bit - 2)) - 1 ); - const u16 l_mask = (u16)( 1 << (bit - 1) ); - const u16 r_mask = (u16)( 1 << (bit - 2) ); - - for ( i = 0; i < FLAGS_ARRAY_NUM; i++ ) - { - end_flags[ i ] = 0; - } - - if ( treeSize > (1U << (bit + 1)) ) - { - return FALSE; - } - - idx = 1; - treep = treeStartp; - while ( treep < treeEndp ) - { - if ( (end_flags[ idx / 8 ] & (1 << (idx % 8) )) == 0 ) - { - u32 offset = (u32)( ( (*treep & ofs_mask) + 1 ) << 1 ); - u16* nodep = (u16*)((u32)treep & ~0x3) + offset; - - // I’[‚̃Aƒ‰ƒCƒƒ“ƒg—pƒf[ƒ^‚͓ǂݔò‚΂· - if ( *treep == 0 && idx >= treeSize - 4 ) - { - goto next; - } - if ( nodep >= treeEndp ) - { - return FALSE; - } - if ( *treep & l_mask ) - { - u32 left = (idx & ~0x1) + offset; - end_flags[ left / 8 ] |= (u8)( 1 << (left % 8) ); - } - if ( *treep & r_mask ) - { - u32 right = (idx & ~0x1) + offset + 1; - end_flags[ right / 8 ] |= (u8)( 1 << (right % 8) ); - } - } - next: - ++idx; - ++treep; - } - return TRUE; -} - - -typedef struct -{ - const u8* srcp; - u32 cnt; - u32 srcSize; - u32 stream; - u32 stream_len; -} -BitReader; - -static INLINE void -BitReader_Init( BitReader* context, const u8* srcp, u32 srcSize ) -{ - context->srcp = srcp; - context->cnt = 0; - context->stream = 0; - context->stream_len = 0; - context->srcSize = srcSize; -} - -static INLINE s8 -BitReader_Read( BitReader* context ) -{ - s8 bit; - if ( context->stream_len == 0 ) - { - if ( context->cnt > context->srcSize ) - { - return -1; - } - context->stream = context->srcp[context->cnt++]; - context->stream_len = 8; - } - bit = (s8)( (context->stream >> (context->stream_len - 1)) & 0x1 ); - context->stream_len--; - return bit; -} - -static s32 -BitReader_ReadEx( BitReader* context, u8 width ) -{ - s32 data; - - ASSERT( width <= 24 ); - - if ( width == 0 ) - { - return 0; - } - - while ( context->stream_len < width ) - { - if ( context->cnt > context->srcSize ) - { - return -1; - } - context->stream <<= 8; - context->stream |= context->srcp[context->cnt++]; - context->stream_len += 8; - } - data = (s32)( (context->stream >> (context->stream_len - width)) & ((1 << width) - 1) ); - context->stream_len -= width; - return data; -} - - -/*---------------------------------------------------------------------------* - Name: LHCompRead - Description: - Arguments: srcp - size - *dstp - Returns: - *---------------------------------------------------------------------------*/ -s32 -LHCompRead( const u8* srcp, u32 srcSize, u8* dstp ) -{ - static LHContext sContext; - u32 dstSize; - u32 srcCnt = 0; - u32 dstCnt = 0; - BitReader stream; - - if ( srcSize < 4 ) - { - return -1; - } - - // ƒwƒbƒ_‚̓ǂݞ‚Ý - dstSize = *(u32*)srcp >> 8; - srcCnt = 4; - if ( dstSize == 0 ) - { - if ( srcSize < 8 ) - { - return -1; - } - dstSize = *(u32*)(srcp + 4); - srcCnt += 4; - } - - // ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚ð“Ç‚Þ - srcCnt += HuffImportTree( sContext.huffTable9, &srcp[srcCnt], LENGTH_BITS, srcSize - srcCnt ); - if ( srcCnt >= srcSize || (!HuffVerifyTable( sContext.huffTable9, LENGTH_BITS )) ) - { - return -1; - } - - srcCnt += HuffImportTree( sContext.huffTable12, &srcp[srcCnt], LH_OFFSET_TABLE_BITS, srcSize - srcCnt ); - - if ( srcCnt >= srcSize || (!HuffVerifyTable( sContext.huffTable12, LH_OFFSET_TABLE_BITS )) ) - { - return -1; - } - - BitReader_Init( &stream, &srcp[srcCnt], srcSize - srcCnt ); - - while ( dstCnt < dstSize ) - { - u16* nodep = sContext.huffTable9 + 1; - u16 val; - do - { - s8 bit = BitReader_Read( &stream ); - u32 offset = (((*nodep & 0x7F) + 1) << 1) + bit; - - if ( bit < 0 ) - { - return -1; - } - - if ( *nodep & (0x100 >> bit) ) - { - nodep = (u16*)((u32)nodep & ~0x3); - val = *(nodep + offset); - break; - } - else - { - nodep = (u16*)((u32)nodep & ~0x3); - nodep += offset; - } - } while ( 1 ); - - if ( val < 0x100 ) - // ”ñˆ³kƒf[ƒ^ - { - dstp[dstCnt++] = (u8)val; - } - else - // ˆ³kƒf[ƒ^ - { - #if !defined(LH_ENC_OFFSET_WIDTH) - #define OFFSET_MASK 0x3FF - #define LEAF_FLAG 0x800 - #else - #define OFFSET_MASK 0x07 - #define LEAF_FLAG 0x10 - u16 offset_bit; - #endif - u16 length = (val & 0xFF) + 3; - u16* nodep = sContext.huffTable12 + 1; - do - { - s8 bit = BitReader_Read( &stream ); - u32 offset = (((*nodep & OFFSET_MASK) + 1) << 1) + bit; - - if ( bit < 0 ) - { - return -1; - } - - if ( *nodep & (LEAF_FLAG >> bit) ) - { - nodep = (u16*)((u32)nodep & ~0x3); - val = *(nodep + offset); - break; - } - else - { - nodep = (u16*)((u32)nodep & ~0x3); - nodep += offset; - } - } while ( 1 ); - - #if defined(LH_ENC_OFFSET_WIDTH) - offset_bit = val; - val = 0; - if ( offset_bit > 0 ) - { - val = 1; - while ( --offset_bit > 0 ) - { - val <<= 1; - val |= BitReader_Read( &stream ); - } - } - #endif - val += 1; - - // ƒoƒbƒtƒ@ƒI[ƒo[ƒ‰ƒ“‚ðƒ`ƒFƒbƒN - if ( dstCnt + length > dstSize ) - { - return -1; - } - if ( dstCnt < val ) - { - return -1; - } - if ( srcCnt + stream.cnt > srcSize ) - { - return -1; - } - - while ( length-- > 0 ) - { - dstp[dstCnt] = dstp[dstCnt - val]; - ++dstCnt; - } - #undef OFFSET_MASK - #undef LEAF_FLAG - } - } - return dstCnt; - - -} - - -//============================================================================== -// -// LRCˆ³k/“WŠJ -// -//============================================================================== - -#define LRC_ADAPTIVE // “K‰žŒ^ƒŒƒ“ƒWƒR[ƒ_‚ðŽg—p‚·‚é‚©‚Ç‚¤‚© -#define RC_MAX_RANGE 0x80000000 -#define RC_UNIT_BITS 8 // 1ƒoƒCƒg’PˆÊ‚Åo—Í -// #define LRC_ENC_OFFSET_WIDTH // NOTE: ‚±‚̃IƒvƒVƒ‡ƒ“‚łͳí‚É“®ì‚Å‚«‚È‚¢B - // ³Šm‚É‚ÍA“WŠJŽž‚ɶ‚Ìbitƒf[ƒ^‚ªƒŒƒ“ƒWƒR[ƒh‚Æ‚µ‚Äæ‚É - // “ǂ܂ê‚Ä‚µ‚Ü‚¤‚Ì‚ÅA•œŒ³Œã‚ɂ͎Ÿ‚̃f[ƒ^‚ªŽæ‚èo‚¹‚È‚¢B - -#if defined( LRC_ADAPTIVE ) - #define TABLE8_ADAPTIVE TRUE -#else - #define TABLE8_ADAPTIVE FALSE -#endif - -#if defined( LRC_ENC_OFFSET_WIDTH ) - #define TABLE16_ADAPTIVE FALSE // bitLen‚ðŽg—p‚·‚éꇂɂÍA‹«ŠEƒe[ƒuƒ‹‚ª¬‚³‚¢‚Ì‚Åofs‚ÍÓIRC‚ÅOK - #define LRC_OFFSET_BITS 15 - #define LRC_OFFSET_TABLE_BITS 5 -#else - #define TABLE16_ADAPTIVE TRUE // bitLen‚ðŽg—p‚µ‚È‚¢ê‡‚É‚ÍA‹«ŠEƒe[ƒuƒ‹‚ª‘å‚«‚­‚È‚é‚Ì‚Åofs‚Í“®“IRC‚ðŽg—p - #define LRC_OFFSET_BITS 12 - #define LRC_OFFSET_TABLE_BITS LRC_OFFSET_BITS -#endif - -// ƒŒƒ“ƒWƒR[ƒ_—p\‘¢‘Ì -typedef struct -{ - u32 *freq; // oŒ»•p“xƒe[ƒuƒ‹ (1 << bitSize) * sizeof(u32) Byte - u32 *low_cnt; // LOW‹«ŠE’lƒe[ƒuƒ‹ (1 << bitSize) * sizeof(u32) Byte - u32 total; // ƒg[ƒ^ƒ‹ 4 Byte - u8 bitSize; // ƒrƒbƒgƒTƒCƒY 1 Byte - u8 padding_[1]; // -} -RCCompressionInfo; - -// ƒŒƒ“ƒWƒR[ƒ_ó‘Ô\‘¢‘Ì -typedef struct -{ - u32 low; - u32 range; - u32 code; // “WŠJŽž‚̂ݎg—p - u8 carry; // ˆ³kŽž‚̂ݎg—p - u32 carry_cnt; // ˆ³kŽž‚̂ݎg—p -} -RCState; - -/*---------------------------------------------------------------------------* - Name: RCInitState_ - - Description: RCó‘Ԃ̉Šú‰»‚ð‚¨‚±‚È‚¢‚Ü‚·B - - Arguments: state - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCInitState_( RCState* state ) -{ - // ŠJŽnRange‚ª0x80000000‚Ȃ̂ÅA‰‰ñ‚¢‚«‚Ȃ茅グ‚ª”­¶‚·‚邱‚Ƃ͂Ȃ¢ - state->low = 0; - state->range = RC_MAX_RANGE; - state->code = 0; - state->carry = 0; - state->carry_cnt = 0; -} - - -/*---------------------------------------------------------------------------* - Name: RCInitInfo_ - - Description: ÓIƒŒƒ“ƒWƒR[ƒ_‚̃e[ƒuƒ‹‰Šú‰» - ‚·‚ׂĂÌoŒ»•p“x‚ð0‚ʼnŠú‰»‚µ‚Ü‚·B - - Arguments: info - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCInitInfo_( RCCompressionInfo* info, u8 bitSize ) -{ - u32 tableSize = (1 << bitSize); - u32 i; - - info->bitSize = bitSize; - info->freq = (u32*)malloc( sizeof(u32) * tableSize ); - info->low_cnt = (u32*)malloc( sizeof(u32) * tableSize ); - - for ( i = 0; i < tableSize; i++ ) - { - info->freq[ i ] = 0; - info->low_cnt[ i ] = 0; - } - info->total = 0; -} - -/*---------------------------------------------------------------------------* - Name: RCExportTable_ - - Description: ÓIRCƒe[ƒuƒ‹‚ðo—Í‚µ‚Ü‚·B - - Arguments: dstp - info - - Returns: o—̓f[ƒ^ƒTƒCƒY - *---------------------------------------------------------------------------*/ -static u32 -RCExportTable_( u8* dstp, RCCompressionInfo* info ) -{ - u32 tableSize = (1 << info->bitSize); - u32 cnt = 0; - u32 i; - - // •p“xƒe[ƒuƒ‹‚Ìo—Í(16bitƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“) - for ( i = 0; i < tableSize; i++ ) - { - dstp[ cnt++ ] = (u8)( info->freq[ i ] ); - dstp[ cnt++ ] = (u8)( info->freq[ i ] >> 8 ); - } - return cnt; -} - -/*---------------------------------------------------------------------------* - Name: RCImportTable_ - - Description: - - Arguments: info - srcp - srcRemainSize - - Returns: - *---------------------------------------------------------------------------*/ -static u32 -RCImportTable_( RCCompressionInfo* info, const u8* srcp, u32 srcRemainSize ) -{ - u32 tableSize = (1 << info->bitSize); - u32 cnt = 0; - u32 i; - - if ( srcRemainSize < tableSize * sizeof(u16) ) - { - return srcRemainSize; - } - - // •p“xƒe[ƒuƒ‹‚̃Cƒ“ƒ|[ƒg(16bitƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“) - for ( i = 0; i < tableSize; i++ ) - { - info->freq[ i ] = srcp[ cnt ] | ( srcp[ cnt + 1 ] << 8 ); - cnt += 2; - } - info->low_cnt[ 0 ] = 0; - info->total = info->freq[ 0 ]; - for ( i = 1; i < tableSize; i++ ) - { - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - info->total += info->freq[ i ]; - } - return cnt; -} - -/*---------------------------------------------------------------------------* - Name: RCNormalizeTable_ - - Description: RCƒe[ƒuƒ‹‚̳‹K‰» - - Arguments: info - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCNormalizeTable_( RCCompressionInfo* info ) -{ - u32 tableSize = (1 << info->bitSize); - u32 i; - - // ƒg[ƒ^ƒ‹‚̃JƒEƒ“ƒg - info->total = 0; - for ( i = 0; i < tableSize; i++ ) - { - info->total += info->freq[ i ]; - } - - // ³‹K‰» - // 0x10000‚Ö³‹K‰» - #define NORMAL_FREQ 0x10000 - { - f32 rate = (f32)NORMAL_FREQ / info->total; - u32 max_i = 0; - u32 max_freq = 0; - - info->total = 0; - for ( i = 0; i < tableSize; i++ ) - { - u32 orig = info->freq[ i ]; - info->freq[ i ] = (u32)(rate * info->freq[ i ] + 0.5f); - if ( orig != 0 && info->freq[ i ] == 0 ) - { - info->freq[ i ] = 1; - } - - info->total += info->freq[ i ]; - if ( info->freq[ i ] >= max_freq ) - { - max_i = i; - max_freq = info->freq[ i ]; - } - } - // Å‚àoŒ»•p“x‚Ì‚‚¢’l‚ðŒë·’²®‚É—˜—p - if ( info->total > NORMAL_FREQ ) - { - info->freq[ max_i ] -= (info->total - NORMAL_FREQ); - } - else - { - info->freq[ max_i ] += (NORMAL_FREQ - info->total); - } - info->total = NORMAL_FREQ; - } - #undef NORMAL_FREQ - - // low_cnt‚ÌŒvŽZ - info->low_cnt[ 0 ] = 0; - for ( i = 1; i < tableSize; i++ ) - { - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - } -} - - -/*---------------------------------------------------------------------------* - Name: RCCountData_ - - Description: LZˆ³k‚µ‚½ƒf[ƒ^‚©‚çÓIƒŒƒ“ƒWƒR[ƒ_—p‚̃e[ƒuƒ‹‚ð쬂µ‚Ü‚·B - - Arguments: srcp - srcSize - info8 - info16 - - Returns: - *---------------------------------------------------------------------------*/ -static void -RCCountData_( const u8* srcp, u32 srcSize, RCCompressionInfo* info8, RCCompressionInfo* info16 ) -{ - u32 srcCnt = 0; - u32 i; - - while ( srcCnt < srcSize ) - { - u8 compFlags = srcp[ srcCnt++ ]; // ˆ³k‚Ì—L–³‚ðŽ¦‚·ƒtƒ‰ƒO—ñ - for ( i = 0; i < 8; i++ ) - { - if ( compFlags & 0x80 ) // ˆ³k‚³‚ê‚Ä‚¢‚éAlength:8, offset:16 - { - u8 length = srcp[ srcCnt++ ]; - u16 offset = srcp[ srcCnt++ ]; // ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ - offset |= (srcp[ srcCnt++ ] << 8); - - #if BLEND_COMP_FLAG - info8->freq[ length | 0x100 ]++; - #else - info8->freq[ length ]++; - #endif - #if !defined( LRC_ENC_OFFSET_WIDTH ) - info16->freq[ offset ]++; - #else - { - u32 offset_bit = 0; - while ( offset != 0 ) - { - ++offset_bit; - offset >>= 1; - } - info16->freq[ offset_bit ]++; - } - #endif - } - else - { - u8 data = srcp[ srcCnt++ ]; - info8->freq[ data ]++; - } - compFlags <<= 1; - if ( srcCnt >= srcSize ) - { - break; - } - } - } - - RCNormalizeTable_( info8 ); - RCNormalizeTable_( info16 ); -} - - - -/*---------------------------------------------------------------------------* - Name: RCAInitInfo_ - - Description: “K‰žŒ^ƒŒƒ“ƒWƒR[ƒ_‚̃e[ƒuƒ‹‰Šú‰» - ‚·‚ׂĂÌoŒ»•p“x‚ð1‚ʼnŠú‰»‚µ‚Ü‚·B - - Arguments: info - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCAInitInfo_( RCCompressionInfo* info, u8 bitSize ) -{ - u32 tableSize = (1 << bitSize); - u32 i; - - info->bitSize = bitSize; - info->freq = (u32*)malloc( sizeof(u32) * tableSize ); - info->low_cnt = (u32*)malloc( sizeof(u32) * tableSize ); - - for ( i = 0; i < tableSize; i++ ) - { - info->freq[ i ] = 1; - info->low_cnt[ i ] = i; - } - info->total = tableSize; -} - - -/*---------------------------------------------------------------------------* - Name: RCAAddCount_ - - Description: “K‰žŒ^ƒŒƒ“ƒWƒR[ƒ_‚Ì•p“xƒe[ƒuƒ‹‚ðXV‚µ‚Ü‚·B - - Arguments: info - val - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCAAddCount_( RCCompressionInfo* info, u16 val ) -{ - u32 i; - u32 tableSize = (1 << info->bitSize); - - info->freq[ val ]++; - info->total++; - for ( i = val + 1; i < tableSize; i++ ) - { - info->low_cnt[ i ]++; - } - - // ƒg[ƒ^ƒ‹‚ªÅ‘å’l‚ð‰z‚¦‚½ê‡‚É‚ÍAÄ\¬‚·‚éB - if ( info->total >= 0x00010000 ) - { - if ( info->freq[ 0 ] > 1 ) - { - info->freq[ 0 ] = info->freq[ 0 ] / 2; - } - info->low_cnt[ 0 ] = 0; - info->total = info->freq[ 0 ]; - - for ( i = 1; i < tableSize; i++ ) - { - if ( info->freq[ i ] > 1 ) - { - info->freq[ i ] >>= 1; - } - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - info->total += info->freq[ i ]; - } - } -} - - -/*---------------------------------------------------------------------------* - Name: ConvertRC - Description: - Arguments: info - data - stream - Returns: None. - *---------------------------------------------------------------------------*/ -static void -ConvertRC( RCCompressionInfo* info, u16 data, BitStream* stream, RCState* state, BOOL adaptive ) -{ -#define MIN_RANGE 0x01000000 - u32 temp = state->range / info->total; - u32 prevLow = state->low; - - state->low += info->low_cnt[ data ] * temp; - state->range = info->freq[ data ] * temp; - - if ( adaptive ) - { - // oŒ»•p“xƒe[ƒuƒ‹‚ðXV - RCAAddCount_( info, data ); - } - - // Œ…オ‚肪”­¶‚·‚éꇂ̈— - if ( prevLow > state->low ) - { - // ƒLƒƒƒŠ[‚ð‚P‚­‚èã‚° - state->carry++; - // ƒLƒƒƒŠ[‚Æ(ƒLƒƒƒŠ[ƒJƒEƒ“ƒ^ - 1)ŒÂ‚Ì0x00‚ðo—Í‚µ‚Ü‚·B - if ( state->carry_cnt > 1 ) - { - BitStream_Write( stream, state->carry, RC_UNIT_BITS ); - state->carry_cnt--; - state->carry = 0x00; - } - while ( state->carry_cnt > 1 ) - { - BitStream_Write( stream, 0x00, RC_UNIT_BITS ); - state->carry_cnt--; - } - } - - // Range‚ÌãˆÊ1ƒoƒCƒg‚ª‹ó‚ɂȂÁ‚½‚猅グ - while ( state->range < MIN_RANGE ) - { - u8 candidate = (u8)( state->low >> 24 ); - // ŽŸ‚̃LƒƒƒŠ[‚ª0xFF‚ÌꇂÍX‚ÉŒ…ã‚°‚ª‚ ‚蓾‚é‚Ì‚Åcarry‚ðo—Í‚¹‚¸‚Écarry_cnt‚¾‚¯‘‚â‚· - if ( candidate == 0xFF ) - { - state->carry_cnt++; - } - else - // ŽŸ‚̃LƒƒƒŠ[‚ª0xFF‚ł͂Ȃ¢ê‡‚Ícarry‚ðo—Í‚·‚é - { - // carry‚Æ(carry_cnt - 1)•ª‚Ì0xFF‚ðo—Í‚·‚é - if ( state->carry_cnt > 0 ) - { - BitStream_Write( stream, state->carry, RC_UNIT_BITS ); - state->carry_cnt--; - } - while ( state->carry_cnt > 0 ) - { - BitStream_Write( stream, 0xFF, RC_UNIT_BITS ); - state->carry_cnt--; - } - // V‚µ‚¢carry‚É’u‚«Š·‚¦ - state->carry = candidate; - state->carry_cnt = 1; - } - state->low <<= 8; - state->range <<= 8; - } -#undef MIN_RANGE -} - -/*---------------------------------------------------------------------------* - Name: FinalizeRC_ - Description: - Arguments: srcp - tmpSize - dstp - info8 - info16 - Returns: - *---------------------------------------------------------------------------*/ -static void -FinalizeRC_( BitStream* stream, RCState* state ) -{ - // carry‚Æ(carry_cnt - 1)•ª‚Ì0xFF‚ðo—Í‚·‚é - if ( state->carry_cnt > 0 ) - { - BitStream_Write( stream, state->carry, RC_UNIT_BITS ); - state->carry_cnt--; - } - while ( state->carry_cnt > 0 ) - { - BitStream_Write( stream, 0xFF, RC_UNIT_BITS ); - state->carry_cnt--; - } - // low‚ÉŽc‚Á‚½ƒf[ƒ^‚ð‘‚«o‚· - BitStream_Write( stream, state->low >> 24, RC_UNIT_BITS ); - BitStream_Write( stream, state->low >> 16, RC_UNIT_BITS ); - BitStream_Write( stream, state->low >> 8, RC_UNIT_BITS ); - BitStream_Write( stream, state->low , RC_UNIT_BITS ); -} - - -/*---------------------------------------------------------------------------* - Name: LZConvertDataRC - Description: - Arguments: srcp - tmpSize - dstp - info8 - info16 - Returns: - *---------------------------------------------------------------------------*/ -static u32 -LZConvertDataRC( const u8* srcp, u32 srcSize, u8* dstp, RCCompressionInfo* info8, RCCompressionInfo* info16 ) -{ - u32 srcCnt = 0; - u32 dstCnt = 0; - - BitStream stream; - RCState rcState; - - RCInitState_( &rcState ); - - BitStream_Init( &stream, dstp ); - - while ( srcCnt < srcSize ) - { - u32 i; - u8 compFlags = srcp[ srcCnt++ ]; // ˆ³k‚Ì—L–³‚ðŽ¦‚·ƒtƒ‰ƒO—ñ - - for ( i = 0; i < 8; i++ ) - { - if ( compFlags & 0x80 ) // ˆ³k‚³‚ê‚Ä‚¢‚éAlength:8, offset:16 - { - u8 length = srcp[ srcCnt++ ]; - u16 offset = srcp[ srcCnt++ ]; // ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“ - offset |= srcp[ srcCnt++ ] << 8; - - // length | 0x100‚ðƒŒƒ“ƒWƒR[ƒ_‚ÉŠ|‚¯‚é - ConvertRC( info8, length | 0x100, &stream, &rcState, TABLE8_ADAPTIVE ); - - #if !defined( LRC_ENC_OFFSET_WIDTH ) // ƒe[ƒuƒ‹ƒTƒCƒY‚ª‘å‚«‚¢‚̂ŋ­§“I‚É“K‰žŒ^ - ConvertRC( info16, offset, &stream, &rcState, TABLE16_ADAPTIVE ); - #else - { - u16 offset_bit = 0; - u16 offset_tmp = offset; - while ( offset_tmp > 0 ) - { - offset_tmp >>= 1; - ++offset_bit; - } - ConvertRC( info16, offset_bit, &stream, &rcState, TABLE16_ADAPTIVE ); - // offset‚ª0‚Å‚ ‚邱‚Ƃ͂Ȃ¢‚Ì‚ÅAÅãˆÊ‚̃rƒbƒg‚ÍÈ—ª‚·‚é - BitStream_Write( &stream, offset & ~(1 << (offset_bit - 1)), offset_bit - 1 ); - } - #endif - } - else - { - u8 data = srcp[ srcCnt++ ]; - - ConvertRC( info8, data, &stream, &rcState, TABLE8_ADAPTIVE ); - } - compFlags <<= 1; - if ( srcCnt >= srcSize ) - { - break; - } - } - } - // carry‚Ælow‚ÉŽc‚Á‚½ƒf[ƒ^‚ð“f‚«o‚· - FinalizeRC_( &stream, &rcState ); - - BitStream_Terminate( &stream, 4 ); - return stream.cnt; -} - - -/*---------------------------------------------------------------------------* - Name: LRCCompWrite - - Description: - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -u32 LRCCompWrite( const u8* srcp, u32 srcSize, u8* dstp ) -{ - RCCompressionInfo sRCInfo8; - RCCompressionInfo sRCInfo16; - - u32 tmpSize; - u32 dstSize; - u8* tmpBuf = (u8*)malloc( srcSize * 3 ); - // ‚Ü‚¸‚Ísrcp‚ð•’Ê‚ÉLZˆ³k - tmpSize = LZCompWrite_( srcp, srcSize, tmpBuf, 2, LRC_OFFSET_BITS ); - - // ƒe[ƒuƒ‹‰Šú‰» - RCInitInfo_( &sRCInfo8, LENGTH_BITS ); - RCInitInfo_( &sRCInfo16, LRC_OFFSET_TABLE_BITS ); - - dstSize = 0; - - // ƒwƒbƒ_‚Ì‘‚«ž‚Ý - if ( srcSize < 0x1000000 && srcSize > 0 ) - { - *(u32*)dstp = LRC_CODE_HEADER | ( srcSize << 8 ); - dstSize = 4; - } - else - { - *(u32*)dstp = LRC_CODE_HEADER; - *(u32*)&dstp[4] = srcSize; - dstSize = 8; - } - - // ÓIƒŒƒ“ƒWƒR[ƒ_‚Ì•p“x•\‚ð쬂¾‚¯‚µ‚Ä‚¨‚­(Žg—p‚·‚é‚©‚Ç‚¤‚©‚̓IƒvƒVƒ‡ƒ“ŽŸ‘æ) - RCCountData_( tmpBuf, tmpSize, &sRCInfo8, &sRCInfo16 ); - -#if TABLE8_ADAPTIVE - RCAInitInfo_( &sRCInfo8, LENGTH_BITS ); -#else // if (! TABLE8_ADAPTIVE ) - dstSize += RCExportTable_( &dstp[ dstSize ], &sRCInfo8 ); -#endif - -#if TABLE16_ADAPTIVE - RCAInitInfo_( &sRCInfo16, LRC_OFFSET_TABLE_BITS ); -#else // if (! TABLE16_ADAPTIVE ) - dstSize += RCExportTable_( &dstp[ dstSize ], &sRCInfo16 ); -#endif - - // ˆ³kŒ‹‰Ê‚ðƒŒƒ“ƒWƒR[ƒ_•„†‰»‚µ‚È‚ª‚ço—Í - dstSize += LZConvertDataRC( tmpBuf, tmpSize, &dstp[ dstSize ], &sRCInfo8, &sRCInfo16 ); - - return dstSize; -} - - - -/*---------------------------------------------------------------------------* - Name: SearchRC_ - - Description: - - Arguments: info - code - range - low - - Returns: - *---------------------------------------------------------------------------*/ -static u16 -SearchRC_( RCCompressionInfo* info, u32 code, u32 range, u32 low ) -{ - u32 tableSize = (1 << info->bitSize); - u32 codeVal = code - low; - u32 i; - u32 temp = range / info->total; - u32 tempVal = codeVal / temp; - -#if 0 - // TODO: ‚Ƃ肠‚¦‚¸üŒ`’TõA“ñ•ª’Tõ‚É‚·‚é‚ׂ« - for ( i = 0; i < tableSize - 1; i++ ) - { - if ( info->low_cnt[ i + 1 ] > tempVal ) - { - while ( info->freq[ i ] == 0 ) - { - --i; - } - return (u16)i; - } - } - return (u16)( (1 << info->bitSize) - 1 ); -#else - // “ñ•ª’Tõ - u32 left = 0; - u32 right = tableSize - 1; - - while ( left < right ) - { - i = (left + right) / 2; - - if ( info->low_cnt[ i ] > tempVal ) - { - right = i; - } - else - { - left = i + 1; - } - } - - i = left; - while ( info->low_cnt[ i ] > tempVal ) - { - --i; - } - return (u16)i; - -#endif -} - - - -static u16 -RCGetDate_( BitReader* stream, RCCompressionInfo* info, RCState* state, BOOL adaptive ) -{ -#define MIN_RANGE 0x01000000 - u16 val = SearchRC_( info, state->code, state->range, state->low ); - - { - u32 tmp; - tmp = state->range / info->total; - state->low += info->low_cnt[ val ] * tmp; - state->range = info->freq[ val ] * tmp; - } - - // oŒ»•p“xƒe[ƒuƒ‹‚ðXV - if ( adaptive ) - { - RCAAddCount_( info, val ); - } - while ( state->range < MIN_RANGE ) - { - state->code <<= 8; - state->code += BitReader_ReadEx( stream, 8 ); - state->range <<= 8; - state->low <<= 8; - } - return val; -#undef MIN_RANGE -} - - -/*---------------------------------------------------------------------------* - Name: LRCCompRead - - Description: - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 LRCCompRead( const u8* srcp, u32 srcSize, u8* dstp ) -{ - RCCompressionInfo sRCInfo8; - RCCompressionInfo sRCInfo16; - RCState rcState; - - u32 dstSize; - u32 srcCnt = 0; - u32 dstCnt = 0; - BitReader stream; - - if ( srcSize < 4 ) - { - return -1; - } - - // ƒwƒbƒ_‚̓ǂݞ‚Ý - dstSize = *(u32*)srcp >> 8; - srcCnt = 4; - if ( dstSize == 0 ) - { - if ( srcSize < 8 ) - { - return -1; - } - dstSize = *(u32*)(srcp + 4); - srcCnt += 4; - } - - // RC•p“xƒe[ƒuƒ‹‚ð“Ç‚Þ -#if TABLE8_ADAPTIVE - RCAInitInfo_( &sRCInfo8, LENGTH_BITS ); -#else - RCInitInfo_( &sRCInfo8, LENGTH_BITS ); - srcCnt += RCImportTable_( &sRCInfo8, &srcp[ srcCnt ], srcSize - srcCnt ); -#endif -#if TABLE16_ADAPTIVE - RCAInitInfo_( &sRCInfo16, LRC_OFFSET_TABLE_BITS ); -#else - RCInitInfo_( &sRCInfo16, LRC_OFFSET_TABLE_BITS ); - srcCnt += RCImportTable_( &sRCInfo16, &srcp[ srcCnt ], srcSize - srcCnt ); -#endif - - BitReader_Init( &stream, &srcp[ srcCnt ], srcSize - srcCnt ); - - if ( srcSize - srcCnt <= 4 ) - { - // Å’á‚Å‚à‰‰ñ‚̃R[ƒh•ª‚Ì4Byte‚Í•K—v - return -1; - } - - RCInitState_( &rcState ); - - rcState.code = (u32)( (BitReader_ReadEx( &stream, 8 ) << 24) | - (BitReader_ReadEx( &stream, 8 ) << 16) | - (BitReader_ReadEx( &stream, 8 ) << 8) | - (BitReader_ReadEx( &stream, 8 ) ) ); - - while ( dstCnt < dstSize ) - { - u16 val = (u16)( RCGetDate_( &stream, &sRCInfo8, &rcState, TABLE8_ADAPTIVE ) ); - - if ( val < 0x100 ) - // ”ñˆ³kƒf[ƒ^ - { - dstp[ dstCnt++ ] = (u8)val; - } - else - // ˆ³kƒf[ƒ^ - { - u16 length = (val & 0xFF) + 3; - val = (u16)( RCGetDate_( &stream, &sRCInfo16, &rcState, TABLE16_ADAPTIVE ) ); - - #if defined( LRC_ENC_OFFSET_WIDTH ) - { - u16 offset_bit = val; - val = 0; - if ( offset_bit > 0 ) - { - val = 1; - while ( --offset_bit > 0 ) - { - val <<= 1; - val |= BitReader_Read( &stream ); - } - } - } - #endif - val += 1; - - // ƒoƒbƒtƒ@ƒI[ƒo[ƒ‰ƒ“‚ðƒ`ƒFƒbƒN - if ( dstCnt + length > dstSize ) - { - return -1; - } - if ( dstCnt < val ) - { - return -1; - } - if ( srcCnt + stream.cnt > srcSize ) - { - return -1; - } - - while ( length-- > 0 ) - { - dstp[ dstCnt ] = dstp[ dstCnt - val ]; - ++dstCnt; - } - } - } - - return dstCnt; -} - - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.h deleted file mode 100644 index 72dc2e5b..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/multipleCompLib.h +++ /dev/null @@ -1,55 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: multipleCompLib.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -// nitroCompLib.h : nitroCompLib.DLL ‚̃ƒCƒ“ ƒwƒbƒ_[ ƒtƒ@ƒCƒ‹ -// - -#ifndef __MULTIPLE_COMPLIB_H__ -#define __MULTIPLE_COMPLIB_H__ - -//=========================================================================================== -// ƒCƒ“ƒNƒ‹[ƒh -//=========================================================================================== -#include -#include -#include -#include -#include "types.h" - -//=========================================================================================== -// ƒvƒƒgƒ^ƒCƒv錾 -//=========================================================================================== -// C++—p -#ifdef __cplusplus -extern "C" -{ -#endif - -s32 LHCompRead( const u8* srcp, u32 srcSize, u8* dstp ); - -u32 LHCompWrite( const u8* srcp, s32 size, u8* dstp ); - -s32 LRCCompRead( const u8* srcp, u32 srcSize, u8* dstp ); - -u32 LRCCompWrite( const u8* srcp, u32 size, u8* dstp ); - - -#ifdef __cplusplus -} -#endif - -#endif // __MULTIPLEX_COMPLIB_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.c deleted file mode 100644 index 135f7a45..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.c +++ /dev/null @@ -1,2282 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: nitroCompLib.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "nitroCompLib.h" - -#undef _DEBUG -#ifdef _DEBUG -#define new DEBUG_NEW -#define DEBUG_PRINT -// #define DEBUG_PRINT_DIFFFILT -#define DEBUG_PRINT_RL -// #define DEBUG_PRINT_HUFF -// #define DEBUG_PRINT_LZ -// #define DEBUG_PRINT_DATAMATCH -#endif - - -#ifdef __cplusplus -#define EXTERN extern "C" -#define STATIC -#else -#define EXTERN -#define STATIC static -#endif - - -#ifdef DEBUG_PRINT -#define dbg_printf fprintf -#else -#define dbg_printf dummy -#endif - -#ifdef DEBUG_PRINT_DIFFFILT -#define dbg_printf_dif fprintf -#else -#define dbg_printf_dif dummy -#endif - -#ifdef DEBUG_PRINT_RL -#define dbg_printf_rl fprintf -#else -#define dbg_printf_rl dummy -#endif - -#ifdef DEBGU_PRINT_HUFF -#define dbg_printf_huff fprintf -#else -#define dbg_printf_huff dummy -#endif - -#ifdef DEBGU_PRINT_LZ -#define dbg_printf_lz fprintf -#else -#define dbg_printf_lz dummy -#endif - -#ifdef DEBUG_PRINT_DATAMATCH -#define dbg_printf_match fprintf -#else -#define dbg_printf_match dummy -#endif - -void dummy(void *fp, ...) -{ -} - - -//================================================================================== -// ƒOƒ[ƒoƒ‹•ϔ錾 -//================================================================================== -static u8 *pCompBuf[2]; // ˆ³kˆ—’†‚É—p‚¢‚éƒ_ƒuƒ‹ƒoƒbƒtƒ@ -static u8 compBufNo = 1; // —LŒø‚ȃ_ƒuƒ‹ƒoƒbƒtƒ@‚ðŽ¦‚· - -//================================================================================== -// ƒvƒƒgƒ^ƒCƒv錾 -//================================================================================== -static u32 RawWrite(u8 *srcp, u32 size, u8 *dstp); -static u32 DiffFiltWrite(u8 *srcp, u32 size, u8 *dstp, u8 diffBitSize); -static u32 RLCompWrite(u8 *srcp, u32 size, u8 *dstp); -static u32 LZCompWriteEx(u8 *srcp, u32 size, u8 *dstp, u8 lzSearchOffset, BOOL ex_available); -static u32 HuffCompWrite(u8 *srcp, u32 size, u8 *dstp, u8 huffBitSize); - -static s32 RawRead ( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ); -static s32 DiffFiltRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, u8 diffBitSize ); -static s32 RLCompRead ( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ); -static s32 LZCompReadEx( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, BOOL ex_available ); -static s32 HuffCompRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, u8 huffBitSize ); - -/* -//================================================================================== -// DLL—pŠÖ” -//================================================================================== -EXTERN BOOL WINAPI DllMain( HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved) -{ - return TRUE; -} -*/ - -//---------------------------------------------------------------------------------- -// ˆ³kŒã‚̃f[ƒ^‚ð’u‚­‚½‚߂̃ƒ‚ƒŠ—̈æ‚ðŠm•Û -// ˆ³k‘O‚̃f[ƒ^‚Ì2”{‚̗̈æ‚ðŠm•Û‚·‚é -//---------------------------------------------------------------------------------- -EXTERN u8 * STDCALL nitroCompMalloc(u32 size) -{ - return (u8 *)malloc(size * 3 + 512); -} - -//---------------------------------------------------------------------------------- -// ˆ³kŒã‚̃f[ƒ^‚ð’u‚¢‚Ä‚¢‚½ƒƒ‚ƒŠ—̈æ‚ð‰ð•ú -//---------------------------------------------------------------------------------- -EXTERN void STDCALL nitroCompFree(u8 *p) -{ - if (p != NULL) - { - free((void *)p); - p = NULL; - } -} - -//------------------------------------------------------------ -// ƒf[ƒ^‚̈³k -//------------------------------------------------------------ -EXTERN u32 STDCALL nitroCompress( const u8 *srcp, u32 srcSize, u8 *dstp, char *compList, u8 rawHeaderFlag ) -{ - char *pCompList; // compList‚ÌŒ»Ý‚ÌŽQƃ|ƒCƒ“ƒg - u32 dataSize, nextDataSize; // ˆ³kƒf[ƒ^‚̃TƒCƒY(ƒoƒCƒg’PˆÊ) - u8 *pReadBuf; // ˆ³kƒf[ƒ^‚Ìæ“ª”Ô’n‚ðŽw‚·ƒ|ƒCƒ“ƒ^ - u8 bitSize; // ·•ªƒtƒBƒ‹ƒ^Cƒnƒtƒ}ƒ“•„†‰»‚Ì“K—p’PˆÊ - char str[16]; - u16 i, j; - u8 lzSearchOffset; - -// pCompBuf[0] = (u8 *)malloc(srcSize*2 + 4 + 256*2); // ň«‚̃nƒtƒ}ƒ“‚ª size*2 + 4 + 256*2 ‚Ȃ̂ÅA -// pCompBuf[1] = (u8 *)malloc(srcSize*2 + 4 + 256*2); // ‚»‚Ì‘¼‚̈³k‚âƒf[ƒ^ƒwƒbƒ_’ljÁ‚ÅA•s‘«‚·‚é‰Â”\«‚ ‚è - pCompBuf[0] = (u8 *)malloc(srcSize * 3 + 256 * 2); - pCompBuf[1] = (u8 *)malloc(srcSize * 3 + 256 * 2); - pReadBuf = pCompBuf[0]; - compBufNo = 1; // d—v!!@‚±‚ê‚ð‚µ‚È‚¢‚Æ‚Q‰ñ–Ú‚ÉnitroCompress‚ðŒÄ‚Ño‚µ‚½‚Æ‚«‚É‚¨‚©‚µ‚­‚È‚é - - // malloc ƒ`ƒFƒbƒN - if (pCompBuf[0] == NULL || pCompBuf[1] == NULL) - { - fprintf(stderr, "Error: Memory is not enough.\n"); - exit(1); - } - - dataSize = srcSize; - - // NULLƒwƒbƒ_(ˆ³k‘O‚̃f[ƒ^—p‚ÌA‹[Ž—ƒwƒbƒ_) ‚̒ljÁˆ— - if (rawHeaderFlag) - { - dataSize += 4; - *(u32 *)pReadBuf = srcSize << 8 | 0; // ƒf[ƒ^Eƒwƒbƒ_ - memcpy(&pReadBuf[4], srcp, srcSize); - } - else - { - memcpy(pReadBuf, srcp, srcSize); - } - - pCompList = compList; // ˆ³k‡˜‚ðŠi”[‚µ‚½”z—ñ‚ðƒ|ƒCƒ“ƒg - - // ˆ³k‡˜‚ðŠi”[‚µ‚½”z—ñ‚É—v‘f‚ª‚ ‚éŒÀ‚èAƒ‹[ƒv - while (1) - { - switch (*pCompList) - { - case 'd': - { - pCompList++; // 'd' ‚ÌŽŸ‚É‚ÍA8 ‚© 16 - str[0] = *pCompList; - if (*pCompList == '1') - { - pCompList++; - str[1] = *pCompList; - str[2] = '\n'; - } - bitSize = atoi(str); // ·•ªƒtƒBƒ‹ƒ^‚Ì“K—p’PˆÊ‚ðŠi”[ - str[0] = str[1] = '\n'; - - dbg_printf(stderr, "nitroCompress Diff %d\n", bitSize); - - if ((bitSize == 16) && (dataSize & 0x01)) - { - fprintf(stderr, "16-bit differencial filter must be 2-byte allignment.\n"); - exit(1); - } - nextDataSize = DiffFiltWrite(pReadBuf, dataSize, pCompBuf[compBufNo], bitSize); - } - break; - - case 'r': - { - dbg_printf(stderr, "nitroCompress RL\n"); - - nextDataSize = RLCompWrite(pReadBuf, dataSize, pCompBuf[compBufNo]); - } - break; - - case 'l': - case 'L': - { - BOOL ex_format = (*pCompList == 'L')? TRUE : FALSE; - - pCompList++; - i = 0; - while (isdigit(*pCompList)) - { - str[i] = *pCompList; - pCompList++; - i++; - if (i == 15) - { - break; - } - } - str[i] = '\n'; - pCompList--; - lzSearchOffset = (u8)atoi(str); // ‘å‚«‚È’l‚ÍØ‚èŽÌ‚Ä‚ÄŠÛ‚ß - for (j = 0; j < i; j++) - { - str[j] = '\n'; - } - dbg_printf(stderr, "nitroCompress L %d\n", lzSearchOffset); - - nextDataSize = LZCompWriteEx(pReadBuf, dataSize, pCompBuf[compBufNo], lzSearchOffset, ex_format); - } - break; - - case 'h': - { - pCompList++; // 'h' ‚ÌŽŸ‚É‚ÍA4 ‚© 8 - str[0] = *pCompList; - str[1] = '\n'; - bitSize = atoi(str); // 4 or 8 - str[0] = '\n'; - - dbg_printf(stderr, "nitroCompress Huff %d\n", bitSize); - - nextDataSize = HuffCompWrite(pReadBuf, dataSize, pCompBuf[compBufNo], bitSize); - } - break; - //----------------------------------------- - // ˆ³kI—¹ (*CompTypeBufp ‚ª NULL) - default: - { - dbg_printf(stderr, "nitroCompress raw\n"); - - RawWrite(pReadBuf, dataSize, dstp); - if (pCompBuf[0] != NULL) - { - free((void *)pCompBuf[0]); - pCompBuf[0] = NULL; - } - if (pCompBuf[1] != NULL) - { - free(pCompBuf[1]); - pCompBuf[1] = NULL; - } - return dataSize; - } - } - // ‚à‚¤ˆêŽü - pReadBuf = pCompBuf[compBufNo]; - compBufNo ^= 0x01; - dataSize = nextDataSize; - pCompList++; - } -} - - -//=========================================================================== -// ˆ³kƒf[ƒ^‚̃Rƒs[ -//=========================================================================== -static u32 RawWrite(u8 *srcp, u32 size, u8 *dstp) -{ - u32 i; - - dbg_printf(stderr, "RawWrite\tsize=%d\n\n", size); - - size = (size + 0x3) & ~0x3; - for (i = 0; i < size - 1; i++) - { - *dstp = *srcp; - dstp++; - srcp++; - } - *dstp = *srcp; - - return size; -} - - -//=========================================================================== -// ·•ªƒtƒBƒ‹ƒ^ -//=========================================================================== -static u32 DiffFiltWrite(u8 *srcp, u32 size, u8 *dstp, u8 diffBitSize) -{ - u32 DiffCount; // ˆ³kƒf[ƒ^‚̃oƒCƒg” - u32 i; - - u16 *src16p = (u16 *)srcp; - u16 *dst16p = (u16 *)dstp; - - dbg_printf_dif(stderr, "DiffFiltWrite\tsize=%d\tdiffBitSize=%d\n", size, diffBitSize); - - if ( size < 0x1000000 && size > 0 ) - { - *(u32 *)dstp = size << 8 | (DIFF_CODE_HEADER | diffBitSize / 8); // ƒf[ƒ^Eƒwƒbƒ_ - DiffCount = 4; - } - else - { - *(u32 *)dstp = (DIFF_CODE_HEADER | diffBitSize / 8); // ƒf[ƒ^Eƒwƒbƒ_ - *(u32 *)(dstp + 4) = size; - DiffCount = 8; - } - - if (diffBitSize == 8) - { -#ifdef DEBUG_PRINT_DIFFFILT - for (i = 0; i < 16; i++) - { - dbg_printf_dif(stderr, "srcp[%d] = %x\n", i, srcp[i]); - } -#endif - dstp[DiffCount] = srcp[0]; // 擪ƒf[ƒ^‚̂ݷ•ª–³‚µ - DiffCount++; - for (i = 1; i < size; i++, DiffCount++) - { - dbg_printf_dif(stderr, "dstp[%x] = srcp[%d]-srcp[%d] = %x - %x = %x\n", - DiffCount, i, i - 1, srcp[i], srcp[i - 1], srcp[i] - srcp[i - 1]); - - dstp[DiffCount] = srcp[i] - srcp[i - 1]; // ·•ªƒf[ƒ^Ši”[ - } - } - else // 16ƒrƒbƒgƒTƒCƒY - { - dst16p[DiffCount / 2] = src16p[0]; - DiffCount += 2; - for (i = 1; i < size / 2; i++, DiffCount += 2) - { - dst16p[DiffCount / 2] = src16p[i] - src16p[i - 1]; - } - } - - // 4ƒoƒCƒg‹«ŠEƒAƒ‰ƒCƒ“ƒƒ“ƒg - // ƒAƒ‰ƒCƒ“ƒƒ“ƒg—pƒf[ƒ^0 ‚̓f[ƒ^ƒTƒCƒY‚Ɋ܂߂Ȃ¢ - i = 0; - while ((DiffCount + i) & 0x3) - { - dstp[DiffCount + i] = 0; - i++; - } - - return DiffCount; -} - - -//=========================================================================== -// ƒ‰ƒ“ƒŒƒ“ƒOƒX•„†‰» (ƒoƒCƒg’PˆÊ) -//=========================================================================== -static u32 RLCompWrite(u8 *srcp, u32 size, u8 *dstp) -{ - u32 RLDstCount; // ˆ³kƒf[ƒ^‚̃oƒCƒg” - u32 RLSrcCount; // ˆ³k‘ÎÛƒf[ƒ^‚̈—σf[ƒ^—Ê(ƒoƒCƒg’PˆÊ) - u8 RLCompFlag; // ƒ‰ƒ“ƒŒƒ“ƒOƒX•„†‰»‚ðs‚¤ê‡‚P - u8 runLength; // ƒ‰ƒ“ƒŒƒ“ƒOƒX - u8 rawDataLength; // ƒ‰ƒ“‚ɂȂÁ‚Ä‚¢‚È‚¢ƒf[ƒ^‚̃Œƒ“ƒOƒX - u32 i; - - u8 *startp; // ˆê‰ñ‚̈—ƒ‹[ƒv‚É‚¨‚¯‚éAˆ³k‘ÎÛƒf[ƒ^‚Ìæ“ª‚ðƒ|ƒCƒ“ƒg - - dbg_printf_rl(stderr, "RLCompWrite\tsize=%d\n", size); - - // ƒf[ƒ^ƒwƒbƒ_ (ƒTƒCƒY‚Í“WŠJŒã‚Ì‚à‚Ì) - if ( size < 0x1000000 && size > 0 ) - { - *(u32 *)dstp = size << 8 | RL_CODE_HEADER; // ƒf[ƒ^Eƒwƒbƒ_ - RLDstCount = 4; - } - else - // ƒTƒCƒY‚ª24bit‚ÉŽû‚Ü‚ç‚È‚¢ê‡‚ɂ͊g’£Œ`Ž®‚̃wƒbƒ_‚ƂȂé - { - *(u32 *)dstp = RL_CODE_HEADER; - *(u32 *)(dstp + 4) = size; - RLDstCount = 8; - } - - RLSrcCount = 0; - rawDataLength = 0; - RLCompFlag = 0; - - while (RLSrcCount < size) - { - startp = &srcp[RLSrcCount]; // ˆ³k‘ÎÛƒf[ƒ^‚ÌÝ’è - - for (i = 0; i < 128; i++) // 7ƒrƒbƒg‚Å•\Œ»‚Å‚«‚éƒf[ƒ^—Ê‚ª 0~127 - { - // ˆ³k‘ÎÛƒf[ƒ^‚Ì––”ö‚É“ž’B - if (RLSrcCount + rawDataLength >= size) - { - rawDataLength = (u8)(size - RLSrcCount); - break; - } - - if (RLSrcCount + rawDataLength + 2 < size) - { - if (startp[i] == startp[i + 1] && startp[i] == startp[i + 2]) - { - RLCompFlag = 1; - break; - } - } - rawDataLength++; - } - - // •„†‰»‚µ‚È‚¢ƒf[ƒ^‚ðŠi”[ - // ƒf[ƒ^’·Ši”[ƒoƒCƒg‚Ì8ƒrƒbƒg–Ú‚ª0‚È‚çA•„†‰»‚µ‚È‚¢ƒf[ƒ^Œn—ñ - // ƒf[ƒ^’·‚Í -1 ‚µ‚½”‚ɂȂé‚Ì‚ÅA0-127 ‚ª 1-128 ‚ƂȂé - if (rawDataLength) - { - dstp[RLDstCount++] = rawDataLength - 1; // "ƒf[ƒ^’·-1" Ši”[(7ƒrƒbƒg) - for (i = 0; i < rawDataLength; i++) - { - dstp[RLDstCount++] = srcp[RLSrcCount++]; - } - rawDataLength = 0; - } - - // ƒ‰ƒ“ƒŒƒ“ƒOƒX•„†‰» - if (RLCompFlag) - { - runLength = 3; - for (i = 3; i < 128 + 2; i++) - { - // ˆ³k—pƒf[ƒ^‚Ì––”ö‚É“ž’B - if (RLSrcCount + runLength >= size) - { - runLength = (u8)(size - RLSrcCount); - break; - } - - // ƒ‰ƒ“‚ª“rØ‚ê‚½ê‡ - if (srcp[RLSrcCount] != srcp[RLSrcCount + runLength]) - { - break; - } - // ƒ‰ƒ“Œp‘±’† - runLength++; - } - - // ƒf[ƒ^’·Ši”[ƒoƒCƒg‚Ì8ƒrƒbƒg–Ú‚ª1‚È‚çA•„†‰»‚µ‚½ƒf[ƒ^Œn—ñ - dstp[RLDstCount++] = 0x80 | (runLength - 3); // ‚R‚̉º‘Ê‚ð‚Í‚©‚¹‚ÄA3~130‚ðŠi”[ - dstp[RLDstCount++] = srcp[RLSrcCount]; - RLSrcCount += runLength; - RLCompFlag = 0; - } - } - - // 4ƒoƒCƒg‹«ŠEƒAƒ‰ƒCƒ“ƒƒ“ƒg - // ƒAƒ‰ƒCƒ“ƒƒ“ƒg—pƒf[ƒ^0 ‚̓f[ƒ^ƒTƒCƒY‚Ɋ܂߂Ȃ¢ - i = 0; - while ((RLDstCount + i) & 0x3) - { - dstp[RLDstCount + i] = 0; - i++; - } - - return RLDstCount; -} - - -//=========================================================================== -// LZ77ˆ³k -//=========================================================================== - -#define LZ_OFFSET_BITS 12 -#define LZ_OFFSET_SIZE (1<LZByteTable[i] = -1; - info->LZEndTable[i] = -1; - } - info->WindowPos = 0; - info->WindowLen = 0; -} - -/*---------------------------------------------------------------------------* - Name: SlideByte - Description: Ž«‘‚ð1ƒoƒCƒgƒXƒ‰ƒCƒh - Arguments: *srcp - work - Returns: None. - *---------------------------------------------------------------------------*/ -static void SlideByte(LZCompressInfo * info, const u8 *srcp) -{ - s16 offset; - u8 in_data = *srcp; - u16 insert_offset; - - s16 *const LZByteTable = info->LZByteTable; - s16 *const LZEndTable = info->LZEndTable; - s16 *const LZOffsetTable = info->LZOffsetTable; - const u16 windowPos = info->WindowPos; - const u16 windowLen = info->WindowLen; - - if (windowLen == LZ_OFFSET_SIZE) - { - u8 out_data = *(srcp - LZ_OFFSET_SIZE); - if ((LZByteTable[out_data] = LZOffsetTable[LZByteTable[out_data]]) == -1) - { - LZEndTable[out_data] = -1; - } - insert_offset = windowPos; - } - else - { - insert_offset = windowLen; - } - - offset = LZEndTable[in_data]; - if (offset == -1) - { - LZByteTable[in_data] = insert_offset; - } - else - { - LZOffsetTable[offset] = insert_offset; - } - LZEndTable[in_data] = insert_offset; - LZOffsetTable[insert_offset] = -1; - - if (windowLen == LZ_OFFSET_SIZE) - { - info->WindowPos = (u16)((windowPos + 1) % LZ_OFFSET_SIZE); - } - else - { - info->WindowLen++; - } -} - -static void LZSlide(LZCompressInfo * info, const u8 *srcp, u32 n) -{ - u32 i; - - for (i = 0; i < n; i++) - { - SlideByte(info, srcp++); - } -} - - -/*---------------------------------------------------------------------------* - Name: LZCompWriteEx - - Description: LZ77ˆ³k‚ðs‚È‚¤ŠÖ”(Å‘ålength‚ÌŠg’£) - - Arguments: srcp ˆ³kŒ³ƒf[ƒ^‚ւ̃|ƒCƒ“ƒ^ - size ˆ³kŒ³ƒf[ƒ^ƒTƒCƒY - dstp ˆ³kæƒf[ƒ^‚ւ̃|ƒCƒ“ƒ^ - ˆ³kŒ³ƒf[ƒ^‚æ‚è‚à‘å‚«‚¢ƒTƒCƒY‚̃oƒbƒtƒ@‚ª•K—v‚Å‚·B - - Returns: ˆ³kŒã‚̃f[ƒ^ƒTƒCƒYB - ˆ³kŒã‚̃f[ƒ^‚ªˆ³k‘O‚æ‚è‚à‘å‚«‚­‚È‚éꇂɂ͈³k‚ð’†’f‚µ0‚ð•Ô‚µ‚Ü‚·B - *---------------------------------------------------------------------------*/ -static u32 LZCompWriteEx(u8 *srcp, u32 size, u8 *dstp, u8 lzSearchOffset, BOOL ex_available ) -{ - static LZCompressInfo sLZInfo; - - u32 LZDstCount; // ˆ³kƒf[ƒ^‚̃oƒCƒg” - u8 LZCompFlags; // ˆ³k‚Ì—L–³‚ðŽ¦‚·ƒtƒ‰ƒOŒn—ñ - u8 *LZCompFlagsp; // LZCompFlags ‚ðŠi”[‚·‚郃‚ƒŠ—̈æ‚ðƒ|ƒCƒ“ƒg - u16 lastOffset; // ˆê’vƒf[ƒ^‚܂ł̃IƒtƒZƒbƒg (‚»‚ÌŽž“_‚Å‚ÌÅ’·ˆê’vƒf[ƒ^) - u32 lastLength; // ˆê’vƒf[ƒ^’· (‚»‚ÌŽž“_‚Å‚ÌÅ’·ˆê’vƒf[ƒ^) - u8 i; - const u32 MAX_LENGTH = (ex_available)? (0xFFFF + 0xFF + 0xF + 3) : (0xF + 3); - - if ( size < 0x1000000 && size > 0 ) - { - *(u32 *)dstp = size << 8 | LZ_CODE_HEADER | (ex_available? 1 : 0 ); // ƒf[ƒ^Eƒwƒbƒ_ - dstp += 4; - LZDstCount = 4; - } - else - { - *(u32 *)dstp = LZ_CODE_HEADER | (ex_available? 1 : 0); - *(u32 *)(dstp + 4) = size; - dstp += 8; - LZDstCount = 8; - } - LZInitTable( &sLZInfo ); - - while (size > 0) - { - LZCompFlags = 0; - LZCompFlagsp = dstp++; // ƒtƒ‰ƒOŒn—ñ‚ÌŠi”[æ - LZDstCount++; - - // ƒtƒ‰ƒOŒn—ñ‚ª8ƒrƒbƒgƒf[ƒ^‚Æ‚µ‚ÄŠi”[‚³‚ê‚邽‚ßA8‰ñƒ‹[ƒv - for (i = 0; i < 8; i++) - { - LZCompFlags <<= 1; // ‰‰ñ (i=0) ‚Í“Á‚ɈӖ¡‚͂Ȃ¢ - if (size <= 0) - { - // I’[‚É—ˆ‚½ê‡‚̓tƒ‰ƒO‚ðÅŒã‚܂ŃVƒtƒg‚³‚¹‚Ä‚©‚çI—¹ - continue; - } - - if ( (lastLength = SearchLZ(&sLZInfo, srcp, size, &lastOffset, lzSearchOffset, MAX_LENGTH)) != 0) - { - u32 length; - // ˆ³k‰Â”\‚Èꇂ̓tƒ‰ƒO‚ð—§‚Ä‚é - LZCompFlags |= 0x1; - - if ( ex_available ) - { - if ( lastLength >= 0xFF + 0xF + 3 ) - { - length = lastLength - 0xFF - 0xF - 3; - *dstp++ = (u8)( 0x10 | (length >> 12) ); - *dstp++ = (u8)( length >> 4 ); - LZDstCount += 2; - } - else if ( lastLength >= 0xF + 2 ) - { - length = lastLength - 0xF - 2; - *dstp++ = (u8)( length >> 4 ); - LZDstCount += 1; - } - else - { - length = lastLength - 1; - } - } - else - { - length = lastLength - 3; - } - // ƒIƒtƒZƒbƒg‚ÍãˆÊ4ƒrƒbƒg‚ƉºˆÊ8ƒrƒbƒg‚É•ª‚¯‚ÄŠi”[ - *dstp++ = (u8)( length << 4 | (lastOffset - 1) >> 8 ); - *dstp++ = (u8)( (lastOffset - 1) & 0xFF ); - LZDstCount += 2; - LZSlide( &sLZInfo, srcp, lastLength); - srcp += lastLength; - size -= lastLength; - } - else - { - // ˆ³k‚È‚µ - LZSlide(&sLZInfo, srcp, 1); - *dstp++ = *srcp++; - size--; - LZDstCount++; - } - } // 8‰ñƒ‹[ƒvI—¹ - *LZCompFlagsp = LZCompFlags; // ƒtƒ‰ƒOŒn—ñ‚ðŠi”[ - } - - // 4ƒoƒCƒg‹«ŠEƒAƒ‰ƒCƒ“ƒƒ“ƒg - // ƒAƒ‰ƒCƒ“ƒƒ“ƒg—pƒf[ƒ^0 ‚̓f[ƒ^ƒTƒCƒY‚Ɋ܂߂Ȃ¢ - i = 0; - while ((LZDstCount + i) & 0x3) - { - *dstp++ = 0; - i++; - } - - return LZDstCount; -} - - -//-------------------------------------------------------- -// LZ77ˆ³k‚ŃXƒ‰ƒCƒh‘‹‚Ì’†‚©‚çÅ’·ˆê’v—ñ‚ðŒŸõ‚µ‚Ü‚·B -// Arguments: startp ƒf[ƒ^‚ÌŠJŽnˆÊ’u‚ðŽ¦‚·ƒ|ƒCƒ“ƒ^ -// nextp ŒŸõ‚ðŠJŽn‚·‚éƒf[ƒ^‚̃|ƒCƒ“ƒ^ -// remainSize Žc‚èƒf[ƒ^ƒTƒCƒY -// offset ˆê’v‚µ‚½ƒIƒtƒZƒbƒg‚ðŠi”[‚·‚é—̈æ‚ւ̃|ƒCƒ“ƒ^ -// Return : ˆê’v—ñ‚ªŒ©‚‚©‚Á‚½ê‡‚Í TRUE -// Œ©‚‚©‚ç‚È‚©‚Á‚½ê‡‚Í FALSE -//-------------------------------------------------------- -static u32 SearchLZ( const LZCompressInfo * info, const u8 *nextp, u32 remainSize, u16 *offset, u16 minOffset, u32 maxLength ) -{ - const u8 *searchp; - const u8 *headp, *searchHeadp; - u16 currOffset; - u32 currLength = 2; - u32 tmpLength; - s32 w_offset; - const s16 * const LZOffsetTable = info->LZOffsetTable; - const u16 windowPos = info->WindowPos; - const u16 windowLen = info->WindowLen; - - if (remainSize < 3) - { - return 0; - } - - w_offset = info->LZByteTable[*nextp]; - - while (w_offset != -1) - { - if (w_offset < windowPos) - { - searchp = nextp - windowPos + w_offset; - } - else - { - searchp = nextp - windowLen - windowPos + w_offset; - } - - /* –³‚­‚Ä‚à—Ç‚¢‚ªA‹Í‚©‚É‚‘¬‰»‚·‚é */ - if (*(searchp + 1) != *(nextp + 1) || *(searchp + 2) != *(nextp + 2)) - { - w_offset = LZOffsetTable[w_offset]; - continue; - } - - if (nextp - searchp < minOffset) - { - // VRAM‚Í2ƒoƒCƒgƒAƒNƒZƒX‚Ȃ̂Š(VRAM‚©‚çƒf[ƒ^‚ð“Ç‚Ýo‚·ê‡‚ª‚ ‚邽‚ß)A - // ŒŸõ‘ÎÛƒf[ƒ^‚Í2ƒoƒCƒg‘O‚©‚ç‚̃f[ƒ^‚É‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢B - // - // ƒIƒtƒZƒbƒg‚Í12ƒrƒbƒg‚ÅŠi”[‚³‚ê‚邽‚ßA4096ˆÈ‰º - break; - } - tmpLength = 3; - searchHeadp = searchp + 3; - headp = nextp + 3; - - while (((u32)(headp - nextp) < remainSize) && (*headp == *searchHeadp)) - { - headp++; - searchHeadp++; - tmpLength++; - - // ˆê’v’·‚ªÅ‘å‚Ȃ̂ÅAŒŸõ‚ðI—¹‚·‚é - if (tmpLength == maxLength) - { - break; - } - } - if (tmpLength > currLength) - { - // ő咷ƒIƒtƒZƒbƒg‚ðXV - currLength = tmpLength; - currOffset = (u16)(nextp - searchp); - if (currLength == maxLength) - { - // ˆê’v’·‚ªÅ‘å‚Ȃ̂ÅAŒŸõ‚ðI—¹‚·‚éB - break; - } - } - w_offset = LZOffsetTable[w_offset]; - } - - if (currLength < 3) - { - return 0; - } - *offset = currOffset; - return currLength; -} - - -//=========================================================================== -// ƒnƒtƒ}ƒ“•„†‰» -//=========================================================================== -#define HUFF_END_L 0x80 -#define HUFF_END_R 0x40 - -typedef struct -{ - u16 No; // ƒf[ƒ^No - s16 PaNo; // eNo - u32 Freq; // oŒ»•p“x - s16 ChNo[2]; // ŽqNo (0: ¶‘¤C 1: ‰E‘¤) - u16 PaDepth; // eƒm[ƒh‚Ì[‚³ - u16 LeafDepth; // —t‚܂łÌ[‚³ - u32 HuffCode; // ƒnƒtƒ}ƒ“•„† - u8 Bit; // ƒm[ƒh‚̃rƒbƒgƒf[ƒ^ - u16 HWord; // Še’†ŠÔß“_‚É‚¨‚¢‚ÄA‚»‚Ìß“_‚ðƒ‹[ƒg‚Æ‚·‚é•”•ª–Ø‚ð HuffTree Ši”[‚É•K—v‚ȃƒ‚ƒŠ—Ê -} -HuffData; - -typedef struct -{ - u8 leftOffsetNeed; // ¶‚ÌŽqß“_‚ւ̃IƒtƒZƒbƒg‚ª•K—v‚È‚ç1 - u8 rightOffsetNeed; // ‰E‚ÌŽqß“_‚ւ̃IƒtƒZƒbƒg‚ª•K—v‚È‚ç1 - u16 leftNodeNo; // ¶‚ÌŽqß“_No - u16 rightNodeNo; // ‰E‚ÌŽqß“_No -} -HuffTreeCtrlData; - -// ƒnƒtƒ}ƒ“ƒ[ƒNƒoƒbƒtƒ@\¬ -typedef struct -{ - HuffData huffTable[ 512 ]; // huffTable[ 512 ]; 12288B - u8 huffTree [ 256 * 2 ]; // huffTree[ 256 * 2 ]; 512B - HuffTreeCtrlData huffTreeCtrl[ 256 ]; // huffTreeCtrl[ 256 ]; 1536B - u16 huffTreeTop; // - u8 bitSize; // - u8 padding_[1]; // -} -HuffCompressionInfo; // Œv 14340B - -static void HuffInitTable( HuffCompressionInfo* info, u8 bitSize ); -static void HuffCountData( HuffData* table, const u8 *srcp, u32 size, u8 bitSize ); -static void HuffConstructTree( HuffCompressionInfo *info, u8 bitSize ); -static u32 HuffExportTree( u8* dstp, HuffCompressionInfo* info ); -static u32 HuffConvertData( const HuffData *table, const u8* srcp, u8* dstp, u32 srcSize, u8 bitSize ); - -static void HuffAddParentDepthToTable( HuffData *table, u16 leftNo, u16 rightNo ); -static void HuffAddCodeToTable ( HuffData *table, u16 nodeNo, u32 paHuffCode ); -static u16 HuffAddCountHWordToTable ( HuffData *table, u16 nodeNo ); - -static u16 HuffMakeNode ( HuffData* table, u8 bitSize ); -static void HuffMakeHuffTree ( HuffCompressionInfo* info, u16 rootNo ); -static void HuffMakeSubsetHuffTree ( HuffCompressionInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ); -static BOOL HuffRemainingNodeCanSetOffset( HuffCompressionInfo* info, u16 costHWord ); -static void HuffSetOneNodeOffset ( HuffCompressionInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ); - -HuffCompressionInfo sHuffCompressionInfo; - -/*---------------------------------------------------------------------------* - Name: HuffCompWrite - Description: ƒnƒtƒ}ƒ“ˆ³k - Arguments: *srcp - size - *dstp - huffBitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static u32 HuffCompWrite(u8 *srcp, u32 size, u8 *dstp, u8 huffBitSize) -{ - u32 huffDstCount; // ˆ³kƒf[ƒ^‚̃oƒCƒg” - u32 offset; - HuffCompressionInfo* info = &sHuffCompressionInfo; - - u16 huffDataNum = 1 << huffBitSize; // 8->256, 4->16 - - // ƒe[ƒuƒ‹‰Šú‰» - HuffInitTable( info, huffBitSize ); - - // oŒ»•p“xƒ`ƒFƒbƒN - HuffCountData( info->huffTable, srcp, size, huffBitSize ); - - // ƒnƒtƒ}ƒ“•„†ƒe[ƒuƒ‹ì¬ - HuffConstructTree( info, huffBitSize ); - - // ƒf[ƒ^Eƒwƒbƒ_ - if ( size < 0x1000000 && size > 0 ) - { - *(u32 *)dstp = size << 8 | HUFF_CODE_HEADER | huffBitSize; - offset = 4; - } - else - { - *(u32 *)dstp = HUFF_CODE_HEADER | huffBitSize; - *(u32 *)(dstp + 4) = size; - offset = 8; - } - huffDstCount = offset; - - // ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚ðƒoƒCƒiƒŠo—Í - huffDstCount += HuffExportTree( &dstp[ huffDstCount ], info ); - - // ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚É‚æ‚éƒf[ƒ^•ÏŠ· - huffDstCount += HuffConvertData( info->huffTable, srcp, &dstp[ huffDstCount ], size, huffBitSize ); - - return huffDstCount; -} - - - - -/*---------------------------------------------------------------------------* - Name: HuffInitTable - Description: ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚̉Šú‰» - Arguments: table - size - Returns: None. - *---------------------------------------------------------------------------*/ -static void HuffInitTable( HuffCompressionInfo* info, u8 bitSize ) -{ - u32 tableSize = (1 << bitSize); - u32 i; - - info->huffTreeTop = 1; - info->bitSize = bitSize; - - // huffTable‚ð‰Šú‰» - { - HuffData* table = info->huffTable; - - const HuffData HUFF_TABLE_INIT_DATA = { 0, 0, 0, {-1, -1}, 0, 0, 0, 0, 0 }; - for ( i = 0; i < tableSize * 2U; i++ ) - { - table[ i ] = HUFF_TABLE_INIT_DATA; - table[ i ].No = (u16)i; - } - } - - // huffTree, huffTreeCtrl‚ð‰Šú‰» - { - const HuffTreeCtrlData HUFF_TREE_CTRL_INIT_DATA = { 1, 1, 0, 0 }; - u8* huffTree = info->huffTree; - HuffTreeCtrlData* huffTreeCtrl = info->huffTreeCtrl; - - for ( i = 0; i < 256; i++ ) - { - huffTree[ i * 2 ] = 0; - huffTree[ i * 2 + 1 ] = 0; - huffTreeCtrl[ i ] = HUFF_TREE_CTRL_INIT_DATA; - } - } -} - - -/*---------------------------------------------------------------------------* - Name: HuffCountData - Description: oŒ»•p“x‚̃JƒEƒ“ƒg - Arguments: table - *srcp - size - bitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static void HuffCountData( HuffData* table, const u8 *srcp, u32 size, u8 bitSize ) -{ - u32 i; - u8 tmp; - - if ( bitSize == 8 ) - { - for ( i = 0; i < size; i++ ) - { - table[ srcp[ i ] ].Freq++; // 8ƒrƒbƒg•„†‰» - } - } - else - { - for ( i = 0; i < size; i++ ) // 4ƒrƒbƒg•„†‰» - { - tmp = (srcp[ i ] & 0xf0) >> 4; - table[ tmp ].Freq++; // ãˆÊ4ƒrƒbƒg‚©‚çæ‚ÉŠi”[// ‚Ç‚Á‚¿‚Å‚à‚¢‚¢ - tmp = srcp[ i ] & 0x0f; - table[ tmp ].Freq++; // –â‘è‚Í•„†‰»‚̂Ƃ± - } - } -} - - -/*---------------------------------------------------------------------------* - Name: HuffConstructTree - Description: ƒnƒtƒ}ƒ“ƒcƒŠ[‚ð\’z - Arguments: *table - dataNum - Returns: None. - *---------------------------------------------------------------------------*/ -static void HuffConstructTree( HuffCompressionInfo *info, u8 bitSize ) -{ - HuffData* table = info->huffTable; - u16 rootNo; // “ñ•ª–؂̃‹[ƒgNo - - // oŒ»•p“x‚©‚çƒm[ƒh‚ð\’z - rootNo = HuffMakeNode( table, bitSize ); - - // ƒnƒtƒ}ƒ“ƒR[ƒh¶¬ (table[i].HuffCode ‚É) - HuffAddCodeToTable( table, rootNo, 0x00 ); // PaDepth‚̃rƒbƒg”‚¾‚¯AHuffCode ‚̉ºˆÊƒrƒbƒg‚ðƒ}ƒXƒN‚µ‚½‚à‚Ì‚ªƒnƒtƒ}ƒ“ƒR[ƒh - - // Še’†ŠÔß“_‚É‚¨‚¢‚ÄA‚»‚Ìß“_‚ðƒ‹[ƒg‚Æ‚·‚é•”•ª–Ø‚ð huffTree Ši”[‚É•K—v‚ȃƒ‚ƒŠ—ʂ̌vŽZ - HuffAddCountHWordToTable( table, rootNo ); - - // sHuffTreeBuf.huffTree ì¬ - HuffMakeHuffTree( info, rootNo ); - - info->huffTree[0] = (u8)( --info->huffTreeTop ); -} - - -/*---------------------------------------------------------------------------* - Name: HuffMakeNode - Description: oŒ»•p“x‚©‚çƒm[ƒhƒf[ƒ^‚ð\’z - Arguments: table - Returns: None. - *---------------------------------------------------------------------------*/ -static u16 -HuffMakeNode( HuffData* table, u8 bitSize ) -{ - u16 dataNum = ( 1 << bitSize ); - u16 tableTop = (u16)dataNum; // ƒe[ƒuƒ‹ì¬Žž‚ÌAƒe[ƒuƒ‹ƒgƒbƒvNo - - u32 i; - s32 leftNo, rightNo; // 2•ª–Øì¬Žž‚̃m[ƒhNo - u16 rootNo; // “ñ•ª–؂̃‹[ƒgNo - - leftNo = -1; - rightNo = -1; - while ( 1 ) - { - // Freq‚̬‚³‚¢•”•ª–Ø’¸“_‚ð2‚Â’T‚· 1‚‚͕K‚¸Œ©‚‚©‚é‚Í‚¸ - // Žq’¸“_(¶)‚Ì’Tõ - for ( i = 0; i < tableTop; i++ ) - { - if ( ( table[i].Freq == 0 ) || - ( table[i].PaNo != 0 ) ) - { - continue; - } - - if ( leftNo < 0 ) - { - leftNo = i; - } - else if ( table[i].Freq < table[ leftNo ].Freq ) - { - leftNo = i; - } - } - - // Žq’¸“_(‰E)‚Ì’Tõ - for ( i = 0; i < tableTop; i++ ) - { - if ( ( table[i].Freq == 0 ) || - ( table[i].PaNo != 0 ) || - ( i == leftNo ) ) - { - continue; - } - - if ( rightNo < 0 ) - { - rightNo = i; - } - else if ( table[i].Freq < table[ rightNo ].Freq ) - { - rightNo = i; - } - } - - // 1‚‚µ‚©‚È‚©‚Á‚½‚çAƒe[ƒuƒ‹ì¬I—¹ - if ( rightNo < 0 ) - { - // ’l‚ªˆêŽí—Þ‚µ‚©‚È‚¢‘¶Ý‚µ‚È‚¢ê‡‚É‚Í01‚Ç‚¿‚ç‚à“¯‚¶’l‚ƂȂéƒm[ƒh‚ð‚P‚Â쬂·‚é - if ( tableTop == dataNum ) - { - if ( leftNo < 0 ) - { - leftNo = 0; - } - table[ tableTop ].Freq = table[ leftNo ].Freq; - table[ tableTop ].ChNo[0] = (s16)leftNo; - table[ tableTop ].ChNo[1] = (s16)leftNo; - table[ tableTop ].LeafDepth = 1; - table[ leftNo ].PaNo = (s16)tableTop; - table[ leftNo ].Bit = 0; - table[ leftNo ].PaDepth = 1; - } - else - { - tableTop--; - } - rootNo = tableTop; - return rootNo; - } - - // ¶•”•ª–؂ƉE•”•ª–؂𓇂·‚é’¸“_ì¬ - table[ tableTop ].Freq = table[ leftNo ].Freq + table[ rightNo ].Freq; - table[ tableTop ].ChNo[0] = (s16)leftNo; - table[ tableTop ].ChNo[1] = (s16)rightNo; - if ( table[ leftNo ].LeafDepth > table[ rightNo ].LeafDepth ) - { - table[ tableTop ].LeafDepth = (u16)( table[ leftNo ].LeafDepth + 1 ); - } - else - { - table[ tableTop ].LeafDepth = (u16)( table[ rightNo ].LeafDepth + 1 ); - } - - table[ leftNo ].PaNo = table[ rightNo ].PaNo = (s16)( tableTop ); - table[ leftNo ].Bit = 0; - table[ rightNo ].Bit = 1; - - HuffAddParentDepthToTable( table, (u16)leftNo, (u16)rightNo ); - - tableTop++; - leftNo = rightNo = -1; - } -} - - -//----------------------------------------------------------------------- -// 2•¶–Øì¬Žž‚ÉA•”•ª–؂𓇂µ‚½‚Æ‚«‚ÉA•”•ª–؂̊e\¬ƒm[ƒh‚Ì[‚³‚ð{1‚·‚é -//----------------------------------------------------------------------- -static void HuffAddParentDepthToTable( HuffData *table, u16 leftNo, u16 rightNo ) -{ - table[ leftNo ].PaDepth++; - table[ rightNo ].PaDepth++; - - if ( table[ leftNo ].LeafDepth != 0 ) - { - HuffAddParentDepthToTable( table, (u16)table[ leftNo ].ChNo[0], (u16)table[ leftNo ].ChNo[1] ); - } - if ( table[ rightNo ].LeafDepth != 0 ) - { - HuffAddParentDepthToTable( table, (u16)table[ rightNo ].ChNo[0], (u16)table[ rightNo ].ChNo[1] ); - } -} - -//----------------------------------------------------------------------- -// ƒnƒtƒ}ƒ“ƒR[ƒh¶¬ -//----------------------------------------------------------------------- -static void HuffAddCodeToTable( HuffData* table, u16 nodeNo, u32 paHuffCode ) -{ - table[ nodeNo ].HuffCode = (paHuffCode << 1) | table[ nodeNo ].Bit; - - if ( table[ nodeNo ].LeafDepth != 0 ) - { - HuffAddCodeToTable( table, (u16)table[ nodeNo ].ChNo[0], table[ nodeNo ].HuffCode ); - HuffAddCodeToTable( table, (u16)table[ nodeNo ].ChNo[1], table[ nodeNo ].HuffCode ); - } -} - - -//----------------------------------------------------------------------- -// ’†ŠÔƒm[ƒh‚ª huffTree 쬂ɕK—v‚Æ‚·‚éƒf[ƒ^—Ê -//----------------------------------------------------------------------- -static u16 HuffAddCountHWordToTable( HuffData *table, u16 nodeNo) -{ - u16 leftHWord, rightHWord; - - switch ( table[ nodeNo ].LeafDepth ) - { - case 0: - return 0; - case 1: - leftHWord = rightHWord = 0; - break; - default: - leftHWord = HuffAddCountHWordToTable( table, (u16)table[nodeNo].ChNo[0] ); - rightHWord = HuffAddCountHWordToTable( table, (u16)table[nodeNo].ChNo[1] ); - break; - } - - table[ nodeNo ].HWord = (u16)( leftHWord + rightHWord + 1 ); - return (u16)( leftHWord + rightHWord + 1 ); -} - - -//----------------------------------------------------------------------- -// ƒnƒtƒ}ƒ“ƒR[ƒh•\ì¬ -//----------------------------------------------------------------------- -static void HuffMakeHuffTree( HuffCompressionInfo* info, u16 rootNo ) -{ - s16 i; - s16 costHWord, tmpCostHWord; // •”•ª–؂̃R[ƒh•\‚ð쬂µ‚È‚©‚Á‚½Žž‚̃RƒXƒg Å‘å’l‚Ìß“_‚Ì•”•ª–؃R[ƒh•\‚ðì‚é - s16 costOffsetNeed, tmpCostOffsetNeed; - s16 costMaxKey; // ƒRƒXƒgŬ‚Ìß“_‚ð huffTreeBuf.huffTree ‚©‚ç“Á’è‚·‚邽‚ß‚Ìî•ñ - BOOL costMaxRightFlag; - u16 offsetNeedNum; - BOOL tmpRightFlag; - const u32 MAX_COST = 64; - - info->huffTreeTop = 1; - costOffsetNeed = 0; - - info->huffTreeCtrl[0].leftOffsetNeed = 0; // Žg—p‚µ‚È‚¢ (ƒe[ƒuƒ‹ƒTƒCƒY‚Æ‚µ‚ÄŽg—p) - info->huffTreeCtrl[0].rightNodeNo = rootNo; - - - while ( 1 ) // return ‚·‚é‚܂Š- { - // ƒIƒtƒZƒbƒg‚ðÝ’è‚·‚é•K—v‚Ì‚ ‚éƒm[ƒh”‚ÌŒvŽZ - offsetNeedNum = 0; - for ( i = 0; i < info->huffTreeTop; i++ ) - { - if ( info->huffTreeCtrl[ i ].leftOffsetNeed ) - { - offsetNeedNum++; - } - if ( info->huffTreeCtrl[ i ].rightOffsetNeed ) - { - offsetNeedNum++; - } - } - - // Å‘åƒRƒXƒg‚Ìß“_‚ðŒŸõ - costHWord = -1; - costMaxKey = -1; - tmpRightFlag = 0; - - for ( i = 0; i < info->huffTreeTop; i++ ) - { - tmpCostOffsetNeed = (u16)( info->huffTreeTop - i ); - - // ¶‚ÌŽqß“_‚̃RƒXƒg•]‰¿ - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - tmpCostHWord = (s16)info->huffTable[ info->huffTreeCtrl[i].leftNodeNo ].HWord; - - if ( (u32)(tmpCostHWord + offsetNeedNum) > MAX_COST ) - { - goto leftCostEvaluationEnd; - } - if ( ! HuffRemainingNodeCanSetOffset( info, (u16)tmpCostHWord ) ) - { - goto leftCostEvaluationEnd; - } - if ( tmpCostHWord > costHWord ) - { - costMaxKey = i; - costMaxRightFlag = 0; - } - else if ( (tmpCostHWord == costHWord) && (tmpCostOffsetNeed > costOffsetNeed) ) - { - costMaxKey = i; - costMaxRightFlag = 0; - } - } -leftCostEvaluationEnd:{} - - if ( info->huffTreeCtrl[i].rightOffsetNeed) - { - tmpCostHWord = (s16)info->huffTable[info->huffTreeCtrl[i].rightNodeNo].HWord; - - if ( (u32)(tmpCostHWord + offsetNeedNum) > MAX_COST ) - { - goto rightCostEvaluationEnd; - } - if ( ! HuffRemainingNodeCanSetOffset( info, (u16)tmpCostHWord ) ) - { - goto rightCostEvaluationEnd; - } - if ( tmpCostHWord > costHWord ) - { - costMaxKey = i; - costMaxRightFlag = 1; - } - else if ( (tmpCostHWord == costHWord) && (tmpCostOffsetNeed > costOffsetNeed) ) - { - costMaxKey = i; - costMaxRightFlag = 1; - } - } -rightCostEvaluationEnd:{} - } - - // •”•ª–Ø‚ð‚Ü‚é‚Ü‚é huffTree ‚ÉŠi”[ - if ( costMaxKey >= 0 ) - { - HuffMakeSubsetHuffTree( info, (u16)costMaxKey, costMaxRightFlag); - goto nextTreeMaking; - } - else - { - // •K—vƒIƒtƒZƒbƒgÅ‘å‚̃m[ƒh‚ðŒŸõ - for ( i = 0; i < info->huffTreeTop; i++ ) - { - u16 tmp = 0; - tmpRightFlag = 0; - if (info->huffTreeCtrl[i].leftOffsetNeed) - { - tmp = info->huffTable[ info->huffTreeCtrl[i].leftNodeNo ].HWord; - } - if (info->huffTreeCtrl[i].rightOffsetNeed) - { - if ( info->huffTable[info->huffTreeCtrl[i].rightNodeNo ].HWord > tmp ) - { - tmpRightFlag = 1; - } - } - if ( (tmp != 0) || (tmpRightFlag) ) - { - HuffSetOneNodeOffset( info, (u16)i, tmpRightFlag); - goto nextTreeMaking; - } - } - } - return; -nextTreeMaking:{} - } -} - -//----------------------------------------------------------------------- -// •”•ª–Ø‚ð‚Ü‚é‚Ü‚é huffTree ‚ÉŠi”[ -//----------------------------------------------------------------------- -static void HuffMakeSubsetHuffTree( HuffCompressionInfo* info, u16 huffTreeNo, BOOL rightNodeFlag ) -{ - u16 i; - - i = info->huffTreeTop; - HuffSetOneNodeOffset( info, huffTreeNo, rightNodeFlag ); - - if ( rightNodeFlag ) - { - info->huffTreeCtrl[ huffTreeNo ].rightOffsetNeed = 0; - } - else - { - info->huffTreeCtrl[ huffTreeNo ].leftOffsetNeed = 0; - } - - while ( i < info->huffTreeTop ) - { - if ( info->huffTreeCtrl[ i ].leftOffsetNeed ) - { - HuffSetOneNodeOffset( info, i, 0); - info->huffTreeCtrl[ i ].leftOffsetNeed = 0; - } - if ( info->huffTreeCtrl[ i ].rightOffsetNeed ) - { - HuffSetOneNodeOffset( info, i, 1); - info->huffTreeCtrl[ i ].rightOffsetNeed = 0; - } - i++; - } -} - -//----------------------------------------------------------------------- -// —^‚¦‚ç‚ꂽƒf[ƒ^—ʂ̕”•ª–Ø‚ð“WŠJ‚µ‚Ä‚à huffTree \’z‚ÉŽxႪ‚È‚¢‚©’²‚ׂé -//----------------------------------------------------------------------- -static BOOL HuffRemainingNodeCanSetOffset( HuffCompressionInfo* info, u16 costHWord ) -{ - u16 i; - s16 capacity; - const u32 MAX_COST = 64; - - capacity = (s16)( MAX_COST - costHWord ); - - // ƒIƒtƒZƒbƒg”‚Í i ‚ª¬‚³‚¢‚قǑ傫‚¢‚Ì‚ÅAƒ\[ƒg‚¹‚¸Ai = 0 -> huffTreeTop ‚ÅŒvŽZ‚·‚ê‚΂悢 - for ( i = 0; i < info->huffTreeTop; i++ ) - { - if ( info->huffTreeCtrl[i].leftOffsetNeed ) - { - if ( (info->huffTreeTop - i) <= capacity ) - { - capacity--; - } - else - { - return 0; - } - } - if ( info->huffTreeCtrl[i].rightOffsetNeed ) - { - if ( (info->huffTreeTop - i) <= capacity ) - { - capacity--; - } - else - { - return 0; - } - } - } - - return 1; -} - - -/*---------------------------------------------------------------------------* - Name: HuffSetOneNodeOffset - Description: 1ß“_•ªAƒnƒtƒ}ƒ“ƒR[ƒh•\‚ðì¬ - Arguments: *table ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹ - huffTreeNo - rightNodeFlag ‰E‘¤‚̃m[ƒh‚Å‚ ‚é‚©‚Ç‚¤‚©‚̃tƒ‰ƒO - Returns: None. - *---------------------------------------------------------------------------*/ -static void HuffSetOneNodeOffset( HuffCompressionInfo* info, u16 huffTreeNo, BOOL rightNodeFlag) -{ - u16 nodeNo; - u16 offsetData = 0; - - HuffData* huffTable = info->huffTable; - u8* huffTree = info->huffTree; - HuffTreeCtrlData* huffTreeCtrl = info->huffTreeCtrl; - u16 huffTreeTop = info->huffTreeTop; - - if (rightNodeFlag) - { - nodeNo = huffTreeCtrl[ huffTreeNo ].rightNodeNo; - huffTreeCtrl[ huffTreeNo ].rightOffsetNeed = 0; - } - else - { - nodeNo = huffTreeCtrl[ huffTreeNo ].leftNodeNo; - huffTreeCtrl [huffTreeNo ].leftOffsetNeed = 0; - } - - // ¶‚ÌŽqß“_ - if ( huffTable[ huffTable[nodeNo].ChNo[0] ].LeafDepth == 0) - { - offsetData |= 0x80; - huffTree[ huffTreeTop * 2 + 0 ] = (u8)huffTable[ nodeNo ].ChNo[0]; - huffTreeCtrl[ huffTreeTop ].leftNodeNo = (u8)huffTable[ nodeNo ].ChNo[0]; - huffTreeCtrl[ huffTreeTop ].leftOffsetNeed = 0; // ƒIƒtƒZƒbƒg‚Í•K—v‚È‚­‚È‚é - } - else - { - huffTreeCtrl[ huffTreeTop ].leftNodeNo = (u16)huffTable[ nodeNo ].ChNo[0]; // ƒIƒtƒZƒbƒg‚Í•K—v - } - - // ‰E‚ÌŽqß“_ - if ( huffTable[ huffTable[ nodeNo ].ChNo[1] ].LeafDepth == 0 ) - { - offsetData |= 0x40; - huffTree[ huffTreeTop * 2 + 1 ] = (u8)huffTable[nodeNo].ChNo[1]; - huffTreeCtrl[ huffTreeTop ].rightNodeNo = (u8)huffTable[ nodeNo ].ChNo[1]; - huffTreeCtrl[ huffTreeTop ].rightOffsetNeed = 0; // ƒIƒtƒZƒbƒg‚Í•K—v‚È‚­‚È‚é - } - else - { - huffTreeCtrl[ huffTreeTop ].rightNodeNo = (u16)huffTable[ nodeNo ].ChNo[1]; // ƒIƒtƒZƒbƒg‚Í•K—v - } - - offsetData |= (u16)( huffTreeTop - huffTreeNo - 1 ); - huffTree[ huffTreeNo * 2 + (rightNodeFlag? 1 : 0) ] = (u8)offsetData; - - info->huffTreeTop++; -} - - -/*---------------------------------------------------------------------------* - Name: HuffExportTree - - Description: ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚ðƒoƒCƒiƒŠo—Í - - Arguments: dstp - info - bitSize - - Returns: - *---------------------------------------------------------------------------*/ -static u32 HuffExportTree( u8* dstp, HuffCompressionInfo* info ) -{ - u32 cnt = 0; - s32 i; - - for ( i = 0; i < (info->huffTreeTop + 1) * 2; i++ ) // ƒcƒŠ[ƒe[ƒuƒ‹ - { - dstp[ cnt++ ] = ((u8*)info->huffTree)[ i ]; - } - - // 4ƒoƒCƒg‹«ŠEƒAƒ‰ƒCƒ“ƒƒ“ƒg - // ƒAƒ‰ƒCƒ“ƒƒ“ƒg—pƒf[ƒ^0 ‚̓f[ƒ^ƒTƒCƒY‚Ɋ܂߂é (ƒfƒR[ƒ_‚̃Aƒ‹ƒSƒŠƒYƒ€‚É‚æ‚é) - while ( cnt & 0x3 ) - { - if ( cnt & 0x1 ) - { - info->huffTreeTop++; - dstp[ 0 ] = dstp[ 0 ] + 1; - } - dstp[ cnt++ ] = 0; - } - return cnt; -} - - -/*---------------------------------------------------------------------------* - Name: HuffConvertData - Description: ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚ðŒ³‚Éƒf[ƒ^•ÏŠ· - Arguments: *table - srcp - dstp - srcSize - bitSize - Returns: None. - *---------------------------------------------------------------------------*/ -static u32 HuffConvertData( const HuffData *table, const u8* srcp, u8* dstp, u32 srcSize, u8 bitSize ) -{ - u32 i, ii, iii; - u8 srcTmp; - u32 bitStream = 0; - u32 streamLength = 0; - u32 dstSize = 0; - - // ƒnƒtƒ}ƒ“•„†‰» - for ( i = 0; i < srcSize; i++ ) - { // ƒf[ƒ^ˆ³k - u8 val = srcp[ i ]; - if ( bitSize == 8 ) - { // 8ƒrƒbƒgƒnƒtƒ}ƒ“ - bitStream = (bitStream << table[ val ].PaDepth) | table[ val ].HuffCode; - streamLength += table[ val ].PaDepth; - for ( ii = 0; ii < streamLength / 8; ii++ ) - { - dstp[ dstSize++ ] = (u8)(bitStream >> (streamLength - (ii + 1) * 8)); - } - streamLength %= 8; - } - else // 4ƒrƒbƒgƒnƒtƒ}ƒ“ - { - for ( ii = 0; ii < 2; ii++ ) - { - if ( ii ) - { - srcTmp = val >> 4; // ãˆÊ4ƒrƒbƒg‚ªŒã - } - else - { - srcTmp = val & 0x0F; // ‰ºˆÊ4ƒrƒbƒg‚ªæ( ƒfƒR[ƒ_‚ªLittleEndian‚ŃAƒNƒZƒX‚·‚éŠÖŒW ) - } - bitStream = (bitStream << table[ srcTmp ].PaDepth) | table[ srcTmp ].HuffCode; - streamLength += table[srcTmp].PaDepth; - for ( iii = 0; iii < streamLength / 8; iii++ ) - { - dstp[ dstSize++ ] = (u8)(bitStream >> (streamLength - (iii + 1) * 8)); - } - streamLength %= 8; - } - } - } - if ( streamLength != 0 ) - { - dstp[ dstSize++ ] = (u8)(bitStream << (8 - streamLength)); - } - - // 4ƒoƒCƒg‹«ŠEƒAƒ‰ƒCƒ“ƒƒ“ƒg - // ƒAƒ‰ƒCƒ“ƒƒ“ƒg—pƒf[ƒ^0 ‚̓f[ƒ^ƒTƒCƒY‚ÉŠÜ‚ßu‚év - // ƒnƒtƒ}ƒ“•„†‰»‚¾‚¯“Á•Ê!@ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“•ÏŠ·‚·‚邽‚ßAƒAƒ‰ƒCƒ“ƒƒ“ƒg‹«ŠEƒf[ƒ^‚æ‚èŒã‚Ƀf[ƒ^‚ªŠi”[‚³‚ê‚é - while ( dstSize & 0x3 ) - { - dstp[ dstSize++ ] = 0; - } - - // ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“•ÏŠ· - for ( i = 0; i < dstSize / 4; i++ ) - { - u8 tmp; - tmp = dstp[i * 4 + 0]; - dstp[i * 4 + 0] = dstp[i * 4 + 3]; - dstp[i * 4 + 3] = tmp; // ƒXƒƒbƒv - tmp = dstp[i * 4 + 1]; - dstp[i * 4 + 1] = dstp[i * 4 + 2]; - dstp[i * 4 + 2] = tmp; // ƒXƒƒbƒv - } - return dstSize; -} - - - -/*---------------------------------------------------------------------------* - Name: HuffVerifyTable - - Description: ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚Ì®‡«‚ðƒ`ƒFƒbƒN - - Arguments: ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚ւ̃|ƒCƒ“ƒ^ - - Returns: ³í‚ȃe[ƒuƒ‹‚Ìê‡‚É‚Í TRUE - •s³‚ȃe[ƒuƒ‹‚Ìê‡‚É‚Í FALSE - *---------------------------------------------------------------------------*/ -static BOOL -HuffVerifyTable( const void* pTable, u8 bit ) -{ - enum { FLAGS_ARRAY_NUM = 512 / 8 }; /* 64Byte */ - u8* treep = (u8*)pTable; - u8* treeStartp = treep + 1; - u32 treeSize = *treep; - u8* treeEndp = (u8*)pTable + (treeSize + 1) * 2; - u32 i; - u8 end_flags[ FLAGS_ARRAY_NUM ]; - u32 idx; - - for ( i = 0; i < FLAGS_ARRAY_NUM; i++ ) - { - end_flags[ i ] = 0; - } - - if ( bit == 4 ) - { - if ( treeSize >= 0x10 ) - { - return FALSE; - } - } - - idx = 1; - treep = treeStartp; - while ( treep < treeEndp ) - { - if ( (end_flags[ idx / 8 ] & (1 << (idx % 8) )) == 0 ) - { - u32 offset = (u32)( ( (*treep & 0x3F) + 1 ) << 1); - u8* nodep = (u8*)( (((u32)treep >> 1) << 1) + offset ); - - // I’[‚̃Aƒ‰ƒCƒƒ“ƒg—pƒf[ƒ^‚͓ǂݔò‚΂· - if ( *treep == 0 && idx >= (treeSize * 2) ) - { - goto next; - } - if ( nodep >= treeEndp ) - { - return FALSE; - } - if ( *treep & 0x80 ) - { - u32 left = (idx & ~0x1) + offset; - end_flags[ left / 8 ] |= (u8)( 1 << (left % 8) ); - } - if ( *treep & 0x40 ) - { - u32 right = (idx & ~0x1) + offset + 1; - end_flags[ right / 8 ] |= (u8)( 1 << (right % 8) ); - } - } - next: - ++idx; - ++treep; - } - return TRUE; -} - - - - -//############################################################################################## -//############################################################################################## -// “WŠJŠÖ˜A‚ÌŠÖ”‚͈ȉº -//############################################################################################## -//############################################################################################## - -//================================================================================== -// Rawƒf[ƒ^“WŠJ -//================================================================================== -static s32 RawRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ) -{ -// memcpy(dstp, srcp, size); - u32 i; - - if ( srcSize < dstSize ) - { - return -1; - } - - for (i = 0; i < dstSize; i++) - { - *dstp = *srcp; - dstp++; - srcp++; - } - - return dstSize; -} - -//================================================================================== -// ·•ªˆ³kƒf[ƒ^“WŠJ -//================================================================================== -static s32 DiffFiltRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, u8 diffBitSize ) -{ - s32 DiffCount = 0; // “WŠJƒf[ƒ^‚̃oƒCƒg” - u32 i; - - u16 *src16p = (u16 *)srcp; - u16 *dst16p = (u16 *)dstp; - - // ƒ\[ƒX‚̃oƒbƒtƒ@ƒI[ƒo[ƒtƒ[ƒ`ƒFƒbƒN - if ( dstSize > srcSize ) - { - return -1; - } - - if (diffBitSize == 8) - { -#ifdef DEBUG_PRINT_DIFFFILT - for (i = 0; i < 16; i++) - { - dbg_printf_dif(stderr, "srcp[%d] = %x\n", i, srcp[i]); - } -#endif - dstp[DiffCount] = srcp[0]; // 擪ƒf[ƒ^‚̂ݷ•ª–³‚µ - DiffCount++; - for (i = 1; i < dstSize; i++, DiffCount++) - { - dbg_printf_dif(stderr, "dstp[%x] = srcp[%d]+dstp[%d] = %x + %x = %x\n", - DiffCount, i, i - 1, srcp[i], dstp[i - 1], srcp[i] - dstp[i - 1]); - dstp[DiffCount] = srcp[i] + dstp[i - 1]; // ·•ªƒf[ƒ^Ši”[ - } - } - else // 16ƒrƒbƒgƒTƒCƒY - { - dst16p[DiffCount / 2] = src16p[0]; - DiffCount += 2; - for (i = 1; i < dstSize / 2; i++, DiffCount += 2) - { - dst16p[DiffCount / 2] = src16p[i] + dst16p[i - 1]; - } - } - - // 4ƒoƒCƒg‹«ŠEƒAƒ‰ƒCƒ“ƒƒ“ƒg - // ƒAƒ‰ƒCƒ“ƒƒ“ƒg—pƒf[ƒ^0 ‚̓f[ƒ^ƒTƒCƒY‚Ɋ܂߂Ȃ¢ - i = 0; - while ((DiffCount + i) & 0x3) - { - dstp[DiffCount + i] = 0; - i++; - } - - return DiffCount; -} - -//================================================================================== -// ƒ‰ƒ“ƒŒƒ“ƒOƒXˆ³kƒf[ƒ^“WŠJ -//================================================================================== -static s32 RLCompRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ) -{ - u32 RLDstCount; // “WŠJƒf[ƒ^‚̃oƒCƒg” - u32 RLSrcCount; // “WŠJ‘ÎÛƒf[ƒ^‚̈—σf[ƒ^—Ê(ƒoƒCƒg’PˆÊ) - u32 i; - - RLSrcCount = 0; - RLDstCount = 0; - while ( RLDstCount < dstSize ) - { - if ( srcp[ RLSrcCount ] & 0x80 ) // •œ†ˆ—(ƒ‰ƒ“ƒŒƒ“ƒOƒX•„†‰»‚³‚ê‚Ä‚¢‚é) - { - u8 length = (srcp[ RLSrcCount++ ] & 0x7f) + 3; // ƒf[ƒ^’·‚ðŠi”[(‚R‚̉º‘ʂ𗚂¢‚Ä‚¢‚é‚Ì‚ÅAŽÀÛ‚Í+3‚µ‚Äl‚¦‚é) - // ƒoƒbƒtƒ@ƒI[ƒo[ƒ‰ƒ“ƒ`ƒFƒbƒN - if ( RLSrcCount >= srcSize ) - { - return -1; - } - if ( RLDstCount + length > dstSize ) - { - return -1; - } - for ( i = 0; i < length; i++ ) - { - dstp[ RLDstCount++ ] = srcp[ RLSrcCount ]; - } - RLSrcCount++; - } - else // ¶ƒf[ƒ^‚ðƒRƒs[(ƒ‰ƒ“ƒŒƒ“ƒOƒX•„†‰»‚³‚ê‚Ä‚¢‚È‚¢) - { - u8 length = srcp[ RLSrcCount++ ] + 1; // (srcp[RLSrcCount] & 0x7f ‚Æ“¯‚¶) - // ƒoƒbƒtƒ@ƒI[ƒo[ƒ‰ƒ“ƒ`ƒFƒbƒN - if ( RLSrcCount + length > srcSize ) - { - return -1; - } - if ( RLDstCount + length > dstSize ) - { - return -1; - } - - for ( i = 0; i < length; i++ ) - { // ƒf[ƒ^’·‚Í -1 ‚³‚ê‚ÄŠi”[‚³‚ê‚Ä‚¢‚邽‚ß +1 - dstp[ RLDstCount++ ] = srcp[ RLSrcCount++ ]; - } - } - } - - // 4ƒoƒCƒg‹«ŠEƒAƒ‰ƒCƒ“ƒƒ“ƒg - // ƒAƒ‰ƒCƒ“ƒƒ“ƒg—pƒf[ƒ^0 ‚̓f[ƒ^ƒTƒCƒY‚Ɋ܂߂Ȃ¢ - i = 0; - while ((RLDstCount + i) & 0x3) - { - dstp[RLDstCount + i] = 0; - i++; - } - - return RLDstCount; -} - -//================================================================================== -// LZ77ˆ³kƒf[ƒ^“WŠJ -//================================================================================== -static s32 LZCompReadEx( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, BOOL ex_available) -{ - u32 LZDstCount; // “WŠJƒf[ƒ^‚̃oƒCƒg” - u32 LZSrcCount; // “WŠJ‘ÎÛƒf[ƒ^‚̈—σf[ƒ^—Ê(ƒoƒCƒg’PˆÊ) - u32 i; - - LZSrcCount = 0; - LZDstCount = 0; - - while ( LZDstCount < dstSize ) - { - u8 compFlags = srcp[LZSrcCount++]; // ˆ³k‚Ì—L–³‚ðŽ¦‚·ƒtƒ‰ƒO—ñ - if ( LZSrcCount > srcSize ) - { - return -1; - } - - for ( i = 0; i < 8; i++ ) - { - if (compFlags & 0x80) // ˆ³k‚³‚ê‚Ä‚¢‚é - { - u32 length; // ‘ÎÛƒf[ƒ^’· - u16 offset; // ˆê’vƒf[ƒ^ƒIƒtƒZƒbƒg - 1 (í‚É2ˆÈã)(‰ºˆÊ4ƒrƒbƒgCoffset‚Å‚Í11-8ƒrƒbƒg–Ú) - - length = srcp[ LZSrcCount ] >> 4; - - if ( ex_available ) - { - if ( length == 1 ) - { - length = (srcp[ LZSrcCount ] & 0x0F) << 12; - LZSrcCount++; - length |= srcp[ LZSrcCount ] << 4; - LZSrcCount++; - length |= srcp[ LZSrcCount ] >> 4; - length += 0xFF + 0xF + 3; - } - else if ( length == 0 ) - { - length = (srcp[ LZSrcCount ] & 0x0F) << 4; - LZSrcCount++; - length |= srcp[ LZSrcCount ] >> 4; - length += 0xF + 2; - } - else - { - length += 1; - } - } - else - { - length += 3; - } - offset = (srcp[LZSrcCount] & 0x0F) << 8; - LZSrcCount++; - offset |= srcp[LZSrcCount]; - offset++; - LZSrcCount++; - - // ƒoƒbƒtƒ@ƒI[ƒo[ƒ‰ƒ“‚ðƒ`ƒFƒbƒN - if ( LZSrcCount > srcSize ) - { - return -1; - } - if ( LZDstCount + length > dstSize ) - { - return -1; - } - if ( LZDstCount < offset ) - { - return -1; - } - - // “WŠJˆ— - do - { - dstp[ LZDstCount++ ] = dstp[ LZDstCount - offset ]; - } while ( --length > 0 ); - } - else // ˆ³k–³‚µ - { - dstp[ LZDstCount++ ] = srcp[ LZSrcCount++ ]; - if ( LZSrcCount > srcSize ) - { - return -1; - } - } - // ƒTƒCƒY‚É’B‚µ‚½‚çI—¹ - if ( LZDstCount >= dstSize ) - { - break; - } - compFlags <<= 1; - } - } - - // 4ƒoƒCƒg‹«ŠEƒAƒ‰ƒCƒ“ƒƒ“ƒg - // ƒAƒ‰ƒCƒ“ƒƒ“ƒg—pƒf[ƒ^0 ‚̓f[ƒ^ƒTƒCƒY‚Ɋ܂߂Ȃ¢ - i = 0; - while ( (LZDstCount + i) & 0x3 ) - { - dstp[ LZDstCount + i ] = 0; - i++; - } - return LZDstCount; -} - - -//================================================================================== -// ƒnƒtƒ}ƒ“•„†‰»ƒf[ƒ^“WŠJ -//================================================================================== -static s32 HuffCompRead( const u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize, u8 huffBitSize ) -{ - u16 treeSize; // huffTree‚̃TƒCƒY * 2 - u32 HuffSrcCount; // “WŠJ‘ÎÛƒf[ƒ^‚̈—σf[ƒ^—Ê(ƒoƒCƒg’PˆÊ) - u32 HuffDstCount; // “WŠJƒf[ƒ^ - u32 currentBitStream; - u8 currentBit; - u16 treeAddr; - u8 treeData; - u8 preTreeData; - u8 isUpper4bits = 0; - - treeSize = ((*srcp) + 1) * 2; - HuffSrcCount = treeSize; // ƒf[ƒ^‚Ìæ“ª‚ðŽæ“¾ - HuffDstCount = 0; - treeAddr = 1; - preTreeData = srcp[ 1 ]; - - dbg_printf_huff(stderr, "HuffSrcCount = %d\n", HuffSrcCount); - - // ƒnƒtƒ}ƒ“ƒe[ƒuƒ‹‚Ì®‡«ƒ`ƒFƒbƒN - if ( ! HuffVerifyTable( srcp, huffBitSize ) ) - { - return -1; - } - if ( srcSize < treeSize ) - { - return -1; - } - - // “WŠJˆ— - while ( HuffDstCount < dstSize ) // return ‚܂Š- { - u16 i; - - currentBitStream = srcp[HuffSrcCount++]; - currentBitStream |= srcp[HuffSrcCount++] << 8; - currentBitStream |= srcp[HuffSrcCount++] << 16; - currentBitStream |= srcp[HuffSrcCount++] << 24; - - if ( HuffSrcCount > srcSize ) - { - return -1; - } - - for ( i = 0; i < 32; i++ ) - { - currentBit = (u8)(currentBitStream >> 31); - currentBitStream <<= 1; - - if (((currentBit == 0) && (preTreeData & 0x80)) || - ((currentBit == 1) && (preTreeData & 0x40))) - { - if (huffBitSize == 8) - { - treeData = srcp[(treeAddr * 2) + currentBit]; // •„†ƒf[ƒ^ - dstp[HuffDstCount++] = treeData; - } - else if (isUpper4bits) - { - treeData |= (srcp[(treeAddr * 2) + currentBit]) << 4; - dstp[HuffDstCount++] = treeData; - isUpper4bits = 0; - } - else - { - treeData = srcp[(treeAddr * 2) + currentBit]; - isUpper4bits = 1; - } - - if (HuffDstCount >= dstSize) - { - return HuffDstCount; - } - - treeAddr = 1; - preTreeData = srcp[ 1 ]; - } - else - { - preTreeData = srcp[(treeAddr * 2) + currentBit]; // ƒIƒtƒZƒbƒgEƒf[ƒ^ - treeAddr += (preTreeData & 0x3f) + 1; - } - } - } - return HuffDstCount; -} - - -//================================================================================== -// ˆ³kƒtƒ@ƒCƒ‹‚ÌŒ³ƒtƒ@ƒCƒ‹ƒTƒCƒYŽæ“¾ -//================================================================================== -EXTERN u32 STDCALL nitroGetDecompFileSize( const void* srcp ) -{ - const u32* p = (const u32*)srcp; - - u32 size = *p >> 8; - if ( size == 0 ) - { - size = *(p + 1); - } - return size; -} - - -//================================================================================== -// ƒf[ƒ^“WŠJ§ŒäŠÖ” (Ž©“®“WŠJ‚Ì‚½‚ßAÅŒã‚Érawƒf[ƒ^“WŠJ—pƒwƒbƒ_‚ª‚È‚¢‚Æ“®ì‚µ‚È‚¢) -//================================================================================== -EXTERN s32 STDCALL nitroDecompress( const u8 *srcp, u32 srcSize, u8 *dstp, s8 depth ) -{ - // rawData // ƒf[ƒ^Eƒwƒbƒ_ - // *(u32 *)pReadBuf = size << 8 | 0; - // [i+3] [i+2] [i+1](ƒTƒCƒY) | [0000 0000] - // DiffFilt - // *(u32 *)dstp = size << 8 | 0x80 | diffBitSize/8; - // [i+3] [i+2] [i+1](ƒTƒCƒY) | [1000 00XX] - // RL - // *(u32 *)dstp = size << 8 | 0x30; - // [i+3] [i+2] [i+1](ƒTƒCƒY) | [0011 0000] - // LZ77 - // *(u32 *)dstp = size << 8 | 0x10; - // [i+3] [i+2] [i+1](ƒTƒCƒY) | [0001 0000] - // Huffman - // *(u32 *)dstp = size << 8 | 0x20 | huffBitSize; - // [i+3] [i+2] [i+1](ƒTƒCƒY) | [0010 XX00] - u32 header; - s32 dstSize; - u32 memSize = srcSize * 3 + 256 * 2; - u8 *pReadBuf; // ˆ³kƒf[ƒ^‚Ìæ“ª”Ô’n‚ðŽw‚·ƒ|ƒCƒ“ƒ^ - u8 offset; - s8 curDepth = 0; - s8 targetDepth; - - pCompBuf[0] = (u8 *)malloc(memSize); - pCompBuf[1] = (u8 *)malloc(memSize); - pReadBuf = pCompBuf[0]; - - // malloc ƒ`ƒFƒbƒN - if (pCompBuf[0] == NULL || pCompBuf[1] == NULL) - { - fprintf(stderr, "Error: Memory is not enough.\n"); - exit(1); - } - - compBufNo = 1; - memcpy(pReadBuf, srcp, srcSize); - - if (depth < 1) - { - targetDepth = -1; - } - else - { - targetDepth = depth; - } - dbg_printf(stderr, "nitroCompress \t(Compressed size is 0x%x)\n", srcSize); - - while (1) - { - // targetDepthŽw’è‚ÌÛ‚ÌI—¹ðŒ - if (curDepth == targetDepth) - { - dbg_printf(stderr, "nitroDecompress Raw \t(Decompressed size will be 0x%x)\n", - dstSize); - dstSize = RawRead(pReadBuf, dstSize, dstp, dstSize); - - if (pCompBuf[0] != NULL) - { - free(pCompBuf[0]); - pCompBuf[0] = NULL; - } - if (pCompBuf[1] != NULL) - { - free(pCompBuf[1]); - pCompBuf[1] = NULL; - } - return dstSize; - } - - header = *(u32 *)pReadBuf; - dstSize = header >> 8; // ƒwƒbƒ_‚ðŠÜ‚܂Ȃ¢ƒTƒCƒY, “WŠJŠÖ”‚É‚àƒwƒbƒ_‚ðŠÜ‚ß‚¸‚É“n‚· - offset = 4; - - if ( dstSize == 0 ) - { - dstSize = *(u32 *)(pReadBuf + 4); - offset = 8; - } - - if ( memSize < (u32)dstSize ) - { - memSize = dstSize * 3 + 256 * 2; - pCompBuf[0] = (u8 *)realloc(pCompBuf[0], memSize); - pCompBuf[1] = (u8 *)realloc(pCompBuf[1], memSize); - pReadBuf = pCompBuf[compBufNo ^ 0x1]; - - } - - switch (header & CODE_HEADER_MASK) - { - case DIFF_CODE_HEADER: - { - dbg_printf(stderr, "nitroDecompress Diff %d \t(Decompressed size will be 0x%x)\n", - ((u8)header & 0x03) * 8, dstSize ); - dstSize = - DiffFiltRead(&pReadBuf[offset], srcSize - offset, pCompBuf[compBufNo], dstSize, - ((u8)header & 0x03) * 8); - } - break; - case HUFF_CODE_HEADER: - { - dbg_printf(stderr, "nitroDecompress Huff %d \t(Decompressed size will be 0x%x)\n", - ((u8)header & 0x0f), dstSize); - dstSize = - HuffCompRead(&pReadBuf[offset], srcSize - offset, pCompBuf[compBufNo], dstSize, (u8)header & 0x0f); - } - break; - case LZ_CODE_HEADER: - { - BOOL ex_format = ((header & 0xF) == 0)? FALSE : TRUE; - - dbg_printf(stderr, "nitroDecompress LZ \t(Decompressed size will be 0x%x)\n", - dstSize); - dstSize = LZCompReadEx(&pReadBuf[offset], srcSize - offset, pCompBuf[compBufNo], dstSize, ex_format); - } - break; - case RL_CODE_HEADER: - { - dbg_printf(stderr, "nitroDecompress RL \t(Decompressed size will be 0x%x)\n", - dstSize); - dstSize = RLCompRead(&pReadBuf[offset], srcSize - offset, pCompBuf[compBufNo], dstSize); - } - break; - default: - { - dbg_printf(stderr, "nitroDecompress Raw \t(Decompressed size will be 0x%x)\n", - dstSize); - - dstSize = RawRead(&pReadBuf[offset], srcSize - offset, dstp, dstSize); - if (pCompBuf[0] != NULL) - { - free(pCompBuf[0]); - pCompBuf[0] = NULL; - } - if (pCompBuf[1] != NULL) - { - free(pCompBuf[1]); - pCompBuf[1] = NULL; - } - return dstSize; - } - } - - if ( dstSize < 0 ) - // •s³‚ȃtƒ@ƒCƒ‹‚ʼn𓀂Ɏ¸”s - { - dbg_printf(stderr, "decompress fail\n"); - return -1; - } - - // ‚à‚¤ˆêŽü - pReadBuf = pCompBuf[compBufNo]; - compBufNo ^= 0x01; - srcSize = dstSize; - curDepth++; - } -} - -//================================================================================== -// ƒƒ‚ƒŠ“à—e‚ð16i‚Åo—Í -//================================================================================== -EXTERN void STDCALL debugMemPrint(FILE * fp, u8 *str, u32 size) -{ - u32 i = 0; - - while (str) - { - fprintf(fp, "%4lx:\t0x%2x\n", i, *str); - str++; - i++; - if (i >= size) - { - break; - } - } -} - -//================================================================================== -// ƒƒ‚ƒŠ“à—e‚ð2i‚Åo—Í -//================================================================================== -EXTERN void STDCALL debugMemBitPrint(FILE * fp, u8 *str, u32 size) -{ - u32 i = 0; - u8 j; - - while (str) - { - if (i >= size) - { - break; - } - - fprintf(fp, "%4lx:\t0x%2x\t(binary\t", i, *str); - for (j = 0; j < 8; j++) - { - fprintf(fp, "%d", *str >> (7 - j) & 0x01); - } - fprintf(fp, " )\n"); - str++; - i++; - } -} - -//================================================================================== -// ˆ³k‘O‚Æ“WŠJŒã‚̃f[ƒ^‚Ì”äŠr(³‚µ‚­“WŠJ‚Å‚«‚Ä‚¢‚ê‚ÎA"DATA match"‚Æo—Í‚³‚ê‚é) -//================================================================================== -EXTERN int STDCALL matchingCheck(u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize) -{ - u32 minSize, i; - u8 dataMatchFlag = 1; - u8 sizeMatchFlag; - - sizeMatchFlag = (srcSize == dstSize); - if (srcSize < dstSize) - { - minSize = srcSize; - } - else - { - minSize = dstSize; - } - - for (i = 0; i < minSize; i++) - { - dbg_printf_match(stderr, "src[%3x], dst[%3x] = %2x , %2x", i, i, srcp[i], dstp[i]); - if (srcp[i] != dstp[i]) - { - dataMatchFlag = 0; - dbg_printf_match(stderr, "\t; mismatch here!"); - } - dbg_printf_match(stderr, "\n"); - } - - if (sizeMatchFlag) - { - fprintf(stderr, "\nSIZE match.\n"); - } - else - { - fprintf(stderr, "\nSIZE mismatch!\n"); - } - - if (dataMatchFlag) - { - fprintf(stderr, "DATA match.\n"); - } - else - { - fprintf(stderr, "DATA mismatch!\n"); - } - - if (dataMatchFlag && sizeMatchFlag) - { - return 1; - } - else - { - return 0; - } -} - - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.h deleted file mode 100644 index 7c96d8db..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/nitroCompLib.h +++ /dev/null @@ -1,127 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: nitroCompLib.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -// nitroCompLib.h : nitroCompLib.DLL ‚̃ƒCƒ“ ƒwƒbƒ_[ ƒtƒ@ƒCƒ‹ -// - -#ifndef __NITROCOMPLIB_H__ -#define __NITROCOMPLIB_H__ - -//=========================================================================================== -// ƒCƒ“ƒNƒ‹[ƒh -//=========================================================================================== -#include -#include -#include -#include -#include "types.h" - -#ifdef WIN32 -#define STDCALL __stdcall -#else -#define STDCALL -#endif - -//=========================================================================================== -// ƒvƒƒgƒ^ƒCƒv錾 -//=========================================================================================== -// C++—p -#ifdef __cplusplus - extern "C" - { -#endif - -//BOOL WINAPI DllMain( HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved); -u8* STDCALL nitroCompMalloc( u32 size ); -void STDCALL nitroCompFree( u8 *p ); -u32 STDCALL nitroCompress ( const u8 *srcp, u32 srcSize, u8 *dstp, char *compList, u8 rawHeader ); -s32 STDCALL nitroDecompress( const u8 *srcp, u32 srcSize, u8 *dstp, s8 depth ); -void STDCALL debugMemPrint ( FILE * fp, u8 *str, u32 size ); -void STDCALL debugMemBitPrint( FILE * fp, u8 *str, u32 size ); -int STDCALL matchingCheck( u8 *srcp, u32 srcSize, u8 *dstp, u32 dstSize ); -u32 STDCALL nitroGetDecompFileSize( const void* srcp ); - -#ifdef __cplusplus - } -#endif - -//=========================================================================================== -// ŠÖ”‚ÌŽg—p–@ -//=========================================================================================== -//---------------------------------------------------------------------------------- -// ˆ³kŒã‚̃f[ƒ^‚ð’u‚­‚½‚߂̃ƒ‚ƒŠ—̈æ‚ðŠm•Û -// ˆ³k‘O‚̃f[ƒ^‚Ì2”{‚̗̈æ‚ðŠm•Û‚·‚é -// ˆø” -// u32 size ˆ³k‘O‚̃f[ƒ^ƒTƒCƒY -// u32 ‚Í•„†–³‚µ®”Œ^‚Å‚½‚¢‚Ä‚¢‚ÍA -// unsigned int (ˆ—ŒnˆË‘¶) -// •Ô‚è’l -// u8 * ˆ³kŒã‚̃f[ƒ^—̈æ‚ðŽw‚·ƒ|ƒCƒ“ƒ^ -// (”Ä—pƒ|ƒCƒ“ƒ^‚Ȃ̂ÅAD‚«‚ÈŒ^‚ɃLƒƒƒXƒg) -// ‚ł͂Ȃ¢ -//---------------------------------------------------------------------------------- -//u8 *nitroCompMalloc(u32 size); - -//---------------------------------------------------------------------------------- -// ˆ³kŒã‚̃f[ƒ^‚ð’u‚¢‚Ä‚¢‚½ƒƒ‚ƒŠ—̈æ‚ð‰ð•ú -// ˆø” -// u8 *p ˆ³kŒã‚̃f[ƒ^—̈æ‚ðŽw‚·ƒ|ƒCƒ“ƒ^ -//---------------------------------------------------------------------------------- -//void nitroCompFree(u8 *p); - -//---------------------------------------------------------------------------------- -// ƒf[ƒ^‚ðˆ³k‚·‚é -// ˆ³k•ûŽ®Aˆ³k‡˜‚͈ø”compList‚ð—p‚¢‚ÄŽwަ‚·‚é -// ˆø” -// u8 *srcp ˆ³k‘ÎÛƒf[ƒ^‚ðŽw‚·ƒ|ƒCƒ“ƒ^ -// u32 size ˆ³k‘ÎÛƒf[ƒ^‚̃TƒCƒY(’PˆÊ‚̓oƒCƒg) -// u8 *dstp ˆ³kŒã‚̃f[ƒ^‚ð•ÛŽ‚·‚éƒf[ƒ^—̈æ‚ðŽw‚·ƒ|ƒCƒ“ƒ^ -// \•ª‚ȗ̈æ‚ðŠm•Û‚µ‚Ä‚¨‚­•K—v‚ ‚è -// nitroCompMalloc‚̕Ԃè’l‚ł悢 -// char *compList ˆ³k•ûŽ®Aˆ³k‡˜‚ðŠi”[‚µ‚½ƒŠƒXƒg (CŒ¾Œê‚̃kƒ‹•¶Žš—ñ) -// d8 : 8ƒrƒbƒg·•ªƒtƒBƒ‹ƒ^ -// d16 : 16ƒrƒbƒg·•ªƒtƒBƒ‹ƒ^ -// r : ƒ‰ƒ“ƒŒƒ“ƒOƒX•„†‰» -// lx : LZ77Dx‚ɂ͓¯ˆêƒf[ƒ^ŒŸõ‚ÌŠJŽn“_‚ðŽ¦‚·ƒIƒtƒZƒbƒg -// : 2ˆÈã‚łȂ¯‚ê‚΂Ȃç‚È‚¢DãŒÀ‚Í255. -// h4 : 4ƒrƒbƒgEƒnƒtƒ}ƒ“ˆ³k -// h8 : 8ƒrƒbƒgEƒnƒtƒ}ƒ“ˆ³k -// u8 rawHeaderFlag ˆ³k‘O‚̃f[ƒ^‚Å‚ ‚邱‚Æ‚ðŽ¦‚·ƒwƒbƒ_î•ñ‚ð•t‰Á‚·‚é‚©‚Ç‚¤‚©‚ð -// Žwަ‚·‚éƒtƒ‰ƒOD0‚Å‚ ‚ê‚Εt‰Á‚¹‚¸A1‚Å‚ ‚ê‚ÎA“WŠJ‚µ‚«‚Á‚½ -// ƒf[ƒ^‚É‚àƒwƒbƒ_‚ª•t‰Á‚³‚ê‚éD -// •Ô‚è’l -// ˆ³kŒã‚̃f[ƒ^ƒTƒCƒY -//---------------------------------------------------------------------------------- -//u32 nitroCompress(u8 *srcp, u32 size, u8 *dstp, char *compList, u8 rawHeader); - -//---------------------------------------------------------------------------------- -// ƒf[ƒ^‚ð“WŠJ‚·‚é -// “WŠJ•ûŽ®A“WŠJ‡˜‚̓f[ƒ^‚̃wƒbƒ_‚ðŒ©‚Ä”»’f‚·‚é -// ˆø” -// u8 *srcp “WŠJ‘ÎÛƒf[ƒ^‚ðŽw‚·ƒ|ƒCƒ“ƒ^ -// u32 size “WŠJ‘ÎÛƒf[ƒ^‚̃TƒCƒY(’PˆÊ‚̓oƒCƒg) -// u8 *dstp “WŠJŒã‚̃f[ƒ^‚ð•ÛŽ‚·‚éƒf[ƒ^—̈æ‚ðŽw‚·ƒ|ƒCƒ“ƒ^ -// \•ª‚ȗ̈æ‚ðŠm•Û‚µ‚Ä‚¨‚­•K—v‚ ‚è -// nitroCompMalloc‚̕Ԃè’l‚ł悢 -// u8 depth “WŠJ‚·‚é[‚³(‰ñ”) -// 0–¢–ž‚ÌꇂÍAˆ³k‘Oƒf[ƒ^‚ðŽ¦‚·ƒwƒbƒ_î•ñ‚ª“¾‚ç‚ê‚é‚܂œWŠJ‚µ‘±‚¯‚é -// •Ô‚è’l -// “WŠJŒã‚̃f[ƒ^ƒTƒCƒY -//---------------------------------------------------------------------------------- -//u32 nitroDecompress(u8 *srcp, u32 size, u8 *dstp, s8 depth); - -#endif // __NITROCOMPLIB_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_main.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_main.c deleted file mode 100644 index ce37efb2..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_main.c +++ /dev/null @@ -1,1164 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: ntcompress_main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include "nitroCompLib.h" -#include "ntcompress_test.h" -#include "multipleCompLib.h" -#include "rangeCoder.h" - -#define FOR_NITRO - -#if defined( FOR_NITRO ) - #define INCLUDE_TARGET "nitro" - #define TARGET_NAME "ntrcomp" - #define NTCOMPRESS_VERSION "1.1.0" -#else // for revolution - #define SUPPORT_LH_LRC - #define INCLUDE_TARGET "revolution" - #define TARGET_NAME "ntcompress" - #define NTCOMPRESS_VERSION "2.0.0" -#endif - - -#define uint unsigned int -#define ushort unsigned short -#define ulong unsigned long -#define uchar unsigned char - - -#define ROUNDUP(x,n) (((x) + ((n) - 1)) & (~((n)-1))) -#define ROUNDUP4(x) ROUNDUP((x),4) - -#define TEXT_BIG_ENDIAN_FLAG 0x10 -#define TEXT_WIDTH_MASK 0x07 - -//--------------------------------------------------------------------------- -// Œ^’è‹` -//--------------------------------------------------------------------------- -// ˆ³kƒ^ƒCƒv -typedef enum -{ - CONV_TYPE_NON, // •ÏŠ·‚È‚µ - CONV_TYPE_DIFF, // ·•ªƒtƒBƒ‹ƒ^ - CONV_TYPE_RUNLENGTH, // ƒ‰ƒ“ƒŒƒ“ƒOƒX•„†‰» - CONV_TYPE_LZ77, // LZ77ˆ³k - CONV_TYPE_HUFFMAN, // ƒnƒtƒ}ƒ“ˆ³k - CONV_TYPE_UNCOMPRESS, // ‰ð“€ - CONV_TYPE_LZ77EX, // Šg’£LZ77ˆ³k - CONV_TYPE_LH, // LZ77-ƒnƒtƒ}ƒ“•¡‡ˆ³k - CONV_TYPE_LRC, // LZ77-RangeCoder•¡‡ˆ³k - CONV_TYPE_RANGECODER // ƒŒƒ“ƒWƒR[ƒ_ -} -t_conv_type; - -// ˆ³kƒf[ƒ^î•ñ\‘¢‘Ì -typedef struct -{ - t_conv_type type; // ˆ³kƒ^ƒCƒv - uint opt; // ˆ³kƒpƒ‰ƒ[ƒ^ - ulong src_size; // ˆ³k‘Oƒf[ƒ^ƒTƒCƒY - ulong dest_size; // ˆ³kŒãƒf[ƒ^ƒTƒCƒY - uchar *src_buf; // ˆ³k‘Oƒf[ƒ^ƒoƒbƒtƒ@ - uchar *dest_buf; // ˆ³kŒãƒf[ƒ^ƒoƒbƒtƒ@ - uchar textout_width; // ƒeƒLƒXƒgo—Í‚·‚é‚©‚Ç‚¤‚©‚̃tƒ‰ƒOŒ“ƒTƒCƒY - uchar alignment; // o—̓tƒ@ƒCƒ‹ƒTƒCƒY‚̃Aƒ‰ƒCƒƒ“ƒg - uchar header_flg :1; // ƒwƒbƒ_î•ñ‚ð•t‰Á‚·‚é‚©‚Ç‚¤‚©‚̃tƒ‰ƒO - uchar silent_flg :1; // •W€o—͂փƒbƒZ[ƒW‚ðo—Í‚·‚é‚©‚Ç‚¤‚©‚̃tƒ‰ƒO - uchar verify_flg :1; // ˆ³kƒtƒ@ƒCƒ‹‚ð“WŠJ‚·‚éۂׂ̂èƒtƒ@ƒC‚ð‚¨‚±‚È‚¤‚©‚Ç‚¤‚©‚̃tƒ‰ƒO -} -t_conv_data; - -typedef enum -{ - OPT_NONE, // –³Œø‚ȃIƒvƒVƒ‡ƒ“ - OPT_VERSION, // ƒo[ƒWƒ‡ƒ“•\ަ(-v) - OPT_SILENT, // •W€o—Í—}Ž~(-s) - OPT_LOWER_TEXT, // ¬•¶Žš‚ł̃eƒLƒXƒgo—Í(-t) - OPT_UPPER_TEXT, // ‘å•¶Žš‚ł̃eƒLƒXƒgo—Í(-T) - OPT_ALIGN, // ƒAƒ‰ƒCƒƒ“ƒgŽw’è(-A4|8|16|32) - OPT_HEADER, // ƒwƒbƒ_•t‰Á(-H) - OPT_OUTPUT, // o—̓tƒ@ƒCƒ‹Žw’è(-o) - OPT_EXTRACT, // ‰ð“€(-x) - OPT_DIFF_FILTER, // ·•ªƒtƒBƒ‹ƒ^(-d) - OPT_RUN_LENGTH, // ƒ‰ƒ“ƒŒƒ“ƒOƒXˆ³k(-r) - OPT_LZ77, // ‹ŒLZ77ˆ³k(-l) - OPT_LZ77EX, // LZ77ˆ³k(-lex) - OPT_LH, // LHˆ³k(-lh) - OPT_LRC, // LRCˆ³k(-lrc) - OPT_HUFFMAN, // ƒnƒtƒ}ƒ“ˆ³k(-h4|8) - - OPT_RANGECODER, // ƒŒƒ“ƒWƒR[ƒ_ˆ³k(ƒfƒoƒbƒO”ł̂Ý) (-R) - OPT_VERIFY, // ƒxƒŠƒtƒ@ƒC (ƒfƒoƒbƒO”ł̂Ý) (-D) - OPT_TEST, // ƒeƒXƒg (ƒfƒoƒbƒO”ł̂Ý) (--TEST) -} -t_opt; - - - - -//--------------------------------------------------------------------------- -// ƒvƒƒgƒ^ƒCƒv錾 -//--------------------------------------------------------------------------- -static void usage( const char *cmd_string ); -static void version_info( void ); -static int parse_opt( int argc, char *argv[], t_conv_data * cnv_dat, char **in_fname, - char **out_fname ); -static int load_file ( const char *fname, t_conv_data * cnv_dat ); -static int save_file ( const char *fname, const t_conv_data * cnv_dat ); -static int convert_data( t_conv_data * cnv_dat ); -static int fwrite_text ( const uchar * buf, ulong size, uint width, FILE * fp, const char *name ); -static char* cut_fname ( char *path ); -static char* make_output_fname( const char *input_fname, const t_conv_data * cnv_dat ); -static int verify_data ( t_conv_data * cnv_dat ); - - -//--------------------------------------------------------------------------- -// ƒGƒ“ƒfƒBƒAƒ“•ÏŠ· -//--------------------------------------------------------------------------- -static ushort -reverse_endian16( ushort x ) -{ - return (ushort)( ( (x >> 8) & 0x00FF ) | ( (x << 8) & 0xFF00 ) ); -} - -static ulong -reverse_endian32( ulong x ) -{ - return (ulong)( ( (x >> 24) & 0x000000FF ) | - ( (x >> 8) & 0x0000FF00 ) | - ( (x << 8) & 0x00FF0000 ) | - ( (x << 24) & 0xFF000000 ) ); -} - - - -//--------------------------------------------------------------------------- -// ƒƒCƒ“ŠÖ” -//--------------------------------------------------------------------------- -int main(int argc, char *argv[]) -{ - t_conv_data cnv_dat; - char *in_fname, *out_fname; - -#ifdef _DEBUG - if ( argc >= 2 && strcmp(argv[1], "-TEST") == 0 ) - { - ntcompress_test(); - return 0; - } -#endif - - // ƒf[ƒ^‚̉Šú‰» - memset(&cnv_dat, 0, sizeof(cnv_dat)); - - // ƒRƒ}ƒ“ƒhƒIƒvƒVƒ‡ƒ“‚̉ðÍ - if (parse_opt(argc, argv, &cnv_dat, &in_fname, &out_fname) != 0) - { - exit(1); - } - - // “ü—̓tƒ@ƒCƒ‹‚ðƒoƒbƒtƒ@‚֓ǂݞ‚Ý - if (load_file(in_fname, &cnv_dat) != 0) - { - exit(1); - } - - // ƒtƒ@ƒCƒ‹‚̈³k - if (convert_data(&cnv_dat) != 0) - { - exit(1); - } - - // ˆ³kƒf[ƒ^‚̃xƒŠƒtƒ@ƒC - if (verify_data( &cnv_dat ) != 0) - { - exit(1); - } - - // ƒoƒbƒtƒ@‚©‚ço—̓tƒ@ƒCƒ‹‚Ö‚Ì‘‚«ž‚Ý - if (save_file(out_fname, &cnv_dat) != 0) - { - exit(1); - } - - if (!cnv_dat.silent_flg) - { - fprintf(stdout, "convert %s(%ldbyte) to %s(%ldbyte)\n", in_fname, cnv_dat.src_size, - out_fname, cnv_dat.dest_size); - } - - free(cnv_dat.src_buf); - if (cnv_dat.dest_buf != cnv_dat.src_buf) - { - free(cnv_dat.dest_buf); - } - - return 0; -} - -//--------------------------------------------------------------------------- -// USAGE: -//--------------------------------------------------------------------------- -static void usage(const char *cmd_string) -{ - fprintf(stderr, "\n"); -#if defined( SUPPORT_LH_LRC ) - fprintf(stderr, - "Usage: %s <-d(4|8)|r|l|lex|h(8|16)|lh|lrc> [-o outputFile] [-A(4|8|16|32)] [-[width]] [-s] [-H] [-v] \n" - " %s -x [-o outputFile] [-s] \n", - cmd_string, cmd_string); -#else - fprintf(stderr, - "Usage: %s <-d(4|8)|r|l|lex|h(8|16)> [-o outputFile] [-A(4|8|16|32)] [-[width]] [-s] [-H] [-v] \n" - " %s -x [-o outputFile] [-s] \n", - cmd_string, cmd_string); -#endif - fprintf(stderr, "\t-v Show version\n"); - fprintf(stderr, "\t-r Runlength encode.\n"); - fprintf(stderr, "\t-l LZ77 encode(compatible with previous LZ77).\n"); - fprintf(stderr, "\t-lex LZ77 encode.\n"); - fprintf(stderr, "\t-h BitSize(4|8) Huffman encode.\n"); - fprintf(stderr, "\t-d BitSize(8|16) Differential filter.\n"); -#if defined( SUPPORT_LH_LRC ) - fprintf(stderr, "\t-lh LZ and Huffman encode\n"); - fprintf(stderr, "\t-lrc LZ and RangeCoder encode\n"); -#endif - fprintf(stderr, "\n"); - fprintf(stderr, "\t-A(4|8|16|32) Align n byte for compressed filesize\n"); - fprintf(stderr, "\t-o outputFile Specify the output file name.\n"); - fprintf(stderr, "\t-t[TypeWidth(1|2|4)] output C format text(little endian).\n"); - fprintf(stderr, "\t We can specify the type(1=u8,2=u16,4=u32).\n"); - fprintf(stderr, "\t-T[TypeWidth(1|2|4)] output C format text(big endian).\n"); - fprintf(stderr, "\t We can specify the type(1=u8,2=u16,4=u32).\n"); - fprintf(stderr, "\t-s Print no message if you've been successful in the conversion.\n"); - fprintf(stderr, "\t-H Raw data header\n"); - fprintf(stderr, "\t-x Extract compressed file.\n"); -} - - -static void version_info( void ) -{ - fprintf(stderr, "%s version %s\n", TARGET_NAME, NTCOMPRESS_VERSION); -} - -//--------------------------------------------------------------------------- -// ƒpƒX•¶Žš—ñ‚©‚çƒtƒ@ƒCƒ‹–¼•”•ª‚̃|ƒCƒ“ƒ^‚ðŽæ“¾‚µAŠg’£Žq‚ðí‚é -// @param path ƒpƒX -// @return ƒtƒ@ƒCƒ‹–¼‚̃|ƒCƒ“ƒ^ -//--------------------------------------------------------------------------- -static char *cut_fname(char *path) -{ - char *search_tmp; - - if (path == NULL) - { - return NULL; - } - - if ((search_tmp = strrchr(path, '/')) != NULL) - { - path = (search_tmp + 1); - } - if ((search_tmp = strrchr(path, '\\')) != NULL) - { - path = (search_tmp + 1); - } - if ((search_tmp = strrchr(path, '.')) != NULL) - { - *search_tmp = '\0'; - } - return path; -} - -//--------------------------------------------------------------------------- -// “ü—̓tƒ@ƒCƒ‹–¼‚©‚ço—̓tƒ@ƒCƒ‹–¼‚𶬂·‚éŠÖ” -// @param input_fname “ü—̓tƒ@ƒCƒ‹–¼ -// @param cnv_dat •ÏŠ·î•ñ -// @return o—̓tƒ@ƒCƒ‹–¼‚ւ̃|ƒCƒ“ƒ^ -//--------------------------------------------------------------------------- -static char *make_output_fname(const char *input_fname, const t_conv_data * cnv_dat) -{ - char *out_fname, *edit_tmp; - - if (input_fname == NULL) - { - return NULL; - } - - // ƒƒ‚ƒŠ—̈æ‚ÌŠm•Û - if ((out_fname = (char *)malloc(strlen(input_fname) + 0x10)) == NULL) - { - fprintf(stderr, "internal err: malloc fail!\n"); - exit(1); - } - - strcpy(out_fname, input_fname); - edit_tmp = cut_fname(out_fname); - - // ˆ³k•ûŽ®‚ðƒtƒ@ƒCƒ‹–¼‚É•t‰Á - switch ( cnv_dat->type ) - { - case CONV_TYPE_NON: - strcat(edit_tmp, "_NONE"); - break; - case CONV_TYPE_DIFF: - strcat(edit_tmp, "_DIFF"); - break; - case CONV_TYPE_RUNLENGTH: - strcat(edit_tmp, "_RL"); - break; - case CONV_TYPE_LZ77: - case CONV_TYPE_LZ77EX: - strcat(edit_tmp, "_LZ"); - break; - case CONV_TYPE_HUFFMAN: - strcat(edit_tmp, "_HUFF"); - break; - case CONV_TYPE_LH: - strcat(edit_tmp, "_LH"); - break; - case CONV_TYPE_LRC: - strcat(edit_tmp, "_LRC"); - break; - case CONV_TYPE_RANGECODER: - strcat(edit_tmp, "_RC"); - break; - case CONV_TYPE_UNCOMPRESS: - strcat(edit_tmp, "_DECOMP"); - } - // Šg’£Žq‚ð•t‰Á - if (cnv_dat->textout_width != 0) - { - strcat(edit_tmp, ".c"); - } - else - { - strcat(edit_tmp, ".bin"); - } - return out_fname; -} - - -//--------------------------------------------------------------------------- -// ŽŸ‚̃IƒvƒVƒ‡ƒ“‚̃^ƒCƒv”»•Ê -// @param opt ”»•Ê‚µ‚½‚¢ƒIƒvƒVƒ‡ƒ“•¶Žš—ñ -// @return ƒIƒvƒVƒ‡ƒ“‚̃^ƒCƒv -//--------------------------------------------------------------------------- -t_opt -get_opt_type( const char* opt ) -{ - if ( strncmp( opt, "--", 2 ) == 0 ) - { - } - else - { - // ƒIƒvƒVƒ‡ƒ“‰ðÍ - switch ( opt[1] ) - { - case 'v': - return OPT_VERSION; - case 's': - return OPT_SILENT; - case 'D': - return OPT_VERIFY; - case 't': - return OPT_LOWER_TEXT; - case 'T': - return OPT_UPPER_TEXT; - case 'A': - return OPT_ALIGN; - case 'H': - return OPT_HEADER; - case 'o': - return OPT_OUTPUT; - case 'x': - return OPT_EXTRACT; - case 'd': - return OPT_DIFF_FILTER; - case 'r': - return OPT_RUN_LENGTH; - case 'R': - return OPT_RANGECODER; - case 'l': - if ( strcmp(opt, "-lex" ) == 0 ) - { - return OPT_LZ77EX; - } -#if defined( SUPPORT_LH_LRC ) - else if ( strcmp(opt, "-lh") == 0 ) - { - return OPT_LH; - } - else if ( strcmp(opt, "-lrc") == 0 ) - { - return OPT_LRC; - } -#endif - else - { - return OPT_LZ77; - } - case 'h': - return OPT_HUFFMAN; - } - } - return OPT_NONE; -} - - -//--------------------------------------------------------------------------- -// ƒRƒ}ƒ“ƒhƒpƒ‰ƒ[ƒ^‰ðÍ -// @param argc ƒpƒ‰ƒ[ƒ^” -// @param argv ƒpƒ‰ƒ[ƒ^”z—ñ -// @retval cnv_dat ˆ³kî•ñƒf[ƒ^ -// @retval in_fname “ü—̓tƒ@ƒCƒ‹–¼ -// @retval out_fname o—̓tƒ@ƒCƒ‹–¼ -// @return 0 ƒtƒ@ƒCƒ‹‚Ì‘‚«ž‚ݬŒ÷ -// -1 ƒtƒ@ƒCƒ‹‚Ì‘‚«ž‚݃Gƒ‰[ -//--------------------------------------------------------------------------- - -static int parse_opt(int argc, char *argv[], t_conv_data * cnv_dat, - char **in_fname, char **out_fname) -{ - int i = 1; - t_conv_type type; - int opt_num; - char *cmd_string; -#define SYNTAX_CHECK(exp) do { if (!(exp)) { usage(cmd_string); return -1; } } while(0) - - // ƒRƒ}ƒ“ƒh–¼Žæ“¾ - cmd_string = cut_fname(argv[0]); - - // ó‘Ô‰Šú‰» - cnv_dat->type = CONV_TYPE_NON; - cnv_dat->header_flg = 0; - cnv_dat->textout_width = 0; - cnv_dat->silent_flg = 0; - cnv_dat->alignment = 0; - cnv_dat->verify_flg = 0; - *out_fname = NULL; - *in_fname = NULL; - - // ƒIƒvƒVƒ‡ƒ“‰ðÍ - while (i < argc) - { - t_opt opt; - - if (argv[i][0] != '-') - { - SYNTAX_CHECK(*in_fname == NULL); // ‚Qd“ǂ݃`ƒFƒbƒN - - // “ü—̓tƒ@ƒCƒ‹–¼Žæ“¾ - *in_fname = argv[i]; - i++; - continue; - } - - opt = get_opt_type( argv[i] ); - - // ƒnƒCƒtƒ“•tƒIƒvƒVƒ‡ƒ“‰ðÍ - switch ( opt ) - { - //-------------------- - // ƒo[ƒWƒ‡ƒ“•\ަƒIƒvƒVƒ‡ƒ“'v'(ˆø”0) - case OPT_VERSION: - SYNTAX_CHECK(argv[i][2] == '\0'); // •¶Žš”ƒ`ƒFƒbƒN - - version_info(); - return -1; - - //-------------------- - // •W€o—Í–³‚µƒIƒvƒVƒ‡ƒ“'s' (ˆø”0) - case OPT_SILENT: - SYNTAX_CHECK(argv[i][2] == '\0'); // •¶Žš”ƒ`ƒFƒbƒN - SYNTAX_CHECK(!cnv_dat->silent_flg); // ‚Qd“ǂ݃`ƒFƒbƒN - - cnv_dat->silent_flg = 1; - break; - -#ifdef _DEBUG - //-------------------- - // ƒxƒŠƒtƒ@ƒCƒIƒvƒVƒ‡ƒ“'D' (ˆø”0) - case OPT_VERIFY: - SYNTAX_CHECK(argv[i][2] == '\0'); // •¶Žš”ƒ`ƒFƒbƒN - SYNTAX_CHECK(!cnv_dat->verify_flg); // ‚Qd“ǂ݃`ƒFƒbƒN - cnv_dat->verify_flg = 1; - break; -#endif - - //-------------------- - // CŒ¾ŒêƒeƒLƒXƒgo—̓IƒvƒVƒ‡ƒ“'t' (ˆø”0-1) (ƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“) - case OPT_LOWER_TEXT: - SYNTAX_CHECK(cnv_dat->textout_width == 0); // ‚Qd“ǂ݃`ƒFƒbƒN - - if (strlen(argv[i]) == 2) // ƒpƒ‰ƒ[ƒ^‚ª–³‚¢ê‡‚̓oƒCƒg’PˆÊ‚Å‘‚«ž‚Þ - { - cnv_dat->textout_width = 1; - } - else - { - cnv_dat->textout_width = atoi(&argv[i][2]); - SYNTAX_CHECK(cnv_dat->textout_width == 1 || cnv_dat->textout_width == 2 - || cnv_dat->textout_width == 4); - } - break; - - //-------------------- - // CŒ¾ŒêƒeƒLƒXƒgo—̓IƒvƒVƒ‡ƒ“'T' (ˆø”0-1) (ƒrƒbƒOƒGƒ“ƒfƒBƒAƒ“) - case OPT_UPPER_TEXT: - SYNTAX_CHECK(cnv_dat->textout_width == 0); // ‚Qd“ǂ݃`ƒFƒbƒN - - if (strlen(argv[i]) == 2) // ƒpƒ‰ƒ[ƒ^‚ª–³‚¢ê‡‚̓oƒCƒg’PˆÊ‚Å‘‚«ž‚Þ - { - cnv_dat->textout_width = 1; - } - else - { - cnv_dat->textout_width = atoi(&argv[i][2]); - SYNTAX_CHECK(cnv_dat->textout_width == 1 || cnv_dat->textout_width == 2 - || cnv_dat->textout_width == 4); - } - cnv_dat->textout_width |= TEXT_BIG_ENDIAN_FLAG; - break; - - //-------------------- - // o—̓tƒ@ƒCƒ‹ƒTƒCƒYƒAƒ‰ƒCƒ“Žw’è'A4|8|16|32' (ˆø”0) - case OPT_ALIGN: - SYNTAX_CHECK(strlen(argv[i]) <= 4 ); // •¶Žš”ƒ`ƒFƒbƒN - SYNTAX_CHECK( cnv_dat->alignment == 0 ); // ‚Qd“ǂ݃`ƒFƒbƒN - - cnv_dat->alignment = atoi(&argv[i][2]); - SYNTAX_CHECK( cnv_dat->alignment == 4 || cnv_dat->alignment == 8 || cnv_dat->alignment == 16 || cnv_dat->alignment == 32 ); - - break; - - //-------------------- - // “WŠJŒãƒf[ƒ^‚Ìæ“ª‚Ƀf[ƒ^ƒTƒCƒY‚ð•t‰Á‚·‚éƒIƒvƒVƒ‡ƒ“'H' (ˆø”0) - case OPT_HEADER: - SYNTAX_CHECK(strlen(argv[i]) == 2); // •¶Žš”ƒ`ƒFƒbƒN - SYNTAX_CHECK(!cnv_dat->header_flg); // ‚Qd“ǂ݃`ƒFƒbƒN - - cnv_dat->header_flg = 1; - break; - - //-------------------- - // o—̓tƒ@ƒCƒ‹Žw’èƒIƒvƒVƒ‡ƒ“ 'o' (ˆø”1) - case OPT_OUTPUT: - SYNTAX_CHECK(strlen(argv[i]) == 2); // •¶Žš”ƒ`ƒFƒbƒN - SYNTAX_CHECK(*out_fname == NULL); // ‚Qd“ǂ݃`ƒFƒbƒN - SYNTAX_CHECK(i + 1 < argc); // ƒpƒ‰ƒ[ƒ^ƒ`ƒFƒbƒN - - *out_fname = argv[++i]; - break; - - //-------------------- - // ‰ð“€Žw’è 'x'(ˆø”0) - case OPT_EXTRACT: - SYNTAX_CHECK(strlen(argv[i]) == 2); // •¶Žš”ƒ`ƒFƒbƒN - - type = CONV_TYPE_UNCOMPRESS; - opt_num = 0; - goto common; - - //-------------------- - // ·•ªƒtƒBƒ‹ƒ^Žw’è 'd'(ˆø”1) - case OPT_DIFF_FILTER: - type = CONV_TYPE_DIFF; - goto common_opt1; - - //-------------------- - // ƒ‰ƒ“ƒŒƒ“ƒOƒXˆ³kŽw’è'r'(ˆø”0) - case OPT_RUN_LENGTH: - SYNTAX_CHECK(strlen(argv[i]) == 2); // •¶Žš”ƒ`ƒFƒbƒN - - type = CONV_TYPE_RUNLENGTH; - opt_num = 0; - goto common; - -#ifdef _DEBUG - //-------------------- - // ƒŒƒ“ƒWƒR[ƒ_ˆ³kŽw’è'R'(ˆø”0) - case OPT_RANGECODER: - SYNTAX_CHECK(strlen(argv[i]) == 2); // •¶Žš”ƒ`ƒFƒbƒN - - type = CONV_TYPE_RANGECODER; - opt_num = 0; - goto common; -#endif - //-------------------- - // ‹ŒLZ77ˆ³k"-l"(ˆø”0) - case OPT_LZ77: - SYNTAX_CHECK( (argv[i][2] == '\0') || isdigit(argv[i][2]) ); - type = CONV_TYPE_LZ77; - opt_num = 0; - cnv_dat->opt = 2; - - #if defined( FOR_NITRO ) - // ŽŸ‚Ƀpƒ‰ƒ[ƒ^‚ª‚ ‚èA“ü—̓tƒ@ƒCƒ‹–¼‚łȂ¯‚ê‚Γǂݔò‚΂· - if ( i + 2 < argc && argv[i + 1][0] != '-' && - argv[i + 1][1] == '\0' && atoi(&argv[i + 1][0]) != 0 ) - { - i++; - } - #endif - goto common; - - //-------------------- - // LZ77ˆ³k"-lex"(ˆø”0) - case OPT_LZ77EX: - type = CONV_TYPE_LZ77EX; - opt_num = 0; - cnv_dat->opt = 2; // ŒŸõŠJŽnˆÊ’u‚̓IƒvƒVƒ‡ƒ“‚ÅŽw’è‚Å‚«‚È‚¢Ž–‚É‚·‚é - goto common; - - //-------------------- - // LHˆ³k"-lh"(ˆø”0) - case OPT_LH: - type = CONV_TYPE_LH; - opt_num = 0; - goto common; - - //-------------------- - // LRCˆ³k"-lrc"(ˆø”0) - case OPT_LRC: - type = CONV_TYPE_LRC; - opt_num = 0; - goto common; - - //-------------------- - // ƒnƒtƒ}ƒ“ˆ³kŽw’è'h'(ˆø”1) - case OPT_HUFFMAN: - type = CONV_TYPE_HUFFMAN; - goto common_opt1; - - //-------------------- - // ˆ³k•ûŽ®Žw’è•”•ª‚Ì‹¤’ʈ— - common_opt1: - if (strlen(argv[i]) == 2) - // •¶Žš—ñ‚ªI—¹‚µ‚Ä‚¢‚ê‚ÎŽŸ‚̈ø”‚ªƒpƒ‰ƒ[ƒ^‚ƂȂé - { - opt_num = 1; - } - else - // •¶Žš—ñ‚ª‘±‚¢‚Ä‚¢‚ê‚΂»‚Ì’l‚ªƒpƒ‰ƒ[ƒ^‚ƂȂé - { - cnv_dat->opt = atoi(&argv[i][2]); - SYNTAX_CHECK(cnv_dat->opt != 0); // ƒpƒ‰ƒ[ƒ^‚ª1ˆÈã‚Ì”Žš‚Å‚ ‚é‚©‚̃`ƒFƒbƒN - opt_num = 0; - } - // don't break; - common: - SYNTAX_CHECK(cnv_dat->type == CONV_TYPE_NON); // ‚Qd“ǂ݃`ƒFƒbƒN - - cnv_dat->type = type; - - if (opt_num == 0) - { - break; - } - - // ˆø”‚ª‚ ‚éê‡ - SYNTAX_CHECK(i + 1 < argc); // ƒpƒ‰ƒ[ƒ^ƒ`ƒFƒbƒN - i++; - SYNTAX_CHECK(argv[i][0] != '-'); // ƒpƒ‰ƒ[ƒ^‚ɃnƒCƒtƒ“‚ÅŽn‚Ü‚ç‚È‚¢‚©‚̃`ƒFƒbƒN - - cnv_dat->opt = atoi(argv[i]); - - SYNTAX_CHECK(cnv_dat->opt != 0); // ƒpƒ‰ƒ[ƒ^‚ª1ˆÈã‚Ì”Žš‚Å‚ ‚é‚©‚̃`ƒFƒbƒN - - break; - - //-------------------- - default: - usage(cmd_string); - return -1; - } - i++; - } - - SYNTAX_CHECK(*in_fname != NULL); // “ü—̓tƒ@ƒCƒ‹‚ªŽw’肳‚ꂽ‚©‚Ç‚¤‚©‚̃`ƒFƒbƒN - - // o—̓tƒ@ƒCƒ‹–¼‚ÌŽ©“®¶¬ - if (*out_fname == NULL) - { - *out_fname = make_output_fname(*in_fname, cnv_dat); - } - - if (strcmp(*in_fname, *out_fname) == 0) - { - fprintf(stderr, "ERR: output file %s is same as input file\n", *out_fname); - return -1; - } - - if ( cnv_dat->type == CONV_TYPE_UNCOMPRESS ) - // ‰ð“€ƒIƒvƒVƒ‡ƒ“‚ªŽw’肳‚ꂽꇂ̃IƒvƒVƒ‡ƒ“ƒ`ƒFƒbƒN - { - SYNTAX_CHECK(cnv_dat->alignment == 0); // ƒAƒ‰ƒCƒƒ“ƒg‚ÌŽw’è‚Í•s”\‚Å‚· - SYNTAX_CHECK(cnv_dat->header_flg == 0); // ƒwƒbƒ_‚̒ljÁƒIƒvƒVƒ‡ƒ“‚Í•s”\‚Å‚· - } - - return 0; -#undef SYNTAX_CHECK -} - - - -//--------------------------------------------------------------------------- -// “ü—̓tƒ@ƒCƒ‹‚̓ǂݞ‚ÝŠÖ” -// -// @param fname “ü—̓tƒ@ƒCƒ‹–¼ -// @retval ˆ³kî•ñ\‘¢‘̂ւ̃|ƒCƒ“ƒ^ -// @return 0 ƒtƒ@ƒCƒ‹‚̓ǂݞ‚ݬŒ÷ -// -1 ƒtƒ@ƒCƒ‹‚̓ǂݞ‚݃Gƒ‰[ -//--------------------------------------------------------------------------- - -static int load_file(const char *fname, t_conv_data * cnv_dat) -{ - FILE *in_file; - - // ƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ - if ((in_file = fopen(fname, "rb")) == NULL) - { - fprintf(stderr, "ERR: could not open file: %s\n", fname); - return -1; - } - - // ƒtƒ@ƒCƒ‹‚̃TƒCƒYŽæ“¾ - fseek(in_file, 0, SEEK_END); - if ((cnv_dat->src_size = ftell(in_file)) < 0) - { - fprintf(stderr, "ERR: file error\n"); - return -1; - } - - // “ü—̓tƒ@ƒCƒ‹‚ðƒoƒbƒtƒ@‚֓ǂݞ‚Ý - if ((cnv_dat->src_buf = (uchar *) malloc(ROUNDUP4(cnv_dat->src_size))) == NULL) - { - fprintf(stderr, "ERR: memory exhausted\n"); - return -1; - } - - fseek(in_file, 0, SEEK_SET); - if (fread(cnv_dat->src_buf, 1, cnv_dat->src_size, in_file) != cnv_dat->src_size) - { - fprintf(stderr, "ERR: read error\n"); - return -1; - } - - fclose(in_file); - - // ‚SƒoƒCƒgƒAƒ‰ƒCƒ“‚܂łð0‚Å–„‚ß‚é - { - ulong i; - for (i = 0; (cnv_dat->src_size + i) & 3; i++) - { - cnv_dat->src_buf[cnv_dat->src_size + i] = 0; - } - } - - return 0; -} - - -//--------------------------------------------------------------------------- -// o—̓tƒ@ƒCƒ‹‚Ö‚Ì‘‚«ž‚ÝŠÖ” -// -// @param fname o—̓tƒ@ƒCƒ‹–¼ -// @retval ˆ³kî•ñ\‘¢‘̂ւ̃|ƒCƒ“ƒ^ -// @return 0 ƒtƒ@ƒCƒ‹‚Ì‘‚«ž‚ݬŒ÷ -// -1 ƒtƒ@ƒCƒ‹‚Ì‘‚«ž‚݃Gƒ‰[ -//--------------------------------------------------------------------------- - -static int save_file(const char *fname, const t_conv_data * cnv_dat) -{ - FILE *out_file; - - // ‘‚«ž‚݃f[ƒ^‚̃`ƒFƒbƒN - if (cnv_dat->dest_buf == NULL || cnv_dat->dest_size < 0) - { - fprintf(stderr, "ERR: convert error\n"); - return -1; - } - - // ƒtƒ@ƒCƒ‹‚̃I[ƒvƒ“ - if ((out_file = fopen(fname, "wb")) == NULL) - { - fprintf(stderr, "ERR: could not open file: %s\n", fname); - return -1; - } - - // ƒoƒbƒtƒ@‚ðo—̓tƒ@ƒCƒ‹‚Ö‘‚«ž‚Ý - if (cnv_dat->textout_width != 0) - { - // ƒeƒLƒXƒgo—Í - if ( fwrite_text(cnv_dat->dest_buf, cnv_dat->dest_size, cnv_dat->textout_width, out_file, fname) - != cnv_dat->dest_size ) - { - fprintf(stderr, "ERR: write error\n"); - return -1; - } - } - else - { - // ƒoƒCƒiƒŠo—Í - if ( fwrite(cnv_dat->dest_buf, 1, cnv_dat->dest_size, out_file) != cnv_dat->dest_size ) - { - fprintf(stderr, "ERR: write error\n"); - return -1; - } - } - - fclose(out_file); - - return 0; -} - -//--------------------------------------------------------------------------- -// CŒ¾ŒêƒtƒH[ƒ}ƒbƒg‚ł̃eƒLƒXƒgo—Í -// @param buf ƒf[ƒ^ƒoƒbƒtƒ@ -// @param size ƒf[ƒ^ƒTƒCƒY -// @param fp o—̓tƒ@ƒCƒ‹ƒ|ƒCƒ“ƒ^ -// @param name ’蔃‰ƒxƒ‹–¼ -// @return 0 ƒtƒ@ƒCƒ‹‚Ì‘‚«ž‚ݬŒ÷ -// -1 ƒtƒ@ƒCƒ‹‚Ì‘‚«ž‚݃Gƒ‰[ -//--------------------------------------------------------------------------- - -static int fwrite_text(const uchar * buf, ulong size, uint width, FILE * fp, const char *name) -{ - char *const_name_buf; - char *const_name_ptr; - ulong i; - ulong line_num; - uint big_endian = width & TEXT_BIG_ENDIAN_FLAG; - - width &= TEXT_WIDTH_MASK; - - if (fp == NULL) - { - return -1; - } - if (buf == NULL) - { - return -1; - } - if (name == NULL) - { - return -1; - } - - // ’è”–¼‚ÌŒˆ’è - if ((const_name_buf = (char *)malloc( strlen(name) + 1 )) == NULL) - { - fprintf(stderr, "internal err: malloc fail!\n"); - return -1; - } - - strcpy(const_name_buf, name); - const_name_ptr = cut_fname(const_name_buf); - size = (size + width - 1) / width; - - // ƒf[ƒ^‚Ì‘‚«ž‚Ý - if ( fprintf(fp, "#include <%s/types.h>\n\n", INCLUDE_TARGET) < 0 ) - { - return -1; - } - - if ( fprintf(fp, "const u%d %s[0x%lX] = {", width * 8, const_name_ptr, size) < 0 ) - { - return -1; - } - - line_num = (width >= 2) ? 2 : 1; - - for ( i = 0; i < size; i++ ) - { - if ((i * line_num) % 0x10 == 0) - { - if (fprintf(fp, "\n") < 0) - { - return -1; - } - } - switch ( width ) - { - case 1: - { - if ( fprintf(fp, "0x%02X,", *buf) < 0 ) - { - return -1; - } - buf++; - } - break; - case 2: - { - ushort val = *(ushort*)buf; - if ( big_endian ) - { - val = reverse_endian16( val ); - } - - if ( fprintf(fp, "0x%04X,", val) < 0 ) - { - return -1; - } - buf += 2; - } - break; - case 4: - { - ulong val = *(ulong*)buf; - if ( big_endian ) - { - val = reverse_endian32( val ); - } - - if ( fprintf(fp, "0x%08lX,", val) < 0 ) - { - return -1; - } - buf += 4; - } - break; - default: - return -1; - } - } - - if (fprintf(fp, "\n};\n") < 0) - { - return -1; - } - - free(const_name_buf); - - return i * width; -} - - -//--------------------------------------------------------------------------- -// ƒf[ƒ^‚̕ϊ· -// @retval cnv_dat •ÏŠ·î•ñƒf[ƒ^ -// @return 0 •ÏŠ·¬Œ÷ -// -1 •ÏŠ·Ž¸”s -//--------------------------------------------------------------------------- - -static int convert_data(t_conv_data * cnv_dat) -{ - char cmd_str[16]; - - // ƒRƒ}ƒ“ƒhƒXƒgƒŠƒ“ƒO‚̶¬ - switch (cnv_dat->type) - { - //--------------------- - // ·•ªƒtƒBƒ‹ƒ^ - case CONV_TYPE_DIFF: - if (cnv_dat->opt != 8 && cnv_dat->opt != 16) - { - fprintf(stderr, "ERR: invalid DIFF parameter %d\n", cnv_dat->opt); - return -1; - }; - sprintf(cmd_str, "d%d", cnv_dat->opt); - break; - - //--------------------- - // ƒ‰ƒ“ƒŒƒ“ƒOƒXˆ³k - case CONV_TYPE_RUNLENGTH: - // ƒ‰ƒ“ƒŒƒ“ƒOƒX•„†‰» - strcpy(cmd_str, "r"); - break; - - //--------------------- - // LZ77ˆ³k - case CONV_TYPE_LZ77: - if (cnv_dat->opt < 2 || cnv_dat->opt > 255) - { - fprintf(stderr, "ERR: invalid LZ77 parameter %d\n", cnv_dat->opt); - return -1; - }; - sprintf(cmd_str, "l%d", cnv_dat->opt); - break; - - //--------------------- - // LZ77Šg’£ˆ³k - case CONV_TYPE_LZ77EX: - if (cnv_dat->opt < 2 || cnv_dat->opt > 255) - { - fprintf(stderr, "ERR: invalid LZ77 parameter %d\n", cnv_dat->opt); - return -1; - }; - sprintf(cmd_str, "L%d", cnv_dat->opt); - break; - - //--------------------- - // ƒnƒtƒ}ƒ“ˆ³k - case CONV_TYPE_HUFFMAN: - if (cnv_dat->opt != 4 && cnv_dat->opt != 8) - { - fprintf(stderr, "ERR: invalid HUFFMAN parameter %d\n", cnv_dat->opt); - return -1; - }; - sprintf(cmd_str, "h%d", cnv_dat->opt); - break; - - //--------------------- - // ƒŒƒ“ƒWƒR[ƒ_ˆ³k - case CONV_TYPE_RANGECODER: - cnv_dat->dest_buf = nitroCompMalloc( cnv_dat->src_size ); - cnv_dat->dest_size = RCACompWrite( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - goto finish; - - //--------------------- - // LZ-ƒnƒtƒ}ƒ“•¡‡ˆ³k - case CONV_TYPE_LH: - cnv_dat->dest_buf = nitroCompMalloc( cnv_dat->src_size ); - cnv_dat->dest_size = LHCompWrite( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - goto finish; - - //--------------------- - // LZ-RangeCoder•¡‡ˆ³k - case CONV_TYPE_LRC: - cnv_dat->dest_buf = nitroCompMalloc( cnv_dat->src_size ); - cnv_dat->dest_size = LRCCompWrite( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - goto finish; - - //--------------------- - // –³ˆ³k - case CONV_TYPE_NON: - { - cnv_dat->dest_size = cnv_dat->src_size; - cnv_dat->dest_buf = cnv_dat->src_buf; - - // 4ƒoƒCƒgƒAƒ‰ƒCƒ“ƒ`ƒFƒbƒN - if (cnv_dat->alignment) - { - cnv_dat->dest_size = ROUNDUP(cnv_dat->src_size, cnv_dat->alignment); - } - else if (cnv_dat->textout_width >= 2) - { - cnv_dat->dest_size = ROUNDUP( cnv_dat->src_size, cnv_dat->textout_width & TEXT_WIDTH_MASK ); - } - } - return 0; - - //--------------------- - // ‰ð“€ - case CONV_TYPE_UNCOMPRESS: - { - s32 ret; - if ( cnv_dat->src_size == 4 ) - { - cnv_dat->dest_size = 0; - cnv_dat->dest_buf = NULL; - goto finish; - } - cnv_dat->dest_size = nitroGetDecompFileSize( cnv_dat->src_buf ); - cnv_dat->dest_buf = (void*)malloc( cnv_dat->dest_size + 0x20 ); // ƒAƒ‰ƒCƒƒ“ƒg•ª—]•ª‚ÉŠm•Û - memset(cnv_dat->dest_buf, 0, cnv_dat->dest_size + 0x20); - - switch ( *cnv_dat->src_buf & 0xF0 ) - { - case LH_CODE_HEADER: - ret = LHCompRead( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - break; - case LRC_CODE_HEADER: - ret = LRCCompRead( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf ); - break; - case DIFF_CODE_HEADER: - case LZ_CODE_HEADER: - case HUFF_CODE_HEADER: - case RL_CODE_HEADER: - ret = nitroDecompress( cnv_dat->src_buf, cnv_dat->src_size, cnv_dat->dest_buf, 1 ); - break; - default: - ret = -1; - } - if ( ret < 0 ) - { - fprintf(stderr, "ERR: Can't extract this file.\n"); - return -1; - } - } - goto finish; - - default: - fprintf(stderr, "ERR: invalid convert type\n"); - return -1; - } - - // ˆ³kŒãƒtƒ@ƒCƒ‹‚̃oƒbƒtƒ@—̈æŠm•Û - cnv_dat->dest_buf = nitroCompMalloc( cnv_dat->src_size ); - - // ƒf[ƒ^ˆ³k - cnv_dat->dest_size = nitroCompress(cnv_dat->src_buf, - cnv_dat->src_size, - cnv_dat->dest_buf, cmd_str, cnv_dat->header_flg); - // 4ƒoƒCƒgƒAƒ‰ƒCƒ“ƒ`ƒFƒbƒN - if (cnv_dat->alignment) - { - cnv_dat->dest_size = ROUNDUP(cnv_dat->dest_size, cnv_dat->alignment); - } - -finish: - // ƒeƒLƒXƒgŒ`Ž®o—͂̌^‚É‚æ‚éƒAƒ‰ƒCƒ“ƒ`ƒFƒbƒN - if (cnv_dat->textout_width >= 2) - { - cnv_dat->dest_size = ROUNDUP( cnv_dat->dest_size, cnv_dat->textout_width & TEXT_WIDTH_MASK ); - } - - return 0; -} - - -/*---------------------------------------------------------------------------* - Name: verify_data - - Description: ˆ³kƒf[ƒ^‚Ì“WŠJ‚ð‚¨‚±‚È‚¢AŒ³ƒf[ƒ^‚ƈê’v‚·‚é‚©‚Ç‚¤‚© - Šm”F‚·‚éB - - Arguments: cnv_dat •ÏŠ·î•ñƒf[ƒ^ - - Returns: 0 ƒxƒŠƒtƒ@ƒCOK - -1 ƒxƒŠƒtƒ@ƒCNG - *---------------------------------------------------------------------------*/ -static int verify_data( t_conv_data * cnv_dat ) -{ - // ˆ³kƒf[ƒ^‚Ì“WŠJƒ`ƒFƒbƒN - char *decomp_buf; - ulong decomp_size; - - if ( ! cnv_dat->verify_flg ) - { - return 0; - } - - decomp_buf = nitroCompMalloc( cnv_dat->src_size ); - decomp_size = nitroDecompress( cnv_dat->dest_buf, cnv_dat->dest_size, decomp_buf, 1 ); - - if ( matchingCheck(cnv_dat->src_buf, cnv_dat->src_size, decomp_buf, decomp_size) == 0 ) - { - fprintf(stderr, "ERR: data convert error\n"); - return -1; - } - return 0; -} - - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.c deleted file mode 100644 index 588590d9..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.c +++ /dev/null @@ -1,661 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: ntcompress_test.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#if defined( _DEBUG ) - -#include -#include -#include -#include -#include -#include "nitroCompLib.h" -#include "multipleCompLib.h" - -#define MAX_DATA_SIZE_EX 0x02000000 // 32MB -#define MAX_DATA_SIZE 0x00100000 // 1MB -//#define MAX_DATA_SIZE 0x100 // 256B - -#define LOOP_CNT 100 -#define LOOP_CNT_EX 4 - -#if 0 -#define TestReport(...) (void)0 -#else -#define TestReport printf -#endif - -#define ASSERT assert - -static u8* s_original; - -static int TestInit( void ); -static void TestLZ8( void ); -static void TestRL8( void ); -static void TestHuffman( void ); - -static struct -{ - u64 x; // —”’l - u64 mul; // æ” - u64 add; // ‰ÁŽZ‚·‚é” -} -sRandContext; - -static void InitRand32_(u64 seed) -{ - sRandContext.x = seed; - sRandContext.mul = (1566083941LL << 32) + 1812433253LL; - sRandContext.add = 2531011; -} - -static u32 Rand32_(u32 max) -{ - sRandContext.x = sRandContext.mul * sRandContext.x + sRandContext.add; - - // ˆø”max‚ª’蔂Ȃç‚΃Rƒ“ƒpƒCƒ‰‚É‚æ‚èÅ“K‰»‚³‚ê‚éB - if (max == 0) - { - return (u32)(sRandContext.x >> 32); - } - else - { - return (u32)((((sRandContext.x >> 32) * (max >> 1)) >> 32) + (max >> 1)); - } -} - - - -static int compare( const u8 a[], const u8 b[], int size ) -{ - int i; - int equivalent_flag = 1; - for ( i = 0; i < size; ++i ) - { - if ( a[i] != b[i] ) - { - equivalent_flag = 0; - break; - } - } - return equivalent_flag; -} - - -//-------------------------------------------------- -// Œ³ƒf[ƒ^¶¬—pŠÖ” -//-------------------------------------------------- - -// LZ,Huffman‚ň³k‚³‚ê‚â‚·‚¢Œ³ƒf[ƒ^‚ð쬂·‚éB -static u32 makeOriginalDataForLZHuff( u32 seed ) -{ - u32 fsize; - u32 i; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - (void)Rand32_( 0 ); - fsize = Rand32_( MAX_DATA_SIZE ); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = (u8)(Rand32_(0x100) & 0xF0); - } - return fsize; -} - - -// RLˆ³k‚³‚ê‚â‚·‚¢Œ³ƒf[ƒ^‚ð쬂·‚éB -static u32 makeOriginalDataForRL( u32 seed ) -{ - u8 val; - u32 i; - u32 fsize; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - (void)Rand32_( 0 ); - fsize = Rand32_( MAX_DATA_SIZE ); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - if ( (i % 4) == 0 ) - { - val = (u8)Rand32_(0x100); - } - s_original[ i ] = val; - } - return fsize; -} - -// ˆ³k‚³‚ê‚É‚­‚¢Œ³ƒf[ƒ^‚ð쬂·‚éB -static u32 makeOriginalDataRand( u32 seed ) -{ - u32 i; - u32 fsize; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - (void)Rand32_( 0 ); - fsize = Rand32_( MAX_DATA_SIZE ); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = (u8)Rand32_(0x100); - } - return fsize; -} - - -// ‚·‚ׂĂª’Pˆê’l‚ÌŒ³ƒf[ƒ^‚ð쬂·‚éB -static u32 makeOriginalDataMonoValue( u32 seed ) -{ - u32 i; - u32 fsize; - u8 val; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - (void)Rand32_( 0 ); - fsize = Rand32_( MAX_DATA_SIZE ); - if ( fsize <= 4 ) - { - fsize += 5; - } - - val = (u8)Rand32_(0x100); - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = val; - } - return fsize; -} - -// LZ,Huffman‚ň³k‚³‚ê‚â‚·‚¢Œ³ƒf[ƒ^‚ð쬂·‚éB -static u32 makeOriginalDataForLZHuffEx( u32 seed ) -{ - u32 i; - u32 fsize; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - fsize = Rand32_(MAX_DATA_SIZE_EX / 2) + (MAX_DATA_SIZE_EX / 2); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = (u8)(Rand32_(0x100) & 0xF0); - } - return fsize; -} - - -// RLˆ³k‚³‚ê‚â‚·‚¢Œ³ƒf[ƒ^‚ð쬂·‚éB -static u32 makeOriginalDataForRLEx( u32 seed ) -{ - u32 i; - u32 fsize; - u8 val; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - fsize = Rand32_(MAX_DATA_SIZE_EX / 2) + (MAX_DATA_SIZE_EX / 2); - if ( fsize <= 4 ) - { - fsize += 5; - } - - val; - for ( i = 0; i < fsize; ++i ) - { - if ( (i % 4) == 0 ) - { - val = (u8)Rand32_(0x100); - } - s_original[ i ] = val; - } - return fsize; -} - -// ˆ³k‚³‚ê‚É‚­‚¢Œ³ƒf[ƒ^‚ð쬂·‚éB -static u32 makeOriginalDataRandEx( u32 seed ) -{ - u32 fsize; - u32 i; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - fsize = Rand32_(MAX_DATA_SIZE_EX / 2) + (MAX_DATA_SIZE_EX / 2); - if ( fsize <= 4 ) - { - fsize += 5; - } - - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = (u8)Rand32_(0x100); - } - return fsize; -} - - -// ‚·‚ׂĂª’Pˆê’l‚ÌŒ³ƒf[ƒ^‚ð쬂·‚éB -static u32 makeOriginalDataMonoValueEx( u32 seed ) -{ - u32 fsize; - u32 i; - u8 val; - - TestReport("seed: %u\n", seed); - InitRand32_( seed ); - fsize = Rand32_(MAX_DATA_SIZE_EX / 2) + (MAX_DATA_SIZE_EX / 2); - if ( fsize <= 4 ) - { - fsize += 5; - } - - val = (u8)Rand32_(0x100); - for ( i = 0; i < fsize; ++i ) - { - s_original[ i ] = val; - } - return fsize; -} - - - -typedef u32 (*MakeDataFunc)( u32 seed ); -#define WATER_MARK 0xDeadBeaf - - -static void TestLZ8_template( MakeDataFunc makeDataFunc, u32 exFmt, u32 loop_cnt ) -{ - u32 i; - for ( i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( fsize + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - if ( ! exFmt ) - { - sz = nitroCompress( s_original, fsize, s_compressed, "l2", 0 ); - } - else - { - sz = nitroCompress( s_original, fsize, s_compressed, "L2", 0 ); - } - - if ( sz == 0 ) - { - TestReport( "compress LZ fail size %d\n", fsize ); - } - else - { - TestReport("compress LZ %d -> %d\n", fsize, sz ); - *(u32*)(&s_uncompressed[ fsize ]) = WATER_MARK; - nitroDecompress( s_compressed, sz, s_uncompressed, 1 ); - ASSERT( compare( s_original, s_uncompressed, (int)fsize ) ); - // “WŠJŽž‚̃I[ƒo[ƒAƒNƒZƒX‚ðƒ`ƒFƒbƒN - ASSERT( *(u32*)(&s_uncompressed[ fsize ]) == WATER_MARK ); - } - - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - -static void TestRL8_template( MakeDataFunc makeDataFunc, u32 loop_cnt ) -{ - u32 i; - for ( i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( fsize + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - sz = nitroCompress( s_original, fsize, s_compressed, "r", 0 ); - - if ( sz == 0 ) - { - TestReport( "compress RL fail size %d\n", fsize ); - } - else - { - TestReport("compress RL %d -> %d\n", fsize, sz ); - *(u32*)(&s_uncompressed[ fsize ]) = WATER_MARK; - nitroDecompress( s_compressed, sz, s_uncompressed, 1 ); - ASSERT( compare(s_original, s_uncompressed, (int)fsize) ); - // “WŠJŽž‚̃I[ƒo[ƒAƒNƒZƒX‚ðƒ`ƒFƒbƒN - ASSERT( *(u32*)(&s_uncompressed[ fsize ]) == WATER_MARK ); - } - - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - -static void TestHuffman_template( MakeDataFunc makeDataFunc, u8 encBit, u32 loop_cnt ) -{ - u32 i; - for (i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( ((fsize + 0x3) & ~0x3) + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - sz = nitroCompress( s_original, fsize, s_compressed, (encBit == 4 )? "h4" : "h8", 0 ); - - if ( sz == 0 ) - { - TestReport( "compress Huff fail size %d\n", fsize ); - } - else - { - TestReport("compress Huff %d -> %d\n", fsize, sz ); - // ƒnƒtƒ}ƒ““WŠJ‚ł͖–”ö‚Ì4ƒoƒCƒgƒAƒ‰ƒCƒ“‚܂ł̓I[ƒo[ƒAƒNƒZƒX‚³‚꓾‚é - // ƒR[ƒh‚ɂȂÁ‚Ä‚¢‚é - *(u32*)(&s_uncompressed[ (fsize + 0x3) & ~0x3 ]) = WATER_MARK; - nitroDecompress( s_compressed, sz, s_uncompressed, 1 ); - ASSERT( compare(s_original, s_uncompressed, (int)fsize) ); - // “WŠJŽž‚̃I[ƒo[ƒAƒNƒZƒX‚ðƒ`ƒFƒbƒN - ASSERT( *(u32*)(&s_uncompressed[ (fsize + 0x3) & ~0x3 ]) == WATER_MARK ); - } - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - - -static void TestLH8_template( MakeDataFunc makeDataFunc, u32 exFmt, u32 loop_cnt ) -{ - u32 i; - for ( i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( fsize + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - sz = LHCompWrite( s_original, fsize, s_compressed ); - - if ( sz == 0 ) - { - TestReport( "compress LH fail size %d\n", fsize ); - } - else - { - TestReport("compress LH %d -> %d\n", fsize, sz ); - *(u32*)(&s_uncompressed[ fsize ]) = WATER_MARK; - LHCompRead( s_compressed, sz, s_uncompressed ); - ASSERT( compare(s_original, s_uncompressed, (int)fsize) ); - // “WŠJŽž‚̃I[ƒo[ƒAƒNƒZƒX‚ðƒ`ƒFƒbƒN - ASSERT( *(u32*)(&s_uncompressed[ fsize ]) == WATER_MARK ); - } - - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - - -static void TestLRC8_template( MakeDataFunc makeDataFunc, u32 exFmt, u32 loop_cnt ) -{ - u32 i; - for ( i = 0; i < loop_cnt; ++i ) - { - u32 fsize = makeDataFunc( i ); - - u8* s_compressed = nitroCompMalloc( fsize ); - u8* s_uncompressed = (u8*)malloc( fsize + 4 ); - u32 sz; - - TestReport("size = %d\n", fsize); - sz = LRCCompWrite( s_original, fsize, s_compressed ); - - if ( sz == 0 ) - { - TestReport( "compress LRC fail size %d\n", fsize ); - } - else - { - TestReport("compress LRC %d -> %d\n", fsize, sz ); - *(u32*)(&s_uncompressed[ fsize ]) = WATER_MARK; - LRCCompRead( s_compressed, sz, s_uncompressed ); - ASSERT( compare(s_original, s_uncompressed, (int)fsize) ); - // “WŠJŽž‚̃I[ƒo[ƒAƒNƒZƒX‚ðƒ`ƒFƒbƒN - ASSERT( *(u32*)(&s_uncompressed[ fsize ]) == WATER_MARK ); - } - - nitroCompFree( s_compressed ); - free( s_uncompressed ); - } -} - - -//-------------------------------------------------- -// ƒeƒXƒgƒƒCƒ“ -//-------------------------------------------------- - -static int TestInit( void ) -{ - time_t t; - s_original = (u8*)malloc( MAX_DATA_SIZE_EX + 4 ); - makeOriginalDataRand( (u32)time( &t ) ); - - return 0; -} - - -static void TestLZ8_normal( void ) -{ - TestLZ8_template( makeOriginalDataForLZHuff, 0, LOOP_CNT ); -} -static void TestLZ8_random( void ) -{ - TestLZ8_template( makeOriginalDataRand, 0, LOOP_CNT ); -} -static void TestLZ8_mono( void ) -{ - TestLZ8_template( makeOriginalDataMonoValue, 0, LOOP_CNT ); -} - -static void TestLZ8EX_normal( void ) -{ - TestLZ8_template( makeOriginalDataForLZHuff, 1, LOOP_CNT ); -} -static void TestLZ8EX_random( void ) -{ - TestLZ8_template( makeOriginalDataRand, 1, LOOP_CNT ); -} -static void TestLZ8EX_mono( void ) -{ - TestLZ8_template( makeOriginalDataMonoValue, 1, LOOP_CNT ); -} - - -static void TestRL8_normal( void ) -{ - TestRL8_template( makeOriginalDataForRL, LOOP_CNT ); -} -static void TestRL8_random( void ) -{ - TestRL8_template( makeOriginalDataRand, LOOP_CNT ); -} -static void TestRL8_mono( void ) -{ - TestRL8_template( makeOriginalDataMonoValue, LOOP_CNT ); -} - -static void TestHuffman8_normal( void ) -{ - TestHuffman_template( makeOriginalDataForLZHuff, 8, LOOP_CNT ); -} -static void TestHuffman8_random( void ) -{ - TestHuffman_template( makeOriginalDataRand, 8, LOOP_CNT ); -} -static void TestHuffman8_mono( void ) -{ - TestHuffman_template( makeOriginalDataMonoValue, 8, LOOP_CNT ); -} - -static void TestHuffman4_normal( void ) -{ - TestHuffman_template( makeOriginalDataForLZHuff, 4, LOOP_CNT ); -} -static void TestHuffman4_random( void ) -{ - TestHuffman_template( makeOriginalDataRand, 4, LOOP_CNT ); -} -static void TestHuffman4_mono( void ) -{ - TestHuffman_template( makeOriginalDataMonoValue, 4, LOOP_CNT ); -} - -static void TestLZ_ex(void) -{ - TestLZ8_template( makeOriginalDataForLZHuffEx, 0, LOOP_CNT_EX ); -} - -static void TestLZEX_ex(void) -{ - TestLZ8_template( makeOriginalDataForLZHuffEx, 1, LOOP_CNT_EX ); -} - -static void TestRL_ex(void) -{ - TestRL8_template( makeOriginalDataForRLEx, LOOP_CNT_EX ); -} - -static void TestHuffman8_ex(void) -{ - TestHuffman_template( makeOriginalDataForLZHuffEx, 8, LOOP_CNT_EX ); -} - -static void TestHuffman4_ex(void) -{ - TestHuffman_template( makeOriginalDataForLZHuffEx, 4, LOOP_CNT_EX ); -} - -static void TestLH_normal(void) -{ - TestLH8_template( makeOriginalDataForLZHuff, 0, LOOP_CNT ); -} - -static void TestLH_random(void) -{ - TestLH8_template( makeOriginalDataRand, 0, LOOP_CNT ); -} - -static void TestLH_mono(void) -{ - TestLH8_template( makeOriginalDataMonoValue, 0, LOOP_CNT ); -} - -static void TestLRC_normal(void) -{ - TestLRC8_template( makeOriginalDataForLZHuff, 0, LOOP_CNT ); -} - -static void TestLRC_random(void) -{ - TestLRC8_template( makeOriginalDataRand, 0, LOOP_CNT ); -} - -static void TestLRC_mono(void) -{ - TestLRC8_template( makeOriginalDataMonoValue, 0, LOOP_CNT ); -} - -#endif /* defined( _DEBUG ) */ - - - - - -/*---------------------------------------------------------------------------* - Name: ntcompress_test - - Description: ƒeƒXƒgƒƒCƒ“ - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -void ntcompress_test( void ) -{ -#if defined( _DEBUG ) - TestInit(); - - TestLH_normal(); - TestLH_random(); - TestLH_mono (); - TestLRC_normal(); - TestLRC_random(); - TestLRC_mono (); - - TestLZ8EX_normal(); - TestLZ8EX_random(); - TestLZ8EX_mono (); - TestLZ8_normal(); - TestLZ8_random(); - TestLZ8_mono (); - TestRL8_normal(); - TestRL8_random(); - TestRL8_mono (); - TestHuffman8_normal(); - TestHuffman8_random(); - TestHuffman8_mono (); - TestHuffman4_normal(); - TestHuffman4_random(); - TestHuffman4_mono (); - TestLZ_ex(); - TestLZEX_ex(); - TestRL_ex(); - TestHuffman8_ex(); - TestHuffman4_ex(); - -#endif -} - - - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.h deleted file mode 100644 index 1167a58d..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/ntcompress_test.h +++ /dev/null @@ -1,23 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: ntcompress_test.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ -#ifndef NTCOMPRESS_TEST_H__ -#define NTCOMPRESS_TEST_H__ - -void ntcompress_test( void ); - -#endif // NTCOMPRESS_TEST_H__ - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.c b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.c deleted file mode 100644 index 193baa9c..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.c +++ /dev/null @@ -1,539 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: rangeCoder.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "rangeCoder.h" - -typedef struct -{ - u32 freq[ 0x100 ]; - u32 low_cnt[ 0x100 ]; - u32 total; -} -RCCompressionInfo; - -// ƒŒƒ“ƒWƒR[ƒ_ó‘Ô\‘¢‘Ì -typedef struct -{ - u32 low; - u32 range; - u32 code; // “WŠJŽž‚̂ݎg—p - u8 carry; // ˆ³kŽž‚̂ݎg—p - u32 carry_cnt; // ˆ³kŽž‚̂ݎg—p -} -RCState; - - -#define MAX_RANGE 0x80000000 - -/*---------------------------------------------------------------------------* - Name: RCInitInfo_ - Description: - Arguments: info - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCInitInfo_( RCCompressionInfo* info, BOOL adaptive ) -{ - u32 i; - - if ( adaptive ) - // “K‰žŒ^ƒŒƒ“ƒWƒR[ƒ_ - { - for ( i = 0; i < 0x100; i++ ) - { - info->freq[ i ] = 1; - info->low_cnt[ i ] = i; - } - info->total = 0x100; - } - else - // ÓIƒŒƒ“ƒWƒR[ƒ_ - { - for ( i = 0; i < 0x100; i++ ) - { - info->freq[ i ] = 0; - info->low_cnt[ i ] = 0; - } - info->total = 0; - } -} - - -/*---------------------------------------------------------------------------* - Name: RCCount_ - Description: - Arguments: info - srcp - size - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCCount_( RCCompressionInfo* info, const u8* srcp, u32 size ) -{ - u32 srcCnt = 0; - u32 i; - - while ( srcCnt < size ) - { - info->freq[ srcp[ srcCnt ] ]++; - info->total++; - srcCnt++; - } - - // 0x10000‚Ö³‹K‰» - #define NORMAL_FREQ 0x10000 - { - f32 rate = (f32)NORMAL_FREQ / info->total; - u32 max_i = 0; - u32 max_freq = 0; - - info->total = 0; - for ( i = 0; i < 0x100; i++ ) - { - u32 orig = info->freq[ i ]; - info->freq[ i ] = (u32)(rate * info->freq[ i ] + 0.5f); - if ( orig != 0 && info->freq[ i ] == 0 ) - { - info->freq[ i ] = 1; - } - - info->total += info->freq[ i ]; - if ( info->freq[ i ] >= max_freq ) - { - max_i = i; - max_freq = info->freq[ i ]; - } - } - if ( info->total > NORMAL_FREQ ) - { - info->freq[ max_i ] -= (info->total - NORMAL_FREQ); - } - else - { - info->freq[ max_i ] += (NORMAL_FREQ - info->total); - } - info->total = NORMAL_FREQ; - } - #undef NORMAL_FREQ - - info->low_cnt[ 0 ] = 0; - - for ( i = 1; i < 0x100; i++ ) - { - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - } -} - - - -/*---------------------------------------------------------------------------* - Name: RCAAddCount_ - - Description: “K‰žŒ^ƒŒƒ“ƒWƒR[ƒ_‚Ì•p“xƒe[ƒuƒ‹‚ðXV‚µ‚Ü‚·B - - Arguments: info - val - - Returns: None. - *---------------------------------------------------------------------------*/ -static void -RCAAddCount_( RCCompressionInfo* info, u8 val ) -{ - u32 i; - - info->freq[ val ]++; - info->total++; - for ( i = val + 1; i < 0x100; i++ ) - { - info->low_cnt[ i ]++; - } - - // ƒg[ƒ^ƒ‹‚ªÅ‘å’l‚ð‰z‚¦‚½ê‡‚É‚ÍAÄ\¬‚·‚éB - if ( info->total >= 0x00010000 ) - { - if ( info->freq[ 0 ] > 1 ) - { - info->freq[ 0 ] = info->freq[ 0 ] / 2; - } - info->low_cnt[ 0 ] = 0; - info->total = info->freq[ 0 ]; - - for ( i = 1; i < 0x100; i++ ) - { - if ( info->freq[ i ] > 1 ) - { - info->freq[ i ] >>= 1; - } - info->low_cnt[ i ] = info->low_cnt[ i - 1 ] + info->freq[ i - 1 ]; - info->total += info->freq[ i ]; - } - } -} - - -/*---------------------------------------------------------------------------* - Name: RCCompWrite - - Description: ƒŒƒ“ƒWƒR[ƒ_‚̈³k(ƒe[ƒuƒ‹Œ^) - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompWrite_( const u8* srcp, u32 size, u8* dstp, BOOL adaptive ) -{ -#define MIN_RANGE 0x01000000 - static RCCompressionInfo sInfo; - u32 srcCnt = 0; - u32 dstCnt = 0; - u32 low, range; - u8 carry; - u32 carry_cnt; - u32 i; - - // ƒ[ƒN‚̉Šú‰» - RCInitInfo_( &sInfo, adaptive ); - - if ( ! adaptive ) - { - // oŒ»•p“x‚ðŒvŽZ - RCCount_( &sInfo, srcp, size ); - } - - // ŠJŽnRange‚ª0x80000000‚Ȃ̂ÅA‰‰ñ‚¢‚«‚Ȃ茅グ‚ª”­¶‚·‚邱‚Ƃ͂Ȃ¢ - low = 0; - range = MAX_RANGE; - carry = 0; - carry_cnt = 0; - - // ƒwƒbƒ_o—Í - dstp[ dstCnt++ ] = LRC_CODE_HEADER; - if ( size > 0x1000000 ) - { - dstp[ dstCnt++ ] = 0; - dstp[ dstCnt++ ] = 0; - dstp[ dstCnt++ ] = 0; - } - dstp[ dstCnt++ ] = (u8)( size ); - dstp[ dstCnt++ ] = (u8)( size >> 8 ); - dstp[ dstCnt++ ] = (u8)( size >> 16 ); - if ( size > 0x1000000 ) - { - dstp[ dstCnt++ ] = (u8)( size >> 24 ); - } - - if ( ! adaptive ) - { - // •p“xƒe[ƒuƒ‹‚Ìo—Í(16bitƒŠƒgƒ‹ƒGƒ“ƒfƒBƒAƒ“) - for ( i = 0; i < 0x100; i++ ) - { - dstp[ dstCnt++ ] = (u8)( sInfo.freq[ i ] ); - dstp[ dstCnt++ ] = (u8)( sInfo.freq[ i ] >> 8 ); - } - } - - // ƒR[ƒh‚Ìo—Í - while ( srcCnt < size ) - { - u8 val = srcp[ srcCnt++ ]; - u32 temp = range / sInfo.total; - u32 prevLow = low; - low = low + sInfo.low_cnt[ val ] * temp; - range = sInfo.freq[ val ] * temp; - - if ( adaptive ) - { - // oŒ»•p“xƒe[ƒuƒ‹‚ðXV - RCAAddCount_( &sInfo, val ); - } - - // Œ…オ‚肪”­¶‚·‚éꇂ̈— - if ( prevLow > low ) - { - // ƒLƒƒƒŠ[‚ð‚PŒJã‚° - ++carry; - // ƒLƒƒƒŠ[‚Æ(ƒLƒƒƒŠ[ƒJƒEƒ“ƒ^ - 1)•ª‚Ì0x00‚ðo—Í‚µ‚Ü‚·B - if ( carry_cnt > 1 ) - { - dstp[ dstCnt++ ] = carry; - --carry_cnt; - carry = 0x00; - } - while ( carry_cnt > 1 ) - { - dstp[ dstCnt++ ] = 0x00; - --carry_cnt; - } - } - - // Range‚ÌãˆÊ1ƒoƒCƒg‚ª‹ó‚ɂȂÁ‚½‚猅グ - while ( range < MIN_RANGE ) - { - u8 candidate = (u8)( low >> 24 ); - - // ŽŸ‚̃LƒƒƒŠ[‚ª0xFF‚ÌꇂÍX‚ÉŒ…ã‚°‚ª‚ ‚蓾‚é‚Ì‚Åcarry‚ðo—Í‚¹‚¸‚Écarry_cnt‚¾‚¯‘‚â‚· - if ( candidate == 0xFF ) - { - ++carry_cnt; - } - else - // ŽŸ‚̃LƒƒƒŠ[‚ª0xFF‚ł͂Ȃ¢ê‡‚Ícarry‚ðo—Í‚·‚é - { - // carry‚Æ(carry_cnt - 1)•ª‚Ì0xFF‚ðo—Í‚·‚é - if ( carry_cnt > 0 ) - { - dstp[ dstCnt++ ] = carry; - --carry_cnt; - } - while ( carry_cnt > 0 ) - { - dstp[ dstCnt++ ] = 0xFF; - --carry_cnt; - } - // V‚µ‚¢carry‚É’u‚«Š·‚¦ - carry = candidate; - carry_cnt = 1; - } - low <<= 8; - range <<= 8; - } - } - - if ( carry_cnt > 0 ) - { - dstp[ dstCnt++ ] = carry; - --carry_cnt; - } - while ( carry_cnt > 0 ) - { - dstp[ dstCnt++ ] = 0xFF; - --carry_cnt; - } - dstp[ dstCnt++ ] = (u8)( (low >> 24) & 0xFF ); - dstp[ dstCnt++ ] = (u8)( (low >> 16) & 0xFF ); - dstp[ dstCnt++ ] = (u8)( (low >> 8 ) & 0xFF ); - dstp[ dstCnt++ ] = (u8)( (low >> 0 ) & 0xFF ); - - return dstCnt; -#undef MIN_RANGE -} - - -/*---------------------------------------------------------------------------* - Name: RCACompWrite - - Description: ƒŒƒ“ƒWƒR[ƒ_‚̈³k(“K‰žŒ^) - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompWrite( const u8* srcp, u32 size, u8* dstp ) -{ - return RCCompWrite_( srcp, size, dstp, FALSE ); -} - -s32 -RCACompWrite( const u8* srcp, u32 size, u8* dstp ) -{ - return RCCompWrite_( srcp, size, dstp, TRUE ); -} - -static u8 -SearchRC_( RCCompressionInfo* info, u32 code, u32 range, u32 low ) -{ -#define TABLE_SIZE 0x100 - u32 codeVal = code - low; - u32 i; - u32 temp = range / info->total; - u32 tempVal = codeVal / temp; - -#if 0 - // TODO: ‚Ƃ肠‚¦‚¸üŒ`’TõA“ñ•ª’Tõ‚É‚·‚é‚ׂ« - for ( i = 0; i < TABLE_SIZE - 1; i++ ) - { - if ( info->low_cnt[ i + 1 ] > tempVal ) - { - while ( info->freq[ i ] == 0 ) - { - --i; - } - return (u8)i; - } - } - return TABLE_SIZE - 1; -#else - // “ñ•ª’Tõ - u32 left = 0; - u32 right = TABLE_SIZE - 1; - - while ( left < right ) - { - i = (left + right) / 2; - - if ( info->low_cnt[ i ] > tempVal ) - { - right = i; - } - else - { - left = i + 1; - } - } - - i = left; - while ( info->low_cnt[ i ] > tempVal ) - { - --i; - } - return (u8)i; -#endif -} - -/*---------------------------------------------------------------------------* - Name: RCCompRead - - Description: ƒŒƒ“ƒWƒR[ƒ_“WŠJ(ƒe[ƒuƒ‹Œ^) - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompRead_( const u8* srcp, u32 srcSize, u8* dstp, BOOL adaptive ) -{ -#define MIN_RANGE 0x01000000 - static RCCompressionInfo sInfo; - - u32 dstSize = *(u32*)srcp >> 8; - u32 dstCnt = 0; - u32 srcCnt = 0; - u32 i; - u32 code, range, low; - - if ( srcSize < 4 ) - { - return -1; - } - - srcCnt = 4; - if ( dstSize == 0 ) - { - dstSize = *(u32*)&srcp[ srcCnt ]; - srcCnt += 4; - if ( srcSize < 8 ) - { - return -1; - } - } - - if ( srcSize < sizeof(u16) * 0x100 + srcCnt ) - { - return -1; - } - - // ƒ[ƒN‚̉Šú‰» - if ( adaptive ) - { - RCInitInfo_( &sInfo, TRUE ); - } - else - { - sInfo.total = 0; - for ( i = 0; i < 0x100; i++ ) - { - sInfo.freq[ i ] = *(u16*)&srcp[ srcCnt ]; - srcCnt += 2; - sInfo.total += sInfo.freq[ i ]; - } - sInfo.low_cnt[ 0 ] = 0; - for ( i = 1; i < 0x100; i++ ) - { - sInfo.low_cnt[ i ] = sInfo.low_cnt[ i - 1 ] + sInfo.freq[ i - 1 ]; - } - } - - code = (u32)((srcp[ srcCnt ] << 24) | (srcp[ srcCnt + 1 ] << 16) | - (srcp[ srcCnt + 2 ] << 8) | (srcp[ srcCnt + 3 ])); - range = MAX_RANGE; - low = 0; - srcCnt += 4; - - while ( dstCnt < dstSize ) - { - u8 val = SearchRC_( &sInfo, code, range, low ); - - dstp[ dstCnt++ ] = val; - - { - u32 tmp; - tmp = range / sInfo.total; - low = low + sInfo.low_cnt[ val ] * tmp; - range = sInfo.freq[ val ] * tmp; - } - - if ( adaptive ) - { - // oŒ»•p“xƒe[ƒuƒ‹‚ðXV - RCAAddCount_( &sInfo, val ); - } - - while ( range < MIN_RANGE ) - { - code <<= 8; - code += srcp[ srcCnt++ ]; - range <<= 8; - low <<= 8; - } - } - - return dstSize; -#undef MIN_RANGE -} - - -/*---------------------------------------------------------------------------* - Name: RCACompRead - - Description: ƒŒƒ“ƒWƒR[ƒ_“WŠJ(“K‰žŒ^) - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompRead( const u8* srcp, u32 srcSize, u8* dstp ) -{ - return RCCompRead_( srcp, srcSize, dstp, FALSE ); -} - -s32 -RCACompRead( const u8* srcp, u32 srcSize, u8* dstp ) -{ - return RCCompRead_( srcp, srcSize, dstp, TRUE ); -} - diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.h deleted file mode 100644 index 53808e5a..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/rangeCoder.h +++ /dev/null @@ -1,46 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: rangeCoder.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include "types.h" - -#ifndef __NTCOMPRESS_RANGE_CODER_H__ -#define __NTCOMPRESS_RANGE_CODER_H__ - -/*---------------------------------------------------------------------------* - Name: RCCompWrite - - Description: ƒŒƒ“ƒWƒR[ƒ_‚̈³k - - Arguments: srcp - size - dstp - - Returns: - *---------------------------------------------------------------------------*/ -s32 -RCCompWrite( const u8* srcp, u32 size, u8* dstp ); - -s32 -RCCompRead( const u8* srcp, u32 srcSize, u8* dstp ); - -s32 -RCACompWrite( const u8* srcp, u32 size, u8* dstp ); - -s32 -RCACompRead( const u8* srcp, u32 srcSize, u8* dstp ); - -#endif // __NTCOMPRESS_RANGE_CODER_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/types.h b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/types.h deleted file mode 100644 index 7d76786b..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/src/types.h +++ /dev/null @@ -1,57 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NinTendo Compress tool - File: types.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __NTCOMPRESS_TYPES_H__ -#define __NTCOMPRESS_TYPES_H__ - -//=========================================================================================== -// Œ^’è‹` -//=========================================================================================== -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned long u32; -typedef signed char s8; -typedef signed short s16; -typedef signed long s32; -typedef float f32; -typedef unsigned long BOOL; -#define FALSE 0 -#define TRUE 1 - -#define DIFF_CODE_HEADER (0x80) -#define LZ_CODE_HEADER (0x10) -#define HUFF_CODE_HEADER (0x20) -#define RL_CODE_HEADER (0x30) -#define LH_CODE_HEADER (0x40) -#define LRC_CODE_HEADER (0x50) -#define CODE_HEADER_MASK (0xF0) - - -#if defined( __GNUC__ ) - typedef unsigned long long int u64; - typedef signed long long int s64; - #define INLINE inline - #define ASSERT(x) (void)0 -#else - #include - #define INLINE __inline - #define ASSERT assert - typedef unsigned __int64 u64; - typedef signed __int64 s64; -#endif - -#endif // __NTCOMPRESS_TYPES_H__ diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.sln b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.sln deleted file mode 100644 index 541afd75..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.sln +++ /dev/null @@ -1,21 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ntcompress", "ntcompress.vcproj", "{FA042C1E-4CB1-4B8A-87A6-B46B4222605E}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {FA042C1E-4CB1-4B8A-87A6-B46B4222605E}.Debug.ActiveCfg = Debug|Win32 - {FA042C1E-4CB1-4B8A-87A6-B46B4222605E}.Debug.Build.0 = Debug|Win32 - {FA042C1E-4CB1-4B8A-87A6-B46B4222605E}.Release.ActiveCfg = Release|Win32 - {FA042C1E-4CB1-4B8A-87A6-B46B4222605E}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.vcproj b/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.vcproj deleted file mode 100644 index 050e7b60..00000000 --- a/build/tests/compressSharedFontLoad/compSharedFont/ntrcomp/vc++/ntcompress.vcproj +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/Makefile b/build/tests/compressSharedFontLoad/testLoadSpeed/Makefile deleted file mode 100644 index 4f394d4f..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlSDK - demos - FS - overlay -# File: Makefile -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -TARGET_PLATFORM = TWL -TWL_ARCHGEN = LIMITED - - -ifeq ($(TEST_TWLSDK_REBUILD),TRUE) -export TWLSDK_SYSMENU_PRIVATE = TRUE -SUBDIRS = copy_to_sdk \ - $(ROOT) -endif # ifeq ($(TEST_TWLSDK_REBUILD),TRUE) - -#---------------------------------------------------------------------------- - -TARGET_BIN = main.srl - -SRCS = main.c loadSharedFont.c - -LLIBRARIES += libsharedfont$(TWL_LIBSUFFIX).a - -ROM_SPEC = ROM-TS_nand.rsf - -include $(TWLSDK_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - -MAKEROM_ARM7_BASE = $(TWL_COMPONENTSDIR)/armadillo/$(TWL_BUILDTYPE_ARM7)/armadillo -MAKEROM_ARM7 = $(MAKEROM_ARM7_BASE).$(TWL_ELF_EXT) -MAKEROM = $(TWL_TOOLSDIR)/bin/makerom.TWL.secure.exe - -#---------------------------------------------------------------------------- - -do-build: oslib $(TARGETS) - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -oslib: - touch $(ROOT)/build/libraries/os/ARM9.TWL/src/os_sharedFont.c - -#===== End of Makefile ===== diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/ROM-TS_nand.rsf b/build/tests/compressSharedFontLoad/testLoadSpeed/ROM-TS_nand.rsf deleted file mode 100644 index 8cb68fb1..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/ROM-TS_nand.rsf +++ /dev/null @@ -1,277 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "MY APP NAME" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit LandingNormalJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingNormalJump FALSE - - # - # Permit LandingTmpJump: for TWL "ApplicationJump" function [TRUE/FALSE] - # - #PermitLandingTmpJump FALSE - - ### - ### Setting for TWL - ### - - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # -################################################################ - - WramMapping MAP_TS_SCR - -################################################################ - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion ALL - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - # - # NANDAccess: NAND access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # Disp WiFiConnection Icon for Launcher [TRUE/FALSE] - # - #WiFiConnectionIcon FALSE - - # - # Disp DSWireless Icon for Launcher [TRUE/FALSE] - # - #DSWirelessIcon FALSE - - # - # Disable debug [TRUE/FALSE] - # - DisableDebug FALSE - - # - # Agree EULA [TRUE/FALSE] - # - #AgreeEULA FALSE - - # - # Agree EULA version [0 - 255] - # - #AgreeEULAVersion 0 - - ### - #### END -} - -AppendProperty -{ - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - - # - # Boot allowed Media: [GameCard] - # - Media NAND - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # - #GameCode ABCJ - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # Public save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile TRUE - - # - # Use Shared2 file index: [0-65535] - #Shared2FileIndex 0 - - # - # Use Shared2 file size: [0K/16K/32K/64K/128K/256K/512K/1M/2M/4M] - #Shared2FileSize 0K - - # - # Game card power on: [TRUE/FALSE] - # - #GameCardOn FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} - -Rating -{ - # - # Permited age to play for each rating organization [0 - 31, ALWAYS, FREE] - # - # Supported organization - # - CERO (OGN0) : for Japan - # - ESRB (OGN1) : for North America - # - BBFC (OGN2) : obsolete organization - # - USK (OGN3) : for German - # - PEGI_GEN (OGN4) : for Europe - # - PEGI_FINLAND (OGN5) : obsolete organization - # - PEGI_PRT (OGN6) : for Portugal - # - PEGI_BBFC (OGN7) : for UK - # - OFLC (OGN8) : for Australia and NewZealand - # - GRB (OGN9) : for Korea - # - OGN10 : reserved - # - OGN11 : reserved - # - OGN12 : reserved - # - OGN13 : reserved - # - OGN14 : reserved - # - OGN15 : reserved - # - # Available age [ 0 - 31 / ALWAYS / FREE ] - - CERO FREE -# ESRB FREE -# USK FREE -# PEGI_GEN FREE -# PEGI_PRT FREE -# PEGI_BBFC FREE -# OFLC FREE -# GRB FREE -} diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/Makefile b/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/Makefile deleted file mode 100644 index a859f4e3..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/Makefile +++ /dev/null @@ -1,39 +0,0 @@ -#! make -f -#---------------------------------------------------------------------------- -# Project: TwlIPL -# File: Makefile - -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: -# $Rev: -# $Author: -#---------------------------------------------------------------------------- - -TARGET_FIRM = SYSTEMMENU - -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs - -ORG_H = sharedFont.h -ORG_C = os_sharedFont.c - -CP_H_DIR = $(TWLSDK_ROOT)/include/twl/os/common -CP_C_DIR = $(TWLSDK_ROOT)/build/libraries/os/ARM9.TWL/src/ - -#---------------------------------------------------------------------------- - -#---------------------------------------------------------------------------- - -include $(TWL_IPL_RED_ROOT)/build/buildtools/modulerules - -do-build: - cp $(ORG_H) $(CP_H_DIR) - cp $(ORG_C) $(CP_C_DIR) - -#===== End of Makefile ===== diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/os_sharedFont.c b/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/os_sharedFont.c deleted file mode 100644 index d6f94dd1..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/os_sharedFont.c +++ /dev/null @@ -1,352 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - File: os_sharedFont.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include - -#ifdef USE_FONT_WRAM_LOAD -#include "fs_wram.h" -#endif // USE_FONT_WRAM_LOAD - -// compile switch-------------------------------------------------------------- -//#define DISABLE_HASH_CHECK - -// extern data----------------------------------------------------------------- -// define data----------------------------------------------------------------- -#ifdef USE_FONT_WRAM_LOAD -#define THREAD_PRIO_FS_FRAM 3 -#define WRAM_TOP_SLOT_FOR_FS 4 -#define WRAM_SIZE_FOR_FS MI_WRAM_SIZE_96KB -#endif // USE_FONT_WRAM_LOAD - -#define OS_SHARED_FONT_TABLE_PATH "nand:/" -#define OS_SHARED_FONT_FILE_NAME_LENGTH 0x20 -#define OS_SHARED_FONT_SIGN_SIZE 0x80 - -// ‹¤—LƒtƒHƒ“ƒgƒe[ƒuƒ‹ƒwƒbƒ_ -typedef struct OSSharedFontHeader { - u32 timestamp; - u16 fontNum; - u8 pad[ 6 ]; - u8 digest[ SVC_SHA1_DIGEST_SIZE ]; -}OSSharedFontHeader; - -// ‹¤—LƒtƒHƒ“ƒgƒe[ƒuƒ‹ -typedef struct OSSharedFontEntry { - u8 fileName[ OS_SHARED_FONT_FILE_NAME_LENGTH ]; -// u8 pad[ 4 ]; - u32 compLength; // ˆ³kŒãƒTƒCƒY - u32 offset; - u32 origLength; // Œ³‚̃TƒCƒY - u8 digest[ SVC_SHA1_DIGEST_SIZE ]; -}OSSharedFontEntry; - -// ‹¤—LƒtƒHƒ“ƒgƒ‰ƒCƒuƒ‰ƒŠƒ[ƒN -typedef struct OSSharedFontWork { - OSSharedFontHeader header; - OSSharedFontEntry *pInfoTable; -}OSSharedFontWork; - -#ifdef USE_FONT_WRAM_LOAD -// SHA1ƒR[ƒ‹ƒoƒbƒNˆø” -typedef struct CalcSHA1CallbackArg -{ - SVCSHA1Context ctx; - u32 hash_length; -} CalcSHA1CallbackArg; -#endif // USE_FONT_WRAM_LOAD - -// function's prototype------------------------------------------------------- -#ifdef USE_FONT_WRAM_LOAD -static void CalcSHA1Callback(const void* addr, const void* orig_addr, u32 len, MIWramPos wram, s32 slot, void* arg); -#endif // USE_FONT_WRAM_LOAD - -// global variable------------------------------------------------------------- -// static variable------------------------------------------------------------- -static OSSharedFontWork s_work; -static BOOL s_isInitialized = FALSE; - -// const data------------------------------------------------------------------ -// ‹¤—LƒtƒHƒ“ƒg–¼Šm”F—pŒöŠJŒ® -static const u8 s_sharedFontPubKey[] = { - 0x9f, 0x80, 0xbc, 0x5f, 0xb6, 0xb6, 0x1d, 0x2a, 0x46, 0x02, 0x52, 0x64, 0xb2, 0xa3, 0x86, 0xce, - 0xe6, 0x54, 0xd3, 0xa9, 0x70, 0x5b, 0xe3, 0xc2, 0x10, 0xa9, 0xb5, 0x2f, 0x38, 0xc5, 0x51, 0xfb, - 0xb5, 0xd1, 0x80, 0xfd, 0xff, 0x20, 0x65, 0xc1, 0x28, 0x4d, 0x56, 0xbe, 0xfb, 0xbd, 0x3f, 0xe4, - 0xba, 0xf7, 0x9c, 0x3a, 0x33, 0x74, 0x74, 0x9d, 0xdb, 0xdd, 0x9e, 0x86, 0x05, 0x2c, 0xad, 0xfc, - 0x93, 0xfa, 0xfb, 0x08, 0xea, 0x71, 0x18, 0x36, 0xc5, 0xdc, 0x4c, 0x06, 0x34, 0x57, 0xa7, 0x8f, - 0x4e, 0x82, 0xf7, 0xb3, 0xe2, 0x9c, 0xe4, 0x72, 0xe3, 0xdc, 0x60, 0xaf, 0xcc, 0x18, 0xe2, 0xd4, - 0xef, 0xd2, 0x76, 0x47, 0x31, 0xe6, 0x14, 0x0e, 0x1d, 0x26, 0xb5, 0x85, 0x97, 0xbc, 0xc6, 0xb6, - 0xd8, 0xe7, 0x69, 0x2d, 0x2c, 0x26, 0xfb, 0x5f, 0x70, 0x9e, 0x19, 0x9c, 0x6b, 0x02, 0x6d, 0x97 -}; - -// ‹¤—LƒtƒHƒ“ƒg‰Šú‰» -BOOL OS_InitSharedFont( void ) -{ - FSFile file[1]; - u8 signature[ OS_SHARED_FONT_SIGN_SIZE ]; - - if( s_isInitialized ) { - return TRUE; - } - - MI_CpuClear32( &s_work, sizeof(s_work) ); - - if( !FS_OpenFileEx( file, OS_SHARED_FONT_TABLE_PATH, FS_FILEMODE_R ) ) { - return FALSE; - } - - // –¼ƒŠ[ƒh - if( FS_ReadFile( file, signature, OS_SHARED_FONT_SIGN_SIZE ) != OS_SHARED_FONT_SIGN_SIZE ){ - goto ERROR; - } - - // ƒwƒbƒ_ƒŠ[ƒh - if( FS_ReadFile( file, &s_work.header, sizeof(OSSharedFontHeader) ) != sizeof(OSSharedFontHeader) ){ - goto ERROR; - } - - FS_CloseFile( file ); - -#ifndef DISABLE_HASH_CHECK - // ƒwƒbƒ_–¼ƒ`ƒFƒbƒN - { - u8 calc_digest[ SVC_SHA1_DIGEST_SIZE ]; - u8 sign_digest[ SVC_SHA1_DIGEST_SIZE ]; - static u32 heap[ 4096 / sizeof(u32) ]; - - SVCSignHeapContext acmemoryPool; - SVC_CalcSHA1( calc_digest, &s_work.header, sizeof(OSSharedFontHeader) ); - SVC_InitSignHeap( &acmemoryPool, heap, 4096 ); - if( !SVC_DecryptSign( &acmemoryPool, sign_digest, signature, s_sharedFontPubKey ) ) { - return FALSE; - } - if( !SVC_CompareSHA1( calc_digest, sign_digest ) ) { - return FALSE; - } - } -#endif - -#ifdef USE_FONT_WRAM_LOAD - // WRAM—˜—pReadŠÖ”‚Ì€”õAWRAMC‚̌㔼‚¾‚¯‰ð•ú‚µ‚Ä‚¨‚­ - FS_InitWramTransfer( THREAD_PRIO_FS_FRAM ); - MI_FreeWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM7 ); - MI_FreeWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM9 ); - MI_FreeWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_DSP ); - MI_CancelWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM7 ); - MI_CancelWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_ARM9 ); - MI_CancelWramSlot_C( WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, MI_WRAM_DSP ); -#endif // USE_FONT_WRAM_LOAD - - s_isInitialized = TRUE; - return TRUE; - -ERROR: - FS_CloseFile( file ); - return FALSE; -} - - -// ‹¤—LƒtƒHƒ“ƒg@ƒe[ƒuƒ‹ƒTƒCƒYŽæ“¾ -int OS_GetSharedFontTableSize( void ) -{ - if( s_isInitialized ) { - return (int)( s_work.header.fontNum * sizeof(OSSharedFontEntry) ); - }else { - return -1; - } -} - - -// ‹¤—LƒtƒHƒ“ƒg@ƒe[ƒuƒ‹ƒ[ƒh -BOOL OS_LoadSharedFontTable( void *pBuffer ) -{ - FSFile file[1]; - u32 tableLen = sizeof(OSSharedFontEntry) * s_work.header.fontNum; - - if( ( !s_isInitialized ) || - ( s_work.header.fontNum == 0 ) || - ( pBuffer == NULL ) || - ( s_work.pInfoTable ) ) { - return FALSE; - } - - // ƒtƒHƒ“ƒgƒe[ƒuƒ‹ƒŠ[ƒh - if( !FS_OpenFileEx( file, OS_SHARED_FONT_TABLE_PATH, FS_FILEMODE_R ) ) { - return FALSE; - } - if( !FS_SeekFile( file, OS_SHARED_FONT_SIGN_SIZE + sizeof(OSSharedFontHeader), FS_SEEK_SET ) ){ - goto ERROR; - } - if( FS_ReadFile( file, pBuffer, (int)tableLen ) != tableLen ){ - goto ERROR; - } - FS_CloseFile( file ); - -#ifndef DISABLE_HASH_CHECK - // ƒtƒHƒ“ƒgƒe[ƒuƒ‹@ƒnƒbƒVƒ…ƒ`ƒFƒbƒN - { - u8 calc_digest[ SVC_SHA1_DIGEST_SIZE ]; - SVC_CalcSHA1( calc_digest, pBuffer, tableLen ); - if( !SVC_CompareSHA1( calc_digest, s_work.header.digest ) ) { - return FALSE; - } - } -#endif - - s_work.pInfoTable = pBuffer; - return TRUE; - -ERROR: - FS_CloseFile( file ); - return FALSE; -} - - -// ‹¤—LƒtƒHƒ“ƒg@ƒtƒHƒ“ƒgƒTƒCƒYŽæ“¾ -int OS_GetSharedFontSize( OSSharedFontIndex index ) -{ - if( ( s_isInitialized == NULL ) || - ( s_work.pInfoTable == NULL ) || - ( index >= s_work.header.fontNum ) || - ( index < 0 ) || - ( index >= OS_SHARED_FONT_MAX ) ) { - return -1; - } - - return (int)s_work.pInfoTable[ index ].origLength; -} - - -// ‹¤—LƒtƒHƒ“ƒg ˆ³kŒãƒtƒHƒ“ƒgƒTƒCƒYŽæ“¾ -int OS_GetSharedFontCompressedSize( OSSharedFontIndex index ) -{ - if( ( s_isInitialized == NULL ) || - ( s_work.pInfoTable == NULL ) || - ( index >= s_work.header.fontNum ) || - ( index < 0 ) || - ( index >= OS_SHARED_FONT_MAX ) ) { - return -1; - } - - return (int)s_work.pInfoTable[ index ].compLength; -} - - -// ‹¤—LƒtƒHƒ“ƒg@ƒtƒHƒ“ƒgƒl[ƒ€Žæ“¾ -const u8 *OS_GetSharedFontName( OSSharedFontIndex index ) -{ - if( ( s_isInitialized == NULL ) || - ( s_work.pInfoTable == NULL ) || - ( index >= s_work.header.fontNum ) || - ( index < 0 ) || - ( index >= OS_SHARED_FONT_MAX ) ) { - return NULL; - } - - return s_work.pInfoTable[ index ].fileName; -} - - -// ‹¤—LƒtƒHƒ“ƒg@ƒ^ƒCƒ€ƒXƒ^ƒ“ƒvŽæ“¾ -u32 OS_GetSharedFontTimestamp( void ) -{ - if( ( s_isInitialized == NULL ) ) { - return 0; - } - return s_work.header.timestamp; -} - - -// ‹¤—LƒtƒHƒ“ƒg@ƒtƒHƒ“ƒgƒ[ƒh -BOOL OS_LoadSharedFont( OSSharedFontIndex index, void *pBuffer ) -{ - FSFile file[1]; - OSSharedFontEntry *pInfo = &s_work.pInfoTable[ index ]; - u8 calc_digest[ SVC_SHA1_DIGEST_SIZE ]; - - if( ( s_isInitialized == NULL ) || - ( s_work.pInfoTable == NULL ) || - ( index >= s_work.header.fontNum ) || - ( index < 0 ) || - ( index >= OS_SHARED_FONT_MAX ) ) { - return FALSE; - } - - // ƒtƒHƒ“ƒg@ƒŠ[ƒh - if( !FS_OpenFileEx( file, OS_SHARED_FONT_TABLE_PATH, FS_FILEMODE_R ) ) { - return FALSE; - } - if( !FS_SeekFile( file, (int)pInfo->offset, FS_SEEK_SET ) ){ - goto ERROR; - } -#ifdef USE_FONT_WRAM_LOAD - { - CalcSHA1CallbackArg arg; - SVC_SHA1Init( &arg.ctx ); - arg.hash_length = pInfo->compLength; - if( !FS_ReadFileViaWram( file, pBuffer, (s32)MATH_ROUNDUP( pInfo->compLength, 0x20 ), MI_WRAM_C, - WRAM_TOP_SLOT_FOR_FS, WRAM_SIZE_FOR_FS, -#ifndef DISABLE_HASH_CHECK - CalcSHA1Callback, -#else - NULL, -#endif // DISABLE_HASH_CHECK - &arg ) ) { - goto ERROR; - } - SVC_SHA1GetHash( &arg.ctx, &calc_digest ); - } -#else - if( FS_ReadFile( file, pBuffer, (int)pInfo->compLength ) != pInfo->compLength ){ - goto ERROR; - } -#ifndef DISABLE_HASH_CHECK - SVC_CalcSHA1( calc_digest, pBuffer, pInfo->compLength ); -#endif // DISABLE_HASH_CHECK -#endif // USE_FONT_WRAM_LOAD - - FS_CloseFile( file ); - -#ifndef DISABLE_HASH_CHECK - // ƒtƒHƒ“ƒg@ƒnƒbƒVƒ…ƒ`ƒFƒbƒN - if( !SVC_CompareSHA1( calc_digest, pInfo->digest ) ) { - return FALSE; - } -#endif // DISABLE_HASH_CHECK - - return TRUE; - -ERROR: - FS_CloseFile( file ); - return FALSE; -} - - -#ifdef USE_FONT_WRAM_LOAD -// FS-WRAM“]‘—Žž‚ÌSHA1ŒvŽZƒR[ƒ‹ƒoƒbƒN -static void CalcSHA1Callback(const void* addr, const void* orig_addr, u32 len, MIWramPos wram, s32 slot, void* arg) -{ -#pragma unused(orig_addr) -#pragma unused(wram) -#pragma unused(slot) - CalcSHA1CallbackArg *cba = (CalcSHA1CallbackArg *)arg; - u32 calc_len = ( cba->hash_length < len ? cba->hash_length : len ); - if( calc_len == 0 ) return; - cba->hash_length -= calc_len; - SVC_SHA1Update( &cba->ctx, addr, calc_len ); -} -#endif // USE_FONT_WRAM_LOAD diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/sharedFont.h b/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/sharedFont.h deleted file mode 100644 index 98447dda..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/copy_to_sdk/sharedFont.h +++ /dev/null @@ -1,69 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - OS - include - File: sharedFont.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - - *---------------------------------------------------------------------------*/ - -#ifndef TWL_OS_SHARED_FONT_H_ -#define TWL_OS_SHARED_FONT_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SDK_ARM9 - -// ‹¤—LƒtƒHƒ“ƒgƒCƒ“ƒfƒbƒNƒX -typedef enum OSSharedFontIndex { - OS_SHARED_FONT_WW_L = 0, - OS_SHARED_FONT_WW_M = 1, - OS_SHARED_FONT_WW_S = 2, - OS_SHARED_FONT_MAX = 3 -}OSSharedFontIndex; - - -// ‹¤—LƒtƒHƒ“ƒg‰Šú‰» -BOOL OS_InitSharedFont( void ); - -// ‹¤—LƒtƒHƒ“ƒg@ƒe[ƒuƒ‹ƒTƒCƒYŽæ“¾ -int OS_GetSharedFontTableSize( void ); - -// ‹¤—LƒtƒHƒ“ƒg@ƒe[ƒuƒ‹ƒ[ƒh -BOOL OS_LoadSharedFontTable( void *pBuffer ); - -// ‹¤—LƒtƒHƒ“ƒg@ƒtƒHƒ“ƒgƒTƒCƒYŽæ“¾ -int OS_GetSharedFontSize( OSSharedFontIndex index ); - -// ‹¤—LƒtƒHƒ“ƒg ˆ³kŒãƒTƒCƒYŽæ“¾ -int OS_GetSharedFontCompressedSize( OSSharedFontIndex index ); - -// ‹¤—LƒtƒHƒ“ƒg@ƒtƒHƒ“ƒgƒl[ƒ€Žæ“¾ -const u8 *OS_GetSharedFontName( OSSharedFontIndex index ); - -// ‹¤—LƒtƒHƒ“ƒg@ƒ^ƒCƒ€ƒXƒ^ƒ“ƒvŽæ“¾ -u32 OS_GetSharedFontTimestamp( void ); - -// ‹¤—LƒtƒHƒ“ƒg@ƒtƒHƒ“ƒgƒ[ƒh -BOOL OS_LoadSharedFont( OSSharedFontIndex index, void *pBuffer ); - -#endif // SDK_ARM9 - -#ifdef __cplusplus -} -#endif - -#endif // TWL_OS_SHARED_FONT_H_ diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.c b/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.c deleted file mode 100644 index 4fbb98a5..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.c +++ /dev/null @@ -1,198 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: loadSharedFont.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include "loadSharedFont.h" - -// ˆ³kƒtƒHƒ“ƒg‚ð‰ð“€‚·‚邯‚«‚Í1‚É‚·‚é -#define UNCOMPRESS_FONTS 1 - -// ‘O•ûˆ³k‚̂Ƃ«‚É‚Í1‚É‚·‚é -#define FORWARD_COMPRESS 0 - -// extern data----------------------------------------------------------------- - -// function's prototype------------------------------------------------------- -BOOL g_isSucceededLoad[ OS_SHARED_FONT_MAX ]; - -// static variable------------------------------------------------------------- -static u8 *s_pFontBuffer[ OS_SHARED_FONT_MAX ]; // “ǂݞ‚݂̓eƒXƒg‚Ȃ̂Ń[ƒhæ‚Ístatic•Ï”‚É‚µ‚Ä‚¢‚éB -static BOOL s_isStarted = FALSE; -static u8 *s_pCompressedBuffer[ OS_SHARED_FONT_MAX ]; // ˆ³k—pTempBuffer - -// const data------------------------------------------------------------------ - - -// ============================================================================ -// ‹¤—LƒtƒHƒ“ƒgƒ[ƒh -// ============================================================================ -void LoadSharedFont( STicks *pTicks ) -{ - u8 *pBuffer; - int size; - OSSharedFontIndex i; - OSTick starttick; - - pTicks->all = 0; - pTicks->comp = 0; - - if( s_isStarted ) return; - - starttick = OS_GetTick(); - - // ƒtƒHƒ“ƒgƒ[ƒh€”õ - if( !OS_InitSharedFont() ) { - OS_TPrintf( "OS_InitSharedFont failed.\n" ); - return; - } - size = OS_GetSharedFontTableSize(); - if( size < 0 ) { - OS_TPrintf( "OS_GetSharedTableSize failed.\n" ); - return; - } - - pBuffer = OS_Alloc( (u32)size ); - if( pBuffer == NULL ) { - OS_TPrintf( "malloc failed.\n" ); - return; - } - if( !OS_LoadSharedFontTable( pBuffer ) ) { - OS_TPrintf( "OS_LoadSharedTable failed.\n" ); - return; - } - - for( i = OS_SHARED_FONT_WW_L; i < OS_SHARED_FONT_MAX; i++ ) - { - int origsize; -#if (UNCOMPRESS_FONTS==1) - int compsize; - int comperr; - OSTick comptick; -#endif - - OS_TPrintf( "%s read.\n", OS_GetSharedFontName( i ) ); - - // ƒtƒHƒ“ƒg‚ÌŒ³‚Ì(‰ð“€Œã‚Ì)ƒTƒCƒY - origsize = OS_GetSharedFontSize( i ); - if( origsize < 0 ) - { - OS_TPrintf( " get font size failed.\n" ); - } - origsize = MATH_ROUNDUP( origsize, 32 ); // FS‚̃LƒƒƒbƒVƒ…‚ª‰ö‚µ‚»‚¤‚Ȃ̂ÅA‚Ƃ肠‚¦‚¸ƒAƒ‰ƒCƒ“ƒƒ“ƒg‚ð‚Æ‚Á‚Ä‚¨‚­B - OS_TPrintf( " original size = %d\n", origsize ); - -#if (UNCOMPRESS_FONTS==1) - compsize = OS_GetSharedFontCompressedSize( i ); - if( compsize < 0 ) - { - OS_TPrintf( " get compressed font size failed.\n" ); - } - OS_TPrintf( " compressed size = %d\n", compsize ); -#endif - - s_pFontBuffer[ i ] = OS_Alloc( (u32)origsize ); // Œ³‚̃tƒHƒ“ƒgƒTƒCƒY‚Ńoƒbƒtƒ@Šm•Û - if( s_pFontBuffer[ i ] == NULL ) - { - OS_TPrintf( " malloc failed.\n" ); - } - - // ˆ³kŒã‚̃tƒHƒ“ƒg‚ðƒ[ƒh -#if (FORWARD_COMPRESS==1) - s_pCompressedBuffer[i] = OS_Alloc( (u32)MATH_ROUNDUP( compsize, 32 ) ); - if( OS_LoadSharedFont( i, s_pCompressedBuffer[ i ] ) ) -#else - if( OS_LoadSharedFont( i, s_pFontBuffer[ i ] ) ) -#endif - { - OS_TPrintf( " load succeeded.\n" ); - g_isSucceededLoad[ i ] = TRUE; - } - else - { - OS_TPrintf( " load failed.\n" ); - g_isSucceededLoad[ i ] = FALSE; - } - - // ‰ð“€ -#if (UNCOMPRESS_FONTS==1) - comptick = OS_GetTick(); - OS_TPrintf( " uncompress font\n" ); -#if (FORWARD_COMPRESS==1) - //comperr = MI_SecureUncompressLZ( s_pCompressedBuffer[i], (u32)compsize, s_pFontBuffer[i], (u32)origsize ); - //comperr = MI_SecureUncompressHuffman( s_pCompressedBuffer[i], (u32)compsize, s_pFontBuffer[i], (u32)origsize ); - MI_UncompressHuffman( s_pCompressedBuffer[i], s_pFontBuffer[i] ); - comperr = MI_ERR_SUCCESS; -#else - comperr = MI_SecureUncompressBLZ( s_pFontBuffer[i], (u32)compsize, (u32)origsize ); -#endif - if( MI_ERR_SUCCESS == comperr ) - { - OS_TPrintf( " uncompression succeeded\n" ); - } - else - { - OS_TPrintf( " uncompression failed %d\n", comperr ); - } - pTicks->comp += (OS_GetTick() - comptick); // ‰ð“€‚É‚©‚©‚Á‚½ŽžŠÔ -#endif - } - - // ‘S•”‚̈—‚É‚©‚©‚Á‚½ŽžŠÔ - pTicks->all = OS_GetTick() - starttick; - - s_isStarted = TRUE; -} - -void WriteFontIntoSD( void ) -{ - u8 *pFont = NULL; - int size; - OSSharedFontIndex i; - char str[100]; - FSFile fp[1]; - - FS_InitFile( fp ); - - for( i = OS_SHARED_FONT_WW_L; i < OS_SHARED_FONT_MAX; i++ ) - { - pFont = s_pFontBuffer[i]; - size = OS_GetSharedFontSize(i); - if( pFont != NULL) - { - STD_TSPrintf( str, "sdmc:/%s.uncomp", OS_GetSharedFontName(i) ); - FS_DeleteFile( str ); - if( !FS_CreateFile( str, FS_PERMIT_R|FS_PERMIT_W ) ) - { - OS_TPrintf( "sd create failed %d\n", FS_GetArchiveResultCode(str) ); - } - if( FS_OpenFileEx( fp, str, FS_FILEMODE_W ) ) - { - FS_WriteFile( fp, pFont, size ); - FS_CloseFile( fp ); - OS_TPrintf( "%s is written\n", str ); - } - else - { - OS_TPrintf( "sd write failed %d\n", FS_GetArchiveResultCode(str) ); - } - } - } -} - - - - diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.h b/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.h deleted file mode 100644 index 4095ee9c..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/src/loadSharedFont.h +++ /dev/null @@ -1,46 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlIPL - File: loadSharedFont.h - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef __LOAD_SHARED_FONT_H__ -#define __LOAD_SHARED_FONT_H__ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -// define data------------------------------------------------------- -typedef struct _STicks -{ - OSTick all; // ‘S•”‚ÌŽžŠÔ - OSTick comp; // ‰ð“€‚ÌŽžŠÔ -} STicks; - -// global variables-------------------------------------------------- -extern BOOL g_isSucceededLoad[ OS_SHARED_FONT_MAX ]; - -// function---------------------------------------------------------- -void LoadSharedFont( STicks *pTicks ); -void WriteFontIntoSD( void ); - -#ifdef __cplusplus -} -#endif - -#endif // __LOAD_SHARED_FONT_H__ diff --git a/build/tests/compressSharedFontLoad/testLoadSpeed/src/main.c b/build/tests/compressSharedFontLoad/testLoadSpeed/src/main.c deleted file mode 100644 index ce1781e3..00000000 --- a/build/tests/compressSharedFontLoad/testLoadSpeed/src/main.c +++ /dev/null @@ -1,101 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos - FS - overlay - File: main.c - - Copyright 2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - - -#include -#include - -#include "DEMO.h" -#include "loadSharedFont.h" - -/*---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: NitroMain - - Description: ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ƒƒCƒ“ƒGƒ“ƒgƒŠ - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void NitroMain(void) -{ - STicks ticks; - - OS_Init(); - OS_InitTick(); - (void)OS_EnableIrq(); - (void)OS_EnableInterrupts(); - - { - OSHeapHandle hh; - void *tmp; - tmp = OS_InitAlloc(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi(), 1); - OS_SetArenaLo(OS_ARENA_MAIN, tmp); - hh = OS_CreateHeap(OS_ARENA_MAIN, OS_GetMainArenaLo(), OS_GetMainArenaHi()); - if (hh < 0) - { - OS_TPanic("ARM9: Fail to create heap...\n"); - } - (void)OS_SetCurrentHeap(OS_ARENA_MAIN, hh); - } - - DEMOInitCommon(); - DEMOInitVRAM(); - DEMOInitDisplayBitmap(); - DEMOHookConsole(); - - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 0, 1)); - DEMOSetBitmapGroundColor(DEMO_RGB_CLEAR); - DEMOStartDisplay(); - - FS_Init(FS_DMA_NOT_USE); - - OS_TPrintf("--------------------------------\n" - "Shared Font sample.\n"); - - LoadSharedFont( &ticks ); - - // Œ‹‰Ê•\ަ - { - int i; - int ox = 10; - int oy = 60; - - DEMOFillRect(0, 0, GX_LCD_SIZE_X, GX_LCD_SIZE_Y, DEMO_RGB_CLEAR); - DEMOSetBitmapTextColor(GX_RGBA(0, 31, 0, 1)); - DEMOSetBitmapTextColor(GX_RGBA(31, 31, 31, 1)); - DEMODrawFrame(ox, oy, 240, 10 + OS_SHARED_FONT_MAX * 10 + 20, GX_RGBA( 0, 31, 0, 1)); - for (i = 0; i < OS_SHARED_FONT_MAX; ++i) - { - DEMODrawText(ox + 10, oy + 5 + i * 10, "%s load %s", - OS_GetSharedFontName( (OSSharedFontIndex)i ), g_isSucceededLoad[ i ] ? "suceeded" : "failed"); - } - DEMODrawText(ox + 10, oy + 5 + OS_SHARED_FONT_MAX * 10, "all time %d msec", OS_TicksToMilliSeconds(ticks.all) ); - DEMODrawText(ox + 10, oy + 5 + OS_SHARED_FONT_MAX * 10 + 10, "comp time %d msec", OS_TicksToMilliSeconds(ticks.comp) ); - } - DEMO_DrawFlip(); - - WriteFontIntoSD(); - OS_TPrintf( "end\n" ); - OS_WaitVBlankIntr(); - - OS_Terminate(); -} - - diff --git a/build/tests/yuv2rgb/Makefile b/build/tests/yuv2rgb/Makefile deleted file mode 100644 index 3bf6d022..00000000 --- a/build/tests/yuv2rgb/Makefile +++ /dev/null @@ -1,121 +0,0 @@ -#! make -f -#--------------------------------------------------------------------------- -# Project: TwlSDK - YUV2RGB -# File: Makefile -# -# Copyright 2008 Nintendo. All rights reserved. -# -# These coded instructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev:$ -# $Author:$ -#--------------------------------------------------------------------------- - -ifdef TWL_IPL_RED_ROOT -#ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðØ‚è‘Ö‚¦‚Ü‚·B -#ƒRƒƒ“ƒgƒAƒEƒg‚·‚邯racoon‚ðA—LŒø‰»‚·‚邯jackal‚ðŽg‚¢‚Ü‚·B -#‰º‚Ìs‚ð•ÏX‚µ‚½‚çmake clean‚µ‚Ä‚­‚¾‚³‚¢B -TWL_IPL_USE_RED_IPL := TRUE -endif - -ifdef TWL_IPL_USE_RED_IPL -TARGET_FIRM = SYSTEMMENU -REBOOT_LIB = libreboot$(TWL_LIBSUFFIX).a -LDEPENDS_NEF += $(REBOOT_LIB) -ADDRESS_DTCM = 0x0e000000 -DEFAULT_COMP_ARM7 = jackal -MAKEROM_FLAGS += -F -LCFILE_SPEC = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher/ARM9/ARM9-TS.lsf -LCFILE_TEMPLATE = $(SYSMENU_ROOT)/build/systemMenu_RED/Launcher/ARM9/ARM9-TS.lcf.template -MACRO_FLAGS += -DTWL_IPL_USE_RED_IPL -MAKELCF_FLAGS += -DREBOOT_LIB='$(REBOOT_LIB)' -endif - - -TARGET_PLATFORM := TWL -TWL_PROC := ARM9 -TWL_ARCHGEN := LIMITED - -TARGET_BIN = main.srl -ROM_SPEC_TEMPLATE = yuv2rgb.rsf.template -ROM_SPEC = yuv2rgb.autogen.rsf -SRCS = snd_data.c mainy.cpp new.cpp cpu_yuv2rgb.c menuIrqHandler.c menuCameraManager.cpp #dsp_yuv2rgb.c -DATA_DIR = ./data -EXT_OBJS += $(patsubst $(DATA_DIR)/%.dat,$(OBJDIR)/%.o,$(wildcard $(DATA_DIR)/*.dat)) - -# DSPƒtƒ@[ƒ€ƒEƒFƒA‚ð’蔂Ƃµ‚ÄÓIƒŠƒ“ƒN‚·‚éB -#DSP_FIRMWARE_DIR = $(ROOT)/build/dspcomponents/build/tests/yuv2rgb/bin -#DATA_DIR = . -#EXT_OBJS += $(patsubst $(DSP_FIRMWARE_DIR)/%.a,$(OBJDIR)/%.o,$(wildcard $(DSP_FIRMWARE_DIR)/*.a)) - -MACRO_FLAGS += -DTWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - -#---------------------------------------------------------------------------- - -ifdef TWL_IPL_USE_RED_IPL -include $(TWL_IPL_RED_ROOT)/build/buildtools/commondefs -include $(TWLSDK_ROOT)/build/libraries/reboot/commondefs.reboot -MAKEROM := $(TWL_IPL_RED_ROOT)/tools/bin/makerom.TWL.launcher.exe -else -include $(TWLSDK_ROOT)/build/buildtools/commondefs -endif -include $(TWLSDK_ROOT)/build/buildtools/commondefs.gx.demolib - - -LLIBRARIES += libcpu_jpegEncoder$(TWL_LIBSUFFIX).a - - -#---------------------------------------------------------------------------- - -#do-build: $(ROM_SPEC) prepare $(TARGETS) -do-build: $(ROM_SPEC) $(TARGETS) - -#SUBDIRS = ../../../dspcomponents/build/tests/yuv2rgb - -include $(TWLSDK_ROOT)/build/buildtools/modulerules - -# UIGƒ‰ƒ“ƒ`ƒƒ[‚̃\[ƒX‚ð‚»‚Ì‚Ü‚ÜƒRƒs[‚µ‚Ü‚·B -.PHONY: prepare -prepare: - cp -p $(TWL_IPL_ROOT)/menu/scene/src/menuCameraManager.cpp src - cp -p $(TWL_IPL_ROOT)/menu/scene/include/menuCameraManager.h include - -ifdef TWL_IPL_USE_RED_IPL -# for $(SYSMENU_LIBS) -include redipl_defs_autogen_by_uig -LLIBRARIES += $(SYSMENU_LIBS) - -$(ROM_SPEC): $(ROM_SPEC_TEMPLATE) Makefile - grep -v MAKEROM_WRAM_MAPPING $(ROM_SPEC_TEMPLATE) | grep -v NTRJ | grep -v User > $(ROM_SPEC) - -else -$(ROM_SPEC): $(ROM_SPEC_TEMPLATE) Makefile - grep -v WramMappingDirect $(ROM_SPEC_TEMPLATE) | grep -v HNAJ | grep -v Secure | grep -v System | grep -v HwAESSlot > $(ROM_SPEC) - -endif - -LDIRT_CLEAN += $(ROM_SPEC) - -#---------------------------------------------------------------------------- - -$(OBJDIR)/%.o : $(DATA_DIR)/%.dat - $(BIN2OBJ) --compatible $< $@ >/dev/null - -$(DATA_DIR)/%.dat : $(call eupath,$(DSP_FIRMWARE_DIR)/%.a) - cp -T $< $@ - - -ZIPDIR=$(notdir $(shell pwd)) -ZIPFILE=$(HOME)/$(ZIPDIR)-$(shell date +%y%m%d_%H%M).zip -.PHONY: zip -zip: - @cd .. && find $(ZIPDIR) ! -type d | grep -v -e \~ -e .tmp -e .svn -e .obj -e /bin/ -e /depend/ -e /obj/ | zip $(ZIPFILE) -@ - @ls -l $(ZIPFILE) - - -#===== End of Makefile ===== diff --git a/build/tests/yuv2rgb/data/camera_shutter.dat b/build/tests/yuv2rgb/data/camera_shutter.dat deleted file mode 100644 index 14b56eb5..00000000 Binary files a/build/tests/yuv2rgb/data/camera_shutter.dat and /dev/null differ diff --git a/build/tests/yuv2rgb/data/camera_shutter_MONO.dat b/build/tests/yuv2rgb/data/camera_shutter_MONO.dat deleted file mode 100644 index 4d8cf1c7..00000000 Binary files a/build/tests/yuv2rgb/data/camera_shutter_MONO.dat and /dev/null differ diff --git a/build/tests/yuv2rgb/data/wheel.dat b/build/tests/yuv2rgb/data/wheel.dat deleted file mode 100644 index 81a737dc..00000000 Binary files a/build/tests/yuv2rgb/data/wheel.dat and /dev/null differ diff --git a/build/tests/yuv2rgb/include/const.h b/build/tests/yuv2rgb/include/const.h deleted file mode 100644 index e3db50e6..00000000 --- a/build/tests/yuv2rgb/include/const.h +++ /dev/null @@ -1,36 +0,0 @@ -#define cScreenWidth 256 -#define cScreenHeight 192 -#define cPhotoWidth 640 -#define cPhotoHeight 480 -// #define cThreadPriority_LauncherCameraHi (OS_THREAD_LAUNCHER_PRIORITY - 1) -// #define cThreadPriority_LauncherCameraLo (OS_THREAD_LAUNCHER_PRIORITY + 1) -// #define cThreadPriority_LauncherCameraShot (OS_THREAD_LAUNCHER_PRIORITY + 2) -#define IPL_ASSERT(exp) if ( !( exp ) ) IPL_HALT( #exp ) -#define IPL_PRINT OS_TPrintf -#define IPL_HALT OS_TPanic - -namespace menu { namespace sys { -class Object -{ -public: -// // ƒXƒŒƒbƒh—D懈ÊB -// enum -// { -// cThreadPriority_LauncherCameraHi = OS_THREAD_LAUNCHER_PRIORITY - 1, -// cThreadPriority_LauncherCameraLo = OS_THREAD_LAUNCHER_PRIORITY + 1, -// cThreadPriority_LauncherCameraShot = OS_THREAD_LAUNCHER_PRIORITY + 2, -// cThreadPriority_UpPicture = OS_THREAD_LAUNCHER_PRIORITY + 3 -// }; - - // ì‚è’¼‚µ”Å ƒXƒŒƒbƒh—Dæ“xB - enum - { - // —Dæ“x‚ÍŒŸ“¢‚ª•K—vB - cThreadPriority_CameraI2c = OS_THREAD_LAUNCHER_PRIORITY - 2, - cThreadPriority_CameraLowerHi = OS_THREAD_LAUNCHER_PRIORITY - 1, - - cThreadPriority_CameraLowerLo = OS_THREAD_LAUNCHER_PRIORITY + 10 - }; - -}; -}} diff --git a/build/tests/yuv2rgb/include/menuCameraManager.h b/build/tests/yuv2rgb/include/menuCameraManager.h deleted file mode 100644 index 2c67d505..00000000 --- a/build/tests/yuv2rgb/include/menuCameraManager.h +++ /dev/null @@ -1,381 +0,0 @@ -// —Ž‚¿’…‚¢‚½‚çcmnCameraManager.h‚ÖŽ‚Á‚Ä‚¢‚­B - -#ifndef MENU_CAMERA_MANAGER_H_ -#define MENU_CAMERA_MANAGER_H_ - -//#define TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -// ‚Ü‚¾DSP”ÅJPEGƒ‰ƒCƒuƒ‰ƒŠ‚ðŽg‚¤B -//#define TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#include "const.h" -#endif - -namespace cmn { namespace sys { namespace cmr2 -{ - - // eMode_Tex‚̂ݑΉžB -// ƒJƒƒ‰ƒ‚[ƒh -enum -{ - eMode_BG = 0 , - eMode_Tex , - eMode_BGSingle , - eMode_Max -}; - -// ’è” -enum -{ - cDefaultShowWidth = cScreenWidth , - cDefaultShowHeight = cScreenHeight , - cDefaultShotWidth = cPhotoWidth , - cDefaultShotHeight = cPhotoHeight , - - cEncodeResultSizeMax = cPhotoWidth * cPhotoHeight, - cEncodeQuality = 90, - cEncodeSampling = 2, - - cBufferCount = 2 , - - cCaptureRetryMax = 20, - - cDefaultDmaNo = 1 -}; - -enum -{ - cMsgI2c_Destroy = 0, - cMsgI2c_AfterInit, - cMsgI2c_Activate, - -// cMsgI2c_ChangeSizeToShot, -// cMsgI2c_ChangeSizeToShow, - - cMsgI2c_ChangeLedToOn, - cMsgI2c_ChangeLedToBlink, - - cMsgI2c_Max -}; - - - -enum -{ - // CAMERASelect‚̓rƒbƒgƒ}ƒXƒN‚Ȃ̂ŒˆÓB - cCameraIndex_In = 0, - cCameraIndex_Out, - cCameraMax -}; - -enum -{ - // ’Ê펞‚Å‚àA‹N“®’¼Œã‚É3‰ño‚éB -// CAMERA_RESULT_BUSY type 0 retry 0 -// CAMERA_RESULT_BUSY type 0 retry 1 -// CAMERA_RESULT_BUSY type 0 retry 2 - - - cI2cRetryMax = 30, - cI2cRetryIntervalMsec = 100 -}; - -enum -{ - cI2cCommon_Activate = 0, - cI2cCommon_FrameRate, - cI2cCommon_ContextSwitch, - cI2cCommon_LedOn, - cI2cCommon_LedBlink, - - cI2cCommon_Max -}; - - -struct dtcmWork { - u32 mShrinkBuf[208*3]; // max(256*2,208*3) * sizeof(u32) - u64 mYuvBuf[12]; -}; - -typedef struct { - CAMERAContext mContext; - CAMERAFrameRate mFrameRate; -} cameraState; - -class Manager -{ -public: - // ƒTƒCƒY‚Íinit()‚ÅŽw’è‚·‚éB - Manager(); - ~Manager(); - - void preInit( u32 show_w, u32 show_h, u32 shot_w, u32 shot_h ); - void preInit() { - preInit( mShowWdt, mShowHgt, mShotWdt, mShotHgt ); - } - - void init( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - sys::Heap* p_heap , -#endif - int mode , CAMERASelect sel_cmr , int vram1 , int vram2 , - cmn::sys::cmr2::dtcmWork* pDtcmWork , - void (*gx_user_proc)(u8* vramAddr, BOOL shot) , - u32 show_w, u32 show_h, u32 shot_w, u32 shot_h ); - - void init( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - sys::Heap* p_heap , -#endif - int mode , CAMERASelect sel_cmr , int vram1 , int vram2 , - cmn::sys::cmr2::dtcmWork* pDtcmWork , - void (*gx_user_proc)(u8* vramAddr, BOOL shot) ) { - init( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - p_heap , -#endif - mode, sel_cmr, vram1, vram2, - pDtcmWork, gx_user_proc, - mShowWdt, mShowHgt, mShotWdt, mShotHgt ); - } - - BOOL tryDestroy(); - - void activate(); - - void changeCamera( CAMERASelect sel_cmr ) { mNextCmr = sel_cmr; } - void changeCamera() - { - changeCamera( mNextCmr == CAMERA_SELECT_IN ? CAMERA_SELECT_OUT : CAMERA_SELECT_IN ); - } - - // u“à(ŠO)ƒJƒƒ‰‚ÉØ‚è‘Ö‚¦‚Ü‚µ‚½vŽ|‚̃ƒbƒZ[ƒW‚ð•\ަ‚·‚éê‡A - // Œµ–§‚É¡‚ÌuŠÔ‚̃Jƒƒ‰‚ł͂Ȃ­A - // ÅI“I‚ɂǂ¿‚ç‚̃Jƒƒ‰‚ª—LŒø‚ɂȂ邩‚ð•Ô‚¹‚Ηǂ¢‚ÆŽv‚¤‚̂Š- // mNextCmr‚ð•Ô‚·B - CAMERASelect getCurrentCamera() const { return mNextCmr; } - // ‚Å‚àAØ‚è‘Ö‚¦‚Ƀ^ƒCƒ€ƒ‰ƒO‚ª‚ ‚é‚Ì‚ÅAØ‚è‘Ö‚¦’†‚©‚Ç‚¤‚©‚ð - // ’m‚é•û–@‚à—pˆÓ‚·‚éB - // mCaptureSkipCount‚ÍA‘¼‚Ì—vˆö(—Ⴆ‚΃Jƒƒ‰‰ð‘œ“xØ‚è‘Ö‚¦’†)‚Å‚à - // 0‚łȂ­‚È‚éB‚»‚Ìꇂɂ±‚ÌŠÖ”‚ªˆêu0‚łȂ­‚Ȃ邪A - // IN/OUTØ‚è‘Ö‚¦’†‚Ì”»’è‚Ì‚½‚߂ɌĂÑo‚·ŒÀ‚è‚Í–â‘è‚È‚¢‚Í‚¸B - BOOL isCameraChanging() { return ((mSelCmr != mNextCmr) || mCaptureSkipCount); } - - void startCapture(CAMERASelect sel_cmr); - void startCapture() { - startCapture(mNextCmr); - } - void stopCapture() { mNextCaptureFlag = FALSE; } - BOOL isCaptureBusy() { return (mCaptureFlag || mNextCaptureFlag); } - BOOL isSaveBusy() { return mEncodeBusyFlag; } - BOOL shoot(BOOL keepCapture = FALSE); - BOOL tryPrepareToSleep(); - -// void setShutterSnd( const u8* p_wav , u32 size , BOOL stereo ); -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// void startShutterSnd(); -// void finishShutterSnd(); -// BOOL isFinishedShutterSnd() const; -// #endif - - virtual void procVBlankIntr(); - virtual void procCameraIntr(); - virtual u16* procPreCapture(); - virtual void procPostCapture(); - virtual void procPostConvert(BOOL shot); - virtual void procPostShot(); - virtual u16* allocCapBuf(); - virtual void freeCapBufByPtr(const u16* pBuf); - BOOL isShotDone() { return mShotDone; } - void clearShotDone() { mShotDone = FALSE; } - void setTexSwap() { mTexSwap = TRUE; } -// int getTexBank() { return mTexBank; } - void setOneShotFlag(BOOL flag) { mOneShotFlag = (u8)flag; } - BOOL getOneShotFlag() { return mOneShotFlag; } - virtual BOOL convert(BOOL shot); - - void setCaptureRgbFlag(BOOL useRgb); - BOOL isFirstPictureReady() { return mFirstPictureReady; } - -#ifndef TWL_IPL_FINAL -public: - vu32 mDebugPort; -#endif - -private: - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - sys::Heap* mpHeap; -#endif - - u8 mLedKeepFlag; - u8 mOneShotFlag; - u8 mCaptureRgbFlag; - - vu8 mEncodeBusyFlag; - - vu8 mPreInitFlag; - vu8 mInitFlag; - vu8 mPreInitBusyFlag; - vu8 mInitBusyFlag; - - u32 mEncodeOption; - - static vu8 mCaptureFlag; - static vu8 mNextCaptureFlag; - static vu8 mShotFlag; - static vu8 mNextShotFlag; - - vu8 mShotDone; - vu8 mTexSwap; - vu8 mI2cBusy; -#if SDK_VERSION_DATE < 20080630 - vu8 mIntrPositiveEdge; -#else - // intr edge‚ÍCAMERAƒ‰ƒCƒuƒ‰ƒŠ‚ªƒnƒ“ƒhƒŠƒ“ƒO‚·‚éB -#endif - vu8 mFirstPictureReady; - - vu32 mShotErr; - - u32 mCaptureSkipCount; - u32 mCaptureRetryCount; - - u8 mIsCapBufUsed[2]; - u16* mpCapBuf[2]; - vu16* mpCaptureBuf; - vu16* mpConvBuf; - vu16* mpNextConvBuf; - vu16* mpShotBuf; - dtcmWork* mpDtcmWork; - - volatile int mTexBank; - volatile int mNextTexBank; - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - struct encodeWork { - u16 y[cPhotoWidth * cPhotoHeight]; - u16 cbcr[(cPhotoWidth * cPhotoHeight / 4) * 2]; - } *mpEncodeWork; -#else - u8* mpEncodeWork; -#endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - u8* mpEncodeResult; -#endif - - int mTarget; - - u32 mShowWdt; - u32 mShowHgt; - u32 mShotWdt; - u32 mShotHgt; - int mShowTransferLines; - int mShotTransferLines; - - int mMode; - - u32 mGxDma; - - int mVramType[ 2 ]; - u8* mVramAddr[ 2 ]; - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - const u8* mpShutterSnd; - u32 mShutterSndSize; - BOOL mShutterStereo; -#endif - - MINDmaConfig mDmaConfig; - - // ŽèŒ³‚ÌŽÀŒ±‚Å‚ÍmpTask‚ªŽg‚¦‚È‚¢‚Ì‚Åc - OSThread mLowerThread; - OSThread mI2cThread; - u64 mLowerThreadStack[2048]; // JPEG‚ðŽg‚¤‚Ì‚ÅA”O‚Ì‚½‚ß16KB‚ÅB - u64 mI2cThreadStack[1024]; - OSMessage mI2cMsgBuf[1]; - OSMessageQueue mI2cMsgQueue; - enum { - cEventMaskLower_Destroy = 1 << 0, - cEventMaskLower_EnableIntrAndPrepareBuffer = 1 << 1, - cEventMaskLower_DisableIntrAndDestroyBuffer = 1 << 2, - cEventMaskLower_Convert = 1 << 3, - cEventMaskLower_Shot = 1 << 4, - cEventMaskLower_NextConvertAndShot = 1 << 5, - cEventMaskLower_Activate = 1 << 6, - - cEventMaskLower_All = 0xffffffff - }; - OSEvent mLowerEvent; - void procLower(); - void procI2c(); - static void procLower_(void* p_arg) { - reinterpret_cast(p_arg)->procLower(); - } - static void procI2c_(void* p_arg) { - reinterpret_cast(p_arg)->procI2c(); - } - - static OSMessage mI2cAsyncMsgBuf[1]; - static OSMessageQueue mI2cAsyncMsgQueue; - CAMERAResult i2cCommon(u32 type, CAMERASelect sel_cmr); - CAMERAResult i2cSetupOthers(); - CAMERAResult i2cActivate(CAMERASelect sel_cmr); - CAMERAResult i2cFrameRate(CAMERASelect sel_cmr); - CAMERAResult i2cContextSwitch(CAMERASelect sel_cmr); - CAMERAResult i2cLed(BOOL isBlink); - static void i2cCommonAsyncCallback(CAMERAResult result, void *arg); - static void i2cActivateCallback(CAMERAResult result, void *arg); - static void i2cFrameRateCallback(CAMERAResult result, void *arg); - static void i2cContextSwitchCallback(CAMERAResult result, void *arg); - static void i2cLedCallback(CAMERAResult result, void *arg); - - CAMERASelect indexToCameraSelect(u32 i) { return (CAMERASelect)(CAMERA_SELECT_IN << i); } - static BOOL isOutCamera(CAMERASelect sel_cmr) { return (sel_cmr == CAMERA_SELECT_OUT); } - - static vu8 mCurLedBlink; - static volatile CAMERASelect mSelCmr; - static volatile CAMERASelect mNextCmr; - - static volatile cameraState mCmrCurState[cCameraMax]; - static volatile cameraState mCmrNextState[cCameraMax]; - - void prepareBuffer(); - void destroyBuffer(); - void useNextConvBuf(); - void encodeAndSave(); - void setInterrupt(BOOL enable); - - void (*mpGxUserProc)(u8* vramAddr, BOOL shot); - BOOL writeJpegToSD(const u8* src, u32 size); -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - BOOL writeJpegToNand(const u8* src, u32 size); -#endif - - // if non-static, CW claims: - // Error: 'pDtcm' could not be assigned to a register - // Error: internal compiler error (report to ...) - // while executing in file 'PCodeAssembly.c' line: 468 - static void Shrink640Yuv422To208Rgb555( const void* src, void* dst, u32 height, void* pDtcm ); - static void Shrink640Yuv422To256Rgb555( const void* src, void* dst, u32 height, void* pDtcm ); - static void Convert8bitYuv422To16bitYuv420( const u32* src, u16* pYCbCrBuf, u32 width, u32 height, void* pDtcm_ ); - -}; - -}}} - -#endif diff --git a/build/tests/yuv2rgb/include/new.h b/build/tests/yuv2rgb/include/new.h deleted file mode 100644 index 822167fc..00000000 --- a/build/tests/yuv2rgb/include/new.h +++ /dev/null @@ -1,45 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NitroSDK - OS - demos - cplusplus-1 - File: new.h - - Copyright 2003-2007 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Log: new.h,v $ - Revision 1.6 2007/02/20 00:28:10 kitase_hirotake - indent source - - Revision 1.5 2006/01/18 02:11:30 kitase_hirotake - do-indent - - Revision 1.4 2005/02/28 05:26:27 yosizaki - do-indent. - - Revision 1.3 2004/03/08 08:55:47 yada - fix top comment - - Revision 1.2 2004/02/20 00:04:05 yasu - add comments - - Revision 1.1 2004/02/18 04:19:30 yada - C++ƒfƒ‚ - - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ - -#ifndef MY_NEW_H_ -#define MY_NEW_H_ - -void *operator new(std::size_t blocksize); -void *operator new[] (std::size_t blocksize); -void operator delete(void *block) throw(); -void operator delete[] (void *block)throw(); - -/* MY_NEW_H_ */ -#endif diff --git a/build/tests/yuv2rgb/include/snd_data.h b/build/tests/yuv2rgb/include/snd_data.h deleted file mode 100644 index 89a4e28b..00000000 --- a/build/tests/yuv2rgb/include/snd_data.h +++ /dev/null @@ -1,35 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: snd_data.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#ifndef SND_DATA_H_ -#define SND_DATA_H_ -#ifdef __cplusplus -extern "C" { -#endif -/*---------------------------------------------------------------------------*/ - -#include - -extern const u8 sound_seq_data[]; -extern const u8 sound_bank_data[]; -extern const u8 sound_wave_data[]; - -/*---------------------------------------------------------------------------*/ -#ifdef __cplusplus -} // extern "C" -#endif -#endif // SND_DATA_H_ diff --git a/build/tests/yuv2rgb/include/yuv2rgb.h b/build/tests/yuv2rgb/include/yuv2rgb.h deleted file mode 100644 index 7f06cbab..00000000 --- a/build/tests/yuv2rgb/include/yuv2rgb.h +++ /dev/null @@ -1,85 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - YUV2RGB - File: cpu_yuv2rgb.h - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev:$ - $Author:$ - *---------------------------------------------------------------------------*/ -#ifndef YUV2RGB_H_ -#define YUV2RGB_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define DSP_DMA_NOT_USE 0xFFFFFFFFUL - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -typedef struct YUYV -{ - u8 y1; - u8 u; - u8 y2; - u8 v; -} YUYV; - -typedef struct RGBX16 -{ - u16 r:5; - u16 g:5; - u16 b:5; - u16 x:1; -} RGBX16; - -typedef void (*YUV2RGBCallback)(void); - -typedef enum _MessageYuv2Rgb -{ - MESSAGE_YUV2RGB_CONVERT = 1 -} MessageYuv2Rgb; - -/*---------------------------------------------------------------------------* - Name: DSP_Yuv2RgbInit - - Description: ‰Šú‰»ŠÖ” - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ -BOOL DSP_Yuv2RgbInit(u32 dmaNo); - -/*---------------------------------------------------------------------------* - Name: DSP_Yuv2RgbConvertAsync - - Description: YUV->RGB•ÏŠ·‚ðs‚¢‚Ü‚·Bi”ñ“¯Šú”Åj - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ -BOOL DSP_Yuv2RgbConvertAsync(void* src, void* dest, u32 size, YUV2RGBCallback callback); - -// CPU”Å -u32 CpuYuv2Rgb( const void* src, void* dest, u32 pixels ); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/* YUV2RGB_H_ */ -#endif diff --git a/build/tests/yuv2rgb/readme.txt b/build/tests/yuv2rgb/readme.txt deleted file mode 100644 index 26873f1d..00000000 --- a/build/tests/yuv2rgb/readme.txt +++ /dev/null @@ -1,227 +0,0 @@ -‚±‚̃pƒbƒP[ƒW‚ɂ‚¢‚Ä -====================== - -ARM7ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðAracoon‚©‚çjackal‚É‚·‚邯AƒJƒƒ‰“®ìŽž‚Ì -ARM9‚̈——Ž‚¿‚ª‘½‚­‚Ȃ邱‚Ƃ𒲂ׂ邽‚߂̃Tƒ“ƒvƒ‹‚Å‚·B - -ƒRƒ“ƒ|[ƒlƒ“ƒg‚ÌØ‚è‘Ö‚¦‚ÍAMakefile‚Ì - -ifdef TWL_IPL_RED_ROOT -#ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðØ‚è‘Ö‚¦‚Ü‚·B -#ƒRƒƒ“ƒgƒAƒEƒg‚·‚邯racoon‚ðA—LŒø‰»‚·‚邯jackal‚ðŽg‚¢‚Ü‚·B -#‰º‚Ìs‚ð•ÏX‚µ‚½‚çmake clean‚µ‚Ä‚­‚¾‚³‚¢B -TWL_IPL_USE_RED_IPL := TRUE -endif - -ã‹L‚Ìs‚ðƒRƒƒ“ƒgƒAƒEƒg‚·‚é‚©—LŒø‰»‚·‚é‚©‚Ås‚Á‚Ä‚­‚¾‚³‚¢B -•ÏX‚µ‚½‚çmake clean‚µ‚Ä‚­‚¾‚³‚¢B - -ˆ——Ž‚¿‚ª”­¶‚·‚邯AƒfƒoƒbƒOo—Í‚É - -mConvBusy! 0, nextp empty -mConvBusy! 1, nextp empty - : - -‚Æ•\ަ‚³‚ê‚Ü‚·B”Žš‚͉ñ”‚Å‚·B‚±‚Ì•p“x‚ªAracoon‚Æjackal‚ÅˆÙ‚È -‚è‚Ü‚·B - -‰æ–Êã•”‚Ì '*' ‚Ì“®‚«‚̃Xƒ€[ƒY‚³‚âAƒJƒƒ‰‚ÉŒü‚©‚Á‚ÄŽè‚ðU‚Á‚½‚è -‚·‚邯AƒJƒNƒJƒN‚·‚邱‚Æ‚Å‚àˆ——Ž‚¿‚É‚¨‹C‚«’¸‚¯‚邯Žv‚¢‚Ü‚·B - -ˆÈã‚Å‚·B - - - -ˆÈ‰º‚ÍA‚±‚̃pƒbƒP[ƒW‚Ɋ܂܂ê‚éŠÖ”‚ðSDK‚ÌDSP JPEGƒ‰ƒCƒuƒ‰ƒŠ‚É’Ç -‰Á‚µ‚Ä’¸‚­‚½‚߂ɒñ‹Ÿ‚µ‚½‚Æ‚«‚É쬂µ‚½ƒhƒLƒ…ƒƒ“ƒg‚Å‚·B - -««««««««««««««««««««««««««««««««««« -====================================================================== - -‚±‚̃pƒbƒP[ƒW‚ɂ‚¢‚Ä -====================== - -UIGƒ‰ƒ“ƒ`ƒƒ[‚̃Jƒƒ‰ŽB‰e•”•ª(ƒJƒƒ‰ƒ}ƒl[ƒWƒƒ)‚ÌŽÀ‘•‚Ì‚½‚ßA‚¢‚ë -‚¢‚ëŽÀŒ±‚·‚邽‚߂̃pƒbƒP[ƒW‚Å‚·B’¼ÚƒJƒƒ‰‚âJPEG‚ɂ͊֌W‚µ‚È‚¢ -ƒtƒ@ƒCƒ‹‚ªŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚·‚ª‚²—¹³‚­‚¾‚³‚¢B - -src/menuCameraManager.cpp‚ÍAŠî–{“I‚ÉŒ»ó‚ÌUIGƒ‰ƒ“ƒ`ƒƒ[‚Æ“¯‚¶‚à -‚̂ł·B‚±‚±‚ł̎ÀŒ±‚̬‰Ê‚ðUIGƒ‰ƒ“ƒ`ƒƒ[‚Ö”½‰f‚µ‚Ä‚¢‚Ü‚·B - -YUV422->YUV420•ÏŠ·ŠÖ”ˆÈŠO‚ÍA–¢Š®¬‚Ì•”•ª‚à‚ ‚èAŽG‚Éì‚Á‚Ä‚¢‚é -•”•ª‚à‚ ‚è‚Ü‚·‚Ì‚ÅAŒöŠJ‚È‚³‚ç‚È‚¢‚悤‚É‚¨Šè‚¢‚µ‚Ü‚·B - -SDƒJ[ƒhƒAƒNƒZƒX•”‚ÍAUIGƒ‰ƒ“ƒ`ƒƒ[³Ž®Žd—l‚ł͂ ‚è‚Ü‚¹‚ñB‚½‚¾‚µ -Œ»ó‚ÌUIGƒ‰ƒ“ƒ`ƒƒ[‚É‚à‚±‚̂܂܎g‚í‚ê‚Ä‚¢‚Ü‚·BƒVƒƒƒbƒ^[‰¹‚à‚Ü‚¾ -–‚è‚Ü‚¹‚ñB - -ŽÀs•û–@‚ÍA•’Ê‚Émake‚µ‚Ämain.tlf‚ðƒ[ƒh‚µ‚Ä’¸‚­‚ÆAã‰æ–ʂɃA -ƒEƒgƒJƒƒ‰‚̉摜‚ªo‚Ü‚·BAƒ{ƒ^ƒ“‚ŃVƒƒƒbƒ^[‚ðØ‚è‚Ü‚·BSDƒJ[ƒh -‚ª“ü‚Á‚Ä‚¢‚ê‚Î/menu/menu####.jpg‚ð˜A”ԂŶ¬‚µ‚Ü‚·B(SDK‚̃fƒ‚‚ð -‚»‚̂܂ܒ¸‚¢‚Ä‚¢‚Ü‚·) - - -YUV422->YUV420•ÏŠ·ŠÖ”‚ÌŽg—p•û–@ -================================ - -menuCameraManager.cpp‚ÌConvert8bitYuv422To16bitYuv420()‚ÅA -YUV422->YUV420•ÏŠ·‚ðs‚¢‚Ü‚·B‚±‚ÌŠÖ”‚ðŒÄ‚Ño‚µ‚Ä‚¢‚铯ƒtƒ@ƒCƒ‹ -‚Ì1074s–Ú‚©‚ç1102s–Ú‚ ‚½‚è - - frame_y = mpTestEncodeWork->y; - frame_cb = mpTestEncodeWork->cbcr; - frame_cr = frame_cb + (mShotWdt * mShotHgt / 4); - tick = OS_GetTick(); - Convert8bitYuv422To16bitYuv420(reinterpret_cast(pBuf), - frame_y, - mShotWdt, - mShotHgt, - mpDtcmWork->mYuvBuf); - // store YUV420 and invalidate encode result - // DC_StoreAll(), DC_FlushAll() is NG? - DC_FlushAll(); - - IPL_PRINT("procShot: yuv422to420 time %d usec\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - tick)); - tick = OS_GetTick(); - - // o—̓TƒCƒY‚Í‚¢‚©‚Ù‚Ç•K—vH - DSP_SetJpegEncoderBuffer(mpTestEncodeWork->result, sizeof(mpTestEncodeWork->result)); - // explicit initialization - DSP_SetJpegEncoderThumbnailBuffer(NULL, NULL, NULL); - DSP_SetJpegEncoderAllocator( dspAlloc_, dspFree_ ); - u32 size = DSP_StartJpegEncoder( static_cast< s16 > ( mShotWdt ) , - static_cast< s16 > ( mShotHgt ) , - DSP_JPEG_THUMBNAIL , - 4 ); - - // need here too ? sometimes picture breaks... - // DC_StoreAll(), DC_FlushAll() is NG? - DC_InvalidateRange(mpTestEncodeWork->result, size); - -‚ɂ‚¢‚Äà–¾‚µ‚Ü‚·B - -- 1078s–ڂ̕ϊ·ŠÖ”‚̈ø”pBuf‚ÍAƒJƒƒ‰‚ªVGAAYUV422‚ŃLƒƒƒvƒ`ƒƒ -‚µ‚½Œ‹‰Ê‚ðŽw‚µ‚Ä‚¢‚Ü‚·B‚±‚̃oƒbƒtƒ@‚ÍA’¼‘O‚ÉprocConvert()‚ð’Ê‚Á -‚Ä‚«‚Ä‚¨‚èA917s–Ú‚Ì - DC_FlushAll(); -‚ÅAƒf[ƒ^ƒLƒƒƒbƒVƒ…‚ÌInvalidate‚ªÏ‚ñ‚Å‚¢‚Ü‚·B -•ÏŠ·Œ³ƒf[ƒ^‚̓[ƒh(4ƒoƒCƒg)ƒŠ[ƒh‚³‚ê‚邽‚ßA -reinterpret_cast‚µ‚Ä‚¢‚Ü‚·B - -- ˆø”frame_y‚ÍASDK‚ÌJPEGƒGƒ“ƒR[ƒ_‚̃Oƒ[ƒoƒ‹•Ï”‚Å‚·B¡‚Í11 -s–Ú‚©‚ç’¼Ú -extern "C" { -// build/libraries/dsp/ARM9.TWL/src/dsp_jpeg_enc.c -extern u16 *frame_y; -extern u16 *frame_cb; -extern u16 *frame_cr; -} /* extern "C" */ -‚ÅŽQÆ‚µ‚Ä‚¢‚Ü‚·‚ªASDK‚̃Oƒ[ƒoƒ‹•Ï”–¼‚Æ‚µ‚Ă͓K؂ł͂Ȃ¢‚½‚ßA -•Ï”–¼‚𮂦‚ÄSetŠÖ”‚ð’ljÁ‚µ‚Ä’¸‚¢‚½•û‚ª—Ç‚¢‚ÆŽv‚¢‚Ü‚·B - -- SDK‚ÌJPEGƒGƒ“ƒR[ƒ_‚É‚ÍAframe_cb‚Æframe_cr‚à—^‚¦‚é•K—v‚ª‚ ‚è‚Ü -‚·Bframe_cb‚Æframe_cr‚ð—^‚¦‚Ä‚¢‚é‚Ì‚Í1074s–Ú‚©‚ç‚Ì - frame_y = mpTestEncodeWork->y; - frame_cb = mpTestEncodeWork->cbcr; - frame_cr = frame_cb + (mShotWdt * mShotHgt / 4); -‚ɂȂè‚Ü‚·B - -•ÏŠ·ŠÖ”‚ÍAframe_y‚ÉŒ„ŠÔ–³‚­‘±‚¯‚Äframe_cbAframe_cr‚ðo—Í‚µ‚Ü‚· -‚Ì‚ÅA•ÏŠ·ŠÖ”‚̈ø”‚Íframe_y‚¾‚¯‚Å‚·B - -- mShotWdt‚Í640AmShotHgt‚Í480‚Å‚·B - -- mpDtcmWork->mYuvBuf‚ÅAˆ—‚‘¬‰»—p‚ÌDTCMƒ[ƒN‚ð—^‚¦‚Ä‚¢‚Ü‚·B -menuCameraManager.h‚Ì43s–Ú‚É‚ ‚éA12ƒ_ƒuƒ‹ƒ[ƒh(96ƒoƒCƒg) - u64 mYuvBuf[12]; -‚̗̈悪•K—v‚Å‚·Bstrd–½—ß‚ðŽg—p‚µ‚Ä‚¢‚é‚Ì‚Å8ƒoƒCƒgƒAƒ‰ƒCƒ“ƒƒ“ƒg -‚µ‚Ä‚­‚¾‚³‚¢B(‚»‚Ìã‚ÌmShrinkBuf‚ÍAk¬—p‚Ȃ̂ŕϊ·ŠÖ”‚ɂ͊֌W -‚ ‚è‚Ü‚¹‚ñ) - -DTCM‚ðŽg‚¤‚±‚Ƃɂ‚¢‚Ä‚ÍASDK‚Æ‚µ‚ÄŒöŠJ‚·‚éꇂɌŸ“¢‚ª•K—v‚¾‚ÆŽv -‚¢‚Ü‚·BƒƒCƒ“ƒƒ‚ƒŠ‚âVRAM‚ðŠ„‚è“–‚Ä‚Ä‚à“®ì‚·‚é‚Í‚¸‚Å‚·‚ªAŽŽ‚µ -‚Ä‚¢‚Ü‚¹‚ñBstatic‚ÈDTCMƒ[ƒN‚łȂ­‚Ä‚àAƒƒCƒ“ƒXƒŒƒbƒh‚̃Xƒ^ƒb -ƒNƒtƒŒ[ƒ€‚È‚ç’Êí‚ÍDTCM‚ɂȂé‚Í‚¸‚Å‚·‚ªA‚»‚¤‚¢‚¤‚±‚Æ‚ðˆÓޝ‚³‚¹ -‚邯•~‹‚ª‚‚­‚È‚è‚Ü‚·B - -- •ÏŠ·Œã‚Ì1085s–Ú - DC_FlushAll(); -‚ÍAJPEGƒGƒ“ƒR[ƒhŽž‚ɉ摜‚ª•ö‚ê‚éÇó‚É”Y‚Ü‚³‚êA”O‚Ì‚½‚߃f[ƒ^ -ƒLƒƒƒbƒVƒ…‚Ì“à—e‚ðŽÀƒƒ‚ƒŠ‚Ö“f‚«o‚µ‚Ü‚µ‚½B‰æ‘œ‚ª•ö‚ê‚È‚­‚È‚ê‚ÎA -•s—v‚©‚à‚µ‚ê‚Ü‚¹‚ñB - -- 1094s–Ú‚Ì - DSP_SetJpegEncoderAllocator( dspAlloc_, dspFree_ ); -‚ÅŽw’肵‚Ä‚¢‚éƒAƒƒP[ƒ^‚Å‚·‚ªAŽÀ‘Ì‚Ímainy.cpp‚Ì1667s–Ú‚É‚ ‚è‚Ü -‚·B - -dspAlloc_()‚ÍAŽÀ‚͉½‚à‚µ‚Ä‚¢‚Ü‚¹‚ñB‰½‚à‚µ‚Ä‚¢‚È‚¢‚Ç‚±‚ë‚©AŒÄ‚Î -‚ꂽ‚çƒAƒT[ƒg‚Å’âŽ~‚³‚¹‚Ü‚·B - -dspFree_()‚ÍASDK‚©‚çŒÄ‚΂ê‚Ä‚µ‚Ü‚¤‚Ì‚ÅA’âŽ~‚Í‚µ‚Ü‚¹‚ñ‚ªƒ_ƒ~[ŠÖ -”‚É‚µ‚Ä‚ ‚è‚Ü‚·B - -‚±‚̃AƒƒP[ƒ^‚ÌŽg‚í‚ê•û(SDK‚Ìdsp_jpeg_enc.c)‚ɂ‚¢‚Ä‚ÍA‚¢‚ë‚¢‚ë -Žv‚¤‚Æ‚±‚ë‚Í‚ ‚é‚̂ł·‚ªAŠÈ’P‚ÉŒ¾‚¤‚Æ - -a. Å‘å‚ʼn½ƒoƒCƒg•K—v‚ɂȂé‚Ì‚©A‚Å‚«‚ê‚΃Rƒ“ƒpƒCƒ‹Žž‚É’m‚肽‚¢‚ª -‚»‚Ì•û–@‚ª’ñ‹Ÿ‚³‚ê‚Ä‚¢‚È‚¢ - -b. pTmp2‚ðʼn‚ÉŠm•Û‚µ‚Ä‚¢‚邽‚ßApYbufApCBbufApCRbuf‚ðŠm•Û‚µ‚½ -Œã‚É - DSPFree(pTmp2); -‚·‚é‚̂̓tƒ‰ƒOƒƒ“ƒg‚ð¶‚¶‚é‰Â”\«‚ª‚ ‚é - -c. extra_bytes‚ÉŠÖ‚·‚鈗‚â - Yuv_image_size=(u32)(image_width+32)*(image_height+32); -‚Ì+32‚ªˆÓ}•s–¾ - -‚Æ‚¢‚¤‚Æ‚±‚ë‚Å•sˆÀ‚ɂȂÁ‚½‚Ì‚ªAŽ„‚ª•ÏŠ·ŠÖ”‚ðŽ©ì‚µ‚½‚à‚¤ˆê‚Â‚Ì -——R‚Å‚·B - -- JPEGƒGƒ“ƒR[ƒhŒã‚Ì1102s–Ú - DC_InvalidateRange(mpTestEncodeWork->result, size); -‚àAJPEGƒGƒ“ƒR[ƒhŽž‚̉摜•ö‚ê‘ÎôƒeƒXƒg‚Å‚·B -‚à‚µ‚©‚µ‚ÄASD‚Ö‘‚«ž‚ÞFSƒ‰ƒCƒuƒ‰ƒŠ‚É–â‘肪‚ ‚é‚©‚à‚ÆŽv‚¢AFSƒ‰ -ƒCƒuƒ‰ƒŠ—p‚Ƀf[ƒ^ƒLƒƒƒbƒVƒ…‚ðInvalidate‚µ‚½‚à‚̂ł·B•ö‚ê‚È‚­‚È -‚ê‚ÎA‚±‚ê‚à•s—v‚ɂȂé‚Å‚µ‚傤B - - -YUV422->YUV420•ÏŠ·ŠÖ”‚Ì•â‘«à–¾ -================================ - -- 793s–Ú‚©‚ç821s–Ú‚Ü‚ÅA -#if 0 - // even line U - : -#else - // even column ave. uv (V0 U0) - : -#endif - -‚Å‚·‚ªA‚±‚ê‚ÍYUV422->YUV420‚É”º‚Á‚ÄŽ¸‚í‚ê‚éUAV¬•ª‚ð2ƒ‰ƒCƒ“‚Ì -•½‹Ï’l‚Æ‚·‚é‚©AWikipedia‚ð‰L“Û‚Ý‚µ‚½ - -| YUV420 : 2~2ƒsƒNƒZƒ‹‚Ì‚¤‚¿A‚ÌF·M†‚ðʼn‚̃‰ƒCƒ“‚©‚çŽæ‚èA -| Ô‚ÌF·M†‚ðŽŸ‚Ìƒ‰ƒCƒ“‚©‚ç‚Æ‚é•ûŽ®B‹P“xM†‚Í1ƒsƒNƒZƒ‹‚²‚Æ‚É‚Æ -| ‚éB - -‚Ì•ûŽ®‚É‚·‚é‚©‚ðŽŽ‚µ‚½‚à‚̂ł·B•½‹Ï’l‚É‚µ‚½•û‚ªƒmƒCƒY‚ª’ጸ‚³‚ê -‚Ä‚¢‚邿‚¤‚ÉŠ´‚¶‚½‚½‚ßA¡‚Ì#if 0‚Æ‚µ‚Ä‚ ‚è‚Ü‚·B#if 1‚É‚·‚邯ƒV -ƒƒ[ƒv‚ÈŠ´‚¶‚ɂȂè‚Ü‚·B - -‚µ‚©‚µA‚»‚à‚»‚àY¬•ª‚Í‚»‚̂܂܂ÅUAV‚¾‚¯•½‹Ï‰»‚µ‚½‚炨‚©‚µ‚¢ŠG‚É -‚È‚ç‚È‚¢‚Ì‚©A‚Ƃ͂¢‚¦ã‚̃‰ƒCƒ“‚ÌV‚ð‰º‚Ìƒ‰ƒCƒ“‚©‚玂Á‚Ä‚­‚é‚Ì‚à -‚¨‚©‚µ‚Șb‚Å‚ÍH‚Æ‚¢‚¤Žv‚¢‚Í‚ ‚è‚Ü‚·B - -JPEGƒGƒ“ƒR[ƒ_‚Ì“ü—̓f[ƒ^Žd—l‚ðÚ‚µ‚­’²‚ׂĂ¢‚È‚¢‚Ì‚ÅA‚Ç‚¿‚炪 -—Ç‚¢‚Ì‚©•ª‚©‚Á‚Ä‚¢‚Ü‚¹‚ñB - -- •ÏŠ·ŠÖ”‚̈ø”‚̧ŒÀ‚ɂ‚¢‚ÄA714s–Ú‚©‚ç‚̃Rƒƒ“ƒg‚ð•â‘«‚µ‚Ü‚·B - -// pYCbCrBuf‚àÅ’á4ƒoƒCƒgƒAƒ‰ƒCƒ“ƒƒ“ƒg‚Å‚·‚ªAŠeƒfƒoƒCƒX‚Ƃ̘AŒg‚É -// ”õ‚¦‚Ä32ƒoƒCƒgƒAƒ‰ƒCƒ“ƒƒ“ƒg‚µ‚Ä‚­‚¾‚³‚¢B - -ª‚±‚ê‚ÍA•ÏŠ·Œ‹‰Ê‚ªDSP‚Ì“ü—̓f[ƒ^‚ɂȂé‚Ì‚ÅA32ƒoƒCƒgƒAƒ‰ƒCƒ“ƒ -ƒ“ƒg‚µ‚Ä‚¨‚¯‚΃LƒƒƒbƒVƒ…‚Ü‚í‚è‚ÌS”z‚ªŒ¸‚é‚©‚ç‚Å‚·B - diff --git a/build/tests/yuv2rgb/redipl_defs_autogen_by_uig b/build/tests/yuv2rgb/redipl_defs_autogen_by_uig deleted file mode 100644 index 7c5d15da..00000000 --- a/build/tests/yuv2rgb/redipl_defs_autogen_by_uig +++ /dev/null @@ -1,14 +0,0 @@ -SYSMENU_LIBS = \ - liblcfg$(TWL_LIBSUFFIX).a \ - libsysmenu$(TWL_LIBSUFFIX).a \ - libsysmmcu$(TWL_LIBSUFFIX).a \ - libsysmutil$(TWL_LIBSUFFIX).a \ - libboot$(TWL_LIBSUFFIX).a \ - libds$(TWL_LIBSUFFIX).a \ - libhotsw$(TWL_LIBSUFFIX).a \ - libdht$(TWL_LIBSUFFIX).a \ - libreloc_info$(TWL_LIBSUFFIX).a \ - libnamut$(TWL_LIBSUFFIX).a \ - libsharedfont_launcher$(TWL_LIBSUFFIX).a \ - WDS$(TWL_LIBSUFFIX).a - diff --git a/build/tests/yuv2rgb/src/cpu_yuv2rgb.c b/build/tests/yuv2rgb/src/cpu_yuv2rgb.c deleted file mode 100644 index bdb09f57..00000000 --- a/build/tests/yuv2rgb/src/cpu_yuv2rgb.c +++ /dev/null @@ -1,103 +0,0 @@ - // ’†g‚ð‚¢‚¶‚Á‚Ä‚ ‚éB -/*---------------------------------------------------------------------------* - Project: TwlSDK - YUV2RGB - File: cpu_yuv2rgb.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev:$ - $Author:$ - *---------------------------------------------------------------------------*/ - -#include -#include "yuv2rgb.h" - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - ŠÖ”錾 - *---------------------------------------------------------------------------*/ - -u32 yuv2rgb16( const void* src, void* dest, u32 pixels ); - -/*---------------------------------------------------------------------------* - “à•”ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -static inline int r_diff( u8 v ) -{ -// return (1402 * ( v - 128 )) / 1000; - return (11760828/*.416*/ * ( v - 128)) >> 23; -} - -static inline int g_diff( u8 u, u8 v ) -{ -// return (-344 * ( u - 128 ) -714 * ( v - 128 )) / 1000; - return (-2885681/*.152*/ * ( u - 128 ) -5989466/*.112*/ * ( v - 128 )) >> 23; -} -static inline int b_diff( u8 u ) -{ -// return (1772 * ( u - 128 )) / 1000; - return (14864613/*.376*/ * ( u - 128 )) >> 23; -} - -static inline int trim( int e ) -{ - return e < 0 ? 0 : ( e > 255 ? 255 : e); -} - -/*---------------------------------------------------------------------------* - Name: CpuYuv2Rgb - - Description: YUV->RGB•ÏŠ·‚ðs‚¢‚Ü‚·(CPUƒo[ƒWƒ‡ƒ“j - - Arguments: src : input data adress (YUV) - dest : output data adress (RGB) - pixels : num of pixel - - Returns: None - *---------------------------------------------------------------------------*/ -u32 CpuYuv2Rgb( const void* src, void* dest, u32 pixels ) -{ - OSTick begin; - u8* yuyv = (u8*)src; - u32* rgb = (u32*)dest; - - u32 limit = pixels >> 1; - u32 i; - -begin = OS_GetTick(); - - for (i = 0; i < limit; i++) - { - u8 y1 = *yuyv++; - u8 u = *yuyv++; - u8 y2 = *yuyv++; - u8 v = *yuyv++; - *rgb++ = (u32)( - 0xffffffff - //0x83e083e0 // G only - & ( - 0x80008000 | - ( ( trim( y2 + b_diff( u ) ) & 0xF8 ) << 23) | - ( ( trim( y2 + g_diff( u, v ) ) & 0xF8 ) << 18) | - ( ( trim( y2 + r_diff( v ) ) & 0xF8 ) << 13) | - ( ( trim( y1 + b_diff( u ) ) & 0xF8 ) << 7) | - ( ( trim( y1 + g_diff( u, v ) ) & 0xF8 ) << 2) | - ( ( trim( y1 + r_diff( v ) ) ) >> 3) )); - } - -OS_Printf("total(555) = %d us\n", OS_TicksToMicroSeconds(OS_GetTick() - begin)); - - return pixels * sizeof(RGBX16); -} - diff --git a/build/tests/yuv2rgb/src/dsp_yuv2rgb.c b/build/tests/yuv2rgb/src/dsp_yuv2rgb.c deleted file mode 100644 index ee1ada37..00000000 --- a/build/tests/yuv2rgb/src/dsp_yuv2rgb.c +++ /dev/null @@ -1,308 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - YUV2RGB - File: dsp_yuv2rgb.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev:$ - $Author:$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include "yuv2rgb.h" - -/*---------------------------------------------------------------------------* - Œ^’è‹` - *---------------------------------------------------------------------------*/ - -#define THREAD_YUV2RGB_PRIO 10 // ƒƒCƒ“ƒXƒŒƒbƒh‚æ‚è—Dæ -#define STACK_SIZE 1024 -#define DSP_BUFFER_SIZE 0x6000 // 24KB - -/*---------------------------------------------------------------------------* - •Ï”’è‹` - *---------------------------------------------------------------------------*/ - -OSThread threadYUV2RGB; // YUV2RGBƒXƒŒƒbƒh -u64 stack[STACK_SIZE / sizeof(u64)]; // YUV2RGBƒXƒŒƒbƒh—pƒXƒ^ƒbƒN - -// ƒƒbƒZ[ƒWŠÖ˜A -OSMessage mesgBuffer[10]; -OSMessageQueue mesgQueue; - -static YUV2RGBCallback sCallback; -static u8* sSrc; -static u8* sDst; -static u32 sSize; -static u32 sDmaNo; -static u8 sBusy; - -DSPPipe binout[1]; -DSPPipe binin[1]; - -/*---------------------------------------------------------------------------* - ŠÖ”錾 - *---------------------------------------------------------------------------*/ -BOOL YUV2RGB_Init(void); -static void DSPi_Yuv2RgbThread(void *arg); -static void DSPi_Yuv2RgbLoadProgram(); -static void DSPi_Yuv2RgbConvertCore(void); - -/*---------------------------------------------------------------------------* - ŠÖ”’è‹` - *---------------------------------------------------------------------------*/ - -/*---------------------------------------------------------------------------* - Name: DSP_Yuv2RgbInit - - Description: ‰Šú‰»ŠÖ” - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ -BOOL DSP_Yuv2RgbInit(u32 dmaNo) -{ - // DSPƒtƒ@[ƒ€‚ðƒ[ƒh - DSPi_Yuv2RgbLoadProgram(); - - // DSPƒpƒCƒvî•ñ‚ðƒ[ƒhiDSP->ARMj - (void)DSP_LoadPipe( - binout, // ƒpƒCƒvî•ñ‚ÌŠi”[æ (DSP‘¤‚Å‚ÍNULL‚ł悢) - DSP_PIPE_BINARY, // ƒpƒCƒv‚̃|[ƒg”Ô†i1j - DSP_PIPE_OUTPUT); // DSP_PIPE_INPUT ‚Ü‚½‚Í DSP_PIPE_OUTPUT - - (void)DSP_LoadPipe( - binin, // ƒpƒCƒvî•ñ‚ÌŠi”[æ (DSP‘¤‚Å‚ÍNULL‚ł悢) - DSP_PIPE_BINARY, // ƒpƒCƒv‚̃|[ƒg”Ô†i1j - DSP_PIPE_INPUT); // DSP_PIPE_INPUT ‚Ü‚½‚Í DSP_PIPE_OUTPUT - - // ƒƒbƒZ[ƒWƒLƒ…[‚̉Šú‰» - OS_InitMessageQueue(&mesgQueue, &mesgBuffer[0], 10); - - // YUV2RGB•ÏŠ·ƒXƒŒƒbƒh¶¬E‹N“® - OS_CreateThread(&threadYUV2RGB, DSPi_Yuv2RgbThread, (void *)0, stack + STACK_SIZE / sizeof(u64), STACK_SIZE, THREAD_YUV2RGB_PRIO); - OS_WakeupThreadDirect(&threadYUV2RGB); - - // WRAM-C Slot1 ‚ÌŠ„‚è“–‚Ä‚ð DSP->ARM ‚Ö•ÏX - if ( MI_SwitchWramSlot_C( 1, MI_WRAM_SIZE_32KB, MI_WRAM_DSP, MI_WRAM_ARM9 ) != 1 ) - { - OS_TPanic("can't allocate WRAM Slot"); - } - - // Žg—p‚·‚éDMA”Ô†‚ð•Û‘¶ - sDmaNo = dmaNo; - - return TRUE; -} - -/*---------------------------------------------------------------------------* - Name: DSPi_Yuv2RgbLoadProgram - - Description: DSPƒeƒXƒgƒvƒƒOƒ‰ƒ€‚ðƒ[ƒhB - - Arguments: None. - - Returns: None. - *---------------------------------------------------------------------------*/ -static void DSPi_Yuv2RgbLoadProgram(void) -{ - MI_FreeWram_B(MI_WRAM_ARM9); - MI_CancelWram_B(MI_WRAM_ARM9); - MI_FreeWram_C(MI_WRAM_ARM9); - MI_CancelWram_C(MI_WRAM_ARM9); - { - extern const u8 _binary_simple_dat[]; - extern const u8 _binary_simple_dat_end[]; - if (!DSP_LoadFileAuto(_binary_simple_dat)) - { - OS_TPanic("can't allocate WRAM Slot"); - } - // •K‚¸‚±‚̃^ƒCƒ~ƒ“ƒO‚ÅON‚µ‚È‚¢‚Æ‚¢‚¯‚È‚¢‚Ì‚©‚Ç‚¤‚©‚Í–¢Šm”FB - { - static BOOL once = FALSE; - if (!once) - { - DSP_PowerOn(); - once = TRUE; - } - } -// DSP_ResetInterface(); - DSP_ResetOff(); - OS_TPrintf("dsp app run...\n"); - DSP_EnableRecvDataInterrupt(0); - DSP_EnableRecvDataInterrupt(1); - DSP_EnableRecvDataInterrupt(2); - } -} - -/*---------------------------------------------------------------------------* - Name: DSPi_Yuv2RgbThread - - Description: YUV2RGBê—pƒXƒŒƒbƒh - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ - -static void DSPi_Yuv2RgbThread(void *arg) -{ -#pragma unused( arg ) - OSMessage message; - - while (1) - { - (void)OS_ReceiveMessage(&mesgQueue, &message, OS_MESSAGE_BLOCK); - - switch ((MessageYuv2Rgb)message) - { - case MESSAGE_YUV2RGB_CONVERT: - DSPi_Yuv2RgbConvertCore(); - break; - } - } -} - -/*---------------------------------------------------------------------------* - Name: DSP_Yuv2RgbConvertAsync - - Description: YUV->RGB•ÏŠ·‚ðs‚¢‚Ü‚·i”ñ“¯Šú”Åj - - Arguments: *** - - Returns: ˆË—ЬŒ÷‚È‚çTRUE - *---------------------------------------------------------------------------*/ -BOOL DSP_Yuv2RgbConvertAsync(void* src, void* dest, u32 size, YUV2RGBCallback callback) -{ - OSMessage message; - - message = (OSMessage)MESSAGE_YUV2RGB_CONVERT; - - if (!sBusy) - { - sCallback = callback; // ƒRƒ“ƒo[ƒgŠ®—¹Œã‚ɌĂÑo‚·ƒR[ƒ‹ƒoƒbƒN‚ð•Û‘¶ - sSrc = src; - sDst = dest; - sSize = size; - return OS_SendMessage(&mesgQueue, message, OS_MESSAGE_NOBLOCK); - } - return FALSE; -} - -/*---------------------------------------------------------------------------* - Name: DSPi_Yuv2RgbConvertCore - - Description: YUV->RGB•ÏŠ·‚Ì‚½‚ß‚ÉDSP‚Ƃ̂â‚èŽæ‚è‚â - ƒf[ƒ^ƒRƒs[‚Ȃǂðs‚¢‚Ü‚· - - Arguments: *** - - Returns: None - *---------------------------------------------------------------------------*/ -static void DSPi_Yuv2RgbConvertCore(void) -{ - u16 command; - u16 reply; - u32 adress = MI_GetWramMapStart_C() + MI_WRAM_C_SLOT_SIZE; // Žb’è“I‚ɃXƒƒbƒg1ŒÅ’è - OSTick begin, current, tick_copy1, tick_convert, tick_copy2; - u32 offset =0; - - // ƒrƒW[ƒtƒ‰ƒO‚n‚m - sBusy = TRUE; - - tick_copy1=tick_convert=tick_copy2=0; - - // Œ»óDSP‘¤‚Ƀoƒbƒtƒ@‚ð24KB‚µ‚©Šm•Û‚Å‚«‚Ä‚¢‚È‚¢‚½‚ß256x192(96Kbj‚È‚Ç‚Ì - // ‘å‚«‚¢ƒTƒCƒY‚̕ϊ·‚Í4‰ñ‚É•ª‚¯‚Äs‚Á‚Ä‚¢‚éB - - while (sSize > 0) - { - u16 size; - - if (sSize > DSP_BUFFER_SIZE) { size = DSP_BUFFER_SIZE; } - else { size = (u16)sSize; } - - sSize -= size; - -begin = OS_GetTick(); - - // src -> WRAM-C ‚É‘‚«ž‚Þ - if (sDmaNo == DSP_DMA_NOT_USE) - { - MI_CpuCopy16(sSrc + offset, (void*)adress, size); - DC_FlushRange((void*)adress, size); - } - else - { - MI_NDmaCopy( 3, sSrc + offset, (void*)adress, size ); - } - - // WRAM-C Slot1 ‚ÌŠ„‚è“–‚Ä‚ð ARM->DSP ‚Ö•ÏX - if ( MI_SwitchWramSlot_C( 1, MI_WRAM_SIZE_32KB, MI_WRAM_ARM9, MI_WRAM_DSP ) != 1 ) - { - OS_Printf("====== WRAM Allocation Fail ! =======\n"); - } - -current = OS_GetTick(); -tick_copy1 += (current - begin); -begin = current; - - // DSP‚ÖƒRƒ}ƒ“ƒh‘—M - command = (u16)(size>>1); // ƒsƒNƒZƒ‹”‚Æ‚µ‚Ä“n‚· - DSP_WritePipe(binout, &command, sizeof(u16)); - - // DSP‚©‚çƒRƒ}ƒ“ƒhŽóMi‚±‚±‚ŃXƒŠ[ƒv‚É“ü‚èADSP_HookPipeNotification‚Å‹N°j - DSP_ReadPipe(binin, &reply, sizeof(u16)); - -current = OS_GetTick(); -tick_convert += (current - begin); -begin = current; - - // WRAM-C Slot1 ‚ÌŠ„‚è“–‚Ä‚ð DSP->ARM ‚Ö•ÏX - if ( MI_SwitchWramSlot_C( 1, MI_WRAM_SIZE_32KB, MI_WRAM_DSP, MI_WRAM_ARM9 ) != 1 ) - { - OS_Printf("====== WRAM Allocation Fail ! =======\n"); - } - - // WRAM-C -> dst ‚É‘‚«ž‚Þ - if (sDmaNo == DSP_DMA_NOT_USE) - { - DC_InvalidateRange((void*)adress, size); - MI_CpuCopy16((void*)adress, sDst + offset, size); - } - else - { - MI_NDmaCopy( 3, (void*)adress, sDst + offset, size); - } - -current = OS_GetTick(); -tick_copy2 += (current - begin); - - // ƒIƒtƒZƒbƒgXV - offset += size; - } - - OS_Printf("copy to wram = %d us, ", OS_TicksToMicroSeconds(tick_copy1)); - OS_Printf("convert = %d us, ", OS_TicksToMicroSeconds(tick_convert)); - OS_Printf("from wram = %d us, ", OS_TicksToMicroSeconds(tick_copy2)); - OS_Printf("total = %d us\n", OS_TicksToMicroSeconds(tick_copy1+tick_convert+tick_copy2)); - - // ƒrƒW[ƒtƒ‰ƒO‚n‚e‚e - sBusy = FALSE; - - if (sCallback) - { - sCallback(); - } -} - diff --git a/build/tests/yuv2rgb/src/mainy.cpp b/build/tests/yuv2rgb/src/mainy.cpp deleted file mode 100644 index 181a117b..00000000 --- a/build/tests/yuv2rgb/src/mainy.cpp +++ /dev/null @@ -1,1813 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - YUV2RGB - File: main.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include -#include -#include -#include -#include -//#include -#include -#include -#include -#include -#include - -#ifdef TWL_IPL_USE_RED_IPL -#include -#include -#endif - -// #include -// #include -#include "DEMOBitmap.h" -#include "yuv2rgb.h" -#include "menuIrqHandler.h" -#include "menuCameraManager.h" - -#include "snd_data.h" - -// ƒeƒXƒgƒOƒ[ƒoƒ‹ƒAƒNƒZƒT -cmn::sys::cmr2::Manager* mpCmrMgr2; - -//extern u16 b_data[]; - -extern const u8 _binary_camera_shutter_dat[], _binary_camera_shutter_dat_end[]; -extern const u8 _binary_camera_shutter_MONO_dat[], _binary_camera_shutter_MONO_dat_end[]; -extern const u8 _binary_wheel_dat[], _binary_wheel_dat_end[]; - - -#include -// ŽÀŒ±‚É•K—v‚Èu32ŒÂ”‚Ímax(208*3, 256*2) -// ‚Ƃ肠‚¦‚¸256*4‚ÅB -static cmn::sys::cmr2::dtcmWork sDtcmWork; -#include - -/*---------------------------------------------------------------------------* - ’è”’è‹` - *---------------------------------------------------------------------------*/ - -#define CAMERA_NEW_DMA_NO 1 // CAMERA‚ÅŽg—p‚·‚éNew DMA”Ô† -#define WIDTH 640 -#define HEIGHT 480 - -#define LINES_SPLIT 1 -#define LINES_AT_ONCE (CAMERA_GET_MAX_LINES(WIDTH)/LINES_SPLIT) // ˆê‰ñ‚Ì“]‘—ƒ‰ƒCƒ“” -#define BYTES_PER_LINE CAMERA_GET_LINE_BYTES(WIDTH) // ˆêƒ‰ƒCƒ“‚Ì“]‘—ƒoƒCƒg” - - enum - { - eStt_Deactive = 0 , - eStt_Capture , - eStt_WaitShooting , - eStt_Shoot , - eStt_FinishShooting , - eStt_Stop , - eStt_Max - } mState, mLastState; - -BOOL mError; - - enum - { -#if 1 - cPictureOffsetX = 0, - cPictureOffsetY = 0, -#else - cPictureOffsetX = 24, - cPictureOffsetY = 24, -#endif - cPictureWidth = cScreenWidth - (cPictureOffsetX * 2), - cPictureHeight = cScreenHeight - (cPictureOffsetY * 2), - cShootWidth = 640, - cShootHeight = 480 - }; - -/*---------------------------------------------------------------------------* - ŠÖ”錾 - *---------------------------------------------------------------------------*/ - -static void VBlankIntr(void); -static void CameraIntr(void); -//static void CameraIntr2(void); -//static void CameraIntr3(void); -static void NDmaIntr(void); -static void NDmaDummyIntr(void); -static void PutString( char *format, ... ); -static void DrawFPS(void); - -/*---------------------------------------------------------------------------* - •Ï”’è‹` - *---------------------------------------------------------------------------*/ - -static BOOL startRequest = FALSE; - -// [0],[1]‚Ícamera‚©‚ç‚ÌinputB[2]‚͎̂Ăç‚ê‚écamera input—pH -static u16 buffer[3][WIDTH*HEIGHT] ATTRIBUTE_ALIGN(32); -//static vu8 we; -//static vu8 re; -//static vu8 reading; -//static vu8 tp; -//static vu8 wp; // ƒJƒƒ‰‚©‚çƒf[ƒ^‚ðŽæ‚èž‚Ý’†‚̃oƒbƒtƒ@ -//static vu8 rp; // ÅŒã‚ÌVRAM‚ɃRƒs[‚µ‚½ƒoƒbƒtƒ@ -//static BOOL wp_pending; // Žæ‚螂݂𒆒f‚µ‚½ (Ăѓ¯‚¶ƒoƒbƒtƒ@‚ÉŽæ‚èž‚Þ) -static CAMERASelect current = CAMERA_SELECT_IN; -static MenuIrqHandlerLogBuffer logBuf[0x10000]; - -static u16 text_buffer[ 32 ] ATTRIBUTE_ALIGN(32); - -static vu8 sNowConvert = FALSE; // YUV->RGB•ÏŠ·’†ƒtƒ‰ƒO - -static vu8 sLongDmaFlag; - -static u32 gWords[0x2000]; -static u32 gSum; - -#define GRAD_WIDTH 256 -static u16 grad0[GRAD_WIDTH] ATTRIBUTE_ALIGN(32); -static u16 grad1[GRAD_WIDTH] ATTRIBUTE_ALIGN(32); -static void MakeGrad(void) -{ - static u16 table[] = { - 0, 8, 0, 1, 0, 2, 0, 3, - 0, 4, 0, 5, 0, 6, 0, 7, - 1, 8, 1, 9, 2,10, 3,11, - 4,12, 5,13, 6,14, 7,15, - 8,16, 9,17,10,18,11,19, - 12,20,13,21,14,22,15,23, - 16,24,17,25,18,26,19,27, - 20,28,21,29,22,30,23,31, - }; - u32 i; - u32 color; - u32 shift = GX_RGBA_G_SHIFT; - - for (i = 0; i < GRAD_WIDTH; i++) { - color = i >> 2; // 0-63 - grad0[i] = (u16)((table[color] << shift) | GX_RGBA_A_MASK); - grad1[i] = (u16)(((color >> 1) << shift) | GX_RGBA_A_MASK); - } - - DC_StoreAll(); -} - -static inline int r_diff( u8 v ) -{ -// return (1402 * ( v - 128 )) / 1000; - return (11760828/*.416*/ * ( v - 128)) >> 23; -} - -static inline int g_diff( u8 u, u8 v ) -{ -// return (-344 * ( u - 128 ) -714 * ( v - 128 )) / 1000; - return (-2885681/*.152*/ * ( u - 128 ) -5989466/*.112*/ * ( v - 128 )) >> 23; -} -static inline int b_diff( u8 u ) -{ -// return (1772 * ( u - 128 )) / 1000; - return (14864613/*.376*/ * ( u - 128 )) >> 23; -} - -static inline int trim( int e ) -{ - return e < 0 ? 0 : ( e > 255 ? 255 : e); -} -#if 0 -static u32 CpuYuv2Rgb666( const void* src, void* dest, u32 pixels ) -{ - return CpuYuv2Rgb(src, dest, pixels); -} -#elif 0 -static u32 CpuYuv2Rgb666( const void* src, void* dest, u32 pixels ) -{ - MakeGrad(); - return 0; -} -#elif 0 -// little endian only -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ - // x * 6/7 - ldr r0, =0x000003fd - ldr r1, =(6*0x10000)/7 - smulwb r0, r1, r0 -// mov r0, #0x16c << 16 - bx lr -} -#elif 0 -// little endian only -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ - // ƒJƒƒ‰‹N“®’†AAHB‚͂ǂꂭ‚ç‚¢ƒXƒg[ƒ‹‚·‚éH - - -// 0009 0000 0000 0000 0000 0000 0000 0000 ret=00000001 -// 0002 0000 0000 0000 0000 0000 0000 0000 ret=00000001 -// 0003 0000 0000 0000 0000 0000 0000 0000 ret=00000001 - // 9‚Æ‚©“‚¢‚ÈBsysclk/64‚Ȃ̂Å...cpuclk‚É‚·‚邯4”{A - // ƒ^ƒCƒ}[‚ªƒJƒEƒ“ƒgƒAƒbƒv’¼‘O‚¾‚Á‚½‚Æ‚µ‚Ä‚à - // ‚‚܂è8*64*4=2048 cpu cycles‚ÌŠÔAƒXƒg[ƒ‹‚µ‚Ä‚¢‚é‚Á‚Ä‚±‚ÆH - // ‚±‚ê‚͉½‚ªŒ´ˆöH - // ƒJƒƒ‰‚̃‰ƒCƒ“ƒoƒbƒtƒ@‚Á‚Ä16MHz‚Å“®‚¢‚Ä‚é‚ÌH - // ‚à‚µ‚»‚¤‚¾‚Æ‚·‚邯A256ƒhƒbƒg=64 WordsA‚±‚ÌDMA‚É‚Í - // sysclk‚É‚µ‚Ä8”{A64*8=512 cpu cycles...‚»‚ñ‚Ȃɑ‚­‚È‚¢H - // - // ‚ [‚Á‚ÆIICAMERA_GetBytesAtOnce(WIDTH)=2048‚¾I - // ‚‚܂è 512 Words‚Ȃ̂Å512*8 = 4096 cycles...‚»‚ñ‚ÈŒvŽZ‚ɂ͂Ȃç‚ñ‚ÈB - // ƒJƒƒ‰‚̃‰ƒCƒ“ƒoƒbƒtƒ@‚ªsysclk“®ì‚È‚çcpuclk‚É‚·‚邯4”{A - // 512*4=2048 cpu cycles...‚‚¶‚‚܇‚¤H - // ƒoƒCƒg”‚Æ“¯‚¶cpu cycles‚É‚È‚é‚Æ‚·‚邯A2048‚̓AƒJƒ“‚â‚ë(Î) - // Š„‚螂݃‹[ƒ`ƒ“‚Ì’†‚Å‚à‚»‚ñ‚ȂɃXƒg[ƒ‹‚·‚郊ƒXƒN‚ª‚ ‚éB - // ƒTƒEƒ“ƒhDMA‚¾‚Á‚Ä‚ ‚é‚Ì‚ÉB - // ‚Ü‚ ‚Å‚àA‘¼‚Ì—vˆö‚É‚æ‚Á‚ăXƒg[ƒ‹‚·‚é‰Â”\«‚ª‚ ‚é‚©‚ç - // ƒJƒƒ‰‚̃‰ƒCƒ“ƒoƒbƒtƒ@‚ð4ƒ‰ƒCƒ“•ª‚Æ‚µ‚Ä‚¢‚é‚Ì‚©‚ÈB - // ‚±‚Ü‚Á‚½‚È‚ B‚¤[‚ñAƒJƒƒ‰‚̃‰ƒCƒ“ƒoƒbƒtƒ@‚©‚烃Cƒ“ƒƒ‚ƒŠ - // ‚Ö“]‘—Žž‚ÌADMAI—¹Š„‚螂݂ðŽg‚í‚È‚¯‚ê‚ÎADMA‚ª’Ç‚¢‚‚©‚È‚­‚Ä - // ”j’]‚·‚邯‚©‚ÍA‚ ‚Ü‚èS”z‚µ‚È‚­‚Ä—Ç‚³‚»‚¤B - // - // 000e 0000 0000 0000 0000 0000 0000 0000 ret=00000001 - // ‚È‚ñ‚¶‚Ⴑ‚è‚áIHŠ„‚螂ݓü‚Á‚½H - // - // mi_ndma.c‚É - // #define CAMERA_DMA_BLOCK_SIZE MI_NDMA_BWORD_16 - // #define CAMERA_DMA_INTERVAL 2 - // #define CAMERA_DMA_PRESCALER MI_NDMA_INTERVAL_PS_1 - // ‚Æ‚ ‚é‚Ì‚ÅA16ƒ[ƒh’PˆÊ‚Ì•ªŠ„“]‘—‚ɂȂÁ‚Ä‚¢‚é‚Ì‚©‚ÈB - // ‚¤‚ñA‚È‚Á‚Ä‚éBƒvƒŠƒXƒP[ƒ‰=1”{(sysclk)AƒCƒ“ƒ^[ƒoƒ‹=2 - // “Á‚Ɉ«‚¢Ý’è‚Æ‚ÍŽv‚¦‚È‚¢‚ªAƒ‰ƒCƒ“ƒoƒbƒtƒ@‚ªƒI[ƒo[ƒtƒ[‚·‚é‚Ì‚©‚Èc - // ‚µ‚©‚àƒXƒg[ƒ‹‚ª’·‚¢‚Ì‚ÍAƒJƒƒ‰NDMA‚Ì‚¹‚¢‚Å‚à‚È‚³‚»‚¤‚¾‚µB - - - -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3,r4-r11,lr - -#define t0 r6 -#define t1 r7 -#define tm0l_addr r11 -#define vcount_addr lr - -#define tm0 r4 -#define vcount r5 - -#define COUNT_MAX 8 - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldr tm0l_addr, =REG_TM0CNT_L_ADDR - ldr vcount_addr, =REG_VCOUNT_ADDR - mov pixels, #COUNT_MAX // Å‚Œv‘ªŒÂ” - -// VCOUNT’l‚Í0xc4‚Æ‚©0x60‚Æ‚©‚Ȃ̂ÅAŒJ‚èオ‚è‚Í”ñ‘ΉžB - ldrh vcount, [vcount_addr] - add vcount, vcount, #0x30 - mov vcount, #192 -@10: - ldrsh tm0, [tm0l_addr] -@20: - ldrsh t0, [tm0l_addr] - sub t1, t0, tm0 - movs t0, t1, lsr #1 - beq @50 - - strh t1, [dst], #2 - subs pixels, pixels, #1 - beq @150 - -@50: - ldrh t0, [vcount_addr] - cmp t0, vcount - blt @10 - b @100 - -@100: - mov t1, pixels - mov t0, #0 -@110: - strh t0, [dst], #2 - subs t1, t1, #1 - bne @110 - -@150: - rsb r0, pixels, #COUNT_MAX - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr -#undef SAVE_REGS -#undef t0 -#undef t1 -#undef tm0l_addr -#undef vcount_addr -#undef tm0 -#undef vcount -#undef COUNT_MAX -} -#elif 1 -// dstƒ_ƒ~[ƒtƒFƒbƒ`–³‚µ -// dst‚ÍMAIN‚ł͂Ȃ¢(VRAM)‚Æ‘z’肵‚Ä‚¢‚é‚Ì‚ÅADTCM”ñŽg—pB -// 666‚¶‚á‚È‚­‚Ä’P‚È‚é555B -// little endian only -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ - -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3,r4-r11,lr -#define t0 r3 -#define t1 r12 -#define y0 r9 -#define y1 r10 -#define uv r11 -#define rgba lr - -#define CONST_REGS r4-r8 -#define const_0x80008000 r4 -#define const_0xff00ff00 r5 -#define const_0x7f800000 r6 -#define const_H1_402_L1_772 r7 -#define const_Hm0_344_Lm0_714 r8 - - // omit odd and zero - eor t0, pixels, #1 - movs t0, t0, lsr #1 - bxls lr // LS: C clear or Z set - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldr t0, =@constants - ldmia t0, {CONST_REGS} - - ldr t0, [src], #4 -@10: - and uv, t0, const_0xff00ff00 - eor uv, uv, const_0x80008000 - and y0, const_0x7f800000, t0, lsl #23 // 0x000000ff -> 0x7f800000 - and y1, const_0x7f800000, t0, lsl #23-16 // 0x00ff0000 -> 0x7f800000 - - // Green - // -0.344*(U-128) - smultb t0, const_Hm0_344_Lm0_714, uv - // -0.714*(V-128) - smulbt t1, const_Hm0_344_Lm0_714, uv - mov rgba, const_0x80008000 - add t1, t0, t1 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #21 // 0x7c000000 -> 0x000003e0 - ands t0, t1, #0xfc000000 - - // Red - // 1.402*(V-128) - smultt t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #21-16 // 0x7c000000 -> 0x03e00000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26 // 0x7c000000 -> 0x0000001f - ands t0, t1, #0xfc000000 - - // Blue - // 1.772*(U-128) - smulbb t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #26-16 // 0x7c000000 -> 0x001f0000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #16 // 0x7c000000 -> 0x00007c00 - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0 // 0x7c000000 - - str rgba, [dst], #4 - subs pixels, pixels, #2 - ldrne t0, [src], #4 - bne @10 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -@constants: - dcd 0x80008000 - dcd 0xff00ff00 - dcd 0x7f800000 - dcd 0x59ba7168 // ((1.402 * 0x4000) << 16) | ((1.772 * 0x4000) & 0xffff) - dcd 0xe9fcd24e // ((-0.344 * 0x4000) << 16) | ((-0.714 * 0x4000) & 0xffff) - -#undef SAVE_REGS -#undef t0 -#undef t1 -#undef y0 -#undef y1 -#undef uv -#undef rgba -#undef CONST_REGS -#undef const_0x80008000 -#undef const_0xff00ff00 -#undef const_0x7f800000 -#undef const_H1_402_L1_772 -#undef const_Hm0_344_Lm0_714 -} - -#elif 0 -// dstƒ_ƒ~[ƒtƒFƒbƒ`‚ ‚èc‚ß‚¿‚á’x‚­‚È‚éBŽc”OB -// little endian only -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ - -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3,r4-r11,lr -#define t0 r3 -#define t1 r12 -#define y0 r9 -#define y1 r10 -#define uv r11 -#define rgba lr - -#define CONST_REGS r4-r8 -#define const_0x80008000 r4 -#define const_0xff00ff00 r5 -#define const_0x7f800000 r6 -#define const_H1_402_L1_772 r7 -#define const_Hm0_344_Lm0_714 r8 - - // omit odd and zero - eor t0, pixels, #1 - movs t0, t0, lsr #1 - bxls lr // LS: C clear or Z set - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldr t0, =@constants - ldmia t0, {CONST_REGS} - - ldr t0, [src], #4 -@10: - and uv, t0, const_0xff00ff00 - eor uv, uv, const_0x80008000 - and y0, const_0x7f800000, t0, lsl #23 // 0x000000ff -> 0x7f800000 - and y1, const_0x7f800000, t0, lsl #23-16 // 0x00ff0000 -> 0x7f800000 - - // dst dummy-fetch - ldr rgba, [dst] - - // Green - // -0.344*(U-128) - smultb t0, const_Hm0_344_Lm0_714, uv - // -0.714*(V-128) - smulbt t1, const_Hm0_344_Lm0_714, uv - mov rgba, const_0x80008000 - add t1, t0, t1 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #21 // 0x7c000000 -> 0x000003e0 - ands t0, t1, #0xfc000000 - - // Red - // 1.402*(V-128) - smultt t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #21-16 // 0x7c000000 -> 0x03e00000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26 // 0x7c000000 -> 0x0000001f - ands t0, t1, #0xfc000000 - - // Blue - // 1.772*(U-128) - smulbb t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #26-16 // 0x7c000000 -> 0x001f0000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #16 // 0x7c000000 -> 0x00007c00 - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0 // 0x7c000000 - - str rgba, [dst], #4 - subs pixels, pixels, #2 - ldrne t0, [src], #4 - bne @10 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -@constants: - dcd 0x80008000 - dcd 0xff00ff00 - dcd 0x7f800000 - dcd 0x59ba7168 // ((1.402 * 0x4000) << 16) | ((1.772 * 0x4000) & 0xffff) - dcd 0xe9fcd24e // ((-0.344 * 0x4000) << 16) | ((-0.714 * 0x4000) & 0xffff) - -#undef SAVE_REGS -#undef t0 -#undef t1 -#undef y0 -#undef y1 -#undef uv -#undef rgba -#undef CONST_REGS -#undef const_0x80008000 -#undef const_0xff00ff00 -#undef const_0x7f800000 -#undef const_H1_402_L1_772 -#undef const_Hm0_344_Lm0_714 -} - -#elif 0 -// little endian only -// Ŭ’lAÅ‘å’l‚𒲂ׂéB -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ -#define SAVE_REGS0 src,dst,pixels -#define SAVE_REGS1 r4-r11,lr -#define t0 r3 -#define minVal r4 -#define maxVal r5 - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS0, SAVE_REGS1} - - mvn minVal, #0x80000000 - mov maxVal, #0x80000000 - -@10: - ldrb t0, [src], #4 - ldrb t0, [src, #1-4] - cmp minVal, t0 - movgt minVal, t0 - cmp maxVal, t0 - movlt maxVal, t0 - -#if 0 - cmp minVal, t0 - movgt minVal, t0 - cmp maxVal, t0 - movlt maxVal, t0 - ldrb t0, [src, #2-4] - cmp minVal, t0 - movgt minVal, t0 - cmp maxVal, t0 - movlt maxVal, t0 -#endif - - subs pixels, pixels, #2 - bne @10 - - mov minVal, minVal, lsl #16 - mov maxVal, maxVal, lsl #16 - orr t0, maxVal, minVal, lsr #16 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS0, SAVE_REGS1} - mov r0, t0 - bx lr - -#undef SAVE_REGS0 -#undef SAVE_REGS1 -#undef t0 -#undef minVal -#undef maxVal -} - -#else -// little endian only -// ƒxƒ^‚Éì‚Á‚½‚炱‚¤‚È‚éBC‚ƕςí‚ç‚ñB -static asm u32 CpuYuv2Rgb666( register const void* src, register void* dst, register u32 pixels ) -{ -// registers -// keep stack frame 8-Bytes aligned -#define SAVE_REGS0 src,dst,pixels -#define SAVE_REGS1 r4-r11,lr -#define t0 r3 -#define rgba r12 -#define u src -#define v dst -#define y0 r11 -#define y1 lr - -#define tablep r9 -#define data0 r10 -#define data1 pixels - -#define CONST_REGS r4-r8 -#define const_0x80008000 r4 -#define const_minus_0_344 r5 -#define const_minus_0_714 r6 -#define const_1_402 r7 -#define const_1_772 r8 - - cmp pixels, #2 - bxlt lr - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS0, SAVE_REGS1} - - ldr t0, =@constants - ldmia t0, {CONST_REGS} - - ldr tablep, =@table - -@10: - ldrb y0, [src], #4 - ldrb t0, [src, #1-4] - ldrb y1, [src, #2-4] - ldrb rgba, [src, #3-4] - // do not update sp here! keep 8-Bytes aligned - stmia sp, {SAVE_REGS0} - sub u, t0, #0x80 - sub v, rgba, #0x80 - - // Green - // -0.344*(U-128) - mul t0, const_minus_0_344, u - // -0.714*(V-128) - mul rgba, const_minus_0_714, v - mov t0, t0, asr #23 - add t0, t0, rgba, asr #23 - // +Y - adds rgba, t0, y0 - movmi rgba, #0 - cmp rgba, #0xff - movgt rgba, #0xff - ldrb data1, [tablep, rgba, lsr #2] - and rgba, rgba, #0xf8 - mov rgba, rgba, lsl #2 - adds t0, t0, y1 - movmi t0, #0 - cmp t0, #0xff - movgt t0, #0xff - ldrb data0, [tablep, t0, lsr #2] - and t0, t0, #0xf8 - orr rgba, rgba, t0, lsl #16+2 - mov data1, data1, lsl #5 - orr data0, data1, data0, lsl #16+5 - - // Red - // 1.402*(V-128) - mul t0, const_1_402, v - mov t0, t0, asr #23 - // +Y - // now v is free - adds v, t0, y0 - movmi v, #0 - cmp v, #0xff - movgt v, #0xff - ldrb data1, [tablep, v, lsr #2] - orr rgba, rgba, v, lsr #3 - adds t0, t0, y1 - movmi t0, #0 - cmp t0, #0xff - movgt t0, #0xff - ldrb v, [tablep, t0, lsr #2] - and t0, t0, #0xf8 - orr rgba, rgba, t0, lsl #16-3 - orr data0, data0, data1 - orr data0, data0, v, lsl #16 - - // Blue - // 1.772*(U-128) - mul t0, const_1_772, u - mov t0, t0, asr #23 - // +Y - // now u,v is free - adds v, t0, y0 - movmi v, #0 - cmp v, #0xff - movgt v, #0xff - ldrb data1, [tablep, v, lsr #2] - and v, v, #0xf8 - orr rgba, rgba, v, lsl #7 - adds t0, t0, y1 - movmi t0, #0 - cmp t0, #0xff - movgt t0, #0xff - and t0, t0, #0xf8 - ldrb v, [tablep, t0, lsr #2] - orr rgba, rgba, t0, lsl #16+7 - orr data0, data0, data1, lsl #10 - orr data0, data0, v, lsl #16+10 - - // do not update sp here! keep 8-Bytes aligned - ldmia sp, {SAVE_REGS0} - orr data0, data0, const_0x80008000 - str data0, [dst, const_0x80008000, lsl #1] - orr rgba, rgba, const_0x80008000 - str rgba, [dst], #4 - subs pixels, pixels, #2 - bne @10 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS0, SAVE_REGS1} - bx lr - -@table: - dcd 0x01000800 - dcd 0x03000200 - dcd 0x05000400 - dcd 0x07000600 - dcd 0x09010801 - dcd 0x0b030a02 - dcd 0x0d050c04 - dcd 0x0f070e06 - dcd 0x11091008 - dcd 0x130b120a - dcd 0x150d140c - dcd 0x170f160e - dcd 0x19111810 - dcd 0x1b131a12 - dcd 0x1d151c14 - dcd 0x1f171e16 - -@constants: -/* const_0x80008000 r4 */ dcd 0x80008000 -/* const_minus_0_344 r5 */ dcd (-2885681) -/* const_minus_0_714 r6 */ dcd (-5989466) -/* const_1_402 r7 */ dcd 11760828 -/* const_1_772 r8 */ dcd 14864613 - - -// OSTick begin; -// u8* yuyv = (u8*)src; -// u32* rgb = (u32*)dest; -// -// u32 limit = pixels >> 1; -// u32 i; -// -// begin = OS_GetTick(); -// -// for (i = 0; i < limit; i++) -// { -// u8 y1 = *yuyv++; -// u8 u = *yuyv++; -// u8 y2 = *yuyv++; -// u8 v = *yuyv++; -// *rgb++ = (u32)( 0x80008000 | -// ( ( trim( y2 + b_diff( u ) ) & 0xF8 ) << 23) | -// ( ( trim( y2 + g_diff( u, v ) ) & 0xF8 ) << 18) | -// ( ( trim( y2 + r_diff( v ) ) & 0xF8 ) << 13) | -// ( ( trim( y1 + b_diff( u ) ) & 0xF8 ) << 7) | -// ( ( trim( y1 + g_diff( u, v ) ) & 0xF8 ) << 2) | -// ( ( trim( y1 + r_diff( v ) ) ) >> 3) ); -// } -// -// OS_Printf("total(666) = %d us\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - begin)); -// -// return pixels * sizeof(RGBX16); - -#undef SAVE_REGS0 -#undef SAVE_REGS1 -#undef t0 -#undef rgba -#undef u -#undef v -#undef y0 -#undef y1 - -#undef tablep -#undef data0 -#undef data1 - -#undef CONST_REGS -#undef const_0x80008000 -#undef const_minus_0_344 -#undef const_minus_0_714 -#undef const_1_402 -#undef const_1_772 -} -#endif - - -static void drawTexture(u8* vramAddr, BOOL shot) -{ -#pragma unused(vramAddr) -#pragma unused(shot) - s32 x0, y0; - s32 x1, y1; - s32 s0, s1; - s32 t0, t1; - - x0 = cPictureOffsetX; - x1 = cPictureOffsetX + cPictureWidth; - y0 = cPictureOffsetY; - y1 = cPictureOffsetY + cPictureHeight; - - s0 = 0; - s1 = cPictureWidth; - t0 = 0; - t1 = cPictureHeight; - - G3X_Reset(); - - // Ortho matrix - { - G3_Ortho(0, - -GX_LCD_SIZE_Y, - 0, - GX_LCD_SIZE_X, - 0 * FX32_ONE, - 2 * FX32_ONE, - NULL); - G3_StoreMtx(0); - } - - { - G3_MtxMode(GX_MTXMODE_TEXTURE); - G3_Identity(); - // Use an identity matrix for the texture matrix for simplicity - G3_MtxMode(GX_MTXMODE_POSITION_VECTOR); - } - - //--------------------------------------------------------------------------- - // Set up a camera matrix - //--------------------------------------------------------------------------- - { - VecFx32 Eye = { 0, 0, FX32_ONE }; // Eye position - VecFx32 at = { 0, 0, 0 }; // Viewpoint - VecFx32 vUp = { 0, FX32_ONE, 0 }; // Up - - G3_LookAt(&Eye, &vUp, &at, NULL); - } - -#if 0 - GX_BeginLoadTex(); // map the texture image slots onto LCDC address space - { - GX_LoadTex((void *)&grad0[0], - myTexGrad0Addr, - 256 * sizeof(u16) - ); - GX_LoadTex((void *)&grad1[0], - myTexGrad1Addr, - 256 * sizeof(u16) - ); - - } - GX_EndLoadTex(); // restore the texture image slots -#endif - - G3_PolygonAttr(GX_LIGHTMASK_NONE, // Light #0 is on - GX_POLYGONMODE_DECAL, // modulation mode - GX_CULL_BACK, // cull none - 1, // polygon ID(0 - 63) - 30, // alpha(0 - 31) - GX_POLYGON_ATTR_MISC_XLU_DEPTH_UPDATE // OR of GXPolygonAttrMisc's value - ); - G3_TexImageParam(GX_TEXFMT_DIRECT, - GX_TEXGEN_TEXCOORD, // use texcoord - GX_TEXSIZE_S256, - GX_TEXSIZE_T256, - GX_TEXREPEAT_NONE, // no repeat - GX_TEXFLIP_NONE, // no flip - GX_TEXPLTTCOLOR0_USE, // use color 0 of the palette - 0x00000 // the offset of the texture image - ); - G3_Begin(GX_BEGIN_QUADS); - { - G3_TexCoord(s1 << FX32_SHIFT, t1 << FX32_SHIFT); - G3_Vtx((s16)x1, (s16)(-y1), 0); - G3_TexCoord(s1 << FX32_SHIFT, t0 << FX32_SHIFT); - G3_Vtx((s16)x1, (s16)(-y0), 0); - G3_TexCoord(s0 << FX32_SHIFT, t0 << FX32_SHIFT); - G3_Vtx((s16)x0, (s16)(-y0), 0); - G3_TexCoord(s0 << FX32_SHIFT, t1 << FX32_SHIFT); - G3_Vtx((s16)x0, (s16)(-y1), 0); - } - G3_End(); - -// G3_PolygonAttr(GX_LIGHTMASK_NONE, // Light #0 is on -// GX_POLYGONMODE_DECAL, // modulation mode -// GX_CULL_BACK, // cull none -// 2, // polygon ID(0 - 63) -// 1, // alpha(0 - 31) -// GX_POLYGON_ATTR_MISC_DEPTHTEST_DECAL // OR of GXPolygonAttrMisc's value -// ); -// G3_TexImageParam(GX_TEXFMT_DIRECT, -// GX_TEXGEN_TEXCOORD, // use texcoord -// GX_TEXSIZE_S256, -// GX_TEXSIZE_T256, -// GX_TEXREPEAT_NONE, // no repeat -// GX_TEXFLIP_NONE, // no flip -// GX_TEXPLTTCOLOR0_USE, // use color 0 of the palette -// 0x10000 // the offset of the texture image -// ); -// G3_Begin(GX_BEGIN_QUADS); -// { -// G3_TexCoord(256 * FX32_ONE, (HEIGHT/2) * FX32_ONE); -// G3_Vtx((s16)x1, (s16)y1, 0); -// G3_TexCoord(256 * FX32_ONE, 0 * FX32_ONE); -// G3_Vtx((s16)x1, (s16)y0, 0); -// G3_TexCoord(0 * FX32_ONE, 0 * FX32_ONE); -// G3_Vtx((s16)x0, (s16)y0, 0); -// G3_TexCoord(0 * FX32_ONE, (HEIGHT/2) * FX32_ONE); -// G3_Vtx((s16)x0, (s16)y1, 0); -// } -// G3_End(); - - { - OSIntrMode enabled = OS_DisableInterrupts(); - - // swapping the polygon list RAM, the vertex RAM, etc. - G3_SwapBuffers(GX_SORTMODE_MANUAL, GX_BUFFERMODE_Z); - mpCmrMgr2->setTexSwap(); - - OS_RestoreInterrupts(enabled); - } - - DrawFPS(); -} - -static void dumpWramBanks(u32 line) -{ - u32 i; - - OS_TPrintf("line %d: WramB=", line); - for (i = 0; i < 8; i++) { - OS_TPrintf(" %d", MI_GetWramBankEnable_B((s32)i)); - } - OS_TPrintf(", WramC="); - for (i = 0; i < 8; i++) { - OS_TPrintf(" %d", MI_GetWramBankEnable_C((s32)i)); - } - OS_TPrintf("\n"); -} - -#if SDK_VERSION_DATE < 20080624 -static void proc_camera_intr_() { -#else -static void cameraVsyncCallback(CAMERAResult result) { -#pragma unused( result ) -#endif -#if 1 - // Ž©‰Æ»‚̂݌ĂÔB - mpCmrMgr2->procCameraIntr(); -#else - MenuSys()->procCameraIntr(); -#endif - - OS_SetIrqCheckFlag( OS_IE_CAMERA ); -} - -/*---------------------------------------------------------------------------* - Name: TwlMain - - Description: main - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void TwlMain() -{ -// CAMERAResult result; - -#ifdef TWL_IPL_USE_RED_IPL - HOTSW_Init(); -#endif - - // ‰Šú‰» - // in new.cpp: TwlStartUp() - - MenuIrqHandlerStart(logBuf, sizeof(logBuf)); - - // DEMOInitCommon(), DEMOInitVRAM(), DEMOInitDisplay3D()‚ðŒÄ‚΂Ȃ¢ - FX_Init(); - G3X_Init(); // initialize the 3D graphics states - G3X_InitMtxStack(); // initialize the matrix stack - - // GX‚ÅDMA‚ðŽg‚í‚È‚¢ (‹ŒDMA‚̓Jƒƒ‰DMA‚̎ז‚‚ɂȂé) - GX_SetDefaultDMA(GX_DMA_NOT_USE); - - // VRAMƒNƒŠƒA - GX_SetBankForLCDC(GX_VRAM_LCDC_A); - GX_SetBankForLCDC(GX_VRAM_LCDC_B); - MI_CpuClearFast((void*)HW_LCDC_VRAM_A, 128 * 1024); - MI_CpuClearFast((void*)HW_LCDC_VRAM_B, 128 * 1024); - - GX_SetBankForLCDC(GX_VRAM_LCDC_C); - GX_SetBankForLCDC(GX_VRAM_LCDC_D); - MI_CpuClearFast((void*)HW_LCDC_VRAM_C, HW_VRAM_C_SIZE); - MI_CpuClearFast((void*)HW_LCDC_VRAM_D, HW_VRAM_D_SIZE); -// GX_SetBankForTex(GX_VRAM_TEX_0_C); - - - // ƒ_ƒCƒŒƒNƒgƒrƒbƒgƒ}ƒbƒv•\ަƒ‚[ƒh••¶Žš•\ަ - GX_SetBankForBG(GX_VRAM_BG_256_AB); // VRAM-A,Bƒoƒ“ƒN‚ð‚a‚f‚ÉŠ„‚è“–‚é - GX_SetGraphicsMode(GX_DISPMODE_GRAPHICS, GX_BGMODE_4, GX_BG0_AS_3D); - - G2_SetBG0Priority(2); - G3X_AntiAlias(TRUE); // enable antialias(without additional computing costs) - G3X_AlphaBlend(TRUE); // enable alpha blending - //--------------------------------------------------------------------------- - // After you start the geometry engine and the rendering one - // (by GX_SetPower etc.), G3_SwapBuffers must be called once before use - //--------------------------------------------------------------------------- - G3_SwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_Z); - G3X_SetClearColor(GX_RGB(0, 0, 0), // clear color - 0, // clear alpha - 0x7fff, // clear depth - 63, // clear polygon ID - FALSE); // fog - G3_ViewPort(0, 0, 255, 191); // Viewport - - GX_SetVisiblePlane(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_BG3); - - G2_SetBG1Control(GX_BG_SCRSIZE_TEXT_256x256, GX_BG_COLORMODE_16, - GX_BG_SCRBASE_0x0000, GX_BG_CHARBASE_0x04000, GX_BG_EXTPLTT_01); - G2_SetBG1Priority(1); - G2_BG1Mosaic(FALSE); - - G2_SetBG3ControlDCBmp(GX_BG_SCRSIZE_DCBMP_256x256, GX_BG_AREAOVER_XLU, GX_BG_BMPSCRBASE_0x20000); - G2_SetBG3Priority(3); - G2_BG3Mosaic(FALSE); - - // •¶Žš‚̓ǂݞ‚Ý - { - static const GXRgb pal[16] = { GX_RGB(0, 0, 0), GX_RGB(31, 31, 31), }; - GX_LoadBG1Char(DEMOAsciiChr, 0x00000, sizeof(DEMOAsciiChr)); - GX_LoadBGPltt(pal, 0x0000, sizeof(pal)); - } -// we = TRUE; -// re = FALSE; -// wp = 0; -// rp = 1; -// tp = 0; -// wp_pending = TRUE; - -// MakeGrad(); - - // VBlankŠ„‚èž‚Ý‚ð‹–‰Â‚·‚邿‚è‘O‚ɃJƒƒ‰ƒ}ƒl[ƒWƒƒ‚𶬂µ‚Ä‚¨‚­B -// #if 0 -// pDtcm = OS_AllocFromArenaLo(OS_ARENA_DTCM, 256*4*sizeof(u32), HW_CACHE_LINE_SIZE); -// #else -// pDtcm = (u32 *)myArena; -// #endif - OS_TPrintf("sDtcmWork=0x%x\n", &sDtcmWork); - OS_DumpArenaInfo(OS_ARENA_DTCM, TRUE); - -#if SDK_VERSION_DATE < 20080624 - OS_SetIrqFunction( OS_IE_CAMERA , proc_camera_intr_ ); -#else - // CAMERAƒ‰ƒCƒuƒ‰ƒŠ‚©‚ç‚̃R[ƒ‹ƒoƒbƒN‚É•ÏX‚³‚ê‚Ü‚µ‚½B -// OS_SetIrqFunction(OS_IE_CAMERA, proc_camera_intr_); - CAMERA_SetVsyncCallback(cameraVsyncCallback); -#endif - - // new()‚Á‚ÄŽg‚¦‚È‚¢‚æ‚Ëcnew.cpp’ljÁ‚ÅŽg‚¦‚½I - mpCmrMgr2 = new cmn::sys::cmr2::Manager(); - -#if 0 - // old - - // Š„‚èž‚Ý‚ð‹–‰Â‚µ‚Ä‚¨‚©‚È‚¢‚ƃ_ƒH - mpCmrMgr2->init(cmn::sys::cmr2::eMode_Tex, current, - /*GX_VRAM_A, GX_VRAM_B,*/GX_VRAM_C, GX_VRAM_D, &sDtcmWork, drawTexture); - mpCmrMgr2->activate(); - - mpCmrMgr2->setShutterSnd(_binary_camera_shutter_dat, - (u32)(_binary_camera_shutter_dat_end - _binary_camera_shutter_dat), - TRUE); -#endif - - mpCmrMgr2->preInit(); -// mpCmrMgr2->setCaptureRgbFlag(TRUE); - -// // stereo -// mpCmrMgr2->setShutterSnd(_binary_camera_shutter_dat, -// (u32)(_binary_camera_shutter_dat_end - _binary_camera_shutter_dat), -// TRUE); - -// // mono -// mpCmrMgr2->setShutterSnd(_binary_camera_shutter_MONO_dat, -// (u32)(_binary_camera_shutter_MONO_dat_end - _binary_camera_shutter_MONO_dat), -// FALSE); - - if (1) { -// mpCmrMgr2->setOneShotFlag(TRUE); - } - - - - - // Vƒuƒ‰ƒ“ƒNŠ„‚èž‚ÝÝ’è - OS_SetIrqFunction(OS_IE_V_BLANK, VBlankIntr); - (void)OS_EnableIrqMask(OS_IE_V_BLANK); - (void)OS_EnableIrq(); - (void)GX_VBlankIntr(TRUE); - (void)OS_EnableInterrupts(); - - // SD‰Šú‰» - FS_Init( FS_DMA_NOT_USE ); - -#if 1 - // demos.TWL/snd/extraFunc - /* ƒTƒEƒ“ƒh‰Šú‰» */ - SND_Init(); - SND_AssignWaveArc((SNDBankData*)sound_bank_data, 0, (SNDWaveArc*)sound_wave_data); - SND_StartSeq(0, sound_seq_data, 0, (SNDBankData*)sound_bank_data); -#endif - - /* ƒTƒEƒ“ƒhŠg’£‹@”\‰Šú‰» */ - SNDEX_Init(); - - OS_WaitIrq(TRUE, OS_IE_V_BLANK); - GX_DispOn(); - -// OS_TPrintf("sizeof testEncodeWork=%d\n", sizeof(cmn::sys::cmr2::Manager::testEncodeWork)); -// OS_TPrintf("ticks/1000usec = %lld\n", (u64)OS_MicroSecondsToTicks(1000)); -// -// { -// OSTick tick; -// BOOL flag = FALSE; -// -// tick = OS_GetTick(); -// mpCmrMgr2->preInit(); -// -// // 1•b‚ ‚ê‚ÎpreInit‚ÍI‚í‚邯‚µ‚Ä -// OS_Sleep(1000); -// -// tick = OS_GetTick(); -// // –{init‚É‚©‚©‚鎞ŠÔ‚ÍH -// mpCmrMgr2->init(cmn::sys::cmr2::eMode_Tex, current, GX_VRAM_C, GX_VRAM_D, &sDtcmWork, drawTexture); -// -// while (1) { -// OS_Sleep(5000); -// if (!flag) { -// flag = TRUE; -// OS_TPrintf("main loop ok, tick before init=%lld\n", (u64)tick); -// } -// } -// } - - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - MI_FreeWram_B ( MI_WRAM_ARM9 ); - MI_CancelWram_B( MI_WRAM_ARM9 ); - MI_FreeWram_C ( MI_WRAM_ARM9 ); - MI_CancelWram_C( MI_WRAM_ARM9 ); - - // for DSP_PlaySound() ? - // DSP_InitPipe(); - /* ƒvƒƒOƒ‰ƒ€‚ð‹N“®‚·‚é */ -#if 1 - // JPEG DEC‚Æ•¹—p‚Å‚«‚È‚¢I - FSFile file[1]; - DSP_OpenStaticComponentJpegEncoder(file); - if(!DSP_LoadJpegEncoder(file, 0xff, 0xff)) - { - // WramB= 1 1 1 0 0 0 0 0, WramC= 1 1 1 1 0 0 0 0 - OS_TPanic("failed to load JpegEncoder DSP-component! (lack of WRAM-B/C)"); - } -#endif - dumpWramBanks(__LINE__); -#if 0 - // JPEG ENC‚Æ•¹—p‚Å‚«‚È‚¢I - if(!DSP_LoadJpegDecoder()) - { - // WramB= 1 1 0 0 0 0 0 0, WramC= 1 1 1 1 0 0 0 0 - OS_TPanic("failed to load JpegDecoder DSP-component! (lack of WRAM-B/C)"); - } - dumpWramBanks(__LINE__); -#endif -#if 0 - // JPEG‚Æ•¹—p‚Å‚«‚È‚¢I - if (!DSP_LoadShutter()) { - // WramB= 1 0 0 0 0 0 0 0, WramC= 1 0 1 1 0 0 0 0 - OS_TPanic("failed to load Shutter DSP-component! (lack of WRAM-B/C)"); - } -#endif -#else - dumpWramBanks(__LINE__); -#endif - - - - OS_WaitVBlankIntr(); - - while (1) - { - u16 pad; - u16 trg; - static u16 old = 0xffff; - static BOOL refresh = FALSE; - -// static const u32 myTexGrad0Addr = 0x2000; -// static const u32 myTexGrad1Addr = 0x3000; - - - /* ƒTƒEƒ“ƒhƒƒCƒ“ˆ— */ - while (SND_RecvCommandReply(SND_COMMAND_NOBLOCK) != NULL) - { - } - (void)SND_FlushCommand(SND_COMMAND_NOBLOCK); - -#if 1 -// // more than 1 frame -// OS_WaitIrq(TRUE, OS_IE_V_BLANK); - OS_WaitVBlankIntr(); -#else - // keep AHB busy - OS_ClearIrqCheckFlag(OS_IE_V_BLANK); - while (!(OS_GetIrqCheckFlag() & OS_IE_V_BLANK)) { - u32 wordIdx; - wordIdx = (wordIdx + 0x11) & 0x1fff; - gWords[wordIdx]++; - } -#endif - GX_LoadBG1Scr(text_buffer, 0, sizeof(text_buffer)); - - - pad = PAD_Read(); - trg = (u16)(pad & ~old); - old = pad; - - { - static BOOL initialized; - static BOOL destroying; - - if (!initialized && (trg || 1)) { - initialized = TRUE; - mpCmrMgr2->init(cmn::sys::cmr2::eMode_Tex, current, GX_VRAM_C, GX_VRAM_D, &sDtcmWork, drawTexture); - - mpCmrMgr2->startCapture(current); - } - - if (!destroying) { - if (trg & PAD_BUTTON_START) { - destroying = TRUE; - } - } else { - if (!mpCmrMgr2->tryDestroy()) { - IPL_PRINT("waiting for destroy...\n"); - } else { - IPL_PRINT("destroy done!\n"); - destroying = FALSE; - initialized = FALSE; - } - } - if (!initialized || destroying) { - // ‚±‚ÌŒã‚̃{ƒ^ƒ“ƒ`ƒFƒbƒN(ŽB‰e‚âƒJƒƒ‰Ø‚è‘Ö‚¦“™)‚ðs‚í‚È‚¢B - continue; - } - } - - - - if (PAD_DetectFold()) { - // ƒLƒƒƒvƒ`ƒƒ‚ð’âŽ~‚µ‚ÄA’âŽ~‚ðŠm”F‚µ‚Ä‚©‚ç - // ƒXƒŠ[ƒvƒ‚[ƒh‚ÖˆÚs‚·‚邿‚¤‚É‚µ‚È‚¢‚ÆA - // cameraIntr: status error - // cameraIntr: status error - // ‚ÆA2‰ñƒGƒ‰[‚É‚È‚é‚æ‚¤‚¾B - - if (mpCmrMgr2->tryPrepareToSleep()) { - PM_GoSleepMode(PM_TRIGGER_COVER_OPEN, PM_PAD_LOGIC_AND, 0); - } else { - IPL_PRINT("waiting for ready to sleep...\n"); - } - } - -// if (trg & PAD_BUTTON_B) { -// // test -// OS_TPrintf("force stop dma\n"); -// MI_StopNDma(CAMERA_NEW_DMA_NO); -// } -// if (trg & PAD_BUTTON_Y) { -// // test -// OS_TPrintf("force long dma\n"); -// sLongDmaFlag = TRUE; -// } - - if (!mpCmrMgr2->isCameraChanging()) { - if (trg & PAD_BUTTON_X) { - mpCmrMgr2->changeCamera(); - } else if (pad & PAD_BUTTON_SELECT) { - static u8 r; - - r += 1; - if (!(r & 3)) { - mpCmrMgr2->changeCamera(); - } - } - } - - - if (trg & (PAD_BUTTON_A | PAD_BUTTON_B)) { -#ifndef TWL_IPL_FINAL - mpCmrMgr2->mDebugPort = __LINE__; -#endif -// SNDEX_SetDSPMixRate( 0 ); -// SNDEX_ForceOut( TRUE ); -// -// if (trg & PAD_BUTTON_A) { -// DSP_PlaySound(const_cast(_binary_camera_shutter_dat), -// (u32)(_binary_camera_shutter_dat_end - _binary_camera_shutter_dat) / 2, -// TRUE); -// } else { -// DSP_PlaySound(const_cast(_binary_wheel_dat), -// (u32)(_binary_wheel_dat_end - _binary_wheel_dat) / 2, -// TRUE); -// } - -// #if 0 -// // test -// CAMERA_SetLED(TRUE); -// #endif - - - IPL_PRINT("shoot()=%d\n", mpCmrMgr2->shoot()); - } - - -// if (re) { -// OSTick begin = OS_GetTick(); -// // ¡‚Íy•ûŒü‚ÌŠÔˆø‚«‚ªo—ˆ‚È‚¢‚Ì‚ÅA480 lines‚¶‚á‚È‚­‚Ä156*3 lines‚Æ‚µ‚Ä‚¢‚éB -// // ‚¿‚å‚Á‚Æ‚±‚̂ւñ“K“–B -// rp = (u8)(wp ^ 1); -// Shrink640to208(buffer[rp ? 0 : 1], 156*3/*480*/, pDtcm, (u16*)(rp ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C) /*buffer[2]*/); -// we = TRUE; -// // CpuYuv2Rgb666(buffer[2], (u16*)(wp ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 1); -// OS_Printf("total(exp) = %d us\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - begin)); -// DrawFPS(); -// } - -// -// if (refresh) { -// // GX_LoadBG3Scr( buffer[rp], 0, BYTES_PER_LINE * HEIGHT); -// GX_DisableBankForTex(); -// GX_SetBankForTex(rp ? GX_VRAM_TEX_0_D : GX_VRAM_TEX_0_C); -// GX_SetBankForLCDC(rp ? GX_VRAM_LCDC_C : GX_VRAM_LCDC_D); -// refresh = FALSE; -// } -// -// if (!we && !sNowConvert) -// { -// // •ςȂ±‚ƂɂȂ肻‚¤‚¾‚ª‚Ƃ肠‚¦‚¸“®‚©‚·B -// // CPU‚É‚æ‚éYUV->RGB•ÏŠ·ŽÀs -// // DC_InvalidateRange( buffer[wp], BYTES_PER_LINE * HEIGHT); -// DC_FlushAll(); -// -// // RGB666ŽÀŒ±‚͈ê’U••ˆóB -// // if (mode || 1) { -// // OSTick begin = OS_GetTick(); -// // u32 ret; -// // // ƒeƒNƒXƒ`ƒƒƒCƒ[ƒWƒXƒƒbƒg‚Ì”¼•ªA‚Â‚Ü‚è‰æ–Ê‚Ì㔼•ª‚µ‚©‘‚¯‚È‚¢B -// // GX_SetBankForLCDC((wp) ? GX_VRAM_LCDC_D : GX_VRAM_LCDC_C); -// // #if 1 -// // ret = CpuYuv2Rgb666(buffer[wp], (void *)((wp) ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// // // OS_Printf("total(666) = %d us, ret=0x%08x\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - begin), ret); -// // #else -// // ret = CpuYuv2Rgb666(buffer[wp], buffer[wp] + (WIDTH*HEIGHT) / 2, (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// // OS_Printf("%04x %04x %04x %04x %04x %04x %04x %04x ret=%08x\n", -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 0], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 1], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 2], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 3], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 4], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 5], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 6], -// // buffer[wp][(WIDTH*HEIGHT) / 2 + 7], -// // ret); -// // #endif -// // } -// /*else*/ -// { -// -// #if 1 -// #if 0 -// // ðŒ‚ð‡‚킹‚ĉº”¼•ª‚¾‚¯‚ÉB -// CpuYuv2Rgb( buffer[wp], buffer[wp] + (WIDTH*HEIGHT) / 2, (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// MI_CpuFillFast((void *)buffer[wp], 0, sizeof(u16) * (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// #else -// OSTick begin = OS_GetTick(); -// // CpuYuv2Rgb666(buffer[wp], buffer[wp] + (WIDTH*HEIGHT) / 2, (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// -// // ŒÅ’èƒf[ƒ^ŽÀŒ± -// Shrink640to208(buffer[wp]/* b_dat*/, (u16*)(wp ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C) /*buffer[wp]*/, 96 * 3, pDtcm); -// // Shrink640to208(buffer[wp]/* b_dat*/, buffer[2], 96 * 3, pDtcm); -// // CpuYuv2Rgb666(buffer[2], (u16*)(wp ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), (u32)(HW_LCD_WIDTH*HW_LCD_HEIGHT) / 2); -// -// OS_Printf("total(exp) = %d us\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - begin)); -// #endif -// #endif -// } -// -// // DC_FlushRange( buffer[wp], BYTES_PER_LINE * HEIGHT); -// // DC_FlushRange((void *)((wp) ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), BYTES_PER_LINE * HEIGHT); -// // DC_StoreAll(); -// -// rp = wp; -// refresh = TRUE; -// we = TRUE; -// } -// - - - - if (mpCmrMgr2->isShotDone()) { -// #if 1 -// // test -// CAMERA_SetLED(FALSE); -// #endif - OS_TPrintf("SHOT DONE!\n"); - // check error mShotErr - - // anything to process ? - mpCmrMgr2->clearShotDone(); - - if (!mpCmrMgr2->getOneShotFlag()) { - mpCmrMgr2->startCapture(current); - } - -// SNDEX_SetDSPMixRate( 8 ); -// SNDEX_ForceOut( FALSE ); - - } else { - // ‚±‚±‚Å(trg)‚É‚·‚邯ƒJƒƒ‰Ø‚è‘Ö‚¦‚Æ‚©‚Å‚«‚È‚­‚È‚éB - if (mpCmrMgr2->getOneShotFlag() && (trg & PAD_BUTTON_Y)) { - mpCmrMgr2->startCapture(current); - } - } - -// { -// -// if (re) { -// re = FALSE; -// tp = rp; -// } -// -// } - - } -} - -/*---------------------------------------------------------------------------* - Name: ‚uƒuƒ‰ƒ“ƒNŠ„‚螂݈— - - Description: - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void VBlankIntr(void) -{ - mpCmrMgr2->procVBlankIntr(); - - -// if (tp == rp) { -// GX_DisableBankForTex(); -// GX_SetBankForTex( tp ? GX_VRAM_TEX_0_D : GX_VRAM_TEX_0_C); -// GX_SetBankForLCDC(tp ? GX_VRAM_LCDC_C : GX_VRAM_LCDC_D); -// } - - OS_SetIrqCheckFlag(OS_IE_V_BLANK); // checking VBlank interrupt -} - -// static void CameraIntr2(void) -// { -// u32 nwp = wp; -// -// // ‚¿‚á‚ñ‚ƃGƒ‰[ˆ—‚µ‚ĂȂ¢‚¯‚Çc -// if (CAMERA_GetErrorStatus()) { -// OS_TPrintf("Error!\n"); -// CAMERA_StopCapture(); -// CAMERA_ClearBuffer(); -// MI_StopNDma(CAMERA_NEW_DMA_NO); -// CAMERA_StartCapture(); -// } else { -// if (MI_IsNDmaBusy(CAMERA_NEW_DMA_NO)) { -// static u32 count; -// OS_TPrintf("DMA was not done until VBlank.%d\n", count++); -// MI_StopNDma(CAMERA_NEW_DMA_NO); -// } else { -// if (reading) { -// re = TRUE; -// if (we) { -// we = FALSE; -// wp ^= 1; -// } -// } -// } -// } -// -// if (sLongDmaFlag) { -// sLongDmaFlag = FALSE; -// CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT + 1), /*(MINDmaCallback)NDmaDummyIntr*/NULL, NULL); -// } else { -// CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), /*(MINDmaCallback)NDmaDummyIntr*/NULL, NULL); -// } -// reading = TRUE; -// -// -// // OS_SetIrqCheckFlag(OS_IE_CAMERA); // checking camera interrupt -// // -// // if (mError) { -// // CAMERA_ClearBuffer(); -// // mError = FALSE; -// // } else { -// // if (CAMERA_GetErrorStatus() -// // /*|| -// // (OS_GetIrqMask() & (OS_IE_NDMA0 << CAMERA_NEW_DMA_NO))*/) { -// // // error -// // OS_TPrintf("line %d %x\n", __LINE__, (OS_GetIrqMask() & (OS_IE_NDMA0 << CAMERA_NEW_DMA_NO))); -// // -// // CAMERA_StopCapture(); -// // MI_StopNDma(CAMERA_NEW_DMA_NO); -// // // OS_DisableIrqMask(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// // mError = TRUE; -// // return; -// // } -// // -// // if (mLastState == eStt_Capture) { -// // // OS_EnableIrqMask(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// // return; -// // } -// // } -// // -// // switch (mState) { -// // case eStt_Capture: -// // CAMERA_StartCapture(); -// // // reg_OS_IF = OS_IE_NDMA0 << CAMERA_NEW_DMA_NO; -// // // callback‚ðŽw’肵‚È‚¢‚ÆAmi_ndma.c‚Å -// // // //---- set interrupt enable -// // // if ( callback ) -// // // { -// // // contData |= MI_NDMA_IF_ENABLE; -// // // } -// // // ‚ƂȂÁ‚Ä‚¢‚é‚̂Ŋ„‚螂݂ª‚©‚©‚ç‚È‚¢B -// // -// // // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[0], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), (MINDmaCallback)NDmaDummyIntr, NULL); -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[0], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), (MINDmaCallback)NDmaIntr, NULL); -// // break; -// // -// // default: -// // break; -// // } -// // -// // mLastState = mState; -// -// // DrawFPS(); -// } -// -// // static void NDmaIntr(void) -// // { -// // OS_SetIrqCheckFlag(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// // -// // if (mError) { -// // // captured data is broken -// // } else { -// // // •ÏŠ·ƒXƒŒƒbƒh‚ɃƒbƒZ[ƒW‚ð‘—‚éB -// // -// // mLastState = mState; -// // switch (mState) { -// // case eStt_Capture: -// // // •\ަ—pƒLƒƒƒvƒ`ƒƒ‚ðŒp‘±B -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[0], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), (MINDmaCallback)NDmaIntr, NULL); -// // break; -// // -// // default: -// // // ‚Ƃ肠‚¦‚¸‚»‚êˆÈŠO‚̓Lƒƒƒvƒ`ƒƒ’âŽ~B -// // CAMERA_StopCapture(); -// // break; -// // } -// // OS_TPrintf("Send message!\n"); -// // -// // } -// // -// // // OS_DisableIrqMask(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// // } - -static void NDmaDummyIntr(void) -{ -// // camera-2/main.c: CameraDmaIntr()‚ÅA‚±‚ꂪs‚í‚ê‚Ä‚¢‚éB -// // ‚±‚ê‚𔲂¢‚½‚Ì‚ª‚¤‚Ü‚­“®‚©‚È‚¢Œ´ˆö‚ł͂Ȃ³‚»‚¤B -// // OS_SetIrqCheckFlag(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO); -// -// // camera-2/main.c: CameraDmaIntr()‚ÅA‚±‚ꂪs‚í‚ê‚Ä‚¢‚éB -// // c‚¨‚¢I‚±‚±‚ŃZƒbƒg‚·‚éŠÖ”‚ÍAˆø”–³‚µ‚¾‚¼H‚Ç‚¤‚È‚Á‚Æ‚é‚ñH -// // ‚ ACAMERA_DmaRecv*()‚Ìcallback‚ł͂Ȃ¢‚©‚çA•Ê•¨‚Ȃ̂©IH -// // callback‚Í–ˆline—ˆ‚é‚ñ‚¾‚æ‚ËH -// OS_SetIrqFunction(OS_IE_NDMA0 << CAMERA_NEW_DMA_NO, NDmaDummyIntr); // for next interrupt - -} - - -// /*---------------------------------------------------------------------------* -// Name: ƒJƒƒ‰Š„‚螂݈— (ƒGƒ‰[Žž‚ÆVsyncŽž‚Ì—¼•û‚Å”­¶) -// -// Description: -// -// Arguments: None -// -// Returns: None -// *---------------------------------------------------------------------------*/ -// void CameraIntr(void) -// { -// int nwp = 2; -// OS_SetIrqCheckFlag(OS_IE_CAMERA); // checking camera interrupt -// -// if (CAMERA_GetErrorStatus()) -// { -// OS_TPrintf("Error was occurred.\n"); -// // ’âŽ~ˆ— -// CAMERA_StopCapture(); // ƒJƒƒ‰’âŽ~ -// CAMERA_ClearBuffer(); // ƒNƒŠƒA -// MI_StopNDma(CAMERA_NEW_DMA_NO); // DMA’âŽ~ -// wp_pending = TRUE; // ŽŸ‰ñ‚à“¯‚¶ƒtƒŒ[ƒ€‚ðŽg—p‚·‚é -// startRequest = TRUE; // ƒJƒƒ‰ÄŠJ—v‹ -// return; // waiting next frame (skip current frame) -// } -// -// // ˆÈ~‚ÍVsyncŽž‚̈— -// -// if (startRequest) -// { -// CAMERA_ClearBuffer(); -// CAMERA_StartCapture(); -// startRequest = FALSE; -// } -// -// if (CAMERA_IsBusy() == FALSE) // done to execute stop command? -// { -// //OS_TPrintf("while stopping the capture or just finished\n"); -// } -// else -// { -// if (MI_IsNDmaBusy(CAMERA_NEW_DMA_NO)) // NOT done to capture last frame? -// { -// OS_TPrintf("DMA was not done until VBlank.\n"); -// MI_StopNDma(CAMERA_NEW_DMA_NO); // DMA’âŽ~ -// // return; // waiting next frame (skip current frame) -// } -// // start to capture for next frame -// if (wp_pending) -// { -// wp_pending = FALSE; -// } -// else -// { -// // XVƒoƒbƒtƒ@•ÏX -// if (we) { -// nwp = wp; -// wp ^= 1; -// we = FALSE; -// } -// -// // #ifdef CONVERT_WITH_DSP -// // // DSP‚É‚æ‚éYUV->RGB•ÏŠ·ŽÀs -// // sNowConvert = TRUE; -// // DSP_Yuv2RgbConvertAsync(buffer[rp ^ 1], buffer[rp ^ 1], (WIDTH*HEIGHT*2), Yuv2rgbCallback); -// // #else -// // // CPU‚É‚æ‚éYUV->RGB•ÏŠ·ŽÀs -// // DC_InvalidateRange( buffer[rp ^ 1], BYTES_PER_LINE * HEIGHT); -// // GX_SetBankForLCDC((rp ^ 1) ? GX_VRAM_LCDC_D : GX_VRAM_LCDC_C); -// // CpuYuv2Rgb666(buffer[rp ^ 1], (void *)((rp ^ 1) ? HW_LCDC_VRAM_D : HW_LCDC_VRAM_C), (u32)(WIDTH*HEIGHT) ); -// // CpuYuv2Rgb( buffer[rp ^ 1], buffer[rp ^ 1], (u32)(WIDTH*HEIGHT) ); -// // #endif -// } -// -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), NULL, NULL); -// // ‚È‚ñ‚Å -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH)/LINES_SPLIT, CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), NULL, NULL); -// // ‚¶‚á‚È‚¢‚ÌH -// // CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), NULL, NULL); -// CAMERA_DmaRecvAsync(CAMERA_NEW_DMA_NO, buffer[nwp], CAMERA_GetBytesAtOnce(WIDTH), CAMERA_GET_FRAME_BYTES(WIDTH, HEIGHT), (MINDmaCallback)CameraIntr, NULL); -// } -// -// // frame rate print -// // Š„‚螂݂ł͉“—¶‚µ‚悤B -// // DrawFPS(); -// } - -/*---------------------------------------------------------------------------* - Name: PutString - - Description: - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -static void PutString( char *format, ... ) -{ - u16 *dest = text_buffer; - char temp[32+1]; - int i; - va_list va; - - va_start(va, format); - (void)OS_VSNPrintf(temp, sizeof(temp), format, va); - va_end(va); - - MI_CpuClearFast(text_buffer, sizeof(text_buffer)); - for (i = 0; i < 32 && temp[i]; i++) - { - dest[i] = (u16)((u8)temp[i] | (0 << 12)); - } - DC_StoreRange(text_buffer, sizeof(text_buffer)); -} - -/*---------------------------------------------------------------------------* - Name: DrawFPS - - Description: FPS‚ð•\ަ‚µ‚Ü‚·B - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -static void DrawFPS(void) -{ -#define FPS_SAMPLES 4 - static OSTick begin = 0; - static int uspf[FPS_SAMPLES] = { 0 }; - static int count = 0; - // 0123456789abcdef - static u8 star[16 + 1] = " "; - static u8 starIdx; - int i; - int sum = 0; - OSTick end = OS_GetTick(); - if (begin) // ‰‰ñ‚𜂭 - { - uspf[count] = (int)OS_TicksToMicroSeconds(end - begin); - count = (count + 1) % FPS_SAMPLES; - } - begin = end; - // •½‹Ï’l‚ÌŽZ’è - for (i = 0; i < FPS_SAMPLES; i++) - { - if (uspf[i] == 0) break; - sum += uspf[i]; - } - star[starIdx] = ' '; - star[starIdx ^ 8] = ' '; - starIdx = (u8)((starIdx + 1) & 0xf); - star[starIdx] = '*'; - star[starIdx ^ 8] = '*'; - star[16] = '\0'; - if (1 || sum) - { - int mfps = (int)(1000000000LL * i / sum); - PutString("%2d.%03d fps %s", mfps / 1000, mfps % 1000, star); - } -} - -// /*---------------------------------------------------------------------------* -// Name: Yuv2rgbCallback -// -// Description: YUV->RGB•ÏŠ·Š®—¹Œã‚ɌĂÑo‚³‚ê‚éƒR[ƒ‹ƒoƒbƒN -// -// Arguments: None -// -// Returns: None -// *---------------------------------------------------------------------------*/ -// static void Yuv2rgbCallback(void) -// { -// sNowConvert = FALSE; -// } -// -// - -// namespace cmn { namespace sys { namespace cmr2 -// { -// void* Manager::dspAlloc_( u32 size ) { -// #pragma unused(size) -// // this function must not be called by SDK -// OS_TPanic("dspAlloc_\n"); -// return NULL; -// } -// -// void Manager::dspFree_( void* p_ptr ) { -// #pragma unused(p_ptr) -// // this function is always called by SDK -// return; -// } -// -// }}} diff --git a/build/tests/yuv2rgb/src/menuCameraManager.cpp b/build/tests/yuv2rgb/src/menuCameraManager.cpp deleted file mode 100644 index 8db5e723..00000000 --- a/build/tests/yuv2rgb/src/menuCameraManager.cpp +++ /dev/null @@ -1,2453 +0,0 @@ -// TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT‚ɂ‚¢‚Ä -// ƒ‰ƒ“ƒ`ƒƒ[‚Å‚Íí‚É–¢’è‹`‚Å‚·B -// Ž„‚̎茳‚Ås‚Á‚Ä‚¢‚éƒJƒƒ‰•”•ª‚É“Á‰»‚µ‚½ŽÀŒ±ŠJ”­ƒvƒƒWƒFƒNƒg‚Æ -// ƒ\[ƒX‚ð‹¤—p‚·‚邽‚ßA‚»‚¿‚ç‚Ö‘g‚Ýž‚Ü‚ê‚鎞‚̂ݒè‹`‚³‚ê‚Ü‚·B - -// —Ž‚¿’…‚¢‚½‚çcmnCameraManager.cpp‚ÖŽ‚Á‚Ä‚¢‚­B - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -#include "menu.h" -//#include "cmnJpegManager.h" -#include "cmnFile.h" -//#include "cmnImageSampling.h" -#include "menuImageSampling.h" -#endif - - -#include -#include -#include "menuCameraManager.h" -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#include -#include -#else -#include -#include -#endif - -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -// #else -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// #include "menuDspManager.h" -// #endif -// #endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -extern "C" { -// build/libraries/dsp/ARM9.TWL/src/dsp_jpeg_enc.c -extern u16 *DSPFrame_y; -extern u16 *DSPFrame_cb; -extern u16 *DSPFrame_cr; -} /* extern "C" */ -#endif - -#if SDK_VERSION_DATE < 20080630 -#else -/*! - ƒJƒƒ‰VsyncƒR[ƒ‹ƒoƒbƒN - */ -static void proc_camera_vsync_callback( CAMERAResult result ) -{ -#pragma unused( result ) -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - { - extern cmn::sys::cmr2::Manager* mpCmrMgr2; - mpCmrMgr2->procCameraIntr(); - } -#else - MenuSys()->getCmrMgr2()->procCameraIntr(); -#endif -} -#endif - -namespace cmn { namespace sys { namespace cmr2 -{ - vu8 Manager::mCaptureFlag; - vu8 Manager::mNextCaptureFlag; - vu8 Manager::mShotFlag; - vu8 Manager::mNextShotFlag; - vu8 Manager::mCurLedBlink; - volatile CAMERASelect Manager::mSelCmr; - volatile CAMERASelect Manager::mNextCmr; - volatile cameraState Manager::mCmrCurState[cCameraMax]; - volatile cameraState Manager::mCmrNextState[cCameraMax]; - OSMessage Manager::mI2cAsyncMsgBuf[1]; - OSMessageQueue Manager::mI2cAsyncMsgQueue; - -/*! - ƒRƒ“ƒXƒgƒ‰ƒNƒ^ - */ -Manager::Manager() : -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - mpHeap( NULL ), -#endif - mShowWdt( cDefaultShowWidth ), - mShowHgt( cDefaultShowHeight ), - mShotWdt( cDefaultShotWidth ), - mShotHgt( cDefaultShotHeight ), - mLedKeepFlag( FALSE ), - mOneShotFlag( FALSE ), - mEncodeBusyFlag( FALSE ), - mPreInitFlag( FALSE ), - mInitFlag( FALSE ), - mpCaptureBuf( NULL ), - mpConvBuf( NULL ), - mpNextConvBuf( NULL ), - mpShotBuf( NULL ), - mI2cBusy( FALSE ), - mTexSwap( FALSE ), - mTexBank( GX_VRAM_TEX_NONE ), - mNextTexBank( GX_VRAM_TEX_NONE ), - mpEncodeWork(NULL) -{ - u32 i; - - // manager default value - for (i = 0; i < cCameraMax; i++) { - mCmrNextState[i].mContext = CAMERA_CONTEXT_B; - // ƒtƒŒ[ƒ€ƒŒ[ƒg‚àAƒJƒƒ‰–ˆ‚ɕێ‚µ‚Ä‚¢‚éB - mCmrNextState[i].mFrameRate = CAMERA_FRAME_RATE_20; - } - - for (i = 0; i < cBufferCount; i++) { - mIsCapBufUsed[i] = FALSE; - mpCapBuf[i] = NULL; - } - - mSelCmr = mNextCmr = CAMERA_SELECT_NONE; - mCaptureFlag = mNextCaptureFlag = mShotFlag = mNextShotFlag = FALSE; - mCurLedBlink = FALSE; - - // ‰Šú‰»‚Í‚±‚̃^ƒCƒ~ƒ“ƒO‚ÅŠmŽÀ‚És‚Á‚Ä‚¨‚­B - OS_InitEvent(&mLowerEvent); - - setCaptureRgbFlag( FALSE ); - -// TwlSDK/build/libraries/mi/common.TWL/src/mi_ndma.c: -// #define CAMERA_DMA_BLOCK_SIZE MI_NDMA_BWORD_16 -// #define CAMERA_DMA_INTERVAL 2 -// #define CAMERA_DMA_PRESCALER MI_NDMA_INTERVAL_PS_1 - MI_GetNDmaConfig(cDefaultDmaNo, &mDmaConfig); - mDmaConfig.intervalTimer = 2; // CAMERA_DMA_INTERVAL - mDmaConfig.prescaler = MI_NDMA_INTERVAL_PS_1; // CAMERA_DMA_PRESCALER; - // blockWord‚ª16‚¾‚Æjackal (hyena)Žg—pŽž‚̈——Ž‚¿‚ª“‚¢‚ªA - // yuv2rgbŽÀŒ±‚É‚¨‚¢‚ÄA32‚È‚ç64‚Ƃ̷‚ÍŠ´‚¶‚ç‚ê‚È‚©‚Á‚½B - // ƒ‰ƒ“ƒ`ƒƒ[‚Ö‘g‚Ýž‚ñ‚Å‚Ý‚é‚ÆA32‚æ‚è64‚Ì•û‚ªˆ——Ž‚¿‚ª­‚È‚©‚Á‚½B - // 64‚É‚·‚éB - mDmaConfig.blockWord = MI_NDMA_BWORD_16; // MI_NDMA_BWORD_64; // CAMERA_DMA_BLOCK_SIZE; - -} - - -/*! - ƒfƒXƒgƒ‰ƒNƒ^ - */ -Manager::~Manager() -{ - while (!tryDestroy()) { - OS_Sleep(1); - } -} - - -/*! - ƒJƒƒ‰æs‰Šú‰»B - ‘ÌŠ´“I‚ȃJƒƒ‰‹N“®ŽžŠÔ‚ð’Zk‚·‚邽‚ßA–{‰Šú‰»‚ÌŽè‘O - (ƒq[ƒv‚ð•K—v‚Æ‚µ‚È‚¢•”•ª)‚Ü‚Ås‚¤B - ƒJƒƒ‰‚̓Xƒ^ƒ“ƒoƒC‚ÉB - ŒÄ‚΂Ȃ­‚Ä‚à—Ç‚¢B - */ -void Manager::preInit( u32 show_w, u32 show_h, u32 shot_w, u32 shot_h ) -{ - // preInit()‚Í•¡”‰ÓŠ‚©‚çŒÄ‚΂ê‚Ä‚à—Ç‚¢‚悤‚É‚µ‚Ä‚¨‚­B - { - OSIntrMode enabled = OS_DisableInterrupts(); - - if (mPreInitFlag) { - OS_RestoreInterrupts(enabled); - return; - } - mPreInitBusyFlag = TRUE; - mPreInitFlag = TRUE; - OS_RestoreInterrupts(enabled); - } - - mShowWdt = show_w; - mShowHgt = show_h; - mShotWdt = shot_w; - mShotHgt = shot_h; - -// setShutterSnd(NULL, 0, FALSE); - - // ’¼‘O‚ÌI—¹—v‹‚ªŽc‚Á‚Ä‚¢‚é‚©‚à‚µ‚ê‚È‚¢B - // ‰Šú‰»—v‹ˆÈŠOAƒCƒxƒ“ƒg‚̓NƒŠƒA‚µ‚Ä‚¨‚­B - OS_ClearEvent(&mLowerEvent, (u32)(cEventMaskLower_All & ~cEventMaskLower_EnableIntrAndPrepareBuffer)); - - OS_InitMessageQueue(&mI2cMsgQueue, mI2cMsgBuf, sizeof(mI2cMsgBuf) / sizeof(*mI2cMsgBuf)); - OS_InitMessageQueue(&mI2cAsyncMsgQueue, mI2cAsyncMsgBuf, sizeof(mI2cAsyncMsgBuf) / sizeof(*mI2cAsyncMsgBuf)); - OS_CreateThread(&mLowerThread, procLower_, this, - mLowerThreadStack + (sizeof(mLowerThreadStack) / sizeof(*mLowerThreadStack)), - sizeof(mLowerThreadStack), - menu::sys::Object::cThreadPriority_CameraLowerLo); - OS_CreateThread(&mI2cThread, procI2c_, this, - mI2cThreadStack + (sizeof(mI2cThreadStack) / sizeof(*mI2cThreadStack)), - sizeof(mI2cThreadStack), - menu::sys::Object::cThreadPriority_CameraI2c); - OS_WakeupThreadDirect(&mLowerThread); - OS_WakeupThreadDirect(&mI2cThread); -} - - -/*! - ƒJƒƒ‰ƒ‰ƒCƒuƒ‰ƒŠ‚̉Šú‰» - @param p_heap ƒq[ƒv - @param mode •\ަƒ‚[ƒh - @param sel_cmr ‘I‘ð‚³‚ê‚½ƒJƒƒ‰ - @param vram1 ƒ_ƒuƒ‹ƒoƒbƒtƒ@‚ÌVRAM1 - @param vram2 ƒ_ƒuƒ‹ƒoƒbƒtƒ@‚ÌVRAM2 - @param show_w •\ަ‰¡• (‚Ƃ肠‚¦‚¸208‚Ì‚Ý) - @param show_h •\ަ‚‚³ (‚Ƃ肠‚¦‚¸156‚Ì‚Ý) - @param shot_w ŽB‰e‰¡• (‚Ƃ肠‚¦‚¸640‚Ì‚Ý) - @param shot_h ŽB‰e‚‚³ (‚Ƃ肠‚¦‚¸480‚Ì‚Ý) - */ -void Manager::init( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - sys::Heap* p_heap , -#endif - int mode , CAMERASelect sel_cmr , int vram1 , int vram2 , - cmn::sys::cmr2::dtcmWork* pDtcmWork , - void (*gx_user_proc)(u8* vramAddr, BOOL shot) , - u32 show_w , u32 show_h , u32 shot_w , u32 shot_h ) -{ - if (mInitFlag) { - return; - } - mInitBusyFlag = TRUE; - mInitFlag = TRUE; - - preInit(show_w, show_h, shot_w, shot_h); - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // no Heap -#else - mpHeap = p_heap; -#endif - - mpDtcmWork = pDtcmWork; - mTarget = 0; - mpCaptureBuf = NULL; - mpConvBuf = NULL; - mpNextConvBuf = NULL; - mpShotBuf = NULL; - // ʼn‚É€”õ‚µ‚½‚¢‚Ì‚Ívram1‚ÅA‚·‚łɀ”õς݂̂à‚Ì‚ªvram2 - // ‚Æ‚·‚éB - mTexBank = GXVRamTex(vram2); - mNextTexBank = 0; - mCaptureFlag = FALSE; - mShotFlag = FALSE; - mNextCaptureFlag = FALSE; - mNextShotFlag = FALSE; - mShotDone = FALSE; - mShotErr = 0; - mpGxUserProc = gx_user_proc; -#ifndef TWL_IPL_FINAL - mDebugPort = 0; -#endif - - mTexSwap = FALSE; - mFirstPictureReady = FALSE; - - mCaptureSkipCount = 0; - mCaptureRetryCount = 0; - - mVramType[ 0 ] = vram1; - mVramType[ 1 ] = vram2; - - // vram2 == 0 ‚È‚çƒVƒ“ƒOƒ‹ƒoƒbƒtƒ@‚É‚·‚ê‚΂¢‚¢‚̂łÍH - for ( int i = 0 ; i < 2; ++ i ) - { - switch ( mVramType[ i ] ) - { - case GX_VRAM_A: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_A ); break; - case GX_VRAM_B: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_B ); break; - case GX_VRAM_C: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_C ); break; - case GX_VRAM_D: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_D ); break; - case GX_VRAM_E: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_E ); break; - case GX_VRAM_F: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_F ); break; - case GX_VRAM_G: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_G ); break; - case GX_VRAM_H: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_H ); break; - case GX_VRAM_I: mVramAddr[ i ] = reinterpret_cast< u8* > ( HW_LCDC_VRAM_I ); break; - default: IPL_ASSERT( 0 ); break; - } - } - - mMode = mode; - mNextCmr = sel_cmr; - - mGxDma = GX_GetDefaultDMA(); - // GX‚ÅDMA‚ðŽg‚í‚È‚¢ (‹ŒDMA‚̓Jƒƒ‰DMA‚̎ז‚‚ɂȂé) - // ‚ÅA‚¢‚–߂·‚ÌH - GX_SetDefaultDMA(GX_DMA_NOT_USE); - - OS_SignalEvent(&mLowerEvent, - cEventMaskLower_EnableIntrAndPrepareBuffer); -} - - -void Manager::procLower() -{ - u32 event; - BOOL initDone = FALSE; - CAMERAResult camResult; - u32 i; - BOOL shot; - - while (TRUE) { - if (!initDone) { -#if SDK_VERSION_DATE < 20080630 - // CAMERAƒ‰ƒCƒuƒ‰ƒŠ‚ð‰Šú‰»‚µ‚Ä‚¢‚È‚¢‚Æ‚¢‚¤‘O’ñ‚Ȃ̂ÅA - // setInterrupt()‚ÍŽg‚í‚È‚¢B - OS_DisableIrqMask(OS_IE_CAMERA); -#else - // OS_IE_CAMERA‚ÍCAMERAƒ‰ƒCƒuƒ‰ƒŠ‚ªƒnƒ“ƒhƒŠƒ“ƒO‚·‚éB -#endif - // d‚¢‚̂Œá—Dæ“x‚ÅB - camResult = CAMERA_Init(); - if (camResult != CAMERA_RESULT_SUCCESS) { - // ‚Ƃ肠‚¦‚¸ - IPL_HALT("CAMERA_Init() error %d\n", camResult); - OS_TPanic(""); - // NEVER REACH HERE - } - initDone = TRUE; - - // SDK default value - mSelCmr = CAMERA_SELECT_NONE; - for (i = 0; i < cCameraMax; i++) { - mCmrCurState[i].mContext = CAMERA_CONTEXT_A; - mCmrCurState[i].mFrameRate = CAMERA_FRAME_RATE_15; - } - mCurLedBlink = FALSE; - // I2CŠeŽíݒ胊ƒNƒGƒXƒg‘—MB - // ‚—Dæ“xƒXƒŒƒbƒh‚ÅAsyncˆ—B - OS_SendMessage(&mI2cMsgQueue, (OSMessage)cMsgI2c_AfterInit, OS_MESSAGE_BLOCK); - } - - event = OS_WaitEventEx_Or(&mLowerEvent, cEventMaskLower_All, cEventMaskLower_All); -// IPL_PRINT("event=0x%02x\n", event); - - if (event & cEventMaskLower_Destroy) { - break; - } - if (event & cEventMaskLower_EnableIntrAndPrepareBuffer) { - // ƒJƒƒ‰Š„‚螂݂ð—LŒø‚É‚·‚éB - setInterrupt(TRUE); - prepareBuffer(); - // ‰Šú‰»‚ÍI‚í‚Á‚½B - mInitBusyFlag = FALSE; - } - if (event & cEventMaskLower_Activate) { - if (mSelCmr == CAMERA_SELECT_NONE && mNextCmr != CAMERA_SELECT_NONE) { - // CAMERA_SELECT_NONE‚ðݒ莞‚ÍACAM_VSYNC‚Í”­¶‚µ‚È‚¢‚̂Š- // kick‚·‚éB - // ƒJƒƒ‰‹N“®’¼Œãˆê’èƒtƒŒ[ƒ€”‚̊Ԃ͉摜‚ªˆÀ’肵‚È‚¢‚̂ŃLƒƒƒvƒ`ƒƒ’âŽ~B - mCaptureSkipCount = 1; - OS_SendMessage(&mI2cMsgQueue, (OSMessage)cMsgI2c_Activate, OS_MESSAGE_BLOCK); - } - } - shot = FALSE; - if ((event & cEventMaskLower_Convert) || mpNextConvBuf) { - shot = convert((BOOL)(event & cEventMaskLower_Shot)); - } - if (shot) { - // •ÏŠ·‚µ‚È‚¢‚ÅŽB‰e‚݂̂Ƃ©A - // ŽB‰e’†‚ɃLƒƒƒvƒ`ƒƒ‚ðŒp‘±‚·‚邱‚ƂɂÍA‚Ü‚¾‘Ήž‚µ‚Ä‚¢‚È‚¢B - mEncodeBusyFlag = TRUE; - encodeAndSave(); - mEncodeBusyFlag = FALSE; - } - if (event & cEventMaskLower_DisableIntrAndDestroyBuffer) { - // ‚±‚̃Cƒxƒ“ƒg‚͘A‘±”­¶‚·‚é‰Â”\«‚ª‚ ‚éB - if (mInitFlag) { - // ƒJƒƒ‰Š„‚螂݂𖳌ø‚É‚·‚éB - setInterrupt(FALSE); - destroyBuffer(); - MI_StopNDma(cDefaultDmaNo); - // ĉŠú‰»‚ª•K—vB - mInitFlag = FALSE; - } - } - } - - // I2CƒXƒŒƒbƒh‚ðI—¹ (BLOCK) - OS_SendMessage(&mI2cMsgQueue, (OSMessage)cMsgI2c_Destroy, OS_MESSAGE_BLOCK); - OS_JoinThread(&mI2cThread); - - CAMERA_End(); - - GX_SetDefaultDMA(mGxDma); -} - - -void Manager::procI2c() -{ - OSMessage msg; - CAMERAResult camResult; - - while (TRUE) { - OS_ReceiveMessage(&mI2cMsgQueue, &msg, OS_MESSAGE_BLOCK); -// IPL_PRINT("I2c msg=%d\n", msg); - if (!msg) { - break; - } - - mI2cBusy = TRUE; - - switch ((u32)msg) { - case cMsgI2c_AfterInit: - CAMERA_SetOutputFormat(mCaptureRgbFlag ? CAMERA_OUTPUT_RGB : CAMERA_OUTPUT_YUV); - CAMERA_SetTrimming(FALSE); - // Trimming‚ªFALSE‚Ȃ̂ÅTrimmingParams‚Í–³Ž‹B - mShowTransferLines = (int)CAMERA_GET_MAX_LINES(mShowWdt); - mShotTransferLines = (int)CAMERA_GET_MAX_LINES(mShotWdt); - // ¡‚͉𑜓xØ‚è‘Ö‚¦‚ª‚Å‚«‚È‚¢‚Ì‚ÅAmShowWdt‚¶‚á‚È‚­‚ÄmShotWdt‚ÅB - CAMERA_SetTransferLines(mShotTransferLines); - - camResult = i2cSetupOthers(); - // Œ‹‰Ê‚Í‚Æ‚à‚©‚­Aæs‰Šú‰»‚ÍI‚í‚Á‚½B - mPreInitBusyFlag = FALSE; - if (camResult != CAMERA_RESULT_SUCCESS) { - // ‚Ü‚¾B - IPL_HALT("not yet %d\n", camResult); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - OS_TPanic(""); - } - - break; - - case cMsgI2c_Activate: - camResult = i2cActivate(mNextCmr); - if (camResult != CAMERA_RESULT_SUCCESS) { - // ‚Ü‚¾B - IPL_HALT("not yet %d\n", camResult); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - OS_TPanic(""); - } - - break; - - case cMsgI2c_ChangeLedToOn: - case cMsgI2c_ChangeLedToBlink: - camResult = i2cLed( ((u32)msg == cMsgI2c_ChangeLedToBlink) ); - if (camResult != CAMERA_RESULT_SUCCESS) { - // ‚Ü‚¾B - IPL_HALT("not yet %d\n", camResult); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - OS_TPanic(""); - } - - break; - - default: - IPL_HALT("unknown msg %d\n", msg); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - break; - } - - mI2cBusy = FALSE; - } -} - - -// ‚—Dæ“xƒXƒŒƒbƒh‚©‚ç‚̂݌Ă΂ê‚邱‚Æ‚ð‘z’肵‚Ä‚¢‚é‚̂Ŕr‘¼§Œä‚µ‚È‚¢B -CAMERAResult Manager::i2cCommon(u32 type, CAMERASelect sel_cmr) -{ - union { - CAMERAResult result; - OSMessage msg; - } u = { - (CAMERAResult)(-1) // CAMERAResult‚Í”ñ•‰‚Ȃ̂ÅA‚±‚Ì’l‚ª•Ô‚Á‚½‚çŽÀ‘•ƒ~ƒXB - }; - const volatile cameraState* pNextState = &mCmrNextState[isOutCamera(sel_cmr)]; - u32 retryCount = 0; - - // cI2cCommon_Activate‚Ì‚ÝACAMERA_SELECT_NONE‚ðŽó‚¯•t‚¯‚éB - // ‚Ç‚ñ‚ȂƂ«‚àACAMERA_SELECT_BOTH‚͎󂯕t‚¯‚È‚¢B - if (sel_cmr == CAMERA_SELECT_NONE && - type != cI2cCommon_Activate) { - IPL_HALT("error: CAMERA_SELECT_NONE for type %d\n", type); - return (CAMERAResult)(-2); - } - - while (TRUE) { - switch (type) { - case cI2cCommon_Activate: - u.result = CAMERA_I2CActivateAsync(sel_cmr, i2cActivateCallback, (void*)sel_cmr); - break; - - case cI2cCommon_FrameRate: - u.result = CAMERA_I2CFrameRateAsync(sel_cmr, pNextState->mFrameRate, i2cFrameRateCallback, (void*)sel_cmr); - break; - - case cI2cCommon_ContextSwitch: - u.result = CAMERA_I2CContextSwitchAsync(sel_cmr, pNextState->mContext, i2cContextSwitchCallback, (void*)sel_cmr); - break; - - // I2C‚¶‚á‚È‚¢‚¯‚Ç - case cI2cCommon_LedOn: - case cI2cCommon_LedBlink: - u.result = CAMERA_SetLEDAsync( (type == cI2cCommon_LedBlink), i2cLedCallback, (void*)(type == cI2cCommon_LedBlink)); - break; - - default: - IPL_HALT("unknown type(1) %d sel_cmr %d\n", type, sel_cmr); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - break; - } - - if (u.result == CAMERA_RESULT_BUSY) { - IPL_PRINT("CAMERA_RESULT_BUSY type %d retry %d\n", type, retryCount); - retryCount++; - if (retryCount < cI2cRetryMax) { - OS_Sleep(cI2cRetryIntervalMsec); - continue; - } - } - break; - } - - if (u.result == CAMERA_RESULT_SUCCESS) { - OS_ReceiveMessage(&mI2cAsyncMsgQueue, &u.msg, OS_MESSAGE_BLOCK); - if (u.result != CAMERA_RESULT_SUCCESS) { - IPL_HALT("I2cAsyncCommon error: result %d for type %d sel_cmr %d\n", u.result, type, sel_cmr); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - } - } else { - IPL_HALT("I2cAsyncCommon error: result %d for type %d sel_cmr %d\n", u.result, type, sel_cmr); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - } - - return u.result; -} - - -// —¼•û‚̃Jƒƒ‰‚ɂ‚¢‚ÄAƒRƒ“ƒeƒLƒXƒgØ‚è‘Ö‚¦A‚¨‚æ‚Ñ -// ƒRƒ“ƒeƒLƒXƒg‚ŕێ‚³‚ê‚È‚¢Ý’è‚ðs‚¤B -// (mNextCmr == CAMERA_SELECT_NONE)‚Ìꇂɂ̂݃Xƒ^ƒ“ƒoƒC‚É‚·‚éB -// ‚»‚êˆÈŠO‚ł̓Jƒƒ‰‚Ì–¾Ž¦“I‚È‹N“®‚Í‚µ‚È‚¢B -CAMERAResult Manager::i2cSetupOthers() -{ - CAMERAResult result = CAMERA_RESULT_SUCCESS; - CAMERASelect sel_cmr; - u32 i; - - if (mNextCmr == CAMERA_SELECT_NONE) { - // æ‚ɃXƒ^ƒ“ƒoƒC‚É‚·‚éB - result = i2cActivate(mNextCmr); - // ƒXƒ^ƒ“ƒoƒC‚É‚µ‚Ä‚àA‘¼‚ÌÝ’è‚𑱂¯‚éB - } - - for (i = 0; i < cCameraMax; i++) { - sel_cmr = indexToCameraSelect(i); - - if (result == CAMERA_RESULT_SUCCESS) { - // ‚Ç‚¿‚ç‚̃Rƒ“ƒeƒLƒXƒg‚ÖØ‚è‘Ö‚¦‚éH - if (mCmrNextState[i].mContext == CAMERA_CONTEXT_A) { - // ƒtƒŒ[ƒ€ƒŒ[ƒg‚͌ォ‚ç•ÏX(オ‚é‚©‚à‚µ‚ê‚È‚¢) - result = i2cContextSwitch(sel_cmr); - if (result == CAMERA_RESULT_SUCCESS) { - result = i2cFrameRate(sel_cmr); - } - } else { - // ƒtƒŒ[ƒ€ƒŒ[ƒg‚Íæ‚É•ÏX(‰º‚ª‚é‚©‚à‚µ‚ê‚È‚¢) - result = i2cFrameRate(sel_cmr); - if (result == CAMERA_RESULT_SUCCESS) { - result = i2cContextSwitch(sel_cmr); - } - } - } - } - - return result; -} - - -#if SDK_VERSION_DATE < 20080630 -void Manager::setInterrupt(BOOL enable) -{ - OS_DisableIrqMask(OS_IE_CAMERA); - - CAMERA_SetMasterInterrupt(enable); - if (enable) { - // ‚±‚±‚ŃJƒƒ‰Š„‚螂݂͋֎~‚ɂȂÁ‚Ä‚¢‚é‚̂Š- // mIntrPositiveEdge‚Ì‘€ì‚ðŠ„‚èž‚Ý‹ÖŽ~‚ɂ͂µ‚È‚¢B - mIntrPositiveEdge = FALSE; - // almost begin of vblank - CAMERA_SetVsyncInterrupt(CAMERA_INTR_VSYNC_NEGATIVE_EDGE); - CAMERA_SetBufferErrorInterrupt(FALSE); - CAMERA_ClearBuffer(); - OS_ResetRequestIrqMask(OS_IE_CAMERA); - OS_EnableIrqMask(OS_IE_CAMERA); - } -} -#else -// OS_IE_CAMERA‚ÍCAMERAƒ‰ƒCƒuƒ‰ƒŠ‚ªƒnƒ“ƒhƒŠƒ“ƒO‚·‚éB -void Manager::setInterrupt(BOOL enable) -{ - CAMERA_SetVsyncCallback( NULL ); - if (enable) { - CAMERA_ClearBuffer(); - CAMERA_SetVsyncCallback( proc_camera_vsync_callback ); - } -} -#endif - - -CAMERAResult Manager::i2cActivate(CAMERASelect sel_cmr) -{ - return i2cCommon(cI2cCommon_Activate, sel_cmr); -} - -CAMERAResult Manager::i2cFrameRate(CAMERASelect sel_cmr) -{ - return i2cCommon(cI2cCommon_FrameRate, sel_cmr); -} - -CAMERAResult Manager::i2cContextSwitch(CAMERASelect sel_cmr) -{ - return i2cCommon(cI2cCommon_ContextSwitch, sel_cmr); -} - -CAMERAResult Manager::i2cLed(BOOL isBlink) -{ - return i2cCommon(isBlink ? cI2cCommon_LedBlink : cI2cCommon_LedOn, CAMERA_SELECT_OUT); -} - -void Manager::i2cCommonAsyncCallback(CAMERAResult result, void *arg) -{ -#ifdef TWL_IPL_FINAL -#pragma unused(arg) -#endif - // ‚±‚̃R[ƒ‹ƒoƒbƒN‚ªŒÄ‚΂ê‚é‘O‚ɃƒbƒZ[ƒWƒoƒbƒtƒ@‚Í‹ó‚É - // ‚È‚Á‚Ä‚¢‚é‚Í‚¸B - if (!OS_SendMessage(&mI2cAsyncMsgQueue, (OSMessage)result, OS_MESSAGE_NOBLOCK)) { - IPL_HALT("mI2cAsyncMsgQueue full! arg %d\n", arg); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - } -} - -void Manager::i2cActivateCallback(CAMERAResult result, void *arg) -{ - if (result == CAMERA_RESULT_SUCCESS) { - mSelCmr = (CAMERASelect)arg; - } - i2cCommonAsyncCallback(result, arg); -} - -void Manager::i2cFrameRateCallback(CAMERAResult result, void *arg) -{ - if (result == CAMERA_RESULT_SUCCESS) { - mCmrCurState[isOutCamera((CAMERASelect)arg)].mFrameRate = - mCmrNextState[isOutCamera((CAMERASelect)arg)].mFrameRate; - } - i2cCommonAsyncCallback(result, arg); -} - -void Manager::i2cContextSwitchCallback(CAMERAResult result, void *arg) -{ - if (result == CAMERA_RESULT_SUCCESS) { - mCmrCurState[isOutCamera((CAMERASelect)arg)].mContext = - mCmrNextState[isOutCamera((CAMERASelect)arg)].mContext; - } - i2cCommonAsyncCallback(result, arg); -} - -void Manager::i2cLedCallback(CAMERAResult result, void *arg) -{ - if (result == CAMERA_RESULT_SUCCESS) { - // ’Pƒ‚É(u8)arg‚Æ‚·‚邯A - // Warning: integral type is not large enough to hold pointer - // ‚ÆŒ¾‚í‚ê‚éB - mCurLedBlink = (u8)((BOOL)arg); - } - i2cCommonAsyncCallback(result, arg); -} - - -void Manager::prepareBuffer() -{ -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->UseScratchHeaps(TRUE); -#endif -#endif - - for (u32 i = 0; i < cBufferCount; i++) { - mpCapBuf[i] = -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - new u16 [ cPhotoWidth * cPhotoHeight ]; -#else -#ifdef TWL_IPL_USE_RED_IPL - (u16*)MenuSys()->getRedIplMgr()->allocCameraCaptureScratchBuffer(cPhotoWidth * cPhotoHeight * sizeof(u16)); -#else - new( mpHeap ) u16 [ cPhotoWidth * cPhotoHeight ]; -#endif -#endif - IPL_ASSERT( mpCapBuf[i] ); - IPL_PRINT("mpCapBuf[%d]=%x\n", i, mpCapBuf[i]); - } - - mpEncodeWork = -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - new encodeWork; -#else - new u8 [ SSP_JpegEncoderGetBufferSize(cPhotoWidth, cPhotoHeight, cEncodeSampling, mEncodeOption) ]; -#endif -#else -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#ifdef TWL_IPL_USE_RED_IPL - (encodeWork*)MenuSys()->getRedIplMgr()->allocJpegEncodeScratchBuffer(sizeof(encodeWork)); -#else - new ( mpHeap ) encodeWork; -#endif -#else -#ifdef TWL_IPL_USE_RED_IPL - (u8*)MenuSys()->getRedIplMgr()->allocJpegEncodeScratchBuffer(SSP_JpegEncoderGetBufferSize(cPhotoWidth, cPhotoHeight, cEncodeSampling, mEncodeOption)); -#else - new ( mpHeap ) u8 [ SSP_JpegEncoderGetBufferSize(cPhotoWidth, cPhotoHeight, cEncodeSampling, mEncodeOption) ]; -#endif -#endif -#endif - IPL_ASSERT( mpEncodeWork ); - - IPL_PRINT("mpEncodeWork=%x\n", mpEncodeWork); - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - mpEncodeResult = new u8 [ cEncodeResultSizeMax ]; IPL_ASSERT( mpEncodeResult ); -#endif - - // invalidate capture buffers - DC_FlushAll(); -} - -void Manager::destroyBuffer() -{ - // Žg—p’†‚Å‚à‹­ˆø‚É”jŠü‚·‚éB - IPL_ASSERT( !mpCaptureBuf ); - IPL_ASSERT( !mpConvBuf ); - IPL_ASSERT( !mpNextConvBuf ); - IPL_ASSERT( !mpShotBuf ); - - mpCaptureBuf = NULL; - mpConvBuf = NULL; - mpNextConvBuf = NULL; - mpShotBuf = NULL; - - { - OSIntrMode enabled = OS_DisableInterrupts(); - - for (u32 i = 0; i < cBufferCount; i++) { - IPL_ASSERT( !mIsCapBufUsed[i] ); - mIsCapBufUsed[i] = FALSE; - if (mpCapBuf[i]) { -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - delete [] mpCapBuf[i]; -#else -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->freeCameraCaptureScratchBuffer(mpCapBuf[i]); -#else - delete [] mpCapBuf[i]; -#endif -#endif - mpCapBuf[i] = NULL; - } - } - - if (mpEncodeWork) { -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - delete mpEncodeWork; -#else - delete [] mpEncodeWork; -#endif -#else -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->freeJpegEncodeScratchBuffer(mpEncodeWork); -#else - delete mpEncodeWork; -#endif -#else -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->freeJpegEncodeScratchBuffer(mpEncodeWork); -#else - delete [] mpEncodeWork; -#endif -#endif -#endif - mpEncodeWork = NULL; - } - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - if (mpEncodeResult) { - delete [] mpEncodeResult; - mpEncodeResult = NULL; - } -#endif - - OS_RestoreInterrupts(enabled); - } - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -#ifdef TWL_IPL_USE_RED_IPL - MenuSys()->getRedIplMgr()->UseScratchHeaps(FALSE); -#endif -#endif - -} - -// (mpNextConvBuf != NULL) ‚Ìꇂɂ̂݌Ă΂ê‚éB -void Manager::useNextConvBuf() -{ - OSIntrMode enabled = OS_DisableInterrupts(); - - if (mpConvBuf) { - freeCapBufByPtr((u16*)mpConvBuf); - } - mpConvBuf = mpNextConvBuf; - mpNextConvBuf = NULL; - OS_RestoreInterrupts(enabled); - - // invalidate capture buffers - DC_FlushAll(); - - IPL_PRINT("using NextConvBuf\n"); -} - -BOOL Manager::convert(BOOL shot) -{ - // •ÏŠ·‚µ‚È‚¢‚ÅŽB‰e‚݂̂Ƃ©A - // ŽB‰e’†‚ɃLƒƒƒvƒ`ƒƒ‚ðŒp‘±‚·‚邱‚ƂɂÍA‚Ü‚¾‘Ήž‚µ‚Ä‚¢‚È‚¢B - if (!mpConvBuf && !mpNextConvBuf) { - IPL_HALT("(!mpConvBuf && !mpNextConvBuf)\n"); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - - return FALSE; - } - - while (mTexSwap || - mTexBank == mVramType[mTarget]) { - // •ÏŠ·Œ‹‰Êo—Íæ‚ÌVRAM‚ðLCDC‚ÖŠ„‚è“–‚Ä‚ç‚ê‚È‚¢‚Ì‚ÅA - // ­‚µsleepB - // ‚Ü‚¾ƒXƒŒƒbƒhENDƒŠƒNƒGƒXƒg‚̃`ƒFƒbƒN‚ð‚µ‚Ä‚¢‚È‚¢‚Ì‚ÅA - // I—¹Žž‚ɂ͂܂ç‚È‚¢‚悤’ˆÓB - OS_Sleep(1); - } - mNextTexBank = mVramType[mTarget]; - GX_SetBankForLCDC( mNextTexBank ); - - if (mpNextConvBuf) { - // ŽB‰eƒf[ƒ^‚ª‘¶ÝB - // mpConvBuf‚Í”jŠü‚·‚éB - useNextConvBuf(); - shot = TRUE; - } - - // ƒLƒƒƒvƒ`ƒƒÏ‚݃f[ƒ^‚Ìinvalidate‚ÍÏ‚ñ‚Å‚¢‚éB -retry: - Shrink640Yuv422To256Rgb555(const_cast(mpConvBuf), mVramAddr[mTarget], mShotHgt, mpDtcmWork->mShrinkBuf); - - // ‚±‚±‚Å‚àmpNextConvBuf‚ðƒ`ƒFƒbƒN‚·‚éB - if (mpNextConvBuf) { - // ŽB‰eƒf[ƒ^‚ª‘¶ÝB - // mpConvBuf‚Í”jŠü‚·‚éB - useNextConvBuf(); - shot = TRUE; - goto retry; - } - - // ƒXƒŒƒbƒh—Dæ“x‚ð’Êí‚æ‚è‚‚­‚·‚éB - OS_SetThreadPriority(OS_GetCurrentThread(), menu::sys::Object::cThreadPriority_CameraLowerHi); - { - OSIntrMode enabled = OS_DisableInterrupts(); - - procPostConvert(shot); - - OS_RestoreInterrupts(enabled); - } - - if (mMode == eMode_BG) { - mTexSwap = TRUE; - } else { - // eMode_Tex - if (mpGxUserProc) { - mpGxUserProc(mVramAddr[mTarget], shot); - } - } - - mTarget ^= 1; - - OS_SetThreadPriority(OS_GetCurrentThread(), menu::sys::Object::cThreadPriority_CameraLowerLo); - - if (!shot) { - // invalidate capture buffer for next capture - DC_FlushAll(); - } - - return shot; -} - -/*! - ƒJƒƒ‰ƒ}ƒl[ƒWƒƒ‚ðŠ®‘SI—¹‚·‚é - */ -BOOL Manager::tryDestroy() -{ - // ƒXƒŠ[ƒv‰Â”\‚ÈðŒ‚܂ő҂ÂB - if (!tryPrepareToSleep()) { - return FALSE; - } - - if (mInitFlag) { - OS_SignalEvent(&mLowerEvent, - cEventMaskLower_DisableIntrAndDestroyBuffer); - return FALSE; - } else { - if (mPreInitFlag) { - OS_SignalEvent(&mLowerEvent, - cEventMaskLower_Destroy); - - if (OS_IsThreadTerminated(&mLowerThread)) { - // Äæs‰Šú‰»‚ª•K—vB - mPreInitFlag = FALSE; - return TRUE; - } - return FALSE; - } - } - return TRUE; -} - - -void Manager::activate() -{ - startCapture(mNextCmr); -} - - -void Manager::startCapture(CAMERASelect sel_cmr) -{ - mNextCmr = sel_cmr; - mNextCaptureFlag = TRUE; - // CAMERA_Init()‚̈—‚ªŠ®—¹‚µ‚Ä‚¢‚È‚¢‚©‚à‚µ‚ê‚È‚¢‚̂Š- // ‚¢‚«‚È‚èI2Cˆ——v‹‚Ì‘—M‚͂ł«‚È‚¢B - OS_SignalEvent(&mLowerEvent, cEventMaskLower_Activate); -} - - -// TRUE‚ª•Ô‚ê‚ÎAŽB‰e—v‹‚ª¬Œ÷‚µ‚½B -// FALSE‚È‚çAޏ”sB(ŽB‰eˆ—“r’†‚ÅŽŸ‚ÌŽB‰e‚ð‚³‚¹‚È‚¢) -BOOL Manager::shoot(BOOL keepCapture) -{ - OSIntrMode enabled; - - // ‚Ƃ肠‚¦‚¸˜AŽË‚Í–³‚µB - // ŽB‰eˆ—‚ɂ͎žŠÔ‚ª‚©‚©‚é‚Ì‚ÅAŽB‰e’†‚â•Û‘¶’†(!mCaptureFlag)‚È‚çŽB‰e‚³‚¹‚È‚¢B - if (mNextShotFlag || mShotFlag || !mCaptureFlag) { - return FALSE; - } - - // ŠOƒJƒƒ‰‚ÌLED§Œä(“_“”¨“_–Å)‚ÍA‚È‚é‚ׂ­‘‚­LED‚ðÁ‚· - // (ŽcŒõ‚ª‰f‚螂ނ̂ð–h‚®)‚½‚ßA‚±‚±‚Ås‚¢‚½‚¢B - // ‚µ‚©‚µŠOƒJƒƒ‰‚ÉØ‚è‘Ö‚¦—v‹‚ªo‚Ä‚¢‚é“r’†‚ÍA‚Ü‚¾“àƒJƒƒ‰‚Ȃ̂łł«‚È‚¢B - // CAMERA_RESULT_ILLEGAL_STATUS (6) ‚ª•Ô‚éB - // ‚Ç‚Á‚¿‚Ý‚¿AƒJƒƒ‰‚ðØ‚è‘Ö‚¦‚½’¼Œã‚̓sƒ“ƒ{ƒP‚·‚é‚Ì‚Å1ƒtƒŒ[ƒ€‘Ò‚Â - // ‚±‚ƂɂȂ邵A‚±‚±‚Å‚ÍLED§Œä‚ðs‚í‚È‚¢B - - enabled = OS_DisableInterrupts(); - - if (!keepCapture) { - mNextCaptureFlag = FALSE; - } - mNextShotFlag = TRUE; - - OS_RestoreInterrupts(enabled); - - return TRUE; -} - -BOOL Manager::tryPrepareToSleep() -{ - stopCapture(); - - if (// æs‰Šú‰»’†‚È‚çƒ_ƒB - (mPreInitFlag && mPreInitBusyFlag) || - // ‰Šú‰»’†‚È‚çƒ_ƒB - (mInitFlag && mInitBusyFlag) || - // ƒLƒƒƒvƒ`ƒƒ’†‚È‚çƒ_ƒB - mCaptureFlag || - mNextCaptureFlag || - mpCaptureBuf || - // •ÏŠ·’†‚È‚çƒ_ƒB - mpConvBuf || - mpNextConvBuf || - // ŽB‰e’†‚È‚çƒ_ƒB - mShotFlag || - mNextShotFlag || - mpShotBuf || - // ƒVƒƒƒbƒ^[‰¹Ä¶’†‚È‚çƒ_ƒB -// (!isFinishedShutterSnd()) || - // •Û‘¶’†‚È‚çƒ_ƒB - mEncodeBusyFlag || - // I2Cˆ—’†‚È‚çƒ_ƒB - mI2cBusy) { - return FALSE; - } - - if (mSelCmr != CAMERA_SELECT_NONE || - mNextCmr != CAMERA_SELECT_NONE) { - // ƒJƒƒ‰‹N“®’†‚È‚çƒ_ƒB - mNextCmr = CAMERA_SELECT_NONE; - return FALSE; - } - - return TRUE; -} - -#include - -// pDtcm‚É‚Íu32[256*2] (2048 Bytes)‚Ìì‹Æ—̈悪•K—v‚Å‚·B -// ì‹Æ—̈æ‚ÉDTCMˆÈŠO‚̃ƒ‚ƒŠ‚ðŠ„‚è“–‚Ä‚½ê‡‚É‚Í -// ƒpƒtƒH[ƒ}ƒ“ƒX‚ª‘å‚«‚­’ቺ‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B -// little endian only -asm void Manager::Shrink640Yuv422To256Rgb555( register const void* src, register void* dst, register u32 height, register void* pDtcm ) -{ -#define ORIGINAL_WIDTH 640 -#define SHRINK_WIDTH 256 // must be even -#define SHRINK_TMP_BYTES_PER_PIXEL 4 -#define SHRINK_TMP_HEIGHT 2 -// loopCounters bits: -// d31-d25: (64 x 2) loop counter -// (d31-d24: dst loop counter) -// d23-d22: (2 or 3) loop counter -// d09-d00: height loop counter (0-511) << 1 -#define LOOP_COUNTERS_INNER_SHIFT 25 -#define LOOP_COUNTERS_DST_SHIFT 24 -#define LOOP_COUNTERS_ODD_LINE_SHIFT 22 -#define LOOP_COUNTERS_ODD_LINE_MASK_SHIFT 23 -#define LOOP_COUNTERS_HEIGHT_BIT_WIDTH 10 -// registers -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3-r11,lr -#define loopCounters height - -// keep order for ldm/stm -#define t0 r12 -#define t1 lr -#define yuyv0 r4 -#define yuyv1 r5 -#define yuyv2 r6 -#define yuyv3 r7 -#define uv r8 - -#define CONST_REGS0 r9 -#define const_0x01fe01fe r9 - -// yuv2rgb -#define y0 yuyv0 -#define y1 yuyv1 -#define rgba yuyv2 -#define const_0x80008000 const_0x01fe01fe -#define CONST_REGS1 const_H1_402_L1_772,const_Hm0_344_Lm0_714 -#define const_H1_402_L1_772 r10 -#define const_Hm0_344_Lm0_714 r11 - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldr t0, =@constants1 - ldr const_0x01fe01fe, =0x01fe01fe - ldmia t0, {CONST_REGS1} - - // height << 1 and adjust loop counter - mov loopCounters, height, lsl #1 - sub loopCounters, loopCounters, #1 - -@480: - // (480/2.5) = 192 loops - -@640: - // (64 x 2) loops - -@64: - ldmia src!, {yuyv0, yuyv1, yuyv2, yuyv3, uv} - - and t0, const_0x01fe01fe, yuyv0, lsr #7 - and t1, const_0x01fe01fe, yuyv1, lsr #7 - and yuyv0, const_0x01fe01fe, yuyv0, lsl #1 - and yuyv1, const_0x01fe01fe, yuyv1, lsl #1 - add yuyv0, yuyv0, yuyv0, lsl #16 - mov yuyv0, yuyv0, lsr #16 - add yuyv1, yuyv1, yuyv1, lsr #16 - orr yuyv0, yuyv0, yuyv1, lsl #16 // ave. y << 1 - add yuyv1, t0, t1 // ave. uv << 1 - - and t0, const_0x01fe01fe, yuyv2, lsr #7 - and t1, const_0x01fe01fe, yuyv3, lsr #7 - add t1, t1, t0, lsr #1 - and t0, const_0x01fe01fe, uv, lsr #7 - - and yuyv2, const_0x01fe01fe, yuyv2, lsr #16-1 - and yuyv3, const_0x01fe01fe, yuyv3, lsl #1 - add yuyv2, yuyv2, yuyv3 - and uv, const_0x01fe01fe, uv, lsl #16+1 - add yuyv2, yuyv2, uv // ave. y << 1 - - add yuyv3, t1, t0, lsr #1 // ave. uv << 1 - - stmia pDtcm!, {yuyv0, yuyv1, yuyv2, yuyv3} - - adds loopCounters, loopCounters, #1 << LOOP_COUNTERS_INNER_SHIFT - bcc @64 - - sub pDtcm, pDtcm, #SHRINK_TMP_BYTES_PER_PIXEL * SHRINK_WIDTH * SHRINK_TMP_HEIGHT - ldr const_0x80008000, =0x80008000 -@yuv2rgb_loop: - ldmia pDtcm!, {y1, uv} - ldr t0, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 1 - SHRINK_TMP_BYTES_PER_PIXEL * 2] - ldr t1, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 1 - SHRINK_TMP_BYTES_PER_PIXEL * 2 + SHRINK_TMP_BYTES_PER_PIXEL] - add y1, y1, t0 - add uv, uv, t1 - - // original formula: - // R = Y + 1.402*(V-128) - // G = Y - 0.344*(U-128) - 0.714*(V-128) - // B = Y + 1.772*(U-128) - // - // y1: (sum y0y1 of 4 pixels) << 1 - // uv: (sum uv of 4 pixels) << 1 - // - // then, - // R = (sumY/2 + (1.402/2)*(sumV-128*2*4)) / 4 - // G = (sumY/2 - (0.344/2)*(sumU-128*2*4) - (0.714/2)*(sumV-128*2*4)) / 4 - // B = (sumY/2 + (1.772/2)*(sumU-128*2*4)) / 4 - // - // or - // R = sumY/8 + (1.402/8)*(sumV-128*2*4) - // G = sumY/8 - (0.344/8)*(sumU-128*2*4) - (0.714/8)*(sumV-128*2*4) - // B = sumY/8 + (1.772/8)*(sumU-128*2*4) - // - // sumY max is 0xff*2*4 = 0x07f8 - // sumU, sumV max is 0xff*2*4 = 0x07f8 - // 0x07f8 << 20 =0x7f800000 - - // sumY /= 8; and normalize to 0x7f800000 - mov y0, y1, lsl #20 - mov y1, y1, lsr #16 - mov y1, y1, lsl #20 - - // normalize sumU, sumV and -= 128*2*4 - mov uv, uv, lsl #5 - eor uv, uv, const_0x80008000 - - // Green - // -(0.714/8)*sumV - smulbt t0, const_Hm0_344_Lm0_714, uv - // -(0.344/8)*sumU - smultb t1, const_Hm0_344_Lm0_714, uv - mov rgba, const_0x80008000 - add t1, t0, t1 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #21 // 0x7c000000 -> 0x000003e0 - ands t0, t1, #0xfc000000 - - // Red - // (1.402/8)*sumV - smultt t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #21-16 // 0x7c000000 -> 0x03e00000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26 // 0x7c000000 -> 0x0000001f - ands t0, t1, #0xfc000000 - - // Blue - // (1.772/8)*sumU - smulbb t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #26-16 // 0x7c000000 -> 0x001f0000 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #16 // 0x7c000000 -> 0x00007c00 - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0 // 0x7c000000 - - str rgba, [dst], #4 - adds loopCounters, loopCounters, #2 << LOOP_COUNTERS_DST_SHIFT // 2 pixels at once - bcc @yuv2rgb_loop - - add loopCounters, loopCounters, #1 << LOOP_COUNTERS_ODD_LINE_SHIFT - tst loopCounters, #1 << LOOP_COUNTERS_ODD_LINE_MASK_SHIFT - // skip 1 line - addne src, src, #ORIGINAL_WIDTH * sizeof(u16) - bicne loopCounters, loopCounters, #1 << LOOP_COUNTERS_ODD_LINE_MASK_SHIFT - - sub pDtcm, pDtcm, #SHRINK_TMP_BYTES_PER_PIXEL * SHRINK_WIDTH - ldr const_0x01fe01fe, =0x01fe01fe - -@yuv2rgb_done: - // (-2.5) << 1 - subs loopCounters, loopCounters, #5 - bcs @480 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -@constants1: - dcd 0x59ba7168 // ((1.402 * 0x4000) << 16) | ((1.772 * 0x4000) & 0xffff) - dcd 0xe9fcd24e // ((-0.344 * 0x4000) << 16) | ((-0.714 * 0x4000) & 0xffff) - -#undef ORIGINAL_WIDTH -#undef SHRINK_WIDTH -#undef SHRINK_TMP_BYTES_PER_PIXEL -#undef SHRINK_TMP_HEIGHT -#undef LOOP_COUNTERS_INNER_SHIFT -#undef LOOP_COUNTERS_DST_SHIFT -#undef LOOP_COUNTERS_ODD_LINE_SHIFT -#undef LOOP_COUNTERS_ODD_LINE_MASK_SHIFT -#undef LOOP_COUNTERS_HEIGHT_BIT_WIDTH - -#undef SAVE_REGS -#undef loopCounters -#undef t0 -#undef t1 - -#undef yuyv0 -#undef yuyv1 -#undef yuyv2 -#undef yuyv3 -#undef uv - -#undef CONST_REGS0 -#undef const_0x01fe01fe - -#undef y0 -#undef y1 -#undef rgba -#undef const_0x80008000 -#undef CONST_REGS1 -#undef const_H1_402_L1_772 -#undef const_Hm0_344_Lm0_714 -} - - -// ‚Ü‚¾480 lines‚ł͂Ȃ­A156*3 lines‚Å‚µ‚©ˆ—‚µ‚Ä‚¢‚È‚¢B -// ¬”Ø‚èŽÌ‚ĂŖâ‘è‚È‚¢‚Ì‚©AØ‚èã‚°‚é‚Ì‚©H -// pDtcm‚É‚Íu32[208*3] (2496 Bytes)‚Ìì‹Æ—̈悪•K—v‚Å‚·B -// ì‹Æ—̈æ‚ÉDTCMˆÈŠO‚̃ƒ‚ƒŠ‚ðŠ„‚è“–‚Ä‚½ê‡‚É‚Í -// ƒpƒtƒH[ƒ}ƒ“ƒX‚ª‘å‚«‚­’ቺ‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B -// little endian only -asm void Manager::Shrink640Yuv422To208Rgb555( register const void* src, register void* dst, register u32 height, register void* pDtcm ) -{ -#define ORIGINAL_WIDTH 640 -#define SHRINK_WIDTH 208 // must be even -#define SHRINK_TMP_BYTES_PER_PIXEL 4 -#define SHRINK_TMP_HEIGHT 3 -// loopCounters bits: -// d31-d28: (6 + 7) loop counter -// d27-d24: (6 + 7) x 8 loop counter -// (d31-d24: dst loop counter) -// d23-d22: dtcm line loop counter -// d21-d09: unused -// d08-d00: height loop counter (0-511) -#define LOOP_COUNTERS_INNER_SHIFT 28 -#define LOOP_COUNTERS_LINE_SHIFT 24 -#define LOOP_COUNTERS_DST_SHIFT 24 -#define LOOP_COUNTERS_DTCM_LINE_SHIFT 22 -#define LOOP_COUNTERS_DTCM_LINE_MASK 0x3 -#define LOOP_COUNTERS_HEIGHT_BIT_WIDTH 9 -// registers -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3-r11,lr -#define loopCounters height - -// keep order for ldm/stm -#define t0 r12 -#define t1 lr -#define yuyv0 r4 -#define yuyv1 r5 -#define yuyv2 r6 -#define yuyv3 r7 -#define uv r8 - -#define CONST_REGS0 r9,r10,r11 -#define const_0x01fe01fe r9 -#define const_0x00001c73 r10 -#define const_0x00000e39 r11 - -// register pair (be careful about order) -#define YYUV_REGS0 yuyv1,uv -#define YYUV_REGS1 yuyv1,t1 - -// yuv2rgb -#define y0 yuyv0 -#define y1 yuyv1 -#define rgba yuyv2 -#define CONST_REGS1 const_0x000717c2,const_0x80008000,const_H1_402_L1_772,const_Hm0_344_Lm0_714 -#define const_0x000717c2 yuyv3 -#define const_0x80008000 const_0x01fe01fe -#define const_H1_402_L1_772 const_0x00001c73 -#define const_Hm0_344_Lm0_714 const_0x00000e39 - - ldr t0, =@constants0 - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - - ldmia t0, {CONST_REGS0} - - // dtcm line loop - // loopCounters and height may differ - add loopCounters, height, #SHRINK_TMP_HEIGHT << LOOP_COUNTERS_DTCM_LINE_SHIFT - -@480: - // (6 + 7) x 8 loops = 8,9,a,b,c,d,e,f - // adjust (6 + 7) loop counter, from minus - add loopCounters, loopCounters, #(8 << LOOP_COUNTERS_LINE_SHIFT) - (1 << LOOP_COUNTERS_INNER_SHIFT) - -@640: - // 6 loops - add loopCounters, loopCounters, #6 << LOOP_COUNTERS_INNER_SHIFT -@6: - ldmia src!, {yuyv0, yuyv1, yuyv2} - - and t0, const_0x01fe01fe, yuyv0, lsr #7 - and t1, const_0x01fe01fe, yuyv1, lsr #7 - add t0, t0, t1 - and t1, const_0x01fe01fe, yuyv2, lsr #7 - add uv, t0, t1 // sum uv << 1 - - and yuyv0, const_0x01fe01fe, yuyv0, lsl #1 - and yuyv1, const_0x01fe01fe, yuyv1, lsl #1 - add yuyv0, yuyv0, yuyv0, lsl #16 - add yuyv1, yuyv1, yuyv0, lsr #16 // sum y0 << 1 - - and yuyv2, const_0x01fe01fe, yuyv2, lsl #1 - add yuyv2, yuyv2, yuyv2, lsr #16 - add yuyv1, yuyv1, yuyv2, lsl #16 // sum y1 << 1 - stmia pDtcm!, {YYUV_REGS0} - - subs loopCounters, loopCounters, #1 << LOOP_COUNTERS_INNER_SHIFT - bpl @6 - - // 7 loops - add loopCounters, loopCounters, #7 << LOOP_COUNTERS_INNER_SHIFT - ldmia src!, {yuyv0, yuyv1, yuyv2, yuyv3} - and uv, const_0x01fe01fe, yuyv0, lsr #7 - and yuyv0, const_0x01fe01fe, yuyv0, lsl #1 -@7: - and t0, const_0x01fe01fe, yuyv1, lsr #7 - add t0, t0, uv, lsr #1 - and t1, const_0x01fe01fe, yuyv2, lsr #7 - add t0, t0, t1 - and uv, const_0x01fe01fe, yuyv3, lsr #7 - add t1, t0, uv, lsr #1 // sum uv << 1 - - and yuyv1, const_0x01fe01fe, yuyv1, lsl #1 - add yuyv1, yuyv1, yuyv0, lsr #16 - add yuyv1, yuyv1, yuyv1, lsl #16 - mov yuyv1, yuyv1, lsr #16 // sum y0 << 1 - - and yuyv2, const_0x01fe01fe, yuyv2, lsl #1 - and yuyv0, const_0x01fe01fe, yuyv3, lsl #1 - add yuyv2, yuyv2, yuyv0, lsl #16 - add yuyv2, yuyv2, yuyv2, lsr #16 - orr yuyv1, yuyv1, yuyv2, lsl #16 // sum y1 << 1 - - stmia pDtcm!, {YYUV_REGS1} - subs loopCounters, loopCounters, #1 << LOOP_COUNTERS_INNER_SHIFT - ldmplia src!, {yuyv1, yuyv2, yuyv3} - bpl @7 - - adds loopCounters, loopCounters, #1 << LOOP_COUNTERS_LINE_SHIFT - bmi @640 - - sub loopCounters, loopCounters, #1 << LOOP_COUNTERS_DTCM_LINE_SHIFT - tst loopCounters, #LOOP_COUNTERS_DTCM_LINE_MASK << LOOP_COUNTERS_DTCM_LINE_SHIFT - bne @yuv2rgb_done - - ldr t0, =@constants1 - add loopCounters, loopCounters, #SHRINK_TMP_HEIGHT << LOOP_COUNTERS_DTCM_LINE_SHIFT - ldmia t0, {CONST_REGS1} - - add loopCounters, loopCounters, #(0x100 - SHRINK_WIDTH) << LOOP_COUNTERS_DST_SHIFT - sub pDtcm, pDtcm, #SHRINK_TMP_BYTES_PER_PIXEL * SHRINK_WIDTH * SHRINK_TMP_HEIGHT -@yuv2rgb_loop: - ldmia pDtcm!, {y0, uv} - ldr t0, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 1 - SHRINK_TMP_BYTES_PER_PIXEL * 2] - ldr t1, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 1 - SHRINK_TMP_BYTES_PER_PIXEL * 2 + SHRINK_TMP_BYTES_PER_PIXEL] - add y0, y0, t0 - ldr t0, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 2 - SHRINK_TMP_BYTES_PER_PIXEL * 2] - add uv, uv, t1 - ldr t1, [pDtcm, #SHRINK_WIDTH * SHRINK_TMP_BYTES_PER_PIXEL * 2 - SHRINK_TMP_BYTES_PER_PIXEL * 2 + SHRINK_TMP_BYTES_PER_PIXEL] - add y0, y0, t0 - add uv, uv, t1 - - // original formula: - // R = Y + 1.402*(V-128) - // G = Y - 0.344*(U-128) - 0.714*(V-128) - // B = Y + 1.772*(U-128) - // - // y0: (sum y0y1 of 9 pixels) << 1 - // uv: (sum uv of 9 pixels) << 1 - // - // then, - // R = (sumY/2 + (1.402/2)*(sumV-128*2*9)) / 9 - // G = (sumY/2 - (0.344/2)*(sumU-128*2*9) - (0.714/2)*(sumV-128*2*9)) / 9 - // B = (sumY/2 + (1.772/2)*(sumU-128*2*9)) / 9 - // - // or - // R = sumY/18 + (1.402/18)*(sumV-128*2*9) - // G = sumY/18 - (0.344/18)*(sumU-128*2*9) - (0.714/18)*(sumV-128*2*9) - // B = sumY/18 + (1.772/18)*(sumU-128*2*9) - // - // sumY max is 0xff*2*9 = 0x11ee - // sumU, sumV max is 0xff*2*9 = 0x11ee - // 0x11ee*0x717c2=0x7f8003fc - - // sumY /= 2*9; and normalize to 0x7f800000 - mov t0, y0, lsr #16 - mul y1, const_0x000717c2, t0 - eor t0, y0, t0, lsl #16 - mul y0, const_0x000717c2, t0 - - // sumV -= 128*2*9 - sub uv, uv, #0x900 << 16 - - // Red - // (1.402/18)*sumV - smultt t1, const_H1_402_L1_772, uv - mov rgba, const_0x80008000 - // normalize - mov t1, t1, lsl #8 - - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26 // 0x7c000000 -> 0x0000001f - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0, lsr #26-16 // 0x7c000000 -> 0x001f0000 - - // Green - // -(0.714/18)*sumV - smulbt t0, const_Hm0_344_Lm0_714, uv - // sumU -= 128*2*9 - sub uv, uv, #0x900 - // -(0.344/18)*sumU - smultb t1, const_Hm0_344_Lm0_714, uv - // normalize - mov t0, t0, lsl #8 - add t1, t0, t1, lsl #8 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #21 // 0x7c000000 -> 0x000003e0 - ands t0, t1, #0xfc000000 - - // Blue - // (1.772/18)*sumU - smulbb t1, const_H1_402_L1_772, uv - orrpl rgba, rgba, t0, lsr #21-16 // 0x7c000000 -> 0x03e00000 - // normalize - mov t1, t1, lsl #8 - // +Y - qdadd t0, y0, t1 - qdadd t1, y1, t1 - ands t0, t0, #0xfc000000 - orrpl rgba, rgba, t0, lsr #16 // 0x7c000000 -> 0x00007c00 - ands t0, t1, #0xfc000000 - orrpl rgba, rgba, t0 // 0x7c000000 -> 0x7c000000 - - str rgba, [dst], #4 - adds loopCounters, loopCounters, #2 << LOOP_COUNTERS_DST_SHIFT // 2 pixels at once - bcc @yuv2rgb_loop - - ldr t0, =@constants0 - add dst, dst, #(HW_LCD_WIDTH - SHRINK_WIDTH) * sizeof(u16) - sub pDtcm, pDtcm, #SHRINK_TMP_BYTES_PER_PIXEL * SHRINK_WIDTH - ldmia t0, {CONST_REGS0} - -@yuv2rgb_done: - sub loopCounters, loopCounters, #1 - movs t0, loopCounters, lsl #32 - LOOP_COUNTERS_HEIGHT_BIT_WIDTH - bne @480 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -@constants0: - dcd 0x01fe01fe - dcd 0x00001c73 - dcd 0x00000e39 - -@constants1: - dcd 0x000717c2 - dcd 0x80008000 - dcd 0x04fc064c // (((1.402/18) * 0x4000) << 16) | (((1.772/18) * 0x4000) & 0xffff) - dcd 0xfec7fd77 // (((-0.344/18) * 0x4000) << 16) | (((-0.714/18) * 0x4000) & 0xffff) - - -#undef ORIGINAL_WIDTH -#undef SHRINK_WIDTH -#undef SHRINK_TMP_BYTES_PER_PIXEL -#undef SHRINK_TMP_HEIGHT -#undef LOOP_COUNTERS_INNER_SHIFT -#undef LOOP_COUNTERS_LINE_SHIFT -#undef LOOP_COUNTERS_DST_SHIFT -#undef LOOP_COUNTERS_DTCM_LINE_MASK -#undef LOOP_COUNTERS_DTCM_LINE_SHIFT -#undef LOOP_COUNTERS_HEIGHT_BIT_WIDTH - -#undef SAVE_REGS -#undef loopCounters -#undef t0 -#undef t1 - -#undef yuyv0 -#undef yuyv1 -#undef yuyv2 -#undef yuyv3 -#undef uv - -#undef CONST_REGS0 -#undef const_0x01fe01fe -#undef const_0x00001c73 -#undef const_0x00000e39 - -#undef YYUV_REGS0 -#undef YYUV_REGS1 - -#undef y0 -#undef y1 -#undef rgba -#undef CONST_REGS1 -#undef const_0x000717c2 -#undef const_0x80008000 -#undef const_H1_402_L1_772 -#undef const_Hm0_344_Lm0_714 -} - -// width‚Í16‚Ì”{”(16..640)Aheight‚Í2‚Ì”{”(2..480)‚Å‚ ‚é•K—v‚ª‚ ‚è‚Ü‚·B -// src‚ÍÅ’á4ƒoƒCƒgƒAƒ‰ƒCƒ“ƒƒ“ƒg‚Å‚·B -// pYCbCrBuf‚àÅ’á4ƒoƒCƒgƒAƒ‰ƒCƒ“ƒƒ“ƒg‚Å‚·‚ªAŠeƒfƒoƒCƒX‚Ƃ̘AŒg‚É -// ”õ‚¦‚Ä32ƒoƒCƒgƒAƒ‰ƒCƒ“ƒƒ“ƒg‚µ‚Ä‚­‚¾‚³‚¢B -// pYCbCrBuf‚ÍAY¬•ªACb¬•ªACr¬•ªˆêЇ‚ÅŠm•Û‚µ‚Ä‚­‚¾‚³‚¢BƒTƒCƒY‚Í -// Y¬•ª: width*height*sizeof(u16) Bytes -// Cb¬•ª: ((width*height)/4)*sizeof(u16)) Bytes -// Cr¬•ª: ((width*height)/4)*sizeof(u16)) Bytes -// ˆÈã‚̇Œv (width*height*3/2)*sizeof(u16) Bytes‚Å‚·B -// (‚‚܂茳‰æ‘œƒf[ƒ^ƒTƒCƒY‚Ì1.5”{) -// pDtcm_‚É‚Íu32[16+4+4] (96 Bytes)‚Ìì‹Æ—̈悪•K—v‚Å‚·B -// ì‹Æ—̈æ‚ÉDTCMˆÈŠO‚̃ƒ‚ƒŠ‚ðŠ„‚è“–‚Ä‚½ê‡‚É‚Í -// ƒpƒtƒH[ƒ}ƒ“ƒX‚ª‘å‚«‚­’ቺ‚·‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B -// “ü—Ísrc‚ÍCAMERAƒfƒoƒCƒX‚ªYUV‚ŃLƒƒƒvƒ`ƒƒ‚µ‚½Œ`Ž® -// (Y 8bit,U 8bit,Y 8bit,V 8bit)‚Å‚·B -// o—ÍpYCbCrBuf‚ÍDSP JPEGƒGƒ“ƒR[ƒ_‚Ö‚Ì“ü—ÍŒ`Ž® -// (Y,Y,Y,Y,..., U,..., V,..., Še16bit)‚Å‚·B -// “à•”‚Ńf[ƒ^ƒLƒƒƒbƒVƒ…‚̧Œä‚Ís‚Á‚Ä‚¢‚È‚¢‚½‚ßAŒ‹‰Ê‚ð -// DSP“™‚Ö“n‚·‘O‚ÉFlush‚ ‚é‚¢‚ÍStore‚·‚é•K—v‚ª‚ ‚è‚Ü‚·B -asm void Manager::Convert8bitYuv422To16bitYuv420( register const u32* src, register u16* pYCbCrBuf, register u32 width, register u32 height, void* pDtcm_ ) -{ -#define BLOCK_WIDTH 16 -// registers -// keep stack frame 8-Bytes aligned -#define SAVE_REGS r3-r11,lr // 10 registers = 40 Bytes -#define STACK_OFFSET_PYCBCRBUF 0 // initial value is r3 -#define STACK_OFFSET_PDTCM 40 -#define pCbBuf pYCbCrBuf -#define widthHeight width -#define pDtcm height -#define pDstY pDtcm -#define pDstCr pDtcm - -// keep order for ldm/stm/ldrd/strd -#define FLUSH_REGS r4-r11 -#define FLUSH_REGS_CB r4,r6,r8,r10 -#define FLUSH_REGS_CR r5,r7,r9,r11 -#define yuyv0 r4 -#define yuyv1 r5 -#define yuyv2 r6 -#define yuyv3 r7 -#define t0 r8 -#define t1 r9 -#define const_0x00ff00ff r11 - -#define loopHeightWidth r12 -#define pDtcmStop lr - - // keep 8-Bytes aligned - stmfd sp!, {SAVE_REGS} - // pDstY initial value is pYCbCrBuf - str pYCbCrBuf, [sp, #STACK_OFFSET_PYCBCRBUF] - - mul t0, width, height - // setup widthHeight before breaking pDtcm - orr widthHeight, height, width, lsl #16 - add pCbBuf, pYCbCrBuf, t0, lsl #1 - - ldr pDtcm, [sp, #STACK_OFFSET_PDTCM] - add pDtcmStop, pDtcm, #BLOCK_WIDTH * sizeof(u16) - - mov loopHeightWidth, widthHeight, lsl #16 - -@480: - add loopHeightWidth, loopHeightWidth, widthHeight, lsr #16 - -@640: - ldr const_0x00ff00ff, =0x00ff00ff - -@blockLoop: - add t0, src, widthHeight, lsr #16-1 // +1(odd) line - ldmia t0, {yuyv2, yuyv3} - ldmia src!, {yuyv0, yuyv1} - - // even line Y - and t0, yuyv0, const_0x00ff00ff - and t1, yuyv1, const_0x00ff00ff - strd t0, [pDtcm, #BLOCK_WIDTH * sizeof(u16)] - -#if 0 - // even line U - and yuyv0, const_0x00ff00ff, yuyv0, lsl #8 - and t0, const_0x00ff00ff, yuyv1, lsl #8 - orr yuyv0, t0, yuyv0, lsr #16 - - // odd line V - and yuyv1, const_0x00ff00ff, yuyv2, lsr #24 - and t0, const_0x00ff00ff, yuyv3, lsr #24 - orr yuyv1, yuyv1, t0, lsl #16 -#else - // even column ave. uv (V0 U0) - and yuyv0, const_0x00ff00ff, yuyv0, lsr #8 - and t0, const_0x00ff00ff, yuyv2, lsr #8 - add yuyv0, yuyv0, t0 - and yuyv0, const_0x00ff00ff, yuyv0, lsr #1 - - // odd column ave. uv (V1 U1) - and yuyv1, const_0x00ff00ff, yuyv1, lsr #8 - and t0, const_0x00ff00ff, yuyv3, lsr #8 - add yuyv1, yuyv1, t0 - and yuyv1, const_0x00ff00ff, yuyv1, lsr #1 - - // V0 U0 => U1 U0 - // V1 U1 V1 V0 - eor t0, yuyv0, yuyv1, ror #16 // V0^U1 U0^V1 - eor yuyv1, yuyv1, t0, lsr #16 // V1 V0 - eor yuyv0, t0, yuyv1, ror #16 // U1 U0 -#endif - - strd yuyv0, [pDtcm, #BLOCK_WIDTH * 2 * sizeof(u16)] - - // odd line Y - and yuyv2, yuyv2, const_0x00ff00ff - and yuyv3, yuyv3, const_0x00ff00ff - - stmia pDtcm!, {yuyv2, yuyv3} - cmp pDtcm, pDtcmStop - bne @blockLoop - -// ‚à‚¤­‚µ‰ü—ǂł«‚é‚©‚à - ldr pDstY, [sp, #STACK_OFFSET_PYCBCRBUF] - ldmdb pDtcmStop, {FLUSH_REGS} - add pDstY, pDstY, widthHeight, lsr #16-1 // +1(odd) line - stmia pDstY, {FLUSH_REGS} - sub pDstY, pDstY, widthHeight, lsr #16-1 // -1(even) line - - ldmia pDtcmStop!, {FLUSH_REGS} - stmia pDstY!, {FLUSH_REGS} - smultb t0, widthHeight, widthHeight - str pDstY, [sp, #STACK_OFFSET_PYCBCRBUF] - - add pDstCr, pCbBuf, t0, lsr #1 - ldmia pDtcmStop, {FLUSH_REGS} - stmia pDstCr, {FLUSH_REGS_CR} - stmia pCbBuf!, {FLUSH_REGS_CB} - - sub pDtcmStop, pDtcmStop, #8 * sizeof(u32) - sub pDtcm, pDtcmStop, #BLOCK_WIDTH * sizeof(u16) - - sub loopHeightWidth, loopHeightWidth, #BLOCK_WIDTH - movs t0, loopHeightWidth, lsl #16 - bne @640 - - ldr t0, [sp, #STACK_OFFSET_PYCBCRBUF] - subs loopHeightWidth, loopHeightWidth, #2 << 16 // 2 lines/loop - addne t0, t0, widthHeight, lsr #16-1 // 2 lines/loop - strne t0, [sp, #STACK_OFFSET_PYCBCRBUF] - addne src, src, widthHeight, lsr #16-1 // 2 lines/loop - bne @480 - - // keep 8-Bytes aligned - ldmfd sp!, {SAVE_REGS} - bx lr - -#undef BLOCK_WIDTH -#undef SAVE_REGS -#undef STACK_OFFSET_PYCBCRBUF -#undef STACK_OFFSET_PDTCM -#undef pCbBuf -#undef widthHeight -#undef pDtcm -#undef pDstY -#undef pDstCr - -#undef FLUSH_REGS -#undef FLUSH_REGS_CB -#undef FLUSH_REGS_CR -#undef yuyv0 -#undef yuyv1 -#undef yuyv2 -#undef yuyv3 -#undef t0 -#undef t1 -#undef const_0x00ff00ff - -#undef loopHeightWidth -#undef pDtcmStop -} - -#include - - -void Manager::procVBlankIntr() -{ - if (mMode == eMode_BG) { - - } else { - // eMode_Tex - if (mTexSwap) { - GX_DisableBankForTex(); - GX_SetBankForTex( GXVRamTex( mNextTexBank ) ); - mTexBank = mNextTexBank; - mTexSwap = FALSE; - mFirstPictureReady = TRUE; - } else { - // cmn‚Åã‘‚«‚³‚ê‚é‰Â”\«‚ª‚ ‚é‚̂ŖˆƒtƒŒ[ƒ€ÄÝ’èB - // GX_DisableBankForTex(); - GX_SetBankForTex( GXVRamTex( mTexBank ) ); - } - } -} - - -void Manager::procCameraIntr() -{ - u32 err = 0; - u32 msg = cMsgI2c_Destroy; // ‚±‚̂܂܂̒l‚ª‘—M‚³‚ꂽ‚çƒvƒƒOƒ‰ƒ€ƒ~ƒXB - -#if SDK_VERSION_DATE < 20080630 - if (mIntrPositiveEdge) { - CAMERA_StopCapture(); - mIntrPositiveEdge = FALSE; - CAMERA_SetVsyncInterrupt(CAMERA_INTR_VSYNC_NEGATIVE_EDGE); - } -#else - // intr edge‚ÍCAMERAƒ‰ƒCƒuƒ‰ƒŠ‚ªƒnƒ“ƒhƒŠƒ“ƒO‚·‚éB -#endif - - if (CAMERA_GetErrorStatus()) { - // error - CAMERA_StopCapture(); - CAMERA_ClearBuffer(); - MI_StopNDma(cDefaultDmaNo); - err = 1; - IPL_PRINT("cameraIntr: status error\n"); - } else { - if (MI_IsNDmaBusy(cDefaultDmaNo)) { - // error - // ‚Ƃ͌¾‚¢Ø‚ê‚È‚¢HÅŒã‚ÌNDMA“]‘—’†‚©‚à‚µ‚ê‚È‚¢H - MI_StopNDma(cDefaultDmaNo); - err = 2; - IPL_PRINT("cameraIntr: NDMA busy\n"); - } - } - - if (err) { - // ƒLƒƒƒvƒ`ƒƒ‚ªŽ¸”s‚µ‚½‚Ì‚ÅAƒŠƒgƒ‰ƒC‚·‚éB - if (mpCaptureBuf) { - freeCapBufByPtr((u16*)mpCaptureBuf); - mpCaptureBuf = NULL; - } - mCaptureRetryCount++; - if (mCaptureRetryCount < cCaptureRetryMax) { - // retry - } else { - // fatal error - IPL_HALT("capture error too much!\n"); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - } - } else { - mCaptureRetryCount = 0; - procPostCapture(); - } - - // I2Cˆ—’†‚͉½‚à‚µ‚È‚¢B - if (mI2cBusy) { - return; - } - - // ƒLƒƒƒvƒ`ƒƒ<=>ŽB‰e‚ʼn𑜓x‚ð•ÏX‚µ‚½’¼Œã‚É‚à•K—vH - if (mCaptureSkipCount) { - mCaptureSkipCount--; - return; - } - - if (mSelCmr != mNextCmr) { - // ƒJƒƒ‰‚ðØ‚è‘Ö‚¦‚邽‚ßI2Cˆ——v‹‚ðo‚·B - // ŠOƒJƒƒ‰‚ÌLED§Œä‚æ‚è‚àæ‚És‚¤B - msg = cMsgI2c_Activate; - // ƒJƒƒ‰Ø‚è‘Ö‚¦’¼Œãˆê’èƒtƒŒ[ƒ€”‚̊Ԃ͉摜‚ªˆÀ’肵‚È‚¢‚̂ŃLƒƒƒvƒ`ƒƒ’âŽ~B - // mSelCmr‚ªNONE‚Ìꇂɂ͂±‚±‚Ö—ˆ‚È‚¢B(ƒJƒƒ‰Š„‚螂݂ª”­¶‚µ‚È‚¢‚½‚ß) - mCaptureSkipCount = 1; - goto sendI2cRequest; - } - - // ƒLƒƒƒvƒ`ƒƒŽž‚ÆŽB‰eŽž‚ʼn𑜓x‚âƒtƒH[ƒ}ƒbƒg‚ªˆÙ‚È‚éê‡A - // ‚±‚±‚ÅI2Cˆ——v‹‚ðo‚·B - // ‚Ü‚¾B - - // ŠOƒJƒƒ‰‚ÌLED§ŒäB - if (!mLedKeepFlag && (mSelCmr == CAMERA_SELECT_OUT)) { - if (mNextShotFlag) { - if (!mCurLedBlink) { - // ŽB‰e‚Ȃ̂œ_“”¨“_–łɂ·‚éB - // ƒVƒƒƒbƒ^[ƒXƒs[ƒh‚𑬂­‚·‚邽‚ߊ„‚螂ݘ_—Ø‚è‘Ö‚¦B - // ¨NDMA busyƒGƒ‰[‚ɂȂÁ‚Ä‚µ‚Ü‚¤‚Ì‚ÅAŠ„‚螂ݘ_—‚ÍØ‚è‘Ö‚¦‚È‚¢B - // Žc”O‚È‚ª‚çLED‚ª‰f‚螂ނ±‚Æ‚ª‚ ‚éH(ƒ}ƒCƒRƒ“‚ªŒÃ‚¢‚¹‚¢H) - - // VBlank Time Intr Line Lines Ticks - // 272 4.5640 CAMERA 13 0 26 // negative edge - // 273 4.5754 V 192 0 17 - // 274 4.5921 V 192 0 6 - // 275 4.6089 V 192 1 33 - // 275 4.6140 CAMERA 10 1 20 // negative edge (+50.0ms from negative edge) - // 275 4.6144 PXI_NE 16 1 19 // SetLEDŠÖŒW ( +0.4ms from negative edge) - // 275 4.6178 CAMERA 70 1 20 // positive edge ( +3.8ms from negative edge) - // 276 4.6256 V 192 0 11 - // 277 4.6423 V 192 0 20 - // 277 4.6474 TM0 9 0 9 - // 278 4.6590 V 192 0 5 - // 278 4.6640 CAMERA 8 9 282 // negative edge (+50.0ms from negative edge) - // *Warning: taking over 100 ticks (over 3 lines) - msg = cMsgI2c_ChangeLedToBlink; - goto sendI2cRequest; -// goto toPositiveEdgeAndSendI2cRequest; - } - } else if (!mShotFlag /* mCaptureFlag */ ) { - // ŽB‰e‚ł͂Ȃ¢‚̂œ_–Ũ“_“”‚É‚·‚éB - // ‚±‚±‚ðuƒLƒƒƒvƒ`ƒƒ‚Ȃ̂Å(mCaptureFlag)v‚É‚·‚邯A - // ƒGƒ“ƒR[ƒhAƒZ[ƒu’†‚É‚ÍmCaptureFlag‚ª—§‚½‚È‚¢‚Ì‚ÅA - // “_–ÅŽžŠÔ‚ª’·‚­‚È‚éB - if (mCurLedBlink) { - // ‰æ–ÊXVƒXƒs[ƒh‚𑬂­‚·‚邽‚ߊ„‚螂ݘ_—Ø‚è‘Ö‚¦B - // VBlank Time Intr Line Lines Ticks - // 281 4.7140 CAMERA 6 0 10 // negative edge - // 282 4.7259 V 192 0 7 - // 283 4.7426 V 192 0 15 - // 284 4.7593 V 192 0 5 - // 284 4.7641 CAMERA 4 0 18 // negative edge (+50.1ms from negative edge) - // 284 4.7645 PXI_NE 11 0 19 // SetLEDŠÖŒW ( +0.4ms from negative edge) - // 284 4.7678 CAMERA 63 1 7 // positive edge ( +3.7ms from negative edge) - // 284 4.7725 TM0 137 0 8 - // 285 4.7760 V 192 0 12 - // 286 4.7927 V 192 0 15 - // 287 4.8094 V 192 0 10 - // 287 4.8140 CAMERA 1 1 14 // negative edge (+49.9ms from negative edge) - msg = cMsgI2c_ChangeLedToOn; - goto sendI2cRequest; -// goto toPositiveEdgeAndSendI2cRequest; - } - } - } - - if (!err) { - mCaptureFlag = mNextCaptureFlag; - mShotFlag = mNextShotFlag; - // ‚Ƃ肠‚¦‚¸’P”­•Û‘¶‚Ì‚ÝB - mNextShotFlag = FALSE; - } - - // ƒŠƒgƒ‰ƒC‰ñ”ãŒÀ‚É’B‚µ‚½ê‡‚Ì‹­§stop‚Í•K—vH - // ‚Ü‚¾B - - if (mSelCmr != CAMERA_SELECT_NONE && - (mCaptureFlag || mShotFlag)) { - IPL_ASSERT( !mpCaptureBuf ); - mpCaptureBuf = procPreCapture(); - if (mpCaptureBuf) { - // ‚±‚±‚¾‚¯ƒŠƒAƒ‹ƒ^ƒCƒ€‚ÉmShot{Wdt,Hgt}<=>mShow{Wdt,Hgt}‚̕ϊ·‚µ‚Ä‚à‚¨‚©‚µ‚­‚È‚é‚æ‚ËH - // transferlines‚àÄݒ肵‚È‚¢‚ÆB - // CAMERA_GetBytesAtOnce()‚ÍAreg_CAM_CNT‚ð’¼Ú“Ç‚ñ‚Å‚¢‚éB - // CAM_CNT‚ÍAƒJƒƒ‰ƒCƒl[ƒuƒ‹Žž‚Ì‘‚«ž‚݂͖³Ž‹‚³‚ê‚é‚©‚çA - // Šú‘Ò‚µ‚½’l‚ªŠmŽÀ‚É“¾‚ç‚ê‚é•ÛØ‚͂Ȃ¢‚ÆŽv‚í‚ê‚éB - // ˆê‰ž‚±‚±‚ÍCAMERA Vƒuƒ‰ƒ“ƒNŠ„‚螂݃nƒ“ƒhƒ‰‚¾‚©‚çAŠú‘Ò‚µ‚½’l‚ª - // “ü‚Á‚Ä‚¢‚È‚¯‚ê‚Γ®ì‚»‚Ì‚à‚Ì‚à‚¨‚©‚µ‚­‚Ȃ邪A‚»‚Ìꇂłà - // DMA‚Ŕ͈͊O‚̃ƒ‚ƒŠ‚ð”j‰ó‚µ‚È‚¢‚悤AŒvŽZ‚Å‹‚ß‚½”’l - // CAMERA_GET_LINE_BYTES(mShotWdt) * mTransferLines ‚ðŽw’èB -#if 0 -// : -// static inline void CAMERA_DmaRecvAsync(u32 dmaNo, void *dest, u32 unit, u32 length, MINDmaCallback callback, void* arg) -// { -// MI_Camera_NDmaRecvAsync( dmaNo, dest, unit/4, length, FALSE, callback, arg ); -// } - - // SDK default NDMA parameter - CAMERA_DmaRecvAsync(cDefaultDmaNo, (u16*)mpCaptureBuf, - CAMERA_GET_LINE_BYTES(mShotWdt) * mShotTransferLines, - CAMERA_GET_FRAME_BYTES(mShotWdt, mShotHgt), - NULL, NULL); -#else -// : -// void MI_Camera_NDmaRecvAsync(u32 ndmaNo, void *dest, u32 unit, u32 size, BOOL contSw, MINDmaCallback callback, void* arg ); -// void MI_Camera_NDmaRecvAsyncEx(u32 ndmaNo, void *dest, u32 size, BOOL contSw, MINDmaCallback callback, void* arg, const MINDmaConfig *config ); - - mDmaConfig.wordCount = (CAMERA_GET_LINE_BYTES(mShotWdt) * mShotTransferLines) / sizeof(u32); - MI_Camera_NDmaRecvAsyncEx(cDefaultDmaNo, (u16*)mpCaptureBuf, - CAMERA_GET_FRAME_BYTES(mShotWdt, mShotHgt), - FALSE, - NULL, NULL, - &mDmaConfig); -#endif - - CAMERA_StartCapture(); - } else { - IPL_PRINT("no memory for mpCaptureBuf\n"); - CAMERA_StopCapture(); - - // ƒGƒ‰[ƒŠƒgƒ‰ƒCƒJƒEƒ“ƒg‚ð‘‚â‚·H - // ’P‚ÉprepareBuffer()‚Å‚«‚Ä‚¢‚È‚¢‚¾‚¯‚©‚à‚µ‚ê‚È‚¢B - } - } else { - CAMERA_StopCapture(); - if (mOneShotFlag) { - // ƒJƒƒ‰‚ð’âŽ~‚³‚¹‚éB - // I2Cˆ——v‹‚ðo‚·B - // mNextCmr‚Íã‘‚«‚³‚ê‚éB - mNextCmr = CAMERA_SELECT_NONE; - msg = cMsgI2c_Activate; - goto sendI2cRequest; - } - } - - return; - -#if SDK_VERSION_DATE < 20080630 -toPositiveEdgeAndSendI2cRequest: - CAMERA_StopCapture(); - mIntrPositiveEdge = TRUE; - CAMERA_SetVsyncInterrupt(CAMERA_INTR_VSYNC_POSITIVE_EDGE); -#else - // intr edge‚ÍCAMERAƒ‰ƒCƒuƒ‰ƒŠ‚ªƒnƒ“ƒhƒŠƒ“ƒO‚·‚éB -#endif -// thru -sendI2cRequest: - CAMERA_StopCapture(); - if (!OS_SendMessage(&mI2cMsgQueue, (OSMessage)msg, OS_MESSAGE_NOBLOCK)) { - // ƒŠƒgƒ‰ƒC‚ª•K—vB - } else { - // ”O‚Ì‚½‚ßA‚·‚®‚ÉI2Cˆ—’†ƒtƒ‰ƒO‚à—§‚Ăè‚­B - mI2cBusy = TRUE; - - // ƒGƒ‰[ƒŠƒgƒ‰ƒCƒJƒEƒ“ƒ^‚ð‘‚â‚·•K—v‚ª‚ ‚è‚»‚¤B - } -} - - -u16* Manager::procPreCapture() -{ - return allocCapBuf(); -} - - -void Manager::procPostCapture() -{ - if (mpCaptureBuf) { - if (mpConvBuf) { - // ‘O‰ñ‚ÌYUV2RGB•ÏŠ·‚ªŠ®—¹‚µ‚Ä‚¢‚È‚¢B -#ifndef TWL_IPL_FINAL - static u32 count; - IPL_PRINT("mConvBusy! %d, nextp %s\n", count++, mpNextConvBuf ? "exist" : "empty"); -#endif - // ŽB‰eƒf[ƒ^‚ÅA‚©‚ÂŽŸ‰ñ•ÏŠ·—\–ñ‚̃oƒbƒtƒ@‚ª‘¶Ý‚µ‚È‚¯‚ê‚Î - // ŽŸ‰ñ•ÏŠ·—\–ñ‚Æ‚·‚éB - if (mShotFlag && !mpNextConvBuf) { - mpNextConvBuf = mpCaptureBuf; - // LowerƒXƒŒƒbƒh‚ªOS_WaitEvent()‚ŃuƒƒbƒN‚µ‚È‚¢‚悤AŽŸ‰ñ•ÏŠ·•ŽB‰e—v‹‚àƒZƒbƒg‚µ‚Ä‚¨‚­B - OS_SignalEvent(&mLowerEvent, cEventMaskLower_NextConvertAndShot); - } else { - // ¡‰ñ‚̃Lƒƒƒvƒ`ƒƒÏ‚݃f[ƒ^‚Í”jŠüB - freeCapBufByPtr((u16*)mpCaptureBuf); - } - } else { - // YUV2RGB•ÏŠ·—v‹ƒZƒbƒgB - mpConvBuf = mpCaptureBuf; - OS_SignalEvent(&mLowerEvent, - (u32)(cEventMaskLower_Convert | (mShotFlag ? cEventMaskLower_Shot : 0))); - } - mpCaptureBuf = NULL; - } -} - - -void Manager::procPostConvert(BOOL shot) -{ - if (shot) { - // ƒLƒƒƒvƒ`ƒƒÏ‚݃f[ƒ^‚ÍŽB‰e—p‚ÉŽg‚¤B - mpShotBuf = mpConvBuf; - } else { - // ƒLƒƒƒvƒ`ƒƒÏ‚݃f[ƒ^‚Í•s—v‚Ȃ̂Ŏ̂ĂéB - freeCapBufByPtr((u16*)mpConvBuf); - } - mpConvBuf = NULL; -} - - -// (mpShotBuf != NULL) ‚̂Ƃ«‚̂݌Ă΂ê‚éB -void Manager::procPostShot() -{ -// #ifndef TWL_IPL_FINAL -// mDebugPort = __LINE__; -// #endif - // "check only urgent errors here" ‚Á‚ă}ƒWHŠ„‚螂݋֎~‚ŌĂ΂ê‚Ă邩‚çB - - freeCapBufByPtr((u16*)mpShotBuf); -} - - -// Š„‚螂݃‹[ƒ`ƒ“‚©‚ç‚̂݌Ă΂ê‚é‚̂Ŋ„‚螂݋֎~‚É‚µ‚Ä‚¢‚È‚¢B -// ƒLƒƒƒvƒ`ƒƒŽžAŽB‰eŽž‚ŃTƒCƒY‚ª•Ï‚í‚éꇂł ‚Á‚Ä‚àA‘å‚«‚¢•û‚Ì -// ƒTƒCƒY‚ð‘z’肵‚ăoƒbƒtƒ@‚ðŠm•Û‚·‚éB -u16* Manager::allocCapBuf() -{ - for (u32 i = 0; i < cBufferCount; i++) { - if (!mIsCapBufUsed[i] && mpCapBuf[i]) { - mIsCapBufUsed[i] = TRUE; -// OS_TPrintf("allocCapBuf[%d]=%x\n", i, mpCapBuf[i]); - return mpCapBuf[i]; - } - } - IPL_PRINT("allocCapBuf: no memory! %d %d\n", mCaptureFlag, mShotFlag); - - return NULL; -} - - -void Manager::freeCapBufByPtr(const u16* pBuf) -{ - if (pBuf) { - for (u32 i = 0; i < cBufferCount; i++) { - if (mpCapBuf[i] == const_cast(pBuf)) { - mIsCapBufUsed[i] = FALSE; - return; - } - } - } -} - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -BOOL Manager::writeJpegToNand(const u8* src, u32 size) -{ - BOOL ret = FALSE; - -// const u8* path; -// -// path = MenuSys()->getUpPicMgr()->getSavePath(); -// if (path) { -// cmn::sys::File file( (const char*)path ); -// ret = file.write(src, size); -// IPL_PRINT("writeJpegToNand(%s)=%d\n", path, ret); -// if (ret) { -// MenuSys()->getUpPicMgr()->calcNextSavePath(); -// } -// } - - ret = MenuSys()->getUpPicMgr()->writeTclPictureFile(src, size); - - return ret; -} -#endif - - -// ƒtƒ@ƒCƒ‹–¼‚Í’†‚Ìl‚É‚µ‚©•ª‚©‚ç‚È‚¢B -BOOL Manager::writeJpegToSD(const u8* src, u32 size) -{ - FSFile file; - FSFile* pFile = &file; - u32 i; - - // DC_StoreAll(), DC_FlushAll() is NG? - DC_StoreAll(); - -/* - SDƒJ[ƒh/menu/MENU####.jpg ‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹–¼‚𶬂·‚é -*/ -#define JPEG_DIRNAME "sdmc:/menu" -#define JPEG_FILENAME "menu%04d.jpg" - - if ( !pFile ) - { - return FALSE; - } - - /* - ƒfƒBƒŒƒNƒgƒŠ‚Ì‘¶Ý‚ðŠmŽÀ‚Æ‚·‚é - –{“–‚ÍA‚Ü‚¸SDƒJ[ƒh‚ª‘¶Ý‚·‚é‚©‚ðŠm”F‚µA‚»‚ÌŒãƒfƒBƒŒƒNƒgƒŠ‚ª‚·‚Å‚É - ‘¶Ý‚·‚é‚©‚ðŒ©‚Ä–³‚¯‚ê‚Îì‚邯‚¢‚¤ˆ—‚Å—Ç‚¢‚Ì‚¾‚ªAŒ»ó‚Å‚ÍA‚¢‚¿‚¢‚¿ - ƒI[ƒvƒ“‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢I - */ - { - FSFile dir; - if ( !FS_OpenDirectory( &dir, JPEG_DIRNAME, FS_FILEMODE_R | FS_FILEMODE_W ) ) - { - if ( !FS_CreateDirectory( JPEG_DIRNAME, FS_PERMIT_R | FS_PERMIT_W ) ) - { - IPL_PRINT("Cannot create directory %s.\n", JPEG_DIRNAME); - return FALSE; - } - } - else - { - FS_CloseDirectory( &dir ); - } - } - - FS_InitFile( pFile ); - - for (i = -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - 0 -#else - 1000 -#endif - ; i < 10000; i++) - { - char buffer[32]; - STD_TSPrintf(buffer, JPEG_DIRNAME "/" JPEG_FILENAME, i); - if ( FS_CreateFile( buffer, FS_PERMIT_W ) ) // ‚·‚łɂ ‚éꇎ¸”s‚·‚é - { - if ( FS_OpenFileEx( pFile, buffer, FS_FILEMODE_W ) ) // 쬂µ‚½‚Ẵtƒ@ƒCƒ‹‚ðƒI[ƒvƒ“‚·‚é - { - // OK - break; -// if (filename) // ˆø”‚Ƀƒ‚ƒŠ‚ªŽw’肳‚ê‚Ä‚¢‚ê‚΂»‚±‚Ƀtƒ@ƒCƒ‹–¼‚ðŠi”[‚·‚é -// { -// STD_CopyLString( filename, buffer, 256 ); -// } -// return TRUE; - } else { - IPL_PRINT("Create %s, but cannot open it.\n", buffer); // ’v–½“I‚ȃGƒ‰[ - return FALSE; - } - } - } - if (i == 10000) { - IPL_PRINT("Too many files in %s.\n", JPEG_DIRNAME); - return FALSE; - } - - if ( FS_WriteFile( pFile, src, static_cast(size) ) != size ) - { - FS_CloseFile( pFile ); - return FALSE; - } - FS_CloseFile( pFile ); - return TRUE; -} - - -// /*! -// ƒVƒƒƒbƒ^[ƒTƒEƒ“ƒhƒtƒ@ƒCƒ‹‚ðƒZƒbƒg‚·‚é ”pŠü—\’è -// @param p_wav WAV‚̃wƒbƒ_‚̂Ȃ¢¶‰¹ƒtƒ@ƒCƒ‹ -// @param size ƒTƒCƒY -// */ -// void Manager::setShutterSnd( const u8* p_wav , u32 size , BOOL stereo ) -// { -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// OSIntrMode enabled = OS_DisableInterrupts(); -// -// mpShutterSnd = p_wav; -// mShutterSndSize = size; -// mShutterStereo = stereo; -// -// OS_RestoreInterrupts(enabled); -// #endif -// } - - -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// /*! -// ƒVƒƒƒbƒ^[ƒTƒEƒ“ƒh‚ðŠJŽn‚·‚é -// */ -// void Manager::startShutterSnd() -// { -// if ( mpShutterSnd ) -// { -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -// SNDEX_SetDSPMixRate( 0 ); -// SNDEX_ForceOut( TRUE ); -// DSP_PlaySound( (void*)mpShutterSnd, (u32)(mShutterSndSize / 2), mShutterStereo ); -// #else -// MenuSys()->getDspMgr()->playSound(mpShutterSnd, (u32)(mShutterSndSize / sizeof(u16)), mShutterStereo); -// #endif -// } -// } -// -// /*! -// ƒVƒƒƒbƒ^[ƒTƒEƒ“ƒh‚ðI—¹‚·‚é -// */ -// void Manager::finishShutterSnd() -// { -// if ( mpShutterSnd ) -// { -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -// SNDEX_SetDSPMixRate( 8 ); -// SNDEX_ForceOut( FALSE ); -// #else -// MenuSys()->getDspMgr()->stopSound(); -// #endif -// } -// } -// -// /*! -// ƒVƒƒƒbƒ^[ƒTƒEƒ“ƒh‚ªI—¹‚µ‚Ă邩 -// @retval TRUE I—¹‚µ‚Ä‚é -// @retval FALSE ‚µ‚ĂȂ¢ -// */ -// BOOL Manager::isFinishedShutterSnd() const -// { -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -// return TRUE; -// #else -// return !(MenuSys()->getDspMgr()->isSoundPlaying()); -// #endif -// } -// #endif - -void Manager::setCaptureRgbFlag(BOOL useRgb) -{ - mCaptureRgbFlag = (u8)useRgb; - mEncodeOption = (u32)(SSP_JPEG_THUMBNAIL | (useRgb ? SSP_JPEG_RGB555 : SSP_JPEG_YUV422)); -} - -void Manager::encodeAndSave() -{ - u32 err = 0; - OSTick tick; - - if (!mpShotBuf) { - IPL_HALT("!mpShotBuf\n"); - // TWL_IPL_FINAL‚ł̓Xƒ‹[‚·‚é[ - return; - } - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - // ƒ‚ƒWƒ…[ƒ‹ƒ[ƒhŽž‚ÉAƒVƒƒƒbƒ^[‰¹‚ªŽ~‚Ü‚éH - // ƒVƒƒƒbƒ^[‰¹‚ðĶ‚·‚é‘O‚ÉJPEGƒGƒ“ƒR[ƒ_ƒ‚ƒWƒ…[ƒ‹‚ð - // ƒ[ƒh‚µ‚Ä‚¨‚­•K—v‚ª‚ ‚邿‚¤‚¾B - // ƒVƒƒƒbƒ^[‰¹‚ª–‚èI‚í‚é‚Ü‚ÅDSP‚ðè—L‚·‚éB - MenuSys()->getDspMgr()->lock(); - MenuSys()->getDspMgr()->loadJpegEncoder(); -#endif - -// // DSP‚ðŽg‚¤ê‡‚Ì‚ÝAƒVƒƒƒbƒ^[‰¹‚ÌĶŽwަ‚ðo‚·B -// startShutterSnd(); - - DSPFrame_y = mpEncodeWork->y; - DSPFrame_cb = mpEncodeWork->cbcr; - DSPFrame_cr = DSPFrame_cb + (mShotWdt * mShotHgt / 4); -#endif - - tick = OS_GetTick(); - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - Convert8bitYuv422To16bitYuv420((const u32*)mpShotBuf, - DSPFrame_y, - mShotWdt, - mShotHgt, - mpDtcmWork->mYuvBuf); - // store YUV420 and invalidate encode result - DC_FlushAll(); -#endif - - IPL_PRINT("procShot: yuv422to420 time %d usec\n", (u32)OS_TicksToMicroSeconds(OS_GetTick() - tick)); - tick = OS_GetTick(); - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - // SDƒJ[ƒhƒAƒNƒZƒX’†‚̃`ƒ‰‚‚«‘Îô - // Vƒuƒ‰ƒ“ƒNŠ„‚螂݂ª’x‰„‚·‚é‚Ì‚ÅAƒAƒtƒBƒ“ƒpƒ‰ƒƒ^‚ðƒŒƒWƒXƒ^‚Ö‘‚«ž‚܂Ȃ¢B - // writeJpegToSD()‚ðŒÄ‚Ô’¼‘O‚ÌÝ’è‚ł͊Ԃɇ‚í‚È‚¢‚悤‚¾B -// MenuSys()->getUpPicMgr()->setSkipAffineFlag(TRUE); -#endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - // o—̓TƒCƒY‚Í‚¢‚©‚Ù‚Ç•K—vH - DSP_SetJpegEncoderBuffer(mpEncodeResult, cEncodeResultSizeMax); - // explicit initialization - DSP_SetJpegEncoderThumbnailBuffer(NULL, NULL, NULL); - u32 size = DSP_StartJpegEncoder( static_cast< s16 > ( mShotWdt ) , - static_cast< s16 > ( mShotHgt ) , - DSP_JPEG_THUMBNAIL , - 4 ); -#else - // o—̓TƒCƒY‚Í‚¢‚©‚Ù‚Ç•K—vH - // unlock‚ÍupPicMgr‚Ì if (event & cEventMask_WipeReplace) ‚Ås‚í‚ê‚éB - MenuSys()->getUpPicMgr()->lockTcl(); - MenuSys()->getUpPicMgr()->lockJpegBuf(); - u32 size = MenuSys()->getDspMgr()->encodeJpegFrom16bitYuv420(DSPFrame_y, - mShotWdt, - mShotHgt, - MenuSys()->getUpPicMgr()->getJpegBufPtr(), - MenuSys()->getUpPicMgr()->getJpegBufSize(), - NULL, - 0, - DSP_JPEG_THUMBNAIL); -#endif -#else -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - // unlock‚ÍupPicMgr‚Ì if (event & cEventMask_WipeReplace) ‚Ås‚í‚ê‚éB - MenuSys()->getUpPicMgr()->lockTcl(); - MenuSys()->getUpPicMgr()->lockJpegBuf(); - - SSP_SetJpegEncoderMakerNote(MenuSys()->getUpPicMgr()->getMakerNote(), - MenuSys()->getUpPicMgr()->getMakerNoteSize()); -#endif - - if (!SSP_SetJpegEncoderDateTimeNow()) { - // Žž‚Ì–„‚ßž‚݂Ɏ¸”s‚µ‚½‚̂Ń[ƒ‚Å–„‚ß‚éB - // •¶Žš—ñ‚ÍuYYYY:MM:DD HH:MM:DDv+0x00 ‚Ì 20 •¶Žš‚Æ‚µ‚Ä‚­‚¾‚³‚¢B - static const u8 zeroes[20] = {}; - IPL_PRINT("SSP_SetJpegEncoderDateTimeNow() failed!\n"); - SSP_SetJpegEncoderDateTime((u8*)zeroes); - } - SSP_SetJpegEncoderSignMode(TRUE); - u32 size = SSP_StartJpegEncoder((const void*)mpShotBuf, -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - mpEncodeResult, - cEncodeResultSizeMax, -#else - MenuSys()->getUpPicMgr()->getJpegBufPtr(), - MenuSys()->getUpPicMgr()->getJpegBufSize(), -#endif - mpEncodeWork, - mShotWdt, mShotHgt, - cEncodeQuality, cEncodeSampling, mEncodeOption); -#endif - - IPL_PRINT("procShot: encode size %d, time %d usec\n", size, (u32)OS_TicksToMicroSeconds(OS_GetTick() - tick)); - - tick = OS_GetTick(); - - // save to SD or NAND - if (size) { -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else - if (!writeJpegToNand(MenuSys()->getUpPicMgr()->getJpegBufPtr(), - size)) { - err = 3; - } -#endif - - - if (!writeJpegToSD( -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT - mpEncodeResult, -#else - MenuSys()->getUpPicMgr()->getJpegBufPtr(), -#endif - size)) { - // SDƒJ[ƒh‚ւ̕ۑ¶‚̓eƒXƒg‚Ȃ̂ÅAƒGƒ‰[‚ɂ͂µ‚È‚¢B - // do nothing - } - } else { - err = 4; - } - - IPL_PRINT("procShot: save err %d, time %d usec\n", err, (u32)OS_TicksToMicroSeconds(OS_GetTick() - tick)); - -// #ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP -// while (!isFinishedShutterSnd()) { -// IPL_PRINT("procShot: waiting ShutterSnd finish\n"); -// OS_Sleep(1); -// } -// finishShutterSnd(); -// #endif - -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_FOR_LOCAL_PROJECT -#else -#ifdef TWL_IPL_MENU_CAMERA_MANAGER_USE_DSP - // ƒVƒƒƒbƒ^[‰¹‚ª–‚èI‚í‚Á‚½‚çDSP‚Ìè—L‚ð‰ðœ‚Å‚«‚éB - MenuSys()->getDspMgr()->unlock(); -#endif - - MenuSys()->getUpPicMgr()->setJpegDataSize(size); - - if (MenuSys()->getUpPicMgr()->isEffectTypeNormal()) { - // ‚±‚±‚ÅJPEGƒfƒR[ƒh‚ðs‚¤B - // ‚‚܂èAƒJƒƒ‰ƒV[ƒ“I—¹‚Ì‚½‚߂̃tƒF[ƒhƒAƒEƒgŠJŽn‚ª’x‚ê‚éB - MenuSys()->getUpPicMgr()->decodeJpeg(); - } else { - // æ‚Ɍ¢ŽÊ^‚̃ƒCƒvƒAƒEƒg‚ðŠJŽn‚·‚éB - // ƒJƒƒ‰ƒV[ƒ“I—¹‚Ì‚½‚߂̃tƒF[ƒhƒAƒEƒgŠJŽn‚ª‘‚­‚Ȃ邪 - // ƒ‰ƒ“ƒ`ƒƒ[ƒƒCƒ“‰æ–ʂ֖߂Á‚Ä‚à‚µ‚Î‚ç‚­ã‰æ–Ê‚ª‰½‚à‚È‚¢B - // ‚»‚Ìó‘Ԃщƒ“ƒ`ƒƒ[ƒƒCƒ“‰æ–ʂ̑€ì‚͂ł«‚邪Ad‚¢B - MenuSys()->getUpPicMgr()->wipeOut(); - } - -// MenuSys()->getUpPicMgr()->setSkipAffineFlag(FALSE); -#endif - - if (!mShotErr) { - mShotErr = err; - } - - { - OSIntrMode enabled = OS_DisableInterrupts(); - - procPostShot(); - mpShotBuf = NULL; - mShotDone = TRUE; - - OS_RestoreInterrupts(enabled); - } - - // invalidate capture buffer for next capture - DC_FlushAll(); - - IPL_PRINT("encodeAndSave done err=%d\n", mShotErr); -} - - - -}}} diff --git a/build/tests/yuv2rgb/src/menuIrqHandler.c b/build/tests/yuv2rgb/src/menuIrqHandler.c deleted file mode 100644 index 13c8e04e..00000000 --- a/build/tests/yuv2rgb/src/menuIrqHandler.c +++ /dev/null @@ -1,169 +0,0 @@ -// This IRQ Handler is for ARM9 only. -#include "menuIrqHandler.h" -// not supplied -#include - -typedef struct MenuIrqHandlerLogControl { - // keep order! {End, Cur, VBlankCount, Top} for ldmia/stmia - MenuIrqHandlerLogBuffer* mpBufferEnd; - MenuIrqHandlerLogBuffer* mpBufferCur; - u32 mVBlankCount; - MenuIrqHandlerLogBuffer* mpBufferTop; -} MenuIrqHandlerLogControl; - -extern void MenuIrqHandler( void ); - -#include -#ifndef TWL_IPL_FINAL -static MenuIrqHandlerLogControl MenuIrqHandlerLogCtrl; -#endif -#include - -#include -#include -#include - -#ifndef TWL_IPL_FINAL -// derived from OS_IrqHandler -/*---------------------------------------------------------------------------* - Name: MenuIrqHandler - - Description: IRQ handler. call handler according to OS_InterruptTable - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -asm void MenuIrqHandler( void ) -{ - stmfd sp!, { lr } // save LR - - // get IE address - mov r12, #HW_REG_BASE - add r12, r12, #(REG_IE_OFFSET - 4) // r12: REG_IE address - 4 - - // get IME - ldrh r0, [ r12, #REG_IME_ADDR - (REG_IE_ADDR - 4) ] // r0: IME - - // get IE&IF - ldmib r12!, { r1-r2 } // r1: IE, r2: IF - - tst r0, #0x01 - andnes r1, r1, r2 // r1: IE & IF - - // if (IME==0) || (IE&IF==0) then return (without changing IF) - ldmeqfd sp!, { pc } - - //-------------------------------------------------- - // IRQ HANDLING CODE for ARCHITECTURE VERSION 5 - //-------------------------------------------------- - - ldr lr, =MenuIrqHandlerLogCtrl - - // get lowest 1 bit - rsb r3, r1, #0 - and r3, r1, r3 - - // clear IF - str r3, [ r12 ], #-REG_IF_OFFSET - - ldmia lr!, {r0, r1, r2} // mpBufferEnd, mpBufferCur, mVBlankCount - cmp r1, r0 - bcs @logSkip // log full or no buffer - -@logWrap: - ldrh r0, [r12, #REG_VCOUNT_ADDR - HW_REG_BASE] - add r1, r1, #sizeof(MenuIrqHandlerLogBuffer) - tst r3, #OS_IE_V_BLANK - addne r2, r2, #1 - bic r2, r2, #1 << 18 // lower 18bits only - stmdb lr, {r1, r2} // update mpBufferCur, mVBlankCount - - orr r2, r2, r0, lsl #23 // mInVLineCount | mInVBlankCount - // get jump vector - ldr r0, =OS_IRQTable + ((OS_IRQ_TABLE_MAX - 1) << 2) - clz r3, r3 - ldr r0, [r0, -r3, lsl #2] - orr r2, r2, r3, lsl #18 // mIntr - ldr r3, [r12, #REG_TM0CNT_L_ADDR - HW_REG_BASE] - stmfd sp!, {r1, r2, r3} // mpBufferCur, word0, tick - - blx r0 - - mov r12, #HW_REG_BASE - ldr lr, [r12, #REG_TM0CNT_L_ADDR - HW_REG_BASE] - ldrh r0, [r12, #REG_VCOUNT_ADDR - HW_REG_BASE] - ldmfd sp!, {r1, r2, r3} - subs r12, r0, r2, lsr #23 // mVLineCounts - addmi r12, r12, #HW_LCD_HEIGHT - addmi r12, r12, #HW_LCD_VBLANK - sub r3, lr, r3 // mTicks - orr r3, r12, r3, lsl #16 - stmdb r1, {r2, r3} // word0, word1 - b OS_IrqHandler_ThreadSwitch - -@logSkip: - cmp r1, #0 - ldrne r1, [lr] // mpBufferTop - bne @logWrap - - // get jump vector - ldr r0, =OS_IRQTable + ((OS_IRQ_TABLE_MAX - 1) << 2) - clz r3, r3 - ldr r0, [r0, -r3, lsl #2] - ldr lr, =OS_IrqHandler_ThreadSwitch - bx r0 // set return address for thread rescheduling -} -#endif - -#include -#include - - -void MenuIrqHandlerStart( MenuIrqHandlerLogBuffer* pBuffer, u32 size ) -{ -#ifndef TWL_IPL_FINAL - u32 count = size / sizeof(MenuIrqHandlerLogBuffer); - MenuIrqHandlerLogControl* pCtrl = &MenuIrqHandlerLogCtrl; - BOOL enabled = OS_DisableIrq(); - - *(u32 *)(HW_DTCM + HW_DTCM_SIZE - HW_DTCM_SYSRV_SIZE + HW_DTCM_SYSRV_OFS_INTR_VECTOR) - = (u32)MenuIrqHandler; - - if ( pBuffer && count ) { - pCtrl->mpBufferTop = - pCtrl->mpBufferCur = pBuffer; - pCtrl->mpBufferEnd = pBuffer + count; - } else { - pCtrl->mpBufferTop = - pCtrl->mpBufferCur = - pCtrl->mpBufferEnd = NULL; - } - pCtrl->mVBlankCount = 0; - - OS_RestoreIrq(enabled); -#else -#pragma unused(pBuffer) -#pragma unused(size) -#endif -} - -void MenuIrqHandlerEnd( void ) -{ -#ifndef TWL_IPL_FINAL - *(u32 *)(HW_DTCM + HW_DTCM_SIZE - HW_DTCM_SYSRV_SIZE + HW_DTCM_SYSRV_OFS_INTR_VECTOR) - = (u32)OS_IrqHandler; - // keep buffer -#endif -} - -BOOL MenuIrqHandlerIsUsed( void ) -{ -#ifndef TWL_IPL_FINAL - return (*(u32 *)(HW_DTCM + HW_DTCM_SIZE - HW_DTCM_SYSRV_SIZE + HW_DTCM_SYSRV_OFS_INTR_VECTOR) - == (u32)MenuIrqHandler); -#else - return FALSE; -#endif -} - diff --git a/build/tests/yuv2rgb/src/menuIrqHandler.h b/build/tests/yuv2rgb/src/menuIrqHandler.h deleted file mode 100644 index 1e9d4e0c..00000000 --- a/build/tests/yuv2rgb/src/menuIrqHandler.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef MENU_IRQ_HANDLER_H_ -#define MENU_IRQ_HANDLER_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -typedef struct MenuIrqHandlerLogBuffer { - union { - u32 word0; - struct { - u32 mInVLineCount : 9; // d31-d23 - u32 mIntr : 5; // d22-d18 - u32 mInVBlankCount : 18; // d17-d0 - }; - }; - union { - u32 word1; - struct { - u32 mTicks : 16; // d31-d16 - u32 mVLineCounts : 16; // d15-d0 - }; - }; -} MenuIrqHandlerLogBuffer; - -extern void MenuIrqHandlerStart( MenuIrqHandlerLogBuffer* pBuffer, u32 size ); -extern void MenuIrqHandlerEnd( void ); -extern BOOL MenuIrqHandlerIsUsed( void ); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif diff --git a/build/tests/yuv2rgb/src/new.cpp b/build/tests/yuv2rgb/src/new.cpp deleted file mode 100644 index 6ebd0e1a..00000000 --- a/build/tests/yuv2rgb/src/new.cpp +++ /dev/null @@ -1,130 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: NitroSDK - OS - demos - cplusplus-1 - File: new.cpp - - Copyright 2003,2004 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Log: new.cpp,v $ - Revision 1.4 2004/04/06 11:35:38 yada - fix header comment - - Revision 1.3 2004/02/20 03:32:18 yasu - add comments - - Revision 1.2 2004/02/20 00:04:05 yasu - add comments - - $NoKeywords: $ - *---------------------------------------------------------------------------*/ -#include -#ifdef TWL_IPL_USE_RED_IPL -#include -#endif - -#define HEAP_ID ((OSHeapHandle)0) -#define ARENA_ID ((OSArenaId)OS_ARENA_MAIN) -#define ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1)) - -//---------------------------------------------------------------- -// -void* operator new ( std::size_t blocksize ) -{ - void* p = OS_AllocFromHeap( ARENA_ID, HEAP_ID, blocksize ); - if (p) { -// MI_CpuClearFast(p, blocksize); - } - return p; -} - -//---------------------------------------------------------------- -// -void* operator new[] ( std::size_t blocksize ) -{ - void* p = OS_AllocFromHeap( ARENA_ID, HEAP_ID, blocksize ); - if (p) { -// MI_CpuClearFast(p, blocksize); - } - return p; -} - -//---------------------------------------------------------------- -// -void operator delete ( void* block ) throw() -{ - OS_FreeToHeap( ARENA_ID, HEAP_ID, block ); -} - -//---------------------------------------------------------------- -// -void operator delete[] ( void* block ) throw() -{ - OS_FreeToHeap( ARENA_ID, HEAP_ID, block ); -} - -/*---------------------------------------------------------------------------* - Name: NitroStartUp - - Description: startup before NitroMain() - - Initialize memory control system for new() - - FYI: - - Startup fuctions called in following order - 1) NitroStartUp(); - 2) Global/Static Constructors - 3) NitroMain(); - - Arguments: None - - Returns: None - *---------------------------------------------------------------------------*/ -void TwlStartUp(void) -{ - void* arenaLo; - void* arenaHi; - -#ifdef TWL_IPL_USE_RED_IPL - SYSM_Init(NULL, NULL); -#endif - OS_Init(); - OS_InitThread(); - GX_Init(); - OS_InitTick(); - OS_InitAlarm(); - TP_Init(); - FX_Init(); - GX_Init(); - RTC_Init(); - SNDEX_Init(); - OS_EnableIrq(); - OS_EnableInterrupts(); - FS_Init( FS_DMA_NOT_USE ); - MI_InitNDmaConfig(); - -#ifdef TWL_IPL_USE_RED_IPL - SYSM_SetArena(); // OS_Init‚ÌŒã‚ŃR[ƒ‹‚·‚é•K—v‚ ‚èB - SYSM_InitPXI(); // Š„‚螂݋–‰ÂŒã‚ɃR[ƒ‹‚·‚é•K—v‚ ‚èB -#endif - - arenaLo = OS_GetArenaLo( ARENA_ID ); - arenaHi = OS_GetArenaHi( ARENA_ID ); - - // Create a heap - arenaLo = OS_InitAlloc( ARENA_ID, arenaLo, arenaHi, 1 ); - OS_SetArenaLo( ARENA_ID, arenaLo ); - - // Ensure boundaries are 32B aligned - arenaLo = (void*)ROUND( arenaLo, 32 ); - arenaHi = (void*)ROUND( arenaHi, 32 ); - - // The boundaries given to OSCreateHeap should be 32B aligned - (void)OS_SetCurrentHeap( ARENA_ID, OS_CreateHeap( ARENA_ID, arenaLo, arenaHi ) ); - - // From here on out, OS_Alloc and OS_Free behave like malloc and free respectively - OS_SetArenaLo( ARENA_ID, arenaLo = arenaHi ); -} diff --git a/build/tests/yuv2rgb/src/snd_data.c b/build/tests/yuv2rgb/src/snd_data.c deleted file mode 100644 index 65b46440..00000000 --- a/build/tests/yuv2rgb/src/snd_data.c +++ /dev/null @@ -1,10771 +0,0 @@ -/*---------------------------------------------------------------------------* - Project: TwlSDK - demos.TWL - snd - extraFunc - File: snd_data.c - - Copyright 2008 Nintendo. All rights reserved. - - These coded instructions, statements, and computer programs contain - proprietary information of Nintendo of America Inc. and/or Nintendo - Company Ltd., and are protected by Federal copyright law. They may - not be disclosed to third parties or copied or duplicated in any form, - in whole or in part, without the prior written consent of Nintendo. - - $Date:: $ - $Rev$ - $Author$ - *---------------------------------------------------------------------------*/ - -#include -#include - - -const u8 sound_seq_data[] ATTRIBUTE_ALIGN(HW_CACHE_LINE_SIZE) = -{ - 0xfe, 0xff, 0x0e, 0x93, 0x01, 0x02, 0x05, 0x00, 0x93, 0x02, 0xba, 0x05, 0x00, 0x93, 0x03, 0x72, - 0x06, 0x00, 0x93, 0x04, 0x04, 0x09, 0x00, 0x93, 0x05, 0x79, 0x0b, 0x00, 0x93, 0x06, 0xb9, 0x0b, - 0x00, 0x93, 0x07, 0x0e, 0x0d, 0x00, 0x93, 0x09, 0x44, 0x0d, 0x00, 0x93, 0x0a, 0xe9, 0x10, 0x00, - 0x93, 0x0b, 0xac, 0x18, 0x00, 0xc7, 0x00, 0xe1, 0x8c, 0x00, 0x81, 0x00, 0xc1, 0x7f, 0xc0, 0x40, - 0xc5, 0x02, 0xc4, 0x00, 0xcb, 0x10, 0xca, 0x00, 0x24, 0x7f, 0x82, 0x7f, 0x80, 0x83, 0x00, 0x30, - 0x5a, 0x82, 0x1f, 0x80, 0x82, 0x20, 0x24, 0x76, 0x04, 0x80, 0x0c, 0x24, 0x52, 0x02, 0x80, 0x0c, - 0x48, 0x6f, 0x0d, 0x80, 0x18, 0x24, 0x6e, 0x01, 0x80, 0x0c, 0x48, 0x71, 0x0b, 0x80, 0x0c, 0x24, - 0x4c, 0x01, 0x80, 0x0c, 0x24, 0x6f, 0x01, 0x80, 0x0b, 0x24, 0x7d, 0x85, 0x49, 0x80, 0x83, 0x01, - 0xca, 0x1e, 0x80, 0x82, 0x50, 0xca, 0x00, 0x24, 0x7f, 0x01, 0x80, 0x30, 0x24, 0x7f, 0x2f, 0x80, - 0x30, 0x2b, 0x6f, 0x1a, 0x80, 0x27, 0x2b, 0x3c, 0x06, 0x80, 0x09, 0x30, 0x62, 0x0a, 0x80, 0x18, - 0xc4, 0x80, 0x32, 0x67, 0x2f, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x2b, 0x62, 0x08, 0x80, 0x0c, - 0x24, 0x52, 0x01, 0x80, 0x0c, 0x24, 0x7f, 0x2f, 0x80, 0x30, 0x2b, 0x67, 0x19, 0x80, 0x24, 0x2b, - 0x65, 0x0b, 0x80, 0x0c, 0x30, 0x53, 0x05, 0x80, 0x18, 0x30, 0x72, 0x17, 0x80, 0x18, 0x2b, 0x78, - 0x03, 0x80, 0x0c, 0x43, 0x74, 0x02, 0x80, 0x0c, 0x2b, 0x74, 0x0b, 0x80, 0x0c, 0x2b, 0x5e, 0x01, - 0x80, 0x0c, 0x95, 0xd8, 0x04, 0x00, 0x26, 0x74, 0x30, 0x80, 0x30, 0x2d, 0x68, 0x18, 0x80, 0x24, - 0x2d, 0x59, 0x0b, 0x80, 0x0c, 0x32, 0x59, 0x05, 0x80, 0x0c, 0x43, 0x4a, 0x02, 0x80, 0x0c, 0x32, - 0x6f, 0x23, 0x80, 0x24, 0x2c, 0x7f, 0x21, 0x80, 0x24, 0x2b, 0x7f, 0x2e, 0x80, 0x2f, 0x32, 0x62, - 0x18, 0x80, 0x24, 0x32, 0x4e, 0x0c, 0x80, 0x0d, 0x37, 0x59, 0x05, 0x80, 0x18, 0xc4, 0xac, 0x37, - 0x67, 0x2f, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x32, 0x6b, 0x0c, 0x80, 0x18, 0x2b, 0x6a, 0x2e, - 0x80, 0x30, 0x32, 0x62, 0x18, 0x80, 0x24, 0x32, 0x56, 0x0b, 0x80, 0x0c, 0x37, 0x59, 0x07, 0x80, - 0x18, 0xc4, 0xbd, 0x37, 0x6a, 0x2e, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x32, 0x59, 0x06, 0x80, - 0x18, 0x24, 0x7c, 0x2f, 0x80, 0x30, 0x2b, 0x65, 0x1b, 0x80, 0x24, 0x2b, 0x62, 0x0b, 0x80, 0x0c, - 0x30, 0x5c, 0x08, 0x80, 0x18, 0xc4, 0xa4, 0x30, 0x65, 0x2e, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, - 0x2b, 0x65, 0x09, 0x80, 0x18, 0x24, 0x71, 0x2f, 0x80, 0x30, 0x2b, 0x6a, 0x17, 0x80, 0x18, 0x2b, - 0x62, 0x0c, 0x80, 0x0c, 0x24, 0x62, 0x0a, 0x80, 0x0c, 0x30, 0x73, 0x08, 0x80, 0x0c, 0x48, 0x5d, - 0x03, 0x80, 0x0c, 0x4a, 0x77, 0x23, 0x2e, 0x79, 0x23, 0x80, 0x24, 0x4b, 0x79, 0x23, 0x2f, 0x79, - 0x23, 0x80, 0x24, 0x24, 0x7f, 0x2f, 0x80, 0x30, 0x2b, 0x6f, 0x1a, 0x80, 0x27, 0x2b, 0x3c, 0x06, - 0x80, 0x09, 0x30, 0x62, 0x0a, 0x80, 0x18, 0xc4, 0x80, 0x32, 0x67, 0x17, 0x80, 0x03, 0xc4, 0x00, - 0x80, 0x15, 0x32, 0x67, 0x05, 0x80, 0x06, 0x32, 0x67, 0x05, 0x80, 0x06, 0x43, 0x57, 0x03, 0x80, - 0x0c, 0x2b, 0x6a, 0x08, 0x80, 0x0c, 0x2b, 0x64, 0x01, 0x80, 0x0c, 0x24, 0x7f, 0x2f, 0x80, 0x30, - 0x2b, 0x67, 0x19, 0x80, 0x24, 0x2b, 0x65, 0x0b, 0x80, 0x0c, 0x30, 0x53, 0x05, 0x80, 0x0c, 0x30, - 0x53, 0x01, 0x80, 0x0c, 0x24, 0x7a, 0x17, 0x80, 0x18, 0x2b, 0x78, 0x03, 0x80, 0x0c, 0x43, 0x74, - 0x02, 0x80, 0x0c, 0x2b, 0x74, 0x0b, 0x80, 0x0c, 0x48, 0x5e, 0x01, 0x80, 0x0c, 0x95, 0xd8, 0x04, - 0x00, 0x26, 0x74, 0x30, 0x80, 0x30, 0x2d, 0x68, 0x18, 0x80, 0x24, 0x2d, 0x59, 0x0b, 0x80, 0x0c, - 0x32, 0x59, 0x05, 0x80, 0x0c, 0x43, 0x4a, 0x02, 0x80, 0x0c, 0x26, 0x6f, 0x23, 0x80, 0x24, 0xc4, - 0xb0, 0x2c, 0x7f, 0x21, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x21, 0x2b, 0x7f, 0x2f, 0x80, 0x30, 0x32, - 0x62, 0x18, 0x80, 0x24, 0x32, 0x51, 0x0b, 0x80, 0x0c, 0x37, 0x65, 0x07, 0x80, 0x18, 0xc4, 0x98, - 0x39, 0x62, 0x2f, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x32, 0x53, 0x05, 0x80, 0x18, 0x2b, 0x71, - 0x2f, 0x80, 0x30, 0x32, 0x62, 0x17, 0x80, 0x24, 0x32, 0x49, 0x0b, 0x80, 0x0c, 0x37, 0x5c, 0x09, - 0x80, 0x0c, 0x37, 0x5c, 0x02, 0x80, 0x0c, 0xc4, 0xb4, 0x35, 0x65, 0x2f, 0x80, 0x03, 0xc4, 0x00, - 0x80, 0x2d, 0x32, 0x56, 0x06, 0x80, 0x18, 0x24, 0x7f, 0x2f, 0x80, 0x30, 0x46, 0x5b, 0x0b, 0x80, - 0x18, 0x2e, 0x7f, 0x45, 0x80, 0x48, 0x2c, 0x7f, 0x53, 0x80, 0x54, 0x44, 0x7a, 0x0b, 0x80, 0x0c, - 0x2c, 0x7d, 0x0a, 0x80, 0x0c, 0x3c, 0x33, 0x05, 0x80, 0x0c, 0x42, 0x73, 0x14, 0x80, 0x0c, 0xc4, - 0x15, 0x80, 0x0c, 0xc4, 0x00, 0x2c, 0x7c, 0x09, 0x80, 0x0c, 0x44, 0x7a, 0x09, 0x80, 0x0c, 0x2c, - 0x68, 0x09, 0x80, 0x0c, 0x3c, 0x54, 0x05, 0x80, 0x0c, 0x2c, 0x7c, 0x09, 0x80, 0x0c, 0x44, 0x38, - 0x06, 0x80, 0x0c, 0x2c, 0x73, 0x09, 0x80, 0x0c, 0x2c, 0x7a, 0x09, 0x80, 0x0c, 0x2c, 0x7c, 0x09, - 0x80, 0x0c, 0x44, 0x6d, 0x09, 0x80, 0x0c, 0x2c, 0x7a, 0x17, 0x80, 0x18, 0x2c, 0x7d, 0x09, 0x80, - 0x0c, 0x3f, 0x5c, 0x06, 0x80, 0x0c, 0x2c, 0x7d, 0x0b, 0x80, 0x0c, 0x44, 0x35, 0x05, 0x80, 0x0c, - 0x2c, 0x7e, 0x09, 0x80, 0x0c, 0x2c, 0x7a, 0x09, 0x80, 0x0c, 0x2c, 0x7c, 0x0a, 0x80, 0x0c, 0x44, - 0x7c, 0x09, 0x80, 0x0c, 0x2c, 0x7e, 0x0b, 0x80, 0x0c, 0x3c, 0x3c, 0x08, 0x80, 0x0c, 0x42, 0x70, - 0x11, 0x80, 0x0c, 0xc4, 0x15, 0x80, 0x0c, 0xc4, 0x00, 0x2c, 0x7a, 0x09, 0x80, 0x0c, 0x44, 0x7a, - 0x09, 0x80, 0x0c, 0x2c, 0x78, 0x17, 0x80, 0x18, 0x2c, 0x7d, 0x0b, 0x80, 0x0c, 0x3e, 0x44, 0x06, - 0x80, 0x0c, 0x44, 0x7d, 0x0a, 0x80, 0x0c, 0x2c, 0x62, 0x0b, 0x80, 0x0c, 0x2c, 0x7a, 0x09, 0x80, - 0x0c, 0x44, 0x7a, 0x0a, 0x80, 0x0c, 0x2a, 0x78, 0x17, 0x80, 0x18, 0x2c, 0x7d, 0x16, 0x80, 0x18, - 0x44, 0x62, 0x05, 0x80, 0x0c, 0x2c, 0x62, 0x05, 0x80, 0x0c, 0x2c, 0x7c, 0x17, 0x80, 0x18, 0x2c, - 0x7a, 0x08, 0x80, 0x0c, 0x44, 0x7a, 0x07, 0x80, 0x0c, 0x2c, 0x7d, 0x17, 0x80, 0x18, 0x2c, 0x7c, - 0x07, 0x80, 0x0c, 0x44, 0x7c, 0x07, 0x80, 0x0c, 0x2c, 0x7a, 0x09, 0x80, 0x0c, 0x44, 0x76, 0x05, - 0x80, 0x0c, 0x29, 0x78, 0x17, 0x80, 0x18, 0x2a, 0x71, 0x16, 0x80, 0x18, 0x2b, 0x79, 0x17, 0x80, - 0x18, 0x2c, 0x7f, 0x17, 0x80, 0x24, 0x44, 0x7a, 0x0b, 0x80, 0x0c, 0x2c, 0x7d, 0x0a, 0x80, 0x0c, - 0x3c, 0x33, 0x05, 0x80, 0x0c, 0x42, 0x61, 0x14, 0x80, 0x18, 0x2c, 0x7c, 0x09, 0x80, 0x0c, 0x44, - 0x7a, 0x09, 0x80, 0x0c, 0x2c, 0x68, 0x09, 0x80, 0x0c, 0x3c, 0x54, 0x05, 0x80, 0x0c, 0x2c, 0x7c, - 0x09, 0x80, 0x0c, 0x44, 0x38, 0x06, 0x80, 0x0c, 0x2c, 0x73, 0x09, 0x80, 0x0c, 0x2c, 0x7a, 0x09, - 0x80, 0x0c, 0x2c, 0x7d, 0x0b, 0x80, 0x0c, 0x3e, 0x44, 0x06, 0x80, 0x0c, 0x44, 0x7d, 0x0a, 0x80, - 0x0c, 0x2c, 0x62, 0x0b, 0x80, 0x0c, 0x2c, 0x7d, 0x0b, 0x80, 0x0c, 0x44, 0x7d, 0x0a, 0x80, 0x0c, - 0x3e, 0x44, 0x06, 0x80, 0x0c, 0x2c, 0x62, 0x0b, 0x80, 0x0c, 0x2c, 0x7a, 0x07, 0x80, 0x0c, 0x44, - 0x5d, 0x04, 0x80, 0x0c, 0x27, 0x7d, 0x59, 0x80, 0x60, 0x3f, 0x72, 0x05, 0x80, 0x0c, 0x27, 0x62, - 0x05, 0x80, 0x0c, 0x27, 0x72, 0x05, 0x80, 0x18, 0x3f, 0x70, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, - 0x80, 0x0c, 0x27, 0x72, 0x05, 0x80, 0x0c, 0x3f, 0x62, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, 0x80, - 0x18, 0x3f, 0x76, 0x11, 0x80, 0x18, 0x27, 0x67, 0x05, 0x80, 0x0c, 0x27, 0x65, 0x05, 0x80, 0x81, - 0x4c, 0x27, 0x7d, 0x16, 0x80, 0x18, 0x3f, 0x72, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, 0x80, 0x0c, - 0x27, 0x72, 0x05, 0x80, 0x18, 0x3f, 0x70, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, 0x80, 0x0c, 0x27, - 0x72, 0x05, 0x80, 0x0c, 0x3f, 0x62, 0x05, 0x80, 0x0c, 0x27, 0x62, 0x05, 0x80, 0x18, 0x3f, 0x76, - 0x11, 0x80, 0x18, 0x27, 0x67, 0x05, 0x80, 0x0c, 0x27, 0x65, 0x05, 0x80, 0x81, 0x4b, 0x27, 0x60, - 0x34, 0x80, 0x01, 0xc4, 0x00, 0x80, 0x03, 0xc4, 0xff, 0x80, 0x04, 0xc4, 0xfc, 0x80, 0x03, 0xc4, - 0xf9, 0x80, 0x04, 0xc4, 0xf3, 0x80, 0x03, 0xc4, 0xec, 0x80, 0x04, 0xc4, 0xe3, 0x80, 0x03, 0xc4, - 0xda, 0x80, 0x04, 0xc4, 0xce, 0x80, 0x03, 0xc4, 0xc1, 0x80, 0x04, 0xc4, 0xb2, 0x80, 0x04, 0xc4, - 0xa2, 0x80, 0x03, 0xc4, 0x90, 0x80, 0x04, 0xc4, 0x80, 0x80, 0x02, 0xc4, 0x00, 0x80, 0x84, 0x10, - 0x94, 0x3a, 0x00, 0x00, 0x80, 0x81, 0x40, 0xff, 0x26, 0x7f, 0x2f, 0x80, 0x30, 0x2d, 0x73, 0x17, - 0x80, 0x24, 0x2d, 0x42, 0x0b, 0x80, 0x0c, 0x32, 0x5e, 0x05, 0x80, 0x18, 0xc4, 0x80, 0x34, 0x6f, - 0x30, 0x80, 0x03, 0xc4, 0x00, 0x80, 0x2d, 0x2d, 0x66, 0x0b, 0x80, 0x0c, 0x26, 0x50, 0x01, 0x80, - 0x0c, 0xfd, 0xc7, 0x00, 0x81, 0x01, 0xc1, 0x4a, 0xc0, 0x7f, 0xc4, 0x00, 0xca, 0x00, 0x4a, 0x53, - 0x82, 0x7f, 0x47, 0x4a, 0x82, 0x7f, 0x80, 0x83, 0x00, 0x4c, 0x49, 0x82, 0x74, 0x48, 0x40, 0x82, - 0x73, 0x80, 0x83, 0x00, 0x48, 0x43, 0x82, 0x7d, 0x4c, 0x48, 0x82, 0x7c, 0x80, 0x83, 0x00, 0x47, - 0x35, 0x82, 0x68, 0x4a, 0x43, 0x82, 0x68, 0x80, 0x83, 0x00, 0x47, 0x67, 0x82, 0x79, 0x4a, 0x70, - 0x82, 0x79, 0x80, 0x83, 0x00, 0x48, 0x5a, 0x82, 0x68, 0x4c, 0x63, 0x82, 0x68, 0x80, 0x83, 0x00, - 0x4c, 0x63, 0x82, 0x79, 0x48, 0x66, 0x82, 0x79, 0x80, 0x83, 0x00, 0x4a, 0x6b, 0x82, 0x2d, 0x47, - 0x55, 0x82, 0x2d, 0x80, 0x82, 0x38, 0x48, 0x73, 0x22, 0x45, 0x66, 0x22, 0x80, 0x24, 0x49, 0x6b, - 0x23, 0x46, 0x66, 0x23, 0x80, 0x24, 0x4a, 0x6e, 0x82, 0x79, 0x47, 0x69, 0x82, 0x79, 0x80, 0x83, - 0x00, 0x4c, 0x60, 0x82, 0x6d, 0x48, 0x5d, 0x82, 0x6d, 0x80, 0x83, 0x00, 0x4c, 0x66, 0x82, 0x7a, - 0x48, 0x63, 0x82, 0x79, 0x80, 0x83, 0x00, 0x4a, 0x60, 0x45, 0x47, 0x4f, 0x45, 0x80, 0x48, 0x4b, - 0x66, 0x47, 0x48, 0x55, 0x47, 0x80, 0x48, 0x49, 0x4f, 0x83, 0x2f, 0x4d, 0x69, 0x83, 0x2f, 0x80, - 0x93, 0x70, 0x94, 0x04, 0x05, 0x00, 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, 0x81, 0x02, 0xc1, 0x4a, - 0xc0, 0x00, 0xc4, 0x00, 0xca, 0x00, 0x40, 0x47, 0x82, 0x7f, 0x43, 0x58, 0x82, 0x7f, 0x80, 0x83, - 0x00, 0x42, 0x40, 0x82, 0x79, 0x45, 0x57, 0x82, 0x79, 0x80, 0x83, 0x00, 0x45, 0x56, 0x82, 0x7f, - 0x41, 0x49, 0x82, 0x7f, 0x80, 0x83, 0x00, 0x40, 0x5c, 0x82, 0x67, 0x43, 0x57, 0x82, 0x67, 0x80, - 0x83, 0x00, 0x43, 0x66, 0x82, 0x7a, 0x40, 0x6c, 0x82, 0x7a, 0x80, 0x83, 0x00, 0x45, 0x66, 0x82, - 0x6e, 0x42, 0x6c, 0x82, 0x6e, 0x80, 0x83, 0x00, 0x45, 0x69, 0x82, 0x79, 0x41, 0x5b, 0x82, 0x7a, - 0x80, 0x83, 0x00, 0x40, 0x6f, 0x82, 0x2d, 0x43, 0x61, 0x82, 0x2d, 0x80, 0x82, 0x38, 0x3e, 0x67, - 0x22, 0x41, 0x60, 0x22, 0x80, 0x24, 0x3f, 0x6a, 0x23, 0x42, 0x62, 0x23, 0x80, 0x24, 0x40, 0x73, - 0x82, 0x7a, 0x43, 0x61, 0x82, 0x7a, 0x80, 0x83, 0x00, 0x45, 0x61, 0x82, 0x6d, 0x42, 0x60, 0x82, - 0x6d, 0x80, 0x83, 0x00, 0x41, 0x67, 0x82, 0x7a, 0x45, 0x5e, 0x82, 0x79, 0x80, 0x83, 0x00, 0x40, - 0x6c, 0x45, 0x43, 0x5b, 0x45, 0x80, 0x48, 0x44, 0x5e, 0x47, 0x41, 0x69, 0x47, 0x80, 0x48, 0x42, - 0x6c, 0x83, 0x2f, 0x46, 0x61, 0x83, 0x2f, 0x80, 0x93, 0x70, 0x94, 0xbc, 0x05, 0x00, 0x80, 0x81, - 0x40, 0xff, 0xc7, 0x00, 0x81, 0x03, 0xc1, 0x5a, 0xc0, 0x7f, 0xc4, 0x00, 0xcb, 0x17, 0xca, 0x00, - 0x3b, 0x3a, 0x82, 0x79, 0x3e, 0x43, 0x82, 0x79, 0x80, 0x60, 0x4f, 0x5c, 0x06, 0x80, 0x18, 0x4f, - 0x26, 0x06, 0x80, 0x0c, 0x43, 0x5c, 0x06, 0x80, 0x0c, 0x4f, 0x14, 0x06, 0x80, 0x0c, 0x43, 0x26, - 0x06, 0x80, 0x18, 0x43, 0x14, 0x06, 0x80, 0x6c, 0x4f, 0x5c, 0x06, 0x80, 0x18, 0x4f, 0x26, 0x06, - 0x80, 0x0c, 0x43, 0x5c, 0x06, 0x80, 0x0c, 0x4f, 0x14, 0x06, 0x80, 0x0c, 0x43, 0x26, 0x06, 0x80, - 0x18, 0x43, 0x14, 0x06, 0x80, 0x0c, 0x40, 0x4f, 0x82, 0x79, 0x3c, 0x46, 0x82, 0x79, 0x80, 0x60, - 0x4f, 0x5c, 0x05, 0x80, 0x18, 0x4f, 0x26, 0x05, 0x80, 0x0c, 0x43, 0x5c, 0x05, 0x80, 0x0c, 0x4f, - 0x14, 0x05, 0x80, 0x0c, 0x43, 0x26, 0x05, 0x80, 0x18, 0x43, 0x14, 0x05, 0x80, 0x6c, 0x4f, 0x5c, - 0x04, 0x80, 0x18, 0x4f, 0x26, 0x04, 0x80, 0x0c, 0x43, 0x5c, 0x04, 0x80, 0x0c, 0x4f, 0x14, 0x04, - 0x80, 0x0c, 0x43, 0x26, 0x04, 0x80, 0x18, 0x43, 0x14, 0x04, 0x80, 0x0c, 0x3c, 0x3f, 0x82, 0x77, - 0x40, 0x44, 0x82, 0x76, 0x80, 0x60, 0x4f, 0x5c, 0x05, 0x80, 0x18, 0x4f, 0x26, 0x05, 0x80, 0x0c, - 0x43, 0x5c, 0x04, 0x80, 0x0c, 0x4f, 0x14, 0x05, 0x80, 0x0c, 0x43, 0x26, 0x04, 0x80, 0x18, 0x43, - 0x14, 0x04, 0x80, 0x6c, 0x4f, 0x5c, 0x07, 0x80, 0x18, 0x4f, 0x26, 0x07, 0x80, 0x0c, 0x43, 0x5c, - 0x05, 0x80, 0x0c, 0x4f, 0x14, 0x07, 0x80, 0x0c, 0x43, 0x26, 0x05, 0x80, 0x18, 0x43, 0x14, 0x05, - 0x80, 0x0c, 0x3e, 0x3a, 0x82, 0x7a, 0x3b, 0x2c, 0x82, 0x7b, 0x80, 0x60, 0x4f, 0x5c, 0x05, 0x80, - 0x18, 0x4f, 0x26, 0x05, 0x80, 0x0c, 0x43, 0x5c, 0x05, 0x80, 0x0c, 0x4f, 0x14, 0x05, 0x80, 0x0c, - 0x43, 0x26, 0x05, 0x80, 0x18, 0x43, 0x14, 0x05, 0x80, 0x81, 0x48, 0x4e, 0x4c, 0x0d, 0x80, 0x05, - 0xc0, 0x4f, 0x4f, 0x59, 0x82, 0x0e, 0x80, 0x81, 0x10, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, - 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x6d, 0xca, 0x00, 0x80, 0x05, 0x4f, 0x35, 0x05, - 0x80, 0x06, 0x51, 0x5b, 0x4a, 0x80, 0x48, 0x4f, 0x46, 0x07, 0x80, 0x17, 0x4e, 0x50, 0x42, 0x80, - 0x48, 0x56, 0x61, 0x81, 0x6e, 0x80, 0x62, 0xca, 0x02, 0x80, 0x08, 0xca, 0x07, 0x80, 0x08, 0xca, - 0x0b, 0x80, 0x07, 0xca, 0x12, 0x80, 0x79, 0xca, 0x00, 0x51, 0x5c, 0x44, 0x80, 0x40, 0x53, 0x55, - 0x09, 0x80, 0x08, 0x54, 0x55, 0x78, 0x80, 0x54, 0xca, 0x01, 0x80, 0x09, 0xca, 0x0a, 0x80, 0x08, - 0xca, 0x17, 0x80, 0x12, 0x53, 0x58, 0x49, 0x80, 0x01, 0xca, 0x00, 0x80, 0x47, 0x51, 0x53, 0x79, - 0x80, 0x49, 0xca, 0x01, 0x80, 0x08, 0xca, 0x09, 0x80, 0x08, 0xca, 0x0f, 0x80, 0x07, 0xca, 0x17, - 0x80, 0x19, 0xca, 0x00, 0x53, 0x5d, 0x48, 0x80, 0x47, 0x54, 0x56, 0x81, 0x40, 0x80, 0x4f, 0xca, - 0x00, 0x80, 0x07, 0xca, 0x04, 0x80, 0x08, 0xca, 0x09, 0x80, 0x07, 0xca, 0x0d, 0x80, 0x07, 0xca, - 0x12, 0x80, 0x54, 0x4f, 0x56, 0x77, 0x80, 0x01, 0xca, 0x00, 0x80, 0x4e, 0xca, 0x00, 0x80, 0x09, - 0xca, 0x09, 0x80, 0x08, 0xca, 0x12, 0x80, 0x13, 0xca, 0x00, 0x80, 0x02, 0x4d, 0x55, 0x2b, 0x80, - 0x28, 0x4e, 0x50, 0x25, 0x80, 0x23, 0x4f, 0x58, 0x82, 0x08, 0x80, 0x81, 0x11, 0xca, 0x00, 0x80, - 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x61, 0xca, 0x00, 0x80, - 0x12, 0x4f, 0x41, 0x0b, 0x80, 0x06, 0x51, 0x53, 0x4a, 0x80, 0x48, 0x4f, 0x44, 0x0a, 0x80, 0x17, - 0x4e, 0x46, 0x44, 0x80, 0x47, 0x56, 0x5e, 0x81, 0x6f, 0x80, 0x62, 0xca, 0x00, 0x80, 0x08, 0xca, - 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x78, 0x54, 0x5e, 0x4a, 0x80, 0x01, - 0xca, 0x00, 0x80, 0x47, 0x58, 0x59, 0x49, 0x80, 0x48, 0x54, 0x60, 0x7a, 0x80, 0x49, 0xca, 0x00, - 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x19, 0xca, 0x00, - 0x53, 0x5d, 0x76, 0x80, 0x48, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, - 0x07, 0xca, 0x12, 0x80, 0x13, 0x54, 0x26, 0x0e, 0x80, 0x05, 0x56, 0x57, 0x4a, 0x80, 0x01, 0xca, - 0x00, 0x80, 0x47, 0x54, 0x5f, 0x82, 0x7f, 0x80, 0x81, 0x11, 0xca, 0x01, 0x80, 0x08, 0xca, 0x04, - 0x80, 0x08, 0xca, 0x09, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x08, 0xca, 0x0f, 0x80, 0x08, 0xca, 0x12, - 0x80, 0x07, 0xca, 0x17, 0x80, 0x81, 0x41, 0xca, 0x00, 0x80, 0x91, 0x7f, 0x94, 0x74, 0x06, 0x00, - 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, 0x81, 0x04, 0xc1, 0x5a, 0xc0, 0x00, 0xc4, 0x00, 0xcb, 0x17, - 0xca, 0x00, 0x37, 0x53, 0x82, 0x7c, 0x34, 0x3f, 0x82, 0x7a, 0x80, 0x6c, 0x43, 0x5f, 0x06, 0x80, - 0x18, 0x43, 0x28, 0x06, 0x80, 0x18, 0x4f, 0x5f, 0x09, 0x43, 0x11, 0x06, 0x80, 0x18, 0x4f, 0x28, - 0x09, 0x80, 0x0c, 0x95, 0x5a, 0x0b, 0x00, 0x39, 0x46, 0x82, 0x79, 0x36, 0x2f, 0x82, 0x79, 0x80, - 0x0c, 0x4f, 0x11, 0x08, 0x80, 0x60, 0x43, 0x5f, 0x05, 0x80, 0x18, 0x43, 0x28, 0x05, 0x80, 0x18, - 0x4f, 0x5f, 0x08, 0x43, 0x11, 0x05, 0x80, 0x18, 0x4f, 0x28, 0x08, 0x80, 0x18, 0x4f, 0x11, 0x08, - 0x80, 0x60, 0x43, 0x5f, 0x07, 0x80, 0x18, 0x43, 0x28, 0x07, 0x80, 0x18, 0x4f, 0x5f, 0x09, 0x43, - 0x11, 0x07, 0x80, 0x18, 0x4f, 0x28, 0x09, 0x80, 0x0c, 0x35, 0x34, 0x82, 0x7a, 0x39, 0x3e, 0x82, - 0x79, 0x80, 0x0c, 0x4f, 0x11, 0x09, 0x80, 0x60, 0x43, 0x5f, 0x04, 0x80, 0x18, 0x43, 0x28, 0x04, - 0x80, 0x18, 0x4f, 0x5f, 0x09, 0x43, 0x11, 0x04, 0x80, 0x18, 0x4f, 0x28, 0x09, 0x80, 0x0c, 0x95, - 0x5a, 0x0b, 0x00, 0x34, 0x41, 0x82, 0x7c, 0x37, 0x34, 0x82, 0x7c, 0x80, 0x0c, 0x4f, 0x11, 0x08, - 0x80, 0x60, 0x43, 0x5f, 0x05, 0x80, 0x18, 0x43, 0x28, 0x05, 0x80, 0x18, 0x4f, 0x5f, 0x08, 0x43, - 0x11, 0x05, 0x80, 0x18, 0x4f, 0x28, 0x08, 0x80, 0x18, 0x4f, 0x11, 0x08, 0x80, 0x81, 0x2f, 0x42, - 0x56, 0x0d, 0x80, 0x05, 0x43, 0x63, 0x82, 0x0e, 0x80, 0x02, 0xc0, 0x4f, 0x80, 0x81, 0x0e, 0xca, - 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x6d, 0xca, - 0x00, 0x80, 0x05, 0x43, 0x3f, 0x05, 0x80, 0x06, 0x45, 0x65, 0x4a, 0x80, 0x48, 0x43, 0x50, 0x07, - 0x80, 0x17, 0x42, 0x5a, 0x42, 0x80, 0x48, 0x4a, 0x6b, 0x81, 0x6e, 0x80, 0x62, 0xca, 0x02, 0x80, - 0x08, 0xca, 0x07, 0x80, 0x08, 0xca, 0x0b, 0x80, 0x07, 0xca, 0x12, 0x80, 0x79, 0xca, 0x00, 0x45, - 0x66, 0x44, 0x80, 0x40, 0x47, 0x5f, 0x09, 0x80, 0x08, 0x48, 0x5f, 0x78, 0x80, 0x54, 0xca, 0x01, - 0x80, 0x09, 0xca, 0x0a, 0x80, 0x08, 0xca, 0x17, 0x80, 0x12, 0x47, 0x62, 0x49, 0x80, 0x01, 0xca, - 0x00, 0x80, 0x47, 0x45, 0x5d, 0x79, 0x80, 0x49, 0xca, 0x01, 0x80, 0x08, 0xca, 0x09, 0x80, 0x08, - 0xca, 0x0f, 0x80, 0x07, 0xca, 0x17, 0x80, 0x19, 0xca, 0x00, 0x47, 0x67, 0x48, 0x80, 0x47, 0x48, - 0x60, 0x81, 0x40, 0x80, 0x4f, 0xca, 0x00, 0x80, 0x07, 0xca, 0x04, 0x80, 0x08, 0xca, 0x09, 0x80, - 0x07, 0xca, 0x0d, 0x80, 0x07, 0xca, 0x12, 0x80, 0x54, 0x43, 0x60, 0x77, 0x80, 0x01, 0xca, 0x00, - 0x80, 0x4e, 0xca, 0x00, 0x80, 0x09, 0xca, 0x09, 0x80, 0x08, 0xca, 0x12, 0x80, 0x13, 0xca, 0x00, - 0x80, 0x02, 0x41, 0x5f, 0x2b, 0x80, 0x28, 0x42, 0x5a, 0x25, 0x80, 0x23, 0x43, 0x62, 0x82, 0x08, - 0x80, 0x81, 0x11, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, - 0x12, 0x80, 0x61, 0xca, 0x00, 0x80, 0x12, 0x43, 0x4b, 0x0b, 0x80, 0x06, 0x45, 0x5d, 0x4a, 0x80, - 0x48, 0x43, 0x4e, 0x0a, 0x80, 0x17, 0x42, 0x50, 0x44, 0x80, 0x47, 0x4a, 0x68, 0x81, 0x6f, 0x80, - 0x62, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, - 0x78, 0x48, 0x68, 0x4a, 0x80, 0x01, 0xca, 0x00, 0x80, 0x47, 0x4c, 0x63, 0x49, 0x80, 0x48, 0x48, - 0x6a, 0x7a, 0x80, 0x49, 0xca, 0x00, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, - 0xca, 0x12, 0x80, 0x19, 0xca, 0x00, 0x47, 0x67, 0x76, 0x80, 0x48, 0xca, 0x00, 0x80, 0x08, 0xca, - 0x04, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x07, 0xca, 0x12, 0x80, 0x13, 0x48, 0x30, 0x0e, 0x80, 0x05, - 0x4a, 0x61, 0x4a, 0x80, 0x01, 0xca, 0x00, 0x80, 0x47, 0x48, 0x69, 0x82, 0x7f, 0x80, 0x81, 0x11, - 0xca, 0x01, 0x80, 0x08, 0xca, 0x04, 0x80, 0x08, 0xca, 0x09, 0x80, 0x08, 0xca, 0x0a, 0x80, 0x08, - 0xca, 0x0f, 0x80, 0x08, 0xca, 0x12, 0x80, 0x07, 0xca, 0x17, 0x80, 0x81, 0x41, 0xca, 0x00, 0x80, - 0x92, 0x00, 0x94, 0x06, 0x09, 0x00, 0x80, 0x81, 0x40, 0xff, 0x80, 0x0c, 0x4f, 0x11, 0x09, 0x80, - 0x60, 0x43, 0x5f, 0x05, 0x80, 0x18, 0x43, 0x28, 0x05, 0x80, 0x18, 0x4f, 0x5f, 0x08, 0x43, 0x11, - 0x05, 0x80, 0x18, 0x4f, 0x28, 0x08, 0x80, 0x0c, 0xfd, 0xc7, 0x00, 0x81, 0x05, 0xc1, 0x5d, 0xc0, - 0x40, 0xc4, 0x00, 0xca, 0x00, 0x4f, 0x4e, 0x8b, 0x4b, 0x80, 0xa0, 0x7e, 0x4a, 0x4a, 0x45, 0x47, - 0x39, 0x45, 0x43, 0x47, 0x45, 0x80, 0x48, 0x4b, 0x51, 0x47, 0x48, 0x40, 0x47, 0x44, 0x4b, 0x47, - 0x80, 0x48, 0x49, 0x37, 0x83, 0x31, 0x4d, 0x51, 0x83, 0x31, 0x46, 0x4b, 0x83, 0x31, 0x80, 0x93, - 0x72, 0x94, 0x7b, 0x0b, 0x00, 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, 0x81, 0x06, 0xc1, 0x7f, 0xc0, - 0x40, 0xc4, 0x00, 0xca, 0x00, 0x4f, 0x48, 0x0b, 0x80, 0x18, 0x54, 0x3a, 0x0b, 0x80, 0x18, 0x5b, - 0x37, 0x0b, 0x80, 0x18, 0x4f, 0x42, 0x0b, 0x80, 0x18, 0x54, 0x3b, 0x0b, 0x80, 0x18, 0x5b, 0x2e, - 0x0b, 0x80, 0x18, 0x4f, 0x3e, 0x0b, 0x80, 0x18, 0x54, 0x38, 0x0b, 0x80, 0x18, 0x5b, 0x33, 0x0b, - 0x80, 0x18, 0x4f, 0x3a, 0x0b, 0x80, 0x18, 0x54, 0x3a, 0x0b, 0x80, 0x18, 0x5b, 0x30, 0x0b, 0x80, - 0x18, 0x4f, 0x45, 0x0b, 0x80, 0x18, 0x54, 0x3b, 0x0b, 0x80, 0x18, 0x5b, 0x34, 0x0b, 0x80, 0x18, - 0x4f, 0x3d, 0x0b, 0x80, 0x18, 0x54, 0x34, 0x0b, 0x80, 0x18, 0x5b, 0x32, 0x0b, 0x80, 0x18, 0x4f, - 0x3d, 0x0b, 0x80, 0x18, 0x54, 0x37, 0x0b, 0x80, 0x18, 0x5b, 0x2b, 0x0b, 0x80, 0x18, 0x4f, 0x40, - 0x0b, 0x80, 0x18, 0x54, 0x38, 0x0b, 0x80, 0x18, 0x5b, 0x2e, 0x0b, 0x80, 0x18, 0x4f, 0x3d, 0x0b, - 0x80, 0x18, 0x54, 0x34, 0x0b, 0x80, 0x18, 0x5b, 0x2e, 0x0b, 0x80, 0x18, 0x4f, 0x35, 0x0b, 0x80, - 0x18, 0x54, 0x34, 0x0b, 0x80, 0x18, 0x5b, 0x30, 0x0b, 0x80, 0x18, 0x4f, 0x3b, 0x0b, 0x80, 0x18, - 0x54, 0x36, 0x0b, 0x80, 0x18, 0x5b, 0x36, 0x0b, 0x80, 0x18, 0x4f, 0x40, 0x0b, 0x80, 0x18, 0x54, - 0x39, 0x0b, 0x80, 0x18, 0x5b, 0x2d, 0x0b, 0x80, 0x18, 0x4f, 0x40, 0x0b, 0x80, 0x18, 0x54, 0x31, - 0x0b, 0x80, 0x18, 0x5b, 0x30, 0x0b, 0x80, 0x18, 0x4f, 0x40, 0x0b, 0x80, 0x18, 0x54, 0x35, 0x0b, - 0x80, 0x18, 0x5b, 0x30, 0x0b, 0x80, 0x18, 0x4f, 0x3b, 0x0b, 0x80, 0x18, 0x54, 0x32, 0x0b, 0x80, - 0x18, 0x5b, 0x32, 0x0b, 0x80, 0x18, 0x4f, 0x3a, 0x0b, 0x80, 0x18, 0x54, 0x36, 0x0b, 0x80, 0x18, - 0x5b, 0x2e, 0x0b, 0x80, 0x18, 0x4f, 0x3a, 0x0b, 0x80, 0x18, 0x54, 0x39, 0x0b, 0x80, 0x18, 0x5b, - 0x2e, 0x0b, 0x80, 0x18, 0x4f, 0x3d, 0x0b, 0x80, 0x18, 0x54, 0x37, 0x0b, 0x80, 0x18, 0x5b, 0x2e, - 0x0b, 0x80, 0x18, 0x4f, 0x42, 0x0b, 0x80, 0x18, 0x54, 0x37, 0x0b, 0x80, 0x18, 0x5b, 0x2e, 0x0b, - 0x80, 0x18, 0x4f, 0x38, 0x0b, 0x80, 0x18, 0x54, 0x2d, 0x0b, 0x80, 0x18, 0x5b, 0x29, 0x0b, 0x80, - 0x18, 0x4f, 0x35, 0x0b, 0x80, 0x18, 0x54, 0x2d, 0x0b, 0x80, 0x18, 0x5b, 0x32, 0x0b, 0x80, 0x18, - 0x4f, 0x31, 0x0b, 0x80, 0xaa, 0x18, 0x94, 0xbb, 0x0b, 0x00, 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, - 0x81, 0x07, 0xc1, 0x7f, 0xc0, 0x40, 0xc4, 0x00, 0xca, 0x00, 0x80, 0xa5, 0x0f, 0x50, 0x5a, 0x24, - 0x80, 0x08, 0x57, 0x4e, 0x20, 0x80, 0x0c, 0x5a, 0x53, 0x0f, 0x80, 0x07, 0x5c, 0x43, 0x14, 0x80, - 0x0a, 0x5e, 0x64, 0x2a, 0x80, 0x0c, 0x63, 0x5e, 0x3a, 0x80, 0x90, 0x40, 0x94, 0x10, 0x0d, 0x00, - 0x80, 0x81, 0x40, 0xff, 0xc7, 0x00, 0x81, 0x7f, 0xc1, 0x7f, 0xc0, 0x40, 0xc4, 0x00, 0xca, 0x00, - 0x24, 0x7e, 0x47, 0x31, 0x60, 0x81, 0x0f, 0x80, 0x84, 0x38, 0x41, 0x17, 0x03, 0x80, 0x04, 0x41, - 0x30, 0x03, 0x80, 0x04, 0x41, 0x74, 0x0b, 0x80, 0x0c, 0x41, 0x56, 0x0b, 0x80, 0x0c, 0x41, 0x7f, - 0x47, 0x80, 0x60, 0x24, 0x71, 0x23, 0x31, 0x5b, 0x46, 0x80, 0x24, 0x24, 0x74, 0x23, 0x34, 0x54, - 0x81, 0x03, 0x80, 0x24, 0x24, 0x78, 0x2f, 0x31, 0x60, 0x81, 0x0f, 0x80, 0x84, 0x38, 0x41, 0x17, - 0x03, 0x80, 0x04, 0x41, 0x30, 0x03, 0x80, 0x04, 0x29, 0x4c, 0x0b, 0x41, 0x5a, 0x0b, 0x80, 0x0c, - 0x29, 0x28, 0x0b, 0x41, 0x3e, 0x0b, 0x80, 0x0c, 0x29, 0x3a, 0x0b, 0x41, 0x40, 0x0b, 0x80, 0x0c, - 0x29, 0x28, 0x0b, 0x41, 0x38, 0x0b, 0x80, 0x0c, 0x29, 0x36, 0x0b, 0x41, 0x42, 0x0b, 0x80, 0x0c, - 0x29, 0x38, 0x0b, 0x41, 0x38, 0x0b, 0x80, 0x0c, 0x29, 0x44, 0x0b, 0x41, 0x4c, 0x0b, 0x80, 0x0c, - 0x29, 0x42, 0x0b, 0x41, 0x54, 0x0b, 0x80, 0x0c, 0x29, 0x4e, 0x0b, 0x41, 0x5e, 0x0b, 0x80, 0x0c, - 0x29, 0x54, 0x0b, 0x41, 0x54, 0x0b, 0x80, 0x0c, 0x29, 0x5e, 0x0b, 0x41, 0x62, 0x0b, 0x80, 0x0c, - 0x29, 0x62, 0x0b, 0x41, 0x6a, 0x0b, 0x80, 0x0c, 0x29, 0x6e, 0x0b, 0x41, 0x73, 0x0b, 0x80, 0x0c, - 0x29, 0x6c, 0x0b, 0x41, 0x73, 0x0b, 0x80, 0x0c, 0x29, 0x73, 0x0b, 0x41, 0x73, 0x0b, 0x80, 0x0c, - 0x29, 0x70, 0x0b, 0x41, 0x73, 0x0b, 0x80, 0x0c, 0x31, 0x60, 0x81, 0x3e, 0x24, 0x79, 0x2f, 0x80, - 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6c, 0x0b, 0x80, 0x0c, 0x24, 0x7e, 0x17, 0x80, 0x18, - 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x7c, 0x2e, 0x80, 0x30, 0x95, 0x5f, 0x10, 0x00, 0x95, 0x83, - 0x10, 0x00, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6e, 0x0b, 0x80, - 0x0c, 0x24, 0x7c, 0x17, 0x80, 0x18, 0x31, 0x5b, 0x47, 0x24, 0x79, 0x23, 0x80, 0x24, 0x34, 0x54, - 0x81, 0x4b, 0x24, 0x79, 0x23, 0x80, 0x24, 0x95, 0xa2, 0x10, 0x00, 0x95, 0x5f, 0x10, 0x00, 0x95, - 0x83, 0x10, 0x00, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6e, 0x0b, - 0x80, 0x0c, 0x24, 0x7c, 0x17, 0x80, 0x18, 0x37, 0x7f, 0x47, 0x24, 0x79, 0x23, 0x80, 0x24, 0x34, - 0x60, 0x81, 0x4b, 0x24, 0x79, 0x23, 0x80, 0x24, 0x95, 0xa2, 0x10, 0x00, 0x95, 0x5f, 0x10, 0x00, - 0x95, 0x83, 0x10, 0x00, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6e, - 0x0b, 0x80, 0x0c, 0x24, 0x7c, 0x17, 0x80, 0x18, 0x31, 0x5b, 0x47, 0x24, 0x79, 0x23, 0x80, 0x24, - 0x34, 0x5b, 0x81, 0x4b, 0x24, 0x79, 0x23, 0x80, 0x24, 0x95, 0xa2, 0x10, 0x00, 0x95, 0xc5, 0x10, - 0x00, 0x31, 0x5b, 0x81, 0x0f, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, - 0x7c, 0x17, 0x80, 0x18, 0x34, 0x5b, 0x77, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x17, 0x80, - 0x18, 0x31, 0x60, 0x81, 0x10, 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x95, 0xc5, 0x10, 0x00, 0x24, 0x79, - 0x23, 0x80, 0x24, 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x17, 0x80, 0x18, 0x24, 0x79, 0x2f, - 0x80, 0x30, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x37, 0x79, 0x81, 0x0f, - 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, - 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x2f, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x7c, - 0x17, 0x80, 0x18, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x2f, - 0x80, 0x18, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x17, 0x80, 0x18, 0x24, 0x7c, 0x2f, 0x80, - 0x18, 0x29, 0x7c, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x0c, 0x24, 0x79, 0x23, 0x80, 0x24, - 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, - 0x79, 0x2f, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x7c, 0x17, 0x80, 0x18, 0x24, 0x79, - 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x79, 0x17, - 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x31, 0x60, 0x81, 0x6f, 0x24, 0x79, 0x47, 0x80, 0x18, - 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x37, 0x79, 0x5f, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, - 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, - 0x18, 0x24, 0x79, 0x47, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x23, 0x80, 0x24, - 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x34, 0x60, 0x81, 0x57, 0x24, 0x79, - 0x2f, 0x80, 0x30, 0x24, 0x79, 0x3b, 0x80, 0x18, 0x29, 0x7c, 0x2f, 0x80, 0x30, 0x37, 0x79, 0x5f, - 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x2f, 0x80, 0x18, 0x24, - 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x47, 0x80, 0x18, 0x29, 0x79, 0x0b, 0x80, 0x0c, 0x29, 0x7c, - 0x30, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x23, 0x80, 0x0c, 0x29, 0x7c, 0x3b, - 0x80, 0x18, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x47, 0x80, 0x18, 0x29, 0x7f, 0x17, 0x80, - 0x18, 0x29, 0x7f, 0x0b, 0x80, 0x0c, 0x29, 0x7f, 0x81, 0x4b, 0x80, 0x0c, 0x37, 0x79, 0x81, 0x3f, - 0x24, 0x79, 0x81, 0x3f, 0x80, 0x84, 0x40, 0x94, 0x46, 0x0d, 0x00, 0x80, 0x81, 0x40, 0xff, 0x24, - 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6e, 0x0b, 0x80, 0x0c, 0x24, 0x7c, - 0x17, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x6e, 0x0b, 0x80, 0x0c, 0x29, 0x7c, 0x23, - 0x80, 0x24, 0xfd, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, 0x24, 0x6c, 0x0b, - 0x80, 0x0c, 0x24, 0x7e, 0x17, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x7c, 0x2e, 0x80, - 0x30, 0xfd, 0x31, 0x60, 0x81, 0x3f, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x29, 0x7c, 0x23, 0x80, 0x24, - 0x24, 0x6c, 0x0b, 0x80, 0x0c, 0x24, 0x7e, 0x17, 0x80, 0x18, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, - 0x7c, 0x2e, 0x80, 0x30, 0xfd, 0x24, 0x79, 0x23, 0x80, 0x24, 0x24, 0x79, 0x0b, 0x80, 0x0c, 0x29, - 0x7c, 0x17, 0x80, 0x18, 0x24, 0x79, 0x2f, 0x80, 0x30, 0x24, 0x79, 0x17, 0x80, 0x18, 0x29, 0x7c, - 0x2f, 0x80, 0x0c, 0x24, 0x79, 0x23, 0x80, 0x24, 0xfd, 0xc7, 0x00, 0x81, 0x0b, 0xc1, 0x60, 0xc0, - 0x4d, 0xc4, 0x00, 0xca, 0x00, 0x2e, 0x45, 0x17, 0x80, 0x18, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, - 0x57, 0x0b, 0x80, 0x0c, 0x2a, 0x61, 0x0b, 0x80, 0x0c, 0x2e, 0x76, 0x0b, 0x80, 0x0c, 0x2c, 0x4e, - 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x30, 0x0b, - 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x65, 0x0b, 0x80, - 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, 0x0c, - 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, - 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x32, 0x0b, - 0x80, 0x0c, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x69, 0x0b, 0x80, - 0x0c, 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x2e, 0x75, 0x0b, 0x80, 0x0c, - 0x2c, 0x52, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, - 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x61, 0x0b, 0x80, 0x0c, 0x2a, 0x1d, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, - 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x3e, 0x0b, - 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x69, 0x0b, 0x80, - 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, - 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, - 0x51, 0x0b, 0x80, 0x0c, 0x2a, 0x65, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x40, - 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, 0x0b, - 0x80, 0x0c, 0x2e, 0x6d, 0x23, 0x80, 0x18, 0x2c, 0x4d, 0x0b, 0x80, 0x0c, 0x2e, 0x69, 0x23, 0x80, - 0x24, 0x2c, 0x69, 0x05, 0x80, 0x06, 0x2a, 0x33, 0x05, 0x80, 0x06, 0x2a, 0x52, 0x05, 0x80, 0x06, - 0x2a, 0x25, 0x05, 0x80, 0x06, 0x2a, 0x69, 0x05, 0x80, 0x06, 0x2a, 0x48, 0x05, 0x80, 0x06, 0x2a, - 0x5c, 0x05, 0x80, 0x06, 0x2a, 0x38, 0x05, 0x80, 0x06, 0x2a, 0x67, 0x0b, 0x80, 0x0c, 0x2a, 0x1e, - 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, 0x0b, - 0x80, 0x0c, 0x2a, 0x30, 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, - 0x0c, 0x2a, 0x65, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, - 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, - 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x39, - 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, - 0x80, 0x0c, 0x2a, 0x32, 0x0b, 0x80, 0x0c, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, - 0x0c, 0x2a, 0x69, 0x0b, 0x80, 0x0c, 0x2e, 0x7e, 0x0b, 0x80, 0x0c, 0x2c, 0x58, 0x0b, 0x80, 0x0c, - 0x2a, 0x4a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, - 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x61, 0x0b, 0x80, 0x0c, 0x2a, 0x1d, - 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, - 0x80, 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, - 0x0c, 0x2a, 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2e, 0x78, 0x77, 0x80, 0x30, - 0x2c, 0x1a, 0x17, 0x80, 0x18, 0x2c, 0x30, 0x17, 0x80, 0x18, 0x2c, 0x1c, 0x17, 0x80, 0x18, 0x2c, - 0x32, 0x17, 0x80, 0x18, 0x2c, 0x20, 0x17, 0x80, 0x18, 0x2c, 0x3e, 0x17, 0x80, 0x18, 0x2c, 0x2e, - 0x17, 0x80, 0x24, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, - 0x80, 0x18, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, - 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x3f, 0x0b, 0x80, 0x0c, 0x2e, 0x7d, 0x17, 0x80, 0x18, - 0x2c, 0x65, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, - 0x36, 0x0b, 0x80, 0x0c, 0x95, 0x95, 0x17, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, - 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, 0x80, - 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, - 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2e, 0x73, 0x17, 0x80, 0x18, 0x2c, 0x69, 0x0b, 0x80, 0x0c, 0x2a, - 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, 0x2a, 0x77, - 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, - 0x80, 0x18, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, - 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, 0x2e, 0x7a, 0x23, 0x80, 0x24, - 0x2e, 0x7c, 0x23, 0x80, 0x24, 0x95, 0xd7, 0x17, 0x00, 0x95, 0x1e, 0x18, 0x00, 0x2a, 0x74, 0x0b, - 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, - 0x18, 0x2a, 0x1d, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, - 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2e, 0x78, 0x17, 0x80, 0x18, 0x2c, - 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, - 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, - 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x18, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, - 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, - 0x2e, 0x7e, 0x17, 0x80, 0x18, 0x2c, 0x5a, 0x0b, 0x80, 0x0c, 0x2e, 0x7b, 0x23, 0x80, 0x24, 0x2a, - 0x61, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, - 0x0b, 0x80, 0x18, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, - 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x30, 0x0b, 0x80, 0x0c, 0x2e, 0x74, 0x17, 0x80, - 0x18, 0x2c, 0x65, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, - 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x95, 0x95, 0x17, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, - 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, - 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, - 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2e, 0x7a, 0x17, 0x80, 0x18, 0x2c, 0x69, 0x0b, 0x80, 0x0c, - 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, 0x2a, - 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, - 0x0b, 0x80, 0x18, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, - 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, 0x2e, 0x76, 0x17, 0x80, - 0x18, 0x2c, 0x4b, 0x0b, 0x80, 0x0c, 0x2e, 0x7c, 0x23, 0x80, 0x24, 0x2a, 0x69, 0x0b, 0x80, 0x0c, - 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x18, 0x2a, - 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, - 0x0b, 0x80, 0x0c, 0x2a, 0x30, 0x0b, 0x80, 0x0c, 0x2e, 0x72, 0x17, 0x80, 0x18, 0x2c, 0x65, 0x0b, - 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, - 0x0c, 0x95, 0x1e, 0x18, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, - 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, 0x80, 0x0c, 0x2e, 0x78, - 0x17, 0x80, 0x18, 0x2c, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2e, 0x78, 0x17, - 0x80, 0x18, 0x2c, 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, - 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x0c, - 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x18, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, - 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x54, - 0x0b, 0x80, 0x0c, 0x2e, 0x6e, 0x17, 0x80, 0x18, 0x2c, 0x3f, 0x0b, 0x80, 0x0c, 0x2e, 0x65, 0x0b, - 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x0c, 0x95, 0xd7, 0x17, 0x00, - 0x95, 0x65, 0x18, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, 0x0b, 0x80, 0x0c, 0x2a, 0x38, - 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, - 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x3e, 0x0b, 0x80, - 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x69, 0x0b, 0x80, 0x0c, - 0x2a, 0x45, 0x0b, 0x80, 0x24, 0x95, 0x65, 0x18, 0x00, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, 0x47, - 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x18, 0x2a, 0x40, 0x0b, - 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, - 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x18, - 0x2a, 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x2a, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, - 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, - 0x0b, 0x80, 0x18, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, - 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x30, 0x0b, 0x80, 0x0c, 0x2e, 0x65, 0x17, 0x80, - 0x18, 0x2c, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x34, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, - 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x95, 0x1e, 0x18, 0x00, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x29, - 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x18, 0x2a, 0x1d, 0x0b, - 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x0c, 0x2a, 0x5a, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, - 0x0c, 0x2a, 0x3e, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x3b, 0x0b, 0x80, 0x24, - 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, 0x80, 0x0c, 0x2a, - 0x47, 0x0b, 0x80, 0x0c, 0x2a, 0x3c, 0x0b, 0x80, 0x0c, 0x2a, 0x51, 0x0b, 0x80, 0x18, 0x2a, 0x40, - 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x0c, 0x2a, 0x45, 0x0b, 0x80, 0x0c, 0x2a, 0x77, 0x0b, - 0x80, 0x0c, 0x2a, 0x54, 0x0b, 0x80, 0x0c, 0x2e, 0x6a, 0x17, 0x80, 0x18, 0x2c, 0x5a, 0x0b, 0x80, - 0x0c, 0x2a, 0x47, 0x0b, 0x80, 0x24, 0x2c, 0x6a, 0x81, 0x0f, 0x80, 0x84, 0x40, 0x94, 0xeb, 0x10, - 0x00, 0x80, 0x81, 0x40, 0xff, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, - 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x18, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x32, 0x0b, - 0x80, 0x0c, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x24, 0x2a, 0x2a, 0x0b, 0x80, - 0x0c, 0x2a, 0x4b, 0x0b, 0x80, 0x0c, 0xfd, 0x2a, 0x69, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, - 0x0c, 0x2a, 0x2d, 0x0b, 0x80, 0x0c, 0x2a, 0x57, 0x0b, 0x80, 0x18, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, - 0x2a, 0x49, 0x0b, 0x80, 0x0c, 0x2a, 0x31, 0x0b, 0x80, 0x0c, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, - 0x30, 0x0b, 0x80, 0x0c, 0x2a, 0x38, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x18, 0x2a, 0x34, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0xfd, 0x2a, 0x6d, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, - 0x80, 0x18, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, - 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x32, 0x0b, 0x80, 0x0c, 0x2a, 0x1e, 0x0b, 0x80, 0x0c, - 0x2a, 0x42, 0x0b, 0x80, 0x18, 0x2a, 0x36, 0x0b, 0x80, 0x0c, 0x2a, 0x2a, 0x0b, 0x80, 0x0c, 0x2a, - 0x4b, 0x0b, 0x80, 0x0c, 0xfd, 0x2a, 0x6d, 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, - 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x40, 0x0b, 0x80, 0x18, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x42, - 0x0b, 0x80, 0x0c, 0x2a, 0x39, 0x0b, 0x80, 0x0c, 0x2a, 0x74, 0x0b, 0x80, 0x0c, 0x2a, 0x32, 0x0b, - 0x80, 0x0c, 0x2e, 0x66, 0x17, 0x80, 0x18, 0x2c, 0x42, 0x0b, 0x80, 0x0c, 0x2a, 0x36, 0x0b, 0x80, - 0x0c, 0x2a, 0x2a, 0x0b, 0x80, 0x0c, 0x2a, 0x4b, 0x0b, 0x80, 0x0c, 0xfd, 0xc7, 0x00, 0x81, 0x0c, - 0xc1, 0x52, 0xc0, 0x27, 0xc4, 0x00, 0xca, 0x00, 0x80, 0x18, 0x46, 0x4c, 0x2f, 0x80, 0x30, 0x46, - 0x44, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, 0x80, 0x30, 0x46, 0x41, 0x2f, 0x80, 0x30, 0x46, 0x46, - 0x2f, 0x80, 0x30, 0x46, 0x46, 0x2f, 0x80, 0x30, 0x46, 0x45, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, - 0x80, 0x30, 0x46, 0x45, 0x2f, 0x80, 0x30, 0x46, 0x43, 0x2f, 0x80, 0x30, 0x46, 0x41, 0x2f, 0x80, - 0x30, 0x46, 0x43, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, 0x80, 0x30, - 0x46, 0x49, 0x2f, 0x80, 0x30, 0x46, 0x48, 0x2f, 0x80, 0x30, 0x46, 0x49, 0x2f, 0x80, 0x30, 0x46, - 0x46, 0x2f, 0x80, 0x30, 0x46, 0x42, 0x2f, 0x80, 0x30, 0x46, 0x47, 0x2f, 0x80, 0x30, 0x46, 0x48, - 0x2f, 0x80, 0x30, 0x46, 0x48, 0x2f, 0x80, 0x30, 0x46, 0x4e, 0x2f, 0x80, 0x30, 0x46, 0x47, 0x2f, - 0x80, 0x30, 0x46, 0x46, 0x2f, 0x80, 0x30, 0x46, 0x4a, 0x2f, 0x80, 0x30, 0x46, 0x44, 0x2f, 0x80, - 0x30, 0x46, 0x49, 0x2f, 0x80, 0x30, 0x46, 0x48, 0x2f, 0x80, 0x30, 0x46, 0x48, 0x2f, 0x80, 0x30, - 0x46, 0x4a, 0x2f, 0x80, 0x30, 0x46, 0x49, 0x17, 0x80, 0x18, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0x1e, 0x1a, 0x00, 0x95, 0x6f, - 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xcd, 0x19, 0x00, 0x95, 0x1e, - 0x1a, 0x00, 0x95, 0x6f, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x95, 0xc0, 0x1a, 0x00, 0x46, 0x7d, - 0x81, 0x0f, 0x80, 0x84, 0x40, 0x94, 0xae, 0x18, 0x00, 0x80, 0x81, 0x40, 0xff, 0x46, 0x28, 0x0b, - 0x80, 0x0c, 0x46, 0x1f, 0x0b, 0x80, 0x0c, 0x46, 0x4a, 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, 0x80, - 0x0c, 0x46, 0x1d, 0x0b, 0x80, 0x0c, 0x46, 0x24, 0x0b, 0x80, 0x0c, 0x46, 0x50, 0x0b, 0x80, 0x0c, - 0x46, 0x23, 0x0b, 0x80, 0x0c, 0x46, 0x28, 0x0b, 0x80, 0x0c, 0x46, 0x21, 0x0b, 0x80, 0x0c, 0x46, - 0x50, 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, 0x80, 0x0c, 0x46, 0x2d, 0x0b, 0x80, 0x0c, 0x46, 0x2f, - 0x0b, 0x80, 0x0c, 0x46, 0x59, 0x0b, 0x80, 0x0c, 0x46, 0x27, 0x0b, 0x80, 0x0c, 0xfd, 0x46, 0x1f, - 0x0b, 0x80, 0x0c, 0x46, 0x22, 0x0b, 0x80, 0x0c, 0x46, 0x64, 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, - 0x80, 0x0c, 0x46, 0x25, 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, 0x80, 0x0c, 0x46, 0x54, 0x0b, 0x80, - 0x0c, 0x46, 0x30, 0x0b, 0x80, 0x0c, 0x46, 0x2d, 0x0b, 0x80, 0x0c, 0x46, 0x21, 0x0b, 0x80, 0x0c, - 0x46, 0x5e, 0x0b, 0x80, 0x0c, 0x46, 0x2e, 0x0b, 0x80, 0x0c, 0x46, 0x27, 0x0b, 0x80, 0x0c, 0x46, - 0x20, 0x0b, 0x80, 0x0c, 0x46, 0x5b, 0x0b, 0x80, 0x0c, 0x46, 0x34, 0x0b, 0x80, 0x0c, 0xfd, 0x46, - 0x29, 0x0b, 0x80, 0x0c, 0x46, 0x1b, 0x0b, 0x80, 0x0c, 0x46, 0x56, 0x0b, 0x80, 0x0c, 0x46, 0x1a, - 0x0b, 0x80, 0x0c, 0x46, 0x2f, 0x0b, 0x80, 0x0c, 0x46, 0x2b, 0x0b, 0x80, 0x0c, 0x46, 0x54, 0x0b, - 0x80, 0x0c, 0x46, 0x22, 0x0b, 0x80, 0x0c, 0x46, 0x32, 0x0b, 0x80, 0x0c, 0x46, 0x24, 0x0b, 0x80, - 0x0c, 0x46, 0x56, 0x0b, 0x80, 0x0c, 0x46, 0x2f, 0x0b, 0x80, 0x0c, 0x46, 0x2b, 0x0b, 0x80, 0x0c, - 0x46, 0x22, 0x0b, 0x80, 0x0c, 0x46, 0x5b, 0x0b, 0x80, 0x0c, 0x46, 0x21, 0x0b, 0x80, 0x0c, 0xfd, - 0x46, 0x37, 0x0b, 0x80, 0x0c, 0x46, 0x37, 0x0b, 0x80, 0x0c, 0x46, 0x5e, 0x0b, 0x80, 0x0c, 0x46, - 0x12, 0x0b, 0x80, 0x0c, 0x46, 0x35, 0x0b, 0x80, 0x0c, 0x46, 0x24, 0x0b, 0x80, 0x0c, 0x46, 0x48, - 0x0b, 0x80, 0x0c, 0x46, 0x26, 0x0b, 0x80, 0x0c, 0x46, 0x2b, 0x0b, 0x80, 0x0c, 0x46, 0x1d, 0x0b, - 0x80, 0x0c, 0x46, 0x50, 0x0b, 0x80, 0x0c, 0x46, 0x1b, 0x0b, 0x80, 0x0c, 0x46, 0x37, 0x0b, 0x80, - 0x0c, 0x46, 0x2e, 0x0b, 0x80, 0x0c, 0x46, 0x59, 0x0b, 0x80, 0x0c, 0x46, 0x19, 0x0b, 0x80, 0x0c, - 0xfd, 0xff, 0x00, 0x00, -}; - -const u8 sound_bank_data[] ATTRIBUTE_ALIGN(32) = -{ - 0x53, 0x42, 0x4e, 0x4b, 0xff, 0xfe, 0x02, 0x00, 0x84, 0x04, 0x00, 0x00, 0x10, 0x00, 0x01, 0x00, - 0x44, 0x41, 0x54, 0x41, 0x74, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x11, 0x64, 0x04, 0x00, - 0x01, 0x3c, 0x02, 0x00, 0x01, 0x46, 0x02, 0x00, 0x11, 0x04, 0x04, 0x00, 0x11, 0x24, 0x04, 0x00, - 0x01, 0x50, 0x02, 0x00, 0x01, 0x5a, 0x02, 0x00, 0x11, 0x44, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xd8, 0x03, 0x00, 0x01, 0x64, 0x02, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6e, 0x02, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x47, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, 0x09, 0x00, 0x00, 0x00, 0x47, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, - 0x10, 0x00, 0x00, 0x00, 0x4b, 0x7f, 0x7f, 0x7f, 0x64, 0x40, 0x0f, 0x00, 0x00, 0x00, 0x58, 0x7f, - 0x7f, 0x7f, 0x64, 0x40, 0x03, 0x00, 0x00, 0x00, 0x42, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x24, 0x41, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x24, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x7f, - 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x24, 0x7f, 0x7f, 0x7f, 0x78, 0x40, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, - 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, - 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x78, 0x40, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x30, 0x7f, 0x7f, 0x7f, 0x78, 0x22, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x7f, - 0x7f, 0x7f, 0x78, 0x22, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x7f, 0x7f, 0x7f, 0x78, 0x22, - 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x34, 0x7f, 0x7f, 0x7f, 0x78, 0x5e, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x34, 0x7f, 0x7f, 0x7f, 0x78, 0x5e, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x34, 0x7f, - 0x7f, 0x7f, 0x78, 0x5e, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, - 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, - 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, - 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, - 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, - 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, - 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, - 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x78, 0x36, 0x01, 0x00, 0x11, 0x00, - 0x00, 0x00, 0x41, 0x7f, 0x7f, 0x7f, 0x78, 0x37, 0x2b, 0x2d, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2a, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, 0x01, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x2c, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2e, 0x7f, - 0x7f, 0x7f, 0x7b, 0x40, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, - 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x7d, 0x40, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x43, 0x7f, - 0x7f, 0x7f, 0x7d, 0x40, 0x3f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0a, 0x00, - 0x00, 0x00, 0x37, 0x7f, 0x7f, 0x7f, 0x7d, 0x40, 0x01, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x43, 0x7f, - 0x7f, 0x7f, 0x7d, 0x40, 0x53, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x4f, 0x7f, 0x7f, 0x7f, 0x64, 0x40, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x5b, 0x7f, - 0x7f, 0x7f, 0x64, 0x40, 0x3b, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x28, 0x7f, 0x7f, 0x7f, 0x7b, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, - 0x7f, 0x7f, 0x7b, 0x40, -}; - -const u8 sound_wave_data[] ATTRIBUTE_ALIGN(32) = -{ - 0x53, 0x57, 0x41, 0x52, 0xff, 0xfe, 0x01, 0x00, 0x64, 0x7f, 0x02, 0x00, 0x10, 0x00, 0x01, 0x00, - 0x44, 0x41, 0x54, 0x41, 0x54, 0x7f, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, - 0x30, 0x0f, 0x00, 0x00, 0x0c, 0x23, 0x00, 0x00, 0xc0, 0x2e, 0x00, 0x00, 0x78, 0x38, 0x00, 0x00, - 0x08, 0x8a, 0x00, 0x00, 0x18, 0xac, 0x00, 0x00, 0xf8, 0xc4, 0x00, 0x00, 0x48, 0x04, 0x01, 0x00, - 0xd8, 0x23, 0x01, 0x00, 0x34, 0x5c, 0x01, 0x00, 0xc8, 0x92, 0x01, 0x00, 0xe4, 0xad, 0x01, 0x00, - 0x84, 0xd7, 0x01, 0x00, 0x40, 0xf7, 0x01, 0x00, 0x90, 0x1a, 0x02, 0x00, 0xe0, 0x3b, 0x02, 0x00, - 0xb4, 0x5e, 0x02, 0x00, 0x02, 0x01, 0x52, 0x7d, 0x0a, 0x02, 0x47, 0x03, 0x61, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x02, 0x00, 0xcf, 0x89, 0xa8, 0x80, 0x9b, 0x09, 0x98, 0x19, 0xaa, 0x99, 0xaa, 0x99, - 0xaa, 0x90, 0x90, 0x0b, 0xbc, 0x00, 0x19, 0xc9, 0x98, 0xba, 0xa9, 0xbb, 0xa1, 0x8c, 0x2c, 0xb3, - 0x0b, 0xac, 0xac, 0xb2, 0x0b, 0x19, 0xb9, 0xb9, 0x8c, 0xc9, 0xbb, 0xb9, 0x09, 0xba, 0xd9, 0xa9, - 0xab, 0xdb, 0xc9, 0x9a, 0x9a, 0xb9, 0xbb, 0x9d, 0xc9, 0x99, 0xdc, 0x9b, 0xeb, 0xbb, 0x9d, 0xba, - 0xab, 0xa9, 0xbe, 0xcb, 0xdb, 0xcb, 0xba, 0xaa, 0xa8, 0xcf, 0xaa, 0xba, 0xdb, 0xcc, 0xaa, 0x99, - 0xcb, 0xbd, 0xcb, 0xcb, 0xba, 0xdb, 0xbd, 0xaa, 0x9a, 0xcc, 0xcc, 0xba, 0xcc, 0xbb, 0xaa, 0xbb, - 0xbc, 0xcd, 0xcb, 0xba, 0xbd, 0xca, 0xab, 0xab, 0xbc, 0xbc, 0xcb, 0xdb, 0xbc, 0xba, 0xbb, 0xbc, - 0xbd, 0xbc, 0xbb, 0x9c, 0xdb, 0xcb, 0xbb, 0xaa, 0xbb, 0xba, 0xcc, 0xbb, 0xbc, 0xbb, 0xaa, 0xbb, - 0xbc, 0xfa, 0x8b, 0xca, 0xad, 0x82, 0xbf, 0x1b, 0x15, 0x89, 0xb9, 0xfa, 0x6a, 0xa3, 0x8f, 0x17, - 0x89, 0x00, 0x03, 0x2a, 0x96, 0x9f, 0x02, 0x19, 0x26, 0xa8, 0x0b, 0x92, 0x01, 0x9f, 0x23, 0x29, - 0xe9, 0x20, 0x80, 0x23, 0x88, 0x14, 0xbf, 0x11, 0x11, 0x09, 0x04, 0x9a, 0x81, 0x68, 0xb1, 0x58, - 0xa1, 0x1b, 0x92, 0xaa, 0x32, 0xc8, 0x62, 0x24, 0xc9, 0x19, 0x24, 0xb0, 0x9a, 0x41, 0x22, 0x12, - 0xcd, 0x28, 0x18, 0x32, 0x91, 0x0a, 0x02, 0xdd, 0x09, 0x42, 0x24, 0xc8, 0xbd, 0x30, 0x25, 0xa0, - 0xaa, 0x09, 0x42, 0xa1, 0x8c, 0x12, 0x89, 0x98, 0x10, 0x90, 0x23, 0xed, 0x9a, 0x52, 0x02, 0xc9, - 0x19, 0xd8, 0xab, 0x61, 0x14, 0xa9, 0xad, 0x29, 0x01, 0x21, 0x98, 0xdc, 0x2a, 0x83, 0xa9, 0x9a, - 0x54, 0xb8, 0xbc, 0x48, 0x14, 0x01, 0xba, 0xdb, 0x78, 0x83, 0xbc, 0x19, 0x15, 0x80, 0xbb, 0x58, - 0x92, 0xba, 0x29, 0x91, 0x21, 0x01, 0x64, 0xa1, 0x09, 0xb9, 0xbe, 0x40, 0x16, 0x91, 0xaa, 0x20, - 0x12, 0xba, 0x0a, 0x23, 0xd1, 0xad, 0x21, 0x54, 0x92, 0xbc, 0x8a, 0x08, 0x30, 0x93, 0x28, 0x83, - 0xda, 0x0a, 0xca, 0x9c, 0x73, 0x14, 0x98, 0x8a, 0x98, 0xda, 0xac, 0x43, 0x22, 0x90, 0xa9, 0x8f, - 0x88, 0x18, 0x88, 0xc9, 0x8e, 0x32, 0x31, 0x13, 0x99, 0xa9, 0xff, 0x29, 0x12, 0x18, 0x20, 0xc0, - 0x8c, 0x00, 0x31, 0xc9, 0x99, 0x46, 0xb8, 0x49, 0x13, 0xab, 0x71, 0xc1, 0x1b, 0x24, 0x91, 0xcb, - 0x1a, 0x27, 0xb8, 0x1b, 0x25, 0x98, 0x09, 0x11, 0xa8, 0x48, 0x92, 0xce, 0x0a, 0x44, 0x91, 0x0a, - 0x11, 0xb8, 0x0c, 0x21, 0x02, 0x88, 0x22, 0xd1, 0x9f, 0x52, 0x91, 0xaa, 0x18, 0xb0, 0x8e, 0x52, - 0x02, 0xa9, 0x9c, 0x18, 0x80, 0x32, 0xa2, 0xbd, 0x41, 0xb1, 0xaf, 0x19, 0x43, 0x82, 0xbb, 0x49, - 0x14, 0xa9, 0xcd, 0x1b, 0x16, 0x18, 0xd9, 0x09, 0x01, 0x21, 0xa2, 0x8b, 0x91, 0xbf, 0x29, 0x46, - 0x01, 0xb9, 0xac, 0x10, 0x33, 0x88, 0x89, 0x21, 0xd0, 0xbc, 0x0a, 0x57, 0x01, 0xab, 0x80, 0x3a, - 0x06, 0x9a, 0x99, 0x88, 0x31, 0x04, 0xdc, 0x39, 0x12, 0x08, 0xca, 0x29, 0x15, 0xca, 0x8b, 0x32, - 0x33, 0xb2, 0x9f, 0x51, 0x91, 0x0a, 0xa0, 0x08, 0x99, 0x18, 0x55, 0x81, 0x09, 0xd2, 0x2c, 0xa0, - 0x46, 0x98, 0xaa, 0x30, 0x12, 0xb9, 0x08, 0x08, 0x02, 0xcb, 0x48, 0x34, 0x01, 0xb0, 0xaf, 0x48, - 0x04, 0x9a, 0x22, 0x98, 0x9b, 0x24, 0xda, 0x9a, 0x28, 0x34, 0x11, 0x40, 0x96, 0xcf, 0x10, 0x13, - 0xa9, 0x30, 0x03, 0xbe, 0x18, 0x31, 0xb3, 0xaf, 0x00, 0x18, 0x32, 0x35, 0xdb, 0x28, 0x23, 0xfc, - 0x19, 0x31, 0xb1, 0x8d, 0x21, 0x01, 0xba, 0x38, 0xb3, 0xaf, 0x53, 0x92, 0xba, 0x50, 0x04, 0xb9, - 0x28, 0x82, 0xbe, 0x00, 0x43, 0x91, 0x88, 0x9b, 0x89, 0x12, 0x32, 0xc8, 0x72, 0x05, 0xcd, 0x1a, - 0x32, 0xa0, 0xbb, 0x18, 0x31, 0x12, 0x22, 0xf9, 0x1a, 0x14, 0xdd, 0x1a, 0x34, 0x82, 0xad, 0x09, - 0x21, 0xa1, 0xbe, 0x40, 0x82, 0x10, 0xa0, 0xac, 0x11, 0x80, 0x09, 0x44, 0x83, 0xfb, 0x9d, 0x38, - 0x05, 0xa8, 0xaa, 0x20, 0x14, 0xa8, 0x0b, 0x34, 0xb8, 0xbb, 0xac, 0x60, 0x25, 0x80, 0xda, 0x1a, - 0x33, 0x91, 0xbd, 0x19, 0x34, 0x81, 0xdb, 0x19, 0x22, 0xa0, 0x0b, 0x31, 0xa1, 0xaf, 0x12, 0x11, - 0x21, 0x02, 0xcd, 0x18, 0x10, 0x14, 0xdc, 0x1a, 0x26, 0xa9, 0x08, 0x29, 0x83, 0xd9, 0x0c, 0x53, - 0x81, 0xba, 0x99, 0x18, 0x25, 0x90, 0x09, 0xc9, 0x0a, 0x73, 0x14, 0xa0, 0xbe, 0x0a, 0x12, 0x30, - 0x27, 0xa9, 0x09, 0x88, 0xa1, 0xab, 0x75, 0x92, 0xac, 0x30, 0x24, 0xa9, 0xab, 0x99, 0x18, 0x35, - 0x90, 0x19, 0x21, 0x83, 0xfd, 0x48, 0x14, 0xdc, 0x38, 0x32, 0xa8, 0x0b, 0xa0, 0xab, 0x64, 0x02, - 0x98, 0xb9, 0x20, 0xb3, 0x8f, 0x34, 0xb0, 0x9c, 0x22, 0x88, 0x18, 0x12, 0xdb, 0x9a, 0x60, 0x14, - 0xaa, 0x31, 0xe2, 0x9d, 0x53, 0xa1, 0x8b, 0x13, 0x89, 0x01, 0x9a, 0x22, 0xdd, 0x38, 0x06, 0xa8, - 0x18, 0x81, 0xcc, 0x28, 0x02, 0x80, 0x08, 0x12, 0xd8, 0x1a, 0x14, 0xca, 0x28, 0x83, 0xba, 0x61, - 0x13, 0x98, 0xdb, 0x9a, 0x10, 0x81, 0xba, 0x49, 0x15, 0x90, 0xdd, 0x8b, 0x21, 0x01, 0x20, 0x25, - 0xd9, 0xab, 0xda, 0x8c, 0x63, 0x12, 0x01, 0xbb, 0x29, 0x13, 0xed, 0x8a, 0x32, 0x82, 0xdb, 0x18, - 0x44, 0xa0, 0xac, 0xa9, 0x08, 0x29, 0x23, 0x22, 0x83, 0x20, 0xe1, 0xbf, 0x38, 0x12, 0x90, 0xaa, - 0x52, 0xd9, 0x8b, 0x42, 0x13, 0xa8, 0xbd, 0x8b, 0x44, 0x98, 0x98, 0x38, 0x84, 0xbd, 0x50, 0x03, - 0x88, 0xab, 0x12, 0xc9, 0x6a, 0x04, 0xab, 0x0a, 0x26, 0xa9, 0x18, 0x82, 0xbf, 0x19, 0x43, 0x16, - 0xcb, 0x19, 0x81, 0x19, 0x16, 0xb9, 0x1a, 0x11, 0xa9, 0x11, 0x72, 0x93, 0xcf, 0x19, 0x34, 0xa8, - 0x28, 0xb0, 0x8c, 0x12, 0xba, 0x61, 0x81, 0x09, 0xa1, 0x3c, 0x37, 0xdc, 0x09, 0x21, 0x00, 0x20, - 0xb2, 0x8d, 0x22, 0x80, 0x9b, 0x89, 0x42, 0xc9, 0x69, 0x34, 0xb8, 0xac, 0x99, 0x21, 0x01, 0x32, - 0x04, 0xcd, 0x28, 0x93, 0x39, 0x34, 0xf0, 0x8d, 0x31, 0x32, 0xa8, 0xbc, 0x09, 0x32, 0x32, 0x81, - 0xab, 0x00, 0x91, 0xaf, 0x31, 0x22, 0xd1, 0xbd, 0x49, 0x27, 0xb0, 0xaa, 0x10, 0x88, 0x20, 0x88, - 0x47, 0xa0, 0x9c, 0x30, 0x01, 0x20, 0xf9, 0x8e, 0x32, 0x01, 0x99, 0xa9, 0x00, 0x02, 0x8a, 0x00, - 0x10, 0x52, 0xf0, 0xae, 0x41, 0x13, 0xbb, 0x0b, 0x43, 0x91, 0xaa, 0x10, 0x92, 0xbc, 0x51, 0x82, - 0xac, 0x31, 0xda, 0x9a, 0x73, 0x84, 0xac, 0x0a, 0x11, 0x00, 0x98, 0x20, 0x90, 0x99, 0xaa, 0x8c, - 0x57, 0xb0, 0xbb, 0x10, 0x43, 0x81, 0x09, 0x22, 0xfb, 0x1a, 0x82, 0xbe, 0x58, 0x02, 0xa9, 0x20, - 0xb0, 0x8b, 0x81, 0x70, 0xa3, 0x9f, 0x22, 0xc9, 0x39, 0x15, 0xaa, 0x10, 0xb1, 0x9c, 0x31, 0x23, - 0xb8, 0xef, 0x30, 0x05, 0xaa, 0x18, 0x90, 0x19, 0x13, 0xbc, 0x10, 0x01, 0xeb, 0x1a, 0x47, 0x91, - 0xac, 0x18, 0x81, 0x21, 0x82, 0xab, 0x01, 0x8a, 0x23, 0x11, 0x62, 0xb4, 0xff, 0x29, 0x24, 0xa8, - 0x8a, 0x81, 0x18, 0x08, 0x81, 0x09, 0x01, 0x21, 0x11, 0xcb, 0x80, 0xdf, 0x08, 0x63, 0x24, 0xb9, - 0xac, 0x30, 0x91, 0x8d, 0x33, 0xa8, 0x9b, 0x10, 0x76, 0x81, 0xbb, 0x9a, 0xba, 0x73, 0x16, 0xa8, - 0x09, 0x81, 0x98, 0x88, 0x18, 0x14, 0xda, 0x2a, 0x35, 0x80, 0xb0, 0xbf, 0x38, 0x15, 0x98, 0x0a, - 0x11, 0x01, 0xca, 0x29, 0x34, 0xba, 0x38, 0xa1, 0x59, 0x37, 0xd8, 0x9d, 0x21, 0x12, 0xa0, 0x0a, - 0x33, 0xd8, 0x8c, 0x22, 0xa0, 0x1a, 0xa1, 0x8b, 0x56, 0x02, 0xb9, 0x9c, 0x38, 0x82, 0x99, 0x48, - 0x06, 0xaa, 0x18, 0x88, 0x41, 0xa3, 0xaf, 0x18, 0x21, 0x11, 0xc9, 0x9c, 0x11, 0x8a, 0x52, 0xa0, - 0x9b, 0x43, 0xc9, 0x29, 0x15, 0xcb, 0x8a, 0x00, 0x52, 0x83, 0x19, 0xa0, 0xdf, 0x19, 0x12, 0x98, - 0x88, 0x80, 0x88, 0x51, 0x83, 0xcf, 0x29, 0x01, 0xa9, 0x09, 0x13, 0xab, 0x32, 0xc0, 0x49, 0x03, - 0xfb, 0xaf, 0x20, 0x24, 0xa1, 0xbc, 0x30, 0x04, 0x99, 0x08, 0xa1, 0x9d, 0x11, 0xaa, 0x41, 0x34, - 0xd8, 0x9e, 0x51, 0x02, 0xcb, 0x8a, 0x10, 0x23, 0xa9, 0x38, 0x03, 0xcf, 0x20, 0x00, 0x31, 0x83, - 0xef, 0x09, 0x22, 0x22, 0xb8, 0xac, 0x32, 0xc0, 0x1a, 0x25, 0xc0, 0x9c, 0x18, 0x32, 0x92, 0x9a, - 0x90, 0xad, 0x63, 0x92, 0xac, 0x21, 0x12, 0x88, 0x10, 0x11, 0xf8, 0xae, 0x40, 0x34, 0x90, 0xd9, - 0xac, 0x40, 0x14, 0xaa, 0x18, 0x02, 0xa9, 0x19, 0x25, 0xa2, 0xce, 0x89, 0x21, 0x53, 0x14, 0xda, - 0x8b, 0x22, 0x91, 0xab, 0x38, 0x35, 0xc8, 0x0b, 0x26, 0xb8, 0x9a, 0xaa, 0x38, 0x46, 0x91, 0x9a, - 0x09, 0x43, 0xb1, 0x9c, 0x42, 0x90, 0xaa, 0x30, 0x43, 0x14, 0xfc, 0x9b, 0x33, 0x23, 0xb8, 0x9d, - 0x21, 0x91, 0x08, 0x20, 0x01, 0x41, 0xa0, 0x9b, 0x65, 0x02, 0xda, 0x9d, 0x21, 0x23, 0x80, 0x18, - 0xa0, 0x9b, 0x11, 0xa9, 0x42, 0xfb, 0x8a, 0x50, 0x15, 0x88, 0xa9, 0x9b, 0x10, 0x81, 0x51, 0x14, - 0xa9, 0x9a, 0x00, 0x51, 0x05, 0xda, 0x9a, 0x30, 0x25, 0xc9, 0x9b, 0x00, 0xb9, 0x10, 0x11, 0x36, - 0xc1, 0xac, 0x30, 0x83, 0x98, 0xfc, 0x8b, 0x45, 0x92, 0xab, 0x10, 0x00, 0x90, 0xab, 0x40, 0xa3, - 0xbf, 0x89, 0x51, 0x23, 0xa0, 0xbe, 0x08, 0x22, 0xa2, 0xbf, 0x18, 0x25, 0xc9, 0x29, 0x23, 0xd8, - 0x9a, 0x89, 0x42, 0xa1, 0xba, 0x9a, 0x18, 0x57, 0x83, 0xcb, 0x89, 0x99, 0x18, 0x53, 0x02, 0xda, - 0xac, 0x31, 0x34, 0x80, 0xda, 0x9d, 0x32, 0x91, 0x9c, 0x52, 0xa1, 0xbb, 0x29, 0x55, 0x91, 0xad, - 0x18, 0x01, 0x20, 0x81, 0xbd, 0x39, 0x36, 0xa8, 0xab, 0x30, 0xb1, 0xbf, 0x61, 0x23, 0xa9, 0xbc, - 0x0a, 0x52, 0x12, 0xb9, 0x9a, 0x18, 0x34, 0xb8, 0x18, 0x11, 0xda, 0x9c, 0x62, 0x44, 0x91, 0xbd, - 0x0a, 0x21, 0x02, 0xb9, 0x30, 0x25, 0xa8, 0xab, 0x21, 0xc0, 0xcc, 0x19, 0x73, 0x33, 0xa1, 0xbe, - 0x18, 0x11, 0x00, 0xaa, 0x09, 0x34, 0x13, 0x89, 0x00, 0xd8, 0xcc, 0x8a, 0x32, 0x34, 0x82, 0xcd, - 0x19, 0x01, 0x42, 0x15, 0xb9, 0x8a, 0x01, 0x40, 0x35, 0xc8, 0xac, 0x08, 0x21, 0x25, 0xa0, 0xcb, - 0x99, 0x89, 0x31, 0x37, 0x83, 0xaa, 0x00, 0x44, 0x23, 0xc0, 0xae, 0x09, 0x22, 0x00, 0x31, 0x22, - 0x02, 0xdd, 0x0a, 0x45, 0xb0, 0xad, 0x31, 0x02, 0x11, 0xa8, 0xbd, 0x29, 0x23, 0xa0, 0x8a, 0x71, - 0x04, 0xbc, 0x50, 0x23, 0xd9, 0x8b, 0x31, 0x14, 0xa8, 0x9c, 0xa8, 0x8a, 0x34, 0xc9, 0x1a, 0x15, - 0xb8, 0x0b, 0x25, 0x01, 0xc9, 0xad, 0x20, 0x11, 0x11, 0xf9, 0x0b, 0x44, 0x81, 0xab, 0x10, 0xd8, - 0xac, 0x48, 0x27, 0xb8, 0x9c, 0x11, 0x11, 0x08, 0xa0, 0xbc, 0x0a, 0x11, 0x13, 0x21, 0x36, 0xf9, - 0x9e, 0x30, 0x12, 0xb9, 0xbb, 0x28, 0x43, 0x81, 0x9a, 0x08, 0x01, 0xda, 0x0b, 0x52, 0x04, 0xec, - 0x0b, 0x44, 0x02, 0xb9, 0xad, 0x20, 0x34, 0xb0, 0xac, 0x09, 0x00, 0x01, 0x42, 0x14, 0xd8, 0xad, - 0x1a, 0x53, 0x01, 0xa9, 0x9a, 0x18, 0x34, 0xa0, 0x0c, 0x11, 0xca, 0x1a, 0x53, 0x14, 0xa0, 0xbf, - 0x0a, 0x32, 0x23, 0xa9, 0xac, 0x30, 0x23, 0xd9, 0xac, 0x8a, 0x42, 0x53, 0x24, 0x88, 0xa9, 0xdb, - 0xab, 0x41, 0x14, 0x80, 0x01, 0xa9, 0x48, 0x03, 0xda, 0xbc, 0xaa, 0x68, 0x36, 0x81, 0x99, 0xb9, - 0x0b, 0x43, 0xa1, 0x0a, 0x03, 0x9b, 0x41, 0x24, 0x46, 0xd0, 0x9e, 0x11, 0x01, 0x00, 0x91, 0xdb, - 0x09, 0x10, 0x34, 0xb0, 0x58, 0x04, 0xbd, 0x30, 0x04, 0xaa, 0x28, 0x12, 0x80, 0x0a, 0x43, 0xf8, - 0x9d, 0x20, 0x90, 0x18, 0x03, 0x18, 0x55, 0x02, 0x98, 0xdb, 0x09, 0x11, 0x21, 0x34, 0xfa, 0x1a, - 0x33, 0xc9, 0x19, 0x24, 0x98, 0xab, 0x62, 0x82, 0xba, 0x19, 0x02, 0xba, 0x2a, 0x15, 0xa8, 0x9a, - 0x00, 0x41, 0x46, 0x92, 0xcc, 0x29, 0x37, 0x92, 0xdb, 0x8b, 0x31, 0x12, 0xca, 0x9a, 0x00, 0xa8, - 0x0b, 0x65, 0x24, 0xc8, 0xbc, 0x18, 0x43, 0x82, 0xdb, 0x8b, 0x41, 0x11, 0x98, 0x08, 0x11, 0xfa, - 0x9d, 0x31, 0x14, 0xb8, 0xab, 0x28, 0x35, 0xa1, 0xbd, 0x8b, 0x31, 0x01, 0x89, 0x10, 0xa8, 0x9c, - 0x41, 0x24, 0x91, 0xff, 0x8a, 0x20, 0x24, 0xa0, 0xbb, 0x8b, 0x42, 0x03, 0x09, 0x91, 0xcd, 0xab, - 0x10, 0x63, 0x25, 0xc8, 0x9b, 0x18, 0x21, 0x12, 0xfb, 0x8b, 0x20, 0x21, 0x24, 0xda, 0x8a, 0x88, - 0x19, 0x33, 0xca, 0x30, 0xc2, 0x0c, 0x13, 0xca, 0x08, 0xc9, 0x48, 0x36, 0x01, 0x83, 0xff, 0x8a, - 0x32, 0x01, 0x08, 0x80, 0x99, 0xa9, 0x20, 0xd1, 0xad, 0x30, 0x92, 0x3b, 0x77, 0x81, 0xab, 0x9b, - 0x21, 0x03, 0x18, 0x22, 0xb8, 0x8c, 0x32, 0x03, 0xb9, 0xdf, 0x8a, 0x42, 0x14, 0x88, 0x10, 0xb9, - 0x9d, 0x30, 0x13, 0x90, 0x88, 0xc9, 0x9c, 0x72, 0x25, 0xb8, 0x8d, 0x62, 0x92, 0xaa, 0x9a, 0x00, - 0x01, 0x11, 0x90, 0x8a, 0x18, 0x65, 0xa1, 0x8a, 0x02, 0xdc, 0x38, 0x36, 0x02, 0x00, 0xa9, 0xab, - 0xeb, 0x09, 0x23, 0xa0, 0xaa, 0x0c, 0x67, 0x03, 0xb9, 0x8b, 0x32, 0x24, 0xb0, 0xac, 0x20, 0x33, - 0x91, 0xcd, 0x41, 0x84, 0xcb, 0x38, 0x25, 0x81, 0xba, 0x9c, 0x50, 0x23, 0xa0, 0xbd, 0x09, 0x11, - 0x00, 0x10, 0x24, 0xd9, 0xac, 0x40, 0x35, 0x81, 0x99, 0xab, 0x38, 0x15, 0xbb, 0x8a, 0xc9, 0x8b, - 0x22, 0x53, 0x13, 0xc9, 0x9b, 0x89, 0x72, 0x83, 0xbf, 0x1a, 0x33, 0x03, 0xa8, 0xbe, 0x18, 0x01, - 0x20, 0xa1, 0xbb, 0xaa, 0x9a, 0x74, 0x17, 0xa8, 0xba, 0xdb, 0x18, 0x24, 0x82, 0xe9, 0xaa, 0x21, - 0x12, 0x33, 0xd2, 0xbe, 0x08, 0x12, 0xa9, 0x09, 0x01, 0xb8, 0x09, 0x36, 0xa0, 0xbc, 0xbb, 0xbb, - 0x58, 0x37, 0xa2, 0xae, 0x28, 0x33, 0xa9, 0x9b, 0xba, 0x18, 0x33, 0x53, 0x24, 0xfb, 0xbd, 0x19, - 0x43, 0x12, 0xa0, 0x99, 0xca, 0x9c, 0x52, 0x82, 0xac, 0x19, 0x33, 0x32, 0x04, 0xda, 0xdd, 0x0b, - 0x63, 0x82, 0x88, 0x10, 0x98, 0xaa, 0x8a, 0x20, 0xa1, 0xaf, 0x10, 0x31, 0x55, 0x91, 0xbc, 0x9a, - 0x20, 0x43, 0x91, 0x89, 0x32, 0x11, 0x81, 0xce, 0x18, 0xa0, 0x3a, 0x37, 0xc8, 0x9b, 0x22, 0x11, - 0x21, 0x91, 0x89, 0x00, 0xfb, 0xcc, 0x58, 0x26, 0xc8, 0xab, 0x51, 0x34, 0x81, 0xbc, 0x99, 0x00, - 0x22, 0xb0, 0x0c, 0x44, 0x91, 0xbb, 0x08, 0x02, 0xc9, 0xac, 0x60, 0x35, 0x11, 0xa9, 0x0b, 0x25, - 0xa1, 0xbb, 0x08, 0xca, 0x1a, 0x43, 0x21, 0x83, 0xbe, 0x89, 0x73, 0x25, 0x90, 0xcb, 0x09, 0x33, - 0x12, 0x00, 0xba, 0xa9, 0x9a, 0x50, 0x55, 0x13, 0xdb, 0x0a, 0x53, 0x02, 0xa9, 0x8a, 0xb9, 0x39, - 0x17, 0xa8, 0xbb, 0x10, 0x81, 0x08, 0x44, 0x02, 0xa8, 0x71, 0x25, 0x98, 0x8a, 0xdb, 0xbb, 0x58, - 0x24, 0xa8, 0xaa, 0x89, 0x38, 0x45, 0x91, 0xcc, 0x8a, 0x38, 0x33, 0x88, 0x18, 0xd8, 0xbc, 0x88, - 0x41, 0x33, 0xd9, 0xae, 0x20, 0x42, 0x82, 0xac, 0x19, 0x92, 0x9b, 0x41, 0xd8, 0xbc, 0x08, 0x31, - 0x14, 0x00, 0x81, 0xfd, 0x0a, 0x33, 0xa8, 0xab, 0x9a, 0x28, 0x33, 0x44, 0x91, 0xef, 0x9a, 0x18, - 0x42, 0x03, 0xda, 0x8a, 0x00, 0x10, 0x10, 0xa8, 0x89, 0x10, 0x24, 0xd9, 0x38, 0xf2, 0xbe, 0x10, - 0x43, 0x13, 0x98, 0xbd, 0x99, 0x08, 0x32, 0xa8, 0x0c, 0x23, 0x88, 0x64, 0xa2, 0xce, 0x8a, 0x21, - 0x12, 0x98, 0x20, 0x26, 0x80, 0xb9, 0xbd, 0x29, 0x84, 0xca, 0x2a, 0x45, 0x82, 0xcc, 0xab, 0x41, - 0x15, 0xa8, 0xbb, 0x48, 0x14, 0x90, 0x08, 0x10, 0xb8, 0x8c, 0x31, 0x33, 0xb1, 0xbf, 0x8a, 0x42, - 0x15, 0x80, 0x88, 0x20, 0xc8, 0x9b, 0x88, 0xbc, 0x28, 0x23, 0x74, 0x27, 0xa0, 0xad, 0x18, 0x22, - 0x01, 0x9a, 0x09, 0x01, 0x31, 0x26, 0xc9, 0xbd, 0x8a, 0x99, 0x60, 0x25, 0x90, 0x9b, 0x20, 0x54, - 0x02, 0x98, 0xa9, 0xbc, 0x38, 0x24, 0xa8, 0x9b, 0x08, 0x20, 0x12, 0x32, 0x85, 0xcc, 0x51, 0x13, - 0x31, 0x14, 0xec, 0x89, 0x10, 0x33, 0x82, 0xcc, 0x0a, 0x55, 0x23, 0xc9, 0x9b, 0x31, 0x11, 0x20, - 0x23, 0xc0, 0xbf, 0x9b, 0x21, 0x01, 0x21, 0xc0, 0x8d, 0x72, 0x23, 0x00, 0xaa, 0x9a, 0x89, 0x20, - 0x02, 0x88, 0xa9, 0xce, 0x29, 0x27, 0xb9, 0x8a, 0x88, 0x08, 0x32, 0x13, 0xda, 0xbc, 0x29, 0x25, - 0x88, 0x81, 0xfd, 0x9c, 0x21, 0x14, 0x81, 0xaa, 0x9a, 0x41, 0x23, 0xc0, 0xbd, 0x9a, 0xa9, 0x1a, - 0x57, 0x01, 0xa9, 0xab, 0x89, 0x21, 0x02, 0xa9, 0xcb, 0x0a, 0x53, 0x23, 0xd9, 0xcf, 0x8a, 0x41, - 0x23, 0xa8, 0xbc, 0x9b, 0x31, 0xa1, 0x9d, 0x50, 0x33, 0xc1, 0xbc, 0x38, 0x03, 0xdd, 0x8a, 0x41, - 0x33, 0xa1, 0xbc, 0x09, 0x12, 0xc9, 0xbb, 0x1a, 0x41, 0x54, 0x02, 0x98, 0xdb, 0xbc, 0x0a, 0x31, - 0x36, 0xa0, 0xad, 0x31, 0x14, 0x99, 0x19, 0x90, 0xcb, 0x09, 0x63, 0x83, 0xba, 0xba, 0xad, 0x51, - 0x14, 0xca, 0xab, 0x30, 0x25, 0xa0, 0x09, 0x90, 0x0a, 0x67, 0x01, 0xa9, 0xbb, 0xab, 0x38, 0x37, - 0x22, 0xa8, 0x8b, 0x00, 0x21, 0x16, 0xfa, 0xbb, 0x18, 0x34, 0x33, 0x00, 0xdb, 0xab, 0x30, 0x15, - 0x98, 0x30, 0x01, 0xa9, 0x69, 0x37, 0xa0, 0xbd, 0x89, 0x01, 0x11, 0xb8, 0xaf, 0x30, 0x24, 0x22, - 0x81, 0xaa, 0x29, 0x15, 0x00, 0x08, 0x00, 0xea, 0xac, 0x61, 0x03, 0xbb, 0xab, 0x10, 0x64, 0x33, - 0x01, 0xcb, 0xab, 0x31, 0x14, 0x32, 0x91, 0xbd, 0x29, 0x33, 0x22, 0x91, 0xac, 0x40, 0x47, 0x23, - 0x80, 0x11, 0xd9, 0xbc, 0x0a, 0x22, 0xc8, 0xcc, 0x18, 0x54, 0x22, 0xa0, 0xaa, 0x18, 0x43, 0x13, - 0x98, 0xbb, 0xcb, 0x0a, 0x44, 0x02, 0x98, 0xfb, 0xab, 0x20, 0x24, 0x80, 0x88, 0xfa, 0x8b, 0x63, - 0x24, 0xb8, 0xbf, 0x0a, 0x32, 0x82, 0xba, 0x29, 0x43, 0x14, 0xba, 0x8c, 0x00, 0xdb, 0x8b, 0x31, - 0x26, 0x98, 0xbb, 0xbc, 0x2a, 0x36, 0xb8, 0x9b, 0x32, 0x93, 0xbd, 0x8a, 0x98, 0xba, 0x59, 0x37, - 0xb0, 0xcb, 0xba, 0x8a, 0x20, 0x92, 0xcf, 0x19, 0x35, 0x82, 0xa9, 0xa8, 0xde, 0x8a, 0x22, 0x43, - 0x12, 0xa8, 0xcc, 0x0a, 0x21, 0x90, 0xac, 0x99, 0x20, 0x37, 0x12, 0xca, 0xbb, 0x0a, 0x11, 0xa8, - 0x10, 0xf8, 0x8f, 0x43, 0x02, 0xaa, 0x98, 0xba, 0x51, 0x35, 0x01, 0xda, 0xad, 0x28, 0x43, 0x02, - 0xca, 0x9a, 0x98, 0x8a, 0x21, 0x22, 0xa8, 0xac, 0x62, 0x35, 0x23, 0xc0, 0xcf, 0x8a, 0x42, 0x02, - 0x98, 0x09, 0x20, 0x23, 0x91, 0xbc, 0x9b, 0x08, 0x21, 0x32, 0x15, 0xb0, 0xad, 0x38, 0x13, 0x08, - 0xc0, 0xff, 0x18, 0x34, 0x23, 0x82, 0xa9, 0xaa, 0x89, 0x34, 0xa1, 0xef, 0x8b, 0x20, 0x33, 0x82, - 0xaa, 0x89, 0x32, 0x12, 0x72, 0x36, 0x81, 0xcb, 0x99, 0x20, 0x21, 0xd8, 0xbc, 0x10, 0x44, 0x14, - 0xb9, 0x8b, 0x20, 0x21, 0x42, 0x15, 0xb8, 0x9b, 0x52, 0x15, 0xb9, 0xab, 0x0b, 0x53, 0x23, 0x53, - 0x36, 0x91, 0xad, 0x29, 0x24, 0x81, 0xbd, 0xab, 0x10, 0x43, 0x12, 0xca, 0x0a, 0x43, 0x01, 0x09, - 0x42, 0xa2, 0xbd, 0x28, 0x34, 0x01, 0x98, 0xdc, 0x8a, 0x22, 0x92, 0xdc, 0x09, 0x11, 0x21, 0x35, - 0x82, 0xeb, 0xcb, 0x89, 0x18, 0x81, 0x88, 0x08, 0x52, 0x15, 0xe9, 0x8b, 0x18, 0x10, 0x33, 0xa1, - 0xdd, 0x99, 0x98, 0x88, 0x30, 0x04, 0xfa, 0x8a, 0x41, 0x02, 0xc9, 0xbd, 0x8a, 0x20, 0x35, 0x33, - 0xc8, 0xbd, 0x8b, 0x08, 0x88, 0xaa, 0x30, 0x82, 0x0a, 0x55, 0xb1, 0xef, 0x8a, 0x11, 0x22, 0x02, - 0xca, 0x9a, 0x30, 0x16, 0xc8, 0xbb, 0x8a, 0x18, 0x34, 0x23, 0x81, 0xea, 0xbd, 0x19, 0x44, 0x13, - 0xdb, 0xac, 0x18, 0x32, 0x01, 0xa9, 0xad, 0x38, 0x44, 0x91, 0xbb, 0x08, 0xa9, 0x40, 0x36, 0x11, - 0xa8, 0xcc, 0x99, 0x88, 0xb9, 0x9b, 0x9a, 0x74, 0x22, 0x33, 0x92, 0xde, 0x8b, 0x30, 0x33, 0xb8, - 0xad, 0x10, 0x41, 0x45, 0x90, 0xab, 0x09, 0x98, 0x18, 0x33, 0x24, 0xa2, 0xbe, 0x38, 0x25, 0x91, - 0xdd, 0xab, 0x28, 0x32, 0x44, 0x24, 0xa8, 0x8b, 0x52, 0x14, 0xca, 0x9b, 0x20, 0x01, 0x98, 0xba, - 0xad, 0x09, 0x11, 0x10, 0x76, 0x24, 0xb8, 0x9c, 0x42, 0x23, 0xa0, 0xcc, 0x8b, 0x42, 0x23, 0x90, - 0xbb, 0x9a, 0x00, 0x28, 0x56, 0x12, 0x99, 0x1a, 0x22, 0x43, 0x83, 0xde, 0x9b, 0x20, 0x23, 0x21, - 0x34, 0x01, 0x30, 0x36, 0x23, 0xa0, 0xbc, 0xbc, 0x28, 0x13, 0xa0, 0xce, 0x1a, 0x54, 0x01, 0x90, - 0x98, 0x88, 0x10, 0x10, 0x55, 0x13, 0xb9, 0x28, 0x13, 0xfb, 0x9e, 0x89, 0x80, 0x32, 0x26, 0x91, - 0xbb, 0x9b, 0x20, 0x12, 0x90, 0xec, 0xab, 0x30, 0x04, 0x10, 0xc8, 0xbc, 0x0b, 0x73, 0x34, 0x90, - 0xbc, 0xac, 0x0a, 0x63, 0x91, 0xbb, 0x38, 0x33, 0x80, 0xfb, 0xcb, 0x9a, 0x20, 0x34, 0x12, 0x10, - 0xea, 0xbc, 0x08, 0x23, 0x92, 0xde, 0x9b, 0x41, 0x24, 0x80, 0xeb, 0x9b, 0x08, 0x10, 0x31, 0x82, - 0xca, 0x9b, 0x31, 0x23, 0xb9, 0xcd, 0xab, 0x18, 0x44, 0x80, 0xa9, 0xac, 0x8a, 0x62, 0x34, 0x90, - 0xcd, 0x9b, 0x20, 0x23, 0xb8, 0xbf, 0x28, 0x35, 0x90, 0xbb, 0x9a, 0xcb, 0x0a, 0x57, 0x13, 0xa8, - 0x18, 0xa8, 0x9a, 0x20, 0xc1, 0xcd, 0x9b, 0x00, 0x73, 0x23, 0xa0, 0xcc, 0x0a, 0x43, 0x81, 0xbc, - 0x89, 0x21, 0x42, 0x13, 0x99, 0x28, 0xb0, 0xdf, 0x18, 0x33, 0x82, 0x9a, 0x10, 0x55, 0x14, 0xd9, - 0xad, 0x09, 0x31, 0x02, 0x98, 0x89, 0x98, 0x40, 0x36, 0x13, 0x98, 0xaa, 0x0a, 0x44, 0x13, 0xdb, - 0xcc, 0xaa, 0x18, 0x32, 0x04, 0x80, 0x80, 0x08, 0x72, 0x34, 0x90, 0xbc, 0x39, 0x27, 0x90, 0x88, - 0xa8, 0xaa, 0x08, 0x21, 0x01, 0xa9, 0x71, 0x35, 0x12, 0x24, 0xc8, 0x9c, 0x08, 0x88, 0x11, 0x98, - 0x9b, 0x61, 0x46, 0x23, 0x10, 0x11, 0x08, 0x51, 0x82, 0xdc, 0x9a, 0x18, 0x43, 0x12, 0x88, 0xa0, - 0xcf, 0x8a, 0x42, 0x33, 0x03, 0xba, 0x29, 0x55, 0x02, 0xc9, 0xac, 0x0a, 0x32, 0x23, 0x80, 0xab, - 0x00, 0xc9, 0x19, 0x73, 0x83, 0xeb, 0x9a, 0x21, 0x02, 0xea, 0xcc, 0x89, 0x63, 0x23, 0x91, 0xda, - 0xab, 0x09, 0x22, 0x14, 0xa0, 0xac, 0x89, 0x42, 0x33, 0xe8, 0xbe, 0x0a, 0x11, 0x01, 0x42, 0x03, - 0xec, 0x8a, 0x20, 0x01, 0xba, 0x9a, 0x18, 0x32, 0x33, 0xfa, 0xae, 0x89, 0x80, 0x00, 0x80, 0xd9, - 0x9c, 0x41, 0x02, 0x9a, 0x8a, 0x99, 0x88, 0x00, 0xb9, 0x98, 0xfe, 0xbc, 0x28, 0x47, 0x12, 0xda, - 0x9b, 0x19, 0x32, 0x81, 0xba, 0x8b, 0x42, 0x02, 0xbb, 0xa9, 0xfa, 0xdb, 0x8a, 0x61, 0x33, 0x91, - 0xa9, 0x28, 0x36, 0x91, 0xcc, 0xab, 0x99, 0x40, 0x14, 0xa9, 0x89, 0x80, 0x11, 0x32, 0xb8, 0xff, - 0x9c, 0x40, 0x33, 0x01, 0x89, 0xba, 0xcb, 0x18, 0x44, 0x80, 0x9a, 0x0a, 0x51, 0x45, 0x02, 0xaa, - 0xba, 0xab, 0x41, 0x03, 0xb8, 0xcd, 0x8a, 0x32, 0x23, 0x00, 0x35, 0x12, 0x54, 0x24, 0x91, 0xca, - 0x9b, 0xa9, 0x09, 0x11, 0xc9, 0xae, 0x28, 0x35, 0x13, 0xca, 0x9c, 0x42, 0x35, 0x12, 0x98, 0x20, - 0xa8, 0x9b, 0x01, 0xc0, 0xaf, 0x28, 0x88, 0x73, 0x26, 0x91, 0xba, 0x39, 0x25, 0x02, 0xcb, 0xbb, - 0x9b, 0x72, 0x22, 0x01, 0x10, 0x10, 0x21, 0x45, 0x91, 0x0a, 0x11, 0x00, 0x30, 0x47, 0xb0, 0xbd, - 0x08, 0x11, 0x00, 0x31, 0xb1, 0xaf, 0x61, 0x34, 0x90, 0xbb, 0x89, 0x20, 0x43, 0x13, 0xd9, 0xcb, - 0x89, 0x30, 0x44, 0x02, 0xdb, 0x9a, 0x21, 0x11, 0x90, 0xbc, 0xbc, 0x0a, 0x32, 0x45, 0x13, 0xd8, - 0xbc, 0x09, 0x02, 0xa8, 0xbc, 0x30, 0x36, 0x01, 0xc9, 0xcb, 0x99, 0x90, 0xaa, 0x60, 0x12, 0xc9, - 0xba, 0x1a, 0x34, 0xc0, 0xce, 0x8a, 0x53, 0x03, 0xa8, 0xbc, 0xa9, 0x89, 0x32, 0x81, 0xd9, 0xcd, - 0x9a, 0x89, 0x41, 0x14, 0xca, 0x9b, 0x31, 0x82, 0xb8, 0xce, 0x9a, 0x00, 0x20, 0x32, 0xa2, 0xdd, - 0x9b, 0x20, 0x33, 0xb0, 0xce, 0x09, 0x52, 0x33, 0xa8, 0xdd, 0xcb, 0x18, 0x01, 0x88, 0xa8, 0x9a, - 0x38, 0x67, 0x12, 0x91, 0xcb, 0x9c, 0x18, 0x31, 0x23, 0xc8, 0xab, 0x09, 0x11, 0x00, 0xfc, 0x9b, - 0x18, 0x43, 0x22, 0x11, 0xb0, 0xaf, 0x19, 0x11, 0xb8, 0xab, 0x08, 0x62, 0x45, 0x02, 0xb9, 0x9b, - 0x54, 0x13, 0x80, 0xa8, 0xbc, 0x8a, 0x80, 0xba, 0x8a, 0xec, 0x9b, 0x73, 0x27, 0x12, 0x88, 0x98, - 0x08, 0x42, 0x03, 0xdc, 0x9b, 0x20, 0x11, 0x98, 0xb8, 0xcd, 0x9b, 0x73, 0x24, 0x01, 0x98, 0x09, - 0x21, 0x24, 0x81, 0xbb, 0xcb, 0x9b, 0x30, 0x45, 0x92, 0xa9, 0x18, 0x75, 0x32, 0x81, 0xcb, 0x9a, - 0x31, 0x14, 0x81, 0xca, 0xac, 0x48, 0x36, 0x02, 0x88, 0x89, 0x31, 0x45, 0x34, 0x80, 0xaa, 0x9a, - 0x89, 0x31, 0x33, 0xb9, 0xbf, 0x8b, 0x55, 0x23, 0x90, 0xba, 0x8b, 0x64, 0x02, 0x08, 0x80, 0x00, - 0x99, 0x90, 0xcc, 0x29, 0x12, 0x31, 0x43, 0x15, 0xfb, 0xad, 0x09, 0x41, 0x03, 0xa8, 0x9b, 0x18, - 0x98, 0x08, 0xd8, 0xac, 0xaa, 0x40, 0x57, 0x01, 0xca, 0xab, 0x9b, 0x31, 0x15, 0x90, 0x98, 0x89, - 0x88, 0xaa, 0xbb, 0xbb, 0xce, 0x09, 0x54, 0x12, 0xc8, 0xac, 0x09, 0x41, 0x13, 0xfb, 0xac, 0x89, - 0x10, 0x12, 0xb0, 0xae, 0x89, 0x20, 0x11, 0x80, 0xca, 0xcf, 0x8a, 0x52, 0x12, 0x89, 0xba, 0xac, - 0x19, 0x24, 0xa0, 0xae, 0x0a, 0x20, 0x24, 0x24, 0xa0, 0xab, 0xcb, 0xbb, 0x9a, 0xa8, 0xdb, 0x1a, - 0x46, 0x02, 0x99, 0xaa, 0xa9, 0x48, 0x37, 0xa0, 0x9a, 0x10, 0x14, 0x98, 0x08, 0xfb, 0xcd, 0x8a, - 0x31, 0x25, 0x81, 0xcb, 0x8a, 0x32, 0x04, 0xa9, 0xbb, 0x9b, 0x39, 0x47, 0x02, 0xa8, 0xdb, 0x8a, - 0x61, 0x34, 0x80, 0x9a, 0x20, 0x24, 0x90, 0xca, 0xce, 0x8a, 0x18, 0x33, 0x12, 0x81, 0xba, 0x29, - 0x57, 0x34, 0x80, 0xab, 0x88, 0x32, 0x24, 0xc9, 0xdd, 0x9a, 0x00, 0x32, 0x82, 0xaa, 0x8a, 0x64, - 0x24, 0x12, 0x80, 0xbb, 0x0b, 0x43, 0x12, 0x00, 0xfa, 0xab, 0x10, 0x73, 0x23, 0xa0, 0x9b, 0x31, - 0x37, 0x12, 0xb8, 0xac, 0x08, 0x88, 0x11, 0x12, 0x98, 0x28, 0x77, 0x33, 0x11, 0x21, 0x11, 0x53, - 0x82, 0xaa, 0xdb, 0x9a, 0x53, 0x14, 0x00, 0x88, 0xdd, 0x8a, 0x32, 0x44, 0x02, 0xa9, 0x9a, 0x42, - 0x25, 0x98, 0xbc, 0x0a, 0x11, 0x43, 0x23, 0xc9, 0xbc, 0x8a, 0x00, 0x30, 0x47, 0xa0, 0xbc, 0x29, - 0x03, 0xda, 0xaa, 0xaa, 0x52, 0x35, 0x02, 0xea, 0xab, 0x89, 0x10, 0x22, 0x90, 0xbc, 0x09, 0x33, - 0x35, 0x83, 0xef, 0xbb, 0x08, 0x32, 0x11, 0x81, 0xeb, 0x9a, 0x21, 0x24, 0xc9, 0xaa, 0xa9, 0x89, - 0x10, 0x02, 0xfc, 0x9b, 0x9a, 0x20, 0x12, 0xfa, 0xbc, 0x29, 0x02, 0xaa, 0x09, 0x21, 0x90, 0x28, - 0xe8, 0xbd, 0xcc, 0xbd, 0x19, 0x55, 0x03, 0xb8, 0x9c, 0x08, 0x13, 0x81, 0xca, 0xac, 0x0a, 0x21, - 0x11, 0x90, 0xdc, 0xbd, 0x8a, 0x53, 0x14, 0x90, 0x99, 0x20, 0x36, 0x81, 0xcb, 0xab, 0xbb, 0x29, - 0x25, 0x80, 0x99, 0xaa, 0x19, 0x44, 0x01, 0xfd, 0xbb, 0x48, 0x26, 0x02, 0xb8, 0xbb, 0xab, 0x38, - 0x35, 0x01, 0xa9, 0x08, 0x63, 0x36, 0x81, 0xbb, 0xaa, 0x9b, 0x32, 0x04, 0xb9, 0xbf, 0x9b, 0x42, - 0x25, 0x01, 0x00, 0x00, 0x63, 0x34, 0x82, 0xc9, 0xab, 0x99, 0x08, 0x80, 0xdb, 0xbc, 0x20, 0x44, - 0x23, 0x98, 0x9a, 0x52, 0x44, 0x23, 0xa0, 0x18, 0x91, 0xbb, 0x18, 0xb1, 0xcf, 0x18, 0x22, 0x66, - 0x02, 0x01, 0x44, 0x7d, 0x0a, 0x02, 0xd0, 0x03, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x9f, 0x35, 0x90, 0xbc, 0xa9, 0x8a, 0x10, 0x62, 0x55, 0x33, 0x31, 0x54, 0x33, 0x22, 0x63, 0x44, - 0x23, 0x32, 0x43, 0x34, 0x35, 0x34, 0x34, 0x24, 0x23, 0x43, 0x43, 0x24, 0x33, 0x35, 0x34, 0x24, - 0x43, 0x33, 0x35, 0x33, 0x34, 0x34, 0x43, 0x43, 0x43, 0x24, 0x33, 0x53, 0x33, 0x34, 0x33, 0x44, - 0x43, 0x24, 0x32, 0x33, 0x33, 0x33, 0x34, 0x33, 0x34, 0x24, 0x24, 0x33, 0x43, 0x33, 0x43, 0x33, - 0x15, 0x94, 0xff, 0x1f, 0x81, 0x08, 0x00, 0x90, 0xb8, 0x8b, 0x90, 0x38, 0xf9, 0x8d, 0x00, 0xbc, - 0x9b, 0x41, 0x92, 0xbb, 0xbc, 0xdc, 0xab, 0xa9, 0x99, 0x9a, 0xaa, 0xba, 0xba, 0xcb, 0xbb, 0xac, - 0x2d, 0x77, 0x12, 0xc8, 0xac, 0x20, 0x84, 0x0c, 0x12, 0x00, 0x08, 0x88, 0x80, 0xef, 0x89, 0x89, - 0x88, 0x88, 0x89, 0x89, 0x89, 0x99, 0x99, 0x9a, 0xaa, 0xaa, 0xab, 0xac, 0xbb, 0xbc, 0xbb, 0xbc, - 0xcb, 0xbb, 0xcb, 0x1b, 0x24, 0x33, 0x22, 0x54, 0x33, 0x81, 0x73, 0x25, 0x13, 0x34, 0x12, 0x20, - 0x26, 0x41, 0x33, 0x12, 0x73, 0x43, 0x02, 0x10, 0x34, 0x20, 0x34, 0x22, 0x34, 0x12, 0x11, 0x46, - 0x22, 0x22, 0x32, 0x32, 0x33, 0x34, 0x43, 0x33, 0x24, 0x24, 0x33, 0x24, 0x43, 0x32, 0x24, 0x33, - 0x34, 0x33, 0x34, 0x24, 0x33, 0x34, 0x43, 0x33, 0x43, 0x33, 0x84, 0x9b, 0x47, 0x90, 0xba, 0x1b, - 0x66, 0x23, 0xea, 0x39, 0x93, 0x8b, 0x80, 0x9a, 0x90, 0xbf, 0x19, 0x00, 0xa9, 0x30, 0xc2, 0xef, - 0x88, 0x80, 0x18, 0x98, 0xdb, 0x8c, 0xa8, 0x8c, 0x02, 0xbb, 0x08, 0x11, 0xe9, 0xbe, 0x0a, 0x12, - 0x00, 0xb8, 0xbf, 0x9a, 0xa8, 0xbb, 0x30, 0x04, 0xcb, 0x30, 0x84, 0xbf, 0x9b, 0x21, 0x34, 0xa1, - 0xce, 0x8a, 0x88, 0x09, 0x31, 0x02, 0xca, 0x29, 0x23, 0xc8, 0xad, 0x18, 0x34, 0x82, 0xcd, 0x9a, - 0x10, 0x22, 0x42, 0x13, 0xa0, 0x9a, 0x31, 0x24, 0xb8, 0x0c, 0x62, 0x02, 0xda, 0x9a, 0x41, 0x34, - 0x44, 0x12, 0x00, 0xa8, 0x89, 0x43, 0x23, 0x80, 0x88, 0x88, 0xdb, 0xab, 0x08, 0x66, 0x33, 0x24, - 0x11, 0x88, 0xaa, 0x30, 0x34, 0x22, 0x91, 0x88, 0x80, 0xbc, 0x8a, 0x62, 0x13, 0x51, 0x24, 0x22, - 0x82, 0x2a, 0x24, 0x22, 0xd9, 0x28, 0x82, 0x89, 0xb8, 0xef, 0x08, 0x89, 0x08, 0x31, 0x03, 0x1b, - 0x34, 0x82, 0xdb, 0x3b, 0x37, 0x21, 0x22, 0x34, 0x90, 0x61, 0x25, 0x80, 0x11, 0x98, 0x41, 0xa1, - 0x0c, 0x45, 0x22, 0x20, 0x37, 0x91, 0x29, 0x44, 0x12, 0x10, 0xa1, 0x9c, 0x98, 0x08, 0x43, 0x92, - 0x08, 0x01, 0xec, 0xac, 0x28, 0x45, 0x90, 0x08, 0xc9, 0xab, 0x98, 0x2a, 0x27, 0xaa, 0xa1, 0xbf, - 0xc8, 0xbe, 0x20, 0x02, 0xeb, 0x9a, 0xb9, 0x8a, 0xa9, 0x9d, 0x10, 0xca, 0xbc, 0x0a, 0xd0, 0xbd, - 0x88, 0x99, 0xa9, 0xce, 0x0b, 0x81, 0xcb, 0x9b, 0x9a, 0x88, 0xfb, 0x9f, 0x08, 0x98, 0x9a, 0x09, - 0xa8, 0xcc, 0x09, 0x12, 0xb8, 0xad, 0xaa, 0x9a, 0xaa, 0xca, 0xad, 0x08, 0x08, 0x32, 0xd2, 0xbf, - 0x19, 0xa8, 0xbc, 0x20, 0xa0, 0x8d, 0x34, 0x82, 0xbb, 0x09, 0x80, 0x21, 0xf8, 0x9e, 0x52, 0x03, - 0xaa, 0x19, 0x23, 0x12, 0x42, 0x34, 0x01, 0xde, 0x8a, 0x73, 0x12, 0x88, 0x40, 0x04, 0xea, 0x9b, - 0x20, 0x12, 0xca, 0x1a, 0x33, 0x91, 0xbb, 0x50, 0x04, 0xa9, 0x0a, 0xa0, 0xdf, 0xab, 0x42, 0x24, - 0xa8, 0xbb, 0x89, 0x01, 0x98, 0xbb, 0xce, 0x9b, 0x08, 0x00, 0xc9, 0xbe, 0x1a, 0x12, 0xe9, 0xbd, - 0x8b, 0x10, 0x81, 0xcc, 0xac, 0x99, 0x18, 0x01, 0xe9, 0xac, 0x8a, 0x30, 0x13, 0xa8, 0xab, 0x11, - 0x12, 0xeb, 0xce, 0xaa, 0x31, 0x22, 0xa0, 0xcc, 0xab, 0x30, 0x35, 0x02, 0xb8, 0xcb, 0xbb, 0xab, - 0x31, 0x37, 0x63, 0x33, 0x02, 0xca, 0x9a, 0x31, 0x47, 0x23, 0x80, 0x88, 0x89, 0x40, 0x55, 0x22, - 0x33, 0x14, 0x80, 0x00, 0x90, 0x61, 0x44, 0x32, 0x31, 0x02, 0xba, 0x40, 0x36, 0x43, 0x12, 0x11, - 0x11, 0x88, 0x40, 0x36, 0x24, 0x00, 0x10, 0x34, 0x01, 0x72, 0x34, 0x13, 0x11, 0x11, 0x80, 0x88, - 0x10, 0x66, 0x14, 0x90, 0x19, 0x01, 0x18, 0x63, 0x32, 0x22, 0xea, 0xab, 0x89, 0x89, 0x00, 0x62, - 0x13, 0x98, 0xa9, 0x18, 0xd0, 0x1a, 0x23, 0xc9, 0x9d, 0x99, 0xbb, 0xfb, 0xcc, 0x89, 0x90, 0x09, - 0x01, 0x99, 0xa9, 0x8a, 0x90, 0xef, 0xcb, 0x99, 0x89, 0xca, 0xba, 0xac, 0x99, 0x00, 0x20, 0x01, - 0xfb, 0xac, 0xaa, 0xbc, 0xab, 0x9a, 0x08, 0x00, 0x18, 0x81, 0xb9, 0x30, 0x04, 0xea, 0xac, 0x8a, - 0xca, 0xcc, 0x19, 0x34, 0x81, 0x8a, 0x20, 0x33, 0x41, 0x56, 0x34, 0x02, 0x88, 0x31, 0x03, 0x98, - 0x61, 0x44, 0x01, 0xa9, 0x1a, 0x45, 0x33, 0x34, 0x44, 0x23, 0x11, 0x41, 0x44, 0x02, 0x20, 0x53, - 0x23, 0xa0, 0x9a, 0x52, 0x44, 0x12, 0x43, 0x23, 0x90, 0x30, 0x35, 0x23, 0x08, 0x31, 0x36, 0x11, - 0x10, 0x62, 0x24, 0x22, 0x11, 0x11, 0x81, 0x99, 0x51, 0x44, 0x32, 0x33, 0x44, 0x34, 0x12, 0x11, - 0x23, 0x82, 0xaa, 0x48, 0x34, 0x01, 0x99, 0x31, 0x01, 0x03, 0x9a, 0x42, 0x67, 0x35, 0x21, 0x01, - 0x80, 0x28, 0x54, 0x13, 0xb9, 0x9c, 0x18, 0x54, 0x23, 0x88, 0x30, 0x45, 0x43, 0x12, 0x98, 0x39, - 0x37, 0x21, 0x00, 0x98, 0x40, 0x47, 0x23, 0x91, 0xca, 0x8a, 0x21, 0x02, 0xa8, 0x19, 0x64, 0x24, - 0x98, 0x99, 0x98, 0x73, 0x24, 0xa8, 0xdb, 0x9b, 0x41, 0x25, 0x81, 0x99, 0xa9, 0xa9, 0x00, 0xd8, - 0xce, 0x8a, 0x18, 0x02, 0xc9, 0x8a, 0x00, 0xa8, 0xdc, 0xbc, 0xa9, 0xcb, 0x18, 0x02, 0xdc, 0xac, - 0x89, 0x80, 0xc9, 0xbd, 0xbb, 0xca, 0xac, 0x09, 0x80, 0xa9, 0xa9, 0xdb, 0xce, 0xac, 0x8a, 0x10, - 0x80, 0xb9, 0xdb, 0xbb, 0xab, 0x30, 0x13, 0xfb, 0xbd, 0xbc, 0xab, 0x09, 0x21, 0x22, 0x82, 0xcb, - 0xcc, 0xac, 0x8b, 0x20, 0x33, 0x91, 0xde, 0xac, 0x9b, 0x20, 0x44, 0x13, 0xa8, 0xbc, 0x9c, 0x19, - 0x52, 0x34, 0x13, 0x80, 0xaa, 0xb9, 0xab, 0x71, 0x35, 0x24, 0x01, 0x99, 0xab, 0x18, 0x54, 0x22, - 0xb8, 0xbb, 0xab, 0x9a, 0x19, 0x77, 0x34, 0x01, 0x99, 0xbb, 0xbc, 0x0a, 0x43, 0x02, 0xfb, 0xac, - 0x18, 0x43, 0x11, 0x01, 0x90, 0xca, 0xcc, 0xab, 0x8a, 0x08, 0x11, 0x82, 0xfc, 0xbd, 0x9b, 0x88, - 0xa0, 0xba, 0xab, 0xdc, 0xbc, 0xaa, 0x88, 0xa9, 0xaa, 0x09, 0xa8, 0xcc, 0x9b, 0x88, 0xfb, 0xcb, - 0x9a, 0x89, 0xaa, 0xbc, 0xba, 0xbb, 0xba, 0xab, 0x31, 0x36, 0xa1, 0xdd, 0xcb, 0xbc, 0xad, 0x10, - 0x22, 0x22, 0x12, 0x12, 0x23, 0xc8, 0x8a, 0x71, 0x24, 0x11, 0x80, 0x1a, 0x64, 0x24, 0x54, 0x22, - 0x11, 0x22, 0x33, 0x13, 0x53, 0x34, 0x31, 0x34, 0x32, 0x23, 0x32, 0x63, 0x56, 0x02, 0x01, 0x21, - 0x53, 0x23, 0x43, 0x12, 0x98, 0x31, 0x53, 0x23, 0x33, 0x63, 0x54, 0x34, 0x12, 0x32, 0x33, 0x12, - 0x22, 0xa0, 0xbc, 0x8a, 0x72, 0x45, 0x23, 0x81, 0x20, 0x33, 0x12, 0x00, 0xba, 0xdc, 0x9b, 0x08, - 0xa9, 0x19, 0x10, 0x56, 0x22, 0xb0, 0xbf, 0x8a, 0x80, 0x90, 0xdc, 0xbc, 0x19, 0x01, 0xaa, 0x88, - 0xc9, 0xae, 0xab, 0x88, 0xda, 0xbc, 0x89, 0x11, 0xfa, 0xbf, 0x99, 0x89, 0x98, 0x88, 0x98, 0xcb, - 0x9b, 0x88, 0x80, 0xa9, 0xbc, 0xaa, 0xcb, 0xbf, 0xab, 0xaa, 0xaa, 0x9a, 0x80, 0x99, 0xcb, 0x9a, - 0x50, 0x33, 0xd9, 0x9b, 0x08, 0x90, 0x09, 0x53, 0x24, 0x81, 0x89, 0x88, 0x08, 0x90, 0x51, 0x47, - 0x24, 0x01, 0x00, 0x10, 0x73, 0x44, 0x43, 0x32, 0x23, 0x31, 0x33, 0x13, 0x22, 0x64, 0x35, 0x33, - 0x02, 0x00, 0x31, 0x54, 0x34, 0x25, 0x23, 0x31, 0x43, 0x22, 0x01, 0x31, 0x45, 0x33, 0x11, 0x98, - 0xb9, 0x0a, 0x56, 0x35, 0x14, 0x01, 0x10, 0x22, 0x32, 0x32, 0x44, 0x33, 0x12, 0x80, 0x20, 0x32, - 0x65, 0x44, 0x22, 0xb8, 0xac, 0x09, 0x43, 0x24, 0x42, 0x22, 0x90, 0xba, 0x9a, 0x89, 0x20, 0x46, - 0x43, 0x80, 0xab, 0x2a, 0x65, 0x23, 0x01, 0x88, 0xaa, 0xaa, 0x1b, 0x47, 0x24, 0x33, 0x33, 0x01, - 0xa9, 0x0a, 0x73, 0x36, 0x02, 0x90, 0x99, 0x08, 0x20, 0x64, 0x33, 0x81, 0xba, 0xcb, 0x9a, 0x21, - 0x55, 0x35, 0x13, 0xa8, 0xab, 0x88, 0x89, 0x61, 0x33, 0x81, 0x99, 0x88, 0x00, 0x41, 0x34, 0x81, - 0xfe, 0xbc, 0x9b, 0x00, 0x80, 0x08, 0x98, 0xba, 0xbe, 0xab, 0x89, 0x99, 0xda, 0xcc, 0xeb, 0xbc, - 0x9a, 0x88, 0xc9, 0xcb, 0xcb, 0xba, 0xaa, 0xab, 0xab, 0xb9, 0xcd, 0xab, 0xeb, 0xdc, 0xaa, 0x9a, - 0x9a, 0xab, 0xac, 0x8a, 0x10, 0xb8, 0xdd, 0xcb, 0xac, 0xab, 0x89, 0x89, 0x99, 0xaa, 0x8a, 0x99, - 0xde, 0xac, 0x18, 0x02, 0xe9, 0xbc, 0xbb, 0xbb, 0x09, 0x34, 0x04, 0xb9, 0xab, 0x52, 0x02, 0xda, - 0x09, 0x43, 0x33, 0x80, 0xaa, 0xab, 0x18, 0x64, 0x35, 0x03, 0x80, 0x62, 0x35, 0x02, 0xb9, 0xaa, - 0x08, 0x32, 0x13, 0x00, 0x31, 0x65, 0x44, 0x11, 0xba, 0xad, 0x88, 0xb9, 0xbe, 0xab, 0x30, 0x37, - 0x23, 0x11, 0x00, 0x98, 0x18, 0x90, 0xfc, 0xcc, 0xbb, 0x8a, 0x88, 0xa9, 0xba, 0x9a, 0xcb, 0xde, - 0xbc, 0xbc, 0xbb, 0xaa, 0x99, 0xbb, 0xbe, 0xbb, 0x9a, 0xa9, 0xcb, 0xba, 0xdc, 0xcb, 0x9a, 0x89, - 0x99, 0xcb, 0xcd, 0xdb, 0xba, 0x9b, 0x89, 0x18, 0x21, 0x12, 0xc9, 0xcd, 0xac, 0x99, 0xa9, 0xcb, - 0xcc, 0xaa, 0x99, 0x08, 0x42, 0x44, 0x12, 0x11, 0x91, 0xca, 0xcb, 0x9a, 0x30, 0x34, 0x33, 0x54, - 0x44, 0x32, 0x33, 0x43, 0x33, 0x22, 0x43, 0x13, 0x81, 0x42, 0x55, 0x34, 0x12, 0x21, 0x42, 0x43, - 0x43, 0x43, 0x33, 0x12, 0x31, 0x44, 0x33, 0x24, 0x53, 0x44, 0x23, 0x11, 0x31, 0x34, 0x34, 0x53, - 0x43, 0x22, 0x11, 0x10, 0x21, 0x11, 0x53, 0x45, 0x24, 0x11, 0x00, 0x11, 0x11, 0x33, 0x35, 0x12, - 0xa0, 0xcb, 0xbb, 0xdb, 0x8a, 0x42, 0x34, 0x80, 0xba, 0x9a, 0x20, 0x55, 0x34, 0x91, 0xec, 0xac, - 0x9b, 0x99, 0x9a, 0x99, 0xa8, 0xdd, 0xbc, 0xaa, 0x8a, 0x88, 0x99, 0xca, 0xcd, 0xbc, 0xba, 0x99, - 0x80, 0x98, 0xda, 0xcd, 0xcb, 0xab, 0x89, 0x08, 0x98, 0xba, 0xbe, 0xcb, 0xaa, 0x88, 0x10, 0x00, - 0xa8, 0xbb, 0xba, 0xaa, 0x40, 0x36, 0xb0, 0xdf, 0xab, 0x99, 0x08, 0x21, 0x43, 0x23, 0x00, 0x89, - 0x00, 0x22, 0x54, 0x45, 0x23, 0x80, 0x89, 0x42, 0x35, 0x14, 0x11, 0x10, 0x21, 0x52, 0x54, 0x34, - 0x33, 0x33, 0x34, 0x24, 0x12, 0x11, 0x34, 0x33, 0x12, 0x21, 0x54, 0x44, 0x24, 0x23, 0x02, 0x88, - 0x10, 0x53, 0x43, 0x22, 0x53, 0x43, 0x23, 0x11, 0x21, 0x32, 0x36, 0x25, 0x12, 0x10, 0x10, 0x44, - 0x34, 0x13, 0x81, 0x10, 0x32, 0x33, 0x33, 0x42, 0x63, 0x34, 0x24, 0x01, 0x88, 0x20, 0x43, 0x02, - 0xda, 0xaa, 0x08, 0x54, 0x44, 0x12, 0x00, 0x08, 0x20, 0x31, 0x22, 0x54, 0x44, 0x24, 0x11, 0x01, - 0x21, 0x31, 0x44, 0x34, 0x23, 0x21, 0x32, 0x25, 0x13, 0x88, 0x99, 0x21, 0x33, 0x43, 0x55, 0x43, - 0x22, 0x63, 0x44, 0x23, 0x01, 0x88, 0x80, 0xa8, 0xbb, 0x08, 0x22, 0x33, 0x56, 0x24, 0x91, 0xba, - 0x19, 0x81, 0xed, 0xbd, 0xaa, 0x88, 0x00, 0x00, 0xb8, 0xde, 0xbc, 0xaa, 0x99, 0xcb, 0xbc, 0xaa, - 0xeb, 0xcd, 0xab, 0xa9, 0xa8, 0xa9, 0xab, 0xdb, 0xbc, 0xac, 0xa9, 0xda, 0xbc, 0xbc, 0xbc, 0xcb, - 0xac, 0x9a, 0x09, 0x88, 0x99, 0xdb, 0xbc, 0xac, 0xaa, 0xa9, 0xcb, 0xbc, 0xbb, 0xbb, 0xab, 0x9b, - 0x99, 0xca, 0xdd, 0xbc, 0xbe, 0xbb, 0x9a, 0x08, 0x11, 0x01, 0x88, 0xb9, 0xcd, 0xbb, 0x89, 0x98, - 0xb9, 0xbb, 0xdb, 0xbb, 0x1a, 0x46, 0x34, 0x22, 0x01, 0x10, 0x42, 0x33, 0x53, 0x54, 0x24, 0x12, - 0x98, 0xba, 0xab, 0x89, 0x30, 0x35, 0x22, 0x62, 0x35, 0x33, 0x11, 0x80, 0xfa, 0xcd, 0xac, 0x88, - 0x31, 0x44, 0x44, 0x43, 0x11, 0x98, 0xaa, 0xbb, 0xbc, 0xab, 0x99, 0xeb, 0xcc, 0xaa, 0x10, 0x32, - 0x22, 0x90, 0xec, 0xbd, 0xbd, 0xab, 0xaa, 0x99, 0x89, 0xa9, 0xcb, 0xcc, 0x8a, 0x18, 0x80, 0xca, - 0xcc, 0xcb, 0xbb, 0xab, 0x9a, 0xa9, 0xbb, 0xbd, 0xbc, 0xac, 0x9a, 0x18, 0x02, 0xc9, 0xcf, 0xbc, - 0xaa, 0x8a, 0x80, 0x90, 0xc9, 0xba, 0x9a, 0x89, 0x20, 0x44, 0x25, 0x01, 0xb9, 0xab, 0x39, 0x65, - 0x34, 0x14, 0x01, 0x00, 0x31, 0x45, 0x34, 0x33, 0x23, 0x33, 0x22, 0x22, 0x43, 0x55, 0x43, 0x23, - 0x11, 0x21, 0x64, 0x44, 0x33, 0x23, 0x12, 0x11, 0x23, 0x34, 0x34, 0x34, 0x43, 0x34, 0x33, 0x43, - 0x33, 0x46, 0x33, 0x33, 0x33, 0x33, 0x44, 0x43, 0x33, 0x13, 0x91, 0x88, 0x32, 0x35, 0x34, 0x34, - 0x33, 0x12, 0x88, 0x88, 0x52, 0x43, 0x33, 0x01, 0xa8, 0x09, 0x65, 0x35, 0x22, 0x98, 0xda, 0xcc, - 0xac, 0x9b, 0x09, 0x88, 0x99, 0x99, 0xba, 0xbd, 0xac, 0xaa, 0xbb, 0xbf, 0xad, 0xaa, 0xaa, 0xaa, - 0xdb, 0xcc, 0xbd, 0xac, 0x9b, 0x99, 0xa9, 0x99, 0x9a, 0xaa, 0xbc, 0xcb, 0xbb, 0xbb, 0xcb, 0xcb, - 0xbd, 0xac, 0xab, 0xa9, 0x98, 0x99, 0xaa, 0xcb, 0xcb, 0xac, 0xa9, 0x89, 0x30, 0x44, 0x22, 0x98, - 0xbb, 0xdb, 0xab, 0x89, 0x31, 0x44, 0x34, 0x25, 0x23, 0x22, 0x44, 0x45, 0x33, 0x23, 0x33, 0x44, - 0x44, 0x24, 0x33, 0x33, 0x24, 0x33, 0x33, 0x34, 0x34, 0x34, 0x24, 0x23, 0x22, 0x33, 0x45, 0x34, - 0x33, 0x43, 0x32, 0x43, 0x42, 0x42, 0x33, 0x24, 0x12, 0x22, 0x22, 0x33, 0x64, 0x53, 0x33, 0x24, - 0x23, 0x23, 0x23, 0x11, 0x33, 0x44, 0x33, 0x33, 0x44, 0x24, 0x33, 0x53, 0x33, 0x12, 0xa8, 0xaa, - 0x9a, 0x8a, 0x20, 0x45, 0x14, 0x01, 0x28, 0x53, 0x44, 0x43, 0x34, 0x14, 0x11, 0x00, 0x20, 0x42, - 0x33, 0x44, 0x43, 0x22, 0x10, 0x20, 0x43, 0x45, 0x43, 0x32, 0x01, 0x88, 0x88, 0x10, 0x42, 0x54, - 0x35, 0x44, 0x32, 0x21, 0x01, 0x01, 0x01, 0x80, 0xca, 0xbb, 0x18, 0x65, 0x34, 0x34, 0x23, 0x12, - 0xa0, 0xca, 0xbb, 0x9b, 0x42, 0x24, 0xd8, 0xcc, 0x9b, 0x18, 0x12, 0x90, 0xec, 0xcc, 0xbc, 0xaa, - 0x8a, 0x10, 0x31, 0x23, 0xc8, 0xef, 0xcb, 0x9b, 0x8a, 0x98, 0xa9, 0xca, 0xbc, 0xdb, 0xba, 0xba, - 0xbb, 0xab, 0xbb, 0xcd, 0xcb, 0xab, 0x08, 0x80, 0xda, 0xce, 0xcb, 0xab, 0xab, 0xa9, 0x89, 0x9a, - 0xaa, 0xa9, 0xca, 0xdb, 0xba, 0xba, 0xde, 0xbc, 0xad, 0x9a, 0x08, 0x20, 0x11, 0x90, 0xcb, 0xab, - 0x99, 0xaa, 0xbd, 0xac, 0xbb, 0xab, 0x19, 0x54, 0x35, 0x34, 0x33, 0x12, 0x80, 0x88, 0x32, 0x35, - 0x81, 0xcc, 0xbc, 0xaa, 0x18, 0x44, 0x35, 0x23, 0x12, 0x00, 0x10, 0x31, 0x63, 0x23, 0x90, 0xcd, - 0xac, 0x08, 0x54, 0x44, 0x23, 0x11, 0x80, 0x88, 0x00, 0x80, 0xba, 0xcd, 0xdb, 0xbb, 0xbb, 0x99, - 0x80, 0xb8, 0xed, 0xbc, 0xbd, 0x9b, 0x8a, 0x98, 0xeb, 0xcd, 0xbb, 0xac, 0xa9, 0x89, 0x88, 0x99, - 0xca, 0xba, 0xcb, 0xcb, 0xba, 0xbb, 0xbd, 0xcd, 0xba, 0xaa, 0x99, 0xa9, 0xbb, 0xcd, 0xba, 0xbb, - 0xac, 0xcb, 0xbb, 0xbc, 0xbb, 0xbd, 0xac, 0x9a, 0x99, 0x99, 0x99, 0x09, 0x20, 0x63, 0x34, 0x24, - 0x02, 0x80, 0x98, 0xa9, 0xaa, 0x51, 0x57, 0x53, 0x33, 0x33, 0x33, 0x32, 0x22, 0x53, 0x53, 0x43, - 0x43, 0x33, 0x24, 0x23, 0x43, 0x53, 0x33, 0x33, 0x43, 0x32, 0x34, 0x44, 0x34, 0x35, 0x43, 0x33, - 0x33, 0x33, 0x43, 0x34, 0x44, 0x33, 0x43, 0x22, 0x23, 0x33, 0x34, 0x33, 0x22, 0x22, 0x43, 0x44, - 0x34, 0x35, 0x24, 0x23, 0x23, 0x11, 0x11, 0x22, 0x22, 0x23, 0x11, 0xa8, 0xcb, 0xcb, 0x8a, 0x41, - 0x34, 0x12, 0x99, 0xba, 0xbc, 0x9c, 0x20, 0x81, 0xff, 0xbc, 0xbd, 0xdb, 0xbb, 0xac, 0xa9, 0xba, - 0xcc, 0xbb, 0xac, 0xab, 0xab, 0xbb, 0xdc, 0xcb, 0xcb, 0xaa, 0xbb, 0xbc, 0xab, 0xbb, 0xcc, 0xbc, - 0xbb, 0xaa, 0x9b, 0xba, 0xcb, 0xbc, 0xad, 0xbb, 0xaa, 0xba, 0x99, 0x11, 0x02, 0xc9, 0xce, 0xbb, - 0xab, 0xab, 0xab, 0xaa, 0xbc, 0xab, 0x28, 0x44, 0x53, 0x44, 0x43, 0x23, 0x00, 0x00, 0x42, 0x34, - 0x35, 0x43, 0x23, 0x34, 0x44, 0x43, 0x33, 0x33, 0x32, 0x43, 0x43, 0x42, 0x43, 0x34, 0x33, 0x33, - 0x23, 0x32, 0x45, 0x44, 0x34, 0x33, 0x22, 0x11, 0x11, 0x22, 0x42, 0x34, 0x44, 0x43, 0x33, 0x43, - 0x34, 0x34, 0x34, 0x33, 0x13, 0x11, 0x00, 0x32, 0x45, 0x34, 0x43, 0x32, 0x22, 0x32, 0x22, 0x81, - 0x88, 0xaa, 0xaa, 0x89, 0x65, 0x45, 0x34, 0x24, 0x01, 0x88, 0x89, 0x28, 0x43, 0x34, 0x33, 0x23, - 0x22, 0x33, 0x44, 0x34, 0x24, 0x32, 0x21, 0x21, 0x53, 0x54, 0x44, 0x33, 0x22, 0x01, 0x08, 0x11, - 0x42, 0x43, 0x33, 0x22, 0x34, 0x45, 0x33, 0x34, 0x32, 0x21, 0x88, 0x09, 0x73, 0x45, 0x44, 0x22, - 0x01, 0x80, 0x99, 0x89, 0x99, 0xba, 0xbd, 0xac, 0x9b, 0x20, 0x46, 0x44, 0x23, 0x01, 0xda, 0xbc, - 0xbb, 0x9a, 0xaa, 0xcb, 0xcc, 0xab, 0x9b, 0x98, 0x80, 0x99, 0xdd, 0xcd, 0xbc, 0xbc, 0xba, 0xa9, - 0x99, 0xcb, 0xbc, 0xbb, 0xab, 0x9a, 0xaa, 0xeb, 0xcc, 0xdb, 0xbc, 0xbb, 0xbb, 0xbb, 0xba, 0x9a, - 0xba, 0xaa, 0xab, 0xdb, 0xdc, 0xcc, 0xcb, 0xbb, 0xac, 0xab, 0xbb, 0xbc, 0xab, 0xbb, 0xca, 0xba, - 0x9b, 0x8a, 0x99, 0xbb, 0xbc, 0xdb, 0xcb, 0x9b, 0x89, 0x88, 0x08, 0x53, 0x45, 0x22, 0x22, 0x42, - 0x23, 0x11, 0x00, 0xca, 0xde, 0xbb, 0x8b, 0x51, 0x45, 0x33, 0x23, 0x01, 0xa9, 0xa9, 0x30, 0x55, - 0x33, 0x14, 0x12, 0x00, 0x98, 0x28, 0x54, 0x34, 0x43, 0x32, 0x43, 0x43, 0x43, 0x12, 0xd9, 0xcd, - 0xbc, 0xab, 0xab, 0xab, 0x9a, 0x89, 0xaa, 0xbc, 0xbd, 0xcc, 0xcc, 0xcb, 0xdb, 0xcb, 0xbb, 0x9a, - 0x09, 0x88, 0x98, 0xa9, 0xcc, 0xdb, 0xbb, 0xbb, 0xbb, 0xba, 0xcc, 0xcc, 0xac, 0xbb, 0xcb, 0xba, - 0xcb, 0xcb, 0xba, 0xab, 0xbb, 0xcb, 0xaa, 0xbb, 0xdb, 0xcb, 0xcb, 0xaa, 0xaa, 0x99, 0x98, 0x98, - 0x98, 0x88, 0x08, 0x10, 0x20, 0x63, 0x55, 0x44, 0x33, 0x33, 0x53, 0x63, 0x33, 0x35, 0x32, 0x22, - 0x12, 0x22, 0x43, 0x43, 0x44, 0x33, 0x34, 0x42, 0x42, 0x43, 0x34, 0x35, 0x34, 0x43, 0x22, 0x32, - 0x43, 0x43, 0x33, 0x34, 0x33, 0x43, 0x43, 0x33, 0x34, 0x34, 0x43, 0x33, 0x43, 0x33, 0x35, 0x34, - 0x34, 0x22, 0x12, 0x12, 0x21, 0x33, 0x44, 0x33, 0x32, 0x12, 0x22, 0x44, 0x34, 0x45, 0x22, 0x02, - 0x98, 0xab, 0x09, 0x42, 0x25, 0x23, 0x01, 0x99, 0xbb, 0xcd, 0xbc, 0xbc, 0xac, 0xcb, 0xcb, 0xba, - 0xa9, 0x98, 0xba, 0xdd, 0xbc, 0xac, 0xab, 0xba, 0xcc, 0xdb, 0xcb, 0xba, 0xbb, 0xab, 0xaa, 0xbb, - 0xcc, 0xcb, 0xbb, 0xbb, 0x89, 0x89, 0xda, 0xdc, 0xbc, 0xab, 0x9b, 0x9a, 0x88, 0x98, 0xa8, 0xca, - 0xcb, 0xcb, 0xba, 0xcb, 0xcc, 0xcb, 0xab, 0x19, 0x52, 0x33, 0x33, 0x11, 0x98, 0x9a, 0x08, 0x43, - 0x43, 0x34, 0x33, 0x44, 0x63, 0x34, 0x35, 0x33, 0x23, 0x11, 0x20, 0x42, 0x45, 0x44, 0x32, 0x23, - 0x13, 0x32, 0x32, 0x44, 0x33, 0x43, 0x23, 0x22, 0x53, 0x34, 0x35, 0x33, 0x22, 0x22, 0x31, 0x45, - 0x44, 0x43, 0x43, 0x32, 0x32, 0x22, 0x33, 0x43, 0x33, 0x23, 0x22, 0x32, 0x63, 0x34, 0x44, 0x23, - 0x22, 0x10, 0x00, 0x11, 0x21, 0x52, 0x53, 0x33, 0x34, 0x24, 0x23, 0x13, 0x80, 0xa9, 0xa9, 0x18, - 0x54, 0x44, 0x44, 0x43, 0x33, 0x34, 0x33, 0x33, 0x22, 0x32, 0x12, 0x22, 0x21, 0x33, 0x32, 0x43, - 0x73, 0x46, 0x44, 0x34, 0x43, 0x12, 0x01, 0x00, 0x00, 0x31, 0x43, 0x33, 0x43, 0x23, 0x34, 0x45, - 0x43, 0x24, 0x12, 0x80, 0xb9, 0xbc, 0x9a, 0x10, 0x44, 0x43, 0x33, 0x22, 0x12, 0x11, 0x11, 0x01, - 0xc9, 0xde, 0xcc, 0xcb, 0xbb, 0xac, 0xac, 0xbb, 0xba, 0x9a, 0x80, 0x01, 0xa8, 0xcf, 0xcd, 0xbd, - 0xbc, 0xbb, 0xbb, 0xbb, 0xcb, 0xbb, 0xcb, 0xcb, 0xba, 0xbb, 0xbc, 0xcc, 0xcb, 0xac, 0xbb, 0xab, - 0xcb, 0xba, 0xbd, 0xbb, 0xbc, 0xbb, 0xbc, 0xbc, 0xbc, 0xbb, 0xbc, 0xcb, 0xcb, 0xbc, 0xcb, 0xbb, - 0xbb, 0xab, 0x89, 0x00, 0x01, 0x98, 0xca, 0xbc, 0xbc, 0xcb, 0xbc, 0xbc, 0xaa, 0x18, 0x42, 0x34, - 0x34, 0x32, 0x11, 0x98, 0xbb, 0xbb, 0x9a, 0x00, 0xc8, 0xbe, 0xab, 0x61, 0x45, 0x33, 0x24, 0x23, - 0x23, 0x11, 0x11, 0x73, 0x63, 0x32, 0x22, 0x80, 0x89, 0x41, 0x46, 0x33, 0x22, 0x11, 0x21, 0x32, - 0x33, 0x03, 0xfa, 0xdc, 0xcc, 0xcb, 0xab, 0xaa, 0x89, 0xba, 0xce, 0xbc, 0xbb, 0xab, 0x89, 0x99, - 0xdb, 0xbc, 0xbd, 0xbb, 0xbb, 0xaa, 0x99, 0xbb, 0xce, 0xbc, 0xbc, 0xac, 0xba, 0xdb, 0xbb, 0xcb, - 0xab, 0xab, 0xba, 0xcb, 0xdb, 0xba, 0xbc, 0xbb, 0xbc, 0xbb, 0xbc, 0xcc, 0xcb, 0xab, 0xaa, 0x08, - 0x80, 0xa9, 0xcb, 0xbb, 0x9a, 0x42, 0x45, 0x34, 0x33, 0x22, 0x00, 0x00, 0x21, 0x53, 0x33, 0x11, - 0x00, 0x10, 0x75, 0x54, 0x43, 0x24, 0x23, 0x22, 0x23, 0x53, 0x43, 0x43, 0x43, 0x32, 0x33, 0x34, - 0x35, 0x44, 0x32, 0x23, 0x32, 0x32, 0x44, 0x53, 0x34, 0x43, 0x32, 0x23, 0x33, 0x53, 0x43, 0x43, - 0x33, 0x33, 0x33, 0x43, 0x32, 0x43, 0x32, 0x33, 0x24, 0x33, 0x35, 0x36, 0x34, 0x34, 0x23, 0x11, - 0x00, 0x88, 0x88, 0x88, 0x08, 0x20, 0x44, 0x44, 0x43, 0x23, 0x12, 0xa8, 0xdc, 0xbc, 0xbc, 0x9a, - 0x99, 0x98, 0xa9, 0xba, 0xbc, 0xbe, 0xbd, 0xbd, 0xbc, 0xcb, 0xbb, 0xba, 0xac, 0xbb, 0xcb, 0xcb, - 0xbb, 0xcb, 0xbb, 0xbb, 0xbd, 0xbb, 0xcb, 0xba, 0xbb, 0xdc, 0xcb, 0xbb, 0xbc, 0xba, 0xaa, 0xaa, - 0xba, 0xac, 0xac, 0xcb, 0xba, 0xcb, 0xbb, 0xad, 0xac, 0x9a, 0x88, 0x22, 0x33, 0x12, 0xa8, 0xcc, - 0xac, 0x9b, 0x09, 0x43, 0x35, 0x35, 0x43, 0x43, 0x34, 0x34, 0x33, 0x43, 0x22, 0x32, 0x34, 0x34, - 0x44, 0x32, 0x43, 0x32, 0x23, 0x33, 0x44, 0x33, 0x33, 0x33, 0x43, 0x44, 0x63, 0x43, 0x43, 0x33, - 0x43, 0x33, 0x34, 0x33, 0x43, 0x32, 0x22, 0x11, 0x21, 0x53, 0x54, 0x34, 0x34, 0x33, 0x32, 0x33, - 0x23, 0x12, 0x02, 0x21, 0x31, 0x44, 0x32, 0x33, 0x53, 0x42, 0x32, 0x34, 0x34, 0x35, 0x32, 0x23, - 0x02, 0x10, 0x41, 0x44, 0x44, 0x32, 0x24, 0x33, 0x33, 0x43, 0x24, 0x24, 0x12, 0x81, 0x88, 0x0a, - 0x61, 0x54, 0x53, 0x32, 0x43, 0x32, 0x33, 0x33, 0x33, 0x33, 0x22, 0x00, 0x88, 0x30, 0x57, 0x35, - 0x34, 0x32, 0x21, 0x22, 0x53, 0x43, 0x24, 0x23, 0x23, 0x11, 0x98, 0xba, 0xac, 0x8a, 0x21, 0x43, - 0x34, 0x35, 0x45, 0x22, 0x81, 0xda, 0xcc, 0xbb, 0xbb, 0xcb, 0xba, 0xac, 0xab, 0xba, 0xaa, 0xcb, - 0xcd, 0xcd, 0xcc, 0xdb, 0xbb, 0xac, 0x9a, 0x9a, 0xa9, 0xba, 0xbb, 0xbc, 0xbb, 0xbc, 0xdb, 0xdb, - 0xcb, 0xcb, 0xcb, 0xba, 0xba, 0xbc, 0xcb, 0xac, 0xbb, 0xba, 0xba, 0xbc, 0xcc, 0xdb, 0xbb, 0xcb, - 0xaa, 0xaa, 0xaa, 0xcb, 0xbc, 0xbc, 0xaa, 0x99, 0x00, 0x00, 0x98, 0xdb, 0xbc, 0xbc, 0x9a, 0x08, - 0x01, 0x98, 0xeb, 0xba, 0x09, 0x51, 0x43, 0x22, 0x80, 0xa9, 0xaa, 0xaa, 0x09, 0x31, 0x23, 0x91, - 0x9a, 0x73, 0x77, 0x34, 0x24, 0x02, 0x80, 0x09, 0x52, 0x45, 0x34, 0x33, 0x23, 0x12, 0x21, 0x31, - 0x53, 0x23, 0x02, 0xfb, 0xcc, 0xbb, 0x9b, 0x89, 0x90, 0xb9, 0xdd, 0xcb, 0xac, 0xbb, 0xaa, 0x99, - 0xaa, 0xcb, 0xbc, 0xbc, 0xbc, 0xbc, 0xcd, 0xcc, 0xba, 0xba, 0xa9, 0xa9, 0xa9, 0xba, 0xca, 0xcb, - 0xcb, 0xbc, 0xbc, 0xbc, 0xbc, 0xdb, 0xba, 0xcb, 0xbb, 0xcc, 0xba, 0xab, 0xbb, 0xaa, 0xba, 0xaa, - 0xbb, 0xbb, 0xaa, 0xbb, 0xcd, 0xcb, 0xab, 0x9a, 0x08, 0x42, 0x34, 0x24, 0x01, 0xa9, 0xcc, 0xab, - 0x08, 0x31, 0x54, 0x63, 0x44, 0x53, 0x43, 0x23, 0x32, 0x21, 0x01, 0x11, 0x31, 0x44, 0x45, 0x53, - 0x33, 0x43, 0x43, 0x33, 0x34, 0x34, 0x32, 0x43, 0x33, 0x53, 0x33, 0x35, 0x43, 0x33, 0x24, 0x23, - 0x43, 0x42, 0x33, 0x53, 0x32, 0x24, 0x33, 0x24, 0x33, 0x33, 0x33, 0x34, 0x34, 0x34, 0x35, 0x43, - 0x33, 0x22, 0x00, 0x08, 0x10, 0x32, 0x34, 0x34, 0x43, 0x43, 0x34, 0x33, 0x33, 0x12, 0x98, 0xdc, - 0xcc, 0xab, 0x9a, 0x08, 0x88, 0xb8, 0xbd, 0xbd, 0xcc, 0xcb, 0xcc, 0xbb, 0xbb, 0xac, 0xbb, 0xba, - 0xbb, 0xcb, 0xcb, 0xbc, 0xbc, 0xbb, 0xbb, 0xcd, 0xcb, 0xbc, 0xbb, 0xbb, 0xaa, 0xaa, 0xba, 0xba, - 0xcc, 0xdb, 0xbb, 0xbc, 0xac, 0xbb, 0xbc, 0xbb, 0xaa, 0x8a, 0x88, 0xa8, 0xdb, 0xcc, 0xac, 0xab, - 0xab, 0xaa, 0x99, 0x08, 0x31, 0x64, 0x53, 0x34, 0x43, 0x32, 0x23, 0x23, 0x33, 0x43, 0x33, 0x32, - 0x43, 0x43, 0x53, 0x44, 0x43, 0x34, 0x24, 0x33, 0x33, 0x34, 0x33, 0x43, 0x22, 0x22, 0x43, 0x44, - 0x44, 0x53, 0x33, 0x33, 0x33, 0x33, 0x43, 0x42, 0x33, 0x35, 0x43, 0x33, 0x43, 0x43, 0x34, 0x32, - 0x24, 0x22, 0x12, 0x12, 0x22, 0x32, 0x24, 0x33, 0x23, 0x32, 0x44, 0x45, 0x34, 0x34, 0x22, 0x23, - 0x22, 0x33, 0x34, 0x23, 0x12, 0x98, 0xaa, 0x8a, 0x73, 0x47, 0x53, 0x33, 0x23, 0x11, 0x11, 0x21, - 0x33, 0x35, 0x33, 0x22, 0x12, 0x31, 0x64, 0x54, 0x43, 0x33, 0x22, 0x12, 0x11, 0x22, 0x43, 0x24, - 0x23, 0x34, 0x43, 0x44, 0x43, 0x34, 0x43, 0x22, 0x11, 0x00, 0x10, 0x31, 0x43, 0x23, 0x80, 0x9a, - 0x18, 0x54, 0x36, 0x24, 0x23, 0x01, 0x80, 0x80, 0x88, 0x88, 0xca, 0xde, 0xbd, 0xbd, 0xcb, 0xaa, - 0xba, 0xba, 0xcb, 0xcb, 0xbb, 0xbc, 0xbd, 0xcc, 0xcb, 0xbb, 0xcb, 0xba, 0xbb, 0xbc, 0xcb, 0xbb, - 0xcc, 0xbb, 0xbc, 0xcb, 0xdb, 0xbb, 0xbc, 0xbb, 0xac, 0xbb, 0xbc, 0xcb, 0xcb, 0xbb, 0xbc, 0xbc, - 0xbc, 0xbb, 0xcb, 0xba, 0xaa, 0xba, 0xbb, 0xbd, 0xcb, 0xcb, 0xab, 0xbb, 0xbb, 0xbb, 0xac, 0xaa, - 0x9a, 0x89, 0x89, 0xb9, 0xce, 0xcc, 0xab, 0x9b, 0x09, 0x10, 0x11, 0x81, 0xa9, 0xcb, 0xbb, 0xab, - 0x8b, 0x63, 0x35, 0x34, 0x45, 0x44, 0x44, 0x43, 0x23, 0x23, 0x32, 0x34, 0x44, 0x32, 0x23, 0x11, - 0x80, 0xa9, 0xdb, 0xbb, 0x8a, 0x18, 0x41, 0x44, 0x44, 0x33, 0x03, 0xda, 0xcf, 0xcb, 0xcb, 0xaa, - 0x9a, 0xaa, 0xa9, 0xaa, 0xbb, 0xbb, 0xcd, 0xdb, 0xbc, 0xbd, 0xbc, 0xbb, 0xaa, 0x88, 0x08, 0xa8, - 0xeb, 0xcc, 0xcb, 0xbc, 0xbc, 0xbb, 0xbc, 0xac, 0xab, 0xbb, 0xba, 0xba, 0xbb, 0xcc, 0xcb, 0xab, - 0xbb, 0xab, 0xbc, 0xdb, 0xbb, 0xad, 0xbb, 0xaa, 0x99, 0x99, 0x98, 0x08, 0x10, 0x31, 0x34, 0x33, - 0x80, 0xdb, 0xbc, 0x8a, 0x31, 0x57, 0x34, 0x35, 0x43, 0x32, 0x43, 0x32, 0x43, 0x33, 0x34, 0x35, - 0x34, 0x44, 0x33, 0x44, 0x32, 0x24, 0x24, 0x23, 0x24, 0x33, 0x24, 0x43, 0x33, 0x53, 0x33, 0x35, - 0x43, 0x33, 0x43, 0x43, 0x42, 0x32, 0x32, 0x33, 0x33, 0x44, 0x42, 0x33, 0x34, 0x34, 0x33, 0x24, - 0x32, 0x32, 0x43, 0x43, 0x33, 0x24, 0x33, 0x43, 0x43, 0x33, 0x34, 0x33, 0x12, 0x01, 0x80, 0x88, - 0x11, 0x12, 0x02, 0xb9, 0xce, 0xac, 0xac, 0xbb, 0xbd, 0xcc, 0xbc, 0xbc, 0xcb, 0xbb, 0xcb, 0xcb, - 0xbb, 0xbc, 0xcb, 0xab, 0xab, 0xcb, 0xcc, 0xcc, 0xcb, 0xbb, 0xac, 0xaa, 0xa9, 0xaa, 0xbb, 0xbc, - 0xcb, 0xcb, 0xba, 0xcb, 0xcb, 0xdb, 0xbb, 0xbc, 0xba, 0xaa, 0xa9, 0xaa, 0xcb, 0xcb, 0xba, 0xbb, - 0xab, 0x9a, 0xa9, 0xa9, 0xab, 0x9a, 0x18, 0x31, 0x43, 0x54, 0x43, 0x35, 0x45, 0x33, 0x33, 0x23, - 0x22, 0x33, 0x53, 0x44, 0x44, 0x43, 0x43, 0x42, 0x32, 0x24, 0x24, 0x33, 0x33, 0x23, 0x43, 0x32, - 0x44, 0x43, 0x34, 0x35, 0x43, 0x24, 0x33, 0x24, 0x33, 0x32, 0x43, 0x32, 0x33, 0x34, 0x43, 0x33, - 0x35, 0x43, 0x34, 0x33, 0x43, 0x32, 0x22, 0x21, 0x22, 0x43, 0x34, 0x24, 0x24, 0x32, 0x24, 0x43, - 0x32, 0x22, 0x33, 0x32, 0x24, 0x32, 0x43, 0x43, 0x43, 0x34, 0x24, 0x43, 0x43, 0x34, 0x33, 0x34, - 0x33, 0x24, 0x33, 0x33, 0x32, 0x33, 0x43, 0x53, 0x53, 0x43, 0x43, 0x34, 0x43, 0x33, 0x24, 0x33, - 0x24, 0x33, 0x33, 0x24, 0x43, 0x43, 0x34, 0x34, 0x23, 0x33, 0x32, 0x43, 0x24, 0x24, 0x33, 0x53, - 0x33, 0x43, 0x24, 0x24, 0x33, 0x23, 0x80, 0xba, 0xbe, 0xac, 0xaa, 0x99, 0x99, 0xaa, 0xaa, 0xcb, - 0xba, 0xcc, 0xcd, 0xbd, 0xcc, 0xbb, 0xac, 0xab, 0xbb, 0xcb, 0xbd, 0xcc, 0xcb, 0xbb, 0xac, 0xbb, - 0xdb, 0xca, 0xba, 0xbc, 0xbb, 0xcb, 0xbb, 0xbd, 0xcb, 0xcb, 0xcb, 0xca, 0xba, 0xbb, 0xbc, 0xbc, - 0xcb, 0xbb, 0xba, 0xbb, 0xcb, 0xbb, 0xcb, 0xbb, 0xbd, 0xcb, 0xbc, 0xac, 0xbb, 0xab, 0xba, 0x99, - 0x99, 0x88, 0xa9, 0xcc, 0xcc, 0xbc, 0xbc, 0xcb, 0xab, 0x9b, 0x99, 0x00, 0x22, 0x32, 0x32, 0x22, - 0x21, 0x11, 0x11, 0x43, 0x35, 0x45, 0x45, 0x53, 0x34, 0x33, 0x24, 0x13, 0x12, 0x22, 0x42, 0x24, - 0x23, 0x12, 0x01, 0x00, 0x18, 0x52, 0x55, 0x53, 0x33, 0x23, 0x80, 0xb9, 0xcc, 0xcc, 0xbc, 0xcd, - 0xbb, 0xcb, 0x9a, 0x89, 0x10, 0x10, 0x80, 0xb9, 0xce, 0xcc, 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xcb, - 0xba, 0xaa, 0xba, 0xcb, 0xbc, 0xbd, 0xbc, 0xcb, 0xcb, 0xba, 0xcb, 0xbb, 0xac, 0xbb, 0xbb, 0xbb, - 0xcb, 0xcb, 0xbc, 0xbc, 0xcb, 0xab, 0xab, 0xba, 0xaa, 0xbb, 0xbb, 0xbb, 0xaa, 0x99, 0xa9, 0xdc, - 0xcc, 0xbc, 0xab, 0x8a, 0x10, 0x33, 0x34, 0x33, 0x33, 0x54, 0x63, 0x53, 0x43, 0x33, 0x24, 0x43, - 0x32, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x43, 0x33, 0x25, 0x24, 0x33, 0x43, 0x43, 0x43, 0x43, - 0x32, 0x34, 0x33, 0x44, 0x32, 0x33, 0x34, 0x33, 0x43, 0x33, 0x44, 0x33, 0x35, 0x43, 0x32, 0x33, - 0x24, 0x23, 0x33, 0x34, 0x43, 0x43, 0x43, 0x43, 0x32, 0x43, 0x32, 0x33, 0x43, 0x32, 0x22, 0x12, - 0x12, 0x11, 0x00, 0x00, 0x22, 0x33, 0x13, 0x80, 0xca, 0xbc, 0xcc, 0xcc, 0xbd, 0xcc, 0xbc, 0xbc, - 0xcc, 0xba, 0xac, 0xba, 0xab, 0xbc, 0xbb, 0xbc, 0xbc, 0xdb, 0xbb, 0xbd, 0xbb, 0xbc, 0xbb, 0xdb, - 0xba, 0xbb, 0xbc, 0xba, 0xbc, 0xcb, 0xbc, 0xbc, 0xdb, 0xbb, 0xcb, 0xba, 0xaa, 0xab, 0xaa, 0xaa, - 0xa9, 0xba, 0xca, 0xbc, 0xbd, 0xac, 0xbb, 0xab, 0x9a, 0x08, 0x00, 0x20, 0x32, 0x36, 0x44, 0x43, - 0x23, 0x13, 0x22, 0x22, 0x53, 0x43, 0x34, 0x34, 0x33, 0x43, 0x53, 0x53, 0x43, 0x43, 0x23, 0x33, - 0x24, 0x43, 0x43, 0x34, 0x43, 0x43, 0x32, 0x43, 0x43, 0x34, 0x43, 0x33, 0x23, 0x33, 0x43, 0x33, - 0x34, 0x34, 0x43, 0x43, 0x32, 0x34, 0x34, 0x43, 0x24, 0x23, 0x22, 0x21, 0x11, 0x22, 0x33, 0x34, - 0x44, 0x33, 0x34, 0x43, 0x22, 0x33, 0x33, 0x44, 0x33, 0x43, 0x34, 0x53, 0x32, 0x33, 0x22, 0x23, - 0x33, 0x34, 0x34, 0x53, 0x33, 0x35, 0x25, 0x43, 0x32, 0x32, 0x43, 0x33, 0x34, 0x43, 0x43, 0x43, - 0x42, 0x22, 0x33, 0x33, 0x34, 0x33, 0x33, 0x34, 0x44, 0x44, 0x34, 0x43, 0x23, 0x23, 0x22, 0x22, - 0x32, 0x44, 0x44, 0x33, 0x24, 0x13, 0x12, 0x22, 0x22, 0x12, 0x11, 0x88, 0x88, 0x42, 0x46, 0x44, - 0x23, 0x80, 0xfb, 0xcc, 0xbc, 0xbb, 0xac, 0x9a, 0x9a, 0x99, 0x98, 0x98, 0x99, 0xcc, 0xcd, 0xcd, - 0xcb, 0xac, 0xbb, 0xaa, 0x9a, 0xaa, 0xbb, 0xbd, 0xcc, 0xbb, 0xcb, 0xac, 0xac, 0xbc, 0xcb, 0xcb, - 0xbb, 0xac, 0xbb, 0xbc, 0xcb, 0xbb, 0xbb, 0xac, 0xba, 0xca, 0xca, 0xbb, 0xad, 0xbb, 0xbb, 0x9a, - 0xaa, 0xca, 0xcb, 0xbc, 0xac, 0xba, 0xba, 0xbc, 0xcc, 0xcb, 0xbb, 0xbb, 0x9b, 0x88, 0x21, 0x23, - 0x11, 0x98, 0x89, 0x88, 0x99, 0xea, 0xdc, 0xcb, 0xab, 0x99, 0x10, 0x54, 0x36, 0x45, 0x43, 0x33, - 0x33, 0x33, 0x13, 0x11, 0x00, 0x21, 0x45, 0x44, 0x33, 0x22, 0x01, 0x88, 0xbb, 0xbe, 0xbd, 0xbc, - 0xab, 0xbb, 0xaa, 0x89, 0x00, 0x22, 0x13, 0xc9, 0xcf, 0xbd, 0xbd, 0xac, 0xac, 0xab, 0xba, 0xa9, - 0xaa, 0xdb, 0xdb, 0xbc, 0xcb, 0xac, 0xcb, 0xbb, 0xbc, 0xbd, 0xcb, 0xbb, 0xac, 0xbb, 0xba, 0xcb, - 0xcb, 0xbb, 0xbd, 0xbb, 0xbc, 0xac, 0xbb, 0xab, 0xbb, 0xba, 0xaa, 0xab, 0xbc, 0xbc, 0xbc, 0xbc, - 0xcb, 0xcb, 0xcb, 0xaa, 0xaa, 0x08, 0x20, 0x32, 0x24, 0x11, 0x80, 0x88, 0x10, 0x31, 0x44, 0x34, - 0x63, 0x44, 0x44, 0x34, 0x34, 0x43, 0x23, 0x43, 0x32, 0x43, 0x43, 0x43, 0x24, 0x24, 0x43, 0x43, - 0x43, 0x34, 0x33, 0x34, 0x33, 0x43, 0x43, 0x33, 0x34, 0x33, 0x24, 0x33, 0x33, 0x35, 0x44, 0x43, - 0x33, 0x34, 0x33, 0x34, 0x43, 0x32, 0x33, 0x33, 0x33, 0x33, 0x45, 0x43, 0x34, 0x24, 0x33, 0x23, - 0x22, 0x23, 0x43, 0x43, 0x22, 0x22, 0x22, 0x42, 0x34, 0x44, 0x32, 0x11, 0x90, 0xca, 0xcc, 0xdb, - 0xba, 0xbc, 0xbb, 0xcc, 0xbb, 0xab, 0xab, 0xaa, 0xb9, 0xca, 0xcb, 0xdb, 0xbb, 0xbd, 0xbd, 0xbc, - 0xdb, 0xba, 0xbb, 0xbb, 0xac, 0xbb, 0xcb, 0xbb, 0xbc, 0xbb, 0xbd, 0xcb, 0xdb, 0xbb, 0xbc, 0xac, - 0xbb, 0xbb, 0xba, 0xbb, 0xba, 0xba, 0xcb, 0xcb, 0xdb, 0xbb, 0xbb, 0xab, 0x88, 0x21, 0x33, 0x34, - 0x33, 0x23, 0x33, 0x44, 0x43, 0x12, 0x90, 0xa9, 0x09, 0x65, 0x45, 0x43, 0x33, 0x23, 0x23, 0x34, - 0x44, 0x44, 0x43, 0x43, 0x32, 0x23, 0x23, 0x34, 0x43, 0x43, 0x43, 0x42, 0x42, 0x43, 0x43, 0x43, - 0x33, 0x33, 0x32, 0x33, 0x24, 0x34, 0x53, 0x43, 0x33, 0x43, 0x22, 0x33, 0x33, 0x24, 0x23, 0x33, - 0x53, 0x33, 0x35, 0x44, 0x33, 0x34, 0x22, 0x12, 0x00, 0x00, 0x31, 0x44, 0x43, 0x24, 0x24, 0x23, - 0x33, 0x22, 0x12, 0x11, 0x11, 0x42, 0x46, 0x44, 0x53, 0x33, 0x33, 0x22, 0x12, 0x10, 0x21, 0x43, - 0x34, 0x34, 0x44, 0x42, 0x42, 0x32, 0x43, 0x32, 0x24, 0x22, 0x11, 0x11, 0x22, 0x34, 0x44, 0x43, - 0x34, 0x53, 0x33, 0x44, 0x32, 0x43, 0x32, 0x33, 0x22, 0x22, 0x11, 0x01, 0x21, 0x32, 0x25, 0x43, - 0x33, 0x34, 0x33, 0x11, 0xa8, 0xdc, 0xbd, 0xcb, 0xcb, 0xba, 0xdb, 0xbc, 0xbd, 0xbd, 0xbb, 0xba, - 0xab, 0xaa, 0xcb, 0xdc, 0xcb, 0xcb, 0xcb, 0xba, 0xba, 0xbb, 0xbc, 0xbd, 0xcc, 0xcb, 0xcb, 0xcb, - 0xdb, 0xca, 0xba, 0xbb, 0xbb, 0xbb, 0xab, 0xbb, 0xbb, 0xcc, 0xcb, 0xcc, 0xcb, 0xcb, 0xbb, 0xcb, - 0xba, 0xaa, 0xba, 0xba, 0xcb, 0xcb, 0xcb, 0xbb, 0xbb, 0xcb, 0xcb, 0xbb, 0xbb, 0xba, 0x9a, 0x9a, - 0xba, 0xdc, 0xcc, 0xcb, 0xbb, 0xbc, 0xba, 0xa9, 0xaa, 0x99, 0x11, 0x45, 0x35, 0x34, 0x33, 0x33, - 0x33, 0x43, 0x34, 0x44, 0x32, 0x33, 0x33, 0x34, 0x44, 0x44, 0x34, 0x32, 0x11, 0x88, 0xba, 0xab, - 0xaa, 0xa9, 0xaa, 0xac, 0x9b, 0x09, 0x42, 0x36, 0x33, 0xc0, 0xde, 0xcd, 0xcb, 0xba, 0xab, 0xa9, - 0x99, 0x9a, 0xba, 0xbb, 0xcd, 0xbc, 0xce, 0xdb, 0xcb, 0xbb, 0xac, 0xbb, 0xaa, 0xba, 0xca, 0xcb, - 0xdb, 0xbb, 0xbc, 0xbc, 0xac, 0xcb, 0xbb, 0xbb, 0xbc, 0xca, 0xaa, 0xab, 0xbb, 0xbb, 0xcb, 0xcb, - 0xbb, 0xdb, 0xbb, 0xbc, 0xbc, 0xbb, 0xac, 0xaa, 0x99, 0x88, 0x10, 0x22, 0x33, 0x23, 0x11, 0xb9, - 0xdb, 0xab, 0x9b, 0x28, 0x65, 0x45, 0x44, 0x43, 0x34, 0x33, 0x34, 0x34, 0x42, 0x33, 0x53, 0x43, - 0x43, 0x33, 0x53, 0x33, 0x44, 0x33, 0x43, 0x24, 0x32, 0x33, 0x34, 0x43, 0x43, 0x43, 0x43, 0x33, - 0x34, 0x33, 0x25, 0x24, 0x33, 0x24, 0x33, 0x32, 0x24, 0x33, 0x24, 0x24, 0x33, 0x34, 0x24, 0x24, - 0x43, 0x42, 0x33, 0x43, 0x32, 0x23, 0x23, 0x23, 0x33, 0x23, 0x33, 0x24, 0x23, 0x33, 0x32, 0x33, - 0x33, 0xb0, 0xde, 0xcc, 0xbc, 0xab, 0xbb, 0xbb, 0xbd, 0xbd, 0xbc, 0xbc, 0xcb, 0xcb, 0xcb, 0xbb, - 0xbc, 0xcb, 0xbb, 0xbb, 0xcb, 0xcb, 0xbc, 0xbd, 0xcb, 0xac, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xcb, - 0xbc, 0xca, 0xba, 0xbb, 0xcb, 0xcb, 0xba, 0xbb, 0xbb, 0xba, 0xca, 0xba, 0xcc, 0xba, 0xac, 0xaa, - 0xa9, 0x88, 0x88, 0x88, 0xa9, 0xaa, 0xab, 0x99, 0x30, 0x55, 0x44, 0x34, 0x35, 0x33, 0x24, 0x22, - 0x21, 0x22, 0x43, 0x44, 0x53, 0x34, 0x53, 0x33, 0x34, 0x43, 0x33, 0x43, 0x33, 0x43, 0x32, 0x34, - 0x53, 0x43, 0x43, 0x34, 0x33, 0x25, 0x33, 0x33, 0x43, 0x33, 0x33, 0x34, 0x43, 0x33, 0x34, 0x34, - 0x34, 0x34, 0x43, 0x23, 0x33, 0x33, 0x22, 0x22, 0x33, 0x34, 0x45, 0x33, 0x24, 0x24, 0x33, 0x24, - 0x23, 0x32, 0x32, 0x33, 0x43, 0x32, 0x43, 0x34, 0x44, 0x43, 0x43, 0x33, 0x34, 0x34, 0x43, 0x33, - 0x43, 0x32, 0x24, 0x32, 0x12, 0x32, 0x32, 0x35, 0x35, 0x34, 0x34, 0x34, 0x34, 0x33, 0x34, 0x33, - 0x24, 0x33, 0x24, 0x43, 0x33, 0x35, 0x34, 0x43, 0x32, 0x22, 0x22, 0x33, 0x35, 0x33, 0x34, 0x34, - 0x34, 0x43, 0x34, 0x33, 0x33, 0x13, 0x98, 0xcc, 0xbd, 0xba, 0xaa, 0x9a, 0xaa, 0xa9, 0xab, 0xab, - 0xbb, 0xdd, 0xdc, 0xbd, 0xbc, 0xbc, 0xac, 0xab, 0xbb, 0xbc, 0xbd, 0xcc, 0xcb, 0xbb, 0xcb, 0xbb, - 0xbc, 0xcb, 0xbc, 0xbb, 0xcb, 0xcb, 0xca, 0xba, 0xbc, 0xbc, 0xac, 0xcb, 0xbb, 0xcb, 0xcb, 0xbb, - 0xbc, 0xbb, 0xbb, 0xbb, 0xcb, 0xcb, 0xab, 0xbc, 0xcb, 0xcb, 0xbc, 0x7c, 0x02, 0x00, 0x22, 0x56, - 0xf7, 0x02, 0x01, 0x00, 0xe9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x00, 0xa8, 0x9a, 0xa0, 0x2d, - 0xfc, 0xf4, 0x9f, 0x16, 0x80, 0xa0, 0xaa, 0x19, 0x35, 0x80, 0xab, 0x10, 0x12, 0xcc, 0x71, 0x84, - 0x9c, 0x10, 0x00, 0x93, 0x29, 0xfd, 0x41, 0xbb, 0x47, 0x9a, 0x98, 0x40, 0xa0, 0x0a, 0x43, 0xa0, - 0x9e, 0x32, 0x98, 0xa4, 0x1f, 0xa3, 0x28, 0xc1, 0x1b, 0x14, 0x90, 0x9a, 0x11, 0xb0, 0x2a, 0x14, - 0xaa, 0x10, 0xa8, 0xad, 0x20, 0x13, 0xa9, 0x9a, 0x39, 0xa4, 0x9d, 0x52, 0xd8, 0x9a, 0x10, 0x14, - 0xdc, 0x08, 0x80, 0x80, 0x88, 0x08, 0x88, 0x88, 0x89, 0x88, 0x88, 0x89, 0x88, 0x08, 0x08, 0x00, - 0x11, 0x11, 0x31, 0x32, 0x21, 0x32, 0x52, 0xd3, 0x77, 0x77, 0xf2, 0x1a, 0x33, 0x82, 0xbc, 0x21, - 0x42, 0xa1, 0x19, 0x12, 0xa8, 0x51, 0x92, 0x62, 0x92, 0x88, 0x00, 0x08, 0x32, 0x45, 0x04, 0xbd, - 0x52, 0x01, 0x88, 0x0b, 0x24, 0x08, 0x88, 0x18, 0x11, 0x80, 0x88, 0x10, 0x80, 0x88, 0x89, 0x99, - 0xa9, 0xbb, 0xbc, 0xcb, 0xbc, 0xbc, 0xdb, 0x8b, 0xff, 0x2b, 0x10, 0xf8, 0x0f, 0x92, 0x2a, 0xb1, - 0xab, 0x8c, 0x02, 0xac, 0x01, 0x9a, 0xfb, 0x0a, 0x02, 0xab, 0x19, 0xf0, 0x8d, 0x20, 0xb1, 0x9d, - 0x08, 0x02, 0xcc, 0x10, 0x9a, 0x11, 0xcd, 0x42, 0xa0, 0xbb, 0x1a, 0x15, 0x89, 0xaa, 0x18, 0x10, - 0x81, 0x9d, 0x91, 0x0a, 0x11, 0x10, 0x10, 0x11, 0x11, 0x12, 0x22, 0x33, 0x44, 0x33, 0x34, 0x35, - 0x43, 0x34, 0x43, 0x43, 0x33, 0x34, 0x43, 0x43, 0x43, 0x21, 0x23, 0x77, 0xa0, 0x51, 0x02, 0x08, - 0x12, 0x31, 0x18, 0x37, 0x0b, 0x35, 0x00, 0x1a, 0x15, 0x1a, 0x37, 0x98, 0x9b, 0x54, 0x82, 0x89, - 0x31, 0x13, 0xcb, 0x21, 0x22, 0x83, 0x29, 0xd2, 0x71, 0xb3, 0x19, 0x82, 0x31, 0xcb, 0x62, 0x01, - 0xc9, 0x2c, 0x06, 0x99, 0x9a, 0x36, 0xaa, 0x09, 0x08, 0x90, 0x29, 0x80, 0x90, 0xbf, 0x42, 0x89, - 0xa2, 0x8f, 0xb2, 0x2a, 0xa2, 0x0c, 0x00, 0xa0, 0x8e, 0x02, 0x9d, 0x92, 0x1b, 0xb3, 0xac, 0x8c, - 0x05, 0x9b, 0xb0, 0x8a, 0x00, 0xba, 0xd9, 0x2c, 0xb2, 0x0d, 0xc9, 0x1a, 0x04, 0xbc, 0x88, 0x19, - 0xf8, 0x1b, 0x81, 0x99, 0xbe, 0x10, 0x11, 0xdb, 0x21, 0xba, 0xda, 0x61, 0xd8, 0x8a, 0x00, 0x10, - 0xb1, 0x8b, 0x90, 0xba, 0x4b, 0xf1, 0x39, 0xd8, 0x98, 0x5a, 0x93, 0xcb, 0x19, 0x92, 0x90, 0x1c, - 0xb3, 0x1c, 0xbc, 0x05, 0x0d, 0x13, 0xb8, 0x8e, 0x23, 0x81, 0xdb, 0x09, 0x11, 0x88, 0x91, 0x1e, - 0x03, 0x8b, 0xb0, 0x68, 0xc9, 0x41, 0x00, 0xa8, 0xaa, 0x0d, 0x33, 0x12, 0x89, 0xdf, 0x50, 0xa1, - 0x98, 0x2a, 0x16, 0x8a, 0xa8, 0x19, 0x31, 0x84, 0xcb, 0x1a, 0x35, 0x98, 0x19, 0x11, 0xca, 0x40, - 0x12, 0x15, 0xaa, 0xd9, 0x79, 0x04, 0x98, 0x8a, 0x43, 0x81, 0x90, 0x1a, 0x24, 0x82, 0x89, 0x41, - 0x03, 0x72, 0xa0, 0x09, 0x73, 0x83, 0x0b, 0x23, 0x18, 0x22, 0x44, 0xc0, 0x39, 0x34, 0x33, 0xa9, - 0x42, 0x81, 0x34, 0x28, 0x17, 0x3b, 0x94, 0x51, 0x90, 0x12, 0x19, 0x04, 0x30, 0x17, 0x9a, 0x82, - 0x5b, 0x07, 0xa8, 0x1a, 0x26, 0x89, 0x9a, 0x33, 0x80, 0x88, 0x09, 0x43, 0x81, 0xb9, 0x2b, 0x37, - 0x82, 0xbc, 0x32, 0x08, 0x83, 0x31, 0xdf, 0x51, 0x91, 0x89, 0x18, 0x81, 0x9a, 0x28, 0xb1, 0x72, - 0xc3, 0xac, 0x30, 0x13, 0xca, 0x28, 0xc0, 0x11, 0x0a, 0xf0, 0x2e, 0x04, 0xca, 0x2b, 0x15, 0xca, - 0x19, 0x12, 0xba, 0x0a, 0x92, 0x8b, 0x10, 0xb1, 0x9f, 0x88, 0xac, 0xa9, 0x28, 0xa4, 0xaf, 0x90, - 0x0a, 0xc1, 0x9c, 0x29, 0xb1, 0x9c, 0xd8, 0x8d, 0x22, 0xc9, 0xcc, 0x38, 0xc2, 0x0a, 0xb0, 0xbb, - 0x08, 0x04, 0xcd, 0x99, 0x00, 0xc8, 0x2a, 0xe2, 0x8c, 0x90, 0x30, 0xea, 0x89, 0x09, 0x11, 0xb8, - 0xbc, 0x89, 0x09, 0x21, 0xd2, 0x9e, 0x09, 0x12, 0xac, 0x01, 0xa8, 0x9c, 0x91, 0x09, 0x88, 0x25, - 0xba, 0x9f, 0x24, 0x99, 0xa0, 0x29, 0x91, 0x52, 0x81, 0xdb, 0x1b, 0x27, 0x00, 0x80, 0x31, 0xa1, - 0x1a, 0x14, 0x89, 0x73, 0x05, 0x98, 0x21, 0x12, 0x10, 0x44, 0x02, 0x88, 0x62, 0x24, 0x88, 0x18, - 0x44, 0x22, 0x21, 0x01, 0x30, 0x35, 0x22, 0x34, 0x23, 0x12, 0x63, 0x24, 0x23, 0x10, 0x44, 0x33, - 0x11, 0x71, 0x24, 0x00, 0x31, 0x23, 0x02, 0x72, 0x14, 0x20, 0x22, 0x22, 0x80, 0x51, 0x23, 0x53, - 0x22, 0x01, 0x9a, 0x52, 0x34, 0x12, 0x18, 0x02, 0x59, 0x07, 0xa9, 0x28, 0x35, 0xb8, 0x9c, 0x51, - 0x82, 0x9c, 0x31, 0x02, 0xeb, 0x28, 0xb1, 0x1b, 0x31, 0xf2, 0x8c, 0x00, 0x00, 0xab, 0x11, 0x9a, - 0xc3, 0xcf, 0x11, 0x18, 0xfa, 0x3d, 0x81, 0x81, 0xae, 0x00, 0x30, 0xd1, 0x0b, 0x81, 0x09, 0xaa, - 0x10, 0x88, 0xa1, 0x8e, 0xd9, 0x29, 0x92, 0x0b, 0xba, 0x08, 0x88, 0x37, 0xef, 0x20, 0x90, 0x09, - 0xa9, 0x02, 0x9c, 0x33, 0xa8, 0xdb, 0x20, 0xe0, 0x1b, 0x14, 0xa2, 0xaf, 0x05, 0x89, 0xca, 0x32, - 0x08, 0xa2, 0x0d, 0x99, 0x41, 0x91, 0xad, 0x10, 0x21, 0xb0, 0x8c, 0x10, 0xc0, 0x68, 0xb2, 0x0d, - 0xa1, 0x08, 0x09, 0x23, 0xeb, 0x1a, 0x84, 0x89, 0x99, 0x08, 0x1a, 0x23, 0xd0, 0xbf, 0x23, 0x19, - 0xb1, 0xa9, 0xbb, 0x73, 0xd1, 0x9b, 0x63, 0xa1, 0x8b, 0x82, 0x99, 0x8b, 0x26, 0x99, 0xca, 0x51, - 0xa8, 0x12, 0x9c, 0x00, 0x0c, 0x27, 0xda, 0x18, 0x22, 0xb9, 0x89, 0x3c, 0x07, 0x9b, 0x82, 0x0b, - 0x23, 0x00, 0x89, 0xaa, 0x91, 0x9f, 0x73, 0x94, 0x9d, 0x00, 0x33, 0xe8, 0x0a, 0x31, 0x83, 0xab, - 0x8a, 0x41, 0x11, 0xb8, 0x4a, 0x13, 0xe9, 0x0c, 0x45, 0x91, 0x9c, 0x00, 0x22, 0x80, 0x9b, 0x63, - 0x98, 0x01, 0x8c, 0x34, 0x90, 0x89, 0x10, 0x63, 0x82, 0x0a, 0xc0, 0x6a, 0x84, 0x1a, 0x12, 0x18, - 0x90, 0x30, 0x04, 0x8a, 0x55, 0x90, 0x13, 0xad, 0x42, 0x01, 0x02, 0x09, 0xa8, 0x71, 0x86, 0x88, - 0x0b, 0x25, 0x9b, 0x23, 0x11, 0xbc, 0x34, 0xa8, 0x89, 0x72, 0xb2, 0x2c, 0x06, 0xba, 0x19, 0x53, - 0xb8, 0x38, 0xc2, 0x0b, 0x32, 0x13, 0xec, 0x29, 0x12, 0x99, 0x89, 0x20, 0x08, 0xb8, 0x2d, 0x15, - 0xb8, 0x8d, 0x03, 0x18, 0xe2, 0x8d, 0x22, 0x88, 0xa9, 0x8b, 0x62, 0xd0, 0x28, 0xc8, 0x09, 0x09, - 0x81, 0xcc, 0x58, 0xa2, 0x9d, 0x10, 0x80, 0x98, 0x9d, 0x81, 0xaa, 0x02, 0xab, 0x80, 0xbf, 0x9b, - 0x02, 0x8b, 0x81, 0x03, 0xff, 0x1d, 0x92, 0xab, 0x00, 0x08, 0x9a, 0x03, 0xcf, 0x88, 0x80, 0xb9, - 0x50, 0xe0, 0x0a, 0x30, 0xc3, 0x9f, 0x11, 0x80, 0x9a, 0x28, 0xa1, 0x8a, 0xa0, 0x0a, 0x33, 0xf8, - 0x8b, 0x03, 0x89, 0xb0, 0x6a, 0xb0, 0x8a, 0x48, 0x92, 0x0a, 0x21, 0x02, 0xee, 0x58, 0x82, 0x8a, - 0x8a, 0x37, 0xb9, 0x19, 0x51, 0xa3, 0x8c, 0x80, 0x42, 0x91, 0x09, 0x11, 0x83, 0x59, 0x87, 0x8b, - 0x15, 0x89, 0x98, 0x45, 0xb9, 0x30, 0x02, 0x81, 0x9d, 0x27, 0x80, 0x88, 0x28, 0x00, 0x02, 0x09, - 0x24, 0x44, 0xa0, 0x30, 0xc8, 0x70, 0x84, 0x0a, 0x12, 0x91, 0x2b, 0x47, 0x88, 0x09, 0x33, 0xc9, - 0x62, 0x81, 0x90, 0x2a, 0x17, 0x09, 0x80, 0x09, 0x43, 0x03, 0x9a, 0x33, 0xaa, 0x24, 0x72, 0xb1, - 0x1c, 0x04, 0x18, 0x12, 0x10, 0xaa, 0x45, 0xaa, 0x08, 0x54, 0xc9, 0x29, 0x14, 0xb8, 0x0a, 0x27, - 0xc8, 0x1a, 0x11, 0x80, 0x88, 0x98, 0xab, 0x73, 0xa3, 0xac, 0x19, 0x04, 0x9a, 0x8a, 0x13, 0xad, - 0x81, 0x89, 0xc9, 0x40, 0xb0, 0xcb, 0x8e, 0x14, 0xab, 0xa8, 0x49, 0xb1, 0x2b, 0xfa, 0x2a, 0xa8, - 0xb1, 0x1d, 0xd1, 0x08, 0xcb, 0x42, 0xca, 0x88, 0x9d, 0x33, 0xa9, 0xda, 0x0c, 0x82, 0xaa, 0x40, - 0xf0, 0x1c, 0x93, 0x9a, 0x99, 0x10, 0xaa, 0x20, 0xd9, 0xae, 0x33, 0xc0, 0x9b, 0x89, 0x03, 0xaf, - 0x22, 0xaa, 0xb0, 0x8d, 0x00, 0x24, 0xdd, 0x10, 0x80, 0x88, 0x8a, 0x80, 0x19, 0x95, 0x9f, 0x00, - 0x31, 0xba, 0x10, 0xaa, 0x88, 0x64, 0xb0, 0x8b, 0x20, 0x03, 0xc9, 0x9a, 0x28, 0x34, 0x84, 0xbf, - 0x21, 0x28, 0x04, 0x9a, 0xaa, 0x42, 0xa8, 0x22, 0x99, 0x90, 0x70, 0x85, 0x9d, 0x21, 0x12, 0x99, - 0xbb, 0x61, 0xa3, 0x1c, 0x93, 0x89, 0x49, 0x27, 0x99, 0xc9, 0x19, 0x42, 0x14, 0xc8, 0x8a, 0x31, - 0x15, 0xd9, 0x29, 0x02, 0x40, 0x13, 0xcb, 0x18, 0x24, 0x80, 0x00, 0x62, 0x23, 0xc9, 0x2b, 0x54, - 0x84, 0x9a, 0x18, 0x25, 0x18, 0x03, 0x29, 0xa1, 0x60, 0x83, 0x58, 0x06, 0xaa, 0x11, 0x33, 0xb1, - 0x19, 0x40, 0x85, 0x50, 0xa1, 0x01, 0xab, 0x15, 0x31, 0x93, 0xbc, 0x2a, 0x37, 0xc0, 0x0a, 0x12, - 0x11, 0xcb, 0x48, 0x03, 0xfa, 0x0c, 0x02, 0x82, 0x9c, 0x81, 0x00, 0x88, 0x00, 0xfb, 0x8c, 0x33, - 0xd9, 0x9c, 0x33, 0xd8, 0x1a, 0x12, 0xaa, 0x9b, 0x98, 0x89, 0x32, 0xf8, 0x8d, 0x31, 0xa0, 0xbd, - 0x50, 0xa1, 0x0b, 0x12, 0xd9, 0x39, 0x13, 0xd9, 0x8c, 0x33, 0xb8, 0x29, 0x17, 0xc9, 0x3a, 0x14, - 0x9a, 0xbb, 0x64, 0x80, 0x13, 0xbb, 0x01, 0x22, 0xba, 0x71, 0x84, 0xba, 0x49, 0x04, 0x89, 0x24, - 0xa9, 0x8b, 0x35, 0x90, 0x9b, 0x37, 0xda, 0x20, 0x82, 0x80, 0x09, 0xa8, 0x1a, 0x44, 0x82, 0xcf, - 0x31, 0x01, 0x90, 0x8e, 0x01, 0x08, 0x12, 0xcb, 0x0a, 0x41, 0xc0, 0x0b, 0x02, 0xc9, 0x8c, 0x35, - 0xb8, 0xdb, 0x1a, 0x23, 0x99, 0xdb, 0x19, 0x91, 0x00, 0xbf, 0x23, 0xac, 0xa9, 0x79, 0xc3, 0x9c, - 0x22, 0xa0, 0x9c, 0x10, 0x81, 0x99, 0xb0, 0x8f, 0x33, 0xb9, 0xda, 0x60, 0xa2, 0x8a, 0x18, 0xa1, - 0x8d, 0x83, 0x1b, 0x03, 0xa8, 0x9c, 0x66, 0xb1, 0x8a, 0x11, 0x01, 0x89, 0x81, 0x09, 0x44, 0x90, - 0x32, 0x10, 0xc0, 0x7a, 0x05, 0x38, 0xf1, 0x1a, 0x23, 0x10, 0x98, 0x42, 0x81, 0xa0, 0x71, 0xa3, - 0x2a, 0xb1, 0x30, 0x65, 0xa2, 0x8e, 0x32, 0x82, 0x09, 0x90, 0x20, 0x03, 0x01, 0x8c, 0x25, 0xb9, - 0x09, 0x55, 0xa2, 0x1a, 0x13, 0xaa, 0xab, 0x55, 0xb0, 0x91, 0x2c, 0x06, 0x08, 0xa9, 0x11, 0xac, - 0x98, 0x72, 0x81, 0x98, 0xba, 0x39, 0x05, 0xab, 0xbc, 0x72, 0x83, 0xc9, 0x8a, 0x03, 0xca, 0x0b, - 0x22, 0x24, 0xdc, 0x08, 0x11, 0xa0, 0xae, 0x20, 0xa2, 0x8c, 0x00, 0x22, 0xce, 0x18, 0x01, 0xa0, - 0xac, 0x08, 0x80, 0x98, 0xad, 0x11, 0xd8, 0xbb, 0x9a, 0x72, 0xa3, 0xaf, 0x8a, 0x32, 0xb8, 0x9b, - 0xb9, 0x0b, 0x90, 0xb9, 0x1e, 0xe2, 0x9d, 0x00, 0x08, 0xab, 0x88, 0xbb, 0xa9, 0x71, 0xf3, 0x8e, - 0x91, 0x18, 0x81, 0x09, 0x99, 0xa9, 0x1b, 0xa1, 0x11, 0xef, 0x51, 0x91, 0x8a, 0x8b, 0x31, 0x80, - 0x20, 0x93, 0xaa, 0x9c, 0x44, 0x15, 0xbb, 0x10, 0x72, 0x82, 0x08, 0x89, 0x34, 0x01, 0x98, 0x62, - 0x25, 0xa8, 0x19, 0x37, 0x98, 0x11, 0x28, 0x01, 0x46, 0xa0, 0x18, 0x42, 0x01, 0x20, 0x25, 0x88, - 0x40, 0x02, 0x00, 0x71, 0x02, 0x99, 0x53, 0x01, 0x98, 0x41, 0x81, 0x72, 0xa2, 0x0a, 0x09, 0x35, - 0x99, 0x98, 0x51, 0x92, 0x99, 0x9a, 0x62, 0xd0, 0x89, 0x09, 0x35, 0xb9, 0x8b, 0xb9, 0x9c, 0x40, - 0xb2, 0xbd, 0x1a, 0xa2, 0xbf, 0x18, 0xb1, 0x9f, 0x81, 0x18, 0xc0, 0x9d, 0x99, 0x29, 0x91, 0x8b, - 0xec, 0x09, 0x99, 0x82, 0xbb, 0xba, 0x1a, 0xfa, 0x8a, 0x00, 0xa9, 0xbe, 0x10, 0x99, 0xb9, 0x8e, - 0x13, 0x9a, 0xc9, 0x1c, 0x02, 0xac, 0x89, 0x72, 0xb0, 0x1a, 0xa9, 0x32, 0x33, 0xd8, 0x8c, 0x32, - 0xb8, 0x19, 0x75, 0xa3, 0x9d, 0x40, 0x15, 0xaa, 0x89, 0x32, 0x11, 0x02, 0x9a, 0x98, 0x71, 0x82, - 0x8b, 0x47, 0x90, 0x09, 0x10, 0x22, 0x8a, 0x92, 0x1e, 0x45, 0x92, 0x9e, 0x20, 0x11, 0x81, 0x89, - 0x82, 0x5a, 0x85, 0x8c, 0x21, 0x81, 0xac, 0x35, 0x98, 0x88, 0x32, 0xd9, 0x28, 0x03, 0xb8, 0x0a, - 0x23, 0x08, 0x26, 0xb0, 0x0a, 0x55, 0xb1, 0x8f, 0x43, 0xa0, 0x9c, 0x30, 0x21, 0xc0, 0x1b, 0x22, - 0x91, 0x8d, 0x34, 0xdb, 0x38, 0x11, 0xe0, 0x1c, 0x04, 0x89, 0x88, 0x18, 0x08, 0x13, 0xdf, 0x28, - 0x02, 0xc8, 0x1a, 0x13, 0x89, 0x90, 0xaa, 0x0a, 0x33, 0xfc, 0x28, 0x18, 0xa2, 0x0e, 0x92, 0x4a, - 0xb2, 0x8d, 0x10, 0x23, 0xab, 0x31, 0xdb, 0x09, 0x72, 0x05, 0xbb, 0x09, 0x54, 0xb0, 0x1a, 0x34, - 0xc8, 0x19, 0x33, 0x11, 0x21, 0xd9, 0x28, 0x54, 0x91, 0x9b, 0x46, 0x81, 0x88, 0x41, 0xa2, 0x49, - 0x04, 0xa8, 0x3a, 0x37, 0xa8, 0x28, 0x80, 0x34, 0xa0, 0x28, 0x44, 0x93, 0x8b, 0x13, 0x48, 0xb0, - 0x71, 0x03, 0x31, 0xc9, 0x8a, 0x72, 0x84, 0x9b, 0x00, 0x20, 0x10, 0x13, 0xdf, 0x38, 0x82, 0xa9, - 0x1a, 0x86, 0x9b, 0x81, 0xaa, 0x30, 0x82, 0xfd, 0x0a, 0x01, 0x90, 0x9e, 0x88, 0x08, 0xa1, 0xac, - 0x19, 0xa0, 0xcc, 0x29, 0xd2, 0xaf, 0x01, 0x98, 0x99, 0x89, 0xb9, 0x9b, 0x98, 0x09, 0xf8, 0xae, - 0x09, 0x01, 0xb8, 0xdb, 0x19, 0xf9, 0x19, 0x99, 0x23, 0xcd, 0x89, 0x19, 0x92, 0xaa, 0x99, 0xca, - 0x1a, 0x42, 0xc0, 0xad, 0x98, 0x89, 0xa9, 0x29, 0x23, 0xd9, 0xaf, 0x19, 0x53, 0xc0, 0x8c, 0x20, - 0x14, 0xcd, 0x18, 0x02, 0x98, 0x8a, 0x21, 0xa1, 0x8d, 0x13, 0x00, 0xe8, 0x0a, 0x03, 0x34, 0xc9, - 0xca, 0x39, 0x85, 0x28, 0x80, 0xb0, 0x1e, 0x23, 0x10, 0x91, 0x2b, 0x87, 0x29, 0xb4, 0x1d, 0x26, - 0x90, 0x99, 0x58, 0x83, 0x09, 0x12, 0x21, 0xa1, 0x6b, 0x14, 0x01, 0x89, 0x63, 0x14, 0xba, 0x52, - 0x11, 0x10, 0x33, 0x33, 0x98, 0x52, 0x11, 0x35, 0x11, 0x30, 0x35, 0x33, 0x88, 0x46, 0x89, 0x34, - 0x21, 0xa1, 0x71, 0xa1, 0x48, 0x23, 0x93, 0x9c, 0x41, 0x32, 0x84, 0x8c, 0x91, 0x5a, 0x92, 0x89, - 0x30, 0x85, 0x8c, 0x02, 0x1b, 0xc0, 0x8b, 0xc8, 0x39, 0x06, 0xdd, 0x0a, 0x32, 0xc8, 0xbc, 0x38, - 0xc0, 0x89, 0x89, 0xc9, 0x9d, 0x08, 0x00, 0xcb, 0x9b, 0xbb, 0x02, 0xbf, 0xb9, 0x1b, 0xc3, 0x9f, - 0x08, 0x92, 0xad, 0x80, 0x99, 0xb8, 0x2a, 0xc0, 0x0b, 0xc9, 0x8c, 0x08, 0x16, 0xdb, 0x09, 0x82, - 0x9a, 0xa8, 0x21, 0x80, 0x02, 0x1b, 0x75, 0xd3, 0x0b, 0x12, 0x11, 0x89, 0x13, 0x22, 0x00, 0x26, - 0x40, 0x85, 0x0c, 0x04, 0x48, 0x05, 0x99, 0x20, 0x03, 0x21, 0x10, 0x35, 0xa9, 0x73, 0xa0, 0x21, - 0x81, 0x26, 0x9b, 0x36, 0x90, 0xa9, 0x78, 0x93, 0x18, 0xa0, 0x0a, 0x90, 0x73, 0x90, 0x08, 0x20, - 0x83, 0xcc, 0x28, 0x01, 0x80, 0x0a, 0xa0, 0x31, 0xfc, 0x2b, 0x34, 0xa9, 0xca, 0x9d, 0x21, 0x94, - 0x8c, 0xa3, 0x8c, 0xd8, 0x58, 0xa3, 0x9b, 0x90, 0x88, 0x9c, 0x24, 0xfb, 0x19, 0x11, 0x90, 0x9b, - 0x90, 0x28, 0x98, 0x82, 0x0e, 0x95, 0x9c, 0x9b, 0x64, 0xb1, 0xac, 0x42, 0x81, 0x89, 0x99, 0x28, - 0x00, 0x23, 0xfa, 0x8b, 0x48, 0x04, 0x18, 0xd9, 0x49, 0xb2, 0x20, 0xba, 0x43, 0x8b, 0x36, 0xa8, - 0x99, 0xab, 0x55, 0x12, 0xc9, 0x2a, 0x03, 0x24, 0xdc, 0x20, 0x10, 0x90, 0x31, 0x23, 0xcb, 0x41, - 0x02, 0xcb, 0x40, 0x14, 0x11, 0x20, 0xb0, 0x48, 0x53, 0x12, 0x92, 0x0d, 0x27, 0x10, 0x98, 0x18, - 0x14, 0x21, 0x32, 0xe8, 0x49, 0x35, 0xb0, 0x2b, 0x04, 0x29, 0x82, 0x40, 0xa1, 0x72, 0xd0, 0x39, - 0x03, 0xd8, 0x0b, 0x25, 0x08, 0xa1, 0x2a, 0xe9, 0x10, 0x08, 0x91, 0xad, 0x99, 0x28, 0xa4, 0xad, - 0xdb, 0x00, 0xab, 0x25, 0xfb, 0x8a, 0x90, 0x8c, 0x00, 0xba, 0x9c, 0x08, 0xb9, 0xcb, 0xbb, 0xca, - 0xbd, 0x18, 0xc9, 0xac, 0x08, 0xae, 0xa8, 0x1a, 0xe0, 0x0a, 0xcb, 0x43, 0xc9, 0x9a, 0x98, 0x98, - 0x21, 0xd8, 0x8c, 0x11, 0x00, 0xad, 0x33, 0x8a, 0xc2, 0x7b, 0xa2, 0x1a, 0x12, 0x11, 0x18, 0x43, - 0x01, 0x04, 0x28, 0x32, 0x17, 0x48, 0x05, 0x08, 0x81, 0x63, 0x12, 0x32, 0x90, 0x72, 0x22, 0x92, - 0x3c, 0x17, 0x00, 0x88, 0x41, 0x81, 0x31, 0x01, 0x21, 0x42, 0x81, 0x60, 0x13, 0x10, 0x98, 0x55, - 0x98, 0x21, 0x28, 0x04, 0x18, 0x00, 0x10, 0x10, 0x89, 0x74, 0x92, 0x8a, 0x24, 0xa0, 0x0d, 0x15, - 0xab, 0x41, 0xa2, 0xac, 0x00, 0x11, 0xb9, 0x29, 0xa2, 0x9f, 0x23, 0xba, 0x99, 0x31, 0xf2, 0xae, - 0x99, 0x52, 0xc0, 0x08, 0x99, 0x81, 0x8d, 0x03, 0x8c, 0x81, 0xa9, 0xa9, 0x30, 0xfc, 0x29, 0x10, - 0xa1, 0x8e, 0x91, 0x3b, 0xc3, 0x8b, 0xa0, 0x89, 0x3b, 0x87, 0x9d, 0x00, 0x18, 0xc0, 0x0a, 0x00, - 0xd2, 0x0d, 0xa0, 0x1c, 0x25, 0xc0, 0x8d, 0x10, 0x00, 0x98, 0x8a, 0x90, 0x10, 0xbc, 0xa2, 0x3d, - 0xd4, 0x0c, 0x01, 0x91, 0xbc, 0x38, 0x82, 0xd9, 0x0c, 0x82, 0x32, 0xed, 0x10, 0xa9, 0x11, 0x89, - 0xb0, 0x9c, 0x11, 0x91, 0x9d, 0x90, 0x40, 0xd9, 0x88, 0x29, 0x95, 0x8e, 0x04, 0x8a, 0x98, 0x2a, - 0x93, 0x99, 0xad, 0x01, 0x2b, 0x17, 0x8c, 0x12, 0x80, 0xda, 0x48, 0x82, 0x99, 0x0a, 0x17, 0xab, - 0x03, 0x1d, 0x83, 0x1b, 0x98, 0x51, 0x05, 0x9f, 0x12, 0x08, 0x90, 0x10, 0x8a, 0x14, 0x18, 0xda, - 0x38, 0x91, 0x0b, 0x35, 0x98, 0xaa, 0x53, 0xa9, 0x02, 0x5a, 0xd0, 0x51, 0xa8, 0x01, 0x1a, 0x94, - 0x1c, 0x06, 0xab, 0x11, 0x32, 0xcc, 0x22, 0x0a, 0x13, 0x19, 0xc3, 0x2c, 0xa2, 0x79, 0x85, 0x9b, - 0x20, 0x83, 0x8c, 0x02, 0x21, 0xa9, 0x63, 0xc9, 0x01, 0x38, 0x83, 0x8b, 0x27, 0xa9, 0x49, 0x05, - 0xab, 0x14, 0x08, 0xc9, 0x51, 0x90, 0x43, 0xc0, 0x1a, 0x13, 0x32, 0xfb, 0x38, 0x30, 0xc3, 0x2c, - 0x94, 0x18, 0xa8, 0x41, 0x91, 0x53, 0xbc, 0x03, 0x3b, 0xb5, 0x69, 0x92, 0x3b, 0xb4, 0x2c, 0xa0, - 0x73, 0xb9, 0x21, 0x10, 0xc8, 0x2a, 0x05, 0x0a, 0x93, 0x2b, 0xb8, 0x64, 0xd8, 0x20, 0x00, 0xa1, - 0x1b, 0x16, 0x9a, 0x01, 0x18, 0x18, 0x84, 0xad, 0x11, 0x33, 0xfb, 0x40, 0x98, 0xa0, 0x18, 0x23, - 0xc9, 0x08, 0x98, 0x30, 0xf1, 0x0b, 0x84, 0x8c, 0xa2, 0x72, 0xdc, 0x10, 0x09, 0x92, 0x2b, 0xa1, - 0x08, 0x8d, 0xa2, 0x1b, 0xb4, 0x0d, 0x02, 0xbd, 0x11, 0x8d, 0x92, 0x8c, 0x22, 0xd0, 0x8d, 0x00, - 0x22, 0xcb, 0x90, 0x0f, 0x14, 0xba, 0x09, 0x10, 0xb9, 0x20, 0xb0, 0x3c, 0xb5, 0x8c, 0x09, 0x15, - 0x9c, 0xa2, 0x39, 0xc1, 0x20, 0xbb, 0x23, 0xdb, 0x0b, 0x26, 0xa0, 0x9a, 0x88, 0x40, 0xb1, 0x3a, - 0xd3, 0x19, 0x92, 0x0f, 0x93, 0x18, 0xab, 0x36, 0xeb, 0x09, 0x04, 0x08, 0xa0, 0xa8, 0x0f, 0x24, - 0xa9, 0x8a, 0x03, 0x39, 0xd1, 0x9b, 0x50, 0x84, 0x9d, 0x88, 0x11, 0x22, 0xe9, 0x19, 0x10, 0x15, - 0xad, 0x02, 0x32, 0xd0, 0x0b, 0x24, 0xaa, 0x12, 0x18, 0x89, 0x86, 0x2d, 0x86, 0x18, 0xd0, 0x38, - 0x93, 0x38, 0xb1, 0x48, 0x09, 0x07, 0x8b, 0x03, 0x38, 0x88, 0x26, 0xaa, 0x23, 0x0a, 0x06, 0x49, - 0x94, 0x2b, 0xb1, 0x73, 0xa0, 0x20, 0x88, 0x11, 0x42, 0xa0, 0x10, 0x0a, 0x07, 0x39, 0xa3, 0x50, - 0xe8, 0x38, 0xa2, 0x19, 0x04, 0x90, 0x9b, 0x31, 0x06, 0xbd, 0x62, 0xb9, 0x30, 0xa9, 0x10, 0x89, - 0x94, 0x9f, 0x22, 0xb0, 0x9e, 0x22, 0xa1, 0xbc, 0x10, 0x10, 0xb1, 0x9d, 0x10, 0x90, 0xdc, 0x1b, - 0x05, 0xaa, 0xa0, 0x99, 0xab, 0x80, 0x28, 0xf8, 0x1b, 0xcb, 0x03, 0x1d, 0xb1, 0x9b, 0x80, 0xae, - 0x43, 0xda, 0x89, 0x20, 0xda, 0x09, 0x13, 0xca, 0x31, 0xe9, 0x19, 0x04, 0xbc, 0x11, 0x21, 0xc9, - 0x30, 0x93, 0xaf, 0x30, 0x84, 0xdb, 0x40, 0xb1, 0x58, 0x83, 0xbe, 0x30, 0x23, 0xb8, 0x18, 0x01, - 0xa9, 0x31, 0x9a, 0x57, 0xba, 0x31, 0x90, 0x12, 0x99, 0x73, 0x81, 0x8b, 0x42, 0x03, 0x89, 0xbd, - 0x73, 0x83, 0xa9, 0x59, 0x93, 0x8b, 0x50, 0x83, 0x8b, 0x25, 0xa9, 0x20, 0x12, 0xda, 0x72, 0xa2, - 0x0a, 0x19, 0x04, 0x0b, 0x15, 0x8b, 0x00, 0x13, 0xbb, 0x73, 0xa2, 0x8d, 0x82, 0x30, 0xb0, 0x21, - 0xdb, 0x32, 0xc1, 0x28, 0x8d, 0x87, 0x1c, 0x94, 0x28, 0xda, 0x21, 0xab, 0x32, 0x03, 0xcb, 0x08, - 0x13, 0xcd, 0x10, 0x31, 0xb8, 0x30, 0xa8, 0xfa, 0x61, 0xc0, 0x18, 0x80, 0x10, 0x98, 0xc9, 0x7a, - 0xb2, 0x1a, 0x08, 0x02, 0xca, 0x38, 0x82, 0x99, 0x9a, 0x16, 0xaf, 0x11, 0x12, 0xcb, 0x11, 0xbb, - 0x15, 0x0b, 0xe0, 0x73, 0xb9, 0x98, 0x1a, 0x13, 0xa9, 0x19, 0x90, 0xa8, 0x0d, 0x91, 0x41, 0xba, - 0xf1, 0x1e, 0x04, 0x8a, 0xc1, 0x49, 0xa1, 0x0c, 0x02, 0xab, 0x13, 0x8d, 0x84, 0x39, 0xa1, 0xdc, - 0x20, 0x00, 0x33, 0xce, 0x20, 0x11, 0xd9, 0x28, 0x01, 0xb0, 0x1d, 0x83, 0x41, 0xd8, 0x20, 0x82, - 0xaa, 0x09, 0x64, 0xa8, 0xa8, 0x6a, 0xa3, 0x39, 0xea, 0x31, 0x80, 0x22, 0xae, 0x31, 0x91, 0x00, - 0x99, 0x38, 0x93, 0x1d, 0x13, 0x19, 0xd2, 0x0e, 0x13, 0x88, 0xe0, 0x2a, 0x15, 0x89, 0x09, 0x80, - 0x89, 0x99, 0xb1, 0x6c, 0xb2, 0x0c, 0xb9, 0x72, 0xa8, 0x80, 0x0d, 0x93, 0x49, 0xd0, 0x0a, 0x11, - 0xda, 0x48, 0x90, 0x99, 0x29, 0xb1, 0x9d, 0x52, 0xc9, 0x8a, 0x42, 0xa0, 0xac, 0x20, 0x21, 0x9a, - 0xa3, 0xef, 0x22, 0x90, 0x9a, 0x12, 0x89, 0x9a, 0x84, 0x0d, 0x14, 0x00, 0xcc, 0x30, 0x92, 0xaa, - 0x23, 0x32, 0xec, 0x09, 0x53, 0x02, 0xba, 0xab, 0x71, 0x95, 0x19, 0x00, 0x80, 0x1a, 0x26, 0xa9, - 0x48, 0x91, 0x98, 0x5c, 0x15, 0xa8, 0x29, 0x22, 0x80, 0x99, 0x25, 0x99, 0x34, 0xa1, 0x18, 0x10, - 0x36, 0x11, 0x0a, 0x05, 0x1a, 0x24, 0x40, 0x15, 0x99, 0x99, 0x70, 0x96, 0x09, 0x10, 0x22, 0xeb, - 0x40, 0x91, 0x11, 0x99, 0x00, 0x41, 0x92, 0xac, 0x53, 0xb8, 0x08, 0x21, 0xa2, 0x89, 0x18, 0x98, - 0x10, 0x01, 0xdf, 0x32, 0xb8, 0xbb, 0x79, 0xf3, 0x3b, 0x81, 0x89, 0xba, 0x42, 0xfc, 0x38, 0xa0, - 0x09, 0xba, 0x20, 0x32, 0xe9, 0xbb, 0x38, 0xa8, 0xea, 0x4a, 0xc2, 0x9a, 0xab, 0x35, 0x90, 0xfb, - 0x19, 0x91, 0x98, 0x0a, 0xd1, 0x39, 0x92, 0xb0, 0xbf, 0x25, 0x9a, 0x0a, 0x01, 0x08, 0x08, 0x08, - 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, 0x6a, 0x02, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, - 0x88, 0x01, 0x98, 0x18, 0x00, 0xa8, 0x30, 0xa8, 0x29, 0x88, 0x31, 0xb0, 0xab, 0x30, 0x21, 0x47, - 0xce, 0x48, 0x91, 0x09, 0x00, 0x81, 0xaa, 0x61, 0xa1, 0x9e, 0x33, 0xa8, 0x08, 0x03, 0x8e, 0xa3, - 0x3b, 0x94, 0x80, 0x0b, 0xd9, 0x54, 0xb0, 0x08, 0x8b, 0x25, 0xb8, 0x1a, 0xa2, 0x2b, 0x37, 0xbc, - 0x31, 0x99, 0xba, 0x66, 0xc8, 0x1a, 0x15, 0xbb, 0x51, 0xb0, 0x19, 0x91, 0x31, 0xda, 0x28, 0x91, - 0x39, 0xa6, 0x0d, 0x02, 0xa9, 0x60, 0xc0, 0x38, 0xa8, 0x20, 0xe1, 0x59, 0xc1, 0x29, 0x93, 0xa8, - 0x1b, 0x05, 0x99, 0x28, 0x91, 0x39, 0xed, 0x71, 0xa1, 0x8c, 0x21, 0x91, 0x09, 0x02, 0xb9, 0x89, - 0x58, 0x84, 0x8c, 0x12, 0xc9, 0x48, 0xb1, 0x1b, 0x17, 0xcb, 0x31, 0xb2, 0x0a, 0xa2, 0x3b, 0x07, - 0x9c, 0x11, 0x83, 0x9f, 0x22, 0xa1, 0x30, 0xfb, 0x7b, 0xb2, 0x19, 0x12, 0xac, 0x21, 0x90, 0x08, - 0x20, 0xa8, 0x9b, 0x45, 0xab, 0x94, 0x2c, 0x02, 0x12, 0xcf, 0x30, 0x04, 0xbc, 0x41, 0xb0, 0x49, - 0x91, 0xa8, 0x38, 0xdb, 0x36, 0xba, 0x39, 0x92, 0x9d, 0x25, 0xab, 0x31, 0xb8, 0x4a, 0xb2, 0x59, - 0xe9, 0x41, 0xa0, 0x89, 0x11, 0x0b, 0x96, 0x1d, 0x84, 0x0b, 0x02, 0x9a, 0x32, 0xbc, 0x31, 0x81, - 0x98, 0x32, 0xdf, 0x24, 0xd9, 0x39, 0x14, 0xdb, 0x41, 0xb9, 0x29, 0x03, 0x89, 0x18, 0xb0, 0x18, - 0x28, 0xc8, 0x78, 0xa1, 0x0d, 0x85, 0x1b, 0x83, 0xa8, 0x8e, 0x25, 0xba, 0x30, 0x95, 0x9e, 0x13, - 0x09, 0x90, 0x08, 0x10, 0xba, 0x42, 0x80, 0x48, 0xf9, 0x29, 0xa0, 0x50, 0x92, 0x0c, 0x82, 0x0d, - 0x12, 0x9a, 0x22, 0xd8, 0x28, 0x80, 0x82, 0xac, 0x43, 0x90, 0xeb, 0x72, 0xb8, 0x2a, 0x33, 0xf8, - 0x2b, 0x07, 0xab, 0x21, 0xa0, 0x38, 0xc1, 0x28, 0xb1, 0x39, 0xb1, 0x89, 0x00, 0x10, 0x35, 0xfa, - 0x49, 0xb9, 0x60, 0xb3, 0x0f, 0x03, 0x9b, 0x40, 0x83, 0xae, 0x11, 0x02, 0xaa, 0x83, 0x89, 0x22, - 0x9a, 0x91, 0x1a, 0x82, 0x30, 0xf3, 0x0f, 0x43, 0xd2, 0x0e, 0x13, 0x9a, 0x20, 0xb1, 0x2c, 0x85, - 0x8b, 0x00, 0x11, 0xb9, 0x40, 0xab, 0x47, 0xea, 0x38, 0x91, 0x89, 0x12, 0x99, 0x8b, 0x15, 0x19, - 0xd3, 0x0f, 0x04, 0x9a, 0x32, 0xb8, 0x1b, 0x83, 0x8b, 0x30, 0xa1, 0x73, 0xfa, 0x49, 0x91, 0x19, - 0xb2, 0x2d, 0x03, 0x8b, 0x92, 0x2c, 0x85, 0x8c, 0x42, 0xd8, 0x19, 0x80, 0x32, 0xba, 0x08, 0x33, - 0xcd, 0x10, 0x22, 0xc0, 0x2b, 0x85, 0x9d, 0x52, 0xb1, 0x0c, 0x14, 0xbb, 0x49, 0x05, 0xab, 0x83, - 0x0b, 0x05, 0xbb, 0x72, 0xb1, 0x8c, 0x33, 0xb8, 0x19, 0x91, 0x10, 0x19, 0xe3, 0x2b, 0x15, 0xda, - 0x49, 0x92, 0x1b, 0x81, 0x00, 0x19, 0xc1, 0x8b, 0x45, 0xb0, 0x9a, 0x50, 0xa3, 0x9e, 0x23, 0xb9, - 0x38, 0x84, 0xcb, 0x21, 0x03, 0x9f, 0x21, 0x80, 0x09, 0x9b, 0x27, 0x9c, 0x11, 0x18, 0x98, 0x80, - 0x0c, 0x03, 0x33, 0xdf, 0x41, 0x90, 0x8a, 0x10, 0xb0, 0x70, 0xb8, 0x59, 0x92, 0xbb, 0x40, 0xa1, - 0x31, 0xbb, 0x62, 0xb8, 0x9c, 0x53, 0xa8, 0x21, 0xd8, 0x2b, 0x17, 0xac, 0x31, 0x90, 0x98, 0x39, - 0xa3, 0x0d, 0x02, 0x9b, 0x47, 0xda, 0x28, 0x80, 0x28, 0xa1, 0x9b, 0x52, 0xb1, 0x0e, 0x15, 0xac, - 0x52, 0xd8, 0x28, 0x82, 0x9a, 0x13, 0xba, 0x72, 0xd8, 0x28, 0x91, 0x09, 0x12, 0xb8, 0x0a, 0x84, - 0x1b, 0x07, 0xac, 0x42, 0xb0, 0x0c, 0x24, 0xa9, 0x19, 0x91, 0x1a, 0x04, 0x9b, 0x18, 0x52, 0xd8, - 0x09, 0x33, 0xcb, 0x28, 0x07, 0xbc, 0x20, 0x31, 0x92, 0xdd, 0x40, 0x92, 0x8d, 0x13, 0xba, 0x41, - 0x91, 0x8a, 0x09, 0x15, 0xcb, 0x60, 0xa1, 0x8c, 0x05, 0xa9, 0x10, 0x80, 0x08, 0x01, 0xba, 0x61, - 0xa1, 0x8e, 0x33, 0xa9, 0x0a, 0x14, 0xbb, 0x22, 0x88, 0x2b, 0x87, 0xaa, 0x11, 0x30, 0xf1, 0x2e, - 0x06, 0xdb, 0x40, 0x92, 0xab, 0x43, 0xa9, 0x18, 0x82, 0x0b, 0x92, 0x1b, 0x14, 0xae, 0x54, 0xb9, - 0x28, 0xb8, 0x31, 0xb1, 0x3c, 0x97, 0x9a, 0x21, 0xb8, 0x40, 0xa1, 0x0c, 0x13, 0xbc, 0x72, 0xb0, - 0x48, 0xc8, 0x20, 0xda, 0x52, 0xa1, 0x19, 0xc9, 0x10, 0x01, 0x40, 0xe0, 0x2a, 0x84, 0x9c, 0x32, - 0xb0, 0x3b, 0x82, 0x98, 0x9b, 0x55, 0xc9, 0x00, 0x10, 0x92, 0xae, 0x44, 0xc8, 0x39, 0x91, 0x0a, - 0x91, 0x18, 0x32, 0xea, 0x09, 0x34, 0xe9, 0x29, 0x82, 0x89, 0x88, 0x01, 0x28, 0xd1, 0x39, 0x12, - 0xf2, 0x8f, 0x33, 0xb0, 0x0c, 0x34, 0xcb, 0x39, 0x82, 0xaa, 0x62, 0xb8, 0x08, 0x82, 0x9d, 0x44, - 0xb8, 0x38, 0xf9, 0x40, 0xb1, 0x2b, 0x05, 0xac, 0x20, 0x01, 0x82, 0x9b, 0x20, 0xb9, 0x28, 0x44, - 0xfb, 0x40, 0xa0, 0x09, 0x11, 0x91, 0x9e, 0x42, 0xa0, 0x3b, 0xa3, 0xae, 0x62, 0x80, 0x88, 0x9a, - 0x01, 0x3b, 0x97, 0x09, 0x98, 0x40, 0xe1, 0x4a, 0x82, 0x8d, 0x13, 0xab, 0x72, 0xa8, 0x9a, 0x40, - 0xa3, 0x8e, 0x24, 0xba, 0x29, 0x04, 0x8c, 0x23, 0xfa, 0x39, 0x04, 0xbb, 0x41, 0xb0, 0x18, 0x82, - 0x9a, 0x8c, 0x36, 0xb9, 0x28, 0xc1, 0x4b, 0x85, 0x8f, 0x25, 0xba, 0x30, 0xc8, 0x28, 0x81, 0x22, - 0xdb, 0x89, 0x23, 0x19, 0xe8, 0x61, 0xc0, 0x29, 0xb1, 0x29, 0x05, 0xba, 0x01, 0x00, 0x99, 0x01, - 0x20, 0x01, 0xb0, 0xdc, 0x71, 0xc9, 0x51, 0x92, 0xad, 0x21, 0x01, 0xaa, 0x52, 0xb8, 0x8a, 0x31, - 0x98, 0x32, 0xfb, 0x40, 0xb1, 0x2c, 0x82, 0x9a, 0x23, 0x9f, 0x26, 0xda, 0x38, 0x93, 0x9c, 0x32, - 0xb9, 0x1a, 0x07, 0x0b, 0x93, 0x8c, 0x22, 0x09, 0xc0, 0x3a, 0x04, 0xaa, 0x81, 0x48, 0xd2, 0x2b, - 0x12, 0xd8, 0x29, 0x93, 0x41, 0xf8, 0x19, 0x80, 0x18, 0x92, 0x3a, 0x93, 0xde, 0x71, 0xc1, 0x09, - 0x12, 0xb8, 0x48, 0xc1, 0x2a, 0xa3, 0x4b, 0x92, 0x8a, 0x80, 0xab, 0x47, 0xb8, 0x21, 0xeb, 0x10, - 0x12, 0xb0, 0x3a, 0xb4, 0x0f, 0x14, 0xb9, 0x28, 0x82, 0x8e, 0x22, 0x01, 0xcc, 0x31, 0xa0, 0x10, - 0xb0, 0x3d, 0x96, 0x9b, 0x52, 0xb1, 0x8b, 0x34, 0xfa, 0x39, 0x04, 0xac, 0x22, 0xa8, 0x40, 0xd0, - 0x2b, 0x06, 0xab, 0x22, 0xba, 0x20, 0x04, 0xbd, 0x43, 0xa8, 0x28, 0xb1, 0x2a, 0x90, 0x32, 0xca, - 0xaa, 0x74, 0xb8, 0x21, 0x89, 0x0a, 0x94, 0x1b, 0x00, 0x09, 0x05, 0x0d, 0x26, 0xbe, 0x42, 0xb9, - 0x40, 0x91, 0x0b, 0x02, 0x0a, 0xa8, 0x52, 0xf0, 0x49, 0xb3, 0x0e, 0x13, 0x0a, 0x93, 0x9e, 0x32, - 0xb1, 0x0b, 0x01, 0x12, 0x99, 0x0a, 0x96, 0x9d, 0x53, 0xa0, 0x08, 0xad, 0x54, 0xc8, 0x38, 0xa1, - 0x1b, 0x01, 0x18, 0xa0, 0x20, 0xf9, 0x68, 0xa1, 0x2b, 0x90, 0x18, 0x01, 0x2a, 0x94, 0xca, 0x19, - 0x00, 0x24, 0xa1, 0xaf, 0x25, 0xac, 0x43, 0xbb, 0x24, 0xbc, 0x52, 0xa0, 0x0a, 0x32, 0xd9, 0x28, - 0xb0, 0x59, 0x93, 0x8e, 0x23, 0xbb, 0x21, 0x82, 0x9c, 0x21, 0x84, 0xaf, 0x16, 0xba, 0x11, 0x00, - 0x98, 0x20, 0x90, 0x89, 0xa8, 0x68, 0xb1, 0x38, 0x90, 0x98, 0x5b, 0xa4, 0xbf, 0x46, 0xc8, 0x19, - 0x01, 0x99, 0x31, 0xa0, 0x98, 0x89, 0x58, 0x94, 0xbc, 0x73, 0xc8, 0x39, 0xa2, 0x2a, 0x94, 0x9b, - 0x10, 0x03, 0x8d, 0x23, 0xea, 0x40, 0xb8, 0x30, 0xa0, 0x29, 0xc2, 0x2c, 0x87, 0x9a, 0x19, 0x22, - 0xa2, 0x9e, 0x31, 0x80, 0xaa, 0x42, 0xca, 0x43, 0xda, 0x40, 0xa8, 0x28, 0xa1, 0x2a, 0xa3, 0x0f, - 0x16, 0xab, 0x38, 0xc2, 0x2a, 0x13, 0xd9, 0x3a, 0x85, 0x8b, 0x02, 0xa9, 0x23, 0xae, 0x41, 0x82, - 0x8a, 0xb0, 0x0d, 0x16, 0x99, 0x00, 0x09, 0x01, 0xc8, 0x50, 0xa1, 0x8e, 0x04, 0x0a, 0x13, 0xcc, - 0x51, 0xa0, 0x8b, 0x33, 0x9a, 0x32, 0xec, 0x40, 0xa0, 0x08, 0x20, 0xb2, 0x9f, 0x34, 0xab, 0x20, - 0x01, 0xab, 0x90, 0x70, 0x91, 0x0a, 0x89, 0x31, 0xb0, 0x2a, 0xb2, 0x59, 0x96, 0x8f, 0x03, 0x9a, - 0x42, 0xd8, 0x18, 0x00, 0x10, 0xa0, 0xbb, 0x71, 0xa2, 0x08, 0x9c, 0x53, 0xb1, 0x8d, 0x53, 0xb9, - 0x1a, 0x14, 0xaa, 0x01, 0x28, 0xc1, 0x0c, 0x25, 0xca, 0x30, 0xb1, 0x0d, 0x06, 0x9a, 0x02, 0x0a, - 0x83, 0x9d, 0x31, 0x85, 0xad, 0x21, 0x01, 0xa8, 0x1b, 0x03, 0x81, 0x9c, 0x22, 0xaa, 0x32, 0x89, - 0xb5, 0x0f, 0x05, 0xaa, 0x21, 0x9a, 0x24, 0xbc, 0x41, 0xa2, 0x9a, 0x01, 0x4a, 0xc0, 0x43, 0xca, - 0x29, 0xa4, 0x3c, 0x81, 0xb1, 0x3b, 0xa6, 0x0c, 0x85, 0x0b, 0x83, 0xba, 0x72, 0xd3, 0x0a, 0x00, - 0x81, 0x29, 0x83, 0xae, 0x34, 0xda, 0x48, 0xa1, 0x2b, 0x93, 0x8d, 0x53, 0xb1, 0xab, 0x20, 0x82, - 0x08, 0x9a, 0x54, 0x98, 0xca, 0x48, 0x81, 0xba, 0x44, 0x88, 0xab, 0x21, 0x3b, 0x87, 0x0d, 0x82, - 0x09, 0xb8, 0x33, 0x9a, 0x25, 0xe8, 0x0a, 0x02, 0x09, 0x12, 0xc1, 0x1a, 0x91, 0x1c, 0x47, 0x9f, - 0x21, 0x90, 0x10, 0xca, 0x30, 0x81, 0x88, 0xa9, 0x62, 0xc0, 0x1a, 0x01, 0x00, 0x3a, 0xb5, 0x8e, - 0x22, 0x82, 0xdb, 0x39, 0x04, 0xab, 0x24, 0xba, 0x30, 0x98, 0x18, 0xe9, 0x70, 0xa0, 0x08, 0xa1, - 0x3a, 0xb2, 0x50, 0xc2, 0x1a, 0xd8, 0x5a, 0x16, 0xbc, 0x30, 0x91, 0x08, 0x98, 0x38, 0xc2, 0x2b, - 0x83, 0x8a, 0x31, 0xa8, 0x10, 0xff, 0x44, 0xc9, 0x29, 0x94, 0x0b, 0x22, 0xca, 0x28, 0x11, 0x00, - 0xfb, 0x40, 0x92, 0xa9, 0x89, 0x21, 0x01, 0x92, 0x8e, 0x11, 0x94, 0x0f, 0x02, 0x89, 0x88, 0x12, - 0x8b, 0x02, 0xd1, 0x59, 0xb0, 0x18, 0x15, 0xdc, 0x48, 0x92, 0x8b, 0x31, 0x92, 0xbc, 0x38, 0x03, - 0x8a, 0x02, 0x9b, 0x48, 0xa4, 0x8e, 0x00, 0x44, 0xe9, 0x1a, 0x25, 0xbb, 0x48, 0xa2, 0x8c, 0x32, - 0xc8, 0x38, 0x93, 0xbc, 0x31, 0xb0, 0x18, 0x63, 0xd9, 0x08, 0x21, 0x91, 0x9e, 0x23, 0xab, 0x43, - 0xd0, 0x2a, 0x86, 0xab, 0x42, 0xb0, 0x29, 0xb0, 0x28, 0x82, 0x0a, 0x12, 0x81, 0xdf, 0x42, 0xa8, - 0x19, 0x84, 0xbc, 0x51, 0x14, 0xad, 0x28, 0xa0, 0x28, 0x15, 0xbb, 0x10, 0x9a, 0x27, 0xcb, 0x38, - 0x84, 0xaa, 0x49, 0xb2, 0x1b, 0x24, 0xa9, 0x89, 0x20, 0x99, 0x19, 0x15, 0x89, 0xa4, 0xcf, 0x25, - 0xaa, 0x12, 0x88, 0x89, 0x81, 0x0c, 0x04, 0x88, 0x08, 0x10, 0xba, 0x5b, 0xa4, 0x3a, 0xa1, 0x0a, - 0x35, 0xda, 0xab, 0x73, 0xa4, 0xab, 0x22, 0xa0, 0x02, 0x0f, 0x15, 0x9c, 0x20, 0xa0, 0x48, 0xc0, - 0x09, 0x22, 0xb0, 0x2a, 0x83, 0x0d, 0x81, 0x2b, 0x16, 0xad, 0x21, 0x91, 0x29, 0x91, 0x98, 0x8a, - 0xb9, 0x57, 0xb0, 0x0c, 0x15, 0xca, 0x48, 0xa3, 0x8c, 0x21, 0xb8, 0x30, 0xa0, 0x38, 0xc0, 0x29, - 0xb8, 0x73, 0xf1, 0x19, 0x10, 0x02, 0x98, 0xdb, 0x21, 0x90, 0x32, 0xc2, 0x8f, 0x14, 0x9b, 0x14, - 0xbb, 0x30, 0x93, 0x8c, 0x33, 0xbb, 0x2b, 0x07, 0x8c, 0x92, 0x29, 0x05, 0xaa, 0xaa, 0x54, 0x98, - 0x0b, 0x04, 0x8a, 0x82, 0x1c, 0x82, 0x92, 0xaf, 0x62, 0xa2, 0x8c, 0x02, 0x89, 0x80, 0x59, 0x95, - 0x8e, 0x22, 0xaa, 0x31, 0xc8, 0x0a, 0x26, 0xb9, 0x19, 0x02, 0x8b, 0x82, 0x88, 0x10, 0xb4, 0x8f, - 0x25, 0xab, 0x31, 0xd9, 0x39, 0x05, 0xac, 0x32, 0xba, 0x18, 0x36, 0xda, 0x28, 0xa8, 0x30, 0x91, - 0xac, 0x72, 0x90, 0x0b, 0x04, 0xba, 0x29, 0x05, 0x88, 0xb9, 0x60, 0xb2, 0x0c, 0x81, 0x08, 0x32, - 0xa0, 0xcb, 0x58, 0x92, 0x9e, 0x63, 0xb9, 0x38, 0x90, 0x00, 0x98, 0x89, 0x22, 0x8a, 0x40, 0xb1, - 0x9c, 0x20, 0x84, 0x09, 0xc1, 0x1a, 0x03, 0x20, 0xfa, 0x7c, 0xb1, 0x09, 0x62, 0xc0, 0xa9, 0x68, - 0x92, 0x8c, 0x22, 0x90, 0xc8, 0x3a, 0x04, 0xb9, 0x21, 0x09, 0xc3, 0x8d, 0x25, 0xca, 0x20, 0x01, - 0xc1, 0x0c, 0x23, 0xb1, 0x1b, 0xa3, 0x2d, 0xc3, 0x79, 0xa2, 0x9b, 0x89, 0x27, 0xa9, 0x89, 0x14, - 0xab, 0x21, 0x02, 0x8b, 0xd8, 0x4b, 0x85, 0x29, 0xd1, 0x1c, 0x14, 0xaa, 0x10, 0x10, 0x99, 0x88, - 0x11, 0x71, 0xc9, 0x19, 0x91, 0x2c, 0x86, 0x19, 0xe1, 0x2a, 0x82, 0x02, 0x9d, 0x23, 0xd9, 0x20, - 0xa8, 0x33, 0xaa, 0x92, 0x8f, 0x04, 0x09, 0x83, 0xdb, 0x58, 0xb0, 0x18, 0x15, 0xac, 0x11, 0x81, - 0x88, 0xa9, 0x13, 0x9a, 0x60, 0xa4, 0x8e, 0x23, 0xcb, 0x33, 0xaa, 0x81, 0x1a, 0x23, 0xab, 0x02, - 0xab, 0x88, 0x47, 0xa9, 0x9a, 0x14, 0x0e, 0x17, 0xeb, 0x40, 0x90, 0x09, 0x01, 0x0b, 0x92, 0x29, - 0x81, 0x8a, 0x84, 0x8e, 0x14, 0xaa, 0x03, 0x2a, 0xb0, 0x94, 0x8f, 0x86, 0x0a, 0x83, 0x8c, 0x13, - 0x8a, 0x8a, 0x42, 0xd0, 0x3b, 0x06, 0x9a, 0x39, 0xd0, 0x10, 0x0a, 0x86, 0x29, 0xc2, 0x0e, 0x03, - 0x1a, 0x00, 0x99, 0x20, 0x80, 0xda, 0x72, 0xc0, 0x3b, 0x86, 0x8c, 0x12, 0x8a, 0x13, 0x8c, 0x90, - 0x21, 0xab, 0x34, 0xd9, 0x30, 0xc2, 0x8c, 0x23, 0x98, 0x93, 0x1f, 0x93, 0x9b, 0x25, 0xab, 0x20, - 0x98, 0x32, 0xcd, 0x23, 0x99, 0x11, 0x80, 0x9e, 0x22, 0x98, 0x39, 0x93, 0xcb, 0x40, 0xaa, 0x32, - 0x07, 0xaf, 0x32, 0xd0, 0x49, 0xa2, 0x29, 0xd9, 0x49, 0x82, 0x9a, 0x42, 0xa9, 0x88, 0x3b, 0x95, - 0x89, 0x09, 0x15, 0x9d, 0x22, 0x98, 0x88, 0x1b, 0x06, 0x9f, 0x25, 0xba, 0x21, 0xb0, 0x39, 0xa2, - 0x9b, 0x30, 0x84, 0x0f, 0x25, 0xdb, 0x28, 0x91, 0x00, 0x89, 0x04, 0x8a, 0x90, 0x8a, 0x27, 0xbb, - 0x51, 0xe9, 0x48, 0x92, 0x0b, 0x02, 0xab, 0x32, 0x94, 0x9e, 0x22, 0x80, 0x0b, 0x93, 0x8e, 0x14, - 0x98, 0x98, 0x12, 0xaa, 0x40, 0xd0, 0x48, 0xb0, 0x38, 0xb2, 0x1e, 0x07, 0xac, 0x32, 0xd8, 0x30, - 0x98, 0x01, 0xa9, 0x29, 0x05, 0xab, 0x31, 0xc8, 0x20, 0x9b, 0x47, 0xac, 0x21, 0xc8, 0x30, 0x80, - 0x08, 0xb0, 0x2a, 0x80, 0x17, 0x9e, 0x31, 0xb1, 0x1b, 0x84, 0x0b, 0xa4, 0x6b, 0xb2, 0x0c, 0x22, - 0xb8, 0x29, 0x91, 0x58, 0xc1, 0x10, 0xdb, 0x6a, 0x85, 0xab, 0x32, 0xc0, 0x2b, 0x85, 0x8b, 0x22, - 0xa9, 0x18, 0x28, 0x01, 0xca, 0x3a, 0x94, 0x9a, 0x34, 0xeb, 0x71, 0xd8, 0x49, 0xb2, 0x1b, 0x13, - 0x88, 0x8b, 0x05, 0x9d, 0x42, 0xb0, 0x28, 0xaa, 0x40, 0xb2, 0x2e, 0x84, 0xab, 0x41, 0xa1, 0x8a, - 0x01, 0x18, 0x01, 0xc8, 0x2a, 0x82, 0x95, 0x2f, 0x93, 0xab, 0x28, 0x80, 0x43, 0x88, 0xf8, 0x19, - 0x00, 0x15, 0xae, 0x53, 0xb9, 0x00, 0x18, 0x81, 0xa9, 0x51, 0xe9, 0x48, 0x92, 0x8d, 0x32, 0xb8, - 0x2a, 0x21, 0xda, 0x20, 0x00, 0x21, 0xfb, 0x58, 0x90, 0x8b, 0x33, 0x9a, 0x82, 0xbb, 0x70, 0xd3, - 0x3a, 0x91, 0x00, 0xa8, 0x0f, 0x15, 0x0b, 0x92, 0x09, 0xb0, 0x4a, 0x02, 0xb8, 0x58, 0xd1, 0x28, - 0xa8, 0x12, 0x0a, 0x15, 0xcd, 0x11, 0x00, 0x95, 0x1d, 0x03, 0xaa, 0x8a, 0x24, 0x00, 0xd8, 0x0a, - 0x33, 0x88, 0x99, 0x84, 0x9f, 0x01, 0x14, 0xaa, 0x18, 0xa3, 0x9f, 0x26, 0xba, 0x21, 0x01, 0xbd, - 0x30, 0x04, 0xaa, 0x88, 0x15, 0x9a, 0xb1, 0x4a, 0x83, 0xbd, 0x64, 0xc8, 0x28, 0xa2, 0x0d, 0x14, - 0xaa, 0x10, 0x18, 0x90, 0xa8, 0x79, 0x93, 0xac, 0x12, 0x9a, 0x25, 0xaa, 0x30, 0xc8, 0xb9, 0x73, - 0x91, 0x8b, 0x33, 0xba, 0xba, 0x72, 0xb1, 0x3c, 0x07, 0xbb, 0x31, 0xa2, 0x0e, 0x82, 0x11, 0x9b, - 0x01, 0x1a, 0x05, 0x8b, 0x98, 0x48, 0xa3, 0x8a, 0x21, 0xeb, 0x61, 0xb8, 0x41, 0xad, 0x23, 0x88, - 0x98, 0x22, 0xfb, 0x28, 0x12, 0xc9, 0x42, 0xdb, 0x41, 0x98, 0x89, 0xa2, 0x68, 0xc0, 0x30, 0xb8, - 0x1b, 0x17, 0xbb, 0x53, 0xc9, 0x30, 0xb8, 0x39, 0xb4, 0x5b, 0xa0, 0x30, 0xd8, 0x1a, 0x14, 0xbb, - 0x63, 0x98, 0x98, 0x28, 0xba, 0x63, 0xa0, 0x09, 0x18, 0xb0, 0x59, 0x93, 0xbf, 0x36, 0xca, 0x48, - 0xb0, 0x29, 0x84, 0x0a, 0xa8, 0x28, 0x81, 0x18, 0xa9, 0x37, 0xdc, 0x28, 0x02, 0x19, 0xc1, 0x2a, - 0xa3, 0x1e, 0x94, 0x3b, 0xc3, 0x1b, 0x22, 0xb1, 0x8b, 0x30, 0xb3, 0x29, 0xda, 0x38, 0x82, 0x16, - 0x9d, 0x21, 0xf8, 0x3a, 0x07, 0xab, 0x21, 0xc0, 0x58, 0xa2, 0x8c, 0x13, 0xbb, 0x34, 0xcb, 0x62, - 0xb8, 0x19, 0x11, 0xba, 0x51, 0x81, 0xa9, 0x99, 0x58, 0x91, 0x22, 0xdc, 0x31, 0xf0, 0x6a, 0xb2, - 0x2a, 0x81, 0x89, 0x01, 0x89, 0x00, 0x29, 0xc1, 0x7a, 0xc1, 0x29, 0x81, 0x8a, 0x32, 0xa8, 0xb0, - 0x1d, 0x85, 0x28, 0xb9, 0x28, 0xb6, 0x1f, 0x84, 0x8a, 0x23, 0xeb, 0x30, 0xb1, 0x1b, 0x17, 0xbb, - 0x41, 0xa1, 0x8c, 0x13, 0x08, 0x00, 0xba, 0x19, 0x24, 0xeb, 0x41, 0x90, 0xb0, 0x3c, 0x85, 0x09, - 0xb8, 0x38, 0xc1, 0x28, 0x32, 0xf9, 0x31, 0xbb, 0x98, 0x70, 0xa4, 0x8c, 0x13, 0xab, 0x14, 0x0a, - 0x00, 0xd1, 0x2c, 0x13, 0xa1, 0x9a, 0x02, 0x9c, 0x07, 0x0c, 0x03, 0xa8, 0x2b, 0x13, 0xd0, 0x1d, - 0x84, 0x90, 0x09, 0x22, 0xf9, 0x49, 0xa1, 0x19, 0x81, 0x18, 0xa0, 0xaa, 0x53, 0x9a, 0x17, 0xdb, - 0x30, 0x82, 0x9c, 0x18, 0x44, 0xd8, 0x98, 0x28, 0x80, 0x83, 0x2c, 0xc3, 0x1d, 0x14, 0xaa, 0x01, - 0x99, 0x01, 0x11, 0xa2, 0xbf, 0x45, 0xb9, 0x18, 0x10, 0xb1, 0x2d, 0x93, 0x0a, 0x12, 0x90, 0x48, - 0xf3, 0x8f, 0x14, 0x99, 0x20, 0xc8, 0x58, 0xc1, 0x2a, 0x12, 0xbb, 0x72, 0xc8, 0x00, 0x10, 0x90, - 0x09, 0x00, 0x89, 0x32, 0xaa, 0x11, 0xb9, 0x6a, 0xa5, 0x9e, 0x34, 0xb9, 0x10, 0xa8, 0x29, 0x93, - 0x20, 0xeb, 0x53, 0xc9, 0x2a, 0x16, 0xac, 0x31, 0x89, 0x90, 0x18, 0x91, 0x09, 0x00, 0x58, 0xf1, - 0x69, 0xc8, 0x38, 0x91, 0x19, 0xb1, 0x0b, 0x62, 0x91, 0x0a, 0xaa, 0x41, 0xb1, 0x4a, 0xa3, 0x29, - 0xdc, 0x60, 0x90, 0x98, 0x61, 0xd8, 0x2a, 0x13, 0xb9, 0x19, 0x83, 0x0c, 0x14, 0x9a, 0xa8, 0x38, - 0x15, 0xe9, 0x39, 0xc3, 0x2c, 0x94, 0x2a, 0x02, 0xae, 0x22, 0x08, 0x1c, 0x85, 0x89, 0x88, 0x99, - 0x42, 0x88, 0x20, 0xbd, 0x22, 0x9b, 0x03, 0x32, 0xd2, 0x8e, 0x12, 0xa0, 0x1b, 0x05, 0x81, 0x8d, - 0x82, 0x00, 0x9d, 0x27, 0xca, 0x40, 0xc1, 0x2b, 0x04, 0x9b, 0x14, 0xaa, 0x18, 0x83, 0x9a, 0x01, - 0x99, 0x23, 0xa8, 0x9d, 0x64, 0xb9, 0x28, 0x01, 0xb9, 0x21, 0xaa, 0x62, 0xa0, 0x19, 0x08, 0xa0, - 0x1a, 0x14, 0x9a, 0x10, 0x98, 0x21, 0x89, 0x78, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0x60, 0x14, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xf7, 0x8f, 0x77, 0x8a, 0x77, 0x91, 0x88, 0x1b, - 0x86, 0x10, 0xfb, 0x18, 0xa2, 0x5b, 0xd0, 0x30, 0x98, 0x10, 0x0c, 0xd2, 0x1b, 0x80, 0x38, 0xc3, - 0x28, 0x9b, 0x27, 0x8a, 0x83, 0x09, 0x9c, 0x92, 0x58, 0xba, 0x88, 0x47, 0x19, 0xd8, 0x41, 0x8a, - 0x04, 0x80, 0xad, 0x00, 0x20, 0x09, 0x81, 0x90, 0x8f, 0x82, 0x11, 0x8d, 0x02, 0x81, 0x92, 0x8e, - 0x91, 0x40, 0xc0, 0x79, 0x80, 0x99, 0x11, 0x89, 0xc0, 0x38, 0x20, 0x37, 0xc9, 0xba, 0x51, 0x99, - 0x12, 0x91, 0x2b, 0xfa, 0x31, 0x88, 0x89, 0xb0, 0x3b, 0xc1, 0x31, 0x63, 0xb8, 0xf1, 0x3d, 0xa2, - 0x30, 0x99, 0xa0, 0x11, 0x2a, 0x9b, 0x17, 0x0f, 0x02, 0x10, 0x91, 0x9b, 0x58, 0x01, 0xb1, 0x8d, - 0x88, 0x28, 0xa3, 0x11, 0x89, 0x39, 0xf8, 0x28, 0xbd, 0x12, 0x01, 0x47, 0xcc, 0x80, 0x20, 0x30, - 0xa2, 0xba, 0x0e, 0x25, 0x99, 0x01, 0xba, 0x30, 0x19, 0x95, 0x9c, 0x71, 0xb8, 0x11, 0x8d, 0x83, - 0x59, 0x92, 0x08, 0xca, 0x31, 0x10, 0xd2, 0x8b, 0x0a, 0x04, 0x0c, 0x81, 0xbc, 0x44, 0x30, 0xfb, - 0x10, 0x9b, 0x21, 0x10, 0xb2, 0x8f, 0x03, 0x54, 0xc8, 0x88, 0x89, 0x24, 0x98, 0x19, 0x91, 0x88, - 0x18, 0x29, 0xb7, 0x0f, 0x02, 0x08, 0xb8, 0x3c, 0x94, 0x28, 0xa0, 0x00, 0xac, 0x22, 0x11, 0x01, - 0x9c, 0xb2, 0x2d, 0xa3, 0x1a, 0x30, 0xd4, 0x8d, 0x21, 0xd8, 0x1a, 0x14, 0x1b, 0x27, 0x8b, 0xa8, - 0x12, 0x3a, 0x27, 0xc0, 0xaa, 0x9c, 0x31, 0x22, 0x94, 0x9b, 0x0d, 0x95, 0x1a, 0x92, 0x8a, 0x14, - 0x38, 0xd0, 0x20, 0x9e, 0x11, 0x43, 0xdb, 0x18, 0x10, 0xb9, 0x28, 0xa1, 0xad, 0x34, 0xaa, 0xa4, - 0x0f, 0x92, 0x60, 0x82, 0x9a, 0x18, 0x81, 0x01, 0x34, 0xcb, 0x03, 0xbf, 0x81, 0x42, 0x80, 0x98, - 0x1a, 0xe2, 0x1d, 0x84, 0x30, 0xa1, 0xaa, 0x9c, 0x82, 0x5c, 0x84, 0xa9, 0x9b, 0x14, 0x08, 0xab, - 0x09, 0x04, 0x3c, 0x05, 0x02, 0x8f, 0x81, 0x10, 0x90, 0x30, 0xb0, 0x49, 0x04, 0x18, 0xf8, 0x19, - 0xba, 0x19, 0x30, 0x96, 0x49, 0xf9, 0x89, 0x31, 0xa8, 0x09, 0x02, 0x3a, 0x84, 0x31, 0x90, 0xac, - 0x48, 0x93, 0x58, 0x93, 0x4c, 0xb4, 0x9a, 0xdd, 0x38, 0x02, 0xa0, 0x0d, 0x08, 0x82, 0x48, 0x80, - 0xc9, 0x40, 0x10, 0xe3, 0x48, 0xa0, 0x99, 0x2a, 0x04, 0xa8, 0x49, 0x17, 0xc9, 0x18, 0xa9, 0x13, - 0x98, 0xba, 0x0e, 0x14, 0x10, 0xac, 0x88, 0x52, 0x99, 0x01, 0x80, 0x80, 0xad, 0x46, 0x90, 0x0a, - 0x88, 0x53, 0xeb, 0x29, 0x01, 0x40, 0x90, 0x81, 0x0c, 0xc3, 0x0a, 0xab, 0x84, 0x38, 0xdb, 0x33, - 0x52, 0xa8, 0xb9, 0x0c, 0x12, 0x91, 0x18, 0x28, 0x82, 0x0c, 0xe6, 0x4d, 0x83, 0x8b, 0x11, 0x8c, - 0x13, 0x00, 0x99, 0x88, 0x9c, 0x73, 0xf0, 0x0b, 0x12, 0x02, 0x8a, 0x30, 0xb3, 0x1d, 0x80, 0x32, - 0xb8, 0xbc, 0x89, 0x41, 0x83, 0xac, 0x73, 0xb2, 0x5b, 0x86, 0x9b, 0x80, 0x09, 0x50, 0x83, 0xaa, - 0x8b, 0x90, 0xc1, 0x0f, 0x14, 0x20, 0xea, 0x18, 0x22, 0xd9, 0x88, 0x63, 0xa8, 0x99, 0x09, 0x21, - 0x34, 0xd8, 0x9b, 0x81, 0x52, 0x98, 0x22, 0xbd, 0x80, 0x50, 0xa0, 0x21, 0xbb, 0x98, 0x78, 0x94, - 0x9e, 0x22, 0x21, 0xd0, 0x0c, 0x12, 0x98, 0x28, 0xc0, 0x38, 0x80, 0xc9, 0x2b, 0x27, 0x98, 0x89, - 0x54, 0xd9, 0x89, 0x30, 0xa4, 0x19, 0x90, 0xae, 0x12, 0x89, 0x42, 0x81, 0xca, 0x08, 0x32, 0xea, - 0x29, 0x11, 0x40, 0xb8, 0x98, 0x3c, 0x84, 0x10, 0xa8, 0x2a, 0xf2, 0x48, 0x32, 0xc3, 0xaf, 0x38, - 0x92, 0x28, 0xbb, 0x20, 0x31, 0x24, 0xfe, 0x09, 0x20, 0x83, 0x8b, 0xb0, 0x9d, 0x61, 0x04, 0xa9, - 0x89, 0x99, 0x65, 0x91, 0x9a, 0x89, 0x32, 0xb2, 0x0b, 0xaa, 0x35, 0x02, 0xa9, 0xaa, 0x29, 0x80, - 0x42, 0xa4, 0xff, 0x28, 0x22, 0xa1, 0xdb, 0x29, 0x06, 0x9b, 0x02, 0x1b, 0xa2, 0x20, 0x21, 0xea, - 0x99, 0x71, 0xb0, 0x00, 0x28, 0x82, 0x10, 0x88, 0xfe, 0x3a, 0x17, 0x98, 0x9b, 0x20, 0x08, 0x00, - 0x11, 0x94, 0x8e, 0x82, 0x09, 0x28, 0x81, 0x80, 0x9a, 0xba, 0x81, 0x2d, 0xb5, 0x4a, 0x99, 0x03, - 0x1c, 0xc2, 0x39, 0x99, 0x57, 0xca, 0x21, 0x98, 0xb9, 0x78, 0xa4, 0x3a, 0xb3, 0x2a, 0xd9, 0x48, - 0x10, 0x11, 0x11, 0xef, 0x29, 0x13, 0x88, 0xba, 0x00, 0x00, 0x88, 0x81, 0x8a, 0x02, 0x52, 0xa2, - 0xcf, 0x90, 0x50, 0x85, 0xa9, 0x8b, 0x04, 0x49, 0x04, 0xa9, 0x8b, 0x33, 0x80, 0xdc, 0x40, 0x02, - 0x08, 0xba, 0xbb, 0xcc, 0x71, 0x94, 0x18, 0xa9, 0x89, 0x22, 0xb8, 0x0c, 0x10, 0x25, 0x08, 0xc8, - 0x30, 0xda, 0x52, 0x91, 0x89, 0x98, 0xab, 0x64, 0x80, 0x08, 0x81, 0x88, 0xcd, 0x01, 0x1a, 0x37, - 0xb8, 0x9e, 0x00, 0x32, 0xb0, 0x3b, 0x86, 0xad, 0x28, 0x25, 0xb9, 0x89, 0x11, 0x00, 0xb9, 0x29, - 0x32, 0xc8, 0x61, 0xb8, 0x39, 0xa3, 0x8d, 0x26, 0x9c, 0x23, 0x99, 0x88, 0xb9, 0x09, 0x9f, 0x57, - 0xb8, 0x89, 0x11, 0x90, 0x10, 0x11, 0xc8, 0xcd, 0x40, 0x02, 0x00, 0xc9, 0x1a, 0x83, 0x00, 0x98, - 0x98, 0x20, 0x36, 0x88, 0xe9, 0x9d, 0x32, 0x22, 0x12, 0xcb, 0xae, 0x10, 0x73, 0x92, 0x8b, 0xb8, - 0x09, 0x32, 0x01, 0xa9, 0xa9, 0x78, 0xc8, 0x09, 0xaa, 0x74, 0x82, 0xb9, 0x8c, 0x21, 0x30, 0x15, - 0xc9, 0xac, 0x41, 0x82, 0x11, 0xba, 0x9b, 0x30, 0x47, 0xc8, 0x8c, 0x10, 0x04, 0x08, 0x80, 0xea, - 0x1a, 0x24, 0x10, 0xa9, 0x8a, 0xaa, 0x61, 0x92, 0x88, 0x18, 0xc1, 0x9a, 0x40, 0xa3, 0x9f, 0x63, - 0xa0, 0x0a, 0x9a, 0x53, 0x01, 0x9a, 0x91, 0x9d, 0x33, 0x8a, 0x43, 0xa0, 0xae, 0x31, 0x18, 0x82, - 0xcd, 0x28, 0x41, 0x94, 0x9e, 0x00, 0x10, 0x11, 0x18, 0xd1, 0x9c, 0x29, 0x17, 0x8b, 0x03, 0xcb, - 0x1a, 0x25, 0xa8, 0x08, 0x10, 0x04, 0xae, 0x28, 0x13, 0xba, 0x68, 0xa1, 0x08, 0xac, 0x13, 0x40, - 0xf1, 0x0a, 0x21, 0x93, 0x8b, 0x88, 0x15, 0x8b, 0x04, 0x9c, 0xd8, 0x48, 0x91, 0x58, 0xb2, 0xac, - 0x18, 0x17, 0x98, 0xa0, 0x8a, 0x22, 0x00, 0x00, 0x8a, 0x88, 0x09, 0x57, 0xc9, 0x0b, 0x04, 0x28, - 0x90, 0x08, 0xfb, 0x18, 0x35, 0xe8, 0x8a, 0x01, 0x21, 0xa1, 0x99, 0x19, 0xb1, 0x72, 0xa8, 0xa8, - 0x89, 0x72, 0x05, 0x99, 0x9b, 0x11, 0x12, 0xab, 0x04, 0x9e, 0x23, 0x1a, 0x94, 0xab, 0x9b, 0x42, - 0x10, 0x05, 0xae, 0x31, 0xb1, 0x19, 0xa2, 0x89, 0x89, 0x05, 0xbc, 0x51, 0xa2, 0x2b, 0x16, 0xba, - 0x90, 0x79, 0x83, 0xd8, 0x0b, 0x83, 0xca, 0x72, 0x91, 0xb8, 0x59, 0xa1, 0x2a, 0x93, 0x2a, 0x98, - 0x45, 0xcb, 0x10, 0x99, 0x89, 0x58, 0x27, 0xdb, 0x28, 0xb8, 0x49, 0x03, 0x99, 0x09, 0xa1, 0x0b, - 0x12, 0x18, 0xc8, 0x40, 0x91, 0xae, 0x11, 0x2a, 0x06, 0x80, 0x88, 0x08, 0x03, 0x63, 0xfa, 0x39, - 0x92, 0x51, 0xea, 0x10, 0x08, 0x90, 0x18, 0xa0, 0x9b, 0x08, 0x38, 0xf2, 0x50, 0xd1, 0x1c, 0x84, - 0x8c, 0x14, 0x80, 0x89, 0x81, 0x1b, 0x93, 0x0c, 0x07, 0x9b, 0x44, 0xb8, 0x09, 0xa8, 0x40, 0x13, - 0xeb, 0x89, 0x00, 0x20, 0x84, 0x9b, 0xac, 0x73, 0xc2, 0x19, 0x91, 0x8a, 0x44, 0xa9, 0x99, 0x0a, - 0x24, 0x81, 0x19, 0xf2, 0x0d, 0x25, 0x90, 0x8a, 0x98, 0x59, 0x82, 0x98, 0xac, 0x40, 0x92, 0x98, - 0x29, 0x97, 0x8d, 0x12, 0x80, 0xb9, 0x20, 0x01, 0x00, 0xaa, 0x8a, 0x05, 0xaf, 0x33, 0x81, 0xa0, - 0x3a, 0xb2, 0x3a, 0x73, 0xc1, 0x8d, 0x63, 0xa0, 0x89, 0x99, 0x20, 0x32, 0xa0, 0xbc, 0x9b, 0x52, - 0x26, 0xa1, 0xcf, 0x10, 0x32, 0xb0, 0xac, 0x21, 0x80, 0x31, 0xa5, 0xbf, 0x30, 0x23, 0x81, 0xdc, - 0x18, 0x02, 0x18, 0x25, 0xea, 0x8b, 0x53, 0x81, 0xb9, 0x1b, 0x13, 0x19, 0x83, 0xae, 0x08, 0x12, - 0x1a, 0x13, 0x99, 0xcf, 0x50, 0x03, 0xcc, 0x21, 0x98, 0x31, 0xb1, 0x8b, 0x28, 0x93, 0x9b, 0x28, - 0x07, 0x9f, 0x63, 0xb0, 0x8a, 0x02, 0x89, 0x32, 0x00, 0xd0, 0xac, 0x31, 0xb1, 0x61, 0xa1, 0x8c, - 0x11, 0x89, 0x33, 0xf9, 0x89, 0x29, 0x07, 0xa9, 0x8a, 0x16, 0x89, 0x98, 0x81, 0x9a, 0x32, 0x30, - 0xd1, 0x58, 0xb8, 0x88, 0x1b, 0x92, 0x49, 0x16, 0x98, 0xc9, 0x0d, 0x23, 0x91, 0x09, 0x83, 0x8c, - 0xf0, 0x3a, 0x14, 0xa8, 0x8c, 0x90, 0x63, 0xc8, 0x48, 0x93, 0xcc, 0x38, 0x05, 0xab, 0x10, 0x81, - 0x38, 0x22, 0xf0, 0x8e, 0x32, 0xa9, 0x53, 0xb0, 0x9d, 0x00, 0x23, 0xa0, 0x8a, 0xc0, 0x19, 0x17, - 0xa9, 0x0a, 0x02, 0x23, 0xaa, 0xd9, 0x58, 0xa0, 0x41, 0xa8, 0xba, 0x4b, 0x27, 0x99, 0x89, 0x00, - 0x8e, 0x34, 0x81, 0xda, 0x1a, 0x22, 0x83, 0xbd, 0x33, 0xb9, 0x9c, 0x24, 0x89, 0x01, 0x0a, 0x15, - 0xaa, 0xeb, 0x40, 0x81, 0x98, 0x19, 0x17, 0xec, 0x20, 0x21, 0xa8, 0x19, 0x88, 0x99, 0x50, 0x94, - 0x1a, 0xa1, 0x8c, 0x26, 0xcc, 0x28, 0x12, 0x18, 0x93, 0xbf, 0x38, 0x13, 0xa9, 0x0b, 0x21, 0xd1, - 0x6a, 0xa2, 0xaa, 0x19, 0x14, 0x11, 0xa2, 0xdf, 0x28, 0x24, 0xc9, 0x18, 0x81, 0x99, 0x18, 0x15, - 0x19, 0xe9, 0x48, 0xa2, 0x9b, 0x28, 0x14, 0x13, 0xfc, 0x1b, 0x01, 0x23, 0xa9, 0x9a, 0x40, 0xb1, - 0x8c, 0x43, 0xb8, 0x18, 0x13, 0x01, 0xfb, 0x0b, 0x02, 0x58, 0x15, 0xc9, 0x0c, 0x22, 0x98, 0x2a, - 0x86, 0x9a, 0x01, 0xc9, 0x5a, 0x05, 0xac, 0x11, 0x91, 0xa8, 0x9b, 0x47, 0xa1, 0x8b, 0x00, 0x12, - 0xc9, 0x0b, 0x45, 0xa8, 0x8c, 0x42, 0x98, 0x80, 0xaa, 0x40, 0x05, 0xba, 0x8b, 0x35, 0xa0, 0x0b, - 0x05, 0x98, 0xac, 0x12, 0x31, 0xb1, 0x9e, 0x21, 0x41, 0xd8, 0x0a, 0x14, 0xc8, 0x2b, 0x83, 0x19, - 0x82, 0xaa, 0x23, 0xcf, 0x35, 0xa9, 0x98, 0x29, 0x13, 0x09, 0xdb, 0x64, 0xc8, 0x0a, 0x32, 0x01, - 0xb9, 0x0c, 0x91, 0x3a, 0xa5, 0x2c, 0x87, 0x9b, 0x99, 0x62, 0x03, 0xbd, 0x48, 0x91, 0x88, 0x30, - 0xd1, 0x19, 0xc0, 0x60, 0x91, 0xa9, 0x1a, 0x32, 0x92, 0xaf, 0x21, 0x13, 0xab, 0x18, 0x80, 0x9a, - 0x31, 0x37, 0xfa, 0x0b, 0x32, 0x03, 0xba, 0x00, 0xaf, 0x51, 0x83, 0xbb, 0x19, 0x03, 0x1b, 0x07, - 0xa9, 0x8e, 0x23, 0x08, 0x80, 0x8b, 0x80, 0x10, 0x10, 0x01, 0xd9, 0xcd, 0x62, 0x81, 0xa9, 0x29, - 0x32, 0x96, 0xae, 0x52, 0xb9, 0x00, 0x30, 0x83, 0xab, 0x8c, 0x25, 0xa8, 0x8c, 0x31, 0x81, 0xbc, - 0x62, 0xa1, 0x8f, 0x21, 0x81, 0x88, 0xac, 0x22, 0x08, 0x15, 0xda, 0x19, 0x04, 0xab, 0x52, 0x91, - 0xab, 0x18, 0x44, 0xb0, 0xab, 0x39, 0x47, 0xb8, 0x9a, 0x10, 0x10, 0x90, 0x19, 0x83, 0xcf, 0x40, - 0x12, 0xb9, 0x9f, 0x63, 0x90, 0xaa, 0x08, 0x19, 0x02, 0x62, 0xc0, 0x9a, 0x21, 0x88, 0x14, 0xa8, - 0xca, 0x30, 0x34, 0xea, 0x2a, 0x01, 0x00, 0x09, 0x91, 0xac, 0x00, 0x73, 0xc0, 0x18, 0x18, 0xf9, - 0x19, 0x02, 0x41, 0xb1, 0x0c, 0x80, 0x93, 0x9f, 0x43, 0x88, 0xb9, 0x20, 0x82, 0x98, 0x0d, 0x26, - 0x82, 0xcd, 0x19, 0x31, 0xb1, 0x60, 0xa0, 0xa9, 0xa9, 0x52, 0xa2, 0x0b, 0xa1, 0x7a, 0x04, 0xdc, - 0x28, 0x01, 0x11, 0xb8, 0x0a, 0x83, 0xab, 0x73, 0x82, 0xc0, 0x9e, 0x53, 0x90, 0x8b, 0x00, 0x21, - 0x02, 0xcd, 0x28, 0x01, 0x89, 0x32, 0x91, 0xbd, 0x1a, 0x26, 0xb8, 0x09, 0x21, 0xa0, 0x80, 0x9a, - 0xfb, 0x79, 0x83, 0x08, 0x88, 0xd9, 0x0b, 0x33, 0x54, 0xe0, 0x1a, 0x01, 0x9a, 0x62, 0xb0, 0x8b, - 0x32, 0xaa, 0x83, 0x8e, 0x22, 0x14, 0x8a, 0xa3, 0xbf, 0x08, 0x63, 0x83, 0x9c, 0x99, 0x22, 0x11, - 0xf9, 0x49, 0x91, 0x1b, 0x03, 0xa9, 0x9a, 0x9a, 0x77, 0xc0, 0x1a, 0xa1, 0x38, 0x33, 0xfa, 0x18, - 0x99, 0x32, 0x91, 0x88, 0x9a, 0x90, 0x70, 0x82, 0xbc, 0x09, 0x44, 0xb0, 0x30, 0xfb, 0x18, 0x10, - 0x11, 0xa0, 0x0c, 0x81, 0x29, 0x35, 0xf9, 0x1a, 0x01, 0x19, 0x00, 0xc0, 0x29, 0x9b, 0x47, 0xb0, - 0x8b, 0x20, 0x83, 0x29, 0xc8, 0x91, 0x4b, 0x93, 0x38, 0xfa, 0xa0, 0x3b, 0x36, 0x02, 0xde, 0x28, - 0x02, 0x00, 0xba, 0x10, 0xa0, 0x38, 0x21, 0x94, 0xcf, 0x28, 0x86, 0x09, 0xa0, 0x8d, 0x44, 0xb0, - 0x0b, 0x03, 0x9b, 0x41, 0x11, 0xb1, 0x9f, 0x48, 0x84, 0x8a, 0x81, 0xab, 0x30, 0x17, 0x9b, 0x00, - 0x8c, 0x13, 0x18, 0xca, 0x33, 0xaf, 0x44, 0xa8, 0xab, 0x31, 0xa1, 0x50, 0x80, 0xe9, 0x38, 0x80, - 0x02, 0xb8, 0x3b, 0xb0, 0x61, 0x83, 0xbf, 0x42, 0x99, 0x10, 0x03, 0xae, 0x89, 0x72, 0x82, 0xab, - 0x10, 0x8a, 0x01, 0x04, 0x09, 0xe8, 0x59, 0xa2, 0x1a, 0x92, 0xca, 0x51, 0x91, 0x99, 0x9c, 0x64, - 0xa0, 0x09, 0x81, 0xc9, 0x10, 0x11, 0x12, 0xeb, 0x39, 0x06, 0x9c, 0x20, 0x80, 0x88, 0x91, 0x89, - 0x33, 0xaa, 0xfa, 0x71, 0xa1, 0x0b, 0x20, 0x03, 0xae, 0x08, 0x53, 0xc8, 0x28, 0xa0, 0x21, 0xdb, - 0x11, 0x38, 0xb1, 0x8a, 0x8a, 0x34, 0x81, 0x09, 0x41, 0xf2, 0x0f, 0x21, 0x01, 0x99, 0xab, 0x63, - 0xb1, 0x2d, 0xa4, 0x3b, 0x92, 0x8b, 0x21, 0xac, 0x13, 0x21, 0xa1, 0xbf, 0x32, 0x28, 0xe0, 0x4a, - 0x92, 0x0b, 0x32, 0xa2, 0xdf, 0x49, 0x13, 0x9a, 0x11, 0xe8, 0x48, 0x91, 0x1b, 0xa2, 0x10, 0x8c, - 0x12, 0x51, 0xf0, 0x2b, 0x93, 0x18, 0xba, 0x58, 0x02, 0xd8, 0x3a, 0xa3, 0x90, 0x0f, 0x05, 0x0a, - 0x90, 0x1b, 0x86, 0x28, 0xc0, 0x28, 0x88, 0xaa, 0x63, 0x90, 0x90, 0xac, 0x43, 0xe9, 0x21, 0x91, - 0x89, 0xa1, 0x3a, 0x87, 0x9d, 0x33, 0x89, 0x88, 0x9a, 0x0a, 0x35, 0x08, 0x22, 0xed, 0x20, 0xa1, - 0x20, 0xc2, 0x8c, 0x02, 0x40, 0xc2, 0xae, 0x31, 0xa3, 0x0b, 0x23, 0x8b, 0xa1, 0x2a, 0x93, 0x23, - 0x8d, 0xe8, 0x65, 0xd8, 0x19, 0x11, 0x88, 0x90, 0x0a, 0x23, 0xac, 0x34, 0x89, 0xa2, 0xbf, 0x39, - 0x15, 0x88, 0xa8, 0xaa, 0x22, 0x51, 0xd9, 0x20, 0x90, 0x9a, 0x57, 0xd9, 0x1a, 0x21, 0x82, 0x8a, - 0xa8, 0x19, 0x41, 0x25, 0xc9, 0xbd, 0x72, 0x91, 0x89, 0x80, 0xca, 0x51, 0x81, 0x90, 0xab, 0x20, - 0x40, 0xb3, 0x8c, 0xb0, 0x71, 0x82, 0xcb, 0x31, 0xd8, 0x41, 0xa8, 0x29, 0x98, 0x80, 0x58, 0x84, - 0x9c, 0x98, 0x41, 0x80, 0xa8, 0x8b, 0x14, 0x81, 0x9b, 0x44, 0xd8, 0xac, 0x73, 0xa0, 0x80, 0x08, - 0x81, 0x0b, 0x04, 0x9c, 0x43, 0x99, 0x8a, 0x32, 0xc9, 0x01, 0xac, 0x74, 0xb1, 0x99, 0x88, 0x48, - 0x86, 0x9b, 0x92, 0x1a, 0x13, 0x99, 0xb1, 0x8c, 0x1a, 0x57, 0x08, 0xdc, 0x28, 0x05, 0x88, 0x99, - 0x8a, 0x22, 0x22, 0xc9, 0x98, 0x89, 0x54, 0xb0, 0x38, 0xfa, 0x39, 0x14, 0xa9, 0xa9, 0x3a, 0x04, - 0xa0, 0x2a, 0xd1, 0x49, 0xa2, 0x8b, 0x22, 0xa1, 0x1e, 0x05, 0xaa, 0x0b, 0x16, 0xa9, 0x80, 0x48, - 0x91, 0x10, 0xe9, 0x41, 0x90, 0x30, 0xdd, 0x21, 0x11, 0xc8, 0x18, 0xfa, 0x30, 0x83, 0x88, 0xa0, - 0xbf, 0x53, 0x92, 0x89, 0xab, 0x02, 0x51, 0x91, 0x0b, 0xd1, 0x49, 0x01, 0x93, 0xaf, 0x23, 0x98, - 0x30, 0xd0, 0x9b, 0x23, 0x50, 0xb3, 0x9f, 0x08, 0x25, 0xa9, 0x99, 0x0a, 0x24, 0x01, 0xba, 0xaa, - 0x3a, 0x37, 0x80, 0xca, 0xab, 0x72, 0x82, 0x98, 0xa8, 0x19, 0x43, 0xb1, 0x0a, 0xc9, 0x61, 0xb2, - 0x0a, 0x20, 0xc9, 0x45, 0xba, 0x09, 0x1b, 0x27, 0x9a, 0x98, 0x18, 0x19, 0x87, 0x8b, 0x92, 0x2c, - 0x86, 0xab, 0x20, 0x02, 0x9a, 0x15, 0x9c, 0xa2, 0x61, 0xa9, 0x80, 0x2a, 0x17, 0xaa, 0xb3, 0x1e, - 0x12, 0x02, 0x80, 0xbd, 0x1a, 0x12, 0x31, 0x83, 0xdf, 0x28, 0x11, 0xa1, 0x8c, 0x21, 0x85, 0x8d, - 0x83, 0xa9, 0x28, 0x13, 0xa8, 0x9a, 0x09, 0x27, 0x0d, 0x83, 0xac, 0x33, 0x89, 0x00, 0xb8, 0x8f, - 0x35, 0xa0, 0x8a, 0xb9, 0x78, 0x81, 0xb8, 0x29, 0x15, 0xda, 0x5a, 0xc3, 0x2a, 0x03, 0x8a, 0x89, - 0x98, 0x49, 0x17, 0xab, 0x98, 0x30, 0x06, 0xcc, 0x20, 0x01, 0x98, 0x81, 0x10, 0xec, 0x31, 0x08, - 0x03, 0xeb, 0x19, 0x23, 0xa1, 0x0c, 0x92, 0x81, 0x40, 0xfb, 0x29, 0x24, 0xb0, 0x1a, 0xa8, 0x18, - 0x82, 0x88, 0x42, 0xfc, 0x39, 0x82, 0x91, 0xac, 0x38, 0x16, 0xbb, 0x21, 0xa8, 0x38, 0xa9, 0x57, - 0xc0, 0x0a, 0x80, 0x38, 0x02, 0x08, 0x99, 0xf9, 0x5d, 0x94, 0x0a, 0xa0, 0x20, 0xc9, 0x58, 0xa0, - 0x18, 0x31, 0xc0, 0x88, 0x9e, 0x21, 0x24, 0xb0, 0x9c, 0x92, 0x10, 0x98, 0x32, 0xa4, 0x8f, 0x28, - 0xa3, 0x28, 0xba, 0x36, 0xab, 0x05, 0xaf, 0x31, 0x88, 0x00, 0x20, 0xd1, 0x8a, 0xb9, 0x70, 0x85, - 0x99, 0x00, 0x99, 0x80, 0x0c, 0x37, 0xc0, 0x8a, 0x29, 0x83, 0x1a, 0x01, 0x80, 0x00, 0x9a, 0xce, - 0x41, 0x83, 0x9a, 0x44, 0xdb, 0x88, 0x2a, 0x16, 0x98, 0x8a, 0x11, 0x98, 0x88, 0x9b, 0x25, 0x61, - 0xd2, 0x8d, 0x11, 0x88, 0x31, 0xa2, 0x8b, 0xca, 0x30, 0x83, 0x98, 0x09, 0x16, 0xac, 0x13, 0xbc, - 0x00, 0x76, 0xd2, 0x1a, 0xa1, 0x09, 0x23, 0xa1, 0x9c, 0x32, 0x98, 0xea, 0x51, 0xa9, 0x52, 0xa8, - 0xa8, 0x09, 0x10, 0x42, 0x12, 0xf0, 0x0f, 0x03, 0x89, 0x01, 0x18, 0xba, 0x31, 0xc9, 0x38, 0xa2, - 0x52, 0xeb, 0x38, 0xa1, 0x2b, 0x16, 0xaa, 0x08, 0x12, 0x08, 0xc9, 0x81, 0x68, 0x91, 0x11, 0xcf, - 0x28, 0x22, 0x02, 0xdb, 0x99, 0x21, 0x02, 0xd8, 0x4a, 0x92, 0x8b, 0x34, 0xe1, 0x8d, 0x34, 0x80, - 0xaa, 0x8b, 0x29, 0x17, 0x08, 0x80, 0xbd, 0x32, 0x88, 0xa1, 0x2b, 0x27, 0xdb, 0x50, 0xb0, 0x09, - 0x01, 0x01, 0x80, 0xac, 0x31, 0x80, 0x23, 0xfb, 0x79, 0x91, 0x9c, 0x22, 0x99, 0x01, 0x00, 0xa0, - 0xad, 0x50, 0x93, 0x1b, 0xb2, 0x1c, 0x34, 0x91, 0x9f, 0x11, 0x00, 0x83, 0x9f, 0x01, 0x09, 0x53, - 0xe0, 0x2a, 0x83, 0x8a, 0x08, 0x92, 0x9e, 0x44, 0x80, 0xba, 0x89, 0x38, 0x34, 0xa3, 0xcf, 0x10, - 0x11, 0x91, 0x10, 0xb9, 0x2b, 0x04, 0xc8, 0x29, 0x99, 0x14, 0x50, 0xd1, 0x9c, 0x30, 0x12, 0x11, - 0xfa, 0x2c, 0x82, 0x40, 0xb0, 0x9b, 0x18, 0x35, 0x8a, 0xf9, 0x48, 0x81, 0x29, 0xa1, 0x8c, 0x09, - 0x13, 0x80, 0x0b, 0x83, 0x9c, 0x02, 0x42, 0x9b, 0x47, 0xeb, 0x1a, 0x02, 0x30, 0xc0, 0x89, 0xa8, - 0x20, 0x27, 0xcb, 0x21, 0x9b, 0x21, 0x25, 0xcb, 0x20, 0x10, 0xa1, 0xdb, 0x29, 0x00, 0x44, 0xc8, - 0x99, 0x5b, 0x94, 0x39, 0xf8, 0x18, 0x91, 0x31, 0xca, 0x8a, 0x35, 0x9c, 0x04, 0x9a, 0xba, 0x45, - 0x01, 0x99, 0x99, 0x8b, 0x38, 0x47, 0xbd, 0x41, 0x81, 0xaa, 0x28, 0x00, 0x01, 0x09, 0xb1, 0x1d, - 0x85, 0x8a, 0x50, 0xb1, 0x9c, 0x12, 0x32, 0xe9, 0x1a, 0x04, 0x1a, 0xe8, 0x29, 0x13, 0xc0, 0x2b, - 0x83, 0xab, 0x68, 0x91, 0x00, 0xaa, 0x72, 0x84, 0xac, 0x9a, 0x72, 0x02, 0x9a, 0x9b, 0x12, 0x8a, - 0x26, 0xc1, 0x0e, 0x02, 0x09, 0x22, 0xea, 0x19, 0x14, 0x99, 0xa0, 0x1c, 0x12, 0x10, 0x88, 0xc8, - 0x1c, 0x43, 0xa2, 0x9e, 0x02, 0x01, 0x22, 0xec, 0x09, 0x40, 0xb2, 0x40, 0xc9, 0x88, 0x11, 0x21, - 0xa2, 0x0c, 0xd9, 0x50, 0xb1, 0x2b, 0x12, 0x83, 0x9f, 0x91, 0x18, 0x19, 0x13, 0xb8, 0xbc, 0x70, - 0x83, 0x8b, 0xe1, 0x4a, 0x83, 0x98, 0x19, 0xc8, 0x70, 0xa2, 0x0b, 0x33, 0xd9, 0x09, 0x22, 0x80, - 0xd2, 0x2d, 0xa3, 0x9d, 0x02, 0x40, 0x83, 0xeb, 0x8b, 0x14, 0x82, 0x8c, 0x23, 0xba, 0x9b, 0x46, - 0xb2, 0x0d, 0x80, 0x41, 0xc0, 0x0a, 0x83, 0x28, 0x81, 0xa9, 0x30, 0xf8, 0x69, 0x92, 0x89, 0x8a, - 0x33, 0xa9, 0xaf, 0x33, 0x89, 0x42, 0xf8, 0x8b, 0x31, 0x01, 0x10, 0xc0, 0x1b, 0xc9, 0x64, 0xc9, - 0x20, 0x00, 0x91, 0x0b, 0x81, 0x48, 0x98, 0x92, 0x0c, 0x14, 0x9a, 0x31, 0xa4, 0xcf, 0x24, 0x98, - 0xa0, 0x8c, 0x12, 0x53, 0xd8, 0x88, 0x28, 0xd1, 0x29, 0x02, 0x89, 0x88, 0x31, 0xc0, 0x9c, 0x3a, - 0x67, 0x99, 0xaa, 0x28, 0x24, 0xb8, 0x8c, 0x22, 0x98, 0x23, 0x00, 0xcd, 0x99, 0x50, 0x22, 0xc3, - 0xbf, 0x31, 0x14, 0xab, 0x88, 0x31, 0xa9, 0x20, 0x90, 0x98, 0x4d, 0x06, 0xaa, 0xb9, 0x49, 0x16, - 0xa9, 0x09, 0x00, 0x10, 0x02, 0x88, 0xef, 0x31, 0x01, 0xb8, 0x29, 0xe8, 0x50, 0xa1, 0x09, 0xb8, - 0x52, 0xa9, 0x10, 0x02, 0xbc, 0x73, 0xb1, 0x89, 0x08, 0x82, 0x40, 0xa0, 0xca, 0x2d, 0x27, 0xab, - 0x08, 0x80, 0x02, 0x1a, 0x04, 0xcb, 0x89, 0x24, 0x98, 0x12, 0xcc, 0x28, 0x93, 0x8e, 0x14, 0x29, - 0xe0, 0x1b, 0x02, 0x31, 0xa9, 0x22, 0x9e, 0x02, 0x18, 0x00, 0xc8, 0x08, 0x38, 0xa6, 0x9f, 0x30, - 0x23, 0x91, 0xde, 0x29, 0x14, 0x98, 0x09, 0xb1, 0x0c, 0x25, 0x08, 0xdd, 0x30, 0x83, 0x80, 0xb9, - 0x09, 0x1a, 0x27, 0x08, 0xa8, 0xab, 0x38, 0x27, 0xd8, 0x8a, 0x21, 0x82, 0x28, 0xda, 0x80, 0x60, - 0xa2, 0x8d, 0x02, 0x9a, 0x11, 0x25, 0xec, 0x00, 0x20, 0x90, 0x08, 0x98, 0x10, 0x23, 0xa1, 0xcf, - 0x32, 0xb0, 0x2a, 0x25, 0xc9, 0x89, 0x08, 0x24, 0xad, 0x34, 0xab, 0x82, 0x0e, 0x04, 0x08, 0x08, - 0xca, 0x39, 0x22, 0xa2, 0xcb, 0x38, 0x13, 0xa3, 0xdf, 0x12, 0x99, 0x11, 0x48, 0xe2, 0x0b, 0x81, - 0x53, 0xa0, 0xaa, 0x3b, 0x07, 0x9a, 0x02, 0x99, 0x40, 0x85, 0xab, 0xea, 0x61, 0x80, 0x80, 0x08, - 0xb9, 0x4a, 0x06, 0x1b, 0xd1, 0x2a, 0x94, 0x09, 0x90, 0x18, 0xa1, 0x1a, 0x16, 0xcb, 0x18, 0x00, - 0x83, 0x49, 0xb2, 0x8f, 0x03, 0x09, 0x92, 0x28, 0xc8, 0x10, 0xa8, 0x38, 0x00, 0x06, 0x8f, 0x12, - 0x80, 0xbf, 0x53, 0xa1, 0x8b, 0x05, 0xa9, 0x19, 0x02, 0x14, 0xbe, 0x11, 0x21, 0xa9, 0x22, 0xfb, - 0x38, 0x90, 0x13, 0x8e, 0xc2, 0x3a, 0x04, 0x00, 0x98, 0xbd, 0x50, 0x02, 0x99, 0xa9, 0x34, 0xaa, - 0x84, 0x8d, 0x92, 0x69, 0x92, 0x08, 0xb9, 0xa9, 0x41, 0x35, 0xf9, 0x0b, 0x22, 0x01, 0xba, 0x90, - 0x38, 0x84, 0x88, 0x30, 0xde, 0x40, 0x92, 0x99, 0x01, 0xe8, 0x49, 0x94, 0x0b, 0x98, 0x63, 0xb0, - 0x1a, 0xa0, 0x58, 0x91, 0x08, 0xb0, 0x5b, 0xc2, 0x0a, 0x35, 0xca, 0x01, 0x29, 0xd9, 0x29, 0x13, - 0x10, 0xb8, 0x1a, 0xcf, 0x53, 0x82, 0xbd, 0x51, 0x91, 0xaa, 0x12, 0x00, 0x89, 0x03, 0xa9, 0xae, - 0x15, 0x18, 0x11, 0xe1, 0x8c, 0x28, 0x15, 0xaa, 0x0b, 0x33, 0x00, 0xa9, 0x1b, 0x23, 0xa9, 0x08, - 0x11, 0x28, 0xf8, 0x68, 0xa8, 0x11, 0xcf, 0x44, 0xa9, 0x09, 0x89, 0x17, 0x8a, 0x80, 0x98, 0x28, - 0xa2, 0x1b, 0x13, 0x1b, 0xd1, 0x30, 0xbc, 0x35, 0x8b, 0x83, 0xa8, 0xbd, 0x79, 0x24, 0xc1, 0xac, - 0x10, 0x24, 0xc8, 0x08, 0xa8, 0x48, 0x22, 0xd0, 0x0c, 0x03, 0x08, 0x80, 0x80, 0xbd, 0x31, 0x22, - 0x07, 0xaf, 0x82, 0x48, 0x91, 0xba, 0x18, 0x51, 0xb2, 0x9a, 0x23, 0xca, 0x41, 0x98, 0x80, 0x89, - 0x23, 0x3b, 0xc7, 0x0d, 0x82, 0x28, 0x94, 0xad, 0x31, 0xa2, 0x2b, 0xc1, 0x29, 0x42, 0xea, 0x58, - 0xb1, 0x1b, 0x03, 0xba, 0x51, 0xa1, 0x11, 0x9a, 0xca, 0x08, 0x74, 0x82, 0xb9, 0x9c, 0x41, 0x08, - 0x04, 0x8d, 0x81, 0x81, 0xbb, 0x44, 0x08, 0xc1, 0x28, 0xe9, 0x30, 0xca, 0x61, 0x92, 0xab, 0x98, - 0x30, 0x12, 0x81, 0xaa, 0x3a, 0x47, 0xac, 0x29, 0x93, 0x1a, 0x31, 0x90, 0xa1, 0xff, 0x33, 0xa0, - 0x8b, 0x84, 0x9b, 0x15, 0x99, 0x08, 0x29, 0x04, 0xcb, 0x49, 0xc0, 0x18, 0x49, 0x95, 0x9b, 0x10, - 0x91, 0x1a, 0x22, 0xa9, 0x22, 0xbb, 0x1d, 0xa2, 0x2f, 0x47, 0xaa, 0x99, 0x21, 0xd1, 0x3c, 0x06, - 0x89, 0x88, 0x11, 0xbc, 0x41, 0x98, 0x33, 0xcc, 0x08, 0x82, 0x29, 0x15, 0xae, 0x18, 0x12, 0x88, - 0x99, 0x8a, 0x13, 0x01, 0xb4, 0x4c, 0xf8, 0x39, 0x84, 0x1b, 0x81, 0x09, 0x42, 0xfa, 0x5b, 0x82, - 0x08, 0x99, 0x92, 0x0b, 0x14, 0x1b, 0x94, 0x1b, 0xc8, 0x28, 0x83, 0xaa, 0xcc, 0x72, 0x95, 0xad, - 0x41, 0x98, 0x08, 0x82, 0x19, 0x18, 0xb9, 0x50, 0xb9, 0x43, 0xca, 0x32, 0x90, 0xfb, 0x48, 0x82, - 0x00, 0xba, 0x00, 0x4a, 0xa4, 0xaa, 0x70, 0xa2, 0x19, 0xb2, 0x9f, 0x15, 0x9a, 0x23, 0x9b, 0xa8, - 0x59, 0x80, 0x80, 0xac, 0x63, 0xa1, 0x9c, 0x01, 0x88, 0x64, 0xb0, 0x8a, 0x88, 0x08, 0x54, 0x90, - 0xc0, 0x1c, 0x23, 0x91, 0xba, 0x8f, 0x26, 0x99, 0x80, 0x89, 0x1a, 0x13, 0xc8, 0x38, 0xa9, 0xb3, - 0x4f, 0x02, 0xc8, 0x2b, 0x33, 0xd0, 0xab, 0x69, 0x83, 0x28, 0xbc, 0x04, 0x0a, 0x92, 0x19, 0x15, - 0x99, 0xcb, 0x52, 0x10, 0xe0, 0x19, 0x01, 0x98, 0x1a, 0x01, 0x58, 0xd1, 0x8d, 0x23, 0x82, 0xbe, - 0x31, 0x11, 0xa9, 0x9a, 0x31, 0xa0, 0x40, 0x10, 0xe0, 0x38, 0xc0, 0x58, 0x93, 0xaa, 0xbd, 0x72, - 0x84, 0x9c, 0x08, 0x41, 0xa1, 0x8b, 0x81, 0x2a, 0x95, 0x28, 0x99, 0xd0, 0x0c, 0x53, 0x91, 0xb0, - 0x9f, 0x23, 0x03, 0x9c, 0xa8, 0x58, 0x00, 0x00, 0xa0, 0x8b, 0x0b, 0x27, 0x3a, 0xc4, 0x8b, 0x08, - 0x32, 0xc3, 0x0b, 0x40, 0xb4, 0x8d, 0x08, 0x14, 0xa9, 0x1a, 0x07, 0xa9, 0x99, 0xa1, 0x73, 0xc1, - 0x10, 0x9a, 0xb1, 0x5a, 0x03, 0x82, 0xdc, 0x19, 0x05, 0x98, 0x09, 0x08, 0x22, 0x11, 0xfb, 0x1a, - 0x18, 0x34, 0xa1, 0x9e, 0xa8, 0x51, 0x80, 0x12, 0xdb, 0x28, 0xb2, 0x60, 0xb0, 0x8c, 0x43, 0x98, - 0x98, 0xc9, 0x58, 0x93, 0x19, 0x11, 0xfc, 0x20, 0x80, 0x01, 0xaa, 0x08, 0x34, 0xb1, 0x9d, 0x90, - 0x50, 0x11, 0x94, 0x8f, 0x81, 0x09, 0x33, 0xa0, 0x8c, 0xc9, 0x39, 0x17, 0x98, 0xa8, 0x18, 0x18, - 0xc3, 0x1c, 0x13, 0xc0, 0x1a, 0x19, 0x07, 0x0d, 0x90, 0x42, 0xa8, 0xba, 0x60, 0x91, 0x1b, 0x87, - 0x8a, 0xa0, 0x11, 0x21, 0xaa, 0x93, 0x1c, 0x11, 0xa5, 0x2c, 0xe0, 0x29, 0x02, 0x84, 0xad, 0x48, - 0x81, 0xa8, 0x40, 0xd8, 0x18, 0x08, 0x81, 0x30, 0xca, 0x11, 0x98, 0x39, 0xa6, 0x0c, 0x21, 0xa2, - 0x3a, 0x91, 0x85, 0xaf, 0x49, 0x04, 0x98, 0x9d, 0x02, 0x12, 0x9b, 0x12, 0xb8, 0x2d, 0x91, 0x42, - 0xb9, 0xa9, 0x30, 0x2a, 0x17, 0x8f, 0x20, 0x82, 0x8b, 0x29, 0x93, 0x10, 0x1b, 0x97, 0xab, 0x42, - 0x99, 0x06, 0xbb, 0x20, 0xa0, 0x8e, 0x27, 0xaa, 0x98, 0x30, 0x89, 0x04, 0x8a, 0x18, 0x9a, 0x17, - 0x1f, 0xa2, 0x89, 0x28, 0x03, 0x8c, 0xa2, 0x0c, 0x06, 0x19, 0x94, 0x9d, 0x32, 0xe0, 0x39, 0xa2, - 0x0d, 0x41, 0x81, 0xaa, 0x8a, 0x02, 0x40, 0x82, 0xea, 0x0a, 0x18, 0x15, 0xa0, 0x1b, 0xe1, 0x2a, - 0x74, 0xc0, 0x0a, 0x11, 0x11, 0xa1, 0x8f, 0x01, 0x00, 0x10, 0x01, 0xd8, 0x8d, 0x11, 0x24, 0x9a, - 0xa9, 0x30, 0xa1, 0x0b, 0x16, 0xab, 0x00, 0x81, 0x51, 0xea, 0x20, 0x21, 0xaa, 0x14, 0xad, 0x81, - 0x48, 0x92, 0x89, 0x9b, 0x82, 0x51, 0xb0, 0x61, 0xda, 0x28, 0x10, 0x81, 0xcc, 0x19, 0x37, 0xb9, - 0x18, 0xb1, 0x8f, 0x22, 0x12, 0xc8, 0x2a, 0x90, 0x9a, 0x62, 0x83, 0xe8, 0x2a, 0xb3, 0x20, 0xa8, - 0x39, 0x07, 0x8d, 0x08, 0x00, 0x00, 0x0c, 0x17, 0xa9, 0x8c, 0x32, 0xa0, 0x29, 0xa0, 0x2a, 0x84, - 0xcb, 0x30, 0x52, 0xf8, 0x49, 0x81, 0x99, 0x09, 0x28, 0x04, 0xa9, 0x8c, 0x80, 0x63, 0xa8, 0xa9, - 0x46, 0xcb, 0x00, 0x01, 0x00, 0xb0, 0x38, 0x00, 0xa3, 0xac, 0x0e, 0x07, 0x99, 0x40, 0xc0, 0x18, - 0x99, 0x41, 0x93, 0x8c, 0xa8, 0x59, 0x92, 0x89, 0x99, 0x43, 0xc8, 0x08, 0x9b, 0x27, 0x0b, 0x91, - 0x31, 0xf9, 0x8d, 0x24, 0x00, 0x80, 0xc9, 0x09, 0x20, 0x06, 0x9a, 0x89, 0x04, 0xab, 0x30, 0xa4, - 0x0c, 0xb0, 0x73, 0x00, 0xda, 0x09, 0x43, 0x00, 0xea, 0x28, 0x91, 0x89, 0x50, 0xa3, 0x9c, 0x20, - 0x91, 0x2b, 0x96, 0x0b, 0x02, 0x01, 0xc8, 0x8c, 0x21, 0x15, 0x9c, 0x80, 0x40, 0xd9, 0x09, 0x73, - 0x90, 0xbb, 0x52, 0xa1, 0xab, 0x23, 0x48, 0xd0, 0x09, 0x30, 0x98, 0x80, 0x28, 0x98, 0xa3, 0x0f, - 0x80, 0x06, 0x3b, 0xb2, 0x9c, 0x99, 0x32, 0xa0, 0x73, 0xa1, 0x9e, 0x11, 0x01, 0x91, 0x99, 0x19, - 0x98, 0x35, 0xc9, 0x6a, 0x84, 0xaa, 0x18, 0xa9, 0x80, 0x44, 0x89, 0xa0, 0x0b, 0x9d, 0x47, 0xbb, - 0x08, 0x05, 0x89, 0x32, 0xfb, 0x29, 0x01, 0x01, 0x9b, 0x43, 0xfa, 0x49, 0x02, 0xb9, 0x39, 0x81, - 0xa1, 0x40, 0xdc, 0x22, 0x11, 0xea, 0x2a, 0x05, 0xab, 0x01, 0x21, 0x90, 0x9c, 0x53, 0xb9, 0x08, - 0x03, 0x9d, 0x33, 0xe9, 0x19, 0x24, 0xe0, 0x0a, 0x33, 0xc9, 0x20, 0x10, 0xd2, 0x1c, 0x02, 0x98, - 0x08, 0x01, 0x8b, 0x15, 0xc9, 0x2e, 0x85, 0x1b, 0x93, 0x9a, 0x88, 0x43, 0xc9, 0x58, 0xc0, 0x1a, - 0x04, 0x88, 0x80, 0x9a, 0x09, 0x42, 0x90, 0x09, 0xd3, 0x3c, 0xa3, 0x24, 0xcf, 0x31, 0x10, 0xc8, - 0x10, 0x01, 0xa9, 0xba, 0x56, 0x9a, 0x90, 0x48, 0x80, 0xd2, 0x1e, 0x12, 0x81, 0xab, 0x51, 0xd0, - 0x29, 0x01, 0xa3, 0x0d, 0x08, 0xc1, 0x41, 0x08, 0xb3, 0x0e, 0xa2, 0x19, 0x22, 0x84, 0xbe, 0x41, - 0x81, 0xb8, 0x28, 0xbb, 0x64, 0x90, 0x81, 0x8b, 0xb8, 0x58, 0x23, 0xc2, 0xaf, 0x02, 0x40, 0xb1, - 0x8a, 0x80, 0x28, 0x11, 0xaa, 0xa0, 0x0b, 0x75, 0x96, 0xac, 0x30, 0xa0, 0x40, 0xa0, 0x19, 0xa8, - 0x58, 0x93, 0xac, 0x01, 0x39, 0x84, 0x02, 0xdf, 0x21, 0x81, 0x89, 0x20, 0xc8, 0x09, 0x19, 0x15, - 0xab, 0x11, 0x21, 0xec, 0x18, 0x23, 0x98, 0x18, 0xf8, 0x3a, 0x34, 0xc1, 0x9d, 0x41, 0xb3, 0x0c, - 0x81, 0x88, 0x08, 0x23, 0xe9, 0x28, 0x89, 0x06, 0x9a, 0x81, 0xaa, 0x71, 0x85, 0xbc, 0x28, 0x01, - 0x92, 0x50, 0xfa, 0x08, 0x41, 0xa1, 0x9a, 0x29, 0x91, 0x50, 0x90, 0xab, 0x28, 0x24, 0xb9, 0x10, - 0xc8, 0x1d, 0x27, 0xa8, 0xaa, 0x21, 0x38, 0xb1, 0xcb, 0x3c, 0x07, 0x9a, 0x32, 0xda, 0x10, 0x21, - 0xa0, 0x0a, 0xeb, 0x52, 0x93, 0x0c, 0xa0, 0x19, 0x90, 0x40, 0x03, 0xcc, 0x38, 0x92, 0x8b, 0x17, - 0xba, 0x40, 0xc0, 0x49, 0xa1, 0x20, 0xab, 0x13, 0x8d, 0x31, 0xd4, 0x2c, 0x83, 0x9c, 0x13, 0x9a, - 0x04, 0x9d, 0x31, 0xa3, 0x9e, 0x51, 0x82, 0x9c, 0x28, 0x91, 0x12, 0x8a, 0xc0, 0x8d, 0x35, 0xb8, - 0x18, 0x08, 0xfa, 0x51, 0x91, 0xaa, 0x29, 0x13, 0x9a, 0x15, 0xcd, 0x31, 0x00, 0xb9, 0x13, 0x9b, - 0x12, 0x82, 0xa9, 0x8f, 0x17, 0x0a, 0xa0, 0x29, 0xb9, 0x35, 0xb1, 0x1a, 0xb8, 0xaa, 0x75, 0xb3, - 0xab, 0x29, 0x14, 0x99, 0xb9, 0x5a, 0x95, 0x2b, 0x80, 0xb3, 0x1e, 0x98, 0x14, 0x18, 0xb9, 0x8a, - 0x45, 0x99, 0xa0, 0x5b, 0x02, 0x93, 0x9f, 0x11, 0x91, 0x02, 0x9b, 0x87, 0x8d, 0xa0, 0x72, 0xb2, - 0x9b, 0x09, 0x43, 0xc2, 0x3b, 0x83, 0xea, 0x3a, 0x04, 0xa8, 0x4a, 0x82, 0xdb, 0x59, 0x91, 0x19, - 0x20, 0xa8, 0x38, 0xba, 0x82, 0x5a, 0xb5, 0x2d, 0x12, 0xa1, 0x9f, 0x21, 0xa0, 0x08, 0x22, 0x9a, - 0x91, 0x2b, 0x97, 0x1d, 0x83, 0x8c, 0x22, 0x8a, 0x82, 0xc0, 0x5b, 0x04, 0xfa, 0x29, 0x21, 0xb2, - 0x1c, 0x10, 0x81, 0x9c, 0x42, 0x93, 0x9e, 0x0a, 0x17, 0x09, 0xaa, 0x00, 0x41, 0xa0, 0x18, 0xa1, - 0x8d, 0x80, 0x71, 0xb2, 0x0d, 0x08, 0x22, 0x99, 0xa2, 0x0e, 0x03, 0x08, 0x89, 0x20, 0xd0, 0x48, - 0x85, 0xbc, 0x51, 0xb9, 0x52, 0xa9, 0x98, 0x40, 0xb2, 0x2a, 0xa1, 0xea, 0x5a, 0x25, 0xb9, 0x99, - 0x10, 0xab, 0x47, 0x99, 0x88, 0x98, 0x20, 0x8a, 0x17, 0xac, 0x11, 0x01, 0x09, 0x81, 0xac, 0x32, - 0x13, 0xfa, 0x1b, 0x14, 0x99, 0x28, 0x13, 0xcf, 0x00, 0x31, 0x03, 0xdc, 0x18, 0x12, 0x09, 0xa1, - 0x2b, 0xb1, 0x30, 0x40, 0x96, 0xce, 0x28, 0x25, 0xb9, 0x1b, 0x01, 0x08, 0x13, 0x80, 0xad, 0xc0, - 0x7a, 0x94, 0x89, 0x98, 0x28, 0xa2, 0x09, 0x40, 0xe0, 0x08, 0x22, 0x89, 0xa2, 0x0d, 0x23, 0x9a, - 0xab, 0x55, 0xa3, 0x9f, 0x23, 0xc9, 0x2a, 0x14, 0xba, 0x20, 0xa4, 0x8c, 0x00, 0x23, 0xb8, 0x1b, - 0xf1, 0x39, 0x32, 0xc2, 0x09, 0xac, 0x90, 0x65, 0x98, 0x98, 0x08, 0x41, 0xc0, 0x18, 0xa1, 0x1c, - 0x04, 0x21, 0xfb, 0x0d, 0x24, 0xa0, 0x09, 0xa8, 0x52, 0xd8, 0x28, 0x01, 0xaa, 0x11, 0x11, 0xe0, - 0x8c, 0x13, 0x41, 0xd8, 0x09, 0x88, 0x41, 0xb0, 0x40, 0x91, 0xbc, 0x30, 0x05, 0xbc, 0x53, 0xa8, - 0x19, 0x11, 0xf9, 0x38, 0x93, 0x0a, 0x90, 0x29, 0xf1, 0x29, 0x81, 0x51, 0xc1, 0x9b, 0x88, 0x51, - 0x01, 0xa0, 0x88, 0x0c, 0xa3, 0x3c, 0x01, 0xa2, 0x69, 0x92, 0xbf, 0x42, 0xa0, 0x41, 0xa0, 0xc9, - 0x1e, 0x23, 0x02, 0xad, 0x80, 0x28, 0x22, 0xaa, 0xaa, 0x23, 0x18, 0x92, 0x55, 0xfb, 0x2d, 0x03, - 0x18, 0xdb, 0x20, 0x01, 0xb0, 0x2a, 0x15, 0xba, 0x32, 0xb0, 0x9f, 0x05, 0x19, 0x84, 0xaa, 0x0b, - 0x33, 0x90, 0x1a, 0xd0, 0x01, 0x5b, 0xc5, 0x2b, 0x81, 0x12, 0xac, 0x81, 0x88, 0x41, 0x90, 0xd8, - 0x6a, 0x02, 0xb8, 0x10, 0xbd, 0x51, 0x84, 0x0a, 0xb0, 0x1b, 0x20, 0x16, 0x90, 0xbc, 0x2b, 0x17, - 0x89, 0xa3, 0x1e, 0x84, 0x9a, 0x18, 0x80, 0x80, 0x0b, 0x37, 0xdc, 0x31, 0xa8, 0x31, 0xda, 0x08, - 0x41, 0xb2, 0x1b, 0x98, 0x30, 0x88, 0x02, 0x3a, 0xf4, 0x1c, 0x32, 0x90, 0x88, 0xdb, 0x38, 0x93, - 0x8b, 0x35, 0xa8, 0xbc, 0x91, 0x60, 0x22, 0xcc, 0x32, 0xbf, 0x33, 0x80, 0x99, 0xa3, 0x1c, 0x12, - 0x90, 0x31, 0xd9, 0x9a, 0x50, 0x24, 0xed, 0x41, 0x90, 0x89, 0x88, 0x08, 0x81, 0x70, 0xa9, 0x88, - 0x40, 0xb0, 0x1a, 0x94, 0x8d, 0x34, 0xba, 0x28, 0x91, 0x9e, 0x35, 0xb8, 0x8a, 0x11, 0x08, 0x84, - 0x8c, 0x23, 0x0a, 0xfb, 0x52, 0x80, 0xaa, 0x08, 0x32, 0xc9, 0x08, 0x31, 0xc2, 0x8f, 0x14, 0xac, - 0x24, 0xb9, 0x81, 0x9a, 0x73, 0x91, 0x9b, 0x11, 0xa8, 0x19, 0x43, 0xa1, 0x0a, 0xdc, 0x62, 0xa1, - 0x89, 0x80, 0x02, 0xb0, 0x4c, 0xa4, 0x3c, 0xa2, 0x9a, 0x09, 0x21, 0x07, 0x8e, 0x02, 0x89, 0x13, - 0xad, 0x22, 0xb9, 0x2b, 0x35, 0xa1, 0xad, 0x31, 0xa8, 0x90, 0x51, 0xa1, 0x51, 0xba, 0x98, 0x11, - 0x7a, 0xd2, 0x38, 0xba, 0x88, 0x55, 0xa9, 0x89, 0x08, 0x82, 0x31, 0xe9, 0x8b, 0x25, 0x20, 0xf8, - 0x39, 0xa9, 0x11, 0x80, 0x31, 0xf9, 0x3a, 0x13, 0xd9, 0x50, 0xd9, 0x20, 0x01, 0xb8, 0x10, 0x0a, - 0xb4, 0x5b, 0xa2, 0x1b, 0x02, 0x18, 0xa4, 0xbf, 0x52, 0x02, 0x99, 0x8b, 0xc0, 0x49, 0x22, 0x02, - 0xcb, 0xa9, 0x9a, 0x72, 0x87, 0x9b, 0x22, 0xba, 0x09, 0x34, 0xc8, 0x18, 0xa1, 0x03, 0xaf, 0x04, - 0x18, 0xb8, 0x42, 0xca, 0x32, 0xac, 0x35, 0xb9, 0xab, 0x52, 0x12, 0xca, 0x09, 0x11, 0x22, 0xa1, - 0xbf, 0x10, 0x08, 0x62, 0xb1, 0x1c, 0xa1, 0x8a, 0x13, 0x70, 0xda, 0x38, 0x84, 0x9b, 0x89, 0x24, - 0x01, 0xca, 0x0a, 0x15, 0xc9, 0x58, 0xa3, 0x0a, 0xb8, 0x71, 0xc1, 0x8b, 0x31, 0x20, 0xc1, 0x9b, - 0x41, 0xa2, 0x2b, 0x85, 0x9b, 0xaa, 0x55, 0xd9, 0x30, 0x90, 0x21, 0xb0, 0xbf, 0x51, 0x82, 0x98, - 0x2a, 0xb1, 0x29, 0x20, 0x84, 0xde, 0x38, 0x92, 0x43, 0xdb, 0x08, 0x01, 0x10, 0xb1, 0x0c, 0x02, - 0x3a, 0xb1, 0x88, 0x7a, 0xc3, 0x4b, 0xc3, 0x0b, 0x32, 0xa8, 0x48, 0xe1, 0x1b, 0x22, 0xd3, 0x4c, - 0xb1, 0x80, 0x1b, 0x07, 0x8a, 0x82, 0x19, 0x93, 0x9f, 0x30, 0x03, 0x9d, 0x80, 0x49, 0x94, 0x8a, - 0x99, 0x02, 0x99, 0x37, 0x8e, 0x93, 0x9d, 0x42, 0x82, 0xbc, 0x28, 0x12, 0x90, 0x99, 0x21, 0x8a, - 0xb2, 0x71, 0x98, 0xb9, 0x5b, 0x25, 0xb1, 0xaf, 0x30, 0x13, 0x9a, 0x89, 0x99, 0x52, 0x92, 0x8b, - 0xc2, 0x0d, 0x16, 0x88, 0x9a, 0xa8, 0x38, 0x16, 0xb8, 0xb9, 0x48, 0x92, 0x13, 0x8a, 0xf9, 0x3a, - 0x17, 0x0b, 0xb8, 0x30, 0x83, 0x89, 0xac, 0x23, 0x11, 0xbf, 0x54, 0x9a, 0x00, 0x89, 0x21, 0x92, - 0xcf, 0x52, 0x90, 0xa8, 0x28, 0x80, 0xb8, 0x48, 0x82, 0x10, 0xfb, 0x10, 0x10, 0x18, 0x88, 0x11, - 0xb8, 0xef, 0x51, 0x82, 0xba, 0x30, 0x89, 0x12, 0xda, 0x49, 0x82, 0x08, 0x10, 0xe9, 0x99, 0x3a, - 0x17, 0x08, 0xd0, 0x8c, 0x14, 0x80, 0x88, 0xa0, 0x49, 0xa3, 0x1b, 0xc3, 0x1c, 0x13, 0x10, 0xd8, - 0x9c, 0x48, 0x16, 0xaa, 0x18, 0x89, 0x10, 0x30, 0xd0, 0x01, 0xad, 0x44, 0xa0, 0x8c, 0x18, 0x14, - 0x99, 0x81, 0xb8, 0x4a, 0x90, 0x20, 0x01, 0xea, 0x38, 0x91, 0x92, 0xae, 0x71, 0xc4, 0x0c, 0x13, - 0x8a, 0x12, 0xba, 0x69, 0x93, 0xab, 0x10, 0x40, 0xc1, 0x18, 0x88, 0xb8, 0x39, 0x85, 0x29, 0xea, - 0x2b, 0x26, 0x90, 0x9d, 0x00, 0x32, 0xc1, 0x19, 0xd0, 0x19, 0x12, 0x58, 0xa1, 0xae, 0x31, 0x01, - 0x01, 0xcd, 0x30, 0x83, 0x8b, 0xb4, 0x3d, 0x85, 0x0a, 0xb1, 0x0b, 0x31, 0x98, 0x73, 0xe0, 0x19, - 0xa9, 0x25, 0x9a, 0x80, 0x28, 0x90, 0x21, 0xeb, 0x28, 0x24, 0xd8, 0x1a, 0x88, 0x21, 0x01, 0x90, - 0x3a, 0x97, 0x8f, 0x03, 0x88, 0x8b, 0x35, 0xc9, 0x00, 0x9c, 0x83, 0x61, 0xb0, 0xab, 0x44, 0xb8, - 0x1a, 0x24, 0xa9, 0x00, 0xa9, 0x9a, 0x15, 0x0e, 0x04, 0x08, 0xc0, 0x8a, 0x24, 0x18, 0xd0, 0x29, - 0x20, 0xb4, 0x8f, 0x01, 0x13, 0xa9, 0x09, 0x80, 0x99, 0x39, 0xa4, 0x73, 0xe4, 0x0b, 0x12, 0xa8, - 0x19, 0x14, 0x0a, 0xd1, 0x3b, 0xc1, 0x41, 0x88, 0x81, 0x8a, 0xb0, 0x10, 0xdd, 0x76, 0xa0, 0x8a, - 0x00, 0xa1, 0x30, 0xb1, 0x20, 0xdb, 0x31, 0x90, 0x02, 0xbf, 0x42, 0x83, 0xac, 0x80, 0x98, 0x60, - 0x03, 0xba, 0x2a, 0xc9, 0x41, 0x09, 0x03, 0x0b, 0x80, 0xbb, 0x45, 0xc8, 0x9a, 0x55, 0xa3, 0xad, - 0x10, 0x11, 0x80, 0x10, 0xeb, 0x31, 0xb9, 0x1c, 0x27, 0xab, 0x82, 0x19, 0x90, 0x10, 0xc8, 0x78, - 0xa0, 0x01, 0x8a, 0x9a, 0x40, 0x43, 0xa1, 0x8f, 0x83, 0x9e, 0x33, 0x88, 0xc1, 0x29, 0x98, 0x12, - 0x9a, 0xc8, 0x74, 0xc0, 0x19, 0xa2, 0x3b, 0x83, 0x88, 0x10, 0xd0, 0x0c, 0x22, 0x96, 0x9e, 0x22, - 0x80, 0x98, 0x10, 0xab, 0x34, 0xb9, 0x30, 0xb9, 0x92, 0x8f, 0x34, 0x08, 0xd1, 0x8c, 0x81, 0x73, - 0xd1, 0x1a, 0x12, 0xb9, 0x10, 0x10, 0x81, 0x9e, 0x13, 0x8b, 0x27, 0xad, 0x10, 0x13, 0xcb, 0x42, - 0xaa, 0x12, 0x09, 0x91, 0xa8, 0x1c, 0x84, 0x1a, 0x85, 0x8d, 0x82, 0x3b, 0x06, 0xaa, 0x0c, 0x06, - 0x89, 0x90, 0x18, 0xa2, 0x00, 0x0d, 0x25, 0xbb, 0x89, 0x63, 0x01, 0xd9, 0x09, 0x81, 0x40, 0xd1, - 0x4b, 0xa4, 0x0c, 0x92, 0x18, 0x03, 0xab, 0x00, 0x18, 0x21, 0xfb, 0x7a, 0x92, 0x9b, 0x00, 0x25, - 0xac, 0x31, 0x90, 0x8b, 0x82, 0x0b, 0x44, 0x81, 0xbf, 0x52, 0x88, 0x88, 0x80, 0x8b, 0x24, 0xa8, - 0x29, 0xb1, 0x9f, 0x42, 0x01, 0xd8, 0x19, 0x01, 0x08, 0x93, 0x9f, 0x42, 0x90, 0x89, 0x0a, 0x07, - 0x0e, 0x83, 0x0a, 0x08, 0xa1, 0x49, 0xa2, 0x1a, 0x93, 0x8b, 0x29, 0x95, 0x0b, 0x81, 0x51, 0xf0, - 0x18, 0x8a, 0x94, 0x8b, 0x45, 0xa9, 0x01, 0x8c, 0x09, 0x27, 0x99, 0x09, 0x91, 0x9f, 0x14, 0x18, - 0x88, 0xc8, 0x3a, 0x24, 0xe9, 0x28, 0x01, 0xa8, 0x19, 0x18, 0xb0, 0x78, 0xd8, 0x48, 0x93, 0x9c, - 0x00, 0x81, 0x20, 0xb0, 0x38, 0xb0, 0x8b, 0xad, 0x47, 0x81, 0x9f, 0x22, 0x98, 0x88, 0x19, 0x11, - 0x12, 0xb9, 0x9c, 0x10, 0x43, 0x91, 0x0a, 0xfa, 0x28, 0x28, 0x03, 0xa8, 0xce, 0x51, 0xa2, 0x8a, - 0xb9, 0x58, 0x03, 0x39, 0xf3, 0x0f, 0x03, 0x8a, 0x22, 0xba, 0x30, 0xa0, 0x1b, 0x26, 0xcb, 0x38, - 0x25, 0xe9, 0x1a, 0x10, 0x31, 0x90, 0xbb, 0x0b, 0x17, 0xbb, 0x63, 0xb8, 0x18, 0x90, 0x19, 0x23, - 0xdd, 0x09, 0x63, 0xb1, 0x8a, 0x11, 0x90, 0x2a, 0x84, 0x09, 0xaa, 0x90, 0x78, 0x15, 0xa8, 0xae, - 0x42, 0xb9, 0x31, 0x98, 0x01, 0x8a, 0x12, 0x49, 0xf0, 0x8b, 0x72, 0xa1, 0x9a, 0x28, 0x93, 0x2a, - 0x86, 0xae, 0x10, 0x21, 0x01, 0x91, 0xae, 0x28, 0x16, 0x99, 0x8a, 0xa0, 0x69, 0x93, 0x1c, 0x91, - 0x8b, 0x40, 0x84, 0x9b, 0x18, 0x82, 0x20, 0xd8, 0x0c, 0x04, 0x01, 0x9b, 0x19, 0x87, 0x0e, 0x05, - 0x9a, 0x88, 0x02, 0x29, 0xc0, 0x20, 0xbb, 0x52, 0xa0, 0x80, 0x1b, 0xd0, 0x73, 0x98, 0x00, 0xa8, - 0x2a, 0x82, 0x30, 0x9a, 0xc2, 0x48, 0xec, 0x73, 0xc0, 0x39, 0x90, 0x09, 0x12, 0xf8, 0x38, 0xa2, - 0x9a, 0x3b, 0x07, 0x0d, 0x80, 0x22, 0xb9, 0x18, 0x19, 0x24, 0xfa, 0x09, 0x22, 0x88, 0x88, 0x28, - 0xb0, 0x8d, 0x43, 0x22, 0xe8, 0x9c, 0x42, 0x82, 0x8a, 0x10, 0xe9, 0x28, 0x98, 0x85, 0x1b, 0xa2, - 0x09, 0x21, 0xb3, 0xbf, 0x06, 0x9a, 0x02, 0x20, 0xe8, 0x39, 0xd1, 0x28, 0x15, 0xaa, 0x89, 0x83, - 0x3a, 0xa2, 0x06, 0x8f, 0x92, 0x19, 0x13, 0xda, 0x20, 0x02, 0xda, 0x2a, 0x85, 0x0a, 0x31, 0xc1, - 0x8e, 0x01, 0x08, 0x34, 0xc9, 0xbc, 0x43, 0x00, 0xa1, 0x1b, 0x91, 0x38, 0x95, 0x8d, 0x90, 0x80, - 0x79, 0x96, 0x8a, 0x90, 0x10, 0x91, 0x20, 0xa8, 0xa0, 0x4a, 0xe1, 0x58, 0x80, 0x0a, 0x10, 0xf0, - 0x2a, 0x84, 0x18, 0xb8, 0x08, 0x99, 0x35, 0xad, 0x23, 0x80, 0xdb, 0x49, 0x81, 0x20, 0xd8, 0x30, - 0x88, 0xa8, 0x60, 0xa1, 0xbb, 0x59, 0x16, 0xc8, 0x2a, 0xa0, 0x49, 0x13, 0xca, 0x18, 0xc0, 0x3a, - 0x23, 0x95, 0xaf, 0x12, 0x18, 0xc1, 0x1b, 0x12, 0x23, 0xcb, 0xa1, 0x2d, 0x93, 0x40, 0xa2, 0xbe, - 0x30, 0x84, 0x29, 0xc3, 0x8e, 0x11, 0x12, 0xca, 0x41, 0xfa, 0x48, 0x01, 0x98, 0x0c, 0x91, 0x30, - 0x80, 0x82, 0x8e, 0x03, 0xaa, 0x21, 0x19, 0x94, 0x0b, 0xe8, 0x30, 0x81, 0x99, 0x62, 0xc0, 0x0c, - 0x82, 0x38, 0xe8, 0x41, 0x99, 0x12, 0xad, 0x22, 0x81, 0xd9, 0x78, 0xa1, 0x8a, 0x10, 0xa3, 0x09, - 0xa0, 0x79, 0xb1, 0x1a, 0xba, 0x47, 0x98, 0x88, 0x19, 0xc8, 0x4a, 0x14, 0xc8, 0x1a, 0xa1, 0x68, - 0xb3, 0x0b, 0x90, 0x48, 0xa8, 0x22, 0xd9, 0x2b, 0x16, 0xa8, 0x80, 0xda, 0x61, 0x92, 0x9b, 0x88, - 0x63, 0xb8, 0x00, 0x88, 0x9a, 0x36, 0xca, 0x20, 0xc1, 0x8b, 0x73, 0x92, 0x8c, 0x90, 0x28, 0x20, - 0xa0, 0x89, 0x80, 0x99, 0x50, 0x24, 0xfa, 0x3a, 0x81, 0x80, 0x09, 0x9a, 0x47, 0xc9, 0x89, 0x22, - 0xb1, 0x8a, 0x31, 0xb2, 0x1d, 0x96, 0x2b, 0xc3, 0x29, 0x9a, 0x26, 0xb8, 0x2b, 0x07, 0xac, 0x21, - 0x90, 0x00, 0x10, 0xc9, 0x2b, 0x15, 0x99, 0x24, 0xdd, 0x29, 0x23, 0xaa, 0x10, 0xab, 0x72, 0xa2, - 0x8a, 0x89, 0x28, 0x82, 0x37, 0xf9, 0x0a, 0x02, 0x20, 0xa1, 0x0c, 0x00, 0x31, 0xd1, 0x8d, 0x13, - 0x8a, 0x25, 0xad, 0x81, 0x19, 0x13, 0x8a, 0xc2, 0x9f, 0x25, 0xb1, 0x1b, 0x80, 0x20, 0x91, 0x8a, - 0x90, 0x62, 0xea, 0x30, 0x14, 0xfb, 0x39, 0x83, 0x9b, 0x32, 0xa2, 0x8e, 0x81, 0x80, 0x19, 0x84, - 0x8c, 0x03, 0xba, 0x01, 0x78, 0xc1, 0x3a, 0xb2, 0x8c, 0x24, 0xd9, 0x58, 0xb3, 0x1c, 0x91, 0x18, - 0x89, 0x33, 0xe9, 0x29, 0x84, 0x89, 0x10, 0xc9, 0x80, 0x5b, 0x07, 0xaa, 0x10, 0x0a, 0x82, 0x32, - 0xdb, 0x08, 0x8c, 0x25, 0xb0, 0x9a, 0x21, 0xa1, 0x39, 0xf3, 0x0d, 0x16, 0xb9, 0x39, 0x85, 0x9c, - 0x18, 0x42, 0xc9, 0x29, 0x04, 0xba, 0x20, 0x98, 0x22, 0x21, 0xfb, 0x3b, 0x86, 0xab, 0x24, 0xa8, - 0x09, 0x81, 0x99, 0x11, 0x91, 0x63, 0xa1, 0xef, 0x30, 0x12, 0xaa, 0x89, 0x80, 0x20, 0x92, 0x08, - 0xc9, 0x4a, 0x86, 0x18, 0xc0, 0x1b, 0x00, 0x43, 0xd9, 0x31, 0xcc, 0x73, 0xa8, 0x8a, 0x22, 0xb9, - 0x42, 0x09, 0xb1, 0x0c, 0x30, 0x03, 0xb8, 0xcf, 0x51, 0xa2, 0x09, 0x80, 0xa8, 0x19, 0x38, 0x17, - 0x9b, 0xca, 0x60, 0x01, 0xa9, 0x1a, 0xa3, 0x1c, 0x45, 0xc0, 0x0c, 0x83, 0x09, 0x22, 0xa8, 0x8f, - 0x32, 0xa9, 0x28, 0x84, 0x9d, 0x21, 0x20, 0xc0, 0x9d, 0x23, 0x11, 0xc1, 0x8e, 0x81, 0x48, 0x92, - 0x2a, 0xc1, 0x9c, 0x33, 0x98, 0x21, 0xec, 0x20, 0x33, 0xda, 0x1b, 0x84, 0x8a, 0x25, 0xa9, 0x0a, - 0x08, 0x38, 0x37, 0xe9, 0x8b, 0x23, 0x80, 0x99, 0x31, 0xc8, 0x3a, 0xb3, 0x9d, 0x22, 0x88, 0x45, - 0xc9, 0xbd, 0x52, 0x80, 0x08, 0x00, 0xd9, 0x59, 0xa2, 0x29, 0x80, 0x98, 0x0a, 0x37, 0xdb, 0x18, - 0x10, 0x81, 0x10, 0xdb, 0x41, 0x92, 0xcb, 0x60, 0xa2, 0x9b, 0x22, 0xa0, 0xac, 0x35, 0xc8, 0x18, - 0x98, 0x98, 0x31, 0xd2, 0x3b, 0x05, 0xca, 0x59, 0xa3, 0x1e, 0x83, 0x99, 0x18, 0x23, 0xdd, 0x51, - 0x90, 0x8a, 0x30, 0xa8, 0x28, 0xb8, 0x32, 0x8a, 0xc4, 0x1e, 0x05, 0xab, 0x31, 0x00, 0xaa, 0xa0, - 0x3a, 0x84, 0x01, 0x9c, 0x21, 0xd1, 0x2d, 0x16, 0xc9, 0x2b, 0x05, 0x09, 0xa8, 0x58, 0xb1, 0x28, - 0xaa, 0x01, 0x53, 0xeb, 0x52, 0xb9, 0x10, 0x18, 0x91, 0xab, 0x10, 0x11, 0x32, 0xde, 0x30, 0x82, - 0xbd, 0x61, 0xa2, 0x0c, 0x23, 0xda, 0x2a, 0x85, 0x99, 0x20, 0xd2, 0x8c, 0x34, 0x91, 0x9c, 0x22, - 0x9c, 0x24, 0xb9, 0x09, 0x31, 0xd0, 0x40, 0x99, 0xb8, 0x5b, 0x14, 0x08, 0xca, 0x1b, 0x25, 0x91, - 0x8f, 0x02, 0x09, 0xa1, 0x30, 0xd9, 0x29, 0x83, 0x18, 0x98, 0xf9, 0x49, 0x04, 0xa8, 0x0b, 0x13, - 0xac, 0x53, 0xa8, 0x19, 0xa8, 0x59, 0x14, 0xcb, 0x28, 0x91, 0x98, 0x4b, 0x07, 0x8e, 0x11, 0x00, - 0x9a, 0x10, 0x01, 0x98, 0x0b, 0xb1, 0x72, 0xd5, 0x2a, 0x92, 0x0a, 0x12, 0x98, 0xbb, 0x65, 0xb8, - 0x1b, 0x17, 0xbb, 0x30, 0x82, 0x8a, 0x98, 0x00, 0x61, 0xa1, 0xae, 0x41, 0x83, 0xbb, 0x00, 0x21, - 0xa8, 0x71, 0xa0, 0x9a, 0x99, 0x72, 0x82, 0xc9, 0x0d, 0x15, 0x09, 0xa9, 0x20, 0x98, 0x41, 0xb8, - 0x8b, 0x10, 0x99, 0x67, 0xc9, 0x18, 0x88, 0x32, 0x99, 0xa8, 0x0a, 0x22, 0x05, 0x8b, 0xc0, 0x1d, - 0x27, 0xa8, 0x9a, 0x81, 0x1a, 0x26, 0xa0, 0xaa, 0x28, 0xd0, 0x49, 0x03, 0xda, 0x3a, 0x85, 0x8a, - 0x81, 0x8a, 0x21, 0x21, 0xf8, 0x19, 0x90, 0x38, 0x80, 0x25, 0xad, 0x23, 0xac, 0x33, 0xf1, 0x2b, - 0x04, 0x9a, 0x81, 0x08, 0xa1, 0x6a, 0x86, 0xaa, 0x88, 0xb8, 0x70, 0x83, 0x9a, 0x0a, 0x03, 0xbf, - 0x44, 0xa0, 0x99, 0x29, 0x03, 0x98, 0x89, 0x88, 0x37, 0xda, 0x00, 0x98, 0x3a, 0x05, 0x08, 0xa9, - 0xba, 0x54, 0x03, 0x9d, 0x98, 0x41, 0x00, 0x9a, 0xb0, 0x9f, 0x45, 0xa0, 0x9a, 0x11, 0xb9, 0x38, - 0x27, 0xc9, 0x19, 0x92, 0x09, 0x82, 0xaa, 0x69, 0x84, 0x0a, 0xb9, 0x61, 0xca, 0x41, 0x80, 0x88, - 0x18, 0xd8, 0x58, 0xb8, 0x52, 0xb9, 0xa0, 0x39, 0x86, 0x8c, 0x22, 0x91, 0x9e, 0x12, 0x0a, 0x12, - 0x90, 0x8b, 0x35, 0xec, 0x28, 0x12, 0x91, 0x8c, 0x12, 0xaa, 0x48, 0x82, 0xbb, 0x40, 0x90, 0x21, - 0x9e, 0x93, 0x1c, 0x03, 0x02, 0xaf, 0x22, 0x08, 0x90, 0x1c, 0x17, 0x9d, 0x81, 0x10, 0x8a, 0x35, - 0xb9, 0x09, 0x21, 0xf0, 0x4b, 0x82, 0xa8, 0x2a, 0x05, 0xbb, 0x41, 0xc8, 0x30, 0x01, 0xbe, 0x63, - 0xba, 0x43, 0xa8, 0xb8, 0x6a, 0x91, 0x80, 0x89, 0x00, 0x61, 0xb0, 0x8a, 0x13, 0xac, 0x52, 0x83, - 0x9c, 0xda, 0x51, 0x92, 0x0a, 0xa1, 0x1d, 0x05, 0x0b, 0x91, 0x89, 0x09, 0x16, 0x90, 0xcb, 0x38, - 0x82, 0x52, 0xfa, 0x18, 0x10, 0x91, 0x08, 0x90, 0x19, 0x28, 0x07, 0xac, 0x81, 0x29, 0x02, 0x53, - 0xfc, 0x28, 0x88, 0x11, 0x80, 0x9c, 0x43, 0xc9, 0x29, 0x93, 0x19, 0xa9, 0x52, 0xda, 0x49, 0x84, - 0x9c, 0x02, 0x0a, 0x05, 0xb9, 0x19, 0x11, 0x23, 0xbb, 0x22, 0xf8, 0x1c, 0x24, 0x98, 0xa0, 0x0f, - 0x13, 0x80, 0xac, 0x31, 0x81, 0x89, 0x11, 0xcc, 0x0a, 0x55, 0x90, 0xab, 0x02, 0x9c, 0x37, 0xc9, - 0x10, 0x0a, 0x11, 0x02, 0x9b, 0xe8, 0x69, 0x92, 0x89, 0x81, 0x8c, 0x32, 0x91, 0x8c, 0x83, 0x9f, - 0x33, 0x81, 0xbc, 0x61, 0xa0, 0x09, 0x11, 0xeb, 0x21, 0x11, 0xa0, 0x99, 0x08, 0x22, 0x8a, 0xf3, - 0x7a, 0xc1, 0x18, 0x80, 0x12, 0xc9, 0x0a, 0x25, 0xc9, 0x01, 0x0c, 0x16, 0xbb, 0x22, 0x00, 0xb0, - 0x0e, 0x22, 0x91, 0x19, 0xe9, 0x29, 0x14, 0x9b, 0x13, 0xa9, 0xaa, 0x41, 0x94, 0x8c, 0x02, 0x1a, - 0x27, 0xdb, 0x08, 0x80, 0x52, 0x90, 0xc8, 0x0c, 0x24, 0xa8, 0x11, 0xa9, 0x9b, 0x36, 0xa9, 0x08, - 0x0b, 0x05, 0x48, 0xf3, 0x0c, 0x81, 0x31, 0x81, 0xba, 0x8c, 0x92, 0x73, 0xd0, 0x29, 0x91, 0x28, - 0x89, 0xa2, 0x2a, 0xa0, 0x46, 0xca, 0x10, 0xbb, 0x67, 0xa9, 0x88, 0x08, 0x00, 0x04, 0x9d, 0x12, - 0x89, 0x18, 0x02, 0xca, 0x18, 0x28, 0x14, 0xda, 0x28, 0xca, 0x54, 0xa8, 0x08, 0x08, 0xa8, 0x31, - 0x89, 0xb1, 0x38, 0x02, 0xc9, 0x91, 0x8e, 0x73, 0xa3, 0x8f, 0x03, 0x9c, 0x04, 0x89, 0x01, 0x91, - 0x0e, 0x84, 0x0b, 0x94, 0x2c, 0x02, 0xa9, 0x0b, 0x25, 0x8a, 0x80, 0x1a, 0x04, 0xa8, 0x8b, 0x53, - 0xb8, 0x3a, 0x85, 0xac, 0x89, 0x34, 0x28, 0xe2, 0x9a, 0x70, 0x91, 0xbc, 0x42, 0x80, 0xa8, 0x2a, - 0x02, 0xb9, 0x3a, 0x27, 0x9c, 0x11, 0x18, 0x80, 0xa0, 0x0b, 0x74, 0x90, 0xb1, 0x9f, 0x12, 0x08, - 0x83, 0x68, 0xfa, 0x28, 0x92, 0x89, 0x00, 0x92, 0x1a, 0xc1, 0x3a, 0xa8, 0x41, 0x24, 0xfc, 0x39, - 0x91, 0x18, 0x32, 0xb0, 0xaf, 0x52, 0xa8, 0x11, 0xab, 0x52, 0x90, 0x99, 0x31, 0xec, 0x41, 0xa9, - 0x33, 0xc9, 0x8c, 0x23, 0x91, 0x0c, 0x82, 0x80, 0xae, 0x34, 0x10, 0xfa, 0x20, 0x89, 0x24, 0xdc, - 0x30, 0x81, 0x88, 0x88, 0x19, 0x94, 0x8e, 0x14, 0x9a, 0x02, 0x9b, 0x24, 0xb9, 0x29, 0xb1, 0x71, - 0xc0, 0x29, 0x92, 0x9d, 0x42, 0x80, 0x89, 0xa8, 0x39, 0x85, 0x1a, 0xc2, 0x8b, 0x42, 0xa0, 0x88, - 0x50, 0xd8, 0x80, 0x4b, 0x86, 0xba, 0x51, 0xa1, 0x8b, 0x20, 0x93, 0x09, 0xb9, 0x49, 0xb2, 0x19, - 0x5a, 0x07, 0xd9, 0x2b, 0x03, 0x18, 0xb1, 0x3c, 0x07, 0xad, 0x48, 0x83, 0x8b, 0x09, 0x41, 0xc8, - 0x29, 0xa0, 0x41, 0xc8, 0x18, 0x81, 0x01, 0xeb, 0x5a, 0x04, 0x9c, 0x81, 0x20, 0xd1, 0x38, 0x82, - 0x9e, 0x02, 0x38, 0x91, 0xfa, 0x49, 0x02, 0x91, 0xcb, 0x29, 0x84, 0x29, 0xb3, 0x1c, 0x95, 0x8c, - 0x14, 0xab, 0x00, 0x09, 0x17, 0xba, 0x10, 0xba, 0x55, 0xa0, 0x9b, 0x25, 0xac, 0x13, 0x08, 0x18, - 0xc0, 0x1a, 0x21, 0xb8, 0x20, 0x51, 0xd8, 0x11, 0x9b, 0x12, 0x09, 0xb2, 0x6a, 0xd2, 0x9d, 0x23, - 0x08, 0xa8, 0x29, 0x21, 0xf0, 0x4d, 0x85, 0x9c, 0x21, 0x08, 0x81, 0xbb, 0x48, 0x84, 0x8a, 0x91, - 0x49, 0xd3, 0x0d, 0x15, 0x88, 0xa9, 0x00, 0x32, 0xf9, 0x0a, 0x13, 0x01, 0xc9, 0x29, 0x09, 0x88, - 0x24, 0xab, 0x63, 0xca, 0x8a, 0x43, 0xb2, 0x0e, 0x04, 0x8a, 0x10, 0xa9, 0x41, 0x80, 0x8a, 0x87, - 0x8c, 0x82, 0x31, 0xa9, 0x01, 0xf9, 0x2b, 0x07, 0x8b, 0x03, 0x9a, 0x11, 0xa8, 0x00, 0x9d, 0x63, - 0xa2, 0x9b, 0x09, 0x82, 0x48, 0x92, 0xac, 0x12, 0x40, 0xdb, 0x24, 0xac, 0x22, 0x09, 0x85, 0xab, - 0x9a, 0x47, 0xa0, 0xaa, 0x42, 0xb0, 0x09, 0x99, 0x23, 0x30, 0x84, 0xff, 0x20, 0x80, 0x8a, 0x27, - 0xca, 0x10, 0x09, 0x01, 0x09, 0x00, 0x98, 0x01, 0x9c, 0x30, 0x96, 0x2a, 0x02, 0xdc, 0x18, 0x01, - 0x21, 0x91, 0x9a, 0x91, 0xaf, 0x17, 0x9b, 0x13, 0x8a, 0x02, 0x00, 0xbc, 0x33, 0x0d, 0x85, 0x4a, - 0xd1, 0x0c, 0x21, 0x12, 0xba, 0x82, 0x2c, 0xf3, 0x3b, 0x85, 0x8a, 0x19, 0x04, 0x8c, 0x93, 0x1e, - 0x93, 0x49, 0xc1, 0x88, 0x18, 0xa0, 0x61, 0xa0, 0x18, 0xc8, 0x19, 0x03, 0x88, 0x19, 0x82, 0x81, - 0xbf, 0x13, 0xad, 0x65, 0xa8, 0x00, 0xab, 0x18, 0x62, 0x82, 0x9c, 0xa0, 0x49, 0x91, 0x32, 0xcc, - 0x81, 0x58, 0xb3, 0x8d, 0xa2, 0x48, 0x91, 0x82, 0x8c, 0xb1, 0x61, 0x90, 0x8a, 0x28, 0x81, 0x29, - 0xf3, 0x2c, 0xa2, 0x50, 0xc8, 0x30, 0xaa, 0x80, 0x42, 0xb0, 0x2b, 0x02, 0xc9, 0x2e, 0x17, 0x9b, - 0x03, 0xdb, 0x30, 0x91, 0x01, 0x88, 0xd0, 0x3b, 0x07, 0xaa, 0x88, 0x22, 0x90, 0x19, 0xb2, 0xaa, - 0x79, 0x03, 0x01, 0x9e, 0xc0, 0x70, 0x91, 0x98, 0x89, 0x83, 0x1d, 0x85, 0x8c, 0x11, 0x88, 0x29, - 0xb3, 0x2c, 0xc4, 0x4c, 0x84, 0x8c, 0x82, 0x8a, 0x33, 0xd9, 0x18, 0x98, 0x42, 0x98, 0x02, 0xcc, - 0x19, 0x23, 0x29, 0x84, 0xde, 0x30, 0x90, 0x30, 0xa8, 0x9c, 0x23, 0xaa, 0x36, 0xb8, 0x0b, 0x84, - 0x8b, 0x41, 0xa9, 0x81, 0x2b, 0x95, 0xaa, 0x2b, 0x96, 0x60, 0xa2, 0x9a, 0x8c, 0x32, 0x12, 0x88, - 0xca, 0xce, 0x72, 0xa2, 0x89, 0x88, 0x89, 0x53, 0xa8, 0x91, 0x0e, 0x13, 0x80, 0x9a, 0xc0, 0x29, - 0x33, 0x84, 0xad, 0x10, 0x98, 0x52, 0xc0, 0x1a, 0x13, 0xa9, 0x12, 0xcf, 0x14, 0x88, 0x90, 0x2a, - 0xe2, 0x3a, 0x81, 0x22, 0x28, 0xf9, 0x59, 0xd8, 0x28, 0x82, 0x1a, 0xa4, 0x8b, 0x13, 0xcc, 0x25, - 0x9b, 0x14, 0x9a, 0x90, 0x1c, 0x05, 0x0b, 0x33, 0xfa, 0x09, 0x21, 0x98, 0x32, 0xcc, 0x31, 0xc8, - 0x38, 0x92, 0x9a, 0x20, 0x92, 0x8d, 0x01, 0x11, 0x02, 0xcf, 0x06, 0x0a, 0x12, 0x9d, 0x03, 0x8b, - 0x22, 0x89, 0x12, 0xcc, 0x49, 0x94, 0x0e, 0x14, 0xab, 0x30, 0xb8, 0x28, 0x91, 0x49, 0xa5, 0x8e, - 0x82, 0x0a, 0x26, 0xba, 0x20, 0xa9, 0x11, 0xa2, 0x6b, 0xc3, 0xaa, 0x73, 0xb0, 0x89, 0x09, 0x25, - 0xaa, 0x11, 0xca, 0x49, 0x15, 0xcb, 0x48, 0xa0, 0x19, 0x23, 0xba, 0xb9, 0x7b, 0x84, 0x0a, 0xa8, - 0x29, 0x00, 0x05, 0x8e, 0x93, 0x1c, 0x06, 0x9a, 0x81, 0x99, 0x33, 0xa1, 0x89, 0xda, 0x72, 0x98, - 0x08, 0x80, 0xab, 0x50, 0x04, 0xbb, 0x31, 0xb3, 0xbf, 0x35, 0xab, 0x00, 0x22, 0xa9, 0x08, 0xa0, - 0x3b, 0x37, 0xbb, 0x19, 0x22, 0xf0, 0x48, 0xa1, 0x99, 0x28, 0xd1, 0x59, 0xb2, 0x1c, 0x83, 0xaa, - 0x62, 0x93, 0x8c, 0xa9, 0x52, 0xab, 0x25, 0xa9, 0x8a, 0x20, 0x01, 0x14, 0xae, 0x21, 0xa9, 0x13, - 0xaa, 0x60, 0x95, 0x9f, 0x33, 0xab, 0x00, 0x9b, 0x37, 0xb0, 0x8d, 0x03, 0x10, 0xb0, 0x1a, 0x81, - 0x89, 0x24, 0xad, 0x43, 0xda, 0x50, 0x90, 0x80, 0x8a, 0x8a, 0x45, 0x90, 0x9b, 0x80, 0x18, 0x03, - 0x8f, 0x85, 0x9c, 0x34, 0xca, 0x30, 0xb0, 0x29, 0x15, 0xbb, 0x00, 0x1a, 0x87, 0x1b, 0x93, 0x99, - 0x3a, 0xd3, 0x48, 0xb0, 0x18, 0x92, 0xaa, 0x20, 0x81, 0x53, 0xfa, 0x29, 0x82, 0xc9, 0x10, 0x23, - 0x98, 0xed, 0x50, 0xa1, 0x1a, 0x12, 0x01, 0xdc, 0x09, 0x43, 0x01, 0xb9, 0xbb, 0x79, 0x03, 0x1b, - 0x82, 0x9e, 0x22, 0xbb, 0x72, 0x93, 0x9f, 0x31, 0x90, 0x9a, 0x10, 0x21, 0xbb, 0x36, 0xfc, 0x38, - 0x81, 0x10, 0xb8, 0x80, 0x0b, 0x25, 0xb0, 0x1a, 0xa3, 0x0e, 0x16, 0xaa, 0x88, 0x80, 0x40, 0x01, - 0x90, 0xcd, 0x60, 0xa1, 0x28, 0x99, 0x81, 0x2b, 0xa2, 0x09, 0x42, 0xcb, 0x31, 0x96, 0x9e, 0x88, - 0x45, 0xc8, 0x29, 0x91, 0x0a, 0x12, 0xab, 0x35, 0xca, 0x18, 0xa1, 0x52, 0xb9, 0x3a, 0x85, 0x0b, - 0xd1, 0x4a, 0x93, 0x8c, 0x14, 0xaa, 0x20, 0xa1, 0x8b, 0x73, 0x90, 0xb9, 0x2a, 0x43, 0xf9, 0x60, - 0xb0, 0x2a, 0x81, 0xa9, 0x62, 0xd0, 0x28, 0x90, 0x28, 0x90, 0x99, 0x10, 0x8c, 0x27, 0xca, 0x10, - 0x80, 0x11, 0x80, 0xbb, 0x03, 0x9b, 0x63, 0x98, 0xd0, 0x1c, 0x37, 0xf1, 0x2a, 0x80, 0x18, 0x82, - 0x89, 0x99, 0xa1, 0x69, 0x94, 0x19, 0xdc, 0x48, 0x01, 0x88, 0x89, 0x80, 0x02, 0x80, 0x98, 0x8b, - 0x06, 0x09, 0xb9, 0x53, 0xea, 0x20, 0x82, 0x81, 0xba, 0x38, 0x13, 0x1a, 0x97, 0xaf, 0x32, 0x90, - 0x28, 0xe8, 0x39, 0x90, 0x10, 0x20, 0xc2, 0x8f, 0x00, 0x13, 0x8b, 0x24, 0xcc, 0x88, 0x60, 0x93, - 0xac, 0x21, 0xa0, 0x69, 0xa3, 0xab, 0x20, 0x13, 0xda, 0x11, 0xbe, 0x40, 0x33, 0xb0, 0xab, 0xac, - 0x43, 0x32, 0xb5, 0x8f, 0x82, 0x2a, 0x84, 0xbb, 0x18, 0x33, 0x00, 0xb0, 0x9e, 0x80, 0x74, 0xb1, - 0x0b, 0x80, 0x99, 0x64, 0xb1, 0x8b, 0x08, 0x10, 0x13, 0xa9, 0x00, 0xbf, 0x73, 0xc1, 0x28, 0xb8, - 0x30, 0xc8, 0x40, 0x90, 0x08, 0x89, 0x81, 0x0c, 0x14, 0x32, 0xcf, 0x31, 0xb8, 0x02, 0x29, 0xd2, - 0x48, 0xc0, 0x0b, 0x23, 0x81, 0x2c, 0x92, 0xda, 0x1b, 0x27, 0xba, 0x43, 0xea, 0x18, 0x12, 0xb9, - 0x30, 0xd8, 0x30, 0x03, 0xc0, 0x0e, 0x12, 0x0a, 0x23, 0xd8, 0x8b, 0x02, 0x20, 0x20, 0xe8, 0x08, - 0x40, 0x91, 0xcc, 0x10, 0x11, 0x81, 0x82, 0xaf, 0x38, 0x93, 0x32, 0xec, 0x1a, 0x13, 0x80, 0x01, - 0xac, 0x84, 0x1e, 0x05, 0xa8, 0x8d, 0x33, 0x98, 0x91, 0x0c, 0x04, 0xba, 0x59, 0x13, 0xd9, 0x88, - 0x39, 0xe3, 0x39, 0x82, 0x89, 0x20, 0xed, 0x58, 0x92, 0x89, 0x01, 0xca, 0x30, 0x02, 0x99, 0x8b, - 0x27, 0xac, 0x32, 0xb8, 0x09, 0x01, 0x89, 0x25, 0xbc, 0x21, 0x12, 0xd1, 0x1d, 0x21, 0xa1, 0x2a, - 0x93, 0xce, 0x38, 0x93, 0x49, 0xf3, 0x1c, 0x11, 0x81, 0x01, 0xae, 0x22, 0xa9, 0x71, 0xb0, 0x1b, - 0x23, 0xa9, 0x00, 0xaa, 0x26, 0xb9, 0x00, 0x11, 0xa2, 0x9f, 0x34, 0xd0, 0x8c, 0x33, 0x19, 0xa1, - 0xbc, 0x59, 0x85, 0x0a, 0xb1, 0x29, 0x91, 0x20, 0xb3, 0x3a, 0xfc, 0x00, 0x59, 0x95, 0x8c, 0x11, - 0xa0, 0x39, 0xb4, 0x2c, 0xa2, 0x2a, 0x80, 0x02, 0x89, 0x90, 0x19, 0x84, 0x3a, 0xfb, 0x6c, 0x02, - 0xbb, 0x30, 0x22, 0xf9, 0x2b, 0x23, 0xeb, 0x40, 0x81, 0x01, 0xea, 0x0a, 0x41, 0x05, 0xbb, 0x10, - 0xb8, 0x3b, 0x37, 0xaa, 0x88, 0x29, 0xb1, 0x50, 0xd0, 0x39, 0xa0, 0x32, 0x88, 0xfb, 0x48, 0x91, - 0x11, 0xcb, 0x20, 0x91, 0x41, 0xca, 0x22, 0xa8, 0x9a, 0x61, 0xc2, 0x9e, 0x41, 0x85, 0xab, 0x11, - 0xba, 0x61, 0x91, 0x21, 0xfb, 0x10, 0x98, 0x32, 0xb0, 0x89, 0x00, 0xa8, 0x51, 0xc2, 0x8d, 0x21, - 0x10, 0x82, 0xa9, 0xae, 0x51, 0xa1, 0x62, 0xc8, 0x9a, 0x40, 0xa3, 0x2a, 0x82, 0xdb, 0x30, 0xa2, - 0x0d, 0x03, 0x1b, 0x15, 0xa9, 0xac, 0x19, 0x35, 0xb9, 0x44, 0xfb, 0x29, 0x82, 0x11, 0xa9, 0x8a, - 0x21, 0x22, 0x81, 0xbf, 0x21, 0x90, 0x59, 0x05, 0xbd, 0x28, 0x10, 0x11, 0x09, 0xc9, 0x10, 0x9a, - 0x73, 0xb3, 0x9c, 0x33, 0xaa, 0xc8, 0x6b, 0xa3, 0x1c, 0x14, 0xaa, 0x99, 0x38, 0x04, 0x60, 0xd0, - 0x9b, 0x33, 0x81, 0x9c, 0x13, 0xac, 0x35, 0xb9, 0x28, 0xeb, 0x30, 0x15, 0x9a, 0x00, 0xd8, 0x0b, - 0x35, 0xb0, 0x0c, 0x12, 0xb9, 0x60, 0xa0, 0x88, 0x98, 0x53, 0xab, 0x27, 0xbb, 0x1b, 0x35, 0xa8, - 0x8a, 0x00, 0x89, 0x42, 0xd0, 0x39, 0xc1, 0x21, 0x88, 0xa2, 0x9f, 0x02, 0x21, 0x80, 0x82, 0xff, - 0x30, 0x82, 0x98, 0x99, 0x81, 0x19, 0x25, 0xf8, 0x28, 0x98, 0x1a, 0x36, 0xc8, 0x8b, 0x08, 0x51, - 0x81, 0xb9, 0x1a, 0x81, 0x38, 0x21, 0xb1, 0x0b, 0xf9, 0x3a, 0x44, 0xd0, 0x2a, 0x84, 0x9a, 0x99, - 0x21, 0x2a, 0x07, 0xab, 0x21, 0x89, 0xa5, 0x2e, 0x83, 0x8a, 0x0a, 0x06, 0x8b, 0x81, 0x88, 0x39, - 0x94, 0x8a, 0x01, 0xc9, 0xcc, 0x74, 0x81, 0x99, 0x8a, 0xa8, 0x71, 0x91, 0x09, 0x98, 0x01, 0x18, - 0x23, 0xfc, 0x4a, 0x84, 0x0b, 0x11, 0xd8, 0x1c, 0x15, 0x99, 0x90, 0x2a, 0x83, 0x9a, 0x10, 0x08, - 0xa0, 0x11, 0x0b, 0xd9, 0x13, 0x4d, 0x16, 0xa9, 0xcb, 0x5b, 0x87, 0x88, 0x08, 0xa0, 0x8a, 0x53, - 0x90, 0x89, 0x00, 0xad, 0x44, 0xb0, 0x08, 0x9a, 0x32, 0x92, 0x8c, 0x81, 0x0b, 0xd3, 0x1c, 0x37, - 0xb0, 0x9c, 0x18, 0x15, 0x9a, 0x12, 0xcb, 0x21, 0x8a, 0x52, 0xa1, 0xae, 0x40, 0x84, 0x9a, 0xa0, - 0x20, 0x42, 0x84, 0xbe, 0x0b, 0x16, 0x01, 0x9a, 0xb9, 0x19, 0x44, 0xa3, 0x8c, 0xc9, 0x48, 0x15, - 0xa8, 0xba, 0x19, 0x46, 0xb8, 0x89, 0x89, 0x42, 0x91, 0x2a, 0xc0, 0x0b, 0x10, 0x17, 0x99, 0x99, - 0x39, 0x94, 0x19, 0xfa, 0x48, 0x01, 0x80, 0xcb, 0x5a, 0x04, 0x99, 0x99, 0x12, 0xda, 0x70, 0x91, - 0x8a, 0x80, 0x10, 0x00, 0x88, 0xd8, 0x5a, 0x05, 0xcb, 0x30, 0xa1, 0x18, 0x98, 0x89, 0x21, 0x44, - 0xfa, 0x18, 0x89, 0x22, 0x12, 0xbc, 0x98, 0x99, 0x64, 0x01, 0xb8, 0x9f, 0x23, 0x01, 0xe8, 0x1a, - 0x23, 0x82, 0xac, 0xaa, 0x73, 0xa0, 0x00, 0x18, 0xd9, 0x40, 0x91, 0x81, 0xbc, 0x41, 0x10, 0x93, - 0xaf, 0x18, 0x34, 0x98, 0xca, 0x19, 0x20, 0x84, 0x9a, 0x02, 0x9a, 0x12, 0x28, 0xfa, 0x39, 0x00, - 0x24, 0xda, 0xad, 0x51, 0x33, 0xea, 0x0a, 0x01, 0x41, 0xb0, 0x9c, 0x31, 0x93, 0x5a, 0xd0, 0x09, - 0x89, 0x63, 0xa8, 0x01, 0x9a, 0x98, 0x60, 0x91, 0x8a, 0x3a, 0x87, 0x8a, 0xc9, 0x48, 0x23, 0xc1, - 0xad, 0x21, 0x00, 0x91, 0x51, 0xda, 0x18, 0x18, 0x22, 0xd8, 0x0a, 0x11, 0x14, 0xea, 0x29, 0x11, - 0x90, 0x10, 0xda, 0x40, 0xa0, 0x20, 0x81, 0xfb, 0x59, 0x93, 0x8b, 0x91, 0x1a, 0x41, 0x95, 0x8e, - 0x98, 0x31, 0x80, 0x01, 0xcc, 0x32, 0x98, 0x80, 0x21, 0xec, 0x41, 0x00, 0x80, 0x9c, 0x23, 0x1a, - 0xc4, 0x0c, 0x01, 0x41, 0xb9, 0x00, 0x0c, 0x00, 0x34, 0xe8, 0x8d, 0x32, 0x01, 0xba, 0x01, 0x1a, - 0x08, 0x86, 0x0a, 0x80, 0xd8, 0x40, 0x81, 0x9d, 0x25, 0xa1, 0x9d, 0x10, 0x12, 0x81, 0xa0, 0x8e, - 0xa2, 0x29, 0x25, 0x80, 0xfd, 0x38, 0x82, 0x18, 0xa8, 0x9b, 0x50, 0x92, 0x09, 0x88, 0x38, 0xaa, - 0x23, 0xde, 0x41, 0x80, 0x11, 0x90, 0xbd, 0x30, 0x51, 0x92, 0xbc, 0xca, 0x45, 0x88, 0x80, 0x0c, - 0xb2, 0x39, 0x44, 0xe0, 0x0a, 0x10, 0x02, 0xaa, 0x30, 0xa9, 0xa8, 0x70, 0xc2, 0x30, 0xab, 0x04, - 0x2a, 0xb1, 0x40, 0xeb, 0x18, 0x22, 0xb1, 0x59, 0xf0, 0x2a, 0x02, 0x01, 0x8a, 0xb8, 0x2c, 0x33, - 0x04, 0xbd, 0x81, 0x29, 0x27, 0xcb, 0xba, 0x72, 0x83, 0x98, 0x9d, 0x11, 0x21, 0x12, 0xfb, 0x8a, - 0x40, 0x02, 0x98, 0xaa, 0xaa, 0x72, 0x04, 0xb8, 0x8c, 0x98, 0x64, 0x90, 0x89, 0xa0, 0x1a, 0x24, - 0x88, 0xa9, 0x38, 0xe8, 0x60, 0xb8, 0x29, 0x21, 0xa3, 0x8e, 0xa8, 0x50, 0x81, 0x08, 0x82, 0xbc, - 0x29, 0x28, 0x14, 0x98, 0xac, 0x38, 0xa1, 0x72, 0xf2, 0x2a, 0xa1, 0x28, 0x82, 0x9a, 0x84, 0xaf, - 0x53, 0x82, 0x9b, 0xaa, 0x52, 0x81, 0x88, 0xb1, 0x1b, 0x91, 0x45, 0xa8, 0xac, 0x11, 0x80, 0x32, - 0xf9, 0x0a, 0x08, 0x33, 0x22, 0xfa, 0x8f, 0x14, 0x81, 0xaa, 0x29, 0x84, 0x18, 0x98, 0xc8, 0x1b, - 0x25, 0x12, 0xf9, 0x9c, 0x43, 0x80, 0x82, 0x9d, 0x10, 0x91, 0x08, 0x22, 0xd8, 0x0a, 0x92, 0x5a, - 0xb3, 0x1c, 0x91, 0x08, 0x80, 0x20, 0xb3, 0x2e, 0xe8, 0x50, 0x00, 0x11, 0xdd, 0x40, 0x98, 0x11, - 0x88, 0xa0, 0x38, 0xb8, 0xaa, 0x61, 0x82, 0x48, 0xc1, 0xae, 0x28, 0x14, 0x00, 0xd8, 0x09, 0x91, - 0x3a, 0x37, 0xda, 0x89, 0x10, 0x42, 0xa0, 0xbb, 0x40, 0x01, 0x91, 0xab, 0x00, 0x18, 0x48, 0x87, - 0x9c, 0x88, 0x50, 0xa1, 0x89, 0x00, 0x42, 0xea, 0x42, 0xab, 0x92, 0x0b, 0x64, 0xa1, 0xac, 0x20, - 0x11, 0x93, 0x9c, 0x8b, 0x27, 0x9a, 0x81, 0x81, 0x9d, 0x52, 0x90, 0x8a, 0x00, 0x91, 0x8d, 0x27, - 0x9a, 0x80, 0x0b, 0x93, 0x6b, 0x86, 0xbb, 0x11, 0x89, 0x13, 0x91, 0x9b, 0x12, 0xc9, 0x72, 0xb1, - 0x8a, 0x21, 0x10, 0xb4, 0xaf, 0x40, 0x11, 0x98, 0xca, 0x2c, 0x15, 0x09, 0x90, 0x8b, 0x90, 0x70, - 0x95, 0x8b, 0x09, 0x22, 0x11, 0xfb, 0x28, 0x92, 0xaa, 0x13, 0x28, 0x03, 0xdd, 0x18, 0x02, 0xa9, - 0x48, 0x07, 0xbc, 0x01, 0x30, 0x81, 0xa9, 0x80, 0x8f, 0x24, 0x98, 0x8a, 0x11, 0x13, 0xdb, 0x9b, - 0x40, 0x36, 0xb0, 0xbc, 0x39, 0x92, 0x60, 0xb2, 0x8d, 0x12, 0x8a, 0x33, 0xa8, 0xbc, 0x49, 0x25, - 0xa0, 0x9f, 0x11, 0x08, 0x23, 0xca, 0x8a, 0x32, 0xb8, 0x3b, 0x27, 0xd8, 0x19, 0x10, 0xa2, 0x8f, - 0x11, 0x42, 0xe8, 0x8a, 0x21, 0x12, 0xab, 0x19, 0x07, 0xbb, 0x41, 0xa2, 0xa9, 0x49, 0x05, 0xa9, - 0x9c, 0x00, 0x54, 0x88, 0x99, 0x89, 0x48, 0xa1, 0x1a, 0xe1, 0x59, 0x04, 0xcb, 0x29, 0x00, 0x42, - 0xc0, 0x9c, 0x02, 0x18, 0x82, 0x11, 0xca, 0x8a, 0x30, 0x17, 0xbc, 0x31, 0x82, 0x0a, 0xa0, 0x00, - 0x0c, 0x36, 0xe0, 0x8b, 0x30, 0x13, 0x99, 0xbd, 0x44, 0x80, 0x80, 0xb9, 0x1a, 0xc1, 0x70, 0xa3, - 0xac, 0x20, 0x09, 0xa1, 0x38, 0x51, 0xc2, 0x2b, 0x99, 0x90, 0x58, 0x26, 0xba, 0xc8, 0x2c, 0x24, - 0x99, 0x12, 0xcb, 0x19, 0x14, 0x1b, 0x06, 0x9e, 0x24, 0xaa, 0xb1, 0x8b, 0x35, 0x98, 0x11, 0xc9, - 0x0b, 0x92, 0x38, 0x34, 0xa8, 0x09, 0x89, 0xea, 0x19, 0x51, 0x02, 0x42, 0xfd, 0x3b, 0x04, 0x00, - 0x09, 0xc0, 0x0b, 0x25, 0xaa, 0x10, 0x1a, 0x07, 0xa9, 0x89, 0xc9, 0x78, 0x94, 0x0b, 0x92, 0x8a, - 0x41, 0xb2, 0x0c, 0x81, 0x20, 0x91, 0xe9, 0x29, 0x12, 0x04, 0x1a, 0xf2, 0x0f, 0x13, 0x08, 0xa1, - 0xbb, 0x50, 0x81, 0x88, 0xa8, 0x49, 0x02, 0xdb, 0x51, 0xb9, 0x41, 0xa0, 0xa8, 0x3a, 0x95, 0x2b, - 0x04, 0xba, 0x3a, 0x83, 0x21, 0xac, 0xb8, 0x70, 0x85, 0x9d, 0x12, 0x18, 0xab, 0x98, 0x73, 0xa9, - 0x22, 0xb0, 0x1c, 0xb3, 0x6b, 0x84, 0xdb, 0x30, 0x98, 0x21, 0x81, 0xdc, 0x18, 0x14, 0x90, 0x08, - 0x91, 0x8c, 0x33, 0xb1, 0x0f, 0xb2, 0x79, 0xa3, 0x9c, 0x90, 0x31, 0x89, 0x17, 0xdb, 0x29, 0x02, - 0x22, 0xbc, 0x28, 0x91, 0x3a, 0xa5, 0x8e, 0x02, 0x08, 0x31, 0xa3, 0xdf, 0x38, 0x04, 0x98, 0x1a, - 0x91, 0x1a, 0x94, 0x1b, 0x04, 0xdb, 0x39, 0x94, 0x8c, 0x12, 0x00, 0xa1, 0x0b, 0x40, 0xd9, 0x39, - 0x82, 0x30, 0x91, 0xeb, 0x2a, 0xc8, 0x73, 0x81, 0xe9, 0x30, 0x91, 0x98, 0x29, 0xa3, 0x7a, 0xc2, - 0x1c, 0xb1, 0x1b, 0x37, 0x91, 0xcb, 0x1b, 0x84, 0x08, 0x21, 0xa9, 0x0a, 0x13, 0x99, 0xb8, 0x69, - 0x00, 0x02, 0x81, 0xef, 0x33, 0xda, 0x61, 0x90, 0x9a, 0x28, 0x92, 0x40, 0xdb, 0x31, 0xa8, 0x10, - 0x89, 0x01, 0xca, 0x2b, 0x67, 0xa9, 0x8a, 0x90, 0x72, 0xa1, 0x0a, 0x90, 0x90, 0x30, 0xb1, 0x33, - 0xcf, 0x32, 0x98, 0x88, 0xa1, 0x2d, 0x06, 0x8a, 0x91, 0x89, 0x02, 0x30, 0xc0, 0x09, 0x99, 0x81, - 0x6a, 0xa4, 0x0c, 0x92, 0x3a, 0x12, 0xe9, 0x8a, 0x53, 0x81, 0x00, 0xea, 0x38, 0xd9, 0x52, 0xa8, - 0x19, 0x93, 0x8f, 0x22, 0xb0, 0x0a, 0x02, 0x20, 0x15, 0xcf, 0x11, 0x10, 0xa1, 0x10, 0x9b, 0x01, - 0x89, 0x44, 0x08, 0xf0, 0x2b, 0x91, 0x53, 0xb9, 0x00, 0x29, 0xc2, 0x0b, 0x84, 0x8c, 0x22, 0x10, - 0x96, 0xaf, 0x30, 0x13, 0xb9, 0x39, 0xea, 0x28, 0x32, 0xa2, 0x8d, 0xb0, 0x3d, 0x17, 0xc9, 0x28, - 0x98, 0x11, 0x1b, 0x85, 0x9b, 0x10, 0x71, 0xd1, 0x19, 0xa0, 0x38, 0x82, 0xa0, 0x1b, 0x02, 0xae, - 0x72, 0x92, 0x9c, 0x00, 0x19, 0x14, 0xb9, 0x0a, 0x88, 0x37, 0xa9, 0xea, 0x28, 0x82, 0x42, 0xc9, - 0x09, 0x90, 0x48, 0x17, 0xbc, 0x10, 0x11, 0x08, 0xa0, 0x8b, 0x00, 0x62, 0x92, 0x9b, 0xe0, 0x4b, - 0x05, 0x98, 0x9a, 0x41, 0xb0, 0x20, 0x9a, 0x91, 0x0d, 0x33, 0x91, 0xca, 0x3a, 0x25, 0xb8, 0x0d, - 0x13, 0x99, 0x18, 0x81, 0x70, 0xc1, 0x1a, 0x94, 0x1c, 0xd0, 0x39, 0x43, 0xe8, 0x28, 0xb0, 0x2b, - 0x04, 0x8a, 0x14, 0xaa, 0xdb, 0x71, 0x90, 0x11, 0x9a, 0x98, 0x4a, 0xa3, 0x4b, 0x91, 0x90, 0x5c, - 0x94, 0xbb, 0x09, 0x63, 0x92, 0x90, 0xac, 0x10, 0x20, 0x10, 0x05, 0xbe, 0x28, 0x32, 0xd1, 0x0c, - 0x01, 0x20, 0x90, 0x09, 0x09, 0xe9, 0x38, 0x27, 0xb8, 0xae, 0x53, 0x80, 0xb9, 0x20, 0x91, 0x8a, - 0x23, 0xbb, 0x54, 0xdb, 0x31, 0x88, 0x00, 0x0b, 0xa3, 0x1f, 0x24, 0xb8, 0xab, 0x32, 0x9a, 0x47, - 0xa8, 0xab, 0x98, 0x1a, 0x77, 0xb0, 0x09, 0x90, 0x18, 0x03, 0x0a, 0xc9, 0x31, 0x11, 0xb9, 0x1a, - 0xa0, 0x61, 0x12, 0xce, 0x10, 0x19, 0x05, 0x91, 0xaa, 0xaf, 0x44, 0xa1, 0x0a, 0x98, 0x32, 0xa9, - 0x89, 0x64, 0xc9, 0x89, 0x43, 0x91, 0xc9, 0x0c, 0x26, 0x99, 0x98, 0x1a, 0x03, 0xa8, 0x8a, 0x64, - 0xd0, 0x2a, 0x82, 0x99, 0x81, 0x99, 0x51, 0x23, 0xfb, 0x5a, 0xb1, 0x19, 0x82, 0xb9, 0x52, 0xa1, - 0x9b, 0x21, 0x91, 0x20, 0xc9, 0x51, 0xb0, 0x9f, 0x31, 0x14, 0xa0, 0xcc, 0x41, 0xd8, 0x29, 0x84, - 0x00, 0xba, 0x89, 0x44, 0x80, 0xb9, 0x2b, 0xb3, 0x69, 0xa1, 0x21, 0x8d, 0x02, 0x28, 0xa1, 0x88, - 0xaf, 0x63, 0x03, 0xcb, 0x8a, 0x22, 0x11, 0xf9, 0x0b, 0x35, 0xb0, 0x0d, 0x13, 0xab, 0x09, 0x43, - 0x12, 0xea, 0x8b, 0x63, 0xc0, 0x28, 0x90, 0x29, 0xc8, 0x40, 0x80, 0xb2, 0x1d, 0x12, 0x00, 0xc9, - 0x38, 0xb0, 0x1b, 0x56, 0xb0, 0x9b, 0x39, 0x95, 0x0c, 0x33, 0xc1, 0x8a, 0x81, 0x89, 0x94, 0x0f, - 0x24, 0xa9, 0x8a, 0x01, 0x28, 0xf1, 0x4b, 0x86, 0x8a, 0x10, 0xa9, 0x48, 0xb1, 0x48, 0xa1, 0x8b, - 0x22, 0xc8, 0x09, 0x54, 0xa1, 0xbb, 0x09, 0x01, 0x60, 0x84, 0x99, 0xbc, 0x9a, 0x46, 0x91, 0x19, - 0xb9, 0x38, 0x92, 0x1a, 0xa5, 0x8d, 0x32, 0x13, 0xf9, 0x8c, 0x32, 0x82, 0x9d, 0x11, 0x30, 0xca, - 0x99, 0x52, 0xa8, 0x80, 0x62, 0xa1, 0xaf, 0x11, 0x41, 0xb1, 0x19, 0xb9, 0x88, 0x78, 0x83, 0x8b, - 0xb1, 0x8c, 0x01, 0x44, 0x98, 0x98, 0x01, 0xad, 0x35, 0xca, 0x28, 0x93, 0x9d, 0x33, 0x91, 0xab, - 0xab, 0x43, 0x33, 0xfc, 0x10, 0x09, 0x33, 0xc8, 0x3a, 0xa1, 0xb9, 0x2e, 0x07, 0x99, 0x80, 0x40, - 0x92, 0xba, 0xdb, 0x70, 0x02, 0x88, 0xbd, 0x31, 0x32, 0xc0, 0x8d, 0x81, 0x21, 0xa1, 0x09, 0x98, - 0xb8, 0x6c, 0x14, 0x91, 0xbf, 0x30, 0x22, 0xc0, 0x0a, 0x11, 0x30, 0xf0, 0x2a, 0x82, 0x09, 0x82, - 0xaa, 0x2b, 0x16, 0x99, 0x30, 0xc2, 0xaf, 0x40, 0x04, 0x89, 0x88, 0xbf, 0x63, 0xa0, 0x08, 0x00, - 0x89, 0x98, 0x38, 0x17, 0xcb, 0x18, 0x11, 0x82, 0x9a, 0x9a, 0x52, 0x90, 0x8c, 0x14, 0x9a, 0x18, - 0x83, 0x0c, 0x85, 0x8b, 0xa8, 0x35, 0x9b, 0x85, 0x8f, 0x14, 0xba, 0x09, 0x42, 0x82, 0xb9, 0x0c, - 0x13, 0x98, 0xaa, 0x74, 0x90, 0x99, 0x9c, 0x34, 0x08, 0x82, 0xcb, 0x09, 0x42, 0xc8, 0x20, 0x33, - 0xef, 0x38, 0x01, 0x98, 0x98, 0x28, 0x13, 0x81, 0xbf, 0x20, 0x12, 0x98, 0x0b, 0x41, 0xa4, 0x9f, - 0x02, 0x08, 0x22, 0x98, 0xa0, 0x8e, 0xa9, 0x46, 0xa0, 0x00, 0xdb, 0x49, 0x13, 0xaa, 0x2b, 0xb2, - 0x68, 0x01, 0x9a, 0x12, 0xbd, 0x61, 0x91, 0x09, 0xc9, 0x18, 0x64, 0xb1, 0x8a, 0x80, 0x00, 0x08, - 0xd8, 0x68, 0x92, 0x29, 0xe9, 0x1a, 0x22, 0x99, 0x30, 0xa4, 0xaf, 0x30, 0x11, 0x00, 0xc1, 0x0e, - 0x23, 0xca, 0x38, 0xa2, 0x18, 0x80, 0x88, 0x13, 0x8d, 0x13, 0xdc, 0x48, 0x16, 0xcb, 0x10, 0xb8, - 0x48, 0x04, 0xa8, 0xab, 0x01, 0x29, 0x15, 0x9c, 0x11, 0x0a, 0x02, 0xd2, 0x8f, 0x13, 0x11, 0xa0, - 0xb8, 0x0f, 0x24, 0x80, 0x99, 0xaa, 0x52, 0xa0, 0x58, 0xd8, 0x1a, 0x24, 0x00, 0xea, 0x09, 0x28, - 0x33, 0xb0, 0x9d, 0x08, 0x83, 0x8a, 0x11, 0x84, 0x9e, 0x34, 0xca, 0x80, 0x2a, 0x23, 0x82, 0xfa, - 0x09, 0x22, 0x81, 0x00, 0x9f, 0x22, 0x01, 0xac, 0x18, 0x83, 0x1e, 0x14, 0x98, 0xcb, 0x38, 0xb4, - 0x29, 0x33, 0xb8, 0xbb, 0x9f, 0x22, 0x82, 0x5a, 0x94, 0x8a, 0xaf, 0x62, 0x92, 0xa9, 0x0d, 0x14, - 0x89, 0x00, 0xa8, 0x8a, 0x52, 0x02, 0x99, 0xbd, 0x30, 0x31, 0x14, 0xc9, 0xad, 0x52, 0xb0, 0x10, - 0xa8, 0x22, 0x81, 0xda, 0x9a, 0x53, 0xa1, 0x50, 0x92, 0xcf, 0x10, 0x12, 0x81, 0x99, 0xaa, 0x43, - 0xb8, 0x08, 0x38, 0x15, 0xcd, 0x41, 0x90, 0x29, 0x91, 0xaa, 0x8a, 0x73, 0xa5, 0xab, 0x00, 0x00, - 0x33, 0xc9, 0x32, 0xcc, 0x99, 0x75, 0xb8, 0x1a, 0x08, 0x44, 0xb9, 0x99, 0x29, 0x82, 0x22, 0xac, - 0x80, 0x81, 0x3a, 0x17, 0x89, 0xca, 0x20, 0x01, 0xe1, 0x0e, 0x25, 0x90, 0x9a, 0x91, 0x09, 0x31, - 0xc0, 0x29, 0x04, 0xce, 0x42, 0xb0, 0x18, 0x00, 0xb9, 0x61, 0xd0, 0x3b, 0x15, 0xa8, 0x8a, 0x11, - 0x92, 0xbc, 0x34, 0xdb, 0x52, 0x98, 0x18, 0xa9, 0x28, 0x19, 0x07, 0xc9, 0x2b, 0x14, 0xa9, 0x29, - 0x82, 0x0a, 0x80, 0x50, 0xf8, 0x28, 0x18, 0x04, 0x0c, 0xd8, 0x58, 0x91, 0x0a, 0x90, 0x28, 0x98, - 0x43, 0xe8, 0x8b, 0x24, 0x18, 0xa2, 0xad, 0x21, 0x81, 0x03, 0xae, 0x01, 0x40, 0xc0, 0x48, 0xb0, - 0x1d, 0x25, 0xb9, 0x0a, 0x11, 0x89, 0x03, 0x08, 0xaf, 0x16, 0x9a, 0x90, 0x18, 0x43, 0xa0, 0x9a, - 0x18, 0xeb, 0x61, 0x91, 0x09, 0xc8, 0x58, 0x81, 0xa9, 0x89, 0x41, 0x04, 0xca, 0x0a, 0x33, 0xc2, - 0x0c, 0x31, 0xf8, 0x39, 0x81, 0x80, 0x9c, 0x14, 0x10, 0xba, 0x80, 0x29, 0x25, 0x90, 0xce, 0x40, - 0xa2, 0x8a, 0x42, 0xd8, 0x39, 0x23, 0xe8, 0x8c, 0x33, 0x98, 0x89, 0x80, 0xca, 0x50, 0x02, 0xa2, - 0xac, 0x8a, 0x37, 0x80, 0xca, 0x28, 0x80, 0x22, 0x9c, 0x02, 0x9e, 0x33, 0xa8, 0xb9, 0x62, 0xb9, - 0x53, 0x91, 0xe9, 0x1e, 0x14, 0x09, 0xc8, 0x38, 0x80, 0x00, 0x99, 0x80, 0x40, 0xc1, 0x19, 0x99, - 0x90, 0x72, 0x96, 0xba, 0x9b, 0x34, 0x13, 0xca, 0x09, 0x10, 0x11, 0x91, 0xab, 0x09, 0x16, 0x0b, - 0xc3, 0x9d, 0x52, 0x11, 0xb2, 0xaf, 0x11, 0x08, 0x25, 0xba, 0x99, 0x29, 0x26, 0xb8, 0x1b, 0xd1, - 0x4a, 0x03, 0x20, 0xb8, 0x9a, 0x9a, 0x33, 0x1d, 0x07, 0xbb, 0x38, 0xb1, 0x40, 0xa1, 0x39, 0xcf, - 0x33, 0x8b, 0x06, 0x0b, 0xc3, 0x7a, 0xb2, 0x89, 0x1a, 0x84, 0x1b, 0x12, 0xa1, 0x8f, 0x03, 0x1a, - 0xa3, 0x2a, 0x99, 0x21, 0xc9, 0xca, 0x79, 0x95, 0x1a, 0x01, 0xbc, 0x19, 0x55, 0x90, 0x0b, 0x88, - 0x08, 0x13, 0x09, 0xec, 0x40, 0x83, 0xab, 0x19, 0xa8, 0x74, 0x81, 0xc8, 0x0c, 0x13, 0x19, 0xe0, - 0x30, 0xb0, 0x59, 0xb1, 0x0c, 0x08, 0x25, 0x98, 0x98, 0xab, 0x41, 0x23, 0x91, 0xed, 0x29, 0x13, - 0x18, 0xd9, 0x88, 0x51, 0xb0, 0x38, 0xba, 0x11, 0x80, 0x10, 0xa9, 0x80, 0x6c, 0x06, 0xad, 0x20, - 0x08, 0x42, 0xda, 0x81, 0x19, 0xa1, 0x22, 0x01, 0xfc, 0x28, 0x92, 0x48, 0xb2, 0x0d, 0x92, 0x11, - 0x9a, 0xb0, 0x73, 0xd0, 0x19, 0x00, 0x02, 0x99, 0x99, 0x23, 0xca, 0x45, 0xac, 0x13, 0x8b, 0xa2, - 0x6a, 0x92, 0xa9, 0x9d, 0x27, 0xaa, 0x88, 0x51, 0xa0, 0x08, 0x99, 0x00, 0x38, 0x87, 0x9b, 0x90, - 0x01, 0x0e, 0x37, 0xdb, 0x2a, 0x23, 0x98, 0x98, 0xa8, 0x38, 0x15, 0x99, 0xdb, 0x30, 0x00, 0x12, - 0x9b, 0xb3, 0xbf, 0x70, 0x12, 0xaa, 0x89, 0x1a, 0x37, 0xcb, 0x18, 0x40, 0xc1, 0x1b, 0x90, 0x35, - 0xca, 0x10, 0x89, 0x81, 0x18, 0x99, 0x35, 0x9c, 0xb8, 0x58, 0xa3, 0x0c, 0x24, 0xa0, 0xae, 0x13, - 0x19, 0x06, 0x9a, 0xcb, 0x51, 0x01, 0xa0, 0x0c, 0x12, 0x8a, 0x10, 0x01, 0x10, 0xde, 0x51, 0x91, - 0xb9, 0x19, 0x12, 0x03, 0xb9, 0xac, 0x73, 0xc2, 0x08, 0x98, 0x18, 0x91, 0x11, 0x39, 0xf2, 0x3d, - 0x90, 0x23, 0xa9, 0xfd, 0x59, 0x84, 0x99, 0x90, 0x00, 0x2a, 0x85, 0x9b, 0x81, 0x19, 0x11, 0x14, - 0xad, 0xa1, 0x4c, 0x85, 0x8a, 0x89, 0x31, 0xa0, 0x28, 0xda, 0x21, 0x00, 0x99, 0x23, 0xbf, 0x23, - 0x80, 0x11, 0xba, 0x00, 0x21, 0xac, 0x23, 0xad, 0x4a, 0x27, 0x9e, 0x10, 0x04, 0x9b, 0x81, 0x8a, - 0x27, 0xac, 0x18, 0x12, 0x2b, 0x87, 0x9d, 0x01, 0x08, 0x08, 0x43, 0xea, 0x28, 0x90, 0x38, 0x92, - 0x9e, 0x32, 0xd8, 0x28, 0x90, 0x01, 0x28, 0xb1, 0x09, 0xa9, 0x00, 0x65, 0xe0, 0x39, 0xb0, 0x22, - 0x9c, 0x11, 0x9a, 0x31, 0x11, 0xb8, 0x9c, 0x03, 0x9f, 0x54, 0x02, 0xcb, 0x1b, 0x93, 0x38, 0xa8, - 0x20, 0x80, 0xe1, 0x4a, 0xe0, 0x60, 0xb0, 0x38, 0xb8, 0x09, 0x31, 0x98, 0x85, 0x2d, 0xb4, 0x2d, - 0xb1, 0x4a, 0x84, 0x18, 0xda, 0x20, 0x08, 0xc2, 0x39, 0xc2, 0x29, 0x40, 0xc5, 0x8f, 0x13, 0x8a, - 0x22, 0xa9, 0x89, 0x19, 0x22, 0x03, 0xae, 0x28, 0x84, 0x1a, 0xd8, 0x19, 0x10, 0x15, 0x9a, 0x99, - 0xba, 0x71, 0x12, 0x81, 0xca, 0x8c, 0x12, 0x19, 0x83, 0x31, 0x10, 0xfd, 0x0a, 0x11, 0x32, 0xe9, - 0x58, 0xb1, 0x91, 0x8f, 0x05, 0x0a, 0x11, 0x88, 0xcb, 0x48, 0x11, 0x80, 0x08, 0xba, 0x18, 0x30, - 0xa2, 0x8e, 0x04, 0x09, 0x15, 0xeb, 0x2a, 0x81, 0x54, 0xc8, 0x89, 0x8a, 0x14, 0x28, 0xc0, 0x39, - 0xb0, 0x18, 0x23, 0xce, 0x31, 0xa8, 0x35, 0xba, 0xcb, 0x6a, 0x04, 0x88, 0xa9, 0x09, 0x42, 0xc1, - 0x4b, 0xa5, 0x8c, 0x12, 0x02, 0xdb, 0x89, 0x33, 0x13, 0xd8, 0x9f, 0x33, 0x99, 0x91, 0x18, 0xba, - 0x52, 0x80, 0x91, 0x9b, 0x18, 0x23, 0x91, 0x05, 0xdf, 0x11, 0x30, 0xa4, 0x9c, 0x80, 0x30, 0xb2, - 0x0e, 0x43, 0xb8, 0x0b, 0x81, 0x40, 0xa3, 0x9e, 0x30, 0x82, 0xca, 0x3a, 0x02, 0x04, 0xae, 0x23, - 0x98, 0xa9, 0x4b, 0x27, 0xca, 0x8a, 0x22, 0x32, 0xd1, 0x8b, 0xa1, 0x61, 0xc8, 0x40, 0x80, 0xba, - 0x58, 0x92, 0x2a, 0xf0, 0x1a, 0x54, 0xc8, 0x1b, 0x12, 0x18, 0xa8, 0x01, 0x9a, 0x83, 0x8c, 0x44, - 0xb0, 0x0b, 0x94, 0x2b, 0xa3, 0x8b, 0x28, 0x96, 0x5b, 0xe3, 0x0c, 0x33, 0xb1, 0x0c, 0x81, 0x28, - 0x03, 0xcc, 0x1a, 0x15, 0x88, 0x10, 0xb8, 0x8d, 0x90, 0x70, 0x95, 0x0c, 0x81, 0x18, 0x90, 0xa9, - 0x4a, 0x06, 0xba, 0x18, 0x01, 0x8a, 0x47, 0xaa, 0xa0, 0x0d, 0x15, 0x88, 0x90, 0x88, 0x9a, 0x27, - 0x9a, 0xba, 0x72, 0xb1, 0x00, 0x99, 0x13, 0x9a, 0x00, 0x51, 0xf8, 0x29, 0x02, 0x09, 0x89, 0xaa, - 0x73, 0xa1, 0x8b, 0x81, 0x18, 0x21, 0x11, 0xf0, 0x8c, 0x08, 0x27, 0xda, 0x31, 0xa8, 0x10, 0xa9, - 0x01, 0x01, 0x98, 0x28, 0x32, 0xf9, 0x3d, 0xa1, 0x38, 0xb1, 0x19, 0x80, 0xfb, 0x70, 0xc3, 0x1a, - 0x81, 0x81, 0x9e, 0x23, 0x31, 0xf8, 0x2b, 0x01, 0x80, 0x88, 0x99, 0x43, 0x08, 0xd8, 0x3a, 0xa1, - 0x58, 0xb1, 0x19, 0xca, 0x32, 0x28, 0x07, 0xcb, 0x89, 0x42, 0x30, 0xf8, 0x0c, 0x12, 0x21, 0xb8, - 0x9a, 0x98, 0x18, 0x54, 0x90, 0xa3, 0xbf, 0x34, 0x08, 0xea, 0x30, 0x10, 0xa1, 0x8f, 0x20, 0x00, - 0x03, 0xbb, 0x0a, 0x13, 0x9b, 0x27, 0xb8, 0xab, 0x18, 0x14, 0x22, 0xdb, 0x9a, 0x72, 0xb1, 0x28, - 0xcb, 0x64, 0x98, 0xa8, 0x2b, 0x06, 0x99, 0x09, 0x00, 0x12, 0x9b, 0x11, 0x2a, 0xa4, 0xbb, 0x58, - 0x97, 0x8e, 0x23, 0x8a, 0x90, 0x1c, 0x92, 0x61, 0xb0, 0x89, 0x09, 0x14, 0x8a, 0x08, 0x82, 0x39, - 0xc4, 0x0f, 0x92, 0x3a, 0x92, 0x31, 0xd8, 0xad, 0x68, 0x14, 0xb8, 0xab, 0x20, 0x04, 0x89, 0x00, - 0xd0, 0x4b, 0x94, 0x19, 0xa1, 0x9c, 0x81, 0x42, 0x88, 0x99, 0x25, 0xbc, 0x00, 0x00, 0x59, 0x07, - 0xaa, 0xb9, 0x61, 0x80, 0x10, 0x9b, 0x10, 0x9a, 0x88, 0x55, 0xc9, 0x20, 0x00, 0xda, 0x30, 0x81, - 0x18, 0xc0, 0xaa, 0x7a, 0x84, 0x9a, 0xa8, 0x70, 0xa1, 0x29, 0x01, 0xfa, 0x39, 0x83, 0x18, 0xe9, - 0x28, 0x11, 0xc0, 0x2a, 0x92, 0x3b, 0x04, 0xc8, 0x0b, 0x53, 0x80, 0x83, 0x9f, 0x88, 0x18, 0x32, - 0x03, 0xfd, 0x19, 0x21, 0x00, 0x98, 0xbc, 0x42, 0x12, 0xb8, 0x99, 0x18, 0x01, 0x33, 0x31, 0xfc, - 0x0f, 0x93, 0x70, 0x90, 0xaa, 0x19, 0x15, 0x9a, 0x82, 0x0a, 0x99, 0x80, 0x69, 0x05, 0xab, 0x00, - 0x1a, 0xb3, 0x2b, 0x00, 0x47, 0xca, 0x19, 0x12, 0xba, 0x12, 0x2a, 0x17, 0xbf, 0x30, 0x13, 0x99, - 0x20, 0xde, 0x40, 0x91, 0x88, 0x80, 0x0a, 0x34, 0xc0, 0x2a, 0xd0, 0x19, 0x11, 0x32, 0xe9, 0x9a, - 0x20, 0x15, 0x9c, 0x03, 0x1a, 0xa3, 0x9a, 0x8e, 0x45, 0x90, 0x89, 0x99, 0xba, 0x54, 0xb9, 0x41, - 0x81, 0x9d, 0x11, 0x89, 0x53, 0xb8, 0x88, 0x00, 0xa8, 0x1b, 0x45, 0x91, 0xbd, 0x62, 0xa1, 0x9a, - 0x1a, 0x05, 0x48, 0xb1, 0xdb, 0x48, 0x82, 0x9a, 0x13, 0xbc, 0x02, 0x29, 0x16, 0xda, 0x3a, 0x03, - 0x18, 0xc8, 0xbb, 0x68, 0x04, 0x89, 0x92, 0x9b, 0x18, 0x01, 0x81, 0x50, 0xf8, 0x59, 0xb1, 0x39, - 0xc9, 0x28, 0x35, 0xd0, 0x9b, 0x89, 0x53, 0x92, 0x0a, 0x02, 0xcc, 0x19, 0x33, 0x99, 0x01, 0x8b, - 0x89, 0x02, 0x7a, 0xa3, 0x78, 0xc0, 0x0b, 0x21, 0x98, 0x12, 0xbb, 0x68, 0x04, 0xbb, 0xad, 0x63, - 0x02, 0xba, 0x81, 0x1b, 0x05, 0x88, 0x98, 0xea, 0x38, 0x26, 0xc8, 0x9c, 0x31, 0x05, 0xa9, 0x8a, - 0x01, 0x29, 0x44, 0xc0, 0x9d, 0x38, 0x14, 0xca, 0x10, 0xa0, 0x31, 0x92, 0x8c, 0xa2, 0x1e, 0x25, - 0xa9, 0x99, 0x0b, 0x25, 0x81, 0xac, 0x01, 0x98, 0x20, 0x22, 0xa0, 0xac, 0x73, 0xa9, 0x98, 0x34, - 0x9d, 0x95, 0x1c, 0x92, 0x1b, 0x13, 0x22, 0xb9, 0xcd, 0x39, 0x04, 0x8d, 0x15, 0x88, 0x8b, 0x93, - 0x0e, 0x02, 0x00, 0x20, 0xbc, 0x10, 0x42, 0x82, 0xdf, 0x40, 0x81, 0xa8, 0x19, 0xa1, 0x08, 0x71, - 0xb2, 0x0c, 0x98, 0x19, 0x63, 0xc1, 0x2b, 0x83, 0x89, 0xab, 0x14, 0x9b, 0x46, 0xa1, 0xac, 0x10, - 0x98, 0x63, 0x91, 0xbb, 0x39, 0x82, 0x01, 0x0b, 0xc8, 0x73, 0x94, 0xac, 0x88, 0x40, 0x13, 0xc8, - 0x9d, 0x81, 0x40, 0x02, 0xab, 0x00, 0x0a, 0x27, 0xc9, 0x8b, 0x04, 0x38, 0x87, 0xcb, 0x29, 0x02, - 0x18, 0x01, 0xbd, 0x42, 0x98, 0x81, 0x08, 0xcb, 0x72, 0xa3, 0xab, 0x8b, 0x04, 0x59, 0x03, 0xba, - 0x8c, 0x22, 0x89, 0x12, 0x08, 0xda, 0x4a, 0x15, 0xba, 0x4a, 0xa3, 0x4a, 0xa5, 0xaf, 0x42, 0x88, - 0x08, 0x80, 0x88, 0x9a, 0x20, 0x03, 0x09, 0xc0, 0x1c, 0x27, 0x9a, 0x80, 0xa9, 0x31, 0xbf, 0x63, - 0x91, 0x9a, 0x91, 0x3a, 0x07, 0xab, 0x29, 0x83, 0x48, 0xb0, 0x0b, 0x00, 0x00, 0x28, 0x07, 0x9f, - 0x81, 0x29, 0x35, 0xc9, 0x8c, 0x32, 0xa1, 0x9b, 0x30, 0x88, 0x52, 0x99, 0xb9, 0x8e, 0x31, 0x15, - 0xaa, 0x90, 0x0d, 0x44, 0xa9, 0x08, 0x81, 0x09, 0x03, 0xdb, 0x0c, 0x37, 0xa8, 0x8a, 0x94, 0x8e, - 0x13, 0x99, 0x22, 0x98, 0x81, 0xac, 0x08, 0xb1, 0x7c, 0x05, 0xa8, 0x9d, 0x21, 0x02, 0x18, 0xb0, - 0x1b, 0x01, 0x9a, 0x46, 0xbb, 0x08, 0x32, 0x90, 0xdc, 0x21, 0x0a, 0x06, 0x19, 0xd0, 0x8a, 0x41, - 0xb1, 0x1c, 0x15, 0x1b, 0xa2, 0x9d, 0x82, 0x19, 0x54, 0x91, 0x9c, 0xa9, 0x59, 0x23, 0xc9, 0x30, - 0xb9, 0xb0, 0x1c, 0x27, 0x99, 0x11, 0xda, 0x19, 0x84, 0x89, 0x11, 0x81, 0x99, 0x02, 0xcf, 0x33, - 0x98, 0x0a, 0x25, 0xa8, 0xfb, 0x3a, 0x06, 0x09, 0xc2, 0x0a, 0x02, 0x18, 0x99, 0x21, 0x23, 0xbe, - 0x43, 0xcd, 0x28, 0x14, 0x99, 0x18, 0xc8, 0x1a, 0x21, 0x16, 0xea, 0x29, 0x01, 0x00, 0xb8, 0x18, - 0x03, 0x90, 0x1b, 0x85, 0xbf, 0x30, 0x14, 0x88, 0xb0, 0x0e, 0x93, 0x3b, 0x02, 0x33, 0xbd, 0x88, - 0x88, 0x0c, 0x47, 0xa8, 0x8a, 0x89, 0x34, 0xc1, 0x0c, 0x15, 0xba, 0x09, 0x51, 0x91, 0xbb, 0x38, - 0x26, 0xd9, 0x89, 0x20, 0x85, 0xab, 0x11, 0x29, 0x26, 0xab, 0x99, 0x1c, 0x33, 0x11, 0xd0, 0x8b, - 0x99, 0x31, 0x27, 0xb8, 0xbc, 0x38, 0x04, 0x18, 0xa3, 0xaf, 0x35, 0xa9, 0x8a, 0x10, 0x08, 0x04, - 0x9a, 0x88, 0x2a, 0xa4, 0x6a, 0xc2, 0x0c, 0x02, 0x24, 0xcb, 0xca, 0x60, 0x02, 0x09, 0x99, 0x99, - 0x28, 0x93, 0x79, 0xa1, 0x1a, 0xb1, 0x58, 0xc0, 0x2b, 0x84, 0x89, 0x28, 0xd0, 0x8c, 0x25, 0x90, - 0xbb, 0x72, 0x01, 0xf8, 0x3a, 0x93, 0x29, 0xa2, 0x0a, 0xc9, 0x29, 0x53, 0xc3, 0x9d, 0x02, 0x20, - 0xc9, 0x30, 0x80, 0x90, 0x30, 0x82, 0xfb, 0x8d, 0x62, 0x92, 0xba, 0x28, 0x14, 0xc9, 0x19, 0xb8, - 0x58, 0x33, 0xb0, 0xcc, 0x1a, 0x14, 0x30, 0xd0, 0x09, 0xb8, 0x2b, 0x16, 0x32, 0xca, 0x9c, 0x32, - 0xd9, 0x29, 0x33, 0x83, 0x8f, 0x91, 0x4a, 0xb1, 0x0c, 0x43, 0xb0, 0x0a, 0x08, 0x12, 0x90, 0x8b, - 0x02, 0x35, 0xcf, 0x10, 0x10, 0x11, 0x80, 0xda, 0x71, 0xd1, 0x8c, 0x31, 0x03, 0xbb, 0x00, 0x00, - 0x82, 0x1b, 0x05, 0x89, 0xfb, 0x78, 0x81, 0xa9, 0x0a, 0x22, 0x24, 0xa9, 0xdc, 0x48, 0x81, 0x28, - 0xb1, 0x0c, 0x93, 0x28, 0x80, 0xf0, 0x1c, 0x23, 0x1a, 0xb3, 0x8e, 0x88, 0x64, 0xb0, 0x89, 0x89, - 0x32, 0x83, 0xed, 0x30, 0xa1, 0x28, 0x93, 0xac, 0x88, 0x09, 0x37, 0xa0, 0x89, 0xad, 0x53, 0x80, - 0x09, 0x80, 0x81, 0xac, 0x88, 0x30, 0x24, 0xb0, 0x1c, 0xa2, 0x98, 0x0b, 0x14, 0xbb, 0x27, 0x8c, - 0x16, 0xbc, 0x32, 0x98, 0x00, 0x98, 0x0c, 0x25, 0xd9, 0x2a, 0x15, 0x89, 0xa2, 0x9d, 0x01, 0x10, - 0x11, 0x24, 0xeb, 0x08, 0xc9, 0x38, 0x03, 0x08, 0x09, 0xa6, 0x0e, 0xb2, 0x2a, 0x35, 0x83, 0xaf, - 0x08, 0x00, 0x21, 0x98, 0x10, 0x89, 0xd0, 0x0c, 0x34, 0xa8, 0x22, 0x80, 0xbb, 0xbd, 0x19, 0x75, - 0x03, 0xbc, 0x19, 0x91, 0x0a, 0x23, 0x00, 0x01, 0xb9, 0x18, 0xfb, 0x2a, 0x00, 0x15, 0x28, 0xfb, - 0x6a, 0xa0, 0x08, 0x63, 0xa0, 0x8b, 0xb8, 0x3a, 0x25, 0x11, 0x90, 0xac, 0x99, 0xab, 0x64, 0x10, - 0xb3, 0x0a, 0xb8, 0xbc, 0x71, 0x83, 0x29, 0x82, 0xcf, 0x09, 0x53, 0x82, 0xaa, 0x80, 0x9c, 0x34, - 0xc0, 0x8c, 0x52, 0x81, 0xab, 0x22, 0xdb, 0x40, 0x12, 0xa8, 0xaa, 0x29, 0x14, 0x12, 0xf8, 0x8c, - 0x23, 0x08, 0xa3, 0x9f, 0x19, 0x34, 0x98, 0xa0, 0x8d, 0x12, 0x0a, 0x06, 0x9d, 0x23, 0x8a, 0x10, - 0xca, 0x29, 0x14, 0x11, 0xca, 0x4a, 0xc1, 0x2c, 0x05, 0xa9, 0x20, 0xc0, 0x19, 0x28, 0x02, 0x18, - 0xea, 0x0b, 0x17, 0x18, 0xb0, 0x1b, 0x83, 0x1b, 0x01, 0x94, 0xff, 0x48, 0x04, 0xb9, 0x8a, 0x12, - 0x09, 0x23, 0xc9, 0x89, 0x10, 0x33, 0xe9, 0x19, 0x91, 0x30, 0x81, 0xdb, 0x2a, 0x15, 0x19, 0x16, - 0xec, 0x0a, 0x34, 0xa0, 0x8a, 0x80, 0x08, 0x21, 0x91, 0x9c, 0x00, 0x90, 0x62, 0xa0, 0xbb, 0x74, - 0xb0, 0x89, 0x10, 0x81, 0x0a, 0x06, 0xa9, 0x9a, 0x42, 0xb1, 0x89, 0x0d, 0x47, 0xb9, 0x8a, 0x10, - 0x23, 0x08, 0x02, 0xaf, 0xd8, 0x69, 0x05, 0xba, 0x18, 0x01, 0x89, 0x02, 0x9d, 0x32, 0x82, 0xab, - 0xb9, 0x39, 0x54, 0x15, 0xbd, 0x00, 0x09, 0x13, 0x12, 0xea, 0x9a, 0x50, 0x14, 0xca, 0x8a, 0x11, - 0x52, 0xb2, 0x9d, 0x18, 0x22, 0x9a, 0x20, 0xa8, 0x18, 0x8a, 0x15, 0xbb, 0x41, 0xa2, 0x2a, 0xf3, - 0x9f, 0x36, 0xb9, 0x09, 0x01, 0x80, 0x1a, 0x95, 0x0d, 0x12, 0x08, 0xb8, 0x19, 0x02, 0x21, 0xac, - 0x11, 0xcb, 0x73, 0xb6, 0x8b, 0x81, 0x19, 0x64, 0xb1, 0x9e, 0x30, 0x80, 0x02, 0x8a, 0xba, 0x49, - 0x03, 0x34, 0xdc, 0x09, 0x20, 0x14, 0xbb, 0xab, 0x58, 0x05, 0x08, 0xb1, 0xad, 0x30, 0x23, 0xa0, - 0xac, 0x32, 0x01, 0xa9, 0x1c, 0xc2, 0x70, 0x93, 0xcc, 0x1a, 0x22, 0x32, 0xd2, 0x8d, 0x02, 0x9a, - 0x41, 0x82, 0x9a, 0x09, 0x10, 0xb0, 0xbf, 0x55, 0x01, 0xda, 0x2a, 0x22, 0x92, 0xdb, 0x19, 0x13, - 0x88, 0x33, 0xfc, 0x8a, 0x43, 0x90, 0x29, 0xe8, 0x19, 0x33, 0x92, 0x9f, 0x01, 0x29, 0x84, 0x8b, - 0xb9, 0x7a, 0x85, 0x9a, 0x88, 0x00, 0x21, 0x00, 0xcb, 0x99, 0x62, 0x02, 0x90, 0xdc, 0x19, 0x43, - 0x82, 0xcb, 0x0a, 0x12, 0x38, 0x84, 0xac, 0x28, 0x22, 0xfa, 0x2a, 0x01, 0x24, 0xab, 0x91, 0xaa, - 0x08, 0x71, 0x87, 0x9c, 0x80, 0x41, 0x81, 0xad, 0x28, 0x23, 0x91, 0xbe, 0x00, 0x21, 0x13, 0xa9, - 0x9a, 0x9c, 0x54, 0x91, 0xa9, 0x88, 0x29, 0x16, 0x90, 0xfb, 0x29, 0x34, 0x80, 0xcc, 0x89, 0x70, - 0x83, 0xab, 0x9a, 0x42, 0x92, 0x08, 0x90, 0xbc, 0x40, 0x32, 0xa1, 0xbc, 0x19, 0x22, 0x13, 0xdb, - 0x8c, 0x36, 0xc0, 0x9b, 0x18, 0x36, 0xa8, 0xa8, 0x1b, 0x33, 0xc8, 0x28, 0x93, 0xcf, 0x22, 0x21, - 0xa2, 0xaf, 0x38, 0x34, 0xe9, 0x1a, 0x80, 0x32, 0xa1, 0xad, 0x21, 0x03, 0xcc, 0x18, 0x08, 0x23, - 0x22, 0xb0, 0xaf, 0x0b, 0x25, 0x22, 0xc0, 0xac, 0x2b, 0x26, 0x90, 0xb9, 0x1b, 0x26, 0x98, 0xad, - 0x31, 0x32, 0xc0, 0x08, 0xca, 0x18, 0x22, 0x23, 0xdf, 0x28, 0x03, 0x08, 0xc0, 0x8a, 0x20, 0x27, - 0xc9, 0x9a, 0x00, 0x44, 0x90, 0x89, 0xdb, 0x50, 0x82, 0x90, 0xac, 0x02, 0x20, 0x24, 0xea, 0x8a, - 0x41, 0x92, 0xaa, 0x89, 0x41, 0x92, 0x09, 0xb8, 0xaa, 0x64, 0x14, 0xca, 0xab, 0x08, 0x65, 0x91, - 0xab, 0x20, 0xa0, 0x29, 0x15, 0xb9, 0xbb, 0x74, 0xa1, 0x8b, 0x12, 0x8b, 0x42, 0xc1, 0x1b, 0x81, - 0x38, 0x21, 0xf0, 0x1c, 0x05, 0xb8, 0x08, 0x08, 0x88, 0x32, 0x9a, 0x33, 0xf8, 0x0f, 0x14, 0x80, - 0x8b, 0x01, 0x88, 0xb9, 0x69, 0x04, 0x8a, 0xd0, 0x0b, 0x62, 0x92, 0x9b, 0x19, 0x04, 0x89, 0x84, - 0x9d, 0x13, 0x0a, 0xc1, 0x50, 0xc8, 0x19, 0x20, 0x06, 0xbc, 0x20, 0x12, 0x80, 0xcb, 0x30, 0xa0, - 0x49, 0x91, 0x10, 0xea, 0x8a, 0x25, 0x80, 0x99, 0x09, 0x11, 0xb1, 0x0c, 0x24, 0x18, 0x27, 0xfb, - 0x0b, 0x13, 0x8a, 0x34, 0x90, 0xaa, 0x8c, 0xbb, 0x77, 0x90, 0x0a, 0x08, 0x80, 0x19, 0x12, 0x88, - 0xc8, 0x8d, 0x24, 0xc8, 0x38, 0xa4, 0x49, 0xd2, 0x0b, 0x21, 0x98, 0x80, 0x39, 0x83, 0x8c, 0x93, - 0x8f, 0xa3, 0x7b, 0xa1, 0x18, 0x80, 0x91, 0x8d, 0x31, 0x02, 0xc8, 0x8a, 0x99, 0x21, 0x52, 0x04, - 0xf9, 0x0b, 0x04, 0x28, 0xa2, 0xbc, 0x34, 0xa0, 0x1a, 0x91, 0x8e, 0x13, 0x31, 0xa4, 0xdf, 0x20, - 0x91, 0x18, 0x02, 0xd9, 0x39, 0xa2, 0x5a, 0xd1, 0x0b, 0x21, 0x17, 0xba, 0x08, 0x1a, 0x15, 0x98, - 0x82, 0xb8, 0x9f, 0x44, 0xb0, 0x1a, 0x01, 0x10, 0xd0, 0x8b, 0x32, 0x80, 0x11, 0x90, 0xaf, 0x88, - 0x41, 0x24, 0xe8, 0x1a, 0x90, 0x8a, 0x71, 0x83, 0xaa, 0x00, 0x98, 0xab, 0x51, 0x25, 0xc8, 0x9b, - 0x02, 0x59, 0x94, 0x9c, 0x12, 0x88, 0xa8, 0x20, 0x91, 0x38, 0x21, 0xf3, 0x9d, 0x9a, 0x37, 0x99, - 0x09, 0x93, 0x8e, 0x43, 0xb0, 0x9d, 0x32, 0x81, 0x28, 0xda, 0x28, 0x81, 0xa9, 0x51, 0xc0, 0x09, - 0x08, 0x45, 0xd8, 0x8a, 0x42, 0xa0, 0x88, 0x19, 0xa4, 0x1d, 0x02, 0x10, 0xca, 0x19, 0x03, 0x91, - 0x4b, 0xb2, 0xad, 0x35, 0x99, 0xa8, 0x18, 0xa0, 0x60, 0xb1, 0x3a, 0x04, 0xcb, 0x8f, 0x36, 0xb8, - 0x19, 0x90, 0x2a, 0x14, 0xcc, 0x48, 0x01, 0x99, 0x09, 0xb8, 0x2c, 0x37, 0xa8, 0x8b, 0xd1, 0x3b, - 0x27, 0x90, 0xaa, 0x80, 0x0a, 0x17, 0xa9, 0x18, 0x01, 0x98, 0x19, 0x93, 0xcc, 0x59, 0x15, 0xba, - 0x9a, 0x31, 0x20, 0x03, 0xcc, 0x1b, 0x04, 0x8a, 0x11, 0xa1, 0x5b, 0x16, 0xda, 0x18, 0x01, 0xc9, - 0x50, 0xa1, 0x0a, 0x22, 0xb0, 0x9a, 0x59, 0x92, 0x20, 0xc0, 0xaf, 0x15, 0x2a, 0x93, 0xad, 0x29, - 0x15, 0xa8, 0xaa, 0x11, 0x21, 0x16, 0xbb, 0xa9, 0x0a, 0x33, 0x37, 0xba, 0xbb, 0x10, 0x44, 0x31, - 0xf0, 0x2f, 0x00, 0x80, 0x89, 0x01, 0x8a, 0x43, 0xaa, 0x92, 0x9f, 0x22, 0x03, 0x9b, 0x81, 0x98, - 0x31, 0xfb, 0x3a, 0x01, 0x41, 0xa3, 0xbf, 0x00, 0x31, 0x98, 0x22, 0x8a, 0xa3, 0x9f, 0x81, 0x78, - 0x96, 0x9a, 0x98, 0x00, 0x10, 0x53, 0xa2, 0xcb, 0x9f, 0x43, 0x81, 0xa8, 0x8d, 0x22, 0x00, 0xa9, - 0x1a, 0x12, 0xa2, 0x3b, 0xa5, 0x9f, 0x31, 0x15, 0xa9, 0xba, 0x2a, 0x15, 0x23, 0xec, 0x88, 0x30, - 0xa3, 0x0c, 0xb1, 0x68, 0x91, 0x08, 0xa8, 0x89, 0x20, 0x54, 0x82, 0xcf, 0x19, 0x24, 0xa9, 0x10, - 0xa9, 0x90, 0x28, 0x02, 0x31, 0xb9, 0xa9, 0x78, 0xb1, 0x8e, 0x44, 0xa0, 0x88, 0x9b, 0x12, 0x22, - 0xb0, 0x8f, 0x82, 0x6a, 0xb3, 0x8d, 0x01, 0x21, 0x99, 0x82, 0x0c, 0xc1, 0x0e, 0x24, 0x00, 0x9b, - 0x12, 0xa9, 0xb9, 0x1b, 0x77, 0x91, 0xbb, 0x39, 0x04, 0x9a, 0x33, 0xc9, 0x09, 0x9d, 0x17, 0x8a, - 0x82, 0x89, 0x00, 0x31, 0xfb, 0x1a, 0x32, 0x02, 0xda, 0x3a, 0x15, 0xfa, 0x28, 0x92, 0x1a, 0xa3, - 0x8c, 0x23, 0x99, 0x19, 0x73, 0xb1, 0xaf, 0x30, 0x02, 0x99, 0x00, 0x80, 0x80, 0x9a, 0x22, 0xec, - 0x52, 0xa0, 0x28, 0x90, 0xa9, 0x69, 0xb2, 0x78, 0xc1, 0x8b, 0x30, 0xa3, 0x0a, 0x09, 0x36, 0xd0, - 0xac, 0x38, 0x14, 0x18, 0x80, 0xd8, 0x8e, 0x22, 0x11, 0x91, 0xcb, 0x0a, 0x23, 0x20, 0xa0, 0x1a, - 0x52, 0xd1, 0x9b, 0x2b, 0x37, 0xa9, 0x08, 0xb8, 0x1b, 0x26, 0xb9, 0x62, 0xc0, 0x8a, 0x30, 0x04, - 0xcb, 0x20, 0x11, 0xd1, 0x1b, 0x01, 0x91, 0x9b, 0x69, 0x84, 0x8a, 0xb9, 0x39, 0x47, 0xa9, 0x09, - 0xa9, 0x89, 0x46, 0x80, 0x98, 0x8c, 0xa1, 0x79, 0x93, 0x0b, 0xb0, 0x2b, 0x37, 0xca, 0x19, 0x10, - 0x02, 0xa9, 0xbb, 0x72, 0xc1, 0x38, 0x11, 0xe8, 0x1a, 0x93, 0x2c, 0x84, 0x9a, 0x44, 0xc9, 0x8b, - 0x63, 0xb0, 0x2b, 0x15, 0xc9, 0x0b, 0x23, 0xa8, 0x31, 0x91, 0xc9, 0x2b, 0xa2, 0x79, 0x94, 0x8d, - 0x12, 0xaa, 0x38, 0x83, 0xb8, 0x9c, 0x53, 0x03, 0xcc, 0x10, 0x28, 0xd8, 0x70, 0x92, 0xac, 0x00, - 0x01, 0x32, 0xc8, 0x8a, 0x03, 0xbb, 0x31, 0x09, 0x27, 0xa1, 0x0d, 0xc9, 0x1a, 0x63, 0xa3, 0x1b, - 0xb3, 0xac, 0x19, 0x25, 0xa8, 0x21, 0xbb, 0x11, 0x82, 0xbf, 0x47, 0xb0, 0x0c, 0x04, 0xba, 0x29, - 0x23, 0x22, 0xe8, 0xab, 0x1a, 0x26, 0x8b, 0x23, 0x09, 0xd9, 0x19, 0x11, 0x90, 0x1a, 0xd4, 0x5a, - 0x85, 0x9d, 0x00, 0x30, 0x82, 0xaa, 0x9a, 0x13, 0x40, 0xb2, 0x8c, 0x81, 0x30, 0xcc, 0x64, 0xe8, - 0x2a, 0x14, 0xa8, 0x99, 0x8a, 0x34, 0x91, 0x98, 0x8c, 0x91, 0x59, 0xc1, 0x50, 0xa1, 0x9c, 0x32, - 0xc1, 0x5b, 0xa4, 0x8c, 0x22, 0x89, 0x89, 0x42, 0xc0, 0x09, 0x00, 0x90, 0x2a, 0xc1, 0x68, 0x93, - 0x9f, 0x11, 0x12, 0x9b, 0x00, 0x20, 0xfb, 0x29, 0x42, 0x91, 0x8a, 0xaa, 0x31, 0x84, 0x0d, 0x01, - 0x89, 0x09, 0x25, 0xac, 0x90, 0x79, 0xb4, 0x0a, 0xa0, 0x29, 0x15, 0x28, 0xd8, 0x0a, 0x28, 0xa0, - 0x34, 0xea, 0x1a, 0x83, 0x29, 0x15, 0xcb, 0x28, 0xac, 0x36, 0xd9, 0x18, 0x23, 0xdb, 0x38, 0x81, - 0x0a, 0x82, 0xa9, 0x29, 0x87, 0x0e, 0x13, 0x89, 0xba, 0x22, 0x9b, 0x41, 0x80, 0x33, 0xde, 0x18, - 0x81, 0x21, 0x04, 0xcd, 0x20, 0x00, 0x11, 0xa0, 0x9c, 0x22, 0x08, 0xb1, 0x1e, 0xb0, 0x70, 0x85, - 0xba, 0x9a, 0x31, 0x23, 0x81, 0x9d, 0xc1, 0x69, 0xd2, 0x2a, 0x84, 0x89, 0x01, 0x81, 0xda, 0x0a, - 0x43, 0x04, 0xca, 0x89, 0x18, 0x51, 0x91, 0xb9, 0x0b, 0x15, 0x99, 0x12, 0xac, 0x42, 0x13, 0xfb, - 0x0a, 0x99, 0x72, 0x93, 0x8c, 0x98, 0x30, 0x91, 0xba, 0x70, 0xb4, 0x1b, 0x03, 0x98, 0x8c, 0x63, - 0x98, 0x09, 0xb9, 0x2a, 0x45, 0x92, 0xad, 0x02, 0x8a, 0x36, 0xea, 0x18, 0x10, 0xa0, 0x1a, 0x82, - 0x19, 0xa8, 0x33, 0x8d, 0x96, 0x9c, 0x72, 0xb1, 0x9b, 0x32, 0x82, 0x99, 0x9b, 0x15, 0x9a, 0x84, - 0x8c, 0x33, 0xe1, 0x38, 0xb0, 0x9c, 0x32, 0x30, 0xd1, 0x8d, 0x33, 0xb9, 0x88, 0x12, 0x8f, 0x13, - 0x10, 0xd9, 0x0c, 0x34, 0xa1, 0xcb, 0x30, 0x80, 0x92, 0x60, 0xe8, 0x38, 0xa1, 0x3a, 0xa2, 0xfa, - 0x3a, 0x17, 0x98, 0xaa, 0x98, 0x50, 0x12, 0xba, 0x2a, 0x02, 0x08, 0x82, 0xce, 0x30, 0x23, 0xc8, - 0x0a, 0xb9, 0x7b, 0x15, 0x91, 0xcb, 0x8a, 0x43, 0x13, 0xb9, 0x9d, 0x31, 0xb2, 0x0c, 0x01, 0x08, - 0x88, 0x54, 0xc1, 0xac, 0x18, 0x53, 0x91, 0xbc, 0x41, 0x81, 0x09, 0xc9, 0x08, 0x30, 0x34, 0xe0, - 0x8b, 0x81, 0x31, 0x24, 0xe8, 0x8b, 0x02, 0x0a, 0x17, 0xb9, 0x88, 0x34, 0xa8, 0xcd, 0x38, 0x23, - 0x11, 0xfa, 0x1b, 0x03, 0xba, 0x70, 0x91, 0x09, 0x90, 0x2a, 0x84, 0xad, 0x52, 0x81, 0x88, 0xdb, - 0x28, 0x12, 0x30, 0xb2, 0x9f, 0x81, 0x88, 0x12, 0x30, 0x86, 0xcb, 0x0a, 0x21, 0xa9, 0x20, 0x33, - 0xe8, 0x8d, 0x22, 0x00, 0xd1, 0x8d, 0x44, 0xb1, 0x0c, 0x88, 0x31, 0x11, 0xda, 0x18, 0x90, 0x0b, - 0x47, 0xaa, 0x21, 0x99, 0x41, 0xc1, 0x9d, 0x80, 0x63, 0xa1, 0x8b, 0xa8, 0x59, 0x05, 0x99, 0x8a, - 0x81, 0x2a, 0x04, 0x01, 0xdd, 0x29, 0x52, 0x91, 0xda, 0x1a, 0x24, 0x90, 0x98, 0xa9, 0x70, 0xa1, - 0x88, 0x88, 0x08, 0x20, 0x00, 0x12, 0xff, 0x38, 0x12, 0xa1, 0x9c, 0x80, 0x40, 0x93, 0x9d, 0x11, - 0x81, 0x88, 0x99, 0x03, 0x9d, 0x02, 0x38, 0x15, 0xfb, 0x1b, 0x23, 0xa0, 0x89, 0x61, 0xa1, 0x9c, - 0x28, 0x89, 0x57, 0xb9, 0x1b, 0x14, 0xa9, 0x11, 0xaa, 0x12, 0xb8, 0x41, 0x01, 0xe0, 0x8e, 0x24, - 0x92, 0x9c, 0x99, 0x62, 0xa2, 0xab, 0x10, 0x12, 0x22, 0xfb, 0x8c, 0x15, 0x9a, 0x52, 0xb8, 0x09, - 0x99, 0x50, 0x04, 0xbb, 0x08, 0x40, 0x92, 0xab, 0x38, 0x12, 0x08, 0xc0, 0x0c, 0x92, 0x2b, 0x37, - 0xb8, 0x09, 0xea, 0x41, 0xc0, 0x28, 0x92, 0x21, 0xf8, 0x8b, 0x22, 0x21, 0x92, 0xae, 0x20, 0x81, - 0x9b, 0x12, 0x82, 0x6c, 0xb3, 0x1c, 0x90, 0xaa, 0x71, 0x24, 0xd9, 0x8b, 0x82, 0x63, 0xb0, 0x9b, - 0x42, 0xc1, 0x38, 0xc8, 0x8a, 0x53, 0xa1, 0x0a, 0xb2, 0x9e, 0x21, 0x44, 0xa0, 0xbc, 0x1a, 0x43, - 0x02, 0x9a, 0xbc, 0x72, 0xb3, 0x8c, 0x22, 0xb9, 0x50, 0x93, 0xac, 0x00, 0x39, 0x94, 0x28, 0xcb, - 0x18, 0x22, 0x90, 0x10, 0xc9, 0x0c, 0x34, 0xd1, 0x8e, 0x82, 0x38, 0x93, 0x08, 0xd9, 0x28, 0xdc, - 0x43, 0x81, 0xac, 0x63, 0xb0, 0x0a, 0x00, 0x01, 0x10, 0xdb, 0x31, 0x31, 0xe1, 0xab, 0x71, 0x93, - 0x9c, 0x08, 0x21, 0x9a, 0x34, 0xcb, 0x18, 0x80, 0xaa, 0x46, 0xe9, 0x20, 0x00, 0xb0, 0x28, 0xea, - 0x52, 0x88, 0x98, 0x09, 0x99, 0x55, 0xb8, 0x88, 0x89, 0x15, 0x8b, 0x05, 0x9a, 0xa9, 0x61, 0x91, - 0x89, 0xa9, 0x48, 0x94, 0x0a, 0xb1, 0x58, 0xb1, 0x4a, 0x93, 0xbf, 0x42, 0x02, 0xa8, 0xbc, 0x21, - 0x00, 0x62, 0xd0, 0x8a, 0x12, 0x11, 0x9a, 0x1a, 0x00, 0x24, 0xbb, 0x02, 0x9e, 0x82, 0x6a, 0x84, - 0x0b, 0xa8, 0x28, 0x39, 0xc7, 0x1d, 0x04, 0x99, 0x18, 0x00, 0x88, 0x89, 0x30, 0x85, 0xad, 0x18, - 0x12, 0xa0, 0x31, 0xa0, 0xd9, 0x00, 0xad, 0x73, 0xb4, 0x09, 0xb9, 0x62, 0xb0, 0x89, 0x18, 0x14, - 0x00, 0xec, 0x20, 0x80, 0x30, 0x92, 0x88, 0xaf, 0x12, 0x20, 0xb2, 0x0b, 0xc9, 0x70, 0x92, 0xcb, - 0x19, 0x26, 0x99, 0xa8, 0x20, 0x08, 0xc2, 0x2d, 0x15, 0x99, 0x9c, 0x32, 0xb8, 0x1a, 0x01, 0x24, - 0x11, 0xfa, 0x19, 0xb9, 0x62, 0x90, 0x41, 0xcb, 0x81, 0x0c, 0x17, 0xb9, 0x20, 0x90, 0x9a, 0x58, - 0x93, 0x1c, 0x03, 0xea, 0x29, 0x82, 0x8a, 0x11, 0x14, 0xa9, 0xb9, 0x1d, 0x44, 0x91, 0xad, 0x18, - 0x34, 0xa9, 0x88, 0xa1, 0x8e, 0x42, 0xa1, 0x8b, 0x85, 0x8d, 0x34, 0xa9, 0x19, 0x98, 0x20, 0x9a, - 0x85, 0x0e, 0x44, 0xc8, 0x0b, 0x11, 0x08, 0x20, 0x11, 0xeb, 0x19, 0x80, 0x28, 0x16, 0xe9, 0x3a, - 0xa4, 0x8a, 0x02, 0x90, 0x61, 0xd1, 0x8b, 0x12, 0x01, 0xb8, 0x30, 0xfa, 0x40, 0xa2, 0x19, 0x90, - 0x09, 0x41, 0xa3, 0xcf, 0x12, 0x12, 0x99, 0x98, 0xea, 0x68, 0x03, 0xba, 0x0a, 0x11, 0x12, 0x20, - 0xfa, 0x1b, 0x04, 0x0b, 0x81, 0x33, 0xaf, 0x30, 0x82, 0xae, 0x32, 0xb1, 0x78, 0xd1, 0x0b, 0x33, - 0x80, 0xba, 0x10, 0x01, 0xa9, 0x51, 0x81, 0x89, 0xc8, 0x2a, 0x02, 0x00, 0x0f, 0x16, 0xa9, 0xcb, - 0x48, 0x24, 0xb0, 0xac, 0x2b, 0x47, 0xa9, 0x88, 0x99, 0x33, 0xba, 0x42, 0xb8, 0x29, 0x44, 0xd9, - 0x1a, 0x88, 0x42, 0x01, 0xb8, 0xaf, 0x22, 0x24, 0xc8, 0x9c, 0x18, 0x34, 0xa0, 0x88, 0xac, 0x41, - 0xa0, 0x31, 0xfa, 0x1b, 0x13, 0x52, 0xd8, 0x9a, 0x30, 0x16, 0xab, 0x98, 0x20, 0x13, 0x10, 0xf9, - 0x2b, 0x81, 0x31, 0xb1, 0x09, 0x98, 0x1b, 0x17, 0xa8, 0x0b, 0x82, 0x35, 0xef, 0x20, 0x18, 0x03, - 0xad, 0x18, 0x21, 0x81, 0x9c, 0x50, 0xc3, 0x1c, 0x82, 0x9a, 0x19, 0x37, 0xa9, 0xba, 0x1a, 0x63, - 0x12, 0xb9, 0x0c, 0x90, 0x31, 0x21, 0xd1, 0xaf, 0x31, 0x23, 0xd0, 0x8b, 0x01, 0x10, 0x23, 0xf9, - 0x8c, 0x15, 0x09, 0x91, 0x9b, 0x19, 0x27, 0xa9, 0x99, 0x18, 0x22, 0x32, 0xf9, 0x8a, 0x8a, 0x45, - 0x90, 0xa8, 0x89, 0x01, 0x30, 0xf0, 0x29, 0x93, 0x19, 0x81, 0xdc, 0x48, 0x12, 0x01, 0xbd, 0x88, - 0x00, 0x34, 0xc1, 0x8a, 0x21, 0xa8, 0x62, 0xfb, 0x08, 0x61, 0xa1, 0x8b, 0x80, 0x28, 0x12, 0x88, - 0xab, 0x10, 0x23, 0x22, 0xfb, 0x8e, 0x42, 0x82, 0xa8, 0xbd, 0x48, 0x85, 0x89, 0x98, 0x30, 0x81, - 0x18, 0xf1, 0x1d, 0x21, 0x22, 0xd9, 0x9b, 0x09, 0x36, 0x00, 0xb0, 0x0c, 0xc8, 0x49, 0x13, 0x80, - 0xad, 0x53, 0xb9, 0x99, 0x32, 0xa0, 0x44, 0xe8, 0x8c, 0x32, 0x00, 0x81, 0xba, 0x89, 0x60, 0xa3, - 0x1b, 0xc8, 0x31, 0x31, 0xb4, 0xbf, 0x21, 0x01, 0x01, 0xdb, 0x28, 0x21, 0xb3, 0x8c, 0xd9, 0x69, - 0x03, 0x01, 0xaf, 0x80, 0x30, 0x04, 0xb9, 0x9b, 0x42, 0x91, 0x18, 0xe8, 0x2b, 0x26, 0x08, 0xa8, - 0xcb, 0x58, 0x03, 0xba, 0x10, 0x98, 0x02, 0x3a, 0xa4, 0x8c, 0x89, 0x66, 0xd8, 0x0a, 0x11, 0x31, - 0xc0, 0x8b, 0x88, 0x61, 0xa2, 0x8b, 0xa8, 0x72, 0x82, 0x9b, 0x00, 0xa9, 0x58, 0x02, 0x88, 0xcc, - 0x31, 0x82, 0x00, 0xdc, 0x51, 0x91, 0xab, 0x18, 0x14, 0x8a, 0x13, 0xba, 0xbc, 0x28, 0x43, 0x36, - 0xde, 0x21, 0x90, 0x80, 0x0a, 0x04, 0x8b, 0x04, 0xcb, 0x50, 0x82, 0x99, 0x88, 0x8a, 0x12, 0x57, - 0xe8, 0x8a, 0x32, 0xa0, 0x18, 0xa1, 0xc9, 0x2a, 0x17, 0x89, 0x98, 0x09, 0x42, 0x81, 0xcc, 0x0a, - 0x34, 0x10, 0xf8, 0x8a, 0x22, 0x11, 0xb0, 0x1c, 0x90, 0x48, 0x13, 0xdb, 0x01, 0x9d, 0x73, 0x81, - 0xbc, 0x18, 0x33, 0xa2, 0xac, 0x88, 0x30, 0x24, 0xa0, 0xac, 0xa9, 0x71, 0x02, 0x90, 0xbd, 0x12, - 0x29, 0x93, 0x0a, 0x89, 0x63, 0xc0, 0x8a, 0x82, 0x0c, 0x37, 0xd8, 0x2a, 0xa0, 0x00, 0x20, 0x21, - 0xe0, 0x8c, 0x21, 0x10, 0x03, 0xdc, 0x28, 0x83, 0xba, 0x59, 0x84, 0x9a, 0x11, 0x28, 0x93, 0xcf, - 0x09, 0x11, 0x73, 0x91, 0xba, 0x0a, 0x81, 0x40, 0x21, 0xc4, 0x9f, 0x30, 0x81, 0x9a, 0x10, 0x20, - 0xa2, 0x9c, 0x99, 0x59, 0x27, 0x90, 0x9a, 0xa9, 0x0b, 0x27, 0x08, 0x91, 0x8d, 0x13, 0x9b, 0xa1, - 0x3c, 0x17, 0x99, 0x9a, 0x11, 0x90, 0x11, 0x19, 0xb3, 0x9e, 0xa8, 0x61, 0x91, 0x09, 0x20, 0x02, - 0xfb, 0x8b, 0x28, 0x73, 0x96, 0x9c, 0x01, 0x11, 0x98, 0xaa, 0x41, 0x81, 0x99, 0x24, 0xad, 0x88, - 0x22, 0x24, 0x09, 0xf8, 0x1e, 0x03, 0x8a, 0x81, 0x23, 0xfb, 0x89, 0x20, 0x82, 0x48, 0xc0, 0x28, - 0xca, 0x00, 0x19, 0x36, 0xb1, 0x9e, 0x80, 0x51, 0x92, 0xad, 0x30, 0x83, 0x98, 0x9d, 0x42, 0x92, - 0x9c, 0x33, 0xb8, 0xbc, 0x70, 0x02, 0x89, 0xd9, 0x48, 0x92, 0x8a, 0x99, 0x52, 0x91, 0xa9, 0xa8, - 0x38, 0x03, 0x8a, 0x11, 0x0b, 0xc4, 0x8f, 0x52, 0xa1, 0x8a, 0x00, 0x21, 0xb2, 0xaf, 0x72, 0xc3, - 0x0b, 0x02, 0x08, 0x84, 0x9d, 0x12, 0x89, 0x01, 0x88, 0xa2, 0x8c, 0x11, 0x43, 0xc8, 0xbd, 0x30, - 0x14, 0x02, 0xdc, 0x09, 0x00, 0x25, 0x98, 0xbd, 0x42, 0x91, 0x9b, 0x24, 0xa0, 0x2b, 0x94, 0x0b, - 0x02, 0xc9, 0x79, 0x06, 0xba, 0x8c, 0x42, 0x92, 0x1b, 0xa2, 0x8a, 0x01, 0x11, 0xc9, 0x70, 0xe0, - 0x49, 0x92, 0xab, 0x20, 0x81, 0x12, 0xcc, 0x18, 0x21, 0x13, 0xbf, 0x32, 0x80, 0x90, 0x80, 0xbb, - 0x43, 0x43, 0xe0, 0x19, 0xb0, 0x30, 0x18, 0xc1, 0x69, 0x83, 0xae, 0x11, 0x8a, 0x23, 0x99, 0xb9, - 0x18, 0xac, 0x63, 0x01, 0xe9, 0x39, 0x04, 0x90, 0xdb, 0x2a, 0x17, 0x09, 0xa0, 0x1a, 0xc8, 0x30, - 0x45, 0xd9, 0x2a, 0x80, 0x12, 0xa8, 0x9a, 0x41, 0x44, 0xca, 0x89, 0x08, 0x08, 0x34, 0xda, 0x00, - 0x09, 0x00, 0x02, 0xce, 0x21, 0x38, 0x06, 0xbc, 0x0b, 0x53, 0x81, 0x09, 0xcb, 0x61, 0xa0, 0x28, - 0x91, 0x0a, 0x14, 0x9a, 0xd8, 0x8b, 0x44, 0x23, 0xb9, 0xbe, 0x40, 0x81, 0x22, 0x9b, 0xa8, 0x8b, - 0x53, 0x12, 0xfb, 0x0a, 0x43, 0xa0, 0xb8, 0x3b, 0x93, 0x4c, 0x86, 0xba, 0x8b, 0x35, 0xa1, 0x8d, - 0x10, 0x23, 0x01, 0xdf, 0x51, 0xa0, 0x08, 0x09, 0x04, 0xa9, 0x88, 0x22, 0xba, 0x38, 0x22, 0x91, - 0xfa, 0x9c, 0x62, 0x91, 0x9a, 0x18, 0x04, 0xa8, 0xac, 0x20, 0x52, 0x91, 0x99, 0xe8, 0x0c, 0x25, - 0x00, 0x91, 0xca, 0x1b, 0x17, 0xa9, 0x28, 0xb9, 0x55, 0xb8, 0x19, 0x99, 0x43, 0x89, 0x90, 0x2a, - 0xeb, 0x50, 0x03, 0xa9, 0x8e, 0x22, 0x18, 0xc0, 0x8c, 0x12, 0x21, 0x91, 0xeb, 0x89, 0x51, 0x01, - 0xa9, 0x20, 0xbb, 0x43, 0x98, 0x31, 0xca, 0x19, 0x27, 0xab, 0xc1, 0x3b, 0x27, 0x98, 0xba, 0x30, - 0x03, 0xa9, 0xc9, 0x68, 0xa0, 0x20, 0xaa, 0xc0, 0x1d, 0x27, 0x98, 0xc9, 0x1b, 0x26, 0x00, 0xdb, - 0x28, 0x83, 0x89, 0x90, 0x08, 0x98, 0x51, 0xa3, 0x2a, 0xd9, 0x08, 0x71, 0xc2, 0x0c, 0x81, 0x52, - 0xb8, 0x9b, 0x21, 0x11, 0x01, 0xb8, 0x9f, 0x14, 0x8b, 0x24, 0xb8, 0x09, 0x21, 0xfb, 0x1a, 0x24, - 0xa0, 0x11, 0xda, 0x89, 0x40, 0x16, 0xa8, 0x8d, 0x81, 0x38, 0x86, 0xab, 0x80, 0x42, 0x98, 0x29, - 0xe8, 0x1b, 0x44, 0x90, 0xa9, 0x8b, 0x33, 0x00, 0xa2, 0xdf, 0x42, 0x92, 0x8b, 0x92, 0x0b, 0x02, - 0x44, 0xdb, 0x10, 0xba, 0x52, 0x81, 0xb9, 0x49, 0x90, 0x32, 0xca, 0xaa, 0x78, 0x04, 0xa8, 0x9b, - 0x13, 0x1a, 0x84, 0xac, 0x41, 0xa8, 0x39, 0xd2, 0x2e, 0x14, 0x80, 0x9b, 0xc9, 0x68, 0x93, 0x99, - 0x00, 0xb8, 0x50, 0x91, 0x88, 0xca, 0x51, 0x01, 0xa0, 0x9f, 0x21, 0x01, 0x99, 0xa1, 0x3b, 0x06, - 0xbb, 0x19, 0x15, 0x0c, 0x27, 0xb8, 0xba, 0x4b, 0x17, 0x99, 0x18, 0xc8, 0x29, 0x01, 0x31, 0xca, - 0x08, 0x88, 0x21, 0xba, 0x18, 0x54, 0xb0, 0x28, 0xdc, 0x88, 0x3a, 0x57, 0x9a, 0x89, 0x10, 0x90, - 0x21, 0xc8, 0x1a, 0x34, 0xea, 0x39, 0x12, 0xd8, 0x38, 0xc8, 0x51, 0x88, 0xb9, 0x40, 0x91, 0x09, - 0x08, 0x01, 0xbe, 0x30, 0x43, 0xd1, 0x8d, 0x81, 0x48, 0x04, 0xbd, 0x30, 0xa0, 0x31, 0x90, 0xc8, - 0x0f, 0x03, 0x31, 0xb2, 0xbc, 0x3a, 0x15, 0x99, 0x21, 0xdb, 0x40, 0x80, 0xa9, 0x80, 0x21, 0xb2, - 0x0d, 0x34, 0xc9, 0x38, 0xa9, 0x23, 0xe9, 0x2a, 0xc1, 0x38, 0x38, 0xf3, 0x0f, 0x03, 0xa8, 0x48, - 0xa3, 0x9c, 0x89, 0x46, 0x98, 0x88, 0xbb, 0x41, 0x04, 0xaa, 0x20, 0x80, 0xb8, 0x2b, 0x27, 0xe9, - 0x2a, 0x04, 0x09, 0x90, 0xcc, 0x51, 0x81, 0x98, 0x89, 0x22, 0xd8, 0x39, 0xa1, 0x18, 0x9a, 0x15, - 0x00, 0xeb, 0x2a, 0x15, 0x10, 0xe9, 0x0a, 0x22, 0x92, 0x5a, 0xd1, 0x2a, 0x93, 0x9a, 0x09, 0x42, - 0x94, 0x0d, 0x04, 0xac, 0x01, 0x0b, 0x44, 0xb2, 0x9f, 0x22, 0xa0, 0x9a, 0x43, 0x02, 0xcc, 0x28, - 0xb0, 0x61, 0x80, 0x0a, 0x91, 0x8c, 0x12, 0x80, 0x00, 0xbb, 0x67, 0xb8, 0x08, 0xa9, 0x38, 0x26, - 0xa0, 0xae, 0x30, 0x13, 0xa8, 0xbb, 0x39, 0x14, 0x08, 0xaa, 0x81, 0xcf, 0x72, 0x82, 0xb9, 0x9b, - 0x32, 0x23, 0xda, 0x30, 0x91, 0xcb, 0x48, 0x84, 0xad, 0x52, 0x90, 0x08, 0xba, 0x29, 0x36, 0xc8, - 0x2a, 0x92, 0x8a, 0x18, 0x85, 0x1c, 0x94, 0x99, 0x89, 0x38, 0xb1, 0x38, 0x13, 0xf9, 0x6a, 0xc0, - 0x1a, 0x22, 0xc0, 0x49, 0x14, 0xda, 0x9b, 0x51, 0x12, 0xa8, 0x8c, 0x21, 0x00, 0x90, 0x1b, 0x32, - 0xb1, 0x9f, 0x15, 0xbd, 0x41, 0x80, 0x20, 0xd1, 0x8c, 0x21, 0x11, 0x80, 0x8a, 0x02, 0x09, 0xc0, - 0xaf, 0x51, 0x81, 0x00, 0xa0, 0x9b, 0xa9, 0x74, 0x94, 0x9b, 0x9a, 0x62, 0x81, 0x98, 0x9b, 0x34, - 0x90, 0xbd, 0x41, 0x11, 0xa0, 0x0d, 0x13, 0x8b, 0x92, 0x3a, 0x91, 0x9e, 0x21, 0x24, 0x8a, 0xfa, - 0x2b, 0x31, 0x05, 0x9d, 0x20, 0x21, 0xd8, 0x0b, 0x81, 0x54, 0xa8, 0x9a, 0x0b, 0x25, 0xa8, 0x41, - 0xc0, 0x0b, 0x90, 0x39, 0x47, 0xdb, 0x29, 0x33, 0xb8, 0x9d, 0x20, 0x10, 0x02, 0x88, 0xfa, 0x30, - 0x98, 0x32, 0x98, 0xcc, 0x28, 0x22, 0xa2, 0x9f, 0x24, 0x9b, 0x13, 0xad, 0x11, 0x23, 0xdc, 0x21, - 0x90, 0x08, 0xa0, 0x8a, 0x14, 0x9c, 0x01, 0x64, 0x92, 0x9f, 0x01, 0x28, 0x02, 0xd9, 0x39, 0x90, - 0x90, 0x89, 0x73, 0xc3, 0x8b, 0x90, 0x28, 0x43, 0xb8, 0x8a, 0x90, 0xb9, 0x73, 0x08, 0xc2, 0x9d, - 0x33, 0x31, 0xe9, 0x88, 0x0b, 0x17, 0x08, 0xba, 0x50, 0xa1, 0x98, 0x2b, 0xb3, 0x70, 0xb2, 0x0a, - 0xa0, 0xab, 0x67, 0xa1, 0x8b, 0xa0, 0x51, 0xa1, 0x08, 0x8b, 0x02, 0x09, 0x08, 0xa3, 0x9e, 0x11, - 0x44, 0xb2, 0x9e, 0x18, 0x10, 0x30, 0xb3, 0xaf, 0x63, 0xc0, 0x1b, 0x83, 0x08, 0x31, 0xf9, 0x89, - 0x21, 0x83, 0xab, 0x43, 0xfb, 0x38, 0x14, 0xda, 0x29, 0x81, 0x00, 0x1a, 0x15, 0xbd, 0x28, 0x13, - 0xa9, 0x41, 0xea, 0x19, 0x23, 0x02, 0xbe, 0x10, 0x81, 0x30, 0xb3, 0xcf, 0x42, 0x90, 0x1a, 0x91, - 0x09, 0x21, 0x92, 0x8f, 0x11, 0x00, 0x80, 0x01, 0xad, 0x01, 0x39, 0xb3, 0xa9, 0xff, 0x43, 0x80, - 0xb1, 0x8e, 0x31, 0x80, 0x08, 0x82, 0xaf, 0x13, 0x09, 0x04, 0xa9, 0x8b, 0x34, 0xa0, 0xca, 0x69, - 0x92, 0x01, 0xbb, 0x99, 0x72, 0x94, 0x8c, 0x80, 0x12, 0x88, 0x98, 0x80, 0xbd, 0x62, 0x03, 0x9b, - 0xc1, 0x8e, 0x32, 0x12, 0xa8, 0x8d, 0x03, 0xab, 0x11, 0x92, 0x70, 0xa5, 0xad, 0x21, 0x20, 0x92, - 0x19, 0xa8, 0xba, 0x1c, 0x24, 0x44, 0xeb, 0x88, 0x40, 0xb1, 0x2b, 0xc0, 0x50, 0x91, 0x98, 0x0b, - 0x33, 0x90, 0xd9, 0x28, 0x99, 0x37, 0xbb, 0x01, 0x99, 0x20, 0x45, 0xb1, 0xdf, 0x28, 0x25, 0xb8, - 0x0b, 0x11, 0x20, 0xb0, 0x8c, 0x21, 0xb8, 0x70, 0x93, 0xba, 0xab, 0x25, 0x18, 0x94, 0xbc, 0x10, - 0x24, 0xd9, 0x28, 0x88, 0x25, 0xb9, 0xcc, 0x49, 0x23, 0x90, 0xaa, 0x80, 0x1a, 0x93, 0x7a, 0xa3, - 0x9c, 0x18, 0x36, 0xd8, 0xab, 0x62, 0x92, 0x99, 0x8c, 0x23, 0x11, 0xd0, 0x8c, 0x12, 0x22, 0xa9, - 0xbb, 0x21, 0x89, 0x57, 0xa0, 0xac, 0x80, 0x21, 0x23, 0xc9, 0x8b, 0x72, 0xb3, 0x8d, 0x00, 0x00, - 0x33, 0xf8, 0x1a, 0x91, 0x1a, 0x23, 0x91, 0xad, 0x00, 0x72, 0xa3, 0x9e, 0x08, 0x33, 0x01, 0xfb, - 0x0a, 0x23, 0x88, 0x10, 0x92, 0xaf, 0x12, 0x00, 0x99, 0x20, 0x98, 0x04, 0x08, 0xfa, 0x3b, 0x04, - 0x89, 0x20, 0xd0, 0x2c, 0x06, 0xac, 0x30, 0x13, 0x9b, 0x81, 0x9f, 0x42, 0x90, 0x1a, 0x85, 0xbb, - 0x18, 0x23, 0xb9, 0x20, 0x72, 0xb1, 0xad, 0x89, 0x45, 0xa0, 0x80, 0x9a, 0x90, 0x39, 0x26, 0xb8, - 0xbc, 0x38, 0x35, 0xa1, 0xbe, 0x30, 0x23, 0xb9, 0x01, 0xbe, 0x52, 0x80, 0x90, 0x08, 0x38, 0xf1, - 0x1a, 0x03, 0x9c, 0x43, 0x90, 0x80, 0xcc, 0x38, 0x33, 0xb2, 0xaf, 0x42, 0xa0, 0x8d, 0x22, 0xa0, - 0x20, 0xd9, 0x29, 0x92, 0x0a, 0x24, 0x98, 0x81, 0x9e, 0x84, 0x0a, 0x84, 0x9a, 0x60, 0x85, 0x9c, - 0x90, 0x38, 0x12, 0xb0, 0x9a, 0x10, 0x98, 0x14, 0x0a, 0xb2, 0xaf, 0x51, 0x11, 0xd9, 0x8c, 0x45, - 0xa8, 0x09, 0xb0, 0x3c, 0x16, 0xaa, 0x18, 0x02, 0x99, 0xb9, 0x61, 0x91, 0xab, 0x45, 0x90, 0xaa, - 0xbc, 0x72, 0x13, 0xb9, 0x0b, 0x02, 0x8a, 0x51, 0x03, 0xbc, 0x99, 0x11, 0x18, 0x81, 0xa9, 0x0a, - 0xbd, 0x77, 0xa9, 0x28, 0x81, 0x09, 0x98, 0x20, 0xa8, 0x9c, 0x46, 0xba, 0x22, 0xcb, 0x50, 0x13, - 0xcb, 0x0d, 0x03, 0x68, 0x92, 0xab, 0x9a, 0x24, 0x89, 0x33, 0xfa, 0x0a, 0x14, 0x09, 0x91, 0x9d, - 0x20, 0x14, 0xaa, 0x9a, 0x18, 0x33, 0xa9, 0x32, 0x88, 0xef, 0x30, 0x10, 0x85, 0xbc, 0x20, 0x04, - 0xba, 0x28, 0x05, 0x8a, 0x90, 0xaa, 0x34, 0x00, 0xf9, 0x48, 0x82, 0x80, 0xac, 0x11, 0xba, 0x50, - 0x16, 0xba, 0x18, 0xa9, 0x22, 0xea, 0x32, 0x89, 0x33, 0xcf, 0x20, 0xb0, 0x58, 0x84, 0x99, 0xbc, - 0x52, 0x81, 0x10, 0x01, 0xfb, 0x19, 0x84, 0x09, 0x81, 0xb9, 0x51, 0xb0, 0x0b, 0x12, 0x22, 0xcb, - 0x88, 0x8a, 0x37, 0xb9, 0x10, 0xc0, 0x1e, 0x14, 0x09, 0xc0, 0x0b, 0x58, 0x05, 0x9a, 0x80, 0x89, - 0x34, 0xfa, 0x18, 0x81, 0x18, 0x82, 0xcc, 0x49, 0x04, 0x88, 0x9a, 0x11, 0x9c, 0x26, 0x99, 0xac, - 0x34, 0xa0, 0x18, 0xad, 0x28, 0x41, 0x92, 0x0c, 0xa2, 0x9f, 0x63, 0xa1, 0x8a, 0x88, 0x20, 0x02, - 0x99, 0xad, 0x50, 0x03, 0xaa, 0x00, 0xad, 0x52, 0x11, 0xc9, 0x1a, 0x82, 0x40, 0xa2, 0xae, 0x29, - 0x14, 0x11, 0xda, 0x88, 0xa0, 0x51, 0x04, 0xca, 0x89, 0x01, 0x88, 0x43, 0xe8, 0x28, 0x92, 0x9a, - 0x18, 0x80, 0x44, 0xb0, 0xae, 0x22, 0x2a, 0x87, 0x9c, 0x01, 0x11, 0x89, 0x91, 0x8b, 0x16, 0x99, - 0x10, 0x18, 0xd8, 0x1c, 0x35, 0xd8, 0x9b, 0x62, 0x92, 0x99, 0xb9, 0x30, 0x04, 0x18, 0xc9, 0x8a, - 0x09, 0x25, 0x80, 0xcb, 0x38, 0x14, 0x9a, 0xc9, 0x69, 0x05, 0x0a, 0xc0, 0x0a, 0x22, 0x01, 0x88, - 0xa9, 0x40, 0xfa, 0x31, 0xa0, 0x0a, 0x24, 0x10, 0xf9, 0x9c, 0x21, 0x53, 0xb1, 0xad, 0x88, 0x72, - 0x91, 0xa9, 0x89, 0x24, 0x89, 0x81, 0x8b, 0xb8, 0x72, 0x91, 0x81, 0xae, 0x52, 0xa8, 0x22, 0xda, - 0x39, 0x02, 0xa8, 0x89, 0x88, 0x71, 0x94, 0x8b, 0xa8, 0x09, 0x31, 0x16, 0xc9, 0xa9, 0x49, 0x12, - 0xa8, 0x8d, 0x53, 0xa0, 0x8b, 0x88, 0x20, 0x24, 0xcb, 0x10, 0x00, 0xd8, 0x59, 0x84, 0x99, 0x8f, - 0x16, 0xa9, 0x18, 0x88, 0x21, 0xa2, 0xac, 0x41, 0x90, 0x88, 0x0a, 0xb2, 0x4a, 0x16, 0x9a, 0xcb, - 0x40, 0x93, 0xa9, 0x10, 0x01, 0x08, 0x19, 0xf9, 0x5b, 0x80, 0x35, 0xca, 0xab, 0x21, 0x52, 0x04, - 0x9c, 0xc9, 0x39, 0x12, 0x01, 0x80, 0xbb, 0x44, 0xa9, 0x00, 0x9d, 0x61, 0x04, 0xeb, 0x1a, 0x12, - 0x21, 0xc0, 0x8a, 0x08, 0x01, 0x11, 0xcb, 0x18, 0x82, 0x62, 0x82, 0xef, 0x10, 0x12, 0x00, 0xab, - 0x48, 0x81, 0x82, 0x9f, 0x12, 0x18, 0x88, 0x83, 0x9e, 0xa8, 0x71, 0x02, 0xaa, 0x8a, 0x20, 0x02, - 0x18, 0xd8, 0x40, 0xb0, 0x09, 0x89, 0xba, 0x78, 0xa3, 0x33, 0xdd, 0x8b, 0x15, 0x21, 0xc8, 0x18, - 0x9a, 0x05, 0x9c, 0x12, 0x22, 0xb0, 0x09, 0x9c, 0xa8, 0x77, 0xb0, 0x09, 0x80, 0x30, 0xc0, 0x0a, - 0x28, 0x43, 0xe9, 0x1c, 0x04, 0x9c, 0x23, 0x89, 0x80, 0x8a, 0x90, 0x69, 0xb2, 0x0d, 0x44, 0xb0, - 0x9b, 0x19, 0x14, 0x08, 0x11, 0xc2, 0x9f, 0x12, 0x08, 0x41, 0xc2, 0xac, 0x51, 0x90, 0x98, 0x18, - 0x00, 0x22, 0xcc, 0x89, 0x28, 0x27, 0xc9, 0x89, 0x80, 0x38, 0x14, 0xaa, 0x9a, 0x12, 0xb9, 0x73, - 0xe5, 0x09, 0x81, 0x20, 0xb3, 0x8f, 0x22, 0x90, 0x89, 0x81, 0x10, 0x92, 0x9e, 0x34, 0xd1, 0x0b, - 0x02, 0x18, 0x81, 0xac, 0x23, 0x20, 0xf8, 0x0e, 0x23, 0x80, 0xb9, 0x8b, 0x16, 0x98, 0x99, 0x1a, - 0x27, 0x99, 0x9a, 0x60, 0xb0, 0x1b, 0x24, 0x92, 0xcb, 0x0a, 0x46, 0xc0, 0x8a, 0x11, 0x31, 0xc8, - 0x9c, 0x41, 0x93, 0x29, 0xe8, 0x18, 0x8b, 0x24, 0x09, 0x11, 0xa8, 0xbf, 0x31, 0x21, 0xd1, 0x3b, - 0x94, 0x0b, 0x98, 0x08, 0x72, 0x82, 0xca, 0x18, 0x98, 0x29, 0x37, 0xb8, 0xac, 0x00, 0x63, 0xb1, - 0x0c, 0x80, 0x33, 0xa0, 0xba, 0x8d, 0x22, 0x23, 0xa9, 0x51, 0xba, 0xbc, 0x68, 0x83, 0x8b, 0x80, - 0x08, 0x02, 0xf0, 0x2d, 0x85, 0x39, 0xe1, 0x1a, 0x91, 0x01, 0x19, 0x42, 0xb0, 0x9c, 0x98, 0x18, - 0x64, 0x82, 0x99, 0x99, 0xa9, 0x39, 0x47, 0xd0, 0x8b, 0x23, 0xc1, 0x0b, 0x02, 0x02, 0x09, 0x93, - 0xbf, 0x1a, 0x35, 0x21, 0x98, 0xde, 0x18, 0x12, 0x08, 0x80, 0x09, 0x80, 0x30, 0xb9, 0x63, 0xf8, - 0x3a, 0x82, 0x19, 0x93, 0x8d, 0x99, 0x43, 0x12, 0xbf, 0x24, 0xca, 0x38, 0x91, 0x20, 0xa9, 0x9b, - 0x53, 0xa8, 0x13, 0x0c, 0xe3, 0x48, 0xb8, 0x10, 0xbc, 0x44, 0x11, 0xf9, 0x09, 0x12, 0x80, 0x30, - 0xd1, 0x9d, 0x30, 0x35, 0xc8, 0xad, 0x32, 0x91, 0x10, 0xca, 0x11, 0x01, 0x8a, 0x23, 0xac, 0xb9, - 0x72, 0x86, 0xac, 0x00, 0x31, 0x81, 0xaa, 0x8c, 0x20, 0x23, 0x88, 0xd1, 0x1b, 0x25, 0xa9, 0x9a, - 0x21, 0xea, 0x70, 0x95, 0xac, 0x10, 0x20, 0x01, 0x88, 0xaa, 0x1a, 0x26, 0xb8, 0x39, 0xd0, 0x39, - 0x92, 0x30, 0xfa, 0x30, 0xc9, 0x20, 0x01, 0x02, 0xcc, 0x0a, 0x22, 0x88, 0x22, 0x20, 0xfa, 0x9b, - 0x45, 0xb8, 0x18, 0x08, 0x24, 0xea, 0x8a, 0x30, 0x27, 0xca, 0x19, 0x90, 0x8a, 0x46, 0x80, 0xb8, - 0xab, 0x21, 0x34, 0xc1, 0x9f, 0x21, 0x00, 0x82, 0xad, 0x21, 0x80, 0x08, 0x09, 0x12, 0xbb, 0x40, - 0x36, 0xfb, 0x1b, 0x15, 0x98, 0xa9, 0x80, 0x58, 0x05, 0xaa, 0x00, 0x8a, 0x32, 0xb0, 0xab, 0x3a, - 0x06, 0x51, 0xf9, 0x08, 0x09, 0x32, 0x01, 0xea, 0x1b, 0x03, 0x12, 0xba, 0x08, 0x29, 0x44, 0xf9, - 0x0a, 0x00, 0x43, 0x98, 0x91, 0x0e, 0x11, 0x11, 0xda, 0x00, 0x99, 0x72, 0x96, 0xac, 0x11, 0x18, - 0x12, 0x98, 0xbc, 0x50, 0xa0, 0x08, 0x38, 0x86, 0x9c, 0x92, 0x8a, 0x80, 0x44, 0x11, 0xc1, 0xaf, - 0x10, 0x22, 0x82, 0xaa, 0xa8, 0x8a, 0x45, 0x00, 0xb8, 0x8c, 0x24, 0xa0, 0x99, 0x9b, 0x34, 0x02, - 0xb8, 0xcb, 0x39, 0x54, 0xa1, 0x9a, 0x1a, 0x93, 0x78, 0xb7, 0x8e, 0x02, 0x21, 0xb8, 0x80, 0x9a, - 0x12, 0x12, 0xbc, 0x63, 0x90, 0x00, 0xeb, 0x00, 0x09, 0x27, 0x99, 0x8a, 0xa2, 0x1c, 0x17, 0xaa, - 0x18, 0x10, 0x80, 0x89, 0xcc, 0x72, 0x81, 0x80, 0xbc, 0x18, 0x33, 0x83, 0x08, 0xfd, 0x28, 0x12, - 0xa1, 0x0c, 0xc1, 0x59, 0x84, 0x9a, 0x99, 0x11, 0x31, 0xc3, 0x9e, 0x10, 0x32, 0xa1, 0x9d, 0x88, - 0x11, 0x20, 0x85, 0xcc, 0x09, 0x34, 0x12, 0xc8, 0xbe, 0x40, 0x03, 0xa0, 0x1a, 0xc2, 0x1c, 0x04, - 0x88, 0x99, 0x10, 0x43, 0xf8, 0x2a, 0xa1, 0x62, 0xb9, 0x09, 0x09, 0x13, 0x88, 0x09, 0xb0, 0x19, - 0x04, 0x18, 0xc1, 0x4c, 0x07, 0x9c, 0x80, 0x28, 0x13, 0x11, 0xfc, 0x2b, 0x23, 0x92, 0x9c, 0x91, - 0x2a, 0x07, 0x99, 0x08, 0xab, 0x51, 0x92, 0x98, 0xbe, 0x63, 0x11, 0x98, 0xad, 0x18, 0x52, 0xa1, - 0x8a, 0x99, 0x31, 0x11, 0x04, 0xbe, 0x18, 0x23, 0xaa, 0x62, 0xd9, 0x20, 0x81, 0x80, 0xec, 0x48, - 0x03, 0xa8, 0x9b, 0x18, 0x24, 0x88, 0xe9, 0x3a, 0x82, 0x80, 0x18, 0xa3, 0x9e, 0x12, 0x0a, 0x33, - 0xa9, 0x8a, 0x36, 0xf9, 0x9a, 0x71, 0x84, 0x9d, 0x01, 0x80, 0x20, 0x90, 0x8a, 0x01, 0xb9, 0x42, - 0x28, 0xe1, 0x2b, 0x84, 0xba, 0x19, 0x31, 0x38, 0x07, 0xfb, 0x1b, 0x34, 0x88, 0xa8, 0xab, 0x28, - 0x56, 0xc0, 0x8a, 0x01, 0x81, 0x10, 0x91, 0x8d, 0x24, 0x9a, 0x04, 0xbb, 0x18, 0x41, 0xa4, 0x9e, - 0x11, 0x88, 0x51, 0xb1, 0x0f, 0x02, 0x89, 0x10, 0x90, 0x89, 0x13, 0xbd, 0x38, 0x23, 0xc9, 0x70, - 0x92, 0xbf, 0x40, 0x92, 0x28, 0xa8, 0x80, 0x0a, 0x13, 0xea, 0x68, 0xa2, 0x0a, 0x92, 0xaa, 0x61, - 0x82, 0xbb, 0x08, 0x91, 0x2a, 0x47, 0xa8, 0xac, 0x48, 0x02, 0x88, 0xba, 0x29, 0x45, 0xc1, 0x1b, - 0x82, 0x9a, 0x19, 0xa5, 0x4a, 0x82, 0x81, 0xbd, 0x53, 0xea, 0x30, 0x81, 0x00, 0xdb, 0x38, 0x00, - 0x43, 0xc9, 0x89, 0x8a, 0x32, 0x21, 0x10, 0xb1, 0xdf, 0x42, 0xa1, 0xac, 0x59, 0x84, 0x0a, 0xa0, - 0x28, 0x00, 0xca, 0x70, 0x81, 0x98, 0x9c, 0x22, 0x88, 0x90, 0x1a, 0xb1, 0x72, 0xe2, 0x88, 0x29, - 0x13, 0x8b, 0x07, 0xab, 0x08, 0x30, 0x92, 0x12, 0xcf, 0x22, 0x8a, 0x84, 0xac, 0x52, 0xa1, 0x08, - 0x99, 0xa9, 0x62, 0x91, 0x0a, 0x31, 0xfa, 0x1b, 0x24, 0xa1, 0x8a, 0x00, 0x01, 0xcc, 0x70, 0xa4, - 0x0b, 0x92, 0x00, 0x0a, 0x92, 0x2d, 0x86, 0x8b, 0x81, 0x41, 0xcb, 0x28, 0x20, 0x92, 0xab, 0x80, - 0x78, 0x95, 0xac, 0x21, 0x80, 0x51, 0xd8, 0x8a, 0x1a, 0x36, 0xa8, 0x8a, 0x02, 0x8e, 0x23, 0x0a, - 0xa2, 0x0e, 0x14, 0x99, 0x98, 0x1a, 0x03, 0x10, 0xf9, 0x59, 0xb1, 0x3a, 0x82, 0x20, 0xcd, 0x41, - 0x80, 0x09, 0x19, 0xea, 0x52, 0x98, 0x90, 0x0a, 0x81, 0x34, 0xbc, 0x32, 0xa8, 0x99, 0x40, 0xf8, - 0x30, 0xb8, 0x40, 0x00, 0xf1, 0x0d, 0x14, 0x88, 0x99, 0x02, 0x19, 0x91, 0x99, 0x31, 0x21, 0xf3, - 0x9e, 0x41, 0x80, 0x99, 0x32, 0xc8, 0x88, 0x9a, 0x20, 0x28, 0x86, 0x48, 0xd2, 0xac, 0x31, 0x91, - 0x99, 0x22, 0xba, 0x42, 0x01, 0xea, 0x02, 0x1e, 0x94, 0x40, 0xf8, 0x0a, 0x24, 0xa9, 0x30, 0xb3, - 0xbf, 0x32, 0x81, 0x91, 0x8a, 0x20, 0x02, 0xaa, 0xaf, 0x41, 0x32, 0xc0, 0x8d, 0x82, 0x8b, 0x52, - 0x82, 0x9d, 0x12, 0xbc, 0x42, 0x02, 0xac, 0x20, 0x20, 0x94, 0xbe, 0x20, 0x14, 0x90, 0x99, 0xa8, - 0x2a, 0x83, 0x43, 0x01, 0xda, 0x9b, 0x31, 0x81, 0x0a, 0x08, 0x57, 0xd1, 0x9c, 0x10, 0x20, 0x16, - 0xcb, 0x00, 0x88, 0x02, 0xc9, 0x59, 0x83, 0x8b, 0x18, 0x88, 0xb9, 0x39, 0x67, 0xb1, 0x9e, 0x12, - 0x21, 0xc8, 0x1b, 0x14, 0x80, 0xa0, 0xaf, 0x63, 0xa8, 0x49, 0x91, 0xaa, 0x00, 0x10, 0x22, 0xc2, - 0x9f, 0x21, 0x11, 0xc0, 0x9b, 0x51, 0x82, 0x0a, 0xb9, 0x30, 0x01, 0x08, 0xb9, 0x32, 0xfd, 0x38, - 0x15, 0xbc, 0x32, 0xa8, 0x33, 0xda, 0x9c, 0x63, 0x81, 0x9a, 0x19, 0x83, 0xbb, 0x30, 0x83, 0x49, - 0xe1, 0x19, 0x99, 0x81, 0x2c, 0x27, 0xc8, 0x8c, 0x03, 0x10, 0xb2, 0x9c, 0x19, 0x47, 0xa9, 0x89, - 0x89, 0x23, 0x81, 0xa8, 0xa8, 0xaf, 0x26, 0x00, 0x90, 0xbc, 0x38, 0x27, 0xb9, 0x99, 0x18, 0x16, - 0xaa, 0x88, 0x10, 0x82, 0x28, 0xb9, 0xfb, 0x59, 0x04, 0x89, 0xa8, 0x9c, 0x43, 0x01, 0xb1, 0x9e, - 0x10, 0x00, 0x33, 0xfb, 0x30, 0x82, 0xa9, 0x11, 0xca, 0x29, 0x24, 0x08, 0xd3, 0xaf, 0x42, 0x02, - 0xab, 0x89, 0x30, 0x83, 0x9d, 0x11, 0x11, 0xb9, 0x19, 0x91, 0xee, 0x39, 0x15, 0x10, 0xc9, 0x2a, - 0xa3, 0x0c, 0x11, 0x20, 0x26, 0xbc, 0x88, 0x9c, 0x37, 0xa8, 0x89, 0x80, 0x08, 0x21, 0xab, 0x27, - 0xca, 0x39, 0x83, 0xbc, 0x80, 0x48, 0x27, 0xab, 0xab, 0x40, 0x12, 0xa8, 0x40, 0xd8, 0x3a, 0x94, - 0xab, 0x20, 0x14, 0x1a, 0xa3, 0x9e, 0x20, 0x11, 0x22, 0xcc, 0xa8, 0x8f, 0x27, 0xa8, 0x8a, 0x21, - 0x01, 0xb8, 0x9e, 0x23, 0x00, 0x81, 0x39, 0xf1, 0x0d, 0x21, 0x82, 0xbb, 0x88, 0x72, 0x83, 0xda, - 0x8b, 0x41, 0x13, 0xa8, 0x88, 0xcc, 0x30, 0x24, 0xb0, 0xaa, 0x99, 0x58, 0x16, 0xba, 0x8a, 0x35, - 0x00, 0xda, 0x9b, 0x58, 0x15, 0x99, 0x9a, 0x91, 0x1c, 0x17, 0x8b, 0x01, 0x09, 0x90, 0x23, 0xca, - 0x8a, 0x53, 0x91, 0x9a, 0xb9, 0x71, 0x92, 0x99, 0x18, 0xea, 0x61, 0xa1, 0x8b, 0x02, 0x21, 0xa0, - 0xad, 0x14, 0xab, 0x53, 0x91, 0x1a, 0xd9, 0x40, 0x82, 0xda, 0x1a, 0x45, 0xc1, 0x8c, 0x12, 0x91, - 0x2a, 0xb1, 0x48, 0xa8, 0x10, 0x18, 0xd3, 0x0e, 0x11, 0x23, 0xdc, 0x18, 0x90, 0x32, 0xb8, 0x8c, - 0x42, 0x82, 0x99, 0x80, 0xce, 0x62, 0xa1, 0x09, 0x19, 0x93, 0x0f, 0x05, 0x98, 0x89, 0x81, 0x29, - 0xc3, 0x0c, 0x23, 0x80, 0xa8, 0xcc, 0x1a, 0x35, 0x80, 0x08, 0xc9, 0x29, 0x12, 0xa9, 0x8a, 0x53, - 0x81, 0x18, 0xfc, 0x0b, 0x54, 0x02, 0xbc, 0x0a, 0x31, 0x83, 0x2b, 0x87, 0x8d, 0x82, 0x19, 0xa2, - 0x8b, 0x20, 0x36, 0xb9, 0xea, 0x1b, 0x16, 0x80, 0x90, 0x8a, 0x88, 0x21, 0xb2, 0xab, 0x61, 0xa0, - 0x54, 0xda, 0x09, 0x20, 0x23, 0x81, 0xbf, 0x20, 0x80, 0x22, 0xc8, 0x39, 0xc1, 0xcb, 0x78, 0xa4, - 0x0b, 0x22, 0x98, 0x1a, 0xa0, 0x3b, 0x37, 0xeb, 0x38, 0x02, 0xeb, 0x40, 0x90, 0x08, 0xa0, 0x19, - 0x82, 0x19, 0x84, 0xbc, 0x52, 0xba, 0x22, 0xa0, 0x0b, 0x93, 0x5a, 0x15, 0xa9, 0xb1, 0x9f, 0x17, - 0x09, 0xa9, 0x28, 0x00, 0x80, 0x19, 0xb4, 0x0c, 0x14, 0x98, 0xb8, 0x8e, 0x53, 0x04, 0xca, 0x99, - 0x38, 0x94, 0x8a, 0x42, 0xd0, 0x2b, 0x03, 0x8a, 0x83, 0xab, 0x29, 0x06, 0xbe, 0x41, 0x11, 0xa0, - 0x4b, 0xf2, 0x2c, 0x05, 0x8a, 0x10, 0x90, 0x8c, 0x23, 0x98, 0x91, 0x1a, 0xb1, 0x20, 0xdc, 0x51, - 0x12, 0xa0, 0xaf, 0x18, 0x16, 0xb9, 0x21, 0xa9, 0x00, 0x19, 0xa2, 0x2b, 0xa5, 0x49, 0x91, 0xb0, - 0x8f, 0x14, 0x40, 0xe0, 0x0a, 0x82, 0x18, 0x02, 0xb8, 0x09, 0x81, 0xba, 0xaa, 0x77, 0xb1, 0x18, - 0x80, 0x98, 0xae, 0x22, 0x42, 0x92, 0xdc, 0x29, 0x84, 0x9b, 0x41, 0x90, 0x80, 0x18, 0xca, 0x21, - 0x88, 0x35, 0xb8, 0xca, 0x1d, 0x84, 0x2a, 0x14, 0xa0, 0x0c, 0xb2, 0x8c, 0x21, 0x22, 0x26, 0xfb, - 0x1a, 0x02, 0x9a, 0x23, 0x18, 0x81, 0xfb, 0x0c, 0x24, 0x88, 0xb0, 0x50, 0xc8, 0x89, 0x42, 0x91, - 0x8a, 0x08, 0x02, 0xda, 0x70, 0xc0, 0x19, 0x13, 0x89, 0x91, 0x8c, 0x99, 0x45, 0x90, 0x38, 0xc0, - 0xbe, 0x50, 0x84, 0xab, 0x32, 0xb1, 0x8c, 0x10, 0x00, 0x29, 0x86, 0x8a, 0xa1, 0x8e, 0x22, 0x12, - 0xbb, 0x32, 0xb9, 0x08, 0x1b, 0x05, 0x03, 0xbf, 0x61, 0xa0, 0x2b, 0x93, 0x1c, 0x06, 0x8b, 0xa0, - 0x29, 0x02, 0x28, 0x20, 0xfb, 0x21, 0xdc, 0x48, 0x13, 0x99, 0x99, 0x8a, 0x23, 0x13, 0xb8, 0x9f, - 0x93, 0x8e, 0x23, 0x13, 0xdc, 0x29, 0x02, 0x02, 0xbd, 0x23, 0x09, 0x11, 0xc3, 0x8e, 0x14, 0xdb, - 0x30, 0x82, 0x88, 0xba, 0x2a, 0x17, 0x9a, 0x22, 0x20, 0xd0, 0x9b, 0x99, 0x42, 0x73, 0xf2, 0x0a, - 0x80, 0x80, 0x51, 0x92, 0x9a, 0xab, 0x20, 0x21, 0x87, 0x9b, 0x24, 0xd0, 0x8f, 0x13, 0x88, 0x11, - 0xa9, 0x8b, 0x34, 0xa9, 0x32, 0xba, 0x20, 0x00, 0xda, 0x0b, 0x73, 0xa1, 0x0c, 0x26, 0xda, 0x9a, - 0x23, 0x12, 0xc0, 0x29, 0xc2, 0x2c, 0xa4, 0x2c, 0x05, 0xba, 0x19, 0x83, 0x88, 0x00, 0x20, 0x04, - 0xae, 0x00, 0x28, 0x93, 0x3c, 0xf2, 0x59, 0x90, 0x90, 0x8a, 0x51, 0xc8, 0x39, 0x04, 0xc9, 0x9a, - 0x32, 0x23, 0x90, 0xdd, 0x20, 0xb8, 0x30, 0x35, 0xf1, 0x0a, 0x91, 0x28, 0xa0, 0x28, 0x30, 0xd4, - 0x0c, 0x92, 0x38, 0xa2, 0x18, 0xda, 0x29, 0x14, 0xa8, 0x8c, 0x53, 0xa2, 0x8d, 0x12, 0x89, 0xca, - 0x52, 0x00, 0xa3, 0x0d, 0xb8, 0x50, 0xf2, 0x39, 0x84, 0xca, 0x19, 0x02, 0x28, 0x82, 0xbb, 0x1a, - 0x00, 0x37, 0x8b, 0x93, 0x8f, 0x01, 0x32, 0xfa, 0x19, 0x28, 0x03, 0x89, 0xeb, 0x19, 0x35, 0xc1, - 0x0a, 0x83, 0x9c, 0x21, 0x84, 0xbb, 0x99, 0x71, 0x94, 0x9b, 0x9a, 0x64, 0x90, 0x99, 0x0b, 0x22, - 0x28, 0x23, 0xac, 0xd9, 0x3b, 0x16, 0x08, 0xa0, 0x0b, 0x91, 0x50, 0x01, 0xa9, 0x49, 0xf0, 0x1a, - 0x11, 0x08, 0x06, 0xcb, 0x10, 0x99, 0x58, 0x93, 0x8b, 0x38, 0xb2, 0x4a, 0xe9, 0x48, 0xa2, 0x1a, - 0x81, 0x08, 0x8c, 0x37, 0x9e, 0x81, 0x00, 0x11, 0x10, 0xfa, 0x19, 0x22, 0x90, 0x10, 0xfb, 0x18, - 0x11, 0x23, 0xca, 0xba, 0x4a, 0x35, 0xc0, 0x0e, 0x01, 0x20, 0xa0, 0x0a, 0x01, 0x8c, 0x24, 0xa1, - 0x9d, 0x21, 0x80, 0x99, 0x15, 0xaa, 0x10, 0x13, 0xcf, 0x30, 0x82, 0x18, 0x00, 0xe1, 0x4b, 0x93, - 0xbb, 0x40, 0xc8, 0x51, 0x92, 0xda, 0x19, 0x25, 0xa9, 0x8a, 0x80, 0x11, 0x88, 0x61, 0xf9, 0x49, - 0x92, 0x09, 0xa0, 0xcb, 0x78, 0x85, 0x0a, 0x91, 0x9b, 0x30, 0x84, 0x09, 0x98, 0x8a, 0x8a, 0x46, - 0xc9, 0x18, 0x81, 0x88, 0x01, 0xcd, 0x73, 0xa1, 0x88, 0x89, 0x82, 0x89, 0x12, 0x18, 0xba, 0x18, - 0xb0, 0x72, 0xb8, 0x1d, 0x86, 0x0a, 0x11, 0x88, 0xba, 0x01, 0x7a, 0xa7, 0x0b, 0x02, 0x10, 0xbd, - 0x53, 0x90, 0x9b, 0x31, 0x98, 0x14, 0x9e, 0x32, 0xa9, 0x88, 0x23, 0xbf, 0x33, 0xb9, 0x72, 0xa1, - 0xac, 0x30, 0xb3, 0x2b, 0x04, 0xb9, 0x50, 0x80, 0xc9, 0x1c, 0x14, 0x90, 0x8a, 0x22, 0xd9, 0x09, - 0x55, 0xc8, 0x1a, 0x92, 0x58, 0xb1, 0x8c, 0x31, 0x02, 0xc9, 0x8a, 0x12, 0xda, 0x50, 0x03, 0xa9, - 0x1a, 0xa2, 0x1c, 0x89, 0x27, 0x08, 0xd9, 0x09, 0x91, 0x19, 0x55, 0xb1, 0x9e, 0x81, 0x28, 0x05, - 0xba, 0x31, 0xc1, 0x0b, 0x41, 0xb0, 0x38, 0xa3, 0x59, 0xfa, 0x3a, 0x03, 0x01, 0xab, 0x91, 0x8c, - 0x23, 0x18, 0x98, 0x01, 0x9f, 0x24, 0xc9, 0x19, 0xa0, 0x79, 0x83, 0x8a, 0xa0, 0xad, 0x54, 0xa1, - 0x8a, 0x82, 0x29, 0xa2, 0x0c, 0x02, 0xa9, 0x71, 0xb1, 0x1a, 0xa8, 0x9a, 0x56, 0xb1, 0x1c, 0xa1, - 0x20, 0x0b, 0x07, 0x1a, 0xb1, 0x0b, 0xb2, 0x3c, 0x07, 0x18, 0xbc, 0x41, 0xb2, 0x0f, 0x83, 0x2a, - 0x04, 0xba, 0x20, 0x91, 0x8b, 0x91, 0x59, 0xb3, 0x1d, 0x23, 0xa8, 0xbf, 0x44, 0x88, 0x90, 0x88, - 0xab, 0x73, 0xb1, 0x48, 0xa1, 0xad, 0x20, 0x80, 0x30, 0x82, 0xaa, 0x1c, 0x15, 0xb9, 0xab, 0x74, - 0xa1, 0x89, 0x98, 0x1a, 0x17, 0xaa, 0x32, 0xc9, 0xaa, 0x62, 0x13, 0xda, 0x1a, 0x01, 0x24, 0xbc, - 0x11, 0x8a, 0x82, 0x60, 0xe8, 0x18, 0x91, 0x28, 0x91, 0x90, 0x9c, 0x32, 0x07, 0xab, 0xb8, 0x4b, - 0x17, 0x99, 0x99, 0x38, 0xb3, 0x9b, 0x70, 0x93, 0x8a, 0x80, 0xa8, 0x50, 0x01, 0x88, 0x91, 0xdf, - 0x30, 0x83, 0x8c, 0x01, 0x01, 0x0c, 0x15, 0xac, 0x30, 0xb2, 0x49, 0xb3, 0xcf, 0x51, 0x81, 0xa9, - 0x19, 0x83, 0x9a, 0x60, 0xb1, 0x8d, 0x23, 0x00, 0x00, 0xfa, 0x09, 0x23, 0x01, 0xb9, 0x89, 0x19, - 0x42, 0x03, 0xfb, 0x0c, 0x23, 0x01, 0xeb, 0x28, 0x80, 0x52, 0xb0, 0xac, 0x1a, 0x27, 0x98, 0xb8, - 0x0b, 0x63, 0x01, 0xa1, 0xcd, 0x38, 0x13, 0x90, 0x9a, 0x99, 0x49, 0x17, 0xba, 0x19, 0x11, 0x02, - 0x9b, 0xb2, 0x8f, 0x14, 0x52, 0xc0, 0xac, 0x30, 0x04, 0xa8, 0x9c, 0x31, 0x83, 0x98, 0xbd, 0x00, - 0x73, 0x91, 0x99, 0x9a, 0x19, 0x64, 0x91, 0x08, 0xeb, 0x18, 0x31, 0xb2, 0x9c, 0x21, 0x01, 0x04, - 0xbe, 0x28, 0x33, 0xb1, 0x9d, 0x88, 0x73, 0xb0, 0x09, 0x01, 0x9c, 0x31, 0x92, 0x08, 0xbe, 0x61, - 0x01, 0x80, 0xbc, 0x48, 0x12, 0xaa, 0x08, 0x20, 0x04, 0xdb, 0x1b, 0x03, 0x55, 0xc8, 0x0b, 0x82, - 0x0c, 0x44, 0x90, 0xe8, 0x1c, 0x14, 0x80, 0xa9, 0x8a, 0x50, 0x03, 0xba, 0x9a, 0x32, 0x01, 0x12, - 0xcc, 0x8c, 0x44, 0xa1, 0x89, 0xb9, 0x58, 0x12, 0x81, 0xcd, 0x88, 0x58, 0x24, 0xca, 0xaa, 0x31, - 0x24, 0xe0, 0x1b, 0x02, 0x10, 0xa0, 0x0a, 0xb9, 0x61, 0x11, 0x82, 0xaf, 0x18, 0x22, 0xb0, 0x1b, - 0xc2, 0x70, 0x82, 0xda, 0x8a, 0x43, 0x13, 0xea, 0x8a, 0x18, 0x34, 0x00, 0xbb, 0x8a, 0x20, 0x33, - 0x10, 0xfb, 0x1f, 0x13, 0x09, 0xc8, 0x2a, 0xa3, 0x62, 0xc8, 0x8b, 0x41, 0x14, 0xab, 0x08, 0x99, - 0x31, 0x04, 0xcd, 0x20, 0x80, 0x28, 0x13, 0xcd, 0x0a, 0x51, 0x04, 0xcb, 0x89, 0x43, 0x91, 0x99, - 0x88, 0x09, 0x82, 0xaa, 0x63, 0xa2, 0x5a, 0xd2, 0x8e, 0x21, 0x21, 0x81, 0xea, 0x8b, 0x23, 0x20, - 0x92, 0xcc, 0x2a, 0x25, 0x98, 0x9b, 0x30, 0x24, 0xe9, 0x1b, 0xb2, 0x6a, 0x05, 0x98, 0xdb, 0x28, - 0x13, 0x11, 0xbd, 0x28, 0x28, 0x13, 0x80, 0xfb, 0x2b, 0x11, 0x63, 0xd0, 0x9c, 0x23, 0x01, 0x09, - 0xa8, 0x8d, 0x14, 0x80, 0x88, 0x9a, 0x21, 0x20, 0xa1, 0xba, 0x9a, 0x78, 0x97, 0x8b, 0x01, 0x00, - 0x10, 0x04, 0xff, 0x40, 0x81, 0x8a, 0x80, 0x08, 0x11, 0x98, 0x18, 0x98, 0x10, 0x9a, 0x34, 0xfb, - 0x39, 0x24, 0xd0, 0x8e, 0x11, 0x12, 0x01, 0xdc, 0x19, 0x33, 0xa1, 0xaa, 0x99, 0x60, 0x91, 0x30, - 0xf9, 0x1b, 0x22, 0x22, 0x89, 0xfb, 0x0a, 0x44, 0xa0, 0x1a, 0x98, 0x29, 0x05, 0xdc, 0x49, 0x04, - 0x0a, 0x99, 0x08, 0x09, 0x22, 0x12, 0xb1, 0xcf, 0x30, 0x03, 0xa8, 0x99, 0x30, 0xa1, 0xcb, 0x79, - 0x82, 0x09, 0x98, 0x00, 0xbe, 0x44, 0x80, 0x9b, 0x12, 0x9a, 0x63, 0xb0, 0xab, 0x38, 0x14, 0x21, - 0xe9, 0xcc, 0x71, 0x83, 0xbb, 0x29, 0x91, 0x38, 0x84, 0xaa, 0x98, 0x31, 0x10, 0x04, 0xdf, 0x10, - 0x21, 0x93, 0x9e, 0x10, 0x80, 0x41, 0xb1, 0xbe, 0x39, 0x27, 0xc8, 0x08, 0x88, 0x80, 0x30, 0xa2, - 0x9b, 0xc8, 0x71, 0x83, 0xaa, 0x00, 0x88, 0x90, 0x34, 0xbd, 0x32, 0xf9, 0x39, 0x84, 0x8a, 0x10, - 0xaa, 0x08, 0x51, 0x04, 0xbb, 0x80, 0xcb, 0x72, 0xb3, 0x1b, 0xb8, 0x73, 0xb1, 0x1b, 0xb0, 0x61, - 0x02, 0xd9, 0x1a, 0xa1, 0x60, 0x82, 0xab, 0xab, 0x62, 0x12, 0x90, 0xbb, 0x1c, 0x26, 0xa8, 0x20, - 0xca, 0x8a, 0x73, 0x91, 0xaa, 0x30, 0xb1, 0x2a, 0xc1, 0x8a, 0x52, 0x24, 0xea, 0x89, 0x80, 0x40, - 0x13, 0xbb, 0x8a, 0x83, 0x0d, 0x04, 0x23, 0xba, 0xac, 0x00, 0x00, 0x0b, 0x37, 0x83, 0x9b, 0xfa, - 0x0c, 0x24, 0x20, 0xb9, 0x23, 0xae, 0x91, 0x39, 0x14, 0xa8, 0x9e, 0x00, 0x18, 0x33, 0xd8, 0x30, - 0xd2, 0x1b, 0x13, 0xe9, 0x0c, 0x24, 0x02, 0xb9, 0xaa, 0x1a, 0x36, 0xb9, 0x11, 0x13, 0xbc, 0x09, - 0x04, 0xac, 0x60, 0xa0, 0x44, 0xfb, 0x09, 0x21, 0x84, 0x1a, 0xc0, 0x0a, 0x11, 0x82, 0x0a, 0x04, - 0xcb, 0x00, 0xdb, 0x51, 0x82, 0x88, 0x28, 0xb2, 0x0e, 0x98, 0x72, 0xa1, 0x8a, 0x30, 0x01, 0xca, - 0x18, 0xab, 0x57, 0xb9, 0x39, 0xb1, 0x4a, 0x81, 0x09, 0x98, 0x00, 0x8e, 0x14, 0x9c, 0x12, 0x22, - 0x92, 0xed, 0x0a, 0x22, 0x03, 0xeb, 0x61, 0xa0, 0x08, 0x9b, 0x42, 0x02, 0x09, 0xc9, 0x0c, 0x85, - 0x8a, 0x26, 0xb9, 0x9a, 0x31, 0x01, 0x91, 0xbf, 0x43, 0x00, 0xa0, 0x0c, 0x90, 0x51, 0x93, 0xad, - 0x08, 0x03, 0x1b, 0x84, 0x8b, 0x91, 0x2c, 0x27, 0x9a, 0xca, 0x39, 0x25, 0x81, 0xac, 0x89, 0x16, - 0x9b, 0x81, 0x38, 0x83, 0x9c, 0x90, 0x68, 0xd2, 0x29, 0x22, 0xc1, 0xaf, 0x23, 0x89, 0x00, 0x08, - 0x88, 0x34, 0xdc, 0x18, 0x28, 0x83, 0xaa, 0x2a, 0x02, 0x22, 0xbe, 0x51, 0xa1, 0x9c, 0x01, 0x60, - 0xd1, 0x8a, 0x62, 0x82, 0xac, 0x11, 0x90, 0xa9, 0x20, 0x33, 0xb2, 0x8d, 0xa3, 0x0e, 0x92, 0x40, - 0x93, 0xcb, 0x8b, 0x42, 0x13, 0x88, 0xf1, 0x8d, 0x20, 0x23, 0xb9, 0x0e, 0x24, 0x80, 0xcb, 0x88, - 0x33, 0x08, 0xa9, 0x43, 0xbd, 0x22, 0x62, 0xf1, 0x0b, 0x12, 0x81, 0x8a, 0x92, 0x0c, 0x93, 0x3d, - 0x87, 0x8a, 0x98, 0x23, 0xa0, 0xbc, 0x70, 0x83, 0xba, 0x19, 0xa2, 0x4b, 0x84, 0x8b, 0x80, 0x18, - 0xa3, 0x8c, 0x06, 0x19, 0x13, 0xdb, 0x0a, 0x81, 0x2c, 0x47, 0xa8, 0xda, 0x38, 0x10, 0x92, 0x8b, - 0x82, 0x1e, 0x05, 0x8b, 0x81, 0x1a, 0x88, 0x43, 0xb8, 0xbe, 0x61, 0xa3, 0x09, 0xb8, 0x20, 0x24, - 0xb8, 0x9f, 0x11, 0x22, 0x99, 0x91, 0x9c, 0x9a, 0x73, 0xa5, 0x18, 0xfa, 0x38, 0x01, 0x20, 0xd8, - 0x2b, 0x13, 0x90, 0xad, 0x21, 0x01, 0x80, 0x9d, 0x32, 0x02, 0xdd, 0x40, 0x91, 0xaa, 0x31, 0x91, - 0x81, 0xdb, 0x50, 0x82, 0x99, 0x09, 0xb8, 0x21, 0x4b, 0x27, 0x0d, 0xa1, 0x1b, 0xb0, 0x70, 0x04, - 0xaa, 0x8a, 0x02, 0x08, 0x18, 0x13, 0xcc, 0x90, 0x69, 0x84, 0xba, 0x1a, 0x24, 0x81, 0xcd, 0x48, - 0xb1, 0x49, 0x03, 0xfa, 0x29, 0xb1, 0x38, 0x13, 0xa0, 0xab, 0x60, 0xa3, 0x9f, 0x04, 0x18, 0x92, - 0x8c, 0xa8, 0x58, 0x82, 0x99, 0x40, 0xf8, 0x29, 0x81, 0x88, 0x28, 0xa4, 0x0d, 0x03, 0xba, 0x40, - 0xb0, 0x30, 0xa3, 0x0b, 0xfb, 0x63, 0xb9, 0x38, 0x83, 0x89, 0xc8, 0x9d, 0x52, 0x13, 0x09, 0xf8, - 0x0a, 0x82, 0x20, 0x83, 0x9c, 0x11, 0xa0, 0x0d, 0xa2, 0x59, 0x92, 0x30, 0xc9, 0xbd, 0x41, 0x43, - 0xe9, 0x18, 0x98, 0x28, 0x02, 0x8a, 0xa0, 0x79, 0x13, 0xc9, 0xac, 0x59, 0x84, 0x08, 0x80, 0xba, - 0x1b, 0x20, 0x37, 0xd9, 0x39, 0xa2, 0x0c, 0x01, 0xa8, 0x50, 0x83, 0xcb, 0x28, 0xa0, 0x19, 0x34, - 0xe9, 0x28, 0xb3, 0x3a, 0xc3, 0x0e, 0x13, 0x92, 0xac, 0x99, 0x50, 0x02, 0x01, 0xaa, 0xeb, 0x51, - 0x92, 0x9d, 0x32, 0xa2, 0x29, 0xf2, 0x1a, 0x01, 0x19, 0x03, 0xd0, 0x9e, 0x14, 0x08, 0x04, 0xea, - 0x19, 0x82, 0x18, 0x92, 0xbb, 0x63, 0xb0, 0x08, 0x90, 0x29, 0xf0, 0x59, 0x82, 0x0a, 0x98, 0x31, - 0xa1, 0xaa, 0x80, 0xab, 0x55, 0xca, 0x75, 0xc0, 0x0a, 0x01, 0x19, 0x02, 0xa9, 0x09, 0x13, 0xba, - 0x52, 0xa8, 0x99, 0x32, 0x81, 0xfd, 0x1a, 0x16, 0x18, 0xa0, 0xb9, 0x9d, 0x34, 0x82, 0x99, 0x09, - 0xcb, 0x74, 0xa0, 0x09, 0x90, 0x19, 0x26, 0xea, 0x2a, 0x82, 0x30, 0xb2, 0xac, 0x38, 0xa1, 0x41, - 0xb1, 0x8c, 0x12, 0x41, 0xd2, 0xae, 0x28, 0x05, 0x00, 0xaa, 0x9a, 0x43, 0x18, 0x01, 0xaa, 0x0e, - 0x23, 0x88, 0xac, 0x42, 0x98, 0x43, 0xd9, 0x9c, 0x41, 0x82, 0x21, 0xd8, 0x9b, 0x39, 0x07, 0x9a, - 0x21, 0x90, 0x1b, 0xa2, 0x8f, 0x84, 0x18, 0x00, 0x82, 0xae, 0x0a, 0x35, 0xa0, 0x9b, 0x11, 0x21, - 0xeb, 0x32, 0xa9, 0x71, 0xc1, 0x1a, 0xa0, 0x91, 0x78, 0xa2, 0x19, 0x80, 0xaa, 0x89, 0x12, 0x60, - 0x93, 0x1c, 0xf2, 0x2b, 0x93, 0x80, 0x08, 0xb0, 0x21, 0x9a, 0x19, 0x64, 0x92, 0x9d, 0x41, 0xe9, - 0x1a, 0x53, 0xa0, 0x09, 0xda, 0x48, 0x83, 0x1a, 0xa0, 0x0a, 0x22, 0x89, 0x37, 0xec, 0x39, 0x13, - 0xba, 0x0a, 0x21, 0x80, 0x42, 0xb9, 0xca, 0x2b, 0x47, 0xa1, 0xad, 0x28, 0x14, 0x8a, 0x80, 0xbb, - 0x50, 0x82, 0x39, 0xc9, 0x8b, 0x64, 0x91, 0x9a, 0x09, 0x02, 0xb8, 0x70, 0xa8, 0x18, 0x04, 0xbc, - 0x28, 0x21, 0x82, 0x10, 0x8a, 0xc8, 0x31, 0xbf, 0x64, 0x81, 0xbd, 0x38, 0x82, 0x8b, 0x25, 0x98, - 0x91, 0xdf, 0x21, 0x02, 0xa8, 0x10, 0x9a, 0x12, 0x8b, 0x07, 0x9a, 0x11, 0x88, 0x88, 0x48, 0xe0, - 0x39, 0x05, 0x99, 0x99, 0xc8, 0x6a, 0x05, 0xaa, 0x28, 0xa2, 0x39, 0xe0, 0x28, 0xb1, 0x0d, 0x24, - 0xa0, 0x9c, 0x02, 0x29, 0x85, 0x90, 0x9d, 0x31, 0xb1, 0x8a, 0x53, 0x92, 0xab, 0x18, 0x01, 0xbe, - 0x73, 0xa1, 0x58, 0xc1, 0x9b, 0x33, 0xb0, 0x43, 0xda, 0x89, 0x00, 0xbb, 0x75, 0x81, 0xaa, 0x1a, - 0x82, 0x48, 0xd1, 0x29, 0x82, 0x80, 0xca, 0x20, 0x02, 0x81, 0x8f, 0x83, 0xad, 0x62, 0x91, 0x09, - 0x92, 0x9d, 0x34, 0xb9, 0x18, 0xb0, 0x1b, 0x57, 0xa9, 0x09, 0x80, 0x18, 0xb0, 0x30, 0x84, 0xbd, - 0x30, 0x22, 0xa3, 0x9f, 0x90, 0x30, 0xc1, 0x2a, 0x85, 0x09, 0x08, 0xb3, 0x1c, 0xe1, 0x29, 0x15, - 0xa1, 0xad, 0x22, 0x4b, 0x07, 0xab, 0x98, 0x11, 0x11, 0x10, 0x98, 0xca, 0x1b, 0x37, 0x88, 0xba, - 0x9a, 0x61, 0x84, 0xba, 0x0a, 0x33, 0x98, 0x41, 0xfb, 0x1b, 0x22, 0x21, 0x93, 0xad, 0x0c, 0x25, - 0x89, 0x82, 0xba, 0x9b, 0x47, 0x99, 0x90, 0x2b, 0x07, 0x8c, 0x00, 0x02, 0x8c, 0x13, 0x09, 0xa0, - 0x1c, 0x03, 0x80, 0xad, 0x22, 0xc9, 0x51, 0x88, 0x98, 0x39, 0xfb, 0x51, 0x00, 0x90, 0x0a, 0xd9, - 0x28, 0x00, 0x47, 0xaa, 0xba, 0x68, 0x82, 0x08, 0x80, 0xba, 0x58, 0x80, 0x88, 0x21, 0x29, 0xf3, - 0x8c, 0x82, 0x2b, 0x06, 0x89, 0x98, 0x88, 0x8a, 0x37, 0xb0, 0xbd, 0x38, 0x17, 0xa0, 0x8b, 0x11, - 0x0a, 0x04, 0x1a, 0xc1, 0x0a, 0x01, 0x30, 0x93, 0xcc, 0x61, 0xa0, 0x08, 0xaa, 0x42, 0x29, 0x97, - 0x0c, 0xb0, 0x78, 0xc2, 0x1a, 0x02, 0x89, 0x0a, 0x81, 0x59, 0xb2, 0x2b, 0x13, 0xc9, 0xac, 0x71, - 0x83, 0xba, 0xab, 0x74, 0x90, 0x80, 0x9a, 0x22, 0x08, 0x98, 0x99, 0x38, 0x16, 0xa8, 0xce, 0x48, - 0x92, 0x30, 0x90, 0xeb, 0x19, 0x11, 0x45, 0xc0, 0x8c, 0x08, 0x24, 0xa8, 0xba, 0x71, 0xb1, 0x09, - 0x81, 0x10, 0x88, 0x11, 0xc8, 0xab, 0x22, 0x51, 0x05, 0xad, 0x89, 0x50, 0x02, 0xcb, 0x28, 0x91, - 0x40, 0xa1, 0xa8, 0x1b, 0x86, 0x9b, 0x25, 0xaa, 0x99, 0x54, 0xa8, 0x88, 0x09, 0x2a, 0x37, 0xbf, - 0x11, 0x31, 0xd1, 0x19, 0x88, 0x82, 0x0b, 0x04, 0x9a, 0x18, 0x22, 0x9a, 0xa2, 0x9f, 0x17, 0x9b, - 0x11, 0x80, 0xa9, 0x30, 0x14, 0xdc, 0x30, 0x9a, 0x46, 0xea, 0x10, 0x81, 0x81, 0x9a, 0x80, 0x19, - 0x04, 0x18, 0xd1, 0x8d, 0x32, 0x91, 0x88, 0xdb, 0x49, 0x07, 0x9a, 0x00, 0x09, 0x88, 0x42, 0xc8, - 0x31, 0xcd, 0x43, 0x90, 0xc9, 0x49, 0x82, 0x98, 0x89, 0xb9, 0x71, 0x95, 0x8a, 0xb8, 0x40, 0x80, - 0x11, 0x81, 0xcc, 0x39, 0x03, 0x88, 0xab, 0x10, 0x62, 0xe1, 0x0b, 0x14, 0x00, 0x90, 0xab, 0x08, - 0x81, 0x62, 0x02, 0xfb, 0x2a, 0x13, 0x08, 0xb1, 0x9f, 0x61, 0x92, 0x9a, 0x98, 0x28, 0x22, 0x90, - 0x9d, 0x92, 0x5b, 0xa3, 0x9e, 0x33, 0xa8, 0x38, 0xb3, 0x9c, 0x0b, 0x14, 0x78, 0x86, 0xaf, 0x31, - 0x81, 0x9a, 0x01, 0x0a, 0x22, 0xa0, 0x9b, 0x30, 0x98, 0x43, 0x08, 0xd1, 0x9f, 0x12, 0x31, 0x83, - 0xbf, 0x39, 0x04, 0xa8, 0xaa, 0x63, 0xb1, 0x0a, 0x08, 0x24, 0xcb, 0x0a, 0x44, 0xb0, 0x8d, 0x23, - 0x98, 0x80, 0xac, 0x62, 0x92, 0x9b, 0x00, 0x42, 0xe0, 0x0c, 0x13, 0x30, 0xc9, 0x09, 0x8b, 0x44, - 0x82, 0xc9, 0x0a, 0x90, 0x71, 0xa2, 0x99, 0x29, 0xf9, 0x78, 0xa2, 0x9b, 0x28, 0x23, 0x91, 0xbb, - 0xac, 0x71, 0xa3, 0x1c, 0x93, 0x8b, 0x21, 0x12, 0xca, 0x9a, 0x68, 0x84, 0x89, 0xc9, 0x28, 0x10, - 0x17, 0xbb, 0x29, 0x80, 0x10, 0x13, 0x9e, 0x11, 0x3a, 0xa4, 0x89, 0xcd, 0x31, 0x20, 0x05, 0xdb, - 0x09, 0x10, 0x21, 0x00, 0xba, 0x80, 0x31, 0xda, 0x08, 0x10, 0x61, 0x83, 0xaa, 0xce, 0x68, 0xa2, - 0x6b, 0xa3, 0x0b, 0xab, 0x17, 0x99, 0x10, 0x11, 0xb9, 0x0b, 0xa8, 0x62, 0x31, 0xe9, 0x39, 0xa1, - 0x99, 0x0b, 0x22, 0x36, 0xb8, 0x9b, 0xd9, 0x69, 0x81, 0x24, 0xbb, 0xc9, 0x3a, 0x17, 0xa8, 0x89, - 0x20, 0x81, 0x21, 0xfc, 0x30, 0xd1, 0x58, 0xa2, 0x8d, 0x01, 0x00, 0x19, 0x02, 0x8b, 0xa9, 0x52, - 0xa9, 0x91, 0x3b, 0x07, 0x9a, 0x93, 0x2d, 0xb2, 0x4b, 0x82, 0x80, 0x11, 0xbf, 0x33, 0x9b, 0x14, - 0x1a, 0xc3, 0x0d, 0x11, 0x12, 0xbc, 0x33, 0x9c, 0x24, 0xd9, 0x8b, 0x73, 0xa1, 0x29, 0xa0, 0xaa, - 0x08, 0x45, 0xb8, 0x28, 0xf0, 0x29, 0x80, 0x04, 0xac, 0x21, 0x01, 0x89, 0x91, 0xac, 0x42, 0x03, - 0x9b, 0x27, 0xbf, 0x41, 0x91, 0x89, 0x00, 0x8b, 0x26, 0xca, 0x10, 0x81, 0x80, 0x38, 0xf2, 0x1d, - 0x82, 0x18, 0x21, 0xd9, 0x1b, 0x02, 0x21, 0xd0, 0x1a, 0x12, 0xd0, 0x49, 0x92, 0x09, 0xa8, 0x8a, - 0x25, 0x98, 0x89, 0x91, 0x0a, 0x47, 0xc0, 0x0a, 0x11, 0xba, 0x73, 0xa9, 0x00, 0x9b, 0x36, 0x80, - 0xfa, 0x2a, 0x85, 0x29, 0xd8, 0x18, 0x10, 0x80, 0x20, 0xf2, 0x0c, 0x03, 0x00, 0x19, 0xe0, 0x2c, - 0x15, 0x98, 0x99, 0x10, 0x9a, 0x34, 0x8a, 0xa8, 0x11, 0x8a, 0x32, 0xb9, 0x34, 0xff, 0x21, 0x01, - 0xa8, 0x8a, 0x31, 0x84, 0xb8, 0x9e, 0x23, 0x98, 0x08, 0x18, 0x13, 0xcf, 0x50, 0x81, 0xaa, 0x09, - 0x35, 0xa8, 0xb8, 0x2b, 0xa0, 0x67, 0xb0, 0x9b, 0x21, 0x93, 0x0b, 0x14, 0x99, 0xfa, 0x30, 0x80, - 0x13, 0xbc, 0x81, 0x43, 0xcd, 0x21, 0x11, 0xa2, 0x9f, 0x02, 0x21, 0xe9, 0x28, 0x82, 0x98, 0x8a, - 0x10, 0x33, 0xb0, 0x0b, 0xfa, 0x20, 0x18, 0x16, 0xab, 0x99, 0x29, 0x13, 0x52, 0xc8, 0xda, 0x6b, - 0x16, 0xca, 0x28, 0x91, 0x00, 0x09, 0x90, 0x0a, 0x03, 0x8a, 0x34, 0xd8, 0x8d, 0x22, 0x21, 0xe9, - 0x30, 0xa8, 0x98, 0x29, 0xa4, 0x4a, 0xd0, 0x40, 0xd9, 0x31, 0xa0, 0x08, 0x10, 0xa1, 0x0a, 0x38, - 0x27, 0xaf, 0x22, 0xaa, 0x30, 0xb3, 0x0f, 0x85, 0x9a, 0x02, 0x00, 0x11, 0xcb, 0x99, 0x53, 0x98, - 0xa2, 0x69, 0xda, 0x20, 0x80, 0x32, 0xf9, 0x1a, 0x01, 0x02, 0x89, 0x92, 0x9b, 0x68, 0xc1, 0x22, - 0xaf, 0x32, 0x01, 0xbb, 0x01, 0x28, 0x25, 0xfa, 0x0a, 0x11, 0x43, 0xa9, 0x88, 0xfb, 0x58, 0x12, - 0xb0, 0x8e, 0x02, 0x8b, 0x34, 0x9a, 0xa0, 0x30, 0xc2, 0x0c, 0x90, 0x72, 0x80, 0x90, 0x9a, 0x09, - 0x34, 0x90, 0xdb, 0x38, 0x82, 0x19, 0xb3, 0xbf, 0x54, 0x82, 0xba, 0x0b, 0x23, 0x8d, 0x25, 0xa8, - 0xaa, 0x18, 0x92, 0x00, 0x5b, 0xd1, 0x58, 0xa1, 0xab, 0x40, 0x93, 0x3c, 0xa3, 0xb9, 0x9f, 0x16, - 0x19, 0xb0, 0x38, 0xc0, 0x51, 0xb8, 0x08, 0x90, 0x21, 0xa8, 0x01, 0x98, 0x0d, 0xa1, 0x64, 0xb9, - 0x09, 0xaa, 0x33, 0x59, 0x87, 0x0c, 0x93, 0x9e, 0x20, 0x13, 0x88, 0xbc, 0x28, 0x03, 0x41, 0xe1, - 0x8b, 0x10, 0x22, 0x91, 0x8a, 0x88, 0x01, 0x8a, 0x83, 0xbb, 0x79, 0xa4, 0x61, 0xfb, 0x29, 0x34, - 0xa0, 0xdc, 0x09, 0x33, 0x01, 0xa9, 0x81, 0x9e, 0x32, 0x00, 0xa9, 0x29, 0xc8, 0x27, 0x9a, 0xf9, - 0x69, 0x93, 0x8b, 0x89, 0x21, 0x81, 0x12, 0xba, 0xba, 0x73, 0xc1, 0x29, 0xb1, 0x88, 0x18, 0x26, - 0xa9, 0xcc, 0x61, 0x82, 0xa9, 0x88, 0x0a, 0x25, 0x98, 0x09, 0xa9, 0xcb, 0x70, 0x83, 0xab, 0x29, - 0x04, 0x9a, 0x42, 0xb1, 0x0d, 0x22, 0xb9, 0x99, 0x48, 0x86, 0x2a, 0xb0, 0xaa, 0x78, 0xa3, 0x19, - 0x8a, 0x07, 0xab, 0x10, 0x03, 0xad, 0x32, 0xc1, 0x0a, 0x1a, 0x36, 0xa0, 0xab, 0x0c, 0x07, 0x19, - 0xd1, 0x1b, 0x24, 0x90, 0x99, 0x90, 0x9e, 0x43, 0x83, 0x19, 0xf9, 0x4a, 0x90, 0x11, 0x89, 0xa0, - 0x29, 0x05, 0xcc, 0x50, 0x81, 0x9b, 0x23, 0xba, 0x80, 0x71, 0xc1, 0x08, 0xa9, 0x32, 0xa2, 0x0c, - 0xb3, 0x6a, 0x92, 0x8d, 0x12, 0x08, 0xb8, 0x28, 0x91, 0x8c, 0x17, 0x8c, 0x92, 0x4a, 0x91, 0x31, - 0xbc, 0x21, 0x19, 0x84, 0x8f, 0x02, 0x9a, 0x48, 0x85, 0xbc, 0x38, 0x82, 0x20, 0xaa, 0x81, 0xac, - 0x27, 0xba, 0x53, 0xca, 0x00, 0x39, 0x93, 0xcd, 0x68, 0x83, 0xab, 0x32, 0xda, 0x30, 0x83, 0xbd, - 0x52, 0xb8, 0x18, 0x02, 0x89, 0x98, 0xa8, 0x79, 0x94, 0xad, 0x50, 0x92, 0x89, 0xa0, 0x10, 0xa9, - 0x81, 0x5b, 0x05, 0x8a, 0x89, 0x11, 0x92, 0x8f, 0x14, 0x98, 0xbb, 0x33, 0x80, 0x17, 0xad, 0x21, - 0x80, 0xba, 0x51, 0x90, 0x20, 0xb9, 0x18, 0xa1, 0x1d, 0x85, 0x88, 0x8b, 0x10, 0x32, 0xad, 0x37, - 0xbb, 0x89, 0x44, 0xb1, 0x9d, 0x42, 0x90, 0x9a, 0x80, 0x38, 0x26, 0xd9, 0x9c, 0x32, 0x89, 0x24, - 0x98, 0xb9, 0x89, 0x19, 0x21, 0x27, 0xaf, 0x22, 0x81, 0xdb, 0x28, 0x82, 0x63, 0xd9, 0x09, 0x10, - 0x00, 0x01, 0x09, 0x80, 0xfa, 0x5a, 0x83, 0x99, 0x9b, 0x44, 0xb0, 0xa9, 0x38, 0x84, 0xa9, 0x41, - 0xb1, 0x19, 0xec, 0x38, 0x04, 0x08, 0xb1, 0x8a, 0xaa, 0x71, 0x95, 0x1b, 0x81, 0xbb, 0x30, 0x72, - 0xc0, 0x89, 0x28, 0x04, 0xa9, 0x88, 0xaa, 0x72, 0x95, 0x0a, 0xca, 0x51, 0x91, 0x89, 0x00, 0xb1, - 0x1b, 0x25, 0xc2, 0x8f, 0x10, 0x31, 0x81, 0xbc, 0x9a, 0x73, 0x91, 0x8a, 0x94, 0x8c, 0x33, 0x99, - 0xa1, 0x9c, 0x51, 0x93, 0x08, 0xdb, 0x10, 0x42, 0xb1, 0x89, 0x8a, 0xc8, 0x71, 0x98, 0x20, 0xb1, - 0x0b, 0x83, 0xeb, 0x4a, 0x06, 0x8b, 0x32, 0xfa, 0x19, 0x22, 0xa9, 0x48, 0xa1, 0x0b, 0x18, 0x14, - 0xa2, 0x8f, 0x05, 0xcb, 0x51, 0xa0, 0x09, 0x80, 0x80, 0x53, 0xd0, 0x9b, 0x33, 0xa0, 0x28, 0xb3, - 0x8f, 0x81, 0x2a, 0x06, 0x99, 0x88, 0xa0, 0x30, 0xa4, 0xaf, 0x23, 0x13, 0xaa, 0xa1, 0x9d, 0x53, - 0xb8, 0x10, 0x90, 0x9a, 0x36, 0x9a, 0x83, 0xea, 0x3b, 0x06, 0x9a, 0x01, 0xd9, 0x50, 0x81, 0xa8, - 0x1a, 0x90, 0x10, 0x81, 0x71, 0xe3, 0x0b, 0x11, 0x11, 0xa9, 0x9a, 0x45, 0xd8, 0x08, 0x08, 0x04, - 0x8a, 0x92, 0x9b, 0x36, 0xea, 0x09, 0x23, 0xa9, 0x11, 0x09, 0xa8, 0x1a, 0xa0, 0x65, 0x90, 0xa0, - 0x9e, 0x33, 0x81, 0xab, 0x51, 0xc2, 0x9c, 0x28, 0x24, 0x12, 0xfd, 0x28, 0x92, 0x19, 0x99, 0x31, - 0xaa, 0x13, 0x8b, 0x98, 0x20, 0x44, 0xfb, 0x59, 0x81, 0xab, 0x42, 0x80, 0xb9, 0x0b, 0x24, 0x44, - 0xec, 0x28, 0x02, 0xa0, 0xaa, 0x32, 0x01, 0xbf, 0x45, 0xa9, 0x09, 0x80, 0x88, 0x41, 0xa1, 0xaa, - 0x10, 0xc1, 0x48, 0x04, 0xaa, 0x19, 0xb9, 0x4a, 0x37, 0xaa, 0xb9, 0x40, 0x14, 0xac, 0x20, 0x32, - 0xf9, 0x0b, 0x21, 0x02, 0x98, 0x8b, 0x06, 0xcb, 0x38, 0x22, 0xa2, 0xcc, 0x1a, 0x44, 0xc0, 0x89, - 0x1a, 0x35, 0xa9, 0x98, 0xad, 0x43, 0x12, 0xb8, 0x4a, 0x93, 0xab, 0x8d, 0x17, 0xaa, 0x18, 0x11, - 0x33, 0xbf, 0x28, 0x12, 0x88, 0xb9, 0xac, 0x72, 0x93, 0x0b, 0x94, 0xad, 0x51, 0xa1, 0x09, 0x88, - 0x80, 0x21, 0x41, 0xd1, 0x8c, 0x80, 0x29, 0x15, 0x89, 0x9b, 0x25, 0xad, 0x20, 0x62, 0xc0, 0x9b, - 0x33, 0x98, 0x89, 0x14, 0x00, 0xcd, 0x00, 0x41, 0xa1, 0xac, 0x50, 0x82, 0xab, 0x10, 0x12, 0xa8, - 0x39, 0xc3, 0x0c, 0x13, 0x0c, 0x07, 0x9c, 0x33, 0x99, 0xa8, 0x90, 0x0f, 0x12, 0x24, 0xaa, 0xb9, - 0x8e, 0x23, 0x23, 0xda, 0x18, 0xa0, 0x29, 0x05, 0x8b, 0x94, 0x8c, 0x33, 0xfb, 0x5b, 0x13, 0x8a, - 0x88, 0x0a, 0x00, 0xd9, 0x71, 0xb3, 0x8c, 0x11, 0x81, 0x99, 0x9b, 0x72, 0x92, 0x1b, 0x91, 0x89, - 0x9e, 0x44, 0x81, 0xac, 0x20, 0x01, 0xc9, 0x58, 0xa2, 0x0c, 0x81, 0x22, 0xaa, 0x81, 0x3b, 0x17, - 0xbf, 0x32, 0x82, 0xb9, 0x0a, 0x22, 0x32, 0xf0, 0x3d, 0xa2, 0x8c, 0x42, 0x92, 0xab, 0xa8, 0x71, - 0x91, 0xaa, 0x1a, 0x43, 0x01, 0xa8, 0x8d, 0x01, 0x51, 0xb8, 0x18, 0x0a, 0x85, 0x2a, 0x86, 0xac, - 0x9b, 0x64, 0x92, 0xbb, 0x10, 0x20, 0x05, 0xac, 0x10, 0x80, 0x99, 0x28, 0x36, 0xea, 0x19, 0x13, - 0xda, 0x28, 0x92, 0x30, 0xd8, 0x8b, 0x53, 0x80, 0x88, 0xb1, 0x8f, 0x24, 0x98, 0x8b, 0x33, 0x8b, - 0x11, 0xc1, 0x0c, 0x14, 0xac, 0x33, 0xa0, 0xbd, 0x70, 0x82, 0x99, 0xbc, 0x62, 0x92, 0x89, 0xa8, - 0x38, 0x14, 0xac, 0x11, 0x10, 0xc9, 0x40, 0x81, 0xc8, 0x0d, 0x34, 0x90, 0xc8, 0x9a, 0x50, 0xa2, - 0x21, 0xbc, 0x11, 0x08, 0x90, 0x18, 0x90, 0x9a, 0x66, 0x90, 0xbc, 0x58, 0x12, 0xa9, 0x00, 0xaf, - 0x53, 0x91, 0x99, 0x88, 0xa9, 0x52, 0xa8, 0x22, 0x89, 0xc9, 0x50, 0xc1, 0x3a, 0x02, 0x00, 0xeb, - 0x30, 0xa9, 0x44, 0xb9, 0x1a, 0xa1, 0x30, 0x26, 0xeb, 0xab, 0x46, 0x91, 0xba, 0x29, 0x22, 0x90, - 0x10, 0xe0, 0x0d, 0x22, 0x11, 0xb0, 0x8e, 0x00, 0x42, 0xb1, 0x9d, 0x21, 0x81, 0x31, 0xe9, 0x99, - 0x29, 0x15, 0x01, 0xca, 0x0c, 0x03, 0x11, 0x89, 0x94, 0x0e, 0x83, 0x89, 0xa9, 0x32, 0xca, 0x53, - 0x88, 0xc8, 0x39, 0xb2, 0x2d, 0x06, 0x8c, 0x04, 0x9d, 0x11, 0x12, 0x8a, 0xc0, 0x1c, 0x14, 0x8a, - 0x81, 0x00, 0x9a, 0x24, 0x10, 0xd9, 0xab, 0x58, 0x16, 0xa9, 0x8a, 0x30, 0xb2, 0x61, 0xf9, 0x08, - 0x19, 0x33, 0x98, 0xda, 0x2b, 0x16, 0x08, 0xa9, 0x9a, 0x11, 0x44, 0xb2, 0x9e, 0x08, 0x12, 0x52, - 0xf9, 0x1a, 0x12, 0x00, 0x80, 0xbb, 0x00, 0x30, 0x27, 0xab, 0xcb, 0x31, 0x12, 0x81, 0xda, 0x1b, - 0x15, 0x21, 0xfb, 0x09, 0x31, 0x92, 0x9b, 0x12, 0x09, 0xd9, 0x61, 0x98, 0x83, 0x8f, 0x81, 0x38, - 0xb1, 0x5a, 0xb2, 0x09, 0x8a, 0x16, 0xba, 0x2c, 0x05, 0x1a, 0x92, 0x9b, 0x09, 0x35, 0x9a, 0x02, - 0xdc, 0x2a, 0x37, 0xb9, 0x1a, 0xa0, 0x21, 0x12, 0xb9, 0xaa, 0x9b, 0x14, 0x65, 0xe9, 0x18, 0x80, - 0x12, 0x9b, 0x10, 0x01, 0x99, 0x72, 0xf0, 0x28, 0x88, 0x80, 0x51, 0xe8, 0x19, 0x01, 0x18, 0x82, - 0xca, 0x39, 0x84, 0xab, 0x20, 0xb1, 0x61, 0xa8, 0x18, 0xbb, 0x23, 0x90, 0x71, 0x83, 0xbe, 0x20, - 0x82, 0x3a, 0x96, 0x9c, 0x11, 0x80, 0xaa, 0x33, 0xb8, 0x0b, 0x02, 0x98, 0x71, 0xf4, 0x4b, 0x83, - 0x8a, 0x80, 0xb9, 0x71, 0xa1, 0x09, 0x89, 0x03, 0x9a, 0x10, 0x96, 0x9f, 0x33, 0x81, 0x99, 0xcc, - 0x50, 0x02, 0xa8, 0x8b, 0x00, 0x12, 0x9b, 0x57, 0xcb, 0x11, 0x09, 0x02, 0x81, 0xae, 0x43, 0x99, - 0x18, 0x80, 0xa0, 0x3a, 0x92, 0x98, 0x59, 0xb1, 0x0c, 0x01, 0x12, 0x2b, 0x07, 0x8f, 0x12, 0xb9, - 0x9d, 0x44, 0x92, 0x9b, 0xa3, 0x9d, 0x22, 0x11, 0xa1, 0x18, 0xae, 0x35, 0xb9, 0x00, 0x13, 0x9d, - 0x01, 0x00, 0xb9, 0x32, 0x9b, 0x25, 0xbc, 0x51, 0xc0, 0x3b, 0xa1, 0x73, 0xc0, 0x1c, 0x04, 0xaa, - 0x39, 0x95, 0x9b, 0x12, 0x18, 0x91, 0x9a, 0x2a, 0x57, 0xc8, 0x0b, 0x13, 0x80, 0x29, 0xc3, 0x0f, - 0x11, 0x10, 0xa0, 0xab, 0x12, 0x39, 0x37, 0xfb, 0x28, 0x90, 0x01, 0x39, 0xe1, 0x1c, 0x04, 0x0a, - 0x01, 0x9a, 0x00, 0x00, 0x11, 0x91, 0x9a, 0x4a, 0x15, 0xea, 0x10, 0x21, 0xcb, 0x42, 0xd9, 0x29, - 0x83, 0x2b, 0xa2, 0x9d, 0x33, 0xaa, 0x14, 0x61, 0xe9, 0x89, 0x3a, 0x85, 0x89, 0x01, 0x89, 0xba, - 0x53, 0x09, 0x93, 0xcb, 0x39, 0x06, 0x09, 0xb0, 0x2a, 0xd9, 0x72, 0xb0, 0x10, 0xbb, 0x41, 0x92, - 0x1a, 0xd1, 0x0c, 0x36, 0xc8, 0x1a, 0xa1, 0x69, 0x83, 0x9d, 0x80, 0x10, 0x02, 0x01, 0xbb, 0x99, - 0x43, 0x28, 0xd2, 0x0e, 0x21, 0x80, 0x3a, 0xf3, 0x1c, 0x14, 0x99, 0x88, 0x99, 0x39, 0x03, 0x20, - 0xcc, 0x29, 0x93, 0x9b, 0xb2, 0x32, 0x1b, 0x17, 0xac, 0x10, 0x10, 0x01, 0x98, 0x9b, 0x00, 0x29, - 0x12, 0x99, 0x29, 0x11, 0xb1, 0xab, 0x31, 0x91, 0x51, 0xc1, 0x3a, 0xf0, 0x38, 0xa2, 0x0a, 0x10, - 0x02, 0x99, 0xab, 0x31, 0xa9, 0x33, 0x91, 0x9c, 0x99, 0x53, 0x81, 0x09, 0xdb, 0x31, 0x99, 0x11, - 0x33, 0xa9, 0xb9, 0x31, 0xb1, 0x2c, 0x03, 0x9b, 0x01, 0x9a, 0x29, 0x91, 0x31, 0xa1, 0x9b, 0x30, - 0x21, 0xa0, 0x9b, 0x31, 0xa1, 0x19, 0x99, 0x92, 0x99, 0x31, 0xb1, 0x1b, 0x21, 0x11, 0xaa, 0x29, - 0x11, 0x00, 0x11, 0xa9, 0x1b, 0x12, 0x00, 0x92, 0xaa, 0x29, 0x13, 0xa9, 0x10, 0x99, 0x11, 0x01, - 0x90, 0xa9, 0x21, 0x11, 0x90, 0xa9, 0x19, 0x21, 0x90, 0x99, 0x11, 0x90, 0x19, 0x01, 0x09, 0x19, - 0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x70, 0xff, 0x71, 0x77, 0xb1, 0x22, 0xbc, 0xe9, - 0x39, 0x13, 0x18, 0xfc, 0x1a, 0x98, 0x42, 0x14, 0x99, 0xc9, 0x39, 0x21, 0x92, 0x37, 0xcb, 0xba, - 0x20, 0x28, 0xd4, 0x49, 0xa1, 0x09, 0x99, 0x42, 0x01, 0xc9, 0x59, 0x83, 0x9a, 0x19, 0xbb, 0x12, - 0x20, 0x9c, 0x01, 0x27, 0x8f, 0xb2, 0x31, 0xba, 0xb2, 0x79, 0x84, 0x2a, 0xb2, 0x9e, 0x20, 0x00, - 0x02, 0xcb, 0x21, 0xb9, 0x29, 0x37, 0x8b, 0xb0, 0x98, 0x70, 0x90, 0x93, 0x0e, 0x10, 0x83, 0x48, - 0xc2, 0x9c, 0xbb, 0x20, 0x25, 0xa0, 0x1b, 0xf8, 0x60, 0x82, 0x0a, 0x90, 0x31, 0x8a, 0xe3, 0x3a, - 0xeb, 0x20, 0x23, 0x98, 0x90, 0x09, 0x88, 0xab, 0xc2, 0x0b, 0x88, 0x77, 0x91, 0xa0, 0x51, 0xd9, - 0x1a, 0x82, 0x29, 0xb1, 0x30, 0x22, 0xf8, 0x29, 0xa9, 0x90, 0x09, 0x89, 0x04, 0xaf, 0x73, 0x92, - 0x28, 0x88, 0xb0, 0x0d, 0x00, 0x02, 0x0c, 0x34, 0xa8, 0xeb, 0x11, 0x0d, 0xc2, 0x19, 0x39, 0x87, - 0x00, 0x88, 0x90, 0x32, 0x90, 0xec, 0x19, 0x01, 0x9a, 0x80, 0x08, 0x73, 0x81, 0x18, 0x82, 0x29, - 0xf2, 0x8f, 0xa1, 0x39, 0x12, 0x90, 0x41, 0x90, 0xfa, 0x00, 0x38, 0x95, 0x09, 0xc0, 0x0c, 0x92, - 0x18, 0x01, 0x01, 0x3a, 0xa5, 0x4a, 0xb8, 0x28, 0x32, 0x28, 0xfc, 0x9b, 0x1b, 0x45, 0x91, 0x08, - 0xba, 0x38, 0xa8, 0x37, 0xaa, 0x21, 0x81, 0x0d, 0xf8, 0x4c, 0x08, 0x04, 0x89, 0xa8, 0x8a, 0x11, - 0x42, 0x51, 0xb0, 0xab, 0x12, 0x0e, 0xb8, 0x60, 0x88, 0x00, 0x2b, 0xa3, 0x0d, 0x24, 0x9b, 0x10, - 0x03, 0x9c, 0x21, 0xf9, 0x20, 0xac, 0x27, 0x1b, 0xa2, 0xa9, 0x98, 0x4b, 0x05, 0x32, 0xbd, 0x03, - 0xca, 0x9a, 0x61, 0x81, 0x00, 0x9b, 0x21, 0xb0, 0x63, 0xaa, 0xa1, 0x73, 0xd8, 0x11, 0x8b, 0x32, - 0xf8, 0x2a, 0x91, 0xab, 0x26, 0x89, 0x62, 0xc8, 0x20, 0xba, 0x31, 0x81, 0x88, 0x10, 0xde, 0x41, - 0xa9, 0x12, 0x9a, 0x10, 0x01, 0x9a, 0x93, 0x4c, 0x34, 0xfc, 0x32, 0xab, 0x91, 0x42, 0x89, 0xa0, - 0x31, 0xba, 0xac, 0x81, 0x29, 0x11, 0x88, 0x27, 0x0c, 0xab, 0x17, 0x22, 0xaa, 0x38, 0xb6, 0x1f, - 0xa2, 0x89, 0x98, 0x19, 0x25, 0xc9, 0x59, 0xb8, 0x18, 0x45, 0x89, 0xb1, 0x2c, 0x01, 0xd9, 0x3b, - 0x03, 0x29, 0xf0, 0x2a, 0x12, 0x90, 0x31, 0xb1, 0xad, 0x11, 0x24, 0xc9, 0x4a, 0xf3, 0x2b, 0x80, - 0x84, 0x3d, 0xb2, 0x18, 0xb8, 0x18, 0x20, 0x21, 0x88, 0x29, 0xa4, 0xfa, 0x2f, 0xa3, 0x20, 0x18, - 0xf2, 0x1c, 0x82, 0x19, 0x81, 0x09, 0x31, 0xf0, 0x3a, 0x03, 0xcb, 0x62, 0xa8, 0x98, 0x00, 0x08, - 0xa0, 0x0e, 0x06, 0x9a, 0x31, 0xd3, 0x2a, 0x82, 0x9a, 0x14, 0x9f, 0x12, 0x10, 0x0c, 0x83, 0xb8, - 0x2a, 0x88, 0x86, 0x1a, 0x8c, 0x85, 0x1c, 0x03, 0x88, 0xa9, 0x30, 0xa9, 0x42, 0xf8, 0x50, 0xba, - 0x11, 0x41, 0xca, 0x01, 0x80, 0x1d, 0xb3, 0x71, 0xb8, 0x01, 0x3a, 0xc1, 0x19, 0xd3, 0x59, 0xa8, - 0x12, 0x00, 0xbc, 0x29, 0x96, 0x3c, 0x93, 0x8a, 0x81, 0x98, 0x60, 0xd0, 0x10, 0x18, 0xc8, 0x33, - 0xaf, 0x11, 0x88, 0x20, 0x80, 0x8c, 0x17, 0x09, 0x90, 0x89, 0x09, 0x83, 0x8d, 0x12, 0x0a, 0x84, - 0x88, 0x8b, 0xba, 0x14, 0x54, 0xba, 0x16, 0x8e, 0xa8, 0x23, 0x28, 0x81, 0xa9, 0x13, 0xab, 0x9f, - 0x17, 0x99, 0x0a, 0x92, 0x80, 0x09, 0x80, 0x81, 0xad, 0x63, 0x00, 0x33, 0xd9, 0x31, 0xbb, 0x08, - 0xab, 0xbd, 0x20, 0x15, 0x19, 0x8d, 0x06, 0x10, 0x8a, 0x91, 0x72, 0xc8, 0x20, 0xd9, 0x1a, 0x03, - 0x2b, 0xa5, 0x89, 0x30, 0xfa, 0x20, 0x01, 0x2c, 0x87, 0x8a, 0x12, 0xad, 0x83, 0x39, 0xb9, 0x95, - 0x1a, 0xa2, 0x10, 0xad, 0x14, 0x28, 0x19, 0xc3, 0x59, 0xb9, 0x10, 0x02, 0xad, 0x26, 0xbc, 0x23, - 0x9c, 0x10, 0xc4, 0x4b, 0x93, 0x1a, 0x58, 0xf2, 0x38, 0xc8, 0x10, 0x80, 0x09, 0x10, 0xc1, 0x59, - 0xb8, 0x10, 0x93, 0x2a, 0x9a, 0xd3, 0x70, 0x98, 0x80, 0x22, 0xad, 0x00, 0x81, 0x00, 0x10, 0xad, - 0x85, 0x2c, 0xa3, 0x80, 0x1b, 0x14, 0x81, 0xac, 0x29, 0x86, 0x0c, 0x92, 0x30, 0xe9, 0x10, 0x9b, - 0x05, 0x59, 0xc8, 0x93, 0x1d, 0x21, 0xc3, 0x09, 0x31, 0xcc, 0x12, 0xaa, 0x48, 0xd1, 0x31, 0x90, - 0x99, 0x00, 0xad, 0x26, 0x08, 0x0b, 0x86, 0x1c, 0xa2, 0x00, 0x8b, 0x90, 0x68, 0xa2, 0x1b, 0x99, - 0x85, 0x1e, 0x94, 0x98, 0x20, 0x92, 0x18, 0xfb, 0x30, 0xb3, 0x4c, 0xd1, 0x18, 0x18, 0xb0, 0x40, - 0xd2, 0x4b, 0xb1, 0x01, 0x3a, 0x94, 0x39, 0xfb, 0x41, 0xc0, 0x29, 0xa0, 0x20, 0x8a, 0x91, 0x72, - 0xb8, 0x9a, 0x15, 0x0a, 0xa2, 0x22, 0xc9, 0x5b, 0xb8, 0x02, 0x0f, 0x96, 0x39, 0xd0, 0x10, 0x8a, - 0x03, 0x0a, 0x84, 0x1d, 0xa1, 0x22, 0xab, 0x02, 0x9c, 0x14, 0x29, 0xf1, 0x08, 0x10, 0x88, 0x22, - 0xcb, 0x21, 0x3a, 0xf3, 0x5a, 0xa1, 0x89, 0x99, 0x05, 0x0d, 0x86, 0x1a, 0x90, 0x82, 0x9b, 0x05, - 0x0d, 0xb3, 0x59, 0x90, 0x80, 0x29, 0xf0, 0x38, 0x81, 0x89, 0x93, 0x0d, 0x38, 0xc1, 0x30, 0x98, - 0x89, 0x0a, 0xa4, 0x4a, 0xd0, 0x73, 0xa9, 0xa2, 0x59, 0xc0, 0x22, 0x9c, 0x92, 0x20, 0xac, 0x05, - 0x9a, 0x30, 0xa0, 0xa2, 0x7a, 0xb0, 0x31, 0xbc, 0x26, 0x9a, 0x91, 0x19, 0xaa, 0x16, 0x8d, 0x04, - 0x8b, 0x28, 0x82, 0x0b, 0x23, 0xab, 0x05, 0x1e, 0x92, 0x08, 0x09, 0xb1, 0x08, 0x9e, 0x44, 0x08, - 0xf1, 0x29, 0x98, 0x12, 0x4b, 0x96, 0x8c, 0x01, 0x01, 0x8b, 0x92, 0x0c, 0x86, 0x8b, 0x04, 0x09, - 0x98, 0x15, 0x8d, 0xa3, 0x3b, 0xa3, 0x1c, 0x81, 0x94, 0x2b, 0xb2, 0x38, 0xa8, 0xbd, 0x43, 0x22, - 0xaf, 0x24, 0x0a, 0xa8, 0x92, 0x3b, 0xfa, 0x61, 0x10, 0xc9, 0x40, 0xb9, 0x30, 0xb9, 0x03, 0x38, - 0xed, 0x42, 0xa9, 0x10, 0x82, 0x0c, 0x83, 0x89, 0x40, 0xea, 0x21, 0x88, 0x99, 0x12, 0x8a, 0x50, - 0xc1, 0x19, 0x10, 0xbe, 0x44, 0x9a, 0x02, 0x10, 0x9a, 0x10, 0xf8, 0x50, 0xa8, 0x12, 0x8b, 0xb1, - 0x49, 0xa9, 0x17, 0xbb, 0x52, 0x8b, 0xa1, 0x53, 0xac, 0x14, 0xa9, 0x28, 0xa1, 0x09, 0x00, 0xb8, - 0x55, 0xac, 0x93, 0x20, 0x0c, 0x86, 0x8b, 0x12, 0xab, 0x21, 0x96, 0x0f, 0x13, 0x9a, 0x28, 0xa1, - 0x19, 0x18, 0xc9, 0x22, 0x2f, 0xa3, 0x18, 0x8d, 0xa3, 0x79, 0xa0, 0x81, 0x89, 0x00, 0x0a, 0x96, - 0x5a, 0xc9, 0x21, 0x09, 0x93, 0xaa, 0x01, 0x1b, 0xb3, 0x74, 0xaa, 0x93, 0x3c, 0xd2, 0x20, 0x80, - 0x8e, 0x21, 0xc1, 0x48, 0xa0, 0x90, 0x58, 0xda, 0x12, 0x10, 0x80, 0x08, 0xf0, 0x3a, 0xb2, 0x31, - 0xab, 0x87, 0x1c, 0xb0, 0x23, 0xab, 0x24, 0x02, 0xca, 0x59, 0xe0, 0x18, 0x08, 0x91, 0x21, 0x9c, - 0x23, 0xca, 0x38, 0x14, 0x99, 0x90, 0xbb, 0x27, 0xaf, 0x84, 0x19, 0x00, 0x00, 0x89, 0x15, 0xac, - 0x02, 0x09, 0x90, 0x35, 0xcd, 0x11, 0x08, 0x89, 0x28, 0xb2, 0x34, 0xbf, 0x86, 0x0a, 0x40, 0xd1, - 0x39, 0x90, 0xa9, 0x24, 0xba, 0x30, 0xa8, 0x50, 0xa8, 0x81, 0xaa, 0x81, 0x78, 0xc2, 0x31, 0xea, - 0x20, 0x09, 0xe2, 0x58, 0x98, 0x08, 0x00, 0x08, 0x1a, 0x82, 0x8f, 0x15, 0x8b, 0x82, 0x89, 0x18, - 0xc0, 0x49, 0xc4, 0x4b, 0xa4, 0x8a, 0x03, 0xaa, 0x42, 0xb1, 0x2c, 0xa5, 0x0b, 0x81, 0x81, 0x98, - 0x20, 0x3a, 0xf9, 0x21, 0x8a, 0x12, 0x10, 0x22, 0xab, 0x87, 0xaf, 0x28, 0x95, 0x0d, 0x86, 0x8b, - 0x12, 0x80, 0x1b, 0xb5, 0x29, 0x00, 0xb8, 0x52, 0xbc, 0x15, 0xab, 0x41, 0xb8, 0x3a, 0x85, 0x9c, - 0x14, 0xa9, 0x31, 0xc0, 0x08, 0x89, 0x14, 0xc0, 0x4a, 0xb1, 0x1a, 0x12, 0x9a, 0x94, 0x1d, 0x80, - 0x23, 0xa9, 0xaa, 0x47, 0xf8, 0x58, 0xa1, 0x9a, 0x21, 0xc8, 0x31, 0x8b, 0x93, 0x20, 0x9e, 0x82, - 0x40, 0x8a, 0x81, 0x11, 0xfc, 0x41, 0xa8, 0x28, 0x90, 0x92, 0x2d, 0x29, 0xb3, 0x1a, 0x87, 0x8d, - 0x84, 0x0c, 0x82, 0x91, 0x0b, 0x86, 0x1b, 0x92, 0x21, 0xb8, 0x2e, 0x95, 0x0a, 0x00, 0xa0, 0x1c, - 0xa4, 0x3a, 0x82, 0xb0, 0x5a, 0x94, 0x0b, 0x10, 0xc3, 0x5b, 0xa0, 0xb2, 0x1e, 0x10, 0x06, 0x8d, - 0x02, 0x8a, 0x91, 0x31, 0x9c, 0x04, 0x0a, 0x11, 0xdb, 0x00, 0x61, 0xd0, 0x39, 0xa2, 0x90, 0x3d, - 0xa5, 0x3b, 0x98, 0x11, 0xa8, 0x39, 0x10, 0xc5, 0x2d, 0xb1, 0x31, 0xb9, 0x59, 0xc4, 0x1a, 0x21, - 0xc1, 0x1a, 0x88, 0x02, 0x90, 0x7c, 0xa4, 0x9a, 0x28, 0x8b, 0x86, 0x99, 0x41, 0xb8, 0x0a, 0x17, - 0x8b, 0x80, 0x11, 0xba, 0x4a, 0xb3, 0x3a, 0x18, 0xc3, 0x41, 0xa8, 0x49, 0xf2, 0x2c, 0x84, 0x9a, - 0x91, 0x2c, 0x41, 0xe2, 0x58, 0xb8, 0x19, 0x01, 0x90, 0x91, 0x4c, 0x91, 0xb1, 0x5a, 0xa0, 0x20, - 0xc3, 0x5b, 0xb8, 0x18, 0x21, 0xac, 0x02, 0x90, 0x54, 0xbc, 0x15, 0xba, 0x39, 0xb1, 0x16, 0x1a, - 0xbb, 0x17, 0xab, 0x34, 0xac, 0x10, 0x00, 0x38, 0xf8, 0x19, 0x32, 0xca, 0x32, 0xe9, 0x20, 0xa2, - 0x1b, 0xa2, 0x19, 0x53, 0xc9, 0x81, 0x1c, 0x10, 0x90, 0x16, 0x9d, 0x81, 0x88, 0x08, 0x11, 0x08, - 0x85, 0x4a, 0xc3, 0x9e, 0x22, 0xaa, 0x34, 0xa8, 0x0a, 0xb9, 0x28, 0x95, 0x2c, 0x24, 0xd8, 0x48, - 0xcb, 0x15, 0x1b, 0x91, 0x80, 0xb9, 0x78, 0xb1, 0x01, 0x18, 0xc1, 0x2c, 0xc2, 0x11, 0x1c, 0xa2, - 0x71, 0xd0, 0x40, 0xa9, 0x80, 0x11, 0x0c, 0x12, 0xd9, 0x41, 0xba, 0x11, 0x01, 0x1b, 0xa6, 0x29, - 0x81, 0x9f, 0x13, 0x00, 0x09, 0xa3, 0x0c, 0xf1, 0x48, 0x08, 0xa8, 0x21, 0xab, 0x22, 0xc8, 0x33, - 0x9b, 0x21, 0x3a, 0x97, 0x5b, 0xc0, 0x08, 0x0d, 0x05, 0x1e, 0xa2, 0x20, 0x0b, 0xc3, 0x3a, 0xa1, - 0x20, 0x02, 0x90, 0x5d, 0xc1, 0x00, 0x8a, 0x28, 0xf3, 0x2a, 0x11, 0x90, 0x88, 0x8d, 0x04, 0x08, - 0x12, 0x0a, 0x80, 0xd1, 0x50, 0xea, 0x38, 0xa2, 0x10, 0x8c, 0xa2, 0x50, 0xbb, 0x36, 0xbc, 0x14, - 0x8c, 0x12, 0x01, 0xdb, 0x42, 0xad, 0x05, 0x09, 0x80, 0x90, 0x3a, 0xc3, 0x3b, 0xb3, 0x10, 0x10, - 0xda, 0x11, 0xba, 0x73, 0xb8, 0x01, 0x19, 0x89, 0x07, 0x0b, 0x21, 0xda, 0x86, 0x0c, 0x00, 0x02, - 0x8a, 0x01, 0xb9, 0x80, 0x7a, 0xc2, 0x2a, 0x02, 0x10, 0xb8, 0x90, 0x60, 0xfb, 0x53, 0xba, 0x11, - 0x09, 0x09, 0xa6, 0x3b, 0xa3, 0x9c, 0x43, 0x90, 0x39, 0xf1, 0x4b, 0x80, 0x18, 0xa3, 0x0c, 0x29, - 0xf0, 0x28, 0x91, 0x48, 0xc3, 0x29, 0x0b, 0xa4, 0x18, 0x89, 0x83, 0x0f, 0x23, 0xe9, 0x20, 0xa9, - 0x14, 0x9c, 0x91, 0x60, 0xa9, 0x32, 0xbb, 0x02, 0x08, 0x61, 0xe1, 0x1a, 0x01, 0x98, 0x42, 0xb9, - 0x80, 0x0e, 0x81, 0x13, 0x8d, 0x02, 0x00, 0x10, 0x88, 0x90, 0xcb, 0x33, 0x5e, 0xf2, 0x29, 0x3a, - 0xd2, 0x41, 0xaa, 0x00, 0x80, 0x29, 0x91, 0xd8, 0x79, 0xa0, 0x3a, 0xa1, 0x31, 0xa0, 0x9c, 0x63, - 0xb8, 0x5a, 0xf1, 0x38, 0xa8, 0x10, 0x80, 0x08, 0x82, 0x9a, 0x6a, 0xd9, 0x24, 0x99, 0x08, 0x92, - 0x1a, 0x0b, 0x86, 0x88, 0x0b, 0x84, 0xc8, 0x70, 0xb9, 0x85, 0x0a, 0x10, 0x98, 0x80, 0x63, 0xbd, - 0x04, 0x1c, 0x83, 0x1a, 0x81, 0x09, 0x99, 0x12, 0x1e, 0xc3, 0x39, 0x80, 0x08, 0xa2, 0x8d, 0x04, - 0x99, 0x50, 0xe2, 0x3b, 0xa6, 0x2a, 0x91, 0xa9, 0x22, 0x2b, 0x94, 0xb0, 0x1e, 0x94, 0x1b, 0x86, - 0x8c, 0x83, 0x18, 0x08, 0x91, 0x1a, 0xa1, 0x3a, 0xf3, 0x49, 0xb8, 0x00, 0x11, 0xd3, 0x09, 0x3b, - 0x84, 0xb9, 0x71, 0xe3, 0x29, 0xa1, 0x38, 0xc9, 0x30, 0x81, 0xfa, 0x69, 0xb0, 0x19, 0x01, 0x50, - 0x99, 0x92, 0x2c, 0xa1, 0x21, 0x9c, 0x21, 0xf1, 0x38, 0x98, 0xb1, 0x7b, 0xa0, 0x81, 0x39, 0xa1, - 0x8a, 0x68, 0xc1, 0x11, 0x2c, 0x81, 0x95, 0x0d, 0x81, 0x89, 0x21, 0xab, 0x25, 0xad, 0x41, 0x98, - 0x99, 0x23, 0x0a, 0x06, 0x0e, 0x81, 0x01, 0x89, 0x02, 0xba, 0x98, 0x2e, 0xa7, 0x2a, 0x80, 0x00, - 0x80, 0x10, 0x9b, 0x96, 0x4b, 0x93, 0x89, 0xd3, 0x2d, 0x85, 0x0b, 0x00, 0x91, 0x1c, 0xc2, 0x21, - 0xbb, 0x40, 0x96, 0x0a, 0x68, 0xc0, 0x31, 0xdb, 0x22, 0xa0, 0x2b, 0xc2, 0x01, 0x3e, 0xc4, 0x38, - 0xcb, 0x13, 0x19, 0x81, 0x18, 0xa3, 0x3c, 0xe1, 0x20, 0xab, 0x33, 0x0e, 0xb5, 0x3b, 0xb1, 0x18, - 0x38, 0x95, 0x09, 0x02, 0x9f, 0x85, 0x2b, 0xa3, 0x0a, 0x81, 0x10, 0x9f, 0x05, 0x0e, 0x84, 0x89, - 0x20, 0xa8, 0x09, 0x41, 0xd9, 0x22, 0x8b, 0xa4, 0x3a, 0xb8, 0x25, 0xbb, 0x30, 0x98, 0xf0, 0x52, - 0xba, 0x13, 0x9c, 0x33, 0xd1, 0x2a, 0x93, 0x9b, 0x32, 0xaa, 0x32, 0xe1, 0x58, 0xe8, 0x28, 0x80, - 0x92, 0x19, 0xca, 0x33, 0xc9, 0x69, 0xb3, 0x09, 0x31, 0xda, 0x3b, 0x95, 0x2b, 0xe3, 0x30, 0x8c, - 0x95, 0x3b, 0xb1, 0x2a, 0x21, 0xb0, 0x10, 0x02, 0x0f, 0x93, 0xc9, 0x73, 0xbb, 0x04, 0x2a, 0xc8, - 0x10, 0x00, 0x18, 0xb2, 0x59, 0x3a, 0xd6, 0x5b, 0xb1, 0x18, 0x19, 0xa0, 0x29, 0x81, 0x2c, 0xc4, - 0x58, 0xa8, 0x11, 0x19, 0xc8, 0x40, 0xa8, 0x9b, 0x24, 0xa9, 0x40, 0xa1, 0x81, 0x0d, 0xb8, 0x15, - 0x80, 0x39, 0xf3, 0x30, 0x8c, 0x9a, 0x17, 0x0c, 0x11, 0xd0, 0x29, 0x81, 0xa8, 0x71, 0xb9, 0x15, - 0x8c, 0x91, 0x12, 0x8c, 0x02, 0x8a, 0x92, 0x28, 0xa0, 0x08, 0x2b, 0x16, 0xd8, 0x48, 0xa8, 0x98, - 0x51, 0xa0, 0x29, 0xcc, 0x14, 0x20, 0xcc, 0x24, 0x8c, 0x80, 0x04, 0x2b, 0xd0, 0x21, 0xa9, 0x91, - 0x79, 0xd1, 0x38, 0x99, 0x10, 0xc0, 0x21, 0x3a, 0xf3, 0x39, 0xb1, 0x0a, 0x02, 0x12, 0x9d, 0x02, - 0x3c, 0xd4, 0x49, 0xa8, 0x83, 0x0c, 0x04, 0x8b, 0x92, 0x2c, 0xb3, 0x3a, 0x80, 0x95, 0x0e, 0x32, - 0xd1, 0x19, 0x00, 0xb2, 0x1d, 0x80, 0x30, 0xf2, 0x58, 0xb9, 0x81, 0x69, 0x90, 0x80, 0x98, 0x48, - 0xc0, 0x28, 0x98, 0x12, 0x8f, 0x84, 0x19, 0xb9, 0x42, 0xa9, 0x03, 0x39, 0xf8, 0x10, 0x28, 0xb8, - 0xa9, 0x62, 0xaa, 0x24, 0xba, 0x40, 0x9a, 0x17, 0x8b, 0xa8, 0x21, 0x9a, 0x86, 0x0b, 0x41, 0xe8, - 0x20, 0x2a, 0xd0, 0x23, 0x0d, 0x83, 0x0a, 0x92, 0x2c, 0xd8, 0x21, 0x19, 0xa3, 0x9a, 0x12, 0x1f, - 0xb5, 0x38, 0x2a, 0xe3, 0x28, 0xb9, 0x30, 0xc1, 0x01, 0x82, 0x2c, 0xa0, 0x91, 0x3a, 0xa2, 0x8e, - 0x23, 0xab, 0x27, 0x9b, 0x02, 0x09, 0xb0, 0x39, 0xfb, 0x16, 0x2e, 0xc3, 0x28, 0x0c, 0xa4, 0x29, - 0x0a, 0x94, 0x98, 0x60, 0xc9, 0x03, 0x9b, 0x31, 0x82, 0xb8, 0x41, 0xcd, 0x31, 0xb8, 0x01, 0x11, - 0x8d, 0x96, 0x1b, 0x11, 0xb0, 0x52, 0xc9, 0x38, 0xd1, 0x20, 0x19, 0xe3, 0x3a, 0xa9, 0x03, 0x3b, - 0x03, 0xf9, 0x41, 0x0b, 0xc4, 0x29, 0x08, 0xa1, 0x48, 0xa1, 0x0d, 0x87, 0x1d, 0x91, 0xa1, 0x58, - 0xa9, 0x01, 0x00, 0x1b, 0x93, 0x9a, 0x54, 0xc9, 0x40, 0xba, 0x01, 0x49, 0x00, 0xb1, 0x2a, 0xa4, - 0x1c, 0xaa, 0x33, 0x18, 0x30, 0xa9, 0xea, 0x13, 0x39, 0x1c, 0xf4, 0x28, 0x98, 0xa1, 0x68, 0xaa, - 0x87, 0x2c, 0x82, 0xb9, 0x43, 0x9c, 0x90, 0x13, 0x2d, 0x82, 0x9a, 0x20, 0xca, 0x63, 0xba, 0x24, - 0xd9, 0x38, 0xa1, 0x81, 0x6a, 0xb9, 0x13, 0x8e, 0x92, 0x20, 0x8b, 0x83, 0x90, 0x59, 0xd9, 0x34, - 0x8c, 0x83, 0x2b, 0xf8, 0x60, 0xb9, 0x11, 0x3a, 0xe1, 0x21, 0x1b, 0x90, 0x91, 0x6a, 0x90, 0x18, - 0xa0, 0x30, 0x9d, 0x94, 0x4b, 0xa1, 0x08, 0x90, 0x2a, 0x85, 0x3c, 0xf2, 0x20, 0x0b, 0xa4, 0x48, - 0xaa, 0x83, 0x8c, 0x23, 0x08, 0xf9, 0x41, 0xba, 0x32, 0xba, 0x84, 0x1b, 0x22, 0xa4, 0x0d, 0x00, - 0x0b, 0x97, 0x89, 0x5b, 0xa4, 0x89, 0x28, 0x90, 0x0b, 0x94, 0x39, 0x18, 0xb0, 0x85, 0x0f, 0xa2, - 0x32, 0x9f, 0x84, 0x2b, 0x81, 0x00, 0x8a, 0xa6, 0x3e, 0xc2, 0x10, 0x08, 0xb1, 0x5a, 0xb0, 0x28, - 0xa8, 0x13, 0x2a, 0xb3, 0x09, 0x0e, 0x95, 0x11, 0x1f, 0xa1, 0xa2, 0x5b, 0x90, 0xb1, 0x7a, 0x98, - 0x90, 0x12, 0x0a, 0x04, 0xb9, 0x50, 0xf9, 0x48, 0x98, 0x01, 0x0a, 0xa2, 0x11, 0xae, 0x43, 0xaa, - 0x22, 0x39, 0xe8, 0x00, 0x29, 0x30, 0xd9, 0x13, 0x0c, 0xc0, 0x59, 0xa2, 0x9a, 0x40, 0x80, 0xb8, - 0x21, 0x3a, 0xd8, 0x22, 0x07, 0x8f, 0x82, 0x8a, 0x03, 0x09, 0x98, 0x06, 0x0e, 0x92, 0x0a, 0x91, - 0x40, 0x81, 0x99, 0x48, 0xd1, 0x08, 0x08, 0x09, 0xa5, 0x38, 0xcb, 0x01, 0x82, 0x4d, 0xa4, 0x0c, - 0x12, 0xa9, 0x5a, 0x92, 0x0c, 0x84, 0x3b, 0xf2, 0x00, 0x2a, 0xc1, 0x41, 0xc9, 0x40, 0x99, 0x10, - 0x10, 0xc2, 0x59, 0xc0, 0x19, 0x98, 0x13, 0xab, 0x32, 0xb9, 0x2a, 0x14, 0x9d, 0x15, 0x99, 0x4a, - 0xa0, 0x05, 0x0c, 0xaa, 0x15, 0x39, 0xb8, 0x1b, 0xa0, 0xc0, 0x72, 0x98, 0x01, 0x19, 0xb3, 0x6c, - 0xc2, 0x19, 0x19, 0xc0, 0x18, 0x21, 0xf8, 0x68, 0x88, 0xa8, 0x20, 0x98, 0x20, 0x19, 0xa5, 0x1b, - 0x30, 0xfb, 0x32, 0xab, 0x02, 0x08, 0xf9, 0x78, 0xa8, 0x01, 0x19, 0x11, 0xa8, 0x41, 0xda, 0x09, - 0x03, 0x1a, 0x82, 0x8d, 0x05, 0x0c, 0xa1, 0x21, 0x1d, 0xa3, 0x98, 0x33, 0x0f, 0xa2, 0xa8, 0x70, - 0xc1, 0x49, 0x91, 0xb9, 0x48, 0x91, 0x0c, 0x85, 0x18, 0x8c, 0x91, 0x02, 0x2c, 0x91, 0x18, 0x18, - 0x12, 0xbf, 0x16, 0x8b, 0x13, 0xba, 0x3c, 0xa3, 0x28, 0x0b, 0xa9, 0x87, 0x2e, 0x03, 0x1a, 0xba, - 0x16, 0x0d, 0x95, 0x1c, 0xa2, 0x28, 0x08, 0xb1, 0x88, 0x1c, 0x17, 0xbb, 0x04, 0x19, 0x88, 0xa4, - 0x1d, 0x92, 0x09, 0x02, 0x88, 0x29, 0xbb, 0x36, 0xe8, 0x19, 0x03, 0x1c, 0xc1, 0x82, 0x3c, 0x90, - 0x25, 0xbb, 0x82, 0x0d, 0x04, 0x1b, 0x90, 0x44, 0x9f, 0x84, 0x1c, 0x81, 0x18, 0x80, 0x90, 0x4c, - 0xd2, 0x49, 0x90, 0x08, 0x81, 0xa9, 0x31, 0xb8, 0x2c, 0xc4, 0x4a, 0x92, 0x08, 0x02, 0x9c, 0x12, - 0x8b, 0x01, 0x18, 0x82, 0x60, 0xbe, 0x05, 0x1b, 0xc1, 0x12, 0x89, 0x89, 0x53, 0xf8, 0x59, 0xa0, - 0x20, 0x9a, 0x82, 0x49, 0xea, 0x32, 0xc9, 0x10, 0x11, 0x88, 0x08, 0x9d, 0x24, 0x9d, 0x14, 0x8a, - 0x08, 0x83, 0x1c, 0xc2, 0x2a, 0x23, 0xca, 0x81, 0x08, 0x5a, 0xf1, 0x30, 0x9b, 0x04, 0xa8, 0x04, - 0x0e, 0x93, 0x00, 0x0a, 0xb1, 0x5b, 0xa2, 0x2a, 0x81, 0x91, 0x8e, 0x05, 0x1d, 0x93, 0x2a, 0xc1, - 0x38, 0x81, 0xaa, 0x49, 0xb5, 0x1a, 0xb0, 0x1a, 0x84, 0x79, 0xb2, 0x1b, 0xa8, 0x25, 0x2c, 0xd4, - 0x28, 0x98, 0x88, 0xb3, 0x20, 0x1f, 0x94, 0x98, 0x9a, 0x21, 0xa2, 0x79, 0xc0, 0x22, 0x9c, 0x04, - 0x89, 0xa8, 0x48, 0xa4, 0x19, 0x8d, 0x93, 0x1a, 0x88, 0x14, 0xa0, 0x0f, 0x86, 0x09, 0x08, 0x90, - 0x01, 0xb8, 0x60, 0xb8, 0x8b, 0x07, 0x19, 0xa8, 0x08, 0x81, 0x38, 0x0c, 0x87, 0x1b, 0xa1, 0x20, - 0xe8, 0x48, 0x89, 0x03, 0x9c, 0x13, 0xaa, 0x4b, 0x14, 0xe8, 0x59, 0xb0, 0x00, 0x88, 0x31, 0xa8, - 0x1c, 0x02, 0xc0, 0x34, 0xaf, 0x03, 0x09, 0x00, 0x80, 0xc0, 0x6b, 0xb2, 0x3a, 0xe1, 0x42, 0x0b, - 0xa2, 0x0a, 0xa2, 0x7b, 0xa1, 0x01, 0x2b, 0xf0, 0x28, 0x81, 0x2b, 0x95, 0x0a, 0x88, 0x20, 0xb8, - 0x15, 0x8f, 0x04, 0x8a, 0x82, 0x1a, 0x99, 0x12, 0xb0, 0x58, 0xcb, 0x05, 0x2c, 0x08, 0x83, 0xca, - 0x61, 0xa9, 0x14, 0xab, 0x02, 0x09, 0xae, 0x16, 0x9a, 0x13, 0x8c, 0x83, 0x19, 0x1a, 0xa1, 0x2c, - 0x05, 0x98, 0x29, 0xcb, 0x43, 0x8a, 0xe8, 0x41, 0xa0, 0x49, 0xa2, 0xab, 0x28, 0xa4, 0x6d, 0xc1, - 0x31, 0x0c, 0x81, 0x8a, 0x84, 0x0c, 0x01, 0x80, 0xc8, 0x31, 0x8b, 0x97, 0x1b, 0x15, 0x9a, 0x80, - 0x10, 0xac, 0x15, 0x0b, 0xa3, 0x0d, 0x22, 0xd8, 0x10, 0x09, 0x20, 0x09, 0xa1, 0x27, 0x9c, 0x12, - 0xba, 0xa4, 0x2d, 0x93, 0x29, 0xf9, 0x78, 0x99, 0x81, 0x01, 0xa8, 0x5a, 0xb3, 0x3b, 0x89, 0x91, - 0x60, 0xd0, 0x48, 0xaa, 0x12, 0xa8, 0x1a, 0x15, 0x9c, 0x14, 0xb9, 0x38, 0xa8, 0x10, 0xa4, 0x48, - 0xc8, 0x2b, 0xc4, 0x38, 0x21, 0xda, 0x11, 0xaa, 0x3a, 0xb4, 0x51, 0x99, 0xa2, 0x1b, 0x21, 0x06, - 0x8f, 0x84, 0x1a, 0x92, 0x3c, 0xd9, 0x82, 0x4c, 0xb3, 0x4b, 0xc2, 0x29, 0x08, 0x88, 0x50, 0xc1, - 0x10, 0x1a, 0xd2, 0x00, 0x0b, 0x83, 0x80, 0xb1, 0x3c, 0xba, 0x91, 0x77, 0x98, 0x2a, 0xa2, 0x8a, - 0x15, 0x1d, 0xc1, 0x00, 0x30, 0xca, 0x20, 0xc2, 0x5a, 0xc0, 0x38, 0x93, 0xda, 0x68, 0xa0, 0x11, - 0x08, 0x98, 0xaa, 0x22, 0x83, 0x0f, 0x91, 0x88, 0x81, 0x48, 0xcc, 0x42, 0x80, 0x91, 0x5a, 0xeb, - 0x15, 0x99, 0x19, 0x82, 0xc9, 0x51, 0xaa, 0x03, 0x0e, 0x13, 0xaa, 0x20, 0x90, 0x29, 0x12, 0xae, - 0x05, 0xa9, 0x7a, 0xa1, 0x88, 0x18, 0x29, 0xc2, 0x38, 0xc1, 0x0c, 0x10, 0x83, 0x08, 0xdb, 0x51, - 0x88, 0xb3, 0x78, 0xac, 0x13, 0x0a, 0x93, 0x0d, 0x03, 0x91, 0x2f, 0xc1, 0x18, 0x03, 0x0c, 0x80, - 0x98, 0x51, 0xb0, 0x49, 0xc9, 0x42, 0xa9, 0x28, 0x99, 0xc4, 0x78, 0xa8, 0x09, 0x94, 0x08, 0x1a, - 0xa4, 0x29, 0xc8, 0x32, 0x8e, 0x94, 0x89, 0x21, 0xaa, 0x01, 0x33, 0x1b, 0xe8, 0x91, 0x00, 0x8f, - 0x35, 0xe9, 0x20, 0xb9, 0x40, 0xa1, 0x08, 0x22, 0xcd, 0x23, 0x8a, 0x04, 0x9b, 0x12, 0xc9, 0x29, - 0x93, 0x1f, 0xa5, 0x19, 0x90, 0x1a, 0x92, 0x07, 0x1c, 0x90, 0x82, 0x90, 0x0a, 0x00, 0xc1, 0x21, - 0x8b, 0x8b, 0x12, 0x27, 0xca, 0x5b, 0xb0, 0x33, 0x10, 0xbf, 0x06, 0x2b, 0x82, 0xa9, 0x38, 0xf8, - 0x29, 0x91, 0x69, 0xb0, 0x82, 0x2c, 0xb0, 0x35, 0xab, 0x48, 0xc8, 0x31, 0x08, 0x9a, 0x98, 0x02, - 0x97, 0x1e, 0xb2, 0x19, 0x81, 0x89, 0x33, 0xb2, 0x2c, 0xc9, 0x70, 0xc2, 0x28, 0x99, 0xc2, 0x70, - 0xc0, 0x39, 0xa8, 0x92, 0x49, 0xb1, 0x39, 0xab, 0x94, 0x51, 0x8a, 0x00, 0xb0, 0x11, 0x4c, 0x98, - 0x86, 0x9c, 0x33, 0xdb, 0x30, 0x88, 0x90, 0x99, 0xa0, 0x27, 0x8c, 0x20, 0xa2, 0x1b, 0x17, 0x8e, - 0x93, 0x19, 0x81, 0xc0, 0x49, 0xf3, 0x2a, 0x81, 0x80, 0x81, 0x88, 0x6b, 0xe2, 0x28, 0xa1, 0x20, - 0x89, 0xa5, 0x2b, 0xa9, 0x22, 0x99, 0x98, 0x2d, 0x01, 0xa6, 0x11, 0x1d, 0xb1, 0x04, 0x2a, 0x9a, - 0x13, 0xb8, 0x93, 0x4e, 0xe8, 0x38, 0xa8, 0x12, 0x5b, 0xe1, 0x20, 0x0c, 0x04, 0x8a, 0x91, 0x48, - 0xaa, 0x06, 0x8c, 0x82, 0x1a, 0x80, 0x82, 0xb2, 0x3e, 0x98, 0xe3, 0x58, 0x98, 0x11, 0xb0, 0x28, - 0x1b, 0xda, 0x27, 0xaa, 0x11, 0x9a, 0x81, 0x02, 0x0d, 0x04, 0xaa, 0x85, 0x1c, 0x91, 0x11, 0x8a, - 0x96, 0x2c, 0xa1, 0x91, 0x38, 0x99, 0x10, 0xd9, 0x52, 0x1b, 0x82, 0xc0, 0x19, 0x3e, 0xd3, 0x01, - 0x99, 0x20, 0x8c, 0x07, 0x1b, 0x91, 0x80, 0x09, 0x95, 0x2e, 0x93, 0x0a, 0x01, 0xda, 0x48, 0xb0, - 0x30, 0x90, 0x1a, 0x13, 0xad, 0x27, 0x9b, 0x38, 0xb3, 0x89, 0x2f, 0xe1, 0x21, 0x98, 0x20, 0xb9, - 0x88, 0x40, 0x80, 0x41, 0xf8, 0x28, 0x99, 0x02, 0x05, 0xbb, 0x50, 0xa9, 0xa1, 0x5a, 0x9a, 0x06, - 0x0a, 0x13, 0xbc, 0x28, 0x12, 0x0b, 0x86, 0x8a, 0x82, 0xdc, 0x51, 0x89, 0xa0, 0x22, 0x1a, 0x81, - 0x9f, 0x05, 0x2a, 0xb9, 0x23, 0x80, 0x0c, 0x22, 0xcd, 0x82, 0x59, 0x90, 0x10, 0xa8, 0x80, 0x1f, - 0x95, 0x10, 0x08, 0xba, 0x02, 0x0b, 0x28, 0xa3, 0x5a, 0xb2, 0x92, 0x8f, 0x10, 0x12, 0x84, 0x2f, - 0xb9, 0x84, 0x2b, 0x80, 0x00, 0xaa, 0x87, 0x4e, 0xb1, 0x29, 0xa3, 0x1b, 0x32, 0xe0, 0x39, 0xc1, - 0x3a, 0xd3, 0x1c, 0x23, 0xb9, 0x21, 0xea, 0x30, 0x80, 0x38, 0x95, 0x9c, 0x40, 0xb8, 0x00, 0x99, - 0x34, 0x9d, 0xa2, 0x03, 0x2e, 0xe1, 0x50, 0xb9, 0x21, 0x10, 0xc1, 0x39, 0xc9, 0x22, 0xab, 0x05, - 0x29, 0xab, 0xa4, 0x2a, 0x52, 0xbb, 0x24, 0xe8, 0x4a, 0x80, 0x90, 0x11, 0xe8, 0x50, 0xa9, 0x84, - 0x88, 0x89, 0x91, 0x98, 0x22, 0x38, 0x8d, 0xa6, 0x2c, 0xa4, 0x2b, 0x81, 0x04, 0x8f, 0x11, 0xa8, - 0x11, 0x18, 0xb8, 0x09, 0x18, 0x17, 0x8c, 0x20, 0xe0, 0x20, 0x88, 0x18, 0xa2, 0x1c, 0x23, 0xaf, - 0x32, 0x90, 0x89, 0xf2, 0x4b, 0x92, 0x18, 0x13, 0xfb, 0x41, 0xc9, 0x20, 0xa8, 0x10, 0x12, 0x9d, - 0x14, 0x9b, 0x20, 0xc0, 0x08, 0x22, 0x0a, 0x05, 0x0d, 0xb3, 0x0a, 0x8a, 0x07, 0x19, 0xa1, 0x3c, - 0xf1, 0x30, 0x89, 0x13, 0x8c, 0x91, 0x09, 0x98, 0x53, 0xab, 0x86, 0x1d, 0x98, 0x11, 0x10, 0x88, - 0x11, 0xe8, 0x68, 0xb0, 0x89, 0x20, 0xa1, 0x11, 0x80, 0xd8, 0x1d, 0x31, 0xf8, 0x21, 0x30, 0xaa, - 0x83, 0x9f, 0x13, 0x3a, 0xb0, 0x22, 0xaf, 0x92, 0x28, 0x99, 0x06, 0x1b, 0xa6, 0x2c, 0xa2, 0x19, - 0x00, 0x91, 0x3b, 0xc3, 0x3a, 0x92, 0xf0, 0x7a, 0x98, 0x10, 0x92, 0x8d, 0x92, 0x40, 0xab, 0x86, - 0x3a, 0xd9, 0x12, 0x89, 0xa1, 0x78, 0xd0, 0x20, 0x88, 0x92, 0x3a, 0xc0, 0x21, 0xba, 0x00, 0x18, - 0x93, 0x3c, 0xf1, 0x28, 0x2a, 0x85, 0x28, 0xfc, 0x43, 0xba, 0x82, 0x28, 0x00, 0xa0, 0x9f, 0x83, - 0x88, 0x60, 0x98, 0xb0, 0x58, 0xb1, 0x10, 0x1b, 0x84, 0x09, 0xa1, 0x10, 0xbf, 0x05, 0x1a, 0xa8, - 0x05, 0x2c, 0xa3, 0x1c, 0x81, 0x18, 0x0c, 0x06, 0x29, 0xe8, 0x28, 0xa8, 0x28, 0x82, 0x88, 0x9a, - 0x90, 0x14, 0x00, 0x8d, 0x05, 0x19, 0x0a, 0xa5, 0x8b, 0x51, 0xa0, 0xb1, 0x1c, 0x94, 0x0a, 0x38, - 0xb8, 0x53, 0xb0, 0x8f, 0x85, 0x1a, 0x82, 0x30, 0xfb, 0x48, 0xa2, 0x8b, 0x49, 0xc3, 0x2a, 0x38, - 0xc1, 0x3a, 0xe1, 0x20, 0x9a, 0x03, 0x08, 0x12, 0xba, 0x11, 0x95, 0x0f, 0x22, 0xf3, 0x4b, 0xa1, - 0x89, 0x21, 0xbc, 0x25, 0x8b, 0x10, 0x92, 0x3b, 0x21, 0xd2, 0x19, 0x9d, 0x07, 0x9a, 0x19, 0x85, - 0xaa, 0x62, 0xb8, 0x09, 0x11, 0x8b, 0x06, 0x9a, 0x11, 0xa8, 0x41, 0xaa, 0x24, 0xea, 0x21, 0x9b, - 0x93, 0x49, 0x89, 0x88, 0x27, 0xbb, 0x1a, 0x21, 0x09, 0x07, 0x0e, 0x88, 0x92, 0x29, 0x13, 0x8a, - 0x96, 0x8c, 0x09, 0x08, 0xa1, 0x61, 0xc9, 0x25, 0x9b, 0x13, 0xdb, 0x49, 0x95, 0xaa, 0x41, 0xd9, - 0x21, 0xa0, 0x0a, 0x24, 0x19, 0x99, 0xd1, 0x3a, 0xa8, 0x50, 0x95, 0x8b, 0x13, 0xf9, 0x49, 0xa0, - 0x20, 0xa1, 0x0b, 0x01, 0xaa, 0x65, 0xa8, 0x18, 0xb8, 0x32, 0xac, 0x28, 0x82, 0xc8, 0x3b, 0x07, - 0x22, 0x9f, 0x01, 0x8a, 0x01, 0x42, 0xc0, 0x8b, 0x38, 0xc5, 0x19, 0x01, 0x81, 0x29, 0xbd, 0x92, - 0x61, 0x00, 0x98, 0x81, 0x8c, 0x11, 0x90, 0x28, 0x9b, 0xa1, 0x20, 0x1d, 0x07, 0x8d, 0x14, 0x8e, - 0x94, 0x38, 0xa9, 0xa5, 0x1c, 0x02, 0xba, 0x15, 0x1a, 0x88, 0xc4, 0x2c, 0x92, 0x19, 0x01, 0xb9, - 0x53, 0x89, 0x19, 0xc3, 0x3a, 0x93, 0xbf, 0x15, 0x08, 0x9a, 0xc2, 0x59, 0x81, 0x18, 0xa0, 0x98, - 0x6b, 0xb8, 0x21, 0xa9, 0x81, 0x71, 0xc1, 0x18, 0x90, 0x8a, 0x24, 0xb8, 0x30, 0xac, 0x96, 0x4a, - 0xec, 0x33, 0x8b, 0x04, 0x89, 0x88, 0x09, 0xa8, 0x46, 0xaa, 0x21, 0xcb, 0x28, 0x81, 0x1c, 0x86, - 0xa9, 0x33, 0x8d, 0x80, 0x82, 0x1a, 0xa2, 0x3b, 0xc2, 0x51, 0xd9, 0x21, 0x0b, 0xc4, 0x4a, 0x10, - 0xc3, 0x0e, 0x13, 0xab, 0x22, 0x00, 0xd0, 0x58, 0x8b, 0xa6, 0x1b, 0x22, 0xd9, 0x20, 0x92, 0x3c, - 0xc1, 0x38, 0x90, 0xaa, 0x6a, 0xb4, 0x39, 0x80, 0x08, 0xc1, 0x19, 0x58, 0xf8, 0x11, 0x1a, 0xa1, - 0x18, 0xa4, 0x2a, 0xb1, 0x63, 0xcb, 0x90, 0x22, 0x39, 0x9a, 0x87, 0x1f, 0x00, 0xa0, 0x10, 0x01, - 0x8d, 0x23, 0xc9, 0x5a, 0xb1, 0x49, 0x80, 0xa0, 0x59, 0xfa, 0x52, 0x9b, 0x13, 0x98, 0x8a, 0x22, - 0xbd, 0x25, 0x9b, 0x11, 0x91, 0x19, 0x0a, 0xc2, 0x60, 0xb8, 0x41, 0xc9, 0x20, 0x90, 0x1a, 0x18, - 0xb3, 0x3a, 0x38, 0xfa, 0x70, 0xb8, 0x28, 0xa4, 0x3c, 0xa2, 0xae, 0x34, 0x9a, 0x28, 0xb3, 0x0c, - 0x85, 0x1d, 0x02, 0x89, 0x22, 0x9c, 0x1b, 0xa5, 0x2a, 0x02, 0xd9, 0x50, 0x98, 0x88, 0x12, 0x9b, - 0x92, 0x60, 0xc9, 0x04, 0x1a, 0x80, 0x0b, 0xa0, 0x86, 0x2e, 0x80, 0x81, 0x00, 0xca, 0x78, 0xb1, - 0x10, 0x82, 0xad, 0x30, 0xc1, 0x70, 0xa8, 0x08, 0xa1, 0x38, 0xa1, 0x1a, 0x31, 0xf1, 0x6b, 0xc0, - 0x48, 0x98, 0x81, 0x3a, 0xd1, 0x10, 0x89, 0x12, 0xba, 0x15, 0x99, 0x2c, 0xb1, 0x20, 0x14, 0xac, - 0x28, 0xb0, 0x26, 0x8d, 0x02, 0x90, 0x8c, 0x12, 0x0c, 0x07, 0x98, 0x19, 0xe0, 0x40, 0x98, 0x91, - 0x19, 0xa1, 0x31, 0x9f, 0x24, 0xab, 0x03, 0x0a, 0x11, 0x99, 0xc0, 0x3a, 0x09, 0x07, 0x80, 0xca, - 0x40, 0x01, 0x9b, 0x96, 0x2d, 0x91, 0x82, 0x2c, 0xd0, 0x40, 0xa1, 0x4a, 0xc1, 0x89, 0x12, 0x8a, - 0x12, 0xd0, 0x4b, 0x95, 0x1b, 0x81, 0x89, 0x11, 0x00, 0x1a, 0xe6, 0x6a, 0x98, 0x88, 0x21, 0xaa, - 0x30, 0x90, 0x0a, 0x34, 0xbf, 0x22, 0xa2, 0x0c, 0x24, 0xbb, 0x85, 0x90, 0x2a, 0xd0, 0x58, 0xa1, - 0x0a, 0x22, 0xfa, 0x31, 0xc9, 0x30, 0x82, 0x9a, 0x71, 0xd9, 0x10, 0x08, 0x80, 0x11, 0x8a, 0xb5, - 0x2d, 0x08, 0xa3, 0x2a, 0x22, 0x9d, 0x93, 0x89, 0x62, 0xd8, 0x1a, 0x24, 0xf9, 0x21, 0x8b, 0x81, - 0x02, 0x0d, 0x14, 0xb9, 0x31, 0xab, 0x18, 0x98, 0x12, 0x05, 0x9f, 0x83, 0xa0, 0x5a, 0xa2, 0x8a, - 0x06, 0x0c, 0x20, 0xc4, 0x1b, 0x02, 0x8c, 0x20, 0x11, 0xd9, 0x22, 0x0a, 0xb2, 0x1d, 0x84, 0x2b, - 0x92, 0xb2, 0x5c, 0xb0, 0x0a, 0x14, 0xa9, 0x3a, 0x87, 0xaa, 0x39, 0x90, 0x21, 0xa6, 0x3c, 0x90, - 0xf2, 0x31, 0x9c, 0x84, 0x89, 0x19, 0x90, 0x09, 0x17, 0xbb, 0x13, 0x91, 0x1f, 0x94, 0x09, 0x02, - 0xab, 0x22, 0xba, 0x11, 0x4c, 0xa7, 0x0a, 0x80, 0xb2, 0x5b, 0xb5, 0x3a, 0xb1, 0x18, 0x05, 0x8d, - 0x03, 0xcb, 0x51, 0xb8, 0x58, 0xb3, 0x2e, 0xa2, 0x0b, 0x12, 0xb0, 0x58, 0xc0, 0x20, 0xb0, 0x4a, - 0xb4, 0x4b, 0x91, 0xa9, 0x78, 0xb1, 0x28, 0xc0, 0x4a, 0xc0, 0x12, 0x90, 0x39, 0xd2, 0x0a, 0x14, - 0xca, 0x50, 0xc1, 0x49, 0xc0, 0x30, 0xa9, 0x20, 0x98, 0x98, 0x14, 0xac, 0x34, 0xeb, 0x32, 0xc9, - 0x20, 0x80, 0x00, 0x80, 0x0d, 0x13, 0xaf, 0x25, 0xab, 0x23, 0xbb, 0x31, 0xa3, 0x1e, 0x83, 0xaa, - 0x31, 0xaa, 0x17, 0xdb, 0x22, 0xab, 0x12, 0x22, 0x8e, 0x04, 0x9b, 0x84, 0x2c, 0x81, 0xa0, 0x20, - 0xe8, 0x58, 0xa0, 0x18, 0xb3, 0x8e, 0x12, 0x99, 0x13, 0x00, 0x1c, 0xb2, 0x7a, 0xc0, 0x49, 0xa1, - 0x0b, 0x33, 0x9e, 0x22, 0x99, 0x30, 0x9a, 0xb9, 0x20, 0x65, 0xba, 0x21, 0x98, 0xb8, 0x71, 0xf0, - 0x11, 0x98, 0x18, 0xa8, 0x31, 0xa1, 0x4b, 0x02, 0xf9, 0x30, 0xd0, 0x39, 0xa1, 0xa9, 0x36, 0x9c, - 0x94, 0x19, 0x99, 0x91, 0x41, 0x88, 0x98, 0x2c, 0xb3, 0xa0, 0x78, 0xb2, 0x9b, 0x15, 0x8a, 0x83, - 0x8f, 0x14, 0x9a, 0x31, 0xf8, 0x4a, 0x91, 0x8a, 0x14, 0xac, 0x32, 0x91, 0x8a, 0x94, 0x2a, 0x98, - 0x2b, 0x87, 0xaa, 0x41, 0xa0, 0x0c, 0x03, 0x0c, 0x31, 0xf1, 0x19, 0x00, 0xc1, 0x70, 0xc1, 0x28, - 0x98, 0x80, 0x21, 0xc9, 0x10, 0xbb, 0x21, 0x04, 0x2f, 0xa4, 0x2a, 0x11, 0xda, 0x41, 0xe0, 0x28, - 0x90, 0x00, 0x10, 0x98, 0x89, 0x89, 0x93, 0x2a, 0x40, 0xe1, 0x41, 0xaa, 0x18, 0x04, 0x10, 0x9f, - 0x20, 0xa1, 0x1d, 0x84, 0x8b, 0x31, 0xe2, 0x2a, 0x94, 0x4b, 0xb2, 0x0a, 0x10, 0xaa, 0x24, 0xba, - 0x24, 0x2a, 0xf0, 0x78, 0xaa, 0x22, 0xc9, 0x20, 0x92, 0x1b, 0xa6, 0x09, 0x0a, 0x86, 0x8a, 0x21, - 0xc8, 0x38, 0xa0, 0x18, 0x30, 0x1c, 0x87, 0xad, 0x13, 0xab, 0x43, 0xa8, 0x2d, 0x85, 0x2b, 0xb3, - 0x1c, 0x91, 0x10, 0xa0, 0xa2, 0x5e, 0xb1, 0x4a, 0xb2, 0x1a, 0x80, 0x21, 0xe8, 0x69, 0xb2, 0x0a, - 0x01, 0x1a, 0x02, 0xd0, 0x58, 0xb0, 0x18, 0x20, 0xad, 0x93, 0x7a, 0x00, 0xd0, 0x49, 0xd1, 0x28, - 0x80, 0x92, 0x5a, 0xb9, 0x04, 0x9c, 0x41, 0xa8, 0x10, 0xa0, 0x4c, 0xc1, 0x21, 0xa1, 0x0a, 0x08, - 0xa0, 0x51, 0xa8, 0x03, 0xb9, 0x59, 0xf3, 0x3b, 0xa2, 0x30, 0x94, 0x9d, 0x10, 0xba, 0x15, 0x3b, - 0xa2, 0x94, 0x2d, 0xa3, 0x0e, 0x82, 0x88, 0x20, 0xc2, 0x58, 0xe9, 0x28, 0x81, 0x88, 0x08, 0x02, - 0x0a, 0xab, 0x64, 0xba, 0x12, 0x20, 0x1c, 0xf0, 0x58, 0x91, 0x0b, 0x93, 0xab, 0x53, 0x99, 0x22, - 0xfa, 0x20, 0x93, 0x0d, 0x12, 0xbb, 0x06, 0x9b, 0x13, 0x8b, 0x22, 0x98, 0xaa, 0x95, 0x48, 0x00, - 0xa8, 0x01, 0x81, 0xfe, 0x38, 0x01, 0xa0, 0x51, 0xda, 0x80, 0x01, 0x20, 0x01, 0x80, 0x91, 0xec, - 0x78, 0xb8, 0x29, 0x82, 0x0d, 0x24, 0x8b, 0x82, 0x8c, 0x19, 0xa7, 0x4a, 0x81, 0x00, 0xa9, 0xb1, - 0x3d, 0xa8, 0x14, 0x29, 0xb0, 0x3b, 0x95, 0x8a, 0x4b, 0xa1, 0x87, 0x0a, 0x83, 0xb9, 0x2f, 0xa7, - 0x19, 0x98, 0x18, 0x11, 0xa9, 0x30, 0xc8, 0x82, 0x78, 0xb8, 0x31, 0xda, 0x12, 0x18, 0xbd, 0x44, - 0xca, 0x41, 0x89, 0x90, 0x01, 0x8b, 0x12, 0xca, 0x53, 0xa0, 0x28, 0xa9, 0xa1, 0x38, 0xcb, 0x60, - 0xd2, 0x38, 0x11, 0xc8, 0x09, 0x81, 0x1a, 0xba, 0x42, 0x07, 0x0f, 0x81, 0x08, 0x90, 0x32, 0x0c, - 0x93, 0x0e, 0xa2, 0x0a, 0x12, 0xa4, 0x3e, 0xb2, 0x90, 0x21, 0xaa, 0x7c, 0xb0, 0xa2, 0x4a, 0x98, - 0x16, 0x99, 0x1a, 0xb1, 0xb1, 0x71, 0xe1, 0x28, 0xa0, 0x4a, 0xb5, 0x1b, 0x03, 0xaa, 0x60, 0xc1, - 0x39, 0xc1, 0x28, 0x92, 0xab, 0x06, 0x0b, 0x02, 0xa8, 0x1b, 0xa3, 0x78, 0x92, 0x9b, 0x98, 0x34, - 0x1a, 0xd2, 0x2b, 0xa9, 0x02, 0x17, 0x1a, 0xad, 0x24, 0xa9, 0x18, 0x0b, 0x22, 0x87, 0x0e, 0x03, - 0xbb, 0x41, 0xc2, 0x2a, 0xb2, 0x3a, 0xa3, 0x98, 0x7a, 0xf2, 0x58, 0xa8, 0x18, 0x88, 0x08, 0x01, - 0x09, 0xa2, 0x20, 0x9f, 0x22, 0x92, 0xae, 0x53, 0x99, 0x18, 0xa2, 0x2a, 0xa8, 0x93, 0x01, 0x9f, - 0x05, 0xb9, 0x30, 0xb9, 0x25, 0x0a, 0xe3, 0x68, 0xc9, 0x41, 0xa9, 0x01, 0x09, 0xa1, 0x08, 0xa8, - 0x71, 0xa8, 0x92, 0xb0, 0x79, 0x90, 0x20, 0x98, 0xd2, 0x4c, 0xb2, 0x00, 0x0b, 0x04, 0x8b, 0x87, - 0x8c, 0x81, 0x18, 0x21, 0x80, 0x9b, 0x07, 0x8c, 0x94, 0x2c, 0xb3, 0x00, 0x8a, 0x82, 0x4b, 0xd3, - 0x38, 0xb9, 0x12, 0x2e, 0x92, 0x01, 0x1f, 0xa3, 0x09, 0x2a, 0x94, 0x18, 0xe8, 0x38, 0xb8, 0x82, - 0x3d, 0x14, 0xba, 0x28, 0x92, 0x99, 0x7a, 0xc3, 0x8a, 0x11, 0x01, 0x9d, 0x12, 0x00, 0x81, 0x98, - 0x3f, 0xc5, 0x39, 0x9a, 0x14, 0x9e, 0x84, 0x38, 0xca, 0x21, 0x88, 0x8a, 0x15, 0xaa, 0x10, 0x09, - 0x03, 0x90, 0x0b, 0x89, 0x87, 0xba, 0x28, 0x9a, 0x33, 0x77, 0xdb, 0x11, 0x09, 0x23, 0xba, 0x21, - 0xbc, 0x23, 0xaa, 0x86, 0x1a, 0xdb, 0x26, 0xbb, 0x32, 0x9b, 0x07, 0x1a, 0x80, 0xc8, 0x30, 0x81, - 0xaa, 0x22, 0xf8, 0x7a, 0x98, 0x00, 0x28, 0xb9, 0x53, 0xca, 0x21, 0x99, 0x00, 0x82, 0x39, 0xe9, - 0x11, 0x3c, 0xf1, 0x48, 0xa8, 0x21, 0xb9, 0x04, 0x9b, 0x15, 0xb9, 0x02, 0x4b, 0xe9, 0x32, 0x9c, - 0x33, 0xca, 0x12, 0x8a, 0x81, 0x89, 0x63, 0xa8, 0x8b, 0x05, 0x8e, 0x13, 0xaa, 0x30, 0xa2, 0x0b, - 0x23, 0xdf, 0x73, 0x99, 0x11, 0xab, 0x22, 0xa9, 0x80, 0x78, 0xba, 0x33, 0xaa, 0x82, 0x1c, 0x80, - 0x22, 0x21, 0xad, 0x07, 0x9c, 0x31, 0xb0, 0x1a, 0x91, 0x3c, 0xa4, 0x9c, 0x25, 0x9c, 0x14, 0xa9, - 0x10, 0x00, 0x1d, 0x87, 0x8c, 0x03, 0x0b, 0x91, 0x08, 0x29, 0xb6, 0x3b, 0xa3, 0x1a, 0x93, 0x1a, - 0x83, 0xcc, 0x5a, 0xb4, 0x28, 0x3b, 0xa5, 0x0b, 0x9a, 0x53, 0x1a, 0xa7, 0x1d, 0x91, 0x08, 0x38, - 0xb1, 0x2b, 0x14, 0x8c, 0xc2, 0x38, 0x92, 0x2c, 0x93, 0xe3, 0x3d, 0xa1, 0x18, 0xb1, 0x6a, 0xa9, - 0x04, 0x20, 0x8d, 0xd3, 0x29, 0x80, 0x22, 0x1a, 0xf2, 0x3b, 0xa4, 0x3a, 0x99, 0x83, 0x1a, 0xa2, - 0x20, 0xdf, 0x43, 0x89, 0x92, 0xab, 0x94, 0x58, 0x9a, 0x81, 0xb8, 0x54, 0x8a, 0x94, 0x8b, 0x39, - 0xd3, 0x2a, 0x96, 0x2c, 0xb8, 0x12, 0x39, 0xc2, 0x20, 0xa2, 0x2e, 0xa8, 0x00, 0x01, 0x0c, 0x07, - 0xaa, 0x01, 0x99, 0x12, 0x4a, 0x1a, 0xf3, 0x20, 0x09, 0x00, 0xb1, 0x2f, 0x05, 0x9a, 0x29, 0xd2, - 0x4b, 0xc1, 0x31, 0x99, 0x11, 0x0b, 0xb0, 0x01, 0x2a, 0x35, 0xa9, 0x20, 0xbe, 0xa1, 0x34, 0x78, - 0xf3, 0x18, 0xaa, 0x89, 0x25, 0xa8, 0x41, 0xba, 0x11, 0x8a, 0x19, 0xa6, 0x38, 0x49, 0xf1, 0x28, - 0xba, 0x42, 0xb8, 0x30, 0x08, 0xbb, 0x17, 0xac, 0x22, 0x81, 0x19, 0xa2, 0x09, 0xbc, 0x53, 0x01, - 0xca, 0x71, 0xc9, 0x11, 0x08, 0xab, 0x64, 0xa0, 0x0a, 0xa1, 0x8a, 0x33, 0x91, 0x88, 0x00, 0x1e, - 0xa7, 0x3a, 0x98, 0x91, 0x21, 0x09, 0xba, 0xf0, 0x6a, 0x20, 0xb8, 0x20, 0x08, 0xab, 0x87, 0x0c, - 0x11, 0x08, 0x05, 0x8b, 0xd0, 0x41, 0x99, 0xc8, 0x40, 0xa2, 0x3b, 0xb3, 0xaa, 0x41, 0x59, 0xf1, - 0x20, 0x9a, 0x93, 0x49, 0xc1, 0x19, 0xa2, 0x18, 0x2c, 0xa5, 0x2b, 0x82, 0xba, 0x15, 0x29, 0x9f, - 0x94, 0x39, 0xa1, 0x3a, 0xc4, 0x4b, 0xb2, 0x0a, 0x3a, 0x97, 0x3a, 0x89, 0xb9, 0x40, 0x83, 0x0f, - 0x83, 0x09, 0x12, 0xbb, 0x29, 0x87, 0xbb, 0x32, 0xb0, 0x14, 0x0e, 0xb4, 0x2c, 0xa2, 0x42, 0xbc, - 0x63, 0xb9, 0x91, 0x51, 0x9c, 0x03, 0x98, 0x5b, 0xc0, 0x21, 0x89, 0x91, 0x20, 0xdb, 0x33, 0xca, - 0x63, 0xba, 0x81, 0x20, 0x9b, 0x16, 0xd0, 0x5b, 0xa2, 0x1a, 0x92, 0x99, 0x40, 0xc0, 0x30, 0xe0, - 0x28, 0x81, 0x09, 0x91, 0x9c, 0x42, 0xb3, 0x2a, 0xa2, 0x0f, 0x91, 0x13, 0x2d, 0xc2, 0x19, 0x02, - 0x8a, 0xa9, 0x06, 0x0a, 0x08, 0x2a, 0xf3, 0x38, 0x01, 0xb1, 0x2c, 0x84, 0x99, 0x01, 0xbe, 0x13, - 0x90, 0x4e, 0x85, 0x9b, 0x28, 0x89, 0x82, 0x08, 0x63, 0xe8, 0x29, 0xa2, 0x89, 0x12, 0x10, 0x9a, - 0xf4, 0x3b, 0x19, 0xb7, 0x18, 0x30, 0xca, 0x12, 0x09, 0x10, 0xc0, 0x1b, 0x23, 0x9e, 0x25, 0xaa, - 0x89, 0x08, 0x44, 0xb9, 0xb8, 0x70, 0xe8, 0x12, 0x10, 0xc0, 0x28, 0x88, 0x89, 0x81, 0x1a, 0x03, - 0xcb, 0x74, 0xb9, 0x99, 0x04, 0x20, 0xa2, 0x9d, 0x31, 0xf9, 0x51, 0xa8, 0x18, 0x28, 0x9c, 0x05, - 0xac, 0x24, 0x8b, 0x84, 0x0a, 0x19, 0xb3, 0x1c, 0x04, 0xdb, 0x43, 0x9a, 0x92, 0x1a, 0x84, 0x1b, - 0xc3, 0x68, 0xb9, 0x20, 0x8c, 0x96, 0x4a, 0xb0, 0x18, 0x81, 0x88, 0x29, 0xb2, 0x49, 0xa6, 0x2f, - 0xc2, 0x28, 0x00, 0x88, 0x1b, 0xa4, 0x2a, 0xb2, 0x8b, 0x23, 0x2b, 0x97, 0x19, 0x11, 0xbc, 0x51, - 0xc0, 0x1a, 0x86, 0x2a, 0xd2, 0x29, 0xb8, 0x80, 0x73, 0xc9, 0x21, 0xa8, 0x49, 0xe2, 0x38, 0x90, - 0x88, 0x20, 0xd9, 0x31, 0xc9, 0x50, 0xc8, 0x10, 0x81, 0x8b, 0x86, 0x0a, 0x12, 0xaa, 0x10, 0x83, - 0x2c, 0xd1, 0x48, 0x99, 0x91, 0x38, 0xce, 0x17, 0x8a, 0x81, 0x8a, 0x03, 0x08, 0x09, 0xc1, 0x2a, - 0x06, 0x8c, 0x04, 0xac, 0x33, 0xba, 0x18, 0x13, 0x1e, 0xa5, 0x3c, 0xb1, 0x29, 0x22, 0xab, 0x12, - 0xe8, 0x3a, 0x01, 0x0a, 0x13, 0x8f, 0x87, 0x1c, 0x91, 0x29, 0x90, 0x21, 0x9b, 0xb3, 0x7a, 0xb0, - 0x18, 0x92, 0x1c, 0x92, 0x00, 0x32, 0xbe, 0x21, 0xd4, 0x6c, 0xa1, 0x2a, 0x81, 0x0a, 0x21, 0xc0, - 0x0c, 0x01, 0x10, 0x90, 0x78, 0xc2, 0x2a, 0x90, 0x90, 0x19, 0x81, 0x03, 0x9c, 0x33, 0xcf, 0x84, - 0x3b, 0x93, 0x93, 0x1f, 0xd3, 0x29, 0x91, 0x89, 0x13, 0x0c, 0x43, 0xd9, 0x0a, 0x84, 0x2d, 0x83, - 0x9b, 0x04, 0xaa, 0x58, 0xd3, 0x2b, 0x12, 0xaa, 0x24, 0xab, 0x91, 0x4a, 0x83, 0x90, 0xaf, 0x15, - 0x2a, 0xe2, 0x28, 0xba, 0x23, 0x00, 0x88, 0x99, 0x39, 0x07, 0xb8, 0x2b, 0xa2, 0x3a, 0xf1, 0x70, - 0xb8, 0x30, 0x82, 0x9e, 0x88, 0x21, 0x90, 0x50, 0x98, 0xf1, 0x30, 0xa8, 0x00, 0x08, 0x30, 0xca, - 0x84, 0x2b, 0xaa, 0x84, 0x2a, 0x14, 0xdc, 0x41, 0x91, 0x09, 0x88, 0xa0, 0x6a, 0xc2, 0x60, 0xd9, - 0x28, 0x88, 0xa3, 0x18, 0x08, 0xa8, 0x10, 0x23, 0x9d, 0x01, 0xa1, 0x03, 0xff, 0x05, 0x88, 0x18, - 0xb0, 0x2c, 0x94, 0x2a, 0x91, 0x8a, 0x24, 0xac, 0x84, 0x8c, 0x13, 0x01, 0x9b, 0x96, 0x1e, 0x82, - 0x08, 0x88, 0x80, 0x01, 0x98, 0x28, 0xe9, 0x29, 0x43, 0xca, 0xa1, 0x59, 0x01, 0xc0, 0x49, 0xb0, - 0x41, 0x9d, 0x85, 0x89, 0x3a, 0xa4, 0x9a, 0x14, 0x0d, 0xa1, 0x81, 0x78, 0xb0, 0x09, 0x82, 0x38, - 0xc9, 0x28, 0x04, 0x9d, 0x24, 0xbd, 0x30, 0x01, 0x08, 0xb1, 0x2a, 0x85, 0x8c, 0x03, 0x8d, 0x13, - 0xc1, 0x69, 0xb8, 0x8a, 0x15, 0x99, 0x80, 0xa2, 0x3a, 0xa0, 0x62, 0xe2, 0x3a, 0x80, 0x90, 0x88, - 0x90, 0x6a, 0xb2, 0x18, 0xab, 0x85, 0x4b, 0x94, 0x8b, 0x22, 0x8b, 0xa0, 0x07, 0x8e, 0x14, 0x8c, - 0x93, 0x0b, 0x12, 0xa8, 0x4b, 0xa4, 0x2b, 0x83, 0x00, 0x85, 0xaf, 0x04, 0x90, 0x8c, 0x13, 0x89, - 0xc1, 0x7a, 0xb1, 0x18, 0x21, 0x08, 0x8c, 0xc1, 0x50, 0x99, 0x90, 0x43, 0x9d, 0xb1, 0x40, 0x90, - 0x98, 0x52, 0xc0, 0x3a, 0xb2, 0x22, 0xad, 0x04, 0x0a, 0x98, 0x01, 0x40, 0x9c, 0xf2, 0x61, 0xa9, - 0x00, 0x81, 0x18, 0x2a, 0xa4, 0x01, 0xaf, 0x83, 0x88, 0x28, 0xb3, 0x3d, 0xb3, 0x0a, 0x63, 0xea, - 0x30, 0x81, 0x9b, 0x82, 0x11, 0x9a, 0x98, 0x42, 0x88, 0x2d, 0xc7, 0x59, 0xc9, 0x22, 0x8a, 0x92, - 0x19, 0x02, 0xa9, 0x5b, 0xb3, 0x0b, 0x23, 0xe8, 0x3c, 0xb0, 0x36, 0xaa, 0x08, 0xa0, 0x28, 0x18, - 0x00, 0x17, 0xbf, 0x42, 0x98, 0x99, 0x33, 0xa9, 0x94, 0x0e, 0x01, 0xc8, 0x51, 0x99, 0xa2, 0x10, - 0x18, 0xb3, 0x8f, 0x85, 0x1b, 0xa0, 0x03, 0x7b, 0xd2, 0x39, 0xa9, 0x13, 0x8b, 0x1a, 0x94, 0x89, - 0x24, 0x8b, 0xba, 0x36, 0x0b, 0xe9, 0x51, 0xa0, 0x10, 0x8b, 0xa0, 0x21, 0x81, 0x79, 0xf1, 0x28, - 0x90, 0x11, 0xac, 0x83, 0x48, 0xc8, 0x40, 0xba, 0x14, 0x1c, 0x12, 0xaa, 0x10, 0x18, 0x9c, 0x17, - 0x8d, 0x82, 0x89, 0x30, 0xc1, 0x58, 0xc9, 0x20, 0x83, 0x9d, 0x20, 0xa0, 0x40, 0x90, 0x00, 0xcb, - 0x20, 0x83, 0x3a, 0xc1, 0x0a, 0x06, 0x0d, 0x91, 0x11, 0x9d, 0x05, 0x09, 0xc1, 0x40, 0x80, 0xcb, - 0x18, 0x85, 0x28, 0xbb, 0x17, 0x8b, 0x01, 0x08, 0xb8, 0x00, 0x30, 0x13, 0xdf, 0x14, 0x9a, 0x18, - 0x08, 0x12, 0xa0, 0x1f, 0x94, 0x8b, 0x40, 0x83, 0xad, 0x11, 0x10, 0xc9, 0x41, 0x98, 0x98, 0x3a, - 0x42, 0xf0, 0x59, 0x98, 0x09, 0xc2, 0x48, 0x00, 0xc9, 0x33, 0xbb, 0x41, 0xc8, 0x20, 0xb2, 0x0e, - 0x03, 0x9a, 0x04, 0x1a, 0x30, 0xf9, 0x58, 0x09, 0x98, 0x10, 0x99, 0x1b, 0x10, 0xc2, 0x71, 0xa1, - 0x19, 0x10, 0xdc, 0x25, 0x8c, 0x80, 0x81, 0x3a, 0xb2, 0x19, 0xa0, 0x81, 0x79, 0xf1, 0x30, 0x98, - 0x08, 0x80, 0xd9, 0x30, 0x59, 0xc3, 0x8a, 0x02, 0x9a, 0x40, 0xc8, 0x23, 0x9d, 0x31, 0x85, 0xae, - 0x23, 0x0c, 0x01, 0x98, 0x30, 0xea, 0x50, 0xa1, 0x89, 0x21, 0xca, 0x22, 0xaa, 0x52, 0xba, 0x83, - 0x4a, 0xc0, 0x48, 0xa8, 0x84, 0x2f, 0xc3, 0x10, 0x99, 0x01, 0x98, 0x88, 0x14, 0xba, 0x63, 0xca, - 0x28, 0x96, 0x0b, 0x11, 0xa9, 0x68, 0xc2, 0x39, 0xd0, 0x29, 0x01, 0xa9, 0x52, 0xaa, 0x23, 0xba, - 0x48, 0xf2, 0x5b, 0x91, 0x08, 0x08, 0x81, 0x89, 0xca, 0x27, 0x0d, 0x83, 0x9a, 0x10, 0x88, 0x88, - 0x11, 0x0b, 0x87, 0x1a, 0x01, 0xbb, 0x14, 0x8c, 0x22, 0xf2, 0x4a, 0xa2, 0x0c, 0x84, 0x8a, 0x20, - 0xb0, 0x23, 0xbd, 0x71, 0xa8, 0x20, 0x93, 0x8f, 0x93, 0x89, 0x04, 0x8c, 0x10, 0xb1, 0x50, 0xc0, - 0x19, 0x82, 0x0a, 0x53, 0xbc, 0x04, 0x8b, 0x21, 0x92, 0x0c, 0xa2, 0x28, 0x08, 0x91, 0xe8, 0x2c, - 0x07, 0x2b, 0xc1, 0x18, 0x39, 0xd1, 0x30, 0xc0, 0x3a, 0x84, 0x0a, 0xb8, 0x0a, 0x73, 0xc0, 0x38, - 0xa1, 0x0e, 0x93, 0x1a, 0x01, 0x2a, 0xa5, 0x00, 0x4b, 0xc9, 0x32, 0xb0, 0x3c, 0xc1, 0x8c, 0x25, - 0x9b, 0x14, 0xba, 0x42, 0xc0, 0x59, 0xc0, 0x29, 0x02, 0x9b, 0x24, 0xfb, 0x40, 0x89, 0x80, 0x81, - 0x1c, 0x93, 0x0b, 0x13, 0x90, 0x7a, 0xb8, 0x10, 0x98, 0x8a, 0x49, 0xf3, 0x50, 0x80, 0xc1, 0x2a, - 0xb1, 0x5b, 0xa3, 0x8a, 0x52, 0xc8, 0x20, 0xc8, 0x1a, 0x05, 0x0c, 0x86, 0x8b, 0x11, 0xa0, 0x3a, - 0xb4, 0x2a, 0x80, 0x88, 0x17, 0x9c, 0x19, 0x81, 0x98, 0x42, 0x0b, 0xa3, 0x30, 0xca, 0x00, 0x8c, - 0x27, 0x9b, 0x81, 0x29, 0xc0, 0x92, 0x0f, 0x12, 0xa2, 0x7a, 0xa0, 0x8a, 0x11, 0x88, 0x31, 0xe2, - 0x4b, 0xb1, 0x09, 0x30, 0xba, 0x94, 0x2a, 0x31, 0xa1, 0xbf, 0x47, 0xbb, 0x13, 0x08, 0x8c, 0x83, - 0x20, 0xf8, 0x1a, 0x20, 0xc1, 0x38, 0x92, 0xc2, 0x5d, 0xb1, 0x82, 0x0d, 0x83, 0x2a, 0xb0, 0x68, - 0xa8, 0x01, 0x28, 0xea, 0x18, 0x11, 0x28, 0xd4, 0x3b, 0x94, 0x19, 0x9a, 0x90, 0x21, 0xf3, 0x59, - 0xaa, 0x02, 0x11, 0xa9, 0x81, 0x68, 0xd9, 0x12, 0x0b, 0x94, 0x4b, 0xf0, 0x51, 0xa8, 0x10, 0xa8, - 0x19, 0xa8, 0x29, 0x17, 0x9d, 0x23, 0x99, 0x88, 0x08, 0x10, 0x00, 0xaa, 0x16, 0x0f, 0x82, 0x88, - 0x88, 0x0a, 0x30, 0xb2, 0x03, 0x1e, 0x18, 0xb1, 0x32, 0x20, 0xcf, 0x14, 0x8b, 0x10, 0xb8, 0x11, - 0xc1, 0x3c, 0xc3, 0x20, 0x51, 0xb0, 0x80, 0xab, 0x91, 0x78, 0x90, 0xe1, 0x50, 0xb9, 0x28, 0x18, - 0x08, 0x94, 0x0f, 0x15, 0xaa, 0x22, 0xac, 0x20, 0x84, 0x9e, 0x05, 0x0c, 0x82, 0x19, 0x9a, 0x93, - 0x60, 0xa1, 0x0a, 0x92, 0x8a, 0xa8, 0x14, 0x19, 0x92, 0xb9, 0x84, 0x0f, 0xb2, 0x16, 0x9c, 0x62, - 0xa9, 0x91, 0x29, 0x99, 0x05, 0x0b, 0x12, 0xea, 0x58, 0xa0, 0x39, 0xb9, 0x31, 0x10, 0xd9, 0x71, - 0xc8, 0x01, 0x08, 0xa0, 0x08, 0x82, 0x18, 0xf0, 0x30, 0x89, 0xb3, 0x2d, 0x84, 0x1b, 0xa5, 0x39, - 0x9a, 0xf0, 0x50, 0xa0, 0x80, 0x10, 0xaa, 0x22, 0x1a, 0x96, 0x9c, 0x38, 0x12, 0xbb, 0x60, 0xb1, - 0x1c, 0x10, 0x83, 0x0d, 0x91, 0x52, 0xca, 0x21, 0x99, 0x89, 0x50, 0xc2, 0x59, 0xa8, 0x08, 0x80, - 0x8a, 0x28, 0xb5, 0x5a, 0x80, 0xa0, 0x12, 0x1b, 0xa8, 0x00, 0x04, 0xca, 0x8f, 0x07, 0xaa, 0x20, - 0x84, 0x0b, 0x21, 0x98, 0xd0, 0x38, 0x2a, 0xb6, 0x09, 0x01, 0x0b, 0xc2, 0x58, 0x92, 0x9f, 0x82, - 0x41, 0x0c, 0xa5, 0x29, 0xb9, 0x31, 0xc1, 0x12, 0x8e, 0x23, 0x98, 0x9e, 0x21, 0x00, 0x0a, 0x13, - 0xa0, 0xbe, 0x45, 0x9a, 0xa0, 0x41, 0xc0, 0x28, 0xa9, 0x15, 0x8b, 0x90, 0x21, 0x80, 0x8e, 0x03, - 0x99, 0x21, 0x08, 0xf1, 0x59, 0x0a, 0xb4, 0x5a, 0x91, 0x09, 0xd1, 0x3a, 0x98, 0x03, 0x94, 0x08, - 0x1f, 0xa3, 0x80, 0x0b, 0x38, 0xf8, 0x43, 0x19, 0xfa, 0x21, 0x88, 0x88, 0x01, 0xb9, 0x38, 0x49, - 0xf0, 0x19, 0x33, 0x0b, 0x84, 0x9c, 0x18, 0x90, 0x14, 0x8d, 0x90, 0x81, 0x78, 0xa0, 0x09, 0x95, - 0x2b, 0xb0, 0xb0, 0x79, 0xb2, 0x38, 0x92, 0x0b, 0x91, 0x79, 0xe0, 0x00, 0x3a, 0xc0, 0x18, 0x11, - 0xa0, 0x29, 0x16, 0x0b, 0xa2, 0x2c, 0xb0, 0xa0, 0x6b, 0x86, 0x8b, 0x21, 0xb3, 0x8f, 0x00, 0x88, - 0x85, 0x1b, 0x82, 0xa8, 0x62, 0xaa, 0x90, 0x11, 0x1b, 0x95, 0x1b, 0x90, 0x23, 0x8c, 0x68, 0xf0, - 0x50, 0x99, 0x80, 0x1a, 0xb3, 0x7b, 0xb2, 0x18, 0xaa, 0x86, 0x2a, 0x89, 0x02, 0xaa, 0x62, 0xd8, - 0x38, 0x98, 0x01, 0x12, 0xf9, 0x3c, 0x01, 0xab, 0x24, 0x18, 0x92, 0x0f, 0x92, 0x19, 0x1c, 0x87, - 0x9a, 0x02, 0x99, 0x81, 0x10, 0xa0, 0x16, 0x9f, 0x22, 0x89, 0x88, 0x01, 0xaa, 0x23, 0x2c, 0xa5, - 0x8b, 0x41, 0xa9, 0x11, 0xbc, 0x15, 0x2a, 0xf9, 0x42, 0x89, 0x80, 0x08, 0x98, 0x8d, 0x24, 0x91, - 0x1d, 0x01, 0xa1, 0x3a, 0xab, 0x87, 0x1a, 0xb2, 0x18, 0x99, 0x4b, 0x82, 0xc2, 0x4c, 0x95, 0x29, - 0x09, 0xf0, 0x48, 0x89, 0x81, 0xa1, 0x29, 0xe8, 0x30, 0xc8, 0x40, 0xa1, 0x21, 0x2d, 0xd1, 0x28, - 0xb8, 0x51, 0x98, 0x18, 0x88, 0x19, 0xb2, 0xeb, 0x71, 0xc8, 0x21, 0x88, 0x00, 0x91, 0x8a, 0x43, - 0xea, 0x48, 0xa8, 0x14, 0x9f, 0x12, 0x08, 0xa0, 0x11, 0x88, 0x1c, 0x92, 0x80, 0xc0, 0x79, 0x91, - 0x90, 0x1e, 0xa3, 0x10, 0x0a, 0x14, 0x9d, 0x98, 0x63, 0xa8, 0x39, 0xb8, 0x11, 0x8b, 0x33, 0xcb, - 0xb3, 0x5f, 0x93, 0x8b, 0x19, 0x07, 0x8b, 0x00, 0x88, 0xb2, 0x4c, 0x01, 0xca, 0x50, 0x80, 0xa1, - 0x80, 0x2b, 0x92, 0xb9, 0x73, 0xb0, 0x3a, 0xb2, 0x10, 0xfa, 0x49, 0x83, 0xdb, 0x41, 0xa8, 0x32, - 0x9d, 0x83, 0x21, 0x9c, 0x17, 0xbb, 0x18, 0x88, 0x92, 0x0c, 0x42, 0xb8, 0x14, 0x8a, 0xa0, 0x78, - 0xc9, 0x23, 0x18, 0xaa, 0x18, 0xe2, 0x1d, 0x10, 0xb3, 0x79, 0xb0, 0x21, 0xc9, 0x10, 0xb0, 0x52, - 0x90, 0x0a, 0xa1, 0x99, 0x5e, 0xa4, 0x2c, 0xb2, 0x1a, 0x01, 0xa1, 0x71, 0xc8, 0x18, 0x02, 0x99, - 0x28, 0xd8, 0x38, 0xa9, 0x71, 0xd1, 0x20, 0x89, 0x08, 0x12, 0xda, 0x10, 0xa1, 0x2e, 0x83, 0x28, - 0xac, 0x43, 0xb8, 0xba, 0x54, 0xa8, 0x88, 0x19, 0x13, 0x0a, 0xb2, 0xba, 0x7a, 0x90, 0x23, 0x08, - 0xf1, 0x7c, 0xb8, 0x22, 0x0b, 0x82, 0x92, 0x8f, 0x02, 0x0b, 0x82, 0x09, 0x19, 0x80, 0x72, 0xd9, - 0x41, 0x90, 0x90, 0x29, 0xd9, 0x42, 0xbb, 0x31, 0xca, 0x31, 0xcb, 0x51, 0x84, 0x0d, 0x03, 0xba, - 0x41, 0x89, 0x94, 0x8c, 0x13, 0x90, 0x9e, 0x00, 0x81, 0x20, 0x19, 0xf3, 0x3a, 0x82, 0x98, 0x41, - 0xab, 0x85, 0x2b, 0x91, 0x87, 0x8f, 0x92, 0x3a, 0xa4, 0x09, 0x29, 0xc2, 0x38, 0xa8, 0x38, 0x05, - 0x0d, 0xb1, 0x19, 0x49, 0xd4, 0x29, 0x88, 0x8a, 0x85, 0x08, 0x1a, 0x83, 0xb1, 0x2f, 0x93, 0x19, - 0xa1, 0x48, 0x0a, 0xfc, 0x32, 0xc9, 0x42, 0x99, 0xa1, 0x22, 0xaf, 0x13, 0x9a, 0x12, 0x11, 0xb8, - 0x30, 0xcb, 0x07, 0x8c, 0x11, 0xa9, 0x85, 0x3c, 0xc0, 0x00, 0x28, 0xb1, 0x58, 0xb1, 0x50, 0xd8, - 0x10, 0x88, 0xb9, 0x54, 0xba, 0x21, 0x8a, 0x22, 0x80, 0x8e, 0x04, 0x9d, 0x04, 0x29, 0xa1, 0xa0, - 0x5b, 0xc0, 0x89, 0x33, 0x1a, 0xc2, 0x02, 0xa9, 0x0f, 0x13, 0x23, 0xe8, 0x39, 0xa9, 0xe9, 0x01, - 0x60, 0xb9, 0x04, 0x1b, 0x93, 0x0a, 0x10, 0xa6, 0x2e, 0xb2, 0x1a, 0x81, 0x01, 0x20, 0xf8, 0x29, - 0x02, 0xba, 0x22, 0x8c, 0x14, 0x89, 0x00, 0x00, 0x39, 0x95, 0x8f, 0xa1, 0x00, 0x49, 0xc8, 0x83, - 0x0f, 0x04, 0x18, 0xa8, 0x90, 0x3c, 0x94, 0x0a, 0x91, 0x10, 0x1b, 0xd8, 0x20, 0x8b, 0x07, 0x1a, - 0x09, 0x83, 0x2a, 0xb1, 0x12, 0xf3, 0x4a, 0x1b, 0xf3, 0x28, 0x3c, 0xe2, 0x11, 0x2a, 0xd2, 0x38, - 0xd0, 0x21, 0x0b, 0x93, 0x60, 0xd8, 0x00, 0x8b, 0x12, 0x01, 0x3c, 0xa2, 0xba, 0x78, 0xa0, 0x02, - 0xa9, 0x30, 0x81, 0xa2, 0x3c, 0xd4, 0x2b, 0x90, 0x91, 0xbf, 0x24, 0x41, 0xf9, 0x11, 0x1b, 0x82, - 0x19, 0x82, 0x02, 0xbe, 0x13, 0xab, 0x09, 0x23, 0x2d, 0xc6, 0x49, 0x00, 0xd0, 0x30, 0xb8, 0x40, - 0x91, 0x1a, 0xb2, 0x9d, 0x42, 0xe8, 0x3b, 0x95, 0x3a, 0xd0, 0x30, 0x1a, 0xa5, 0x3a, 0xb1, 0x19, - 0x88, 0x13, 0xbb, 0x81, 0x1f, 0xb6, 0x29, 0x18, 0xa8, 0x03, 0x1c, 0xc9, 0x37, 0x8d, 0x83, 0x1a, - 0x90, 0x18, 0xc8, 0x52, 0xcb, 0x31, 0xa9, 0x52, 0x9a, 0xa0, 0x28, 0xcb, 0x46, 0xaa, 0x13, 0x89, - 0xa8, 0x42, 0xca, 0x51, 0xb9, 0x81, 0x1b, 0x80, 0x15, 0x0c, 0x88, 0x22, 0xba, 0x32, 0x2b, 0x87, - 0xab, 0x98, 0x04, 0x8e, 0x17, 0x8b, 0x81, 0x89, 0x09, 0x05, 0x0e, 0x04, 0x8a, 0x00, 0xb0, 0x29, - 0x92, 0x79, 0xd2, 0x28, 0x98, 0xa8, 0x49, 0xb3, 0x7b, 0xc1, 0x38, 0x99, 0xa2, 0x1c, 0x03, 0x80, - 0x1a, 0x94, 0x9c, 0x33, 0xbc, 0x25, 0xab, 0x21, 0x95, 0x0f, 0x92, 0x19, 0x93, 0x8c, 0x44, 0xea, - 0x38, 0x91, 0x09, 0x12, 0xba, 0x48, 0xb0, 0x28, 0x99, 0x12, 0xad, 0x32, 0xb3, 0x4e, 0x93, 0xaa, - 0x1a, 0x52, 0xe1, 0x3a, 0x83, 0xc9, 0x48, 0xaa, 0x23, 0xd9, 0x59, 0xa2, 0x8c, 0x25, 0xb9, 0x81, - 0x09, 0x41, 0xf8, 0x39, 0x81, 0x9a, 0x24, 0x9d, 0x85, 0x9a, 0x30, 0xb1, 0x0a, 0x22, 0x89, 0xb2, - 0x5a, 0x04, 0x8e, 0x12, 0xaa, 0x22, 0xb9, 0x3e, 0xc5, 0x3a, 0xa0, 0x11, 0x84, 0x2b, 0xa2, 0xcb, - 0x71, 0xc0, 0x49, 0x90, 0x9a, 0x83, 0x2b, 0xa2, 0x21, 0x28, 0x88, 0xb5, 0x0e, 0x31, 0xf3, 0x38, - 0x99, 0x8a, 0x06, 0x8b, 0x81, 0xa9, 0x45, 0xac, 0x13, 0xba, 0x41, 0x02, 0xcb, 0x24, 0x0b, 0x02, - 0xac, 0x18, 0x84, 0x1c, 0xb1, 0x7b, 0xd1, 0x29, 0x91, 0x09, 0x21, 0x85, 0x8a, 0xa2, 0x40, 0xf8, - 0x20, 0x0a, 0x81, 0xa0, 0x3c, 0xd2, 0x0a, 0x23, 0x0a, 0xb3, 0x12, 0x7b, 0xd9, 0x31, 0x88, 0x11, - 0xb9, 0x0b, 0x04, 0xce, 0x52, 0xb0, 0x20, 0x9b, 0x97, 0x8a, 0x32, 0x81, 0xad, 0x25, 0x8c, 0x01, - 0x88, 0x2a, 0xc3, 0x1d, 0x83, 0x8c, 0x11, 0x02, 0x90, 0x8b, 0x42, 0xe2, 0x30, 0x89, 0xc0, 0x19, - 0x01, 0x9b, 0x80, 0x07, 0x1e, 0x94, 0x1d, 0x03, 0x9a, 0x02, 0x00, 0x8e, 0x94, 0x3b, 0xa3, 0x89, - 0x30, 0xf8, 0x48, 0xb1, 0x1a, 0x91, 0x18, 0x62, 0xfa, 0x31, 0x8a, 0x98, 0x11, 0x1b, 0x12, 0xa1, - 0x30, 0x8e, 0xb5, 0x5a, 0xa1, 0x8a, 0x02, 0x9b, 0x21, 0xb4, 0x3f, 0xe4, 0x39, 0xa1, 0x29, 0x12, - 0xb8, 0x78, 0xe8, 0x28, 0x91, 0x89, 0x11, 0xa8, 0x20, 0xb8, 0x41, 0xd8, 0x31, 0x01, 0xab, 0xa1, - 0x22, 0x1c, 0xc9, 0x21, 0x85, 0x1a, 0x90, 0x15, 0xdf, 0x31, 0x99, 0x11, 0x08, 0x90, 0x20, 0xbe, - 0x17, 0x9b, 0x23, 0x99, 0x80, 0x09, 0xac, 0x27, 0x0c, 0x93, 0x09, 0xa8, 0x20, 0xa2, 0x39, 0xcc, - 0x33, 0x89, 0x88, 0x70, 0xc0, 0x19, 0x94, 0x1b, 0x01, 0xab, 0x97, 0x3b, 0x08, 0x95, 0x9b, 0x85, - 0x1e, 0xa4, 0x29, 0x09, 0x92, 0x4a, 0x91, 0x09, 0xc9, 0x31, 0x9b, 0x82, 0x91, 0x2f, 0xb4, 0x38, - 0x2a, 0xb6, 0x29, 0x98, 0x9b, 0x86, 0x3a, 0xa6, 0x2c, 0xb2, 0x2a, 0xc8, 0x04, 0x3c, 0xc5, 0x29, - 0x90, 0x18, 0x98, 0x32, 0x8c, 0xb2, 0x73, 0xba, 0x03, 0xa9, 0x0b, 0x80, 0x42, 0xa2, 0x4b, 0xd4, - 0x19, 0x01, 0xd9, 0x52, 0xc8, 0x38, 0x98, 0x91, 0x83, 0x1c, 0x00, 0x92, 0x3e, 0xe1, 0x18, 0x20, - 0x09, 0x89, 0xd8, 0x50, 0x9b, 0x06, 0x1a, 0x12, 0x8c, 0x81, 0x01, 0x9e, 0x13, 0x9b, 0x85, 0x19, - 0xb1, 0x9f, 0x31, 0x03, 0x1a, 0xa4, 0x9a, 0x48, 0xba, 0x06, 0x1b, 0xa2, 0x0a, 0x91, 0x1c, 0x02, - 0x37, 0x9e, 0x02, 0x9a, 0x93, 0x4c, 0xc3, 0x39, 0xa9, 0x94, 0x4c, 0xb1, 0x38, 0xa0, 0x0c, 0x43, - 0xca, 0x03, 0x8c, 0x10, 0xb3, 0x7b, 0x93, 0xab, 0x05, 0x8c, 0x00, 0x88, 0x32, 0x82, 0xae, 0x02, - 0x9a, 0x91, 0x78, 0xa1, 0x48, 0xa0, 0x80, 0x1e, 0xa3, 0x20, 0xb9, 0x00, 0x0a, 0x63, 0xe8, 0x08, - 0x30, 0xc8, 0x22, 0xab, 0x01, 0x85, 0x8f, 0x22, 0x09, 0x97, 0x0a, 0x89, 0x93, 0x2d, 0xa2, 0x1a, - 0x80, 0x22, 0xc9, 0x03, 0x3c, 0x81, 0x9a, 0x82, 0x44, 0xae, 0x31, 0xf8, 0x33, 0x9e, 0x90, 0x13, - 0x8a, 0x05, 0xb9, 0x30, 0x08, 0xb8, 0xb3, 0x6e, 0xb2, 0x09, 0x28, 0xd8, 0x48, 0xa1, 0x09, 0x92, - 0x2a, 0x63, 0xb0, 0xa9, 0x1a, 0x82, 0x1b, 0x93, 0xa4, 0x0b, 0x53, 0xba, 0xf1, 0x60, 0x9a, 0x84, - 0x88, 0x49, 0xe2, 0x91, 0x6a, 0xa0, 0x08, 0x90, 0x21, 0xad, 0x13, 0x0b, 0xa5, 0x5b, 0xa1, 0x12, - 0x0b, 0x85, 0x8c, 0x98, 0x40, 0xb0, 0x81, 0x50, 0xcb, 0x11, 0x08, 0x20, 0x82, 0x99, 0xa2, 0x18, - 0xbf, 0x32, 0x13, 0xcf, 0x13, 0x89, 0x89, 0x23, 0x9e, 0x85, 0x0b, 0x35, 0xc9, 0x4a, 0xa2, 0x8a, - 0x0a, 0xa1, 0x45, 0xbb, 0x33, 0xeb, 0x38, 0x02, 0xb1, 0x2a, 0xca, 0x64, 0xc0, 0x19, 0x29, 0xc4, - 0x3a, 0x92, 0x8b, 0x89, 0x06, 0x9a, 0x81, 0x58, 0xc0, 0x38, 0xb3, 0x1a, 0x02, 0xaa, 0x14, 0xae, - 0x89, 0x27, 0x9a, 0x81, 0xa9, 0x02, 0x4c, 0x04, 0xd9, 0x19, 0x24, 0x8d, 0xa2, 0x1a, 0x92, 0x4a, - 0x91, 0x05, 0x8f, 0x82, 0x09, 0xa1, 0x60, 0xb0, 0x28, 0x98, 0x8a, 0x31, 0x88, 0x05, 0x9c, 0x0a, - 0x87, 0x2b, 0xb4, 0x2a, 0x92, 0x0a, 0x01, 0xd0, 0x4e, 0xb3, 0x3b, 0xa1, 0x22, 0x9b, 0x96, 0x0c, - 0xa3, 0x58, 0xf2, 0x39, 0xb9, 0x23, 0x0b, 0x91, 0x43, 0xb9, 0x10, 0x8e, 0xa3, 0x29, 0x32, 0xe2, - 0x49, 0xb8, 0xab, 0x23, 0x1a, 0x16, 0xea, 0x28, 0x11, 0x92, 0x0c, 0x81, 0x93, 0x1d, 0x93, 0xf9, - 0x68, 0xa0, 0x80, 0x1a, 0x92, 0x28, 0xb8, 0x22, 0x0d, 0xb5, 0x4a, 0xa1, 0x00, 0x48, 0xc1, 0x09, - 0xa0, 0x3b, 0x96, 0x0c, 0x03, 0x9c, 0x34, 0x8b, 0x01, 0x80, 0x8f, 0x85, 0x0b, 0x13, 0x99, 0x98, - 0x98, 0x60, 0x83, 0x0c, 0xb1, 0x99, 0x19, 0x58, 0xe2, 0x11, 0x1c, 0xa5, 0x2c, 0x83, 0x11, 0x9c, - 0x82, 0x8e, 0x93, 0x2b, 0x03, 0x82, 0x8d, 0xa3, 0x3b, 0x09, 0x07, 0xa9, 0x2a, 0x26, 0xc8, 0x8b, - 0x13, 0xab, 0x01, 0x81, 0x4a, 0xe8, 0x33, 0x28, 0xad, 0x13, 0xa1, 0x3b, 0xac, 0x27, 0xb8, 0x2b, - 0xa2, 0x99, 0x4b, 0xb2, 0x69, 0xa8, 0x33, 0xb1, 0x5a, 0x01, 0xe9, 0x3c, 0x06, 0x99, 0x99, 0x90, - 0x29, 0x1e, 0x86, 0x89, 0x8a, 0x24, 0x99, 0x91, 0x6a, 0xb2, 0x31, 0xbf, 0x04, 0x8b, 0x11, 0x13, - 0xcd, 0x21, 0xa3, 0x29, 0x89, 0xb3, 0x0c, 0x88, 0x23, 0xea, 0x63, 0x99, 0xc0, 0x40, 0xa8, 0x04, - 0x0d, 0x91, 0x02, 0x9a, 0x32, 0xbd, 0x14, 0x09, 0x90, 0x91, 0x1b, 0x15, 0x9b, 0x03, 0x18, 0xc5, - 0x39, 0xbc, 0xc3, 0x0c, 0x62, 0xc2, 0x69, 0x90, 0x99, 0x10, 0x88, 0x10, 0x93, 0x2f, 0xc2, 0x1a, - 0x88, 0x10, 0x39, 0x97, 0x3b, 0xf8, 0x38, 0x99, 0x04, 0x29, 0xe2, 0x19, 0x00, 0x92, 0x3a, 0xf1, - 0x28, 0x98, 0x0a, 0x04, 0x8c, 0x21, 0xa2, 0x2b, 0x82, 0x0a, 0x82, 0x31, 0x73, 0xf0, 0x5c, 0xb9, - 0x12, 0x19, 0xc9, 0x22, 0xaa, 0x14, 0x08, 0xd0, 0x60, 0x98, 0x80, 0x39, 0xf2, 0x29, 0x90, 0x10, - 0xa8, 0x20, 0xb8, 0xaa, 0x74, 0xc8, 0x33, 0xda, 0x28, 0x80, 0x08, 0x22, 0xdb, 0x43, 0xcb, 0x21, - 0x99, 0x01, 0x10, 0xca, 0x11, 0x3a, 0xb4, 0x0a, 0x61, 0xa5, 0x0d, 0x92, 0x11, 0x1d, 0xd3, 0x3a, - 0x80, 0x08, 0x0a, 0x97, 0x0c, 0x14, 0x99, 0xa9, 0x58, 0x92, 0x09, 0x00, 0x94, 0x8f, 0x03, 0x09, - 0x89, 0xa2, 0x3a, 0xc2, 0x1c, 0x85, 0x09, 0x0a, 0x04, 0x12, 0x8f, 0x83, 0x99, 0x19, 0x00, 0xb1, - 0x91, 0x3e, 0xa5, 0x8b, 0x81, 0x7a, 0xa1, 0x39, 0x83, 0xb9, 0x2f, 0xa4, 0x2c, 0x91, 0x08, 0x18, - 0xc1, 0x59, 0xa1, 0x11, 0x8c, 0xa0, 0x12, 0x1e, 0x05, 0x9b, 0x82, 0x49, 0xbc, 0x06, 0x29, 0xa8, - 0x21, 0xa9, 0x29, 0xa0, 0xbb, 0x27, 0x0a, 0x11, 0xb8, 0x2a, 0xaa, 0x73, 0xe8, 0x22, 0x29, 0xc0, - 0x80, 0x0e, 0x04, 0x89, 0x18, 0x99, 0x90, 0x22, 0x60, 0xb8, 0x83, 0x0c, 0xca, 0x33, 0x9b, 0x17, - 0x8d, 0xa2, 0x51, 0x99, 0x98, 0x20, 0xd4, 0x4b, 0xb2, 0x1a, 0x21, 0x19, 0x92, 0xab, 0x7b, 0xb4, - 0x2c, 0xb1, 0x29, 0xb1, 0x32, 0x13, 0xbf, 0x62, 0xc8, 0x11, 0x2a, 0xb0, 0x13, 0x0f, 0xa3, 0x20, - 0xaa, 0xa1, 0x30, 0xa8, 0x52, 0xb9, 0x10, 0x0c, 0xc3, 0x1b, 0x71, 0xa4, 0x4a, 0xc1, 0x0a, 0x23, - 0xbb, 0x33, 0xdc, 0x49, 0x90, 0x18, 0x86, 0x0e, 0x92, 0x18, 0x18, 0xc2, 0x49, 0xd9, 0x21, 0x81, - 0x89, 0x11, 0xc9, 0x58, 0xd9, 0x12, 0x0a, 0xa1, 0x01, 0x1a, 0x13, 0x53, 0xba, 0xc1, 0x3a, 0xd2, - 0x18, 0x3b, 0x87, 0x89, 0x89, 0xa1, 0x2d, 0xa1, 0x70, 0x92, 0x0c, 0x83, 0xa8, 0x50, 0xa1, 0xbb, - 0x11, 0x1f, 0xa6, 0x1a, 0x91, 0x09, 0x92, 0x18, 0x62, 0xb0, 0x41, 0x9a, 0xd0, 0x19, 0x29, 0x95, - 0x0c, 0x84, 0xac, 0x22, 0x90, 0x40, 0xd0, 0x59, 0x91, 0x8a, 0x01, 0x0a, 0x85, 0x0c, 0x11, 0xe8, - 0x4a, 0x92, 0x1b, 0x94, 0x39, 0xa0, 0xb9, 0x63, 0xab, 0x02, 0x08, 0x0b, 0x93, 0x70, 0xb2, 0x18, - 0x90, 0x0a, 0xb2, 0x9f, 0x52, 0xdb, 0x24, 0xa9, 0x30, 0xc8, 0x38, 0xb2, 0x1e, 0x84, 0x0a, 0x38, - 0xf1, 0x29, 0xb1, 0x51, 0xb0, 0x09, 0x02, 0x99, 0x38, 0xb2, 0x50, 0xf8, 0x38, 0xc8, 0x00, 0x29, - 0x01, 0xb8, 0x38, 0x07, 0x9f, 0x14, 0x89, 0x01, 0xa9, 0x28, 0xd8, 0x29, 0x01, 0x89, 0x33, 0xfb, - 0x43, 0xbb, 0x41, 0xa9, 0x09, 0x24, 0x99, 0x02, 0xbd, 0x03, 0x0b, 0x83, 0x92, 0x1f, 0x95, 0x0b, - 0x95, 0x3a, 0xc1, 0x28, 0xb0, 0x3a, 0x09, 0xa3, 0x78, 0xfb, 0x50, 0x98, 0x08, 0x82, 0x1a, 0x93, - 0x0a, 0x84, 0xad, 0x30, 0xd8, 0x40, 0xb8, 0x20, 0x82, 0xad, 0x43, 0xc9, 0x50, 0x91, 0x51, 0xf9, - 0x18, 0x90, 0x08, 0x10, 0x98, 0x28, 0xd0, 0x41, 0xa9, 0x18, 0x13, 0x19, 0xc0, 0x2a, 0xb1, 0xca, - 0x71, 0xb0, 0x40, 0x99, 0x01, 0xaa, 0x52, 0xa2, 0x1a, 0xac, 0x94, 0x60, 0xca, 0x32, 0x9c, 0x83, - 0x1a, 0x91, 0x20, 0xf9, 0x31, 0x9a, 0x21, 0x9a, 0x97, 0x3c, 0xa2, 0xb2, 0x4c, 0x02, 0xda, 0x11, - 0x19, 0xb9, 0x32, 0xd9, 0x2b, 0x16, 0x08, 0x9a, 0x93, 0x0f, 0x23, 0xa0, 0x18, 0xbb, 0x91, 0x5c, - 0x83, 0xb0, 0x0f, 0x04, 0x0d, 0x84, 0x0b, 0x11, 0x83, 0x8b, 0x00, 0x8c, 0x15, 0x89, 0xb9, 0x1a, - 0x04, 0x08, 0x8d, 0x94, 0x19, 0x13, 0x9f, 0x03, 0x19, 0x02, 0x18, 0xfa, 0x3a, 0x02, 0xb9, 0x34, - 0xbb, 0x0d, 0x86, 0x3a, 0xe3, 0x39, 0x81, 0x99, 0x09, 0xb2, 0x5a, 0xba, 0x32, 0x99, 0x91, 0x46, - 0xd8, 0x19, 0x29, 0xd2, 0x30, 0xc1, 0x2a, 0xa2, 0xac, 0x47, 0xb9, 0x10, 0xc1, 0x3b, 0xd2, 0x20, - 0x02, 0xa9, 0x72, 0xc8, 0x2a, 0xa2, 0x38, 0xa3, 0x8e, 0x04, 0x99, 0x0a, 0x94, 0x8a, 0x01, 0x11, - 0xfb, 0x41, 0x01, 0x9a, 0x19, 0x23, 0xa0, 0x2b, 0xe1, 0xac, 0x55, 0xba, 0x10, 0x08, 0x40, 0xa4, - 0x0c, 0x82, 0x99, 0x40, 0xc8, 0x00, 0x90, 0x60, 0xf0, 0x18, 0x90, 0x08, 0x11, 0x01, 0x89, 0x2a, - 0x84, 0xac, 0x25, 0x9b, 0x12, 0x9c, 0x11, 0xb2, 0xbf, 0x05, 0x09, 0x11, 0xc0, 0x20, 0x99, 0x73, - 0xb0, 0x0b, 0x32, 0xaa, 0x10, 0xaa, 0x31, 0xd2, 0x1d, 0x03, 0xb1, 0x3b, 0x99, 0x91, 0x31, 0x25, - 0x39, 0xf1, 0x29, 0x90, 0xbb, 0x31, 0xd1, 0x3c, 0xa5, 0x30, 0xc1, 0x3a, 0x94, 0x9e, 0x21, 0xa0, - 0x30, 0xaa, 0x01, 0x99, 0x5b, 0xa3, 0x9b, 0x44, 0x90, 0x59, 0xb0, 0x3a, 0xf1, 0x0c, 0x11, 0xa0, - 0x70, 0x91, 0x99, 0xa9, 0x38, 0xb2, 0x63, 0x01, 0x90, 0x9b, 0x92, 0x9c, 0xd9, 0x41, 0x9a, 0x33, - 0xbb, 0x93, 0x4b, 0x99, 0x27, 0xbb, 0x12, 0x8c, 0x05, 0x99, 0x09, 0x03, 0xa9, 0x1d, 0xa2, 0xa8, - 0x29, 0x43, 0xbb, 0x35, 0x2a, 0xa0, 0x91, 0x1b, 0xc2, 0x2a, 0x03, 0xac, 0x04, 0x3d, 0xa4, 0x0b, - 0x0b, 0x15, 0x19, 0x94, 0x1d, 0xa2, 0x29, 0x92, 0xb8, 0x2c, 0xb8, 0x30, 0xc0, 0x30, 0x03, 0xbd, - 0x32, 0xb9, 0x30, 0x11, 0x13, 0x30, 0xca, 0x01, 0x0a, 0xd9, 0x30, 0xb3, 0x9d, 0x13, 0xb9, 0x09, - 0x21, 0x32, 0xba, 0x52, 0xb1, 0x9b, 0x04, 0x1a, 0x12, 0x9a, 0x43, 0xca, 0x00, 0x00, 0x10, 0xa3, - 0x1b, 0x93, 0x9a, 0x32, 0xb9, 0x39, 0x01, 0x2a, 0xb2, 0xab, 0x04, 0x0a, 0x11, 0x91, 0x39, 0xa1, - 0x10, 0x9a, 0x01, 0x19, 0x00, 0x92, 0x0c, 0x04, 0x1b, 0x92, 0x9a, 0x10, 0x9b, 0x33, 0xa0, 0x1a, - 0x92, 0x0b, 0x04, 0x0a, 0x12, 0x99, 0x99, 0x90, 0x2a, 0xb0, 0x31, 0x93, 0x09, 0x99, 0xa0, 0x11, - 0x09, 0x23, 0x90, 0xa9, 0x11, 0x9a, 0x91, 0x29, 0x91, 0x99, 0x11, 0xa0, 0x20, 0x01, 0x10, 0x91, - 0x09, 0x90, 0x99, 0x10, 0x99, 0x11, 0x91, 0x10, 0x90, 0x10, 0x09, 0x91, 0x19, 0x91, 0x10, 0x09, - 0x91, 0x09, 0x10, 0x00, 0x00, 0x90, 0x10, 0x90, 0x10, 0x00, 0x09, 0x01, 0x90, 0x10, 0x09, 0x10, - 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0x34, 0x06, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x77, 0x7f, 0x77, 0x4c, 0xf5, 0x19, 0xb5, 0x2f, - 0x92, 0x10, 0xa8, 0xcc, 0x75, 0xf8, 0x48, 0x81, 0x99, 0x28, 0xa8, 0x69, 0xc0, 0x12, 0x89, 0x99, - 0x82, 0x31, 0x06, 0x9e, 0x31, 0xba, 0x23, 0x9b, 0xa8, 0x52, 0xb8, 0x50, 0xb9, 0x93, 0x1a, 0x4a, - 0xb4, 0x0b, 0x93, 0x28, 0x11, 0xf9, 0x11, 0x3c, 0x94, 0x0c, 0x83, 0x9b, 0x12, 0x80, 0x28, 0x95, - 0x8f, 0x86, 0x8b, 0x12, 0x9b, 0x43, 0xc9, 0x19, 0x93, 0x88, 0x49, 0xb9, 0x84, 0x3d, 0xd1, 0x51, - 0xd9, 0x21, 0xa8, 0x31, 0xf8, 0x30, 0x98, 0x90, 0x20, 0x99, 0xa1, 0x2b, 0x85, 0x5a, 0xc1, 0x0a, - 0x30, 0xa8, 0xc1, 0x50, 0x89, 0xa0, 0x21, 0xd8, 0x7a, 0xa2, 0x10, 0x89, 0xc0, 0x5b, 0xa2, 0x00, - 0x88, 0x28, 0xac, 0x17, 0x8d, 0x04, 0x0c, 0x93, 0x8b, 0x31, 0xb1, 0x4b, 0xd1, 0x59, 0xb1, 0x29, - 0x88, 0x81, 0x98, 0x79, 0xc1, 0x10, 0x1a, 0x28, 0xd3, 0x19, 0x32, 0xbf, 0x13, 0xa1, 0x31, 0x0f, - 0xa3, 0x89, 0x28, 0x00, 0x9c, 0x86, 0x9a, 0x22, 0xca, 0x33, 0x0f, 0x82, 0x1a, 0x82, 0x98, 0x08, - 0x40, 0xa8, 0x1a, 0xc3, 0x59, 0xd1, 0x89, 0x52, 0x99, 0x41, 0xcb, 0x93, 0x1b, 0x42, 0xe1, 0x28, - 0xa8, 0x68, 0xe1, 0x29, 0x93, 0x3b, 0xe3, 0x38, 0xb8, 0x19, 0x82, 0x18, 0x11, 0x9f, 0x13, 0x8b, - 0x92, 0x92, 0x2b, 0x1b, 0x87, 0xcb, 0x51, 0x88, 0x98, 0x87, 0x8c, 0x31, 0xa8, 0x12, 0x89, 0xc8, - 0x28, 0x09, 0x83, 0xcb, 0x34, 0x60, 0xd0, 0x08, 0xcb, 0x34, 0xa8, 0x49, 0xf1, 0x28, 0x90, 0x18, - 0x98, 0x32, 0x8d, 0x02, 0xca, 0x40, 0xb1, 0x28, 0x81, 0xa8, 0x3a, 0x32, 0xf8, 0x0b, 0x34, 0x93, - 0x1b, 0xbc, 0xd2, 0x52, 0x80, 0x29, 0xc8, 0x0c, 0x05, 0x8a, 0x82, 0x19, 0xa8, 0x16, 0xbd, 0x28, - 0x21, 0x01, 0xb9, 0x87, 0x9f, 0x04, 0x88, 0x09, 0x92, 0x11, 0x8b, 0xc2, 0x7b, 0xa2, 0xa8, 0x52, - 0xa0, 0x1c, 0x80, 0x82, 0x09, 0x10, 0x9a, 0x0a, 0x87, 0x0e, 0x03, 0x8b, 0x01, 0x84, 0x9d, 0x29, - 0x85, 0x99, 0x53, 0xca, 0x10, 0x8a, 0x33, 0x0c, 0xc1, 0x61, 0xa9, 0x91, 0x4b, 0xb2, 0x40, 0xaa, - 0x83, 0x0d, 0x01, 0x80, 0x82, 0xca, 0x20, 0x24, 0xcb, 0x11, 0xab, 0x48, 0x86, 0x0a, 0xaa, 0x03, - 0x20, 0x14, 0xbf, 0x22, 0x12, 0x0d, 0xd0, 0x49, 0x85, 0x1b, 0xc1, 0x1a, 0x82, 0x18, 0x24, 0xba, - 0xea, 0x51, 0xb0, 0x4b, 0x92, 0x90, 0x5a, 0xb0, 0x29, 0xa0, 0x71, 0xc1, 0x89, 0x81, 0x08, 0x13, - 0x1b, 0x14, 0xcf, 0x12, 0x80, 0x99, 0x61, 0xb9, 0x31, 0xc0, 0x1b, 0x85, 0x09, 0x88, 0x13, 0x8e, - 0x91, 0x48, 0xc3, 0x3c, 0x89, 0x97, 0x2b, 0x90, 0x10, 0xc0, 0x38, 0x83, 0xcb, 0x08, 0x34, 0x0e, - 0x82, 0x9b, 0x51, 0xd0, 0x38, 0xa0, 0x10, 0x98, 0x60, 0xcb, 0x12, 0xa8, 0x70, 0xc0, 0x30, 0xd8, - 0x20, 0x88, 0x08, 0x80, 0x88, 0x24, 0xbd, 0x01, 0x10, 0x82, 0x20, 0xe9, 0x2a, 0xa3, 0x4b, 0xa2, - 0xf0, 0x61, 0x09, 0xc8, 0x10, 0x0a, 0x05, 0x0b, 0x92, 0x8a, 0x19, 0x83, 0x23, 0xad, 0x30, 0x11, - 0xfa, 0x1c, 0x16, 0xb9, 0x42, 0xda, 0x21, 0x8b, 0x04, 0x00, 0x9b, 0x80, 0x52, 0xe9, 0x38, 0xb0, - 0x48, 0xa1, 0x38, 0xea, 0x30, 0xb1, 0x20, 0x89, 0x89, 0xa8, 0x32, 0x81, 0x9c, 0xa5, 0x7c, 0xc2, - 0x08, 0xa1, 0x49, 0x03, 0xa8, 0x8d, 0x80, 0x00, 0x51, 0xd8, 0x11, 0x09, 0xa0, 0x31, 0xcf, 0x86, - 0x18, 0xa8, 0x00, 0x90, 0x48, 0xb0, 0x30, 0xca, 0x14, 0x08, 0xbb, 0x33, 0xbd, 0x17, 0x3b, 0xc9, - 0x20, 0xa1, 0x5b, 0x02, 0xba, 0x91, 0x6b, 0xb0, 0x20, 0x80, 0x38, 0xf1, 0x10, 0x0f, 0x84, 0x88, - 0x00, 0xa0, 0x19, 0x13, 0x8b, 0x89, 0x07, 0x8d, 0x13, 0x9d, 0x83, 0x19, 0x08, 0xb2, 0x30, 0x8d, - 0x22, 0xb8, 0x02, 0x0d, 0x42, 0xf2, 0x4c, 0xc1, 0x20, 0xb1, 0x69, 0xb8, 0x10, 0xb0, 0x4a, 0x02, - 0x99, 0x90, 0x48, 0xd3, 0x3e, 0xb4, 0x3a, 0xa1, 0x28, 0xc9, 0x00, 0x38, 0x12, 0xf0, 0x28, 0xa9, - 0x21, 0x0c, 0x87, 0x8a, 0x18, 0x13, 0xcb, 0x0a, 0x53, 0xb8, 0x31, 0xfa, 0x22, 0xab, 0x34, 0xd9, - 0x01, 0x19, 0x13, 0xbe, 0x42, 0xb9, 0x43, 0xcb, 0x31, 0xca, 0x31, 0x80, 0x80, 0xad, 0x53, 0xc8, - 0x30, 0x9c, 0x05, 0x89, 0x02, 0x9a, 0x01, 0x98, 0x20, 0xa4, 0x1c, 0x00, 0x42, 0xdd, 0x22, 0x9a, - 0x33, 0xfa, 0x40, 0xa9, 0x00, 0x81, 0x10, 0x9d, 0x05, 0x9a, 0x92, 0x0c, 0x15, 0x99, 0x00, 0x9a, - 0x24, 0xbb, 0x53, 0xa8, 0x10, 0x89, 0x03, 0xc8, 0x4c, 0xc2, 0x41, 0xb8, 0x3a, 0xd3, 0x1c, 0xa2, - 0x38, 0x9a, 0x23, 0xf1, 0x29, 0x98, 0x72, 0xd0, 0x20, 0x9a, 0x20, 0x9a, 0x02, 0x42, 0x1b, 0xfa, - 0x52, 0x8d, 0x02, 0x90, 0x10, 0xba, 0x52, 0x99, 0x90, 0x39, 0x87, 0x9b, 0x03, 0x9b, 0x81, 0x40, - 0x10, 0xfa, 0x21, 0x2b, 0xc8, 0x82, 0x21, 0x09, 0xa3, 0x9f, 0x84, 0x8a, 0x79, 0xb0, 0x18, 0x91, - 0x2b, 0x93, 0x8a, 0x23, 0x34, 0x9c, 0x99, 0xf3, 0x70, 0xa8, 0x10, 0x81, 0x9c, 0x11, 0x82, 0x0f, - 0x83, 0x2b, 0xb4, 0x9c, 0x22, 0xa0, 0x42, 0x0d, 0xa1, 0x88, 0x19, 0x11, 0xa2, 0x4d, 0x92, 0xc0, - 0x5a, 0xb1, 0x31, 0x19, 0xa1, 0xc9, 0x58, 0x02, 0x0a, 0xd9, 0x48, 0xa8, 0x59, 0xb0, 0x2a, 0xf3, - 0x5a, 0x91, 0x99, 0x3a, 0xb4, 0x40, 0xa9, 0x32, 0x8c, 0x13, 0xbe, 0x33, 0xcb, 0x54, 0xca, 0x32, - 0xbb, 0x11, 0x02, 0x8c, 0x84, 0x20, 0xba, 0x0a, 0x33, 0xdb, 0x84, 0x79, 0xb0, 0x00, 0xb9, 0x59, - 0x95, 0x0d, 0x03, 0xb9, 0x20, 0x80, 0x18, 0xc8, 0x34, 0x9f, 0x94, 0x8a, 0x22, 0x00, 0xbb, 0x04, - 0x1d, 0x83, 0xa9, 0x73, 0xab, 0x85, 0x1a, 0x81, 0x8a, 0x05, 0x8b, 0x93, 0x0d, 0x03, 0x8a, 0x14, - 0xbe, 0x42, 0xb8, 0x30, 0xc9, 0x28, 0x12, 0xf8, 0x40, 0x99, 0x92, 0x38, 0xc9, 0x38, 0xc2, 0x61, - 0xa9, 0x88, 0x18, 0xa1, 0x20, 0xc2, 0x4b, 0xa4, 0x8c, 0x01, 0x20, 0xd8, 0x02, 0x3b, 0x92, 0x9f, - 0x04, 0x81, 0x1d, 0x83, 0x9a, 0x81, 0x4b, 0x97, 0x08, 0xb9, 0x21, 0x00, 0x9a, 0x83, 0x19, 0xad, - 0x30, 0x07, 0x9e, 0x21, 0x88, 0x38, 0xd0, 0x38, 0x90, 0xc9, 0x71, 0xc0, 0x20, 0xa1, 0x10, 0xba, - 0x42, 0x98, 0x01, 0xbd, 0x42, 0xa8, 0x18, 0x03, 0x8f, 0xa2, 0x51, 0x9a, 0xab, 0x16, 0x1a, 0xb3, - 0x2c, 0xb2, 0x71, 0x99, 0x00, 0x11, 0x9d, 0x05, 0x89, 0x8b, 0x11, 0x84, 0x9a, 0x10, 0x90, 0x8a, - 0x53, 0xda, 0xa2, 0x59, 0xb0, 0x21, 0xf8, 0x3a, 0x86, 0x09, 0x98, 0x92, 0x4b, 0xb4, 0x38, 0xca, - 0x11, 0xa2, 0x79, 0xd9, 0x11, 0x88, 0x10, 0xa1, 0x3a, 0xe1, 0x1a, 0x03, 0x80, 0xac, 0x63, 0x90, - 0x0a, 0x81, 0x08, 0xc4, 0x7b, 0xd1, 0x08, 0x21, 0x0b, 0x85, 0xbb, 0x51, 0xb0, 0x28, 0x88, 0x93, - 0x8e, 0x05, 0x0b, 0xa1, 0x09, 0x35, 0x9a, 0x80, 0xbb, 0x16, 0x3a, 0xc1, 0x00, 0x89, 0xa0, 0x42, - 0xdb, 0x20, 0x41, 0xc0, 0x89, 0x8a, 0x30, 0x93, 0x72, 0xf0, 0x5b, 0xa1, 0x09, 0x83, 0x1b, 0x13, - 0x9c, 0xb3, 0x3c, 0xb2, 0x70, 0xa1, 0x1b, 0xb1, 0x6a, 0x91, 0x1a, 0x91, 0x99, 0x51, 0xc0, 0xab, - 0x72, 0xa1, 0x28, 0xd8, 0x19, 0x13, 0x0a, 0x96, 0x0c, 0x13, 0x8c, 0x82, 0xaa, 0x73, 0xb8, 0x10, - 0x1b, 0xc3, 0x99, 0x25, 0x1b, 0xd0, 0x18, 0x33, 0xac, 0x90, 0x22, 0xc8, 0x38, 0xa2, 0x9b, 0xc1, - 0x7a, 0x94, 0x89, 0x2a, 0x96, 0x08, 0x0b, 0x93, 0x0b, 0x05, 0x19, 0xb0, 0xae, 0x26, 0x9a, 0x11, - 0xca, 0x41, 0x8a, 0xb5, 0x58, 0x99, 0x81, 0x18, 0x99, 0xa3, 0x5b, 0xa3, 0x9c, 0x93, 0x2d, 0x81, - 0x20, 0xb3, 0x8e, 0x19, 0x12, 0x86, 0x8e, 0x12, 0xa0, 0x98, 0x6b, 0xb2, 0x29, 0x22, 0x9c, 0x86, - 0x0e, 0x13, 0x9a, 0xa1, 0x20, 0xa0, 0x9b, 0x06, 0x1b, 0x93, 0xa9, 0x72, 0xdb, 0x02, 0x1c, 0x04, - 0x9b, 0x30, 0x95, 0x1d, 0x90, 0x22, 0x98, 0x9a, 0x43, 0xca, 0x00, 0x22, 0x0a, 0x0a, 0xa8, 0x07, - 0x0f, 0x91, 0x40, 0xc1, 0x1b, 0x02, 0x09, 0xb2, 0x48, 0xe9, 0x40, 0xb8, 0x13, 0xbc, 0x62, 0x98, - 0x20, 0xb8, 0x48, 0xc1, 0x2d, 0x84, 0x1a, 0xd3, 0x3a, 0xb2, 0x1c, 0x04, 0x1a, 0xb0, 0x20, 0x01, - 0xbd, 0x23, 0x00, 0x9d, 0x06, 0x8b, 0x93, 0x1c, 0x23, 0xb8, 0x20, 0x9f, 0x24, 0xc8, 0x28, 0x0a, - 0xa5, 0x3a, 0xa8, 0x92, 0x81, 0x7b, 0xa0, 0x90, 0x8a, 0x25, 0x08, 0xfa, 0x30, 0x90, 0x11, 0xc8, - 0x5a, 0xd0, 0x22, 0x8a, 0x08, 0xc3, 0x3b, 0x23, 0xdd, 0x02, 0x18, 0x93, 0x8d, 0x11, 0x8a, 0x10, - 0x12, 0xc8, 0x59, 0x90, 0x90, 0x53, 0xbb, 0x23, 0xc9, 0x2a, 0x82, 0xd2, 0x5c, 0xa2, 0x2a, 0xe1, - 0x40, 0xda, 0x31, 0x89, 0x11, 0xe9, 0x18, 0x22, 0x1a, 0xe1, 0x40, 0xa9, 0x00, 0x10, 0x9b, 0x95, - 0x3c, 0x96, 0x1c, 0x91, 0x58, 0xb1, 0x8c, 0x04, 0x8a, 0x12, 0xaa, 0x31, 0xb8, 0x08, 0x2a, 0xa6, - 0x1c, 0x15, 0xba, 0x80, 0x21, 0x10, 0x89, 0xb0, 0x83, 0x2f, 0xf3, 0x18, 0x11, 0x9c, 0x33, 0xba, - 0x2b, 0xa3, 0x4d, 0xa6, 0x4b, 0xb0, 0x38, 0xe3, 0x4b, 0x92, 0x29, 0xb1, 0x29, 0xfa, 0x51, 0x88, - 0x90, 0x80, 0x1c, 0xa4, 0x49, 0xc1, 0x3a, 0xa1, 0x38, 0xa1, 0x0e, 0x09, 0x15, 0x2a, 0xba, 0x20, - 0xaa, 0x52, 0x91, 0x49, 0xd9, 0x40, 0xb1, 0x1c, 0x81, 0x04, 0xc0, 0x2c, 0x02, 0xca, 0x53, 0x9b, - 0x06, 0x9c, 0x11, 0x88, 0x98, 0x33, 0xc8, 0x1a, 0x84, 0x1c, 0x93, 0x09, 0x98, 0x24, 0xbc, 0x1a, - 0x84, 0x20, 0x9a, 0x87, 0x9a, 0x68, 0xb1, 0x98, 0x1c, 0x25, 0x8c, 0x93, 0x8c, 0x03, 0x0b, 0x07, - 0xa9, 0x00, 0x09, 0x82, 0x91, 0x0f, 0x14, 0x9a, 0x91, 0x39, 0x98, 0x15, 0x8d, 0x91, 0x09, 0x09, - 0x10, 0x83, 0x89, 0x5b, 0xa4, 0x0b, 0x91, 0x64, 0xb0, 0x3c, 0xc3, 0x99, 0x30, 0xe8, 0x31, 0x90, - 0x08, 0xb9, 0x38, 0xed, 0x64, 0xb8, 0x29, 0x88, 0xb3, 0x2c, 0x02, 0x30, 0xad, 0x14, 0x9a, 0x09, - 0xb2, 0x70, 0xf2, 0x28, 0x81, 0xaa, 0x41, 0x88, 0x01, 0xab, 0x62, 0xac, 0x83, 0x1a, 0x23, 0xcc, - 0x32, 0xaa, 0xa8, 0x63, 0x18, 0xba, 0x05, 0x8d, 0x12, 0xaa, 0x44, 0xb8, 0x38, 0xab, 0x86, 0x0c, - 0x11, 0x81, 0x8a, 0x80, 0xa9, 0x41, 0x1a, 0x07, 0x0c, 0xa0, 0x39, 0x93, 0xab, 0x1a, 0x27, 0x88, - 0xd9, 0x50, 0xc0, 0x39, 0x94, 0x1c, 0xb2, 0x4a, 0xc2, 0x48, 0xd1, 0x39, 0xb2, 0x2c, 0xa6, 0x1c, - 0x83, 0x89, 0x80, 0x18, 0x81, 0x09, 0x88, 0x88, 0x90, 0x24, 0x2c, 0xf9, 0x41, 0xb8, 0x48, 0xca, - 0x43, 0xb9, 0x39, 0xd3, 0x39, 0x01, 0xb8, 0x28, 0xaa, 0x25, 0xa8, 0x2a, 0x90, 0x27, 0x9f, 0x04, - 0x9c, 0x32, 0xb8, 0x31, 0xf9, 0x49, 0x91, 0x28, 0xb9, 0x10, 0xa1, 0x4b, 0xb2, 0x0a, 0x01, 0x09, - 0x27, 0x9f, 0x12, 0xa8, 0x51, 0xb9, 0x80, 0x20, 0x31, 0xac, 0x93, 0x6a, 0xc8, 0x42, 0xc8, 0x29, - 0x91, 0x90, 0x81, 0x0b, 0x32, 0xe5, 0x2b, 0x20, 0xd8, 0x30, 0x9a, 0x05, 0x8e, 0x12, 0xa9, 0x21, - 0x99, 0x63, 0xf9, 0x30, 0x99, 0x12, 0xb8, 0x0a, 0x84, 0x4c, 0xb2, 0x39, 0xb8, 0x49, 0x05, 0xcb, - 0x21, 0x98, 0xa9, 0x20, 0x51, 0xf8, 0x48, 0x90, 0x8a, 0x02, 0x2b, 0xa4, 0x0a, 0x1d, 0x06, 0x8b, - 0x81, 0x30, 0xc8, 0x39, 0x89, 0x86, 0x0d, 0x22, 0xc9, 0x10, 0x11, 0x89, 0xd0, 0x58, 0x98, 0x22, - 0xfa, 0x58, 0xb0, 0x39, 0xa1, 0x3c, 0xb1, 0x38, 0xb0, 0x4a, 0x90, 0x10, 0x02, 0x0e, 0xa8, 0x20, - 0x04, 0x2c, 0xc3, 0x3b, 0xa8, 0x34, 0xb0, 0x1b, 0x20, 0x22, 0xcf, 0x37, 0xad, 0x32, 0xc9, 0x00, - 0x80, 0x80, 0x09, 0xc1, 0x4d, 0xa3, 0x0a, 0x04, 0x8c, 0x13, 0xbb, 0x16, 0x0b, 0x00, 0xb0, 0x41, - 0x8a, 0x12, 0xd1, 0x59, 0xbb, 0x15, 0x09, 0x38, 0xf9, 0x30, 0xb8, 0x49, 0xc1, 0x48, 0xa8, 0x82, - 0x2b, 0xf1, 0x08, 0x51, 0xb1, 0x9b, 0x41, 0xb8, 0x41, 0x9a, 0x23, 0xba, 0x30, 0xc9, 0x38, 0x98, - 0x22, 0x1a, 0xe9, 0x3b, 0x86, 0x21, 0x8b, 0x81, 0x00, 0xa0, 0xaf, 0x35, 0xca, 0x51, 0xc8, 0x20, - 0xb9, 0x44, 0xad, 0x13, 0x1a, 0xa1, 0x0d, 0x13, 0x9a, 0x32, 0x9b, 0x82, 0x0c, 0x90, 0x06, 0x2e, - 0x93, 0x2a, 0xc8, 0x09, 0x60, 0x98, 0x03, 0xb8, 0x8a, 0x28, 0x14, 0xaa, 0x84, 0x7b, 0xc2, 0x9a, - 0x38, 0xd0, 0x32, 0xaa, 0x09, 0x85, 0x8e, 0x03, 0x3a, 0xf4, 0x38, 0x90, 0xa8, 0x32, 0x8b, 0x12, - 0xb8, 0x80, 0x11, 0x5c, 0xcf, 0x26, 0xaa, 0x08, 0x03, 0x9b, 0x80, 0x51, 0xd2, 0x1b, 0x84, 0x19, - 0x89, 0x91, 0x59, 0xc8, 0x10, 0x18, 0xd1, 0x18, 0x40, 0xb2, 0x1c, 0x84, 0x09, 0x99, 0x29, 0xd4, - 0x5b, 0x91, 0x88, 0xb0, 0x21, 0x02, 0x9f, 0xa7, 0x4a, 0xb2, 0x8a, 0x04, 0x1b, 0xa5, 0x1b, 0x84, - 0x0a, 0x11, 0xb8, 0x08, 0x4a, 0xb1, 0xa0, 0x50, 0xea, 0x52, 0xc8, 0x38, 0x91, 0x89, 0x28, 0x99, - 0x02, 0x9c, 0x27, 0xca, 0x29, 0x92, 0x19, 0x04, 0xa8, 0x0a, 0x00, 0x14, 0x8e, 0xa1, 0x58, 0xb8, - 0x53, 0xf9, 0x28, 0xa0, 0x40, 0xb1, 0x1a, 0xa8, 0x00, 0x25, 0x0a, 0xd2, 0x1b, 0x04, 0x9a, 0x60, - 0xa8, 0x11, 0x0c, 0x12, 0xcc, 0x58, 0x92, 0x09, 0x9a, 0x01, 0x10, 0x80, 0xb9, 0x79, 0xe2, 0x38, - 0x18, 0xc8, 0x49, 0x02, 0x91, 0x8e, 0x12, 0xb8, 0x58, 0xa1, 0x08, 0x9d, 0x32, 0xb4, 0x0c, 0x90, - 0x22, 0x29, 0xe0, 0x00, 0x0e, 0x84, 0x49, 0xb1, 0x0b, 0x01, 0x28, 0xc1, 0x2b, 0x08, 0x04, 0x30, - 0xbd, 0x13, 0x39, 0x07, 0xd9, 0x2b, 0x80, 0x22, 0xd3, 0x0e, 0x12, 0x8a, 0x04, 0xab, 0x12, 0x0d, - 0x07, 0x0b, 0x88, 0x08, 0x04, 0x89, 0xa8, 0x09, 0x33, 0xa9, 0xa0, 0x0e, 0x52, 0xa1, 0x0c, 0xa2, - 0x2c, 0x05, 0x09, 0xb2, 0x2d, 0x84, 0x8b, 0x33, 0xaf, 0x21, 0x91, 0x20, 0x8f, 0x92, 0x21, 0x08, - 0xaa, 0x02, 0x2b, 0x96, 0x0d, 0x93, 0xad, 0x61, 0x90, 0x90, 0x18, 0x0b, 0x84, 0x98, 0x12, 0x0d, - 0x12, 0xc0, 0x3a, 0xb2, 0x73, 0x99, 0x93, 0x9f, 0x02, 0x92, 0x4a, 0xb1, 0x9c, 0x44, 0xd8, 0x28, - 0x00, 0x90, 0x1b, 0x05, 0xcb, 0x18, 0x32, 0xb5, 0x1e, 0xa1, 0x39, 0x85, 0x8b, 0x01, 0x8b, 0x04, - 0x10, 0xd8, 0x18, 0x81, 0x19, 0x20, 0xbb, 0xa4, 0x9c, 0x72, 0xb4, 0x0d, 0x03, 0x88, 0x88, 0x9a, - 0x15, 0x88, 0x09, 0xc3, 0x0d, 0x15, 0x8c, 0x95, 0x0b, 0x81, 0x51, 0xc9, 0x29, 0xa2, 0x3b, 0x95, - 0x2b, 0x91, 0x09, 0x82, 0x59, 0xe8, 0x48, 0x81, 0x9a, 0x91, 0x4a, 0xc3, 0x1c, 0x06, 0x8c, 0x11, - 0xa9, 0x42, 0xc9, 0x31, 0xca, 0x21, 0x99, 0x21, 0x8d, 0x04, 0x1a, 0xc3, 0x3b, 0x80, 0x02, 0xaa, - 0x68, 0xa0, 0x80, 0x21, 0x12, 0xdf, 0x21, 0x81, 0x88, 0xab, 0x02, 0x01, 0x38, 0xe0, 0x79, 0xd1, - 0x39, 0xc3, 0x1a, 0x80, 0x32, 0xcb, 0x08, 0x12, 0x0e, 0x97, 0x2b, 0x93, 0x0c, 0x05, 0x9a, 0x91, - 0x3b, 0x87, 0x8b, 0x92, 0x2a, 0x93, 0x1b, 0x97, 0x8b, 0x11, 0xb0, 0x20, 0xb0, 0x78, 0x80, 0x88, - 0x1a, 0x81, 0x1b, 0xf3, 0x51, 0xab, 0x11, 0xa0, 0x00, 0x19, 0x33, 0x9d, 0x86, 0x9c, 0x32, 0xd0, - 0x31, 0x98, 0x0d, 0x04, 0x9c, 0x85, 0x29, 0xaa, 0x94, 0x0a, 0x38, 0xb3, 0x1d, 0x85, 0x1d, 0xa3, - 0x0d, 0x03, 0x08, 0x91, 0x0c, 0xb2, 0x2b, 0x27, 0x9b, 0xa0, 0x40, 0x92, 0x11, 0xcb, 0x10, 0x4b, - 0x87, 0x8d, 0x82, 0x0a, 0x14, 0xb8, 0x5b, 0xd1, 0x30, 0xb8, 0x20, 0xaa, 0x10, 0x11, 0x02, 0xce, - 0x41, 0xb1, 0x38, 0xd3, 0x2c, 0x92, 0x90, 0x1a, 0x43, 0xd9, 0x50, 0xc0, 0x39, 0xb1, 0x31, 0xa9, - 0x08, 0x91, 0xdb, 0x52, 0xa1, 0x3b, 0xc1, 0x39, 0xf1, 0x58, 0xa8, 0x28, 0xb2, 0x3e, 0xb1, 0x20, - 0x91, 0x2b, 0x82, 0xcc, 0x37, 0xdb, 0x32, 0xba, 0x30, 0xb8, 0x42, 0xca, 0x31, 0x9d, 0x25, 0xc9, - 0x30, 0xb8, 0x01, 0x8c, 0x23, 0x88, 0x11, 0xca, 0x10, 0xa9, 0x26, 0x8c, 0xa0, 0x31, 0xbc, 0x07, - 0x0a, 0x81, 0x8a, 0x14, 0xbb, 0x41, 0xca, 0x40, 0x93, 0x09, 0x99, 0x39, 0xe2, 0x44, 0xbb, 0x59, - 0xb5, 0x2d, 0xa3, 0x1b, 0x85, 0x8a, 0x13, 0xac, 0x82, 0x09, 0x14, 0x9e, 0x02, 0x88, 0x08, 0x08, - 0x14, 0xda, 0x41, 0xa8, 0x08, 0x80, 0x28, 0xc2, 0x08, 0x21, 0x9f, 0x05, 0x9a, 0x10, 0x13, 0xbc, - 0x14, 0x0e, 0xa2, 0x59, 0xb0, 0x40, 0xd9, 0x31, 0xb0, 0x2c, 0xa4, 0x08, 0x21, 0x9e, 0x82, 0x20, - 0xa9, 0x18, 0x05, 0x9c, 0x12, 0x8c, 0x05, 0x0b, 0x81, 0x08, 0x80, 0x9b, 0x54, 0xbc, 0x36, 0xc9, - 0x10, 0x89, 0x91, 0x28, 0x82, 0x0c, 0x99, 0x23, 0xcc, 0x35, 0xac, 0x43, 0xda, 0x39, 0xa1, 0x21, - 0x8b, 0x31, 0xf0, 0x09, 0x04, 0x2a, 0xa1, 0x39, 0xfa, 0x51, 0xb0, 0x3a, 0xb2, 0x59, 0xb1, 0x19, - 0xc3, 0x5b, 0xb4, 0x2b, 0xd3, 0x1a, 0x31, 0xc2, 0x1a, 0x8a, 0x04, 0x19, 0xf1, 0x39, 0xb1, 0x00, - 0x52, 0xc8, 0x2b, 0xa4, 0x38, 0xa1, 0x1d, 0x00, 0x12, 0xad, 0x88, 0x25, 0xb0, 0x3a, 0xa5, 0x0e, - 0x82, 0x18, 0xa9, 0x42, 0xdc, 0x32, 0x90, 0x8a, 0x03, 0x29, 0xb8, 0x82, 0x9e, 0x61, 0xb1, 0x2c, - 0x85, 0x0b, 0xb0, 0x31, 0xa2, 0x2b, 0x12, 0x9c, 0x07, 0x0e, 0x91, 0x88, 0x43, 0xcb, 0x11, 0x29, - 0xb1, 0x70, 0xd8, 0x11, 0x88, 0x99, 0x00, 0x80, 0x30, 0x89, 0xa6, 0x4c, 0x98, 0x93, 0x9c, 0x15, - 0x9a, 0x10, 0x02, 0xcc, 0x12, 0x6b, 0xa2, 0x19, 0xd8, 0x39, 0x80, 0x14, 0xac, 0x21, 0x81, 0x99, - 0xf2, 0x2f, 0x84, 0x0a, 0x93, 0x1b, 0xc9, 0x52, 0x90, 0x88, 0x19, 0x98, 0x05, 0x8b, 0x81, 0x3b, - 0x07, 0x9a, 0x0b, 0x01, 0x33, 0x89, 0x92, 0xc0, 0xcf, 0x31, 0x85, 0x8c, 0x00, 0x12, 0x8a, 0xd0, - 0x48, 0x90, 0x88, 0x33, 0xdc, 0x31, 0xc9, 0x40, 0x99, 0x22, 0xea, 0x32, 0x8b, 0x98, 0x83, 0x32, - 0xac, 0x81, 0xf0, 0x4a, 0x23, 0xad, 0x85, 0x1c, 0x81, 0x00, 0x92, 0x1d, 0x92, 0x88, 0x01, 0x8c, - 0x22, 0x12, 0xa0, 0x8f, 0xb2, 0x2a, 0x08, 0x23, 0xbc, 0x03, 0x79, 0xa1, 0xfa, 0x21, 0x10, 0xc0, - 0x00, 0xa8, 0x7a, 0xa5, 0x29, 0xb9, 0x21, 0x80, 0xd2, 0x69, 0xd0, 0x48, 0xa0, 0x28, 0x9b, 0x01, - 0x43, 0xba, 0xa8, 0x58, 0xa2, 0x68, 0xda, 0x08, 0x40, 0x90, 0x00, 0xb1, 0x0d, 0x31, 0xa2, 0xf2, - 0x3a, 0x00, 0x99, 0x05, 0x0c, 0xa3, 0x60, 0xa9, 0x08, 0x98, 0x11, 0x93, 0x1c, 0xba, 0x80, 0x17, - 0x0a, 0x23, 0xdb, 0x21, 0xdb, 0x04, 0x9b, 0x43, 0xa8, 0xa2, 0x3d, 0xe1, 0x30, 0x18, 0xb1, 0x2b, - 0xf9, 0x24, 0x1a, 0xa0, 0x01, 0xb0, 0x71, 0xaa, 0x82, 0x0c, 0x33, 0xb9, 0x88, 0xa0, 0x48, 0x2b, - 0x87, 0x1b, 0x01, 0xd8, 0x31, 0x9a, 0x8a, 0x07, 0x8c, 0x94, 0x2d, 0x93, 0xca, 0x52, 0x90, 0x8a, - 0x21, 0xb0, 0x3b, 0xd4, 0x78, 0xa0, 0x09, 0x12, 0xad, 0x43, 0xb8, 0x01, 0x9b, 0x25, 0x9e, 0x94, - 0x49, 0x99, 0x02, 0xa9, 0x10, 0x29, 0xe1, 0x31, 0xba, 0x19, 0x22, 0x90, 0x9c, 0x03, 0x60, 0xc2, - 0x2c, 0xc1, 0x59, 0xa0, 0x28, 0x82, 0x99, 0x9d, 0x26, 0xba, 0x20, 0x81, 0x8a, 0x97, 0x2e, 0xa1, - 0x10, 0x80, 0x20, 0xc8, 0x19, 0x98, 0x22, 0x1a, 0xb1, 0x01, 0x8f, 0x02, 0x19, 0x82, 0x33, 0x8d, - 0xc9, 0x80, 0x2a, 0x27, 0x48, 0xdd, 0x22, 0x9a, 0x22, 0x09, 0xd8, 0x32, 0xd8, 0x18, 0x88, 0x88, - 0x45, 0xd8, 0x08, 0x8a, 0x13, 0xab, 0x74, 0xc8, 0x29, 0xc3, 0x28, 0xc0, 0x41, 0xb8, 0x11, 0xb9, - 0x4a, 0x85, 0x9a, 0x25, 0x9d, 0x93, 0x2a, 0x90, 0x18, 0x88, 0x02, 0x9c, 0x84, 0x0e, 0x03, 0x98, - 0x3a, 0xd1, 0x2a, 0x95, 0x00, 0x88, 0x0b, 0x07, 0x9a, 0x1a, 0x54, 0xea, 0x22, 0x99, 0x29, 0xc8, - 0x24, 0x9b, 0x00, 0xa1, 0x19, 0x81, 0x59, 0xf0, 0x40, 0xaa, 0x02, 0xa0, 0x59, 0x90, 0x0b, 0x96, - 0x3a, 0xa1, 0x19, 0xa2, 0x3d, 0x96, 0x1a, 0x80, 0x10, 0xf9, 0x48, 0xb0, 0x29, 0xa3, 0x29, 0x99, - 0x32, 0xf9, 0x40, 0xaa, 0x22, 0xf1, 0x38, 0xa0, 0x11, 0x9b, 0x14, 0xba, 0x29, 0x00, 0x22, 0xd9, - 0x71, 0xb8, 0x30, 0xf9, 0x41, 0xd0, 0x38, 0xb0, 0x3a, 0xa3, 0x1e, 0x94, 0x19, 0xb0, 0x69, 0xc1, - 0x39, 0xa2, 0x19, 0x99, 0x30, 0xa1, 0x2b, 0x97, 0x2b, 0x88, 0x18, 0xf1, 0x40, 0x98, 0x09, 0xa4, - 0x1a, 0x92, 0x01, 0x9f, 0x84, 0x18, 0x00, 0xda, 0x48, 0xc0, 0x20, 0x08, 0x38, 0xc9, 0x21, 0x91, - 0x1b, 0x5b, 0xa4, 0x90, 0x9c, 0x18, 0x62, 0xe1, 0x48, 0xc8, 0x21, 0xa9, 0x12, 0x83, 0x1d, 0xd8, - 0x32, 0xeb, 0x60, 0xa0, 0x89, 0x02, 0x08, 0xb1, 0x29, 0xb1, 0x49, 0x03, 0xcb, 0x41, 0xad, 0x04, - 0x22, 0xbd, 0x10, 0x12, 0xaa, 0x31, 0xa8, 0x8d, 0x27, 0x9a, 0x01, 0xc0, 0x1a, 0x37, 0xbc, 0x82, - 0x30, 0xe9, 0x30, 0x98, 0xa1, 0x30, 0xc8, 0x09, 0x02, 0x0f, 0x04, 0xa0, 0x2b, 0xb8, 0x35, 0xd9, - 0x28, 0x91, 0x19, 0xb3, 0x2a, 0x21, 0xea, 0x53, 0xc9, 0x48, 0xe2, 0x2a, 0x91, 0x02, 0x1a, 0xb2, - 0x3a, 0xd8, 0x11, 0x90, 0x70, 0xb9, 0x08, 0x34, 0xbc, 0x29, 0x15, 0xac, 0x23, 0x9d, 0x22, 0x0b, - 0xa1, 0x63, 0xb1, 0x9f, 0x23, 0xd9, 0x58, 0x91, 0x98, 0x90, 0x00, 0x80, 0x02, 0xa0, 0x8a, 0x54, - 0xab, 0x24, 0xca, 0x08, 0x13, 0x1b, 0xb8, 0x85, 0x1f, 0x06, 0x0c, 0x98, 0x03, 0x0d, 0x82, 0x98, - 0x90, 0x52, 0xba, 0x10, 0x90, 0x15, 0x8c, 0x92, 0x01, 0x8e, 0x25, 0xab, 0xa6, 0x4b, 0x91, 0x09, - 0x91, 0x08, 0x98, 0x40, 0xc1, 0x08, 0x21, 0x9d, 0x32, 0xf0, 0x4a, 0x91, 0x18, 0xa8, 0x92, 0x3c, - 0xc1, 0x33, 0xa9, 0x88, 0x89, 0x95, 0x2b, 0xc4, 0x7a, 0xa0, 0x08, 0x00, 0x9e, 0x33, 0xc2, 0x29, - 0xa9, 0x39, 0xa4, 0x21, 0x98, 0x1d, 0xd2, 0x20, 0x08, 0x0a, 0xf2, 0x70, 0xc8, 0x19, 0x22, 0xc0, - 0x29, 0x90, 0x19, 0xa2, 0x49, 0x94, 0x9d, 0x11, 0x12, 0x8b, 0x95, 0x1c, 0x23, 0xc9, 0x5b, 0xe2, - 0x38, 0x90, 0x19, 0xb8, 0x03, 0x3e, 0x90, 0x83, 0x9b, 0x18, 0x34, 0xd8, 0xb9, 0x53, 0x1c, 0xa3, - 0xaa, 0x59, 0x89, 0x33, 0x90, 0xcb, 0x98, 0x70, 0xb1, 0x04, 0xba, 0x3e, 0x96, 0x88, 0x9a, 0x04, - 0x29, 0xa9, 0x01, 0x8a, 0xa3, 0x3a, 0x47, 0xec, 0x28, 0x11, 0x88, 0xa1, 0x89, 0x4b, 0xa5, 0x09, - 0x3a, 0x86, 0xac, 0x53, 0xc0, 0x19, 0x29, 0xc2, 0x39, 0xc0, 0x29, 0x85, 0x0a, 0x08, 0x8a, 0x03, - 0x1e, 0x84, 0x0a, 0x00, 0xc0, 0x52, 0x89, 0xb8, 0x31, 0xc1, 0x39, 0x89, 0xb0, 0x04, 0x38, 0xaf, - 0x05, 0x19, 0xa9, 0x20, 0xda, 0x34, 0x9d, 0x02, 0x99, 0x48, 0x83, 0xc9, 0x3a, 0xb1, 0x38, 0x83, - 0x22, 0x2d, 0xdb, 0x07, 0x2b, 0xb3, 0x0c, 0x13, 0xaa, 0xd1, 0x7a, 0xb1, 0x29, 0x92, 0xba, 0x51, - 0xb8, 0x32, 0xba, 0x62, 0xd9, 0x31, 0xa9, 0x48, 0x93, 0x8c, 0x48, 0xe3, 0x2b, 0x84, 0x8c, 0x33, - 0x9e, 0x11, 0x90, 0x18, 0x09, 0x92, 0x8a, 0x22, 0xac, 0x86, 0x0d, 0x83, 0x29, 0xa4, 0xbb, 0x34, - 0x9c, 0x93, 0x50, 0xb9, 0x80, 0x21, 0x2c, 0xe4, 0x3a, 0x84, 0x9c, 0x01, 0x80, 0x88, 0x31, 0xa7, - 0x1c, 0x90, 0x00, 0x83, 0x8d, 0x41, 0xaa, 0x85, 0x8a, 0x18, 0xb9, 0x46, 0x99, 0xa0, 0x4c, 0xb1, - 0x21, 0x09, 0x88, 0x81, 0xa9, 0x49, 0x1a, 0xc5, 0x7b, 0x92, 0xab, 0x38, 0x91, 0x82, 0x09, 0x93, - 0x1e, 0x18, 0xf2, 0x40, 0x0a, 0x92, 0x11, 0xd9, 0x09, 0x32, 0xe0, 0x52, 0x9c, 0x83, 0x0a, 0xb1, - 0x71, 0xc9, 0x00, 0x12, 0x9d, 0x04, 0x99, 0x00, 0x08, 0x10, 0x89, 0xf1, 0x59, 0xa2, 0x1b, 0x03, - 0x88, 0xc1, 0x4c, 0x91, 0xb1, 0x30, 0x31, 0xfb, 0x80, 0x11, 0x09, 0x13, 0xbf, 0x17, 0xaa, 0x28, - 0xb8, 0x30, 0x91, 0xb0, 0x79, 0xc8, 0x10, 0x11, 0x98, 0x81, 0x3a, 0xf2, 0x1a, 0x04, 0x1a, 0x90, - 0x14, 0xad, 0x30, 0xd3, 0x40, 0x89, 0x9b, 0x14, 0x9b, 0x38, 0x04, 0xbd, 0x34, 0xab, 0x98, 0x24, - 0x1d, 0xa2, 0x02, 0xad, 0x71, 0xa0, 0x2c, 0x95, 0x0a, 0x08, 0x92, 0x5a, 0xa8, 0x91, 0x3c, 0x87, - 0x8d, 0x02, 0x00, 0x8b, 0x83, 0x19, 0x91, 0x90, 0x4c, 0xa3, 0x8c, 0x11, 0x85, 0x8b, 0x0a, 0x06, - 0x8b, 0x22, 0xa0, 0x89, 0xa0, 0x36, 0x9e, 0xb0, 0x71, 0xb0, 0x18, 0x18, 0xc0, 0x49, 0x09, 0x95, - 0x1d, 0x80, 0x10, 0x20, 0xbc, 0x23, 0x08, 0xd8, 0x68, 0xa0, 0x1a, 0x95, 0x0a, 0x81, 0x08, 0x92, - 0x9b, 0x68, 0xc1, 0x40, 0xdb, 0x32, 0x1a, 0xc1, 0x38, 0x93, 0x8e, 0x00, 0x21, 0x8b, 0xb4, 0x4a, - 0xa2, 0x99, 0x43, 0x98, 0xbb, 0x60, 0x92, 0xda, 0x48, 0xb3, 0x2d, 0x92, 0x48, 0xda, 0x81, 0x40, - 0x98, 0xd1, 0x79, 0xb2, 0x0b, 0x13, 0xa9, 0x30, 0x0b, 0x13, 0xd8, 0x9a, 0x43, 0x10, 0xce, 0x41, - 0x89, 0xa2, 0x2c, 0x01, 0xf3, 0x59, 0xa0, 0x08, 0x98, 0x49, 0x92, 0x09, 0xa8, 0x42, 0xbb, 0x34, - 0xa9, 0x09, 0x13, 0x2e, 0xc5, 0x0b, 0x22, 0x00, 0x1a, 0xf1, 0x28, 0xa8, 0x88, 0x15, 0x0d, 0x03, - 0x89, 0xc8, 0x3a, 0x91, 0x44, 0x9c, 0x81, 0xa0, 0x1a, 0x15, 0x98, 0x18, 0xa9, 0x75, 0xbb, 0x04, - 0x1b, 0x23, 0xcd, 0x32, 0xb9, 0x18, 0xc1, 0x50, 0xa0, 0x2a, 0x93, 0x0c, 0x92, 0x89, 0x27, 0x9e, - 0x20, 0x82, 0x9c, 0x32, 0xa0, 0x5a, 0x90, 0xaa, 0x32, 0x9e, 0x03, 0x00, 0x1c, 0x82, 0x91, 0x9d, - 0x23, 0x18, 0xa3, 0xbb, 0x1c, 0x16, 0x9b, 0x73, 0xf1, 0x20, 0x8a, 0x11, 0xa9, 0x92, 0x08, 0x29, - 0xf3, 0x4b, 0xc1, 0x28, 0x81, 0x10, 0xc8, 0x4c, 0xe3, 0x49, 0x98, 0x01, 0x01, 0x8e, 0x94, 0x28, - 0xa9, 0x32, 0xb9, 0x5b, 0xb3, 0x2d, 0x92, 0x88, 0x18, 0x93, 0x1e, 0xd0, 0x28, 0x11, 0xe0, 0x31, - 0xab, 0x21, 0x11, 0xba, 0x09, 0x78, 0xc4, 0x18, 0x0b, 0x04, 0xda, 0x53, 0xb8, 0x11, 0xac, 0x30, - 0x95, 0x8c, 0x22, 0x09, 0xd0, 0x28, 0x91, 0x58, 0xc0, 0x38, 0xc8, 0x28, 0xa2, 0x5c, 0xb2, 0x0a, - 0x12, 0xc9, 0x40, 0x88, 0xa1, 0x68, 0xc1, 0x0b, 0x82, 0x38, 0x00, 0xaa, 0x09, 0x04, 0x0b, 0x63, - 0xaa, 0x94, 0xcc, 0x70, 0xc1, 0x28, 0x98, 0x18, 0x82, 0x2b, 0xa1, 0x09, 0x11, 0x71, 0xf8, 0x4a, - 0x80, 0x18, 0xca, 0x50, 0x81, 0x0c, 0x93, 0x28, 0xd9, 0x58, 0xa0, 0x18, 0x9a, 0x42, 0xc1, 0x18, - 0x80, 0x2a, 0xa1, 0x8b, 0x26, 0xbb, 0x18, 0x26, 0xac, 0x20, 0xa1, 0x88, 0x2b, 0x44, 0xf1, 0x5a, - 0x09, 0xa3, 0x8d, 0x41, 0x80, 0x98, 0xa9, 0x52, 0xb8, 0x29, 0xa6, 0x1a, 0xa9, 0x23, 0x89, 0xa9, - 0x80, 0x37, 0xad, 0x82, 0x2b, 0x05, 0xaa, 0x34, 0xd9, 0x39, 0x98, 0x04, 0xa8, 0x3d, 0x92, 0x0a, - 0xb0, 0x43, 0x3b, 0xe0, 0x20, 0xb1, 0x1d, 0x51, 0xd0, 0x00, 0x0b, 0x03, 0xa1, 0x1e, 0x95, 0x1b, - 0x81, 0x95, 0x0c, 0x91, 0x11, 0x08, 0xb8, 0x34, 0x8d, 0x01, 0x89, 0x12, 0x9b, 0x6a, 0xe2, 0x21, - 0x9e, 0x13, 0xa9, 0x20, 0xa8, 0x39, 0x83, 0xb1, 0x7c, 0xc3, 0x1b, 0x21, 0xd8, 0x49, 0x90, 0x81, - 0x89, 0x33, 0x9d, 0x90, 0x34, 0x9e, 0x21, 0x88, 0xac, 0x24, 0xa9, 0x01, 0x3b, 0xd3, 0x80, 0x3a, - 0x90, 0xf3, 0x7a, 0xa3, 0x8c, 0x24, 0xbb, 0x62, 0xb9, 0x11, 0x09, 0xa2, 0x1a, 0x88, 0x81, 0x31, - 0xeb, 0x03, 0x8f, 0x23, 0xda, 0x33, 0x9c, 0x02, 0x01, 0x1f, 0xa2, 0x09, 0x68, 0xa1, 0x99, 0x2b, - 0x97, 0x3a, 0x91, 0x9a, 0x32, 0xb9, 0x40, 0xaa, 0x15, 0x0b, 0x09, 0xb5, 0x2d, 0xc2, 0x5a, 0x92, - 0x0a, 0x91, 0x0b, 0x07, 0x0a, 0xa2, 0x0e, 0x05, 0x8c, 0x12, 0x8a, 0x92, 0x19, 0x91, 0x89, 0x4c, - 0xd0, 0x52, 0xa9, 0x20, 0x8a, 0x91, 0x30, 0x2b, 0xa5, 0x29, 0x8a, 0xb2, 0xbc, 0x62, 0x21, 0xc8, - 0x4a, 0xd2, 0x09, 0x20, 0x31, 0xfb, 0x38, 0x00, 0x0b, 0xc6, 0x5c, 0xa2, 0x29, 0xd8, 0x30, 0xa8, - 0x20, 0xb2, 0x4b, 0xc1, 0x09, 0x05, 0x8c, 0x02, 0x80, 0x10, 0xaa, 0x23, 0xdb, 0x69, 0x92, 0x9a, - 0x88, 0x33, 0xab, 0x30, 0xf0, 0x79, 0xb0, 0x18, 0x28, 0xc8, 0x34, 0xda, 0x30, 0x89, 0x11, 0xe0, - 0x3a, 0xc1, 0x30, 0xb1, 0x3c, 0xb2, 0x1c, 0x91, 0x64, 0x9b, 0x80, 0x12, 0x0e, 0x95, 0x1b, 0x94, - 0x09, 0x09, 0x94, 0x8a, 0x19, 0x15, 0x9c, 0x02, 0xac, 0x25, 0xa9, 0x11, 0x8c, 0x06, 0x9c, 0x12, - 0xa1, 0x1a, 0x82, 0x10, 0xab, 0x98, 0x35, 0xa8, 0x12, 0x8e, 0x84, 0x2a, 0x09, 0xf4, 0x28, 0x98, - 0x4b, 0xc2, 0x18, 0x08, 0x20, 0xf1, 0x40, 0xca, 0x32, 0xb1, 0x2d, 0xa3, 0x2a, 0xa4, 0x2e, 0x82, - 0xba, 0x45, 0x8c, 0x82, 0x1a, 0x88, 0x11, 0xc8, 0x28, 0x01, 0xb9, 0x24, 0x0e, 0x91, 0xa8, 0x22, - 0x9a, 0x06, 0xaa, 0x39, 0xa3, 0xac, 0x37, 0x8b, 0xa1, 0x0b, 0x16, 0x2b, 0xc4, 0x28, 0x9a, 0x08, - 0x00, 0x93, 0x4d, 0xf1, 0x3a, 0x93, 0x19, 0x09, 0xb0, 0x80, 0x73, 0xc9, 0x38, 0x98, 0x20, 0xf3, - 0x6b, 0xb8, 0x21, 0x00, 0x9a, 0x11, 0x9a, 0x22, 0x0b, 0xd4, 0x4c, 0x81, 0x82, 0x2a, 0xd8, 0x38, - 0x91, 0x7a, 0xe2, 0x2b, 0x83, 0x90, 0x2b, 0x92, 0x18, 0xc1, 0x1c, 0x16, 0xbc, 0x43, 0x89, 0x98, - 0x81, 0x29, 0x20, 0xf0, 0x5a, 0xa8, 0x40, 0xb8, 0x88, 0x71, 0xb8, 0x92, 0x5a, 0xc0, 0x32, 0xac, - 0x32, 0x9b, 0xb2, 0x41, 0x0d, 0xa4, 0x0a, 0x28, 0x93, 0x8a, 0x94, 0x0e, 0x23, 0x9a, 0x13, 0xbb, - 0xb9, 0x73, 0xa0, 0x21, 0x80, 0xb8, 0x40, 0xae, 0xa3, 0x59, 0x2b, 0xa7, 0x0b, 0x81, 0x89, 0x41, - 0xe3, 0x2a, 0x04, 0xab, 0x48, 0xd1, 0x30, 0xa0, 0x39, 0xc1, 0x89, 0x39, 0xb3, 0x44, 0xfb, 0x39, - 0xb0, 0x83, 0x2c, 0xc2, 0x40, 0x90, 0x88, 0x1c, 0xa1, 0x34, 0x19, 0xf8, 0x5a, 0x98, 0x01, 0x98, - 0x12, 0xb8, 0x28, 0x84, 0xfa, 0x38, 0x38, 0xb1, 0x04, 0xaf, 0x31, 0xc8, 0x20, 0x01, 0x99, 0x80, - 0x1e, 0x84, 0x99, 0x38, 0xa3, 0x1f, 0x92, 0xb9, 0x53, 0x2b, 0xb4, 0x29, 0x1c, 0xc4, 0x30, 0x9a, - 0x22, 0xb0, 0x82, 0x9e, 0x40, 0xd8, 0x30, 0x91, 0x9a, 0x18, 0x81, 0xb9, 0x47, 0x8c, 0x32, 0xf8, - 0x09, 0x20, 0x99, 0x49, 0xb5, 0x29, 0xc8, 0x58, 0xd2, 0x28, 0x88, 0x80, 0x08, 0x9a, 0x23, 0x0b, - 0x12, 0x05, 0xdb, 0x2d, 0x93, 0x13, 0x1c, 0xa2, 0xb0, 0x4d, 0xb0, 0x18, 0x10, 0x22, 0x95, 0xaf, - 0x11, 0x9a, 0x33, 0xf2, 0x29, 0x9a, 0x12, 0x91, 0x38, 0x28, 0xf9, 0x60, 0xd0, 0x28, 0x98, 0x58, - 0xa2, 0x10, 0xab, 0x08, 0x01, 0x10, 0x01, 0x8e, 0x96, 0x0e, 0x82, 0x88, 0x88, 0x32, 0x9a, 0xb5, - 0x1e, 0x83, 0x09, 0x11, 0x88, 0x0b, 0x95, 0x1f, 0x93, 0x8a, 0x01, 0x01, 0x18, 0x9f, 0x82, 0x41, - 0x9b, 0x96, 0x8a, 0x08, 0x18, 0x83, 0x3d, 0xd2, 0xa0, 0x79, 0xb1, 0x19, 0x83, 0x29, 0xd1, 0x19, - 0x10, 0xb8, 0x38, 0xa0, 0x20, 0x19, 0xd5, 0x2a, 0xbc, 0x52, 0x14, 0xad, 0x31, 0xfa, 0x21, 0x98, - 0x11, 0x19, 0xb3, 0x0e, 0xa2, 0x30, 0x2b, 0x97, 0x2b, 0xa1, 0x2b, 0xa2, 0x59, 0x94, 0x8d, 0x03, - 0xca, 0x41, 0xc9, 0x41, 0xb8, 0x29, 0x90, 0x28, 0x89, 0x27, 0xaa, 0x11, 0x9f, 0x84, 0x28, 0xbb, - 0x27, 0x9b, 0x92, 0x29, 0x90, 0x19, 0x8a, 0x16, 0x8a, 0xa8, 0x31, 0xca, 0x52, 0xbb, 0x15, 0x8d, - 0x32, 0xb8, 0x08, 0x05, 0x9d, 0x12, 0x98, 0x0a, 0x33, 0xd0, 0x39, 0xb1, 0x0e, 0x84, 0x2a, 0x81, - 0x8a, 0x42, 0xf0, 0x4b, 0xd2, 0x39, 0x11, 0xc8, 0x20, 0xab, 0x23, 0x00, 0x81, 0x20, 0xfb, 0x40, - 0x9c, 0x04, 0x89, 0x98, 0x03, 0x8f, 0x82, 0x80, 0x88, 0x40, 0xa8, 0x08, 0x8e, 0x03, 0x1c, 0x87, - 0x1a, 0x10, 0x99, 0xa9, 0x79, 0xa3, 0x1d, 0x04, 0xab, 0x02, 0xa0, 0x7b, 0x92, 0x19, 0x89, 0x00, - 0xbb, 0x17, 0x8a, 0x02, 0xbb, 0x30, 0x80, 0x1c, 0x94, 0x49, 0xd3, 0x28, 0x8a, 0xa0, 0x78, 0xb3, - 0x2c, 0x92, 0xca, 0x60, 0x98, 0x81, 0x29, 0xb4, 0x7b, 0xc0, 0x08, 0x01, 0x09, 0x03, 0xca, 0x38, - 0xaa, 0x04, 0x28, 0xc8, 0x88, 0xa2, 0x7d, 0xb1, 0x18, 0x42, 0xac, 0x23, 0xdc, 0x30, 0x08, 0x91, - 0x01, 0x0c, 0xa1, 0x14, 0x8d, 0x12, 0xb8, 0x24, 0x9f, 0x02, 0x88, 0x10, 0x99, 0x42, 0xa8, 0xaa, - 0x78, 0xa1, 0x19, 0x12, 0xcc, 0x42, 0xf8, 0x5a, 0xa1, 0x18, 0x08, 0xa1, 0x09, 0x92, 0x4a, 0xb8, - 0x14, 0x09, 0xa9, 0x62, 0xcb, 0x33, 0x98, 0x91, 0x9e, 0x91, 0x71, 0xa0, 0x80, 0x10, 0xe8, 0x20, - 0x99, 0x11, 0x10, 0xd2, 0x59, 0xb0, 0x1a, 0x82, 0x3b, 0x06, 0xc9, 0x22, 0xbd, 0x24, 0x9a, 0x23, - 0xa9, 0x82, 0xdb, 0x3a, 0x88, 0x47, 0x8c, 0x02, 0xea, 0x30, 0x08, 0x99, 0x13, 0x9b, 0x14, 0x99, - 0xaa, 0x71, 0x80, 0x81, 0x8d, 0x91, 0x30, 0xb0, 0x71, 0xda, 0x13, 0xab, 0x31, 0xc9, 0x40, 0x83, - 0x0e, 0xa2, 0x00, 0x08, 0x48, 0xc9, 0x14, 0xab, 0x81, 0x84, 0x0f, 0x02, 0xa1, 0x19, 0x81, 0x8d, - 0x92, 0x83, 0x2c, 0x32, 0xbc, 0x05, 0x8c, 0x80, 0x30, 0x83, 0xbb, 0x70, 0xd0, 0x08, 0x15, 0xaa, - 0x29, 0xc2, 0x32, 0xbc, 0x02, 0x3d, 0x95, 0x8b, 0x80, 0xd1, 0x58, 0x81, 0x20, 0xbc, 0x14, 0xab, - 0x42, 0x9a, 0x24, 0x98, 0x8a, 0xc1, 0x3a, 0xc9, 0x45, 0x90, 0xab, 0x84, 0x8b, 0x24, 0xa8, 0x90, - 0x2a, 0xd2, 0x3b, 0xf8, 0x22, 0x13, 0xab, 0x19, 0xf1, 0x4b, 0x05, 0x99, 0x11, 0xbb, 0x02, 0x1b, - 0x63, 0xda, 0x24, 0x8c, 0x00, 0x98, 0x11, 0x98, 0x19, 0x9a, 0x16, 0xba, 0x5b, 0xa4, 0x8c, 0x25, - 0x88, 0xa9, 0x92, 0x0f, 0x84, 0x08, 0x10, 0xb9, 0x28, 0xd1, 0x40, 0xb8, 0x38, 0x03, 0xb9, 0x2b, - 0xbb, 0x37, 0x02, 0xcc, 0x18, 0xa3, 0x9e, 0x44, 0xd1, 0x2a, 0xb3, 0x3b, 0xa2, 0x3b, 0x17, 0xaa, - 0x08, 0x91, 0x8d, 0x32, 0x22, 0xf1, 0x3b, 0xb2, 0x29, 0x09, 0x97, 0x9a, 0x34, 0xba, 0x80, 0x80, - 0x2c, 0x17, 0x8b, 0xb1, 0x49, 0xd0, 0x31, 0x8c, 0x05, 0x9a, 0x91, 0x19, 0x99, 0x05, 0x29, 0xb3, - 0x1d, 0x92, 0x98, 0x7b, 0xd2, 0x18, 0x12, 0x9b, 0x08, 0x03, 0xad, 0x23, 0xa9, 0x1a, 0xc3, 0x44, - 0x9f, 0x12, 0x18, 0x98, 0x08, 0x89, 0x08, 0x5b, 0xa4, 0x8a, 0x32, 0x9d, 0xa3, 0x3e, 0x33, 0xfa, - 0x30, 0xb8, 0x10, 0x5b, 0xb4, 0x5b, 0xa1, 0x18, 0x9c, 0x80, 0x42, 0xc0, 0x28, 0xa2, 0x8a, 0x8a, - 0x87, 0x2b, 0x99, 0x85, 0xa9, 0x30, 0x01, 0x02, 0x39, 0xfa, 0x0d, 0x93, 0x3a, 0x06, 0x09, 0x1a, - 0xf2, 0x38, 0x91, 0x0b, 0x90, 0x49, 0x94, 0x8a, 0x8f, 0x02, 0x00, 0x20, 0xa9, 0x0d, 0x85, 0x3b, - 0xa4, 0x2b, 0xb2, 0x58, 0xb8, 0x81, 0x9a, 0x42, 0x00, 0xdc, 0x26, 0xbb, 0x23, 0x9a, 0x04, 0xac, - 0x70, 0xb2, 0x8a, 0xa0, 0x51, 0x99, 0x12, 0x99, 0xa8, 0x60, 0x81, 0xab, 0x89, 0x68, 0xc0, 0x21, - 0xf9, 0x78, 0x90, 0x19, 0x90, 0x88, 0x58, 0xb1, 0x29, 0x99, 0x08, 0x20, 0xd2, 0x39, 0xc0, 0x29, - 0x11, 0xd8, 0x38, 0xc0, 0x25, 0xcc, 0x11, 0x21, 0x98, 0x8a, 0x00, 0x98, 0x91, 0x72, 0x90, 0x9d, - 0x23, 0x9a, 0x35, 0x9d, 0x91, 0x32, 0xcb, 0x15, 0x9b, 0x09, 0x53, 0x90, 0xbd, 0x11, 0x40, 0x91, - 0x0f, 0x93, 0x99, 0x30, 0xa3, 0x0e, 0x83, 0x2c, 0x85, 0xa9, 0x18, 0x82, 0x4a, 0xe0, 0x49, 0xb0, - 0x20, 0x98, 0x91, 0x3a, 0xa3, 0x1a, 0x98, 0xfb, 0x70, 0xc3, 0x8a, 0x83, 0x9d, 0x32, 0xa0, 0x81, - 0x4b, 0xc1, 0x31, 0xb0, 0x99, 0x51, 0xa2, 0x0f, 0xc2, 0x12, 0x2c, 0xb3, 0x8b, 0x81, 0x59, 0x90, - 0x02, 0x9f, 0x20, 0x13, 0xa9, 0x29, 0xd8, 0x50, 0xa2, 0x0a, 0xb1, 0x1f, 0x86, 0x19, 0xa8, 0xa2, - 0x70, 0xb9, 0x38, 0xb2, 0x2a, 0x38, 0xb4, 0x1b, 0x89, 0xa1, 0x54, 0xdb, 0x28, 0x93, 0x9a, 0x71, - 0xa9, 0x28, 0xa4, 0x32, 0x8f, 0xa1, 0x19, 0x85, 0x1a, 0xb8, 0x07, 0x0b, 0x92, 0x01, 0xea, 0x31, - 0xa8, 0x39, 0x91, 0xba, 0x36, 0xda, 0x29, 0xb1, 0x03, 0x1a, 0x00, 0x90, 0x29, 0x06, 0xbd, 0x02, - 0x38, 0x06, 0xb9, 0x10, 0xad, 0x06, 0x4b, 0x82, 0xcb, 0x11, 0x10, 0x9c, 0x82, 0x50, 0x90, 0x9d, - 0xa1, 0x62, 0x98, 0x08, 0x83, 0x9e, 0x30, 0x90, 0x03, 0xad, 0x34, 0xac, 0x22, 0x8c, 0x83, 0x90, - 0x4a, 0x99, 0x11, 0xc1, 0x51, 0xba, 0x24, 0x30, 0x9c, 0xe1, 0x1a, 0x13, 0x99, 0x0d, 0x85, 0x89, - 0x11, 0xca, 0x23, 0x18, 0x18, 0xcc, 0xa1, 0x3f, 0x94, 0x3b, 0xa3, 0x31, 0xaf, 0x13, 0xc8, 0x40, - 0x90, 0x2b, 0xb5, 0x2d, 0x95, 0x1a, 0xa3, 0x1b, 0x01, 0xab, 0x44, 0xa8, 0x10, 0x8c, 0x04, 0x8d, - 0x83, 0x8b, 0x14, 0x9c, 0x02, 0x91, 0x2b, 0xb1, 0x60, 0xa8, 0x13, 0xbd, 0x12, 0x0c, 0xc0, 0x52, - 0x80, 0x98, 0x59, 0xa9, 0x81, 0x83, 0x51, 0xab, 0xf3, 0x40, 0x09, 0xd9, 0x21, 0x1b, 0x93, 0x89, - 0x89, 0x01, 0x40, 0xb2, 0x99, 0x8b, 0x23, 0xdf, 0x07, 0x8c, 0x84, 0x9a, 0x52, 0xc9, 0x01, 0x10, - 0x80, 0x99, 0x01, 0xac, 0x23, 0x19, 0x17, 0xb8, 0x39, 0xc9, 0x13, 0x0c, 0x83, 0x99, 0x24, 0xac, - 0x03, 0xa9, 0x61, 0xb8, 0x29, 0x11, 0xd8, 0x20, 0xfb, 0x09, 0x82, 0x32, 0xd9, 0x2a, 0x35, 0xbd, - 0x23, 0xb2, 0x1b, 0x1c, 0x05, 0xb3, 0x5d, 0xa1, 0x18, 0x89, 0x23, 0xb9, 0xa5, 0x1f, 0x92, 0x0b, - 0x32, 0xe1, 0x49, 0xb9, 0x12, 0xbb, 0x07, 0x08, 0xaa, 0x00, 0x8b, 0x27, 0x1b, 0xa2, 0x08, 0xb9, - 0x50, 0xa0, 0x34, 0xba, 0x09, 0x8f, 0x03, 0xa3, 0x3c, 0xc2, 0x2a, 0xc8, 0x43, 0x0b, 0x82, 0xe8, - 0x40, 0xb9, 0x39, 0xa7, 0x29, 0x99, 0x83, 0x3c, 0xc1, 0x39, 0x14, 0xac, 0x13, 0xe8, 0x72, 0x9a, - 0x00, 0x88, 0x01, 0x39, 0xa8, 0xd1, 0x1a, 0x82, 0x79, 0xd1, 0x48, 0xb9, 0x30, 0xc8, 0x11, 0x20, - 0xd1, 0x38, 0xa1, 0x90, 0x58, 0xb1, 0x8b, 0x83, 0x29, 0x32, 0xac, 0xda, 0x29, 0x47, 0x8b, 0x18, - 0xf0, 0x39, 0xa1, 0x88, 0x80, 0x81, 0x2a, 0x86, 0x89, 0x9a, 0x22, 0x00, 0x07, 0xaf, 0x03, 0x08, - 0x21, 0xa9, 0x0d, 0x05, 0x19, 0xa8, 0x38, 0xf9, 0x22, 0x0d, 0x02, 0xa9, 0x22, 0x9b, 0x18, 0xa5, - 0x3c, 0xa5, 0x0c, 0x02, 0x9a, 0x48, 0xa1, 0x11, 0x2d, 0x84, 0x9a, 0xe1, 0x29, 0x40, 0x02, 0x89, - 0xd1, 0x2a, 0xb8, 0x49, 0x25, 0xbc, 0x23, 0x8d, 0x93, 0x18, 0x8a, 0x72, 0xc1, 0x08, 0x90, 0x98, - 0x48, 0xb9, 0x73, 0xb9, 0x28, 0x18, 0x91, 0x42, 0xbd, 0x05, 0x8c, 0x83, 0x2a, 0xb2, 0x49, 0xab, - 0x04, 0xb8, 0x89, 0x36, 0x9e, 0x43, 0x9b, 0x01, 0xb1, 0x0c, 0x28, 0x01, 0x24, 0xbc, 0x19, 0x07, - 0x9b, 0x21, 0x90, 0x90, 0xb4, 0x3e, 0xb1, 0x88, 0x21, 0x91, 0xa9, 0xbf, 0x47, 0xb8, 0x19, 0x80, - 0x08, 0x21, 0xbc, 0x83, 0x59, 0x84, 0x19, 0xfa, 0x1a, 0x01, 0x20, 0x88, 0x90, 0x59, 0xb0, 0x91, - 0x8b, 0x32, 0x17, 0xcd, 0x40, 0xa0, 0x08, 0x21, 0xb9, 0x02, 0x0c, 0x38, 0x97, 0xab, 0x14, 0x1b, - 0x82, 0x89, 0x80, 0x20, 0x31, 0xfa, 0x7a, 0xb8, 0x51, 0xa8, 0x20, 0xa9, 0x8a, 0x27, 0x0a, 0xfa, - 0x40, 0x88, 0x08, 0x81, 0xbb, 0x48, 0x91, 0x11, 0x89, 0x08, 0x38, 0x17, 0x8f, 0x01, 0x89, 0x41, - 0xb8, 0x30, 0xbc, 0x25, 0xa9, 0x18, 0x00, 0xe0, 0x11, 0x38, 0xe2, 0x18, 0xba, 0x42, 0x1c, 0xd3, - 0x29, 0x88, 0x80, 0x89, 0x23, 0xe8, 0x29, 0x20, 0xc0, 0x72, 0x98, 0xb8, 0x5b, 0x92, 0x21, 0xa1, - 0xce, 0x28, 0x02, 0x10, 0xbb, 0x84, 0x0a, 0x24, 0x9b, 0x17, 0xbc, 0x20, 0x20, 0x89, 0x0a, 0x47, - 0xac, 0x21, 0x91, 0x8b, 0x32, 0xb8, 0xab, 0x21, 0x43, 0xdb, 0x02, 0x0d, 0xa1, 0x71, 0x81, 0xb8, - 0x8b, 0x42, 0x20, 0xa9, 0xa9, 0x87, 0x2c, 0x21, 0xe3, 0x5b, 0x80, 0x01, 0xa9, 0x0b, 0x32, 0x0a, - 0x86, 0x9b, 0x89, 0x31, 0xf2, 0x31, 0x9d, 0xb2, 0x69, 0x84, 0xbb, 0x20, 0x91, 0x39, 0xfa, 0x48, - 0xc2, 0x20, 0xb8, 0x79, 0xb8, 0x30, 0xa2, 0xb8, 0x48, 0x29, 0xb3, 0x68, 0xc9, 0x1a, 0x81, 0x01, - 0x90, 0x7b, 0xc0, 0x81, 0x8c, 0x08, 0x33, 0x99, 0x14, 0x1a, 0xf2, 0x2b, 0x22, 0xc4, 0x1c, 0x95, - 0x0c, 0x81, 0x80, 0x48, 0xa9, 0x51, 0xb1, 0x38, 0xcc, 0x41, 0x98, 0x98, 0x20, 0xc1, 0x2a, 0x08, - 0x02, 0x09, 0x31, 0x12, 0xff, 0x30, 0x0b, 0x25, 0xc9, 0x38, 0xb9, 0x10, 0x82, 0x20, 0xf9, 0x60, - 0xb1, 0x9b, 0x14, 0x0b, 0x13, 0x3a, 0xea, 0x01, 0x20, 0x98, 0xa2, 0x20, 0x20, 0xc1, 0xb9, 0xff, - 0x51, 0x80, 0x10, 0xcb, 0x18, 0x10, 0x91, 0x30, 0xfb, 0x30, 0x00, 0xc0, 0x18, 0x59, 0xa0, 0x11, - 0x9c, 0x50, 0xc0, 0x09, 0x22, 0xa9, 0x19, 0x82, 0xb8, 0x4c, 0x89, 0x55, 0xc8, 0x49, 0xa8, 0x90, - 0x1c, 0xa2, 0x31, 0x9e, 0x14, 0x9d, 0x12, 0x09, 0x23, 0x08, 0xaa, 0x40, 0xf9, 0x88, 0x52, 0x98, - 0xa0, 0x49, 0xd9, 0x10, 0x22, 0x98, 0x2b, 0x94, 0x8c, 0x12, 0x8c, 0x33, 0xf0, 0x48, 0xb8, 0x08, - 0x10, 0x25, 0x9f, 0x01, 0x00, 0x1c, 0xa2, 0x39, 0x92, 0x3a, 0xe2, 0x5b, 0x81, 0x08, 0x80, 0x89, - 0xb9, 0x20, 0xa0, 0x75, 0xb8, 0x68, 0xa0, 0xbb, 0x62, 0x98, 0x11, 0xaa, 0x18, 0x01, 0x90, 0x35, - 0xdc, 0x08, 0x48, 0x84, 0x8c, 0x01, 0x98, 0x11, 0x8a, 0x11, 0xe0, 0x29, 0x08, 0x84, 0xfc, 0x40, - 0x82, 0x0c, 0x91, 0x28, 0xa9, 0x20, 0x89, 0x99, 0x98, 0x61, 0xa1, 0x0e, 0x85, 0x1a, 0x91, 0x9c, - 0x16, 0x89, 0x20, 0xa1, 0x9c, 0x32, 0x9a, 0x08, 0x87, 0x09, 0x10, 0xbc, 0x73, 0xc8, 0x30, 0xb8, - 0x19, 0x99, 0x4b, 0x07, 0x99, 0x01, 0x8b, 0x82, 0x98, 0x01, 0x23, 0xcb, 0x0b, 0x17, 0x99, 0x22, - 0xa0, 0x78, 0xe9, 0x29, 0x23, 0xa8, 0x00, 0x80, 0xae, 0x21, 0x93, 0x2a, 0xe3, 0x3a, 0x94, 0xbc, - 0x33, 0x9b, 0x05, 0x2a, 0x05, 0xaf, 0x11, 0x10, 0x91, 0x99, 0x38, 0x90, 0xb9, 0x19, 0x86, 0x0e, - 0x15, 0xbb, 0x81, 0x3c, 0x05, 0x90, 0x99, 0x29, 0x91, 0xa3, 0xaf, 0x42, 0x8a, 0x23, 0xbb, 0x92, - 0x99, 0x79, 0x12, 0x89, 0xa0, 0x78, 0xc1, 0x0a, 0x30, 0xa9, 0x43, 0xfb, 0x3b, 0x04, 0x11, 0xae, - 0x11, 0x01, 0x0c, 0x04, 0x9c, 0x21, 0x80, 0x23, 0xa2, 0xdf, 0x11, 0x00, 0x81, 0x08, 0x1b, 0x81, - 0xc3, 0x0b, 0x59, 0xd2, 0x18, 0x42, 0xa8, 0x9c, 0x51, 0xa3, 0x8e, 0x02, 0x8a, 0x13, 0x09, 0x24, - 0xcc, 0x8a, 0x33, 0x38, 0xb4, 0x9d, 0x32, 0xc9, 0x0a, 0x98, 0x07, 0x1d, 0x94, 0x99, 0x29, 0x91, - 0x32, 0xe9, 0x11, 0x0a, 0x02, 0xa8, 0x5a, 0xd2, 0x39, 0xb2, 0x9a, 0x3b, 0x27, 0xb8, 0x1d, 0xc1, - 0x31, 0xa1, 0x39, 0xca, 0x10, 0xd1, 0x51, 0xb8, 0xba, 0x71, 0xa3, 0x0c, 0x83, 0x09, 0x18, 0xb0, - 0x6a, 0xd1, 0x49, 0x88, 0x90, 0x08, 0x23, 0x0c, 0xe2, 0x39, 0x90, 0x21, 0xb1, 0x8f, 0x84, 0x39, - 0xa4, 0xba, 0x9d, 0x44, 0x80, 0x99, 0x00, 0xa9, 0x40, 0x38, 0xa6, 0x9d, 0x02, 0x4a, 0xb2, 0x30, - 0x8a, 0xb0, 0x0e, 0x11, 0x05, 0x0a, 0x91, 0x9c, 0x23, 0x98, 0x02, 0x08, 0x9f, 0x12, 0x29, 0xeb, - 0x30, 0x84, 0x1a, 0xba, 0xb2, 0x25, 0x1e, 0x85, 0xa9, 0x48, 0xb1, 0x3c, 0xb4, 0x38, 0x90, 0xba, - 0x12, 0x89, 0x43, 0xdb, 0x2a, 0xc4, 0x8d, 0x02, 0x99, 0x93, 0x73, 0xb0, 0xa9, 0x30, 0xb0, 0x59, - 0x93, 0x2c, 0xa7, 0x0a, 0x90, 0x20, 0x54, 0xf0, 0x08, 0x81, 0x98, 0x88, 0x11, 0x90, 0x18, 0x9c, - 0xb1, 0x70, 0x91, 0x08, 0xb0, 0x1a, 0x99, 0x59, 0xc2, 0x5a, 0x91, 0x33, 0x21, 0xcf, 0x02, 0x18, - 0x08, 0x31, 0xf3, 0x3d, 0xb2, 0x4b, 0xb2, 0x1c, 0x12, 0x88, 0xb2, 0x8f, 0x31, 0xc8, 0x41, 0xa0, - 0x88, 0x9a, 0x32, 0x94, 0x2b, 0xb0, 0x61, 0x0a, 0x87, 0x0a, 0x00, 0xc9, 0x29, 0x43, 0xd8, 0x2b, - 0x83, 0x89, 0x30, 0xca, 0xa5, 0x4b, 0x81, 0x80, 0xb8, 0x0c, 0x99, 0x68, 0x93, 0x3a, 0xb5, 0x4a, - 0x80, 0xba, 0x37, 0xac, 0x88, 0x10, 0x81, 0x51, 0xd0, 0x8b, 0x92, 0x3b, 0x87, 0x0a, 0x30, 0xe8, - 0x18, 0x90, 0x72, 0xd0, 0x18, 0x80, 0x08, 0x90, 0x02, 0x39, 0xd4, 0x1a, 0x11, 0xa8, 0x9d, 0x24, - 0x08, 0x01, 0xae, 0x38, 0xa3, 0x2c, 0x00, 0x18, 0xd0, 0x60, 0xa1, 0x0d, 0x38, 0x84, 0x80, 0x99, - 0x9b, 0x20, 0x43, 0x9a, 0x04, 0xbf, 0x23, 0xa0, 0x29, 0x98, 0x91, 0x41, 0xa0, 0xbd, 0x27, 0xba, - 0x21, 0x82, 0x08, 0xdf, 0x40, 0x92, 0x89, 0x30, 0xa8, 0xa1, 0x3a, 0x80, 0x41, 0xc1, 0x20, 0xec, - 0x29, 0x23, 0x2a, 0xf4, 0x8b, 0x81, 0x53, 0xb8, 0x20, 0xba, 0x51, 0xa0, 0xb0, 0x8f, 0x13, 0x12, - 0xc0, 0x09, 0x0c, 0x88, 0x17, 0x8a, 0xb8, 0x8b, 0x47, 0xa8, 0x09, 0x81, 0x01, 0x88, 0xb1, 0x0a, - 0x62, 0x99, 0x13, 0xae, 0x20, 0x03, 0x89, 0xfb, 0x69, 0xb0, 0x12, 0xcb, 0x32, 0xb9, 0x43, 0x90, - 0xc9, 0x2a, 0x05, 0x09, 0x19, 0x08, 0xc3, 0x6b, 0x01, 0xcb, 0x25, 0x9b, 0x23, 0xac, 0x20, 0x22, - 0xa9, 0x99, 0xa8, 0xcb, 0x7a, 0xc4, 0x38, 0xa0, 0x0d, 0x84, 0x0a, 0x3a, 0x04, 0x98, 0xb2, 0x3f, - 0xa5, 0x1a, 0x23, 0xcc, 0x20, 0x81, 0x09, 0x34, 0xbc, 0x1a, 0xa4, 0x0c, 0x34, 0xbb, 0x41, 0xaa, - 0x93, 0x0e, 0x30, 0xe3, 0x1a, 0x80, 0x02, 0x2b, 0x11, 0xa9, 0x08, 0xb0, 0x77, 0xc0, 0x10, 0xba, - 0x41, 0x21, 0xd0, 0x1b, 0xa2, 0x8c, 0x83, 0x8c, 0x33, 0x01, 0xd9, 0x10, 0xab, 0x62, 0x05, 0xbc, - 0x04, 0x0b, 0xa3, 0x59, 0x91, 0x1b, 0x96, 0x8b, 0x10, 0xa1, 0x31, 0xb8, 0x9a, 0x9b, 0x67, 0xaa, - 0x43, 0xb9, 0x18, 0x80, 0x00, 0xa1, 0x19, 0x29, 0xf0, 0x30, 0x80, 0x3b, 0xc2, 0x17, 0x0a, 0xea, - 0x40, 0xb8, 0x21, 0x19, 0xbb, 0x64, 0xc0, 0x19, 0x92, 0x0a, 0x01, 0x00, 0x21, 0xc9, 0x91, 0x8c, - 0x35, 0xbf, 0x26, 0xa8, 0x1a, 0x80, 0x21, 0x80, 0xb2, 0xaf, 0x14, 0xa9, 0x13, 0x82, 0x9e, 0x9a, - 0x62, 0xa1, 0x20, 0xca, 0x21, 0xb0, 0x1a, 0xa9, 0x26, 0x8b, 0x04, 0xba, 0x30, 0xa5, 0x0d, 0x24, - 0xba, 0x11, 0x9b, 0x14, 0x11, 0xce, 0x24, 0x9c, 0x83, 0x1c, 0xa2, 0x0b, 0x03, 0x2b, 0xb1, 0x8b, - 0x17, 0x0a, 0x23, 0x9f, 0x13, 0x0b, 0x21, 0xe9, 0x18, 0x0b, 0xa3, 0x5a, 0xd0, 0x19, 0x82, 0xba, - 0x8a, 0x93, 0x49, 0x09, 0x30, 0xf1, 0x5a, 0xb1, 0x0b, 0x84, 0xc8, 0x4a, 0xb1, 0x39, 0xe9, 0x1a, - 0x31, 0xa1, 0x81, 0x9e, 0x81, 0x8d, 0x11, 0x02, 0xba, 0x1b, 0xb0, 0x2b, 0xc1, 0x53, 0xb2, 0xaf, - 0x89, 0x11, 0x99, 0x81, 0xab, 0xb0, 0x23, 0x0f, 0xb3, 0x9c, 0x10, 0x9a, 0x9b, 0xb3, 0x0b, 0x8d, - 0x00, 0xb8, 0x9b, 0xb9, 0x0b, 0xa9, 0x9b, 0x7f, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0xd0, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x71, 0x89, 0x83, 0xfc, 0x2e, 0x47, 0xaf, - 0x14, 0x98, 0x89, 0x11, 0xab, 0x16, 0x0c, 0xa3, 0x88, 0x2a, 0x00, 0x54, 0xe1, 0x2b, 0x84, 0x1b, - 0xa3, 0x8a, 0x0a, 0x86, 0x0a, 0x83, 0x2c, 0xb8, 0xa2, 0x63, 0xba, 0x38, 0x98, 0x12, 0x00, 0x0f, - 0xb2, 0x71, 0xb8, 0x28, 0xc2, 0x19, 0x01, 0x88, 0x31, 0xf0, 0x69, 0xc0, 0x29, 0xa2, 0x2a, 0x03, - 0x9e, 0x30, 0xa0, 0x90, 0x83, 0x2c, 0xe1, 0x22, 0x8c, 0x86, 0x0c, 0x83, 0x0a, 0x13, 0x9f, 0x04, - 0x89, 0x88, 0x82, 0x19, 0xb9, 0x50, 0xb0, 0x43, 0xbc, 0x01, 0x12, 0x1c, 0xaa, 0x87, 0x19, 0x0a, - 0x82, 0xba, 0x55, 0x89, 0x91, 0x08, 0xda, 0x52, 0x8a, 0x81, 0x88, 0x91, 0x4d, 0xe3, 0x39, 0xd3, - 0x49, 0xb8, 0x18, 0x22, 0xbb, 0x32, 0xbc, 0x26, 0xab, 0x02, 0x19, 0x88, 0xb8, 0x37, 0x8d, 0x91, - 0x00, 0x41, 0x9c, 0x20, 0xd3, 0x2c, 0x12, 0x8a, 0xc4, 0x59, 0x99, 0x08, 0x01, 0xa0, 0x6b, 0xa0, - 0x19, 0x92, 0x2d, 0xd3, 0x38, 0xa8, 0x30, 0x80, 0x8a, 0x00, 0x05, 0xba, 0x40, 0xba, 0x25, 0xad, - 0x00, 0x06, 0x0a, 0x94, 0x1d, 0xb1, 0x28, 0x22, 0xbc, 0x04, 0x8b, 0x35, 0xbe, 0x33, 0xc8, 0x42, - 0x9c, 0x03, 0x9b, 0x30, 0x88, 0x10, 0xe2, 0x4b, 0xa2, 0x2a, 0x18, 0xb8, 0xa2, 0x79, 0xb0, 0x8b, - 0x07, 0x09, 0x59, 0xf1, 0x18, 0x11, 0x0a, 0x92, 0x08, 0x8b, 0x92, 0x38, 0xb0, 0x2d, 0x05, 0x23, - 0x9f, 0xa1, 0x2d, 0x84, 0x99, 0x32, 0xae, 0x23, 0x9a, 0x01, 0x2b, 0xb6, 0x28, 0x90, 0x0e, 0x22, - 0x9b, 0x12, 0x80, 0xb9, 0x22, 0x13, 0xbf, 0x48, 0x23, 0xc0, 0xa1, 0x2c, 0x0b, 0x07, 0x98, 0x11, - 0xdb, 0x48, 0xb2, 0x39, 0x98, 0x00, 0x6b, 0xc2, 0x8d, 0x11, 0x02, 0x80, 0x3c, 0xf3, 0x4d, 0x80, - 0x98, 0x20, 0x88, 0xa2, 0x3a, 0xea, 0x53, 0x99, 0x09, 0x15, 0xca, 0x10, 0x18, 0xa1, 0x18, 0xa1, - 0x9a, 0x79, 0xe1, 0x28, 0xb2, 0x19, 0x40, 0xd0, 0x8a, 0x51, 0x90, 0x2a, 0x96, 0x8b, 0xa2, 0x39, - 0xa3, 0x4a, 0x8c, 0x87, 0x0a, 0xb0, 0x42, 0x9a, 0x94, 0x3b, 0xd0, 0x10, 0x80, 0x10, 0x98, 0x9b, - 0x53, 0xb3, 0x0c, 0xa2, 0x8c, 0x63, 0xa0, 0x99, 0x3a, 0x91, 0x42, 0xf3, 0x1c, 0x22, 0xc1, 0x18, - 0xac, 0x73, 0xc1, 0x10, 0xc9, 0x21, 0x98, 0x21, 0xa3, 0x9b, 0x0f, 0x15, 0xcb, 0x32, 0x09, 0xa9, - 0x33, 0xad, 0x12, 0x0a, 0x17, 0xab, 0x18, 0x88, 0x20, 0xb3, 0x58, 0xf3, 0x1c, 0x02, 0x89, 0x1a, - 0x86, 0x0b, 0x13, 0xcc, 0x31, 0xa0, 0x80, 0x38, 0xf3, 0x19, 0x88, 0x62, 0xe9, 0x01, 0x59, 0xc8, - 0x11, 0x89, 0x11, 0xab, 0x34, 0xb0, 0x8c, 0x20, 0xb5, 0x5a, 0xa8, 0x09, 0x14, 0x9d, 0x13, 0x8a, - 0x02, 0x8a, 0x96, 0x1e, 0x81, 0x89, 0x06, 0x0c, 0x03, 0x8d, 0x02, 0x88, 0x08, 0x88, 0x30, 0xc5, - 0x0c, 0x81, 0x21, 0x88, 0x02, 0xbd, 0x32, 0xd8, 0x22, 0x89, 0x0d, 0x07, 0x19, 0x8d, 0x91, 0x48, - 0xb1, 0x28, 0xb0, 0x98, 0x48, 0x18, 0xa4, 0x0c, 0x22, 0x90, 0xbe, 0x70, 0x92, 0x1b, 0x84, 0x0e, - 0x92, 0x39, 0x01, 0xb0, 0x1c, 0x00, 0x05, 0x9e, 0x13, 0x9b, 0x33, 0xab, 0x85, 0x8d, 0x23, 0x8b, - 0x82, 0x89, 0x09, 0x1a, 0x13, 0xc0, 0x5b, 0xf0, 0x25, 0x9c, 0x01, 0x99, 0x33, 0x81, 0xda, 0x19, - 0x88, 0x10, 0x15, 0x0f, 0x81, 0x08, 0x88, 0xe4, 0x5b, 0xa1, 0x02, 0x8b, 0x00, 0x98, 0x15, 0x0c, - 0x92, 0x2b, 0x84, 0xb0, 0x1c, 0xa4, 0x5c, 0xb1, 0x83, 0x0d, 0x11, 0xc8, 0x32, 0x90, 0x0c, 0xb8, - 0x24, 0x8c, 0x02, 0x88, 0x32, 0x8f, 0xf3, 0x48, 0x90, 0x08, 0x00, 0x99, 0x30, 0xb2, 0x99, 0x79, - 0xd1, 0x39, 0xc2, 0x3b, 0xa1, 0x81, 0x30, 0xaa, 0xb5, 0x4a, 0x82, 0x1b, 0xd2, 0x28, 0x34, 0xcf, - 0x42, 0xab, 0x24, 0xba, 0x15, 0x8d, 0x02, 0xba, 0x33, 0x80, 0x0a, 0x99, 0x44, 0xfa, 0x61, 0xbb, - 0x23, 0xa9, 0x83, 0x8d, 0x81, 0x21, 0x11, 0x9e, 0x02, 0x0b, 0xb4, 0x7a, 0xb1, 0x88, 0x40, 0xa1, - 0x9c, 0x10, 0x05, 0x0b, 0x93, 0x1e, 0xa3, 0x2b, 0x86, 0x0c, 0x91, 0x30, 0xb1, 0x0f, 0x84, 0x1b, - 0x95, 0x0c, 0x93, 0x0c, 0x12, 0x08, 0xb8, 0x3c, 0x05, 0x8c, 0xb3, 0x6b, 0x91, 0x29, 0xa1, 0x1a, - 0x92, 0x89, 0x43, 0xd9, 0x10, 0x10, 0xb4, 0x0f, 0xa3, 0x29, 0x84, 0x8f, 0x84, 0x0a, 0x00, 0x80, - 0xb1, 0x5c, 0xb2, 0x19, 0xe0, 0x48, 0x92, 0x0a, 0xa1, 0x39, 0xb4, 0x1b, 0x05, 0x8a, 0x82, 0x39, - 0x80, 0xfb, 0x23, 0x0b, 0x05, 0xbb, 0x43, 0xfb, 0x30, 0xa9, 0x93, 0x2a, 0x12, 0xbc, 0x03, 0x2a, - 0x27, 0x8e, 0x82, 0x0b, 0x92, 0x3b, 0x10, 0x96, 0x08, 0x0f, 0xb6, 0x3a, 0x81, 0x09, 0x91, 0x0c, - 0x85, 0x0a, 0x98, 0x71, 0xc1, 0x29, 0x90, 0x09, 0x08, 0x03, 0x80, 0x8f, 0xa4, 0x01, 0x1c, 0x00, - 0x92, 0x10, 0xe8, 0x49, 0xb0, 0x98, 0x16, 0x8c, 0x11, 0xa9, 0x30, 0xa8, 0x28, 0x22, 0xa5, 0x89, - 0x2a, 0xab, 0x47, 0x8c, 0x12, 0xc8, 0x1a, 0x31, 0xf0, 0x59, 0xb0, 0x40, 0xc9, 0x29, 0x11, 0x0a, - 0xb4, 0x29, 0x99, 0x98, 0x20, 0x21, 0xf8, 0x42, 0x09, 0xcb, 0x24, 0x0b, 0x94, 0x20, 0x99, 0x9b, - 0x35, 0xa0, 0x08, 0x9d, 0x13, 0xac, 0x15, 0xbb, 0x42, 0xdc, 0x24, 0xa9, 0xa9, 0x62, 0x99, 0x83, - 0x1b, 0xa5, 0x29, 0xb2, 0x1f, 0x93, 0x2c, 0x95, 0x0c, 0x94, 0x0a, 0x10, 0xb1, 0x38, 0x80, 0xa3, - 0xac, 0x20, 0x83, 0x2f, 0xa0, 0x16, 0x9b, 0x81, 0xab, 0x74, 0xc8, 0x38, 0x80, 0x8b, 0x12, 0x89, - 0x01, 0x2d, 0xc7, 0x39, 0xb0, 0x29, 0x12, 0xb0, 0x2d, 0xd2, 0x48, 0x90, 0x19, 0xa5, 0x4c, 0xb1, - 0x10, 0xa0, 0x59, 0xb1, 0x39, 0xd8, 0x38, 0x90, 0x39, 0xe3, 0x1d, 0x13, 0x8c, 0x82, 0x9b, 0x32, - 0x01, 0x9f, 0x85, 0x19, 0xa0, 0x03, 0x9c, 0x23, 0x0b, 0x87, 0x9a, 0x88, 0x12, 0x9a, 0x23, 0xdb, - 0x43, 0xe8, 0x18, 0x00, 0x00, 0x1c, 0xb1, 0x32, 0xe8, 0x5b, 0x01, 0xd0, 0x30, 0xa0, 0x09, 0xc1, - 0x71, 0x98, 0x80, 0x8a, 0x03, 0x90, 0x3b, 0x90, 0xc1, 0x0c, 0x72, 0xd1, 0x1a, 0x02, 0x98, 0x22, - 0xad, 0x14, 0x99, 0x8a, 0x27, 0x9d, 0x13, 0x89, 0x91, 0x1b, 0x85, 0x19, 0xb8, 0x1c, 0x85, 0x8a, - 0x21, 0xe1, 0x29, 0x08, 0x94, 0xba, 0x5b, 0xa4, 0x38, 0xd9, 0x21, 0x8a, 0x87, 0x0a, 0x01, 0xc2, - 0x5b, 0x92, 0xb9, 0x29, 0x40, 0xc1, 0x08, 0x00, 0xa8, 0x18, 0x85, 0x1e, 0xa8, 0x23, 0x0c, 0x02, - 0xaf, 0x62, 0xa0, 0x80, 0x18, 0xb8, 0x62, 0xa9, 0x93, 0x1c, 0x11, 0xb8, 0x06, 0x0e, 0x81, 0x18, - 0x18, 0xa8, 0x21, 0xbc, 0x40, 0x01, 0xb9, 0x3b, 0x17, 0xa9, 0x28, 0x88, 0x30, 0xfa, 0x24, 0x9e, - 0x10, 0xa3, 0x59, 0xb0, 0x0c, 0x05, 0x9a, 0x82, 0x28, 0xe0, 0x59, 0xa0, 0x18, 0xa8, 0x48, 0x94, - 0x09, 0xa8, 0x4b, 0xb3, 0x31, 0x8c, 0x91, 0x08, 0x0a, 0xa6, 0x0c, 0x12, 0x22, 0xad, 0x90, 0x09, - 0x32, 0x88, 0x27, 0xcf, 0x14, 0xa9, 0x30, 0xb8, 0x30, 0xc3, 0x3a, 0xca, 0x32, 0x8b, 0x27, 0xab, - 0x20, 0xbb, 0x26, 0xba, 0x31, 0xa9, 0x19, 0x14, 0xcc, 0x0a, 0x17, 0x8a, 0x02, 0xac, 0x31, 0xa2, - 0x79, 0xc0, 0x38, 0xb1, 0x39, 0xb8, 0x1a, 0x27, 0x8d, 0xb2, 0x30, 0xaa, 0x49, 0xa4, 0x18, 0x8d, - 0x21, 0xa4, 0x8b, 0x10, 0x82, 0xbb, 0x35, 0xba, 0x19, 0xd9, 0x35, 0xa8, 0xa8, 0x71, 0x98, 0xa0, - 0x48, 0xb8, 0x48, 0x91, 0x10, 0xeb, 0x5a, 0xa3, 0x1a, 0x92, 0x0e, 0xa3, 0x68, 0xaa, 0x05, 0x2b, - 0x98, 0x92, 0x3a, 0xc8, 0x42, 0xb8, 0x3b, 0xe0, 0x20, 0x08, 0x22, 0xd9, 0x89, 0x30, 0x50, 0xf1, - 0x29, 0x11, 0xa9, 0xc9, 0x44, 0xba, 0x22, 0xa2, 0x7b, 0xe0, 0x38, 0xa2, 0x09, 0x89, 0x03, 0xc9, - 0x49, 0xb1, 0x58, 0x99, 0x08, 0xa6, 0x1d, 0xb1, 0x50, 0xa0, 0x0a, 0x62, 0xd8, 0x20, 0x0a, 0x83, - 0xa8, 0x29, 0x94, 0x8b, 0x20, 0xa3, 0x98, 0x28, 0x7c, 0xf1, 0x18, 0x88, 0x23, 0xcc, 0x21, 0x90, - 0x28, 0xa9, 0x03, 0x8f, 0x04, 0x2c, 0xb2, 0x1c, 0x04, 0x0a, 0x02, 0x8c, 0x33, 0xfc, 0x31, 0xb0, - 0x40, 0xbb, 0x43, 0xbb, 0x50, 0xa1, 0x28, 0x9b, 0x13, 0xb0, 0x1e, 0x03, 0xc0, 0x6b, 0xc2, 0x39, - 0xb8, 0x30, 0x01, 0x8a, 0xe3, 0x5b, 0x83, 0xab, 0xa3, 0x79, 0xb8, 0x02, 0x1a, 0x08, 0xc1, 0x33, - 0x8b, 0xe8, 0x48, 0x82, 0x88, 0x8f, 0x04, 0x09, 0x01, 0xbb, 0x24, 0x0e, 0x94, 0x09, 0x28, 0xc9, - 0x22, 0xa1, 0x1f, 0x91, 0x21, 0xc8, 0x29, 0x91, 0x09, 0x10, 0x12, 0xbc, 0x34, 0x09, 0x2b, 0x97, - 0x1b, 0x12, 0xbc, 0x21, 0x38, 0xfa, 0x52, 0xba, 0x22, 0x9c, 0x84, 0x0f, 0x93, 0x18, 0x91, 0x8c, - 0x11, 0x93, 0x30, 0x8f, 0x85, 0x0b, 0x01, 0xa0, 0x3a, 0xf1, 0x51, 0xc8, 0x38, 0x99, 0x24, 0xda, - 0x39, 0xb2, 0x39, 0x91, 0x0b, 0x04, 0x9b, 0x91, 0x41, 0xda, 0x50, 0xa2, 0x0b, 0x98, 0x14, 0x91, - 0x19, 0x09, 0xf1, 0x41, 0x9c, 0x11, 0xc2, 0x4b, 0x93, 0xab, 0x40, 0xc9, 0x72, 0xb9, 0x23, 0x9c, - 0x32, 0xfb, 0x22, 0xa8, 0x22, 0xba, 0x02, 0x8f, 0x06, 0x88, 0x09, 0xc0, 0x40, 0xa9, 0x33, 0xbd, - 0x23, 0x99, 0x31, 0xe9, 0x08, 0x49, 0xa2, 0xa2, 0x1d, 0x91, 0x09, 0x23, 0x98, 0x02, 0x8f, 0x24, - 0xea, 0x10, 0x28, 0x82, 0xcc, 0x31, 0x90, 0x1c, 0x96, 0x3a, 0xd2, 0x1a, 0x82, 0x0a, 0x29, 0x05, - 0xbb, 0x50, 0xb0, 0x40, 0x99, 0x00, 0x3a, 0xc4, 0x9b, 0x30, 0x91, 0x82, 0x7a, 0xc0, 0x88, 0x34, - 0x9b, 0xfa, 0x31, 0xb3, 0x4c, 0xc0, 0x28, 0xa1, 0x59, 0xa2, 0x0b, 0xa1, 0x38, 0x10, 0xf8, 0x6a, - 0xa2, 0x09, 0xa0, 0x02, 0x4a, 0xc2, 0x29, 0xab, 0x91, 0x00, 0x50, 0xa0, 0x98, 0x44, 0xbb, 0x30, - 0x29, 0x27, 0xfb, 0x41, 0xa9, 0x09, 0x03, 0x8d, 0x13, 0x89, 0x88, 0x99, 0xa2, 0x1f, 0x27, 0x9d, - 0x01, 0x28, 0xb9, 0x30, 0x00, 0xc3, 0x4c, 0xa2, 0x9a, 0x20, 0x9a, 0x47, 0x9d, 0x12, 0x88, 0x8b, - 0x05, 0x08, 0x98, 0x1a, 0xa7, 0x2c, 0xa1, 0x38, 0xa1, 0x1d, 0x93, 0x0a, 0x0a, 0x07, 0x90, 0x3b, - 0xd1, 0x28, 0xa1, 0x3a, 0x15, 0x9c, 0x83, 0x3d, 0xd0, 0x28, 0x10, 0x90, 0x89, 0x08, 0xa8, 0x13, - 0x70, 0xe1, 0x28, 0xa9, 0x31, 0xb8, 0x89, 0x30, 0x04, 0x89, 0x9f, 0x06, 0xab, 0x63, 0xd0, 0x38, - 0xa9, 0x22, 0x9b, 0x15, 0xac, 0x33, 0xdb, 0x51, 0xd8, 0x48, 0xa1, 0x08, 0x09, 0x11, 0x09, 0x90, - 0x98, 0x11, 0x2c, 0xb5, 0x10, 0x0e, 0x13, 0xac, 0x04, 0x0d, 0x85, 0x9a, 0x31, 0xca, 0x32, 0x88, - 0xaa, 0x03, 0x2c, 0x85, 0x8a, 0x81, 0x49, 0xf3, 0x5a, 0xd1, 0x29, 0x83, 0x0b, 0x83, 0x9f, 0x23, - 0x98, 0x00, 0x8b, 0x02, 0xba, 0x44, 0xab, 0x18, 0x80, 0x70, 0xe2, 0x2a, 0x82, 0x99, 0x05, 0x8c, - 0x10, 0x81, 0x81, 0x1a, 0xa8, 0x06, 0x0e, 0x04, 0xba, 0x22, 0x09, 0x98, 0xa1, 0x09, 0x45, 0xfb, - 0x11, 0x91, 0x0b, 0x83, 0x3b, 0xe4, 0x39, 0x90, 0x1b, 0x94, 0x39, 0x94, 0x8f, 0x95, 0x19, 0x82, - 0x9b, 0x20, 0xb8, 0x44, 0xca, 0x12, 0x9a, 0x43, 0xb0, 0x8c, 0x12, 0x90, 0x0d, 0x93, 0x32, 0xaf, - 0x15, 0xa9, 0x2a, 0xa1, 0x51, 0xb9, 0xb8, 0x70, 0xc2, 0x18, 0x90, 0x83, 0xab, 0x03, 0x7a, 0xd0, - 0x28, 0x94, 0x0c, 0x01, 0x00, 0x80, 0xab, 0x07, 0x2a, 0x92, 0x8f, 0x04, 0xaa, 0x32, 0xda, 0x22, - 0x9b, 0x13, 0xab, 0x13, 0x1a, 0x82, 0xc8, 0x08, 0x9a, 0x72, 0xb0, 0x25, 0xbc, 0x22, 0x2b, 0x93, - 0x99, 0x82, 0x6c, 0xd2, 0x6a, 0xc3, 0x2c, 0x94, 0x0b, 0x81, 0x08, 0xa0, 0x39, 0xf9, 0x41, 0xa9, - 0x30, 0xd2, 0x39, 0xb2, 0x3c, 0xa3, 0x09, 0x18, 0x0b, 0xa5, 0x49, 0x11, 0x9d, 0x94, 0x2d, 0x93, - 0x98, 0x04, 0x8e, 0x13, 0xab, 0x23, 0x9c, 0x04, 0x3b, 0xe8, 0x21, 0x9c, 0x11, 0x43, 0xeb, 0x08, - 0x12, 0x8b, 0x85, 0x0a, 0x03, 0xab, 0x04, 0x9a, 0x00, 0x38, 0xa1, 0xa0, 0xaa, 0x78, 0x01, 0xd3, - 0x29, 0x82, 0x88, 0xc0, 0x3e, 0x86, 0x9b, 0x14, 0x9c, 0x82, 0x2a, 0xb7, 0x3b, 0xb3, 0x28, 0xc9, - 0x39, 0xa4, 0x3b, 0xa6, 0x29, 0x9a, 0x82, 0x3a, 0xf3, 0x79, 0x88, 0x88, 0x89, 0x08, 0x84, 0x39, - 0x80, 0xbb, 0x81, 0x02, 0x41, 0xab, 0x94, 0x63, 0xcb, 0xa8, 0x42, 0x8c, 0xb4, 0x3a, 0x38, 0xf0, - 0x3a, 0xa3, 0x40, 0x9d, 0x14, 0xa8, 0x3a, 0xc4, 0x29, 0x82, 0x1b, 0x88, 0xa4, 0xb0, 0x4f, 0xa5, - 0x8a, 0x38, 0xe0, 0x10, 0x80, 0x22, 0xfa, 0x38, 0xa2, 0x88, 0x10, 0xa9, 0x12, 0x9b, 0x94, 0x2a, - 0xdb, 0x43, 0x04, 0xbc, 0x62, 0x90, 0x88, 0x09, 0x29, 0xd9, 0x51, 0xc0, 0x39, 0x9b, 0x16, 0xc9, - 0x68, 0xc9, 0x33, 0xca, 0x30, 0xb0, 0x58, 0xc8, 0x21, 0xa8, 0x28, 0x82, 0x9b, 0xa0, 0x33, 0x0e, - 0xa1, 0x02, 0x0f, 0x15, 0x9c, 0x32, 0xaa, 0x10, 0x90, 0x29, 0xd0, 0x48, 0x94, 0xac, 0x31, 0x98, - 0x28, 0x40, 0xe0, 0x08, 0x30, 0xd0, 0x29, 0x9a, 0x06, 0x0b, 0x05, 0x9e, 0x12, 0x0a, 0x23, 0xcb, - 0x82, 0x1b, 0x12, 0x91, 0x32, 0xcd, 0x48, 0xa2, 0x0c, 0x05, 0x0c, 0xa4, 0x1a, 0x92, 0xac, 0x45, - 0x9a, 0x81, 0x0a, 0x81, 0x09, 0x83, 0x8c, 0x42, 0xcb, 0x32, 0x82, 0x9f, 0x24, 0x89, 0xb1, 0x2a, - 0x04, 0x9e, 0x14, 0x0a, 0xb1, 0x1e, 0x23, 0xd9, 0x00, 0x18, 0xc3, 0x10, 0x2b, 0xf2, 0x49, 0xa0, - 0x32, 0xca, 0x19, 0x01, 0x28, 0xf8, 0x20, 0x89, 0x02, 0x92, 0x1c, 0x92, 0x51, 0x98, 0xd9, 0x08, - 0x29, 0x42, 0xf9, 0x39, 0x92, 0x3b, 0xb6, 0x3c, 0xc1, 0x79, 0xc1, 0x29, 0xa0, 0x30, 0xb2, 0x1b, - 0xa1, 0x0a, 0x15, 0xaa, 0xb8, 0x51, 0x10, 0xc0, 0x19, 0xb8, 0x72, 0xb1, 0x28, 0xa8, 0x50, 0xd1, - 0x38, 0xe3, 0x1c, 0x83, 0x28, 0xf1, 0x28, 0x19, 0x92, 0xa0, 0x19, 0x92, 0x09, 0x80, 0x3b, 0xf0, - 0x9c, 0x36, 0x98, 0x1d, 0xb2, 0x38, 0x89, 0x38, 0xc2, 0x20, 0x00, 0x9f, 0x85, 0x3a, 0xa4, 0x3c, - 0xf2, 0x3a, 0x10, 0x99, 0x21, 0xca, 0x38, 0x04, 0x9d, 0x02, 0x10, 0xc9, 0x40, 0xc1, 0x0c, 0x13, - 0x20, 0xe9, 0x10, 0x89, 0x23, 0xb8, 0x1b, 0xb3, 0x69, 0x88, 0x94, 0x9c, 0x22, 0x0b, 0xb5, 0x48, - 0x8d, 0x03, 0xad, 0x36, 0xcb, 0x21, 0x91, 0x1a, 0xa0, 0x58, 0x90, 0x81, 0x1a, 0xdb, 0x51, 0xc1, - 0x48, 0xd8, 0x20, 0x89, 0x04, 0xac, 0x31, 0xc8, 0x50, 0xa8, 0x21, 0xaa, 0x30, 0xa8, 0x15, 0xac, - 0x24, 0xa9, 0x1a, 0x94, 0x29, 0xe9, 0x50, 0xb1, 0x1b, 0x03, 0x8c, 0x85, 0x0c, 0x93, 0x1d, 0xa3, - 0x29, 0xc1, 0x49, 0xb2, 0x48, 0xb9, 0x02, 0x39, 0xb4, 0x1d, 0x93, 0x2b, 0x93, 0x39, 0xb7, 0x0f, - 0x83, 0x19, 0xc1, 0x3a, 0x90, 0x80, 0x01, 0x8c, 0x16, 0x9b, 0x43, 0xe9, 0x08, 0x10, 0x82, 0x8b, - 0x19, 0xe3, 0x79, 0xc0, 0x30, 0xb0, 0x5a, 0xa1, 0x09, 0x98, 0x61, 0xb1, 0x2a, 0xc9, 0x43, 0x8a, - 0x28, 0xc1, 0x0a, 0x32, 0xba, 0x03, 0x8d, 0x25, 0xa8, 0x89, 0x80, 0x99, 0x02, 0x1f, 0x96, 0x8c, - 0x03, 0x1b, 0xb1, 0x22, 0x11, 0x3b, 0xf3, 0x2b, 0x24, 0xad, 0x53, 0xc8, 0x49, 0xc1, 0x3a, 0xa3, - 0x08, 0x2b, 0xf2, 0x08, 0x30, 0xc0, 0x39, 0xd3, 0x38, 0xc9, 0x2a, 0x84, 0x18, 0xa0, 0x88, 0xcc, - 0x71, 0x92, 0x09, 0x0c, 0x15, 0x89, 0xa1, 0x19, 0xb0, 0x70, 0xd1, 0x39, 0xc0, 0x38, 0x02, 0xac, - 0x13, 0x8c, 0x14, 0x9c, 0x82, 0x89, 0x48, 0xb0, 0x03, 0x8f, 0x13, 0x0a, 0x12, 0xf9, 0x39, 0x01, - 0xab, 0x21, 0x14, 0xac, 0x15, 0xbb, 0x23, 0x1b, 0xa6, 0x2a, 0x98, 0x20, 0xae, 0x25, 0xaa, 0x41, - 0xba, 0x24, 0xbc, 0x23, 0x8c, 0x33, 0xfb, 0x20, 0x88, 0x38, 0xc1, 0x08, 0x00, 0x3d, 0x96, 0x0c, - 0x02, 0x9b, 0x04, 0x1b, 0x96, 0x0c, 0x83, 0x2c, 0x83, 0x8c, 0x14, 0x8c, 0xa1, 0x39, 0x02, 0x0a, - 0xa2, 0x4a, 0xeb, 0x41, 0xa0, 0x89, 0x28, 0xc4, 0x4b, 0xb2, 0x19, 0x88, 0x31, 0xa2, 0x8d, 0x83, - 0x9e, 0x72, 0xa0, 0x08, 0x90, 0x20, 0x89, 0x85, 0x9c, 0x53, 0xd9, 0x30, 0xc0, 0x3a, 0xa3, 0x4b, - 0xc4, 0x1a, 0xa8, 0x31, 0xe2, 0x39, 0x98, 0x83, 0x8b, 0x10, 0x15, 0x8b, 0xa2, 0x08, 0x82, 0x0f, - 0x33, 0xfb, 0x20, 0x89, 0x10, 0xa2, 0x0b, 0x51, 0xb1, 0x08, 0xb3, 0x2f, 0xc8, 0x24, 0x8c, 0x03, - 0x0d, 0x23, 0xea, 0x58, 0xa9, 0x21, 0x90, 0x8c, 0x33, 0xd9, 0x00, 0x49, 0xd2, 0x18, 0x00, 0x89, - 0xa3, 0x8e, 0x14, 0x98, 0x00, 0x98, 0x04, 0x0f, 0x06, 0x9b, 0x01, 0x18, 0x89, 0x81, 0x19, 0xb2, - 0x1c, 0x04, 0x0f, 0xb4, 0x3a, 0x93, 0xac, 0x03, 0x3b, 0xd2, 0x83, 0x5a, 0xd0, 0x28, 0x81, 0x20, - 0xd9, 0x30, 0x8b, 0x86, 0x89, 0x30, 0xd9, 0x32, 0x9c, 0x31, 0xea, 0x42, 0xba, 0x30, 0xda, 0x21, - 0x13, 0x8f, 0x82, 0x1b, 0x02, 0xa1, 0x2b, 0xd2, 0x29, 0x92, 0x43, 0xcd, 0x53, 0xba, 0x32, 0xc9, - 0x30, 0x89, 0x81, 0x9c, 0x22, 0x03, 0xad, 0x52, 0xe9, 0x41, 0xaa, 0x93, 0x2b, 0x95, 0x1d, 0x94, - 0x1a, 0x01, 0x8b, 0x13, 0xcb, 0x22, 0x8b, 0x06, 0x9d, 0x21, 0x91, 0x2a, 0x88, 0x05, 0xad, 0x40, - 0xa2, 0x29, 0x98, 0x39, 0xe2, 0x4b, 0xa5, 0x2a, 0x09, 0x84, 0x0b, 0x81, 0x8d, 0x16, 0xa9, 0xb9, - 0x60, 0x90, 0x89, 0x03, 0x0c, 0xa5, 0x4b, 0xb1, 0x3b, 0xa3, 0x11, 0x8a, 0x82, 0x0a, 0x04, 0x83, - 0x0e, 0x86, 0x9c, 0x12, 0xb8, 0x10, 0x80, 0x38, 0xf3, 0x70, 0xca, 0x21, 0xa0, 0x19, 0x93, 0x0b, - 0xad, 0x45, 0xa9, 0x20, 0xb9, 0x22, 0x0a, 0xb2, 0x20, 0x11, 0x78, 0xf9, 0x18, 0x48, 0xb0, 0x32, - 0xc9, 0xab, 0x41, 0xa2, 0x4a, 0xa8, 0x28, 0x87, 0x8d, 0x04, 0xaa, 0x33, 0xab, 0x03, 0x9f, 0x14, - 0x8b, 0x82, 0x9b, 0x36, 0xcb, 0x22, 0xb8, 0x4a, 0x80, 0xa2, 0x1a, 0x18, 0xf9, 0x62, 0x98, 0x00, - 0xa9, 0x82, 0x3a, 0xa1, 0xb2, 0x7b, 0xa7, 0x1c, 0x92, 0x18, 0x00, 0x80, 0x8d, 0xa3, 0x1c, 0x03, - 0x3a, 0xf2, 0x6b, 0x90, 0x09, 0x92, 0x3a, 0xb4, 0x2b, 0x94, 0x9c, 0x12, 0x10, 0x10, 0xfb, 0x41, - 0x89, 0x83, 0x8e, 0x05, 0x8c, 0x12, 0xa8, 0x08, 0x88, 0x49, 0xb3, 0x88, 0x0e, 0x85, 0x0a, 0x93, - 0x09, 0xba, 0x43, 0x01, 0x99, 0x8d, 0x14, 0xc0, 0x40, 0xbc, 0x42, 0xc8, 0x41, 0xb8, 0x10, 0x08, - 0x14, 0xa8, 0x9d, 0x32, 0x1a, 0xc4, 0x0d, 0x02, 0x0b, 0x96, 0x39, 0xd1, 0x2a, 0x85, 0x1b, 0xb1, - 0x19, 0x22, 0x9a, 0x99, 0x32, 0xbb, 0x49, 0x17, 0xcd, 0x20, 0x21, 0xc0, 0x31, 0x0c, 0xb3, 0x6b, - 0xb3, 0x1b, 0x91, 0x2a, 0x92, 0xc9, 0x8a, 0x71, 0xa2, 0x09, 0x8a, 0x95, 0x5d, 0xb4, 0x1a, 0xa1, - 0x39, 0xc1, 0x4a, 0xd0, 0x31, 0x88, 0x8c, 0x04, 0x1b, 0x90, 0x63, 0xc8, 0x19, 0x88, 0x13, 0x91, - 0x8f, 0x05, 0xab, 0x24, 0xac, 0x82, 0x28, 0x82, 0x9c, 0x82, 0x88, 0x72, 0xb8, 0x88, 0x39, 0xd3, - 0x5b, 0xc2, 0x19, 0x90, 0x32, 0xdb, 0x30, 0x98, 0x62, 0xc1, 0x19, 0x9a, 0x24, 0x99, 0x88, 0xa2, - 0x0b, 0x50, 0xb2, 0x9d, 0x41, 0xa0, 0x70, 0xd9, 0x28, 0x20, 0x98, 0xb1, 0x30, 0xb9, 0x2c, 0x27, - 0xbc, 0x11, 0x1a, 0xa5, 0x1b, 0x31, 0x80, 0xa0, 0x7b, 0xa3, 0xac, 0x28, 0x04, 0x0a, 0xc1, 0x3c, - 0x93, 0x88, 0x3a, 0xa5, 0x0b, 0x12, 0x9b, 0x9a, 0x18, 0x37, 0x4b, 0xf1, 0x3b, 0xb0, 0x63, 0xb9, - 0x41, 0xeb, 0x40, 0x80, 0x90, 0x2a, 0x03, 0x0a, 0x8a, 0xb2, 0x39, 0x31, 0x08, 0xf3, 0x0f, 0x11, - 0x89, 0x83, 0x8d, 0x33, 0xad, 0x22, 0xa8, 0x1c, 0x83, 0x21, 0xcb, 0x99, 0x43, 0x42, 0xb8, 0xb8, - 0x7b, 0xc1, 0x81, 0x5b, 0x86, 0x0d, 0x93, 0x0b, 0x11, 0xb9, 0x34, 0xa9, 0xb8, 0x09, 0x21, 0xa2, - 0x78, 0xc0, 0x09, 0x11, 0x00, 0xd8, 0x39, 0xb5, 0x5a, 0xc9, 0x22, 0x90, 0x2a, 0x86, 0x1a, 0xc0, - 0x40, 0xa8, 0x28, 0xca, 0x41, 0xb8, 0x4a, 0xb3, 0x9a, 0x79, 0x96, 0x2b, 0xd8, 0x38, 0x82, 0x0c, - 0x92, 0x59, 0xd9, 0x12, 0x90, 0x89, 0x00, 0x80, 0x93, 0xaf, 0x54, 0xa0, 0x19, 0xa8, 0x51, 0xb8, - 0x22, 0xcc, 0x33, 0xda, 0x48, 0xa1, 0x88, 0x1a, 0x06, 0xab, 0x51, 0xb0, 0x10, 0xaa, 0x13, 0x8d, - 0x01, 0x18, 0x90, 0x52, 0xcc, 0x11, 0x01, 0x98, 0x30, 0xab, 0x85, 0x69, 0xc0, 0x19, 0x22, 0x09, - 0x91, 0xcf, 0x33, 0x1b, 0xb2, 0x2d, 0x93, 0x0c, 0x14, 0xc8, 0x88, 0x69, 0xa2, 0xa9, 0x2b, 0x04, - 0xc0, 0x58, 0xb0, 0x09, 0x81, 0x60, 0xa0, 0x80, 0x1b, 0x06, 0xaa, 0x81, 0x59, 0xd0, 0x39, 0x84, - 0x99, 0x89, 0x02, 0x89, 0x10, 0xaa, 0x00, 0x12, 0xc9, 0x54, 0xcc, 0x30, 0xb5, 0x4c, 0xc8, 0x20, - 0x18, 0xbb, 0x45, 0x98, 0x29, 0xa0, 0x20, 0xa9, 0x44, 0xab, 0xc2, 0x1e, 0x03, 0x08, 0x10, 0xba, - 0x45, 0xda, 0x00, 0x30, 0xe9, 0x31, 0xb8, 0x09, 0x09, 0x15, 0x0c, 0xb4, 0x2d, 0x86, 0x9b, 0x03, - 0x8b, 0x15, 0x9b, 0x04, 0x8c, 0x93, 0x49, 0xa0, 0x19, 0x9a, 0x02, 0x39, 0xc1, 0x19, 0x43, 0x09, - 0xc1, 0x38, 0x8a, 0x93, 0x87, 0x9f, 0x82, 0x1c, 0xc3, 0x60, 0x9a, 0x03, 0x8b, 0x00, 0x92, 0x8b, - 0x51, 0x91, 0x8e, 0x05, 0x8b, 0x13, 0x99, 0xa0, 0x6c, 0xd2, 0x30, 0xc8, 0x48, 0x90, 0x08, 0x80, - 0x29, 0x88, 0xa3, 0x9c, 0x18, 0x01, 0xe8, 0x2b, 0xb0, 0x57, 0xab, 0x23, 0xba, 0x59, 0x82, 0x01, - 0x9d, 0x10, 0x91, 0x18, 0x9a, 0x01, 0x21, 0xc8, 0x4a, 0xa6, 0x6b, 0xb0, 0x10, 0xa9, 0x29, 0x42, - 0x81, 0xfb, 0x58, 0xb9, 0x02, 0x4a, 0xf1, 0x39, 0xc2, 0x58, 0xa8, 0x10, 0x18, 0x80, 0x99, 0x20, - 0xda, 0x22, 0x0c, 0x96, 0xab, 0x15, 0x8b, 0x05, 0x89, 0xa1, 0x1b, 0x94, 0x88, 0x24, 0x9f, 0x12, - 0x01, 0xcb, 0x48, 0xa1, 0x89, 0x21, 0x84, 0xbf, 0x33, 0x98, 0x80, 0x18, 0x10, 0xd1, 0x1a, 0xa3, - 0x4a, 0xd9, 0x83, 0x68, 0xdb, 0x22, 0x30, 0xe9, 0x30, 0xa9, 0x04, 0x8b, 0x82, 0x8a, 0x82, 0x18, - 0x80, 0xbc, 0x59, 0x07, 0x8b, 0xb2, 0x1b, 0x17, 0xbc, 0x52, 0xa9, 0x11, 0x29, 0xb0, 0x09, 0x72, - 0xb8, 0x09, 0x82, 0x08, 0x31, 0xf9, 0x29, 0x81, 0x31, 0xf0, 0x29, 0xb9, 0x04, 0x89, 0x88, 0x19, - 0x04, 0x8c, 0x34, 0xf0, 0x18, 0x11, 0xd1, 0x18, 0xa8, 0x00, 0x2a, 0xa5, 0x4b, 0xa3, 0x2b, 0xb2, - 0x2a, 0xf1, 0x79, 0xb0, 0x11, 0xa0, 0x1c, 0x83, 0x3a, 0xa1, 0x08, 0x9b, 0x87, 0x3d, 0xb3, 0x0b, - 0x01, 0x36, 0xea, 0x2a, 0x84, 0x1a, 0xc0, 0x29, 0x80, 0x01, 0x0e, 0x84, 0x1c, 0xa3, 0x59, 0xb0, - 0x4a, 0xd2, 0x59, 0xb0, 0x49, 0xa1, 0x0a, 0x81, 0x38, 0xb1, 0x30, 0xab, 0xa0, 0x79, 0xc1, 0x21, - 0x99, 0x92, 0x98, 0x19, 0xf0, 0x5a, 0x91, 0x02, 0x9f, 0x03, 0x8a, 0x51, 0xa9, 0x02, 0x5a, 0xc2, - 0x1a, 0x02, 0x9b, 0x15, 0x8a, 0xe2, 0x1c, 0x92, 0x73, 0xd8, 0x10, 0xa8, 0x31, 0xa8, 0x19, 0x98, - 0x30, 0xc0, 0x4b, 0xb3, 0x1c, 0x23, 0xb2, 0x1d, 0x9e, 0x16, 0x8a, 0x82, 0x1a, 0x93, 0x0c, 0x02, - 0x83, 0x9e, 0x42, 0xf8, 0x29, 0x91, 0x20, 0xa0, 0x09, 0x08, 0x30, 0xe3, 0x3a, 0x89, 0xd5, 0x59, - 0xb0, 0x01, 0x0a, 0x81, 0x18, 0x58, 0xf2, 0x1a, 0x01, 0x99, 0x02, 0x88, 0x21, 0xc9, 0x6a, 0xa3, - 0x39, 0xe8, 0x4a, 0x93, 0xac, 0x24, 0x89, 0xb8, 0x58, 0xc2, 0x38, 0x08, 0xdb, 0x32, 0xa8, 0x08, - 0x82, 0xbd, 0x25, 0x88, 0x8a, 0xd3, 0x48, 0x00, 0xba, 0x20, 0x83, 0x8c, 0x32, 0xa5, 0x1f, 0xb3, - 0x2a, 0x60, 0xb1, 0x19, 0x89, 0x19, 0xb0, 0x2d, 0x07, 0x0c, 0x81, 0x0a, 0x83, 0x49, 0xe9, 0x32, - 0xca, 0x30, 0x80, 0xca, 0x59, 0x85, 0x8b, 0x02, 0x98, 0xac, 0x62, 0xa2, 0x2c, 0xc3, 0x3b, 0x82, - 0x11, 0x8d, 0x14, 0xbb, 0x59, 0xb1, 0x8d, 0x24, 0x98, 0x09, 0xb2, 0x48, 0x90, 0x8a, 0x32, 0x91, - 0x9a, 0x1a, 0xa6, 0x1e, 0x84, 0x90, 0x8b, 0x89, 0x86, 0x48, 0xb9, 0xa3, 0x5c, 0xe0, 0x50, 0xa8, - 0x20, 0xa8, 0x11, 0xa9, 0x38, 0xf2, 0x48, 0x99, 0x80, 0x88, 0x61, 0xa8, 0x80, 0x81, 0x2b, 0x06, - 0xbc, 0x32, 0x9a, 0x99, 0x16, 0x9c, 0x11, 0x11, 0x18, 0xc9, 0x1b, 0x06, 0x80, 0x99, 0x40, 0xc3, - 0x19, 0x0c, 0xb4, 0x1b, 0x14, 0xc8, 0x09, 0x80, 0x70, 0xc8, 0x82, 0x3c, 0x96, 0x0a, 0x91, 0x09, - 0x10, 0x85, 0x9c, 0x00, 0x88, 0x92, 0x69, 0xd2, 0x29, 0x02, 0xd8, 0x11, 0x0a, 0x93, 0x0a, 0x94, - 0x1d, 0x80, 0x00, 0xc9, 0x29, 0x16, 0x0a, 0xc2, 0x1b, 0xa8, 0x64, 0x89, 0x01, 0xa9, 0x10, 0x50, - 0xf0, 0x19, 0x81, 0x88, 0x38, 0xd2, 0x4b, 0x91, 0x18, 0x84, 0x8c, 0xe0, 0x60, 0xb0, 0x21, 0xb8, - 0x3b, 0xa4, 0x3b, 0xb1, 0x2a, 0x07, 0xa8, 0x8c, 0x10, 0x03, 0x2c, 0x85, 0x9c, 0x31, 0xd0, 0x18, - 0x80, 0x11, 0xa0, 0x81, 0x8e, 0x84, 0x2a, 0x82, 0x69, 0xe1, 0x1a, 0x02, 0x2a, 0xb3, 0x1d, 0xa0, - 0x98, 0x51, 0x92, 0x0e, 0x84, 0x0c, 0x82, 0x8a, 0x18, 0x14, 0x9b, 0x02, 0xb9, 0x4a, 0x33, 0xc4, - 0x2a, 0xa9, 0x72, 0xe0, 0x4a, 0x91, 0x08, 0x00, 0x9b, 0x09, 0x13, 0x23, 0xad, 0x0a, 0x92, 0x62, - 0xac, 0x33, 0xa1, 0x0e, 0x18, 0x92, 0x8d, 0x52, 0xb1, 0x2b, 0x1b, 0x07, 0x0c, 0x20, 0xb8, 0x32, - 0xab, 0x24, 0x9a, 0xb8, 0x1d, 0x17, 0x0e, 0x91, 0x30, 0xb8, 0x38, 0x90, 0x8b, 0x04, 0x49, 0xa3, - 0xbd, 0x3b, 0x17, 0x8a, 0xb0, 0x33, 0x9f, 0x12, 0x90, 0x88, 0x8b, 0x25, 0xb0, 0x2a, 0x04, 0x19, - 0xd8, 0x51, 0xc8, 0x28, 0x0c, 0xc3, 0x2b, 0x25, 0x19, 0xe0, 0x2b, 0xa3, 0x5a, 0x82, 0x0c, 0xa1, - 0x4a, 0x88, 0x11, 0xb9, 0x48, 0x13, 0xfb, 0x29, 0x29, 0x81, 0x10, 0xb2, 0x2e, 0xe0, 0x70, 0xa0, - 0x09, 0x01, 0x8a, 0x81, 0x09, 0x08, 0x70, 0xc4, 0x0c, 0x03, 0xa9, 0x33, 0xbc, 0x05, 0x1c, 0x84, - 0x89, 0xc9, 0x41, 0x89, 0x02, 0x99, 0x1b, 0x80, 0x16, 0x0b, 0xc0, 0x19, 0x22, 0xb1, 0x1c, 0x14, - 0xad, 0x05, 0x9a, 0x01, 0x68, 0xd3, 0x2b, 0xa1, 0x19, 0x03, 0x09, 0xd8, 0x62, 0xa9, 0x09, 0x02, - 0x2a, 0xe2, 0x3a, 0xb2, 0x10, 0x8b, 0x06, 0x99, 0x1a, 0xc2, 0x6b, 0xa3, 0x29, 0x08, 0xf8, 0x48, - 0x80, 0x82, 0x1d, 0x93, 0x2c, 0xb0, 0x10, 0x08, 0x10, 0xd9, 0x20, 0x38, 0xf3, 0x30, 0x9c, 0x01, - 0x99, 0x72, 0xb0, 0x2b, 0xb2, 0x72, 0xc9, 0x00, 0x49, 0xd2, 0x1b, 0x02, 0x08, 0x90, 0x41, 0xab, - 0x40, 0x97, 0x1c, 0xb1, 0x69, 0xa2, 0x0c, 0xa3, 0x1a, 0x83, 0x08, 0x90, 0x1c, 0xb2, 0x68, 0xb1, - 0x0b, 0x52, 0x93, 0xae, 0x11, 0x09, 0xd8, 0x61, 0xa8, 0x02, 0x0c, 0x84, 0x1c, 0x91, 0x02, 0x00, - 0xbc, 0x33, 0x01, 0xf0, 0x5a, 0xb1, 0x88, 0x08, 0xa0, 0x31, 0x11, 0xaf, 0x12, 0x20, 0x88, 0x96, - 0x0d, 0x88, 0x23, 0xbc, 0x00, 0x29, 0x02, 0x33, 0xae, 0x93, 0x1f, 0x04, 0xa8, 0x8a, 0x33, 0x82, - 0x9e, 0x04, 0x1d, 0xa2, 0x10, 0x1b, 0x99, 0x85, 0x1c, 0xb3, 0x1b, 0x23, 0x88, 0x05, 0xaf, 0x31, - 0x91, 0x9b, 0x21, 0xc9, 0x13, 0x3d, 0xd3, 0x28, 0x8e, 0x15, 0x99, 0x19, 0x10, 0x81, 0x0a, 0x84, - 0x0d, 0x85, 0x9d, 0x14, 0x9b, 0x02, 0x2b, 0xa5, 0x1b, 0xa2, 0x28, 0x33, 0xcc, 0x02, 0x9f, 0x12, - 0x31, 0xca, 0xb0, 0x78, 0xb1, 0x10, 0x2a, 0x90, 0x01, 0xc8, 0x6b, 0xb3, 0x2d, 0x85, 0x8b, 0x01, - 0x99, 0x63, 0xda, 0x21, 0x98, 0x00, 0x1c, 0x85, 0xaa, 0x30, 0xb1, 0x08, 0x00, 0x61, 0xc8, 0x08, - 0x0b, 0x23, 0x0c, 0x95, 0x19, 0xb8, 0x9c, 0x37, 0x99, 0x81, 0x0d, 0x85, 0x8b, 0x04, 0x9b, 0x12, - 0x88, 0x81, 0x9d, 0x05, 0x2a, 0xb5, 0x0b, 0x02, 0x18, 0xd9, 0x18, 0x20, 0x81, 0x01, 0xea, 0x38, - 0x89, 0x37, 0x8d, 0x98, 0x00, 0x14, 0xbc, 0x22, 0x99, 0x13, 0x2b, 0xa5, 0xae, 0x12, 0x41, 0xe8, - 0x19, 0x04, 0x9a, 0x01, 0x90, 0x20, 0x8c, 0x02, 0x89, 0xca, 0x00, 0x73, 0xb0, 0x18, 0x89, 0x85, - 0x1e, 0x84, 0x98, 0x19, 0x83, 0x8c, 0x99, 0x00, 0x71, 0xa4, 0x8d, 0x03, 0x0d, 0x93, 0x2a, 0xa3, - 0x1b, 0x42, 0xeb, 0x02, 0x0c, 0x05, 0x8a, 0x08, 0xa1, 0x49, 0xc1, 0x08, 0x01, 0x02, 0x9a, 0x10, - 0x90, 0x68, 0x85, 0xad, 0x40, 0xd0, 0x18, 0x12, 0x9d, 0x14, 0x9b, 0x13, 0x8d, 0x04, 0x0a, 0xa1, - 0x18, 0x83, 0xaf, 0x05, 0x0b, 0x83, 0x89, 0x12, 0xaa, 0xab, 0x74, 0xa8, 0x08, 0x41, 0xb0, 0x99, - 0x09, 0x16, 0x0a, 0xa2, 0x98, 0x0c, 0xa9, 0x37, 0xad, 0x33, 0x9a, 0x95, 0x0c, 0x82, 0x20, 0x08, - 0xda, 0x21, 0xbb, 0x43, 0x08, 0xb0, 0x6b, 0xa3, 0x09, 0x9c, 0x00, 0x16, 0x8c, 0x01, 0x82, 0x8c, - 0x01, 0x16, 0xad, 0x12, 0x18, 0xb0, 0x8b, 0x34, 0xba, 0x15, 0x1d, 0x95, 0x0d, 0x12, 0x99, 0x88, - 0x89, 0x52, 0xd0, 0x29, 0x90, 0x91, 0x28, 0x31, 0xdc, 0x92, 0x40, 0x98, 0xa2, 0x3d, 0x83, 0x98, - 0x98, 0x29, 0x09, 0x17, 0x19, 0xd8, 0x0f, 0x13, 0x8a, 0x80, 0x0a, 0x27, 0xac, 0x80, 0x39, 0x85, - 0xa9, 0x40, 0xd0, 0x88, 0x30, 0x93, 0xcb, 0x50, 0xa1, 0x2a, 0xf9, 0x42, 0xa9, 0x10, 0x88, 0x28, - 0xc9, 0x34, 0x8a, 0xa3, 0x0f, 0x13, 0xca, 0x28, 0xa1, 0x21, 0x9a, 0xa1, 0x28, 0x29, 0xa6, 0x68, - 0xc8, 0x09, 0x90, 0x7b, 0xa2, 0x98, 0x2a, 0x04, 0xa8, 0x1b, 0x20, 0x03, 0xd8, 0x4c, 0xb9, 0x26, - 0x1a, 0x05, 0xac, 0x01, 0x00, 0xa0, 0x1b, 0x10, 0xb8, 0x34, 0xff, 0x33, 0xaa, 0x22, 0x9a, 0xa1, - 0x1b, 0x52, 0xd2, 0x09, 0x88, 0x22, 0xab, 0x33, 0x80, 0xda, 0x22, 0x8e, 0x85, 0x19, 0x91, 0x15, - 0xad, 0x52, 0xdb, 0x32, 0x09, 0xc8, 0x19, 0x04, 0xab, 0x03, 0xab, 0x36, 0xba, 0x11, 0xa8, 0x09, - 0x65, 0xd0, 0x08, 0x88, 0x11, 0x08, 0x98, 0x80, 0x49, 0xa1, 0x31, 0xce, 0x12, 0x61, 0xc9, 0x19, - 0x08, 0x04, 0xab, 0x21, 0xb1, 0x71, 0xda, 0x30, 0xc8, 0x58, 0x80, 0x89, 0x89, 0x11, 0x21, 0xf9, - 0x48, 0xa0, 0x00, 0x8a, 0x83, 0x19, 0x9b, 0x55, 0x80, 0xba, 0x29, 0x14, 0xca, 0x51, 0xc0, 0x20, - 0xad, 0x31, 0x02, 0x0b, 0x90, 0x22, 0xe9, 0x3b, 0xe0, 0x42, 0xb9, 0x02, 0x8e, 0x14, 0x0a, 0xb3, - 0x4b, 0xa8, 0x15, 0x9a, 0xb0, 0x7b, 0x01, 0x91, 0x1b, 0x08, 0x96, 0x1c, 0xc1, 0x38, 0x98, 0x22, - 0xaa, 0x80, 0x3b, 0x07, 0x1a, 0xb2, 0x1e, 0x82, 0xac, 0x33, 0x99, 0x59, 0xb3, 0xbb, 0x6b, 0x90, - 0x83, 0x71, 0xe1, 0x19, 0x88, 0x12, 0x0c, 0x86, 0x8a, 0x80, 0x91, 0x89, 0x3a, 0x83, 0x84, 0x09, - 0xde, 0x41, 0x98, 0x24, 0xac, 0x01, 0x80, 0x38, 0xf2, 0x2c, 0x83, 0x99, 0x01, 0xae, 0x33, 0x02, - 0x98, 0xac, 0x23, 0x1a, 0xb3, 0x98, 0x1f, 0x96, 0x1a, 0x92, 0x8a, 0x22, 0x92, 0x0a, 0xbf, 0x43, - 0x90, 0x12, 0xbd, 0x73, 0xa9, 0x91, 0x40, 0xaa, 0x81, 0x9a, 0x00, 0x3a, 0xa6, 0x68, 0xb0, 0xa9, - 0x72, 0x90, 0x98, 0x10, 0x81, 0xab, 0x08, 0x45, 0xf9, 0x38, 0xb1, 0x28, 0xc0, 0x38, 0x02, 0x9b, - 0xb9, 0x73, 0xc9, 0x41, 0x00, 0xb9, 0x28, 0x01, 0xb9, 0x2b, 0xf1, 0x61, 0x88, 0xa8, 0x29, 0x02, - 0x28, 0x96, 0x9f, 0x11, 0x82, 0x8c, 0x94, 0x2a, 0xa1, 0x40, 0xc8, 0x29, 0x02, 0x91, 0xda, 0x50, - 0xb8, 0x22, 0x0a, 0x93, 0x9a, 0x89, 0x00, 0x7a, 0xe2, 0x2a, 0x01, 0xb1, 0x2b, 0x28, 0x92, 0xfc, - 0x72, 0xc0, 0x10, 0x1a, 0x95, 0x1b, 0x81, 0x20, 0xca, 0x22, 0x8d, 0x04, 0x8a, 0x52, 0xf8, 0x19, - 0x01, 0x01, 0xbb, 0x21, 0x80, 0x48, 0xb9, 0x11, 0x0a, 0x06, 0xc9, 0x1a, 0xb3, 0x70, 0x99, 0xa0, - 0x70, 0xa1, 0x29, 0x08, 0xe9, 0x70, 0xb0, 0x10, 0x9a, 0x13, 0x29, 0xb8, 0x89, 0x18, 0x95, 0x2e, - 0xd3, 0x1a, 0x02, 0x81, 0x89, 0x88, 0x10, 0x05, 0x9a, 0x09, 0x94, 0xbc, 0x60, 0x92, 0x9a, 0x21, - 0x2c, 0xa7, 0x09, 0x39, 0xe3, 0x49, 0xa0, 0x82, 0x0f, 0x13, 0x98, 0xaa, 0x09, 0x63, 0xb0, 0x2a, - 0xb1, 0x39, 0xa9, 0x27, 0xac, 0x81, 0x61, 0x91, 0xba, 0x2c, 0x85, 0x98, 0x09, 0x22, 0xbb, 0x62, - 0xa0, 0x8a, 0x31, 0x81, 0x40, 0xe9, 0x98, 0x34, 0xbb, 0x13, 0x8f, 0x01, 0x80, 0x1a, 0xc4, 0x59, - 0xb9, 0x42, 0xc8, 0x21, 0x9d, 0x13, 0x18, 0xc9, 0x01, 0x28, 0x80, 0x2a, 0xf1, 0x51, 0x98, 0x88, - 0x88, 0xb8, 0x52, 0x24, 0xf0, 0x1c, 0x01, 0x03, 0xbd, 0x30, 0x80, 0x00, 0xb8, 0x19, 0x90, 0x41, - 0x21, 0x95, 0xdf, 0x12, 0x11, 0xd8, 0x39, 0x83, 0x88, 0x99, 0x19, 0x22, 0xc9, 0x53, 0xac, 0xa0, - 0x2a, 0x27, 0xaa, 0x2a, 0x96, 0x2b, 0xd2, 0x39, 0xb8, 0x72, 0xb8, 0x10, 0x0a, 0x00, 0x85, 0x0a, - 0x9a, 0x33, 0xbd, 0x16, 0x8a, 0xa0, 0x48, 0x81, 0x92, 0x0e, 0xa1, 0x48, 0xa8, 0x13, 0x99, 0x8f, - 0x33, 0xb9, 0x89, 0x42, 0x21, 0xea, 0x89, 0x30, 0xb1, 0x35, 0x8d, 0xa3, 0x9c, 0x13, 0x0c, 0x81, - 0xb2, 0x60, 0xe9, 0x21, 0xa9, 0x32, 0x98, 0x11, 0xf9, 0x49, 0x92, 0x1a, 0xa5, 0x3b, 0xc1, 0x8a, - 0x23, 0x81, 0xbd, 0x52, 0xc8, 0x38, 0xd3, 0x4a, 0x81, 0x80, 0x8b, 0x88, 0x1a, 0x05, 0x91, 0x0e, - 0x84, 0x19, 0xa0, 0x88, 0x52, 0xc1, 0x9a, 0x62, 0x98, 0x21, 0xa9, 0xa9, 0x7b, 0xd1, 0x19, 0x82, - 0x1b, 0x93, 0x0e, 0x13, 0xba, 0x72, 0x92, 0x8b, 0x98, 0x23, 0xbb, 0x61, 0x80, 0xa0, 0xa8, 0x49, - 0xa0, 0x28, 0x01, 0x4b, 0xf1, 0x3d, 0x58, 0xb0, 0xa1, 0x7b, 0xb8, 0x38, 0x81, 0x10, 0xc8, 0x1a, - 0x02, 0x89, 0x28, 0x81, 0x27, 0x9e, 0x01, 0x31, 0xdd, 0x22, 0x90, 0xb0, 0x3c, 0x02, 0x90, 0x89, - 0x09, 0x23, 0xab, 0x07, 0x2e, 0xb0, 0x21, 0x12, 0x8f, 0xb0, 0x34, 0x9a, 0xa0, 0x79, 0x83, 0xac, - 0x28, 0x98, 0x22, 0x88, 0xa8, 0x2e, 0xa5, 0x2b, 0x93, 0x08, 0x2a, 0x96, 0x99, 0x0d, 0x02, 0x20, - 0xc0, 0x8a, 0x31, 0x35, 0xdd, 0x12, 0x2a, 0xf0, 0x50, 0xb8, 0x20, 0x2b, 0xa3, 0x30, 0xda, 0x10, - 0x9b, 0x14, 0x8a, 0x2c, 0xb5, 0x28, 0x2a, 0xa5, 0xcb, 0x71, 0x90, 0x81, 0x8b, 0x91, 0x32, 0xa9, - 0x81, 0x48, 0xe0, 0x31, 0xab, 0xc9, 0x62, 0x80, 0x22, 0xcf, 0x21, 0x10, 0x91, 0x0d, 0xa2, 0x20, - 0x99, 0x88, 0x80, 0x08, 0x71, 0xe2, 0x88, 0x1a, 0x04, 0x12, 0xbd, 0x32, 0xaa, 0x84, 0x8c, 0x12, - 0x91, 0x2a, 0x92, 0xea, 0x3b, 0x37, 0xb9, 0x98, 0x59, 0x92, 0xb9, 0x59, 0xc1, 0x20, 0x19, 0xc0, - 0x29, 0xe9, 0x31, 0x23, 0xdd, 0x29, 0x02, 0x18, 0x84, 0x9c, 0x82, 0x80, 0x29, 0xb1, 0x8a, 0x52, - 0x84, 0xcf, 0x32, 0x90, 0x29, 0xa1, 0x1a, 0xc1, 0x33, 0x1c, 0xf8, 0x81, 0x39, 0x82, 0x8d, 0x02, - 0x08, 0x90, 0xab, 0x70, 0xe1, 0x4a, 0x13, 0xbb, 0x20, 0x11, 0xc9, 0x30, 0x3a, 0xc7, 0x0a, 0x00, - 0x04, 0x9d, 0x22, 0x10, 0xe9, 0x11, 0x99, 0x81, 0x28, 0xc0, 0x01, 0x0f, 0x93, 0x18, 0x10, 0xaa, - 0x17, 0x0e, 0x92, 0x1a, 0x01, 0x12, 0xa9, 0x8d, 0x90, 0x75, 0xa8, 0x99, 0x30, 0xb2, 0x0c, 0x03, - 0x1a, 0x19, 0xa5, 0x89, 0xbc, 0x73, 0xa3, 0x9b, 0xa8, 0x78, 0x91, 0x99, 0x42, 0xa8, 0x00, 0x1b, - 0xb4, 0x1a, 0x09, 0x17, 0xaa, 0xa9, 0x4a, 0x87, 0x88, 0x19, 0x00, 0x90, 0x2b, 0x05, 0x10, 0xfc, - 0x30, 0xa0, 0x29, 0xa0, 0x08, 0x42, 0xe9, 0x0a, 0x61, 0xc8, 0x31, 0x8b, 0xa3, 0x3a, 0x90, 0x53, - 0xbe, 0x52, 0x90, 0x09, 0xaa, 0x20, 0x33, 0xdb, 0x80, 0x50, 0xc1, 0x4a, 0x84, 0x9b, 0x09, 0x03, - 0x88, 0xbc, 0x31, 0x43, 0xe9, 0x09, 0x20, 0x93, 0x2c, 0xa3, 0x8c, 0x18, 0x07, 0x1d, 0xc2, 0x4a, - 0x01, 0xa8, 0x09, 0xa0, 0x60, 0xc8, 0x21, 0xa9, 0x13, 0x1c, 0x05, 0xba, 0x58, 0xd2, 0x5b, 0x91, - 0x8a, 0x08, 0x12, 0x01, 0xbc, 0x38, 0x82, 0x49, 0xa1, 0x28, 0xc8, 0x2d, 0xa6, 0x0d, 0x13, 0x1a, - 0x91, 0xb8, 0x3c, 0x94, 0x01, 0x0f, 0x04, 0x8c, 0x01, 0x20, 0xd8, 0x40, 0x99, 0x83, 0x8e, 0x02, - 0x90, 0x0a, 0x14, 0x99, 0xc0, 0x68, 0x90, 0x88, 0x30, 0xd8, 0x08, 0x88, 0x05, 0x0c, 0xa0, 0x41, - 0xa0, 0x80, 0x1d, 0x84, 0x09, 0x09, 0x04, 0x8b, 0xd0, 0x61, 0xb8, 0x08, 0x30, 0x02, 0xbc, 0x08, - 0x51, 0xd8, 0x22, 0x8c, 0x92, 0x1a, 0x84, 0x09, 0x49, 0xe2, 0x4a, 0xa0, 0x98, 0x3a, 0xb4, 0x69, - 0x88, 0x91, 0x9b, 0x73, 0x90, 0x09, 0x9a, 0xc1, 0x78, 0xb2, 0x0a, 0x32, 0x09, 0xc4, 0x2c, 0x81, - 0x80, 0xaa, 0x70, 0xb0, 0x0b, 0x63, 0xc8, 0x28, 0x88, 0x28, 0xc1, 0x1d, 0x04, 0x88, 0x98, 0x58, - 0xd0, 0x38, 0x91, 0x90, 0x18, 0xa9, 0x11, 0xc9, 0x7b, 0x93, 0x1a, 0xd2, 0x6a, 0xa2, 0x9a, 0x28, - 0x06, 0xbb, 0x01, 0x09, 0x01, 0x22, 0xdc, 0x00, 0x32, 0xba, 0x43, 0xfa, 0x40, 0x08, 0xc0, 0x29, - 0x08, 0x12, 0x21, 0xec, 0x88, 0x21, 0x28, 0xc4, 0x0c, 0x00, 0x04, 0x29, 0xe9, 0x00, 0x39, 0x94, - 0x99, 0x8a, 0x12, 0x0b, 0xc6, 0x2c, 0x92, 0x19, 0x31, 0xa6, 0x8b, 0x1a, 0x17, 0x9a, 0x89, 0x12, - 0x88, 0x22, 0xbc, 0x01, 0x0b, 0x35, 0xa2, 0xbe, 0x88, 0x71, 0xa3, 0x9e, 0x01, 0x04, 0x8b, 0x82, - 0x0a, 0xa0, 0x61, 0xb2, 0x9d, 0x09, 0x35, 0xa1, 0x0b, 0x80, 0x21, 0xb9, 0x48, 0x9b, 0x87, 0x2a, - 0xb1, 0x0a, 0x10, 0x83, 0x72, 0xfb, 0x18, 0x12, 0x99, 0xb9, 0x14, 0x1d, 0x04, 0x98, 0x1c, 0xb1, - 0x71, 0xb0, 0x19, 0x0a, 0xa5, 0x59, 0xc0, 0x18, 0x10, 0x91, 0x8a, 0x10, 0x90, 0x0b, 0x17, 0x1a, - 0xf0, 0x39, 0x93, 0x08, 0x8b, 0x05, 0x1a, 0xba, 0x05, 0x0e, 0x02, 0x88, 0x08, 0xb9, 0x2a, 0x07, - 0x58, 0xe8, 0x28, 0x90, 0x81, 0x2b, 0xc3, 0x4b, 0x92, 0x10, 0x99, 0x0a, 0x17, 0x9b, 0x82, 0xa8, - 0x3a, 0x26, 0xad, 0x03, 0x2b, 0xb2, 0x90, 0x28, 0xa8, 0xf1, 0x4a, 0x12, 0xcd, 0x31, 0x13, 0xaa, - 0x80, 0x8c, 0x07, 0x4b, 0xb0, 0x38, 0xf8, 0x49, 0xb3, 0x29, 0x89, 0x28, 0xa3, 0xad, 0x48, 0x02, - 0xd9, 0x11, 0x08, 0xe0, 0x40, 0xb2, 0x2d, 0x92, 0x01, 0xab, 0x98, 0x44, 0x19, 0xc0, 0x29, 0xa0, - 0x24, 0xac, 0x35, 0xdb, 0x08, 0x40, 0xd0, 0x29, 0x00, 0x02, 0x1d, 0xc2, 0x49, 0x80, 0xb8, 0x62, - 0xc9, 0x30, 0x98, 0x91, 0x0c, 0x24, 0xb8, 0x08, 0x08, 0x98, 0x28, 0xd1, 0x28, 0x42, 0xfc, 0x00, - 0x50, 0xa0, 0x99, 0x28, 0x13, 0xd0, 0x0a, 0x18, 0x12, 0x06, 0x9b, 0x10, 0xd8, 0x48, 0x82, 0x1b, - 0xdc, 0x61, 0xb0, 0x89, 0x20, 0x04, 0x99, 0xa1, 0x0b, 0x92, 0x61, 0x99, 0x98, 0x00, 0x5b, 0x94, - 0xba, 0x20, 0x52, 0xc2, 0xcb, 0x78, 0x90, 0x11, 0x9b, 0x32, 0xd9, 0x2a, 0x43, 0xc9, 0xb8, 0x72, - 0xa8, 0x90, 0x09, 0x93, 0x5b, 0xa5, 0x0c, 0x13, 0x98, 0x99, 0x88, 0x23, 0x8b, 0x26, 0xdd, 0x01, - 0x1b, 0x07, 0x80, 0x8a, 0x90, 0x3a, 0x85, 0x8a, 0x19, 0x93, 0x2b, 0x84, 0x8f, 0x00, 0x32, 0x81, - 0xdf, 0x21, 0x81, 0x08, 0x0b, 0x85, 0x0b, 0x22, 0xb1, 0x9e, 0x11, 0x30, 0xf3, 0x2b, 0x98, 0x32, - 0x99, 0x18, 0x14, 0xeb, 0x31, 0x88, 0xc0, 0x59, 0x81, 0x94, 0xaf, 0x14, 0x0a, 0x90, 0x39, 0x95, - 0x9c, 0x10, 0x18, 0xa3, 0x0d, 0x13, 0xba, 0x80, 0x61, 0xa8, 0x10, 0x89, 0xa3, 0x0c, 0x21, 0x05, - 0x0d, 0xb2, 0x69, 0xb1, 0x98, 0x61, 0xd0, 0x28, 0xb8, 0x30, 0xa8, 0x22, 0xab, 0xc1, 0x78, 0xa2, - 0x9a, 0x42, 0xd2, 0x1b, 0x01, 0xc1, 0x2b, 0x84, 0x23, 0xbc, 0x80, 0x40, 0xb3, 0x00, 0x8e, 0x84, - 0x0c, 0x12, 0xa0, 0x0a, 0x31, 0x13, 0xed, 0x1b, 0x85, 0x21, 0x8e, 0x93, 0x2b, 0xb2, 0x5b, 0x23, - 0xe8, 0x2a, 0x91, 0xc8, 0x5b, 0x83, 0x09, 0x02, 0x8d, 0x92, 0x39, 0x18, 0x04, 0x9d, 0xa0, 0x39, - 0xa3, 0x0a, 0x58, 0xa4, 0x1b, 0x99, 0xa2, 0x71, 0xc8, 0x44, 0xdb, 0x10, 0x18, 0x93, 0x19, 0xbb, - 0x88, 0x47, 0xeb, 0x21, 0x99, 0x03, 0xaa, 0x41, 0xa8, 0xa0, 0x51, 0x09, 0xb1, 0x3c, 0x15, 0xb9, - 0x9b, 0x22, 0x21, 0x1c, 0xb6, 0x2a, 0x9b, 0x45, 0x92, 0xdc, 0x2a, 0x84, 0x10, 0xfa, 0x38, 0x01, - 0xa0, 0x39, 0xb0, 0xaa, 0x70, 0x97, 0x8a, 0x98, 0x41, 0x91, 0x8a, 0x00, 0x10, 0x00, 0xd9, 0x09, - 0xca, 0x45, 0x18, 0xc8, 0x18, 0x29, 0x95, 0x0a, 0xaa, 0x16, 0xac, 0x24, 0xab, 0x10, 0x00, 0x33, - 0xca, 0x9b, 0x15, 0x10, 0xab, 0x13, 0xae, 0x32, 0x80, 0x8d, 0x85, 0x1d, 0x94, 0x29, 0xc8, 0x20, - 0xa8, 0x52, 0xa0, 0xa9, 0x20, 0xa8, 0x24, 0xcb, 0x10, 0x34, 0xfa, 0x19, 0x0a, 0x15, 0x19, 0xc1, - 0x9c, 0x42, 0x10, 0xd0, 0x2a, 0x22, 0xc9, 0x8a, 0x22, 0xc8, 0x5a, 0x93, 0x20, 0x9d, 0x82, 0x44, - 0xca, 0x18, 0x39, 0xa5, 0xad, 0x30, 0xa1, 0x50, 0xc9, 0x03, 0x8d, 0x02, 0x38, 0xe1, 0x0a, 0x22, - 0x80, 0x9a, 0x13, 0x99, 0x04, 0xae, 0x11, 0xa1, 0x4b, 0x14, 0xa8, 0x9a, 0x01, 0x35, 0xc0, 0x4a, - 0xfa, 0x11, 0x91, 0x0f, 0x04, 0x9a, 0x81, 0x28, 0xa0, 0x31, 0xa8, 0x90, 0xb0, 0x4a, 0x69, 0xb2, - 0x91, 0x1f, 0x92, 0x8b, 0x11, 0x25, 0xeb, 0x40, 0xb9, 0x11, 0x20, 0xa0, 0x13, 0x9f, 0x86, 0x08, - 0xa9, 0x08, 0x20, 0xc0, 0x23, 0xaf, 0x22, 0x89, 0x03, 0x82, 0x8d, 0x99, 0x02, 0x01, 0x1c, 0x00, - 0xd3, 0x2c, 0xc3, 0x7b, 0xa3, 0x2c, 0x84, 0xaa, 0x18, 0x08, 0x94, 0x2a, 0x95, 0x0e, 0x02, 0x0b, - 0x82, 0x01, 0xbc, 0x60, 0xc1, 0x1b, 0x23, 0x19, 0xc1, 0x2c, 0xa4, 0x4a, 0xb0, 0x21, 0xb8, 0x8e, - 0x04, 0x2b, 0x96, 0x1b, 0x03, 0xa0, 0x18, 0xab, 0x92, 0x49, 0x88, 0x21, 0xfa, 0x6a, 0xa2, 0x19, - 0xc9, 0x44, 0xba, 0x13, 0x8d, 0x80, 0x12, 0x80, 0xc2, 0x3c, 0xa8, 0x11, 0x01, 0xaa, 0x68, 0xa0, - 0x13, 0xbf, 0x33, 0x38, 0xc2, 0x8b, 0x91, 0x0b, 0x17, 0x1d, 0xd3, 0x3a, 0xb4, 0x5b, 0xb2, 0x2d, - 0x85, 0x19, 0xa9, 0x1b, 0x86, 0x89, 0x00, 0x0a, 0x92, 0x30, 0xa8, 0xb0, 0x4d, 0x84, 0x80, 0xbb, - 0x3a, 0x11, 0x07, 0x29, 0xb1, 0x8d, 0x80, 0x48, 0xe3, 0x0a, 0x33, 0x09, 0xfa, 0x38, 0xa3, 0x5a, - 0xa8, 0x02, 0xbb, 0x49, 0x02, 0xd9, 0x09, 0x49, 0xb3, 0x70, 0xd9, 0x21, 0x88, 0x20, 0xc1, 0x0b, - 0x33, 0x0b, 0x97, 0x8d, 0xa2, 0x58, 0xb1, 0x80, 0x0a, 0x21, 0x84, 0x9d, 0x01, 0x00, 0x88, 0x22, - 0xfa, 0x31, 0xf0, 0x39, 0x90, 0xad, 0x35, 0x98, 0xa8, 0x3a, 0x96, 0x19, 0x88, 0x11, 0x88, 0xca, - 0x14, 0x8b, 0xb2, 0x68, 0xb2, 0xac, 0x71, 0x80, 0xb1, 0x2a, 0x02, 0xc1, 0x0b, 0x49, 0x87, 0x0c, - 0x91, 0x28, 0xca, 0x43, 0x88, 0xbb, 0x01, 0x5a, 0x84, 0x89, 0x0a, 0x33, 0xfb, 0x51, 0xb8, 0x48, - 0x9a, 0x11, 0xb9, 0x40, 0x92, 0x6a, 0xd0, 0x28, 0x88, 0x10, 0xba, 0x42, 0xd9, 0x30, 0x92, 0x0d, - 0xb1, 0x62, 0xd9, 0x21, 0x98, 0x19, 0x82, 0x89, 0x02, 0x0e, 0x15, 0xab, 0x01, 0x28, 0x91, 0x89, - 0x88, 0x08, 0xf0, 0x6c, 0x95, 0x8a, 0x88, 0x30, 0x90, 0xaa, 0x31, 0x93, 0x9f, 0x11, 0xb3, 0x1d, - 0x84, 0x48, 0xe9, 0x20, 0x80, 0x81, 0x9b, 0x10, 0x03, 0xaf, 0x33, 0x81, 0xcc, 0x31, 0x00, 0xb1, - 0x80, 0x3c, 0xd1, 0x50, 0xb9, 0x61, 0xc9, 0x41, 0xa8, 0x19, 0xa9, 0x16, 0x9a, 0x81, 0xa0, 0x18, - 0x02, 0x70, 0xe8, 0x20, 0x0a, 0x92, 0x0c, 0x81, 0x80, 0x2b, 0x93, 0x43, 0x9e, 0x14, 0x88, 0x9a, - 0x11, 0x39, 0xd1, 0x3a, 0xd2, 0x2c, 0xa2, 0x61, 0xb0, 0x8a, 0x30, 0x08, 0x48, 0xf0, 0x1a, 0x28, - 0xa3, 0x42, 0xac, 0x02, 0x3a, 0xf3, 0x1e, 0x81, 0x81, 0x20, 0xb8, 0x38, 0xbd, 0x36, 0xb8, 0x08, - 0x01, 0xb2, 0x09, 0xad, 0x52, 0xa2, 0x2c, 0x93, 0xeb, 0x31, 0x89, 0x06, 0xbb, 0x51, 0x90, 0x80, - 0xac, 0x71, 0xa0, 0x28, 0x9a, 0x82, 0x8d, 0x05, 0x80, 0x88, 0xb0, 0x38, 0xc8, 0x22, 0x40, 0xa4, - 0x1d, 0xe0, 0x39, 0x91, 0x10, 0xa2, 0x8a, 0x91, 0x1f, 0x84, 0x11, 0x0a, 0xa9, 0x12, 0xbe, 0x10, - 0x43, 0x98, 0x23, 0xcd, 0x39, 0xc0, 0x79, 0xa2, 0x0a, 0x90, 0x18, 0x02, 0x8c, 0x12, 0x40, 0xc4, - 0x1d, 0x81, 0xa8, 0x39, 0xa3, 0x41, 0xcb, 0x11, 0x90, 0x82, 0xac, 0x64, 0xa8, 0x9b, 0x32, 0xba, - 0x33, 0x3a, 0xf2, 0x90, 0x2a, 0x12, 0x98, 0x02, 0x9c, 0x72, 0xf0, 0x29, 0x90, 0x38, 0x83, 0x1a, - 0xa4, 0xaf, 0x33, 0x8b, 0x07, 0x9d, 0x02, 0x91, 0x0c, 0x93, 0x48, 0xb1, 0x5a, 0xc0, 0x1b, 0x04, - 0x19, 0x80, 0x91, 0x2b, 0xa8, 0x86, 0x3c, 0xc2, 0x29, 0x00, 0xc0, 0x2b, 0x92, 0x69, 0x93, 0xba, - 0x68, 0xc0, 0x48, 0x90, 0x90, 0x19, 0xb1, 0x1b, 0x9e, 0x27, 0x9a, 0x22, 0xca, 0x19, 0x43, 0x9a, - 0x94, 0x1c, 0x92, 0x38, 0xc2, 0x0e, 0x12, 0x8c, 0x14, 0xbd, 0x43, 0x9a, 0x02, 0x18, 0xa9, 0x22, - 0x8a, 0x86, 0x0d, 0xa1, 0x12, 0xab, 0x05, 0xab, 0x08, 0x73, 0xb1, 0x0b, 0x04, 0x1b, 0xa5, 0x0c, - 0x15, 0x99, 0x00, 0xd9, 0x08, 0x24, 0x1b, 0xe1, 0x40, 0xda, 0x21, 0x98, 0x20, 0x08, 0x98, 0x31, - 0x89, 0xf1, 0x59, 0xa0, 0x09, 0x89, 0x33, 0xbe, 0x25, 0xa9, 0x28, 0xb1, 0x62, 0xb9, 0x18, 0x18, - 0xe2, 0x48, 0xb8, 0x21, 0x98, 0xcb, 0x54, 0x98, 0x08, 0x8a, 0xa5, 0x0f, 0x85, 0x1a, 0xa1, 0x28, - 0x02, 0xda, 0x11, 0x1b, 0x85, 0x8b, 0x92, 0xa9, 0x2a, 0x27, 0x08, 0x9b, 0x14, 0xca, 0x29, 0x18, - 0x07, 0xab, 0x13, 0x0a, 0xd8, 0x10, 0x21, 0xa1, 0x29, 0x8d, 0x97, 0x8f, 0x02, 0x12, 0x8b, 0x82, - 0x8a, 0xa9, 0x32, 0x52, 0xf1, 0x2a, 0x92, 0x19, 0xc9, 0x62, 0x98, 0x88, 0x0a, 0x14, 0xab, 0x22, - 0x15, 0x9f, 0x01, 0x2b, 0x82, 0xba, 0x73, 0xa0, 0x2b, 0x91, 0xa1, 0x2d, 0x95, 0x2b, 0xb2, 0x1a, - 0x44, 0xda, 0x22, 0x8a, 0x94, 0x1d, 0x81, 0xa8, 0x09, 0x70, 0xb1, 0x1a, 0x21, 0x91, 0xbb, 0x22, - 0x28, 0x9a, 0xa7, 0x4d, 0xc2, 0x3a, 0x02, 0xb0, 0x8b, 0x30, 0x97, 0x8d, 0x81, 0x30, 0x8a, 0x21, - 0xd1, 0x19, 0x99, 0x72, 0xa1, 0xbb, 0x54, 0xa9, 0xa8, 0x18, 0x04, 0x19, 0xc3, 0x48, 0xda, 0x29, - 0x15, 0x09, 0x99, 0x18, 0x19, 0x91, 0xaa, 0x92, 0x4a, 0x33, 0xa9, 0xff, 0x20, 0x20, 0xc5, 0x2b, - 0xa2, 0x28, 0xa0, 0x20, 0xf1, 0x39, 0x93, 0x89, 0xba, 0x68, 0x94, 0x8c, 0x53, 0xbb, 0x84, 0x3a, - 0x93, 0x0d, 0x92, 0x38, 0xf1, 0x1c, 0x01, 0x01, 0x89, 0x00, 0x82, 0x9d, 0xb0, 0x71, 0xc3, 0x09, - 0x13, 0xac, 0x12, 0x8a, 0x32, 0xb9, 0x44, 0x9b, 0xcc, 0x21, 0x08, 0x16, 0x8b, 0x01, 0xb8, 0x68, - 0xa0, 0x29, 0x90, 0x79, 0xf2, 0x3b, 0xa2, 0x48, 0xc1, 0x30, 0xd8, 0x1c, 0x85, 0x1b, 0xa2, 0x49, - 0x90, 0x89, 0x19, 0x01, 0x12, 0x0c, 0x86, 0xab, 0xa0, 0x78, 0x91, 0x88, 0x31, 0xb9, 0x10, 0xac, - 0x33, 0x1a, 0x17, 0x9e, 0x83, 0x8e, 0x12, 0x80, 0x20, 0xba, 0x82, 0x8f, 0x02, 0x89, 0x24, 0x08, - 0xe9, 0x80, 0x0a, 0x63, 0x80, 0x00, 0xb8, 0x1a, 0xb3, 0x7a, 0xb1, 0x2a, 0x84, 0x9b, 0xb8, 0x0d, - 0x47, 0x99, 0x00, 0x89, 0xc8, 0x49, 0x93, 0x28, 0x9d, 0x22, 0xc8, 0x29, 0xc3, 0x58, 0xb2, 0x1a, - 0xb0, 0x2a, 0x82, 0x72, 0xb3, 0x0d, 0x02, 0x9b, 0x83, 0x8c, 0x01, 0x08, 0x83, 0xaa, 0xab, 0x37, - 0x23, 0xba, 0xb8, 0x1d, 0x95, 0x39, 0xd8, 0x08, 0x00, 0x78, 0xf3, 0x1b, 0x03, 0x0c, 0x06, 0x8b, - 0x01, 0x99, 0x38, 0x90, 0x13, 0x9a, 0x12, 0xc9, 0x9d, 0x41, 0x00, 0x83, 0x9f, 0x04, 0x9c, 0x41, - 0x80, 0x00, 0x9c, 0x22, 0xd8, 0x39, 0xd1, 0x28, 0x22, 0xeb, 0x01, 0x09, 0x20, 0x14, 0xca, 0x11, - 0x9c, 0x24, 0x98, 0x89, 0x88, 0x50, 0xb5, 0x1c, 0xc0, 0x48, 0x92, 0x1a, 0xe2, 0x3a, 0x94, 0x89, - 0x81, 0x0c, 0x16, 0x9a, 0x98, 0x08, 0x11, 0x01, 0x88, 0xf0, 0x3b, 0x85, 0x11, 0xaa, 0x99, 0x63, - 0x98, 0x98, 0xac, 0x21, 0x24, 0x82, 0x9e, 0x10, 0x90, 0x28, 0xc2, 0x0a, 0x69, 0xa4, 0x8a, 0xba, - 0x71, 0x01, 0x80, 0xa8, 0xdb, 0x60, 0xa1, 0x28, 0xd9, 0x41, 0xa0, 0x00, 0xb9, 0x6a, 0x83, 0x3a, - 0xf8, 0x2a, 0x01, 0x00, 0x28, 0x9a, 0x13, 0xbb, 0x62, 0xd0, 0x2a, 0x82, 0x02, 0xad, 0x88, 0x42, - 0xd0, 0x5a, 0xa8, 0x32, 0xc9, 0x3b, 0xa7, 0x2a, 0x81, 0x20, 0xac, 0x81, 0x38, 0x12, 0xb8, 0x73, - 0xcc, 0x01, 0x3a, 0x95, 0x1c, 0x92, 0x2a, 0x94, 0x9b, 0x20, 0xa2, 0x2b, 0xa3, 0xaa, 0xbf, 0x71, - 0xa2, 0x29, 0x01, 0x99, 0x31, 0xf0, 0x2a, 0x80, 0x20, 0xb1, 0xac, 0x59, 0x05, 0x9b, 0xa1, 0x61, - 0xa0, 0x80, 0x0d, 0x84, 0x0b, 0x13, 0x93, 0x1e, 0xa0, 0x19, 0x84, 0x2e, 0x92, 0x9c, 0x40, 0x98, - 0x21, 0xdb, 0x52, 0xb0, 0x18, 0x80, 0xa9, 0x48, 0xa0, 0x03, 0x9f, 0x01, 0x22, 0x9b, 0x24, 0xc9, - 0x72, 0x99, 0xa8, 0x89, 0x64, 0xa9, 0x20, 0xba, 0x42, 0xa8, 0xa8, 0x18, 0x48, 0xb5, 0x2d, 0xd3, - 0x1b, 0x11, 0x03, 0x1a, 0xa0, 0x1a, 0x81, 0xac, 0x05, 0x40, 0x8c, 0xc2, 0x30, 0xbb, 0x47, 0xa8, - 0x10, 0x09, 0xa9, 0x9b, 0x82, 0x70, 0x84, 0xbb, 0x18, 0x30, 0xf8, 0x58, 0x80, 0x98, 0x81, 0x9f, - 0x13, 0x0b, 0x25, 0xa9, 0x00, 0xa8, 0x09, 0x02, 0x39, 0xf0, 0x6a, 0xb0, 0x41, 0xdb, 0x52, 0xa0, - 0x18, 0xb0, 0x19, 0x91, 0x3b, 0x87, 0x18, 0xdb, 0x48, 0xa1, 0x18, 0x80, 0x12, 0xbb, 0x20, 0xdc, - 0x23, 0x8c, 0x34, 0xa2, 0xbf, 0x14, 0x89, 0x00, 0x19, 0x13, 0x8a, 0xf1, 0x3a, 0xb2, 0x2a, 0x37, - 0xb9, 0xca, 0x48, 0x02, 0x8a, 0xa0, 0x62, 0xdb, 0x22, 0xba, 0x31, 0x03, 0x01, 0xce, 0x08, 0x00, - 0x00, 0x22, 0x89, 0xc0, 0x30, 0x0a, 0x73, 0xf8, 0x68, 0xb0, 0x2a, 0x90, 0x38, 0x01, 0x98, 0xba, - 0x52, 0xd8, 0x72, 0xc8, 0x19, 0x90, 0x42, 0xcb, 0x21, 0x88, 0x01, 0xb0, 0x32, 0xdc, 0x40, 0x90, - 0x90, 0x9c, 0x53, 0x91, 0x88, 0xa8, 0x20, 0x01, 0xa9, 0xc8, 0x38, 0x04, 0x0f, 0xd3, 0x2c, 0x15, - 0x00, 0xaa, 0x89, 0x81, 0x31, 0xa0, 0x98, 0x2c, 0x03, 0x00, 0xdf, 0x39, 0x14, 0xa8, 0x8a, 0x0a, - 0x02, 0x2a, 0x06, 0x88, 0xa0, 0x2e, 0xa5, 0x2c, 0x04, 0xaa, 0x23, 0xab, 0x19, 0x83, 0x5a, 0xb2, - 0x34, 0xcf, 0x14, 0x89, 0x92, 0x9c, 0x02, 0x09, 0xc0, 0x08, 0x19, 0xd3, 0x70, 0xa2, 0x99, 0x08, - 0x20, 0x88, 0xc1, 0x6b, 0x91, 0x03, 0x1b, 0xf9, 0x69, 0x92, 0x8a, 0x00, 0x99, 0x84, 0x1d, 0x83, - 0x3a, 0xb3, 0x2c, 0xc0, 0x0d, 0x23, 0x92, 0x9c, 0x10, 0xbb, 0x22, 0x72, 0x81, 0x0a, 0xa0, 0x0b, - 0x86, 0x0f, 0x13, 0xa0, 0x0b, 0x93, 0x1c, 0xa3, 0x20, 0x48, 0xb6, 0x8f, 0x03, 0x80, 0x09, 0x89, - 0x12, 0x21, 0xaa, 0xf9, 0x69, 0x9a, 0x15, 0xbc, 0x32, 0x99, 0x12, 0xa8, 0x01, 0x1b, 0x01, 0xb4, - 0x9f, 0xa0, 0x73, 0xb3, 0x0d, 0x91, 0x68, 0x90, 0x18, 0x98, 0x80, 0x18, 0x83, 0xcb, 0x2b, 0x27, - 0xb9, 0x9d, 0x52, 0xa1, 0x0a, 0x80, 0x01, 0x9d, 0x23, 0x11, 0xfa, 0x2a, 0x22, 0x01, 0xd9, 0x4a, - 0x93, 0x0d, 0x03, 0x0b, 0xa8, 0x25, 0x10, 0xdc, 0x20, 0x80, 0x13, 0xdb, 0x21, 0xcc, 0x21, 0x10, - 0x89, 0xd1, 0x70, 0xa1, 0x99, 0x09, 0x23, 0x20, 0xdc, 0x11, 0x9a, 0x13, 0x32, 0xce, 0x20, 0x01, - 0x81, 0xeb, 0x39, 0x05, 0x8a, 0x01, 0x9a, 0xc1, 0x7b, 0x97, 0x8a, 0x81, 0x10, 0xa8, 0x09, 0x01, - 0x11, 0x09, 0xb1, 0x8d, 0x12, 0x42, 0x8b, 0xe4, 0x1a, 0x10, 0x99, 0x90, 0x40, 0xa6, 0x5a, 0xc8, - 0x01, 0x9a, 0x44, 0x91, 0xbb, 0x31, 0x0b, 0xc3, 0x40, 0x99, 0x40, 0xd8, 0x19, 0x90, 0x09, 0x53, - 0x99, 0xc1, 0x70, 0xbc, 0x24, 0x99, 0x12, 0xb9, 0x28, 0xfa, 0x40, 0x08, 0x00, 0x84, 0x8c, 0x81, - 0x28, 0xa1, 0x29, 0x81, 0xe9, 0x8b, 0x38, 0x86, 0x30, 0xba, 0x90, 0x2c, 0xc3, 0x1c, 0x14, 0x98, - 0x5b, 0xe1, 0x28, 0x92, 0x5b, 0x94, 0x8b, 0x8a, 0x21, 0x0a, 0x07, 0x8b, 0x88, 0x22, 0x2a, 0xc4, - 0x0c, 0x32, 0xc0, 0x0a, 0x81, 0x38, 0xc2, 0x8a, 0x00, 0x10, 0x11, 0x18, 0x00, 0xbf, 0x92, 0x79, - 0xc5, 0x8a, 0x28, 0x21, 0xe5, 0x2b, 0x82, 0x11, 0xb1, 0x2b, 0xe2, 0x68, 0xa0, 0x88, 0x28, 0x8b, - 0x17, 0x9a, 0x21, 0x9c, 0xb1, 0x52, 0xab, 0x06, 0x8b, 0x04, 0x9a, 0x22, 0xaa, 0x24, 0xcc, 0x91, - 0x1c, 0x04, 0xb0, 0x40, 0x99, 0x04, 0xab, 0x72, 0xb8, 0x40, 0xc9, 0x31, 0xbb, 0x16, 0x8c, 0x13, - 0x9a, 0x81, 0x99, 0x41, 0xcb, 0x25, 0xb9, 0x10, 0x9b, 0x83, 0x79, 0xb2, 0x09, 0x9c, 0x14, 0x08, - 0xab, 0x34, 0x89, 0x90, 0x8b, 0x23, 0x2a, 0x17, 0x10, 0xfb, 0x3a, 0x93, 0x39, 0xc9, 0x18, 0x09, - 0x95, 0x09, 0x9c, 0x10, 0x81, 0x37, 0xde, 0x30, 0x11, 0xc0, 0x1a, 0x98, 0x06, 0x0a, 0x11, 0xb8, - 0x8d, 0x35, 0x89, 0xcb, 0x32, 0x82, 0x0c, 0x91, 0x0a, 0x34, 0xad, 0x24, 0xae, 0x12, 0x02, 0xa9, - 0x9c, 0x43, 0x11, 0xb0, 0x0d, 0x83, 0xbb, 0x60, 0xe0, 0x28, 0x88, 0x42, 0xb0, 0x0c, 0x03, 0x18, - 0xa8, 0x01, 0x0e, 0xa1, 0x79, 0x92, 0xba, 0x70, 0x91, 0x89, 0x99, 0x32, 0x80, 0x8e, 0x11, 0xa1, - 0x0e, 0x14, 0x88, 0xc8, 0x3b, 0x12, 0xe1, 0x29, 0x18, 0xb2, 0x39, 0x95, 0x9d, 0x22, 0x10, 0xa2, - 0xad, 0x12, 0x48, 0xb2, 0x0c, 0x03, 0xbc, 0x51, 0xd0, 0x31, 0x8a, 0x84, 0x9c, 0x81, 0x1a, 0x04, - 0xa8, 0x88, 0x2a, 0xc3, 0x73, 0xa0, 0xad, 0x34, 0x8a, 0xc1, 0x10, 0x30, 0xa9, 0xa1, 0x48, 0x91, - 0xac, 0x33, 0x19, 0xe1, 0x1c, 0x92, 0x02, 0x20, 0x2b, 0x07, 0x9f, 0x04, 0x0b, 0xc0, 0x68, 0xb1, - 0x39, 0xd8, 0x30, 0x99, 0x14, 0x89, 0x9a, 0x05, 0x1b, 0xd3, 0x2b, 0x83, 0x28, 0xac, 0x00, 0x10, - 0x17, 0x90, 0x9e, 0x82, 0x58, 0xb2, 0x8b, 0x33, 0xb0, 0x1e, 0x83, 0x8c, 0xa1, 0x31, 0x0d, 0xd1, - 0x28, 0x31, 0xc1, 0x39, 0xd1, 0x49, 0xb1, 0x39, 0xc0, 0x2a, 0x26, 0xad, 0x02, 0x80, 0x29, 0x82, - 0xca, 0x73, 0xc9, 0x21, 0x09, 0xa8, 0x13, 0x9f, 0x34, 0xca, 0x08, 0x28, 0xb1, 0x70, 0xc8, 0x3a, - 0x90, 0x02, 0x80, 0x9c, 0x34, 0x80, 0xa9, 0x80, 0x0c, 0x15, 0x99, 0x0b, 0xb8, 0x70, 0x95, 0x19, - 0xc9, 0x50, 0x90, 0xa0, 0x1b, 0x13, 0x09, 0x94, 0x9e, 0x11, 0x91, 0x70, 0xd1, 0x1a, 0x00, 0x93, - 0x1c, 0x81, 0x98, 0x52, 0xa9, 0x98, 0xad, 0x26, 0xa8, 0x01, 0x8b, 0x83, 0x28, 0x04, 0x9f, 0x12, - 0x90, 0x38, 0xc8, 0x19, 0x20, 0x21, 0xf1, 0x0f, 0x82, 0x10, 0x90, 0xa1, 0x0b, 0x22, 0x41, 0xfa, - 0x8a, 0x42, 0x92, 0x8e, 0x02, 0x89, 0x22, 0x89, 0xa2, 0x9a, 0x5b, 0x15, 0xda, 0x88, 0x42, 0x99, - 0x93, 0x09, 0xda, 0x43, 0x80, 0xc9, 0x08, 0x89, 0x33, 0xa4, 0x9c, 0x50, 0xb0, 0x85, 0x0e, 0xa1, - 0x28, 0x03, 0x9d, 0x23, 0xea, 0x30, 0x82, 0x01, 0xaf, 0x42, 0x98, 0xa8, 0x18, 0x58, 0xd3, 0x2b, - 0xc3, 0x49, 0xa0, 0x12, 0x9c, 0x91, 0x19, 0x73, 0xb8, 0x2a, 0xa1, 0x32, 0xea, 0x29, 0x81, 0x09, - 0x14, 0xbb, 0x8e, 0x35, 0x99, 0x88, 0x20, 0x01, 0xcc, 0x32, 0x3a, 0xf0, 0x4c, 0x81, 0xa0, 0x29, - 0x81, 0xa9, 0x10, 0x16, 0xba, 0x20, 0x38, 0xe1, 0x9a, 0x31, 0x13, 0xcc, 0x9d, 0x17, 0xb9, 0x30, - 0x91, 0x81, 0xad, 0x31, 0x83, 0xb9, 0x1a, 0x37, 0xac, 0x12, 0x8b, 0x96, 0x3b, 0xa6, 0x9b, 0x21, - 0x90, 0x21, 0xab, 0x24, 0xa9, 0x80, 0x8b, 0x13, 0xcb, 0x38, 0x87, 0x29, 0xdd, 0x52, 0x88, 0xb8, - 0x31, 0xb8, 0x8c, 0x02, 0x58, 0xa3, 0x5a, 0xa4, 0xbd, 0x32, 0x11, 0xd9, 0x28, 0xa1, 0x40, 0xfa, - 0x50, 0xa0, 0x19, 0x80, 0x11, 0xdb, 0x38, 0x90, 0x03, 0x9c, 0x13, 0x9a, 0x35, 0xca, 0x80, 0x8a, - 0x43, 0xa3, 0xcd, 0x4a, 0x85, 0x89, 0xb0, 0x48, 0x98, 0x31, 0xd1, 0x18, 0xb0, 0x61, 0xc2, 0x0b, - 0x01, 0x18, 0xa4, 0x3b, 0xd1, 0x1a, 0x04, 0xb0, 0x09, 0x0a, 0x06, 0x90, 0x9c, 0x62, 0xe0, 0x29, - 0x11, 0x09, 0xd1, 0x48, 0xa8, 0x0a, 0x84, 0x38, 0xb1, 0x88, 0x78, 0xc1, 0x8a, 0x53, 0xb8, 0x09, - 0x81, 0xbb, 0x41, 0x32, 0xa1, 0xfd, 0x38, 0x11, 0xb9, 0x09, 0x14, 0x19, 0xb1, 0x28, 0xcd, 0x53, - 0x81, 0x91, 0xbd, 0x10, 0x18, 0x11, 0x30, 0xf8, 0x48, 0x21, 0xa0, 0x9f, 0x18, 0x12, 0xda, 0x41, - 0xb8, 0x11, 0x99, 0x40, 0xd2, 0x1a, 0x12, 0x03, 0xee, 0x49, 0x03, 0x9a, 0xa1, 0x3a, 0xc1, 0x1a, - 0x34, 0xa0, 0xce, 0x41, 0x82, 0xab, 0x31, 0x12, 0xa0, 0x8f, 0x12, 0xea, 0x30, 0x23, 0xc8, 0xad, - 0x22, 0x80, 0xd2, 0x49, 0x02, 0xc9, 0x21, 0xa9, 0x00, 0x10, 0x90, 0x93, 0xcf, 0x04, 0x18, 0xa1, - 0x1a, 0x12, 0xaa, 0x1a, 0xb2, 0xa0, 0x7c, 0x17, 0xbc, 0x21, 0x18, 0x92, 0x2b, 0x89, 0x06, 0xad, - 0x38, 0x10, 0xa9, 0x63, 0xb0, 0x8b, 0x81, 0x48, 0xc4, 0x2c, 0x82, 0x08, 0xda, 0x61, 0x90, 0x0b, - 0x03, 0x28, 0xf8, 0x29, 0x92, 0x39, 0xb2, 0x1d, 0xa4, 0x0c, 0x23, 0x11, 0xbd, 0x11, 0x11, 0x8e, - 0x94, 0x9a, 0x11, 0x25, 0xda, 0x88, 0x49, 0xa2, 0x18, 0xa0, 0x09, 0x32, 0xd0, 0x0b, 0x81, 0x72, - 0x98, 0xa1, 0x2b, 0x91, 0x3b, 0xa5, 0xc9, 0x4a, 0x40, 0x95, 0x8b, 0x82, 0x1b, 0x12, 0x08, 0xfa, - 0x3b, 0x22, 0xf0, 0x0b, 0x22, 0x06, 0x8d, 0x02, 0xa8, 0x2a, 0x04, 0x80, 0x9a, 0x09, 0x83, 0x1a, - 0x04, 0x1d, 0x87, 0x8b, 0xb0, 0x8d, 0x33, 0x24, 0xf3, 0x2c, 0xb2, 0x39, 0x02, 0x80, 0xba, 0x2a, - 0x83, 0xaf, 0x30, 0xb1, 0x71, 0xb0, 0x99, 0x1b, 0x25, 0x00, 0xa2, 0x9f, 0x23, 0xa9, 0x13, 0xdd, - 0x41, 0x84, 0x0b, 0xd8, 0x18, 0x11, 0x92, 0x3a, 0xb1, 0x9e, 0x53, 0xa0, 0xa9, 0x39, 0x04, 0x00, - 0xdd, 0x18, 0x82, 0x48, 0xb2, 0x8b, 0x90, 0x71, 0x91, 0x88, 0xb9, 0x71, 0xc0, 0x10, 0xc9, 0x42, - 0x00, 0x99, 0xa9, 0x3b, 0x07, 0x1a, 0x80, 0xab, 0x31, 0x24, 0xf8, 0x0b, 0x23, 0x21, 0xc1, 0x9f, - 0x12, 0x98, 0x20, 0x90, 0x09, 0x09, 0x04, 0x00, 0xac, 0x3a, 0x27, 0xaa, 0xa0, 0x0d, 0x21, 0x24, - 0xac, 0x11, 0x10, 0x99, 0x80, 0x9b, 0x11, 0x09, 0x67, 0xfa, 0x18, 0x01, 0x23, 0xca, 0x0a, 0x81, - 0xa9, 0x61, 0xb0, 0x49, 0xd8, 0x61, 0xa8, 0x08, 0x09, 0x11, 0x94, 0x0f, 0x82, 0x18, 0x99, 0x42, - 0xb0, 0x9d, 0x40, 0x83, 0xac, 0x00, 0x23, 0xc8, 0x09, 0xa9, 0x34, 0x9a, 0x42, 0xd0, 0x9a, 0x61, - 0x94, 0x9c, 0x02, 0x0a, 0x92, 0x19, 0x92, 0xaf, 0x64, 0x98, 0x80, 0x8b, 0x24, 0x8a, 0xa2, 0x8e, - 0x02, 0x18, 0x83, 0x9a, 0xaa, 0x30, 0x13, 0xdd, 0x50, 0x82, 0xba, 0x11, 0x88, 0x29, 0x27, 0xb0, - 0x89, 0xbd, 0x68, 0x01, 0xa8, 0x29, 0x89, 0x84, 0x8c, 0x24, 0xb0, 0x2a, 0x81, 0x80, 0xcc, 0x5a, - 0x84, 0x19, 0xb0, 0x58, 0xf8, 0x3a, 0x94, 0x29, 0xd2, 0x39, 0xb3, 0x8f, 0x23, 0xa8, 0x09, 0x30, - 0xc2, 0x0f, 0x02, 0x2b, 0xa3, 0x1b, 0x94, 0x9a, 0x32, 0x81, 0xa8, 0x38, 0x84, 0xaf, 0x88, 0x12, - 0x71, 0xc9, 0x20, 0x99, 0x19, 0x80, 0x13, 0xa8, 0x9b, 0x52, 0xa0, 0xb0, 0x8f, 0x37, 0x8c, 0x82, - 0x99, 0x81, 0x1d, 0x15, 0xa9, 0x28, 0x90, 0x88, 0xc8, 0x6a, 0xa4, 0x0c, 0x03, 0x98, 0x09, 0x18, - 0x96, 0xab, 0x3b, 0x07, 0x88, 0x8a, 0x85, 0x8b, 0x23, 0x80, 0xf8, 0x2c, 0x04, 0x1a, 0xc1, 0x6a, - 0xa2, 0x0a, 0x02, 0x8a, 0xca, 0x60, 0x82, 0x9a, 0x8a, 0x32, 0x83, 0x8e, 0x03, 0x8c, 0x81, 0x88, - 0x21, 0xca, 0x72, 0x82, 0xc9, 0x9c, 0x42, 0x91, 0x88, 0x08, 0x09, 0x8b, 0x47, 0xa9, 0x09, 0x88, - 0x44, 0xb8, 0xad, 0x30, 0x13, 0x90, 0xb0, 0x9d, 0x98, 0x73, 0x91, 0x8b, 0x31, 0x15, 0xca, 0x3a, - 0xe0, 0x40, 0x80, 0x09, 0xf9, 0x49, 0x02, 0x99, 0x99, 0x42, 0xa1, 0x8c, 0x12, 0x0b, 0xa1, 0x73, - 0xb5, 0x9d, 0x22, 0x08, 0x89, 0x09, 0xa3, 0x0a, 0x28, 0xa1, 0x02, 0x09, 0x65, 0xa0, 0xbc, 0x0c, - 0x27, 0xa0, 0x09, 0x80, 0x9b, 0x39, 0x84, 0x11, 0xa8, 0x61, 0xa1, 0xcd, 0x48, 0x02, 0x20, 0xdb, - 0x00, 0x09, 0x88, 0x35, 0xe9, 0x0a, 0x23, 0x9a, 0xa8, 0x30, 0x09, 0x07, 0x00, 0xaa, 0x09, 0x11, - 0x72, 0xd8, 0x09, 0x20, 0xc0, 0x0b, 0x15, 0x28, 0xc8, 0x32, 0xec, 0x39, 0x03, 0x09, 0xa8, 0x10, - 0x99, 0x09, 0x14, 0x9b, 0x43, 0xab, 0xa5, 0x1e, 0x82, 0x29, 0x17, 0xdb, 0x08, 0x09, 0x26, 0xb9, - 0x21, 0xbb, 0x30, 0xb9, 0x53, 0xca, 0x38, 0x02, 0x94, 0xaf, 0x04, 0x01, 0x9a, 0x01, 0x8b, 0x51, - 0x92, 0xa9, 0x8c, 0x25, 0x10, 0xf1, 0x1b, 0x00, 0x80, 0xa2, 0x2b, 0xf1, 0x48, 0x23, 0xbc, 0x18, - 0x98, 0x23, 0x18, 0xba, 0xb9, 0x72, 0x86, 0x9b, 0x08, 0x40, 0x94, 0x8c, 0x88, 0x49, 0xa4, 0x09, - 0xa9, 0x08, 0x26, 0xbb, 0x22, 0xca, 0x31, 0xa8, 0x22, 0xdf, 0x32, 0x98, 0x31, 0xad, 0x01, 0x31, - 0x85, 0x0b, 0xf9, 0x58, 0xa1, 0x1b, 0x02, 0x9b, 0x24, 0xa9, 0xb8, 0x3a, 0x17, 0x89, 0x0a, 0x09, - 0x07, 0x0b, 0x10, 0xa1, 0x28, 0xb0, 0x48, 0xf2, 0x0f, 0x23, 0xaa, 0x88, 0x20, 0x81, 0x90, 0x30, - 0x9b, 0xa7, 0x3c, 0xa1, 0x80, 0x0b, 0x12, 0x86, 0x8f, 0x14, 0x99, 0x28, 0x82, 0xc9, 0x1a, 0x32, - 0xaa, 0x88, 0x07, 0x1d, 0xa3, 0x3b, 0xf0, 0x1b, 0x17, 0x9a, 0x81, 0x0b, 0x82, 0x58, 0xa1, 0x88, - 0x08, 0x09, 0x07, 0xac, 0x12, 0x19, 0x85, 0xaa, 0x81, 0x8b, 0x27, 0xa0, 0x8c, 0x93, 0x2b, 0x02, - 0x02, 0xdc, 0x30, 0xa0, 0x19, 0xb9, 0x74, 0xb8, 0x31, 0xf8, 0x2b, 0x14, 0x98, 0x88, 0x09, 0x10, - 0x92, 0x11, 0x0b, 0xf8, 0x58, 0xa2, 0xaa, 0x69, 0xa1, 0x88, 0x18, 0x48, 0xc2, 0x8c, 0x44, 0xd9, - 0x09, 0x31, 0xc1, 0x18, 0x80, 0x11, 0xab, 0x22, 0x21, 0xfb, 0x2a, 0x88, 0xb3, 0x8f, 0x17, 0x89, - 0xb8, 0x60, 0xa1, 0x0b, 0x14, 0x99, 0x99, 0x28, 0x84, 0x19, 0xa0, 0xaa, 0x45, 0xbd, 0x35, 0xcb, - 0x30, 0xa8, 0x41, 0xd8, 0x29, 0x84, 0x8a, 0xb1, 0x48, 0xc8, 0x10, 0x90, 0x42, 0xe9, 0x41, 0xa8, - 0xa8, 0x21, 0x14, 0x99, 0x9a, 0x38, 0xd8, 0x2a, 0x25, 0xc0, 0x9c, 0x33, 0xaa, 0x80, 0x3c, 0x17, - 0x9a, 0x0c, 0x02, 0x80, 0x38, 0x91, 0xc2, 0x8e, 0x41, 0xb0, 0x90, 0x71, 0xb0, 0x0b, 0x11, 0x80, - 0x53, 0xda, 0x40, 0xc8, 0x58, 0xb8, 0x21, 0xac, 0x31, 0x91, 0x8a, 0x00, 0x31, 0xa8, 0x32, 0xbe, - 0x55, 0xda, 0x48, 0xc0, 0x39, 0x01, 0x10, 0xcd, 0x41, 0x88, 0x91, 0x1b, 0x04, 0xcb, 0x51, 0x90, - 0x99, 0x20, 0x11, 0xa2, 0xae, 0x20, 0x01, 0xa8, 0x11, 0x0a, 0x21, 0x90, 0x25, 0xce, 0x29, 0x16, - 0xa9, 0xa9, 0x10, 0x18, 0x12, 0xbc, 0x38, 0x84, 0x5a, 0xd3, 0x0c, 0x00, 0x23, 0x88, 0x91, 0x8d, - 0x91, 0x60, 0x84, 0xae, 0x22, 0x89, 0x82, 0x9c, 0x23, 0xcb, 0x44, 0xda, 0x30, 0xdb, 0x63, 0x98, - 0x80, 0xbb, 0x25, 0x8a, 0x80, 0x28, 0x83, 0xac, 0x60, 0xc0, 0x28, 0x12, 0xa1, 0xbc, 0x08, 0x23, - 0xa3, 0x1e, 0xa3, 0xab, 0x51, 0x81, 0x90, 0xd9, 0x6a, 0xa4, 0x9c, 0x42, 0xa9, 0x20, 0x82, 0xc9, - 0x29, 0x82, 0x08, 0x98, 0x8b, 0x74, 0xd3, 0x0a, 0x82, 0x2b, 0x94, 0x4a, 0xc3, 0x8f, 0x22, 0x99, - 0x81, 0x19, 0x80, 0x02, 0xb8, 0x1b, 0x14, 0x1c, 0x07, 0xdb, 0x08, 0x28, 0x16, 0xb9, 0x08, 0x88, - 0x00, 0x08, 0x22, 0xbb, 0x24, 0x11, 0xf8, 0x9f, 0x34, 0xa8, 0x39, 0xb9, 0x11, 0x30, 0xaa, 0x04, - 0x9e, 0x51, 0x81, 0xc9, 0x1c, 0x04, 0x00, 0x99, 0x08, 0xa8, 0x1b, 0x16, 0xab, 0x04, 0x9a, 0x30, - 0x85, 0xae, 0x34, 0xb0, 0x89, 0x20, 0xc9, 0x38, 0x13, 0xa0, 0x09, 0x9a, 0x97, 0x3b, 0xf0, 0x4a, - 0x96, 0x8a, 0x80, 0x20, 0x91, 0x2a, 0xf1, 0x3a, 0x90, 0x18, 0x84, 0x9d, 0x11, 0x02, 0x18, 0xc8, - 0x21, 0xcc, 0x72, 0x90, 0xb8, 0x48, 0xb1, 0x28, 0x89, 0x82, 0x5b, 0xb2, 0x2b, 0xeb, 0x71, 0xa2, - 0x0b, 0x98, 0x41, 0x80, 0x1a, 0xe1, 0x38, 0x98, 0x13, 0xaa, 0x8a, 0x22, 0x2b, 0xe7, 0x3c, 0x94, - 0x10, 0x98, 0xc9, 0x30, 0x89, 0x50, 0xb1, 0x80, 0x9c, 0x52, 0xa0, 0x08, 0x00, 0x10, 0xc9, 0x49, - 0xd0, 0x40, 0x92, 0xbb, 0x09, 0x02, 0x72, 0xb2, 0xea, 0x40, 0xa8, 0x20, 0xe8, 0x30, 0x08, 0x82, - 0xa8, 0xac, 0x73, 0xb8, 0x51, 0xa1, 0x9b, 0x39, 0x03, 0xe8, 0x59, 0x80, 0x82, 0xdb, 0x29, 0x02, - 0x1a, 0x87, 0x8d, 0x92, 0x4b, 0x96, 0x1a, 0x89, 0x20, 0xc0, 0x18, 0x01, 0xab, 0x34, 0x10, 0xf9, - 0x0a, 0x24, 0x88, 0x91, 0xac, 0x42, 0xc8, 0x12, 0x88, 0xba, 0x62, 0xa0, 0x8a, 0x2a, 0x94, 0x33, - 0xbf, 0x14, 0xa9, 0x31, 0x89, 0x88, 0x10, 0x99, 0x84, 0xaa, 0x0f, 0x86, 0x38, 0xd0, 0x0a, 0xb1, - 0x71, 0xa0, 0x30, 0xcb, 0x33, 0xd9, 0x28, 0x81, 0x8a, 0x90, 0x48, 0xb3, 0x1a, 0x89, 0x06, 0x29, - 0xbb, 0x05, 0x8b, 0xc2, 0x71, 0xe3, 0x1b, 0x22, 0x90, 0x9c, 0x22, 0x90, 0x9b, 0x93, 0x2e, 0x95, - 0x39, 0x93, 0xbb, 0x01, 0x39, 0x01, 0xf8, 0x79, 0xa9, 0x02, 0x2a, 0xb8, 0x31, 0x81, 0x88, 0xda, - 0x89, 0x45, 0x0a, 0xb4, 0x1c, 0xa1, 0x78, 0xc0, 0x29, 0x80, 0x30, 0xb1, 0xad, 0x63, 0x80, 0x88, - 0xac, 0x24, 0x98, 0x39, 0xe0, 0x89, 0x32, 0x88, 0x48, 0xf9, 0x49, 0xa1, 0x19, 0x88, 0x33, 0xea, - 0x29, 0x02, 0x0a, 0xb0, 0x7a, 0xb2, 0x1f, 0x82, 0x28, 0xb0, 0x3a, 0x87, 0x8c, 0x00, 0x02, 0xa0, - 0x1d, 0x84, 0xaa, 0x31, 0x89, 0x90, 0x2a, 0x03, 0x4a, 0xf2, 0x1f, 0x84, 0x1a, 0x91, 0x38, 0xc8, - 0x00, 0x19, 0x90, 0xd0, 0x6a, 0x82, 0x89, 0x9a, 0x24, 0x1a, 0xa1, 0x40, 0xd8, 0x8c, 0x34, 0xb9, - 0x28, 0xcb, 0x36, 0xba, 0x22, 0xb0, 0xab, 0x73, 0xb1, 0xa9, 0x51, 0x98, 0x01, 0xb8, 0x4a, 0x93, - 0x0e, 0x94, 0x9b, 0x08, 0x73, 0xa2, 0xab, 0x19, 0x36, 0xea, 0x20, 0xb2, 0x0c, 0x14, 0x99, 0x90, - 0x2b, 0x15, 0x90, 0x9c, 0x19, 0x05, 0x19, 0xa0, 0x28, 0xba, 0x2c, 0x87, 0x89, 0x99, 0x13, 0x11, - 0xd9, 0x2a, 0x12, 0xa3, 0x1b, 0xa6, 0x2d, 0xb2, 0x38, 0xd1, 0x1c, 0x27, 0xb8, 0x0b, 0xb0, 0x20, - 0x42, 0x91, 0xa1, 0xbf, 0x23, 0x39, 0x93, 0xa8, 0xcd, 0x21, 0x48, 0xe8, 0x48, 0x89, 0x15, 0xd8, - 0x1b, 0x13, 0x18, 0xa2, 0x8c, 0xa1, 0x1b, 0x27, 0x99, 0xaa, 0x34, 0xb8, 0x9c, 0x13, 0x2a, 0x95, - 0x5b, 0xd1, 0x89, 0x20, 0x05, 0x99, 0x8c, 0x03, 0x28, 0x90, 0xaf, 0x03, 0x29, 0x05, 0xbb, 0x10, - 0x98, 0x45, 0xb8, 0x99, 0x0b, 0x27, 0xb9, 0x38, 0xa1, 0x09, 0x01, 0x88, 0xba, 0x32, 0x54, 0xe2, - 0x0f, 0x02, 0x39, 0xc0, 0x10, 0xab, 0x42, 0x88, 0x22, 0xf9, 0x3b, 0xa4, 0x2a, 0x90, 0x98, 0x31, - 0x03, 0x98, 0x0d, 0xc0, 0x72, 0xd2, 0x2a, 0xc1, 0x40, 0x98, 0x81, 0x1d, 0xa2, 0x58, 0xb1, 0x8b, - 0x12, 0x91, 0x0c, 0x02, 0x9c, 0x27, 0x0b, 0x82, 0xcb, 0x41, 0x09, 0xa2, 0x0b, 0x98, 0x54, 0x90, - 0x9c, 0x12, 0x88, 0x21, 0x8e, 0x85, 0xab, 0x31, 0x02, 0xe0, 0x1c, 0x13, 0x10, 0xf8, 0x28, 0x80, - 0xb8, 0x62, 0xc9, 0x08, 0x53, 0x99, 0xc1, 0x2b, 0x22, 0x01, 0xdb, 0x08, 0x49, 0xd2, 0x48, 0xb8, - 0x18, 0x01, 0x24, 0xba, 0x88, 0x8b, 0x61, 0x93, 0xc9, 0x0f, 0x33, 0xa0, 0x9b, 0x11, 0x48, 0xc3, - 0x19, 0xe9, 0x39, 0x93, 0x20, 0xc9, 0x0a, 0x45, 0xbb, 0x01, 0x1e, 0x06, 0x8b, 0x81, 0x1b, 0x83, - 0x4a, 0x93, 0x8b, 0x09, 0x61, 0xb3, 0x8b, 0x8c, 0x06, 0xaa, 0x18, 0x28, 0x82, 0x89, 0x24, 0xff, - 0x31, 0x81, 0x8a, 0xaa, 0x72, 0xb0, 0x10, 0x88, 0x88, 0x41, 0xc2, 0x8a, 0x99, 0x2a, 0x27, 0x9c, - 0x12, 0x29, 0xd3, 0x2a, 0xa1, 0x98, 0x38, 0x93, 0x99, 0xaf, 0x17, 0x9c, 0x23, 0x09, 0x89, 0xa2, - 0x2c, 0x07, 0x8d, 0x83, 0x09, 0x8a, 0x22, 0x90, 0x9c, 0x23, 0x18, 0xaa, 0x9f, 0x16, 0x99, 0x28, - 0xc2, 0x39, 0xa0, 0x41, 0xa8, 0xa0, 0x79, 0xa4, 0x8b, 0xc9, 0x20, 0x43, 0xb8, 0x49, 0xe0, 0x38, - 0xa8, 0x21, 0xda, 0x41, 0x88, 0xa0, 0x9a, 0x61, 0x82, 0x09, 0xa8, 0xaa, 0x38, 0x06, 0x1b, 0xc2, - 0x51, 0xb9, 0x1a, 0x03, 0x00, 0x71, 0xd9, 0x91, 0x8d, 0x43, 0x98, 0xa8, 0x5a, 0x12, 0xbc, 0x11, - 0x19, 0x96, 0x1c, 0x82, 0x99, 0x9a, 0x27, 0x89, 0x98, 0x01, 0x08, 0x01, 0x8e, 0x05, 0x89, 0x89, - 0xa0, 0x0a, 0x01, 0x54, 0xb1, 0x8b, 0x29, 0x23, 0xc9, 0x0a, 0x01, 0x73, 0xf9, 0x39, 0xa2, 0x21, - 0xaf, 0x06, 0x9a, 0x12, 0xa0, 0x09, 0xa8, 0x64, 0xba, 0x43, 0xba, 0x21, 0x9c, 0x02, 0x21, 0x9c, - 0x02, 0x08, 0xea, 0x18, 0x16, 0x8a, 0x82, 0xe8, 0x30, 0xb0, 0x22, 0xda, 0x48, 0xa0, 0xa8, 0x21, - 0x99, 0x25, 0xa9, 0x29, 0xda, 0x88, 0x61, 0x12, 0xdb, 0x32, 0x9a, 0x23, 0xdb, 0x42, 0xc9, 0x2a, - 0x95, 0x8e, 0x10, 0x33, 0xb9, 0x53, 0xbe, 0x32, 0x9b, 0x21, 0x90, 0x39, 0xfc, 0x41, 0xb0, 0x08, - 0x20, 0x05, 0xbd, 0x31, 0x98, 0x21, 0x90, 0x00, 0xc9, 0x0c, 0x34, 0xd3, 0x0c, 0x11, 0x80, 0x99, - 0x31, 0xa0, 0x9e, 0x15, 0x98, 0xab, 0x42, 0x01, 0xa3, 0x8d, 0x91, 0x39, 0xe1, 0x20, 0xb9, 0x08, - 0x37, 0xb0, 0x0b, 0x90, 0x32, 0x83, 0xaf, 0xa1, 0x8a, 0x72, 0x83, 0x9f, 0x20, 0x05, 0x9b, 0x08, - 0x89, 0x33, 0xb8, 0x89, 0x00, 0x80, 0x72, 0x04, 0xbf, 0x20, 0x01, 0x09, 0xbb, 0x24, 0x99, 0x11, - 0x8c, 0x07, 0x0e, 0x13, 0x98, 0xb9, 0x49, 0x14, 0xc8, 0x1b, 0x04, 0x98, 0x38, 0xa0, 0x89, 0x8b, - 0x07, 0x1a, 0xd8, 0x28, 0x10, 0xb1, 0x49, 0xb1, 0x0b, 0x04, 0x10, 0xbd, 0x21, 0x42, 0xc8, 0x38, - 0xf9, 0x39, 0x22, 0x08, 0xf1, 0x49, 0x8a, 0x23, 0x9d, 0x83, 0x2b, 0xa1, 0x24, 0xca, 0x0c, 0x94, - 0x48, 0xda, 0x01, 0x40, 0xb8, 0x22, 0xea, 0x30, 0x1b, 0x07, 0x8b, 0x91, 0x0a, 0x43, 0xb9, 0xd9, - 0x3a, 0x26, 0xb9, 0x30, 0xb8, 0x12, 0x10, 0xc9, 0x9d, 0x43, 0x90, 0x04, 0xaf, 0x13, 0x88, 0x01, - 0xa9, 0x88, 0x0b, 0x65, 0xc8, 0x2a, 0x90, 0x34, 0xc8, 0x08, 0xaa, 0x42, 0x92, 0xbc, 0x18, 0x43, - 0x8b, 0x84, 0x8d, 0x04, 0x18, 0x90, 0xa9, 0x89, 0x78, 0x94, 0x1b, 0xc8, 0x4a, 0x85, 0x8a, 0x90, - 0x29, 0xa2, 0x30, 0xc9, 0x2d, 0x04, 0xa8, 0x2a, 0xd8, 0x72, 0x90, 0xa0, 0x9a, 0x63, 0xab, 0x04, - 0x29, 0xa0, 0xab, 0x44, 0x90, 0x8b, 0x12, 0x30, 0xf9, 0x2f, 0x93, 0x08, 0xa9, 0x42, 0xd8, 0x28, - 0x00, 0x00, 0xa9, 0x11, 0xba, 0x0a, 0x71, 0x13, 0xbd, 0x24, 0x8c, 0x01, 0x98, 0x58, 0x91, 0x88, - 0x9c, 0x83, 0x0d, 0x04, 0x38, 0xc8, 0x00, 0x99, 0x01, 0x39, 0xf8, 0x40, 0x20, 0xf9, 0x18, 0x12, - 0x99, 0x11, 0xdc, 0x58, 0xa0, 0x19, 0x12, 0xb0, 0x3a, 0xa4, 0x0c, 0x25, 0xda, 0x21, 0xc8, 0x1a, - 0x83, 0x28, 0x98, 0x02, 0xac, 0x42, 0x2a, 0xb6, 0x8b, 0x73, 0xc8, 0x19, 0x81, 0x32, 0xac, 0x98, - 0x11, 0x30, 0xea, 0x42, 0xdb, 0x30, 0x02, 0xad, 0x28, 0x13, 0x18, 0xe3, 0x4b, 0xd1, 0x21, 0x0a, - 0x91, 0xac, 0x32, 0x85, 0x0e, 0xa2, 0x41, 0x89, 0xa1, 0xaa, 0x11, 0x18, 0x94, 0x89, 0x8c, 0x31, - 0xa4, 0x9e, 0x72, 0xa1, 0x8a, 0x19, 0xa8, 0x81, 0x73, 0x88, 0xc1, 0x10, 0x19, 0x81, 0xfc, 0x38, - 0x03, 0x9c, 0x28, 0x14, 0x9b, 0x80, 0x40, 0x98, 0xaa, 0x06, 0x1a, 0x9d, 0x04, 0x40, 0xe8, 0x0a, - 0x05, 0x99, 0x29, 0x92, 0x98, 0x2b, 0x02, 0xa0, 0x99, 0x56, 0x98, 0xaa, 0x08, 0x33, 0xa8, 0x29, - 0xca, 0x31, 0xd4, 0x5c, 0x90, 0x98, 0x24, 0x8c, 0x00, 0x98, 0x85, 0x3b, 0xc0, 0x98, 0x8a, 0x36, - 0xb9, 0xa8, 0x61, 0x8a, 0x83, 0xbc, 0x38, 0x85, 0x1b, 0x33, 0xe0, 0x82, 0x4b, 0x92, 0x9d, 0x16, - 0x8a, 0x88, 0xbb, 0x27, 0xa9, 0x10, 0xa0, 0x22, 0xac, 0x21, 0xa4, 0x0e, 0xa0, 0x62, 0xca, 0x31, - 0x01, 0xca, 0x08, 0x15, 0xab, 0x32, 0xd9, 0x31, 0xb8, 0x00, 0x10, 0x09, 0x23, 0xa2, 0xd9, 0x0d, - 0x84, 0x0e, 0xa0, 0x40, 0xa0, 0x43, 0xba, 0x92, 0x0b, 0x20, 0x01, 0xf4, 0x4a, 0x90, 0x98, 0x22, - 0x0f, 0x85, 0x1a, 0xa2, 0x9d, 0x22, 0x10, 0xa1, 0x0d, 0x83, 0x1b, 0x86, 0x28, 0xd8, 0x98, 0x5c, - 0xb4, 0x1a, 0x10, 0x10, 0xd3, 0x0c, 0x08, 0x02, 0xa0, 0x58, 0xa0, 0x1d, 0x05, 0x88, 0xcb, 0x41, - 0x81, 0xa9, 0x88, 0x79, 0xb2, 0x3a, 0x93, 0x9b, 0xaa, 0x55, 0xb0, 0x2b, 0xa2, 0x44, 0xd9, 0x39, - 0xd0, 0x20, 0x91, 0x88, 0xb9, 0x29, 0x22, 0x05, 0xcb, 0x41, 0xb0, 0x19, 0x21, 0xc9, 0xd9, 0x51, - 0x01, 0x88, 0x09, 0x15, 0x9a, 0x9c, 0x82, 0x83, 0x0e, 0x24, 0xba, 0x08, 0x41, 0x83, 0x9e, 0xa0, - 0x0d, 0x16, 0x0c, 0x83, 0xac, 0x12, 0x48, 0xb3, 0x9d, 0x32, 0x98, 0x98, 0x4b, 0x95, 0x1d, 0x03, - 0x80, 0xba, 0x8a, 0x26, 0xb8, 0xa9, 0x61, 0x91, 0x0a, 0x13, 0xcb, 0x39, 0x02, 0xf3, 0x2b, 0x1a, - 0x33, 0xc6, 0x2d, 0xa2, 0x08, 0x0a, 0xa2, 0x58, 0xa1, 0x38, 0xb1, 0x0c, 0xa1, 0x73, 0xb0, 0x1a, - 0xc8, 0x68, 0x91, 0x00, 0x99, 0x0a, 0x86, 0x0a, 0x09, 0x02, 0xaa, 0x33, 0xae, 0x34, 0x99, 0x04, - 0x8b, 0xf9, 0x10, 0x81, 0xb8, 0x29, 0x42, 0xa2, 0x89, 0x24, 0xaf, 0x34, 0xbc, 0x42, 0xd9, 0x40, - 0x01, 0xbb, 0x08, 0x35, 0xcb, 0x12, 0x0a, 0xd3, 0x2a, 0x11, 0xc9, 0x31, 0x08, 0x00, 0xdc, 0x51, - 0x98, 0x88, 0xd9, 0x71, 0x98, 0x18, 0xa1, 0x18, 0x09, 0x32, 0xc1, 0x2a, 0x12, 0xea, 0x29, 0xa9, - 0x15, 0x18, 0xbc, 0x31, 0x81, 0xa0, 0x1d, 0xf1, 0x20, 0x80, 0x30, 0xf8, 0x20, 0x08, 0x2b, 0x96, - 0x8b, 0x21, 0x99, 0x03, 0x9e, 0x21, 0x13, 0x9b, 0xbd, 0x36, 0x88, 0x08, 0x19, 0xc1, 0xb8, 0x7c, - 0x93, 0xdb, 0x50, 0xa2, 0x9b, 0x81, 0x51, 0x99, 0xb1, 0x30, 0x8a, 0x9a, 0x15, 0x10, 0xea, 0x40, - 0x22, 0xe9, 0x09, 0x14, 0xba, 0x09, 0x90, 0x14, 0x39, 0xbb, 0x16, 0x18, 0x9a, 0x19, 0xf0, 0x1c, - 0x34, 0xc1, 0x1a, 0x08, 0x00, 0x98, 0x10, 0x9c, 0x15, 0x98, 0x0d, 0xa8, 0x17, 0x5a, 0xb8, 0x09, - 0x21, 0xa0, 0x29, 0xd9, 0x11, 0x4b, 0xa5, 0x2a, 0x89, 0x21, 0x42, 0xfb, 0x08, 0x22, 0xac, 0x24, - 0xab, 0x81, 0x29, 0x12, 0xcf, 0x11, 0x11, 0x81, 0xbc, 0x33, 0xb2, 0x2d, 0x90, 0x24, 0xab, 0x22, - 0x19, 0xc8, 0x72, 0xa1, 0xae, 0x23, 0xbb, 0x42, 0xa2, 0x1b, 0x85, 0xbb, 0x72, 0xb2, 0x8b, 0x04, - 0xac, 0x12, 0x8a, 0x11, 0x16, 0x9c, 0x89, 0x06, 0x09, 0xa1, 0x09, 0x88, 0x01, 0x89, 0x84, 0x71, - 0xf1, 0x18, 0x98, 0x90, 0x2a, 0x15, 0xa9, 0x48, 0xfa, 0x32, 0xa9, 0x18, 0x13, 0xa8, 0x9b, 0x20, - 0xaa, 0x11, 0x52, 0x97, 0x9f, 0x22, 0x89, 0xa1, 0x6a, 0x92, 0x9c, 0x80, 0x32, 0x98, 0xaa, 0x45, - 0xaa, 0x0a, 0x93, 0x71, 0xd9, 0x13, 0x99, 0x99, 0x88, 0x17, 0x09, 0x91, 0xab, 0x49, 0x83, 0x99, - 0x81, 0x1c, 0x93, 0x10, 0xf9, 0x3e, 0x03, 0x89, 0xb0, 0x1d, 0x04, 0x10, 0x99, 0x8b, 0x91, 0x73, - 0xc3, 0x39, 0xd9, 0x20, 0x04, 0xba, 0x9c, 0x42, 0x88, 0x82, 0x9f, 0x22, 0x18, 0x96, 0x9c, 0x20, - 0x80, 0x10, 0xb9, 0x80, 0xaa, 0x74, 0xd2, 0x08, 0x89, 0x42, 0xb0, 0x8a, 0x98, 0x43, 0x0a, 0x07, - 0xca, 0x39, 0x05, 0x99, 0xba, 0x21, 0x91, 0x60, 0xf8, 0x38, 0x88, 0x03, 0xab, 0x01, 0x0b, 0x84, - 0x34, 0x9d, 0xb0, 0x39, 0x92, 0xb9, 0x41, 0x1c, 0xa4, 0x38, 0xe9, 0x30, 0x89, 0x86, 0x1b, 0x98, - 0x18, 0x07, 0x8a, 0x91, 0x9a, 0x21, 0x15, 0xab, 0xa8, 0x41, 0xa8, 0x09, 0x95, 0x1b, 0x08, 0x17, - 0x8c, 0xd0, 0x49, 0x80, 0x80, 0x0b, 0x86, 0xaa, 0x70, 0xb3, 0xba, 0x48, 0x85, 0x98, 0xb9, 0x61, - 0xb0, 0x40, 0x98, 0x90, 0x89, 0x32, 0xa9, 0xd9, 0x2a, 0x27, 0xcb, 0x08, 0x12, 0x09, 0x31, 0xa8, - 0xbd, 0x42, 0x28, 0x13, 0xef, 0x28, 0x32, 0xb8, 0x1a, 0x00, 0x98, 0x30, 0xd9, 0x89, 0x12, 0x50, - 0xb1, 0xbd, 0x53, 0x02, 0x9a, 0xb2, 0x0f, 0x82, 0x10, 0xb2, 0x1d, 0x80, 0x63, 0xa8, 0xca, 0x40, - 0x90, 0x08, 0x12, 0xba, 0x0b, 0x74, 0xd3, 0x0c, 0x21, 0x80, 0xa9, 0x10, 0x09, 0x04, 0x8b, 0x37, - 0xcd, 0x18, 0x22, 0x92, 0x8d, 0x13, 0x9c, 0x81, 0x09, 0x24, 0xbc, 0x43, 0xad, 0x03, 0x09, 0x31, - 0x31, 0xfa, 0x1b, 0x01, 0x9a, 0x23, 0xa8, 0x10, 0xba, 0x46, 0xa9, 0x18, 0x02, 0x01, 0x8d, 0xa1, - 0x0c, 0x43, 0x88, 0x84, 0xbb, 0x0f, 0x03, 0x0a, 0x13, 0x9f, 0x05, 0x8a, 0x39, 0xd8, 0x41, 0x01, - 0x9b, 0xa9, 0x51, 0xa8, 0x02, 0x40, 0xad, 0x03, 0xad, 0x73, 0xb9, 0x13, 0x89, 0x80, 0x9a, 0x63, - 0xd9, 0x50, 0xa8, 0x80, 0x2a, 0x03, 0x9b, 0x00, 0x11, 0x98, 0xa9, 0x20, 0x11, 0xc5, 0x0e, 0x21, - 0x13, 0xb8, 0xac, 0x88, 0xe8, 0x73, 0x98, 0x88, 0x80, 0x80, 0x40, 0xfa, 0x43, 0x88, 0xa9, 0x4b, - 0xc4, 0x39, 0x88, 0x21, 0xbc, 0x38, 0x04, 0x90, 0x9e, 0x23, 0xc1, 0x29, 0xad, 0x13, 0x00, 0x31, - 0xd1, 0x9c, 0x03, 0x48, 0xc1, 0x28, 0x80, 0x89, 0x0a, 0xca, 0x41, 0x45, 0xb0, 0x9a, 0xab, 0x37, - 0x9b, 0x12, 0x8c, 0x94, 0x1b, 0x94, 0xab, 0x32, 0x16, 0x8c, 0xea, 0x39, 0x03, 0x01, 0x9b, 0x02, - 0x2b, 0xa7, 0x2a, 0x12, 0xdc, 0x43, 0x98, 0xa9, 0x09, 0x42, 0xc1, 0x8b, 0x43, 0x88, 0xfa, 0x61, - 0xc8, 0x10, 0x91, 0x08, 0x88, 0xa8, 0x54, 0xc9, 0x20, 0x80, 0x99, 0x29, 0x92, 0x91, 0x1e, 0xb4, - 0x3b, 0x01, 0x44, 0xda, 0x38, 0x80, 0x89, 0xc1, 0x1e, 0x02, 0x10, 0x88, 0x93, 0x9f, 0x15, 0x08, - 0xba, 0x1b, 0x27, 0xb9, 0x00, 0x98, 0x38, 0x01, 0x02, 0xdd, 0x39, 0x81, 0xb2, 0x1c, 0x22, 0x81, - 0xc1, 0x3c, 0xa5, 0x6a, 0xc2, 0x29, 0xe8, 0x30, 0x80, 0x01, 0xac, 0x10, 0x12, 0x9a, 0x82, 0x1d, - 0x05, 0xaa, 0x90, 0x2b, 0x10, 0x36, 0xe0, 0x9b, 0x61, 0x92, 0xa9, 0x1a, 0x11, 0x81, 0x20, 0xdd, - 0x21, 0x30, 0x95, 0x8d, 0xa3, 0x2c, 0x92, 0x13, 0xbd, 0x09, 0x51, 0xa3, 0x0b, 0x9d, 0x33, 0x14, - 0x9e, 0x02, 0x9a, 0x00, 0x05, 0x9a, 0x9a, 0x63, 0xa2, 0x9b, 0x08, 0x24, 0xd8, 0x38, 0xa9, 0x02, - 0xaa, 0x64, 0xb8, 0x9b, 0x34, 0x01, 0xc8, 0x8a, 0x09, 0x26, 0xba, 0x38, 0xf9, 0x61, 0x88, 0x18, - 0xb8, 0x09, 0x58, 0xc3, 0x0c, 0x94, 0x39, 0xc1, 0x18, 0x9a, 0x05, 0x2b, 0xb4, 0x8c, 0x13, 0x18, - 0x90, 0xa9, 0x29, 0x17, 0x08, 0x8a, 0xe0, 0x4b, 0x95, 0x8a, 0x18, 0x08, 0x14, 0xbb, 0x84, 0x1f, - 0xa1, 0x51, 0xa0, 0x9a, 0x10, 0x32, 0xa9, 0x8b, 0x10, 0xa1, 0x1f, 0x17, 0xbb, 0x40, 0x81, 0xa0, - 0x9c, 0x22, 0x18, 0x15, 0xfb, 0x39, 0xa2, 0x61, 0xb9, 0x89, 0x90, 0x61, 0x80, 0xc8, 0x2a, 0x13, - 0x92, 0x0f, 0xa2, 0x39, 0xa1, 0x31, 0xc8, 0x9e, 0x32, 0x01, 0xbb, 0x52, 0xb0, 0x39, 0xd8, 0x18, - 0x91, 0x78, 0x96, 0xac, 0x21, 0x08, 0x03, 0x9a, 0xaa, 0x42, 0x9a, 0x91, 0x4a, 0xc2, 0x52, 0xb9, - 0x09, 0x1a, 0x33, 0x05, 0x0e, 0xb1, 0x9f, 0x42, 0x92, 0x09, 0xa0, 0x1c, 0x93, 0x30, 0x98, 0x8a, - 0x59, 0x94, 0xab, 0x80, 0x61, 0x90, 0xe0, 0x49, 0xa1, 0x99, 0x03, 0x19, 0xd0, 0x58, 0x10, 0xc0, - 0x9c, 0x50, 0x82, 0x81, 0xcc, 0x40, 0xa1, 0x1a, 0x06, 0xac, 0x11, 0x11, 0x91, 0x8d, 0x12, 0x01, - 0xc8, 0x39, 0xc9, 0x39, 0x04, 0x99, 0x18, 0x9d, 0x25, 0x91, 0x9e, 0x12, 0x90, 0x89, 0x33, 0xcd, - 0x33, 0x98, 0x91, 0xbd, 0x62, 0x91, 0x8b, 0x82, 0x19, 0xb1, 0x64, 0x98, 0xb9, 0x4a, 0x86, 0x89, - 0x89, 0x98, 0x22, 0x8e, 0x83, 0x39, 0xf3, 0x5a, 0xa1, 0x08, 0x89, 0x20, 0x92, 0x0a, 0xc9, 0x24, - 0xcb, 0x6a, 0x92, 0xa9, 0x20, 0x32, 0xf0, 0x2b, 0x94, 0x1a, 0xb3, 0x69, 0xd1, 0x09, 0x02, 0x08, - 0xa8, 0x19, 0x33, 0xda, 0x18, 0x29, 0xa5, 0x1d, 0x85, 0x0c, 0x81, 0x98, 0x32, 0xb2, 0x9f, 0x83, - 0x99, 0x63, 0xa9, 0x08, 0x9a, 0x26, 0xa0, 0x9b, 0x03, 0x2b, 0x07, 0x9d, 0x02, 0x18, 0xc1, 0x39, - 0x98, 0x23, 0x08, 0xcb, 0x8a, 0x01, 0x47, 0x9a, 0xb0, 0x40, 0x9d, 0x86, 0x09, 0x89, 0x81, 0x20, - 0xc0, 0x3b, 0x84, 0x68, 0xa0, 0x08, 0xaa, 0x8a, 0x64, 0xa0, 0xba, 0x78, 0xa3, 0x0d, 0x01, 0x29, - 0xb1, 0x21, 0x9c, 0x92, 0x30, 0x01, 0xc8, 0x1c, 0x81, 0x40, 0xf1, 0x1a, 0x23, 0xad, 0x43, 0xab, - 0x04, 0x0b, 0x86, 0x1a, 0xa1, 0x8e, 0x02, 0x40, 0xa0, 0xa9, 0x28, 0xa9, 0x33, 0x89, 0xa9, 0x37, - 0xbc, 0x73, 0xc8, 0x01, 0x19, 0x81, 0xb8, 0x8c, 0x24, 0x89, 0xa8, 0x25, 0x8f, 0x12, 0xb0, 0x09, - 0x8a, 0x45, 0x91, 0xac, 0x88, 0x44, 0xa8, 0x00, 0x91, 0x8f, 0x02, 0x18, 0xd2, 0x5a, 0x91, 0x28, - 0xd0, 0x29, 0x88, 0x20, 0x92, 0xcc, 0x00, 0x39, 0x86, 0x98, 0x0a, 0x03, 0xc8, 0x1b, 0x35, 0xab, - 0x24, 0xa9, 0x9a, 0x48, 0x89, 0x17, 0x9b, 0x02, 0x9f, 0x14, 0x88, 0x8b, 0x83, 0x20, 0xa1, 0xca, - 0x1b, 0x15, 0x1b, 0x85, 0xba, 0x00, 0x21, 0x13, 0xbf, 0x43, 0xc8, 0x81, 0x1c, 0x14, 0x89, 0x82, - 0x9c, 0xaa, 0x84, 0x79, 0xa6, 0x0a, 0x88, 0x10, 0x10, 0xc8, 0x30, 0xab, 0x86, 0x1a, 0xb0, 0x19, - 0x24, 0x28, 0xf1, 0x1d, 0x22, 0x89, 0xa1, 0x0c, 0x91, 0x52, 0x8a, 0xb3, 0x0f, 0x05, 0x99, 0x8a, - 0x15, 0xa9, 0x01, 0x19, 0xa8, 0x30, 0x53, 0xf0, 0x19, 0x00, 0x09, 0xa5, 0x0c, 0x91, 0x88, 0x32, - 0x48, 0xf0, 0x3b, 0x83, 0x0a, 0xd1, 0x29, 0x10, 0xa0, 0x8a, 0x62, 0x92, 0x9c, 0x00, 0x83, 0x9f, - 0x35, 0xb8, 0x2a, 0x82, 0xa0, 0x40, 0xda, 0x30, 0xa1, 0x9b, 0x20, 0x80, 0xfa, 0x78, 0xb3, 0xa9, - 0x0c, 0x34, 0xa8, 0x20, 0x9c, 0x91, 0x53, 0x9b, 0x85, 0x9e, 0x42, 0x90, 0x8a, 0x88, 0x31, 0x90, - 0x12, 0xb8, 0x8b, 0x88, 0x53, 0xfd, 0x30, 0x83, 0x02, 0xce, 0x28, 0x80, 0x21, 0x92, 0xac, 0x18, - 0x39, 0x86, 0x18, 0xec, 0x42, 0xb0, 0x1b, 0x92, 0x48, 0xb0, 0x48, 0xb1, 0x0e, 0x12, 0x81, 0x00, - 0xc9, 0x3b, 0x06, 0xaa, 0x19, 0x16, 0xbb, 0x44, 0xd8, 0x2a, 0x82, 0x08, 0x88, 0x8a, 0x24, 0xc9, - 0x3a, 0xb4, 0x1b, 0x22, 0x10, 0xf8, 0x0d, 0x21, 0x85, 0x0b, 0x83, 0xcb, 0x59, 0x02, 0x28, 0xfb, - 0x41, 0xb9, 0x11, 0xaa, 0x35, 0x9a, 0x81, 0xac, 0x32, 0xa8, 0x41, 0xc8, 0x18, 0xca, 0x73, 0xb8, - 0x88, 0x01, 0x28, 0x91, 0x08, 0x9a, 0x44, 0x01, 0xd1, 0x0c, 0x91, 0x39, 0x15, 0x9a, 0xaa, 0x90, - 0x35, 0x98, 0xce, 0x48, 0x03, 0xba, 0x30, 0x9a, 0x30, 0x93, 0x14, 0xbc, 0x8d, 0x36, 0xd9, 0x8a, - 0x21, 0x15, 0xa8, 0x8d, 0x25, 0xbb, 0x58, 0xa2, 0x09, 0x9b, 0x26, 0xab, 0x91, 0x29, 0x86, 0x0c, - 0x83, 0xbb, 0x32, 0x80, 0x82, 0x08, 0x98, 0x41, 0xc0, 0x9a, 0x37, 0xdc, 0x12, 0x0d, 0x83, 0x0a, - 0x02, 0x8b, 0x22, 0x89, 0x59, 0xb2, 0x8f, 0x12, 0x00, 0x8b, 0x04, 0xd0, 0x8a, 0x20, 0x13, 0x08, - 0x60, 0xe8, 0xb8, 0x78, 0x91, 0x01, 0xcb, 0x31, 0x98, 0x8b, 0x40, 0x84, 0x9b, 0x80, 0xa0, 0xa9, - 0x72, 0x15, 0x99, 0xbc, 0x15, 0x0a, 0x12, 0x89, 0x82, 0x9f, 0x02, 0x2a, 0xe0, 0x49, 0x83, 0x8b, - 0x92, 0x0d, 0x16, 0xbb, 0x42, 0x9b, 0x12, 0x88, 0x0a, 0xa2, 0x3b, 0x26, 0xa0, 0xcc, 0x40, 0x93, - 0x8c, 0x14, 0x8a, 0xc9, 0x52, 0x91, 0x0a, 0x89, 0x81, 0x8a, 0xa8, 0x53, 0xa8, 0x11, 0x0c, 0x87, - 0x0d, 0x21, 0x94, 0x9f, 0x21, 0x81, 0x8a, 0x81, 0x80, 0x18, 0x0b, 0x07, 0x99, 0x1c, 0x03, 0x89, - 0x99, 0x83, 0x3b, 0x13, 0xbb, 0x13, 0xff, 0x70, 0x92, 0xaa, 0x02, 0x8c, 0x24, 0x89, 0x99, 0x8a, - 0x14, 0x9b, 0x80, 0x61, 0xc2, 0x4a, 0xd1, 0x99, 0x51, 0x80, 0x08, 0xc9, 0x29, 0x83, 0x43, 0xea, - 0x19, 0x00, 0x82, 0x82, 0x0e, 0x02, 0x48, 0xb0, 0x39, 0xfc, 0x30, 0x93, 0x8b, 0xb0, 0x4b, 0xb2, - 0x41, 0x80, 0xbb, 0x32, 0xc3, 0x8d, 0x18, 0x25, 0xd9, 0x52, 0xc0, 0x19, 0x10, 0x90, 0x98, 0x4a, - 0xc2, 0x38, 0xa9, 0x14, 0x88, 0x8c, 0x16, 0x88, 0xdd, 0x41, 0xa1, 0x0a, 0x90, 0x08, 0x82, 0x10, - 0x18, 0xf2, 0x4a, 0x10, 0x80, 0xb8, 0x59, 0x12, 0xc9, 0xaa, 0x52, 0xb9, 0x72, 0xd1, 0x0b, 0x14, - 0x0a, 0xb0, 0x28, 0x02, 0x21, 0xdb, 0x10, 0x9a, 0x37, 0xba, 0x90, 0x0a, 0x06, 0x9a, 0x22, 0xcb, - 0x18, 0x23, 0x8b, 0xa7, 0x1d, 0x11, 0x81, 0xd8, 0x1a, 0x22, 0x21, 0xf0, 0x1b, 0x23, 0x10, 0x99, - 0xe8, 0x20, 0x89, 0x25, 0xcd, 0x20, 0x84, 0x19, 0xa0, 0x90, 0x0d, 0x11, 0xb4, 0x0e, 0x90, 0x42, - 0x81, 0xb9, 0x0b, 0x53, 0xa9, 0x24, 0xcb, 0x88, 0x71, 0xc3, 0x09, 0x18, 0x11, 0xba, 0x03, 0xab, - 0x31, 0xed, 0x53, 0xba, 0x40, 0x01, 0x90, 0xae, 0x20, 0x11, 0x10, 0xc1, 0x09, 0xa9, 0x42, 0x93, - 0x8a, 0x99, 0xab, 0x27, 0x89, 0xb1, 0x6a, 0x06, 0xcc, 0x22, 0x8a, 0x81, 0x41, 0xc2, 0x8d, 0x01, - 0x01, 0x9c, 0x02, 0x02, 0x18, 0xca, 0x80, 0x60, 0x00, 0x03, 0x8b, 0xfb, 0x58, 0x91, 0x9c, 0x32, - 0x99, 0xa0, 0x31, 0xbe, 0x01, 0x68, 0x05, 0xaa, 0x8c, 0x13, 0x08, 0x12, 0x3a, 0xc2, 0xbc, 0x48, - 0x02, 0xad, 0x63, 0x91, 0xba, 0x9a, 0x33, 0x12, 0x03, 0x8d, 0x88, 0xd1, 0x5a, 0x82, 0xba, 0xca, - 0x72, 0xc4, 0x0b, 0x13, 0x10, 0xa8, 0x58, 0xc8, 0x0b, 0x34, 0x00, 0xd9, 0x2b, 0x06, 0x8a, 0x90, - 0x0b, 0x04, 0x2b, 0x94, 0xbb, 0x48, 0x42, 0xb2, 0x9c, 0x22, 0x0a, 0xb0, 0x10, 0xcb, 0x40, 0x37, - 0xb9, 0x9e, 0x28, 0x21, 0x82, 0xbc, 0x41, 0x80, 0x90, 0x11, 0xc8, 0x9e, 0x44, 0xb1, 0x9b, 0x09, - 0x34, 0x00, 0x81, 0xaa, 0x0c, 0xe1, 0x70, 0xb0, 0x09, 0x22, 0x01, 0xda, 0x1c, 0x07, 0x09, 0xa9, - 0x18, 0x91, 0x3c, 0x86, 0x09, 0xb0, 0x5a, 0x92, 0x89, 0x99, 0x31, 0xc1, 0x50, 0xa0, 0xc8, 0x69, - 0x81, 0xa9, 0x39, 0x88, 0x01, 0xb8, 0x78, 0xd2, 0x2b, 0x03, 0xa8, 0x09, 0x08, 0x92, 0xa0, 0x78, - 0xd3, 0x00, 0x9a, 0x42, 0xfa, 0x41, 0x91, 0x89, 0x0a, 0x21, 0x98, 0x08, 0x21, 0x8b, 0xb1, 0xbb, - 0x27, 0x8f, 0x93, 0x30, 0x10, 0xec, 0x09, 0x12, 0x38, 0x88, 0x22, 0xf0, 0x3a, 0xb4, 0x5b, 0xd1, - 0x48, 0xc1, 0x8a, 0x21, 0x91, 0x9b, 0x73, 0xd1, 0x2a, 0x82, 0x1b, 0x94, 0x2a, 0xa3, 0x8c, 0x81, - 0x18, 0xb0, 0x70, 0x82, 0xca, 0x88, 0x28, 0x03, 0x8a, 0x71, 0xd8, 0x18, 0x00, 0xa4, 0x0b, 0x1b, - 0x07, 0xa9, 0x98, 0x8a, 0x71, 0x83, 0x89, 0x00, 0xba, 0x4a, 0x17, 0x99, 0x8a, 0x02, 0x1a, 0xd0, - 0x3a, 0x91, 0x73, 0xe1, 0x09, 0xb9, 0x63, 0x91, 0x90, 0x9d, 0x24, 0x90, 0x09, 0x98, 0x28, 0x90, - 0x42, 0xf9, 0x1a, 0x13, 0x81, 0x9b, 0x01, 0xaa, 0x36, 0x8a, 0xb2, 0x9f, 0x31, 0x33, 0xfb, 0x0c, - 0x23, 0xa1, 0x8d, 0x12, 0x98, 0x93, 0x78, 0xc8, 0x08, 0x10, 0x80, 0x01, 0x8f, 0x13, 0x1b, 0x84, - 0x8c, 0x10, 0x98, 0x28, 0xa1, 0xae, 0x32, 0x20, 0x06, 0xad, 0x00, 0x10, 0x10, 0x99, 0x88, 0x0a, - 0x80, 0x66, 0xb9, 0x18, 0x30, 0xc2, 0x8a, 0xdb, 0x51, 0x12, 0xb9, 0x99, 0x48, 0x11, 0xb1, 0x0b, - 0x04, 0xbc, 0x74, 0xc8, 0x8a, 0x20, 0x52, 0xa2, 0xbc, 0x19, 0x25, 0x88, 0x89, 0xf3, 0x4a, 0x82, - 0x99, 0x99, 0x99, 0x37, 0x9a, 0x02, 0x9f, 0x12, 0x80, 0x00, 0x9b, 0x22, 0x30, 0xd1, 0x2c, 0x92, - 0x39, 0x84, 0xcc, 0x99, 0x59, 0x14, 0xa8, 0x9e, 0x32, 0xa0, 0x19, 0x94, 0x1b, 0x00, 0x85, 0x0c, - 0xe8, 0x29, 0x25, 0xa9, 0x80, 0xaa, 0x42, 0x82, 0x8a, 0x98, 0x30, 0x83, 0xa0, 0xcf, 0x12, 0x18, - 0x23, 0xfb, 0x8a, 0x21, 0xa8, 0x19, 0x19, 0x07, 0x3e, 0xb4, 0x0a, 0x10, 0x22, 0xa1, 0x9d, 0xb9, - 0x60, 0x00, 0x01, 0xb8, 0x29, 0x11, 0xc0, 0x99, 0x61, 0x93, 0xbd, 0x71, 0xc0, 0x18, 0x21, 0xb1, - 0x9b, 0x1a, 0x07, 0x0b, 0x88, 0x20, 0xa8, 0x30, 0xd2, 0x49, 0x18, 0x84, 0xc9, 0x3b, 0x93, 0x1a, - 0xc3, 0x40, 0x9f, 0x03, 0x39, 0xa2, 0x9f, 0x11, 0x82, 0x3a, 0xc4, 0x1d, 0x82, 0x11, 0xaf, 0x21, - 0x12, 0xc1, 0x39, 0xca, 0x80, 0x43, 0xca, 0x08, 0x52, 0xd0, 0x4a, 0xa1, 0x2a, 0xa2, 0x3a, 0x86, - 0xab, 0x88, 0x60, 0x91, 0x8c, 0x14, 0x99, 0x98, 0x48, 0xb3, 0x0c, 0x81, 0x28, 0xb2, 0x8e, 0x33, - 0x89, 0x1a, 0x27, 0xcd, 0x29, 0x11, 0xb2, 0x29, 0xb9, 0x36, 0xfb, 0x38, 0x82, 0x08, 0x19, 0x90, - 0xab, 0x51, 0x92, 0x1b, 0xb0, 0x72, 0xf0, 0x08, 0x00, 0x91, 0x01, 0x9b, 0x16, 0xbb, 0x48, 0x85, - 0x1a, 0xba, 0x43, 0xc0, 0x9b, 0x21, 0x17, 0xaa, 0x28, 0xa8, 0x98, 0x49, 0x35, 0xd8, 0x0b, 0x25, - 0xb9, 0x8a, 0x32, 0x91, 0x0d, 0xb2, 0x38, 0xe9, 0x49, 0x05, 0xa9, 0x09, 0x00, 0x92, 0x2a, 0x02, - 0xb8, 0x08, 0x9e, 0x27, 0xb8, 0x0a, 0x21, 0xc9, 0x0a, 0x88, 0x37, 0x0a, 0x92, 0x89, 0x9b, 0x34, - 0xdc, 0x28, 0x98, 0x35, 0xaa, 0x92, 0x0c, 0x90, 0x54, 0x83, 0xac, 0x8a, 0x05, 0x09, 0x8b, 0x01, - 0x32, 0xf9, 0x1a, 0x00, 0xac, 0x44, 0xa3, 0x0e, 0x91, 0x12, 0x1b, 0x94, 0x39, 0x90, 0xae, 0x14, - 0x2a, 0x98, 0x10, 0x85, 0x8e, 0x20, 0xb8, 0x08, 0x42, 0xa8, 0xb3, 0x8e, 0x30, 0xa1, 0x5a, 0xf2, - 0x3a, 0x91, 0x10, 0xd1, 0x1a, 0x24, 0x0a, 0xa3, 0x8d, 0x02, 0x1a, 0x07, 0x8a, 0xaa, 0x69, 0x83, - 0xba, 0x29, 0x12, 0x88, 0xb2, 0xbf, 0x31, 0x02, 0x73, 0xda, 0x00, 0x09, 0x85, 0xab, 0x01, 0x10, - 0xa4, 0x0f, 0x05, 0x9a, 0x82, 0x09, 0x12, 0xbb, 0x88, 0x36, 0xda, 0x2a, 0x83, 0x49, 0xa2, 0x29, - 0xc9, 0x0b, 0x07, 0x89, 0xaa, 0x26, 0xa9, 0x98, 0x20, 0x01, 0x99, 0x01, 0xda, 0x31, 0xaa, 0x46, - 0xb8, 0x88, 0x8b, 0x46, 0xf0, 0x3a, 0xb1, 0x58, 0x98, 0x01, 0xca, 0x41, 0x82, 0xa9, 0x1a, 0x33, - 0xd8, 0x00, 0x0b, 0x17, 0xca, 0x30, 0x88, 0xbb, 0x20, 0x33, 0x98, 0x9d, 0x98, 0x27, 0xb8, 0x30, - 0x88, 0xb9, 0x6a, 0xa4, 0x99, 0x4c, 0x87, 0x0a, 0xb9, 0x33, 0xb9, 0x18, 0x22, 0x89, 0xfb, 0x63, - 0x98, 0xa9, 0x00, 0x11, 0x2b, 0x95, 0xae, 0x11, 0x38, 0x94, 0x9d, 0x22, 0x81, 0x39, 0xfa, 0x10, - 0x1a, 0x96, 0x2a, 0xc2, 0x2b, 0x01, 0x02, 0x98, 0xaf, 0x53, 0xa8, 0x80, 0x0a, 0x16, 0xaa, 0x20, - 0xb8, 0x49, 0x93, 0x2b, 0xf1, 0x80, 0x1a, 0x15, 0xa0, 0x89, 0x18, 0x81, 0x01, 0xad, 0x88, 0x34, - 0x1a, 0xb4, 0x1d, 0xba, 0x36, 0x11, 0xcd, 0x38, 0x92, 0x80, 0x29, 0xb8, 0x22, 0xd8, 0x72, 0xd0, - 0x8a, 0x42, 0x01, 0xac, 0x00, 0x20, 0xa1, 0x29, 0x9a, 0xe3, 0x7a, 0xb3, 0x8c, 0x00, 0x11, 0x03, - 0x8e, 0x82, 0x9a, 0x62, 0xa0, 0x09, 0x91, 0x49, 0xa1, 0x21, 0xbf, 0x53, 0x99, 0x88, 0xba, 0x12, - 0x32, 0x48, 0xf1, 0x1a, 0x39, 0xa7, 0x0c, 0x02, 0x88, 0x30, 0xc8, 0x2a, 0x99, 0x70, 0xa2, 0x89, - 0x8d, 0x14, 0x89, 0x91, 0x2a, 0x03, 0x0a, 0x91, 0xcd, 0x38, 0x80, 0x23, 0xb9, 0xad, 0x75, 0xa1, - 0x98, 0x18, 0x0a, 0x87, 0x8c, 0x02, 0x09, 0x81, 0x02, 0xcf, 0x32, 0xa8, 0x20, 0x89, 0xa8, 0x34, - 0x9e, 0x23, 0x98, 0x1a, 0xa1, 0xb8, 0x72, 0xd0, 0x10, 0x81, 0x09, 0xa4, 0x1e, 0x82, 0x18, 0xa1, - 0x0a, 0x11, 0x95, 0x2c, 0xd0, 0x01, 0x1b, 0xc0, 0x59, 0xa2, 0x0a, 0x40, 0xa3, 0x0f, 0xa3, 0x40, - 0x99, 0xa0, 0x28, 0x28, 0x13, 0x9f, 0xa1, 0x79, 0xb1, 0x3b, 0xc0, 0x41, 0x88, 0xa9, 0x33, 0xac, - 0x06, 0x0c, 0xa2, 0x2c, 0x85, 0x1b, 0xc8, 0x41, 0x98, 0x08, 0x88, 0x22, 0x90, 0x3a, 0xe2, 0x8a, - 0x81, 0x61, 0xa8, 0x8c, 0x03, 0x11, 0xad, 0x02, 0x07, 0x3b, 0xea, 0x32, 0x98, 0x99, 0x12, 0x0a, - 0x00, 0xa2, 0xad, 0x41, 0xc1, 0x30, 0xf8, 0x20, 0x99, 0x15, 0x99, 0x01, 0xcc, 0x20, 0x91, 0x4a, - 0xc2, 0x52, 0xc9, 0x09, 0x11, 0x43, 0xc8, 0x2a, 0xa3, 0x2c, 0x18, 0x87, 0x8d, 0x28, 0xb3, 0x0b, - 0xaa, 0x72, 0xc3, 0x89, 0x30, 0xc0, 0x8a, 0x43, 0x80, 0xb8, 0x0e, 0x15, 0x98, 0x1a, 0x95, 0x1a, - 0xa8, 0x10, 0x1a, 0xb0, 0x73, 0xb2, 0x8c, 0x23, 0x98, 0x04, 0x9f, 0x02, 0xaa, 0x49, 0x82, 0x8b, - 0x91, 0x73, 0xa0, 0xb9, 0x10, 0x61, 0xc9, 0x32, 0xcb, 0x11, 0x10, 0x2a, 0xd0, 0x08, 0x34, 0xba, - 0xbc, 0x36, 0x98, 0x8a, 0x42, 0xf8, 0x20, 0x08, 0xa1, 0x8b, 0x19, 0x47, 0xba, 0x20, 0x88, 0x09, - 0x82, 0xb0, 0x0a, 0x09, 0x15, 0x8d, 0xa2, 0x3a, 0x05, 0x9d, 0x92, 0x41, 0x98, 0x31, 0xe1, 0x0a, - 0x99, 0x47, 0xa9, 0x98, 0x51, 0xba, 0xa2, 0x3b, 0x04, 0x29, 0xb9, 0x84, 0x9f, 0x43, 0xa9, 0x81, - 0x08, 0x19, 0xfb, 0x71, 0xa8, 0x21, 0xba, 0x13, 0x9c, 0x14, 0x8b, 0x13, 0xd9, 0x51, 0x99, 0x03, - 0x9a, 0x39, 0xb2, 0x10, 0xdf, 0x20, 0x88, 0x32, 0xe8, 0x28, 0xb0, 0x61, 0xaa, 0x03, 0x1b, 0xc9, - 0x43, 0xc0, 0x49, 0x80, 0x91, 0x88, 0x8e, 0x04, 0x18, 0x91, 0x0a, 0x98, 0x58, 0x95, 0xaa, 0x09, - 0x02, 0x81, 0x8f, 0x91, 0x51, 0xa8, 0x08, 0x80, 0x08, 0x28, 0x84, 0x91, 0x8f, 0xa2, 0x63, 0xaa, - 0xa0, 0x38, 0x40, 0xf8, 0x3a, 0x88, 0x42, 0xc0, 0x19, 0xc9, 0x44, 0xa9, 0x80, 0x91, 0x3d, 0x95, - 0x0a, 0x83, 0x1d, 0x90, 0x12, 0x0e, 0xa4, 0x2a, 0xa3, 0x1a, 0x93, 0x8d, 0x05, 0x9b, 0xb8, 0x4a, - 0x13, 0xba, 0x16, 0x2b, 0xa4, 0x9a, 0x34, 0xcb, 0x22, 0x9e, 0x14, 0x1b, 0x94, 0x1e, 0x83, 0x0b, - 0x80, 0x89, 0x03, 0x0d, 0x05, 0x9c, 0x02, 0x1a, 0x91, 0x58, 0xc0, 0x98, 0x3b, 0x85, 0x00, 0x8d, - 0x14, 0x88, 0x98, 0x08, 0x81, 0x30, 0xb1, 0x01, 0xaf, 0x42, 0xb1, 0x28, 0xac, 0x11, 0x39, 0xe1, - 0x18, 0x9a, 0x28, 0x38, 0x37, 0xef, 0x31, 0x00, 0xb8, 0x18, 0x2b, 0x97, 0x1a, 0x12, 0xab, 0x19, - 0x17, 0x89, 0x9d, 0x23, 0xa0, 0x2a, 0xa0, 0x08, 0x86, 0x0d, 0x85, 0x8b, 0x11, 0x82, 0xb9, 0x0c, - 0x25, 0x00, 0xc9, 0x3a, 0x93, 0xcc, 0x51, 0xba, 0x12, 0x1b, 0x25, 0xc0, 0x2b, 0x84, 0x08, 0x8a, - 0x93, 0x1c, 0xe1, 0x60, 0x90, 0xa9, 0x52, 0xa0, 0x09, 0x0b, 0x24, 0xd8, 0x2a, 0x12, 0xe0, 0x3a, - 0x12, 0x98, 0xfb, 0x10, 0x10, 0xd8, 0x21, 0x39, 0xc0, 0x58, 0x91, 0x9b, 0x12, 0x41, 0xb1, 0x8f, - 0x02, 0x20, 0xb0, 0x2a, 0x93, 0xad, 0x30, 0xba, 0x17, 0x1a, 0xa3, 0x0b, 0xb8, 0x68, 0x81, 0xab, - 0x91, 0x7a, 0xb8, 0x15, 0xa8, 0x0d, 0x07, 0x1a, 0xb8, 0x11, 0x12, 0x99, 0xa9, 0x21, 0x82, 0x8f, - 0x02, 0x09, 0xb1, 0x5b, 0xa0, 0x89, 0x23, 0x72, 0xb8, 0x1c, 0x95, 0x1b, 0xc9, 0x61, 0xc0, 0x20, - 0xaa, 0x13, 0x1b, 0x86, 0x08, 0x0b, 0xa4, 0x4b, 0xd1, 0x29, 0x91, 0x01, 0x1d, 0x91, 0x18, 0x05, - 0xb8, 0x1e, 0xa3, 0x71, 0xb9, 0x29, 0x04, 0xc8, 0x29, 0x91, 0x2a, 0xc8, 0x92, 0x6a, 0xd8, 0x20, - 0x12, 0xc9, 0x30, 0xc0, 0x48, 0xb9, 0x31, 0x98, 0x18, 0x85, 0x0e, 0x01, 0x90, 0x39, 0xa1, 0x8c, - 0x37, 0xac, 0x02, 0x18, 0x88, 0xc2, 0x0e, 0x15, 0xab, 0x80, 0x30, 0xba, 0x46, 0xda, 0x10, 0x08, - 0x01, 0x90, 0x1c, 0x05, 0x98, 0x08, 0x88, 0x1a, 0x94, 0x9a, 0x18, 0xba, 0x73, 0x93, 0x90, 0xad, - 0x26, 0x8a, 0xc1, 0x49, 0x91, 0x19, 0xb0, 0x1b, 0x11, 0xb8, 0x77, 0xd9, 0x28, 0x00, 0xa0, 0x28, - 0x80, 0x89, 0x13, 0x9c, 0xb3, 0x8f, 0x05, 0x89, 0xa2, 0x3b, 0x93, 0x18, 0x94, 0x8f, 0x03, 0x99, - 0x32, 0xca, 0x10, 0x28, 0x33, 0xf9, 0x1f, 0x91, 0x11, 0x08, 0xa0, 0x0b, 0x21, 0x03, 0xbe, 0x2a, - 0x35, 0xd2, 0x0c, 0x92, 0x18, 0x83, 0x29, 0xa8, 0xd8, 0x7a, 0x82, 0x9a, 0x10, 0x85, 0x1c, 0xa0, - 0x20, 0xba, 0x33, 0x12, 0xaf, 0x01, 0x8c, 0x24, 0xa8, 0x09, 0x31, 0x9c, 0xa7, 0x4b, 0xa8, 0x30, - 0x92, 0x1c, 0x14, 0xaf, 0x31, 0x10, 0x92, 0x9f, 0x14, 0x9a, 0x98, 0x01, 0x78, 0xc0, 0x3a, 0xb0, - 0x41, 0x0a, 0xa3, 0x2b, 0xd1, 0x19, 0x35, 0xcb, 0x30, 0xa8, 0x23, 0xcd, 0x31, 0xa9, 0x18, 0x84, - 0xa0, 0x0e, 0x14, 0x99, 0x1a, 0x13, 0x80, 0xad, 0x03, 0x58, 0xfa, 0x59, 0x80, 0x90, 0x18, 0x88, - 0x99, 0x40, 0x86, 0x8a, 0x80, 0x28, 0x98, 0xba, 0x31, 0x07, 0xac, 0x1b, 0x16, 0xab, 0x31, 0x20, - 0xe2, 0x8b, 0x41, 0x82, 0xca, 0x38, 0x85, 0x0c, 0x81, 0x3b, 0xb6, 0x5b, 0xb2, 0x8a, 0x20, 0x09, - 0x03, 0x9c, 0x33, 0xa9, 0x98, 0x88, 0x32, 0xfc, 0x2b, 0x07, 0x80, 0xac, 0x14, 0x09, 0x98, 0x23, - 0xca, 0x1b, 0xa2, 0x72, 0xa0, 0x30, 0xc2, 0x9f, 0x22, 0x00, 0x9c, 0x22, 0x9a, 0x23, 0xcf, 0x25, - 0x99, 0x08, 0x08, 0x02, 0xcb, 0x21, 0x88, 0x93, 0x0d, 0x02, 0x89, 0x25, 0xca, 0x99, 0x29, 0x52, - 0xb2, 0xdc, 0x41, 0xa1, 0x0a, 0xb0, 0x52, 0xa9, 0x52, 0xb0, 0x0a, 0x88, 0x63, 0xc2, 0x0a, 0x01, - 0x29, 0xe1, 0x40, 0xa9, 0x29, 0x21, 0xd8, 0x99, 0x3c, 0x05, 0x90, 0x9c, 0x42, 0xcb, 0x32, 0x00, - 0x38, 0xfa, 0x21, 0xc8, 0x2a, 0x94, 0x40, 0x90, 0xb8, 0x69, 0xc0, 0x29, 0x14, 0xba, 0x09, 0xa2, - 0x8c, 0x10, 0x45, 0xb0, 0xcb, 0x22, 0x01, 0xca, 0x40, 0x93, 0x2b, 0xc8, 0x42, 0xac, 0x22, 0x32, - 0xc1, 0xaf, 0x01, 0x10, 0x08, 0x43, 0xea, 0x20, 0x10, 0xb1, 0xad, 0x2a, 0x06, 0xab, 0x43, 0x89, - 0x91, 0x9b, 0x72, 0xb1, 0x08, 0x29, 0x94, 0xdd, 0x68, 0x82, 0x8a, 0xa0, 0x20, 0xba, 0x29, 0x35, - 0xb1, 0xaf, 0x53, 0xa0, 0x0a, 0x12, 0x00, 0xe1, 0x2a, 0x83, 0xad, 0x21, 0x24, 0xc8, 0x8d, 0x02, - 0x18, 0xc0, 0x60, 0x81, 0xab, 0x22, 0x99, 0x81, 0x88, 0x29, 0xc6, 0x1d, 0x82, 0x18, 0x98, 0x30, - 0x03, 0xad, 0x28, 0x80, 0xc8, 0x71, 0x94, 0xac, 0x02, 0x28, 0xb1, 0x2a, 0x31, 0xe3, 0xad, 0x31, - 0x10, 0x99, 0x35, 0xea, 0x18, 0x90, 0x31, 0xf9, 0x28, 0x81, 0x80, 0xac, 0x44, 0xb8, 0x29, 0x93, - 0x00, 0xfb, 0x58, 0xa1, 0x18, 0xb1, 0x59, 0xd1, 0x1a, 0x12, 0x82, 0xac, 0x01, 0x82, 0x1e, 0x83, - 0x8a, 0x18, 0x17, 0xbb, 0x80, 0x59, 0xa0, 0x10, 0xa8, 0x11, 0x23, 0xfa, 0x1a, 0x80, 0x43, 0x8b, - 0xc0, 0x51, 0xb8, 0x29, 0xa0, 0x82, 0x28, 0x79, 0xb3, 0x3b, 0xc1, 0x2a, 0x03, 0x00, 0xcf, 0x23, - 0x98, 0xeb, 0x38, 0x43, 0xe2, 0x1b, 0x12, 0xd9, 0x38, 0x02, 0xc0, 0x19, 0x10, 0xe0, 0x3a, 0x04, - 0x39, 0xe2, 0x0a, 0xa8, 0x1b, 0x45, 0x22, 0xf8, 0x5b, 0xa0, 0x10, 0x08, 0x01, 0xba, 0x2a, 0xb2, - 0x8c, 0x33, 0xa9, 0x27, 0xcb, 0xb0, 0x58, 0x02, 0x18, 0xc2, 0x0e, 0x03, 0x0b, 0x83, 0xae, 0x73, - 0xa1, 0x09, 0xc9, 0x11, 0x30, 0xb1, 0x31, 0xf8, 0x8a, 0x24, 0xa9, 0xa8, 0x40, 0x81, 0xb0, 0xbd, - 0x51, 0x91, 0x42, 0xc8, 0x09, 0x88, 0x24, 0x88, 0x98, 0xca, 0x35, 0x9e, 0x12, 0xab, 0x16, 0x88, - 0x98, 0xba, 0x79, 0xa3, 0x10, 0xb8, 0x89, 0x21, 0x32, 0xf9, 0x1c, 0x12, 0x12, 0xd8, 0x0c, 0x13, - 0x99, 0x11, 0x98, 0x89, 0x3a, 0x23, 0xb5, 0x9f, 0x48, 0x83, 0xaa, 0xd0, 0x1a, 0x42, 0x94, 0x8b, - 0x02, 0x01, 0x99, 0x93, 0x9c, 0x12, 0x29, 0x16, 0xff, 0x20, 0x80, 0x13, 0xba, 0x29, 0x90, 0xab, - 0x54, 0xd9, 0x41, 0xbb, 0x35, 0xaa, 0x80, 0x89, 0x51, 0xc2, 0x2d, 0x92, 0x81, 0x0b, 0x35, 0xc9, - 0x9b, 0x61, 0x81, 0x9c, 0x18, 0x13, 0xb9, 0x08, 0x2b, 0x86, 0x0b, 0x33, 0xc0, 0xac, 0x73, 0xb2, - 0x0b, 0xa2, 0x4a, 0xa2, 0x28, 0xc2, 0x9f, 0x25, 0x89, 0xa1, 0x0b, 0x14, 0x18, 0xf0, 0x1a, 0x01, - 0x20, 0xa0, 0x09, 0xbb, 0x41, 0x04, 0xbb, 0x63, 0x80, 0xaa, 0x31, 0xb0, 0x6b, 0x23, 0xaa, 0xb2, - 0xef, 0x31, 0x10, 0xa9, 0x88, 0x29, 0xb3, 0x3c, 0x16, 0xb9, 0x19, 0x21, 0xb3, 0xbf, 0x40, 0x91, - 0x11, 0xb9, 0x30, 0xfb, 0x7a, 0xa2, 0x20, 0xca, 0x51, 0xc1, 0x0b, 0x33, 0xc8, 0x88, 0x30, 0xf2, - 0x1a, 0xa2, 0x40, 0xc0, 0x39, 0xa1, 0x28, 0x81, 0x29, 0xb0, 0x38, 0xc4, 0x8e, 0x99, 0x32, 0x26, - 0xac, 0x01, 0x99, 0x20, 0x1a, 0x04, 0x89, 0x99, 0x40, 0x12, 0xf9, 0x2f, 0x84, 0x1b, 0x91, 0x1b, - 0xb3, 0x6b, 0x82, 0x99, 0x20, 0x08, 0xa2, 0xbd, 0x71, 0xc1, 0x2a, 0x82, 0x90, 0x99, 0x78, 0xb2, - 0xac, 0x58, 0x83, 0xa0, 0x2c, 0x94, 0x1a, 0x01, 0x18, 0xfa, 0x5c, 0x91, 0x18, 0xd8, 0x40, 0x91, - 0x0a, 0x82, 0x0a, 0xd9, 0x41, 0x81, 0xa9, 0x0a, 0x51, 0xb3, 0x0e, 0x83, 0x09, 0x88, 0x89, 0x32, - 0x9c, 0x34, 0x02, 0xfc, 0x09, 0x23, 0xa9, 0x88, 0x12, 0xa0, 0x1f, 0x05, 0x99, 0x09, 0x19, 0x25, - 0xca, 0x9d, 0x23, 0x01, 0x08, 0xa8, 0x9c, 0x9a, 0x47, 0xb0, 0x0a, 0x32, 0x93, 0xeb, 0x58, 0xa8, - 0x12, 0x89, 0x81, 0xbf, 0x50, 0x83, 0x9b, 0x09, 0x35, 0xc8, 0x0a, 0x83, 0x19, 0xb9, 0x57, 0xd8, - 0x09, 0x11, 0x90, 0x98, 0x28, 0xa2, 0x99, 0x28, 0x10, 0x94, 0x8a, 0x35, 0xaa, 0xfc, 0x39, 0x16, - 0xaa, 0x18, 0x80, 0xba, 0x59, 0x12, 0x02, 0x9b, 0x41, 0xc1, 0x9f, 0x41, 0x81, 0x81, 0x9c, 0x82, - 0x0a, 0x09, 0x16, 0xba, 0x1a, 0x12, 0x0a, 0xa8, 0x33, 0x4a, 0xc2, 0x33, 0x9d, 0xa9, 0x90, 0x67, - 0xaa, 0x98, 0x21, 0xc9, 0x49, 0x13, 0x20, 0xaf, 0x84, 0xab, 0x41, 0x82, 0x98, 0x0b, 0x02, 0xdb, - 0x39, 0x84, 0x38, 0xb2, 0x8f, 0x92, 0x30, 0x84, 0x2a, 0x95, 0xaf, 0x00, 0x18, 0x06, 0x8a, 0x02, - 0x9d, 0x01, 0x1a, 0x84, 0x9a, 0x20, 0x10, 0xc5, 0x2d, 0x02, 0x80, 0x9a, 0x03, 0x0b, 0x21, 0x92, - 0xc8, 0x1c, 0x25, 0x40, 0xfa, 0x09, 0x10, 0x80, 0xb1, 0x38, 0xfb, 0x30, 0x04, 0x9c, 0x02, 0x8b, - 0x85, 0x00, 0x0a, 0xca, 0x64, 0xa1, 0x9a, 0x00, 0x41, 0xd0, 0x19, 0x90, 0x58, 0xc2, 0x08, 0x98, - 0x08, 0x04, 0x8d, 0x02, 0xab, 0x33, 0x8b, 0x86, 0x9d, 0x04, 0x0a, 0x13, 0x9b, 0x91, 0x40, 0x95, - 0x2b, 0xbd, 0x73, 0xb0, 0x1a, 0x83, 0x9b, 0x04, 0x9a, 0x98, 0x51, 0x92, 0xb8, 0x3a, 0x30, 0x97, - 0x8a, 0x30, 0xd0, 0x08, 0x80, 0x32, 0xfc, 0x3b, 0x07, 0x9a, 0x99, 0x43, 0x99, 0x98, 0x22, 0x2b, - 0xe4, 0x38, 0xa0, 0x91, 0x0b, 0x22, 0xf1, 0x4a, 0x05, 0x9a, 0x20, 0x30, 0xea, 0x09, 0x12, 0x99, - 0x29, 0xa6, 0x1c, 0xb1, 0x40, 0xe9, 0x3a, 0x04, 0x0b, 0xc2, 0x39, 0xb1, 0x50, 0x80, 0xa1, 0x8a, - 0x4a, 0x86, 0x8c, 0x92, 0x49, 0xa3, 0x0b, 0xb2, 0x2d, 0x05, 0xb8, 0x2a, 0xf2, 0x28, 0x01, 0x01, - 0xbe, 0x32, 0x89, 0x00, 0x9c, 0x16, 0x9a, 0x32, 0xfa, 0x49, 0x01, 0x88, 0x98, 0x0a, 0x20, 0x80, - 0x02, 0x89, 0xdc, 0x50, 0x01, 0xb9, 0x51, 0x99, 0xab, 0x11, 0x73, 0xe2, 0x0a, 0x14, 0xb9, 0x89, - 0x52, 0xb8, 0x20, 0x09, 0x02, 0xab, 0x11, 0x34, 0xfb, 0x99, 0x40, 0xc0, 0x4b, 0x84, 0x19, 0xca, - 0x63, 0xb8, 0x2a, 0x03, 0x88, 0xa8, 0x49, 0xb2, 0x41, 0x9b, 0x8b, 0x27, 0x9f, 0x15, 0x9c, 0x11, - 0x88, 0x11, 0xc8, 0x39, 0xa3, 0x2b, 0xb8, 0x43, 0xbc, 0x12, 0x8b, 0x17, 0xac, 0x15, 0x89, 0x9a, - 0x31, 0x04, 0x89, 0x9a, 0x38, 0xf8, 0x39, 0x32, 0xd0, 0x9d, 0x13, 0x99, 0xa1, 0x7a, 0x82, 0xb8, - 0x3b, 0x83, 0x99, 0x21, 0x31, 0xf0, 0x8f, 0x31, 0x98, 0x88, 0x42, 0xc9, 0x29, 0x90, 0x02, 0x20, - 0xab, 0x46, 0xfa, 0x20, 0x99, 0x04, 0x9d, 0x11, 0x81, 0x8a, 0x10, 0x21, 0xa8, 0x10, 0x2a, 0x37, - 0xcf, 0x41, 0xb8, 0x28, 0x11, 0x91, 0xaf, 0x33, 0x88, 0xd0, 0x39, 0x84, 0x9d, 0x22, 0x80, 0x9a, - 0x10, 0x33, 0xc1, 0xad, 0x21, 0x18, 0xa8, 0x21, 0x00, 0x19, 0x10, 0x17, 0xbf, 0x48, 0x84, 0x9a, - 0xa8, 0x20, 0x80, 0x88, 0x2a, 0x03, 0xf9, 0x58, 0xa0, 0x9a, 0x40, 0x13, 0x8a, 0xa1, 0x4a, 0xc1, - 0x68, 0xa3, 0x8f, 0x82, 0x28, 0xa1, 0x8d, 0x14, 0xaa, 0x14, 0x9f, 0x12, 0x9b, 0x34, 0x99, 0xa2, - 0x9f, 0x05, 0x0a, 0x90, 0x21, 0x92, 0xbb, 0x71, 0xc8, 0x31, 0x10, 0xa8, 0xbb, 0x39, 0x34, 0xc9, - 0x39, 0x92, 0x9f, 0x21, 0x01, 0x88, 0xea, 0x78, 0xb1, 0x0b, 0x23, 0xaa, 0x51, 0x81, 0xb9, 0x39, - 0xa0, 0x39, 0xc3, 0x2a, 0x47, 0xda, 0x29, 0x92, 0x39, 0xa0, 0x31, 0xf8, 0x0d, 0x04, 0x09, 0x91, - 0x09, 0x19, 0x02, 0xaa, 0x18, 0x15, 0x1a, 0x86, 0xae, 0x90, 0x50, 0x84, 0xaa, 0x00, 0x88, 0x98, - 0x28, 0x14, 0x9b, 0x28, 0x03, 0xfa, 0x0f, 0x24, 0xb9, 0x21, 0x9b, 0x13, 0x80, 0x1a, 0xa5, 0x0c, - 0x43, 0x98, 0xf9, 0x4b, 0x82, 0x80, 0xa9, 0x02, 0xb9, 0x1a, 0x83, 0x2e, 0x94, 0x9b, 0x51, 0x93, - 0x0f, 0x23, 0xaa, 0x00, 0x28, 0xc8, 0x3a, 0x13, 0xa2, 0x30, 0xbb, 0xc1, 0x53, 0xbf, 0x70, 0xc2, - 0x19, 0x89, 0x12, 0xb0, 0x39, 0xda, 0x24, 0x8a, 0x18, 0xf3, 0x1a, 0x12, 0x00, 0x10, 0x8b, 0x96, - 0x9f, 0x34, 0x09, 0xb9, 0x48, 0xb8, 0x20, 0x0a, 0x93, 0x59, 0xc0, 0x18, 0x9c, 0x73, 0xb0, 0x08, - 0x89, 0x22, 0x92, 0x1e, 0xc0, 0x22, 0x8c, 0x05, 0x99, 0x00, 0xc8, 0x59, 0xd2, 0x48, 0xb0, 0x20, - 0x89, 0xaa, 0x13, 0x8b, 0x41, 0x01, 0xb1, 0x8f, 0x33, 0x0a, 0xb8, 0x28, 0x81, 0xe8, 0x70, 0xc0, - 0x21, 0xb8, 0x99, 0x10, 0xa0, 0x65, 0x99, 0x99, 0x33, 0x9e, 0x31, 0xdb, 0x11, 0x10, 0x00, 0xc0, - 0x9a, 0x35, 0xad, 0x35, 0x98, 0xaa, 0x38, 0x00, 0xc0, 0x72, 0x98, 0x91, 0xbc, 0x40, 0x92, 0x29, - 0xe3, 0x1a, 0xb1, 0x7a, 0xa4, 0x19, 0x98, 0x31, 0xda, 0x10, 0x81, 0x9c, 0x24, 0x20, 0xeb, 0x19, - 0x12, 0x00, 0xb1, 0x8a, 0x35, 0x9e, 0x12, 0x88, 0x8b, 0x43, 0xc0, 0xaa, 0x38, 0x80, 0x97, 0x1d, - 0x03, 0x9a, 0x04, 0x8a, 0x88, 0x82, 0x3a, 0xc3, 0xb9, 0x7b, 0xa1, 0x62, 0xca, 0x28, 0xc9, 0x41, - 0xa8, 0x22, 0x9d, 0x25, 0x9b, 0x10, 0x91, 0x99, 0xba, 0x71, 0xa3, 0xa8, 0x0a, 0x12, 0x04, 0x0c, - 0x84, 0x8a, 0x9b, 0x57, 0xd9, 0x29, 0x02, 0x88, 0x9d, 0x13, 0x80, 0x9b, 0x82, 0x48, 0xb0, 0x52, - 0x82, 0xac, 0x91, 0x58, 0x88, 0xab, 0x37, 0x8c, 0x91, 0x18, 0x98, 0x00, 0x81, 0x80, 0x9c, 0xaa, - 0x37, 0x4a, 0xc1, 0x2a, 0xa8, 0x51, 0xc9, 0x21, 0x89, 0x32, 0xc8, 0x99, 0x62, 0xa8, 0x01, 0x8f, - 0x15, 0xb9, 0x59, 0xb8, 0x29, 0x82, 0x09, 0x14, 0xcd, 0x40, 0xb0, 0x11, 0x08, 0x82, 0xbc, 0x30, - 0x14, 0x99, 0xcc, 0x70, 0xc1, 0x3a, 0x92, 0x30, 0xf9, 0x49, 0x91, 0x0a, 0x10, 0x11, 0xf0, 0x2a, - 0x81, 0x9a, 0x13, 0x09, 0x88, 0x08, 0x31, 0x82, 0xf8, 0x2f, 0xa5, 0x19, 0x90, 0x22, 0x9b, 0xb1, - 0x59, 0x91, 0xbc, 0x71, 0x81, 0x99, 0x1b, 0x86, 0x29, 0xb0, 0x41, 0xd9, 0x1a, 0x05, 0xa9, 0x80, - 0x0a, 0x17, 0x8b, 0x21, 0xa8, 0xaa, 0x73, 0x90, 0x9a, 0x12, 0x08, 0xa0, 0xbb, 0x74, 0xb0, 0x2b, - 0xa3, 0x9b, 0x08, 0x67, 0xb0, 0x0a, 0x18, 0x86, 0xab, 0x41, 0xc1, 0x19, 0x04, 0x9a, 0xa1, 0x3a, - 0x24, 0xd9, 0x9a, 0x38, 0x85, 0x19, 0x89, 0x12, 0xf9, 0x3b, 0x93, 0x98, 0x1b, 0x32, 0x84, 0xbe, - 0x50, 0x10, 0x99, 0x20, 0xc2, 0x39, 0xda, 0x21, 0xd8, 0x59, 0x14, 0xdb, 0x18, 0xa8, 0x22, 0x01, - 0x19, 0xe2, 0x0c, 0x03, 0x30, 0x90, 0xa9, 0xad, 0x13, 0x52, 0xdb, 0x02, 0x2d, 0x07, 0xba, 0x29, - 0x02, 0x01, 0xb0, 0x2b, 0xc2, 0x4b, 0x14, 0x98, 0x8d, 0x14, 0xb8, 0x1b, 0x92, 0x69, 0xa1, 0x40, - 0xd9, 0x88, 0x40, 0x92, 0xa8, 0x1e, 0x82, 0x01, 0x90, 0x8f, 0x84, 0x29, 0xa2, 0x0c, 0x82, 0x1b, - 0x16, 0xb9, 0x90, 0x3b, 0x17, 0xab, 0x32, 0xa9, 0x88, 0x18, 0x08, 0xab, 0x68, 0x05, 0xe8, 0x1c, - 0x83, 0x30, 0xbb, 0x93, 0xad, 0x43, 0x1a, 0x14, 0xea, 0x28, 0xa2, 0x20, 0x99, 0xaa, 0x22, 0x05, - 0x9a, 0x28, 0xfb, 0x54, 0xc9, 0x30, 0xa9, 0x02, 0x1a, 0xc3, 0x2d, 0xa1, 0x52, 0xc8, 0x09, 0x00, - 0xa2, 0x1a, 0x03, 0x0f, 0x85, 0x0a, 0x81, 0xa9, 0x23, 0x29, 0x94, 0x9d, 0x98, 0x63, 0x98, 0x0b, - 0x14, 0x99, 0x91, 0x2f, 0x93, 0x9b, 0x23, 0x40, 0xf9, 0x1a, 0x12, 0x22, 0xdc, 0x12, 0x99, 0x8a, - 0x24, 0x9b, 0x91, 0x44, 0x09, 0xf9, 0x1a, 0x12, 0x03, 0xbc, 0x92, 0x6a, 0xc8, 0x24, 0xca, 0x10, - 0x88, 0x14, 0x1b, 0xc1, 0x2b, 0x33, 0x03, 0xfa, 0x1f, 0x12, 0xa0, 0x1a, 0x81, 0x2a, 0xa1, 0x08, - 0xba, 0x70, 0x90, 0x83, 0xad, 0x28, 0x02, 0x8c, 0x95, 0x4c, 0x93, 0x1c, 0xb0, 0x4a, 0xc2, 0x68, - 0x98, 0x00, 0x8a, 0x42, 0x91, 0x9a, 0x0a, 0x82, 0xca, 0x01, 0x70, 0xb8, 0x29, 0x94, 0xaf, 0x34, - 0x90, 0x8a, 0xb9, 0x45, 0xb9, 0x11, 0x88, 0xa0, 0x70, 0xc1, 0x08, 0x99, 0x20, 0x95, 0x8b, 0x05, - 0x19, 0xd0, 0x30, 0xa8, 0x99, 0x30, 0x01, 0xa8, 0x1f, 0x86, 0x8c, 0x02, 0x00, 0x19, 0xc0, 0x58, - 0xc3, 0x1d, 0x83, 0x89, 0x88, 0x31, 0xd0, 0x8b, 0x11, 0x22, 0xc1, 0x1f, 0x84, 0x99, 0x10, 0x91, - 0x38, 0xb8, 0x52, 0xbb, 0x80, 0x71, 0xb4, 0x8a, 0xac, 0x12, 0x33, 0xc9, 0x32, 0xec, 0x11, 0x89, - 0x13, 0xae, 0x33, 0xa8, 0xa9, 0x0b, 0x34, 0xa2, 0x38, 0xb8, 0xac, 0x20, 0x27, 0x2a, 0xc9, 0x25, - 0xab, 0x08, 0x89, 0x03, 0x44, 0x1c, 0xf3, 0x0d, 0x31, 0x88, 0xc0, 0x38, 0x93, 0x9d, 0x01, 0x48, - 0xf0, 0x38, 0x91, 0x88, 0x8b, 0x16, 0x09, 0x99, 0x10, 0x10, 0x90, 0x2d, 0x87, 0x0a, 0x88, 0x00, - 0xa9, 0x29, 0x71, 0xb0, 0x08, 0x8a, 0x24, 0xc9, 0x18, 0x21, 0x22, 0xcf, 0x50, 0xa0, 0xa0, 0x2e, - 0x84, 0x89, 0x02, 0xa9, 0x09, 0x19, 0x27, 0x8c, 0x81, 0xa9, 0x23, 0x9d, 0x11, 0x83, 0x0d, 0x12, - 0x81, 0xbd, 0x29, 0x07, 0x19, 0x98, 0x99, 0x35, 0xba, 0x11, 0xda, 0x31, 0xa8, 0xbb, 0x23, 0x1a, - 0x27, 0xbb, 0x01, 0x1b, 0xd1, 0x71, 0x81, 0x0b, 0x83, 0x09, 0x82, 0x8f, 0x43, 0xa8, 0x1c, 0xc1, - 0x0b, 0x62, 0x03, 0xbb, 0x15, 0x9f, 0x13, 0x9b, 0x21, 0x90, 0x01, 0xaf, 0x34, 0xa9, 0x88, 0x31, - 0x94, 0x9f, 0x21, 0x88, 0x01, 0x19, 0x92, 0xd9, 0x2b, 0x14, 0xd0, 0x19, 0x11, 0x91, 0x8c, 0x23, - 0xb2, 0x1e, 0x92, 0xa0, 0x0b, 0x13, 0x70, 0xe2, 0x1a, 0xa1, 0x49, 0xa2, 0x20, 0xc9, 0x0c, 0x26, - 0xa8, 0x09, 0x18, 0x88, 0x91, 0x1d, 0xd1, 0x08, 0x41, 0xb3, 0x8f, 0x30, 0x87, 0x8a, 0x80, 0x09, - 0x12, 0x99, 0x89, 0x00, 0x90, 0x48, 0x07, 0xaf, 0x11, 0x00, 0x81, 0x9b, 0x30, 0xd8, 0x21, 0x2b, - 0xb6, 0x1d, 0x14, 0x98, 0xaa, 0x31, 0x22, 0xfb, 0x49, 0x81, 0x89, 0x13, 0x9b, 0x80, 0x2c, 0x86, - 0x88, 0xcb, 0x11, 0x01, 0x98, 0x21, 0xa0, 0x0d, 0x90, 0x34, 0xbb, 0x15, 0x20, 0xca, 0x51, 0xcd, - 0x10, 0x23, 0x29, 0xfa, 0x11, 0x3b, 0x95, 0x29, 0xe0, 0x10, 0x09, 0x93, 0x9b, 0x4b, 0x92, 0x20, - 0xad, 0x93, 0x60, 0x89, 0x13, 0xbf, 0x02, 0x79, 0x92, 0x0a, 0xb8, 0x3a, 0x15, 0xb9, 0xbc, 0x51, - 0x02, 0xb9, 0x11, 0x0c, 0x83, 0x62, 0xc8, 0x0a, 0x01, 0x18, 0x96, 0x0e, 0x01, 0x88, 0x01, 0x89, - 0xb0, 0x3a, 0x37, 0xdb, 0x18, 0x19, 0x34, 0xb8, 0x99, 0x9b, 0x41, 0xa3, 0xae, 0x41, 0x82, 0x1c, - 0x93, 0x0e, 0x91, 0x32, 0x11, 0xcb, 0xbb, 0x72, 0xa2, 0x08, 0xda, 0x50, 0xa1, 0x80, 0x89, 0x48, - 0x02, 0x02, 0xfa, 0x2a, 0x81, 0x98, 0x31, 0xbc, 0x05, 0x1b, 0x91, 0x0c, 0x17, 0x0c, 0x83, 0x00, - 0xc9, 0x0c, 0x25, 0x98, 0x09, 0xa0, 0x30, 0xe8, 0x49, 0xa1, 0x00, 0x8a, 0x34, 0xdc, 0x10, 0x10, - 0x12, 0x9a, 0x98, 0xa9, 0x2a, 0x37, 0x08, 0xaf, 0x04, 0x0b, 0x90, 0x11, 0x43, 0x90, 0xca, 0x2a, - 0xc8, 0x60, 0x98, 0x12, 0xcb, 0x10, 0x80, 0x93, 0x09, 0xcb, 0x47, 0x08, 0xcb, 0x40, 0x02, 0x09, - 0x99, 0xab, 0x51, 0xc8, 0x39, 0x02, 0xb8, 0x2a, 0xa5, 0x3c, 0x94, 0x9d, 0x24, 0xca, 0x2a, 0x23, - 0x18, 0x88, 0xc3, 0x8f, 0x13, 0x20, 0xc8, 0x99, 0x55, 0xa8, 0x8a, 0x01, 0x12, 0x9c, 0x80, 0xb0, - 0x21, 0xae, 0x36, 0xaa, 0x88, 0x84, 0x8d, 0x12, 0x01, 0x18, 0xf0, 0x58, 0xa9, 0x11, 0x19, 0x92, - 0x8f, 0x11, 0x93, 0x1e, 0xa0, 0x23, 0x08, 0x9a, 0xa0, 0x11, 0x8b, 0x14, 0xea, 0x1a, 0x41, 0xb2, - 0x0d, 0x34, 0xe9, 0x89, 0x00, 0x28, 0x82, 0x33, 0x2d, 0xca, 0x91, 0x68, 0x80, 0xcd, 0x32, 0x90, - 0x89, 0x28, 0x07, 0xab, 0x80, 0x31, 0x88, 0x1a, 0xd4, 0x98, 0x4b, 0x93, 0x25, 0xdc, 0x3a, 0x03, - 0xa9, 0x59, 0xa1, 0xb8, 0x39, 0x12, 0xb1, 0x9c, 0x37, 0x99, 0xab, 0x00, 0x33, 0xbb, 0x24, 0x90, - 0x39, 0xf8, 0x68, 0x98, 0x29, 0x97, 0x1a, 0x98, 0x0b, 0x94, 0x38, 0x99, 0xd0, 0x59, 0x82, 0x0b, - 0xda, 0x42, 0x09, 0xa3, 0xac, 0x30, 0x86, 0x08, 0x39, 0x99, 0xe3, 0x39, 0x92, 0x1f, 0x84, 0x09, - 0x90, 0x0d, 0x23, 0xac, 0x01, 0x19, 0x83, 0x1b, 0x11, 0xf8, 0x0b, 0x49, 0x07, 0x9d, 0x21, 0x00, - 0x98, 0x1a, 0x84, 0x0a, 0x93, 0x8d, 0x12, 0xa9, 0x38, 0xb5, 0x2d, 0x12, 0x90, 0xc0, 0x1c, 0x03, - 0x8f, 0x80, 0x40, 0x08, 0x82, 0x8d, 0x93, 0x8b, 0x31, 0x34, 0xfa, 0x20, 0x89, 0x01, 0xb2, 0x7b, - 0xb2, 0x3b, 0xf0, 0x08, 0x02, 0x38, 0xc8, 0x39, 0xa1, 0x69, 0xb2, 0x49, 0xb9, 0xcb, 0x71, 0xd3, - 0x18, 0x18, 0x28, 0xd1, 0x88, 0x39, 0x91, 0xab, 0x45, 0xb9, 0x28, 0x03, 0x98, 0xbc, 0x73, 0x91, - 0xcb, 0x81, 0x71, 0xb8, 0x20, 0x80, 0xb8, 0x0c, 0x26, 0xc0, 0x10, 0x89, 0x05, 0xbc, 0x50, 0xa8, - 0x01, 0x90, 0x00, 0xba, 0x28, 0x04, 0x20, 0xac, 0x41, 0xb8, 0x99, 0x53, 0x90, 0xa9, 0x08, 0x42, - 0xd1, 0x4c, 0x84, 0x88, 0x9d, 0x22, 0xb0, 0x2a, 0x06, 0x9a, 0x10, 0x1a, 0x83, 0x0c, 0xda, 0x29, - 0xa6, 0x7a, 0xb1, 0x1b, 0x83, 0x71, 0xb1, 0x8c, 0x82, 0x18, 0xc8, 0x40, 0xc2, 0x3a, 0x02, 0x81, - 0xca, 0x2a, 0x05, 0x98, 0x9b, 0x22, 0xa1, 0x58, 0x04, 0xfa, 0x29, 0x28, 0xe8, 0x10, 0x1a, 0x42, - 0xf0, 0x38, 0xa8, 0x81, 0x29, 0x91, 0x12, 0xbd, 0x30, 0x91, 0x0a, 0x12, 0x14, 0xf9, 0x3a, 0xd0, - 0x68, 0x90, 0x81, 0x8a, 0x0a, 0x86, 0x89, 0x11, 0xb9, 0x09, 0x23, 0x0d, 0xa5, 0x2b, 0x82, 0x29, - 0xcb, 0x01, 0x09, 0x9a, 0x47, 0x98, 0x9a, 0x8a, 0x86, 0x2b, 0x96, 0x1b, 0x21, 0xf9, 0x42, 0xa0, - 0x8b, 0x20, 0x86, 0x8d, 0x81, 0x39, 0xc2, 0x0a, 0x10, 0x19, 0x13, 0xa1, 0xbb, 0x8e, 0x27, 0x8a, - 0x88, 0xaa, 0x44, 0x98, 0x1c, 0x90, 0x25, 0x89, 0x01, 0xeb, 0x21, 0x03, 0xba, 0x28, 0x9d, 0x26, - 0x90, 0xbb, 0x20, 0x19, 0xe1, 0x38, 0xab, 0x26, 0x8a, 0x91, 0x9e, 0x12, 0x33, 0x20, 0xe1, 0x9b, - 0x81, 0x49, 0x95, 0x0a, 0x81, 0x00, 0xbb, 0x1c, 0x35, 0x94, 0x99, 0x0e, 0xa8, 0x02, 0x72, 0xa1, - 0xbb, 0x68, 0x91, 0x8b, 0x92, 0x21, 0x3b, 0xd1, 0xb2, 0x1b, 0x1b, 0x47, 0xa0, 0xac, 0x20, 0x24, - 0xca, 0x28, 0xa3, 0xbc, 0x29, 0xa2, 0x21, 0x04, 0x3d, 0x95, 0x9a, 0x19, 0x38, 0xb5, 0x2c, 0x86, - 0xbb, 0x41, 0x82, 0x09, 0x00, 0xc8, 0x8d, 0x03, 0x18, 0x19, 0xaa, 0xa4, 0x73, 0x9a, 0x11, 0x13, - 0xfc, 0x00, 0x0a, 0xb2, 0x74, 0xa0, 0x18, 0x8a, 0x02, 0x11, 0xac, 0x31, 0xc1, 0x1c, 0x24, 0xac, - 0x10, 0x00, 0x93, 0x9f, 0x83, 0x30, 0xf9, 0x1a, 0x22, 0x81, 0x1a, 0x38, 0xc3, 0x8e, 0x13, 0xa8, - 0x0a, 0x24, 0x90, 0x9d, 0x94, 0x9a, 0x48, 0xa1, 0x39, 0xb4, 0x8f, 0x43, 0xc9, 0x18, 0x80, 0x0a, - 0x05, 0x9a, 0x30, 0x96, 0x0c, 0x28, 0xe3, 0x29, 0x90, 0x80, 0x0a, 0x12, 0x89, 0x80, 0x57, 0xdb, - 0x10, 0x19, 0xb2, 0x1e, 0x92, 0x08, 0x33, 0x9f, 0x05, 0x0a, 0x80, 0x11, 0x90, 0x9a, 0x10, 0xaa, - 0x04, 0x50, 0xc3, 0x1c, 0x93, 0x2a, 0xf9, 0x48, 0x80, 0x9a, 0x18, 0x15, 0x98, 0x8b, 0x16, 0x9a, - 0x00, 0xa1, 0x45, 0x9e, 0x91, 0x00, 0x00, 0x29, 0x86, 0x8a, 0x88, 0xa8, 0x50, 0x92, 0x0b, 0x94, - 0x8b, 0x18, 0x22, 0xfb, 0x79, 0x90, 0x19, 0xc0, 0x28, 0x91, 0x92, 0x2a, 0x0a, 0xb0, 0x46, 0xaa, - 0x32, 0xbd, 0x41, 0x03, 0xbc, 0x09, 0x11, 0x88, 0xd0, 0x0d, 0x16, 0x49, 0xc2, 0x8b, 0x10, 0xa0, - 0x11, 0x1b, 0x86, 0x9c, 0x14, 0xaa, 0x03, 0x0d, 0x14, 0xaa, 0x89, 0x9a, 0x16, 0x2b, 0x95, 0x8b, - 0x40, 0xb2, 0x8a, 0x9c, 0x44, 0xa8, 0x38, 0xdc, 0x51, 0x09, 0x92, 0x09, 0xa8, 0x38, 0xc0, 0x24, - 0x0c, 0xa0, 0x40, 0xa9, 0x90, 0x86, 0x0c, 0x90, 0x91, 0x1a, 0x94, 0x2a, 0xf2, 0x20, 0x31, 0x90, - 0xd1, 0x2b, 0x91, 0x00, 0x88, 0x07, 0x8b, 0xa0, 0x03, 0xae, 0x31, 0x80, 0x05, 0x8d, 0xa1, 0x59, - 0xd9, 0x20, 0x80, 0x91, 0x08, 0xb1, 0xbf, 0x55, 0x80, 0xba, 0x28, 0x01, 0x90, 0x89, 0x44, 0xdb, - 0x12, 0x29, 0xb0, 0x9c, 0x24, 0x09, 0xea, 0x29, 0x03, 0x9c, 0x02, 0x82, 0xab, 0x30, 0x95, 0x0d, - 0x82, 0x08, 0x13, 0xff, 0x20, 0x03, 0xba, 0x21, 0xa9, 0x00, 0x90, 0x29, 0xb8, 0x41, 0x50, 0xa1, - 0xac, 0x35, 0xa1, 0x2b, 0xe3, 0x8b, 0xa8, 0x50, 0xb2, 0x38, 0xa8, 0x17, 0xa9, 0xcb, 0x15, 0x99, - 0x19, 0x14, 0xa9, 0x8c, 0x43, 0xd8, 0x09, 0x12, 0xa0, 0xca, 0x03, 0x48, 0x82, 0x0b, 0x57, 0x9e, - 0x00, 0x10, 0x82, 0x8b, 0x83, 0x9d, 0x01, 0x10, 0x00, 0x8d, 0x04, 0x0f, 0x02, 0x99, 0x00, 0x21, - 0xda, 0x18, 0xb0, 0x21, 0x03, 0xba, 0x80, 0x1d, 0x17, 0x0a, 0x90, 0x19, 0x08, 0x01, 0xdb, 0x19, - 0x38, 0x3a, 0xa6, 0x91, 0xaf, 0x13, 0x2a, 0xc0, 0x1c, 0x85, 0x18, 0x18, 0xdb, 0x30, 0xa3, 0x38, - 0xbe, 0x10, 0x21, 0xb1, 0x12, 0x9f, 0x02, 0x9b, 0x47, 0xbb, 0x21, 0x09, 0xa8, 0x99, 0x25, 0xbc, - 0x35, 0xab, 0xc2, 0x28, 0x81, 0x10, 0xa8, 0x88, 0x20, 0xb9, 0x07, 0x0d, 0x90, 0x09, 0x40, 0x99, - 0x90, 0x01, 0x9b, 0xfb, 0x32, 0x1c, 0x59, 0xb3, 0xbb, 0x6b, 0x1a, 0x05, 0xbb, 0xb1, 0x6a, 0xc2, - 0x21, 0x9a, 0x82, 0x8d, 0x21, 0xa3, 0xc8, 0x0c, 0x61, 0xb9, 0x18, 0x0a, 0x20, 0xab, 0x28, 0x92, - 0x0c, 0x26, 0x09, 0xdb, 0x29, 0x84, 0x8e, 0x00, 0x08, 0x48, 0xa3, 0xbd, 0x20, 0x2b, 0x04, 0xba, - 0x18, 0x0a, 0x84, 0x2e, 0xb0, 0x8c, 0x42, 0x81, 0x9c, 0xbb, 0x7b, 0x81, 0x12, 0x8c, 0x09, 0x49, - 0xa1, 0xa0, 0x81, 0x9e, 0x33, 0x0c, 0xc1, 0x38, 0x29, 0xba, 0xa2, 0x3b, 0x8d, 0x29, 0x50, 0xbb, - 0x93, 0xd2, 0x19, 0x3a, 0x0a, 0x70, 0xb9, 0x92, 0x0b, 0x08, 0x11, 0x32, 0x8f, 0x09, 0x90, 0xa3, - 0xf2, 0xb2, 0x90, 0x00, 0x02, 0xf9, 0x88, 0x70, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, - 0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x7f, 0xf3, 0x5a, 0x74, 0xda, 0x32, 0x29, 0xb5, - 0x2d, 0x06, 0x0a, 0x47, 0x2a, 0xf8, 0x1a, 0x81, 0x81, 0x28, 0xf0, 0x29, 0xb0, 0x5a, 0x03, 0xbb, - 0x60, 0xa2, 0xab, 0x0a, 0x05, 0x89, 0x20, 0x07, 0xbb, 0x21, 0x11, 0xce, 0x33, 0x8b, 0xb5, 0x5d, - 0xb2, 0x1b, 0x11, 0x82, 0xab, 0x31, 0xc1, 0x0a, 0x54, 0xf8, 0x28, 0xb1, 0x3a, 0x91, 0x13, 0x2c, - 0xb6, 0x8d, 0x43, 0xb9, 0x81, 0x30, 0xda, 0x11, 0x2a, 0xb4, 0x3a, 0x98, 0x04, 0x3b, 0xc0, 0x90, - 0x90, 0x1f, 0x07, 0x8c, 0x10, 0xa1, 0x3a, 0xa2, 0xaa, 0x50, 0xa3, 0x1b, 0xd8, 0x41, 0x0b, 0x87, - 0x0d, 0x82, 0x08, 0x20, 0xa0, 0x1a, 0xb2, 0x41, 0x1b, 0xb3, 0x6a, 0xb0, 0x59, 0xc1, 0x00, 0x8c, - 0x99, 0x24, 0x9b, 0x13, 0x89, 0xce, 0x53, 0xa8, 0x10, 0xaa, 0x24, 0x8b, 0xa3, 0x4a, 0x83, 0x08, - 0xba, 0x07, 0x8f, 0x12, 0x12, 0xbe, 0x22, 0x40, 0xd9, 0x00, 0x20, 0xa9, 0x83, 0xaa, 0x30, 0xdd, - 0xea, 0x1c, 0x26, 0x28, 0xc1, 0x1a, 0x82, 0xc9, 0x50, 0x01, 0xc8, 0x29, 0x81, 0x12, 0x9e, 0x85, - 0x38, 0x9c, 0x05, 0x28, 0xcb, 0x41, 0xa0, 0x8b, 0x32, 0x90, 0x92, 0x0f, 0x05, 0x9c, 0x12, 0x0a, - 0x12, 0xbd, 0x23, 0xca, 0x9a, 0x45, 0xb8, 0x89, 0x11, 0x19, 0xf0, 0x29, 0x10, 0xcc, 0x52, 0x81, - 0xbb, 0x40, 0x93, 0x0c, 0x88, 0x02, 0x0a, 0x41, 0xa4, 0x0e, 0x82, 0x19, 0x03, 0xfb, 0x5a, 0x02, - 0xca, 0x30, 0xa8, 0x88, 0x61, 0x00, 0xfb, 0x32, 0x98, 0x80, 0x89, 0x02, 0x62, 0xfb, 0x38, 0x81, - 0x88, 0x20, 0xb1, 0x0c, 0x15, 0x1c, 0xa1, 0x99, 0x38, 0x03, 0xbc, 0x12, 0x21, 0xe8, 0x78, 0xd1, - 0x29, 0x81, 0xa8, 0x10, 0xc9, 0x5a, 0x00, 0xa2, 0x19, 0x80, 0x88, 0xaa, 0x00, 0x17, 0xab, 0x30, - 0x00, 0xf1, 0x7b, 0xb2, 0x08, 0x0b, 0xd2, 0x70, 0xa8, 0x20, 0x98, 0x21, 0x8e, 0x94, 0x9a, 0x32, - 0x98, 0x88, 0xfa, 0x42, 0x80, 0xa8, 0x33, 0xcd, 0x20, 0x01, 0xa1, 0x2c, 0xa3, 0x20, 0xaf, 0x85, - 0x38, 0xa0, 0xb8, 0x4a, 0xb4, 0x69, 0xa0, 0x09, 0x08, 0x82, 0x08, 0xc1, 0x1b, 0x83, 0x40, 0xcb, - 0x32, 0xf9, 0x59, 0xd8, 0x21, 0x89, 0x02, 0x2a, 0xd0, 0x88, 0x68, 0xa0, 0x89, 0x13, 0x1b, 0xc3, - 0x19, 0xab, 0x37, 0x0b, 0xb8, 0x24, 0xae, 0x51, 0x91, 0xba, 0x62, 0x89, 0x90, 0x08, 0x01, 0x08, - 0x98, 0x00, 0xf1, 0x5a, 0x02, 0xc8, 0x38, 0x88, 0xa1, 0x5d, 0xb3, 0x0b, 0x48, 0xb9, 0x14, 0xb8, - 0x49, 0xa2, 0xab, 0x69, 0xa1, 0x0a, 0x45, 0xc0, 0xab, 0x62, 0xb8, 0x19, 0x14, 0x9c, 0x32, 0xcb, - 0x24, 0xab, 0x29, 0x85, 0x89, 0x08, 0xa8, 0x23, 0x0e, 0x04, 0xac, 0x62, 0xb8, 0x21, 0xab, 0x28, - 0x05, 0x99, 0x9b, 0x16, 0x0a, 0x81, 0x93, 0x9f, 0x12, 0x91, 0x2c, 0x94, 0xaa, 0x32, 0xb4, 0x0f, - 0x81, 0x10, 0x88, 0x89, 0x48, 0xa0, 0x14, 0x8d, 0xa0, 0x20, 0x2a, 0x14, 0xcb, 0x11, 0x89, 0x05, - 0x8e, 0x01, 0x91, 0x20, 0xb8, 0x0b, 0x06, 0x0c, 0x05, 0x9b, 0x28, 0x99, 0x05, 0x09, 0x8c, 0x04, - 0x89, 0x80, 0xa8, 0x44, 0x8b, 0x90, 0xb6, 0x2f, 0x83, 0x8a, 0x22, 0xc8, 0x8c, 0x35, 0xc9, 0x20, - 0xa8, 0x12, 0xbb, 0x31, 0xa1, 0x0b, 0x12, 0x38, 0xf4, 0x2e, 0x24, 0xdb, 0x28, 0x22, 0xdd, 0x33, - 0x9a, 0x00, 0xa0, 0x48, 0xb1, 0x09, 0x08, 0x35, 0xaf, 0x33, 0x9b, 0xa1, 0x30, 0xa1, 0x8d, 0x82, - 0x42, 0xba, 0xa1, 0x61, 0xbb, 0x15, 0x0a, 0x80, 0x0a, 0x15, 0xca, 0x00, 0x4a, 0xd3, 0x29, 0x93, - 0x2c, 0xd3, 0x4a, 0xa0, 0x29, 0x91, 0x32, 0xaf, 0x22, 0xa8, 0x10, 0x03, 0x8f, 0x92, 0x28, 0x99, - 0x21, 0xbd, 0x27, 0x8c, 0x00, 0x82, 0x8b, 0xa2, 0x38, 0x98, 0xb8, 0x46, 0xaa, 0x00, 0x2b, 0x86, - 0x98, 0x3c, 0xf3, 0x38, 0x98, 0x84, 0x8d, 0x03, 0x09, 0x88, 0xa0, 0x78, 0xc2, 0x2a, 0x91, 0x89, - 0x81, 0x71, 0xf0, 0x28, 0x08, 0x80, 0x98, 0x28, 0xa3, 0x1b, 0xc0, 0x48, 0xa1, 0x6a, 0xb1, 0x91, - 0x3b, 0x91, 0x82, 0x0c, 0x15, 0x9d, 0x82, 0x1b, 0x40, 0xf3, 0x39, 0x88, 0x18, 0xc2, 0x4a, 0x98, - 0x82, 0x0a, 0xa9, 0x13, 0x0e, 0x17, 0x8b, 0x94, 0x89, 0x0b, 0x03, 0x01, 0x1d, 0xa5, 0x2a, 0xd0, - 0x58, 0x81, 0x9a, 0x22, 0xad, 0x33, 0xbb, 0x10, 0x14, 0x9d, 0x42, 0xc0, 0x19, 0x82, 0xbb, 0x32, - 0x83, 0x1b, 0xd3, 0xad, 0x36, 0xaa, 0x89, 0x05, 0x99, 0x59, 0xa3, 0x8f, 0x22, 0xb8, 0x5b, 0xa2, - 0x89, 0x40, 0xa2, 0x9c, 0x10, 0x20, 0x0a, 0x96, 0x8a, 0x19, 0x03, 0x1b, 0x98, 0x0a, 0x57, 0xda, - 0x09, 0x12, 0x10, 0xb1, 0x0b, 0x01, 0xba, 0x64, 0xb0, 0x2b, 0xb0, 0x72, 0xb1, 0x0b, 0x83, 0x10, - 0x9a, 0x90, 0x3f, 0x97, 0x1b, 0x82, 0xa8, 0x38, 0x1b, 0xa7, 0x28, 0x9f, 0x15, 0x89, 0x9a, 0x15, - 0x9a, 0x09, 0x15, 0x9d, 0x11, 0x11, 0xab, 0x12, 0x08, 0x99, 0x0a, 0x27, 0xaa, 0x09, 0x00, 0x20, - 0xf1, 0x09, 0x73, 0xc9, 0x19, 0x05, 0x8c, 0x81, 0x12, 0xaa, 0x8a, 0x45, 0xc9, 0x08, 0x21, 0xb1, - 0x0a, 0x00, 0x33, 0xaf, 0x13, 0x09, 0xb0, 0x49, 0x20, 0xf3, 0x0c, 0x13, 0x98, 0x88, 0x31, 0xa9, - 0x8b, 0x37, 0xeb, 0x20, 0x10, 0xd0, 0x4b, 0xb4, 0x38, 0xa9, 0x90, 0x21, 0xd8, 0x38, 0x13, 0xea, - 0x2a, 0x85, 0x99, 0x0b, 0x17, 0xb8, 0x29, 0x90, 0x84, 0x8c, 0x12, 0xa0, 0x98, 0x3a, 0x07, 0xbc, - 0x43, 0xa9, 0x30, 0x90, 0xb8, 0x5a, 0xa5, 0x0c, 0x94, 0x8a, 0x41, 0xe8, 0x51, 0xa9, 0x08, 0x10, - 0xb1, 0x19, 0x19, 0x23, 0xca, 0x39, 0x03, 0xcd, 0x41, 0x81, 0x8b, 0x80, 0x23, 0x8a, 0x9f, 0x15, - 0x9b, 0x12, 0xb2, 0x3b, 0x00, 0xa4, 0x8e, 0x02, 0x29, 0xd0, 0x91, 0x7a, 0xb0, 0x80, 0x41, 0x9a, - 0xa0, 0x12, 0x38, 0xdc, 0x41, 0xa3, 0x9f, 0x42, 0xb0, 0x20, 0x98, 0x99, 0x62, 0xf8, 0x59, 0xa8, - 0x11, 0x89, 0x02, 0x9c, 0x21, 0x01, 0xc9, 0x30, 0xb1, 0x1a, 0x08, 0x03, 0x80, 0x9d, 0x54, 0xe9, - 0x39, 0x92, 0x09, 0x88, 0x01, 0x18, 0xca, 0x71, 0x81, 0xab, 0x98, 0x64, 0xcb, 0x41, 0x98, 0xa8, - 0x51, 0xb0, 0x09, 0x01, 0x88, 0x81, 0xbc, 0x65, 0xa8, 0x28, 0xb8, 0x20, 0xc8, 0x31, 0xa0, 0xa8, - 0x7a, 0xa5, 0x9a, 0x30, 0x19, 0xd1, 0x30, 0x98, 0x98, 0x39, 0xc0, 0x12, 0x0c, 0x09, 0x27, 0x9e, - 0x42, 0xb8, 0x08, 0x2a, 0x93, 0xba, 0x71, 0xa1, 0x18, 0xa0, 0xab, 0x75, 0xc8, 0x28, 0x88, 0x09, - 0x82, 0x91, 0x38, 0xae, 0x22, 0x18, 0xf9, 0x58, 0x90, 0x80, 0xaa, 0x32, 0x00, 0x09, 0xd3, 0x69, - 0xa9, 0x11, 0xb1, 0x0c, 0x08, 0x37, 0xca, 0x19, 0x02, 0x08, 0xb2, 0x2f, 0x91, 0x80, 0x28, 0x03, - 0xcf, 0x22, 0x02, 0x9c, 0x91, 0x50, 0xa8, 0x18, 0x91, 0xba, 0x52, 0x99, 0xa1, 0x38, 0x18, 0xc4, - 0x3b, 0x08, 0xc7, 0x3e, 0x94, 0x8a, 0x18, 0x82, 0x98, 0x09, 0x22, 0xc9, 0x81, 0x61, 0xc9, 0x80, - 0x12, 0x2a, 0xf0, 0x29, 0x91, 0x93, 0x2b, 0x00, 0xf4, 0x3b, 0x12, 0xd1, 0x1d, 0x14, 0xaa, 0x21, - 0xbb, 0x43, 0xa8, 0x00, 0x11, 0xa9, 0x18, 0x38, 0x92, 0x87, 0xaf, 0x33, 0x8b, 0x85, 0x0d, 0x92, - 0x3a, 0xb0, 0x29, 0x84, 0x0a, 0x18, 0xc3, 0x18, 0x2c, 0x96, 0xab, 0x18, 0x34, 0xb8, 0x81, 0xbc, - 0x70, 0xb9, 0x24, 0x08, 0xc9, 0x30, 0x90, 0x9d, 0x05, 0x8a, 0x52, 0xd1, 0x8a, 0x42, 0xd0, 0x3a, - 0x95, 0x8b, 0x31, 0xe8, 0x58, 0xa0, 0x19, 0x18, 0x92, 0x9b, 0x32, 0x99, 0x88, 0xc8, 0x51, 0x19, - 0xc1, 0x1a, 0x63, 0xf8, 0x39, 0x92, 0xaa, 0x51, 0xa8, 0x02, 0x98, 0x1a, 0x91, 0x0a, 0x11, 0x27, - 0xbe, 0x63, 0xb8, 0x09, 0x00, 0x82, 0x0b, 0x04, 0xb9, 0x01, 0x40, 0xa0, 0xba, 0x78, 0xb0, 0x50, - 0xc0, 0x29, 0x91, 0x1b, 0x96, 0x1a, 0x88, 0x83, 0x48, 0xfb, 0x20, 0x10, 0xc0, 0x49, 0xa0, 0x00, - 0x10, 0x99, 0xc3, 0x4c, 0x92, 0xb8, 0x78, 0xb2, 0x1d, 0x94, 0x1a, 0xa8, 0x23, 0xab, 0x15, 0xba, - 0x88, 0x13, 0x0b, 0x86, 0x3a, 0xf1, 0x3a, 0x11, 0xc2, 0x0c, 0x21, 0xf8, 0x50, 0xa8, 0x08, 0x22, - 0xbb, 0x01, 0x00, 0x98, 0x2c, 0x07, 0x8c, 0x11, 0x90, 0x81, 0x8e, 0x14, 0x99, 0x20, 0xb0, 0x8a, - 0x40, 0x11, 0xc2, 0x0b, 0x38, 0x05, 0xb9, 0x49, 0xcc, 0x25, 0xb8, 0x3a, 0x86, 0x0d, 0x12, 0xb8, - 0x8b, 0x24, 0xb1, 0x2a, 0xa3, 0x89, 0x39, 0x80, 0x94, 0xbc, 0x49, 0x31, 0xf3, 0x0d, 0x42, 0xe0, - 0x28, 0x90, 0x81, 0x1a, 0x02, 0xc8, 0x0a, 0x02, 0x58, 0xd1, 0x39, 0x92, 0x0e, 0x03, 0xa9, 0x8b, - 0x25, 0xb0, 0x1c, 0x06, 0x0c, 0x01, 0x91, 0x2b, 0xa0, 0x1a, 0x03, 0x82, 0x0e, 0x82, 0x9b, 0x12, - 0x19, 0x13, 0x60, 0xf4, 0x2e, 0x92, 0xa8, 0x49, 0x94, 0x0d, 0x03, 0x0b, 0x01, 0xa0, 0x08, 0x20, - 0xc9, 0x00, 0x33, 0xaf, 0x16, 0x9a, 0x08, 0x11, 0x88, 0x1a, 0xa6, 0x0e, 0x23, 0xc8, 0x19, 0x00, - 0x90, 0x20, 0xa1, 0x0d, 0x85, 0xaa, 0x20, 0x05, 0xac, 0x33, 0xc9, 0x88, 0x42, 0xc9, 0x83, 0x39, - 0xea, 0x33, 0xbd, 0x42, 0x92, 0x0b, 0x01, 0xc2, 0x2d, 0x11, 0xb0, 0x29, 0xa1, 0x1c, 0x84, 0x00, - 0x8b, 0x20, 0xb5, 0x3d, 0xc3, 0x0c, 0x31, 0xe2, 0x2b, 0x93, 0x8b, 0x72, 0xd1, 0x28, 0xb0, 0x28, - 0x80, 0x81, 0x19, 0xa8, 0x23, 0x9a, 0xa9, 0x10, 0x74, 0xd8, 0x02, 0x08, 0xaf, 0x14, 0xb8, 0x4c, - 0x83, 0x09, 0xa9, 0x31, 0xa8, 0x99, 0x03, 0x1e, 0x86, 0x99, 0x38, 0xb3, 0x8c, 0x43, 0xfa, 0x21, - 0x99, 0x12, 0xb1, 0x1d, 0x05, 0xab, 0x12, 0x3a, 0xd0, 0x31, 0xc8, 0x39, 0xa1, 0xa1, 0x8f, 0x05, - 0x19, 0xa8, 0x93, 0x2e, 0xb3, 0x29, 0x81, 0x8d, 0x07, 0x1a, 0xb0, 0xa8, 0x58, 0xa2, 0x19, 0x08, - 0xa2, 0x9b, 0x73, 0xc1, 0x1b, 0x14, 0xda, 0x40, 0x90, 0x88, 0x05, 0x8d, 0x03, 0x8a, 0x11, 0x80, - 0x8b, 0x84, 0x0c, 0xc2, 0x79, 0xc3, 0x19, 0x02, 0xcb, 0x31, 0xa1, 0x0b, 0x18, 0xf3, 0x4a, 0xc2, - 0x38, 0x88, 0xc0, 0x39, 0x81, 0x8b, 0x13, 0x30, 0xad, 0x87, 0x1c, 0x93, 0x98, 0x8a, 0x21, 0xc0, - 0x38, 0x81, 0x9c, 0x36, 0xad, 0x22, 0xe3, 0x3a, 0xa1, 0x91, 0x1c, 0x80, 0x61, 0xc0, 0x18, 0x00, - 0x92, 0x89, 0xa0, 0x3c, 0xa7, 0x4a, 0xc1, 0x18, 0x91, 0x28, 0x83, 0xaf, 0x24, 0xa8, 0x20, 0xa8, - 0x08, 0x1a, 0xa5, 0x4a, 0xa4, 0x8d, 0x33, 0xc9, 0x18, 0x82, 0x0b, 0x92, 0x8c, 0x13, 0x0b, 0x89, - 0x25, 0xf8, 0x1f, 0x05, 0xa8, 0x0b, 0x13, 0xca, 0x28, 0x07, 0x8c, 0x02, 0x98, 0x00, 0xc9, 0x50, - 0x80, 0x90, 0x2b, 0x86, 0x8c, 0x12, 0x09, 0xca, 0x31, 0x81, 0x91, 0x8d, 0x22, 0x12, 0xaf, 0x16, - 0x9b, 0x20, 0x81, 0x89, 0x89, 0x41, 0x98, 0xb0, 0x69, 0xa0, 0x51, 0xb8, 0x08, 0x98, 0x31, 0x18, - 0xf0, 0x2b, 0x32, 0xdc, 0x13, 0xab, 0x55, 0xb8, 0x81, 0x8b, 0x89, 0x24, 0x90, 0x9b, 0x02, 0x9c, - 0x36, 0xba, 0x80, 0x00, 0x18, 0x91, 0xac, 0x01, 0x75, 0xd0, 0x29, 0xa1, 0x40, 0xd8, 0x20, 0xab, - 0x32, 0x81, 0x0a, 0xb4, 0x2b, 0x46, 0xf8, 0x29, 0x98, 0x28, 0x22, 0xb9, 0x1b, 0x93, 0x12, 0x82, - 0x1e, 0xd8, 0x38, 0x24, 0xbc, 0x38, 0x80, 0x57, 0xbe, 0x23, 0x08, 0xa0, 0x18, 0xa9, 0x93, 0x3c, - 0x07, 0xab, 0x29, 0x92, 0x31, 0xcd, 0x20, 0x83, 0x8c, 0x22, 0xdb, 0x00, 0x20, 0xb0, 0x0a, 0xba, - 0x77, 0xb0, 0x19, 0x08, 0x90, 0x88, 0x36, 0xfb, 0x28, 0x92, 0x88, 0x89, 0x10, 0x89, 0x24, 0xac, - 0x92, 0x8b, 0x27, 0xa9, 0x09, 0x29, 0x07, 0x9b, 0x21, 0xcc, 0x43, 0x82, 0x9b, 0x00, 0x88, 0x50, - 0x04, 0xae, 0x12, 0x08, 0x00, 0x30, 0xfa, 0x39, 0x85, 0x9b, 0x28, 0x22, 0xc0, 0x59, 0xd9, 0x20, - 0x80, 0x02, 0xca, 0x0a, 0x14, 0x19, 0xa0, 0x88, 0x80, 0x90, 0x4d, 0xc1, 0x8a, 0x42, 0x91, 0x1c, - 0xfb, 0x44, 0xba, 0x10, 0xb1, 0x29, 0x10, 0x80, 0x93, 0xcf, 0x44, 0xa8, 0x9c, 0x42, 0xa0, 0x80, - 0x11, 0xbc, 0x32, 0x98, 0x60, 0xb2, 0x9e, 0x31, 0x92, 0xbc, 0x42, 0x91, 0x89, 0x41, 0xc9, 0x00, - 0x13, 0x0d, 0x80, 0x9c, 0x55, 0xa0, 0x9b, 0x42, 0xc8, 0x59, 0x90, 0x89, 0x20, 0xa3, 0x8c, 0x10, - 0xd9, 0x42, 0x98, 0x9a, 0x51, 0xb3, 0x3b, 0x94, 0xcc, 0x42, 0x91, 0x0c, 0x93, 0x2b, 0x90, 0x20, - 0x99, 0x31, 0xb3, 0x8f, 0x13, 0xae, 0x34, 0xa8, 0x0d, 0x13, 0xbb, 0x27, 0x9b, 0xb0, 0x53, 0xaa, - 0x13, 0x9c, 0x42, 0xa8, 0x01, 0x90, 0x9f, 0x82, 0x22, 0x00, 0xaf, 0x14, 0x98, 0x00, 0x08, 0xb1, - 0x1b, 0x0a, 0x17, 0xab, 0x30, 0x14, 0xdd, 0x38, 0x03, 0xdb, 0x43, 0xbb, 0x01, 0x39, 0x04, 0xc8, - 0x9a, 0x70, 0xb0, 0x18, 0x01, 0x8d, 0x13, 0x01, 0xa8, 0x0f, 0x85, 0x09, 0x99, 0xa3, 0x7a, 0xb1, - 0x21, 0xba, 0xb1, 0x70, 0xa2, 0x8a, 0x00, 0x61, 0xd9, 0x11, 0x89, 0xc2, 0x51, 0xa9, 0x92, 0x0b, - 0x44, 0xb0, 0x8c, 0x32, 0x98, 0x0a, 0x88, 0x22, 0xba, 0x30, 0x91, 0xcd, 0x43, 0x42, 0xcb, 0xa8, - 0x50, 0xc9, 0x22, 0xb9, 0xaa, 0x37, 0x9b, 0x94, 0xa0, 0x0e, 0x13, 0x0c, 0x01, 0x00, 0x0c, 0x13, - 0xd8, 0x1c, 0x06, 0x9a, 0x28, 0xb2, 0x29, 0x03, 0x0e, 0x86, 0x8c, 0x10, 0x83, 0x9a, 0x30, 0xf8, - 0x20, 0x08, 0x82, 0x1c, 0x92, 0x28, 0x9f, 0x93, 0x4a, 0x13, 0xea, 0x38, 0xb3, 0x0f, 0x03, 0x88, - 0x0b, 0x11, 0x93, 0x0e, 0x11, 0x90, 0x91, 0x8b, 0x86, 0x8a, 0x00, 0x25, 0xcc, 0x30, 0xa2, 0x8b, - 0x00, 0x68, 0xb0, 0x0b, 0x33, 0x8b, 0xf2, 0x49, 0x93, 0x0e, 0x02, 0x89, 0x99, 0x40, 0x81, 0xb0, - 0x4b, 0xb1, 0x20, 0xb0, 0x50, 0x88, 0x9a, 0x27, 0x9f, 0x93, 0x29, 0x12, 0xba, 0x92, 0x3c, 0xd0, - 0x11, 0x08, 0x88, 0x27, 0xcb, 0x09, 0x31, 0x93, 0x3b, 0xf8, 0x31, 0x8f, 0x84, 0x19, 0x89, 0x01, - 0x59, 0xf8, 0x20, 0x88, 0x80, 0x29, 0xb5, 0x1e, 0x82, 0x91, 0x28, 0xda, 0x32, 0xa9, 0x29, 0xa3, - 0x20, 0x9f, 0x85, 0x0a, 0x0a, 0x83, 0x02, 0x1e, 0xb2, 0x29, 0x20, 0xdb, 0x15, 0x8d, 0x83, 0x80, - 0x09, 0x98, 0x44, 0x9a, 0xd1, 0x48, 0xb9, 0x42, 0xb0, 0x30, 0xcb, 0x28, 0x16, 0xab, 0x10, 0x30, - 0xea, 0x13, 0x0c, 0x98, 0x07, 0x89, 0x89, 0x91, 0x29, 0x23, 0xcc, 0x08, 0x83, 0x51, 0xda, 0x13, - 0x1a, 0xb9, 0x94, 0x4a, 0xb2, 0x2c, 0x97, 0x0b, 0x08, 0x83, 0x2b, 0x81, 0xc2, 0x0a, 0x88, 0x64, - 0xe8, 0x18, 0x88, 0x95, 0x2b, 0x80, 0xa0, 0x48, 0x02, 0x90, 0xbb, 0x79, 0x95, 0x8d, 0x90, 0x12, - 0x09, 0x83, 0x89, 0x1d, 0x95, 0x0b, 0x13, 0x8f, 0x82, 0x21, 0x9d, 0x11, 0x38, 0xc1, 0x1a, 0x00, - 0xb0, 0x70, 0xd2, 0x3a, 0xb8, 0x43, 0x81, 0xbc, 0x42, 0xc0, 0x18, 0x82, 0x9d, 0x20, 0x85, 0x29, - 0xda, 0x20, 0x80, 0x02, 0x8c, 0x18, 0xe0, 0x48, 0x88, 0xa2, 0x4b, 0x13, 0xe8, 0x3b, 0xa3, 0x4a, - 0xe1, 0x30, 0xbb, 0x22, 0x11, 0x29, 0xf0, 0x5a, 0xa0, 0x30, 0xb9, 0x33, 0xbf, 0x06, 0x09, 0xc8, - 0x30, 0x92, 0x00, 0x0a, 0xb1, 0x01, 0x59, 0xc2, 0x8d, 0xa3, 0x70, 0xa9, 0x80, 0x10, 0xa0, 0x48, - 0xa9, 0x80, 0x69, 0x94, 0x8b, 0xb0, 0x38, 0x52, 0x9a, 0xc0, 0x38, 0x13, 0xae, 0xa3, 0x1c, 0x24, - 0xa1, 0x9c, 0x02, 0x0a, 0x84, 0x40, 0xfb, 0x89, 0x52, 0x8b, 0x95, 0x2b, 0x92, 0x00, 0x8b, 0x02, - 0xaa, 0x55, 0xa9, 0xa0, 0x4b, 0x11, 0xa4, 0x8f, 0x04, 0x09, 0x80, 0x18, 0xc0, 0x09, 0x33, 0xbc, - 0x01, 0x18, 0x02, 0xc3, 0x1f, 0x86, 0x9b, 0x12, 0x20, 0x9e, 0x01, 0x32, 0xae, 0x30, 0xb2, 0x10, - 0x1a, 0xa3, 0x8e, 0xa2, 0x70, 0xc1, 0x09, 0x02, 0x08, 0xb0, 0x89, 0x63, 0xc9, 0x20, 0x91, 0x99, - 0x29, 0x15, 0xd9, 0x1a, 0x52, 0xd0, 0x89, 0x12, 0xa8, 0x43, 0xcb, 0x82, 0x1a, 0x94, 0x1b, 0x11, - 0x94, 0x9f, 0x14, 0x8d, 0x83, 0x28, 0x82, 0xfb, 0x38, 0x82, 0xa0, 0x4a, 0xb0, 0x18, 0xa9, 0x36, - 0xab, 0x88, 0x23, 0x8e, 0x93, 0x4b, 0x94, 0xea, 0x50, 0xa8, 0x10, 0x82, 0x8e, 0x03, 0x1b, 0x02, - 0xaa, 0x00, 0x38, 0x9a, 0x97, 0x2c, 0xc1, 0x31, 0x90, 0xb9, 0x28, 0x84, 0x9c, 0x11, 0x9d, 0x26, - 0xc0, 0x59, 0xa0, 0xa9, 0x33, 0x1a, 0xc0, 0x38, 0xa3, 0x8c, 0x18, 0xb2, 0x15, 0x9e, 0x32, 0xd1, - 0x1b, 0x27, 0xbd, 0x21, 0x91, 0x10, 0xa1, 0x1e, 0x82, 0x8a, 0x41, 0x99, 0x98, 0x51, 0x0a, 0xe1, - 0x48, 0x90, 0x0a, 0xa3, 0x38, 0x90, 0x0c, 0x12, 0xb8, 0x21, 0x78, 0xe0, 0x8a, 0x42, 0x91, 0x9a, - 0x71, 0xc9, 0x10, 0x81, 0x10, 0xb8, 0x2b, 0x07, 0x0f, 0x01, 0x82, 0x8c, 0x81, 0x00, 0x08, 0x00, - 0x83, 0xaf, 0x23, 0xb9, 0x40, 0xaa, 0x42, 0xa1, 0xbd, 0x52, 0xa0, 0x39, 0x92, 0xa9, 0x10, 0x20, - 0x97, 0x1d, 0x81, 0xba, 0x44, 0xcb, 0x24, 0xa9, 0x80, 0x84, 0x8f, 0x02, 0x93, 0x2b, 0xb9, 0x11, - 0x12, 0x8e, 0x14, 0xbb, 0x62, 0xa8, 0x90, 0x2a, 0xa2, 0x35, 0xad, 0x21, 0xa1, 0x98, 0x19, 0x28, - 0xd1, 0x29, 0x17, 0xae, 0x21, 0x83, 0x0d, 0xb2, 0x3a, 0x12, 0x98, 0x82, 0x9f, 0x82, 0x10, 0xb0, - 0x3d, 0x86, 0xa9, 0x29, 0x84, 0x0e, 0x03, 0xa9, 0x8b, 0x15, 0x8c, 0x23, 0xc0, 0x29, 0x18, 0xd0, - 0x4a, 0x92, 0xbb, 0x55, 0xc9, 0x28, 0x81, 0x09, 0x28, 0xa4, 0x19, 0x8b, 0x80, 0x96, 0xaa, 0x3d, - 0x07, 0x8a, 0x18, 0x94, 0x8e, 0x12, 0x00, 0x9a, 0x83, 0x0b, 0x23, 0xbd, 0x31, 0x03, 0x9b, 0x11, - 0x82, 0xdf, 0x41, 0xa2, 0x0b, 0x03, 0xb0, 0x7a, 0xe1, 0x29, 0x02, 0xba, 0x22, 0xb8, 0x89, 0x35, - 0x19, 0xb8, 0xb9, 0x6b, 0xb3, 0x0b, 0x63, 0x90, 0xd0, 0x49, 0xa8, 0x00, 0x30, 0x91, 0x9f, 0xa1, - 0x52, 0x00, 0xf9, 0x30, 0xaa, 0x03, 0x18, 0x9c, 0x02, 0x43, 0xe0, 0x2c, 0xa1, 0x10, 0x89, 0x25, - 0x8d, 0xa3, 0x3b, 0xa3, 0x0a, 0x88, 0x07, 0x8e, 0x01, 0x10, 0xa8, 0x10, 0x19, 0xe2, 0x30, 0x99, - 0x23, 0xea, 0x41, 0x09, 0xb8, 0x15, 0x09, 0xcb, 0x52, 0x99, 0x85, 0x8b, 0x30, 0xd3, 0x2b, 0x84, - 0x8b, 0x94, 0x2a, 0xf3, 0x29, 0x99, 0x24, 0xaa, 0xa1, 0x60, 0xa9, 0x08, 0x92, 0x0d, 0x12, 0x91, - 0xdb, 0x68, 0xa1, 0x29, 0x84, 0x8e, 0x92, 0x39, 0xa0, 0x90, 0x1b, 0x37, 0xd9, 0x2a, 0x85, 0x1a, - 0x88, 0xa1, 0x98, 0x4c, 0xb4, 0x39, 0xa1, 0x0b, 0x04, 0xb9, 0x5a, 0x85, 0x8c, 0x12, 0xb0, 0x4c, - 0xa3, 0x89, 0x00, 0x9a, 0x34, 0x99, 0x68, 0xa4, 0x0c, 0x89, 0x84, 0x3b, 0xc1, 0x34, 0xca, 0x10, - 0x80, 0x98, 0x29, 0xda, 0x63, 0xa9, 0xa8, 0x44, 0xba, 0x81, 0xb1, 0x71, 0xba, 0x32, 0xeb, 0x10, - 0x50, 0xc1, 0x8a, 0x31, 0xc1, 0x18, 0x18, 0xf0, 0x10, 0x29, 0x92, 0x8a, 0x80, 0x54, 0xea, 0x20, - 0x08, 0x91, 0x0c, 0x84, 0xaa, 0x31, 0x80, 0xa8, 0xc9, 0x70, 0x95, 0x9c, 0x32, 0xa8, 0x18, 0x0a, - 0xd0, 0x51, 0x09, 0xa3, 0x0e, 0x84, 0x19, 0xa8, 0x11, 0x99, 0x23, 0x2a, 0xf2, 0x1b, 0x15, 0xaa, - 0x09, 0x05, 0x19, 0x08, 0xe1, 0x20, 0xc9, 0x42, 0x98, 0xaa, 0x28, 0x07, 0x99, 0x9c, 0x07, 0x99, - 0x08, 0x13, 0xbb, 0x21, 0x92, 0x1c, 0xb9, 0x16, 0x9a, 0x2b, 0x95, 0x89, 0x03, 0x9a, 0x88, 0x91, - 0x32, 0x5a, 0xf8, 0x8a, 0x43, 0x29, 0xf1, 0x5a, 0xb8, 0x28, 0x31, 0xd1, 0x0b, 0x33, 0xdb, 0x00, - 0x41, 0x98, 0x28, 0x82, 0xfb, 0x69, 0xa8, 0x11, 0x80, 0x98, 0x40, 0xb0, 0x1d, 0x05, 0xa8, 0x4a, - 0x93, 0xac, 0x11, 0x90, 0x20, 0xe2, 0x18, 0x9a, 0x62, 0xd1, 0x19, 0x80, 0x38, 0xd1, 0x18, 0x09, - 0x83, 0x59, 0xc8, 0x89, 0x42, 0xfa, 0x40, 0xa9, 0x08, 0x11, 0x82, 0xbb, 0x40, 0xa1, 0x2c, 0x87, - 0x9c, 0x40, 0x90, 0xa8, 0x11, 0xa9, 0x62, 0x90, 0x80, 0x8b, 0x42, 0x81, 0xca, 0x1a, 0x81, 0x70, - 0x95, 0x09, 0xa9, 0x51, 0xc9, 0x22, 0xaa, 0x19, 0x35, 0xf9, 0x49, 0x81, 0x99, 0x30, 0xe8, 0x2a, - 0x03, 0x91, 0xac, 0x10, 0x48, 0xa4, 0x0a, 0xa9, 0x38, 0x03, 0x39, 0xdf, 0x11, 0x18, 0x88, 0x94, - 0x9f, 0x43, 0xc0, 0x09, 0x09, 0x84, 0x2a, 0x01, 0xe9, 0x28, 0x12, 0xd8, 0x39, 0xa1, 0x18, 0x32, - 0xf8, 0x0c, 0x31, 0xa2, 0x8a, 0x28, 0xd1, 0x38, 0x83, 0xda, 0x09, 0x38, 0x27, 0xad, 0x31, 0x8a, - 0x96, 0x1b, 0x10, 0xa8, 0x41, 0x11, 0xe8, 0x28, 0x8a, 0x05, 0x9a, 0x1a, 0x07, 0x9a, 0x21, 0x98, - 0x2a, 0x90, 0xa3, 0x8f, 0x01, 0x82, 0x21, 0x0a, 0xb0, 0x3b, 0xc5, 0x8d, 0x03, 0x2a, 0xab, 0x27, - 0x0f, 0x82, 0x18, 0xb1, 0x8a, 0x39, 0xe2, 0x49, 0xb8, 0x08, 0x23, 0x29, 0xca, 0x07, 0x1a, 0xd9, - 0x24, 0x89, 0xaa, 0x71, 0xc2, 0x1b, 0x31, 0xc1, 0x19, 0x02, 0xac, 0x32, 0xc8, 0x12, 0x4a, 0xf9, - 0x60, 0xa9, 0x91, 0x39, 0xa1, 0x00, 0x88, 0x88, 0x10, 0xf2, 0x69, 0x88, 0xa8, 0x40, 0xb2, 0x9d, - 0x22, 0x20, 0xdb, 0x01, 0x28, 0x8a, 0x87, 0x2b, 0xb2, 0x1b, 0x30, 0xa7, 0x1e, 0x93, 0x1a, 0x92, - 0x18, 0x19, 0xc3, 0x39, 0xe9, 0x41, 0xa9, 0x23, 0x99, 0xbd, 0x60, 0xa3, 0x19, 0x09, 0xb0, 0x69, - 0xb2, 0x49, 0xc8, 0x39, 0xb0, 0x83, 0x4b, 0xb2, 0xa8, 0x72, 0x99, 0xca, 0x60, 0xa3, 0x1a, 0xb9, - 0x81, 0x80, 0x5c, 0xc2, 0x09, 0x22, 0x19, 0xa4, 0xbf, 0x33, 0xb2, 0x0e, 0x22, 0xd9, 0x50, 0x90, - 0x08, 0xa8, 0x30, 0xa8, 0x42, 0xdb, 0x23, 0x80, 0x0d, 0xa5, 0x4b, 0x91, 0x92, 0x1b, 0x01, 0x9a, - 0x03, 0x5c, 0xe8, 0x21, 0x19, 0xb4, 0x1b, 0x92, 0x19, 0x88, 0x09, 0x99, 0x67, 0x8d, 0x03, 0x8c, - 0x88, 0x33, 0xab, 0xb1, 0x50, 0x80, 0x9c, 0x84, 0x00, 0x89, 0x80, 0xa0, 0x10, 0x2c, 0x94, 0x2b, - 0x9d, 0xd2, 0x70, 0xb8, 0x03, 0x3c, 0xd2, 0x18, 0x8a, 0x85, 0x98, 0x3c, 0xc5, 0x28, 0x98, 0x80, - 0x30, 0xb0, 0x49, 0xa2, 0x8a, 0x38, 0x87, 0x8b, 0x49, 0xf4, 0x49, 0x91, 0x99, 0x42, 0xca, 0x38, - 0x92, 0x0b, 0x84, 0x18, 0x9b, 0xc2, 0x59, 0x00, 0xb1, 0x8c, 0x46, 0xeb, 0x10, 0x21, 0xca, 0x20, - 0x01, 0xdb, 0x32, 0x88, 0xb1, 0x3a, 0xd2, 0x4a, 0xa0, 0x51, 0x91, 0xba, 0x60, 0xb8, 0x29, 0x01, - 0x04, 0x9e, 0x82, 0x38, 0xb9, 0x32, 0x81, 0xaf, 0x13, 0x08, 0x9b, 0x15, 0x98, 0xa0, 0x3b, 0x85, - 0xa2, 0x2d, 0x84, 0x9c, 0x01, 0x92, 0x0a, 0x40, 0x91, 0xa1, 0x8e, 0x8a, 0x47, 0xb0, 0x99, 0x41, - 0xeb, 0x32, 0x88, 0xa9, 0x03, 0xab, 0x68, 0xa3, 0x8d, 0x32, 0xca, 0x98, 0x52, 0x9a, 0x22, 0xc8, - 0x1a, 0x11, 0x9a, 0x07, 0x1b, 0xca, 0x26, 0x0a, 0xba, 0x34, 0x9a, 0x80, 0x13, 0x0f, 0x10, 0x93, - 0x1a, 0xb8, 0x9d, 0x07, 0x29, 0xc9, 0x42, 0xa9, 0x1b, 0x16, 0x9c, 0x01, 0x12, 0x0c, 0xe2, 0x49, - 0x01, 0xb0, 0x29, 0x98, 0x03, 0x99, 0x53, 0xac, 0x91, 0x43, 0x8c, 0xa1, 0x50, 0x08, 0xe0, 0x39, - 0x98, 0x11, 0x90, 0x00, 0xaf, 0x21, 0x94, 0x1a, 0x09, 0xa3, 0x00, 0x9e, 0x12, 0xab, 0x12, 0x32, - 0xbc, 0xfb, 0x71, 0x90, 0x08, 0x1a, 0xb2, 0x1c, 0x22, 0xa1, 0xbc, 0x25, 0x00, 0xba, 0x90, 0x34, - 0x2b, 0x90, 0xc1, 0x0f, 0x15, 0x19, 0xa0, 0xc0, 0x3a, 0x33, 0xea, 0x22, 0x1c, 0x04, 0x0b, 0xb1, - 0x9a, 0x71, 0x87, 0x9a, 0x80, 0x28, 0x18, 0x92, 0x09, 0xdb, 0x55, 0xb8, 0x0a, 0x02, 0x31, 0x9e, - 0x80, 0x01, 0x0a, 0x33, 0xb2, 0xff, 0x20, 0x28, 0xc2, 0x8b, 0x33, 0xaa, 0x09, 0x95, 0x1d, 0x98, - 0x22, 0x83, 0xbf, 0x48, 0x04, 0xaa, 0x38, 0xc2, 0x1a, 0x61, 0xc0, 0x2a, 0x81, 0x99, 0x41, 0xe0, - 0x3a, 0x84, 0xa8, 0x3b, 0xa4, 0x1c, 0x04, 0xaa, 0x81, 0x30, 0xdb, 0x45, 0xc9, 0x39, 0x03, 0x9d, - 0x02, 0x18, 0x8a, 0x85, 0x0a, 0x09, 0xa2, 0x1c, 0x16, 0xab, 0x00, 0x44, 0xeb, 0x30, 0xb2, 0x0a, - 0x22, 0xc0, 0x2a, 0xc1, 0x30, 0x99, 0xe8, 0x58, 0x81, 0x99, 0x28, 0xb2, 0x0d, 0x10, 0xa4, 0x2b, - 0xb8, 0x71, 0x90, 0xb9, 0x78, 0xc1, 0x29, 0x10, 0xb0, 0x50, 0xa8, 0x11, 0xc9, 0x49, 0x02, 0xb9, - 0xbb, 0x46, 0x00, 0xbc, 0x05, 0x18, 0x9a, 0x23, 0x98, 0x89, 0x89, 0x43, 0xd0, 0x1c, 0x07, 0x89, - 0x2a, 0xc4, 0x3a, 0xa9, 0x15, 0x8c, 0x91, 0x38, 0xa4, 0x0c, 0x00, 0x98, 0x80, 0x42, 0xcb, 0x00, - 0x51, 0xd8, 0x08, 0x00, 0x89, 0x03, 0x8b, 0xb3, 0x5a, 0x10, 0x97, 0xab, 0x18, 0x33, 0xf3, 0x3a, - 0xb0, 0x32, 0x8d, 0xa5, 0x29, 0xa8, 0x2a, 0x37, 0xbc, 0x40, 0x90, 0x98, 0xa1, 0x49, 0x22, 0xd9, - 0x19, 0x11, 0x0c, 0x13, 0xe1, 0x58, 0xba, 0x14, 0x28, 0xfa, 0x20, 0x2a, 0xd3, 0x18, 0x28, 0xe1, - 0x38, 0xd0, 0x18, 0x82, 0xac, 0x34, 0xa8, 0x8c, 0x24, 0xd8, 0x29, 0x11, 0xc8, 0x48, 0xa8, 0x20, - 0x80, 0xc9, 0x52, 0xb8, 0x19, 0x84, 0x1c, 0x80, 0x22, 0xbd, 0x53, 0x98, 0xa9, 0x73, 0xb9, 0x20, - 0x10, 0xac, 0x16, 0x9c, 0x12, 0x90, 0x0c, 0x04, 0x99, 0x09, 0x85, 0x9a, 0x38, 0xa3, 0x2b, 0x90, - 0xc0, 0x79, 0xd1, 0x29, 0x23, 0xe9, 0x39, 0x91, 0xa8, 0x2a, 0x82, 0x11, 0xcb, 0x11, 0x68, 0xe0, - 0x38, 0x81, 0xc9, 0x29, 0x83, 0x0a, 0x99, 0x33, 0xa9, 0x91, 0xaf, 0x36, 0xd9, 0x19, 0x84, 0x0b, - 0xa9, 0x15, 0x10, 0xbc, 0x42, 0xa0, 0x3d, 0xb1, 0x12, 0x18, 0xba, 0x33, 0x62, 0xe9, 0x18, 0x04, - 0x9c, 0x08, 0x35, 0xcc, 0x32, 0xa8, 0x1a, 0xa3, 0x2d, 0x83, 0xb9, 0x49, 0x13, 0xfb, 0x59, 0x91, - 0x9a, 0x01, 0x29, 0xa2, 0x2a, 0x30, 0xb6, 0x9f, 0x51, 0x90, 0xaa, 0x43, 0xa9, 0x88, 0x13, 0x9d, - 0x02, 0x82, 0x1c, 0xd3, 0x18, 0x29, 0xc4, 0x1b, 0x22, 0xa2, 0x9c, 0x40, 0xd2, 0x2a, 0xa3, 0x2b, - 0x83, 0xbe, 0x46, 0xb8, 0x0a, 0x12, 0xa8, 0x29, 0xb3, 0x39, 0x16, 0xbf, 0x14, 0x8a, 0x88, 0x23, - 0x99, 0x9d, 0x14, 0x98, 0x19, 0x92, 0xaa, 0x32, 0x8c, 0x86, 0x10, 0xcb, 0x33, 0xca, 0x82, 0x62, - 0xad, 0x84, 0x0a, 0x02, 0x90, 0x58, 0xc1, 0x9b, 0x13, 0x23, 0x9f, 0x12, 0x08, 0x0e, 0x84, 0x80, - 0x39, 0xe8, 0x52, 0xaa, 0xa0, 0x41, 0x99, 0x91, 0x39, 0x90, 0x80, 0x00, 0x80, 0x9f, 0x86, 0x1a, - 0xb2, 0xaa, 0x70, 0xc2, 0x29, 0x09, 0xa4, 0x1e, 0x03, 0x9a, 0x01, 0xa8, 0x79, 0xc1, 0x28, 0x88, - 0x91, 0x38, 0x88, 0xa0, 0x5c, 0x91, 0x90, 0x1c, 0x81, 0x31, 0x92, 0xaf, 0x83, 0x1c, 0x86, 0x09, - 0x19, 0xc2, 0x31, 0x9c, 0x95, 0x0d, 0x13, 0x00, 0xca, 0x31, 0xa9, 0x30, 0xc0, 0x0c, 0x84, 0x49, - 0xb1, 0x1a, 0x8a, 0x16, 0x1b, 0xe8, 0x39, 0xa2, 0x42, 0x9a, 0xd9, 0x71, 0x98, 0x00, 0xc9, 0x42, - 0xa9, 0x98, 0x21, 0xc9, 0x31, 0x19, 0xd2, 0x0a, 0x28, 0x17, 0xab, 0x19, 0x84, 0x0b, 0x00, 0x84, - 0x09, 0x39, 0xf2, 0x38, 0x9a, 0x94, 0x72, 0xf0, 0x29, 0x82, 0xb8, 0x48, 0x82, 0xbb, 0x51, 0xa8, - 0x10, 0x00, 0x88, 0x2a, 0x98, 0xa5, 0x7a, 0x89, 0xc2, 0x38, 0xbc, 0x04, 0x38, 0xac, 0x15, 0x8a, - 0xa1, 0x58, 0xba, 0x94, 0x1c, 0x81, 0x92, 0x1e, 0x85, 0x8a, 0x98, 0x42, 0xd9, 0x40, 0x90, 0x99, - 0x20, 0x98, 0x89, 0x20, 0xd0, 0x62, 0xb9, 0x20, 0x91, 0xad, 0x63, 0xc0, 0x18, 0x19, 0xb2, 0x3a, - 0x92, 0x91, 0x19, 0xa9, 0x70, 0x97, 0x0b, 0x12, 0xd0, 0x3a, 0x00, 0x94, 0x3b, 0xd9, 0x23, 0xaa, - 0x13, 0x1f, 0x82, 0x82, 0x9d, 0x32, 0xba, 0x06, 0x0b, 0xc2, 0x28, 0x0c, 0x94, 0x38, 0xc9, 0x21, - 0x30, 0xfa, 0x48, 0x98, 0xb8, 0x60, 0xc1, 0x19, 0x80, 0x08, 0x00, 0x08, 0x91, 0x7b, 0xf8, 0x20, - 0x90, 0x39, 0xd2, 0x2a, 0x12, 0xb9, 0x19, 0x30, 0x93, 0x9f, 0x34, 0xb9, 0x80, 0x88, 0x59, 0xa2, - 0x9c, 0x63, 0xb0, 0x1d, 0x84, 0x01, 0x9d, 0x12, 0x08, 0x90, 0x28, 0xdb, 0x35, 0xab, 0x31, 0xb2, - 0x0d, 0x12, 0x89, 0xab, 0x26, 0x0a, 0xd9, 0x51, 0xd0, 0x39, 0x98, 0x01, 0x09, 0xa0, 0x68, 0xe0, - 0x28, 0x01, 0xca, 0x62, 0xc8, 0x28, 0x00, 0xa8, 0x28, 0x90, 0x82, 0x2b, 0xf2, 0x49, 0x80, 0xa8, - 0x50, 0xa2, 0x0e, 0x82, 0x00, 0x89, 0x13, 0xbc, 0x20, 0x87, 0x0a, 0x08, 0xa3, 0x48, 0xca, 0x28, - 0x23, 0xcd, 0x21, 0x83, 0x8f, 0x22, 0xb8, 0x3c, 0xa5, 0x2b, 0x90, 0x01, 0x98, 0x00, 0x90, 0x8b, - 0x44, 0xcd, 0x32, 0x80, 0x9c, 0x07, 0x9b, 0x21, 0xb0, 0x68, 0x98, 0x90, 0x19, 0x08, 0xc1, 0x70, - 0xb9, 0x32, 0x10, 0x9e, 0x04, 0x88, 0x0b, 0x93, 0x89, 0x32, 0xba, 0x43, 0xae, 0x11, 0x93, 0x2f, - 0xa2, 0x01, 0x89, 0x48, 0xd9, 0x02, 0x8a, 0x44, 0xb9, 0x1a, 0x01, 0x42, 0xdb, 0x41, 0xc8, 0x09, - 0x38, 0x95, 0x81, 0x9f, 0x24, 0xc9, 0x18, 0x22, 0xc8, 0x1b, 0x82, 0xb1, 0x7b, 0xb2, 0x28, 0x80, - 0xbb, 0x04, 0x89, 0x2e, 0x86, 0xaa, 0x50, 0xc0, 0x18, 0x30, 0xc0, 0x88, 0x2a, 0xa2, 0x91, 0x6a, - 0xb3, 0x99, 0x49, 0x04, 0xab, 0x1c, 0x16, 0xdb, 0x11, 0x21, 0xea, 0x31, 0x98, 0x89, 0x01, 0x4b, - 0xc3, 0x00, 0x0c, 0x12, 0xcb, 0x53, 0xc8, 0x28, 0x82, 0x0d, 0x82, 0x21, 0x1c, 0xe2, 0x10, 0x89, - 0x32, 0xa8, 0xa8, 0x12, 0x9f, 0x26, 0xcb, 0x22, 0x89, 0x8a, 0x07, 0x8c, 0x20, 0xa1, 0x09, 0x10, - 0xb0, 0x41, 0x98, 0xbb, 0x73, 0xe8, 0x29, 0x03, 0x99, 0x19, 0x94, 0x0b, 0x91, 0x10, 0xaa, 0x17, - 0x0e, 0xb3, 0x1a, 0x24, 0xa9, 0xa9, 0x68, 0xa2, 0x1c, 0x04, 0xab, 0x13, 0x88, 0x8c, 0x02, 0x9e, - 0x15, 0x08, 0xb8, 0x19, 0x92, 0x40, 0x40, 0xf0, 0x3b, 0x08, 0x91, 0x89, 0x42, 0x08, 0xb6, 0x2f, - 0xa1, 0x01, 0x2a, 0x90, 0xb4, 0x1f, 0x03, 0x90, 0x1b, 0x92, 0x31, 0xf0, 0x8a, 0x12, 0x92, 0x3b, - 0xa5, 0x8f, 0x21, 0x81, 0x8a, 0x18, 0xaa, 0x94, 0x70, 0xaa, 0x82, 0x38, 0xda, 0x32, 0x99, 0xd1, - 0x51, 0x8b, 0xc2, 0x7a, 0xa0, 0x20, 0x9a, 0x82, 0x3a, 0xa3, 0x9a, 0x8b, 0x33, 0xa8, 0xbd, 0x62, - 0xa0, 0x02, 0x1f, 0xa2, 0x30, 0xd0, 0x49, 0x90, 0x88, 0x40, 0xdb, 0x21, 0x18, 0x02, 0x88, 0x90, - 0x1e, 0x12, 0xa0, 0x2a, 0x47, 0xc9, 0x1b, 0x95, 0x2d, 0x91, 0x82, 0x39, 0xe0, 0x18, 0x20, 0xe8, - 0x41, 0x89, 0xb9, 0x43, 0xa0, 0x0c, 0x03, 0xb0, 0x1c, 0x03, 0x88, 0x9a, 0x16, 0x8b, 0xa8, 0x08, - 0x58, 0xd3, 0x0b, 0x05, 0x8c, 0x11, 0xa4, 0x2c, 0x90, 0x11, 0x09, 0xdb, 0x24, 0xa9, 0x90, 0x69, - 0xd8, 0x23, 0x0c, 0x94, 0x8a, 0x21, 0xa1, 0x0e, 0x12, 0x88, 0xba, 0x74, 0xc0, 0x10, 0x39, 0xd3, - 0x2a, 0xb0, 0x50, 0x88, 0xa8, 0x12, 0xeb, 0x51, 0xb0, 0x00, 0x28, 0xc8, 0x21, 0x8a, 0x82, 0x10, - 0x8c, 0x93, 0x0e, 0xa4, 0x78, 0xb8, 0x91, 0x6b, 0xd1, 0x38, 0x88, 0xa1, 0x30, 0xc9, 0x41, 0xc9, - 0x22, 0xba, 0x21, 0x9a, 0x06, 0x1a, 0x9a, 0x85, 0x3a, 0xe9, 0x42, 0x90, 0xda, 0x21, 0xb8, 0x20, - 0x00, 0xa4, 0x29, 0xca, 0x32, 0xc9, 0x04, 0x3a, 0xec, 0x13, 0x3a, 0xd0, 0x09, 0x04, 0x0b, 0x89, - 0x86, 0x2c, 0xc3, 0x19, 0x11, 0xfa, 0x31, 0x80, 0xa9, 0x38, 0xb2, 0x50, 0x9a, 0x91, 0x19, 0x0a, - 0x17, 0x9a, 0xa3, 0x1e, 0x04, 0x99, 0x00, 0x98, 0x7b, 0xd3, 0x48, 0xa8, 0x10, 0xa9, 0x90, 0x52, - 0xaa, 0x15, 0x1a, 0xcb, 0x11, 0x21, 0x91, 0x0e, 0x22, 0xe2, 0x1b, 0x83, 0x0a, 0x91, 0x21, 0xa9, - 0xb3, 0x7a, 0xf1, 0x50, 0xba, 0x23, 0x0a, 0xa1, 0x10, 0x0a, 0xb5, 0x2f, 0x94, 0x8c, 0x03, 0xa8, - 0x28, 0xa1, 0x8c, 0x38, 0x90, 0x03, 0x89, 0x4c, 0xc1, 0x91, 0x98, 0x3f, 0xa4, 0x08, 0x32, 0xbf, - 0x15, 0x98, 0x09, 0x83, 0x0e, 0x03, 0x00, 0x0c, 0x84, 0x9b, 0x12, 0x88, 0x19, 0x01, 0x88, 0xc9, - 0x16, 0x0d, 0xb4, 0x4b, 0xa9, 0x07, 0x9b, 0x22, 0x93, 0x8f, 0x01, 0x90, 0x08, 0x10, 0xc9, 0x22, - 0x3c, 0x94, 0x99, 0x0e, 0x23, 0x90, 0xbb, 0x72, 0xd0, 0x48, 0xb8, 0x20, 0x00, 0x98, 0x22, 0xda, - 0x39, 0x93, 0x9c, 0x11, 0x19, 0xb2, 0x49, 0xd3, 0x9d, 0x51, 0xa0, 0x40, 0x98, 0x99, 0x00, 0x93, - 0x2d, 0x83, 0xd2, 0x2f, 0x84, 0x0a, 0x18, 0xb1, 0x59, 0x90, 0x89, 0x94, 0x09, 0x28, 0xd1, 0x29, - 0x88, 0x10, 0xf3, 0x3a, 0x11, 0xe2, 0x4b, 0xb8, 0x15, 0x9c, 0x38, 0x94, 0x8b, 0x10, 0xb4, 0x0d, - 0x21, 0x00, 0xa0, 0x3a, 0xe2, 0x39, 0x08, 0xc2, 0x18, 0x2c, 0x82, 0xb0, 0x20, 0x30, 0xf9, 0x39, - 0x89, 0x91, 0x42, 0x0a, 0xf5, 0x2c, 0x91, 0x32, 0x89, 0xb1, 0x39, 0xa8, 0x63, 0x98, 0xd9, 0x79, - 0xb1, 0x58, 0xb0, 0x28, 0x91, 0x3a, 0x8a, 0xa4, 0x53, 0x8e, 0xa2, 0x20, 0x0b, 0x02, 0xca, 0x88, - 0x2a, 0x24, 0x8b, 0x80, 0xd1, 0x70, 0xb9, 0x18, 0x92, 0x29, 0x9a, 0x08, 0xd2, 0x2e, 0x83, 0xc3, - 0x5d, 0xc1, 0x20, 0x98, 0x10, 0xc8, 0x2b, 0x17, 0x9b, 0x31, 0xdb, 0x31, 0x81, 0x09, 0x20, 0xdb, - 0x04, 0x9b, 0x20, 0xd9, 0x23, 0x30, 0x9e, 0xa2, 0x23, 0x19, 0xea, 0x33, 0xe9, 0x69, 0xb0, 0x08, - 0x48, 0xa1, 0x29, 0xbb, 0x17, 0x1b, 0x92, 0x9a, 0x29, 0x85, 0x0c, 0x85, 0x9a, 0x39, 0x96, 0x8b, - 0x80, 0x82, 0x0d, 0x23, 0xba, 0xa3, 0x6b, 0x94, 0x8c, 0x00, 0x82, 0x09, 0x11, 0xa2, 0x2c, 0xe2, - 0x39, 0x25, 0xdd, 0x21, 0x92, 0x8a, 0x08, 0x95, 0x1b, 0x01, 0x23, 0xaf, 0x81, 0x60, 0xc0, 0x18, - 0x18, 0xd3, 0x2b, 0x92, 0x10, 0xab, 0x26, 0xa9, 0x88, 0x31, 0x9a, 0xd9, 0x22, 0x21, 0xbb, 0x99, - 0x07, 0x9d, 0x41, 0x83, 0xbc, 0x32, 0x3b, 0xf0, 0x40, 0xb8, 0x98, 0x49, 0x92, 0xa1, 0x1a, 0x19, - 0xb0, 0x10, 0x0c, 0x07, 0x0e, 0x84, 0x9a, 0x88, 0x24, 0x98, 0x19, 0x8a, 0x01, 0x01, 0x8d, 0x35, - 0xbc, 0x61, 0xa8, 0xa3, 0x2e, 0xa2, 0x11, 0xab, 0x22, 0xb8, 0x30, 0x20, 0xb8, 0x14, 0x8e, 0x17, - 0xbc, 0x21, 0x91, 0x8a, 0x54, 0xeb, 0x41, 0xa9, 0x02, 0x20, 0xda, 0x40, 0x80, 0x80, 0x99, 0x83, - 0x8e, 0x01, 0x21, 0x0b, 0x23, 0xd9, 0x1a, 0x88, 0x00, 0x86, 0x19, 0xdc, 0x10, 0x32, 0xac, 0x12, - 0x9b, 0x17, 0x8c, 0x02, 0x09, 0x1a, 0xc6, 0x3a, 0xb8, 0x12, 0x40, 0xc2, 0x1e, 0x83, 0x19, 0x9c, - 0x16, 0xab, 0x81, 0x60, 0xd1, 0x18, 0x80, 0xa9, 0x40, 0xa0, 0x38, 0x03, 0xad, 0x31, 0xc2, 0x8c, - 0x23, 0x90, 0x8b, 0x17, 0x9a, 0x09, 0xb2, 0x70, 0xa8, 0x80, 0x81, 0x20, 0x2a, 0xf3, 0x11, 0x2b, - 0xa3, 0xcb, 0x51, 0xa0, 0x0c, 0x06, 0x9b, 0x10, 0x12, 0x8a, 0xd9, 0x21, 0x10, 0xbb, 0xc3, 0x58, - 0xb3, 0x2c, 0x06, 0xdb, 0x12, 0x08, 0x98, 0xe1, 0x3a, 0xa2, 0x42, 0xb9, 0x88, 0x19, 0x83, 0xa8, - 0x5a, 0x94, 0x29, 0xa0, 0x1b, 0xa9, 0xa5, 0x08, 0x5c, 0xc2, 0x31, 0xb5, 0x8f, 0x03, 0x98, 0x2c, - 0xa3, 0x31, 0xea, 0x50, 0x90, 0x91, 0x8a, 0x39, 0x86, 0x1c, 0xa3, 0x0d, 0x10, 0x03, 0xbb, 0x60, - 0xa0, 0x89, 0x12, 0x9b, 0x41, 0x21, 0xf9, 0x18, 0x19, 0x40, 0xe3, 0x8a, 0x38, 0xe0, 0x22, 0x89, - 0xda, 0x30, 0x84, 0xa9, 0x70, 0xa0, 0x98, 0x80, 0x8a, 0x83, 0x4a, 0x81, 0x80, 0xc0, 0x3e, 0x87, - 0x8a, 0x28, 0xa0, 0x9a, 0x32, 0x11, 0x8b, 0x99, 0x07, 0x8c, 0x9b, 0x46, 0xa0, 0x28, 0xd9, 0x22, - 0x9b, 0x21, 0x82, 0xbf, 0x06, 0x19, 0xa0, 0x09, 0x03, 0x20, 0xeb, 0x01, 0x09, 0x1b, 0x27, 0xd8, - 0x29, 0x02, 0xf9, 0x29, 0x81, 0x80, 0x10, 0x80, 0xab, 0x31, 0x28, 0xb8, 0xa9, 0xc9, 0x79, 0xf2, - 0x40, 0x80, 0xa8, 0x81, 0x11, 0xbb, 0x49, 0xb6, 0x1c, 0x92, 0x3b, 0xa6, 0x2a, 0x05, 0xb9, 0x3a, - 0x93, 0x39, 0xca, 0x34, 0xbd, 0x03, 0x11, 0x8c, 0x04, 0xb8, 0x59, 0xa8, 0x09, 0x43, 0xb2, 0x8f, - 0x20, 0xb1, 0x69, 0xb8, 0x88, 0x11, 0x98, 0x21, 0xc8, 0x19, 0x05, 0x2c, 0xf1, 0x3b, 0x02, 0x10, - 0xd1, 0x1a, 0x41, 0x9b, 0x06, 0x08, 0x9b, 0x10, 0x20, 0x94, 0x09, 0x3b, 0x27, 0xad, 0x89, 0x35, - 0xcb, 0x30, 0xa2, 0x8b, 0x51, 0x84, 0xac, 0x88, 0x03, 0x0a, 0xab, 0x07, 0x1a, 0x23, 0xcb, 0x82, - 0x8e, 0x52, 0xb0, 0x0d, 0x02, 0x88, 0x09, 0x83, 0xb8, 0x1c, 0x83, 0x13, 0xcd, 0x53, 0x09, 0xf1, - 0x1a, 0x03, 0x9a, 0x10, 0x33, 0xce, 0x30, 0x02, 0xbb, 0x31, 0xa0, 0x09, 0x29, 0xe1, 0x58, 0xab, - 0x43, 0x82, 0xeb, 0x50, 0x00, 0xb0, 0x71, 0xa9, 0x08, 0x12, 0x99, 0x09, 0x80, 0x34, 0x00, 0xd8, - 0x39, 0xc2, 0x12, 0x2e, 0xc1, 0x29, 0x01, 0xc8, 0x2b, 0x07, 0x1a, 0xb0, 0x21, 0x8e, 0x94, 0x0b, - 0x12, 0xb8, 0x0c, 0x16, 0xca, 0x39, 0x14, 0xeb, 0x10, 0x11, 0xaa, 0x43, 0x8c, 0xa1, 0x20, 0x18, - 0xa3, 0x8c, 0xb0, 0x55, 0xcc, 0x41, 0x90, 0x99, 0x50, 0xc0, 0x18, 0x11, 0xca, 0x31, 0xca, 0x21, - 0x11, 0x9b, 0x28, 0xc1, 0x49, 0x32, 0xf8, 0x4a, 0xc0, 0x08, 0x31, 0xa2, 0x8b, 0x33, 0xeb, 0x19, - 0x27, 0x9a, 0x10, 0xc2, 0x1c, 0x84, 0x0a, 0x18, 0xaa, 0x01, 0x24, 0xdc, 0x49, 0x92, 0x29, 0xe0, - 0x39, 0xb2, 0x3a, 0x82, 0xa9, 0x09, 0x01, 0x83, 0xdf, 0x32, 0x83, 0xcb, 0x20, 0x20, 0x43, 0xe1, - 0x0b, 0x2a, 0x01, 0x04, 0x90, 0xbf, 0x34, 0xa2, 0x1b, 0x09, 0xb6, 0x1d, 0x05, 0x0a, 0x90, 0x12, - 0x09, 0xb9, 0x8c, 0x91, 0x57, 0xaa, 0x01, 0x0a, 0xc0, 0x71, 0xa8, 0x19, 0x20, 0xa1, 0x9d, 0x01, - 0x13, 0xbb, 0x51, 0xe8, 0x89, 0x32, 0xa8, 0x00, 0x2b, 0x05, 0x00, 0x9a, 0x88, 0xd1, 0x2c, 0xa2, - 0xcb, 0x44, 0x40, 0xe1, 0x0a, 0x01, 0xb1, 0x58, 0xaa, 0x85, 0x8b, 0x24, 0x98, 0x8a, 0x05, 0x9a, - 0x12, 0x29, 0xf2, 0x6a, 0x98, 0x98, 0x30, 0xb1, 0x7a, 0x92, 0xa9, 0x29, 0xa0, 0x58, 0xb0, 0x01, - 0x4a, 0x94, 0xa9, 0x9b, 0x24, 0x29, 0xc9, 0x25, 0xab, 0x1b, 0x64, 0xe2, 0x2c, 0x82, 0x90, 0x19, - 0xa1, 0x18, 0xba, 0x14, 0x30, 0xba, 0x20, 0x63, 0xf1, 0x1c, 0x12, 0x90, 0x88, 0x11, 0xcc, 0x21, - 0x11, 0xe0, 0x0c, 0x23, 0x91, 0x0a, 0x9a, 0x91, 0x25, 0xbc, 0x34, 0xaf, 0x13, 0x11, 0xbb, 0x09, - 0x31, 0xc1, 0x18, 0x99, 0x19, 0x1a, 0x57, 0x9b, 0x80, 0x49, 0x98, 0xd0, 0x1e, 0x13, 0x81, 0x11, - 0x9e, 0x10, 0x10, 0xa2, 0x2d, 0x83, 0x9a, 0x15, 0xf9, 0x3c, 0x84, 0xa9, 0x30, 0xb9, 0x38, 0x33, - 0x89, 0xa0, 0x1c, 0x83, 0xc8, 0x38, 0x09, 0x15, 0xb0, 0x2d, 0xa9, 0x08, 0x77, 0xa8, 0x90, 0x0a, - 0x42, 0xb1, 0x39, 0x9a, 0xa4, 0x78, 0x82, 0xcc, 0x38, 0xa1, 0x28, 0x01, 0x09, 0x9c, 0x07, 0x8d, - 0x99, 0x22, 0x80, 0x0a, 0x92, 0x8b, 0x37, 0xac, 0x18, 0x81, 0x90, 0x62, 0xfa, 0x10, 0x80, 0x89, - 0x00, 0x9a, 0x12, 0x31, 0xa6, 0x1d, 0xc0, 0x50, 0xc1, 0x1a, 0x92, 0x88, 0x00, 0x00, 0x0a, 0xc1, - 0x30, 0x84, 0x0d, 0x10, 0xd0, 0x38, 0x20, 0xd1, 0x8a, 0x42, 0x02, 0xf8, 0x1c, 0x05, 0x20, 0xba, - 0x90, 0x3b, 0x17, 0x1a, 0xb1, 0xba, 0x69, 0x02, 0xa9, 0x12, 0x2c, 0x84, 0xbb, 0x20, 0x28, 0x13, - 0xad, 0x94, 0x4e, 0xb1, 0x38, 0xcc, 0x32, 0x00, 0x01, 0xa9, 0x90, 0x2e, 0x92, 0x0a, 0xb8, 0x66, - 0xa9, 0x90, 0x18, 0xa8, 0x12, 0x6a, 0xc3, 0x19, 0x9e, 0x22, 0x99, 0x81, 0x32, 0xce, 0x21, 0x98, - 0x00, 0x32, 0xba, 0x88, 0x88, 0x80, 0x3a, 0x02, 0x77, 0xc0, 0x8a, 0x30, 0xe0, 0x39, 0x92, 0x10, - 0xcc, 0x20, 0x04, 0x00, 0x8b, 0x86, 0xc9, 0x3c, 0xa3, 0x06, 0x8c, 0x82, 0xaa, 0x40, 0x31, 0xc1, - 0x8c, 0x92, 0x28, 0x19, 0xa3, 0x32, 0xcf, 0x40, 0xa2, 0x1d, 0x81, 0x08, 0x18, 0xd3, 0x3b, 0x01, - 0x8e, 0x04, 0x00, 0xab, 0x11, 0x02, 0x0d, 0x93, 0x08, 0xad, 0x33, 0xab, 0x51, 0xa8, 0x82, 0x0e, - 0x82, 0x20, 0x99, 0xa4, 0x49, 0x8f, 0x35, 0xb9, 0x0b, 0x13, 0x00, 0x0d, 0xa3, 0x5b, 0x04, 0xba, - 0x40, 0xe9, 0x51, 0x90, 0x81, 0xba, 0x32, 0x99, 0x90, 0x18, 0x28, 0x04, 0xbb, 0x19, 0xbb, 0x04, - 0x04, 0xdf, 0x83, 0x40, 0x93, 0x8b, 0x8c, 0x03, 0x08, 0x15, 0xac, 0xa8, 0x50, 0xc2, 0x1c, 0x02, - 0xd0, 0x53, 0x9d, 0x11, 0x18, 0xaa, 0x12, 0x9b, 0x38, 0x16, 0xc9, 0x39, 0x9a, 0x42, 0xb0, 0x19, - 0x98, 0x00, 0x10, 0xbb, 0x67, 0xda, 0x00, 0x08, 0x3a, 0xa6, 0x2a, 0x93, 0x8f, 0x04, 0x19, 0xa9, - 0x61, 0xa9, 0x03, 0x19, 0x99, 0x90, 0x34, 0x98, 0x2a, 0xe8, 0x49, 0xe2, 0x28, 0x88, 0x22, 0xa9, - 0x09, 0x12, 0xcf, 0x04, 0x39, 0xd1, 0x29, 0xa8, 0x23, 0x98, 0x89, 0xb1, 0x9c, 0x09, 0x12, 0x1a, - 0xa6, 0x5a, 0xe0, 0x19, 0x21, 0xb1, 0x09, 0x19, 0xfb, 0x73, 0x90, 0x89, 0xa1, 0x3a, 0x03, 0xc0, - 0x38, 0xc8, 0x42, 0xdb, 0x11, 0x2a, 0x94, 0x31, 0xac, 0x52, 0xa1, 0x3b, 0xf3, 0x1a, 0x84, 0x9c, - 0x23, 0xaa, 0x12, 0xa4, 0x0f, 0x82, 0x20, 0x00, 0xa4, 0x8e, 0x82, 0x00, 0x9e, 0x13, 0x8b, 0x14, - 0x18, 0xcb, 0x09, 0xa0, 0x22, 0x09, 0xaf, 0x14, 0x08, 0x22, 0xe0, 0x8a, 0x93, 0x1f, 0x92, 0x21, - 0xa9, 0x3a, 0x84, 0xb9, 0x59, 0xc2, 0x4a, 0xc2, 0x29, 0x15, 0xbc, 0x38, 0x83, 0xb9, 0x4b, 0x86, - 0x8a, 0x03, 0x0c, 0x91, 0x00, 0x72, 0x83, 0xbf, 0x01, 0x09, 0x11, 0x02, 0x00, 0x88, 0x09, 0xe3, - 0x3e, 0x95, 0x0b, 0x00, 0xa1, 0x38, 0xa2, 0x09, 0x8e, 0x94, 0x39, 0xb0, 0xca, 0x70, 0xa1, 0x88, - 0x38, 0xc9, 0x81, 0x1c, 0x81, 0x21, 0xac, 0x12, 0x99, 0x9f, 0x22, 0x10, 0x39, 0x94, 0x8d, 0x08, - 0xb1, 0x8c, 0x43, 0xa8, 0x28, 0x07, 0x1c, 0xb2, 0x0a, 0x90, 0x6b, 0x13, 0xf9, 0x49, 0x81, 0x10, - 0xa0, 0x38, 0xb2, 0x9f, 0x34, 0x98, 0xaa, 0x61, 0x90, 0xca, 0x60, 0x80, 0x08, 0x11, 0x8a, 0x09, - 0xa0, 0x71, 0xb0, 0x2a, 0x33, 0xf8, 0x1a, 0x32, 0xf0, 0x2b, 0x03, 0xbc, 0x52, 0xa0, 0x09, 0x21, - 0xe8, 0x2a, 0xa3, 0x20, 0xab, 0x95, 0x1b, 0xb0, 0x30, 0x17, 0xb8, 0x40, 0xb2, 0xaf, 0x00, 0x33, - 0x9d, 0x14, 0x9a, 0xa9, 0x25, 0x89, 0x82, 0xac, 0x28, 0x87, 0x8d, 0x22, 0x98, 0x8a, 0x12, 0xc9, - 0x08, 0x21, 0x81, 0x2b, 0xeb, 0x34, 0x09, 0xb9, 0x39, 0x95, 0x1d, 0x05, 0x99, 0x9b, 0x26, 0x9a, - 0x90, 0x28, 0x30, 0xb4, 0x0b, 0x72, 0xe0, 0x28, 0x90, 0x00, 0x89, 0x90, 0x43, 0xab, 0xb3, 0x59, - 0x80, 0xc9, 0x60, 0x81, 0x09, 0xa3, 0xb8, 0x9f, 0x21, 0x22, 0xba, 0x67, 0xbb, 0x11, 0x08, 0x21, - 0xca, 0x19, 0xc0, 0x29, 0x27, 0x89, 0xba, 0x21, 0xba, 0x20, 0x80, 0x34, 0x8a, 0x06, 0xdf, 0x10, - 0x08, 0x24, 0x9a, 0x00, 0x01, 0xcb, 0x11, 0x29, 0xc0, 0x10, 0x13, 0xcc, 0x50, 0xa1, 0x9a, 0x22, - 0x1c, 0x14, 0xbb, 0x40, 0xd8, 0x38, 0xb8, 0xa9, 0x53, 0x88, 0x05, 0x99, 0xaf, 0x21, 0x21, 0x90, - 0x88, 0xad, 0x31, 0x24, 0xfb, 0x30, 0x90, 0xbb, 0x51, 0x10, 0x94, 0x0b, 0x12, 0xfb, 0x69, 0x91, - 0x00, 0x99, 0x19, 0x82, 0x8c, 0x31, 0xb1, 0x9a, 0x12, 0x35, 0xf8, 0x2d, 0x84, 0x9a, 0x28, 0x94, - 0x0c, 0x80, 0x20, 0xd2, 0x0c, 0x33, 0xb8, 0x4a, 0x93, 0x0a, 0x9b, 0x27, 0xbc, 0x12, 0x49, 0x95, - 0x09, 0xaa, 0x11, 0x31, 0xeb, 0x43, 0xd9, 0x28, 0xa8, 0x01, 0x1a, 0x06, 0x9b, 0xb1, 0x08, 0x71, - 0xa1, 0x9c, 0x82, 0x1a, 0x39, 0xe1, 0x18, 0x12, 0xaa, 0x15, 0xae, 0x11, 0x14, 0xa8, 0x39, 0xd0, - 0xa0, 0x6a, 0x90, 0x80, 0x8b, 0x34, 0xba, 0x10, 0x35, 0xdc, 0x22, 0x8a, 0x01, 0x22, 0xba, 0xa9, - 0x19, 0xc4, 0x73, 0xba, 0x34, 0xb8, 0x19, 0xbc, 0x16, 0x1a, 0x01, 0xb0, 0x0f, 0x14, 0x9a, 0x18, - 0xb2, 0x4c, 0x93, 0x1b, 0x83, 0x8e, 0x13, 0xc8, 0x1c, 0x12, 0xb2, 0x5c, 0x90, 0x92, 0x1d, 0x92, - 0x41, 0x9a, 0xb9, 0x53, 0xb8, 0x4c, 0x94, 0x19, 0x29, 0xe2, 0x2b, 0x14, 0x81, 0xbb, 0x09, 0x23, - 0x4b, 0x97, 0xac, 0x30, 0x01, 0x9a, 0x09, 0xc1, 0x79, 0xa8, 0x82, 0x2a, 0x88, 0x85, 0xaa, 0xbd, - 0x48, 0x05, 0x09, 0xb8, 0x20, 0x88, 0x00, 0x07, 0x9f, 0x12, 0x20, 0xb8, 0xab, 0x32, 0x10, 0x00, - 0x03, 0xdd, 0x70, 0x90, 0x91, 0x99, 0x99, 0x54, 0xa9, 0x8a, 0x24, 0x89, 0x13, 0xca, 0x0a, 0x51, - 0x83, 0xdc, 0x10, 0x88, 0x14, 0x00, 0xa9, 0x2b, 0x97, 0x39, 0xeb, 0x00, 0x43, 0x88, 0xb9, 0x8b, - 0x82, 0x61, 0x80, 0x8b, 0x85, 0x19, 0x89, 0xca, 0x80, 0x55, 0xb9, 0x3a, 0xd2, 0x1c, 0x84, 0x2a, - 0xc0, 0x10, 0x01, 0x9c, 0x34, 0xa9, 0x4a, 0xb3, 0x1d, 0x92, 0x08, 0x32, 0xb0, 0xaa, 0x3c, 0x27, - 0x9a, 0xa3, 0x8e, 0x98, 0x25, 0x09, 0xd2, 0x0c, 0x14, 0x98, 0x1a, 0xa0, 0x1a, 0x13, 0xcb, 0x16, - 0x1e, 0x03, 0xa8, 0x2c, 0xa0, 0x42, 0x98, 0xb3, 0x1f, 0xa3, 0x38, 0xb8, 0xba, 0x31, 0x84, 0xab, - 0x3d, 0x07, 0x0d, 0x02, 0x88, 0x9b, 0x33, 0xa9, 0x92, 0x8d, 0x20, 0xf3, 0x3b, 0x04, 0x89, 0x00, - 0xa2, 0x9f, 0x82, 0x39, 0x84, 0x09, 0x8c, 0x25, 0x98, 0x98, 0x31, 0xbd, 0x40, 0x93, 0x9e, 0x43, - 0x80, 0x88, 0x88, 0x99, 0xa8, 0x7a, 0x94, 0x2b, 0xb8, 0x40, 0xa3, 0x08, 0x2b, 0xb6, 0x8c, 0x42, - 0xe0, 0x28, 0x91, 0x01, 0x0d, 0x83, 0x83, 0x9f, 0x00, 0x91, 0x8a, 0x28, 0x92, 0x0b, 0xb0, 0x45, - 0xfa, 0x29, 0x81, 0x80, 0x0c, 0x01, 0x88, 0x22, 0xdc, 0x12, 0x8c, 0x04, 0x40, 0xd9, 0x13, 0xaa, - 0x01, 0x33, 0xd0, 0x29, 0x21, 0xb8, 0x29, 0x17, 0xcc, 0x40, 0xa0, 0x88, 0x4a, 0x95, 0x10, 0x98, - 0xaa, 0x12, 0xac, 0x71, 0x01, 0xba, 0x31, 0x11, 0x9d, 0x98, 0x27, 0xac, 0x21, 0x90, 0x89, 0x32, - 0x9a, 0xa2, 0x1e, 0x02, 0x02, 0x9f, 0x82, 0x08, 0x8f, 0x03, 0x00, 0x10, 0xe0, 0x1c, 0x93, 0x1a, - 0x14, 0xca, 0x1a, 0xb2, 0x78, 0x81, 0x08, 0xb8, 0x2d, 0x87, 0x9b, 0x22, 0x00, 0xb9, 0x48, 0x98, - 0x30, 0x83, 0x89, 0xef, 0x13, 0x38, 0x91, 0xca, 0x3b, 0xb4, 0x29, 0x05, 0xba, 0x25, 0x99, 0x90, - 0xbb, 0x3a, 0x37, 0xd8, 0x39, 0x81, 0xa0, 0x89, 0x20, 0xca, 0x24, 0x01, 0xcb, 0x42, 0x9a, 0x94, - 0x8c, 0x80, 0x8a, 0x32, 0x65, 0xe8, 0x89, 0x4a, 0x95, 0x8d, 0x12, 0x18, 0x88, 0x09, 0xd1, 0x19, - 0x14, 0x80, 0xca, 0x2a, 0x14, 0x89, 0x9b, 0x15, 0x9b, 0x41, 0x95, 0x8d, 0x11, 0xb1, 0x4a, 0x90, - 0x80, 0x33, 0xcd, 0x10, 0x03, 0x09, 0x11, 0x8e, 0xc0, 0x6a, 0x92, 0x09, 0x02, 0xbb, 0x60, 0x83, - 0x8c, 0x02, 0xdb, 0x51, 0xa9, 0x21, 0x00, 0xa1, 0x19, 0x80, 0xfc, 0x41, 0xa1, 0x1c, 0x81, 0x81, - 0x80, 0x0c, 0x09, 0x85, 0xaa, 0x68, 0xd1, 0xab, 0x73, 0xa1, 0x8a, 0x12, 0x00, 0xda, 0x11, 0x9a, - 0x84, 0x00, 0x31, 0xe0, 0x8c, 0x25, 0xb8, 0x8b, 0x35, 0xd0, 0x19, 0x01, 0x91, 0xa9, 0x30, 0x90, - 0x8a, 0x20, 0x45, 0xf2, 0x1c, 0x03, 0xb8, 0x18, 0x41, 0xe8, 0x39, 0xa1, 0x2b, 0x81, 0x00, 0x43, - 0xc8, 0x19, 0x81, 0xdb, 0x62, 0xc0, 0x18, 0x11, 0xb8, 0x1a, 0x10, 0x25, 0xac, 0x11, 0x90, 0x9f, - 0x14, 0x89, 0x88, 0xa8, 0x62, 0xc8, 0x3b, 0xb3, 0x2d, 0x94, 0x28, 0x99, 0x08, 0x24, 0xf9, 0x19, - 0x11, 0x90, 0x58, 0xaa, 0x81, 0x1b, 0x31, 0xd2, 0x59, 0x81, 0x10, 0xfb, 0x3b, 0x12, 0x9a, 0x06, - 0xbb, 0x01, 0x43, 0xaa, 0x88, 0x8b, 0x07, 0x99, 0x29, 0xd3, 0x9c, 0x32, 0x13, 0xb9, 0x0b, 0x13, - 0x3a, 0x55, 0xf9, 0x9a, 0x12, 0x99, 0xa8, 0x39, 0x47, 0xa1, 0xb8, 0x2b, 0x93, 0xcb, 0x27, 0xac, - 0x21, 0x23, 0xb9, 0xac, 0x81, 0x73, 0xb8, 0x31, 0x08, 0xeb, 0x18, 0x22, 0x11, 0x19, 0x05, 0xdb, - 0x30, 0x09, 0x05, 0x00, 0x9b, 0x89, 0x08, 0x73, 0x82, 0xcc, 0x12, 0x0b, 0x90, 0x90, 0x25, 0xaf, - 0x14, 0xaa, 0x80, 0x39, 0x98, 0x27, 0xbb, 0x43, 0xbc, 0x08, 0x03, 0x9b, 0x02, 0x3b, 0xa6, 0x09, - 0x10, 0x24, 0xcd, 0x19, 0x13, 0xba, 0x0a, 0x36, 0xdb, 0x38, 0xb8, 0x8a, 0x70, 0x95, 0x8b, 0x02, - 0x9b, 0x30, 0x23, 0xc0, 0x01, 0x1a, 0xf3, 0x1c, 0x5a, 0x93, 0x99, 0x0c, 0x35, 0x91, 0xab, 0x15, - 0xc9, 0x18, 0x11, 0x80, 0x99, 0x50, 0xc2, 0x1b, 0x40, 0xc3, 0x2a, 0xb1, 0x5d, 0xb2, 0x8c, 0x41, - 0xc8, 0x1a, 0x04, 0xaa, 0x4a, 0x84, 0x88, 0x1b, 0x88, 0x00, 0xa2, 0x0c, 0x09, 0x17, 0xad, 0x12, - 0x88, 0x30, 0xd4, 0x0a, 0x11, 0xb0, 0x0c, 0x82, 0x9a, 0x72, 0x80, 0xa3, 0x19, 0x19, 0x96, 0x9c, - 0x39, 0x92, 0x51, 0x34, 0xe0, 0x9d, 0x32, 0xb1, 0x29, 0x88, 0x32, 0x13, 0xbd, 0x42, 0xd9, 0x38, - 0x14, 0xb9, 0x9f, 0x11, 0x99, 0x28, 0x02, 0x02, 0xaf, 0x01, 0x20, 0xbb, 0x31, 0x07, 0xbd, 0x29, - 0x13, 0xbb, 0x21, 0xb8, 0x2b, 0x05, 0x59, 0xa6, 0x8e, 0x22, 0xa8, 0xaa, 0x31, 0x93, 0x4a, 0x92, - 0x8a, 0x88, 0x32, 0x61, 0xb0, 0xab, 0x39, 0x97, 0x8f, 0x32, 0xa9, 0x10, 0x23, 0xcc, 0x38, 0xa2, - 0x12, 0x8e, 0x88, 0x34, 0xb0, 0x1e, 0x80, 0x02, 0x49, 0x93, 0xce, 0x68, 0x91, 0x08, 0xba, 0x28, - 0x13, 0x88, 0x1b, 0x17, 0xe9, 0x39, 0x91, 0x2b, 0x84, 0x20, 0xcc, 0x88, 0x08, 0x42, 0xb1, 0x0c, - 0x98, 0x10, 0x2a, 0x83, 0xca, 0x0c, 0x26, 0x80, 0xca, 0x38, 0x83, 0x9b, 0xad, 0xb3, 0x7b, 0x92, - 0x88, 0x73, 0xb0, 0x08, 0x99, 0xc0, 0x4a, 0x16, 0xb9, 0x09, 0x21, 0xb0, 0x43, 0xa1, 0x9e, 0x33, - 0x99, 0x22, 0xbf, 0x02, 0x22, 0xba, 0x01, 0x2b, 0xc2, 0x27, 0x8a, 0xda, 0x38, 0x25, 0x19, 0xba, - 0x22, 0xaa, 0x13, 0x9c, 0xd1, 0x73, 0x91, 0xbb, 0x81, 0x21, 0x61, 0xfa, 0x28, 0x80, 0x32, 0xca, - 0x39, 0xf1, 0x39, 0x81, 0x98, 0x8b, 0x14, 0x10, 0x90, 0xf8, 0x4a, 0xb2, 0x39, 0xd4, 0x2c, 0x04, - 0x98, 0x09, 0xc9, 0x30, 0x81, 0xb8, 0x38, 0x52, 0xd8, 0x19, 0xa0, 0x3a, 0x00, 0x37, 0xac, 0xa8, - 0x10, 0x12, 0xa9, 0x9b, 0x37, 0x00, 0xd8, 0x20, 0xc9, 0x00, 0x71, 0xa1, 0x8e, 0x30, 0x83, 0xad, - 0x32, 0xc0, 0x18, 0x12, 0xcb, 0x31, 0x81, 0x18, 0x80, 0xec, 0x51, 0x98, 0x1a, 0x11, 0x11, 0x8b, - 0x87, 0xad, 0x21, 0x12, 0x98, 0x80, 0x9e, 0x12, 0x0a, 0x82, 0x32, 0xaf, 0x30, 0x84, 0xbd, 0x38, - 0x83, 0x0b, 0x05, 0x9c, 0x21, 0x11, 0xa2, 0x2a, 0xfc, 0x50, 0x98, 0x90, 0x28, 0xa0, 0x19, 0xb0, - 0x18, 0xa0, 0x03, 0x3e, 0x96, 0x0a, 0xb0, 0x6b, 0x82, 0x92, 0x1c, 0x00, 0xc0, 0x2a, 0x87, 0x98, - 0x50, 0xd0, 0x88, 0x11, 0x10, 0xc8, 0x89, 0x8b, 0x16, 0x08, 0x13, 0xac, 0x82, 0x9d, 0x11, 0x00, - 0x4a, 0x05, 0xa0, 0xad, 0x71, 0x90, 0xa9, 0x29, 0x80, 0x03, 0x89, 0xb8, 0x4a, 0xc0, 0x74, 0xc8, - 0x1a, 0x88, 0x93, 0x0d, 0x23, 0x10, 0x89, 0x83, 0xdc, 0x4a, 0xd3, 0x38, 0xc0, 0x18, 0x12, 0xa8, - 0x2c, 0x24, 0xac, 0x13, 0x99, 0xea, 0x30, 0x23, 0xb1, 0x1c, 0xb8, 0x30, 0x98, 0x25, 0x81, 0xcf, - 0x28, 0x06, 0x9a, 0x21, 0x98, 0x09, 0xd8, 0x69, 0x83, 0x8a, 0x82, 0xab, 0x89, 0x31, 0x07, 0x0b, - 0x99, 0x33, 0xc8, 0x09, 0xfb, 0x50, 0x83, 0x88, 0xd9, 0x2a, 0x11, 0x88, 0x21, 0x9e, 0x41, 0xc1, - 0x01, 0x9e, 0x32, 0x92, 0x0c, 0x81, 0xf0, 0x30, 0x98, 0x80, 0xa0, 0x58, 0x82, 0xdb, 0x39, 0x02, - 0x0a, 0x24, 0xdb, 0x81, 0x18, 0x93, 0xba, 0x73, 0xa9, 0xa2, 0x2b, 0xda, 0x43, 0x8b, 0x21, 0xc1, - 0x0f, 0x11, 0x81, 0x1c, 0x81, 0x21, 0xd2, 0x8d, 0x22, 0xe8, 0x58, 0xa3, 0x99, 0xa8, 0x31, 0x88, - 0x98, 0x52, 0x11, 0xfc, 0x40, 0xa1, 0x28, 0xa0, 0x09, 0x99, 0x43, 0x88, 0x49, 0x94, 0x8a, 0x08, - 0x91, 0x14, 0x8b, 0xca, 0x23, 0xa3, 0x3e, 0xe1, 0x22, 0x38, 0xd1, 0xcb, 0x89, 0x42, 0x30, 0xa3, - 0xcc, 0x61, 0xbb, 0x28, 0x05, 0x8c, 0x43, 0x98, 0xa2, 0x8c, 0x98, 0x21, 0xcb, 0x21, 0x9c, 0xa8, - 0x72, 0xb3, 0xdb, 0x73, 0xb8, 0x88, 0x08, 0x92, 0x5b, 0xc3, 0x29, 0xb1, 0x49, 0xa8, 0x84, 0x8c, - 0x38, 0x03, 0x88, 0xfb, 0x10, 0x32, 0x9d, 0x21, 0xd1, 0x49, 0x81, 0xa8, 0xa9, 0x20, 0x73, 0xd3, - 0x89, 0x20, 0x98, 0x80, 0xab, 0x65, 0x90, 0x81, 0xa9, 0x2b, 0x15, 0x88, 0x22, 0xdd, 0x32, 0x19, - 0xa1, 0x9f, 0x12, 0x48, 0xb0, 0x20, 0xaa, 0x19, 0x11, 0xd8, 0x30, 0x1b, 0xa5, 0x0c, 0x10, 0xc9, - 0x43, 0x9d, 0x43, 0xb9, 0x60, 0xc8, 0x09, 0x80, 0x00, 0x08, 0xa4, 0x1a, 0x91, 0x1c, 0x94, 0x9e, - 0x32, 0xa9, 0x82, 0x9c, 0x42, 0x10, 0xfa, 0x20, 0xb0, 0x2a, 0x88, 0xd1, 0x69, 0x91, 0x08, 0x12, - 0xad, 0x42, 0xda, 0x28, 0x13, 0x91, 0x19, 0x88, 0x12, 0x9a, 0x44, 0xa0, 0x8c, 0x07, 0x8b, 0x91, - 0x39, 0xa1, 0x23, 0x0f, 0x94, 0x0b, 0x09, 0x82, 0x00, 0xb9, 0x8f, 0x86, 0x0b, 0xa3, 0x98, 0x0c, - 0x06, 0x08, 0x08, 0x04, 0x9c, 0x09, 0xe1, 0x68, 0x98, 0x01, 0x00, 0x0a, 0x08, 0x98, 0x32, 0xa9, - 0x71, 0x9a, 0xa4, 0x3d, 0xd9, 0x44, 0x09, 0xc8, 0x48, 0xb0, 0x18, 0x19, 0x04, 0x9a, 0x21, 0x8d, - 0xa0, 0x64, 0xb0, 0x19, 0xb2, 0x1b, 0xd8, 0x19, 0x03, 0x14, 0x0f, 0x13, 0x8b, 0xc1, 0x58, 0xb0, - 0xa8, 0x39, 0x84, 0x00, 0xbd, 0x04, 0x89, 0x18, 0x18, 0x94, 0xdb, 0x4b, 0x92, 0x31, 0x9a, 0xcc, - 0x43, 0xbc, 0x25, 0x88, 0x09, 0xa8, 0x11, 0x59, 0x83, 0x02, 0xaf, 0x98, 0x3a, 0x20, 0x07, 0x0b, - 0x91, 0x88, 0x20, 0x92, 0x2d, 0x12, 0xb2, 0xaf, 0x84, 0x0a, 0x51, 0x93, 0x29, 0x80, 0x81, 0xfd, - 0x21, 0x99, 0x42, 0xa9, 0x88, 0x00, 0x09, 0x17, 0xba, 0xa1, 0x70, 0xb9, 0x31, 0x90, 0xc0, 0x49, - 0xa3, 0x08, 0x2d, 0xb5, 0x0b, 0x98, 0x20, 0x80, 0x11, 0x73, 0xfa, 0x19, 0x30, 0xc0, 0x99, 0x38, - 0xb0, 0x31, 0xa3, 0x10, 0x8f, 0x03, 0xd1, 0x8f, 0x24, 0xb0, 0x00, 0x9b, 0x23, 0x99, 0x12, 0x04, - 0x9a, 0xaf, 0x33, 0xbc, 0x26, 0x9a, 0xa3, 0x38, 0xaa, 0x22, 0x0a, 0x06, 0x1c, 0x93, 0x0f, 0x02, - 0x99, 0x38, 0x82, 0x9a, 0x42, 0xd3, 0x2a, 0xa8, 0x94, 0x60, 0xa8, 0x91, 0x91, 0x0f, 0x02, 0x81, - 0x18, 0xba, 0xab, 0x26, 0x08, 0x09, 0xfa, 0x7b, 0xa2, 0x09, 0x88, 0x80, 0x01, 0x10, 0x19, 0xa3, - 0x9e, 0x09, 0x8f, 0x07, 0x38, 0xa8, 0xb8, 0x8d, 0x02, 0x18, 0x05, 0xab, 0x12, 0x18, 0x88, 0xa8, - 0x40, 0x00, 0xf3, 0x3b, 0x09, 0xd0, 0x73, 0xa1, 0x9b, 0x00, 0x29, 0x94, 0x38, 0x0a, 0x83, 0xcf, - 0x04, 0x0c, 0x91, 0x01, 0x98, 0x0b, 0x05, 0x30, 0x92, 0x8e, 0x98, 0x03, 0xbb, 0x48, 0x53, 0xb3, - 0xc8, 0xae, 0x39, 0x84, 0x20, 0x94, 0xbe, 0x28, 0x05, 0x88, 0x98, 0x12, 0xc9, 0x28, 0xd1, 0x38, - 0x92, 0x3b, 0x94, 0x8e, 0x20, 0x06, 0xab, 0x01, 0x81, 0x28, 0xf8, 0x30, 0x88, 0x98, 0x2c, 0x94, - 0x0a, 0x40, 0xa4, 0xaf, 0x21, 0x80, 0x22, 0xa1, 0x1b, 0xb2, 0xcb, 0x7b, 0xa3, 0x99, 0x51, 0xa2, - 0xa9, 0x2a, 0x04, 0x92, 0x9b, 0xd4, 0x1e, 0x93, 0x09, 0x11, 0xa8, 0x58, 0x80, 0x28, 0xaf, 0x95, - 0x0b, 0x91, 0x21, 0x8b, 0x84, 0x89, 0x1b, 0xb9, 0x42, 0xa8, 0x73, 0xf0, 0x00, 0x89, 0xa2, 0x5b, - 0xb3, 0x3a, 0xc2, 0x2b, 0x00, 0x83, 0x37, 0x0d, 0xb0, 0x48, 0x89, 0x12, 0x18, 0x29, 0x84, 0x8d, - 0xd8, 0x19, 0x02, 0x4b, 0x87, 0x8a, 0x01, 0xaa, 0x48, 0x83, 0x0b, 0xfa, 0x28, 0x20, 0x32, 0xf3, - 0x2d, 0x93, 0x0a, 0x82, 0x88, 0x8a, 0x21, 0x19, 0xc3, 0x08, 0x79, 0x97, 0x8b, 0x92, 0x0a, 0xa0, - 0x40, 0xb0, 0x9b, 0x67, 0xb8, 0x80, 0x89, 0x00, 0x21, 0xb2, 0x2e, 0x03, 0x0c, 0x11, 0xea, 0x41, - 0x00, 0xc8, 0x2b, 0x01, 0x90, 0x49, 0xd0, 0x28, 0xb2, 0x3a, 0xd0, 0x1c, 0x43, 0x01, 0xcc, 0x19, - 0x52, 0xc9, 0x10, 0x8a, 0x22, 0x91, 0x4b, 0xe8, 0x2b, 0x24, 0x92, 0xbe, 0x40, 0x92, 0x0a, 0x10, - 0x19, 0xb9, 0x63, 0x8a, 0x93, 0x9b, 0x68, 0x90, 0x80, 0x41, 0x10, 0x09, 0x0b, 0xf0, 0x0a, 0x70, - 0xb9, 0x32, 0x1c, 0x83, 0xb2, 0x2b, 0x0c, 0xa4, 0x89, 0xcb, 0x31, 0x73, 0xc1, 0x4a, 0x00, 0x09, - 0x12, 0x03, 0xdb, 0x8f, 0x13, 0x30, 0xa2, 0x3b, 0xc6, 0x0c, 0x01, 0x10, 0x98, 0x8c, 0x15, 0x8a, - 0xaa, 0x00, 0x23, 0x8f, 0x12, 0xc0, 0x1a, 0x02, 0x92, 0x9b, 0x13, 0xd1, 0x1a, 0xaa, 0x97, 0x4c, - 0x04, 0x89, 0xcb, 0x32, 0xa9, 0x89, 0x35, 0xe9, 0x18, 0x11, 0x9b, 0x94, 0x1e, 0x81, 0x1a, 0x13, - 0xac, 0x88, 0xa0, 0x72, 0x99, 0x02, 0x13, 0x99, 0xce, 0x18, 0x33, 0xc8, 0x09, 0x04, 0x8d, 0x33, - 0x83, 0x0d, 0x98, 0x00, 0xcc, 0x43, 0xc8, 0x39, 0x92, 0x81, 0x01, 0xbb, 0x7b, 0xa7, 0x0b, 0x18, - 0x84, 0x8b, 0x12, 0xb0, 0x08, 0x09, 0x33, 0x8c, 0xc0, 0x61, 0x90, 0xc3, 0x3b, 0x88, 0xb4, 0x70, - 0xa1, 0x09, 0xa9, 0xa8, 0x1a, 0x94, 0x79, 0xb6, 0x09, 0x9a, 0x13, 0x39, 0x84, 0xcd, 0x28, 0xd0, - 0x29, 0x23, 0xf9, 0x18, 0x21, 0xd8, 0x19, 0x02, 0xaa, 0x10, 0x01, 0x1c, 0x95, 0x1b, 0xa3, 0x9e, - 0x30, 0x96, 0x0b, 0x01, 0xa2, 0x8a, 0xaa, 0x83, 0x3c, 0x23, 0xb1, 0x9c, 0x10, 0x73, 0xf3, 0x0e, - 0x02, 0x09, 0x82, 0x11, 0x8c, 0x92, 0x28, 0xc9, 0x43, 0x8a, 0xb0, 0x29, 0x1f, 0x06, 0x8b, 0x88, - 0xa2, 0x2b, 0x17, 0xca, 0x21, 0xa9, 0x32, 0xc0, 0x9b, 0x48, 0xa2, 0x8d, 0x43, 0xb0, 0x0c, 0x23, - 0x89, 0x8c, 0x42, 0x82, 0x9d, 0x80, 0x43, 0x09, 0x9a, 0x94, 0x9f, 0x11, 0x33, 0xb8, 0x09, 0xb9, - 0x9a, 0x54, 0xb1, 0x3a, 0xb3, 0x28, 0xfb, 0x08, 0x14, 0xcc, 0x88, 0x51, 0xa8, 0x98, 0x59, 0xa2, - 0xa9, 0x40, 0xa1, 0x0d, 0x93, 0x3c, 0xe0, 0x50, 0x90, 0xab, 0x22, 0xc0, 0x31, 0xd0, 0x29, 0x91, - 0x18, 0x88, 0x39, 0xb1, 0x61, 0xea, 0x29, 0x99, 0xa2, 0x1e, 0x16, 0xa9, 0x80, 0x99, 0x19, 0x04, - 0x1c, 0x82, 0x81, 0x28, 0xeb, 0x29, 0x80, 0x88, 0x64, 0x8a, 0xb1, 0x00, 0x38, 0xaa, 0x6a, 0x93, - 0x90, 0x1b, 0xdf, 0x30, 0x98, 0x02, 0xc2, 0x78, 0xc9, 0x18, 0x08, 0xa0, 0x29, 0x81, 0x10, 0x0b, - 0xb5, 0x11, 0xbc, 0x09, 0x43, 0xd9, 0x31, 0xcc, 0x21, 0x31, 0xc1, 0xbb, 0x13, 0x31, 0x90, 0xc4, - 0x1c, 0xe1, 0x39, 0x03, 0xaa, 0x21, 0x9d, 0x03, 0x9f, 0x05, 0xaa, 0x49, 0xd1, 0x28, 0x29, 0x92, - 0x1b, 0xc1, 0x19, 0xb0, 0x70, 0xc8, 0x88, 0x39, 0xd3, 0x28, 0x9b, 0x07, 0xaa, 0x3a, 0xa4, 0x80, - 0x1b, 0xa3, 0x0d, 0x98, 0x24, 0xd0, 0x0a, 0x28, 0xa1, 0x8d, 0x08, 0x03, 0xaf, 0x62, 0xa0, 0x8b, - 0x22, 0xb8, 0x39, 0xb1, 0x02, 0x8c, 0x85, 0x90, 0x19, 0xc9, 0x92, 0x4a, 0xcb, 0x21, 0x30, 0x91, - 0xad, 0x21, 0x61, 0xba, 0x29, 0xa1, 0x44, 0xba, 0x9b, 0xa9, 0x0b, 0x43, 0x93, 0xad, 0x81, 0x30, - 0xf0, 0x29, 0x10, 0x91, 0x9c, 0xb1, 0x5a, 0xa1, 0x29, 0xb0, 0x9b, 0x0b, 0x05, 0x9b, 0x18, 0x93, - 0xcb, 0x1c, 0xa3, 0x39, 0xb1, 0x20, 0xba, 0xbb, 0x30, 0xa1, 0x99, 0x11, 0xb9, 0x9a, 0x21, 0xa0, - 0x99, 0x1a, 0xb1, 0x00, 0x0b, 0x03, 0x0a, 0x99, 0x99, 0x0b, 0x91, 0x10, 0x01, 0xa9, 0x19, 0x99, - 0x99, 0x09, 0x90, 0x0a, 0x90, 0x99, 0x09, 0x79, 0x02, 0x01, 0x0f, 0x7d, 0x0b, 0x02, 0xcd, 0x06, - 0x47, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xdf, 0x08, 0x88, 0x08, - 0x08, 0x88, 0x80, 0x00, 0x08, 0x08, 0x80, 0x00, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x10, 0x22, - 0x11, 0x29, 0x77, 0x24, 0x98, 0xaa, 0xac, 0x40, 0x37, 0x03, 0x00, 0x90, 0xdc, 0x9b, 0x10, 0x08, - 0x51, 0x44, 0x12, 0x90, 0xba, 0x9a, 0xfa, 0xad, 0x9a, 0x9a, 0x20, 0x47, 0x43, 0x11, 0x80, 0xb8, - 0xac, 0xaa, 0xb9, 0xbf, 0x9b, 0x51, 0x34, 0x33, 0x36, 0x33, 0x22, 0x12, 0xb0, 0xbe, 0xab, 0x09, - 0x20, 0x02, 0xfb, 0xab, 0xa9, 0xbb, 0x51, 0x24, 0x01, 0x63, 0x33, 0xb8, 0xbe, 0xcd, 0x9b, 0x18, - 0x52, 0x33, 0x81, 0xcb, 0x89, 0x21, 0x11, 0x31, 0x24, 0x31, 0x53, 0x13, 0xca, 0xcb, 0xeb, 0xbb, - 0xac, 0x18, 0x32, 0x44, 0x34, 0x24, 0xa0, 0xce, 0x9b, 0x30, 0x44, 0x12, 0xa8, 0xcc, 0xba, 0x89, - 0x80, 0x98, 0x99, 0x88, 0x73, 0x37, 0x22, 0x80, 0x98, 0x08, 0x33, 0x13, 0x01, 0xeb, 0xab, 0x89, - 0xaa, 0x48, 0x47, 0x23, 0x81, 0xb9, 0xcd, 0xac, 0x99, 0x00, 0x22, 0x82, 0xba, 0x9c, 0x10, 0x44, - 0x44, 0x12, 0xa8, 0xaa, 0x0a, 0x00, 0xfa, 0xcd, 0x9a, 0x38, 0x37, 0x24, 0x80, 0xb9, 0xbb, 0xbb, - 0x8a, 0x08, 0x01, 0x88, 0x42, 0x81, 0x9a, 0x00, 0xea, 0x8a, 0x75, 0x44, 0x12, 0x00, 0x11, 0x21, - 0xa0, 0xde, 0xbc, 0xbb, 0x99, 0x08, 0x00, 0x32, 0x65, 0x34, 0x35, 0x22, 0x81, 0xa9, 0xab, 0x99, - 0xba, 0xbd, 0xac, 0x9b, 0x89, 0x00, 0x64, 0x34, 0x23, 0x32, 0x22, 0x81, 0xdb, 0xbc, 0xab, 0xbb, - 0xbd, 0xbd, 0xaa, 0x88, 0x11, 0x22, 0x23, 0x01, 0x10, 0x65, 0x44, 0x22, 0x81, 0xca, 0xbc, 0xab, - 0x9a, 0xdb, 0xbc, 0xac, 0x18, 0x22, 0x12, 0x00, 0x00, 0x20, 0x67, 0x43, 0x12, 0x98, 0x99, 0x98, - 0xa8, 0xfb, 0xbc, 0xaa, 0x89, 0x00, 0x11, 0x41, 0x46, 0x43, 0x34, 0x23, 0x02, 0x99, 0xab, 0xbb, - 0xeb, 0xcc, 0xab, 0x18, 0x64, 0x33, 0x12, 0x80, 0x89, 0x08, 0x31, 0x12, 0x90, 0xca, 0x9a, 0x00, - 0xd9, 0xef, 0xcc, 0xba, 0x09, 0x10, 0x33, 0x23, 0x43, 0x44, 0x44, 0x22, 0x80, 0xba, 0xbe, 0xbc, - 0xba, 0xaa, 0x9a, 0x08, 0x31, 0x34, 0x23, 0x23, 0x02, 0x88, 0x41, 0x45, 0x13, 0x80, 0x08, 0x11, - 0x82, 0xba, 0xac, 0x89, 0x98, 0xfd, 0xcc, 0xbb, 0x08, 0x63, 0x54, 0x34, 0x33, 0x12, 0x01, 0x98, - 0xba, 0xbf, 0xbc, 0xab, 0x9a, 0x89, 0x00, 0x43, 0x45, 0x43, 0x32, 0x22, 0x02, 0x98, 0xcc, 0xcc, - 0xbb, 0xcc, 0xbb, 0xbb, 0x99, 0x80, 0x08, 0x42, 0x54, 0x44, 0x33, 0x32, 0x01, 0xa8, 0xcc, 0xac, - 0xaa, 0x99, 0xaa, 0x9a, 0x99, 0x99, 0xdb, 0x8a, 0x54, 0x34, 0x33, 0x43, 0x32, 0x33, 0x22, 0x98, - 0x99, 0x88, 0xd9, 0xcd, 0xcc, 0xca, 0xaa, 0x8a, 0x31, 0x55, 0x43, 0x33, 0x22, 0x22, 0x00, 0x98, - 0xcb, 0xcb, 0xcb, 0xaa, 0x09, 0x21, 0x11, 0x10, 0x51, 0x45, 0x35, 0x24, 0x01, 0x90, 0xb9, 0xbb, - 0xcd, 0xbc, 0xbe, 0xcb, 0xab, 0x9a, 0x10, 0x33, 0x35, 0x35, 0x43, 0x23, 0x11, 0x80, 0xb9, 0xbd, - 0xbc, 0xab, 0xcb, 0xcb, 0xbb, 0xaa, 0x8a, 0x31, 0x46, 0x24, 0x22, 0x12, 0x00, 0x21, 0x33, 0x24, - 0x12, 0x90, 0x99, 0x08, 0x88, 0xea, 0xde, 0xac, 0x9a, 0x30, 0x55, 0x43, 0x22, 0x80, 0x88, 0x98, - 0xaa, 0xbc, 0xbd, 0xaa, 0x09, 0x21, 0x12, 0x01, 0x41, 0x65, 0x44, 0x33, 0x33, 0x03, 0xa9, 0xce, - 0xcc, 0xcb, 0xba, 0xaa, 0xaa, 0x99, 0x09, 0x40, 0x45, 0x34, 0x24, 0x12, 0x10, 0x80, 0x90, 0xb9, - 0xbb, 0xab, 0xba, 0xdc, 0xcb, 0xbb, 0xbc, 0xab, 0x89, 0x41, 0x44, 0x43, 0x32, 0x33, 0x36, 0x34, - 0x12, 0x98, 0xcb, 0xcb, 0xaa, 0x98, 0xa9, 0xbb, 0xba, 0x38, 0x77, 0x34, 0x23, 0x11, 0x88, 0x98, - 0x98, 0xcb, 0xdc, 0xcb, 0xaa, 0x9a, 0x08, 0x20, 0x32, 0x55, 0x53, 0x43, 0x23, 0x02, 0x98, 0xba, - 0xcc, 0xdc, 0xbc, 0xac, 0xab, 0x8a, 0x00, 0x20, 0x43, 0x43, 0x34, 0x43, 0x32, 0x12, 0x00, 0xa8, - 0xa9, 0xaa, 0x99, 0xda, 0xdd, 0xbc, 0xbc, 0xab, 0x99, 0x09, 0x10, 0x53, 0x54, 0x43, 0x23, 0x23, - 0x12, 0x01, 0xa8, 0xcb, 0xbc, 0xab, 0xbb, 0xcb, 0x0a, 0x52, 0x54, 0x33, 0x33, 0x11, 0x80, 0xa9, - 0xa9, 0xba, 0xcb, 0xaa, 0x9b, 0x99, 0xca, 0xaa, 0x09, 0x72, 0x55, 0x54, 0x33, 0x23, 0x81, 0xb9, - 0xdb, 0xcc, 0xcc, 0xcc, 0xba, 0x9a, 0x89, 0x08, 0x42, 0x34, 0x35, 0x32, 0x22, 0x11, 0x01, 0x98, - 0x98, 0xaa, 0xda, 0xcc, 0xbb, 0xbc, 0xac, 0xbb, 0xbc, 0xbb, 0x89, 0x72, 0x53, 0x33, 0x43, 0x23, - 0x23, 0x02, 0x98, 0xcb, 0xab, 0x9a, 0x89, 0xba, 0xbc, 0x0a, 0x53, 0x56, 0x43, 0x13, 0x02, 0x88, - 0x8a, 0x08, 0x21, 0x80, 0xfb, 0xcc, 0xab, 0x9b, 0x08, 0x31, 0x44, 0x34, 0x44, 0x32, 0x23, 0x12, - 0xa8, 0xec, 0xcd, 0xcc, 0xbb, 0xbb, 0xbb, 0x9a, 0x18, 0x55, 0x44, 0x32, 0x22, 0x11, 0x00, 0x88, - 0x99, 0xaa, 0xaa, 0xa9, 0xaa, 0xdd, 0xcd, 0xcb, 0xbb, 0xbb, 0x99, 0x20, 0x44, 0x34, 0x44, 0x33, - 0x24, 0x33, 0x23, 0x81, 0xa9, 0xbd, 0xcb, 0xbb, 0xba, 0xbb, 0x09, 0x41, 0x54, 0x23, 0x13, 0x01, - 0x00, 0x11, 0x33, 0x22, 0xb8, 0xcf, 0xbc, 0xab, 0x9a, 0x89, 0x89, 0x00, 0x21, 0x43, 0x33, 0x03, - 0xb9, 0xde, 0xdd, 0xcd, 0xcb, 0xcb, 0xaa, 0x9a, 0x09, 0x41, 0x44, 0x24, 0x23, 0x22, 0x01, 0x01, - 0x11, 0x01, 0x01, 0x88, 0xba, 0xce, 0xce, 0xbc, 0xbc, 0xbb, 0x9a, 0x10, 0x63, 0x43, 0x33, 0x34, - 0x34, 0x33, 0x23, 0x12, 0x90, 0xbc, 0xbd, 0xbb, 0xbb, 0xab, 0x8a, 0x31, 0x46, 0x32, 0x22, 0x12, - 0x22, 0x23, 0x13, 0x80, 0x9a, 0xbb, 0xbd, 0xcd, 0xdb, 0xbb, 0xbc, 0xaa, 0xa9, 0x18, 0x32, 0x24, - 0x11, 0x23, 0x13, 0xfa, 0xff, 0xbc, 0xbc, 0xbb, 0xbb, 0x88, 0x43, 0x45, 0x43, 0x23, 0x33, 0x22, - 0x12, 0x01, 0x01, 0x98, 0xca, 0xec, 0xcc, 0xbc, 0xcb, 0xaa, 0x89, 0x18, 0x21, 0x42, 0x53, 0x53, - 0x33, 0x34, 0x43, 0x22, 0x01, 0xa8, 0xca, 0xac, 0xac, 0xba, 0xaa, 0x9a, 0x09, 0x21, 0x43, 0x33, - 0x34, 0x34, 0x22, 0x11, 0x08, 0xa8, 0xcc, 0xcc, 0xcb, 0xbc, 0xbc, 0xaa, 0x08, 0x11, 0x12, 0x90, - 0x99, 0x30, 0x36, 0x24, 0xb8, 0xef, 0xcb, 0xbc, 0xab, 0xaa, 0x08, 0x51, 0x44, 0x34, 0x33, 0x32, - 0x12, 0x11, 0x22, 0x12, 0xa8, 0xfb, 0xdc, 0xbb, 0xac, 0xbb, 0x99, 0x10, 0x21, 0x32, 0x53, 0x63, - 0x43, 0x34, 0x34, 0x24, 0x22, 0x02, 0x98, 0xbc, 0xbd, 0xba, 0xab, 0xa9, 0x99, 0x08, 0x18, 0x32, - 0x36, 0x34, 0x23, 0x22, 0x02, 0xa8, 0xcd, 0xcc, 0xbb, 0xbd, 0xac, 0x9a, 0x19, 0x10, 0x81, 0x98, - 0x9a, 0x28, 0x66, 0x43, 0x12, 0xc9, 0xcd, 0xcc, 0xba, 0xbb, 0xa9, 0x08, 0x32, 0x37, 0x34, 0x34, - 0x12, 0x12, 0x21, 0x21, 0x81, 0xc9, 0xcd, 0xcc, 0xab, 0xbb, 0x99, 0x18, 0x10, 0x22, 0x32, 0x45, - 0x34, 0x35, 0x43, 0x34, 0x23, 0x23, 0x81, 0xb9, 0xcc, 0xac, 0xbb, 0xaa, 0xab, 0x9a, 0x99, 0x10, - 0x52, 0x44, 0x34, 0x23, 0x23, 0x81, 0xc9, 0xcc, 0xdb, 0xcb, 0xab, 0xab, 0x09, 0x18, 0x00, 0x88, - 0x99, 0x28, 0x55, 0x45, 0x43, 0x01, 0xba, 0xce, 0xcc, 0xbb, 0xaa, 0x8a, 0x20, 0x44, 0x34, 0x34, - 0x23, 0x22, 0x21, 0x01, 0x01, 0xa8, 0xeb, 0xbd, 0xbc, 0xbb, 0xab, 0x89, 0x11, 0x23, 0x12, 0x00, - 0x41, 0x56, 0x45, 0x34, 0x24, 0x23, 0x12, 0x98, 0xca, 0xcb, 0xbb, 0xba, 0xba, 0xbb, 0xbc, 0xab, - 0x08, 0x44, 0x44, 0x23, 0x33, 0x14, 0x02, 0xb9, 0xdc, 0xbc, 0xac, 0xab, 0x99, 0x88, 0x98, 0xa9, - 0xaa, 0x9b, 0x20, 0x56, 0x44, 0x22, 0x90, 0xeb, 0xbd, 0xbc, 0xab, 0x9a, 0x18, 0x42, 0x44, 0x43, - 0x23, 0x23, 0x12, 0x12, 0x12, 0x11, 0xb9, 0xcf, 0xbc, 0xcb, 0x9a, 0x89, 0x10, 0x21, 0x10, 0x08, - 0x20, 0x65, 0x54, 0x34, 0x44, 0x22, 0x22, 0x00, 0xa8, 0xca, 0xcb, 0xba, 0xba, 0xba, 0xbb, 0x9a, - 0x08, 0x43, 0x45, 0x33, 0x43, 0x22, 0x02, 0x90, 0xcc, 0xcc, 0xbb, 0xac, 0x99, 0x99, 0x99, 0xcb, - 0xbc, 0xcb, 0x8a, 0x42, 0x36, 0x34, 0x13, 0xa0, 0xdc, 0xbc, 0xcb, 0x9a, 0x89, 0x00, 0x21, 0x42, - 0x42, 0x33, 0x43, 0x33, 0x34, 0x33, 0x12, 0xda, 0xbd, 0xbd, 0xaa, 0x9a, 0x88, 0x01, 0x01, 0x88, - 0x00, 0x63, 0x64, 0x44, 0x43, 0x24, 0x32, 0x11, 0x00, 0xa9, 0xca, 0xbb, 0xac, 0xbb, 0xca, 0xca, - 0xaa, 0x88, 0x21, 0x35, 0x35, 0x32, 0x22, 0x01, 0xb8, 0xcc, 0xcc, 0xbb, 0xab, 0xa9, 0xca, 0xcb, - 0xac, 0xbb, 0x9b, 0x40, 0x45, 0x34, 0x33, 0x81, 0xc9, 0xbd, 0xad, 0xab, 0x99, 0x89, 0x88, 0x10, - 0x31, 0x35, 0x43, 0x33, 0x44, 0x34, 0x43, 0x01, 0x98, 0xcb, 0xac, 0x9b, 0x99, 0x89, 0xa9, 0xbb, - 0xbb, 0x0a, 0x75, 0x55, 0x53, 0x43, 0x33, 0x32, 0x11, 0x81, 0xa8, 0xdb, 0xdb, 0xba, 0xab, 0xab, - 0xaa, 0x9a, 0x18, 0x41, 0x44, 0x24, 0x22, 0x81, 0x98, 0xba, 0xcc, 0xbd, 0xbb, 0x9b, 0x9a, 0xcb, - 0xcd, 0xcb, 0xab, 0x0a, 0x31, 0x35, 0x34, 0x22, 0x81, 0xca, 0xcc, 0xbb, 0xac, 0x99, 0xaa, 0xba, - 0xab, 0x20, 0x46, 0x44, 0x34, 0x43, 0x43, 0x12, 0x01, 0xb9, 0xcc, 0xab, 0xaa, 0x99, 0xa8, 0xa9, - 0x9a, 0x28, 0x55, 0x45, 0x44, 0x34, 0x43, 0x33, 0x22, 0x01, 0x90, 0xba, 0xbe, 0xbc, 0xab, 0xab, - 0xaa, 0xaa, 0x99, 0x20, 0x45, 0x44, 0x33, 0x22, 0x02, 0x80, 0xb9, 0xdc, 0xbc, 0xbc, 0xbb, 0xcb, - 0xcb, 0xcb, 0xbb, 0x9a, 0x20, 0x45, 0x34, 0x23, 0x12, 0x90, 0xca, 0xbc, 0xac, 0xbb, 0xcb, 0xcb, - 0xbb, 0x89, 0x31, 0x55, 0x33, 0x35, 0x43, 0x33, 0x22, 0x80, 0xca, 0xcb, 0xba, 0xaa, 0xaa, 0xaa, - 0x9b, 0x08, 0x52, 0x54, 0x45, 0x44, 0x34, 0x33, 0x33, 0x12, 0x81, 0xa9, 0xeb, 0xbc, 0xbb, 0xac, - 0xa9, 0xab, 0xbb, 0x89, 0x31, 0x47, 0x43, 0x33, 0x11, 0x80, 0x98, 0xca, 0xbc, 0xcc, 0xbb, 0xcb, - 0xba, 0xdb, 0xcb, 0xab, 0x0a, 0x30, 0x45, 0x33, 0x24, 0x12, 0x80, 0xba, 0xbc, 0xbc, 0xac, 0xcb, - 0xbc, 0xab, 0x8a, 0x31, 0x55, 0x43, 0x34, 0x24, 0x23, 0x01, 0x90, 0xaa, 0xac, 0xaa, 0xba, 0xaa, - 0xab, 0x99, 0x21, 0x64, 0x44, 0x45, 0x43, 0x34, 0x23, 0x23, 0x11, 0x80, 0xa8, 0xbc, 0xcc, 0xba, - 0xba, 0xbc, 0xcc, 0xba, 0x89, 0x31, 0x44, 0x43, 0x22, 0x11, 0x12, 0x01, 0xb9, 0xdd, 0xcc, 0xbb, - 0xba, 0xbc, 0xcb, 0xcb, 0xaa, 0x08, 0x32, 0x35, 0x34, 0x33, 0x12, 0x81, 0xba, 0xbd, 0xbd, 0xcb, - 0xbc, 0xad, 0x9b, 0x89, 0x32, 0x54, 0x34, 0x34, 0x32, 0x22, 0x01, 0xa8, 0xca, 0xba, 0xab, 0x9a, - 0x9a, 0x88, 0x08, 0x41, 0x64, 0x44, 0x35, 0x34, 0x24, 0x23, 0x23, 0x11, 0x01, 0xa9, 0xbc, 0xbd, - 0xcb, 0xbb, 0xdb, 0xbb, 0xab, 0x09, 0x42, 0x44, 0x23, 0x33, 0x23, 0x12, 0x90, 0xea, 0xcc, 0xcc, - 0xbb, 0xbc, 0xcb, 0xbb, 0xaa, 0x88, 0x21, 0x43, 0x34, 0x43, 0x33, 0x13, 0x81, 0xcb, 0xbd, 0xcc, - 0xdb, 0xcb, 0xab, 0xaa, 0x20, 0x53, 0x35, 0x43, 0x33, 0x32, 0x23, 0x01, 0xa9, 0xbc, 0xbb, 0xbb, - 0xaa, 0x9a, 0x18, 0x52, 0x44, 0x53, 0x34, 0x35, 0x43, 0x43, 0x32, 0x33, 0x12, 0x01, 0xa8, 0xcc, - 0xbc, 0xcc, 0xba, 0xac, 0xaa, 0x8a, 0x10, 0x33, 0x43, 0x32, 0x43, 0x33, 0x43, 0x12, 0xca, 0xde, - 0xcc, 0xac, 0xbb, 0xba, 0xaa, 0xaa, 0x88, 0x10, 0x44, 0x43, 0x33, 0x32, 0x12, 0x01, 0xb9, 0xce, - 0xcd, 0xcc, 0xbb, 0xab, 0x89, 0x42, 0x35, 0x43, 0x32, 0x33, 0x33, 0x14, 0x01, 0x99, 0xab, 0xcb, - 0xaa, 0xaa, 0x99, 0x21, 0x64, 0x53, 0x43, 0x32, 0x43, 0x33, 0x33, 0x35, 0x34, 0x33, 0x12, 0xa8, - 0xdd, 0xcb, 0xbb, 0xaa, 0x9b, 0xaa, 0x89, 0x08, 0x21, 0x32, 0x53, 0x42, 0x32, 0x25, 0x81, 0xeb, - 0xdd, 0xbc, 0xbc, 0xba, 0xa9, 0x9a, 0xa9, 0x99, 0x18, 0x32, 0x35, 0x34, 0x34, 0x23, 0x91, 0xeb, - 0xdd, 0xdb, 0xbb, 0x9c, 0x8a, 0x21, 0x34, 0x34, 0x33, 0x34, 0x33, 0x23, 0x01, 0x90, 0xaa, 0xbb, - 0xcb, 0xbb, 0xaa, 0x31, 0x47, 0x34, 0x33, 0x02, 0x00, 0x30, 0x55, 0x35, 0x25, 0x43, 0x33, 0x13, - 0x81, 0xca, 0xbd, 0xcb, 0xaa, 0xaa, 0xab, 0xab, 0xaa, 0x8a, 0x10, 0x43, 0x44, 0x42, 0x22, 0x12, - 0xa8, 0xde, 0xcc, 0xbb, 0xbb, 0xaa, 0xa9, 0xaa, 0xcb, 0x9a, 0x09, 0x52, 0x45, 0x23, 0x02, 0xd9, - 0xcc, 0xcc, 0xba, 0xaa, 0x8a, 0x20, 0x53, 0x34, 0x53, 0x32, 0x33, 0x12, 0x11, 0x20, 0x01, 0xb8, - 0xcd, 0xcc, 0x9a, 0x18, 0x52, 0x34, 0x24, 0x01, 0x89, 0x99, 0x08, 0x53, 0x44, 0x34, 0x53, 0x33, - 0x13, 0x80, 0xcb, 0xbc, 0xbb, 0xbb, 0xcb, 0xbb, 0xad, 0xbb, 0x99, 0x18, 0x32, 0x53, 0x32, 0x13, - 0x82, 0xc9, 0xcd, 0xcc, 0xba, 0xab, 0x9a, 0xbb, 0xdc, 0xcb, 0xaa, 0x19, 0x54, 0x53, 0x12, 0xa8, - 0xdc, 0xbb, 0xbc, 0xaa, 0x99, 0x18, 0x42, 0x34, 0x35, 0x33, 0x24, 0x32, 0x22, 0x33, 0x43, 0x01, - 0xc9, 0xcd, 0xac, 0x9a, 0x20, 0x34, 0x34, 0x22, 0x90, 0xaa, 0x9a, 0x30, 0x55, 0x44, 0x53, 0x33, - 0x24, 0x02, 0x98, 0xca, 0xab, 0xbb, 0xaa, 0xcc, 0xdb, 0xbb, 0xbb, 0x88, 0x22, 0x43, 0x22, 0x11, - 0x88, 0x89, 0xa9, 0xeb, 0xbc, 0xac, 0x9a, 0x99, 0xdb, 0xce, 0xcb, 0xaa, 0x10, 0x44, 0x33, 0x81, - 0xdc, 0xcc, 0xbb, 0xaa, 0x9a, 0x00, 0x31, 0x53, 0x34, 0x33, 0x43, 0x43, 0x32, 0x43, 0x32, 0x22, - 0x98, 0xcd, 0xbd, 0xaa, 0x08, 0x33, 0x36, 0x22, 0x81, 0xba, 0xbb, 0x09, 0x64, 0x53, 0x33, 0x35, - 0x43, 0x32, 0x11, 0xa8, 0xba, 0xbc, 0xba, 0xbc, 0xbe, 0xbd, 0xab, 0x99, 0x11, 0x33, 0x33, 0x01, - 0x98, 0xbb, 0x99, 0x00, 0x11, 0x98, 0x99, 0xba, 0xff, 0xcd, 0xcc, 0xab, 0x89, 0x31, 0x35, 0x12, - 0xb9, 0xcf, 0xcb, 0xaa, 0x99, 0x89, 0x10, 0x21, 0x34, 0x43, 0x24, 0x34, 0x34, 0x33, 0x24, 0x22, - 0x81, 0xca, 0xcd, 0x9b, 0x89, 0x21, 0x34, 0x24, 0x01, 0xb9, 0xcb, 0x8a, 0x41, 0x35, 0x44, 0x33, - 0x33, 0x25, 0x23, 0x12, 0x88, 0xba, 0xcc, 0xcb, 0xcc, 0xbc, 0xbc, 0x9a, 0x08, 0x32, 0x24, 0x01, - 0xa9, 0xcc, 0xaa, 0x88, 0x21, 0x32, 0x02, 0x90, 0xdb, 0xdc, 0xcb, 0xcb, 0x9a, 0x09, 0x43, 0x24, - 0x81, 0xec, 0xcc, 0xba, 0xaa, 0x99, 0x98, 0x08, 0x20, 0x34, 0x35, 0x45, 0x43, 0x32, 0x33, 0x22, - 0x11, 0xa8, 0xda, 0xac, 0x8a, 0x10, 0x43, 0x24, 0x12, 0x98, 0xbb, 0xac, 0x18, 0x45, 0x44, 0x33, - 0x24, 0x33, 0x53, 0x43, 0x22, 0x01, 0xa9, 0xcc, 0xcc, 0xdb, 0xab, 0xab, 0x88, 0x10, 0x33, 0x23, - 0xa8, 0xcd, 0xbc, 0x9a, 0x28, 0x42, 0x33, 0x02, 0xa8, 0xbd, 0xbd, 0xbb, 0xbb, 0x99, 0x20, 0x63, - 0x23, 0xc0, 0xde, 0xbc, 0xab, 0xab, 0xaa, 0xac, 0x9b, 0x18, 0x63, 0x44, 0x44, 0x42, 0x32, 0x12, - 0x01, 0x80, 0xa8, 0xaa, 0xab, 0x08, 0x30, 0x33, 0x01, 0xa9, 0xcc, 0xac, 0x19, 0x55, 0x45, 0x32, - 0x22, 0x12, 0x43, 0x44, 0x44, 0x12, 0x80, 0xb9, 0xbd, 0xbc, 0xbc, 0xba, 0x9a, 0x88, 0x31, 0x33, - 0x82, 0xfa, 0xcc, 0xaa, 0x89, 0x21, 0x43, 0x12, 0x80, 0xba, 0xcb, 0xab, 0x9a, 0xba, 0xab, 0x88, - 0x32, 0x83, 0xff, 0xcc, 0xbd, 0xbb, 0xbb, 0xbc, 0xad, 0x9b, 0x28, 0x64, 0x53, 0x33, 0x24, 0x23, - 0x11, 0x00, 0x98, 0x99, 0x99, 0x08, 0x00, 0x01, 0x90, 0xba, 0xcb, 0x9a, 0x30, 0x66, 0x44, 0x43, - 0x12, 0x11, 0x21, 0x54, 0x34, 0x25, 0x11, 0xa8, 0xbb, 0xcd, 0xbb, 0xbb, 0xab, 0x9a, 0x08, 0x21, - 0x12, 0xc9, 0xce, 0xac, 0x9b, 0x10, 0x23, 0x13, 0x80, 0xba, 0xbb, 0x9a, 0x89, 0xb9, 0xdd, 0xcb, - 0xab, 0x99, 0xa9, 0xec, 0xcd, 0xcc, 0xca, 0xca, 0xbb, 0xbd, 0x9b, 0x30, 0x46, 0x34, 0x33, 0x33, - 0x13, 0x02, 0x80, 0x88, 0x88, 0x80, 0x00, 0x80, 0xa8, 0xdb, 0xbb, 0x89, 0x31, 0x56, 0x44, 0x33, - 0x24, 0x11, 0x10, 0x42, 0x46, 0x34, 0x23, 0x81, 0xca, 0xbc, 0xbb, 0xab, 0xba, 0xba, 0xbb, 0x99, - 0x08, 0xb8, 0xde, 0xcc, 0xab, 0x89, 0x10, 0x11, 0x08, 0x99, 0x9a, 0x08, 0x21, 0x33, 0xb8, 0xff, - 0xbc, 0xba, 0xaa, 0x99, 0xba, 0xce, 0xcd, 0xcb, 0xbb, 0xbe, 0xac, 0x8a, 0x31, 0x46, 0x24, 0x23, - 0x22, 0x12, 0x11, 0x00, 0x80, 0x88, 0x08, 0x88, 0x98, 0xc9, 0xba, 0x89, 0x52, 0x45, 0x33, 0x24, - 0x23, 0x21, 0x20, 0x41, 0x64, 0x44, 0x33, 0x13, 0x90, 0xdb, 0xbb, 0xbb, 0xba, 0xca, 0xbb, 0xcb, - 0xa9, 0xa9, 0xca, 0xcd, 0xcb, 0xaa, 0x88, 0x80, 0x88, 0xaa, 0x8b, 0x32, 0x35, 0x34, 0x02, 0xfa, - 0xdc, 0xab, 0x9b, 0x8a, 0x90, 0xb9, 0xce, 0xbd, 0xbc, 0xcb, 0xbb, 0xbc, 0x8a, 0x72, 0x44, 0x33, - 0x33, 0x22, 0x11, 0x12, 0x01, 0x81, 0x88, 0x89, 0x89, 0x99, 0xaa, 0x8a, 0x61, 0x45, 0x34, 0x32, - 0x21, 0x33, 0x34, 0x33, 0x34, 0x36, 0x35, 0x24, 0x02, 0xb8, 0xcc, 0xbb, 0x9a, 0x9a, 0xab, 0xbc, - 0xad, 0xaa, 0xaa, 0xcb, 0xdb, 0xcb, 0xba, 0xab, 0xca, 0xba, 0x8b, 0x62, 0x34, 0x24, 0x12, 0x98, - 0xcc, 0xdb, 0xba, 0xaa, 0x9a, 0xaa, 0xcc, 0xcc, 0xcb, 0xbb, 0xad, 0xac, 0x9b, 0x18, 0x55, 0x53, - 0x33, 0x32, 0x21, 0x22, 0x12, 0x02, 0x98, 0xaa, 0xbb, 0x8a, 0x08, 0x32, 0x54, 0x44, 0x34, 0x24, - 0x23, 0x22, 0x23, 0x23, 0x33, 0x44, 0x44, 0x34, 0x33, 0x90, 0xdc, 0xcb, 0x9a, 0x98, 0x80, 0xa9, - 0xdb, 0xab, 0xab, 0xaa, 0xeb, 0xcc, 0xdb, 0xba, 0xab, 0xbb, 0xbb, 0x09, 0x63, 0x44, 0x23, 0x01, - 0x98, 0xcb, 0xbc, 0xba, 0xbb, 0xbc, 0xcb, 0xcd, 0xcb, 0xcb, 0xbb, 0xbb, 0xbb, 0x89, 0x53, 0x46, - 0x44, 0x32, 0x22, 0x22, 0x22, 0x13, 0x01, 0xa8, 0xbc, 0xac, 0x89, 0x31, 0x44, 0x34, 0x34, 0x33, - 0x33, 0x23, 0x24, 0x32, 0x32, 0x43, 0x43, 0x34, 0x33, 0x80, 0xdc, 0xbd, 0xba, 0x89, 0x10, 0x01, - 0xaa, 0xbc, 0xbb, 0xcc, 0xdb, 0xdc, 0xdb, 0xbb, 0xbb, 0xac, 0x9b, 0x09, 0x32, 0x36, 0x23, 0x13, - 0x98, 0xca, 0xac, 0xab, 0xba, 0xba, 0xcc, 0xbd, 0xcd, 0xbb, 0xbc, 0xbb, 0xba, 0x99, 0x31, 0x56, - 0x44, 0x33, 0x33, 0x32, 0x43, 0x22, 0x01, 0xa9, 0xbd, 0xac, 0x8a, 0x20, 0x44, 0x34, 0x34, 0x23, - 0x33, 0x22, 0x12, 0x21, 0x32, 0x43, 0x34, 0x33, 0x23, 0xa0, 0xdd, 0xcc, 0xbb, 0x99, 0x00, 0x01, - 0x90, 0x99, 0xba, 0xaa, 0xdc, 0xdd, 0xcc, 0xcc, 0xbb, 0xac, 0xaa, 0x99, 0x00, 0x42, 0x43, 0x23, - 0x02, 0x90, 0xa9, 0xbb, 0xbc, 0xbd, 0xcc, 0xcb, 0xcc, 0xbb, 0xcb, 0xbb, 0xab, 0x8a, 0x10, 0x54, - 0x54, 0x33, 0x25, 0x33, 0x32, 0x22, 0x01, 0xb9, 0xcd, 0xbb, 0xaa, 0x18, 0x42, 0x44, 0x34, 0x34, - 0x32, 0x33, 0x23, 0x32, 0x32, 0x23, 0x13, 0x22, 0x01, 0xd9, 0xdc, 0xbc, 0xbc, 0xbb, 0x99, 0x10, - 0x22, 0x33, 0x22, 0x11, 0xb8, 0xee, 0xdc, 0xdc, 0xbb, 0xbc, 0xab, 0xa9, 0x89, 0x00, 0x31, 0x35, - 0x33, 0x23, 0x11, 0x80, 0xba, 0xcf, 0xdb, 0xbc, 0xbc, 0xbb, 0xcb, 0xba, 0xac, 0xab, 0x8a, 0x40, - 0x64, 0x53, 0x33, 0x43, 0x23, 0x22, 0x02, 0x98, 0xdb, 0xbb, 0xbb, 0xaa, 0x18, 0x63, 0x44, 0x43, - 0x24, 0x24, 0x32, 0x22, 0x22, 0x11, 0x80, 0x80, 0x08, 0xb8, 0xcc, 0xdb, 0xbc, 0xad, 0x9a, 0x09, - 0x20, 0x23, 0x22, 0x01, 0x00, 0xa8, 0xfb, 0xed, 0xdb, 0xbb, 0xba, 0xbb, 0xba, 0xaa, 0x09, 0x62, - 0x44, 0x33, 0x23, 0x01, 0xa9, 0xcb, 0xcc, 0xbc, 0xbc, 0xcb, 0xbb, 0xbc, 0xcb, 0xbb, 0x9a, 0x08, - 0x63, 0x44, 0x34, 0x34, 0x33, 0x23, 0x22, 0x81, 0x99, 0xcb, 0xcb, 0xab, 0x9b, 0x19, 0x52, 0x44, - 0x54, 0x33, 0x34, 0x33, 0x32, 0x21, 0x12, 0x11, 0x80, 0xb9, 0xcb, 0xbc, 0xcc, 0xcc, 0xab, 0xaa, - 0x88, 0x21, 0x11, 0x00, 0x98, 0x89, 0x90, 0xfb, 0xdd, 0xbd, 0xbc, 0xac, 0xab, 0xaa, 0x89, 0x31, - 0x45, 0x34, 0x33, 0x13, 0x90, 0xb9, 0xcc, 0xbc, 0xcc, 0xcb, 0xbb, 0xcb, 0xcb, 0xcb, 0xaa, 0x89, - 0x31, 0x45, 0x35, 0x43, 0x23, 0x23, 0x21, 0x11, 0x00, 0xa9, 0xcb, 0xcb, 0xbb, 0xbb, 0x9a, 0x20, - 0x56, 0x54, 0x43, 0x33, 0x32, 0x22, 0x21, 0x21, 0x01, 0x88, 0xaa, 0xcb, 0xbc, 0xcd, 0xcb, 0xbb, - 0x8a, 0x08, 0x00, 0x00, 0x99, 0x89, 0x01, 0x98, 0xfb, 0xcf, 0xbc, 0xbc, 0xbb, 0xab, 0x89, 0x20, - 0x54, 0x34, 0x25, 0x12, 0x81, 0xa9, 0xaa, 0xba, 0xcc, 0xcc, 0xcb, 0xdb, 0xcb, 0xbb, 0xac, 0x9a, - 0x18, 0x53, 0x34, 0x35, 0x33, 0x23, 0x33, 0x32, 0x12, 0x90, 0xba, 0xcc, 0xba, 0xac, 0xbb, 0xab, - 0x19, 0x65, 0x44, 0x33, 0x43, 0x22, 0x22, 0x23, 0x33, 0x12, 0x90, 0xba, 0xbd, 0xdb, 0xdb, 0xba, - 0xcb, 0xaa, 0x9a, 0x89, 0x88, 0x00, 0x11, 0x88, 0xb9, 0xff, 0xcc, 0xbb, 0xac, 0x9a, 0x08, 0x10, - 0x52, 0x34, 0x35, 0x22, 0x82, 0x98, 0xa9, 0xa9, 0xca, 0xdb, 0xcd, 0xcc, 0xbb, 0xbc, 0xcb, 0xab, - 0x9a, 0x10, 0x44, 0x35, 0x34, 0x33, 0x33, 0x24, 0x22, 0x02, 0x98, 0xaa, 0xac, 0xbb, 0xca, 0xca, - 0x9a, 0x18, 0x43, 0x45, 0x33, 0x24, 0x22, 0x43, 0x33, 0x34, 0x23, 0x01, 0x99, 0xaa, 0xbc, 0xdb, - 0xcc, 0xbc, 0xba, 0xab, 0x99, 0x10, 0x00, 0xa9, 0xcb, 0xdd, 0xcc, 0xcb, 0xaa, 0x9a, 0x08, 0x11, - 0x53, 0x44, 0x34, 0x24, 0x11, 0x88, 0x89, 0x88, 0x89, 0xb9, 0xed, 0xdc, 0xcb, 0xbb, 0xcb, 0xbb, - 0xbb, 0x9a, 0x20, 0x45, 0x44, 0x43, 0x33, 0x24, 0x33, 0x22, 0x01, 0x98, 0xba, 0xbb, 0xac, 0xab, - 0xbb, 0x9a, 0x8a, 0x20, 0x73, 0x34, 0x43, 0x44, 0x33, 0x34, 0x34, 0x22, 0x21, 0x00, 0x88, 0xba, - 0xcd, 0xcc, 0xcb, 0xcb, 0x9a, 0x08, 0x88, 0x98, 0xba, 0xcc, 0xcc, 0xcb, 0xab, 0x8a, 0x10, 0x32, - 0x53, 0x34, 0x35, 0x34, 0x13, 0x01, 0x98, 0x98, 0x80, 0x98, 0xdc, 0xde, 0xcb, 0xcb, 0xab, 0xbb, - 0xac, 0xab, 0x8a, 0x30, 0x55, 0x43, 0x34, 0x33, 0x34, 0x23, 0x23, 0x01, 0x98, 0xaa, 0xaa, 0xcb, - 0xab, 0xac, 0xbb, 0xac, 0x8a, 0x10, 0x31, 0x44, 0x35, 0x44, 0x34, 0x24, 0x33, 0x34, 0x12, 0x00, - 0xa9, 0xcc, 0xcc, 0xcb, 0xaa, 0x8a, 0x99, 0xa9, 0xbc, 0xbc, 0xcc, 0xba, 0xab, 0x09, 0x21, 0x43, - 0x43, 0x53, 0x53, 0x33, 0x33, 0x12, 0x01, 0x88, 0x80, 0x98, 0xd9, 0xde, 0xbc, 0xcc, 0xcb, 0xbb, - 0xcb, 0xcb, 0x9b, 0x0a, 0x21, 0x45, 0x43, 0x24, 0x43, 0x32, 0x33, 0x32, 0x11, 0x88, 0x98, 0xb9, - 0xcb, 0xcb, 0xcb, 0xab, 0x9b, 0x89, 0x88, 0x00, 0x21, 0x44, 0x46, 0x44, 0x43, 0x34, 0x32, 0x11, - 0x91, 0xc9, 0xdb, 0xbb, 0xac, 0x9a, 0xa9, 0xb9, 0xdb, 0xcb, 0xca, 0xba, 0xba, 0x9a, 0x10, 0x22, - 0x33, 0x54, 0x43, 0x44, 0x33, 0x34, 0x33, 0x11, 0x00, 0x80, 0x90, 0xca, 0xde, 0xbc, 0xbe, 0xbc, - 0xcb, 0xbb, 0xac, 0xa9, 0x08, 0x32, 0x44, 0x43, 0x43, 0x34, 0x43, 0x23, 0x23, 0x12, 0x11, 0x88, - 0xb9, 0xbd, 0xbc, 0xaa, 0xaa, 0x89, 0x89, 0xa9, 0xab, 0x9a, 0x50, 0x56, 0x54, 0x43, 0x32, 0x12, - 0x01, 0x98, 0xba, 0xdb, 0xcb, 0x9a, 0x9a, 0xc9, 0xcb, 0xcb, 0xba, 0xbb, 0xbc, 0xcb, 0x09, 0x21, - 0x22, 0x31, 0x43, 0x35, 0x44, 0x42, 0x22, 0x22, 0x11, 0x21, 0x22, 0x33, 0x81, 0xfd, 0xdd, 0xcc, - 0xcb, 0xba, 0xab, 0xab, 0xaa, 0x08, 0x21, 0x53, 0x53, 0x44, 0x43, 0x24, 0x33, 0x23, 0x22, 0x02, - 0x90, 0xc9, 0xca, 0xaa, 0xab, 0xab, 0xaa, 0xba, 0xcc, 0xab, 0x8a, 0x63, 0x45, 0x35, 0x32, 0x13, - 0x01, 0x80, 0x88, 0xb9, 0xbd, 0xbc, 0xab, 0xaa, 0xca, 0xab, 0xab, 0xbc, 0xbd, 0xbd, 0xaa, 0x89, - 0x08, 0x98, 0x18, 0x62, 0x34, 0x34, 0x42, 0x33, 0x43, 0x33, 0x34, 0x43, 0x33, 0x81, 0xec, 0xdd, - 0xbc, 0xac, 0xbb, 0xba, 0xab, 0x9b, 0x99, 0x20, 0x42, 0x45, 0x44, 0x34, 0x43, 0x33, 0x32, 0x23, - 0x11, 0x90, 0xa9, 0xcb, 0xbc, 0xac, 0xaa, 0xaa, 0xaa, 0xcb, 0xab, 0x19, 0x74, 0x34, 0x34, 0x22, - 0x10, 0x08, 0x08, 0x08, 0x99, 0xbd, 0xbc, 0xac, 0xaa, 0x99, 0x88, 0xb9, 0xce, 0xcb, 0xab, 0x8a, - 0x98, 0x99, 0xbb, 0x8a, 0x31, 0x46, 0x34, 0x42, 0x43, 0x33, 0x44, 0x43, 0x43, 0x22, 0x80, 0xfb, - 0xcc, 0xbc, 0xac, 0xbb, 0xba, 0xac, 0xaa, 0x99, 0x00, 0x41, 0x45, 0x44, 0x33, 0x34, 0x33, 0x43, - 0x12, 0x01, 0x80, 0xa8, 0xcb, 0xdb, 0xaa, 0xab, 0x9a, 0xaa, 0xab, 0x0a, 0x73, 0x34, 0x25, 0x23, - 0x11, 0x88, 0x98, 0x80, 0x98, 0xda, 0xcc, 0xcb, 0xba, 0x09, 0x10, 0x01, 0xb9, 0xbe, 0xaa, 0x89, - 0x99, 0xeb, 0xbc, 0xac, 0x99, 0x99, 0x00, 0x42, 0x43, 0x34, 0x45, 0x53, 0x43, 0x33, 0x12, 0x90, - 0xcc, 0xcd, 0xbb, 0xbc, 0xcb, 0xbb, 0xcb, 0xaa, 0x9a, 0x08, 0x52, 0x44, 0x34, 0x34, 0x34, 0x24, - 0x13, 0x12, 0x01, 0x81, 0x98, 0xbc, 0xbc, 0xac, 0xaa, 0xaa, 0xaa, 0x89, 0x31, 0x35, 0x35, 0x34, - 0x12, 0x11, 0x88, 0x99, 0x89, 0xa9, 0xfb, 0xbc, 0xbd, 0xaa, 0x09, 0x10, 0x80, 0xaa, 0x8a, 0x10, - 0x13, 0xe8, 0xcd, 0xac, 0xab, 0xbc, 0xba, 0x9a, 0x18, 0x22, 0x55, 0x54, 0x44, 0x33, 0x23, 0x12, - 0x90, 0xdb, 0xcc, 0xcb, 0xac, 0xbc, 0xcb, 0xba, 0xaa, 0x8a, 0x18, 0x53, 0x44, 0x43, 0x44, 0x33, - 0x24, 0x22, 0x12, 0x11, 0x81, 0xb8, 0xcc, 0xbc, 0xac, 0xa9, 0x99, 0x08, 0x00, 0x22, 0x43, 0x34, - 0x33, 0x23, 0x01, 0xb9, 0xbb, 0xbb, 0xcc, 0xcd, 0xbd, 0xcb, 0x99, 0x08, 0x00, 0x00, 0x11, 0x32, - 0x24, 0x81, 0xca, 0xcc, 0xdb, 0xcc, 0xcb, 0xab, 0xaa, 0x98, 0x20, 0x54, 0x35, 0x44, 0x23, 0x32, - 0x11, 0x80, 0xba, 0xcc, 0xbd, 0xdb, 0xcb, 0xbc, 0xbb, 0xba, 0x99, 0x10, 0x43, 0x45, 0x34, 0x35, - 0x33, 0x34, 0x22, 0x22, 0x12, 0x90, 0xba, 0xce, 0xbb, 0xac, 0x9a, 0x88, 0x08, 0x11, 0x31, 0x43, - 0x34, 0x33, 0x13, 0x90, 0xaa, 0xbb, 0xcb, 0xcd, 0xdb, 0xbc, 0xac, 0xab, 0x89, 0x11, 0x32, 0x44, - 0x33, 0x22, 0x21, 0x02, 0xea, 0xdd, 0xdb, 0xcb, 0xaa, 0xaa, 0x89, 0x21, 0x53, 0x44, 0x24, 0x24, - 0x22, 0x02, 0x90, 0xb9, 0xcb, 0xbc, 0xbc, 0xbd, 0xbd, 0xcb, 0x9a, 0x99, 0x20, 0x42, 0x44, 0x34, - 0x43, 0x34, 0x32, 0x33, 0x23, 0x02, 0xa8, 0xdb, 0xbd, 0xcb, 0xab, 0xaa, 0x89, 0x09, 0x31, 0x43, - 0x34, 0x43, 0x32, 0x11, 0x01, 0x98, 0xba, 0xdc, 0xcc, 0xdb, 0xba, 0xba, 0x99, 0x08, 0x20, 0x43, - 0x34, 0x23, 0x32, 0x33, 0x02, 0xea, 0xde, 0xdb, 0xbb, 0xbb, 0xab, 0x09, 0x31, 0x54, 0x34, 0x44, - 0x33, 0x23, 0x11, 0x90, 0xba, 0xbc, 0xdb, 0xdb, 0xcc, 0xdb, 0xba, 0x9a, 0x89, 0x21, 0x53, 0x34, - 0x34, 0x44, 0x32, 0x34, 0x22, 0x22, 0x80, 0xa9, 0xbc, 0xbd, 0xac, 0xab, 0xaa, 0x9a, 0x08, 0x31, - 0x35, 0x34, 0x32, 0x12, 0x22, 0x21, 0x12, 0xa9, 0xde, 0xcc, 0xac, 0xbb, 0xaa, 0x99, 0x88, 0x20, - 0x22, 0x44, 0x43, 0x24, 0x12, 0x91, 0xdb, 0xbd, 0xcc, 0xcb, 0xab, 0xaa, 0x88, 0x21, 0x63, 0x44, - 0x24, 0x23, 0x22, 0x10, 0x98, 0xa9, 0xbb, 0xcd, 0xcc, 0xbc, 0xbc, 0xba, 0x99, 0x08, 0x32, 0x36, - 0x35, 0x34, 0x34, 0x43, 0x33, 0x22, 0x12, 0x80, 0xba, 0xcd, 0xbc, 0xbb, 0xbb, 0xab, 0xaa, 0x18, - 0x43, 0x35, 0x33, 0x24, 0x21, 0x33, 0x12, 0x80, 0xda, 0xdc, 0xbc, 0xcb, 0xab, 0xbb, 0xa9, 0x88, - 0x11, 0x53, 0x33, 0x34, 0x22, 0x02, 0xc9, 0xcc, 0xcc, 0xbc, 0xbc, 0xbb, 0xaa, 0x08, 0x31, 0x37, - 0x45, 0x32, 0x32, 0x12, 0x01, 0x88, 0xb8, 0xdb, 0xcc, 0xbc, 0xbd, 0xcb, 0xaa, 0x8a, 0x08, 0x42, - 0x45, 0x34, 0x43, 0x43, 0x32, 0x23, 0x13, 0x02, 0x98, 0xda, 0xbc, 0xcc, 0xba, 0xaa, 0xab, 0x99, - 0x00, 0x33, 0x35, 0x33, 0x23, 0x33, 0x24, 0x13, 0x00, 0xca, 0xcd, 0xcc, 0xbb, 0xac, 0xab, 0x9a, - 0x08, 0x21, 0x32, 0x43, 0x33, 0x21, 0x90, 0xeb, 0xbc, 0xcd, 0xbc, 0xad, 0xab, 0x9a, 0x08, 0x52, - 0x45, 0x43, 0x33, 0x22, 0x02, 0x01, 0x88, 0xba, 0xdc, 0xdb, 0xbc, 0xbc, 0xac, 0xaa, 0x99, 0x20, - 0x63, 0x44, 0x53, 0x32, 0x33, 0x24, 0x22, 0x22, 0x00, 0x98, 0xdb, 0xcc, 0xbb, 0xbc, 0xaa, 0xab, - 0x99, 0x08, 0x22, 0x34, 0x24, 0x33, 0x43, 0x32, 0x33, 0x01, 0xba, 0xcf, 0xcb, 0xcb, 0xab, 0xaa, - 0x89, 0x18, 0x20, 0x11, 0x01, 0x88, 0x99, 0xba, 0xdc, 0xcc, 0xdc, 0xdb, 0xbb, 0xaa, 0x8a, 0x32, - 0x46, 0x44, 0x33, 0x33, 0x23, 0x21, 0x00, 0x98, 0xca, 0xdc, 0xeb, 0xcb, 0xbb, 0xac, 0xaa, 0x88, - 0x31, 0x45, 0x35, 0x34, 0x24, 0x23, 0x33, 0x33, 0x23, 0x81, 0xb9, 0xdd, 0xdb, 0xbb, 0xba, 0xbb, - 0x9a, 0x9a, 0x08, 0x21, 0x32, 0x33, 0x45, 0x53, 0x33, 0x23, 0x01, 0xb9, 0xec, 0xcb, 0xba, 0xba, - 0x99, 0x09, 0x10, 0x00, 0xa9, 0xcb, 0xbb, 0xaa, 0xa9, 0xdc, 0xcd, 0xbd, 0xad, 0xbb, 0x8a, 0x30, - 0x54, 0x43, 0x34, 0x24, 0x22, 0x22, 0x21, 0x01, 0x98, 0xba, 0xcf, 0xcc, 0xdb, 0xab, 0xab, 0x99, - 0x20, 0x52, 0x34, 0x45, 0x42, 0x32, 0x32, 0x24, 0x33, 0x12, 0x00, 0xba, 0xdd, 0xbb, 0xbc, 0xab, - 0xab, 0xab, 0xa9, 0x88, 0x18, 0x10, 0x33, 0x46, 0x34, 0x34, 0x12, 0x80, 0xa9, 0xbc, 0xac, 0xab, - 0x9a, 0x9a, 0x89, 0x99, 0xca, 0xbd, 0xbc, 0xab, 0x8a, 0xa8, 0xeb, 0xcd, 0xbd, 0xbb, 0xaa, 0x18, - 0x54, 0x43, 0x43, 0x42, 0x32, 0x32, 0x22, 0x12, 0x11, 0x98, 0xdb, 0xdd, 0xcc, 0xbc, 0xab, 0x9b, - 0x09, 0x21, 0x44, 0x44, 0x53, 0x32, 0x24, 0x43, 0x32, 0x23, 0x12, 0x98, 0xcb, 0xcc, 0xbb, 0xac, - 0xbb, 0xbb, 0xbb, 0xba, 0x9a, 0x99, 0x00, 0x52, 0x55, 0x33, 0x24, 0x12, 0x90, 0xaa, 0xbb, 0xaa, - 0x99, 0xa8, 0xaa, 0xbc, 0xcd, 0xac, 0xac, 0xbb, 0xbb, 0x9a, 0xbb, 0xdc, 0xcc, 0xbc, 0xac, 0x89, - 0x41, 0x53, 0x33, 0x34, 0x24, 0x23, 0x23, 0x21, 0x12, 0x01, 0xa9, 0xcd, 0xdd, 0xcb, 0xac, 0xbb, - 0x99, 0x18, 0x31, 0x35, 0x45, 0x43, 0x43, 0x43, 0x43, 0x23, 0x13, 0x01, 0x98, 0xca, 0xcb, 0xbc, - 0xcb, 0xab, 0xac, 0xaa, 0xab, 0xba, 0xaa, 0x08, 0x63, 0x53, 0x24, 0x23, 0x12, 0x98, 0xb9, 0x9a, - 0x89, 0x88, 0x98, 0xb9, 0xdd, 0xcb, 0xcb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbc, 0xdc, 0xcc, 0xcb, 0x9a, - 0x09, 0x32, 0x45, 0x34, 0x42, 0x22, 0x32, 0x32, 0x24, 0x23, 0x01, 0xa8, 0xdc, 0xcd, 0xbc, 0xbb, - 0xab, 0x8a, 0x10, 0x31, 0x35, 0x36, 0x35, 0x35, 0x34, 0x43, 0x23, 0x22, 0x01, 0x98, 0xcb, 0xbc, - 0xbc, 0xbb, 0xcb, 0xbb, 0xbc, 0xbc, 0xba, 0x9a, 0x10, 0x43, 0x44, 0x24, 0x23, 0x11, 0x00, 0x88, - 0x99, 0x88, 0x80, 0xa9, 0xdd, 0xdb, 0xbb, 0xac, 0x99, 0xa9, 0x99, 0xba, 0xcc, 0xcc, 0xdb, 0xba, - 0x9a, 0x18, 0x52, 0x43, 0x33, 0x33, 0x34, 0x44, 0x33, 0x33, 0x32, 0x13, 0x90, 0xed, 0xcc, 0xbb, - 0xaa, 0xaa, 0x88, 0x08, 0x10, 0x53, 0x55, 0x44, 0x34, 0x34, 0x24, 0x33, 0x22, 0x01, 0x98, 0xbc, - 0xbd, 0xbb, 0xac, 0xbb, 0xbd, 0xcb, 0xba, 0xaa, 0x08, 0x21, 0x34, 0x44, 0x32, 0x23, 0x12, 0x00, - 0x98, 0x89, 0x08, 0x98, 0xfb, 0xdc, 0xbb, 0xbb, 0x99, 0x89, 0xa9, 0xbb, 0xdc, 0xcb, 0xcb, 0xab, - 0xbb, 0x9a, 0x10, 0x34, 0x34, 0x34, 0x35, 0x34, 0x34, 0x43, 0x43, 0x43, 0x12, 0x90, 0xcc, 0xbc, - 0xab, 0xab, 0xaa, 0x9a, 0x9a, 0x09, 0x72, 0x46, 0x54, 0x43, 0x33, 0x33, 0x24, 0x22, 0x81, 0xb8, - 0xeb, 0xbb, 0xbc, 0xbb, 0xdb, 0xcb, 0xbb, 0xba, 0x99, 0x20, 0x42, 0x34, 0x24, 0x33, 0x24, 0x12, - 0x00, 0x98, 0x99, 0xba, 0xcc, 0xbd, 0xbc, 0xac, 0x9a, 0x88, 0x80, 0x08, 0x88, 0xaa, 0xbb, 0xcd, - 0xbc, 0xab, 0xab, 0x89, 0x88, 0x10, 0x53, 0x45, 0x44, 0x43, 0x34, 0x34, 0x24, 0x02, 0x98, 0xca, - 0xba, 0xbb, 0xca, 0xba, 0xba, 0xbc, 0x8b, 0x73, 0x47, 0x53, 0x43, 0x32, 0x33, 0x33, 0x23, 0x81, - 0xca, 0xcc, 0xbc, 0xbb, 0xcb, 0xbc, 0xdb, 0xaa, 0x9a, 0x08, 0x21, 0x24, 0x24, 0x33, 0x43, 0x32, - 0x12, 0x80, 0xaa, 0xca, 0xcb, 0xbc, 0xbd, 0xbb, 0xbb, 0x9a, 0x88, 0x00, 0x10, 0x80, 0x99, 0xca, - 0xcb, 0xbc, 0xbb, 0xbc, 0xbc, 0xbd, 0xaa, 0x08, 0x63, 0x54, 0x43, 0x34, 0x24, 0x33, 0x02, 0x80, - 0xa9, 0xab, 0xbc, 0xca, 0xcb, 0xcb, 0xab, 0x28, 0x65, 0x45, 0x43, 0x43, 0x33, 0x33, 0x24, 0x12, - 0x90, 0xda, 0xcb, 0xac, 0xbb, 0xdb, 0xbb, 0xbc, 0xab, 0x8a, 0x20, 0x33, 0x35, 0x34, 0x33, 0x24, - 0x23, 0x00, 0xa8, 0xbb, 0xbd, 0xbc, 0xcc, 0xbb, 0xac, 0x9a, 0x88, 0x10, 0x11, 0x11, 0x01, 0x01, - 0x88, 0xba, 0xcd, 0xcc, 0xcb, 0xbc, 0xbc, 0xab, 0x89, 0x42, 0x45, 0x34, 0x33, 0x44, 0x23, 0x13, - 0x02, 0x80, 0xaa, 0xbb, 0xbd, 0xbc, 0xaa, 0x99, 0x48, 0x65, 0x44, 0x53, 0x33, 0x43, 0x32, 0x23, - 0x11, 0x98, 0xdb, 0xdb, 0xbb, 0xcc, 0xcb, 0xbb, 0xac, 0x9a, 0x08, 0x20, 0x42, 0x43, 0x43, 0x33, - 0x23, 0x02, 0xa0, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbc, 0xab, 0x99, 0x10, 0x21, 0x21, 0x21, 0x21, - 0x11, 0x90, 0xca, 0xdd, 0xcc, 0xcb, 0xbc, 0xbb, 0xab, 0x88, 0x52, 0x44, 0x43, 0x34, 0x43, 0x32, - 0x22, 0x11, 0x08, 0x98, 0xaa, 0xbb, 0xcb, 0xbc, 0x9b, 0x40, 0x47, 0x45, 0x43, 0x23, 0x43, 0x32, - 0x22, 0x81, 0xa8, 0xdb, 0xcb, 0xcc, 0xcb, 0xcb, 0xbb, 0xbb, 0x9a, 0x18, 0x31, 0x45, 0x33, 0x34, - 0x22, 0x12, 0x88, 0x98, 0xa9, 0xba, 0xce, 0xcc, 0xcb, 0xab, 0x9a, 0x00, 0x20, 0x21, 0x11, 0x00, - 0x11, 0x01, 0x00, 0xc9, 0xce, 0xbd, 0xbd, 0xac, 0xab, 0xaa, 0x08, 0x42, 0x54, 0x34, 0x34, 0x32, - 0x22, 0x12, 0x22, 0x23, 0x12, 0xa8, 0xcc, 0xcb, 0xcb, 0x8a, 0x30, 0x57, 0x43, 0x24, 0x33, 0x43, - 0x22, 0x12, 0x90, 0xb9, 0xdb, 0xbc, 0xcd, 0xca, 0xbb, 0xcb, 0xaa, 0x09, 0x20, 0x34, 0x34, 0x43, - 0x22, 0x11, 0x80, 0x80, 0x90, 0xa9, 0xdc, 0xcd, 0xcb, 0xbb, 0xab, 0x88, 0x21, 0x32, 0x12, 0x01, - 0x11, 0x32, 0x34, 0x82, 0xfa, 0xcd, 0xcc, 0xcb, 0xab, 0xab, 0x9a, 0x18, 0x62, 0x34, 0x34, 0x33, - 0x43, 0x22, 0x33, 0x34, 0x24, 0x01, 0x98, 0xca, 0xbb, 0xad, 0x9b, 0x20, 0x54, 0x34, 0x34, 0x34, - 0x43, 0x32, 0x11, 0x00, 0xa8, 0xda, 0xcc, 0xbc, 0xdb, 0xab, 0xbb, 0xaa, 0x08, 0x32, 0x53, 0x33, - 0x33, 0x22, 0x22, 0x43, 0x33, 0x02, 0xfa, 0xcd, 0xbc, 0xbc, 0xab, 0x99, 0x18, 0x20, 0x02, 0x80, - 0x08, 0x41, 0x34, 0x33, 0xa0, 0xdd, 0xcd, 0xbc, 0xcb, 0xaa, 0x9a, 0x09, 0x30, 0x45, 0x33, 0x34, - 0x23, 0x43, 0x33, 0x36, 0x33, 0x23, 0x81, 0xba, 0xcb, 0xcc, 0xaa, 0x8a, 0x28, 0x43, 0x45, 0x53, - 0x43, 0x33, 0x22, 0x11, 0x10, 0xa9, 0xcd, 0xbc, 0xbc, 0xbc, 0xac, 0x9b, 0x99, 0x10, 0x21, 0x42, - 0x22, 0x22, 0x32, 0x44, 0x44, 0x22, 0x91, 0xda, 0xcc, 0xbc, 0xbb, 0xaa, 0x99, 0x08, 0x81, 0x98, - 0x89, 0x28, 0x55, 0x24, 0x02, 0xa8, 0xec, 0xbc, 0xac, 0xab, 0xaa, 0x9a, 0x19, 0x42, 0x34, 0x53, - 0x33, 0x43, 0x34, 0x44, 0x34, 0x32, 0x11, 0x80, 0xa9, 0xcb, 0xcb, 0xba, 0x99, 0x18, 0x32, 0x56, - 0x34, 0x34, 0x33, 0x22, 0x12, 0x01, 0xca, 0xdc, 0xcb, 0xbc, 0xbb, 0xbb, 0x9a, 0x89, 0x11, 0x42, - 0x22, 0x11, 0x20, 0x45, 0x45, 0x34, 0x02, 0x98, 0xdb, 0xdb, 0xbb, 0xba, 0x9a, 0x9a, 0x98, 0xa9, - 0xbb, 0x8b, 0x52, 0x36, 0x24, 0x81, 0xc9, 0xcd, 0xcb, 0xba, 0xba, 0xba, 0x9b, 0x28, 0x34, 0x44, - 0x33, 0x34, 0x53, 0x44, 0x34, 0x33, 0x14, 0x11, 0x98, 0xba, 0xcb, 0xab, 0xab, 0xa9, 0x88, 0x41, - 0x46, 0x44, 0x33, 0x42, 0x22, 0x12, 0x81, 0xba, 0xcd, 0xdb, 0xbb, 0xbc, 0xaa, 0x99, 0x09, 0x00, - 0x11, 0x80, 0x08, 0x73, 0x45, 0x44, 0x22, 0x01, 0xa8, 0xcb, 0xbc, 0xbb, 0xab, 0xab, 0xa9, 0xca, - 0xcb, 0xaa, 0x18, 0x44, 0x24, 0x12, 0xa8, 0xcd, 0xbc, 0xcb, 0xba, 0xbb, 0xab, 0x8a, 0x21, 0x34, - 0x35, 0x43, 0x43, 0x54, 0x53, 0x43, 0x23, 0x13, 0x01, 0xb8, 0xcb, 0xcb, 0xaa, 0xa9, 0xa9, 0x99, - 0x31, 0x56, 0x34, 0x25, 0x33, 0x23, 0x12, 0x80, 0xb9, 0xcd, 0xcc, 0xcb, 0xaa, 0xaa, 0x89, 0x08, - 0x00, 0x88, 0x99, 0x28, 0x57, 0x54, 0x23, 0x13, 0x80, 0xb9, 0xbc, 0xac, 0xab, 0xab, 0xb9, 0xca, - 0xac, 0xab, 0x8a, 0x30, 0x44, 0x22, 0x02, 0xca, 0xbe, 0xbc, 0xac, 0xbb, 0xbb, 0x9a, 0x08, 0x33, - 0x43, 0x13, 0x32, 0x57, 0x45, 0x34, 0x34, 0x22, 0x12, 0x90, 0xaa, 0xac, 0xab, 0xab, 0xba, 0xba, - 0x9b, 0x41, 0x57, 0x34, 0x35, 0x22, 0x22, 0x11, 0x90, 0xca, 0xcc, 0xbc, 0xac, 0x9a, 0x99, 0x80, - 0x88, 0x98, 0x9a, 0x18, 0x73, 0x45, 0x34, 0x24, 0x02, 0x90, 0xaa, 0xbc, 0xbb, 0xbb, 0xcb, 0xba, - 0xbc, 0xbb, 0xab, 0x19, 0x41, 0x22, 0x23, 0x80, 0xea, 0xcd, 0xbc, 0xcb, 0xba, 0x9a, 0x89, 0x10, - 0x21, 0x02, 0x00, 0x73, 0x55, 0x35, 0x35, 0x43, 0x12, 0x01, 0x98, 0xaa, 0xbb, 0xcb, 0xba, 0xbb, - 0xab, 0x09, 0x73, 0x45, 0x35, 0x43, 0x32, 0x21, 0x00, 0xa9, 0xdb, 0xbc, 0xbc, 0xac, 0xa9, 0x98, - 0x08, 0x88, 0x98, 0x08, 0x31, 0x56, 0x45, 0x33, 0x23, 0x01, 0xaa, 0xbc, 0xbb, 0xbc, 0xca, 0xba, - 0xcb, 0xbb, 0xbb, 0x99, 0x10, 0x12, 0x12, 0x12, 0x81, 0xed, 0xcd, 0xcb, 0xaa, 0x9a, 0x89, 0x89, - 0x88, 0x98, 0x98, 0x31, 0x67, 0x45, 0x34, 0x34, 0x33, 0x12, 0x01, 0xa9, 0xcb, 0xbb, 0xbc, 0xcb, - 0xaa, 0x8a, 0x28, 0x54, 0x36, 0x35, 0x33, 0x23, 0x11, 0x90, 0xba, 0xcd, 0xdb, 0xba, 0xba, 0x9a, - 0x89, 0x88, 0x88, 0x88, 0x28, 0x74, 0x44, 0x34, 0x24, 0x02, 0x90, 0xa9, 0xbb, 0xcb, 0xba, 0xbc, - 0xbc, 0xcb, 0xba, 0x9a, 0x08, 0x08, 0x98, 0x89, 0x80, 0xc9, 0xce, 0xbc, 0xac, 0x9a, 0x98, 0x98, - 0x99, 0x99, 0x88, 0x10, 0x64, 0x65, 0x53, 0x34, 0x33, 0x33, 0x22, 0x00, 0xaa, 0xbc, 0xbd, 0xbb, - 0xbb, 0xab, 0x9a, 0x52, 0x46, 0x44, 0x24, 0x33, 0x12, 0x01, 0x98, 0xba, 0xcc, 0xbc, 0xbc, 0xba, - 0x9a, 0x88, 0x98, 0x88, 0x00, 0x63, 0x45, 0x35, 0x33, 0x23, 0x01, 0xb9, 0xba, 0xac, 0xbc, 0xdb, - 0xcb, 0xbb, 0xac, 0xaa, 0x89, 0x80, 0xa8, 0xaa, 0x99, 0x98, 0xcb, 0xcd, 0xbc, 0x9a, 0x98, 0x98, - 0xbb, 0xdb, 0xbb, 0x9a, 0x41, 0x56, 0x45, 0x43, 0x34, 0x33, 0x33, 0x12, 0x81, 0xb9, 0xbd, 0xad, - 0xab, 0xab, 0x9c, 0x89, 0x52, 0x45, 0x34, 0x24, 0x23, 0x12, 0x00, 0xa8, 0xaa, 0xbd, 0xcc, 0xbb, - 0xbb, 0xaa, 0x98, 0x89, 0x08, 0x53, 0x55, 0x53, 0x33, 0x33, 0x01, 0x98, 0xab, 0xbb, 0xcb, 0xcc, - 0xcb, 0xcb, 0xcb, 0xaa, 0x99, 0x88, 0x90, 0xbb, 0xac, 0xab, 0xab, 0xbc, 0xbb, 0x8a, 0x08, 0xb8, - 0xbe, 0xcc, 0xcb, 0xbb, 0x89, 0x62, 0x55, 0x34, 0x44, 0x33, 0x33, 0x13, 0x22, 0x80, 0xda, 0xbc, - 0xac, 0xba, 0xbb, 0xab, 0x28, 0x65, 0x44, 0x33, 0x24, 0x22, 0x11, 0x08, 0x89, 0xaa, 0xbc, 0xcd, - 0xbc, 0xaa, 0x9a, 0x89, 0x88, 0x31, 0x45, 0x35, 0x34, 0x24, 0x01, 0x88, 0xa9, 0x9a, 0x9a, 0xca, - 0xbc, 0xbd, 0xcb, 0xbb, 0xaa, 0x8a, 0x88, 0xca, 0xcb, 0xbb, 0x9b, 0x09, 0x88, 0xa9, 0x9a, 0xcb, - 0xcc, 0xbc, 0xbd, 0xbb, 0xab, 0x20, 0x57, 0x44, 0x34, 0x34, 0x32, 0x23, 0x22, 0x22, 0x90, 0xeb, - 0xbc, 0xbc, 0xbb, 0xba, 0x8a, 0x51, 0x45, 0x34, 0x43, 0x22, 0x22, 0x01, 0x81, 0x90, 0xa8, 0xdc, - 0xbd, 0xbc, 0xab, 0x9a, 0x88, 0x21, 0x34, 0x36, 0x25, 0x24, 0x11, 0x80, 0x99, 0xaa, 0x99, 0xaa, - 0xbc, 0xbd, 0xdb, 0xba, 0xbb, 0xaa, 0x89, 0xa9, 0xbc, 0xbd, 0xac, 0x89, 0x10, 0x21, 0x11, 0xb8, - 0xdc, 0xcb, 0xcc, 0xba, 0x9a, 0x08, 0x43, 0x46, 0x53, 0x43, 0x33, 0x33, 0x32, 0x33, 0x13, 0xc8, - 0xbe, 0xbd, 0xac, 0xaa, 0x99, 0x00, 0x44, 0x44, 0x33, 0x33, 0x33, 0x32, 0x11, 0x00, 0x88, 0xd9, - 0xdd, 0xbc, 0xac, 0xaa, 0x88, 0x10, 0x32, 0x35, 0x35, 0x34, 0x22, 0x01, 0xa8, 0xba, 0xba, 0xba, - 0xeb, 0xdb, 0xbb, 0xbb, 0xac, 0xaa, 0x9a, 0xaa, 0xcb, 0xcc, 0xcb, 0x99, 0x21, 0x43, 0x13, 0xa0, - 0xcc, 0xbc, 0xbc, 0xac, 0x9b, 0x09, 0x31, 0x54, 0x44, 0x34, 0x34, 0x23, 0x43, 0x22, 0x22, 0x91, - 0xeb, 0xcc, 0xcb, 0xaa, 0x99, 0x88, 0x21, 0x54, 0x43, 0x33, 0x24, 0x22, 0x12, 0x02, 0x01, 0x88, - 0xeb, 0xbd, 0xad, 0xbb, 0x99, 0x00, 0x22, 0x34, 0x35, 0x34, 0x33, 0x23, 0x80, 0xa9, 0xca, 0xcb, - 0xbc, 0xcc, 0xbb, 0xbb, 0xaa, 0xaa, 0xaa, 0xbb, 0xbc, 0xbc, 0xbe, 0x9a, 0x10, 0x44, 0x33, 0x81, - 0xea, 0xbc, 0xbc, 0xbb, 0x9a, 0x08, 0x20, 0x34, 0x44, 0x44, 0x44, 0x32, 0x43, 0x32, 0x23, 0x01, - 0xa8, 0xec, 0xbc, 0xbc, 0x9a, 0x8a, 0x00, 0x31, 0x44, 0x44, 0x32, 0x43, 0x32, 0x23, 0x02, 0x90, - 0xca, 0xcd, 0xcb, 0xba, 0x9a, 0x08, 0x12, 0x43, 0x43, 0x34, 0x34, 0x33, 0x22, 0x88, 0xaa, 0xcc, - 0xdb, 0xdb, 0xbb, 0xbb, 0xaa, 0x98, 0xa8, 0xca, 0xdb, 0xbc, 0xba, 0x99, 0x30, 0x44, 0x25, 0x02, - 0xa8, 0xbe, 0xac, 0xbb, 0x9a, 0x89, 0x00, 0x11, 0x32, 0x55, 0x54, 0x43, 0x43, 0x23, 0x33, 0x11, - 0x90, 0xc9, 0xcd, 0xbc, 0xba, 0x9a, 0x08, 0x10, 0x11, 0x63, 0x53, 0x34, 0x34, 0x24, 0x02, 0x80, - 0xa9, 0xbc, 0xac, 0xbb, 0x9b, 0x0a, 0x10, 0x43, 0x42, 0x43, 0x44, 0x33, 0x34, 0x11, 0x90, 0xc9, - 0xdb, 0xcc, 0xcb, 0xaa, 0x9a, 0x80, 0x80, 0xa9, 0xcc, 0xbc, 0xaa, 0x88, 0x32, 0x34, 0x33, 0x12, - 0xc8, 0xdd, 0xcb, 0xaa, 0x99, 0x88, 0x00, 0x00, 0x90, 0x10, 0x56, 0x45, 0x34, 0x24, 0x23, 0x11, - 0x00, 0xa9, 0xcb, 0xdb, 0xcb, 0xaa, 0x9a, 0x89, 0x89, 0x09, 0x73, 0x45, 0x44, 0x32, 0x22, 0x81, - 0xa8, 0xcb, 0xbb, 0xaa, 0xa9, 0x98, 0x08, 0x10, 0x33, 0x44, 0x35, 0x36, 0x43, 0x23, 0x81, 0xa8, - 0xbc, 0xcd, 0xbc, 0xac, 0x99, 0x08, 0x00, 0x99, 0xbc, 0xcd, 0x9a, 0x09, 0x11, 0x33, 0x13, 0x80, - 0xb9, 0xdc, 0xcb, 0x9a, 0x89, 0x00, 0x00, 0x99, 0xcc, 0xaa, 0x28, 0x67, 0x44, 0x43, 0x32, 0x12, - 0x00, 0x80, 0x99, 0x99, 0xca, 0xdb, 0xcb, 0xbc, 0xba, 0xab, 0x19, 0x65, 0x44, 0x24, 0x23, 0x01, - 0x98, 0xba, 0xba, 0x8a, 0x08, 0x81, 0xa8, 0xaa, 0x08, 0x54, 0x35, 0x53, 0x33, 0x43, 0x12, 0x80, - 0xca, 0xcd, 0xdb, 0xba, 0xaa, 0x88, 0x80, 0xa9, 0xcd, 0xbc, 0xbb, 0x09, 0x22, 0x34, 0x02, 0xa9, - 0xad, 0xbb, 0x99, 0x18, 0x21, 0x23, 0x11, 0xa9, 0xcc, 0xbb, 0x9c, 0x73, 0x47, 0x43, 0x33, 0x22, - 0x10, 0x00, 0x10, 0x31, 0x12, 0x01, 0xfc, 0xce, 0xbb, 0xac, 0x89, 0x30, 0x44, 0x44, 0x23, 0x12, - 0x98, 0xa9, 0x9b, 0x89, 0x11, 0x12, 0x81, 0xca, 0x9a, 0x40, 0x46, 0x34, 0x23, 0x22, 0x12, 0x81, - 0xb9, 0xfc, 0xbc, 0xbc, 0x9a, 0x89, 0x98, 0xb9, 0xce, 0xbc, 0xbb, 0x88, 0x32, 0x43, 0x81, 0xc9, - 0xdb, 0xab, 0x09, 0x31, 0x34, 0x23, 0x01, 0x01, 0x00, 0x99, 0xcb, 0x8b, 0x50, 0x56, 0x34, 0x33, - 0x12, 0x11, 0x31, 0x55, 0x43, 0x23, 0x91, 0xec, 0xcc, 0xbb, 0xab, 0x08, 0x32, 0x44, 0x23, 0x23, - 0x01, 0x98, 0x89, 0x30, 0x32, 0x22, 0x11, 0x81, 0x9a, 0x61, 0x56, 0x34, 0x33, 0x12, 0x10, 0x01, - 0x80, 0xfb, 0xbd, 0xac, 0x9b, 0x88, 0x98, 0xeb, 0xcd, 0xcb, 0xab, 0x89, 0x21, 0x33, 0x02, 0xca, - 0xcd, 0xba, 0x09, 0x20, 0x34, 0x24, 0x22, 0x22, 0x33, 0x13, 0xb0, 0xcd, 0xbb, 0x8a, 0x20, 0x43, - 0x32, 0x34, 0x44, 0x45, 0x35, 0x44, 0x11, 0xa0, 0xdb, 0xcc, 0xab, 0x9b, 0x00, 0x11, 0x01, 0x10, - 0x20, 0x21, 0x43, 0x34, 0x43, 0x12, 0x00, 0x11, 0x54, 0x33, 0x24, 0x22, 0x43, 0x32, 0x35, 0x02, - 0xb9, 0xdd, 0xac, 0x9b, 0x08, 0x12, 0x91, 0xed, 0xcc, 0xbb, 0xab, 0x8a, 0x00, 0x12, 0x02, 0xb8, - 0xcc, 0xac, 0x9b, 0x08, 0x31, 0x36, 0x46, 0x43, 0x32, 0x11, 0xa0, 0xca, 0xcb, 0x9a, 0x09, 0x00, - 0x08, 0x08, 0x20, 0x55, 0x45, 0x53, 0x32, 0x01, 0xa9, 0xcc, 0xbc, 0xba, 0xab, 0xaa, 0x99, 0x89, - 0x08, 0x32, 0x44, 0x33, 0x44, 0x33, 0x24, 0x24, 0x33, 0x35, 0x22, 0x00, 0x00, 0x52, 0x44, 0x03, - 0xc8, 0xcc, 0xcb, 0x89, 0x20, 0x33, 0x03, 0xea, 0xcd, 0xcb, 0xaa, 0x99, 0x88, 0x88, 0x80, 0x88, - 0x88, 0x99, 0xcb, 0xbc, 0x0a, 0x64, 0x55, 0x53, 0x22, 0x12, 0xa8, 0xaa, 0xbb, 0x99, 0x08, 0x80, - 0xc9, 0xcb, 0xaa, 0x20, 0x46, 0x44, 0x43, 0x12, 0x81, 0xaa, 0xcc, 0xcb, 0xcb, 0xac, 0x9b, 0x89, - 0x00, 0x00, 0x00, 0x08, 0x42, 0x54, 0x44, 0x24, 0x23, 0x11, 0x01, 0x08, 0x10, 0x42, 0x43, 0x12, - 0xb9, 0xbf, 0xad, 0x8a, 0x21, 0x43, 0x23, 0xa0, 0xdc, 0xbc, 0xac, 0x9a, 0x89, 0x98, 0x98, 0x09, - 0x00, 0xa0, 0xeb, 0xcb, 0x8a, 0x72, 0x45, 0x34, 0x33, 0x01, 0xa8, 0xbb, 0x9a, 0x88, 0x21, 0x00, - 0xfb, 0xcc, 0xab, 0x8a, 0x21, 0x53, 0x34, 0x32, 0x02, 0x98, 0xbc, 0xbd, 0xcc, 0xcb, 0xab, 0x9a, - 0x88, 0x88, 0xaa, 0xba, 0x18, 0x66, 0x44, 0x34, 0x23, 0x12, 0x08, 0x08, 0x21, 0x43, 0x34, 0x82, - 0xba, 0xcd, 0xac, 0x8a, 0x31, 0x34, 0x33, 0x91, 0xfb, 0xcb, 0xbb, 0xab, 0x89, 0x99, 0x99, 0x99, - 0x88, 0x80, 0xca, 0xcc, 0x9b, 0x72, 0x47, 0x34, 0x32, 0x81, 0xa8, 0x9a, 0x8a, 0x21, 0x32, 0x82, - 0xdd, 0xbd, 0xac, 0x99, 0x00, 0x12, 0x11, 0x11, 0x00, 0x80, 0xa8, 0xec, 0xcc, 0xbc, 0xbc, 0xaa, - 0x99, 0x98, 0xa9, 0xbb, 0x09, 0x75, 0x44, 0x43, 0x23, 0x12, 0x00, 0x10, 0x31, 0x35, 0x34, 0x81, - 0xba, 0xbe, 0xab, 0x18, 0x43, 0x24, 0x12, 0xb8, 0xdc, 0xab, 0xab, 0xba, 0xaa, 0xa9, 0x99, 0x00, - 0x80, 0x80, 0xca, 0xbf, 0x8c, 0x72, 0x36, 0x35, 0x12, 0x81, 0xaa, 0x9a, 0x08, 0x32, 0x24, 0x90, - 0xdc, 0xac, 0x9b, 0x89, 0x01, 0x80, 0xca, 0xcb, 0x9c, 0x08, 0x12, 0xc8, 0xdd, 0xbc, 0xac, 0xa9, - 0x88, 0x89, 0x98, 0x99, 0x18, 0x55, 0x44, 0x24, 0x23, 0x12, 0x22, 0x42, 0x34, 0x34, 0x12, 0x90, - 0xdb, 0xbb, 0x9c, 0x21, 0x35, 0x23, 0x81, 0xda, 0xcb, 0xab, 0x9a, 0xbb, 0xbb, 0xac, 0x08, 0x33, - 0x33, 0x24, 0x90, 0xdb, 0xab, 0x72, 0x57, 0x43, 0x12, 0x80, 0xa9, 0xa9, 0x88, 0x21, 0x32, 0x92, - 0xfb, 0xbb, 0xaa, 0x89, 0x88, 0xda, 0xbd, 0xbd, 0xaa, 0x08, 0x12, 0xb8, 0xdf, 0xbc, 0xbb, 0x9a, - 0x89, 0x98, 0x99, 0x9b, 0x28, 0x47, 0x44, 0x33, 0x32, 0x22, 0x33, 0x44, 0x34, 0x25, 0x11, 0x99, - 0xba, 0xba, 0x89, 0x43, 0x35, 0x22, 0x90, 0xdb, 0xbc, 0xab, 0xbb, 0xbd, 0xac, 0x9a, 0x20, 0x34, - 0x25, 0x22, 0x81, 0xaa, 0x9a, 0x50, 0x56, 0x34, 0x23, 0x81, 0x98, 0xba, 0x9a, 0x09, 0x21, 0x12, - 0x88, 0xba, 0xbe, 0xbd, 0xcb, 0xcc, 0xbb, 0xcb, 0x9a, 0x00, 0x01, 0xfb, 0xcd, 0xcc, 0xab, 0x8a, - 0x09, 0x88, 0x99, 0xaa, 0x19, 0x73, 0x43, 0x34, 0x33, 0x33, 0x33, 0x44, 0x34, 0x25, 0x11, 0x88, - 0xaa, 0x89, 0x18, 0x21, 0x43, 0x22, 0x80, 0xdb, 0xbd, 0xbb, 0xdc, 0xbc, 0xbc, 0x99, 0x18, 0x43, - 0x34, 0x33, 0x13, 0x98, 0x89, 0x40, 0x47, 0x35, 0x33, 0x02, 0xa0, 0xba, 0xbc, 0xab, 0x09, 0x08, - 0x10, 0x01, 0xb8, 0xdd, 0xbc, 0xbd, 0xaa, 0x89, 0x00, 0x22, 0xa1, 0xef, 0xcc, 0xcb, 0xbb, 0x99, - 0x88, 0x90, 0xa9, 0xcb, 0x9a, 0x20, 0x44, 0x35, 0x34, 0x43, 0x33, 0x42, 0x43, 0x23, 0x13, 0x81, - 0x98, 0x88, 0x00, 0x10, 0x12, 0x22, 0x12, 0x98, 0xcb, 0xdc, 0xee, 0xcc, 0xac, 0x9b, 0x89, 0x31, - 0x53, 0x43, 0x23, 0x01, 0x98, 0x20, 0x54, 0x45, 0x33, 0x12, 0x90, 0xb9, 0xbc, 0xab, 0x89, 0x00, - 0x08, 0x99, 0xeb, 0xcc, 0xbb, 0xcb, 0x8a, 0x20, 0x43, 0x43, 0x81, 0xec, 0xcc, 0xbc, 0xbb, 0x8a, - 0x09, 0x98, 0xca, 0xbc, 0x9c, 0x09, 0x21, 0x44, 0x34, 0x24, 0x33, 0x32, 0x34, 0x34, 0x22, 0x12, - 0x10, 0x10, 0x08, 0x10, 0x00, 0x01, 0x00, 0x00, 0x01, 0xd0, 0xff, 0xcd, 0xcb, 0xbb, 0x9a, 0x08, - 0x33, 0x35, 0x34, 0x22, 0x01, 0x31, 0x54, 0x35, 0x34, 0x22, 0x00, 0xa9, 0xba, 0xbb, 0xa9, 0x99, - 0xb9, 0xdd, 0xdb, 0xbc, 0xbb, 0x9a, 0x08, 0x52, 0x34, 0x43, 0x02, 0xba, 0xbf, 0xbd, 0xbb, 0x9a, - 0x88, 0x99, 0xdb, 0xbc, 0xac, 0x99, 0x08, 0x31, 0x45, 0x34, 0x32, 0x32, 0x53, 0x43, 0x22, 0x12, - 0x10, 0x11, 0x00, 0x01, 0x00, 0x00, 0x21, 0x11, 0x12, 0xa0, 0xfd, 0xde, 0xbc, 0xbd, 0xab, 0x99, - 0x10, 0x33, 0x35, 0x23, 0x21, 0x42, 0x54, 0x53, 0x33, 0x23, 0x02, 0x80, 0xa9, 0x99, 0x99, 0xba, - 0xbd, 0xbe, 0xcc, 0xbc, 0xbb, 0xab, 0x09, 0x41, 0x44, 0x34, 0x22, 0x90, 0xca, 0xbd, 0xac, 0x9a, - 0x89, 0xa9, 0xdb, 0xbd, 0xbb, 0xab, 0x99, 0x18, 0x53, 0x44, 0x32, 0x33, 0x44, 0x43, 0x23, 0x13, - 0x12, 0x12, 0x00, 0x80, 0x89, 0x89, 0x21, 0x43, 0x34, 0x03, 0xc8, 0xde, 0xcd, 0xdb, 0xbb, 0xaa, - 0x88, 0x11, 0x23, 0x33, 0x33, 0x44, 0x54, 0x53, 0x34, 0x23, 0x23, 0x11, 0x01, 0x80, 0x89, 0xba, - 0xcc, 0xbd, 0xcc, 0xbc, 0xcb, 0xab, 0x9a, 0x19, 0x43, 0x34, 0x34, 0x12, 0x88, 0xba, 0xbc, 0xab, - 0xaa, 0xeb, 0xdc, 0xbb, 0xbc, 0xbb, 0xab, 0x9b, 0x09, 0x42, 0x34, 0x35, 0x34, 0x44, 0x32, 0x33, - 0x23, 0x22, 0x02, 0x81, 0x80, 0x99, 0x08, 0x63, 0x34, 0x23, 0xa0, 0xdc, 0xcd, 0xcc, 0xbb, 0xac, - 0x9a, 0x88, 0x10, 0x21, 0x32, 0x43, 0x53, 0x54, 0x34, 0x34, 0x43, 0x22, 0x12, 0x01, 0x88, 0x99, - 0xca, 0xdb, 0xcb, 0xbc, 0xbc, 0xac, 0xbb, 0xa9, 0x00, 0x43, 0x44, 0x23, 0x12, 0x80, 0x98, 0x98, - 0xa9, 0xdc, 0xcc, 0xcb, 0xbb, 0xbc, 0xbb, 0xac, 0xaa, 0x89, 0x10, 0x63, 0x53, 0x43, 0x32, 0x23, - 0x43, 0x32, 0x22, 0x12, 0x00, 0x80, 0x00, 0x73, 0x34, 0x14, 0x01, 0xa9, 0xcc, 0xbc, 0xcd, 0xcb, - 0xaa, 0x9b, 0x99, 0x00, 0x21, 0x12, 0x33, 0x55, 0x45, 0x34, 0x34, 0x42, 0x22, 0x12, 0x00, 0x89, - 0xaa, 0xcb, 0xbc, 0xbc, 0xdb, 0xbb, 0xcb, 0xbb, 0x9b, 0x18, 0x62, 0x33, 0x24, 0x22, 0x11, 0x11, - 0x90, 0xda, 0xdc, 0xbb, 0xcb, 0xca, 0xbb, 0xcb, 0xbb, 0xab, 0x89, 0x30, 0x54, 0x34, 0x23, 0x23, - 0x43, 0x43, 0x32, 0x23, 0x11, 0x11, 0x22, 0x44, 0x36, 0x34, 0x22, 0x00, 0xa9, 0xdb, 0xcd, 0xbd, - 0xcb, 0xab, 0xaa, 0x8a, 0x10, 0x11, 0x01, 0x31, 0x47, 0x45, 0x34, 0x43, 0x23, 0x23, 0x11, 0x90, - 0xa8, 0xcb, 0xbb, 0xcc, 0xcb, 0xbb, 0xbc, 0xbc, 0xab, 0x8a, 0x10, 0x44, 0x43, 0x32, 0x32, 0x32, - 0x02, 0xb8, 0xcd, 0xcc, 0xab, 0xcb, 0xbb, 0xbc, 0xac, 0xab, 0x99, 0x08, 0x42, 0x43, 0x23, 0x22, - 0x22, 0x34, 0x34, 0x33, 0x22, 0x32, 0x53, 0x45, 0x44, 0x24, 0x23, 0x12, 0x01, 0x98, 0xdb, 0xdc, - 0xbc, 0xad, 0xbb, 0xaa, 0x89, 0x08, 0x98, 0x80, 0x42, 0x56, 0x35, 0x34, 0x43, 0x22, 0x12, 0x01, - 0x80, 0x99, 0xbb, 0xbd, 0xbd, 0xcb, 0xca, 0xaa, 0xab, 0x99, 0x08, 0x31, 0x44, 0x33, 0x34, 0x32, - 0x22, 0x81, 0xb9, 0xcd, 0xbc, 0xad, 0xac, 0xcb, 0xaa, 0xaa, 0x9a, 0x88, 0x31, 0x33, 0x23, 0x02, - 0x11, 0x44, 0x35, 0x22, 0x88, 0x89, 0x31, 0x57, 0x45, 0x34, 0x33, 0x32, 0x22, 0x11, 0x88, 0xca, - 0xcd, 0xcd, 0xcb, 0xab, 0xaa, 0xa9, 0x99, 0xa9, 0x08, 0x73, 0x45, 0x34, 0x24, 0x33, 0x22, 0x21, - 0x11, 0x00, 0x98, 0xcc, 0xcc, 0xbc, 0xbb, 0xab, 0xaa, 0x99, 0x99, 0x00, 0x43, 0x44, 0x43, 0x23, - 0x23, 0x11, 0x80, 0xbb, 0xcc, 0xbd, 0xbd, 0xbc, 0xac, 0xaa, 0x89, 0x08, 0x00, 0x21, 0x11, 0x12, - 0x31, 0x42, 0x12, 0x90, 0xbc, 0xbd, 0x09, 0x54, 0x46, 0x44, 0x33, 0x24, 0x23, 0x22, 0x01, 0x98, - 0xba, 0xdd, 0xdb, 0xbc, 0xbb, 0xac, 0xab, 0x9a, 0x8a, 0x31, 0x56, 0x34, 0x34, 0x24, 0x23, 0x32, - 0x21, 0x12, 0x81, 0xb9, 0xce, 0xbc, 0xbc, 0xbb, 0xaa, 0x89, 0x89, 0x08, 0x21, 0x53, 0x34, 0x43, - 0x32, 0x12, 0x02, 0xa8, 0xca, 0xcc, 0xbd, 0xbd, 0xcb, 0xaa, 0x9a, 0x08, 0x00, 0x11, 0x00, 0x21, - 0x42, 0x33, 0x13, 0xda, 0xbe, 0xba, 0x99, 0x20, 0x55, 0x44, 0x43, 0x34, 0x33, 0x43, 0x22, 0x81, - 0x98, 0xca, 0xbc, 0xcd, 0xcb, 0xbb, 0xcb, 0xbb, 0x9a, 0x08, 0x53, 0x45, 0x43, 0x43, 0x23, 0x33, - 0x23, 0x23, 0x12, 0xa8, 0xbd, 0xbe, 0xcb, 0xbb, 0xbb, 0xba, 0x9a, 0x99, 0x11, 0x53, 0x34, 0x34, - 0x24, 0x21, 0x11, 0x80, 0x99, 0xda, 0xcc, 0xbd, 0xbc, 0xbb, 0x9a, 0x89, 0x08, 0x80, 0x00, 0x20, - 0x43, 0x25, 0x12, 0xca, 0xbd, 0xac, 0x88, 0x10, 0x11, 0x44, 0x54, 0x53, 0x43, 0x43, 0x22, 0x12, - 0x80, 0x99, 0xaa, 0xcc, 0xdb, 0xbc, 0xbc, 0xbc, 0xaa, 0x89, 0x30, 0x63, 0x34, 0x34, 0x24, 0x43, - 0x22, 0x23, 0x11, 0x88, 0xca, 0xcb, 0xcb, 0xbb, 0xcb, 0xcb, 0xaa, 0x9b, 0x08, 0x22, 0x34, 0x34, - 0x24, 0x23, 0x22, 0x11, 0x90, 0xdb, 0xdc, 0xcc, 0xbb, 0xbb, 0xaa, 0xa9, 0xa8, 0x99, 0x89, 0x31, - 0x54, 0x24, 0x02, 0xd9, 0xcc, 0xab, 0x0a, 0x10, 0x01, 0x11, 0x53, 0x46, 0x44, 0x34, 0x23, 0x13, - 0x01, 0x90, 0x88, 0x99, 0xcc, 0xcd, 0xcc, 0xba, 0xab, 0x99, 0x18, 0x32, 0x44, 0x35, 0x53, 0x33, - 0x34, 0x23, 0x12, 0x80, 0xaa, 0xbc, 0xbb, 0xbc, 0xdb, 0xcb, 0xac, 0xab, 0x89, 0x20, 0x42, 0x32, - 0x33, 0x34, 0x34, 0x33, 0x81, 0xda, 0xdc, 0xcb, 0xab, 0xbb, 0x9a, 0x9a, 0xba, 0xbb, 0xab, 0x19, - 0x54, 0x34, 0x12, 0xb9, 0xcf, 0xbb, 0x9a, 0x10, 0x12, 0x10, 0x20, 0x64, 0x46, 0x34, 0x24, 0x13, - 0x11, 0x80, 0x01, 0x01, 0xb8, 0xdd, 0xcd, 0xbb, 0xaa, 0x8a, 0x88, 0x21, 0x32, 0x35, 0x45, 0x34, - 0x34, 0x24, 0x22, 0x80, 0x99, 0xba, 0xbb, 0xab, 0xbc, 0xcc, 0xbc, 0xbb, 0xaa, 0x18, 0x21, 0x23, - 0x32, 0x54, 0x44, 0x34, 0x02, 0xa8, 0xcd, 0xcb, 0xaa, 0xaa, 0x99, 0xa9, 0xaa, 0xbc, 0xaa, 0x19, - 0x42, 0x43, 0x02, 0xc8, 0xdc, 0xbb, 0xbb, 0x88, 0x00, 0x88, 0x08, 0x72, 0x56, 0x34, 0x34, 0x32, - 0x12, 0x12, 0x22, 0x21, 0x90, 0xdd, 0xcd, 0xcb, 0xaa, 0x89, 0x08, 0x10, 0x01, 0x31, 0x45, 0x35, - 0x35, 0x33, 0x23, 0x11, 0x98, 0xa9, 0xbb, 0xdb, 0xcb, 0xcb, 0xcb, 0xbb, 0xaa, 0x99, 0x00, 0x11, - 0x10, 0x62, 0x54, 0x44, 0x12, 0x91, 0xcb, 0xbc, 0xba, 0x9a, 0x9a, 0xba, 0xdb, 0xaa, 0x99, 0x08, - 0x32, 0x23, 0xa1, 0xdb, 0xcc, 0xbb, 0xbc, 0xaa, 0xba, 0xcc, 0x89, 0x41, 0x56, 0x53, 0x43, 0x32, - 0x33, 0x32, 0x33, 0x24, 0x01, 0xca, 0xce, 0xbc, 0xbb, 0xa9, 0x88, 0x80, 0x00, 0x20, 0x55, 0x44, - 0x43, 0x24, 0x22, 0x12, 0x01, 0x88, 0x98, 0xcb, 0xdb, 0xcb, 0xca, 0xaa, 0xaa, 0x99, 0x8a, 0x89, - 0x00, 0x32, 0x37, 0x45, 0x23, 0x02, 0xa9, 0xcd, 0xba, 0xba, 0xaa, 0xbb, 0xbc, 0xbb, 0x89, 0x21, - 0x32, 0x13, 0xd9, 0xbe, 0xab, 0x9a, 0x99, 0xcb, 0xcc, 0xbc, 0x9a, 0x20, 0x73, 0x53, 0x34, 0x34, - 0x24, 0x43, 0x32, 0x32, 0x02, 0xa0, 0xdc, 0xdb, 0xba, 0xab, 0xaa, 0x9a, 0x8a, 0x28, 0x64, 0x44, - 0x34, 0x43, 0x22, 0x22, 0x12, 0x12, 0x00, 0xa9, 0xbd, 0xbd, 0xbc, 0xbb, 0xbb, 0xbb, 0xbc, 0xaa, - 0x89, 0x31, 0x45, 0x34, 0x25, 0x23, 0x80, 0xb9, 0xdb, 0xbb, 0xbc, 0xcc, 0xbb, 0xab, 0x88, 0x11, - 0x23, 0x80, 0xeb, 0xbc, 0xac, 0x09, 0x11, 0x80, 0xda, 0xbc, 0xcb, 0x99, 0x21, 0x63, 0x53, 0x53, - 0x43, 0x53, 0x23, 0x33, 0x12, 0x00, 0xa8, 0xca, 0xcc, 0xcb, 0xcb, 0xab, 0xab, 0x89, 0x31, 0x47, - 0x43, 0x33, 0x33, 0x32, 0x43, 0x33, 0x24, 0x01, 0xa8, 0xcc, 0xcc, 0xbb, 0xbb, 0xcb, 0xdb, 0xab, - 0x9b, 0x09, 0x42, 0x33, 0x34, 0x33, 0x14, 0x12, 0x80, 0xb9, 0xed, 0xdb, 0xcb, 0xaa, 0x88, 0x00, - 0x11, 0x81, 0xba, 0xcd, 0xaa, 0x89, 0x21, 0x01, 0x98, 0xcc, 0xbc, 0xab, 0x89, 0x21, 0x44, 0x44, - 0x54, 0x44, 0x43, 0x23, 0x21, 0x10, 0x10, 0x00, 0xa8, 0xfb, 0xdb, 0xcb, 0xab, 0x9a, 0x10, 0x43, - 0x44, 0x33, 0x32, 0x33, 0x44, 0x43, 0x43, 0x12, 0x01, 0x99, 0xdb, 0xcb, 0xcb, 0xbb, 0xcc, 0xbb, - 0xbb, 0x9a, 0x00, 0x21, 0x43, 0x34, 0x34, 0x34, 0x23, 0x82, 0xda, 0xbd, 0xad, 0x9b, 0x8a, 0x88, - 0x80, 0x98, 0xca, 0xcb, 0xab, 0x8a, 0x10, 0x11, 0x01, 0xb9, 0xbc, 0xcc, 0xaa, 0x8a, 0x31, 0x43, - 0x57, 0x54, 0x34, 0x24, 0x23, 0x12, 0x32, 0x32, 0x12, 0xc9, 0xdd, 0xbc, 0xac, 0x9b, 0x08, 0x21, - 0x32, 0x23, 0x32, 0x45, 0x45, 0x53, 0x33, 0x22, 0x02, 0x80, 0xa9, 0xcb, 0xcc, 0xcb, 0xcb, 0xcb, - 0xbb, 0xba, 0xa9, 0x98, 0x10, 0x42, 0x45, 0x43, 0x33, 0x13, 0x98, 0xca, 0xbc, 0xbb, 0xba, 0xaa, - 0xcb, 0xab, 0xcb, 0xbb, 0xac, 0xab, 0x88, 0x11, 0x22, 0x01, 0xd9, 0xbc, 0xbb, 0x08, 0x63, 0x24, - 0x33, 0x55, 0x63, 0x53, 0x33, 0x34, 0x33, 0x43, 0x12, 0x98, 0xda, 0xcc, 0xcb, 0xaa, 0x89, 0x00, - 0x00, 0x90, 0x88, 0x51, 0x46, 0x44, 0x43, 0x23, 0x22, 0x01, 0x90, 0x98, 0xcb, 0xcc, 0xbc, 0xcb, - 0xbb, 0xac, 0xbb, 0xab, 0x99, 0x10, 0x44, 0x44, 0x43, 0x22, 0x01, 0x80, 0x99, 0x9a, 0xaa, 0xbc, - 0xbd, 0xbc, 0xac, 0xba, 0xaa, 0xaa, 0x9a, 0x88, 0x20, 0x23, 0x01, 0xca, 0xab, 0x30, 0x57, 0x34, - 0x22, 0x00, 0x21, 0x64, 0x45, 0x53, 0x33, 0x24, 0x22, 0x81, 0xa8, 0xdb, 0xdb, 0xaa, 0x9a, 0x89, - 0x88, 0xa9, 0xbb, 0x9b, 0x73, 0x47, 0x34, 0x34, 0x32, 0x21, 0x01, 0x90, 0xa9, 0xbc, 0xbd, 0xbc, - 0xbc, 0xcb, 0xbb, 0xcc, 0x9a, 0x89, 0x20, 0x52, 0x33, 0x34, 0x22, 0x12, 0x12, 0x01, 0x80, 0xdb, - 0xbd, 0xcc, 0xbb, 0xbb, 0xbb, 0xbb, 0xab, 0x99, 0x10, 0x53, 0x12, 0x81, 0xaa, 0x29, 0x66, 0x34, - 0x33, 0x81, 0x98, 0x19, 0x73, 0x54, 0x34, 0x24, 0x22, 0x12, 0x00, 0xa9, 0xbc, 0xbc, 0xba, 0xaa, - 0x9a, 0xaa, 0xec, 0xbb, 0x8a, 0x73, 0x45, 0x34, 0x43, 0x22, 0x12, 0x00, 0xa8, 0xb9, 0xdb, 0xbb, - 0xbd, 0xcb, 0xbc, 0xbc, 0xbc, 0x9a, 0x89, 0x21, 0x53, 0x33, 0x34, 0x33, 0x24, 0x23, 0x02, 0xa0, - 0xdb, 0xcc, 0xbc, 0xbb, 0xac, 0xbb, 0xbb, 0x99, 0x18, 0x32, 0x33, 0x12, 0x80, 0x20, 0x66, 0x44, - 0x23, 0x12, 0x98, 0x9a, 0x09, 0x62, 0x45, 0x43, 0x24, 0x22, 0x12, 0x00, 0xaa, 0xca, 0xab, 0xbb, - 0xab, 0xbb, 0xdd, 0xcc, 0xbb, 0x0a, 0x63, 0x45, 0x24, 0x24, 0x22, 0x11, 0x88, 0x99, 0xa9, 0xaa, - 0xdb, 0xcc, 0xcb, 0xcc, 0xbb, 0xac, 0x8a, 0x88, 0x21, 0x33, 0x44, 0x34, 0x24, 0x33, 0x22, 0x01, - 0xa8, 0xdb, 0xbc, 0xbd, 0xbb, 0xdb, 0xba, 0x9a, 0x88, 0x11, 0x22, 0x11, 0x00, 0x31, 0x55, 0x35, - 0x34, 0x12, 0x90, 0xa9, 0xaa, 0x88, 0x42, 0x55, 0x53, 0x32, 0x33, 0x21, 0x88, 0xa9, 0xba, 0xba, - 0xac, 0xab, 0xfb, 0xdc, 0xdb, 0xaa, 0x08, 0x53, 0x44, 0x43, 0x33, 0x22, 0x10, 0x98, 0x88, 0x99, - 0xa9, 0xcd, 0xdc, 0xcb, 0xbc, 0xbc, 0x9a, 0x8a, 0x00, 0x11, 0x43, 0x44, 0x43, 0x33, 0x33, 0x13, - 0x01, 0xa9, 0xcc, 0xbd, 0xbc, 0xcb, 0xbb, 0xab, 0x8a, 0x10, 0x11, 0x01, 0x01, 0x31, 0x46, 0x45, - 0x33, 0x23, 0x81, 0xa9, 0xbb, 0xaa, 0x08, 0x63, 0x45, 0x43, 0x33, 0x23, 0x11, 0x90, 0x99, 0x99, - 0x9a, 0x99, 0xdb, 0xcf, 0xbd, 0xad, 0x9a, 0x10, 0x53, 0x34, 0x34, 0x33, 0x22, 0x01, 0x00, 0x10, - 0x80, 0xc9, 0xbf, 0xbe, 0xbc, 0xbc, 0xab, 0x9b, 0x8a, 0x08, 0x21, 0x45, 0x53, 0x24, 0x23, 0x23, - 0x21, 0x80, 0xb9, 0xbd, 0xbd, 0xdb, 0xbb, 0xbb, 0x9b, 0x88, 0x00, 0x01, 0x10, 0x41, 0x45, 0x44, - 0x43, 0x12, 0x81, 0x98, 0xaa, 0xaa, 0x99, 0x20, 0x73, 0x43, 0x34, 0x34, 0x22, 0x01, 0x00, 0x08, - 0x88, 0x80, 0xa8, 0xdf, 0xdc, 0xcb, 0xab, 0x89, 0x31, 0x63, 0x43, 0x33, 0x23, 0x12, 0x12, 0x22, - 0x22, 0xa1, 0xed, 0xcc, 0xbc, 0xbc, 0xcb, 0xaa, 0x9b, 0x89, 0x18, 0x42, 0x44, 0x34, 0x24, 0x32, - 0x22, 0x01, 0x88, 0xca, 0xbc, 0xcc, 0xcb, 0xbb, 0xab, 0x99, 0x09, 0x08, 0x00, 0x42, 0x44, 0x35, - 0x34, 0x22, 0x81, 0x98, 0xba, 0xab, 0x9a, 0x18, 0x53, 0x45, 0x53, 0x43, 0x32, 0x12, 0x02, 0x01, - 0x10, 0x10, 0x80, 0xfc, 0xcd, 0xbc, 0xbb, 0xaa, 0x08, 0x42, 0x34, 0x44, 0x22, 0x23, 0x32, 0x33, - 0x33, 0x82, 0xd9, 0xbe, 0xcd, 0xcb, 0xbb, 0xac, 0xbb, 0xaa, 0x09, 0x30, 0x54, 0x43, 0x24, 0x33, - 0x23, 0x12, 0x81, 0xa9, 0xda, 0xdb, 0xbc, 0xbc, 0xba, 0xba, 0x99, 0x99, 0x08, 0x42, 0x44, 0x44, - 0x43, 0x12, 0x81, 0x98, 0xaa, 0xaa, 0x99, 0x10, 0x42, 0x34, 0x45, 0x34, 0x33, 0x24, 0x22, 0x21, - 0x21, 0x11, 0x01, 0xfa, 0xdd, 0xbc, 0xcb, 0x9a, 0x89, 0x10, 0x42, 0x43, 0x33, 0x43, 0x33, 0x34, - 0x24, 0x11, 0x98, 0xdb, 0xcc, 0xbc, 0xbc, 0xbc, 0xbb, 0xac, 0x9a, 0x18, 0x32, 0x45, 0x43, 0x33, - 0x33, 0x22, 0x12, 0x80, 0xa8, 0xdc, 0xcc, 0xbb, 0xac, 0xbb, 0xaa, 0xaa, 0x8a, 0x30, 0x54, 0x35, - 0x34, 0x22, 0x01, 0x98, 0xaa, 0x9a, 0x8a, 0x10, 0x31, 0x53, 0x54, 0x34, 0x34, 0x43, 0x32, 0x23, - 0x32, 0x33, 0x22, 0xb0, 0xff, 0xbc, 0xcb, 0xba, 0x99, 0x09, 0x20, 0x42, 0x33, 0x34, 0x44, 0x43, - 0x33, 0x22, 0x80, 0xa8, 0xcc, 0xbd, 0xbd, 0xbc, 0xbc, 0xac, 0xaa, 0x89, 0x11, 0x42, 0x43, 0x24, - 0x33, 0x24, 0x22, 0x12, 0x81, 0xb9, 0xce, 0xcb, 0xbb, 0xbb, 0xbb, 0xbb, 0xab, 0x18, 0x73, 0x34, - 0x25, 0x23, 0x01, 0x80, 0x98, 0x89, 0x99, 0x88, 0x88, 0x21, 0x65, 0x44, 0x43, 0x33, 0x33, 0x43, - 0x32, 0x34, 0x43, 0x02, 0xea, 0xcc, 0xbc, 0xab, 0xaa, 0x9a, 0x88, 0x10, 0x33, 0x53, 0x35, 0x44, - 0x23, 0x23, 0x11, 0x00, 0x98, 0xdc, 0xcc, 0xbd, 0xbc, 0xbb, 0xab, 0x9a, 0x08, 0x20, 0x42, 0x34, - 0x35, 0x34, 0x33, 0x24, 0x01, 0xa8, 0xdb, 0xbc, 0xbb, 0xac, 0xbb, 0xba, 0xab, 0x89, 0x31, 0x45, - 0x44, 0x32, 0x22, 0x11, 0x00, 0x88, 0xa9, 0xca, 0xaa, 0x19, 0x65, 0x44, 0x24, 0x23, 0x23, 0x22, - 0x34, 0x34, 0x35, 0x13, 0xa0, 0xdd, 0xcb, 0xbb, 0xab, 0xaa, 0xa9, 0x88, 0x10, 0x42, 0x35, 0x44, - 0x33, 0x32, 0x33, 0x33, 0x13, 0xd9, 0xdd, 0xbd, 0xbc, 0xac, 0x9b, 0x9a, 0x99, 0x98, 0x00, 0x31, - 0x36, 0x45, 0x33, 0x33, 0x13, 0x98, 0xca, 0xbc, 0xbc, 0xab, 0xbb, 0xbb, 0xcb, 0x9a, 0x09, 0x31, - 0x35, 0x45, 0x33, 0x33, 0x23, 0x82, 0xa9, 0xbd, 0xbc, 0x19, 0x72, 0x53, 0x33, 0x32, 0x22, 0x22, - 0x44, 0x44, 0x34, 0x33, 0x81, 0xcb, 0xcd, 0xba, 0xbb, 0xaa, 0xaa, 0xaa, 0x89, 0x28, 0x53, 0x34, - 0x34, 0x43, 0x34, 0x24, 0x22, 0x80, 0xeb, 0xdc, 0xbb, 0xbc, 0xaa, 0xab, 0xaa, 0xbb, 0xaa, 0x19, - 0x54, 0x45, 0x34, 0x33, 0x12, 0x81, 0xaa, 0xca, 0xbb, 0xac, 0xab, 0xbb, 0xcc, 0xba, 0x9a, 0x8a, - 0x20, 0x54, 0x44, 0x24, 0x23, 0x02, 0x90, 0xba, 0xac, 0x0a, 0x42, 0x36, 0x43, 0x22, 0x22, 0x21, - 0x44, 0x35, 0x35, 0x23, 0x02, 0xb8, 0xeb, 0xbb, 0xbc, 0xba, 0xba, 0xbb, 0xbb, 0x89, 0x21, 0x34, - 0x44, 0x43, 0x44, 0x43, 0x23, 0x02, 0xa8, 0xcd, 0xcc, 0xcb, 0xba, 0xbb, 0xbb, 0xbd, 0xba, 0x89, - 0x31, 0x37, 0x35, 0x23, 0x13, 0x01, 0x98, 0xa8, 0x99, 0xbb, 0xcc, 0xdb, 0xbb, 0xbc, 0xba, 0x9a, - 0x89, 0x41, 0x54, 0x34, 0x43, 0x12, 0x81, 0x99, 0xaa, 0x88, 0x32, 0x45, 0x24, 0x23, 0x22, 0x33, - 0x55, 0x44, 0x43, 0x23, 0x02, 0x80, 0xaa, 0xbc, 0xbc, 0xcb, 0xcb, 0xbb, 0xac, 0x9a, 0x09, 0x10, - 0x10, 0x22, 0x45, 0x35, 0x35, 0x32, 0x01, 0xc9, 0xeb, 0xbb, 0xbc, 0xcb, 0xdb, 0xbb, 0xcb, 0x99, - 0x18, 0x43, 0x44, 0x32, 0x32, 0x12, 0x12, 0x02, 0x81, 0xb8, 0xdc, 0xcb, 0xac, 0xbb, 0xba, 0xbb, - 0xbb, 0x8b, 0x42, 0x47, 0x43, 0x23, 0x02, 0x80, 0x98, 0x08, 0x21, 0x33, 0x35, 0x43, 0x43, 0x43, - 0x35, 0x45, 0x33, 0x33, 0x12, 0x10, 0x08, 0xa9, 0xdc, 0xdb, 0xcb, 0xbb, 0xac, 0x9b, 0x9a, 0x98, - 0x99, 0x99, 0x42, 0x46, 0x35, 0x33, 0x22, 0x90, 0xcb, 0xdb, 0xbb, 0xbd, 0xcc, 0xbc, 0xbb, 0xaa, - 0x89, 0x20, 0x53, 0x43, 0x43, 0x33, 0x33, 0x23, 0x12, 0x90, 0xcb, 0xbc, 0xbc, 0xbb, 0xdb, 0xdb, - 0xbb, 0xbb, 0x89, 0x43, 0x36, 0x24, 0x13, 0x11, 0x08, 0x08, 0x20, 0x31, 0x34, 0x34, 0x53, 0x33, - 0x45, 0x43, 0x34, 0x32, 0x32, 0x32, 0x22, 0x81, 0xda, 0xdc, 0xcb, 0xbb, 0xac, 0xab, 0xbb, 0xca, - 0xcb, 0xba, 0x19, 0x63, 0x45, 0x23, 0x23, 0x00, 0x88, 0xa9, 0xcb, 0xbd, 0xcd, 0xcb, 0xcb, 0xba, - 0xaa, 0x89, 0x18, 0x42, 0x34, 0x35, 0x43, 0x22, 0x02, 0x81, 0x80, 0x89, 0xa9, 0xba, 0xdc, 0xdc, - 0xcb, 0xab, 0x9b, 0x08, 0x43, 0x34, 0x23, 0x13, 0x11, 0x11, 0x21, 0x44, 0x43, 0x43, 0x33, 0x24, - 0x33, 0x34, 0x34, 0x35, 0x43, 0x42, 0x22, 0x01, 0xa8, 0xdb, 0xbb, 0xac, 0xac, 0xcb, 0xbc, 0xbc, - 0xbc, 0xbb, 0x9a, 0x20, 0x46, 0x43, 0x32, 0x11, 0x00, 0x10, 0x98, 0xcb, 0xbd, 0xbe, 0xbc, 0xbc, - 0xcb, 0xab, 0x8a, 0x18, 0x52, 0x43, 0x34, 0x23, 0x22, 0x21, 0x11, 0x21, 0x12, 0x80, 0xeb, 0xcd, - 0xcc, 0xbb, 0xbb, 0x8a, 0x10, 0x42, 0x33, 0x33, 0x23, 0x22, 0x43, 0x44, 0x43, 0x34, 0x43, 0x23, - 0x13, 0x22, 0x31, 0x63, 0x53, 0x33, 0x24, 0x12, 0x98, 0xaa, 0xbb, 0xba, 0xcb, 0xec, 0xcc, 0xcc, - 0xbb, 0xbb, 0x9c, 0x89, 0x20, 0x44, 0x33, 0x23, 0x33, 0x32, 0x13, 0x90, 0xcc, 0xcd, 0xeb, 0xcb, - 0xdb, 0xba, 0xab, 0x89, 0x10, 0x43, 0x44, 0x32, 0x32, 0x22, 0x33, 0x43, 0x33, 0x13, 0xa8, 0xdd, - 0xcc, 0xbc, 0xbb, 0xab, 0x8a, 0x18, 0x32, 0x33, 0x34, 0x33, 0x43, 0x34, 0x36, 0x34, 0x43, 0x22, - 0x22, 0x01, 0x10, 0x10, 0x43, 0x35, 0x43, 0x12, 0x00, 0x99, 0x08, 0x11, 0x81, 0xfb, 0xde, 0xdb, - 0xcb, 0xbb, 0xbb, 0x9b, 0x0a, 0x31, 0x34, 0x35, 0x43, 0x33, 0x33, 0x12, 0x88, 0xca, 0xcc, 0xcd, - 0xbc, 0xbd, 0xbb, 0xab, 0x89, 0x20, 0x34, 0x34, 0x33, 0x43, 0x34, 0x34, 0x43, 0x22, 0x81, 0xb8, - 0xdc, 0xbc, 0xcc, 0xaa, 0xaa, 0x89, 0x08, 0x21, 0x21, 0x33, 0x43, 0x34, 0x45, 0x43, 0x24, 0x32, - 0x21, 0x10, 0x08, 0x00, 0x20, 0x32, 0x34, 0x23, 0x01, 0x88, 0x31, 0x55, 0x23, 0x91, 0xfb, 0xbf, - 0xcc, 0xcb, 0xbb, 0xab, 0xaa, 0x08, 0x21, 0x53, 0x53, 0x42, 0x22, 0x23, 0x12, 0x80, 0x99, 0xdc, - 0xcd, 0xdb, 0xcb, 0xaa, 0x9a, 0x09, 0x20, 0x22, 0x43, 0x43, 0x34, 0x34, 0x25, 0x23, 0x11, 0x80, - 0xba, 0xcd, 0xbc, 0xbc, 0xbb, 0xaa, 0x99, 0x00, 0x20, 0x22, 0x34, 0x44, 0x44, 0x53, 0x32, 0x33, - 0x23, 0x11, 0x10, 0x80, 0x01, 0x10, 0x10, 0x12, 0x21, 0x10, 0x63, 0x45, 0x24, 0x13, 0xa0, 0xce, - 0xcd, 0xbc, 0xcb, 0xab, 0xab, 0x8a, 0x09, 0x21, 0x43, 0x44, 0x43, 0x33, 0x14, 0x12, 0x80, 0xb9, - 0xcc, 0xcd, 0xbc, 0xbc, 0xab, 0x9a, 0x09, 0x10, 0x31, 0x53, 0x44, 0x43, 0x34, 0x33, 0x23, 0x02, - 0x98, 0xcc, 0xcc, 0xcb, 0xbb, 0xab, 0xab, 0xa9, 0x88, 0x11, 0x52, 0x53, 0x53, 0x43, 0x43, 0x32, - 0x33, 0x22, 0x12, 0x00, 0x01, 0x88, 0x99, 0x99, 0x99, 0x80, 0x32, 0x67, 0x43, 0x33, 0x02, 0xc9, - 0xdd, 0xbc, 0xbc, 0xac, 0xbb, 0xba, 0x99, 0x89, 0x10, 0x43, 0x45, 0x34, 0x33, 0x23, 0x02, 0x80, - 0xba, 0xdd, 0xcc, 0xcb, 0xcb, 0xaa, 0xaa, 0x99, 0x80, 0x31, 0x63, 0x44, 0x24, 0x24, 0x22, 0x12, - 0x01, 0xa9, 0xcc, 0xcb, 0xcb, 0xbb, 0xbb, 0xba, 0x9b, 0x89, 0x21, 0x54, 0x34, 0x35, 0x43, 0x33, - 0x34, 0x33, 0x23, 0x11, 0x01, 0x90, 0x99, 0xbb, 0xab, 0x9a, 0x08, 0x54, 0x46, 0x43, 0x22, 0x90, - 0xeb, 0xdb, 0xcb, 0xbb, 0xac, 0xbb, 0xcb, 0xaa, 0x89, 0x18, 0x44, 0x44, 0x33, 0x24, 0x12, 0x00, - 0x90, 0xa9, 0xeb, 0xdb, 0xbc, 0xbc, 0xbb, 0xba, 0xaa, 0x08, 0x31, 0x56, 0x53, 0x33, 0x33, 0x33, - 0x12, 0x90, 0xca, 0xcc, 0xcb, 0xcb, 0xbb, 0xbb, 0xbc, 0x9a, 0x08, 0x31, 0x35, 0x35, 0x34, 0x43, - 0x43, 0x24, 0x33, 0x22, 0x12, 0x80, 0xa8, 0xaa, 0xbb, 0xaa, 0x8a, 0x20, 0x46, 0x35, 0x24, 0x01, - 0xc9, 0xdb, 0xbc, 0xbb, 0xbc, 0xcb, 0xdb, 0xbb, 0xba, 0x8a, 0x30, 0x45, 0x53, 0x32, 0x32, 0x11, - 0x01, 0x80, 0xa8, 0xda, 0xdc, 0xdb, 0xcb, 0xbb, 0xbb, 0xaa, 0x08, 0x42, 0x45, 0x43, 0x24, 0x23, - 0x22, 0x01, 0x80, 0xb9, 0xbd, 0xcc, 0xcb, 0xbb, 0xac, 0xab, 0x99, 0x00, 0x32, 0x44, 0x34, 0x53, - 0x33, 0x35, 0x34, 0x24, 0x12, 0x01, 0x90, 0xa9, 0xaa, 0x9a, 0x8a, 0x09, 0x31, 0x54, 0x43, 0x13, - 0x90, 0xeb, 0xbc, 0xcb, 0xbb, 0xcb, 0xcc, 0xdb, 0xbb, 0xba, 0x09, 0x31, 0x54, 0x33, 0x23, 0x33, - 0x32, 0x22, 0x02, 0xa0, 0xdc, 0xcd, 0xcc, 0xbc, 0xba, 0xbb, 0x99, 0x18, 0x43, 0x54, 0x33, 0x34, - 0x23, 0x13, 0x12, 0x80, 0xb9, 0xcd, 0xbd, 0xbc, 0xcb, 0xab, 0x9a, 0x88, 0x18, 0x21, 0x34, 0x35, - 0x44, 0x34, 0x35, 0x24, 0x23, 0x22, 0x00, 0x99, 0xa9, 0xaa, 0x9a, 0x99, 0x10, 0x41, 0x33, 0x33, - 0x81, 0xeb, 0xcd, 0xbb, 0xac, 0xba, 0xdc, 0xbc, 0xbd, 0xbc, 0x9a, 0x08, 0x31, 0x43, 0x23, 0x33, - 0x43, 0x44, 0x22, 0x12, 0x98, 0xdb, 0xcd, 0xcb, 0xbc, 0xba, 0xba, 0x99, 0x00, 0x43, 0x35, 0x34, - 0x24, 0x23, 0x22, 0x12, 0x00, 0xb9, 0xdd, 0xbc, 0xad, 0xab, 0x9b, 0x8a, 0x89, 0x00, 0x00, 0x42, - 0x54, 0x44, 0x44, 0x33, 0x34, 0x23, 0x12, 0x80, 0x99, 0x99, 0x99, 0x89, 0x08, 0x00, 0x80, 0x01, - 0x88, 0xb9, 0xde, 0xbc, 0xac, 0xab, 0xcb, 0xec, 0xdb, 0xcb, 0xaa, 0x9a, 0x00, 0x21, 0x22, 0x21, - 0x53, 0x44, 0x34, 0x33, 0x01, 0xb8, 0xcc, 0xbd, 0xdb, 0xba, 0xbb, 0xbb, 0x99, 0x18, 0x43, 0x35, - 0x44, 0x32, 0x33, 0x23, 0x22, 0x82, 0xc9, 0xce, 0xdb, 0xab, 0xab, 0x9a, 0x99, 0x98, 0x99, 0x8a, - 0x41, 0x56, 0x44, 0x34, 0x34, 0x33, 0x32, 0x11, 0x00, 0x98, 0x89, 0x88, 0x08, 0x01, 0x88, 0xba, - 0xac, 0xcb, 0xba, 0xbd, 0xbd, 0xbb, 0xba, 0xfb, 0xcc, 0xdb, 0xbb, 0xbb, 0x99, 0x08, 0x88, 0x80, - 0x31, 0x57, 0x34, 0x34, 0x22, 0x80, 0xb9, 0xcc, 0xbb, 0xad, 0xcb, 0xbb, 0xba, 0x9a, 0x18, 0x41, - 0x53, 0x43, 0x43, 0x32, 0x33, 0x22, 0x82, 0xea, 0xcc, 0xcb, 0xba, 0xaa, 0x99, 0x98, 0x99, 0xcb, - 0x9b, 0x41, 0x47, 0x44, 0x43, 0x43, 0x32, 0x12, 0x12, 0x00, 0x08, 0x08, 0x20, 0x21, 0x02, 0xa9, - 0xdc, 0xbb, 0xbb, 0xac, 0xcb, 0xbb, 0xbb, 0xdb, 0xcc, 0xbc, 0xad, 0xab, 0xaa, 0x99, 0x99, 0xba, - 0x9b, 0x51, 0x47, 0x34, 0x24, 0x12, 0x98, 0xab, 0xbc, 0xbb, 0xbc, 0xbc, 0xcb, 0xbb, 0xab, 0x88, - 0x32, 0x44, 0x53, 0x33, 0x24, 0x23, 0x12, 0x90, 0xdb, 0xbd, 0xbc, 0xab, 0x99, 0x89, 0x90, 0xeb, - 0xac, 0x0a, 0x42, 0x46, 0x53, 0x43, 0x32, 0x32, 0x22, 0x22, 0x22, 0x11, 0x31, 0x43, 0x24, 0x01, - 0xb9, 0xcd, 0xbb, 0xac, 0xab, 0xbb, 0xab, 0xdb, 0xcc, 0xbb, 0xbd, 0xaa, 0xaa, 0x89, 0xa9, 0xdb, - 0xbb, 0x8a, 0x62, 0x55, 0x43, 0x23, 0x81, 0xa9, 0xab, 0xcb, 0xba, 0xcb, 0xbc, 0xac, 0xcb, 0xba, - 0x89, 0x10, 0x33, 0x36, 0x24, 0x23, 0x22, 0x00, 0x99, 0xcb, 0xdc, 0xac, 0x9a, 0x89, 0x88, 0xb9, - 0xbe, 0x9b, 0x31, 0x55, 0x54, 0x33, 0x34, 0x23, 0x33, 0x33, 0x25, 0x43, 0x22, 0x32, 0x23, 0x23, - 0x00, 0xc9, 0xdc, 0xcb, 0xab, 0xbb, 0xab, 0xba, 0xce, 0xcb, 0xbb, 0xac, 0x88, 0x08, 0x88, 0xb9, - 0xcc, 0xab, 0x19, 0x64, 0x35, 0x33, 0x12, 0xa9, 0xbb, 0xac, 0x9a, 0xaa, 0xcc, 0xbc, 0xbc, 0xbb, - 0x9c, 0x09, 0x10, 0x33, 0x35, 0x23, 0x02, 0x80, 0x89, 0x89, 0xfb, 0xbd, 0xbb, 0x9a, 0x88, 0x90, - 0xca, 0x9a, 0x51, 0x55, 0x63, 0x43, 0x33, 0x33, 0x32, 0x53, 0x34, 0x25, 0x33, 0x33, 0x32, 0x22, - 0x12, 0x81, 0xc9, 0xcc, 0xac, 0xba, 0xbb, 0xbb, 0xdd, 0xcc, 0xbb, 0xbb, 0x89, 0x08, 0x80, 0xa8, - 0xdc, 0xbb, 0x09, 0x52, 0x45, 0x24, 0x02, 0xa0, 0xaa, 0x9b, 0x99, 0x98, 0xcb, 0xcc, 0xcc, 0xbb, - 0xac, 0x9a, 0x00, 0x10, 0x42, 0x23, 0x01, 0x89, 0x89, 0x00, 0x91, 0xde, 0xbc, 0xab, 0x9a, 0x99, - 0x8a, 0x51, 0x45, 0x34, 0x35, 0x34, 0x33, 0x33, 0x12, 0x53, 0x44, 0x43, 0x24, 0x33, 0x22, 0x22, - 0x22, 0x12, 0x90, 0xcb, 0xaa, 0xab, 0xba, 0xbc, 0xef, 0xbc, 0xbc, 0xbb, 0x99, 0x88, 0x98, 0xb8, - 0xdc, 0xbb, 0x8a, 0x31, 0x56, 0x43, 0x02, 0x80, 0xaa, 0x8a, 0x08, 0x81, 0xb8, 0xbe, 0xcd, 0xcb, - 0xac, 0x9b, 0x99, 0x08, 0x20, 0x23, 0x12, 0x99, 0x8a, 0x40, 0x24, 0xa8, 0xbd, 0xcb, 0xbb, 0xbc, - 0x9b, 0x38, 0x57, 0x43, 0x43, 0x43, 0x24, 0x12, 0x11, 0x21, 0x35, 0x34, 0x34, 0x24, 0x22, 0x12, - 0x22, 0x12, 0x90, 0xab, 0x8a, 0x98, 0x99, 0xca, 0xdf, 0xcd, 0xcb, 0xab, 0x89, 0x08, 0x98, 0xb9, - 0xdd, 0xbb, 0x9a, 0x28, 0x45, 0x43, 0x12, 0x88, 0x99, 0x99, 0x10, 0x11, 0x80, 0xdb, 0xdd, 0xcc, - 0xac, 0xab, 0x9a, 0x99, 0x80, 0x21, 0x02, 0x98, 0x89, 0x51, 0x34, 0x12, 0x90, 0x98, 0xda, 0xbc, - 0xbd, 0x8a, 0x31, 0x35, 0x45, 0x34, 0x24, 0x23, 0x12, 0x32, 0x45, 0x44, 0x33, 0x24, 0x12, 0x01, - 0x00, 0x00, 0x98, 0x9a, 0x89, 0x80, 0x88, 0xcb, 0xdd, 0xcd, 0xcb, 0xaa, 0x89, 0x00, 0x00, 0xa8, - 0xce, 0xbd, 0xba, 0x08, 0x52, 0x24, 0x12, 0x90, 0xaa, 0x99, 0x20, 0x23, 0x33, 0x91, 0xed, 0xce, - 0xcb, 0xab, 0xaa, 0xaa, 0x89, 0x08, 0x80, 0x98, 0x09, 0x52, 0x34, 0x33, 0x33, 0x25, 0x02, 0xb9, - 0xde, 0xab, 0x89, 0x28, 0x42, 0x44, 0x33, 0x22, 0x22, 0x63, 0x36, 0x45, 0x43, 0x23, 0x22, 0x00, - 0x80, 0x80, 0x99, 0xaa, 0x9a, 0x89, 0xa9, 0xdb, 0xbe, 0xcd, 0xbb, 0xaa, 0x10, 0x32, 0x24, 0x81, - 0xec, 0xbc, 0xab, 0x0a, 0x32, 0x35, 0x12, 0xa8, 0xbb, 0x9b, 0x28, 0x43, 0x45, 0x22, 0xa0, 0xce, - 0xcc, 0xcb, 0xba, 0xba, 0xaa, 0x8a, 0x89, 0xaa, 0x8a, 0x30, 0x45, 0x53, 0x43, 0x43, 0x23, 0x02, - 0xa9, 0xbc, 0xab, 0x99, 0x19, 0x21, 0x22, 0x01, 0x08, 0x74, 0x67, 0x34, 0x35, 0x33, 0x32, 0x21, - 0x10, 0x00, 0x98, 0xaa, 0xab, 0xaa, 0xaa, 0xdc, 0xbe, 0xbd, 0xbc, 0x9a, 0x19, 0x32, 0x34, 0x22, - 0xa8, 0xbe, 0xac, 0x89, 0x21, 0x24, 0x03, 0xa9, 0xcc, 0xaa, 0x99, 0x00, 0x33, 0x34, 0x23, 0xb0, - 0xcf, 0xbd, 0xbd, 0xac, 0xab, 0xaa, 0x9a, 0xaa, 0xaa, 0x9a, 0x20, 0x54, 0x44, 0x34, 0x34, 0x33, - 0x12, 0x98, 0xa9, 0x9a, 0x88, 0x99, 0xb9, 0xdd, 0xcb, 0x8a, 0x62, 0x55, 0x53, 0x33, 0x34, 0x32, - 0x23, 0x11, 0x80, 0x98, 0x89, 0x99, 0x99, 0xdb, 0xdd, 0xcc, 0xcb, 0xab, 0x8a, 0x10, 0x32, 0x14, - 0x81, 0xb9, 0xbb, 0x0a, 0x52, 0x43, 0x13, 0x98, 0xdb, 0xbb, 0xbb, 0x9b, 0x20, 0x53, 0x43, 0x23, - 0xa1, 0xed, 0xcd, 0xcb, 0xbb, 0xab, 0xab, 0xaa, 0xbb, 0xbb, 0x9a, 0x30, 0x56, 0x54, 0x43, 0x33, - 0x32, 0x21, 0x00, 0x80, 0x88, 0x99, 0xba, 0xbe, 0xcd, 0xbb, 0x8a, 0x20, 0x56, 0x34, 0x35, 0x43, - 0x32, 0x12, 0x11, 0x01, 0x00, 0x00, 0x80, 0xa9, 0xdd, 0xdc, 0xdb, 0xab, 0xab, 0x89, 0x11, 0x21, - 0x01, 0x99, 0xaa, 0x28, 0x44, 0x35, 0x23, 0x01, 0xa9, 0xbc, 0xad, 0xab, 0x9a, 0x00, 0x42, 0x25, - 0x13, 0xa8, 0xcf, 0xbc, 0xbc, 0xaa, 0xa9, 0xba, 0xbc, 0xbc, 0xaa, 0x89, 0x31, 0x46, 0x44, 0x43, - 0x32, 0x23, 0x12, 0x11, 0x10, 0x00, 0x80, 0xba, 0xee, 0xdb, 0xbb, 0xaa, 0x18, 0x44, 0x35, 0x35, - 0x32, 0x33, 0x22, 0x23, 0x22, 0x33, 0x33, 0x02, 0xda, 0xde, 0xcc, 0xcb, 0xab, 0x9a, 0x89, 0x08, - 0x80, 0x98, 0x98, 0x10, 0x54, 0x34, 0x43, 0x12, 0x80, 0xaa, 0xbb, 0xbc, 0xbb, 0x8a, 0x21, 0x35, - 0x24, 0xa0, 0xdc, 0xbd, 0xac, 0x9b, 0xa9, 0xa9, 0xbc, 0xbd, 0xac, 0x9a, 0x00, 0x33, 0x45, 0x44, - 0x33, 0x33, 0x23, 0x32, 0x32, 0x34, 0x24, 0x81, 0xc9, 0xce, 0xcc, 0xab, 0x9b, 0x10, 0x53, 0x34, - 0x33, 0x25, 0x32, 0x33, 0x43, 0x33, 0x43, 0x22, 0x90, 0xea, 0xcc, 0xcb, 0xac, 0xab, 0x9a, 0x99, - 0x99, 0xaa, 0x9a, 0x09, 0x53, 0x44, 0x34, 0x22, 0x11, 0x98, 0xb9, 0xca, 0xaa, 0x9a, 0x30, 0x53, - 0x23, 0xa0, 0xcd, 0xbd, 0xac, 0x99, 0x88, 0x99, 0xcc, 0xbd, 0xbc, 0xaa, 0x89, 0x28, 0x52, 0x53, - 0x34, 0x23, 0x33, 0x42, 0x53, 0x33, 0x43, 0x11, 0x90, 0xda, 0xcd, 0xcb, 0xaa, 0x8a, 0x10, 0x32, - 0x34, 0x34, 0x44, 0x42, 0x32, 0x43, 0x33, 0x33, 0x12, 0x90, 0xcc, 0xcd, 0xcb, 0xab, 0xba, 0xaa, - 0xbb, 0xbc, 0xba, 0xab, 0x19, 0x52, 0x44, 0x24, 0x12, 0x01, 0x98, 0xa9, 0xa9, 0x08, 0x31, 0x45, - 0x23, 0x91, 0xdb, 0xbd, 0xab, 0xaa, 0x88, 0x98, 0xeb, 0xcd, 0xcb, 0xab, 0x9b, 0x89, 0x10, 0x34, - 0x35, 0x35, 0x42, 0x33, 0x34, 0x34, 0x24, 0x23, 0x01, 0xa8, 0xcd, 0xcc, 0xba, 0x9b, 0x99, 0x00, - 0x20, 0x43, 0x44, 0x43, 0x43, 0x34, 0x34, 0x24, 0x13, 0x02, 0x98, 0xdb, 0xcb, 0xac, 0xbb, 0xba, - 0xbc, 0xbc, 0xbb, 0xac, 0x99, 0x08, 0x31, 0x34, 0x24, 0x12, 0x01, 0x98, 0xa9, 0x09, 0x63, 0x44, - 0x24, 0x12, 0x90, 0xb9, 0xbb, 0x9c, 0x88, 0xa8, 0xdc, 0xcd, 0xcb, 0xbb, 0xcb, 0xaa, 0x9a, 0x00, - 0x52, 0x44, 0x53, 0x32, 0x43, 0x33, 0x34, 0x33, 0x12, 0x80, 0xeb, 0xbc, 0xbc, 0xbb, 0xab, 0x99, - 0x09, 0x21, 0x52, 0x53, 0x44, 0x53, 0x43, 0x33, 0x24, 0x12, 0x01, 0xa8, 0xcb, 0xbc, 0xcb, 0xbb, - 0xdb, 0xbb, 0xcb, 0xbb, 0xab, 0xab, 0x89, 0x11, 0x22, 0x32, 0x02, 0xb8, 0xcb, 0x18, 0x66, 0x44, - 0x34, 0x33, 0x23, 0x00, 0x89, 0x09, 0x08, 0xa8, 0xec, 0xcc, 0xcb, 0xcb, 0xcb, 0xcb, 0xaa, 0x8a, - 0x20, 0x53, 0x44, 0x32, 0x43, 0x33, 0x34, 0x33, 0x23, 0x81, 0xca, 0xbd, 0xbc, 0xcb, 0xba, 0xaa, - 0x98, 0x00, 0x22, 0x44, 0x63, 0x53, 0x43, 0x33, 0x43, 0x33, 0x12, 0x90, 0xba, 0xbd, 0xcb, 0xbb, - 0xbc, 0xbb, 0xcc, 0xba, 0xac, 0xbb, 0xaa, 0x99, 0x89, 0x89, 0xba, 0xbe, 0xbc, 0x8a, 0x41, 0x54, - 0x44, 0x24, 0x23, 0x13, 0x21, 0x21, 0x21, 0x81, 0xb9, 0xce, 0xbc, 0xbc, 0xbd, 0xbc, 0xbb, 0x9a, - 0x09, 0x32, 0x35, 0x35, 0x43, 0x43, 0x33, 0x33, 0x23, 0x02, 0xb8, 0xdc, 0xbc, 0xcb, 0xab, 0xaa, - 0x89, 0x08, 0x11, 0x43, 0x44, 0x35, 0x34, 0x34, 0x43, 0x33, 0x22, 0x00, 0xa9, 0xbc, 0xcc, 0xbb, - 0xbb, 0xaa, 0xba, 0xcb, 0xbd, 0xbc, 0xbb, 0x9a, 0xa8, 0xda, 0xcc, 0xcc, 0xbb, 0xaa, 0x08, 0x41, - 0x44, 0x44, 0x32, 0x24, 0x23, 0x33, 0x33, 0x02, 0x90, 0xbb, 0xdd, 0xdb, 0xdb, 0xbb, 0xac, 0xab, - 0x89, 0x00, 0x32, 0x44, 0x43, 0x43, 0x34, 0x42, 0x22, 0x11, 0x80, 0xbb, 0xbd, 0xbc, 0xbb, 0xbb, - 0xaa, 0x99, 0x28, 0x53, 0x44, 0x53, 0x43, 0x43, 0x33, 0x33, 0x13, 0x11, 0x99, 0xcc, 0xdb, 0xca, - 0x9a, 0x8a, 0x89, 0x98, 0xba, 0xbc, 0xbc, 0x9a, 0x89, 0xdb, 0xed, 0xdb, 0xbb, 0xab, 0x9a, 0x08, - 0x32, 0x54, 0x53, 0x43, 0x33, 0x34, 0x24, 0x22, 0x11, 0x88, 0xb9, 0xcc, 0xcc, 0xcb, 0xcb, 0xba, - 0xa9, 0x88, 0x11, 0x33, 0x53, 0x43, 0x44, 0x33, 0x24, 0x22, 0x80, 0xaa, 0xbc, 0xbc, 0xcb, 0xbb, - 0xba, 0xaa, 0x09, 0x31, 0x36, 0x45, 0x43, 0x33, 0x43, 0x23, 0x22, 0x11, 0x88, 0xca, 0xdb, 0xac, - 0xac, 0x99, 0x89, 0x80, 0x99, 0xaa, 0xab, 0x89, 0x88, 0xfb, 0xec, 0xcc, 0xbc, 0xbb, 0xab, 0x9b, - 0x88, 0x21, 0x44, 0x35, 0x35, 0x44, 0x33, 0x23, 0x23, 0x11, 0x88, 0xca, 0xcc, 0xbc, 0xbc, 0xac, - 0xab, 0x99, 0x00, 0x20, 0x42, 0x43, 0x44, 0x43, 0x43, 0x12, 0x01, 0x98, 0xba, 0xdb, 0xbb, 0xbc, - 0xcb, 0xba, 0x9a, 0x18, 0x43, 0x35, 0x35, 0x43, 0x43, 0x33, 0x32, 0x02, 0x80, 0xb9, 0xdb, 0xcc, - 0xbb, 0xba, 0xaa, 0x99, 0x98, 0x98, 0x08, 0x10, 0x22, 0x03, 0xfc, 0xbf, 0xcd, 0xbb, 0xcb, 0xab, - 0xab, 0x99, 0x08, 0x53, 0x36, 0x44, 0x33, 0x34, 0x33, 0x32, 0x02, 0x80, 0xcb, 0xbd, 0xcc, 0xcb, - 0xba, 0x9a, 0x8a, 0x18, 0x21, 0x44, 0x43, 0x34, 0x43, 0x23, 0x22, 0x00, 0x99, 0xdb, 0xcb, 0xdb, - 0xbb, 0xbb, 0xac, 0x99, 0x10, 0x53, 0x34, 0x35, 0x43, 0x43, 0x32, 0x22, 0x01, 0x98, 0xba, 0xcd, - 0xcb, 0xbb, 0xab, 0xaa, 0x89, 0x80, 0x11, 0x22, 0x33, 0x14, 0xb8, 0xdf, 0xdb, 0xcb, 0xcb, 0xcb, - 0xbb, 0xbb, 0xab, 0x28, 0x54, 0x35, 0x34, 0x34, 0x33, 0x43, 0x23, 0x12, 0x88, 0xcb, 0xbd, 0xcc, - 0xba, 0xab, 0xaa, 0x89, 0x18, 0x43, 0x35, 0x44, 0x32, 0x33, 0x32, 0x12, 0x81, 0xa9, 0xcc, 0xdc, - 0xcb, 0xcb, 0xaa, 0x9a, 0x08, 0x20, 0x34, 0x53, 0x34, 0x34, 0x34, 0x24, 0x11, 0x00, 0x99, 0xca, - 0xcb, 0xcb, 0xbb, 0xac, 0x99, 0x08, 0x21, 0x32, 0x22, 0x01, 0x98, 0xcb, 0xdc, 0xdb, 0xcc, 0xcb, - 0xdb, 0xab, 0xab, 0x99, 0x21, 0x44, 0x34, 0x44, 0x33, 0x43, 0x43, 0x22, 0x02, 0xa8, 0xcb, 0xbc, - 0xbc, 0xbc, 0xba, 0xba, 0x09, 0x31, 0x45, 0x34, 0x33, 0x43, 0x22, 0x22, 0x11, 0x81, 0xa9, 0xce, - 0xcc, 0xac, 0xab, 0x9a, 0x99, 0x18, 0x20, 0x43, 0x35, 0x35, 0x44, 0x33, 0x23, 0x11, 0x81, 0xa9, - 0xcb, 0xcc, 0xdb, 0xba, 0xab, 0x88, 0x20, 0x32, 0x12, 0x80, 0x80, 0xa0, 0xda, 0xdc, 0xdb, 0xbc, - 0xad, 0xbc, 0xba, 0x9a, 0x89, 0x21, 0x45, 0x34, 0x34, 0x43, 0x33, 0x43, 0x23, 0x11, 0xa8, 0xdb, - 0xbc, 0xbd, 0xbb, 0xbb, 0xaa, 0x10, 0x63, 0x43, 0x33, 0x34, 0x43, 0x12, 0x12, 0x10, 0x98, 0xca, - 0xdc, 0xdb, 0xcb, 0xaa, 0x99, 0x09, 0x10, 0x21, 0x43, 0x44, 0x44, 0x24, 0x24, 0x12, 0x01, 0x88, - 0x9a, 0xcb, 0xbb, 0xcc, 0xbb, 0xab, 0x09, 0x22, 0x33, 0x02, 0x98, 0x98, 0xb9, 0xdc, 0xdc, 0xcc, - 0xcc, 0xbb, 0xcb, 0xaa, 0x89, 0x00, 0x32, 0x53, 0x44, 0x34, 0x34, 0x33, 0x33, 0x13, 0x01, 0x98, - 0xeb, 0xdc, 0xbb, 0xbc, 0x9a, 0x89, 0x21, 0x44, 0x43, 0x32, 0x32, 0x34, 0x33, 0x12, 0x91, 0xb9, - 0xbd, 0xcd, 0xbc, 0xba, 0xbb, 0xab, 0x99, 0x20, 0x63, 0x53, 0x43, 0x53, 0x33, 0x24, 0x23, 0x01, - 0x99, 0xba, 0xbd, 0xca, 0xbb, 0xbb, 0x8b, 0x08, 0x11, 0x10, 0x20, 0x02, 0xd9, 0xdc, 0xdb, 0xbb, - 0xbe, 0xcd, 0xcb, 0xab, 0x99, 0x08, 0x20, 0x31, 0x44, 0x44, 0x33, 0x34, 0x24, 0x22, 0x12, 0x00, - 0xa9, 0xdc, 0xcb, 0xcb, 0xbb, 0x9b, 0x18, 0x52, 0x33, 0x43, 0x32, 0x44, 0x43, 0x22, 0x11, 0x80, - 0xa9, 0xdc, 0xcb, 0xab, 0xbb, 0xac, 0xab, 0x89, 0x30, 0x53, 0x44, 0x53, 0x33, 0x35, 0x23, 0x13, - 0x98, 0xca, 0xba, 0x9a, 0xba, 0xbb, 0xcb, 0x9a, 0xaa, 0x09, 0x30, 0x33, 0xc0, 0xde, 0xbc, 0xba, - 0xdb, 0xdd, 0xbc, 0xac, 0xaa, 0x89, 0x10, 0x20, 0x32, 0x44, 0x43, 0x44, 0x33, 0x33, 0x33, 0x11, - 0xa9, 0xdb, 0xbc, 0xbc, 0xbb, 0xbc, 0xaa, 0x10, 0x34, 0x34, 0x32, 0x54, 0x43, 0x34, 0x32, 0x11, - 0x80, 0xca, 0xbc, 0xac, 0xab, 0xcb, 0xba, 0xaa, 0x99, 0x08, 0x52, 0x45, 0x53, 0x34, 0x24, 0x13, - 0x01, 0xa8, 0xaa, 0x9a, 0x99, 0x98, 0xba, 0xeb, 0xbb, 0xab, 0x09, 0x12, 0x90, 0xde, 0xac, 0xaa, - 0xa9, 0xdc, 0xdd, 0xcb, 0xba, 0xa9, 0x89, 0x10, 0x11, 0x22, 0x42, 0x45, 0x44, 0x33, 0x24, 0x02, - 0x80, 0xa9, 0xba, 0xbb, 0xbc, 0xbc, 0xab, 0xab, 0x89, 0x10, 0x44, 0x45, 0x34, 0x34, 0x34, 0x33, - 0x13, 0x90, 0xca, 0xac, 0xa9, 0xbb, 0xcb, 0xcb, 0xaa, 0xac, 0xab, 0x20, 0x56, 0x44, 0x43, 0x33, - 0x11, 0x88, 0xaa, 0x99, 0x18, 0x31, 0x12, 0xc8, 0xcd, 0xbc, 0x99, 0x10, 0xa0, 0xcc, 0xcb, 0x9a, - 0x88, 0xda, 0xcd, 0xbc, 0xbb, 0xac, 0x9a, 0x08, 0x00, 0x90, 0x08, 0x51, 0x47, 0x53, 0x23, 0x12, - 0x00, 0x98, 0x9a, 0xa9, 0x9a, 0xaa, 0xcb, 0xbb, 0xcc, 0xac, 0x89, 0x31, 0x46, 0x43, 0x53, 0x43, - 0x22, 0x00, 0x98, 0x98, 0x08, 0x98, 0x98, 0xdb, 0xbc, 0xcc, 0xdb, 0x9a, 0x08, 0x53, 0x35, 0x34, - 0x13, 0x81, 0xa8, 0x8a, 0x18, 0x42, 0x24, 0x03, 0xc9, 0xcc, 0xbb, 0x88, 0x98, 0xda, 0xcb, 0x9b, - 0x89, 0x99, 0xcd, 0xdb, 0xba, 0xbb, 0xac, 0xab, 0x99, 0xaa, 0xcb, 0x0a, 0x65, 0x54, 0x33, 0x33, - 0x01, 0x88, 0x99, 0x89, 0x08, 0x98, 0x99, 0xc9, 0xdc, 0xcd, 0xba, 0x09, 0x31, 0x34, 0x44, 0x44, - 0x32, 0x22, 0x01, 0x00, 0x21, 0x23, 0x12, 0xb8, 0xec, 0xbc, 0xcd, 0xbb, 0xaa, 0x20, 0x54, 0x43, - 0x33, 0x12, 0x90, 0x98, 0x88, 0x22, 0x35, 0x24, 0x91, 0xdb, 0xbc, 0xaa, 0x98, 0xca, 0xcc, 0xba, - 0x99, 0x09, 0x99, 0xab, 0xaa, 0xea, 0xcd, 0xbc, 0xbb, 0xcb, 0xcb, 0xaa, 0x20, 0x45, 0x35, 0x23, - 0x22, 0x00, 0x00, 0x18, 0x10, 0x11, 0x80, 0x98, 0xec, 0xcd, 0xbc, 0x9b, 0x09, 0x21, 0x42, 0x35, - 0x25, 0x33, 0x32, 0x33, 0x44, 0x33, 0x33, 0x82, 0xb9, 0xce, 0xdb, 0xcb, 0xab, 0x8a, 0x20, 0x53, - 0x53, 0x22, 0x11, 0x80, 0x09, 0x10, 0x32, 0x34, 0x13, 0xa8, 0xce, 0xac, 0x9a, 0xaa, 0xcc, 0xac, - 0xab, 0x89, 0x11, 0x22, 0x22, 0xa1, 0xef, 0xbc, 0xbb, 0xbc, 0xbb, 0xbb, 0x8a, 0x31, 0x46, 0x33, - 0x43, 0x32, 0x32, 0x13, 0x22, 0x31, 0x22, 0x00, 0xda, 0xcf, 0xdb, 0xbb, 0x9b, 0x88, 0x08, 0x42, - 0x44, 0x43, 0x34, 0x35, 0x43, 0x24, 0x12, 0x02, 0x80, 0xba, 0xbc, 0xcd, 0xbb, 0xbb, 0x99, 0x10, - 0x54, 0x33, 0x23, 0x02, 0x08, 0x08, 0x31, 0x44, 0x33, 0x81, 0xd9, 0xdb, 0xba, 0xca, 0xdc, 0xbb, - 0xac, 0x89, 0x20, 0x43, 0x33, 0x02, 0xda, 0xbd, 0xbc, 0xac, 0xbb, 0xcb, 0xab, 0x8a, 0x20, 0x31, - 0x45, 0x43, 0x43, 0x32, 0x23, 0x23, 0x22, 0x12, 0x88, 0xda, 0xdd, 0xbc, 0xbb, 0xba, 0x9a, 0x19, - 0x53, 0x44, 0x53, 0x34, 0x44, 0x42, 0x22, 0x21, 0x00, 0x90, 0xaa, 0xcc, 0xcc, 0xbb, 0xab, 0x8a, - 0x32, 0x35, 0x32, 0x12, 0x80, 0x00, 0x32, 0x36, 0x24, 0x01, 0x99, 0xbb, 0xbd, 0xdc, 0xbc, 0xbc, - 0xaa, 0x89, 0x30, 0x44, 0x32, 0x23, 0xa8, 0xdc, 0xca, 0xba, 0xcb, 0xbc, 0xcb, 0x9b, 0x9a, 0x00, - 0x32, 0x34, 0x44, 0x43, 0x32, 0x43, 0x32, 0x22, 0x12, 0x80, 0xea, 0xcd, 0xbb, 0xac, 0xaa, 0x09, - 0x21, 0x43, 0x44, 0x44, 0x53, 0x33, 0x33, 0x33, 0x23, 0x80, 0xa9, 0xdc, 0xbd, 0xbc, 0xac, 0x99, - 0x20, 0x32, 0x22, 0x12, 0x11, 0x10, 0x42, 0x35, 0x34, 0x12, 0x98, 0xba, 0xcd, 0xeb, 0xcb, 0xbb, - 0x9b, 0x89, 0x32, 0x44, 0x33, 0x13, 0x90, 0xcb, 0xcb, 0xcc, 0xbc, 0xbc, 0xcc, 0xaa, 0xaa, 0x88, - 0x10, 0x32, 0x43, 0x35, 0x43, 0x43, 0x32, 0x33, 0x22, 0x02, 0xb9, 0xcf, 0xcb, 0xcb, 0xaa, 0x09, - 0x20, 0x22, 0x35, 0x35, 0x44, 0x33, 0x34, 0x34, 0x22, 0x00, 0x98, 0xda, 0xdb, 0xac, 0xab, 0x9a, - 0x18, 0x21, 0x12, 0x02, 0x01, 0x21, 0x44, 0x45, 0x33, 0x23, 0x80, 0xba, 0xdc, 0xcc, 0xbc, 0xba, - 0xaa, 0x08, 0x32, 0x34, 0x33, 0x22, 0x90, 0xba, 0xeb, 0xdb, 0xcc, 0xdb, 0xbc, 0xbb, 0xbb, 0x9a, - 0x08, 0x22, 0x43, 0x44, 0x34, 0x43, 0x24, 0x33, 0x32, 0x12, 0xa9, 0xcd, 0xcb, 0xbc, 0xab, 0x89, - 0x20, 0x42, 0x34, 0x43, 0x53, 0x34, 0x44, 0x33, 0x32, 0x01, 0x98, 0xda, 0xdb, 0xcb, 0xba, 0x9a, - 0x08, 0x11, 0x11, 0x11, 0x00, 0x20, 0x73, 0x44, 0x43, 0x22, 0x00, 0x98, 0xdb, 0xbd, 0xbc, 0xbb, - 0x9a, 0x08, 0x31, 0x23, 0x33, 0x22, 0x11, 0x00, 0x98, 0xfa, 0xce, 0xcd, 0xcb, 0xcb, 0xaa, 0x9a, - 0x89, 0x08, 0x31, 0x53, 0x34, 0x43, 0x34, 0x43, 0x32, 0x22, 0x88, 0xbb, 0xcd, 0xcb, 0xaa, 0x89, - 0x10, 0x22, 0x43, 0x32, 0x45, 0x44, 0x34, 0x25, 0x23, 0x01, 0x88, 0xba, 0xdb, 0xcb, 0xcb, 0x9a, - 0x88, 0x08, 0x80, 0x80, 0x88, 0x10, 0x54, 0x54, 0x43, 0x23, 0x02, 0x90, 0xdb, 0xdb, 0xbb, 0xac, - 0xaa, 0x09, 0x00, 0x21, 0x01, 0x08, 0x18, 0x32, 0x53, 0x02, 0xfa, 0xdd, 0xbc, 0xbc, 0xbb, 0xbb, - 0xaa, 0x99, 0x20, 0x52, 0x43, 0x44, 0x42, 0x32, 0x34, 0x33, 0x11, 0x98, 0xca, 0xbc, 0xab, 0x8a, - 0x11, 0x21, 0x11, 0x21, 0x46, 0x55, 0x34, 0x34, 0x33, 0x11, 0x80, 0xa9, 0xbb, 0xcd, 0xbb, 0xab, - 0x9a, 0x99, 0xaa, 0xba, 0xbb, 0x09, 0x73, 0x56, 0x43, 0x43, 0x12, 0x01, 0xb9, 0xbb, 0xcc, 0xba, - 0xab, 0xbb, 0xab, 0xa9, 0xba, 0xcb, 0x8a, 0x40, 0x44, 0x33, 0x90, 0xde, 0xbd, 0xbd, 0xbb, 0xbb, - 0xab, 0x8a, 0x88, 0x20, 0x42, 0x35, 0x35, 0x43, 0x43, 0x24, 0x33, 0x12, 0x88, 0xca, 0xab, 0x0a, - 0x21, 0x02, 0x88, 0x0a, 0x61, 0x46, 0x45, 0x32, 0x33, 0x22, 0x81, 0x90, 0xa9, 0xca, 0xbc, 0xac, - 0xbb, 0xbc, 0xbb, 0xbc, 0xbb, 0xaa, 0x09, 0x65, 0x35, 0x44, 0x22, 0x12, 0x01, 0x98, 0xaa, 0xcb, - 0xcb, 0xbc, 0xbb, 0xbb, 0xbc, 0xbc, 0xbb, 0x0a, 0x42, 0x44, 0x02, 0xb8, 0xdd, 0xbc, 0xac, 0xba, - 0xa9, 0x89, 0x98, 0x89, 0x09, 0x20, 0x43, 0x35, 0x36, 0x35, 0x44, 0x22, 0x12, 0x00, 0x98, 0x88, - 0x10, 0x10, 0x88, 0x80, 0x31, 0x55, 0x53, 0x43, 0x33, 0x24, 0x22, 0x22, 0x12, 0x91, 0xdb, 0xcc, - 0xcb, 0xab, 0xba, 0xbc, 0xbd, 0xac, 0x9a, 0x20, 0x44, 0x45, 0x33, 0x43, 0x21, 0x00, 0x90, 0xa9, - 0xba, 0xbd, 0xcc, 0xbb, 0xbc, 0xcb, 0xcb, 0x9a, 0x08, 0x31, 0x33, 0x81, 0xfb, 0xcd, 0xbb, 0xab, - 0x89, 0x08, 0x88, 0xb9, 0xcd, 0xba, 0x9a, 0x18, 0x55, 0x44, 0x53, 0x33, 0x33, 0x22, 0x00, 0x80, - 0x08, 0x10, 0x00, 0x80, 0x89, 0x88, 0x21, 0x44, 0x45, 0x44, 0x43, 0x32, 0x23, 0x01, 0xa9, 0xcb, - 0xbb, 0xbb, 0xeb, 0xcc, 0xcc, 0xcb, 0xab, 0x89, 0x21, 0x54, 0x34, 0x24, 0x23, 0x12, 0x11, 0x11, - 0x80, 0xa8, 0xdd, 0xcc, 0xcb, 0xbb, 0xcb, 0xab, 0x89, 0x18, 0x22, 0x22, 0xa8, 0xdd, 0xbb, 0x9b, - 0x09, 0x08, 0xb8, 0xcf, 0xcc, 0xbc, 0xab, 0x09, 0x41, 0x44, 0x34, 0x43, 0x33, 0x32, 0x11, 0x11, - 0x00, 0x10, 0x21, 0x00, 0xb8, 0xeb, 0xcb, 0x89, 0x31, 0x36, 0x34, 0x23, 0x12, 0x81, 0x98, 0x89, - 0x32, 0x22, 0xc8, 0xdf, 0xdc, 0xbc, 0xbb, 0x9b, 0x19, 0x42, 0x45, 0x33, 0x24, 0x23, 0x21, 0x21, - 0x22, 0x13, 0xa8, 0xed, 0xbd, 0xbc, 0xbc, 0xaa, 0x9a, 0x08, 0x21, 0x12, 0x01, 0xa9, 0xbb, 0x9b, - 0x08, 0x02, 0xea, 0xef, 0xcc, 0xcb, 0xba, 0x8a, 0x28, 0x43, 0x35, 0x34, 0x33, 0x23, 0x22, 0x12, - 0x32, 0x32, 0x23, 0x82, 0xb9, 0xde, 0xcb, 0xaa, 0x18, 0x32, 0x44, 0x23, 0x02, 0x88, 0x89, 0x40, - 0x45, 0x43, 0x02, 0xa8, 0xce, 0xdb, 0xcb, 0xab, 0x99, 0x10, 0x43, 0x35, 0x33, 0x24, 0x22, 0x22, - 0x33, 0x34, 0x12, 0xa0, 0xce, 0xcd, 0xbb, 0xbc, 0xaa, 0x99, 0x00, 0x11, 0x10, 0x08, 0x88, 0x01, - 0x12, 0x81, 0xda, 0xde, 0xdc, 0xdb, 0xab, 0xab, 0x89, 0x21, 0x45, 0x53, 0x32, 0x22, 0x12, 0x11, - 0x21, 0x32, 0x33, 0x33, 0x80, 0xfa, 0xdb, 0xbb, 0x99, 0x20, 0x32, 0x24, 0x12, 0x98, 0x89, 0x52, - 0x56, 0x43, 0x32, 0x81, 0xc9, 0xcc, 0xbc, 0xbc, 0xab, 0x89, 0x20, 0x63, 0x43, 0x32, 0x32, 0x23, - 0x33, 0x35, 0x43, 0x11, 0xb0, 0xed, 0xdb, 0xab, 0xbb, 0x9a, 0x89, 0x08, 0x01, 0x01, 0x00, 0x11, - 0x21, 0x01, 0xa8, 0xfb, 0xce, 0xdc, 0xcb, 0xbb, 0x9a, 0x18, 0x43, 0x35, 0x34, 0x32, 0x21, 0x10, - 0x21, 0x42, 0x33, 0x24, 0x22, 0x98, 0xcc, 0xbc, 0xab, 0x89, 0x11, 0x33, 0x33, 0x80, 0xcb, 0x8a, - 0x73, 0x47, 0x33, 0x23, 0x91, 0xda, 0xcc, 0xbc, 0xbb, 0xaa, 0x08, 0x42, 0x35, 0x33, 0x24, 0x22, - 0x21, 0x43, 0x34, 0x33, 0x02, 0xeb, 0xcd, 0xcb, 0xbb, 0xaa, 0x89, 0x88, 0x00, 0x00, 0x88, 0x00, - 0x01, 0x90, 0xaa, 0xcb, 0xec, 0xcd, 0xbd, 0xad, 0xab, 0x88, 0x31, 0x44, 0x34, 0x33, 0x22, 0x10, - 0x00, 0x21, 0x53, 0x43, 0x23, 0x12, 0xa9, 0xcc, 0xcb, 0xaa, 0x09, 0x21, 0x23, 0x02, 0xca, 0xbb, - 0x2a, 0x57, 0x35, 0x34, 0x12, 0x90, 0xcc, 0xdb, 0xbb, 0xba, 0x8a, 0x20, 0x44, 0x53, 0x32, 0x22, - 0x12, 0x32, 0x36, 0x34, 0x13, 0xa0, 0xec, 0xdb, 0xba, 0xab, 0x99, 0x88, 0x00, 0x98, 0x99, 0x8a, - 0x88, 0x90, 0xa9, 0xcb, 0xba, 0xde, 0xdd, 0xcb, 0xac, 0x9a, 0x10, 0x52, 0x43, 0x43, 0x11, 0x01, - 0x08, 0x11, 0x32, 0x44, 0x33, 0x23, 0x81, 0xba, 0xcc, 0xbb, 0xaa, 0x08, 0x32, 0x13, 0xda, 0xdc, - 0x8a, 0x31, 0x47, 0x34, 0x23, 0x02, 0xb9, 0xcd, 0xbb, 0xac, 0x9a, 0x09, 0x21, 0x35, 0x34, 0x33, - 0x22, 0x53, 0x44, 0x43, 0x33, 0x81, 0xca, 0xbe, 0xbc, 0xbb, 0xaa, 0x98, 0x80, 0x90, 0xa9, 0x9a, - 0x89, 0x08, 0xa0, 0xcb, 0xbb, 0xcd, 0xce, 0xcc, 0xac, 0x9b, 0x09, 0x31, 0x45, 0x33, 0x33, 0x01, - 0x00, 0x11, 0x44, 0x34, 0x34, 0x22, 0x01, 0xa8, 0xba, 0xbb, 0xbc, 0xaa, 0x10, 0x11, 0xd8, 0xdc, - 0xbb, 0x28, 0x65, 0x44, 0x33, 0x02, 0x90, 0xcb, 0xbc, 0xab, 0xab, 0x99, 0x08, 0x42, 0x44, 0x43, - 0x23, 0x34, 0x54, 0x43, 0x33, 0x12, 0xa9, 0xdd, 0xcb, 0xab, 0xab, 0x99, 0x89, 0x89, 0xa9, 0xba, - 0x99, 0x18, 0x13, 0x90, 0xcc, 0xcc, 0xbc, 0xbd, 0xbd, 0xac, 0x9a, 0x18, 0x43, 0x35, 0x23, 0x12, - 0x01, 0x21, 0x64, 0x53, 0x32, 0x22, 0x01, 0xa9, 0xaa, 0x8a, 0x99, 0xba, 0xaa, 0xab, 0xcb, 0xce, - 0xac, 0x0a, 0x54, 0x54, 0x33, 0x32, 0x80, 0xb9, 0xbc, 0xac, 0x99, 0x99, 0xaa, 0x89, 0x18, 0x44, - 0x35, 0x45, 0x34, 0x44, 0x32, 0x13, 0x91, 0xdb, 0xcc, 0xbb, 0xba, 0xa9, 0x9a, 0xa9, 0xaa, 0xbc, - 0xaa, 0x18, 0x42, 0x13, 0x80, 0xcc, 0xcc, 0xac, 0xcb, 0xba, 0x9a, 0x89, 0x21, 0x44, 0x43, 0x12, - 0x21, 0x41, 0x55, 0x53, 0x43, 0x12, 0x11, 0xa8, 0xa9, 0x98, 0x80, 0xa0, 0xcb, 0xcc, 0xbb, 0xbb, - 0xcb, 0x0a, 0x63, 0x55, 0x33, 0x33, 0x02, 0x98, 0xcb, 0xac, 0x89, 0x98, 0xa9, 0xcb, 0xab, 0x09, - 0x73, 0x45, 0x34, 0x44, 0x32, 0x33, 0x01, 0xb9, 0xcd, 0xac, 0xbb, 0xaa, 0xaa, 0xba, 0xbb, 0xbc, - 0xab, 0x09, 0x42, 0x24, 0x12, 0xa9, 0xcd, 0xcb, 0xaa, 0xaa, 0xa9, 0xa9, 0x9a, 0x09, 0x31, 0x42, - 0x43, 0x54, 0x46, 0x44, 0x34, 0x23, 0x12, 0x80, 0xa9, 0x9a, 0x00, 0x80, 0xda, 0xcd, 0xcb, 0xaa, - 0x9a, 0x89, 0x20, 0x45, 0x45, 0x23, 0x13, 0x80, 0xa9, 0xab, 0x9a, 0x80, 0xa8, 0xcd, 0xbc, 0xaa, - 0x30, 0x65, 0x34, 0x35, 0x33, 0x24, 0x11, 0x80, 0xbb, 0xcd, 0xca, 0xaa, 0xbb, 0xbb, 0xbc, 0xbb, - 0xaa, 0x09, 0x21, 0x53, 0x23, 0x81, 0xca, 0xcc, 0x9a, 0x9a, 0x88, 0x98, 0xdb, 0xbc, 0xbb, 0x8a, - 0x31, 0x45, 0x54, 0x44, 0x43, 0x43, 0x22, 0x02, 0x80, 0x98, 0x80, 0x00, 0xa9, 0xde, 0xdb, 0xab, - 0x9a, 0x89, 0x18, 0x41, 0x63, 0x43, 0x32, 0x12, 0x01, 0x98, 0x9a, 0x99, 0xba, 0xcd, 0xbc, 0x9c, - 0x19, 0x62, 0x44, 0x43, 0x24, 0x23, 0x22, 0x11, 0xa8, 0xcb, 0xcc, 0xbb, 0xbc, 0xbc, 0xbc, 0xbb, - 0xaa, 0x8a, 0x00, 0x31, 0x23, 0x13, 0x80, 0xaa, 0xab, 0x89, 0x00, 0xc9, 0xee, 0xcc, 0xcb, 0x9a, - 0x09, 0x31, 0x44, 0x44, 0x43, 0x53, 0x33, 0x23, 0x22, 0x00, 0x00, 0x88, 0xa8, 0xcd, 0xbe, 0xbc, - 0xab, 0x8a, 0x10, 0x11, 0x32, 0x53, 0x45, 0x33, 0x23, 0x02, 0x90, 0xba, 0xbc, 0xbd, 0xbc, 0xab, - 0x8a, 0x42, 0x46, 0x44, 0x33, 0x24, 0x22, 0x13, 0x01, 0x98, 0xdb, 0xbc, 0xbd, 0xbc, 0xbc, 0xac, - 0xaa, 0x89, 0x09, 0x08, 0x01, 0x21, 0x21, 0x33, 0x32, 0x11, 0x99, 0xdb, 0xbd, 0xbe, 0xbc, 0xbb, - 0x89, 0x31, 0x45, 0x33, 0x33, 0x45, 0x34, 0x35, 0x33, 0x23, 0x11, 0x90, 0xa8, 0xcb, 0xcd, 0xbc, - 0xcb, 0xaa, 0x88, 0x18, 0x00, 0x00, 0x53, 0x36, 0x35, 0x22, 0x01, 0x99, 0xca, 0xbb, 0xac, 0x9a, - 0x09, 0x30, 0x54, 0x35, 0x35, 0x43, 0x32, 0x32, 0x32, 0x01, 0xa9, 0xdc, 0xcc, 0xbc, 0xbc, 0xac, - 0xab, 0x99, 0x99, 0x98, 0x98, 0x00, 0x31, 0x45, 0x32, 0x12, 0x80, 0xb9, 0xbc, 0xcc, 0xcb, 0xaa, - 0x8a, 0x20, 0x63, 0x23, 0x22, 0x22, 0x44, 0x46, 0x34, 0x33, 0x22, 0x01, 0x98, 0xa9, 0xbb, 0xcc, - 0xcc, 0xcb, 0xba, 0x9a, 0x9a, 0x98, 0x10, 0x65, 0x34, 0x34, 0x12, 0x80, 0xca, 0xbb, 0xbb, 0x89, - 0x11, 0x43, 0x33, 0x45, 0x44, 0x34, 0x34, 0x32, 0x32, 0x12, 0x00, 0xca, 0xdc, 0xcc, 0xcb, 0xbb, - 0xbb, 0xac, 0xa9, 0xaa, 0x9b, 0x8a, 0x20, 0x54, 0x34, 0x23, 0x81, 0xa9, 0xcb, 0xbb, 0xab, 0x9a, - 0x88, 0x21, 0x73, 0x43, 0x32, 0x22, 0x21, 0x56, 0x44, 0x43, 0x22, 0x11, 0x08, 0x88, 0x08, 0x80, - 0xc9, 0xeb, 0xcc, 0xcb, 0xba, 0x99, 0x88, 0x31, 0x54, 0x43, 0x23, 0x81, 0xca, 0xbb, 0xac, 0x09, - 0x31, 0x34, 0x24, 0x33, 0x53, 0x35, 0x35, 0x43, 0x12, 0x11, 0x00, 0xa8, 0xca, 0xdc, 0xbc, 0xbc, - 0xcb, 0xba, 0xbb, 0xbb, 0xcb, 0xaa, 0x09, 0x53, 0x44, 0x32, 0x11, 0x98, 0xaa, 0xbb, 0x9a, 0x00, - 0x11, 0x22, 0x43, 0x45, 0x43, 0x32, 0x11, 0x21, 0x63, 0x35, 0x34, 0x33, 0x12, 0x11, 0x21, 0x34, - 0x13, 0xb0, 0xef, 0xbc, 0xad, 0xab, 0x99, 0x08, 0x21, 0x32, 0x32, 0x13, 0xb0, 0xcd, 0xac, 0x08, - 0x31, 0x44, 0x35, 0x33, 0x33, 0x35, 0x35, 0x24, 0x23, 0x12, 0x01, 0x90, 0xa9, 0xcd, 0xbd, 0xbd, - 0xca, 0xba, 0xac, 0xac, 0xbb, 0x9c, 0x8a, 0x20, 0x43, 0x34, 0x22, 0x81, 0xa9, 0xba, 0x99, 0x20, - 0x42, 0x23, 0x34, 0x35, 0x44, 0x23, 0x02, 0x88, 0x99, 0x08, 0x31, 0x45, 0x42, 0x33, 0x35, 0x34, - 0x34, 0x33, 0xb8, 0xcf, 0xbc, 0xbc, 0xab, 0x9a, 0x88, 0x90, 0xa8, 0x99, 0x18, 0x88, 0x98, 0x30, - 0x46, 0x44, 0x44, 0x43, 0x34, 0x43, 0x32, 0x32, 0x43, 0x22, 0x23, 0x81, 0xca, 0xcc, 0xbc, 0xbc, - 0xba, 0xcb, 0xeb, 0xcb, 0xcb, 0xba, 0x9a, 0x08, 0x21, 0x33, 0x24, 0x13, 0x80, 0x99, 0x99, 0x08, - 0x63, 0x63, 0x34, 0x44, 0x32, 0x11, 0x80, 0xa9, 0xba, 0xaa, 0x08, 0x01, 0x01, 0x31, 0x45, 0x55, - 0x43, 0x24, 0x13, 0xa0, 0xdc, 0xbc, 0xbc, 0xba, 0xaa, 0xbb, 0xbb, 0xac, 0x8a, 0x08, 0x01, 0x21, - 0x45, 0x45, 0x53, 0x33, 0x34, 0x43, 0x23, 0x32, 0x32, 0x43, 0x33, 0x01, 0xeb, 0xcc, 0xbb, 0xaa, - 0x88, 0x88, 0xdb, 0xce, 0xcb, 0xbb, 0x9b, 0x8a, 0x00, 0x10, 0x21, 0x22, 0x11, 0x11, 0x80, 0x09, - 0x73, 0x46, 0x44, 0x53, 0x22, 0x02, 0x88, 0xaa, 0xa9, 0x88, 0x00, 0x88, 0xdb, 0xcb, 0x8a, 0x21, - 0x54, 0x34, 0x34, 0x11, 0xa8, 0xcb, 0xcd, 0xcb, 0xcb, 0xcb, 0xab, 0x9a, 0x99, 0x88, 0x89, 0x08, - 0x42, 0x46, 0x44, 0x24, 0x32, 0x22, 0x23, 0x33, 0x43, 0x33, 0x23, 0x90, 0xeb, 0xcd, 0xab, 0x9a, - 0x00, 0x12, 0x88, 0xdc, 0xbd, 0xbc, 0xab, 0x8a, 0x88, 0x00, 0x08, 0x00, 0x10, 0x80, 0x89, 0x08, - 0x73, 0x56, 0x44, 0x34, 0x32, 0x01, 0x98, 0x99, 0x88, 0x10, 0x10, 0xa8, 0xed, 0xbc, 0xbb, 0x8a, - 0x10, 0x33, 0x35, 0x22, 0x02, 0xa8, 0xeb, 0xdb, 0xcc, 0xbc, 0xcb, 0x9a, 0x99, 0x9a, 0xa9, 0xaa, - 0x18, 0x64, 0x45, 0x43, 0x33, 0x23, 0x22, 0x42, 0x33, 0x34, 0x13, 0xa0, 0xdb, 0xcc, 0xba, 0x99, - 0x10, 0x11, 0x81, 0xda, 0xcd, 0xbb, 0xac, 0x99, 0x88, 0x00, 0x98, 0x98, 0x88, 0x80, 0x00, 0x01, - 0x51, 0x67, 0x44, 0x43, 0x22, 0x02, 0x88, 0x08, 0x10, 0x32, 0x22, 0xc0, 0xde, 0xdb, 0xba, 0x99, - 0x08, 0x00, 0x80, 0x00, 0x80, 0x11, 0x81, 0xda, 0xdd, 0xcc, 0xcb, 0x9a, 0x9a, 0xa9, 0xb9, 0xba, - 0x8b, 0x61, 0x45, 0x35, 0x33, 0x24, 0x22, 0x33, 0x44, 0x23, 0x23, 0x98, 0xdb, 0xcb, 0xaa, 0x09, - 0x21, 0x00, 0xb8, 0xec, 0xcb, 0xbb, 0x9a, 0x9a, 0x89, 0x00, 0x08, 0x00, 0x08, 0x08, 0x80, 0xcb, - 0x40, 0x77, 0x35, 0x34, 0x22, 0x00, 0x89, 0x18, 0x43, 0x34, 0x22, 0xa8, 0xce, 0xac, 0xab, 0x9a, - 0x98, 0xb8, 0xcb, 0xcb, 0xab, 0x10, 0x23, 0xb8, 0xcf, 0xcc, 0xab, 0x9a, 0x99, 0x99, 0xba, 0xbc, - 0x9a, 0x40, 0x45, 0x35, 0x34, 0x43, 0x43, 0x43, 0x24, 0x23, 0x12, 0x98, 0xbb, 0xbc, 0xaa, 0x20, - 0x23, 0x91, 0xeb, 0xcd, 0xcb, 0x9a, 0x99, 0x99, 0x99, 0x08, 0x20, 0x43, 0x32, 0x14, 0x82, 0xa8, - 0x09, 0x73, 0x47, 0x24, 0x12, 0x80, 0x99, 0x00, 0x32, 0x35, 0x24, 0x80, 0xdb, 0xbb, 0xbc, 0x9a, - 0xaa, 0xcc, 0xbc, 0xdb, 0x9a, 0x09, 0x00, 0xb8, 0xcd, 0xbd, 0xbb, 0x88, 0x08, 0x98, 0xba, 0xbc, - 0x9b, 0x42, 0x54, 0x34, 0x34, 0x34, 0x43, 0x44, 0x43, 0x23, 0x11, 0x98, 0xaa, 0xa9, 0x09, 0x31, - 0x23, 0xa8, 0xce, 0xcd, 0xbb, 0xba, 0xaa, 0xcb, 0x99, 0x08, 0x52, 0x53, 0x23, 0x22, 0x01, 0x98, - 0x08, 0x51, 0x45, 0x34, 0x23, 0x90, 0x99, 0x99, 0x10, 0x52, 0x34, 0x22, 0x88, 0xca, 0xcc, 0xcb, - 0xbb, 0xbd, 0xbc, 0xba, 0xab, 0x99, 0xa9, 0xec, 0xdc, 0xcb, 0x9b, 0x09, 0x00, 0x80, 0xa8, 0xcb, - 0x9a, 0x10, 0x44, 0x35, 0x34, 0x24, 0x43, 0x43, 0x44, 0x32, 0x12, 0x88, 0x99, 0x88, 0x00, 0x12, - 0x12, 0xa8, 0xdc, 0xdc, 0xbb, 0xbb, 0xcc, 0xac, 0xab, 0x08, 0x31, 0x44, 0x34, 0x32, 0x12, 0x00, - 0x08, 0x32, 0x47, 0x44, 0x22, 0x80, 0x98, 0xba, 0xba, 0x99, 0x21, 0x22, 0x32, 0x01, 0xfa, 0xcc, - 0xcb, 0xbc, 0xaa, 0x98, 0x98, 0x88, 0xea, 0xce, 0xbc, 0xbc, 0xab, 0x0a, 0x00, 0x80, 0xa9, 0xbc, - 0x9c, 0x09, 0x42, 0x45, 0x43, 0x33, 0x33, 0x44, 0x43, 0x24, 0x12, 0x01, 0x08, 0x08, 0x00, 0x11, - 0x00, 0x98, 0xa9, 0xcc, 0xbd, 0xdb, 0xbd, 0xcd, 0xba, 0x9a, 0x18, 0x42, 0x43, 0x34, 0x22, 0x11, - 0x00, 0x21, 0x45, 0x35, 0x33, 0x02, 0x98, 0xcb, 0xcb, 0xa9, 0x18, 0x10, 0x01, 0xa8, 0xcc, 0xbd, - 0xcb, 0xba, 0x09, 0x21, 0x33, 0x22, 0xf9, 0xce, 0xcc, 0xcb, 0xaa, 0x89, 0x88, 0x90, 0xc9, 0xcb, - 0xaa, 0x89, 0x21, 0x45, 0x34, 0x33, 0x24, 0x33, 0x44, 0x33, 0x23, 0x13, 0x12, 0x01, 0x00, 0x01, - 0x01, 0x88, 0x99, 0xbb, 0xeb, 0xec, 0xec, 0xdb, 0xcb, 0xaa, 0x8a, 0x10, 0x32, 0x35, 0x24, 0x22, - 0x21, 0x32, 0x45, 0x44, 0x32, 0x12, 0x90, 0xa9, 0xbb, 0x9b, 0x9a, 0x89, 0xba, 0xdd, 0xcc, 0xac, - 0xab, 0x8a, 0x20, 0x53, 0x34, 0x22, 0x80, 0xdc, 0xcc, 0xcb, 0xbb, 0x99, 0x89, 0x99, 0xbc, 0xbd, - 0xab, 0x9a, 0x00, 0x42, 0x45, 0x24, 0x23, 0x32, 0x53, 0x43, 0x23, 0x12, 0x12, 0x11, 0x00, 0x00, - 0x10, 0x00, 0x01, 0x00, 0x99, 0xec, 0xdc, 0xcd, 0xcc, 0xcb, 0x9a, 0x99, 0x11, 0x32, 0x53, 0x32, - 0x22, 0x53, 0x34, 0x35, 0x43, 0x22, 0x81, 0x90, 0x99, 0x98, 0x99, 0xba, 0xcc, 0xcc, 0xcc, 0xcb, - 0xba, 0x9a, 0x18, 0x43, 0x44, 0x23, 0x12, 0x98, 0xeb, 0xbc, 0xbb, 0x9b, 0x9a, 0xba, 0xdd, 0xcb, - 0xab, 0xab, 0x89, 0x28, 0x53, 0x44, 0x32, 0x33, 0x53, 0x34, 0x33, 0x23, 0x22, 0x12, 0x01, 0x88, - 0x89, 0x08, 0x21, 0x43, 0x14, 0x91, 0xec, 0xdc, 0xcc, 0xbc, 0xac, 0x9a, 0x09, 0x11, 0x22, 0x32, - 0x34, 0x53, 0x44, 0x53, 0x33, 0x24, 0x12, 0x11, 0x00, 0x90, 0x98, 0xaa, 0xcc, 0xcc, 0xdb, 0xcb, - 0xbb, 0xbb, 0x99, 0x20, 0x44, 0x43, 0x33, 0x11, 0x98, 0xbb, 0xbd, 0xab, 0xab, 0xcd, 0xcc, 0xcb, - 0xbb, 0xbb, 0xbb, 0xaa, 0x18, 0x53, 0x34, 0x34, 0x44, 0x33, 0x25, 0x33, 0x22, 0x22, 0x02, 0x00, - 0x88, 0x88, 0x18, 0x53, 0x44, 0x01, 0xa8, 0xcd, 0xcc, 0xbd, 0xcb, 0xab, 0x99, 0x89, 0x10, 0x31, - 0x33, 0x34, 0x45, 0x44, 0x34, 0x34, 0x33, 0x33, 0x22, 0x00, 0x88, 0xaa, 0xdb, 0xcc, 0xcb, 0xbc, - 0xbc, 0xac, 0xab, 0x89, 0x28, 0x43, 0x44, 0x22, 0x02, 0x80, 0x98, 0x98, 0xaa, 0xdd, 0xdb, 0xbb, - 0xbc, 0xbb, 0xbc, 0xbb, 0x9b, 0x89, 0x21, 0x45, 0x44, 0x33, 0x43, 0x33, 0x33, 0x43, 0x22, 0x12, - 0x00, 0x80, 0x20, 0x73, 0x34, 0x23, 0x80, 0xc9, 0xbd, 0xbd, 0xcd, 0xba, 0xbb, 0x9b, 0x8a, 0x00, - 0x22, 0x32, 0x53, 0x54, 0x45, 0x43, 0x24, 0x23, 0x33, 0x12, 0x80, 0x99, 0xab, 0xcc, 0xcb, 0xcb, - 0xac, 0xcb, 0xbb, 0xbb, 0xaa, 0x10, 0x44, 0x34, 0x33, 0x22, 0x21, 0x11, 0xa0, 0xdc, 0xcc, 0xcb, - 0xba, 0xcb, 0xcb, 0xbb, 0xbb, 0xab, 0x89, 0x32, 0x55, 0x43, 0x22, 0x23, 0x33, 0x34, 0x24, 0x22, - 0x10, 0x21, 0x31, 0x44, 0x45, 0x23, 0x13, 0x00, 0xb9, 0xdc, 0xdc, 0xdb, 0xab, 0xbb, 0xaa, 0x0a, - 0x10, 0x11, 0x01, 0x42, 0x56, 0x54, 0x33, 0x34, 0x23, 0x23, 0x11, 0x88, 0xb9, 0xcb, 0xcb, 0xbc, - 0xcb, 0xcb, 0xcb, 0xbb, 0xbb, 0x89, 0x30, 0x44, 0x34, 0x32, 0x33, 0x32, 0x11, 0xc9, 0xdc, 0xcb, - 0xca, 0xba, 0xcb, 0x7b, 0x02, 0x01, 0x02, 0x7d, 0x0b, 0x02, 0xf4, 0x01, 0xae, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0xf7, 0xff, 0xa1, 0x8f, 0xa1, 0x74, 0x62, 0xa3, 0xbd, 0x8a, 0x15, - 0x9a, 0x80, 0x18, 0x00, 0x98, 0x9b, 0xb8, 0xbf, 0xad, 0x51, 0x34, 0x80, 0x81, 0xca, 0x18, 0x0a, - 0x24, 0x12, 0x10, 0xfa, 0x8f, 0x00, 0x01, 0x31, 0x15, 0x53, 0x11, 0xa0, 0xac, 0xdb, 0x1a, 0x23, - 0x14, 0xb9, 0x19, 0x41, 0x26, 0x01, 0xa9, 0xba, 0x3b, 0x27, 0x44, 0x23, 0x91, 0xbb, 0xaa, 0xc9, - 0xbf, 0x09, 0x30, 0x45, 0x81, 0xfb, 0xbb, 0x89, 0x20, 0x23, 0xc8, 0xdc, 0xbb, 0x89, 0x11, 0x12, - 0x10, 0x42, 0x33, 0x92, 0xdd, 0xbc, 0x9b, 0x20, 0x33, 0x90, 0x89, 0x40, 0x56, 0x33, 0x82, 0xca, - 0x9b, 0x40, 0x45, 0x33, 0x11, 0x98, 0xaa, 0xca, 0xbc, 0xbd, 0x8a, 0x31, 0x34, 0x82, 0xda, 0xac, - 0x08, 0x53, 0x23, 0x98, 0xcc, 0x9a, 0x10, 0x44, 0x43, 0x32, 0x42, 0x12, 0x90, 0xdb, 0xbc, 0x9a, - 0x10, 0x11, 0xa8, 0xbb, 0x1a, 0x56, 0x23, 0x81, 0xba, 0x89, 0x73, 0x35, 0x33, 0x02, 0x98, 0xa9, - 0xcb, 0xbc, 0xac, 0x19, 0x63, 0x22, 0xa8, 0xcd, 0xbb, 0x8a, 0x10, 0x90, 0xdd, 0xbc, 0xaa, 0x88, - 0x21, 0x21, 0x32, 0x34, 0x13, 0xc8, 0xce, 0xab, 0x09, 0x31, 0x22, 0x80, 0x89, 0x72, 0x35, 0x23, - 0x90, 0xba, 0x89, 0x64, 0x24, 0x13, 0x80, 0xb9, 0xbc, 0xbd, 0xbc, 0x9b, 0x28, 0x44, 0x23, 0xa8, - 0xcc, 0x8a, 0x31, 0x44, 0x01, 0xb8, 0xcb, 0x09, 0x42, 0x44, 0x33, 0x34, 0x24, 0x11, 0xc9, 0xbc, - 0xac, 0x88, 0x11, 0x80, 0xb9, 0x99, 0x52, 0x35, 0x12, 0xa9, 0xbb, 0x48, 0x46, 0x34, 0x22, 0x81, - 0x98, 0xca, 0xdb, 0xbb, 0x8a, 0x31, 0x35, 0x82, 0xeb, 0xbc, 0x9b, 0x08, 0x81, 0xda, 0xcd, 0xab, - 0x9a, 0x18, 0x20, 0x33, 0x34, 0x24, 0x90, 0xfb, 0xbb, 0x9b, 0x10, 0x32, 0x81, 0x88, 0x51, 0x55, - 0x33, 0x02, 0xa8, 0x9a, 0x41, 0x55, 0x32, 0x11, 0x88, 0xbb, 0xcd, 0xcc, 0xaa, 0x09, 0x31, 0x43, - 0x81, 0xca, 0xaa, 0x18, 0x44, 0x22, 0xa0, 0xcb, 0x9a, 0x30, 0x46, 0x43, 0x34, 0x24, 0x13, 0xa0, - 0xdb, 0xbb, 0x9a, 0x08, 0x90, 0xa9, 0x9a, 0x41, 0x46, 0x22, 0x90, 0xaa, 0x18, 0x55, 0x35, 0x23, - 0x13, 0x81, 0xb9, 0xcd, 0xcb, 0x9b, 0x18, 0x43, 0x12, 0xc9, 0xbd, 0xbb, 0x8a, 0x88, 0xca, 0xce, - 0xcb, 0xaa, 0x89, 0x08, 0x31, 0x53, 0x33, 0x02, 0xd9, 0xcc, 0x9a, 0x09, 0x10, 0x00, 0x08, 0x51, - 0x44, 0x24, 0x12, 0x98, 0x89, 0x31, 0x46, 0x33, 0x22, 0x01, 0xa9, 0xce, 0xcc, 0xab, 0x8a, 0x20, - 0x33, 0x82, 0xba, 0x9d, 0x18, 0x43, 0x23, 0x91, 0xcb, 0x9a, 0x30, 0x45, 0x54, 0x63, 0x33, 0x14, - 0x81, 0xb9, 0xac, 0x9b, 0x88, 0x98, 0xbb, 0x9a, 0x51, 0x44, 0x22, 0x80, 0x9b, 0x28, 0x65, 0x43, - 0x33, 0x22, 0x22, 0x90, 0xeb, 0xcc, 0xab, 0x19, 0x32, 0x03, 0xd9, 0xcc, 0xaa, 0x89, 0x98, 0xdb, - 0xcd, 0xbb, 0xaa, 0x9a, 0x99, 0x18, 0x63, 0x34, 0x12, 0xa9, 0xcd, 0xaa, 0x08, 0x10, 0x98, 0x9a, - 0x40, 0x46, 0x24, 0x12, 0x98, 0x88, 0x41, 0x34, 0x24, 0x02, 0x01, 0x81, 0xc9, 0xce, 0xbc, 0x9b, - 0x28, 0x32, 0x01, 0xcb, 0xab, 0x38, 0x35, 0x14, 0xa8, 0xbc, 0x09, 0x41, 0x43, 0x32, 0x54, 0x45, - 0x33, 0x11, 0xa9, 0xbc, 0x8a, 0x08, 0x98, 0xcc, 0xab, 0x28, 0x36, 0x23, 0x91, 0xcb, 0x19, 0x54, - 0x34, 0x23, 0x12, 0x21, 0x12, 0xa8, 0xcf, 0xcb, 0x89, 0x31, 0x23, 0xc9, 0xcd, 0x9a, 0x08, 0x00, - 0xca, 0xdd, 0xab, 0x9b, 0x88, 0x98, 0x9a, 0x10, 0x45, 0x23, 0xa1, 0xcc, 0xbb, 0x19, 0x21, 0x90, - 0xcc, 0x0a, 0x64, 0x34, 0x12, 0x90, 0x9a, 0x38, 0x46, 0x33, 0x11, 0x88, 0x08, 0x90, 0xeb, 0xcd, - 0xab, 0x19, 0x32, 0x02, 0xda, 0xac, 0x19, 0x53, 0x23, 0x90, 0xbc, 0x9b, 0x40, 0x34, 0x23, 0x21, - 0x55, 0x34, 0x13, 0x90, 0xcb, 0x9b, 0x28, 0x01, 0xe9, 0xbc, 0x0b, 0x52, 0x24, 0x81, 0xb9, 0x9b, - 0x51, 0x36, 0x23, 0x81, 0x80, 0x11, 0x02, 0xd9, 0xcc, 0x9b, 0x21, 0x24, 0xa1, 0xce, 0xbb, 0x08, - 0x22, 0x90, 0xed, 0xbc, 0xaa, 0x08, 0x00, 0x98, 0x89, 0x30, 0x44, 0x01, 0xda, 0xac, 0x0a, 0x31, - 0x12, 0xda, 0xbb, 0x38, 0x57, 0x23, 0x81, 0xaa, 0x0a, 0x73, 0x43, 0x11, 0x88, 0x99, 0x80, 0x90, - 0xcc, 0xbc, 0x8b, 0x32, 0x24, 0xc8, 0xcc, 0x8b, 0x41, 0x34, 0x01, 0xca, 0xbb, 0x19, 0x63, 0x33, - 0x11, 0x21, 0x44, 0x24, 0x82, 0xc9, 0xab, 0x18, 0x42, 0x90, 0xec, 0xab, 0x10, 0x44, 0x13, 0xb8, - 0xcb, 0x18, 0x54, 0x24, 0x02, 0x88, 0x09, 0x00, 0x91, 0xda, 0xbb, 0x18, 0x35, 0x03, 0xfb, 0xbd, - 0x8a, 0x20, 0x13, 0xd8, 0xcd, 0xab, 0x89, 0x10, 0x81, 0x98, 0x09, 0x31, 0x23, 0xd8, 0xcd, 0x8b, - 0x30, 0x43, 0xa1, 0xcc, 0x8a, 0x61, 0x34, 0x02, 0xa8, 0xab, 0x40, 0x55, 0x22, 0x81, 0xa9, 0x99, - 0x88, 0xb8, 0xcc, 0xab, 0x30, 0x44, 0x91, 0xdc, 0xac, 0x18, 0x53, 0x23, 0xa8, 0xdb, 0x9a, 0x30, - 0x44, 0x22, 0x01, 0x31, 0x43, 0x13, 0xb9, 0xbd, 0x0a, 0x43, 0x14, 0xc9, 0xbd, 0x8a, 0x41, 0x34, - 0x81, 0xcb, 0x8b, 0x41, 0x36, 0x23, 0x91, 0x99, 0x89, 0x00, 0xa8, 0xbc, 0x8a, 0x54, 0x14, 0xb0, - 0xcf, 0x9b, 0x19, 0x32, 0x01, 0xec, 0xbc, 0x9a, 0x18, 0x11, 0x00, 0x99, 0x18, 0x21, 0xa0, 0xdd, - 0xac, 0x18, 0x53, 0x02, 0xb8, 0xad, 0x29, 0x44, 0x24, 0x91, 0xba, 0x0a, 0x54, 0x34, 0x12, 0x98, - 0xba, 0x99, 0x99, 0xca, 0xbb, 0x2a, 0x55, 0x03, 0xc9, 0xbe, 0x9b, 0x32, 0x36, 0x02, 0xca, 0xbb, - 0x09, 0x63, 0x33, 0x21, 0x01, 0x22, 0x33, 0x90, 0xcd, 0x9b, 0x40, 0x34, 0x81, 0xcc, 0xac, 0x18, - 0x53, 0x22, 0xa9, 0xad, 0x08, 0x54, 0x24, 0x02, 0xa8, 0x99, 0x09, 0x88, 0xa9, 0x9a, 0x52, 0x35, - 0x81, 0xec, 0xbc, 0x8a, 0x20, 0x23, 0xb0, 0xcf, 0xac, 0x89, 0x10, 0x02, 0x00, 0x88, 0x08, 0x80, - 0xdb, 0xbd, 0x89, 0x41, 0x24, 0x81, 0xca, 0x9a, 0x41, 0x35, 0x12, 0xb9, 0xbb, 0x51, 0x46, 0x23, - 0x81, 0xaa, 0xba, 0x9a, 0xa9, 0xba, 0x1a, 0x64, 0x33, 0xb1, 0xcf, 0xbb, 0x18, 0x63, 0x23, 0xa0, - 0xdb, 0xaa, 0x20, 0x44, 0x23, 0x22, 0x21, 0x11, 0x80, 0xdb, 0xac, 0x29, 0x63, 0x22, 0xa8, 0xcc, - 0x8a, 0x21, 0x25, 0x91, 0xca, 0x9b, 0x52, 0x45, 0x22, 0x00, 0x9a, 0xaa, 0x89, 0x99, 0x99, 0x31, - 0x47, 0x12, 0xc9, 0xbe, 0xac, 0x18, 0x31, 0x01, 0xeb, 0xcc, 0x9a, 0x08, 0x11, 0x02, 0x81, 0x80, - 0x98, 0xcb, 0xbe, 0x9b, 0x38, 0x44, 0x13, 0xb8, 0xbb, 0x19, 0x46, 0x33, 0x90, 0xca, 0x1a, 0x64, - 0x34, 0x12, 0x90, 0xba, 0xbb, 0xbb, 0xba, 0x89, 0x73, 0x25, 0x02, 0xea, 0xcb, 0x8b, 0x30, 0x35, - 0x02, 0xb9, 0xad, 0x0a, 0x42, 0x34, 0x33, 0x22, 0x12, 0x90, 0xca, 0xcc, 0x89, 0x41, 0x24, 0x82, - 0xc9, 0xab, 0x19, 0x44, 0x02, 0xb9, 0xbc, 0x28, 0x56, 0x34, 0x02, 0x90, 0xaa, 0xbb, 0xaa, 0x99, - 0x41, 0x45, 0x24, 0x90, 0xcd, 0xbc, 0x99, 0x20, 0x22, 0xa8, 0xce, 0xbb, 0x9b, 0x10, 0x32, 0x22, - 0x01, 0x98, 0xdc, 0xcc, 0xbb, 0x09, 0x42, 0x24, 0x01, 0xa9, 0x8a, 0x41, 0x34, 0x02, 0xc9, 0x9a, - 0x72, 0x54, 0x22, 0x82, 0xa8, 0xbb, 0xad, 0xaa, 0x89, 0x32, 0x46, 0x12, 0xb8, 0xcd, 0xab, 0x18, - 0x42, 0x33, 0x90, 0xdb, 0x9b, 0x28, 0x44, 0x34, 0x24, 0x22, 0x80, 0xb9, 0xbd, 0x9b, 0x20, 0x45, - 0x12, 0x98, 0xaa, 0x09, 0x31, 0x33, 0xb0, 0xbe, 0x8a, 0x55, 0x45, 0x22, 0x00, 0x98, 0xbb, 0xbc, - 0xab, 0x28, 0x55, 0x33, 0x03, 0xeb, 0xbc, 0x9c, 0x08, 0x20, 0x80, 0xdb, 0xbc, 0xab, 0x89, 0x11, - 0x33, 0x33, 0x82, 0xfb, 0xcd, 0xbb, 0x8a, 0x21, 0x34, 0x12, 0x98, 0x89, 0x21, 0x35, 0x12, 0xb8, - 0xbb, 0x51, 0x47, 0x34, 0x22, 0x00, 0xaa, 0xcd, 0xbb, 0x9b, 0x20, 0x55, 0x23, 0x81, 0xbc, 0xad, - 0x8a, 0x21, 0x32, 0x01, 0xc9, 0xab, 0x0a, 0x52, 0x54, 0x53, 0x32, 0x11, 0xa9, 0xcc, 0xab, 0x18, - 0x42, 0x23, 0x01, 0x99, 0x08, 0x31, 0x23, 0xb8, 0xbf, 0x8a, 0x62, 0x45, 0x33, 0x12, 0x01, 0xc9, - 0xcc, 0xbb, 0x8a, 0x52, 0x35, 0x23, 0xb8, 0xcd, 0xbb, 0x89, 0x00, 0x00, 0xca, 0xcc, 0xab, 0x9b, - 0x09, 0x30, 0x44, 0x14, 0xa1, 0xdc, 0xbd, 0x9a, 0x18, 0x22, 0x13, 0x81, 0x08, 0x32, 0x34, 0x82, - 0xca, 0x9c, 0x38, 0x47, 0x43, 0x22, 0x11, 0x98, 0xda, 0xcc, 0xbb, 0x09, 0x53, 0x25, 0x02, 0xc8, - 0xbb, 0x9b, 0x28, 0x32, 0x02, 0xb9, 0xbb, 0x8a, 0x41, 0x45, 0x45, 0x35, 0x23, 0x91, 0xdb, 0xbc, - 0x8a, 0x31, 0x43, 0x11, 0x98, 0x00, 0x32, 0x14, 0xa8, 0xcd, 0x8a, 0x31, 0x46, 0x32, 0x12, 0x11, - 0x90, 0xea, 0xcc, 0xab, 0x28, 0x54, 0x14, 0x81, 0xca, 0xbb, 0x9a, 0x00, 0x80, 0xca, 0xcc, 0xaa, - 0xa9, 0x98, 0x09, 0x42, 0x35, 0x13, 0xf9, 0xcc, 0xab, 0x0a, 0x31, 0x32, 0x00, 0x88, 0x41, 0x34, - 0x12, 0xb9, 0xae, 0x09, 0x44, 0x34, 0x22, 0x01, 0x10, 0x98, 0xec, 0xcc, 0x9a, 0x38, 0x54, 0x22, - 0x90, 0xcb, 0x9b, 0x08, 0x22, 0x81, 0xb9, 0x9c, 0x18, 0x32, 0x33, 0x54, 0x55, 0x34, 0x12, 0xb9, - 0xcd, 0x9b, 0x18, 0x33, 0x12, 0x90, 0x08, 0x53, 0x24, 0x92, 0xeb, 0xab, 0x28, 0x54, 0x23, 0x12, - 0x00, 0x10, 0xa0, 0xec, 0xbc, 0x9a, 0x42, 0x36, 0x12, 0xb9, 0xbc, 0xab, 0x08, 0x80, 0xc9, 0xbd, - 0xab, 0x89, 0x88, 0xa9, 0x09, 0x54, 0x25, 0x92, 0xec, 0xac, 0x9b, 0x10, 0x22, 0x01, 0x88, 0x20, - 0x45, 0x23, 0x90, 0xbd, 0x9b, 0x41, 0x45, 0x12, 0x01, 0x08, 0x88, 0xa8, 0xdd, 0xcb, 0x09, 0x52, - 0x24, 0x02, 0xc9, 0xba, 0x89, 0x31, 0x11, 0xc9, 0xbb, 0x09, 0x43, 0x24, 0x11, 0x52, 0x45, 0x24, - 0x81, 0xdb, 0xcb, 0x89, 0x30, 0x22, 0x81, 0x88, 0x41, 0x35, 0x13, 0xc9, 0xbd, 0x0a, 0x42, 0x25, - 0x12, 0x80, 0x08, 0x00, 0xb8, 0xce, 0xbb, 0x29, 0x55, 0x23, 0x91, 0xdb, 0xab, 0x09, 0x01, 0xa8, - 0xdd, 0xab, 0x89, 0x10, 0x80, 0x99, 0x18, 0x54, 0x23, 0xd8, 0xce, 0xab, 0x89, 0x22, 0x02, 0x80, - 0x09, 0x63, 0x34, 0x02, 0xca, 0xac, 0x19, 0x63, 0x33, 0x01, 0x98, 0x88, 0x80, 0xc9, 0xce, 0xaa, - 0x20, 0x45, 0x23, 0xa0, 0xcb, 0x9a, 0x20, 0x23, 0xb0, 0xbe, 0x9b, 0x40, 0x43, 0x13, 0x10, 0x52, - 0x44, 0x13, 0xb8, 0xdd, 0xaa, 0x18, 0x32, 0x11, 0x89, 0x28, 0x55, 0x33, 0x91, 0xeb, 0xab, 0x28, - 0x54, 0x13, 0x81, 0x98, 0x08, 0x88, 0xd9, 0xbc, 0x9b, 0x51, 0x35, 0x03, 0xb9, 0xbd, 0x8a, 0x10, - 0x80, 0xfb, 0xbc, 0x9a, 0x18, 0x12, 0x90, 0x99, 0x30, 0x35, 0x02, 0xed, 0xad, 0x9b, 0x18, 0x12, - 0x81, 0x89, 0x31, 0x47, 0x13, 0x90, 0xcc, 0x9a, 0x30, 0x35, 0x23, 0x90, 0x99, 0x89, 0x98, 0xeb, - 0xbc, 0x0a, 0x73, 0x43, 0x01, 0xb9, 0xbb, 0x18, 0x43, 0x82, 0xeb, 0xac, 0x19, 0x42, 0x24, 0x10, - 0x00, 0x43, 0x43, 0x82, 0xeb, 0xac, 0x8a, 0x11, 0x13, 0x80, 0x09, 0x63, 0x35, 0x13, 0xc8, 0xbc, - 0x8a, 0x42, 0x35, 0x02, 0x98, 0x99, 0x89, 0x90, 0xeb, 0xbb, 0x18, 0x55, 0x23, 0x90, 0xcc, 0xaa, - 0x00, 0x02, 0xc8, 0xce, 0xab, 0x89, 0x22, 0x12, 0x98, 0x09, 0x31, 0x24, 0xd9, 0xde, 0xba, 0x89, - 0x11, 0x11, 0x99, 0x18, 0x55, 0x34, 0x01, 0xc9, 0xcb, 0x19, 0x52, 0x33, 0x82, 0xa9, 0x9a, 0x89, - 0xa9, 0xcc, 0x9b, 0x50, 0x45, 0x12, 0xa0, 0xcb, 0x09, 0x32, 0x24, 0xb9, 0xbf, 0xab, 0x21, 0x45, - 0x22, 0x10, 0x20, 0x32, 0x14, 0xc8, 0xcc, 0xab, 0x18, 0x21, 0x82, 0x89, 0x40, 0x47, 0x24, 0x81, - 0xbb, 0xac, 0x18, 0x54, 0x22, 0x81, 0xa9, 0x99, 0x99, 0xa9, 0xdb, 0x8a, 0x53, 0x44, 0x01, 0xca, - 0xbb, 0x0a, 0x22, 0x91, 0xdf, 0xbc, 0xaa, 0x10, 0x22, 0x12, 0x88, 0x18, 0x11, 0xa0, 0xdf, 0xbc, - 0xaa, 0x00, 0x01, 0x98, 0x09, 0x72, 0x35, 0x33, 0x90, 0xbd, 0x9b, 0x30, 0x36, 0x23, 0x90, 0xba, - 0xaa, 0x9a, 0xcb, 0xab, 0x38, 0x47, 0x24, 0x81, 0xab, 0x9b, 0x41, 0x25, 0x81, 0xdc, 0xac, 0x09, - 0x32, 0x35, 0x22, 0x11, 0x21, 0x12, 0xa0, 0xdc, 0xac, 0x8a, 0x11, 0x81, 0x98, 0x39, 0x57, 0x34, - 0x13, 0xa8, 0xbc, 0x8b, 0x52, 0x34, 0x12, 0x90, 0xab, 0xab, 0xbb, 0xcb, 0x8a, 0x52, 0x35, 0x03, - 0xc9, 0xbd, 0x8a, 0x21, 0x12, 0xfa, 0xce, 0xba, 0x09, 0x20, 0x22, 0x11, 0x81, 0x00, 0xa8, 0xdc, - 0xbd, 0xab, 0x89, 0x00, 0xa0, 0x9a, 0x41, 0x57, 0x33, 0x02, 0xb9, 0xbc, 0x09, 0x44, 0x43, 0x01, - 0xa8, 0xbb, 0xbb, 0xbb, 0x9b, 0x48, 0x46, 0x33, 0x82, 0xca, 0x9b, 0x30, 0x37, 0x03, 0xd9, 0xcc, - 0x9a, 0x28, 0x53, 0x33, 0x23, 0x22, 0x01, 0xa0, 0xcc, 0xbb, 0x8b, 0x10, 0x80, 0xbb, 0x0b, 0x67, - 0x35, 0x24, 0x81, 0xaa, 0x9b, 0x38, 0x45, 0x23, 0x01, 0xb9, 0xcb, 0xac, 0xbb, 0x89, 0x42, 0x35, - 0x12, 0xc9, 0xcc, 0x8a, 0x10, 0x23, 0xc0, 0xcf, 0xcb, 0xaa, 0x18, 0x21, 0x23, 0x13, 0x01, 0xa9, - 0xcd, 0xad, 0x9b, 0x09, 0x08, 0xa9, 0xcb, 0x19, 0x55, 0x35, 0x22, 0x98, 0xba, 0x8a, 0x41, 0x44, - 0x12, 0x90, 0xb9, 0xbd, 0xcb, 0xaa, 0x28, 0x45, 0x33, 0x02, 0xca, 0xab, 0x30, 0x55, 0x13, 0xa0, - 0xcd, 0xab, 0x89, 0x42, 0x43, 0x34, 0x32, 0x02, 0xa8, 0xdb, 0xbb, 0x89, 0x21, 0x01, 0xdb, 0xab, - 0x40, 0x47, 0x24, 0x02, 0x98, 0x99, 0x18, 0x42, 0x24, 0x11, 0x90, 0xba, 0xbe, 0xbc, 0x9b, 0x40, - 0x44, 0x22, 0xb8, 0xbd, 0xab, 0x20, 0x33, 0x92, 0xde, 0xbd, 0xba, 0x89, 0x10, 0x32, 0x34, 0x23, - 0x90, 0xdc, 0xcc, 0x9a, 0x09, 0x11, 0x98, 0xbc, 0x9b, 0x52, 0x35, 0x24, 0x81, 0xa9, 0x89, 0x30, - 0x43, 0x13, 0x81, 0xa8, 0xcd, 0xbd, 0xbc, 0x09, 0x53, 0x35, 0x02, 0xa9, 0xac, 0x09, 0x63, 0x23, - 0x82, 0xcb, 0xbc, 0x9a, 0x10, 0x43, 0x44, 0x34, 0x22, 0x91, 0xcb, 0xbc, 0x8a, 0x21, 0x12, 0xb8, - 0xbe, 0x09, 0x73, 0x24, 0x13, 0x80, 0x99, 0x10, 0x43, 0x32, 0x01, 0x80, 0xa8, 0xec, 0xcc, 0xbb, - 0x18, 0x73, 0x23, 0x90, 0xdb, 0xbb, 0x08, 0x43, 0x12, 0xd9, 0xcc, 0xbb, 0x9a, 0x08, 0x20, 0x43, - 0x44, 0x02, 0xb8, 0xce, 0xba, 0x09, 0x21, 0x81, 0xc9, 0xac, 0x19, 0x63, 0x33, 0x02, 0xa8, 0x89, - 0x31, 0x35, 0x11, 0x98, 0x8a, 0xba, 0xde, 0xcc, 0x9a, 0x30, 0x45, 0x23, 0x90, 0xbc, 0x8b, 0x42, - 0x35, 0x12, 0xb8, 0xcc, 0x9a, 0x08, 0x21, 0x43, 0x54, 0x33, 0x03, 0xb9, 0xbf, 0x9a, 0x28, 0x22, - 0x82, 0xdb, 0xab, 0x30, 0x46, 0x23, 0x01, 0x89, 0x28, 0x53, 0x23, 0x81, 0x98, 0x89, 0xa9, 0xcf, - 0xcc, 0x8a, 0x31, 0x45, 0x02, 0xc9, 0xac, 0x8a, 0x30, 0x33, 0x90, 0xdd, 0xbb, 0x9b, 0x89, 0x00, - 0x20, 0x45, 0x24, 0x81, 0xeb, 0xbc, 0x8a, 0x28, 0x22, 0x90, 0xbd, 0x8b, 0x40, 0x44, 0x12, 0x98, - 0x99, 0x21, 0x44, 0x12, 0xa8, 0xaa, 0x99, 0xb9, 0xcf, 0xbc, 0x09, 0x63, 0x34, 0x02, 0xba, 0xad, - 0x18, 0x53, 0x33, 0x80, 0xcb, 0xab, 0x09, 0x11, 0x22, 0x63, 0x45, 0x23, 0x91, 0xeb, 0xbb, 0x8a, - 0x32, 0x14, 0xb0, 0xbc, 0x0a, 0x63, 0x24, 0x02, 0x98, 0x08, 0x53, 0x43, 0x02, 0xa8, 0x99, 0x89, - 0xc9, 0xcd, 0xac, 0x19, 0x44, 0x24, 0xa0, 0xeb, 0xaa, 0x18, 0x32, 0x03, 0xd9, 0xbc, 0xab, 0x89, - 0x80, 0x08, 0x41, 0x45, 0x13, 0xa8, 0xbf, 0xac, 0x88, 0x22, 0x12, 0xc9, 0xbb, 0x19, 0x63, 0x23, - 0x80, 0x9a, 0x29, 0x64, 0x23, 0x91, 0xba, 0xab, 0xa9, 0xca, 0xce, 0x9b, 0x30, 0x37, 0x14, 0xa0, - 0xcb, 0x8a, 0x41, 0x34, 0x12, 0xa9, 0xac, 0x8a, 0x10, 0x12, 0x21, 0x45, 0x35, 0x13, 0xc8, 0xcd, - 0x9a, 0x18, 0x23, 0x02, 0xba, 0x9d, 0x28, 0x35, 0x23, 0x80, 0x89, 0x51, 0x45, 0x22, 0x90, 0xaa, - 0x9a, 0x98, 0xda, 0xcc, 0x8b, 0x50, 0x34, 0x02, 0xd9, 0xbc, 0x8a, 0x21, 0x24, 0x90, 0xcc, 0xab, - 0x8a, 0x08, 0x08, 0x08, 0x63, 0x34, 0x02, 0xeb, 0xbd, 0x9a, 0x20, 0x22, 0x81, 0xbc, 0x9b, 0x40, - 0x34, 0x02, 0xa9, 0x8a, 0x72, 0x44, 0x11, 0x99, 0xbb, 0xaa, 0x99, 0xdb, 0xad, 0x0a, 0x54, 0x43, - 0x02, 0xba, 0xbc, 0x18, 0x44, 0x14, 0x91, 0xb9, 0x9a, 0x18, 0x21, 0x11, 0x41, 0x55, 0x33, 0x82, - 0xdc, 0xbc, 0x89, 0x21, 0x23, 0x90, 0xbc, 0x0a, 0x62, 0x33, 0x02, 0xa9, 0x38, 0x56, 0x24, 0x02, - 0xa8, 0xba, 0x99, 0xa9, 0xdc, 0xbb, 0x19, 0x55, 0x23, 0xa0, 0xdc, 0xab, 0x18, 0x32, 0x03, 0xd9, - 0xbc, 0xaa, 0x08, 0x80, 0x88, 0x21, 0x55, 0x33, 0xb0, 0xcf, 0xbb, 0x09, 0x22, 0x13, 0xb8, 0xbc, - 0x19, 0x53, 0x13, 0xa0, 0xbb, 0x58, 0x46, 0x33, 0x81, 0xcb, 0xbb, 0xaa, 0xaa, 0xcc, 0x9b, 0x50, - 0x45, 0x13, 0xa0, 0xdb, 0x99, 0x41, 0x43, 0x12, 0xa9, 0xba, 0x09, 0x31, 0x22, 0x21, 0x54, 0x35, - 0x23, 0xc8, 0xce, 0xaa, 0x08, 0x32, 0x02, 0xb8, 0xaa, 0x30, 0x36, 0x23, 0xa8, 0x0a, 0x74, 0x35, - 0x33, 0x90, 0xba, 0xbb, 0xaa, 0xcb, 0xbc, 0x9b, 0x62, 0x25, 0x02, 0xca, 0xbd, 0x99, 0x21, 0x22, - 0xa1, 0xcd, 0xab, 0x89, 0x00, 0x00, 0x08, 0x52, 0x34, 0x03, 0xfb, 0xbd, 0x9b, 0x10, 0x32, 0x81, - 0xba, 0x9b, 0x41, 0x34, 0x91, 0xcb, 0x0a, 0x65, 0x44, 0x02, 0x98, 0xcb, 0xba, 0xa9, 0xba, 0xbb, - 0x18, 0x56, 0x24, 0x01, 0xb9, 0x9c, 0x29, 0x44, 0x23, 0x80, 0xba, 0x8b, 0x21, 0x34, 0x22, 0x41, - 0x44, 0x24, 0x92, 0xdc, 0xbc, 0x9a, 0x11, 0x23, 0x80, 0x9a, 0x19, 0x54, 0x23, 0x80, 0xaa, 0x61, - 0x47, 0x33, 0x03, 0x98, 0xcb, 0xba, 0xba, 0xcb, 0xaa, 0x30, 0x55, 0x22, 0xb8, 0xdc, 0xab, 0x08, - 0x22, 0x82, 0xda, 0xbc, 0x9a, 0x00, 0x01, 0x08, 0x31, 0x44, 0x14, 0xb0, 0xcf, 0xbb, 0x8a, 0x21, - 0x11, 0x98, 0x99, 0x21, 0x44, 0x91, 0xeb, 0x9b, 0x51, 0x46, 0x23, 0x01, 0xba, 0xbc, 0xbc, 0xba, - 0xaa, 0x09, 0x62, 0x44, 0x02, 0x98, 0xab, 0x0a, 0x53, 0x34, 0x11, 0x99, 0x9b, 0x28, 0x43, 0x33, - 0x42, 0x53, 0x43, 0x02, 0xda, 0xcd, 0xaa, 0x88, 0x21, 0x00, 0x88, 0x20, 0x53, 0x24, 0x90, 0xba, - 0x28, 0x77, 0x34, 0x23, 0x00, 0xa9, 0xcb, 0xbb, 0xcb, 0x9a, 0x18, 0x34, 0x24, 0x90, 0xdc, 0xab, - 0x89, 0x20, 0x01, 0xca, 0xcc, 0x9b, 0x09, 0x01, 0x11, 0x21, 0x53, 0x23, 0xb8, 0xdf, 0xbb, 0xab, - 0x00, 0x01, 0x88, 0x09, 0x42, 0x34, 0x82, 0xec, 0xac, 0x28, 0x64, 0x34, 0x12, 0x98, 0xca, 0xdb, - 0xba, 0xba, 0x09, 0x31, 0x36, 0x22, 0x90, 0xba, 0x0a, 0x52, 0x44, 0x11, 0x98, 0x9a, 0x18, 0x53, - 0x33, 0x42, 0x33, 0x24, 0x02, 0xda, 0xcd, 0xaa, 0x89, 0x08, 0x88, 0x89, 0x31, 0x37, 0x24, 0x91, - 0xbb, 0x0c, 0x73, 0x45, 0x33, 0x12, 0x80, 0xba, 0xcc, 0xbb, 0x9c, 0x09, 0x42, 0x23, 0x81, 0xcc, - 0xbb, 0x8a, 0x10, 0x01, 0xda, 0xbd, 0xaa, 0x09, 0x20, 0x11, 0x21, 0x35, 0x23, 0xb0, 0xdf, 0xbb, - 0x9a, 0x08, 0x80, 0xaa, 0x8b, 0x54, 0x35, 0x12, 0xda, 0xbd, 0x89, 0x42, 0x45, 0x22, 0x01, 0x99, - 0xdb, 0xbc, 0xcb, 0x8a, 0x10, 0x34, 0x14, 0x91, 0xaa, 0x8a, 0x42, 0x34, 0x12, 0xa8, 0xaa, 0x28, - 0x44, 0x34, 0x32, 0x43, 0x24, 0x02, 0xd9, 0xcc, 0x9b, 0x89, 0x01, 0xa8, 0xbb, 0x2a, 0x57, 0x33, - 0x02, 0xca, 0xac, 0x20, 0x46, 0x34, 0x23, 0x01, 0x98, 0xca, 0xcc, 0xbb, 0x8a, 0x31, 0x34, 0x83, - 0xda, 0xbc, 0x8a, 0x20, 0x02, 0xc9, 0xcd, 0xaa, 0x08, 0x11, 0x12, 0x11, 0x33, 0x25, 0x90, 0xdd, - 0xac, 0x8a, 0x10, 0x01, 0xc8, 0xbb, 0x28, 0x47, 0x13, 0xa0, 0xdc, 0xaa, 0x20, 0x44, 0x33, 0x12, - 0x80, 0xba, 0xdd, 0xbc, 0xbb, 0x09, 0x53, 0x33, 0x82, 0xc9, 0xaa, 0x40, 0x34, 0x23, 0xa8, 0xcb, - 0x09, 0x43, 0x44, 0x12, 0x22, 0x43, 0x12, 0xb8, 0xde, 0xba, 0x08, 0x21, 0x91, 0xcb, 0x9c, 0x40, - 0x35, 0x14, 0x98, 0xac, 0x8a, 0x53, 0x35, 0x33, 0x11, 0x00, 0xa8, 0xcc, 0xbd, 0xab, 0x18, 0x53, - 0x22, 0xb8, 0xbd, 0xab, 0x10, 0x33, 0xa0, 0xce, 0xac, 0x89, 0x21, 0x21, 0x11, 0x31, 0x53, 0x82, - 0xea, 0xbd, 0xaa, 0x20, 0x23, 0xa1, 0xcc, 0x9b, 0x52, 0x35, 0x02, 0xca, 0xad, 0x0a, 0x32, 0x35, - 0x12, 0x81, 0x98, 0xba, 0xcf, 0xcb, 0x9a, 0x20, 0x44, 0x12, 0xa9, 0xab, 0x09, 0x54, 0x23, 0x81, - 0xca, 0x9a, 0x30, 0x35, 0x33, 0x22, 0x42, 0x33, 0x91, 0xed, 0xac, 0x8a, 0x20, 0x13, 0xb8, 0xbd, - 0x0a, 0x73, 0x43, 0x81, 0xb9, 0x9c, 0x28, 0x54, 0x33, 0x22, 0x01, 0x80, 0xa9, 0xce, 0xcb, 0x9a, - 0x41, 0x33, 0x91, 0xeb, 0xbb, 0x09, 0x32, 0x13, 0xfa, 0xdb, 0x8a, 0x18, 0x22, 0x02, 0x11, 0x32, - 0x14, 0xb0, 0xcf, 0xac, 0x08, 0x31, 0x13, 0xc9, 0xcb, 0x08, 0x54, 0x32, 0xa0, 0xcc, 0xaa, 0x28, - 0x34, 0x14, 0x01, 0x88, 0x99, 0xda, 0xdc, 0xbb, 0x09, 0x43, 0x34, 0x80, 0xcb, 0x9a, 0x31, 0x36, - 0x13, 0xb9, 0xbc, 0x09, 0x53, 0x24, 0x22, 0x21, 0x23, 0x13, 0xea, 0xcd, 0x9b, 0x19, 0x33, 0x82, - 0xda, 0x9c, 0x28, 0x54, 0x13, 0xa0, 0xcb, 0x8a, 0x52, 0x34, 0x23, 0x10, 0x00, 0x80, 0xca, 0xce, - 0xaa, 0x19, 0x43, 0x23, 0xc9, 0xbd, 0x9a, 0x20, 0x33, 0xa1, 0xde, 0xab, 0x89, 0x31, 0x23, 0x12, - 0x32, 0x43, 0x82, 0xec, 0xbd, 0x9a, 0x30, 0x43, 0x81, 0xda, 0x9a, 0x30, 0x36, 0x02, 0xc9, 0xac, - 0x8a, 0x32, 0x25, 0x02, 0x88, 0x98, 0xa9, 0xec, 0xbc, 0x9b, 0x20, 0x45, 0x02, 0xb8, 0xac, 0x19, - 0x44, 0x33, 0x91, 0xcb, 0xab, 0x30, 0x45, 0x23, 0x22, 0x23, 0x23, 0xa0, 0xcf, 0xbc, 0x8a, 0x21, - 0x14, 0x90, 0xbc, 0x8b, 0x62, 0x43, 0x02, 0xaa, 0xac, 0x28, 0x54, 0x23, 0x02, 0x00, 0x01, 0xa8, - 0xfb, 0xbc, 0x8a, 0x31, 0x34, 0x91, 0xdc, 0xac, 0x08, 0x31, 0x12, 0xca, 0xbe, 0x9b, 0x10, 0x32, - 0x33, 0x22, 0x43, 0x12, 0xc8, 0xcf, 0xab, 0x09, 0x42, 0x23, 0xa8, 0xbc, 0x09, 0x73, 0x23, 0x80, - 0xbc, 0xac, 0x10, 0x43, 0x13, 0x80, 0x98, 0x99, 0xda, 0xcd, 0xac, 0x89, 0x42, 0x24, 0x80, 0xdb, - 0x9a, 0x31, 0x45, 0x02, 0xa8, 0xbb, 0x0a, 0x52, 0x34, 0x23, 0x32, 0x33, 0x82, 0xfa, 0xbd, 0x9c, - 0x19, 0x22, 0x12, 0xba, 0xbc, 0x28, 0x55, 0x13, 0x90, 0xba, 0x0b, 0x63, 0x34, 0x23, 0x81, 0x00, - 0x80, 0xc9, 0xcd, 0xbb, 0x18, 0x63, 0x02, 0xc9, 0xcc, 0x9a, 0x20, 0x23, 0x91, 0xdd, 0xbb, 0x8a, - 0x31, 0x33, 0x24, 0x33, 0x33, 0x91, 0xde, 0xcc, 0x9a, 0x20, 0x23, 0x02, 0xc9, 0xaa, 0x31, 0x45, - 0x12, 0xb9, 0xbd, 0x89, 0x42, 0x23, 0x82, 0xa8, 0x9a, 0xca, 0xdc, 0xcc, 0x9a, 0x20, 0x25, 0x02, - 0xc9, 0xbb, 0x29, 0x55, 0x23, 0x81, 0xca, 0xab, 0x20, 0x44, 0x34, 0x32, 0x33, 0x22, 0xb8, 0xdf, - 0xbb, 0x8a, 0x30, 0x32, 0x90, 0xdb, 0x8a, 0x42, 0x35, 0x02, 0xa9, 0xaa, 0x30, 0x37, 0x24, 0x01, - 0x00, 0x00, 0x98, 0xeb, 0xac, 0x9a, 0x32, 0x24, 0xa0, 0xcf, 0xab, 0x19, 0x22, 0x03, 0xda, 0xcd, - 0x9a, 0x19, 0x22, 0x43, 0x32, 0x33, 0x03, 0xda, 0xce, 0xab, 0x09, 0x32, 0x23, 0xa0, 0xbb, 0x19, - 0x55, 0x23, 0x91, 0xdb, 0x9b, 0x20, 0x53, 0x11, 0x88, 0xaa, 0xaa, 0xdc, 0xcc, 0xbb, 0x19, 0x53, - 0x23, 0xb8, 0xcd, 0x8a, 0x51, 0x34, 0x12, 0xa8, 0xcb, 0x89, 0x42, 0x44, 0x33, 0x43, 0x23, 0x81, - 0xeb, 0xcc, 0xaa, 0x08, 0x11, 0x02, 0x99, 0xaa, 0x20, 0x45, 0x23, 0x90, 0x9a, 0x28, 0x65, 0x33, - 0x13, 0x01, 0x80, 0x90, 0xca, 0xbd, 0x9c, 0x30, 0x43, 0x91, 0xce, 0xad, 0x8a, 0x10, 0x22, 0xb0, - 0xcd, 0xac, 0x8a, 0x10, 0x42, 0x43, 0x43, 0x12, 0x90, 0xdc, 0xbc, 0x99, 0x28, 0x22, 0x02, 0x98, - 0x08, 0x41, 0x43, 0x81, 0xba, 0xac, 0x20, 0x54, 0x02, 0xa0, 0xba, 0xbc, 0xdb, 0xeb, 0xba, 0x09, - 0x42, 0x23, 0xb0, 0xce, 0x9a, 0x20, 0x45, 0x33, 0x80, 0xba, 0xaa, 0x30, 0x45, 0x35, 0x44, 0x32, - 0x02, 0xb9, 0xcd, 0xac, 0x89, 0x00, 0x11, 0x90, 0x98, 0x18, 0x42, 0x33, 0x80, 0x99, 0x40, 0x55, - 0x34, 0x02, 0x01, 0x00, 0x08, 0xa9, 0xbd, 0x9c, 0x30, 0x34, 0x92, 0xde, 0xad, 0x9b, 0x00, 0x12, - 0x90, 0xcc, 0xbc, 0xaa, 0x09, 0x22, 0x44, 0x35, 0x24, 0x81, 0xca, 0xcc, 0x9b, 0x08, 0x11, 0x02, - 0x80, 0x18, 0x42, 0x43, 0x01, 0xba, 0xac, 0x20, 0x35, 0x12, 0xb9, 0xbc, 0xcb, 0xcb, 0xcc, 0xac, - 0x0a, 0x41, 0x33, 0x90, 0xce, 0x9b, 0x18, 0x44, 0x33, 0x82, 0xa9, 0x89, 0x30, 0x54, 0x43, 0x45, - 0x43, 0x13, 0x91, 0xeb, 0xbb, 0xab, 0x08, 0x00, 0x90, 0x89, 0x21, 0x35, 0x23, 0xa0, 0xbb, 0x48, - 0x57, 0x33, 0x22, 0x08, 0x08, 0x80, 0x99, 0xcc, 0xab, 0x40, 0x36, 0x02, 0xfa, 0xbc, 0xab, 0x08, - 0x21, 0x90, 0xea, 0xbb, 0xab, 0x89, 0x00, 0x41, 0x55, 0x34, 0x23, 0xa8, 0xcd, 0xac, 0x88, 0x00, - 0x01, 0x88, 0x10, 0x53, 0x33, 0x91, 0xda, 0xab, 0x38, 0x45, 0x22, 0x98, 0xbc, 0xba, 0xbb, 0xcc, - 0xac, 0x8a, 0x51, 0x34, 0x81, 0xcc, 0xac, 0x09, 0x33, 0x25, 0x82, 0xa8, 0x89, 0x20, 0x43, 0x33, - 0x45, 0x45, 0x24, 0x02, 0xb9, 0xbd, 0xab, 0x89, 0x00, 0x98, 0x9a, 0x20, 0x45, 0x33, 0xa0, 0xbc, - 0x0a, 0x64, 0x34, 0x13, 0x80, 0x99, 0x08, 0x88, 0xca, 0xbb, 0x38, 0x57, 0x13, 0xc0, 0xbd, 0xac, - 0x09, 0x20, 0x81, 0xda, 0xcb, 0x9a, 0x08, 0x00, 0x00, 0x41, 0x46, 0x33, 0x82, 0xeb, 0xbb, 0x9a, - 0x10, 0x11, 0xa9, 0x89, 0x73, 0x34, 0x13, 0xb9, 0xbd, 0x0a, 0x62, 0x23, 0x81, 0xbb, 0xbc, 0xaa, - 0xca, 0xbc, 0xab, 0x30, 0x47, 0x12, 0xb9, 0xbe, 0x8a, 0x31, 0x34, 0x02, 0xa9, 0xab, 0x38, 0x45, - 0x23, 0x21, 0x54, 0x44, 0x22, 0x90, 0xdb, 0xbb, 0x8a, 0x00, 0x98, 0xbc, 0x89, 0x63, 0x34, 0x02, - 0xca, 0xbb, 0x30, 0x47, 0x23, 0x81, 0xa8, 0x89, 0x08, 0xa8, 0xbb, 0x0b, 0x56, 0x44, 0x81, 0xda, - 0xbc, 0x9a, 0x11, 0x12, 0xa9, 0xbe, 0xab, 0x09, 0x21, 0x00, 0x08, 0x73, 0x34, 0x14, 0xa8, 0xcc, - 0x9b, 0x08, 0x11, 0x90, 0xbb, 0x38, 0x57, 0x33, 0x90, 0xdb, 0xab, 0x30, 0x35, 0x14, 0xa8, 0xcb, - 0xab, 0x9a, 0xbb, 0xad, 0x19, 0x54, 0x33, 0x91, 0xcd, 0xbb, 0x29, 0x53, 0x23, 0x98, 0xba, 0x8a, - 0x53, 0x34, 0x12, 0x21, 0x45, 0x34, 0x02, 0xc9, 0xcc, 0x8a, 0x08, 0x80, 0xb9, 0x9c, 0x28, 0x55, - 0x22, 0xa0, 0xbc, 0x0a, 0x62, 0x34, 0x12, 0x88, 0x9a, 0x8a, 0x98, 0xb9, 0xaa, 0x62, 0x46, 0x22, - 0xb8, 0xce, 0xaa, 0x08, 0x12, 0x81, 0xdb, 0xac, 0x8a, 0x20, 0x21, 0x80, 0x10, 0x54, 0x33, 0x82, - 0xcc, 0xbc, 0x09, 0x21, 0x01, 0xcb, 0x9b, 0x63, 0x36, 0x12, 0xa9, 0xbd, 0x09, 0x42, 0x24, 0x81, - 0xba, 0xbc, 0xaa, 0xba, 0xdb, 0x9a, 0x51, 0x44, 0x12, 0xb9, 0xbe, 0x9a, 0x31, 0x34, 0x82, 0xc9, - 0x9b, 0x20, 0x35, 0x24, 0x11, 0x31, 0x44, 0x23, 0x90, 0xcd, 0xab, 0x08, 0x10, 0xa8, 0xbe, 0x8a, - 0x52, 0x34, 0x03, 0xda, 0xab, 0x28, 0x45, 0x24, 0x81, 0xa8, 0x99, 0x99, 0x98, 0xab, 0x29, 0x56, - 0x34, 0x82, 0xeb, 0xac, 0x8a, 0x10, 0x12, 0xb8, 0xbe, 0xab, 0x08, 0x22, 0x12, 0x80, 0x41, 0x44, - 0x13, 0xb8, 0xcd, 0x8b, 0x10, 0x22, 0xa8, 0xbd, 0x29, 0x56, 0x33, 0x81, 0xcc, 0xaa, 0x28, 0x35, - 0x23, 0x98, 0xcc, 0xab, 0xab, 0xbb, 0xbb, 0x28, 0x47, 0x24, 0x91, 0xeb, 0xba, 0x18, 0x42, 0x22, - 0xa0, 0xcb, 0x89, 0x52, 0x43, 0x12, 0x21, 0x32, 0x34, 0x02, 0xda, 0xbc, 0x9a, 0x11, 0x91, 0xeb, - 0xac, 0x18, 0x54, 0x23, 0xa0, 0xdb, 0x8a, 0x41, 0x35, 0x13, 0x80, 0xaa, 0xab, 0xa9, 0xba, 0x8a, - 0x73, 0x37, 0x12, 0xb0, 0xcd, 0xab, 0x08, 0x21, 0x81, 0xfb, 0xbb, 0x89, 0x20, 0x22, 0x02, 0x11, - 0x42, 0x33, 0xa1, 0xdd, 0xab, 0x18, 0x33, 0x82, 0xcd, 0x9b, 0x51, 0x36, 0x13, 0xa8, 0xbd, 0x89, - 0x42, 0x34, 0x01, 0xb9, 0xbd, 0xac, 0xba, 0xab, 0x8a, 0x62, 0x44, 0x02, 0xb8, 0xbd, 0x9a, 0x21, - 0x34, 0x82, 0xca, 0xab, 0x20, 0x36, 0x34, 0x22, 0x21, 0x23, 0x13, 0xb8, 0xce, 0x9a, 0x18, 0x11, - 0xc9, 0xcd, 0x8a, 0x40, 0x34, 0x03, 0xc9, 0xbb, 0x28, 0x46, 0x24, 0x11, 0xa8, 0xb9, 0xba, 0xba, - 0x9a, 0x30, 0x67, 0x33, 0x81, 0xdb, 0xbc, 0x8a, 0x10, 0x11, 0xc9, 0xdc, 0xaa, 0x08, 0x21, 0x23, - 0x11, 0x12, 0x23, 0x81, 0xfb, 0xbb, 0x0a, 0x52, 0x12, 0xc8, 0xcb, 0x29, 0x64, 0x33, 0x82, 0xcb, - 0xbb, 0x20, 0x46, 0x22, 0x90, 0xda, 0xcb, 0xbb, 0xbb, 0x9b, 0x31, 0x46, 0x14, 0x80, 0xcb, 0xbb, - 0x18, 0x42, 0x13, 0xb0, 0xdb, 0x89, 0x52, 0x34, 0x24, 0x32, 0x21, 0x12, 0xa8, 0xdb, 0xab, 0x19, - 0x22, 0xa0, 0xcf, 0xbb, 0x18, 0x44, 0x24, 0x90, 0xbb, 0x8b, 0x63, 0x35, 0x14, 0x81, 0x99, 0xbb, - 0xbc, 0xba, 0x19, 0x55, 0x34, 0x13, 0xb9, 0xbd, 0xac, 0x88, 0x11, 0xa8, 0xdc, 0xcb, 0x99, 0x20, - 0x22, 0x32, 0x32, 0x12, 0x91, 0xeb, 0xbc, 0x89, 0x41, 0x24, 0x90, 0xcb, 0x9a, 0x62, 0x34, 0x23, - 0xa8, 0xbc, 0x0a, 0x53, 0x34, 0x02, 0xa9, 0xcd, 0xcc, 0xbb, 0xab, 0x18, 0x53, 0x34, 0x02, 0xc9, - 0xcb, 0x89, 0x21, 0x23, 0x91, 0xdb, 0xaa, 0x20, 0x46, 0x43, 0x33, 0x24, 0x11, 0x90, 0xcb, 0xbb, - 0x08, 0x32, 0x02, 0xfb, 0xbc, 0x89, 0x31, 0x44, 0x01, 0xaa, 0x9a, 0x40, 0x46, 0x33, 0x12, 0x80, - 0xba, 0xbe, 0xad, 0x8a, 0x41, 0x44, 0x23, 0x91, 0xdb, 0xab, 0x8a, 0x18, 0x98, 0xfb, 0xcb, 0xaa, - 0x09, 0x11, 0x33, 0x44, 0x32, 0x00, 0xda, 0xcb, 0x9a, 0x31, 0x34, 0x02, 0xb9, 0xac, 0x30, 0x36, - 0x14, 0x91, 0xaa, 0x0a, 0x52, 0x34, 0x13, 0x88, 0xeb, 0xdc, 0xbc, 0xcb, 0x99, 0x31, 0x44, 0x12, - 0x98, 0xbb, 0x9b, 0x20, 0x24, 0x81, 0xca, 0xbb, 0x08, 0x64, 0x53, 0x43, 0x43, 0x22, 0x90, 0xca, - 0xbb, 0x89, 0x32, 0x24, 0xb8, 0xcd, 0x9a, 0x28, 0x33, 0x12, 0xb9, 0xaa, 0x51, 0x46, 0x33, 0x23, - 0x21, 0x90, 0xec, 0xcc, 0xab, 0x19, 0x54, 0x33, 0x02, 0xb9, 0xbc, 0x9a, 0x88, 0xa0, 0xec, 0xcb, - 0x9b, 0x8a, 0x00, 0x31, 0x63, 0x43, 0x12, 0xa9, 0xcd, 0x9b, 0x28, 0x53, 0x12, 0xa0, 0xaa, 0x29, - 0x53, 0x24, 0x80, 0xa9, 0x09, 0x42, 0x25, 0x02, 0x80, 0x99, 0xdc, 0xdd, 0xbc, 0xab, 0x19, 0x44, - 0x23, 0x80, 0xbb, 0x9b, 0x20, 0x33, 0x81, 0xcc, 0xac, 0x08, 0x42, 0x34, 0x35, 0x35, 0x25, 0x02, - 0xa9, 0xcc, 0x8a, 0x10, 0x23, 0x82, 0xcb, 0xbb, 0x18, 0x33, 0x03, 0xda, 0xab, 0x51, 0x45, 0x33, - 0x11, 0x11, 0x11, 0xb0, 0xcf, 0xbd, 0x9a, 0x51, 0x53, 0x12, 0xa8, 0xba, 0x9a, 0x18, 0x80, 0xfa, - 0xbc, 0xab, 0x9a, 0x80, 0x10, 0x31, 0x37, 0x34, 0x91, 0xeb, 0xcb, 0x09, 0x31, 0x24, 0x01, 0x9a, - 0x0a, 0x42, 0x24, 0x91, 0xba, 0x8a, 0x73, 0x43, 0x02, 0x98, 0x9a, 0xa9, 0xdc, 0xdd, 0xbb, 0x8b, - 0x41, 0x24, 0x02, 0xaa, 0xab, 0x18, 0x34, 0x03, 0xda, 0xbc, 0x89, 0x41, 0x33, 0x43, 0x44, 0x35, - 0x23, 0x91, 0xbd, 0xbc, 0x08, 0x33, 0x23, 0xb8, 0xad, 0x8a, 0x32, 0x13, 0xc9, 0xbc, 0x29, 0x46, - 0x24, 0x02, 0x88, 0x18, 0x01, 0xb8, 0xdf, 0xab, 0x19, 0x54, 0x23, 0x80, 0xca, 0x9a, 0x00, 0x12, - 0xc9, 0xce, 0xbb, 0x99, 0x00, 0x00, 0x10, 0x42, 0x45, 0x12, 0xb8, 0xce, 0x9a, 0x28, 0x43, 0x12, - 0xa0, 0x99, 0x30, 0x44, 0x02, 0xb9, 0x9c, 0x38, 0x46, 0x22, 0x98, 0xb9, 0x9a, 0xa8, 0xdd, 0xbd, - 0xac, 0x18, 0x43, 0x13, 0xa8, 0xcb, 0x09, 0x43, 0x23, 0xb0, 0xbe, 0xab, 0x20, 0x44, 0x22, 0x31, - 0x55, 0x33, 0x03, 0xc9, 0xbd, 0x9a, 0x30, 0x43, 0x81, 0xba, 0xaa, 0x31, 0x34, 0xa0, 0xce, 0x9a, - 0x42, 0x36, 0x12, 0x90, 0x99, 0x00, 0x80, 0xd9, 0xbd, 0x9b, 0x42, 0x26, 0x02, 0xb9, 0xbb, 0x19, - 0x43, 0x82, 0xdd, 0xbd, 0x9a, 0x09, 0x01, 0x00, 0x10, 0x63, 0x33, 0x82, 0xec, 0xcb, 0x09, 0x31, - 0x43, 0x81, 0x99, 0x00, 0x43, 0x23, 0xb0, 0xbe, 0x09, 0x73, 0x33, 0x02, 0xba, 0xbb, 0x9b, 0xaa, - 0xde, 0xbc, 0x89, 0x31, 0x24, 0x91, 0xcb, 0x9b, 0x51, 0x34, 0x82, 0xda, 0xac, 0x0a, 0x31, 0x24, - 0x22, 0x43, 0x44, 0x33, 0x90, 0xdc, 0xbb, 0x19, 0x42, 0x13, 0xa0, 0xaa, 0x19, 0x43, 0x03, 0xfb, - 0xac, 0x18, 0x54, 0x33, 0x81, 0xa9, 0x99, 0x08, 0x90, 0xfb, 0xab, 0x18, 0x54, 0x23, 0xa8, 0xbc, - 0x8a, 0x42, 0x23, 0xd8, 0xce, 0xbb, 0x89, 0x10, 0x11, 0x80, 0x31, 0x54, 0x12, 0xc8, 0xdc, 0x9a, - 0x18, 0x43, 0x12, 0x90, 0x09, 0x42, 0x24, 0x82, 0xda, 0xab, 0x48, 0x35, 0x24, 0x98, 0xba, 0xbb, - 0xa9, 0xca, 0xcd, 0xab, 0x28, 0x43, 0x03, 0xca, 0xbc, 0x28, 0x45, 0x13, 0xb0, 0xcd, 0x9a, 0x28, - 0x43, 0x22, 0x21, 0x53, 0x24, 0x03, 0xc8, 0xcc, 0x9a, 0x20, 0x33, 0x01, 0xaa, 0x09, 0x52, 0x14, - 0xb0, 0xce, 0x8a, 0x41, 0x44, 0x22, 0x98, 0x9a, 0x8a, 0x88, 0xa9, 0xcb, 0x0b, 0x63, 0x34, 0x91, - 0xdb, 0xab, 0x38, 0x44, 0x82, 0xfb, 0xbc, 0xab, 0x08, 0x21, 0x10, 0x10, 0x42, 0x43, 0x81, 0xdc, - 0xbc, 0x0a, 0x31, 0x24, 0x02, 0x88, 0x31, 0x36, 0x12, 0xb9, 0xbe, 0x0a, 0x54, 0x43, 0x02, 0xb9, - 0xcb, 0xaa, 0xa9, 0xba, 0xbc, 0x09, 0x42, 0x13, 0xd8, 0xcc, 0x89, 0x52, 0x24, 0x02, 0xda, 0xbb, - 0x8a, 0x32, 0x34, 0x33, 0x34, 0x34, 0x33, 0xa0, 0xdd, 0xab, 0x09, 0x32, 0x22, 0x90, 0x99, 0x42, - 0x35, 0x91, 0xec, 0xbb, 0x29, 0x55, 0x33, 0x02, 0xaa, 0xba, 0xaa, 0xa8, 0xa9, 0x9a, 0x62, 0x35, - 0x01, 0xdb, 0xbc, 0x19, 0x53, 0x23, 0xc8, 0xce, 0xab, 0x8a, 0x10, 0x11, 0x11, 0x21, 0x43, 0x11, - 0xda, 0xbd, 0xab, 0x28, 0x34, 0x22, 0x00, 0x30, 0x56, 0x23, 0x80, 0xbc, 0xac, 0x30, 0x46, 0x22, - 0x80, 0xba, 0xbc, 0xbb, 0xba, 0xbb, 0x8a, 0x32, 0x25, 0xb0, 0xcf, 0xaa, 0x21, 0x36, 0x23, 0xa8, - 0xcd, 0x9a, 0x18, 0x42, 0x33, 0x33, 0x24, 0x24, 0x81, 0xc9, 0xbc, 0x8a, 0x10, 0x23, 0x80, 0x88, - 0x51, 0x45, 0x12, 0xc9, 0xbd, 0x8b, 0x51, 0x44, 0x22, 0x80, 0xaa, 0xbb, 0xaa, 0xaa, 0x89, 0x52, - 0x44, 0x02, 0xc9, 0xbd, 0x9a, 0x41, 0x24, 0x82, 0xeb, 0xcc, 0x9a, 0x09, 0x10, 0x11, 0x21, 0x22, - 0x12, 0xc8, 0xdc, 0xab, 0x09, 0x31, 0x23, 0x11, 0x52, 0x45, 0x24, 0x02, 0xba, 0xbd, 0x09, 0x44, - 0x25, 0x02, 0x98, 0xdb, 0xab, 0xbb, 0xab, 0x09, 0x32, 0x34, 0xb0, 0xde, 0xab, 0x19, 0x63, 0x33, - 0x82, 0xca, 0xac, 0x8a, 0x20, 0x34, 0x34, 0x34, 0x23, 0x02, 0xba, 0xbd, 0x9b, 0x18, 0x22, 0x80, - 0x89, 0x62, 0x45, 0x23, 0xa0, 0xcd, 0xab, 0x29, 0x45, 0x24, 0x11, 0x98, 0xba, 0xbc, 0xbb, 0x99, - 0x42, 0x45, 0x12, 0xa9, 0xcd, 0x9a, 0x18, 0x34, 0x12, 0xc8, 0xbd, 0xbc, 0x8a, 0x08, 0x21, 0x32, - 0x33, 0x13, 0xc9, 0xdd, 0x9b, 0x09, 0x21, 0x12, 0x88, 0x30, 0x57, 0x34, 0x13, 0xa0, 0xbc, 0x8b, - 0x31, 0x46, 0x22, 0x81, 0xb9, 0xcd, 0xbb, 0xbc, 0x99, 0x31, 0x24, 0x82, 0xeb, 0xbc, 0x8a, 0x32, - 0x45, 0x11, 0xa8, 0xbb, 0x9b, 0x18, 0x43, 0x44, 0x34, 0x24, 0x11, 0xa9, 0xcb, 0x9a, 0x10, 0x12, - 0xa0, 0xbb, 0x48, 0x47, 0x34, 0x81, 0xca, 0xac, 0x09, 0x32, 0x36, 0x12, 0x01, 0xa9, 0xeb, 0xcb, - 0x9b, 0x18, 0x54, 0x23, 0x91, 0xcc, 0xac, 0x08, 0x31, 0x33, 0x90, 0xdc, 0xbb, 0xbb, 0x99, 0x00, - 0x31, 0x36, 0x23, 0x90, 0xdd, 0xab, 0x89, 0x22, 0x12, 0x98, 0x8a, 0x74, 0x35, 0x14, 0x81, 0xba, - 0x9b, 0x28, 0x35, 0x24, 0x02, 0x88, 0xdb, 0xdc, 0xbb, 0xab, 0x28, 0x44, 0x13, 0xb9, 0xce, 0x9a, - 0x18, 0x43, 0x23, 0x90, 0xba, 0xaa, 0x09, 0x11, 0x53, 0x45, 0x25, 0x13, 0x98, 0xcb, 0x9b, 0x18, - 0x33, 0x81, 0xbc, 0x8c, 0x63, 0x44, 0x12, 0xa8, 0xbc, 0x8a, 0x31, 0x34, 0x24, 0x10, 0x80, 0xc9, - 0xcd, 0xcb, 0x8a, 0x42, 0x35, 0x02, 0xc9, 0xbc, 0x8b, 0x20, 0x43, 0x01, 0xca, 0xcb, 0xaa, 0x99, - 0x98, 0x18, 0x63, 0x43, 0x01, 0xea, 0xbb, 0x9b, 0x41, 0x23, 0x80, 0xbb, 0x3a, 0x57, 0x34, 0x02, - 0xa8, 0xba, 0x19, 0x43, 0x24, 0x01, 0x80, 0xa8, 0xfb, 0xcd, 0xab, 0x8a, 0x42, 0x43, 0x81, 0xcc, - 0xcb, 0x09, 0x31, 0x24, 0x81, 0xa9, 0x9a, 0x08, 0x11, 0x11, 0x63, 0x45, 0x33, 0x82, 0xda, 0xac, - 0x09, 0x32, 0x23, 0xb9, 0xbd, 0x18, 0x46, 0x33, 0x81, 0xca, 0xab, 0x28, 0x34, 0x14, 0x01, 0x80, - 0x80, 0xeb, 0xcd, 0xab, 0x18, 0x45, 0x33, 0xa0, 0xcc, 0xac, 0x08, 0x32, 0x12, 0xa8, 0xbc, 0xab, - 0x99, 0x98, 0xa9, 0x30, 0x47, 0x23, 0xb0, 0xbf, 0x9c, 0x08, 0x33, 0x03, 0xb9, 0xab, 0x72, 0x45, - 0x22, 0x80, 0xaa, 0x8a, 0x31, 0x35, 0x02, 0x98, 0x98, 0xb9, 0xde, 0xbd, 0xab, 0x28, 0x35, 0x23, - 0xc9, 0xbd, 0x9b, 0x28, 0x34, 0x12, 0xa8, 0xaa, 0x09, 0x32, 0x12, 0x21, 0x75, 0x34, 0x13, 0xb8, - 0xcd, 0x8b, 0x20, 0x24, 0x92, 0xda, 0x8a, 0x41, 0x35, 0x22, 0xa9, 0xac, 0x09, 0x42, 0x33, 0x00, - 0x89, 0x08, 0xa0, 0xee, 0xbc, 0x9a, 0x51, 0x34, 0x03, 0xc9, 0xbd, 0x99, 0x20, 0x23, 0x91, 0xdb, - 0xaa, 0x09, 0x00, 0x99, 0x8a, 0x61, 0x34, 0x02, 0xec, 0xac, 0x8a, 0x31, 0x24, 0x91, 0xba, 0x1a, - 0x74, 0x43, 0x02, 0x99, 0x9a, 0x10, 0x34, 0x22, 0xa8, 0xa9, 0x89, 0xda, 0xed, 0xcb, 0x89, 0x31, - 0x35, 0x91, 0xdb, 0xac, 0x09, 0x31, 0x23, 0x90, 0xab, 0x8a, 0x42, 0x24, 0x00, 0x21, 0x55, 0x24, - 0x81, 0xdb, 0xac, 0x09, 0x33, 0x14, 0xb0, 0xcb, 0x19, 0x54, 0x24, 0x80, 0xb9, 0x8a, 0x40, 0x43, - 0x02, 0xa9, 0x99, 0x80, 0xb9, 0xdf, 0xbb, 0x29, 0x64, 0x23, 0x90, 0xcc, 0xab, 0x08, 0x32, 0x02, - 0xca, 0xcb, 0x99, 0x11, 0x01, 0xa9, 0x19, 0x54, 0x14, 0xb8, 0xcf, 0x9b, 0x18, 0x43, 0x12, 0xa8, - 0xab, 0x51, 0x35, 0x24, 0x91, 0x9a, 0x19, 0x53, 0x33, 0x91, 0xca, 0xaa, 0x99, 0xea, 0xdc, 0x9b, - 0x18, 0x44, 0x12, 0xb8, 0xcd, 0x9a, 0x10, 0x32, 0x82, 0xb9, 0x9c, 0x30, 0x44, 0x12, 0x01, 0x41, - 0x34, 0x23, 0xe9, 0xcc, 0x9a, 0x21, 0x43, 0x01, 0xca, 0x9a, 0x41, 0x44, 0x22, 0xa8, 0x9b, 0x18, - 0x54, 0x22, 0x98, 0xaa, 0x8a, 0x98, 0xfa, 0xbc, 0x9b, 0x52, 0x44, 0x02, 0xb9, 0xae, 0x9a, 0x11, - 0x12, 0xa8, 0xcc, 0x9a, 0x10, 0x23, 0x81, 0x99, 0x20, 0x35, 0xa2, 0xdf, 0xbc, 0x89, 0x31, 0x34, - 0x81, 0xba, 0x09, 0x55, 0x24, 0x12, 0xa8, 0x89, 0x41, 0x34, 0x12, 0xb9, 0xbc, 0x9a, 0xaa, 0xec, - 0xbc, 0x89, 0x51, 0x33, 0x91, 0xcc, 0xac, 0x89, 0x22, 0x13, 0xa9, 0xad, 0x19, 0x63, 0x23, 0x12, - 0x10, 0x42, 0x33, 0xa1, 0xde, 0xbb, 0x09, 0x53, 0x22, 0x98, 0xab, 0x19, 0x46, 0x23, 0x81, 0xaa, - 0x19, 0x54, 0x24, 0x81, 0xb9, 0xbb, 0x9a, 0xa9, 0xcd, 0xac, 0x29, 0x45, 0x23, 0xa0, 0xcd, 0xab, - 0x08, 0x22, 0x80, 0xcc, 0xac, 0x88, 0x32, 0x22, 0x81, 0x00, 0x32, 0x03, 0xfd, 0xcd, 0xaa, 0x10, - 0x42, 0x12, 0x98, 0x89, 0x41, 0x54, 0x22, 0x80, 0x89, 0x40, 0x44, 0x13, 0x90, 0xcb, 0xbb, 0xba, - 0xba, 0xbe, 0xab, 0x30, 0x45, 0x02, 0xca, 0xcc, 0x8a, 0x20, 0x22, 0xa0, 0xbc, 0x8c, 0x31, 0x27, - 0x23, 0x12, 0x22, 0x22, 0x91, 0xdd, 0xbc, 0x9a, 0x31, 0x34, 0x01, 0xaa, 0x8a, 0x62, 0x34, 0x03, - 0x98, 0x09, 0x72, 0x34, 0x12, 0xa8, 0xbc, 0xab, 0xaa, 0xbb, 0xbd, 0x0a, 0x54, 0x24, 0x81, 0xeb, - 0xab, 0x89, 0x20, 0x80, 0xeb, 0xbc, 0x8a, 0x21, 0x34, 0x13, 0x11, 0x11, 0x80, 0xfb, 0xcd, 0xac, - 0x88, 0x22, 0x23, 0x81, 0x89, 0x30, 0x46, 0x24, 0x01, 0x88, 0x28, 0x45, 0x24, 0x82, 0xb9, 0xdb, - 0xba, 0xba, 0xcb, 0x9b, 0x29, 0x44, 0x13, 0xc8, 0xbd, 0xab, 0x10, 0x23, 0x90, 0xbe, 0xac, 0x28, - 0x54, 0x24, 0x22, 0x22, 0x11, 0x81, 0xdb, 0xbd, 0xab, 0x28, 0x42, 0x12, 0x88, 0x09, 0x52, 0x44, - 0x02, 0xa0, 0x09, 0x52, 0x46, 0x22, 0x80, 0xaa, 0xbc, 0xab, 0xbb, 0xbb, 0x0a, 0x54, 0x43, 0x82, - 0xeb, 0xbb, 0x8a, 0x11, 0x01, 0xfb, 0xbc, 0xab, 0x18, 0x53, 0x32, 0x32, 0x22, 0x81, 0xda, 0xce, - 0xbb, 0x8b, 0x20, 0x33, 0x02, 0x00, 0x42, 0x36, 0x24, 0x81, 0x98, 0x20, 0x56, 0x34, 0x12, 0x98, - 0xcb, 0xbc, 0xab, 0xac, 0x9a, 0x10, 0x53, 0x12, 0xb8, 0xbe, 0x9b, 0x28, 0x32, 0x92, 0xdd, 0xbb, - 0x8a, 0x53, 0x44, 0x23, 0x43, 0x22, 0x80, 0xca, 0xbd, 0xbb, 0x08, 0x32, 0x13, 0x90, 0x08, 0x73, - 0x43, 0x12, 0x98, 0x9a, 0x62, 0x45, 0x33, 0x82, 0xb8, 0xcb, 0xbc, 0xbb, 0xac, 0x0a, 0x42, 0x25, - 0x01, 0xcb, 0xad, 0x89, 0x11, 0x02, 0xd9, 0xcd, 0xaa, 0x09, 0x22, 0x24, 0x23, 0x24, 0x02, 0xb8, - 0xce, 0xbc, 0x9a, 0x10, 0x22, 0x01, 0x98, 0x30, 0x47, 0x23, 0x01, 0xa9, 0x09, 0x73, 0x35, 0x22, - 0x91, 0xb9, 0xcb, 0xbc, 0xbc, 0xab, 0x19, 0x44, 0x23, 0xa0, 0xcd, 0xab, 0x28, 0x42, 0x01, 0xca, - 0xbd, 0x9a, 0x21, 0x44, 0x33, 0x34, 0x43, 0x02, 0xb8, 0xdd, 0xba, 0x09, 0x21, 0x11, 0x90, 0x8a, - 0x52, 0x45, 0x12, 0x98, 0xab, 0x29, 0x46, 0x34, 0x13, 0x98, 0xb9, 0xbb, 0xbe, 0xcb, 0x9a, 0x30, - 0x45, 0x12, 0xb9, 0xae, 0x8b, 0x10, 0x23, 0xa0, 0xdd, 0xbb, 0x8a, 0x10, 0x33, 0x34, 0x53, 0x33, - 0x81, 0xfb, 0xbc, 0xab, 0x19, 0x22, 0x01, 0xa8, 0x18, 0x65, 0x43, 0x01, 0xb8, 0xaa, 0x40, 0x46, - 0x23, 0x01, 0x98, 0xbb, 0xcb, 0xcc, 0xbb, 0x89, 0x42, 0x25, 0x82, 0xcb, 0xad, 0x09, 0x31, 0x14, - 0xa0, 0xcc, 0xab, 0x08, 0x42, 0x33, 0x53, 0x43, 0x23, 0x80, 0xdc, 0xcb, 0x9a, 0x11, 0x22, 0x90, - 0xa9, 0x28, 0x55, 0x33, 0x81, 0xcb, 0x9a, 0x62, 0x35, 0x23, 0x00, 0xa9, 0xab, 0xdb, 0xbc, 0xac, - 0x18, 0x53, 0x14, 0xa1, 0xeb, 0xaa, 0x08, 0x32, 0x02, 0xda, 0xbd, 0x9b, 0x08, 0x22, 0x33, 0x34, - 0x44, 0x12, 0xb0, 0xde, 0xba, 0x09, 0x21, 0x11, 0xa0, 0x9a, 0x50, 0x45, 0x22, 0x90, 0xba, 0x0a, - 0x73, 0x34, 0x22, 0x88, 0xaa, 0xba, 0xcc, 0xbc, 0x9c, 0x28, 0x44, 0x13, 0xb8, 0xbd, 0x8c, 0x28, - 0x24, 0x82, 0xca, 0xbc, 0x8a, 0x21, 0x24, 0x33, 0x53, 0x24, 0x03, 0xc8, 0xdc, 0xaa, 0x08, 0x22, - 0x01, 0xaa, 0x8b, 0x62, 0x35, 0x12, 0xa8, 0xbc, 0x18, 0x45, 0x24, 0x12, 0x98, 0x99, 0xba, 0xcc, - 0xbc, 0x9a, 0x41, 0x44, 0x02, 0xc9, 0xbc, 0x8b, 0x21, 0x24, 0x90, 0xcd, 0xab, 0x0a, 0x20, 0x22, - 0x32, 0x35, 0x34, 0x02, 0xfa, 0xbc, 0x9a, 0x18, 0x32, 0x81, 0xba, 0x09, 0x55, 0x34, 0x02, 0xba, - 0xac, 0x30, 0x46, 0x23, 0x82, 0xa8, 0xaa, 0xcb, 0xbc, 0xad, 0x0a, 0x42, 0x25, 0x81, 0xda, 0xbb, - 0x09, 0x52, 0x22, 0xa0, 0xcc, 0xaa, 0x19, 0x22, 0x43, 0x42, 0x53, 0x32, 0x91, 0xfb, 0xbb, 0x9a, - 0x11, 0x23, 0x90, 0xbb, 0x29, 0x47, 0x24, 0x91, 0xba, 0x9b, 0x52, 0x45, 0x22, 0x80, 0x98, 0xaa, - 0xba, 0xcd, 0xab, 0x19, 0x73, 0x22, 0xa1, 0xcc, 0xbb, 0x08, 0x43, 0x02, 0xd9, 0xbc, 0x9b, 0x18, - 0x22, 0x32, 0x43, 0x35, 0x23, 0xb0, 0xde, 0xab, 0x0a, 0x31, 0x12, 0xa8, 0xab, 0x40, 0x37, 0x24, - 0xa0, 0xba, 0x8a, 0x63, 0x34, 0x13, 0x90, 0xa9, 0xab, 0xcc, 0xcc, 0xaa, 0x28, 0x35, 0x14, 0xa0, - 0xbd, 0x9b, 0x20, 0x44, 0x01, 0xca, 0xcb, 0x89, 0x20, 0x32, 0x33, 0x44, 0x34, 0x12, 0xc8, 0xcd, - 0xab, 0x08, 0x22, 0x82, 0xb9, 0x8b, 0x61, 0x35, 0x13, 0xa8, 0xac, 0x19, 0x64, 0x33, 0x12, 0x98, - 0x99, 0xbb, 0xcc, 0xcc, 0x8a, 0x30, 0x35, 0x03, 0xca, 0xae, 0x9a, 0x20, 0x23, 0x91, 0xcd, 0xbb, - 0x8a, 0x20, 0x32, 0x33, 0x45, 0x34, 0x01, 0xca, 0xbe, 0xaa, 0x10, 0x22, 0x81, 0xb9, 0x1a, 0x64, - 0x34, 0x11, 0xba, 0x9c, 0x38, 0x55, 0x23, 0x01, 0x99, 0xaa, 0xcb, 0xdb, 0xac, 0x89, 0x52, 0x43, - 0x81, 0xca, 0xac, 0x09, 0x41, 0x13, 0x90, 0xcc, 0xab, 0x08, 0x31, 0x43, 0x43, 0x53, 0x23, 0x91, - 0xfb, 0xbb, 0x9b, 0x20, 0x22, 0xa0, 0xba, 0x29, 0x47, 0x24, 0x81, 0xb9, 0x9b, 0x52, 0x45, 0x22, - 0x81, 0x98, 0xaa, 0xca, 0xcc, 0xab, 0x08, 0x44, 0x23, 0xa1, 0xcd, 0xac, 0x08, 0x22, 0x02, 0xc9, - 0xbd, 0xaa, 0x08, 0x21, 0x33, 0x63, 0x43, 0x13, 0xa0, 0xcd, 0xac, 0x89, 0x21, 0x11, 0x98, 0x9a, - 0x40, 0x55, 0x22, 0x80, 0xab, 0x8a, 0x63, 0x34, 0x23, 0x80, 0xaa, 0xbb, 0xcd, 0xbc, 0xab, 0x20, - 0x36, 0x23, 0xb8, 0xcd, 0x9a, 0x28, 0x34, 0x01, 0xca, 0xbc, 0x9a, 0x20, 0x33, 0x44, 0x34, 0x24, - 0x03, 0xb9, 0xbf, 0xbb, 0x88, 0x12, 0x01, 0xaa, 0x8a, 0x72, 0x44, 0x12, 0xa0, 0x9a, 0x18, 0x55, - 0x43, 0x11, 0x80, 0xa8, 0xba, 0xbd, 0xad, 0x8a, 0x30, 0x35, 0x82, 0xda, 0xbc, 0x9a, 0x10, 0x23, - 0xa0, 0xcd, 0xbc, 0x8a, 0x00, 0x32, 0x53, 0x34, 0x24, 0x82, 0xca, 0xbd, 0x9a, 0x08, 0x12, 0x91, - 0x99, 0x18, 0x55, 0x34, 0x01, 0xb8, 0x9a, 0x40, 0x36, 0x24, 0x02, 0x98, 0xaa, 0xcc, 0xbc, 0xac, - 0x08, 0x52, 0x23, 0x81, 0xdb, 0xbb, 0x09, 0x42, 0x23, 0xa8, 0xdc, 0xab, 0x09, 0x21, 0x53, 0x44, - 0x43, 0x22, 0x90, 0xcc, 0xac, 0x8a, 0x08, 0x01, 0x99, 0x99, 0x31, 0x47, 0x32, 0x00, 0xa9, 0x19, - 0x72, 0x43, 0x23, 0x02, 0x90, 0xc9, 0xcc, 0xdb, 0x9a, 0x18, 0x43, 0x12, 0xb8, 0xcd, 0xab, 0x09, - 0x21, 0x80, 0xeb, 0xcb, 0xaa, 0x09, 0x20, 0x52, 0x44, 0x24, 0x12, 0xa8, 0xcc, 0xaa, 0x89, 0x10, - 0x80, 0x99, 0x08, 0x54, 0x35, 0x12, 0x90, 0x9a, 0x20, 0x64, 0x33, 0x12, 0x01, 0xa8, 0xcc, 0xcd, - 0xbb, 0x8b, 0x32, 0x35, 0x12, 0xca, 0xac, 0x8a, 0x31, 0x23, 0x90, 0xcd, 0xab, 0x9a, 0x18, 0x42, - 0x55, 0x34, 0x33, 0x82, 0xda, 0xbc, 0x9b, 0x09, 0x80, 0xa9, 0x9b, 0x31, 0x47, 0x33, 0x02, 0x98, - 0x10, 0x54, 0x34, 0x24, 0x12, 0x10, 0xa8, 0xeb, 0xbd, 0xbb, 0x09, 0x42, 0x13, 0xb0, 0xdd, 0xaa, - 0x89, 0x00, 0x80, 0xdb, 0xbc, 0xaa, 0x9a, 0x09, 0x30, 0x47, 0x25, 0x23, 0x80, 0xcb, 0xbb, 0x89, - 0x00, 0x90, 0xba, 0x1a, 0x74, 0x43, 0x22, 0x88, 0x8a, 0x30, 0x46, 0x23, 0x12, 0x10, 0x80, 0xca, - 0xdd, 0xbc, 0xaa, 0x20, 0x44, 0x11, 0xa9, 0xcb, 0x89, 0x21, 0x23, 0xa0, 0xdc, 0xaa, 0x89, 0x00, - 0x00, 0x62, 0x46, 0x24, 0x12, 0xa9, 0xcc, 0x9a, 0x88, 0x80, 0xba, 0xbc, 0x18, 0x45, 0x43, 0x11, - 0x89, 0x08, 0x63, 0x53, 0x12, 0x01, 0x11, 0x10, 0xa9, 0xbf, 0xbd, 0x99, 0x31, 0x32, 0xa0, 0xdd, - 0xaa, 0x89, 0x10, 0xa0, 0xcc, 0xbc, 0x9a, 0x08, 0x08, 0x09, 0x51, 0x46, 0x33, 0x02, 0xba, 0xad, - 0x89, 0x11, 0x90, 0xdb, 0x9b, 0x41, 0x45, 0x13, 0x91, 0x9a, 0x18, 0x55, 0x23, 0x01, 0x80, 0x08, - 0x00, 0xea, 0xcd, 0xab, 0x19, 0x43, 0x23, 0xb8, 0xbd, 0x8a, 0x41, 0x33, 0xa1, 0xdc, 0xab, 0x08, - 0x12, 0x01, 0x08, 0x64, 0x35, 0x33, 0x98, 0xbd, 0xac, 0x08, 0x01, 0xb9, 0xbe, 0x8a, 0x42, 0x35, - 0x02, 0xa8, 0x89, 0x52, 0x45, 0x22, 0x01, 0x88, 0x00, 0x81, 0xca, 0xbe, 0xab, 0x38, 0x34, 0x81, - 0xdd, 0xbb, 0x0a, 0x21, 0x02, 0xeb, 0xcc, 0x9a, 0x08, 0x01, 0x80, 0x08, 0x62, 0x44, 0x12, 0xa8, - 0xbb, 0x8a, 0x31, 0x04, 0xd9, 0xbc, 0x08, 0x54, 0x33, 0x91, 0xba, 0x0a, 0x73, 0x34, 0x03, 0x98, - 0x99, 0x09, 0x90, 0xdc, 0xcc, 0x89, 0x32, 0x34, 0x90, 0xbd, 0x9c, 0x30, 0x34, 0x02, 0xda, 0xcb, - 0x89, 0x21, 0x23, 0x80, 0x18, 0x45, 0x34, 0x81, 0xdb, 0xac, 0x09, 0x22, 0x80, 0xec, 0xab, 0x18, - 0x44, 0x13, 0x91, 0xab, 0x28, 0x56, 0x33, 0x02, 0x98, 0x89, 0x10, 0x90, 0xfb, 0xbb, 0x1a, 0x43, - 0x23, 0xfb, 0xbc, 0x9b, 0x20, 0x33, 0xb8, 0xdf, 0xaa, 0x09, 0x20, 0x02, 0x88, 0x10, 0x63, 0x33, - 0x91, 0xdb, 0x9b, 0x31, 0x35, 0x90, 0xdc, 0x9b, 0x31, 0x45, 0x12, 0xa9, 0xab, 0x20, 0x37, 0x24, - 0x80, 0xaa, 0x89, 0x88, 0xa8, 0xdc, 0x9b, 0x30, 0x35, 0x03, 0xfa, 0xbb, 0x19, 0x53, 0x33, 0xa8, - 0xbd, 0x9c, 0x28, 0x32, 0x03, 0x80, 0x20, 0x54, 0x12, 0xc8, 0xcc, 0x8a, 0x20, 0x23, 0xc9, 0xbe, - 0x8b, 0x41, 0x34, 0x02, 0xba, 0x8b, 0x72, 0x44, 0x13, 0x91, 0x99, 0x88, 0x08, 0xa8, 0xcc, 0x8a, - 0x41, 0x24, 0xa0, 0xde, 0xab, 0x09, 0x42, 0x01, 0xc9, 0xbd, 0x9b, 0x10, 0x22, 0x01, 0x08, 0x21, - 0x35, 0x13, 0xca, 0xad, 0x19, 0x44, 0x22, 0xb9, 0xbd, 0x0a, 0x44, 0x24, 0x90, 0xca, 0x0a, 0x52, - 0x35, 0x11, 0xa8, 0xaa, 0x9a, 0x88, 0xb9, 0xbc, 0x29, 0x46, 0x23, 0xb8, 0xbf, 0x9b, 0x31, 0x36, - 0x02, 0xca, 0xac, 0x8a, 0x31, 0x43, 0x01, 0x00, 0x21, 0x12, 0xa0, 0xcf, 0xab, 0x28, 0x43, 0x82, - 0xcc, 0xad, 0x08, 0x43, 0x23, 0x98, 0xbb, 0x29, 0x57, 0x33, 0x02, 0x98, 0xaa, 0x88, 0x88, 0xc9, - 0xaa, 0x30, 0x36, 0x83, 0xfc, 0xbc, 0x9a, 0x21, 0x33, 0xa0, 0xcf, 0xab, 0x89, 0x21, 0x23, 0x01, - 0x10, 0x31, 0x13, 0xc8, 0xcd, 0x8a, 0x53, 0x34, 0x81, 0xdb, 0x9b, 0x20, 0x45, 0x02, 0xb8, 0xbb, - 0x38, 0x56, 0x23, 0x81, 0xb9, 0xab, 0x9a, 0x99, 0xcb, 0x89, 0x73, 0x34, 0x81, 0xeb, 0xac, 0x09, - 0x53, 0x23, 0xa0, 0xeb, 0xaa, 0x18, 0x33, 0x33, 0x01, 0x10, 0x21, 0x90, 0xfc, 0xac, 0x0a, 0x32, - 0x33, 0xc8, 0xcd, 0x9a, 0x21, 0x35, 0x01, 0xba, 0x9b, 0x72, 0x44, 0x23, 0x81, 0xa9, 0xa9, 0x99, - 0x99, 0x9a, 0x29, 0x56, 0x13, 0xc8, 0xdd, 0xab, 0x09, 0x32, 0x03, 0xd9, 0xbd, 0xab, 0x08, 0x23, - 0x23, 0x12, 0x21, 0x12, 0xa0, 0xce, 0xbb, 0x30, 0x37, 0x14, 0x98, 0xbb, 0x0a, 0x63, 0x23, 0x91, - 0xcc, 0x89, 0x52, 0x35, 0x12, 0x90, 0xcb, 0xaa, 0xaa, 0x99, 0x09, 0x52, 0x35, 0x13, 0xd9, 0xcc, - 0x8b, 0x30, 0x35, 0x12, 0xb9, 0xae, 0x9a, 0x20, 0x24, 0x23, 0x12, 0x01, 0x90, 0xcc, 0xbd, 0xab, - 0x20, 0x25, 0x02, 0xca, 0xac, 0x1a, 0x42, 0x23, 0xa8, 0xac, 0x28, 0x57, 0x33, 0x13, 0x98, 0xaa, - 0xab, 0xaa, 0x99, 0x18, 0x46, 0x34, 0x90, 0xdd, 0xbc, 0x9a, 0x20, 0x32, 0xa0, 0xdd, 0xbb, 0x9a, - 0x11, 0x43, 0x32, 0x12, 0x11, 0xa8, 0xdc, 0xbb, 0x19, 0x54, 0x34, 0x01, 0xb9, 0xaa, 0x30, 0x35, - 0x03, 0xc9, 0xac, 0x30, 0x46, 0x33, 0x01, 0xb8, 0xbc, 0xbc, 0xaa, 0x8a, 0x41, 0x45, 0x33, 0xa0, - 0xdc, 0xbb, 0x08, 0x53, 0x14, 0x91, 0xca, 0xab, 0x09, 0x42, 0x43, 0x23, 0x12, 0x80, 0xdb, 0xbd, - 0xac, 0x08, 0x32, 0x23, 0xa8, 0xbd, 0x9a, 0x30, 0x34, 0x81, 0xcb, 0x8a, 0x74, 0x35, 0x33, 0x11, - 0x99, 0xbb, 0xbc, 0xab, 0x19, 0x73, 0x34, 0x12, 0xea, 0xbc, 0x9c, 0x09, 0x11, 0x02, 0xca, 0xcc, - 0xab, 0x88, 0x21, 0x43, 0x24, 0x12, 0x90, 0xda, 0xcb, 0x8a, 0x41, 0x53, 0x22, 0x88, 0x89, 0x18, - 0x32, 0x12, 0xc8, 0xbc, 0x19, 0x56, 0x43, 0x13, 0x80, 0xca, 0xbc, 0xac, 0x9b, 0x20, 0x45, 0x33, - 0x02, 0xdb, 0xbc, 0x99, 0x31, 0x34, 0x03, 0xb8, 0xbd, 0x9b, 0x10, 0x44, 0x34, 0x24, 0x02, 0xb9, - 0xce, 0xbb, 0x8a, 0x21, 0x33, 0x81, 0xb9, 0x9b, 0x18, 0x33, 0x91, 0xcd, 0x8a, 0x72, 0x46, 0x23, - 0x13, 0x81, 0xa9, 0xcc, 0xbb, 0x9a, 0x52, 0x35, 0x23, 0xa8, 0xbf, 0xac, 0x99, 0x10, 0x01, 0xa8, - 0xbd, 0xcb, 0x9a, 0x18, 0x32, 0x45, 0x33, 0x01, 0xd9, 0xbc, 0xab, 0x20, 0x44, 0x33, 0x01, 0x88, - 0x10, 0x32, 0x12, 0xb9, 0xbe, 0x09, 0x73, 0x34, 0x22, 0x02, 0x98, 0xeb, 0xbd, 0xac, 0x0a, 0x52, - 0x34, 0x13, 0xb8, 0xbc, 0x9c, 0x10, 0x32, 0x13, 0xa0, 0xcb, 0xaa, 0x09, 0x42, 0x45, 0x35, 0x33, - 0x90, 0xdd, 0xcb, 0xaa, 0x10, 0x22, 0x01, 0x98, 0x8a, 0x20, 0x22, 0xa0, 0xcd, 0x9b, 0x52, 0x45, - 0x24, 0x22, 0x11, 0x81, 0xc9, 0xcc, 0xbb, 0x19, 0x45, 0x34, 0x81, 0xda, 0xac, 0xaa, 0x08, 0x00, - 0x98, 0xcb, 0xac, 0xaa, 0x99, 0x18, 0x63, 0x35, 0x23, 0xa1, 0xcd, 0xbb, 0x0a, 0x42, 0x24, 0x12, - 0x08, 0x20, 0x43, 0x12, 0xb9, 0xbd, 0x0b, 0x52, 0x35, 0x22, 0x01, 0x88, 0xb8, 0xdd, 0xcc, 0x9b, - 0x38, 0x45, 0x23, 0x81, 0xcb, 0xab, 0x19, 0x32, 0x22, 0x90, 0xba, 0x8a, 0x88, 0x01, 0x62, 0x47, - 0x35, 0x12, 0xc9, 0xcd, 0xba, 0x09, 0x11, 0x12, 0x88, 0x99, 0x21, 0x33, 0x82, 0xdd, 0x9c, 0x29, - 0x44, 0x34, 0x12, 0x11, 0x11, 0x90, 0xfa, 0xdb, 0x8a, 0x40, 0x44, 0x12, 0xa9, 0xbc, 0xac, 0x88, - 0x00, 0x98, 0xbc, 0xab, 0x9a, 0x89, 0x99, 0x28, 0x47, 0x35, 0x12, 0xd9, 0xbc, 0xaa, 0x20, 0x34, - 0x22, 0x00, 0x10, 0x44, 0x23, 0x91, 0xcc, 0xab, 0x20, 0x45, 0x22, 0x00, 0x88, 0x88, 0xb8, 0xde, - 0xbc, 0x8a, 0x52, 0x44, 0x11, 0xa8, 0xbb, 0x8a, 0x31, 0x23, 0x90, 0xbc, 0x8a, 0x32, 0x23, 0x00, - 0x72, 0x55, 0x24, 0x81, 0xcc, 0xad, 0x8b, 0x18, 0x12, 0x80, 0x99, 0x28, 0x53, 0x22, 0xb9, 0xaf, - 0x8a, 0x41, 0x35, 0x12, 0x01, 0x18, 0x10, 0x90, 0xcd, 0xad, 0x19, 0x53, 0x34, 0x91, 0xda, 0xbb, - 0x99, 0x10, 0x98, 0xeb, 0xbb, 0x8a, 0x08, 0x80, 0x99, 0x40, 0x46, 0x24, 0x91, 0xeb, 0xbb, 0x89, - 0x42, 0x23, 0x01, 0x00, 0x43, 0x35, 0x03, 0xc9, 0xad, 0x89, 0x43, 0x43, 0x01, 0x98, 0x99, 0x88, - 0xca, 0xce, 0xab, 0x20, 0x45, 0x33, 0x80, 0xcb, 0x9b, 0x20, 0x33, 0x82, 0xbc, 0xac, 0x20, 0x34, - 0x12, 0x08, 0x62, 0x45, 0x22, 0xc8, 0xcd, 0xab, 0x0a, 0x11, 0x01, 0x99, 0x09, 0x52, 0x34, 0x81, - 0xeb, 0xbb, 0x18, 0x45, 0x33, 0x01, 0x88, 0x00, 0x10, 0xc9, 0xcd, 0xaa, 0x41, 0x35, 0x23, 0xb9, - 0xbe, 0x9a, 0x08, 0x00, 0xda, 0xbc, 0xab, 0x08, 0x12, 0x90, 0x89, 0x52, 0x36, 0x23, 0xc9, 0xbe, - 0x9b, 0x20, 0x33, 0x13, 0x80, 0x41, 0x46, 0x33, 0x91, 0xcc, 0x9b, 0x38, 0x44, 0x12, 0x90, 0x9a, - 0x99, 0x88, 0xfb, 0xbc, 0x8a, 0x52, 0x25, 0x12, 0xa9, 0xbb, 0x08, 0x53, 0x12, 0xc9, 0xac, 0x0a, - 0x33, 0x25, 0x01, 0x08, 0x43, 0x35, 0x01, 0xec, 0xbc, 0x9a, 0x00, 0x11, 0x98, 0x99, 0x48, 0x44, - 0x23, 0xc8, 0xbc, 0x9b, 0x52, 0x34, 0x13, 0x90, 0x98, 0x00, 0x81, 0xda, 0xbc, 0x1a, 0x45, 0x25, - 0x80, 0xcb, 0xab, 0x89, 0x11, 0xa8, 0xcf, 0xbb, 0x8a, 0x11, 0x12, 0x90, 0x08, 0x63, 0x34, 0x91, - 0xfb, 0xbb, 0x89, 0x32, 0x33, 0x81, 0x20, 0x56, 0x34, 0x12, 0xb9, 0xbd, 0x0a, 0x52, 0x33, 0x82, - 0xb9, 0xab, 0x9a, 0xa9, 0xce, 0xab, 0x38, 0x55, 0x33, 0x90, 0xbb, 0x8b, 0x43, 0x25, 0x90, 0xcc, - 0xab, 0x20, 0x35, 0x23, 0x00, 0x20, 0x53, 0x22, 0xc9, 0xbf, 0xbc, 0x89, 0x01, 0x80, 0xaa, 0x08, - 0x54, 0x34, 0x01, 0xdb, 0xbb, 0x29, 0x54, 0x33, 0x01, 0x99, 0x98, 0x00, 0xa8, 0xeb, 0x9a, 0x51, - 0x44, 0x12, 0xb9, 0xbd, 0x8a, 0x10, 0x80, 0xdd, 0xcc, 0x9a, 0x18, 0x21, 0x01, 0x80, 0x10, 0x43, - 0x12, 0xd9, 0xcc, 0x9b, 0x10, 0x33, 0x02, 0x18, 0x73, 0x36, 0x24, 0x91, 0xba, 0xac, 0x28, 0x34, - 0x14, 0xa0, 0xaa, 0xab, 0xa9, 0xcb, 0xbc, 0x09, 0x73, 0x24, 0x02, 0xb9, 0xaa, 0x40, 0x44, 0x82, - 0xd9, 0xcb, 0x89, 0x42, 0x43, 0x12, 0x00, 0x11, 0x22, 0x90, 0xde, 0xcb, 0xaa, 0x08, 0x80, 0xaa, - 0x8a, 0x61, 0x44, 0x13, 0xb0, 0xcc, 0x8a, 0x31, 0x36, 0x12, 0x80, 0xa9, 0x89, 0x98, 0xa9, 0xaa, - 0x41, 0x37, 0x14, 0xa0, 0xbd, 0x9b, 0x18, 0x12, 0xea, 0xce, 0xbb, 0x8a, 0x20, 0x32, 0x11, 0x00, - 0x21, 0x13, 0xc0, 0xcd, 0xac, 0x88, 0x22, 0x02, 0x00, 0x52, 0x47, 0x43, 0x12, 0xa8, 0xcb, 0x89, - 0x42, 0x33, 0x02, 0xba, 0xbd, 0xab, 0xba, 0xbb, 0x89, 0x73, 0x34, 0x03, 0xb8, 0xbb, 0x30, 0x57, - 0x22, 0xa8, 0xdc, 0xaa, 0x28, 0x53, 0x33, 0x22, 0x11, 0x01, 0x98, 0xdc, 0xbc, 0xbb, 0x99, 0x98, - 0xda, 0xaa, 0x28, 0x46, 0x34, 0x81, 0xc9, 0xab, 0x18, 0x44, 0x33, 0x02, 0x98, 0xaa, 0xaa, 0xab, - 0x9b, 0x61, 0x45, 0x23, 0xa0, 0xcc, 0xab, 0x19, 0x32, 0xc0, 0xef, 0xbb, 0xab, 0x19, 0x31, 0x32, - 0x22, 0x11, 0x00, 0xb9, 0xbf, 0xab, 0x19, 0x31, 0x01, 0xb9, 0x48, 0x77, 0x44, 0x22, 0x00, 0xaa, - 0x9a, 0x10, 0x53, 0x12, 0x88, 0xcb, 0xcb, 0xcb, 0xaa, 0x0a, 0x42, 0x44, 0x02, 0x98, 0x9c, 0x19, - 0x54, 0x33, 0x81, 0xeb, 0xbb, 0x8a, 0x42, 0x44, 0x32, 0x23, 0x01, 0xa0, 0xdb, 0xbc, 0xbb, 0x89, - 0x99, 0xeb, 0xcb, 0x09, 0x52, 0x34, 0x13, 0xa8, 0xbb, 0x8a, 0x53, 0x35, 0x12, 0x81, 0xa9, 0xdb, - 0xba, 0x9a, 0x40, 0x46, 0x32, 0x90, 0xeb, 0xaa, 0x09, 0x22, 0x02, 0xec, 0xcc, 0xbb, 0x9a, 0x18, - 0x22, 0x43, 0x23, 0x01, 0xc9, 0xdb, 0xab, 0x08, 0x22, 0x02, 0xc9, 0x8a, 0x74, 0x44, 0x24, 0x02, - 0x98, 0x99, 0x18, 0x32, 0x23, 0x81, 0xca, 0xcd, 0xbc, 0xcb, 0x8a, 0x41, 0x34, 0x22, 0xb8, 0xbc, - 0x0a, 0x73, 0x43, 0x02, 0xb8, 0xbc, 0x9b, 0x18, 0x53, 0x44, 0x33, 0x23, 0x91, 0xdb, 0xcc, 0x9a, - 0x09, 0x81, 0xb9, 0xcd, 0x9a, 0x20, 0x44, 0x23, 0x80, 0xa9, 0x89, 0x31, 0x35, 0x22, 0x01, 0x80, - 0xcb, 0xbe, 0xbc, 0x18, 0x45, 0x25, 0x81, 0xc9, 0xac, 0x09, 0x21, 0x13, 0xc8, 0xce, 0xbb, 0xab, - 0x88, 0x20, 0x42, 0x43, 0x13, 0x98, 0xcd, 0xbb, 0x09, 0x32, 0x24, 0xa8, 0xac, 0x19, 0x56, 0x34, - 0x12, 0x81, 0x89, 0x18, 0x22, 0x12, 0x88, 0xa9, 0xdb, 0xcd, 0xcc, 0xab, 0x18, 0x54, 0x23, 0x91, - 0xcb, 0xab, 0x40, 0x35, 0x23, 0xa0, 0xcb, 0xbb, 0x88, 0x32, 0x44, 0x35, 0x34, 0x12, 0xb8, 0xdd, - 0xaa, 0x89, 0x11, 0x80, 0xcc, 0xac, 0x09, 0x33, 0x25, 0x01, 0x99, 0x89, 0x41, 0x33, 0x12, 0x80, - 0x08, 0xa0, 0xdd, 0xbd, 0x9b, 0x61, 0x35, 0x13, 0xb8, 0xbd, 0xab, 0x20, 0x34, 0x81, 0xdc, 0xbc, - 0xba, 0x99, 0x88, 0x11, 0x53, 0x34, 0x02, 0xd9, 0xcc, 0x8a, 0x10, 0x33, 0x01, 0xca, 0x9a, 0x52, - 0x45, 0x22, 0x81, 0x88, 0x28, 0x42, 0x13, 0x90, 0xaa, 0xbb, 0xdb, 0xdd, 0xcb, 0x89, 0x41, 0x35, - 0x11, 0xc9, 0xbb, 0x09, 0x63, 0x24, 0x01, 0xb9, 0xba, 0x99, 0x11, 0x32, 0x44, 0x36, 0x24, 0x81, - 0xdb, 0xbc, 0x9a, 0x20, 0x12, 0xc8, 0xbc, 0xab, 0x30, 0x44, 0x12, 0x98, 0x8a, 0x41, 0x34, 0x13, - 0x98, 0xaa, 0x08, 0xb8, 0xde, 0xbc, 0x18, 0x55, 0x43, 0x91, 0xca, 0xac, 0x08, 0x31, 0x13, 0xc8, - 0xcd, 0xba, 0x99, 0x88, 0x80, 0x21, 0x35, 0x24, 0x90, 0xdd, 0xab, 0x19, 0x32, 0x24, 0x98, 0xbb, - 0x1a, 0x55, 0x24, 0x12, 0x88, 0x08, 0x43, 0x33, 0x81, 0xca, 0xab, 0x9a, 0xdb, 0xbe, 0xac, 0x18, - 0x54, 0x33, 0x90, 0xcc, 0x9a, 0x30, 0x44, 0x13, 0x98, 0xbb, 0x9a, 0x10, 0x22, 0x32, 0x46, 0x35, - 0x23, 0xb8, 0xce, 0xbb, 0x08, 0x31, 0x81, 0xdb, 0xbc, 0x09, 0x42, 0x23, 0x90, 0xaa, 0x20, 0x46, - 0x33, 0x80, 0xaa, 0x9a, 0x88, 0xd9, 0xcd, 0x9a, 0x51, 0x35, 0x23, 0xc8, 0xbc, 0x9b, 0x20, 0x24, - 0x81, 0xeb, 0xcb, 0x9a, 0x88, 0x98, 0x08, 0x42, 0x44, 0x12, 0xc9, 0xcd, 0x9a, 0x20, 0x33, 0x02, - 0xb9, 0x9b, 0x51, 0x35, 0x14, 0x80, 0x09, 0x41, 0x35, 0x13, 0xa8, 0xcb, 0xab, 0xa9, 0xeb, 0xbc, - 0x8a, 0x62, 0x43, 0x02, 0xb9, 0xad, 0x1a, 0x52, 0x33, 0x82, 0xb9, 0xab, 0x09, 0x32, 0x12, 0x53, - 0x46, 0x24, 0x82, 0xea, 0xcb, 0x9a, 0x10, 0x22, 0xa0, 0xcc, 0x9a, 0x28, 0x42, 0x01, 0xaa, 0x09, - 0x54, 0x25, 0x03, 0xa8, 0xab, 0x9a, 0x98, 0xdb, 0xbc, 0x29, 0x56, 0x33, 0x81, 0xcc, 0xbb, 0x09, - 0x33, 0x14, 0xb9, 0xbe, 0xbb, 0x89, 0x88, 0x88, 0x28, 0x64, 0x23, 0x91, 0xdd, 0xbb, 0x0a, 0x42, - 0x33, 0x80, 0xbb, 0x19, 0x45, 0x34, 0x01, 0x98, 0x20, 0x46, 0x33, 0x82, 0xca, 0xbb, 0xab, 0xba, - 0xdc, 0x9c, 0x18, 0x54, 0x23, 0x90, 0xdb, 0x9b, 0x30, 0x35, 0x13, 0xa0, 0xbb, 0x89, 0x41, 0x22, - 0x12, 0x63, 0x35, 0x14, 0xa0, 0xcd, 0xac, 0x88, 0x21, 0x01, 0xc9, 0xbb, 0x89, 0x32, 0x14, 0xa9, - 0xab, 0x61, 0x36, 0x24, 0x81, 0xba, 0xba, 0x99, 0xaa, 0xcc, 0x9a, 0x62, 0x35, 0x23, 0xb9, 0xcd, - 0x9a, 0x10, 0x23, 0x81, 0xdc, 0xbb, 0x9a, 0x09, 0x88, 0x89, 0x41, 0x45, 0x12, 0xc9, 0xbe, 0x9b, - 0x28, 0x43, 0x12, 0x98, 0x8a, 0x41, 0x44, 0x12, 0x98, 0x08, 0x64, 0x44, 0x12, 0x90, 0xbb, 0xac, - 0xaa, 0xba, 0xbc, 0x89, 0x63, 0x34, 0x02, 0xc9, 0xac, 0x09, 0x43, 0x34, 0x81, 0xa9, 0x9a, 0x10, - 0x24, 0x22, 0x32, 0x55, 0x43, 0x82, 0xea, 0xbc, 0xaa, 0x10, 0x11, 0x90, 0xcb, 0x9b, 0x10, 0x23, - 0xa8, 0xbd, 0x2a, 0x67, 0x43, 0x12, 0xa8, 0xba, 0xab, 0xaa, 0xbb, 0xab, 0x58, 0x46, 0x24, 0x80, - 0xcb, 0xbb, 0x89, 0x42, 0x02, 0xd9, 0xdb, 0x9a, 0x09, 0x08, 0x98, 0x00, 0x43, 0x24, 0xa1, 0xde, - 0xbb, 0x89, 0x31, 0x24, 0x81, 0x88, 0x30, 0x54, 0x13, 0x80, 0x99, 0x62, 0x46, 0x33, 0x01, 0xb9, - 0xbc, 0xcb, 0xaa, 0xbb, 0x9a, 0x40, 0x45, 0x22, 0xa0, 0xbc, 0x9a, 0x41, 0x34, 0x13, 0xa8, 0xaa, - 0x18, 0x44, 0x33, 0x32, 0x53, 0x44, 0x12, 0xb8, 0xce, 0xbb, 0x8a, 0x11, 0x80, 0xb9, 0xbb, 0x18, - 0x32, 0xb0, 0xdf, 0x8a, 0x62, 0x45, 0x23, 0x81, 0xa9, 0xac, 0xab, 0xab, 0xab, 0x18, 0x45, 0x35, - 0x01, 0xb9, 0xbd, 0x99, 0x20, 0x12, 0xb8, 0xce, 0xab, 0x8a, 0x08, 0x90, 0x80, 0x22, 0x35, 0x81, - 0xec, 0xcc, 0x9a, 0x18, 0x31, 0x02, 0x11, 0x42, 0x34, 0x24, 0x90, 0xaa, 0x48, 0x67, 0x43, 0x12, - 0x80, 0xba, 0xbc, 0xac, 0xba, 0x9a, 0x20, 0x63, 0x32, 0x80, 0xcb, 0x9a, 0x28, 0x44, 0x23, 0x80, - 0x9a, 0x19, 0x53, 0x34, 0x23, 0x34, 0x34, 0x23, 0xa0, 0xde, 0xbb, 0xaa, 0x08, 0x88, 0xba, 0x8a, - 0x20, 0x33, 0xd1, 0xcf, 0xab, 0x30, 0x47, 0x34, 0x02, 0x90, 0xb9, 0xbc, 0xac, 0xab, 0x09, 0x43, - 0x35, 0x12, 0xa9, 0xcc, 0x99, 0x18, 0x11, 0xb8, 0xcd, 0xbb, 0x8a, 0x08, 0x00, 0x09, 0x31, 0x24, - 0x81, 0xde, 0xcc, 0xaa, 0x08, 0x21, 0x00, 0x00, 0x63, 0x35, 0x24, 0x80, 0xba, 0x0a, 0x64, 0x45, - 0x22, 0x02, 0x99, 0xca, 0xdb, 0xba, 0xab, 0x18, 0x52, 0x23, 0x81, 0xba, 0x9c, 0x28, 0x34, 0x14, - 0x90, 0xa9, 0x08, 0x44, 0x34, 0x33, 0x43, 0x34, 0x22, 0xa0, 0xdc, 0xac, 0x9a, 0x88, 0xa8, 0xcb, - 0x9b, 0x31, 0x26, 0x92, 0xfb, 0xac, 0x09, 0x53, 0x44, 0x22, 0x01, 0x99, 0xca, 0xcb, 0xac, 0x8a, - 0x30, 0x35, 0x22, 0xa8, 0xbc, 0x9b, 0x20, 0x22, 0xb8, 0xcf, 0xab, 0x8a, 0x08, 0x01, 0x80, 0x21, - 0x24, 0x92, 0xfc, 0xbc, 0x9b, 0x08, 0x12, 0x90, 0xaa, 0x51, 0x47, 0x33, 0x01, 0xca, 0x9b, 0x31, - 0x57, 0x23, 0x13, 0x80, 0xb9, 0xdb, 0xcc, 0xba, 0x89, 0x41, 0x33, 0x01, 0xc9, 0xab, 0x29, 0x44, - 0x23, 0x90, 0xca, 0x09, 0x41, 0x25, 0x23, 0x33, 0x34, 0x24, 0x80, 0xcc, 0xbc, 0x8a, 0x10, 0x90, - 0xdb, 0xac, 0x19, 0x44, 0x12, 0xb8, 0xce, 0x9a, 0x30, 0x35, 0x24, 0x02, 0x80, 0xa8, 0xdb, 0xcc, - 0x9b, 0x19, 0x53, 0x23, 0x91, 0xcb, 0xab, 0x18, 0x33, 0x81, 0xce, 0xbc, 0x8a, 0x10, 0x11, 0x00, - 0x00, 0x42, 0x02, 0xfa, 0xdc, 0x9a, 0x19, 0x22, 0x81, 0xca, 0x8a, 0x63, 0x45, 0x12, 0x98, 0xbb, - 0x09, 0x73, 0x43, 0x22, 0x01, 0x88, 0xb9, 0xdc, 0xbc, 0x9b, 0x28, 0x53, 0x13, 0xa8, 0xbc, 0x0a, - 0x42, 0x25, 0x81, 0xb9, 0xab, 0x30, 0x45, 0x33, 0x22, 0x33, 0x35, 0x02, 0xda, 0xbd, 0x9b, 0x10, - 0x22, 0xb9, 0xbf, 0x9a, 0x41, 0x34, 0x81, 0xeb, 0xbb, 0x19, 0x53, 0x34, 0x12, 0x81, 0x90, 0xb9, - 0xdd, 0xcb, 0x8a, 0x40, 0x43, 0x02, 0xba, 0xad, 0x09, 0x31, 0x23, 0xc9, 0xcd, 0x9b, 0x19, 0x11, - 0x11, 0x00, 0x31, 0x33, 0xb0, 0xff, 0xac, 0x09, 0x20, 0x13, 0xa8, 0xbb, 0x39, 0x47, 0x24, 0x01, - 0xca, 0x9a, 0x30, 0x45, 0x33, 0x11, 0x08, 0x99, 0xca, 0xcd, 0xcb, 0x89, 0x32, 0x34, 0x91, 0xcb, - 0x9c, 0x38, 0x44, 0x12, 0xa8, 0xbb, 0x8a, 0x53, 0x34, 0x23, 0x33, 0x53, 0x22, 0xa8, 0xce, 0xac, - 0x08, 0x22, 0x01, 0xea, 0xab, 0x19, 0x53, 0x23, 0xb8, 0xcd, 0x9a, 0x30, 0x44, 0x22, 0x01, 0x08, - 0x88, 0xca, 0xbe, 0xac, 0x19, 0x43, 0x24, 0x98, 0xcc, 0x9a, 0x20, 0x43, 0x91, 0xeb, 0xbb, 0x8a, - 0x21, 0x22, 0x11, 0x20, 0x32, 0x82, 0xfd, 0xbd, 0xaa, 0x20, 0x33, 0x83, 0xdb, 0x9b, 0x51, 0x45, - 0x22, 0x98, 0xbb, 0x0a, 0x63, 0x24, 0x22, 0x00, 0x08, 0x99, 0xeb, 0xcc, 0xab, 0x10, 0x34, 0x04, - 0xb8, 0xbc, 0x0a, 0x53, 0x24, 0x81, 0xca, 0xaa, 0x10, 0x44, 0x33, 0x12, 0x33, 0x24, 0x82, 0xfb, - 0xbc, 0x9a, 0x21, 0x23, 0xa0, 0xbe, 0x9b, 0x40, 0x34, 0x02, 0xdb, 0xac, 0x09, 0x43, 0x24, 0x11, - 0x08, 0x08, 0x99, 0xdc, 0xbc, 0x9b, 0x41, 0x34, 0x02, 0xdb, 0xac, 0x09, 0x32, 0x14, 0xb8, 0xbe, - 0xbb, 0x18, 0x31, 0x22, 0x21, 0x32, 0x14, 0xd0, 0xce, 0xac, 0x0a, 0x31, 0x23, 0xa0, 0xcb, 0x1a, - 0x45, 0x25, 0x01, 0xaa, 0x9b, 0x30, 0x46, 0x22, 0x01, 0x88, 0x88, 0xb9, 0xec, 0xcb, 0x89, 0x32, - 0x34, 0xa1, 0xeb, 0x9b, 0x20, 0x35, 0x23, 0xb8, 0xbc, 0x8b, 0x42, 0x35, 0x33, 0x42, 0x32, 0x12, - 0xb9, 0xcf, 0x9c, 0x19, 0x31, 0x11, 0xc9, 0xac, 0x09, 0x42, 0x14, 0x90, 0xbc, 0x9b, 0x30, 0x45, - 0x12, 0x80, 0x08, 0x88, 0xb9, 0xce, 0xac, 0x19, 0x43, 0x23, 0xc8, 0xcc, 0x9a, 0x20, 0x24, 0x92, - 0xfb, 0xbb, 0x99, 0x21, 0x32, 0x22, 0x22, 0x33, 0xa1, 0xdf, 0xbd, 0xaa, 0x10, 0x24, 0x02, 0xb9, - 0xab, 0x41, 0x46, 0x22, 0x98, 0xaa, 0x09, 0x53, 0x34, 0x12, 0x80, 0x08, 0x98, 0xeb, 0xcc, 0xab, - 0x10, 0x44, 0x02, 0xb9, 0xae, 0x89, 0x43, 0x24, 0x82, 0xbb, 0xac, 0x18, 0x44, 0x24, 0x23, 0x23, - 0x14, 0x91, 0xfb, 0xbb, 0x9b, 0x21, 0x33, 0xa1, 0xcc, 0xab, 0x31, 0x35, 0x02, 0xda, 0xac, 0x08, - 0x43, 0x33, 0x02, 0x88, 0x88, 0xa9, 0xed, 0xcb, 0x8b, 0x31, 0x35, 0x91, 0xdc, 0xbb, 0x09, 0x43, - 0x13, 0xb8, 0xbf, 0x9c, 0x09, 0x21, 0x22, 0x33, 0x33, 0x13, 0xea, 0xce, 0xac, 0x09, 0x20, 0x23, - 0x80, 0xaa, 0x19, 0x54, 0x43, 0x01, 0xa9, 0x8a, 0x41, 0x45, 0x22, 0x00, 0x89, 0x98, 0xa9, 0xcd, - 0xcb, 0x09, 0x43, 0x23, 0xb8, 0xce, 0x9a, 0x30, 0x35, 0x23, 0xa8, 0xad, 0x9a, 0x41, 0x53, 0x43, - 0x33, 0x33, 0x01, 0xe9, 0xbc, 0x9c, 0x09, 0x22, 0x02, 0xa9, 0xbb, 0x0a, 0x63, 0x22, 0xa8, 0xbc, - 0x9a, 0x52, 0x34, 0x02, 0x80, 0x89, 0x99, 0xeb, 0xcc, 0xab, 0x10, 0x44, 0x01, 0xeb, 0xbc, 0x8a, - 0x30, 0x24, 0x91, 0xcd, 0xcb, 0x99, 0x10, 0x32, 0x43, 0x24, 0x13, 0xa8, 0xed, 0xbb, 0x9b, 0x18, - 0x33, 0x12, 0x99, 0x8a, 0x52, 0x45, 0x12, 0x90, 0x89, 0x20, 0x45, 0x23, 0x11, 0x88, 0x88, 0xa9, - 0xdc, 0xcc, 0x89, 0x31, 0x43, 0xa1, 0xcd, 0xbb, 0x18, 0x54, 0x23, 0x91, 0xba, 0x9c, 0x18, 0x44, - 0x44, 0x43, 0x33, 0x13, 0xa8, 0xcd, 0xac, 0x8a, 0x10, 0x12, 0x90, 0xa9, 0x0a, 0x31, 0x24, 0x90, - 0xbd, 0x99, 0x42, 0x44, 0x12, 0x80, 0x99, 0xa9, 0xdb, 0xdc, 0xab, 0x28, 0x53, 0x12, 0xeb, 0xcc, - 0xaa, 0x18, 0x32, 0x02, 0xda, 0xcc, 0xaa, 0x89, 0x11, 0x43, 0x35, 0x24, 0x82, 0xda, 0xcc, 0xab, - 0x09, 0x20, 0x11, 0x00, 0x18, 0x31, 0x35, 0x13, 0x90, 0x89, 0x62, 0x35, 0x24, 0x01, 0x88, 0x98, - 0xa9, 0xdb, 0xbc, 0x8a, 0x53, 0x24, 0x91, 0xcd, 0xac, 0x09, 0x32, 0x35, 0x01, 0xa9, 0xaa, 0x89, - 0x42, 0x45, 0x44, 0x34, 0x14, 0x81, 0xba, 0xbd, 0x9b, 0x08, 0x01, 0x81, 0x99, 0x08, 0x22, 0x33, - 0xc8, 0xbd, 0x0a, 0x63, 0x34, 0x02, 0xa8, 0xaa, 0x99, 0xcb, 0xcd, 0xab, 0x28, 0x45, 0x12, 0xda, - 0xcd, 0xaa, 0x08, 0x21, 0x02, 0xc9, 0xbc, 0x9c, 0x99, 0x80, 0x31, 0x55, 0x34, 0x13, 0xb8, 0xce, - 0xab, 0x8a, 0x18, 0x11, 0x80, 0x08, 0x42, 0x44, 0x02, 0x90, 0x9a, 0x41, 0x36, 0x24, 0x81, 0x89, - 0x99, 0x88, 0xba, 0xbd, 0x9b, 0x62, 0x25, 0x02, 0xdb, 0xad, 0x8a, 0x31, 0x24, 0x02, 0xa9, 0xaa, - 0x18, 0x42, 0x43, 0x44, 0x45, 0x34, 0x02, 0xa8, 0xcc, 0xab, 0x09, 0x10, 0x88, 0xa9, 0x08, 0x34, - 0x24, 0x90, 0xbd, 0xab, 0x42, 0x36, 0x12, 0x98, 0xab, 0x99, 0xaa, 0xcc, 0xbc, 0x09, 0x54, 0x14, - 0x90, 0xbe, 0xbc, 0x09, 0x11, 0x12, 0xb8, 0xbd, 0xab, 0x88, 0x08, 0x08, 0x61, 0x45, 0x24, 0x82, - 0xda, 0xbc, 0x9a, 0x08, 0x10, 0x98, 0x89, 0x42, 0x45, 0x12, 0x98, 0xbb, 0x29, 0x55, 0x34, 0x02, - 0xa8, 0xa9, 0x89, 0xa9, 0xdb, 0x9b, 0x50, 0x45, 0x12, 0xb8, 0xcd, 0x9b, 0x20, 0x43, 0x02, 0x98, - 0xab, 0x19, 0x42, 0x23, 0x33, 0x56, 0x35, 0x24, 0x80, 0xca, 0xac, 0x99, 0x10, 0x80, 0xaa, 0x8a, - 0x52, 0x34, 0x82, 0xda, 0xac, 0x18, 0x63, 0x23, 0x80, 0xaa, 0xab, 0x9a, 0xba, 0xbd, 0x9b, 0x73, - 0x34, 0x82, 0xeb, 0xad, 0x9a, 0x10, 0x22, 0x90, 0xbc, 0xac, 0x09, 0x01, 0x81, 0x18, 0x73, 0x44, - 0x22, 0xb8, 0xcd, 0x9b, 0x09, 0x10, 0x90, 0xaa, 0x19, 0x46, 0x24, 0x01, 0xba, 0x9c, 0x41, 0x44, - 0x23, 0x90, 0xaa, 0x9a, 0x99, 0xc9, 0xbb, 0x29, 0x47, 0x34, 0x81, 0xcc, 0xac, 0x19, 0x41, 0x22, - 0x88, 0xbb, 0x8a, 0x41, 0x24, 0x12, 0x22, 0x55, 0x34, 0x12, 0xb9, 0xcc, 0x9b, 0x00, 0x01, 0xb9, - 0xbc, 0x28, 0x46, 0x13, 0xa0, 0xbd, 0x8b, 0x51, 0x53, 0x02, 0xa8, 0xba, 0x9a, 0x9a, 0xcb, 0xbb, - 0x48, 0x55, 0x23, 0xb8, 0xce, 0xab, 0x08, 0x31, 0x82, 0xd9, 0xcb, 0x99, 0x20, 0x11, 0x80, 0x20, - 0x64, 0x43, 0x81, 0xda, 0xac, 0x8a, 0x10, 0x81, 0xb9, 0x9b, 0x61, 0x35, 0x14, 0xb8, 0xbb, 0x1a, - 0x64, 0x24, 0x01, 0xa8, 0xaa, 0xa9, 0x99, 0xba, 0x8b, 0x73, 0x36, 0x13, 0xb9, 0xbe, 0x9b, 0x21, - 0x34, 0x02, 0xba, 0xac, 0x18, 0x34, 0x24, 0x11, 0x32, 0x46, 0x23, 0x91, 0xeb, 0xaa, 0x09, 0x10, - 0x90, 0xbc, 0x8c, 0x51, 0x34, 0x02, 0xca, 0xbc, 0x18, 0x63, 0x23, 0x81, 0xba, 0xbb, 0xab, 0xcb, - 0xcb, 0x89, 0x54, 0x25, 0x82, 0xea, 0xcb, 0x99, 0x10, 0x22, 0x98, 0xbd, 0xab, 0x18, 0x32, 0x12, - 0x08, 0x42, 0x45, 0x22, 0xc8, 0xcc, 0xaa, 0x00, 0x11, 0xa8, 0xbd, 0x19, 0x64, 0x43, 0x81, 0xba, - 0xab, 0x40, 0x45, 0x22, 0x91, 0xb9, 0xab, 0xaa, 0xba, 0xbb, 0x40, 0x67, 0x32, 0x91, 0xda, 0xbb, - 0x09, 0x43, 0x22, 0xa0, 0xbc, 0x9a, 0x42, 0x34, 0x23, 0x21, 0x52, 0x34, 0x02, 0xc9, 0xbc, 0x8a, - 0x20, 0x01, 0xeb, 0xbb, 0x29, 0x55, 0x33, 0xa0, 0xcc, 0x9a, 0x31, 0x36, 0x12, 0xa0, 0xcb, 0xba, - 0xba, 0xbb, 0x9c, 0x50, 0x54, 0x13, 0xa8, 0xbe, 0x9c, 0x09, 0x21, 0x01, 0xca, 0xbc, 0x8a, 0x20, - 0x33, 0x02, 0x11, 0x53, 0x43, 0x91, 0xdc, 0xbb, 0x09, 0x21, 0x81, 0xdc, 0x9b, 0x41, 0x45, 0x13, - 0xa0, 0xbc, 0x0a, 0x63, 0x34, 0x02, 0x98, 0xbb, 0xcb, 0xaa, 0xaa, 0x09, 0x55, 0x35, 0x12, 0xb8, - 0xbd, 0x9b, 0x30, 0x34, 0x82, 0xca, 0xac, 0x18, 0x53, 0x33, 0x22, 0x22, 0x34, 0x22, 0xa0, 0xbe, - 0xab, 0x28, 0x22, 0xd8, 0xbd, 0x9b, 0x52, 0x35, 0x12, 0xba, 0xad, 0x09, 0x63, 0x33, 0x01, 0xb9, - 0xbc, 0xac, 0xcb, 0xaa, 0x18, 0x54, 0x43, 0x81, 0xda, 0xbc, 0x8a, 0x28, 0x11, 0xa8, 0xcd, 0x9b, - 0x19, 0x32, 0x23, 0x22, 0x22, 0x43, 0x82, 0xeb, 0xbc, 0x8b, 0x31, 0x12, 0xfa, 0xcb, 0x09, 0x54, - 0x33, 0x02, 0xca, 0xab, 0x30, 0x46, 0x23, 0x81, 0xa9, 0xbc, 0xbb, 0xbc, 0x8a, 0x41, 0x37, 0x24, - 0x81, 0xcb, 0xab, 0x09, 0x42, 0x13, 0xa8, 0xbd, 0x8a, 0x41, 0x34, 0x24, 0x22, 0x32, 0x12, 0x91, - 0xcc, 0xbb, 0x19, 0x33, 0x91, 0xde, 0xbb, 0x28, 0x54, 0x14, 0x91, 0xbb, 0x9b, 0x51, 0x44, 0x22, - 0x88, 0xca, 0xcb, 0xcb, 0xab, 0x0a, 0x51, 0x34, 0x23, 0xb9, 0xbf, 0xab, 0x09, 0x11, 0x91, 0xeb, - 0xcb, 0x8a, 0x20, 0x32, 0x43, 0x32, 0x22, 0x81, 0xda, 0xbc, 0x9b, 0x20, 0x24, 0xa0, 0xcd, 0x9b, - 0x41, 0x54, 0x12, 0x90, 0xbb, 0x09, 0x54, 0x34, 0x13, 0x90, 0xcb, 0xcc, 0xba, 0xab, 0x38, 0x55, - 0x24, 0x12, 0xa9, 0xac, 0x8a, 0x20, 0x33, 0x91, 0xeb, 0xab, 0x18, 0x63, 0x24, 0x24, 0x32, 0x11, - 0x90, 0xcb, 0xbb, 0x09, 0x43, 0x12, 0xda, 0xbd, 0x89, 0x41, 0x34, 0x12, 0xb9, 0xbb, 0x29, 0x56, - 0x23, 0x02, 0x98, 0xdc, 0xdb, 0xcb, 0x9a, 0x10, 0x34, 0x24, 0x91, 0xdb, 0xbb, 0x9a, 0x18, 0x90, - 0xea, 0xcb, 0xab, 0x18, 0x41, 0x42, 0x33, 0x33, 0x01, 0xda, 0xbc, 0x9b, 0x20, 0x34, 0x82, 0xcc, - 0xac, 0x18, 0x63, 0x23, 0x82, 0xaa, 0x8a, 0x51, 0x44, 0x22, 0x02, 0xa0, 0xcc, 0xcd, 0xab, 0x8a, - 0x52, 0x44, 0x22, 0x80, 0xba, 0x9b, 0x10, 0x32, 0x81, 0xdb, 0xac, 0x89, 0x42, 0x44, 0x34, 0x34, - 0x22, 0x81, 0xcb, 0xac, 0x8a, 0x32, 0x23, 0xa0, 0xce, 0x9a, 0x20, 0x53, 0x12, 0xa0, 0x9a, 0x18, - 0x54, 0x33, 0x23, 0x00, 0xca, 0xcf, 0xbc, 0xbc, 0x09, 0x42, 0x24, 0x02, 0xba, 0xad, 0x9b, 0x08, - 0x90, 0xd9, 0xcb, 0xbb, 0x99, 0x10, 0x43, 0x54, 0x33, 0x23, 0xb8, 0xcd, 0xab, 0x19, 0x43, 0x12, - 0xa8, 0xbc, 0x0a, 0x52, 0x33, 0x01, 0xaa, 0x09, 0x73, 0x53, 0x22, 0x01, 0x00, 0xc9, 0xdd, 0xbc, - 0xab, 0x30, 0x55, 0x23, 0x81, 0xa9, 0x9a, 0x10, 0x22, 0x82, 0xda, 0xac, 0x8a, 0x20, 0x34, 0x45, - 0x44, 0x33, 0x12, 0xc9, 0xbc, 0x9b, 0x20, 0x34, 0x82, 0xca, 0xbb, 0x19, 0x34, 0x23, 0x98, 0x9b, - 0x30, 0x47, 0x23, 0x02, 0x80, 0x80, 0xea, 0xde, 0xbc, 0xaa, 0x20, 0x44, 0x12, 0xa8, 0xac, 0x9b, - 0x08, 0x90, 0xda, 0xbd, 0xbb, 0x89, 0x00, 0x21, 0x63, 0x34, 0x25, 0x81, 0xcb, 0xbc, 0x0a, 0x41, - 0x23, 0x81, 0xcb, 0x9a, 0x21, 0x34, 0x02, 0xb9, 0x8a, 0x73, 0x43, 0x22, 0x08, 0x08, 0x00, 0xe9, - 0xce, 0xbc, 0x89, 0x52, 0x24, 0x03, 0x98, 0x9a, 0x18, 0x33, 0x12, 0xdb, 0xad, 0x8a, 0x20, 0x32, - 0x43, 0x54, 0x44, 0x23, 0x90, 0xeb, 0xab, 0x08, 0x32, 0x23, 0xa8, 0xbc, 0x0a, 0x42, 0x14, 0x90, - 0xbb, 0x29, 0x46, 0x24, 0x02, 0x99, 0x88, 0x90, 0xfb, 0xcd, 0xac, 0x09, 0x32, 0x24, 0x80, 0xdb, - 0xaa, 0x08, 0x11, 0xb9, 0xce, 0xac, 0x89, 0x08, 0x10, 0x10, 0x53, 0x35, 0x23, 0xb8, 0xbe, 0xab, - 0x28, 0x53, 0x12, 0x99, 0x9b, 0x28, 0x43, 0x03, 0xda, 0x9b, 0x30, 0x47, 0x23, 0x90, 0x99, 0x89, - 0x80, 0xeb, 0xcd, 0xab, 0x20, 0x36, 0x23, 0x80, 0xab, 0x19, 0x53, 0x14, 0xa0, 0xcc, 0xaa, 0x18, - 0x32, 0x22, 0x43, 0x55, 0x43, 0x02, 0xc9, 0xbc, 0x9a, 0x20, 0x34, 0x01, 0xba, 0x9a, 0x30, 0x34, - 0x92, 0xcc, 0x9a, 0x63, 0x35, 0x12, 0xa8, 0x9a, 0x89, 0x90, 0xfc, 0xbc, 0x9b, 0x20, 0x34, 0x02, - 0xcb, 0xbc, 0x09, 0x22, 0x92, 0xed, 0xbc, 0xaa, 0x18, 0x11, 0x00, 0x31, 0x64, 0x23, 0x82, 0xdb, - 0xad, 0x89, 0x31, 0x24, 0x81, 0xaa, 0x89, 0x42, 0x23, 0xb0, 0xbd, 0x0a, 0x64, 0x43, 0x01, 0xa9, - 0x9a, 0x08, 0x88, 0xec, 0xcb, 0x0a, 0x52, 0x43, 0x01, 0xa9, 0x89, 0x41, 0x25, 0x82, 0xda, 0xbb, - 0x0a, 0x31, 0x24, 0x21, 0x42, 0x45, 0x23, 0x91, 0xdc, 0xbb, 0x09, 0x33, 0x14, 0xa0, 0xaa, 0x18, - 0x44, 0x12, 0xca, 0xac, 0x39, 0x55, 0x33, 0x81, 0xba, 0x9a, 0x89, 0xb8, 0xcf, 0xac, 0x09, 0x32, - 0x23, 0xc8, 0xbd, 0x9a, 0x30, 0x23, 0xd8, 0xce, 0x9c, 0x89, 0x00, 0x11, 0x00, 0x31, 0x45, 0x22, - 0xb0, 0xcd, 0xaa, 0x18, 0x24, 0x03, 0xa0, 0x89, 0x31, 0x34, 0x92, 0xcd, 0x9c, 0x20, 0x36, 0x14, - 0x80, 0xba, 0x9a, 0x88, 0xa9, 0xdc, 0x9b, 0x30, 0x45, 0x13, 0x98, 0xbb, 0x30, 0x47, 0x23, 0xa8, - 0xcc, 0x9b, 0x18, 0x32, 0x23, 0x32, 0x54, 0x34, 0x12, 0xca, 0xcd, 0x8a, 0x28, 0x23, 0x82, 0x99, - 0x0a, 0x52, 0x33, 0xa0, 0xce, 0x8a, 0x51, 0x35, 0x12, 0x98, 0xab, 0xaa, 0x98, 0xca, 0xcc, 0x9b, - 0x20, 0x24, 0x90, 0xdd, 0xaa, 0x18, 0x33, 0x83, 0xed, 0xbc, 0x9b, 0x08, 0x21, 0x11, 0x20, 0x53, - 0x34, 0x81, 0xea, 0xcb, 0x89, 0x31, 0x24, 0x81, 0x89, 0x18, 0x34, 0x14, 0xc9, 0xcc, 0x09, 0x52, - 0x24, 0x02, 0xa9, 0xbb, 0x9a, 0x98, 0xca, 0xbb, 0x1a, 0x46, 0x24, 0x80, 0xbb, 0x09, 0x55, 0x25, - 0x01, 0xba, 0xad, 0x8a, 0x31, 0x23, 0x23, 0x32, 0x45, 0x23, 0x90, 0xcd, 0xac, 0x09, 0x21, 0x13, - 0x90, 0x89, 0x41, 0x35, 0x02, 0xeb, 0xbb, 0x18, 0x56, 0x23, 0x01, 0xa9, 0xbb, 0xaa, 0xaa, 0xdb, - 0xab, 0x19, 0x43, 0x92, 0xfc, 0xbb, 0x8a, 0x42, 0x23, 0xc8, 0xce, 0xac, 0x89, 0x10, 0x11, 0x11, - 0x21, 0x53, 0x12, 0xa8, 0xcd, 0xaa, 0x18, 0x43, 0x12, 0x80, 0x28, 0x63, 0x23, 0xa1, 0xdd, 0x9b, - 0x38, 0x45, 0x33, 0x80, 0xbb, 0xbc, 0xaa, 0xa9, 0xa9, 0x09, 0x44, 0x25, 0x82, 0xca, 0x9b, 0x61, - 0x35, 0x14, 0x90, 0xcb, 0xab, 0x19, 0x42, 0x32, 0x23, 0x43, 0x24, 0x01, 0xcb, 0xbd, 0x9b, 0x28, - 0x32, 0x81, 0x88, 0x41, 0x36, 0x14, 0xa8, 0xcd, 0x8a, 0x51, 0x34, 0x14, 0x90, 0xb9, 0xbb, 0xab, - 0xab, 0xab, 0x18, 0x42, 0x02, 0xfd, 0xbc, 0x9a, 0x20, 0x43, 0x82, 0xdc, 0xbd, 0xaa, 0x08, 0x20, - 0x21, 0x32, 0x33, 0x24, 0x90, 0xbd, 0xad, 0x09, 0x31, 0x23, 0x01, 0x20, 0x55, 0x34, 0x01, 0xda, - 0xac, 0x8a, 0x53, 0x34, 0x12, 0xa8, 0xdb, 0xba, 0xab, 0x9a, 0x18, 0x62, 0x33, 0x02, 0xda, 0xbb, - 0x38, 0x57, 0x33, 0x01, 0xc9, 0xbb, 0x9a, 0x30, 0x53, 0x33, 0x33, 0x24, 0x02, 0xc9, 0xbd, 0xab, - 0x08, 0x11, 0x81, 0x88, 0x51, 0x46, 0x33, 0x91, 0xcc, 0xab, 0x28, 0x55, 0x24, 0x01, 0xa0, 0xca, - 0xba, 0xac, 0xa9, 0x00, 0x32, 0x03, 0xea, 0xbe, 0xac, 0x08, 0x32, 0x22, 0xb9, 0xcf, 0xbb, 0x9a, - 0x18, 0x21, 0x42, 0x23, 0x23, 0x81, 0xdb, 0xac, 0x0a, 0x20, 0x23, 0x00, 0x20, 0x57, 0x53, 0x12, - 0xa8, 0xcc, 0x9a, 0x20, 0x44, 0x14, 0x81, 0xb8, 0xbc, 0xbc, 0xab, 0x09, 0x43, 0x35, 0x02, 0xb9, - 0xcc, 0x09, 0x52, 0x35, 0x22, 0x90, 0xbb, 0xbb, 0x09, 0x32, 0x45, 0x34, 0x33, 0x11, 0xb9, 0xbe, - 0x9b, 0x09, 0x01, 0x90, 0xba, 0x40, 0x47, 0x24, 0x12, 0xc9, 0xbb, 0x09, 0x52, 0x35, 0x23, 0x00, - 0xa9, 0xcd, 0xcb, 0xab, 0x08, 0x42, 0x23, 0xb8, 0xde, 0xbb, 0x8a, 0x21, 0x23, 0x91, 0xcd, 0xbc, - 0xba, 0x89, 0x18, 0x32, 0x45, 0x22, 0x81, 0xba, 0xad, 0x0a, 0x31, 0x13, 0x98, 0x9a, 0x74, 0x35, - 0x24, 0x81, 0xcb, 0xab, 0x19, 0x42, 0x34, 0x02, 0x80, 0xda, 0xdc, 0xbb, 0x9a, 0x30, 0x45, 0x23, - 0xa0, 0xbc, 0x9c, 0x21, 0x45, 0x23, 0x81, 0xa9, 0x9a, 0x99, 0x10, 0x41, 0x54, 0x43, 0x12, 0xa0, - 0xbc, 0xac, 0x08, 0x21, 0x90, 0xda, 0x8a, 0x63, 0x44, 0x22, 0x98, 0xbb, 0x9a, 0x41, 0x44, 0x32, - 0x02, 0x81, 0xda, 0xdc, 0xbb, 0x9b, 0x31, 0x35, 0x02, 0xdc, 0xbc, 0x9b, 0x18, 0x22, 0x02, 0xca, - 0xcc, 0xaa, 0xaa, 0x98, 0x10, 0x73, 0x33, 0x12, 0xc9, 0xbc, 0x8a, 0x31, 0x24, 0x91, 0xba, 0x29, - 0x57, 0x34, 0x11, 0xb9, 0xbb, 0x8a, 0x42, 0x33, 0x13, 0x81, 0xa8, 0xde, 0xbd, 0xbc, 0x09, 0x53, - 0x34, 0x01, 0xca, 0xbb, 0x19, 0x63, 0x33, 0x03, 0x90, 0x9a, 0x09, 0x08, 0x00, 0x63, 0x45, 0x33, - 0x81, 0xeb, 0xbb, 0x8a, 0x32, 0x12, 0xca, 0xbc, 0x28, 0x56, 0x23, 0x82, 0xb9, 0xab, 0x28, 0x35, - 0x24, 0x01, 0x11, 0x80, 0xdc, 0xcd, 0xbb, 0x08, 0x53, 0x23, 0xb0, 0xce, 0xbb, 0x89, 0x21, 0x02, - 0xa8, 0xcc, 0xaa, 0x99, 0x99, 0x9a, 0x31, 0x47, 0x23, 0x90, 0xcc, 0xab, 0x28, 0x53, 0x12, 0xb9, - 0xab, 0x71, 0x44, 0x23, 0x90, 0xba, 0x9b, 0x20, 0x33, 0x03, 0x80, 0x88, 0xc8, 0xdf, 0xbd, 0xab, - 0x30, 0x36, 0x14, 0x90, 0xbc, 0x9a, 0x30, 0x35, 0x23, 0x80, 0x99, 0x08, 0x21, 0x00, 0x18, 0x64, - 0x35, 0x23, 0xc9, 0xdc, 0x9a, 0x10, 0x32, 0x80, 0xbc, 0x9b, 0x52, 0x36, 0x12, 0xa0, 0xba, 0x08, - 0x52, 0x33, 0x01, 0x00, 0x10, 0xa8, 0xee, 0xbd, 0x9a, 0x30, 0x35, 0x02, 0xeb, 0xbc, 0x9a, 0x18, - 0x12, 0x80, 0xcb, 0xbb, 0x99, 0x90, 0xb9, 0x8a, 0x73, 0x35, 0x12, 0xca, 0xbd, 0x0a, 0x41, 0x33, - 0x81, 0xcb, 0x09, 0x45, 0x34, 0x02, 0xb8, 0xab, 0x29, 0x53, 0x12, 0xa8, 0x9a, 0x89, 0xc9, 0xdf, - 0xcb, 0x09, 0x42, 0x25, 0x82, 0xc9, 0xab, 0x09, 0x53, 0x33, 0x01, 0x99, 0x08, 0x31, 0x23, 0x80, - 0x30, 0x57, 0x33, 0x92, 0xcd, 0xad, 0x09, 0x22, 0x12, 0xb8, 0xad, 0x19, 0x73, 0x23, 0x82, 0xa9, - 0x8a, 0x40, 0x24, 0x03, 0x98, 0x09, 0x01, 0xc8, 0xcf, 0xbc, 0x09, 0x43, 0x24, 0xa8, 0xcd, 0xbb, - 0x89, 0x21, 0x81, 0xca, 0xbb, 0x9a, 0x10, 0x91, 0xba, 0x19, 0x56, 0x33, 0xb1, 0xde, 0xaa, 0x20, - 0x53, 0x12, 0xa9, 0x9b, 0x40, 0x55, 0x22, 0x80, 0xaa, 0x89, 0x31, 0x33, 0xa0, 0xcb, 0x8b, 0x98, - 0xfa, 0xce, 0xaa, 0x28, 0x45, 0x13, 0x90, 0xbc, 0x9a, 0x30, 0x35, 0x12, 0x98, 0x89, 0x41, 0x43, - 0x12, 0x88, 0x21, 0x46, 0x12, 0xc9, 0xcd, 0x9a, 0x10, 0x23, 0x82, 0xdb, 0xaa, 0x41, 0x35, 0x23, - 0x98, 0x9b, 0x28, 0x36, 0x23, 0x91, 0xaa, 0x89, 0x81, 0xfb, 0xbe, 0x9c, 0x20, 0x44, 0x01, 0xda, - 0xbc, 0xaa, 0x00, 0x11, 0xa8, 0xcc, 0x9a, 0x08, 0x11, 0x90, 0x9a, 0x30, 0x46, 0x02, 0xea, 0xbc, - 0x89, 0x32, 0x35, 0x81, 0xa9, 0x1a, 0x73, 0x43, 0x02, 0x99, 0x9a, 0x30, 0x35, 0x01, 0xc9, 0xac, - 0x99, 0x89, 0xeb, 0xbc, 0x0a, 0x62, 0x43, 0x01, 0xc9, 0xba, 0x08, 0x53, 0x23, 0x91, 0x99, 0x28, - 0x54, 0x23, 0x02, 0x10, 0x32, 0x25, 0xa1, 0xde, 0xac, 0x09, 0x31, 0x22, 0xa8, 0xbc, 0x19, 0x73, - 0x33, 0x01, 0x99, 0x09, 0x44, 0x34, 0x82, 0xb9, 0xaa, 0x09, 0x98, 0xce, 0xad, 0x09, 0x42, 0x23, - 0xb8, 0xcf, 0xbb, 0x89, 0x00, 0xa0, 0xeb, 0xab, 0x09, 0x21, 0x12, 0x90, 0x09, 0x31, 0x15, 0xd8, - 0xbe, 0x9c, 0x28, 0x44, 0x12, 0x88, 0x9a, 0x31, 0x46, 0x23, 0x80, 0xa9, 0x18, 0x44, 0x22, 0xa8, - 0xbd, 0xbb, 0x99, 0xba, 0xce, 0xaa, 0x20, 0x36, 0x14, 0xa0, 0xbb, 0x8b, 0x42, 0x34, 0x02, 0xb9, - 0x09, 0x55, 0x34, 0x23, 0x01, 0x11, 0x22, 0x82, 0xfc, 0xbc, 0x9b, 0x10, 0x33, 0x81, 0xca, 0x9a, - 0x52, 0x35, 0x13, 0x88, 0x89, 0x63, 0x44, 0x22, 0x98, 0xba, 0xab, 0x99, 0xba, 0xbe, 0xab, 0x42, - 0x25, 0x91, 0xdd, 0xac, 0x9b, 0x08, 0x88, 0xcb, 0xbd, 0x9a, 0x20, 0x22, 0x02, 0x00, 0x10, 0x21, - 0xc8, 0xcf, 0xbc, 0x09, 0x42, 0x43, 0x01, 0x08, 0x28, 0x44, 0x24, 0x01, 0x98, 0x18, 0x54, 0x43, - 0x81, 0xca, 0xbc, 0xab, 0xaa, 0xba, 0xab, 0x29, 0x55, 0x24, 0x80, 0xca, 0x8a, 0x20, 0x44, 0x12, - 0xa8, 0x9a, 0x50, 0x36, 0x25, 0x22, 0x11, 0x11, 0x80, 0xda, 0xcc, 0xab, 0x89, 0x22, 0x12, 0xa8, - 0x9a, 0x21, 0x46, 0x33, 0x00, 0x19, 0x72, 0x54, 0x22, 0x81, 0xa9, 0xbb, 0xbb, 0xba, 0xbb, 0x9b, - 0x40, 0x35, 0xa2, 0xde, 0xbc, 0xab, 0x99, 0xa8, 0xdc, 0xcc, 0xaa, 0x08, 0x31, 0x32, 0x21, 0x11, - 0x80, 0xca, 0xce, 0xac, 0x8a, 0x31, 0x43, 0x03, 0x00, 0x31, 0x54, 0x24, 0x12, 0x88, 0x18, 0x73, - 0x43, 0x02, 0xa9, 0xcc, 0xcb, 0xaa, 0xab, 0x9a, 0x18, 0x34, 0x25, 0x80, 0xba, 0x9b, 0x42, 0x35, - 0x13, 0xc9, 0xab, 0x28, 0x57, 0x43, 0x33, 0x22, 0x22, 0x80, 0xda, 0xcc, 0xab, 0x89, 0x10, 0x01, - 0x98, 0x0a, 0x41, 0x35, 0x23, 0x90, 0x8a, 0x73, 0x46, 0x33, 0x11, 0x98, 0xbb, 0xbc, 0xcb, 0xaa, - 0x0a, 0x41, 0x43, 0x81, 0xec, 0xcb, 0xaa, 0x88, 0x88, 0xdb, 0xcd, 0xaa, 0x8a, 0x10, 0x32, 0x32, - 0x23, 0x13, 0xb9, 0xdf, 0xcb, 0x8a, 0x10, 0x22, 0x12, 0x01, 0x42, 0x36, 0x24, 0x01, 0x99, 0x89, - 0x44, 0x45, 0x22, 0x90, 0xba, 0xbd, 0xbc, 0xbb, 0xaa, 0x28, 0x44, 0x23, 0x91, 0xdb, 0x9b, 0x31, - 0x45, 0x12, 0xa0, 0xac, 0x0a, 0x42, 0x36, 0x34, 0x33, 0x24, 0x02, 0xb9, 0xcd, 0xbb, 0x9a, 0x11, - 0x10, 0xa9, 0x9a, 0x41, 0x36, 0x13, 0xa0, 0xab, 0x48, 0x57, 0x33, 0x13, 0x91, 0xb9, 0xca, 0xbc, - 0xcb, 0x8a, 0x31, 0x35, 0x83, 0xea, 0xcc, 0x9a, 0x08, 0x01, 0xb9, 0xce, 0xac, 0x9a, 0x00, 0x21, - 0x21, 0x43, 0x32, 0x80, 0xdc, 0xcc, 0x9a, 0x18, 0x22, 0x02, 0x80, 0x18, 0x55, 0x43, 0x12, 0x99, - 0x9a, 0x40, 0x45, 0x33, 0x81, 0xb9, 0xcb, 0xbc, 0xcc, 0xab, 0x0a, 0x51, 0x33, 0x02, 0xca, 0xad, - 0x18, 0x53, 0x23, 0x80, 0xdb, 0x9a, 0x10, 0x44, 0x24, 0x33, 0x34, 0x23, 0x91, 0xdc, 0xbc, 0x8a, - 0x18, 0x11, 0x98, 0xab, 0x19, 0x64, 0x33, 0x81, 0xbb, 0x8c, 0x63, 0x35, 0x14, 0x01, 0x98, 0x9a, - 0xca, 0xcb, 0xab, 0x19, 0x45, 0x23, 0xa0, 0xbe, 0xac, 0x89, 0x21, 0x80, 0xfb, 0xdb, 0x9a, 0x88, - 0x10, 0x11, 0x31, 0x43, 0x13, 0xb8, 0xcf, 0xbb, 0x09, 0x31, 0x22, 0x90, 0x89, 0x62, 0x45, 0x22, - 0x90, 0xba, 0x09, 0x73, 0x34, 0x02, 0x90, 0xba, 0xcb, 0xdb, 0xcb, 0x9b, 0x20, 0x54, 0x12, 0xa0, - 0xbc, 0x8b, 0x41, 0x34, 0x03, 0xb9, 0xad, 0x89, 0x42, 0x34, 0x42, 0x43, 0x33, 0x13, 0xc9, 0xcd, - 0xab, 0x09, 0x21, 0x81, 0xba, 0x9b, 0x51, 0x45, 0x02, 0xa8, 0xac, 0x28, 0x64, 0x33, 0x02, 0x90, - 0xa8, 0xb9, 0xdb, 0xbc, 0x9b, 0x42, 0x26, 0x02, 0xca, 0xbd, 0x9a, 0x20, 0x12, 0xb8, 0xde, 0xab, - 0x8a, 0x18, 0x11, 0x11, 0x43, 0x24, 0x82, 0xeb, 0xcc, 0x9a, 0x10, 0x32, 0x01, 0xa9, 0x19, 0x55, - 0x24, 0x12, 0xb9, 0xab, 0x40, 0x45, 0x23, 0x00, 0xa9, 0xbb, 0xdb, 0xbc, 0xbc, 0x0a, 0x52, 0x24, - 0x02, 0xcb, 0xac, 0x19, 0x53, 0x33, 0x90, 0xcb, 0x9b, 0x28, 0x44, 0x33, 0x43, 0x44, 0x22, 0x81, - 0xeb, 0xcb, 0x8a, 0x10, 0x02, 0xa0, 0xbb, 0x1a, 0x45, 0x34, 0x91, 0xca, 0x8b, 0x51, 0x35, 0x23, - 0x81, 0x98, 0xa9, 0xca, 0xbc, 0xad, 0x08, 0x44, 0x33, 0xa0, 0xdd, 0xab, 0x88, 0x22, 0x01, 0xdb, - 0xcd, 0x9a, 0x09, 0x10, 0x01, 0x31, 0x43, 0x33, 0xb8, 0xcf, 0xbb, 0x89, 0x32, 0x13, 0xa0, 0x9a, - 0x61, 0x45, 0x23, 0x90, 0xbb, 0x0a, 0x73, 0x24, 0x03, 0x90, 0xaa, 0xbb, 0xcc, 0xcc, 0x9a, 0x28, - 0x63, 0x13, 0xa0, 0xcc, 0x9a, 0x31, 0x44, 0x02, 0xb8, 0xbb, 0x8a, 0x42, 0x34, 0x24, 0x34, 0x34, - 0x22, 0xb9, 0xce, 0xab, 0x88, 0x22, 0x81, 0xba, 0x9c, 0x40, 0x44, 0x13, 0xb8, 0xac, 0x19, 0x64, - 0x33, 0x12, 0x90, 0xa8, 0xa9, 0xcc, 0xbc, 0x9a, 0x41, 0x35, 0x03, 0xda, 0xcc, 0x8a, 0x18, 0x22, - 0xa8, 0xcd, 0xac, 0x8a, 0x08, 0x01, 0x21, 0x42, 0x43, 0x82, 0xda, 0xbd, 0xab, 0x10, 0x33, 0x01, - 0xaa, 0x19, 0x56, 0x34, 0x02, 0xb8, 0xab, 0x38, 0x56, 0x22, 0x01, 0x99, 0xba, 0xcb, 0xcc, 0xcb, - 0x89, 0x42, 0x24, 0x02, 0xca, 0xbc, 0x08, 0x43, 0x24, 0x81, 0xbb, 0xbb, 0x10, 0x54, 0x32, 0x34, - 0x34, 0x24, 0x81, 0xda, 0xbc, 0x9a, 0x18, 0x12, 0x98, 0xbc, 0x19, 0x73, 0x33, 0x81, 0xbb, 0x8c, - 0x41, 0x45, 0x23, 0x01, 0x98, 0x99, 0xbb, 0xcd, 0xbb, 0x19, 0x45, 0x33, 0xa0, 0xdd, 0xab, 0x89, - 0x22, 0x01, 0xea, 0xbc, 0x9c, 0x89, 0x00, 0x01, 0x22, 0x44, 0x22, 0xa8, 0xcd, 0xac, 0x8a, 0x21, - 0x22, 0x90, 0x8a, 0x51, 0x45, 0x23, 0x80, 0xba, 0x89, 0x63, 0x25, 0x13, 0x90, 0xaa, 0xbb, 0xcd, - 0xcb, 0xaa, 0x28, 0x44, 0x23, 0xa8, 0xcc, 0x9b, 0x21, 0x45, 0x02, 0x98, 0xbb, 0x8a, 0x31, 0x45, - 0x43, 0x43, 0x43, 0x12, 0xa8, 0xbd, 0xac, 0x89, 0x11, 0x80, 0xb9, 0x9b, 0x41, 0x36, 0x13, 0xa8, - 0xbb, 0x29, 0x56, 0x34, 0x12, 0x81, 0xa8, 0xb9, 0xcc, 0xbc, 0x8a, 0x31, 0x36, 0x12, 0xda, 0xcc, - 0x9a, 0x18, 0x01, 0xb0, 0xdc, 0xac, 0x9a, 0x09, 0x00, 0x31, 0x43, 0x24, 0x82, 0xea, 0xdb, 0x9a, - 0x08, 0x12, 0x81, 0x98, 0x20, 0x55, 0x34, 0x02, 0x98, 0x9a, 0x20, 0x46, 0x23, 0x02, 0xa0, 0xca, - 0xdb, 0xcc, 0xba, 0x09, 0x41, 0x24, 0x01, 0xca, 0xbb, 0x08, 0x53, 0x14, 0x81, 0xb9, 0xaa, 0x28, - 0x53, 0x44, 0x53, 0x43, 0x23, 0x80, 0xca, 0xbc, 0xaa, 0x08, 0x81, 0xa8, 0xab, 0x28, 0x46, 0x24, - 0x80, 0xa9, 0x0a, 0x62, 0x35, 0x23, 0x12, 0x80, 0xb9, 0xcc, 0xcc, 0xaa, 0x28, 0x53, 0x13, 0xb0, - 0xcd, 0xac, 0x09, 0x00, 0x90, 0xdb, 0xcc, 0xba, 0x99, 0x88, 0x11, 0x53, 0x33, 0x23, 0xc8, 0xcd, - 0xbb, 0x89, 0x10, 0x01, 0x80, 0x28, 0x64, 0x34, 0x23, 0x81, 0x99, 0x20, 0x55, 0x43, 0x21, 0x80, - 0xa9, 0xcc, 0xbc, 0xbd, 0x99, 0x20, 0x43, 0x12, 0xb9, 0xbc, 0x8a, 0x41, 0x34, 0x12, 0x99, 0xbb, - 0x09, 0x52, 0x44, 0x45, 0x44, 0x22, 0x02, 0xa8, 0xbc, 0xab, 0x89, 0x88, 0xa9, 0x9c, 0x19, 0x63, - 0x43, 0x01, 0xa8, 0x09, 0x42, 0x36, 0x34, 0x22, 0x11, 0x90, 0xdb, 0xcc, 0xac, 0x09, 0x32, 0x24, - 0x90, 0xeb, 0xbb, 0x9a, 0x88, 0xa8, 0xcd, 0xbc, 0xac, 0xaa, 0x99, 0x09, 0x41, 0x35, 0x23, 0x90, - 0xdc, 0xab, 0x9a, 0x08, 0x80, 0xa9, 0x29, 0x55, 0x35, 0x33, 0x01, 0x89, 0x20, 0x54, 0x33, 0x23, - 0x11, 0x81, 0xda, 0xce, 0xbc, 0xab, 0x19, 0x43, 0x12, 0xb0, 0xcb, 0x8a, 0x31, 0x34, 0x02, 0xa9, - 0x9a, 0x20, 0x44, 0x24, 0x55, 0x54, 0x43, 0x12, 0x90, 0xba, 0xab, 0x99, 0x98, 0xda, 0xbb, 0x09, - 0x44, 0x24, 0x02, 0xa9, 0x89, 0x63, 0x44, 0x23, 0x12, 0x11, 0x12, 0xb8, 0xde, 0xcb, 0x99, 0x31, - 0x24, 0x91, 0xdb, 0xac, 0x8a, 0x08, 0xa8, 0xdc, 0xbc, 0xab, 0xaa, 0xaa, 0xaa, 0x29, 0x55, 0x24, - 0x01, 0xca, 0xcb, 0x8a, 0x08, 0x80, 0xba, 0x9b, 0x73, 0x45, 0x22, 0x00, 0x89, 0x28, 0x54, 0x33, - 0x12, 0x80, 0x08, 0x98, 0xfb, 0xcc, 0xac, 0x88, 0x22, 0x13, 0xa8, 0xbd, 0x8a, 0x41, 0x33, 0x02, - 0xca, 0xaa, 0x30, 0x44, 0x22, 0x32, 0x56, 0x35, 0x14, 0x81, 0xb9, 0xaa, 0x09, 0x81, 0xc9, 0xbd, - 0x9b, 0x41, 0x34, 0x03, 0xa9, 0x9b, 0x51, 0x45, 0x33, 0x11, 0x08, 0x11, 0x12, 0xda, 0xbe, 0xab, - 0x38, 0x44, 0x01, 0xdb, 0xbc, 0x89, 0x10, 0x91, 0xfb, 0xbc, 0xbb, 0x89, 0x90, 0xa9, 0x9a, 0x30, - 0x37, 0x03, 0xc8, 0xcc, 0x8a, 0x10, 0x11, 0xba, 0xbe, 0x18, 0x64, 0x33, 0x01, 0x98, 0x89, 0x53, - 0x35, 0x12, 0x80, 0x89, 0x08, 0x90, 0xdd, 0xbc, 0x9b, 0x30, 0x34, 0x90, 0xdc, 0xaa, 0x20, 0x25, - 0x03, 0xb9, 0xac, 0x09, 0x53, 0x33, 0x02, 0x31, 0x46, 0x34, 0x03, 0xb8, 0xbb, 0x89, 0x32, 0xa1, - 0xdf, 0xab, 0x19, 0x34, 0x24, 0xa0, 0xbb, 0x19, 0x55, 0x34, 0x02, 0x90, 0x08, 0x10, 0x80, 0xeb, - 0xbc, 0x08, 0x43, 0x14, 0xc8, 0xbd, 0x9b, 0x10, 0x22, 0xc0, 0xdd, 0xbb, 0x9a, 0x00, 0x80, 0xaa, - 0x09, 0x42, 0x34, 0x90, 0xdd, 0xaa, 0x18, 0x32, 0xa1, 0xdc, 0x9b, 0x51, 0x44, 0x12, 0x98, 0x9a, - 0x20, 0x46, 0x33, 0x81, 0x99, 0x9a, 0x08, 0xb9, 0xce, 0xab, 0x28, 0x53, 0x02, 0xea, 0xcb, 0x09, - 0x43, 0x33, 0x90, 0xdb, 0x9b, 0x30, 0x44, 0x22, 0x10, 0x41, 0x34, 0x24, 0x98, 0xbb, 0x9b, 0x41, - 0x14, 0xb8, 0xbf, 0x9b, 0x31, 0x35, 0x82, 0xc9, 0x9b, 0x41, 0x45, 0x23, 0x91, 0x99, 0x88, 0x01, - 0x98, 0xcd, 0x8a, 0x41, 0x34, 0xa1, 0xdd, 0xbb, 0x09, 0x32, 0x03, 0xec, 0xbc, 0xab, 0x08, 0x01, - 0x91, 0xa9, 0x18, 0x33, 0x02, 0xed, 0xac, 0x0a, 0x42, 0x13, 0xb9, 0xbe, 0x09, 0x63, 0x24, 0x81, - 0xa9, 0x89, 0x53, 0x35, 0x12, 0x98, 0x9a, 0x8a, 0x88, 0xca, 0xbd, 0x89, 0x43, 0x24, 0xb8, 0xce, - 0x9b, 0x21, 0x35, 0x12, 0xc9, 0xcb, 0x09, 0x42, 0x33, 0x13, 0x11, 0x42, 0x34, 0x01, 0xda, 0x9b, - 0x28, 0x44, 0x01, 0xeb, 0xbb, 0x1a, 0x53, 0x33, 0xa8, 0xbc, 0x1a, 0x64, 0x43, 0x02, 0x98, 0x99, - 0x88, 0x80, 0xb9, 0xac, 0x30, 0x46, 0x12, 0xda, 0xcd, 0x8a, 0x10, 0x23, 0xa0, 0xdd, 0xbb, 0x8a, - 0x10, 0x11, 0x98, 0x98, 0x11, 0x02, 0xd9, 0xbe, 0x8c, 0x20, 0x24, 0x82, 0xdb, 0xab, 0x40, 0x44, - 0x13, 0xa8, 0xab, 0x48, 0x55, 0x23, 0x01, 0xa9, 0xab, 0x99, 0x99, 0xdb, 0x9a, 0x41, 0x35, 0x81, - 0xdc, 0xac, 0x1a, 0x42, 0x24, 0x91, 0xda, 0x9a, 0x18, 0x53, 0x32, 0x11, 0x21, 0x32, 0x12, 0xc8, - 0xbd, 0x89, 0x53, 0x33, 0xb0, 0xdd, 0x9a, 0x20, 0x34, 0x82, 0xca, 0x9b, 0x40, 0x46, 0x22, 0x81, - 0xa9, 0x99, 0x89, 0x98, 0xaa, 0x29, 0x65, 0x23, 0xb0, 0xde, 0xab, 0x09, 0x32, 0x12, 0xea, 0xbd, - 0xab, 0x09, 0x21, 0x11, 0x08, 0x88, 0x00, 0xc9, 0xdd, 0xab, 0x19, 0x53, 0x23, 0xa8, 0xcc, 0x89, - 0x43, 0x25, 0x01, 0xaa, 0x8a, 0x73, 0x34, 0x13, 0x90, 0xba, 0xab, 0xaa, 0xba, 0xab, 0x40, 0x46, - 0x13, 0xc9, 0xbe, 0x9c, 0x20, 0x34, 0x13, 0xb9, 0xbd, 0x8a, 0x32, 0x36, 0x32, 0x21, 0x22, 0x11, - 0xb8, 0xdc, 0xaa, 0x31, 0x36, 0x02, 0xca, 0xcb, 0x09, 0x42, 0x23, 0xa8, 0xbd, 0x19, 0x54, 0x25, - 0x12, 0x88, 0xaa, 0x9a, 0xa9, 0x99, 0x19, 0x73, 0x34, 0x02, 0xdc, 0xbc, 0x9b, 0x10, 0x33, 0xa1, - 0xed, 0xcb, 0x8a, 0x18, 0x11, 0x11, 0x00, 0x08, 0xa9, 0xcd, 0xbc, 0x9a, 0x41, 0x43, 0x82, 0xb9, - 0xab, 0x30, 0x46, 0x12, 0xa8, 0xaa, 0x48, 0x47, 0x23, 0x02, 0xa8, 0xbb, 0xac, 0xba, 0x9a, 0x20, - 0x55, 0x33, 0x90, 0xdd, 0xbb, 0x0a, 0x43, 0x24, 0x92, 0xca, 0xbb, 0x18, 0x63, 0x43, 0x32, 0x22, - 0x02, 0x98, 0xcc, 0xab, 0x19, 0x44, 0x14, 0x80, 0xbb, 0x9b, 0x30, 0x34, 0x82, 0xcc, 0x9b, 0x61, - 0x45, 0x23, 0x01, 0xa8, 0xbb, 0xbb, 0xab, 0x09, 0x73, 0x35, 0x13, 0xc8, 0xbe, 0xbb, 0x09, 0x31, - 0x02, 0xe9, 0xcc, 0xbb, 0x89, 0x20, 0x31, 0x22, 0x01, 0xb8, 0xde, 0xbc, 0x9a, 0x18, 0x53, 0x12, - 0x90, 0xa9, 0x19, 0x52, 0x33, 0x90, 0xba, 0x19, 0x57, 0x35, 0x12, 0x81, 0xb9, 0xdb, 0xbb, 0xaa, - 0x19, 0x54, 0x24, 0x02, 0xda, 0xbc, 0x9a, 0x20, 0x34, 0x03, 0xb8, 0xbc, 0x8b, 0x31, 0x46, 0x34, - 0x33, 0x22, 0x90, 0xeb, 0xbb, 0x8a, 0x42, 0x34, 0x11, 0xa9, 0xaa, 0x18, 0x32, 0x03, 0xeb, 0xbb, - 0x40, 0x56, 0x24, 0x12, 0x81, 0xa9, 0xbc, 0xbc, 0x9a, 0x31, 0x37, 0x24, 0x90, 0xdb, 0xbc, 0x8a, - 0x18, 0x12, 0xa8, 0xdc, 0xac, 0x9b, 0x88, 0x11, 0x33, 0x24, 0x91, 0xeb, 0xcd, 0xaa, 0x09, 0x21, - 0x14, 0x01, 0x98, 0x08, 0x22, 0x14, 0x81, 0xbb, 0x09, 0x65, 0x35, 0x24, 0x11, 0x88, 0xca, 0xdb, - 0xbb, 0x8a, 0x51, 0x34, 0x14, 0xa8, 0xbc, 0xac, 0x08, 0x31, 0x23, 0x91, 0xcb, 0xaa, 0x19, 0x63, - 0x44, 0x35, 0x23, 0x02, 0xca, 0xbc, 0xab, 0x20, 0x34, 0x23, 0x90, 0x99, 0x20, 0x32, 0x82, 0xfb, - 0xbb, 0x28, 0x65, 0x34, 0x22, 0x11, 0x80, 0xda, 0xcc, 0xba, 0x19, 0x73, 0x33, 0x02, 0xc9, 0xbd, - 0xaa, 0x08, 0x10, 0x98, 0xcb, 0xad, 0xbb, 0x9a, 0x88, 0x32, 0x36, 0x14, 0xb0, 0xce, 0xbc, 0x8a, - 0x20, 0x22, 0x12, 0x88, 0x18, 0x43, 0x23, 0x90, 0xbc, 0x9b, 0x73, 0x35, 0x24, 0x12, 0x00, 0x98, - 0xeb, 0xcc, 0x9b, 0x18, 0x54, 0x23, 0x81, 0xda, 0xab, 0x8a, 0x21, 0x13, 0x91, 0xb9, 0x9b, 0x08, - 0x42, 0x54, 0x55, 0x43, 0x13, 0x90, 0xcc, 0xbb, 0x09, 0x32, 0x24, 0x81, 0x88, 0x20, 0x33, 0x13, - 0xfb, 0xac, 0x09, 0x53, 0x34, 0x23, 0x11, 0x10, 0x98, 0xec, 0xbc, 0x9c, 0x21, 0x36, 0x23, 0xa0, - 0xcc, 0xbb, 0x89, 0x01, 0x90, 0xdb, 0xcb, 0xaa, 0x99, 0x9a, 0x08, 0x63, 0x44, 0x01, 0xda, 0xbd, - 0x9c, 0x08, 0x21, 0x12, 0x08, 0x08, 0x32, 0x35, 0x81, 0xcb, 0x9c, 0x28, 0x55, 0x32, 0x11, 0x80, - 0x00, 0xa8, 0xdd, 0xbc, 0x8a, 0x41, 0x35, 0x13, 0xb8, 0xcc, 0x8a, 0x10, 0x12, 0x80, 0xba, 0x9a, - 0x20, 0x33, 0x33, 0x65, 0x55, 0x33, 0x03, 0xda, 0xbc, 0x8b, 0x20, 0x33, 0x02, 0x98, 0x28, 0x45, - 0x23, 0xa8, 0xcd, 0x9b, 0x31, 0x45, 0x13, 0x01, 0x00, 0x00, 0xa8, 0xce, 0xbc, 0x09, 0x63, 0x24, - 0x82, 0xc9, 0xbb, 0x9a, 0x00, 0x80, 0xea, 0xcb, 0x9a, 0x08, 0x98, 0x99, 0x29, 0x64, 0x33, 0xa0, - 0xcf, 0xcb, 0x99, 0x11, 0x12, 0x00, 0x09, 0x31, 0x45, 0x12, 0xb8, 0xcc, 0x89, 0x52, 0x43, 0x12, - 0x08, 0x08, 0x88, 0xb9, 0xcf, 0xab, 0x29, 0x54, 0x24, 0x80, 0xba, 0xbb, 0x08, 0x23, 0x82, 0xda, - 0xbb, 0x28, 0x34, 0x23, 0x21, 0x64, 0x45, 0x23, 0x90, 0xdc, 0xab, 0x09, 0x22, 0x13, 0x80, 0x19, - 0x62, 0x34, 0x82, 0xda, 0xac, 0x19, 0x53, 0x33, 0x11, 0x98, 0x08, 0x80, 0xc9, 0xce, 0x9b, 0x38, - 0x46, 0x22, 0xa8, 0xdb, 0x9a, 0x08, 0x01, 0xc8, 0xcc, 0xaa, 0x09, 0x01, 0x88, 0x8a, 0x30, 0x36, - 0x04, 0xe9, 0xcc, 0xab, 0x08, 0x21, 0x02, 0x88, 0x18, 0x45, 0x43, 0x91, 0xcb, 0xab, 0x38, 0x55, - 0x22, 0x81, 0x89, 0x88, 0x88, 0xda, 0xcc, 0x9a, 0x51, 0x34, 0x12, 0xb8, 0xbc, 0x0a, 0x31, 0x13, - 0xd8, 0xbc, 0x8a, 0x41, 0x24, 0x12, 0x10, 0x44, 0x35, 0x02, 0xc9, 0xbd, 0x9b, 0x20, 0x23, 0x82, - 0x89, 0x40, 0x46, 0x22, 0xa0, 0xcc, 0x9a, 0x30, 0x45, 0x12, 0x90, 0x98, 0x80, 0x88, 0xea, 0xcb, - 0x89, 0x53, 0x34, 0x82, 0xda, 0xab, 0x89, 0x11, 0x90, 0xdd, 0xcb, 0x89, 0x10, 0x01, 0x90, 0x89, - 0x41, 0x43, 0x90, 0xde, 0xcb, 0x8a, 0x10, 0x11, 0x90, 0x88, 0x52, 0x35, 0x23, 0xb9, 0xbd, 0x8b, - 0x52, 0x34, 0x12, 0x98, 0x99, 0x88, 0x99, 0xcd, 0xac, 0x18, 0x54, 0x14, 0x81, 0xba, 0x9b, 0x20, - 0x33, 0xa2, 0xde, 0xaa, 0x18, 0x34, 0x33, 0x01, 0x21, 0x45, 0x33, 0x91, 0xdd, 0xbb, 0x09, 0x21, - 0x03, 0x88, 0x29, 0x65, 0x34, 0x01, 0xc9, 0xac, 0x09, 0x53, 0x33, 0x01, 0x99, 0x9a, 0x88, 0xb8, - 0xdc, 0xab, 0x30, 0x47, 0x12, 0xa8, 0xbc, 0x9b, 0x20, 0x02, 0xfa, 0xcc, 0x9b, 0x09, 0x22, 0x01, - 0x88, 0x08, 0x42, 0x12, 0xfb, 0xbd, 0xac, 0x88, 0x11, 0x81, 0x98, 0x30, 0x46, 0x24, 0x81, 0xca, - 0x9c, 0x18, 0x34, 0x24, 0x80, 0xa9, 0x99, 0x89, 0xb9, 0xcc, 0x0a, 0x52, 0x35, 0x03, 0xb9, 0xbc, - 0x18, 0x53, 0x12, 0xca, 0xbe, 0x99, 0x31, 0x35, 0x22, 0x10, 0x22, 0x43, 0x02, 0xd9, 0xbd, 0x9b, - 0x10, 0x12, 0x91, 0x89, 0x72, 0x45, 0x23, 0x90, 0xdb, 0xaa, 0x30, 0x35, 0x23, 0x90, 0xb9, 0x9a, - 0x99, 0xca, 0xac, 0x1a, 0x45, 0x24, 0x81, 0xbc, 0xac, 0x08, 0x22, 0xc0, 0xed, 0xbb, 0x9a, 0x20, - 0x23, 0x01, 0x80, 0x18, 0x12, 0xc9, 0xdf, 0xbb, 0x8a, 0x18, 0x00, 0x99, 0x19, 0x74, 0x34, 0x23, - 0xa8, 0xbd, 0x8a, 0x41, 0x34, 0x13, 0x98, 0xab, 0x9b, 0xba, 0xdb, 0x9a, 0x50, 0x35, 0x24, 0x98, - 0xca, 0x89, 0x52, 0x23, 0xb0, 0xdd, 0xab, 0x19, 0x53, 0x33, 0x23, 0x21, 0x22, 0x12, 0xc8, 0xcd, - 0xab, 0x09, 0x11, 0x80, 0x9a, 0x50, 0x47, 0x34, 0x02, 0xb9, 0xac, 0x09, 0x52, 0x24, 0x02, 0x99, - 0xaa, 0xaa, 0xab, 0xac, 0x09, 0x63, 0x34, 0x01, 0xdb, 0xbb, 0x0a, 0x32, 0x02, 0xee, 0xcc, 0xab, - 0x88, 0x21, 0x23, 0x11, 0x00, 0x00, 0xb9, 0xde, 0xbb, 0x9c, 0x09, 0x80, 0xa8, 0x8a, 0x62, 0x55, - 0x32, 0x81, 0xba, 0x9c, 0x18, 0x44, 0x23, 0x81, 0xa9, 0xbc, 0xba, 0xbb, 0x8a, 0x51, 0x45, 0x23, - 0x90, 0xbb, 0x8b, 0x62, 0x34, 0x83, 0xeb, 0xbc, 0x9b, 0x31, 0x44, 0x43, 0x22, 0x21, 0x00, 0xa8, - 0xcc, 0xaa, 0x89, 0x10, 0xa0, 0xba, 0x19, 0x67, 0x44, 0x22, 0x80, 0xba, 0x9a, 0x31, 0x36, 0x13, - 0x81, 0xb9, 0xcc, 0xab, 0xbb, 0x19, 0x53, 0x25, 0x02, 0xda, 0xbb, 0x8a, 0x31, 0x14, 0xd9, 0xbf, - 0xbc, 0x9a, 0x00, 0x32, 0x32, 0x13, 0x81, 0xb9, 0xcf, 0xbb, 0xaa, 0x08, 0x80, 0xca, 0xbb, 0x39, - 0x67, 0x33, 0x12, 0xa8, 0xba, 0x0a, 0x52, 0x34, 0x11, 0x90, 0xca, 0xcc, 0xba, 0x9b, 0x30, 0x46, - 0x23, 0x81, 0xbb, 0xab, 0x51, 0x35, 0x23, 0xb9, 0xbf, 0xab, 0x09, 0x43, 0x34, 0x34, 0x33, 0x01, - 0xb8, 0xcc, 0xab, 0x09, 0x12, 0x91, 0xeb, 0x9b, 0x52, 0x45, 0x24, 0x01, 0x98, 0x8a, 0x28, 0x43, - 0x33, 0x11, 0x98, 0xcc, 0xcc, 0xbb, 0x8b, 0x51, 0x44, 0x02, 0xb9, 0xcc, 0x8a, 0x20, 0x32, 0xa0, - 0xed, 0xbc, 0xaa, 0x89, 0x20, 0x32, 0x34, 0x13, 0xa0, 0xcd, 0xbd, 0x9a, 0x18, 0x01, 0xb8, 0xbc, - 0x8b, 0x63, 0x35, 0x23, 0x80, 0xaa, 0x09, 0x41, 0x43, 0x02, 0x00, 0xb9, 0xdc, 0xbd, 0xbb, 0x19, - 0x45, 0x25, 0x01, 0xb9, 0xbb, 0x28, 0x45, 0x23, 0x91, 0xeb, 0xab, 0x8a, 0x11, 0x53, 0x53, 0x43, - 0x12, 0x90, 0xdb, 0xab, 0x0a, 0x31, 0x12, 0xca, 0xbc, 0x19, 0x55, 0x24, 0x12, 0x90, 0x89, 0x20, - 0x43, 0x13, 0x01, 0x80, 0xa9, 0xce, 0xbd, 0xab, 0x28, 0x45, 0x14, 0xa0, 0xdb, 0x9b, 0x18, 0x33, - 0x12, 0xeb, 0xbd, 0xbb, 0x9a, 0x18, 0x20, 0x44, 0x43, 0x02, 0xca, 0xcd, 0xaa, 0x19, 0x11, 0x81, - 0xda, 0xab, 0x28, 0x45, 0x23, 0x82, 0x99, 0x09, 0x32, 0x25, 0x82, 0x98, 0x99, 0xca, 0xdd, 0xbc, - 0x9a, 0x41, 0x36, 0x13, 0xa8, 0xbc, 0x0a, 0x52, 0x34, 0x02, 0xc9, 0xbb, 0x9b, 0x00, 0x32, 0x44, - 0x45, 0x33, 0x02, 0xca, 0xbd, 0x9a, 0x10, 0xa3, 0x02, 0x01, 0x0d, 0x7d, 0x0b, 0x02, 0xe3, 0x00, - 0xe1, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x4f, 0x77, 0x0b, 0x13, 0xa8, 0x51, - 0x82, 0x8b, 0x26, 0xb8, 0x38, 0x47, 0xc9, 0x11, 0xa0, 0x1a, 0x03, 0xbb, 0x61, 0xf8, 0x18, 0x18, - 0x06, 0xbd, 0x41, 0x13, 0xfb, 0x0a, 0x22, 0xa0, 0xad, 0xab, 0x55, 0xc9, 0x28, 0x04, 0xaa, 0x28, - 0x92, 0x28, 0x88, 0xbb, 0x76, 0xb0, 0x1b, 0x24, 0xa8, 0x9b, 0x21, 0x23, 0xbc, 0x40, 0xa2, 0xbf, - 0xbb, 0x41, 0x91, 0x18, 0x45, 0x04, 0xcb, 0x50, 0x23, 0x90, 0x08, 0xa9, 0xca, 0xce, 0x9a, 0x88, - 0xa9, 0x29, 0x54, 0x81, 0x89, 0x31, 0x12, 0x32, 0x33, 0xc8, 0xcf, 0x8a, 0x42, 0x14, 0x80, 0x20, - 0x02, 0xcb, 0x89, 0x80, 0x9a, 0x18, 0x43, 0x84, 0xcd, 0x8a, 0x21, 0x22, 0x47, 0x13, 0xb9, 0x9a, - 0x52, 0x35, 0x90, 0xaa, 0xa9, 0xfc, 0xab, 0xaa, 0x9a, 0x09, 0x20, 0x43, 0x90, 0x8b, 0x33, 0x02, - 0x73, 0x16, 0xc9, 0xbb, 0x19, 0x45, 0x12, 0x08, 0x31, 0x92, 0xaa, 0x98, 0x88, 0x20, 0x22, 0x45, - 0xa1, 0xbf, 0x18, 0x01, 0x51, 0x36, 0x82, 0xab, 0x8a, 0x64, 0x13, 0xb9, 0x8a, 0xd9, 0xbd, 0xcb, - 0xaa, 0x89, 0x08, 0x30, 0x13, 0xb8, 0x28, 0x13, 0x30, 0x77, 0x81, 0xca, 0x9b, 0x48, 0x34, 0x82, - 0x10, 0x24, 0x98, 0x99, 0xa9, 0x18, 0x23, 0x21, 0x36, 0xe9, 0x8b, 0x00, 0x19, 0x76, 0x12, 0x90, - 0xa9, 0x28, 0x45, 0x91, 0x9a, 0xa8, 0xec, 0xbb, 0xcb, 0xaa, 0x88, 0x80, 0x32, 0x83, 0x8a, 0x33, - 0xa0, 0x72, 0x27, 0xa8, 0xab, 0x9b, 0x73, 0x13, 0x80, 0x52, 0x81, 0x89, 0x80, 0xaa, 0x30, 0x83, - 0x40, 0x05, 0xbc, 0x19, 0xa1, 0x5b, 0x57, 0x81, 0x89, 0x90, 0x30, 0x34, 0xb9, 0x09, 0xd8, 0xbf, - 0x9a, 0xcb, 0x8b, 0x80, 0x18, 0x42, 0xa0, 0x18, 0x04, 0x8a, 0x74, 0x82, 0xaa, 0x99, 0x0a, 0x45, - 0x01, 0x18, 0x26, 0xa8, 0x19, 0x91, 0x8b, 0x22, 0x80, 0x61, 0xb2, 0x9d, 0x21, 0xc9, 0x78, 0x24, - 0x98, 0x08, 0x80, 0x42, 0x83, 0xbb, 0x30, 0xfa, 0xbf, 0x98, 0xbb, 0x0a, 0x90, 0x10, 0x14, 0xa9, - 0x51, 0x91, 0x1a, 0x37, 0xb1, 0xab, 0x80, 0x28, 0x26, 0x90, 0x61, 0x04, 0xaa, 0x20, 0xa1, 0x0b, - 0x13, 0x09, 0x34, 0xf8, 0x1b, 0x12, 0xac, 0x73, 0x85, 0x98, 0x18, 0x10, 0x32, 0xc1, 0x8b, 0x14, - 0xed, 0x9b, 0x98, 0xbb, 0x09, 0x80, 0x30, 0x83, 0x9b, 0x46, 0xb0, 0x49, 0x26, 0xb9, 0x8b, 0x10, - 0x40, 0x02, 0x8a, 0x75, 0x81, 0x9a, 0x11, 0xa0, 0x19, 0x01, 0x18, 0x04, 0xcc, 0x39, 0xa3, 0x8d, - 0x56, 0x91, 0x8a, 0x11, 0x21, 0x13, 0xea, 0x29, 0x93, 0xdf, 0x89, 0xa8, 0x9a, 0x08, 0x88, 0x31, - 0xa0, 0x2a, 0x17, 0xb8, 0x61, 0x03, 0xdb, 0x09, 0x11, 0x32, 0xa0, 0x2b, 0x67, 0xa0, 0x89, 0x11, - 0x98, 0x18, 0x80, 0x20, 0xa2, 0x9f, 0x30, 0xa0, 0x3b, 0x57, 0xa0, 0x0a, 0x31, 0x23, 0x92, 0xae, - 0x30, 0xc2, 0xcf, 0x88, 0xa8, 0x8a, 0x88, 0x18, 0x21, 0xb9, 0x50, 0x03, 0x9a, 0x55, 0x92, 0xad, - 0x18, 0x22, 0x13, 0xbb, 0x79, 0x25, 0xa9, 0x1a, 0x02, 0x98, 0x18, 0x08, 0x22, 0xf8, 0x0b, 0x23, - 0xb9, 0x78, 0x16, 0xa9, 0x09, 0x43, 0x23, 0xc9, 0x9b, 0x42, 0xe8, 0xad, 0x88, 0xa9, 0x99, 0x08, - 0x10, 0x81, 0x9a, 0x73, 0x81, 0x19, 0x45, 0xb8, 0xac, 0x30, 0x53, 0x91, 0xab, 0x72, 0x03, 0xaa, - 0x29, 0x02, 0x89, 0x80, 0x20, 0x83, 0xdd, 0x29, 0x03, 0x9a, 0x75, 0x82, 0xba, 0x28, 0x45, 0x02, - 0xda, 0x09, 0x12, 0xeb, 0x9c, 0x88, 0xa9, 0x89, 0x09, 0x21, 0xa8, 0x1a, 0x45, 0x90, 0x40, 0x14, - 0xea, 0x9a, 0x32, 0x25, 0xb0, 0x8b, 0x45, 0x92, 0x9a, 0x28, 0x01, 0x80, 0x98, 0x32, 0xc1, 0xae, - 0x21, 0x92, 0x39, 0x57, 0x90, 0xab, 0x40, 0x45, 0x91, 0xcb, 0x28, 0x81, 0xbd, 0xab, 0x99, 0x99, - 0xaa, 0x29, 0x03, 0xdb, 0x40, 0x04, 0x08, 0x44, 0x92, 0xbd, 0x8a, 0x54, 0x14, 0xba, 0x19, 0x25, - 0xa1, 0x99, 0x10, 0x11, 0x91, 0x89, 0x24, 0xf9, 0x8a, 0x13, 0x88, 0x71, 0x13, 0xaa, 0x9b, 0x71, - 0x26, 0xb0, 0xab, 0x21, 0xb8, 0xbd, 0xab, 0x9a, 0x90, 0xbb, 0x30, 0xa2, 0x9f, 0x52, 0x81, 0x20, - 0x25, 0xb9, 0xbc, 0x19, 0x47, 0x83, 0xbb, 0x48, 0x13, 0x98, 0x98, 0x00, 0x42, 0xa0, 0x2a, 0x04, - 0xcd, 0x29, 0x02, 0x19, 0x46, 0x91, 0xaa, 0x89, 0x74, 0x14, 0xc8, 0x8a, 0x01, 0xc9, 0xaa, 0xba, - 0x0a, 0x90, 0x9c, 0x31, 0xd8, 0x0a, 0x15, 0x80, 0x52, 0x83, 0xdb, 0x9a, 0x20, 0x47, 0x91, 0x9b, - 0x32, 0x82, 0x09, 0x88, 0x19, 0x25, 0xa8, 0x28, 0xc3, 0xaf, 0x21, 0x91, 0x58, 0x25, 0xa9, 0x9a, - 0x18, 0x56, 0x03, 0xcb, 0x1a, 0x90, 0xbb, 0xba, 0xbd, 0x18, 0xa0, 0x8c, 0x12, 0xdb, 0x28, 0x14, - 0x09, 0x46, 0xa0, 0xbb, 0x98, 0x61, 0x26, 0xa8, 0x0a, 0x22, 0x90, 0x28, 0x98, 0x3a, 0x26, 0xa9, - 0x30, 0xe8, 0x8c, 0x22, 0x98, 0x72, 0x03, 0xca, 0x88, 0x20, 0x46, 0x92, 0xac, 0x18, 0xa9, 0x9c, - 0xa8, 0xac, 0x28, 0xa8, 0x1a, 0x91, 0xae, 0x41, 0x81, 0x49, 0x26, 0xb9, 0x9c, 0x00, 0x62, 0x23, - 0xba, 0x28, 0x83, 0x99, 0x32, 0xc9, 0x58, 0x14, 0x99, 0x01, 0xfb, 0x19, 0x02, 0x1a, 0x56, 0x91, - 0xab, 0x18, 0x41, 0x35, 0xb0, 0x9c, 0x80, 0xdb, 0x0a, 0xb9, 0x9c, 0x20, 0xa8, 0x19, 0xc8, 0x8d, - 0x23, 0x90, 0x71, 0x05, 0xca, 0x89, 0x10, 0x63, 0x82, 0xa9, 0x21, 0x90, 0x0a, 0x14, 0xa9, 0x50, - 0x03, 0x09, 0xa0, 0xaf, 0x38, 0x91, 0x48, 0x37, 0xc0, 0x9a, 0x10, 0x43, 0x14, 0xb9, 0x8a, 0xb8, - 0xbf, 0x08, 0xb9, 0x8c, 0x11, 0x98, 0x80, 0xeb, 0x19, 0x13, 0x0a, 0x66, 0x91, 0xcb, 0x19, 0x31, - 0x34, 0x91, 0x0a, 0x13, 0xcb, 0x49, 0x13, 0x9b, 0x62, 0x02, 0x08, 0xda, 0x9b, 0x22, 0xa0, 0x72, - 0x27, 0xba, 0x8a, 0x22, 0x44, 0x81, 0xaa, 0x08, 0xfb, 0xab, 0x00, 0xba, 0x0b, 0x11, 0x00, 0xc9, - 0xae, 0x20, 0x92, 0x49, 0x37, 0xc0, 0x9c, 0x18, 0x33, 0x14, 0x98, 0x30, 0x91, 0x9e, 0x30, 0x83, - 0x8a, 0x42, 0x13, 0xb1, 0xce, 0x19, 0x01, 0x09, 0x57, 0x82, 0xbb, 0x0a, 0x53, 0x23, 0xa8, 0x89, - 0xa0, 0xef, 0x89, 0x80, 0x99, 0x09, 0x10, 0x81, 0xda, 0x8b, 0x12, 0x98, 0x71, 0x15, 0xc9, 0x9b, - 0x30, 0x25, 0x01, 0x09, 0x33, 0xd9, 0x9b, 0x33, 0x82, 0x09, 0x42, 0x24, 0xd8, 0xad, 0x20, 0x80, - 0x49, 0x27, 0xa1, 0xbb, 0x18, 0x45, 0x82, 0xa9, 0x10, 0xd8, 0xae, 0x09, 0x88, 0x99, 0x88, 0x31, - 0x91, 0xbf, 0x08, 0x82, 0x89, 0x55, 0x82, 0xbc, 0x9a, 0x62, 0x13, 0xa0, 0x30, 0x04, 0xdb, 0x09, - 0x22, 0x81, 0x80, 0x31, 0x25, 0xfa, 0x0b, 0x11, 0x99, 0x72, 0x13, 0xb8, 0xbb, 0x40, 0x26, 0xa1, - 0x8a, 0x12, 0xfb, 0xac, 0x08, 0x90, 0x88, 0x89, 0x42, 0xb0, 0xae, 0x20, 0x98, 0x39, 0x36, 0xb0, - 0xbc, 0x0a, 0x55, 0x02, 0x99, 0x42, 0x92, 0xad, 0x18, 0x11, 0x11, 0x88, 0x40, 0x04, 0xdc, 0x19, - 0x81, 0x09, 0x45, 0x82, 0xaa, 0x9a, 0x61, 0x14, 0xb8, 0x2a, 0x83, 0xde, 0x9a, 0x80, 0x08, 0x90, - 0x09, 0x33, 0xf8, 0x9b, 0x11, 0xb8, 0x61, 0x13, 0xba, 0xac, 0x29, 0x47, 0x91, 0x0a, 0x34, 0xb0, - 0xac, 0x10, 0x11, 0x12, 0x98, 0x71, 0xa2, 0xbc, 0x38, 0x90, 0x39, 0x47, 0x90, 0x9a, 0x89, 0x63, - 0x03, 0xcb, 0x20, 0xa2, 0xcf, 0x89, 0x08, 0x00, 0x88, 0x19, 0x14, 0xdb, 0x0a, 0x01, 0x8b, 0x73, - 0x92, 0xba, 0x9a, 0x40, 0x27, 0xa0, 0x29, 0x15, 0xc8, 0x8a, 0x10, 0x20, 0x02, 0x99, 0x44, 0xb0, - 0x9e, 0x11, 0x98, 0x60, 0x14, 0xa9, 0x89, 0x08, 0x54, 0x91, 0x9c, 0x31, 0xc8, 0xae, 0x88, 0x88, - 0x11, 0x98, 0x28, 0x84, 0xcc, 0x19, 0xa1, 0x1a, 0x36, 0xb8, 0xab, 0x89, 0x72, 0x15, 0xa9, 0x40, - 0x03, 0xca, 0x0a, 0x00, 0x31, 0x82, 0x09, 0x35, 0xe9, 0x0b, 0x11, 0x8a, 0x55, 0x83, 0xaa, 0x89, - 0x30, 0x36, 0xc8, 0x8b, 0x24, 0xfa, 0x9b, 0x89, 0x08, 0x12, 0x99, 0x31, 0xb2, 0xaf, 0x00, 0xb8, - 0x58, 0x14, 0xca, 0x8a, 0x18, 0x73, 0x02, 0x9a, 0x62, 0x92, 0xab, 0x09, 0x08, 0x43, 0x92, 0x19, - 0x05, 0xda, 0x19, 0x81, 0x3a, 0x47, 0x90, 0x9a, 0x00, 0x41, 0x23, 0xcc, 0x2a, 0x83, 0xdd, 0x9b, - 0x98, 0x28, 0x02, 0x98, 0x32, 0xd8, 0x9c, 0x81, 0xab, 0x72, 0x93, 0xbc, 0x89, 0x31, 0x36, 0x91, - 0x1b, 0x37, 0xa0, 0xab, 0x88, 0x18, 0x44, 0x80, 0x28, 0x81, 0xad, 0x10, 0xa8, 0x71, 0x16, 0xa8, - 0x89, 0x10, 0x43, 0x91, 0xbc, 0x30, 0xc1, 0xbe, 0x9b, 0x9a, 0x31, 0x03, 0x88, 0x13, 0xcc, 0x0b, - 0xc8, 0x0b, 0x37, 0xc0, 0xac, 0x00, 0x43, 0x23, 0xb8, 0x50, 0x15, 0xa8, 0x9b, 0x99, 0x30, 0x26, - 0x00, 0x00, 0xb0, 0x8a, 0x91, 0x0b, 0x77, 0x84, 0xa9, 0x19, 0x31, 0x33, 0xd9, 0x9b, 0x12, 0xf9, - 0xac, 0xaa, 0x89, 0x32, 0x12, 0x18, 0xa0, 0xac, 0x90, 0xcd, 0x38, 0x07, 0xc9, 0x9b, 0x21, 0x35, - 0x01, 0x8a, 0x63, 0x82, 0xa9, 0x99, 0x9b, 0x61, 0x23, 0x00, 0x90, 0xaa, 0x20, 0xd8, 0x59, 0x37, - 0xa1, 0xaa, 0x28, 0x44, 0x82, 0xcb, 0x09, 0x91, 0xdc, 0xab, 0xcb, 0x19, 0x32, 0x13, 0x81, 0xcb, - 0x19, 0xd8, 0x9d, 0x52, 0x91, 0xcc, 0x89, 0x42, 0x24, 0x98, 0x29, 0x25, 0x90, 0x89, 0xb9, 0x8b, - 0x63, 0x22, 0x02, 0xc9, 0x1a, 0x03, 0xbc, 0x72, 0x17, 0x99, 0x99, 0x21, 0x24, 0xa0, 0xac, 0x01, - 0xc8, 0xac, 0xb9, 0xbc, 0x10, 0x33, 0x33, 0xc1, 0x9c, 0x21, 0xfa, 0x1b, 0x43, 0xd8, 0xab, 0x19, - 0x54, 0x02, 0x99, 0x41, 0x03, 0x99, 0x00, 0xdb, 0x09, 0x33, 0x34, 0x82, 0xae, 0x38, 0x92, 0x8c, - 0x65, 0x82, 0xaa, 0x88, 0x42, 0x15, 0xc9, 0x0a, 0x81, 0xcb, 0x9a, 0xc9, 0xab, 0x21, 0x42, 0x24, - 0xd9, 0x0a, 0x03, 0xcc, 0x28, 0x84, 0xda, 0x9a, 0x20, 0x45, 0x91, 0x8a, 0x34, 0xa1, 0x09, 0x81, - 0xdb, 0x18, 0x23, 0x53, 0xa1, 0x9e, 0x41, 0xa0, 0x2a, 0x36, 0xa0, 0x9a, 0x18, 0x73, 0x83, 0xbc, - 0x29, 0xb1, 0xbd, 0x08, 0xca, 0x0b, 0x11, 0x52, 0x13, 0xeb, 0x18, 0x82, 0xad, 0x31, 0xa1, 0xbd, - 0x8a, 0x51, 0x25, 0xa8, 0x29, 0x24, 0xb8, 0x18, 0x92, 0xac, 0x10, 0x22, 0x27, 0xc0, 0x0c, 0x23, - 0xc8, 0x48, 0x15, 0xa9, 0x89, 0x20, 0x54, 0xa1, 0x9d, 0x10, 0xb8, 0x9d, 0x00, 0xba, 0x09, 0x11, - 0x63, 0x82, 0xbc, 0x31, 0xb1, 0x8e, 0x32, 0xd9, 0xab, 0x09, 0x63, 0x14, 0xaa, 0x40, 0x03, 0xab, - 0x30, 0xa1, 0x9c, 0x01, 0x42, 0x25, 0xea, 0x19, 0x13, 0xa9, 0x72, 0x02, 0xab, 0x88, 0x32, 0x27, - 0xc8, 0x8b, 0x11, 0xeb, 0x8a, 0x80, 0xaa, 0x08, 0x20, 0x45, 0xa1, 0x9c, 0x32, 0xd8, 0x1a, 0x03, - 0xfb, 0x8b, 0x28, 0x63, 0x82, 0xaa, 0x43, 0x92, 0x9b, 0x32, 0xc0, 0x8a, 0x10, 0x62, 0x84, 0xcb, - 0x38, 0x84, 0x0a, 0x45, 0xa1, 0xab, 0x10, 0x53, 0x14, 0xdb, 0x1a, 0x91, 0xbd, 0x1a, 0x90, 0x9b, - 0x08, 0x41, 0x26, 0xb0, 0x0c, 0x22, 0xca, 0x28, 0xa2, 0xcf, 0x89, 0x21, 0x34, 0x91, 0x0b, 0x35, - 0xb0, 0x0b, 0x14, 0xa8, 0x8a, 0x08, 0x45, 0x92, 0x9e, 0x31, 0x81, 0x39, 0x27, 0xb8, 0x8b, 0x30, - 0x54, 0x92, 0xbc, 0x19, 0xc0, 0xbd, 0x18, 0x90, 0x9a, 0x80, 0x62, 0x14, 0xb9, 0x2a, 0x82, 0xab, - 0x42, 0xf8, 0xad, 0x09, 0x42, 0x23, 0xa8, 0x39, 0x25, 0xba, 0x29, 0x13, 0xa9, 0xaa, 0x28, 0x47, - 0xb0, 0x8c, 0x33, 0x00, 0x72, 0x03, 0xda, 0x89, 0x42, 0x43, 0xa8, 0x9d, 0x00, 0xda, 0x9c, 0x00, - 0x90, 0x98, 0x18, 0x53, 0x03, 0xbb, 0x20, 0xa1, 0x1b, 0x05, 0xee, 0x9b, 0x18, 0x34, 0x03, 0x99, - 0x51, 0x82, 0xab, 0x20, 0x13, 0x99, 0xcb, 0x40, 0x25, 0xc9, 0x1a, 0x13, 0x41, 0x36, 0xa1, 0xbc, - 0x08, 0x45, 0x13, 0xda, 0x0a, 0xa0, 0xdc, 0x8a, 0x08, 0x00, 0x99, 0x28, 0x45, 0x91, 0x89, 0x00, - 0x99, 0x32, 0xe0, 0xbf, 0x9b, 0x31, 0x35, 0x91, 0x19, 0x43, 0xa0, 0x8b, 0x11, 0x23, 0xa0, 0xae, - 0x41, 0x83, 0xab, 0x21, 0x10, 0x67, 0x23, 0xc9, 0x9a, 0x28, 0x37, 0x91, 0xbb, 0x08, 0xda, 0xad, - 0x8a, 0x08, 0x01, 0xa8, 0x48, 0x25, 0x90, 0x18, 0xa8, 0x29, 0x16, 0xfb, 0xac, 0x89, 0x41, 0x14, - 0x98, 0x20, 0x03, 0xa9, 0x09, 0x00, 0x34, 0xb0, 0x9e, 0x23, 0xa1, 0x19, 0x92, 0x6a, 0x57, 0x81, - 0xaa, 0x89, 0x40, 0x25, 0xb0, 0x9b, 0x80, 0xec, 0x9a, 0x99, 0x18, 0x02, 0x9a, 0x51, 0x03, 0x18, - 0x02, 0xcc, 0x51, 0x93, 0xce, 0xaa, 0x09, 0x63, 0x82, 0x89, 0x32, 0x91, 0x9a, 0x81, 0x18, 0x44, - 0xb8, 0x0c, 0x13, 0xaa, 0x52, 0xb8, 0x78, 0x27, 0xa0, 0x9a, 0x08, 0x51, 0x13, 0xca, 0x09, 0xb0, - 0xbe, 0x8a, 0xaa, 0x30, 0x03, 0x9b, 0x44, 0x81, 0x30, 0xa4, 0x9e, 0x63, 0xa0, 0xbd, 0x8a, 0x18, - 0x25, 0x91, 0x19, 0x15, 0xa8, 0x09, 0x91, 0x18, 0x16, 0xb8, 0x19, 0xa1, 0x1a, 0x16, 0xc9, 0x71, - 0x05, 0xa8, 0x8a, 0x10, 0x42, 0x92, 0xbb, 0x10, 0xf9, 0xac, 0x88, 0x9a, 0x31, 0x82, 0x0a, 0x33, - 0x89, 0x55, 0xc0, 0x1b, 0x26, 0xd8, 0x9c, 0x89, 0x20, 0x14, 0x98, 0x48, 0x03, 0xba, 0x20, 0xa8, - 0x58, 0x14, 0xaa, 0x08, 0xb9, 0x58, 0x85, 0x9b, 0x75, 0x82, 0xaa, 0x88, 0x11, 0x43, 0xb0, 0x8c, - 0x11, 0xdd, 0x9a, 0x90, 0x9a, 0x33, 0x92, 0x19, 0x82, 0x29, 0x47, 0xc9, 0x39, 0x15, 0xeb, 0x8b, - 0x88, 0x41, 0x02, 0x8a, 0x52, 0x91, 0x9b, 0x12, 0xa8, 0x50, 0x04, 0xaa, 0x90, 0xba, 0x72, 0x92, - 0x0b, 0x57, 0x91, 0x9b, 0x18, 0x21, 0x14, 0xc9, 0x1a, 0x91, 0xbf, 0x8a, 0x98, 0x0a, 0x24, 0x80, - 0x10, 0x98, 0x58, 0x15, 0xbb, 0x60, 0x93, 0xcd, 0x8a, 0x00, 0x32, 0x91, 0x09, 0x36, 0xa8, 0x0b, - 0x02, 0x99, 0x62, 0x02, 0x9a, 0xc9, 0x8b, 0x45, 0xa0, 0x49, 0x27, 0xb0, 0x9a, 0x20, 0x42, 0x82, - 0xbc, 0x28, 0xd0, 0xae, 0x09, 0xa9, 0x18, 0x23, 0x01, 0x81, 0x9b, 0x73, 0x84, 0x9b, 0x53, 0xb1, - 0xaf, 0x8a, 0x21, 0x22, 0xa8, 0x38, 0x17, 0xb9, 0x19, 0x82, 0x89, 0x53, 0x82, 0xa8, 0xcc, 0x2a, - 0x25, 0xa8, 0x61, 0x15, 0xb9, 0x8a, 0x31, 0x24, 0xa0, 0x9d, 0x11, 0xfa, 0xab, 0x88, 0x99, 0x28, - 0x33, 0x12, 0xb8, 0x0b, 0x57, 0x91, 0x0a, 0x24, 0xe8, 0xac, 0x09, 0x22, 0x02, 0x9a, 0x62, 0x02, - 0xab, 0x18, 0x81, 0x08, 0x34, 0x13, 0xea, 0xbd, 0x30, 0x14, 0x09, 0x73, 0x83, 0xba, 0x0a, 0x63, - 0x12, 0xba, 0x1b, 0x91, 0xdf, 0x9a, 0x88, 0x89, 0x10, 0x43, 0x02, 0xca, 0x39, 0x35, 0x98, 0x38, - 0x03, 0xed, 0x9c, 0x29, 0x32, 0xa0, 0x1a, 0x35, 0xa1, 0x9b, 0x10, 0x81, 0x20, 0x53, 0x24, 0xfb, - 0x9d, 0x31, 0x01, 0x28, 0x25, 0x81, 0xbb, 0x19, 0x37, 0x92, 0xac, 0x18, 0xc0, 0xcd, 0x99, 0x89, - 0x08, 0x10, 0x44, 0x92, 0xbb, 0x50, 0x13, 0x08, 0x22, 0xb0, 0xcf, 0xab, 0x40, 0x13, 0xba, 0x40, - 0x15, 0x99, 0x0a, 0x08, 0x01, 0x01, 0x61, 0x04, 0xec, 0x0a, 0x12, 0x01, 0x32, 0x14, 0xa8, 0xaa, - 0x48, 0x27, 0xb0, 0x9b, 0x02, 0xfb, 0xbb, 0xa9, 0x89, 0x00, 0x20, 0x47, 0xa1, 0x8c, 0x31, 0x01, - 0x21, 0x03, 0xcc, 0xcb, 0x8c, 0x51, 0x81, 0xaa, 0x53, 0x81, 0x99, 0x88, 0x08, 0x21, 0x80, 0x72, - 0x95, 0xbd, 0x19, 0x12, 0x30, 0x25, 0x91, 0x89, 0x99, 0x61, 0x15, 0xca, 0x09, 0x92, 0xbd, 0x9b, - 0xba, 0x19, 0x81, 0x50, 0x36, 0xb8, 0x0b, 0x33, 0x10, 0x54, 0xa0, 0xbc, 0xaa, 0x0b, 0x54, 0xa0, - 0x0b, 0x26, 0xa0, 0x09, 0x90, 0x09, 0x23, 0x98, 0x75, 0xa1, 0xae, 0x10, 0x00, 0x51, 0x03, 0xa8, - 0x08, 0x88, 0x72, 0x82, 0xac, 0x28, 0xb8, 0xae, 0xa9, 0xaa, 0x28, 0x80, 0x61, 0x15, 0xb9, 0x29, - 0x02, 0x30, 0x27, 0xc8, 0x9b, 0x99, 0x19, 0x24, 0xd9, 0x28, 0x15, 0x9a, 0x18, 0xa8, 0x29, 0x14, - 0x89, 0x36, 0xd0, 0x9d, 0x01, 0x00, 0x54, 0x81, 0xa9, 0x10, 0x00, 0x43, 0xb1, 0x9e, 0x11, 0xda, - 0xab, 0xa8, 0x9c, 0x20, 0x80, 0x72, 0x03, 0xba, 0x20, 0x81, 0x72, 0x14, 0xcb, 0x9a, 0x88, 0x20, - 0x83, 0xbc, 0x61, 0x82, 0xaa, 0x11, 0xb8, 0x48, 0x83, 0x29, 0x27, 0xda, 0x8b, 0x00, 0x48, 0x37, - 0xa1, 0x8b, 0x11, 0x21, 0x23, 0xfa, 0x8a, 0x82, 0xcd, 0x8a, 0xa9, 0x8b, 0x12, 0x00, 0x74, 0x81, - 0x8a, 0x10, 0x08, 0x55, 0x93, 0xcc, 0x09, 0x08, 0x11, 0x90, 0x8c, 0x43, 0xb1, 0x8a, 0x03, 0xbb, - 0x52, 0x82, 0x38, 0x06, 0xeb, 0x89, 0x88, 0x71, 0x15, 0xa8, 0x89, 0x21, 0x21, 0x82, 0xcc, 0x19, - 0xb1, 0xaf, 0x89, 0xb9, 0x0a, 0x12, 0x20, 0x45, 0x91, 0x0a, 0x80, 0x38, 0x77, 0xa1, 0xbb, 0x08, - 0x01, 0x11, 0xba, 0x2a, 0x16, 0xb8, 0x19, 0x82, 0x8c, 0x42, 0x81, 0x40, 0x91, 0xbc, 0x9a, 0x8b, - 0x77, 0x05, 0xa9, 0x19, 0x21, 0x12, 0xa8, 0x9c, 0x10, 0xea, 0x9c, 0x98, 0xaa, 0x19, 0x12, 0x21, - 0x25, 0x91, 0x00, 0xb9, 0x71, 0x47, 0xb8, 0x9c, 0x18, 0x11, 0x91, 0xab, 0x40, 0x02, 0xbb, 0x30, - 0xa1, 0x0a, 0x34, 0x11, 0x22, 0xc8, 0xac, 0xeb, 0x3b, 0x77, 0x83, 0xaa, 0x29, 0x43, 0x01, 0xca, - 0x89, 0x91, 0xdc, 0x9a, 0x99, 0xaa, 0x10, 0x22, 0x33, 0x23, 0x31, 0xa2, 0xaf, 0x75, 0x04, 0xc9, - 0x9b, 0x21, 0x12, 0xb9, 0x8b, 0x43, 0xa0, 0x8c, 0x21, 0x98, 0x18, 0x32, 0x23, 0xb0, 0x8b, 0xa1, - 0xff, 0x5a, 0x27, 0x91, 0x9b, 0x38, 0x25, 0xa1, 0xab, 0x19, 0xc0, 0xbd, 0x9a, 0xa8, 0x9a, 0x10, - 0x43, 0x13, 0x10, 0x35, 0xc0, 0x1c, 0x56, 0x92, 0xda, 0x99, 0x32, 0x02, 0xbc, 0x29, 0x03, 0xb9, - 0x1a, 0x11, 0x08, 0x00, 0x61, 0x13, 0xdb, 0x38, 0xb2, 0xcf, 0x71, 0x13, 0xa0, 0x9b, 0x51, 0x24, - 0xb8, 0x8c, 0x00, 0xc9, 0x9c, 0x89, 0x99, 0x98, 0x18, 0x34, 0x92, 0x39, 0x27, 0xb9, 0x39, 0x37, - 0xa1, 0xbc, 0x0b, 0x44, 0xa2, 0xac, 0x30, 0x91, 0x9b, 0x10, 0x08, 0x11, 0x88, 0x71, 0x93, 0xbc, - 0x42, 0xc1, 0x8d, 0x54, 0x02, 0x99, 0x9a, 0x63, 0x04, 0xc9, 0x09, 0x91, 0xcb, 0x9a, 0xa8, 0x89, - 0x90, 0x28, 0x26, 0xa0, 0x58, 0x14, 0xba, 0x60, 0x13, 0xa9, 0xbc, 0x29, 0x45, 0xb0, 0x9c, 0x22, - 0xb0, 0x8a, 0x01, 0x08, 0x12, 0x99, 0x73, 0xc2, 0x8c, 0x33, 0xd8, 0x2b, 0x27, 0x81, 0x99, 0x09, - 0x64, 0x82, 0xcb, 0x18, 0xa0, 0xad, 0x89, 0x99, 0x08, 0x90, 0x38, 0x16, 0xa9, 0x61, 0x83, 0x9b, - 0x53, 0x82, 0xba, 0xbb, 0x58, 0x17, 0xb9, 0x0a, 0x13, 0xca, 0x19, 0x80, 0x28, 0x03, 0x8b, 0x36, - 0xe8, 0x1b, 0x24, 0xc9, 0x38, 0x25, 0x98, 0x98, 0x18, 0x57, 0x90, 0xab, 0x10, 0xd8, 0xab, 0x98, - 0x99, 0x10, 0x99, 0x61, 0x83, 0xab, 0x55, 0xa2, 0x09, 0x43, 0xa0, 0x9b, 0x9b, 0x71, 0x14, 0xdb, - 0x18, 0x82, 0xab, 0x18, 0x80, 0x20, 0x83, 0x2b, 0x26, 0xdc, 0x39, 0x04, 0xaa, 0x61, 0x02, 0x99, - 0x80, 0x40, 0x27, 0xc0, 0x9a, 0x01, 0xdb, 0x9a, 0x98, 0x8a, 0x11, 0x89, 0x62, 0x91, 0x1b, 0x46, - 0xa0, 0x28, 0x13, 0xba, 0x9a, 0x89, 0x65, 0x82, 0xad, 0x30, 0xb0, 0x9c, 0x01, 0x88, 0x32, 0x91, - 0x39, 0x85, 0xaf, 0x30, 0x83, 0x8a, 0x36, 0xa0, 0x09, 0x11, 0x73, 0x24, 0xda, 0x89, 0xa1, 0xbd, - 0x9a, 0xa8, 0x09, 0x02, 0x88, 0x35, 0xb8, 0x5a, 0x26, 0x88, 0x30, 0xa2, 0xac, 0x08, 0x10, 0x36, - 0xb1, 0x9d, 0x22, 0xea, 0x0a, 0x00, 0x08, 0x32, 0x90, 0x30, 0xd2, 0x9e, 0x32, 0x82, 0x38, 0x15, - 0xba, 0x39, 0x34, 0x45, 0x83, 0xbc, 0x09, 0xfa, 0xbc, 0x89, 0x99, 0x18, 0x01, 0x28, 0x13, 0xc9, - 0x71, 0x23, 0x10, 0x14, 0xc9, 0x8c, 0x20, 0x31, 0x15, 0xb9, 0x1a, 0x92, 0xcf, 0x09, 0x81, 0x18, - 0x23, 0x80, 0x11, 0xfa, 0x8a, 0x24, 0x11, 0x53, 0xa1, 0xad, 0x31, 0x44, 0x22, 0xb0, 0xab, 0xa8, - 0xef, 0x9b, 0x89, 0x89, 0x10, 0x01, 0x11, 0x81, 0x0a, 0x55, 0x22, 0x52, 0x92, 0xcc, 0x0a, 0x42, - 0x22, 0x91, 0x9a, 0x12, 0xf9, 0xac, 0x08, 0x80, 0x21, 0x22, 0x10, 0xb0, 0xae, 0x18, 0x23, 0x55, - 0x14, 0xd9, 0x8a, 0x51, 0x33, 0x81, 0xaa, 0x08, 0xfa, 0xbd, 0x9a, 0x99, 0x09, 0x11, 0x21, 0x02, - 0x9a, 0x50, 0x23, 0x54, 0x35, 0xb8, 0xbd, 0x28, 0x53, 0x12, 0x9a, 0x28, 0x92, 0xbe, 0x8b, 0x98, - 0x18, 0x22, 0x33, 0x12, 0xed, 0x0a, 0x11, 0x28, 0x67, 0x81, 0xbb, 0x09, 0x63, 0x23, 0xb8, 0x0a, - 0x01, 0xde, 0xaa, 0xa9, 0x99, 0x10, 0x10, 0x33, 0xa0, 0x0c, 0x34, 0x81, 0x75, 0x13, 0xca, 0xab, - 0x31, 0x35, 0x92, 0x9b, 0x42, 0xc1, 0xad, 0x88, 0x98, 0x10, 0x02, 0x22, 0xa3, 0xbf, 0x20, 0xa1, - 0x58, 0x37, 0xa0, 0xac, 0x18, 0x63, 0x12, 0xba, 0x29, 0xa2, 0xcf, 0x8a, 0x99, 0x09, 0x00, 0x11, - 0x23, 0xc9, 0x29, 0x15, 0x09, 0x66, 0x92, 0xca, 0x89, 0x21, 0x25, 0xb0, 0x0a, 0x24, 0xc9, 0x9b, - 0x90, 0x89, 0x21, 0x10, 0x52, 0xc0, 0x9d, 0x31, 0xa8, 0x70, 0x15, 0xb8, 0xab, 0x20, 0x45, 0x92, - 0xab, 0x30, 0xd1, 0xbd, 0x89, 0x99, 0x19, 0x01, 0x30, 0x14, 0xcb, 0x58, 0x82, 0x19, 0x47, 0xa1, - 0xac, 0x09, 0x42, 0x23, 0xc9, 0x29, 0x14, 0xdb, 0x89, 0x90, 0x09, 0x11, 0x00, 0x43, 0xe9, 0x0b, - 0x13, 0xaa, 0x73, 0x07, 0xaa, 0x89, 0x20, 0x34, 0xb1, 0x9c, 0x32, 0xe9, 0xab, 0x98, 0xa9, 0x10, - 0x01, 0x51, 0x92, 0x9c, 0x51, 0xa1, 0x38, 0x47, 0xb8, 0xab, 0x18, 0x63, 0x02, 0xba, 0x40, 0x93, - 0xbc, 0x09, 0xa8, 0x19, 0x02, 0x30, 0x15, 0xec, 0x19, 0x02, 0x8a, 0x56, 0x92, 0xbb, 0x89, 0x42, - 0x25, 0xb9, 0x0b, 0x23, 0xec, 0x8b, 0x98, 0x99, 0x11, 0x00, 0x43, 0xb1, 0x8c, 0x34, 0xa8, 0x70, - 0x15, 0xc9, 0x9a, 0x10, 0x44, 0x91, 0x9a, 0x32, 0xb2, 0xae, 0x08, 0x99, 0x10, 0x00, 0x31, 0x93, - 0xcf, 0x20, 0x91, 0x29, 0x47, 0xa1, 0xbb, 0x09, 0x44, 0x13, 0xda, 0x19, 0x82, 0xcd, 0x99, 0x98, - 0x88, 0x01, 0x11, 0x24, 0xb9, 0x2b, 0x15, 0x89, 0x74, 0x03, 0xbc, 0x9a, 0x41, 0x34, 0xa0, 0x0b, - 0x34, 0xc9, 0xab, 0x88, 0x99, 0x20, 0x10, 0x42, 0xd1, 0x9d, 0x30, 0x90, 0x78, 0x25, 0xb8, 0xbb, - 0x20, 0x45, 0x81, 0xbb, 0x20, 0xb0, 0xbf, 0x8a, 0x99, 0x19, 0x11, 0x41, 0x03, 0xbb, 0x49, 0x04, - 0x29, 0x57, 0x91, 0xcb, 0x0a, 0x52, 0x23, 0xa9, 0x29, 0x13, 0xea, 0x9a, 0x99, 0x88, 0x10, 0x20, - 0x23, 0xfa, 0x8c, 0x12, 0x08, 0x64, 0x04, 0xb9, 0xab, 0x41, 0x25, 0xa1, 0x9c, 0x10, 0xc9, 0xbc, - 0xa9, 0x89, 0x18, 0x21, 0x53, 0x92, 0xab, 0x32, 0x82, 0x72, 0x27, 0xa8, 0xac, 0x19, 0x63, 0x12, - 0x9a, 0x20, 0x82, 0xdb, 0x9a, 0x99, 0x08, 0x00, 0x32, 0x83, 0xce, 0x09, 0x01, 0x41, 0x37, 0x83, - 0xcb, 0x9b, 0x62, 0x14, 0xa9, 0x8a, 0x80, 0xeb, 0xab, 0x9b, 0x09, 0x00, 0x32, 0x26, 0x98, 0x0a, - 0x02, 0x20, 0x57, 0x02, 0xb9, 0xbc, 0x38, 0x37, 0x81, 0x09, 0x11, 0xa0, 0xbb, 0xad, 0x8a, 0x80, - 0x08, 0x34, 0xc0, 0xac, 0x10, 0x08, 0x75, 0x23, 0x91, 0xca, 0x8a, 0x54, 0x02, 0xaa, 0x88, 0xca, - 0xcb, 0xcb, 0xab, 0x00, 0x10, 0x62, 0x03, 0xa9, 0x11, 0x90, 0x70, 0x25, 0x91, 0xaa, 0xac, 0x61, - 0x33, 0x88, 0x20, 0x91, 0xaa, 0xba, 0xbf, 0x09, 0x80, 0x29, 0x15, 0xca, 0x1a, 0x90, 0x4a, 0x57, - 0x01, 0x88, 0xa9, 0x19, 0x35, 0xa0, 0x89, 0xa0, 0xbf, 0xa9, 0xda, 0x9a, 0x01, 0x10, 0x53, 0x91, - 0x09, 0x12, 0x9b, 0x75, 0x03, 0x99, 0xa9, 0x8a, 0x64, 0x02, 0x18, 0x22, 0xc8, 0x8a, 0xc0, 0xad, - 0x00, 0x98, 0x30, 0x93, 0xae, 0x11, 0xb8, 0x78, 0x26, 0x90, 0x88, 0x98, 0x20, 0x15, 0xaa, 0x10, - 0xe8, 0xac, 0x89, 0xdb, 0x09, 0x00, 0x20, 0x24, 0xa8, 0x38, 0xa3, 0x0d, 0x47, 0x91, 0x9a, 0x90, - 0x18, 0x35, 0x91, 0x40, 0x04, 0xcb, 0x08, 0xc0, 0xab, 0x00, 0x98, 0x32, 0xe1, 0x8b, 0x23, 0xbc, - 0x73, 0x17, 0x99, 0x80, 0x80, 0x21, 0x91, 0x8b, 0x23, 0xfc, 0x8d, 0x90, 0xaa, 0x08, 0x81, 0x31, - 0x04, 0x9a, 0x52, 0xb0, 0x3b, 0x47, 0xb0, 0x8a, 0x81, 0x21, 0x15, 0x89, 0x72, 0x92, 0xbb, 0x10, - 0xc8, 0x9b, 0x80, 0x88, 0x13, 0xfb, 0x29, 0x83, 0x9c, 0x66, 0x82, 0x9a, 0x10, 0x00, 0x12, 0xc9, - 0x2a, 0x04, 0xde, 0x0a, 0x90, 0xaa, 0x18, 0x10, 0x41, 0x92, 0x1b, 0x34, 0xd9, 0x58, 0x15, 0xaa, - 0x0a, 0x11, 0x32, 0x82, 0x1b, 0x67, 0xa0, 0x9b, 0x11, 0xc9, 0x0a, 0x88, 0x18, 0x81, 0xbd, 0x50, - 0xa1, 0x1a, 0x57, 0x91, 0x8a, 0x10, 0x12, 0x81, 0xcc, 0x30, 0xb2, 0xcf, 0x09, 0x90, 0x9a, 0x10, - 0x10, 0x33, 0xb8, 0x49, 0x15, 0xbb, 0x73, 0x84, 0xbb, 0x18, 0x32, 0x23, 0xc8, 0x48, 0x27, 0xc8, - 0x8a, 0x01, 0xb9, 0x89, 0x88, 0x10, 0xc8, 0x8d, 0x32, 0xc0, 0x68, 0x25, 0xa8, 0x8a, 0x32, 0x23, - 0xc8, 0x9e, 0x31, 0xc0, 0xae, 0x08, 0x98, 0x99, 0x10, 0x21, 0x13, 0xaa, 0x71, 0x82, 0x8b, 0x55, - 0xa1, 0xac, 0x10, 0x34, 0x01, 0xab, 0x71, 0x13, 0xca, 0x0a, 0x01, 0xba, 0x99, 0x08, 0x01, 0xdc, - 0x1a, 0x14, 0x99, 0x72, 0x15, 0xaa, 0x09, 0x53, 0x02, 0xda, 0x0a, 0x22, 0xea, 0x9c, 0x80, 0x90, - 0x89, 0x10, 0x32, 0x91, 0x0a, 0x45, 0xa0, 0x29, 0x27, 0xc8, 0xab, 0x41, 0x34, 0xa0, 0x8b, 0x54, - 0x82, 0xbb, 0x19, 0x81, 0xba, 0x9b, 0x10, 0xc0, 0xbe, 0x30, 0x83, 0x1a, 0x67, 0x01, 0xab, 0x28, - 0x45, 0x91, 0xdb, 0x19, 0x02, 0xdb, 0x9b, 0x08, 0x88, 0x89, 0x30, 0x24, 0xb8, 0x38, 0x16, 0x98, - 0x51, 0x03, 0xfb, 0x8b, 0x62, 0x23, 0xb9, 0x1a, 0x36, 0x90, 0xab, 0x08, 0x81, 0xb9, 0x8c, 0x10, - 0xe9, 0x9b, 0x32, 0x80, 0x60, 0x25, 0x90, 0x9c, 0x48, 0x35, 0xb0, 0xad, 0x20, 0x90, 0xcc, 0x9a, - 0x00, 0x08, 0x89, 0x41, 0x83, 0xaa, 0x62, 0x82, 0x08, 0x34, 0xb1, 0xce, 0x0a, 0x45, 0x03, 0xba, - 0x48, 0x14, 0x98, 0x9a, 0x88, 0x01, 0xca, 0x8a, 0x01, 0xce, 0x09, 0x12, 0x08, 0x54, 0x03, 0xa9, - 0x9b, 0x72, 0x26, 0xb9, 0x9c, 0x11, 0xb8, 0xbb, 0xab, 0x18, 0x82, 0x0a, 0x64, 0xa1, 0x0a, 0x34, - 0x90, 0x50, 0x03, 0xda, 0xbb, 0x3a, 0x77, 0x81, 0x9a, 0x21, 0x02, 0x98, 0xa9, 0x09, 0x11, 0xdb, - 0x09, 0xb1, 0xaf, 0x28, 0x81, 0x30, 0x27, 0x91, 0xa9, 0x09, 0x74, 0x13, 0xeb, 0x89, 0x81, 0xa9, - 0xaa, 0x9b, 0x20, 0x92, 0x19, 0x35, 0xc8, 0x39, 0x14, 0x88, 0x54, 0x91, 0xad, 0x9a, 0x40, 0x37, - 0xa0, 0x8a, 0x33, 0x91, 0x88, 0xb9, 0x0a, 0x04, 0xcc, 0x08, 0xd8, 0xac, 0x22, 0x88, 0x72, 0x23, - 0xa9, 0x8a, 0x18, 0x57, 0x92, 0xcb, 0x09, 0xa0, 0xaa, 0xb9, 0x9c, 0x31, 0x92, 0x39, 0x15, 0xca, - 0x41, 0x82, 0x29, 0x27, 0xc8, 0xab, 0x89, 0x72, 0x24, 0xa8, 0x19, 0x13, 0x98, 0x01, 0xca, 0x2a, - 0x83, 0xbd, 0x08, 0xfb, 0x8b, 0x12, 0x88, 0x56, 0x82, 0xaa, 0x80, 0x31, 0x46, 0xb1, 0xac, 0x08, - 0xba, 0x8b, 0xb9, 0x8e, 0x22, 0x81, 0x38, 0x93, 0x9c, 0x63, 0x90, 0x50, 0x14, 0xeb, 0x8a, 0x00, - 0x52, 0x04, 0x99, 0x20, 0x81, 0x09, 0x02, 0xcb, 0x28, 0x92, 0xad, 0x98, 0xce, 0x08, 0x82, 0x39, - 0x47, 0x90, 0x9a, 0x10, 0x41, 0x24, 0xc8, 0xab, 0xa0, 0xcc, 0x08, 0xb9, 0x8b, 0x34, 0x00, 0x30, - 0xb0, 0x2b, 0x26, 0x99, 0x65, 0x92, 0xbd, 0x09, 0x20, 0x44, 0x02, 0x8a, 0x22, 0xa8, 0x38, 0x83, - 0xbe, 0x30, 0x91, 0xac, 0xda, 0xad, 0x20, 0x88, 0x70, 0x15, 0xb8, 0x89, 0x21, 0x42, 0x03, 0xcb, - 0x9a, 0xe9, 0xab, 0x18, 0xca, 0x1a, 0x24, 0x10, 0x00, 0xa9, 0x58, 0x02, 0x2a, 0x67, 0xb0, 0xac, - 0x18, 0x31, 0x43, 0x80, 0x28, 0x82, 0xba, 0x61, 0x81, 0x9c, 0x20, 0x90, 0xba, 0xce, 0x8b, 0x01, - 0x89, 0x75, 0x03, 0xba, 0x1a, 0x42, 0x23, 0x91, 0xac, 0xa8, 0xde, 0x8a, 0x00, 0xaa, 0x18, 0x33, - 0x12, 0xa0, 0x8b, 0x44, 0x90, 0x70, 0x16, 0xc9, 0xab, 0x20, 0x43, 0x12, 0x80, 0x32, 0xa0, 0x9d, - 0x43, 0xa1, 0x9b, 0x30, 0x91, 0xfc, 0xac, 0x09, 0x80, 0x29, 0x57, 0x91, 0xaa, 0x18, 0x43, 0x03, - 0xa9, 0x89, 0xe9, 0xbd, 0x0a, 0x80, 0xa9, 0x28, 0x34, 0x03, 0xbb, 0x29, 0x15, 0x89, 0x65, 0x03, - 0xdc, 0x9a, 0x31, 0x24, 0x80, 0x20, 0x14, 0xba, 0x1b, 0x24, 0x90, 0x9b, 0x30, 0x92, 0xff, 0x9a, - 0x18, 0x89, 0x50, 0x34, 0xa8, 0xab, 0x48, 0x35, 0x91, 0x9a, 0x00, 0xfb, 0xad, 0x08, 0x80, 0x99, - 0x10, 0x34, 0x81, 0x9c, 0x30, 0x81, 0x29, 0x47, 0xa1, 0xcc, 0x0a, 0x42, 0x13, 0x89, 0x52, 0x82, - 0xbb, 0x29, 0x23, 0x90, 0xab, 0x41, 0xb3, 0xff, 0x8a, 0x80, 0x89, 0x63, 0x03, 0xb8, 0xaa, 0x52, - 0x15, 0xa8, 0x09, 0x92, 0xed, 0x9a, 0x08, 0x80, 0x88, 0x10, 0x35, 0xb0, 0x8b, 0x33, 0xa8, 0x60, - 0x25, 0xb9, 0xad, 0x1a, 0x44, 0x82, 0x89, 0x44, 0xa1, 0xab, 0x20, 0x12, 0x80, 0xba, 0x61, 0xb1, - 0xcf, 0x09, 0x80, 0x09, 0x45, 0x81, 0x9a, 0x8a, 0x63, 0x13, 0xca, 0x28, 0xa1, 0xcf, 0x89, 0x08, - 0x00, 0x88, 0x38, 0x34, 0xc9, 0x09, 0x13, 0x99, 0x73, 0x83, 0xcb, 0xab, 0x38, 0x37, 0xa0, 0x29, - 0x26, 0xb8, 0x9a, 0x21, 0x11, 0x91, 0x9b, 0x52, 0xf0, 0xac, 0x00, 0xa8, 0x30, 0x26, 0xa0, 0x99, - 0x19, 0x64, 0x82, 0x9c, 0x20, 0xc0, 0xbd, 0x89, 0x08, 0x10, 0x88, 0x50, 0x04, 0xb9, 0x39, 0x82, - 0x0a, 0x37, 0xb1, 0xcb, 0x9a, 0x50, 0x25, 0xa9, 0x40, 0x14, 0xba, 0x0a, 0x11, 0x21, 0xa2, 0x9b, - 0x34, 0xfb, 0x8f, 0x80, 0x98, 0x41, 0x03, 0xa9, 0x89, 0x38, 0x37, 0xa0, 0x9c, 0x23, 0xfa, 0xab, - 0x89, 0x08, 0x11, 0x98, 0x62, 0x83, 0xab, 0x30, 0xa1, 0x48, 0x27, 0xb9, 0xab, 0x8a, 0x73, 0x04, - 0x9a, 0x51, 0x83, 0xba, 0x09, 0x01, 0x33, 0xb1, 0x0c, 0x04, 0xdd, 0x0b, 0x90, 0x89, 0x45, 0x92, - 0x9a, 0x08, 0x41, 0x26, 0xc9, 0x1a, 0x02, 0xdc, 0xab, 0x98, 0x10, 0x12, 0x89, 0x73, 0x91, 0x8a, - 0x21, 0x99, 0x71, 0x03, 0xdb, 0x99, 0x18, 0x63, 0x81, 0x8a, 0x44, 0xa2, 0xaa, 0x08, 0x28, 0x43, - 0xb0, 0x1a, 0xa3, 0xdf, 0x89, 0x98, 0x28, 0x26, 0xa0, 0x8a, 0x10, 0x63, 0x03, 0xdb, 0x29, 0xa2, - 0xce, 0x9a, 0x89, 0x20, 0x02, 0x08, 0x34, 0xa0, 0x1a, 0x82, 0x0a, 0x67, 0xa1, 0xbb, 0x89, 0x31, - 0x26, 0xa0, 0x29, 0x37, 0x98, 0x9a, 0x88, 0x38, 0x24, 0xa8, 0x19, 0xd8, 0xbd, 0x98, 0xa9, 0x71, - 0x04, 0xa9, 0x09, 0x31, 0x44, 0xa1, 0xac, 0x11, 0xd0, 0xbd, 0xaa, 0x99, 0x32, 0x03, 0x10, 0x24, - 0x98, 0x10, 0xa8, 0x78, 0x26, 0xc8, 0xab, 0x18, 0x42, 0x13, 0xa9, 0x71, 0x23, 0xa9, 0xa9, 0x89, - 0x51, 0x14, 0x98, 0x99, 0xca, 0x9c, 0xaa, 0x0b, 0x56, 0x82, 0xbb, 0x28, 0x44, 0x13, 0xc9, 0x8a, - 0x01, 0xdc, 0xbc, 0xba, 0x0a, 0x43, 0x12, 0x20, 0x01, 0x10, 0x81, 0xab, 0x75, 0x04, 0xda, 0x9a, - 0x21, 0x43, 0x80, 0x1a, 0x44, 0x82, 0x98, 0xa9, 0x8b, 0x54, 0x12, 0x90, 0xca, 0xab, 0xa9, 0xbe, - 0x49, 0x26, 0xa8, 0x9a, 0x30, 0x36, 0x91, 0xba, 0x18, 0xb8, 0xbf, 0xbb, 0xad, 0x19, 0x33, 0x23, - 0x01, 0x09, 0x34, 0xc0, 0x1b, 0x57, 0x90, 0xcb, 0x89, 0x42, 0x13, 0xa9, 0x40, 0x24, 0x88, 0x00, - 0xba, 0x1b, 0x45, 0x22, 0xa0, 0xbe, 0x09, 0xb8, 0xae, 0x51, 0x03, 0xb9, 0x8a, 0x62, 0x24, 0xb8, - 0x8a, 0x01, 0xeb, 0x9b, 0xcb, 0xac, 0x10, 0x42, 0x22, 0xa0, 0x39, 0x25, 0xc9, 0x49, 0x15, 0xb9, - 0xbb, 0x29, 0x55, 0x91, 0x8a, 0x43, 0x82, 0x09, 0x02, 0xcb, 0x29, 0x43, 0x33, 0xd0, 0xae, 0x28, - 0xc8, 0x8c, 0x53, 0x91, 0xaa, 0x19, 0x73, 0x12, 0xca, 0x08, 0x91, 0xbc, 0x99, 0xda, 0x9b, 0x20, - 0x52, 0x13, 0xb9, 0x58, 0x13, 0xac, 0x51, 0x83, 0xcb, 0x9b, 0x40, 0x25, 0xb0, 0x1a, 0x35, 0x98, - 0x29, 0x82, 0xbb, 0x38, 0x53, 0x34, 0xf9, 0x9b, 0x11, 0xd9, 0x1a, 0x25, 0xb8, 0x9a, 0x20, 0x46, - 0x81, 0xac, 0x20, 0xc0, 0xac, 0x80, 0xca, 0x8a, 0x20, 0x43, 0x04, 0xab, 0x51, 0x93, 0x9b, 0x54, - 0x90, 0xac, 0x89, 0x51, 0x23, 0xca, 0x38, 0x15, 0x9a, 0x20, 0x92, 0xab, 0x11, 0x52, 0x24, 0xfb, - 0x8a, 0x02, 0xca, 0x38, 0x05, 0xba, 0x89, 0x31, 0x37, 0xb0, 0x9c, 0x12, 0xe9, 0x8b, 0x80, 0xcb, - 0x09, 0x20, 0x63, 0x92, 0x9b, 0x53, 0xa1, 0x1a, 0x25, 0xc8, 0xab, 0x18, 0x63, 0x83, 0xbb, 0x61, - 0x82, 0x9a, 0x32, 0xa1, 0x8b, 0x10, 0x63, 0x04, 0xcd, 0x19, 0x82, 0x9c, 0x41, 0x91, 0xbb, 0x19, - 0x63, 0x24, 0xd9, 0x0a, 0x02, 0xcc, 0x0a, 0x90, 0xab, 0x09, 0x30, 0x37, 0xa0, 0x1b, 0x34, 0xb0, - 0x48, 0x04, 0xdb, 0x8b, 0x20, 0x35, 0xa2, 0x9c, 0x63, 0xa1, 0x0a, 0x22, 0xa0, 0x09, 0x18, 0x73, - 0x92, 0xae, 0x18, 0x91, 0x0b, 0x53, 0xb8, 0x9d, 0x10, 0x44, 0x02, 0xdb, 0x29, 0xa1, 0xbd, 0x09, - 0x98, 0xab, 0x88, 0x52, 0x25, 0xb8, 0x29, 0x15, 0x98, 0x41, 0xa2, 0xcd, 0x09, 0x31, 0x25, 0xb8, - 0x1a, 0x35, 0xb8, 0x1a, 0x24, 0x98, 0x89, 0x28, 0x45, 0xc1, 0x9d, 0x10, 0xa0, 0x28, 0x13, 0xfb, - 0x8b, 0x31, 0x45, 0xa1, 0xac, 0x20, 0xc8, 0xad, 0x08, 0x98, 0x99, 0x09, 0x62, 0x13, 0xb9, 0x40, - 0x03, 0x18, 0x43, 0xe8, 0xac, 0x19, 0x53, 0x13, 0xba, 0x38, 0x15, 0xba, 0x38, 0x33, 0x88, 0xaa, - 0x68, 0x25, 0xd9, 0x8b, 0x10, 0x88, 0x41, 0xa1, 0xbe, 0x8a, 0x63, 0x24, 0xb9, 0x8b, 0x00, 0xfb, - 0xab, 0x80, 0x88, 0xa9, 0x09, 0x46, 0x82, 0x99, 0x31, 0x11, 0x42, 0x03, 0xde, 0xaa, 0x30, 0x44, - 0x92, 0x9a, 0x42, 0x81, 0x9b, 0x30, 0x33, 0x91, 0xbb, 0x72, 0x85, 0xba, 0x0b, 0x88, 0x40, 0x24, - 0xea, 0xac, 0x18, 0x54, 0x02, 0xba, 0x0a, 0xa0, 0xce, 0x8a, 0x09, 0x80, 0xa9, 0x28, 0x36, 0x80, - 0x08, 0x12, 0x41, 0x35, 0xc0, 0xbd, 0x8a, 0x51, 0x24, 0x98, 0x19, 0x22, 0xa8, 0x0a, 0x30, 0x44, - 0x91, 0x9b, 0x63, 0xa1, 0xab, 0xa8, 0x0b, 0x66, 0x92, 0xbc, 0xab, 0x30, 0x47, 0x90, 0xaa, 0x00, - 0xca, 0xac, 0x9a, 0x09, 0x01, 0xba, 0x60, 0x23, 0x08, 0x12, 0x88, 0x73, 0x17, 0xba, 0xab, 0x09, - 0x54, 0x03, 0x9a, 0x30, 0x82, 0xaa, 0x00, 0x20, 0x36, 0xa1, 0x0b, 0x24, 0xb9, 0x09, 0xf9, 0x2a, - 0x47, 0xa8, 0xac, 0x99, 0x51, 0x23, 0xc8, 0x0a, 0x90, 0xbd, 0xaa, 0xaa, 0x29, 0x83, 0xab, 0x63, - 0x02, 0x48, 0x03, 0x8b, 0x67, 0x82, 0xac, 0x9a, 0x18, 0x35, 0x92, 0x8a, 0x33, 0xc0, 0x0a, 0x82, - 0x28, 0x36, 0xa0, 0x1a, 0x82, 0x9c, 0x22, 0xfc, 0x48, 0x15, 0xc9, 0xaa, 0x08, 0x52, 0x02, 0xbb, - 0x10, 0xd8, 0xad, 0x98, 0xa9, 0x20, 0x82, 0x8a, 0x33, 0x98, 0x74, 0xa2, 0x1a, 0x47, 0xb1, 0xbb, - 0x8a, 0x31, 0x27, 0xa8, 0x28, 0x13, 0xbb, 0x39, 0x91, 0x49, 0x17, 0x98, 0x18, 0xb8, 0x19, 0x05, - 0xad, 0x71, 0x83, 0xcb, 0x8a, 0x18, 0x53, 0xa1, 0xab, 0x12, 0xfb, 0x9b, 0x98, 0x9a, 0x40, 0x81, - 0x19, 0x81, 0x19, 0x37, 0xb0, 0x5a, 0x27, 0xb9, 0xab, 0x08, 0x42, 0x04, 0x99, 0x40, 0x93, 0xac, - 0x21, 0x98, 0x30, 0x16, 0x98, 0x80, 0xca, 0x40, 0xa3, 0x9e, 0x54, 0x91, 0xac, 0x89, 0x11, 0x14, - 0xb8, 0x0b, 0x83, 0xcf, 0x0a, 0x98, 0x99, 0x32, 0x81, 0x18, 0xa8, 0x5a, 0x17, 0xa8, 0x68, 0x13, - 0xda, 0x9a, 0x10, 0x42, 0x81, 0x8a, 0x34, 0xb0, 0x9c, 0x22, 0x98, 0x60, 0x12, 0x88, 0xa8, 0x9d, - 0x52, 0xa0, 0x1b, 0x37, 0xb0, 0xad, 0x09, 0x32, 0x02, 0xdb, 0x18, 0xb2, 0xcf, 0x88, 0x90, 0x0a, - 0x22, 0x01, 0x80, 0xba, 0x70, 0x14, 0x9a, 0x72, 0x82, 0xdb, 0x89, 0x21, 0x32, 0xa8, 0x29, 0x26, - 0xc9, 0x0a, 0x12, 0x89, 0x32, 0x14, 0x80, 0xeb, 0x0a, 0x34, 0xb9, 0x59, 0x25, 0xd9, 0x9b, 0x18, - 0x33, 0xa1, 0xad, 0x21, 0xe9, 0xac, 0x88, 0x98, 0x19, 0x32, 0x12, 0xb8, 0x9d, 0x73, 0x82, 0x09, - 0x54, 0x90, 0xad, 0x09, 0x32, 0x13, 0xaa, 0x51, 0x03, 0xdb, 0x19, 0x02, 0x09, 0x43, 0x23, 0xa0, - 0xbf, 0x29, 0x15, 0xa9, 0x51, 0x13, 0xcc, 0x9b, 0x30, 0x14, 0xc9, 0x8a, 0x12, 0xec, 0x9b, 0x88, - 0x98, 0x18, 0x33, 0x14, 0xda, 0x0a, 0x44, 0x91, 0x28, 0x25, 0xc8, 0xac, 0x29, 0x34, 0x92, 0x8a, - 0x63, 0x91, 0xbb, 0x10, 0x01, 0x18, 0x53, 0x24, 0xd0, 0xac, 0x30, 0x83, 0x88, 0x45, 0x91, 0xbd, - 0x8b, 0x43, 0x82, 0xbc, 0x29, 0xa1, 0xcf, 0x8a, 0x88, 0x09, 0x18, 0x53, 0x82, 0xcb, 0x29, 0x25, - 0x08, 0x31, 0x04, 0xdb, 0x9c, 0x30, 0x25, 0xa8, 0x18, 0x25, 0xa8, 0x9b, 0x00, 0x11, 0x10, 0x72, - 0x14, 0xe9, 0x8a, 0x21, 0x81, 0x21, 0x14, 0xb8, 0xbe, 0x09, 0x34, 0xc1, 0x9c, 0x10, 0xc8, 0xad, - 0x8a, 0x89, 0x00, 0x10, 0x45, 0x91, 0xac, 0x30, 0x12, 0x21, 0x34, 0xa0, 0xcd, 0x9a, 0x72, 0x12, - 0xaa, 0x41, 0x03, 0xba, 0x99, 0x00, 0x21, 0x01, 0x73, 0x06, 0xda, 0x1a, 0x11, 0x10, 0x33, 0x92, - 0xcb, 0xbc, 0x39, 0x17, 0xc9, 0x0b, 0x01, 0xeb, 0xab, 0xa9, 0x08, 0x01, 0x38, 0x47, 0xb0, 0x9b, - 0x22, 0x02, 0x63, 0x02, 0xba, 0xbb, 0x0a, 0x57, 0x81, 0x8b, 0x53, 0x80, 0x9a, 0x88, 0x09, 0x32, - 0x08, 0x74, 0x82, 0xbd, 0x18, 0x01, 0x41, 0x14, 0xa8, 0x9b, 0xab, 0x60, 0x83, 0xcd, 0x19, 0xa1, - 0xcc, 0x99, 0xaa, 0x28, 0x81, 0x50, 0x25, 0xb9, 0x0b, 0x22, 0x20, 0x47, 0xa0, 0xaa, 0x98, 0x39, - 0x36, 0xb0, 0x2a, 0x26, 0xa8, 0x89, 0x98, 0x19, 0x24, 0x09, 0x46, 0xb1, 0xad, 0x10, 0x00, 0x54, - 0x02, 0xba, 0x8a, 0x89, 0x52, 0xb1, 0xaf, 0x10, 0xc8, 0x9c, 0x99, 0x9a, 0x20, 0x81, 0x61, 0x14, - 0xca, 0x08, 0x01, 0x40, 0x16, 0xb8, 0x8b, 0x80, 0x40, 0x14, 0xb9, 0x58, 0x13, 0xab, 0x18, 0xb9, - 0x38, 0x06, 0x18, 0x35, 0xd8, 0x9b, 0x01, 0x28, 0x57, 0x91, 0x9b, 0x88, 0x00, 0x32, 0xfa, 0x9b, - 0x01, 0xea, 0x9a, 0x99, 0x8b, 0x31, 0x00, 0x73, 0x83, 0xab, 0x18, 0x90, 0x74, 0x04, 0xca, 0x09, - 0x00, 0x32, 0x82, 0xab, 0x73, 0x92, 0x8b, 0x01, 0xba, 0x40, 0x03, 0x38, 0x17, 0xca, 0x89, 0x80, - 0x68, 0x36, 0xb8, 0x9b, 0x10, 0x11, 0x82, 0xce, 0x0a, 0x91, 0xbd, 0x8a, 0xa9, 0x0b, 0x23, 0x11, - 0x36, 0xa2, 0x9a, 0x80, 0x1a, 0x77, 0x93, 0xcb, 0x19, 0x21, 0x23, 0xa8, 0x2b, 0x36, 0xb8, 0x0a, - 0x82, 0xbb, 0x62, 0x01, 0x31, 0x83, 0xbd, 0x08, 0xba, 0x75, 0x17, 0xa9, 0x8a, 0x11, 0x11, 0xb0, - 0xae, 0x18, 0xc8, 0xac, 0x88, 0xb9, 0x19, 0x23, 0x21, 0x25, 0xa0, 0x08, 0xc8, 0x49, 0x67, 0xa0, - 0xab, 0x10, 0x32, 0x02, 0xaa, 0x58, 0x04, 0xb9, 0x28, 0x90, 0x8b, 0x42, 0x12, 0x31, 0xb0, 0x9b, - 0xd0, 0x8d, 0x77, 0x03, 0xbb, 0x09, 0x31, 0x02, 0xeb, 0x9b, 0x00, 0xcc, 0x9c, 0x90, 0xa9, 0x28, - 0x22, 0x23, 0x03, 0x18, 0x81, 0xce, 0x71, 0x15, 0xc8, 0x9a, 0x30, 0x33, 0xa0, 0x9a, 0x63, 0x91, - 0x9a, 0x20, 0x98, 0x0a, 0x32, 0x24, 0x91, 0xaa, 0x32, 0xfc, 0x4b, 0x67, 0x80, 0xaa, 0x08, 0x23, - 0x91, 0xcd, 0x09, 0x90, 0xad, 0x8a, 0x98, 0x99, 0x10, 0x33, 0x14, 0x88, 0x32, 0xc2, 0x9e, 0x73, - 0x03, 0xda, 0x8a, 0x32, 0x15, 0xa9, 0x19, 0x24, 0xa8, 0x0a, 0x01, 0x98, 0x09, 0x31, 0x25, 0xc9, - 0x19, 0x05, 0xbc, 0x70, 0x25, 0xa0, 0xab, 0x38, 0x25, 0xb8, 0xae, 0x00, 0xb9, 0xad, 0x88, 0x89, - 0x89, 0x10, 0x34, 0x02, 0x0a, 0x44, 0xc8, 0x0b, 0x37, 0x91, 0xcb, 0x0a, 0x54, 0x02, 0xba, 0x30, - 0x03, 0xba, 0x28, 0x00, 0x89, 0x88, 0x71, 0x03, 0xdb, 0x30, 0x94, 0x9d, 0x73, 0x13, 0xa9, 0xab, - 0x41, 0x15, 0xe9, 0x8a, 0x80, 0xca, 0x9a, 0x98, 0x98, 0x80, 0x20, 0x35, 0xb1, 0x29, 0x17, 0xb9, - 0x3a, 0x17, 0xa0, 0xab, 0x19, 0x37, 0x92, 0x8c, 0x31, 0x91, 0x8b, 0x10, 0x80, 0x80, 0x99, 0x73, - 0x92, 0xad, 0x52, 0xa1, 0x0b, 0x55, 0x01, 0xa9, 0x9a, 0x62, 0x83, 0xcc, 0x0a, 0xa0, 0xbc, 0x8a, - 0x89, 0x09, 0x80, 0x40, 0x25, 0xb8, 0x58, 0x13, 0xac, 0x40, 0x13, 0xca, 0xba, 0x58, 0x27, 0xa0, - 0x0a, 0x32, 0xb8, 0x0a, 0x02, 0x09, 0x82, 0x9a, 0x55, 0xc0, 0x0c, 0x43, 0xa8, 0x4a, 0x25, 0x80, - 0x9a, 0x0a, 0x55, 0xa1, 0xbd, 0x08, 0xc8, 0xac, 0x88, 0x89, 0x00, 0x80, 0x50, 0x13, 0xab, 0x72, - 0x92, 0x9a, 0x42, 0x91, 0xab, 0xaa, 0x72, 0x17, 0x99, 0x19, 0x03, 0xb9, 0x18, 0x81, 0x18, 0x92, - 0x0b, 0x36, 0xea, 0x2a, 0x24, 0xa9, 0x60, 0x13, 0x99, 0x89, 0x29, 0x37, 0xd0, 0xac, 0x80, 0xda, - 0x9a, 0x98, 0x89, 0x11, 0x88, 0x62, 0x82, 0x8b, 0x44, 0xa1, 0x1a, 0x14, 0xb9, 0x9a, 0x89, 0x76, - 0x02, 0xa9, 0x30, 0x92, 0xab, 0x20, 0x88, 0x30, 0xb1, 0x2a, 0x27, 0xdd, 0x38, 0x04, 0x89, 0x53, - 0x81, 0x8a, 0x80, 0x41, 0x25, 0xfb, 0x9a, 0x90, 0xcc, 0x8a, 0x98, 0x09, 0x02, 0x08, 0x44, 0x90, - 0x1a, 0x25, 0xa0, 0x30, 0x92, 0xbd, 0x09, 0x30, 0x57, 0x81, 0x8a, 0x32, 0xc0, 0x8a, 0x11, 0x09, - 0x22, 0xa8, 0x49, 0xb3, 0xcf, 0x41, 0x02, 0x38, 0x25, 0xb8, 0x09, 0x21, 0x63, 0x93, 0xce, 0x8a, - 0xc9, 0xbc, 0x8a, 0x99, 0x28, 0x01, 0x20, 0x25, 0xa8, 0x48, 0x24, 0x88, 0x33, 0xf8, 0xab, 0x10, - 0x52, 0x34, 0xa0, 0x29, 0x14, 0xca, 0x09, 0x01, 0x19, 0x23, 0xa9, 0x31, 0xf9, 0x8e, 0x32, 0x12, - 0x73, 0x82, 0xba, 0x20, 0x42, 0x33, 0xe0, 0xbc, 0xa9, 0xec, 0xab, 0x89, 0x99, 0x11, 0x11, 0x31, - 0x03, 0x99, 0x63, 0x13, 0x41, 0x03, 0xde, 0x0b, 0x21, 0x53, 0x02, 0x88, 0x31, 0x92, 0xad, 0x18, - 0x80, 0x30, 0x03, 0x88, 0xa1, 0xdf, 0x18, 0x22, 0x63, 0x25, 0xa0, 0x8c, 0x30, 0x34, 0x82, 0xeb, - 0x9a, 0xca, 0xbe, 0xaa, 0xa8, 0x88, 0x21, 0x21, 0x32, 0x90, 0x38, 0x25, 0x21, 0x37, 0xb1, 0xcf, - 0x08, 0x31, 0x33, 0x90, 0x38, 0x24, 0xc9, 0x8a, 0x00, 0x08, 0x32, 0x11, 0x00, 0xfb, 0x9d, 0x21, - 0x10, 0x66, 0x13, 0xba, 0x0b, 0x52, 0x24, 0xa0, 0x9d, 0x98, 0xfa, 0xbb, 0x99, 0x99, 0x18, 0x11, - 0x22, 0x03, 0x9a, 0x44, 0x81, 0x60, 0x25, 0xd9, 0xbb, 0x10, 0x44, 0x02, 0x99, 0x42, 0x82, 0xbb, - 0x18, 0x90, 0x28, 0x13, 0x21, 0xa3, 0xff, 0x19, 0x01, 0x29, 0x57, 0x81, 0xaa, 0x09, 0x43, 0x14, - 0xc9, 0x8a, 0x90, 0xce, 0xaa, 0x98, 0x8a, 0x10, 0x20, 0x42, 0xa0, 0x19, 0x34, 0x99, 0x72, 0x06, - 0xca, 0x9a, 0x20, 0x34, 0x91, 0x0a, 0x44, 0xa0, 0x8b, 0x00, 0x88, 0x20, 0x82, 0x41, 0xd1, 0xbd, - 0x21, 0xa1, 0x68, 0x27, 0x90, 0xab, 0x10, 0x44, 0x02, 0xbc, 0x19, 0xb0, 0xcf, 0x89, 0x99, 0x09, - 0x00, 0x21, 0x22, 0xb9, 0x48, 0x14, 0x8b, 0x56, 0x92, 0xad, 0x8a, 0x31, 0x25, 0x98, 0x2a, 0x25, - 0xa9, 0x8a, 0x01, 0x89, 0x21, 0x00, 0x33, 0xf9, 0x9e, 0x22, 0x99, 0x70, 0x24, 0xa9, 0x8b, 0x20, - 0x45, 0xa1, 0xac, 0x10, 0xd8, 0xac, 0x99, 0x99, 0x08, 0x10, 0x31, 0x04, 0xbb, 0x52, 0x93, 0x1a, - 0x57, 0xb0, 0xbb, 0x0a, 0x63, 0x13, 0xb9, 0x48, 0x14, 0xba, 0x19, 0x91, 0x08, 0x12, 0x18, 0x14, - 0xfc, 0x0a, 0x03, 0x99, 0x74, 0x03, 0xba, 0x0a, 0x41, 0x34, 0xd0, 0x9b, 0x11, 0xfa, 0x9b, 0x89, - 0x8a, 0x18, 0x00, 0x42, 0x92, 0x8c, 0x43, 0x90, 0x49, 0x17, 0xc8, 0x9b, 0x08, 0x34, 0x03, 0xab, - 0x62, 0x82, 0xba, 0x10, 0x88, 0x18, 0x02, 0x20, 0x84, 0xdf, 0x18, 0x82, 0x1a, 0x56, 0x81, 0xba, - 0x88, 0x43, 0x14, 0xd9, 0x0a, 0x81, 0xcc, 0x9b, 0x99, 0x99, 0x10, 0x20, 0x34, 0xb8, 0x1b, 0x36, - 0x99, 0x71, 0x13, 0xeb, 0x9a, 0x28, 0x44, 0x91, 0x8a, 0x43, 0x91, 0xab, 0x01, 0x88, 0x10, 0x01, - 0x42, 0xc1, 0xbf, 0x20, 0x81, 0x49, 0x37, 0x90, 0xab, 0x29, 0x54, 0x83, 0xdb, 0x19, 0xa0, 0xcd, - 0x99, 0x99, 0x09, 0x00, 0x21, 0x14, 0xb9, 0x38, 0x14, 0x89, 0x65, 0x92, 0xbc, 0x8b, 0x41, 0x25, - 0x98, 0x19, 0x24, 0xb0, 0x9a, 0x81, 0x08, 0x11, 0x20, 0x43, 0xfa, 0x9d, 0x21, 0x88, 0x71, 0x23, - 0xa8, 0xab, 0x48, 0x45, 0xa1, 0xbb, 0x18, 0xd9, 0xbd, 0x9a, 0x99, 0x88, 0x01, 0x42, 0x83, 0xaa, - 0x41, 0x83, 0x38, 0x57, 0xa0, 0xbc, 0x8a, 0x63, 0x03, 0xa8, 0x30, 0x14, 0xb9, 0x89, 0x08, 0x00, - 0x01, 0x32, 0x04, 0xcf, 0x8a, 0x02, 0x18, 0x56, 0x12, 0xa9, 0x9b, 0x62, 0x24, 0xb8, 0x9b, 0x88, - 0xec, 0xab, 0x9b, 0x8a, 0x88, 0x21, 0x34, 0xa1, 0x89, 0x43, 0x00, 0x54, 0x14, 0xc9, 0xbc, 0x19, - 0x45, 0x01, 0x89, 0x32, 0x82, 0x9a, 0x99, 0x09, 0x11, 0x10, 0x54, 0xb1, 0xbf, 0x08, 0x80, 0x61, - 0x35, 0x81, 0xaa, 0x0a, 0x64, 0x03, 0xba, 0x89, 0xba, 0xbf, 0xbb, 0xac, 0x09, 0x08, 0x40, 0x13, - 0xa8, 0x20, 0x02, 0x40, 0x37, 0x81, 0xdb, 0xbb, 0x30, 0x37, 0x80, 0x18, 0x23, 0x88, 0x89, 0xb9, - 0x29, 0x13, 0x28, 0x37, 0xea, 0x9b, 0x80, 0x09, 0x57, 0x13, 0x98, 0xa8, 0x18, 0x37, 0x91, 0xaa, - 0x98, 0xcd, 0xac, 0xca, 0xaa, 0x08, 0x08, 0x42, 0x82, 0x89, 0x22, 0x90, 0x72, 0x16, 0x99, 0xaa, - 0xaa, 0x62, 0x13, 0x88, 0x42, 0x92, 0x09, 0x81, 0xbb, 0x40, 0x81, 0x40, 0x85, 0xcc, 0x19, 0xa8, - 0x39, 0x77, 0x00, 0x09, 0x88, 0x20, 0x24, 0xa9, 0x89, 0xc0, 0xaf, 0x9a, 0xcb, 0x9a, 0x00, 0x19, - 0x43, 0x90, 0x29, 0x04, 0x8a, 0x65, 0x82, 0xab, 0x99, 0x09, 0x44, 0x92, 0x28, 0x26, 0xa8, 0x18, - 0x92, 0x9c, 0x31, 0x90, 0x51, 0xa1, 0x9f, 0x01, 0xb9, 0x70, 0x24, 0x98, 0x08, 0x00, 0x42, 0x83, - 0xbb, 0x20, 0xfa, 0xaf, 0x89, 0xbb, 0x8a, 0x00, 0x28, 0x14, 0xa9, 0x51, 0x91, 0x2a, 0x47, 0xa0, - 0xaa, 0x80, 0x28, 0x24, 0xa8, 0x71, 0x03, 0xaa, 0x30, 0xa1, 0x8c, 0x13, 0x88, 0x53, 0xd9, 0x0b, - 0x02, 0xbc, 0x74, 0x13, 0xaa, 0x10, 0x12, 0x43, 0xb0, 0x8c, 0x13, 0xfe, 0x9a, 0x98, 0xba, 0x09, - 0x80, 0x30, 0x83, 0x8b, 0x54, 0xb0, 0x48, 0x27, 0xb9, 0x8a, 0x00, 0x31, 0x83, 0x9b, 0x66, 0x92, - 0x9a, 0x31, 0xa8, 0x1a, 0x02, 0x18, 0x14, 0xdd, 0x18, 0xa2, 0x0c, 0x56, 0x91, 0x8a, 0x11, 0x22, - 0x03, 0xda, 0x2a, 0x93, 0xef, 0x89, 0xa8, 0x9a, 0x09, 0x80, 0x22, 0x90, 0x2a, 0x26, 0xb9, 0x71, - 0x04, 0xbb, 0x09, 0x21, 0x22, 0xb0, 0x2b, 0x77, 0x90, 0x0a, 0x11, 0x98, 0x08, 0x81, 0x20, 0xa1, - 0xae, 0x21, 0xc1, 0x3a, 0x57, 0x98, 0x0a, 0x21, 0x33, 0x91, 0xbd, 0x40, 0xc1, 0xbe, 0x89, 0xa8, - 0x9b, 0x88, 0x10, 0x22, 0xb9, 0x60, 0x04, 0x9a, 0x64, 0xa2, 0xbb, 0x29, 0x42, 0x12, 0xda, 0x48, - 0x25, 0xa9, 0x1a, 0x12, 0xa8, 0x00, 0x00, 0x22, 0xe9, 0x8c, 0x23, 0xca, 0x70, 0x14, 0xa9, 0x1a, - 0x43, 0x14, 0xb8, 0x9c, 0x32, 0xf9, 0xac, 0x88, 0xa9, 0x9a, 0x08, 0x20, 0x82, 0x9b, 0x54, 0x92, - 0x2a, 0x37, 0xc0, 0xab, 0x38, 0x25, 0x91, 0xbb, 0x72, 0x04, 0xaa, 0x28, 0x01, 0x88, 0x08, 0x10, - 0x82, 0xdc, 0x19, 0x03, 0x9b, 0x75, 0x02, 0xab, 0x29, 0x36, 0x03, 0xdb, 0x1a, 0x12, 0xfb, 0xab, - 0x88, 0x9a, 0x9a, 0x08, 0x22, 0xb8, 0x2a, 0x27, 0x90, 0x50, 0x14, 0xd9, 0x9b, 0x51, 0x23, 0xb8, - 0x8b, 0x55, 0x81, 0x9a, 0x28, 0x01, 0x90, 0x88, 0x22, 0xc1, 0xae, 0x21, 0x91, 0x29, 0x47, 0x91, - 0xbb, 0x50, 0x35, 0xa2, 0xbc, 0x28, 0x92, 0xbe, 0xab, 0x89, 0x9a, 0xaa, 0x28, 0x13, 0xbc, 0x50, - 0x14, 0x09, 0x73, 0x81, 0xcb, 0x0b, 0x73, 0x03, 0xc9, 0x19, 0x24, 0x90, 0x99, 0x10, 0x12, 0x90, - 0x1a, 0x33, 0xfa, 0x8c, 0x22, 0x98, 0x61, 0x23, 0xb9, 0x9c, 0x72, 0x25, 0xb0, 0xab, 0x30, 0xb8, - 0xbe, 0x9b, 0x8a, 0xa8, 0xaa, 0x40, 0x91, 0x9c, 0x62, 0x81, 0x20, 0x25, 0xb8, 0xbc, 0x1a, 0x47, - 0x82, 0xbb, 0x40, 0x13, 0x98, 0x89, 0x18, 0x33, 0xb8, 0x39, 0x05, 0xce, 0x18, 0x82, 0x19, 0x45, - 0x92, 0xaa, 0x8a, 0x75, 0x14, 0xc9, 0x0a, 0x01, 0xb9, 0xbb, 0xbb, 0x0a, 0xa8, 0x9c, 0x32, 0xe0, - 0x0a, 0x25, 0x88, 0x52, 0x83, 0xda, 0x9a, 0x38, 0x47, 0xa1, 0x9b, 0x32, 0x02, 0x89, 0x98, 0x28, - 0x25, 0xa9, 0x38, 0xc3, 0xaf, 0x21, 0x90, 0x40, 0x25, 0xa8, 0xaa, 0x18, 0x67, 0x02, 0xbb, 0x1a, - 0x91, 0xcb, 0xba, 0xac, 0x08, 0xb0, 0x0b, 0x23, 0xdc, 0x38, 0x13, 0x19, 0x47, 0xa1, 0xac, 0x89, - 0x51, 0x35, 0xb8, 0x0b, 0x33, 0x90, 0x18, 0xa8, 0x48, 0x15, 0xa9, 0x21, 0xe8, 0x8c, 0x22, 0x99, - 0x73, 0x03, 0xba, 0x89, 0x30, 0x77, 0x91, 0xaa, 0x08, 0xa8, 0xaa, 0xba, 0x9d, 0x10, 0xb8, 0x19, - 0x92, 0xae, 0x41, 0x81, 0x48, 0x16, 0xc8, 0x8a, 0x88, 0x53, 0x15, 0xaa, 0x29, 0x02, 0x89, 0x12, - 0xb9, 0x60, 0x03, 0x8a, 0x11, 0xec, 0x19, 0x02, 0x0a, 0x47, 0xa1, 0xaa, 0x00, 0x41, 0x26, 0xb0, - 0x9b, 0x80, 0xdb, 0x99, 0xc9, 0x9b, 0x11, 0xa9, 0x18, 0xd0, 0x8c, 0x33, 0xa0, 0x73, 0x06, 0xbb, - 0x89, 0x10, 0x45, 0x82, 0xaa, 0x21, 0x91, 0x1a, 0x04, 0xaa, 0x62, 0x82, 0x88, 0x91, 0xaf, 0x20, - 0x91, 0x49, 0x27, 0xa8, 0x9b, 0x11, 0x63, 0x23, 0xca, 0x8a, 0xa0, 0xae, 0x88, 0xc9, 0x0b, 0x11, - 0x99, 0x80, 0xda, 0x2a, 0x04, 0x09, 0x56, 0xa2, 0xbc, 0x08, 0x31, 0x35, 0x91, 0x0b, 0x22, 0xba, - 0x48, 0x84, 0x8b, 0x63, 0x81, 0x08, 0xd8, 0x9b, 0x22, 0x98, 0x72, 0x17, 0xaa, 0x0a, 0x21, 0x53, - 0x82, 0xab, 0x09, 0xfa, 0x9b, 0x80, 0xcb, 0x09, 0x02, 0x89, 0xb0, 0xad, 0x30, 0x92, 0x59, 0x37, - 0xc0, 0x9c, 0x18, 0x42, 0x13, 0x98, 0x28, 0x81, 0x9d, 0x41, 0x81, 0x0a, 0x43, 0x01, 0x90, 0xcd, - 0x1a, 0x02, 0x09, 0x57, 0x82, 0xcb, 0x19, 0x42, 0x23, 0xa0, 0x8b, 0xa8, 0xcf, 0x8a, 0x80, 0xbb, - 0x19, 0x11, 0x80, 0xfb, 0x9a, 0x22, 0x98, 0x71, 0x06, 0xb9, 0x9b, 0x31, 0x34, 0x83, 0x09, 0x32, - 0xe8, 0x8b, 0x43, 0x91, 0x09, 0x24, 0x12, 0xd8, 0xad, 0x20, 0x80, 0x49, 0x37, 0xb1, 0xac, 0x28, - 0x34, 0x03, 0xaa, 0x18, 0xf9, 0xad, 0x09, 0x90, 0xaa, 0x00, 0x21, 0xa0, 0xcd, 0x19, 0x01, 0x89, - 0x56, 0x82, 0xbc, 0x0b, 0x52, 0x23, 0x90, 0x38, 0x04, 0xeb, 0x19, 0x22, 0x90, 0x00, 0x42, 0x12, - 0xfb, 0x8b, 0x12, 0x98, 0x71, 0x15, 0xa9, 0x9b, 0x40, 0x43, 0x90, 0x8a, 0x11, 0xec, 0x9c, 0x08, - 0x90, 0x99, 0x18, 0x22, 0xd8, 0xac, 0x20, 0x90, 0x39, 0x37, 0xa0, 0xbd, 0x19, 0x44, 0x03, 0x8a, - 0x30, 0x05, 0xcb, 0x39, 0x02, 0x01, 0x09, 0x7d, 0x0b, 0x02, 0xcd, 0x08, 0x98, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x77, 0x97, 0xbc, 0xaa, 0xab, 0x22, 0x90, 0xbb, 0xdc, 0xce, 0xcb, - 0xbc, 0x0a, 0x82, 0x09, 0x43, 0x12, 0x63, 0x12, 0x20, 0x46, 0x22, 0x45, 0x82, 0xdc, 0x9c, 0x73, - 0x24, 0x80, 0x99, 0xa9, 0x88, 0xeb, 0xcd, 0xab, 0x28, 0x65, 0x44, 0x23, 0xb8, 0xbd, 0x8b, 0x00, - 0x01, 0xa8, 0xa9, 0xb9, 0xaa, 0x99, 0x18, 0x81, 0xda, 0xcc, 0x99, 0x41, 0x23, 0x00, 0x10, 0x65, - 0x47, 0x23, 0x01, 0x99, 0x08, 0x42, 0x33, 0x01, 0x98, 0x08, 0x12, 0xc9, 0xec, 0xcd, 0xab, 0xa9, - 0xaa, 0x48, 0x47, 0x23, 0x98, 0xba, 0x89, 0x08, 0x80, 0xb9, 0x8a, 0x11, 0x01, 0x21, 0x24, 0xa0, - 0xfd, 0xcb, 0xaa, 0x89, 0x18, 0x91, 0xdb, 0x0a, 0x54, 0x25, 0x01, 0x88, 0x09, 0x52, 0x23, 0x98, - 0x9a, 0x10, 0x34, 0x03, 0xfd, 0xac, 0xaa, 0xca, 0xbd, 0x19, 0x46, 0x33, 0x81, 0xa9, 0xaa, 0xa9, - 0xa9, 0xba, 0x9a, 0x08, 0x02, 0x00, 0x81, 0xfb, 0xac, 0x99, 0x08, 0x40, 0x36, 0x03, 0xcb, 0x38, - 0x47, 0x34, 0x03, 0x80, 0x88, 0x42, 0x43, 0x02, 0xaa, 0x09, 0x43, 0x13, 0xb9, 0xcd, 0xda, 0xcd, - 0xbc, 0x89, 0x43, 0x24, 0x02, 0x00, 0x80, 0x98, 0xaa, 0xdb, 0xab, 0x09, 0x10, 0x01, 0x88, 0xdb, - 0xac, 0xbb, 0xad, 0x0a, 0x43, 0x14, 0xb9, 0x0b, 0x47, 0x34, 0x23, 0x02, 0x00, 0x31, 0x25, 0xa0, - 0xbd, 0x0a, 0x22, 0x11, 0x11, 0x82, 0xfa, 0xff, 0xbb, 0x9a, 0x11, 0x32, 0x21, 0x21, 0x23, 0x11, - 0xa8, 0xdb, 0xab, 0x19, 0x54, 0x33, 0x13, 0x01, 0xca, 0xcc, 0xab, 0x1a, 0x53, 0x82, 0xcb, 0x0a, - 0x55, 0x35, 0x33, 0x12, 0x11, 0x43, 0x13, 0xd9, 0xbd, 0x9a, 0x00, 0x88, 0x89, 0x10, 0xc8, 0xef, - 0xbc, 0xaa, 0x88, 0x20, 0x10, 0x21, 0x33, 0x22, 0x01, 0xb8, 0xbd, 0x8b, 0x51, 0x53, 0x22, 0x32, - 0x82, 0xdc, 0xac, 0x09, 0x00, 0x88, 0xcb, 0xbc, 0x48, 0x46, 0x33, 0x11, 0x31, 0x44, 0x13, 0xb0, - 0xcd, 0x9a, 0x88, 0x88, 0x28, 0x53, 0x91, 0xfb, 0xcc, 0xab, 0x9a, 0x08, 0x11, 0x22, 0x53, 0x23, - 0x02, 0x98, 0xcb, 0x9a, 0x20, 0x23, 0x54, 0x36, 0x03, 0xb9, 0xad, 0x99, 0x08, 0x01, 0xc9, 0xbd, - 0x19, 0x45, 0x23, 0x02, 0x52, 0x34, 0x24, 0x90, 0xba, 0x9a, 0xba, 0xbb, 0x29, 0x55, 0x03, 0xea, - 0xdc, 0xbb, 0xab, 0x8a, 0x88, 0x10, 0x21, 0x42, 0x12, 0xa0, 0xad, 0xab, 0xaa, 0x19, 0x65, 0x44, - 0x22, 0x90, 0xba, 0x9a, 0x10, 0x11, 0xb8, 0xbf, 0x09, 0x45, 0x23, 0x01, 0x62, 0x35, 0x32, 0x11, - 0x88, 0x98, 0xaa, 0xbc, 0x18, 0x54, 0x33, 0xa0, 0xce, 0xbc, 0xbb, 0xab, 0x89, 0x88, 0x10, 0x54, - 0x12, 0x90, 0x98, 0xba, 0xbd, 0x8b, 0x41, 0x46, 0x24, 0x01, 0x99, 0x8a, 0x21, 0x13, 0xb0, 0xcd, - 0x19, 0x44, 0x22, 0x10, 0x52, 0x45, 0x32, 0x11, 0x01, 0x90, 0xbb, 0xbd, 0x9b, 0x30, 0x25, 0x91, - 0xcd, 0xbd, 0xbd, 0xba, 0xa9, 0x9a, 0x08, 0x32, 0x22, 0x22, 0x01, 0xc9, 0xbf, 0x9c, 0x08, 0x53, - 0x44, 0x11, 0xa8, 0x8a, 0x21, 0x13, 0xc9, 0xab, 0x19, 0x44, 0x13, 0x11, 0x73, 0x35, 0x33, 0x33, - 0x33, 0x02, 0xda, 0xcc, 0x9a, 0x19, 0x43, 0x12, 0xca, 0xce, 0xcb, 0xca, 0xaa, 0x9a, 0x89, 0x21, - 0x32, 0x43, 0x32, 0x90, 0xdc, 0xbc, 0x89, 0x31, 0x46, 0x12, 0x99, 0x0a, 0x21, 0x03, 0xc9, 0xac, - 0x18, 0x22, 0x12, 0x21, 0x45, 0x36, 0x34, 0x42, 0x43, 0x02, 0xa0, 0xba, 0xac, 0x8a, 0x42, 0x23, - 0xb9, 0xbf, 0xbd, 0xbc, 0xad, 0xaa, 0x99, 0x08, 0x21, 0x43, 0x43, 0x01, 0xb8, 0xcd, 0xab, 0x28, - 0x35, 0x13, 0x98, 0x9a, 0x42, 0x03, 0xd9, 0xaa, 0x88, 0x01, 0x81, 0x20, 0x45, 0x45, 0x43, 0x43, - 0x44, 0x22, 0x81, 0x98, 0xba, 0x89, 0x41, 0x33, 0x90, 0xdb, 0xcc, 0xbd, 0xbd, 0xab, 0xaa, 0x99, - 0x20, 0x43, 0x53, 0x23, 0x90, 0xec, 0xaa, 0x19, 0x42, 0x02, 0x90, 0x08, 0x32, 0x13, 0xb9, 0xad, - 0x18, 0x00, 0xba, 0x18, 0x63, 0x53, 0x44, 0x44, 0x53, 0x33, 0x22, 0x98, 0xab, 0x8a, 0x20, 0x43, - 0x02, 0xa9, 0xdc, 0xdd, 0xbc, 0xac, 0xab, 0xaa, 0x08, 0x21, 0x44, 0x34, 0x02, 0xda, 0xac, 0x09, - 0x12, 0x02, 0x80, 0x00, 0x32, 0x04, 0xa9, 0x9b, 0x11, 0x80, 0xaa, 0x09, 0x11, 0x73, 0x46, 0x44, - 0x53, 0x35, 0x22, 0x80, 0xa9, 0x9a, 0x88, 0x10, 0x22, 0x82, 0xea, 0xcd, 0xcd, 0xcb, 0xab, 0xab, - 0x99, 0x09, 0x52, 0x35, 0x23, 0xb9, 0xbc, 0x89, 0x21, 0x01, 0x00, 0x31, 0x34, 0x22, 0x90, 0x88, - 0x00, 0x80, 0x9a, 0xba, 0x8b, 0x54, 0x53, 0x46, 0x55, 0x44, 0x23, 0x01, 0x98, 0x98, 0x99, 0x18, - 0x21, 0x12, 0x80, 0xdc, 0xed, 0xbc, 0xbb, 0xbb, 0xbc, 0x9a, 0x41, 0x45, 0x23, 0x90, 0xbb, 0x8a, - 0x01, 0x88, 0x88, 0x42, 0x33, 0x13, 0x21, 0x98, 0x09, 0x01, 0xca, 0xbc, 0x9a, 0x98, 0x00, 0x62, - 0x77, 0x37, 0x32, 0x12, 0x80, 0x99, 0x99, 0x9a, 0x11, 0x12, 0x12, 0x90, 0xff, 0xbd, 0xba, 0xcb, - 0xbc, 0xab, 0x29, 0x54, 0x23, 0x81, 0xa9, 0x99, 0x90, 0x99, 0x09, 0x31, 0x53, 0x23, 0x12, 0x11, - 0x00, 0x11, 0x92, 0xdb, 0x19, 0x92, 0xcf, 0x0a, 0x73, 0x46, 0x43, 0x22, 0x11, 0x98, 0xa8, 0x89, - 0x89, 0x20, 0x43, 0x82, 0xdd, 0xbd, 0xbb, 0xcc, 0xdc, 0xab, 0x09, 0x42, 0x23, 0x02, 0x00, 0x89, - 0x89, 0x9a, 0xaa, 0x30, 0x34, 0x33, 0x34, 0x12, 0x42, 0x33, 0x80, 0x09, 0x32, 0x83, 0xdf, 0xab, - 0x61, 0x45, 0x35, 0x24, 0x03, 0x00, 0x08, 0xa9, 0x9a, 0x18, 0x34, 0x02, 0xfb, 0xcb, 0xaa, 0xeb, - 0xcd, 0xbc, 0x89, 0x10, 0x32, 0x22, 0x01, 0x80, 0x98, 0xaa, 0xaa, 0x8a, 0x52, 0x32, 0x11, 0x43, - 0x24, 0x22, 0x80, 0x08, 0x44, 0x83, 0xfb, 0xac, 0x08, 0x52, 0x56, 0x33, 0x22, 0x12, 0x10, 0xa9, - 0xbb, 0x19, 0x34, 0x03, 0xcc, 0xac, 0x89, 0xfb, 0xce, 0xbc, 0xaa, 0x18, 0x11, 0x22, 0x22, 0x02, - 0x08, 0x98, 0xba, 0x9a, 0x32, 0x23, 0x32, 0x65, 0x43, 0x02, 0x88, 0x31, 0x34, 0x23, 0xb1, 0xcf, - 0x9b, 0x20, 0x47, 0x34, 0x42, 0x22, 0x11, 0x98, 0xbb, 0x0a, 0x53, 0x81, 0xbc, 0x8a, 0x80, 0xd9, - 0xff, 0xbb, 0x9c, 0x8a, 0x00, 0x21, 0x12, 0x12, 0x11, 0x88, 0x99, 0x9a, 0x28, 0x01, 0x18, 0x65, - 0x23, 0x11, 0x10, 0x20, 0x53, 0x34, 0x02, 0xdc, 0xac, 0x28, 0x53, 0x63, 0x33, 0x34, 0x23, 0x90, - 0xbb, 0x19, 0x33, 0x92, 0xcd, 0x8b, 0x22, 0xb0, 0xff, 0xbd, 0xbc, 0xa9, 0x88, 0x10, 0x11, 0x23, - 0x12, 0x81, 0x99, 0x09, 0x88, 0x88, 0x20, 0x54, 0x34, 0x12, 0x10, 0x10, 0x42, 0x46, 0x02, 0xb9, - 0xbd, 0x89, 0x32, 0x35, 0x46, 0x35, 0x13, 0x80, 0x99, 0x09, 0x32, 0x90, 0xcc, 0x89, 0x21, 0x82, - 0xfc, 0xce, 0xcb, 0xaa, 0x8a, 0x88, 0x10, 0x32, 0x23, 0x01, 0x08, 0x80, 0x88, 0x88, 0x21, 0x45, - 0x34, 0x33, 0x01, 0x09, 0x42, 0x45, 0x23, 0xc0, 0xbc, 0x8a, 0x88, 0x30, 0x77, 0x34, 0x14, 0x81, - 0x88, 0x08, 0x11, 0x90, 0xbb, 0x9c, 0x30, 0x13, 0xd9, 0xef, 0xcb, 0xbb, 0xab, 0xa9, 0x00, 0x32, - 0x33, 0x12, 0x21, 0x11, 0x88, 0x08, 0x22, 0x64, 0x35, 0x33, 0x12, 0x88, 0x30, 0x37, 0x12, 0xa0, - 0xca, 0xaa, 0xca, 0xac, 0x71, 0x46, 0x23, 0x01, 0x88, 0x10, 0x11, 0x91, 0xca, 0xab, 0x20, 0x35, - 0x91, 0xde, 0xcc, 0xac, 0xbb, 0xab, 0x09, 0x21, 0x22, 0x32, 0x21, 0x22, 0x01, 0x88, 0x01, 0x31, - 0x57, 0x34, 0x01, 0x88, 0x11, 0x34, 0x23, 0x80, 0x88, 0xa0, 0xef, 0xbb, 0x28, 0x57, 0x23, 0x02, - 0x00, 0x11, 0x23, 0x02, 0xc9, 0xac, 0x29, 0x53, 0x02, 0xca, 0xce, 0xcc, 0xcb, 0x9b, 0x9a, 0x08, - 0x11, 0x11, 0x22, 0x22, 0x21, 0x01, 0x90, 0x20, 0x65, 0x33, 0x03, 0x88, 0x30, 0x36, 0x01, 0x21, - 0x33, 0x91, 0xdf, 0xad, 0x0a, 0x53, 0x24, 0x22, 0x00, 0x21, 0x43, 0x12, 0xa8, 0xbc, 0x1a, 0x43, - 0x12, 0x91, 0xed, 0xcd, 0xcc, 0xba, 0x9a, 0x99, 0x08, 0x01, 0x21, 0x11, 0x23, 0x82, 0x99, 0x88, - 0x73, 0x34, 0x01, 0x00, 0x31, 0x24, 0x01, 0x31, 0x47, 0x02, 0xea, 0xbc, 0x9a, 0x31, 0x35, 0x23, - 0x12, 0x32, 0x46, 0x12, 0x98, 0x9a, 0x8a, 0x30, 0x34, 0x22, 0xb1, 0xef, 0xbd, 0xac, 0xbb, 0xaa, - 0x89, 0x00, 0x11, 0x31, 0x43, 0x03, 0x99, 0x19, 0x44, 0x24, 0x12, 0x11, 0x53, 0x23, 0x80, 0x40, - 0x46, 0x23, 0xc8, 0xbd, 0xab, 0x18, 0x53, 0x23, 0x11, 0x52, 0x34, 0x13, 0x81, 0xaa, 0xa9, 0x09, - 0x52, 0x34, 0x02, 0xea, 0xdd, 0xbc, 0xac, 0xba, 0xa9, 0x88, 0x08, 0x21, 0x24, 0x02, 0x88, 0x19, - 0x42, 0x33, 0x11, 0x63, 0x43, 0x13, 0x80, 0x30, 0x57, 0x23, 0x90, 0xdc, 0xab, 0x08, 0x21, 0x13, - 0x12, 0x44, 0x35, 0x14, 0x11, 0x88, 0xa9, 0x8a, 0x21, 0x35, 0x14, 0x91, 0xec, 0xdc, 0xbb, 0xac, - 0x9a, 0x9a, 0x89, 0x10, 0x32, 0x02, 0xa8, 0x18, 0x33, 0x03, 0x10, 0x64, 0x35, 0x12, 0x88, 0x18, - 0x74, 0x34, 0x82, 0xdb, 0xbb, 0x8a, 0x20, 0x11, 0x10, 0x54, 0x44, 0x33, 0x23, 0x81, 0xa8, 0xab, - 0x29, 0x35, 0x34, 0x22, 0xc0, 0xef, 0xbb, 0xac, 0xab, 0xbb, 0x9b, 0x18, 0x21, 0x02, 0x88, 0x10, - 0x34, 0x00, 0x18, 0x55, 0x34, 0x13, 0x88, 0x09, 0x74, 0x25, 0x12, 0xb9, 0xac, 0x8a, 0x88, 0x08, - 0x10, 0x52, 0x54, 0x43, 0x33, 0x12, 0x98, 0xaa, 0x88, 0x41, 0x44, 0x33, 0x01, 0xec, 0xbd, 0xbb, - 0xbd, 0xcb, 0xaa, 0x88, 0x01, 0x80, 0x00, 0x20, 0x22, 0x01, 0x08, 0x72, 0x35, 0x12, 0x90, 0x89, - 0x71, 0x35, 0x13, 0x98, 0xbb, 0xbb, 0x9a, 0xaa, 0x89, 0x42, 0x64, 0x54, 0x33, 0x22, 0x00, 0xa9, - 0x9b, 0x18, 0x73, 0x34, 0x02, 0xb8, 0xbe, 0xbc, 0xcc, 0xbc, 0xbb, 0x89, 0x88, 0x88, 0x00, 0x11, - 0x22, 0x91, 0x89, 0x62, 0x36, 0x14, 0x98, 0x9a, 0x41, 0x36, 0x33, 0x80, 0xaa, 0xba, 0xbb, 0xac, - 0x9a, 0x8a, 0x72, 0x54, 0x34, 0x33, 0x12, 0x90, 0xbb, 0x8a, 0x63, 0x44, 0x12, 0x90, 0xa9, 0xdb, - 0xdd, 0xcb, 0xab, 0x9a, 0x99, 0x99, 0x08, 0x11, 0x22, 0x00, 0x9a, 0x68, 0x36, 0x14, 0x90, 0x99, - 0x30, 0x36, 0x24, 0x12, 0x98, 0xaa, 0xb9, 0xbb, 0xbc, 0xac, 0x18, 0x46, 0x35, 0x34, 0x22, 0x01, - 0xaa, 0xab, 0x30, 0x37, 0x13, 0x12, 0x00, 0xb9, 0xef, 0xdb, 0xab, 0xaa, 0xaa, 0xa9, 0x89, 0x28, - 0x21, 0x90, 0xaa, 0x28, 0x67, 0x13, 0x91, 0x9a, 0x10, 0x44, 0x34, 0x22, 0x01, 0x99, 0x99, 0xba, - 0xdc, 0xab, 0x0a, 0x51, 0x45, 0x34, 0x34, 0x12, 0xa9, 0xaa, 0x18, 0x44, 0x32, 0x22, 0x24, 0x82, - 0xfb, 0xdc, 0xbb, 0xac, 0xaa, 0xaa, 0x9a, 0x10, 0x21, 0x90, 0xac, 0x19, 0x55, 0x33, 0x81, 0x99, - 0x09, 0x53, 0x44, 0x33, 0x12, 0x08, 0x08, 0xa9, 0xbd, 0xbd, 0x9b, 0x18, 0x52, 0x46, 0x34, 0x12, - 0x90, 0x9a, 0x19, 0x22, 0x23, 0x44, 0x53, 0x22, 0xa8, 0xce, 0xcc, 0xba, 0xcb, 0xba, 0xab, 0x18, - 0x11, 0x90, 0xbb, 0x09, 0x54, 0x34, 0x12, 0x98, 0x99, 0x31, 0x46, 0x33, 0x23, 0x02, 0x01, 0xa1, - 0xec, 0xab, 0xbb, 0xbb, 0x29, 0x57, 0x35, 0x23, 0x80, 0x98, 0x09, 0x18, 0x12, 0x32, 0x47, 0x24, - 0x81, 0xca, 0xcc, 0xbb, 0xcc, 0xcb, 0xaa, 0x88, 0x11, 0x90, 0xaa, 0x8a, 0x31, 0x45, 0x13, 0x80, - 0x9a, 0x10, 0x54, 0x34, 0x32, 0x32, 0x23, 0x80, 0xb9, 0xbd, 0xbc, 0xcd, 0x8b, 0x61, 0x44, 0x23, - 0x01, 0x80, 0x00, 0x08, 0x10, 0x31, 0x56, 0x43, 0x12, 0xa8, 0xcb, 0xdb, 0xcc, 0xdb, 0x9b, 0x89, - 0x80, 0x80, 0xa9, 0xaa, 0x10, 0x42, 0x24, 0x81, 0xaa, 0x19, 0x53, 0x43, 0x53, 0x23, 0x23, 0x01, - 0x98, 0x88, 0xdc, 0xcd, 0xaa, 0x28, 0x36, 0x34, 0x12, 0x02, 0x01, 0x00, 0x08, 0x28, 0x74, 0x44, - 0x12, 0x80, 0x99, 0xb9, 0xde, 0xbc, 0xcb, 0x99, 0x88, 0x90, 0xa9, 0x9a, 0x89, 0x31, 0x24, 0x01, - 0x99, 0x89, 0x52, 0x43, 0x53, 0x35, 0x22, 0x11, 0x11, 0x01, 0xb8, 0xdf, 0xbb, 0x0a, 0x52, 0x24, - 0x23, 0x22, 0x12, 0x00, 0x99, 0x0a, 0x73, 0x46, 0x12, 0x01, 0x01, 0x98, 0xdc, 0xcd, 0xbb, 0x9b, - 0x99, 0x88, 0xb9, 0xcb, 0x8a, 0x21, 0x33, 0x03, 0xa9, 0x08, 0x30, 0x63, 0x45, 0x44, 0x22, 0x02, - 0x22, 0x33, 0x92, 0xdd, 0xbc, 0x9b, 0x31, 0x44, 0x24, 0x33, 0x33, 0x03, 0xb8, 0x8a, 0x72, 0x44, - 0x23, 0x32, 0x32, 0x02, 0xfa, 0xcd, 0xac, 0xbb, 0x99, 0x98, 0xb9, 0xbc, 0x9b, 0x18, 0x21, 0x00, - 0x80, 0x98, 0x8a, 0x30, 0x66, 0x34, 0x14, 0x11, 0x22, 0x34, 0x02, 0xda, 0xbd, 0xbb, 0x0a, 0x42, - 0x32, 0x54, 0x24, 0x12, 0x98, 0x9a, 0x20, 0x44, 0x33, 0x44, 0x33, 0x24, 0x90, 0xdd, 0xbc, 0xbc, - 0xa9, 0x98, 0xa9, 0xcc, 0x9a, 0x89, 0x00, 0x00, 0x01, 0x80, 0x99, 0x19, 0x54, 0x44, 0x23, 0x21, - 0x42, 0x44, 0x22, 0xa0, 0xeb, 0xba, 0x89, 0x08, 0x31, 0x45, 0x45, 0x12, 0x80, 0x89, 0x08, 0x22, - 0x42, 0x43, 0x35, 0x34, 0x02, 0xb9, 0xcf, 0xac, 0x9a, 0x99, 0xaa, 0xbb, 0xbc, 0x8a, 0x89, 0x08, - 0x11, 0x81, 0xba, 0x8b, 0x73, 0x34, 0x24, 0x12, 0x42, 0x44, 0x34, 0x80, 0xaa, 0xbc, 0xab, 0xaa, - 0x89, 0x64, 0x35, 0x14, 0x01, 0x89, 0x00, 0x01, 0x12, 0x63, 0x53, 0x34, 0x24, 0x91, 0xdb, 0xbc, - 0xbb, 0x9a, 0xab, 0xcc, 0xba, 0xab, 0xa9, 0x88, 0x11, 0x81, 0xcb, 0x9b, 0x31, 0x46, 0x23, 0x22, - 0x52, 0x45, 0x24, 0x02, 0x98, 0xa9, 0xca, 0xcb, 0x8a, 0x30, 0x37, 0x34, 0x01, 0x00, 0x80, 0x11, - 0x11, 0x21, 0x64, 0x55, 0x33, 0x02, 0xc9, 0xcb, 0xbb, 0xab, 0xbb, 0xbc, 0xbc, 0xcb, 0xaa, 0x89, - 0x18, 0x80, 0xaa, 0xac, 0x29, 0x34, 0x24, 0x11, 0x52, 0x46, 0x34, 0x12, 0x80, 0x88, 0xba, 0xcd, - 0xab, 0x18, 0x44, 0x43, 0x12, 0x01, 0x10, 0x11, 0x11, 0x08, 0x61, 0x56, 0x34, 0x13, 0x90, 0xcb, - 0xcb, 0xba, 0xac, 0xba, 0xcb, 0xbc, 0xba, 0x9a, 0x08, 0x80, 0xb9, 0xbb, 0x1a, 0x54, 0x12, 0x80, - 0x41, 0x46, 0x35, 0x22, 0x11, 0x11, 0xa8, 0xdd, 0xab, 0x89, 0x31, 0x53, 0x23, 0x12, 0x11, 0x22, - 0x81, 0xb9, 0x39, 0x77, 0x27, 0x13, 0x01, 0x99, 0xba, 0xac, 0xbb, 0xcb, 0xca, 0xbc, 0xac, 0x9a, - 0x89, 0x88, 0xa8, 0xbb, 0x1a, 0x43, 0x12, 0x99, 0x30, 0x67, 0x43, 0x32, 0x43, 0x22, 0x81, 0xda, - 0xbc, 0x9a, 0x18, 0x42, 0x32, 0x23, 0x42, 0x33, 0x02, 0xda, 0x8b, 0x73, 0x37, 0x33, 0x22, 0x88, - 0xba, 0xcb, 0xac, 0xbb, 0xdb, 0xbc, 0xbc, 0xbb, 0x89, 0x88, 0xaa, 0xac, 0x89, 0x33, 0x81, 0xba, - 0x28, 0x47, 0x34, 0x34, 0x34, 0x34, 0x12, 0xb0, 0xcd, 0xbb, 0x89, 0x11, 0x23, 0x33, 0x35, 0x35, - 0x03, 0xb9, 0xbb, 0x60, 0x55, 0x43, 0x22, 0x02, 0x98, 0xba, 0xcb, 0xba, 0xcb, 0xbd, 0xae, 0xab, - 0x99, 0x99, 0xb9, 0xac, 0x89, 0x11, 0x91, 0xa9, 0x19, 0x53, 0x44, 0x43, 0x44, 0x34, 0x23, 0x91, - 0xda, 0xbb, 0x9a, 0x10, 0x11, 0x22, 0x55, 0x34, 0x23, 0x98, 0xab, 0x29, 0x55, 0x44, 0x34, 0x12, - 0x01, 0x99, 0xab, 0xbb, 0xca, 0xdc, 0xcc, 0xbb, 0xa9, 0xa8, 0xbb, 0xbc, 0x99, 0x10, 0x88, 0x9a, - 0x89, 0x32, 0x35, 0x53, 0x45, 0x44, 0x33, 0x12, 0xa9, 0xbc, 0x9b, 0x88, 0x80, 0x19, 0x73, 0x45, - 0x22, 0x80, 0xa9, 0x9a, 0x41, 0x45, 0x44, 0x33, 0x11, 0x80, 0xa9, 0x9a, 0xa9, 0xdc, 0xbe, 0xbb, - 0xaa, 0xa9, 0xbc, 0xbb, 0x9a, 0x88, 0x88, 0xaa, 0x8a, 0x21, 0x22, 0x42, 0x57, 0x54, 0x43, 0x12, - 0x90, 0xaa, 0x9b, 0x88, 0xb9, 0x9b, 0x50, 0x55, 0x23, 0x02, 0xa9, 0xab, 0x19, 0x55, 0x45, 0x24, - 0x23, 0x81, 0x88, 0x88, 0x98, 0xea, 0xcc, 0xbb, 0xab, 0xaa, 0xdb, 0xab, 0x9b, 0x99, 0x99, 0x9a, - 0x8a, 0x08, 0x11, 0x08, 0x72, 0x47, 0x44, 0x23, 0x00, 0x99, 0x98, 0x88, 0xa9, 0xac, 0x19, 0x54, - 0x34, 0x22, 0xa0, 0xbb, 0x9b, 0x41, 0x47, 0x35, 0x24, 0x02, 0x00, 0x00, 0x81, 0xb9, 0xbf, 0xac, - 0xab, 0xaa, 0xdb, 0xba, 0xaa, 0xa9, 0xaa, 0xa9, 0x9a, 0x88, 0x01, 0xb8, 0x8b, 0x77, 0x45, 0x23, - 0x11, 0x88, 0x88, 0x90, 0xa9, 0xbc, 0x8a, 0x52, 0x35, 0x24, 0x81, 0xa9, 0xbb, 0x0a, 0x73, 0x37, - 0x24, 0x12, 0x01, 0x21, 0x12, 0xa8, 0xcd, 0xcb, 0xab, 0xbb, 0xbc, 0xcb, 0xaa, 0xba, 0xba, 0xba, - 0xaa, 0x09, 0x01, 0xc9, 0xad, 0x61, 0x46, 0x33, 0x12, 0x11, 0x00, 0x80, 0xb9, 0xdc, 0xaa, 0x20, - 0x44, 0x33, 0x13, 0x90, 0xbd, 0xac, 0x20, 0x47, 0x24, 0x13, 0x12, 0x32, 0x24, 0x80, 0xba, 0xbd, - 0xcb, 0xcb, 0xcb, 0xbb, 0xbb, 0xab, 0xcb, 0xac, 0xaa, 0x88, 0x01, 0xb8, 0xbd, 0x29, 0x47, 0x34, - 0x23, 0x22, 0x12, 0x02, 0xa8, 0xcc, 0xbb, 0x08, 0x52, 0x53, 0x24, 0x02, 0xc9, 0xcb, 0x09, 0x62, - 0x34, 0x22, 0x22, 0x34, 0x24, 0x01, 0xa8, 0xca, 0xdb, 0xbb, 0xcc, 0xbb, 0xac, 0xaa, 0xba, 0xbc, - 0xaa, 0x09, 0x11, 0xb8, 0xbe, 0x89, 0x62, 0x34, 0x24, 0x23, 0x23, 0x22, 0x81, 0xca, 0xbb, 0xaa, - 0x18, 0x55, 0x44, 0x13, 0xb8, 0xbd, 0x9b, 0x31, 0x45, 0x32, 0x42, 0x43, 0x34, 0x22, 0x00, 0xa9, - 0xca, 0xdb, 0xdb, 0xbb, 0xac, 0xaa, 0xba, 0xbd, 0x9b, 0x09, 0x01, 0xa8, 0xcc, 0xaa, 0x28, 0x44, - 0x34, 0x34, 0x43, 0x23, 0x11, 0x98, 0xb9, 0xbb, 0xab, 0x60, 0x46, 0x23, 0x91, 0xcc, 0xaa, 0x10, - 0x33, 0x43, 0x34, 0x44, 0x34, 0x33, 0x11, 0x80, 0xa9, 0xdb, 0xcc, 0xbc, 0xbb, 0xab, 0xdb, 0xbc, - 0xab, 0x88, 0x00, 0xa0, 0xca, 0xac, 0x09, 0x31, 0x34, 0x35, 0x45, 0x32, 0x21, 0x00, 0x90, 0xca, - 0xbb, 0x09, 0x65, 0x43, 0x81, 0xb9, 0x9c, 0x09, 0x11, 0x22, 0x44, 0x44, 0x53, 0x33, 0x12, 0x01, - 0x00, 0xa8, 0xdc, 0xbc, 0xbb, 0xbb, 0xeb, 0xbc, 0xac, 0x99, 0x80, 0x88, 0xb9, 0xbb, 0x9a, 0x18, - 0x31, 0x55, 0x35, 0x24, 0x23, 0x23, 0x11, 0xb9, 0xcc, 0x8a, 0x72, 0x34, 0x02, 0xa8, 0xaa, 0x89, - 0x00, 0x20, 0x52, 0x45, 0x44, 0x33, 0x23, 0x12, 0x12, 0x81, 0xdb, 0xbd, 0xac, 0xbb, 0xdb, 0xbc, - 0xbc, 0xaa, 0x88, 0x98, 0xa9, 0xbb, 0xab, 0xaa, 0x18, 0x73, 0x44, 0x43, 0x33, 0x43, 0x33, 0xa0, - 0xdc, 0x9a, 0x21, 0x35, 0x23, 0x90, 0xba, 0x9a, 0x89, 0x89, 0x28, 0x57, 0x35, 0x25, 0x22, 0x22, - 0x22, 0x02, 0xb8, 0xcd, 0xba, 0xbb, 0xcc, 0xdc, 0xbb, 0xab, 0x99, 0x98, 0xaa, 0xaa, 0xbb, 0xac, - 0x8a, 0x38, 0x45, 0x34, 0x34, 0x45, 0x23, 0x82, 0xca, 0x9b, 0x18, 0x34, 0x24, 0x01, 0x99, 0x89, - 0x98, 0xa8, 0x8a, 0x73, 0x47, 0x33, 0x23, 0x34, 0x33, 0x23, 0x90, 0xda, 0xab, 0xab, 0xcc, 0xdd, - 0xbb, 0xac, 0x99, 0x98, 0x99, 0xa9, 0xb9, 0xdb, 0xaa, 0x08, 0x31, 0x42, 0x63, 0x54, 0x24, 0x02, - 0xa8, 0xbb, 0x0a, 0x41, 0x33, 0x02, 0x80, 0x89, 0x88, 0xcb, 0xac, 0x40, 0x46, 0x43, 0x43, 0x43, - 0x43, 0x33, 0x01, 0xb8, 0xaa, 0xa9, 0xeb, 0xcd, 0xbc, 0xac, 0x9a, 0x99, 0x99, 0x98, 0xa9, 0xcb, - 0xac, 0x09, 0x00, 0x08, 0x40, 0x47, 0x44, 0x12, 0x98, 0xaa, 0x8a, 0x21, 0x33, 0x14, 0x11, 0x11, - 0x01, 0xb9, 0xad, 0x19, 0x45, 0x43, 0x53, 0x53, 0x53, 0x43, 0x11, 0x88, 0x89, 0x89, 0xb9, 0xcd, - 0xbd, 0xbb, 0xbb, 0xab, 0x9a, 0x99, 0xa9, 0xcc, 0xac, 0x99, 0x88, 0xaa, 0x19, 0x57, 0x44, 0x23, - 0x01, 0xaa, 0x9b, 0x10, 0x22, 0x32, 0x32, 0x24, 0x02, 0xb9, 0xbe, 0x9b, 0x31, 0x34, 0x44, 0x45, - 0x36, 0x34, 0x22, 0x00, 0x89, 0x80, 0xa8, 0xdc, 0xcc, 0xbb, 0xcb, 0xba, 0x99, 0x89, 0x98, 0xcb, - 0xab, 0x9a, 0xa8, 0xcc, 0x9a, 0x62, 0x46, 0x33, 0x02, 0xa8, 0x9a, 0x18, 0x11, 0x21, 0x53, 0x33, - 0x23, 0x81, 0xcc, 0xab, 0x00, 0x11, 0x21, 0x66, 0x55, 0x43, 0x23, 0x11, 0x00, 0x00, 0xa8, 0xda, - 0xbc, 0xbc, 0xbd, 0xcb, 0x8a, 0x89, 0x88, 0xaa, 0xab, 0x89, 0xa9, 0xcd, 0xac, 0x09, 0x45, 0x25, - 0x13, 0x88, 0x99, 0x88, 0x08, 0x10, 0x32, 0x45, 0x22, 0x80, 0xb9, 0xab, 0x89, 0x90, 0xac, 0x69, - 0x57, 0x44, 0x32, 0x12, 0x11, 0x11, 0x80, 0xba, 0xdb, 0xcc, 0xbc, 0xbc, 0xaa, 0x88, 0x99, 0xab, - 0x9b, 0x89, 0x90, 0xfb, 0xbd, 0x8b, 0x51, 0x44, 0x22, 0x11, 0x88, 0x88, 0x80, 0x88, 0x30, 0x54, - 0x43, 0x01, 0x90, 0x8a, 0x08, 0xa8, 0xcc, 0x0b, 0x75, 0x34, 0x34, 0x32, 0x22, 0x22, 0x00, 0x98, - 0xbb, 0xdd, 0xdc, 0xbb, 0xaa, 0x9a, 0xa9, 0xbb, 0xab, 0x0a, 0x10, 0xfa, 0xcd, 0x9b, 0x28, 0x34, - 0x24, 0x22, 0x00, 0x00, 0x98, 0x99, 0x19, 0x73, 0x34, 0x13, 0x08, 0x88, 0x11, 0xa1, 0xdd, 0xab, - 0x51, 0x45, 0x34, 0x33, 0x43, 0x22, 0x11, 0x00, 0x88, 0xda, 0xdd, 0xcb, 0xba, 0x9a, 0x9a, 0xbb, - 0xac, 0x08, 0x10, 0xb0, 0xed, 0xab, 0x09, 0x32, 0x25, 0x33, 0x23, 0x21, 0x00, 0xa8, 0x8b, 0x73, - 0x34, 0x23, 0x80, 0x18, 0x32, 0x91, 0xdd, 0xbc, 0x28, 0x54, 0x34, 0x35, 0x43, 0x22, 0x11, 0x12, - 0x12, 0xa8, 0xec, 0xcc, 0xba, 0xaa, 0xaa, 0xcb, 0xab, 0x8a, 0x11, 0x90, 0xdc, 0xbc, 0x9b, 0x18, - 0x22, 0x34, 0x34, 0x33, 0x01, 0xa8, 0x9b, 0x51, 0x45, 0x12, 0x00, 0x20, 0x43, 0x82, 0xeb, 0xac, - 0x8a, 0x31, 0x45, 0x45, 0x33, 0x24, 0x21, 0x22, 0x33, 0x02, 0xd9, 0xcd, 0xac, 0xaa, 0xaa, 0xbc, - 0xac, 0x99, 0x01, 0x00, 0xba, 0xdc, 0xaa, 0x99, 0x00, 0x22, 0x44, 0x43, 0x12, 0x98, 0x89, 0x38, - 0x44, 0x12, 0x98, 0x31, 0x35, 0x03, 0xda, 0xbc, 0xab, 0x89, 0x72, 0x54, 0x53, 0x32, 0x22, 0x32, - 0x53, 0x12, 0x90, 0xdb, 0xbc, 0xaa, 0xcb, 0xcc, 0xab, 0x9a, 0x08, 0x81, 0xb8, 0xeb, 0xbb, 0x9a, - 0x88, 0x28, 0x63, 0x34, 0x23, 0x91, 0x89, 0x30, 0x34, 0x12, 0x89, 0x50, 0x35, 0x13, 0x90, 0xba, - 0xcd, 0xaa, 0x29, 0x55, 0x45, 0x33, 0x32, 0x33, 0x35, 0x34, 0x01, 0xba, 0xbc, 0xac, 0xcb, 0xcc, - 0xcb, 0x9a, 0x89, 0x80, 0x98, 0xbb, 0xbc, 0xaa, 0x9a, 0x89, 0x72, 0x44, 0x13, 0x81, 0x88, 0x20, - 0x32, 0x81, 0x88, 0x40, 0x45, 0x22, 0x01, 0xa8, 0xdc, 0xbc, 0x8a, 0x41, 0x64, 0x33, 0x23, 0x33, - 0x45, 0x34, 0x11, 0x98, 0xba, 0xaa, 0xcc, 0xbc, 0xae, 0xab, 0x8a, 0x88, 0x88, 0xba, 0xac, 0xba, - 0xba, 0x9c, 0x38, 0x46, 0x33, 0x81, 0x88, 0x31, 0x22, 0x81, 0x88, 0x30, 0x45, 0x24, 0x12, 0x91, - 0xdc, 0xcc, 0xbb, 0x18, 0x45, 0x34, 0x33, 0x33, 0x36, 0x35, 0x22, 0x00, 0x98, 0x99, 0xc9, 0xcc, - 0xcd, 0xba, 0x8a, 0x09, 0x89, 0xa9, 0xaa, 0xba, 0xdc, 0xab, 0x19, 0x63, 0x23, 0x02, 0x00, 0x21, - 0x22, 0x21, 0x20, 0x21, 0x52, 0x54, 0x33, 0x22, 0xa1, 0xcf, 0xbc, 0x89, 0x32, 0x35, 0x32, 0x42, - 0x36, 0x35, 0x22, 0x02, 0x80, 0x80, 0xa8, 0xdc, 0xbe, 0xac, 0x9b, 0x99, 0x89, 0x99, 0x89, 0xa9, - 0xdc, 0xab, 0x0a, 0x32, 0x25, 0x22, 0x21, 0x12, 0x22, 0x11, 0x11, 0x20, 0x53, 0x44, 0x54, 0x23, - 0x12, 0xda, 0xbd, 0x9a, 0x20, 0x23, 0x11, 0x52, 0x46, 0x44, 0x32, 0x11, 0x10, 0x00, 0x00, 0xda, - 0xbe, 0xbd, 0xaa, 0x9a, 0x9a, 0x99, 0x00, 0x80, 0xeb, 0xcb, 0x99, 0x20, 0x32, 0x43, 0x22, 0x23, - 0x23, 0x01, 0x11, 0x10, 0x22, 0x45, 0x45, 0x44, 0x23, 0xb8, 0xcd, 0x9b, 0x18, 0x11, 0x08, 0x18, - 0x65, 0x45, 0x32, 0x22, 0x11, 0x11, 0x21, 0xa8, 0xcf, 0xbc, 0xbb, 0xbb, 0xbb, 0x9b, 0x18, 0x81, - 0xeb, 0xcc, 0x9a, 0x09, 0x10, 0x22, 0x32, 0x32, 0x24, 0x12, 0x01, 0x11, 0x02, 0x08, 0x75, 0x47, - 0x23, 0x81, 0xca, 0xaa, 0x08, 0x12, 0x80, 0x8a, 0x73, 0x45, 0x24, 0x23, 0x12, 0x21, 0x14, 0x81, - 0xeb, 0xbc, 0xbc, 0xbc, 0xbb, 0x9b, 0x88, 0x81, 0xb9, 0xbd, 0xac, 0x99, 0x00, 0x11, 0x32, 0x34, - 0x34, 0x12, 0x22, 0x34, 0x81, 0xaa, 0x70, 0x47, 0x24, 0x11, 0x99, 0xaa, 0x08, 0x01, 0x90, 0x9a, - 0x38, 0x77, 0x43, 0x22, 0x12, 0x23, 0x34, 0x02, 0xb8, 0xcc, 0xcc, 0xdb, 0xab, 0xab, 0x89, 0x80, - 0xa8, 0xcb, 0xbc, 0x9a, 0x8a, 0x89, 0x10, 0x33, 0x33, 0x22, 0x54, 0x43, 0x90, 0xcc, 0x09, 0x56, - 0x34, 0x22, 0x90, 0x99, 0x88, 0x10, 0x90, 0xbc, 0x0b, 0x74, 0x34, 0x33, 0x32, 0x44, 0x24, 0x13, - 0x80, 0xa9, 0xeb, 0xdc, 0xbb, 0xbb, 0x8a, 0x89, 0x98, 0xca, 0xac, 0x9a, 0x9a, 0x99, 0x18, 0x22, - 0x01, 0x10, 0x55, 0x43, 0x90, 0xcc, 0x8b, 0x62, 0x35, 0x33, 0x02, 0x88, 0x08, 0x11, 0xa0, 0xdc, - 0x8b, 0x51, 0x44, 0x23, 0x42, 0x53, 0x33, 0x24, 0x21, 0x00, 0xa9, 0xce, 0xbc, 0xbc, 0xa9, 0x89, - 0x98, 0xaa, 0xbb, 0xba, 0xbb, 0x9b, 0x18, 0x01, 0xba, 0x9c, 0x73, 0x26, 0x81, 0xcb, 0xbb, 0x30, - 0x47, 0x24, 0x11, 0x00, 0x18, 0x11, 0x90, 0xeb, 0xab, 0x20, 0x44, 0x32, 0x34, 0x45, 0x43, 0x32, - 0x33, 0x22, 0x81, 0xea, 0xcc, 0xac, 0x9b, 0x9a, 0x99, 0xa9, 0xa9, 0xba, 0xbc, 0xbb, 0x89, 0x90, - 0xeb, 0x9b, 0x20, 0x35, 0x12, 0xea, 0xbc, 0x09, 0x62, 0x24, 0x12, 0x00, 0x20, 0x33, 0x91, 0xfb, - 0xba, 0x08, 0x32, 0x42, 0x44, 0x35, 0x25, 0x33, 0x34, 0x32, 0x22, 0xa0, 0xec, 0xbc, 0xaa, 0xab, - 0xaa, 0x99, 0xa9, 0xba, 0xbd, 0x9c, 0x88, 0x98, 0xca, 0xbb, 0x28, 0x45, 0x23, 0xa0, 0xcd, 0x9b, - 0x31, 0x26, 0x12, 0x01, 0x32, 0x25, 0x02, 0xb9, 0xac, 0x9a, 0x08, 0x11, 0x64, 0x44, 0x34, 0x34, - 0x34, 0x43, 0x33, 0x01, 0xc9, 0xbc, 0xbc, 0xab, 0xac, 0x99, 0x89, 0xaa, 0xbd, 0xaa, 0x99, 0x98, - 0xbc, 0xad, 0x0a, 0x52, 0x24, 0x91, 0xda, 0xaa, 0x28, 0x33, 0x12, 0x18, 0x54, 0x34, 0x12, 0x98, - 0xba, 0xbb, 0xbb, 0x99, 0x41, 0x67, 0x53, 0x32, 0x43, 0x44, 0x33, 0x13, 0x98, 0xcb, 0xbc, 0xcb, - 0xbb, 0x9a, 0x89, 0xb9, 0xbd, 0xbb, 0x9a, 0xb9, 0xcc, 0xcc, 0x9a, 0x31, 0x35, 0x01, 0xc9, 0xab, - 0x19, 0x32, 0x02, 0x20, 0x74, 0x43, 0x22, 0x81, 0x98, 0xba, 0xaa, 0xac, 0x0a, 0x73, 0x35, 0x34, - 0x34, 0x45, 0x43, 0x22, 0x01, 0x98, 0xca, 0xbc, 0xcb, 0xa9, 0x88, 0xa9, 0xcb, 0xbb, 0x9a, 0x99, - 0xdb, 0xdc, 0xaa, 0x10, 0x44, 0x02, 0x98, 0xab, 0x89, 0x11, 0x00, 0x11, 0x62, 0x35, 0x34, 0x01, - 0x80, 0xa8, 0xdb, 0xcb, 0x8a, 0x30, 0x36, 0x23, 0x44, 0x55, 0x43, 0x23, 0x22, 0x81, 0xb8, 0xdc, - 0xba, 0xaa, 0x99, 0x9a, 0xbc, 0xcb, 0x99, 0x89, 0xc9, 0xcd, 0xbb, 0x09, 0x43, 0x12, 0xa0, 0xaa, - 0x99, 0x00, 0x80, 0x08, 0x73, 0x44, 0x24, 0x12, 0x01, 0x81, 0xd9, 0xbc, 0xab, 0x20, 0x24, 0x23, - 0x63, 0x46, 0x34, 0x24, 0x33, 0x23, 0x90, 0xda, 0xcb, 0xaa, 0x9a, 0xaa, 0xdb, 0xcb, 0x99, 0x08, - 0xa9, 0xcd, 0xbc, 0x89, 0x21, 0x23, 0x80, 0x99, 0x09, 0x00, 0x80, 0x18, 0x51, 0x55, 0x33, 0x33, - 0x43, 0x33, 0xc9, 0xcd, 0x9a, 0x18, 0x01, 0x01, 0x31, 0x47, 0x54, 0x43, 0x34, 0x33, 0x12, 0xa9, - 0xbc, 0xcb, 0xaa, 0xb9, 0xdb, 0xbc, 0xaa, 0x00, 0xa8, 0xdc, 0xbc, 0x9a, 0x10, 0x22, 0x00, 0x88, - 0x18, 0x00, 0x00, 0x18, 0x51, 0x35, 0x43, 0x42, 0x44, 0x24, 0x81, 0xbb, 0xab, 0x98, 0x98, 0x99, - 0x19, 0x51, 0x56, 0x45, 0x44, 0x24, 0x22, 0x80, 0xa9, 0xbb, 0xaa, 0xba, 0xcd, 0xcc, 0x8a, 0x08, - 0x80, 0xca, 0xcc, 0x9a, 0x88, 0x01, 0x81, 0x88, 0x10, 0x10, 0x80, 0x08, 0x32, 0x26, 0x22, 0x63, - 0x45, 0x24, 0x01, 0x98, 0x98, 0x88, 0xa8, 0x99, 0x88, 0x09, 0x51, 0x57, 0x55, 0x43, 0x33, 0x02, - 0x98, 0xaa, 0x9a, 0xaa, 0xcd, 0xcc, 0x9a, 0x09, 0x00, 0xc9, 0xbc, 0xbb, 0x99, 0x08, 0x88, 0x88, - 0x00, 0x11, 0x99, 0x29, 0x64, 0x12, 0x88, 0x41, 0x47, 0x34, 0x11, 0x81, 0x88, 0x08, 0x98, 0x9a, - 0xaa, 0xdb, 0x9a, 0x71, 0x65, 0x44, 0x33, 0x23, 0x80, 0xa9, 0x89, 0x99, 0xec, 0xcb, 0xab, 0x89, - 0x80, 0xb8, 0xcd, 0xab, 0xaa, 0x89, 0x99, 0x09, 0x10, 0x01, 0xa8, 0x29, 0x54, 0x13, 0x99, 0x41, - 0x57, 0x43, 0x22, 0x11, 0x01, 0x80, 0x80, 0x90, 0xa9, 0xdb, 0xbc, 0x9a, 0x73, 0x57, 0x43, 0x23, - 0x01, 0x88, 0x08, 0x80, 0xda, 0xcc, 0xbb, 0x99, 0x08, 0xa9, 0xdb, 0xbb, 0xab, 0xab, 0xab, 0x09, - 0x00, 0x80, 0xbb, 0x19, 0x44, 0x02, 0xa9, 0x39, 0x77, 0x26, 0x22, 0x13, 0x11, 0x10, 0x10, 0x80, - 0x98, 0xba, 0xcf, 0xac, 0x19, 0x55, 0x45, 0x23, 0x12, 0x00, 0x10, 0x01, 0xc8, 0xcc, 0xbc, 0x9a, - 0x88, 0x99, 0xcb, 0xab, 0xbb, 0xcb, 0xbb, 0x09, 0x08, 0x98, 0x99, 0x09, 0x42, 0x91, 0xcb, 0x0a, - 0x65, 0x44, 0x34, 0x33, 0x22, 0x11, 0x11, 0x10, 0x11, 0x82, 0xfc, 0xcd, 0x9a, 0x50, 0x45, 0x24, - 0x22, 0x10, 0x21, 0x12, 0x90, 0xeb, 0xbc, 0xaa, 0x99, 0xa9, 0xcb, 0xbb, 0xcb, 0xcb, 0xab, 0x8a, - 0x99, 0xb9, 0xaa, 0x08, 0x22, 0x90, 0xba, 0xbc, 0x51, 0x47, 0x53, 0x33, 0x24, 0x12, 0x00, 0x10, - 0x31, 0x43, 0xa1, 0xee, 0xbb, 0x29, 0x65, 0x24, 0x23, 0x22, 0x22, 0x33, 0x02, 0xda, 0xbd, 0xba, - 0xaa, 0xbb, 0xbb, 0xcb, 0xbc, 0xcc, 0xba, 0x99, 0x98, 0xba, 0xab, 0x89, 0x11, 0x23, 0x81, 0xab, - 0x19, 0x65, 0x45, 0x35, 0x43, 0x12, 0x00, 0x00, 0x30, 0x35, 0x03, 0xfb, 0xbd, 0x89, 0x42, 0x35, - 0x43, 0x22, 0x32, 0x25, 0x12, 0xa8, 0xcb, 0xbb, 0xcb, 0xba, 0xaa, 0xab, 0xcc, 0xcc, 0xba, 0x99, - 0x9a, 0xbb, 0xbc, 0x8a, 0x18, 0x01, 0x88, 0xb9, 0xab, 0x28, 0x65, 0x45, 0x34, 0x33, 0x02, 0x88, - 0x30, 0x46, 0x22, 0xc9, 0xcd, 0x9a, 0x20, 0x35, 0x34, 0x32, 0x53, 0x34, 0x22, 0x80, 0xb9, 0xcb, - 0xcb, 0xbb, 0xaa, 0xa9, 0xdb, 0xbc, 0xcb, 0xaa, 0xa9, 0xba, 0xbc, 0xaa, 0x08, 0x80, 0x00, 0xa8, - 0xdb, 0x9a, 0x18, 0x74, 0x54, 0x33, 0x02, 0x90, 0x20, 0x45, 0x24, 0xa0, 0xcc, 0x9c, 0x18, 0x33, - 0x25, 0x33, 0x54, 0x43, 0x23, 0x12, 0x88, 0xb9, 0xcc, 0xab, 0xaa, 0xa9, 0xba, 0xcd, 0xba, 0xbb, - 0xba, 0xbc, 0xbc, 0xbb, 0x9a, 0x98, 0x08, 0x88, 0xa9, 0xcb, 0xab, 0x40, 0x77, 0x24, 0x12, 0x80, - 0x18, 0x44, 0x34, 0x01, 0xdb, 0xac, 0x09, 0x21, 0x33, 0x43, 0x45, 0x34, 0x24, 0x23, 0x02, 0x98, - 0xca, 0xbc, 0xaa, 0x99, 0xa9, 0xbc, 0xbc, 0xba, 0xac, 0xbb, 0xbc, 0xac, 0x9a, 0x89, 0x89, 0x88, - 0x98, 0xca, 0xbd, 0x8b, 0x73, 0x35, 0x13, 0x90, 0x08, 0x64, 0x34, 0x13, 0xc9, 0xcb, 0x8a, 0x00, - 0x21, 0x32, 0x46, 0x44, 0x33, 0x24, 0x23, 0x00, 0xb9, 0xcc, 0xaa, 0x9a, 0xba, 0xcb, 0xbc, 0xba, - 0xcb, 0xba, 0xbc, 0xbc, 0xaa, 0x89, 0x99, 0x00, 0x11, 0xc8, 0xcd, 0xaa, 0x30, 0x47, 0x13, 0x80, - 0x89, 0x73, 0x34, 0x14, 0x98, 0xba, 0xaa, 0x89, 0x08, 0x10, 0x54, 0x54, 0x43, 0x34, 0x33, 0x22, - 0x98, 0xba, 0xac, 0xaa, 0xbb, 0xcc, 0xbb, 0xcb, 0xba, 0xbb, 0xbd, 0xac, 0xab, 0xab, 0x9a, 0x09, - 0x22, 0xa1, 0xde, 0xcb, 0x08, 0x63, 0x22, 0x80, 0x8a, 0x72, 0x44, 0x33, 0x00, 0xa9, 0xaa, 0xab, - 0x99, 0x09, 0x52, 0x45, 0x44, 0x44, 0x33, 0x23, 0x00, 0x99, 0xaa, 0xba, 0xba, 0xcc, 0xcb, 0xba, - 0xba, 0xcb, 0xdb, 0xbb, 0xcb, 0xba, 0xbb, 0x99, 0x21, 0x91, 0xfb, 0xae, 0x89, 0x32, 0x24, 0x90, - 0xaa, 0x61, 0x45, 0x43, 0x11, 0x88, 0x99, 0xaa, 0xaa, 0x8a, 0x10, 0x53, 0x55, 0x44, 0x34, 0x33, - 0x12, 0x88, 0xa8, 0xa9, 0xb9, 0xdb, 0xcb, 0xab, 0xab, 0xbc, 0xbc, 0xcc, 0xba, 0xbb, 0xac, 0x9a, - 0x10, 0x12, 0xd9, 0xbd, 0x9a, 0x32, 0x25, 0x90, 0xbb, 0x28, 0x57, 0x43, 0x22, 0x01, 0x98, 0xaa, - 0xab, 0xab, 0x9a, 0x18, 0x73, 0x47, 0x44, 0x33, 0x22, 0x01, 0x88, 0x88, 0x98, 0xb9, 0xbc, 0xac, - 0xab, 0xcb, 0xbc, 0xbb, 0xcc, 0xdb, 0xba, 0x9b, 0x18, 0x23, 0xb8, 0xce, 0x9a, 0x21, 0x33, 0x90, - 0xbc, 0x0a, 0x55, 0x35, 0x33, 0x23, 0x02, 0xa9, 0xcb, 0xaa, 0xbb, 0xbc, 0x18, 0x75, 0x54, 0x33, - 0x24, 0x11, 0x00, 0x08, 0x98, 0xaa, 0xcb, 0xab, 0xbb, 0xdb, 0xcb, 0xbb, 0xbb, 0xbe, 0xbd, 0x9b, - 0x19, 0x21, 0x90, 0xcd, 0xaa, 0x20, 0x33, 0x81, 0xca, 0x9b, 0x52, 0x46, 0x43, 0x23, 0x12, 0x90, - 0xa9, 0xb9, 0xcb, 0xbc, 0xab, 0x51, 0x65, 0x34, 0x24, 0x12, 0x02, 0x01, 0x88, 0x99, 0xbb, 0xcb, - 0xab, 0xcb, 0xbc, 0xbb, 0xba, 0xdd, 0xbd, 0xab, 0x09, 0x11, 0x90, 0xcc, 0xab, 0x08, 0x33, 0x02, - 0xb9, 0xab, 0x28, 0x67, 0x34, 0x34, 0x22, 0x01, 0x89, 0xa9, 0xba, 0xcd, 0xbb, 0x09, 0x64, 0x45, - 0x33, 0x33, 0x32, 0x21, 0x00, 0x88, 0xbb, 0xcb, 0xbb, 0xcc, 0xac, 0xab, 0xa9, 0xfb, 0xdc, 0xaa, - 0x89, 0x00, 0x80, 0xcb, 0xbb, 0x0a, 0x11, 0x02, 0x90, 0xcb, 0x8a, 0x61, 0x55, 0x43, 0x22, 0x11, - 0x00, 0x80, 0x98, 0xdb, 0xbc, 0xab, 0x41, 0x56, 0x43, 0x33, 0x33, 0x23, 0x22, 0x80, 0xa8, 0xba, - 0xcb, 0xcc, 0xbc, 0x9a, 0x99, 0xda, 0xbe, 0xbc, 0x8a, 0x18, 0x80, 0xba, 0xad, 0x9a, 0x10, 0x12, - 0x01, 0xa9, 0xcb, 0x29, 0x56, 0x35, 0x23, 0x13, 0x12, 0x10, 0x88, 0xda, 0xcd, 0xbb, 0x09, 0x62, - 0x34, 0x35, 0x42, 0x22, 0x13, 0x02, 0x88, 0x88, 0xaa, 0xcd, 0xcb, 0x9a, 0x88, 0xa9, 0xde, 0xcb, - 0x99, 0x08, 0x80, 0xa8, 0xbb, 0x9c, 0x09, 0x10, 0x02, 0xa0, 0xcc, 0x8a, 0x62, 0x44, 0x43, 0x22, - 0x21, 0x21, 0x12, 0xb8, 0xdd, 0xbc, 0x9a, 0x20, 0x54, 0x53, 0x33, 0x34, 0x33, 0x12, 0x01, 0x01, - 0x98, 0xcc, 0xbd, 0xab, 0x08, 0xa8, 0xdd, 0xbc, 0xab, 0x89, 0x88, 0xa8, 0xcb, 0xbb, 0x9b, 0x08, - 0x22, 0x98, 0xcc, 0xbb, 0x28, 0x47, 0x34, 0x33, 0x33, 0x43, 0x33, 0x82, 0xea, 0xcc, 0xab, 0x09, - 0x42, 0x44, 0x44, 0x34, 0x32, 0x22, 0x11, 0x12, 0x01, 0xea, 0xdb, 0x9a, 0x09, 0x88, 0xdb, 0xbd, - 0xbb, 0x9a, 0x98, 0x99, 0xba, 0xbd, 0x9b, 0x19, 0x11, 0x81, 0xc9, 0xbc, 0x0a, 0x73, 0x25, 0x33, - 0x32, 0x24, 0x24, 0x13, 0xa0, 0xce, 0xab, 0x9a, 0x18, 0x52, 0x54, 0x34, 0x33, 0x33, 0x22, 0x43, - 0x12, 0xb0, 0xcd, 0xab, 0x09, 0x88, 0xda, 0xbd, 0xbc, 0xaa, 0x99, 0x88, 0xba, 0xdb, 0xbb, 0x89, - 0x00, 0x01, 0xb8, 0xcd, 0x9a, 0x30, 0x46, 0x42, 0x22, 0x33, 0x35, 0x33, 0x82, 0xdb, 0xbc, 0xbb, - 0x9a, 0x18, 0x55, 0x35, 0x34, 0x33, 0x32, 0x53, 0x22, 0x90, 0xdb, 0xab, 0x89, 0x90, 0xb9, 0xce, - 0xac, 0xab, 0x9a, 0x88, 0xaa, 0xdb, 0xcb, 0x99, 0x09, 0x01, 0x98, 0xbc, 0xbb, 0x29, 0x64, 0x43, - 0x32, 0x34, 0x35, 0x34, 0x02, 0x98, 0xcb, 0xac, 0xcb, 0x9a, 0x31, 0x46, 0x34, 0x33, 0x43, 0x43, - 0x24, 0x81, 0xa9, 0xba, 0x99, 0x09, 0xa9, 0xec, 0xbc, 0xcb, 0x9a, 0x99, 0x99, 0xcb, 0xcb, 0xab, - 0x8a, 0x80, 0x98, 0xbc, 0xad, 0x8a, 0x22, 0x44, 0x22, 0x34, 0x46, 0x33, 0x23, 0x81, 0xa8, 0xdb, - 0xbc, 0xac, 0x19, 0x53, 0x44, 0x22, 0x43, 0x34, 0x34, 0x12, 0x98, 0xaa, 0x9b, 0x88, 0x98, 0xda, - 0xcd, 0xbc, 0xaa, 0x9a, 0xa9, 0xca, 0xbc, 0xbb, 0x9b, 0x08, 0x80, 0xca, 0xbc, 0x9b, 0x10, 0x43, - 0x32, 0x54, 0x54, 0x34, 0x33, 0x13, 0x01, 0xa9, 0xdc, 0xbc, 0x89, 0x31, 0x35, 0x33, 0x54, 0x53, - 0x24, 0x13, 0x81, 0x99, 0x9a, 0x88, 0x80, 0xb8, 0xcd, 0xcc, 0xab, 0xaa, 0x9a, 0xbb, 0xcd, 0xbb, - 0xab, 0x09, 0x88, 0xb9, 0xbc, 0xab, 0x19, 0x21, 0x10, 0x62, 0x46, 0x35, 0x33, 0x24, 0x21, 0x01, - 0xea, 0xdb, 0x99, 0x18, 0x22, 0x22, 0x53, 0x45, 0x44, 0x22, 0x02, 0x90, 0x99, 0x98, 0x00, 0x80, - 0xda, 0xdc, 0xba, 0xaa, 0xaa, 0xaa, 0xdc, 0xcb, 0xaa, 0x89, 0x88, 0x99, 0xbb, 0xaa, 0x08, 0x01, - 0x88, 0x18, 0x67, 0x44, 0x22, 0x33, 0x35, 0x12, 0xb8, 0xbe, 0xab, 0x09, 0x11, 0x21, 0x43, 0x56, - 0x44, 0x33, 0x23, 0x01, 0x89, 0x09, 0x10, 0x11, 0xb8, 0xdd, 0xcb, 0xbb, 0xa9, 0xb9, 0xcc, 0xcc, - 0xbb, 0x99, 0x89, 0xb9, 0xcb, 0xaa, 0x88, 0x00, 0xa9, 0x09, 0x74, 0x34, 0x43, 0x43, 0x35, 0x33, - 0x90, 0xca, 0xcb, 0x99, 0x00, 0x80, 0x10, 0x64, 0x45, 0x43, 0x33, 0x11, 0x80, 0x09, 0x08, 0x10, - 0x90, 0xeb, 0xcc, 0xbb, 0xaa, 0xba, 0xdb, 0xcc, 0xbb, 0x9a, 0x89, 0xa9, 0xbc, 0xaa, 0x09, 0x98, - 0xaa, 0x8a, 0x72, 0x43, 0x32, 0x55, 0x44, 0x24, 0x01, 0xa8, 0xaa, 0x9a, 0x88, 0x89, 0x8a, 0x40, - 0x66, 0x34, 0x34, 0x22, 0x01, 0x80, 0x00, 0x11, 0x01, 0xc9, 0xdc, 0xcb, 0xaa, 0xa9, 0xca, 0xbc, - 0xbc, 0xab, 0x98, 0xa9, 0xbc, 0xab, 0x89, 0xb9, 0xbc, 0x8a, 0x22, 0x24, 0x43, 0x55, 0x46, 0x33, - 0x23, 0x90, 0xaa, 0x9a, 0xaa, 0xa9, 0xbc, 0x8b, 0x73, 0x46, 0x34, 0x23, 0x12, 0x01, 0x00, 0x21, - 0x21, 0x98, 0xcd, 0xcc, 0xaa, 0x99, 0xba, 0xcd, 0xcb, 0x9a, 0x99, 0xa9, 0xcb, 0x9a, 0x98, 0xba, - 0xac, 0x89, 0x21, 0x11, 0x10, 0x73, 0x57, 0x34, 0x23, 0x01, 0x98, 0x99, 0x89, 0xb9, 0xdb, 0xaa, - 0x18, 0x56, 0x35, 0x43, 0x12, 0x01, 0x10, 0x21, 0x22, 0x01, 0xca, 0xcd, 0xba, 0x99, 0xba, 0xdd, - 0xcb, 0xaa, 0xa9, 0xaa, 0xac, 0x9a, 0x99, 0xbb, 0xac, 0x9a, 0x10, 0x81, 0x99, 0x51, 0x57, 0x35, - 0x24, 0x12, 0x81, 0x80, 0x80, 0x98, 0xca, 0xcb, 0x8a, 0x51, 0x45, 0x34, 0x32, 0x12, 0x01, 0x22, - 0x33, 0x13, 0xa8, 0xce, 0xbb, 0x9a, 0xc9, 0xdc, 0xcb, 0xaa, 0xb9, 0xca, 0xaa, 0xaa, 0xa9, 0xcb, - 0xcb, 0x8a, 0x00, 0x88, 0xba, 0x8a, 0x74, 0x37, 0x34, 0x13, 0x02, 0x00, 0x00, 0x88, 0xba, 0xcd, - 0xbb, 0x08, 0x64, 0x53, 0x33, 0x23, 0x12, 0x32, 0x43, 0x33, 0x91, 0xdb, 0xab, 0x9a, 0xb9, 0xde, - 0xbb, 0xcb, 0xba, 0xbc, 0xba, 0xab, 0xb9, 0xdb, 0xbc, 0x9a, 0x00, 0x90, 0xca, 0xbb, 0x30, 0x77, - 0x43, 0x23, 0x12, 0x11, 0x11, 0x00, 0xa8, 0xcc, 0xcc, 0x8a, 0x20, 0x54, 0x43, 0x23, 0x12, 0x22, - 0x34, 0x34, 0x01, 0xb9, 0xaa, 0x89, 0xb9, 0xec, 0xac, 0xbb, 0xbc, 0xbc, 0xac, 0x9a, 0xaa, 0xbb, - 0xbd, 0xaa, 0x09, 0x80, 0xda, 0xcb, 0x0a, 0x62, 0x45, 0x33, 0x23, 0x13, 0x22, 0x22, 0x80, 0xeb, - 0xcc, 0xab, 0x0a, 0x42, 0x45, 0x23, 0x22, 0x22, 0x35, 0x24, 0x12, 0x98, 0x99, 0x89, 0xa9, 0xdb, - 0xbc, 0xbb, 0xcd, 0xcb, 0xbb, 0xaa, 0xa9, 0xcb, 0xbc, 0xbb, 0x09, 0x80, 0xc9, 0xcd, 0x9a, 0x28, - 0x55, 0x43, 0x23, 0x23, 0x32, 0x32, 0x03, 0xb8, 0xcf, 0xcb, 0x9a, 0x18, 0x53, 0x33, 0x23, 0x43, - 0x44, 0x34, 0x12, 0x80, 0x88, 0x88, 0x98, 0xbb, 0xdb, 0xcb, 0xdb, 0xcc, 0xbb, 0xaa, 0xaa, 0xcb, - 0xcc, 0xaa, 0x99, 0x80, 0xb8, 0xdc, 0xab, 0x09, 0x52, 0x44, 0x33, 0x33, 0x43, 0x43, 0x22, 0x00, - 0xca, 0xcd, 0xab, 0x89, 0x32, 0x34, 0x23, 0x43, 0x45, 0x34, 0x22, 0x00, 0x00, 0x00, 0x88, 0xa9, - 0x9a, 0xba, 0xcd, 0xcd, 0xac, 0xab, 0xa9, 0xca, 0xcb, 0xbb, 0x9a, 0x09, 0xa8, 0xcd, 0xbc, 0x9a, - 0x28, 0x54, 0x43, 0x23, 0x24, 0x24, 0x33, 0x22, 0xa0, 0xec, 0xbb, 0x9b, 0x20, 0x23, 0x23, 0x44, - 0x45, 0x43, 0x23, 0x02, 0x11, 0x00, 0x98, 0x99, 0x98, 0x89, 0xea, 0xdc, 0xcb, 0xab, 0x9a, 0xcb, - 0xcc, 0xab, 0xaa, 0x89, 0x88, 0xdb, 0xcc, 0xab, 0x89, 0x32, 0x35, 0x34, 0x34, 0x34, 0x43, 0x33, - 0x02, 0xda, 0xcc, 0xaa, 0x08, 0x10, 0x10, 0x31, 0x55, 0x43, 0x33, 0x23, 0x21, 0x11, 0x80, 0x98, - 0x89, 0x80, 0xb8, 0xdf, 0xcb, 0xbb, 0xaa, 0xcb, 0xdc, 0xbb, 0xab, 0x8a, 0x88, 0xb9, 0xce, 0xbb, - 0x9a, 0x10, 0x53, 0x44, 0x23, 0x34, 0x34, 0x35, 0x22, 0xa8, 0xcc, 0xaa, 0x8a, 0x88, 0x88, 0x10, - 0x63, 0x44, 0x33, 0x33, 0x23, 0x22, 0x00, 0x99, 0x89, 0x10, 0x90, 0xde, 0xbc, 0xac, 0xaa, 0xca, - 0xcc, 0xbc, 0xac, 0x8a, 0x88, 0x99, 0xbc, 0xcc, 0xaa, 0x89, 0x10, 0x34, 0x33, 0x53, 0x54, 0x44, - 0x22, 0x81, 0xb9, 0xab, 0x9b, 0x99, 0xa9, 0x0a, 0x52, 0x45, 0x34, 0x43, 0x33, 0x23, 0x12, 0x80, - 0x08, 0x20, 0x01, 0xda, 0xbd, 0xbc, 0xba, 0xca, 0xcc, 0xcd, 0xab, 0xaa, 0x88, 0x99, 0xca, 0xcc, - 0xba, 0x9b, 0x18, 0x32, 0x23, 0x32, 0x67, 0x44, 0x33, 0x12, 0x98, 0xaa, 0xaa, 0xa9, 0xbb, 0x9b, - 0x30, 0x55, 0x44, 0x43, 0x43, 0x32, 0x12, 0x81, 0x00, 0x11, 0x81, 0xa9, 0xdc, 0xbb, 0x9c, 0xa9, - 0xfb, 0xcc, 0xcb, 0x9a, 0x99, 0x88, 0xa9, 0xbc, 0xbd, 0xab, 0x89, 0x21, 0x01, 0x10, 0x73, 0x57, - 0x32, 0x13, 0x81, 0x98, 0x99, 0xa9, 0xcb, 0xaa, 0x89, 0x31, 0x63, 0x34, 0x35, 0x34, 0x22, 0x01, - 0x01, 0x11, 0x12, 0x80, 0xcb, 0xcc, 0x9a, 0x89, 0xdb, 0xce, 0xbb, 0xac, 0x99, 0x89, 0x88, 0xca, - 0xcd, 0xbb, 0x8a, 0x08, 0x80, 0x89, 0x40, 0x67, 0x43, 0x23, 0x12, 0x00, 0x98, 0xa8, 0xba, 0xac, - 0x99, 0x18, 0x21, 0x45, 0x45, 0x33, 0x33, 0x12, 0x11, 0x21, 0x32, 0x81, 0xda, 0xbc, 0xab, 0xa9, - 0xfa, 0xcc, 0xbc, 0xac, 0xab, 0x99, 0x88, 0xc9, 0xcd, 0xcb, 0x9a, 0x88, 0x88, 0x9a, 0x1a, 0x64, - 0x45, 0x23, 0x22, 0x02, 0x81, 0x90, 0xb9, 0xab, 0x9b, 0x89, 0x20, 0x64, 0x54, 0x43, 0x32, 0x12, - 0x11, 0x12, 0x23, 0x03, 0xb8, 0xad, 0xaa, 0x89, 0xca, 0xdd, 0xcc, 0xac, 0xbb, 0x9a, 0x88, 0xb9, - 0xed, 0xbb, 0xab, 0x99, 0x99, 0xbb, 0x9b, 0x72, 0x45, 0x43, 0x23, 0x23, 0x12, 0x80, 0x99, 0xba, - 0xaa, 0x9a, 0x09, 0x41, 0x56, 0x44, 0x32, 0x22, 0x12, 0x21, 0x33, 0x14, 0x90, 0xba, 0xaa, 0x9a, - 0xba, 0xec, 0xcd, 0xbd, 0xbc, 0x9a, 0x88, 0xa8, 0xdc, 0xcc, 0xaa, 0x89, 0x99, 0xaa, 0xbb, 0x18, - 0x55, 0x34, 0x34, 0x32, 0x33, 0x11, 0x88, 0x99, 0xaa, 0xaa, 0x9a, 0x18, 0x65, 0x45, 0x33, 0x33, - 0x22, 0x32, 0x34, 0x24, 0x00, 0x99, 0x98, 0x88, 0x09, 0xa9, 0xfd, 0xdc, 0xcb, 0x9a, 0x09, 0x98, - 0xdb, 0xbd, 0xbb, 0x9a, 0xa9, 0xdb, 0xbb, 0x9a, 0x31, 0x55, 0x43, 0x43, 0x23, 0x13, 0x01, 0x88, - 0x99, 0xaa, 0xbb, 0xab, 0x40, 0x47, 0x25, 0x23, 0x22, 0x22, 0x34, 0x23, 0x13, 0x80, 0x88, 0x99, - 0x18, 0x22, 0xc8, 0xff, 0xbd, 0xaa, 0x88, 0x90, 0xd9, 0xcc, 0xab, 0xaa, 0xa9, 0xbc, 0xcb, 0x9b, - 0x09, 0x41, 0x44, 0x34, 0x43, 0x23, 0x12, 0x11, 0x08, 0xa9, 0xbb, 0xbc, 0x0b, 0x73, 0x35, 0x23, - 0x23, 0x43, 0x33, 0x24, 0x23, 0x00, 0x80, 0x89, 0x08, 0x44, 0x12, 0xfc, 0xbd, 0xbb, 0x8a, 0x80, - 0xb9, 0xbf, 0xbc, 0xaa, 0xb9, 0xcb, 0xcc, 0xaa, 0x9a, 0x08, 0x42, 0x44, 0x34, 0x33, 0x33, 0x22, - 0x11, 0x80, 0xda, 0xbc, 0xab, 0x20, 0x45, 0x43, 0x32, 0x32, 0x34, 0x33, 0x24, 0x11, 0x81, 0xa9, - 0x18, 0x54, 0x24, 0xa8, 0xcf, 0xbb, 0x9a, 0x80, 0xb8, 0xcc, 0xbc, 0xab, 0xba, 0xbc, 0xcd, 0xba, - 0xab, 0x8a, 0x30, 0x63, 0x44, 0x33, 0x33, 0x32, 0x22, 0x12, 0xc8, 0xcc, 0xab, 0x89, 0x42, 0x43, - 0x33, 0x34, 0x34, 0x33, 0x43, 0x32, 0x80, 0x99, 0x09, 0x54, 0x35, 0x81, 0xdc, 0xbc, 0x99, 0x89, - 0xa8, 0xcb, 0xcc, 0xaa, 0xab, 0xbc, 0xcc, 0xbb, 0xbc, 0xaa, 0x88, 0x41, 0x53, 0x34, 0x24, 0x32, - 0x33, 0x32, 0x01, 0xca, 0xac, 0x9a, 0x10, 0x43, 0x53, 0x33, 0x34, 0x32, 0x44, 0x33, 0x02, 0x98, - 0x89, 0x63, 0x35, 0x03, 0xc9, 0xbd, 0xaa, 0x99, 0xa8, 0xcb, 0xbc, 0xbc, 0xba, 0xdb, 0xdb, 0xcb, - 0xac, 0xab, 0x9b, 0x08, 0x42, 0x44, 0x33, 0x24, 0x24, 0x33, 0x12, 0xa8, 0xcb, 0xba, 0x8a, 0x20, - 0x34, 0x35, 0x33, 0x43, 0x63, 0x33, 0x14, 0x88, 0x8a, 0x40, 0x35, 0x23, 0xa0, 0xbd, 0x9c, 0x9a, - 0x98, 0xbb, 0xbd, 0xbc, 0xbb, 0xdb, 0xdb, 0xcb, 0xbc, 0xbc, 0xab, 0x8a, 0x10, 0x43, 0x34, 0x43, - 0x34, 0x35, 0x12, 0x01, 0x99, 0xaa, 0xaa, 0x08, 0x32, 0x36, 0x22, 0x33, 0x55, 0x34, 0x23, 0x91, - 0x99, 0x30, 0x46, 0x23, 0x81, 0xca, 0xba, 0xaa, 0xaa, 0xcb, 0xbd, 0xdb, 0xaa, 0xcb, 0xbb, 0xbd, - 0xbd, 0xcc, 0xbb, 0xaa, 0x08, 0x11, 0x33, 0x44, 0x44, 0x34, 0x23, 0x22, 0x80, 0xa8, 0xba, 0x9a, - 0x20, 0x34, 0x23, 0x32, 0x56, 0x45, 0x23, 0x01, 0x89, 0x18, 0x44, 0x43, 0x11, 0x99, 0xaa, 0xab, - 0xb9, 0xda, 0xbc, 0xcb, 0xbb, 0xbc, 0xcb, 0xcc, 0xbc, 0xbd, 0xcc, 0xaa, 0x89, 0x88, 0x10, 0x31, - 0x63, 0x34, 0x43, 0x23, 0x01, 0x80, 0xaa, 0xaa, 0x08, 0x21, 0x12, 0x10, 0x75, 0x35, 0x25, 0x02, - 0x80, 0x00, 0x42, 0x24, 0x22, 0x81, 0x99, 0x9a, 0xa9, 0xcb, 0xbc, 0xbd, 0xbb, 0xbc, 0xdb, 0xbb, - 0xdc, 0xcc, 0xdb, 0xba, 0x9a, 0x99, 0x88, 0x00, 0x32, 0x36, 0x34, 0x24, 0x22, 0x81, 0xa8, 0xaa, - 0x89, 0x11, 0x01, 0x09, 0x73, 0x56, 0x33, 0x23, 0x01, 0x10, 0x42, 0x35, 0x24, 0x11, 0x00, 0x80, - 0x80, 0xa8, 0xca, 0xbc, 0xbc, 0xbc, 0xbb, 0xcb, 0xdb, 0xdc, 0xcc, 0xbb, 0xba, 0x9a, 0x9a, 0x89, - 0x21, 0x53, 0x44, 0x43, 0x23, 0x12, 0xa8, 0xaa, 0x89, 0x00, 0x80, 0xbb, 0x38, 0x77, 0x25, 0x13, - 0x11, 0x08, 0x32, 0x35, 0x34, 0x23, 0x12, 0x11, 0x00, 0x90, 0xca, 0xdb, 0xcb, 0xbc, 0xac, 0x9a, - 0xba, 0xec, 0xcc, 0xac, 0xbb, 0xab, 0xaa, 0x9a, 0x09, 0x31, 0x63, 0x44, 0x33, 0x13, 0x90, 0xaa, - 0x99, 0x01, 0x90, 0xcc, 0x8a, 0x72, 0x44, 0x33, 0x11, 0x00, 0x22, 0x55, 0x33, 0x34, 0x22, 0x22, - 0x11, 0x01, 0x88, 0xa9, 0xcc, 0xbd, 0xbb, 0x9b, 0xa9, 0xec, 0xdc, 0xcb, 0xbb, 0xac, 0xaa, 0x9a, - 0x89, 0x00, 0x42, 0x54, 0x43, 0x23, 0x80, 0x98, 0x88, 0x10, 0x98, 0xeb, 0xaa, 0x38, 0x45, 0x24, - 0x22, 0x10, 0x20, 0x63, 0x34, 0x24, 0x23, 0x23, 0x12, 0x00, 0x00, 0x99, 0xdb, 0xcc, 0xac, 0x9a, - 0x99, 0xca, 0xdd, 0xdb, 0xbb, 0xbc, 0xba, 0xaa, 0x9a, 0x88, 0x28, 0x54, 0x35, 0x24, 0x11, 0x88, - 0x08, 0x00, 0x90, 0xcc, 0xcb, 0x09, 0x41, 0x43, 0x22, 0x12, 0x20, 0x53, 0x44, 0x43, 0x33, 0x33, - 0x22, 0x12, 0x11, 0x11, 0xa9, 0xdc, 0xad, 0x9b, 0x99, 0xba, 0xce, 0xcc, 0xbc, 0xbc, 0xbb, 0xab, - 0xaa, 0xaa, 0x89, 0x52, 0x55, 0x33, 0x12, 0x00, 0x00, 0x11, 0x80, 0xdb, 0xcc, 0x9a, 0x18, 0x53, - 0x23, 0x22, 0x21, 0x32, 0x45, 0x34, 0x44, 0x32, 0x22, 0x12, 0x21, 0x12, 0x91, 0xea, 0xcb, 0xba, - 0xa9, 0xb9, 0xdd, 0xdb, 0xdb, 0xcb, 0xbb, 0xab, 0xba, 0xbb, 0xab, 0x28, 0x56, 0x34, 0x22, 0x11, - 0x21, 0x22, 0x11, 0xa8, 0xce, 0xab, 0x09, 0x31, 0x43, 0x23, 0x22, 0x32, 0x44, 0x44, 0x53, 0x43, - 0x22, 0x22, 0x32, 0x32, 0x02, 0xa9, 0xcd, 0xab, 0xaa, 0xbb, 0xbd, 0xcd, 0xeb, 0xdb, 0xba, 0xab, - 0xba, 0xbb, 0xbc, 0x89, 0x52, 0x44, 0x23, 0x12, 0x22, 0x32, 0x33, 0x92, 0xcc, 0xad, 0x9a, 0x28, - 0x32, 0x43, 0x23, 0x32, 0x42, 0x63, 0x34, 0x35, 0x32, 0x23, 0x32, 0x43, 0x12, 0xa0, 0xcb, 0xcb, - 0xbb, 0xac, 0xba, 0xbd, 0xdd, 0xdb, 0xcb, 0xaa, 0xba, 0xcb, 0xcb, 0x9a, 0x10, 0x53, 0x33, 0x22, - 0x33, 0x34, 0x25, 0x02, 0x98, 0xbc, 0xab, 0x09, 0x21, 0x43, 0x24, 0x23, 0x21, 0x44, 0x45, 0x53, - 0x23, 0x32, 0x42, 0x32, 0x23, 0x00, 0xa9, 0xcb, 0xcb, 0xcb, 0xaa, 0xca, 0xcc, 0xcd, 0xbc, 0xba, - 0xba, 0xbc, 0xbd, 0xab, 0x89, 0x22, 0x34, 0x32, 0x32, 0x54, 0x43, 0x22, 0x80, 0xb9, 0xab, 0x9b, - 0x08, 0x42, 0x34, 0x32, 0x12, 0x43, 0x46, 0x35, 0x33, 0x33, 0x43, 0x34, 0x23, 0x11, 0x88, 0xb9, - 0xdb, 0xcb, 0x9a, 0xa9, 0xfb, 0xcc, 0xcc, 0xaa, 0xba, 0xcb, 0xcc, 0xab, 0x9a, 0x10, 0x22, 0x32, - 0x32, 0x35, 0x36, 0x33, 0x12, 0x98, 0xaa, 0xab, 0x0a, 0x20, 0x35, 0x24, 0x02, 0x31, 0x55, 0x44, - 0x33, 0x33, 0x34, 0x34, 0x33, 0x23, 0x01, 0x88, 0xcb, 0xbc, 0x9b, 0x99, 0xeb, 0xce, 0xbc, 0xbb, - 0xcb, 0xcb, 0xbd, 0xbc, 0xaa, 0x89, 0x10, 0x11, 0x11, 0x43, 0x35, 0x34, 0x23, 0x81, 0xa8, 0xba, - 0xaa, 0x18, 0x53, 0x33, 0x22, 0x32, 0x47, 0x53, 0x33, 0x43, 0x43, 0x33, 0x34, 0x23, 0x23, 0x01, - 0xa8, 0xbd, 0x9a, 0x08, 0xc9, 0xdd, 0xcc, 0xbb, 0xba, 0xdb, 0xcc, 0xbc, 0xbb, 0x9a, 0x88, 0x00, - 0x01, 0x32, 0x36, 0x35, 0x32, 0x12, 0x80, 0xb9, 0xba, 0x89, 0x42, 0x32, 0x22, 0x32, 0x55, 0x35, - 0x34, 0x33, 0x35, 0x34, 0x33, 0x34, 0x33, 0x33, 0x90, 0xbb, 0x9c, 0x09, 0xa0, 0xed, 0xcc, 0xab, - 0xbb, 0xbc, 0xcd, 0xbd, 0xbb, 0xab, 0x99, 0x89, 0x88, 0x10, 0x63, 0x34, 0x43, 0x22, 0x11, 0x98, - 0xab, 0x89, 0x11, 0x23, 0x22, 0x31, 0x55, 0x44, 0x43, 0x42, 0x43, 0x33, 0x43, 0x34, 0x34, 0x23, - 0x02, 0xa8, 0x9a, 0x09, 0x80, 0xea, 0xcd, 0xcb, 0xaa, 0xba, 0xec, 0xdb, 0xcb, 0xaa, 0x9a, 0x99, - 0x99, 0x08, 0x31, 0x44, 0x34, 0x34, 0x12, 0x90, 0xa9, 0x99, 0x00, 0x11, 0x11, 0x10, 0x52, 0x44, - 0x33, 0x54, 0x33, 0x44, 0x32, 0x44, 0x53, 0x23, 0x12, 0x00, 0x89, 0x08, 0x10, 0xb8, 0xcd, 0xbc, - 0xab, 0xba, 0xdc, 0xcd, 0xbc, 0xac, 0xaa, 0x9a, 0xaa, 0x99, 0x08, 0x32, 0x36, 0x25, 0x23, 0x01, - 0x98, 0x99, 0x08, 0x00, 0x08, 0x08, 0x21, 0x53, 0x53, 0x53, 0x53, 0x33, 0x43, 0x63, 0x53, 0x33, - 0x33, 0x01, 0x80, 0x00, 0x11, 0x90, 0xdc, 0xcb, 0xaa, 0x9a, 0xdb, 0xdd, 0xbc, 0xcb, 0xbb, 0xba, - 0xac, 0x9a, 0x9a, 0x00, 0x53, 0x34, 0x34, 0x12, 0x80, 0x89, 0x09, 0x88, 0x88, 0x08, 0x28, 0x21, - 0x42, 0x55, 0x44, 0x32, 0x23, 0x44, 0x54, 0x34, 0x23, 0x12, 0x10, 0x00, 0x11, 0x81, 0xca, 0xcc, - 0xab, 0x98, 0xb9, 0xed, 0xcc, 0xcb, 0xbb, 0xcb, 0xba, 0xba, 0xaa, 0x99, 0x31, 0x55, 0x43, 0x22, - 0x01, 0x00, 0x08, 0x08, 0x89, 0x08, 0x10, 0x08, 0x11, 0x55, 0x53, 0x33, 0x22, 0x43, 0x46, 0x35, - 0x24, 0x22, 0x11, 0x10, 0x12, 0x13, 0xa8, 0xbd, 0xab, 0x89, 0x99, 0xdc, 0xdd, 0xcb, 0xbc, 0xbb, - 0xcb, 0xba, 0xbb, 0xab, 0x09, 0x63, 0x53, 0x22, 0x22, 0x10, 0x10, 0x88, 0x88, 0x88, 0x80, 0x98, - 0x08, 0x62, 0x44, 0x43, 0x11, 0x31, 0x55, 0x35, 0x35, 0x22, 0x11, 0x12, 0x32, 0x33, 0x91, 0xcb, - 0xbb, 0x9a, 0x98, 0xca, 0xde, 0xcc, 0xbc, 0xbc, 0xbb, 0xbc, 0xbb, 0xbc, 0x99, 0x20, 0x53, 0x43, - 0x32, 0x12, 0x02, 0x00, 0x88, 0x88, 0x88, 0xa9, 0x99, 0x30, 0x47, 0x33, 0x11, 0x11, 0x73, 0x47, - 0x43, 0x23, 0x21, 0x11, 0x32, 0x24, 0x01, 0xa8, 0xbb, 0xaa, 0x98, 0x99, 0xdd, 0xdc, 0xbd, 0xbc, - 0xcb, 0xbb, 0xbc, 0xbc, 0xaa, 0x88, 0x22, 0x34, 0x43, 0x33, 0x12, 0x11, 0x80, 0x88, 0x88, 0xa9, - 0xbb, 0x28, 0x56, 0x33, 0x02, 0x88, 0x41, 0x67, 0x44, 0x32, 0x21, 0x21, 0x32, 0x43, 0x12, 0x80, - 0xa9, 0x9a, 0x8a, 0x98, 0xc9, 0xce, 0xdd, 0xcb, 0xba, 0xbc, 0xcb, 0xbc, 0xab, 0x9a, 0x10, 0x31, - 0x44, 0x32, 0x33, 0x21, 0x10, 0x00, 0x81, 0xa8, 0xbb, 0x1a, 0x64, 0x43, 0x12, 0x98, 0x0a, 0x74, - 0x46, 0x32, 0x23, 0x21, 0x33, 0x34, 0x33, 0x02, 0x99, 0xaa, 0xab, 0x88, 0x99, 0xfc, 0xcd, 0xbc, - 0xbc, 0xcb, 0xbc, 0xbc, 0xbc, 0x9a, 0x89, 0x10, 0x33, 0x44, 0x32, 0x12, 0x12, 0x11, 0x02, 0x80, - 0xa9, 0x9b, 0x50, 0x36, 0x12, 0xa8, 0xaa, 0x62, 0x56, 0x33, 0x24, 0x22, 0x33, 0x34, 0x24, 0x11, - 0x80, 0x99, 0xaa, 0x88, 0x08, 0xc8, 0xde, 0xbc, 0xcb, 0xcb, 0xbc, 0xcc, 0xcb, 0xaa, 0x9a, 0x08, - 0x20, 0x43, 0x33, 0x23, 0x32, 0x22, 0x23, 0x02, 0xb9, 0xbb, 0x50, 0x55, 0x12, 0x98, 0xbb, 0x38, - 0x66, 0x34, 0x43, 0x32, 0x42, 0x33, 0x34, 0x22, 0x01, 0x98, 0xaa, 0x09, 0x10, 0x90, 0xdd, 0xbd, - 0xad, 0xcb, 0xdb, 0xbc, 0xbc, 0xac, 0xab, 0x99, 0x18, 0x31, 0x43, 0x23, 0x22, 0x32, 0x33, 0x13, - 0xa8, 0xcb, 0x19, 0x45, 0x14, 0xa0, 0xbb, 0x8b, 0x72, 0x35, 0x35, 0x32, 0x43, 0x43, 0x33, 0x33, - 0x13, 0x90, 0xaa, 0x89, 0x20, 0x02, 0xda, 0xce, 0xcb, 0xcb, 0xcc, 0xcc, 0xbb, 0xad, 0xbb, 0xab, - 0x89, 0x20, 0x33, 0x34, 0x32, 0x33, 0x34, 0x23, 0x90, 0xba, 0x8a, 0x73, 0x24, 0x81, 0xaa, 0xab, - 0x30, 0x57, 0x34, 0x33, 0x44, 0x32, 0x34, 0x24, 0x13, 0x01, 0x98, 0x88, 0x11, 0x12, 0xa1, 0xdc, - 0xcb, 0xdb, 0xbc, 0xbd, 0xbd, 0xcc, 0xba, 0xbb, 0x9b, 0x08, 0x21, 0x32, 0x33, 0x33, 0x36, 0x22, - 0x81, 0xaa, 0x9a, 0x41, 0x35, 0x12, 0xb8, 0xbb, 0x19, 0x64, 0x35, 0x44, 0x32, 0x43, 0x53, 0x33, - 0x33, 0x11, 0x90, 0x09, 0x20, 0x23, 0x01, 0xba, 0xcd, 0xbc, 0xcd, 0xcc, 0xdb, 0xbc, 0xbc, 0xbb, - 0xbb, 0x8a, 0x10, 0x21, 0x33, 0x43, 0x44, 0x32, 0x01, 0xa8, 0x99, 0x38, 0x45, 0x22, 0x90, 0xaa, - 0x99, 0x31, 0x56, 0x34, 0x34, 0x43, 0x34, 0x35, 0x33, 0x12, 0x00, 0x09, 0x00, 0x21, 0x11, 0x80, - 0xba, 0xcd, 0xbc, 0xbe, 0xcd, 0xdb, 0xdb, 0xbb, 0xbb, 0x9b, 0x09, 0x00, 0x11, 0x22, 0x35, 0x34, - 0x12, 0x88, 0x99, 0x08, 0x53, 0x32, 0x00, 0xba, 0xac, 0x1a, 0x73, 0x34, 0x34, 0x43, 0x44, 0x44, - 0x33, 0x22, 0x01, 0x08, 0x00, 0x11, 0x21, 0x01, 0x80, 0xaa, 0xcc, 0xbd, 0xcd, 0xdc, 0xdb, 0xbc, - 0xcb, 0xaa, 0x89, 0x88, 0x00, 0x10, 0x42, 0x43, 0x22, 0x00, 0x98, 0x08, 0x22, 0x43, 0x12, 0xb8, - 0xcb, 0x9a, 0x41, 0x55, 0x33, 0x24, 0x44, 0x45, 0x33, 0x33, 0x12, 0x00, 0x00, 0x11, 0x21, 0x11, - 0x02, 0xa8, 0xca, 0xbd, 0xcd, 0xeb, 0xdc, 0xdb, 0xcb, 0xba, 0xa9, 0x98, 0x88, 0x08, 0x21, 0x53, - 0x32, 0x01, 0x88, 0x89, 0x20, 0x43, 0x13, 0x80, 0xdb, 0xab, 0x19, 0x53, 0x34, 0x24, 0x54, 0x54, - 0x43, 0x33, 0x22, 0x11, 0x01, 0x21, 0x22, 0x22, 0x12, 0x01, 0xa9, 0xcb, 0xbb, 0xde, 0xdd, 0xdc, - 0xcb, 0xbb, 0xab, 0xa9, 0xa9, 0x89, 0x20, 0x53, 0x33, 0x13, 0x81, 0x08, 0x10, 0x53, 0x43, 0x02, - 0xa8, 0xbb, 0x89, 0x43, 0x24, 0x23, 0x54, 0x46, 0x35, 0x24, 0x23, 0x22, 0x11, 0x11, 0x21, 0x22, - 0x22, 0x12, 0x99, 0xcb, 0xaa, 0xcb, 0xee, 0xcd, 0xbd, 0xbc, 0xba, 0xaa, 0xab, 0xaa, 0x09, 0x30, - 0x44, 0x12, 0x01, 0x80, 0x00, 0x22, 0x35, 0x23, 0x90, 0xca, 0x8a, 0x18, 0x21, 0x00, 0x41, 0x77, - 0x34, 0x35, 0x43, 0x22, 0x21, 0x11, 0x12, 0x32, 0x32, 0x23, 0x80, 0xa9, 0x09, 0x10, 0xe8, 0xff, - 0xcc, 0xcb, 0xab, 0xbb, 0xbb, 0xbb, 0x9a, 0x18, 0x43, 0x33, 0x12, 0x81, 0x88, 0x30, 0x55, 0x23, - 0x82, 0xb9, 0x8a, 0x08, 0x01, 0x90, 0x0a, 0x74, 0x67, 0x33, 0x25, 0x33, 0x32, 0x21, 0x22, 0x22, - 0x33, 0x33, 0x02, 0xa9, 0x8b, 0x42, 0x82, 0xfe, 0xce, 0xbc, 0xcb, 0xbb, 0xcb, 0xba, 0xaa, 0x89, - 0x11, 0x23, 0x33, 0x01, 0x98, 0x10, 0x45, 0x34, 0x11, 0x90, 0x88, 0x08, 0x01, 0x98, 0x9b, 0x68, - 0x66, 0x44, 0x43, 0x24, 0x32, 0x12, 0x12, 0x22, 0x33, 0x24, 0x02, 0x98, 0x88, 0x32, 0x25, 0xa0, - 0xef, 0xcc, 0xbb, 0xbc, 0xac, 0xcb, 0xaa, 0x99, 0x08, 0x21, 0x22, 0x01, 0x88, 0x18, 0x42, 0x44, - 0x22, 0x80, 0x88, 0x00, 0x08, 0xb8, 0xdb, 0x8a, 0x72, 0x45, 0x35, 0x34, 0x43, 0x22, 0x12, 0x21, - 0x43, 0x32, 0x22, 0x88, 0x89, 0x21, 0x45, 0x02, 0xda, 0xdd, 0xcb, 0xbc, 0xcb, 0xac, 0xbb, 0xba, - 0x89, 0x18, 0x22, 0x01, 0x88, 0x08, 0x41, 0x34, 0x24, 0x01, 0x00, 0x08, 0x81, 0xa9, 0xcc, 0xbb, - 0x28, 0x57, 0x35, 0x35, 0x34, 0x23, 0x13, 0x22, 0x43, 0x33, 0x23, 0x01, 0x99, 0x20, 0x54, 0x33, - 0xa0, 0xec, 0xcc, 0xbc, 0xcc, 0xbb, 0xbc, 0xac, 0x99, 0x09, 0x11, 0x01, 0x80, 0x08, 0x11, 0x34, - 0x24, 0x11, 0x01, 0x80, 0x08, 0x98, 0xdb, 0xac, 0x8a, 0x51, 0x55, 0x44, 0x43, 0x33, 0x22, 0x22, - 0x42, 0x43, 0x23, 0x11, 0x08, 0x18, 0x34, 0x25, 0x02, 0xb8, 0xce, 0xbc, 0xbd, 0xbd, 0xdb, 0xab, - 0xab, 0x89, 0x00, 0x01, 0x80, 0x88, 0x10, 0x33, 0x34, 0x23, 0x00, 0x10, 0x20, 0x01, 0xeb, 0xac, - 0xbb, 0x09, 0x73, 0x37, 0x35, 0x24, 0x23, 0x21, 0x32, 0x44, 0x33, 0x22, 0x10, 0x20, 0x43, 0x25, - 0x23, 0x81, 0xca, 0xdc, 0xbc, 0xbd, 0xbd, 0xad, 0xab, 0x9a, 0x08, 0x00, 0x00, 0x88, 0x00, 0x22, - 0x33, 0x24, 0x11, 0x00, 0x21, 0x80, 0xaa, 0xcd, 0xcb, 0xbb, 0x1a, 0x56, 0x45, 0x43, 0x22, 0x22, - 0x31, 0x44, 0x24, 0x12, 0x11, 0x10, 0x32, 0x35, 0x33, 0x22, 0x98, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, - 0xba, 0x9b, 0x99, 0x08, 0x80, 0x88, 0x88, 0x20, 0x32, 0x33, 0x22, 0x23, 0x33, 0x22, 0x81, 0xb9, - 0xcf, 0xbd, 0x9b, 0x31, 0x57, 0x34, 0x33, 0x23, 0x32, 0x45, 0x43, 0x22, 0x12, 0x01, 0x22, 0x53, - 0x34, 0x22, 0x01, 0x99, 0xcb, 0xdc, 0xcd, 0xcc, 0xbc, 0xba, 0x9a, 0x88, 0x88, 0x88, 0x09, 0x10, - 0x22, 0x32, 0x33, 0x33, 0x33, 0x22, 0x13, 0x88, 0xfc, 0xcc, 0xbb, 0x0a, 0x73, 0x35, 0x34, 0x22, - 0x22, 0x34, 0x35, 0x23, 0x23, 0x11, 0x22, 0x43, 0x35, 0x33, 0x13, 0x80, 0x98, 0xda, 0xed, 0xcd, - 0xbc, 0xac, 0xaa, 0x99, 0x89, 0x89, 0x89, 0x08, 0x11, 0x21, 0x32, 0x33, 0x24, 0x32, 0x23, 0x12, - 0xa8, 0xfd, 0xdb, 0x9a, 0x28, 0x54, 0x33, 0x33, 0x43, 0x53, 0x43, 0x33, 0x23, 0x22, 0x21, 0x42, - 0x44, 0x33, 0x23, 0x01, 0x00, 0x90, 0xfb, 0xcf, 0xcc, 0xbc, 0xba, 0xa9, 0x99, 0x89, 0x89, 0x88, - 0x10, 0x21, 0x23, 0x33, 0x34, 0x33, 0x53, 0x12, 0x11, 0xca, 0xcf, 0xab, 0x0a, 0x32, 0x45, 0x32, - 0x32, 0x34, 0x45, 0x33, 0x33, 0x33, 0x21, 0x33, 0x46, 0x32, 0x13, 0x12, 0x11, 0x22, 0x80, 0xee, - 0xce, 0xdb, 0xba, 0xaa, 0xaa, 0x9a, 0xa9, 0x98, 0x08, 0x00, 0x21, 0x32, 0x42, 0x23, 0x33, 0x44, - 0x13, 0xa0, 0xde, 0xac, 0x8b, 0x18, 0x43, 0x33, 0x34, 0x43, 0x44, 0x43, 0x24, 0x23, 0x21, 0x31, - 0x53, 0x24, 0x23, 0x21, 0x11, 0x32, 0x23, 0xd0, 0xdf, 0xcc, 0xbb, 0xcb, 0xaa, 0xaa, 0xaa, 0x99, - 0x09, 0x08, 0x10, 0x22, 0x33, 0x33, 0x42, 0x44, 0x33, 0x02, 0xdc, 0xbd, 0x9c, 0x89, 0x21, 0x32, - 0x34, 0x42, 0x53, 0x44, 0x43, 0x22, 0x22, 0x22, 0x43, 0x44, 0x22, 0x12, 0x11, 0x32, 0x43, 0x82, - 0xfa, 0xcd, 0xbc, 0xcb, 0xab, 0xab, 0xab, 0xaa, 0x9a, 0x89, 0x88, 0x21, 0x22, 0x13, 0x32, 0x36, - 0x36, 0x12, 0xb0, 0xdc, 0xbb, 0x9b, 0x18, 0x31, 0x25, 0x21, 0x44, 0x45, 0x43, 0x33, 0x22, 0x23, - 0x43, 0x44, 0x33, 0x12, 0x11, 0x32, 0x44, 0x22, 0xb0, 0xed, 0xcc, 0xbb, 0xbc, 0xbb, 0xbb, 0xab, - 0xab, 0x9a, 0x89, 0x10, 0x21, 0x12, 0x11, 0x45, 0x45, 0x32, 0x81, 0xca, 0xcc, 0xaa, 0x8a, 0x01, - 0x12, 0x12, 0x53, 0x55, 0x53, 0x33, 0x32, 0x32, 0x43, 0x44, 0x33, 0x22, 0x11, 0x22, 0x44, 0x33, - 0x02, 0xd9, 0xdd, 0xcb, 0xcb, 0xbb, 0xbb, 0xbb, 0xba, 0xba, 0x99, 0x08, 0x10, 0x00, 0x00, 0x61, - 0x45, 0x33, 0x22, 0x98, 0xcd, 0xbb, 0x9b, 0x08, 0x00, 0x01, 0x22, 0x56, 0x54, 0x33, 0x33, 0x22, - 0x42, 0x34, 0x25, 0x22, 0x12, 0x21, 0x53, 0x43, 0x22, 0x91, 0xeb, 0xcc, 0xdb, 0xbb, 0xac, 0xab, - 0xab, 0xab, 0x9a, 0x09, 0x08, 0x80, 0x98, 0x20, 0x55, 0x34, 0x33, 0x81, 0xda, 0xbc, 0xab, 0x99, - 0x00, 0x00, 0x20, 0x73, 0x45, 0x34, 0x33, 0x32, 0x32, 0x35, 0x25, 0x33, 0x12, 0x21, 0x42, 0x44, - 0x23, 0x12, 0xa9, 0xdc, 0xbd, 0xcc, 0xbb, 0xbb, 0xcb, 0xab, 0x9b, 0x8a, 0x80, 0x88, 0x98, 0x88, - 0x52, 0x54, 0x33, 0x13, 0xa0, 0xcc, 0xab, 0x9b, 0x89, 0x98, 0x89, 0x40, 0x66, 0x53, 0x22, 0x22, - 0x23, 0x53, 0x53, 0x22, 0x22, 0x11, 0x31, 0x44, 0x43, 0x22, 0x01, 0xb9, 0xce, 0xbc, 0xad, 0xbb, - 0xbc, 0xbb, 0xba, 0x9a, 0x98, 0x88, 0x99, 0x99, 0x29, 0x55, 0x34, 0x33, 0x01, 0xba, 0xcc, 0xaa, - 0x99, 0xa9, 0xba, 0x09, 0x65, 0x44, 0x33, 0x24, 0x22, 0x43, 0x44, 0x23, 0x13, 0x12, 0x21, 0x44, - 0x43, 0x24, 0x22, 0x80, 0xca, 0xcd, 0xbc, 0xcb, 0xbb, 0xbc, 0xbb, 0xaa, 0x99, 0x99, 0x99, 0xaa, - 0x0a, 0x61, 0x44, 0x33, 0x12, 0xa0, 0xcb, 0xbb, 0xb9, 0xca, 0xdb, 0x9a, 0x21, 0x46, 0x53, 0x22, - 0x22, 0x43, 0x34, 0x25, 0x23, 0x11, 0x21, 0x33, 0x54, 0x33, 0x24, 0x22, 0xa8, 0xcc, 0xcc, 0xcb, - 0xcb, 0xcb, 0xab, 0xab, 0x9a, 0x98, 0xa8, 0xaa, 0x9b, 0x18, 0x64, 0x43, 0x23, 0x01, 0xa9, 0xab, - 0xa9, 0xcb, 0xdb, 0xab, 0x19, 0x73, 0x34, 0x33, 0x23, 0x44, 0x44, 0x34, 0x32, 0x12, 0x12, 0x22, - 0x34, 0x44, 0x34, 0x32, 0x00, 0xb9, 0xdc, 0xbc, 0xbd, 0xdb, 0xba, 0xbb, 0xaa, 0x9a, 0x99, 0xab, - 0xbb, 0x9b, 0x41, 0x55, 0x23, 0x12, 0x90, 0x98, 0x99, 0xaa, 0xcd, 0xcb, 0x99, 0x21, 0x45, 0x32, - 0x32, 0x52, 0x44, 0x53, 0x23, 0x23, 0x22, 0x12, 0x33, 0x45, 0x53, 0x32, 0x12, 0x80, 0xb9, 0xcd, - 0xbc, 0xbd, 0xbc, 0xcb, 0x9a, 0x9a, 0x99, 0xa9, 0xbb, 0xab, 0x19, 0x44, 0x34, 0x22, 0x01, 0x98, - 0x88, 0xb9, 0xdc, 0xcc, 0x9a, 0x08, 0x42, 0x33, 0x22, 0x43, 0x55, 0x53, 0x33, 0x24, 0x22, 0x12, - 0x22, 0x43, 0x35, 0x24, 0x33, 0x12, 0x88, 0xcb, 0xdc, 0xbc, 0xbd, 0xac, 0xab, 0xaa, 0x9a, 0xa9, - 0xbb, 0xac, 0x8a, 0x31, 0x44, 0x32, 0x11, 0x01, 0x01, 0x00, 0xda, 0xcd, 0xab, 0x89, 0x31, 0x24, - 0x23, 0x42, 0x45, 0x44, 0x43, 0x24, 0x23, 0x11, 0x12, 0x32, 0x44, 0x53, 0x23, 0x23, 0x01, 0x90, - 0xdb, 0xcd, 0xbc, 0xbd, 0xba, 0xbb, 0x9a, 0xaa, 0xbb, 0xbc, 0xab, 0x18, 0x43, 0x24, 0x13, 0x11, - 0x12, 0x02, 0xc8, 0xdd, 0xbb, 0x9b, 0x18, 0x21, 0x22, 0x33, 0x46, 0x45, 0x34, 0x25, 0x33, 0x22, - 0x12, 0x32, 0x53, 0x34, 0x44, 0x22, 0x12, 0x02, 0xa0, 0xeb, 0xcc, 0xdb, 0xbb, 0xbb, 0xab, 0xba, - 0xca, 0xcb, 0xab, 0x89, 0x20, 0x32, 0x33, 0x22, 0x33, 0x34, 0x91, 0xdd, 0xbc, 0xbb, 0x88, 0x00, - 0x12, 0x22, 0x53, 0x55, 0x54, 0x43, 0x33, 0x23, 0x23, 0x32, 0x43, 0x44, 0x24, 0x43, 0x22, 0x22, - 0x81, 0xa8, 0xcd, 0xcd, 0xcb, 0xab, 0xab, 0xba, 0xba, 0xbc, 0xbc, 0x9a, 0x09, 0x11, 0x12, 0x21, - 0x32, 0x43, 0x82, 0xea, 0xbd, 0xbb, 0x9a, 0x09, 0x00, 0x80, 0x00, 0x73, 0x45, 0x35, 0x34, 0x43, - 0x22, 0x22, 0x42, 0x33, 0x35, 0x43, 0x43, 0x22, 0x12, 0x01, 0xa9, 0xce, 0xcc, 0xbb, 0xbb, 0xba, - 0xca, 0xbb, 0xbd, 0xaa, 0x99, 0x00, 0x10, 0x20, 0x32, 0x53, 0x12, 0xa9, 0xce, 0xbb, 0xab, 0x99, - 0x88, 0x98, 0x99, 0x10, 0x55, 0x55, 0x34, 0x34, 0x32, 0x32, 0x33, 0x34, 0x44, 0x43, 0x24, 0x23, - 0x23, 0x23, 0x80, 0xea, 0xcc, 0xbc, 0xbb, 0xab, 0xbb, 0xcc, 0xcb, 0xab, 0xaa, 0x88, 0x08, 0x18, - 0x31, 0x44, 0x22, 0x81, 0xca, 0xcc, 0xab, 0x99, 0x89, 0x98, 0xa9, 0x9a, 0x30, 0x57, 0x45, 0x43, - 0x33, 0x32, 0x33, 0x34, 0x34, 0x44, 0x33, 0x34, 0x33, 0x43, 0x12, 0xa0, 0xeb, 0xcc, 0xba, 0xbb, - 0xba, 0xbc, 0xcc, 0xbb, 0xaa, 0x9a, 0x89, 0x89, 0x21, 0x43, 0x24, 0x03, 0xb8, 0xcd, 0xac, 0xaa, - 0x99, 0x9a, 0xa9, 0xab, 0xab, 0x52, 0x37, 0x36, 0x43, 0x33, 0x33, 0x33, 0x44, 0x43, 0x43, 0x43, - 0x42, 0x32, 0x23, 0x02, 0xb9, 0xdd, 0xbb, 0xac, 0xba, 0xcb, 0xbc, 0xbc, 0xab, 0xaa, 0xaa, 0x99, - 0x00, 0x32, 0x36, 0x22, 0x81, 0xca, 0xbc, 0xbb, 0xab, 0xaa, 0xca, 0xcb, 0xac, 0x08, 0x52, 0x45, - 0x53, 0x33, 0x33, 0x34, 0x42, 0x33, 0x34, 0x34, 0x34, 0x34, 0x24, 0x23, 0x80, 0xba, 0xcd, 0xab, - 0xba, 0xbc, 0xbd, 0xbc, 0xca, 0xaa, 0xa9, 0xaa, 0x89, 0x20, 0x43, 0x33, 0x12, 0xa9, 0xcc, 0xcb, - 0xaa, 0x9a, 0xb9, 0xdb, 0xbb, 0x9b, 0x28, 0x46, 0x45, 0x43, 0x33, 0x32, 0x24, 0x43, 0x33, 0x43, - 0x34, 0x44, 0x43, 0x33, 0x12, 0xa8, 0xcb, 0xac, 0xcb, 0xca, 0xcb, 0xac, 0xac, 0xaa, 0xab, 0xab, - 0x9b, 0x09, 0x42, 0x43, 0x12, 0x81, 0xb9, 0xbc, 0xbb, 0xaa, 0xaa, 0xdc, 0xcb, 0xba, 0x89, 0x41, - 0x46, 0x34, 0x43, 0x33, 0x24, 0x33, 0x24, 0x33, 0x53, 0x34, 0x35, 0x34, 0x22, 0x81, 0xa9, 0xbb, - 0xbc, 0xbc, 0xbd, 0xbc, 0xbc, 0xbb, 0xcb, 0xbb, 0xab, 0x9a, 0x20, 0x42, 0x24, 0x02, 0x98, 0xbb, - 0xbb, 0xab, 0xbb, 0xbc, 0xbe, 0xbc, 0xab, 0x18, 0x64, 0x44, 0x43, 0x33, 0x43, 0x23, 0x43, 0x23, - 0x33, 0x44, 0x45, 0x43, 0x33, 0x11, 0x80, 0xb9, 0xbb, 0xbc, 0xbd, 0xbd, 0xbc, 0xba, 0xac, 0xac, - 0xbb, 0xaa, 0x88, 0x31, 0x33, 0x14, 0x80, 0xba, 0xcb, 0xba, 0xaa, 0xcb, 0xdb, 0xbc, 0xcb, 0x99, - 0x21, 0x36, 0x35, 0x34, 0x43, 0x33, 0x43, 0x32, 0x32, 0x53, 0x54, 0x34, 0x24, 0x13, 0x02, 0x98, - 0x99, 0xba, 0xcc, 0xcc, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc, 0xab, 0x9a, 0x10, 0x32, 0x33, 0x02, 0xa8, - 0xbc, 0xbb, 0xbb, 0xbb, 0xcc, 0xcc, 0xbc, 0xaa, 0x08, 0x62, 0x53, 0x34, 0x43, 0x33, 0x34, 0x33, - 0x32, 0x42, 0x54, 0x44, 0x24, 0x33, 0x12, 0x00, 0x88, 0x9a, 0xdb, 0xcc, 0xbb, 0xcb, 0xcb, 0xbb, - 0xbd, 0xbb, 0xab, 0x88, 0x21, 0x32, 0x13, 0x90, 0xba, 0xcb, 0xbb, 0xaa, 0xcb, 0xdc, 0xcb, 0xab, - 0x9b, 0x20, 0x54, 0x34, 0x35, 0x53, 0x43, 0x22, 0x22, 0x21, 0x63, 0x44, 0x53, 0x23, 0x23, 0x11, - 0x00, 0x90, 0xb9, 0xbd, 0xcc, 0xca, 0xba, 0xcb, 0xbc, 0xbc, 0xbb, 0x9a, 0x18, 0x11, 0x12, 0x01, - 0xa9, 0xba, 0xac, 0xab, 0xbb, 0xcc, 0xcc, 0xca, 0xaa, 0x09, 0x31, 0x44, 0x44, 0x44, 0x43, 0x23, - 0x23, 0x12, 0x42, 0x54, 0x34, 0x25, 0x23, 0x22, 0x11, 0x01, 0xa8, 0xca, 0xbc, 0xbc, 0xcb, 0xbb, - 0xcd, 0xac, 0xaa, 0xbb, 0x98, 0x08, 0x10, 0x00, 0xa0, 0xaa, 0xcb, 0xba, 0xba, 0xcb, 0xcc, 0xbc, - 0xbc, 0x9a, 0x08, 0x21, 0x63, 0x54, 0x53, 0x33, 0x23, 0x22, 0x21, 0x63, 0x45, 0x24, 0x43, 0x22, - 0x12, 0x12, 0x00, 0x99, 0xbc, 0xcb, 0xbb, 0xbc, 0xbd, 0xcd, 0xbb, 0xbb, 0x9a, 0x89, 0x01, 0x11, - 0x81, 0x98, 0xaa, 0xba, 0xbb, 0xca, 0xcc, 0xcc, 0xac, 0xaa, 0x8a, 0x88, 0x21, 0x54, 0x45, 0x34, - 0x24, 0x11, 0x01, 0x31, 0x55, 0x53, 0x33, 0x43, 0x32, 0x22, 0x11, 0x80, 0xba, 0xbc, 0xbb, 0xcc, - 0xdb, 0xbc, 0xbd, 0xac, 0xab, 0x99, 0x80, 0x01, 0x01, 0x81, 0x89, 0xa9, 0x9a, 0x99, 0xcb, 0xbe, - 0xbc, 0xac, 0xa9, 0x89, 0x88, 0x31, 0x57, 0x44, 0x33, 0x13, 0x11, 0x21, 0x44, 0x45, 0x43, 0x33, - 0x24, 0x23, 0x23, 0x01, 0x98, 0xba, 0xbb, 0xcc, 0xcb, 0xcd, 0xdb, 0xcb, 0xab, 0x9b, 0x99, 0x08, - 0x11, 0x00, 0x80, 0x99, 0x89, 0x88, 0xb9, 0xdd, 0xdb, 0xab, 0xab, 0x9a, 0xaa, 0x8a, 0x64, 0x55, - 0x33, 0x33, 0x11, 0x01, 0x32, 0x55, 0x44, 0x33, 0x34, 0x33, 0x43, 0x12, 0x00, 0x99, 0xab, 0xbb, - 0xdb, 0xdc, 0xdb, 0xbc, 0xbc, 0xab, 0x9a, 0x89, 0x00, 0x00, 0x00, 0x88, 0x08, 0x00, 0x88, 0xdb, - 0xcd, 0xcb, 0x9a, 0x9a, 0xbb, 0xaa, 0x39, 0x77, 0x33, 0x24, 0x12, 0x01, 0x11, 0x43, 0x45, 0x43, - 0x43, 0x33, 0x43, 0x23, 0x12, 0x88, 0x99, 0xaa, 0xba, 0xdc, 0xdc, 0xdb, 0xcb, 0xbb, 0xab, 0x9a, - 0x08, 0x08, 0x80, 0x88, 0x80, 0x18, 0x11, 0xb8, 0xce, 0xbc, 0xba, 0xba, 0xdb, 0xcb, 0x8a, 0x51, - 0x45, 0x33, 0x14, 0x02, 0x11, 0x32, 0x54, 0x34, 0x34, 0x34, 0x43, 0x33, 0x13, 0x01, 0x88, 0x9a, - 0xa9, 0xcb, 0xcc, 0xcd, 0xcc, 0xbb, 0xac, 0x9a, 0x99, 0x88, 0x80, 0x88, 0x88, 0x18, 0x11, 0x80, - 0xda, 0xbc, 0xaa, 0xbb, 0xfb, 0xcb, 0xaa, 0x19, 0x64, 0x43, 0x33, 0x22, 0x11, 0x42, 0x53, 0x53, - 0x33, 0x35, 0x53, 0x32, 0x23, 0x12, 0x00, 0x98, 0x98, 0xa8, 0xda, 0xcc, 0xcd, 0xbc, 0xcb, 0xab, - 0x9a, 0x89, 0x88, 0x88, 0x89, 0x18, 0x21, 0x01, 0xa8, 0xcc, 0xaa, 0xaa, 0xcc, 0xcd, 0xac, 0x9a, - 0x30, 0x45, 0x33, 0x23, 0x22, 0x32, 0x44, 0x44, 0x43, 0x53, 0x33, 0x35, 0x32, 0x23, 0x01, 0x00, - 0x89, 0x88, 0xaa, 0xeb, 0xcd, 0xbd, 0xbc, 0xac, 0xab, 0x99, 0x88, 0x99, 0x98, 0x88, 0x10, 0x01, - 0x98, 0xbb, 0xac, 0xaa, 0xea, 0xdc, 0xdb, 0xaa, 0x09, 0x42, 0x34, 0x33, 0x32, 0x33, 0x44, 0x53, - 0x33, 0x35, 0x35, 0x34, 0x34, 0x32, 0x22, 0x01, 0x00, 0x80, 0x80, 0xa9, 0xec, 0xdc, 0xdb, 0xbb, - 0xac, 0xa9, 0x89, 0x99, 0x9a, 0x88, 0x18, 0x10, 0x88, 0xb9, 0xbb, 0x99, 0xba, 0xee, 0xbd, 0xbc, - 0x9a, 0x10, 0x53, 0x33, 0x33, 0x43, 0x33, 0x35, 0x34, 0x34, 0x35, 0x35, 0x34, 0x24, 0x22, 0x12, - 0x01, 0x00, 0x00, 0x00, 0xa9, 0xde, 0xcc, 0xbc, 0xbb, 0xbb, 0xaa, 0xa9, 0xaa, 0x8a, 0x08, 0x01, - 0x80, 0xba, 0xdb, 0x8a, 0x98, 0xfb, 0xcd, 0xbc, 0xab, 0x89, 0x21, 0x34, 0x33, 0x43, 0x43, 0x33, - 0x34, 0x44, 0x53, 0x34, 0x35, 0x34, 0x32, 0x23, 0x11, 0x11, 0x11, 0x21, 0x01, 0xda, 0xce, 0xbd, - 0xbc, 0xba, 0xaa, 0xaa, 0xab, 0x9a, 0x88, 0x00, 0x81, 0xa9, 0xac, 0x9a, 0x08, 0xb8, 0xef, 0xbc, - 0xbc, 0x9a, 0x19, 0x21, 0x33, 0x43, 0x43, 0x43, 0x33, 0x34, 0x44, 0x44, 0x53, 0x34, 0x33, 0x24, - 0x12, 0x11, 0x11, 0x21, 0x32, 0x81, 0xfb, 0xbd, 0xbd, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0x9a, 0x00, - 0x00, 0xa9, 0xdb, 0x9b, 0x08, 0x90, 0xfc, 0xdc, 0xcb, 0xab, 0x99, 0x18, 0x11, 0x22, 0x34, 0x43, - 0x24, 0x33, 0x34, 0x44, 0x54, 0x43, 0x34, 0x33, 0x23, 0x22, 0x21, 0x22, 0x43, 0x23, 0xb0, 0xde, - 0xbc, 0xbc, 0xbb, 0xcb, 0xab, 0xbb, 0x9b, 0x88, 0x80, 0x90, 0xaa, 0xab, 0x09, 0x22, 0xc8, 0xef, - 0xbc, 0xac, 0x9a, 0x89, 0x10, 0x21, 0x43, 0x34, 0x43, 0x32, 0x33, 0x53, 0x54, 0x63, 0x43, 0x42, - 0x12, 0x12, 0x11, 0x21, 0x32, 0x33, 0x02, 0xda, 0xbe, 0xcc, 0xab, 0xcb, 0xba, 0xac, 0xaa, 0x89, - 0x88, 0x80, 0xa9, 0xaa, 0x89, 0x22, 0x01, 0xfb, 0xbe, 0xad, 0xbb, 0x99, 0x88, 0x10, 0x31, 0x44, - 0x43, 0x33, 0x32, 0x32, 0x54, 0x45, 0x53, 0x43, 0x33, 0x23, 0x12, 0x21, 0x42, 0x43, 0x13, 0x91, - 0xdb, 0xbd, 0xcb, 0xcb, 0xbb, 0xbc, 0xbb, 0x9a, 0x88, 0x88, 0xa9, 0xaa, 0x9a, 0x21, 0x23, 0xc0, - 0xdf, 0xbc, 0xbc, 0xab, 0x9a, 0x89, 0x10, 0x32, 0x54, 0x33, 0x23, 0x23, 0x34, 0x55, 0x44, 0x34, - 0x34, 0x33, 0x12, 0x21, 0x32, 0x44, 0x33, 0x02, 0xa9, 0xcd, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0x9a, - 0x89, 0x88, 0x99, 0x9a, 0x9a, 0x18, 0x32, 0x02, 0xea, 0xbd, 0xbd, 0xcb, 0x9a, 0x99, 0x08, 0x21, - 0x34, 0x35, 0x23, 0x23, 0x22, 0x44, 0x54, 0x35, 0x35, 0x23, 0x23, 0x11, 0x31, 0x53, 0x33, 0x23, - 0x80, 0xcb, 0xbc, 0xbd, 0xbc, 0xbd, 0xbc, 0xab, 0xa9, 0x88, 0x99, 0xa9, 0xaa, 0x09, 0x31, 0x23, - 0xa0, 0xce, 0xbe, 0xbc, 0xba, 0xaa, 0x89, 0x28, 0x53, 0x34, 0x24, 0x23, 0x22, 0x21, 0x54, 0x45, - 0x44, 0x43, 0x22, 0x11, 0x11, 0x32, 0x25, 0x23, 0x01, 0xa8, 0xcb, 0xcb, 0xdb, 0xcc, 0xcb, 0xbb, - 0xaa, 0x99, 0x98, 0xa9, 0x9b, 0x8a, 0x11, 0x43, 0x02, 0xc9, 0xcd, 0xcc, 0xbb, 0xba, 0xaa, 0x89, - 0x31, 0x63, 0x34, 0x32, 0x22, 0x01, 0x52, 0x64, 0x44, 0x43, 0x33, 0x12, 0x21, 0x33, 0x44, 0x43, - 0x11, 0x81, 0x99, 0xb9, 0xdb, 0xdc, 0xbc, 0xbc, 0xba, 0xa9, 0x99, 0xa9, 0xab, 0x9b, 0x08, 0x31, - 0x23, 0x98, 0xed, 0xbc, 0xad, 0xbb, 0xbb, 0xa9, 0x08, 0x32, 0x45, 0x43, 0x22, 0x11, 0x10, 0x53, - 0x56, 0x34, 0x33, 0x23, 0x22, 0x22, 0x54, 0x33, 0x33, 0x02, 0x00, 0x98, 0xcb, 0xcd, 0xcd, 0xcb, - 0xab, 0x9b, 0x9a, 0xaa, 0xaa, 0xab, 0x9a, 0x20, 0x33, 0x13, 0xb8, 0xcf, 0xdb, 0xcb, 0xab, 0x9b, - 0x8a, 0x18, 0x53, 0x34, 0x34, 0x12, 0x00, 0x31, 0x57, 0x34, 0x25, 0x23, 0x12, 0x21, 0x42, 0x34, - 0x33, 0x22, 0x11, 0x00, 0x99, 0xfb, 0xcd, 0xbc, 0xcb, 0xaa, 0xaa, 0xaa, 0xba, 0xbb, 0xba, 0x89, - 0x11, 0x23, 0x01, 0xca, 0xcd, 0xbc, 0xcc, 0xba, 0x9a, 0x99, 0x21, 0x54, 0x43, 0x13, 0x11, 0x20, - 0x54, 0x45, 0x34, 0x33, 0x22, 0x22, 0x33, 0x26, 0x24, 0x22, 0x22, 0x11, 0x01, 0xb8, 0xed, 0xbc, - 0xcc, 0xaa, 0xaa, 0xaa, 0xba, 0xbb, 0xbb, 0x9b, 0x09, 0x22, 0x22, 0x81, 0xba, 0xdf, 0xcb, 0xbb, - 0xac, 0x9b, 0x09, 0x42, 0x35, 0x24, 0x11, 0x01, 0x41, 0x55, 0x44, 0x33, 0x23, 0x22, 0x33, 0x44, - 0x43, 0x23, 0x32, 0x32, 0x32, 0x82, 0xea, 0xcd, 0xbc, 0xbc, 0xba, 0xaa, 0xbb, 0xbc, 0xbb, 0xac, - 0x99, 0x00, 0x00, 0x01, 0x98, 0xbc, 0xbe, 0xcb, 0xac, 0xbb, 0x9a, 0x28, 0x53, 0x34, 0x22, 0x01, - 0x21, 0x65, 0x54, 0x33, 0x33, 0x23, 0x33, 0x44, 0x43, 0x32, 0x33, 0x43, 0x23, 0x23, 0x90, 0xdc, - 0xcd, 0xcb, 0xba, 0xab, 0xbb, 0xcb, 0xbb, 0xac, 0x9a, 0x89, 0x00, 0x12, 0x01, 0xba, 0xbd, 0xbd, - 0xcc, 0xbb, 0xab, 0x8a, 0x31, 0x45, 0x22, 0x01, 0x09, 0x51, 0x46, 0x34, 0x43, 0x22, 0x23, 0x43, - 0x34, 0x33, 0x34, 0x33, 0x34, 0x24, 0x02, 0xa8, 0xcd, 0xbc, 0xbc, 0xbb, 0xbb, 0xac, 0xcb, 0xab, - 0xab, 0xaa, 0x08, 0x10, 0x00, 0x98, 0xca, 0xdc, 0xcb, 0xdb, 0xba, 0xab, 0x18, 0x43, 0x24, 0x02, - 0x98, 0x10, 0x55, 0x35, 0x44, 0x22, 0x32, 0x42, 0x33, 0x34, 0x43, 0x33, 0x34, 0x34, 0x22, 0x01, - 0xca, 0xcd, 0xbb, 0xbc, 0xbb, 0xbc, 0xca, 0xba, 0xbb, 0xba, 0x99, 0x80, 0x00, 0x80, 0xa9, 0xcc, - 0xbc, 0xcc, 0xcc, 0xaa, 0x89, 0x30, 0x43, 0x12, 0x90, 0x08, 0x52, 0x46, 0x34, 0x33, 0x34, 0x33, - 0x44, 0x32, 0x24, 0x33, 0x44, 0x33, 0x34, 0x21, 0x88, 0xcb, 0xbd, 0xbc, 0xcb, 0xba, 0xbb, 0xcb, - 0xac, 0xab, 0x9a, 0x89, 0x00, 0x10, 0x80, 0xa9, 0xba, 0xce, 0xdc, 0xbb, 0xaa, 0x18, 0x42, 0x12, - 0x81, 0x99, 0x20, 0x56, 0x44, 0x33, 0x34, 0x43, 0x33, 0x34, 0x42, 0x32, 0x34, 0x34, 0x44, 0x22, - 0x01, 0x99, 0xcb, 0xcc, 0xbb, 0xac, 0xbb, 0xcb, 0xcb, 0xba, 0xab, 0x9a, 0x08, 0x08, 0x08, 0x80, - 0x98, 0xca, 0xcf, 0xbc, 0xbb, 0x8a, 0x20, 0x12, 0x81, 0xba, 0x9a, 0x62, 0x55, 0x43, 0x34, 0x33, - 0x25, 0x33, 0x43, 0x33, 0x53, 0x43, 0x34, 0x24, 0x12, 0x81, 0xa8, 0xcc, 0xcb, 0xbb, 0xcb, 0xbb, - 0xbc, 0xcb, 0xbb, 0xaa, 0x99, 0x98, 0x08, 0x08, 0x11, 0x90, 0xfb, 0xce, 0xbb, 0x9a, 0x08, 0x20, - 0x00, 0xa9, 0xa9, 0x10, 0x45, 0x36, 0x44, 0x43, 0x33, 0x34, 0x33, 0x43, 0x33, 0x44, 0x34, 0x34, - 0x23, 0x12, 0x91, 0xca, 0xcc, 0xbb, 0xbc, 0xcb, 0xbb, 0xbc, 0xac, 0xab, 0xaa, 0x99, 0x89, 0x08, - 0x20, 0x22, 0xa8, 0xdf, 0xdb, 0xaa, 0x8a, 0x00, 0x01, 0x99, 0xaa, 0x99, 0x31, 0x46, 0x45, 0x43, - 0x34, 0x33, 0x34, 0x23, 0x43, 0x53, 0x43, 0x43, 0x33, 0x33, 0x11, 0x98, 0xdb, 0xbc, 0xbc, 0xbb, - 0xbc, 0xbc, 0xbc, 0xbb, 0xab, 0xaa, 0xa9, 0x99, 0x20, 0x32, 0x13, 0xfb, 0xbe, 0xbc, 0xaa, 0x88, - 0x80, 0x98, 0xaa, 0xaa, 0x0a, 0x63, 0x45, 0x34, 0x44, 0x43, 0x23, 0x33, 0x33, 0x34, 0x44, 0x34, - 0x34, 0x33, 0x23, 0x01, 0xb9, 0xcc, 0xbc, 0xcb, 0xbb, 0xcc, 0xbb, 0xbc, 0xba, 0xaa, 0x9a, 0x9a, - 0x00, 0x33, 0x25, 0x91, 0xeb, 0xad, 0xab, 0x9a, 0x88, 0x99, 0xc9, 0xba, 0xaa, 0x18, 0x44, 0x54, - 0x44, 0x43, 0x43, 0x23, 0x23, 0x33, 0x44, 0x53, 0x43, 0x33, 0x24, 0x22, 0x80, 0xaa, 0xbc, 0xac, - 0xbc, 0xcb, 0xbc, 0xbc, 0xba, 0xab, 0xbb, 0xba, 0x89, 0x31, 0x44, 0x02, 0xc8, 0xdb, 0xac, 0xaa, - 0x89, 0x89, 0xaa, 0xbb, 0xac, 0x99, 0x30, 0x64, 0x54, 0x43, 0x43, 0x33, 0x33, 0x32, 0x34, 0x44, - 0x43, 0x44, 0x33, 0x33, 0x11, 0xa0, 0xca, 0xbb, 0xbd, 0xbc, 0xcc, 0xbb, 0xac, 0xab, 0xbb, 0xbb, - 0xaa, 0x28, 0x43, 0x33, 0x91, 0xda, 0xcc, 0xba, 0x99, 0x99, 0xa9, 0xcb, 0xcb, 0x9a, 0x89, 0x42, - 0x46, 0x44, 0x43, 0x33, 0x43, 0x22, 0x33, 0x33, 0x55, 0x43, 0x53, 0x32, 0x13, 0x01, 0xa9, 0xba, - 0xdb, 0xcb, 0xbc, 0xbc, 0xbc, 0xba, 0xbb, 0xbc, 0xbb, 0x89, 0x31, 0x43, 0x12, 0xa0, 0xcc, 0xbb, - 0xab, 0xa9, 0xaa, 0xbc, 0xbc, 0xbc, 0x9a, 0x18, 0x73, 0x54, 0x43, 0x43, 0x32, 0x33, 0x33, 0x33, - 0x44, 0x44, 0x44, 0x33, 0x24, 0x12, 0x80, 0x99, 0xab, 0xbc, 0xcd, 0xcb, 0xab, 0xcb, 0xca, 0xba, - 0xbb, 0x9b, 0x08, 0x32, 0x24, 0x81, 0xb9, 0xcc, 0xaa, 0xab, 0xaa, 0xbb, 0xcc, 0xac, 0xbb, 0x99, - 0x30, 0x37, 0x45, 0x43, 0x43, 0x32, 0x32, 0x23, 0x33, 0x45, 0x44, 0x44, 0x32, 0x22, 0x02, 0x88, - 0xa8, 0xba, 0xcd, 0xdb, 0xba, 0xbb, 0xcb, 0xbc, 0xac, 0xab, 0x89, 0x20, 0x32, 0x13, 0x90, 0xba, - 0xbd, 0xba, 0xab, 0xba, 0xdb, 0xdb, 0xbb, 0xaa, 0x09, 0x53, 0x55, 0x43, 0x34, 0x42, 0x32, 0x23, - 0x22, 0x43, 0x54, 0x44, 0x24, 0x23, 0x12, 0x81, 0x90, 0x99, 0xbc, 0xcd, 0xba, 0xac, 0xbb, 0xcc, - 0xbb, 0xac, 0xaa, 0x08, 0x21, 0x22, 0x11, 0x99, 0xbb, 0xcb, 0xab, 0xab, 0xca, 0xbc, 0xbd, 0xbb, - 0xaa, 0x20, 0x64, 0x34, 0x35, 0x53, 0x33, 0x33, 0x32, 0x32, 0x64, 0x44, 0x53, 0x32, 0x22, 0x12, - 0x00, 0x88, 0xb9, 0xcd, 0xbb, 0xbc, 0xcb, 0xcb, 0xbc, 0xbc, 0xab, 0x8a, 0x18, 0x11, 0x12, 0x80, - 0xa9, 0xbb, 0xbc, 0xba, 0xbb, 0xcc, 0xbc, 0xbc, 0xab, 0x0a, 0x41, 0x44, 0x54, 0x43, 0x34, 0x33, - 0x22, 0x22, 0x33, 0x47, 0x44, 0x33, 0x23, 0x23, 0x12, 0x01, 0xa8, 0xdb, 0xbc, 0xbc, 0xbb, 0xbd, - 0xcc, 0xbb, 0xbb, 0x6c, 0x02, 0x01, 0x39, 0x7d, 0x0a, 0x02, 0xd3, 0x06, 0x19, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x9f, 0x80, 0x88, 0x88, 0x8b, 0x32, 0x92, 0x70, 0x24, - 0x34, 0x14, 0x88, 0x89, 0x09, 0x80, 0xcc, 0xcc, 0xbc, 0xcb, 0x89, 0x31, 0xa0, 0x40, 0xda, 0x41, - 0x24, 0xf8, 0x5a, 0x04, 0x08, 0x22, 0x91, 0x10, 0x90, 0xa9, 0x50, 0xf0, 0x9d, 0x18, 0xa9, 0x18, - 0x02, 0x09, 0x32, 0x32, 0xfa, 0x49, 0x15, 0x08, 0x21, 0x31, 0x26, 0xa0, 0xaa, 0x50, 0x04, 0xdc, - 0x8a, 0xb8, 0x18, 0xa0, 0x9a, 0x31, 0x46, 0x91, 0x9b, 0x00, 0x42, 0x15, 0x98, 0x30, 0x35, 0x82, - 0xbd, 0x50, 0x91, 0x98, 0xee, 0x8a, 0x00, 0xa0, 0xaa, 0x30, 0x15, 0x90, 0x98, 0x88, 0x22, 0x02, - 0x98, 0x62, 0x36, 0xb8, 0x9a, 0x10, 0x54, 0xd8, 0xbd, 0x9a, 0x88, 0xa9, 0x9c, 0x32, 0x23, 0x01, - 0x99, 0x20, 0x34, 0x92, 0x8c, 0x76, 0x12, 0x08, 0xa9, 0x29, 0x27, 0xa0, 0xdc, 0x9a, 0x88, 0xb9, - 0x89, 0x10, 0x35, 0x22, 0x80, 0x19, 0x45, 0xa0, 0x39, 0x36, 0x21, 0x01, 0xab, 0x41, 0x55, 0xa1, - 0xbd, 0x8a, 0xb9, 0xcb, 0x9a, 0x20, 0x34, 0x24, 0xa8, 0x50, 0x04, 0x99, 0x10, 0x52, 0x33, 0x90, - 0xbb, 0x5a, 0x27, 0xa0, 0xbb, 0xbb, 0xbc, 0xcc, 0xab, 0x19, 0x53, 0x83, 0x18, 0x32, 0x02, 0x98, - 0x39, 0x36, 0x54, 0x91, 0xbc, 0x40, 0x33, 0x90, 0xbc, 0xbb, 0xce, 0xab, 0xcc, 0x19, 0x31, 0x01, - 0x22, 0x43, 0x82, 0x88, 0x00, 0x51, 0x36, 0xa1, 0x9a, 0x62, 0x34, 0x81, 0xa8, 0xca, 0xab, 0xec, - 0xcb, 0x99, 0x00, 0x88, 0x09, 0x23, 0x11, 0x12, 0x10, 0x67, 0x34, 0x12, 0x21, 0x73, 0x23, 0x01, - 0xa8, 0xbb, 0xdb, 0xdc, 0xbb, 0xab, 0x88, 0x9a, 0x18, 0x31, 0x24, 0x03, 0x30, 0x57, 0x24, 0x02, - 0x11, 0x43, 0x33, 0x02, 0xca, 0xdb, 0xdb, 0xcc, 0xcb, 0x9a, 0x88, 0x09, 0x18, 0x21, 0x24, 0x02, - 0x11, 0x55, 0x24, 0x11, 0x11, 0x32, 0x34, 0x02, 0xb9, 0xbc, 0xdc, 0xdc, 0xbb, 0xab, 0x9a, 0x98, - 0x08, 0x32, 0x44, 0x82, 0x10, 0x54, 0x43, 0x12, 0x11, 0x32, 0x34, 0x13, 0xa8, 0xaa, 0xfb, 0xce, - 0xbb, 0xbb, 0xaa, 0xaa, 0x99, 0x31, 0x26, 0x11, 0x32, 0x45, 0x24, 0x12, 0x00, 0x21, 0x44, 0x02, - 0x88, 0x80, 0xc9, 0xdd, 0xbc, 0xcb, 0xa9, 0xa9, 0x9a, 0x10, 0x23, 0x11, 0x51, 0x45, 0x34, 0x22, - 0x02, 0x31, 0x34, 0x12, 0x00, 0x81, 0xea, 0xdd, 0xbc, 0xbb, 0xaa, 0xbb, 0x9b, 0x10, 0x33, 0x22, - 0x63, 0x54, 0x34, 0x23, 0x11, 0x32, 0x43, 0x11, 0x00, 0x81, 0xb9, 0xee, 0xcc, 0xbb, 0xba, 0xac, - 0x9a, 0x18, 0x21, 0x21, 0x32, 0x65, 0x34, 0x22, 0x22, 0x32, 0x33, 0x21, 0x11, 0x00, 0x98, 0xef, - 0xcc, 0xba, 0xbb, 0xdb, 0x9a, 0x08, 0x12, 0x13, 0x22, 0x64, 0x34, 0x22, 0x21, 0x22, 0x23, 0x21, - 0x90, 0x00, 0x90, 0xfd, 0xcc, 0xba, 0xba, 0xbc, 0xab, 0x89, 0x11, 0x02, 0x18, 0x55, 0x35, 0x23, - 0x32, 0x32, 0x33, 0x12, 0x10, 0x20, 0x13, 0xfd, 0xbc, 0xcb, 0xbc, 0xcb, 0xac, 0x09, 0x00, 0x81, - 0x08, 0x63, 0x43, 0x33, 0x22, 0x32, 0x43, 0x12, 0x00, 0x41, 0x12, 0xc9, 0xcc, 0xbc, 0xcc, 0xcb, - 0xac, 0x9a, 0x80, 0x98, 0x09, 0x41, 0x44, 0x33, 0x23, 0x24, 0x34, 0x12, 0x10, 0x32, 0x23, 0xa8, - 0xdd, 0xcb, 0xdb, 0xdb, 0xbb, 0x9a, 0x08, 0x99, 0x99, 0x31, 0x46, 0x33, 0x33, 0x53, 0x34, 0x22, - 0x21, 0x33, 0x23, 0x90, 0xcd, 0xbc, 0xbc, 0xdd, 0xbb, 0xaa, 0x99, 0xa9, 0x99, 0x20, 0x45, 0x24, - 0x32, 0x44, 0x32, 0x12, 0x12, 0x32, 0x22, 0x90, 0xdc, 0xbb, 0xeb, 0xdc, 0xbb, 0xaa, 0x99, 0x99, - 0x99, 0x20, 0x45, 0x24, 0x32, 0x34, 0x24, 0x12, 0x22, 0x22, 0x33, 0x91, 0xcc, 0xab, 0xdc, 0xdc, - 0xcb, 0x9a, 0x8a, 0x99, 0x9a, 0x18, 0x43, 0x43, 0x42, 0x34, 0x33, 0x32, 0x12, 0x52, 0x23, 0x82, - 0xba, 0x9a, 0xea, 0xce, 0xcb, 0xab, 0x99, 0xa9, 0xab, 0x89, 0x33, 0x34, 0x45, 0x34, 0x43, 0x22, - 0x11, 0x32, 0x34, 0x81, 0xa9, 0x99, 0xea, 0xdc, 0xcc, 0xab, 0x99, 0xa9, 0xba, 0x09, 0x20, 0x42, - 0x35, 0x44, 0x24, 0x23, 0x21, 0x42, 0x24, 0x00, 0x88, 0x99, 0xa9, 0xdd, 0xcc, 0xab, 0xa9, 0xb9, - 0xab, 0x9a, 0x18, 0x43, 0x54, 0x43, 0x34, 0x13, 0x21, 0x42, 0x33, 0x12, 0x80, 0x08, 0xa9, 0xdf, - 0xbd, 0xac, 0xa9, 0xaa, 0xaa, 0x9a, 0x08, 0x31, 0x44, 0x54, 0x43, 0x13, 0x12, 0x43, 0x32, 0x12, - 0x80, 0x09, 0x00, 0xfb, 0xbf, 0xba, 0xbb, 0xbb, 0xcb, 0xaa, 0x88, 0x11, 0x42, 0x45, 0x34, 0x23, - 0x21, 0x33, 0x43, 0x22, 0x88, 0x20, 0x23, 0xfa, 0xbe, 0xbc, 0xbb, 0xbb, 0xcb, 0xab, 0x8a, 0x08, - 0x38, 0x56, 0x34, 0x23, 0x32, 0x43, 0x34, 0x12, 0x80, 0x20, 0x01, 0xd9, 0xbe, 0xcc, 0xba, 0xba, - 0xcb, 0xaa, 0x98, 0x08, 0x10, 0x46, 0x43, 0x23, 0x22, 0x42, 0x43, 0x12, 0x00, 0x21, 0x12, 0xb0, - 0xed, 0xbc, 0xcb, 0xba, 0xcc, 0x9a, 0xa9, 0x99, 0x08, 0x42, 0x54, 0x32, 0x21, 0x53, 0x33, 0x13, - 0x10, 0x22, 0x12, 0x91, 0xec, 0xcc, 0xab, 0xbc, 0xbc, 0xab, 0xaa, 0xab, 0x89, 0x40, 0x36, 0x33, - 0x23, 0x45, 0x43, 0x12, 0x12, 0x22, 0x22, 0x82, 0xfa, 0xcb, 0xcb, 0xcb, 0xac, 0xaa, 0xab, 0xaa, - 0x9a, 0x30, 0x46, 0x23, 0x32, 0x54, 0x23, 0x23, 0x12, 0x22, 0x33, 0x13, 0xda, 0xbd, 0xdb, 0xbc, - 0xbc, 0xab, 0xbb, 0xbb, 0xbb, 0x28, 0x46, 0x23, 0x33, 0x45, 0x33, 0x23, 0x13, 0x22, 0x34, 0x13, - 0xb8, 0xbd, 0xcc, 0xcc, 0xbb, 0xac, 0xab, 0xbb, 0xad, 0x19, 0x22, 0x33, 0x43, 0x44, 0x34, 0x33, - 0x22, 0x32, 0x36, 0x13, 0x81, 0xa8, 0xda, 0xbc, 0xbd, 0xbc, 0xaa, 0xdb, 0xbb, 0x09, 0x21, 0x22, - 0x33, 0x45, 0x34, 0x24, 0x11, 0x22, 0x44, 0x22, 0x01, 0x98, 0xba, 0xdc, 0xbc, 0xac, 0xaa, 0xcc, - 0xbb, 0x99, 0x10, 0x12, 0x33, 0x44, 0x36, 0x23, 0x12, 0x32, 0x35, 0x23, 0x12, 0x80, 0xb9, 0xec, - 0xcc, 0xaa, 0xba, 0xcc, 0xbb, 0x9a, 0x00, 0x21, 0x21, 0x63, 0x35, 0x23, 0x23, 0x42, 0x43, 0x33, - 0x12, 0x00, 0x98, 0xfb, 0xbd, 0xab, 0xba, 0xcd, 0xbb, 0x9b, 0x09, 0x11, 0x20, 0x53, 0x36, 0x33, - 0x22, 0x23, 0x35, 0x24, 0x12, 0x00, 0x91, 0xfb, 0xbc, 0xba, 0xcb, 0xcb, 0xbc, 0xab, 0x89, 0x00, - 0x10, 0x63, 0x34, 0x24, 0x22, 0x32, 0x53, 0x23, 0x22, 0x31, 0x01, 0xeb, 0xcc, 0xba, 0xbb, 0xcc, - 0xcc, 0xaa, 0x88, 0x88, 0x08, 0x31, 0x35, 0x25, 0x13, 0x32, 0x34, 0x24, 0x21, 0x33, 0x03, 0xc9, - 0xcc, 0xbb, 0xbc, 0xeb, 0xbc, 0xbb, 0x9a, 0x98, 0x88, 0x31, 0x55, 0x43, 0x22, 0x31, 0x34, 0x32, - 0x32, 0x34, 0x22, 0xa8, 0xcc, 0xac, 0xbb, 0xdc, 0xcc, 0xab, 0x9a, 0x99, 0x89, 0x00, 0x44, 0x34, - 0x22, 0x42, 0x33, 0x33, 0x34, 0x34, 0x23, 0x80, 0xda, 0xac, 0xba, 0xdc, 0xcc, 0xba, 0xaa, 0xa9, - 0x99, 0x08, 0x52, 0x34, 0x22, 0x43, 0x43, 0x22, 0x43, 0x43, 0x32, 0x01, 0xba, 0xbb, 0xbc, 0xdd, - 0xbc, 0xad, 0xab, 0xa9, 0x9a, 0x0a, 0x32, 0x35, 0x43, 0x43, 0x43, 0x22, 0x33, 0x44, 0x33, 0x02, - 0xa8, 0xaa, 0xcb, 0xdc, 0xbc, 0xbd, 0xab, 0xba, 0xba, 0x9a, 0x21, 0x24, 0x34, 0x34, 0x34, 0x33, - 0x34, 0x54, 0x23, 0x12, 0x90, 0x99, 0xa9, 0xdb, 0xcd, 0xbc, 0xab, 0xbb, 0xac, 0x9a, 0x00, 0x22, - 0x34, 0x44, 0x43, 0x22, 0x33, 0x45, 0x43, 0x12, 0x81, 0x98, 0x88, 0xb9, 0xde, 0xbb, 0xac, 0xbb, - 0xbc, 0x9a, 0x88, 0x21, 0x32, 0x35, 0x35, 0x22, 0x32, 0x45, 0x34, 0x23, 0x01, 0x88, 0x08, 0xb8, - 0xce, 0xbc, 0xcb, 0xcb, 0xbb, 0xab, 0x8a, 0x18, 0x22, 0x44, 0x25, 0x13, 0x32, 0x54, 0x43, 0x33, - 0x11, 0x80, 0x10, 0x98, 0xcd, 0xac, 0xcb, 0xcb, 0xac, 0xab, 0x9a, 0x88, 0x10, 0x52, 0x43, 0x22, - 0x31, 0x44, 0x35, 0x24, 0x02, 0x00, 0x01, 0x90, 0xdb, 0xbc, 0xcb, 0xbc, 0xbc, 0xbb, 0xaa, 0x89, - 0x08, 0x53, 0x34, 0x32, 0x22, 0x63, 0x35, 0x34, 0x12, 0x10, 0x11, 0x80, 0xca, 0xbc, 0xcc, 0xcb, - 0xbc, 0xbb, 0xaa, 0x9a, 0x09, 0x41, 0x34, 0x33, 0x22, 0x53, 0x46, 0x33, 0x12, 0x12, 0x21, 0x80, - 0xb9, 0xcd, 0xcb, 0xdb, 0xbc, 0xab, 0xbb, 0xaa, 0x8a, 0x31, 0x44, 0x24, 0x11, 0x32, 0x47, 0x33, - 0x22, 0x22, 0x22, 0x11, 0xa9, 0xbd, 0xbc, 0xcd, 0xbc, 0xbb, 0xcb, 0xba, 0x99, 0x18, 0x42, 0x24, - 0x11, 0x42, 0x35, 0x35, 0x22, 0x22, 0x22, 0x12, 0xa8, 0xbb, 0xcd, 0xcc, 0xbc, 0xbc, 0xca, 0xaa, - 0x9a, 0x09, 0x32, 0x34, 0x11, 0x42, 0x45, 0x43, 0x23, 0x22, 0x33, 0x22, 0x80, 0xaa, 0xcc, 0xdc, - 0xcb, 0xac, 0xbb, 0xac, 0xaa, 0x0a, 0x31, 0x33, 0x22, 0x53, 0x45, 0x34, 0x32, 0x43, 0x22, 0x13, - 0x00, 0x89, 0xca, 0xcc, 0xbd, 0xbc, 0xbb, 0xbc, 0xcb, 0x99, 0x21, 0x22, 0x12, 0x31, 0x46, 0x43, - 0x24, 0x32, 0x43, 0x12, 0x01, 0x80, 0x98, 0xcc, 0xcc, 0xcb, 0xcb, 0xca, 0xba, 0x9a, 0x10, 0x22, - 0x22, 0x31, 0x54, 0x44, 0x32, 0x43, 0x33, 0x23, 0x12, 0x01, 0x98, 0xda, 0xcd, 0xbc, 0xbb, 0xcc, - 0xac, 0x9b, 0x00, 0x11, 0x01, 0x21, 0x52, 0x44, 0x32, 0x34, 0x24, 0x23, 0x12, 0x11, 0x88, 0xb8, - 0xce, 0xcb, 0xbb, 0xbd, 0xbd, 0xaa, 0x08, 0x10, 0x10, 0x20, 0x52, 0x43, 0x43, 0x34, 0x43, 0x23, - 0x22, 0x11, 0x01, 0xa9, 0xdd, 0xcb, 0xbb, 0xcd, 0xcb, 0x9b, 0x89, 0x18, 0x00, 0x10, 0x33, 0x35, - 0x53, 0x34, 0x24, 0x33, 0x23, 0x12, 0x12, 0x90, 0xcd, 0xcb, 0xcb, 0xcc, 0xdb, 0xba, 0x89, 0x88, - 0x00, 0x00, 0x22, 0x43, 0x34, 0x35, 0x34, 0x34, 0x22, 0x12, 0x22, 0x81, 0xcb, 0xbc, 0xbc, 0xdc, - 0xcc, 0xba, 0x9a, 0x88, 0x88, 0x10, 0x11, 0x33, 0x35, 0x35, 0x44, 0x33, 0x33, 0x33, 0x24, 0x01, - 0xa9, 0xcb, 0xcb, 0xdc, 0xcc, 0xac, 0x9a, 0x99, 0x88, 0x80, 0x11, 0x21, 0x43, 0x34, 0x45, 0x33, - 0x23, 0x43, 0x32, 0x02, 0x98, 0xca, 0xba, 0xdc, 0xbe, 0xbc, 0xba, 0xa9, 0x98, 0x88, 0x18, 0x22, - 0x33, 0x55, 0x34, 0x34, 0x33, 0x43, 0x33, 0x22, 0x90, 0xba, 0xb9, 0xde, 0xdc, 0xcb, 0xaa, 0x9a, - 0x99, 0x88, 0x08, 0x12, 0x22, 0x63, 0x34, 0x34, 0x43, 0x33, 0x43, 0x13, 0x91, 0x98, 0x98, 0xea, - 0xcd, 0xbc, 0xac, 0xaa, 0xa9, 0x89, 0x08, 0x01, 0x12, 0x53, 0x44, 0x43, 0x33, 0x34, 0x24, 0x23, - 0x00, 0x88, 0x88, 0xc9, 0xdd, 0xcc, 0xab, 0xab, 0xaa, 0x99, 0x88, 0x01, 0x11, 0x42, 0x54, 0x43, - 0x33, 0x44, 0x24, 0x23, 0x01, 0x00, 0x00, 0x98, 0xcd, 0xcd, 0xbb, 0xcb, 0xaa, 0xa9, 0x88, 0x88, - 0x00, 0x31, 0x54, 0x24, 0x43, 0x53, 0x43, 0x22, 0x11, 0x01, 0x01, 0x80, 0xeb, 0xcc, 0xbc, 0xbb, - 0xac, 0x9a, 0x89, 0x88, 0x80, 0x20, 0x44, 0x43, 0x33, 0x54, 0x34, 0x23, 0x22, 0x10, 0x11, 0x81, - 0xd9, 0xcd, 0xbc, 0xac, 0xbb, 0xab, 0x99, 0x98, 0x88, 0x20, 0x63, 0x33, 0x34, 0x54, 0x53, 0x22, - 0x12, 0x11, 0x10, 0x11, 0xb9, 0xcd, 0xbd, 0xcc, 0xba, 0xaa, 0x99, 0x98, 0x88, 0x08, 0x43, 0x43, - 0x42, 0x53, 0x44, 0x33, 0x22, 0x11, 0x12, 0x12, 0xa0, 0xdc, 0xcc, 0xdb, 0xbb, 0xba, 0x9a, 0x89, - 0x9a, 0x08, 0x42, 0x33, 0x53, 0x44, 0x44, 0x43, 0x12, 0x12, 0x11, 0x12, 0x80, 0xbb, 0xbf, 0xbd, - 0xbc, 0xac, 0x99, 0x99, 0x99, 0x09, 0x30, 0x22, 0x43, 0x63, 0x44, 0x34, 0x32, 0x21, 0x22, 0x13, - 0x01, 0xb8, 0xce, 0xcc, 0xbc, 0xbb, 0xaa, 0xa9, 0xab, 0x8a, 0x20, 0x32, 0x23, 0x55, 0x45, 0x34, - 0x32, 0x22, 0x32, 0x22, 0x12, 0xa8, 0xeb, 0xdc, 0xbc, 0xac, 0x9b, 0xaa, 0xaa, 0x99, 0x00, 0x22, - 0x21, 0x53, 0x55, 0x34, 0x32, 0x33, 0x32, 0x33, 0x12, 0x91, 0xda, 0xcd, 0xcd, 0xab, 0xab, 0xba, - 0xba, 0x9a, 0x18, 0x11, 0x12, 0x43, 0x47, 0x53, 0x23, 0x33, 0x32, 0x33, 0x22, 0x11, 0xa8, 0xed, - 0xbd, 0xbc, 0xab, 0xab, 0xbb, 0xaa, 0x09, 0x10, 0x11, 0x32, 0x47, 0x35, 0x34, 0x32, 0x33, 0x24, - 0x22, 0x21, 0x81, 0xea, 0xcd, 0xcb, 0xaa, 0xab, 0xab, 0xab, 0x89, 0x00, 0x01, 0x20, 0x64, 0x44, - 0x34, 0x32, 0x43, 0x32, 0x22, 0x12, 0x12, 0xc8, 0xce, 0xbc, 0xcb, 0xaa, 0xbb, 0xba, 0x8a, 0x08, - 0x80, 0x18, 0x63, 0x45, 0x43, 0x33, 0x43, 0x23, 0x23, 0x23, 0x23, 0xa8, 0xde, 0xbc, 0xac, 0xab, - 0xcb, 0xaa, 0x9a, 0x08, 0x08, 0x88, 0x41, 0x36, 0x34, 0x34, 0x34, 0x32, 0x32, 0x32, 0x14, 0x81, - 0xfa, 0xcb, 0xcb, 0xba, 0xcb, 0xab, 0x9a, 0x89, 0x90, 0x88, 0x31, 0x46, 0x24, 0x34, 0x34, 0x33, - 0x32, 0x32, 0x24, 0x82, 0xd9, 0xdc, 0xab, 0xac, 0xcb, 0xba, 0x9a, 0x89, 0x98, 0x88, 0x10, 0x44, - 0x43, 0x35, 0x34, 0x24, 0x13, 0x33, 0x33, 0x23, 0xb8, 0xbf, 0xcc, 0xbb, 0xdb, 0xbb, 0xaa, 0x99, - 0x99, 0x99, 0x10, 0x53, 0x53, 0x53, 0x34, 0x33, 0x33, 0x43, 0x43, 0x12, 0x80, 0xdb, 0xcb, 0xbc, - 0xbc, 0xbc, 0xaa, 0x99, 0xa9, 0x99, 0x18, 0x31, 0x63, 0x63, 0x43, 0x33, 0x33, 0x43, 0x34, 0x23, - 0x00, 0xba, 0xbd, 0xbd, 0xcc, 0xcb, 0x9a, 0x9a, 0x99, 0x9a, 0x88, 0x01, 0x32, 0x46, 0x34, 0x34, - 0x32, 0x43, 0x43, 0x23, 0x02, 0x99, 0xdb, 0xcb, 0xbd, 0xbc, 0xbb, 0xaa, 0xaa, 0xaa, 0x98, 0x08, - 0x21, 0x55, 0x34, 0x25, 0x33, 0x43, 0x53, 0x23, 0x02, 0x90, 0xa9, 0xcc, 0xcc, 0xcb, 0xbb, 0xaa, - 0xab, 0x9a, 0x9a, 0x89, 0x20, 0x53, 0x55, 0x33, 0x43, 0x42, 0x43, 0x43, 0x12, 0x80, 0x98, 0xba, - 0xcd, 0xcc, 0xaa, 0xab, 0xab, 0xaa, 0xa9, 0x89, 0x08, 0x41, 0x45, 0x34, 0x33, 0x53, 0x34, 0x34, - 0x22, 0x01, 0x90, 0xb8, 0xdc, 0xbc, 0xbc, 0xbb, 0xba, 0xab, 0xba, 0x9a, 0x99, 0x30, 0x37, 0x35, - 0x33, 0x34, 0x45, 0x33, 0x24, 0x11, 0x00, 0x98, 0xcb, 0xbd, 0xbc, 0xac, 0xab, 0xbb, 0xaa, 0xaa, - 0x9b, 0x18, 0x54, 0x43, 0x43, 0x33, 0x45, 0x34, 0x23, 0x22, 0x02, 0x81, 0xca, 0xcc, 0xbc, 0xac, - 0xbb, 0xab, 0xab, 0xbb, 0xbb, 0x09, 0x52, 0x34, 0x34, 0x43, 0x45, 0x34, 0x23, 0x23, 0x23, 0x00, - 0xa9, 0xcd, 0xcc, 0xba, 0xac, 0xab, 0xaa, 0xb9, 0xab, 0x8a, 0x31, 0x35, 0x24, 0x43, 0x54, 0x34, - 0x33, 0x24, 0x22, 0x02, 0xa0, 0xda, 0xdb, 0xcb, 0xbb, 0xbb, 0xba, 0xca, 0xab, 0x9b, 0x18, 0x34, - 0x23, 0x43, 0x46, 0x34, 0x34, 0x24, 0x22, 0x12, 0x80, 0xa9, 0xbd, 0xcc, 0xcb, 0xba, 0xaa, 0xba, - 0xbb, 0xbb, 0x08, 0x53, 0x22, 0x41, 0x54, 0x53, 0x24, 0x33, 0x43, 0x12, 0x11, 0x99, 0xca, 0xcc, - 0xbc, 0xba, 0xbb, 0xca, 0xbb, 0xbc, 0x09, 0x12, 0x11, 0x32, 0x54, 0x35, 0x35, 0x43, 0x32, 0x33, - 0x11, 0x80, 0xc9, 0xcc, 0xbc, 0xbb, 0xac, 0xba, 0xdb, 0xab, 0x0a, 0x10, 0x10, 0x21, 0x44, 0x44, - 0x44, 0x42, 0x42, 0x12, 0x12, 0x81, 0x98, 0xbc, 0xbd, 0xcb, 0xab, 0xaa, 0xcc, 0xab, 0x9a, 0x00, - 0x10, 0x11, 0x42, 0x54, 0x34, 0x34, 0x34, 0x24, 0x21, 0x01, 0x90, 0xca, 0xcc, 0xac, 0xab, 0xaa, - 0xdb, 0xab, 0x9a, 0x88, 0x01, 0x01, 0x32, 0x55, 0x43, 0x44, 0x33, 0x24, 0x23, 0x21, 0x80, 0xb9, - 0xdd, 0xcb, 0xaa, 0xb9, 0xcb, 0xcb, 0x9a, 0x89, 0x81, 0x10, 0x21, 0x43, 0x35, 0x36, 0x25, 0x33, - 0x33, 0x22, 0x11, 0xa8, 0xdd, 0xcb, 0xaa, 0xab, 0xbc, 0xbc, 0xab, 0x89, 0x88, 0x08, 0x20, 0x32, - 0x45, 0x45, 0x34, 0x34, 0x33, 0x32, 0x12, 0x81, 0xeb, 0xbc, 0xba, 0xbb, 0xbc, 0xbd, 0xbb, 0x9a, - 0x88, 0x09, 0x11, 0x21, 0x54, 0x44, 0x35, 0x53, 0x23, 0x32, 0x22, 0x82, 0xc9, 0xbc, 0xac, 0xbb, - 0xdb, 0xdb, 0xaa, 0x9a, 0x9a, 0x88, 0x10, 0x20, 0x42, 0x45, 0x63, 0x43, 0x32, 0x23, 0x24, 0x11, - 0xa8, 0xbc, 0xcb, 0xbb, 0xdb, 0xbc, 0xba, 0xab, 0xaa, 0x89, 0x08, 0x10, 0x42, 0x44, 0x45, 0x25, - 0x33, 0x43, 0x32, 0x13, 0x88, 0xdb, 0xbb, 0xcb, 0xcb, 0xbc, 0xac, 0xab, 0x9b, 0x99, 0x88, 0x10, - 0x22, 0x52, 0x55, 0x34, 0x24, 0x43, 0x32, 0x13, 0x81, 0xc9, 0xab, 0xac, 0xbc, 0xbc, 0xac, 0xbb, - 0xbb, 0xa9, 0x09, 0x00, 0x10, 0x31, 0x57, 0x44, 0x32, 0x34, 0x24, 0x33, 0x01, 0x99, 0xbb, 0xdb, - 0xcb, 0xcb, 0xcb, 0xcb, 0xaa, 0x9a, 0x89, 0x88, 0x80, 0x28, 0x64, 0x34, 0x34, 0x34, 0x44, 0x32, - 0x11, 0x88, 0x9a, 0xbb, 0xbc, 0xbd, 0xcb, 0xac, 0xbb, 0xbb, 0x8a, 0x98, 0x99, 0x18, 0x73, 0x53, - 0x34, 0x34, 0x44, 0x33, 0x12, 0x00, 0xa8, 0xba, 0xcb, 0xcc, 0xcb, 0xbb, 0xbc, 0xbb, 0x9a, 0x99, - 0x99, 0x09, 0x51, 0x44, 0x34, 0x44, 0x34, 0x34, 0x12, 0x11, 0x98, 0xa9, 0xcb, 0xcb, 0xdb, 0xbb, - 0xbc, 0xbb, 0xaa, 0xa9, 0xa9, 0x89, 0x32, 0x55, 0x34, 0x44, 0x44, 0x33, 0x33, 0x21, 0x90, 0x99, - 0xbb, 0xbd, 0xbd, 0xcb, 0xbc, 0xab, 0xaa, 0x9a, 0x9a, 0x8a, 0x28, 0x35, 0x34, 0x55, 0x53, 0x43, - 0x32, 0x12, 0x00, 0x88, 0xaa, 0xcb, 0xbc, 0xbc, 0xbd, 0xbb, 0xab, 0xaa, 0xba, 0x9b, 0x28, 0x42, - 0x43, 0x55, 0x44, 0x34, 0x33, 0x23, 0x11, 0x80, 0xa9, 0xbb, 0xbd, 0xcd, 0xbb, 0xbc, 0xab, 0xba, - 0xba, 0xab, 0x08, 0x21, 0x42, 0x55, 0x44, 0x44, 0x33, 0x33, 0x12, 0x81, 0x98, 0xb9, 0xdb, 0xbc, - 0xbd, 0xac, 0xbb, 0xaa, 0xbb, 0xbb, 0x09, 0x10, 0x22, 0x45, 0x64, 0x44, 0x33, 0x33, 0x23, 0x02, - 0x90, 0xa9, 0xcb, 0xcc, 0xbc, 0xcc, 0xaa, 0x9a, 0xbb, 0xab, 0x89, 0x08, 0x21, 0x41, 0x64, 0x35, - 0x35, 0x33, 0x33, 0x11, 0x81, 0x98, 0xaa, 0xcc, 0xcc, 0xbc, 0xab, 0xba, 0xac, 0xab, 0x9a, 0x89, - 0x00, 0x10, 0x73, 0x36, 0x35, 0x24, 0x33, 0x21, 0x01, 0x08, 0x99, 0xca, 0xcc, 0xbc, 0xbb, 0xbb, - 0xbc, 0xac, 0x9a, 0x89, 0x88, 0x88, 0x52, 0x55, 0x34, 0x34, 0x24, 0x12, 0x02, 0x00, 0x88, 0xb8, - 0xdc, 0xbb, 0xac, 0xac, 0xbb, 0xbb, 0xab, 0x9a, 0x99, 0xa9, 0x30, 0x57, 0x35, 0x35, 0x33, 0x23, - 0x13, 0x10, 0x00, 0xa8, 0xcd, 0xcb, 0xcb, 0xbb, 0xcb, 0xbb, 0xab, 0x9a, 0x9a, 0xaa, 0x19, 0x64, - 0x45, 0x34, 0x34, 0x33, 0x22, 0x01, 0x11, 0x98, 0xbc, 0xbd, 0xbc, 0xac, 0xbb, 0xad, 0x9b, 0x9a, - 0xa9, 0x9a, 0x8a, 0x40, 0x55, 0x44, 0x53, 0x32, 0x12, 0x11, 0x12, 0x90, 0xb9, 0xbc, 0xbd, 0xca, - 0xcb, 0xbb, 0xbb, 0xaa, 0xab, 0xbb, 0xaa, 0x28, 0x65, 0x35, 0x36, 0x33, 0x23, 0x32, 0x13, 0x01, - 0xa8, 0xcc, 0xac, 0xcb, 0xbc, 0xcb, 0xba, 0xaa, 0xaa, 0xba, 0xbb, 0x89, 0x52, 0x65, 0x44, 0x33, - 0x32, 0x33, 0x22, 0x12, 0x98, 0xca, 0xbc, 0xdb, 0xbc, 0xbc, 0xba, 0xbb, 0xaa, 0xbb, 0xab, 0x9a, - 0x18, 0x66, 0x45, 0x33, 0x24, 0x32, 0x22, 0x12, 0x91, 0xb9, 0xcb, 0xdb, 0xbc, 0xbc, 0xcb, 0xaa, - 0xa9, 0xbb, 0xaa, 0xba, 0x8a, 0x72, 0x46, 0x43, 0x33, 0x33, 0x33, 0x23, 0x01, 0xa9, 0xbb, 0xbe, - 0xbd, 0xbc, 0xcb, 0xaa, 0xba, 0xba, 0xa9, 0xcb, 0x9a, 0x40, 0x46, 0x44, 0x33, 0x43, 0x32, 0x22, - 0x11, 0x88, 0xa9, 0xbc, 0xcc, 0xbc, 0xac, 0xba, 0xba, 0xab, 0xab, 0xbc, 0xab, 0x18, 0x55, 0x45, - 0x33, 0x34, 0x33, 0x33, 0x22, 0x00, 0xb9, 0xca, 0xdc, 0xcb, 0xbb, 0xcb, 0xba, 0xab, 0xbb, 0xbc, - 0xab, 0x8a, 0x62, 0x45, 0x34, 0x43, 0x33, 0x33, 0x23, 0x01, 0x98, 0xaa, 0xcd, 0xbd, 0xbb, 0xcb, - 0xbb, 0xab, 0xab, 0xbc, 0xcb, 0x9a, 0x31, 0x56, 0x43, 0x43, 0x24, 0x23, 0x23, 0x01, 0x00, 0x99, - 0xea, 0xcb, 0xbb, 0xbc, 0xac, 0xaa, 0xab, 0xba, 0xbc, 0xaa, 0x38, 0x45, 0x44, 0x44, 0x33, 0x33, - 0x33, 0x21, 0x00, 0xa0, 0xdb, 0xbc, 0xbc, 0xbc, 0xac, 0xab, 0xaa, 0xaa, 0xcc, 0x9a, 0x08, 0x41, - 0x54, 0x34, 0x34, 0x43, 0x32, 0x21, 0x10, 0x80, 0xba, 0xcc, 0xcb, 0xbc, 0xbb, 0xbb, 0xbb, 0xcb, - 0xbc, 0xbb, 0x99, 0x31, 0x56, 0x53, 0x43, 0x43, 0x22, 0x22, 0x11, 0x00, 0xa9, 0xcb, 0xbc, 0xcc, - 0xbb, 0xbb, 0xab, 0xbb, 0xbd, 0xcb, 0x9a, 0x10, 0x53, 0x44, 0x44, 0x43, 0x32, 0x22, 0x12, 0x01, - 0x98, 0xba, 0xcd, 0xcb, 0xcb, 0xab, 0xab, 0xba, 0xcb, 0xcb, 0xaa, 0x19, 0x32, 0x46, 0x44, 0x34, - 0x33, 0x33, 0x22, 0x11, 0x80, 0xba, 0xcc, 0xbc, 0xbd, 0xac, 0x9a, 0xaa, 0xbb, 0xad, 0xab, 0x89, - 0x11, 0x73, 0x44, 0x43, 0x43, 0x22, 0x13, 0x12, 0x00, 0x99, 0xba, 0xdc, 0xbc, 0xbb, 0xbb, 0xbb, - 0xbc, 0xcc, 0xaa, 0x9a, 0x08, 0x42, 0x55, 0x43, 0x34, 0x32, 0x33, 0x22, 0x01, 0x88, 0xb9, 0xcd, - 0xbc, 0xbc, 0xba, 0xab, 0xcb, 0xbc, 0xab, 0xaa, 0x99, 0x31, 0x56, 0x34, 0x44, 0x32, 0x33, 0x23, - 0x02, 0x81, 0xa8, 0xcc, 0xbc, 0xbc, 0xac, 0xaa, 0xbb, 0xbc, 0xac, 0xaa, 0x99, 0x18, 0x44, 0x45, - 0x24, 0x24, 0x33, 0x23, 0x22, 0x01, 0x98, 0xca, 0xcc, 0xbc, 0xbb, 0xba, 0xcb, 0xac, 0xbb, 0xbb, - 0xba, 0x09, 0x62, 0x45, 0x43, 0x34, 0x33, 0x24, 0x22, 0x01, 0x80, 0xb8, 0xeb, 0xbc, 0xba, 0xbb, - 0xcb, 0xcb, 0xab, 0xcb, 0xaa, 0x9a, 0x30, 0x45, 0x44, 0x34, 0x34, 0x23, 0x33, 0x21, 0x10, 0x98, - 0xeb, 0xdb, 0xba, 0xab, 0xcb, 0xbb, 0xcb, 0xbb, 0xbc, 0x9a, 0x19, 0x43, 0x45, 0x35, 0x43, 0x33, - 0x33, 0x23, 0x11, 0x80, 0xcb, 0xcc, 0xcb, 0xbb, 0xbb, 0xcc, 0xba, 0xac, 0xbb, 0xab, 0x89, 0x30, - 0x55, 0x44, 0x34, 0x43, 0x32, 0x22, 0x22, 0x01, 0xa9, 0xcc, 0xcb, 0xbb, 0xac, 0xac, 0xbb, 0xbc, - 0xbb, 0xac, 0x89, 0x18, 0x53, 0x35, 0x35, 0x34, 0x33, 0x33, 0x23, 0x12, 0xa8, 0xdb, 0xcc, 0xba, - 0xcb, 0xbb, 0xbb, 0xcc, 0xbb, 0xba, 0xab, 0x09, 0x42, 0x55, 0x53, 0x43, 0x33, 0x33, 0x33, 0x22, - 0x80, 0xba, 0xbe, 0xbc, 0xcb, 0xbb, 0xbb, 0xad, 0xcb, 0xba, 0xab, 0x9a, 0x20, 0x54, 0x44, 0x34, - 0x43, 0x33, 0x24, 0x22, 0x10, 0xa8, 0xca, 0xcb, 0xbb, 0xbc, 0xcb, 0xcb, 0xca, 0xba, 0xbb, 0xaa, - 0x88, 0x42, 0x45, 0x44, 0x43, 0x33, 0x33, 0x33, 0x22, 0x90, 0xbb, 0xcd, 0xcb, 0xca, 0xba, 0xcb, - 0xbb, 0xbc, 0xbb, 0xab, 0x99, 0x20, 0x46, 0x44, 0x34, 0x33, 0x34, 0x24, 0x12, 0x80, 0xa8, 0xca, - 0xbb, 0xcb, 0xbc, 0xbb, 0xbc, 0xbc, 0xac, 0xba, 0xa9, 0x08, 0x53, 0x44, 0x44, 0x42, 0x42, 0x22, - 0x22, 0x01, 0x98, 0xb9, 0xcb, 0xbc, 0xbb, 0xbc, 0xbc, 0xcb, 0xcb, 0xaa, 0xaa, 0x89, 0x21, 0x36, - 0x45, 0x43, 0x33, 0x25, 0x22, 0x11, 0x80, 0xa9, 0xbb, 0xbd, 0xcb, 0xbb, 0xbc, 0xbc, 0xbb, 0xcb, - 0xab, 0xaa, 0x10, 0x44, 0x35, 0x44, 0x34, 0x33, 0x24, 0x12, 0x81, 0x98, 0xba, 0xcc, 0xbb, 0xcb, - 0xcb, 0xac, 0xbb, 0xbb, 0xbc, 0xaa, 0x09, 0x42, 0x44, 0x44, 0x34, 0x34, 0x33, 0x23, 0x02, 0x80, - 0xaa, 0xcc, 0xbb, 0xbc, 0xbc, 0xdb, 0xba, 0xcb, 0xba, 0xbb, 0x89, 0x20, 0x54, 0x34, 0x35, 0x44, - 0x32, 0x23, 0x22, 0x00, 0x99, 0xbb, 0xcc, 0xcb, 0xcb, 0xbb, 0xbc, 0xbb, 0xbc, 0xab, 0x9a, 0x19, - 0x43, 0x36, 0x35, 0x35, 0x43, 0x32, 0x22, 0x01, 0x90, 0xba, 0xdb, 0xbb, 0xbc, 0xbc, 0xbc, 0xbb, - 0xbc, 0xbb, 0xab, 0x89, 0x31, 0x46, 0x44, 0x43, 0x34, 0x33, 0x33, 0x02, 0x80, 0xa9, 0xbc, 0xbc, - 0xcc, 0xca, 0xba, 0xcb, 0xca, 0xaa, 0xaa, 0x8a, 0x10, 0x43, 0x54, 0x34, 0x35, 0x33, 0x24, 0x22, - 0x00, 0x98, 0xaa, 0xbc, 0xcc, 0xbb, 0xcb, 0xac, 0xbb, 0xac, 0xba, 0x9a, 0x19, 0x41, 0x44, 0x44, - 0x34, 0x34, 0x33, 0x22, 0x11, 0x88, 0xba, 0xbc, 0xcc, 0xbb, 0xbc, 0xcb, 0xbb, 0xbc, 0xbb, 0xaa, - 0x89, 0x21, 0x54, 0x44, 0x44, 0x33, 0x34, 0x33, 0x12, 0x80, 0xa9, 0xca, 0xcb, 0xac, 0xbc, 0xbb, - 0xac, 0xcb, 0xbb, 0xab, 0x9a, 0x00, 0x52, 0x44, 0x35, 0x44, 0x33, 0x33, 0x23, 0x00, 0x98, 0xba, - 0xbc, 0xbd, 0xbc, 0xcb, 0xab, 0xbc, 0xcb, 0xab, 0x9a, 0x88, 0x31, 0x54, 0x35, 0x44, 0x43, 0x33, - 0x22, 0x02, 0x80, 0xa9, 0xcb, 0xbc, 0xbc, 0xac, 0xcb, 0xba, 0xac, 0xbb, 0xaa, 0x89, 0x20, 0x44, - 0x45, 0x43, 0x34, 0x34, 0x32, 0x11, 0x00, 0x98, 0xba, 0xcc, 0xcb, 0xcb, 0xba, 0xcb, 0xbb, 0xac, - 0xab, 0x8a, 0x08, 0x41, 0x35, 0x45, 0x34, 0x43, 0x33, 0x22, 0x01, 0x88, 0xaa, 0xdb, 0xbc, 0xbc, - 0xba, 0xbc, 0xcb, 0xbb, 0xab, 0x9b, 0x89, 0x21, 0x55, 0x63, 0x43, 0x34, 0x33, 0x22, 0x12, 0x80, - 0x99, 0xcb, 0xcc, 0xbb, 0xbb, 0xbd, 0xcb, 0xbb, 0xab, 0xbb, 0x99, 0x18, 0x52, 0x45, 0x44, 0x34, - 0x24, 0x23, 0x12, 0x00, 0x98, 0xb9, 0xcc, 0xbb, 0xbc, 0xcb, 0xcb, 0xbb, 0xbb, 0xbb, 0x9b, 0x89, - 0x30, 0x65, 0x44, 0x34, 0x34, 0x33, 0x23, 0x11, 0x00, 0xaa, 0xbc, 0xbd, 0xcb, 0xbb, 0xbc, 0xbc, - 0xcb, 0xba, 0xa9, 0x99, 0x18, 0x52, 0x35, 0x36, 0x34, 0x43, 0x22, 0x11, 0x01, 0x98, 0xca, 0xbb, - 0xbc, 0xbc, 0xdb, 0xba, 0xac, 0xab, 0xab, 0x99, 0x09, 0x41, 0x54, 0x44, 0x34, 0x34, 0x22, 0x22, - 0x01, 0x90, 0xb9, 0xbc, 0xbc, 0xbc, 0xbb, 0xbd, 0xcb, 0xab, 0xaa, 0x9b, 0x89, 0x20, 0x54, 0x54, - 0x34, 0x34, 0x33, 0x32, 0x11, 0x91, 0xa9, 0xbc, 0xad, 0xac, 0xbb, 0xbc, 0xcb, 0xbb, 0xbb, 0xba, - 0x9a, 0x00, 0x53, 0x46, 0x44, 0x24, 0x33, 0x23, 0x22, 0x00, 0x98, 0xcb, 0xcb, 0xac, 0xbb, 0xbc, - 0xad, 0xab, 0xbb, 0xba, 0xaa, 0x89, 0x10, 0x56, 0x54, 0x33, 0x34, 0x33, 0x23, 0x12, 0x88, 0xca, - 0xbb, 0xbd, 0xca, 0xcb, 0xbb, 0xbc, 0xbb, 0xbb, 0xaa, 0x9a, 0x09, 0x54, 0x46, 0x43, 0x34, 0x42, - 0x22, 0x11, 0x81, 0x99, 0xbb, 0xbc, 0xcb, 0xbc, 0xcb, 0xbb, 0xcb, 0xbb, 0xaa, 0xaa, 0x99, 0x42, - 0x56, 0x43, 0x34, 0x24, 0x33, 0x22, 0x01, 0x98, 0xca, 0xbb, 0xdb, 0xcb, 0xcb, 0xba, 0xac, 0xbb, - 0xaa, 0xba, 0x99, 0x20, 0x46, 0x45, 0x43, 0x33, 0x34, 0x22, 0x02, 0x80, 0xaa, 0xcb, 0xcb, 0xbc, - 0xbb, 0xcc, 0xba, 0xbb, 0xbb, 0xbb, 0xab, 0x18, 0x73, 0x45, 0x34, 0x34, 0x43, 0x22, 0x12, 0x81, - 0x99, 0xba, 0xbc, 0xbc, 0xbc, 0xdb, 0xba, 0xbb, 0xbb, 0xac, 0xab, 0x89, 0x31, 0x46, 0x45, 0x43, - 0x33, 0x43, 0x22, 0x81, 0x90, 0xa9, 0xcb, 0xbc, 0xbb, 0xbd, 0xcb, 0xba, 0xbb, 0xbb, 0xac, 0x9a, - 0x19, 0x44, 0x36, 0x35, 0x34, 0x43, 0x22, 0x01, 0x00, 0xa9, 0xba, 0xbc, 0xdb, 0xbb, 0xbc, 0xbc, - 0xab, 0xac, 0xba, 0xaa, 0x89, 0x52, 0x54, 0x53, 0x43, 0x43, 0x22, 0x12, 0x00, 0x98, 0xb9, 0xcb, - 0xcb, 0xcb, 0xcb, 0xbb, 0xbb, 0xcb, 0xbb, 0xbb, 0x9a, 0x30, 0x56, 0x53, 0x34, 0x34, 0x24, 0x12, - 0x01, 0x80, 0x99, 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xba, 0xcb, 0xba, 0xcb, 0x9a, 0x18, 0x52, 0x44, - 0x44, 0x34, 0x33, 0x23, 0x22, 0x00, 0x99, 0xcb, 0xcb, 0xcb, 0xbc, 0xbb, 0xbc, 0xbb, 0xbb, 0xad, - 0xab, 0x09, 0x31, 0x54, 0x45, 0x34, 0x24, 0x23, 0x22, 0x01, 0x98, 0xaa, 0xcb, 0xcb, 0xbc, 0xac, - 0xbb, 0xac, 0xca, 0xba, 0xbb, 0x89, 0x18, 0x62, 0x54, 0x34, 0x34, 0x33, 0x33, 0x12, 0x80, 0xa9, - 0xcb, 0xdb, 0xcb, 0xcb, 0xab, 0xbb, 0xcb, 0xdb, 0xaa, 0x89, 0x88, 0x30, 0x55, 0x44, 0x24, 0x33, - 0x33, 0x23, 0x00, 0x89, 0xba, 0xcc, 0xdb, 0xbb, 0xcb, 0xba, 0xcb, 0xcb, 0xba, 0x9a, 0x99, 0x18, - 0x54, 0x45, 0x34, 0x43, 0x33, 0x22, 0x01, 0x80, 0xaa, 0xcb, 0xdb, 0xcb, 0xbb, 0xab, 0xbc, 0xcb, - 0xbb, 0xaa, 0x9a, 0x89, 0x63, 0x45, 0x44, 0x43, 0x32, 0x23, 0x11, 0x81, 0x99, 0xba, 0xcc, 0xbc, - 0xbb, 0xbb, 0xbc, 0xbc, 0xcb, 0xaa, 0xaa, 0x9a, 0x21, 0x56, 0x34, 0x35, 0x43, 0x23, 0x12, 0x01, - 0x98, 0xa9, 0xcb, 0xcc, 0xbb, 0xab, 0xcb, 0xcb, 0xbb, 0xbb, 0xcb, 0xaa, 0x08, 0x73, 0x63, 0x43, - 0x24, 0x33, 0x22, 0x02, 0x80, 0x98, 0xca, 0xcc, 0xba, 0xba, 0xca, 0xcb, 0xbb, 0xcb, 0xbb, 0xac, - 0x89, 0x30, 0x64, 0x44, 0x43, 0x33, 0x23, 0x22, 0x00, 0x80, 0xba, 0xbd, 0xbc, 0xbb, 0xcb, 0xcb, - 0xcb, 0xca, 0xba, 0xbb, 0xaa, 0x08, 0x44, 0x36, 0x35, 0x34, 0x33, 0x23, 0x11, 0x80, 0xa8, 0xbc, - 0xbc, 0xcb, 0xba, 0xbc, 0xac, 0xcb, 0xbb, 0xac, 0xab, 0x89, 0x31, 0x46, 0x35, 0x35, 0x33, 0x22, - 0x12, 0x01, 0x98, 0xdb, 0xbb, 0xbb, 0xcb, 0xbc, 0xcb, 0xca, 0xbb, 0xcb, 0xab, 0x9a, 0x28, 0x54, - 0x54, 0x34, 0x43, 0x22, 0x22, 0x11, 0x88, 0xba, 0xcb, 0xbb, 0xcb, 0xac, 0xcb, 0xba, 0xbc, 0xdb, - 0xba, 0x9a, 0x88, 0x41, 0x45, 0x35, 0x34, 0x32, 0x23, 0x22, 0x80, 0xa9, 0xac, 0xcb, 0xbb, 0xbc, - 0xcb, 0xba, 0xbc, 0xbc, 0xac, 0xab, 0x9a, 0x28, 0x64, 0x54, 0x33, 0x33, 0x43, 0x22, 0x01, 0xa8, - 0xaa, 0xbb, 0xbd, 0xbb, 0xbc, 0xcb, 0xbb, 0xcd, 0xab, 0xbb, 0xab, 0x0a, 0x52, 0x46, 0x34, 0x33, - 0x34, 0x32, 0x02, 0x90, 0xa9, 0xba, 0xbd, 0xbb, 0xbc, 0xca, 0xca, 0xcb, 0xac, 0xbb, 0xbb, 0xaa, - 0x20, 0x47, 0x34, 0x34, 0x34, 0x33, 0x12, 0x01, 0x99, 0xba, 0xcb, 0xac, 0xbb, 0xbb, 0xcc, 0xdb, - 0xbb, 0xcb, 0xbb, 0xab, 0x19, 0x64, 0x34, 0x44, 0x33, 0x24, 0x13, 0x11, 0x88, 0xa9, 0xba, 0xbc, - 0xcb, 0xba, 0xcb, 0xbc, 0xbc, 0xcb, 0xcb, 0xab, 0x0a, 0x41, 0x45, 0x43, 0x34, 0x24, 0x23, 0x11, - 0x80, 0x98, 0xba, 0xbc, 0xcb, 0xaa, 0xbb, 0xcc, 0xcb, 0xbb, 0xbc, 0xbc, 0x9a, 0x20, 0x44, 0x44, - 0x34, 0x25, 0x23, 0x12, 0x81, 0x80, 0xa9, 0xcb, 0xbb, 0xac, 0xba, 0xcc, 0xbb, 0xcb, 0xcb, 0xbc, - 0xaa, 0x08, 0x32, 0x46, 0x44, 0x43, 0x32, 0x22, 0x02, 0x80, 0xa8, 0xcb, 0xbb, 0xbb, 0xbc, 0xdb, - 0xbb, 0xac, 0xbc, 0xcc, 0xaa, 0x89, 0x20, 0x63, 0x34, 0x45, 0x32, 0x22, 0x12, 0x01, 0x88, 0xba, - 0xbc, 0xbb, 0xca, 0xdb, 0xba, 0xab, 0xcc, 0xbc, 0xac, 0x99, 0x08, 0x42, 0x44, 0x35, 0x34, 0x32, - 0x22, 0x11, 0x88, 0xb9, 0xcb, 0xbb, 0xbb, 0xbd, 0xac, 0xab, 0xcc, 0xdb, 0xab, 0xab, 0x09, 0x30, - 0x64, 0x44, 0x43, 0x23, 0x23, 0x12, 0x81, 0xa8, 0xbb, 0xac, 0xcb, 0xcb, 0xbb, 0xbb, 0xcc, 0xbc, - 0xbc, 0xbb, 0x99, 0x18, 0x63, 0x45, 0x43, 0x43, 0x22, 0x12, 0x11, 0x98, 0xba, 0xba, 0xdb, 0xbb, - 0xac, 0xab, 0xcb, 0xcc, 0xcb, 0xba, 0x9a, 0x89, 0x41, 0x36, 0x45, 0x33, 0x32, 0x33, 0x22, 0x88, - 0xaa, 0xbb, 0xcc, 0xcb, 0xbb, 0xba, 0xcb, 0xcc, 0xcb, 0xbb, 0xab, 0x9a, 0x38, 0x65, 0x34, 0x25, - 0x33, 0x33, 0x22, 0x81, 0x99, 0xba, 0xcb, 0xbc, 0xac, 0xab, 0xba, 0xdc, 0xcb, 0xbb, 0xac, 0xaa, - 0x09, 0x53, 0x45, 0x24, 0x24, 0x33, 0x23, 0x01, 0x88, 0xa9, 0xba, 0xbd, 0xac, 0xaa, 0xab, 0xcc, - 0xbc, 0xcb, 0xab, 0xbb, 0x9a, 0x52, 0x54, 0x43, 0x34, 0x43, 0x32, 0x11, 0x08, 0x89, 0xaa, 0xcc, - 0xba, 0xab, 0xba, 0xdb, 0xbc, 0xcb, 0xbb, 0xbc, 0x9b, 0x20, 0x45, 0x44, 0x43, 0x34, 0x32, 0x12, - 0x00, 0x90, 0xa9, 0xbc, 0xbc, 0xab, 0xaa, 0xbc, 0xcc, 0xbb, 0xdb, 0xbb, 0xab, 0x18, 0x62, 0x53, - 0x34, 0x35, 0x32, 0x22, 0x11, 0x80, 0x99, 0xbc, 0xbc, 0xba, 0xaa, 0xbb, 0xbe, 0xbb, 0xcc, 0xcb, - 0xbb, 0x89, 0x21, 0x45, 0x63, 0x43, 0x33, 0x32, 0x21, 0x10, 0x98, 0xca, 0xcb, 0xab, 0xaa, 0xca, - 0xcb, 0xcb, 0xcb, 0xbc, 0xac, 0x9a, 0x18, 0x32, 0x46, 0x44, 0x33, 0x23, 0x23, 0x12, 0x80, 0xb9, - 0xcc, 0xaa, 0xaa, 0xbb, 0xcc, 0xcb, 0xcb, 0xbc, 0xbc, 0x9b, 0x09, 0x20, 0x45, 0x54, 0x33, 0x33, - 0x33, 0x22, 0x02, 0xa9, 0xcc, 0xba, 0xaa, 0xca, 0xbb, 0xcb, 0xbc, 0xcd, 0xcb, 0xaa, 0x98, 0x00, - 0x52, 0x54, 0x33, 0x34, 0x32, 0x32, 0x11, 0x90, 0xca, 0xbb, 0xba, 0xcb, 0xac, 0xba, 0xdb, 0xcc, - 0xac, 0xab, 0x9a, 0x89, 0x41, 0x45, 0x34, 0x34, 0x32, 0x33, 0x22, 0x80, 0xba, 0xac, 0xbb, 0xbb, - 0xad, 0xba, 0xdb, 0xcc, 0xbc, 0xac, 0x9a, 0x9a, 0x28, 0x44, 0x35, 0x34, 0x43, 0x32, 0x23, 0x01, - 0xa9, 0xaa, 0xbb, 0xdb, 0xba, 0xba, 0xcb, 0xcd, 0xcc, 0xba, 0xab, 0xab, 0x09, 0x52, 0x54, 0x33, - 0x34, 0x34, 0x32, 0x02, 0x88, 0xa9, 0xaa, 0xbb, 0xbc, 0xaa, 0xda, 0xcc, 0xcc, 0xbb, 0xbb, 0xac, - 0x8a, 0x30, 0x45, 0x34, 0x34, 0x34, 0x24, 0x02, 0x81, 0x98, 0x99, 0xaa, 0xbb, 0xaa, 0xba, 0xce, - 0xcc, 0xcb, 0xbb, 0xbb, 0xab, 0x18, 0x54, 0x34, 0x34, 0x44, 0x33, 0x22, 0x01, 0x88, 0xa8, 0xb9, - 0xac, 0x9a, 0xb9, 0xdc, 0xbc, 0xbc, 0xbc, 0xac, 0xbb, 0x09, 0x41, 0x34, 0x44, 0x53, 0x33, 0x33, - 0x12, 0x00, 0x98, 0xb9, 0xac, 0x9a, 0xaa, 0xcc, 0xcc, 0xbc, 0xcb, 0xbc, 0xbb, 0x8a, 0x10, 0x53, - 0x53, 0x34, 0x35, 0x32, 0x12, 0x01, 0x80, 0xa9, 0xba, 0xaa, 0xa9, 0xcc, 0xcc, 0xbc, 0xdb, 0xcb, - 0xbb, 0xaa, 0x00, 0x31, 0x54, 0x44, 0x43, 0x33, 0x32, 0x21, 0x00, 0x99, 0xbb, 0xaa, 0xa9, 0xdb, - 0xcc, 0xbc, 0xcb, 0xcc, 0xcb, 0x9a, 0x09, 0x10, 0x41, 0x44, 0x44, 0x23, 0x23, 0x23, 0x01, 0x90, - 0xaa, 0xaa, 0x99, 0xbb, 0xce, 0xbb, 0xbd, 0xbd, 0xad, 0xab, 0x99, 0x08, 0x31, 0x54, 0x44, 0x33, - 0x24, 0x22, 0x12, 0x80, 0x99, 0x9a, 0x98, 0xba, 0xcc, 0xcb, 0xcb, 0xcd, 0xcb, 0xab, 0x9a, 0x89, - 0x18, 0x44, 0x44, 0x34, 0x33, 0x43, 0x12, 0x81, 0x98, 0x99, 0x98, 0xaa, 0xcc, 0xba, 0xcc, 0xcc, - 0xdb, 0xba, 0xaa, 0x99, 0x09, 0x42, 0x35, 0x35, 0x34, 0x33, 0x32, 0x01, 0x90, 0x99, 0x98, 0xba, - 0xbc, 0xbc, 0xdb, 0xcc, 0xcc, 0xbb, 0xab, 0xba, 0x89, 0x31, 0x55, 0x34, 0x44, 0x32, 0x23, 0x12, - 0x80, 0x98, 0x98, 0xa9, 0xcb, 0xbb, 0xdb, 0xcc, 0xcc, 0xac, 0xba, 0xaa, 0x9a, 0x10, 0x44, 0x44, - 0x43, 0x34, 0x32, 0x12, 0x00, 0x88, 0x98, 0xa9, 0xbb, 0xac, 0xbb, 0xdd, 0xbc, 0xcc, 0xba, 0xba, - 0xaa, 0x09, 0x52, 0x34, 0x45, 0x33, 0x34, 0x22, 0x10, 0x88, 0x90, 0x99, 0xbb, 0xbb, 0xba, 0xdd, - 0xcc, 0xcb, 0xcb, 0xba, 0xba, 0x89, 0x30, 0x54, 0x34, 0x35, 0x34, 0x22, 0x01, 0x81, 0x80, 0x99, - 0xba, 0xab, 0xaa, 0xcc, 0xcd, 0xcb, 0xac, 0xbb, 0xac, 0x9a, 0x10, 0x42, 0x54, 0x43, 0x34, 0x23, - 0x12, 0x00, 0x00, 0x99, 0xaa, 0xbb, 0xaa, 0xdb, 0xcd, 0xcb, 0xbc, 0xcb, 0xbb, 0x9b, 0x09, 0x31, - 0x55, 0x34, 0x35, 0x33, 0x12, 0x02, 0x01, 0x98, 0xaa, 0xab, 0xab, 0xda, 0xcc, 0xbc, 0xbc, 0xcc, - 0xbb, 0xab, 0x89, 0x10, 0x53, 0x45, 0x44, 0x32, 0x12, 0x12, 0x01, 0x80, 0xaa, 0x9a, 0xaa, 0xb9, - 0xcd, 0xbc, 0xbc, 0xcc, 0xcb, 0xba, 0x99, 0x88, 0x31, 0x46, 0x44, 0x23, 0x33, 0x22, 0x11, 0x81, - 0xa8, 0xba, 0x99, 0xba, 0xcd, 0xbc, 0xcc, 0xcb, 0xbc, 0xbb, 0xaa, 0x89, 0x28, 0x64, 0x44, 0x33, - 0x24, 0x22, 0x12, 0x01, 0x98, 0x9a, 0x9a, 0xb9, 0xdb, 0xdb, 0xbb, 0xcd, 0xbc, 0xbb, 0xbb, 0x9a, - 0x09, 0x62, 0x45, 0x43, 0x23, 0x33, 0x23, 0x02, 0x90, 0xa9, 0x99, 0xb9, 0xdb, 0xcb, 0xbc, 0xbd, - 0xbd, 0xbc, 0xba, 0xaa, 0x8a, 0x31, 0x56, 0x43, 0x33, 0x43, 0x23, 0x12, 0x80, 0x89, 0x99, 0xa9, - 0xbb, 0xbc, 0xcc, 0xcc, 0xcc, 0xbb, 0xbb, 0xbb, 0xab, 0x28, 0x55, 0x44, 0x33, 0x34, 0x42, 0x21, - 0x00, 0x88, 0x89, 0x99, 0xaa, 0xbb, 0xbc, 0xcd, 0xcc, 0xbb, 0xcb, 0xbb, 0xab, 0x09, 0x53, 0x35, - 0x35, 0x33, 0x34, 0x23, 0x11, 0x08, 0x98, 0x99, 0xaa, 0xbb, 0xdb, 0xdc, 0xbc, 0xad, 0xbb, 0xcb, - 0xbb, 0x99, 0x31, 0x45, 0x34, 0x34, 0x34, 0x23, 0x02, 0x01, 0x88, 0x99, 0xaa, 0xaa, 0xba, 0xcd, - 0xcd, 0xcb, 0xbb, 0xbc, 0xcb, 0x9a, 0x18, 0x42, 0x35, 0x34, 0x35, 0x32, 0x12, 0x11, 0x08, 0x98, - 0x9a, 0x9a, 0xa9, 0xcc, 0xcd, 0xac, 0xcb, 0xbb, 0xcc, 0x9a, 0x09, 0x21, 0x34, 0x45, 0x24, 0x33, - 0x23, 0x21, 0x00, 0x98, 0x99, 0x9a, 0xa8, 0xda, 0xbd, 0xbd, 0xbc, 0xbc, 0xbc, 0xbb, 0x8a, 0x10, - 0x53, 0x44, 0x44, 0x32, 0x23, 0x22, 0x01, 0x80, 0x99, 0x99, 0x98, 0xc9, 0xdc, 0xcb, 0xcb, 0xcb, - 0xbc, 0xac, 0x9a, 0x88, 0x31, 0x44, 0x35, 0x34, 0x23, 0x23, 0x12, 0x00, 0x99, 0x89, 0x98, 0xb9, - 0xcd, 0xbc, 0xbd, 0xdb, 0xcb, 0xac, 0x9a, 0x89, 0x28, 0x52, 0x44, 0x43, 0x23, 0x33, 0x12, 0x01, - 0x98, 0x98, 0x88, 0xa8, 0xdb, 0xcc, 0xbb, 0xcd, 0xdb, 0xbb, 0xab, 0x9a, 0x19, 0x41, 0x45, 0x34, - 0x34, 0x32, 0x13, 0x02, 0x80, 0x98, 0x88, 0x98, 0xcb, 0xbc, 0xcc, 0xcb, 0xbd, 0xbc, 0xcb, 0xa9, - 0x89, 0x21, 0x63, 0x34, 0x34, 0x24, 0x23, 0x11, 0x80, 0x88, 0x88, 0x98, 0xaa, 0xbc, 0xbc, 0xcc, - 0xbd, 0xcc, 0xba, 0xab, 0xa9, 0x18, 0x52, 0x44, 0x34, 0x43, 0x23, 0x22, 0x00, 0x88, 0x08, 0x98, - 0xb9, 0xcb, 0xbb, 0xcd, 0xcc, 0xcc, 0xba, 0xab, 0xab, 0x89, 0x32, 0x46, 0x53, 0x33, 0x24, 0x13, - 0x01, 0x80, 0x08, 0x98, 0xa9, 0xbb, 0xbb, 0xdc, 0xcc, 0xcc, 0xbb, 0xbc, 0xba, 0x8a, 0x28, 0x63, - 0x34, 0x35, 0x43, 0x22, 0x01, 0x00, 0x00, 0x88, 0x99, 0xaa, 0xab, 0xcb, 0xce, 0xdb, 0xcb, 0xbb, - 0xac, 0x9a, 0x09, 0x32, 0x45, 0x44, 0x43, 0x22, 0x12, 0x00, 0x80, 0x80, 0x99, 0xaa, 0xa9, 0xb9, - 0xdd, 0xbc, 0xbd, 0xcb, 0xac, 0x9b, 0x8a, 0x10, 0x44, 0x44, 0x43, 0x33, 0x22, 0x11, 0x00, 0x00, - 0x99, 0x9a, 0xaa, 0xb9, 0xdd, 0xdb, 0xdb, 0xbb, 0xbc, 0xac, 0x9a, 0x18, 0x41, 0x44, 0x44, 0x32, - 0x22, 0x12, 0x10, 0x80, 0x88, 0x9a, 0x9a, 0xa9, 0xdb, 0xbd, 0xcc, 0xbc, 0xcc, 0xba, 0xaa, 0x88, - 0x20, 0x54, 0x44, 0x33, 0x33, 0x22, 0x12, 0x10, 0x98, 0x9a, 0x99, 0xa9, 0xcb, 0xdc, 0xbc, 0xcd, - 0xbb, 0xbc, 0xbb, 0x9a, 0x00, 0x63, 0x54, 0x33, 0x43, 0x21, 0x21, 0x10, 0x80, 0x89, 0x89, 0x89, - 0x9a, 0xdb, 0xdc, 0xcb, 0xcc, 0xbb, 0xcb, 0x9a, 0x89, 0x31, 0x45, 0x35, 0x33, 0x23, 0x23, 0x12, - 0x00, 0x88, 0x99, 0x98, 0x99, 0xdb, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xab, 0x9b, 0x28, 0x73, 0x44, - 0x32, 0x33, 0x32, 0x22, 0x01, 0x08, 0x98, 0x88, 0x99, 0xbb, 0xcd, 0xcc, 0xdc, 0xcb, 0xbb, 0xbb, - 0xbb, 0x09, 0x62, 0x44, 0x43, 0x33, 0x32, 0x22, 0x02, 0x00, 0x88, 0x89, 0x98, 0xab, 0xbc, 0xdd, - 0xcc, 0xbc, 0xac, 0xcb, 0xaa, 0x99, 0x21, 0x45, 0x43, 0x33, 0x34, 0x22, 0x11, 0x00, 0x88, 0x90, - 0x98, 0x9a, 0xba, 0xdc, 0xdc, 0xbc, 0xbc, 0xcb, 0xab, 0x9b, 0x18, 0x44, 0x34, 0x25, 0x33, 0x33, - 0x22, 0x01, 0x08, 0x88, 0x98, 0xaa, 0xa9, 0xcc, 0xdd, 0xbc, 0xcc, 0xca, 0xba, 0xab, 0x09, 0x32, - 0x45, 0x53, 0x32, 0x33, 0x23, 0x11, 0x00, 0x00, 0x98, 0x99, 0x9a, 0xca, 0xce, 0xbc, 0xbd, 0xdb, - 0xbb, 0xac, 0x89, 0x20, 0x43, 0x44, 0x43, 0x33, 0x23, 0x21, 0x11, 0x80, 0x88, 0x99, 0x9a, 0xa9, - 0xdd, 0xcc, 0xbc, 0xbc, 0xcc, 0xab, 0x9a, 0x18, 0x42, 0x53, 0x53, 0x32, 0x23, 0x22, 0x11, 0x01, - 0x88, 0x98, 0x89, 0x90, 0xcc, 0xcd, 0xcb, 0xbc, 0xbd, 0xac, 0x9b, 0x09, 0x21, 0x53, 0x34, 0x44, - 0x22, 0x22, 0x12, 0x01, 0x00, 0x88, 0x08, 0x88, 0xca, 0xbd, 0xcc, 0xbc, 0xcd, 0xbb, 0xab, 0x9a, - 0x10, 0x43, 0x45, 0x33, 0x34, 0x23, 0x22, 0x12, 0x81, 0x88, 0x08, 0x88, 0xc9, 0xcc, 0xdb, 0xdb, - 0xcc, 0xcb, 0xba, 0x9a, 0x08, 0x32, 0x54, 0x43, 0x43, 0x22, 0x22, 0x12, 0x81, 0x88, 0x80, 0x80, - 0xa9, 0xcb, 0xcc, 0xcc, 0xcc, 0xbc, 0xcb, 0x9a, 0x89, 0x20, 0x53, 0x53, 0x43, 0x32, 0x22, 0x23, - 0x01, 0x88, 0x00, 0x80, 0xa8, 0xba, 0xbd, 0xcd, 0xbd, 0xcd, 0xba, 0xbb, 0x9a, 0x08, 0x43, 0x44, - 0x34, 0x33, 0x24, 0x23, 0x01, 0x00, 0x80, 0x00, 0x98, 0xb9, 0xcb, 0xdc, 0xdc, 0xdb, 0xcb, 0xba, - 0xaa, 0x88, 0x20, 0x44, 0x34, 0x43, 0x33, 0x24, 0x11, 0x01, 0x00, 0x00, 0x88, 0xa8, 0xaa, 0xcc, - 0xcd, 0xcc, 0xbc, 0xac, 0xab, 0x99, 0x18, 0x33, 0x45, 0x43, 0x33, 0x24, 0x12, 0x11, 0x00, 0x10, - 0x08, 0x99, 0xa9, 0xca, 0xcd, 0xcd, 0xcc, 0xba, 0xbb, 0x9b, 0x09, 0x32, 0x35, 0x35, 0x44, 0x32, - 0x22, 0x01, 0x01, 0x01, 0x08, 0x89, 0x89, 0xaa, 0xdc, 0xcd, 0xbd, 0xbc, 0xbb, 0xab, 0x8a, 0x21, - 0x34, 0x45, 0x43, 0x43, 0x12, 0x11, 0x01, 0x00, 0x80, 0x88, 0x88, 0x98, 0xb9, 0xcf, 0xcd, 0xbb, - 0xbd, 0xba, 0x99, 0x18, 0x31, 0x54, 0x43, 0x24, 0x23, 0x12, 0x12, 0x10, 0x80, 0x88, 0x88, 0x88, - 0xa8, 0xed, 0xcc, 0xcc, 0xcb, 0xab, 0xaa, 0x88, 0x11, 0x43, 0x54, 0x33, 0x24, 0x22, 0x12, 0x11, - 0x01, 0x81, 0x80, 0x00, 0x90, 0xdc, 0xcd, 0xcc, 0xdb, 0xab, 0xab, 0x89, 0x00, 0x41, 0x53, 0x34, - 0x24, 0x32, 0x21, 0x11, 0x11, 0x80, 0x88, 0x08, 0x98, 0xda, 0xdc, 0xcc, 0xcc, 0xbb, 0xbb, 0x9a, - 0x89, 0x21, 0x45, 0x34, 0x34, 0x33, 0x22, 0x12, 0x12, 0x80, 0x88, 0x08, 0x98, 0xb9, 0xce, 0xdd, - 0xdb, 0xcb, 0xab, 0x9a, 0x8a, 0x18, 0x43, 0x45, 0x33, 0x43, 0x22, 0x12, 0x12, 0x81, 0x80, 0x80, - 0x80, 0x98, 0xdb, 0xdd, 0xcc, 0xbc, 0xac, 0xaa, 0x9a, 0x09, 0x31, 0x45, 0x43, 0x24, 0x22, 0x32, - 0x21, 0x00, 0x00, 0x08, 0x88, 0x90, 0xa8, 0xdd, 0xcd, 0xbd, 0xcb, 0xaa, 0xab, 0x89, 0x20, 0x63, - 0x34, 0x24, 0x33, 0x32, 0x23, 0x11, 0x00, 0x00, 0x80, 0x98, 0xa8, 0xfb, 0xce, 0xcc, 0xbb, 0xac, - 0xab, 0x9a, 0x08, 0x43, 0x44, 0x34, 0x42, 0x32, 0x22, 0x11, 0x01, 0x80, 0x80, 0x88, 0x88, 0xc9, - 0xde, 0xcc, 0xbb, 0xbc, 0xbb, 0xab, 0x89, 0x41, 0x44, 0x34, 0x43, 0x33, 0x32, 0x12, 0x11, 0x80, - 0x90, 0x98, 0x88, 0xb9, 0xdf, 0xcc, 0xbc, 0xac, 0xbb, 0xbb, 0x99, 0x20, 0x35, 0x35, 0x34, 0x43, - 0x23, 0x12, 0x11, 0x00, 0x90, 0x88, 0x08, 0x90, 0xdc, 0xcd, 0xbc, 0xbc, 0xac, 0xcb, 0x99, 0x08, - 0x31, 0x44, 0x43, 0x43, 0x23, 0x13, 0x12, 0x11, 0x88, 0x88, 0x00, 0x81, 0xc9, 0xce, 0xbd, 0xbd, - 0xbb, 0xad, 0x9b, 0x89, 0x20, 0x53, 0x43, 0x34, 0x43, 0x22, 0x21, 0x11, 0x80, 0x88, 0x08, 0x01, - 0x98, 0xec, 0xcc, 0xbc, 0xbc, 0xad, 0xab, 0x99, 0x00, 0x42, 0x43, 0x44, 0x23, 0x23, 0x23, 0x12, - 0x00, 0x88, 0x80, 0x10, 0x90, 0xfb, 0xbd, 0xbd, 0xcc, 0xbb, 0xbc, 0xa9, 0x08, 0x31, 0x63, 0x53, - 0x32, 0x23, 0x33, 0x22, 0x01, 0x90, 0x88, 0x10, 0x01, 0xd9, 0xcd, 0xbc, 0xcd, 0xcb, 0xac, 0xaa, - 0x89, 0x10, 0x43, 0x34, 0x34, 0x43, 0x23, 0x22, 0x02, 0x80, 0x08, 0x00, 0x01, 0xb9, 0xcd, 0xcd, - 0xdb, 0xcb, 0xbc, 0xaa, 0x9a, 0x18, 0x41, 0x34, 0x34, 0x34, 0x33, 0x23, 0x13, 0x80, 0x08, 0x00, - 0x01, 0xa0, 0xcc, 0xcd, 0xbc, 0xbe, 0xbc, 0xbb, 0xab, 0x89, 0x31, 0x54, 0x43, 0x43, 0x33, 0x33, - 0x22, 0x80, 0x80, 0x08, 0x00, 0x80, 0xcb, 0xcc, 0xdc, 0xbd, 0xbc, 0xac, 0xab, 0x8a, 0x10, 0x43, - 0x34, 0x35, 0x43, 0x23, 0x13, 0x11, 0x08, 0x08, 0x00, 0x90, 0xb9, 0xcb, 0xdd, 0xcd, 0xcb, 0xbb, - 0xac, 0x9a, 0x08, 0x32, 0x44, 0x34, 0x43, 0x24, 0x22, 0x11, 0x80, 0x80, 0x00, 0x90, 0x99, 0xa9, - 0xdc, 0xcd, 0xbc, 0xbc, 0xac, 0x9b, 0x09, 0x21, 0x43, 0x44, 0x43, 0x24, 0x23, 0x11, 0x80, 0x00, - 0x00, 0x98, 0x98, 0x98, 0xfb, 0xdb, 0xbc, 0xbd, 0xbc, 0xab, 0x99, 0x10, 0x42, 0x53, 0x43, 0x34, - 0x23, 0x22, 0x00, 0x00, 0x00, 0x98, 0x88, 0x98, 0xda, 0xdc, 0xeb, 0xdb, 0xbb, 0xac, 0x9a, 0x08, - 0x21, 0x34, 0x44, 0x43, 0x24, 0x12, 0x01, 0x10, 0x00, 0x88, 0x88, 0x98, 0xaa, 0xcd, 0xcc, 0xcc, - 0xcb, 0xbb, 0xab, 0x09, 0x20, 0x43, 0x44, 0x44, 0x33, 0x23, 0x11, 0x01, 0x00, 0x88, 0x08, 0x88, - 0x99, 0xdb, 0xcd, 0xcc, 0xbd, 0xcb, 0xab, 0x89, 0x18, 0x21, 0x34, 0x36, 0x34, 0x33, 0x12, 0x12, - 0x00, 0x88, 0x88, 0x80, 0x99, 0xba, 0xdd, 0xdc, 0xcc, 0xac, 0xbb, 0x9a, 0x88, 0x11, 0x42, 0x45, - 0x43, 0x23, 0x23, 0x12, 0x00, 0x80, 0x88, 0x88, 0x88, 0x99, 0xca, 0xed, 0xcc, 0xcc, 0xab, 0x9b, - 0x99, 0x08, 0x21, 0x45, 0x34, 0x33, 0x24, 0x12, 0x01, 0x00, 0x88, 0x88, 0x08, 0x98, 0x98, 0xec, - 0xcd, 0xcc, 0xbc, 0xaa, 0x99, 0x89, 0x10, 0x53, 0x34, 0x34, 0x33, 0x23, 0x12, 0x11, 0x00, 0x18, - 0x08, 0x00, 0x81, 0xda, 0xde, 0xcd, 0xbc, 0xab, 0xaa, 0xaa, 0x08, 0x42, 0x35, 0x34, 0x34, 0x32, - 0x12, 0x11, 0x10, 0x00, 0x10, 0x10, 0x10, 0xa8, 0xfd, 0xcd, 0xbc, 0xbb, 0xbb, 0xab, 0x99, 0x41, - 0x44, 0x53, 0x33, 0x43, 0x22, 0x01, 0x01, 0x01, 0x08, 0x01, 0x11, 0x11, 0xe9, 0xde, 0xbc, 0xcb, - 0xba, 0xab, 0x9a, 0x10, 0x43, 0x35, 0x35, 0x33, 0x33, 0x21, 0x11, 0x00, 0x00, 0x08, 0x18, 0x22, - 0xc0, 0xef, 0xcc, 0xbb, 0xcb, 0xba, 0x9a, 0x09, 0x31, 0x44, 0x44, 0x33, 0x24, 0x21, 0x11, 0x01, - 0x80, 0x88, 0x18, 0x22, 0x02, 0xed, 0xbd, 0xbd, 0xcb, 0xbb, 0xba, 0x89, 0x10, 0x43, 0x45, 0x33, - 0x24, 0x22, 0x11, 0x11, 0x00, 0x88, 0x08, 0x53, 0x12, 0xc9, 0xdd, 0xdb, 0xcb, 0xbb, 0xbb, 0x9a, - 0x88, 0x22, 0x55, 0x43, 0x32, 0x32, 0x22, 0x12, 0x02, 0x80, 0x20, 0x63, 0x32, 0x90, 0xdc, 0xcc, - 0xcc, 0xbb, 0xbc, 0xaa, 0x99, 0x18, 0x43, 0x35, 0x24, 0x33, 0x22, 0x32, 0x11, 0x80, 0x10, 0x44, - 0x33, 0x01, 0xea, 0xdb, 0xcc, 0xbc, 0xbb, 0xbb, 0xab, 0x0a, 0x41, 0x44, 0x34, 0x33, 0x33, 0x24, - 0x12, 0x00, 0x00, 0x42, 0x34, 0x12, 0xa9, 0xcd, 0xcd, 0xcb, 0xac, 0xab, 0xab, 0x8a, 0x20, 0x53, - 0x34, 0x43, 0x32, 0x33, 0x22, 0x80, 0x08, 0x42, 0x44, 0x12, 0x81, 0xca, 0xcd, 0xbd, 0xcb, 0xbb, - 0xbb, 0xab, 0x08, 0x52, 0x53, 0x32, 0x24, 0x33, 0x23, 0x01, 0x80, 0x31, 0x44, 0x33, 0x11, 0xb8, - 0xce, 0xbd, 0xcc, 0xbb, 0xac, 0xab, 0x89, 0x20, 0x34, 0x34, 0x43, 0x34, 0x32, 0x01, 0x00, 0x21, - 0x34, 0x34, 0x23, 0x81, 0xeb, 0xcc, 0xcc, 0xbb, 0xbc, 0xbb, 0x9a, 0x18, 0x43, 0x43, 0x43, 0x34, - 0x23, 0x12, 0x00, 0x30, 0x43, 0x43, 0x33, 0x12, 0xb9, 0xce, 0xbd, 0xcc, 0xcb, 0xbb, 0x9b, 0x89, - 0x21, 0x42, 0x43, 0x44, 0x23, 0x02, 0x01, 0x11, 0x42, 0x43, 0x33, 0x13, 0x90, 0xfb, 0xbc, 0xcc, - 0xbc, 0xcb, 0xab, 0x89, 0x18, 0x21, 0x43, 0x44, 0x33, 0x13, 0x11, 0x11, 0x32, 0x44, 0x34, 0x32, - 0x01, 0xb9, 0xce, 0xdb, 0xcc, 0xbb, 0xbb, 0xab, 0x88, 0x10, 0x42, 0x35, 0x25, 0x22, 0x11, 0x11, - 0x32, 0x53, 0x43, 0x33, 0x22, 0x98, 0xcc, 0xcc, 0xcc, 0xcb, 0xbb, 0xaa, 0x99, 0x88, 0x21, 0x44, - 0x34, 0x32, 0x22, 0x21, 0x32, 0x44, 0x53, 0x33, 0x22, 0x91, 0xc9, 0xcc, 0xdc, 0xcb, 0xac, 0xaa, - 0x99, 0x89, 0x18, 0x42, 0x53, 0x32, 0x22, 0x22, 0x32, 0x53, 0x34, 0x34, 0x32, 0x11, 0x98, 0xcb, - 0xdd, 0xcc, 0xbb, 0xac, 0xa9, 0xa9, 0x08, 0x31, 0x34, 0x34, 0x33, 0x33, 0x33, 0x44, 0x53, 0x33, - 0x33, 0x22, 0x80, 0xca, 0xcd, 0xcd, 0xcb, 0xab, 0xab, 0xaa, 0x89, 0x20, 0x34, 0x25, 0x33, 0x23, - 0x43, 0x33, 0x44, 0x34, 0x32, 0x12, 0x01, 0x99, 0xfb, 0xcc, 0xbc, 0xac, 0xab, 0xab, 0x9a, 0x00, - 0x42, 0x43, 0x33, 0x24, 0x33, 0x43, 0x53, 0x33, 0x34, 0x13, 0x02, 0x80, 0xca, 0xce, 0xcc, 0xbb, - 0xbb, 0xbb, 0xab, 0x89, 0x31, 0x44, 0x43, 0x23, 0x33, 0x33, 0x45, 0x33, 0x35, 0x22, 0x12, 0x12, - 0xb8, 0xed, 0xdb, 0xbb, 0xbc, 0xbb, 0xba, 0x99, 0x10, 0x32, 0x35, 0x43, 0x32, 0x24, 0x43, 0x34, - 0x24, 0x23, 0x23, 0x22, 0x91, 0xfb, 0xcc, 0xcb, 0xcb, 0xbb, 0xab, 0xaa, 0x88, 0x21, 0x43, 0x43, - 0x33, 0x34, 0x34, 0x44, 0x43, 0x32, 0x22, 0x13, 0x82, 0xc9, 0xcd, 0xcc, 0xbb, 0xbc, 0xbb, 0xab, - 0x8a, 0x00, 0x42, 0x33, 0x35, 0x32, 0x34, 0x44, 0x24, 0x23, 0x32, 0x23, 0x02, 0xb8, 0xdd, 0xcc, - 0xcb, 0xbb, 0xbc, 0xaa, 0x8a, 0x08, 0x21, 0x43, 0x24, 0x33, 0x43, 0x44, 0x43, 0x32, 0x32, 0x23, - 0x13, 0x90, 0xdc, 0xcc, 0xdb, 0xbb, 0xbc, 0xba, 0x9a, 0x88, 0x10, 0x33, 0x35, 0x32, 0x43, 0x34, - 0x35, 0x32, 0x33, 0x34, 0x23, 0x81, 0xc9, 0xdc, 0xdb, 0xcb, 0xcb, 0xba, 0xaa, 0x8a, 0x08, 0x31, - 0x34, 0x32, 0x53, 0x53, 0x33, 0x34, 0x33, 0x34, 0x33, 0x02, 0x99, 0xcc, 0xcd, 0xcb, 0xcb, 0xbb, - 0xbb, 0xaa, 0x89, 0x21, 0x43, 0x32, 0x34, 0x35, 0x34, 0x34, 0x33, 0x34, 0x24, 0x12, 0x80, 0xc9, - 0xeb, 0xcb, 0xbc, 0xbb, 0xac, 0xab, 0x8a, 0x18, 0x22, 0x33, 0x44, 0x53, 0x43, 0x33, 0x34, 0x43, - 0x23, 0x13, 0x01, 0xa8, 0xbd, 0xcd, 0xbc, 0xbc, 0xba, 0xac, 0x99, 0x08, 0x11, 0x32, 0x33, 0x45, - 0x34, 0x33, 0x43, 0x34, 0x33, 0x33, 0x02, 0xa0, 0xdb, 0xcd, 0xdb, 0xbb, 0xbc, 0xbb, 0xaa, 0x89, - 0x11, 0x22, 0x43, 0x44, 0x43, 0x33, 0x34, 0x34, 0x33, 0x24, 0x12, 0x00, 0xa9, 0xdc, 0xcc, 0xcb, - 0xbb, 0xbc, 0xbb, 0x99, 0x08, 0x11, 0x22, 0x54, 0x43, 0x33, 0x34, 0x34, 0x34, 0x23, 0x23, 0x11, - 0x98, 0xeb, 0xcc, 0xcb, 0xcb, 0xac, 0xab, 0x9b, 0x89, 0x00, 0x20, 0x43, 0x34, 0x34, 0x34, 0x34, - 0x34, 0x43, 0x22, 0x21, 0x80, 0xb9, 0xdc, 0xbc, 0xbc, 0xbd, 0xbb, 0xba, 0x99, 0x88, 0x18, 0x33, - 0x45, 0x43, 0x43, 0x43, 0x43, 0x32, 0x23, 0x22, 0x02, 0xa9, 0xdc, 0xdb, 0xcb, 0xbc, 0xac, 0xab, - 0x9a, 0x89, 0x08, 0x21, 0x43, 0x34, 0x34, 0x44, 0x43, 0x33, 0x32, 0x33, 0x12, 0x90, 0xcb, 0xcd, - 0xdb, 0xdb, 0xbb, 0xbb, 0xab, 0x9a, 0x89, 0x20, 0x42, 0x44, 0x43, 0x53, 0x33, 0x34, 0x32, 0x33, - 0x13, 0x81, 0xc9, 0xdb, 0xdb, 0xcc, 0xcb, 0xab, 0xab, 0xaa, 0x89, 0x08, 0x22, 0x34, 0x44, 0x34, - 0x34, 0x34, 0x42, 0x22, 0x22, 0x02, 0xa8, 0xb9, 0xdc, 0xcc, 0xbc, 0xbb, 0xac, 0xab, 0xa9, 0x88, - 0x10, 0x32, 0x44, 0x44, 0x24, 0x24, 0x24, 0x32, 0x32, 0x11, 0x80, 0x98, 0xdb, 0xcc, 0xcc, 0xbb, - 0xac, 0xab, 0xaa, 0x8a, 0x08, 0x21, 0x53, 0x44, 0x43, 0x34, 0x33, 0x34, 0x33, 0x12, 0x01, 0x90, - 0xca, 0xdc, 0xdb, 0xac, 0xbb, 0xcb, 0xaa, 0x99, 0x89, 0x00, 0x32, 0x45, 0x53, 0x43, 0x33, 0x34, - 0x33, 0x13, 0x12, 0x80, 0xa9, 0xdc, 0xcc, 0xbc, 0xcb, 0xba, 0xbb, 0x9b, 0x9a, 0x08, 0x21, 0x44, - 0x35, 0x25, 0x24, 0x24, 0x33, 0x22, 0x12, 0x10, 0x98, 0xca, 0xcd, 0xcb, 0xbc, 0xcb, 0xab, 0xaa, - 0xaa, 0x98, 0x10, 0x42, 0x54, 0x33, 0x44, 0x43, 0x33, 0x32, 0x12, 0x02, 0x00, 0xb9, 0xce, 0xcb, - 0xbc, 0xad, 0xab, 0xab, 0xaa, 0x99, 0x09, 0x31, 0x54, 0x43, 0x34, 0x44, 0x23, 0x33, 0x12, 0x12, - 0x01, 0xa8, 0xeb, 0xdb, 0xdb, 0xbb, 0xbc, 0xbb, 0xaa, 0x9b, 0x8a, 0x28, 0x53, 0x34, 0x45, 0x33, - 0x35, 0x32, 0x23, 0x12, 0x02, 0x90, 0xba, 0xdd, 0xdb, 0xbb, 0xeb, 0xab, 0xaa, 0xaa, 0x99, 0x08, - 0x31, 0x44, 0x34, 0x35, 0x44, 0x32, 0x22, 0x22, 0x11, 0x81, 0xa9, 0xdb, 0xcc, 0xbc, 0xcc, 0xaa, - 0xab, 0xba, 0x9a, 0x89, 0x21, 0x43, 0x35, 0x35, 0x35, 0x33, 0x33, 0x33, 0x22, 0x11, 0x98, 0xbc, - 0xbe, 0xbd, 0xad, 0xbb, 0xbb, 0xac, 0xaa, 0x89, 0x18, 0x33, 0x35, 0x45, 0x34, 0x24, 0x23, 0x23, - 0x23, 0x11, 0x91, 0xb9, 0xdc, 0xcc, 0xdb, 0xba, 0xbb, 0xcb, 0xaa, 0x9a, 0x08, 0x11, 0x43, 0x45, - 0x34, 0x34, 0x33, 0x33, 0x33, 0x23, 0x00, 0x98, 0xdb, 0xdd, 0xcb, 0xbb, 0xbc, 0xbb, 0xbb, 0xab, - 0x89, 0x10, 0x42, 0x45, 0x44, 0x43, 0x33, 0x33, 0x33, 0x23, 0x11, 0x80, 0xba, 0xcf, 0xbc, 0xbc, - 0xcb, 0xab, 0xac, 0xaa, 0x99, 0x08, 0x20, 0x53, 0x35, 0x44, 0x33, 0x33, 0x24, 0x23, 0x11, 0x01, - 0x98, 0xcc, 0xcc, 0xcb, 0xcb, 0xbb, 0xcb, 0xaa, 0x9a, 0x89, 0x18, 0x43, 0x45, 0x53, 0x33, 0x43, - 0x33, 0x32, 0x22, 0x11, 0x80, 0xda, 0xcc, 0xdb, 0xbb, 0xdb, 0xba, 0xab, 0xaa, 0x99, 0x88, 0x22, - 0x46, 0x53, 0x33, 0x34, 0x24, 0x23, 0x22, 0x21, 0x81, 0xb8, 0xdc, 0xbc, 0xbc, 0xbc, 0xbc, 0xaa, - 0xab, 0x99, 0x89, 0x28, 0x54, 0x34, 0x34, 0x44, 0x32, 0x32, 0x22, 0x22, 0x01, 0x98, 0xcc, 0xcc, - 0xcb, 0xdb, 0xba, 0xab, 0xab, 0xaa, 0x9a, 0x08, 0x53, 0x44, 0x34, 0x34, 0x43, 0x32, 0x23, 0x32, - 0x12, 0x91, 0xcb, 0xbd, 0xbd, 0xcc, 0xbb, 0xcb, 0xaa, 0x9a, 0xaa, 0x88, 0x32, 0x54, 0x53, 0x43, - 0x43, 0x32, 0x32, 0x32, 0x22, 0x82, 0xb9, 0xeb, 0xcc, 0xcb, 0xbc, 0xbb, 0xab, 0xbb, 0xbb, 0x99, - 0x11, 0x44, 0x35, 0x35, 0x34, 0x43, 0x32, 0x32, 0x33, 0x12, 0x88, 0xda, 0xdb, 0xcc, 0xcb, 0xbb, - 0xba, 0xcb, 0xaa, 0x9a, 0x08, 0x31, 0x35, 0x36, 0x53, 0x23, 0x33, 0x34, 0x32, 0x12, 0x81, 0xa9, - 0xcc, 0xcc, 0xcc, 0xab, 0xbb, 0xcb, 0xaa, 0xaa, 0x89, 0x11, 0x53, 0x44, 0x53, 0x33, 0x42, 0x23, - 0x24, 0x12, 0x01, 0x98, 0xba, 0xcd, 0xbd, 0xcb, 0xab, 0xac, 0xba, 0xaa, 0x99, 0x00, 0x41, 0x63, - 0x34, 0x33, 0x34, 0x24, 0x43, 0x22, 0x01, 0x80, 0xa8, 0xeb, 0xbc, 0xbc, 0xbc, 0xba, 0xcb, 0xaa, - 0x9a, 0x88, 0x21, 0x44, 0x35, 0x34, 0x33, 0x25, 0x33, 0x33, 0x22, 0x01, 0x98, 0xeb, 0xcc, 0xcb, - 0xbb, 0xbc, 0xbb, 0xbb, 0xab, 0x99, 0x18, 0x63, 0x44, 0x43, 0x33, 0x34, 0x34, 0x33, 0x13, 0x12, - 0x81, 0xca, 0xdc, 0xdb, 0xbb, 0xcb, 0xbb, 0xac, 0x9a, 0xa9, 0x08, 0x32, 0x45, 0x34, 0x43, 0x43, - 0x33, 0x24, 0x22, 0x12, 0x81, 0xb8, 0xcc, 0xbd, 0xbc, 0xcb, 0xcb, 0xaa, 0xab, 0xaa, 0x89, 0x20, - 0x44, 0x34, 0x34, 0x34, 0x44, 0x32, 0x22, 0x22, 0x02, 0x90, 0xcb, 0xcd, 0xcb, 0xbb, 0xad, 0xab, - 0xaa, 0xab, 0x99, 0x10, 0x44, 0x34, 0x53, 0x33, 0x35, 0x33, 0x33, 0x33, 0x22, 0x81, 0xda, 0xcc, - 0xdb, 0xbb, 0xbc, 0xbb, 0xcb, 0xaa, 0xaa, 0x08, 0x32, 0x45, 0x33, 0x45, 0x33, 0x34, 0x33, 0x33, - 0x23, 0x01, 0xb8, 0xcd, 0xbc, 0xbd, 0xbc, 0xbb, 0xbb, 0xac, 0xaa, 0x0a, 0x21, 0x34, 0x44, 0x34, - 0x34, 0x34, 0x33, 0x24, 0x22, 0x12, 0x98, 0xca, 0xcc, 0xcc, 0xbb, 0xcb, 0xab, 0xcb, 0xaa, 0x9a, - 0x00, 0x22, 0x44, 0x53, 0x43, 0x24, 0x24, 0x22, 0x23, 0x22, 0x00, 0xa9, 0xcc, 0xcc, 0xcb, 0xac, - 0xbb, 0xbb, 0xcb, 0x9a, 0x08, 0x20, 0x53, 0x43, 0x44, 0x33, 0x34, 0x43, 0x23, 0x23, 0x11, 0x90, - 0xda, 0xdb, 0xdb, 0xbb, 0xbb, 0xbc, 0xac, 0x9b, 0x89, 0x18, 0x32, 0x44, 0x34, 0x35, 0x43, 0x33, - 0x24, 0x23, 0x12, 0x81, 0xb9, 0xdc, 0xbc, 0xbc, 0xac, 0xcb, 0xab, 0xab, 0x9a, 0x18, 0x11, 0x43, - 0x45, 0x43, 0x33, 0x35, 0x32, 0x24, 0x22, 0x01, 0x88, 0xcb, 0xbd, 0xbc, 0xbc, 0xbc, 0xbb, 0xcb, - 0x9a, 0x88, 0x08, 0x31, 0x44, 0x34, 0x35, 0x33, 0x25, 0x33, 0x23, 0x22, 0x00, 0xba, 0xce, 0xbb, - 0xbd, 0xcb, 0xbb, 0xac, 0x9b, 0x99, 0x09, 0x20, 0x53, 0x34, 0x35, 0x43, 0x43, 0x43, 0x22, 0x22, - 0x11, 0xa8, 0xcb, 0xcc, 0xcb, 0xac, 0xac, 0xbb, 0xaa, 0xaa, 0x89, 0x10, 0x32, 0x46, 0x43, 0x43, - 0x43, 0x33, 0x24, 0x23, 0x13, 0x80, 0xba, 0xbd, 0xbd, 0xbc, 0xcc, 0xba, 0xba, 0xaa, 0x99, 0x88, - 0x21, 0x35, 0x35, 0x34, 0x34, 0x24, 0x24, 0x23, 0x23, 0x00, 0xa8, 0xdb, 0xbc, 0xcc, 0xcb, 0xbb, - 0xbb, 0xbb, 0xaa, 0x89, 0x20, 0x63, 0x34, 0x34, 0x35, 0x33, 0x34, 0x24, 0x23, 0x11, 0x98, 0xba, - 0xbd, 0xcd, 0xcb, 0xbb, 0xcb, 0xaa, 0xaa, 0x99, 0x18, 0x32, 0x44, 0x44, 0x33, 0x34, 0x34, 0x43, - 0x23, 0x13, 0x00, 0xa9, 0xbc, 0xcd, 0xbc, 0xbc, 0xbb, 0xbb, 0xbb, 0xab, 0x08, 0x21, 0x44, 0x35, - 0x25, 0x24, 0x43, 0x42, 0x22, 0x22, 0x01, 0x88, 0xba, 0xcd, 0xdb, 0xbb, 0xad, 0xba, 0xab, 0xaa, - 0x99, 0x00, 0x42, 0x34, 0x35, 0x34, 0x53, 0x42, 0x32, 0x23, 0x11, 0x80, 0xa9, 0xcc, 0xcc, 0xac, - 0xac, 0xab, 0xbb, 0xaa, 0x9a, 0x88, 0x31, 0x54, 0x43, 0x43, 0x43, 0x43, 0x24, 0x22, 0x22, 0x10, - 0xa8, 0xba, 0xdd, 0xcb, 0xac, 0xbb, 0xac, 0xab, 0x9a, 0x89, 0x10, 0x42, 0x44, 0x43, 0x33, 0x44, - 0x24, 0x23, 0x23, 0x02, 0x80, 0xa9, 0xcd, 0xbc, 0xbc, 0xbc, 0xbb, 0xac, 0xaa, 0x99, 0x08, 0x32, - 0x44, 0x34, 0x43, 0x34, 0x34, 0x43, 0x22, 0x12, 0x01, 0x98, 0xdb, 0xbc, 0xbd, 0xdb, 0xba, 0xbb, - 0xbb, 0xaa, 0x99, 0x21, 0x35, 0x34, 0x44, 0x43, 0x43, 0x24, 0x23, 0x22, 0x11, 0x90, 0xba, 0xcd, - 0xbc, 0xbc, 0xbc, 0xbb, 0xbb, 0xbb, 0x9a, 0x10, 0x43, 0x34, 0x35, 0x44, 0x33, 0x35, 0x33, 0x32, - 0x23, 0x81, 0xa8, 0xcc, 0xcc, 0xbc, 0xbc, 0xcb, 0xba, 0xba, 0x9a, 0x08, 0x21, 0x34, 0x35, 0x34, - 0x35, 0x43, 0x33, 0x33, 0x33, 0x11, 0x98, 0xdb, 0xcc, 0xbc, 0xbc, 0xbc, 0xba, 0xbb, 0xbb, 0x88, - 0x20, 0x43, 0x44, 0x43, 0x44, 0x33, 0x34, 0x33, 0x33, 0x12, 0x81, 0xaa, 0xcd, 0xcc, 0xcb, 0xbb, - 0xbc, 0xbb, 0xbb, 0x99, 0x08, 0x22, 0x34, 0x45, 0x53, 0x33, 0x34, 0x43, 0x23, 0x22, 0x11, 0x98, - 0xc9, 0xcc, 0xbc, 0xbc, 0xbc, 0xcb, 0xab, 0xaa, 0x88, 0x00, 0x22, 0x44, 0x34, 0x35, 0x43, 0x34, - 0x23, 0x33, 0x21, 0x00, 0xa9, 0xdc, 0xbc, 0xdb, 0xbb, 0xbc, 0xac, 0xaa, 0x8a, 0x88, 0x11, 0x42, - 0x44, 0x43, 0x43, 0x43, 0x33, 0x24, 0x21, 0x01, 0x80, 0xca, 0xbc, 0xcc, 0xcb, 0xcb, 0xbb, 0xac, - 0x99, 0x89, 0x00, 0x22, 0x44, 0x53, 0x33, 0x35, 0x33, 0x24, 0x22, 0x12, 0x00, 0xaa, 0xbd, 0xbd, - 0xdb, 0xcb, 0xcb, 0xaa, 0xaa, 0x99, 0x09, 0x20, 0x53, 0x43, 0x34, 0x44, 0x33, 0x43, 0x22, 0x22, - 0x01, 0xa8, 0xca, 0xcc, 0xdb, 0xcb, 0xcb, 0xba, 0xba, 0x9a, 0x99, 0x10, 0x32, 0x35, 0x35, 0x35, - 0x34, 0x43, 0x22, 0x23, 0x11, 0x80, 0xb9, 0xbd, 0xcc, 0xdb, 0xcb, 0xbb, 0xba, 0xab, 0x8a, 0x09, - 0x21, 0x44, 0x53, 0x34, 0x34, 0x34, 0x32, 0x33, 0x23, 0x01, 0xa9, 0xcb, 0xcc, 0xdc, 0xbb, 0xbc, - 0xbb, 0xac, 0xa9, 0x89, 0x10, 0x31, 0x63, 0x44, 0x33, 0x44, 0x32, 0x33, 0x22, 0x12, 0x88, 0xaa, - 0xdb, 0xcd, 0xcb, 0xbc, 0xbb, 0xbb, 0xbb, 0xaa, 0x08, 0x21, 0x44, 0x45, 0x43, 0x43, 0x43, 0x32, - 0x23, 0x12, 0x00, 0x88, 0xcb, 0xcc, 0xcc, 0xcb, 0xca, 0xaa, 0xab, 0x99, 0x89, 0x08, 0x32, 0x45, - 0x44, 0x33, 0x34, 0x34, 0x32, 0x22, 0x01, 0x80, 0xaa, 0xdc, 0xdb, 0xbc, 0xbb, 0xbc, 0xbb, 0xaa, - 0x9a, 0x09, 0x21, 0x45, 0x34, 0x35, 0x43, 0x24, 0x33, 0x22, 0x11, 0x01, 0xa8, 0xca, 0xcd, 0xdb, - 0xca, 0xab, 0xbb, 0xab, 0xaa, 0x89, 0x00, 0x53, 0x44, 0x34, 0x53, 0x33, 0x24, 0x32, 0x21, 0x01, - 0x80, 0xba, 0xcd, 0xbc, 0xcc, 0xcb, 0xba, 0xba, 0xaa, 0x99, 0x08, 0x31, 0x54, 0x34, 0x53, 0x34, - 0x33, 0x23, 0x23, 0x21, 0x00, 0xb8, 0xcc, 0xbd, 0xcc, 0xbc, 0xbb, 0xbb, 0xab, 0xba, 0x99, 0x11, - 0x44, 0x44, 0x53, 0x43, 0x33, 0x24, 0x22, 0x12, 0x02, 0x88, 0xba, 0xcd, 0xcc, 0xbb, 0xdb, 0x6c, - 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, 0xd0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, - 0xf8, 0x71, 0xff, 0x4f, 0x31, 0x17, 0xb3, 0x7a, 0x06, 0xa9, 0x08, 0xcb, 0x09, 0x14, 0x32, 0xfa, - 0x1a, 0xb0, 0x2a, 0x04, 0xb0, 0xbf, 0x08, 0x08, 0x00, 0x08, 0x00, 0x10, 0x89, 0x52, 0x05, 0x49, - 0x36, 0x13, 0xb9, 0x9a, 0x29, 0x13, 0x17, 0xac, 0x31, 0xc1, 0x2a, 0xa4, 0xbd, 0xae, 0x78, 0x91, - 0x9b, 0x10, 0xa1, 0x21, 0x03, 0x19, 0x82, 0x10, 0x73, 0x83, 0x8b, 0xa8, 0x3a, 0x25, 0x00, 0x98, - 0x99, 0x89, 0xcb, 0x80, 0xff, 0x39, 0x14, 0xea, 0xab, 0x18, 0x42, 0xa2, 0x8f, 0x11, 0x9a, 0x00, - 0x88, 0x30, 0x02, 0xab, 0x31, 0x83, 0x72, 0xa7, 0x8c, 0x80, 0x28, 0x13, 0xcb, 0x39, 0x84, 0x8a, - 0x33, 0xa8, 0xba, 0x88, 0x8a, 0x47, 0x82, 0xbc, 0x31, 0xb0, 0x0a, 0x52, 0x12, 0x99, 0x21, 0x52, - 0x03, 0xed, 0x29, 0x83, 0x0b, 0x25, 0x99, 0x21, 0xa2, 0xdb, 0x0e, 0x35, 0x11, 0x8a, 0xb0, 0x0c, - 0x41, 0xb8, 0x0b, 0x33, 0xfb, 0x8c, 0x11, 0x99, 0x99, 0x10, 0x31, 0x91, 0x89, 0x58, 0x15, 0xa8, - 0x0a, 0x26, 0x80, 0xa8, 0xed, 0xcb, 0x39, 0x33, 0x92, 0xac, 0xca, 0x9b, 0x18, 0x22, 0x04, 0xad, - 0x19, 0xa1, 0x8b, 0x22, 0x42, 0x47, 0xb9, 0x39, 0x25, 0x81, 0xb9, 0x58, 0x02, 0x91, 0x8d, 0x42, - 0xc1, 0x0a, 0x30, 0x04, 0xaf, 0x41, 0x03, 0xdb, 0x18, 0x20, 0x03, 0x88, 0xb8, 0x29, 0x46, 0x08, - 0x14, 0xa9, 0x18, 0x00, 0xa9, 0xfb, 0x9a, 0x71, 0xa2, 0xbb, 0x19, 0xb8, 0x8b, 0x21, 0x20, 0x06, - 0xbc, 0x0a, 0x88, 0x52, 0x90, 0x90, 0x0c, 0x43, 0x26, 0xb8, 0x8a, 0x91, 0x10, 0x9a, 0x03, 0x9d, - 0x91, 0xba, 0xff, 0x19, 0x90, 0x08, 0xaa, 0xcb, 0x2a, 0x24, 0x00, 0x98, 0x20, 0x44, 0xa8, 0x78, - 0x04, 0x8a, 0x33, 0x33, 0x67, 0xa8, 0x09, 0x80, 0x80, 0x90, 0xac, 0xb9, 0x9a, 0x29, 0x25, 0x25, - 0xe8, 0x8a, 0x01, 0x30, 0x43, 0x02, 0x9b, 0x23, 0x58, 0x85, 0xbb, 0x2a, 0x25, 0x42, 0x90, 0x9a, - 0xac, 0x42, 0x02, 0x28, 0xf8, 0x0d, 0x08, 0xdb, 0x00, 0x1a, 0x23, 0xb8, 0x9c, 0x98, 0xaf, 0x01, - 0x10, 0xb1, 0x9c, 0x18, 0x23, 0xeb, 0x0a, 0x08, 0x24, 0x11, 0x31, 0xa1, 0x99, 0x58, 0x57, 0xb8, - 0x28, 0xb8, 0x19, 0x33, 0x31, 0x83, 0xed, 0x9c, 0x34, 0xeb, 0x1a, 0x32, 0x91, 0x0a, 0x82, 0x0b, - 0x01, 0x64, 0x01, 0x20, 0x33, 0x11, 0xb8, 0x11, 0xfa, 0x2d, 0x27, 0xb8, 0x99, 0x89, 0x98, 0x0b, - 0x04, 0xbd, 0x43, 0xa0, 0xad, 0x02, 0x2b, 0x37, 0xb9, 0x09, 0x99, 0x22, 0x52, 0x12, 0x11, 0xfb, - 0x58, 0x02, 0xb9, 0xba, 0x9d, 0x11, 0x32, 0xd8, 0xbc, 0x9a, 0x31, 0x24, 0x93, 0xad, 0xaa, 0x41, - 0x83, 0xbd, 0x41, 0xb0, 0x3a, 0x16, 0x11, 0xa8, 0x89, 0x31, 0x05, 0xbc, 0x8a, 0x31, 0xc0, 0x8a, - 0x09, 0x36, 0x82, 0x8a, 0xbc, 0x24, 0x90, 0x3a, 0x07, 0xb9, 0x0d, 0x04, 0x8a, 0x18, 0x54, 0x14, - 0xca, 0x18, 0x11, 0x01, 0xdb, 0x61, 0x11, 0xea, 0x18, 0x00, 0x92, 0x18, 0x88, 0x9a, 0xb9, 0x0d, - 0xb8, 0x08, 0x8b, 0xa1, 0x40, 0x40, 0x02, 0x08, 0xe8, 0x71, 0x96, 0x18, 0x90, 0x00, 0x88, 0x00, - 0xcb, 0xb9, 0x72, 0x86, 0xaa, 0x89, 0x21, 0xb1, 0x9e, 0x80, 0x42, 0xc8, 0x29, 0x82, 0xca, 0x18, - 0xa1, 0x48, 0xc1, 0xab, 0x8d, 0x13, 0x42, 0xb0, 0x19, 0x8a, 0x73, 0x84, 0x8b, 0x82, 0x38, 0x55, - 0x82, 0xaa, 0x21, 0xad, 0x41, 0xa4, 0x0d, 0xa0, 0x0b, 0x40, 0x13, 0x89, 0x90, 0x99, 0x19, 0x93, - 0x8d, 0x53, 0xc3, 0x2b, 0x37, 0x90, 0x20, 0x88, 0x13, 0xfd, 0x39, 0x14, 0x00, 0x89, 0x90, 0xbc, - 0xa9, 0xae, 0x98, 0x48, 0x82, 0xa9, 0x00, 0xea, 0x09, 0xbc, 0x53, 0xa9, 0x89, 0x02, 0x19, 0x17, - 0x98, 0x11, 0x34, 0x33, 0xc0, 0x0d, 0x02, 0xbd, 0x18, 0x80, 0x20, 0x22, 0x0d, 0x87, 0x8b, 0x02, - 0x42, 0xa8, 0xa9, 0x0b, 0x00, 0x51, 0x91, 0x31, 0xeb, 0xb9, 0x60, 0x02, 0xd0, 0x9d, 0x08, 0x31, - 0x14, 0xa8, 0x8c, 0x03, 0x08, 0x16, 0x89, 0x01, 0xc0, 0x78, 0x03, 0xb9, 0x2a, 0xea, 0x10, 0x88, - 0x80, 0x01, 0xb0, 0x4c, 0x84, 0xa1, 0x0e, 0x80, 0x22, 0x11, 0xfa, 0x1b, 0x02, 0x80, 0x09, 0xd1, - 0x2a, 0x02, 0x90, 0x0d, 0x93, 0x8d, 0x13, 0xc8, 0xac, 0x10, 0x15, 0x38, 0x15, 0x00, 0xfb, 0x19, - 0x98, 0x23, 0xb9, 0x19, 0xf8, 0x2a, 0x83, 0x0a, 0xec, 0x49, 0x93, 0x9d, 0x52, 0x13, 0x08, 0xd9, - 0x29, 0x80, 0x32, 0x02, 0xca, 0xc9, 0x9c, 0x42, 0x93, 0x8a, 0x12, 0xda, 0x39, 0x17, 0x9a, 0xa1, - 0x10, 0x2b, 0x17, 0x89, 0x20, 0xc0, 0x28, 0x90, 0x88, 0xb0, 0x9f, 0x32, 0x26, 0xc9, 0x00, 0x0a, - 0xb9, 0x41, 0x89, 0xa1, 0x3a, 0xdb, 0x12, 0x0b, 0x23, 0xdf, 0x33, 0x89, 0x11, 0xd9, 0x49, 0xc1, - 0x29, 0xa3, 0x8a, 0x10, 0x34, 0x82, 0xd8, 0x2a, 0xba, 0xc2, 0xac, 0x19, 0xf8, 0x1c, 0x13, 0xcb, - 0x39, 0xb2, 0x3a, 0x05, 0x9c, 0x02, 0x52, 0x00, 0x81, 0x21, 0x88, 0x74, 0x87, 0x89, 0x91, 0x28, - 0xa1, 0x19, 0xb2, 0xaf, 0xaa, 0x32, 0x90, 0x8a, 0x45, 0x12, 0x98, 0x9a, 0x30, 0x47, 0xb8, 0x91, - 0xae, 0x29, 0x14, 0x80, 0x28, 0xe8, 0x49, 0x34, 0xb0, 0xbd, 0x88, 0x8a, 0x51, 0x83, 0xaa, 0x08, - 0x90, 0xe1, 0x0e, 0x83, 0xab, 0x10, 0x21, 0x83, 0xcd, 0x19, 0x11, 0x50, 0x06, 0x08, 0x90, 0x19, - 0xc0, 0x18, 0x9c, 0x13, 0xaa, 0x39, 0x83, 0x89, 0x34, 0xca, 0xca, 0x0a, 0x67, 0x91, 0x09, 0xca, - 0xab, 0x42, 0x21, 0x15, 0xfa, 0x19, 0x90, 0x22, 0x12, 0x88, 0x82, 0xbc, 0x58, 0x14, 0x20, 0x82, - 0xab, 0x12, 0xa9, 0xe9, 0x68, 0xd1, 0x9a, 0x90, 0xab, 0x11, 0x04, 0x8c, 0x91, 0x38, 0x91, 0x62, - 0xb8, 0x1a, 0x23, 0x54, 0x91, 0xbd, 0x08, 0x1a, 0x05, 0x58, 0xd8, 0x18, 0x20, 0x91, 0xbf, 0x20, - 0x88, 0x88, 0x9a, 0x08, 0x52, 0x91, 0xac, 0x18, 0x24, 0x30, 0xa1, 0x24, 0xae, 0x14, 0x88, 0x20, - 0x02, 0x43, 0xc8, 0x2b, 0x35, 0xa8, 0xad, 0x08, 0xe1, 0x0c, 0xb0, 0x20, 0x19, 0xa8, 0x57, 0x00, - 0x09, 0xc1, 0x9d, 0x09, 0x20, 0x85, 0x8b, 0x10, 0x83, 0x1b, 0x24, 0x32, 0xa8, 0xa8, 0x0b, 0xc8, - 0x75, 0xa3, 0x0b, 0xf8, 0x39, 0xa1, 0x98, 0x0a, 0xfa, 0x51, 0xa1, 0x29, 0x02, 0xab, 0x20, 0x90, - 0x29, 0xe9, 0x51, 0x32, 0xa0, 0x80, 0x18, 0xb9, 0x48, 0x53, 0x94, 0x9a, 0xde, 0x89, 0x21, 0x99, - 0xf0, 0x3a, 0x82, 0x02, 0x0b, 0xb0, 0xad, 0x99, 0x62, 0x90, 0x43, 0xca, 0x18, 0x20, 0x82, 0x88, - 0x53, 0x91, 0x39, 0x77, 0x81, 0xaa, 0x29, 0xc2, 0x8a, 0x80, 0xa9, 0x8b, 0x83, 0x09, 0x64, 0xb1, - 0xaa, 0x41, 0xa1, 0x88, 0x1b, 0xa5, 0x38, 0x38, 0x77, 0x90, 0x9a, 0x11, 0x89, 0x12, 0x98, 0x54, - 0xd1, 0x8b, 0xb2, 0x2b, 0xf9, 0x09, 0x8a, 0x22, 0x88, 0xdb, 0x50, 0xb0, 0x8a, 0x52, 0x83, 0x32, - 0xfa, 0xa9, 0x8e, 0x23, 0x88, 0x20, 0x25, 0x08, 0xa3, 0x0c, 0x01, 0x10, 0x21, 0xb0, 0x0d, 0x04, - 0xb9, 0xbb, 0x2a, 0xf8, 0x3b, 0xda, 0x49, 0x13, 0x99, 0x18, 0x11, 0x8b, 0xd3, 0x8e, 0x63, 0x02, - 0x11, 0xec, 0x18, 0x01, 0x98, 0x99, 0x11, 0x18, 0x02, 0xaa, 0x46, 0x0a, 0x17, 0x99, 0xab, 0x91, - 0x2b, 0x27, 0x01, 0x19, 0xe8, 0x9a, 0x01, 0x18, 0xa8, 0x2a, 0x13, 0x22, 0xff, 0x89, 0x23, 0x98, - 0xa9, 0x89, 0x52, 0xc8, 0x89, 0x9c, 0x13, 0x12, 0x3a, 0x27, 0x30, 0x91, 0x89, 0x42, 0x11, 0x2a, - 0x97, 0xbe, 0x99, 0x20, 0x18, 0xa2, 0x81, 0xcf, 0x0a, 0xa0, 0x20, 0x62, 0x13, 0xdb, 0x30, 0x20, - 0x82, 0x80, 0x11, 0xbd, 0x43, 0x53, 0x82, 0xad, 0x33, 0xa9, 0x09, 0x81, 0x91, 0xcd, 0x9d, 0xc9, - 0x29, 0x32, 0x84, 0xa8, 0xdc, 0x9b, 0x33, 0x98, 0x20, 0x0a, 0x94, 0x7a, 0xb3, 0x60, 0xd0, 0x29, - 0x12, 0x02, 0x32, 0xcd, 0x21, 0x99, 0xa8, 0x2b, 0x94, 0x8a, 0x44, 0x01, 0xf9, 0x9d, 0x08, 0x02, - 0x28, 0xa1, 0x19, 0x10, 0x02, 0x3a, 0x67, 0xa9, 0x09, 0xa9, 0x34, 0x89, 0x32, 0xd9, 0x8b, 0x20, - 0x85, 0x09, 0x82, 0x22, 0xdd, 0x11, 0xda, 0x8c, 0x82, 0x9c, 0xa0, 0x0b, 0x22, 0xa0, 0x63, 0x19, - 0x37, 0x19, 0x82, 0xac, 0x40, 0x14, 0x42, 0xb0, 0x0a, 0x1a, 0x35, 0x90, 0xba, 0x19, 0xf8, 0x8c, - 0x88, 0xa8, 0xbc, 0x9a, 0x20, 0x32, 0x90, 0x32, 0x98, 0x0a, 0x44, 0x57, 0xd9, 0x29, 0x24, 0x90, - 0x8a, 0x20, 0x14, 0x88, 0x9b, 0x28, 0xa6, 0xaf, 0x88, 0x00, 0x01, 0xdb, 0x28, 0x80, 0x13, 0x89, - 0xa0, 0x9b, 0x23, 0x72, 0xa0, 0xfa, 0x39, 0xa8, 0x74, 0x22, 0x90, 0x09, 0x90, 0x63, 0xb8, 0x9a, - 0x49, 0x03, 0xa0, 0xab, 0x9b, 0xb1, 0x9e, 0x82, 0x9f, 0x00, 0xa9, 0x19, 0xa0, 0x1a, 0x37, 0xca, - 0x58, 0x82, 0x4a, 0x16, 0x20, 0x81, 0xb9, 0x2a, 0x24, 0xc1, 0x8c, 0x89, 0xb0, 0x5b, 0x81, 0x90, - 0xcb, 0x8b, 0x00, 0xd1, 0x1b, 0x34, 0xf9, 0x09, 0x90, 0x89, 0x11, 0xda, 0x3a, 0x13, 0x76, 0x23, - 0xc9, 0x0b, 0x22, 0x18, 0x90, 0xa8, 0x9e, 0x00, 0x80, 0x64, 0x91, 0x2b, 0xf9, 0x09, 0x10, 0x11, - 0x12, 0xaa, 0x88, 0x8a, 0xad, 0x33, 0x82, 0x2d, 0x47, 0x08, 0x91, 0xba, 0x38, 0x82, 0x0a, 0xd8, - 0x8b, 0x70, 0xb3, 0x9c, 0x9a, 0x01, 0x29, 0x17, 0xa9, 0x99, 0xca, 0x48, 0x82, 0xae, 0x88, 0x41, - 0x24, 0x80, 0xb8, 0x0a, 0x00, 0x88, 0x73, 0x03, 0xaa, 0x41, 0x98, 0x08, 0x17, 0x88, 0xeb, 0x08, - 0x02, 0xba, 0x89, 0x12, 0x1e, 0x27, 0x9a, 0xbb, 0x18, 0x22, 0x02, 0x28, 0xf0, 0x3a, 0x22, 0x26, - 0xba, 0x09, 0x90, 0x22, 0xcb, 0x33, 0xce, 0x38, 0x04, 0xbe, 0x00, 0x22, 0xb9, 0x30, 0xc2, 0x8c, - 0x90, 0x58, 0xc1, 0x51, 0x12, 0x81, 0x89, 0x98, 0x09, 0x24, 0x80, 0x08, 0x01, 0xdc, 0x99, 0x1c, - 0x24, 0xa0, 0x8f, 0xb8, 0x42, 0xc8, 0x38, 0xa3, 0x2c, 0x85, 0x9a, 0x09, 0xc8, 0x9a, 0x8b, 0x85, - 0x9d, 0x12, 0x0a, 0x82, 0xd9, 0xad, 0x88, 0x72, 0x82, 0x8c, 0x33, 0x21, 0x24, 0x32, 0xd1, 0x4b, - 0xa4, 0x39, 0x01, 0x01, 0xbb, 0x30, 0x03, 0x88, 0xc0, 0xff, 0x99, 0x80, 0x21, 0x13, 0xee, 0x99, - 0x18, 0x12, 0x01, 0x81, 0xad, 0x48, 0x24, 0x00, 0x98, 0xc9, 0x19, 0x13, 0x00, 0x25, 0x98, 0xbf, - 0x42, 0x80, 0x99, 0x9c, 0xb8, 0x8b, 0x91, 0x53, 0x08, 0xe2, 0x3b, 0xb1, 0x28, 0x12, 0xca, 0x72, - 0x07, 0x18, 0xa8, 0x20, 0x99, 0x80, 0x80, 0xc9, 0x29, 0x17, 0x99, 0x89, 0x53, 0xc0, 0xab, 0x28, - 0x06, 0xa9, 0x09, 0x00, 0x81, 0xcd, 0xa9, 0x10, 0x82, 0x90, 0x28, 0xf9, 0x29, 0x73, 0x04, 0xaa, - 0x31, 0x32, 0x03, 0x81, 0xaf, 0x10, 0x90, 0x73, 0xb0, 0x10, 0x21, 0xc9, 0x08, 0xcc, 0x98, 0xda, - 0x8a, 0x88, 0x40, 0x84, 0xbb, 0x8a, 0x22, 0x53, 0x92, 0xbc, 0x22, 0x71, 0xa3, 0x0c, 0x10, 0xb8, - 0x61, 0x32, 0x03, 0xca, 0x0c, 0x23, 0xba, 0x28, 0xbf, 0xb0, 0x19, 0x88, 0xd0, 0x2b, 0x24, 0x9a, - 0x05, 0x1b, 0x55, 0xa1, 0x8b, 0x03, 0x88, 0x11, 0x00, 0x36, 0x92, 0x0a, 0x11, 0xa9, 0xb8, 0x4b, - 0x97, 0x9e, 0xa9, 0x9b, 0xca, 0x0c, 0x14, 0x11, 0xfa, 0x10, 0xba, 0x41, 0x14, 0x98, 0x30, 0x90, - 0x64, 0x01, 0x00, 0x08, 0x41, 0xf8, 0x19, 0xba, 0x10, 0x81, 0xca, 0x19, 0x98, 0x72, 0x22, 0x98, - 0x00, 0xac, 0x33, 0xac, 0xa8, 0x8c, 0xd8, 0x40, 0x83, 0x9c, 0xa0, 0x3a, 0x35, 0x93, 0xad, 0x98, - 0xd9, 0x0b, 0x04, 0x51, 0x32, 0xa2, 0x8a, 0x28, 0xa2, 0x29, 0x98, 0xb9, 0x2c, 0xe8, 0x11, 0x0c, - 0x67, 0x91, 0x8a, 0xa8, 0x0b, 0x00, 0x37, 0x88, 0xa9, 0x27, 0xa9, 0x88, 0x98, 0xbc, 0x19, 0x82, - 0x48, 0xc3, 0x8c, 0x81, 0x2b, 0xc3, 0x18, 0x90, 0x79, 0x95, 0x19, 0x98, 0x21, 0x89, 0x80, 0xad, - 0x45, 0xb8, 0x48, 0x05, 0xba, 0x18, 0x03, 0x8e, 0x88, 0x82, 0xcb, 0x40, 0x99, 0x14, 0x29, 0xb0, - 0x28, 0xa1, 0x0b, 0x20, 0x94, 0xaa, 0x2b, 0xc6, 0x8f, 0x91, 0x50, 0x03, 0x31, 0xc8, 0x99, 0x8b, - 0x30, 0x37, 0xf9, 0x0b, 0x80, 0x08, 0x14, 0xaa, 0xa0, 0x1c, 0xa1, 0x2b, 0x07, 0x08, 0x90, 0x10, - 0xaa, 0x18, 0xb3, 0x79, 0x77, 0x81, 0x8a, 0x10, 0x90, 0x41, 0x80, 0xc0, 0x1a, 0xb8, 0x9b, 0xc8, - 0x8d, 0x82, 0x89, 0x11, 0x98, 0xac, 0x36, 0x99, 0xb0, 0x9e, 0x99, 0x42, 0x12, 0x89, 0x10, 0x98, - 0xba, 0x70, 0x37, 0x98, 0x90, 0x08, 0x14, 0x00, 0x00, 0xa0, 0x60, 0xc8, 0x9b, 0x11, 0xcb, 0xb9, - 0x1b, 0xc1, 0x48, 0xe2, 0x8d, 0x01, 0x35, 0x11, 0xb0, 0x0d, 0x23, 0x1a, 0x05, 0x2a, 0x12, 0x34, - 0xea, 0x99, 0x9b, 0x32, 0x01, 0x18, 0xa2, 0x19, 0xff, 0x9b, 0x28, 0x80, 0x90, 0x29, 0x12, 0xf9, - 0x0e, 0x12, 0xa9, 0x20, 0x91, 0x51, 0xc0, 0x08, 0x41, 0x03, 0x63, 0x22, 0x81, 0x8c, 0x43, 0xb9, - 0x18, 0xbd, 0x08, 0x9a, 0xa1, 0xdc, 0x0b, 0xc0, 0xaa, 0xab, 0xc8, 0x4a, 0x04, 0x18, 0x01, 0xb9, - 0x68, 0x37, 0x12, 0x88, 0xa9, 0x59, 0x05, 0x9a, 0x11, 0x33, 0x99, 0x11, 0xeb, 0xaa, 0x8d, 0x44, - 0xa8, 0xaa, 0x18, 0xa8, 0x19, 0x23, 0xce, 0xa9, 0x0c, 0x15, 0x28, 0x24, 0x08, 0x82, 0x8d, 0x12, - 0x08, 0x45, 0xb0, 0x8c, 0x33, 0xc1, 0x1a, 0xc9, 0xb9, 0x9e, 0x08, 0x41, 0xb1, 0x8b, 0x23, 0x23, - 0xd8, 0x89, 0xbe, 0x61, 0x01, 0x99, 0x28, 0x93, 0xaa, 0xa9, 0x3b, 0x57, 0x8a, 0x13, 0x09, 0x04, - 0x9a, 0x18, 0x75, 0x92, 0xbd, 0x08, 0x80, 0x21, 0x01, 0x88, 0xa0, 0x72, 0x01, 0xe9, 0x8a, 0x01, - 0xaa, 0xa8, 0xac, 0x28, 0x27, 0x89, 0x01, 0xca, 0x8b, 0x44, 0x21, 0x04, 0x99, 0x9a, 0x62, 0xa1, - 0x9b, 0x81, 0x8a, 0xb9, 0x73, 0x94, 0xba, 0xac, 0x09, 0x91, 0x31, 0x57, 0x83, 0x89, 0xfb, 0x1a, - 0x33, 0x98, 0x01, 0xa9, 0x72, 0xb2, 0x39, 0xb1, 0xbd, 0x28, 0x84, 0x31, 0x13, 0xfa, 0x09, 0x80, - 0x9b, 0xa9, 0x81, 0x2c, 0x84, 0xbb, 0x40, 0x93, 0x0c, 0x93, 0x39, 0x47, 0x01, 0x99, 0x91, 0x0d, - 0x12, 0x81, 0x0a, 0xb1, 0x41, 0xee, 0xab, 0x30, 0x14, 0xa0, 0xcb, 0x09, 0xa0, 0x8b, 0x0c, 0x07, - 0x40, 0x81, 0x98, 0x89, 0x60, 0x84, 0x29, 0x15, 0x08, 0x92, 0x8d, 0xb0, 0x19, 0xd9, 0xaa, 0x3a, - 0x05, 0x40, 0x81, 0x21, 0xbd, 0xcb, 0x41, 0x34, 0x90, 0x10, 0x89, 0x9b, 0x27, 0x89, 0xb9, 0x1a, - 0x15, 0xae, 0x80, 0x99, 0x08, 0x82, 0xbd, 0x10, 0x72, 0x85, 0x18, 0x88, 0x12, 0x08, 0x02, 0xaa, - 0x89, 0xfa, 0x99, 0x3b, 0xa5, 0xae, 0x98, 0x39, 0x07, 0x9a, 0x09, 0xb0, 0x1b, 0x54, 0x14, 0x9a, - 0xaa, 0x88, 0x39, 0x16, 0x81, 0x38, 0x02, 0x20, 0x24, 0xb9, 0x10, 0x29, 0x87, 0x0b, 0xc9, 0xa8, - 0xaf, 0x9a, 0x10, 0xb8, 0xab, 0xbd, 0x35, 0xbb, 0x61, 0x25, 0x99, 0xa8, 0x00, 0x09, 0x33, 0x04, - 0x99, 0x42, 0x15, 0x99, 0x11, 0xca, 0x51, 0xe8, 0x8c, 0x11, 0x00, 0x80, 0x09, 0x80, 0x21, 0xa0, - 0xae, 0xa8, 0x50, 0x23, 0x02, 0xfa, 0x8b, 0x42, 0xd0, 0x28, 0x00, 0x20, 0x37, 0x08, 0x81, 0x89, - 0xfb, 0x29, 0x91, 0x91, 0xcf, 0x19, 0x92, 0x9a, 0x08, 0x80, 0x88, 0x46, 0x90, 0xb9, 0x19, 0x90, - 0x60, 0x13, 0x88, 0x31, 0xca, 0x12, 0x30, 0xb8, 0x52, 0x74, 0x02, 0xb9, 0xbf, 0x20, 0x22, 0xa8, - 0xe8, 0x1c, 0x03, 0x9a, 0x08, 0x89, 0x73, 0x03, 0xa8, 0xcc, 0x18, 0x02, 0x11, 0x89, 0x93, 0x1c, - 0x46, 0xa1, 0x09, 0x89, 0x43, 0x02, 0xbb, 0xd9, 0x9f, 0x82, 0xa9, 0x9b, 0x18, 0x12, 0x98, 0x4a, - 0x17, 0x8a, 0x21, 0x27, 0x99, 0x88, 0x30, 0xe2, 0x39, 0x81, 0x08, 0xa9, 0x9c, 0xb9, 0x63, 0xc8, - 0xba, 0x9a, 0x18, 0xf2, 0x1d, 0x03, 0x00, 0x89, 0x11, 0x10, 0x33, 0x45, 0x91, 0x9e, 0x31, 0x23, - 0x00, 0x08, 0x81, 0xda, 0x5a, 0x04, 0x80, 0x38, 0xdb, 0x43, 0x99, 0xb9, 0xbf, 0x99, 0xaa, 0xa9, - 0x30, 0x00, 0x80, 0x47, 0xa8, 0xb0, 0x0f, 0x34, 0x89, 0x15, 0x20, 0xa0, 0x8a, 0x09, 0x23, 0x28, - 0x85, 0xab, 0xac, 0x91, 0x7a, 0x83, 0x9a, 0xda, 0x8c, 0x81, 0x88, 0x1b, 0xd1, 0x9c, 0x19, 0x46, - 0xa8, 0x9b, 0x31, 0x11, 0x22, 0x14, 0xcb, 0x60, 0x13, 0x12, 0x00, 0xd8, 0x1b, 0x95, 0x3c, 0xe2, - 0x8b, 0x23, 0x80, 0xc9, 0x0a, 0xc8, 0x8a, 0x35, 0x91, 0x9a, 0x00, 0xcd, 0x11, 0x9b, 0x13, 0x08, - 0x61, 0xa3, 0x9c, 0x08, 0x47, 0x81, 0xc0, 0x1a, 0x31, 0x16, 0x00, 0xaa, 0x09, 0x45, 0xa0, 0x8a, - 0xca, 0xac, 0x30, 0x01, 0x32, 0xd0, 0x0b, 0xc1, 0x09, 0x89, 0x18, 0x17, 0x8b, 0xa2, 0xaf, 0x32, - 0x81, 0xbc, 0x30, 0xa1, 0x28, 0x44, 0x99, 0x20, 0x65, 0x14, 0xa9, 0xb9, 0x9f, 0x02, 0x08, 0xb8, - 0x8e, 0x82, 0x19, 0x22, 0xb8, 0xbb, 0x50, 0x47, 0x91, 0x99, 0x80, 0x21, 0x90, 0x09, 0x26, 0xb9, - 0x29, 0x23, 0xea, 0xac, 0x10, 0xa9, 0x32, 0x93, 0x80, 0x20, 0xfa, 0x9c, 0xb9, 0x20, 0x11, 0x61, - 0x05, 0x58, 0x92, 0xae, 0x08, 0xa0, 0x39, 0x15, 0x9a, 0xa0, 0x28, 0x81, 0x64, 0x80, 0xdb, 0x0a, - 0x12, 0x22, 0x33, 0xf9, 0x8c, 0x98, 0x28, 0x02, 0xab, 0xa9, 0x0b, 0x90, 0x73, 0x07, 0x98, 0x29, - 0x92, 0x30, 0xa0, 0xa8, 0x70, 0xc2, 0xaa, 0x50, 0x82, 0xb9, 0x19, 0x93, 0x9c, 0x02, 0xbe, 0x98, - 0x60, 0x98, 0x25, 0x9a, 0xa9, 0x28, 0x75, 0x13, 0x98, 0x09, 0xb8, 0xac, 0x20, 0x12, 0xfb, 0x89, - 0x00, 0xb8, 0x1c, 0x16, 0x09, 0x22, 0x08, 0xb2, 0x0d, 0x25, 0x9a, 0x12, 0xab, 0xac, 0x81, 0x4a, - 0x94, 0x9c, 0xcb, 0x30, 0x33, 0x92, 0xbe, 0x40, 0x33, 0x82, 0x92, 0xbf, 0x41, 0x92, 0xca, 0x0b, - 0x81, 0x20, 0xc0, 0xfc, 0x29, 0x15, 0x88, 0x80, 0x10, 0xeb, 0x11, 0x0a, 0x24, 0xa0, 0xbb, 0x89, - 0x65, 0x02, 0x89, 0x18, 0x02, 0x61, 0x80, 0x01, 0xbe, 0x18, 0x43, 0x81, 0x00, 0xcc, 0xb9, 0x8a, - 0x89, 0x81, 0xaa, 0x52, 0x51, 0xe0, 0x89, 0x09, 0x82, 0x9c, 0x33, 0x41, 0x02, 0xb8, 0x1e, 0x03, - 0x73, 0x10, 0x92, 0xcb, 0x9a, 0x99, 0x82, 0x9d, 0x82, 0x18, 0xa3, 0xff, 0x28, 0xb0, 0x38, 0x91, - 0x99, 0x62, 0x01, 0xb0, 0x28, 0x01, 0x19, 0x47, 0x99, 0x32, 0xdb, 0x20, 0x81, 0xb8, 0x49, 0xd8, - 0x29, 0xc0, 0x10, 0x88, 0x22, 0xec, 0x88, 0x38, 0x34, 0xa2, 0x1a, 0x05, 0xab, 0x60, 0xa3, 0x9b, - 0x9a, 0x80, 0x88, 0x54, 0x01, 0xa1, 0xae, 0x21, 0x62, 0x82, 0xbb, 0x39, 0xf9, 0x89, 0x28, 0xa1, - 0xb1, 0x9f, 0x13, 0x00, 0x08, 0x32, 0xd2, 0xcc, 0x8c, 0x54, 0x02, 0x09, 0xa0, 0x0a, 0xcd, 0x28, - 0x00, 0x81, 0x51, 0xd8, 0x89, 0x19, 0x14, 0x88, 0xa9, 0xac, 0x42, 0xa0, 0x33, 0x00, 0x02, 0x72, - 0x03, 0x99, 0xaa, 0x71, 0x95, 0x8a, 0xfb, 0xab, 0x21, 0x21, 0x91, 0x51, 0x90, 0x31, 0x35, 0xda, - 0x00, 0x09, 0x80, 0x82, 0x8a, 0x1a, 0xa5, 0x7a, 0xd0, 0x09, 0x18, 0xa2, 0x39, 0xf9, 0x0b, 0x41, - 0x93, 0x28, 0xd9, 0x9b, 0x42, 0x00, 0x12, 0xb9, 0x71, 0xa2, 0x01, 0x19, 0x88, 0x13, 0xbb, 0xef, - 0xaa, 0x19, 0x01, 0x02, 0xb8, 0xbc, 0xbb, 0x73, 0x22, 0xe8, 0x0c, 0x21, 0x35, 0x12, 0x80, 0x98, - 0x80, 0x8d, 0x04, 0x09, 0x08, 0x8a, 0x92, 0x3a, 0xfd, 0xa9, 0x28, 0x33, 0x82, 0xad, 0x32, 0xdb, - 0x20, 0x81, 0x0a, 0x67, 0xa0, 0x09, 0x42, 0x02, 0x99, 0xba, 0x0a, 0x91, 0xcd, 0x51, 0xc8, 0x19, - 0xa0, 0xdb, 0x18, 0x00, 0x08, 0x08, 0x92, 0xac, 0x41, 0x14, 0x0a, 0x56, 0x13, 0xa9, 0x10, 0x98, - 0xba, 0x40, 0x13, 0x45, 0xb8, 0x9a, 0x8a, 0xcc, 0x62, 0xb8, 0x9b, 0xa8, 0xbb, 0x62, 0xb1, 0x0c, - 0x20, 0x24, 0x33, 0xba, 0x26, 0xb9, 0x71, 0xa0, 0x8c, 0x32, 0x02, 0x00, 0xa9, 0x9c, 0x09, 0x44, - 0x12, 0xa8, 0xcb, 0x9a, 0x8a, 0xf9, 0x2d, 0xa1, 0x19, 0x9a, 0x53, 0xb0, 0x0e, 0x42, 0x83, 0x8a, - 0x33, 0xb1, 0x8b, 0xb1, 0x9d, 0x76, 0x90, 0x99, 0x0a, 0xb9, 0x63, 0x21, 0x01, 0xa2, 0xac, 0x9b, - 0x91, 0xbc, 0x38, 0x07, 0xdb, 0x8b, 0x12, 0xcc, 0x41, 0x00, 0x00, 0x01, 0x91, 0x60, 0x01, 0xa1, - 0xaf, 0x21, 0x81, 0x21, 0x35, 0x81, 0x10, 0x00, 0xe9, 0x0b, 0x89, 0x01, 0x09, 0x98, 0xff, 0x0a, - 0x90, 0x10, 0xb9, 0x68, 0x25, 0xa8, 0x88, 0x99, 0x32, 0x32, 0x11, 0x00, 0x02, 0x11, 0x5a, 0x86, - 0x3b, 0xb0, 0xe9, 0x3b, 0x92, 0x2a, 0xc1, 0xbf, 0xbb, 0x2a, 0xc2, 0x9e, 0xc9, 0x9b, 0x42, 0x43, - 0xa0, 0x01, 0x40, 0x24, 0x23, 0x91, 0x9c, 0x64, 0x92, 0x1a, 0x81, 0x91, 0x9e, 0x99, 0x09, 0x53, - 0xc0, 0x9a, 0x08, 0xe8, 0x9d, 0x00, 0x42, 0xb0, 0xbb, 0x28, 0x13, 0x43, 0x90, 0x68, 0x14, 0x11, - 0x01, 0x01, 0xe9, 0x3a, 0x34, 0x92, 0xa9, 0xcd, 0x28, 0x32, 0x92, 0xaa, 0xee, 0x8a, 0x21, 0x11, - 0xb9, 0x99, 0x9a, 0x11, 0xa2, 0x79, 0x91, 0xfa, 0x8d, 0x22, 0x44, 0x82, 0x09, 0x41, 0xa9, 0x01, - 0xac, 0xa1, 0x0b, 0xa1, 0xa9, 0xca, 0x1f, 0x14, 0x31, 0xc8, 0xba, 0x10, 0x01, 0xc8, 0x89, 0xba, - 0x49, 0xa3, 0x9f, 0x43, 0x11, 0x33, 0x98, 0xd9, 0x08, 0x39, 0x47, 0x80, 0x31, 0xb3, 0x9f, 0x81, - 0xcb, 0x29, 0x13, 0x35, 0xd9, 0x08, 0x80, 0xa9, 0x99, 0xbd, 0x10, 0x10, 0x82, 0x6a, 0xc3, 0x49, - 0x00, 0x26, 0xa9, 0x99, 0x28, 0x37, 0x02, 0x82, 0xcc, 0x8a, 0x01, 0x00, 0x90, 0xaa, 0xab, 0x01, - 0x0c, 0x95, 0xdf, 0x09, 0x00, 0x00, 0xea, 0x28, 0x20, 0x33, 0x03, 0x0b, 0x15, 0x18, 0x23, 0x32, - 0x82, 0xdf, 0x08, 0x28, 0xc0, 0x0b, 0xc9, 0x10, 0xdb, 0xbb, 0x29, 0x14, 0x00, 0x33, 0xa8, 0x3a, - 0x47, 0x23, 0xa9, 0x18, 0x21, 0xf9, 0xac, 0x31, 0x02, 0x20, 0xd1, 0x8b, 0xa2, 0x6b, 0x24, 0x14, - 0xba, 0xaa, 0x8c, 0x13, 0x19, 0x05, 0xfa, 0x39, 0x15, 0xc9, 0x9a, 0x43, 0x01, 0xa0, 0xae, 0x28, - 0x14, 0x09, 0x88, 0x99, 0x82, 0x78, 0x91, 0xba, 0xaf, 0x11, 0x20, 0x02, 0xa1, 0x9c, 0xba, 0x62, - 0x21, 0xa1, 0x1a, 0x12, 0xb9, 0x71, 0x84, 0xdd, 0x28, 0xa1, 0x8a, 0x10, 0x80, 0x36, 0x80, 0xa8, - 0x88, 0x49, 0xa4, 0xcd, 0x29, 0x34, 0x32, 0xb8, 0xdc, 0x8c, 0x21, 0x42, 0xa8, 0x09, 0x98, 0x11, - 0xa0, 0x72, 0x03, 0xfa, 0x0c, 0x21, 0xa8, 0x89, 0xcb, 0x31, 0x80, 0x80, 0x18, 0x08, 0x25, 0xa9, - 0x80, 0x8d, 0x17, 0x53, 0x02, 0x00, 0x32, 0xb8, 0xcc, 0x89, 0xea, 0x8a, 0x32, 0x14, 0xfb, 0x8d, - 0x00, 0x08, 0x21, 0x23, 0x99, 0x01, 0x08, 0x17, 0x00, 0xc9, 0x09, 0x2a, 0x84, 0x61, 0x13, 0xc9, - 0x0a, 0xa8, 0x08, 0xeb, 0x08, 0x12, 0xcd, 0x0a, 0x11, 0x89, 0xc0, 0x9f, 0x12, 0x32, 0x80, 0x20, - 0x12, 0x1a, 0x84, 0x19, 0x15, 0x11, 0x90, 0xbe, 0x02, 0x9e, 0x01, 0xb9, 0x48, 0x90, 0x84, 0x4a, - 0xc2, 0x9d, 0x9a, 0x12, 0x10, 0x03, 0x80, 0x4c, 0x27, 0x8c, 0x11, 0xa0, 0x2b, 0x12, 0x00, 0x11, - 0xa9, 0xee, 0x0a, 0x80, 0x22, 0x20, 0x12, 0x23, 0xa0, 0xcf, 0x71, 0x13, 0x83, 0xae, 0x20, 0x00, - 0xd9, 0x0b, 0x92, 0x8a, 0x22, 0x02, 0xb8, 0x6a, 0x92, 0xba, 0x0c, 0x88, 0x27, 0x08, 0xb9, 0x81, - 0x8a, 0x54, 0xf8, 0x19, 0x88, 0x88, 0x61, 0x83, 0x9b, 0xb8, 0x58, 0xb2, 0x9e, 0x01, 0x89, 0xc0, - 0x1c, 0x22, 0x81, 0x08, 0x8b, 0xa1, 0x70, 0x25, 0xb1, 0x9d, 0x10, 0x05, 0x9a, 0x34, 0x91, 0x09, - 0x93, 0x8c, 0x81, 0xa9, 0x73, 0x00, 0xf0, 0x9b, 0x31, 0xa3, 0x89, 0xdb, 0x65, 0x01, 0x89, 0x88, - 0xba, 0x29, 0x24, 0xc8, 0x9a, 0x18, 0xa1, 0x1b, 0x36, 0xa2, 0x8e, 0x90, 0x38, 0x93, 0xac, 0x08, - 0x88, 0x00, 0x30, 0x10, 0x16, 0xc9, 0x0e, 0x25, 0x22, 0xa9, 0xb8, 0x89, 0x48, 0x35, 0x80, 0xbd, - 0x28, 0xea, 0x99, 0xbb, 0x54, 0xa8, 0xbb, 0x8a, 0x20, 0x81, 0x31, 0x33, 0x16, 0x1a, 0x26, 0x13, - 0x09, 0xb1, 0x39, 0x02, 0x08, 0x43, 0x34, 0xc9, 0xf0, 0xaf, 0xa9, 0x10, 0x73, 0xa1, 0x99, 0xa8, - 0x31, 0xca, 0x41, 0x12, 0xa8, 0x51, 0x91, 0x02, 0xae, 0x89, 0x34, 0x20, 0x84, 0x98, 0x32, 0xe0, - 0x8b, 0x09, 0x53, 0x82, 0x0a, 0xfa, 0xaa, 0xba, 0x19, 0xb8, 0x19, 0x31, 0x54, 0x93, 0x70, 0xc2, - 0x0a, 0x91, 0xbb, 0x52, 0x21, 0x43, 0x02, 0x20, 0xfb, 0xae, 0x89, 0x01, 0x98, 0x91, 0x4a, 0x84, - 0x09, 0xba, 0x08, 0xba, 0x74, 0xa8, 0x20, 0x43, 0x01, 0x8a, 0xc1, 0xae, 0x21, 0x82, 0xcc, 0x30, - 0x53, 0x14, 0x00, 0xaa, 0x08, 0x10, 0x21, 0xb3, 0xcf, 0x20, 0x81, 0x18, 0xda, 0xbb, 0x31, 0x08, - 0x15, 0xa8, 0xae, 0x91, 0x0b, 0x55, 0x82, 0x80, 0x08, 0x42, 0x03, 0x1a, 0x37, 0xe9, 0x0a, 0xb0, - 0x39, 0x04, 0x18, 0xa1, 0xbd, 0x0b, 0x80, 0x32, 0xfc, 0x8c, 0x99, 0x32, 0xa8, 0x09, 0x02, 0xbb, - 0x19, 0x03, 0x10, 0x73, 0x16, 0x28, 0x01, 0x04, 0x20, 0x40, 0x17, 0x90, 0xb9, 0x29, 0x82, 0x35, - 0xc9, 0xcd, 0xaa, 0x9a, 0xb8, 0x10, 0xaa, 0x08, 0x82, 0x62, 0x82, 0x8b, 0x77, 0x05, 0x89, 0x90, - 0x09, 0x11, 0x30, 0x92, 0x9a, 0x89, 0x83, 0x52, 0xde, 0x28, 0xa9, 0x0a, 0x11, 0x23, 0xc9, 0xbe, - 0x3a, 0x27, 0x99, 0x89, 0x20, 0x33, 0xf9, 0x0a, 0x90, 0x08, 0x55, 0x83, 0xba, 0x8b, 0x02, 0x08, - 0xb8, 0x32, 0x33, 0xfc, 0x41, 0x90, 0xa9, 0xaa, 0x09, 0x02, 0xc1, 0xcf, 0x40, 0x91, 0x0b, 0x83, - 0x0a, 0x34, 0x98, 0xb8, 0x9d, 0x41, 0x33, 0xb5, 0x9f, 0x23, 0xc0, 0x19, 0x01, 0x20, 0xc0, 0x8a, - 0x23, 0x09, 0x14, 0xea, 0x38, 0xa1, 0x48, 0x81, 0x99, 0xa9, 0x1d, 0x05, 0xaa, 0x60, 0x33, 0x17, - 0xaa, 0x80, 0x89, 0x90, 0x0d, 0x92, 0x1c, 0x12, 0x80, 0x28, 0xea, 0x18, 0x92, 0xbd, 0x42, 0x34, - 0xed, 0x09, 0x18, 0x23, 0xd9, 0x19, 0x90, 0x98, 0x88, 0x30, 0x82, 0xa0, 0x9c, 0x75, 0x91, 0x21, - 0x00, 0x01, 0x00, 0xb9, 0xb9, 0xbf, 0x12, 0x9b, 0xcb, 0x08, 0x35, 0xfa, 0x28, 0xb8, 0x0c, 0x17, - 0xaa, 0x32, 0x92, 0x0b, 0x01, 0x41, 0x04, 0xbc, 0x30, 0x12, 0x12, 0xac, 0xbc, 0x41, 0x04, 0x1a, - 0xb1, 0x2a, 0xea, 0x30, 0x90, 0x42, 0xaa, 0x16, 0xcf, 0x10, 0x80, 0x31, 0x04, 0x88, 0xdc, 0x28, - 0x03, 0x31, 0xb0, 0x9c, 0x31, 0x83, 0x2c, 0x95, 0xae, 0x30, 0xa8, 0x48, 0xb0, 0x9b, 0xac, 0x31, - 0x32, 0x92, 0xde, 0x0b, 0x82, 0x8a, 0x81, 0xd8, 0x48, 0xa8, 0x28, 0x16, 0x1a, 0x16, 0x88, 0x11, - 0x88, 0xb9, 0x1b, 0x65, 0x94, 0x0b, 0x81, 0x9c, 0x91, 0x0d, 0xb8, 0x89, 0x00, 0x33, 0xbc, 0x42, - 0x90, 0x71, 0x16, 0xb8, 0x29, 0xb8, 0x3a, 0x27, 0xa0, 0x99, 0x31, 0x91, 0xd9, 0x89, 0xba, 0x40, - 0x24, 0x62, 0x83, 0xda, 0x0a, 0xa8, 0x40, 0xa0, 0x08, 0xc9, 0x39, 0x53, 0xa2, 0x8c, 0xba, 0x52, - 0x91, 0x08, 0xc9, 0x0a, 0xe9, 0x30, 0x81, 0x22, 0x42, 0x88, 0xd2, 0x8e, 0x12, 0x31, 0x00, 0x80, - 0x99, 0xab, 0xdf, 0xa9, 0x1a, 0x98, 0x58, 0xb2, 0x1a, 0x38, 0x07, 0xad, 0x28, 0x11, 0x22, 0x43, - 0xe0, 0x9c, 0x18, 0x83, 0x0d, 0x16, 0x08, 0x01, 0x20, 0x03, 0xa8, 0xbe, 0xcb, 0x30, 0x13, 0x32, - 0xf9, 0x1b, 0x91, 0x1b, 0x12, 0xb1, 0x8e, 0x54, 0x01, 0xba, 0x09, 0x32, 0x22, 0xa8, 0x30, 0xe8, - 0x29, 0xa3, 0xaf, 0x08, 0x62, 0xa0, 0x30, 0xb8, 0x0b, 0x11, 0xd8, 0xad, 0xba, 0xaa, 0x19, 0x55, - 0x22, 0xc0, 0x8b, 0x40, 0x84, 0x48, 0x01, 0x00, 0x22, 0x49, 0xa5, 0x9e, 0xa9, 0xaa, 0x51, 0x05, - 0x20, 0x91, 0xdd, 0x09, 0x00, 0xa8, 0x09, 0x10, 0xd0, 0x9d, 0x32, 0x34, 0x22, 0xd9, 0x08, 0x99, - 0x10, 0x21, 0x92, 0x8c, 0xb8, 0x50, 0x02, 0x10, 0x05, 0xce, 0x29, 0x03, 0x92, 0xbe, 0x38, 0x00, - 0x20, 0x33, 0x9a, 0xfc, 0x3a, 0x14, 0x88, 0x19, 0x12, 0x21, 0x64, 0xa1, 0x29, 0xfb, 0x8b, 0x80, - 0x41, 0x01, 0x18, 0x02, 0x30, 0xb1, 0x2a, 0xa7, 0xbf, 0x90, 0x10, 0xea, 0x09, 0xa9, 0x38, 0x84, - 0xbc, 0x0b, 0x34, 0x02, 0x98, 0x42, 0x90, 0xbe, 0x42, 0x12, 0x18, 0x22, 0x47, 0x81, 0xa9, 0x21, - 0x11, 0xd8, 0x0a, 0x98, 0xef, 0x19, 0x80, 0x80, 0x9a, 0x80, 0x08, 0xa0, 0x9a, 0x49, 0x37, 0x91, - 0x29, 0x93, 0x9d, 0x42, 0x53, 0xa1, 0x19, 0x91, 0x01, 0xaf, 0x08, 0x18, 0x03, 0x39, 0x07, 0x9b, - 0xa9, 0x0b, 0x12, 0xfa, 0x4b, 0x83, 0x31, 0x82, 0xaf, 0x09, 0x61, 0x03, 0x18, 0xb0, 0x8c, 0x08, - 0x12, 0x91, 0x4a, 0xb2, 0x40, 0x00, 0x55, 0xe2, 0x8c, 0x81, 0xb9, 0x9f, 0x89, 0x30, 0x04, 0x90, - 0x18, 0x91, 0xab, 0x10, 0x08, 0xe0, 0x1a, 0x43, 0x03, 0xa9, 0x19, 0x34, 0xb2, 0xcf, 0x08, 0x00, - 0xb0, 0xac, 0x62, 0x92, 0x0c, 0x12, 0x80, 0x31, 0xb8, 0x50, 0x43, 0xb0, 0x78, 0x83, 0x11, 0xda, - 0x08, 0x8a, 0x13, 0x70, 0x85, 0xcb, 0x08, 0x01, 0x18, 0x12, 0x20, 0x22, 0xfe, 0x9a, 0x19, 0x01, - 0x10, 0x23, 0x41, 0xe8, 0xbb, 0x10, 0x88, 0x10, 0x41, 0x16, 0x08, 0x81, 0xce, 0x9a, 0x00, 0x23, - 0xc8, 0x0a, 0x43, 0x80, 0x22, 0x98, 0xdc, 0x8b, 0x10, 0x33, 0xf8, 0x9b, 0x01, 0x3b, 0x84, 0xed, - 0x19, 0x18, 0x33, 0x53, 0xb9, 0x88, 0x58, 0x92, 0x9b, 0x80, 0x8a, 0x03, 0xcd, 0x48, 0x02, 0x10, - 0xa3, 0x6b, 0x11, 0x87, 0x9b, 0x00, 0x88, 0xba, 0x73, 0x12, 0x08, 0x02, 0x10, 0xea, 0xac, 0x42, - 0x24, 0x12, 0x11, 0xba, 0x28, 0xca, 0x52, 0xea, 0xbb, 0x09, 0x8a, 0x81, 0x10, 0x01, 0xbc, 0xbc, - 0x12, 0x72, 0xe2, 0x0a, 0x31, 0x91, 0x1a, 0xb3, 0x4b, 0x82, 0xb9, 0x78, 0x34, 0xe8, 0x8b, 0x10, - 0x21, 0xb1, 0x9d, 0x41, 0x80, 0x92, 0xaf, 0x18, 0x98, 0x89, 0x10, 0x0a, 0xe0, 0x58, 0x33, 0xa8, - 0x88, 0x1a, 0x53, 0x14, 0x89, 0x99, 0xb1, 0xcf, 0x20, 0x53, 0x03, 0x21, 0xd8, 0x9c, 0x20, 0x02, - 0x11, 0xfc, 0x0b, 0x99, 0x11, 0x18, 0x90, 0x62, 0x21, 0xa0, 0x9a, 0x59, 0x37, 0x10, 0xa0, 0x1a, - 0xc8, 0x20, 0x21, 0x13, 0x28, 0xf3, 0x8f, 0x98, 0xa9, 0x39, 0x84, 0x98, 0x28, 0xa8, 0xcb, 0x0d, - 0x44, 0x82, 0xba, 0xba, 0x99, 0x28, 0xc1, 0x0c, 0x81, 0x03, 0x8d, 0x81, 0xa1, 0xbf, 0x10, 0x40, - 0x37, 0xa8, 0x8b, 0x22, 0x93, 0xbd, 0xac, 0x11, 0x10, 0x35, 0x11, 0x88, 0x88, 0xc9, 0x19, 0x34, - 0xe9, 0x38, 0x21, 0x06, 0x9a, 0x10, 0x81, 0x8c, 0x44, 0x90, 0x2a, 0x47, 0x81, 0x19, 0x11, 0xc8, - 0x4a, 0xc8, 0xb9, 0x8d, 0x12, 0x31, 0xc8, 0xba, 0x4b, 0x16, 0x01, 0xba, 0x9a, 0x32, 0xa0, 0x41, - 0x91, 0x82, 0xaf, 0x82, 0xaa, 0x8b, 0x80, 0x42, 0x90, 0x72, 0xf8, 0x8f, 0x01, 0x88, 0x88, 0x21, - 0x82, 0xca, 0x9b, 0x31, 0x13, 0x80, 0xb8, 0xbe, 0x01, 0x09, 0xf9, 0x2b, 0x25, 0x22, 0x81, 0x33, - 0xa9, 0xdc, 0x4a, 0x06, 0x90, 0xa8, 0xac, 0x51, 0x03, 0x10, 0x10, 0x81, 0x88, 0x33, 0x50, 0x85, - 0xab, 0xb9, 0x89, 0x73, 0x17, 0x98, 0x99, 0x28, 0xb0, 0x3a, 0x03, 0xdd, 0x89, 0x29, 0xd2, 0x9f, - 0x08, 0x28, 0x12, 0x88, 0x09, 0x90, 0x68, 0xb0, 0x89, 0x1a, 0x18, 0xf3, 0x3b, 0x81, 0x31, 0x16, - 0x0b, 0x94, 0x9c, 0x11, 0x80, 0x99, 0xba, 0xaf, 0x18, 0x03, 0x8c, 0xf9, 0x39, 0x91, 0xab, 0x34, - 0x41, 0x81, 0x48, 0x27, 0xa8, 0x00, 0x01, 0x38, 0x95, 0x1a, 0xa2, 0xaa, 0x9b, 0x52, 0xf8, 0x8e, - 0x12, 0xa1, 0xad, 0x08, 0x23, 0x98, 0x31, 0x80, 0x18, 0xb0, 0x0d, 0x02, 0x03, 0x79, 0x47, 0xb9, - 0x19, 0x83, 0x88, 0x00, 0x51, 0xc2, 0x8c, 0x88, 0x52, 0xc1, 0xad, 0x20, 0xa9, 0x1c, 0x43, 0x83, - 0xbd, 0x19, 0x03, 0x99, 0xa8, 0x1a, 0x34, 0xc2, 0x2b, 0xc9, 0x39, 0x35, 0x12, 0x12, 0xca, 0x08, - 0xbe, 0x98, 0x49, 0x82, 0x70, 0x35, 0xb8, 0xac, 0xba, 0x8a, 0x22, 0xb8, 0x3b, 0x82, 0x73, 0x05, - 0x00, 0xac, 0x41, 0x23, 0xb8, 0x31, 0x99, 0x34, 0xc2, 0xae, 0x89, 0xa0, 0x2b, 0x11, 0x12, 0x94, - 0x1a, 0x44, 0x81, 0x23, 0xcc, 0xac, 0x98, 0xbc, 0x32, 0x90, 0x9f, 0x81, 0xba, 0x63, 0x32, 0x22, - 0x37, 0xa9, 0x28, 0x02, 0xfa, 0x0a, 0x43, 0x01, 0xf9, 0x9b, 0x11, 0x88, 0x31, 0x33, 0xba, 0xfa, - 0xac, 0x09, 0xb1, 0x38, 0x15, 0xa8, 0x30, 0xc0, 0x28, 0xce, 0x41, 0x12, 0xa1, 0xeb, 0x2a, 0x14, - 0x00, 0x19, 0x14, 0xeb, 0x28, 0x13, 0x99, 0x30, 0xd9, 0x39, 0x24, 0xb9, 0xcd, 0x99, 0x20, 0x24, - 0xd8, 0x0a, 0x35, 0x12, 0x08, 0xd0, 0x0b, 0x90, 0xb9, 0x9b, 0x19, 0x27, 0x61, 0x92, 0x09, 0x9a, - 0x01, 0x30, 0x44, 0x22, 0xdb, 0xba, 0x18, 0xe9, 0x9a, 0xbd, 0x51, 0x02, 0x30, 0x92, 0x0a, 0x53, - 0xd9, 0xdb, 0x39, 0x91, 0x28, 0x03, 0x0b, 0xd2, 0x9e, 0x90, 0x00, 0x62, 0x02, 0x18, 0x81, 0x89, - 0x63, 0xb8, 0x8c, 0xaa, 0x11, 0x31, 0x14, 0xb0, 0x0a, 0x92, 0xdf, 0x09, 0xb8, 0x8b, 0x54, 0xa0, - 0x9a, 0xbb, 0x33, 0x20, 0x67, 0x81, 0x8a, 0x20, 0x90, 0x30, 0x11, 0xd0, 0x5a, 0x14, 0x88, 0x0a, - 0x43, 0xe9, 0x18, 0xca, 0x8a, 0x80, 0x20, 0x10, 0xc2, 0x8d, 0xb9, 0x10, 0x32, 0xf8, 0x5b, 0x14, - 0x10, 0x21, 0x91, 0x48, 0x83, 0x8b, 0xa0, 0x30, 0x08, 0xfa, 0x8f, 0x08, 0x81, 0xda, 0x9d, 0x10, - 0x11, 0xa8, 0x18, 0xba, 0x00, 0x63, 0x80, 0x13, 0x09, 0x99, 0x55, 0xd9, 0x31, 0x21, 0x03, 0x58, - 0x92, 0x19, 0xc8, 0xaf, 0xa9, 0x0b, 0x91, 0x0a, 0x81, 0x98, 0x3a, 0x37, 0x8a, 0x83, 0xf9, 0x2d, - 0x17, 0x98, 0x80, 0x9a, 0x30, 0x14, 0x91, 0xfb, 0x8a, 0x12, 0x18, 0x82, 0x73, 0x01, 0x18, 0x91, - 0xac, 0x28, 0xa1, 0x8b, 0x34, 0x05, 0xad, 0x31, 0x98, 0xa9, 0x9d, 0x29, 0xa3, 0x40, 0xf9, 0x9b, - 0x20, 0x14, 0x98, 0xbb, 0x60, 0x83, 0x18, 0xa9, 0x42, 0x34, 0x00, 0xd8, 0xac, 0x09, 0xa8, 0x70, - 0x14, 0xcc, 0x88, 0x98, 0x10, 0x81, 0x9b, 0xb9, 0xda, 0xaa, 0x9e, 0x62, 0x02, 0x32, 0x90, 0x01, - 0x89, 0xbc, 0x55, 0x31, 0x24, 0x02, 0xdb, 0x09, 0x88, 0x88, 0xcb, 0x99, 0x30, 0x90, 0x18, 0xbc, - 0x92, 0x74, 0xc3, 0x9a, 0x40, 0xa2, 0x21, 0xab, 0x35, 0x32, 0xf9, 0x0b, 0xda, 0x38, 0x13, 0x18, - 0x01, 0xb9, 0x0c, 0x27, 0xd8, 0xab, 0x51, 0x01, 0x00, 0x11, 0xba, 0x00, 0x99, 0x21, 0xb8, 0x6a, - 0x84, 0x1a, 0x32, 0xd0, 0xeb, 0x8d, 0x81, 0x8a, 0x91, 0x9a, 0x89, 0x41, 0x84, 0xad, 0x42, 0x84, - 0xbd, 0x20, 0xa8, 0x98, 0x20, 0x63, 0x83, 0x9c, 0x45, 0x81, 0xba, 0x9a, 0x01, 0x39, 0x15, 0xa0, - 0x88, 0x19, 0x26, 0xc8, 0x1b, 0x06, 0x0b, 0x33, 0x04, 0xca, 0x28, 0x98, 0x90, 0x99, 0x78, 0x16, - 0xba, 0x89, 0x00, 0x08, 0xc2, 0x9e, 0x00, 0x20, 0x01, 0x42, 0xb8, 0x0c, 0x84, 0x19, 0x08, 0xd8, - 0x40, 0xf0, 0x8c, 0x43, 0x90, 0x10, 0x23, 0xa9, 0x88, 0x0b, 0xb0, 0xcc, 0x18, 0xda, 0x12, 0x39, - 0xc3, 0xbe, 0x9b, 0x98, 0xbd, 0x0a, 0x43, 0xa8, 0x10, 0x21, 0x73, 0x57, 0x82, 0xaa, 0x10, 0x02, - 0x09, 0x81, 0x12, 0xcd, 0x20, 0x08, 0x90, 0xc9, 0x9c, 0xda, 0x1a, 0x34, 0xd9, 0x9c, 0x81, 0x52, - 0x00, 0x91, 0x18, 0xcb, 0x73, 0x02, 0x08, 0x32, 0x14, 0x18, 0x82, 0xab, 0x00, 0x42, 0xe8, 0x39, - 0x93, 0xbe, 0x30, 0x28, 0xd3, 0x9f, 0x89, 0x88, 0x98, 0xcc, 0xab, 0x51, 0x82, 0x98, 0x0a, 0x11, - 0x00, 0x88, 0x40, 0x06, 0xbc, 0x40, 0x03, 0xa8, 0x09, 0x31, 0x57, 0x82, 0x98, 0xba, 0x20, 0xa1, - 0x88, 0xeb, 0xaa, 0x19, 0x01, 0xa8, 0xbe, 0xbd, 0x39, 0x47, 0x23, 0x10, 0xfa, 0x8b, 0x01, 0x11, - 0x33, 0x83, 0xba, 0x1b, 0x44, 0x34, 0x90, 0xcb, 0x63, 0x00, 0x90, 0x9d, 0xaa, 0x20, 0x01, 0x00, - 0x99, 0xcf, 0x88, 0x89, 0x08, 0xb9, 0xbc, 0x71, 0x13, 0x80, 0x31, 0x33, 0xa1, 0x18, 0x24, 0x09, - 0x57, 0xa8, 0x88, 0xcb, 0x89, 0xb9, 0x88, 0xad, 0x19, 0x36, 0xc9, 0x9a, 0xbc, 0xbb, 0x50, 0x13, - 0x98, 0x32, 0xc9, 0x2a, 0x16, 0xaa, 0x30, 0x54, 0x25, 0xa0, 0xac, 0x20, 0x99, 0x01, 0x8b, 0x15, - 0x8d, 0x22, 0xa8, 0x1a, 0x47, 0xa0, 0x1a, 0xa1, 0x41, 0xc9, 0x00, 0xaa, 0x32, 0x80, 0x80, 0xbb, - 0x80, 0x9e, 0x35, 0x47, 0xd9, 0x99, 0x10, 0x88, 0x42, 0x82, 0x00, 0x98, 0xc8, 0x1b, 0xb1, 0x74, - 0x92, 0xcb, 0x9a, 0x89, 0x08, 0x82, 0x8d, 0x42, 0xb0, 0x0a, 0x23, 0x10, 0x50, 0x37, 0x80, 0x9a, - 0x91, 0x0d, 0xa1, 0x9c, 0x89, 0x80, 0x51, 0xea, 0x8a, 0x08, 0x72, 0x23, 0x00, 0xcc, 0xa9, 0x18, - 0xca, 0x18, 0x00, 0x31, 0x12, 0xe0, 0x3a, 0x93, 0x81, 0x98, 0x0b, 0x67, 0x10, 0x03, 0x9a, 0xbc, - 0x80, 0x72, 0x90, 0x12, 0xdb, 0x20, 0x32, 0xb2, 0xbe, 0x9a, 0x28, 0x45, 0xa1, 0x18, 0xda, 0x20, - 0x73, 0x12, 0x90, 0xab, 0x10, 0x42, 0x83, 0xcb, 0xaa, 0xaa, 0xad, 0x98, 0x51, 0xd9, 0x8a, 0xca, - 0x29, 0x04, 0x80, 0x18, 0xe2, 0x9e, 0x31, 0x25, 0x90, 0x9a, 0x00, 0x12, 0x40, 0x15, 0x11, 0xab, - 0x89, 0x74, 0xb0, 0xab, 0xab, 0x81, 0xae, 0x20, 0x12, 0x99, 0xea, 0x0a, 0x81, 0x88, 0x12, 0x58, - 0x16, 0x22, 0x98, 0x00, 0x01, 0x73, 0x07, 0x9a, 0x01, 0x11, 0xba, 0x9a, 0xdb, 0x0b, 0x92, 0x8c, - 0x28, 0xc3, 0x8f, 0x32, 0xa9, 0x23, 0x9d, 0x13, 0x22, 0xb9, 0x42, 0x08, 0x57, 0x01, 0xb9, 0x8a, - 0x01, 0xdb, 0x10, 0x99, 0x90, 0x10, 0xa0, 0x8a, 0x19, 0xa3, 0xbc, 0x0d, 0x27, 0xb8, 0x19, 0x81, - 0x88, 0x09, 0xf0, 0x0e, 0x12, 0x22, 0x13, 0xfc, 0x09, 0x44, 0xa1, 0x18, 0x91, 0x09, 0x01, 0x9b, - 0x67, 0x88, 0xc0, 0x8b, 0x00, 0x82, 0x21, 0x00, 0xd9, 0x9b, 0x89, 0xc8, 0x9e, 0x42, 0x81, 0x20, - 0x91, 0x49, 0xf2, 0x1a, 0x23, 0x91, 0x89, 0x41, 0x03, 0x32, 0xb0, 0x39, 0x07, 0xcd, 0x9a, 0x80, - 0x9a, 0x22, 0x8a, 0xd0, 0xec, 0x9c, 0x00, 0x81, 0x08, 0x32, 0x11, 0x90, 0x52, 0x88, 0x21, 0x50, - 0x57, 0x11, 0xb9, 0x19, 0x01, 0x73, 0x92, 0xa9, 0xaa, 0x88, 0x99, 0x00, 0xea, 0xbb, 0xbd, 0xaa, - 0x60, 0x14, 0xa9, 0x9a, 0x00, 0xb0, 0x8b, 0x56, 0x02, 0x21, 0x32, 0x83, 0x11, 0x30, 0x27, 0x80, - 0xa8, 0xcb, 0xdf, 0x19, 0x32, 0x80, 0xc9, 0x8c, 0x82, 0x19, 0x83, 0x18, 0x20, 0xb9, 0xd0, 0x9f, - 0x81, 0x60, 0x02, 0x28, 0xa1, 0xdb, 0x0b, 0x42, 0x82, 0x99, 0x80, 0xab, 0x15, 0xae, 0x63, 0x03, - 0xbc, 0xa8, 0x0a, 0x22, 0x21, 0x27, 0xb8, 0xdc, 0x1a, 0x01, 0x80, 0x89, 0x83, 0x8d, 0x91, 0x30, - 0xc0, 0x60, 0x22, 0x03, 0x10, 0xd9, 0x0a, 0x63, 0x03, 0xac, 0x20, 0x24, 0xa9, 0xab, 0xd8, 0x2a, - 0x02, 0xa8, 0xbb, 0xaf, 0x63, 0x81, 0x28, 0xe8, 0x09, 0x11, 0x10, 0x34, 0x91, 0xdc, 0x30, 0x10, - 0x43, 0xb0, 0xae, 0x18, 0x21, 0x8a, 0x64, 0x81, 0xcb, 0x9b, 0x88, 0x18, 0xf9, 0x8b, 0x22, 0xa1, - 0x8d, 0xa8, 0x52, 0x32, 0xb0, 0x8a, 0x43, 0x90, 0x32, 0x26, 0xaa, 0xdb, 0x38, 0x83, 0x42, 0x22, - 0xf0, 0x9d, 0x00, 0x99, 0x98, 0x8c, 0x42, 0x24, 0x01, 0x98, 0x8b, 0xc8, 0x51, 0xc9, 0x59, 0x14, - 0x11, 0xa8, 0xaa, 0x39, 0x26, 0x12, 0x9a, 0x9a, 0xc0, 0x9b, 0xaa, 0xd8, 0x8b, 0x80, 0xde, 0x28, - 0x43, 0x20, 0x94, 0x1b, 0x14, 0x08, 0xc8, 0x29, 0x82, 0xba, 0x4a, 0x37, 0x90, 0xb9, 0x9e, 0x99, - 0x20, 0x13, 0xe9, 0x09, 0xbc, 0xa9, 0x49, 0xa1, 0x20, 0xba, 0x08, 0x55, 0x33, 0xb1, 0x0b, 0x09, - 0x41, 0x06, 0x09, 0x25, 0x00, 0x99, 0xcb, 0x40, 0x81, 0x08, 0x56, 0x90, 0xaa, 0xbb, 0xcc, 0x0a, - 0x42, 0x34, 0x92, 0x8b, 0x01, 0x2a, 0x27, 0xba, 0x99, 0xc0, 0x1a, 0x12, 0x15, 0xbd, 0x30, 0x24, - 0x20, 0xa8, 0xa0, 0xbc, 0x1a, 0x37, 0x12, 0x10, 0xd1, 0xae, 0x99, 0x01, 0xab, 0xa9, 0x08, 0x70, - 0xd1, 0x0a, 0xa1, 0x28, 0x02, 0x28, 0x77, 0x84, 0x90, 0x9b, 0x98, 0x31, 0x22, 0x90, 0xaa, 0x55, - 0x81, 0xdd, 0x09, 0x10, 0x10, 0x90, 0xda, 0x8d, 0x11, 0x80, 0x0b, 0xa0, 0x2b, 0x27, 0x23, 0x90, - 0xbb, 0x01, 0x10, 0x30, 0x24, 0x13, 0x70, 0x04, 0x88, 0xbb, 0x18, 0x3a, 0xd3, 0x8c, 0xec, 0x09, - 0x21, 0xa0, 0xcc, 0x09, 0xb8, 0x18, 0x34, 0xfb, 0x0a, 0x40, 0x82, 0x20, 0x51, 0x27, 0x82, 0xb9, - 0x18, 0x43, 0x90, 0x0a, 0xd0, 0x8c, 0x20, 0xb0, 0x28, 0xb8, 0xac, 0xb9, 0x8d, 0x00, 0xc9, 0x9a, - 0x8a, 0x90, 0x41, 0x21, 0x34, 0x77, 0x98, 0x98, 0x29, 0x24, 0x23, 0x34, 0x90, 0xab, 0x90, 0x1b, - 0xf0, 0xaf, 0x00, 0x01, 0x31, 0x94, 0xbc, 0xac, 0x18, 0x23, 0x98, 0xca, 0x8a, 0x0a, 0x37, 0xc9, - 0x2a, 0x26, 0x02, 0x00, 0xba, 0x10, 0xb9, 0xa9, 0xd8, 0x8c, 0x21, 0x81, 0x2b, 0x67, 0x81, 0x18, - 0x98, 0x21, 0x00, 0xa9, 0xec, 0x29, 0xb2, 0xbf, 0x08, 0x42, 0x12, 0x90, 0x89, 0x63, 0x02, 0x43, - 0x80, 0xcb, 0x09, 0xc0, 0x1b, 0x91, 0x89, 0xbd, 0x28, 0x74, 0xa2, 0x9a, 0x9a, 0x34, 0x21, 0xb9, - 0x19, 0xcc, 0x63, 0xb0, 0x9f, 0x10, 0x80, 0x09, 0x11, 0x00, 0xba, 0x72, 0xa1, 0x18, 0x42, 0x91, - 0xb9, 0x9e, 0x13, 0x89, 0xa8, 0x58, 0x14, 0x90, 0xdf, 0x01, 0x00, 0x00, 0x91, 0xae, 0x08, 0x20, - 0x12, 0x00, 0x51, 0x14, 0xc8, 0x39, 0x24, 0xc9, 0xae, 0x99, 0x19, 0x11, 0x31, 0x02, 0x98, 0x79, - 0xa2, 0x09, 0xa9, 0x99, 0x08, 0x53, 0x73, 0x04, 0x98, 0xae, 0x31, 0x01, 0xc9, 0x40, 0x92, 0xa8, - 0x19, 0x90, 0x20, 0x22, 0x26, 0x88, 0xba, 0x8c, 0xe1, 0x0b, 0x54, 0xa2, 0x8d, 0x08, 0x81, 0x29, - 0x08, 0xf9, 0xbc, 0x18, 0x98, 0x73, 0x02, 0xba, 0xba, 0x20, 0x90, 0xba, 0x10, 0x41, 0x05, 0x63, - 0x91, 0x29, 0x24, 0x90, 0x8a, 0x34, 0xf8, 0x0b, 0x92, 0xba, 0x1a, 0x91, 0x12, 0x5b, 0xb4, 0x9d, - 0x8b, 0x13, 0x29, 0x16, 0x88, 0xeb, 0x29, 0x64, 0x02, 0x80, 0xaa, 0x98, 0x11, 0x72, 0x04, 0x99, - 0x08, 0x09, 0x01, 0xeb, 0x88, 0x0a, 0x04, 0xab, 0x89, 0xb8, 0x38, 0x03, 0xf9, 0x1c, 0x82, 0x73, - 0x12, 0xcb, 0xaa, 0x88, 0x51, 0xc1, 0x0a, 0x32, 0xb8, 0xa9, 0x0e, 0x36, 0x03, 0x10, 0x91, 0xa9, - 0x09, 0xfb, 0xcb, 0xab, 0x18, 0x88, 0x31, 0x22, 0x53, 0xfa, 0x9f, 0x10, 0x12, 0x81, 0x00, 0x20, - 0x35, 0x12, 0x80, 0xbb, 0x58, 0x83, 0x89, 0xad, 0x08, 0x91, 0xbf, 0x11, 0x11, 0xb8, 0xaa, 0x52, - 0x02, 0xd9, 0x9b, 0x53, 0xd8, 0x58, 0x15, 0x98, 0x89, 0x98, 0x29, 0x93, 0x0a, 0x32, 0xf9, 0x3b, - 0x17, 0xa1, 0x89, 0x11, 0xa0, 0xcf, 0x20, 0x43, 0x91, 0xea, 0x9b, 0x01, 0x11, 0x82, 0xb9, 0x9c, - 0x88, 0x41, 0xc0, 0x49, 0x02, 0x13, 0x73, 0x02, 0x00, 0xa8, 0x29, 0xfa, 0x0c, 0x30, 0x81, 0x90, - 0xce, 0x19, 0x01, 0x18, 0x98, 0xa8, 0xae, 0x09, 0x98, 0x30, 0x40, 0x15, 0x18, 0xa1, 0x50, 0x25, - 0x80, 0xa8, 0x72, 0xb0, 0xcb, 0x1a, 0x35, 0xa0, 0x42, 0xc9, 0x8a, 0x89, 0x51, 0x14, 0x80, 0xcc, - 0x88, 0x21, 0x00, 0xca, 0x28, 0x12, 0x23, 0x30, 0x37, 0xca, 0x9a, 0x20, 0xb0, 0x30, 0x90, 0xba, - 0xaa, 0xcf, 0xad, 0x80, 0x2b, 0x05, 0xca, 0x29, 0xd0, 0xab, 0x0a, 0x01, 0x19, 0x92, 0x73, 0x17, - 0x00, 0xab, 0x31, 0x42, 0x26, 0x90, 0x89, 0x00, 0x32, 0x00, 0xc8, 0xbb, 0x0a, 0x98, 0xf9, 0x8e, - 0x11, 0xa9, 0x89, 0x91, 0x09, 0xb8, 0xfb, 0x1b, 0x37, 0x23, 0xc8, 0x09, 0x41, 0x82, 0x80, 0x22, - 0x31, 0x15, 0x21, 0xd0, 0x9e, 0x01, 0xcb, 0x89, 0xaa, 0x52, 0x16, 0xc9, 0x9a, 0xcb, 0x19, 0x02, - 0x11, 0x24, 0x90, 0x29, 0xb0, 0x89, 0x72, 0x84, 0x22, 0x72, 0x82, 0xa9, 0xab, 0x9b, 0x01, 0xdb, - 0x08, 0x00, 0x24, 0xca, 0xad, 0xba, 0x51, 0xdb, 0x20, 0x11, 0x44, 0xc0, 0x19, 0x02, 0x31, 0x23, - 0xd0, 0x9d, 0x50, 0x13, 0xca, 0x18, 0xa8, 0x29, 0xa3, 0xad, 0x9a, 0x10, 0x20, 0x02, 0x37, 0xbb, - 0x22, 0xa8, 0x90, 0x9f, 0x00, 0x38, 0x77, 0x82, 0x9a, 0xa9, 0x30, 0x92, 0x9b, 0x13, 0xeb, 0xac, - 0x9a, 0x53, 0x80, 0x20, 0xc9, 0x8a, 0x31, 0x24, 0x42, 0x02, 0xb9, 0xaf, 0x80, 0x39, 0x13, 0xd9, - 0xbd, 0xbb, 0x99, 0x73, 0x15, 0x08, 0x00, 0x02, 0x98, 0x88, 0x0a, 0x27, 0xb8, 0x6a, 0x04, 0x09, - 0xa1, 0x0a, 0x33, 0xb1, 0xaf, 0xaa, 0xcb, 0x28, 0x03, 0xfa, 0xaa, 0xbb, 0x31, 0x32, 0x27, 0x00, - 0xa0, 0x9b, 0x70, 0x24, 0x02, 0x90, 0xbb, 0x11, 0x48, 0x83, 0x9a, 0x62, 0xd8, 0xbd, 0x8a, 0x14, - 0xb0, 0x9b, 0x22, 0x81, 0xb0, 0x20, 0xbd, 0x54, 0x10, 0x23, 0x32, 0x81, 0x53, 0x21, 0xda, 0x48, - 0x27, 0xa8, 0x89, 0xa8, 0xbe, 0x89, 0x18, 0xa1, 0xad, 0x42, 0x02, 0xa9, 0xb9, 0xac, 0xb8, 0x79, - 0x92, 0xb9, 0x48, 0x25, 0x20, 0xc0, 0x0b, 0x61, 0x15, 0x81, 0x08, 0x80, 0xaa, 0x8b, 0x11, 0x03, - 0xcf, 0x08, 0x81, 0xa8, 0xbc, 0x8a, 0xd8, 0x8a, 0xaa, 0x29, 0x47, 0x12, 0xb0, 0xac, 0x0b, 0x46, - 0x81, 0x18, 0x12, 0x31, 0xa0, 0x1a, 0x17, 0xca, 0x18, 0x41, 0x14, 0xbb, 0xac, 0x98, 0xaf, 0x12, - 0xba, 0x08, 0x42, 0x02, 0x00, 0xec, 0x29, 0x02, 0x08, 0x21, 0x33, 0x52, 0x13, 0x24, 0xcc, 0x89, - 0x51, 0x33, 0x91, 0x0b, 0x26, 0x90, 0xba, 0xbf, 0x00, 0x88, 0x89, 0x88, 0xbd, 0xac, 0xb9, 0x8c, - 0x93, 0x8c, 0x82, 0xbb, 0x61, 0x82, 0xbc, 0x1a, 0x66, 0x24, 0x00, 0x01, 0x99, 0x31, 0xa2, 0x0b, - 0x12, 0xb9, 0x88, 0xbd, 0x08, 0xb1, 0x0b, 0x81, 0xff, 0xaa, 0x99, 0x9b, 0xa8, 0xbc, 0x0b, 0x45, - 0x45, 0x12, 0x11, 0x10, 0x12, 0x12, 0x79, 0x34, 0x82, 0x8a, 0xea, 0xac, 0x08, 0x9a, 0x30, 0x82, - 0xa9, 0xab, 0xb8, 0xbf, 0x11, 0xe9, 0x89, 0x9a, 0x31, 0x36, 0x33, 0x32, 0x02, 0x80, 0x2a, 0x04, - 0x19, 0x23, 0xef, 0x89, 0x38, 0x23, 0x31, 0xfc, 0x1e, 0x12, 0x80, 0xa9, 0xca, 0x9b, 0x21, 0xb1, - 0x9e, 0x98, 0x41, 0x14, 0x99, 0xa9, 0x9b, 0x71, 0x17, 0xa8, 0x99, 0x90, 0x30, 0x04, 0x00, 0x19, - 0x04, 0x08, 0xa8, 0x88, 0x80, 0x51, 0xc8, 0x89, 0xdb, 0x2a, 0x17, 0xd9, 0x8b, 0x81, 0x18, 0x21, - 0x02, 0xa0, 0x8c, 0x03, 0x2a, 0x37, 0x00, 0x55, 0x33, 0x01, 0xca, 0x8a, 0x00, 0x12, 0xae, 0x88, - 0x19, 0x81, 0xf8, 0x0d, 0xa9, 0xba, 0x40, 0x02, 0xb8, 0x8d, 0x80, 0xa9, 0x28, 0x12, 0x45, 0x02, - 0xa9, 0x81, 0x1e, 0x47, 0x13, 0x18, 0x91, 0xba, 0xae, 0x8a, 0x21, 0xa8, 0xbe, 0xb9, 0x28, 0x04, - 0x99, 0x31, 0xb8, 0x0c, 0x35, 0x21, 0x14, 0x90, 0xac, 0x91, 0x0c, 0x61, 0x04, 0x8a, 0x12, 0xbc, - 0x20, 0x63, 0x13, 0xba, 0xab, 0x2b, 0x27, 0xab, 0x99, 0xc9, 0x20, 0x1a, 0x47, 0x42, 0xa0, 0x99, - 0x8a, 0x21, 0xa1, 0x1b, 0x04, 0x89, 0x35, 0xda, 0x09, 0x13, 0x0b, 0xf9, 0x2c, 0x13, 0x29, 0x02, - 0x00, 0x9b, 0xc8, 0x4b, 0xc2, 0x9b, 0x60, 0x93, 0xfa, 0x9f, 0x00, 0x31, 0x02, 0xbb, 0xcb, 0x9b, - 0x18, 0x33, 0xca, 0x00, 0x29, 0xf1, 0x3a, 0x15, 0xca, 0x0a, 0x80, 0x73, 0x85, 0x18, 0x22, 0x90, - 0x00, 0x10, 0x23, 0xcd, 0xa9, 0x9d, 0x41, 0x02, 0xe9, 0x8b, 0x11, 0x99, 0x80, 0x9a, 0x08, 0x64, - 0x23, 0xc9, 0x48, 0x33, 0x02, 0x32, 0x14, 0xab, 0x18, 0x27, 0xda, 0xac, 0xb0, 0x2a, 0x93, 0x28, - 0x14, 0x10, 0xb0, 0xcd, 0x99, 0xbb, 0x40, 0x13, 0x08, 0x01, 0x80, 0x30, 0xfb, 0xff, 0x09, 0x88, - 0x21, 0x43, 0x90, 0x20, 0x13, 0xd8, 0x2b, 0x83, 0xdc, 0x29, 0x12, 0x32, 0xa1, 0x8e, 0x90, 0x9b, - 0x01, 0xec, 0xbc, 0x89, 0x00, 0x21, 0xb9, 0x70, 0x25, 0x01, 0x80, 0x18, 0x43, 0x08, 0x82, 0x39, - 0x33, 0x25, 0x08, 0x00, 0xa8, 0xbb, 0x39, 0xa3, 0x9f, 0x93, 0xcf, 0xbb, 0x08, 0xbb, 0xa0, 0x3a, - 0xf2, 0x9a, 0x1a, 0x83, 0x70, 0x36, 0x10, 0x90, 0x89, 0x73, 0x12, 0xb1, 0x8b, 0xea, 0x08, 0x98, - 0x29, 0xb2, 0xed, 0x2a, 0x02, 0x41, 0x02, 0xa9, 0x99, 0xcf, 0x8a, 0x91, 0x20, 0x00, 0xc9, 0x38, - 0x32, 0x37, 0xa0, 0x59, 0x24, 0x91, 0x9a, 0x99, 0xbb, 0xac, 0xbd, 0x98, 0x98, 0x8b, 0x24, 0x15, - 0xbb, 0x11, 0x61, 0x23, 0x11, 0x10, 0x92, 0x4a, 0x22, 0x47, 0x18, 0x99, 0x45, 0x91, 0x40, 0x13, - 0xdb, 0xad, 0x9a, 0x40, 0x80, 0x88, 0x48, 0x02, 0x88, 0xc9, 0xac, 0x10, 0x98, 0x33, 0x74, 0x82, - 0xb9, 0x5a, 0x83, 0xb9, 0xad, 0xcc, 0x18, 0x12, 0x80, 0xcf, 0x89, 0x08, 0x11, 0x82, 0x0b, 0x34, - 0x91, 0xca, 0x9b, 0x35, 0x33, 0x81, 0x90, 0xbd, 0x19, 0x25, 0xa2, 0x0d, 0x24, 0x28, 0x93, 0xcd, - 0x1a, 0x10, 0x20, 0x46, 0x01, 0x32, 0x05, 0xbc, 0x99, 0x33, 0x11, 0xd0, 0xac, 0x8c, 0x24, 0xa0, - 0xbc, 0x19, 0xa0, 0x8c, 0x23, 0xa8, 0x1a, 0x47, 0x00, 0x42, 0xd0, 0x8b, 0x53, 0x10, 0x02, 0xb0, - 0x9d, 0x90, 0x18, 0x01, 0xea, 0xaa, 0x88, 0xc9, 0x8c, 0x43, 0xd8, 0x9a, 0x22, 0x81, 0x19, 0x36, - 0x00, 0x12, 0x82, 0x1a, 0xa1, 0x32, 0xfc, 0x8f, 0x01, 0x00, 0x08, 0x88, 0x82, 0x8b, 0x9a, 0x91, - 0xff, 0x1a, 0x83, 0x89, 0x30, 0x82, 0x61, 0x34, 0xa0, 0xbc, 0x70, 0x82, 0x08, 0x02, 0x09, 0x83, - 0x9d, 0x30, 0x92, 0x3a, 0x90, 0x9a, 0x32, 0xfb, 0x5b, 0x83, 0x9b, 0x62, 0xa1, 0x1b, 0x03, 0xcf, - 0x8b, 0x31, 0x11, 0x81, 0xcc, 0x2b, 0x95, 0x9b, 0x33, 0x23, 0x83, 0xaf, 0x00, 0xcd, 0x9b, 0x30, - 0x02, 0x81, 0x19, 0x22, 0xfc, 0x3a, 0x15, 0xa1, 0xab, 0xbb, 0x18, 0x00, 0x75, 0x82, 0x31, 0xa9, - 0x28, 0x27, 0xb8, 0xab, 0x89, 0x88, 0x80, 0x22, 0x99, 0x38, 0x37, 0xc8, 0x18, 0x14, 0x08, 0xff, - 0x19, 0x32, 0x90, 0x31, 0xa1, 0x0a, 0xfa, 0x9a, 0x11, 0x30, 0x27, 0x80, 0xb8, 0xae, 0x08, 0x22, - 0x99, 0x31, 0x13, 0x50, 0x13, 0x91, 0xb9, 0x9d, 0x25, 0xb8, 0x9d, 0xba, 0x38, 0x02, 0x22, 0x45, - 0xd1, 0xae, 0x9a, 0x08, 0x00, 0x42, 0x02, 0x10, 0xa0, 0x9d, 0x91, 0x18, 0x98, 0x21, 0xf8, 0xbc, - 0x1b, 0xb9, 0x11, 0xad, 0x99, 0x63, 0x81, 0x63, 0x81, 0x19, 0x16, 0x08, 0xb8, 0x61, 0x01, 0x01, - 0x11, 0x11, 0x02, 0xfa, 0xaa, 0xbb, 0x53, 0x81, 0x9a, 0xaa, 0x89, 0x9b, 0x30, 0x16, 0x51, 0x02, - 0x52, 0x22, 0x01, 0x24, 0xbb, 0x10, 0x40, 0x13, 0x38, 0xb2, 0xff, 0x39, 0xa3, 0xac, 0xeb, 0x09, - 0x02, 0xb9, 0xab, 0xc9, 0x0b, 0x14, 0xdf, 0x09, 0x80, 0x30, 0x82, 0x10, 0xb8, 0xac, 0x72, 0x37, - 0x02, 0x99, 0x00, 0x98, 0x20, 0xa1, 0xbd, 0xbb, 0x1a, 0x23, 0x01, 0xcf, 0xb9, 0x0b, 0xeb, 0x39, - 0x26, 0xb8, 0xbb, 0x09, 0x28, 0x35, 0x51, 0x13, 0x08, 0x31, 0x81, 0x22, 0x51, 0x02, 0xb8, 0x39, - 0xda, 0xa9, 0xac, 0x74, 0x81, 0x30, 0x81, 0x19, 0xf0, 0x1a, 0x18, 0x23, 0xb8, 0xdc, 0x2a, 0x23, - 0xb2, 0x4a, 0x01, 0x67, 0x80, 0xa9, 0x9b, 0x09, 0x24, 0x08, 0x91, 0xbe, 0x0a, 0x80, 0xaa, 0xb8, - 0xcf, 0x20, 0x01, 0xd9, 0xcb, 0x1a, 0x33, 0x20, 0xa2, 0xae, 0x8a, 0x44, 0x81, 0x89, 0xd9, 0x1a, - 0x33, 0x45, 0x00, 0x18, 0xc8, 0x18, 0x01, 0x02, 0xeb, 0xab, 0x39, 0x37, 0x21, 0xa1, 0x9c, 0xab, - 0x38, 0x92, 0x78, 0xa2, 0xaa, 0x0a, 0xe0, 0x0a, 0x21, 0x22, 0x43, 0x33, 0x15, 0x60, 0x14, 0x18, - 0x22, 0x12, 0x11, 0xcb, 0xbc, 0x39, 0x92, 0xdc, 0xaa, 0x9a, 0x02, 0xdc, 0x8c, 0x41, 0x01, 0x11, - 0x81, 0xac, 0xa9, 0x70, 0x22, 0x24, 0x01, 0xfb, 0x9b, 0xa8, 0x19, 0x42, 0xc0, 0xac, 0xaa, 0xac, - 0x08, 0x34, 0xb8, 0x2a, 0x33, 0xd1, 0xae, 0x11, 0x11, 0x01, 0x00, 0xfc, 0x9c, 0x10, 0xa9, 0x9a, - 0x63, 0x14, 0x88, 0x31, 0x93, 0x0c, 0x81, 0x41, 0x11, 0x82, 0x41, 0x28, 0x95, 0xac, 0xbb, 0x72, - 0x15, 0x88, 0x08, 0x12, 0xc8, 0x89, 0x39, 0x37, 0x00, 0x80, 0x81, 0x40, 0x02, 0x93, 0xcf, 0x88, - 0x98, 0x9a, 0x9b, 0x13, 0x8a, 0xf0, 0x9c, 0x99, 0x9a, 0x09, 0x44, 0x33, 0xc0, 0xbd, 0x28, 0x43, - 0x32, 0x26, 0x80, 0xda, 0xa9, 0x09, 0x23, 0xda, 0xbb, 0xbb, 0x2a, 0x37, 0x00, 0xb9, 0x1c, 0x03, - 0xd9, 0xad, 0x00, 0x21, 0x89, 0x13, 0x48, 0x15, 0x98, 0x09, 0x36, 0xb0, 0x19, 0x43, 0x08, 0x27, - 0x98, 0xdb, 0x09, 0x18, 0x02, 0xa9, 0x99, 0x60, 0xb2, 0x8d, 0x31, 0xa1, 0x30, 0x99, 0xb9, 0x73, - 0x26, 0x01, 0x20, 0xc1, 0xad, 0x21, 0x25, 0x12, 0x21, 0xa8, 0x8a, 0x08, 0xfa, 0x9d, 0x99, 0xab, - 0x80, 0x9b, 0xa1, 0xbf, 0x9b, 0x32, 0xdb, 0x38, 0x81, 0x22, 0x38, 0xa3, 0xad, 0x49, 0x47, 0x11, - 0xba, 0x73, 0x14, 0x00, 0x88, 0xbb, 0x81, 0xbc, 0x28, 0x82, 0xb9, 0x1b, 0x96, 0x98, 0xbe, 0x91, - 0xbc, 0x00, 0x11, 0x88, 0x91, 0x2b, 0x35, 0x27, 0xa9, 0x22, 0x25, 0x01, 0x22, 0x91, 0x00, 0x1a, - 0xd3, 0x0e, 0x42, 0xa1, 0x0c, 0xb2, 0xac, 0xac, 0xa9, 0x09, 0x03, 0xdd, 0x1a, 0x63, 0x83, 0xa9, - 0x0b, 0x24, 0x24, 0x10, 0x88, 0x19, 0x14, 0x29, 0x57, 0x12, 0xdd, 0x09, 0x31, 0x12, 0x08, 0xa8, - 0x9b, 0x33, 0xfb, 0x88, 0x88, 0xcb, 0x39, 0xd1, 0xbd, 0x8d, 0x11, 0x21, 0xca, 0x8c, 0x32, 0x23, - 0x20, 0x47, 0x81, 0xaa, 0x08, 0x20, 0x83, 0x1b, 0x34, 0xe9, 0xaa, 0xdb, 0x19, 0x10, 0xa3, 0xbf, - 0x9a, 0x53, 0x23, 0xa8, 0xca, 0x0b, 0x02, 0x20, 0x10, 0x27, 0xba, 0x48, 0x24, 0x90, 0xad, 0x10, - 0x41, 0x02, 0x54, 0x12, 0xb9, 0x19, 0xa8, 0xed, 0x9b, 0x30, 0x24, 0x00, 0x99, 0xc9, 0x99, 0x88, - 0x01, 0xdb, 0x30, 0x30, 0x47, 0x81, 0x41, 0x33, 0x02, 0x00, 0x81, 0xaa, 0xef, 0x0a, 0xa0, 0x8b, - 0x08, 0xc8, 0x8c, 0x99, 0xda, 0x4b, 0x24, 0xa0, 0x89, 0x11, 0x32, 0xc1, 0x9b, 0x89, 0x61, 0xa3, - 0xaf, 0x12, 0x10, 0x23, 0x44, 0xb8, 0xbc, 0x09, 0xb9, 0x64, 0x01, 0xa9, 0x58, 0xd0, 0x9a, 0x19, - 0x02, 0x31, 0x02, 0x90, 0x1b, 0x27, 0x23, 0x99, 0xa9, 0x4b, 0x47, 0x80, 0xaa, 0x29, 0x04, 0xcd, - 0x0b, 0x22, 0x10, 0xb9, 0x3a, 0x16, 0x02, 0x31, 0xd0, 0x8b, 0xb8, 0x89, 0xfb, 0x0a, 0x83, 0x8b, - 0xf8, 0x3a, 0x83, 0x70, 0x01, 0xa0, 0xad, 0x8a, 0x12, 0x8a, 0x47, 0x82, 0x89, 0x10, 0x53, 0x82, - 0xbd, 0x8a, 0x01, 0x18, 0x21, 0x02, 0xfa, 0x8f, 0x81, 0x99, 0xa9, 0x2a, 0x14, 0x88, 0x88, 0x9a, - 0x43, 0x91, 0x59, 0x16, 0xb9, 0x19, 0x53, 0x15, 0x99, 0x91, 0xcd, 0x38, 0x01, 0xa8, 0x30, 0x25, - 0x90, 0xba, 0xbb, 0x50, 0x02, 0xdc, 0x8c, 0x10, 0x01, 0xa9, 0x21, 0x23, 0x21, 0xa8, 0x73, 0x06, - 0x09, 0x13, 0x19, 0x25, 0x36, 0x01, 0xca, 0xaa, 0x09, 0x10, 0xeb, 0x08, 0xa8, 0xce, 0x8a, 0xaa, - 0x80, 0x28, 0x80, 0xb8, 0x8d, 0x13, 0x9b, 0x47, 0xa1, 0x09, 0x84, 0x1b, 0x26, 0x90, 0x18, 0x01, - 0x33, 0x82, 0x6b, 0x07, 0x99, 0x89, 0xb9, 0x8a, 0x20, 0xa0, 0xdf, 0x9c, 0x21, 0x03, 0x0a, 0xb1, - 0x8a, 0x09, 0x53, 0x04, 0x19, 0x24, 0x23, 0xfb, 0x19, 0x81, 0xa9, 0x72, 0x15, 0x01, 0xa0, 0xaa, - 0x39, 0x27, 0x90, 0xab, 0x08, 0x00, 0xdb, 0x08, 0x12, 0xa8, 0xea, 0x0a, 0x98, 0xa8, 0xce, 0xaa, - 0x20, 0x35, 0xa2, 0x19, 0x55, 0xb0, 0x48, 0x03, 0x10, 0x91, 0x9b, 0x54, 0x21, 0x06, 0xab, 0xbb, - 0x9c, 0x01, 0xac, 0x88, 0x99, 0x19, 0xe0, 0xae, 0x8a, 0x43, 0xa1, 0x18, 0x35, 0xc8, 0x9b, 0x10, - 0x10, 0x44, 0x32, 0x92, 0x19, 0xb0, 0x1b, 0x81, 0xcc, 0x21, 0xac, 0x74, 0x13, 0x9a, 0xb9, 0x4a, - 0x26, 0xa0, 0xab, 0x1a, 0x47, 0x80, 0xa8, 0xbc, 0xab, 0x30, 0x43, 0x81, 0xfb, 0x8a, 0x21, 0x11, - 0x02, 0xba, 0x0a, 0x33, 0x77, 0x04, 0x88, 0x80, 0x99, 0x8a, 0x02, 0x61, 0x13, 0xe9, 0x8a, 0x98, - 0x80, 0xa9, 0xbb, 0xa8, 0xbd, 0x0a, 0x75, 0x83, 0x89, 0x88, 0x82, 0xbc, 0xdc, 0x39, 0x34, 0x23, - 0x08, 0xb0, 0x1c, 0xd8, 0x28, 0x12, 0x91, 0x19, 0x51, 0x15, 0xa9, 0x19, 0xf9, 0x0b, 0x12, 0x91, - 0x9e, 0x10, 0xa0, 0xbe, 0x1a, 0x01, 0x11, 0x98, 0xc8, 0x48, 0x13, 0x73, 0x81, 0xca, 0x19, 0x33, - 0x10, 0x35, 0xb9, 0x38, 0x03, 0x10, 0x37, 0x92, 0xce, 0x09, 0x12, 0x88, 0x88, 0x99, 0x0b, 0x27, - 0x99, 0xd0, 0xad, 0x09, 0xb0, 0x18, 0x83, 0xcf, 0x28, 0x32, 0x12, 0x91, 0xab, 0x29, 0x77, 0x04, - 0xa8, 0x09, 0x11, 0x32, 0xa1, 0x1b, 0xc1, 0x9a, 0x8a, 0x14, 0xde, 0x99, 0xa8, 0xa9, 0x08, 0xd9, - 0x9c, 0x21, 0x82, 0x9a, 0x65, 0x12, 0x81, 0xba, 0x08, 0x11, 0x54, 0x24, 0x81, 0x80, 0x29, 0x37, - 0x98, 0xaa, 0x0a, 0x88, 0xfa, 0x9d, 0x99, 0x9b, 0x30, 0xb1, 0xbd, 0x09, 0x30, 0x26, 0x81, 0x89, - 0x20, 0x11, 0x55, 0x13, 0x10, 0xc8, 0x72, 0x84, 0x8a, 0xb9, 0x09, 0x31, 0x27, 0xba, 0x89, 0xba, - 0x89, 0x99, 0x90, 0xb9, 0xab, 0xbc, 0x76, 0x82, 0x99, 0x00, 0x89, 0x43, 0x01, 0x9a, 0x24, 0x38, - 0x36, 0x05, 0x9a, 0x02, 0xba, 0x99, 0x58, 0x14, 0x89, 0xea, 0xac, 0x28, 0x91, 0x08, 0x91, 0xae, - 0x8a, 0xbb, 0x0a, 0x91, 0xcf, 0xbc, 0x38, 0x24, 0x11, 0x01, 0x98, 0x30, 0x25, 0x53, 0x34, 0x90, - 0x11, 0xfc, 0x18, 0xb0, 0x9d, 0x18, 0x98, 0x11, 0x9b, 0x88, 0xaa, 0xdb, 0x0b, 0x37, 0x01, 0x28, - 0x33, 0x28, 0x33, 0x64, 0x03, 0x18, 0x43, 0x35, 0x03, 0xbe, 0x28, 0x45, 0xb1, 0x8a, 0x19, 0xc8, - 0x0b, 0x82, 0x9a, 0xf9, 0x9e, 0x01, 0xa8, 0x09, 0x11, 0x04, 0x89, 0x11, 0x41, 0x82, 0x48, 0x35, - 0x83, 0xad, 0xbb, 0x31, 0x02, 0x8b, 0x27, 0x01, 0x98, 0xb9, 0xdf, 0x9a, 0xaa, 0xcb, 0xdb, 0x89, - 0x30, 0x15, 0x98, 0x88, 0xa0, 0x68, 0x25, 0x81, 0x08, 0xa9, 0x51, 0x23, 0x12, 0xaa, 0xc9, 0x9c, - 0x41, 0x25, 0xc9, 0x0a, 0x23, 0xc9, 0x9b, 0x29, 0x82, 0xaa, 0x10, 0x09, 0x64, 0x16, 0xda, 0x18, - 0x24, 0x80, 0x08, 0x10, 0x42, 0x23, 0xa9, 0x00, 0xab, 0xa0, 0xdc, 0x8e, 0x24, 0x10, 0xb2, 0xbf, - 0x1a, 0x02, 0x08, 0xb9, 0x9d, 0x01, 0xb8, 0xae, 0x72, 0xa0, 0x0a, 0x01, 0x99, 0x08, 0x21, 0x41, - 0x93, 0xd9, 0x1b, 0x47, 0xb0, 0x9c, 0x11, 0x21, 0x23, 0xda, 0x88, 0xbd, 0x48, 0x14, 0x12, 0xda, - 0x9a, 0x99, 0x28, 0xa8, 0x33, 0xc9, 0x48, 0x92, 0x2b, 0x16, 0x53, 0x82, 0xda, 0x8a, 0x31, 0xa1, - 0x49, 0x15, 0x9a, 0x10, 0x13, 0x11, 0x09, 0xd1, 0x79, 0x14, 0x11, 0xc9, 0xbb, 0x9c, 0x64, 0x92, - 0xbb, 0x18, 0x01, 0xd9, 0x8b, 0x98, 0x29, 0x37, 0x32, 0x25, 0x99, 0xbc, 0x8a, 0x20, 0x16, 0xba, - 0x9a, 0xbc, 0x0b, 0x01, 0x18, 0xf0, 0xad, 0x89, 0x10, 0x12, 0x41, 0xd1, 0x9c, 0x31, 0x45, 0x12, - 0xba, 0xb9, 0x19, 0x11, 0x12, 0x91, 0x8d, 0xc9, 0x38, 0xb0, 0xcb, 0x60, 0x84, 0x0a, 0x80, 0x30, - 0x42, 0x12, 0x33, 0x92, 0x59, 0x27, 0x20, 0x12, 0x89, 0x00, 0x11, 0xa0, 0xed, 0x0a, 0x20, 0x65, - 0x12, 0xcb, 0xbb, 0x20, 0x21, 0x03, 0xcd, 0x89, 0x89, 0x89, 0x91, 0x9c, 0xc9, 0x38, 0x05, 0x0b, - 0x16, 0x90, 0x1b, 0x47, 0x02, 0xeb, 0x99, 0x99, 0x99, 0x09, 0x42, 0xd8, 0x9b, 0x98, 0x1a, 0x23, - 0x54, 0x92, 0x30, 0x13, 0xac, 0x11, 0xdb, 0xcb, 0x19, 0xaa, 0x18, 0x33, 0xb9, 0xfb, 0x1a, 0x02, - 0xbb, 0xac, 0x73, 0x15, 0x80, 0x22, 0x00, 0x31, 0x36, 0x01, 0x62, 0x02, 0x10, 0x90, 0xad, 0x10, - 0x61, 0x26, 0x88, 0x99, 0x08, 0x80, 0xb0, 0xbb, 0xde, 0x0a, 0x43, 0x02, 0x89, 0x90, 0x09, 0x02, - 0x01, 0xea, 0x09, 0x9a, 0x34, 0xf9, 0x9d, 0x00, 0x22, 0xb9, 0x39, 0x94, 0xad, 0x20, 0x12, 0xf8, - 0x9b, 0xbc, 0x9c, 0x18, 0x10, 0x11, 0x00, 0x99, 0x43, 0x82, 0x1a, 0x77, 0x03, 0x99, 0xa9, 0x38, - 0xa4, 0x2b, 0x26, 0x98, 0xaa, 0x89, 0x31, 0x02, 0xfd, 0x8a, 0x32, 0x23, 0x00, 0xc9, 0x29, 0x35, - 0xb2, 0x30, 0x15, 0xc9, 0x9b, 0x00, 0xbb, 0x30, 0x65, 0xc1, 0x9c, 0x89, 0x30, 0x45, 0x92, 0xaa, - 0xba, 0xbb, 0x74, 0x14, 0x11, 0x99, 0x19, 0x98, 0x01, 0x99, 0xc9, 0x28, 0xa3, 0xaf, 0x80, 0x9d, - 0x01, 0x9a, 0x89, 0xa9, 0x22, 0xf9, 0x0b, 0x23, 0x00, 0x3a, 0xb5, 0x0f, 0x45, 0x92, 0x9b, 0x28, - 0x35, 0xb8, 0x19, 0x90, 0xec, 0xaa, 0xaa, 0x08, 0x10, 0x31, 0x35, 0xb8, 0x0c, 0x10, 0x92, 0x8d, - 0x22, 0x98, 0x22, 0xbc, 0xb9, 0x72, 0x23, 0x34, 0x02, 0x51, 0x92, 0x40, 0xf8, 0xcb, 0x2a, 0x35, - 0xb8, 0xac, 0x08, 0x43, 0x43, 0x11, 0x02, 0x89, 0x01, 0x0a, 0x54, 0x83, 0xcf, 0xbb, 0x09, 0x28, - 0x05, 0x89, 0x12, 0xb9, 0x2a, 0x15, 0xba, 0x89, 0xba, 0x21, 0x64, 0x11, 0x22, 0x09, 0x44, 0x33, - 0x90, 0xc8, 0x9e, 0x09, 0x12, 0x98, 0xed, 0xbc, 0xaa, 0x9a, 0x10, 0x32, 0x80, 0x53, 0x12, 0x92, - 0x2b, 0x23, 0x77, 0xa2, 0x89, 0xaa, 0xd9, 0x38, 0xc8, 0x9a, 0x19, 0x62, 0x82, 0x89, 0xd9, 0x2a, - 0x82, 0x73, 0x82, 0xa9, 0x2b, 0x47, 0x81, 0x99, 0x09, 0xa8, 0x9b, 0x39, 0x26, 0x12, 0x90, 0xda, - 0x9a, 0x98, 0x61, 0x04, 0xa9, 0x10, 0xa8, 0x8b, 0x51, 0x35, 0x90, 0xcb, 0x30, 0x80, 0xc0, 0x0b, - 0xc9, 0x21, 0x92, 0xa9, 0x2a, 0xb5, 0xbf, 0x09, 0x98, 0x73, 0x04, 0x89, 0xa9, 0x8b, 0x90, 0x0b, - 0x65, 0x34, 0x02, 0x9a, 0x10, 0x32, 0xb8, 0xce, 0x09, 0x81, 0x11, 0xfa, 0xab, 0xbb, 0x29, 0x43, - 0xc9, 0x68, 0xa1, 0xbc, 0x1a, 0x53, 0x14, 0xca, 0x9a, 0x89, 0x20, 0x21, 0x36, 0x81, 0xb0, 0x9d, - 0x99, 0x88, 0x12, 0x54, 0x82, 0x9a, 0x99, 0x98, 0x9a, 0x66, 0x03, 0xca, 0x9b, 0x20, 0x12, 0x73, - 0x04, 0x10, 0x92, 0x8c, 0x53, 0x81, 0x89, 0xb0, 0x2a, 0x82, 0x98, 0x1a, 0x12, 0x94, 0xef, 0xab, - 0x99, 0x99, 0x00, 0x99, 0x51, 0xb0, 0x50, 0x13, 0x33, 0x81, 0x9a, 0xfb, 0x5a, 0x81, 0x00, 0x9a, - 0xfb, 0x8c, 0x10, 0x01, 0x19, 0x15, 0xab, 0x08, 0xca, 0x8b, 0x12, 0xcb, 0xbc, 0x29, 0x25, 0xbd, - 0x11, 0x89, 0x30, 0x04, 0x73, 0xa3, 0x9d, 0x52, 0x33, 0x03, 0x89, 0x21, 0xd8, 0x9b, 0x0a, 0x32, - 0x21, 0xa0, 0xfd, 0x9b, 0xa8, 0xbc, 0x40, 0x81, 0x10, 0x18, 0x44, 0x11, 0x21, 0xda, 0x8b, 0x72, - 0x24, 0x21, 0x01, 0x53, 0x02, 0x10, 0xa8, 0xbb, 0xcd, 0x28, 0x35, 0x81, 0xba, 0xbf, 0x89, 0xb9, - 0xab, 0x88, 0x10, 0xc9, 0x99, 0xbb, 0xcf, 0x0a, 0x19, 0x11, 0x32, 0x55, 0x12, 0xfb, 0x8b, 0x21, - 0x22, 0x14, 0x81, 0xc9, 0x28, 0x63, 0x82, 0x08, 0xba, 0xad, 0x88, 0x9a, 0x31, 0xc2, 0xbd, 0x8a, - 0x41, 0x33, 0x82, 0x0b, 0x44, 0x02, 0x53, 0x92, 0x0c, 0xa1, 0x8c, 0x21, 0x55, 0x23, 0x08, 0x81, - 0x9a, 0xc9, 0xbb, 0x20, 0xee, 0xaa, 0xba, 0xac, 0x80, 0x09, 0x34, 0x08, 0x01, 0x39, 0x57, 0x11, - 0x80, 0x18, 0x22, 0x22, 0x01, 0xbe, 0x51, 0x34, 0x12, 0xd8, 0x9c, 0x08, 0x12, 0x32, 0xc0, 0xcf, - 0x8a, 0x22, 0x90, 0x20, 0x10, 0x91, 0xab, 0xdb, 0x0b, 0xa1, 0x28, 0x40, 0x37, 0x11, 0xa9, 0x82, - 0xaf, 0x21, 0x32, 0x34, 0x91, 0xef, 0x89, 0x81, 0x88, 0x99, 0x89, 0x21, 0x92, 0xbb, 0xae, 0x09, - 0x31, 0xa8, 0x52, 0x32, 0x12, 0xd9, 0xbe, 0x31, 0xb1, 0x0b, 0x37, 0x32, 0x13, 0x33, 0x45, 0x14, - 0x01, 0xea, 0x9a, 0xab, 0x19, 0x21, 0x32, 0xf8, 0xac, 0x89, 0x10, 0x13, 0xcb, 0x28, 0x13, 0x31, - 0x02, 0x40, 0x14, 0x88, 0x35, 0xc9, 0x1a, 0xf8, 0x8a, 0x21, 0x99, 0x73, 0x03, 0xd9, 0x9a, 0x80, - 0x10, 0x32, 0x13, 0xed, 0xbb, 0x08, 0x11, 0xea, 0x19, 0x90, 0x89, 0xa0, 0xae, 0x31, 0x81, 0xaa, - 0x72, 0x05, 0x08, 0x81, 0x89, 0x10, 0x32, 0xb4, 0xbf, 0x09, 0x42, 0x83, 0xab, 0x88, 0xa9, 0x0b, - 0x73, 0x34, 0x93, 0x0a, 0x73, 0x12, 0x21, 0xc8, 0xcd, 0x08, 0x98, 0x09, 0x32, 0x90, 0xcc, 0x70, - 0x13, 0x80, 0x8a, 0x18, 0x14, 0x98, 0x81, 0xc9, 0x9c, 0x81, 0xb9, 0xbd, 0x72, 0x92, 0xab, 0xb9, - 0x09, 0x24, 0xaa, 0x11, 0xca, 0x1b, 0x36, 0xa9, 0x41, 0xc9, 0x50, 0x12, 0x01, 0xaa, 0xca, 0x0a, - 0x31, 0x02, 0xb9, 0x2d, 0x77, 0x01, 0x81, 0x0a, 0x22, 0x89, 0xab, 0xda, 0xbe, 0x0a, 0x14, 0x00, - 0xd8, 0xbd, 0x28, 0x33, 0xb1, 0x8b, 0x88, 0x02, 0x98, 0xcb, 0x40, 0x37, 0x00, 0x33, 0x04, 0xcb, - 0x19, 0x73, 0x23, 0xa8, 0xbb, 0x19, 0x90, 0xaa, 0x00, 0x41, 0xc9, 0x21, 0xdf, 0x29, 0x36, 0x02, - 0xba, 0x99, 0x00, 0x30, 0x03, 0x0b, 0x36, 0xa1, 0x9c, 0x01, 0xaa, 0xbd, 0x8b, 0x99, 0xb9, 0xbf, - 0x89, 0x22, 0xfb, 0x08, 0x18, 0x26, 0x91, 0xab, 0xf9, 0x8b, 0x38, 0x26, 0x11, 0x00, 0x10, 0xa9, - 0xbb, 0xab, 0x22, 0xcb, 0x75, 0x13, 0x89, 0x89, 0x08, 0xa9, 0xb0, 0xae, 0x11, 0x51, 0x27, 0x01, - 0xcb, 0xaa, 0x38, 0x33, 0xb0, 0x0b, 0x43, 0x12, 0x52, 0xa2, 0xcb, 0x08, 0x22, 0x37, 0x92, 0x98, - 0x81, 0xac, 0xb8, 0xad, 0xbb, 0xb9, 0x91, 0xcd, 0xbc, 0x18, 0x01, 0x8a, 0x99, 0x9b, 0x73, 0xa1, - 0x40, 0x25, 0xa8, 0x00, 0x21, 0x11, 0x55, 0x82, 0x99, 0x19, 0xa8, 0x19, 0xcc, 0xbb, 0x01, 0x0b, - 0x04, 0x9d, 0x90, 0xda, 0x9a, 0xa9, 0x00, 0x32, 0x1a, 0x24, 0x31, 0xba, 0x19, 0x45, 0x01, 0x99, - 0x2a, 0x17, 0x19, 0x11, 0x21, 0x34, 0xb8, 0x9b, 0xdb, 0x09, 0x11, 0x33, 0x13, 0xa9, 0xcb, 0xcc, - 0x0b, 0x14, 0x18, 0xc8, 0x0a, 0x00, 0xda, 0xad, 0x89, 0x31, 0x22, 0x53, 0x33, 0x23, 0x52, 0x13, - 0xa9, 0x09, 0xac, 0x20, 0xa1, 0xbb, 0xb1, 0xcb, 0xbc, 0x8a, 0xba, 0x0a, 0x01, 0x51, 0x02, 0x89, - 0x10, 0x99, 0xbb, 0x29, 0x24, 0x32, 0x03, 0x09, 0x11, 0x31, 0x33, 0x01, 0x99, 0xa9, 0x19, 0x90, - 0x9a, 0x00, 0xbb, 0x3a, 0x33, 0x11, 0xba, 0x9a, 0x19, 0x99, 0x20, 0x01, 0x99, 0xab, 0x99, 0x31, - 0x12, 0x31, 0x13, 0x90, 0xa9, 0x19, 0x21, 0x90, 0x00, 0x01, 0x90, 0xa0, 0x99, 0x00, 0x00, 0x19, - 0x90, 0x99, 0x00, 0x09, 0x10, 0x11, 0x11, 0x90, 0x09, 0x10, 0x00, 0x09, 0x90, 0x00, 0x00, 0x70, - 0x02, 0x01, 0x0b, 0x7d, 0x0b, 0x02, 0x88, 0x05, 0xc9, 0x02, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, - 0x77, 0xf8, 0x95, 0x2d, 0x80, 0xe4, 0x49, 0x48, 0xf2, 0x3b, 0x91, 0x43, 0xad, 0x91, 0x38, 0xb1, - 0x10, 0x93, 0x1e, 0x99, 0x87, 0x29, 0x9c, 0x04, 0x30, 0x9d, 0xb2, 0x29, 0x11, 0xc1, 0x5a, 0xa0, - 0x91, 0x3d, 0xa4, 0x11, 0x2b, 0xe8, 0x02, 0x0a, 0x0a, 0xa3, 0x33, 0x8f, 0xc3, 0x22, 0x2c, 0xb3, - 0x5a, 0x99, 0xc1, 0x5a, 0xc0, 0x11, 0x49, 0xbb, 0x86, 0x18, 0x8a, 0x97, 0x18, 0x89, 0xa9, 0x04, - 0x0a, 0xa8, 0x14, 0x0a, 0xb1, 0x59, 0x80, 0x93, 0x7a, 0x9a, 0xd3, 0x29, 0x1a, 0xb5, 0x39, 0x0a, - 0xb2, 0x21, 0x09, 0x68, 0xa2, 0x0a, 0x8a, 0x88, 0x8b, 0xe5, 0x68, 0x89, 0xc1, 0x51, 0x09, 0xb8, - 0x15, 0x5a, 0xd9, 0x00, 0x1a, 0x00, 0x00, 0x90, 0x2a, 0xa0, 0x52, 0x80, 0x80, 0x7a, 0xc1, 0x98, - 0x3a, 0xcc, 0x05, 0x39, 0x9b, 0x94, 0x10, 0x2b, 0x86, 0x19, 0x80, 0xc8, 0x1b, 0xb1, 0x18, 0x58, - 0xb9, 0x96, 0x58, 0x8b, 0x97, 0x20, 0x8a, 0xc2, 0x19, 0x8a, 0x90, 0x10, 0x11, 0xd8, 0x61, 0x99, - 0x04, 0x48, 0xba, 0xa6, 0x8a, 0x29, 0xe2, 0x20, 0x2b, 0xe2, 0x22, 0x8a, 0x11, 0x21, 0xa9, 0x81, - 0x9b, 0x8f, 0xc3, 0x48, 0x0b, 0xb6, 0x49, 0x19, 0xb2, 0x32, 0x3b, 0xd9, 0x93, 0x0f, 0x90, 0x11, - 0x8b, 0x94, 0x29, 0x19, 0xa6, 0x50, 0x19, 0xe0, 0x82, 0x1c, 0xb1, 0x81, 0x3b, 0xa2, 0xa0, 0x60, - 0x90, 0x14, 0x1a, 0xe3, 0x20, 0x9d, 0xb1, 0x22, 0x1d, 0xb0, 0x04, 0x5b, 0x98, 0x81, 0x51, 0x89, - 0x93, 0x2a, 0xfb, 0x8b, 0xa1, 0x70, 0x02, 0x2a, 0xc0, 0x89, 0x22, 0x3a, 0x87, 0x29, 0xdb, 0xaa, - 0x83, 0x7c, 0x91, 0x10, 0x09, 0xc9, 0x22, 0x3a, 0x85, 0x29, 0xb1, 0xcf, 0x91, 0x2d, 0x85, 0x11, - 0x11, 0xec, 0x82, 0x1c, 0x03, 0x10, 0x20, 0xdd, 0x01, 0x0c, 0x03, 0x20, 0x10, 0xf9, 0x10, 0x8c, - 0x13, 0x10, 0x10, 0xf9, 0x18, 0x8c, 0x12, 0x01, 0x30, 0xf8, 0x28, 0xab, 0x04, 0x11, 0x10, 0xf0, - 0x29, 0xbb, 0x14, 0x10, 0x20, 0xe1, 0x2a, 0xc9, 0x32, 0x00, 0x11, 0xe1, 0x1b, 0xe8, 0x30, 0x01, - 0x20, 0xb1, 0x1e, 0xc0, 0x20, 0x11, 0x20, 0xb2, 0x8f, 0xc0, 0x29, 0x03, 0x30, 0x83, 0x9f, 0xb1, - 0x4b, 0x83, 0x21, 0x82, 0xaf, 0xa1, 0x1c, 0x13, 0x30, 0x83, 0xbd, 0xa2, 0x0d, 0x05, 0x10, 0x02, - 0xcc, 0x81, 0x8d, 0x03, 0x28, 0x23, 0xea, 0x11, 0xad, 0x23, 0x1a, 0x14, 0xc9, 0x28, 0xbd, 0x32, - 0x1a, 0x24, 0xc0, 0x28, 0xfa, 0x30, 0x89, 0x23, 0xb8, 0x19, 0xfa, 0x59, 0x98, 0x22, 0xa1, 0x2a, - 0xf8, 0x49, 0x90, 0x21, 0xa0, 0x1a, 0xf1, 0x3b, 0xb2, 0x43, 0x80, 0x9b, 0xa4, 0x2f, 0xb2, 0x31, - 0x91, 0xaa, 0x91, 0x8f, 0x95, 0x28, 0x01, 0x99, 0x01, 0x8f, 0x83, 0x39, 0x82, 0xca, 0x21, 0xaf, - 0x84, 0x18, 0x02, 0xb8, 0x30, 0xbe, 0x05, 0x19, 0x01, 0xb0, 0x39, 0xfc, 0x12, 0x19, 0x02, 0xa0, - 0x49, 0xea, 0x21, 0x88, 0x21, 0xb0, 0x3c, 0xf8, 0x10, 0x08, 0x21, 0xa2, 0x3d, 0xf0, 0x10, 0x80, - 0x01, 0x81, 0x1d, 0xd1, 0x39, 0x90, 0x11, 0x12, 0x0e, 0xb2, 0x2b, 0x83, 0x28, 0x03, 0x9f, 0xc3, - 0x1c, 0x02, 0x18, 0x24, 0xad, 0x94, 0x1b, 0x01, 0x08, 0x43, 0xad, 0x93, 0x0f, 0x11, 0x88, 0x31, - 0xe8, 0x12, 0x9c, 0x02, 0x80, 0x32, 0xfa, 0x11, 0x9c, 0x11, 0x90, 0x61, 0xc0, 0x20, 0x9b, 0x11, - 0x90, 0x50, 0xf1, 0x20, 0xba, 0x20, 0x81, 0x59, 0xd2, 0x38, 0xb9, 0x28, 0x91, 0x69, 0xc2, 0x2a, - 0xb8, 0x29, 0x93, 0x5a, 0xa5, 0x3a, 0xd8, 0x08, 0x83, 0x2a, 0x96, 0x1c, 0xb1, 0x0a, 0x22, 0x2b, - 0x07, 0x1c, 0xb2, 0x0b, 0x13, 0x0b, 0x07, 0x0c, 0xa1, 0x8a, 0x22, 0x9a, 0x37, 0x8c, 0x92, 0x8b, - 0x31, 0xb9, 0x36, 0x9d, 0x93, 0x8c, 0x30, 0xc0, 0x53, 0xaa, 0x03, 0x8c, 0x39, 0xc1, 0x62, 0xaa, - 0x82, 0x8b, 0x39, 0xe3, 0x60, 0xa8, 0x01, 0x8a, 0x29, 0xc4, 0x68, 0xa8, 0x10, 0x8a, 0x0b, 0x96, - 0x49, 0xb1, 0x10, 0x0a, 0x89, 0xa4, 0x7b, 0xb2, 0x08, 0x89, 0x8b, 0x87, 0x2a, 0x92, 0x10, 0xa9, - 0xba, 0x17, 0x2b, 0x93, 0x0c, 0x91, 0xca, 0x23, 0x3b, 0x87, 0x09, 0xa0, 0xaa, 0x34, 0x8c, 0x15, - 0xaa, 0x91, 0xab, 0x51, 0x09, 0x15, 0x8a, 0x92, 0xac, 0x40, 0xb0, 0x44, 0xc9, 0x81, 0xab, 0x30, - 0x90, 0x74, 0xa8, 0x10, 0x9b, 0x29, 0xb3, 0x70, 0xb1, 0x08, 0x9d, 0x18, 0x93, 0x78, 0xb2, 0x28, - 0xba, 0x1a, 0x04, 0x49, 0xc3, 0x3b, 0xda, 0x09, 0x12, 0x48, 0x86, 0x0b, 0xb0, 0x09, 0x21, 0x09, - 0x27, 0x8d, 0xb0, 0x0b, 0x42, 0x91, 0x34, 0x8d, 0xb2, 0x0b, 0x10, 0x83, 0x55, 0xad, 0x92, 0x8a, - 0x18, 0x94, 0x71, 0xa9, 0xa2, 0x1b, 0x01, 0xa3, 0x79, 0xd0, 0x01, 0x0c, 0x88, 0x85, 0x38, 0xd0, - 0x01, 0x0b, 0x80, 0x03, 0x6c, 0xc1, 0x08, 0x0a, 0xa0, 0x14, 0x4a, 0xe3, 0x10, 0xaa, 0x81, 0x23, - 0x2d, 0xc4, 0x19, 0xa9, 0x91, 0x51, 0x1a, 0xa6, 0x2a, 0xb8, 0x81, 0x50, 0x8a, 0x96, 0x0a, 0xa8, - 0x00, 0x59, 0x98, 0x06, 0x8b, 0xa1, 0x08, 0x58, 0xa8, 0x14, 0x0d, 0xa0, 0x19, 0x49, 0xa1, 0x43, - 0x9d, 0xa3, 0x2a, 0x2a, 0xb4, 0x62, 0xcb, 0x82, 0x2c, 0x08, 0xa3, 0x70, 0xa9, 0x01, 0x1d, 0x80, - 0x94, 0x38, 0xd9, 0x11, 0x0d, 0x90, 0x04, 0x49, 0xc8, 0x20, 0x0c, 0x91, 0x02, 0x5a, 0xd1, 0x28, - 0x9b, 0x82, 0x21, 0x3a, 0xf3, 0x38, 0xbb, 0x83, 0x31, 0x2a, 0xd5, 0x3a, 0xca, 0x82, 0x20, 0x20, - 0xb5, 0x3d, 0xd8, 0x01, 0x20, 0x88, 0x94, 0x1d, 0xd0, 0x20, 0x08, 0x01, 0x93, 0x1e, 0xc1, 0x39, - 0x18, 0x01, 0x11, 0x8f, 0xb1, 0x3a, 0x81, 0x22, 0x13, 0xbf, 0xa4, 0x3b, 0x92, 0x21, 0x31, 0xbf, - 0xb3, 0x2e, 0x82, 0x20, 0x20, 0xeb, 0x83, 0x0e, 0x82, 0x30, 0x18, 0xea, 0x11, 0x0d, 0x82, 0x28, - 0x11, 0xe8, 0x10, 0x8c, 0x04, 0x19, 0x01, 0xd0, 0x28, 0x9d, 0x22, 0x29, 0x82, 0xd0, 0x38, 0xeb, - 0x22, 0x2a, 0x03, 0xd0, 0x3b, 0xea, 0x32, 0x0a, 0x13, 0xa0, 0x2d, 0xf8, 0x40, 0x98, 0x02, 0x88, - 0x1b, 0xf0, 0x48, 0x98, 0x13, 0x98, 0x1b, 0xe2, 0x49, 0xa0, 0x13, 0x88, 0x8c, 0xd2, 0x5a, 0xa1, - 0x21, 0x08, 0x9b, 0xb3, 0x3f, 0xa2, 0x50, 0x88, 0xaa, 0xb3, 0x2e, 0xa3, 0x40, 0x80, 0xb9, 0x82, - 0x0f, 0x94, 0x38, 0x91, 0xaa, 0x81, 0x0f, 0x84, 0x3a, 0x82, 0xb9, 0x10, 0x8f, 0x04, 0x3a, 0x91, - 0xa8, 0x18, 0xae, 0x33, 0x3b, 0x85, 0xa9, 0x29, 0xbc, 0x34, 0x1b, 0x07, 0xa9, 0x19, 0xcb, 0x52, - 0x98, 0x13, 0x99, 0x2a, 0xfb, 0x40, 0x80, 0x13, 0xba, 0x09, 0xf8, 0x48, 0x90, 0x32, 0xa8, 0x8b, - 0xc8, 0x69, 0x91, 0x41, 0xb0, 0x89, 0xca, 0x39, 0x04, 0x40, 0xb1, 0x9a, 0xc8, 0x3b, 0x15, 0x50, - 0xb2, 0xab, 0xa9, 0x1d, 0x14, 0x30, 0x94, 0xbb, 0x8a, 0x8c, 0x35, 0x20, 0x95, 0xab, 0x9b, 0xab, - 0x65, 0x80, 0x03, 0xaa, 0x8c, 0xa9, 0x72, 0x01, 0x02, 0xba, 0x8c, 0xb9, 0x60, 0x83, 0x23, 0xca, - 0x9c, 0x90, 0x69, 0x83, 0x21, 0xb8, 0xae, 0xa0, 0x59, 0x84, 0x20, 0x98, 0xac, 0x80, 0x2c, 0x07, - 0x10, 0x98, 0xbb, 0x81, 0x0b, 0x27, 0x29, 0x92, 0xbd, 0x00, 0x0a, 0x27, 0x09, 0x01, 0xdb, 0x18, - 0xab, 0x27, 0x88, 0x01, 0xca, 0x29, 0xb9, 0x45, 0x08, 0x01, 0xda, 0x2a, 0xc8, 0x53, 0x88, 0x11, - 0xc9, 0x2b, 0xc0, 0x71, 0x80, 0x00, 0xb8, 0x1b, 0xd1, 0x50, 0x81, 0x18, 0xb0, 0x0e, 0xb2, 0x68, - 0x81, 0x18, 0xa0, 0x8d, 0xb3, 0x5a, 0x82, 0x18, 0xa1, 0x9e, 0x93, 0x4a, 0x03, 0x09, 0x92, 0xaf, - 0x93, 0x3c, 0x13, 0x89, 0x02, 0xbf, 0x03, 0x1c, 0x14, 0x88, 0x11, 0xbe, 0x12, 0x0c, 0x23, 0x98, - 0x22, 0xdd, 0x11, 0x0b, 0x24, 0xa0, 0x21, 0xfb, 0x38, 0x8c, 0x32, 0x90, 0x30, 0xfb, 0x39, 0xa9, - 0x43, 0x91, 0x38, 0xf8, 0x2a, 0xa9, 0x42, 0x91, 0x28, 0xf1, 0x3b, 0xb0, 0x41, 0x82, 0x19, 0xf3, - 0x2c, 0xa0, 0x20, 0x83, 0x1a, 0xc4, 0x1d, 0xa1, 0x20, 0x13, 0x8a, 0xa5, 0x0f, 0xa1, 0x28, 0x12, - 0x99, 0x95, 0x0e, 0x91, 0x29, 0x22, 0xa8, 0x04, 0x9f, 0x92, 0x19, 0x22, 0xa8, 0x22, 0xaf, 0x82, - 0x1a, 0x33, 0xa0, 0x51, 0xbe, 0x82, 0x89, 0x42, 0x90, 0x40, 0xcc, 0x01, 0x89, 0x42, 0x91, 0x48, - 0xfa, 0x00, 0x89, 0x21, 0x82, 0x39, 0xf9, 0x19, 0x98, 0x41, 0x02, 0x2a, 0xf1, 0x1a, 0x98, 0x30, - 0x12, 0x1a, 0xf3, 0x1c, 0x90, 0x38, 0x14, 0x89, 0xc3, 0x0e, 0x90, 0x28, 0x23, 0x99, 0xa4, 0x8f, - 0x81, 0x19, 0x43, 0x98, 0x01, 0xaf, 0x81, 0x19, 0x33, 0xb0, 0x22, 0xcf, 0x11, 0x0a, 0x43, 0xa1, - 0x20, 0xcd, 0x18, 0x89, 0x43, 0x91, 0x39, 0xfb, 0x29, 0x98, 0x52, 0x92, 0x29, 0xf9, 0x19, 0x98, - 0x31, 0x83, 0x1a, 0xf2, 0x1c, 0x91, 0x30, 0x04, 0x0a, 0xd2, 0x1d, 0x90, 0x38, 0x13, 0x9a, 0xb3, - 0x9f, 0xa3, 0x48, 0x23, 0x9a, 0xa3, 0xbf, 0x93, 0x29, 0x24, 0xb8, 0x03, 0xcf, 0x83, 0x29, 0x32, - 0xc0, 0x21, 0xbf, 0x83, 0x1a, 0x23, 0xb1, 0x48, 0xdd, 0x12, 0x0a, 0x32, 0xa2, 0x4a, 0xfa, 0x28, - 0x8a, 0x32, 0xa1, 0x49, 0xf8, 0x39, 0x8a, 0x32, 0x93, 0x2c, 0xf2, 0x2a, 0x99, 0x22, 0x82, 0x2b, - 0xf4, 0x3a, 0xa8, 0x31, 0x12, 0x8b, 0xc5, 0x2d, 0xa8, 0x21, 0x02, 0x8a, 0xa5, 0x1f, 0xa1, 0x20, - 0x11, 0xa8, 0x83, 0x8f, 0xa1, 0x28, 0x12, 0xa8, 0x14, 0x9f, 0x92, 0x29, 0x22, 0xa0, 0x31, 0xcf, - 0x92, 0x2a, 0x13, 0xa0, 0x51, 0xbd, 0x02, 0x1a, 0x23, 0xa2, 0x58, 0xdc, 0x01, 0x0b, 0x13, 0x92, - 0x69, 0xe9, 0x10, 0x89, 0x12, 0x01, 0x39, 0xf8, 0x19, 0xaa, 0x33, 0x00, 0x39, 0xf4, 0x2a, 0xb8, - 0x32, 0x12, 0x19, 0xf2, 0x1b, 0xd8, 0x21, 0x11, 0x00, 0xb3, 0x8f, 0xa1, 0x48, 0x11, 0x80, 0x82, - 0x9f, 0xb0, 0x49, 0x11, 0x81, 0x21, 0xae, 0xa2, 0x3b, 0x23, 0x04, 0x39, 0xce, 0xa1, 0x2b, 0x02, - 0x33, 0x58, 0xf9, 0x08, 0x0a, 0x02, 0x33, 0x3a, 0xf1, 0x0b, 0x8d, 0x02, 0x32, 0x28, 0xf4, 0x09, - 0x99, 0x02, 0x42, 0x88, 0xd3, 0x0b, 0xbb, 0x13, 0x71, 0x80, 0xa4, 0x0c, 0xa8, 0x01, 0x70, 0x90, - 0x83, 0x8e, 0xa8, 0x10, 0x30, 0x91, 0x15, 0x9d, 0xa0, 0x18, 0x68, 0xa2, 0x21, 0xad, 0xb1, 0x09, - 0x40, 0x94, 0x42, 0xbc, 0x90, 0x08, 0x38, 0x96, 0x41, 0xda, 0x88, 0x0a, 0x38, 0x85, 0x48, 0xc8, - 0x88, 0x8a, 0x28, 0x07, 0x28, 0xc8, 0x89, 0x8a, 0x18, 0x06, 0x30, 0xd1, 0x0a, 0x9a, 0x28, 0x16, - 0x29, 0xb2, 0x8d, 0xaa, 0x18, 0x16, 0x20, 0xa2, 0x8e, 0x98, 0x09, 0x24, 0x20, 0xa3, 0x9f, 0xa8, - 0x09, 0x24, 0x30, 0x84, 0x9e, 0xa0, 0x0a, 0x43, 0x20, 0x02, 0xae, 0xb8, 0x8a, 0x44, 0x20, 0x13, - 0xcc, 0x98, 0x9b, 0x63, 0x20, 0x12, 0xbc, 0xa9, 0xac, 0x53, 0x21, 0x33, 0xfb, 0x89, 0x9a, 0x41, - 0x11, 0x33, 0xea, 0xa9, 0xbb, 0x62, 0x11, 0x23, 0xd8, 0x99, 0xca, 0x48, 0x12, 0x24, 0xc9, 0x9a, - 0xca, 0x30, 0x13, 0x35, 0xb0, 0x9c, 0xdb, 0x38, 0x04, 0x42, 0xb0, 0x9b, 0xeb, 0x29, 0x14, 0x42, - 0x90, 0x9c, 0xb9, 0x2a, 0x05, 0x52, 0x91, 0xbb, 0xd9, 0x2a, 0x04, 0x42, 0x92, 0xab, 0xd9, 0x0b, - 0x24, 0x51, 0x81, 0xab, 0xba, 0x0e, 0x23, 0x51, 0x02, 0xbb, 0xb9, 0x8e, 0x23, 0x50, 0x02, 0xba, - 0xba, 0x9e, 0x33, 0x50, 0x13, 0xca, 0xa9, 0xac, 0x33, 0x40, 0x05, 0xa9, 0xaa, 0xad, 0x32, 0x31, - 0x16, 0xb8, 0x9a, 0xcc, 0x31, 0x30, 0x25, 0xc8, 0xa9, 0xcb, 0x40, 0x11, 0x34, 0xa8, 0xba, 0xdc, - 0x38, 0x21, 0x25, 0xb0, 0xaa, 0xeb, 0x39, 0x21, 0x35, 0xb1, 0xab, 0xea, 0x29, 0x02, 0x44, 0x91, - 0x9b, 0xeb, 0x2a, 0x03, 0x34, 0x92, 0x9c, 0xd9, 0x1b, 0x12, 0x44, 0x92, 0xab, 0xd9, 0x0b, 0x13, - 0x44, 0x03, 0xbb, 0xda, 0x8c, 0x13, 0x43, 0x12, 0xbb, 0xca, 0x8f, 0x02, 0x33, 0x22, 0xca, 0xaa, - 0x9e, 0x02, 0x42, 0x23, 0xc9, 0xaa, 0xad, 0x22, 0x42, 0x32, 0xd0, 0x9a, 0xbc, 0x11, 0x43, 0x33, - 0xc0, 0xab, 0xcd, 0x11, 0x42, 0x22, 0xb2, 0xac, 0xeb, 0x18, 0x32, 0x33, 0xa2, 0x9e, 0xda, 0x08, - 0x32, 0x24, 0x82, 0xad, 0xba, 0x1a, 0x52, 0x32, 0x03, 0xbd, 0xd9, 0x0a, 0x42, 0x23, 0x02, 0xdb, - 0xb9, 0x8c, 0x31, 0x25, 0x22, 0xdb, 0xaa, 0x8b, 0x42, 0x33, 0x24, 0xd9, 0xab, 0x9d, 0x31, 0x24, - 0x21, 0xc8, 0xab, 0xac, 0x30, 0x26, 0x22, 0xb8, 0x9e, 0x9a, 0x28, 0x24, 0x32, 0xc2, 0x9d, 0xba, - 0x38, 0x25, 0x12, 0x92, 0xae, 0xaa, 0x1a, 0x35, 0x22, 0x92, 0xae, 0xa9, 0x0a, 0x35, 0x12, 0x03, - 0xbe, 0xa9, 0x0b, 0x44, 0x12, 0x12, 0xdc, 0x99, 0x8a, 0x53, 0x12, 0x11, 0xfa, 0x89, 0x9a, 0x42, - 0x12, 0x21, 0xe9, 0x8a, 0xaa, 0x61, 0x12, 0x20, 0xd8, 0x8b, 0xb9, 0x50, 0x22, 0x22, 0xe0, 0x8b, - 0xb9, 0x40, 0x14, 0x11, 0xb1, 0x9f, 0xa8, 0x49, 0x13, 0x11, 0xa2, 0x9f, 0xa0, 0x2a, 0x24, 0x21, - 0x91, 0xaf, 0xa0, 0x2a, 0x24, 0x11, 0x12, 0xaf, 0x98, 0x1b, 0x25, 0x01, 0x01, 0xcc, 0x88, 0x8c, - 0x24, 0x11, 0x21, 0xfb, 0x88, 0x8a, 0x33, 0x11, 0x22, 0xfa, 0x0b, 0xab, 0x44, 0x01, 0x21, 0xe8, - 0x0a, 0xb9, 0x52, 0x11, 0x11, 0xe0, 0x0b, 0xc8, 0x31, 0x12, 0x21, 0xd2, 0x8d, 0xc0, 0x30, 0x12, - 0x01, 0xb2, 0x9f, 0xb0, 0x49, 0x13, 0x11, 0x92, 0xaf, 0x90, 0x3a, 0x14, 0x10, 0x01, 0xaf, 0xa0, - 0x2a, 0x15, 0x01, 0x01, 0xcc, 0x80, 0x0b, 0x24, 0x12, 0x01, 0xdd, 0x08, 0x0b, 0x33, 0x12, 0x32, - 0xfb, 0x0b, 0x9b, 0x35, 0x01, 0x20, 0xf9, 0x0a, 0xaa, 0x43, 0x12, 0x21, 0xf8, 0x0a, 0xb8, 0x41, - 0x11, 0x21, 0xd0, 0x8d, 0xa8, 0x50, 0x11, 0x10, 0xa1, 0x8e, 0xb0, 0x38, 0x13, 0x02, 0xa1, 0xbf, - 0xa1, 0x3a, 0x15, 0x12, 0x82, 0xaf, 0x90, 0x3b, 0x23, 0x11, 0x01, 0xde, 0x80, 0x0b, 0x15, 0x11, - 0x11, 0xeb, 0x08, 0x8b, 0x14, 0x11, 0x10, 0xf9, 0x1a, 0x9a, 0x33, 0x22, 0x12, 0xf1, 0x1c, 0xc9, - 0x22, 0x20, 0x10, 0xd1, 0x0d, 0xb0, 0x31, 0x21, 0x12, 0xb3, 0x9f, 0xd0, 0x38, 0x11, 0x00, 0x01, - 0x9f, 0xb1, 0x3a, 0x33, 0x12, 0x12, 0xcf, 0xa2, 0x1b, 0x12, 0x02, 0x42, 0xce, 0x91, 0x1a, 0x23, - 0x11, 0x41, 0xfa, 0x00, 0x9c, 0x22, 0x01, 0x38, 0xf9, 0x18, 0x9b, 0x22, 0x32, 0x40, 0xf2, 0x1a, - 0xba, 0x21, 0x02, 0x20, 0xd5, 0x2b, 0xca, 0x21, 0x23, 0x10, 0xb5, 0x1d, 0xc8, 0x29, 0x21, 0x08, - 0x85, 0x0f, 0xa0, 0x18, 0x12, 0x00, 0x05, 0x9c, 0xb1, 0x0b, 0x32, 0x80, 0x25, 0x9e, 0x91, 0x0c, - 0x22, 0x01, 0x34, 0xbc, 0x90, 0x9d, 0x22, 0x91, 0x62, 0xc9, 0x80, 0x9b, 0x32, 0x03, 0x72, 0xc8, - 0x08, 0xbb, 0x20, 0x02, 0x71, 0xc1, 0x09, 0xaa, 0x48, 0x02, 0x60, 0xa1, 0x0a, 0xea, 0x19, 0x12, - 0x48, 0xb2, 0x0b, 0xd8, 0x2a, 0x23, 0x61, 0xa3, 0xab, 0xc8, 0x0c, 0x22, 0x38, 0x86, 0x9a, 0xa9, - 0x0d, 0x33, 0x30, 0x06, 0xaa, 0xa9, 0x9e, 0x21, 0x10, 0x06, 0x99, 0x99, 0xab, 0x52, 0x10, 0x16, - 0xa8, 0x8a, 0xcc, 0x20, 0x01, 0x24, 0x98, 0x8b, 0xeb, 0x38, 0x12, 0x26, 0x88, 0xab, 0xea, 0x29, - 0x01, 0x43, 0x00, 0xbb, 0xd9, 0x2a, 0x04, 0x34, 0x01, 0xdb, 0xb9, 0x0c, 0x11, 0x63, 0x10, 0xc9, - 0x98, 0x0c, 0x12, 0x62, 0x10, 0xd0, 0x99, 0xab, 0x12, 0x52, 0x11, 0xd1, 0x89, 0xab, 0x22, 0x72, - 0x11, 0xc1, 0x8b, 0xcb, 0x11, 0x40, 0x02, 0xa4, 0x0c, 0xca, 0x20, 0x41, 0x02, 0x94, 0x8d, 0xc9, - 0x09, 0x31, 0x03, 0x05, 0x8d, 0xa8, 0x1a, 0x31, 0x05, 0x13, 0x9e, 0xb8, 0x0c, 0x21, 0x03, 0x43, - 0xac, 0xa0, 0x8c, 0x21, 0x06, 0x41, 0xbb, 0x98, 0x9d, 0x20, 0x03, 0x72, 0xb8, 0x90, 0xab, 0x21, - 0x05, 0x61, 0xb8, 0x89, 0xac, 0x18, 0x23, 0x71, 0xa0, 0x89, 0xba, 0x18, 0x15, 0x60, 0xb1, 0x99, - 0xca, 0x09, 0x33, 0x68, 0x92, 0x99, 0xca, 0x89, 0x34, 0x48, 0x95, 0x8b, 0xba, 0x8c, 0x32, 0x40, - 0x86, 0x89, 0xb9, 0x9a, 0x42, 0x20, 0x07, 0x9a, 0xb8, 0xac, 0x31, 0x21, 0x17, 0x99, 0xa8, 0xab, - 0x50, 0x01, 0x16, 0xa9, 0xb8, 0xac, 0x38, 0x02, 0x37, 0x99, 0x98, 0xac, 0x28, 0x02, 0x55, 0xa8, - 0xa8, 0xcb, 0x29, 0x02, 0x73, 0x91, 0x98, 0xbb, 0x1a, 0x04, 0x72, 0xa1, 0x88, 0xac, 0x0b, 0x03, - 0x72, 0xa3, 0x08, 0xcb, 0x8a, 0x13, 0x70, 0xa3, 0x88, 0xdb, 0x8a, 0x12, 0x60, 0x83, 0x09, 0xd9, - 0x9a, 0x21, 0x58, 0x85, 0x89, 0xb9, 0xab, 0x30, 0x58, 0x07, 0x19, 0xb8, 0x9b, 0x10, 0x10, 0x27, - 0x89, 0xc0, 0xbb, 0x10, 0x11, 0x37, 0x09, 0xb0, 0x9d, 0x19, 0x01, 0x45, 0x89, 0xa0, 0xad, 0x08, - 0x01, 0x45, 0x88, 0x91, 0x9d, 0x09, 0x00, 0x73, 0x90, 0x80, 0xac, 0x09, 0x00, 0x73, 0x91, 0x81, - 0xcb, 0x89, 0x81, 0x72, 0x91, 0x00, 0xcb, 0x89, 0x08, 0x72, 0x82, 0x18, 0xda, 0x89, 0x80, 0x51, - 0x82, 0x18, 0xea, 0x8a, 0x00, 0x50, 0x03, 0x18, 0xf8, 0x8a, 0x80, 0x30, 0x05, 0x08, 0xc8, 0x8c, - 0x80, 0x30, 0x25, 0x09, 0xc1, 0x8d, 0x08, 0x28, 0x24, 0x88, 0xb1, 0x9f, 0x08, 0x28, 0x25, 0x88, - 0x91, 0xae, 0x80, 0x18, 0x34, 0x90, 0x81, 0xaf, 0x08, 0x18, 0x53, 0x80, 0x00, 0xbd, 0x08, 0x19, - 0x63, 0x91, 0x00, 0xfb, 0x08, 0x08, 0x42, 0x81, 0x18, 0xfa, 0x09, 0x08, 0x41, 0x82, 0x08, 0xf9, - 0x09, 0x88, 0x32, 0x04, 0x19, 0xe8, 0x0b, 0x90, 0x41, 0x13, 0x09, 0xe0, 0x0c, 0x90, 0x31, 0x14, - 0x88, 0xc1, 0x8e, 0x80, 0x38, 0x33, 0x98, 0xb1, 0xbf, 0x81, 0x38, 0x25, 0x90, 0x91, 0xaf, 0x80, - 0x28, 0x43, 0x80, 0x80, 0xbf, 0x81, 0x18, 0x34, 0x91, 0x18, 0xce, 0x80, 0x18, 0x42, 0x92, 0x18, - 0xec, 0x08, 0x08, 0x42, 0x82, 0x19, 0xfa, 0x09, 0x08, 0x41, 0x02, 0x09, 0xf8, 0x0a, 0x00, 0x40, - 0x12, 0x89, 0xd8, 0x0c, 0x80, 0x40, 0x13, 0x89, 0xd1, 0x8d, 0x81, 0x20, 0x24, 0x89, 0xb0, 0x9f, - 0x00, 0x10, 0x15, 0x90, 0x90, 0x9e, 0x00, 0x18, 0x34, 0x98, 0x88, 0xbe, 0x10, 0x18, 0x25, 0x91, - 0x08, 0xbe, 0x00, 0x00, 0x34, 0xa2, 0x09, 0xfc, 0x08, 0x80, 0x43, 0x81, 0x08, 0xeb, 0x09, 0x00, - 0x42, 0x83, 0x8a, 0xea, 0x0b, 0x01, 0x62, 0x02, 0x89, 0xd8, 0x8b, 0x82, 0x51, 0x03, 0x99, 0xc9, - 0x9d, 0x01, 0x41, 0x14, 0x98, 0xb8, 0xad, 0x11, 0x38, 0x26, 0x99, 0xa9, 0xbd, 0x21, 0x20, 0x26, - 0x90, 0x89, 0xbd, 0x28, 0x10, 0x35, 0xa0, 0x9a, 0xdc, 0x29, 0x11, 0x25, 0x92, 0x9a, 0xfa, 0x19, - 0x01, 0x42, 0x81, 0x9b, 0xea, 0x1a, 0x83, 0x53, 0x02, 0x9a, 0xe8, 0x0b, 0x02, 0x41, 0x03, 0xac, - 0xc0, 0x8c, 0x03, 0x51, 0x13, 0xaa, 0xa8, 0x9f, 0x02, 0x20, 0x23, 0xca, 0xa8, 0x9f, 0x22, 0x20, - 0x43, 0xb9, 0x88, 0xbe, 0x22, 0x18, 0x43, 0xd8, 0x09, 0xdb, 0x31, 0x10, 0x53, 0xb0, 0x19, 0xfb, - 0x38, 0x88, 0x32, 0xc1, 0x1b, 0xf9, 0x28, 0x01, 0x32, 0xb3, 0x1b, 0xf8, 0x2b, 0x81, 0x40, 0xb3, - 0x8c, 0xd1, 0x3b, 0x83, 0x51, 0x84, 0x8b, 0xb0, 0x1f, 0x01, 0x19, 0x84, 0x9b, 0xa1, 0x0e, 0x13, - 0x28, 0x15, 0x9b, 0x92, 0x9f, 0x02, 0x88, 0x23, 0xcb, 0x01, 0x9e, 0x23, 0x08, 0x44, 0xb9, 0x01, - 0xbd, 0x22, 0x99, 0x52, 0xc9, 0x10, 0xcb, 0x32, 0x81, 0x72, 0xb0, 0x28, 0xea, 0x10, 0x90, 0x48, - 0xb0, 0x3a, 0xf8, 0x20, 0x81, 0x40, 0xa2, 0x2a, 0xf8, 0x29, 0x90, 0x29, 0xb3, 0x2c, 0xd1, 0x29, - 0x12, 0x48, 0x85, 0x0b, 0xe2, 0x09, 0x80, 0x19, 0x84, 0x0d, 0xb2, 0x2a, 0x13, 0x18, 0x17, 0x8b, - 0xc3, 0x0c, 0x81, 0x99, 0x33, 0x9e, 0x93, 0x1c, 0x12, 0x10, 0x44, 0xba, 0x83, 0x9f, 0x81, 0x98, - 0x41, 0xd9, 0x11, 0x8b, 0x13, 0x01, 0x73, 0xc0, 0x11, 0x9d, 0x80, 0x90, 0x38, 0xe1, 0x20, 0x9b, - 0x22, 0x11, 0x61, 0xc2, 0x39, 0xcb, 0x80, 0x98, 0x29, 0xc5, 0x4a, 0xb8, 0x21, 0x21, 0x30, 0x97, - 0x3b, 0xe8, 0x88, 0x88, 0x88, 0x94, 0x2c, 0xc1, 0x20, 0x11, 0x02, 0x07, 0x0b, 0xd1, 0x09, 0x89, - 0xa0, 0x23, 0x0f, 0xa2, 0x29, 0x21, 0x83, 0x45, 0x8c, 0xb2, 0x8c, 0x98, 0xa1, 0x50, 0xab, 0x84, - 0x2a, 0x11, 0x05, 0x61, 0xb8, 0x92, 0x8e, 0x98, 0x80, 0x39, 0xc0, 0x12, 0x0c, 0x03, 0x24, 0x58, - 0xc1, 0x10, 0xad, 0xa0, 0x28, 0x2b, 0xe3, 0x28, 0x89, 0x13, 0x71, 0x18, 0xa4, 0x2a, 0xdb, 0x90, - 0x19, 0x9a, 0xa5, 0x39, 0xa8, 0x43, 0x68, 0x81, 0x94, 0x1a, 0xe9, 0x88, 0x0a, 0xa0, 0x83, 0x1c, - 0xb2, 0x62, 0x30, 0x93, 0x05, 0x8b, 0xf8, 0x19, 0x9a, 0xa1, 0x11, 0x0d, 0x82, 0x79, 0x01, 0x83, - 0x21, 0xac, 0xa0, 0x1d, 0xb8, 0x80, 0x2a, 0xab, 0x14, 0x7a, 0x85, 0x12, 0x18, 0xb9, 0xa0, 0x8e, - 0xb2, 0x09, 0x0a, 0xd9, 0x31, 0x29, 0x37, 0x31, 0x00, 0xe8, 0x09, 0xac, 0x83, 0x0b, 0x89, 0xda, - 0x38, 0x81, 0x67, 0x00, 0x81, 0xa8, 0x0a, 0xca, 0x21, 0xaa, 0xa0, 0xd9, 0x3a, 0x84, 0x65, 0x00, - 0x01, 0xa8, 0x8b, 0xd8, 0x38, 0xc8, 0x08, 0xa9, 0x0c, 0x04, 0x72, 0x83, 0x11, 0xa9, 0x9c, 0xa0, - 0x4b, 0xb1, 0x89, 0xca, 0x9b, 0x16, 0x61, 0x04, 0x28, 0xa8, 0xbb, 0x80, 0x1d, 0xa3, 0x8b, 0xa9, - 0xac, 0x63, 0x30, 0x27, 0x18, 0x98, 0xca, 0x08, 0xaa, 0x85, 0x0b, 0xa8, 0xbb, 0x70, 0x11, 0x27, - 0x08, 0x80, 0xba, 0x0a, 0xb9, 0x24, 0x9c, 0x98, 0xcb, 0x58, 0x02, 0x37, 0x08, 0x81, 0xca, 0x0a, - 0xb8, 0x41, 0xba, 0x90, 0xcb, 0x39, 0x06, 0x64, 0x00, 0x80, 0xb8, 0x8b, 0xb0, 0x59, 0xb8, 0x98, - 0xb9, 0x2b, 0x27, 0x71, 0x82, 0x81, 0xb8, 0x9c, 0x91, 0x2a, 0xb1, 0x9a, 0xd9, 0x0b, 0x26, 0x62, - 0x03, 0x00, 0xb8, 0xad, 0x00, 0x0b, 0x93, 0xac, 0xa8, 0x9c, 0x45, 0x31, 0x16, 0x08, 0x98, 0xcb, - 0x18, 0x9b, 0x83, 0xbb, 0x99, 0xbd, 0x73, 0x22, 0x17, 0x80, 0x88, 0xca, 0x19, 0xa9, 0x12, 0xba, - 0x8a, 0xdb, 0x70, 0x03, 0x25, 0x00, 0x09, 0xda, 0x1a, 0xb8, 0x11, 0xc8, 0x8a, 0xc8, 0x79, 0x02, - 0x43, 0x02, 0x0a, 0xd9, 0x0b, 0xb1, 0x19, 0xa0, 0x8e, 0xa0, 0x4a, 0x06, 0x42, 0x02, 0x89, 0xc0, - 0x8c, 0xa1, 0x1a, 0x80, 0xad, 0x81, 0x1c, 0x17, 0x30, 0x22, 0x99, 0x90, 0x9f, 0x91, 0x8a, 0x00, - 0xbb, 0x01, 0x8c, 0x37, 0x30, 0x43, 0xa8, 0x00, 0xbe, 0x00, 0x9b, 0x10, 0xdb, 0x28, 0xc9, 0x45, - 0x10, 0x33, 0xa1, 0x29, 0xfc, 0x18, 0xaa, 0x18, 0xc0, 0x29, 0xc0, 0x61, 0x11, 0x31, 0xa3, 0x19, - 0xf0, 0x1b, 0xb9, 0x09, 0xb1, 0x2c, 0xd3, 0x68, 0x82, 0x31, 0x84, 0x09, 0xd1, 0x0c, 0xb0, 0x8a, - 0x92, 0x1c, 0xa4, 0x4b, 0x05, 0x20, 0x14, 0x8a, 0xb3, 0x9f, 0x90, 0x8b, 0x02, 0x9b, 0x05, 0x1d, - 0x14, 0x18, 0x24, 0x99, 0x02, 0xaf, 0x80, 0xab, 0x22, 0xba, 0x34, 0x9d, 0x24, 0x08, 0x44, 0x98, - 0x11, 0xcd, 0x80, 0xaa, 0x30, 0xb8, 0x61, 0xba, 0x33, 0x80, 0x74, 0x91, 0x38, 0xfb, 0x08, 0xa9, - 0x28, 0xa1, 0x58, 0xb8, 0x30, 0x91, 0x72, 0x93, 0x39, 0xf9, 0x89, 0xb8, 0x28, 0xa2, 0x49, 0xd2, - 0x28, 0x81, 0x50, 0x04, 0x3a, 0xf1, 0x8a, 0xa8, 0x09, 0x03, 0x3b, 0xb5, 0x2a, 0x82, 0x58, 0x16, - 0x1a, 0xc2, 0x8c, 0xa8, 0x8a, 0x23, 0x0b, 0x97, 0x0a, 0x02, 0x28, 0x27, 0x89, 0x93, 0x9f, 0x88, - 0x9a, 0x22, 0x99, 0x05, 0x8b, 0x03, 0x18, 0x55, 0xa0, 0x03, 0xaf, 0x90, 0x8a, 0x30, 0xb0, 0x34, - 0x9c, 0x11, 0x18, 0x64, 0x90, 0x21, 0xbd, 0x89, 0xaa, 0x48, 0xa1, 0x52, 0xba, 0x22, 0x08, 0x72, - 0xa3, 0x30, 0xfb, 0x89, 0xaa, 0x28, 0xa3, 0x68, 0xb0, 0x20, 0x08, 0x52, 0x85, 0x29, 0xe8, 0x99, - 0xa9, 0x08, 0x83, 0x59, 0xb1, 0x28, 0x80, 0x52, 0x06, 0x29, 0xd0, 0x8b, 0xba, 0x88, 0x23, 0x4a, - 0xa4, 0x2a, 0x80, 0x51, 0x35, 0x09, 0xc2, 0x9e, 0xb9, 0x88, 0x22, 0x29, 0x95, 0x1a, 0x91, 0x31, - 0x37, 0x80, 0xa2, 0xaf, 0xb9, 0x0a, 0x30, 0x00, 0x06, 0x8a, 0x92, 0x48, 0x63, 0x81, 0x81, 0xbd, - 0xd9, 0x0a, 0x10, 0x01, 0x14, 0x9a, 0x92, 0x48, 0x43, 0x04, 0x11, 0xbe, 0xca, 0x8b, 0x10, 0x12, - 0x52, 0xa9, 0x81, 0x3a, 0x35, 0x25, 0x00, 0xfb, 0xb9, 0x8c, 0x00, 0x21, 0x41, 0xa0, 0x88, 0x1a, - 0x25, 0x34, 0x11, 0xf9, 0xab, 0x9d, 0x80, 0x31, 0x31, 0xa1, 0x09, 0x8b, 0x26, 0x63, 0x01, 0xc0, - 0xac, 0xac, 0x88, 0x41, 0x11, 0x83, 0x8a, 0xaa, 0x34, 0x73, 0x83, 0xa0, 0xae, 0xcb, 0x88, 0x30, - 0x04, 0x12, 0x9a, 0xa9, 0x32, 0x74, 0x03, 0x88, 0xbd, 0xdb, 0x09, 0x28, 0x14, 0x21, 0xa9, 0xa9, - 0x31, 0x73, 0x14, 0x08, 0xcc, 0xbb, 0x8a, 0x28, 0x16, 0x11, 0x98, 0xa9, 0x38, 0x53, 0x25, 0x80, - 0xea, 0xbb, 0x8b, 0x18, 0x44, 0x11, 0x90, 0xb9, 0x39, 0x53, 0x45, 0x08, 0xd9, 0xbb, 0x8c, 0x08, - 0x53, 0x01, 0x91, 0x99, 0x1a, 0x33, 0x56, 0x80, 0xb8, 0xbd, 0x8c, 0x08, 0x41, 0x12, 0x81, 0x9a, - 0x8a, 0x24, 0x54, 0x82, 0xa8, 0xbe, 0xac, 0x80, 0x41, 0x03, 0x01, 0xa9, 0x8a, 0x42, 0x72, 0x83, - 0x98, 0xdc, 0xab, 0x09, 0x30, 0x16, 0x10, 0xa8, 0x8a, 0x21, 0x52, 0x15, 0x89, 0xdb, 0xbc, 0x88, - 0x10, 0x25, 0x10, 0x90, 0x9b, 0x21, 0x42, 0x17, 0x88, 0xd9, 0xac, 0x89, 0x18, 0x34, 0x01, 0x91, - 0xba, 0x20, 0x32, 0x57, 0x90, 0xb9, 0xcd, 0x89, 0x08, 0x43, 0x02, 0x81, 0xba, 0x18, 0x22, 0x47, - 0x91, 0xa9, 0xbe, 0x9a, 0x08, 0x52, 0x12, 0x10, 0xaa, 0x1a, 0x12, 0x46, 0x02, 0xaa, 0xce, 0x9b, - 0x08, 0x32, 0x24, 0x10, 0xc8, 0x0a, 0x12, 0x63, 0x13, 0xaa, 0xdd, 0xab, 0x09, 0x41, 0x33, 0x01, - 0xc0, 0x9a, 0x21, 0x44, 0x24, 0xa9, 0xdc, 0xac, 0x89, 0x22, 0x53, 0x81, 0x90, 0xaa, 0x20, 0x34, - 0x72, 0xa0, 0xca, 0xbc, 0x8a, 0x31, 0x62, 0x82, 0x80, 0xaa, 0x19, 0x34, 0x61, 0xa2, 0xca, 0xad, - 0xaa, 0x22, 0x60, 0x83, 0x80, 0x9a, 0x8a, 0x44, 0x30, 0x84, 0xcb, 0xbc, 0xbb, 0x31, 0x51, 0x06, - 0x88, 0x98, 0x8a, 0x51, 0x20, 0x04, 0xba, 0xcc, 0xab, 0x38, 0x31, 0x27, 0x88, 0xa8, 0xa9, 0x50, - 0x02, 0x15, 0xb9, 0xcb, 0xbc, 0x39, 0x11, 0x27, 0x80, 0x98, 0xaa, 0x48, 0x03, 0x44, 0xa9, 0xcb, - 0xbc, 0x1a, 0x03, 0x55, 0x91, 0x88, 0xaa, 0x29, 0x05, 0x52, 0xa0, 0xbb, 0xcc, 0x89, 0x03, 0x73, - 0x81, 0x88, 0xa9, 0x1a, 0x14, 0x51, 0xa2, 0xbb, 0xbd, 0x8b, 0x22, 0x72, 0x03, 0x89, 0xb9, 0x8b, - 0x25, 0x41, 0x94, 0xab, 0xcc, 0x9b, 0x22, 0x51, 0x14, 0x89, 0xb9, 0x9a, 0x43, 0x41, 0x85, 0xaa, - 0xdb, 0xab, 0x21, 0x32, 0x27, 0x89, 0xb8, 0x9a, 0x31, 0x33, 0x27, 0xbb, 0xda, 0xac, 0x20, 0x21, - 0x26, 0x98, 0xa0, 0xab, 0x31, 0x33, 0x27, 0xc9, 0xb9, 0x9e, 0x08, 0x22, 0x63, 0x98, 0x90, 0xab, - 0x20, 0x32, 0x45, 0xb8, 0xba, 0xaf, 0x08, 0x21, 0x44, 0x90, 0x88, 0xac, 0x00, 0x32, 0x44, 0xc1, - 0x9a, 0xbd, 0x88, 0x22, 0x44, 0x92, 0x89, 0xbc, 0x18, 0x32, 0x44, 0xa2, 0x9c, 0xcd, 0x09, 0x20, - 0x43, 0x94, 0x09, 0xda, 0x08, 0x21, 0x33, 0x94, 0x9c, 0xdc, 0x09, 0x10, 0x33, 0x05, 0x0a, 0xda, - 0x09, 0x11, 0x43, 0x03, 0xac, 0xfa, 0x0a, 0x00, 0x33, 0x14, 0x8a, 0xd8, 0x0b, 0x11, 0x34, 0x13, - 0xcb, 0xea, 0x8c, 0x10, 0x32, 0x24, 0x99, 0xc8, 0x8c, 0x10, 0x43, 0x23, 0xc9, 0xda, 0x9c, 0x00, - 0x42, 0x33, 0xa8, 0xb8, 0x9f, 0x10, 0x32, 0x24, 0xb8, 0xbb, 0xbf, 0x00, 0x42, 0x42, 0x90, 0x99, - 0x9e, 0x00, 0x32, 0x33, 0xc1, 0xab, 0xbf, 0x00, 0x31, 0x34, 0x91, 0x9a, 0xae, 0x18, 0x41, 0x33, - 0xa1, 0xac, 0xbe, 0x08, 0x31, 0x34, 0x93, 0x9b, 0xec, 0x08, 0x31, 0x43, 0x92, 0xbb, 0xdd, 0x09, - 0x21, 0x33, 0x04, 0xaa, 0xeb, 0x09, 0x21, 0x34, 0x03, 0xac, 0xcc, 0x0b, 0x21, 0x34, 0x23, 0xca, - 0xca, 0x0c, 0x21, 0x34, 0x13, 0xda, 0xda, 0x8b, 0x21, 0x43, 0x23, 0xb9, 0xcb, 0x9d, 0x12, 0x34, - 0x23, 0xd9, 0xca, 0x9c, 0x11, 0x42, 0x23, 0xc0, 0xaa, 0xac, 0x21, 0x63, 0x22, 0xb8, 0xac, 0xad, - 0x10, 0x42, 0x33, 0xa0, 0xac, 0xdb, 0x20, 0x42, 0x23, 0xa1, 0xae, 0xda, 0x18, 0x32, 0x33, 0x91, - 0xad, 0xca, 0x29, 0x43, 0x33, 0x92, 0xaf, 0xc9, 0x19, 0x22, 0x43, 0x82, 0xbc, 0xc9, 0x1a, 0x43, - 0x43, 0x81, 0xdb, 0xc9, 0x0a, 0x32, 0x43, 0x02, 0xdb, 0xb9, 0x1c, 0x32, 0x34, 0x03, 0xfb, 0xa9, - 0x0c, 0x21, 0x33, 0x22, 0xea, 0xaa, 0x8b, 0x33, 0x35, 0x13, 0xea, 0xaa, 0x9c, 0x22, 0x43, 0x22, - 0xd9, 0xaa, 0x9c, 0x32, 0x53, 0x12, 0xc8, 0xab, 0xad, 0x31, 0x42, 0x22, 0xc0, 0x9c, 0xbb, 0x51, - 0x32, 0x23, 0xc0, 0x9d, 0xbb, 0x30, 0x43, 0x33, 0xc1, 0xad, 0xba, 0x30, 0x34, 0x34, 0xb1, 0xae, - 0xba, 0x28, 0x24, 0x33, 0xa2, 0xaf, 0xb9, 0x39, 0x24, 0x24, 0x81, 0xad, 0xba, 0x2b, 0x24, 0x24, - 0x82, 0xbd, 0xba, 0x2a, 0x34, 0x44, 0x01, 0xac, 0xbb, 0x0b, 0x34, 0x43, 0x02, 0xeb, 0xaa, 0x0b, - 0x43, 0x53, 0x02, 0xca, 0xba, 0x9b, 0x43, 0x43, 0x03, 0xea, 0xaa, 0x8b, 0x52, 0x32, 0x14, 0xba, - 0xac, 0xab, 0x41, 0x43, 0x13, 0xca, 0xac, 0x9b, 0x50, 0x33, 0x24, 0xc8, 0xbb, 0xba, 0x30, 0x26, - 0x23, 0xb9, 0xcd, 0x9a, 0x38, 0x25, 0x33, 0xa0, 0xbd, 0xaa, 0x2a, 0x26, 0x22, 0xb0, 0xcc, 0xaa, - 0x18, 0x35, 0x43, 0x90, 0xda, 0x9a, 0x0a, 0x34, 0x32, 0xa1, 0xdc, 0x9b, 0x1a, 0x44, 0x32, 0x82, - 0xda, 0xab, 0x9a, 0x44, 0x22, 0x92, 0xea, 0xab, 0x99, 0x44, 0x32, 0x03, 0xd9, 0x9c, 0x99, 0x41, - 0x22, 0x02, 0xda, 0x9d, 0x89, 0x41, 0x23, 0x13, 0xc8, 0x9d, 0x99, 0x48, 0x22, 0x12, 0xca, 0xad, - 0x99, 0x40, 0x24, 0x22, 0xb0, 0xad, 0xa9, 0x28, 0x15, 0x22, 0xc8, 0xbc, 0xaa, 0x48, 0x25, 0x32, - 0xa1, 0xbc, 0xaa, 0x1a, 0x26, 0x21, 0xa0, 0xbe, 0x9a, 0x19, 0x36, 0x31, 0x82, 0xbc, 0xaa, 0x8a, - 0x35, 0x21, 0xa2, 0xaf, 0xaa, 0x09, 0x35, 0x32, 0x04, 0xbb, 0xab, 0xab, 0x44, 0x12, 0x84, 0xae, - 0xaa, 0x89, 0x63, 0x22, 0x23, 0xbb, 0xbb, 0xbb, 0x71, 0x11, 0x22, 0xbd, 0xba, 0xab, 0x73, 0x22, - 0x43, 0xb8, 0xb9, 0xba, 0x49, 0x12, 0x52, 0xda, 0xa9, 0xbb, 0x60, 0x13, 0x53, 0x90, 0xa9, 0xbb, - 0x19, 0x13, 0x72, 0xc8, 0xa9, 0xbb, 0x38, 0x17, 0x42, 0x92, 0x99, 0xbb, 0x8a, 0x12, 0x70, 0xb1, - 0xaa, 0xcb, 0x2a, 0x34, 0x73, 0x02, 0x98, 0xba, 0x9b, 0x00, 0x50, 0xa3, 0x9b, 0xdc, 0x8a, 0x42, - 0x62, 0x13, 0x80, 0xca, 0x9b, 0x89, 0x30, 0x05, 0x8a, 0xfa, 0x8a, 0x20, 0x52, 0x24, 0x00, 0xc8, - 0x9b, 0x9a, 0x10, 0x15, 0x89, 0xe8, 0x8b, 0x08, 0x53, 0x25, 0x01, 0xa0, 0x9d, 0xa9, 0x09, 0x33, - 0x80, 0xc0, 0x8f, 0x89, 0x31, 0x45, 0x11, 0x91, 0x9d, 0xb9, 0x89, 0x32, 0x01, 0x91, 0xbf, 0x98, - 0x38, 0x46, 0x22, 0x81, 0xac, 0xc9, 0x8b, 0x31, 0x11, 0x01, 0xcd, 0xa8, 0x19, 0x46, 0x22, 0x12, - 0xcb, 0xba, 0x9d, 0x20, 0x21, 0x11, 0xda, 0x9a, 0x8b, 0x46, 0x32, 0x14, 0xb9, 0xbb, 0xae, 0x00, - 0x22, 0x11, 0xc8, 0x8b, 0xac, 0x44, 0x53, 0x12, 0xb1, 0x9c, 0xbd, 0x00, 0x20, 0x03, 0xa1, 0x8d, - 0xcb, 0x32, 0x54, 0x23, 0x91, 0xac, 0xcc, 0x09, 0x28, 0x14, 0x80, 0x9b, 0xdb, 0x20, 0x63, 0x24, - 0x00, 0xba, 0xcc, 0x8a, 0x10, 0x14, 0x01, 0xaa, 0xdb, 0x29, 0x53, 0x25, 0x11, 0xb9, 0xcc, 0x8b, - 0x08, 0x43, 0x01, 0xa8, 0xcb, 0x0b, 0x53, 0x36, 0x02, 0xa0, 0xbd, 0x9c, 0x08, 0x32, 0x12, 0x90, - 0xbd, 0x8b, 0x32, 0x57, 0x02, 0x80, 0xbc, 0xbb, 0x09, 0x42, 0x13, 0x00, 0xcc, 0xaa, 0x30, 0x65, - 0x12, 0x00, 0xda, 0xbb, 0x89, 0x31, 0x14, 0x01, 0xd9, 0xab, 0x28, 0x54, 0x24, 0x01, 0xca, 0xbc, - 0x9a, 0x30, 0x24, 0x01, 0xd0, 0xab, 0x19, 0x53, 0x26, 0x01, 0xb8, 0xae, 0x9a, 0x10, 0x33, 0x11, - 0xc1, 0xac, 0x99, 0x43, 0x45, 0x11, 0xb0, 0xad, 0xab, 0x19, 0x43, 0x12, 0x81, 0x9f, 0x99, 0x21, - 0x44, 0x03, 0x91, 0xbd, 0xcb, 0x09, 0x32, 0x04, 0x02, 0xad, 0xa9, 0x38, 0x54, 0x23, 0x00, 0xbd, - 0xcb, 0x0a, 0x31, 0x33, 0x11, 0xfb, 0xa9, 0x18, 0x63, 0x33, 0x01, 0xeb, 0xab, 0x9b, 0x21, 0x34, - 0x21, 0xd9, 0xaa, 0x1a, 0x53, 0x35, 0x02, 0xca, 0xbc, 0x9b, 0x28, 0x53, 0x12, 0xa8, 0xac, 0x8a, - 0x43, 0x45, 0x12, 0xa9, 0xbd, 0x9c, 0x08, 0x42, 0x12, 0x90, 0xca, 0x9a, 0x32, 0x55, 0x13, 0xa8, - 0xcc, 0xbb, 0x08, 0x41, 0x33, 0x90, 0xc9, 0x9c, 0x30, 0x63, 0x24, 0xa0, 0xca, 0xad, 0x09, 0x20, - 0x24, 0x91, 0x98, 0xad, 0x20, 0x42, 0x25, 0x91, 0xba, 0xbe, 0x89, 0x18, 0x44, 0x91, 0x80, 0xac, - 0x18, 0x22, 0x46, 0x91, 0x99, 0xbd, 0x8a, 0x08, 0x53, 0x82, 0x18, 0xdb, 0x19, 0x21, 0x54, 0x82, - 0x89, 0xec, 0x89, 0x88, 0x31, 0x04, 0x09, 0xc8, 0x0a, 0x21, 0x53, 0x05, 0x8a, 0xe9, 0x9a, 0x88, - 0x21, 0x24, 0x09, 0xb0, 0x0d, 0x01, 0x42, 0x25, 0x9a, 0xd0, 0x9c, 0x98, 0x10, 0x34, 0x88, 0x91, - 0x9d, 0x11, 0x21, 0x36, 0xa8, 0xb0, 0xbf, 0x88, 0x18, 0x52, 0x80, 0x00, 0xbb, 0x21, 0x21, 0x56, - 0x90, 0x89, 0xcd, 0x88, 0x88, 0x32, 0x93, 0x20, 0xea, 0x18, 0x11, 0x63, 0x92, 0x89, 0xfb, 0x8b, - 0x90, 0x31, 0x04, 0x18, 0xc1, 0x1b, 0x02, 0x72, 0x83, 0x99, 0xf8, 0x9b, 0x90, 0x20, 0x24, 0x08, - 0xa2, 0x8d, 0x02, 0x40, 0x15, 0x99, 0xa8, 0xbf, 0x80, 0x19, 0x33, 0x01, 0x11, 0xbc, 0x12, 0x48, - 0x35, 0xb1, 0x99, 0xef, 0x88, 0x08, 0x31, 0x01, 0x30, 0xda, 0x10, 0x00, 0x34, 0x92, 0x8b, 0xfb, - 0x8e, 0x88, 0x21, 0x13, 0x18, 0xd2, 0x19, 0x00, 0x41, 0x13, 0x9c, 0xf0, 0x8c, 0x88, 0x28, 0x33, - 0x18, 0x93, 0x8d, 0x01, 0x30, 0x25, 0xb9, 0xc0, 0xbf, 0x98, 0x00, 0x63, 0x00, 0x12, 0x9c, 0x00, - 0x10, 0x52, 0xb0, 0x08, 0xcf, 0x88, 0x88, 0x41, 0x02, 0x31, 0xca, 0x00, 0x08, 0x61, 0xa2, 0x09, - 0xfc, 0x89, 0x88, 0x30, 0x04, 0x30, 0xb0, 0x0a, 0x00, 0x58, 0x85, 0x0a, 0xf8, 0x9b, 0x88, 0x28, - 0x16, 0x20, 0x91, 0x8b, 0x00, 0x29, 0x17, 0x8a, 0xc0, 0xad, 0x09, 0x19, 0x35, 0x10, 0x83, 0xab, - 0x00, 0x0a, 0x36, 0x98, 0xb0, 0xdf, 0x89, 0x88, 0x53, 0x11, 0x12, 0xaa, 0x09, 0x99, 0x73, 0x91, - 0x88, 0xec, 0x8a, 0x88, 0x41, 0x13, 0x32, 0xc8, 0x0a, 0x98, 0x50, 0x83, 0x09, 0xec, 0x9c, 0x90, - 0x48, 0x14, 0x21, 0x90, 0x9b, 0xa1, 0x49, 0x14, 0x98, 0xd9, 0xae, 0x88, 0x29, 0x35, 0x21, 0x01, - 0xcb, 0x80, 0x1b, 0x25, 0x80, 0xb9, 0xcf, 0x09, 0x09, 0x34, 0x23, 0x02, 0xe8, 0x09, 0x8a, 0x33, - 0x02, 0xaa, 0xfd, 0x0b, 0x89, 0x43, 0x24, 0x11, 0xb8, 0x0b, 0xaa, 0x61, 0x12, 0xa9, 0xfa, 0x9c, - 0x88, 0x31, 0x35, 0x02, 0xa1, 0xab, 0xb9, 0x40, 0x24, 0x98, 0xea, 0xad, 0x89, 0x20, 0x36, 0x12, - 0x81, 0xac, 0xa8, 0x18, 0x43, 0x91, 0xc9, 0xbe, 0x9a, 0x38, 0x45, 0x23, 0x00, 0xba, 0xab, 0x1a, - 0x63, 0x82, 0xa9, 0xed, 0x9a, 0x18, 0x53, 0x33, 0x01, 0xb9, 0xbb, 0x8a, 0x42, 0x15, 0x98, 0xcd, - 0xbb, 0x09, 0x63, 0x34, 0x11, 0xa8, 0xcb, 0x99, 0x21, 0x24, 0x90, 0xcc, 0xbc, 0x0a, 0x42, 0x45, - 0x02, 0x88, 0xbb, 0x9a, 0x10, 0x53, 0x81, 0xda, 0xbc, 0x8b, 0x31, 0x46, 0x13, 0x80, 0xba, 0xac, - 0x00, 0x42, 0x03, 0xbb, 0xce, 0x9b, 0x30, 0x44, 0x15, 0x80, 0xb8, 0xab, 0x08, 0x41, 0x23, 0xca, - 0xeb, 0xab, 0x28, 0x44, 0x34, 0x81, 0xa9, 0xcb, 0x1a, 0x11, 0x34, 0xc8, 0xca, 0xad, 0x19, 0x43, - 0x44, 0x01, 0x98, 0xcb, 0x0a, 0x01, 0x43, 0xb1, 0xda, 0xcb, 0x0a, 0x43, 0x44, 0x12, 0x98, 0xcb, - 0x9a, 0x20, 0x41, 0x93, 0xbc, 0xcc, 0x8b, 0x52, 0x52, 0x22, 0x98, 0xc9, 0xaa, 0x10, 0x31, 0x13, - 0xeb, 0xcb, 0xab, 0x41, 0x44, 0x33, 0x90, 0xc9, 0xbb, 0x29, 0x22, 0x33, 0xf9, 0xcb, 0xab, 0x38, - 0x36, 0x34, 0x81, 0xaa, 0xbc, 0x0a, 0x23, 0x32, 0xd1, 0xbd, 0xbb, 0x29, 0x46, 0x42, 0x01, 0xa9, - 0xba, 0x9b, 0x32, 0x32, 0xa3, 0xcf, 0xbb, 0x0a, 0x45, 0x33, 0x14, 0xa9, 0xcb, 0xaa, 0x31, 0x12, - 0x13, 0xce, 0xbb, 0x9a, 0x73, 0x23, 0x24, 0xa8, 0xba, 0xbb, 0x49, 0x13, 0x31, 0xfb, 0xac, 0x99, - 0x40, 0x25, 0x32, 0xa0, 0xba, 0xcb, 0x19, 0x14, 0x21, 0xf0, 0xba, 0x9a, 0x38, 0x37, 0x31, 0x92, - 0xab, 0xcb, 0x8a, 0x24, 0x20, 0xc2, 0xae, 0x9a, 0x19, 0x36, 0x32, 0x84, 0xab, 0xb9, 0x9c, 0x33, - 0x01, 0x93, 0xcf, 0xa9, 0x09, 0x54, 0x12, 0x13, 0xba, 0xb9, 0xac, 0x41, 0x01, 0x02, 0xdd, 0xa9, - 0x89, 0x63, 0x22, 0x33, 0xc9, 0xa9, 0xcb, 0x30, 0x02, 0x21, 0xfb, 0x9b, 0x9b, 0x62, 0x24, 0x22, - 0xc1, 0x8a, 0xcb, 0x18, 0x13, 0x20, 0xf9, 0x8b, 0xba, 0x51, 0x34, 0x31, 0xa2, 0x9c, 0xca, 0x19, - 0x12, 0x01, 0xd1, 0x8e, 0xb9, 0x30, 0x44, 0x22, 0x84, 0xab, 0xc9, 0x0a, 0x11, 0x02, 0xa2, 0xbf, - 0xb8, 0x3a, 0x45, 0x23, 0x23, 0xbc, 0xb8, 0x8d, 0x11, 0x11, 0x80, 0xce, 0x90, 0x0b, 0x25, 0x33, - 0x33, 0xd9, 0x89, 0x9d, 0x00, 0x11, 0x18, 0xfb, 0x09, 0x9b, 0x34, 0x43, 0x23, 0xc1, 0x8a, 0xcc, - 0x10, 0x28, 0x00, 0xe9, 0x0a, 0xca, 0x52, 0x32, 0x22, 0xa2, 0x0c, 0xfa, 0x18, 0x08, 0x81, 0xa8, - 0x0d, 0xc8, 0x40, 0x22, 0x14, 0x82, 0x8b, 0xe8, 0x1a, 0x88, 0x01, 0x98, 0x9e, 0xa0, 0x5a, 0x23, - 0x24, 0x12, 0xba, 0xd0, 0x8c, 0x81, 0x18, 0x08, 0xcd, 0x80, 0x1b, 0x26, 0x23, 0x23, 0xb9, 0xa9, - 0xaf, 0x81, 0x08, 0x00, 0xeb, 0x08, 0x8b, 0x45, 0x22, 0x32, 0xb1, 0x8b, 0xcd, 0x18, 0x99, 0x01, - 0xe8, 0x0a, 0xb8, 0x72, 0x13, 0x33, 0x91, 0x8b, 0xfb, 0x1a, 0x98, 0x18, 0xa0, 0x8e, 0xa0, 0x58, - 0x24, 0x32, 0x83, 0xab, 0xf8, 0x8b, 0x91, 0x19, 0x91, 0xac, 0x90, 0x4b, 0x27, 0x41, 0x12, 0xb8, - 0xa8, 0x9f, 0x80, 0x1a, 0x01, 0xba, 0x08, 0x8b, 0x47, 0x31, 0x15, 0x98, 0x99, 0xcc, 0x19, 0x8a, - 0x12, 0xb8, 0x1a, 0xca, 0x72, 0x32, 0x25, 0x91, 0x99, 0xfb, 0x0a, 0x98, 0x11, 0x80, 0x8a, 0xc8, - 0x68, 0x12, 0x35, 0x01, 0xa9, 0xe9, 0x8c, 0x98, 0x11, 0x01, 0xa8, 0xa8, 0x3c, 0x24, 0x46, 0x11, - 0x98, 0xba, 0x9f, 0x98, 0x20, 0x10, 0xa0, 0x99, 0x0c, 0x15, 0x63, 0x12, 0x91, 0xbb, 0xae, 0x99, - 0x20, 0x01, 0x93, 0x9b, 0xac, 0x14, 0x74, 0x12, 0x82, 0xba, 0xcc, 0xa9, 0x18, 0x12, 0x03, 0x9c, - 0xb9, 0x20, 0x74, 0x24, 0x12, 0xbb, 0xeb, 0xaa, 0x29, 0x02, 0x32, 0xca, 0xa8, 0x09, 0x72, 0x16, - 0x22, 0xb9, 0xca, 0xbb, 0x1a, 0x03, 0x61, 0xc0, 0x88, 0x89, 0x40, 0x26, 0x31, 0xc0, 0xaa, 0xbc, - 0x0a, 0x22, 0x48, 0xc3, 0x8a, 0xa8, 0x38, 0x57, 0x20, 0xb3, 0x9c, 0xc9, 0x8b, 0x22, 0x29, 0x85, - 0x8c, 0x90, 0x19, 0x36, 0x11, 0x85, 0xbb, 0xb9, 0x9d, 0x30, 0x88, 0x16, 0x9b, 0x91, 0x8a, 0x64, - 0x01, 0x23, 0xcb, 0xa9, 0xad, 0x28, 0x91, 0x34, 0xc9, 0x00, 0x8b, 0x73, 0x82, 0x52, 0xb9, 0x99, - 0xbc, 0x18, 0x92, 0x70, 0xb0, 0x18, 0x99, 0x50, 0x03, 0x60, 0xc1, 0x89, 0xba, 0x0a, 0x82, 0x58, - 0xb3, 0x2a, 0xc8, 0x30, 0x16, 0x48, 0xa3, 0x0d, 0xca, 0x0a, 0x10, 0x29, 0x86, 0x0a, 0xb1, 0x29, - 0x34, 0x20, 0x07, 0x8c, 0xb8, 0x8c, 0x00, 0x08, 0x15, 0x9a, 0x92, 0x1a, 0x52, 0x01, 0x25, 0xbb, - 0xb0, 0xaf, 0x18, 0x90, 0x53, 0x99, 0x82, 0x9a, 0x41, 0x03, 0x73, 0xb8, 0x98, 0xbd, 0x09, 0x91, - 0x70, 0xa1, 0x01, 0x99, 0x28, 0x14, 0x60, 0xa1, 0x89, 0xdc, 0x89, 0x00, 0x49, 0x93, 0x10, 0xb8, - 0x88, 0x44, 0x38, 0x87, 0x0a, 0xda, 0x9a, 0x29, 0x19, 0x07, 0x08, 0x90, 0x89, 0x40, 0x10, 0x06, - 0x89, 0xc9, 0xbb, 0x2a, 0x80, 0x27, 0x08, 0xa1, 0x9a, 0x38, 0x84, 0x36, 0x98, 0xc9, 0xbc, 0x0b, - 0x81, 0x54, 0x01, 0x90, 0xaa, 0x19, 0x14, 0x73, 0x91, 0xa8, 0xbd, 0x9b, 0x01, 0x62, 0x02, 0x80, - 0xaa, 0x8b, 0x24, 0x73, 0x82, 0x99, 0xdc, 0xaa, 0x01, 0x31, 0x24, 0x00, 0xca, 0x9a, 0x31, 0x63, - 0x04, 0x98, 0xfb, 0xaa, 0x18, 0x20, 0x25, 0x00, 0xb9, 0x9b, 0x28, 0x44, 0x34, 0x88, 0xdc, 0xbb, - 0x09, 0x21, 0x35, 0x02, 0xc8, 0xab, 0x19, 0x53, 0x34, 0x81, 0xea, 0xac, 0x8a, 0x21, 0x43, 0x13, - 0xb8, 0xad, 0x0a, 0x52, 0x33, 0x03, 0xe9, 0xad, 0x9a, 0x20, 0x42, 0x23, 0xa0, 0xad, 0x99, 0x31, - 0x35, 0x23, 0xb9, 0xcf, 0x9a, 0x18, 0x32, 0x24, 0x91, 0xcb, 0xaa, 0x30, 0x35, 0x34, 0xa8, 0xbe, - 0xbb, 0x19, 0x43, 0x53, 0x81, 0xca, 0xa9, 0x29, 0x34, 0x34, 0x80, 0xcd, 0xba, 0x8a, 0x42, 0x43, - 0x02, 0xca, 0xaa, 0x89, 0x44, 0x43, 0x01, 0xeb, 0xba, 0x9a, 0x41, 0x42, 0x12, 0xb9, 0xbb, 0xaa, - 0x73, 0x43, 0x11, 0xd9, 0xab, 0xbb, 0x30, 0x35, 0x23, 0xc0, 0xab, 0xbb, 0x60, 0x24, 0x13, 0xc0, - 0xbc, 0xcb, 0x28, 0x33, 0x34, 0xa1, 0xbc, 0xba, 0x49, 0x35, 0x33, 0xa0, 0xbe, 0xac, 0x1a, 0x42, - 0x33, 0x82, 0xdb, 0xba, 0x2a, 0x45, 0x23, 0x81, 0xdc, 0xba, 0x8a, 0x42, 0x43, 0x02, 0xca, 0xba, - 0x0b, 0x54, 0x23, 0x02, 0xea, 0xbb, 0x9b, 0x32, 0x26, 0x12, 0xb9, 0xac, 0x9b, 0x62, 0x33, 0x13, - 0xd9, 0xbc, 0xab, 0x30, 0x35, 0x13, 0xb0, 0xbd, 0xaa, 0x40, 0x35, 0x13, 0xb8, 0xcd, 0xab, 0x10, - 0x34, 0x14, 0x90, 0xbc, 0xaa, 0x28, 0x46, 0x12, 0x90, 0xcc, 0xba, 0x08, 0x34, 0x14, 0x81, 0xdb, - 0xaa, 0x18, 0x63, 0x23, 0x90, 0xeb, 0xaa, 0x89, 0x43, 0x33, 0x81, 0xea, 0xab, 0x19, 0x62, 0x33, - 0x81, 0xea, 0xbb, 0x89, 0x41, 0x34, 0x01, 0xd9, 0xab, 0x89, 0x52, 0x34, 0x81, 0xd8, 0xbb, 0x9a, - 0x31, 0x36, 0x01, 0xb8, 0xae, 0x89, 0x31, 0x45, 0x81, 0xa8, 0xcc, 0x99, 0x20, 0x53, 0x02, 0x98, - 0xbd, 0x89, 0x20, 0x45, 0x82, 0x90, 0xbd, 0x9a, 0x18, 0x44, 0x12, 0x90, 0xcc, 0x8a, 0x18, 0x54, - 0x02, 0x80, 0xcc, 0x9a, 0x08, 0x43, 0x04, 0x80, 0xda, 0x9a, 0x00, 0x62, 0x13, 0x88, 0xda, 0x9b, - 0x09, 0x51, 0x14, 0x80, 0xc9, 0xab, 0x08, 0x62, 0x14, 0x80, 0xc9, 0xab, 0x89, 0x41, 0x25, 0x80, - 0xc8, 0xbb, 0x08, 0x51, 0x34, 0x00, 0xc9, 0xbc, 0x88, 0x20, 0x36, 0x80, 0xa8, 0xad, 0x09, 0x20, - 0x36, 0x01, 0xa9, 0xbd, 0x89, 0x18, 0x45, 0x01, 0xa8, 0xdb, 0x89, 0x11, 0x54, 0x01, 0x98, 0xdb, - 0x8a, 0x00, 0x63, 0x01, 0x88, 0xcb, 0x8a, 0x10, 0x73, 0x02, 0x88, 0xda, 0x8b, 0x08, 0x62, 0x02, - 0x88, 0xd9, 0x9a, 0x10, 0x52, 0x13, 0x90, 0xda, 0x9c, 0x08, 0x41, 0x14, 0x88, 0xb9, 0x9d, 0x18, - 0x41, 0x15, 0x90, 0xb8, 0xad, 0x08, 0x30, 0x25, 0x80, 0xb9, 0xad, 0x19, 0x41, 0x25, 0x80, 0xb8, - 0xbd, 0x09, 0x30, 0x35, 0x81, 0xa9, 0xcd, 0x09, 0x21, 0x35, 0x82, 0xa9, 0xbd, 0x8a, 0x20, 0x45, - 0x01, 0x99, 0xcc, 0x89, 0x11, 0x54, 0x01, 0x98, 0xcb, 0x9b, 0x10, 0x44, 0x03, 0x99, 0xea, 0x9a, - 0x20, 0x63, 0x12, 0x98, 0xcb, 0x9c, 0x00, 0x52, 0x13, 0x89, 0xda, 0xab, 0x20, 0x62, 0x23, 0x98, - 0xd9, 0xbb, 0x08, 0x52, 0x24, 0x98, 0xb9, 0xad, 0x18, 0x41, 0x25, 0x80, 0xb9, 0xbd, 0x08, 0x31, - 0x35, 0x88, 0xa9, 0xae, 0x09, 0x22, 0x36, 0x80, 0xb8, 0xcc, 0x89, 0x21, 0x44, 0x80, 0x98, 0xbd, - 0x89, 0x22, 0x45, 0x01, 0x99, 0xbc, 0x8b, 0x20, 0x54, 0x82, 0x98, 0xbc, 0x9b, 0x31, 0x45, 0x03, - 0x98, 0xcc, 0x9b, 0x10, 0x63, 0x03, 0x98, 0xdb, 0x9b, 0x20, 0x63, 0x13, 0x90, 0xdb, 0xab, 0x18, - 0x52, 0x14, 0x88, 0xca, 0xbb, 0x28, 0x63, 0x14, 0x80, 0xba, 0xad, 0x19, 0x31, 0x35, 0x80, 0xda, - 0xab, 0x09, 0x43, 0x35, 0x00, 0xc9, 0xbc, 0x89, 0x32, 0x44, 0x81, 0xb9, 0xbd, 0x89, 0x42, 0x44, - 0x81, 0xb8, 0xbc, 0x9a, 0x32, 0x54, 0x01, 0xb8, 0xcc, 0x99, 0x31, 0x54, 0x01, 0xa0, 0xbc, 0xaa, - 0x30, 0x44, 0x03, 0xa8, 0xbd, 0x9b, 0x30, 0x45, 0x13, 0x98, 0xdc, 0x9a, 0x28, 0x43, 0x13, 0x98, - 0xdc, 0xaa, 0x20, 0x53, 0x23, 0x90, 0xcc, 0xab, 0x29, 0x53, 0x23, 0x80, 0xdc, 0xaa, 0x29, 0x53, - 0x33, 0x80, 0xeb, 0xab, 0x09, 0x43, 0x24, 0x81, 0xdb, 0xab, 0x1a, 0x53, 0x24, 0x01, 0xca, 0xac, - 0x0a, 0x32, 0x25, 0x82, 0xca, 0xbc, 0x89, 0x52, 0x43, 0x01, 0xb9, 0xbd, 0x8a, 0x32, 0x35, 0x01, - 0xc8, 0xad, 0x8a, 0x41, 0x43, 0x02, 0xa9, 0xbd, 0x9a, 0x31, 0x44, 0x02, 0xa8, 0xae, 0x8b, 0x21, - 0x35, 0x12, 0xa8, 0xbd, 0xab, 0x30, 0x45, 0x12, 0x99, 0xcc, 0x9b, 0x30, 0x44, 0x22, 0x98, 0xcc, - 0x9b, 0x28, 0x34, 0x14, 0x98, 0xeb, 0xaa, 0x10, 0x53, 0x23, 0x90, 0xdb, 0xbb, 0x18, 0x63, 0x23, - 0x98, 0xcb, 0xad, 0x18, 0x43, 0x24, 0x80, 0xbb, 0xbd, 0x18, 0x42, 0x33, 0x91, 0xeb, 0xcb, 0x08, - 0x33, 0x35, 0x81, 0xca, 0xbc, 0x09, 0x42, 0x24, 0x81, 0xca, 0xcb, 0x0a, 0x33, 0x45, 0x01, 0xaa, - 0xcc, 0x89, 0x22, 0x34, 0x02, 0xcb, 0xdb, 0x8a, 0x32, 0x44, 0x83, 0xa9, 0xcc, 0x9a, 0x22, 0x44, - 0x02, 0xb9, 0xcc, 0x8b, 0x31, 0x44, 0x13, 0xa9, 0xcc, 0x9b, 0x31, 0x53, 0x13, 0xb9, 0xcc, 0xab, - 0x31, 0x44, 0x14, 0xa8, 0xbb, 0xad, 0x21, 0x42, 0x14, 0xb0, 0xcb, 0xac, 0x20, 0x43, 0x15, 0x90, - 0xab, 0xad, 0x28, 0x42, 0x33, 0xa8, 0xbc, 0xbd, 0x28, 0x43, 0x34, 0x90, 0xca, 0xbc, 0x18, 0x33, - 0x35, 0x91, 0xbc, 0xad, 0x19, 0x33, 0x35, 0x81, 0xcb, 0xcb, 0x1a, 0x33, 0x35, 0x92, 0xdb, 0xcb, - 0x1a, 0x32, 0x35, 0x02, 0xca, 0xcb, 0x8a, 0x33, 0x44, 0x02, 0xcb, 0xac, 0x8b, 0x33, 0x54, 0x02, - 0xa9, 0xbc, 0x9b, 0x43, 0x43, 0x03, 0xca, 0xbc, 0xab, 0x52, 0x42, 0x13, 0xb8, 0xad, 0x9b, 0x31, - 0x34, 0x15, 0xb9, 0xbc, 0xbb, 0x51, 0x42, 0x13, 0x98, 0xcc, 0xaa, 0x30, 0x43, 0x24, 0xa9, 0xbd, - 0xaa, 0x49, 0x33, 0x25, 0x90, 0xdb, 0xaa, 0x39, 0x24, 0x24, 0xa0, 0xcc, 0xab, 0x29, 0x34, 0x34, - 0x91, 0xdb, 0xab, 0x19, 0x25, 0x33, 0xa1, 0xfb, 0xab, 0x09, 0x34, 0x43, 0x81, 0xd9, 0xab, 0x89, - 0x34, 0x43, 0x91, 0xda, 0xac, 0x89, 0x43, 0x33, 0x83, 0xc9, 0xad, 0x8a, 0x42, 0x33, 0x83, 0xcb, - 0xaf, 0x89, 0x31, 0x43, 0x03, 0xa9, 0xbd, 0x8a, 0x41, 0x43, 0x02, 0xaa, 0xbf, 0x89, 0x30, 0x34, - 0x13, 0x99, 0xcd, 0x8a, 0x20, 0x34, 0x13, 0xaa, 0xce, 0x9a, 0x20, 0x34, 0x33, 0x99, 0xfb, 0x9a, - 0x10, 0x43, 0x23, 0xa9, 0xec, 0x9a, 0x00, 0x43, 0x24, 0x98, 0xc9, 0x8c, 0x08, 0x33, 0x34, 0xa9, - 0xea, 0x9c, 0x00, 0x32, 0x34, 0x80, 0xc9, 0x9d, 0x08, 0x41, 0x23, 0xa1, 0xda, 0xad, 0x08, 0x41, - 0x33, 0x92, 0xa9, 0xaf, 0x08, 0x30, 0x34, 0x91, 0xba, 0xbf, 0x08, 0x30, 0x44, 0x82, 0x99, 0xcc, - 0x09, 0x21, 0x34, 0x81, 0xaa, 0xce, 0x09, 0x10, 0x44, 0x01, 0x98, 0xda, 0x0a, 0x10, 0x34, 0x83, - 0xaa, 0xec, 0x8a, 0x10, 0x34, 0x13, 0x98, 0xfa, 0x8a, 0x10, 0x52, 0x02, 0x99, 0xdb, 0x8c, 0x10, - 0x42, 0x23, 0x98, 0xd9, 0x8c, 0x00, 0x42, 0x13, 0xb8, 0xda, 0x9d, 0x00, 0x42, 0x23, 0x90, 0xb9, - 0x9f, 0x00, 0x31, 0x24, 0xa8, 0xba, 0xaf, 0x00, 0x30, 0x26, 0x80, 0x99, 0xbc, 0x00, 0x21, 0x26, - 0x90, 0xaa, 0xcd, 0x18, 0x20, 0x34, 0x01, 0x9a, 0xcc, 0x19, 0x20, 0x35, 0x80, 0xab, 0xec, 0x19, - 0x10, 0x53, 0x01, 0x89, 0xda, 0x09, 0x00, 0x34, 0x82, 0xaa, 0xfb, 0x0b, 0x10, 0x63, 0x02, 0x98, - 0xc8, 0x0c, 0x00, 0x42, 0x12, 0xaa, 0xea, 0x8c, 0x01, 0x51, 0x22, 0x98, 0xb9, 0x9c, 0x01, 0x51, - 0x13, 0xb8, 0xda, 0x9d, 0x00, 0x41, 0x14, 0x91, 0x99, 0x9d, 0x00, 0x30, 0x24, 0xb0, 0xba, 0xbf, - 0x00, 0x40, 0x24, 0x92, 0x98, 0xbd, 0x18, 0x38, 0x25, 0xa1, 0xaa, 0xdd, 0x08, 0x20, 0x34, 0x83, - 0x99, 0xeb, 0x09, 0x18, 0x25, 0x92, 0x9a, 0xdc, 0x0a, 0x10, 0x44, 0x12, 0x89, 0xd9, 0x0b, 0x00, - 0x43, 0x03, 0xaa, 0xfb, 0x8c, 0x10, 0x42, 0x23, 0x98, 0xc8, 0x9d, 0x81, 0x32, 0x14, 0xa9, 0xd9, - 0x9d, 0x00, 0x42, 0x33, 0x88, 0xb8, 0xaf, 0x00, 0x21, 0x24, 0xa8, 0xb9, 0xaf, 0x18, 0x30, 0x35, - 0x80, 0x98, 0xbd, 0x08, 0x11, 0x44, 0x90, 0xa9, 0xcd, 0x19, 0x20, 0x44, 0x82, 0x88, 0xcc, 0x09, - 0x10, 0x43, 0x92, 0x9a, 0xcd, 0x0a, 0x20, 0x44, 0x83, 0x80, 0xdb, 0x0b, 0x00, 0x62, 0x82, 0x8a, - 0xea, 0x8b, 0x11, 0x53, 0x13, 0x88, 0xd9, 0x9b, 0x10, 0x41, 0x04, 0x99, 0xe9, 0xab, 0x11, 0x42, - 0x25, 0x88, 0xa8, 0xad, 0x00, 0x20, 0x15, 0x98, 0xb9, 0xae, 0x28, 0x21, 0x26, 0x00, 0x98, 0xbd, - 0x18, 0x10, 0x34, 0x98, 0xa9, 0xbf, 0x29, 0x11, 0x45, 0x81, 0x88, 0xdb, 0x09, 0x00, 0x43, 0x81, - 0x9a, 0xcd, 0x0a, 0x12, 0x54, 0x82, 0x88, 0xda, 0x8a, 0x01, 0x42, 0x02, 0x9a, 0xdc, 0x0b, 0x21, - 0x62, 0x13, 0x89, 0xd9, 0x9b, 0x01, 0x42, 0x03, 0x9a, 0xeb, 0x9c, 0x21, 0x42, 0x24, 0x98, 0xc8, - 0xac, 0x01, 0x21, 0x15, 0x99, 0xc9, 0x9d, 0x10, 0x32, 0x35, 0x90, 0xa9, 0xae, 0x18, 0x20, 0x43, - 0xa8, 0xb9, 0xbe, 0x28, 0x32, 0x36, 0x91, 0xa8, 0xbd, 0x19, 0x11, 0x63, 0xa0, 0x99, 0xcc, 0x19, - 0x32, 0x63, 0x82, 0x99, 0xdb, 0x0a, 0x11, 0x52, 0xa2, 0x9a, 0xeb, 0x0a, 0x23, 0x53, 0x03, 0xa9, - 0xea, 0x8b, 0x12, 0x41, 0x84, 0xaa, 0xda, 0x8b, 0x33, 0x43, 0x15, 0x99, 0xba, 0x9d, 0x30, 0x11, - 0x06, 0x9a, 0xba, 0xac, 0x42, 0x23, 0x35, 0xa9, 0xc9, 0xac, 0x30, 0x11, 0x34, 0xc9, 0xaa, 0xad, - 0x48, 0x13, 0x44, 0xa0, 0xa9, 0xbc, 0x28, 0x12, 0x63, 0xb0, 0xaa, 0xdb, 0x29, 0x15, 0x52, 0x91, - 0x9a, 0xca, 0x1a, 0x03, 0x61, 0x91, 0x9b, 0xcb, 0x1a, 0x25, 0x42, 0x93, 0xaa, 0xdb, 0x8b, 0x14, - 0x30, 0x85, 0xab, 0xba, 0x8c, 0x34, 0x42, 0x05, 0x9a, 0xba, 0x9c, 0x31, 0x21, 0x16, 0xab, 0xc9, - 0xaa, 0x52, 0x22, 0x25, 0xaa, 0xb9, 0xad, 0x30, 0x21, 0x34, 0xca, 0xa9, 0xad, 0x40, 0x23, 0x34, - 0xb9, 0xb9, 0xbe, 0x38, 0x12, 0x44, 0xb8, 0xa9, 0xad, 0x38, 0x24, 0x53, 0xa0, 0xaa, 0xcc, 0x29, - 0x22, 0x52, 0xb1, 0xaa, 0xcc, 0x28, 0x33, 0x44, 0xa2, 0xab, 0xcc, 0x0a, 0x33, 0x42, 0x93, 0x9d, - 0xda, 0x19, 0x42, 0x32, 0x83, 0x9d, 0xda, 0x0a, 0x31, 0x23, 0x84, 0xbb, 0xeb, 0x0a, 0x43, 0x33, - 0x13, 0xad, 0xdb, 0x8a, 0x31, 0x24, 0x22, 0xcb, 0xda, 0x0b, 0x42, 0x33, 0x23, 0xeb, 0xc9, 0x8b, - 0x21, 0x25, 0x21, 0xca, 0xc9, 0x8b, 0x32, 0x26, 0x21, 0xc9, 0xba, 0x9d, 0x21, 0x24, 0x12, 0xc8, - 0xba, 0x9d, 0x22, 0x34, 0x22, 0xc8, 0xbc, 0x9c, 0x11, 0x44, 0x11, 0xb0, 0xbb, 0xad, 0x31, 0x54, - 0x11, 0xa8, 0xac, 0xcb, 0x21, 0x52, 0x12, 0xa0, 0xac, 0xbb, 0x40, 0x63, 0x02, 0x90, 0xbc, 0xcb, - 0x20, 0x52, 0x13, 0x90, 0xcb, 0xcb, 0x38, 0x43, 0x14, 0x90, 0xbc, 0xbc, 0x28, 0x43, 0x15, 0x80, - 0xca, 0xba, 0x29, 0x53, 0x14, 0x80, 0xdb, 0xba, 0x1a, 0x34, 0x34, 0x80, 0xd9, 0xba, 0x1a, 0x43, - 0x25, 0x90, 0xc9, 0xac, 0x8a, 0x24, 0x34, 0x00, 0xb9, 0xbc, 0x8b, 0x34, 0x44, 0x80, 0xb9, 0xbd, - 0x8b, 0x43, 0x53, 0x82, 0xa0, 0xad, 0x9a, 0x32, 0x34, 0x82, 0xb9, 0xaf, 0xab, 0x32, 0x44, 0x03, - 0x90, 0xbc, 0xbb, 0x50, 0x42, 0x02, 0x99, 0xbe, 0xb9, 0x40, 0x33, 0x24, 0x88, 0xdb, 0xba, 0x38, - 0x24, 0x14, 0x89, 0xcd, 0xaa, 0x38, 0x24, 0x24, 0x00, 0xda, 0xaa, 0x2a, 0x33, 0x24, 0x98, 0xfb, - 0xab, 0x09, 0x35, 0x33, 0x01, 0xd9, 0xbb, 0x8a, 0x34, 0x33, 0x91, 0xfb, 0x9d, 0x89, 0x52, 0x32, - 0x01, 0xb8, 0xad, 0x8a, 0x41, 0x22, 0x82, 0xe9, 0xac, 0x99, 0x42, 0x24, 0x03, 0xa0, 0xad, 0xaa, - 0x40, 0x22, 0x83, 0xc8, 0xae, 0x9a, 0x40, 0x34, 0x22, 0x88, 0xad, 0xab, 0x39, 0x15, 0x12, 0xa8, - 0xbe, 0xaa, 0x38, 0x27, 0x13, 0x81, 0xdb, 0x9a, 0x0a, 0x34, 0x21, 0x98, 0xcd, 0x9b, 0x29, 0x45, - 0x22, 0x82, 0xda, 0xaa, 0x8a, 0x34, 0x12, 0x80, 0xec, 0x9a, 0x09, 0x63, 0x13, 0x02, 0xc9, 0xab, - 0xaa, 0x52, 0x12, 0x01, 0xeb, 0xab, 0x99, 0x73, 0x14, 0x11, 0xb8, 0xac, 0x99, 0x30, 0x14, 0x01, - 0xda, 0xac, 0x89, 0x61, 0x23, 0x22, 0xb8, 0xbd, 0x99, 0x28, 0x25, 0x00, 0xc8, 0xad, 0x89, 0x40, - 0x35, 0x11, 0xa0, 0xbc, 0x9a, 0x19, 0x35, 0x00, 0xb0, 0xaf, 0x89, 0x28, 0x36, 0x12, 0x91, 0xdb, - 0x9a, 0x09, 0x52, 0x81, 0x90, 0xcc, 0x8a, 0x10, 0x74, 0x11, 0x00, 0xba, 0xab, 0x98, 0x61, 0x82, - 0x80, 0xdb, 0x8b, 0x00, 0x72, 0x14, 0x00, 0xa9, 0xac, 0x88, 0x38, 0x04, 0x80, 0xd9, 0x9c, 0x00, - 0x51, 0x15, 0x00, 0xa0, 0xbc, 0x88, 0x29, 0x15, 0x88, 0xb8, 0xbd, 0x10, 0x40, 0x27, 0x00, 0x90, - 0xbc, 0x98, 0x08, 0x24, 0x88, 0x90, 0xbe, 0x18, 0x10, 0x37, 0x01, 0x00, 0xcc, 0x89, 0x89, 0x42, - 0x80, 0x80, 0xdc, 0x09, 0x01, 0x64, 0x01, 0x00, 0xd9, 0x8a, 0x98, 0x31, 0x82, 0x19, 0xfa, 0x8a, - 0x02, 0x62, 0x13, 0x18, 0xd8, 0x9c, 0x90, 0x38, 0x83, 0x19, 0xf0, 0x8b, 0x01, 0x51, 0x15, 0x08, - 0xb1, 0x9d, 0x98, 0x18, 0x23, 0x8a, 0xc2, 0x9f, 0x01, 0x21, 0x26, 0x80, 0x80, 0xae, 0x90, 0x08, - 0x32, 0xa9, 0x82, 0xaf, 0x10, 0x11, 0x45, 0x80, 0x00, 0xcc, 0x88, 0x89, 0x32, 0xa0, 0x20, 0xce, - 0x28, 0x10, 0x73, 0x92, 0x10, 0xdb, 0x89, 0x98, 0x30, 0xb3, 0x28, 0xfa, 0x2a, 0x10, 0x73, 0x02, - 0x19, 0xe8, 0x8a, 0x98, 0x20, 0x93, 0x1a, 0xf1, 0x1a, 0x11, 0x41, 0x15, 0x09, 0xd1, 0x8b, 0xa8, - 0x18, 0x13, 0x0c, 0xb3, 0x8e, 0x12, 0x30, 0x27, 0x88, 0xa1, 0xad, 0x98, 0x89, 0x33, 0x9a, 0x83, - 0x9f, 0x21, 0x20, 0x46, 0x88, 0x81, 0xbc, 0x99, 0x9a, 0x42, 0xb8, 0x32, 0xcc, 0x21, 0x01, 0x56, - 0x91, 0x10, 0xdb, 0x89, 0xaa, 0x30, 0xb1, 0x40, 0xd0, 0x28, 0x01, 0x72, 0x83, 0x28, 0xd9, 0x9b, - 0xb9, 0x19, 0x82, 0x49, 0xb3, 0x2c, 0x84, 0x61, 0x04, 0x08, 0xb1, 0x9e, 0xb8, 0x8a, 0x02, 0x08, - 0x05, 0x8a, 0x14, 0x28, 0x26, 0x80, 0x82, 0xaf, 0xa9, 0x9b, 0x11, 0x80, 0x25, 0x99, 0x13, 0x29, - 0x46, 0x81, 0x20, 0xec, 0x99, 0xab, 0x18, 0x01, 0x62, 0xa0, 0x21, 0x08, 0x42, 0x04, 0x38, 0xf8, - 0x9b, 0xbc, 0x08, 0x01, 0x50, 0x83, 0x29, 0x91, 0x30, 0x17, 0x00, 0xc2, 0xad, 0xca, 0x8a, 0x21, - 0x20, 0x07, 0x09, 0x81, 0x00, 0x43, 0x00, 0x83, 0xcf, 0xb9, 0xaa, 0x20, 0x12, 0x27, 0x88, 0x00, - 0x89, 0x42, 0x82, 0x23, 0xce, 0xba, 0x9d, 0x18, 0x02, 0x44, 0x91, 0x00, 0x99, 0x30, 0x15, 0x40, - 0xe9, 0xaa, 0xbc, 0x19, 0x22, 0x72, 0x92, 0x18, 0xa9, 0x28, 0x14, 0x21, 0xe2, 0xac, 0xda, 0x89, - 0x21, 0x42, 0x04, 0x09, 0x98, 0x1a, 0x32, 0x42, 0xa3, 0xcf, 0xba, 0x8c, 0x30, 0x42, 0x24, 0x98, - 0xa0, 0x8b, 0x42, 0x23, 0x13, 0xcf, 0xba, 0x9d, 0x10, 0x33, 0x44, 0x90, 0x89, 0x9b, 0x21, 0x34, - 0x32, 0xfb, 0xac, 0xac, 0x18, 0x33, 0x44, 0x81, 0x89, 0xbb, 0x20, 0x53, 0x32, 0xd8, 0xad, 0xbc, - 0x19, 0x42, 0x43, 0x02, 0x99, 0xca, 0x19, 0x43, 0x32, 0xb1, 0xbf, 0xbc, 0x8a, 0x52, 0x33, 0x13, - 0xa9, 0xd9, 0x0a, 0x42, 0x23, 0x82, 0xbf, 0xcb, 0x8b, 0x31, 0x26, 0x22, 0xa0, 0xaa, 0x8c, 0x31, - 0x34, 0x02, 0xfb, 0xac, 0x9b, 0x20, 0x35, 0x33, 0xa0, 0xaa, 0xad, 0x21, 0x34, 0x22, 0xfa, 0xbb, - 0xac, 0x10, 0x44, 0x23, 0x91, 0xaa, 0xbb, 0x28, 0x36, 0x22, 0xc8, 0xbe, 0xbb, 0x29, 0x63, 0x33, - 0x82, 0xaa, 0xcb, 0x19, 0x53, 0x23, 0xa0, 0xbf, 0xcb, 0x09, 0x42, 0x34, 0x02, 0xb9, 0xba, 0x0b, - 0x53, 0x24, 0x91, 0xdc, 0xcb, 0x89, 0x31, 0x35, 0x13, 0xa9, 0xca, 0x9a, 0x32, 0x35, 0x81, 0xeb, - 0xac, 0x9b, 0x31, 0x45, 0x22, 0x98, 0xba, 0xab, 0x31, 0x35, 0x12, 0xe9, 0xad, 0x9b, 0x20, 0x63, - 0x23, 0x80, 0xba, 0xbb, 0x28, 0x54, 0x12, 0xb9, 0xbe, 0xac, 0x10, 0x53, 0x33, 0x01, 0xbb, 0xcb, - 0x19, 0x53, 0x13, 0x98, 0xce, 0xbb, 0x29, 0x52, 0x34, 0x01, 0xa9, 0xcb, 0x09, 0x32, 0x24, 0x80, - 0xdd, 0xbb, 0x1a, 0x42, 0x44, 0x12, 0xa8, 0xcb, 0x0a, 0x21, 0x34, 0x91, 0xeb, 0xbc, 0x8a, 0x32, - 0x45, 0x22, 0x98, 0xbb, 0x8c, 0x20, 0x43, 0x02, 0xda, 0xbd, 0x9b, 0x31, 0x45, 0x22, 0x91, 0xbb, - 0x9c, 0x10, 0x52, 0x12, 0xc9, 0xcc, 0x9b, 0x38, 0x63, 0x23, 0x81, 0xba, 0xcb, 0x18, 0x32, 0x25, - 0xb8, 0xbe, 0xcb, 0x18, 0x34, 0x34, 0x82, 0xb9, 0xbc, 0x09, 0x42, 0x23, 0xa1, 0xce, 0xcb, 0x19, - 0x42, 0x34, 0x02, 0xa9, 0xcb, 0x8a, 0x22, 0x24, 0x93, 0xcd, 0xac, 0x8a, 0x42, 0x34, 0x23, 0xa8, - 0xbc, 0x9b, 0x30, 0x34, 0x03, 0xdc, 0xbc, 0x9b, 0x42, 0x44, 0x13, 0x90, 0xbb, 0xac, 0x20, 0x33, - 0x33, 0xfb, 0xbc, 0xab, 0x40, 0x44, 0x32, 0x90, 0xb9, 0xad, 0x18, 0x23, 0x32, 0xd8, 0xad, 0x9c, - 0x18, 0x34, 0x34, 0x92, 0xaa, 0xbc, 0x09, 0x42, 0x22, 0xb1, 0xaf, 0xac, 0x08, 0x53, 0x33, 0x03, - 0xaa, 0xcc, 0x8a, 0x32, 0x32, 0x92, 0xbf, 0xcb, 0x89, 0x53, 0x43, 0x12, 0x99, 0xcb, 0x9a, 0x31, - 0x22, 0x03, 0xed, 0xba, 0x8a, 0x51, 0x24, 0x14, 0x98, 0xaa, 0xbb, 0x20, 0x14, 0x13, 0xfa, 0xbb, - 0xaa, 0x41, 0x35, 0x43, 0xa0, 0xaa, 0xbb, 0x29, 0x33, 0x33, 0xf9, 0xad, 0xab, 0x30, 0x45, 0x42, - 0x91, 0x9a, 0xca, 0x09, 0x22, 0x21, 0xc1, 0xbd, 0xbb, 0x28, 0x45, 0x24, 0x03, 0x9b, 0xcb, 0x8b, - 0x22, 0x22, 0xa3, 0xcf, 0xb9, 0x1a, 0x63, 0x33, 0x23, 0xba, 0xda, 0x9b, 0x20, 0x23, 0x11, 0xce, - 0xba, 0x8b, 0x44, 0x34, 0x33, 0xb8, 0xca, 0xac, 0x00, 0x22, 0x21, 0xfa, 0x9b, 0x9c, 0x22, 0x45, - 0x32, 0xa1, 0xaa, 0xbc, 0x09, 0x31, 0x12, 0xe0, 0x9c, 0xcb, 0x21, 0x54, 0x22, 0x93, 0x9a, 0xcc, - 0x09, 0x20, 0x01, 0xa1, 0xae, 0xc9, 0x28, 0x53, 0x24, 0x12, 0xaa, 0xe9, 0x0a, 0x18, 0x01, 0x01, - 0xad, 0xc9, 0x1a, 0x53, 0x24, 0x23, 0xa9, 0xd9, 0x9b, 0x08, 0x11, 0x21, 0xfb, 0xa9, 0x0c, 0x42, - 0x43, 0x33, 0xb1, 0xba, 0x9f, 0x88, 0x10, 0x20, 0xd8, 0x8a, 0x9c, 0x32, 0x44, 0x43, 0x92, 0xaa, - 0xcc, 0x88, 0x08, 0x21, 0xb1, 0x9d, 0xca, 0x30, 0x44, 0x34, 0x83, 0xaa, 0xeb, 0x8a, 0x08, 0x11, - 0x82, 0x9e, 0xc8, 0x29, 0x43, 0x34, 0x14, 0xa9, 0xd9, 0x9b, 0x88, 0x11, 0x22, 0xbc, 0xb9, 0x0c, - 0x34, 0x55, 0x23, 0xa8, 0xb9, 0xae, 0x98, 0x10, 0x22, 0xc8, 0x99, 0xbb, 0x43, 0x55, 0x33, 0x91, - 0xaa, 0xce, 0x98, 0x00, 0x12, 0xa2, 0x8b, 0xbc, 0x30, 0x64, 0x24, 0x82, 0x99, 0xdc, 0x8a, 0x08, - 0x12, 0x02, 0xab, 0xe9, 0x29, 0x51, 0x34, 0x13, 0xaa, 0xfa, 0x9b, 0x88, 0x22, 0x22, 0xaa, 0xd9, - 0x0b, 0x42, 0x36, 0x33, 0xb8, 0xda, 0x9e, 0x88, 0x11, 0x21, 0xa0, 0xa9, 0x8d, 0x11, 0x36, 0x43, - 0x90, 0xba, 0xae, 0x8a, 0x11, 0x32, 0xa2, 0xaa, 0x9e, 0x00, 0x64, 0x22, 0x93, 0xaa, 0xbe, 0xa9, - 0x20, 0x31, 0x84, 0x9a, 0xcb, 0x88, 0x64, 0x23, 0x13, 0xbb, 0xdc, 0x9b, 0x18, 0x22, 0x14, 0xaa, - 0xc9, 0x8a, 0x72, 0x33, 0x14, 0xa9, 0xdb, 0xbb, 0x19, 0x13, 0x53, 0xb8, 0xa9, 0xab, 0x71, 0x24, - 0x43, 0xb8, 0xba, 0xbd, 0x0a, 0x13, 0x52, 0xb1, 0x99, 0xbb, 0x58, 0x26, 0x41, 0xa1, 0xaa, 0xcc, - 0x8a, 0x12, 0x40, 0x93, 0x8b, 0xbb, 0x3a, 0x47, 0x41, 0x92, 0xaa, 0xeb, 0x9a, 0x11, 0x30, 0x85, - 0x8a, 0xa9, 0x0b, 0x45, 0x22, 0x05, 0xaa, 0xca, 0xac, 0x20, 0x10, 0x15, 0x99, 0xa8, 0x8c, 0x53, - 0x12, 0x25, 0xba, 0xb9, 0xae, 0x18, 0x01, 0x43, 0xa8, 0x98, 0x9c, 0x51, 0x22, 0x63, 0xb8, 0x99, - 0xbd, 0x19, 0x01, 0x61, 0x90, 0x09, 0xba, 0x40, 0x23, 0x73, 0xa1, 0x9a, 0xcc, 0x89, 0x11, 0x40, - 0xa3, 0x1a, 0xca, 0x29, 0x25, 0x51, 0x93, 0x8c, 0xda, 0x8a, 0x00, 0x30, 0x05, 0x8a, 0xb0, 0x0a, - 0x34, 0x42, 0x05, 0x9b, 0xe9, 0x9b, 0x00, 0x01, 0x25, 0x8a, 0xa1, 0x8c, 0x32, 0x14, 0x35, 0xba, - 0xd8, 0xac, 0x88, 0x01, 0x34, 0xa0, 0x91, 0x9d, 0x21, 0x24, 0x62, 0xa0, 0xa9, 0xae, 0x89, 0x01, - 0x51, 0x91, 0x00, 0xbb, 0x10, 0x34, 0x72, 0xa2, 0x99, 0xdc, 0x99, 0x10, 0x30, 0x84, 0x00, 0xba, - 0x89, 0x63, 0x31, 0x86, 0x89, 0xeb, 0x9a, 0x18, 0x10, 0x06, 0x00, 0xa9, 0x8a, 0x40, 0x22, 0x16, - 0x89, 0xda, 0xab, 0x1a, 0x01, 0x26, 0x00, 0xa8, 0x9b, 0x28, 0x15, 0x26, 0x88, 0xc9, 0xbc, 0x8a, - 0x02, 0x44, 0x01, 0xa0, 0xbb, 0x19, 0x34, 0x45, 0x81, 0xb9, 0xbf, 0x99, 0x01, 0x52, 0x02, 0x80, - 0xac, 0x89, 0x32, 0x44, 0x03, 0xa9, 0xbf, 0xab, 0x10, 0x42, 0x14, 0x00, 0xcb, 0x8a, 0x30, 0x63, - 0x23, 0xa8, 0xec, 0x9b, 0x19, 0x31, 0x34, 0x81, 0xd9, 0xaa, 0x28, 0x34, 0x25, 0x90, 0xfa, 0xaa, - 0x0a, 0x22, 0x43, 0x02, 0xc9, 0xab, 0x19, 0x63, 0x33, 0x82, 0xfb, 0xbb, 0x8a, 0x21, 0x44, 0x12, - 0xb8, 0xac, 0x0a, 0x42, 0x34, 0x13, 0xe9, 0xbc, 0x9a, 0x20, 0x43, 0x33, 0xa8, 0xbd, 0x99, 0x40, - 0x25, 0x13, 0xb8, 0xaf, 0x9b, 0x18, 0x33, 0x34, 0x91, 0xad, 0xaa, 0x20, 0x26, 0x23, 0xa0, 0xcd, - 0xab, 0x1a, 0x33, 0x35, 0x01, 0xbc, 0xaa, 0x19, 0x36, 0x33, 0x81, 0xce, 0xaa, 0x8a, 0x32, 0x34, - 0x13, 0xdb, 0xaa, 0x8a, 0x54, 0x32, 0x02, 0xeb, 0xab, 0xab, 0x41, 0x43, 0x22, 0xc9, 0xaa, 0x9b, - 0x62, 0x33, 0x13, 0xe9, 0xbb, 0xac, 0x20, 0x34, 0x23, 0xb0, 0xbc, 0xbb, 0x60, 0x24, 0x23, 0xb8, - 0xbe, 0xca, 0x18, 0x33, 0x24, 0x91, 0xbc, 0xba, 0x49, 0x44, 0x23, 0xa1, 0xad, 0xac, 0x8b, 0x73, - 0x02, 0x01, 0x07, 0x7d, 0x0b, 0x02, 0x70, 0x02, 0x42, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x7f, 0x77, 0x92, 0x98, 0xb9, 0xce, 0x19, 0x62, 0x24, 0x81, 0xea, 0xac, 0x19, 0x24, 0x12, - 0xa9, 0xb8, 0xad, 0x9c, 0x20, 0x75, 0x23, 0x81, 0xeb, 0xaa, 0x18, 0x35, 0x01, 0x88, 0xc8, 0xbb, - 0x9b, 0x10, 0x74, 0x24, 0x80, 0xcd, 0x9a, 0x21, 0x12, 0x91, 0x98, 0xda, 0xbc, 0x09, 0x32, 0x57, - 0x23, 0xa1, 0xcc, 0x99, 0x31, 0x24, 0x88, 0x90, 0xcb, 0xbc, 0x19, 0x11, 0x55, 0x22, 0xc8, 0xbd, - 0x19, 0x42, 0x01, 0x89, 0xa9, 0xcc, 0x9a, 0x08, 0x52, 0x36, 0x23, 0xb8, 0x9f, 0x19, 0x22, 0x02, - 0x90, 0x98, 0xcc, 0xaa, 0x10, 0x21, 0x44, 0x14, 0xea, 0xab, 0x28, 0x24, 0x80, 0x98, 0xaa, 0xbd, - 0x99, 0x08, 0x64, 0x34, 0x02, 0xd9, 0x9a, 0x28, 0x24, 0x11, 0x80, 0xca, 0xbc, 0x8b, 0x80, 0x31, - 0x37, 0x82, 0xdc, 0x8a, 0x21, 0x04, 0x88, 0xa8, 0xa9, 0xbd, 0x89, 0x18, 0x55, 0x34, 0x81, 0xda, - 0x8a, 0x42, 0x02, 0x02, 0x98, 0xcb, 0xbc, 0x99, 0x18, 0x21, 0x36, 0x82, 0xbe, 0x19, 0x42, 0x81, - 0x80, 0xbb, 0xcb, 0x9d, 0xa9, 0x30, 0x47, 0x13, 0x80, 0xcb, 0x09, 0x44, 0x01, 0x11, 0x99, 0xdb, - 0x9b, 0x9a, 0x08, 0x40, 0x16, 0xa8, 0xab, 0x21, 0x35, 0x90, 0xa8, 0xac, 0xca, 0xad, 0x99, 0x51, - 0x54, 0x02, 0x98, 0xba, 0x38, 0x35, 0x01, 0x81, 0x9a, 0xfa, 0x9a, 0x9a, 0x81, 0x50, 0x03, 0xa8, - 0xab, 0x43, 0x26, 0xb8, 0xcb, 0x19, 0xd8, 0xbc, 0x0a, 0x35, 0x53, 0x01, 0xa0, 0x9b, 0x40, 0x44, - 0x00, 0x88, 0x88, 0xbd, 0xcb, 0x1b, 0x02, 0x43, 0x00, 0xc1, 0x0b, 0x45, 0x82, 0xaa, 0xaa, 0x80, - 0xed, 0xbb, 0x39, 0x26, 0x23, 0x82, 0xc8, 0x0a, 0x42, 0x13, 0x10, 0x00, 0xc0, 0xbf, 0xbb, 0x18, - 0x22, 0x24, 0x10, 0xc9, 0x19, 0x36, 0xc8, 0x9a, 0x08, 0xb0, 0xcf, 0x9a, 0x41, 0x33, 0x24, 0x00, - 0xca, 0x09, 0x32, 0x12, 0x32, 0x21, 0xf8, 0xaf, 0x9b, 0x11, 0x22, 0x02, 0x81, 0xbc, 0x28, 0x16, - 0xa9, 0x89, 0x08, 0xf8, 0xbe, 0x1a, 0x53, 0x22, 0x22, 0xa0, 0x9d, 0x18, 0x21, 0x31, 0x23, 0x02, - 0xee, 0xba, 0x0b, 0x32, 0x13, 0x11, 0xd0, 0x9c, 0x31, 0x02, 0x09, 0x98, 0x81, 0xff, 0xad, 0x28, - 0x33, 0x22, 0x24, 0xb9, 0x9c, 0x20, 0x22, 0x32, 0x22, 0x91, 0xff, 0x9b, 0x18, 0x12, 0x12, 0x02, - 0xda, 0x0a, 0x31, 0x90, 0x00, 0x98, 0xe1, 0xef, 0x8a, 0x31, 0x13, 0x22, 0x13, 0xdb, 0x09, 0x20, - 0x21, 0x43, 0x12, 0xd8, 0xbf, 0x0b, 0x21, 0x22, 0x20, 0x91, 0xdc, 0x19, 0x21, 0x80, 0x09, 0x08, - 0xf9, 0xcf, 0x19, 0x32, 0x12, 0x32, 0x93, 0xad, 0x09, 0x32, 0x03, 0x21, 0x00, 0xf0, 0xcf, 0x09, - 0x22, 0x01, 0x10, 0xa1, 0xac, 0x28, 0x14, 0x88, 0xb9, 0x28, 0xfb, 0xbf, 0x38, 0x14, 0x01, 0x22, - 0xa0, 0xab, 0x38, 0x15, 0x00, 0x81, 0x68, 0xf0, 0xac, 0x18, 0x22, 0x02, 0x00, 0xb9, 0x9b, 0x72, - 0x91, 0x89, 0x99, 0x20, 0xdf, 0x9b, 0x51, 0x12, 0x00, 0x22, 0xb9, 0x89, 0x42, 0x81, 0x08, 0x18, - 0x37, 0xec, 0x9b, 0x28, 0x23, 0x00, 0x81, 0xbb, 0x1a, 0x16, 0xa9, 0x99, 0x2a, 0x96, 0xcf, 0x89, - 0x42, 0x02, 0x00, 0x03, 0x99, 0x08, 0x03, 0xaa, 0x88, 0x70, 0x07, 0xbc, 0x9b, 0x41, 0x12, 0x00, - 0x81, 0xab, 0x19, 0x92, 0xae, 0x08, 0x60, 0xd0, 0xac, 0x1a, 0x35, 0x81, 0x20, 0x81, 0x08, 0x00, - 0xa9, 0xbb, 0x38, 0x77, 0xa3, 0xbd, 0x0b, 0x33, 0x02, 0x11, 0xb1, 0x9b, 0x09, 0xc9, 0x8c, 0x10, - 0x53, 0xfc, 0xba, 0x48, 0x24, 0x80, 0x21, 0x90, 0x10, 0xa9, 0xaa, 0x0c, 0x72, 0x26, 0xb8, 0xbd, - 0x19, 0x23, 0x02, 0x20, 0xb9, 0x9b, 0x99, 0xcc, 0x38, 0x11, 0x86, 0xbe, 0xaa, 0x61, 0x22, 0x01, - 0x01, 0x80, 0x00, 0xda, 0xbb, 0x48, 0x54, 0x04, 0xda, 0xac, 0x21, 0x22, 0x82, 0x80, 0xaa, 0x99, - 0x99, 0xab, 0x34, 0x50, 0xe1, 0xbd, 0x89, 0x34, 0x22, 0x11, 0x00, 0x89, 0xa0, 0xad, 0xaa, 0x63, - 0x45, 0x82, 0xdd, 0x8a, 0x32, 0x22, 0x80, 0x99, 0xbb, 0x89, 0x99, 0x2a, 0x15, 0x31, 0xfa, 0xad, - 0x09, 0x34, 0x22, 0x01, 0x81, 0x8a, 0xb8, 0xbd, 0x0a, 0x46, 0x35, 0xb0, 0xaf, 0x1a, 0x23, 0x22, - 0x88, 0xba, 0x8d, 0x91, 0x9a, 0x21, 0x31, 0x03, 0xcf, 0xaa, 0x39, 0x25, 0x22, 0x81, 0x91, 0x1a, - 0xe8, 0xac, 0x28, 0x55, 0x23, 0xf9, 0xab, 0x20, 0x13, 0x22, 0x98, 0xcc, 0x18, 0xa8, 0x00, 0x18, - 0x22, 0x82, 0xcf, 0xa9, 0x31, 0x12, 0x25, 0x08, 0xa8, 0x10, 0xcc, 0xac, 0x40, 0x46, 0x03, 0xbd, - 0x9b, 0x31, 0x32, 0x23, 0xea, 0xaa, 0x81, 0x89, 0x81, 0x08, 0x30, 0x85, 0xbb, 0xac, 0x40, 0x31, - 0x06, 0x08, 0x90, 0x80, 0xeb, 0x9c, 0x51, 0x44, 0x92, 0xbd, 0x8a, 0x32, 0x32, 0x83, 0xcd, 0x89, - 0x80, 0x28, 0xa8, 0x8a, 0x72, 0x83, 0xab, 0xbb, 0x21, 0x71, 0x02, 0x08, 0x08, 0xa2, 0xce, 0x8b, - 0x63, 0x35, 0xb0, 0xbc, 0x0a, 0x32, 0x43, 0xb2, 0xae, 0x08, 0x80, 0x81, 0xaa, 0x19, 0x56, 0x81, - 0x9a, 0xab, 0x18, 0x52, 0x91, 0x18, 0x20, 0xb0, 0xdf, 0x09, 0x62, 0x14, 0xb8, 0xab, 0x08, 0x23, - 0x25, 0xe8, 0x8a, 0x00, 0x00, 0xa8, 0xab, 0x50, 0x26, 0xa0, 0xa9, 0xab, 0x11, 0x53, 0x88, 0x10, - 0x02, 0xfb, 0xbb, 0x28, 0x57, 0x02, 0xba, 0xaa, 0x18, 0x34, 0x03, 0xbd, 0x09, 0x00, 0x80, 0xcb, - 0x8c, 0x73, 0x14, 0xa8, 0xca, 0x89, 0x21, 0x12, 0x08, 0x22, 0xb8, 0xce, 0x9b, 0x52, 0x35, 0x81, - 0xca, 0xab, 0x30, 0x34, 0xa1, 0xac, 0x10, 0x90, 0xb9, 0xbd, 0x39, 0x57, 0x03, 0xba, 0xbc, 0x19, - 0x33, 0x12, 0x19, 0x83, 0xcd, 0xac, 0x18, 0x44, 0x32, 0x92, 0xbd, 0x9b, 0x50, 0x33, 0xa8, 0x8b, - 0x02, 0xcb, 0xbc, 0x9a, 0x72, 0x44, 0x92, 0xbc, 0xab, 0x20, 0x34, 0x01, 0x20, 0xd1, 0xbc, 0x8a, - 0x30, 0x35, 0x33, 0xc1, 0xbd, 0x9a, 0x63, 0x02, 0x99, 0x10, 0xb8, 0xac, 0x9a, 0x09, 0x65, 0x33, - 0xb8, 0xae, 0x9b, 0x41, 0x23, 0x00, 0x02, 0xfb, 0xaa, 0x18, 0x31, 0x43, 0x23, 0xd9, 0xac, 0x0b, - 0x45, 0x00, 0x88, 0x00, 0xca, 0xab, 0x98, 0x30, 0x47, 0x12, 0xd9, 0xab, 0x8b, 0x63, 0x12, 0x00, - 0x91, 0xbd, 0x8a, 0x00, 0x31, 0x34, 0x13, 0xda, 0xbc, 0x2a, 0x26, 0x00, 0x00, 0x91, 0xbd, 0x9a, - 0x89, 0x72, 0x23, 0x01, 0xcc, 0xbb, 0x0a, 0x27, 0x11, 0x10, 0xc9, 0xab, 0x08, 0x00, 0x42, 0x23, - 0x83, 0xcc, 0xad, 0x38, 0x25, 0x00, 0x00, 0xc8, 0xac, 0x89, 0x18, 0x46, 0x01, 0x90, 0xad, 0xbb, - 0x40, 0x25, 0x01, 0x90, 0xda, 0x8a, 0x08, 0x10, 0x43, 0x11, 0x91, 0xeb, 0x9c, 0x40, 0x23, 0x11, - 0x80, 0xdc, 0x9a, 0x98, 0x30, 0x27, 0x10, 0xb8, 0xbc, 0x9c, 0x61, 0x13, 0x00, 0x98, 0xad, 0x08, - 0x98, 0x10, 0x32, 0x42, 0x93, 0xdd, 0x9a, 0x51, 0x23, 0x00, 0xb8, 0xad, 0x89, 0x98, 0x61, 0x03, - 0x80, 0xc9, 0xac, 0x8a, 0x55, 0x12, 0x88, 0xc9, 0x9a, 0x81, 0x98, 0x30, 0x33, 0x34, 0xc2, 0xbe, - 0x9a, 0x54, 0x03, 0x80, 0xda, 0x99, 0x88, 0x88, 0x53, 0x02, 0x88, 0xdb, 0xab, 0x38, 0x57, 0x00, - 0x98, 0xbb, 0x08, 0x81, 0x9b, 0x31, 0x53, 0x15, 0xb9, 0xbc, 0x19, 0x47, 0x00, 0xa0, 0x9b, 0x88, - 0xa8, 0x09, 0x25, 0x02, 0xc9, 0xac, 0x89, 0x51, 0x26, 0x88, 0xa8, 0xaa, 0x10, 0xe9, 0x0a, 0x21, - 0x44, 0x03, 0xba, 0xac, 0x2a, 0x47, 0x80, 0x98, 0x89, 0x99, 0xb9, 0x29, 0x33, 0x80, 0xb8, 0x9b, - 0xa1, 0x7a, 0x37, 0x8a, 0xa0, 0x99, 0x11, 0xdd, 0xab, 0x41, 0x45, 0x01, 0xa9, 0xaa, 0x39, 0x17, - 0x00, 0xa8, 0x99, 0x08, 0xca, 0x0a, 0x80, 0x38, 0x84, 0x38, 0xa5, 0x2c, 0x94, 0x40, 0xc9, 0x09, - 0x80, 0xcf, 0x9a, 0x62, 0x33, 0x91, 0x9a, 0xca, 0x59, 0x03, 0x12, 0xa9, 0x8a, 0xa1, 0xbf, 0x89, - 0x88, 0x62, 0x82, 0x32, 0xfa, 0x1a, 0x10, 0x13, 0x9a, 0x10, 0xe8, 0xbe, 0x19, 0x53, 0x23, 0x80, - 0x81, 0xdd, 0x20, 0x01, 0x02, 0x9a, 0x11, 0xe8, 0x9c, 0x89, 0x00, 0x34, 0x32, 0x93, 0xdf, 0x08, - 0x22, 0x92, 0x09, 0x90, 0xdc, 0xac, 0x21, 0x44, 0x03, 0x10, 0xd8, 0x9d, 0x21, 0x21, 0x80, 0x08, - 0xa1, 0xdc, 0x9b, 0x88, 0x32, 0x37, 0x12, 0xe8, 0xac, 0x20, 0x32, 0x98, 0x10, 0xa8, 0xce, 0x8a, - 0x21, 0x44, 0x12, 0x82, 0xdc, 0x8a, 0x21, 0x23, 0x88, 0x10, 0xc9, 0xbd, 0x9a, 0x10, 0x54, 0x34, - 0x90, 0xdc, 0x8b, 0x41, 0x03, 0x89, 0x91, 0xda, 0xab, 0x08, 0x63, 0x32, 0x14, 0xb8, 0xbe, 0x09, - 0x43, 0x02, 0x00, 0x90, 0xeb, 0xab, 0x8a, 0x42, 0x45, 0x03, 0xba, 0xdc, 0x1a, 0x33, 0x02, 0x08, - 0xa8, 0xbd, 0x9b, 0x28, 0x44, 0x44, 0x02, 0xcb, 0xcb, 0x18, 0x24, 0x02, 0x00, 0xc8, 0xac, 0x9b, - 0x09, 0x54, 0x25, 0x90, 0xba, 0xbc, 0x49, 0x24, 0x80, 0x88, 0xba, 0xaa, 0x99, 0x31, 0x46, 0x25, - 0xa0, 0xcb, 0x9c, 0x30, 0x34, 0x01, 0xa0, 0xbc, 0xac, 0x99, 0x31, 0x47, 0x03, 0xb9, 0xdb, 0x9b, - 0x52, 0x03, 0x80, 0xa8, 0xab, 0x9a, 0x88, 0x51, 0x64, 0x13, 0xb8, 0xcc, 0x9a, 0x51, 0x22, 0x01, - 0xc9, 0xba, 0x9a, 0x88, 0x52, 0x36, 0x82, 0xcb, 0xbb, 0x1b, 0x45, 0x01, 0x98, 0xaa, 0x89, 0x98, - 0x88, 0x42, 0x47, 0x02, 0xba, 0xcc, 0x09, 0x34, 0x13, 0xa0, 0xbc, 0xab, 0x89, 0x18, 0x74, 0x24, - 0xa0, 0xbb, 0xbc, 0x28, 0x26, 0x81, 0x9a, 0x9a, 0x08, 0x98, 0x89, 0x73, 0x36, 0x90, 0xba, 0xad, - 0x28, 0x35, 0x01, 0xa9, 0xac, 0x9a, 0x08, 0x20, 0x55, 0x23, 0xc9, 0xcb, 0x9a, 0x40, 0x15, 0x98, - 0x8a, 0x89, 0x80, 0x99, 0x18, 0x65, 0x33, 0xb8, 0xcc, 0x9b, 0x61, 0x23, 0x90, 0xca, 0xaa, 0x09, - 0x00, 0x41, 0x44, 0x02, 0xdb, 0xba, 0x8a, 0x73, 0x82, 0x99, 0x99, 0x08, 0x88, 0x88, 0x58, 0x45, - 0x03, 0xca, 0xdb, 0x1a, 0x63, 0x02, 0xa8, 0xba, 0x9a, 0x00, 0x10, 0x53, 0x43, 0xa2, 0xbd, 0xbb, - 0x2a, 0x36, 0x91, 0x99, 0x9a, 0x08, 0x90, 0x89, 0x55, 0x54, 0x92, 0xcb, 0xac, 0x39, 0x26, 0x81, - 0xa9, 0xab, 0x88, 0x00, 0x21, 0x43, 0x44, 0xb8, 0xbc, 0xcb, 0x38, 0x15, 0x90, 0x99, 0x89, 0x00, - 0xa8, 0x30, 0x46, 0x36, 0xa0, 0xbd, 0x9c, 0x51, 0x23, 0x98, 0xba, 0x9b, 0x08, 0x10, 0x23, 0x73, - 0x13, 0xca, 0xdb, 0x9c, 0x31, 0x13, 0x80, 0x98, 0x8b, 0x98, 0x1a, 0x21, 0x77, 0x24, 0xb9, 0xcc, - 0x0a, 0x52, 0x12, 0xa8, 0xb9, 0x8a, 0x00, 0x10, 0x18, 0x55, 0x12, 0xba, 0xcd, 0x8b, 0x22, 0x12, - 0x00, 0xb9, 0x08, 0x10, 0x00, 0x4a, 0x77, 0x03, 0xda, 0xbb, 0x39, 0x34, 0x03, 0xa9, 0xcc, 0x09, - 0x11, 0x81, 0x48, 0x34, 0x82, 0xcd, 0xbc, 0x19, 0x12, 0x33, 0x90, 0xab, 0x00, 0x00, 0xb8, 0x73, - 0x57, 0x81, 0xcb, 0xab, 0x30, 0x33, 0x03, 0xca, 0xbb, 0x28, 0x02, 0x9b, 0x44, 0x45, 0xa2, 0xbd, - 0x9d, 0x08, 0x20, 0x14, 0x99, 0x88, 0x21, 0x80, 0x9b, 0x64, 0x53, 0xb0, 0xbc, 0x9b, 0x32, 0x44, - 0x91, 0xca, 0x8a, 0x21, 0x91, 0x19, 0x34, 0x35, 0xd8, 0xbd, 0xab, 0x10, 0x53, 0x82, 0xa9, 0x18, - 0x12, 0x98, 0x38, 0x37, 0x25, 0xe9, 0xbb, 0x0a, 0x32, 0x25, 0xa0, 0xaa, 0x0a, 0x12, 0x89, 0x52, - 0x32, 0x17, 0xdb, 0xbc, 0x8b, 0x21, 0x44, 0x90, 0x88, 0x28, 0x90, 0x0a, 0x51, 0x34, 0x05, 0xda, - 0xac, 0x19, 0x31, 0x23, 0xb8, 0xaa, 0x28, 0xa0, 0x18, 0x33, 0x75, 0x84, 0xdb, 0xcc, 0x09, 0x11, - 0x33, 0x89, 0x10, 0x11, 0x9a, 0x00, 0x31, 0x66, 0x93, 0xcc, 0xac, 0x20, 0x21, 0x14, 0xa9, 0x9a, - 0x02, 0x08, 0x01, 0x11, 0x65, 0xa1, 0xce, 0xac, 0x01, 0x11, 0x13, 0x18, 0x11, 0x90, 0x0a, 0x22, - 0x73, 0x33, 0xf8, 0xcc, 0x0a, 0x22, 0x21, 0x03, 0xab, 0x19, 0xa8, 0x20, 0x14, 0x32, 0x26, 0xfa, - 0xbf, 0x09, 0x01, 0x30, 0x03, 0x00, 0x02, 0xba, 0x28, 0x21, 0x37, 0x14, 0xfb, 0xac, 0x18, 0x02, - 0x31, 0x93, 0x9a, 0x90, 0x9a, 0x31, 0x43, 0x53, 0x13, 0xff, 0xbb, 0x18, 0x00, 0x51, 0x02, 0x11, - 0x98, 0x9b, 0x08, 0x52, 0x34, 0x92, 0xcf, 0x9a, 0x11, 0x80, 0x53, 0x91, 0x08, 0x89, 0x9a, 0x10, - 0x42, 0x53, 0xa1, 0xef, 0x8a, 0x00, 0x09, 0x42, 0x11, 0x02, 0xa9, 0x9a, 0x28, 0x44, 0x33, 0xf8, - 0xbc, 0x19, 0x01, 0x20, 0x24, 0x90, 0x88, 0x98, 0x9b, 0x52, 0x33, 0x24, 0xfa, 0xbf, 0x89, 0x00, - 0x20, 0x24, 0x11, 0x90, 0x9a, 0x8b, 0x63, 0x33, 0x02, 0xed, 0xab, 0x28, 0x01, 0x41, 0x13, 0x98, - 0x89, 0xca, 0x09, 0x45, 0x22, 0x81, 0xdf, 0xab, 0x08, 0x08, 0x33, 0x25, 0x82, 0xa9, 0xba, 0x39, - 0x27, 0x12, 0x91, 0xcf, 0x9a, 0x11, 0x11, 0x32, 0x13, 0x99, 0xc9, 0xab, 0x48, 0x25, 0x22, 0xb1, - 0xff, 0x9a, 0x08, 0x20, 0x21, 0x24, 0x80, 0xba, 0xaa, 0x51, 0x24, 0x11, 0xc8, 0xbe, 0x0a, 0x21, - 0x12, 0x42, 0x82, 0x89, 0xba, 0x9b, 0x52, 0x43, 0x22, 0xf8, 0xbf, 0x99, 0x10, 0x21, 0x42, 0x12, - 0xa8, 0xbb, 0x1a, 0x54, 0x22, 0x81, 0xfa, 0xac, 0x18, 0x12, 0x12, 0x32, 0x91, 0xa9, 0xbb, 0x09, - 0x53, 0x22, 0x34, 0xfd, 0x9f, 0x88, 0x10, 0x01, 0x32, 0x03, 0xaa, 0xab, 0x30, 0x25, 0x02, 0xa0, - 0xdf, 0x8a, 0x21, 0x12, 0x21, 0x13, 0xa1, 0xaa, 0x89, 0xa9, 0x20, 0x45, 0x93, 0xff, 0x8d, 0x08, - 0x01, 0x11, 0x33, 0x91, 0xbb, 0x08, 0x21, 0x34, 0x81, 0xea, 0xbf, 0x29, 0x32, 0x21, 0x12, 0x31, - 0xb9, 0x19, 0x90, 0xbd, 0x18, 0x44, 0xf1, 0xbf, 0x88, 0x00, 0x12, 0x12, 0x25, 0xa9, 0x99, 0x10, - 0x20, 0x14, 0xa8, 0xfc, 0x8c, 0x20, 0x23, 0x22, 0x88, 0x02, 0x8b, 0x23, 0xda, 0x9b, 0x31, 0x23, - 0xff, 0x9d, 0x80, 0x00, 0x12, 0x21, 0x04, 0xaa, 0x00, 0x10, 0x40, 0x84, 0xcb, 0xbe, 0x1a, 0x24, - 0x33, 0x02, 0x0a, 0xa1, 0x59, 0x84, 0xcb, 0x8a, 0x21, 0xa1, 0xef, 0x89, 0x88, 0x21, 0x12, 0x31, - 0x92, 0x8c, 0x01, 0x88, 0x63, 0xb1, 0xcd, 0x9c, 0x20, 0x25, 0x32, 0x90, 0x0a, 0x81, 0x62, 0xb0, - 0xad, 0x19, 0x11, 0xc0, 0xad, 0x99, 0x89, 0x32, 0x25, 0x31, 0xc1, 0x19, 0x98, 0x19, 0x25, 0xea, - 0xad, 0x09, 0x62, 0x13, 0x02, 0xa9, 0x29, 0x13, 0x14, 0xdc, 0x9b, 0x08, 0x02, 0xaa, 0xdb, 0x89, - 0xaa, 0x72, 0x12, 0x42, 0xa8, 0x88, 0x9b, 0x42, 0x92, 0xdf, 0x89, 0x18, 0x36, 0x01, 0x81, 0xab, - 0x51, 0x22, 0xb1, 0xbd, 0x9a, 0x18, 0x00, 0x90, 0x9c, 0xb8, 0x8e, 0x43, 0x10, 0x33, 0xb9, 0x99, - 0x39, 0x16, 0xfb, 0xac, 0x08, 0x71, 0x23, 0x10, 0xa8, 0x8c, 0x43, 0x11, 0xba, 0xab, 0xab, 0x18, - 0x10, 0xc0, 0x1a, 0xfc, 0x2a, 0x23, 0x30, 0x83, 0xaf, 0x18, 0x23, 0x91, 0xdd, 0x9c, 0x10, 0x56, - 0x01, 0x80, 0xb9, 0x18, 0x24, 0x98, 0x9a, 0xca, 0x8a, 0x11, 0x20, 0x98, 0xa2, 0xff, 0x10, 0x11, - 0x10, 0xb0, 0x9c, 0x31, 0x02, 0xa9, 0xec, 0x8b, 0x62, 0x17, 0x00, 0x98, 0x99, 0x38, 0x03, 0xaa, - 0x99, 0xbd, 0x28, 0x81, 0x28, 0x41, 0xf1, 0x8c, 0x20, 0x12, 0x98, 0xdc, 0x19, 0x33, 0x90, 0xa0, - 0xcf, 0x08, 0x64, 0x12, 0x88, 0x98, 0x98, 0x40, 0xb0, 0x89, 0xa9, 0xab, 0x33, 0x9a, 0x53, 0x14, - 0xdd, 0x89, 0x42, 0x91, 0xba, 0xad, 0x31, 0x03, 0x28, 0xf0, 0xac, 0x40, 0x26, 0x81, 0x80, 0x98, - 0x89, 0x12, 0xc9, 0x99, 0xaa, 0x4a, 0x94, 0x09, 0x53, 0xb1, 0xbd, 0x28, 0x24, 0xb9, 0xcc, 0x8a, - 0x33, 0x81, 0x32, 0xfc, 0x8b, 0x54, 0x23, 0x80, 0x80, 0xa9, 0x18, 0x80, 0xdb, 0x9a, 0x9a, 0x52, - 0x98, 0x71, 0x12, 0xca, 0xab, 0x32, 0x82, 0xfb, 0xab, 0x19, 0x32, 0x11, 0xa2, 0xcf, 0x48, 0x44, - 0x02, 0x80, 0x98, 0x99, 0x08, 0x80, 0xbc, 0x99, 0x08, 0x00, 0x39, 0x77, 0x81, 0xca, 0x09, 0x21, - 0xa8, 0xce, 0x89, 0x20, 0x13, 0x80, 0xd9, 0x0a, 0x63, 0x34, 0x11, 0x80, 0xa9, 0x99, 0x99, 0xb0, - 0x9f, 0x01, 0x90, 0x08, 0x44, 0x23, 0xc0, 0x9e, 0x10, 0x01, 0xeb, 0xac, 0x08, 0x30, 0x04, 0xa9, - 0x99, 0x11, 0x74, 0x05, 0x10, 0x88, 0x99, 0x98, 0x89, 0xb8, 0x2b, 0x93, 0x9c, 0x42, 0x15, 0x33, - 0xea, 0x8a, 0x00, 0xb0, 0xcf, 0x9b, 0x08, 0x63, 0x91, 0x9a, 0x20, 0x11, 0x56, 0x01, 0x00, 0x88, - 0x99, 0xa9, 0x9b, 0xba, 0x62, 0xb0, 0x29, 0x25, 0x11, 0x83, 0xae, 0x88, 0x11, 0xfb, 0xcc, 0x9a, - 0x30, 0x15, 0xa9, 0x28, 0x11, 0x51, 0x16, 0x80, 0x90, 0x88, 0x00, 0xc9, 0x9c, 0x19, 0x02, 0x9a, - 0x73, 0x02, 0x30, 0xd1, 0x8b, 0x09, 0x90, 0xfb, 0xcc, 0x8a, 0x42, 0x82, 0x8b, 0x32, 0x02, 0x74, - 0x83, 0x88, 0x98, 0x18, 0x01, 0xfc, 0x89, 0x01, 0x80, 0x19, 0x24, 0x01, 0x32, 0xea, 0x89, 0x89, - 0xa0, 0xdd, 0xbd, 0x29, 0x24, 0xa8, 0x19, 0x23, 0x32, 0x47, 0x90, 0x88, 0x88, 0x20, 0x91, 0xdf, - 0x00, 0x01, 0x89, 0x11, 0x02, 0x30, 0x04, 0xac, 0x98, 0x19, 0xe8, 0xcd, 0x9d, 0x31, 0x82, 0x8a, - 0x11, 0x32, 0x72, 0x04, 0x99, 0x88, 0x10, 0x12, 0xf8, 0x8e, 0x11, 0x90, 0x10, 0x11, 0x08, 0x28, - 0xa3, 0x8e, 0x08, 0x11, 0xea, 0xce, 0x8a, 0x14, 0x90, 0x00, 0x11, 0x02, 0x62, 0x82, 0x9b, 0x10, - 0x22, 0x83, 0xdf, 0x0b, 0x03, 0x08, 0x32, 0x81, 0x98, 0x40, 0xd8, 0x1a, 0x20, 0x83, 0xdf, 0xcd, - 0x18, 0x12, 0x09, 0x11, 0x12, 0x00, 0x54, 0xb8, 0x09, 0x31, 0x33, 0xe1, 0xcd, 0x29, 0x01, 0x28, - 0x13, 0x90, 0x9a, 0x22, 0xbd, 0x21, 0x42, 0xd1, 0xcf, 0xbb, 0x41, 0x81, 0x10, 0x11, 0x11, 0x38, - 0x07, 0xba, 0x11, 0x22, 0x12, 0xfa, 0x9d, 0x10, 0x01, 0x22, 0x02, 0xc9, 0x09, 0xa2, 0x1c, 0x15, - 0x01, 0xfa, 0xbd, 0x8b, 0x23, 0x00, 0x21, 0x11, 0x91, 0x72, 0x94, 0x8a, 0x11, 0x21, 0x81, 0xcd, - 0x9c, 0x22, 0x21, 0x32, 0xa1, 0xbd, 0x28, 0xa8, 0x72, 0x83, 0xa8, 0xde, 0xcb, 0x09, 0x13, 0x01, - 0x22, 0x00, 0x09, 0x45, 0xa0, 0x28, 0x02, 0x20, 0xa2, 0xef, 0x89, 0x22, 0x21, 0x04, 0xb9, 0x9d, - 0x01, 0x18, 0x26, 0xa0, 0xba, 0xcd, 0xac, 0x18, 0x13, 0x20, 0x04, 0x98, 0x38, 0x16, 0x98, 0x12, - 0x99, 0x31, 0xb2, 0xdf, 0x19, 0x23, 0x42, 0xa2, 0xcc, 0x09, 0x00, 0x52, 0x03, 0xca, 0xac, 0xdb, - 0x8c, 0x20, 0x02, 0x32, 0x80, 0x98, 0x63, 0x02, 0x10, 0x98, 0x9a, 0x73, 0xc0, 0xac, 0x38, 0x25, - 0x12, 0xb8, 0xbd, 0x18, 0x30, 0x35, 0x91, 0xbd, 0xab, 0xbe, 0x0a, 0x21, 0x22, 0x13, 0x10, 0x18, - 0x34, 0x43, 0xa2, 0xba, 0x3b, 0x47, 0xda, 0xab, 0x50, 0x24, 0x00, 0xaa, 0xac, 0x10, 0x44, 0x02, - 0xb8, 0xae, 0xb9, 0xad, 0x88, 0x41, 0x11, 0x11, 0x00, 0x01, 0x42, 0x33, 0xc9, 0xaa, 0x61, 0x93, - 0xdb, 0x9c, 0x54, 0x01, 0x80, 0xaa, 0x9b, 0x41, 0x34, 0x01, 0xeb, 0xab, 0xcb, 0x9b, 0x19, 0x34, - 0x01, 0x12, 0x01, 0x30, 0x36, 0x14, 0xcb, 0x08, 0x22, 0xb8, 0xce, 0x29, 0x36, 0x01, 0x98, 0xdb, - 0x1a, 0x52, 0x13, 0x98, 0xda, 0xbc, 0xab, 0xaa, 0x31, 0x34, 0x11, 0x12, 0xb8, 0x73, 0x42, 0x91, - 0x8c, 0x11, 0x88, 0xa8, 0xad, 0x41, 0x37, 0x88, 0xa9, 0xbc, 0x20, 0x54, 0x81, 0x90, 0xdb, 0xac, - 0x9a, 0x88, 0x20, 0x34, 0x81, 0x80, 0x2b, 0x26, 0x43, 0xb8, 0x29, 0xa8, 0xa9, 0x88, 0x89, 0x71, - 0x57, 0x98, 0xb9, 0x8b, 0x42, 0x23, 0x08, 0xb1, 0xdf, 0x9b, 0x09, 0x80, 0x38, 0x16, 0x88, 0x99, - 0x40, 0x23, 0x01, 0x8a, 0x92, 0xac, 0x0a, 0x32, 0xb0, 0x74, 0x17, 0xaa, 0xaa, 0x28, 0x13, 0x13, - 0x11, 0xf9, 0xbf, 0x8a, 0x08, 0x80, 0x52, 0x02, 0xaa, 0x0a, 0x45, 0x01, 0x00, 0x09, 0xc8, 0x99, - 0x28, 0x15, 0x09, 0x65, 0xa1, 0xab, 0x8b, 0x32, 0x01, 0x24, 0x91, 0xcf, 0xac, 0x09, 0x80, 0x10, - 0x35, 0xb0, 0x9b, 0x58, 0x15, 0x08, 0x01, 0x98, 0xac, 0x88, 0x41, 0x02, 0x39, 0x37, 0xca, 0xaa, - 0x30, 0x92, 0x59, 0x13, 0xca, 0xce, 0x9a, 0x18, 0x80, 0x48, 0x05, 0xba, 0x09, 0x63, 0x81, 0x21, - 0x91, 0xcb, 0x8a, 0x28, 0x34, 0x82, 0x50, 0x93, 0xae, 0x0a, 0x31, 0xa8, 0x64, 0x91, 0xdb, 0xbb, - 0x8b, 0x11, 0x08, 0x44, 0xa2, 0xad, 0x20, 0x34, 0x11, 0x33, 0xe9, 0x9c, 0x08, 0x30, 0x24, 0x00, - 0x11, 0xc0, 0xad, 0x18, 0x12, 0x2a, 0x47, 0xb9, 0xbc, 0xbb, 0x18, 0x80, 0x28, 0x35, 0xd8, 0x8b, - 0x31, 0x36, 0x31, 0x93, 0xaf, 0x9a, 0x11, 0x33, 0x23, 0x90, 0x00, 0xe9, 0x9b, 0x29, 0x04, 0x70, - 0x93, 0xad, 0xcb, 0x0a, 0x80, 0x88, 0x30, 0x05, 0xba, 0x8a, 0x72, 0x24, 0x23, 0xd9, 0xab, 0x0a, - 0x43, 0x22, 0x12, 0x88, 0x89, 0xca, 0xbb, 0x71, 0x02, 0x42, 0xd9, 0xcb, 0xab, 0x88, 0x89, 0x88, - 0x35, 0x92, 0xdb, 0x09, 0x74, 0x23, 0x81, 0xdb, 0x9a, 0x20, 0x23, 0x22, 0x12, 0xb0, 0x9b, 0xea, - 0x8c, 0x44, 0x01, 0x81, 0xdb, 0xac, 0x8a, 0x9a, 0x89, 0x41, 0x23, 0xb8, 0xbe, 0x38, 0x67, 0x02, - 0x98, 0xba, 0x09, 0x22, 0x22, 0x33, 0x02, 0xfa, 0x0a, 0xca, 0x49, 0x24, 0x90, 0x98, 0xbc, 0xaa, - 0xcb, 0xaa, 0x31, 0x32, 0x92, 0xd9, 0x9e, 0x73, 0x24, 0x91, 0xa9, 0xaa, 0x20, 0x22, 0x63, 0x23, - 0xa9, 0xbd, 0x80, 0xab, 0x55, 0x82, 0xaa, 0x9a, 0x89, 0xda, 0xac, 0x10, 0x03, 0xb9, 0x0a, 0x92, - 0x2e, 0x77, 0x81, 0x98, 0x88, 0x08, 0x08, 0x42, 0x23, 0xa8, 0xca, 0x8c, 0x91, 0x3a, 0x47, 0xa8, - 0x9b, 0x01, 0xb9, 0xbc, 0x0a, 0x11, 0xc9, 0x9a, 0x40, 0x91, 0x71, 0x27, 0x98, 0x09, 0x80, 0x00, - 0x29, 0x36, 0x82, 0xbb, 0xbb, 0x0b, 0x91, 0x74, 0x86, 0xba, 0x19, 0x81, 0xba, 0x9c, 0x00, 0x90, - 0xbc, 0x89, 0x40, 0x22, 0x77, 0x91, 0x99, 0x10, 0x00, 0x90, 0x41, 0x24, 0xb8, 0x9c, 0xb8, 0x1a, - 0x31, 0x37, 0xc8, 0xab, 0x41, 0xa0, 0xcb, 0x0a, 0x88, 0xca, 0x8a, 0x88, 0x62, 0x53, 0x15, 0xb9, - 0x89, 0x32, 0x82, 0x18, 0x45, 0x01, 0xbd, 0x08, 0xba, 0x20, 0x73, 0x83, 0xcc, 0x0a, 0x13, 0xc8, - 0x9b, 0x80, 0xa9, 0xcb, 0x81, 0x0b, 0x56, 0x43, 0x92, 0xbc, 0x28, 0x24, 0x00, 0x30, 0x13, 0xd0, - 0x8d, 0x90, 0xab, 0x51, 0x24, 0xc1, 0xac, 0x28, 0x83, 0xbc, 0x89, 0xa8, 0x99, 0x0a, 0xd0, 0x2b, - 0x67, 0x22, 0xc8, 0x8a, 0x31, 0x22, 0x18, 0x21, 0x00, 0xcc, 0x20, 0xea, 0x8b, 0x63, 0x03, 0xdb, - 0x0a, 0x12, 0xa0, 0x9c, 0x99, 0x99, 0x09, 0x12, 0xde, 0x38, 0x37, 0x81, 0xbb, 0x18, 0x43, 0x12, - 0x00, 0x00, 0x98, 0x0c, 0x83, 0xcf, 0x2a, 0x35, 0xb0, 0x9d, 0x10, 0x10, 0xb9, 0x9a, 0xa9, 0x09, - 0x30, 0xf2, 0xaf, 0x62, 0x13, 0xa9, 0x8a, 0x11, 0x43, 0x01, 0x08, 0x90, 0x89, 0x21, 0xf9, 0xac, - 0x51, 0x13, 0xdb, 0x09, 0x00, 0x81, 0xac, 0x9a, 0x08, 0x11, 0x82, 0xfd, 0x1b, 0x55, 0x01, 0xaa, - 0x08, 0x20, 0x24, 0x00, 0x80, 0x88, 0x08, 0x90, 0xdd, 0x0a, 0x54, 0x91, 0x9c, 0x88, 0x01, 0xa9, - 0xac, 0x09, 0x13, 0x01, 0xd9, 0xaf, 0x48, 0x44, 0x91, 0x8a, 0x08, 0x31, 0x13, 0x88, 0x10, 0x90, - 0x08, 0xd9, 0xad, 0x18, 0x45, 0xc0, 0x8b, 0x00, 0xb8, 0xcb, 0xac, 0x52, 0x81, 0x90, 0xea, 0x9b, - 0x53, 0x35, 0x98, 0x0a, 0x00, 0x41, 0x02, 0x18, 0x81, 0x99, 0x89, 0xb9, 0x9d, 0x28, 0x47, 0xda, - 0x08, 0xa0, 0x9c, 0xba, 0x39, 0x25, 0x80, 0xbb, 0xdb, 0x1b, 0x65, 0x14, 0x99, 0x81, 0x99, 0x32, - 0x11, 0x22, 0xb8, 0x99, 0x09, 0xc1, 0xbc, 0x5a, 0x07, 0x8b, 0x81, 0xdc, 0x9b, 0x8a, 0x42, 0x13, - 0xb0, 0x8c, 0xda, 0x19, 0x55, 0x03, 0x80, 0xa8, 0x8a, 0x43, 0x23, 0x80, 0x8a, 0xab, 0x54, 0xc0, - 0xab, 0x49, 0x04, 0x88, 0xf9, 0xbc, 0x0a, 0x00, 0x43, 0x82, 0xba, 0x81, 0xae, 0x28, 0x55, 0x04, - 0x90, 0xba, 0x1a, 0x34, 0x02, 0x88, 0xa9, 0x4a, 0x06, 0xaa, 0xbb, 0x71, 0x02, 0xaa, 0xeb, 0xab, - 0x00, 0x30, 0x25, 0xa8, 0x1a, 0xa0, 0xac, 0x40, 0x57, 0x81, 0x99, 0xab, 0x48, 0x13, 0x80, 0x90, - 0x8a, 0x63, 0xa2, 0xdb, 0x09, 0x34, 0xa0, 0xbc, 0xbd, 0x09, 0x00, 0x53, 0x81, 0x99, 0x11, 0xe9, - 0x9a, 0x73, 0x24, 0xa0, 0xba, 0x9a, 0x53, 0x01, 0x81, 0x99, 0x48, 0x15, 0xc9, 0x9b, 0x31, 0x14, - 0xcb, 0xac, 0xbb, 0x09, 0x51, 0x13, 0x80, 0x18, 0xa2, 0xce, 0x28, 0x46, 0x02, 0xb9, 0xbb, 0x08, - 0x34, 0x12, 0xa9, 0x29, 0x46, 0xa2, 0xbc, 0x18, 0x22, 0xa0, 0xcf, 0x99, 0xab, 0x28, 0x25, 0x01, - 0x00, 0x11, 0xda, 0x8c, 0x52, 0x24, 0x80, 0xcb, 0x9a, 0x18, 0x44, 0x91, 0x89, 0x52, 0x23, 0xda, - 0x8a, 0x11, 0x00, 0xeb, 0x9b, 0xcb, 0x8c, 0x43, 0x02, 0x11, 0x11, 0xa0, 0xbe, 0x20, 0x34, 0x13, - 0xa8, 0xbd, 0xab, 0x61, 0x05, 0x99, 0x30, 0x25, 0x90, 0xab, 0x01, 0x89, 0xd9, 0xab, 0xda, 0xbd, - 0x28, 0x24, 0x10, 0x42, 0x81, 0xba, 0x0b, 0x22, 0x45, 0x80, 0x90, 0xbf, 0x0a, 0x73, 0x81, 0x0a, - 0x53, 0x82, 0x99, 0x08, 0xa8, 0xba, 0x9d, 0xa0, 0xbe, 0x9c, 0x42, 0x02, 0x30, 0x14, 0xa9, 0x98, - 0x80, 0x00, 0x03, 0x73, 0xe0, 0x9c, 0x28, 0x24, 0xa9, 0x50, 0x24, 0x88, 0x08, 0x90, 0xcc, 0x9a, - 0x18, 0xe9, 0xbb, 0x19, 0x24, 0x11, 0x53, 0x91, 0x0a, 0x81, 0x9a, 0x99, 0x61, 0x15, 0xeb, 0x8a, - 0x41, 0x82, 0x0a, 0x44, 0x02, 0x20, 0x90, 0xfa, 0x9c, 0x08, 0x80, 0xdb, 0x8a, 0x20, 0x22, 0x33, - 0x23, 0xa9, 0x63, 0xc8, 0xcb, 0x18, 0x34, 0xa2, 0xbf, 0x28, 0x13, 0x80, 0x40, 0x34, 0x22, 0x12, - 0xd9, 0xbf, 0x0a, 0x80, 0xa8, 0xbd, 0x18, 0x10, 0x44, 0x02, 0x00, 0x20, 0x03, 0xce, 0x9b, 0x42, - 0x12, 0xc8, 0x8d, 0x12, 0x10, 0x00, 0x32, 0x35, 0x24, 0x91, 0xed, 0x9b, 0x00, 0x88, 0xc9, 0x8b, - 0x00, 0x60, 0x23, 0x80, 0x10, 0x32, 0xe0, 0xbd, 0x28, 0x23, 0x91, 0xdb, 0x18, 0x11, 0x21, 0x21, - 0x44, 0x44, 0x13, 0xe8, 0xcc, 0x09, 0x00, 0xa9, 0xaa, 0x9a, 0x10, 0x65, 0x11, 0x80, 0x28, 0x02, - 0xdc, 0x9b, 0x41, 0x03, 0xb9, 0x89, 0x18, 0x22, 0x21, 0x52, 0x34, 0x36, 0x83, 0xfc, 0xab, 0x11, - 0xa8, 0xaa, 0xb9, 0x8a, 0x52, 0x36, 0x01, 0x9a, 0x32, 0xb1, 0xbf, 0x1a, 0x25, 0x98, 0x99, 0x80, - 0x29, 0x11, 0x34, 0x12, 0x72, 0x25, 0xa0, 0xbf, 0x19, 0x81, 0xba, 0x8a, 0xb9, 0x1a, 0x55, 0x15, - 0x98, 0x09, 0x13, 0xd9, 0x9c, 0x40, 0x01, 0xa9, 0x28, 0x98, 0x18, 0x42, 0x04, 0x18, 0x54, 0x23, - 0xfa, 0xab, 0x20, 0xb8, 0xac, 0x88, 0xba, 0x50, 0x45, 0x92, 0x99, 0x20, 0x02, 0xbe, 0x0a, 0x33, - 0xa0, 0x9b, 0x23, 0xaa, 0x62, 0x23, 0xb0, 0x61, 0x45, 0x93, 0xcd, 0x89, 0x82, 0xba, 0x8b, 0x98, - 0x0c, 0x54, 0x23, 0xa9, 0x09, 0x52, 0xc1, 0x9d, 0x28, 0x02, 0x99, 0x08, 0x81, 0x3a, 0x16, 0x90, - 0x8b, 0x56, 0x23, 0xb8, 0xae, 0x28, 0xa0, 0xac, 0x89, 0xa9, 0x60, 0x23, 0x81, 0x8b, 0x32, 0x23, - 0xfd, 0x8a, 0x31, 0x90, 0x88, 0x09, 0x11, 0x62, 0xa0, 0xab, 0x71, 0x26, 0x01, 0xca, 0x9a, 0x11, - 0xca, 0x9a, 0x9a, 0x20, 0x34, 0x91, 0x88, 0x51, 0x23, 0xb1, 0xcf, 0x09, 0x23, 0x89, 0xa9, 0x39, - 0x25, 0x02, 0xbf, 0x29, 0x46, 0x13, 0xa0, 0xac, 0x89, 0x01, 0xbc, 0xab, 0x28, 0x33, 0x92, 0x9e, - 0x43, 0x33, 0x81, 0xeb, 0xab, 0x20, 0x14, 0xa9, 0x8b, 0x54, 0x02, 0xea, 0x9c, 0x43, 0x44, 0x01, - 0xa9, 0xaa, 0x09, 0xa1, 0xae, 0x0a, 0x23, 0xa1, 0xda, 0x3a, 0x26, 0x13, 0xa9, 0x9c, 0x89, 0x30, - 0x93, 0xad, 0x31, 0x26, 0xc8, 0xcc, 0x39, 0x44, 0x23, 0x90, 0x99, 0xac, 0x18, 0xc9, 0x9b, 0x31, - 0x84, 0xbd, 0x9b, 0x73, 0x23, 0x91, 0xba, 0x89, 0x8a, 0x53, 0xb8, 0x8a, 0x54, 0x82, 0xbd, 0xbb, - 0x73, 0x33, 0x13, 0x89, 0xc9, 0x9c, 0x81, 0xab, 0x29, 0x33, 0xf8, 0x9e, 0x18, 0x53, 0x11, 0xa9, - 0x8a, 0x90, 0x28, 0x84, 0xaa, 0x39, 0x26, 0xd8, 0xba, 0x0b, 0x37, 0x23, 0x01, 0x80, 0xfb, 0x89, - 0x80, 0x99, 0x31, 0xa1, 0xcf, 0x89, 0x31, 0x26, 0x80, 0xaa, 0x09, 0x88, 0x40, 0x91, 0xab, 0x51, - 0x82, 0xcb, 0xcb, 0x59, 0x25, 0x22, 0x01, 0xa8, 0xbd, 0x88, 0x88, 0x08, 0x23, 0xfc, 0x9c, 0x18, - 0x53, 0x03, 0x99, 0xaa, 0x00, 0x88, 0x34, 0xc8, 0x8d, 0x42, 0x80, 0xbb, 0xab, 0x72, 0x24, 0x31, - 0x01, 0xca, 0x9d, 0x00, 0x98, 0x28, 0xa3, 0xcf, 0x0a, 0x21, 0x34, 0x91, 0xa9, 0x8a, 0x80, 0x51, - 0x84, 0xfb, 0x19, 0x23, 0xa8, 0xaa, 0x8b, 0x64, 0x22, 0x24, 0xa8, 0xcb, 0x09, 0x90, 0xa9, 0x61, - 0xd0, 0xac, 0x10, 0x32, 0x23, 0x98, 0xaa, 0xac, 0x31, 0x36, 0xd0, 0xad, 0x41, 0x81, 0x98, 0xa9, - 0x19, 0x44, 0x53, 0x02, 0xbb, 0x8b, 0x80, 0xba, 0x2c, 0x17, 0xcc, 0x89, 0x21, 0x22, 0x82, 0x88, - 0xca, 0x1b, 0x35, 0x82, 0xde, 0x09, 0x24, 0x98, 0x89, 0x99, 0x38, 0x45, 0x24, 0xb0, 0xab, 0x08, - 0xa9, 0xac, 0x72, 0xb1, 0xad, 0x28, 0x32, 0x10, 0x11, 0xb8, 0xad, 0x30, 0x24, 0xea, 0x9c, 0x31, - 0x04, 0x8a, 0x89, 0x9a, 0x71, 0x44, 0x01, 0xaa, 0x99, 0x98, 0xbb, 0x38, 0x26, 0xfb, 0x8a, 0x31, - 0x02, 0x20, 0x81, 0xdb, 0x09, 0x22, 0xb1, 0xbf, 0x18, 0x34, 0x90, 0x99, 0xa8, 0x8b, 0x77, 0x13, - 0x90, 0xb9, 0x8a, 0xb9, 0x09, 0x44, 0xa1, 0xbf, 0x19, 0x33, 0x11, 0x12, 0xc9, 0x9b, 0x01, 0x09, - 0xea, 0x8a, 0x40, 0x25, 0x99, 0x09, 0xba, 0x70, 0x27, 0x01, 0x98, 0xcb, 0x8a, 0x80, 0x31, 0x02, - 0xfb, 0x9d, 0x31, 0x22, 0x20, 0x80, 0xbb, 0x0a, 0xd9, 0x19, 0x99, 0x80, 0x50, 0x05, 0x89, 0x90, - 0x0a, 0x76, 0x23, 0x80, 0xca, 0xad, 0x10, 0x01, 0x12, 0xb9, 0xce, 0x09, 0x43, 0x13, 0x00, 0x99, - 0xab, 0x99, 0xaf, 0x22, 0x88, 0xa8, 0x51, 0x01, 0x00, 0x00, 0x38, 0x67, 0x12, 0xa8, 0xfb, 0x0c, - 0x12, 0x01, 0x90, 0xbb, 0x9c, 0x30, 0x35, 0x12, 0x98, 0xa9, 0xba, 0xcd, 0x2b, 0x04, 0x98, 0x99, - 0x63, 0x02, 0x11, 0x99, 0x42, 0x45, 0x81, 0xea, 0xac, 0x38, 0x13, 0x00, 0xdb, 0x9b, 0x09, 0x35, - 0x24, 0x90, 0x98, 0xba, 0xad, 0xcb, 0x50, 0x92, 0x99, 0x09, 0x35, 0x22, 0x91, 0x19, 0x33, 0x35, - 0xd8, 0xcd, 0x9a, 0x53, 0x01, 0xb8, 0xac, 0x88, 0x41, 0x43, 0x02, 0xa9, 0xa9, 0xdb, 0xbb, 0x9a, - 0x54, 0x98, 0xba, 0x71, 0x33, 0x02, 0x99, 0x11, 0x18, 0x83, 0xdd, 0xbb, 0x19, 0x37, 0x90, 0xcb, - 0x8a, 0x11, 0x34, 0x33, 0xa1, 0xad, 0xb9, 0xbb, 0xcc, 0x2a, 0x15, 0xba, 0x19, 0x56, 0x23, 0x88, - 0x08, 0x80, 0x09, 0x90, 0xbc, 0xad, 0x58, 0x14, 0xb9, 0xac, 0x20, 0x32, 0x44, 0x12, 0xe9, 0xab, - 0x88, 0xa9, 0xbc, 0x30, 0x92, 0xab, 0x71, 0x37, 0x02, 0x09, 0x80, 0xaa, 0x09, 0x81, 0xca, 0x9c, - 0x52, 0x02, 0xcc, 0x09, 0x22, 0x43, 0x24, 0x90, 0xce, 0x8a, 0x00, 0xb9, 0xab, 0x21, 0x90, 0x29, - 0x77, 0x23, 0x80, 0x08, 0xa9, 0xbb, 0x30, 0x82, 0xcc, 0x0a, 0x23, 0xa2, 0xae, 0x31, 0x32, 0x47, - 0x01, 0xea, 0xab, 0x18, 0xa0, 0xbb, 0x9b, 0x20, 0x12, 0x74, 0x35, 0x12, 0x00, 0xa9, 0xbc, 0x8b, - 0x33, 0x98, 0xdb, 0x1a, 0x32, 0xa2, 0x8a, 0x33, 0x76, 0x15, 0xb8, 0xbc, 0x8b, 0x01, 0xba, 0xdb, - 0x0b, 0x30, 0x25, 0x63, 0x24, 0x01, 0x80, 0xdb, 0x9a, 0x08, 0x13, 0xa8, 0xdb, 0x18, 0x42, 0x91, - 0x88, 0x31, 0x67, 0x91, 0xca, 0xaa, 0x0a, 0x80, 0xba, 0xad, 0x09, 0x73, 0x13, 0x42, 0x13, 0x01, - 0xda, 0xab, 0x99, 0x20, 0x14, 0xa8, 0x9e, 0x18, 0x34, 0x98, 0x19, 0x73, 0x12, 0xc9, 0xbb, 0xbb, - 0x09, 0xa0, 0xeb, 0xac, 0x38, 0x47, 0x10, 0x32, 0x21, 0xb8, 0xbc, 0xa9, 0x9a, 0x52, 0x12, 0xd9, - 0x9b, 0x42, 0x23, 0xb9, 0x41, 0x34, 0xa0, 0xca, 0xdc, 0xaa, 0x00, 0x99, 0xfb, 0x0a, 0x63, 0x13, - 0x20, 0x23, 0x82, 0xbd, 0x99, 0xaa, 0x0a, 0x45, 0x81, 0xeb, 0x28, 0x22, 0x82, 0x8c, 0x33, 0x03, - 0x9a, 0xf9, 0xbc, 0x9a, 0x00, 0xb8, 0xbf, 0x41, 0x43, 0x02, 0x22, 0x33, 0xc9, 0x9c, 0xa9, 0xab, - 0x38, 0x37, 0xc0, 0x8c, 0x32, 0x12, 0xb0, 0x2a, 0x14, 0x08, 0x00, 0xde, 0x9c, 0x89, 0x01, 0xdb, - 0x0b, 0x35, 0x23, 0x12, 0x32, 0x93, 0xcb, 0xcb, 0xba, 0xaa, 0x72, 0x07, 0xaa, 0x29, 0x13, 0x11, - 0xbb, 0x31, 0x10, 0x11, 0xe8, 0xbf, 0x9a, 0x39, 0xa1, 0xcd, 0x38, 0x25, 0x12, 0x11, 0x22, 0x91, - 0xcc, 0xab, 0xaa, 0x2a, 0x57, 0x81, 0xab, 0x31, 0x12, 0xa0, 0x8c, 0x12, 0x22, 0x80, 0xed, 0xbc, - 0x8a, 0x32, 0xd8, 0x9c, 0x43, 0x22, 0x11, 0x21, 0x25, 0xb8, 0xbd, 0x9a, 0xab, 0x72, 0x24, 0xb8, - 0x1a, 0x33, 0x91, 0xdb, 0x29, 0x23, 0x82, 0xa9, 0xee, 0xbb, 0x10, 0x03, 0xeb, 0x3a, 0x25, 0x00, - 0x18, 0x52, 0x03, 0xdb, 0xaa, 0xa9, 0x2a, 0x46, 0x02, 0xbb, 0x40, 0x13, 0xc9, 0x9b, 0x22, 0x03, - 0x88, 0xc0, 0xdf, 0x89, 0x21, 0xa0, 0xbb, 0x73, 0x82, 0x98, 0x31, 0x26, 0xb0, 0xbb, 0xa9, 0xab, - 0x73, 0x24, 0xb0, 0x8a, 0x25, 0x80, 0xbc, 0x28, 0x12, 0x90, 0x18, 0xf9, 0xbc, 0x28, 0x82, 0xd9, - 0x29, 0x25, 0x98, 0x0a, 0x37, 0x01, 0xca, 0x9a, 0xa9, 0x28, 0x27, 0x02, 0xba, 0x30, 0x04, 0xc9, - 0x8b, 0x22, 0x80, 0x88, 0x91, 0xcf, 0x8a, 0x21, 0xa8, 0x9c, 0x52, 0x93, 0xbb, 0x71, 0x17, 0x98, - 0x9a, 0x8a, 0x89, 0x52, 0x23, 0xa8, 0x0a, 0x43, 0xb0, 0xac, 0x28, 0x92, 0x88, 0x18, 0xe8, 0xac, - 0x08, 0xa1, 0xab, 0x38, 0x37, 0xdb, 0x19, 0x66, 0x81, 0xa9, 0xaa, 0x98, 0x30, 0x26, 0x82, 0x99, - 0x10, 0x03, 0xbc, 0x8a, 0x21, 0xaa, 0x10, 0x02, 0xbc, 0xdb, 0xaa, 0xbc, 0x28, 0x63, 0xc1, 0x9d, - 0x52, 0x26, 0xa0, 0xaa, 0x9b, 0x10, 0x43, 0x24, 0x80, 0x89, 0x31, 0xd1, 0x8b, 0x98, 0xa9, 0x0a, - 0x42, 0x03, 0xa0, 0xdf, 0xbb, 0x29, 0x12, 0x81, 0xcc, 0x3a, 0x47, 0x13, 0xba, 0xcb, 0x29, 0x23, - 0x43, 0x22, 0xa1, 0x99, 0x41, 0xca, 0x00, 0xdc, 0x9b, 0x32, 0x23, 0x24, 0xfa, 0xad, 0x89, 0x21, - 0x90, 0x9a, 0x99, 0x63, 0x24, 0x82, 0xda, 0x8b, 0x33, 0x12, 0x43, 0x15, 0xa8, 0x8c, 0x22, 0x89, - 0xd9, 0xbe, 0x20, 0x33, 0x33, 0xb1, 0xdf, 0xaa, 0x11, 0x80, 0x8a, 0x80, 0x00, 0x32, 0x53, 0x03, - 0xdb, 0x48, 0x02, 0x18, 0x55, 0x81, 0xcb, 0x38, 0x13, 0xa0, 0xef, 0x0b, 0x33, 0x42, 0x01, 0xda, - 0xbb, 0x0a, 0x12, 0xa8, 0x29, 0x81, 0x80, 0x99, 0x72, 0x05, 0x09, 0x22, 0x88, 0x32, 0x24, 0xfa, - 0x9a, 0x73, 0x01, 0xc9, 0xbd, 0x39, 0x25, 0x22, 0xa0, 0xbd, 0xaa, 0x18, 0x01, 0xa8, 0x32, 0x80, - 0xda, 0x09, 0x54, 0x02, 0x28, 0x81, 0x18, 0x20, 0xb2, 0xae, 0x2a, 0x67, 0x90, 0xeb, 0x9a, 0x42, - 0x14, 0x82, 0xaa, 0xbc, 0x9a, 0x20, 0x82, 0x1a, 0x05, 0xb8, 0xac, 0x21, 0x45, 0x01, 0x08, 0x01, - 0x98, 0x08, 0xab, 0xb8, 0x78, 0x47, 0xc9, 0xab, 0x09, 0x45, 0x22, 0x98, 0xca, 0xbc, 0x09, 0x32, - 0x90, 0x30, 0x93, 0xcd, 0x19, 0x11, 0x35, 0x90, 0x21, 0x90, 0xab, 0x89, 0x90, 0x9c, 0x77, 0x93, - 0xbc, 0x9a, 0x28, 0x47, 0x01, 0xa8, 0xcb, 0xab, 0x38, 0x12, 0x00, 0x33, 0xe9, 0x9b, 0x81, 0x31, - 0x16, 0x10, 0x82, 0xaa, 0xba, 0x00, 0xda, 0x70, 0x17, 0xa9, 0x9b, 0x98, 0x50, 0x25, 0x01, 0xda, - 0xbb, 0x89, 0x21, 0x11, 0x31, 0x92, 0xae, 0x19, 0x80, 0x50, 0x23, 0x21, 0xba, 0xaa, 0x8b, 0xa0, - 0x0d, 0x77, 0x81, 0xaa, 0x9a, 0x89, 0x64, 0x24, 0xa8, 0xcc, 0x9a, 0x00, 0x11, 0x11, 0x14, 0xaa, - 0x9a, 0x81, 0x8a, 0x73, 0x14, 0xa0, 0x9a, 0x90, 0x9a, 0x99, 0x71, 0x17, 0x98, 0xa9, 0x99, 0x1a, - 0x66, 0x02, 0xca, 0xaa, 0x89, 0x18, 0x21, 0x32, 0x92, 0xac, 0x18, 0xb9, 0x1a, 0x77, 0x81, 0x9a, - 0x18, 0x98, 0xaa, 0x28, 0x55, 0x02, 0xa9, 0xa9, 0xac, 0x60, 0x35, 0xa0, 0xad, 0x9a, 0x88, 0x10, - 0x22, 0x43, 0xa8, 0x0b, 0xa1, 0xac, 0x60, 0x25, 0xa9, 0x8a, 0x21, 0xba, 0x8c, 0x31, 0x37, 0x82, - 0x9a, 0xdb, 0x1b, 0x45, 0x04, 0xca, 0xab, 0x88, 0x89, 0x22, 0x32, 0x24, 0xa9, 0x09, 0xeb, 0x19, - 0x44, 0x82, 0xac, 0x28, 0x92, 0xbc, 0x19, 0x62, 0x26, 0x90, 0xb9, 0xbb, 0x61, 0x23, 0xa1, 0xaf, - 0x89, 0x99, 0x10, 0x12, 0x31, 0x04, 0x88, 0xaa, 0x9d, 0x31, 0x22, 0xc0, 0x8b, 0x33, 0xe9, 0xab, - 0x18, 0x76, 0x14, 0xa8, 0xaa, 0x0a, 0x24, 0x01, 0xca, 0x9d, 0x99, 0x88, 0x21, 0x12, 0x62, 0x03, - 0xa9, 0xbb, 0x19, 0x12, 0x8a, 0x98, 0x30, 0x80, 0xeb, 0xad, 0x30, 0x77, 0x07, 0xa9, 0x89, 0x18, - 0x02, 0x89, 0xba, 0xab, 0x8a, 0x20, 0x43, 0x00, 0x65, 0x01, 0xb9, 0x99, 0x08, 0xc0, 0x2b, 0x12, - 0x88, 0x08, 0xa9, 0xbb, 0x7b, 0x77, 0x85, 0x9a, 0x88, 0x10, 0x98, 0x89, 0xba, 0x9c, 0x00, 0x32, - 0x83, 0x39, 0x47, 0x00, 0xaa, 0x89, 0xa9, 0xdc, 0x30, 0x92, 0x00, 0x10, 0x90, 0xbc, 0x75, 0x27, - 0x98, 0x9a, 0x88, 0x80, 0x99, 0x88, 0xcc, 0x09, 0x21, 0x23, 0xa0, 0x40, 0x44, 0x93, 0xab, 0xc9, - 0xac, 0xab, 0x34, 0x00, 0x81, 0x23, 0xea, 0x09, 0x77, 0x22, 0xa8, 0x9b, 0x98, 0x99, 0x99, 0xb8, - 0xad, 0x10, 0x34, 0x22, 0xb9, 0x59, 0x36, 0xa1, 0xaa, 0xda, 0xaa, 0x0a, 0x33, 0x11, 0x41, 0xa1, - 0xaa, 0x3b, 0x77, 0x17, 0xa8, 0x99, 0x98, 0x89, 0x89, 0xb8, 0x8a, 0x42, 0x33, 0x82, 0xbd, 0x72, - 0x13, 0xa0, 0xab, 0xcb, 0xba, 0x2b, 0x16, 0x31, 0x83, 0x9a, 0xb9, 0x78, 0x57, 0x81, 0xaa, 0x99, - 0x98, 0xa9, 0x09, 0xb9, 0x39, 0x45, 0x12, 0xa9, 0x0b, 0x45, 0x02, 0xa8, 0xbb, 0xdc, 0xab, 0x30, - 0x43, 0x34, 0xb0, 0xaa, 0x1a, 0x67, 0x14, 0x98, 0xba, 0x98, 0xba, 0x9a, 0x08, 0x99, 0x62, 0x24, - 0x80, 0xb8, 0x29, 0x25, 0x11, 0xa8, 0xec, 0xbc, 0x0a, 0x31, 0x54, 0x03, 0xca, 0x89, 0x31, 0x45, - 0x02, 0x99, 0xbb, 0xba, 0xac, 0xa9, 0x08, 0x18, 0x47, 0x81, 0x01, 0x9a, 0x88, 0x33, 0x34, 0xc0, - 0xcf, 0x9b, 0x89, 0x52, 0x34, 0xa1, 0x9d, 0x01, 0x32, 0x23, 0x02, 0xda, 0xba, 0xcb, 0x9a, 0x1a, - 0x11, 0x20, 0x30, 0x57, 0xa2, 0xac, 0x19, 0x43, 0x12, 0xca, 0xbe, 0x8a, 0x20, 0x45, 0x03, 0xcb, - 0x18, 0x00, 0x31, 0x23, 0x13, 0xea, 0xbc, 0xba, 0x99, 0x00, 0x03, 0x89, 0x75, 0x14, 0xba, 0xab, - 0x58, 0x23, 0x81, 0xeb, 0xcb, 0x08, 0x41, 0x24, 0x90, 0x9b, 0x80, 0x38, 0x24, 0x42, 0x81, 0xda, - 0xbc, 0x8a, 0x99, 0x18, 0x01, 0x30, 0x77, 0x91, 0xab, 0x9b, 0x44, 0x11, 0x91, 0xbc, 0xbb, 0x18, - 0x54, 0x14, 0xa8, 0x8a, 0x9a, 0x41, 0x33, 0x03, 0x08, 0xfa, 0x9b, 0x9a, 0xaa, 0x1a, 0x04, 0x73, - 0x14, 0xc9, 0xab, 0x29, 0x25, 0x22, 0xb8, 0xae, 0x9a, 0x11, 0x54, 0x02, 0xa9, 0xbb, 0x0a, 0x64, - 0x02, 0x80, 0x00, 0xba, 0xab, 0xab, 0xcc, 0x38, 0x43, 0x25, 0xa9, 0xab, 0x10, 0x18, 0x46, 0x02, - 0xca, 0xad, 0x18, 0x01, 0x64, 0x81, 0xda, 0x9b, 0x40, 0x16, 0x98, 0x18, 0x08, 0xa8, 0x8a, 0xb8, - 0xbd, 0x41, 0x24, 0x90, 0x9a, 0x29, 0xb1, 0x49, 0x35, 0x81, 0xeb, 0x8a, 0x81, 0x19, 0x37, 0xa0, - 0xcd, 0x08, 0x53, 0x92, 0x8a, 0x11, 0x01, 0xc9, 0x89, 0xcc, 0x8b, 0x73, 0x01, 0x8a, 0x08, 0x11, - 0xba, 0x52, 0x22, 0xa0, 0xac, 0x18, 0xb8, 0x78, 0x23, 0xfa, 0x8b, 0x21, 0x34, 0xaa, 0x29, 0x24, - 0x81, 0xcb, 0xba, 0xce, 0x19, 0x25, 0xa0, 0x00, 0x01, 0xa0, 0x8c, 0x44, 0x02, 0xa9, 0x8b, 0x12, - 0xac, 0x50, 0x92, 0xaf, 0x10, 0x31, 0x93, 0x9c, 0x52, 0x13, 0xa1, 0xbc, 0xda, 0xbc, 0x59, 0x13, - 0x19, 0x81, 0x08, 0xd0, 0x3a, 0x26, 0x80, 0xa9, 0x19, 0xa2, 0xad, 0x31, 0xd8, 0x29, 0x02, 0x42, - 0xfa, 0x29, 0x24, 0x12, 0xa8, 0xac, 0xdc, 0x9b, 0x41, 0x22, 0x02, 0x99, 0x00, 0xcc, 0x62, 0x02, - 0xa0, 0x89, 0x21, 0xe9, 0x9a, 0x18, 0x20, 0x12, 0x18, 0xc1, 0x9f, 0x53, 0x22, 0x01, 0xba, 0xcc, - 0xbd, 0x8a, 0x61, 0x23, 0x91, 0x99, 0xb8, 0x2a, 0x27, 0x81, 0x8a, 0x18, 0x82, 0xdc, 0xba, 0x40, - 0x23, 0x00, 0x98, 0xcc, 0x39, 0x36, 0x11, 0x81, 0xcb, 0xdc, 0xab, 0x1b, 0x55, 0x03, 0x98, 0x99, - 0x9a, 0x41, 0x14, 0xa8, 0x08, 0x12, 0xc9, 0xbd, 0x8b, 0x55, 0x81, 0x80, 0x9a, 0x9a, 0x42, 0x14, - 0x11, 0x90, 0xfb, 0xac, 0xab, 0x48, 0x36, 0x01, 0xb9, 0x8a, 0x18, 0x32, 0x02, 0x8a, 0x31, 0x92, - 0xcf, 0xcb, 0x3a, 0x27, 0x00, 0xb9, 0x89, 0x18, 0x32, 0x23, 0x43, 0xe8, 0xbd, 0xbb, 0x9a, 0x72, - 0x16, 0x80, 0xaa, 0x08, 0x10, 0x11, 0x00, 0x18, 0x00, 0xb9, 0xbd, 0xad, 0x71, 0x13, 0xa8, 0xab, - 0x81, 0x00, 0x41, 0x24, 0x13, 0xed, 0xab, 0x8a, 0x19, 0x65, 0x03, 0xb9, 0x9a, 0x10, 0x10, 0x11, - 0x21, 0x80, 0xaa, 0xac, 0xda, 0x0c, 0x56, 0x91, 0xa9, 0x09, 0x80, 0x09, 0x63, 0x23, 0xc8, 0xbd, - 0x9a, 0x99, 0x50, 0x36, 0x80, 0xab, 0x09, 0x00, 0x11, 0x21, 0x03, 0xcb, 0x89, 0x90, 0xbe, 0x51, - 0x24, 0xb8, 0xac, 0x10, 0x98, 0x39, 0x67, 0x00, 0xca, 0x8b, 0x99, 0x19, 0x54, 0x22, 0xa8, 0x8c, - 0x88, 0x00, 0x21, 0x33, 0xc9, 0x8b, 0x20, 0xe9, 0x3a, 0x24, 0x01, 0xeb, 0x0b, 0x01, 0x88, 0x71, - 0x15, 0xa9, 0xbc, 0x99, 0x9a, 0x72, 0x13, 0x02, 0xca, 0x89, 0x08, 0x12, 0x31, 0xa3, 0xae, 0x28, - 0x82, 0x8d, 0x43, 0x90, 0xa0, 0xae, 0x18, 0x81, 0x08, 0x56, 0x91, 0xca, 0x9a, 0xba, 0x39, 0x37, - 0x02, 0x90, 0xaa, 0x88, 0x28, 0x13, 0x12, 0xfb, 0x0a, 0x43, 0xa0, 0x48, 0x02, 0xca, 0xca, 0x9d, - 0x32, 0x81, 0x28, 0x07, 0x9a, 0xba, 0xbb, 0x8e, 0x53, 0x34, 0xa1, 0x98, 0x9a, 0x08, 0x31, 0x91, - 0xda, 0x8b, 0x72, 0x03, 0x19, 0x12, 0xb2, 0xcf, 0xa9, 0x19, 0x15, 0x80, 0x98, 0x88, 0x80, 0xca, - 0xbf, 0x30, 0x54, 0x03, 0x9a, 0x81, 0x0a, 0x00, 0x01, 0xdd, 0x09, 0x18, 0x45, 0x00, 0x11, 0x00, - 0xfa, 0x9b, 0xa8, 0x41, 0x12, 0xb9, 0x9c, 0x21, 0x02, 0xfa, 0x0c, 0x33, 0x44, 0xb0, 0x2a, 0x90, - 0x19, 0x80, 0xf8, 0x8c, 0x10, 0x41, 0x14, 0x11, 0x01, 0xc9, 0xcc, 0x89, 0x9a, 0x44, 0x91, 0xbc, - 0x2a, 0x33, 0x91, 0xbd, 0x58, 0x33, 0x22, 0xda, 0x20, 0xb9, 0x01, 0xb8, 0xbf, 0x29, 0x04, 0x52, - 0x22, 0x32, 0xc0, 0xbb, 0xbe, 0xa9, 0x4a, 0x15, 0xb9, 0x9c, 0x50, 0x01, 0xa8, 0x89, 0x34, 0x22, - 0x03, 0x9e, 0x90, 0x1a, 0xb1, 0xad, 0x00, 0x42, 0x98, 0x63, 0x33, 0x05, 0x99, 0xdb, 0xbb, 0xac, - 0x52, 0x80, 0xaa, 0x18, 0x34, 0xa8, 0xab, 0x62, 0x33, 0x23, 0xb8, 0x9c, 0xb9, 0x9a, 0xcc, 0x38, - 0x32, 0xa3, 0x8f, 0x55, 0x33, 0x82, 0xca, 0xbc, 0xbc, 0x0a, 0x33, 0x88, 0x88, 0x30, 0xa4, 0xad, - 0x48, 0x35, 0x32, 0x81, 0xdb, 0xaa, 0x9a, 0x88, 0x2a, 0x27, 0x91, 0xeb, 0x2a, 0x47, 0x11, 0x90, - 0xb9, 0xdb, 0xab, 0x28, 0x13, 0x21, 0x88, 0x88, 0xdc, 0x29, 0x44, 0x33, 0x81, 0x91, 0xcc, 0xbb, - 0x1a, 0x00, 0x54, 0x02, 0xcb, 0xad, 0x71, 0x33, 0x02, 0xaa, 0xcb, 0xcc, 0x9a, 0x32, 0x33, 0x81, - 0xba, 0xbb, 0x9d, 0x54, 0x34, 0x81, 0x88, 0xa9, 0xea, 0x8b, 0x21, 0x31, 0x32, 0xd8, 0xbd, 0x0b, - 0x57, 0x12, 0x90, 0xa9, 0xca, 0xcb, 0x2a, 0x34, 0x12, 0xa8, 0xcb, 0x9a, 0x49, 0x36, 0x12, 0x98, - 0x98, 0xaa, 0xdc, 0x29, 0x13, 0x22, 0x80, 0xdc, 0xac, 0x61, 0x24, 0x02, 0xa9, 0xba, 0xbc, 0xac, - 0x51, 0x23, 0x81, 0xbb, 0xac, 0x0a, 0x55, 0x22, 0x81, 0x99, 0xa9, 0xb9, 0xad, 0x52, 0x02, 0x81, - 0xb8, 0xcd, 0x29, 0x45, 0x22, 0x91, 0xaa, 0xcb, 0xad, 0x0b, 0x36, 0x01, 0xa8, 0xba, 0x9c, 0x42, - 0x34, 0x12, 0xa8, 0x9a, 0xaa, 0xda, 0x2a, 0x26, 0x00, 0x99, 0xca, 0x8c, 0x53, 0x24, 0x12, 0xa9, - 0xbb, 0xdc, 0xab, 0x58, 0x24, 0x91, 0xaa, 0xac, 0x29, 0x44, 0x23, 0x81, 0xaa, 0x9a, 0xaa, 0xac, - 0x60, 0x13, 0x88, 0xba, 0xac, 0x49, 0x36, 0x14, 0x80, 0xaa, 0xc9, 0xae, 0x8a, 0x62, 0x02, 0x98, - 0xab, 0x8b, 0x51, 0x24, 0x13, 0xa8, 0x99, 0xaa, 0xbb, 0x8a, 0x55, 0x81, 0x99, 0xab, 0x8a, 0x73, - 0x26, 0x01, 0x89, 0x99, 0xdc, 0x9b, 0x19, 0x45, 0x91, 0xa9, 0xab, 0x19, 0x45, 0x23, 0x00, 0x99, - 0xa9, 0xbb, 0x9a, 0x1a, 0x36, 0x91, 0xab, 0xa9, 0x39, 0x77, 0x03, 0x88, 0x01, 0xda, 0xbd, 0x8a, - 0x20, 0x26, 0x98, 0xaa, 0x9a, 0x40, 0x44, 0x11, 0x00, 0x88, 0xbb, 0xab, 0xab, 0x48, 0x25, 0xa8, - 0x99, 0x89, 0x60, 0x36, 0x80, 0x21, 0xa1, 0xcf, 0xbb, 0x89, 0x52, 0x13, 0xa9, 0xbb, 0x09, 0x63, - 0x14, 0x22, 0x81, 0xb8, 0xbd, 0xaa, 0x99, 0x51, 0x04, 0x99, 0x89, 0x08, 0x62, 0x23, 0x21, 0x24, - 0xf9, 0xbd, 0x9b, 0x19, 0x54, 0x81, 0x9a, 0x9a, 0x18, 0x43, 0x43, 0x23, 0x98, 0xcb, 0xdb, 0x9a, - 0x09, 0x44, 0x91, 0x98, 0x08, 0x08, 0x72, 0x22, 0x32, 0x91, 0xee, 0xcb, 0x89, 0x31, 0x14, 0xa0, - 0xa9, 0x9a, 0x21, 0x35, 0x44, 0x02, 0xba, 0xba, 0xad, 0x99, 0x40, 0x13, 0x88, 0x98, 0x88, 0x19, - 0x56, 0x24, 0x02, 0xc0, 0xbf, 0xab, 0x08, 0x34, 0x01, 0xa8, 0xba, 0x19, 0x43, 0x45, 0x24, 0xb0, - 0x9b, 0xca, 0x9b, 0x09, 0x24, 0x11, 0x98, 0x99, 0x11, 0x3a, 0x77, 0x04, 0x08, 0xc9, 0xbd, 0x8a, - 0x20, 0x14, 0x00, 0xb9, 0x8a, 0x12, 0x61, 0x35, 0x82, 0xba, 0xa9, 0xbc, 0x89, 0x18, 0x03, 0x12, - 0xca, 0x30, 0xb2, 0x71, 0x57, 0x80, 0x08, 0xeb, 0xab, 0x08, 0x31, 0x82, 0x80, 0xba, 0x20, 0x81, - 0x67, 0x12, 0x90, 0x9a, 0xb9, 0x9c, 0x98, 0x30, 0x81, 0x80, 0x29, 0x84, 0x2a, 0x77, 0x82, 0x00, - 0xb1, 0xcf, 0x8a, 0x08, 0x32, 0x98, 0x80, 0x19, 0x01, 0x50, 0x26, 0x01, 0x90, 0x9a, 0xbc, 0x9b, - 0x89, 0x04, 0x8a, 0x12, 0x32, 0xa9, 0x75, 0x33, 0x08, 0x43, 0xfa, 0xaf, 0x88, 0x28, 0x82, 0x09, - 0x01, 0x00, 0x19, 0x34, 0x21, 0x23, 0xa0, 0xdb, 0xae, 0x9a, 0x18, 0xb1, 0x3a, 0x25, 0x01, 0x39, - 0x23, 0x36, 0x52, 0x84, 0xee, 0xaa, 0x08, 0x20, 0x91, 0x29, 0x13, 0x91, 0x18, 0x10, 0x55, 0x13, - 0xa8, 0xeb, 0xab, 0x99, 0x11, 0xaa, 0x71, 0x12, 0xa0, 0x00, 0x49, 0x25, 0x34, 0xd0, 0xbe, 0x9a, - 0x80, 0x22, 0xa8, 0x52, 0x12, 0x99, 0x89, 0x38, 0x47, 0x82, 0xba, 0xca, 0x8a, 0x09, 0x81, 0x8b, - 0x54, 0x02, 0xa9, 0x80, 0x72, 0x24, 0x02, 0xfb, 0xac, 0x89, 0x10, 0x82, 0x08, 0x43, 0x92, 0x9a, - 0xa9, 0x73, 0x26, 0xa8, 0x9a, 0xab, 0x08, 0x00, 0xa8, 0x28, 0x35, 0xb1, 0x9a, 0x38, 0x77, 0x12, - 0x98, 0xbd, 0x9c, 0x80, 0x10, 0x01, 0x10, 0x42, 0x90, 0xaa, 0x3a, 0x57, 0x02, 0xa9, 0xac, 0x19, - 0x98, 0x88, 0x88, 0x88, 0x35, 0xb8, 0x19, 0x73, 0x35, 0x10, 0xe9, 0xac, 0x09, 0x98, 0x11, 0x02, - 0x8b, 0x27, 0x88, 0x99, 0x38, 0x27, 0x80, 0xd9, 0x1a, 0x82, 0xab, 0x01, 0xba, 0x1d, 0x25, 0x09, - 0x11, 0x31, 0x14, 0x13, 0xef, 0x88, 0x90, 0x8a, 0x12, 0xb8, 0x4b, 0x26, 0x08, 0xa9, 0x38, 0x34, - 0xa1, 0xae, 0x42, 0xc8, 0x0a, 0xa0, 0xbc, 0x40, 0x14, 0x01, 0x99, 0x30, 0x24, 0xc0, 0x0c, 0x92, - 0xcc, 0x2a, 0x91, 0xbb, 0x71, 0x06, 0x90, 0x9a, 0x20, 0x23, 0xa0, 0x49, 0xa3, 0xbf, 0x18, 0xcb, - 0x8a, 0x73, 0x12, 0xa8, 0x89, 0x40, 0x02, 0x90, 0x10, 0xe9, 0xcb, 0x00, 0x98, 0x8a, 0x57, 0x01, - 0xaa, 0x9a, 0x31, 0x24, 0x01, 0x21, 0xfb, 0x9c, 0x98, 0x9a, 0x20, 0x46, 0x91, 0x9a, 0x89, 0x33, - 0x33, 0x10, 0xa1, 0xdf, 0x9a, 0x08, 0x88, 0x39, 0x47, 0x90, 0xaa, 0x9a, 0x52, 0x24, 0x81, 0xa0, - 0xcd, 0x89, 0x98, 0x89, 0x51, 0x15, 0xa9, 0x8a, 0x18, 0x35, 0x12, 0x90, 0xda, 0xbb, 0x0b, 0x02, - 0x90, 0x70, 0x14, 0xa9, 0xbb, 0x2b, 0x57, 0x22, 0x98, 0xca, 0xac, 0x00, 0x88, 0x80, 0x52, 0x92, - 0xab, 0x89, 0x72, 0x24, 0x01, 0xa9, 0xad, 0xaa, 0x30, 0x92, 0xa9, 0x51, 0x04, 0xba, 0xac, 0x51, - 0x36, 0x82, 0xba, 0xbc, 0x9a, 0x11, 0x91, 0x19, 0x23, 0xc0, 0x9b, 0x32, 0x77, 0x13, 0xa0, 0xbc, - 0x99, 0x89, 0x33, 0xc8, 0x9b, 0x63, 0x92, 0xb9, 0x9a, 0x73, 0x37, 0xa8, 0xab, 0xa9, 0x19, 0x11, - 0xa9, 0x09, 0x01, 0x98, 0x41, 0x63, 0x37, 0x02, 0xcc, 0x99, 0x90, 0x28, 0x92, 0xcc, 0x19, 0x43, - 0x82, 0xba, 0x1b, 0x77, 0x82, 0xaa, 0x8a, 0x89, 0x18, 0x80, 0xbb, 0x80, 0x30, 0x13, 0x43, 0x74, - 0x25, 0xc9, 0x9a, 0x00, 0x88, 0x10, 0xca, 0x9e, 0x20, 0x34, 0x98, 0xa9, 0x58, 0x17, 0xa8, 0x8a, - 0x88, 0x89, 0x88, 0xa8, 0x9c, 0x08, 0x52, 0x21, 0x34, 0x44, 0xa1, 0xad, 0x29, 0x81, 0x99, 0xa9, - 0xdd, 0x1a, 0x43, 0x14, 0x99, 0x8a, 0x53, 0x83, 0xaa, 0x88, 0xab, 0xbc, 0x88, 0xeb, 0x89, 0x30, - 0x25, 0x53, 0x33, 0x02, 0xfb, 0x09, 0x12, 0xa0, 0x9d, 0xba, 0x9d, 0x30, 0x35, 0x02, 0xa8, 0x09, - 0x42, 0x00, 0x11, 0xdc, 0xbb, 0x0c, 0x98, 0x9b, 0x10, 0x30, 0x57, 0x33, 0x03, 0xb9, 0x9c, 0x23, - 0x01, 0xde, 0x9a, 0xaa, 0x19, 0x35, 0x23, 0x03, 0xba, 0x8a, 0x33, 0x56, 0xb0, 0xbc, 0xad, 0x08, - 0x99, 0x10, 0x91, 0x50, 0x36, 0x23, 0x98, 0xaa, 0x30, 0x81, 0xf1, 0x9f, 0x98, 0x89, 0x21, 0x14, - 0x22, 0x82, 0xbc, 0x89, 0x64, 0x83, 0xca, 0xcb, 0x0b, 0x81, 0x09, 0x12, 0x99, 0x64, 0x34, 0x81, - 0x9a, 0x20, 0xa2, 0x89, 0xff, 0x09, 0x88, 0x00, 0x12, 0x22, 0x32, 0xc0, 0xac, 0x38, 0x47, 0xa8, - 0xbb, 0x9d, 0x10, 0x90, 0x10, 0x91, 0x18, 0x45, 0x24, 0x90, 0x1a, 0x13, 0xac, 0xfa, 0x8c, 0x01, - 0x09, 0x10, 0x22, 0x23, 0x22, 0xfa, 0x8a, 0x73, 0x93, 0xbb, 0xbd, 0x09, 0x02, 0x88, 0x11, 0x08, - 0x11, 0x47, 0x13, 0xa8, 0x42, 0xc8, 0xbb, 0xbe, 0x38, 0x81, 0x89, 0x31, 0x34, 0x10, 0x02, 0xaf, - 0x30, 0x27, 0xa9, 0xbd, 0x8b, 0x21, 0x90, 0x08, 0x22, 0x80, 0x48, 0x47, 0x01, 0x18, 0x92, 0xcc, - 0xac, 0x8a, 0x32, 0x98, 0x09, 0x53, 0x12, 0x20, 0xb1, 0x8d, 0x73, 0x92, 0xeb, 0x9c, 0x18, 0x01, - 0x88, 0x08, 0x13, 0x98, 0x72, 0x24, 0x10, 0x10, 0xd9, 0xbd, 0x99, 0x28, 0x12, 0xa8, 0x2a, 0x26, - 0x12, 0x10, 0xa8, 0x39, 0x14, 0xfb, 0xbe, 0x89, 0x11, 0x82, 0x99, 0x40, 0x83, 0x19, 0x56, 0x12, - 0x01, 0xb8, 0xcd, 0xab, 0x88, 0x30, 0x03, 0xca, 0x60, 0x13, 0x11, 0x08, 0x88, 0x81, 0xac, 0xdd, - 0xab, 0x09, 0x33, 0xa0, 0x8a, 0x64, 0x81, 0x21, 0x36, 0x23, 0xb0, 0xad, 0xcd, 0x09, 0x88, 0x31, - 0x91, 0x8c, 0x54, 0x12, 0x90, 0x08, 0x00, 0xdb, 0x99, 0xbc, 0xa9, 0x18, 0x16, 0x9a, 0x18, 0x35, - 0x01, 0x31, 0x36, 0x82, 0xcc, 0xba, 0x9c, 0x80, 0x09, 0x25, 0xba, 0x38, 0x47, 0x01, 0x98, 0x18, - 0xb9, 0x9c, 0xa8, 0x9b, 0xca, 0x48, 0x93, 0x0a, 0x42, 0x37, 0x80, 0x40, 0x23, 0xe9, 0x9a, 0xb9, - 0x8a, 0xa8, 0x4a, 0x84, 0x0a, 0x73, 0x26, 0x98, 0x89, 0x90, 0xac, 0x88, 0x89, 0xa0, 0xab, 0x40, - 0x91, 0x11, 0x72, 0x27, 0x99, 0x21, 0x92, 0x9c, 0xb9, 0x89, 0xa8, 0xeb, 0x48, 0x81, 0x20, 0x57, - 0x82, 0x9a, 0x88, 0xaa, 0x8a, 0x98, 0x00, 0xda, 0x9c, 0x21, 0x22, 0x32, 0x77, 0x90, 0x09, 0x01, - 0xb8, 0x99, 0x89, 0x92, 0xbc, 0x9e, 0x32, 0x11, 0x71, 0x25, 0x98, 0x99, 0xba, 0x9a, 0x88, 0x20, - 0x92, 0xde, 0x8b, 0x43, 0x12, 0x42, 0x14, 0xba, 0x18, 0x81, 0xdb, 0x09, 0x21, 0xd9, 0xeb, 0x0b, - 0x25, 0x11, 0x53, 0x12, 0xc9, 0x9a, 0xba, 0x89, 0x20, 0x22, 0xf9, 0xbd, 0x29, 0x26, 0x01, 0x12, - 0x80, 0x9c, 0x00, 0x98, 0x89, 0x32, 0xa0, 0xcf, 0xdb, 0x40, 0x23, 0x21, 0x23, 0x90, 0xad, 0xb9, - 0x9c, 0x18, 0x23, 0x91, 0xdf, 0x9b, 0x62, 0x13, 0x10, 0x80, 0xa8, 0x8a, 0xa8, 0x88, 0x51, 0x83, - 0xda, 0xcd, 0x8b, 0x54, 0x02, 0x21, 0x81, 0xa9, 0x9a, 0xeb, 0x09, 0x32, 0x81, 0xd9, 0xbd, 0x29, - 0x36, 0x02, 0x01, 0xa9, 0x9a, 0x98, 0x8a, 0x22, 0x27, 0xb8, 0xbd, 0xbc, 0x48, 0x35, 0x21, 0x01, - 0x99, 0xa9, 0xca, 0xab, 0x38, 0x27, 0xb9, 0xdb, 0x9b, 0x62, 0x24, 0x82, 0xa8, 0xaa, 0x80, 0x9a, - 0x20, 0x54, 0x82, 0xcd, 0x9a, 0x8a, 0x52, 0x34, 0x82, 0x90, 0x9a, 0xb9, 0xaa, 0x9b, 0x76, 0xa1, - 0xaa, 0xbb, 0x29, 0x55, 0x14, 0x88, 0xaa, 0x89, 0xa0, 0x08, 0x51, 0x33, 0xea, 0xac, 0x08, 0x08, - 0x52, 0x15, 0x80, 0xa8, 0x89, 0x99, 0xa9, 0x48, 0x17, 0xca, 0x9a, 0x09, 0x30, 0x55, 0x82, 0xa9, - 0xaa, 0x88, 0x00, 0x10, 0x54, 0x91, 0xcd, 0x0a, 0x81, 0x08, 0x64, 0x01, 0x88, 0x99, 0x99, 0x90, - 0x09, 0x55, 0xa0, 0xae, 0x88, 0x00, 0x51, 0x33, 0xb0, 0xba, 0xba, 0x28, 0x02, 0x61, 0x04, 0xe9, - 0xab, 0x20, 0x90, 0x30, 0x27, 0x80, 0x98, 0xb9, 0x18, 0xa8, 0x63, 0x13, 0xfb, 0x8d, 0x80, 0x18, - 0x44, 0x82, 0xa9, 0x9a, 0xaa, 0x41, 0x11, 0x33, 0xb8, 0xcf, 0x0a, 0x02, 0x09, 0x52, 0x22, 0x90, - 0xa9, 0xac, 0x02, 0x49, 0x06, 0x91, 0xbe, 0x0a, 0x80, 0x61, 0x14, 0x90, 0xb9, 0xb9, 0x8a, 0x35, - 0x31, 0x91, 0xdb, 0xad, 0x20, 0x91, 0x20, 0x22, 0x14, 0x88, 0xda, 0x0b, 0x13, 0x54, 0x80, 0xd0, - 0xae, 0x18, 0x08, 0x54, 0x01, 0xa8, 0xaa, 0xba, 0x38, 0x27, 0x82, 0xa9, 0xda, 0x0a, 0x21, 0x08, - 0x10, 0x40, 0x12, 0x98, 0xbe, 0x19, 0x45, 0x02, 0x08, 0xfa, 0x8c, 0x00, 0x38, 0x34, 0x90, 0xa9, - 0xdb, 0x9a, 0x71, 0x23, 0x98, 0xaa, 0xbc, 0x38, 0x01, 0x88, 0x00, 0x53, 0x13, 0xc9, 0xcc, 0x58, - 0x24, 0x98, 0x80, 0xbd, 0x08, 0x88, 0x61, 0x13, 0x99, 0xc9, 0xbb, 0x09, 0x67, 0x81, 0x99, 0xb9, - 0x1a, 0x21, 0x80, 0x99, 0x20, 0x53, 0x91, 0xba, 0x9d, 0x56, 0x81, 0x89, 0xa8, 0x89, 0x99, 0x8a, - 0x55, 0x82, 0x89, 0xcb, 0x9b, 0x78, 0x16, 0xa0, 0xaa, 0x99, 0x20, 0x02, 0xaa, 0x88, 0x40, 0x14, - 0x89, 0xba, 0x79, 0x25, 0xa8, 0x0a, 0x01, 0x98, 0xcc, 0x2a, 0x26, 0x88, 0xaa, 0xab, 0x09, 0x67, - 0x82, 0xba, 0x99, 0x08, 0x12, 0xb0, 0x8a, 0xa9, 0x73, 0x12, 0x98, 0x0b, 0x44, 0x13, 0xae, 0x31, - 0x82, 0xda, 0xac, 0x32, 0x83, 0xba, 0x88, 0xbb, 0x70, 0x37, 0xb0, 0xac, 0x08, 0x00, 0x02, 0xa8, - 0xc9, 0x8b, 0x73, 0x83, 0x99, 0x50, 0x01, 0xb0, 0x2d, 0x16, 0x98, 0xaa, 0x0a, 0x12, 0xb8, 0x0c, - 0x91, 0x1c, 0x57, 0x80, 0xb9, 0x0a, 0x80, 0x10, 0x02, 0xca, 0xbd, 0x2a, 0x37, 0xa1, 0x19, 0x05, - 0x8a, 0xb9, 0x72, 0x83, 0x99, 0xa9, 0x8a, 0x80, 0xba, 0x58, 0xb2, 0x71, 0x85, 0x9b, 0x99, 0x18, - 0x00, 0x42, 0xc1, 0xcc, 0x8b, 0x40, 0x24, 0x88, 0x53, 0xc8, 0x8a, 0x08, 0x27, 0x90, 0x88, 0xba, - 0x89, 0x88, 0xa9, 0x43, 0x31, 0x37, 0xeb, 0x89, 0x00, 0x81, 0x28, 0x84, 0xdb, 0xac, 0x08, 0x43, - 0x03, 0x51, 0x92, 0xaf, 0x18, 0x40, 0x03, 0x08, 0xb8, 0xbc, 0x89, 0x98, 0x29, 0x45, 0x53, 0xc0, - 0xac, 0x18, 0x21, 0x90, 0x32, 0xc0, 0xbe, 0x8a, 0x20, 0x43, 0x23, 0x15, 0xea, 0x8b, 0x28, 0x34, - 0x02, 0x80, 0xea, 0xab, 0x08, 0x80, 0x40, 0x35, 0x82, 0xcd, 0xaa, 0x31, 0x03, 0x18, 0x03, 0xed, - 0x9b, 0x08, 0x32, 0x43, 0x33, 0xb2, 0xcf, 0x89, 0x41, 0x23, 0x10, 0xb0, 0xcd, 0x8a, 0x80, 0x10, - 0x73, 0x12, 0xa9, 0xbd, 0x0a, 0x34, 0x80, 0x11, 0xc1, 0xbd, 0x89, 0x28, 0x33, 0x44, 0x03, 0xd9, - 0xbc, 0x18, 0x34, 0x23, 0x01, 0xfa, 0xab, 0x89, 0x10, 0x31, 0x36, 0x80, 0xda, 0xac, 0x38, 0x14, - 0x00, 0x81, 0xeb, 0x9b, 0x08, 0x31, 0x43, 0x43, 0x81, 0xdc, 0x9b, 0x30, 0x44, 0x13, 0xb0, 0xbd, - 0xaa, 0x18, 0x21, 0x62, 0x04, 0xa8, 0xcc, 0x9a, 0x52, 0x02, 0x00, 0xb8, 0xbc, 0x8a, 0x28, 0x33, - 0x63, 0x33, 0xb0, 0xbf, 0x9a, 0x52, 0x24, 0x82, 0xca, 0xab, 0x89, 0x10, 0x22, 0x54, 0x82, 0xdb, - 0xbb, 0x1a, 0x45, 0x11, 0xa8, 0xbb, 0xba, 0x88, 0x41, 0x33, 0x64, 0x03, 0xda, 0xbb, 0x09, 0x55, - 0x13, 0xb0, 0xbb, 0xab, 0x08, 0x12, 0x43, 0x36, 0xb0, 0xae, 0xaa, 0x20, 0x35, 0x92, 0xbb, 0xab, - 0x8b, 0x08, 0x52, 0x43, 0x45, 0xa1, 0xcb, 0xab, 0x39, 0x57, 0x81, 0x99, 0xaa, 0x99, 0x10, 0x20, - 0x52, 0x14, 0xda, 0xaa, 0x89, 0x30, 0x17, 0xa8, 0x9a, 0x99, 0x98, 0x00, 0x42, 0x53, 0x15, 0xb8, - 0xcb, 0x9b, 0x71, 0x15, 0x98, 0x99, 0x9a, 0x09, 0x01, 0x30, 0x53, 0xa3, 0xbd, 0xa9, 0x89, 0x72, - 0x93, 0xaa, 0xa9, 0x99, 0x08, 0x11, 0x45, 0x53, 0x93, 0xbb, 0xbd, 0x0a, 0x66, 0x01, 0x89, 0xaa, - 0x99, 0x10, 0x08, 0x33, 0x34, 0xe0, 0x9b, 0x9a, 0x1a, 0x36, 0xb0, 0xa9, 0x9a, 0x99, 0x00, 0x50, - 0x35, 0x44, 0xa0, 0xcb, 0xbb, 0x58, 0x26, 0x81, 0xb9, 0xaa, 0x08, 0x80, 0x30, 0x43, 0x14, 0xeb, - 0x99, 0xa9, 0x29, 0x15, 0xa8, 0xb9, 0x9a, 0x89, 0x10, 0x56, 0x33, 0x24, 0xca, 0xac, 0x9b, 0x72, - 0x14, 0x90, 0xba, 0x99, 0x00, 0x18, 0x22, 0x53, 0x92, 0xbc, 0xba, 0xae, 0x21, 0x04, 0x88, 0xb9, - 0xab, 0x89, 0x61, 0x24, 0x35, 0x02, 0xdb, 0xbb, 0x1b, 0x46, 0x13, 0xa9, 0xca, 0x89, 0x81, 0x00, - 0x31, 0x16, 0x90, 0xaa, 0xdc, 0x8b, 0x11, 0x12, 0x80, 0xdb, 0x0a, 0x28, 0x34, 0x54, 0x23, 0xa2, - 0xbe, 0xac, 0x30, 0x35, 0x03, 0xba, 0xbc, 0x18, 0x10, 0x88, 0x54, 0x02, 0xa0, 0xcc, 0xbc, 0x89, - 0x21, 0x24, 0xb0, 0xac, 0x08, 0x21, 0x43, 0x26, 0x23, 0xb1, 0xcf, 0x8a, 0x31, 0x53, 0x82, 0xba, - 0x9c, 0x11, 0x90, 0x29, 0x16, 0x11, 0xc0, 0xbc, 0xac, 0x89, 0x31, 0x06, 0xb9, 0x09, 0x12, 0x00, - 0x43, 0x25, 0x12, 0xf8, 0xac, 0x08, 0x31, 0x35, 0x90, 0xcb, 0x09, 0x02, 0xa9, 0x61, 0x12, 0x00, - 0xe9, 0xbb, 0xcb, 0x19, 0x53, 0x92, 0x9b, 0x20, 0x82, 0x39, 0x46, 0x02, 0x21, 0xec, 0x9b, 0x08, - 0x43, 0x34, 0xb9, 0xab, 0x28, 0xa1, 0x2a, 0x47, 0x80, 0x80, 0xcc, 0xca, 0xab, 0x20, 0x35, 0xa8, - 0x19, 0x22, 0xb9, 0x60, 0x43, 0x10, 0x93, 0xbe, 0x9c, 0x39, 0x34, 0x13, 0xba, 0x9b, 0x21, 0xba, - 0x71, 0x04, 0x88, 0x80, 0xbd, 0xbe, 0x0b, 0x21, 0x23, 0x99, 0x53, 0x81, 0x8c, 0x53, 0x02, 0x20, - 0xb2, 0xcf, 0x8b, 0x32, 0x14, 0x02, 0xba, 0x89, 0x02, 0x09, 0x45, 0x90, 0x09, 0xa0, 0xef, 0x9c, - 0x18, 0x18, 0x12, 0x20, 0x23, 0xc9, 0x2a, 0x26, 0x10, 0x12, 0xd9, 0xce, 0x19, 0x14, 0x01, 0x81, - 0xa9, 0x10, 0xa0, 0x30, 0x05, 0x99, 0x18, 0xe8, 0xcf, 0x89, 0x81, 0x39, 0x23, 0x22, 0x92, 0xbd, - 0x40, 0x12, 0x33, 0x11, 0xfd, 0x9c, 0x20, 0x03, 0x20, 0x92, 0x0b, 0x01, 0xa9, 0x41, 0x01, 0x88, - 0x31, 0xff, 0x9e, 0x08, 0x98, 0x40, 0x22, 0x22, 0xb9, 0x9c, 0x21, 0x33, 0x24, 0xb2, 0xff, 0x09, - 0x11, 0x81, 0x21, 0x90, 0x18, 0x91, 0xaa, 0x11, 0x11, 0x21, 0xc4, 0xff, 0x8a, 0x90, 0x89, 0x53, - 0x22, 0x82, 0xba, 0x9b, 0x42, 0x34, 0x12, 0xfa, 0xac, 0x18, 0x12, 0x10, 0x13, 0x88, 0x12, 0xc0, - 0x9c, 0x31, 0x02, 0x22, 0xfa, 0xdf, 0x89, 0xa0, 0x28, 0x25, 0x13, 0xa0, 0xbb, 0x1b, 0x45, 0x22, - 0x80, 0xcd, 0x9b, 0x30, 0x02, 0x31, 0x02, 0x10, 0x02, 0xdd, 0x0a, 0x33, 0x11, 0x82, 0xef, 0xbb, - 0x89, 0x88, 0x52, 0x44, 0x01, 0xa9, 0xac, 0x38, 0x25, 0x11, 0xa8, 0xcd, 0x8a, 0x31, 0x11, 0x12, - 0x12, 0x11, 0xd0, 0xac, 0x39, 0x23, 0x21, 0xc1, 0xff, 0x9a, 0x88, 0x01, 0x32, 0x35, 0x91, 0xdb, - 0x8a, 0x42, 0x13, 0x01, 0xd9, 0xbc, 0x1a, 0x33, 0x12, 0x20, 0x23, 0x11, 0xdc, 0x9b, 0x21, 0x23, - 0x22, 0xf8, 0xef, 0x89, 0x00, 0x01, 0x32, 0x14, 0xa8, 0xad, 0x18, 0x33, 0x13, 0x90, 0xfb, 0xac, - 0x20, 0x23, 0x01, 0x30, 0x12, 0xa0, 0xad, 0x8a, 0x31, 0x21, 0x23, 0xff, 0x9e, 0x08, 0x00, 0x01, - 0x43, 0x03, 0xda, 0x8a, 0x20, 0x33, 0x82, 0xa9, 0xcf, 0x8a, 0x42, 0x12, 0x18, 0x21, 0x01, 0xaa, - 0x99, 0xab, 0x21, 0x32, 0xb4, 0xff, 0x8f, 0x00, 0x00, 0x10, 0x33, 0x91, 0xbc, 0x08, 0x22, 0x33, - 0x90, 0xfa, 0xae, 0x28, 0x33, 0x01, 0x01, 0x41, 0x98, 0x08, 0xa9, 0x9c, 0x18, 0x22, 0xf8, 0xdf, - 0x08, 0x00, 0x10, 0x21, 0x24, 0xc8, 0x8a, 0x10, 0x11, 0x14, 0xa9, 0xdd, 0x8a, 0x41, 0x13, 0x11, - 0x08, 0x12, 0x89, 0x02, 0xdc, 0x8a, 0x01, 0x82, 0xef, 0x8a, 0x08, 0x00, 0x22, 0x41, 0x04, 0xab, - 0x09, 0x01, 0x52, 0x82, 0xcc, 0xbd, 0x18, 0x44, 0x12, 0x81, 0x19, 0x81, 0x38, 0xb3, 0xce, 0x09, - 0x08, 0xc1, 0xbd, 0x89, 0x80, 0x30, 0x25, 0x31, 0x92, 0x8d, 0x08, 0x08, 0x44, 0xb8, 0xce, 0x8a, - 0x31, 0x26, 0x21, 0x90, 0x09, 0x11, 0x42, 0xd9, 0xac, 0x88, 0x00, 0xb9, 0xbb, 0x9b, 0x98, 0x73, - 0x15, 0x21, 0xb0, 0x09, 0xa8, 0x48, 0x04, 0xfb, 0x9d, 0x00, 0x62, 0x12, 0x01, 0xb8, 0x28, 0x32, - 0x83, 0xde, 0x89, 0x89, 0x88, 0x89, 0xb8, 0x0a, 0xaa, 0x66, 0x81, 0x21, 0xa8, 0x98, 0x9b, 0x44, - 0xa1, 0xcf, 0x19, 0x10, 0x35, 0x11, 0x82, 0xac, 0x41, 0x23, 0xd8, 0xab, 0x99, 0x8a, 0x88, 0x12, - 0xbb, 0xc8, 0x1e, 0x16, 0x80, 0x12, 0x99, 0xaa, 0x49, 0x04, 0xfb, 0x9b, 0x10, 0x62, 0x15, 0x10, - 0xa8, 0x8b, 0x53, 0x81, 0xba, 0x9a, 0xba, 0x8a, 0x28, 0x93, 0x1b, 0xfc, 0x58, 0x82, 0x18, 0x82, - 0xbc, 0x09, 0x34, 0xa0, 0xbf, 0x0b, 0x21, 0x57, 0x02, 0x00, 0xab, 0x19, 0x16, 0xa8, 0x8a, 0xb8, - 0xab, 0x00, 0x31, 0x91, 0x90, 0xbf, 0x33, 0x11, 0x21, 0xf8, 0x9d, 0x21, 0x82, 0xa9, 0xeb, 0x0a, - 0x72, 0x35, 0x00, 0x98, 0xaa, 0x40, 0x93, 0xab, 0x98, 0xdc, 0x08, 0x80, 0x20, 0x21, 0xd1, 0x8a, - 0x30, 0x04, 0x99, 0xde, 0x19, 0x23, 0x98, 0x98, 0xbf, 0x18, 0x56, 0x03, 0x80, 0x99, 0x98, 0x31, - 0xc0, 0x8a, 0xa8, 0x9d, 0x01, 0x8a, 0x33, 0x15, 0xda, 0x8a, 0x34, 0x90, 0xdb, 0x9d, 0x31, 0x81, - 0x28, 0xe0, 0xac, 0x50, 0x35, 0x01, 0x98, 0x98, 0x89, 0x13, 0xcb, 0x99, 0xb9, 0x3a, 0xc3, 0x2b, - 0x27, 0x92, 0xcb, 0x39, 0x05, 0xb9, 0xbd, 0x0a, 0x33, 0x80, 0x32, 0xfd, 0x8a, 0x63, 0x24, 0x80, - 0x88, 0x99, 0x19, 0x91, 0xba, 0xaa, 0x99, 0x32, 0xdb, 0x72, 0x13, 0xb0, 0xad, 0x32, 0x91, 0xdc, - 0x9c, 0x08, 0x22, 0x10, 0xa2, 0xaf, 0x38, 0x56, 0x02, 0x08, 0xa8, 0x89, 0x88, 0x80, 0xca, 0x88, - 0x08, 0x98, 0x3a, 0x37, 0x13, 0xfa, 0x1a, 0x11, 0xb8, 0xbf, 0x89, 0x20, 0x13, 0x81, 0xca, 0x0b, - 0x72, 0x36, 0x01, 0x80, 0xa9, 0x99, 0x88, 0xb0, 0x9d, 0x11, 0x98, 0x09, 0x53, 0x32, 0x94, 0x9f, - 0x01, 0x01, 0xec, 0x9b, 0x98, 0x41, 0x12, 0xa9, 0x89, 0x80, 0x73, 0x27, 0x10, 0x98, 0x99, 0x89, - 0x89, 0xb8, 0x2a, 0x93, 0x9c, 0x32, 0x13, 0x46, 0xc0, 0x0a, 0x10, 0xd9, 0xbe, 0x9b, 0x09, 0x54, - 0xa1, 0x89, 0x11, 0x09, 0x57, 0x11, 0x00, 0x99, 0x99, 0x98, 0x9a, 0xaa, 0x42, 0xa8, 0x39, 0x15, - 0x18, 0x06, 0x9b, 0x08, 0x01, 0xed, 0xbc, 0x9b, 0x40, 0x14, 0xa9, 0x20, 0x92, 0x60, 0x16, 0x10, - 0x88, 0x99, 0x08, 0xb8, 0x9d, 0x19, 0x83, 0x8a, 0x44, 0x92, 0x40, 0xb1, 0x0b, 0x89, 0xa0, 0xef, - 0xdb, 0x0a, 0x42, 0x91, 0x89, 0x23, 0x88, 0x65, 0x02, 0x80, 0x98, 0x09, 0x01, 0xec, 0x89, 0x11, - 0x88, 0x28, 0x24, 0x88, 0x23, 0xca, 0x08, 0x9a, 0xd0, 0xce, 0xae, 0x29, 0x14, 0xa8, 0x10, 0x02, - 0x30, 0x37, 0x90, 0x80, 0x89, 0x20, 0xb2, 0xdf, 0x18, 0x81, 0x88, 0x22, 0x00, 0x30, 0x84, 0x9b, - 0xa0, 0x1a, 0xf9, 0xcf, 0x9c, 0x41, 0x81, 0x89, 0x11, 0x11, 0x51, 0x14, 0x99, 0x88, 0x28, 0x12, - 0xf9, 0x8f, 0x11, 0x88, 0x20, 0x01, 0x88, 0x18, 0x92, 0x8c, 0x00, 0x21, 0xfc, 0xcd, 0x0a, 0x23, - 0x90, 0x10, 0x02, 0x02, 0x73, 0x93, 0x8b, 0x10, 0x32, 0x82, 0xff, 0x1a, 0x01, 0x18, 0x12, 0x81, - 0x99, 0x20, 0xd0, 0x19, 0x21, 0x93, 0xff, 0xcb, 0x28, 0x02, 0x08, 0x21, 0x11, 0x80, 0x45, 0xb8, - 0x19, 0x21, 0x34, 0xe0, 0xad, 0x29, 0x01, 0x20, 0x13, 0xa0, 0x9b, 0x13, 0x9e, 0x21, 0x32, 0xf1, - 0xce, 0x9c, 0x31, 0x80, 0x20, 0x11, 0x01, 0x38, 0x07, 0xab, 0x21, 0x21, 0x03, 0xfb, 0x9d, 0x20, - 0x10, 0x22, 0x82, 0xba, 0x1a, 0xb2, 0x2c, 0x17, 0x81, 0xfa, 0xbd, 0x0a, 0x22, 0x00, 0x21, 0x01, - 0x80, 0x72, 0xa3, 0x8a, 0x22, 0x21, 0x91, 0xde, 0x9a, 0x22, 0x12, 0x43, 0xa0, 0xad, 0x10, 0xa8, - 0x73, 0x01, 0xa8, 0xce, 0xcb, 0x19, 0x22, 0x10, 0x12, 0x01, 0x89, 0x36, 0xa8, 0x38, 0x02, 0x21, - 0xb2, 0xff, 0x09, 0x21, 0x21, 0x13, 0xda, 0x9b, 0x01, 0x28, 0x27, 0x98, 0xca, 0xdb, 0x9d, 0x28, - 0x02, 0x20, 0x12, 0x98, 0x48, 0x14, 0x89, 0x03, 0xa8, 0x41, 0xc2, 0xbe, 0x19, 0x34, 0x42, 0xa1, - 0xcc, 0x09, 0x00, 0xc2, 0x02, 0x00, 0x00, 0x7d, 0x0b, 0x02, 0x01, 0x00, 0x28, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x78, 0x77, 0x77, 0x37, 0xc9, 0x8b, 0xa4, 0x8e, 0x61, 0xc3, 0x8e, 0x20, - 0x98, 0x88, 0x43, 0x9a, 0xd1, 0x48, 0x80, 0x10, 0x11, 0x81, 0x89, 0xa0, 0x88, 0x8a, 0xa1, 0x62, - 0xfa, 0xab, 0x2a, 0xa1, 0x0e, 0x02, 0x62, 0x02, 0x12, 0x30, 0x01, 0x00, 0xc0, 0x0b, 0xc0, 0xbc, - 0xdb, 0x68, 0x84, 0xbc, 0x19, 0x00, 0x80, 0x30, 0xb2, 0x1b, 0x84, 0xaa, 0x18, 0x14, 0x71, 0xb1, - 0x2c, 0x16, 0xa9, 0x89, 0x00, 0x88, 0x9a, 0x88, 0xab, 0x0d, 0x34, 0xf9, 0x2a, 0x17, 0xcb, 0x18, - 0xb8, 0x40, 0x91, 0x49, 0x24, 0x90, 0x19, 0x03, 0xba, 0xcb, 0x30, 0x24, 0x98, 0x08, 0x81, 0x40, - 0xb3, 0xbe, 0xa9, 0x19, 0x80, 0x90, 0x51, 0xb9, 0xff, 0x0c, 0x23, 0x11, 0x18, 0x35, 0x03, 0xa9, - 0x08, 0x90, 0x20, 0xfb, 0xa9, 0x2b, 0x95, 0x3b, 0x15, 0xeb, 0x9a, 0x88, 0x80, 0x8a, 0x12, 0x50, - 0x93, 0x1d, 0x15, 0x88, 0x98, 0x28, 0x82, 0x30, 0x18, 0xf2, 0x9f, 0x20, 0x81, 0xbc, 0x1b, 0x12, - 0x00, 0x29, 0x77, 0xa1, 0xad, 0x19, 0x01, 0x00, 0x90, 0x1a, 0x37, 0x80, 0x20, 0x92, 0x9b, 0xea, - 0x9b, 0x41, 0x82, 0x00, 0x01, 0x18, 0x03, 0xee, 0x09, 0x01, 0x99, 0x52, 0x88, 0x21, 0x80, 0x99, - 0x90, 0xac, 0x29, 0x47, 0x90, 0x31, 0x34, 0xb8, 0xae, 0xba, 0x2a, 0xb1, 0x9d, 0x53, 0x01, 0x00, - 0xd9, 0x0a, 0x02, 0x01, 0x19, 0xb1, 0x1d, 0x17, 0x98, 0xba, 0x3a, 0x25, 0xb2, 0x9f, 0x32, 0xb8, - 0xcb, 0x29, 0x04, 0x8b, 0x21, 0x13, 0x40, 0x37, 0x01, 0xda, 0x9c, 0x21, 0xa0, 0xdb, 0xab, 0x28, - 0x13, 0x61, 0x26, 0x98, 0x88, 0x00, 0xb8, 0xaa, 0xac, 0x20, 0x81, 0x58, 0x27, 0xc9, 0x28, 0x93, - 0xbc, 0x18, 0x21, 0x01, 0x62, 0x83, 0x40, 0x82, 0xca, 0x0b, 0x13, 0xfb, 0x0a, 0x08, 0x91, 0xbf, - 0x10, 0x80, 0x91, 0x1a, 0x36, 0x81, 0x18, 0x22, 0x21, 0xa0, 0xed, 0xac, 0x22, 0xb1, 0x2a, 0x35, - 0xb8, 0xbd, 0xaa, 0x00, 0xaa, 0x02, 0x8b, 0x42, 0x67, 0x01, 0x90, 0x9a, 0x10, 0x46, 0x03, 0x10, - 0x98, 0xbb, 0xad, 0xa9, 0xae, 0x09, 0xa0, 0xac, 0x73, 0x93, 0x89, 0x32, 0x90, 0x89, 0x34, 0x91, - 0x89, 0x24, 0xfc, 0x0c, 0x32, 0x03, 0xb9, 0x20, 0x25, 0xa1, 0x10, 0xa0, 0xac, 0x9a, 0x9c, 0x28, - 0x22, 0x25, 0xb9, 0x99, 0xdc, 0xac, 0x51, 0xb0, 0x8c, 0x08, 0x71, 0x23, 0x82, 0x00, 0xc0, 0x8c, - 0x08, 0xb8, 0x1a, 0xa0, 0x61, 0x91, 0x09, 0x91, 0xdc, 0xab, 0x63, 0x02, 0xd9, 0x8a, 0x02, 0xab, - 0x38, 0x36, 0x81, 0x0a, 0x54, 0x01, 0x20, 0x94, 0x0a, 0x26, 0xfb, 0x8b, 0x98, 0x99, 0x21, 0x01, - 0x81, 0xda, 0xbc, 0x19, 0x34, 0x02, 0x11, 0x52, 0x13, 0x98, 0x51, 0x34, 0xe1, 0xae, 0x31, 0x82, - 0x0a, 0x43, 0xa9, 0x9a, 0x9a, 0x08, 0x10, 0xea, 0x9c, 0x8a, 0x44, 0x43, 0x23, 0xb9, 0x9d, 0x80, - 0x9a, 0x21, 0x90, 0xad, 0x18, 0x32, 0x15, 0x98, 0xaa, 0x41, 0xfb, 0x8c, 0x90, 0x89, 0x53, 0x33, - 0x81, 0xab, 0x12, 0xeb, 0xca, 0x1a, 0x12, 0x12, 0xea, 0x8a, 0x72, 0x92, 0x8a, 0x44, 0x22, 0x20, - 0xd8, 0xac, 0xbb, 0x9a, 0x73, 0x92, 0x18, 0x02, 0x81, 0xcb, 0xa9, 0xaa, 0x09, 0x51, 0x12, 0xb0, - 0x78, 0x06, 0x08, 0x00, 0x90, 0x18, 0x03, 0x42, 0x91, 0x60, 0x24, 0x81, 0xdc, 0x9b, 0x21, 0xc9, - 0x99, 0x88, 0xd9, 0x09, 0x11, 0x40, 0x15, 0xd9, 0xbb, 0x18, 0x81, 0x51, 0x03, 0xbc, 0x38, 0x23, - 0x01, 0xa2, 0xbf, 0x19, 0xa0, 0xbd, 0xac, 0x71, 0x13, 0x89, 0x31, 0x33, 0x33, 0x12, 0xf9, 0xbe, - 0xaa, 0xbb, 0x1b, 0x53, 0x53, 0x13, 0x91, 0xab, 0x22, 0xa9, 0x9a, 0x98, 0x78, 0x46, 0x01, 0x9a, - 0x8a, 0xcc, 0x8b, 0x09, 0x80, 0x89, 0x80, 0x90, 0x58, 0x16, 0x42, 0x83, 0x18, 0x45, 0x03, 0x98, - 0x20, 0x20, 0xc3, 0x9d, 0x11, 0x88, 0xcc, 0xca, 0x9a, 0xa8, 0xcc, 0xac, 0x99, 0x89, 0x10, 0x25, - 0x12, 0x62, 0x24, 0x90, 0x09, 0x22, 0xb8, 0xbd, 0x10, 0x11, 0x08, 0x91, 0x18, 0xc0, 0xcf, 0x09, - 0x20, 0x53, 0x13, 0x08, 0xd8, 0x9c, 0x88, 0x20, 0xfa, 0xbc, 0x8a, 0x90, 0x40, 0x45, 0x34, 0x88, - 0x08, 0x01, 0x00, 0x8a, 0xa8, 0xab, 0xfc, 0x8c, 0x31, 0x03, 0x09, 0xa1, 0xad, 0x88, 0x21, 0x11, - 0x03, 0x1a, 0x77, 0x22, 0x02, 0x89, 0x99, 0xa9, 0x08, 0x44, 0x12, 0xc9, 0x38, 0x31, 0xd1, 0xbe, - 0x8a, 0xda, 0x99, 0xb9, 0xaf, 0x8a, 0x21, 0x32, 0x35, 0xa1, 0x9c, 0x19, 0x91, 0x51, 0x36, 0x91, - 0xaa, 0x38, 0x36, 0xc8, 0xad, 0x38, 0x22, 0x23, 0xb8, 0xcc, 0x9c, 0x98, 0xab, 0x89, 0x20, 0x53, - 0x11, 0x81, 0x80, 0xba, 0x60, 0x13, 0xba, 0x2a, 0x77, 0x12, 0x88, 0xab, 0xca, 0x19, 0x22, 0x22, - 0xb8, 0xcc, 0x58, 0x14, 0x99, 0x0a, 0x90, 0x9a, 0x88, 0xac, 0x18, 0x36, 0x33, 0x44, 0x54, 0x34, - 0x01, 0xa9, 0xbc, 0xab, 0xe9, 0x8a, 0x22, 0x81, 0xab, 0xa0, 0xcc, 0x09, 0x90, 0x1a, 0x83, 0xef, - 0xab, 0x20, 0x15, 0x10, 0x21, 0x02, 0x11, 0x62, 0x14, 0xb9, 0x8c, 0x63, 0x02, 0xa8, 0x8a, 0x31, - 0xe9, 0xbb, 0xbb, 0xcd, 0x09, 0x52, 0x02, 0xa9, 0xa9, 0x28, 0x35, 0x01, 0xca, 0x8b, 0x45, 0x03, - 0xb9, 0x1a, 0x81, 0x32, 0x08, 0x66, 0x12, 0xb8, 0x8b, 0xb0, 0xad, 0x19, 0x01, 0xea, 0x08, 0x98, - 0x31, 0x21, 0x14, 0x43, 0x11, 0x84, 0x9c, 0x61, 0x37, 0x12, 0x91, 0xeb, 0xcc, 0x8a, 0x99, 0x88, - 0x52, 0x03, 0x11, 0x90, 0x09, 0x02, 0xfd, 0x9a, 0x08, 0x99, 0x28, 0x36, 0x02, 0x99, 0xaa, 0x28, - 0x27, 0x81, 0x08, 0x81, 0xba, 0x51, 0x84, 0x89, 0x01, 0xda, 0x9b, 0x08, 0xfa, 0x9a, 0x81, 0xac, - 0x40, 0x83, 0xdc, 0x89, 0x10, 0x11, 0x45, 0x12, 0x88, 0x80, 0x21, 0x36, 0x81, 0xab, 0x08, 0x00, - 0xa0, 0x00, 0xfb, 0xbf, 0x2a, 0x24, 0x81, 0x98, 0x9b, 0x30, 0x47, 0xa0, 0xaa, 0x9a, 0x00, 0x32, - 0x12, 0x55, 0x02, 0xca, 0x8a, 0xa0, 0xbd, 0x30, 0x05, 0xaa, 0x99, 0x08, 0x21, 0x04, 0xce, 0x8a, - 0xa9, 0x8b, 0x18, 0x34, 0x53, 0x25, 0x12, 0x00, 0x11, 0x24, 0xdb, 0x8a, 0x98, 0xa9, 0x19, 0xf8, - 0xad, 0x28, 0x53, 0x22, 0x98, 0x89, 0x99, 0xf8, 0xae, 0x98, 0x08, 0x81, 0x11, 0x28, 0x35, 0x98, - 0x00, 0x32, 0x83, 0x8b, 0x77, 0x14, 0x10, 0x10, 0x90, 0x9a, 0xc8, 0x8b, 0xb9, 0xca, 0x9b, 0x01, - 0x89, 0x80, 0xec, 0xbc, 0x09, 0x55, 0x22, 0x90, 0x58, 0x24, 0x08, 0xb8, 0xab, 0xaa, 0x31, 0xa9, - 0xfa, 0xad, 0x88, 0x30, 0x12, 0x00, 0x9b, 0x21, 0x55, 0x12, 0xa0, 0xcf, 0x89, 0x10, 0x81, 0x42, - 0x34, 0x82, 0x08, 0x02, 0xba, 0xee, 0xab, 0x08, 0x88, 0x73, 0x24, 0x02, 0x89, 0xba, 0x9c, 0xba, - 0x8c, 0x98, 0xcc, 0x0a, 0x10, 0x01, 0x53, 0x44, 0x12, 0x00, 0x90, 0x09, 0x36, 0x90, 0x30, 0x33, - 0x81, 0xcb, 0x30, 0xc9, 0x29, 0x25, 0xd1, 0x9d, 0x99, 0x89, 0xa8, 0xaa, 0xdc, 0xbc, 0x89, 0x00, - 0x41, 0x55, 0x92, 0x0a, 0x42, 0x33, 0x91, 0x9b, 0xab, 0x81, 0xb9, 0x8b, 0xf9, 0x9d, 0x41, 0x35, - 0xa0, 0xab, 0x88, 0xec, 0xac, 0x10, 0x22, 0xa0, 0x40, 0x45, 0x23, 0x00, 0x10, 0xc1, 0xbf, 0x8a, - 0x11, 0x81, 0x8a, 0x43, 0xb2, 0xdf, 0x89, 0x08, 0x11, 0x33, 0x25, 0x98, 0xa0, 0x8a, 0xb8, 0xbc, - 0x18, 0x33, 0x54, 0x24, 0x00, 0xca, 0x8b, 0x41, 0x25, 0x92, 0x39, 0x27, 0x80, 0x20, 0xc0, 0xbf, - 0x9b, 0x08, 0x98, 0x89, 0xaa, 0x3a, 0x37, 0x81, 0xb9, 0x0b, 0xa1, 0x2a, 0x43, 0x25, 0x32, 0x33, - 0x92, 0x19, 0x14, 0x00, 0xd8, 0xce, 0x9a, 0x10, 0x90, 0x0a, 0x37, 0xf8, 0x8a, 0x21, 0xa9, 0x8a, - 0x99, 0x33, 0xa9, 0x71, 0x25, 0x12, 0x90, 0xaa, 0x41, 0xa1, 0xbf, 0xa9, 0xab, 0x20, 0x34, 0xa8, - 0x60, 0x91, 0x99, 0xcd, 0x19, 0x12, 0x80, 0x99, 0x73, 0x27, 0xa8, 0x19, 0x33, 0x90, 0x9c, 0x88, - 0x12, 0xb9, 0x8a, 0x54, 0x33, 0x45, 0x82, 0xeb, 0xac, 0x8b, 0x12, 0x98, 0x88, 0x9a, 0x89, 0x00, - 0x20, 0x05, 0xbd, 0x9a, 0x98, 0x48, 0x57, 0x11, 0x99, 0x20, 0x53, 0x33, 0x03, 0xda, 0xcb, 0x89, - 0xca, 0x08, 0x90, 0xac, 0x08, 0x01, 0x12, 0xc9, 0x9c, 0x18, 0x08, 0x65, 0x25, 0x90, 0x09, 0x90, - 0xab, 0x40, 0x92, 0x8b, 0xfb, 0x9c, 0x89, 0x22, 0x42, 0x03, 0x89, 0xcb, 0x18, 0x08, 0x23, 0x12, - 0xa8, 0x75, 0x17, 0x00, 0x10, 0x98, 0xbb, 0xc9, 0x9b, 0x0a, 0x73, 0x12, 0x54, 0x81, 0xa9, 0x89, - 0x89, 0xa0, 0x9b, 0xd9, 0x1a, 0xb1, 0xbf, 0xaa, 0x19, 0x90, 0x09, 0x74, 0x82, 0x09, 0x10, 0x88, - 0x21, 0x73, 0x46, 0x12, 0x90, 0xab, 0x08, 0xb9, 0xad, 0xaa, 0x10, 0x08, 0x51, 0x14, 0xcb, 0x08, - 0xa8, 0x89, 0x42, 0xfc, 0x9c, 0x08, 0xa8, 0x09, 0x42, 0x23, 0x63, 0x34, 0x82, 0x9a, 0x90, 0x08, - 0xcb, 0xa0, 0xef, 0x88, 0x08, 0x98, 0x41, 0x25, 0x01, 0x98, 0x89, 0x20, 0x92, 0x3a, 0x33, 0x46, - 0x32, 0x81, 0xab, 0xd9, 0xbf, 0x0a, 0x83, 0xbb, 0x8a, 0x32, 0x82, 0xab, 0x18, 0x98, 0xbf, 0xbd, - 0x40, 0x25, 0x11, 0x11, 0x90, 0x8a, 0xb8, 0xde, 0x0a, 0x42, 0x84, 0xaa, 0x73, 0x23, 0x80, 0x28, - 0x90, 0x88, 0xfb, 0x9c, 0x18, 0x98, 0x49, 0x05, 0xba, 0x0a, 0xc9, 0x9a, 0x00, 0xda, 0xaa, 0x30, - 0xa1, 0x71, 0x37, 0x22, 0x80, 0x99, 0x88, 0xa0, 0x9b, 0xaa, 0xdb, 0xbe, 0x19, 0x53, 0x35, 0x23, - 0x00, 0xb9, 0x0a, 0x14, 0xeb, 0xaa, 0x10, 0xa0, 0x09, 0x53, 0x13, 0x30, 0x27, 0xc9, 0xac, 0x31, - 0x82, 0xeb, 0x89, 0x00, 0xb9, 0x9c, 0x08, 0x01, 0x99, 0x80, 0x0b, 0x56, 0x43, 0x91, 0x88, 0x21, - 0x12, 0xda, 0x2a, 0x33, 0xd0, 0x59, 0x24, 0xa9, 0xcb, 0x38, 0x82, 0xce, 0x89, 0x19, 0x81, 0xbc, - 0x58, 0x15, 0x99, 0x00, 0xb8, 0x9a, 0x9a, 0xde, 0xab, 0x10, 0x32, 0x22, 0x32, 0x37, 0x22, 0x42, - 0xa8, 0x3a, 0x25, 0xa8, 0xac, 0x38, 0x47, 0x91, 0x89, 0x89, 0x08, 0xfb, 0xbc, 0x18, 0x81, 0x18, - 0x14, 0x98, 0x51, 0x35, 0x14, 0x01, 0xd9, 0xaa, 0xba, 0xcd, 0x8a, 0x22, 0x01, 0x89, 0x81, 0x09, - 0x33, 0x92, 0x1c, 0x25, 0x92, 0x08, 0x80, 0x8b, 0x43, 0xa8, 0x29, 0x02, 0x66, 0x34, 0xc0, 0x9b, - 0x18, 0x82, 0x30, 0x05, 0xba, 0xbf, 0x63, 0x80, 0xcc, 0x8a, 0x00, 0x10, 0x12, 0xca, 0xbd, 0xbc, - 0x2a, 0x23, 0x02, 0x10, 0x43, 0x44, 0x44, 0x22, 0x32, 0xa3, 0xce, 0xba, 0x18, 0x00, 0x44, 0x80, - 0x00, 0x20, 0xa2, 0xac, 0xcb, 0xdb, 0x8a, 0xa8, 0x30, 0x36, 0x12, 0x42, 0xd0, 0xbe, 0x08, 0x20, - 0x81, 0xaa, 0x50, 0x81, 0x08, 0x52, 0x02, 0x9a, 0x10, 0xcc, 0x9b, 0xc8, 0x8c, 0x99, 0xc8, 0x48, - 0x24, 0x11, 0x54, 0x23, 0x01, 0x80, 0x31, 0x26, 0xc9, 0xbd, 0xab, 0x08, 0xa0, 0xbc, 0x50, 0x24, - 0xa0, 0xcb, 0xab, 0x28, 0x35, 0x81, 0x19, 0x13, 0x99, 0x29, 0x57, 0xfa, 0xbb, 0x18, 0x31, 0x43, - 0x04, 0xa8, 0x19, 0x22, 0x13, 0x01, 0x52, 0xb0, 0xae, 0x18, 0x23, 0x01, 0xd8, 0xcd, 0x9a, 0x00, - 0x00, 0xb8, 0xbd, 0x8a, 0x18, 0x57, 0x13, 0xa8, 0x8a, 0xa9, 0x18, 0x44, 0x23, 0x81, 0xca, 0xbc, - 0xab, 0x19, 0x34, 0xc8, 0xac, 0x51, 0x23, 0xa0, 0xac, 0x28, 0x45, 0x32, 0x81, 0x9a, 0x8a, 0x91, - 0xee, 0xab, 0x10, 0x11, 0x20, 0x46, 0x22, 0x00, 0xb9, 0xbf, 0xab, 0x29, 0x01, 0xda, 0xab, 0x28, - 0x55, 0x22, 0x88, 0x80, 0x88, 0x21, 0x31, 0x14, 0xc8, 0xaf, 0x28, 0x24, 0x32, 0x82, 0xeb, 0xaa, - 0x38, 0x25, 0x90, 0x9a, 0xbb, 0xcc, 0x28, 0x32, 0x16, 0xa8, 0xba, 0x09, 0xca, 0x09, 0xa9, 0x8c, - 0x64, 0x02, 0x99, 0x19, 0x34, 0x12, 0xfb, 0x1a, 0x43, 0x81, 0x00, 0xda, 0x8a, 0x08, 0x81, 0x9a, - 0x88, 0xcb, 0x1b, 0x67, 0x81, 0x00, 0x80, 0x21, 0x73, 0x81, 0xbb, 0x9d, 0x10, 0x01, 0x00, 0x98, - 0xcd, 0xbb, 0x89, 0xda, 0xac, 0x40, 0x02, 0x40, 0x44, 0x23, 0x40, 0x82, 0xcc, 0x19, 0x13, 0x81, - 0x90, 0xbf, 0xbb, 0x28, 0x22, 0x23, 0x00, 0x64, 0x24, 0x01, 0x80, 0x88, 0xe9, 0xbc, 0x9b, 0x10, - 0xa9, 0xbb, 0x88, 0x8b, 0x37, 0x08, 0x00, 0x43, 0xb9, 0x18, 0xab, 0x52, 0x44, 0xc0, 0xbd, 0x29, - 0x15, 0x08, 0x10, 0x21, 0x23, 0xb8, 0xae, 0x19, 0xb9, 0x9d, 0x44, 0x08, 0x31, 0x72, 0x13, 0x99, - 0xfa, 0x9a, 0x89, 0xa9, 0x89, 0x22, 0x92, 0xec, 0x9a, 0x62, 0x25, 0x82, 0x18, 0xa0, 0xab, 0xac, - 0x88, 0xaa, 0x0a, 0x41, 0x36, 0x23, 0xa9, 0x71, 0x81, 0x01, 0x01, 0xeb, 0x0b, 0x32, 0x25, 0x00, - 0x81, 0x20, 0xe8, 0xcd, 0xbb, 0x9a, 0x9a, 0x22, 0x45, 0x22, 0x11, 0x98, 0x11, 0x98, 0xa8, 0x39, - 0xfc, 0x9b, 0x99, 0x22, 0xa9, 0xf9, 0x8c, 0x08, 0x38, 0x27, 0x31, 0x12, 0x10, 0x34, 0x82, 0xaa, - 0xda, 0xed, 0x9b, 0x09, 0x21, 0x24, 0x91, 0x09, 0x01, 0xa9, 0x99, 0x08, 0xa0, 0xdb, 0xbd, 0x70, - 0x27, 0x01, 0x98, 0xaa, 0x28, 0xa3, 0xae, 0x9a, 0x20, 0x82, 0xca, 0x28, 0x45, 0x33, 0x13, 0x11, - 0x83, 0xeb, 0x0a, 0x12, 0xfa, 0xbc, 0x99, 0x10, 0x01, 0x28, 0x67, 0x81, 0x98, 0x99, 0x99, 0xaa, - 0x99, 0x01, 0x30, 0xc2, 0x9b, 0x41, 0x43, 0xb8, 0xcc, 0x8a, 0x28, 0x36, 0x10, 0x12, 0x31, 0x46, - 0x02, 0xcc, 0xbb, 0x89, 0x89, 0xc8, 0x0c, 0x13, 0x44, 0x00, 0x63, 0x82, 0x99, 0x89, 0xaa, 0x21, - 0xe9, 0x8c, 0x23, 0xb0, 0x9b, 0xd9, 0xbf, 0x19, 0x83, 0x08, 0x52, 0x35, 0x12, 0x80, 0x90, 0x10, - 0x20, 0xd8, 0xbb, 0xbe, 0x08, 0x81, 0x99, 0x50, 0x35, 0x01, 0x18, 0xa8, 0x0a, 0x55, 0xe0, 0x8b, - 0x00, 0x32, 0x11, 0x24, 0x01, 0xcf, 0xaa, 0xaa, 0xaa, 0x8a, 0x82, 0x99, 0x60, 0x24, 0x53, 0x35, - 0x01, 0x88, 0x08, 0xa9, 0xbd, 0xdc, 0x8b, 0x01, 0x18, 0x20, 0x14, 0x81, 0x0b, 0x26, 0x91, 0x88, - 0x22, 0x03, 0x20, 0x31, 0xb0, 0xf0, 0xbf, 0xeb, 0x89, 0x89, 0x10, 0x43, 0x23, 0x11, 0x33, 0x43, - 0x23, 0xed, 0x9b, 0x99, 0xdb, 0x30, 0x42, 0x23, 0xa8, 0x08, 0xa8, 0xec, 0x99, 0x1a, 0x33, 0x33, - 0x73, 0x35, 0x12, 0xa8, 0xbe, 0x8b, 0x10, 0xd8, 0x8a, 0x32, 0x02, 0xca, 0xaa, 0x52, 0x91, 0x10, - 0x01, 0xb8, 0xab, 0x09, 0x77, 0x83, 0xa8, 0x9a, 0xeb, 0xac, 0x19, 0x35, 0x12, 0x80, 0x88, 0x88, - 0x11, 0xa8, 0x8a, 0x48, 0x34, 0x44, 0xa8, 0xbc, 0xbe, 0xbd, 0xad, 0x20, 0x32, 0x32, 0x35, 0x34, - 0x11, 0x90, 0x99, 0xea, 0xad, 0x08, 0x32, 0x92, 0xda, 0x9b, 0x80, 0xb9, 0x1b, 0x36, 0xb8, 0x8d, - 0x54, 0x33, 0x02, 0x88, 0x88, 0x88, 0x11, 0xf9, 0xbe, 0xaa, 0x88, 0x20, 0x33, 0x45, 0x23, 0x01, - 0x12, 0xc9, 0xab, 0xd9, 0xbc, 0x9a, 0x00, 0x33, 0x24, 0x88, 0xf9, 0x0b, 0x43, 0x81, 0x8a, 0x20, - 0xd0, 0x19, 0x11, 0xb0, 0xad, 0x28, 0x63, 0x14, 0x88, 0x98, 0x0a, 0x34, 0xe1, 0xbe, 0x8a, 0x99, - 0x18, 0x34, 0x23, 0x21, 0x26, 0x21, 0xa2, 0xbb, 0x9b, 0x18, 0xdc, 0x20, 0x00, 0xf9, 0x0a, 0x90, - 0x50, 0x03, 0x41, 0x23, 0x91, 0xbd, 0xbc, 0x20, 0xc9, 0xbc, 0x8a, 0x08, 0x44, 0x81, 0x01, 0x48, - 0x24, 0x12, 0xa0, 0x0d, 0x24, 0x20, 0x57, 0x82, 0xa8, 0xdb, 0xac, 0x8a, 0x80, 0xba, 0x9b, 0x52, - 0x34, 0x22, 0x33, 0x33, 0x34, 0xb0, 0xcf, 0xaa, 0xb9, 0xac, 0x8a, 0x32, 0xb8, 0x3a, 0x62, 0x35, - 0x32, 0x33, 0xb1, 0xbd, 0x39, 0x05, 0x9a, 0xa8, 0xac, 0xaa, 0xeb, 0x19, 0x12, 0xa8, 0x0b, 0x33, - 0x22, 0x65, 0x14, 0x41, 0x82, 0x10, 0x80, 0x81, 0x9a, 0x30, 0x67, 0xc9, 0xbd, 0xba, 0x99, 0x01, - 0xa8, 0x8b, 0x31, 0x44, 0x55, 0x02, 0x00, 0x31, 0xa0, 0x89, 0x99, 0x98, 0xdd, 0xab, 0x20, 0x88, - 0x46, 0x31, 0x13, 0x81, 0xba, 0xdb, 0x1a, 0x83, 0xee, 0x9b, 0x08, 0x88, 0x08, 0x80, 0xa9, 0x9a, - 0x51, 0x27, 0x22, 0x32, 0x81, 0xa9, 0x29, 0x44, 0xb0, 0xad, 0x08, 0xfa, 0x8a, 0x81, 0xba, 0x8c, - 0x22, 0x80, 0x72, 0x26, 0x81, 0x21, 0xa8, 0xdc, 0x89, 0x32, 0x00, 0x88, 0x12, 0x98, 0xcc, 0x0a, - 0x32, 0x12, 0xa8, 0x28, 0xe2, 0xae, 0x30, 0x45, 0xa0, 0xaa, 0xa8, 0xbe, 0xa9, 0x9a, 0x10, 0x01, - 0xa8, 0x74, 0x17, 0x88, 0x11, 0x31, 0x33, 0x02, 0x20, 0x10, 0x91, 0xbe, 0x99, 0x9b, 0xf9, 0xcf, - 0xba, 0xa9, 0xa9, 0x09, 0x42, 0x34, 0x24, 0x42, 0x34, 0x80, 0x89, 0xb9, 0xbd, 0xa9, 0xa9, 0xac, - 0x08, 0x18, 0x13, 0x66, 0x23, 0x02, 0x99, 0x81, 0x89, 0x89, 0x33, 0xe9, 0xbb, 0xca, 0xab, 0xca, - 0xcb, 0xaa, 0x51, 0x47, 0x13, 0x02, 0x10, 0x81, 0xa9, 0x09, 0x91, 0xbc, 0xac, 0xea, 0xcb, 0xaa, - 0x88, 0x08, 0x53, 0x24, 0x43, 0x01, 0xa9, 0xba, 0xcc, 0x20, 0x34, 0x01, 0x21, 0x90, 0x49, 0x46, - 0x03, 0x00, 0xcd, 0x9a, 0x21, 0x03, 0x98, 0x09, 0xe9, 0xac, 0x89, 0x01, 0xda, 0xcd, 0x9a, 0x88, - 0x28, 0x54, 0x82, 0xab, 0x89, 0x10, 0x66, 0x13, 0x01, 0x18, 0x34, 0x00, 0xb0, 0x9c, 0xb9, 0xba, - 0xcf, 0xa9, 0xab, 0x39, 0x14, 0x80, 0x22, 0x32, 0x46, 0x33, 0x42, 0x03, 0xa9, 0xdb, 0xdb, 0xaa, - 0xaa, 0x21, 0x80, 0xcb, 0x89, 0xa8, 0x71, 0x17, 0x00, 0x20, 0x21, 0x04, 0xb8, 0xbb, 0xcc, 0xbc, - 0xaa, 0xaa, 0x09, 0x33, 0x52, 0x43, 0x46, 0x23, 0x11, 0x20, 0x12, 0x90, 0xcb, 0xbd, 0xcc, 0xbb, - 0x19, 0x00, 0xdb, 0x28, 0x84, 0x99, 0x9c, 0x03, 0xbb, 0xcb, 0x09, 0x73, 0x14, 0x08, 0x43, 0x44, - 0x82, 0xa8, 0x09, 0xb8, 0xac, 0xb9, 0x28, 0x35, 0x14, 0x30, 0xc1, 0x9b, 0xaa, 0x73, 0x43, 0xa1, - 0xcd, 0xbb, 0x09, 0xa9, 0x19, 0x82, 0x10, 0x71, 0x36, 0x53, 0x00, 0x88, 0x10, 0xc9, 0xaa, 0xab, - 0x88, 0xf9, 0x9c, 0x89, 0x80, 0x11, 0xa9, 0x70, 0x14, 0x88, 0x11, 0x12, 0x43, 0x12, 0xa0, 0x19, - 0xa8, 0xc9, 0xaf, 0xba, 0x99, 0xd9, 0x19, 0x73, 0x14, 0x90, 0x09, 0x33, 0x83, 0xcb, 0xbe, 0x9b, - 0xbb, 0xbc, 0xcb, 0xaa, 0x20, 0x73, 0x25, 0x12, 0x22, 0x33, 0x02, 0x89, 0x19, 0x03, 0x98, 0x99, - 0xb0, 0xff, 0x8a, 0x20, 0x92, 0xcb, 0xac, 0x20, 0x98, 0x08, 0x80, 0xda, 0x29, 0x46, 0x33, 0x23, - 0x12, 0x32, 0xb0, 0xbe, 0xdb, 0xad, 0x08, 0xa9, 0xad, 0xa8, 0x38, 0x34, 0x23, 0x10, 0x24, 0x21, - 0x54, 0x23, 0x90, 0xfa, 0xae, 0xaa, 0x8b, 0x32, 0x81, 0x41, 0x45, 0x11, 0x23, 0x22, 0x99, 0xf9, - 0x8b, 0x99, 0xeb, 0x8a, 0x21, 0xc9, 0xbb, 0x8a, 0x11, 0x91, 0x00, 0x54, 0x11, 0x41, 0x45, 0x02, - 0x32, 0xb9, 0xcd, 0x09, 0xc8, 0x29, 0x02, 0x21, 0x62, 0x33, 0x43, 0x02, 0x20, 0xa1, 0xdb, 0x9e, - 0x89, 0x00, 0xeb, 0xbb, 0xdb, 0xbb, 0x19, 0x01, 0x63, 0x34, 0x12, 0x10, 0x35, 0x91, 0xac, 0x18, - 0xa0, 0xcc, 0x38, 0x91, 0xaa, 0x69, 0xa1, 0x9a, 0x10, 0xaa, 0x0b, 0xd3, 0x8f, 0x32, 0x25, 0x31, - 0x03, 0x08, 0x22, 0x12, 0xd8, 0xce, 0x0a, 0xa0, 0xba, 0x9b, 0x28, 0x15, 0x19, 0x00, 0x44, 0x90, - 0x8a, 0x99, 0xb8, 0x9d, 0xcf, 0x98, 0xaa, 0xbc, 0x08, 0x18, 0x57, 0x22, 0x42, 0x35, 0x03, 0x80, - 0x00, 0xa8, 0x9b, 0x0a, 0x81, 0xce, 0xab, 0xca, 0xab, 0xba, 0xbc, 0x9b, 0x39, 0x47, 0x34, 0x12, - 0x90, 0xb8, 0x9d, 0x9a, 0x89, 0x10, 0x18, 0x21, 0x53, 0x24, 0x32, 0x25, 0xa0, 0x1c, 0x03, 0xfb, - 0x9a, 0xa9, 0x8b, 0x33, 0x33, 0xe0, 0x9c, 0x81, 0x98, 0x08, 0x30, 0x13, 0x62, 0x47, 0x04, 0xa8, - 0xab, 0x99, 0x89, 0x02, 0x18, 0x42, 0xe0, 0xbe, 0x99, 0xaa, 0x8a, 0x12, 0x98, 0x99, 0x73, 0x15, - 0x20, 0x33, 0x43, 0x33, 0x02, 0x60, 0x83, 0xda, 0x99, 0x9b, 0x99, 0x33, 0x91, 0xad, 0x99, 0x21, - 0x29, 0x67, 0x01, 0xac, 0x89, 0xcb, 0xbd, 0xad, 0x9b, 0x08, 0x00, 0x20, 0x18, 0x46, 0x33, 0x24, - 0x22, 0x22, 0x42, 0x32, 0x81, 0x99, 0xdc, 0xbd, 0xbb, 0xbc, 0x99, 0x00, 0x11, 0x64, 0x23, 0x01, - 0x00, 0x98, 0xa9, 0xaa, 0xdd, 0x9a, 0x09, 0xc8, 0x9b, 0x63, 0x03, 0x80, 0x20, 0x45, 0x01, 0x00, - 0xb8, 0x9c, 0xa8, 0xcc, 0x9b, 0x22, 0x00, 0x32, 0xfd, 0x9b, 0x30, 0x36, 0x34, 0x01, 0x10, 0x92, - 0xa9, 0x6a, 0x25, 0x81, 0x38, 0x04, 0x98, 0x0a, 0xd9, 0xbe, 0xbc, 0x9b, 0xdb, 0x9b, 0x10, 0x08, - 0x00, 0x38, 0x45, 0x12, 0x80, 0x38, 0xd8, 0x48, 0x55, 0x02, 0x08, 0xa8, 0x9b, 0x9a, 0x22, 0x64, - 0x01, 0x31, 0x23, 0xc8, 0xaa, 0x9b, 0xfb, 0xab, 0xba, 0x9a, 0xca, 0xac, 0xa9, 0xbc, 0x8a, 0x43, - 0x67, 0x23, 0x32, 0x13, 0x01, 0x99, 0xa0, 0xbe, 0xcb, 0xaa, 0x89, 0xa9, 0x8b, 0x21, 0x14, 0x09, - 0x44, 0x33, 0x34, 0x23, 0x21, 0x44, 0x90, 0x10, 0xb1, 0xcf, 0x30, 0x13, 0xb8, 0x28, 0xc0, 0x30, - 0x23, 0xfc, 0x9e, 0x98, 0xca, 0x9c, 0x01, 0xad, 0x19, 0x91, 0x89, 0x32, 0x03, 0x40, 0x03, 0x08, - 0x52, 0x24, 0x09, 0x45, 0x34, 0x03, 0x52, 0x24, 0x82, 0xa9, 0xeb, 0xcc, 0xaa, 0x9b, 0x80, 0x08, - 0x11, 0x9a, 0x22, 0xb1, 0xdf, 0x31, 0x23, 0x81, 0x11, 0x11, 0x12, 0xba, 0xcd, 0xcb, 0x8b, 0x62, - 0x12, 0x18, 0x44, 0x13, 0x32, 0x16, 0x00, 0xb9, 0xab, 0xcc, 0xab, 0x9c, 0xa8, 0x38, 0xd0, 0xac, - 0x22, 0x32, 0x55, 0x12, 0x73, 0x82, 0x99, 0x00, 0xc9, 0xac, 0x98, 0xaa, 0xbb, 0x09, 0x43, 0x92, - 0xab, 0xb9, 0xcf, 0x18, 0x90, 0x08, 0x42, 0x45, 0x03, 0x99, 0x08, 0x42, 0x22, 0x90, 0x79, 0x45, - 0x12, 0x12, 0xa0, 0xbc, 0x89, 0xa1, 0xad, 0xac, 0x08, 0xc9, 0xac, 0x09, 0x91, 0xbe, 0x9b, 0x22, - 0x89, 0x10, 0x23, 0x88, 0x76, 0x23, 0x43, 0x43, 0x23, 0x14, 0xa9, 0x89, 0x80, 0xbe, 0x08, 0xb8, - 0xbe, 0x9a, 0x0a, 0x91, 0xdb, 0x8d, 0x44, 0x02, 0x89, 0x31, 0x42, 0x83, 0x9c, 0x89, 0xb0, 0x8a, - 0xc9, 0xad, 0x63, 0x11, 0x33, 0x83, 0xa9, 0xb9, 0xcf, 0x89, 0xb9, 0xae, 0x89, 0x08, 0xa9, 0x19, - 0x72, 0x25, 0x01, 0x81, 0x31, 0x34, 0x34, 0x21, 0x21, 0x90, 0xca, 0xbb, 0xbf, 0x99, 0x10, 0xe8, - 0xbb, 0x9a, 0x99, 0xbc, 0x8a, 0x88, 0xa8, 0x61, 0x45, 0x04, 0x99, 0x01, 0x91, 0x9d, 0x40, 0x05, - 0x18, 0x36, 0x82, 0xa9, 0x28, 0xc9, 0xba, 0x2a, 0x01, 0x81, 0x9b, 0x73, 0xa4, 0x9c, 0x98, 0xdb, - 0xdb, 0x8a, 0x8a, 0x11, 0x53, 0x35, 0x33, 0x01, 0x12, 0x01, 0x90, 0xb9, 0x09, 0x90, 0xcf, 0x9a, - 0xc9, 0xdd, 0xab, 0x09, 0x12, 0x98, 0x51, 0x26, 0x81, 0x01, 0x11, 0x33, 0x81, 0x99, 0x89, 0xba, - 0x9a, 0xce, 0x80, 0x9a, 0x71, 0x25, 0x00, 0x18, 0x32, 0xc0, 0xcd, 0x9b, 0xb8, 0xbf, 0x9b, 0x81, - 0x09, 0xa9, 0x08, 0x35, 0x21, 0x64, 0x33, 0x22, 0x21, 0x24, 0x01, 0x89, 0x53, 0xa1, 0x29, 0xa0, - 0xdd, 0x99, 0xca, 0xbb, 0xca, 0xbb, 0xba, 0xab, 0x68, 0x34, 0x12, 0x80, 0x32, 0x83, 0x9c, 0x73, - 0x14, 0x88, 0x43, 0x80, 0x38, 0xa2, 0xbf, 0xcb, 0xcc, 0x19, 0x11, 0x22, 0x34, 0x90, 0xab, 0xa9, - 0xaa, 0x2a, 0xf0, 0x8b, 0x52, 0x12, 0x40, 0x26, 0x90, 0xca, 0x19, 0x22, 0x34, 0x33, 0x34, 0xb1, - 0xcf, 0x8a, 0xaa, 0xbc, 0xbb, 0x99, 0x18, 0x80, 0x61, 0x14, 0x02, 0x19, 0x25, 0xa8, 0x41, 0x12, - 0x90, 0x80, 0x00, 0x13, 0x30, 0x57, 0x12, 0x10, 0x18, 0x26, 0x12, 0xa8, 0xfb, 0xbd, 0xbb, 0xca, - 0x8a, 0xcb, 0x9a, 0x09, 0x00, 0x54, 0x02, 0x32, 0x34, 0x04, 0x00, 0x08, 0x34, 0x22, 0x22, 0x03, - 0xa9, 0x10, 0xfd, 0x9d, 0xa9, 0x9a, 0x99, 0xa9, 0x8c, 0xba, 0x10, 0x73, 0x92, 0x8b, 0x65, 0x82, - 0x30, 0x24, 0x02, 0xa9, 0x08, 0x80, 0xeb, 0xab, 0x8a, 0x20, 0x91, 0x89, 0x09, 0x14, 0x9d, 0xe8, - 0xaf, 0x09, 0x80, 0x0a, 0x10, 0x90, 0x28, 0x08, 0x16, 0xb9, 0x70, 0x37, 0x02, 0x20, 0x33, 0x33, - 0x34, 0x14, 0xc9, 0xcd, 0xac, 0x98, 0xa9, 0xaa, 0x08, 0xc9, 0x9a, 0x18, 0x22, 0xb8, 0x8a, 0x64, - 0x83, 0x1a, 0x64, 0x23, 0x12, 0x98, 0x11, 0x41, 0x34, 0x34, 0x00, 0x90, 0xcd, 0xbc, 0x98, 0xbc, - 0x8a, 0xb9, 0x9a, 0xdd, 0x9a, 0x33, 0x10, 0x33, 0x10, 0x80, 0x74, 0x43, 0x03, 0x52, 0x03, 0x01, - 0xa9, 0x09, 0x99, 0xfb, 0xbe, 0xaa, 0x8a, 0x41, 0xa1, 0x9b, 0x12, 0xd9, 0x29, 0xd0, 0xac, 0x39, - 0x17, 0x11, 0x11, 0x26, 0x81, 0x98, 0x18, 0x34, 0x90, 0x09, 0x42, 0xb9, 0xca, 0xbc, 0x9a, 0x09, - 0x81, 0xc8, 0xcd, 0xcb, 0xbb, 0xab, 0xa9, 0x0b, 0x02, 0x8b, 0x76, 0x35, 0x13, 0x32, 0x53, 0x82, - 0x80, 0x63, 0x02, 0xb9, 0x9c, 0xba, 0x88, 0xbc, 0xb9, 0xba, 0xdf, 0x09, 0x90, 0x10, 0x22, 0xb9, - 0x52, 0x01, 0x20, 0x32, 0xa0, 0x54, 0x91, 0x49, 0x37, 0x82, 0x9a, 0x0a, 0x80, 0xb9, 0xbd, 0x9a, - 0x88, 0x81, 0xbc, 0xa0, 0xdf, 0x9a, 0x28, 0x81, 0xa8, 0x68, 0x14, 0x01, 0x99, 0x52, 0x36, 0x80, - 0x31, 0x23, 0x80, 0x12, 0xca, 0x9c, 0x90, 0xaf, 0xa8, 0xa9, 0xac, 0xaa, 0xfb, 0xbc, 0x99, 0x9a, - 0x62, 0x33, 0x10, 0x35, 0x13, 0x11, 0x98, 0x10, 0x63, 0x13, 0x88, 0x32, 0xd8, 0xab, 0x80, 0xb9, - 0xdf, 0x9a, 0xa9, 0x0b, 0x82, 0xaa, 0x38, 0x83, 0xda, 0xbc, 0x29, 0x94, 0xdb, 0x3a, 0x67, 0x11, - 0x22, 0x11, 0x80, 0x01, 0xc9, 0x09, 0x32, 0xa0, 0xb9, 0x9f, 0xb9, 0xbd, 0xca, 0x9a, 0x19, 0x10, - 0x44, 0x10, 0x90, 0x50, 0x02, 0xa8, 0x9c, 0x53, 0x43, 0x43, 0x33, 0x01, 0x89, 0x88, 0xc8, 0xbf, - 0x09, 0xc1, 0xab, 0x09, 0xa8, 0x8c, 0x81, 0xd8, 0xbf, 0x99, 0x18, 0x41, 0x16, 0x80, 0x01, 0x28, - 0x03, 0x43, 0x52, 0xa3, 0x09, 0x40, 0x12, 0x61, 0x03, 0x99, 0xa8, 0xfb, 0xac, 0xca, 0xad, 0xaa, - 0x98, 0xaa, 0x98, 0x61, 0x23, 0x12, 0x23, 0x98, 0x28, 0x27, 0x11, 0x42, 0x14, 0x44, 0x43, 0xa1, - 0xba, 0xac, 0xb9, 0xce, 0x8a, 0x01, 0x08, 0x88, 0x90, 0x18, 0xd8, 0xac, 0x10, 0xaa, 0x31, 0x54, - 0x35, 0x23, 0x52, 0x23, 0x80, 0x29, 0x15, 0xc9, 0x9b, 0xa0, 0xea, 0x9d, 0x08, 0xb0, 0x9a, 0xb9, - 0x0b, 0x11, 0x99, 0x74, 0x95, 0xac, 0x10, 0x32, 0x00, 0x12, 0x74, 0x23, 0x00, 0x08, 0x88, 0x89, - 0xdb, 0x89, 0x00, 0xb8, 0x9c, 0x9a, 0xb8, 0xff, 0x9d, 0x18, 0x80, 0x88, 0x88, 0x21, 0x32, 0x11, - 0x46, 0x80, 0x18, 0x81, 0x28, 0x37, 0x82, 0x19, 0x32, 0xb0, 0x1a, 0xa1, 0xcb, 0xde, 0xac, 0xaa, - 0xba, 0xaa, 0x18, 0x21, 0x21, 0x38, 0x16, 0x60, 0x33, 0x11, 0x53, 0x25, 0x90, 0x09, 0x53, 0x92, - 0xac, 0x21, 0xc8, 0xca, 0xbc, 0xbb, 0x18, 0xb1, 0x0c, 0x22, 0x24, 0xa0, 0x9a, 0xb1, 0xaf, 0xdb, - 0x41, 0x33, 0x32, 0x25, 0x12, 0x73, 0x82, 0x18, 0x81, 0xcd, 0x89, 0x98, 0x9a, 0x99, 0xcd, 0x8a, - 0x00, 0x10, 0x90, 0x10, 0xfa, 0x9f, 0x18, 0x80, 0x18, 0x45, 0x22, 0x12, 0x88, 0x22, 0x11, 0x43, - 0x02, 0xc9, 0x9b, 0x19, 0x20, 0x27, 0xb9, 0xbf, 0x9b, 0xca, 0xad, 0x20, 0x80, 0x8a, 0x53, 0x13, - 0x80, 0x09, 0xa1, 0xce, 0x0a, 0x43, 0x21, 0x44, 0x33, 0x00, 0x81, 0x08, 0x43, 0xb0, 0xbf, 0xaa, - 0xbc, 0xbb, 0xac, 0x10, 0xc0, 0xaa, 0x89, 0x72, 0x25, 0x00, 0x51, 0x13, 0xa8, 0x19, 0x13, 0x02, - 0xaa, 0x98, 0xba, 0x8b, 0x54, 0xe8, 0xbc, 0xa9, 0x9b, 0x52, 0x33, 0xc8, 0x99, 0xca, 0xcd, 0x99, - 0x00, 0xca, 0x89, 0x62, 0x34, 0x23, 0x21, 0x10, 0x13, 0x10, 0x54, 0x53, 0x33, 0x90, 0xbb, 0xac, - 0x99, 0xde, 0x9b, 0xa8, 0xcc, 0x89, 0x9a, 0x88, 0x32, 0xba, 0x31, 0x25, 0x11, 0x37, 0x90, 0x52, - 0x12, 0x12, 0x42, 0x23, 0x24, 0x01, 0x8a, 0x90, 0xfb, 0xcd, 0xab, 0xab, 0x8a, 0x38, 0x25, 0xa8, - 0x00, 0x9a, 0xb8, 0x9d, 0x10, 0x90, 0x2a, 0x56, 0x15, 0x21, 0x34, 0x23, 0x12, 0x91, 0xbd, 0x98, - 0xb9, 0xcf, 0x9a, 0xa8, 0xdb, 0x99, 0xba, 0x08, 0x10, 0xa8, 0x61, 0x11, 0x31, 0x56, 0x33, 0x24, - 0x01, 0x31, 0x02, 0x88, 0x01, 0xbe, 0x11, 0xb8, 0xbc, 0x19, 0x90, 0xc1, 0xff, 0x9a, 0x99, 0xbb, - 0x08, 0x99, 0x99, 0x10, 0x11, 0x47, 0x01, 0x22, 0x33, 0x46, 0x35, 0x21, 0x10, 0x10, 0xa0, 0xba, - 0x09, 0xd8, 0xae, 0x9a, 0xca, 0xbd, 0xaa, 0x89, 0x21, 0xa0, 0x8a, 0x31, 0x32, 0x66, 0x25, 0x80, - 0x20, 0x22, 0x23, 0x03, 0x10, 0x08, 0xfb, 0xbf, 0x98, 0x89, 0x89, 0xb8, 0xae, 0x08, 0x11, 0x89, - 0x44, 0x91, 0x8a, 0x31, 0x03, 0xa8, 0x70, 0x22, 0x91, 0x49, 0x35, 0x32, 0x34, 0x14, 0xba, 0xdb, - 0x2a, 0x03, 0xf9, 0x9c, 0x90, 0xda, 0xac, 0x98, 0xab, 0xcb, 0x48, 0x12, 0x21, 0x42, 0x23, 0x64, - 0x12, 0x02, 0x11, 0x02, 0x88, 0x88, 0x82, 0x9a, 0xa9, 0x34, 0xdb, 0x9a, 0x00, 0xe3, 0xae, 0xbb, - 0xc9, 0x9b, 0x9a, 0xc0, 0xbc, 0x19, 0x10, 0x10, 0x22, 0x67, 0x23, 0x33, 0x12, 0x08, 0x24, 0xda, - 0x2a, 0x13, 0xdd, 0x19, 0xa0, 0x9a, 0xd9, 0xab, 0x88, 0xad, 0x01, 0x98, 0x40, 0x03, 0x40, 0x13, - 0xcc, 0x72, 0x35, 0x12, 0x22, 0xa0, 0xaa, 0xa9, 0xec, 0x89, 0x00, 0x91, 0xce, 0x19, 0x22, 0x88, - 0xa0, 0x9d, 0xa8, 0xaa, 0x38, 0x04, 0xaa, 0x01, 0x8b, 0x43, 0x37, 0x18, 0x33, 0x45, 0x31, 0x36, - 0x33, 0x12, 0x42, 0x93, 0x99, 0xc9, 0xcc, 0xad, 0xcc, 0xac, 0xaa, 0xab, 0x9a, 0x18, 0x63, 0x33, - 0x12, 0x33, 0x32, 0x24, 0xa2, 0x8e, 0x32, 0x91, 0x09, 0x61, 0x93, 0xcb, 0x0a, 0x32, 0x91, 0x9c, - 0xb9, 0xcc, 0xba, 0xce, 0xaa, 0x09, 0x10, 0x34, 0x11, 0x43, 0x23, 0x42, 0x33, 0x32, 0x34, 0x11, - 0x22, 0x12, 0xbc, 0x91, 0xdf, 0xcc, 0x9a, 0x99, 0xda, 0xad, 0x11, 0x01, 0xea, 0x09, 0x11, 0x98, - 0x41, 0x44, 0x33, 0x01, 0x00, 0x72, 0x23, 0x01, 0x11, 0xb8, 0x9a, 0xbb, 0x49, 0xc3, 0xbf, 0x98, - 0xc9, 0x9d, 0x88, 0x98, 0x99, 0x89, 0x11, 0x22, 0xbc, 0xa8, 0xad, 0xc9, 0x69, 0x14, 0x22, 0x41, - 0x25, 0x21, 0x41, 0x25, 0x01, 0x00, 0x89, 0xdb, 0xcb, 0xcd, 0xab, 0x9a, 0xab, 0x18, 0x31, 0x24, - 0x11, 0x33, 0x46, 0x13, 0x80, 0x28, 0x44, 0x02, 0x89, 0xca, 0xbc, 0xac, 0x89, 0x89, 0x01, 0x02, - 0xec, 0x0a, 0x01, 0x11, 0x34, 0x81, 0x32, 0x92, 0xbe, 0x32, 0xba, 0x81, 0x9c, 0x39, 0x14, 0x11, - 0x77, 0x04, 0x20, 0x13, 0x08, 0x00, 0x98, 0x21, 0xfb, 0xaf, 0x89, 0x89, 0xb9, 0xcb, 0x89, 0xea, - 0x9b, 0x21, 0xb8, 0x28, 0x46, 0x03, 0x22, 0x44, 0x33, 0x91, 0x88, 0x90, 0x9a, 0x08, 0xc9, 0x8b, - 0xc9, 0x9d, 0x98, 0x38, 0x26, 0xa8, 0x1a, 0x02, 0xdc, 0xcc, 0xbd, 0x8a, 0x00, 0x90, 0x40, 0x23, - 0x12, 0x55, 0x24, 0x32, 0x12, 0x11, 0x22, 0x03, 0xce, 0xba, 0xaa, 0xdc, 0xac, 0x99, 0x98, 0x89, - 0x89, 0x21, 0x04, 0x31, 0x65, 0x24, 0x22, 0x21, 0x01, 0x90, 0x88, 0xaa, 0x08, 0xb8, 0x0c, 0x80, - 0xfd, 0xab, 0x89, 0x99, 0x99, 0xe8, 0x9e, 0x00, 0xba, 0x8b, 0x12, 0xa8, 0x0b, 0x03, 0x01, 0x77, - 0x06, 0x90, 0x20, 0x23, 0x11, 0x01, 0x81, 0x48, 0x53, 0x12, 0x88, 0x91, 0xcf, 0xbb, 0xb9, 0xbd, - 0xdb, 0xab, 0x89, 0x11, 0x33, 0x03, 0x1a, 0x56, 0x24, 0x28, 0x34, 0x82, 0x88, 0x02, 0xba, 0x9d, - 0x10, 0xb9, 0xae, 0x18, 0x80, 0x00, 0x88, 0x88, 0x61, 0xc1, 0x09, 0x18, 0xf8, 0x9d, 0x99, 0x30, - 0x11, 0x44, 0x32, 0x43, 0x33, 0x23, 0x33, 0x83, 0xcd, 0x09, 0xb9, 0xdb, 0xce, 0xbd, 0x9a, 0xac, - 0x8a, 0x09, 0x11, 0x44, 0x33, 0x24, 0x11, 0xa8, 0x08, 0x99, 0x55, 0x33, 0xc8, 0x8a, 0x21, 0x33, - 0x80, 0x98, 0x9b, 0x10, 0xb8, 0x9c, 0x90, 0xcd, 0x19, 0x82, 0xbf, 0xbc, 0xdc, 0x9d, 0x00, 0xa9, - 0x00, 0x00, 0x21, 0x23, 0x57, 0x23, 0x23, 0x24, 0x99, 0x30, 0x34, 0x43, 0x92, 0xbd, 0xba, 0xcd, - 0xab, 0x90, 0xeb, 0xab, 0x18, 0x98, 0x00, 0x50, 0x36, 0x33, 0x23, 0x10, 0x33, 0x24, 0x9a, 0xe9, - 0xcc, 0xab, 0xb8, 0xaa, 0x10, 0x82, 0xab, 0x08, 0x71, 0x17, 0x80, 0x19, 0x90, 0xac, 0xb9, 0xad, - 0x09, 0x22, 0x91, 0x8b, 0x66, 0x23, 0x22, 0x33, 0x23, 0x21, 0x45, 0x81, 0xb9, 0xcd, 0xb9, 0xbb, - 0xbd, 0xba, 0x9d, 0x08, 0x09, 0x88, 0x32, 0x23, 0x00, 0x82, 0x69, 0x37, 0x13, 0x08, 0x52, 0x12, - 0x00, 0x22, 0xfa, 0x9b, 0x12, 0x89, 0x62, 0x13, 0xa0, 0xac, 0xa0, 0xbc, 0x8a, 0xdb, 0x8c, 0x13, - 0xa9, 0xbd, 0x10, 0x88, 0x09, 0x44, 0x11, 0x54, 0x12, 0x33, 0x37, 0x12, 0x90, 0x99, 0xc8, 0xaf, - 0xb9, 0x99, 0xa9, 0xdc, 0x9c, 0x99, 0x99, 0x32, 0x23, 0x64, 0x34, 0x33, 0x23, 0x13, 0x81, 0xea, - 0x8b, 0xc9, 0xbb, 0xaa, 0x98, 0xab, 0x21, 0x51, 0x02, 0x40, 0x43, 0x35, 0xb0, 0xaa, 0x9a, 0xfc, - 0x9c, 0xa9, 0xdb, 0x8a, 0x12, 0x80, 0x61, 0x34, 0x12, 0x21, 0x44, 0x24, 0x81, 0x98, 0x08, 0x10, - 0xea, 0xab, 0x88, 0x8a, 0xfb, 0xab, 0x08, 0x00, 0x88, 0xbc, 0xbc, 0x19, 0x45, 0x43, 0x01, 0x00, - 0x22, 0x22, 0x32, 0x93, 0xfb, 0xbf, 0x08, 0x10, 0x00, 0x33, 0xb0, 0x18, 0xcb, 0xac, 0x30, 0xd8, - 0xcb, 0x29, 0x23, 0x80, 0xb8, 0xdf, 0x18, 0x22, 0x21, 0x10, 0x72, 0x15, 0x88, 0x00, 0x22, 0xa8, - 0x2a, 0x26, 0xa0, 0xcd, 0xdb, 0xab, 0xbc, 0xab, 0x19, 0x23, 0x28, 0x37, 0x63, 0x22, 0x01, 0x10, - 0x00, 0xa9, 0x9c, 0x00, 0x00, 0xb8, 0x1a, 0x09, 0x47, 0x13, 0x00, 0x18, 0xa1, 0x0a, 0xa0, 0xbe, - 0xbd, 0xce, 0x9a, 0x89, 0xb8, 0xbc, 0xad, 0x30, 0x25, 0x22, 0x22, 0x35, 0x13, 0x42, 0x33, 0x24, - 0xc8, 0xbd, 0x9a, 0x0a, 0x90, 0xda, 0x9c, 0xa9, 0xba, 0x19, 0x22, 0x33, 0x43, 0x13, 0x74, 0x23, - 0x01, 0xfb, 0x0a, 0x00, 0x99, 0x89, 0x90, 0x30, 0x08, 0x47, 0xa0, 0x8a, 0x21, 0xa9, 0xba, 0x68, - 0x93, 0x9d, 0x30, 0x92, 0xae, 0x18, 0x13, 0xa9, 0xcc, 0xcb, 0x2a, 0x25, 0x42, 0x46, 0x22, 0x22, - 0x13, 0x00, 0xb9, 0xad, 0x88, 0xdc, 0xbc, 0xaa, 0xca, 0x8a, 0x08, 0x22, 0x44, 0x33, 0x14, 0xb9, - 0x00, 0xaa, 0xbb, 0xab, 0x9b, 0x42, 0x74, 0x25, 0x89, 0x09, 0x10, 0x92, 0x1a, 0x45, 0x25, 0x00, - 0xa8, 0x08, 0xf9, 0xbb, 0xce, 0xab, 0x00, 0x90, 0x89, 0x30, 0x23, 0x21, 0x54, 0x34, 0x13, 0x22, - 0x13, 0x33, 0x92, 0x9a, 0x39, 0x95, 0xff, 0xab, 0xa9, 0xba, 0xaa, 0x40, 0x24, 0x00, 0x02, 0x42, - 0x24, 0xba, 0x49, 0x26, 0xa8, 0x09, 0x01, 0xb8, 0x8b, 0x21, 0x00, 0x98, 0x24, 0x98, 0xc9, 0x79, - 0x23, 0x12, 0xc8, 0xaa, 0xce, 0x09, 0xfa, 0xbb, 0xb9, 0xae, 0x10, 0x32, 0x22, 0x33, 0x24, 0x32, - 0x35, 0x34, 0x35, 0x13, 0x80, 0xb8, 0xaf, 0xb9, 0xbc, 0xbc, 0xaa, 0x8a, 0x21, 0x12, 0xc9, 0x40, - 0x33, 0xa2, 0xae, 0x00, 0x34, 0x12, 0x03, 0x20, 0x93, 0xda, 0xaf, 0x13, 0x99, 0x8a, 0x67, 0x12, - 0x02, 0x09, 0x81, 0xb8, 0xcd, 0xaa, 0xaa, 0x9b, 0x81, 0xcd, 0x28, 0x26, 0x11, 0x98, 0x08, 0x31, - 0x54, 0x23, 0x12, 0x22, 0x01, 0x13, 0xca, 0xce, 0xbc, 0x9b, 0xb9, 0x0b, 0x04, 0x09, 0x10, 0x22, - 0x25, 0xb0, 0x8a, 0x9b, 0x22, 0x82, 0xbf, 0xab, 0xbc, 0xc9, 0x2b, 0x12, 0x57, 0x00, 0x18, 0x34, - 0x34, 0x25, 0x80, 0xa0, 0x19, 0xca, 0xc0, 0xbe, 0xce, 0xaa, 0x88, 0x9a, 0x08, 0x23, 0x31, 0x64, - 0x15, 0x21, 0x23, 0x81, 0x08, 0x01, 0x08, 0xc0, 0xac, 0xaa, 0x80, 0x48, 0x92, 0xbe, 0xab, 0xaa, - 0xac, 0x10, 0x52, 0x83, 0x8c, 0x73, 0x82, 0xaa, 0x09, 0x21, 0x04, 0x80, 0xaa, 0x89, 0x45, 0x03, - 0x51, 0x35, 0x02, 0x99, 0x10, 0xf8, 0xad, 0x99, 0x98, 0xa9, 0xb9, 0x3a, 0x06, 0xbe, 0x9b, 0x98, - 0x8a, 0x64, 0x12, 0x21, 0x53, 0x33, 0x02, 0x09, 0x02, 0xed, 0xab, 0xaa, 0x19, 0x34, 0x90, 0xba, - 0xa9, 0xbe, 0x28, 0x23, 0x82, 0x0a, 0x11, 0x08, 0x45, 0xb0, 0x9f, 0x09, 0x08, 0x9a, 0x46, 0x32, - 0x34, 0x33, 0x53, 0x82, 0x09, 0x22, 0xba, 0xcd, 0xcc, 0xbc, 0xba, 0xaa, 0x98, 0xba, 0x18, 0x47, - 0x32, 0x14, 0x21, 0x11, 0x22, 0x90, 0xa9, 0x69, 0x15, 0x08, 0x98, 0xd9, 0x8c, 0x90, 0xda, 0xab, - 0xaa, 0xac, 0x21, 0x53, 0x01, 0x01, 0x31, 0x23, 0x90, 0xfa, 0x9d, 0x9a, 0x80, 0x88, 0x18, 0x33, - 0x83, 0x59, 0x67, 0x12, 0x11, 0x12, 0xca, 0x19, 0x80, 0xdb, 0xaa, 0xac, 0x98, 0xba, 0xdb, 0xab, - 0xa9, 0x9a, 0x1a, 0x57, 0x45, 0x22, 0x01, 0x10, 0x33, 0x02, 0xda, 0x9c, 0x10, 0xa0, 0x0a, 0x02, - 0xdb, 0xac, 0x8b, 0x99, 0x88, 0xa9, 0x0a, 0x72, 0x37, 0x00, 0x21, 0xb1, 0xdf, 0x9a, 0x18, 0x21, - 0x22, 0x88, 0x36, 0x12, 0x22, 0x25, 0xb8, 0xcc, 0x99, 0xca, 0x8c, 0x80, 0xa0, 0xac, 0x20, 0x22, - 0x90, 0xba, 0xcc, 0x9a, 0x50, 0x35, 0x13, 0x89, 0x32, 0x23, 0x01, 0x81, 0x68, 0x25, 0xcb, 0x8a, - 0x42, 0xd0, 0xbb, 0x9c, 0x10, 0x08, 0x11, 0x62, 0x83, 0x99, 0x8b, 0xc1, 0x9e, 0x08, 0xeb, 0xaa, - 0x32, 0x22, 0x81, 0x73, 0x27, 0x20, 0x32, 0x13, 0x10, 0xa1, 0xad, 0xca, 0xab, 0xcc, 0xcc, 0xab, - 0x08, 0x98, 0x8a, 0x11, 0x81, 0x71, 0x36, 0x32, 0x01, 0x10, 0x99, 0x30, 0x32, 0x92, 0xac, 0x09, - 0xba, 0xde, 0x8b, 0xa1, 0xcd, 0x89, 0x33, 0x91, 0x89, 0x11, 0xba, 0xbe, 0xed, 0x8a, 0x21, 0x04, - 0x89, 0x18, 0x34, 0x54, 0x23, 0x13, 0x88, 0x08, 0x30, 0xc2, 0x9b, 0x00, 0xfc, 0xbc, 0x98, 0xaa, - 0x89, 0x80, 0x89, 0xba, 0x52, 0x23, 0x99, 0x61, 0x27, 0x98, 0x31, 0x25, 0x02, 0x20, 0x33, 0x25, - 0xd9, 0x09, 0xda, 0xbc, 0xa9, 0x8a, 0x38, 0x81, 0x38, 0x36, 0x81, 0xda, 0x9d, 0xa9, 0x99, 0x28, - 0x81, 0x31, 0x15, 0x10, 0x62, 0x23, 0x01, 0x21, 0x21, 0x37, 0x02, 0x00, 0x02, 0xfb, 0xcd, 0xcc, - 0xaa, 0x99, 0x9a, 0x9a, 0x21, 0x01, 0x18, 0x35, 0x43, 0x63, 0x23, 0x42, 0x03, 0x20, 0xa1, 0x8a, - 0xb8, 0xce, 0x0a, 0x91, 0xac, 0x73, 0x83, 0x99, 0x10, 0x01, 0x80, 0xb8, 0xcf, 0xcb, 0x8a, 0x00, - 0x22, 0x43, 0x34, 0x21, 0x21, 0x83, 0xab, 0xeb, 0x89, 0x51, 0x03, 0x20, 0x46, 0x91, 0xcb, 0xab, - 0x99, 0x9a, 0xec, 0x9a, 0x80, 0x00, 0x90, 0x80, 0x8b, 0xa0, 0x1a, 0x55, 0x46, 0x23, 0x02, 0x31, - 0x23, 0xa8, 0x18, 0xc0, 0xec, 0xbc, 0x8b, 0x89, 0x00, 0x01, 0xd9, 0x9c, 0xba, 0xbe, 0x9b, 0x00, - 0x00, 0x63, 0x00, 0x43, 0x63, 0x12, 0x23, 0x90, 0x29, 0x47, 0x13, 0x20, 0x02, 0xfb, 0x0a, 0x00, - 0xb8, 0xbc, 0xca, 0xcd, 0x9a, 0x00, 0x18, 0x34, 0x22, 0x10, 0x43, 0x24, 0x11, 0x01, 0xa9, 0xda, - 0xaf, 0x18, 0x22, 0xa0, 0x8a, 0x09, 0x44, 0x36, 0x82, 0xcb, 0xbb, 0x99, 0x9a, 0xba, 0xbc, 0x19, - 0x12, 0x29, 0x25, 0x12, 0xdc, 0x19, 0x54, 0x14, 0xb0, 0x8a, 0x32, 0x25, 0xa8, 0x29, 0x02, 0xca, - 0xcb, 0x9b, 0x00, 0x10, 0xfb, 0xdf, 0x88, 0xa9, 0xab, 0x20, 0x81, 0x40, 0x13, 0x73, 0x45, 0x13, - 0x18, 0x01, 0x11, 0x80, 0x08, 0x21, 0x00, 0x91, 0xcf, 0x88, 0xea, 0xbc, 0xa9, 0xba, 0x18, 0x01, - 0xdb, 0x19, 0x53, 0x33, 0x12, 0x08, 0x21, 0x32, 0x24, 0xa0, 0x9b, 0x40, 0x57, 0x22, 0x43, 0x23, - 0xf9, 0xac, 0xbb, 0x9a, 0xbb, 0x1a, 0x32, 0x90, 0x88, 0x20, 0x55, 0x34, 0xa1, 0x89, 0xa9, 0x0b, - 0xb8, 0x0a, 0x45, 0x12, 0x41, 0x14, 0x88, 0x61, 0x14, 0xa9, 0xb9, 0xaa, 0xed, 0xbb, 0xbc, 0xba, - 0x8a, 0x09, 0x65, 0x32, 0x34, 0x12, 0xb9, 0x38, 0x24, 0x22, 0x32, 0x43, 0x13, 0xd9, 0x1a, 0x63, - 0xa1, 0xbd, 0xbb, 0xaa, 0x9a, 0xca, 0x9b, 0xfd, 0xbb, 0x19, 0x02, 0x20, 0x35, 0x21, 0x00, 0x32, - 0x33, 0x54, 0x13, 0xd8, 0x0b, 0x21, 0x41, 0x34, 0x82, 0x99, 0xbd, 0xac, 0xea, 0xbc, 0x29, 0x12, - 0x19, 0x43, 0x03, 0x9a, 0xa8, 0xb9, 0xbf, 0x30, 0xb1, 0xab, 0xad, 0x41, 0x37, 0x81, 0x10, 0x52, - 0x22, 0x12, 0xca, 0xbd, 0xdb, 0xbb, 0x19, 0x33, 0x03, 0x10, 0x41, 0x02, 0x01, 0xba, 0xdf, 0x29, - 0x23, 0x88, 0x10, 0x54, 0x33, 0x84, 0x08, 0x21, 0x81, 0x41, 0x82, 0xca, 0xbf, 0x99, 0xba, 0xdc, - 0xab, 0xa9, 0x98, 0x9a, 0x09, 0x99, 0xda, 0x70, 0x25, 0x11, 0x32, 0x24, 0x34, 0x80, 0x08, 0x90, - 0x8b, 0x60, 0x25, 0x82, 0xaa, 0x38, 0xd2, 0xbe, 0xac, 0xca, 0xab, 0xab, 0x31, 0x04, 0xaa, 0x21, - 0xb2, 0x79, 0x25, 0x80, 0x09, 0x28, 0x64, 0x22, 0x12, 0x80, 0xcb, 0xbb, 0xba, 0x9b, 0xa9, 0x89, - 0x72, 0x34, 0x23, 0xd8, 0xbb, 0xca, 0xcc, 0x9b, 0x89, 0x41, 0x43, 0x34, 0x43, 0x22, 0x31, 0x23, - 0x31, 0x01, 0xd9, 0xbb, 0xa8, 0xdd, 0xbc, 0xbc, 0x9b, 0x89, 0x99, 0x98, 0x9b, 0x88, 0x9b, 0x73, - 0x27, 0x08, 0x32, 0x33, 0x43, 0x45, 0x22, 0x98, 0x18, 0x13, 0x88, 0x52, 0x92, 0xce, 0xab, 0xb9, - 0xbd, 0xbc, 0xba, 0xaa, 0x9a, 0x00, 0x18, 0x64, 0x13, 0x21, 0x22, 0x44, 0x12, 0x91, 0x39, 0x35, - 0x90, 0x38, 0x14, 0x18, 0x15, 0xb9, 0x1a, 0xe8, 0xbd, 0x9a, 0x89, 0xc8, 0x9d, 0x90, 0xba, 0x0b, - 0x43, 0x21, 0x45, 0x22, 0x22, 0x44, 0x34, 0x22, 0x00, 0xb9, 0x0a, 0x99, 0xf9, 0xdf, 0x98, 0x99, - 0x00, 0x30, 0x24, 0x80, 0xaa, 0xcc, 0xbc, 0xba, 0x8a, 0x53, 0x43, 0x43, 0x23, 0x23, 0x34, 0x33, - 0x11, 0x01, 0xca, 0x8b, 0xa0, 0xae, 0xbb, 0xbe, 0x9c, 0x88, 0xa0, 0xbc, 0x89, 0xc9, 0xac, 0x10, - 0x20, 0xd0, 0x2a, 0x12, 0xcb, 0x70, 0x27, 0x12, 0x01, 0x10, 0x00, 0x09, 0x20, 0x24, 0xb9, 0x1a, - 0xc1, 0x8c, 0x81, 0xd9, 0xbe, 0xba, 0x9d, 0x08, 0x20, 0x34, 0x13, 0x08, 0x53, 0x92, 0xac, 0x18, - 0xa9, 0x9a, 0x71, 0x02, 0x28, 0x36, 0x03, 0xcb, 0x09, 0x88, 0x51, 0x24, 0xea, 0xbc, 0xb9, 0xaa, - 0xac, 0x19, 0x82, 0x89, 0x75, 0x23, 0x21, 0x02, 0x98, 0x18, 0x33, 0x32, 0x00, 0x22, 0x02, 0xbb, - 0xd8, 0xaf, 0x88, 0xb8, 0xdf, 0xcb, 0xcc, 0x9a, 0x99, 0xba, 0x9a, 0x52, 0x34, 0x45, 0x32, 0x13, - 0x88, 0x88, 0x88, 0x10, 0xa8, 0x38, 0x27, 0x91, 0x18, 0x91, 0xdc, 0xad, 0x09, 0x18, 0x01, 0x08, - 0x98, 0xdd, 0xbc, 0xaa, 0x88, 0x08, 0x10, 0x45, 0x23, 0x12, 0x44, 0x54, 0x12, 0x80, 0x98, 0xa8, - 0xbb, 0x18, 0xb9, 0x1b, 0xf8, 0xdf, 0x88, 0x89, 0x08, 0x80, 0x08, 0x53, 0x12, 0x00, 0x28, 0x12, - 0xb0, 0xad, 0x52, 0x53, 0x33, 0x01, 0x08, 0x91, 0xcd, 0x88, 0x88, 0x11, 0xfa, 0x9f, 0x88, 0x9a, - 0xca, 0x9a, 0x8b, 0x32, 0x34, 0x32, 0x34, 0x13, 0x11, 0x31, 0x24, 0x42, 0x13, 0xba, 0x5a, 0x57, - 0x81, 0x00, 0x98, 0x99, 0xb9, 0xca, 0xba, 0xdf, 0xab, 0x9a, 0x99, 0x10, 0x81, 0x39, 0x32, 0x35, - 0x44, 0x35, 0x23, 0x00, 0x21, 0x81, 0x18, 0x90, 0xdf, 0x19, 0xa8, 0x09, 0x01, 0xca, 0x09, 0xca, - 0x0a, 0x41, 0x92, 0xac, 0xfa, 0x8a, 0x89, 0x00, 0x54, 0x12, 0x63, 0x33, 0x32, 0x80, 0xbb, 0x0b, - 0x12, 0xa8, 0xdc, 0x9d, 0x08, 0xcc, 0xbb, 0xcd, 0xba, 0x8a, 0x00, 0x41, 0x14, 0x01, 0x53, 0x12, - 0x92, 0x0a, 0x63, 0x03, 0x21, 0x23, 0x22, 0x02, 0x18, 0x36, 0xe9, 0x9b, 0x22, 0xfa, 0xaa, 0xa8, - 0xab, 0xc9, 0xbb, 0x8b, 0xaa, 0x88, 0x41, 0x77, 0x03, 0x99, 0x09, 0x91, 0x30, 0x03, 0x00, 0x54, - 0x91, 0x71, 0x17, 0x88, 0x08, 0xa0, 0xbc, 0x88, 0xa8, 0xc9, 0xbd, 0x8a, 0x80, 0x28, 0x03, 0x20, - 0x53, 0x23, 0x73, 0x13, 0x00, 0x88, 0x00, 0x08, 0xd8, 0x8b, 0x12, 0xc0, 0xae, 0x98, 0x9d, 0x00, - 0x91, 0xdc, 0xbb, 0x8a, 0x10, 0x11, 0x90, 0x28, 0x46, 0x23, 0x22, 0x11, 0x46, 0x43, 0x34, 0x12, - 0x80, 0x08, 0x80, 0x43, 0xc8, 0xbc, 0xab, 0xcd, 0xab, 0x99, 0xca, 0xbc, 0x9b, 0x09, 0x22, 0x21, - 0xfa, 0x8d, 0x32, 0x10, 0x45, 0x22, 0x33, 0x33, 0xa1, 0x2b, 0x47, 0x80, 0x99, 0x11, 0xc9, 0xcc, - 0x9c, 0xa8, 0x8b, 0xa0, 0xcb, 0x20, 0x34, 0x43, 0x82, 0x9a, 0x00, 0x98, 0x09, 0x01, 0xcb, 0x88, - 0x30, 0x75, 0x15, 0x20, 0x45, 0x92, 0x9a, 0xb8, 0xdf, 0xcb, 0x09, 0x02, 0xa9, 0x08, 0x20, 0x53, - 0x02, 0x21, 0x23, 0x00, 0x10, 0x24, 0x51, 0x25, 0x90, 0x28, 0xc0, 0x8c, 0x20, 0x80, 0x88, 0xba, - 0x19, 0xb2, 0xff, 0xad, 0x99, 0xba, 0x99, 0x08, 0x90, 0x29, 0x34, 0x33, 0x55, 0x25, 0x01, 0x10, - 0x11, 0x40, 0x05, 0x08, 0x10, 0x90, 0x20, 0xa1, 0xff, 0x8a, 0x98, 0xa9, 0x20, 0x82, 0xa9, 0xbd, - 0x29, 0x12, 0x20, 0x82, 0xbe, 0x19, 0x34, 0x12, 0x20, 0xa8, 0x31, 0x72, 0x27, 0x01, 0xa8, 0x8a, - 0xfc, 0x9b, 0x88, 0x80, 0x38, 0x26, 0x01, 0x08, 0x90, 0xcb, 0x18, 0x91, 0x8d, 0x11, 0xc9, 0xac, - 0x39, 0x77, 0x22, 0x10, 0x12, 0x00, 0x12, 0x81, 0xfd, 0xac, 0x8a, 0x98, 0x89, 0x09, 0x01, 0x21, - 0xa0, 0x9a, 0x9a, 0x52, 0x42, 0xb3, 0xae, 0x31, 0x26, 0x20, 0x34, 0x11, 0x08, 0x21, 0x34, 0x01, - 0x99, 0x0a, 0xa3, 0xcf, 0xcd, 0x89, 0x9a, 0x98, 0x8d, 0x11, 0x01, 0x89, 0xa9, 0xbc, 0xcb, 0x0a, - 0x64, 0x12, 0x34, 0x33, 0x12, 0x31, 0x16, 0xb9, 0xaf, 0x0a, 0x01, 0xa9, 0x40, 0x82, 0xb9, 0x8a, - 0xa0, 0xdb, 0xbd, 0x98, 0x8a, 0x40, 0x37, 0x23, 0x01, 0x98, 0x19, 0x26, 0x22, 0x91, 0xa9, 0x68, - 0x93, 0xdf, 0xaa, 0x9b, 0x00, 0x10, 0x52, 0x12, 0x90, 0xa9, 0xcb, 0xcd, 0xab, 0x18, 0x31, 0x27, - 0x12, 0x01, 0x30, 0x54, 0x33, 0x31, 0x23, 0x82, 0xcb, 0x88, 0xca, 0xcf, 0xac, 0x19, 0x91, 0x09, - 0x88, 0x00, 0xeb, 0x9a, 0x89, 0x09, 0x02, 0x88, 0x30, 0x57, 0x01, 0x32, 0x02, 0x20, 0x22, 0x80, - 0x73, 0x23, 0xcb, 0x9b, 0x9a, 0x80, 0xfb, 0x9b, 0xdb, 0x9b, 0x18, 0x11, 0x02, 0x80, 0x71, 0x13, - 0x20, 0x84, 0xbc, 0x70, 0x24, 0x12, 0x11, 0xa9, 0xcb, 0xcc, 0x89, 0xa9, 0xa9, 0x29, 0x92, 0x38, - 0x93, 0xdd, 0xbd, 0x9d, 0x01, 0x51, 0x23, 0x02, 0x00, 0x31, 0x73, 0x35, 0x12, 0x21, 0x81, 0x9b, - 0xca, 0xdb, 0xbd, 0x8a, 0x98, 0xbd, 0x19, 0x32, 0x12, 0x43, 0xd8, 0x9a, 0xeb, 0xac, 0x0a, 0x11, - 0x44, 0x12, 0x32, 0x33, 0x14, 0xa8, 0x9b, 0x89, 0x98, 0x20, 0x37, 0xa1, 0xbd, 0x18, 0x41, 0x92, - 0xac, 0x08, 0x02, 0xdc, 0x09, 0x12, 0xc9, 0xba, 0xad, 0x40, 0x84, 0x08, 0x44, 0x21, 0x01, 0x98, - 0xbc, 0xec, 0xac, 0x9a, 0x38, 0x36, 0x01, 0x80, 0x11, 0x22, 0xc1, 0xad, 0x8a, 0x90, 0x09, 0x31, - 0x12, 0x23, 0x12, 0x72, 0x16, 0x32, 0x82, 0xde, 0x89, 0x00, 0x01, 0x99, 0x01, 0x89, 0x52, 0x24, - 0x02, 0xeb, 0xcb, 0xba, 0x9a, 0xa0, 0xad, 0x9a, 0x31, 0x24, 0x64, 0x13, 0xa0, 0xcb, 0x09, 0x11, - 0x21, 0x20, 0x34, 0x55, 0x35, 0x02, 0x08, 0x11, 0xc8, 0xae, 0x08, 0xb8, 0xbc, 0xcb, 0xbb, 0x9c, - 0x18, 0x81, 0x19, 0x14, 0x51, 0x44, 0x23, 0x08, 0x81, 0x98, 0xac, 0x33, 0xb9, 0xbb, 0x58, 0x24, - 0x81, 0x89, 0xfb, 0xab, 0xba, 0x49, 0x25, 0xb0, 0x9e, 0x00, 0x00, 0x88, 0x61, 0x13, 0x02, 0x41, - 0x16, 0x12, 0x90, 0x9c, 0x00, 0xd9, 0xad, 0x80, 0x88, 0x10, 0x22, 0xb0, 0xff, 0xaa, 0x09, 0x22, - 0x21, 0x00, 0x24, 0xb8, 0xaa, 0x40, 0x13, 0x45, 0x12, 0x10, 0x45, 0x01, 0x89, 0x30, 0x34, 0xc8, - 0x9b, 0xe9, 0xbe, 0x9b, 0xaa, 0xbb, 0xab, 0xaa, 0x71, 0x25, 0x00, 0x22, 0x33, 0x90, 0xaa, 0x18, - 0x32, 0xb2, 0xbf, 0x58, 0x12, 0x00, 0x42, 0xb1, 0xae, 0x89, 0x18, 0x22, 0xc8, 0x8c, 0x30, 0x25, - 0x90, 0xaa, 0x53, 0x82, 0xac, 0x18, 0x56, 0x23, 0x88, 0x80, 0xda, 0xbb, 0xba, 0x18, 0x12, 0xfc, - 0xab, 0x28, 0x81, 0x88, 0x11, 0x83, 0xa9, 0x38, 0x27, 0x90, 0x30, 0x90, 0x49, 0x14, 0x42, 0x55, - 0x04, 0x08, 0xb8, 0xae, 0x08, 0xc8, 0xac, 0x21, 0x33, 0x12, 0x32, 0x83, 0xfe, 0x9c, 0x10, 0xaa, - 0x89, 0x42, 0x32, 0x13, 0xa9, 0xb9, 0x9a, 0xad, 0x09, 0x20, 0xa3, 0x79, 0x14, 0x22, 0x44, 0x14, - 0xa8, 0x98, 0x88, 0xbc, 0x0a, 0x25, 0xea, 0x8b, 0x53, 0x12, 0x88, 0x80, 0x52, 0x03, 0xca, 0xaa, - 0x21, 0xb1, 0xcf, 0x19, 0x91, 0xeb, 0x9c, 0x08, 0x32, 0x82, 0x8a, 0x13, 0x32, 0x11, 0x42, 0x67, - 0x80, 0x9a, 0x99, 0x01, 0x08, 0xc9, 0x98, 0x9b, 0xe9, 0x1b, 0x24, 0x92, 0xbf, 0x08, 0x22, 0x44, - 0x53, 0x82, 0xba, 0x10, 0x00, 0x01, 0xaa, 0x18, 0xfb, 0xbf, 0x18, 0xa1, 0xbc, 0x8a, 0x32, 0x33, - 0x13, 0x38, 0x43, 0xb8, 0xff, 0x28, 0x11, 0x31, 0x37, 0x81, 0x00, 0x98, 0xaa, 0x18, 0x80, 0xbc, - 0x40, 0x02, 0x18, 0x12, 0xb8, 0xcf, 0xaa, 0xcb, 0xbc, 0x9b, 0x18, 0x32, 0x43, 0x37, 0x03, 0x10, - 0x01, 0x08, 0xb9, 0xbd, 0xcd, 0xaa, 0x00, 0x20, 0x43, 0x23, 0x51, 0x15, 0x80, 0xa9, 0xdc, 0xbb, - 0x9b, 0xb8, 0x9b, 0x42, 0x02, 0x31, 0x55, 0x22, 0x20, 0x43, 0x34, 0x34, 0xd8, 0xab, 0x99, 0xdc, - 0x0a, 0x82, 0xcb, 0xbb, 0x99, 0x28, 0x06, 0x88, 0x08, 0x24, 0x32, 0x37, 0x24, 0x80, 0x31, 0x81, - 0x18, 0x24, 0xb9, 0xaa, 0x9a, 0xda, 0x9a, 0x9a, 0xab, 0xcf, 0xac, 0x9a, 0x89, 0x31, 0x24, 0x22, - 0x92, 0x20, 0xc9, 0x60, 0x34, 0x12, 0x33, 0x03, 0xfb, 0x8d, 0x98, 0xdc, 0xaa, 0xbc, 0x8c, 0x80, - 0x38, 0x46, 0x24, 0x12, 0x02, 0x80, 0xe9, 0x9b, 0x89, 0x00, 0x09, 0xba, 0x18, 0x31, 0x22, 0x31, - 0x92, 0x64, 0xfa, 0x8d, 0x20, 0xa0, 0x8c, 0x20, 0x13, 0xaa, 0x8a, 0x73, 0x34, 0x91, 0x19, 0x22, - 0x80, 0x10, 0xc8, 0xcc, 0x89, 0x91, 0xed, 0x89, 0x21, 0x44, 0x33, 0x23, 0xc8, 0xbc, 0x38, 0x02, - 0xa9, 0xd9, 0x8c, 0x00, 0x08, 0x88, 0x10, 0x91, 0xfc, 0x29, 0x37, 0xa1, 0xaa, 0xba, 0x9a, 0xca, - 0x9c, 0x31, 0x24, 0x34, 0xb8, 0x2a, 0x92, 0xdf, 0x09, 0x10, 0x62, 0x24, 0x00, 0x89, 0x22, 0x83, - 0xcd, 0xab, 0x98, 0x9a, 0xab, 0x41, 0x33, 0xc8, 0x9b, 0x48, 0x33, 0xeb, 0x8a, 0xd9, 0xcd, 0x28, - 0x35, 0x23, 0x12, 0x01, 0x89, 0x41, 0x24, 0x98, 0xda, 0xbd, 0x8a, 0x98, 0x9a, 0x0a, 0x43, 0x23, - 0x42, 0x36, 0x14, 0x80, 0x90, 0x19, 0xb1, 0xad, 0x9a, 0x99, 0x32, 0xf0, 0x1a, 0x25, 0xa1, 0x9a, - 0x89, 0xaa, 0x08, 0x10, 0xfb, 0xbb, 0xce, 0x9b, 0x89, 0x11, 0x29, 0x25, 0x08, 0x74, 0x15, 0x99, - 0x08, 0x80, 0x98, 0x8a, 0xca, 0x8c, 0x31, 0x35, 0x83, 0xbc, 0x09, 0x23, 0xc0, 0xbd, 0x09, 0x92, - 0xae, 0x30, 0x02, 0xaa, 0x9a, 0x18, 0x35, 0x44, 0x02, 0x09, 0x82, 0x72, 0x57, 0x02, 0x99, 0xba, - 0xdb, 0x9a, 0x01, 0x00, 0x01, 0x20, 0x12, 0x82, 0x61, 0x13, 0x90, 0xcb, 0x9a, 0x51, 0x35, 0x11, - 0x80, 0xb9, 0x10, 0x18, 0x57, 0x03, 0xdc, 0xac, 0xab, 0x9a, 0x08, 0x98, 0x32, 0x12, 0x21, 0x31, - 0x54, 0x02, 0xbc, 0x61, 0x22, 0x90, 0x0b, 0xb9, 0x09, 0xec, 0x89, 0x00, 0xd9, 0xbb, 0x30, 0x15, - 0x22, 0x41, 0x26, 0x11, 0x92, 0xdd, 0xbb, 0xbb, 0xab, 0x42, 0x24, 0x12, 0x18, 0x13, 0x20, 0x91, - 0xbf, 0x59, 0x45, 0x03, 0x8a, 0x98, 0xaa, 0xcb, 0x9a, 0x99, 0x38, 0x47, 0x12, 0x28, 0x43, 0x02, - 0xba, 0xbc, 0xcb, 0xab, 0x53, 0x82, 0xca, 0x28, 0x43, 0x02, 0x40, 0x45, 0xa1, 0xac, 0xb9, 0xac, - 0xab, 0x89, 0x31, 0x32, 0x73, 0x81, 0x89, 0x10, 0x02, 0x32, 0x90, 0xfe, 0xcc, 0x9a, 0x80, 0x81, - 0x08, 0x20, 0x04, 0x88, 0x72, 0x16, 0xa0, 0x0a, 0x10, 0x00, 0x10, 0x98, 0xaa, 0xcf, 0x89, 0x99, - 0x28, 0x14, 0x98, 0x19, 0x22, 0x20, 0x46, 0x82, 0xba, 0x9a, 0xa9, 0x8b, 0x56, 0x82, 0xab, 0x54, - 0x02, 0x31, 0x35, 0x23, 0x91, 0xac, 0x89, 0xf9, 0x9b, 0x08, 0x82, 0xeb, 0xbb, 0x18, 0x32, 0x54, - 0x81, 0xca, 0x29, 0x23, 0xa8, 0x18, 0x08, 0x02, 0x80, 0xa0, 0x0f, 0x34, 0x32, 0xb9, 0xde, 0x8b, - 0x90, 0xae, 0x9b, 0x89, 0x88, 0x99, 0x00, 0xaf, 0x62, 0x81, 0x18, 0x36, 0x02, 0x80, 0x53, 0x91, - 0xaa, 0xb9, 0xbe, 0x8b, 0x21, 0x01, 0x54, 0x83, 0xaa, 0x00, 0xd9, 0xac, 0x80, 0x30, 0x14, 0xcd, - 0x0a, 0x02, 0x40, 0x14, 0x21, 0x53, 0x33, 0x35, 0x12, 0xb8, 0xdc, 0xcb, 0xbb, 0xab, 0x09, 0x21, - 0x32, 0x55, 0x01, 0x20, 0x24, 0xa1, 0xb9, 0xbb, 0xcb, 0xdf, 0x8a, 0x21, 0x81, 0x00, 0x43, 0x35, - 0x82, 0x90, 0xba, 0xbc, 0xbc, 0x0a, 0x42, 0x93, 0x9a, 0x12, 0xc9, 0x19, 0xa9, 0xba, 0xee, 0x1b, - 0x34, 0x81, 0x10, 0xa8, 0x3a, 0x57, 0xa8, 0x88, 0x99, 0xbb, 0x71, 0x25, 0x81, 0x98, 0x00, 0x32, - 0x02, 0xa0, 0xbf, 0x89, 0xca, 0x29, 0x02, 0xcb, 0x9a, 0xaa, 0x9b, 0x61, 0x55, 0x23, 0x32, 0x32, - 0x91, 0xaa, 0xdb, 0xbb, 0x9b, 0xab, 0xaa, 0x70, 0x26, 0x31, 0x23, 0xc8, 0xbd, 0xba, 0xda, 0x9e, - 0x89, 0x00, 0x00, 0x31, 0x24, 0x53, 0x44, 0x22, 0x80, 0x99, 0xba, 0xad, 0xa9, 0xbc, 0xaa, 0xaa, - 0x39, 0x25, 0x43, 0x21, 0x25, 0x22, 0xb1, 0xcf, 0xbb, 0xbd, 0x9a, 0x20, 0x44, 0x12, 0x20, 0x23, - 0x02, 0x08, 0xa0, 0x89, 0x29, 0x73, 0x37, 0x11, 0xb9, 0xdb, 0xab, 0x08, 0xc9, 0x9a, 0x18, 0x01, - 0x41, 0x33, 0x23, 0xa0, 0xaa, 0xb9, 0xac, 0x55, 0x33, 0xe9, 0x09, 0x33, 0x84, 0xaa, 0x58, 0x36, - 0xa0, 0x19, 0xc8, 0xcd, 0x9a, 0x89, 0x12, 0x22, 0xb0, 0xaf, 0x00, 0x20, 0x41, 0x43, 0x12, 0x11, - 0x91, 0x9a, 0x02, 0xda, 0xde, 0x9b, 0x21, 0x90, 0x2a, 0x36, 0x12, 0x91, 0x18, 0x83, 0xff, 0xab, - 0xcb, 0xbb, 0x29, 0x33, 0x31, 0x45, 0x34, 0x82, 0x98, 0x10, 0x43, 0xa0, 0x9c, 0x10, 0x12, 0x40, - 0x03, 0xb9, 0x4a, 0x15, 0xba, 0x19, 0x91, 0xed, 0xab, 0x98, 0xab, 0xbb, 0x0a, 0x52, 0x03, 0xca, - 0xbb, 0x2b, 0x77, 0x22, 0x23, 0x23, 0x12, 0x11, 0x92, 0xca, 0xdd, 0xbd, 0xbc, 0x1a, 0x43, 0x03, - 0xa9, 0x08, 0x10, 0x22, 0x25, 0xb9, 0xda, 0x8b, 0x73, 0x03, 0x80, 0x99, 0x09, 0x11, 0x33, 0xcb, - 0x8a, 0x01, 0xfd, 0xab, 0xbb, 0x80, 0xcb, 0x99, 0x11, 0x22, 0x22, 0x34, 0xb1, 0xef, 0xba, 0x42, - 0x32, 0x32, 0x23, 0x44, 0x01, 0x31, 0x35, 0x11, 0x90, 0x48, 0x44, 0x83, 0x99, 0xca, 0xce, 0xbb, - 0xbc, 0x9c, 0x00, 0x10, 0x01, 0xca, 0x38, 0x33, 0x44, 0x23, 0x62, 0x33, 0x81, 0x10, 0xa1, 0x0b, - 0xd1, 0xcf, 0x9a, 0x00, 0x21, 0x01, 0xba, 0x89, 0x89, 0x30, 0x25, 0xfb, 0x89, 0x21, 0x33, 0x08, - 0x12, 0xfc, 0x9b, 0x43, 0xb1, 0x0c, 0x52, 0x34, 0x34, 0xc8, 0xad, 0x88, 0xba, 0xbc, 0x99, 0x90, - 0x8a, 0x30, 0x36, 0x02, 0x31, 0x04, 0x98, 0xab, 0x41, 0x45, 0x12, 0x42, 0x83, 0x10, 0x31, 0x45, - 0xa2, 0xcd, 0x0a, 0xa0, 0xab, 0x88, 0xda, 0xa9, 0xbb, 0x1a, 0x24, 0x33, 0x73, 0xc1, 0xab, 0x19, - 0x11, 0xeb, 0xab, 0x30, 0xb8, 0x73, 0x27, 0x21, 0x22, 0x01, 0x28, 0x13, 0xcd, 0xab, 0x99, 0x11, - 0xdd, 0xac, 0x88, 0x00, 0x11, 0x01, 0x18, 0x44, 0x33, 0x82, 0xbc, 0x0c, 0x21, 0x52, 0x84, 0xaa, - 0xa9, 0xeb, 0xbb, 0x99, 0xaa, 0x30, 0x24, 0x02, 0x42, 0xb0, 0xa9, 0xdb, 0xab, 0x20, 0x09, 0x57, - 0x24, 0x82, 0xab, 0x20, 0x20, 0x67, 0x43, 0x12, 0x80, 0x99, 0xb9, 0xbe, 0x99, 0x00, 0xc8, 0x0a, - 0x24, 0x13, 0xd9, 0xbe, 0x8a, 0xba, 0xac, 0x00, 0x51, 0x13, 0x21, 0x37, 0x01, 0xaa, 0x89, 0x08, - 0x73, 0x12, 0x11, 0x11, 0x90, 0xb9, 0xbe, 0x89, 0xaa, 0x8b, 0x53, 0x10, 0xc8, 0x9b, 0x01, 0x99, - 0x99, 0xdd, 0xab, 0x21, 0xb0, 0xaa, 0x0b, 0xec, 0x59, 0x34, 0x32, 0x44, 0x24, 0x01, 0xa9, 0xbc, - 0xcb, 0xcb, 0xcb, 0xab, 0x20, 0x53, 0x12, 0x31, 0x24, 0x22, 0x82, 0x38, 0x36, 0x13, 0x98, 0x19, - 0x36, 0x90, 0xab, 0xdb, 0x9a, 0xc9, 0x8b, 0x81, 0xfa, 0xbb, 0xb0, 0xbe, 0x09, 0x01, 0xcb, 0x39, - 0x52, 0x13, 0x19, 0x13, 0xa9, 0xa0, 0x58, 0x37, 0x46, 0x12, 0x00, 0x08, 0x11, 0x11, 0x99, 0x73, - 0x91, 0xea, 0xcb, 0xbb, 0x9b, 0xac, 0x89, 0x9a, 0x28, 0x47, 0x83, 0x08, 0x11, 0xa8, 0xac, 0x31, - 0x02, 0x99, 0x41, 0x24, 0x23, 0x33, 0xfc, 0x9a, 0x99, 0xa9, 0x09, 0xa8, 0x51, 0x63, 0x25, 0x10, - 0x00, 0xa9, 0x0a, 0xa1, 0xbf, 0x99, 0xa0, 0xab, 0x54, 0x42, 0x25, 0x00, 0x30, 0x16, 0xa0, 0x89, - 0xfb, 0xba, 0xba, 0xbc, 0x89, 0x00, 0x10, 0x32, 0x37, 0x80, 0x21, 0x02, 0xda, 0x1a, 0x52, 0x34, - 0x14, 0x81, 0x10, 0x81, 0x9b, 0xda, 0xae, 0x19, 0x90, 0x18, 0x14, 0xba, 0xab, 0x02, 0xcc, 0x89, - 0x88, 0xba, 0x1b, 0x52, 0x05, 0xcc, 0x9a, 0x89, 0x62, 0x32, 0x23, 0xca, 0x0a, 0x13, 0x19, 0x77, - 0x12, 0x80, 0x88, 0x10, 0x00, 0xba, 0xdc, 0xbb, 0xca, 0xab, 0x00, 0x00, 0x42, 0x45, 0x14, 0x00, - 0xa9, 0x38, 0x37, 0x92, 0x08, 0x01, 0xa0, 0xbd, 0xab, 0xb9, 0xcf, 0x99, 0x09, 0x41, 0x12, 0x31, - 0x02, 0xba, 0xbd, 0x11, 0xa8, 0xcd, 0x18, 0x10, 0x23, 0x73, 0x24, 0x22, 0x12, 0x23, 0x20, 0x33, - 0xa1, 0xce, 0xbb, 0xcc, 0xcd, 0x9b, 0x98, 0x00, 0xb9, 0x8b, 0x90, 0xdb, 0x50, 0x24, 0x21, 0x12, - 0x90, 0x3a, 0x37, 0x88, 0x11, 0x82, 0x99, 0xa9, 0x50, 0x57, 0x12, 0x81, 0x88, 0x98, 0xda, 0xab, - 0x00, 0xba, 0x8b, 0xda, 0x9b, 0x30, 0x13, 0x10, 0xa1, 0x53, 0x45, 0x01, 0x20, 0x12, 0x99, 0xcb, - 0xaa, 0x0a, 0x32, 0x45, 0x23, 0xa9, 0xdd, 0xdb, 0xcb, 0xaa, 0xaa, 0x9a, 0x52, 0x24, 0x11, 0x31, - 0x33, 0x52, 0x34, 0x12, 0x54, 0x23, 0x90, 0x19, 0xda, 0xdb, 0xcc, 0xba, 0x9a, 0x09, 0x00, 0x10, - 0x11, 0x90, 0x19, 0xb1, 0x9c, 0x12, 0x44, 0x55, 0x23, 0xa0, 0x99, 0x09, 0x44, 0x12, 0x00, 0x42, - 0x01, 0x20, 0x43, 0x92, 0x9c, 0xb8, 0xcf, 0xbb, 0x9a, 0x09, 0x19, 0x11, 0x32, 0x91, 0x1b, 0x30, - 0x17, 0xbb, 0x41, 0x23, 0x13, 0x90, 0xbb, 0xb9, 0x99, 0xdb, 0xeb, 0x8a, 0x32, 0x34, 0x81, 0xcb, - 0xba, 0xbe, 0x8b, 0x53, 0x82, 0x90, 0x09, 0x63, 0x11, 0xa0, 0x30, 0x25, 0x90, 0x0a, 0x56, 0x13, - 0x80, 0x88, 0xeb, 0xbc, 0x8a, 0x21, 0xa8, 0xba, 0xca, 0xdb, 0xab, 0xa8, 0x9b, 0x33, 0x26, 0x42, - 0x44, 0x25, 0x22, 0x11, 0x90, 0x99, 0x09, 0x91, 0xca, 0xcd, 0x9a, 0x89, 0x99, 0x3a, 0x37, 0x21, - 0x20, 0x22, 0xb9, 0x0b, 0xfb, 0xbc, 0x9c, 0x88, 0x18, 0x43, 0x81, 0x31, 0x02, 0x00, 0x12, 0x33, - 0x14, 0x10, 0x21, 0x33, 0x03, 0xcf, 0xaa, 0xaa, 0xab, 0x0a, 0x12, 0x41, 0x35, 0x90, 0xaa, 0xa1, - 0xbb, 0x31, 0x51, 0x13, 0x89, 0x55, 0x13, 0x80, 0x19, 0x22, 0xe9, 0xab, 0x88, 0xa8, 0xdc, 0xab, - 0xb9, 0x09, 0xa0, 0xcb, 0x28, 0x73, 0x02, 0x01, 0x11, 0x24, 0x99, 0x40, 0x25, 0x01, 0x00, 0x20, - 0x91, 0x99, 0x9a, 0x09, 0x42, 0x92, 0x10, 0x43, 0xb0, 0xbe, 0xb9, 0xbd, 0xdb, 0xab, 0x11, 0x00, - 0x28, 0x55, 0x22, 0x11, 0x10, 0x32, 0x34, 0x02, 0xcb, 0x9b, 0xb9, 0xaf, 0x9a, 0xa9, 0xcb, 0x09, - 0x23, 0x33, 0x13, 0x21, 0x23, 0x21, 0x11, 0xb0, 0x9b, 0x39, 0x13, 0xab, 0x00, 0x00, 0x20, 0x33, - 0x33, 0x21, 0x01, 0x99, 0x19, 0x93, 0xbd, 0xcb, 0x99, 0xcb, 0x89, 0x41, 0x24, 0x81, 0xa8, 0x9a, - 0x9a, 0x09, 0x30, 0x53, 0x01, 0x30, 0x35, 0x14, 0x10, 0x33, 0xa1, 0xbb, 0xbb, 0x9a, 0xb9, 0xab, - 0xbb, 0x0a, 0xbb, 0xac, 0x10, 0xba, 0xbb, 0xbb, 0x32, 0x43, 0x33, 0x33, 0x12, 0x12, 0x99, 0x9a, - 0x10, 0xd9, 0xab, 0x20, 0x12, 0x31, 0x01, 0x01, 0xb9, 0x9a, 0x09, 0x21, 0xb0, 0xae, 0x10, 0x90, - 0xa9, 0x20, 0x53, 0x13, 0x00, 0x19, 0x35, 0x83, 0x99, 0x0b, 0x21, 0xb9, 0xbc, 0xba, 0xdb, 0x89, - 0x09, 0x21, 0x33, 0x43, 0x00, 0x31, 0x13, 0xb0, 0xab, 0xb9, 0x99, 0x10, 0x23, 0xa0, 0x99, 0x32, - 0x31, 0x53, 0x02, 0x98, 0x00, 0x90, 0x9b, 0x00, 0xb9, 0xac, 0x08, 0x31, 0x92, 0xb9, 0x10, 0xc9, - 0x9b, 0x23, 0xb0, 0x9b, 0x21, 0x11, 0x22, 0x11, 0x21, 0x33, 0x03, 0xa9, 0x19, 0x21, 0x90, 0x9a, - 0xa9, 0x19, 0x99, 0xab, 0x99, 0xbb, 0x1a, 0x12, 0x12, 0x12, 0x01, 0x99, 0x10, 0x12, 0x11, 0x11, - 0x11, 0x91, 0x09, 0x10, 0x00, 0x9a, 0x29, 0x23, 0x91, 0x99, 0xa9, 0xab, 0xa9, 0x9a, 0x10, 0x01, - 0x09, 0x99, 0x11, 0x13, 0x11, 0x11, 0x22, 0x21, 0x12, 0x11, 0x01, 0xb9, 0x9b, 0xa9, 0x9a, 0x10, - 0x11, 0x21, 0x91, 0x19, 0x90, 0xa9, 0x99, 0x99, 0x99, 0x90, 0x99, 0x09, 0x00, 0x99, 0x10, 0x31, - 0x12, 0x01, 0x21, 0x22, 0x11, 0x10, 0x90, 0xb9, 0xab, 0x99, 0x9a, 0x11, 0x12, 0x90, 0x09, 0x90, - 0x99, 0x0a, 0x01, 0x00, 0x11, 0x11, 0x12, 0x11, 0x09, 0x00, 0x90, 0x19, 0x11, 0x11, 0x91, 0x90, - 0x90, 0xa9, 0x99, 0x0a, 0x99, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x10, 0x10, 0x01, 0x00, 0x01, - 0x99, 0x99, 0x99, 0x10, 0x00, 0x10, 0x19, 0x10, 0x01, 0x00, 0x00, 0x00, 0x99, 0x90, 0x09, 0x09, - 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x70, -}; - diff --git a/build/tests/yuv2rgb/yuv2rgb.rsf.template b/build/tests/yuv2rgb/yuv2rgb.rsf.template deleted file mode 100644 index a67b1fa4..00000000 --- a/build/tests/yuv2rgb/yuv2rgb.rsf.template +++ /dev/null @@ -1,222 +0,0 @@ -#---------------------------------------------------------------------------- -# Project: TwlSDK - include -# File: ROM-TS.rsf -# -# Copyright 2007 Nintendo. All rights reserved. -# -# These coded insructions, statements, and computer programs contain -# proprietary information of Nintendo of America Inc. and/or Nintendo -# Company Ltd., and are protected by Federal copyright law. They may -# not be disclosed to third parties or copied or duplicated in any form, -# in whole or in part, without the prior written consent of Nintendo. -# -# $Date:: $ -# $Rev$ -# $Author$ -#---------------------------------------------------------------------------- -# -# TWL ROM SPEC FILE -# - -Arm9 -{ - Static "$(MAKEROM_ARM9:r).TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.FLX.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.FLX.sbin$(COMPSUFFIX9)" - Elf "$(MAKEROM_ARM9:r).tef" -} - -Arm7 -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.FLX.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.FLX.sbin$(COMPSUFFIX7)" - Elf "$(MAKEROM_ARM7_BASE:r).tef" -} - -Arm9.Ltd -{ - Static "$(MAKEROM_ARM9:r).TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayDefs "$(MAKEROM_ARM9:r)_defs.TWL.LTD.sbin$(COMPSUFFIX9)" - OverlayTable "$(MAKEROM_ARM9:r)_table.TWL.LTD.sbin$(COMPSUFFIX9)" -} - -Arm7.Ltd -{ - Static "$(MAKEROM_ARM7_BASE:r).TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayDefs "$(MAKEROM_ARM7_BASE:r)_defs.TWL.LTD.sbin$(COMPSUFFIX7)" - OverlayTable "$(MAKEROM_ARM7_BASE:r)_table.TWL.LTD.sbin$(COMPSUFFIX7)" -} - -Property -{ - ### - ### Settings for FinalROM - ### - #### BEGIN - # - # TITLE NAME: Your product name within 12bytes - # - #TitleName "YourAppName" - - # - # MAKER CODE: Your company ID# in 2 ascii words - # issued by NINTENDO - # - #MakerCode "00" - - # - # REMASTER VERSION: Mastering version - # - #RomVersion 0 - - # - # ROM SPEED TYPE: [MROM/1TROM/UNDEFINED] - # - RomSpeedType $(MAKEROM_ROMSPEED) - - # - # ROM SIZE: in bit [64M/128M/256M/512M/1G/2G] - # - #RomSize 128M - #RomSize 256M - - # - # ROM PADDING: TRUE if finalrom - # - #RomFootPadding TRUE - - # - # ROM HEADER TEMPLATE: Provided to every product by NINTENDO - # - #RomHeaderTemplate ./etc/rom_header.template.sbin - - # - # BANNER FILE: generated from Banner Spec File - # - #BannerFile ./etc/myGameBanner.bnr - BannerFile $(TWLSDK_ROOT)/include/twl/specfiles/default.bnr - - # - # Permit TmpJump: for TWL "ApplicationJump" function - # - #PermitLandingTmpJump $(TWL_IPL_MAKEROM_PERMIT_TMP_JUMP) - - ### - ### Setting for TWL - ### - # - # ROM HEADER Ltd: Provided to every product by NINTENDO - # - RomHeaderLtd $(TWLSDK_ROOT)/tools/bin/rom_header.LTD.sbin - - # - # Digest parameters: - # - DigestParam 1024 32 - - # - # WRAM mapping: [MAP_BB_HYB/MAP_BB_LTD/MAP_TS_HYB/MAP_TS_LTD - # MAP2_BB_HYB/MAP2_BB_LTD/MAP2_TS_HYB/MAP2_TS_LTD] - # don't have to edit - # - WramMapping $(MAKEROM_WRAM_MAPPING) - WramMappingDirect $(TWL_IPL_RED_ROOT)/build/components/jackal.TWL/wram_regs/wram_regs.rbin - - # - # CardRegion: card region [Japan/America/Europe/Australia/China/Korea] - # - CardRegion Japan - - # - # Codec mode: - # don't have to edit - # - CodecMode $(MAKEROM_CODEC_MODE) - - # - # SCFG: scfg lock [TRUE/FALSE] - # - LockSCFG FALSE - - # - # HwAESSlotB: launcher deliver HW AES slot B setting [TRUE/FALSE] - # - HwAESSlotB TRUE - - # - # NANDAccess: nand access control [TRUE/FALSE] - # - NANDAccess TRUE - - # - # SDCardAccess: sd card access control [TRUE/FALSE] - # - SDCardAccess TRUE - - ### - #### END -} - -AppendProperty -{ - # - # Publisher : "Nintendo" - # don't have to edit - Publisher Nintendo - - # - # Application type : [USER/SYSTEM] - # don't have to edit - AppType System - AppType User - - # - # launch title on the launcher : [TRUE/FALSE] - # don't have to edit - Launch TRUE - - # - # Boot allowed Media: [GameCard/NAND] - # - Media GameCard - - # - # Data only title : [TRUE/FALSE] - # don't have to edit - DataOnly FALSE - - # - # Secure title : [TRUE/FALSE] - # don't have to edit - Secure TRUE - - # - # GameCode for TitleID : Your GameCode in 4 ascii words - # use "4NAJ" for hyena - GameCode HNAJ - GameCode NTRJ - - # - # Public save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PublicSaveDataSize 0K - - # - # Private save data size: [16K/32K/64K/128K/256K/512K/1M/2M/4M/8M] - # - #PrivateSaveDataSize 0K - - # - # Enable SubBannerFile - #SubBannerFile FALSE -} - -RomSpec -{ - Offset 0x00000000 - Segment ALL - HostRoot $(MAKEROM_ROMROOT) - Root / - File $(MAKEROM_ROMFILES) -} diff --git a/docs/AboutApplicationJump.doc b/docs/AboutApplicationJump.doc deleted file mode 100644 index 4ef9565c..00000000 Binary files a/docs/AboutApplicationJump.doc and /dev/null differ diff --git a/docs/DSãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル.vsd b/docs/DSãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル.vsd deleted file mode 100644 index 4a2b7b1a..00000000 Binary files a/docs/DSãƒãƒƒã‚·ãƒ¥ãƒ†ãƒ¼ãƒ–ル.vsd and /dev/null differ diff --git a/docs/ISデãƒãƒƒã‚¬/ISデãƒãƒƒã‚¬ã‚¿ã‚¹ã‚¯.vsd b/docs/ISデãƒãƒƒã‚¬/ISデãƒãƒƒã‚¬ã‚¿ã‚¹ã‚¯.vsd deleted file mode 100644 index 71e8aea1..00000000 Binary files a/docs/ISデãƒãƒƒã‚¬/ISデãƒãƒƒã‚¬ã‚¿ã‚¹ã‚¯.vsd and /dev/null differ diff --git a/docs/ISデãƒãƒƒã‚¬/TWL_staticModule.xls b/docs/ISデãƒãƒƒã‚¬/TWL_staticModule.xls deleted file mode 100644 index e91c4a20..00000000 Binary files a/docs/ISデãƒãƒƒã‚¬/TWL_staticModule.xls and /dev/null differ diff --git a/docs/ISデãƒãƒƒã‚¬/TWLデãƒãƒƒã‚¬ROMã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³è¦æ±‚仕様.doc b/docs/ISデãƒãƒƒã‚¬/TWLデãƒãƒƒã‚¬ROMã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³è¦æ±‚仕様.doc deleted file mode 100644 index 443c6a8e..00000000 Binary files a/docs/ISデãƒãƒƒã‚¬/TWLデãƒãƒƒã‚¬ROMã‚¨ãƒŸãƒ¥ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³è¦æ±‚仕様.doc and /dev/null differ diff --git a/docs/ISデãƒãƒƒã‚¬/twl-i2c-regs_nin_20080315.pdf b/docs/ISデãƒãƒƒã‚¬/twl-i2c-regs_nin_20080315.pdf deleted file mode 100644 index 3287ac75..00000000 Binary files a/docs/ISデãƒãƒƒã‚¬/twl-i2c-regs_nin_20080315.pdf and /dev/null differ diff --git a/docs/ISデãƒãƒƒã‚¬/アプリジャンプDEBUG.txt b/docs/ISデãƒãƒƒã‚¬/アプリジャンプDEBUG.txt deleted file mode 100644 index 49bb1b74..00000000 --- a/docs/ISデãƒãƒƒã‚¬/アプリジャンプDEBUG.txt +++ /dev/null @@ -1,8 +0,0 @@ -TODO: - -EƒAƒvƒŠƒWƒƒƒ“ƒvæ‚ŃfƒoƒbƒK‚ð—LŒø‚É‚·‚é‚©‚Ç‚¤‚©‚̃tƒ‰ƒO‚ðROMƒwƒbƒ_‚ɒljÁ - -EŠO•”‚É’ñ‹Ÿ‚·‚éŠJ”­”ł̃AƒvƒŠ‚ðƒrƒ‹ƒh‚·‚éÛAã‹Lƒtƒ‰ƒO‚ȂǃZƒLƒ…ƒŠƒeƒB‚ÉŠÖ‚·‚éƒtƒ‰ƒO‚ð‚·‚×‚Äƒ`ƒFƒbƒN‚·‚éƒ`ƒFƒbƒJ‚ð’Ê‚· - - ŠO•”’ñ‹Ÿ”Å‚ÍMaketad‚ÅŒ®‚ð•ÏX‚·‚éƒpƒX‚ð•K‚¸’Ê‚é‚Ì‚ÅA‚»‚±‚ɃZƒbƒg‚·‚é‚Ì‚ª—Ç‚¢H - -# ƒfƒoƒbƒO‚Ƃ͊֌W‚È‚¢‚ªcc»•i”ł̓}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚Å“¯—l‚̃`ƒFƒbƒN‚ðs‚¤H diff --git a/docs/NANDアクセス権.mmap b/docs/NANDアクセス権.mmap deleted file mode 100644 index 680cce6c..00000000 Binary files a/docs/NANDアクセス権.mmap and /dev/null differ diff --git a/docs/NANDシステム領域.ppt b/docs/NANDシステム領域.ppt deleted file mode 100644 index 75eaa917..00000000 Binary files a/docs/NANDシステム領域.ppt and /dev/null differ diff --git a/docs/NANDシステム領域ã¨ãƒ¦ãƒ¼ã‚¶é ˜åŸŸã®åŒºåˆ†ã¨é‹ç”¨.vsd b/docs/NANDシステム領域ã¨ãƒ¦ãƒ¼ã‚¶é ˜åŸŸã®åŒºåˆ†ã¨é‹ç”¨.vsd deleted file mode 100644 index 4303a0fc..00000000 Binary files a/docs/NANDシステム領域ã¨ãƒ¦ãƒ¼ã‚¶é ˜åŸŸã®åŒºåˆ†ã¨é‹ç”¨.vsd and /dev/null differ diff --git a/docs/NANDシステム領域ã¨ãƒ¦ãƒ¼ã‚¶é ˜åŸŸã®è¨ˆç®—方法.ppt b/docs/NANDシステム領域ã¨ãƒ¦ãƒ¼ã‚¶é ˜åŸŸã®è¨ˆç®—方法.ppt deleted file mode 100644 index 0352aea4..00000000 Binary files a/docs/NANDシステム領域ã¨ãƒ¦ãƒ¼ã‚¶é ˜åŸŸã®è¨ˆç®—方法.ppt and /dev/null differ diff --git a/docs/NAND領域概算.txt b/docs/NAND領域概算.txt deleted file mode 100644 index 8bc61148..00000000 --- a/docs/NAND領域概算.txt +++ /dev/null @@ -1,59 +0,0 @@ -ƒVƒXƒeƒ€—̈æŠTŽZ - -NANDƒtƒ@[ƒ€—̈æ 4096KB (= 4MB) -ƒ†[ƒU[—̈æ 131072KB (=128MB) -ƒVƒXƒeƒ€—̈æ 76800KB (= 75MB) -ŽÊ^ƒf[ƒ^ 32768KB (= 32MB) -NAND HW —\–ñ—̈æ 17408KB (= 17MB) ---------------------------- -Œv 262144KB (= 256MB) - - -ƒVƒXƒeƒ€—̈æƒfƒtƒHƒ‹ƒgŽg—pƒTƒCƒY ---------------------------- - FATŠÇ—î•ñ 1024KB - ƒVƒXƒeƒ€î•ñ - HWID–¼@ 16KB - Ø–¾‘ƒŠƒXƒg@@ 16KB - ƒfƒoƒCƒX”é–§Œ® 16KB - ƒfƒoƒCƒXØ–¾‘ 16KB - @ƒVƒ‡ƒbƒvƒAƒJƒEƒ“ƒg 16KB - ƒZƒLƒ…ƒAHWî•ñ@ 16KB - ƒm[ƒ}ƒ‹HWî•ñ@ 16KB - ‹¤—LƒtƒHƒ“ƒg@ 1312KB (265KB+394KB+653KB) - –{‘ÌÝ’èƒf[ƒ^@ 32KB (16KB * 2) - eTicketƒf[ƒ^ - eTicket 96KB (16KB * 6) - TMD 96KB (16KB * 6) - Titleƒf[ƒ^ - ƒ‰ƒ“ƒ`ƒƒ[@ 3584KB - save 16KB - –{‘ÌÝ’è@@ 5120KB - save 0KB - ƒsƒNƒgƒ`ƒƒƒbƒg@ 512KB - save 0KB - DS downloadPlay 512KB - save 0KB - ŽÊ^’  8192KB - save 512KB - NintendoSpot 1024KB - save ?KB ---------------------------- -Œv 22144KB (21.7MB) - -import / tmpŠm•Û•K—vƒTƒCƒY ---------------------------- - content 32768KB - private.sav 4096KB - public.sav 4096KB - banner.dat 16KB - eTicket 16KB - TMD 16KB - directory entry 80KB (16KB * 5) ---------------------------- -Œv 41088KB (=40.2MB) - - -ƒVƒXƒeƒ€—̈æ‹ó‚«ƒTƒCƒY - - 76800KB - 22144KB - 41088KB = 13568KB (=13.25MB) diff --git a/docs/NandInitializerã®åˆ†é¡žã«ã¤ã„ã¦.txt b/docs/NandInitializerã®åˆ†é¡žã«ã¤ã„ã¦.txt deleted file mode 100644 index 65ea89d7..00000000 --- a/docs/NandInitializerã®åˆ†é¡žã«ã¤ã„ã¦.txt +++ /dev/null @@ -1,77 +0,0 @@ -/*---------------------------------------------------*/ -/* NandInitializer ‚Ì•ª—ނɂ‚¢‚Ä */ -/* */ -/* 2008/04/14 kamikawa */ -/*---------------------------------------------------*/ - -‰º‹L‚Ì‚R‚‚̃vƒƒOƒ‰ƒ€‚ɂ‚¢‚Äà–¾‚µ‚Ü‚·B - -ENandInitializerRed.srl -ENandInitializerProduct.srl -ENandInitializer.srl - -‚±‚ê‚ç‚Í‘S‚Ä NAND ‚ð‰Šú‰»‚·‚邽‚߂̃vƒƒOƒ‰ƒ€‚Å‚·‚ªA -–Ú“I‚ɉž‚¶‚Ä‹@”\§ŒÀ‚ª‰Á‚¦‚ç‚ê‚Ä‚¢‚Ü‚·B - - -[‹@”\§ŒÀˆê——•\] - -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| ƒƒjƒ…[–¼Ì | NandInitializerRed | NandInitializerProduct | NandInitializer | ‹@”\ŠT—v | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| FORMAT NAND | › | ›¦ | ¢ | NAND‚̃tƒH[ƒ}ƒbƒg‚ðs‚¢‚Ü‚· | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| WRITE HARDWARE INFO | › | ›¦ | › | ƒŠ[ƒWƒ‡ƒ“•ÏX‚Ȃǂðs‚¢‚Ü‚· | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| WRITE ETICKET SIGN | › | ›¦ | ~ | eTicket ‚Ì–¼‚ð‘‚«ž‚݂܂· | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| IMPORT TAD FROM SD | › | ›¦ | ~ | SDƒJ[ƒh‚©‚çNANDƒAƒvƒŠ‚ðƒCƒ“ƒ|[ƒg‚µ‚Ü‚· | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| IMPORT NANDFIRM FROM SD | › | ›¦ | ~ | SDƒJ[ƒh‚©‚çNANDƒtƒ@[ƒ€‚ð‘‚«ž‚݂܂· | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ -| IMPORT NORFIRM FROM SD | › | ~ | ~ | SDƒJ[ƒh‚©‚çNORƒtƒ@[ƒ€‚ð‘‚«ž‚݂܂· | -+-------------------------+--------------------+------------------------+-----------------+------------------------------------------+ - - ¦ : Ž©“®ŽÀs‚É‚æ‚胃jƒ…[‚ÌÚׂȎw’è‚ðs‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB - ¢ : ƒNƒŠ[ƒ“ƒAƒbƒv‚ƃ`ƒFƒbƒNƒfƒBƒXƒNˆÈŠO‚Í‘I‘ð‚Å‚«‚Ü‚¹‚ñB - - -``` NandInitializerRed ``` - -‹@”\§ŒÀ‚̂Ȃ¢ƒvƒƒOƒ‰ƒ€‚Å‚·BRed‚Æ‚¢‚¤–¼‚̂‚¢‚Ä‚¢‚邯‚¨‚è -ŠJ”­‹Zp•”“à‚ł̂ݎg—p‚µ‚Ä‚­‚¾‚³‚¢B - - -``` NandInitializerProduct ``` - -ŒŸ¸H’öŒü‚¯‚Ɉ—‚ðŽ©“®ŽÀs‚·‚邿‚¤‚É‚µ‚Ä‚¢‚Ü‚·B -Ž©“®ŽÀs‚Ì‚½‚߃ƒjƒ…[‚ÌÚׂ͑I‘ð‚·‚é‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB -‹ï‘Ì“I‚È“®ì‚Æ‚µ‚Ä‚ÍA‰º‹L‚Ì1`5‚ðŽÀs‚µ‚Ä "OK" ‚Ü‚½‚Í "NG" ‚ð -•\ަ‚µ‚½‚ ‚Æ–³ŒÀƒ‹[ƒv‚É“ü‚è‚Ü‚·B - -1. FORMAT NAND -> FORMAT -2. WRITE HARDWARE INFO -> REGION JAPAN -3. WRITE ETICKET SIGN -> WRITE E-TICKET -4. IMPORT TAD FROM SD -> OVERWRITE ALL -5. IMPORT NANDFIRM FROM SD -> ʼn‚ÉŒ©‚‚¯‚½*.nandƒtƒ@ƒCƒ‹ - -š SDƒJ[ƒh‚̃‹[ƒg‚Énandinitializer.ini‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚ð—pˆÓ‚·‚邱‚ƂŠ- ‰Šú‰»‚·‚éÛ‚Ì Region ‚Æ ƒƒCƒ„ƒŒƒXÝ’è‚ðŽw’è‚·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - nandinitializer.ini ‚̃tƒH[ƒ}ƒbƒg‚͈ȉº‚̂Ƃ¨‚è‚Å‚·B - ---- ‚±‚±‚©‚ç ---- -REGION:0 //(0:JAPAN, 1:AMERICA, 2:EUROPE, 3:AUSTRALIA, 4:CHINA, 5:KOREA) -WIRELESS_FORCE_OFF:0 //(0:Wireless Enable, 1:Wireless Disable) ---- ‚±‚±‚܂Š---- - -``` NandInitializer ``` - -SDK‚Å”z•z‚·‚邽‚߂ɑ½‚­‚Ì‹@”\‚ð휂µ‚Ä‚¢‚Ü‚·B -ŽÀs‰Â”\‚ȃƒjƒ…[‚ÍuFORMAT NANDv‚ÆuWRITE HARDWARE INFOv‚݂̂ł·B -uFORMAT NANDv‚ł̓NƒŠ[ƒ“ƒAƒbƒv‚ƃ`ƒFƒbƒNƒfƒBƒXƒN‚̂ݑI‘ð‚Å‚«‚Ü‚·B - -š ARM9.TWL‘¤‚ÌMakefile‚̃Rƒƒ“ƒgs‚ð1sŠO‚·‚±‚Ƃɂæ‚è - ƒƒCƒ„ƒŒƒX‚Ì‹­§Disableƒtƒ‰ƒO‚ðÝ’è‰Â”\‚È“Á•Ê‚ÈNandInitializer‚ð - 쬂·‚邱‚Æ‚ª‚Å‚«‚Ü‚·B - -ˆÈã diff --git a/docs/TWLアプリ間共有ファイル.ppt b/docs/TWLアプリ間共有ファイル.ppt deleted file mode 100644 index e37eabf3..00000000 Binary files a/docs/TWLアプリ間共有ファイル.ppt and /dev/null differ diff --git a/docs/TWLソフトå„種コード設定è¦å‰‡080327.pdf b/docs/TWLソフトå„種コード設定è¦å‰‡080327.pdf deleted file mode 100644 index a9e89247..00000000 Binary files a/docs/TWLソフトå„種コード設定è¦å‰‡080327.pdf and /dev/null differ diff --git a/docs/TWLマスタリング手順書.doc b/docs/TWLマスタリング手順書.doc deleted file mode 100644 index ada41959..00000000 Binary files a/docs/TWLマスタリング手順書.doc and /dev/null differ diff --git a/docs/TWLランãƒãƒ£ãƒ¼.mmap b/docs/TWLランãƒãƒ£ãƒ¼.mmap deleted file mode 100644 index 1c90fbf7..00000000 Binary files a/docs/TWLランãƒãƒ£ãƒ¼.mmap and /dev/null differ diff --git a/docs/TWL関連データé…布制é™.xls b/docs/TWL関連データé…布制é™.xls deleted file mode 100644 index be5ed2e1..00000000 Binary files a/docs/TWL関連データé…布制é™.xls and /dev/null differ diff --git a/docs/TitleIDリスト.mmap b/docs/TitleIDリスト.mmap deleted file mode 100644 index 015c7684..00000000 Binary files a/docs/TitleIDリスト.mmap and /dev/null differ diff --git a/docs/_README.txt b/docs/_README.txt deleted file mode 100644 index c6769a97..00000000 --- a/docs/_README.txt +++ /dev/null @@ -1,4 +0,0 @@ -mmapƒtƒ@ƒCƒ‹‚ÍAuMindManagerv‚ðŽg—p‚µ‚Ä쬂µ‚Ä‚¢‚Ü‚·B -‰{——‚·‚é‚É‚ÍA‰º‹LƒTƒCƒg‚Å–³—¿‚ÌMindManagerViewer‚ðƒ_ƒEƒ“ƒ[ƒh‚µ‚Ä‚­‚¾‚³‚¢B - -http://www.mindjet.com/jp/products/mindmanager_viewers/index.php?s=3 diff --git a/docs/format_ROM_Header.xls b/docs/format_ROM_Header.xls deleted file mode 100644 index 52ef552c..00000000 Binary files a/docs/format_ROM_Header.xls and /dev/null differ diff --git a/docs/format_ROM_Header_rev2109_fromIS.xls b/docs/format_ROM_Header_rev2109_fromIS.xls deleted file mode 100644 index 26c69f3d..00000000 Binary files a/docs/format_ROM_Header_rev2109_fromIS.xls and /dev/null differ diff --git a/docs/format_TWLBanner.xls b/docs/format_TWLBanner.xls deleted file mode 100644 index c0024923..00000000 Binary files a/docs/format_TWLBanner.xls and /dev/null differ diff --git a/docs/format_TitleID.xls b/docs/format_TitleID.xls deleted file mode 100644 index 668897ba..00000000 Binary files a/docs/format_TitleID.xls and /dev/null differ diff --git a/docs/ãã®ä»–/Nintendoロゴã®å–り扱ã„.pdf b/docs/ãã®ä»–/Nintendoロゴã®å–り扱ã„.pdf deleted file mode 100644 index c01b62de..00000000 Binary files a/docs/ãã®ä»–/Nintendoロゴã®å–り扱ã„.pdf and /dev/null differ diff --git a/docs/ãã®ä»–/nintendoロゴ表示.pdf b/docs/ãã®ä»–/nintendoロゴ表示.pdf deleted file mode 100644 index 37150613..00000000 Binary files a/docs/ãã®ä»–/nintendoロゴ表示.pdf and /dev/null differ diff --git a/docs/ãã®ä»–/shared_font_LC.pdf b/docs/ãã®ä»–/shared_font_LC.pdf deleted file mode 100644 index d512b639..00000000 --- a/docs/ãã®ä»–/shared_font_LC.pdf +++ /dev/null @@ -1,67 +0,0 @@ -%PDF-1.2 -1 0 obj -<> -endobj - -2 0 obj -<> -endobj - -3 0 obj -<> -endobj - -4 0 obj -<> -endobj - -5 0 obj -<>> /Descent -241 /ItalicAngle 0 /XHeight 450 /StemV 69 /Type /FontDescriptor /CapHeight 709 /FontBBox [-170 -331 1024 903] /FontName /Ryumin-Light>> -endobj - -6 0 obj -<>] /Type /Font /Encoding /EUC-H /BaseFont /Ryumin-Light-EUC-H /Subtype /Type0 /Name /F2>> -endobj - -7 0 obj -<> -endobj - -8 0 obj -<>> /Descent -271 /ItalicAngle 0 /XHeight 553 /StemV 99 /Type /FontDescriptor /CapHeight 737 /FontBBox [-174 -268 1001 944] /FontName /GothicBBB-Medium>> -endobj - -9 0 obj -<>] /Type /Font /Encoding /EUC-H /BaseFont /GothicBBB-Medium-EUC-H /Subtype /Type0 /Name /F4>> -endobj - -10 0 obj -<> stream - q q BT /F2 10.5 Tf 0 Ts 0 Tr 72 745.3125 Td [ ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 72 709.3125 Td [ ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 72 678.3125 Td [ ] TJ ET Q q 1 0 0 1 72 674.5 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 107.125 660.3125 Td [ ] TJ ET Q q 1 0 0 1 194.75 674.5 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 224.625 660.3125 Td [ ] TJ ET Q q 1 0 0 1 317.5 674.5 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 352.625 660.3125 Td [ ] TJ ET Q q 1 0 0 1 440.25 674.5 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 485.875 660.3125 Td [ ] TJ ET Q q 1 0 0 1 72 654 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 77 639.8125 Td [(TWL_LC_Font_t.NFTR) ] TJ ET Q q 1 0 0 1 194.75 654 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 199.75 639.8125 Td [ ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 262.75 639.8125 Td [( 8pt\(7) ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 287.5405 639.8125 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 300.6655 639.8125 Td [-250 (8\)) ] TJ ET Q q 1 0 0 1 317.5 654 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 322.5 639.8125 Td [(Wii\() ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 341.7465 639.8125 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 386.3715 639.8125 Td [-250 (\)) ] TJ ET Q q 1 0 0 1 440.25 654 cm 0 -20.5 m 0 -20.5 122.75 20.5 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 445.25 639.8125 Td [(99KB) ] TJ ET Q q 1 0 0 1 72 633.5 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 77 611.4375 Td [(TWL_LC_Font_s.NFTR) ] TJ ET Q q 1 0 0 1 194.75 633.5 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 199.75 619.3125 Td [ ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 262.75 619.3125 Td [( 10pt\(9) ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 292.7905 619.3125 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 199.75 603.5625 Td [(12\)) ] TJ ET Q q 1 0 0 1 317.5 633.5 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 322.5 611.4375 Td [(Wii\() ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 341.7465 611.4375 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 386.3715 611.4375 Td [-250 (\)) ] TJ ET Q q 1 0 0 1 440.25 633.5 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 445.25 611.4375 Td [(149KB) ] TJ ET Q q 1 0 0 1 72 597.25 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 77 575.1875 Td [(TWL_LC_Font_m.NFTR) ] TJ ET Q q 1 0 0 1 194.75 597.25 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 199.75 583.0625 Td [ ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 262.75 583.0625 Td [( 12pt\(11) ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 298.0405 583.0625 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 199.75 567.3125 Td [(15\)) ] TJ ET Q q 1 0 0 1 317.5 597.25 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 322.5 575.1875 Td [(Wii\() ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 341.7465 575.1875 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 386.3715 575.1875 Td [-250 (\)) ] TJ ET Q q 1 0 0 1 440.25 597.25 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 445.25 575.1875 Td [(200KB) ] TJ ET Q q 1 0 0 1 72 561 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 77 538.9375 Td [(TWL_LC_Font_l.NFTR) ] TJ ET Q q 1 0 0 1 194.75 561 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F2 10.5 Tf 0 Ts 0 Tr 199.75 546.8125 Td [ ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 262.75 546.8125 Td [( 16pt\(15) ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 298.0405 546.8125 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 199.75 531.0625 Td [(21\)) ] TJ ET Q q 1 0 0 1 317.5 561 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 322.5 538.9375 Td [(Wii\() ] TJ ET Q q BT /F2 10.5 Tf 0 Ts 0 Tr 341.7465 538.9375 Td [-250 ] TJ ET Q q BT /F1 10.5 Tf 0 Ts 0 Tr 386.3715 538.9375 Td [-250 (\)) ] TJ ET Q q 1 0 0 1 440.25 561 cm 0 -36.25 m 0 -36.25 122.75 36.25 re S Q q BT /F1 10.5 Tf 0 Ts 0 Tr 445.25 538.9375 Td [(336KB) ] TJ ET Q q BT /F3 9 Tf 0 Ts 0 Tr 294.998 36 Td [(1) ] TJ ET Q Q -endstream -endobj - -11 0 obj -<> /ProcSet [/PDF /Text]>> /Type /Page /MediaBox [0 0 595 842] /Parent 1 0 R>> -endobj - -xref -0 12 -0000000000 65535 f -0000000009 00000 n -0000000066 00000 n -0000000114 00000 n -0000000222 00000 n -0000000293 00000 n -0000000524 00000 n -0000000790 00000 n -0000000896 00000 n -0000001131 00000 n -0000001405 00000 n -0000006160 00000 n - -trailer -<> -startxref -6325 -%%EOF diff --git a/docs/アプリジャンプ.mmap b/docs/アプリジャンプ.mmap deleted file mode 100644 index 2234f55e..00000000 Binary files a/docs/アプリジャンプ.mmap and /dev/null differ diff --git a/docs/アプリ種別.mmap b/docs/アプリ種別.mmap deleted file mode 100644 index 3cb2f522..00000000 Binary files a/docs/アプリ種別.mmap and /dev/null differ diff --git a/docs/ゲームカード/KeyTable.vsd b/docs/ゲームカード/KeyTable.vsd deleted file mode 100644 index 3e36a68f..00000000 Binary files a/docs/ゲームカード/KeyTable.vsd and /dev/null differ diff --git a/docs/ゲームカード/TWLカードメモリ容é‡ã«ã‚ˆã‚‹ä»•様é•ã„.xls b/docs/ゲームカード/TWLカードメモリ容é‡ã«ã‚ˆã‚‹ä»•様é•ã„.xls deleted file mode 100644 index 559fdca8..00000000 Binary files a/docs/ゲームカード/TWLカードメモリ容é‡ã«ã‚ˆã‚‹ä»•様é•ã„.xls and /dev/null differ diff --git a/docs/ゲームカード/_PrivateNitroRomHeader.pdf b/docs/ゲームカード/_PrivateNitroRomHeader.pdf deleted file mode 100644 index 5f8edcf4..00000000 Binary files a/docs/ゲームカード/_PrivateNitroRomHeader.pdf and /dev/null differ diff --git a/docs/ゲームカード/カード読ã¿è¾¼ã¿ã‚·ãƒ¼ã‚±ãƒ³ã‚¹è¡¨.xls b/docs/ゲームカード/カード読ã¿è¾¼ã¿ã‚·ãƒ¼ã‚±ãƒ³ã‚¹è¡¨.xls deleted file mode 100644 index 2a328165..00000000 Binary files a/docs/ゲームカード/カード読ã¿è¾¼ã¿ã‚·ãƒ¼ã‚±ãƒ³ã‚¹è¡¨.xls and /dev/null differ diff --git a/docs/ゲームカード/ゲームカード挿抜検出.xls b/docs/ゲームカード/ゲームカード挿抜検出.xls deleted file mode 100644 index ef012fe4..00000000 Binary files a/docs/ゲームカード/ゲームカード挿抜検出.xls and /dev/null differ diff --git a/docs/ゲームカード/活線挿抜 未実装部分.mmap b/docs/ゲームカード/活線挿抜 未実装部分.mmap deleted file mode 100644 index f656fc20..00000000 Binary files a/docs/ゲームカード/活線挿抜 未実装部分.mmap and /dev/null differ diff --git a/docs/ゲームカード/活線挿抜フロー.vsd b/docs/ゲームカード/活線挿抜フロー.vsd deleted file mode 100644 index 0eec9418..00000000 Binary files a/docs/ゲームカード/活線挿抜フロー.vsd and /dev/null differ diff --git a/docs/スケジュール_TWLSystemMenu.mpp b/docs/スケジュール_TWLSystemMenu.mpp deleted file mode 100644 index 0d88b8bb..00000000 Binary files a/docs/スケジュール_TWLSystemMenu.mpp and /dev/null differ diff --git a/docs/スケジュール_TWLSystemMenu_080414.pdf b/docs/スケジュール_TWLSystemMenu_080414.pdf deleted file mode 100644 index ac190f25..00000000 Binary files a/docs/スケジュール_TWLSystemMenu_080414.pdf and /dev/null differ diff --git a/docs/デãƒãƒƒã‚°/TWLデãƒãƒƒã‚°ç”¨ã‚½ãƒ•ト.mmap b/docs/デãƒãƒƒã‚°/TWLデãƒãƒƒã‚°ç”¨ã‚½ãƒ•ト.mmap deleted file mode 100644 index 8e987380..00000000 Binary files a/docs/デãƒãƒƒã‚°/TWLデãƒãƒƒã‚°ç”¨ã‚½ãƒ•ト.mmap and /dev/null differ diff --git a/docs/デãƒãƒƒã‚°/システム情報確èª.xls b/docs/デãƒãƒƒã‚°/システム情報確èª.xls deleted file mode 100644 index d818a87c..00000000 Binary files a/docs/デãƒãƒƒã‚°/システム情報確èª.xls and /dev/null differ diff --git a/docs/デãƒãƒƒã‚°/パーミッションãƒã‚§ãƒƒã‚¯è¡¨.xls b/docs/デãƒãƒƒã‚°/パーミッションãƒã‚§ãƒƒã‚¯è¡¨.xls deleted file mode 100644 index 407f9c5f..00000000 Binary files a/docs/デãƒãƒƒã‚°/パーミッションãƒã‚§ãƒƒã‚¯è¡¨.xls and /dev/null differ diff --git a/docs/デãƒãƒƒã‚°/活線挿抜/活線挿抜デãƒãƒƒã‚° テストケース洗ã„出ã—.mmap b/docs/デãƒãƒƒã‚°/活線挿抜/活線挿抜デãƒãƒƒã‚° テストケース洗ã„出ã—.mmap deleted file mode 100644 index c35610f8..00000000 Binary files a/docs/デãƒãƒƒã‚°/活線挿抜/活線挿抜デãƒãƒƒã‚° テストケース洗ã„出ã—.mmap and /dev/null differ diff --git a/docs/デãƒãƒƒã‚°/活線挿抜/活線挿抜デãƒãƒƒã‚° テストケース表.xls b/docs/デãƒãƒƒã‚°/活線挿抜/活線挿抜デãƒãƒƒã‚° テストケース表.xls deleted file mode 100644 index d9ba20a0..00000000 Binary files a/docs/デãƒãƒƒã‚°/活線挿抜/活線挿抜デãƒãƒƒã‚° テストケース表.xls and /dev/null differ diff --git a/docs/フォルダツリー_NAND.vsd b/docs/フォルダツリー_NAND.vsd deleted file mode 100644 index 35431771..00000000 Binary files a/docs/フォルダツリー_NAND.vsd and /dev/null differ diff --git a/docs/フォルダツリー_SDカード.mmap b/docs/フォルダツリー_SDカード.mmap deleted file mode 100644 index b60bd4f4..00000000 Binary files a/docs/フォルダツリー_SDカード.mmap and /dev/null differ diff --git a/docs/フラッシュマップ_NAND.vsd b/docs/フラッシュマップ_NAND.vsd deleted file mode 100644 index 215f21a8..00000000 Binary files a/docs/フラッシュマップ_NAND.vsd and /dev/null differ diff --git a/docs/フラッシュマップ_NOR.xls b/docs/フラッシュマップ_NOR.xls deleted file mode 100644 index f8c21f75..00000000 Binary files a/docs/フラッシュマップ_NOR.xls and /dev/null differ diff --git a/docs/フロー_NANDファーム.vsd b/docs/フロー_NANDファーム.vsd deleted file mode 100644 index 7da5a0e5..00000000 Binary files a/docs/フロー_NANDファーム.vsd and /dev/null differ diff --git a/docs/フロー_アプリ開発.vsd b/docs/フロー_アプリ開発.vsd deleted file mode 100644 index 4fa38fef..00000000 Binary files a/docs/フロー_アプリ開発.vsd and /dev/null differ diff --git a/docs/フロー_ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¢ãƒƒãƒ—デート.vsd b/docs/フロー_ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¢ãƒƒãƒ—デート.vsd deleted file mode 100644 index 53c6c733..00000000 Binary files a/docs/フロー_ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¢ãƒƒãƒ—デート.vsd and /dev/null differ diff --git a/docs/フロー_ランãƒãƒ£ãƒ¼.vsd b/docs/フロー_ランãƒãƒ£ãƒ¼.vsd deleted file mode 100644 index 229d5540..00000000 Binary files a/docs/フロー_ランãƒãƒ£ãƒ¼.vsd and /dev/null differ diff --git a/docs/ブートROM/TWL_BootRomInfo.vsd b/docs/ブートROM/TWL_BootRomInfo.vsd deleted file mode 100644 index 8c88d5fe..00000000 Binary files a/docs/ブートROM/TWL_BootRomInfo.vsd and /dev/null differ diff --git a/docs/ペアレンタルコントロール_EULA/TWL_EULA_specification_20080508.pdf b/docs/ペアレンタルコントロール_EULA/TWL_EULA_specification_20080508.pdf deleted file mode 100644 index c62e6e40..00000000 Binary files a/docs/ペアレンタルコントロール_EULA/TWL_EULA_specification_20080508.pdf and /dev/null differ diff --git a/docs/ペアレンタルコントロール_EULA/TWL_ParentalControl_specification_20080516.pdf b/docs/ペアレンタルコントロール_EULA/TWL_ParentalControl_specification_20080516.pdf deleted file mode 100644 index 44e86034..00000000 Binary files a/docs/ペアレンタルコントロール_EULA/TWL_ParentalControl_specification_20080516.pdf and /dev/null differ diff --git a/docs/ペアレンタルコントロール_EULA/TWL_ParentalControl_specification_byUIG.pdf b/docs/ペアレンタルコントロール_EULA/TWL_ParentalControl_specification_byUIG.pdf deleted file mode 100644 index 3d73f217..00000000 Binary files a/docs/ペアレンタルコントロール_EULA/TWL_ParentalControl_specification_byUIG.pdf and /dev/null differ diff --git a/docs/ボツ/SystemMenu_REDリリース.txt b/docs/ボツ/SystemMenu_REDリリース.txt deleted file mode 100644 index b11ea33c..00000000 --- a/docs/ボツ/SystemMenu_REDリリース.txt +++ /dev/null @@ -1,92 +0,0 @@ -SystemMenu_RED - -Eƒ‰ƒ“ƒ`ƒƒ[ - EƒJ[ƒhƒAƒvƒŠŽæ“¾ ¢ iTWLƒoƒi[‚ւ̑Ήž‚͂܂¾j - ETWLƒJ[ƒh‹N“® › - EƒJ[ƒhŠˆü‘}”²ˆ— ~ - ENTRƒJ[ƒhiNTRƒ‚[ƒhj‹N“® ì‹Æ’† - ENANDƒAƒvƒŠƒŠƒXƒgŽæ“¾ › - ENANDƒAƒvƒŠ‹N“® › - EƒAƒvƒŠƒu[ƒgŽž‚ÌÄ”z’uˆ— › - EISƒfƒoƒbƒK‘Ήž ~ iŽŸƒ^ƒXƒNj - Eƒtƒ@[ƒ€ƒEƒFƒA‚Æ‚µ‚ij‹K“®ì ¢ iŽŸƒ^ƒXƒNj - EƒAƒvƒŠ‹N“®Žž‚ÌWRAM-MAPÝ’è › - EƒAƒvƒŠ‹N“®Žž‚ÌSCFGƒŒƒWƒXƒ^ƒƒbƒN ¢ -@@EƒAƒvƒŠ‹N“®Žž‚ÌSDƒJ[ƒhƒAƒNƒZƒX‰Â”Û ¢@i‚Ƃ肠‚¦‚¸‰ð•ú‚É‚µ‚Ä‚¨‚«AƒZƒLƒ…ƒŠƒeƒB–ʂł̌Ÿ“¢‚ðs‚¤Bj - E–¼EˆÃ†ˆ— ~ - EŒ®ŠÇ— ~ - Eƒƒ‚ƒŠƒ}ƒbƒvFIX › -@@E‹N“®Žž‚Ì–³üƒtƒ@[ƒ€—¬‚µž‚Ý ~ - ENTRƒRƒ“ƒ|[ƒlƒ“ƒgƒpƒbƒ` ~ -E–{‘ÌÝ’è - EÝ’èƒf[ƒ^ƒtƒH[ƒ}ƒbƒgFIX › - EŒ¾Œê‘I‘ð › - ETP•â³ › - E“ú•tEŽžÝ’è › - Eƒ†[ƒU[î•ñ ›@i‰¢B•¶ŽšAŠG•¶Žš‚ȂLjꕔ•¶Žš‚Í“ü—͂ł«‚È‚¢Žd—lj - E‚»‚Ì‘¼Ý’è ~ - ENAND‚ւ̕ۑ¶ › - ENTR‘¤(NVRAM)‚ւ̕ۑ¶ › - -EWiFiÝ’è ~ - EÝ’èƒf[ƒ^ƒtƒH[ƒ}ƒbƒgFIX › - EŽd—lFIX › - -EDSƒ_ƒEƒ“ƒ[ƒhƒvƒŒƒC - EŽd—lFIX › iDSƒ_ƒEƒ“ƒ[ƒhƒvƒŒƒC‚Æ“¯ˆêŽd—lj - EŽÀ‘• ~ -Eƒlƒbƒgƒ[ƒNƒAƒbƒvƒf[ƒg - EŽd—lFIX › - EŽÀ‘• ~ - -EƒAƒvƒŠŠÇ— - ESD‚ɃRƒs[‚·‚éۂ̃tƒ@ƒCƒ‹ƒtƒH[ƒ}ƒbƒg~ - EŽÀ‘• ~ - -ETWLƒoƒi[‘Ήž ~ - EŽd—lFIX ì‹Æ’† - Emakebannerì¬ ~ -ENANDfirm¨ƒ‰ƒ“ƒ`ƒƒ[@ƒpƒ‰ƒ[ƒ^ˆø“n‚µ ~ - EŽd—lFIX › -Eƒ‰ƒ“ƒ`ƒƒ[¨NANDƒAƒvƒŠ@ƒpƒ‰ƒ[ƒ^ˆø“n‚µ ~ - E–{‘ÌÝ’èƒf[ƒ^‚ȂǂÌî•ñ ~ - EDSƒ_ƒEƒ“ƒ[ƒhƒvƒŒƒC‚Ìî•ñ ~ -ENANDƒAƒvƒŠ¨ƒ‰ƒ“ƒ`ƒƒ[@ƒpƒ‰ƒ[ƒ^ˆø“n‚µ ~ - EŽd—lFIX › -@@E“®ìƒoƒŠƒG[ƒVƒ‡ƒ“‚ÌŒŸ“¢ ì‹Æ’† -@@EŠeŽí“®ì‚̃fƒ‚ì¬ ì‹Æ’† -ENAND“àƒI[ƒo[ƒŒƒC•FS › - EŽd—lFIX › - ENAND,SDƒ}ƒEƒ“ƒgî•ñiƒAƒNƒZƒX§ŒÀj › -E‹¤—LƒŠƒ\[ƒXƒAƒNƒZƒX ~ - EŽd—lFIX ~ -Eƒ^ƒCƒgƒ‹ŠO•”ƒŠƒ\[ƒXƒAƒNƒZƒX ~ - EŽd—lFIX ~ - -ENANDƒAƒvƒŠƒCƒ“ƒXƒg[ƒ‹ ›@iTwlSDK‚ÌNMenu‚ðŽg—pj -ENANDƒtƒH[ƒ}ƒbƒg ¢ iTwlSDK‚Ìdemos.TWL/fatfs/formatter‚ðŽg—pj - EŽd—lFIX › - ENAND‚ðŒÅ’è’l‚Ńxƒ^‘‚« ~ -@¦‹N“®‚Å‚«‚È‚¢ƒ‰ƒ“ƒ`ƒƒ[‚ð‘‚¢‚Ä‹N“®‚µ‚È‚­‚È‚Á‚½Žž‚Ì•œ‹Œ‚ÍAGCDƒtƒ@[ƒ€‚̃J[ƒh‹N“®‰Â”\ƒtƒ@[ƒ€‚ð‘‚«’¼‚µ‚ÄA -@@formatter‚ɉü•Ï‚ð‰Á‚¦‚½formatter+NANDƒtƒ@[ƒ€•ƒVƒXƒeƒ€ƒƒjƒ…[ƒCƒ“ƒXƒg[ƒ‰[‚Å‘‚«ž‚ÝB - -Emakerom.TWL‘Ήž - Eƒtƒ@[ƒ€—pƒrƒ‹ƒhiPKI‚ð•sŽg—pAAESˆÃ†”͈͕ÏXj‚ɑΉž ~ - ETWLƒJ[ƒh‚̃m[ƒ}ƒ‹—̈æ‚ðƒ}ƒjƒ…ƒAƒ‹Ý’è‚Å‚«‚邿‚¤‚ÉB ~ - EROMƒwƒbƒ_–¼PKIŽd—l‚Ìíœ ~ - -EISƒfƒoƒbƒK‘Ήž - ENANDƒAƒvƒŠƒfƒoƒbƒO‘Ήž ~@iŒ»óƒJ[ƒhƒAƒvƒŠ‚Æ‚µ‚ăfƒoƒbƒOj - EŽd—lFIX ¢ iTwlNmenu‚ðŽg‚Á‚½NTR‚ÌDSƒ_ƒEƒ“ƒ[ƒhƒvƒŒƒCŽq‹@ƒvƒƒOƒ‰ƒ€ƒfƒoƒbƒO‚ÆŽ—‚½Žd‘g‚Ýj - Eƒoƒi[Šm”F‹@”\ ~ - EŽd—lFIX ~ - -Eƒ}ƒXƒ^ƒŠƒ“ƒOˆ— ~ - ECLSƒT[ƒo\’zHH ~ - EROMƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹ ~ - -E¶ŽYH’ö‚ðl—¶‚µ‚½Žd—l ~ - EŒŸ¸—pƒJ[ƒh‚̉ŠúÝ’èƒXƒLƒbƒv‹N“® ~ - EƒVƒ‡[ƒgƒJƒbƒgƒL[‚É‚æ‚鉊úÝ’èƒXƒLƒbƒv‹N“® ~ - E¶ŽYH’ö‚Å‘‚«ž‚Ü‚ê‚éƒvƒŠFIXƒf[ƒ^Žd—l ~ - diff --git a/docs/ボツ/言語コード処ç†.xls b/docs/ボツ/言語コード処ç†.xls deleted file mode 100644 index fe015443..00000000 Binary files a/docs/ボツ/言語コード処ç†.xls and /dev/null differ diff --git a/docs/マスタリングツール/TWLマスタリングツール解説書.doc b/docs/マスタリングツール/TWLマスタリングツール解説書.doc deleted file mode 100644 index d237d2b7..00000000 Binary files a/docs/マスタリングツール/TWLマスタリングツール解説書.doc and /dev/null differ diff --git a/docs/マスタリングツール/コンペアツール/デãƒãƒƒã‚°é …ç›®.xls b/docs/マスタリングツール/コンペアツール/デãƒãƒƒã‚°é …ç›®.xls deleted file mode 100644 index ca33e4c4..00000000 Binary files a/docs/マスタリングツール/コンペアツール/デãƒãƒƒã‚°é …ç›®.xls and /dev/null differ diff --git a/docs/マスタリングツール/コンペアツール/リリースノート_コンペアツール.txt b/docs/マスタリングツール/コンペアツール/リリースノート_コンペアツール.txt deleted file mode 100644 index ec362ec2..00000000 --- a/docs/マスタリングツール/コンペアツール/リリースノート_コンペアツール.txt +++ /dev/null @@ -1,14 +0,0 @@ -======================================================================= -TWL ƒRƒ“ƒyƒAƒc[ƒ‹ •ÏX—š—ð -======================================================================= - -* ------------------------------------------------ -* 20081120”Å [9297-2669-148] -* ------------------------------------------------ - -›Šù’m‚Ì–â‘è - -E[BUG01] - ƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚Ì[BUG03]‚Æ“¯—l‚Ì–â‘è‚Å‚·B - Œ»ÝAŒ´ˆö’²¸’†‚Å‚·B - diff --git a/docs/マスタリングツール/コンペアツール/外部仕様.xls b/docs/マスタリングツール/コンペアツール/外部仕様.xls deleted file mode 100644 index 776a8ad1..00000000 Binary files a/docs/マスタリングツール/コンペアツール/外部仕様.xls and /dev/null differ diff --git a/docs/マスタリングツール/デãƒãƒƒã‚°é …ç›®.xls b/docs/マスタリングツール/デãƒãƒƒã‚°é …ç›®.xls deleted file mode 100644 index b0d95260..00000000 Binary files a/docs/マスタリングツール/デãƒãƒƒã‚°é …ç›®.xls and /dev/null differ diff --git a/docs/マスタリングツール/ビルド方法.txt b/docs/マスタリングツール/ビルド方法.txt deleted file mode 100644 index ad5f86df..00000000 --- a/docs/マスタリングツール/ビルド方法.txt +++ /dev/null @@ -1,87 +0,0 @@ -* --------------------------------------------------- -* -* TWL ƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹ 쬕û–@ -* -* --------------------------------------------------- - -* --------------------------------------------------- -* Žè‡ -* --------------------------------------------------- - -ƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚ÍATWL‚É‚¨‚¯‚éˆÃ†‚̔閧Œ®‚ð“à•”‚ÉŽ‚ƒc[ƒ‹‚Å‚·B -‚»‚Ì‚½‚ßA‚±‚̃c[ƒ‹‚ª—¬o‚·‚邯TWL‚̈Æ‚ª”j‚ç‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·B -(Ž©ì‚̃Q[ƒ€ƒ\ƒtƒg‚âˆá–@‚ȃQ[ƒ€ƒ\ƒtƒg‚ð—ÊŽY‹@‚Å‹N“®‚Å‚«‚Ä‚µ‚Ü‚¢‚Ü‚·B) - -‚»‚Ì‘Îô‚Æ‚µ‚ÄAƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚ÌŽÀsƒoƒCƒiƒŠ(.exe)Ž©‘̂ɈÆ‚ð‚©‚¯A -“ÁŽê‚ÈUSBƒL[‚ðPC‚É‘}‚³‚È‚¢‚ÆA•œ†‚Å‚«‚È‚¢Žd‘g‚݂𓱓ü‚µ‚Ä‚¢‚Ü‚·B -‚±‚Ì‘Îô‚É‚æ‚Á‚ÄAƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚ÌŽÀsƒoƒCƒiƒŠ‚ª—¬o‚µ‚Ä‚àA -”é–§Œ®‚ª˜R‚ê‚邱‚Ƃ͂Ȃ¢‚¤‚¦AUSBƒL[‚ðŽ‚½‚È‚¢ƒ†[ƒU‚ÍŽÀs‚Å‚«‚Ü‚¹‚ñB - -ã‹L‚Ì‘Îô‚ðŽÀŒ»‚·‚邽‚ß‚ÉAƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚Ì쬕û–@‚ÍA -ˆÈ‰º‚Ì2ƒXƒeƒbƒv‚É•ª‚©‚ê‚Ü‚·B - - (Step1.) ƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚̃Rƒ“ƒpƒCƒ‹ - (Step2.) ŽÀsƒoƒCƒiƒŠ‚̈Ɖ» - -[—pŒê‚Ì’è‹`] -EƒGƒ“ƒxƒ[ƒv: Step2.‚ÌŽÀsƒoƒCƒiƒŠ‚̈Ɖ»ˆ— -Eƒhƒ“ƒOƒ‹: ƒc[ƒ‹ŽÀs‚Ì‚½‚߂ɕK—v‚È“ÁŽê‚ÈUSBƒL[ - -* --------------------------------------------------- -* (Step1.) ƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚̃Rƒ“ƒpƒCƒ‹ -* --------------------------------------------------- - -‚±‚̃Xƒeƒbƒv‚Å‚ÍAƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚̃\[ƒX‚ðƒRƒ“ƒpƒCƒ‹‚µ‚Ü‚·B - -(’ˆÓ!) -‚±‚Ìì‹Æ‚¾‚¯‚Å‚ÍAƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚ÌŽÀsƒoƒCƒiƒŠ‚͈Ɖ»‚³‚ê‚È‚¢‚½‚ßA -ƒc[ƒ‹‚ª—¬o‚·‚邯A’N‚Å‚àƒ}ƒXƒ^ƒŠƒ“ƒO‚ª‰Â”\‚ɂȂÁ‚Ä‚µ‚Ü‚¢‚Ü‚·B - -(1) €”õ - ˆÈ‰º‚̃pƒbƒP[ƒW‚ª•K—v‚Å‚·B - - › TWLIPL_private - ƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚̃\[ƒX‚ðŠÜ‚ÞƒpƒbƒP[ƒWB - ”é–§Œ®‚̶ƒf[ƒ^‚ðŠÜ‚Þ‚½‚ßA—¬o‚³‚¹‚È‚¢ŠÇ—‚ª•K—v‚Å‚·B - ‚»‚Ì‚½‚ßAUSBƒƒ‚ƒŠ“à‚ÉƒŠƒ|ƒWƒgƒŠ‚ƃcƒŠ[‚ª’u‚©‚êA - ‚»‚ÌUSBƒƒ‚ƒŠ‚ÍŽw–ä”F؃Lƒƒƒrƒlƒbƒg‚ÅŠÇ—‚³‚ê‚Ä‚¢‚Ü‚·B - ‚µ‚½‚ª‚Á‚ÄA‚±‚̃pƒbƒP[ƒW‚ð“üŽè‚·‚é‚É‚ÍA - Žw–ä”F؃Lƒƒƒrƒlƒbƒg‚Ö‚ÌŽw–ä‚Ì“o˜^‚ª•K—v‚Å‚·B - - › TwlSDK - ‚¢‚­‚‚©‚̃‰ƒCƒuƒ‰ƒŠ‚ðŽg—p‚µ‚Ä‚¢‚Ü‚·B - - › TwlIPL - ‚¢‚­‚‚©‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚ðŽg—p‚µ‚Ä‚¢‚Ü‚·B - - ƒrƒ‹ƒh‘O‚ÉAˆÈ‰º‚̊‹«•Ï”‚ÉŠeƒcƒŠ[‚̃‹[ƒg‚ðŽw’肵‚Ä‚¨‚­•K—v‚ª‚ ‚è‚Ü‚·B - -- TWLSDK_ROOT - -- TWL_IPL_RED_ROOT - -- TWL_IPL_RED_PRIVATE_ROOT - -(2) •û–@ - make ‚µ‚Ä‚­‚¾‚³‚¢B - -(3) ƒrƒ‹ƒhƒXƒCƒbƒ` - mastering.h ‚É‚ÍAŠeŽí‚̃rƒ‹ƒhƒXƒCƒbƒ`‚ªéŒ¾‚³‚ê‚Ä‚¢‚Ü‚·‚Ì‚ÅA - “K‹XA•ÏX‚µ‚Ä‚­‚¾‚³‚¢B - - -* --------------------------------------------------- -* (Step2.) ŽÀsƒoƒCƒiƒŠ‚̈Ɖ»(ƒGƒ“ƒxƒ[ƒv) -* --------------------------------------------------- - -(1) €”õ - ˆÈ‰º‚Ì‹@Þ‚ª•K—v‚Å‚·B - - › ƒGƒ“ƒxƒ[ƒv—pUSBƒL[ - ŽÀs—p‚ÌUSBƒL[‚Ƃ͈قȂè‚Ü‚·Bƒ\ƒtƒgG‚Ì‘ºã–L‚³‚ñ‚ªŠ—L‚µ‚Ä‚¢‚Ü‚·B - - › ƒGƒ“ƒxƒ[ƒvƒ\ƒtƒg - PCƒ\ƒtƒg‚Å‚·Bƒ\ƒtƒgG‚ªŠ—L‚µ‚Ä‚¢‚Ü‚·B - -(2) •û–@ - Œ»ÝAƒGƒ“ƒxƒ[ƒv‚ª‰Â”\‚Ȃ̂ÍAƒ\ƒtƒgG‚Ì‘ºã–L‚³‚ñ‚݂̂ł·B - ‘ºã–L‚³‚ñ‚É‚¨–â‚¢‡‚킹‚­‚¾‚³‚¢B - -ˆÈã diff --git a/docs/マスタリングツール/リリースノート_マスタリングツール.txt b/docs/マスタリングツール/リリースノート_マスタリングツール.txt deleted file mode 100644 index 89ab1d69..00000000 --- a/docs/マスタリングツール/リリースノート_マスタリングツール.txt +++ /dev/null @@ -1,80 +0,0 @@ -======================================================================= -TWL ƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹ •ÏX—š—ð -======================================================================= - -* ------------------------------------------------ -* 20081120”Å [9297-2669-148] -* ------------------------------------------------ - -› –â‘è‚ÌC³ - -E[BUG01]‚ÌC³ - USBƒL[ƒhƒ‰ƒCƒo‚ÌI—¹ˆ—‚ð’ljÁ‚µ‚Ü‚µ‚½B - -E[BUG02]‚ÌC³ - USBƒL[ƒhƒ‰ƒCƒo‚ÌI—¹ˆ—‚ð’ljÁ‚µ‚Ü‚µ‚½B - ã‘‚«Šm”F‚Å"n"‚ð‘I‘ð‚µ‚Ä‚àA–â‘è‚ ‚è‚Ü‚¹‚ñB - -E[BUG04]‚ÌC³ - ƒQ[ƒ€ƒR[ƒh‚ª"NTRJ"‚Å‚ ‚éNANDƒAƒvƒŠ‚ÌꇂłàA - -tƒIƒvƒVƒ‡ƒ“‚ðŽw’è‚Å‚«‚邿‚¤‚É‚µ‚Ü‚µ‚½B - (’Êí‚ÍA"NTRJ"‚ƂȂéƒAƒvƒŠ‚̓}ƒXƒ^ƒŠƒ“ƒO‘Îۂł͂ ‚è‚Ü‚¹‚ñB) - -E[BUG05]‚ÌC³ - ƒQ[ƒ€ƒR[ƒh‚ª"NTRJ"‚Å‚ ‚éƒJ[ƒhƒAƒvƒŠ‚ÌꇂɂÍA - -gƒIƒvƒVƒ‡ƒ“‚ðŽw’è‚Å‚«‚È‚¢‚悤‚É‚µ‚Ü‚µ‚½B(ƒGƒ‰[‚ƂȂè‚Ü‚·B) - -› Šù’m‚Ì–â‘è - -E[BUG03]‚ªC³‚³‚ê‚Ä‚¢‚Ü‚¹‚ñB - - -* ------------------------------------------------ -* 20081010”Å [8666-2532-144] -* ------------------------------------------------ - -›Šù’m‚Ì–â‘è - -E[BUG01] - “ü—̓tƒ@ƒCƒ‹‚Æo—̓tƒ@ƒCƒ‹‚É“¯‚¶–¼‘O‚ðݒ肵‚½‚Æ‚«‚ɃGƒ‰[‚ƂȂè‚Ü‚·‚ªA - ‚±‚̂Ƃ«AUSBƒL[ƒhƒ‰ƒCƒo‚ÌI—¹ˆ—‚ð‚µ‚Ü‚¹‚ñB - USBƒL[‚̃hƒ‰ƒCƒo‚Ì“®ì‚ɉe‹¿‚ð—^‚¦‚é‰Â”\«‚ª‚ ‚邽‚ßA - “ü—̓tƒ@ƒCƒ‹‚Æo—̓tƒ@ƒCƒ‹‚É“¯‚¶–¼‘O‚ðݒ肵‚È‚¢‚Å‚­‚¾‚³‚¢B - ‚±‚Ì–â‘è‚ÍAŽŸ‰ñ‚ÌƒŠƒŠ[ƒX‚ÅC³‚³‚ê‚Ü‚·B - -E[BUG02] - o—̓tƒ@ƒCƒ‹‚ª‚·‚łɑ¶Ý‚·‚邯‚«‚Éã‘‚«Šm”F‚ð‚µA"n"‚ª“ü—Í‚³‚ꂽ‚Æ‚«‚É‚ÍA - ã‘‚«‚ð‚¹‚¸‚ÉI—¹‚µ‚Ü‚·‚ªA‚±‚̂Ƃ«AUSBƒL[ƒhƒ‰ƒCƒo‚ÌI—¹ˆ—‚ð‚µ‚Ü‚¹‚ñB - USBƒL[‚̃hƒ‰ƒCƒo‚Ì“®ì‚ɉe‹¿‚ð—^‚¦‚é‰Â”\«‚ª‚ ‚邽‚ßA - ã‘‚«Šm”F‚ÅA"n"‚ð“ü—Í‚¹‚¸A‚·‚łɑ¶Ý‚·‚éƒtƒ@ƒCƒ‹‚Ì–¼‘O‚ð•ÏX‚µ‚ÄA"y"‚ð‰Ÿ‚µ‚Ä‚­‚¾‚³‚¢B - ‚±‚Ì–â‘è‚ÍAŽŸ‰ñ‚ÌƒŠƒŠ[ƒX‚ÅC³‚³‚ê‚Ü‚·B - -E[BUG03] - ‘½”‚ÌSRL‚ðƒVƒFƒ‹ƒXƒNƒŠƒvƒg‚ŘA‘±‚µ‚ă}ƒXƒ^ƒŠƒ“ƒO‚µ‚½‚Æ‚«‚ÉA - ‚²‚­‚Ü‚ê‚ÉOS‚ªƒtƒŠ[ƒY‚·‚錻ۂª¶‚¶‚邱‚Æ‚ª•ñ‚³‚ê‚Ä‚¢‚Ü‚·B - USBƒL[‚̃hƒ‰ƒCƒo‚ªŒ´ˆö‚Å‚ ‚é‰Â”\«‚àŠÜ‚ß‚ÄAŒ»ÝAŒ´ˆö’²¸’†‚Å‚·B - ƒ}ƒXƒ^ƒŠƒ“ƒOƒc[ƒ‹‚ÌŽg—p‘O‚ÉAPCã‚Ìd—v‚ȃf[ƒ^‚ð•Û‘¶‚µ‚Ä‚¨‚¢‚Ä‚­‚¾‚³‚¢B - -E[BUG04] - TWL‘ΉžƒAƒvƒŠ‚̃Q[ƒ€ƒR[ƒh‚ª"NTRJ"‚Å‚ ‚éSRL‚̃}ƒXƒ^ƒŠƒ“ƒO‚͂ł«‚Ü‚¹‚ñ‚ªA - -tƒIƒvƒVƒ‡ƒ“‚ð‚‚¯‚邱‚Ƃɂæ‚Á‚ÄA‹­§“I‚Ƀ}ƒXƒ^ƒŠƒ“ƒO‰Â”\‚Å‚·B - ‚±‚̂Ƃ«AƒJ[ƒhƒAƒvƒŠ‚Å‚ ‚éꇂɂ͖â‘è‚ ‚è‚Ü‚¹‚ñ‚ªA - NANDƒAƒvƒŠ‚Å‚ ‚éꇂɂÍAƒf[ƒ^‚É–µ‚‚ª¶‚¶A³í‚É“®ì‚µ‚È‚¢‰Â”\«‚ª‚ ‚è‚Ü‚·B - NANDƒAƒvƒŠ‚ŃQ[ƒ€ƒR[ƒh‚ª"NTRJ"‚Å‚ ‚éꇂɂÍA - (-tƒIƒvƒVƒ‡ƒ“‚É‚æ‚é)ƒ}ƒXƒ^ƒŠƒ“ƒO‚ð‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B - ’ÊíAƒQ[ƒ€ƒR[ƒh‚ª"NTRJ"‚Å‚ ‚éSRL‚̓}ƒXƒ^ƒŠƒ“ƒO‘Îۂł͂ ‚è‚Ü‚¹‚ñ‚ªA - ˆê•”‚ÌŒŸØ—pƒvƒƒOƒ‰ƒ€‚âSDKƒfƒ‚ƒvƒƒOƒ‰ƒ€‚ɂ͑¶Ý‚µ‚Ü‚·‚Ì‚ÅA‚²’ˆÓ‚­‚¾‚³‚¢B - ‚±‚Ì–â‘è‚ÍAŽŸ‰ñ‚ÌƒŠƒŠ[ƒX‚ÅC³‚³‚ê‚Ü‚·B - -E[BUG05] - TWL‘ΉžƒAƒvƒŠ‚̃Q[ƒ€ƒR[ƒh‚ª"NTRJ"‚Å‚ ‚éSRL‚̃}ƒXƒ^ƒŠƒ“ƒO‚͂ł«‚Ü‚¹‚ñ‚ªA - -gƒIƒvƒVƒ‡ƒ“‚ð‚‚¯‚邱‚Ƃɂæ‚Á‚ÄA‹­§“I‚ɃQ[ƒ€ƒR[ƒh‚ÆTitleID‚𑼂̕¶Žš—ñ‚É•ÏX‚µ‚ÄA - ƒ}ƒXƒ^ƒŠƒ“ƒO‚ð‚©‚¯‚邱‚Æ‚ª‰Â”\‚Å‚·B - ‚±‚̂Ƃ«ANANDƒAƒvƒŠ‚Å‚ ‚éꇂɂ͖â‘è‚ ‚è‚Ü‚¹‚ñ‚ªA - ƒJ[ƒhƒAƒvƒŠ‚Å‚ ‚éꇂɂÍAƒf[ƒ^‚É–µ‚‚ª¶‚¶A³í‚ɃJ[ƒh‹N“®‚³‚¹‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB - NANDƒAƒvƒŠ‚ŃQ[ƒ€ƒR[ƒh‚ª"NTRJ"‚Å‚ ‚éꇂɂÍA - (-gƒIƒvƒVƒ‡ƒ“‚É‚æ‚é)ƒ}ƒXƒ^ƒŠƒ“ƒO‚ð‚µ‚È‚¢‚Å‚­‚¾‚³‚¢B - ’ÊíAƒ}ƒXƒ^ƒŠƒ“ƒO‚·‚éSRL‚ɂ̓Q[ƒ€ƒR[ƒh‚ª"NTRJ"‚Å‚ ‚é‚à‚̂͑¶Ý‚µ‚Ü‚¹‚ñ‚ªA - ˆê•”‚ÌŒŸØ—pƒvƒƒOƒ‰ƒ€‚âSDKƒfƒ‚ƒvƒƒOƒ‰ƒ€‚ɂ͑¶Ý‚µ‚Ü‚·‚Ì‚ÅA‚²’ˆÓ‚­‚¾‚³‚¢B - ‚±‚Ì–â‘è‚ÍAŽŸ‰ñ‚ÌƒŠƒŠ[ƒX‚ÅC³‚³‚ê‚Ü‚·B - diff --git a/docs/マスタリングツール/仕様概è¦.ppt b/docs/マスタリングツール/仕様概è¦.ppt deleted file mode 100644 index 2c496058..00000000 Binary files a/docs/マスタリングツール/仕様概è¦.ppt and /dev/null differ diff --git a/docs/マスタリングツール/内部仕様.vsd b/docs/マスタリングツール/内部仕様.vsd deleted file mode 100644 index bab0a9df..00000000 Binary files a/docs/マスタリングツール/内部仕様.vsd and /dev/null differ diff --git a/docs/マスタリングツール/外部仕様.xls b/docs/マスタリングツール/外部仕様.xls deleted file mode 100644 index fc170044..00000000 Binary files a/docs/マスタリングツール/外部仕様.xls and /dev/null differ diff --git a/docs/メモリマップ_NANDファーム.vsd b/docs/メモリマップ_NANDファーム.vsd deleted file mode 100644 index 16f17ef2..00000000 Binary files a/docs/メモリマップ_NANDファーム.vsd and /dev/null differ diff --git a/docs/メモリマップ_mb_child.vsd b/docs/メモリマップ_mb_child.vsd deleted file mode 100644 index 22863361..00000000 Binary files a/docs/メモリマップ_mb_child.vsd and /dev/null differ diff --git a/docs/メモリマップ_ランãƒãƒ£ãƒ¼.vsd b/docs/メモリマップ_ランãƒãƒ£ãƒ¼.vsd deleted file mode 100644 index 9262cc4c..00000000 Binary files a/docs/メモリマップ_ランãƒãƒ£ãƒ¼.vsd and /dev/null differ diff --git a/docs/ランãƒãƒ£ãƒ¼ã«ã‚ˆã‚‹ãƒ–ート優先度.xls b/docs/ランãƒãƒ£ãƒ¼ã«ã‚ˆã‚‹ãƒ–ート優先度.xls deleted file mode 100644 index 9016a522..00000000 Binary files a/docs/ランãƒãƒ£ãƒ¼ã«ã‚ˆã‚‹ãƒ–ート優先度.xls and /dev/null differ diff --git a/docs/リリース_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls b/docs/リリース_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls deleted file mode 100644 index 286ff2af..00000000 Binary files a/docs/リリース_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls and /dev/null differ diff --git a/docs/リリース_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_ランãƒãƒ£ãƒ¼ãƒªãƒªãƒ¼ã‚¹ã‚¿ã‚¹ã‚¯.mmap b/docs/リリース_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_ランãƒãƒ£ãƒ¼ãƒªãƒªãƒ¼ã‚¹ã‚¿ã‚¹ã‚¯.mmap deleted file mode 100644 index ec453cb4..00000000 Binary files a/docs/リリース_SDK_5_0_FC_plus2/SDK_5_0_FC_plus2_ランãƒãƒ£ãƒ¼ãƒªãƒªãƒ¼ã‚¹ã‚¿ã‚¹ã‚¯.mmap and /dev/null differ diff --git a/docs/リリース_SDK_5_0_FC_plus3/SDK_5_0_FC_plus3_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls b/docs/リリース_SDK_5_0_FC_plus3/SDK_5_0_FC_plus3_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls deleted file mode 100644 index b8b07226..00000000 Binary files a/docs/リリース_SDK_5_0_FC_plus3/SDK_5_0_FC_plus3_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls and /dev/null differ diff --git a/docs/リリース_SDK_5_0_FC_plus5/TwlSDK 5.0 fc plus5 タスク.mmap b/docs/リリース_SDK_5_0_FC_plus5/TwlSDK 5.0 fc plus5 タスク.mmap deleted file mode 100644 index 3f9b0b05..00000000 Binary files a/docs/リリース_SDK_5_0_FC_plus5/TwlSDK 5.0 fc plus5 タスク.mmap and /dev/null differ diff --git a/docs/リリース_SDK_5_0_RC/SDK_5_0_rc_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls b/docs/リリース_SDK_5_0_RC/SDK_5_0_rc_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls deleted file mode 100644 index 7ca9fab4..00000000 Binary files a/docs/リリース_SDK_5_0_RC/SDK_5_0_rc_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls and /dev/null differ diff --git a/docs/リリース_SDK_5_0_RC/TwlSDK 5.0 rc タスク.mmap b/docs/リリース_SDK_5_0_RC/TwlSDK 5.0 rc タスク.mmap deleted file mode 100644 index c5a4fc58..00000000 Binary files a/docs/リリース_SDK_5_0_RC/TwlSDK 5.0 rc タスク.mmap and /dev/null differ diff --git a/docs/リリース_SDK_5_0_RC/アプリジャンプ実験手順.txt b/docs/リリース_SDK_5_0_RC/アプリジャンプ実験手順.txt deleted file mode 100644 index c3173233..00000000 --- a/docs/リリース_SDK_5_0_RC/アプリジャンプ実験手順.txt +++ /dev/null @@ -1,40 +0,0 @@ - -‚₽‚瀖ڂª‘½‚¢‚悤‚ÉŒ©‚¦‚Ü‚·‚ªAе‚ê‚ê‚Î1•ª‚©‚©‚ç‚È‚¢‚̂ł²ˆÀS‚ðB - - -‚PDAppliCooperation A B C ‚ð‚»‚ê‚¼‚êƒCƒ“ƒ|[ƒg‚·‚é - -‚QDA ‚ð‹N“® - -‚RDSet Parameter ‚Å“K“–‚É•¶Žš‚ðƒZƒbƒg - -‚SDLaunch CooperationB ‚Å B ‚ÖƒWƒƒƒ“ƒv -@@¦ ‚±‚ÌŽžA–ƒ}[ƒN‚̈ʒu‚Æ Set Parameter ‚ɃZƒbƒg‚³‚ê‚Ä‚¢‚é•¶Žš‚ðŠo‚¦‚Ä‚¨‚­ - -‚TDReceived Parameter ‚Éæ‚قǃZƒbƒg‚µ‚½•¶Žš‚ª“ü‚Á‚Ä‚¢‚é‚Ì‚ðŠm”F - -‚UDLaunch Former App ‚Å A ‚ÖƒŠƒ^[ƒ“ - -‚VDA ‚É–ß‚Á‚½‚Æ‚«A‚SD‚ÌŽž“_‚Å‚Ìó‘Ô‚Å•œ‹A‚µ‚Ä‚¢‚é‚Ì‚ðŠm”Fi–‚̈ʒu‚Æ Set Parameter ‚ɃZƒbƒg‚³‚ê‚Ä‚¢‚é•¶Žšj - -‚WDReturn app test ‚Å B ‚ÖƒŠƒ^[ƒ“ - -‚XDReceived Parameter ‚ɉ½‚à–³‚¢‚±‚Æ‚ðŠm”F - -‚P‚ODLaunch Former App ‚Å A ‚ÖƒŠƒ^[ƒ“ - -‚P‚PDA ‚É–ß‚Á‚½‚Æ‚«A‚SD‚ÌŽž“_‚Å‚Ìó‘Ô‚Å•œ‹A‚µ‚Ä‚¢‚é‚Ì‚ðŠm”Fi–‚̈ʒu‚Æ Set Parameter ‚ɃZƒbƒg‚³‚ê‚Ä‚¢‚é•¶Žšj - -‚P‚QDlaunch C test ‚Å C ‚ÖƒWƒƒƒ“ƒv - -‚P‚RDReturn app test ‚Å A ‚ÖƒŠƒ^[ƒ“ - -‚P‚SDA ‚ª‰Šúó‘Ô‚Å‹N“®‚µ‚Ä‚¢‚鎖‚ðŠm”F‚µ‚ÄA Return app test ‚Å C ‚ÖƒŠƒ^[ƒ“ - -‚P‚TDC ‚©‚ç launch C test ‚Å C ‚ÖƒWƒƒƒ“ƒv - -‚P‚UDC ‚©‚ç Return app test ‚Å C ‚ÖƒŠƒ^[ƒ“ - -‚P‚VDA ‚ðŽg‚Á‚Äs‚Á‚½‚RD`‚P‚PD‚̎臂ð C ‚Ås‚¤i‚½‚¾‚µA A ‚Ì–ƒ}[ƒN‚Í C ‚ł̓}[ƒN‚ɂȂÁ‚Ä‚¢‚éj - -ˆÈã \ No newline at end of file diff --git a/docs/リリース_SDK_5_0_ss4/SDK_5_0_ss4_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls b/docs/リリース_SDK_5_0_ss4/SDK_5_0_ss4_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls deleted file mode 100644 index 7ca9fab4..00000000 Binary files a/docs/リリース_SDK_5_0_ss4/SDK_5_0_ss4_ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls and /dev/null differ diff --git a/docs/リリース_SDK_5_0_ss4/TwlSDK 5.0 rc タスク.mmap b/docs/リリース_SDK_5_0_ss4/TwlSDK 5.0 rc タスク.mmap deleted file mode 100644 index 94237a23..00000000 Binary files a/docs/リリース_SDK_5_0_ss4/TwlSDK 5.0 rc タスク.mmap and /dev/null differ diff --git a/docs/リリース_X4ボード対応/X4_TSボードæ­è¼‰ãƒ©ãƒ³ãƒãƒ£ãƒ¼æº–å‚™.mmap b/docs/リリース_X4ボード対応/X4_TSボードæ­è¼‰ãƒ©ãƒ³ãƒãƒ£ãƒ¼æº–å‚™.mmap deleted file mode 100644 index e5708858..00000000 Binary files a/docs/リリース_X4ボード対応/X4_TSボードæ­è¼‰ãƒ©ãƒ³ãƒãƒ£ãƒ¼æº–å‚™.mmap and /dev/null differ diff --git a/docs/リリース_X4ボード対応/X4ボード用ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls b/docs/リリース_X4ボード対応/X4ボード用ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls deleted file mode 100644 index 7d491c23..00000000 Binary files a/docs/リリース_X4ボード対応/X4ボード用ランãƒãƒ£ãƒ¼ãƒã‚§ãƒƒã‚¯è¡¨.xls and /dev/null differ diff --git a/docs/リリース_X4ボード対応/機æåˆ¥REDランãƒãƒ£ãƒ¼æ©Ÿèƒ½.xls b/docs/リリース_X4ボード対応/機æåˆ¥REDランãƒãƒ£ãƒ¼æ©Ÿèƒ½.xls deleted file mode 100644 index 7be4f952..00000000 Binary files a/docs/リリース_X4ボード対応/機æåˆ¥REDランãƒãƒ£ãƒ¼æ©Ÿèƒ½.xls and /dev/null differ diff --git a/docs/å„アプリ×本体動作å¯å¦.vsd b/docs/å„アプリ×本体動作å¯å¦.vsd deleted file mode 100644 index aca59001..00000000 Binary files a/docs/å„アプリ×本体動作å¯å¦.vsd and /dev/null differ diff --git a/docs/æ–°é…信システム/TWLé…信システム開発スケジュール.pdf b/docs/æ–°é…信システム/TWLé…信システム開発スケジュール.pdf deleted file mode 100644 index c9a2f1d2..00000000 Binary files a/docs/æ–°é…信システム/TWLé…信システム開発スケジュール.pdf and /dev/null differ diff --git a/docs/業務フロー.vsd b/docs/業務フロー.vsd deleted file mode 100644 index 47e71dd4..00000000 Binary files a/docs/業務フロー.vsd and /dev/null differ diff --git a/docs/ç„¡ç·š/TWL本体内ä¿å­˜æƒ…報案.xls b/docs/ç„¡ç·š/TWL本体内ä¿å­˜æƒ…報案.xls deleted file mode 100644 index 45d9ba2c..00000000 Binary files a/docs/ç„¡ç·š/TWL本体内ä¿å­˜æƒ…報案.xls and /dev/null differ diff --git a/docs/ç„¡ç·š/WiFiエミュレーションセキュリティ.mmap b/docs/ç„¡ç·š/WiFiエミュレーションセキュリティ.mmap deleted file mode 100644 index e0f4eea6..00000000 Binary files a/docs/ç„¡ç·š/WiFiエミュレーションセキュリティ.mmap and /dev/null differ diff --git a/docs/ç„¡ç·š/firm_format.pdf b/docs/ç„¡ç·š/firm_format.pdf deleted file mode 100644 index 62ecc631..00000000 Binary files a/docs/ç„¡ç·š/firm_format.pdf and /dev/null differ diff --git a/docs/ç„¡ç·š/フロー_ç„¡ç·šåˆæœŸåŒ–.vsd b/docs/ç„¡ç·š/フロー_ç„¡ç·šåˆæœŸåŒ–.vsd deleted file mode 100644 index 6bbc8841..00000000 Binary files a/docs/ç„¡ç·š/フロー_ç„¡ç·šåˆæœŸåŒ–.vsd and /dev/null differ diff --git a/docs/çµ±åˆã‚¢ãƒ—リèªè¨¼ã‚·ãƒ¼ã‚±ãƒ³ã‚¹.vsd b/docs/çµ±åˆã‚¢ãƒ—リèªè¨¼ã‚·ãƒ¼ã‚±ãƒ³ã‚¹.vsd deleted file mode 100644 index 403c3758..00000000 Binary files a/docs/çµ±åˆã‚¢ãƒ—リèªè¨¼ã‚·ãƒ¼ã‚±ãƒ³ã‚¹.vsd and /dev/null differ diff --git a/docs/éµç®¡ç†.xls b/docs/éµç®¡ç†.xls deleted file mode 100644 index e8f78f33..00000000 Binary files a/docs/éµç®¡ç†.xls and /dev/null differ diff --git a/docs/開技ソフトGãŠç›†äºˆå®š.xls b/docs/開技ソフトGãŠç›†äºˆå®š.xls deleted file mode 100644 index 201228f2..00000000 Binary files a/docs/開技ソフトGãŠç›†äºˆå®š.xls and /dev/null differ