From d95ed0b83c1c998c28637dbc4bffd2ffccd580e8 Mon Sep 17 00:00:00 2001 From: Merp Date: Mon, 21 Apr 2014 22:13:27 -0400 Subject: [PATCH 01/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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/20] 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 0ea9c127619779d6179b656e9be2b156755988f5 Mon Sep 17 00:00:00 2001 From: Merp Date: Thu, 12 Jun 2014 20:43:19 -0400 Subject: [PATCH 20/20] Updated header and linker script for A8DH200V. Added Flash Testing patch for A8DH200V. --- MerpMod/Targets/A8DH200V.h | 4 +- MerpMod/Targets/A8DH200V.txt | 2 + ....MeRpMoD.Flash.Testing.v14.6.12.1258.patch | 1457 +++++++++++++++++ 3 files changed, 1461 insertions(+), 2 deletions(-) create mode 100644 Release/Flash/A8DH200V.MeRpMoD.Flash.Testing.v14.6.12.1258.patch diff --git a/MerpMod/Targets/A8DH200V.h b/MerpMod/Targets/A8DH200V.h index 6ee500c..4cb0f94 100644 --- a/MerpMod/Targets/A8DH200V.h +++ b/MerpMod/Targets/A8DH200V.h @@ -1,8 +1,8 @@ -#define MOD_DATE 13.8.14.2226 +#define MOD_DATE 14.6.12.1258 #include "Flash.h" #define MOD_CONFIG Flash -#define MOD_BUILD Debug +#define MOD_BUILD Testing #define MOD_RELEASE 0 #define ECU_CALIBRATION_ID A8DH200V #define ECU_IDENTIFIER 4352594006 diff --git a/MerpMod/Targets/A8DH200V.txt b/MerpMod/Targets/A8DH200V.txt index c899304..d6c41c0 100644 --- a/MerpMod/Targets/A8DH200V.txt +++ b/MerpMod/Targets/A8DH200V.txt @@ -15,6 +15,8 @@ SECTIONS *(RomHole_BoostHackTables) *(RomHole_TimingHackTables) *(RomHole_MapSwitchTables) + *(RomHole_ProgModeTables) + *(RomHole_PortLoggerTables) *(RomHole_Vin) *(RomHole_Code) *(RomHole_Functions) diff --git a/Release/Flash/A8DH200V.MeRpMoD.Flash.Testing.v14.6.12.1258.patch b/Release/Flash/A8DH200V.MeRpMoD.Flash.Testing.v14.6.12.1258.patch new file mode 100644 index 0000000..92a3803 --- /dev/null +++ b/Release/Flash/A8DH200V.MeRpMoD.Flash.Testing.v14.6.12.1258.patch @@ -0,0 +1,1457 @@ +S02B0000433A5C55736572735C6D657272696C6C5C4465765C4D6572704D6F645C4D6572704D6F645C466C618C +S3150000000000E00000FFFF200000E00000FFFF2000EE +S3150000001000E0003000E0003400E0003800E0003C82 +S3150000002000E0004000E0004400E0004800E0004C32 +S3110000003000E0005000E0005400E0005822 +S315000E100041384448323030562E4D6552704D6F443D +S315000E10102E466C6173682E54657374696E672E76F0 +S315000E102031342E362E31322E313235380000000054 +S315000E1030434F5059524947485420323031322C32A0 +S315000E1040303133204D657272696C6C20412E204D05 +S315000E105079657273204949492C206D657272696CE7 +S315000E10606C616D7965727369696940676D61696CEA +S315000E10702E636F6D206D657272696C6C616D79652C +S315000E1080727369696940676D61696C2E636F6D2E47 +S315000E109020554E415554484F52495A4544204449CD +S315000E10A053545249425554494F4E20535452494374 +S315000E10B0544C592050524F484942495445442E20CB +S315000E10C04F4646524F414420555345204F4E4C599C +S315000E10D02E204E4F2057415252414E54592E2054D7 +S315000E10E048495320534F46545741524520495320A1 +S315000E10F04C4943454E53454420544F20594F552095 +S315000E11009341532049532C9420414E442057495421 +S315000E1110484F555420414E592057415252414E5434 +S315000E112059204F4620414E59204B494E442C2057AC +S315000E1130484554484552204F52414C2C205752494F +S315000E11405454454E2C20455850524553532C204945 +S315000E11504D504C494544204F5220535441545554FA +S315000E11604F52592C20494E434C5544494E47204226 +S315000E11705554204E4F54204C494D49544544205405 +S315000E11804F2057415252414E54494553204F462007 +S315000E11904D45524348414E544142494C4954592CAF +S315000E11A0204649544E45535320464F522041205017 +S315000E11B04152544943554C415220505552504F536B +S315000E11C0452C20414E44204E4F4E494E4652494ED6 +S315000E11D047454D454E542E00FFFF100000000000FF +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 +S315000E18E00200000045E100004248000042480000A8 +S315000E18F000000000457A000042200000458CA00042 +S315000E190040A00000457A0000424800004068B43905 +S315000E1910401800003FE168733FAC49BA3F789375B3 +S315000E19203F4189374270000042A6000002000000C7 +S315000E19300400000001000000080000000400000082 +S315000E194002000000100000001000000042F000002F +S315000E19503F0000002000000002000000BDCCCCCDF0 +S315000E1960C00666663FC000003FC0000041C80000CA +S315000E19702FE67FFC6EF3D10D6110621C61E37103DD +S315000E1980E3082239212061E371036110621CE1082C +S315000E199032108F030009E101A0010009E100601376 +S315000E19A07E046FE36EF6000B00090009FFFF643C30 +S315000E19B02FE67FFC6EF3D10D6110631C61E371039C +S315000E19C0E2802239212061E371036110621C910CC1 +S315000E19D032108F030009E101A0010009E100601336 +S315000E19E07E046FE36EF6000B00090080FFFF69753B +S315000E19F02FE67FFC6EF3D10D6110621C61E371035D +S315000E1A00E3042239212061E371036110621CE104B3 +S315000E1A1032108F030009E101A0010009E1006013F5 +S315000E1A207E046FE36EF6000B00090009FFFF643CAF +S315000E1A302FE67FFC6EF3D10D6110621C61E371031C +S315000E1A40E3022239212061E371036110621CE10277 +S315000E1A5032108F030009E101A0010009E1006013B5 +S315000E1A607E046FE36EF6000B00090009FFFF643C6F +S315000E1A702F862FE64F227FF86EF368E37807D1297B +S315000E1A80410B00096103281068E37806D126410B45 +S315000E1A90000961032810914471036110611C62E311 +S315000E1AA072076220622C32108D280009913971025C +S315000E1AB06110611C62E372066220622C32108D1474 +S315000E1AC0000961E371076110611C21188D1600096A +S315000E1AD061E371066110611C21188D0F000961E327 +S315000E1AE071C8E200112EA0090009911A7103611046 +S315000E1AF0611C62E372076220622C32109111710230 +S315000E1B0062E3720662202120910B710362E3720773 +S315000E1B10622021207E086FE34F266EF668F6000BD4 +S315000E1B2000098FE0000E19F0000E1A302FE64F2234 +S315000E1B307FFC6EF361E371C4D20A112FD10A6111D3 +S315000E1B40415AF10D61E371C4511FF11D045A410B47 +S315000E1B500009D106F118F01C7E046FE34F266EF6CF +S315000E1B60000B000900008160FFFF5BFEFFFF5CD0EB +S315000E1B702F862FE64F227FF46EF361E371CC114E62 +S315000E1B8061E3F14A989FD150611262E372CC532EF3 +S315000E1B9062E36433F428410B0009F10C6183711082 +S315000E1BA0F11A9890D1496112D249F228D249F128F8 +S315000E1BB0D2496423F42CF51C410B0009F10C618308 +S315000E1BC07108F11AD145F218D145F11861E3710881 +S315000E1BD0F120F11A9877D13D6112D23DF228D24109 +S315000E1BE0F128D2416423F42CF51C410B0009F10CAB +S315000E1BF061837114F11A9166D236F228D23BF1281E +S315000E1C00F212D233F128F212925D7208F128F21214 +S315000E1C1092597214F128F212D235F128F21262E3B9 +S315000E1C207208F128F32CF313F13C710CF11A914A58 +S315000E1C3071056110621CE10232108F050009914296 +S315000E1C40710CF118A0370009913D71056110621CE7 +S315000E1C50E10332108F2C00099835D11C6112D21C6B +S315000E1C60F228D21CF128D2236423F42CF51C410B46 +S315000E1C700009F10C6183711CF11A91249223720CE6 +S315000E1C80F2289220721CF128F212921C7210F3287E +S315000E1C909219721CF128F49DF54CF511F15CF13296 +S315000E1CA0F1207120F11A910E7120F118A00300098E +S315000E1CB091097110F118F01C7E0C6FE34F266EF62B +S315000E1CC068F6000B00098FE0000E280C000E28089F +S315000E1CD0FFFF6624FFFF699C000E1738FFFF5C9C12 +S315000E1CE0000E11ECFFFF5CD4000E17F0000E11F47F +S315000E1CF0000E11F0000E18C02F862FE6FFCB4F22D6 +S315000E1D006EF3913592347238F1287130F11A982F9C +S315000E1D10912E7138FC18912B713CF218F18DF42C22 +S315000E1D20F51CD114410B0009F10CF2CCF211F12C79 +S315000E1D3061837134F11A911B7128E20021209117EB +S315000E1D407127E2002120D10C6110611C21188D082B +S315000E1D500009910DD2086220622C425AF12D712C87 +S315000E1D60F11A6FE34F26FCF96EF668F6000B0009C2 +S315000E1D708FE00009000E2394FFFF6AA52F862FE63B +S315000E1D80FFCB4F227FF86EF3D13D410B0009610365 +S315000E1D90611C21188D080009D13A410B0009610317 +S315000E1DA0611C21188D050009D137410B0009A07C55 +S315000E1DB00009D136F21891617160F118F2158F2A69 +S315000E1DC00009D133F21891597150F118F2158F227C +S315000E1DD0000991537126611021188D1C0009D12D11 +S315000E1DE0F218D12DF118F2158F15000991467127AB +S315000E1DF0E200212091427128611021188F550009A9 +S315000E1E00913C7128E20121209138D221F128714CA2 +S315000E1E10F11AA04A0009D11DF118912F7140F2183E +S315000E1E20F2158F3F0009D11BF218D11CF118F215CD +S315000E1E308F38000991227128E2002120911E712708 +S315000E1E40E2012120911A92197244F1287130F11A89 +S315000E1E50981491137144FC1891107148F218F18D73 +S315000E1E60F42CF51CD10E410B0009F10CF2CCF2113B +S315000E1E70F12C61837134F11AA01700098FE0000965 +S315000E1E80000E19B0000E1970000E1CF8FFFF6994B3 +S315000E1E90FFFF699CFFFF66C8000E1928000E192465 +S315000E1EA0000E2394D155410B000991A5712862109D +S315000E1EB0E10132108D020009A0840009919C712661 +S315000E1EC06210E10232108F4F0009929561E37104A0 +S315000E1ED0724CF128F11A918F712CF118F13D015ABD +S315000E1EE07101D2474108312CF21861E3710462E3A5 +S315000E1EF07204F128F122F11A917E712CF118F13D3E +S315000E1F00015AD23F4108312CF118F29DF21361E3CA +S315000E1F10710462E37204F128F122F11A916C715484 +S315000E1F20F21861E3710462E37204F128F120F11AEA +S315000E1F309162713062E37204F128F11A985C915B3A +S315000E1F407130FC189158715CF218F18DF42CF51C59 +S315000E1F50D12C410B0009F10CF2CCF211F12C61835C +S315000E1F607134F11AA02A000991467138FC18914372 +S315000E1F707158F218F18DF42CF51CD122410B000983 +S315000E1F80F10C61E3F3CCF311F13CF11A913471309B +S315000E1F9062E3F128F11A982F912E715CF218F18DE9 +S315000E1FA0F42CF51CD117410B0009F10C61E3F21864 +S315000E1FB0F32CF311F13C61837134F11A911C7128E3 +S315000E1FC0E2022120D110F21891167130F118F21595 +S315000E1FD08D080009D10CF218910E7138F118F21510 +S315000E1FE08F160009D109D2096220632CE280223BAA +S315000E1FF0622C2120A01C00098FE00009000E1CF89F +S315000E2000000E190C000E2394FFFF699CFFFF71BC96 +S315000E2010D10CF11891147134F218F2158F080009CB +S315000E2020D109D2096220622CE37F2239622C21204B +S315000E20307E086FE34F26FCF96EF668F6000B000974 +S315000E20408FE00009FFFF699CFFFF71BC2FE64F2250 +S315000E20507FF46EF361E371CC114F61E37104F14AC3 +S315000E206061E3F15A61E371CC521F912432168F0D42 +S315000E2070000961E371CC521F911E32168D060009BE +S315000E208061E371CC511FF118A00E0009D10B61123C +S315000E209062E372CC572F63E3730462E36473F4381E +S315000E20A0F528410B0009F10CF01C7E0C6FE34F2650 +S315000E20B06EF6000B00098FE090530009000E2808FB +S315000E20C02FE64F227FF86EF361E371C8114F61E37D +S315000E20D0F14A61E371C8521F911A32168F06000932 +S315000E20E061E371C8511FF118A00B0009D1096112E5 +S315000E20F062E372C8532F62E36433F428410B00097E +S315000E2100F10CF01C7E086FE34F266EF6000B0009ED +S315000E21108FE00009000E280C2FE64F226EF3D10633 +S315000E21206112410B0009D105410B00096FE34F26E1 +S315000E21306EF6000B00090009000E2810000E214055 +S315000E21402FE64F226EF3920D910D64236513D10681 +S315000E2150410B0009D105410B00096FE34F266EF6C0 +S315000E2160000B00098FE09054000E21B0000E2214D1 +S315000E21702FE64F226EF391146110621C91123210EB +S315000E21808D0A0009920D910E64236513D106410B3B +S315000E21900009D106410B00096FE34F266EF6000BC0 +S315000E21A000098FE000B49054000E21B0000E2214E8 +S315000E21B02FE67FF06EF361E371D0114D61E371D0BE +S315000E21C0115C61E371D062E372D0522C112E61E381 +S315000E21D071D062E372D0522D112FA00C000961E36B +S315000E21E071D0511FE200212261E371D062E372D0F9 +S315000E21F0522F7204112F62E372D061E371D0522F07 +S315000E2200511E32128FEB00097E106FE36EF6000B35 +S315000E2210000900092F862FE64F226EF39865D133FB +S315000E2220410B00096103621C618371032120985CD6 +S315000E2230D12F410B00096103621C618371022120BB +S315000E2240915371256110611C21188F060009914C5E +S315000E2250D2286220622C712521209146D226622038 +S315000E2260622C622E71262120913FD224F1287138DC +S315000E2270F11A913AD222F128713CF11A9135D221F6 +S315000E2280F128715CF11A9130D21FF1287154F11AAE +S315000E2290912BD21EF1287158F11A9126D21CF128D3 +S315000E22A07140F11A9121D21BF1287144F11A911C39 +S315000E22B0D219F1287148F11A9117D218F1287160C6 +S315000E22C0F11A9112D216F1287150F11A910DD215FA +S315000E22D06220622C710521209107E2B421206FE362 +S315000E22E04F266EF668F6000B00098FE0000E19F009 +S315000E22F0000E1A30000E18DC000E18E0000E18E460 +S315000E2300000E18E8000E18EC000E18F0000E18F469 +S315000E2310000E1900000E1904000E1908000E18F80A +S315000E2320000E18FC000E11E82FE67FFC6EF361E33B +S315000E2330F14A61E3F218F18DF2158F04000961E39B +S315000E2340F118A003000961E3F118F14DF01C7E04AB +S315000E23506FE36EF6000B00092FE67FF86EF361E36E +S315000E23607104F14A61E3F15A62E3720461E3F12802 +S315000E2370F218F2158F05000961E37104F118A00237 +S315000E2380000961E3F118F01C7E086FE36EF6000B90 +S315000E2390000900092FE67FF86EF361E37104F14A36 +S315000E23A061E3F15A62E3720461E3F228F118F21561 +S315000E23B08F05000961E37104F118A002000961E3BB +S315000E23C0F118F01C7E086FE36EF6000B000900098B +S315000E23D02FE64F226EF3D105410B0009D104410BB6 +S315000E23E000096FE34F266EF6000B0009000E1A70F9 +S315000E23F0000E25802FE64F226EF3D106410B000903 +S315000E2400D1056112410B00096FE34F266EF6000BE4 +S315000E241000090009000E1D7C000E28142FE64F221F +S315000E24207FF46EF361E371CC114F61E371072150B6 +S315000E243061E371CC116D61E371062170913E716D90 +S315000E24406110611C21188F3300099137716C611070 +S315000E2450611C21188D12000961E371CC511F6110A8 +S315000E2460631C62E3720761E37117643365206610BD +S315000E2470E700D113410B0009A010000961E371CCEE +S315000E2480511D6110631C62E3720661E3711B6433B6 +S315000E249065206610E700D10A410B0009910E920DD8 +S315000E24A0726C6220622CE301223A622C716C21203E +S315000E24B07E0C6FE34F266EF6000B00098FE00009C7 +S315000E24C0000E24C42FE67FFC6EF361E371032140F8 +S315000E24D061E37102215061E37101216061E32170B4 +S315000E24E0914B716D6110611C21188D07000961E316 +S315000E24F06110621CE10132108F3A0009913D716E36 +S315000E250062E37201622021209137716862E37202E2 +S315000E2510622021209131716962E3720262202120CC +S315000E252061E371036110611C21188D21000991244C +S315000E253062E372036220322C622C72FF622C716A85 +S315000E25402120911A62E372036220322C622C72FFF2 +S315000E2550622C716B2120911092106220622CE30185 +S315000E2560223A622C716421209107716DE2012120BD +S315000E25707E046FE36EF6000B00098FE08BA2000956 +S315000E25802FE64F226EF3916E716B6110611C21184E +S315000E25908D2E0009916771696110611C21188F1CBF +S315000E25A000099160925F72686220622C7169212027 +S315000E25B09159925872646220622CE301223A622C7F +S315000E25C071642120914F6213726B6220622C72FF2E +S315000E25D0622C716B2120A027000991446213726947 +S315000E25E06220622C72FF622C71692120A01C0009E8 +S315000E25F09139716E6110611C21188D0B0009913293 +S315000E26006213726E6220622C72FF622C716E212032 +S315000E2610A00A0009912792276220622C716421205C +S315000E26209121716DE2002120D110F118D110F2180E +S315000E2630F2158902F2148F270009D10EF218D10E67 +S315000E2640F118F2158F200009D10C6110621CD10C05 +S315000E26506110611C64236513E600E700D109410B86 +S315000E26600009A07700098FE08BA20009FFFF749086 +S315000E2670000E1960FFFF67CC000E1964000E1938A4 +S315000E2680000E1934000E24C4D140F118D140F218B0 +S315000E2690F2158902F2148F160009D13EF218D13EB8 +S315000E26A0F118F2158F0F0009D13C6110621CD13C56 +S315000E26B06110611C64236513E600E700D139410BF6 +S315000E26C00009A0470009D138F118D138F218F215D1 +S315000E26D08F160009D12FF218D135F118F2158F0F7A +S315000E26E00009D1346110621CD1336110611C642360 +S315000E26F06513E600E700D12B410B0009A02A00095D +S315000E2700D12EF218D12EF118F2158F0F0009D12DF8 +S315000E27106110621CD12C6110611C64236513E640A6 +S315000E2720E700D120410B0009A0140009D127F118AA +S315000E2730D127F218F2158F0D0009D1266110621CF1 +S315000E2740D1256110611C64236513E640E700D1159F +S315000E2750410B0009911971646110621C9115716526 +S315000E27606110611C32108D040009D11C6112410BDF +S315000E27700009910A920972646220622C7165212009 +S315000E27806FE34F266EF6000B00098FE0FFFF749085 +S315000E2790000E195CFFFF67CC000E1964000E19308F +S315000E27A0000E192C000E24C4FFFF5F08000E196CD4 +S315000E27B0000E1968000E1940000E193CFFFF5CACA6 +S315000E27C0000E194C000E1948000E1944FFFF291071 +S315000E27D0000E1950000E1954000E1958000E281826 +S315000E27E02FE64F226EF3D106410B0009D105611279 +S315000E27F0410B00096FE34F266EF6000B0009000928 +S315000E2800000E23D0000E281C000021100000209C74 +S315000E28100000FB5400030D460007806C00016BD8C8 +S309000E2820070016681B +S31500E00000DF076FF2D007400B0009D008400B00096C +S31500E00010AFFE00090009000900090009000900090E +S31500E00020000E11D80E005E880E00506C0E005E0CBD +S31500E00030002B0009002B0009002B0009002B00090A +S31500E00040002B0009002B0009002B0009002B0009FA +S31500E00050002B0009002B0009002B0009000900090C +S31500F0000043210002000CDD54454355204964656EDA +S31500F00010746966696572000043210002000C1AF4E7 +S31500F00020456E67696E65204C6F616420536D6F6F26 +S31500F000307468696E6720466163746F7220410000D0 +S31500F0004043210002000C1AF8456E67696E65204C74 +S31500F000506F616420536D6F6F7468696E67204661D7 +S31500F0006063746F722042000043210002000C1B04EF +S31500F00070456E67696E65204C6F616420536D6F6FD6 +S31500F000807468696E6720466163746F722046696EA4 +S31500F00090616C000043210010FFFF69754500000008 +S31500F000A00000000000090009000000804D65727034 +S31500F000B04D6F6420436C757463682053776974637D +S31500F000C06800000043210010FFFF643C450000007B +S31500F000D00000000000090009000000084D6572707C +S31500F000E04D6F64204272616B652053776974636863 +S31500F000F00000000043210010FFFF643C45000000B3 +S31500F001000000000000090009000000044D6572704F +S31500F001104D6F642043727569736520526573756D12 +S31500F00120652053776974636800000000432100106E +S31500F00130FFFF643C450000000000000000090009D4 +S31500F00140000000024D6572704D6F64204372756950 +S31500F00150736520436F617374205377697463680025 +S31500F0016043210010FFFF71BC4500000000000000B5 +S31500F0017000090009000000804D6572704D6F642023 +S31500F00180526576204C696D6974204675656C20431E +S31500F001907574205377697463680000004321000882 +S31500F001A0FFFF8FE545000000000000000009000990 +S31500F001B075696E7438000000000900094D657270AB +S31500F001C04D6F64205344204D6F64652053776974F6 +S31500F001D06368000043210008FFFF8FE84500000038 +S31500F001E00000000000090009666C6F6174000000F1 +S31500F001F0000900094D6572704D6F64205344205616 +S31500F002006F6C756D657472696320456666696369BE +S31500F00210656E63790000000043210008FFFF8FEC54 +S31500F00220450000000000000000090009666C6F61DF +S31500F0023074000000000900094D6572704D6F64206E +S31500F00240534420416972666C6F772046696E616C23 +S31500F00250204F75747075740043210008FFFF8FF00E +S31500F00260450000000000000000090009666C6F619F +S31500F0027074000000000900094D6572704D6F64202E +S31500F00280534420416972666C6F77204D6166205346 +S31500F00290656E736F7200000043210008FFFF8FF454 +S31500F002A0450000000000000000090009666C6F615F +S31500F002B074000000000900094D6572704D6F6420EE +S31500F002C053442041746D6F7370686572696320439F +S31500F002D06F6D70656E736174696F6E00432100080F +S31500F002E0FFFF8FFC45000000000000000009000938 +S31500F002F0666C6F6174000000000900094D6572704C +S31500F003004D6F6420534420426C656E64696E6720BD +S31500F00310526174696F00000043210008FFFF9000EE +S31500F00320450000000000000000090009666C6F61DE +S31500F0033074000000000900094D6572704D6F64206D +S31500F00340534420416972666C6F7720426C656E6427 +S31500F00350696E670043210004000E1738566F6C75FE +S31500F003606D657472696320456666696369656E6377 +S31500F0037079205461626C652031000000432100044D +S31500F00380000E17F041746D6F7370686572696320C3 +S31500F00390507265737375726520436F6D70656E7319 +S31500F003A06174696F6E00000043210004000E18C0EE +S31500F003B0534420426C656E64696E67205461626CCA +S31500F003C06500000043210002000E11F4456E6769D6 +S31500F003D06E6520446973706C6163656D656E74005B +S31500F003E043210002000E11E85370656564204465F0 +S31500F003F06E73697479204D6F6465000043210002C5 +S31500F00400000E11F053706565642044656E7369746F +S31500F004107920436F6E7374616E740000432100029D +S31500F00420000E18E4526576204C696D6974202852E6 +S31500F0043065646C696E65290043210002000E18E0C0 +S31500F00440466C617420466F6F742053686966742039 +S31500F004504D6F64650000000043210002000E18F0A5 +S31500F00460466C617420466F6F742053686966742019 +S31500F0047044656C746120284175746F6D61746963AD +S31500F00480204C696D6974290043210002000E18F4AE +S31500F00490466C617420466F6F7420536869667420E9 +S31500F004A044656C74612028537461746963204C69E7 +S31500F004B06D6974290000000043210002000E18F84F +S31500F004C0466C617420466F6F7420536869667420B9 +S31500F004D04D696E696D756D2053706565642054685D +S31500F004E0726573686F6C640043210002000E18FC9D +S31500F004F0466C617420466F6F742053686966742089 +S31500F005004D696E696D756D2052504D205468726557 +S31500F0051073686F6C6400000043210002000E19003E +S31500F005204C43204D6178696D756D20537065656437 +S31500F00530205468726573686F6C6400004321000292 +S31500F00540000E19244C43204D696E696D756D20546B +S31500F0055068726F74746C65205468726573686F6C3A +S31500F005606400000043210002000E1928464653207D +S31500F005704D696E696D756D205468726F74746C6533 +S31500F00580205468726573686F6C6400004321000242 +S31500F00590000E190C4646532047656172205261746D +S31500F005A0696F730043210002000E1904526576202C +S31500F005B04C696D697420284C61756E636820436FD1 +S31500F005C06E74726F6C29000043210008FFFF9006DD +S31500F005D045000000000000000009000975696E740E +S31500F005E038000000000900094D6572704D6F6420F7 +S31500F005F0464653204D6F6465000000004321000815 +S31500F00600FFFF900745000000000000000009000908 +S31500F0061075696E7438000000000900094D65727046 +S31500F006204D6F64204C4320456E67616765642053C7 +S31500F0063069676E616C00000043210008FFFF9008B7 +S31500F0064045000000000000000009000975696E749D +S31500F0065038000000000900094D6572704D6F642086 +S31500F0066046465320456E6761676564205369676E39 +S31500F00670616C000043210008FFFF900C450000006C +S31500F00680000000000009000975696E74380000006A +S31500F00690000900094D6572704D6F6420464653207F +S31500F006A047656172204D6F6E69746F7200000000CD +S31500F006B043210008FFFF90104500000000000000F5 +S31500F006C000090009666C6F617400000000090009FA +S31500F006D04D6572704D6F64205265764C696D697424 +S31500F006E020416374697665204375742052504D003D +S31500F006F043210008FFFF90144500000000000000B1 +S31500F0070000090009666C6F617400000000090009B9 +S31500F007104D6572704D6F64205265764C696D6974E3 +S31500F007202041637469766520526573756D65205254 +S31500F00730504D000043210008FFFF901845000000CF +S31500F007400000000000090009666C6F61740000008B +S31500F00750000900094D6572704D6F64205265644C56 +S31500F00760696E65204375742052504D004321000890 +S31500F00770FFFF901C45000000000000000009000982 +S31500F00780666C6F6174000000000900094D657270B7 +S31500F007904D6F64205265644C696E652048797374B8 +S31500F007A0657265736973000043210008FFFF9024AA +S31500F007B0450000000000000000090009666C6F614A +S31500F007C074000000000900094D6572704D6F6420D9 +S31500F007D04C61756E636820436F6E74726F6C205255 +S31500F007E0504D000043210008FFFF9028450000000F +S31500F007F00000000000090009666C6F6174000000DB +S31500F00800000900094D6572704D6F64204C61756E7C +S31500F00810636820436F6E74726F6C204879737465E9 +S31500F00820726573697300000043210008FFFF90347E +S31500F00830450000000000000000090009666C6F61C9 +S31500F0084074000000000900094D6572704D6F642058 +S31500F008504646532044656C746120284175746F29AF +S31500F008600000000043210008FFFF9038450000001B +S31500F008700000000000090009666C6F61740000005A +S31500F00880000900094D6572704D6F6420464653208D +S31500F0089044656C746120285374617469632900009F +S31500F008A043210008FFFF902C4500000000000000E7 +S31500F008B000090009666C6F61740000000009000908 +S31500F008C04D6572704D6F642046465320456E6761E4 +S31500F008D067656D656E742052504D00004321000827 +S31500F008E0FFFF9040450000000000000000090009ED +S31500F008F0666C6F6174000000000900094D65727046 +S31500F009004D6F6420464653205370656564205468E5 +S31500F00910726573686F6C640043210008FFFF9020D6 +S31500F00920450000000000000000090009666C6F61D8 +S31500F0093074000000000900094D6572704D6F642067 +S31500F009404C43205370656564205468726573686F14 +S31500F009506C64000043210002000E195C46424B43D2 +S31500F00960205468726573686F6C640000432100025E +S31500F00970000E192C46424B4320466C617368205397 +S31500F00980706565640000000043210002000E193016 +S31500F0099046424B4320466C61736820436F756E7414 +S31500F009A00000000043210002000E196046424B434E +S31500F009B020536576657265204B6E6F636B205468C5 +S31500F009C0726573686F6C640043210002000E19347F +S31500F009D046424B4320536576657265204B6E6F63D6 +S31500F009E06B20466C61736820537065656400000087 +S31500F009F043210002000E193846424B4320536576D8 +S31500F00A00657265204B6E6F636B20466C6173682070 +S31500F00A10436F756E7400000043210002000E1964E6 +S31500F00A2046424B43204C6F6164205468726573688C +S31500F00A306F6C640043210002000E195049414D20AD +S31500F00A40466C617368205468726573686F6C6400F5 +S31500F00A5043210002000E195449414D20466C617342 +S31500F00A606820436F756E740043210002000E19581A +S31500F00A7049414D20466C617368205370656564008A +S31500F00A8043210002000E196C45475420414631209F +S31500F00A90526573697374616E636520546872657329 +S31500F00AA0686F6C640000000043210002000E193CE0 +S31500F00AB045475420466C6173682053706565640041 +S31500F00AC043210002000E194045475420466C6173DD +S31500F00AD06820436F756E740043210002000E19689A +S31500F00AE0454754204C6F6164205468726573686F93 +S31500F00AF06C64000043210002000E19444543542063 +S31500F00B00466C61736820537065656400432100028A +S31500F00B10000E194845435420466C61736820436FB4 +S31500F00B20756E740043210002000E194C45435420A3 +S31500F00B30466C6173682054656D7065726174757288 +S31500F00B4065205468726573686F6C64004321000811 +S31500F00B50FFFF904445000000000000000009000976 +S31500F00B6075696E7438000000000900094D657270F1 +S31500F00B704D6F642043454C205369676E616C0000ED +S31500F00B8043210008FFFF8BA2450000000000000093 +S31500F00B900009000975696E74380000000009000943 +S31500F00BA04D6572704D6F642043454C205369676EF6 +S31500F00BB0616C204F454D000043210008FFFF904B2C +S31500F00BC045000000000000000009000975696E7418 +S31500F00BD038000000000900094D6572704D6F642001 +S31500F00BE043454C20466C61736820436F756E74659F +S31500F00BF07200000043210008FFFF90494500000005 +S31500F00C00000000000009000975696E7438000000E4 +S31500F00C10000900094D6572704D6F642043454C2004 +S31500F00C20537065656420436F756E746572000000DD +S31500F00C300009000900090009000900090009000976 +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 +S3150700166C41354135413500004F454D2063656C20AA +S3150700167C706F707065642C2043656C205369676EB8 +S3150700168C616C2073686F756C642068617665207071 +S3150700169C6F7070656420746F6F0000004F454D20A6 +S315070016AC63656C20706F707065642C203230206314 +S315070016BC79636C6573206C617465722C2043656C59 +S315070016CC205369676E616C2073686F756C64207341 +S315070016DC746179206F6E00004F454D2063656C2051 +S315070016EC706F707065642C203231206379636C657A +S315070016FC73206C617465722C2043656C2053696783 +S3150700170C6E616C2073686F756C64207374617920D5 +S3150700171C6F6E00004F454D2063656C206973206E14 +S3150700172C6F7720676F6E652C2043656C207369672E +S3150700173C6E616C2073686F756C64206861766520C2 +S3150700174C64726F707065640062656C6F7720666291 +S3150700175C6B63206C6F6164207468726573686F6C59 +S3150700176C6420666F722063656C2C206E6F206C6923 +S3150700177C67687421000000006B6E6F636B696E6798 +S3150700178C2120466C61736820636F756E74657220D1 +S3150700179C73686F756C6420696E6974006B6E6F6322 +S315070017AC6B696E672120466C61736820737065657B +S315070017BC6420636F756E7465722073686F756C64DD +S315070017CC20696E69740000006B6E6F636B696E67D8 +S315070017DC2120466C6173682073686F756C6420737F +S315070017EC74617274000000006B6E6F636B696E67D1 +S315070017FC20676F6E652120466C6173682073686F6E +S3150700180C756C64207A65726F000000006B6E6F63EF +S3150700181C6B696E6720676F6E652120466C6173680E +S3150700182C20636F756E7465722073686F756C6420B0 +S30D0700183C7A65726F00000000D7 +S30907001844123456787F +S30907001848FFFF9044BD +S3150E0050002FE67FFC6EF361E371C4114F00097E0437 +S3150E0050106FE36EF6000B00092FE64F227FF46EF358 +S3150E00502061E371CC114E61E371CC115D61E371CC1C +S3150E005030511E21188F11000961E371CCE200112F68 +S3150E0050409111714062E372CC522F112C61E371CC37 +S3150E005050511D6413D104410B00097E0C6FE34F26DC +S3150E0050606EF6000B00098FE00E0050002FE64F2261 +S3150E0050706EF3D105E4006513D104410B00096FE30D +S3150E0050804F266EF6000B00090700100C0E00501886 +S3150E0050902FE67FF86EF361E371C89220112F61E35C +S3150E0050A071C8921D112EA00C000961E371C8511F23 +S3150E0050B0E200212261E371C862E372C8522F7204C4 +S3150E0050C0112F62E372C861E371C8522F511E32125C +S3150E0050D08FEB00097E086FE36EF6000B00098FE07A +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 +S3150E00535000098FE0400000090E005090000E221446 +S3150E00536040451EB8406EC101070010340E0050189D +S3150E005370FFFF699C447A0000FFFF6624438675761C +S3150E005380FFFF5CD4442F0000FFFF5C9C41700000C1 +S3150E005390FFFF5BFE000E1B2C0E0050E20700106C8A +S3150E0053A00700109C070010CC070010F807001130FC +S3150E0053B007001164070011B03F0E38E3070011CC49 +S3150E0053C041386E0F070011E461E37108F118C71A30 +S3150E0053D0F209F122F208F12061E3F418F51CD11856 +S3150E0053E0410B0009405AF10DD116F11D045A6513F1 +S3150E0053F0D115410B0009911E71056110611C6013D8 +S3150E00540088030129611C415AF10DD110F11D045A70 +S3150E0054106513D10D410B0009D10DC70EF108F11A16 +S3150E00542091097105E20121207E0C6FE34F266EF67F +S3150E00543068F6000B00098FE03EE38E3A40CCEC1086 +S3150E0054400E0050E2070011640E005018070011B04E +S3150E005450FFFF6624438675762FE67FFC6EF361E3C7 +S3150E00546071C4114F61E371C4511F21188F0A0009CF +S3150E005470D10BD20B6220622CE37F2239622C2120C3 +S3150E005480A0080009D106D2066220632CE280223BD8 +S3150E005490622C21207E046FE36EF6000B00090009D4 +S3150E0054A0FFFF69752FE67FFC6EF361E371C4114F42 +S3150E0054B061E371C4511F21188F0A0009D10BD20B5B +S3150E0054C06220632CE2F72239622C2120A008000903 +S3150E0054D0D106D2066220622CE308223B622C2120E2 +S3150E0054E07E046FE36EF6000B00090009FFFF643CB5 +S3150E0054F02FE67FFC6EF3D10E6110631C61E3710320 +S3150E005500E2802239212061E371036110611C2118AA +S3150E0055108F06000961E371036110611CA001000989 +S3150E005520E10160137E046FE36EF6000B00090009BD +S3150E005530FFFF71BC2FE64F227FE86EF361E3711712 +S3150E005540214061E371D8115E61E371D8116D61E39B +S3150E0055507108F14A61E37104F15A61E3F16AD118F7 +S3150E005560410B0009D117410B000961E371D8511E99 +S3150E0055706413D115410B000961E371D8511D6413F3 +S3150E005580D112410B0009D11262E37208F128F11A09 +S3150E005590D11062E3F128F11AD10F62E37204F128F9 +S3150E0055A0F11AD10E62E3721762202120D10C410B43 +S3150E0055B000097E186FE34F266EF6000B00090009F0 +S3150E0055C00E005090000E22140E0054A40E005458D5 +S3150E0055D0FFFF66C8FFFF699CFFFF6994FFFF71BC62 +S3150E0055E0000E1D7C2FE64F227FFC6EF3D151F21872 +S3150E0055F0F19DF32CF311F13CC74FF309F208E400C9 +S3150E005600E500E600F43CF52CF61CD14D410B0009E5 +S3150E005610D14C410B00096103611C21180129611C43 +S3150E005620415AF10DD148F11D045A6513D147410B6C +S3150E0056300009917D7127611021180129611C415ABB +S3150E005640F10DD143F11D045A6513D140410B0009EA +S3150E005650D138F218F19DF120C737F308C73DF2088D +S3150E005660E400E500E600F43CF52CF61CD134410BC3 +S3150E0056700009D134410B00096103611C21188D0903 +S3150E005680000991557127611021188F030009E10158 +S3150E005690A0010009E100D23064136523D12B410B22 +S3150E0056A00009D12ED223F228D22DF128F211F19D26 +S3150E0056B0F32CF311F13CF11AD12A410B0009D12139 +S3150E0056C0410B00096103611C21188F090009912FF6 +S3150E0056D07127611021188F030009E101A00100094D +S3150E0056E0E100D22164136523D118410B0009D11FA5 +S3150E0056F0F118C71FF209F120F308F28DE400E50058 +S3150E005700E600F43CF52CF61CD10D410B0009D10D2B +S3150E005710410B00096103611C21188F2D00099107A9 +S3150E0057207127611021188F270009E101A0250009B4 +S3150E0057308FE00009000E18E4424800004198000070 +S3150E0057400E0055340E0054F0070011F80E005018D6 +S3150E00575007001248419000000700129CFFFF699C4B +S3150E005760000E18E8000E1D7C070012E0000E19044C +S3150E005770447A000042C80000E100D23E641365235D +S3150E005780D13D410B0009D13DF118C73DF209F1207B +S3150E005790F309F208E400E500E600F43CF52CF61CED +S3150E0057A0D13A410B0009D13A410B00096103611C44 +S3150E0057B021188F090009915B7127611021188F033B +S3150E0057C00009E101A0010009E100D232641365234C +S3150E0057D0D129410B0009D129F218F19DF32CF311B1 +S3150E0057E0F13CC72DF308F28DE400E500E601F43C2A +S3150E0057F0F52CF61CD125410B0009D125410B0009CC +S3150E0058006103611C21188F090009913171276110FE +S3150E00581021188F030009E101A0010009E100D21F42 +S3150E00582064136523D114410B0009D114F218F19DAE +S3150E005830F32CF311F13CC713F308F28DE400E500E7 +S3150E005840E601F43CF52CF61CD110410B0009D110E3 +S3150E005850410B00096103611C21188F210009910774 +S3150E0058607127611021188D1B0009E101A01900098D +S3150E0058708FE000090700132C0E005018000E1904B5 +S3150E005880447A000042C80000424800000E0055341B +S3150E0058900E0054F00700137C41200000070013C8C9 +S3150E0058A0E100D24E64136523D14D410B0009D14D53 +S3150E0058B0F218F19DF120C74CF308F28DE400E500D5 +S3150E0058C0E601F43CF52CF61CD148410B0009D148F3 +S3150E0058D0410B00096103611C21188D090009917C99 +S3150E0058E07127611021188D030009E101A00100093D +S3150E0058F0E100D24064136523D139410B0009D13E34 +S3150E005900D238F228F19DF32CF311F13CF11AD13B6A +S3150E005910410B0009D136410B00096103611C2118A8 +S3150E0059208D09000991597127611021188D030009FF +S3150E005930E101A0010009E100D23164136523D128EB +S3150E005940410B0009D12CD227F228D22EF128F211C2 +S3150E005950F19DF42CF411F14CF11AD128410B0009EA +S3150E005960D123410B00096103611C21188F0900091F +S3150E00597091337127611021188D030009E101A001F1 +S3150E0059800009E100D21E64136523D115410B0009EF +S3150E005990D11DF218F19DF32CF310D11CF118C71C72 +S3150E0059A0F208F121F28DE400E500E601F43CF52C57 +S3150E0059B0F61CD10E410B0009D10D410B00096103F6 +S3150E0059C0611C21188D260009910771276110211877 +S3150E0059D08D200009E101A01E00098FE007001404C6 +S3150E0059E00E005018000E190442C800000E00553461 +S3150E0059F00E0054F007001444FFFF699C000E1D7C38 +S3150E005A0007001498000E1908000E1924000E18E44B +S3150E005A1043480000E100D24264136523D141410B95 +S3150E005A200009D141D240F128C740F208F121F11AFE +S3150E005A30D13F410B0009D13F410B00096103611CA7 +S3150E005A4021188F090009916A7127611021188F0399 +S3150E005A500009E101A0010009E100D23164136523BA +S3150E005A60D130410B0009D134E2042120D12EC733A7 +S3150E005A70F108F11AD132C733F108F11AD132924E2A +S3150E005A807244F128C731F208F121F11AE400D1303F +S3150E005A90410B0009D126410B0009E401D12C410B23 +S3150E005AA00009D123410B0009D122410B00096103E4 +S3150E005AB0611C21188F090009913171276110211877 +S3150E005AC08F030009E101A0010009E100D221641350 +S3150E005AD06523D114410B0009D11B92207250F12877 +S3150E005AE0C71DF208F120F11AD10FD21CF228F19D32 +S3150E005AF0F120F11AD10E410B0009D10E410B00090E +S3150E005B006103611C21188D2B000991087128621002 +S3150E005B10E10232108F240009E101A02200098FE074 +S3150E005B20070014980E005018FFFF66C841200000AB +S3150E005B30000E1D7C0E0054F0FFFF6AA541A000006A +S3150E005B40FFFF699442480000FFFF699C42C80000AF +S3150E005B500E005458070014F043FA0000000E1928E0 +S3150E005B60E100D22564136523D124410B0009D1240B +S3150E005B7092407234F228F19DF32CF311F13CF11A96 +S3150E005B80D120410B0009D120410B00096103611C94 +S3150E005B9021188F090009912D7128611021188F0384 +S3150E005BA00009E101A0010009E100D2186413652382 +S3150E005BB0D112410B0009D112921C7250F128C71452 +S3150E005BC0F208F120F11AD10F410B0009D10D410B4C +S3150E005BD00009D10D410B00096103611C21188D19B5 +S3150E005BE0000991077128611021188D130009E10132 +S3150E005BF0A01100098FE00009070015480E00501885 +S3150E005C00FFFF699C000E1D7C0E0054F00700159CCC +S3150E005C1043FA0000E100D25E64136523D15D410BA9 +S3150E005C200009D15DD25DF228F19DF32CF311F13C02 +S3150E005C30F11AD15BC75BF108F11AE401D15A410B97 +S3150E005C400009D15A410B0009D158410B0009D15810 +S3150E005C50410B00096103611C21180129611C415A7F +S3150E005C60F10DD154F11D045A6513D14A410B0009A9 +S3150E005C70D149C751F108F11AD150C751F108F11A9D +S3150E005C80D147F18DF11AE401D147410B0009E40029 +S3150E005C90D14C410B0009D14CE2002120D143410BDE +S3150E005CA00009D24961E371036220212061E3710389 +S3150E005CB06110621C916A32100129611C415AF10D64 +S3150E005CC0D142F11D045A6513D132410B0009D13B65 +S3150E005CD0C73FF108F11AD132F18DF11AE400D13233 +S3150E005CE0410B0009D138E2FF2120D130410B0009CA +S3150E005CF0D1356110621C61E371036227212061E3D5 +S3150E005D0071036110621C914132100129611C415AC6 +S3150E005D10F10DD130F11D045A6513D11E410B000948 +S3150E005D2091357138F21891327138F318912F713C02 +S3150E005D30F118F43CF411F14CF2150129611C415A8B +S3150E005D40F10DD125F11D045A6513D112410B00092F +S3150E005D50911D7144F218911A7144F31891177148F6 +S3150E005D60F118F43CF411F14CF2150129611C415A5B +S3150E005D70F10DD11AF11D045A6513D106410B000916 +S3150E005D807E046FE34F266EF6000B000900808FE04F +S3150E005D90070015480E005018FFFF66C8000E19289A +S3150E005DA0FFFF6994419800000E005458000E1D7CAA +S3150E005DB00E0054F0070014F042C80000FFFF699C65 +S3150E005DC045BB80000E0054A4FFFF71BC070015B83A +S3150E005DD0447A0000070015EC070016280700164443 +S3150E005DE02FE64F227FFC6EF361E371C4D206112FAC +S3150E005DF061E371C4511F410B00097E046FE34F2608 +S3150E005E006EF6000B000900090000FB542FE64F2228 +S3150E005E106EF3D10A410B0009D109410B0009D109D4 +S3150E005E20410B0009D108410B0009D108410B0009AD +S3150E005E306FE34F266EF6000B00090009000E214097 +S3150E005E400E005F5C0E0055E40E0051480E005E50CB +S3150E005E502FE64F226EF3D108410B0009D107410BF5 +S3150E005E600009D107410B0009D106410B00096FE36A +S3150E005E704F266EF6000B0009000E1B2C000E23F4A7 +S3150E005E80000E27E00E005DE02FE66EF30009000916 +S3150E005E90D113C714F108F11AD113C714F108F11A68 +S3150E005EA0D113D2136220632CE280223B622C212076 +S3150E005EB0D110D2106220622CE37F2239622C21206F +S3150E005EC0D10DC70EF108F11AD10DC70EF108F11A50 +S3150E005ED0D10D920421216FE36EF6000B00094CCC16 +S3150E005EE0FFFF699C447A0000FFFF69944140000061 +S3150E005EF0FFFF6975FFFF71BCFFFF6624438675764B +S3150E005F00FFFF5CD4442F0000FFFF5BFE2FE64F22FF +S3150E005F107FF86EF361E371C8114E61E371C8E2005A +S3150E005F20112FA00A0009D10C410B000961E371C8BB +S3150E005F3062E372C8522F7201112F62E372C861E3D7 +S3150E005F4071C8522F511E32138FED00097E086FE372 +S3150E005F504F266EF6000B0009000E25802FE64F2207 +S3150E005F606EF3D183410B000991FEE201212091FCD3 +S3150E005F707164E2002120D17FF18DF11AD17EE2000B +S3150E005F802120D17ED27EF128C77EF208F120F11AA9 +S3150E005F90D17DD27EF128C77BF208F121F11AD17C90 +S3150E005FA0E2002120D17BF19DF11A91DE7165E200AE +S3150E005FB0212091DA716BE200212091D67169E200FF +S3150E005FC02120D175410B000991CF71646110611CBE +S3150E005FD0601388010129611C415AF10DD16FF11D23 +S3150E005FE0045A6513D16E410B0009E414D16D410BB1 +S3150E005FF0000991BA71646110611C60138801012950 +S3150E006000611C415AF10DD168F11D045A6513D16414 +S3150E006010410B0009D160410B000991A67164611014 +S3150E006020611C601388010129611C415AF10DD15F73 +S3150E006030F11D045A6513D15A410B00099194E200E1 +S3150E0060402120D155410B0009918F71646110611C9D +S3150E00605021180129611C415AF10DD155F11D045A21 +S3150E0060606513D14F410B0009D152F19DF11AD14161 +S3150E006070C751F108F11AD148410B000991757164A7 +S3150E0060806110611C21180129611C415AF10DD14B79 +S3150E006090F11D045A6513D142410B0009D145C7487B +S3150E0060A0F108F11AD13C410B0009915E716B61103A +S3150E0060B0611C2118E1FF611A611C415AF10DD14193 +S3150E0060C0F11D045A6513D136410B0009914D7169C4 +S3150E0060D06110611C2118E1FF611A611C415AF10D14 +S3150E0060E0D139F11D045A6513D12D410B0009913C8E +S3150E0060F071686110611C2118E1FF611A611C415A19 +S3150E006100F10DD131F11D045A6513D125410B00094C +S3150E006110912B71646110611C601388010129611C49 +S3150E006120415AF10DD129F11D045A6513D11C410BAB +S3150E0061300009D120F19DF11AD10EF18DF11A9115AA +S3150E0061406413D118410B0009910F71646110611C23 +S3150E00615021180129611C415AF10DD11DF11D045A58 +S3150E0061606513D10FA03600098BA28FE000C8000977 +S3150E006170000E2214FFFF7490FFFF6975FFFF5F0884 +S3150E006180000E196C40A00000FFFF5CAC000E194C0F +S3150E006190FFFF643CFFFF2910000E258007001674D2 +S3150E0061A00E0050180E005F0C070016A8070016E426 +S3150E0061B007001720FFFF67CCBF80000007001754AB +S3150E0061C04040000007001784070017A8070017D4E1 +S3150E0061D0070017F4410B00099113716B6110611CD6 +S3150E0061E021180129611C415AF10DD106F11D045ADF +S3150E0061F06513D105410B00096FE34F266EF6000BB2 +S3110E00620000098FE0070018180E00501859 +S3158000100012340000000000091234000100002000A4 +S315800010100000000841384448323030560000000055 +S31580001020000000004646464646464646000000000A +S31580001030000000001234000F000E100041384448B2 +S31580001040323030562E4D6552704D6F442E466C614F +S3158000105073682E54657374696E672E7631342E36B6 +S315800010602E31322E3132353800000000000000006B +S3158000107000000000000000000000000000000000EA +S315800010801234000B000CDD540000000A3433353274 +S315800010903539343030360000000000000000000092 +S315800010A01234000C464646464646464646460000AC +S315800010B00000000000000000123400084D657270C8 +S315800010C0000000000000000000000000123400094B +S315800010D054657374696E67000000000000000000AC +S315800010E000000000000000001234000D537065659A +S315800010F0642044656E73697479206C6F61642063C3 +S31580001100616C63756C6174696F6E20776974682031 +S315800011104D414620626C656E64696E675F5F4C61A7 +S31580001120756E636820636F6E74726F6C20616E6417 +S3158000113020666C617420666F6F742073686966744C +S31580001140696E672028737461746963206F72206783 +S315800011506561722062617365642063616C63756C1E +S315800011606174696F6E295F5F43454C20466C61737D +S3158000117068202846424B432C204547542066726F90 +S315800011806D2046726F6E74204F322072657369735C +S3158000119074616E63652C20436F6F6C616E7420542E +S315800011A0656D70295F5F0000000000000000000090 +S315800011B0123400030001483C00030D10000E23F496 +S315800011C0526576204C696D697420537562726F75AD +S315800011D074696E6520486F6F6B00000012340003DF +S315800011E00000DA700000FB54000E21184D656D6F0B +S315800011F0727920526573657420537562726F757447 +S31580001200696E6520486F6F6B000000001234000322 +S31580001210000081BC0000209C000E1B705370656529 +S31580001220642044656E73697479204D6166205375B8 +S3158000123062726F7574696E6520486F6F6B0000000F +S315800012401234000300078184FFFF8BA2FFFF9044C6 +S3158000125043454C205369676E616C20486F6F6B0005 +S3158000126012340003000143F400016BD8000E27E01E +S315800012704D61696E20537562726F7574696E6520F3 +S31580001280486F6F6B205747444300000012340004B8 +S31580001290000E1000000E2820526F6D20486F6C657E +S315800012A020436F64652050617463680000090009FB +S309800012B000090009A2 +S70500E000001A +S30DFF0020004138444832303056E6 +S30AFF0CDD54435259400685 +S309FF01483C00030D1052 +S309FF00DA700000FB545E +S309FF0081BC0000209CFE +S309FF078184FFFF8BA2C0 +S309FF0143F400016BD87B +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