Update block fetch & blank init

blanks: {key,size}
fetch: get block by key (index isnt the same between patches, as blocks with different keys get added). The savefile stores them as a SortedDictionary (by key), hence the shifting.
This commit is contained in:
Kurt 2020-01-09 08:59:26 -08:00
parent bbd1aff5fe
commit 3fa44361e6
3 changed files with 147 additions and 120 deletions

View File

@ -1,10 +1,12 @@
using System.Collections.Generic;
using System.Linq;
namespace PKHeX.Core
{
public class SaveBlockAccessorSWSH : ISaveBlockAccessor<SCBlock>, ISaveBlock8Main
{
public IReadOnlyList<SCBlock> BlockInfo { get; }
public Dictionary<uint, SCBlock> BlockDictionary { get; }
public Box8 BoxInfo { get; }
public Party8 PartyInfo { get; }
public MyItem Items { get; }
@ -23,40 +25,45 @@ public class SaveBlockAccessorSWSH : ISaveBlockAccessor<SCBlock>, ISaveBlock8Mai
public SaveBlockAccessorSWSH(SAV8SWSH sav)
{
BlockInfo = sav.AllBlocks;
BoxInfo = new Box8(sav, GetBlock(IBox));
PartyInfo = new Party8(sav, GetBlock(IParty));
Items = new MyItem8(sav, GetBlock(IItem));
Zukan = new Zukan8(sav, GetBlock(IZukan));
MyStatus = new MyStatus8(sav, GetBlock(IMyStatus));
Misc = new Misc8(sav, GetBlock(IMisc));
BoxLayout = new BoxLayout8(sav, GetBlock(IBoxLayout));
TrainerCard = new TrainerCard8(sav, GetBlock(ITrainerCard));
Played = new PlayTime8(sav, GetBlock(IPlayTime));
Fused = new Fused8(sav, GetBlock(IFused));
Daycare = new Daycare8(sav, GetBlock(IDaycare));
Records = new Record8(sav, GetBlock(IRecord), Core.Records.MaxType_SWSH);
Fashion = new FashionUnlock8(sav, GetBlock(IFashionUnlock));
Raid = new RaidSpawnList8(sav, GetBlock(IRaidSpawnList));
BlockDictionary = sav.AllBlocks.ToDictionary(z => z.Key);
BoxInfo = new Box8(sav, GetBlock(KBox));
PartyInfo = new Party8(sav, GetBlock(KParty));
Items = new MyItem8(sav, GetBlock(KItem));
Zukan = new Zukan8(sav, GetBlock(KZukan));
MyStatus = new MyStatus8(sav, GetBlock(KMyStatus));
Misc = new Misc8(sav, GetBlock(KMisc));
BoxLayout = new BoxLayout8(sav, GetBlock(KBoxLayout));
TrainerCard = new TrainerCard8(sav, GetBlock(KTrainerCard));
Played = new PlayTime8(sav, GetBlock(KPlayTime));
Fused = new Fused8(sav, GetBlock(KFused));
Daycare = new Daycare8(sav, GetBlock(KDaycare));
Records = new Record8(sav, GetBlock(KRecord), Core.Records.MaxType_SWSH);
Fashion = new FashionUnlock8(sav, GetBlock(KFashionUnlock));
Raid = new RaidSpawnList8(sav, GetBlock(KRaidSpawnList));
}
private const int IBox = 143; // Box Data
private const int IMysteryGift = 186; // Mystery Gift Data
private const int IItem = 191; // Items
// Coordinates? 253
private const int IBoxLayout = 275; // Box Names
private const int IMisc = 288; // Money
private const int IParty = 428; // Party Data
private const int IDaycare = 465; // Daycare slots (2 daycares)
private const int IRecord = 544;
private const int IZukan = 699; // PokeDex
private const int ITrainerCard = 1259; // Trainer Card
private const int IPlayTime = 1302; // Time Played
private const int IRaidSpawnList = 1326; // Nest current values (hash, seed, meta)
private const int IRepel = 1469;
private const int IFused = 1789; // Fused PKM (*3)
private const int IFashionUnlock = 1989; // Fashion unlock bool array (owned for (each apparel type) * 0x80, then another array for "new")
private const int IMyStatus = 2275; // Trainer Details
/* To dump key list of current format, use the following in the immediate window, and update Meta8
var blocks = BlockInfo.Where(z => z.Data.Length != 0).Select(z => new KeyValuePair<uint, int>(z.Key, z.Data.Length)).Select(z => $"{z.Key:X8}, {z.Value:X5},");
System.IO.File.WriteAllLines("blank.txt", blocks.ToArray());
*/
private const uint KBox = 0x0d66012c; // Box Data
private const uint KMysteryGift = 0x112d5141; // Mystery Gift Data
private const uint KItem = 0x1177c2c4; // Items
private const uint KCoordinates = 0x16aaa7fa; // Coordinates?
private const uint KBoxLayout = 0x19722c89; // Box Names
private const uint KMisc = 0x1b882b09; // Money
private const uint KParty = 0x2985fe5d; // Party Data
private const uint KDaycare = 0x2d6fba6a; // Daycare slots (2 daycares)
private const uint KRecord = 0x37da95a3;
private const uint KZukan = 0x4716c404; // PokeDex
private const uint KTrainerCard = 0x874da6fa; // Trainer Card
private const uint KPlayTime = 0x8cbbfd90; // Time Played
private const uint KRaidSpawnList = 0x9033eb7b; // Nest current values (hash, seed, meta)
private const uint KRepel = 0x9ec079da;
private const uint KFused = 0xc0de5c5f; // Fused PKM (*3)
private const uint KFashionUnlock = 0xd224f9ac; // Fashion unlock bool array (owned for (each apparel type) * 0x80, then another array for "new")
private const uint KMyStatus = 0xf25c070e; // Trainer Details
public SCBlock GetBlock(int index) => BlockInfo[index];
public SCBlock GetBlock(uint key) => BlockDictionary[key];
}
}

View File

@ -151,7 +151,7 @@ public sealed class SCBlock : BlockInfo
/// <summary>
/// Used to encrypt the rest of the block.
/// </summary>
public uint Key { get; }
public uint Key { get; set; }
/// <summary>
/// What kind of block is it?

View File

@ -1,105 +1,125 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
namespace PKHeX.Core
{
public static class Meta8
{
public static SCBlock[] GetBlankDataSWSH() => GetBlankBlockArray(DefaultChunkSizesSWSH, 2408);
public static SCBlock[] GetBlankDataSWSH() => GetBlankBlockArray(DefaultChunkSizesSWSH);
private static SCBlock[] GetBlankBlockArray(IReadOnlyList<int> arr, int totalBlocks)
private static SCBlock[] GetBlankBlockArray(IReadOnlyList<uint> arr)
{
var blocks = new SCBlock[totalBlocks];
var blocks = new SCBlock[arr.Count / 2];
for (int i = 0; i < blocks.Length; i++)
blocks[i] = new SCBlock {Data = Array.Empty<byte>()};
for (int i = 0; i < arr.Count; i += 2)
{
int index = arr[i];
int length = arr[i + 1];
blocks[index].Data = new byte[length];
int index = i * 2;
blocks[i] = new SCBlock { Key = arr[index], Data = new byte[(int)arr[index + 1]] };
}
return blocks;
}
private static readonly int[] DefaultChunkSizesSWSH =
private static readonly uint[] DefaultChunkSizesSWSH =
{
0007, 0x00004, 0011, 0x00001, 0013, 0x00009, 0023, 0x00004, 0024, 0x00004,
0025, 0x00004, 0048, 0x056F8, 0057, 0x00004, 0058, 0x00004, 0074, 0x00004,
0075, 0x00004, 0076, 0x00004, 0097, 0x00004, 0104, 0x00004, 0105, 0x00004,
0106, 0x00004, 0107, 0x00004, 0108, 0x00004, 0109, 0x00004, 0110, 0x00004,
0111, 0x00004, 0112, 0x00004, 0113, 0x00004, 0114, 0x00004, 0115, 0x00004,
0116, 0x00004, 0117, 0x00004, 0129, 0x00004, 0130, 0x00004, 0134, 0x00004,
0136, 0x00004, 0141, 0x00004, 0142, 0x00004, 0143, 0x50A00, 0145, 0x00004,
0147, 0x00004, 0148, 0x00001, 0150, 0x00004, 0151, 0x00004, 0168, 0x00004,
0177, 0x00004, 0186, 0x017C8, 0190, 0x00004, 0191, 0x012F8, 0199, 0x00004,
0201, 0x00004, 0210, 0x00004, 0217, 0x00004, 0229, 0x00880, 0231, 0x00648,
0235, 0x00004, 0236, 0x00648, 0237, 0x00004, 0238, 0x00004, 0239, 0x00004,
0240, 0x00004, 0241, 0x00004, 0242, 0x00004, 0243, 0x00004, 0244, 0x00004,
0249, 0x00004, 0252, 0x00880, 0253, 0x06010, 0262, 0x00004, 0266, 0x00004,
0268, 0x00880, 0269, 0x00004, 0272, 0x00880, 0273, 0x00084, 0275, 0x00440,
0276, 0x00880, 0286, 0x00001, 0288, 0x0021C, 0308, 0x00004, 0352, 0x00132,
0363, 0x00008, 0370, 0x00004, 0378, 0x00004, 0380, 0x00004, 0381, 0x00004,
0382, 0x00004, 0386, 0x00004, 0387, 0x00004, 0398, 0x00004, 0399, 0x00004,
0402, 0x00004, 0403, 0x00004, 0404, 0x00004, 0405, 0x00004, 0406, 0x00004,
0407, 0x00004, 0408, 0x00004, 0409, 0x00004, 0414, 0x00004, 0418, 0x21FC0,
0419, 0x00004, 0420, 0x00004, 0428, 0x00814, 0431, 0x00001, 0440, 0x00004,
0465, 0x00570, 0470, 0x00004, 0476, 0x00020, 0481, 0x00004, 0484, 0x00008,
0500, 0x00004, 0502, 0x00004, 0509, 0x00048, 0518, 0x00004, 0519, 0x00004,
0526, 0x00004, 0532, 0x00004, 0536, 0x00004, 0539, 0x00004, 0544, 0x000C8,
0546, 0x00004, 0549, 0x00D50, 0557, 0x00004, 0558, 0x00004, 0561, 0x00004,
0570, 0x00004, 0582, 0x033D0, 0614, 0x00004, 0615, 0x00004, 0616, 0x00004,
0617, 0x00004, 0619, 0x00002, 0626, 0x00004, 0627, 0x00004, 0629, 0x00001,
0630, 0x00004, 0635, 0x00002, 0639, 0x00001, 0644, 0x00004, 0658, 0x00004,
0659, 0x00004, 0661, 0x00001, 0668, 0x00038, 0678, 0x00004, 0692, 0x00028,
0693, 0x00004, 0699, 0x04B00, 0705, 0x00004, 0718, 0x00004, 0727, 0x00004,
0728, 0x00004, 0729, 0x00004, 0732, 0x00001, 0735, 0x00004, 0738, 0x00004,
0741, 0x00004, 0743, 0x00004, 0748, 0x00004, 0777, 0x02964, 0811, 0x00004,
0822, 0x02304, 0829, 0x02304, 0841, 0x02304, 0843, 0x00004, 0850, 0x02304,
0865, 0x02304, 0871, 0x02304, 0877, 0x02304, 0879, 0x00004, 0889, 0x02304,
0891, 0x00004, 0900, 0x00004, 0902, 0x00004, 0908, 0x00002, 0912, 0x00004,
0916, 0x00001, 0926, 0x00810, 0928, 0x02304, 0929, 0x00004, 0933, 0x00004,
0936, 0x00002, 0938, 0x00004, 0941, 0x00002, 0953, 0x02304, 0955, 0x00004,
0971, 0x00004, 0980, 0x00004, 0987, 0x00004, 0988, 0x00004, 0992, 0x00004,
0995, 0x00004, 0996, 0x0426C, 1002, 0x00004, 1003, 0x00004, 1012, 0x00004,
1013, 0x00004, 1015, 0x00004, 1016, 0x00132, 1018, 0x00004, 1020, 0x00004,
1024, 0x00004, 1027, 0x00002, 1039, 0x067D0, 1042, 0x00004, 1048, 0x00004,
1058, 0x00004, 1059, 0x00004, 1060, 0x00001, 1061, 0x00132, 1065, 0x00004,
1082, 0x00004, 1106, 0x00004, 1110, 0x00001, 1115, 0x04610, 1119, 0x00004,
1123, 0x00004, 1128, 0x00004, 1129, 0x00004, 1134, 0x01F50, 1139, 0x00004,
1146, 0x00004, 1151, 0x00004, 1158, 0x00004, 1169, 0x00020, 1173, 0x00008,
1178, 0x00004, 1187, 0x00004, 1195, 0x00004, 1238, 0x00004, 1239, 0x00132,
1251, 0x00004, 1256, 0x00004, 1259, 0x001D0, 1261, 0x00004, 1270, 0x033D0,
1272, 0x033D0, 1278, 0x00004, 1288, 0x00004, 1298, 0x00004, 1300, 0x00004,
1301, 0x00038, 1302, 0x00008, 1304, 0x00004, 1305, 0x000D0, 1308, 0x00004,
1315, 0x00004, 1318, 0x00004, 1321, 0x00004, 1322, 0x00004, 1326, 0x00A68,
1328, 0x00004, 1332, 0x00004, 1336, 0x00004, 1342, 0x00004, 1344, 0x00004,
1346, 0x00055, 1347, 0x00004, 1355, 0x00132, 1356, 0x00004, 1373, 0x00019,
1377, 0x00002, 1382, 0x00400, 1390, 0x00004, 1400, 0x00004, 1406, 0x00004,
1407, 0x00004, 1411, 0x00004, 1412, 0x00004, 1413, 0x00004, 1433, 0x00004,
1436, 0x00132, 1469, 0x00002, 1489, 0x00004, 1498, 0x00004, 1509, 0x00019,
1517, 0x00004, 1518, 0x00004, 1526, 0x00004, 1536, 0x00004, 1544, 0x00004,
1549, 0x00004, 1551, 0x00268, 1554, 0x00004, 1573, 0x00004, 1590, 0x00280,
1591, 0x1241C, 1592, 0x00004, 1594, 0x00004, 1597, 0x023D4, 1603, 0x00004,
1604, 0x00004, 1605, 0x00004, 1606, 0x00004, 1616, 0x00004, 1635, 0x000F8,
1637, 0x00004, 1638, 0x00028, 1643, 0x00004, 1670, 0x50C20, 1690, 0x0001E,
1730, 0x00004, 1744, 0x00004, 1765, 0x00004, 1784, 0x00004, 1789, 0x00408,
1790, 0x00004, 1793, 0x00004, 1796, 0x00004, 1808, 0x000A0, 1814, 0x00004,
1830, 0x00004, 1836, 0x00132, 1841, 0x00004, 1842, 0x00002, 1843, 0x00004,
1848, 0x00004, 1849, 0x00004, 1851, 0x00004, 1855, 0x00004, 1868, 0x00004,
1873, 0x00004, 1890, 0x0001C, 1891, 0x00001, 1892, 0x00004, 1912, 0x00004,
1915, 0x00132, 1989, 0x00F1C, 2073, 0x00008, 2104, 0x00004, 2109, 0x00008,
2111, 0x02304, 2116, 0x02304, 2128, 0x00004, 2130, 0x00001, 2131, 0x00001,
2135, 0x00320, 2136, 0x00008, 2141, 0x00004, 2149, 0x02304, 2160, 0x02304,
2165, 0x02304, 2169, 0x02304, 2197, 0x02304, 2207, 0x02304, 2209, 0x000F0,
2213, 0x00014, 2216, 0x02304, 2222, 0x02304, 2232, 0x02304, 2234, 0x02304,
2236, 0x00001, 2237, 0x00538, 2242, 0x033D0, 2243, 0x02304, 2246, 0x116C4,
2248, 0x02304, 2252, 0x00002, 2253, 0x00004, 2262, 0x02304, 2269, 0x02304,
2274, 0x02955, 2275, 0x00110, 2278, 0x02304, 2285, 0x02304, 2301, 0x00004,
2312, 0x00004, 2313, 0x00004, 2319, 0x00004, 2321, 0x00004, 2343, 0x00004,
2344, 0x00004, 2355, 0x00004, 2363, 0x00004, 2364, 0x02304, 2368, 0x03208,
2373, 0x02304, 2391, 0x00004, 2396, 0x00002
0x0123EA7A, 0x00004, 0x017C3CBB, 0x00001, 0x0192A204, 0x00009, 0x02B647B4, 0x00004,
0x02C163FD, 0x00004, 0x02DD636A, 0x00004, 0x0490A3C3, 0x056F8, 0x051A8415, 0x00004,
0x053EF7F5, 0x00004, 0x066F38F5, 0x00004, 0x07165742, 0x00004, 0x071A3599, 0x00004,
0x097D2359, 0x00004, 0x0A01FC6C, 0x00004, 0x0A01FE1F, 0x00004, 0x0A0204EB, 0x00004,
0x0A02069E, 0x00004, 0x0A020851, 0x00004, 0x0A0515F5, 0x00004, 0x0A0517A8, 0x00004,
0x0A05195B, 0x00004, 0x0A051B0E, 0x00004, 0x0A051CC1, 0x00004, 0x0A051E74, 0x00004,
0x0A052027, 0x00004, 0x0A0521DA, 0x00004, 0x0A05238D, 0x00004, 0x0B90EFF8, 0x00004,
0x0BFDEBA1, 0x00004, 0x0C7C3E38, 0x00004, 0x0CBEB855, 0x00004, 0x0CF6D916, 0x00004,
0x0D477836, 0x00004, 0x0D591902, 0x00004, 0x0D66012C, 0x50A00, 0x0D987D50, 0x00004,
0x0E11ED8C, 0x00004, 0x0E411743, 0x00001, 0x0E591A95, 0x00004, 0x0E85795E, 0x00004,
0x0F591C28, 0x00004, 0x10591DBB, 0x00004, 0x112D5141, 0x017C8, 0x11591F4E, 0x00004,
0x1177C2C4, 0x012F8, 0x125920E1, 0x00004, 0x127D6F1B, 0x00004, 0x13592274, 0x00004,
0x14592407, 0x00004, 0x149A1DD0, 0x00880, 0x14D0124C, 0x00648, 0x1559259A, 0x00004,
0x15D013DF, 0x00648, 0x15E9A450, 0x00004, 0x15E9A603, 0x00004, 0x15E9A7B6, 0x00004,
0x15E9AB1C, 0x00004, 0x15E9ACCF, 0x00004, 0x15E9AE82, 0x00004, 0x15E9B035, 0x00004,
0x15E9B701, 0x00004, 0x160CDE80, 0x00004, 0x1659272D, 0x00004, 0x169A20F6, 0x00880,
0x16AAA7FA, 0x06010, 0x175573FB, 0x00004, 0x177786BA, 0x00004, 0x179A2289, 0x00880,
0x17C4CBAC, 0x00004, 0x189A241C, 0x00880, 0x1920C1E4, 0x00084, 0x19722C89, 0x00440,
0x199A25AF, 0x00880, 0x1B4C150C, 0x00001, 0x1B882B09, 0x0021C, 0x1D482A63, 0x00004,
0x20FA6183, 0x00132, 0x224A1BD2, 0x00008, 0x24280E24, 0x00004, 0x24ADE637, 0x00004,
0x24F1F93C, 0x00004, 0x24F1FAEF, 0x00004, 0x24F1FCA2, 0x00004, 0x2575BD5B, 0x00004,
0x25A7CED1, 0x00004, 0x26A1BEDE, 0x00004, 0x26B99C02, 0x00004, 0x26FE3299, 0x00004,
0x26FE3B18, 0x00004, 0x26FE3CCB, 0x00004, 0x26FE3E7E, 0x00004, 0x26FE41E4, 0x00004,
0x26FE4397, 0x00004, 0x26FE454A, 0x00004, 0x26FE46FD, 0x00004, 0x2846B7DB, 0x00004,
0x28E707F5, 0x21FC0, 0x28F03D03, 0x00004, 0x29036436, 0x00004, 0x2985FE5D, 0x00814,
0x29E026C7, 0x00001, 0x2B103B06, 0x00004, 0x2D6FBA6A, 0x00570, 0x2DFA8C4E, 0x00004,
0x2EB1B190, 0x00020, 0x30080BB6, 0x00004, 0x30671AD9, 0x00008, 0x32C4F443, 0x00004,
0x33068788, 0x00004, 0x33F39467, 0x00048, 0x34E60D88, 0x00004, 0x355C8314, 0x00004,
0x363D064C, 0x00004, 0x3677602D, 0x00004, 0x36E2F1C8, 0x00004, 0x375A5D09, 0x00004,
0x37A13A2A, 0x00004, 0x37DA95A3, 0x000C8, 0x38548020, 0x00004, 0x39227A79, 0x00D50,
0x3A68EA36, 0x00004, 0x3A6B2A3F, 0x00004, 0x3B23B1E2, 0x00004, 0x3DBE736D, 0x00004,
0x3E8CFA15, 0x033D0, 0x3F64E8A0, 0x00004, 0x3F680229, 0x00004, 0x3F6A4232, 0x00004,
0x3F6D5BBB, 0x00004, 0x3F8120BA, 0x00002, 0x3FE99FE1, 0x00004, 0x3FF17E2F, 0x00004,
0x4033C7DB, 0x00001, 0x4034BE27, 0x00004, 0x40CC5A21, 0x00002, 0x41309084, 0x00001,
0x41DAB84F, 0x00004, 0x436CAF2B, 0x00004, 0x437E8C7C, 0x00004, 0x439116A4, 0x00001,
0x443FB19E, 0x00038, 0x4584784A, 0x00004, 0x46ACC334, 0x00028, 0x46BC63C5, 0x00004,
0x4716C404, 0x04B00, 0x48043955, 0x00004, 0x495E3674, 0x00004, 0x4A0F21AD, 0x00004,
0x4A69631D, 0x00004, 0x4A741A7A, 0x00004, 0x4ADD5E5C, 0x00001, 0x4AEA5A7E, 0x00004,
0x4B8B80F6, 0x00004, 0x4BC891F4, 0x00004, 0x4C54B0CF, 0x00004, 0x4C67BA2E, 0x00004,
0x4CDFE1B5, 0x00004, 0x50925E91, 0x02964, 0x539DD549, 0x00004, 0x54AC4B39, 0x00004,
0x5586B8F0, 0x02304, 0x5686BA83, 0x02304, 0x5786BC16, 0x02304, 0x57F29628, 0x00004,
0x582E4A5C, 0x00004, 0x5886BDA9, 0x02304, 0x5986BF3C, 0x02304, 0x5A86C0CF, 0x02304,
0x5B86C262, 0x02304, 0x5BA54B4B, 0x00004, 0x5C86C3F5, 0x02304, 0x5D77D781, 0x00004,
0x5ECE9F76, 0x00004, 0x5F135643, 0x00004, 0x5F74FCEE, 0x00002, 0x5FCEA109, 0x00004,
0x605EBC30, 0x00001, 0x6148F6AC, 0x00810, 0x6186CBD4, 0x02304, 0x61952B51, 0x00004,
0x61BC9BB4, 0x00004, 0x6226F5AD, 0x00002, 0x624C7B30, 0x00004, 0x62743428, 0x00002,
0x6286CD67, 0x02304, 0x62F05895, 0x00004, 0x64CEA8E8, 0x00004, 0x65CEAA7B, 0x00004,
0x66CEAC0E, 0x00004, 0x6701AF09, 0x00004, 0x67A659C4, 0x00004, 0x67CEADA1, 0x00004,
0x680EEB85, 0x0426C, 0x68CEAF34, 0x00004, 0x68DE4CD2, 0x00004, 0x697141AC, 0x00004,
0x697D1E29, 0x00004, 0x69CEB0C7, 0x00004, 0x6A09346C, 0x00132, 0x6ACEB25A, 0x00004,
0x6BCEB3ED, 0x00004, 0x6C3B5E62, 0x00004, 0x6C99F9A0, 0x00002, 0x6EB72940, 0x067D0,
0x6F411E56, 0x00004, 0x6F884079, 0x00004, 0x71599CC8, 0x00004, 0x7169F53F, 0x00004,
0x71825204, 0x00001, 0x718621A5, 0x00132, 0x721AE36F, 0x00004, 0x737D1964, 0x00004,
0x765468C3, 0x00004, 0x76921EEB, 0x00001, 0x7701D95E, 0x04610, 0x77275404, 0x00004,
0x77BD26F2, 0x00004, 0x783D2039, 0x00004, 0x783EEFDC, 0x00004, 0x7875451A, 0x01F50,
0x79151C13, 0x00004, 0x7964A5A9, 0x00004, 0x79C56A5C, 0x00004, 0x7AADA3E3, 0x00004,
0x7BE8A4C6, 0x00020, 0x7C86783F, 0x00008, 0x7D249649, 0x00004, 0x7E7E36B9, 0x00004,
0x7EF9C424, 0x00004, 0x81961C6F, 0x00004, 0x83978C43, 0x00004, 0x84B301C2, 0x00004,
0x84FD4F59, 0x00132, 0x85FDF16A, 0x00004, 0x865605E6, 0x00004, 0x86F9272C, 0x00004,
0x874DA6FA, 0x001D0, 0x87560779, 0x00004, 0x88F6D6AE, 0x033D0, 0x8902E727, 0x00004,
0x89048303, 0x033D0, 0x89A3A2B6, 0x00004, 0x8A4C1426, 0x00004, 0x8A4C178C, 0x00004,
0x8A4C193F, 0x00004, 0x8A4C1CA5, 0x00004, 0x8AD859BF, 0x00004, 0x8C560F58, 0x00004,
0x8C804D7B, 0x00004, 0x8CA88020, 0x00038, 0x8CBBFD90, 0x00008, 0x8CD9973A, 0x00004,
0x8D321AB8, 0x000D0, 0x8D5610EB, 0x00004, 0x8E1D74E8, 0x00004, 0x8E56127E, 0x00004,
0x8F3C763E, 0x00004, 0x8F561411, 0x00004, 0x9033EB7B, 0x00A68, 0x905615A4, 0x00004,
0x91561737, 0x00004, 0x91AC63B3, 0x00004, 0x925618CA, 0x00004, 0x92EB0306, 0x00004,
0x92F4F7F0, 0x00055, 0x93561A5D, 0x00004, 0x944481DD, 0x00132, 0x9497A849, 0x00004,
0x95F4FCA9, 0x00019, 0x96D3F39F, 0x00002, 0x9751BABE, 0x00400, 0x97D712D3, 0x00004,
0x982972C2, 0x00004, 0x996BEEAA, 0x00004, 0x99B9F60B, 0x00004, 0x99F197E9, 0x00004,
0x9ACC0AEC, 0x00004, 0x9ACC0E52, 0x00004, 0x9ACC1005, 0x00004, 0x9C781AE2, 0x00004,
0x9CE5CDB5, 0x00132, 0x9EC079DA, 0x00002, 0x9EED59DE, 0x00004, 0xA0F49CFB, 0x00004,
0xA202729F, 0x00004, 0xA3419FC7, 0x00019, 0xA4D5B8C0, 0x00004, 0xA4E3B2CF, 0x00004,
0xA5D0453A, 0x00004, 0xA7301FBD, 0x00004, 0xA7B8C97B, 0x00004, 0xA8067616, 0x00004,
0xA83021C1, 0x00268, 0xA8EB523D, 0x00004, 0xA9B04C50, 0x00004, 0xAA86248B, 0x00004,
0xAD2750BE, 0x00280, 0xAD3920F5, 0x1241C, 0xAD4E4275, 0x00004, 0xAD6F9196, 0x00004,
0xAD9DFA6A, 0x023D4, 0xAF0E8346, 0x00004, 0xAF37666F, 0x00004, 0xAF376822, 0x00004,
0xAF3769D5, 0x00004, 0xB027F396, 0x00004, 0xB125CDDC, 0x00004, 0xB1C26FB0, 0x000F8,
0xB1C7C436, 0x00004, 0xB1DDDCA8, 0x00028, 0xB2137AFE, 0x00004, 0xB25C772B, 0x50C20,
0xB47E1776, 0x0001E, 0xB9E1DE0C, 0x00004, 0xBB7B57FB, 0x00004, 0xBE3BD183, 0x00004,
0xC0362EDD, 0x00004, 0xC0DE5C5F, 0x00408, 0xC10889B1, 0x00004, 0xC1BA2375, 0x00004,
0xC23AF741, 0x00004, 0xC3FB9E77, 0x000A0, 0xC4F35C2E, 0x00004, 0xC6102A59, 0x00004,
0xC7161487, 0x00004, 0xC7652F1C, 0x00004, 0xC87219F6, 0x00132, 0xC94D1C48, 0x00004,
0xC9541EB3, 0x00002, 0xC96FEA27, 0x00004, 0xC9A133BC, 0x00004, 0xC9A138D5, 0x00004,
0xC9E6E098, 0x00004, 0xCA5FA1A3, 0x00004, 0xCA8A8CEE, 0x00004, 0xCC45DA54, 0x00004,
0xCCC153CD, 0x00004, 0xCE07D358, 0x0001C, 0xCE4AC6FA, 0x00001, 0xCE76E539, 0x00004,
0xD08391B9, 0x00004, 0xD105027A, 0x00132, 0xD14C95F9, 0x00004, 0xD224F9AC, 0x00F1C,
0xD81C8A46, 0x00004, 0xDC82C7C9, 0x00004, 0xDD12C9A5, 0x00008, 0xDFAAEECD, 0x00004,
0xE048C668, 0x00008, 0xE07F44FC, 0x02304, 0xE17F468F, 0x02304, 0xE250A142, 0x00004,
0xE2798DDE, 0x00001, 0xE2950DA8, 0x00001, 0xE2ED6B1D, 0x00320, 0xE2F6E456, 0x00008,
0xE3ABBA00, 0x00004, 0xE40A0EF4, 0x00004, 0xE47F4B48, 0x02304, 0xE57F4CDB, 0x02304,
0xE67F4E6E, 0x02304, 0xE77F5001, 0x02304, 0xE87F5194, 0x02304, 0xE97F5327, 0x02304,
0xE9BE28BF, 0x000F0, 0xEA40157B, 0x00014, 0xEA7F54BA, 0x02304, 0xEB7F564D, 0x02304,
0xECF1AE60, 0x02304, 0xEDF1AFF3, 0x02304, 0xEE7B2ABD, 0x00001, 0xEE7D64D5, 0x00538,
0xEEE5A3F8, 0x033D0, 0xEEF1B186, 0x02304, 0xEFCAE04E, 0x116C4, 0xEFF1B319, 0x02304,
0xF0159FB2, 0x00004, 0xF0576532, 0x00002, 0xF06213E4, 0x00004, 0xF0F1B4AC, 0x02304,
0xF1F1B63F, 0x02304, 0xF239E881, 0x02955, 0xF25C070E, 0x00110, 0xF2F1B7D2, 0x02304,
0xF3F1B965, 0x02304, 0xF64719D9, 0x00004, 0xF75FC566, 0x00004, 0xF75FC719, 0x00004,
0xF7DFDD95, 0x00004, 0xF8154AC9, 0x00004, 0xF8A1B32F, 0x00004, 0xF8E07F9B, 0x00004,
0xFA43BB59, 0x00004, 0xFAA7378A, 0x00004, 0xFAF1C46A, 0x02304, 0xFB2AE32B, 0x03208,
0xFBF1C5FD, 0x02304, 0xFBFF61F2, 0x00004, 0xFE2E9869, 0x00004, 0xFEB13D33, 0x00002,
};
}
}