From d95ed0b83c1c998c28637dbc4bffd2ffccd580e8 Mon Sep 17 00:00:00 2001 From: Merp Date: Mon, 21 Apr 2014 22:13:27 -0400 Subject: [PATCH 01/24] Update default timing and boost tables with better values and update base map calculator spreadsheet with timing tables. --- Base Map calculator.ods | Bin 15353 -> 22223 bytes MerpMod/BoostHackTables.c | 962 ++++++++++++++++++------------------- MerpMod/TimingHackTables.c | 511 ++++++++++---------- 3 files changed, 740 insertions(+), 733 deletions(-) diff --git a/Base Map calculator.ods b/Base Map calculator.ods index 5e99f29eec38a2a969ee64fb7aa4ae591f9e7fe8..e0992d290a8ae1886dc24241e8c4a118e111e819 100644 GIT binary patch literal 22223 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

I#ohH%T9DrMi`*;B%3C(QGfQT^ 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 diff --git a/MerpMod/BoostHackTables.c b/MerpMod/BoostHackTables.c index 7bae585..f769f2c 100644 --- a/MerpMod/BoostHackTables.c +++ b/MerpMod/BoostHackTables.c @@ -77,22 +77,22 @@ float PGWGCols1i[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGWGRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData1i[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -114,22 +114,22 @@ float PGWGCols2i[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGWGRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData2i[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -151,22 +151,22 @@ float PGWGCols1s[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGWGRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData1s[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -188,22 +188,22 @@ float PGWGCols2s[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGWGRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData2s[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -224,22 +224,22 @@ float PGWGCols1ss[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),alig float PGWGRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData1ss[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -261,22 +261,22 @@ float PGWGCols2ss[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),alig float PGWGRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGWGData2ss[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0, +0,0,0,0,0,0}; ThreeDTable PGWGTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -313,22 +313,22 @@ float PGTBCols1i[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGTBRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData1i[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -337,7 +337,7 @@ ThreeDTable PGTBTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),a .rowHeaderArray = PGTBRows1i, .tableCells = PGTBData1i, .tableType = UInt16Table3D, - .multiplier = 1.0f,//0x3F800000 + .multiplier = 1.0f,//0x3F800000 .01933677 .offset = 0 }; @@ -350,22 +350,22 @@ float PGTBCols2i[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGTBRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData2i[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -387,22 +387,22 @@ float PGTBCols1s[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGTBRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData1s[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -424,22 +424,22 @@ float PGTBCols2s[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float PGTBRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData2s[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -461,22 +461,22 @@ float PGTBCols1ss[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),alig float PGTBRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData1ss[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -498,22 +498,22 @@ float PGTBCols2ss[6] __attribute__ ((section ("RomHole_SpeedDensityTables"),alig float PGTBRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short PGTBData2ss[96] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000, -1000,1000,1000,1000,1000,1000}; +{760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760, +760,760,760,760,760,760}; ThreeDTable PGTBTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 6, @@ -550,22 +550,22 @@ float WGDCInitialCols1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables float WGDCInitialRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData1i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -586,22 +586,22 @@ float WGDCInitialCols2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables float WGDCInitialRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData2i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -623,22 +623,22 @@ float WGDCInitialCols1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables float WGDCInitialRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData1s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -659,22 +659,22 @@ float WGDCInitialCols2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables float WGDCInitialRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData2s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -695,22 +695,22 @@ float WGDCInitialCols1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTable float WGDCInitialRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData1ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -731,22 +731,22 @@ float WGDCInitialCols2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTable float WGDCInitialRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCInitialData2ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCInitialTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -783,22 +783,22 @@ float WGDCMaxCols1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),a float WGDCMaxRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData1i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -819,22 +819,22 @@ float WGDCMaxCols2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),a float WGDCMaxRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData2i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -856,22 +856,22 @@ float WGDCMaxCols1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),a float WGDCMaxRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData1s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -892,22 +892,22 @@ float WGDCMaxCols2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),a float WGDCMaxRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData2s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -928,22 +928,22 @@ float WGDCMaxCols1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"), float WGDCMaxRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData1ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -964,22 +964,22 @@ float WGDCMaxCols2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"), float WGDCMaxRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short WGDCMaxData2ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable WGDCMaxTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1016,22 +1016,22 @@ float TBCols1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligne float TBRows1i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData1i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable1i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1052,22 +1052,22 @@ float TBCols2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligne float TBRows2i[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData2i[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable2i __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1089,22 +1089,22 @@ float TBCols1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligne float TBRows1s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData1s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable1s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1125,22 +1125,22 @@ float TBCols2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligne float TBRows2s[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData2s[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable2s __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1161,22 +1161,22 @@ float TBCols1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float TBRows1ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData1ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable1ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, @@ -1197,22 +1197,22 @@ float TBCols2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),align float TBRows2ss[16] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = {2000,3600,3000,3400,3800,4200,4600,5000,5400,5800,6200,6600,7000,7400,7800,8200}; short TBData2ss[256] __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = -{16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384, -16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384,16384}; +{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; ThreeDTable TargetBoostTable2ss __attribute__ ((section ("RomHole_SpeedDensityTables"),aligned(4))) = { .columnCount = 16, diff --git a/MerpMod/TimingHackTables.c b/MerpMod/TimingHackTables.c index c8fc050..429c367 100644 --- a/MerpMod/TimingHackTables.c +++ b/MerpMod/TimingHackTables.c @@ -84,26 +84,27 @@ float T1i_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T1i_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable1i TIMINGDATA = { .columnCount = 20, @@ -127,26 +128,27 @@ float T2i_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T2i_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable2i TIMINGDATA = { .columnCount = 20, @@ -169,26 +171,26 @@ float KCR1i_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR1i_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable1i TIMINGDATA = { .columnCount = 20, @@ -211,26 +213,26 @@ float KCR2i_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR2i_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable2i TIMINGDATA = { .columnCount = 20, @@ -254,26 +256,27 @@ float T1s_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T1s_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable1s TIMINGDATA = { .columnCount = 20, @@ -297,26 +300,27 @@ float T2s_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T2s_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable2s TIMINGDATA = { .columnCount = 20, @@ -339,26 +343,26 @@ float KCR1s_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR1s_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable1s TIMINGDATA = { .columnCount = 20, @@ -381,26 +385,26 @@ float KCR2s_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR2s_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable2s TIMINGDATA = { .columnCount = 20, @@ -423,26 +427,27 @@ float T1ss_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T1ss_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable1ss TIMINGDATA = { .columnCount = 20, @@ -466,26 +471,27 @@ float T2ss_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char T2ss_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{105, 121, 121, 117, 91, 71, 53, 37, 26, 26, 26, 25, 25, 24, 23, 23, 22, 21, 21, 20, +134, 168, 148, 137, 115, 90, 73, 61, 48, 40, 40, 38, 36, 33, 31, 29, 27, 24, 22, 20, +162, 193, 171, 159, 122, 104, 88, 77, 63, 55, 50, 47, 43, 40, 37, 33, 30, 27, 23, 20, +185, 213, 199, 169, 141, 132, 118, 101, 80, 70, 63, 58, 53, 49, 44, 39, 34, 30, 25, 20, +185, 208, 213, 182, 165, 151, 129, 114, 90, 80, 68, 63, 57, 52, 47, 41, 36, 31, 25, 20, +185, 202, 208, 182, 165, 152, 135, 118, 97, 87, 80, 73, 67, 60, 53, 47, 40, 33, 27, 20, +185, 196, 196, 182, 165, 159, 139, 122, 102, 94, 85, 78, 71, 63, 56, 49, 42, 34, 27, 20, +185, 196, 196, 182, 171, 159, 145, 132, 111, 102, 95, 87, 78, 70, 62, 53, 45, 37, 28, 20, +185, 196, 196, 182, 171, 151, 137, 125, 115, 107, 101, 92, 83, 74, 65, 56, 47, 38, 29, 20, +182, 193, 193, 182, 171, 151, 137, 125, 115, 110, 104, 95, 85, 76, 67, 57, 48, 39, 29, 20, +171, 182, 182, 182, 171, 151, 137, 125, 119, 114, 110, 100, 90, 80, 70, 60, 50, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 125, 122, 119, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 127, 124, 121, 112, 102, 92, 81, 71, 61, 51, 40, 30, 20, +171, 182, 182, 182, 171, 151, 137, 129, 125, 122, 115, 104, 94, 83, 73, 62, 52, 41, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +171, 182, 182, 182, 171, 152, 142, 135, 129, 125, 117, 106, 95, 85, 74, 63, 52, 42, 31, 20, +}; ThreeDTable TimingTable2ss TIMINGDATA = { .columnCount = 20, @@ -509,26 +515,26 @@ float KCR1ss_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR1ss_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable1ss TIMINGDATA = { .columnCount = 20, @@ -551,26 +557,26 @@ float KCR2ss_ROWS[] TIMINGDATA = {2800,3200,3600,4000,4400,4800,5200,5600,6000,6400,6800,7000,7200,7400,7600,7800,8000,8200,8400,8600}; unsigned char KCR2ss_DATA[] TIMINGDATA = -{20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20, -20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20}; +{85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85, +85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85}; ThreeDTable KnockCorrectionRetardTable2ss TIMINGDATA = { .columnCount = 20, @@ -609,18 +615,19 @@ float LCTR_ROWS[] TIMINGDATA = {2800,3000,3600,4000,4400,4800,5200,5600,6000,6400,6800,7200}; unsigned char LCTR_DATA[] TIMINGDATA = -{114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -114, 114, 114, 114, 114, -110, 112, 114, 114, 114, -105, 110, 114, 114, 114, -100, 107, 114, 114, 114, -100, 107, 114, 114, 114, -100, 107, 114, 114, 114, -100, 107, 114, 114, 114}; +{57, 57, 57, 57, 57, +57, 57, 57, 57, 57, +57, 57, 57, 57, 57, +59, 59, 58, 58, 57, +60, 59, 59, 58, 57, +62, 61, 60, 58, 57, +63, 62, 60, 59, 57, +65, 63, 61, 59, 57, +66, 64, 62, 59, 57, +68, 65, 63, 60, 57, +69, 66, 63, 60, 57, +71, 68, 64, 61, 57, +}; ThreeDTable LCTimingRetardTable TIMINGDATA = { .columnCount = 5, From 5112581a08fc2695e839271cb3311e43d1fc296e Mon Sep 17 00:00:00 2001 From: Merp Date: Mon, 21 Apr 2014 22:15:39 -0400 Subject: [PATCH 02/24] Add enable switch to boost hacks and add definition metadata for all hack enable switches. --- MerpMod/BoostHackTables.c | 3 +++ MerpMod/BoostHacks.c | 43 +++++++++++++++++++++++++-------------- MerpMod/Definition.c | 3 +++ MerpMod/Externs.h | 1 + MerpMod/IDATranslation.h | 12 +++++++++++ MerpMod/Initializer.c | 4 ++++ MerpMod/RamVariables.h | 4 ++++ 7 files changed, 55 insertions(+), 15 deletions(-) diff --git a/MerpMod/BoostHackTables.c b/MerpMod/BoostHackTables.c index f769f2c..05d3372 100644 --- a/MerpMod/BoostHackTables.c +++ b/MerpMod/BoostHackTables.c @@ -18,6 +18,9 @@ //Constants ///////////////// #if BOOST_HACKS + +unsigned char DefaultBoostHackEnabled BOOSTDATA = 0x01; + float RPMLockWGDC BOOSTDATA = 3000.0f; float ThrottleLockWGDC BOOSTDATA = 85.0f; diff --git a/MerpMod/BoostHacks.c b/MerpMod/BoostHacks.c index ad9908f..88ef42d 100644 --- a/MerpMod/BoostHacks.c +++ b/MerpMod/BoostHacks.c @@ -78,23 +78,31 @@ EcuHacksMain(); pRamVariables->PGWGComp = PGWGComp; - #if WGDC_LOCK - //Apply locks - if(*pEngineSpeed < RPMLockWGDC && *pThrottlePlate > ThrottleLockWGDC) + if(pRamVariables->BoostHackEnabled == 0) { - pRamVariables->WGDCInitial = 100.0; - pRamVariables->WGDCMax = 100.0; - } - else{ - #endif - - pRamVariables->WGDCInitial = WGDCInitial * PGWGComp; - pRamVariables->WGDCMax = WGDCMax * PGWGComp; + #if WGDC_LOCK + //Apply locks + if(*pEngineSpeed < RPMLockWGDC && *pThrottlePlate > ThrottleLockWGDC) + { + pRamVariables->WGDCInitial = 100.0; + pRamVariables->WGDCMax = 100.0; + } + else{ + #endif - #if WGDC_LOCK + pRamVariables->WGDCInitial = WGDCInitial * PGWGComp; + pRamVariables->WGDCMax = WGDCMax * PGWGComp; + + #if WGDC_LOCK + } + #endif } - #endif - + else + { + pRamVariables->WGDCInitial = Pull3DHooked((void*)OEMWGDCInitialTable, *pReqTorque, *pEngineSpeed); + pRamVariables->WGDCMax = Pull3DHooked((void*)OEMWGDCMaxTable, *pReqTorque, *pEngineSpeed); + } + #endif //Finish Pulling WGDC @@ -153,7 +161,12 @@ void TargetBoostHack() #endif pRamVariables->PGTBComp = PGTBComp; - pRamVariables->TargetBoost = TargetBoost * PGTBComp; + + if(pRamVariables->BoostHackEnabled == 0) + pRamVariables->TargetBoost = TargetBoost * PGTBComp; + else + pRamVariables->TargetBoost = Pull3DHooked((void*)OEMTargetBoostTable, *pReqTorque, *pEngineSpeed); + } #endif diff --git a/MerpMod/Definition.c b/MerpMod/Definition.c index 36bed42..a11f703 100644 --- a/MerpMod/Definition.c +++ b/MerpMod/Definition.c @@ -287,6 +287,7 @@ DEFINERAMVAR("MerpMod Primary Open Loop Fueling Output",PolfOutput,4,"E"); //TODO add ENABLE SWITCHES #if SWITCH_HACKS +DEFNEW1D("Primary Open Loop Fuel Hack Enable",DefaultPolfHackEnabled); DEFNEW3D("Primary Open Loop Fueling Table 1 Intelligent",FuelTable1i); DEFNEW3D("Primary Open Loop Fueling Table 2 Intelligent",FuelTable2i); DEFNEW3D("Primary Open Loop Fueling Table 1 Sport",FuelTable1s); @@ -347,6 +348,7 @@ DEFINERAMVAR("MerpMod CEL Speed Counter",CelFlashSpeedCounter,1,"E"); #if BOOST_HACKS +DEFNEW1D("Boost Hack Enable",DefaultBoostHackEnabled); DEFINERAMVAR("MerpMod PGWG Compensation",PGWGComp,4,"E"); #if SWITCH_HACKS DEFNEW3D("Per Gear Wastegate Table 1 Intelligent",PGWGTable1i); @@ -430,6 +432,7 @@ DEFNEW1D("Default Launch Control Timing Retard Multiplier",DefaultLCTimingRetard DEFNEW3D("Launch Control Timing Retard Table",LCTimingRetardTable); #if SWITCH_HACKS +DEFNEW1D("Timing Hack Enable",DefaultTimingHackEnabled); DEFNEW3D("Base Timing Table 1 Intelligent",TimingTable1i); DEFNEW3D("Base Timing Table 2 Intelligent",TimingTable2i); DEFNEW3D("Base Timing Table 1 Sport",TimingTable1s); diff --git a/MerpMod/Externs.h b/MerpMod/Externs.h index 0b8798f..058a8ab 100644 --- a/MerpMod/Externs.h +++ b/MerpMod/Externs.h @@ -121,6 +121,7 @@ extern unsigned char DefaultLCFuelMode; extern float DefaultLCFuelLock; extern float DefaultLCFuelEnrichMultiplier; +extern unsigned char DefaultBoostHackEnabled; extern TableGroup PGWGTableGroup; extern ThreeDTable PGWGTable1i; extern ThreeDTable PGWGTable2i; diff --git a/MerpMod/IDATranslation.h b/MerpMod/IDATranslation.h index 7414559..84a57a1 100644 --- a/MerpMod/IDATranslation.h +++ b/MerpMod/IDATranslation.h @@ -63,6 +63,18 @@ #define PrimaryOEMTimingTable tBaseTimingPNonCruise #endif +#ifdef tTargetBoost +#define OEMTargetBoostTable tTargetBoost +#endif + +#ifdef tWgdcInitial +#define OEMWGDCInitialTable tWgdcInitial +#endif + +#ifdef tWgdcMax +#define OEMWGDCMaxTable tWgdcMax +#endif + /* OLD STUFF #define pEngineSpeed ((float*)E_ENGINE_SPEED) #define pVehicleSpeed ((float*)E_VEHICLE_SPEED) diff --git a/MerpMod/Initializer.c b/MerpMod/Initializer.c index f0a8101..61e5b07 100644 --- a/MerpMod/Initializer.c +++ b/MerpMod/Initializer.c @@ -130,6 +130,10 @@ pRamVariables->CruiseCoastLast = TestCruiseCoastSwitch(); pRamVariables->LCTimingRetardMultiplier = DefaultLCTimingRetardMultiplier; #endif +#if BOOST_HACKS + pRamVariables->BoostHackEnabled = DefaultBoostHackEnabled; +#endif + #if SD_HACKS pRamVariables->MafMode = DefaultMafMode; #endif diff --git a/MerpMod/RamVariables.h b/MerpMod/RamVariables.h index f35c6b1..4572a42 100644 --- a/MerpMod/RamVariables.h +++ b/MerpMod/RamVariables.h @@ -161,6 +161,10 @@ typedef struct #endif #if BOOST_HACKS + unsigned char BoostHackEnabled; + unsigned char bhempty; + unsigned char bhempty1; + unsigned char bhempty2; //Target Boost Params float TargetBoost; From ff5f5f00450757e446d031bc0b4a25a024a2226a Mon Sep 17 00:00:00 2001 From: Merp Date: Mon, 21 Apr 2014 22:16:35 -0400 Subject: [PATCH 03/24] Add functions for low pass and high pass functions. Switch use of Abs to HighPass where appropriate. --- MerpMod/Externs.h | 2 ++ MerpMod/Functions.c | 16 ++++++++++++++++ MerpMod/RevLimiter.c | 10 +++++----- MerpMod/TimingHacks.c | 8 ++++---- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/MerpMod/Externs.h b/MerpMod/Externs.h index 058a8ab..c110c24 100644 --- a/MerpMod/Externs.h +++ b/MerpMod/Externs.h @@ -70,6 +70,8 @@ void SetClutch(int value) __attribute__ ((section ("Misc"))); void SetBrake(int value) __attribute__ ((section ("Misc"))); float Abs(float input) ROMCODE; +float LowPass(float input, float limit) ROMCODE; +float HighPass(float input, float limit) ROMCODE; void RevLimCode(void) ROMCODE; void RevLimReset(void) ROMCODE; diff --git a/MerpMod/Functions.c b/MerpMod/Functions.c index d006c34..be65a83 100644 --- a/MerpMod/Functions.c +++ b/MerpMod/Functions.c @@ -20,4 +20,20 @@ float Abs(float input) return input; else return input * -1.0f; +} + +float LowPass(float input, float limit) +{ + if(input < limit) + return input; + else + return limit; +} + +float HighPass(float input, float limit) +{ + if(input > limit) + return input; + else + return limit; } \ No newline at end of file diff --git a/MerpMod/RevLimiter.c b/MerpMod/RevLimiter.c index 8f9ec30..41f24f5 100644 --- a/MerpMod/RevLimiter.c +++ b/MerpMod/RevLimiter.c @@ -45,7 +45,7 @@ void RevLimCode() void RevLimReset() { pRamVariables->RevLimCut = pRamVariables->RedLineCut; - pRamVariables->RevLimResume = pRamVariables->RedLineCut - Abs(pRamVariables->RedLineHyst); + pRamVariables->RevLimResume = pRamVariables->RedLineCut - HighPass(pRamVariables->RedLineHyst,0.0f); //Disable FFS if clutch is out or brake is pressed pRamVariables->FFSEngaged = 0; pRamVariables->LCEngaged = 0; @@ -102,7 +102,7 @@ void RevLimCode() pRamVariables->FFSEngaged = 0; pRamVariables->LCEngaged = 1; pRamVariables->RevLimCut = pRamVariables->LaunchControlCut; - pRamVariables->RevLimResume = pRamVariables->LaunchControlCut - Abs(pRamVariables->LaunchControlHyst); + pRamVariables->RevLimResume = pRamVariables->LaunchControlCut - HighPass(pRamVariables->LaunchControlHyst,0.0f); } else RevLimReset(); @@ -119,15 +119,15 @@ void RevLimCode() cut *= 1 / GearRatios[(int)pRamVariables->FFSGear]; cut += pRamVariables->FlatFootShiftAutoDelta; pRamVariables->RevLimCut = cut; - pRamVariables->RevLimResume = pRamVariables->RevLimCut - Abs(pRamVariables->FlatFootShiftHyst); + pRamVariables->RevLimResume = pRamVariables->RevLimCut - HighPass(pRamVariables->FlatFootShiftHyst,0.0f); } else { #endif - float cut = pRamVariables->RedLineCut - Abs(pRamVariables->FlatFootShiftStaticDelta); + float cut = pRamVariables->RedLineCut - HighPass(pRamVariables->FlatFootShiftStaticDelta,0.0f); pRamVariables->RevLimCut = cut; - pRamVariables->RevLimResume = cut - Abs(pRamVariables->FlatFootShiftHyst); + pRamVariables->RevLimResume = cut - HighPass(pRamVariables->FlatFootShiftHyst,0.0f); #ifdef pCurrentGear } diff --git a/MerpMod/TimingHacks.c b/MerpMod/TimingHacks.c index baf1c0d..ec35b1f 100644 --- a/MerpMod/TimingHacks.c +++ b/MerpMod/TimingHacks.c @@ -29,9 +29,9 @@ float TimingHack() float subIam; float iam; - subIam = 1 - IAM; + subIam = HighPass(1 - IAM, 0.0f); - pRamVariables->MaxSubtractiveKCA = BlendAndSwitch(KnockCorrectionRetardTableGroup, *pEngineLoad, *pEngineSpeed); + pRamVariables->MaxSubtractiveKCA = HighPass(BlendAndSwitch(KnockCorrectionRetardTableGroup, *pEngineLoad, *pEngineSpeed),0.0f); pRamVariables->SubtractiveKCA = subIam * pRamVariables->MaxSubtractiveKCA; @@ -56,11 +56,11 @@ float TimingHack() } else if(pRamVariables->LCTimingMode == LCTimingModeCompensated) { - pRamVariables->LCTimingRetard = Pull3DHooked(&LCTimingRetardTable, *pVehicleSpeed, *pEngineSpeed); + pRamVariables->LCTimingRetard = HighPass(Pull3DHooked(&LCTimingRetardTable, *pVehicleSpeed, *pEngineSpeed),0.0f); pRamVariables->LCTimingRetard *= pRamVariables->LCTimingRetardMultiplier; - OutputValue -= pRamVariables->LCTimingRetard; + OutputValue -= HighPass(pRamVariables->LCTimingRetard,0.0f); } pRamVariables->BaseTiming = OutputValue; From 14f45daa3581c1d0037a2cc6e1ddd3c8a4053776 Mon Sep 17 00:00:00 2001 From: Merp Date: Fri, 25 Apr 2014 20:50:12 -0400 Subject: [PATCH 04/24] Update definition metadata API to reflect new changes in SharpTune. Allows communication of ram variable storage type instead of byte length and increases the characters allowed for the parameter id. --- MerpMod/Definition.c | 157 ++++++++++++++++++++++--------------------- 1 file changed, 79 insertions(+), 78 deletions(-) diff --git a/MerpMod/Definition.c b/MerpMod/Definition.c index a11f703..8d909aa 100644 --- a/MerpMod/Definition.c +++ b/MerpMod/Definition.c @@ -41,9 +41,10 @@ typedef struct { long op; long address; - char id[4]; + char id[8]; long buf; - long length; + char storagetype[8]; + long buf2; char name[]; } ParamDef; @@ -51,7 +52,7 @@ typedef struct { long op; long address; - char id[4]; + char id[8]; long buf; long bit; char name[]; @@ -116,36 +117,36 @@ typedef struct { #define DEFIDA2D(NAME,ADDR) const TableDef ADDR##_2DDef DEFDATA = {op: OpTable2d , address: (int)ADDR , name: NAME } #define DEFIDA3D(NAME,ADDR) const TableDef ADDR##_3DDef DEFDATA = {op: OpTable3d , address: (int)ADDR , name: NAME } -#define DEFINERAM(NAME,ADDR,LENGTH,EID) const ParamDef ADDR##_ParamDef DEFDATA = {op: OpRAM , address: (int)ADDR , id: EID , buf: OpEnd , length: 0x##LENGTH , name: NAME } +#define DEFINERAM(NAME,ADDR,TYPE,EID) const ParamDef ADDR##_ParamDef DEFDATA = {op: OpRAM , address: (int)ADDR , id: EID , buf: OpEnd , storagetype: TYPE , buf2: OpEnd, name: NAME } #define DEFINERAMBIT(NAME,ADDR,BIT,EID) const ParamBitDef ADDR##_ParamBitDef DEFDATA = {op: OpRAMBit , address: (int)ADDR , id: EID , buf: OpEnd , bit: BIT , name: NAME } -#define DEFINERAMVAR(NAME,ADDR,LENGTH,EID) const ParamDef ADDR##_ParamDef DEFDATA = {op: OpRAM , address: (int)&pRamVariables->ADDR , id: EID , buf: OpEnd , length: 0x##LENGTH , name: NAME }//TRY TO FIX THIS?? -#define DEFINERAMVARARRAY(NAME,ADDR,INDEX,LENGTH,EID) const ParamDef ADDR##INDEX##_ParamDef DEFDATA = {op: OpRAM , address: (int)&pRamVariables->ADDR[INDEX] , id: EID , buf: OpEnd , length: 0x##LENGTH , name: NAME }//TRY TO FIX THIS?? -#define DEFINERAMVARARRAYALLBITS(NAME,ADDR,INDEX,LENGTH,EID) const ParamDef ADDR##INDEX##_ParamDef DEFDATA = {op: OpRAMAllBits , address: (int)&pRamVariables->ADDR[INDEX] , id: EID , buf: OpEnd , length: 0x##LENGTH , name: NAME }//TRY TO FIX THIS?? +#define DEFINERAMVAR(NAME,ADDR,TYPE,EID) const ParamDef ADDR##_ParamDef DEFDATA = {op: OpRAM , address: (int)&pRamVariables->ADDR , id: EID , buf: OpEnd , storagetype: TYPE , buf2: OpEnd, name: NAME }//TRY TO FIX THIS?? +#define DEFINERAMVARARRAY(NAME,ADDR,INDEX,TYPE,EID) const ParamDef ADDR##INDEX##_ParamDef DEFDATA = {op: OpRAM , address: (int)&pRamVariables->ADDR[INDEX] , id: EID , buf: OpEnd , storagetype: TYPE , buf2: OpEnd name: NAME }//TRY TO FIX THIS?? +#define DEFINERAMVARARRAYALLBITS(NAME,ADDR,INDEX,TYPE,EID) const ParamDef ADDR##INDEX##_ParamDef DEFDATA = {op: OpRAMAllBits , address: (int)&pRamVariables->ADDR[INDEX] , id: EID , buf: OpEnd , storagetype: TYPE , buf2: OpEnd, name: NAME }//TRY TO FIX THIS?? //TODO: in sharptune, if no match is found, create a new one to read out RAWDATA! #if PORT_LOGGER -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger A",PortParameters,0,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger B",PortParameters,1,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger C",PortParameters,2,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger D",PortParameters,3,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger E",PortParameters,4,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger F",PortParameters,5,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger G",PortParameters,6,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger H",PortParameters,7,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger J",PortParameters,8,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger K",PortParameters,9,2,"E"); -DEFINERAMVARARRAYALLBITS("MerpMod Port Logger L",PortParameters,10,2,"E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger A",PortParameters,0,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger B",PortParameters,1,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger C",PortParameters,2,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger D",PortParameters,3,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger E",PortParameters,4,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger F",PortParameters,5,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger G",PortParameters,6,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger H",PortParameters,7,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger J",PortParameters,8,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger K",PortParameters,9,"uint16","E"); +DEFINERAMVARARRAYALLBITS("MerpMod Port Logger L",PortParameters,10,"uint16","E"); #endif #if PROG_MODE -DEFINERAMVAR("MerpMod Prog Mode Entry",ProgModeEntry,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Wait",ProgModeWait,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Timer",ProgModeTimer,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Enable",ProgModeEnable,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Current Mode",ProgModeCurrentMode,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Selected Value Flash",ProgModeValueFlashes,1,"E"); -DEFINERAMVAR("MerpMod Prog Mode Value",ProgModeValue,4,"E"); +DEFINERAMVAR("MerpMod Prog Mode Entry",ProgModeEntry,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Wait",ProgModeWait,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Timer",ProgModeTimer,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Enable",ProgModeEnable,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Current Mode",ProgModeCurrentMode,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Selected Value Flash",ProgModeValueFlashes,"uint8","E"); +DEFINERAMVAR("MerpMod Prog Mode Value",ProgModeValue,"float","E"); #endif DEFIDA1D("ECU Identifier",dEcuId); @@ -179,23 +180,23 @@ DEFINERAMBIT("MerpMod Brake Switch",pBrakeFlags, BrakeBitMask,"E"); //VIN stuff #if VIN_HACKS && VIN_TEST_LOG -DEFINERAMVAR("MerpMod Vehicle Identifier",VehicleIdent,14,"E"); -DEFINERAMVAR("MerpMod Auth Pass/Fail",VinAuth,1,"E"); +DEFINERAMVAR("MerpMod Vehicle Identifier",VehicleIdent,"uint28","E"); +DEFINERAMVAR("MerpMod Auth Pass/Fail",VinAuth,"uint8","E"); #endif #if SPARK_CUT -DEFINERAM("Default LC Spark Events Cut From",DefaultLCSparkEventsCutFrom,1,"E"); -DEFINERAMVAR("LC Spark Events Cut From",SparkEventsX,1,"E"); +DEFINERAM("Default LC Spark Events Cut From",DefaultLCSparkEventsCutFrom,"uint8","E"); +DEFINERAMVAR("LC Spark Events Cut From",SparkEventsX,"uint8","E"); #endif #if SD_HACKS -DEFINERAMVAR("MerpMod SD Mode Switch",MafMode,1,"E"); -DEFINERAMVAR("MerpMod SD Volumetric Efficiency",VolumetricEfficiency,4,"E"); -DEFINERAMVAR("MerpMod SD Airflow Final Output",MafFromSpeedDensity,4,"E"); -DEFINERAMVAR("MerpMod SD Airflow Maf Sensor",MafFromSensor,4,"E"); -DEFINERAMVAR("MerpMod SD Atmospheric Compensation",AtmosphericCompensation,4,"E"); -DEFINERAMVAR("MerpMod SD Blending Ratio",SDMafBlendRatio,4,"E"); -DEFINERAMVAR("MerpMod SD Airflow Blending",SDMafFromBlend,4,"E"); +DEFINERAMVAR("MerpMod SD Mode Switch",MafMode,"uint8","E"); +DEFINERAMVAR("MerpMod SD Volumetric Efficiency",VolumetricEfficiency,"float","E"); +DEFINERAMVAR("MerpMod SD Airflow Final Output",MafFromSpeedDensity,"float","E"); +DEFINERAMVAR("MerpMod SD Airflow Maf Sensor",MafFromSensor,"float","E"); +DEFINERAMVAR("MerpMod SD Atmospheric Compensation",AtmosphericCompensation,"float","E"); +DEFINERAMVAR("MerpMod SD Blending Ratio",SDMafBlendRatio,"float","E"); +DEFINERAMVAR("MerpMod SD Airflow Blending",SDMafFromBlend,"float","E"); DEFNEW3D("Volumetric Efficiency Table 1",VolumetricEfficiencyTable1); #if SWITCH_HACKS @@ -204,8 +205,8 @@ DEFNEW3D("Volumetric Efficiency Table 2",VolumetricEfficiencyTable2); #if SD_DMAP DEFINE3D("Delta MAP Compensation",SDDeltaMapTable); -DEFINERAM("MerpMod Delta MAP",pDeltaMap,4,"E"); -DEFINERAMVAR("MerpMod Delta MAP Compensation Direct",DeltaMapCompensation,4,"E"); +DEFINERAM("MerpMod Delta MAP",pDeltaMap,"float","E"); +DEFINERAMVAR("MerpMod Delta MAP Compensation Direct",DeltaMapCompensation,"float","E"); #endif DEFNEW3D("Atmospheric Pressure Compensation",AtmosphericCompensationTable); @@ -216,7 +217,7 @@ DEFNEW1D("Speed Density Constant",SpeedDensityConstant); #if VE_RAMTUNING DEFINERAMVAR3D("Volumetric Efficiencty Ram Table",VERamCols); //TODO this won't work yet! -DEFINERAMVAR("VERamFlag",VERamFlag,1,"E"); +DEFINERAMVAR("VERamFlag",VERamFlag,"uint8","E"); #endif #endif @@ -239,21 +240,21 @@ DEFNEW1D("FFS Gear Ratios",GearRatios); DEFNEW1D("Rev Limit (Launch Control)",DefaultLaunchControlCut); //PARAMS -DEFINERAMVAR("MerpMod FFS Mode",FlatFootShiftMode,1,"E");//TODO add to def base -DEFINERAMVAR("MerpMod LC Engaged Signal",LCEngaged,1,"E"); -DEFINERAMVAR("MerpMod FFS Engaged Signal",FFSEngaged,1,"E"); -DEFINERAMVAR("MerpMod FFS Gear Monitor",FFSGear,1,"E"); -DEFINERAMVAR("MerpMod RevLimit Active Cut RPM",RevLimCut,4,"E"); -DEFINERAMVAR("MerpMod RevLimit Active Resume RPM",RevLimResume,4,"E"); -DEFINERAMVAR("MerpMod RedLine Cut RPM",RedLineCut,4,"E"); -DEFINERAMVAR("MerpMod RedLine Hysteresis",RedLineHyst,4,"E"); -DEFINERAMVAR("MerpMod Launch Control RPM",LaunchControlCut,4,"E"); -DEFINERAMVAR("MerpMod Launch Control Hysteresis",LaunchControlHyst,4,"E"); -DEFINERAMVAR("MerpMod FFS Delta (Auto)",FlatFootShiftAutoDelta,4,"E"); -DEFINERAMVAR("MerpMod FFS Delta (Static)",FlatFootShiftStaticDelta,4,"E"); -DEFINERAMVAR("MerpMod FFS Engagement RPM",FFSRPM,4,"E"); -DEFINERAMVAR("MerpMod FFS Speed Threshold",FlatFootShiftSpeedThreshold,4,"E"); -DEFINERAMVAR("MerpMod LC Speed Threshold",LaunchControlSpeedMax,4,"E"); +DEFINERAMVAR("MerpMod FFS Mode",FlatFootShiftMode,"uint8","E");//TODO add to def base +DEFINERAMVAR("MerpMod LC Engaged Signal",LCEngaged,"uint8","E"); +DEFINERAMVAR("MerpMod FFS Engaged Signal",FFSEngaged,"uint8","E"); +DEFINERAMVAR("MerpMod FFS Gear Monitor",FFSGear,"uint8","E"); +DEFINERAMVAR("MerpMod RevLimit Active Cut RPM",RevLimCut,"float","E"); +DEFINERAMVAR("MerpMod RevLimit Active Resume RPM",RevLimResume,"float","E"); +DEFINERAMVAR("MerpMod RedLine Cut RPM",RedLineCut,"float","E"); +DEFINERAMVAR("MerpMod RedLine Hysteresis",RedLineHyst,"float","E"); +DEFINERAMVAR("MerpMod Launch Control RPM",LaunchControlCut,"float","E"); +DEFINERAMVAR("MerpMod Launch Control Hysteresis",LaunchControlHyst,"float","E"); +DEFINERAMVAR("MerpMod FFS Delta (Auto)",FlatFootShiftAutoDelta,"float","E"); +DEFINERAMVAR("MerpMod FFS Delta (Static)",FlatFootShiftStaticDelta,"float","E"); +DEFINERAMVAR("MerpMod FFS Engagement RPM",FFSRPM,"float","E"); +DEFINERAMVAR("MerpMod FFS Speed Threshold",FlatFootShiftSpeedThreshold,"float","E"); +DEFINERAMVAR("MerpMod LC Speed Threshold",LaunchControlSpeedMax,"float","E"); #endif #if LC_ADJUST @@ -261,29 +262,29 @@ DEFNEW1D("Launch Control Adjustment Step",LCAdjustStep); #endif #if SWITCH_HACKS -DEFINERAMVAR("MerpMod Master Init Flag",MasterInitFlag,1,"E"); +DEFINERAMVAR("MerpMod Master Init Flag",MasterInitFlag,"uint8","E"); -DEFINERAMVAR("MerpMod TGV Volts Left",TGVLeftVolts,4,"E"); -DEFINERAMVAR("MerpMod TGV Volts Right",TGVRightVolts,4,"E"); +DEFINERAMVAR("MerpMod TGV Volts Left",TGVLeftVolts,"float","E"); +DEFINERAMVAR("MerpMod TGV Volts Right",TGVRightVolts,"float","E"); DEFNEW1D("Map Switch Input Threshold Low",MapSwitchThresholdLo); DEFNEW1D("Map Switch Input Threshold High",MapSwitchThresholdHi); DEFNEW1D("Map Switch Input Mode",MapSwitchInput); DEFNEW1D("Map Blending Input Mode",BlendRatioInput); -DEFINERAMVAR("MerpMod Map Blending Ratio Direct",MapBlendRatio,4,"E"); -DEFINERAMVAR("MerpMod TGV Left Scaled",TGVLeftScaled,4,"E"); -DEFINERAMVAR("MerpMod TGV Right Scaled",TGVRightScaled,4,"E"); +DEFINERAMVAR("MerpMod Map Blending Ratio Direct",MapBlendRatio,"float","E"); +DEFINERAMVAR("MerpMod TGV Left Scaled",TGVLeftScaled,"float","E"); +DEFINERAMVAR("MerpMod TGV Right Scaled",TGVRightScaled,"float","E"); DEFNEW1D("Default Map Blending Ratio",DefaultMapBlendRatio); DEFNEW1D("Default Map Switch",DefaultMapSwitch); #endif #if POLF_HACKS -DEFINERAMVAR("MerpMod LC Fueling Lock Enrichment",LCFuelLock,4,"E"); -DEFINERAMVAR("MerpMod LC Fueling Mode",LCFuelMode,4,"E"); -DEFINERAMVAR("MerpMod LC Fueling Enrichment",LCFuelEnrich,4,"E"); -DEFINERAMVAR("MerpMod LC Fueling Enrichment Multiplier",LCFuelEnrichMultiplier,4,"E"); -DEFINERAMVAR("MerpMod Primary Open Loop Fueling Output",PolfOutput,4,"E"); +DEFINERAMVAR("MerpMod LC Fueling Lock Enrichment",LCFuelLock,"float","E"); +DEFINERAMVAR("MerpMod LC Fueling Mode",LCFuelMode,"float","E"); +DEFINERAMVAR("MerpMod LC Fueling Enrichment",LCFuelEnrich,"float","E"); +DEFINERAMVAR("MerpMod LC Fueling Enrichment Multiplier",LCFuelEnrichMultiplier,"float","E"); +DEFINERAMVAR("MerpMod Primary Open Loop Fueling Output",PolfOutput,"float","E"); //TODO add ENABLE SWITCHES #if SWITCH_HACKS @@ -339,17 +340,17 @@ DEFNEW1D("ECT Flash Temperature Threshold",ECTFlashThreshold); DEFNEW1D("IAM Recall Flash Speed",IAMFlashSpeed); #endif -DEFINERAMVAR("MerpMod CEL Signal",CelSignal,1,"E"); -DEFINERAM("MerpMod CEL Signal OEM",pCelSignalOem,1,"E"); -DEFINERAMVAR("MerpMod CEL Flash Counter",CelFlashCounter,1,"E"); -DEFINERAMVAR("MerpMod CEL Speed Counter",CelFlashSpeedCounter,1,"E"); +DEFINERAMVAR("MerpMod CEL Signal",CelSignal,"uint8","E"); +DEFINERAM("MerpMod CEL Signal OEM",pCelSignalOem,"uint8","E"); +DEFINERAMVAR("MerpMod CEL Flash Counter",CelFlashCounter,"uint8","E"); +DEFINERAMVAR("MerpMod CEL Speed Counter",CelFlashSpeedCounter,"uint8","E"); #endif #if BOOST_HACKS DEFNEW1D("Boost Hack Enable",DefaultBoostHackEnabled); -DEFINERAMVAR("MerpMod PGWG Compensation",PGWGComp,4,"E"); +DEFINERAMVAR("MerpMod PGWG Compensation",PGWGComp,"float","E"); #if SWITCH_HACKS DEFNEW3D("Per Gear Wastegate Table 1 Intelligent",PGWGTable1i); DEFNEW3D("Per Gear Wastegate Table 2 Intelligent",PGWGTable2i); @@ -361,7 +362,7 @@ DEFNEW3D("Per Gear Wastegate Table 2 Sport Sharp",PGWGTable2ss); DEFNEW3D("Per Gear Wastegate Table 1",PGWGTable1i); DEFNEW3D("Per Gear Wastegate Table 2",PGWGTable2i); #endif -DEFINERAMVAR("MerpMod PGTB Compensation",PGTBComp,4,"E"); +DEFINERAMVAR("MerpMod PGTB Compensation",PGTBComp,"float","E"); #if SWITCH_HACKS DEFNEW3D("Per Gear Target Boost Table 1 Intelligent",PGTBTable1i); DEFNEW3D("Per Gear Target Boost Table 2 Intelligent",PGTBTable2i); @@ -387,7 +388,7 @@ DEFNEW3D("Max Wastegate Duty Multiplier Table 1",WGDCMaxTable1i); DEFNEW3D("Max Wastegate Duty Multiplier Table 2",WGDCMaxTable2i); #endif -DEFINERAMVAR("MerpMod Initial WGDC Per Gear",WGDCInitial,4,"E"); +DEFINERAMVAR("MerpMod Initial WGDC Per Gear",WGDCInitial,"float","E"); #if SWITCH_HACKS DEFNEW3D("Initial Wastegate Duty Multiplier Table 1 Intelligent",WGDCInitialTable1i); DEFNEW3D("Initial Wastegate Duty Multiplier Table 2 Intelligent",WGDCInitialTable2i); @@ -400,7 +401,7 @@ DEFNEW3D("Initial Wastegate Duty Multiplier Table 1",WGDCInitialTable1i); DEFNEW3D("Initial Wastegate Duty Multiplier Table 2",WGDCInitialTable2i); #endif -DEFINERAMVAR("MerpMod Target Boost Output",TargetBoost,4,"E"); +DEFINERAMVAR("MerpMod Target Boost Output",TargetBoost,"float","E"); #if SWITCH_HACKS DEFNEW3D("Target Boost Multiplier Table 1 Intelligent",TargetBoostTable1i); DEFNEW3D("Target Boost Multiplier Table 2 Intelligent",TargetBoostTable2i); @@ -420,11 +421,11 @@ DEFNEW1D("WGDC Lock Minimum Throttle",ThrottleLockWGDC); #endif #if TIMING_HACKS -DEFINERAMVAR("MerpMod LC Timing Mode",LCTimingMode,1,"E"); -DEFINERAMVAR("MerpMod LC Timing Lock Value",LCTimingLock,4,"E"); -DEFINERAMVAR("MerpMod LC Timing Retard",LCTimingRetard,4,"E"); -DEFINERAMVAR("MerpMod LC Timing Retard Multiplier",LCTimingRetardMultiplier,4,"E"); -DEFINERAMVAR("MerpMod Base Timing Final Output",TimingHackOutput,4,"E"); +DEFINERAMVAR("MerpMod LC Timing Mode",LCTimingMode,"uint8","E"); +DEFINERAMVAR("MerpMod LC Timing Lock Value",LCTimingLock,"float","E"); +DEFINERAMVAR("MerpMod LC Timing Retard",LCTimingRetard,"float","E"); +DEFINERAMVAR("MerpMod LC Timing Retard Multiplier",LCTimingRetardMultiplier,"float","E"); +DEFINERAMVAR("MerpMod Base Timing Final Output",TimingHackOutput,"float","E"); DEFNEW1D("Launch Control Timing Mode",DefaultLCTimingMode); DEFNEW1D("Launch Control Timing Lock",DefaultLCTimingLock); From 8b5d462a93ca95cfabb5571234dd9a485b8eae94 Mon Sep 17 00:00:00 2001 From: Merp Date: Fri, 25 Apr 2014 20:50:44 -0400 Subject: [PATCH 05/24] Add readme for programming mode. --- README_PROG_MODE.md | 90 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 README_PROG_MODE.md diff --git a/README_PROG_MODE.md b/README_PROG_MODE.md new file mode 100644 index 0000000..a30367c --- /dev/null +++ b/README_PROG_MODE.md @@ -0,0 +1,90 @@ +MerpMod Programming Mode +======================== + +Entering and Exiting +-------------------- + +Initial Requirements: ++Engine off ++Clutch out ++Brake out ++Gas out ++Defog Switch off + +1. Press the brake pedal. +2. Fully press and depress the gas pedal three times. + +The CEL should now be flashing. + +To exit programming mode, press the clutch in. + +Readout, Selection, and Adjustment +---------------------------------- + +Programming mode uses the CEL light to read out the current menu item and the current value of the selected menu item. + +The current menu item is indicated by the count of SLOW flashes. + +The current value is indicated by the count of FAST flashes. + +To select the next menu item, press the cruise control resume button. + +To select the previous menu item, press the cruise control resume button. + +To increase the value associated with the current menu item, press and depress the gas pedal. + +To decrease the value associated with the current menu item, press and depress the brake pedal. + +Menu Items +---------- + +1. Map Switch (Intelligent / Sport / Sport Sharp) +2. Map Blending (Map 1 / Map 2) +3. Launch Control Adjust +4. IAM Adjust +5. Valet Mode + +1. Map Switch +---------- + +The currently selected map is displayed using the following values: +Intelligent: 1 flash +Sport: 2 flashes +Sport Sharp: 3 flashes + +2. Map Blending +------------ + +The current map blending ratio is displayed using a value of 1-11 where: +1 flash = 1.0 (Map 1) +2 flashes = 1.1 (Blending) +3 flashes = 1.2 (Blending) +... (Blending) +11 flashes = 2.0 (Map 2) + +3. Launch Control Adjust +--------------------- + +The current launch control RPM is displayed in ranges of 1000 RPM where: +1 flash = 1000-2000 RPM +2 flashes = 2000-3000 RPM +3 flashes = 3000-4000 RPM +... + +4. AM Adjust +---------- + +The current IAM value is displayed in increments of 0.1 where: +1 flash = 0.0 IAM +2 flashes = 0.1 IAM +... +11 flashes = 1.0 IAM + +5. Valet Mode +---------- + +The current valet mode is displayed as: + +0 flashes = OFF +1 flash = ON + From cf6de6f6420320e9e19efbb4c914b327784e5b7c Mon Sep 17 00:00:00 2001 From: Merp Date: Sun, 27 Apr 2014 18:15:37 -0400 Subject: [PATCH 06/24] Fix timing, fuel, and boost hack enable switch comparison literals. --- MerpMod/BoostHacks.c | 4 ++-- MerpMod/FuelHacks.c | 2 +- MerpMod/TimingHacks.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/MerpMod/BoostHacks.c b/MerpMod/BoostHacks.c index 88ef42d..f4893cd 100644 --- a/MerpMod/BoostHacks.c +++ b/MerpMod/BoostHacks.c @@ -78,7 +78,7 @@ EcuHacksMain(); pRamVariables->PGWGComp = PGWGComp; - if(pRamVariables->BoostHackEnabled == 0) + if(pRamVariables->BoostHackEnabled == 0x01) { #if WGDC_LOCK //Apply locks @@ -162,7 +162,7 @@ void TargetBoostHack() pRamVariables->PGTBComp = PGTBComp; - if(pRamVariables->BoostHackEnabled == 0) + if(pRamVariables->BoostHackEnabled == 0x01) pRamVariables->TargetBoost = TargetBoost * PGTBComp; else pRamVariables->TargetBoost = Pull3DHooked((void*)OEMTargetBoostTable, *pReqTorque, *pEngineSpeed); diff --git a/MerpMod/FuelHacks.c b/MerpMod/FuelHacks.c index d328075..8769f2b 100644 --- a/MerpMod/FuelHacks.c +++ b/MerpMod/FuelHacks.c @@ -51,7 +51,7 @@ EcuHacksMain(); pRamVariables->PolfTarget = OutputValue; - if(pRamVariables->PolfHackEnabled == 0) + if(pRamVariables->PolfHackEnabled == 0x01)//TODO: ENUM pRamVariables->PolfOutput = pRamVariables->PolfTarget; else pRamVariables->PolfOutput = Pull3DHooked((void*)PrimaryOEMPolfTable, *pEngineLoad, *pEngineSpeed); diff --git a/MerpMod/TimingHacks.c b/MerpMod/TimingHacks.c index ec35b1f..47111f3 100644 --- a/MerpMod/TimingHacks.c +++ b/MerpMod/TimingHacks.c @@ -65,7 +65,7 @@ float TimingHack() pRamVariables->BaseTiming = OutputValue; - if(pRamVariables->TimingHackEnabled == 0) + if(pRamVariables->TimingHackEnabled == 0x01) pRamVariables->TimingHackOutput = pRamVariables->BaseTiming - Abs(pRamVariables->SubtractiveKCA); else pRamVariables->TimingHackOutput = Pull3DHooked((void*)PrimaryOEMTimingTable, *pEngineLoad, *pEngineSpeed); From 75efbef93a0e53b4f125377855ae9d5d94af3197 Mon Sep 17 00:00:00 2001 From: Merp Date: Sun, 27 Apr 2014 18:15:59 -0400 Subject: [PATCH 07/24] Update map blending ratio definition and add map switch definition. --- MerpMod/Definition.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MerpMod/Definition.c b/MerpMod/Definition.c index 8d909aa..3713272 100644 --- a/MerpMod/Definition.c +++ b/MerpMod/Definition.c @@ -271,7 +271,8 @@ DEFNEW1D("Map Switch Input Threshold Low",MapSwitchThresholdLo); DEFNEW1D("Map Switch Input Threshold High",MapSwitchThresholdHi); DEFNEW1D("Map Switch Input Mode",MapSwitchInput); DEFNEW1D("Map Blending Input Mode",BlendRatioInput); -DEFINERAMVAR("MerpMod Map Blending Ratio Direct",MapBlendRatio,"float","E"); +DEFINERAMVAR("MerpMod Map Switch",MapSwitch,"uint8","E"); +DEFINERAMVAR("MerpMod Map Blending Ratio",MapBlendRatio,"float","E"); DEFINERAMVAR("MerpMod TGV Left Scaled",TGVLeftScaled,"float","E"); DEFINERAMVAR("MerpMod TGV Right Scaled",TGVRightScaled,"float","E"); From fe6a7000160d08452f7caea7feae9df238b7171c Mon Sep 17 00:00:00 2001 From: Merp Date: Tue, 6 May 2014 12:07:14 -0400 Subject: [PATCH 08/24] Updates to map switching code. Renamed some tables, added missing definition tables, added inejctor scalar hack, and added hack calls to main routine for monitoring. --- MerpMod/Definition.c | 57 +++++++++++++++++++++++----------------- MerpMod/EcuHacks.c | 14 ++++++++++ MerpMod/Externs.h | 1 + MerpMod/FuelHackTables.c | 19 ++++++++++++++ MerpMod/FuelHacks.c | 14 ++++++++++ MerpMod/IDATranslation.h | 5 +++- MerpMod/RamVariables.h | 9 ++----- MerpMod/Switch.h | 4 +-- 8 files changed, 89 insertions(+), 34 deletions(-) diff --git a/MerpMod/Definition.c b/MerpMod/Definition.c index 3713272..11e5c51 100644 --- a/MerpMod/Definition.c +++ b/MerpMod/Definition.c @@ -267,6 +267,9 @@ DEFINERAMVAR("MerpMod Master Init Flag",MasterInitFlag,"uint8","E"); DEFINERAMVAR("MerpMod TGV Volts Left",TGVLeftVolts,"float","E"); DEFINERAMVAR("MerpMod TGV Volts Right",TGVRightVolts,"float","E"); +DEFNEW2D("TGV Left Input Scaling",TGVLeftScaling); +DEFNEW2D("TGV Right Input Scaling",TGVRightScaling); + DEFNEW1D("Map Switch Input Threshold Low",MapSwitchThresholdLo); DEFNEW1D("Map Switch Input Threshold High",MapSwitchThresholdHi); DEFNEW1D("Map Switch Input Mode",MapSwitchInput); @@ -278,6 +281,12 @@ DEFINERAMVAR("MerpMod TGV Right Scaled",TGVRightScaled,"float","E"); DEFNEW1D("Default Map Blending Ratio",DefaultMapBlendRatio); DEFNEW1D("Default Map Switch",DefaultMapSwitch); + +#if INJECTOR_HACKS +DEFNEW2D("Map Blending Injector Scaling",InjectorScalingTable); +DEFINERAMVAR("MerpMod Injector Scaling",InjectorScaling,"float","E"); +#endif + #endif #if POLF_HACKS @@ -378,41 +387,41 @@ DEFNEW3D("Per Gear Target Boost Table 2",PGTBTable2i); DEFINERAMVAR("MerpMod Max WGDC Per Gear",WGDCMax,4,"E"); #if SWITCH_HACKS -DEFNEW3D("Max Wastegate Duty Multiplier Table 1 Intelligent",WGDCMaxTable1i); -DEFNEW3D("Max Wastegate Duty Multiplier Table 2 Intelligent",WGDCMaxTable2i); -DEFNEW3D("Max Wastegate Duty Multiplier Table 1 Sport",WGDCMaxTable1s); -DEFNEW3D("Max Wastegate Duty Multiplier Table 2 Sport",WGDCMaxTable2s); -DEFNEW3D("Max Wastegate Duty Multiplier Table 1 Sport Sharp",WGDCMaxTable1ss); -DEFNEW3D("Max Wastegate Duty Multiplier Table 2 Sport Sharp",WGDCMaxTable2ss); +DEFNEW3D("Max Wastegate Duty Compensation Table 1 Intelligent",WGDCMaxTable1i); +DEFNEW3D("Max Wastegate Duty Compensation Table 2 Intelligent",WGDCMaxTable2i); +DEFNEW3D("Max Wastegate Duty Compensation Table 1 Sport",WGDCMaxTable1s); +DEFNEW3D("Max Wastegate Duty Compensation Table 2 Sport",WGDCMaxTable2s); +DEFNEW3D("Max Wastegate Duty Compensation Table 1 Sport Sharp",WGDCMaxTable1ss); +DEFNEW3D("Max Wastegate Duty Compensation Table 2 Sport Sharp",WGDCMaxTable2ss); #else -DEFNEW3D("Max Wastegate Duty Multiplier Table 1",WGDCMaxTable1i); -DEFNEW3D("Max Wastegate Duty Multiplier Table 2",WGDCMaxTable2i); +DEFNEW3D("Max Wastegate Duty Compensation Table 1",WGDCMaxTable1i); +DEFNEW3D("Max Wastegate Duty Compensation Table 2",WGDCMaxTable2i); #endif DEFINERAMVAR("MerpMod Initial WGDC Per Gear",WGDCInitial,"float","E"); #if SWITCH_HACKS -DEFNEW3D("Initial Wastegate Duty Multiplier Table 1 Intelligent",WGDCInitialTable1i); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 2 Intelligent",WGDCInitialTable2i); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 1 Sport",WGDCInitialTable1s); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 2 Sport",WGDCInitialTable2s); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 1 Sport Sharp",WGDCInitialTable1ss); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 2 Sport Sharp",WGDCInitialTable2ss); +DEFNEW3D("Initial Wastegate Duty Compensation Table 1 Intelligent",WGDCInitialTable1i); +DEFNEW3D("Initial Wastegate Duty Compensation Table 2 Intelligent",WGDCInitialTable2i); +DEFNEW3D("Initial Wastegate Duty Compensation Table 1 Sport",WGDCInitialTable1s); +DEFNEW3D("Initial Wastegate Duty Compensation Table 2 Sport",WGDCInitialTable2s); +DEFNEW3D("Initial Wastegate Duty Compensation Table 1 Sport Sharp",WGDCInitialTable1ss); +DEFNEW3D("Initial Wastegate Duty Compensation Table 2 Sport Sharp",WGDCInitialTable2ss); #else -DEFNEW3D("Initial Wastegate Duty Multiplier Table 1",WGDCInitialTable1i); -DEFNEW3D("Initial Wastegate Duty Multiplier Table 2",WGDCInitialTable2i); +DEFNEW3D("Initial Wastegate Duty Compensation Table 1",WGDCInitialTable1i); +DEFNEW3D("Initial Wastegate Duty Compensation Table 2",WGDCInitialTable2i); #endif DEFINERAMVAR("MerpMod Target Boost Output",TargetBoost,"float","E"); #if SWITCH_HACKS -DEFNEW3D("Target Boost Multiplier Table 1 Intelligent",TargetBoostTable1i); -DEFNEW3D("Target Boost Multiplier Table 2 Intelligent",TargetBoostTable2i); -DEFNEW3D("Target Boost Multiplier Table 1 Sport",TargetBoostTable1s); -DEFNEW3D("Target Boost Multiplier Table 2 Sport",TargetBoostTable2s); -DEFNEW3D("Target Boost Multiplier Table 1 Sport Sharp",TargetBoostTable1ss); -DEFNEW3D("Target Boost Multiplier Table 2 Sport Sharp",TargetBoostTable2ss); +DEFNEW3D("Target Boost Compensation Table 1 Intelligent",TargetBoostTable1i); +DEFNEW3D("Target Boost Compensation Table 2 Intelligent",TargetBoostTable2i); +DEFNEW3D("Target Boost Compensation Table 1 Sport",TargetBoostTable1s); +DEFNEW3D("Target Boost Compensation Table 2 Sport",TargetBoostTable2s); +DEFNEW3D("Target Boost Compensation Table 1 Sport Sharp",TargetBoostTable1ss); +DEFNEW3D("Target Boost Compensation Table 2 Sport Sharp",TargetBoostTable2ss); #else -DEFNEW3D("Target Boost Multiplier Table 1",TargetBoostTable1); -DEFNEW3D("Target Boost Multiplier Table 2",TargetBoostTable2); +DEFNEW3D("Target Boost Compensation Table 1",TargetBoostTable1); +DEFNEW3D("Target Boost Compensation Table 2",TargetBoostTable2); #endif #if WGDC_LOCK diff --git a/MerpMod/EcuHacks.c b/MerpMod/EcuHacks.c index 936e506..8a7facb 100644 --- a/MerpMod/EcuHacks.c +++ b/MerpMod/EcuHacks.c @@ -70,6 +70,20 @@ void EcuHacksMain() //Constant Hz main routine, hooked into wgdc lookup PortLogger(); #endif +#if SWITCH_HACKS + InputUpdate(); +#endif + +#if TIMING_HACKS + TimingHack(); +#endif + +#if POLF_HACKS && !POLF_MAIN_HOOK + POLFHack(); +#else + WGDCHack(); +#endif + } void (*RevLimDeleteHooked)() __attribute__ ((section ("RomHole_Functions"))) = (void(*)()) sRevLimEnd; diff --git a/MerpMod/Externs.h b/MerpMod/Externs.h index c110c24..e17c066 100644 --- a/MerpMod/Externs.h +++ b/MerpMod/Externs.h @@ -109,6 +109,7 @@ extern ThreeDTable TemperatureCompensationTable; extern ThreeDTable AtmosphericCompensationTable; extern ThreeDTable SDBlendingTable; +extern TwoDTable InjectorScalingTable; extern unsigned char DefaultPolfHackEnabled; extern TableGroup FuelTableGroup; diff --git a/MerpMod/FuelHackTables.c b/MerpMod/FuelHackTables.c index ce57dea..2b60357 100644 --- a/MerpMod/FuelHackTables.c +++ b/MerpMod/FuelHackTables.c @@ -14,6 +14,25 @@ #include "EcuHacks.h" +#if SWITCH_HACKS && INJECTOR_HACKS + +float INJECTOR_SCALING_ROWS[11] FUELDATA = +{0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0}; + +short INJECTOR_SCALING_DATA[11] FUELDATA = +{20000,20100,20200,20300,20400,20500,20600,20700,20800,20900,21000};//TODO: document the native units here + +TwoDTable InjectorScalingTable FUELDATA = { + .columnCount = 11, + .tableType = UInt16Table2D, + .columnHeaderArray = INJECTOR_SCALING_ROWS, + .tableCells = INJECTOR_SCALING_DATA, + .multiplier = 0.824f, //todo unit test these + .offset = 0.0 }; +//! 27000/32767 (0-27000.00 range, 16bit precision) + +#endif + #if POLF_HACKS unsigned char DefaultPolfHackEnabled FUELDATA = 0x01; diff --git a/MerpMod/FuelHacks.c b/MerpMod/FuelHacks.c index 8769f2b..7e57fae 100644 --- a/MerpMod/FuelHacks.c +++ b/MerpMod/FuelHacks.c @@ -14,6 +14,20 @@ #include "EcuHacks.h" +#if SWITCH_HACKS && INJECTOR_HACKS + +void InjectorHack(){ + +float OutputValue; + +OutputValue = Pull2DHooked(&InjectorScalingTable,pRamVariables->MapBlendRatio); + +pRamVariables->InjectorScaling = OutputValue; + +} + +#endif + #if POLF_HOOK_DEFINED void (*PolfHooked)() __attribute__ ((section ("RomHole_Functions"))) = (void(*)()) sPolf; diff --git a/MerpMod/IDATranslation.h b/MerpMod/IDATranslation.h index 84a57a1..730f801 100644 --- a/MerpMod/IDATranslation.h +++ b/MerpMod/IDATranslation.h @@ -51,6 +51,10 @@ #define SI_DRIVE #endif +#ifdef dInjectorScaling +#define InjectorScalingOem ((float*)dInjectorScaling) +#endif + #ifdef tPolf #define PrimaryOEMPolfTable tPolf #elif defined(tPolfKcaAlt) //TODO FIX THIS FOR NEWER CARS!!!!! @@ -139,6 +143,5 @@ #define pCelSignalOem ((char*)CEL_TRIGGER_BYTE) //#define pCruiseSignalOem ((char*)0x1234)// -#define InjectorScalingOem ((float*)dInjectorScaling) #define pFlagsRevLimit ((char*)pFlagsRevLimit) */ \ No newline at end of file diff --git a/MerpMod/RamVariables.h b/MerpMod/RamVariables.h index 4572a42..3dee8c6 100644 --- a/MerpMod/RamVariables.h +++ b/MerpMod/RamVariables.h @@ -26,14 +26,9 @@ typedef struct unsigned char VehicleIdent[20]; #endif +#if INJECTOR_HACKS float InjectorScaling; - float Mfempty; - float Mfempty1; - float Mfempty2; -// float Mfempty3; -// float Mfempty4; -// float Mfempty5; -// float Mfempty6; +#endif #if SPARK_CUT unsigned char SparkEventsX; diff --git a/MerpMod/Switch.h b/MerpMod/Switch.h index 34b3e45..32a4c87 100644 --- a/MerpMod/Switch.h +++ b/MerpMod/Switch.h @@ -32,7 +32,7 @@ #define TIMING_HACKS 1 // #define POLF_HACKS 1 // #define PGWG_HACKS 1 // -#define INJECTOR_HACKS 0 // +#define INJECTOR_HACKS 1 // // ////////////////////////////// @@ -40,7 +40,7 @@ // RAMTUNING FLAGS // ////////////////////////////// // -#define RAM_PERSIST 1 // +#define RAM_PERSIST 0 // #define VE_RAMTUNING 0 // #define POLF_RAMTUNING 0 // #define TIMING_RAMTUNING 0 // From bc58186277fed1c426336b50781b1df9ba8c4982 Mon Sep 17 00:00:00 2001 From: Merp Date: Tue, 6 May 2014 12:08:35 -0400 Subject: [PATCH 09/24] Updates to programming mode: fixed typo in readme, updated programming mode count define. --- MerpMod/ProgMode.c | 16 ++++++++-------- README_PROG_MODE.md | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/MerpMod/ProgMode.c b/MerpMod/ProgMode.c index 90a10fb..b766aab 100644 --- a/MerpMod/ProgMode.c +++ b/MerpMod/ProgMode.c @@ -55,13 +55,13 @@ */ -#define PROG_MODE_COUNT 4 +#define PROG_MODE_COUNT 5 #define PROG_THROTTLE_HI 80.0f #define PROG_THROTTLE_LO 10.0f #define VALUE_FLASH_SPEED 2 #define VALUE_FLASH_DELAY 32 -#define MODE_FLASH_SPEED 4 +#define MODE_FLASH_SPEED 6 #define MODE_FLASH_DELAY 16 #define BLEND_MAX 1.0f @@ -256,19 +256,19 @@ void ProgModeBlendAdjust() { if((*pThrottlePlate > PROG_THROTTLE_HI) && pRamVariables->ProgModeWait == 0) { - if(pRamVariables->MapBlendRatio > (BLEND_MAX - BLEND_STEP - 0.01f)) + if(pRamVariables->MapBlendRatio > (BLEND_MAX - BLEND_STEP - BLEND_STEP)) pRamVariables->MapBlendRatio = BLEND_MAX; else - pRamVariables->MapBlendRatio+= BLEND_STEP; + pRamVariables->MapBlendRatio += BLEND_STEP; pRamVariables->ProgModeWait = BLEND_WAIT; } else if(TestBrakeSwitch() && pRamVariables->ProgModeWait ==0) { - if(pRamVariables->MapBlendRatio < (BLEND_MIN + BLEND_STEP + 0.01f)) + if(pRamVariables->MapBlendRatio < (BLEND_MIN + BLEND_STEP + BLEND_STEP)) pRamVariables->MapBlendRatio = BLEND_MIN;//Hard limit, does not cycle to top again. else - pRamVariables->MapBlendRatio-= BLEND_STEP; + pRamVariables->MapBlendRatio -= BLEND_STEP; pRamVariables->ProgModeWait = BLEND_WAIT; } else @@ -284,7 +284,7 @@ void ProgModeBlendAdjust() void ProgModeLCAdjust() { #if !AUTO_TRANS - if((*pThrottlePlate > 50) && pRamVariables->ProgModeWait == 0) + if((*pThrottlePlate > PROG_THROTTLE_HI) && pRamVariables->ProgModeWait == 0) { pRamVariables->LaunchControlCut++; if(pRamVariables->LaunchControlCut < pRamVariables->RedLineCut) @@ -337,7 +337,7 @@ void ProgModeIAMAdjust() pRamVariables->ProgModeWait--; } pRamVariables->ProgModeValue = *pIAM; - pRamVariables->ProgModeValueFlashes = (10*(1-IAM))+1; + pRamVariables->ProgModeValueFlashes = (10*(IAM))+1; } void ProgModeValetMode() diff --git a/README_PROG_MODE.md b/README_PROG_MODE.md index a30367c..9d3abda 100644 --- a/README_PROG_MODE.md +++ b/README_PROG_MODE.md @@ -71,7 +71,7 @@ The current launch control RPM is displayed in ranges of 1000 RPM where: 3 flashes = 3000-4000 RPM ... -4. AM Adjust +4. iAM Adjust ---------- The current IAM value is displayed in increments of 0.1 where: From b8fbf9564fba0d25c5ce815ef785642ce2922a31 Mon Sep 17 00:00:00 2001 From: Merp Date: Tue, 6 May 2014 12:09:49 -0400 Subject: [PATCH 10/24] Add conditionals for targets without brake switch or cruise controls. --- MerpMod/Definition.c | 4 ++++ MerpMod/SwitchChecks.c | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/MerpMod/Definition.c b/MerpMod/Definition.c index 11e5c51..0b9a792 100644 --- a/MerpMod/Definition.c +++ b/MerpMod/Definition.c @@ -167,7 +167,11 @@ DEFIDA1D("Engine Load Smoothing Factor Final",dLoadSmoothingFinal); #ifdef pClutchFlags DEFINERAMBIT("MerpMod Clutch Switch",pClutchFlags, ClutchBitMask,"E"); #endif + +#ifdef pBrakeFlags DEFINERAMBIT("MerpMod Brake Switch",pBrakeFlags, BrakeBitMask,"E"); +#endif + #ifdef pResumeFlags DEFINERAMBIT("MerpMod Cruise Resume Switch",pResumeFlags, ResumeBitMask,"E"); #endif diff --git a/MerpMod/SwitchChecks.c b/MerpMod/SwitchChecks.c index da53f06..97592bb 100644 --- a/MerpMod/SwitchChecks.c +++ b/MerpMod/SwitchChecks.c @@ -14,6 +14,7 @@ #include "EcuHacks.h" +#ifdef pBrakeFlags unsigned char TestBrakeSwitch() { unsigned char result = *pBrakeFlags & BrakeBitMask; @@ -22,6 +23,7 @@ unsigned char TestBrakeSwitch() else return 0x00; } +#endif #ifdef pClutchFlags unsigned char TestClutchSwitch() @@ -56,6 +58,7 @@ unsigned char TestCruiseCoastSwitch() } #endif +#if defined(pCoastFlags) && defined(pResumeFlags) void TestCruiseControlToggles() { unsigned char resume = TestCruiseResumeSwitch(); @@ -96,4 +99,6 @@ void TestCruiseControlToggles() } pRamVariables->CruiseCoastLast = coast; pRamVariables->CruiseResumeLast = resume; -} \ No newline at end of file +} + +#endif \ No newline at end of file From ced223980712bcb7377772f5815d2e70cd5020a4 Mon Sep 17 00:00:00 2001 From: Merp Date: Tue, 6 May 2014 12:10:53 -0400 Subject: [PATCH 11/24] Initial commit of ramhole scanner. --- MerpMod/Definition.c | 7 +++++++ MerpMod/EcuHacks.c | 4 ++++ MerpMod/Externs.h | 4 ++++ MerpMod/MerpMod.hwp | 1 + MerpMod/RamHoleScanner.c | 21 +++++++++++++++++++++ MerpMod/RamVariables.h | 7 +++++++ 6 files changed, 44 insertions(+) create mode 100644 MerpMod/RamHoleScanner.c diff --git a/MerpMod/Definition.c b/MerpMod/Definition.c index 0b9a792..95aa1f1 100644 --- a/MerpMod/Definition.c +++ b/MerpMod/Definition.c @@ -139,6 +139,13 @@ DEFINERAMVARARRAYALLBITS("MerpMod Port Logger L",PortParameters,10,"uint16","E") #endif +#if RAM_HOLE_SCANNER +DEFINERAMVAR("MerpMod Ram Hole Scanner Address",ScannedAddress,"uint16","E"); +DEFINERAMVAR("MerpMod Ram Hole Scanner Value",ScannedValue,"uint16","E"); +//DEFINERAMVAR("MerpMod Ram Hole Scanner Composite",ScannedAddress,"uint32","E"); +DEFINERAMVAR("MerpMod Ram Hole Scanner Stack Pointer",ScannedStackPointer,"uint32","E"); +#endif + #if PROG_MODE DEFINERAMVAR("MerpMod Prog Mode Entry",ProgModeEntry,"uint8","E"); DEFINERAMVAR("MerpMod Prog Mode Wait",ProgModeWait,"uint8","E"); diff --git a/MerpMod/EcuHacks.c b/MerpMod/EcuHacks.c index 8a7facb..43188e8 100644 --- a/MerpMod/EcuHacks.c +++ b/MerpMod/EcuHacks.c @@ -70,6 +70,10 @@ void EcuHacksMain() //Constant Hz main routine, hooked into wgdc lookup PortLogger(); #endif +#if RAM_HOLE_SCANNER + RamHoleScanner(); +#endif + #if SWITCH_HACKS InputUpdate(); #endif diff --git a/MerpMod/Externs.h b/MerpMod/Externs.h index e17c066..c6b28c4 100644 --- a/MerpMod/Externs.h +++ b/MerpMod/Externs.h @@ -22,6 +22,10 @@ void PortLogger() ROMCODE; #endif +#if RAM_HOLE_SCANNER +void RamHoleScanner() ROMCODE; +#endif + unsigned char TestBrakeSwitch() ROMCODE; unsigned char TestClutchSwitch() ROMCODE; unsigned char TestCruiseResumeSwitch() ROMCODE; diff --git a/MerpMod/MerpMod.hwp b/MerpMod/MerpMod.hwp index ada0406..44ccd43 100644 --- a/MerpMod/MerpMod.hwp +++ b/MerpMod/MerpMod.hwp @@ -457,6 +457,7 @@ "C source file" "0c9afd23307eec10" 2 "C++ source file" "0c9afd23307eec10" 2 "C:\Users\Merrill\Dev\MerpMod\MerpMod\PortLogger.c" "05766bd742b5fc10" 2 +"C:\Users\Merrill\Dev\MerpMod\MerpMod\RamHoleScanner.c" "040c15e93266fc10" 2 "C:\Users\merrill\Dev\MerpMod\MerpMod\BlendAndSwitch.c" "0c9afd23307eec10" 2 "C:\Users\merrill\Dev\MerpMod\MerpMod\BoostHackTables.c" "0c9afd23307eec10" 2 "C:\Users\merrill\Dev\MerpMod\MerpMod\BoostHacks.c" "0c9afd23307eec10" 2 diff --git a/MerpMod/RamHoleScanner.c b/MerpMod/RamHoleScanner.c new file mode 100644 index 0000000..f11bcfa --- /dev/null +++ b/MerpMod/RamHoleScanner.c @@ -0,0 +1,21 @@ + +#include "EcuHacks.h" + +#if RAM_HOLE_SCANNER + +void RamHoleScanner(){ + +unsigned int addr = 0xFFFF0000; +addr |= (unsigned int)pRamVariables->ScannedAddress; +pRamVariables->ScannedValue = *(unsigned short*)addr; +pRamVariables->ScannedAddress +=2; +if(pRamVariables->ScannedAddress > 0xBFFF) + pRamVariables->ScannedAddress = 0x0000; //TODO: set on a per CPU basis! + // store full address and perform CRC32 on ram? + +//pRamVariables->ScannedAddress USHORT +//pRamVariables->ScannedValue USHORT +//pRamVariables->ScannedtackPointer ULONG +} + +#endif \ No newline at end of file diff --git a/MerpMod/RamVariables.h b/MerpMod/RamVariables.h index 3dee8c6..73e7b69 100644 --- a/MerpMod/RamVariables.h +++ b/MerpMod/RamVariables.h @@ -252,6 +252,13 @@ typedef struct unsigned short PortParameters[20]; #endif + +#if RAM_HOLE_SCANNER + unsigned short ScannedAddress; + unsigned short ScannedValue; + unsigned long ScannedStackPointer; +#endif + long RamHoleSpace; char RamHoleEndMarker; From 1fdea8bfd84498081ad84250c3460943ed5fcda4 Mon Sep 17 00:00:00 2001 From: Merp Date: Thu, 8 May 2014 23:13:58 -0400 Subject: [PATCH 12/24] Improved preprocessor conditionals in main to prevent possibility of infinite recursion. --- MerpMod/EcuHacks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MerpMod/EcuHacks.c b/MerpMod/EcuHacks.c index 43188e8..b3b2697 100644 --- a/MerpMod/EcuHacks.c +++ b/MerpMod/EcuHacks.c @@ -84,7 +84,7 @@ void EcuHacksMain() //Constant Hz main routine, hooked into wgdc lookup #if POLF_HACKS && !POLF_MAIN_HOOK POLFHack(); -#else +#elif BOOST_HACKS && !WGDC_MAIN_HOOK WGDCHack(); #endif From 70f66c8cbe25a1cfc34638a4844b4071b8a466ef Mon Sep 17 00:00:00 2001 From: Merp Date: Sat, 10 May 2014 09:50:13 -0400 Subject: [PATCH 13/24] Finished implementation of injector hacks. --- MerpMod/EcuHacks.c | 4 ++++ MerpMod/Externs.h | 1 + MerpMod/GenericTests.c | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/MerpMod/EcuHacks.c b/MerpMod/EcuHacks.c index b3b2697..84b4656 100644 --- a/MerpMod/EcuHacks.c +++ b/MerpMod/EcuHacks.c @@ -82,6 +82,10 @@ void EcuHacksMain() //Constant Hz main routine, hooked into wgdc lookup TimingHack(); #endif +#if SWITCH_HACKS && INJECTOR_HACKS + InjectorHack(); +#endif + #if POLF_HACKS && !POLF_MAIN_HOOK POLFHack(); #elif BOOST_HACKS && !WGDC_MAIN_HOOK diff --git a/MerpMod/Externs.h b/MerpMod/Externs.h index c6b28c4..b0a7a87 100644 --- a/MerpMod/Externs.h +++ b/MerpMod/Externs.h @@ -48,6 +48,7 @@ void CelFlashStart(unsigned char CelFlashes, unsigned char Speed, unsigned char void CelFlash() ROMCODE; void WGDCHack(void) ROMCODE; void TargetBoostHack(void) ROMCODE; +void InjectorHack() ROMCODE; void POLFHack() ROMCODE; float TimingHack() ROMCODE; float Pull2DRamHook(float* table, float xLookup) ROMCODE; diff --git a/MerpMod/GenericTests.c b/MerpMod/GenericTests.c index a422c8d..f56516d 100644 --- a/MerpMod/GenericTests.c +++ b/MerpMod/GenericTests.c @@ -87,6 +87,10 @@ Assert(0,"error in ram hole!"); //Celflash and/or wgdc/boost hacks, progmode, pgwg #endif +#if SWITCH_HACKS && INJECTOR_HACKS + InjectorHack(); +#endif + #if POLF_HACKS POLFHack(); #endif From cf68164cb293a78a348031d5fdd43b56e02ae95c Mon Sep 17 00:00:00 2001 From: Merp Date: Sat, 10 May 2014 09:52:24 -0400 Subject: [PATCH 14/24] Implemented new stack pointer with preprocessor conditionals for testing different hw. --- MerpMod/GenericTests.c | 10 ++++++++++ MerpMod/ResetHandler.s | 11 +++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/MerpMod/GenericTests.c b/MerpMod/GenericTests.c index f56516d..a21c709 100644 --- a/MerpMod/GenericTests.c +++ b/MerpMod/GenericTests.c @@ -102,6 +102,16 @@ Assert(0,"error in ram hole!"); CallMemoryReset(); } + +#if ARCH_SH7055 +#define ARCH_STACK_POINTER 0xFFFF7000 +#elif ARCH_SH7058 +#define ARCH_STACK_POINTER 0xFFFF1000 +#else +#define ARCH_STACK_POINTER 0xFFFF1000 +#endif +unsigned long ArchStackPointer __attribute__ ((section ("RomHole_Misc"),aligned(8))) = ARCH_STACK_POINTER; + void SetValues() __attribute__ ((section ("Misc"))); void SetValues() { diff --git a/MerpMod/ResetHandler.s b/MerpMod/ResetHandler.s index a7e19fa..5ac539e 100644 --- a/MerpMod/ResetHandler.s +++ b/MerpMod/ResetHandler.s @@ -35,13 +35,14 @@ .section RSTHandler,"ax" _ResetHandler: mov.l Stack,r15 + mov.l @r15,r15 mov.l SetValues,r0 jsr @r0 nop - mov.l DemonstrateAssertionFailure, r0 - jsr @r0 - nop + !!mov.l DemonstrateAssertionFailure, r0 + !!jsr @r0 + !!nop mov.l GenericTests,r0 jsr @r0 @@ -50,9 +51,11 @@ _ResetHandler: bra .stop nop .align 4 + +#include "TargetConfig.h" Stack: - .long 0xFFFF1000 + .long _ArchStackPointer !! So you can't just "mov.l _SetValues,r0" (or any other function) since the !! functions all live in other segments. You get "pcrel too far" errors. From 5445d65c9b554d645cc15b35de066b19cd269f88 Mon Sep 17 00:00:00 2001 From: Merp Date: Sat, 10 May 2014 09:53:21 -0400 Subject: [PATCH 15/24] Update to generic tests. Added rev limiter call and memory hacks preprocessor conditional. --- MerpMod/GenericTests.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/MerpMod/GenericTests.c b/MerpMod/GenericTests.c index a21c709..feba623 100644 --- a/MerpMod/GenericTests.c +++ b/MerpMod/GenericTests.c @@ -79,7 +79,11 @@ Assert(0,"error in ram hole!"); #endif #if SD_HACKS - CallSpeedDensityHook();//This covers SD and Revlim + CallSpeedDensityHook();//This covers SD +#endif + +#if REVLIM_HACKS + RevLimHook(); #endif #if WGDC_HOOK_DEFINED @@ -99,7 +103,9 @@ Assert(0,"error in ram hole!"); TimingHack(); #endif +#if MEMORY_HACKS CallMemoryReset(); +#endif } From a1b8d40194c7bb8d3dd3cfc2104eae3526e0676a Mon Sep 17 00:00:00 2001 From: Merp Date: Sat, 10 May 2014 09:54:20 -0400 Subject: [PATCH 16/24] Updated rev limiter unit tests. Added missing throttle plate update, added preprocessor conditionals for targets without brake switch, and fixed bug in test 6. --- MerpMod/RevLimiterTests.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/MerpMod/RevLimiterTests.c b/MerpMod/RevLimiterTests.c index 5e1be4b..29d9e2d 100644 --- a/MerpMod/RevLimiterTests.c +++ b/MerpMod/RevLimiterTests.c @@ -35,19 +35,19 @@ void SetClutch(int value) } #endif +#ifdef pBrakeFlags void SetBrake(int value) { - #ifdef pBrakeFlags - if (value == 0) - { - *pBrakeFlags &= ~(BrakeBitMask); - } - else - { - *pBrakeFlags |= BrakeBitMask; - } - #endif + if (value == 0) + { + *pBrakeFlags &= ~(BrakeBitMask); + } + else + { + *pBrakeFlags |= BrakeBitMask; + } } +#endif #if REVLIM_HACKS @@ -76,9 +76,12 @@ void RevLimUnitTest(unsigned char flag, int brake, int clutch, float throttle, f pRamVariables->VinAuth = 0x01; #endif +#ifdef pBrakeFlags SetBrake(brake); +#endif + SetClutch(clutch); - + *pThrottlePlate = throttle; *pEngineSpeed = rpm; *pVehicleSpeed = mph; @@ -158,7 +161,7 @@ void RevLimUnitTests() //SHOULD RESUME HERE, but LC still engaged (on LC limit) *pEngineSpeed = DefaultLaunchControlCut - DefaultLaunchControlHyst - 1; RevLimCode(); - Assert(GetFuelCutFlag() && pRamVariables->LCEngaged , "Launch Control: Resume fuel at LaunchControlResume - 1 RPM, standstill, clutch pressed"); + Assert(!GetFuelCutFlag() && pRamVariables->LCEngaged , "Launch Control: Resume fuel at LaunchControlResume - 1 RPM, standstill, clutch pressed"); //TEST7: low throttle //Set throttle @@ -250,7 +253,9 @@ void RevLimUnitTests() *pEngineSpeed = 6000.0f; *pVehicleSpeed = 0.0f; SetClutch(1); + #ifdef pBrakeFlags SetBrake(0); + #endif *pFlagsRevLim = 0x00; RevLimCode(); unsigned char flags = *pFlagsRevLim; From 54852566dcb434503012ba7558bdb3700bf24069 Mon Sep 17 00:00:00 2001 From: Merp Date: Mon, 12 May 2014 20:11:04 -0400 Subject: [PATCH 17/24] Updated license.md --- LICENSE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/LICENSE.md b/LICENSE.md index cf846af..1599aac 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -8,3 +8,5 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + +IT IS THE RESPONSIBILITY OF THE INSTALLER AND/OR USER OF THIS PRODUCT TO ENSURE THAT IT IS USED IN COMPLIANCE WITH ALL APPLICABLE LAWS AND REGULATIONS. \ No newline at end of file From 5219539e9c7431fa7d6555b05051295d487ad5d2 Mon Sep 17 00:00:00 2001 From: Merp Date: Mon, 12 May 2014 20:18:46 -0400 Subject: [PATCH 18/24] Added header, config, and linker script for D2WD701C. --- MerpMod/Targets/D2WD701C.h | 141 +++++++++++++++++++++++++++++++ MerpMod/Targets/D2WD701CConfig.h | 15 ++++ MerpMod/Targets/D2ZZ001EConfig.h | 15 ++++ 3 files changed, 171 insertions(+) create mode 100644 MerpMod/Targets/D2WD701C.h create mode 100644 MerpMod/Targets/D2WD701CConfig.h create mode 100644 MerpMod/Targets/D2ZZ001EConfig.h diff --git a/MerpMod/Targets/D2WD701C.h b/MerpMod/Targets/D2WD701C.h new file mode 100644 index 0000000..620c389 --- /dev/null +++ b/MerpMod/Targets/D2WD701C.h @@ -0,0 +1,141 @@ +#define MOD_DATE 14.4.9.1853 + +#include "Flash.h" +#define MOD_CONFIG Flash +#define MOD_BUILD Testing +#define MOD_RELEASE 0 +#define ECU_CALIBRATION_ID D2WD701C +#define ECU_IDENTIFIER 3c4a384106 +///////////////////// +// NonSpecific Rom Info and Routines +///////////////////// + +#define dCalId (0x00002000) +#define dEcuId (0x000C9AF4) +#define dRomHoleStart (0x000CC000) +#define pRamHoleStart (0xFFFF8120) +#define pRamHoleEnd (0xFFFFB400) +#define sPull2DFloat (0x0000209C) +#define sPull3DFloat (0x00002150) + +///////////////////// +// Switch Hacks +///////////////////// + + +///////////////////// +// Rev Limit Hack +///////////////////// + +#define hRevLimDelete (0x000128FC) +#define sRevLimStart (0x00026000) +#define sRevLimEnd (0x0001D734) +#define pFlagsRevLim ((unsigned char*)0xFFFF5F78) +#define RevLimBitMask (0x80) + +///////////////////// +// Speed Density Hack +///////////////////// + +#define hMafCalc (0x00007CA4) +#define sMafCalc (0x00007C48) + +///////////////////// +// Injector Hack +///////////////////// + + +///////////////////// +// Cel Hacks +///////////////////// + +#define sCelTrigger (0x000542B8) +#define hCelSignal (0x000543D0) +#define pCelSignalOem ((unsigned char*)0xFFFF7D8E) + +///////////////////// +// Boost Hacks +///////////////////// + + +///////////////////// +// WGDC Hacks +///////////////////// + + +///////////////////// +// Primary Open Loop Fueling Hacks +///////////////////// + +#define pPolf4Byte (0xFFFF5DFC) +#define hPolf (0x00012938) +#define sPolf (0x000237DC) +#define pPolfEnrich (0xFFFF5DFC) + +///////////////////// +// Timing Hacks +///////////////////// + +#define pBaseTiming (0xFFFF6178) +#define pKcaIam (0xFFFF6DB4) + +///////////////////// +// Spark Cut +///////////////////// + + +///////////////////// +// Flags-Signals +///////////////////// + +#define pResumeFlags ((unsigned char*)0xFFFF6B28) +#define ResumeBitMask ((unsigned char)0x04) +#define pCoastFlags ((unsigned char*)0xFFFF6B28) +#define CoastBitMask ((unsigned char)0x02) +#define pBrakeFlags ((unsigned char*)0xFFFF6B28) +#define BrakeBitMask ((unsigned char)0x08) +#define pClutchFlags ((unsigned char*)0xFFFF551F) +#define ClutchBitMask ((unsigned char)0x40) + +///////////////////// +// NonSpecific Engine params +///////////////////// + +#define pFbkc4 ((float*)0xFFFF6D94) +#define pIam4 ((float*)0xFFFF2528) +#define pEngineSpeed ((float*)0xFFFF5548) +#define pVehicleSpeed ((float*)0xFFFF5540) +#define pCoolantTemp ((float*)0xFFFF4BBC) +#define pAtmoPress ((float*)0xFFFF4BE8) +#define pManifoldAbsolutePressure ((float*)0xFFFF52A4) +#define pIntakeAirTemp ((float*)0xFFFF4BAC) +#define pMassAirFlow ((float*)0xFFFF4BE4) +#define pMafSensorVoltage ((short*)0xFFFF4B06) +#define pEngineLoad ((float*)0xFFFF543C) +#define pThrottlePlate ((float*)0xFFFF52C8) +#define pAf1Res ((float*)0xFFFF4E70) + +///////////////////// +// OBD Experimental stuff +///////////////////// + + +///////////////////// +// New Definitions +///////////////////// + +#define dLoadSmoothingA (0x000C1208) +#define dLoadSmoothingB (0x000C120C) +#define dLoadSmoothingAlt (0x000C1204) +#define dLoadSmoothingAlt2 (0x000C1200) +#define dLoadSmoothingFinal (0x000C1210) + +///////////////////// +// Memory Reset +///////////////////// + +#define sMemoryReset (0x0000FC90) +#define hMemoryReset (0x0000D1FC) +#define pMemoryResetLimit (0xFFFFBFFB) +#define hMemoryResetLimit (0x00010360) + diff --git a/MerpMod/Targets/D2WD701CConfig.h b/MerpMod/Targets/D2WD701CConfig.h new file mode 100644 index 0000000..b051490 --- /dev/null +++ b/MerpMod/Targets/D2WD701CConfig.h @@ -0,0 +1,15 @@ + +////////////////////////////// +// OPTIONS +////////////////////////////// + +#define AUTO_TRANS 0 +#define SD_DMAP 0 + +#define ECU_IDENTIFIER_CHARS (10) +#define ECU_CALIBRATION_CHARS (8) +#define MOD_CALIBRATION_ID FFFFFFFF +#define MOD_ECU_IDENTIFIER FFFFFFFFFF + +#define EXPECTED_MAF_SENSOR 3.47f +#define EXPECTED_MAF_SD 3.73053f \ No newline at end of file diff --git a/MerpMod/Targets/D2ZZ001EConfig.h b/MerpMod/Targets/D2ZZ001EConfig.h new file mode 100644 index 0000000..df1b4f4 --- /dev/null +++ b/MerpMod/Targets/D2ZZ001EConfig.h @@ -0,0 +1,15 @@ + +////////////////////////////// +// OPTIONS +////////////////////////////// + +#define AUTO_TRANS 1 +#define SD_DMAP 0 + +#define ECU_IDENTIFIER_CHARS (10) +#define ECU_CALIBRATION_CHARS (8) +#define MOD_CALIBRATION_ID FFFFFFFF +#define MOD_ECU_IDENTIFIER FFFFFFFFFF + +#define EXPECTED_MAF_SENSOR 3.47f +#define EXPECTED_MAF_SD 3.73053f \ No newline at end of file From ad99946f54ac0529585fd5aca5a1dea2dd4b355c Mon Sep 17 00:00:00 2001 From: Merp Date: Mon, 12 May 2014 20:19:07 -0400 Subject: [PATCH 19/24] Added flash testing patch for D2WD701C. --- ...C.MeRpMoD.Flash.Testing.v14.4.9.1853.patch | 1388 +++++++++++++++++ 1 file changed, 1388 insertions(+) create mode 100644 Release/Flash/D2WD701C.MeRpMoD.Flash.Testing.v14.4.9.1853.patch diff --git a/Release/Flash/D2WD701C.MeRpMoD.Flash.Testing.v14.4.9.1853.patch b/Release/Flash/D2WD701C.MeRpMoD.Flash.Testing.v14.4.9.1853.patch new file mode 100644 index 0000000..0ae8287 --- /dev/null +++ b/Release/Flash/D2WD701C.MeRpMoD.Flash.Testing.v14.4.9.1853.patch @@ -0,0 +1,1388 @@ +S02B0000433A5C55736572735C6D657272696C6C5C4465765C4D6572704D6F645C4D6572704D6F645C466C618C +S3150000000000E00000FFFF200000E00000FFFF2000EE +S3150000001000E0003000E0003400E0003800E0003C82 +S3150000002000E0004000E0004400E0004800E0004C32 +S3110000003000E0005000E0005400E0005822 +S315000E140044325744373031432E4D6552704D6F443A +S315000E14102E466C6173682E54657374696E672E76EC +S315000E142031342E342E392E3138353300434F505940 +S315000E1430524947485420323031322C323031332023 +S315000E14404D657272696C6C20412E204D79657273F2 +S315000E1450204949492C206D657272696C6C616D79F3 +S315000E146065727369696940676D61696C2E636F6D2C +S315000E1470206D657272696C6C616D796572736969DE +S315000E14806940676D61696C2E636F6D2E20554E41F6 +S315000E14905554484F52495A4544204449535452498B +S315000E14A0425554494F4E205354524943544C592099 +S315000E14B050524F484942495445442E204F464652B3 +S315000E14C04F414420555345204F4E4C592E204E4FDA +S315000E14D02057415252414E54592E205448495320BA +S315000E14E0534F465457415245204953204C49434584 +S315000E14F04E53454420544F20594F55209341532067 +S315000E150049532C9420414E4420574954484F555424 +S315000E151020414E592057415252414E5459204F4662 +S315000E152020414E59204B494E442C2057484554488D +S315000E15304552204F52414C2C205752495454454E39 +S315000E15402C20455850524553532C20494D504C494A +S315000E15504544204F52205354415455544F52592C02 +S315000E156020494E434C5544494E4720425554204E31 +S315000E15704F54204C494D4954454420544F20574111 +S315000E15805252414E54494553204F46204D455243E3 +S315000E159048414E544142494C4954592C20464954CF +S315000E15A04E45535320464F522041205041525449E6 +S315000E15B043554C415220505552504F53452C2041C5 +S315000E15C04E44204E4F4E494E4652494E47454D4586 +S315000E15D04E542E0000000000000000000100000026 +S315000E15E0438893333B7DB23F401D70A442C8000032 +S315000E15F0434800004396000043C8000043FA00002B +S315000E160044160000442F00004448000044610000C8 +S315000E1610447A0000448980004496000044A280006B +S315000E162044AF000044BB800044C8000044D4800090 +S315000E163044E1000044ED800044FA000045034000FA +S315000E164045098000450FC0004516000043FA00000C +S315000E1650444800004496000044C8000044FA0000C6 +S315000E166045160000452F0000454800004561000064 +S315000E1670457A00004583400045898000458FC000AD +S315000E168045960000459C400045A2800045A8C00036 +S315000E169045AF000045B5400045BB800045C800007B +S315000E16A045D4800045E1000045ED80001BEE1D1976 +S315000E16B026E6286F29A92A2A2ABF2B512BA92BEAFF +S315000E16C02C2B2C772CC32D0F2D5B2DA72DF32E3FF8 +S315000E16D02E8B2ED72F232F6F2FBB30071CE61DDE2A +S315000E16E025DE2794290329DC2ACC2B442BB62BF78F +S315000E16F02C382C842CD02D1C2D682DB42E002E4C5F +S315000E17002E982EE42F302F7C2FC830141F9120FFD9 +S315000E171025BA271228F629DC2A3D2ACF2BC72C08F4 +S315000E17202C522C9E2CEA2D362D822DCE2E1A2E665E +S315000E17302EB22EFE2F4A2F962FE2302E2108225C35 +S315000E174025BB2711290129F62A652AF62BDD2C251C +S315000E17502C792CD22D2B2D842DDD2E362E8F2EE888 +S315000E17602F412F9A2FF3304C30A530FE21B322E0B5 +S315000E177025BB273A29032A102AA52B1D2C112C6BC3 +S315000E17802CD22D3A2DA22E0A2E722EDA2F422FAAE7 +S315000E17903012307A30E2314A31B2321A222D2340DB +S315000E17A025CC278929102A2B2AF32BB22CCC2D9443 +S315000E17B02E582F1A2FDC309E3160322232E433A699 +S315000E17C03468352A35EC36AE37703832229623A871 +S315000E17D0264127F029292A602B902CD32E1D302343 +S315000E17E0312431A6322832AA332C33AE343034B2F9 +S315000E17F0353435B6363836BA373C37BE237124768D +S315000E180026DA287D299D2AEA2C862E58306432B790 +S315000E1810337833B833F83438347834B834F8353856 +S315000E1820357835B835F83638367836B824A725944F +S315000E183027F929F22BB72DC4302231B132F333EB0F +S315000E1840346234BD3518357335CE3629368436DFD7 +S315000E1850373A379537F0384B38A639012568265D65 +S315000E186028B62AE22CD92EDF30973200332733F9E9 +S315000E1870346234BD3518357335CE3629368436DFA7 +S315000E1880373A379537F0384B38A639012542263187 +S315000E1890289C2AC92CB12EC0305131CD32D0338F6F +S315000E18A033F9343A347B34BC34FD353E357F35C09E +S315000E18B036013642368336C4370537462510260896 +S315000E18C0284C2A842C5F2E542FE5313F324B32F7AB +S315000E18D0332B3353337B33A333CB33F3341B3443A2 +S315000E18E0346B349334BB34E3350B353324D425C4EF +S315000E18F027FE2A252C012DDC2F5330933185320FEE +S315000E19003236322A321E3212320631FA31EE31E2D6 +S315000E191031D631CA31BE31B231A6319A249E2579DD +S315000E192027A829BA2B952D562EB42FBC307E30E51E +S315000E193030F330A63059300C2FBF2F722F252ED8EC +S315000E19402E8B2E3E2DF12DA42D572D0A245C2538D7 +S315000E1950274D294C2B0E2C9C2DD52EA02F3A2F62BF +S315000E19602F302EAF2E2E2DAD2D2C2CAB2C2A2BA997 +S315000E19702B282AA72A2629A5292428A3241A24F89F +S315000E198026F428D42A652BCF2CD52D6E2DBA2D9F55 +S315000E19902D2C2CAB2C2A2BA92B282AA72A2629A597 +S315000E19A0292428A3282227A12720269F23CE249F39 +S315000E19B026802848299D2AD62B8D2BE82BDB2B8FAC +S315000E19C02B1B2A9A2A1929982917289628152794FF +S315000E19D02713269226112590250F248E2376245220 +S315000E19E0260D27B028DD29BC2A3E2A412A0029A326 +S315000E19F0292228A2282227A2272226A2262225A28B +S315000E1A00252224A2242223A2232222A2231E240537 +S315000E1A10259A2718281D28A228EF289A282527B7A1 +S315000E1A20272926AA262B25AC252D24AE242F23B016 +S315000E1A30233122B2223321B4213520B622C623B851 +S315000E1A4025272680275D278827A026F3264A25CB1D +S315000E1A50253024B2243423B6233822BA223C21BEA2 +S315000E1A60214020C220441FC61F481ECA226E236B69 +S315000E1A7024B425E8269D266E2651254C246F23DF99 +S315000E1A80233722BA223D21C0214320C620491FCC2E +S315000E1A901F4F1ED21E551DD81D5B1CDE2216231E81 +S315000E1AA02441255025DD2554250223A5229421F314 +S315000E1AB0213E20C220461FCA1F4E1ED21E561DDABA +S315000E1AC01D5E1CE21C661BEA1B6E1AF221BE22D19B +S315000E1AD023CE24B8251D243A23B321FE20B9200790 +S315000E1AE01F451ECA1E4F1DD41D591CDE1C631BE846 +S315000E1AF01B6D1AF21A7719FC1981190621662284B2 +S315000E1B00235B2420245D2320226420571EDE1E1B09 +S315000E1B101D4C1CD21C581BDE1B641AEA1A7019F6D1 +S315000E1B20197C19021888180E1794171A001800181F +S315000E1B30000E15EC000E164C000E16AC080000003A +S315000E1B4038400000000000000000000043A68000A0 +S315000E1B5044268000447A000044A6A00044D04000EB +S315000E1B6044FA000043E8800044034000441240005B +S315000E1B704421400044304000443F4000444E400063 +S315000E1B804000400040004000400040004000400041 +S315000E1B904000400040004000400040004000400031 +S315000E1BA04000400040004000400040004000400021 +S315000E1BB04000400040004000400040004000400011 +S315000E1BC04000400040004000400040004000400001 +S315000E1BD040004000400040004000400040004000F1 +S315000E1BE04000000000070007000E1B48000E1B6495 +S315000E1BF0000E1B8008000000388000FD000000006B +S315000E1C0043E8800044034000441240004421400053 +S315000E1C1044304000443F4000444E4000445D400086 +S315000E1C20446C4000447B40000000000043FA000074 +S315000E1C30447A0000449C400044BB800044FA0000F5 +S315000E1C40451C4000453B8000455AC000457A0000C1 +S315000E1C500000003296FAFAFAFAFA0000003296FA04 +S315000E1C60FAFAFAFA0000003296FAFAFAFAFA0000CE +S315000E1C70003296FAFAFAFAFA0000003296FAFAFAF0 +S315000E1C80FAFA0000003296FAFAFAFAFA0000003270 +S315000E1C9096FAFAFAFAFA0000003296FAFAFAFAFA0E +S315000E1CA00000003296FAFAFAFAFA0000003296FAB4 +S315000E1CB0FAFAFAFA000A000A000E1C00000E1C2898 +S315000E1CC0000E1C50040000003B80808100000000C6 +S315000E1CD0010000000200000045E10000424800003D +S315000E1CE04248000000000000457A00004220000035 +S315000E1CF0458CA00040A00000457A00004248000036 +S315000E1D004270000042A6000002000000040000001F +S315000E1D1001000000080000000400000002000000A0 +S315000E1D20100000001000000042F000003F0000000E +S315000E1D302000000002000000BDCCCCCDC0066666B9 +S315000E1D403FC000003FC0000041C800002FE67FFCE8 +S315000E1D506EF3D10D6110621C61E37103E308223943 +S315000E1D60212061E371036110621CE10832108F03BA +S315000E1D700009E101A0010009E10060137E046FE392 +S315000E1D806EF6000B00090009FFFF6B282FE67FFC9D +S315000E1D906EF3D10D6110621C61E37103E3402239CB +S315000E1DA0212061E371036110621CE14032108F0342 +S315000E1DB00009E101A0010009E10060137E046FE352 +S315000E1DC06EF6000B00090009FFFF551F2FE67FFC7C +S315000E1DD06EF3D10D6110621C61E37103E3042239C7 +S315000E1DE0212061E371036110621CE10432108F033E +S315000E1DF00009E101A0010009E10060137E046FE312 +S315000E1E006EF6000B00090009FFFF6B282FE67FFC1C +S315000E1E106EF3D10D6110621C61E37103E302223988 +S315000E1E20212061E371036110621CE10232108F03FF +S315000E1E300009E101A0010009E10060137E046FE3D1 +S315000E1E406EF6000B00090009FFFF6B282F862FE6A2 +S315000E1E504F227FF86EF368E37807D129410B00090C +S315000E1E606103281068E37806D126410B0009610349 +S315000E1E702810914471036110611C62E3720762209F +S315000E1E80622C32108D280009913971026110611C85 +S315000E1E9062E372066220622C32108D14000961E331 +S315000E1EA071076110611C21188D16000961E3710618 +S315000E1EB06110611C21188D0F000961E371C8E200E3 +S315000E1EC0112EA0090009911A71036110611C62E3BB +S315000E1ED072076220622C32109111710262E3720651 +S315000E1EE062202120910B710362E37207622021208A +S315000E1EF07E086FE34F266EF668F6000B000981200A +S315000E1F00000E1DCC000E1E0C2FE64F227FFC6EF32C +S315000E1F1061E371C49214112FD10A6111415AF10D68 +S315000E1F2061E371C4511FF11D045A410B0009D1061C +S315000E1F30F118F01C7E046FE34F266EF6000B0009B7 +S315000E1F407C480009FFFF4B06FFFF4BE42F862FE66A +S315000E1F504F227FF46EF361E371CC114E61E3F14AC9 +S315000E1F60989FD150611262E372CC532E62E36433B2 +S315000E1F70F428410B0009F10C61837120F11A989037 +S315000E1F80D1496112D249F228D249F128D2496423A5 +S315000E1F90F42CF51C410B0009F10C61837118F11A32 +S315000E1FA0D145F218D145F11861E37108F120F11A05 +S315000E1FB09877D13D6112D23DF228D241F128D24115 +S315000E1FC06423F42CF51C410B0009F10C618371247A +S315000E1FD0F11A9166D236F228D23BF128F212D2339A +S315000E1FE0F128F212925D7218F128F21292597224A9 +S315000E1FF0F128F212D235F128F21262E37208F128B4 +S315000E2000F32CF313F13C711CF11A914A7115611000 +S315000E2010621CE10232108F0500099142711CF11803 +S315000E2020A0370009913D71156110621CE103321053 +S315000E20308F2C00099835D11C6112D21CF228D21CA5 +S315000E2040F128D2236423F42CF51C410B0009F10C64 +S315000E20506183712CF11A91249223721CF22892201C +S315000E2060722CF128F212921C7220F3289219722CFD +S315000E2070F128F49DF54CF511F15CF132F120713039 +S315000E2080F11A910E7130F118A00300099109712011 +S315000E2090F118F01C7E0C6FE34F266EF668F6000BF9 +S315000E20A000098120000E2A80000E2A7CFFFF52A412 +S315000E20B0FFFF5548000E1B2CFFFF4BAC000E15E024 +S315000E20C0FFFF4BE8000E1BE4000E15E8000E15E4AC +S315000E20D0000E1CB42F862FE6FFCB4F226EF39125F2 +S315000E20E092247248F1287140F11A981F911E714878 +S315000E20F0FC18911B714CF118F41CD10D410B000903 +S315000E2100F10CF2CCF211F12C61837144F11A910D9E +S315000E21107138E200212091097137E20021206FE328 +S315000E21204F26FCF96EF668F6000B000981200009B1 +S315000E2130000E26142F862FE6FFCB4F227FFC6EF362 +S315000E2140D13C410B00096103611C21188D08000961 +S315000E2150D139410B00096103611C21188D05000957 +S315000E2160D136410B0009A07A0009D135F218915FDC +S315000E21707170F118F2158F2A0009D132F2189157A3 +S315000E21807160F118F2158F220009915171366110A6 +S315000E219021188D1C0009D12CF218D12CF118F2152C +S315000E21A08F15000991447137E20021209140713854 +S315000E21B0611021188F530009913A7138E2012120DE +S315000E21C09136D220F128715CF11AA0480009D11C73 +S315000E21D0F118912D7150F218F2158F3D0009D11A92 +S315000E21E0F218D11BF118F2158F36000991207138AD +S315000E21F0E2002120911C7137E201212091189217DD +S315000E22007254F1287140F11A981291117154FC18FA +S315000E2210910E7158F118F41CD10E410B0009F10CF8 +S315000E2220F2CCF211F12C61837144F11AA017000958 +S315000E223081200009000E1D8C000E1D4C000E20D4B0 +S315000E2240FFFF5540FFFF5548FFFF52C8000E1D0405 +S315000E2250000E1D00000E2614D133410B00099161AC +S315000E226071386210E10132108F2A0009915A7148B5 +S315000E2270FC1891577168F118F41CD12C410B00090A +S315000E2280F10C61E3F3CCF311F13CF11A914A714072 +S315000E229062E3F128F11A98459144716CF118F41C19 +S315000E22A0D122410B0009F10C61E3F218F32CF31164 +S315000E22B0F13C61837144F11A91347138E2022120A6 +S315000E22C0D11BF218912E7140F118F2158D080009E6 +S315000E22D0D117F21891267148F118F2158F0A0009D6 +S315000E22E0D114D2146220632CE280223B622C212070 +S315000E22F0A0100009D10EF11891147144F218F215BE +S315000E23008F080009D10BD20B6220622CE37F223993 +S315000E2310622C21207E046FE34F26FCF96EF668F6DA +S315000E2320000B000981200009000E20D4000E261491 +S315000E2330FFFF5548FFFF5F782FE64F227FF46EF3BF +S315000E234061E371CC114F61E37104F14A61E3F15A15 +S315000E235061E371CC521F912432168F0D000961E391 +S315000E236071CC521F911E32168D06000961E371CC97 +S315000E2370511FF118A00E0009D10B611262E372CC47 +S315000E2380572F63E3730462E36473F438F528410B45 +S315000E23900009F10CF01C7E0C6FE34F266EF6000B57 +S315000E23A00009812081A30009000E2A7C2FE64F2208 +S315000E23B07FF86EF361E371C8114F61E3F14A61E391 +S315000E23C071C8521F911A32168F06000961E371C841 +S315000E23D0511FF118A00B0009D109611262E372C8F0 +S315000E23E0532F62E36433F428410B0009F10CF01C01 +S315000E23F07E086FE34F266EF6000B0009812000095A +S315000E2400000E2A802FE64F226EF3D1066112410B83 +S315000E24100009D105410B00096FE34F266EF6000B3E +S315000E242000090009000E2A84000E242C2FE64F22E6 +S315000E24306EF3920D910D64236513D106410B0009BF +S315000E2440D105410B00096FE34F266EF6000B00090E +S315000E2450812081A4000E249C000E25002FE64F221B +S315000E24606EF391146110621C911232108D0A0009DE +S315000E2470920D910E64236513D106410B0009D10608 +S315000E2480410B00096FE34F266EF6000B0009812003 +S315000E249000B481A4000E249C000E25002FE67FF0CA +S315000E24A06EF361E371D0114D61E371D0115C61E39E +S315000E24B071D062E372D0522C112E61E371D062E3B9 +S315000E24C072D0522D112FA00C000961E371D0511F4D +S315000E24D0E200212261E371D062E372D0522F7204C0 +S315000E24E0112F62E372D061E371D0522F511E321258 +S315000E24F08FEB00097E106FE36EF6000B00090009E4 +S315000E25002F862FE64F226EF39865D133410B0009C5 +S315000E25106103621C618371032120985CD12F410BEC +S315000E252000096103621C618371022120915371358A +S315000E25306110611C21188F060009914CD228622069 +S315000E2540622C713521209146D2266220622C622E93 +S315000E255071362120913FD224F1287148F11A913A11 +S315000E2560D222F128714CF11A9135D221F128716CD3 +S315000E2570F11A9130D21FF1287164F11A912BD21EE5 +S315000E2580F1287168F11A9126D21CF1287150F11AB0 +S315000E25909121D21BF1287154F11A911CD219F128EE +S315000E25A07158F11A9117D218F1287170F11A911209 +S315000E25B0D216F1287160F11A910DD2156220622C95 +S315000E25C0711521209107E2B421206FE34F266EF696 +S315000E25D068F6000B00098120000E1DCC000E1E0CA5 +S315000E25E0000E1CD0000E1CD4000E1CD8000E1CDCD7 +S315000E25F0000E1CE0000E1CE4000E1CE8000E1CF47F +S315000E2600000E1CF8000E1CFC000E1CEC000E1CF03E +S315000E2610000E15DC2FE67FFC6EF361E3F14A61E3F3 +S315000E2620F218F18DF2158F04000961E3F118A0037B +S315000E2630000961E3F118F14DF01C7E046FE36EF6AE +S315000E2640000B00092FE64F226EF3D106410B00094F +S315000E2650D1056112410B00096FE34F266EF6000B92 +S315000E266000090009000E266C000E2A882FE64F225E +S315000E26706EF3D105410B0009D104410B00096FE33E +S315000E26804F266EF6000B0009000E1E4C000E281C7F +S315000E26902FE64F226EF3D106410B0009D1056112CA +S315000E26A0410B00096FE34F266EF6000B0009000979 +S315000E26B0000E2134000E2A8C2FE64F227FF46EF385 +S315000E26C061E371CC114F61E37107215061E371CC67 +S315000E26D0116D61E371062170913E717D6110611C71 +S315000E26E021188F3300099137717C6110611C2118F6 +S315000E26F08D12000961E371CC511F6110631C62E3F8 +S315000E2700720761E37117643365206610E700D11313 +S315000E2710410B0009A010000961E371CC511D611037 +S315000E2720631C62E3720661E3711B643365206610F7 +S315000E2730E700D10A410B0009910E920D727C6220C0 +S315000E2740622CE301223A622C717C21207E0C6FE30F +S315000E27504F266EF6000B000981200009000E276039 +S315000E27602FE67FFC6EF361E37103214061E3710294 +S315000E2770215061E37101216061E32170914B717DFE +S315000E27806110611C21188D07000961E36110621C3E +S315000E2790E10132108F3A0009913D717E62E37201BA +S315000E27A0622021209137717862E372026220212025 +S315000E27B09131717962E372026220212061E3710325 +S315000E27C06110611C21188D210009912462E37203A8 +S315000E27D06220322C622C72FF622C717A2120911AA1 +S315000E27E062E372036220322C622C72FF622C717BC2 +S315000E27F021209110D2086220622CE301223A622C2B +S315000E2800717421209107717DE20121207E046FE310 +S315000E28106EF6000B00098120FFFF7D8E2FE64F22FC +S315000E28206EF3916E717B6110611C21188D2E00095D +S315000E2830916771796110611C21188F1C00099160D6 +S315000E2840925F72786220622C71792120915992588A +S315000E285072746220622CE301223A622C717421207A +S315000E2860914F6213727B6220622C72FF622C717B17 +S315000E28702120A02700099144621372796220622CEE +S315000E288072FF622C71792120A01C00099139717E8C +S315000E28906110611C21188D0B000991326213727E34 +S315000E28A06220622C72FF622C717E2120A00A000922 +S315000E28B09127D2146220622C717421209121717D90 +S315000E28C0E2002120D110F118D110F218F21589026A +S315000E28D0F2148F270009D10EF218D10EF118F21547 +S315000E28E08F200009D10C6110621CD10C6110611C85 +S315000E28F064236513E600E700D109410B0009A077B2 +S315000E290000098120FFFF7D8EFFFF6D94000E1D3C9A +S315000E2910FFFF543C000E1D40000E1D14000E1D1030 +S315000E2920000E2760D140F118D140F218F215890237 +S315000E2930F2148F160009D13EF218D13EF118F21597 +S315000E29408F0F0009D13C6110621CD13C6110611CD5 +S315000E295064236513E600E700D139410B0009A04751 +S315000E29600009D138F118D138F218F2158F16000970 +S315000E2970D12FF218D135F118F2158F0F0009D13477 +S315000E29806110621CD1336110611C64236513E6006D +S315000E2990E700D12B410B0009A02A0009D12EF2180F +S315000E29A0D12EF118F2158F0F0009D12D6110621C70 +S315000E29B0D12C6110611C64236513E640E700D1201B +S315000E29C0410B0009A0140009D127F118D127F218DE +S315000E29D0F2158F0D0009D1266110621CD1256110EA +S315000E29E0611C64236513E640E700D115410B00090F +S315000E29F0911971746110621C911571756110611CCB +S315000E2A0032108D040009D11C6112410B0009910A86 +S315000E2A10920972746220622C717521206FE34F2623 +S315000E2A206EF6000B00098120FFFF6D94000E1D3817 +S315000E2A30FFFF543C000E1D40000E1D0C000E1D081F +S315000E2A40000E2760FFFF4E70000E1D48000E1D443F +S315000E2A50000E1D1C000E1D18FFFF4BBC000E1D2880 +S315000E2A60000E1D24000E1D20FFFF2528000E1D2C16 +S315000E2A70000E1D30000E1D34000E2A90000021504F +S315000E2A800000209C0000FC90000237DC0001D734C9 +S30D000E2A90000542B807001668A6 +S31500E00000DF07D008400B0009D007400B0009D007F6 +S31500E00010400B0009AFFE00090009000900090009CC +S31500E00020FFFF10000E005E9C0E00506C0E005DF4AB +S31500E00030002B0009002B0009002B0009002B00090A +S31500E00040002B0009002B0009002B0009002B0009FA +S31500E00050002B0009002B0009002B0009000900090C +S31500F0000043210002000C9AF4454355204964656E7D +S31500F00010746966696572000043210002000C1208DB +S31500F00020456E67696E65204C6F616420536D6F6F26 +S31500F000307468696E6720466163746F7220410000D0 +S31500F0004043210002000C120C456E67696E65204C68 +S31500F000506F616420536D6F6F7468696E67204661D7 +S31500F0006063746F722042000043210002000C1204F8 +S31500F00070456E67696E65204C6F616420536D6F6FD6 +S31500F000807468696E6720466163746F7220416C74A0 +S31500F0009065726E617465000043210002000C120067 +S31500F000A0456E67696E65204C6F616420536D6F6FA6 +S31500F000B07468696E6720466163746F7220416C7470 +S31500F000C065726E61746520420000000043210002F3 +S31500F000D0000C1210456E67696E65204C6F616420E6 +S31500F000E0536D6F6F7468696E6720466163746F72E3 +S31500F000F02046696E616C000043210008FFFF551F22 +S31500F001004500000000090009000000014D6572700D +S31500F001104D6F6420436C757463682053776974631C +S31500F001206800000043210008FFFF6B28450000002F +S31500F0013000090009000000014D6572704D6F6420E2 +S31500F001404272616B65205377697463680000000042 +S31500F0015043210008FFFF6B28450000000009000955 +S31500F00160000000014D6572704D6F64204372756931 +S31500F00170736520526573756D65205377697463688E +S31500F001800000000043210008FFFF6B284500000037 +S31500F0019000090009000000014D6572704D6F642082 +S31500F001A043727569736520436F6173742053776981 +S31500F001B07463680043210008FFFF5F784500000084 +S31500F001C000090009000000014D6572704D6F642052 +S31500F001D0526576204C696D6974204675656C2043CE +S31500F001E07574205377697463680000004321000832 +S31500F001F0FFFF8135450000000009000900000001FD +S31500F002004D6572704D6F64205344204D6F646520C8 +S31500F00210537769746368000043210008FFFF813853 +S31500F002204500000000090009000000044D657270E9 +S31500F002304D6F6420534420566F6C756D657472690A +S31500F002406320456666696369656E63790000000040 +S31500F0025043210008FFFF813C45000000000900092A +S31500F00260000000044D6572704D6F642053442041C8 +S31500F002706972666C6F772046696E616C204F757493 +S31500F002807075740043210008FFFF814045000000AF +S31500F0029000090009000000044D6572704D6F64207E +S31500F002A0534420416972666C6F77204D6166205326 +S31500F002B0656E736F7200000043210008FFFF8144F2 +S31500F002C04500000000090009000000044D65727049 +S31500F002D04D6F642053442041746D6F73706865727E +S31500F002E0696320436F6D70656E736174696F6E003C +S31500F002F043210008FFFF814C45000000000900097A +S31500F00300000000044D6572704D6F64205344204226 +S31500F003106C656E64696E6720526174696F000000E7 +S31500F0032043210008FFFF8150450000000009000945 +S31500F00330000000044D6572704D6F642053442041F7 +S31500F003406972666C6F7720426C656E64696E6700E1 +S31500F0035043210004000E1B2C566F6C756D6574728C +S31500F00360696320456666696369656E6379205461E1 +S31500F00370626C65203100000043210004000E1BE48E +S31500F0038041746D6F7370686572696320507265733E +S31500F003907375726520436F6D70656E736174696F06 +S31500F003A06E00000043210004000E1CB453442042AA +S31500F003B06C656E64696E67205461626C650000005E +S31500F003C043210002000E15E8456E67696E6520440C +S31500F003D06973706C6163656D656E7400432100022C +S31500F003E0000E15DC53706565642044656E736974A0 +S31500F003F079204D6F6465000043210002000E15E47C +S31500F0040053706565642044656E7369747920436F33 +S31500F004106E7374616E74000043210002000E1CD8E6 +S31500F00420526576204C696D697420285265646C6952 +S31500F004306E65290043210002000E1CE8466C6174CB +S31500F0044020466F6F742053686966742044656C7437 +S31500F00450612028537461746963204C696D6974294D +S31500F004600000000043210002000E1CEC466C617493 +S31500F0047020466F6F74205368696674204D696E6903 +S31500F004806D756D2053706565642054687265736888 +S31500F004906F6C640043210002000E1CF0466C617420 +S31500F004A020466F6F74205368696674204D696E69D3 +S31500F004B06D756D2052504D205468726573686F6C7F +S31500F004C06400000043210002000E1CF44C43204D52 +S31500F004D06178696D756D2053706565642054687236 +S31500F004E06573686F6C64000043210002000E1D0006 +S31500F004F04C43204D696E696D756D205468726F744A +S31500F00500746C65205468726573686F6C64000000E3 +S31500F0051043210002000E1D04464653204D696E69C4 +S31500F005206D756D205468726F74746C6520546872C2 +S31500F005306573686F6C64000043210002000E1CF8BE +S31500F00540526576204C696D697420284C61756E632E +S31500F005506820436F6E74726F6C29000043210008A7 +S31500F00560FFFF815645000000000900090000000168 +S31500F005704D6572704D6F6420464653204D6F64652D +S31500F005800000000043210008FFFF815745000000EE +S31500F0059000090009000000014D6572704D6F64207E +S31500F005A04C4320456E6761676564205369676E61E9 +S31500F005B06C00000043210008FFFF81584500000051 +S31500F005C000090009000000014D6572704D6F64204E +S31500F005D046465320456E6761676564205369676ECA +S31500F005E0616C000043210008FFFF815C45000000BC +S31500F005F000090009000000014D6572704D6F64201E +S31500F006004646532047656172204D6F6E69746F726E +S31500F006100000000043210008FFFF81604500000054 +S31500F0062000090009000000044D6572704D6F6420EA +S31500F006305265764C696D69742041637469766520FC +S31500F006404375742052504D0043210008FFFF81642A +S31500F006504500000000090009000000044D657270B5 +S31500F006604D6F64205265764C696D697420416374F0 +S31500F0067069766520526573756D652052504D0000A0 +S31500F0068043210008FFFF81684500000000090009CA +S31500F00690000000044D6572704D6F64205265644C25 +S31500F006A0696E65204375742052504D004321000851 +S31500F006B0FFFF816C450000000009000900000004FE +S31500F006C04D6572704D6F64205265644C696E65209D +S31500F006D04879737465726573697300004321000885 +S31500F006E0FFFF8174450000000009000900000004C6 +S31500F006F04D6572704D6F64204C61756E6368204372 +S31500F007006F6E74726F6C2052504D000043210008DA +S31500F00710FFFF817845000000000900090000000491 +S31500F007204D6572704D6F64204C61756E6368204341 +S31500F007306F6E74726F6C2048797374657265736945 +S31500F007407300000043210008FFFF8184450000008C +S31500F0075000090009000000044D6572704D6F6420B9 +S31500F007604646532044656C746120284175746F29A0 +S31500F007700000000043210008FFFF818845000000CB +S31500F0078000090009000000044D6572704D6F642089 +S31500F007904646532044656C7461202853746174692D +S31500F007A06329000043210008FFFF817C450000001B +S31500F007B000090009000000044D6572704D6F642059 +S31500F007C046465320456E676167656D656E742052C7 +S31500F007D0504D000043210008FFFF819045000000C6 +S31500F007E000090009000000044D6572704D6F642029 +S31500F007F04646532053706565642054687265736885 +S31500F008006F6C640043210008FFFF81704500000013 +S31500F0081000090009000000044D6572704D6F6420F8 +S31500F008204C43205370656564205468726573686F35 +S31500F008306C64000043210002000E1D3846424B4313 +S31500F00840205468726573686F6C640000432100027F +S31500F00850000E1D0846424B4320466C6173682053D8 +S31500F00860706565640000000043210002000E1D0C57 +S31500F0087046424B4320466C61736820436F756E7435 +S31500F008800000000043210002000E1D3C46424B438F +S31500F0089020536576657265204B6E6F636B205468E6 +S31500F008A0726573686F6C640043210002000E1D10C0 +S31500F008B046424B4320536576657265204B6E6F63F7 +S31500F008C06B20466C617368205370656564000000A8 +S31500F008D043210002000E1D1446424B432053657619 +S31500F008E0657265204B6E6F636B20466C6173682092 +S31500F008F0436F756E7400000043210002000E1D4028 +S31500F0090046424B43204C6F616420546872657368AD +S31500F009106F6C640043210002000E1D2C49414D20EE +S31500F00920466C617368205468726573686F6C640016 +S31500F0093043210002000E1D3049414D20466C617383 +S31500F009406820436F756E740043210002000E1D345B +S31500F0095049414D20466C61736820537065656400AB +S31500F0096043210002000E1D484547542041463120E0 +S31500F00970526573697374616E63652054687265734A +S31500F00980686F6C640000000043210002000E1D1821 +S31500F0099045475420466C6173682053706565640062 +S31500F009A043210002000E1D1C45475420466C61731E +S31500F009B06820436F756E740043210002000E1D44DB +S31500F009C0454754204C6F6164205468726573686FB4 +S31500F009D06C64000043210002000E1D2045435420A4 +S31500F009E0466C6173682053706565640043210002AC +S31500F009F0000E1D2445435420466C61736820436FF6 +S31500F00A00756E740043210002000E1D2845435420E4 +S31500F00A10466C6173682054656D70657261747572A9 +S31500F00A2065205468726573686F6C64004321000832 +S31500F00A30FFFF819445000000000900090000000155 +S31500F00A404D6572704D6F642043454C205369676E57 +S31500F00A50616C000043210008FFFF7D8E4500000019 +S31500F00A6000090009000000014D6572704D6F6420A9 +S31500F00A7043454C205369676E616C204F454D00002D +S31500F00A8043210008FFFF819B450000000009000993 +S31500F00A90000000014D6572704D6F642043454C2097 +S31500F00AA0466C61736820436F756E74657200000062 +S31500F00AB043210008FFFF8199450000000009000965 +S31500F00AC0000000014D6572704D6F642043454C2067 +S31500F00AD0537065656420436F756E7465720000002F +S31500F00AE000090009000900090009000900090009C8 +S311070010002FE66EF36FE36EF6000B000997 +S3150700100C4A75737420746F2070726F7665207468D6 +S3150700101C617420617373657274696F6E7320636193 +S3150700102C6E206661696C2E0046697273742065784A +S3150700103C65637574696F6E2073686F756C6420735E +S3150700104C6574204D61664D6F646520746F204D6124 +S3150700105C664D6F646553656E736F722E00000000E4 +S3150700106C466972737420657865637574696F6E204B +S3150700107C73686F756C642072657475726E204D415A +S3150700108C462066726F6D2073656E736F722E000045 +S3150700109C5365636F6E6420657865637574696F6EE7 +S315070010AC2073686F756C642072657475726E204D4B +S315070010BC41462066726F6D2073656E736F722E00D4 +S315070010CC4D61664D6F64652073686F756C6420722D +S315070010DC656D61696E2073657420746F204D61664A +S315070010EC4D6F646553656E736F722E005365636F30 +S315070010FC6E6420657865637574696F6E2073686FA7 +S3150700110C756C642072657475726E204D4146206647 +S3150700111C726F6D2073706565642D64656E73697483 +S3150700112C792E00004D61664D6F64652073686F7587 +S3150700113C6C642072656D61696E2073657420746FBB +S3150700114C204D61664D6F6465537065656444656EC5 +S3150700115C736974792E000000436865636B696E6763 +S3150700116C20626C656E64206D6F646520636F6465C1 +S3150700117C2C2063656C6C2073686F756C64206265D4 +S3150700118C207A65726F20616E642072657475726E53 +S3150700119C206D61662073656E736F722076616C7550 +S315070011AC652E00004D61664D6F64652073686F751B +S315070011BC6C642072656D61696E207365742E000010 +S315070011CC436865636B696E6720426C656E64207253 +S315070011DC6174696F00000000436865636B696E672D +S315070011EC2053442076616C75650000005265644C8B +S315070011FC696E653A20416C6C6F77206675656C2055 +S3150700120C6174205265644C696E65437574202D2094 +S3150700121C312052504D2C206D6F76696E672C2063EA +S3150700122C6C75746368206E6F742070726573736562 +S3150700123C6420214675656C43757400005265644CD1 +S3150700124C696E653A20416C6C6F77206675656C2004 +S3150700125C6174205265644C696E65437574202D2044 +S3150700126C312052504D2C206D6F76696E672C20639A +S3150700127C6C75746368206E6F742070726573736512 +S3150700128C642C20214C43456E67616765640000003A +S3150700129C5265644C696E653A2043757420667565AC +S315070012AC6C206174205265644C696E6543757420B5 +S315070012BC2B20312052504D2C206D6F76696E672C82 +S315070012CC20636C75746368206E6F74207072657317 +S315070012DC736564005265644C696E653A2052657392 +S315070012EC756D65206675656C206174205265644C56 +S315070012FC696E65526573756D65202D2031205250C8 +S3150700130C4D2C206D6F76696E672C20636C75746334 +S3150700131C68206E6F742070726573736564000000C5 +S3150700132C4E6F726D616C2073746F707065643A20C2 +S3150700133C416C6C6F77206675656C206174204C6107 +S3150700134C756E6368436F6E74726F6C437574202B7E +S3150700135C20313030302052504D2C2073746F707002 +S3150700136C65642C206E6F20636C75746368000000CF +S3150700137C4E6F726D616C206D6F76696E673A2041A0 +S3150700138C6C6C6F77206675656C206174204C617583 +S3150700139C6E6368436F6E74726F6C437574202B2083 +S315070013AC313030302052504D2C206D6F76696E6778 +S315070013BC2C206E6F20636C75746368004C61756EB8 +S315070013CC636820436F6E74726F6C20546573742058 +S315070013DC33204661696C65643A207374616E647375 +S315070013EC74696C6C2C20636C7574636820707265F9 +S315070013FC73736564000000004C61756E6368204367 +S3150700140C6F6E74726F6C205465737420342046614A +S3150700141C696C65643A2030206D70682C2031303049 +S3150700142C207468722C2072706D2062656C6F772041 +S3150700143C6C696D69740000004C61756E63682043B6 +S3150700144C6F6E74726F6C3A20437574206675656C93 +S3150700145C206174204C61756E6368436F6E74726F8E +S3150700146C6C437574202B20312052504D2C207374ED +S3150700147C616E647374696C6C2C20636C7574636829 +S3150700148C2070726573736564000000004C61756E9D +S3150700149C636820436F6E74726F6C3A20526573756E +S315070014AC6D65206675656C206174204C61756E637D +S315070014BC68436F6E74726F6C526573756D65202D0C +S315070014CC20312052504D2C207374616E64737469ED +S315070014DC6C6C2C20636C75746368207072657373FF +S315070014EC65640000466C617420466F6F7420536800 +S315070014FC696674696E673A20526573756D65206601 +S3150700150C75656C20617420466C6174466F6F7453F5 +S3150700151C68696674526573756D65202D2031205286 +S3150700152C504D2C206D6F76696E672C20636C757425 +S3150700153C636820707265737365640000466C61742A +S3150700154C20466F6F74205368696674696E673A2014 +S3150700155C437574206675656C20617420466C6174DE +S3150700156C466F6F745368696674437574202B203104 +S3150700157C2052504D2C206D6F76696E672C20636C4C +S3150700158C7574636820707265737365640000000078 +S3150700159C46465320726573756D65207768656E20B0 +S315070015AC72706D2064726F70730000005768656EF9 +S315070015BC20726576206C696D697420666C6167208C +S315070015CC6973207365742C206E6F206F746865724F +S315070015DC206269747320617265207365742E00002E +S315070015EC5768656E20726576206C696D697420661E +S315070015FC6C616720697320636C65617265642C2066 +S3150700160C6E6F206F746865722062697473206172DD +S3150700161C6520636C65617265642E00005265644CC7 +S3150700162C696E65206375742F726573756D652073A6 +S3150700163C616E6974792E00004C61756E6368436F31 +S3150700164C6E74726F6C206375742F726573756D6526 +S3150700165C2073616E6974792E00000000307841356D +S3150700166C41354135413500006572726F7220696EDE +S3150700167C2072616D20686F6C652100004F454D2007 +S3150700168C63656C20706F707065642C2043656C20E5 +S3150700169C5369676E616C2073686F756C642068613B +S315070016AC766520706F7070656420746F6F0000002C +S315070016BC4F454D2063656C20706F707065642C20E8 +S315070016CC3230206379636C6573206C617465722C98 +S315070016DC2043656C205369676E616C2073686F7560 +S315070016EC6C642073746179206F6E00004F454D2032 +S315070016FC63656C20706F707065642C2032312063C3 +S3150700170C79636C6573206C617465722C2043656C08 +S3150700171C205369676E616C2073686F756C642073F0 +S3150700172C746179206F6E00004F454D2063656C2000 +S3150700173C6973206E6F7720676F6E652C2043656C17 +S3150700174C207369676E616C2073686F756C642068AB +S3150700175C6176652064726F707065640062656C6F84 +S3150700176C772066626B63206C6F61642074687265A0 +S3150700177C73686F6C6420666F722063656C2C206EC1 +S3150700178C6F206C6967687421000000006B6E6F63CD +S3150700179C6B696E672120466C61736820636F756E83 +S315070017AC7465722073686F756C6420696E69740052 +S315070017BC6B6E6F636B696E672120466C617368206D +S315070017CC737065656420636F756E746572207368D4 +S315070017DC6F756C6420696E69740000006B6E6F63BD +S315070017EC6B696E672120466C6173682073686F7529 +S315070017FC6C64207374617274000000006B6E6F6307 +S3150700180C6B696E6720676F6E652120466C6173681E +S3150700181C2073686F756C64207A65726F0000000020 +S3150700182C6B6E6F636B696E6720676F6E65212046FB +S3150700183C6C61736820636F756E7465722073686F5D +S3110700184C756C64207A65726F000000005E +S30907001858123456786B +S3090700185CFFFF819468 +S3150E0050002FE67FFC6EF361E371C4114F00097E0437 +S3150E0050106FE36EF6000B00092FE64F227FF46EF358 +S3150E00502061E371CC114E61E371CC115D61E371CC1C +S3150E005030511E21188F11000961E371CCE200112F68 +S3150E0050409111717C62E372CC522F112161E371CC06 +S3150E005050511D6413D104410B00097E0C6FE34F26DC +S3150E0050606EF6000B000981200E0050002FE64F222F +S3150E0050706EF3D105E4006513D104410B00096FE30D +S3150E0050804F266EF6000B00090700100C0E00501886 +S3150E0050902FE67FF86EF361E371C89220112F61E35C +S3150E0050A071C8921D112EA00C000961E371C8511F23 +S3150E0050B0E200212261E371C862E372C8522F7204C4 +S3150E0050C0112F62E372C861E371C8522F511E32125C +S3150E0050D08FEB00097E086FE36EF6000B0009812048 +S3150E0050E0BFFF2FE67FF86EF361E37104F14A61E3C9 +S3150E0050F0F15A61E37104F118C711F208F12261E366 +S3150E005100F218F2158F030009E100A00F000961E302 +S3150E0051107104F118C70BF208F21261E3F118F215D9 +S3150E0051208F030009E100A0010009E101415AF10DCA +S3150E005130F11D005A7E086FE36EF6000B000900099A +S3150E0051403F8020C53F7FBE772F862FE64F227FF406 +S3150E0051506EF391FE7115E2002120D17F410B0009FD +S3150E005160D17E410B000961E37108C77DF109F11A81 +S3150E00517061E37104F108F11A91EB71156110611C6E +S3150E005180601388010129611C415AF10DD176F11D7A +S3150E005190045A6513D175410B0009D175C775F1080F +S3150E0051A0F11AD175C775F108F11AD175C775F108DF +S3150E0051B0F11AD175C775F108F11AD17592CA212166 +S3150E0051C068E3D174410B0009F10CF81A62E361E34E +S3150E0051D07108F428F518D170410B0009405AF10DEB +S3150E0051E0D16EF11D045A6513D160410B000968E3B7 +S3150E0051F0D168410B0009F10CF81A62E361E37108FC +S3150E005200F428F518D164410B0009405AF10DD1640A +S3150E005210F11D045A6513D155410B0009919971156B +S3150E0052206110611C601388010129611C415AF10D40 +S3150E005230D15CF11D045A6513D14C410B00099188BE +S3150E0052407115E202212068E3D152410B0009F10CDF +S3150E005250F81A62E361E37104F428F518D14E410B96 +S3150E0052600009405AF10DD150F11D045A6513D13F74 +S3150E005270410B0009916D71156110611C6013880256 +S3150E0052800129611C415AF10DD148F11D045A6513CD +S3150E005290D136410B0009915C7115E203212068E3BA +S3150E0052A0D13C410B0009F10CF81A62E361E3710877 +S3150E0052B0F428F518D138410B0009405AF10DD13CAE +S3150E0052C0F11D045A6513D129410B0009914171153F +S3150E0052D06110611C601388030129611C415AF10D8E +S3150E0052E0D134F11D045A6513D120410B0009D12288 +S3150E0052F0C724F108F11A68E3D126410B0009F10C17 +S3150E005300F81A9126712CF218C72BF108F42CF51CFD +S3150E005310D121410B0009405AF10DD128F11D045A35 +S3150E0053206513D112410B00099113711CF218C72493 +S3150E005330F108F42CF51CD118410B0009405AF10D59 +S3150E005340D120F11D045A6513D108410B0009A03B6B +S3150E00535000098120400000090E005090000E250025 +S3150E005360405E147B406EC101070010340E005018CB +S3150E005370FFFF5548447A0000FFFF52A44386757618 +S3150E005380FFFF4BE8442F0000FFFF4BAC41700000BF +S3150E005390FFFF4B06000E1F080E0050E20700106CB2 +S3150E0053A00700109C070010CC070010F807001130FC +S3150E0053B007001164070011B03F0E38E3070011CC49 +S3150E0053C041386E0F070011E461E37108F118C71A30 +S3150E0053D0F209F122F208F12061E3F418F51CD11856 +S3150E0053E0410B0009405AF10DD116F11D045A6513F1 +S3150E0053F0D115410B0009911E71156110611C6013C8 +S3150E00540088030129611C415AF10DD110F11D045A70 +S3150E0054106513D10D410B0009D10DC70EF108F11A16 +S3150E00542091097115E20121207E0C6FE34F266EF66F +S3150E00543068F6000B000981203EE38E3A40CCEC1054 +S3150E0054400E0050E2070011640E005018070011B04E +S3150E005450FFFF52A4438675762FE67FFC6EF361E35B +S3150E00546071C4114F61E371C4511F21188F0A0009CF +S3150E005470D10BD20B6220632CE2BF2239622C212083 +S3150E005480A0080009D106D2066220622CE340223B18 +S3150E005490622C21207E046FE36EF6000B00090009D4 +S3150E0054A0FFFF551F2FE67FFC6EF361E371C4114FAC +S3150E0054B061E371C4511F21188F0A0009D10BD20B5B +S3150E0054C06220632CE2F72239622C2120A008000903 +S3150E0054D0D106D2066220622CE308223B622C2120E2 +S3150E0054E07E046FE36EF6000B00090009FFFF6B28C2 +S3150E0054F02FE67FFC6EF3D10E6110631C61E3710320 +S3150E005500E2802239212061E371036110611C2118AA +S3150E0055108F06000961E371036110611CA001000989 +S3150E005520E10160137E046FE36EF6000B00090009BD +S3150E005530FFFF5F782FE64F227FE86EF361E3711768 +S3150E005540214061E371D8115E61E371D8116D61E39B +S3150E0055507108F14A61E37104F15A61E3F16AD115FA +S3150E005560410B0009D114410B000961E371D8511E9C +S3150E0055706413D112410B000961E371D8511D6413F6 +S3150E005580D10F410B0009D10F62E3F128F11AD10EAA +S3150E00559062E37204F128F11AD10C62E372176220EB +S3150E0055A02120D10B410B00097E186FE34F266EF6B4 +S3150E0055B0000B00090E005090000E25000E0054A49C +S3150E0055C00E005458FFFF5548FFFF5540FFFF5F780A +S3150E0055D0000E21342FE64F227FFC6EF3D151F218C6 +S3150E0055E0F19DF32CF311F13CC74FF309F208E400D9 +S3150E0055F0E500E600F43CF52CF61CD14D410B0009F6 +S3150E005600D14C410B00096103611C21180129611C53 +S3150E005610415AF10DD148F11D045A6513D147410B7C +S3150E0056200009917D7137611021180129611C415ABB +S3150E005630F10DD143F11D045A6513D140410B0009FA +S3150E005640D138F218F19DF120C737F308C73DF2089D +S3150E005650E400E500E600F43CF52CF61CD134410BD3 +S3150E0056600009D134410B00096103611C21188D0913 +S3150E005670000991557137611021188F030009E10158 +S3150E005680A0010009E100D23064136523D12B410B32 +S3150E0056900009D12ED223F228D22DF128F211F19D36 +S3150E0056A0F32CF311F13CF11AD12A410B0009D12149 +S3150E0056B0410B00096103611C21188F090009912F06 +S3150E0056C07137611021188F030009E101A00100094D +S3150E0056D0E100D22164136523D118410B0009D11FB5 +S3150E0056E0F118C71FF209F120F308F28DE400E50068 +S3150E0056F0E600F43CF52CF61CD10D410B0009D10D3C +S3150E005700410B00096103611C21188F2D00099107B9 +S3150E0057107137611021188F270009E101A0250009B4 +S3150E00572081200009000E1CD8424800004198000056 +S3150E0057300E0055340E0054F0070011F80E005018E6 +S3150E00574007001248419000000700129CFFFF5548C3 +S3150E005750000E1CDC000E2134070012E0000E1CF8B1 +S3150E005760447A000042C80000E100D23E641365236D +S3150E005770D13D410B0009D13DF118C73DF209F1208B +S3150E005780F309F208E400E500E600F43CF52CF61CFD +S3150E005790D13A410B0009D13A410B00096103611C54 +S3150E0057A021188F090009915B7137611021188F033B +S3150E0057B00009E101A0010009E100D232641365235C +S3150E0057C0D129410B0009D129F218F19DF32CF311C1 +S3150E0057D0F13CC72DF308F28DE400E500E601F43C3A +S3150E0057E0F52CF61CD125410B0009D125410B0009DC +S3150E0057F06103611C21188F090009913171376110FF +S3150E00580021188F030009E101A0010009E100D21F52 +S3150E00581064136523D114410B0009D114F218F19DBE +S3150E005820F32CF311F13CC713F308F28DE400E500F7 +S3150E005830E601F43CF52CF61CD110410B0009D110F3 +S3150E005840410B00096103611C21188F210009910784 +S3150E0058507137611021188D1B0009E101A01900098D +S3150E005860812000090700132C0E005018000E1CF89C +S3150E005870447A000042C80000424800000E0055342B +S3150E0058800E0054F00700137C41200000070013C8D9 +S3150E005890E100D24E64136523D14D410B0009D14D63 +S3150E0058A0F218F19DF120C74CF308F28DE400E500E5 +S3150E0058B0E601F43CF52CF61CD148410B0009D14803 +S3150E0058C0410B00096103611C21188D090009917CA9 +S3150E0058D07137611021188D030009E101A00100093D +S3150E0058E0E100D24064136523D139410B0009D13E44 +S3150E0058F0D238F228F19DF32CF311F13CF11AD13B7B +S3150E005900410B0009D136410B00096103611C2118B8 +S3150E0059108D09000991597137611021188D030009FF +S3150E005920E101A0010009E100D23164136523D128FB +S3150E005930410B0009D12CD227F228D22EF128F211D2 +S3150E005940F19DF42CF411F14CF11AD128410B0009FA +S3150E005950D123410B00096103611C21188D09000931 +S3150E00596091337137611021188D030009E101A001F1 +S3150E0059700009E100D21E64136523D115410B0009FF +S3150E005980D11DF218F19DF32CF310D11CF118C71C82 +S3150E005990F208F121F28DE400E500E601F43CF52C67 +S3150E0059A0F61CD10E410B0009D10D410B0009610306 +S3150E0059B0611C21188D260009910771376110211877 +S3150E0059C08D200009E101A01E0009812007001404A4 +S3150E0059D00E005018000E1CF842C800000E0055347A +S3150E0059E00E0054F007001444FFFF5548000E2134F4 +S3150E0059F007001498000E1CFC000E1D00000E1CD88D +S3150E005A0043480000E100D24164136523D140410BA7 +S3150E005A100009D140D23FF128C73FF208F121F11A11 +S3150E005A20D13E410B0009D13E410B00096103611CB9 +S3150E005A3021188F09000991677137611021188F039C +S3150E005A400009E101A0010009E100D23064136523CB +S3150E005A50D12F410B0009D12FC732F108F11AD132DD +S3150E005A60C732F108F11AD132924E7254F128C7316B +S3150E005A70F208F121F11AE400D12F410B0009D127CA +S3150E005A80410B0009E401D12C410B0009D123410B36 +S3150E005A900009D123410B00096103611C21188F09EE +S3150E005AA0000991317137611021188F030009E10148 +S3150E005AB0A0010009E100D22164136523D114410B24 +S3150E005AC00009D11B92207260F128C71DF208F12041 +S3150E005AD0F11AD110D21BF228F19DF120F11AD10F35 +S3150E005AE0410B0009D10E410B00096103611C2118FF +S3150E005AF08D2A0009910871386210E10232108F2347 +S3150E005B000009E101A021000981200009070014986F +S3150E005B100E005018FFFF52C841200000000E21341F +S3150E005B200E0054F041A00000FFFF55404248000011 +S3150E005B30FFFF554842C800000E005458070014F0E7 +S3150E005B4043FA0000000E1D04E100D22564136523FE +S3150E005B50D124410B0009D12492407244F228F19DC2 +S3150E005B60F32CF311F13CF11AD120410B0009D1208F +S3150E005B70410B00096103611C21188F090009912D43 +S3150E005B807138611021188F030009E101A001000987 +S3150E005B90E100D21864136523D112410B0009D1120C +S3150E005BA0921C7260F128C714F208F120F11AD10F77 +S3150E005BB0410B0009D10D410B0009D10D410B000916 +S3150E005BC06103611C21188D19000991077138611046 +S3150E005BD021188D130009E101A01100098120000989 +S3150E005BE0070015480E005018FFFF5548000E2134C9 +S3150E005BF00E0054F00700159C43FA0000E100D25E39 +S3150E005C0064136523D15D410B0009D15DD25DF22887 +S3150E005C10F19DF32CF311F13CF11AD15BC75BF10840 +S3150E005C20F11AE401D15A410B0009D15A410B000970 +S3150E005C30D158410B0009D158410B00096103611C73 +S3150E005C4021180129611C415AF10DD154F11D045A36 +S3150E005C506513D14A410B0009D149C751F108F11A12 +S3150E005C60D150C751F108F11AD147F18DF11AE4015D +S3150E005C70D147410B0009E400D14C410B0009D14C30 +S3150E005C80E2002120D143410B0009D24961E37103A1 +S3150E005C906220212061E371036110621C916A321049 +S3150E005CA00129611C415AF10DD142F11D045A6513A9 +S3150E005CB0D132410B0009D13BC73FF108F11AD1325F +S3150E005CC0F18DF11AE400D132410B0009D138E2FF11 +S3150E005CD02120D130410B0009D1356110621C61E3E0 +S3150E005CE071036227212061E371036110621C9141E9 +S3150E005CF032100129611C415AF10DD130F11D045AA1 +S3150E005D006513D11E410B000991357148F218913277 +S3150E005D107148F318912F714CF118F43CF411F14CB3 +S3150E005D20F2150129611C415AF10DD125F11D045AB6 +S3150E005D306513D112410B0009911D7154F218911A77 +S3150E005D407154F31891177158F118F43CF411F14C83 +S3150E005D50F2150129611C415AF10DD11AF11D045A91 +S3150E005D606513D106410B00097E046FE34F266EF6CE +S3150E005D70000B000900808120070015480E00501800 +S3150E005D80FFFF52C8000E1D04FFFF5540419800004C +S3150E005D900E005458000E21340E0054F0070014F075 +S3150E005DA042C80000FFFF554845BB80000E0054A4B4 +S3150E005DB0FFFF5F78070015B8447A0000070015EC60 +S3150E005DC007001628070016442FE64F227FFC6EF3B7 +S3150E005DD061E371C4D206112F61E371C4511F410BE9 +S3150E005DE000097E046FE34F266EF6000B00090009CC +S3150E005DF00000FC902FE64F226EF3D10A410B0009EC +S3150E005E00D109410B0009D109410B0009D108410BFB +S3150E005E100009D108410B00096FE34F266EF6000B01 +S3150E005E2000090009000E242C0E005F700E0055D4DA +S3150E005E300E0051480E005E382FE64F227FF86EF3A5 +S3150E005E4061E371C8921F112F61E371C8921C112E66 +S3150E005E5062E372C861E371C8522F511E32128D066B +S3150E005E600009D10AE4006513D109410B0009D109D5 +S3150E005E70410B0009D108410B00097E086FE34F263E +S3150E005E806EF6000B0009B40081A400090700167413 +S3150E005E900E005018000E1F080E005DC82FE66EF39A +S3150E005EA000090009D113C714F108F11AD113C7144A +S3150E005EB0F108F11AD113D2136220622CE340223B71 +S3150E005EC0622C2120D110D2106220622CE07F220992 +S3150E005ED0622C2120D10DC70EF108F11AD10DC70E75 +S3150E005EE0F108F11AD10D920421216FE36EF6000B23 +S3150E005EF000094CCCFFFF5548447A0000FFFF554081 +S3150E005F0041400000FFFF551FFFFF5F78FFFF52A4C1 +S3150E005F1043867576FFFF4BE8442F0000FFFF4B06C6 +S3150E005F202FE64F227FF86EF361E371C8114E61E3DF +S3150E005F3071C8E200112FA00A0009D10C410B00090D +S3150E005F4061E371C862E372C8522F7201112F62E3C8 +S3150E005F5072C861E371C8522F511E32138FED0009BC +S3150E005F607E086FE34F266EF6000B0009000E281C06 +S3150E005F702FE64F226EF3D184410B0009D183E20145 +S3150E005F80212091FF7174E2002120D181F18DF11A49 +S3150E005F90D180E2002120D180D280F128C780F2087C +S3150E005FA0F120F11AD17FD280F128C77DF208F121B6 +S3150E005FB0F11AD17EE2002120D17DF19DF11A91E1F7 +S3150E005FC07175E200212091DD717BE200212091D9CD +S3150E005FD07179E2002120D177410B000991D27174BB +S3150E005FE06110611C601388010129611C415AF10D73 +S3150E005FF0D171F11D045A6513D170410B0009E414D9 +S3150E006000D16F410B000991BD71746110611C601353 +S3150E00601088010129611C415AF10DD16AF11D045AFC +S3150E0060206513D166410B0009D162410B000991A996 +S3150E00603071746110611C601388010129611C415A3B +S3150E006040F10DD161F11D045A6513D15C410B0009A6 +S3150E006050D14EE2002120D157410B00099192717465 +S3150E0060606110611C21180129611C415AF10DD1578D +S3150E006070F11D045A6513D151410B0009D154F19DFE +S3150E006080F11AD143C753F108F11AD14A410B00094F +S3150E006090917871746110611C21180129611C415A95 +S3150E0060A0F10DD14DF11D045A6513D144410B000972 +S3150E0060B0D147C74AF108F11AD13E410B0009916149 +S3150E0060C0717B6110611C2118E1FF611A611C415A36 +S3150E0060D0F10DD143F11D045A6513D138410B000958 +S3150E0060E0915071796110611C2118E1FF611A611CD2 +S3150E0060F0415AF10DD13BF11D045A6513D12F410BB7 +S3150E0061000009913F71786110611C2118E1FF611A37 +S3150E006110611C415AF10DD133F11D045A6513D12775 +S3150E006120410B0009912E71746110611C6013880178 +S3150E0061300129611C415AF10DD12BF11D045A65132B +S3150E006140D11E410B0009D122F19DF11AD110F18D0C +S3150E006150F11A91186413D11A410B00099112717438 +S3150E0061606110611C21180129611C415AF10DD11FC4 +S3150E006170F11D045A6513D111410B00099102717B71 +S3150E006180A0360009812000C8000E2500FFFF7D8E77 +S3150E006190FFFF6D94FFFF551FFFFF4E70000E1D484B +S3150E0061A040A00000FFFF4BBC000E1D28FFFF6B2812 +S3150E0061B0FFFF2528000E281C070016880E00501813 +S3150E0061C00E005F20070016BC070016F807001734EE +S3150E0061D0FFFF543CBF8000000700176840400000D8 +S3150E0061E007001798070017BC070017E807001808DE +S3150E0061F06110611C21180129611C415AF10DD1064D +S3150E006200F11D045A6513D105410B00096FE34F26A4 +S3150E0062106EF6000B000900090700182C0E00501828 +S3158000100012340000000000091234000100002000A4 +S315800010100000000844325744373031430000000056 +S31580001020000000004646464646464646000000000A +S31580001030000000001234000F000E140044325744A2 +S31580001040373031432E4D6552704D6F442E466C615C +S3158000105073682E54657374696E672E7631342E34B8 +S315800010602E392E3138353300000000000000000094 +S3158000107000000000000000000000000000000000EA +S315800010801234000B000C9AF40000000A33433441FA +S315800010903338343130360000000000000000000094 +S315800010A01234000C464646464646464646460000AC +S315800010B00000000000000000123400084D657270C8 +S315800010C0000000000000000000000000123400094B +S315800010D054657374696E67000000000000000000AC +S315800010E000000000000000001234000D537065659A +S315800010F0642044656E73697479206C6F61642063C3 +S31580001100616C63756C6174696F6E20776974682031 +S315800011104D414620626C656E64696E675F5F4C61A7 +S31580001120756E636820636F6E74726F6C20616E6417 +S3158000113020666C617420666F6F742073686966744C +S31580001140696E672028737461746963206F72206783 +S315800011506561722062617365642063616C63756C1E +S315800011606174696F6E295F5F43454C20466C61737D +S3158000117068202846424B432C204547542066726F90 +S315800011806D2046726F6E74204F322072657369735C +S3158000119074616E63652C20436F6F6C616E7420542E +S315800011A0656D70295F5F0000000000000000000090 +S315800011B012340003000128FC00026000000E269015 +S315800011C0526576204C696D697420537562726F75AD +S315800011D074696E6520486F6F6B00000012340003DF +S315800011E00000D1FC0000FC90000E24044D656D6F5C +S315800011F0727920526573657420537562726F757447 +S31580001200696E6520486F6F6B000000001234000322 +S3158000121000007CA40000209C000E1F4C5370656566 +S31580001220642044656E73697479204D6166205375B8 +S3158000123062726F7574696E6520486F6F6B0000000F +S3158000124012340003000543D0FFFF7D8EFFFF81949B +S3158000125043454C205369676E616C20486F6F6B0005 +S315800012601234000300012938000237DC000E2644C0 +S315800012704D61696E20537562726F7574696E6520F3 +S31580001280486F6F6B20504F4C4600000012340004AC +S31580001290000E1400000E2A94526F6D20486F6C6504 +S315800012A020436F64652050617463680000090009FB +S309800012B000090009A2 +S70500E000001A +S30DFF0020004432574437303143E7 +S30AFF0C9AF43C4A38410657 +S309FF0128FC0002600070 +S309FF00D1FC0000FC909E +S309FF007CA40000209C1B +S309FF0543D0FFFF7D8ED6 +S309FF012938000237DC80 +S315FF0E1400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +S315FF0E1410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +S315FF0E1420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +S315FF0E1430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315FF0E1440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315FF0E1450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315FF0E1460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315FF0E1470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315FF0E1480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315FF0E1490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315FF0E14A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315FF0E14B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315FF0E14C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315FF0E14D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315FF0E14E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315FF0E14F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +S315FF0E1500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 +S315FF0E1510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 +S315FF0E1520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +S315FF0E1530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +S315FF0E1540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +S315FF0E1550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +S315FF0E1560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 +S315FF0E1570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 +S315FF0E1580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 +S315FF0E1590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +S315FF0E15A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 +S315FF0E15B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +S315FF0E15C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +S315FF0E15D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +S315FF0E15E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 +S315FF0E15F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S315FF0E1600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +S315FF0E1610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +S315FF0E1620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +S315FF0E1630FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +S315FF0E1640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +S315FF0E1650FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 +S315FF0E1660FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +S315FF0E1670FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 +S315FF0E1680FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315FF0E1690FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315FF0E16A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315FF0E16B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315FF0E16C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315FF0E16D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315FF0E16E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 +S315FF0E16F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +S315FF0E1700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 +S315FF0E1710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 +S315FF0E1720FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +S315FF0E1730FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 +S315FF0E1740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +S315FF0E1750FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S315FF0E1760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +S315FF0E1770FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S315FF0E1780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315FF0E1790FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315FF0E17A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315FF0E17B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315FF0E17C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315FF0E17D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315FF0E17E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +S315FF0E17F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S315FF0E1800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 +S315FF0E1810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF0E1820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S315FF0E1830FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S315FF0E1840FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +S315FF0E1850FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S315FF0E1860FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +S315FF0E1870FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S315FF0E1880FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +S315FF0E1890FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S315FF0E18A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315FF0E18B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315FF0E18C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315FF0E18D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315FF0E18E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +S315FF0E18F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S315FF0E1900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 +S315FF0E1910FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S315FF0E1920FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 +S315FF0E1930FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S315FF0E1940FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 +S315FF0E1950FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S315FF0E1960FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 +S315FF0E1970FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S315FF0E1980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 +S315FF0E1990FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S315FF0E19A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 +S315FF0E19B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S315FF0E19C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +S315FF0E19D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S315FF0E19E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 +S315FF0E19F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S315FF0E1A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 +S315FF0E1A10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S315FF0E1A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 +S315FF0E1A30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S315FF0E1A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 +S315FF0E1A50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S315FF0E1A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 +S315FF0E1A70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315FF0E1A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315FF0E1A90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S315FF0E1AA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 +S315FF0E1AB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S315FF0E1AC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 +S315FF0E1AD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S315FF0E1AE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3 +S315FF0E1AF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S315FF0E1B00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +S315FF0E1B10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S315FF0E1B20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2 +S315FF0E1B30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S315FF0E1B40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 +S315FF0E1B50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S315FF0E1B60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72 +S315FF0E1B70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S315FF0E1B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 +S315FF0E1B90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S315FF0E1BA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 +S315FF0E1BB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S315FF0E1BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +S315FF0E1BD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S315FF0E1BE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 +S315FF0E1BF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S315FF0E1C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 +S315FF0E1C10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S315FF0E1C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 +S315FF0E1C30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S315FF0E1C40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91 +S315FF0E1C50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S315FF0E1C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71 +S315FF0E1C70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S315FF0E1C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51 +S315FF0E1C90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S315FF0E1CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31 +S315FF0E1CB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S315FF0E1CC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 +S315FF0E1CD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S315FF0E1CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 +S315FF0E1CF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S315FF0E1D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 +S315FF0E1D10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S315FF0E1D20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +S315FF0E1D30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S315FF0E1D40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +S315FF0E1D50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S315FF0E1D60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 +S315FF0E1D70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S315FF0E1D80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 +S315FF0E1D90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S315FF0E1DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 +S315FF0E1DB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S315FF0E1DC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 +S315FF0E1DD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S315FF0E1DE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 +S315FF0E1DF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S315FF0E1E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF +S315FF0E1E10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S315FF0E1E20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF +S315FF0E1E30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S315FF0E1E40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F +S315FF0E1E50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S315FF0E1E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F +S315FF0E1E70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S315FF0E1E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F +S315FF0E1E90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S315FF0E1EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F +S315FF0E1EB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S315FF0E1EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F +S315FF0E1ED0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S315FF0E1EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF +S315FF0E1EF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S315FF0E1F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE +S315FF0E1F10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S315FF0E1F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE +S315FF0E1F30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S315FF0E1F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E +S315FF0E1F50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S315FF0E1F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E +S315FF0E1F70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S315FF0E1F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E +S315FF0E1F90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S315FF0E1FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E +S315FF0E1FB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S315FF0E1FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E +S315FF0E1FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S315FF0E1FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE +S315FF0E1FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S315FF0E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD +S315FF0E2010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +S315FF0E2020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD +S315FF0E2030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D +S315FF0E2040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D +S315FF0E2050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D +S315FF0E2060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D +S315FF0E2070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D +S315FF0E2080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D +S315FF0E2090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D +S315FF0E20A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D +S315FF0E20B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D +S315FF0E20C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D +S315FF0E20D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +S315FF0E20E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED +S315FF0E20F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +S315FF0E2100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +S315FF0E2110FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +S315FF0E2120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +S315FF0E2130FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +S315FF0E2140FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C +S315FF0E2150FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +S315FF0E2160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C +S315FF0E2170FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +S315FF0E2180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C +S315FF0E2190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C +S315FF0E21A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C +S315FF0E21B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C +S315FF0E21C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C +S315FF0E21D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +S315FF0E21E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +S315FF0E21F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC +S315FF0E2200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB +S315FF0E2210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB +S315FF0E2220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB +S315FF0E2230FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B +S315FF0E2240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B +S315FF0E2250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B +S315FF0E2260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B +S315FF0E2270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B +S315FF0E2280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B +S315FF0E2290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B +S315FF0E22A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +S315FF0E22B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +S315FF0E22C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +S315FF0E22D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB +S315FF0E22E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB +S315FF0E22F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB +S315FF0E2300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +S315FF0E2310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +S315FF0E2320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +S315FF0E2330FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A +S315FF0E2340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A +S315FF0E2350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A +S315FF0E2360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A +S315FF0E2370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +S315FF0E2380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +S315FF0E2390FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +S315FF0E23A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +S315FF0E23B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A +S315FF0E23C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +S315FF0E23D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +S315FF0E23E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +S315FF0E23F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +S315FF0E2400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +S315FF0E2410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +S315FF0E2420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315FF0E2430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315FF0E2440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315FF0E2450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315FF0E2460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315FF0E2470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315FF0E2480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315FF0E2490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315FF0E24A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315FF0E24B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315FF0E24C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315FF0E24D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315FF0E24E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +S315FF0E24F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +S315FF0E2500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 +S315FF0E2510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +S315FF0E2520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +S315FF0E2530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +S315FF0E2540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +S315FF0E2550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 +S315FF0E2560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 +S315FF0E2570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 +S315FF0E2580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +S315FF0E2590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 +S315FF0E25A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +S315FF0E25B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +S315FF0E25C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +S315FF0E25D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 +S315FF0E25E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S315FF0E25F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 +S315FF0E2600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +S315FF0E2610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +S315FF0E2620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +S315FF0E2630FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +S315FF0E2640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 +S315FF0E2650FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +S315FF0E2660FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 +S315FF0E2670FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315FF0E2680FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315FF0E2690FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315FF0E26A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315FF0E26B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315FF0E26C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315FF0E26D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 +S315FF0E26E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +S315FF0E26F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +S315FF0E2700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 +S315FF0E2710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +S315FF0E2720FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 +S315FF0E2730FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +S315FF0E2740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S315FF0E2750FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +S315FF0E2760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S315FF0E2770FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315FF0E2780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315FF0E2790FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315FF0E27A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315FF0E27B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315FF0E27C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315FF0E27D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +S315FF0E27E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S315FF0E27F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 +S315FF0E2800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF0E2810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S315FF0E2820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S315FF0E2830FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +S315FF0E2840FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S315FF0E2850FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +S315FF0E2860FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S315FF0E2870FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +S315FF0E2880FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S315FF0E2890FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315FF0E28A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315FF0E28B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315FF0E28C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315FF0E28D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +S315FF0E28E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S315FF0E28F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 +S315FF0E2900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S315FF0E2910FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 +S315FF0E2920FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S315FF0E2930FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 +S315FF0E2940FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S315FF0E2950FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 +S315FF0E2960FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S315FF0E2970FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 +S315FF0E2980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S315FF0E2990FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 +S315FF0E29A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S315FF0E29B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +S315FF0E29C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S315FF0E29D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 +S315FF0E29E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S315FF0E29F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 +S315FF0E2A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S315FF0E2A10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 +S315FF0E2A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S315FF0E2A30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 +S315FF0E2A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S315FF0E2A50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 +S315FF0E2A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315FF0E2A70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315FF0E2A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S30AFF0E2A90FFFFFFFFFF33 From da5bc9a95a6b62912d9e2e8634478cdd38e1b0ec Mon Sep 17 00:00:00 2001 From: Merp Date: Mon, 12 May 2014 20:12:11 -0400 Subject: [PATCH 20/24] Added header, config, and linker script for A2ZJ500F. --- MerpMod/Targets/A2ZJ500F.h | 135 +++++++++++++++++++++++++++++++ MerpMod/Targets/A2ZJ500F.txt | 29 +++++++ MerpMod/Targets/A2ZJ500FConfig.h | 17 ++++ 3 files changed, 181 insertions(+) create mode 100644 MerpMod/Targets/A2ZJ500F.h create mode 100644 MerpMod/Targets/A2ZJ500F.txt create mode 100644 MerpMod/Targets/A2ZJ500FConfig.h diff --git a/MerpMod/Targets/A2ZJ500F.h b/MerpMod/Targets/A2ZJ500F.h new file mode 100644 index 0000000..3fcc6c7 --- /dev/null +++ b/MerpMod/Targets/A2ZJ500F.h @@ -0,0 +1,135 @@ +#define MOD_DATE 14.5.10.044 + +#include "Flash.h" +#define MOD_CONFIG Flash +#define MOD_BUILD Testing +#define MOD_RELEASE 0 +#define ECU_CALIBRATION_ID A2ZJ500F +#define ECU_IDENTIFIER 3144504006 +///////////////////// +// NonSpecific Rom Info and Routines +///////////////////// + +#define dCalId (0x00002000) +#define dEcuId (0x00058934) +#define dRomHoleStart (0x0006D000) +#define pRamHoleStart (0xFFFFBE40) +#define pRamHoleEnd (0xFFFFC500) +#define sPull2DFloat (0x0000208C) +#define sPull3DFloat (0x0000211C) + +///////////////////// +// Switch Hacks +///////////////////// + + +///////////////////// +// Rev Limit Hack +///////////////////// + +#define hRevLimDelete (0x000100C4) +#define sRevLimStart (0x00021668) +#define sRevLimEnd (0x0002169E) +#define pFlagsRevLim ((unsigned char*)0xFFFFAAD0) +#define RevLimBitMask (0x80) + +///////////////////// +// Speed Density Hack +///////////////////// + +#define hMafCalc (0x000076B8) +#define sMafCalc (0x00007658) + +///////////////////// +// Injector Hack +///////////////////// + +#define dInjectorScaling ((float*)0x00052FA8) + +///////////////////// +// Cel Hacks +///////////////////// + +#define sCelTrigger (0x000436C0) +#define hCelSignal (0x000437D8) +#define pCelSignalOem ((unsigned char*)0xFFFFBACA) + +///////////////////// +// Boost Hacks +///////////////////// + + +///////////////////// +// WGDC Hacks +///////////////////// + +#define hWgdc (0x0000FCB4) +#define sWgdc (0x00012510) + +///////////////////// +// Primary Open Loop Fueling Hacks +///////////////////// + +#define pPolf4Byte (0xFFFFA994) +#define pPolfEnrich (0xFFFFA994) + +///////////////////// +// Timing Hacks +///////////////////// + +#define pBaseTiming (0xFFFFAC68) +#define pKcaIam (0xFFFFAD9C) + +///////////////////// +// Spark Cut +///////////////////// + + +///////////////////// +// Flags-Signals +///////////////////// + +#define pClutchFlags ((unsigned char*)0xFFFFA4A1) +#define ClutchBitMask ((unsigned char)0x80) + +///////////////////// +// NonSpecific Engine params +///////////////////// + +#define pFbkc4 ((float*)0xFFFFAD58) +#define pIam4 ((float*)0xFFFF83CC) +#define pEngineSpeed ((float*)0xFFFFA4D0) +#define pVehicleSpeed ((float*)0xFFFFA4C0) +#define pCoolantTemp ((float*)0xFFFF90D0) +#define pAtmoPress ((float*)0xFFFF9128) +#define pManifoldAbsolutePressure ((float*)0xFFFFA2F4) +#define pIntakeAirTemp ((float*)0xFFFF90C0) +#define pMassAirFlow ((float*)0xFFFF90FC) +#define pMafSensorVoltage ((short*)0xFFFF9026) +#define pEngineLoad ((float*)0xFFFFA41C) +#define pThrottlePlate ((float*)0xFFFFA314) +#define pCurrentGear ((unsigned char*)0xFFFFA5C5) +#define pAf1Res ((float*)0xFFFFA01C) + +///////////////////// +// OBD Experimental stuff +///////////////////// + + +///////////////////// +// New Definitions +///////////////////// + +#define dLoadSmoothingA (0x0004F808) +#define dLoadSmoothingB (0x0004F80C) +#define dLoadSmoothingFinal (0x0004F810) + +///////////////////// +// Memory Reset +///////////////////// + +#define sMemoryReset (0x0000E19C) +#define hMemoryReset (0x0000BB00) +#define pMemoryResetLimit (0xFFFFDFFB) +#define hMemoryResetLimit (0x0000E380) + diff --git a/MerpMod/Targets/A2ZJ500F.txt b/MerpMod/Targets/A2ZJ500F.txt new file mode 100644 index 0000000..4f74157 --- /dev/null +++ b/MerpMod/Targets/A2ZJ500F.txt @@ -0,0 +1,29 @@ +SECTIONS +{ + REVLIM_START 0x00021668 : AT (0x00021668) + { + *(RevLimit) + } + ROMHOLE_START 0x0006D000 : AT (0x0006D000) + { + *(RomHole_Identifier) + *(RomHole_Misc) + *(RomHole_SpeedDensityTables) + *(RomHole_RevLimTables) + *(RomHole_CelFlashTables) + *(RomHole_POLFHackTables) + *(RomHole_BoostHackTables) + *(RomHole_TimingHackTables) + *(RomHole_MapSwitchTables) + *(RomHole_ProgModeTables) + *(RomHole_PortLoggerTables) + *(RomHole_Vin) + *(RomHole_Code) + *(RomHole_Functions) + *(RomHole_RomHoleEndMarker) + } + RAMHOLE_START 0xFFFFBE40 : AT (0xFFFFBE40) + { + *(RamHole) + } +} diff --git a/MerpMod/Targets/A2ZJ500FConfig.h b/MerpMod/Targets/A2ZJ500FConfig.h new file mode 100644 index 0000000..e9f5b3c --- /dev/null +++ b/MerpMod/Targets/A2ZJ500FConfig.h @@ -0,0 +1,17 @@ + +////////////////////////////// +// OPTIONS +////////////////////////////// + +#define AUTO_TRANS 0 +#define SD_DMAP 0 + +#define ECU_IDENTIFIER_CHARS (10) +#define ECU_CALIBRATION_CHARS (8) +#define MOD_CALIBRATION_ID FFFFFFFF +#define MOD_ECU_IDENTIFIER FFFFFFFFFF + +#define EXPECTED_MAF_SENSOR 3.156494f +#define EXPECTED_MAF_SD 3.73053f + +#define ARCH_SH7055 1 \ No newline at end of file From 40b5aed76f94bb45f1d4c18f88a9627e159267d2 Mon Sep 17 00:00:00 2001 From: Merp Date: Mon, 12 May 2014 20:39:03 -0400 Subject: [PATCH 21/24] Added flash testing patch for A2ZJ500F. --- ...F.MeRpMoD.Flash.Testing.v14.5.10.044.patch | 1377 +++++++++++++++++ 1 file changed, 1377 insertions(+) create mode 100644 Release/Flash/A2ZJ500F.MeRpMoD.Flash.Testing.v14.5.10.044.patch diff --git a/Release/Flash/A2ZJ500F.MeRpMoD.Flash.Testing.v14.5.10.044.patch b/Release/Flash/A2ZJ500F.MeRpMoD.Flash.Testing.v14.5.10.044.patch new file mode 100644 index 0000000..c78ffad --- /dev/null +++ b/Release/Flash/A2ZJ500F.MeRpMoD.Flash.Testing.v14.5.10.044.patch @@ -0,0 +1,1377 @@ +S02B0000433A5C55736572735C6D657272696C6C5C4465765C4D6572704D6F645C4D6572704D6F645C466C618C +S3150000000000E00000FFFF200000E00000FFFF2000EE +S3150000001000E0003000E0003400E0003800E0003C82 +S3150000002000E0004000E0004400E0004800E0004C32 +S3110000003000E0005000E0005400E0005822 +S3150006D00041325A4A353030462E4D6552704D6F4480 +S3150006D0102E466C6173682E54657374696E672E7638 +S3150006D02031342E352E31302E30343400434F50599C +S3150006D030524947485420323031322C32303133206F +S3150006D0404D657272696C6C20412E204D796572733E +S3150006D050204949492C206D657272696C6C616D793F +S3150006D06065727369696940676D61696C2E636F6D78 +S3150006D070206D657272696C6C616D7965727369692A +S3150006D0806940676D61696C2E636F6D2E20554E4142 +S3150006D0905554484F52495A454420444953545249D7 +S3150006D0A0425554494F4E205354524943544C5920E5 +S3150006D0B050524F484942495445442E204F464652FF +S3150006D0C04F414420555345204F4E4C592E204E4F26 +S3150006D0D02057415252414E54592E20544849532006 +S3150006D0E0534F465457415245204953204C494345D0 +S3150006D0F04E53454420544F20594F552093415320B3 +S3150006D10049532C9420414E4420574954484F555470 +S3150006D11020414E592057415252414E5459204F46AE +S3150006D12020414E59204B494E442C205748455448D9 +S3150006D1304552204F52414C2C205752495454454E85 +S3150006D1402C20455850524553532C20494D504C4996 +S3150006D1504544204F52205354415455544F52592C4E +S3150006D16020494E434C5544494E4720425554204E7D +S3150006D1704F54204C494D4954454420544F2057415D +S3150006D1805252414E54494553204F46204D4552432F +S3150006D19048414E544142494C4954592C204649541B +S3150006D1A04E45535320464F52204120504152544932 +S3150006D1B043554C415220505552504F53452C204111 +S3150006D1C04E44204E4F4E494E4652494E47454D45D2 +S3150006D1D04E542E0000000000FFFF70000000000005 +S3150006D1E000000000000000000100000043889333A1 +S3150006D1F03B7DB23F401D70A442C800004348000074 +S3150006D2004396000043C8000043FA00004416000097 +S3150006D210442F00004448000044610000447A0000A0 +S3150006D220448980004496000044A2800044AF000072 +S3150006D23044BB800044C8000044D4800044E100009A +S3150006D24044ED800044FA000045034000450980008D +S3150006D250450FC0004516000043FA0000444800008A +S3150006D2604496000044C8000044FA00004516000033 +S3150006D270452F00004548000045610000457A00003C +S3150006D2804583400045898000458FC00045960000CD +S3150006D290459C400045A2800045A8C00045AF000059 +S3150006D2A045B5400045BB800045C8000045D4800012 +S3150006D2B045E1000045ED80001BEE1D1926E6286FA8 +S3150006D2C029A92A2A2ABF2B512BA92BEA2C2B2C77E4 +S3150006D2D02CC32D0F2D5B2DA72DF32E3F2E8B2ED770 +S3150006D2E02F232F6F2FBB30071CE61DDE25DE279466 +S3150006D2F0290329DC2ACC2B442BB62BF72C382C8475 +S3150006D3002CD02D1C2D682DB42E002E4C2E982EE4D6 +S3150006D3102F302F7C2FC830141F9120FF25BA2712D5 +S3150006D32028F629DC2A3D2ACF2BC72C082C522C9E00 +S3150006D3302CEA2D362D822DCE2E1A2E662EB22EFED6 +S3150006D3402F4A2F962FE2302E2108225C25BB271165 +S3150006D350290129F62A652AF62BDD2C252C792CD2CD +S3150006D3602D2B2D842DDD2E362E8F2EE82F412F9A2E +S3150006D3702FF3304C30A530FE21B322E025BB273AE9 +S3150006D38029032A102AA52B1D2C112C6B2CD22D3ADB +S3150006D3902DA22E0A2E722EDA2F422FAA3012307A9C +S3150006D3A030E2314A31B2321A222D234025CC278962 +S3150006D3B029102A2B2AF32BB22CCC2D942E582F1A51 +S3150006D3C02FDC309E3160322232E433A63468352AA9 +S3150006D3D035EC36AE37703832229623A8264127F02A +S3150006D3E029292A602B902CD32E1D3023312431A6D1 +S3150006D3F0322832AA332C33AE343034B2353435B60D +S3150006D400363836BA373C37BE2371247626DA287D77 +S3150006D410299D2AEA2C862E58306432B7337833B8DB +S3150006D42033F83438347834B834F83538357835B88E +S3150006D43035F83638367836B824A7259427F929F2EA +S3150006D4402BB72DC4302231B132F333EB346234BDFF +S3150006D4503518357335CE3629368436DF373A37955D +S3150006D46037F0384B38A639012568265D28B62AE2F4 +S3150006D4702CD92EDF30973200332733F9346234BD88 +S3150006D4803518357335CE3629368436DF373A37952D +S3150006D49037F0384B38A6390125422631289C2AC949 +S3150006D4A02CB12EC0305131CD32D0338F33F9343AC8 +S3150006D4B0347B34BC34FD353E357F35C036013642C5 +S3150006D4C0368336C43705374625102608284C2A845F +S3150006D4D02C5F2E542FE5313F324B32F7332B335325 +S3150006D4E0337B33A333CB33F3341B3443346B34935C +S3150006D4F034BB34E3350B353324D425C427FE2A251D +S3150006D5002C012DDC2F5330933185320F3236322AD9 +S3150006D510321E3212320631FA31EE31E231D631CAD4 +S3150006D52031BE31B231A6319A249E257927A829BA69 +S3150006D5302B952D562EB42FBC307E30E530F330A613 +S3150006D5403059300C2FBF2F722F252ED82E8B2E3EFC +S3150006D5502DF12DA42D572D0A245C2538274D294C4F +S3150006D5602B0E2C9C2DD52EA02F3A2F622F302EAFA8 +S3150006D5702E2E2DAD2D2C2CAB2C2A2BA92B282AA7EB +S3150006D5802A2629A5292428A3241A24F826F428D4E9 +S3150006D5902A652BCF2CD52D6E2DBA2D9F2D2C2CAB77 +S3150006D5A02C2A2BA92B282AA72A2629A5292428A3EB +S3150006D5B0282227A12720269F23CE249F2680284877 +S3150006D5C0299D2AD62B8D2BE82BDB2B8F2B1B2A9AF4 +S3150006D5D02A19299829172896281527942713269253 +S3150006D5E026112590250F248E23762452260D27B044 +S3150006D5F028DD29BC2A3E2A412A0029A3292228A257 +S3150006D600282227A2272226A2262225A2252224A2CE +S3150006D610242223A2232222A2231E2405259A271882 +S3150006D620281D28A228EF289A282527B7272926AABB +S3150006D630262B25AC252D24AE242F23B0233122B24A +S3150006D640223321B4213520B622C623B825272680C3 +S3150006D650275D278827A026F3264A25CB253024B220 +S3150006D660243423B6233822BA223C21BE214020C2C6 +S3150006D67020441FC61F481ECA226E236B24B425E803 +S3150006D680269D266E2651254C246F23DF233722BA84 +S3150006D690223D21C0214320C620491FCC1F4F1ED242 +S3150006D6A01E551DD81D5B1CDE2216231E2441255041 +S3150006D6B025DD2554250223A5229421F3213E20C2E9 +S3150006D6C020461FCA1F4E1ED21E561DDA1D5E1CE2BE +S3150006D6D01C661BEA1B6E1AF221BE22D123CE24B883 +S3150006D6E0251D243A23B321FE20B920071F451ECA4D +S3150006D6F01E4F1DD41D591CDE1C631BE81B6D1AF23A +S3150006D7001A7719FC1981190621662284235B2420BF +S3150006D710245D2320226420571EDE1E1B1D4C1CD2B0 +S3150006D7201C581BDE1B641AEA1A7019F6197C1902B4 +S3150006D7301888180E1794171A001800180006D1F83C +S3150006D7400006D2580006D2B808000000384000008D +S3150006D750000000000000000043A68000442680006A +S3150006D760447A000044A6A00044D0400044FA0000D3 +S3150006D77043E8800044034000441240004421400030 +S3150006D78044304000443F4000444E400040004000C4 +S3150006D790400040004000400040004000400040007D +S3150006D7A0400040004000400040004000400040006D +S3150006D7B0400040004000400040004000400040005D +S3150006D7C0400040004000400040004000400040004D +S3150006D7D0400040004000400040004000400040003D +S3150006D7E0400040004000400040004000400000006D +S3150006D7F0000700070006D7540006D7700006D78C28 +S3150006D80008000000388000FD0000000043E88000A4 +S3150006D8104403400044124000442140004430400086 +S3150006D820443F4000444E4000445D4000446C400086 +S3150006D830447B40000000000043FA0000447A0000E2 +S3150006D840449C400044BB800044FA0000451C40004E +S3150006D850453B8000455AC000457A0000000000326C +S3150006D86096FAFAFAFAFA0000003296FAFAFAFAFA8A +S3150006D8700000003296FAFAFAFAFA0000003296FA30 +S3150006D880FAFAFAFA0000003296FAFAFAFAFA0000FA +S3150006D890003296FAFAFAFAFA0000003296FAFAFA1C +S3150006D8A0FAFA0000003296FAFAFAFAFA000000329C +S3150006D8B096FAFAFAFAFA0000003296FAFAFAFAFA3A +S3150006D8C0000A000A0006D80C0006D8340006D85C02 +S3150006D8D0040000003B80808100000000010000007B +S3150006D8E00200000045E100004248000042480000F0 +S3150006D8F000000000457A000042200000458CA0008A +S3150006D90040A00000457A0000424800004068B4394D +S3150006D910401800003FE168733FAC49BA3F789375FB +S3150006D9203F4189374270000042A60000020000000F +S3150006D93004000000010000000800000004000000CA +S3150006D94002000000100000001000000042F0000077 +S3150006D9503F0000002000000002000000BDCCCCCD38 +S3150006D960C00666663FC000003FC0000041C8000012 +S3150006D9702FE67FFC6EF391186110631C61E3710359 +S3150006D980E2802239212061E371036110621C910D48 +S3150006D99032108F030009E101A0010009E1006013BE +S3150006D9A07E046FE36EF6000B0009A4A10080000951 +S3150006D9B02FE64F227FFC6EF361E371C49214112F9A +S3150006D9C091136111415AF10D61E371C4511FF11DA5 +S3150006D9D0045A410B00099109F118F01C7E046FE305 +S3150006D9E04F266EF6000B00097658902690FC000925 +S3150006D9F02F862FE64F227FF46EF361E371CC114E2C +S3150006DA0061E3F14A989FD152611262E372CC532EBA +S3150006DA1062E36433F428410B0009F10C618371104B +S3150006DA20F11A9890D14B6112928EF228928DF128B6 +S3150006DA30D2496423F42CF51C410B0009F10C6183D1 +S3150006DA407108F11A9182F218D144F11861E371084E +S3150006DA50F120F11A9877D13F61129275F2289276E3 +S3150006DA60F128D23F6423F42CF51C410B0009F10C76 +S3150006DA7061837114F11A91669267F228D239F128F8 +S3150006DA80F2129261F128F212925D7208F128F212F0 +S3150006DA9092597214F128F212D233F128F21262E385 +S3150006DAA07208F128F32CF313F13C710CF11A914A22 +S3150006DAB071056110621CE10232108F050009914260 +S3150006DAC0710CF118A0370009913D71056110621CB1 +S3150006DAD0E10332108F2C00099835D11E611292335C +S3150006DAE0F2289232F128D2216423F42CF51C410B3C +S3150006DAF00009F10C6183711CF11A91249223720CB0 +S3150006DB00F2289220721CF128F212921C7210F32847 +S3150006DB109219721CF128F49DF54CF511F15CF1325F +S3150006DB20F1207120F11A910E7120F118A003000957 +S3150006DB3091097110F118F01C7E0C6FE34F266EF6F4 +S3150006DB4068F6000B0009BE40A2F4A4D090C0912846 +S3150006DB500006E6140006E6100006D7380006D1ECE5 +S3150006DB600006D7F00006D1F40006D1F00006D8C0AC +S3150006DB702F862FE6FFCB4F226EF3913592347238FD +S3150006DB80F1287130F11A982F912E7138FC18912BC5 +S3150006DB90713CF218F18DF42CF51CD114410B0009D9 +S3150006DBA0F10CF2CCF211F12C61837134F11A911B4E +S3150006DBB07128E200212091177127E2002120911495 +S3150006DBC06110611C21188D080009910D920D6220C5 +S3150006DBD0622C425AF12D712CF11A6FE34F26FCF98D +S3150006DBE06EF668F6000B0009BE40A5C50006E1B054 +S3150006DBF02F862FE6FFCB4F227FF86EF3D13A410BE5 +S3150006DC0000096103611C21188F050009D137410BF4 +S3150006DC100009A07600099163F21891627160F11805 +S3150006DC20F2158F2A0009915DF218915A7150F11872 +S3150006DC30F2158F22000991547126611021188D1C48 +S3150006DC4000099150F218D12AF118F2158F1500091C +S3150006DC5091477127E200212091437128611021180E +S3150006DC608F4F0009913D7128E201212091399239A1 +S3150006DC70F128714CF11AA04400099131F11891303E +S3150006DC807140F218F2158F390009912CF218D11944 +S3150006DC90F118F2158F32000991237128E20021202E +S3150006DCA0911F7127E2012120911B921A7244F128D5 +S3150006DCB07130F11A981591147144FC189111714836 +S3150006DCC0F218F18DF42CF51CD10B410B0009F10C61 +S3150006DCD0F2CCF211F12C61837134F11AA01100090C +S3150006DCE0A4C0BE40A4D0A3140006D9700006DB70FB +S3150006DCF00006D9280006D9240006E1B0D156410B04 +S3150006DD00000991A571286210E10132108D02000901 +S3150006DD10A0840009919C71266210E10232108F4F91 +S3150006DD200009929561E37104724CF128F11A918FFC +S3150006DD30712CF118F13D015A7101D2484108312C76 +S3150006DD40F21861E3710462E37204F128F122F11A12 +S3150006DD50917E712CF118F13D015AD2404108312CC1 +S3150006DD60F118F29DF21361E3710462E37204F1287D +S3150006DD70F122F11A916C7154F21861E3710462E3AF +S3150006DD807204F128F120F11A9162713062E372048D +S3150006DD90F128F11A985C915B7130FC189158715C08 +S3150006DDA0F218F18DF42CF51CD12D410B0009F10C5E +S3150006DDB0F2CCF211F12C61837134F11AA02A000912 +S3150006DDC091467138FC1891437158F218F18DF42C6E +S3150006DDD0F51CD123410B0009F10C61E3F3CCF311D9 +S3150006DDE0F13CF11A9134713062E3F128F11A982F59 +S3150006DDF0912E715CF218F18DF42CF51CD118410B9D +S3150006DE000009F10C61E3F218F32CF311F13C61837E +S3150006DE107134F11A911C7128E20221209119F21827 +S3150006DE2091167130F118F2158D0800099111F21844 +S3150006DE30910E7138F118F2158F140009910A92099C +S3150006DE406220632CE280223B622C2120A01A000964 +S3150006DE50BE40A4D0AAD000090006DB700006D90C85 +S3150006DE600006E1B09116F11891157134F218F21503 +S3150006DE708F0800099110920F6220622CE37F2239E7 +S3150006DE80622C21207E086FE34F26FCF96EF668F6B3 +S3150006DE90000B0009A4D0BE40AAD000092FE64F22E7 +S3150006DEA07FF46EF361E371CC114F61E37104F14ABD +S3150006DEB061E3F15A61E371CC521F912432168F0D3C +S3150006DEC0000961E371CC521F911E32168D060009B8 +S3150006DED061E371CC511FF118A00E0009D10B611236 +S3150006DEE062E372CC572F63E3730462E36473F43818 +S3150006DEF0F528410B0009F10CF01C7E0C6FE34F264A +S3150006DF006EF6000B0009BE40BEB300090006E61019 +S3150006DF102FE64F227FF86EF361E371C8114F61E376 +S3150006DF20F14A61E371C8521F911A32168F0600092B +S3150006DF3061E371C8511FF118A00B0009D1096112DE +S3150006DF4062E372C8532F62E36433F428410B000977 +S3150006DF50F10CF01C7E086FE34F266EF6000B0009E7 +S3150006DF60BE4000090006E6142FE64F226EF3D106E0 +S3150006DF706112410B0009D105410B00096FE34F26DB +S3150006DF806EF6000B000900090006E6180006DF908B +S3150006DF902FE64F226EF3920D910D64236513D1067B +S3150006DFA0410B0009D105410B00096FE34F266EF6BA +S3150006DFB0000B0009BE40BEB40006E0000006E064A1 +S3150006DFC02FE64F226EF391146110621C91123210E5 +S3150006DFD08D0A0009920D910E64236513D106410B35 +S3150006DFE00009D106410B00096FE34F266EF6000BBA +S3150006DFF00009BE4000B4BEB40006E0000006E064B8 +S3150006E0002FE67FF06EF361E371D0114D61E371D0B7 +S3150006E010115C61E371D062E372D0522C112E61E37A +S3150006E02071D062E372D0522D112FA00C000961E364 +S3150006E03071D0511FE200212261E371D062E372D0F2 +S3150006E040522F7204112F62E372D061E371D0522F00 +S3150006E050511E32128FEB00097E106FE36EF6000B2F +S3150006E060000900092FE66EF3915171256110611CB6 +S3150006E07021188F060009914AD2256220622C712545 +S3150006E08021209144D2236220622C622E7126212001 +S3150006E090913DD221F1287138F11A9138D21FF12813 +S3150006E0A0713CF11A9133D21EF128715CF11A912E48 +S3150006E0B0D21CF1287154F11A9129D21BF1287158F4 +S3150006E0C0F11A9124D219F1287140F11A911FD2182A +S3150006E0D0F1287144F11A911AD216F1287148F11AEB +S3150006E0E09115D215F1287160F11A9110D213F12803 +S3150006E0F07150F11A910BD2126220622C7105212001 +S3150006E1009105E2B421206FE36EF6000B0009BE40CE +S3150006E1100006D8DC0006D8E00006D8E40006D8E8F3 +S3150006E1200006D8EC0006D8F00006D8F40006D9009A +S3150006E1300006D9040006D9080006D8F80006D8FC59 +S3150006E1400006D1E82FE67FFC6EF361E3F14A61E350 +S3150006E150F218F18DF2158F04000961E3F118A00398 +S3150006E160000961E3F118F14DF01C7E046FE36EF6CB +S3150006E170000B00092FE67FF86EF361E37104F14A9E +S3150006E18061E3F15A62E3720461E3F128F218F215CB +S3150006E1908F05000961E37104F118A002000961E325 +S3150006E1A0F118F01C7E086FE36EF6000B00090009F5 +S3150006E1B02FE67FF86EF361E37104F14A61E3F15AE3 +S3150006E1C062E3720461E3F228F118F2158F0500097D +S3150006E1D061E37104F118A002000961E3F118F01C6D +S3150006E1E07E086FE36EF6000B000900092FE64F2244 +S3150006E1F06EF3D104410B00096FE34F266EF6000B52 +S3150006E200000900090006E3942FE64F226EF3D106B5 +S3150006E210410B0009D1056112410B00096FE34F2638 +S3150006E2206EF6000B000900090006DBF00006E61C88 +S3150006E2302FE64F227FF46EF361E371CC114F61E353 +S3150006E2407107215061E371CC116D61E3710621708E +S3150006E250913E716D6110611C21188F33000991374B +S3150006E260716C6110611C21188D12000961E371CC75 +S3150006E270511F6110631C62E3720761E37117643311 +S3150006E28065206610E700D113410B0009A0100009AE +S3150006E29061E371CC511D6110631C62E3720661E392 +S3150006E2A0711B643365206610E700D10A410B00092D +S3150006E2B0910E920D726C6220622CE301223A622C58 +S3150006E2C0716C21207E0C6FE34F266EF6000B00095B +S3150006E2D0BE4000090006E2D82FE67FFC6EF361E336 +S3150006E2E07103214061E37102215061E371012160EE +S3150006E2F061E32170914B716D6110611C21188D07C8 +S3150006E300000961E36110621CE10132108F3A0009CF +S3150006E310913D716E62E37201622021209137716828 +S3150006E32062E37202622021209131716962E3720210 +S3150006E3306220212061E371036110611C21188D2181 +S3150006E3400009912462E372036220322C622C72FF6A +S3150006E350622C716A2120911A62E372036220322CC2 +S3150006E360622C72FF622C716B212091109210622032 +S3150006E370622CE301223A622C716421209107716DA9 +S3150006E380E20121207E046FE36EF6000B0009BE4013 +S3150006E390BACA00092FE64F226EF3916E716B6110B1 +S3150006E3A0611C21188D2E0009916771696110611C27 +S3150006E3B021188F1C00099160925F72686220622C98 +S3150006E3C0716921209159925872646220622CE30188 +S3150006E3D0223A622C71642120914F6213726B62207D +S3150006E3E0622C72FF622C716B2120A02700099144D2 +S3150006E3F0621372696220622C72FF622C7169212097 +S3150006E400A01C00099139716E6110611C21188D0BD3 +S3150006E410000991326213726E6220622C72FF622CC0 +S3150006E420716E2120A00A0009912792276220622C8C +S3150006E430716421209121716DE2002120911FF1184E +S3150006E440D110F218F2158902F2148F2500099117D8 +S3150006E450F218D10DF118F2158F1E0009D10B6110B5 +S3150006E460621CD10B6110611C64236513E600E7008C +S3150006E470D108410B0009A0750009BE40BACAAD58BD +S3150006E480A41C00090006D9600006D9640006D9381E +S3150006E4900006D9340006E2D8917FF118D142F21867 +S3150006E4A0F2158902F2148F1600099177F218D13FF8 +S3150006E4B0F118F2158F0F0009D13D6110621CD13D8E +S3150006E4C06110611C64236513E600E700D13A410B2F +S3150006E4D00009A04700099162F118D138F218F21521 +S3150006E4E08F160009915AF218D135F118F2158F0FC9 +S3150006E4F00009D1346110621CD1336110611C64239A +S3150006E5006513E600E700D12C410B0009A02A000995 +S3150006E5109146F218D12DF118F2158F0F0009D12C5C +S3150006E5206110621CD12B6110611C64236513E640E1 +S3150006E530E700D121410B0009A01400099131F11819 +S3150006E540D125F218F2158F0D0009D1246110621C2F +S3150006E550D1236110611C64236513E640E700D116DA +S3150006E560410B0009911E71646110621C911A716556 +S3150006E5706110611C32108D040009D11A6112410B1B +S3150006E5800009910F920E72646220622C7165212039 +S3150006E5906FE34F266EF6000B0009AD58A41CA01CAF +S3150006E5A090D083CCBE4000090006D95C0006D9642B +S3150006E5B00006D9300006D92C0006E2D80006D96C2A +S3150006E5C00006D9680006D9400006D93C0006D94C93 +S3150006E5D00006D9480006D9440006D9500006D95483 +S3150006E5E00006D9580006E6202FE64F226EF3D1061E +S3150006E5F0410B0009D1056112410B00096FE34F2655 +S3150006E6006EF6000B000900090006E1EC0006E6249A +S3150006E6100000211C0000208C0000E19C0002169ED2 +S3110006E620000436C000012510070016682D +S31500E00000DF076FF2D007400B0009D008400B00096C +S31500E00010AFFE00090009000900090009000900090E +S31500E000200006D1D80E005E280E00506C0E005D6C06 +S31500E00030002B0009002B0009002B0009002B00090A +S31500E00040002B0009002B0009002B0009002B0009FA +S31500E00050002B0009002B0009002B0009000900090C +S31500F000004321000200058934454355204964656E55 +S31500F000107469666965720000432100020004F808FD +S31500F00020456E67696E65204C6F616420536D6F6F26 +S31500F000307468696E6720466163746F7220410000D0 +S31500F00040432100020004F80C456E67696E65204C8A +S31500F000506F616420536D6F6F7468696E67204661D7 +S31500F0006063746F7220420000432100020004F8100E +S31500F00070456E67696E65204C6F616420536D6F6FD6 +S31500F000807468696E6720466163746F722046696EA4 +S31500F00090616C000043210010FFFFA4A145000000A1 +S31500F000A00000000000090009000000804D65727034 +S31500F000B04D6F6420436C757463682053776974637D +S31500F000C06800000043210010FFFFAAD045000000A1 +S31500F000D00000000000090009000000804D65727004 +S31500F000E04D6F6420526576204C696D6974204675B3 +S31500F000F0656C20437574205377697463680000005B +S31500F0010043210008FFFFBE45450000000000000047 +S31500F001100009000975696E743800000000090009CD +S31500F001204D6572704D6F64205344204D6F646520A9 +S31500F00130537769746368000043210008FFFFBE48E7 +S31500F00140450000000000000000090009666C6F61C0 +S31500F0015074000000000900094D6572704D6F64204F +S31500F00160534420566F6C756D6574726963204566ED +S31500F0017066696369656E63790000000043210008D3 +S31500F00180FFFFBE4C4500000000000000000900091A +S31500F00190666C6F6174000000000900094D657270AD +S31500F001A04D6F6420534420416972666C6F77204628 +S31500F001B0696E616C204F7574707574004321000888 +S31500F001C0FFFFBE50450000000000000000090009D6 +S31500F001D0666C6F6174000000000900094D6572706D +S31500F001E04D6F6420534420416972666C6F77204DE1 +S31500F001F061662053656E736F72000000432100083C +S31500F00200FFFFBE5445000000000000000009000991 +S31500F00210666C6F6174000000000900094D6572702C +S31500F002204D6F642053442041746D6F73706865722E +S31500F00230696320436F6D70656E736174696F6E00EC +S31500F0024043210008FFFFBE5C4500000000000000EF +S31500F0025000090009666C6F6174000000000900096E +S31500F002604D6572704D6F6420534420426C656E6428 +S31500F00270696E6720526174696F00000043210008BF +S31500F00280FFFFBE6045000000000000000009000905 +S31500F00290666C6F6174000000000900094D657270AC +S31500F002A04D6F6420534420416972666C6F7720422B +S31500F002B06C656E64696E6700432100040006D738EA +S31500F002C0566F6C756D657472696320456666696311 +S31500F002D069656E6379205461626C652031000000B7 +S31500F002E0432100040006D7F041746D6F73706865A2 +S31500F002F072696320507265737375726520436F6D12 +S31500F0030070656E736174696F6E00000043210004BE +S31500F003100006D8C0534420426C656E64696E67204F +S31500F003205461626C65000000432100020006D1F4BE +S31500F00330456E67696E6520446973706C6163656DBF +S31500F00340656E7400432100020006D1E853706565BE +S31500F00350642044656E73697479204D6F646500009E +S31500F00360432100020006D1F05370656564204465B0 +S31500F003706E7369747920436F6E7374616E740000E6 +S31500F00380432100020006D8E4526576204C696D6977 +S31500F003907420285265646C696E6529004321000259 +S31500F003A00006D8E0466C617420466F6F742053687F +S31500F003B0696674204D6F64650000000043210002F9 +S31500F003C00006D8F0466C617420466F6F742053684F +S31500F003D06966742044656C746120284175746F6D8C +S31500F003E061746963204C696D6974290043210002C8 +S31500F003F00006D8F4466C617420466F6F742053681B +S31500F004006966742044656C7461202853746174695C +S31500F0041063204C696D6974290000000043210002D5 +S31500F004200006D8F8466C617420466F6F74205368E6 +S31500F00430696674204D696E696D756D2053706565DA +S31500F0044064205468726573686F6C6400432100021F +S31500F004500006D8FC466C617420466F6F74205368B2 +S31500F00460696674204D696E696D756D2052504D2028 +S31500F004705468726573686F6C640000004321000273 +S31500F004800006D9004C43204D6178696D756D205397 +S31500F0049070656564205468726573686F6C640000FB +S31500F004A0432100020006D9244C43204D696E696D44 +S31500F004B0756D205468726F74746C6520546872653B +S31500F004C073686F6C64000000432100020006D928AF +S31500F004D0464653204D696E696D756D205468726F8E +S31500F004E074746C65205468726573686F6C64000090 +S31500F004F0432100020006D90C464653204765617237 +S31500F0050020526174696F7300432100020006D9041A +S31500F00510526576204C696D697420284C61756E635E +S31500F005206820436F6E74726F6C29000043210008D7 +S31500F00530FFFFBE664500000000000000000900094C +S31500F0054075696E7438000000000900094D65727017 +S31500F005504D6F6420464653204D6F646500000000E1 +S31500F0056043210008FFFFBE674500000000000000C1 +S31500F005700009000975696E74380000000009000969 +S31500F005804D6572704D6F64204C4320456E67616710 +S31500F005906564205369676E616C00000043210008B2 +S31500F005A0FFFFBE68450000000000000000090009DA +S31500F005B075696E7438000000000900094D657270A7 +S31500F005C04D6F642046465320456E6761676564202B +S31500F005D05369676E616C000043210008FFFFBE6C33 +S31500F005E045000000000000000009000975696E74FE +S31500F005F038000000000900094D6572704D6F6420E7 +S31500F006004646532047656172204D6F6E69746F726E +S31500F006100000000043210008FFFFBE704500000007 +S31500F006200000000000090009666C6F6174000000AC +S31500F00630000900094D6572704D6F64205265764C65 +S31500F00640696D697420416374697665204375742019 +S31500F0065052504D0043210008FFFFBE7445000000D4 +S31500F006600000000000090009666C6F61740000006C +S31500F00670000900094D6572704D6F64205265764C25 +S31500F00680696D697420416374697665205265737586 +S31500F006906D652052504D000043210008FFFFBE78E3 +S31500F006A0450000000000000000090009666C6F615B +S31500F006B074000000000900094D6572704D6F6420EA +S31500F006C05265644C696E65204375742052504D0036 +S31500F006D043210008FFFFBE7C45000000000000003B +S31500F006E000090009666C6F617400000000090009DA +S31500F006F04D6572704D6F64205265644C696E65206D +S31500F007004879737465726573697300004321000854 +S31500F00710FFFFBE844500000000000000000900094C +S31500F00720666C6F6174000000000900094D65727017 +S31500F007304D6F64204C61756E636820436F6E747202 +S31500F007406F6C2052504D000043210008FFFFBE8819 +S31500F00750450000000000000000090009666C6F61AA +S31500F0076074000000000900094D6572704D6F642039 +S31500F007704C61756E636820436F6E74726F6C2048BF +S31500F00780797374657265736973000000432100081C +S31500F00790FFFFBE94450000000000000000090009BC +S31500F007A0666C6F6174000000000900094D65727097 +S31500F007B04D6F64204646532044656C746120284191 +S31500F007C075746F290000000043210008FFFFBE98F2 +S31500F007D0450000000000000000090009666C6F612A +S31500F007E074000000000900094D6572704D6F6420B9 +S31500F007F04646532044656C746120285374617469CD +S31500F008006329000043210008FFFFBE8C450000006D +S31500F008100000000000090009666C6F6174000000BA +S31500F00820000900094D6572704D6F642046465320ED +S31500F00830456E676167656D656E742052504D0000B8 +S31500F0084043210008FFFFBEA04500000000000000A5 +S31500F0085000090009666C6F61740000000009000968 +S31500F008604D6572704D6F6420464653205370656532 +S31500F0087064205468726573686F6C640043210008E5 +S31500F00880FFFFBE80450000000000000000090009DF +S31500F00890666C6F6174000000000900094D657270A6 +S31500F008A04D6F64204C432053706565642054687224 +S31500F008B06573686F6C640000432100020006D95C22 +S31500F008C046424B43205468726573686F6C6400004F +S31500F008D0432100020006D92C46424B4320466C6168 +S31500F008E073682053706565640000000043210002C0 +S31500F008F00006D93046424B4320466C61736820436C +S31500F009006F756E7400000000432100020006D96086 +S31500F0091046424B4320536576657265204B6E6F6396 +S31500F009206B205468726573686F6C64004321000233 +S31500F009300006D93446424B432053657665726520EE +S31500F009404B6E6F636B20466C617368205370656500 +S31500F0095064000000432100020006D93846424B43AA +S31500F0096020536576657265204B6E6F636B20466C1F +S31500F0097061736820436F756E7400000043210002B6 +S31500F009800006D96446424B43204C6F61642054689C +S31500F00990726573686F6C6400432100020006D950DB +S31500F009A049414D20466C61736820546872657368DE +S31500F009B06F6C6400432100020006D95449414D2072 +S31500F009C0466C61736820436F756E740043210002B4 +S31500F009D00006D95849414D20466C61736820537022 +S31500F009E065656400432100020006D96C4547542032 +S31500F009F041463120526573697374616E63652054A4 +S31500F00A0068726573686F6C64000000004321000231 +S31500F00A100006D93C45475420466C617368205370F4 +S31500F00A2065656400432100020006D940454754201D +S31500F00A30466C61736820436F756E74004321000243 +S31500F00A400006D968454754204C6F6164205468729B +S31500F00A506573686F6C640000432100020006D94498 +S31500F00A6045435420466C6173682053706565640095 +S31500F00A70432100020006D94845435420466C617371 +S31500F00A806820436F756E7400432100020006D94C4E +S31500F00A9045435420466C6173682054656D706572E9 +S31500F00AA06174757265205468726573686F6C640062 +S31500F00AB043210008FFFFBEA445000000000000002F +S31500F00AC00009000975696E74380000000009000914 +S31500F00AD04D6572704D6F642043454C205369676EC7 +S31500F00AE0616C000043210008FFFFBACA4500000010 +S31500F00AF0000000000009000975696E7438000000F6 +S31500F00B00000900094D6572704D6F642043454C2015 +S31500F00B105369676E616C204F454D00004321000814 +S31500F00B20FFFFBEAB45000000000000000009000911 +S31500F00B3075696E7438000000000900094D65727021 +S31500F00B404D6F642043454C20466C61736820436FBB +S31500F00B50756E74657200000043210008FFFFBEA9A0 +S31500F00B6045000000000000000009000975696E7478 +S31500F00B7038000000000900094D6572704D6F642061 +S31500F00B8043454C20537065656420436F756E7465FC +S31500F00B9072000000000900090009000900090009B7 +S30900F00BA00009000949 +S311070010002FE66EF36FE36EF6000B000997 +S3150700100C4A75737420746F2070726F7665207468D6 +S3150700101C617420617373657274696F6E7320636193 +S3150700102C6E206661696C2E0046697273742065784A +S3150700103C65637574696F6E2073686F756C6420735E +S3150700104C6574204D61664D6F646520746F204D6124 +S3150700105C664D6F646553656E736F722E00000000E4 +S3150700106C466972737420657865637574696F6E204B +S3150700107C73686F756C642072657475726E204D415A +S3150700108C462066726F6D2073656E736F722E000045 +S3150700109C5365636F6E6420657865637574696F6EE7 +S315070010AC2073686F756C642072657475726E204D4B +S315070010BC41462066726F6D2073656E736F722E00D4 +S315070010CC4D61664D6F64652073686F756C6420722D +S315070010DC656D61696E2073657420746F204D61664A +S315070010EC4D6F646553656E736F722E005365636F30 +S315070010FC6E6420657865637574696F6E2073686FA7 +S3150700110C756C642072657475726E204D4146206647 +S3150700111C726F6D2073706565642D64656E73697483 +S3150700112C792E00004D61664D6F64652073686F7587 +S3150700113C6C642072656D61696E2073657420746FBB +S3150700114C204D61664D6F6465537065656444656EC5 +S3150700115C736974792E000000436865636B696E6763 +S3150700116C20626C656E64206D6F646520636F6465C1 +S3150700117C2C2063656C6C2073686F756C64206265D4 +S3150700118C207A65726F20616E642072657475726E53 +S3150700119C206D61662073656E736F722076616C7550 +S315070011AC652E00004D61664D6F64652073686F751B +S315070011BC6C642072656D61696E207365742E000010 +S315070011CC436865636B696E6720426C656E64207253 +S315070011DC6174696F00000000436865636B696E672D +S315070011EC2053442076616C75650000005265644C8B +S315070011FC696E653A20416C6C6F77206675656C2055 +S3150700120C6174205265644C696E65437574202D2094 +S3150700121C312052504D2C206D6F76696E672C2063EA +S3150700122C6C75746368206E6F742070726573736562 +S3150700123C6420214675656C43757400005265644CD1 +S3150700124C696E653A20416C6C6F77206675656C2004 +S3150700125C6174205265644C696E65437574202D2044 +S3150700126C312052504D2C206D6F76696E672C20639A +S3150700127C6C75746368206E6F742070726573736512 +S3150700128C642C20214C43456E67616765640000003A +S3150700129C5265644C696E653A2043757420667565AC +S315070012AC6C206174205265644C696E6543757420B5 +S315070012BC2B20312052504D2C206D6F76696E672C82 +S315070012CC20636C75746368206E6F74207072657317 +S315070012DC736564005265644C696E653A2052657392 +S315070012EC756D65206675656C206174205265644C56 +S315070012FC696E65526573756D65202D2031205250C8 +S3150700130C4D2C206D6F76696E672C20636C75746334 +S3150700131C68206E6F742070726573736564000000C5 +S3150700132C4E6F726D616C2073746F707065643A20C2 +S3150700133C416C6C6F77206675656C206174204C6107 +S3150700134C756E6368436F6E74726F6C437574202B7E +S3150700135C20313030302052504D2C2073746F707002 +S3150700136C65642C206E6F20636C75746368000000CF +S3150700137C4E6F726D616C206D6F76696E673A2041A0 +S3150700138C6C6C6F77206675656C206174204C617583 +S3150700139C6E6368436F6E74726F6C437574202B2083 +S315070013AC313030302052504D2C206D6F76696E6778 +S315070013BC2C206E6F20636C75746368004C61756EB8 +S315070013CC636820436F6E74726F6C20546573742058 +S315070013DC33204661696C65643A207374616E647375 +S315070013EC74696C6C2C20636C7574636820707265F9 +S315070013FC73736564000000004C61756E6368204367 +S3150700140C6F6E74726F6C205465737420342046614A +S3150700141C696C65643A2030206D70682C2031303049 +S3150700142C207468722C2072706D2062656C6F772041 +S3150700143C6C696D69740000004C61756E63682043B6 +S3150700144C6F6E74726F6C3A20437574206675656C93 +S3150700145C206174204C61756E6368436F6E74726F8E +S3150700146C6C437574202B20312052504D2C207374ED +S3150700147C616E647374696C6C2C20636C7574636829 +S3150700148C2070726573736564000000004C61756E9D +S3150700149C636820436F6E74726F6C3A20526573756E +S315070014AC6D65206675656C206174204C61756E637D +S315070014BC68436F6E74726F6C526573756D65202D0C +S315070014CC20312052504D2C207374616E64737469ED +S315070014DC6C6C2C20636C75746368207072657373FF +S315070014EC65640000466C617420466F6F7420536800 +S315070014FC696674696E673A20526573756D65206601 +S3150700150C75656C20617420466C6174466F6F7453F5 +S3150700151C68696674526573756D65202D2031205286 +S3150700152C504D2C206D6F76696E672C20636C757425 +S3150700153C636820707265737365640000466C61742A +S3150700154C20466F6F74205368696674696E673A2014 +S3150700155C437574206675656C20617420466C6174DE +S3150700156C466F6F745368696674437574202B203104 +S3150700157C2052504D2C206D6F76696E672C20636C4C +S3150700158C7574636820707265737365640000000078 +S3150700159C46465320726573756D65207768656E20B0 +S315070015AC72706D2064726F70730000005768656EF9 +S315070015BC20726576206C696D697420666C6167208C +S315070015CC6973207365742C206E6F206F746865724F +S315070015DC206269747320617265207365742E00002E +S315070015EC5768656E20726576206C696D697420661E +S315070015FC6C616720697320636C65617265642C2066 +S3150700160C6E6F206F746865722062697473206172DD +S3150700161C6520636C65617265642E00005265644CC7 +S3150700162C696E65206375742F726573756D652073A6 +S3150700163C616E6974792E00004C61756E6368436F31 +S3150700164C6E74726F6C206375742F726573756D6526 +S3150700165C2073616E6974792E00000000307841356D +S3150700166C41354135413500006572726F7220696EDE +S3150700167C2072616D20686F6C652100004F454D2007 +S3150700168C63656C20706F707065642C2043656C20E5 +S3150700169C5369676E616C2073686F756C642068613B +S315070016AC766520706F7070656420746F6F0000002C +S315070016BC4F454D2063656C20706F707065642C20E8 +S315070016CC3230206379636C6573206C617465722C98 +S315070016DC2043656C205369676E616C2073686F7560 +S315070016EC6C642073746179206F6E00004F454D2032 +S315070016FC63656C20706F707065642C2032312063C3 +S3150700170C79636C6573206C617465722C2043656C08 +S3150700171C205369676E616C2073686F756C642073F0 +S3150700172C746179206F6E00004F454D2063656C2000 +S3150700173C6973206E6F7720676F6E652C2043656C17 +S3150700174C207369676E616C2073686F756C642068AB +S3150700175C6176652064726F707065640062656C6F84 +S3150700176C772066626B63206C6F61642074687265A0 +S3150700177C73686F6C6420666F722063656C2C206EC1 +S3150700178C6F206C6967687421000000006B6E6F63CD +S3150700179C6B696E672120466C61736820636F756E83 +S315070017AC7465722073686F756C6420696E69740052 +S315070017BC6B6E6F636B696E672120466C617368206D +S315070017CC737065656420636F756E746572207368D4 +S315070017DC6F756C6420696E69740000006B6E6F63BD +S315070017EC6B696E672120466C6173682073686F7529 +S315070017FC6C64207374617274000000006B6E6F6307 +S3150700180C6B696E6720676F6E652120466C6173681E +S3150700181C2073686F756C64207A65726F0000000020 +S3150700182C6B6E6F636B696E6720676F6E65212046FB +S3150700183C6C61736820636F756E7465722073686F5D +S3110700184C756C64207A65726F000000005E +S30907001858123456786B +S3090700185CFFFFBEA41B +S3150E0050002FE67FFC6EF361E371C4114F00097E0437 +S3150E0050106FE36EF6000B00092FE64F227FF46EF358 +S3150E00502061E371CC114E61E371CC115D61E371CC1C +S3150E005030511E21188F11000961E371CCE200112F68 +S3150E0050409111714062E372CC522F112C61E371CC37 +S3150E005050511D6413D104410B00097E0C6FE34F26DC +S3150E0050606EF6000B0009BE400E0050002FE64F22D2 +S3150E0050706EF3D105E4006513D104410B00096FE30D +S3150E0050804F266EF6000B00090700100C0E00501886 +S3150E0050902FE67FF86EF361E371C89220112F61E35C +S3150E0050A071C8921D112EA00C000961E371C8511F23 +S3150E0050B0E200212261E371C862E372C8522F7204C4 +S3150E0050C0112F62E372C861E371C8522F511E32125C +S3150E0050D08FEB00097E086FE36EF6000B0009BE40EB +S3150E0050E0BFFF2FE67FF86EF361E37104F14A61E3C9 +S3150E0050F0F15A61E37104F118C711F208F12261E366 +S3150E005100F218F2158F030009E100A00F000961E302 +S3150E0051107104F118C70BF208F21261E3F118F215D9 +S3150E0051208F030009E100A0010009E101415AF10DCA +S3150E005130F11D005A7E086FE36EF6000B000900099A +S3150E0051403F8020C53F7FBE772F862FE64F227FF406 +S3150E0051506EF391FE7105E2002120D181410B00090B +S3150E005160D180410B000961E37108C77FF109F11A7D +S3150E00517061E37104F108F11A91EB71056110611C7E +S3150E005180601388010129611C415AF10DD178F11D78 +S3150E005190045A6513D177410B000991DBC776F108E6 +S3150E0051A0F11A91D8C775F108F11A91D5C774F1089D +S3150E0051B0F11A91D2C773F108F11A91CF92CF21212C +S3150E0051C068E3D171410B0009F10CF81A62E361E351 +S3150E0051D07108F428F518D16D410B0009405AF10DEE +S3150E0051E0D16BF11D045A6513D162410B000968E3B8 +S3150E0051F0D165410B0009F10CF81A62E361E37108FF +S3150E005200F428F518D161410B0009405AF10DD16110 +S3150E005210F11D045A6513D157410B00099199710579 +S3150E0052206110611C601388010129611C415AF10D40 +S3150E005230D159F11D045A6513D14E410B00099188BF +S3150E0052407105E202212068E3D14F410B0009F10CF2 +S3150E005250F81A62E361E37104F428F518D14B410B99 +S3150E0052600009405AF10DD14DF11D045A6513D14175 +S3150E005270410B0009916D71056110611C6013880266 +S3150E0052800129611C415AF10DD145F11D045A6513D0 +S3150E005290D138410B0009915C7105E203212068E3C8 +S3150E0052A0D139410B0009F10CF81A62E361E371087A +S3150E0052B0F428F518D135410B0009405AF10DD139B4 +S3150E0052C0F11D045A6513D12B410B0009914171054D +S3150E0052D06110611C601388030129611C415AF10D8E +S3150E0052E0D131F11D045A6513D122410B00099132B9 +S3150E0052F0C723F108F11A68E3D123410B0009F10C1B +S3150E005300F81A9126711CF218C728F108F42CF51C10 +S3150E005310D11E410B0009405AF10DD125F11D045A3B +S3150E0053206513D114410B00099113710CF218C721A4 +S3150E005330F108F42CF51CD115410B0009405AF10D5C +S3150E005340D11DF11D045A6513D10A410B0009A03572 +S3150E0053500009BE40A4D0A2F4912890C09026400029 +S3150E0053600E0050900006E064404A03FF406EC101F5 +S3150E005370070010340E005018447A000043867576E6 +S3150E005380442F0000417000000006D9B00E0050E216 +S3150E0053900700106C0700109C070010CC070010F8D1 +S3150E0053A00700113007001164070011B03F0E38E3F5 +S3150E0053B0070011CC41386E0F070011E461E3710846 +S3150E0053C0F118C71BF209F122F208F12061E3F41875 +S3150E0053D0F51CD119410B0009405AF10DD117F11DDB +S3150E0053E0045A6513D116410B0009911E7105611001 +S3150E0053F0611C601388030129611C415AF10DD111FC +S3150E005400F11D045A6513D10E410B0009910EC70EFC +S3150E005410F108F11A91097105E20121207E0C6FE364 +S3150E0054204F266EF668F6000B0009BE40A2F4000980 +S3150E0054303EE38E3A40CCEC100E0050E207001164AB +S3150E0054400E005018070011B0438675762FE67FFCC6 +S3150E0054506EF361E371C4114F61E371C4511F2118DC +S3150E0054608F0A0009911592146220622CE37F22396D +S3150E005470622C2120A0080009910B920A6220632C4F +S3150E005480E280223B622C21207E046FE36EF6000B37 +S3150E0054900009A4A12FE67FFC6EF3911A6110631C1E +S3150E0054A061E37103E2802239212061E37103611009 +S3150E0054B0611C21188F06000961E371036110611CDE +S3150E0054C0A0010009E10160137E046FE36EF6000B86 +S3150E0054D00009AAD02FE64F227FE86EF361E371171B +S3150E0054E0214061E371D8115E61E371D8116D61E3FC +S3150E0054F07108F14A61E37104F15A61E3F16AD1165A +S3150E005500410B0009D115410B000961E371D8511DFC +S3150E0055106413D113410B0009911A62E37208F12844 +S3150E005520F11A911662E3F128F11A911362E37204ED +S3150E005530F128F11A910F62E3721762202120D10928 +S3150E005540410B00097E186FE34F266EF6000B00091D +S3150E005550A314A4D0A4C0AAD00E0050900006E064F6 +S3150E0055600E00544C0006DBF02FE64F227FFC6EF346 +S3150E005570D151F218F19DF32CF311F13CC74FF309FB +S3150E005580F208E400E500E600F43CF52CF61CD14DDD +S3150E005590410B0009D14C410B00096103611C211816 +S3150E0055A00129611C415AF10DD148F11D045A6513AA +S3150E0055B0D147410B0009917D7127611021180129F0 +S3150E0055C0611C415AF10DD143F11D045A6513D140A8 +S3150E0055D0410B0009D138F218F19DF120C737F308B7 +S3150E0055E0C73DF208E400E500E600F43CF52CF61C97 +S3150E0055F0D134410B0009D134410B00096103611C02 +S3150E00560021188D09000991557127611021188F03F4 +S3150E0056100009E101A0010009E100D23064136523FF +S3150E005620D12B410B00099146D223F228D22CF12818 +S3150E005630F211F19DF32CF311F13CF11AD129410B24 +S3150E0056400009D121410B00096103611C21188F0944 +S3150E0056500009912F7127611021188F030009E101AE +S3150E005660A0010009E100D22064136523D118410B75 +S3150E0056700009D11EF118C71EF209F120F308F28DAA +S3150E005680E400E500E600F43CF52CF61CD10D410BCA +S3150E0056900009D10D410B00096103611C21188F2BE6 +S3150E0056A0000991077127611021188F250009E10164 +S3150E0056B0A0230009BE40A4D00006D8E4424800004C +S3150E0056C0419800000E0054D40E005494070011F8B1 +S3150E0056D00E00501807001248419000000700129C59 +S3150E0056E00006D8E80006DBF0070012E00006D90433 +S3150E0056F0447A000042C80000E100D23E64136523DE +S3150E005700D13D410B0009D13DF118C73DF209F120FB +S3150E005710F309F208E400E500E600F43CF52CF61C6D +S3150E005720D13A410B0009D13A410B00096103611CC4 +S3150E00573021188F090009915B7127611021188F03BB +S3150E0057400009E101A0010009E100D23264136523CC +S3150E005750D129410B0009D129F218F19DF32CF31131 +S3150E005760F13CC72DF308F28DE400E500E601F43CAA +S3150E005770F52CF61CD125410B0009D125410B00094C +S3150E0057806103611C21188F0900099131712761107F +S3150E00579021188F030009E101A0010009E100D21FC3 +S3150E0057A064136523D114410B0009D114F218F19D2F +S3150E0057B0F32CF311F13CC713F308F28DE400E50068 +S3150E0057C0E601F43CF52CF61CD110410B0009D11064 +S3150E0057D0410B00096103611C21188F2100099107F5 +S3150E0057E07127611021188D1B0009E101A01900090E +S3150E0057F0BE4000090700132C0E0050180006D904EF +S3150E005800447A000042C80000424800000E0054D4FC +S3150E0058100E0054940700137C41200000070013C8A5 +S3150E005820E100D24F64136523D14E410B0009D14ED0 +S3150E005830F218F19DF120C74DF308F28DE400E50054 +S3150E005840E601F43CF52CF61CD149410B0009D14971 +S3150E005850410B00096103611C21188D090009917C19 +S3150E0058607127611021188D030009E101A0010009BD +S3150E005870E100D24164136523D13A410B0009916DC3 +S3150E005880D239F228F19DF32CF311F13CF11AD13BEA +S3150E005890410B0009D137410B00096103611C211828 +S3150E0058A08D09000991597127611021188D03000980 +S3150E0058B0E101A0010009E100D23164136523D1296B +S3150E0058C0410B0009914AD228F228D22EF128F21164 +S3150E0058D0F19DF42CF411F14CF11AD128410B00096B +S3150E0058E0D124410B00096103611C21188F0900099F +S3150E0058F091337127611021188D030009E101A00172 +S3150E0059000009E100D21E64136523D116410B00096E +S3150E005910D11DF218F19DF32CF310D11CF118C71CF2 +S3150E005920F208F121F28DE400E500E601F43CF52CD7 +S3150E005930F61CD10F410B0009D10E410B0009610374 +S3150E005940611C21188D2600099107712761102118F7 +S3150E0059508D200009E101A01E0009BE40A4D0000959 +S3150E005960070014040E0050180006D90442C80000A1 +S3150E0059700E0054D40E005494070014440006DBF0B7 +S3150E005980070014980006D9080006D9240006D8E4A4 +S3150E00599043480000E100D24464136523D143410B12 +S3150E0059A00009917C927BF128C741F208F121F11A88 +S3150E0059B0D140410B0009D140410B00096103611C26 +S3150E0059C021188F090009916B7127611021188F0319 +S3150E0059D00009E101A0010009E100D2336413652339 +S3150E0059E0D132410B0009915CE20421209157C73355 +S3150E0059F0F108F11A9156C732F108F11A9153924FE6 +S3150E005A007244F128C72FF208F121F11AE400D12EC3 +S3150E005A10410B0009D127410B0009E401D12A410BA4 +S3150E005A200009D124410B0009D123410B0009610362 +S3150E005A30611C21188F0900099132712761102118F6 +S3150E005A408F030009E101A0010009E100D21F6413D2 +S3150E005A506523D116410B0009912592217250F1282A +S3150E005A60C71BF208F120F11A9119D21AF228F19DEC +S3150E005A70F120F11AD10F410B0009D10F410B00098C +S3150E005A806103611C21188D27000991097128621086 +S3150E005A90E10232108F200009E101A01E0009A314B5 +S3150E005AA0BE40A5C5A4C0A4D0070014980E00501879 +S3150E005AB0412000000006DBF00E00549441A00000C9 +S3150E005AC04248000042C800000E00544C070014F075 +S3150E005AD043FA00000006D928E100D2256413652397 +S3150E005AE0D124410B0009914192417234F228F19D65 +S3150E005AF0F32CF311F13CF11AD11F410B0009D11F02 +S3150E005B00410B00096103611C21188F090009912EB2 +S3150E005B107128611021188F030009E101A001000907 +S3150E005B20E100D21764136523D112410B0009911DB2 +S3150E005B30921D7250F128C713F208F120F11AD10EF8 +S3150E005B40410B0009D10C410B0009D10C410B000988 +S3150E005B506103611C21188D170009910871286110C7 +S3150E005B6021188D110009E101A00F0009A4D0BE4035 +S3150E005B70070015480E0050180006DBF00E00549470 +S3150E005B800700159C43FA0000E100D25E64136523FC +S3150E005B90D15D410B000991AFD25CF228F19DF32C39 +S3150E005BA0F311F13CF11A91A8C759F108F11AE40163 +S3150E005BB0D158410B0009D158410B0009D156410B62 +S3150E005BC00009D156410B00096103611C21180129F8 +S3150E005BD0611C415AF10DD152F11D045A6513D14A79 +S3150E005BE0410B00099188C74FF108F11A9186C74EED +S3150E005BF0F108F11A9181F18DF11AE401D145410BAB +S3150E005C000009917CE2002120D143410B00099276D6 +S3150E005C1061E371036220212061E371036110621C4E +S3150E005C20916E32100129611C415AF10DD13FF11DC1 +S3150E005C30045A6513D134410B0009915FC73CF10834 +S3150E005C40F11A915AF18DF11AE400D132410B000985 +S3150E005C509155E2FF2120D130410B0009914F611081 +S3150E005C60621C61E371036227212061E371036110F7 +S3150E005C70621C914532100129611C415AF10DD12D3C +S3150E005C80F11D045A6513D120410B00099139713863 +S3150E005C90F21891367138F3189133713CF118F43CC1 +S3150E005CA0F411F14CF2150129611C415AF10DD12264 +S3150E005CB0F11D045A6513D114410B0009912171444B +S3150E005CC0F218911E7144F318911B7148F118F43CA9 +S3150E005CD0F411F14CF2150129611C415AF10DD1173F +S3150E005CE0F11D045A6513D108410B00097E046FE3BA +S3150E005CF04F266EF6000B0009A314A4C0A4D0AAD09A +S3150E005D000080BE40070015480E0050180006D92820 +S3150E005D10419800000E00544C0006DBF00E00549421 +S3150E005D20070014F042C8000045BB8000070015B8F6 +S3150E005D30447A0000070015EC0700162807001644E3 +S3150E005D402FE64F227FFC6EF361E371C4D206112F4C +S3150E005D5061E371C4511F410B00097E046FE34F26A8 +S3150E005D606EF6000B000900090000E19C2FE64F229B +S3150E005D706EF3D10A410B0009D109410B0009D10975 +S3150E005D80410B0009D108410B0009D108410B00094E +S3150E005D906FE34F266EF6000B000900090006DF9032 +S3150E005DA00E005EF00E0055680E0051480E005DB0F6 +S3150E005DB02FE64F227FF86EF361E371C89225112FFD +S3150E005DC061E371C89222112E62E372C861E371C853 +S3150E005DD0522F511E32128D060009D10DE4006513A5 +S3150E005DE0D10C410B0009D10C410B0009D10B410B13 +S3150E005DF00009D10B410B0009D10A410B00097E089F +S3150E005E006FE34F266EF6000B0009C500BEB40009FF +S3150E005E10070016740E0050180006D9B00006E208E8 +S3150E005E200006E5E80E005D402FE66EF30009000958 +S3150E005E309125C717F108F11A9122C716F108F11A22 +S3150E005E40911F921E6220632CE280223B622C21203F +S3150E005E50911892176220622CE37F2239622C212040 +S3150E005E609111C70DF108F11A910EC70CF108F11A2E +S3150E005E70910B920B21216FE36EF6000B0009A4D055 +S3150E005E80A4C0A4A1AAD0A2F4912890264CCC0009B5 +S3150E005E90447A00004140000043867576442F000088 +S3150E005EA02FE64F227FF86EF361E371C8114E61E360 +S3150E005EB071C8E200112FA00A0009D10C410B00098E +S3150E005EC061E371C862E372C8522F7201112F62E349 +S3150E005ED072C861E371C8522F511E32138FED00093D +S3150E005EE07E086FE34F266EF6000B00090006E3945C +S3150E005EF02FE64F226EF3D186410B000991FFE20188 +S3150E005F00212091FD7164E200212091FAF18DF11AA2 +S3150E005F1091F8E200212091F6D27EF128C77EF20892 +S3150E005F20F120F11A91F0D27DF128C77BF208F1210A +S3150E005F30F11A91EAF19DF11A91E27165E2002120C2 +S3150E005F4091DE716BE200212091DA7169E200212067 +S3150E005F50D173410B000991D371646110611C6013FA +S3150E005F6088010129611C415AF10DD16EF11D045AA9 +S3150E005F706513D16D410B0009E414D16C410B000978 +S3150E005F8091BE71646110611C601388010129611C48 +S3150E005F90415AF10DD166F11D045A6513D162410BBA +S3150E005FA00009D15F410B000991AA71646110611C51 +S3150E005FB0601388010129611C415AF10DD15DF11D55 +S3150E005FC0045A6513D158410B00099198E20021201D +S3150E005FD0D153410B0009919371646110611C211814 +S3150E005FE00129611C415AF10DD153F11D045A651355 +S3150E005FF0D14D410B00099189F19DF11A9181C74F3F +S3150E006000F108F11AD146410B0009917971646110BC +S3150E006010611C21180129611C415AF10DD148F11D4F +S3150E006020045A6513D140410B0009916FC745F1081B +S3150E006030F11AD13B410B00099162716B6110611C23 +S3150E0060402118E1FF611A611C415AF10DD13EF11D75 +S3150E006050045A6513D134410B0009915171696110CF +S3150E006060611C2118E1FF611A611C415AF10DD137ED +S3150E006070F11D045A6513D12C410B0009914071682C +S3150E0060806110611C2118E1FF611A611C415AF10D64 +S3150E006090D12EF11D045A6513D123410B0009912F00 +S3150E0060A071646110611C601388010129611C415ADB +S3150E0060B0F10DD127F11D045A6513D11B410B0009B1 +S3150E0060C09124F19DF11A911CF18DF11A911F641311 +S3150E0060D0D116410B0009911371646110611C2118D0 +S3150E0060E00129611C415AF10DD11AF11D045A65138D +S3150E0060F0D10D410B00099103716BA02D0009BACA8F +S3150E006100BE40AD58A4A1A01C90D083CCA41C00C840 +S3150E0061100006E0640006D96C40A000000006D94CCB +S3150E0061200006E394070016880E0050180E005EA0B7 +S3150E006130070016BC070016F807001734BF800000CC +S3150E006140070017684040000007001798070017BCA5 +S3150E006150070017E8070018086110611C21180129AD +S3150E006160611C415AF10DD106F11D045A6513D10574 +S3150E006170410B00096FE34F266EF6000B000900096E +S30D0E0061800700182C0E00501842 +S3158000100012340000000000091234000100002000A4 +S315800010100000000841325A4A353030460000000050 +S31580001020000000004646464646464646000000000A +S31580001030000000001234000F0006D00041325A4AE8 +S31580001040353030462E4D6552704D6F442E466C615C +S3158000105073682E54657374696E672E7631342E35B7 +S315800010602E31302E303434000000000000000000A5 +S3158000107000000000000000000000000000000000EA +S315800010801234000B000589340000000A33313434F1 +S31580001090353034303036000000000000000000009B +S315800010A01234000C464646464646464646460000AC +S315800010B00000000000000000123400084D657270C8 +S315800010C0000000000000000000000000123400094B +S315800010D054657374696E67000000000000000000AC +S315800010E000000000000000001234000D537065659A +S315800010F0642044656E73697479206C6F61642063C3 +S31580001100616C63756C6174696F6E20776974682031 +S315800011104D414620626C656E64696E675F5F4C61A7 +S31580001120756E636820636F6E74726F6C20616E6417 +S3158000113020666C617420666F6F742073686966744C +S31580001140696E672028737461746963206F72206783 +S315800011506561722062617365642063616C63756C1E +S315800011606174696F6E295F5F43454C20466C61737D +S3158000117068202846424B432C204547542066726F90 +S315800011806D2046726F6E74204F322072657369735C +S3158000119074616E63652C20436F6F6C616E7420542E +S315800011A0656D70295F5F0000000000000000000090 +S315800011B012340003000100C4000216680006E2082B +S315800011C0526576204C696D697420537562726F75AD +S315800011D074696E6520486F6F6B00000012340003DF +S315800011E00000BB000000E19C0006DF684D656D6F66 +S315800011F0727920526573657420537562726F757447 +S31580001200696E6520486F6F6B000000001234000322 +S31580001210000076B80000208C0006D9F05370656512 +S31580001220642044656E73697479204D6166205375B8 +S3158000123062726F7574696E6520486F6F6B0000000F +S3158000124012340003000437D8FFFFBACAFFFFBEA4DA +S3158000125043454C205369676E616C20486F6F6B0005 +S31580001260123400030000FCB4000125100006E5E8F6 +S315800012704D61696E20537562726F7574696E6520F3 +S31580001280486F6F6B205747444300000012340004B8 +S315800012900006D0000006E628526F6D20486F6C6508 +S315800012A020436F64652050617463680000090009FB +S309800012B000090009A2 +S70500E000001A +S30DFF00200041325A4A35303046E1 +S30AFF058934314450400629 +S309FF0100C400021668B2 +S309FF00BB000000E19CBF +S309FF0076B80000208C1D +S309FF0437D8FFFFBACA62 +S309FF00FCB40001251011 +S315FF06D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315FF06D010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315FF06D020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315FF06D030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +S315FF06D040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S315FF06D050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 +S315FF06D060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF06D070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S315FF06D080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S315FF06D090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +S315FF06D0A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S315FF06D0B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +S315FF06D0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S315FF06D0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +S315FF06D0E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S315FF06D0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315FF06D100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S315FF06D110FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +S315FF06D120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S315FF06D130FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 +S315FF06D140FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S315FF06D150FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 +S315FF06D160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S315FF06D170FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 +S315FF06D180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S315FF06D190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 +S315FF06D1A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S315FF06D1B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 +S315FF06D1C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S315FF06D1D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 +S315FF06D1E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S315FF06D1F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 +S315FF06D200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S315FF06D210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 +S315FF06D220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S315FF06D230FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3 +S315FF06D240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S315FF06D250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 +S315FF06D260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S315FF06D270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 +S315FF06D280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S315FF06D290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 +S315FF06D2A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S315FF06D2B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 +S315FF06D2C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315FF06D2D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315FF06D2E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S315FF06D2F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 +S315FF06D300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S315FF06D310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +S315FF06D320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S315FF06D330FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 +S315FF06D340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S315FF06D350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +S315FF06D360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S315FF06D370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2 +S315FF06D380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S315FF06D390FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 +S315FF06D3A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S315FF06D3B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72 +S315FF06D3C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S315FF06D3D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 +S315FF06D3E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S315FF06D3F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 +S315FF06D400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S315FF06D410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 +S315FF06D420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S315FF06D430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 +S315FF06D440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S315FF06D450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 +S315FF06D460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S315FF06D470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 +S315FF06D480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S315FF06D490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91 +S315FF06D4A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S315FF06D4B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71 +S315FF06D4C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S315FF06D4D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51 +S315FF06D4E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S315FF06D4F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31 +S315FF06D500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S315FF06D510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 +S315FF06D520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S315FF06D530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 +S315FF06D540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S315FF06D550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 +S315FF06D560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S315FF06D570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +S315FF06D580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S315FF06D590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +S315FF06D5A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S315FF06D5B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 +S315FF06D5C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S315FF06D5D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 +S315FF06D5E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S315FF06D5F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 +S315FF06D600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S315FF06D610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F +S315FF06D620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S315FF06D630FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF +S315FF06D640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S315FF06D650FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF +S315FF06D660FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S315FF06D670FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF +S315FF06D680FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S315FF06D690FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F +S315FF06D6A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S315FF06D6B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F +S315FF06D6C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S315FF06D6D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F +S315FF06D6E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S315FF06D6F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F +S315FF06D700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S315FF06D710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E +S315FF06D720FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S315FF06D730FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE +S315FF06D740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S315FF06D750FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE +S315FF06D760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S315FF06D770FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE +S315FF06D780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S315FF06D790FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E +S315FF06D7A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S315FF06D7B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E +S315FF06D7C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S315FF06D7D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E +S315FF06D7E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S315FF06D7F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E +S315FF06D800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D +S315FF06D810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D +S315FF06D820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +S315FF06D830FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED +S315FF06D840FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +S315FF06D850FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD +S315FF06D860FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +S315FF06D870FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD +S315FF06D880FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D +S315FF06D890FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D +S315FF06D8A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D +S315FF06D8B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D +S315FF06D8C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D +S315FF06D8D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D +S315FF06D8E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D +S315FF06D8F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D +S315FF06D900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C +S315FF06D910FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C +S315FF06D920FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +S315FF06D930FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +S315FF06D940FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC +S315FF06D950FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +S315FF06D960FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +S315FF06D970FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +S315FF06D980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +S315FF06D990FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C +S315FF06D9A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +S315FF06D9B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C +S315FF06D9C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +S315FF06D9D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C +S315FF06D9E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C +S315FF06D9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C +S315FF06DA00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +S315FF06DA10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +S315FF06DA20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB +S315FF06DA30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB +S315FF06DA40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB +S315FF06DA50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB +S315FF06DA60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB +S315FF06DA70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB +S315FF06DA80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B +S315FF06DA90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B +S315FF06DAA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B +S315FF06DAB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B +S315FF06DAC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B +S315FF06DAD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B +S315FF06DAE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B +S315FF06DAF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +S315FF06DB00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A +S315FF06DB10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +S315FF06DB20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +S315FF06DB30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +S315FF06DB40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +S315FF06DB50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +S315FF06DB60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +S315FF06DB70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +S315FF06DB80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A +S315FF06DB90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A +S315FF06DBA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A +S315FF06DBB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A +S315FF06DBC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +S315FF06DBD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +S315FF06DBE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +S315FF06DBF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +S315FF06DC00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315FF06DC10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315FF06DC20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315FF06DC30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +S315FF06DC40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +S315FF06DC50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +S315FF06DC60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +S315FF06DC70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315FF06DC80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315FF06DC90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315FF06DCA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315FF06DCB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315FF06DCC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315FF06DCD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315FF06DCE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315FF06DCF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315FF06DD00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +S315FF06DD10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +S315FF06DD20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 +S315FF06DD30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S315FF06DD40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 +S315FF06DD50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 +S315FF06DD60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +S315FF06DD70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +S315FF06DD80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +S315FF06DD90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +S315FF06DDA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 +S315FF06DDB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 +S315FF06DDC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 +S315FF06DDD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +S315FF06DDE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 +S315FF06DDF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +S315FF06DE00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315FF06DE10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315FF06DE20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 +S315FF06DE30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +S315FF06DE40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +S315FF06DE50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +S315FF06DE60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +S315FF06DE70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +S315FF06DE80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +S315FF06DE90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 +S315FF06DEA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +S315FF06DEB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 +S315FF06DEC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315FF06DED0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315FF06DEE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315FF06DEF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315FF06DF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315FF06DF10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315FF06DF20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +S315FF06DF30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S315FF06DF40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 +S315FF06DF50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 +S315FF06DF60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +S315FF06DF70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 +S315FF06DF80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +S315FF06DF90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S315FF06DFA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +S315FF06DFB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S315FF06DFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315FF06DFD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315FF06DFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315FF06DFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315FF06E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315FF06E010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315FF06E020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +S315FF06E030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S315FF06E040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 +S315FF06E050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF06E060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S315FF06E070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S315FF06E080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +S315FF06E090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S315FF06E0A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +S315FF06E0B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S315FF06E0C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +S315FF06E0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S315FF06E0E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315FF06E0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315FF06E100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +S315FF06E110FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S315FF06E120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 +S315FF06E130FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S315FF06E140FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 +S315FF06E150FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S315FF06E160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 +S315FF06E170FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S315FF06E180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 +S315FF06E190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S315FF06E1A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 +S315FF06E1B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S315FF06E1C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 +S315FF06E1D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S315FF06E1E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 +S315FF06E1F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S315FF06E200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 +S315FF06E210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S315FF06E220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3 +S315FF06E230FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S315FF06E240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 +S315FF06E250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S315FF06E260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 +S315FF06E270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S315FF06E280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 +S315FF06E290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S315FF06E2A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 +S315FF06E2B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315FF06E2C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315FF06E2D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S315FF06E2E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 +S315FF06E2F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S315FF06E300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +S315FF06E310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S315FF06E320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 +S315FF06E330FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S315FF06E340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +S315FF06E350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S315FF06E360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2 +S315FF06E370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S315FF06E380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 +S315FF06E390FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S315FF06E3A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72 +S315FF06E3B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S315FF06E3C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 +S315FF06E3D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S315FF06E3E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 +S315FF06E3F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S315FF06E400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 +S315FF06E410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S315FF06E420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 +S315FF06E430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S315FF06E440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 +S315FF06E450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S315FF06E460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 +S315FF06E470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S315FF06E480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91 +S315FF06E490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S315FF06E4A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71 +S315FF06E4B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S315FF06E4C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51 +S315FF06E4D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S315FF06E4E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31 +S315FF06E4F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S315FF06E500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 +S315FF06E510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S315FF06E520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 +S315FF06E530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S315FF06E540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 +S315FF06E550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S315FF06E560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +S315FF06E570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S315FF06E580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +S315FF06E590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S315FF06E5A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 +S315FF06E5B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S315FF06E5C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 +S315FF06E5D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S315FF06E5E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 +S315FF06E5F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S315FF06E600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F +S315FF06E610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S30EFF06E620FFFFFFFFFFFFFFFFFFEF From fba654aaa076afce55c77149d1db23b8684f7b6c Mon Sep 17 00:00:00 2001 From: Merp Date: Fri, 4 Jul 2014 12:40:31 -0400 Subject: [PATCH 22/24] Added basic readme for porting. --- README_PORTING.md | 73 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 README_PORTING.md diff --git a/README_PORTING.md b/README_PORTING.md new file mode 100644 index 0000000..ba836a4 --- /dev/null +++ b/README_PORTING.md @@ -0,0 +1,73 @@ +SCOPE: MerpMod (Flash build) analysis and mapfile creation. + +Generate idc script using XMLtoIDC function of SharpTune +Open file and prepare analysis +Reference idatohew.xml and an existing mod header (use IDAtoHEW to create IDC script from header). + + +Calid: follow reference at end of rom + + +Ecuid: navigate to 2nd routine of ssm vector, byte referenced is start of ecuid + + +Rom Hole: Find the largest contiguous section of rom space filled with 0xFF and mark its start. You may find some XREFS in this area, but they are usually bitmasks which are incorrectly marked as XREFS, you should still check all of these. If there are any true XREFS, overwriting them may cause adverse unintended functionality! Because we check the contents while patching (must == 0xFF), overflow into used space is detected and there is no need to mark the end of the rom hole. Note: this assumes no valid XREFS in the romhole, so it is up to you to ensure none exist to prevent adverse unintended functionality!! + + +Ram Hole: Find the largest contiguous section of unreferenced RAM space. Take care not to mark a section that uses indirect or vbr referencing and do not use the stack's space! Typically the best area is near the end of the ram area (0xFFFF9000-0xFFFFA000 for SH7058) You may encounter bitmasks which are incorrectly marked as XREFS here as well. Because RAM cannot be checked for consistency while patching, mark the end of the ram hole as well! ALWAYS verify ram variables at ALL stages of testing (Flash test, idle test, drive test, etc)!! Corruption can cause adverse unintended functionality!! + + +Pull Functions: The ecu makes use of several interpolation subroutines that retrieve a map value given a lookup table (LUT) and axis lookup values. We are interested in Pull 2D float and Pull 3D float. You can find them by tracing references to known 2D and 3D tables. For example: MAF scaling will use Pull2DFloat and Target Boost will use Pull3DFloat. + + +MAF Hook: Follow references for MAF Scaling to find the MAF calculation routine. The routine is hooked through the XREF to Pull2DFloat. In text mode, click Pull2DFloat and scroll down until you see the offset referenced in sMafCalc highlighted, mark the offset (not the routine) as hMafCalc. Mark pMassAirFlow: Mark final value in sMafCalc, and pMafSensorVoltage: Mark input value in sMafCalc. + + +Rev Limit Hook: Follow references for Rev_Limit_Fuel_Cut to the rev limit routine and mark the start. Analyze the routine and mark the bitmask, appending _0xACTUALBITMASK to the end. Mark the flags set by the routine for fuel cut. Mark the last branch of this code as sRevLimEnd and make sure the name is marked non-local and included in names list (should appear as blue, not gray!). Mark the reference to sRevLimStart as hRevLimDelete. + + +CEL Hook: Start by searching for 009b1 and start from the end of the list. You are looking for the following pattern: + +sts.l pr, @-r15 +bsr sub1 +nop +bsr sub2 +nop +bsr sub3 +nop +mov.l #unk_FFFF1234, r4 +mov.w @r4, r2 +extu.w r2, r2 + +sub3 in this pattern is sCelTrigger. + +Another vector to find this is to search for the port address, which requires your ram segment to be the full range (0xFFFF0000 - 0xFFFFFFFF for SH7058). Try searching for F746. + +The Ram address immediately after the port address is pCelSignalOEM. hCelSignal is the ref to this. + + +WGDC Hook: The WGDC hook is used by other parts of MerpMod as the 'main' routine that runs on a fixed timer. You must at least mark hWGDC and sWGDC! You will have to trace XREFS to the tables, then trace back until you find the routine called from from a large subroutine vector 'jump table'. This is sWGDC and the entry in the jump table vector is hWGDC. + + +Flags/Signals: Navigate to SsmGet_Switches_63... The ram references correspond to the switch numbers in the subroutine name. These will vary by ecu! +Switch number: Switch +63: Clutch Switch +64: Stoplight Switch +65: Cruise Set/Coast Switch +66: Cruise Accel/Resume Switch +67: Brake Switch + +Mark these switches appropriately and mark their bitmasks. Older roms will use a single ram address with varying bitmasks for cruise switches, in this case mark it pCruiseFlags and mark the bitmasks appropriately. + + +Engine Parameters: Some parameters will automatically be named by the XMLtoIDC script. Some will require manual marking. See XMLtoIDC. Unless otherwise noted below, mark the ram address referenced by the appropriate SSM routine. +MAF parameters are already marked in sMafCalc. + + +Engine Load Smoothing: Follow references for MAF Compensation (IAT) to find the Engine Load Calculation subroutine. You may need to mark as a subroutine (click first line of sub and press p). In graph view, look for the last set of branches on the bottom right before the routine consolidates. Engine load smoothing values are typically loaded into fr6 before a jsr @r12 opcode. Follow the naming convention in an existing mod definition. + + +Memory Reset: Follow VBR Reset vector at end of rom (immediately before the CALID address) Typically the memory reset routine is the second routine called from the last routine in this routine. Look for a subroutine that references 0xFFFF4000 and 0xFFFFBFBB (SH7058). These are typically the reset limits. Mark the routine as sMemoryReset. Mark the reference to the high limit hMemoryResetLimit, and mark the actual limit address pMemoryResetLimit. Mark the data.l reference to sMemoryReset as hMemoryReset. + + +Generate a map file to use in your HEW environment! \ No newline at end of file From 4e24f4c02f702067a85f0115f732e81f333af8e3 Mon Sep 17 00:00:00 2001 From: Merp Date: Sun, 6 Jul 2014 16:10:27 -0400 Subject: [PATCH 23/24] Added linker script, header, and config for AZ1G700K. Conflicts: MerpMod/MerpMod.hwp --- MerpMod/MerpMod.hwp | 32 ++++--- MerpMod/Targets/AZ1G700K.h | 155 +++++++++++++++++++++++++++++++ MerpMod/Targets/AZ1G700K.txt | 29 ++++++ MerpMod/Targets/AZ1G700KConfig.h | 15 +++ 4 files changed, 217 insertions(+), 14 deletions(-) create mode 100644 MerpMod/Targets/AZ1G700K.h create mode 100644 MerpMod/Targets/AZ1G700K.txt create mode 100644 MerpMod/Targets/AZ1G700KConfig.h diff --git a/MerpMod/MerpMod.hwp b/MerpMod/MerpMod.hwp index 44ccd43..4343bf0 100644 --- a/MerpMod/MerpMod.hwp +++ b/MerpMod/MerpMod.hwp @@ -138,6 +138,9 @@ "Object file" "GNU Linker" "GNU Assembler" "Object file" "GNU Linker" "GNU Compiler" [PROJECT_FILES] +"C:\Users\Merrill\Dev\MerpMod\MerpMod\Targets\AZ1G700K.h" "User" "C header file|ECU Specific Headers|EDM|STi|AZ1G700K_EDM_2012_STI" 2 +"C:\Users\Merrill\Dev\MerpMod\MerpMod\Targets\AZ1G700K.txt" "User" "C header file|ECU Specific Headers|EDM|STi|AZ1G700K_EDM_2012_STI" 2 +"C:\Users\Merrill\Dev\MerpMod\MerpMod\Targets\AZ1G700KConfig.h" "User" "C header file|ECU Specific Headers|EDM|STi|AZ1G700K_EDM_2012_STI" 2 "C:\Users\merrill\Dev\MerpMod\MerpMod\BlendAndSwitch.c" "User" "C source file" 2 "C:\Users\merrill\Dev\MerpMod\MerpMod\BoostHackTables.c" "User" "C source file|Data & Tables" 2 "C:\Users\merrill\Dev\MerpMod\MerpMod\BoostHacks.c" "User" "C source file" 2 @@ -351,6 +354,7 @@ "C header file|ECU Specific Headers|EDM|STi|A8DH200Z_EDM_2006_STI" "" "C header file|ECU Specific Headers|EDM|STi|A8DK100Z_EDM_2007_STI" "" "C header file|ECU Specific Headers|EDM|STi|AZ1G202G_EDM_2008_STI" "" +"C header file|ECU Specific Headers|EDM|STi|AZ1G700K_EDM_2012_STI" "" "C header file|ECU Specific Headers|EDM|STi|AZ1J500G_EDM_2011_STi" "" "C header file|ECU Specific Headers|EDM|WRX" "" "C header file|ECU Specific Headers|EDM|WRX|A8DH200Y_EDM_2006_WRX" "" @@ -502,8 +506,8 @@ "Single Shot" "0abbf66ece80fc10" 0 [OPTIONS_Flash_Debug] "" 0 -"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler - +"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler + -T ^"^"$(PROJDIR)\LinkerScript.txt^"^"^"] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] " 4 "[V|VERSION|2] [S|INCDIR|^"$(PROJDIR)^"] [I|DEBUGLV|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|LINCASS|1] [B|LINCSYM|1] [B|LINCHLS|1] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] @@ -570,8 +574,8 @@ "Single Shot" "0abbf66ece80fc10" 0 [OPTIONS_Flash_Testing] "" 0 -"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler - +"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler + -T ^"^"$(PROJDIR)\LinkerScript.txt^"^"^"] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] " 4 "[V|VERSION|2] [S|INCDIR|^"$(PROJDIR)^"] [I|DEBUGLV|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|LINCASS|1] [B|LINCSYM|1] [B|LINCHLS|1] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] @@ -637,8 +641,8 @@ "Single Shot" "0abbf66ece80fc10" 0 [OPTIONS_Gratis_Debug] "" 0 -"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler - +"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler + -T ^"^"$(PROJDIR)\LinkerScript.txt^"^"^"] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] " 4 "[V|VERSION|2] [S|INCDIR|^"$(PROJDIR)^"] [I|DEBUGLV|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|LINCASS|1] [B|LINCSYM|1] [B|LINCHLS|1] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] @@ -705,8 +709,8 @@ "Single Shot" "0abbf66ece80fc10" 0 [OPTIONS_Gratis_Release] "" 0 -"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler - +"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler + -T ^"^"$(PROJDIR)\LinkerScript.txt^"^"^"] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] " 4 "[V|VERSION|2] [S|INCDIR|^"$(PROJDIR)^"] [I|DEBUGLV|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|LINCASS|1] [B|LINCSYM|1] [B|LINCHLS|1] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] @@ -773,8 +777,8 @@ "Single Shot" "0abbf66ece80fc10" 0 [OPTIONS_Gratis_Testing] "" 0 -"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler - +"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler + -T ^"^"$(PROJDIR)\LinkerScript.txt^"^"^"] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] " 4 "[V|VERSION|2] [S|INCDIR|^"$(PROJDIR)^"] [I|DEBUGLV|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|LINCASS|1] [B|LINCSYM|1] [B|LINCHLS|1] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] @@ -841,8 +845,8 @@ "Single Shot" "0abbf66ece80fc10" 0 [OPTIONS_Switch_Debug] "" 0 -"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler - +"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler + -T ^"^"$(PROJDIR)\LinkerScript.txt^"^"^"] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] " 4 "[V|VERSION|2] [S|INCDIR|^"$(PROJDIR)^"] [I|DEBUGLV|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|LINCASS|1] [B|LINCSYM|1] [B|LINCHLS|1] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] @@ -909,8 +913,8 @@ "Single Shot" "0abbf66ece80fc10" 0 [OPTIONS_Switch_Testing] "" 0 -"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler - +"[V|VERSION|2] [B|DOSEGF|1] [S|INCDIR|^"$(TCINSTALL)\sh-elf\lib\gcc\sh-elf\4.7-GNUSH_v13.01\mrenesas\m2e^"|^"$(CONFIGDIR)^"] [B|RSARCH|1] [B|FIXUPLIBS|1] [S|ARCHIVE|libgcc.a*libgcc-Os-4-200.a*lib$(PROJECTNAME).a] [S|OUTFORM|BOTH] [S|OUTFILE|^"$(CONFIGDIR)\$(PROJECTNAME).x^"] [S|GROUPDET|Zero|0|0||1|0x00000000|0|0|0|Zero|All-files|<>|<>|<>|INTHandler|0|0||1|0x00000100|0|0|<>|<>|RSTHandler|0|0||1|0x00E00000|0|0|1|_ResetHandler|<>|<>|<>|DefinitionData|0|0||1|0x00F00000|0|0|0|DefinitionDataHeader|All-files|<>|0|DefinitionData|All-files|<>|0|DefinitionDataEnd|All-files|<>|<>|<>|.text|0|0||1|0x07001000|0|0|0|.text|All-files|<>|0|.text.*|All-files|<>|1|etext|<>|<>|<>|.init|0|0||0||0|0|0|.init|All-files|<>|<>|<>|.fini|0|0||0||0|0|0|.fini|All-files|<>|<>|<>|.got|0|0||0||0|0|0|.got|All-files|<>|0|.got.plt|All-files|<>|<>|<>|.rodata|0|0||0||0|0|0|.rodata|All-files|<>|0|.rodata.*|All-files|<>|1|_erodata|<>|<>|<>|.eh_frame_hdr|0|0||0||0|0|0|.eh_frame_hdr|All-files|<>|<>|<>|.eh_frame|0|0||0||0|0|0|.eh_frame|All-files|<>|<>|<>|.jcr|0|0||0||0|0|0|.jcr|All-files|<>|<>|<>|.tors|0|0||0||0|0|1|__CTOR_LIST__|<>|1|___ctors|<>|0|.ctors|All-files|<>|1|___ctors_end|<>|1|__CTOR_END__|<>|1|__DTOR_LIST__|<>|1|___dtors|<>|0|.dtors|All-files|<>|1|___dtors_end|<>|1|__DTOR_END__|<>|1|_mdata|<>|<>|<>|Misc|0|0||1|0x0E005000|0|0|0|Misc|All-files|<>|<>|<>|.data|0|2|_mdata|1|0x70000000|0|0|1|_data|<>|0|.data|All-files|<>|0|.data.*|All-files|<>|1|_edata|<>|<>|<>|.gcc_exc|0|0||0||0|0|0|.gcc_exc|All-files|<>|<>|<>|.bss|0|0||0||0|0|1|_bss|<>|0|.bss|All-files|<>|0|.bss.*|All-files|<>|0|COMMON|All-files|<>|1|_ebss|<>|1|_end|<>|<>|<>|.stack|0|0||1|0x73FFFBF0|0|0|1|_stack|<>|<>|<>|MetaData|0|0||1|0x80001000|0|0|0|MetaDataHeader|All-files|<>|0|MetaData|All-files|<>|0|MetaDataEnd|All-files|<>|<>|<>|] [S|APPTXT|^"-e _ResetHandler + -T ^"^"$(PROJDIR)\LinkerScript.txt^"^"^"] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] [B|DOOPTLIB|1] [B|DOPROJBUILT|1] " 4 "[V|VERSION|2] [S|INCDIR|^"$(PROJDIR)^"] [I|DEBUGLV|2] [S|OBJPATH|^"$(CONFIGDIR)\$(FILELEAF).o^"] [B|LINCASS|1] [B|LINCSYM|1] [B|LINCHLS|1] [S|CPUTYPE|SH2E] [S|ENDIAN|BIG] [B|MRENESAS|1] [B|MIEEE|1] [S|PROJECTTYPE|CAPPPROJECT] diff --git a/MerpMod/Targets/AZ1G700K.h b/MerpMod/Targets/AZ1G700K.h new file mode 100644 index 0000000..3973430 --- /dev/null +++ b/MerpMod/Targets/AZ1G700K.h @@ -0,0 +1,155 @@ +#define MOD_DATE 14.7.6.167 + +#include "Flash.h" +#define MOD_CONFIG Flash +#define MOD_BUILD Testing +#define MOD_RELEASE 0 +#define ECU_CALIBRATION_ID AZ1G700K +#define ECU_IDENTIFIER 7472594007 +///////////////////// +// NonSpecific Rom Info and Routines +///////////////////// + +#define dCalId (0x00002004) +#define dEcuId (0x000D4CE4) +#define dRomHoleStart (0x000E1000) +#define pRamHoleStart (0xFFFFA600) +#define pRamHoleEnd (0xFFFFB3D0) +#define sPull2DFloat (0x000BE864) +#define sPull3DFloat (0x000BE918) + +///////////////////// +// Switch Hacks +///////////////////// + + +///////////////////// +// Rev Limit Hack +///////////////////// + +#define hRevLimDelete (0x00041E2C) +#define sRevLimStart (0x00034390) +#define sRevLimEnd (0x000343D0) +#define pFlagsRevLim ((unsigned char*)0xFFFF7600) +#define RevLimBitMask (0x01) + +///////////////////// +// Speed Density Hack +///////////////////// + +#define hMafCalc (0x000049E8) +#define sMafCalc (0x0000498C) + +///////////////////// +// Injector Hack +///////////////////// + +#define dInjectorScaling ((float*)0x000C787C) + +///////////////////// +// Cel Hacks +///////////////////// + +#define sCelTrigger (0x00079D88) +#define hCelSignal (0x00079E0C) +#define pCelSignalOem ((unsigned char*)0xFFFF99A6) + +///////////////////// +// Boost Hacks +///////////////////// + +#define tTargetBoost (0x00084184) + +///////////////////// +// WGDC Hacks +///////////////////// + +#define hWgdc (0x00041958) +#define sWgdc (0x000132EC) +#define tWgdcInitial (0x00084168) +#define tWgdcMax (0x0008414C) + +///////////////////// +// Primary Open Loop Fueling Hacks +///////////////////// + +#define pPolf4Byte (0xFFFF72F0) +#define pPolfEnrich (0xFFFF72F0) +#define tPolfKcaAlt (0x00086588) +#define tPolfKcaBLo (0x000865DC) +#define tPolfKcaBHi (0x000865F8) + +///////////////////// +// Timing Hacks +///////////////////// + +#define pBaseTiming (0xFFFF7820) +#define tBaseTimingPCruise (0x00087104) +#define tBaseTimingPNonCruise (0x00087120) +#define tBaseTimingRCruiseAvcs (0x0008713C) +#define tBaseTimingRNonCruiseAvcs (0x00087158) +#define pKcaIam (0xFFFF7B48) + +///////////////////// +// Spark Cut +///////////////////// + + +///////////////////// +// Flags-Signals +///////////////////// + +#define pResumeFlags ((unsigned char*)0xFFFF6167) +#define ResumeBitMask ((unsigned char)0x01) +#define pCoastFlags ((unsigned char*)0xFFFF6166) +#define CoastBitMask ((unsigned char)0x01) +#define pBrakeFlags ((unsigned char*)0xFFFF6168) +#define BrakeBitMask ((unsigned char)0x01) +#define pClutchFlags ((unsigned char*)0xFFFF6773) +#define ClutchBitMask ((unsigned char)0x01) + +///////////////////// +// NonSpecific Engine params +///////////////////// + +#define pFbkc1 ((unsigned char*)0xFFFF6A01) +#define pFbkc4 ((float*)0xFFFF7AD8) +#define pIam1 ((unsigned char*)0xFFFF6A03) +#define pIam4 ((float*)0xFFFF2D74) +#define pEngineSpeed ((float*)0xFFFF67C4) +#define pVehicleSpeed ((float*)0xFFFF67A0) +#define pCoolantTemp ((float*)0xFFFF4140) +#define pAtmoPress ((float*)0xFFFF6A24) +#define pManifoldAbsolutePressure ((float*)0xFFFF63AC) +#define pIntakeAirTemp ((float*)0xFFFF4128) +#define pMassAirFlow ((float*)0xFFFF40B4) +#define pMafSensorVoltage ((short*)0xFFFF4042) +#define pEngineLoad ((float*)0xFFFF6588) +#define pReqTorque ((float*)0xFFFF7E3C) +#define pThrottlePlate ((float*)0xFFFF647C) +#define pCurrentGear ((unsigned char*)0xFFFF69B1) +#define pAf1Res ((float*)0xFFFF40C8) + +///////////////////// +// OBD Experimental stuff +///////////////////// + + +///////////////////// +// New Definitions +///////////////////// + +#define dLoadSmoothingA (0x000C29C0) +#define dLoadSmoothingB (0x000C29BC) +#define dLoadSmoothingAlt (0x000C29B8) +#define dLoadSmoothingFinal (0x000C29CC) + +///////////////////// +// Memory Reset +///////////////////// + +#define sMemoryReset (0x000100C0) +#define hMemoryReset (0x0000FB18) +#define pMemoryResetLimit (0xFFFFBF9F) +#define hMemoryResetLimit (0x00011A64) + diff --git a/MerpMod/Targets/AZ1G700K.txt b/MerpMod/Targets/AZ1G700K.txt new file mode 100644 index 0000000..a1e52c1 --- /dev/null +++ b/MerpMod/Targets/AZ1G700K.txt @@ -0,0 +1,29 @@ +SECTIONS +{ + REVLIM_START 0x00034390 : AT (0x00034390) + { + *(RevLimit) + } + ROMHOLE_START 0x000E1000 : AT (0x000E1000) + { + *(RomHole_Identifier) + *(RomHole_Misc) + *(RomHole_SpeedDensityTables) + *(RomHole_RevLimTables) + *(RomHole_CelFlashTables) + *(RomHole_POLFHackTables) + *(RomHole_BoostHackTables) + *(RomHole_TimingHackTables) + *(RomHole_MapSwitchTables) + *(RomHole_ProgModeTables) + *(RomHole_PortLoggerTables) + *(RomHole_Vin) + *(RomHole_Code) + *(RomHole_Functions) + *(RomHole_RomHoleEndMarker) + } + RAMHOLE_START 0xFFFFA600 : AT (0xFFFFA600) + { + *(RamHole) + } +} diff --git a/MerpMod/Targets/AZ1G700KConfig.h b/MerpMod/Targets/AZ1G700KConfig.h new file mode 100644 index 0000000..f1c37b0 --- /dev/null +++ b/MerpMod/Targets/AZ1G700KConfig.h @@ -0,0 +1,15 @@ + +////////////////////////////// +// OPTIONS +////////////////////////////// + +#define AUTO_TRANS 0 +#define SD_DMAP 0 + +#define ECU_IDENTIFIER_CHARS (10) +#define ECU_CALIBRATION_CHARS (8) +#define MOD_CALIBRATION_ID FFFFFFFF +#define MOD_ECU_IDENTIFIER FFFFFFFFFF + +#define EXPECTED_MAF_SENSOR 3.487375f +#define EXPECTED_MAF_SD 3.73053f \ No newline at end of file From 087864d43ad04c24bbd0f6dbb47644326002cea5 Mon Sep 17 00:00:00 2001 From: Merp Date: Sun, 6 Jul 2014 16:10:45 -0400 Subject: [PATCH 24/24] Added MerpMod flash testing patch for AZ1G700K. --- ...0K.MeRpMoD.Flash.Testing.v14.7.6.167.patch | 1465 +++++++++++++++++ 1 file changed, 1465 insertions(+) create mode 100644 Release/Flash/AZ1G700K.MeRpMoD.Flash.Testing.v14.7.6.167.patch diff --git a/Release/Flash/AZ1G700K.MeRpMoD.Flash.Testing.v14.7.6.167.patch b/Release/Flash/AZ1G700K.MeRpMoD.Flash.Testing.v14.7.6.167.patch new file mode 100644 index 0000000..b231f76 --- /dev/null +++ b/Release/Flash/AZ1G700K.MeRpMoD.Flash.Testing.v14.7.6.167.patch @@ -0,0 +1,1465 @@ +S02B0000433A5C55736572735C6D657272696C6C5C4465765C4D6572704D6F645C4D6572704D6F645C466C618C +S3150000000000E00000FFFF200000E00000FFFF2000EE +S3150000001000E0003000E0003400E0003800E0003C82 +S3150000002000E0004000E0004400E0004800E0004C32 +S3110000003000E0005000E0005400E0005822 +S315000E1000415A31473730304B2E4D6552704D6F4435 +S315000E10102E466C6173682E54657374696E672E76F0 +S315000E102031342E372E362E3136370000434F505977 +S315000E1030524947485420323031322C323031332027 +S315000E10404D657272696C6C20412E204D79657273F6 +S315000E1050204949492C206D657272696C6C616D79F7 +S315000E106065727369696940676D61696C2E636F6D30 +S315000E1070206D657272696C6C616D796572736969E2 +S315000E10806940676D61696C2E636F6D2E20554E41FA +S315000E10905554484F52495A4544204449535452498F +S315000E10A0425554494F4E205354524943544C59209D +S315000E10B050524F484942495445442E204F464652B7 +S315000E10C04F414420555345204F4E4C592E204E4FDE +S315000E10D02057415252414E54592E205448495320BE +S315000E10E0534F465457415245204953204C49434588 +S315000E10F04E53454420544F20594F5520934153206B +S315000E110049532C9420414E4420574954484F555428 +S315000E111020414E592057415252414E5459204F4666 +S315000E112020414E59204B494E442C20574845544891 +S315000E11304552204F52414C2C205752495454454E3D +S315000E11402C20455850524553532C20494D504C494E +S315000E11504544204F52205354415455544F52592C06 +S315000E116020494E434C5544494E4720425554204E35 +S315000E11704F54204C494D4954454420544F20574115 +S315000E11805252414E54494553204F46204D455243E7 +S315000E119048414E544142494C4954592C20464954D3 +S315000E11A04E45535320464F522041205041525449EA +S315000E11B043554C415220505552504F53452C2041C9 +S315000E11C04E44204E4F4E494E4652494E47454D458A +S315000E11D04E542E0000000000FFFF1000000000001D +S315000E11E00000000000000000010000004388933359 +S315000E11F03B7DB23F401D70A442C80000434800002C +S315000E12004396000043C8000043FA0000441600004F +S315000E1210442F00004448000044610000447A000058 +S315000E1220448980004496000044A2800044AF00002A +S315000E123044BB800044C8000044D4800044E1000052 +S315000E124044ED800044FA0000450340004509800045 +S315000E1250450FC0004516000043FA00004448000042 +S315000E12604496000044C8000044FA000045160000EB +S315000E1270452F00004548000045610000457A0000F4 +S315000E12804583400045898000458FC0004596000085 +S315000E1290459C400045A2800045A8C00045AF000011 +S315000E12A045B5400045BB800045C8000045D48000CA +S315000E12B045E1000045ED80001BEE1D1926E6286F60 +S315000E12C029A92A2A2ABF2B512BA92BEA2C2B2C779C +S315000E12D02CC32D0F2D5B2DA72DF32E3F2E8B2ED728 +S315000E12E02F232F6F2FBB30071CE61DDE25DE27941E +S315000E12F0290329DC2ACC2B442BB62BF72C382C842D +S315000E13002CD02D1C2D682DB42E002E4C2E982EE48E +S315000E13102F302F7C2FC830141F9120FF25BA27128D +S315000E132028F629DC2A3D2ACF2BC72C082C522C9EB8 +S315000E13302CEA2D362D822DCE2E1A2E662EB22EFE8E +S315000E13402F4A2F962FE2302E2108225C25BB27111D +S315000E1350290129F62A652AF62BDD2C252C792CD285 +S315000E13602D2B2D842DDD2E362E8F2EE82F412F9AE6 +S315000E13702FF3304C30A530FE21B322E025BB273AA1 +S315000E138029032A102AA52B1D2C112C6B2CD22D3A93 +S315000E13902DA22E0A2E722EDA2F422FAA3012307A54 +S315000E13A030E2314A31B2321A222D234025CC27891A +S315000E13B029102A2B2AF32BB22CCC2D942E582F1A09 +S315000E13C02FDC309E3160322232E433A63468352A61 +S315000E13D035EC36AE37703832229623A8264127F0E2 +S315000E13E029292A602B902CD32E1D3023312431A689 +S315000E13F0322832AA332C33AE343034B2353435B6C5 +S315000E1400363836BA373C37BE2371247626DA287D2F +S315000E1410299D2AEA2C862E58306432B7337833B893 +S315000E142033F83438347834B834F83538357835B846 +S315000E143035F83638367836B824A7259427F929F2A2 +S315000E14402BB72DC4302231B132F333EB346234BDB7 +S315000E14503518357335CE3629368436DF373A379515 +S315000E146037F0384B38A639012568265D28B62AE2AC +S315000E14702CD92EDF30973200332733F9346234BD40 +S315000E14803518357335CE3629368436DF373A3795E5 +S315000E149037F0384B38A6390125422631289C2AC901 +S315000E14A02CB12EC0305131CD32D0338F33F9343A80 +S315000E14B0347B34BC34FD353E357F35C0360136427D +S315000E14C0368336C43705374625102608284C2A8417 +S315000E14D02C5F2E542FE5313F324B32F7332B3353DD +S315000E14E0337B33A333CB33F3341B3443346B349314 +S315000E14F034BB34E3350B353324D425C427FE2A25D5 +S315000E15002C012DDC2F5330933185320F3236322A91 +S315000E1510321E3212320631FA31EE31E231D631CA8C +S315000E152031BE31B231A6319A249E257927A829BA21 +S315000E15302B952D562EB42FBC307E30E530F330A6CB +S315000E15403059300C2FBF2F722F252ED82E8B2E3EB4 +S315000E15502DF12DA42D572D0A245C2538274D294C07 +S315000E15602B0E2C9C2DD52EA02F3A2F622F302EAF60 +S315000E15702E2E2DAD2D2C2CAB2C2A2BA92B282AA7A3 +S315000E15802A2629A5292428A3241A24F826F428D4A1 +S315000E15902A652BCF2CD52D6E2DBA2D9F2D2C2CAB2F +S315000E15A02C2A2BA92B282AA72A2629A5292428A3A3 +S315000E15B0282227A12720269F23CE249F268028482F +S315000E15C0299D2AD62B8D2BE82BDB2B8F2B1B2A9AAC +S315000E15D02A1929982917289628152794271326920B +S315000E15E026112590250F248E23762452260D27B0FC +S315000E15F028DD29BC2A3E2A412A0029A3292228A20F +S315000E1600282227A2272226A2262225A2252224A286 +S315000E1610242223A2232222A2231E2405259A27183A +S315000E1620281D28A228EF289A282527B7272926AA73 +S315000E1630262B25AC252D24AE242F23B0233122B202 +S315000E1640223321B4213520B622C623B8252726807B +S315000E1650275D278827A026F3264A25CB253024B2D8 +S315000E1660243423B6233822BA223C21BE214020C27E +S315000E167020441FC61F481ECA226E236B24B425E8BB +S315000E1680269D266E2651254C246F23DF233722BA3C +S315000E1690223D21C0214320C620491FCC1F4F1ED2FA +S315000E16A01E551DD81D5B1CDE2216231E24412550F9 +S315000E16B025DD2554250223A5229421F3213E20C2A1 +S315000E16C020461FCA1F4E1ED21E561DDA1D5E1CE276 +S315000E16D01C661BEA1B6E1AF221BE22D123CE24B83B +S315000E16E0251D243A23B321FE20B920071F451ECA05 +S315000E16F01E4F1DD41D591CDE1C631BE81B6D1AF2F2 +S315000E17001A7719FC1981190621662284235B242077 +S315000E1710245D2320226420571EDE1E1B1D4C1CD268 +S315000E17201C581BDE1B641AEA1A7019F6197C19026C +S315000E17301888180E1794171A00180018000E11F8AC +S315000E1740000E1258000E12B80800000038400000B5 +S315000E1750000000000000000043A680004426800022 +S315000E1760447A000044A6A00044D0400044FA00008B +S315000E177043E88000440340004412400044214000E8 +S315000E178044304000443F4000444E4000400040007C +S315000E17904000400040004000400040004000400035 +S315000E17A04000400040004000400040004000400025 +S315000E17B04000400040004000400040004000400015 +S315000E17C04000400040004000400040004000400005 +S315000E17D040004000400040004000400040004000F5 +S315000E17E04000400040004000400040004000000025 +S315000E17F000070007000E1754000E1770000E178C08 +S315000E180008000000388000FD0000000043E880005C +S315000E1810440340004412400044214000443040003E +S315000E1820443F4000444E4000445D4000446C40003E +S315000E1830447B40000000000043FA0000447A00009A +S315000E1840449C400044BB800044FA0000451C400006 +S315000E1850453B8000455AC000457A00000000003224 +S315000E186096FAFAFAFAFA0000003296FAFAFAFAFA42 +S315000E18700000003296FAFAFAFAFA0000003296FAE8 +S315000E1880FAFAFAFA0000003296FAFAFAFAFA0000B2 +S315000E1890003296FAFAFAFAFA0000003296FAFAFAD4 +S315000E18A0FAFA0000003296FAFAFAFAFA0000003254 +S315000E18B096FAFAFAFAFA0000003296FAFAFAFAFAF2 +S315000E18C0000A000A000E180C000E1834000E185CE2 +S315000E18D0040000003B808081000000000100000033 +S315000E18E045E100004248000042480000457A0000EB +S315000E18F042200000458CA00040A00000457A000062 +S315000E19004248000002000000000000004068B439A2 +S315000E1910401800003FE168733FAC49BA3F789375B3 +S315000E19203F4189374270000042A6000002000000C7 +S315000E19300400000001000000080000000400000082 +S315000E194002000000100000001000000042F000002F +S315000E19503F0000002000000002000000BDCCCCCDF0 +S315000E1960C00666663FC000003FC0000041C80000CA +S315000E19702FE67FFC6EF3D10D6110621C61E37103DD +S315000E1980E3012239212061E371036110621CE1013A +S315000E199032108F030009E101A0010009E100601376 +S315000E19A07E046FE36EF6000B00090009FFFF616807 +S315000E19B02FE67FFC6EF3D10D6110621C61E371039D +S315000E19C0E3012239212061E371036110621CE101FA +S315000E19D032108F030009E101A0010009E100601336 +S315000E19E07E046FE36EF6000B00090009FFFF6773B6 +S315000E19F02FE67FFC6EF3D10D6110621C61E371035D +S315000E1A00E3012239212061E371036110621CE101B9 +S315000E1A1032108F030009E101A0010009E1006013F5 +S315000E1A207E046FE36EF6000B00090009FFFF616787 +S315000E1A302FE67FFC6EF3D10D6110621C61E371031C +S315000E1A40E3012239212061E371036110621CE10179 +S315000E1A5032108F030009E101A0010009E1006013B5 +S315000E1A607E046FE36EF6000B00090009FFFF616648 +S315000E1A702F862FE64F227FF86EF368E37807D1297B +S315000E1A80410B00096103281068E37806D126410B45 +S315000E1A90000961032810914471036110611C62E311 +S315000E1AA072076220622C32108D280009913971025C +S315000E1AB06110611C62E372066220622C32108D1474 +S315000E1AC0000961E371076110611C21188D1600096A +S315000E1AD061E371066110611C21188D0F000961E327 +S315000E1AE071C8E200112EA0090009911A7103611046 +S315000E1AF0611C62E372076220622C32109111710230 +S315000E1B0062E3720662202120910B710362E3720773 +S315000E1B10622021207E086FE34F266EF668F6000BD4 +S315000E1B200009A600000E19F0000E1A302FE64F22FD +S315000E1B307FFC6EF361E371C49214112FD10A611109 +S315000E1B40415AF10D61E371C4511FF11D045A410B47 +S315000E1B500009D106F118F01C7E046FE34F266EF6CF +S315000E1B60000B0009498C0009FFFF4042FFFF40B4FD +S315000E1B702F862FE64F227FF46EF361E371CC114E62 +S315000E1B8061E3F14A989FD150611262E372CC532EF3 +S315000E1B9062E36433F428410B0009F10C6183711082 +S315000E1BA0F11A9890D1496112D249F228D249F128F8 +S315000E1BB0D2496423F42CF51C410B0009F10C618308 +S315000E1BC07108F11AD145F218D145F11861E3710881 +S315000E1BD0F120F11A9877D13D6112D23DF228D24109 +S315000E1BE0F128D2416423F42CF51C410B0009F10CAB +S315000E1BF061837114F11A9166D236F228D23BF1281E +S315000E1C00F212D233F128F212925D7208F128F21214 +S315000E1C1092597214F128F212D235F128F21262E3B9 +S315000E1C207208F128F32CF313F13C710CF11A914A58 +S315000E1C3071056110621CE10232108F050009914296 +S315000E1C40710CF118A0370009913D71056110621CE7 +S315000E1C50E10332108F2C00099835D11C6112D21C6B +S315000E1C60F228D21CF128D2236423F42CF51C410B46 +S315000E1C700009F10C6183711CF11A91249223720CE6 +S315000E1C80F2289220721CF128F212921C7210F3287E +S315000E1C909219721CF128F49DF54CF511F15CF13296 +S315000E1CA0F1207120F11A910E7120F118A00300098E +S315000E1CB091097110F118F01C7E0C6FE34F266EF62B +S315000E1CC068F6000B0009A600000E280C000E280868 +S315000E1CD0FFFF63ACFFFF67C4000E1738FFFF4128F6 +S315000E1CE0000E11ECFFFF6A24000E17F0000E11F421 +S315000E1CF0000E11F0000E18C02F862FE6FFCB4F22D6 +S315000E1D006EF3913592347238F1287130F11A982F9C +S315000E1D10912E7138FC18912B713CF218F18DF42C22 +S315000E1D20F51CD114410B0009F10CF2CCF211F12C79 +S315000E1D3061837134F11A911B7128E20021209117EB +S315000E1D407127E2002120D10C6110611C21188D082B +S315000E1D500009910DD2086220622C425AF12D712C87 +S315000E1D60F11A6FE34F26FCF96EF668F6000B0009C2 +S315000E1D70A6000009000E2394FFFF69B12F862FE6F9 +S315000E1D80FFCB4F227FF86EF3D13D410B0009610365 +S315000E1D90611C21188D080009D13A410B0009610317 +S315000E1DA0611C21188D050009D137410B0009A07C55 +S315000E1DB00009D136F21891617160F118F2158F2A69 +S315000E1DC00009D133F21891597150F118F2158F227C +S315000E1DD0000991537126611021188D1C0009D12D11 +S315000E1DE0F218D12DF118F2158F15000991467127AB +S315000E1DF0E200212091427128611021188F550009A9 +S315000E1E00913C7128E20121209138D221F128714CA2 +S315000E1E10F11AA04A0009D11DF118912F7140F2183E +S315000E1E20F2158F3F0009D11BF218D11CF118F215CD +S315000E1E308F38000991227128E2002120911E712708 +S315000E1E40E2012120911A92197244F1287130F11A89 +S315000E1E50981491137144FC1891107148F218F18D73 +S315000E1E60F42CF51CD10E410B0009F10CF2CCF2113B +S315000E1E70F12C61837134F11AA0170009A60000092E +S315000E1E80000E19B0000E1970000E1CF8FFFF67A0A9 +S315000E1E90FFFF67C4FFFF647C000E1928000E19248D +S315000E1EA0000E2394D155410B000991A5712862109D +S315000E1EB0E10132108D020009A0840009919C712661 +S315000E1EC06210E10232108F4F0009929561E37104A0 +S315000E1ED0724CF128F11A918F712CF118F13D015ABD +S315000E1EE07101D2474108312CF21861E3710462E3A5 +S315000E1EF07204F128F122F11A917E712CF118F13D3E +S315000E1F00015AD23F4108312CF118F29DF21361E3CA +S315000E1F10710462E37204F128F122F11A916C715484 +S315000E1F20F21861E3710462E37204F128F120F11AEA +S315000E1F309162713062E37204F128F11A985C915B3A +S315000E1F407130FC189158715CF218F18DF42CF51C59 +S315000E1F50D12C410B0009F10CF2CCF211F12C61835C +S315000E1F607134F11AA02A000991467138FC18914372 +S315000E1F707158F218F18DF42CF51CD122410B000983 +S315000E1F80F10C61E3F3CCF311F13CF11A913471309B +S315000E1F9062E3F128F11A982F912E715CF218F18DE9 +S315000E1FA0F42CF51CD117410B0009F10C61E3F21864 +S315000E1FB0F32CF311F13C61837134F11A911C7128E3 +S315000E1FC0E2022120D110F21891167130F118F21595 +S315000E1FD08D080009D10CF218910E7138F118F21510 +S315000E1FE08F160009D109D2096220622CE301223B29 +S315000E1FF0622C2120A01C0009A6000009000E1CF868 +S315000E2000000E190C000E2394FFFF67C4FFFF760027 +S315000E2010D10CF11891147134F218F2158F080009CB +S315000E2020D109D2096220632CE2FE2239622C2120CC +S315000E20307E086FE34F26FCF96EF668F6000B000974 +S315000E2040A6000009FFFF67C4FFFF76002FE64F22AA +S315000E20507FF46EF361E371CC114F61E37104F14AC3 +S315000E206061E3F15A61E371CC521F912432168F0D42 +S315000E2070000961E371CC521F911E32168D060009BE +S315000E208061E371CC511FF118A00E0009D10B61123C +S315000E209062E372CC572F63E3730462E36473F4381E +S315000E20A0F528410B0009F10CF01C7E0C6FE34F2650 +S315000E20B06EF6000B0009A600A6730009000E28088E +S315000E20C02FE64F227FF86EF361E371C8114F61E37D +S315000E20D0F14A61E371C8521F911A32168F06000932 +S315000E20E061E371C8511FF118A00B0009D1096112E5 +S315000E20F062E372C8532F62E36433F428410B00097E +S315000E2100F10CF01C7E086FE34F266EF6000B0009ED +S315000E2110A6000009000E280C2FE64F226EF3D106FC +S315000E21206112410B0009D105410B00096FE34F26E1 +S315000E21306EF6000B00090009000E2810000E214055 +S315000E21402FE64F226EF3920D910D64236513D10681 +S315000E2150410B0009D105410B00096FE34F266EF6C0 +S315000E2160000B0009A600A674000E21B0000E221464 +S315000E21702FE64F226EF391146110621C91123210EB +S315000E21808D0A0009920D910E64236513D106410B3B +S315000E21900009D106410B00096FE34F266EF6000BC0 +S315000E21A00009A60000B4A674000E21B0000E22147B +S315000E21B02FE67FF06EF361E371D0114D61E371D0BE +S315000E21C0115C61E371D062E372D0522C112E61E381 +S315000E21D071D062E372D0522D112FA00C000961E36B +S315000E21E071D0511FE200212261E371D062E372D0F9 +S315000E21F0522F7204112F62E372D061E371D0522F07 +S315000E2200511E32128FEB00097E106FE36EF6000B35 +S315000E2210000900092F862FE64F226EF39865D133FB +S315000E2220410B00096103621C618371032120985CD6 +S315000E2230D12F410B00096103621C618371022120BB +S315000E2240915371256110611C21188F060009914C5E +S315000E2250D2286220622C712521209146D226622038 +S315000E2260622C622E71262120913FD224F1287138DC +S315000E2270F11A913AD222F128713CF11A9135D221F6 +S315000E2280F128715CF11A9130D21FF1287154F11AAE +S315000E2290912BD21EF1287158F11A9126D21CF128D3 +S315000E22A07140F11A9121D21BF1287144F11A911C39 +S315000E22B0D219F1287148F11A9117D218F1287160C6 +S315000E22C0F11A9112D216F1287150F11A910DD215FA +S315000E22D06220622C710521209107E2B421206FE362 +S315000E22E04F266EF668F6000B0009A600000E19F0D2 +S315000E22F0000E1A30000E18DC000E1904000E18E03F +S315000E2300000E18E4000E18E8000E1908000E18EC60 +S315000E2310000E18F8000E18FC000E1900000E18F02C +S315000E2320000E18F4000E11E82FE67FFC6EF361E343 +S315000E2330F14A61E3F218F18DF2158F04000961E39B +S315000E2340F118A003000961E3F118F14DF01C7E04AB +S315000E23506FE36EF6000B00092FE67FF86EF361E36E +S315000E23607104F14A61E3F15A62E3720461E3F12802 +S315000E2370F218F2158F05000961E37104F118A00237 +S315000E2380000961E3F118F01C7E086FE36EF6000B90 +S315000E2390000900092FE67FF86EF361E37104F14A36 +S315000E23A061E3F15A62E3720461E3F228F118F21561 +S315000E23B08F05000961E37104F118A002000961E3BB +S315000E23C0F118F01C7E086FE36EF6000B000900098B +S315000E23D02FE64F226EF3D105410B0009D104410BB6 +S315000E23E000096FE34F266EF6000B0009000E1A70F9 +S315000E23F0000E25802FE64F226EF3D106410B000903 +S315000E2400D1056112410B00096FE34F266EF6000BE4 +S315000E241000090009000E1D7C000E28142FE64F221F +S315000E24207FF46EF361E371CC114F61E371072150B6 +S315000E243061E371CC116D61E371062170913E716D90 +S315000E24406110611C21188F3300099137716C611070 +S315000E2450611C21188D12000961E371CC511F6110A8 +S315000E2460631C62E3720761E37117643365206610BD +S315000E2470E700D113410B0009A010000961E371CCEE +S315000E2480511D6110631C62E3720661E3711B6433B6 +S315000E249065206610E700D10A410B0009910E920DD8 +S315000E24A0726C6220622CE301223A622C716C21203E +S315000E24B07E0C6FE34F266EF6000B0009A600000990 +S315000E24C0000E24C42FE67FFC6EF361E371032140F8 +S315000E24D061E37102215061E37101216061E32170B4 +S315000E24E0914B716D6110611C21188D07000961E316 +S315000E24F06110621CE10132108F3A0009913D716E36 +S315000E250062E37201622021209137716862E37202E2 +S315000E2510622021209131716962E3720262202120CC +S315000E252061E371036110611C21188D21000991244C +S315000E253062E372036220322C622C72FF622C716A85 +S315000E25402120911A62E372036220322C622C72FFF2 +S315000E2550622C716B2120911092106220622CE30185 +S315000E2560223A622C716421209107716DE2012120BD +S315000E25707E046FE36EF6000B0009A60099A600090D +S315000E25802FE64F226EF3916E716B6110611C21184E +S315000E25908D2E0009916771696110611C21188F1CBF +S315000E25A000099160925F72686220622C7169212027 +S315000E25B09159925872646220622CE301223A622C7F +S315000E25C071642120914F6213726B6220622C72FF2E +S315000E25D0622C716B2120A027000991446213726947 +S315000E25E06220622C72FF622C71692120A01C0009E8 +S315000E25F09139716E6110611C21188D0B0009913293 +S315000E26006213726E6220622C72FF622C716E212032 +S315000E2610A00A0009912792276220622C716421205C +S315000E26209121716DE2002120D110F118D110F2180E +S315000E2630F2158902F2148F270009D10EF218D10E67 +S315000E2640F118F2158F200009D10C6110621CD10C05 +S315000E26506110611C64236513E600E700D109410B86 +S315000E26600009A0770009A60099A60009FFFF7AD8EF +S315000E2670000E1960FFFF6588000E1964000E1938EA +S315000E2680000E1934000E24C4D140F118D140F218B0 +S315000E2690F2158902F2148F160009D13EF218D13EB8 +S315000E26A0F118F2158F0F0009D13C6110621CD13C56 +S315000E26B06110611C64236513E600E700D139410BF6 +S315000E26C00009A0470009D138F118D138F218F215D1 +S315000E26D08F160009D12FF218D135F118F2158F0F7A +S315000E26E00009D1346110621CD1336110611C642360 +S315000E26F06513E600E700D12B410B0009A02A00095D +S315000E2700D12EF218D12EF118F2158F0F0009D12DF8 +S315000E27106110621CD12C6110611C64236513E640A6 +S315000E2720E700D120410B0009A0140009D127F118AA +S315000E2730D127F218F2158F0D0009D1266110621CF1 +S315000E2740D1256110611C64236513E640E700D1159F +S315000E2750410B0009911971646110621C9115716526 +S315000E27606110611C32108D040009D11C6112410BDF +S315000E27700009910A920972646220622C7165212009 +S315000E27806FE34F266EF6000B0009A600FFFF7AD800 +S315000E2790000E195CFFFF6588000E1964000E1930D5 +S315000E27A0000E192C000E24C4FFFF40C8000E196C33 +S315000E27B0000E1968000E1940000E193CFFFF41402D +S315000E27C0000E194C000E1948000E1944FFFF2D7409 +S315000E27D0000E1950000E1954000E1958000E281826 +S315000E27E02FE64F226EF3D106410B0009D105611279 +S315000E27F0410B00096FE34F266EF6000B0009000928 +S315000E2800000E23D0000E281C000BE918000BE864FE +S315000E2810000100C0000343D000079D88000132EC82 +S309000E2820070016681B +S31500E00000DF076FF2D007400B0009D008400B00096C +S31500E00010AFFE00090009000900090009000900090E +S31500E00020000E11D80E005EC80E00506C0E005E0C7D +S31500E00030002B0009002B0009002B0009002B00090A +S31500E00040002B0009002B0009002B0009002B0009FA +S31500E00050002B0009002B0009002B0009000900090C +S31500F0000043210002000D4CE4454355204964656EDA +S31500F00010746966696572000043210002000C29C00C +S31500F00020456E67696E65204C6F616420536D6F6F26 +S31500F000307468696E6720466163746F7220410000D0 +S31500F0004043210002000C29BC456E67696E65204CA1 +S31500F000506F616420536D6F6F7468696E67204661D7 +S31500F0006063746F722042000043210002000C29B82D +S31500F00070456E67696E65204C6F616420536D6F6FD6 +S31500F000807468696E6720466163746F7220416C74A0 +S31500F0009065726E617465000043210002000C29CC84 +S31500F000A0456E67696E65204C6F616420536D6F6FA6 +S31500F000B07468696E6720466163746F722046696E74 +S31500F000C0616C000043210010FFFF677345000000DC +S31500F000D00000000000090009000000014D65727083 +S31500F000E04D6F6420436C757463682053776974634D +S31500F000F06800000043210010FFFF61684500000022 +S31500F001000000000000090009000000014D65727052 +S31500F001104D6F64204272616B652053776974636832 +S31500F001200000000043210010FFFF6167450000005A +S31500F001300000000000090009000000014D65727022 +S31500F001404D6F642043727569736520526573756DE2 +S31500F00150652053776974636800000000432100103E +S31500F00160FFFF61664500000000000000000900097D +S31500F00170000000014D6572704D6F64204372756921 +S31500F00180736520436F6173742053776974636800F5 +S31500F0019043210010FFFF760045000000000000003C +S31500F001A000090009000000014D6572704D6F642072 +S31500F001B0526576204C696D6974204675656C2043EE +S31500F001C07574205377697463680000004321000852 +S31500F001D0FFFFA60545000000000000000009000929 +S31500F001E075696E7438000000000900094D6572707B +S31500F001F04D6F64205344204D6F64652053776974C6 +S31500F002006368000043210008FFFFA60845000000D0 +S31500F002100000000000090009666C6F6174000000C0 +S31500F00220000900094D6572704D6F642053442056E5 +S31500F002306F6C756D6574726963204566666963698E +S31500F00240656E63790000000043210008FFFFA60CED +S31500F00250450000000000000000090009666C6F61AF +S31500F0026074000000000900094D6572704D6F64203E +S31500F00270534420416972666C6F772046696E616CF3 +S31500F00280204F75747075740043210008FFFFA610A7 +S31500F00290450000000000000000090009666C6F616F +S31500F002A074000000000900094D6572704D6F6420FE +S31500F002B0534420416972666C6F77204D6166205316 +S31500F002C0656E736F7200000043210008FFFFA614ED +S31500F002D0450000000000000000090009666C6F612F +S31500F002E074000000000900094D6572704D6F6420BE +S31500F002F053442041746D6F7370686572696320436F +S31500F003006F6D70656E736174696F6E0043210008DE +S31500F00310FFFFA61C450000000000000000090009D0 +S31500F00320666C6F6174000000000900094D6572701B +S31500F003304D6F6420534420426C656E64696E67208D +S31500F00340526174696F00000043210008FFFFA62088 +S31500F00350450000000000000000090009666C6F61AE +S31500F0036074000000000900094D6572704D6F64203D +S31500F00370534420416972666C6F7720426C656E64F7 +S31500F00380696E670043210004000E1738566F6C75CE +S31500F003906D657472696320456666696369656E6347 +S31500F003A079205461626C652031000000432100041D +S31500F003B0000E17F041746D6F737068657269632093 +S31500F003C0507265737375726520436F6D70656E73E9 +S31500F003D06174696F6E00000043210004000E18C0BE +S31500F003E0534420426C656E64696E67205461626C9A +S31500F003F06500000043210002000E11F4456E6769A6 +S31500F004006E6520446973706C6163656D656E74002A +S31500F0041043210002000E11E85370656564204465BF +S31500F004206E73697479204D6F646500004321000294 +S31500F00430000E11F053706565642044656E7369743F +S31500F004407920436F6E7374616E740000432100026D +S31500F00450000E18E0526576204C696D6974202852BA +S31500F0046065646C696E65290043210002000E19046B +S31500F00470466C617420466F6F742053686966742009 +S31500F004804D6F64650000000043210002000E19085C +S31500F00490466C617420466F6F7420536869667420E9 +S31500F004A044656C746120284175746F6D617469637D +S31500F004B0204C696D6974290043210002000E18EC86 +S31500F004C0466C617420466F6F7420536869667420B9 +S31500F004D044656C74612028537461746963204C69B7 +S31500F004E06D6974290000000043210002000E18F027 +S31500F004F0466C617420466F6F742053686966742089 +S31500F005004D696E696D756D2053706565642054682C +S31500F00510726573686F6C640043210002000E18F474 +S31500F00520466C617420466F6F742053686966742058 +S31500F005304D696E696D756D2052504D205468726527 +S31500F0054073686F6C6400000043210002000E18F817 +S31500F005504C43204D6178696D756D20537065656407 +S31500F00560205468726573686F6C6400004321000262 +S31500F00570000E19244C43204D696E696D756D20543B +S31500F0058068726F74746C65205468726573686F6C0A +S31500F005906400000043210002000E1928464653204D +S31500F005A04D696E696D756D205468726F74746C6503 +S31500F005B0205468726573686F6C6400004321000212 +S31500F005C0000E190C4646532047656172205261743D +S31500F005D0696F730043210002000E18FC5265762005 +S31500F005E04C696D697420284C61756E636820436FA1 +S31500F005F06E74726F6C29000043210008FFFFA62677 +S31500F0060045000000000000000009000975696E74DD +S31500F0061038000000000900094D6572704D6F6420C6 +S31500F00620464653204D6F64650000000043210008E4 +S31500F00630FFFFA627450000000000000000090009A2 +S31500F0064075696E7438000000000900094D65727016 +S31500F006504D6F64204C4320456E6761676564205397 +S31500F0066069676E616C00000043210008FFFFA62851 +S31500F0067045000000000000000009000975696E746D +S31500F0068038000000000900094D6572704D6F642056 +S31500F0069046465320456E6761676564205369676E09 +S31500F006A0616C000043210008FFFFA62C4500000006 +S31500F006B0000000000009000975696E74380000003A +S31500F006C0000900094D6572704D6F6420464653204F +S31500F006D047656172204D6F6E69746F72000000009D +S31500F006E043210008FFFFA63045000000000000008F +S31500F006F000090009666C6F617400000000090009CA +S31500F007004D6572704D6F64205265764C696D6974F3 +S31500F0071020416374697665204375742052504D000C +S31500F0072043210008FFFFA63445000000000000004A +S31500F0073000090009666C6F61740000000009000989 +S31500F007404D6572704D6F64205265764C696D6974B3 +S31500F007502041637469766520526573756D65205224 +S31500F00760504D000043210008FFFFA6384500000069 +S31500F007700000000000090009666C6F61740000005B +S31500F00780000900094D6572704D6F64205265644C26 +S31500F00790696E65204375742052504D004321000860 +S31500F007A0FFFFA63C4500000000000000000900091C +S31500F007B0666C6F6174000000000900094D65727087 +S31500F007C04D6F64205265644C696E65204879737488 +S31500F007D0657265736973000043210008FFFFA64444 +S31500F007E0450000000000000000090009666C6F611A +S31500F007F074000000000900094D6572704D6F6420A9 +S31500F008004C61756E636820436F6E74726F6C205224 +S31500F00810504D000043210008FFFFA64845000000A8 +S31500F008200000000000090009666C6F6174000000AA +S31500F00830000900094D6572704D6F64204C61756E4C +S31500F00840636820436F6E74726F6C204879737465B9 +S31500F00850726573697300000043210008FFFFA65418 +S31500F00860450000000000000000090009666C6F6199 +S31500F0087074000000000900094D6572704D6F642028 +S31500F008804646532044656C746120284175746F297F +S31500F008900000000043210008FFFFA65845000000B5 +S31500F008A00000000000090009666C6F61740000002A +S31500F008B0000900094D6572704D6F6420464653205D +S31500F008C044656C746120285374617469632900006F +S31500F008D043210008FFFFA64C450000000000000081 +S31500F008E000090009666C6F617400000000090009D8 +S31500F008F04D6572704D6F642046465320456E6761B4 +S31500F0090067656D656E742052504D000043210008F6 +S31500F00910FFFFA66045000000000000000009000986 +S31500F00920666C6F6174000000000900094D65727015 +S31500F009304D6F6420464653205370656564205468B5 +S31500F00940726573686F6C640043210008FFFFA64070 +S31500F00950450000000000000000090009666C6F61A8 +S31500F0096074000000000900094D6572704D6F642037 +S31500F009704C43205370656564205468726573686FE4 +S31500F009806C64000043210002000E195C46424B43A2 +S31500F00990205468726573686F6C640000432100022E +S31500F009A0000E192C46424B4320466C617368205367 +S31500F009B0706565640000000043210002000E1930E6 +S31500F009C046424B4320466C61736820436F756E74E4 +S31500F009D00000000043210002000E196046424B431E +S31500F009E020536576657265204B6E6F636B20546895 +S31500F009F0726573686F6C640043210002000E19344F +S31500F00A0046424B4320536576657265204B6E6F63A5 +S31500F00A106B20466C61736820537065656400000056 +S31500F00A2043210002000E193846424B4320536576A7 +S31500F00A30657265204B6E6F636B20466C6173682040 +S31500F00A40436F756E7400000043210002000E1964B6 +S31500F00A5046424B43204C6F6164205468726573685C +S31500F00A606F6C640043210002000E195049414D207D +S31500F00A70466C617368205468726573686F6C6400C5 +S31500F00A8043210002000E195449414D20466C617312 +S31500F00A906820436F756E740043210002000E1958EA +S31500F00AA049414D20466C617368205370656564005A +S31500F00AB043210002000E196C45475420414631206F +S31500F00AC0526573697374616E6365205468726573F9 +S31500F00AD0686F6C640000000043210002000E193CB0 +S31500F00AE045475420466C6173682053706565640011 +S31500F00AF043210002000E194045475420466C6173AD +S31500F00B006820436F756E740043210002000E196869 +S31500F00B10454754204C6F6164205468726573686F62 +S31500F00B206C64000043210002000E19444543542032 +S31500F00B30466C61736820537065656400432100025A +S31500F00B40000E194845435420466C61736820436F84 +S31500F00B50756E740043210002000E194C4543542073 +S31500F00B60466C6173682054656D7065726174757258 +S31500F00B7065205468726573686F6C640043210008E1 +S31500F00B80FFFFA66445000000000000000009000910 +S31500F00B9075696E7438000000000900094D657270C1 +S31500F00BA04D6F642043454C205369676E616C0000BD +S31500F00BB043210008FFFF99A6450000000000000051 +S31500F00BC00009000975696E74380000000009000913 +S31500F00BD04D6572704D6F642043454C205369676EC6 +S31500F00BE0616C204F454D000043210008FFFFA66BC6 +S31500F00BF045000000000000000009000975696E74E8 +S31500F00C0038000000000900094D6572704D6F6420D0 +S31500F00C1043454C20466C61736820436F756E74656E +S31500F00C207200000043210008FFFFA669450000009E +S31500F00C30000000000009000975696E7438000000B4 +S31500F00C40000900094D6572704D6F642043454C20D4 +S31500F00C50537065656420436F756E746572000000AD +S31500F00C600009000900090009000900090009000946 +S311070010002FE66EF36FE36EF6000B000997 +S3150700100C4A75737420746F2070726F7665207468D6 +S3150700101C617420617373657274696F6E7320636193 +S3150700102C6E206661696C2E0046697273742065784A +S3150700103C65637574696F6E2073686F756C6420735E +S3150700104C6574204D61664D6F646520746F204D6124 +S3150700105C664D6F646553656E736F722E00000000E4 +S3150700106C466972737420657865637574696F6E204B +S3150700107C73686F756C642072657475726E204D415A +S3150700108C462066726F6D2073656E736F722E000045 +S3150700109C5365636F6E6420657865637574696F6EE7 +S315070010AC2073686F756C642072657475726E204D4B +S315070010BC41462066726F6D2073656E736F722E00D4 +S315070010CC4D61664D6F64652073686F756C6420722D +S315070010DC656D61696E2073657420746F204D61664A +S315070010EC4D6F646553656E736F722E005365636F30 +S315070010FC6E6420657865637574696F6E2073686FA7 +S3150700110C756C642072657475726E204D4146206647 +S3150700111C726F6D2073706565642D64656E73697483 +S3150700112C792E00004D61664D6F64652073686F7587 +S3150700113C6C642072656D61696E2073657420746FBB +S3150700114C204D61664D6F6465537065656444656EC5 +S3150700115C736974792E000000436865636B696E6763 +S3150700116C20626C656E64206D6F646520636F6465C1 +S3150700117C2C2063656C6C2073686F756C64206265D4 +S3150700118C207A65726F20616E642072657475726E53 +S3150700119C206D61662073656E736F722076616C7550 +S315070011AC652E00004D61664D6F64652073686F751B +S315070011BC6C642072656D61696E207365742E000010 +S315070011CC436865636B696E6720426C656E64207253 +S315070011DC6174696F00000000436865636B696E672D +S315070011EC2053442076616C75650000005265644C8B +S315070011FC696E653A20416C6C6F77206675656C2055 +S3150700120C6174205265644C696E65437574202D2094 +S3150700121C312052504D2C206D6F76696E672C2063EA +S3150700122C6C75746368206E6F742070726573736562 +S3150700123C6420214675656C43757400005265644CD1 +S3150700124C696E653A20416C6C6F77206675656C2004 +S3150700125C6174205265644C696E65437574202D2044 +S3150700126C312052504D2C206D6F76696E672C20639A +S3150700127C6C75746368206E6F742070726573736512 +S3150700128C642C20214C43456E67616765640000003A +S3150700129C5265644C696E653A2043757420667565AC +S315070012AC6C206174205265644C696E6543757420B5 +S315070012BC2B20312052504D2C206D6F76696E672C82 +S315070012CC20636C75746368206E6F74207072657317 +S315070012DC736564005265644C696E653A2052657392 +S315070012EC756D65206675656C206174205265644C56 +S315070012FC696E65526573756D65202D2031205250C8 +S3150700130C4D2C206D6F76696E672C20636C75746334 +S3150700131C68206E6F742070726573736564000000C5 +S3150700132C4E6F726D616C2073746F707065643A20C2 +S3150700133C416C6C6F77206675656C206174204C6107 +S3150700134C756E6368436F6E74726F6C437574202B7E +S3150700135C20313030302052504D2C2073746F707002 +S3150700136C65642C206E6F20636C75746368000000CF +S3150700137C4E6F726D616C206D6F76696E673A2041A0 +S3150700138C6C6C6F77206675656C206174204C617583 +S3150700139C6E6368436F6E74726F6C437574202B2083 +S315070013AC313030302052504D2C206D6F76696E6778 +S315070013BC2C206E6F20636C75746368004C61756EB8 +S315070013CC636820436F6E74726F6C20546573742058 +S315070013DC33204661696C65643A207374616E647375 +S315070013EC74696C6C2C20636C7574636820707265F9 +S315070013FC73736564000000004C61756E6368204367 +S3150700140C6F6E74726F6C205465737420342046614A +S3150700141C696C65643A2030206D70682C2031303049 +S3150700142C207468722C2072706D2062656C6F772041 +S3150700143C6C696D69740000004C61756E63682043B6 +S3150700144C6F6E74726F6C3A20437574206675656C93 +S3150700145C206174204C61756E6368436F6E74726F8E +S3150700146C6C437574202B20312052504D2C207374ED +S3150700147C616E647374696C6C2C20636C7574636829 +S3150700148C2070726573736564000000004C61756E9D +S3150700149C636820436F6E74726F6C3A20526573756E +S315070014AC6D65206675656C206174204C61756E637D +S315070014BC68436F6E74726F6C526573756D65202D0C +S315070014CC20312052504D2C207374616E64737469ED +S315070014DC6C6C2C20636C75746368207072657373FF +S315070014EC65640000466C617420466F6F7420536800 +S315070014FC696674696E673A20526573756D65206601 +S3150700150C75656C20617420466C6174466F6F7453F5 +S3150700151C68696674526573756D65202D2031205286 +S3150700152C504D2C206D6F76696E672C20636C757425 +S3150700153C636820707265737365640000466C61742A +S3150700154C20466F6F74205368696674696E673A2014 +S3150700155C437574206675656C20617420466C6174DE +S3150700156C466F6F745368696674437574202B203104 +S3150700157C2052504D2C206D6F76696E672C20636C4C +S3150700158C7574636820707265737365640000000078 +S3150700159C46465320726573756D65207768656E20B0 +S315070015AC72706D2064726F70730000005768656EF9 +S315070015BC20726576206C696D697420666C6167208C +S315070015CC6973207365742C206E6F206F746865724F +S315070015DC206269747320617265207365742E00002E +S315070015EC5768656E20726576206C696D697420661E +S315070015FC6C616720697320636C65617265642C2066 +S3150700160C6E6F206F746865722062697473206172DD +S3150700161C6520636C65617265642E00005265644CC7 +S3150700162C696E65206375742F726573756D652073A6 +S3150700163C616E6974792E00004C61756E6368436F31 +S3150700164C6E74726F6C206375742F726573756D6526 +S3150700165C2073616E6974792E00000000307841356D +S3150700166C41354135413500006572726F7220696EDE +S3150700167C2072616D20686F6C652100004F454D2007 +S3150700168C63656C20706F707065642C2043656C20E5 +S3150700169C5369676E616C2073686F756C642068613B +S315070016AC766520706F7070656420746F6F0000002C +S315070016BC4F454D2063656C20706F707065642C20E8 +S315070016CC3230206379636C6573206C617465722C98 +S315070016DC2043656C205369676E616C2073686F7560 +S315070016EC6C642073746179206F6E00004F454D2032 +S315070016FC63656C20706F707065642C2032312063C3 +S3150700170C79636C6573206C617465722C2043656C08 +S3150700171C205369676E616C2073686F756C642073F0 +S3150700172C746179206F6E00004F454D2063656C2000 +S3150700173C6973206E6F7720676F6E652C2043656C17 +S3150700174C207369676E616C2073686F756C642068AB +S3150700175C6176652064726F707065640062656C6F84 +S3150700176C772066626B63206C6F61642074687265A0 +S3150700177C73686F6C6420666F722063656C2C206EC1 +S3150700178C6F206C6967687421000000006B6E6F63CD +S3150700179C6B696E672120466C61736820636F756E83 +S315070017AC7465722073686F756C6420696E69740052 +S315070017BC6B6E6F636B696E672120466C617368206D +S315070017CC737065656420636F756E746572207368D4 +S315070017DC6F756C6420696E69740000006B6E6F63BD +S315070017EC6B696E672120466C6173682073686F7529 +S315070017FC6C64207374617274000000006B6E6F6307 +S3150700180C6B696E6720676F6E652120466C6173681E +S3150700181C2073686F756C64207A65726F0000000020 +S3150700182C6B6E6F636B696E6720676F6E65212046FB +S3150700183C6C61736820636F756E7465722073686F5D +S3110700184C756C64207A65726F000000005E +S30907001858123456786B +S3090700185CFFFFA66473 +S3150E0050002FE67FFC6EF361E371C4114F00097E0437 +S3150E0050106FE36EF6000B00092FE64F227FF46EF358 +S3150E00502061E371CC114E61E371CC115D61E371CC1C +S3150E005030511E21188F11000961E371CCE200112F68 +S3150E0050409111714062E372CC522F112C61E371CC37 +S3150E005050511D6413D104410B00097E0C6FE34F26DC +S3150E0050606EF6000B0009A6000E0050002FE64F222A +S3150E0050706EF3D105E4006513D104410B00096FE30D +S3150E0050804F266EF6000B00090700100C0E00501886 +S3150E0050902FE67FF86EF361E371C89220112F61E35C +S3150E0050A071C8921D112EA00C000961E371C8511F23 +S3150E0050B0E200212261E371C862E372C8522F7204C4 +S3150E0050C0112F62E372C861E371C8522F511E32125C +S3150E0050D08FEB00097E086FE36EF6000B0009A60043 +S3150E0050E0BFFF2FE67FF86EF361E37104F14A61E3C9 +S3150E0050F0F15A61E37104F118C711F208F12261E366 +S3150E005100F218F2158F030009E100A00F000961E302 +S3150E0051107104F118C70BF208F21261E3F118F215D9 +S3150E0051208F030009E100A0010009E101415AF10DCA +S3150E005130F11D005A7E086FE36EF6000B000900099A +S3150E0051403F8020C53F7FBE772F862FE64F227FF406 +S3150E0051506EF391FE7105E2002120D17F410B00090D +S3150E005160D17E410B000961E37108C77DF109F11A81 +S3150E00517061E37104F108F11A91EB71056110611C7E +S3150E005180601388010129611C415AF10DD176F11D7A +S3150E005190045A6513D175410B0009D175C775F1080F +S3150E0051A0F11AD175C775F108F11AD175C775F108DF +S3150E0051B0F11AD175C775F108F11AD17592CA212166 +S3150E0051C068E3D174410B0009F10CF81A62E361E34E +S3150E0051D07108F428F518D170410B0009405AF10DEB +S3150E0051E0D16EF11D045A6513D160410B000968E3B7 +S3150E0051F0D168410B0009F10CF81A62E361E37108FC +S3150E005200F428F518D164410B0009405AF10DD1640A +S3150E005210F11D045A6513D155410B0009919971057B +S3150E0052206110611C601388010129611C415AF10D40 +S3150E005230D15CF11D045A6513D14C410B00099188BE +S3150E0052407105E202212068E3D152410B0009F10CEF +S3150E005250F81A62E361E37104F428F518D14E410B96 +S3150E0052600009405AF10DD150F11D045A6513D13F74 +S3150E005270410B0009916D71056110611C6013880266 +S3150E0052800129611C415AF10DD148F11D045A6513CD +S3150E005290D136410B0009915C7105E203212068E3CA +S3150E0052A0D13C410B0009F10CF81A62E361E3710877 +S3150E0052B0F428F518D138410B0009405AF10DD13CAE +S3150E0052C0F11D045A6513D129410B0009914171054F +S3150E0052D06110611C601388030129611C415AF10D8E +S3150E0052E0D134F11D045A6513D120410B0009D12288 +S3150E0052F0C724F108F11A68E3D126410B0009F10C17 +S3150E005300F81A9126711CF218C72BF108F42CF51C0D +S3150E005310D121410B0009405AF10DD128F11D045A35 +S3150E0053206513D112410B00099113710CF218C724A3 +S3150E005330F108F42CF51CD118410B0009405AF10D59 +S3150E005340D120F11D045A6513D108410B0009A03B6B +S3150E0053500009A600400000090E005090000E22140F +S3150E005360405F3127406EC101070010340E00501801 +S3150E005370FFFF67C4447A0000FFFF63AC4386757671 +S3150E005380FFFF6A24442F0000FFFF412841700000F2 +S3150E005390FFFF4042000E1B2C0E0050E20700106C61 +S3150E0053A00700109C070010CC070010F807001130FC +S3150E0053B007001164070011B03F0E38E3070011CC49 +S3150E0053C041386E0F070011E461E37108F118C71A30 +S3150E0053D0F209F122F208F12061E3F418F51CD11856 +S3150E0053E0410B0009405AF10DD116F11D045A6513F1 +S3150E0053F0D115410B0009911E71056110611C6013D8 +S3150E00540088030129611C415AF10DD110F11D045A70 +S3150E0054106513D10D410B0009D10DC70EF108F11A16 +S3150E00542091097105E20121207E0C6FE34F266EF67F +S3150E00543068F6000B0009A6003EE38E3A40CCEC104F +S3150E0054400E0050E2070011640E005018070011B04E +S3150E005450FFFF63AC438675762FE67FFC6EF361E342 +S3150E00546071C4114F61E371C4511F21188F0A0009CF +S3150E005470D10BD20B6220632CE2FE2239622C212044 +S3150E005480A0080009D106D2066220622CE301223B57 +S3150E005490622C21207E046FE36EF6000B00090009D4 +S3150E0054A0FFFF67732FE67FFC6EF361E371C4114F46 +S3150E0054B061E371C4511F21188F0A0009D10BD20B5B +S3150E0054C06220632CE2FE2239622C2120A0080009FC +S3150E0054D0D106D2066220622CE301223B622C2120E9 +S3150E0054E07E046FE36EF6000B00090009FFFF61688C +S3150E0054F02FE67FFC6EF3D10E6110621C61E3710321 +S3150E005500E3012239212061E371036110611C211828 +S3150E0055108F06000961E371036110611CA001000989 +S3150E005520E10160137E046FE36EF6000B00090009BD +S3150E005530FFFF76002FE64F227FE86EF361E37117C9 +S3150E005540214061E371D8115E61E371D8116D61E39B +S3150E0055507108F14A61E37104F15A61E3F16AD118F7 +S3150E005560410B0009D117410B000961E371D8511E99 +S3150E0055706413D115410B000961E371D8511D6413F3 +S3150E005580D112410B0009D11262E37208F128F11A09 +S3150E005590D11062E3F128F11AD10F62E37204F128F9 +S3150E0055A0F11AD10E62E3721762202120D10C410B43 +S3150E0055B000097E186FE34F266EF6000B00090009F0 +S3150E0055C00E005090000E22140E0054A40E005458D5 +S3150E0055D0FFFF647CFFFF67C4FFFF67A0FFFF760037 +S3150E0055E0000E1D7C2FE64F227FFC6EF3D151F21872 +S3150E0055F0F19DF32CF311F13CC74FF309F208E400C9 +S3150E005600E500E600F43CF52CF61CD14D410B0009E5 +S3150E005610D14C410B00096103611C21180129611C43 +S3150E005620415AF10DD148F11D045A6513D147410B6C +S3150E0056300009917D7127611021180129611C415ABB +S3150E005640F10DD143F11D045A6513D140410B0009EA +S3150E005650D138F218F19DF120C737F308C73DF2088D +S3150E005660E400E500E600F43CF52CF61CD134410BC3 +S3150E0056700009D134410B00096103611C21188D0903 +S3150E005680000991557127611021188F030009E10158 +S3150E005690A0010009E100D23064136523D12B410B22 +S3150E0056A00009D12ED223F228D22DF128F211F19D26 +S3150E0056B0F32CF311F13CF11AD12A410B0009D12139 +S3150E0056C0410B00096103611C21188F090009912FF6 +S3150E0056D07127611021188F030009E101A00100094D +S3150E0056E0E100D22164136523D118410B0009D11FA5 +S3150E0056F0F118C71FF209F120F308F28DE400E50058 +S3150E005700E600F43CF52CF61CD10D410B0009D10D2B +S3150E005710410B00096103611C21188F2D00099107A9 +S3150E0057207127611021188F270009E101A0250009B4 +S3150E005730A6000009000E18E042480000419800003D +S3150E0057400E0055340E0054F0070011F80E005018D6 +S3150E00575007001248419000000700129CFFFF67C425 +S3150E005760000E18E4000E1D7C070012E0000E18FC59 +S3150E005770447A000042C80000E100D23E641365235D +S3150E005780D13D410B0009D13DF118C73DF209F1207B +S3150E005790F309F208E400E500E600F43CF52CF61CED +S3150E0057A0D13A410B0009D13A410B00096103611C44 +S3150E0057B021188F090009915B7127611021188F033B +S3150E0057C00009E101A0010009E100D232641365234C +S3150E0057D0D129410B0009D129F218F19DF32CF311B1 +S3150E0057E0F13CC72DF308F28DE400E500E601F43C2A +S3150E0057F0F52CF61CD125410B0009D125410B0009CC +S3150E0058006103611C21188F090009913171276110FE +S3150E00581021188F030009E101A0010009E100D21F42 +S3150E00582064136523D114410B0009D114F218F19DAE +S3150E005830F32CF311F13CC713F308F28DE400E500E7 +S3150E005840E601F43CF52CF61CD110410B0009D110E3 +S3150E005850410B00096103611C21188F210009910774 +S3150E0058607127611021188D1B0009E101A01900098D +S3150E005870A60000090700132C0E005018000E18FC87 +S3150E005880447A000042C80000424800000E0055341B +S3150E0058900E0054F00700137C41200000070013C8C9 +S3150E0058A0E100D24E64136523D14D410B0009D14D53 +S3150E0058B0F218F19DF120C74CF308F28DE400E500D5 +S3150E0058C0E601F43CF52CF61CD148410B0009D148F3 +S3150E0058D0410B00096103611C21188D090009917C99 +S3150E0058E07127611021188D030009E101A00100093D +S3150E0058F0E100D24064136523D139410B0009D13E34 +S3150E005900D238F228F19DF32CF311F13CF11AD13B6A +S3150E005910410B0009D136410B00096103611C2118A8 +S3150E0059208D09000991597127611021188D030009FF +S3150E005930E101A0010009E100D23164136523D128EB +S3150E005940410B0009D12CD227F228D22EF128F211C2 +S3150E005950F19DF42CF411F14CF11AD128410B0009EA +S3150E005960D123410B00096103611C21188F0900091F +S3150E00597091337127611021188D030009E101A001F1 +S3150E0059800009E100D21E64136523D115410B0009EF +S3150E005990D11DF218F19DF32CF310D11CF118C71C72 +S3150E0059A0F208F121F28DE400E500E601F43CF52C57 +S3150E0059B0F61CD10E410B0009D10D410B00096103F6 +S3150E0059C0611C21188D260009910771276110211877 +S3150E0059D08D200009E101A01E0009A600070014048F +S3150E0059E00E005018000E18FC42C800000E0055346A +S3150E0059F00E0054F007001444FFFF67C4000E1D7C12 +S3150E005A0007001498000E1900000E1924000E18E057 +S3150E005A1043480000E100D24264136523D141410B95 +S3150E005A200009D141D240F128C740F208F121F11AFE +S3150E005A30D13F410B0009D13F410B00096103611CA7 +S3150E005A4021188F090009916A7127611021188F0399 +S3150E005A500009E101A0010009E100D23164136523BA +S3150E005A60D130410B0009D134E2042120D12EC733A7 +S3150E005A70F108F11AD132C733F108F11AD132924E2A +S3150E005A807244F128C731F208F121F11AE400D1303F +S3150E005A90410B0009D126410B0009E401D12C410B23 +S3150E005AA00009D123410B0009D122410B00096103E4 +S3150E005AB0611C21188F090009913171276110211877 +S3150E005AC08F030009E101A0010009E100D221641350 +S3150E005AD06523D114410B0009D11B92207250F12877 +S3150E005AE0C71DF208F120F11AD10FD21CF228F19D32 +S3150E005AF0F120F11AD10E410B0009D10E410B00090E +S3150E005B006103611C21188D2B000991087128621002 +S3150E005B10E10232108F240009E101A0220009A6003D +S3150E005B20070014980E005018FFFF647C41200000F9 +S3150E005B30000E1D7C0E0054F0FFFF69B141A000005F +S3150E005B40FFFF67A042480000FFFF67C442C800007F +S3150E005B500E005458070014F043FA0000000E1928E0 +S3150E005B60E100D22564136523D124410B0009D1240B +S3150E005B7092407234F228F19DF32CF311F13CF11A96 +S3150E005B80D120410B0009D120410B00096103611C94 +S3150E005B9021188F090009912D7128611021188F0384 +S3150E005BA00009E101A0010009E100D2186413652382 +S3150E005BB0D112410B0009D112921C7250F128C71452 +S3150E005BC0F208F120F11AD10F410B0009D10D410B4C +S3150E005BD00009D10D410B00096103611C21188D19B5 +S3150E005BE0000991077128611021188D130009E10132 +S3150E005BF0A0110009A6000009070015480E0050184E +S3150E005C00FFFF67C4000E1D7C0E0054F00700159CA6 +S3150E005C1043FA0000E100D25E64136523D15D410BA9 +S3150E005C200009D15DD25DF228F19DF32CF311F13C02 +S3150E005C30F11AD15BC75BF108F11AE401D15A410B97 +S3150E005C400009D15A410B0009D158410B0009D15810 +S3150E005C50410B00096103611C21180129611C415A7F +S3150E005C60F10DD154F11D045A6513D14A410B0009A9 +S3150E005C70D149C751F108F11AD150C751F108F11A9D +S3150E005C80D147F18DF11AE401D147410B0009E40029 +S3150E005C90D14C410B0009D14CE2002120D143410BDE +S3150E005CA00009D24961E371036220212061E3710389 +S3150E005CB06110611C601388010129611C415AF10DA6 +S3150E005CC0D142F11D045A6513D132410B0009D13B65 +S3150E005CD0C73FF108F11AD132F18DF11AE400D13233 +S3150E005CE0410B0009D138E2FF2120D130410B0009CA +S3150E005CF0D1356110621C61E371036227212061E3D5 +S3150E005D0071036110611C601388010129611C415ADF +S3150E005D10F10DD130F11D045A6513D11E410B000948 +S3150E005D2091347138F21891317138F318912E713C05 +S3150E005D30F118F43CF411F14CF2150129611C415A8B +S3150E005D40F10DD125F11D045A6513D112410B00092F +S3150E005D50911C7144F21891197144F31891167148F9 +S3150E005D60F118F43CF411F14CF2150129611C415A5B +S3150E005D70F10DD11AF11D045A6513D106410B000916 +S3150E005D807E046FE34F266EF6000B0009A60000098F +S3150E005D90070015480E005018FFFF647C000E1928E8 +S3150E005DA0FFFF67A0419800000E005458000E1D7CA0 +S3150E005DB00E0054F0070014F042C80000FFFF67C43F +S3150E005DC045BB80000E0054A4FFFF7600070015B8F1 +S3150E005DD0447A0000070015EC070016280700164443 +S3150E005DE02FE64F227FFC6EF361E371C4D206112FAC +S3150E005DF061E371C4511F410B00097E046FE34F2608 +S3150E005E006EF6000B00090009000100C02FE64F22B6 +S3150E005E106EF3D10A410B0009D109410B0009D109D4 +S3150E005E20410B0009D108410B0009D108410B0009AD +S3150E005E306FE34F266EF6000B00090009000E214097 +S3150E005E400E005F9C0E0055E40E0051480E005E508B +S3150E005E502FE64F227FF86EF361E371C89225112F5C +S3150E005E6061E371C89222112E62E372C861E371C8B2 +S3150E005E70522F511E32128D060009D10DE400651304 +S3150E005E80D10C410B0009D10C410B0009D10B410B72 +S3150E005E900009D10B410B0009D10A410B00097E08FE +S3150E005EA06FE34F266EF6000B0009B3D0A6740009F9 +S3150E005EB0070016740E005018000E1B2C000E23F44D +S3150E005EC0000E27E00E005DE02FE66EF300090009D6 +S3150E005ED0D113C714F108F11AD113C714F108F11A28 +S3150E005EE0D113D2136220622CE301223B622C2120B5 +S3150E005EF0D110D2106220632CE2FE2239622C2120B0 +S3150E005F00D10DC70EF108F11AD10DC70EF108F11A0F +S3150E005F10D10D920421216FE36EF6000B00094CCCD5 +S3150E005F20FFFF67C4447A0000FFFF67A041400000F0 +S3150E005F30FFFF6773FFFF7600FFFF63AC4386757640 +S3150E005F40FFFF6A24442F0000FFFF40422FE64F2238 +S3150E005F507FF86EF361E371C8114E61E371C8E2001A +S3150E005F60112FA00A0009D10C410B000961E371C87B +S3150E005F7062E372C8522F7201112F62E372C861E397 +S3150E005F8071C8522F511E32138FED00097E086FE332 +S3150E005F904F266EF6000B0009000E25802FE64F22C7 +S3150E005FA06EF3D183410B000991FEE201212091FC93 +S3150E005FB07164E2002120D17FF18DF11AD17EE200CB +S3150E005FC02120D17ED27EF128C77EF208F120F11A69 +S3150E005FD0D17DD27EF128C77BF208F121F11AD17C50 +S3150E005FE0E2002120D17BF19DF11A91DE7165E2006E +S3150E005FF0212091DA716BE200212091D67169E200BF +S3150E0060002120D175410B000991CF71646110611C7D +S3150E006010601388010129611C415AF10DD16FF11DE2 +S3150E006020045A6513D16E410B0009E414D16D410B70 +S3150E006030000991BA71646110611C6013880101290F +S3150E006040611C415AF10DD168F11D045A6513D164D4 +S3150E006050410B0009D160410B000991A671646110D4 +S3150E006060611C601388010129611C415AF10DD15F33 +S3150E006070F11D045A6513D15A410B00099194E200A1 +S3150E0060802120D155410B0009918F71646110611C5D +S3150E00609021180129611C415AF10DD155F11D045AE1 +S3150E0060A06513D14F410B0009D152F19DF11AD14121 +S3150E0060B0C751F108F11AD148410B00099175716467 +S3150E0060C06110611C21180129611C415AF10DD14B39 +S3150E0060D0F11D045A6513D142410B0009D145C7483B +S3150E0060E0F108F11AD13C410B0009915E716B6110FA +S3150E0060F0611C2118E1FF611A611C415AF10DD14153 +S3150E006100F11D045A6513D136410B0009914D716983 +S3150E0061106110611C2118E1FF611A611C415AF10DD3 +S3150E006120D139F11D045A6513D12D410B0009913C4D +S3150E00613071686110611C2118E1FF611A611C415AD8 +S3150E006140F10DD131F11D045A6513D125410B00090C +S3150E006150912B71646110611C601388010129611C09 +S3150E006160415AF10DD129F11D045A6513D11C410B6B +S3150E0061700009D120F19DF11AD10EF18DF11A91156A +S3150E0061806413D118410B0009910F71646110611CE3 +S3150E00619021180129611C415AF10DD11DF11D045A18 +S3150E0061A06513D10FA036000999A6A60000C80009EE +S3150E0061B0000E2214FFFF7AD8FFFF6773FFFF40C859 +S3150E0061C0000E196C40A00000FFFF4140000E194C56 +S3150E0061D0FFFF6167FFFF2D74000E258007001688EE +S3150E0061E00E0050180E005F4C070016BC070016F87E +S3150E0061F007001734FFFF6588BF8000000700176889 +S3150E0062004040000007001798070017BC070017E864 +S3150E00621007001808410B00099113716B6110611C80 +S3150E00622021180129611C415AF10DD106F11D045A9E +S3150E0062306513D105410B00096FE34F266EF6000B71 +S3110E0062400009A6000700182C0E005018CE +S3158000100012340000000000091234000100002004A0 +S3158000101000000008415A31473730304B000000004D +S31580001020000000004646464646464646000000000A +S31580001030000000001234000F000E1000415A3147A4 +S315800010403730304B2E4D6552704D6F442E466C6155 +S3158000105073682E54657374696E672E7631342E37B5 +S315800010602E362E31363700000000000000000000CA +S3158000107000000000000000000000000000000000EA +S315800010801234000B000D4CE40000000A373437326E +S315800010903539343030370000000000000000000091 +S315800010A01234000C464646464646464646460000AC +S315800010B00000000000000000123400084D657270C8 +S315800010C0000000000000000000000000123400094B +S315800010D054657374696E67000000000000000000AC +S315800010E000000000000000001234000D537065659A +S315800010F0642044656E73697479206C6F61642063C3 +S31580001100616C63756C6174696F6E20776974682031 +S315800011104D414620626C656E64696E675F5F4C61A7 +S31580001120756E636820636F6E74726F6C20616E6417 +S3158000113020666C617420666F6F742073686966744C +S31580001140696E672028737461746963206F72206783 +S315800011506561722062617365642063616C63756C1E +S315800011606174696F6E295F5F43454C20466C61737D +S3158000117068202846424B432C204547542066726F90 +S315800011806D2046726F6E74204F322072657369735C +S3158000119074616E63652C20436F6F6C616E7420542E +S315800011A0656D70295F5F0000000000000000000090 +S315800011B01234000300041E2C00034390000E23F417 +S315800011C0526576204C696D697420537562726F75AD +S315800011D074696E6520486F6F6B00000012340003DF +S315800011E00000FB18000100C0000E21184D656D6FD0 +S315800011F0727920526573657420537562726F757447 +S31580001200696E6520486F6F6B000000001234000322 +S31580001210000049E8000BE864000E1B70537065659A +S31580001220642044656E73697479204D6166205375B8 +S3158000123062726F7574696E6520486F6F6B0000000F +S315800012401234000300079E0CFFFF99A6FFFFA664D9 +S3158000125043454C205369676E616C20486F6F6B0005 +S315800012601234000300041958000132EC000E27E006 +S315800012704D61696E20537562726F7574696E6520F3 +S31580001280486F6F6B205747444300000012340004B8 +S31580001290000E1000000E2820526F6D20486F6C657E +S315800012A020436F64652050617463680000090009FB +S309800012B000090009A2 +S70500E000001A +S30DFF002004415A31473730304BDA +S30AFF0D4CE4747259400733 +S309FF041E2C00034390D3 +S309FF00FB18000100C023 +S309FF0049E8000BE8646F +S309FF079E0CFFFF99A609 +S309FF041958000132EC63 +S315FF0E1000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +S315FF0E1010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD +S315FF0E1020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +S315FF0E1030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD +S315FF0E1040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D +S315FF0E1050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D +S315FF0E1060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D +S315FF0E1070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D +S315FF0E1080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D +S315FF0E1090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D +S315FF0E10A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D +S315FF0E10B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D +S315FF0E10C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D +S315FF0E10D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D +S315FF0E10E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +S315FF0E10F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED +S315FF0E1100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC +S315FF0E1110FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +S315FF0E1120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +S315FF0E1130FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +S315FF0E1140FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +S315FF0E1150FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C +S315FF0E1160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +S315FF0E1170FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C +S315FF0E1180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +S315FF0E1190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C +S315FF0E11A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C +S315FF0E11B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C +S315FF0E11C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C +S315FF0E11D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C +S315FF0E11E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +S315FF0E11F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +S315FF0E1200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB +S315FF0E1210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB +S315FF0E1220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB +S315FF0E1230FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB +S315FF0E1240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B +S315FF0E1250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B +S315FF0E1260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B +S315FF0E1270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B +S315FF0E1280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B +S315FF0E1290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B +S315FF0E12A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B +S315FF0E12B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +S315FF0E12C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +S315FF0E12D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +S315FF0E12E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB +S315FF0E12F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB +S315FF0E1300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +S315FF0E1310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +S315FF0E1320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +S315FF0E1330FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +S315FF0E1340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A +S315FF0E1350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A +S315FF0E1360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A +S315FF0E1370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A +S315FF0E1380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +S315FF0E1390FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +S315FF0E13A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +S315FF0E13B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +S315FF0E13C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A +S315FF0E13D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +S315FF0E13E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +S315FF0E13F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +S315FF0E1400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +S315FF0E1410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +S315FF0E1420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +S315FF0E1430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315FF0E1440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315FF0E1450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315FF0E1460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315FF0E1470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315FF0E1480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315FF0E1490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315FF0E14A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315FF0E14B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315FF0E14C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315FF0E14D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315FF0E14E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315FF0E14F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +S315FF0E1500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 +S315FF0E1510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 +S315FF0E1520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +S315FF0E1530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +S315FF0E1540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +S315FF0E1550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +S315FF0E1560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 +S315FF0E1570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 +S315FF0E1580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 +S315FF0E1590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +S315FF0E15A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 +S315FF0E15B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +S315FF0E15C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +S315FF0E15D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +S315FF0E15E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 +S315FF0E15F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S315FF0E1600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +S315FF0E1610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +S315FF0E1620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +S315FF0E1630FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +S315FF0E1640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +S315FF0E1650FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 +S315FF0E1660FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +S315FF0E1670FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 +S315FF0E1680FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315FF0E1690FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315FF0E16A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315FF0E16B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315FF0E16C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315FF0E16D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315FF0E16E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 +S315FF0E16F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +S315FF0E1700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 +S315FF0E1710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 +S315FF0E1720FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +S315FF0E1730FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 +S315FF0E1740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +S315FF0E1750FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S315FF0E1760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +S315FF0E1770FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S315FF0E1780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315FF0E1790FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315FF0E17A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315FF0E17B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315FF0E17C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315FF0E17D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315FF0E17E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +S315FF0E17F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S315FF0E1800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5 +S315FF0E1810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF0E1820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S315FF0E1830FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA5 +S315FF0E1840FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF95 +S315FF0E1850FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF85 +S315FF0E1860FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF75 +S315FF0E1870FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF65 +S315FF0E1880FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF55 +S315FF0E1890FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF45 +S315FF0E18A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF35 +S315FF0E18B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF25 +S315FF0E18C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15 +S315FF0E18D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF05 +S315FF0E18E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5 +S315FF0E18F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 +S315FF0E1900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4 +S315FF0E1910FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4 +S315FF0E1920FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4 +S315FF0E1930FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA4 +S315FF0E1940FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF94 +S315FF0E1950FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF84 +S315FF0E1960FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF74 +S315FF0E1970FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF64 +S315FF0E1980FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF54 +S315FF0E1990FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF44 +S315FF0E19A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF34 +S315FF0E19B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24 +S315FF0E19C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14 +S315FF0E19D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF04 +S315FF0E19E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4 +S315FF0E19F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4 +S315FF0E1A00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3 +S315FF0E1A10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3 +S315FF0E1A20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3 +S315FF0E1A30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA3 +S315FF0E1A40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF93 +S315FF0E1A50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF83 +S315FF0E1A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF73 +S315FF0E1A70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF63 +S315FF0E1A80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF53 +S315FF0E1A90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF43 +S315FF0E1AA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF33 +S315FF0E1AB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23 +S315FF0E1AC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF13 +S315FF0E1AD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03 +S315FF0E1AE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3 +S315FF0E1AF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3 +S315FF0E1B00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2 +S315FF0E1B10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2 +S315FF0E1B20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2 +S315FF0E1B30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA2 +S315FF0E1B40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF92 +S315FF0E1B50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF82 +S315FF0E1B60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF72 +S315FF0E1B70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF62 +S315FF0E1B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF52 +S315FF0E1B90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF42 +S315FF0E1BA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF32 +S315FF0E1BB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22 +S315FF0E1BC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF12 +S315FF0E1BD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02 +S315FF0E1BE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2 +S315FF0E1BF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2 +S315FF0E1C00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1 +S315FF0E1C10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC1 +S315FF0E1C20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1 +S315FF0E1C30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA1 +S315FF0E1C40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF91 +S315FF0E1C50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81 +S315FF0E1C60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF71 +S315FF0E1C70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF61 +S315FF0E1C80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF51 +S315FF0E1C90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF41 +S315FF0E1CA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF31 +S315FF0E1CB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21 +S315FF0E1CC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11 +S315FF0E1CD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF01 +S315FF0E1CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1 +S315FF0E1CF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1 +S315FF0E1D00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0 +S315FF0E1D10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0 +S315FF0E1D20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0 +S315FF0E1D30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA0 +S315FF0E1D40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF90 +S315FF0E1D50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80 +S315FF0E1D60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70 +S315FF0E1D70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 +S315FF0E1D80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF50 +S315FF0E1D90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40 +S315FF0E1DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF30 +S315FF0E1DB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF20 +S315FF0E1DC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF10 +S315FF0E1DD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 +S315FF0E1DE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0 +S315FF0E1DF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 +S315FF0E1E00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF +S315FF0E1E10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF +S315FF0E1E20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAF +S315FF0E1E30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F +S315FF0E1E40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F +S315FF0E1E50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F +S315FF0E1E60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F +S315FF0E1E70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F +S315FF0E1E80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F +S315FF0E1E90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F +S315FF0E1EA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F +S315FF0E1EB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F +S315FF0E1EC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F +S315FF0E1ED0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +S315FF0E1EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF +S315FF0E1EF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF +S315FF0E1F00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE +S315FF0E1F10FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE +S315FF0E1F20FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAE +S315FF0E1F30FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E +S315FF0E1F40FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E +S315FF0E1F50FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7E +S315FF0E1F60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6E +S315FF0E1F70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E +S315FF0E1F80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E +S315FF0E1F90FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E +S315FF0E1FA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2E +S315FF0E1FB0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E +S315FF0E1FC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0E +S315FF0E1FD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE +S315FF0E1FE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE +S315FF0E1FF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE +S315FF0E2000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD +S315FF0E2010FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD +S315FF0E2020FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAD +S315FF0E2030FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D +S315FF0E2040FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D +S315FF0E2050FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D +S315FF0E2060FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D +S315FF0E2070FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D +S315FF0E2080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D +S315FF0E2090FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D +S315FF0E20A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D +S315FF0E20B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1D +S315FF0E20C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D +S315FF0E20D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD +S315FF0E20E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED +S315FF0E20F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD +S315FF0E2100FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC +S315FF0E2110FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC +S315FF0E2120FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC +S315FF0E2130FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C +S315FF0E2140FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8C +S315FF0E2150FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7C +S315FF0E2160FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C +S315FF0E2170FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C +S315FF0E2180FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C +S315FF0E2190FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C +S315FF0E21A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C +S315FF0E21B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C +S315FF0E21C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C +S315FF0E21D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC +S315FF0E21E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC +S315FF0E21F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC +S315FF0E2200FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB +S315FF0E2210FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB +S315FF0E2220FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB +S315FF0E2230FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B +S315FF0E2240FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B +S315FF0E2250FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B +S315FF0E2260FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6B +S315FF0E2270FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B +S315FF0E2280FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B +S315FF0E2290FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B +S315FF0E22A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B +S315FF0E22B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B +S315FF0E22C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B +S315FF0E22D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB +S315FF0E22E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB +S315FF0E22F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB +S315FF0E2300FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA +S315FF0E2310FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA +S315FF0E2320FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAA +S315FF0E2330FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A +S315FF0E2340FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A +S315FF0E2350FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A +S315FF0E2360FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6A +S315FF0E2370FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A +S315FF0E2380FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A +S315FF0E2390FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A +S315FF0E23A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A +S315FF0E23B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A +S315FF0E23C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A +S315FF0E23D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA +S315FF0E23E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEA +S315FF0E23F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA +S315FF0E2400FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9 +S315FF0E2410FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9 +S315FF0E2420FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9 +S315FF0E2430FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF99 +S315FF0E2440FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89 +S315FF0E2450FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF79 +S315FF0E2460FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF69 +S315FF0E2470FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF59 +S315FF0E2480FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF49 +S315FF0E2490FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF39 +S315FF0E24A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF29 +S315FF0E24B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19 +S315FF0E24C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF09 +S315FF0E24D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9 +S315FF0E24E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9 +S315FF0E24F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9 +S315FF0E2500FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8 +S315FF0E2510FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8 +S315FF0E2520FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA8 +S315FF0E2530FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF98 +S315FF0E2540FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88 +S315FF0E2550FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF78 +S315FF0E2560FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF68 +S315FF0E2570FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF58 +S315FF0E2580FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF48 +S315FF0E2590FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF38 +S315FF0E25A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF28 +S315FF0E25B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18 +S315FF0E25C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF08 +S315FF0E25D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8 +S315FF0E25E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8 +S315FF0E25F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8 +S315FF0E2600FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7 +S315FF0E2610FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB7 +S315FF0E2620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA7 +S315FF0E2630FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF97 +S315FF0E2640FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF87 +S315FF0E2650FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF77 +S315FF0E2660FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF67 +S315FF0E2670FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF57 +S315FF0E2680FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF47 +S315FF0E2690FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF37 +S315FF0E26A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF27 +S315FF0E26B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17 +S315FF0E26C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF07 +S315FF0E26D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7 +S315FF0E26E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7 +S315FF0E26F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7 +S315FF0E2700FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6 +S315FF0E2710FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6 +S315FF0E2720FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6 +S315FF0E2730FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF96 +S315FF0E2740FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF86 +S315FF0E2750FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF76 +S315FF0E2760FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF66 +S315FF0E2770FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF56 +S315FF0E2780FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF46 +S315FF0E2790FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF36 +S315FF0E27A0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF26 +S315FF0E27B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16 +S315FF0E27C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF06 +S315FF0E27D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6 +S315FF0E27E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6 +S315FF0E27F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6 +S315FF0E2800FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC5 +S315FF0E2810FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5 +S306FF0E2820FFA5