diff --git a/Makefile b/Makefile index 79a781e..b6b5d8e 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC=g++ -CCFLAGS=-Wall -Werror -std=c++17 -O2 -DBMS_PARSER_VERBOSE=0 +CCFLAGS=-Wall -Werror -std=c++17 -O2 -DBMS_PARSER_VERBOSE=0 SRC_FILES = $(wildcard src/*.cpp) OBJ_PATH=obj BUILD_PATH=build diff --git a/example/main.cpp b/example/main.cpp index 661d4ce..5d06b8f 100644 --- a/example/main.cpp +++ b/example/main.cpp @@ -16,58 +16,51 @@ #if WITH_AMALGAMATION #include "bms_parser.hpp" #else -#include "../src/Parser.h" #include "../src/Chart.h" +#include "../src/Parser.h" + #endif +#include "sqlite3.h" #include #include -#include -#include +#include +#include #include +#include +#include +#include #include +#include #include -#include #include -#include -#include "sqlite3.h" -#include -#include -#include +#include + #ifdef _WIN32 #include #else #include #include #endif -void parallel_for(int n, std::function f) -{ +void parallel_for(int n, std::function f) { unsigned int nThreads = std::thread::hardware_concurrency(); nThreads = nThreads == 0 ? 1 : nThreads; unsigned int batchSize = n / nThreads; unsigned int remainder = n % nThreads; std::vector threads; - for (unsigned int i = 0; i < nThreads; i++) - { + for (unsigned int i = 0; i < nThreads; i++) { unsigned int start = i * batchSize; unsigned int end = start + batchSize; - if (i == nThreads - 1) - { + if (i == nThreads - 1) { end += remainder; } threads.push_back(std::thread(f, start, end)); } - for (auto &t : threads) - { + for (auto &t : threads) { t.join(); } } - - - - -void parse_single_metadata(const std::filesystem::path &bmsFile) -{ +void parse_single_metadata(const std::filesystem::path &bmsFile) { bms_parser::Parser parser; bms_parser::Chart *chart; std::atomic_bool cancel = false; @@ -85,60 +78,49 @@ void parse_single_metadata(const std::filesystem::path &bmsFile) std::cout << "PlayLevel: " << chart->Meta.PlayLevel << std::endl; std::cout << "Total: " << chart->Meta.Total << std::endl; std::cout << "StageFile: " << chart->Meta.StageFile.string() << std::endl; - std::cout << "Bpm: " << chart->Meta.MinBpm << "~" << chart->Meta.MaxBpm << " (" << chart->Meta.Bpm << ")" << std::endl; + std::cout << "Bpm: " << chart->Meta.MinBpm << "~" << chart->Meta.MaxBpm + << " (" << chart->Meta.Bpm << ")" << std::endl; std::cout << "Rank: " << chart->Meta.Rank << std::endl; std::cout << "TotalNotes: " << chart->Meta.TotalNotes << std::endl; std::cout << "Difficulty: " << chart->Meta.Difficulty << std::endl; std::cout << "TotalLength: " << chart->Meta.TotalLength << std::endl; std::cout << "PlayLength: " << chart->Meta.PlayLength << std::endl; } -enum DiffType -{ - Deleted, - Added -}; -struct Diff -{ +enum DiffType { Deleted, Added }; +struct Diff { std::filesystem::path path; DiffType type; }; #ifdef _WIN32 -void findFilesWin(const std::wstring &directoryPath, std::vector &diffs, const std::unordered_set &oldFiles, std::vector &directoriesToVisit) -{ +void findFilesWin(const std::wstring &directoryPath, std::vector &diffs, + const std::unordered_set &oldFiles, + std::vector &directoriesToVisit) { WIN32_FIND_DATAW findFileData; - HANDLE hFind = FindFirstFileW((directoryPath + L"\\*.*").c_str(), &findFileData); + HANDLE hFind = + FindFirstFileW((directoryPath + L"\\*.*").c_str(), &findFileData); - if (hFind != INVALID_HANDLE_VALUE) - { - do - { - if (!(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) - { + if (hFind != INVALID_HANDLE_VALUE) { + do { + if (!(findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { std::wstring filename(findFileData.cFileName); - if (filename.size() > 4) - { + if (filename.size() > 4) { std::wstring ext = filename.substr(filename.size() - 4); std::transform(ext.begin(), ext.end(), ext.begin(), ::towlower); - if (ext == L".bms" || ext == L".bme" || ext == L".bml") - { + if (ext == L".bms" || ext == L".bme" || ext == L".bml") { std::wstring dirPath; std::wstring fullPath = directoryPath + L"\\" + filename; - if (oldFiles.find(fullPath) == oldFiles.end()) - { + if (oldFiles.find(fullPath) == oldFiles.end()) { diffs.push_back({fullPath, Added}); } } } - } - else if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) - { + } else if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { std::wstring filename(findFileData.cFileName); - if (filename != L"." && filename != L"..") - { + if (filename != L"." && filename != L"..") { directoriesToVisit.push_back(directoryPath + L"\\" + filename); } } @@ -147,51 +129,45 @@ void findFilesWin(const std::wstring &directoryPath, std::vector &diffs, c } } #else -void resolveDType(const std::filesystem::path& directoryPath, struct dirent *entry){ - if(entry->d_type == DT_UNKNOWN){ +void resolveDType(const std::filesystem::path &directoryPath, + struct dirent *entry) { + if (entry->d_type == DT_UNKNOWN) { std::filesystem::path fullPath = directoryPath / entry->d_name; struct stat statbuf; - if(stat(fullPath.c_str(), &statbuf) == 0){ - if(S_ISREG(statbuf.st_mode)){ + if (stat(fullPath.c_str(), &statbuf) == 0) { + if (S_ISREG(statbuf.st_mode)) { entry->d_type = DT_REG; - }else if(S_ISDIR(statbuf.st_mode)){ + } else if (S_ISDIR(statbuf.st_mode)) { entry->d_type = DT_DIR; } } } } // TODO: Use platform-specific method for faster traversal -void findFilesUnix(const std::filesystem::path &directoryPath, std::vector &diffs, const std::unordered_set &oldFiles, std::vector &directoriesToVisit) -{ +void findFilesUnix(const std::filesystem::path &directoryPath, + std::vector &diffs, + const std::unordered_set &oldFiles, + std::vector &directoriesToVisit) { DIR *dir = opendir(directoryPath.c_str()); - if (dir) - { + if (dir) { struct dirent *entry; - while ((entry = readdir(dir)) != nullptr) - { + while ((entry = readdir(dir)) != nullptr) { resolveDType(directoryPath, entry); - if (entry->d_type == DT_REG) - { + if (entry->d_type == DT_REG) { std::string filename = entry->d_name; - if (filename.size() > 4) - { + if (filename.size() > 4) { std::string ext = filename.substr(filename.size() - 4); std::transform(ext.begin(), ext.end(), ext.begin(), ::tolower); - if (ext == ".bms" || ext == ".bme" || ext == ".bml") - { + if (ext == ".bms" || ext == ".bme" || ext == ".bml") { std::filesystem::path fullPath = directoryPath / filename; - if (oldFiles.find(fullPath.wstring()) == oldFiles.end()) - { + if (oldFiles.find(fullPath.wstring()) == oldFiles.end()) { diffs.push_back({fullPath, Added}); } } } - } - else if (entry->d_type == DT_DIR) - { + } else if (entry->d_type == DT_DIR) { std::string filename = entry->d_name; - if (filename != "." && filename != "..") - { + if (filename != "." && filename != "..") { directoriesToVisit.push_back(directoryPath / filename); } } @@ -201,8 +177,9 @@ void findFilesUnix(const std::filesystem::path &directoryPath, std::vector } #endif -void find_new_bms_files(std::vector &diffs, const std::unordered_set &oldFilesWs, const std::filesystem::path &path) -{ +void find_new_bms_files(std::vector &diffs, + const std::unordered_set &oldFilesWs, + const std::filesystem::path &path) { #ifdef _WIN32 std::vector directoriesToVisit; directoriesToVisit.push_back(path.wstring()); @@ -211,8 +188,7 @@ void find_new_bms_files(std::vector &diffs, const std::unordered_set &diffs, const std::unordered_set oldFiles; sqlite3_stmt *stmt; - rc = sqlite3_prepare_v2(db, "SELECT path FROM chart_meta", -1, &stmt, nullptr); - while (sqlite3_step(stmt) == SQLITE_ROW) - { - oldFiles.insert(std::filesystem::path(reinterpret_cast(sqlite3_column_text(stmt, 0))).wstring()); + rc = + sqlite3_prepare_v2(db, "SELECT path FROM chart_meta", -1, &stmt, nullptr); + while (sqlite3_step(stmt) == SQLITE_ROW) { + oldFiles.insert(std::filesystem::path(reinterpret_cast( + sqlite3_column_text(stmt, 0))) + .wstring()); } sqlite3_finalize(stmt); std::vector diffs; std::cout << "Finding new bms files" << std::endl; find_new_bms_files(diffs, oldFiles, path); std::cout << "Found " << diffs.size() << " new bms files" << std::endl; - for (auto &diff : diffs) - { + for (auto &diff : diffs) { std::wcout << diff.path << L" " << diff.type << std::endl; } std::atomic_bool is_committing = false; @@ -295,114 +269,126 @@ bool construct_folder_db(const std::filesystem::path &path) sqlite3_exec(db, "BEGIN", nullptr, nullptr, nullptr); - parallel_for(diffs.size(), [&](int start, int end) - { - - for(int i = start; i < end; i++){ - if(diffs[i].type == Added){ + parallel_for(diffs.size(), [&](int start, int end) { + for (int i = start; i < end; i++) { + if (diffs[i].type == Added) { bms_parser::Parser parser; bms_parser::Chart *chart; std::atomic_bool cancel = false; - try{ + try { parser.Parse(diffs[i].path.wstring(), &chart, false, true, cancel); // std::cout << "Title: " << ws2s(chart->Meta.Title) << std::endl; - // std::cout << "SubTitle: " << ws2s(chart->Meta.SubTitle) << std::endl; - // std::cout << "Artist: " << ws2s(chart->Meta.Artist) << std::endl; - }catch(std::exception &e){ + // std::cout << "SubTitle: " << ws2s(chart->Meta.SubTitle) << + // std::endl; std::cout << "Artist: " << ws2s(chart->Meta.Artist) << + // std::endl; + } catch (std::exception &e) { delete chart; - std::cerr << "Error parsing " << diffs[i].path << ": " << e.what() << std::endl; + std::cerr << "Error parsing " << diffs[i].path << ": " << e.what() + << std::endl; continue; } - if(chart == nullptr){ + if (chart == nullptr) { continue; } ++success_count; - if(success_count % 1000 == 0 && !is_committing){ + if (success_count % 1000 == 0 && !is_committing) { is_committing = true; sqlite3_exec(db, "COMMIT", nullptr, nullptr, nullptr); sqlite3_exec(db, "BEGIN", nullptr, nullptr, nullptr); is_committing = false; } auto query = "REPLACE INTO chart_meta (" - "path," - "md5," - "sha256," - "title," - "subtitle," - "genre," - "artist," - "sub_artist," - "folder," - "stage_file," - "banner," - "back_bmp," - "preview," - "level," - "difficulty," - "total," - "bpm," - "max_bpm," - "min_bpm," - "length," - "rank," - "player," - "keys," - "total_notes," - "total_long_notes," - "total_scratch_notes," - "total_backspin_notes" - ") VALUES(" - "@path," - "@md5," - "@sha256," - "@title," - "@subtitle," - "@genre," - "@artist," - "@sub_artist," - "@folder," - "@stage_file," - "@banner," - "@back_bmp," - "@preview," - "@level," - "@difficulty," - "@total," - "@bpm," - "@max_bpm," - "@min_bpm," - "@length," - "@rank," - "@player," - "@keys," - "@total_notes," - "@total_long_notes," - "@total_scratch_notes," - "@total_backspin_notes" - ")"; + "path," + "md5," + "sha256," + "title," + "subtitle," + "genre," + "artist," + "sub_artist," + "folder," + "stage_file," + "banner," + "back_bmp," + "preview," + "level," + "difficulty," + "total," + "bpm," + "max_bpm," + "min_bpm," + "length," + "rank," + "player," + "keys," + "total_notes," + "total_long_notes," + "total_scratch_notes," + "total_backspin_notes" + ") VALUES(" + "@path," + "@md5," + "@sha256," + "@title," + "@subtitle," + "@genre," + "@artist," + "@sub_artist," + "@folder," + "@stage_file," + "@banner," + "@back_bmp," + "@preview," + "@level," + "@difficulty," + "@total," + "@bpm," + "@max_bpm," + "@min_bpm," + "@length," + "@rank," + "@player," + "@keys," + "@total_notes," + "@total_long_notes," + "@total_scratch_notes," + "@total_backspin_notes" + ")"; sqlite3_stmt *stmt; rc = sqlite3_prepare_v2(db, query, -1, &stmt, nullptr); - if (rc != SQLITE_OK) - { + if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db)); return; } - sqlite3_bind_text(stmt, 1, chart->Meta.BmsPath.string().c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 2, (chart->Meta.MD5).c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 3, (chart->Meta.SHA256).c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 4, chart->Meta.Title.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 5, chart->Meta.SubTitle.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 6, chart->Meta.Genre.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 7, chart->Meta.Artist.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 8, chart->Meta.SubArtist.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 9, chart->Meta.Folder.string().c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 10, chart->Meta.StageFile.string().c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 11, chart->Meta.Banner.string().c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 12, chart->Meta.BackBmp.string().c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 13, chart->Meta.Preview.string().c_str(), -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 1, chart->Meta.BmsPath.string().c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 2, (chart->Meta.MD5).c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 3, (chart->Meta.SHA256).c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 4, chart->Meta.Title.c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 5, chart->Meta.SubTitle.c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 6, chart->Meta.Genre.c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 7, chart->Meta.Artist.c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 8, chart->Meta.SubArtist.c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 9, chart->Meta.Folder.string().c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 10, chart->Meta.StageFile.string().c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 11, chart->Meta.Banner.string().c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 12, chart->Meta.BackBmp.string().c_str(), -1, + SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 13, chart->Meta.Preview.string().c_str(), -1, + SQLITE_TRANSIENT); sqlite3_bind_double(stmt, 14, chart->Meta.PlayLevel); sqlite3_bind_int(stmt, 15, chart->Meta.Difficulty); sqlite3_bind_double(stmt, 16, chart->Meta.Total); @@ -418,8 +404,7 @@ bool construct_folder_db(const std::filesystem::path &path) sqlite3_bind_int(stmt, 26, chart->Meta.TotalScratchNotes); sqlite3_bind_int(stmt, 27, chart->Meta.TotalBackSpinNotes); rc = sqlite3_step(stmt); - if (rc != SQLITE_DONE) - { + if (rc != SQLITE_DONE) { fprintf(stderr, "SQL error: %s\n", sqlite3_errmsg(db)); delete chart; return; @@ -427,40 +412,38 @@ bool construct_folder_db(const std::filesystem::path &path) sqlite3_finalize(stmt); delete chart; } - } }); + } + }); sqlite3_exec(db, "COMMIT", nullptr, nullptr, nullptr); sqlite3_close(db); auto endTime = std::chrono::high_resolution_clock::now(); - std::cout << "Time taken: " << std::chrono::duration_cast(endTime - startTime).count() << "ms" << std::endl; + std::cout << "Time taken: " + << std::chrono::duration_cast(endTime - + startTime) + .count() + << "ms" << std::endl; return true; } -int main(int argc, char **argv) -{ - if (argc < 2) - { +int main(int argc, char **argv) { + if (argc < 2) { std::cout << "Usage: " << argv[0] << " " << std::endl; return 1; } bool isFolder = false; // check if it's a folder struct stat s; - if (stat(argv[1], &s) == 0) - { - if (s.st_mode & S_IFDIR) - { + if (stat(argv[1], &s) == 0) { + if (s.st_mode & S_IFDIR) { isFolder = true; } } std::cout << "isFolder: " << isFolder << std::endl; - if (isFolder) - { + if (isFolder) { construct_folder_db(std::filesystem::path(argv[1])); - } - else - { + } else { parse_single_metadata(std::filesystem::path(argv[1])); } return 0; diff --git a/src/Chart.cpp b/src/Chart.cpp index 0831165..dee43b1 100644 --- a/src/Chart.cpp +++ b/src/Chart.cpp @@ -1,33 +1,28 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "Chart.h" -namespace bms_parser -{ - Chart::Chart() - { - } +namespace bms_parser { +Chart::Chart() {} - Chart::~Chart() - { - for (const auto &measure : Measures) - { - delete measure; - } +Chart::~Chart() { + for (const auto &measure : Measures) { + delete measure; + } - Measures.clear(); - } + Measures.clear(); } +} // namespace bms_parser diff --git a/src/Chart.h b/src/Chart.h index 86aa059..5116980 100644 --- a/src/Chart.h +++ b/src/Chart.h @@ -1,15 +1,15 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ @@ -17,96 +17,92 @@ #pragma once #include "Measure.h" +#include #include -#include #include -#include -namespace bms_parser -{ - class ChartMeta - { - public: - std::string SHA256; - std::string MD5; - std::filesystem::path BmsPath; - std::filesystem::path Folder; - std::string Artist = ""; - std::string SubArtist = ""; - double Bpm = 0; - std::string Genre = ""; - std::string Title = ""; - std::string SubTitle = ""; - int Rank = 3; - double Total = 100; - long long PlayLength = 0; // Timing of the last playable note, in microseconds - long long TotalLength = 0; - // Timing of the last timeline(including background note, bga change note, invisible note, ...), in microseconds - std::filesystem::path Banner; - std::filesystem::path StageFile; - std::filesystem::path BackBmp; - std::filesystem::path Preview; - bool BgaPoorDefault = false; - int Difficulty = 0; - double PlayLevel = 3; - double MinBpm = 0; - double MaxBpm = 0; - int Player = 1; - int KeyMode = 5; - bool IsDP = false; - int TotalNotes = 0; - int TotalLongNotes = 0; - int TotalScratchNotes = 0; - int TotalBackSpinNotes = 0; - int TotalLandmineNotes = 0; - int LnMode = 0; // 0: user decides, 1: LN, 2: CN, 3: HCN +#include + +namespace bms_parser { +class ChartMeta { +public: + std::string SHA256; + std::string MD5; + std::filesystem::path BmsPath; + std::filesystem::path Folder; + std::string Artist = ""; + std::string SubArtist = ""; + double Bpm = 0; + std::string Genre = ""; + std::string Title = ""; + std::string SubTitle = ""; + int Rank = 3; + double Total = 100; + long long PlayLength = 0; // Timing of the last playable note, in microseconds + long long TotalLength = 0; + // Timing of the last timeline(including background note, bga change note, + // invisible note, ...), in microseconds + std::filesystem::path Banner; + std::filesystem::path StageFile; + std::filesystem::path BackBmp; + std::filesystem::path Preview; + bool BgaPoorDefault = false; + int Difficulty = 0; + double PlayLevel = 3; + double MinBpm = 0; + double MaxBpm = 0; + int Player = 1; + int KeyMode = 5; + bool IsDP = false; + int TotalNotes = 0; + int TotalLongNotes = 0; + int TotalScratchNotes = 0; + int TotalBackSpinNotes = 0; + int TotalLandmineNotes = 0; + int LnMode = 0; // 0: user decides, 1: LN, 2: CN, 3: HCN - int GetKeyLaneCount() const { return KeyMode; } - int GetScratchLaneCount() const { return IsDP ? 2 : 1; } - int GetTotalLaneCount() const { return KeyMode + GetScratchLaneCount(); } + int GetKeyLaneCount() const { return KeyMode; } + int GetScratchLaneCount() const { return IsDP ? 2 : 1; } + int GetTotalLaneCount() const { return KeyMode + GetScratchLaneCount(); } - std::vector GetKeyLaneIndices() const - { - switch (KeyMode) - { - case 5: - return {0, 1, 2, 3, 4}; - case 7: - return {0, 1, 2, 3, 4, 5, 6}; - case 10: - return {0, 1, 2, 3, 4, 8, 9, 10, 11, 12}; - case 14: - return {0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14}; - default: - return {}; - } - } + std::vector GetKeyLaneIndices() const { + switch (KeyMode) { + case 5: + return {0, 1, 2, 3, 4}; + case 7: + return {0, 1, 2, 3, 4, 5, 6}; + case 10: + return {0, 1, 2, 3, 4, 8, 9, 10, 11, 12}; + case 14: + return {0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14}; + default: + return {}; + } + } - std::vector GetScratchLaneIndices() const - { - if (IsDP) - { - return {7, 15}; - } - return {7}; - } + std::vector GetScratchLaneIndices() const { + if (IsDP) { + return {7, 15}; + } + return {7}; + } - std::vector GetTotalLaneIndices() const - { - std::vector Result; - Result.insert(Result.end(), GetKeyLaneIndices().begin(), GetKeyLaneIndices().end()); - Result.insert(Result.end(), GetScratchLaneIndices().begin(), GetScratchLaneIndices().end()); - return Result; - } - }; + std::vector GetTotalLaneIndices() const { + std::vector Result; + Result.insert(Result.end(), GetKeyLaneIndices().begin(), + GetKeyLaneIndices().end()); + Result.insert(Result.end(), GetScratchLaneIndices().begin(), + GetScratchLaneIndices().end()); + return Result; + } +}; - class Chart - { - public: - Chart(); - ~Chart(); - ChartMeta Meta; - std::vector Measures; - std::unordered_map WavTable; - std::unordered_map BmpTable; - }; -} \ No newline at end of file +class Chart { +public: + Chart(); + ~Chart(); + ChartMeta Meta; + std::vector Measures; + std::unordered_map WavTable; + std::unordered_map BmpTable; +}; +} // namespace bms_parser \ No newline at end of file diff --git a/src/LandmineNote.cpp b/src/LandmineNote.cpp index 6c9eff4..e1fa48b 100644 --- a/src/LandmineNote.cpp +++ b/src/LandmineNote.cpp @@ -1,28 +1,22 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "LandmineNote.h" -namespace bms_parser -{ - LandmineNote::LandmineNote(float Damage) : Note(0) - { - this->Damage = Damage; - } +namespace bms_parser { +LandmineNote::LandmineNote(float Damage) : Note(0) { this->Damage = Damage; } - LandmineNote::~LandmineNote() - { - } -} +LandmineNote::~LandmineNote() {} +} // namespace bms_parser diff --git a/src/LandmineNote.h b/src/LandmineNote.h index f74dcc5..6a44654 100644 --- a/src/LandmineNote.h +++ b/src/LandmineNote.h @@ -1,15 +1,15 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ @@ -20,15 +20,13 @@ /** * */ -namespace bms_parser -{ - class LandmineNote : public Note - { - public: - float Damage; - LandmineNote(float Damage); - virtual ~LandmineNote() override; +namespace bms_parser { +class LandmineNote : public Note { +public: + float Damage; + LandmineNote(float Damage); + virtual ~LandmineNote() override; - virtual bool IsLandmineNote() override { return true; } - }; -} + virtual bool IsLandmineNote() override { return true; } +}; +} // namespace bms_parser diff --git a/src/LongNote.cpp b/src/LongNote.cpp index 3344032..9648027 100644 --- a/src/LongNote.cpp +++ b/src/LongNote.cpp @@ -1,61 +1,48 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "LongNote.h" -namespace bms_parser -{ - bool LongNote::IsTail() - { - return Tail == nullptr; - } +namespace bms_parser { +bool LongNote::IsTail() { return Tail == nullptr; } - LongNote::LongNote(int Wav) : Note(Wav) - { - Tail = nullptr; - } +LongNote::LongNote(int Wav) : Note(Wav) { Tail = nullptr; } - void LongNote::Press(long long Time) - { - Play(Time); - IsHolding = true; - Tail->IsHolding = true; - } +void LongNote::Press(long long Time) { + Play(Time); + IsHolding = true; + Tail->IsHolding = true; +} - void LongNote::Release(long long Time) - { - Play(Time); - IsHolding = false; - Head->IsHolding = false; - ReleaseTime = Time; - } +void LongNote::Release(long long Time) { + Play(Time); + IsHolding = false; + Head->IsHolding = false; + ReleaseTime = Time; +} - void LongNote::MissPress(long long Time) - { - } +void LongNote::MissPress(long long Time) {} - void LongNote::Reset() - { - Note::Reset(); - IsHolding = false; - ReleaseTime = 0; - } +void LongNote::Reset() { + Note::Reset(); + IsHolding = false; + ReleaseTime = 0; +} - LongNote::~LongNote() - { - Head = nullptr; - Tail = nullptr; - } +LongNote::~LongNote() { + Head = nullptr; + Tail = nullptr; } +} // namespace bms_parser diff --git a/src/LongNote.h b/src/LongNote.h index 8dae19b..8496cd9 100644 --- a/src/LongNote.h +++ b/src/LongNote.h @@ -1,15 +1,15 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ @@ -20,29 +20,27 @@ /** * */ -namespace bms_parser -{ - class LongNote : public Note - { - public: - LongNote(); - virtual ~LongNote() override; - LongNote *Tail; - LongNote *Head; - bool IsHolding = false; - bool IsTail(); - long long ReleaseTime; +namespace bms_parser { +class LongNote : public Note { +public: + LongNote(); + virtual ~LongNote() override; + LongNote *Tail; + LongNote *Head; + bool IsHolding = false; + bool IsTail(); + long long ReleaseTime; - LongNote(int Wav); + LongNote(int Wav); - virtual void Press(long long Time) override; + virtual void Press(long long Time) override; - void Release(long long Time); + void Release(long long Time); - void MissPress(long long Time); + void MissPress(long long Time); - virtual void Reset() override; + virtual void Reset() override; - virtual bool IsLongNote() override { return true; } - }; -} + virtual bool IsLongNote() override { return true; } +}; +} // namespace bms_parser diff --git a/src/Measure.cpp b/src/Measure.cpp index be3ec0f..d0caccc 100644 --- a/src/Measure.cpp +++ b/src/Measure.cpp @@ -1,29 +1,26 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "Measure.h" -namespace bms_parser -{ - Measure::~Measure() - { - for (const auto &Timeline : TimeLines) - { - delete Timeline; - } - TimeLines.clear(); - } +namespace bms_parser { +Measure::~Measure() { + for (const auto &Timeline : TimeLines) { + delete Timeline; + } + TimeLines.clear(); } +} // namespace bms_parser diff --git a/src/Measure.h b/src/Measure.h index 65f9c4f..d77a6c5 100644 --- a/src/Measure.h +++ b/src/Measure.h @@ -1,15 +1,15 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ @@ -20,15 +20,13 @@ /** * */ -namespace bms_parser -{ - class Measure - { - public: - double Scale = 1; - long long Timing = 0; - double Pos = 0; - std::vector TimeLines; - ~Measure(); - }; -} +namespace bms_parser { +class Measure { +public: + double Scale = 1; + long long Timing = 0; + double Pos = 0; + std::vector TimeLines; + ~Measure(); +}; +} // namespace bms_parser diff --git a/src/Note.cpp b/src/Note.cpp index 3ab3d7e..7d5793b 100644 --- a/src/Note.cpp +++ b/src/Note.cpp @@ -1,47 +1,35 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "Note.h" -namespace bms_parser -{ - Note::Note(int wav) - { - Wav = wav; - } +namespace bms_parser { +Note::Note(int wav) { Wav = wav; } - void Note::Play(long long Time) - { - IsPlayed = true; - PlayedTime = Time; - } - - void Note::Press(long long Time) - { - Play(Time); - } +void Note::Play(long long Time) { + IsPlayed = true; + PlayedTime = Time; +} - void Note::Reset() - { - IsPlayed = false; - IsDead = false; - PlayedTime = 0; - } +void Note::Press(long long Time) { Play(Time); } - Note::~Note() - { - Timeline = nullptr; - } +void Note::Reset() { + IsPlayed = false; + IsDead = false; + PlayedTime = 0; } + +Note::~Note() { Timeline = nullptr; } +} // namespace bms_parser diff --git a/src/Note.h b/src/Note.h index 18ebb4e..c404039 100644 --- a/src/Note.h +++ b/src/Note.h @@ -1,48 +1,46 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once -namespace bms_parser -{ - class TimeLine; +namespace bms_parser { +class TimeLine; - class Note - { - public: - int Lane = 0; - int Wav = 0; +class Note { +public: + int Lane = 0; + int Wav = 0; - bool IsPlayed = false; - bool IsDead = false; - long long PlayedTime = 0; - TimeLine *Timeline; + bool IsPlayed = false; + bool IsDead = false; + long long PlayedTime = 0; + TimeLine *Timeline; - // private Note nextNote; + // private Note nextNote; - Note(int Wav); + Note(int Wav); - void Play(long long Time); + void Play(long long Time); - virtual void Press(long long Time); + virtual void Press(long long Time); - virtual void Reset(); - virtual ~Note(); + virtual void Reset(); + virtual ~Note(); - virtual bool IsLongNote() { return false; } - virtual bool IsLandmineNote() { return false; } - }; -} + virtual bool IsLongNote() { return false; } + virtual bool IsLandmineNote() { return false; } +}; +} // namespace bms_parser diff --git a/src/Parser.cpp b/src/Parser.cpp index 09977ed..790a6e9 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -15,1190 +15,974 @@ */ #include "Parser.h" -#include -#include -#include -#include -#include "LongNote.h" -#include "Note.h" #include "LandmineNote.h" -#include "TimeLine.h" +#include "LongNote.h" #include "Measure.h" +#include "Note.h" #include "ShiftJISConverter.h" +#include "TimeLine.h" +#include +#include +#include +#include +#include "SHA256.h" +#include "md5.h" +#include +#include #include -#include #include -#include #include -#include -#include "md5.h" -#include "SHA256.h" -#include +#include +#include + #ifndef BMS_PARSER_VERBOSE #define BMS_PARSER_VERBOSE 0 #endif -namespace bms_parser -{ - class threadRAII - { - std::thread th; - - public: - threadRAII(std::thread &&_th) - { - th = std::move(_th); - } - - ~threadRAII() - { - if (th.joinable()) - { - th.join(); - } - } - }; - enum Channel - { - LaneAutoplay = 1, - SectionRate = 2, - BpmChange = 3, - BgaPlay = 4, - PoorPlay = 6, - LayerPlay = 7, - BpmChangeExtend = 8, - Stop = 9, - - P1KeyBase = 1 * 36 + 1, - P2KeyBase = 2 * 36 + 1, - P1InvisibleKeyBase = 3 * 36 + 1, - P2InvisibleKeyBase = 4 * 36 + 1, - P1LongKeyBase = 5 * 36 + 1, - P2LongKeyBase = 6 * 36 + 1, - P1MineKeyBase = 13 * 36 + 1, - P2MineKeyBase = 14 * 36 + 1, - - Scroll = 1020 - }; - - namespace KeyAssign - { - int Beat7[] = {0, 1, 2, 3, 4, 7, -1, 5, 6, 8, 9, 10, 11, 12, 15, -1, 13, 14}; - int PopN[] = {0, 1, 2, 3, 4, -1, -1, -1, -1, -1, 5, 6, 7, 8, -1, -1, -1, -1}; - }; - - constexpr int TempKey = 16; - - Parser::Parser() : BpmTable{}, StopLengthTable{}, ScrollTable{} - { - std::random_device seeder; - Seed = seeder(); - } - - void Parser::SetRandomSeed(int RandomSeed) - { - Seed = RandomSeed; - } +namespace bms_parser { +class threadRAII { + std::thread th; + +public: + threadRAII(std::thread &&_th) { th = std::move(_th); } + + ~threadRAII() { + if (th.joinable()) { + th.join(); + } + } +}; +enum Channel { + LaneAutoplay = 1, + SectionRate = 2, + BpmChange = 3, + BgaPlay = 4, + PoorPlay = 6, + LayerPlay = 7, + BpmChangeExtend = 8, + Stop = 9, + + P1KeyBase = 1 * 36 + 1, + P2KeyBase = 2 * 36 + 1, + P1InvisibleKeyBase = 3 * 36 + 1, + P2InvisibleKeyBase = 4 * 36 + 1, + P1LongKeyBase = 5 * 36 + 1, + P2LongKeyBase = 6 * 36 + 1, + P1MineKeyBase = 13 * 36 + 1, + P2MineKeyBase = 14 * 36 + 1, + + Scroll = 1020 +}; + +namespace KeyAssign { +int Beat7[] = {0, 1, 2, 3, 4, 7, -1, 5, 6, 8, 9, 10, 11, 12, 15, -1, 13, 14}; +int PopN[] = {0, 1, 2, 3, 4, -1, -1, -1, -1, -1, 5, 6, 7, 8, -1, -1, -1, -1}; +}; // namespace KeyAssign + +constexpr int TempKey = 16; + +Parser::Parser() : BpmTable{}, StopLengthTable{}, ScrollTable{} { + std::random_device seeder; + Seed = seeder(); +} - int Parser::NoWav = -1; - int Parser::MetronomeWav = -2; - inline bool Parser::MatchHeader(const std::string_view &str, const std::string_view &headerUpper) - { - auto size = headerUpper.length(); - if (str.length() < size) - { - return false; - } - for (size_t i = 0; i < size; ++i) - { - if (std::towupper(str[i]) != headerUpper[i]) - { - return false; - } - } - return true; - } - void Parser::Parse(std::filesystem::path fpath, Chart **chart, bool addReadyMeasure, bool metaOnly, std::atomic_bool &bCancelled) - { +void Parser::SetRandomSeed(int RandomSeed) { Seed = RandomSeed; } + +int Parser::NoWav = -1; +int Parser::MetronomeWav = -2; +inline bool Parser::MatchHeader(const std::string_view &str, + const std::string_view &headerUpper) { + auto size = headerUpper.length(); + if (str.length() < size) { + return false; + } + for (size_t i = 0; i < size; ++i) { + if (std::towupper(str[i]) != headerUpper[i]) { + return false; + } + } + return true; +} +void Parser::Parse(std::filesystem::path fpath, Chart **chart, + bool addReadyMeasure, bool metaOnly, + std::atomic_bool &bCancelled) { #if BMS_PARSER_VERBOSE == 1 - auto startTime = std::chrono::high_resolution_clock::now(); + auto startTime = std::chrono::high_resolution_clock::now(); #endif - std::vector bytes; - std::ifstream file(fpath, std::ios::binary); - if (!file.is_open()) - { - std::cout << "Failed to open file: " << fpath << std::endl; - return; - } + std::vector bytes; + std::ifstream file(fpath, std::ios::binary); + if (!file.is_open()) { + std::cout << "Failed to open file: " << fpath << std::endl; + return; + } #if BMS_PARSER_VERBOSE == 1 - // measure file read time - auto midStartTime = std::chrono::high_resolution_clock::now(); + // measure file read time + auto midStartTime = std::chrono::high_resolution_clock::now(); #endif - file.seekg(0, std::ios::end); - auto size = file.tellg(); - file.seekg(0, std::ios::beg); - bytes.resize(static_cast(size)); - file.read(reinterpret_cast(bytes.data()), size); - file.close(); + file.seekg(0, std::ios::end); + auto size = file.tellg(); + file.seekg(0, std::ios::beg); + bytes.resize(static_cast(size)); + file.read(reinterpret_cast(bytes.data()), size); + file.close(); #if BMS_PARSER_VERBOSE == 1 - std::cout << "File read took " << std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - midStartTime).count() << "\n"; + std::cout << "File read took " + << std::chrono::duration_cast( + std::chrono::high_resolution_clock::now() - midStartTime) + .count() + << "\n"; #endif - Parse(bytes, chart, addReadyMeasure, metaOnly, bCancelled); - auto new_chart = *chart; - if (new_chart != nullptr) - { - new_chart->Meta.BmsPath = fpath; + Parse(bytes, chart, addReadyMeasure, metaOnly, bCancelled); + auto new_chart = *chart; + if (new_chart != nullptr) { + new_chart->Meta.BmsPath = fpath; - new_chart->Meta.Folder = fpath.parent_path(); - } + new_chart->Meta.Folder = fpath.parent_path(); + } #if BMS_PARSER_VERBOSE == 1 - auto endTime = std::chrono::high_resolution_clock::now(); - std::cout << "Total parsing+reading took " << std::chrono::duration_cast(endTime - startTime).count() << "\n"; + auto endTime = std::chrono::high_resolution_clock::now(); + std::cout << "Total parsing+reading took " + << std::chrono::duration_cast(endTime - + startTime) + .count() + << "\n"; #endif - } - void Parser::Parse(const std::vector &bytes, Chart **chart, bool addReadyMeasure, bool metaOnly, std::atomic_bool &bCancelled) - { +} +void Parser::Parse(const std::vector &bytes, Chart **chart, + bool addReadyMeasure, bool metaOnly, + std::atomic_bool &bCancelled) { #if BMS_PARSER_VERBOSE == 1 - auto startTime = std::chrono::high_resolution_clock::now(); + auto startTime = std::chrono::high_resolution_clock::now(); #endif - auto new_chart = new Chart(); - *chart = new_chart; + auto new_chart = new Chart(); + *chart = new_chart; - static std::regex headerRegex(R"(^#([A-Za-z]+?)(\d\d)? +?(.+)?)"); + static std::regex headerRegex(R"(^#([A-Za-z]+?)(\d\d)? +?(.+)?)"); - if (bCancelled) - { - return; - } + if (bCancelled) { + return; + } - auto measures = std::unordered_map>>(); + auto measures = + std::unordered_map>>(); - // compute hash in separate thread - std::thread md5Thread([&bytes, new_chart] - { + // compute hash in separate thread + std::thread md5Thread([&bytes, new_chart] { #if BMS_PARSER_VERBOSE == 1 - auto startTime = std::chrono::high_resolution_clock::now(); + auto startTime = std::chrono::high_resolution_clock::now(); #endif - MD5 md5; - md5.update(bytes.data(), bytes.size()); - md5.finalize(); - new_chart->Meta.MD5 = md5.hexdigest(); + MD5 md5; + md5.update(bytes.data(), bytes.size()); + md5.finalize(); + new_chart->Meta.MD5 = md5.hexdigest(); #if BMS_PARSER_VERBOSE == 1 - std::cout << "Hashing MD5 took " << std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - startTime).count() << "\n"; + std::cout << "Hashing MD5 took " + << std::chrono::duration_cast( + std::chrono::high_resolution_clock::now() - startTime) + .count() + << "\n"; #endif - }); - threadRAII md5RAII(std::move(md5Thread)); - std::thread sha256Thread([&bytes, new_chart] - { + }); + threadRAII md5RAII(std::move(md5Thread)); + std::thread sha256Thread([&bytes, new_chart] { #if BMS_PARSER_VERBOSE == 1 - auto startTime = std::chrono::high_resolution_clock::now(); + auto startTime = std::chrono::high_resolution_clock::now(); #endif - new_chart->Meta.SHA256 = sha256(bytes); + new_chart->Meta.SHA256 = sha256(bytes); #if BMS_PARSER_VERBOSE == 1 - std::cout << "Hashing SHA256 took " << std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - startTime).count() << "\n"; + std::cout << "Hashing SHA256 took " + << std::chrono::duration_cast( + std::chrono::high_resolution_clock::now() - startTime) + .count() + << "\n"; #endif - }); - threadRAII sha256RAII(std::move(sha256Thread)); + }); + threadRAII sha256RAII(std::move(sha256Thread)); - // std::cout<<"file size: "<(std::chrono::high_resolution_clock::now() - midStartTime).count() << "\n"; + std::cout << "ShiftJIS-UTF8 conversion took " + << std::chrono::duration_cast( + std::chrono::high_resolution_clock::now() - midStartTime) + .count() + << "\n"; #endif - // std::wcout< RandomStack; - std::vector SkipStack; - // init prng with seed - std::mt19937_64 Prng(Seed); - - std::string line; - std::istringstream stream(content); + // std::wcout< RandomStack; + std::vector SkipStack; + // init prng with seed + std::mt19937_64 Prng(Seed); + + std::string line; + std::istringstream stream(content); #if BMS_PARSER_VERBOSE == 1 - midStartTime = std::chrono::high_resolution_clock::now(); + midStartTime = std::chrono::high_resolution_clock::now(); #endif - auto lastMeasure = -1; - while (std::getline(stream, line)) - { - if (!line.empty() && line.back() == '\r') - { - line.pop_back(); - } - if (bCancelled) - { - return; - } - // std::cout << line << std::endl; - if (line.size() <= 1 || line[0] != L'#') - continue; - if (bCancelled) - { - return; - } - - if (MatchHeader(line, "#IF")) // #IF n - { - if (RandomStack.empty()) - { - // UE_LOG(LogTemp, Warning, TEXT("RandomStack is empty!")); - continue; - } - const int CurrentRandom = RandomStack.back(); - const int n = static_cast(std::stol(line.substr(4), nullptr, 10)); - SkipStack.push_back(CurrentRandom != n); - continue; - } - if (MatchHeader(line, "#ELSE")) - { - if (SkipStack.empty()) - { - // UE_LOG(LogTemp, Warning, TEXT("SkipStack is empty!")); - continue; - } - const bool CurrentSkip = SkipStack.back(); - SkipStack.pop_back(); - SkipStack.push_back(!CurrentSkip); - continue; - } - if (MatchHeader(line, "#ELSEIF")) - { - if (SkipStack.empty()) - { - // UE_LOG(LogTemp, Warning, TEXT("SkipStack is empty!")); - continue; - } - const bool CurrentSkip = SkipStack.back(); - SkipStack.pop_back(); - const int CurrentRandom = RandomStack.back(); - const int n = static_cast(std::stol(line.substr(8), nullptr, 10)); - SkipStack.push_back(CurrentSkip && CurrentRandom != n); - continue; - } - if (MatchHeader(line, "#ENDIF") || MatchHeader(line, "#END IF")) - { - if (SkipStack.empty()) - { - // UE_LOG(LogTemp, Warning, TEXT("SkipStack is empty!")); - continue; - } - SkipStack.pop_back(); - continue; - } - if (!SkipStack.empty() && SkipStack.back()) - { - continue; - } - if (MatchHeader(line, "#RANDOM") || MatchHeader(line, "#RONDAM")) // #RANDOM n - { - const int n = static_cast(std::stol(line.substr(7), nullptr, 10)); - std::uniform_int_distribution dist(1, n); - RandomStack.push_back(dist(Prng)); - continue; - } - if (MatchHeader(line, "#ENDRANDOM")) - { - if (RandomStack.empty()) - { - // UE_LOG(LogTemp, Warning, TEXT("RandomStack is empty!")); - continue; - } - RandomStack.pop_back(); - continue; - } - - if (line.length() >= 7 && std::isdigit(line[1]) && std::isdigit(line[2]) && std::isdigit(line[3]) && line[6] == ':') - { - const int measure = static_cast(std::stol(line.substr(1, 3), nullptr, 10)); - lastMeasure = std::max(lastMeasure, measure); - const std::string ch = line.substr(4, 2); - const int channel = ParseInt(ch); - const std::string value = line.substr(7); - if (measures.find(measure) == measures.end()) - { - measures[measure] = std::vector>(); - } - measures[measure].emplace_back(channel, value); - } - else - { - if (MatchHeader(line, "#WAV")) - { - if (metaOnly) - { - continue; - } - if (line.length() < 7) - { - continue; - } - const auto xx = line.substr(4, 2); - const auto value = line.substr(7); - ParseHeader(new_chart, "WAV", xx, value); - } - else if (MatchHeader(line, "#BMP")) - { - if (metaOnly) - { - continue; - } - if (line.length() < 7) - { - continue; - } - const auto xx = line.substr(4, 2); - const auto value = line.substr(7); - ParseHeader(new_chart, "BMP", xx, value); - } - else if (MatchHeader(line, "#STOP")) - { - if (line.length() < 8) - { - continue; - } - const auto xx = line.substr(5, 2); - const auto value = line.substr(8); - ParseHeader(new_chart, "STOP", xx, value); - } - else if (MatchHeader(line, "#BPM")) - { - if (line.substr(4).rfind(" ", 0) == 0) - { - const auto value = line.substr(5); - ParseHeader(new_chart, "BPM", "", value); - } - else - { - if (line.length() < 7) - { - continue; - } - const auto xx = line.substr(4, 2); - const auto value = line.substr(7); - ParseHeader(new_chart, "BPM", xx, value); - } - } - else if (MatchHeader(line, "#SCROLL")) - { - if (line.length() < 10) - { - continue; - } - const auto xx = line.substr(7, 2); - const auto value = line.substr(10); - ParseHeader(new_chart, "SCROLL", xx, value); - } - else - { - std::smatch matcher; - - if (std::regex_search(line, matcher, headerRegex)) - { - std::string xx = matcher[2].str(); - std::string value = matcher[3].str(); - if (value.empty()) - { - value = xx; - xx = ""; - } - ParseHeader(new_chart, matcher[1].str(), xx, value); - } - } - } - } + auto lastMeasure = -1; + while (std::getline(stream, line)) { + if (!line.empty() && line.back() == '\r') { + line.pop_back(); + } + if (bCancelled) { + return; + } + // std::cout << line << std::endl; + if (line.size() <= 1 || line[0] != L'#') + continue; + if (bCancelled) { + return; + } + + if (MatchHeader(line, "#IF")) // #IF n + { + if (RandomStack.empty()) { + // UE_LOG(LogTemp, Warning, TEXT("RandomStack is empty!")); + continue; + } + const int CurrentRandom = RandomStack.back(); + const int n = static_cast(std::stol(line.substr(4), nullptr, 10)); + SkipStack.push_back(CurrentRandom != n); + continue; + } + if (MatchHeader(line, "#ELSE")) { + if (SkipStack.empty()) { + // UE_LOG(LogTemp, Warning, TEXT("SkipStack is empty!")); + continue; + } + const bool CurrentSkip = SkipStack.back(); + SkipStack.pop_back(); + SkipStack.push_back(!CurrentSkip); + continue; + } + if (MatchHeader(line, "#ELSEIF")) { + if (SkipStack.empty()) { + // UE_LOG(LogTemp, Warning, TEXT("SkipStack is empty!")); + continue; + } + const bool CurrentSkip = SkipStack.back(); + SkipStack.pop_back(); + const int CurrentRandom = RandomStack.back(); + const int n = static_cast(std::stol(line.substr(8), nullptr, 10)); + SkipStack.push_back(CurrentSkip && CurrentRandom != n); + continue; + } + if (MatchHeader(line, "#ENDIF") || MatchHeader(line, "#END IF")) { + if (SkipStack.empty()) { + // UE_LOG(LogTemp, Warning, TEXT("SkipStack is empty!")); + continue; + } + SkipStack.pop_back(); + continue; + } + if (!SkipStack.empty() && SkipStack.back()) { + continue; + } + if (MatchHeader(line, "#RANDOM") || + MatchHeader(line, "#RONDAM")) // #RANDOM n + { + const int n = static_cast(std::stol(line.substr(7), nullptr, 10)); + std::uniform_int_distribution dist(1, n); + RandomStack.push_back(dist(Prng)); + continue; + } + if (MatchHeader(line, "#ENDRANDOM")) { + if (RandomStack.empty()) { + // UE_LOG(LogTemp, Warning, TEXT("RandomStack is empty!")); + continue; + } + RandomStack.pop_back(); + continue; + } + + if (line.length() >= 7 && std::isdigit(line[1]) && std::isdigit(line[2]) && + std::isdigit(line[3]) && line[6] == ':') { + const int measure = + static_cast(std::stol(line.substr(1, 3), nullptr, 10)); + lastMeasure = std::max(lastMeasure, measure); + const std::string ch = line.substr(4, 2); + const int channel = ParseInt(ch); + const std::string value = line.substr(7); + if (measures.find(measure) == measures.end()) { + measures[measure] = std::vector>(); + } + measures[measure].emplace_back(channel, value); + } else { + if (MatchHeader(line, "#WAV")) { + if (metaOnly) { + continue; + } + if (line.length() < 7) { + continue; + } + const auto xx = line.substr(4, 2); + const auto value = line.substr(7); + ParseHeader(new_chart, "WAV", xx, value); + } else if (MatchHeader(line, "#BMP")) { + if (metaOnly) { + continue; + } + if (line.length() < 7) { + continue; + } + const auto xx = line.substr(4, 2); + const auto value = line.substr(7); + ParseHeader(new_chart, "BMP", xx, value); + } else if (MatchHeader(line, "#STOP")) { + if (line.length() < 8) { + continue; + } + const auto xx = line.substr(5, 2); + const auto value = line.substr(8); + ParseHeader(new_chart, "STOP", xx, value); + } else if (MatchHeader(line, "#BPM")) { + if (line.substr(4).rfind(" ", 0) == 0) { + const auto value = line.substr(5); + ParseHeader(new_chart, "BPM", "", value); + } else { + if (line.length() < 7) { + continue; + } + const auto xx = line.substr(4, 2); + const auto value = line.substr(7); + ParseHeader(new_chart, "BPM", xx, value); + } + } else if (MatchHeader(line, "#SCROLL")) { + if (line.length() < 10) { + continue; + } + const auto xx = line.substr(7, 2); + const auto value = line.substr(10); + ParseHeader(new_chart, "SCROLL", xx, value); + } else { + std::smatch matcher; + + if (std::regex_search(line, matcher, headerRegex)) { + std::string xx = matcher[2].str(); + std::string value = matcher[3].str(); + if (value.empty()) { + value = xx; + xx = ""; + } + ParseHeader(new_chart, matcher[1].str(), xx, value); + } + } + } + } #if BMS_PARSER_VERBOSE == 1 - std::cout << "Parsing headers took " << std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - midStartTime).count() << "\n"; + std::cout << "Parsing headers took " + << std::chrono::duration_cast( + std::chrono::high_resolution_clock::now() - midStartTime) + .count() + << "\n"; #endif - if (bCancelled) - { - return; - } - if (addReadyMeasure) - { - measures[0] = std::vector>(); - measures[0].emplace_back(LaneAutoplay, "********"); - } - - double timePassed = 0; - int totalNotes = 0; - int totalLongNotes = 0; - int totalScratchNotes = 0; - int totalBackSpinNotes = 0; - int totalLandmineNotes = 0; - auto currentBpm = new_chart->Meta.Bpm; - auto minBpm = new_chart->Meta.Bpm; - auto maxBpm = new_chart->Meta.Bpm; - auto lastNote = std::vector(); - lastNote.resize(TempKey, nullptr); - auto lnStart = std::vector(); - lnStart.resize(TempKey, nullptr); + if (bCancelled) { + return; + } + if (addReadyMeasure) { + measures[0] = std::vector>(); + measures[0].emplace_back(LaneAutoplay, "********"); + } + + double timePassed = 0; + int totalNotes = 0; + int totalLongNotes = 0; + int totalScratchNotes = 0; + int totalBackSpinNotes = 0; + int totalLandmineNotes = 0; + auto currentBpm = new_chart->Meta.Bpm; + auto minBpm = new_chart->Meta.Bpm; + auto maxBpm = new_chart->Meta.Bpm; + auto lastNote = std::vector(); + lastNote.resize(TempKey, nullptr); + auto lnStart = std::vector(); + lnStart.resize(TempKey, nullptr); #if BMS_PARSER_VERBOSE == 1 - midStartTime = std::chrono::high_resolution_clock::now(); + midStartTime = std::chrono::high_resolution_clock::now(); #endif - for (auto i = 0; i <= lastMeasure; ++i) - { - if (bCancelled) - { - return; - } - if (measures.find(i) == measures.end()) - { - measures[i] = std::vector>(); - } - - // gcd (int, int) - auto measure = new Measure(); - - // NOTE: this should be an ordered map - auto timelines = std::map(); - - for (auto &pair : measures[i]) - { - if (bCancelled) - { - break; - } - auto channel = pair.first; - auto &data = pair.second; - if (channel == SectionRate) - { - measure->Scale = std::stod(data, nullptr); - continue; - } - - auto laneNumber = 0; // NOTE: This is intentionally set to 0, not -1! - if (channel >= P1KeyBase && channel < P1KeyBase + 9) - { - laneNumber = KeyAssign::Beat7[channel - P1KeyBase]; - channel = P1KeyBase; - } - else if (channel >= P2KeyBase && channel < P2KeyBase + 9) - { - laneNumber = KeyAssign::Beat7[channel - P2KeyBase + 9]; - channel = P1KeyBase; - } - else if (channel >= P1InvisibleKeyBase && channel < P1InvisibleKeyBase + 9) - { - laneNumber = KeyAssign::Beat7[channel - P1InvisibleKeyBase]; - channel = P1InvisibleKeyBase; - } - else if (channel >= P2InvisibleKeyBase && channel < P2InvisibleKeyBase + 9) - { - laneNumber = KeyAssign::Beat7[channel - P2InvisibleKeyBase + 9]; - channel = P1InvisibleKeyBase; - } - else if (channel >= P1LongKeyBase && channel < P1LongKeyBase + 9) - { - laneNumber = KeyAssign::Beat7[channel - P1LongKeyBase]; - channel = P1LongKeyBase; - } - else if (channel >= P2LongKeyBase && channel < P2LongKeyBase + 9) - { - laneNumber = KeyAssign::Beat7[channel - P2LongKeyBase + 9]; - channel = P1LongKeyBase; - } - else if (channel >= P1MineKeyBase && channel < P1MineKeyBase + 9) - { - laneNumber = KeyAssign::Beat7[channel - P1MineKeyBase]; - channel = P1MineKeyBase; - } - else if (channel >= P2MineKeyBase && channel < P2MineKeyBase + 9) - { - laneNumber = KeyAssign::Beat7[channel - P2MineKeyBase + 9]; - channel = P1MineKeyBase; - } - - if (laneNumber == -1) - { - continue; - } - const bool isScratch = laneNumber == 7 || laneNumber == 15; - if (laneNumber == 5 || laneNumber == 6 || laneNumber == 13 || laneNumber == 14) - { - if (new_chart->Meta.KeyMode == 5) - { - new_chart->Meta.KeyMode = 7; - } - else if (new_chart->Meta.KeyMode == 10) - { - new_chart->Meta.KeyMode = 14; - } - } - if (laneNumber >= 8) - { - if (new_chart->Meta.KeyMode == 7) - { - new_chart->Meta.KeyMode = 14; - } - else if (new_chart->Meta.KeyMode == 5) - { - new_chart->Meta.KeyMode = 10; - } - new_chart->Meta.IsDP = true; - } - - const auto dataCount = data.length() / 2; - for (size_t j = 0; j < dataCount; ++j) - { - if (bCancelled) - { - break; - } - std::string val = data.substr(j * 2, 2); - if (val == "00") - { - if (timelines.size() == 0 && j == 0) - { - auto timeline = new TimeLine(TempKey, metaOnly); - timelines[0] = timeline; // add ghost timeline - } - - continue; - } - - const auto g = Gcd(j, dataCount); - // ReSharper disable PossibleLossOfFraction - const auto position = static_cast(j / g) / (dataCount / g); - - if (timelines.find(position) == timelines.end()) - { - timelines[position] = new TimeLine(TempKey, metaOnly); - } - - auto timeline = timelines[position]; - if (channel == LaneAutoplay || channel == P1InvisibleKeyBase) - { - if (metaOnly) - { - break; - } - } - switch (channel) - { - case LaneAutoplay: - if (metaOnly) - { - break; - } - if (val == "**") - { - timeline->AddBackgroundNote(new Note{MetronomeWav}); - break; - } - if (ParseInt(val) != 0) - { - auto bgNote = new Note{ToWaveId(new_chart, val, metaOnly)}; - timeline->AddBackgroundNote(bgNote); - } - - break; - case BpmChange: - { - int bpm = ParseHex(val); - timeline->Bpm = static_cast(bpm); - // std::cout << "BPM_CHANGE: " << timeline->Bpm << ", on measure " << i << std::endl; - // Debug.Log($"BPM_CHANGE: {timeline.Bpm}, on measure {i}"); - timeline->BpmChange = true; - break; - } - case BgaPlay: - timeline->BgaBase = ParseInt(val); - break; - case PoorPlay: - timeline->BgaPoor = ParseInt(val); - break; - case LayerPlay: - timeline->BgaLayer = ParseInt(val); - break; - case BpmChangeExtend: - { - const auto id = ParseInt(val); - // std::cout << "BPM_CHANGE_EXTEND: " << id << ", on measure " << i << std::endl; - if (!CheckResourceIdRange(id)) - { - // UE_LOG(LogTemp, Warning, TEXT("Invalid BPM id: %s"), *val); - break; - } - if (BpmTable.find(id) != BpmTable.end()) - { - timeline->Bpm = BpmTable[id]; - } - else - { - timeline->Bpm = 0; - // std::cout<<"Undefined BPM: "<BpmChange = true; - break; - } - case Scroll: - { - const auto id = ParseInt(val); - if (!CheckResourceIdRange(id)) - { - // UE_LOG(LogTemp, Warning, TEXT("Invalid Scroll id: %s"), *val); - break; - } - if (ScrollTable.find(id) != ScrollTable.end()) - { - timeline->Scroll = ScrollTable[id]; - } - else - { - timeline->Scroll = 1; - } - // Debug.Log($"SCROLL: {timeline.Scroll}, on measure {i}"); - break; - } - case Stop: - { - const auto id = ParseInt(val); - if (!CheckResourceIdRange(id)) - { - // UE_LOG(LogTemp, Warning, TEXT("Invalid StopLength id: %s"), *val); - break; - } - if (StopLengthTable.find(id) != StopLengthTable.end()) - { - timeline->StopLength = StopLengthTable[id]; - } - else - { - timeline->StopLength = 0; - } - // Debug.Log($"STOP: {timeline.StopLength}, on measure {i}"); - break; - } - case P1KeyBase: - { - const auto ch = ParseInt(val); - if (ch == Lnobj && lastNote[laneNumber] != nullptr) - { - if (isScratch) - { - ++totalBackSpinNotes; - } - else - { - ++totalLongNotes; - } - - auto last = lastNote[laneNumber]; - lastNote[laneNumber] = nullptr; - if (metaOnly) - { - break; - } - - auto lastTimeline = last->Timeline; - auto ln = new LongNote{last->Wav}; - delete last; - ln->Tail = new LongNote{NoWav}; - ln->Tail->Head = ln; - lastTimeline->SetNote( - laneNumber, ln); - timeline->SetNote( - laneNumber, ln->Tail); - } - else - { - auto note = new Note{ToWaveId(new_chart, val, metaOnly)}; - lastNote[laneNumber] = note; - ++totalNotes; - if (isScratch) - { - ++totalScratchNotes; - } - if (metaOnly) - { - delete note; // this is intended - break; - } - timeline->SetNote( - laneNumber, note); - } - } - break; - case P1InvisibleKeyBase: - { - if (metaOnly) - { - break; - } - auto invNote = new Note{ToWaveId(new_chart, val, metaOnly)}; - timeline->SetInvisibleNote( - laneNumber, invNote); - break; - } - - case P1LongKeyBase: - if (Lntype == 1) - { - if (lnStart[laneNumber] == nullptr) - { - ++totalNotes; - if (isScratch) - { - ++totalBackSpinNotes; - } - else - { - ++totalLongNotes; - } - - auto ln = new LongNote{ToWaveId(new_chart, val, metaOnly)}; - lnStart[laneNumber] = ln; - - if (metaOnly) - { - delete ln; // this is intended - break; - } - - timeline->SetNote( - laneNumber, ln); - } - else - { - if (!metaOnly) - { - auto tail = new LongNote{NoWav}; - tail->Head = lnStart[laneNumber]; - lnStart[laneNumber]->Tail = tail; - timeline->SetNote( - laneNumber, tail); - } - lnStart[laneNumber] = nullptr; - } - } - - break; - case P1MineKeyBase: - // landmine - ++totalLandmineNotes; - if (metaOnly) - { - break; - } - const auto damage = ParseInt(val, true) / 2.0f; - timeline->SetNote( - laneNumber, new LandmineNote{damage}); - break; - } - } - } - - new_chart->Meta.TotalNotes = totalNotes; - new_chart->Meta.TotalLongNotes = totalLongNotes; - new_chart->Meta.TotalScratchNotes = totalScratchNotes; - new_chart->Meta.TotalBackSpinNotes = totalBackSpinNotes; - new_chart->Meta.TotalLandmineNotes = totalLandmineNotes; - - auto lastPosition = 0.0; - - measure->Timing = static_cast(timePassed); - - for (auto &pair : timelines) - { - if (bCancelled) - { - break; - } - const auto position = pair.first; - const auto timeline = pair.second; - - // Debug.Log($"measure: {i}, position: {position}, lastPosition: {lastPosition} bpm: {bpm} scale: {measure.scale} interval: {240 * 1000 * 1000 * (position - lastPosition) * measure.scale / bpm}"); - const auto interval = 240000000.0 * (position - lastPosition) * measure->Scale / currentBpm; - timePassed += interval; - timeline->Timing = static_cast(timePassed); - if (timeline->BpmChange) - { - currentBpm = timeline->Bpm; - minBpm = std::min(minBpm, timeline->Bpm); - maxBpm = std::max(maxBpm, timeline->Bpm); - } - else - { - timeline->Bpm = currentBpm; - } - - // Debug.Log($"measure: {i}, position: {position}, lastPosition: {lastPosition}, bpm: {currentBpm} scale: {measure.Scale} interval: {interval} stop: {timeline.GetStopDuration()}"); - - timePassed += timeline->GetStopDuration(); - if (!metaOnly) - { - measure->TimeLines.push_back(timeline); - } - - lastPosition = position; - } - - if (metaOnly) - { - for (auto &timeline : timelines) - { - delete timeline.second; - } - timelines.clear(); - } - - if (!metaOnly && measure->TimeLines.size() == 0) - { - auto timeline = new TimeLine(TempKey, metaOnly); - timeline->Timing = static_cast(timePassed); - timeline->Bpm = currentBpm; - measure->TimeLines.push_back(timeline); - } - new_chart->Meta.PlayLength = static_cast(timePassed); - timePassed += 240000000.0 * (1 - lastPosition) * measure->Scale / currentBpm; - if (!metaOnly) - { - new_chart->Measures.push_back(measure); - } - else - { - delete measure; - } - } + for (auto i = 0; i <= lastMeasure; ++i) { + if (bCancelled) { + return; + } + if (measures.find(i) == measures.end()) { + measures[i] = std::vector>(); + } + + // gcd (int, int) + auto measure = new Measure(); + + // NOTE: this should be an ordered map + auto timelines = std::map(); + + for (auto &pair : measures[i]) { + if (bCancelled) { + break; + } + auto channel = pair.first; + auto &data = pair.second; + if (channel == SectionRate) { + measure->Scale = std::stod(data, nullptr); + continue; + } + + auto laneNumber = 0; // NOTE: This is intentionally set to 0, not -1! + if (channel >= P1KeyBase && channel < P1KeyBase + 9) { + laneNumber = KeyAssign::Beat7[channel - P1KeyBase]; + channel = P1KeyBase; + } else if (channel >= P2KeyBase && channel < P2KeyBase + 9) { + laneNumber = KeyAssign::Beat7[channel - P2KeyBase + 9]; + channel = P1KeyBase; + } else if (channel >= P1InvisibleKeyBase && + channel < P1InvisibleKeyBase + 9) { + laneNumber = KeyAssign::Beat7[channel - P1InvisibleKeyBase]; + channel = P1InvisibleKeyBase; + } else if (channel >= P2InvisibleKeyBase && + channel < P2InvisibleKeyBase + 9) { + laneNumber = KeyAssign::Beat7[channel - P2InvisibleKeyBase + 9]; + channel = P1InvisibleKeyBase; + } else if (channel >= P1LongKeyBase && channel < P1LongKeyBase + 9) { + laneNumber = KeyAssign::Beat7[channel - P1LongKeyBase]; + channel = P1LongKeyBase; + } else if (channel >= P2LongKeyBase && channel < P2LongKeyBase + 9) { + laneNumber = KeyAssign::Beat7[channel - P2LongKeyBase + 9]; + channel = P1LongKeyBase; + } else if (channel >= P1MineKeyBase && channel < P1MineKeyBase + 9) { + laneNumber = KeyAssign::Beat7[channel - P1MineKeyBase]; + channel = P1MineKeyBase; + } else if (channel >= P2MineKeyBase && channel < P2MineKeyBase + 9) { + laneNumber = KeyAssign::Beat7[channel - P2MineKeyBase + 9]; + channel = P1MineKeyBase; + } + + if (laneNumber == -1) { + continue; + } + const bool isScratch = laneNumber == 7 || laneNumber == 15; + if (laneNumber == 5 || laneNumber == 6 || laneNumber == 13 || + laneNumber == 14) { + if (new_chart->Meta.KeyMode == 5) { + new_chart->Meta.KeyMode = 7; + } else if (new_chart->Meta.KeyMode == 10) { + new_chart->Meta.KeyMode = 14; + } + } + if (laneNumber >= 8) { + if (new_chart->Meta.KeyMode == 7) { + new_chart->Meta.KeyMode = 14; + } else if (new_chart->Meta.KeyMode == 5) { + new_chart->Meta.KeyMode = 10; + } + new_chart->Meta.IsDP = true; + } + + const auto dataCount = data.length() / 2; + for (size_t j = 0; j < dataCount; ++j) { + if (bCancelled) { + break; + } + std::string val = data.substr(j * 2, 2); + if (val == "00") { + if (timelines.size() == 0 && j == 0) { + auto timeline = new TimeLine(TempKey, metaOnly); + timelines[0] = timeline; // add ghost timeline + } + + continue; + } + + const auto g = Gcd(j, dataCount); + // ReSharper disable PossibleLossOfFraction + const auto position = static_cast(j / g) / (dataCount / g); + + if (timelines.find(position) == timelines.end()) { + timelines[position] = new TimeLine(TempKey, metaOnly); + } + + auto timeline = timelines[position]; + if (channel == LaneAutoplay || channel == P1InvisibleKeyBase) { + if (metaOnly) { + break; + } + } + switch (channel) { + case LaneAutoplay: + if (metaOnly) { + break; + } + if (val == "**") { + timeline->AddBackgroundNote(new Note{MetronomeWav}); + break; + } + if (ParseInt(val) != 0) { + auto bgNote = new Note{ToWaveId(new_chart, val, metaOnly)}; + timeline->AddBackgroundNote(bgNote); + } + + break; + case BpmChange: { + int bpm = ParseHex(val); + timeline->Bpm = static_cast(bpm); + // std::cout << "BPM_CHANGE: " << timeline->Bpm << ", on measure " << + // i << std::endl; Debug.Log($"BPM_CHANGE: {timeline.Bpm}, on measure + // {i}"); + timeline->BpmChange = true; + break; + } + case BgaPlay: + timeline->BgaBase = ParseInt(val); + break; + case PoorPlay: + timeline->BgaPoor = ParseInt(val); + break; + case LayerPlay: + timeline->BgaLayer = ParseInt(val); + break; + case BpmChangeExtend: { + const auto id = ParseInt(val); + // std::cout << "BPM_CHANGE_EXTEND: " << id << ", on measure " << i << + // std::endl; + if (!CheckResourceIdRange(id)) { + // UE_LOG(LogTemp, Warning, TEXT("Invalid BPM id: %s"), *val); + break; + } + if (BpmTable.find(id) != BpmTable.end()) { + timeline->Bpm = BpmTable[id]; + } else { + timeline->Bpm = 0; + // std::cout<<"Undefined BPM: "<BpmChange = true; + break; + } + case Scroll: { + const auto id = ParseInt(val); + if (!CheckResourceIdRange(id)) { + // UE_LOG(LogTemp, Warning, TEXT("Invalid Scroll id: %s"), *val); + break; + } + if (ScrollTable.find(id) != ScrollTable.end()) { + timeline->Scroll = ScrollTable[id]; + } else { + timeline->Scroll = 1; + } + // Debug.Log($"SCROLL: {timeline.Scroll}, on measure {i}"); + break; + } + case Stop: { + const auto id = ParseInt(val); + if (!CheckResourceIdRange(id)) { + // UE_LOG(LogTemp, Warning, TEXT("Invalid StopLength id: %s"), + // *val); + break; + } + if (StopLengthTable.find(id) != StopLengthTable.end()) { + timeline->StopLength = StopLengthTable[id]; + } else { + timeline->StopLength = 0; + } + // Debug.Log($"STOP: {timeline.StopLength}, on measure {i}"); + break; + } + case P1KeyBase: { + const auto ch = ParseInt(val); + if (ch == Lnobj && lastNote[laneNumber] != nullptr) { + if (isScratch) { + ++totalBackSpinNotes; + } else { + ++totalLongNotes; + } + + auto last = lastNote[laneNumber]; + lastNote[laneNumber] = nullptr; + if (metaOnly) { + break; + } + + auto lastTimeline = last->Timeline; + auto ln = new LongNote{last->Wav}; + delete last; + ln->Tail = new LongNote{NoWav}; + ln->Tail->Head = ln; + lastTimeline->SetNote(laneNumber, ln); + timeline->SetNote(laneNumber, ln->Tail); + } else { + auto note = new Note{ToWaveId(new_chart, val, metaOnly)}; + lastNote[laneNumber] = note; + ++totalNotes; + if (isScratch) { + ++totalScratchNotes; + } + if (metaOnly) { + delete note; // this is intended + break; + } + timeline->SetNote(laneNumber, note); + } + } break; + case P1InvisibleKeyBase: { + if (metaOnly) { + break; + } + auto invNote = new Note{ToWaveId(new_chart, val, metaOnly)}; + timeline->SetInvisibleNote(laneNumber, invNote); + break; + } + + case P1LongKeyBase: + if (Lntype == 1) { + if (lnStart[laneNumber] == nullptr) { + ++totalNotes; + if (isScratch) { + ++totalBackSpinNotes; + } else { + ++totalLongNotes; + } + + auto ln = new LongNote{ToWaveId(new_chart, val, metaOnly)}; + lnStart[laneNumber] = ln; + + if (metaOnly) { + delete ln; // this is intended + break; + } + + timeline->SetNote(laneNumber, ln); + } else { + if (!metaOnly) { + auto tail = new LongNote{NoWav}; + tail->Head = lnStart[laneNumber]; + lnStart[laneNumber]->Tail = tail; + timeline->SetNote(laneNumber, tail); + } + lnStart[laneNumber] = nullptr; + } + } + + break; + case P1MineKeyBase: + // landmine + ++totalLandmineNotes; + if (metaOnly) { + break; + } + const auto damage = ParseInt(val, true) / 2.0f; + timeline->SetNote(laneNumber, new LandmineNote{damage}); + break; + } + } + } + + new_chart->Meta.TotalNotes = totalNotes; + new_chart->Meta.TotalLongNotes = totalLongNotes; + new_chart->Meta.TotalScratchNotes = totalScratchNotes; + new_chart->Meta.TotalBackSpinNotes = totalBackSpinNotes; + new_chart->Meta.TotalLandmineNotes = totalLandmineNotes; + + auto lastPosition = 0.0; + + measure->Timing = static_cast(timePassed); + + for (auto &pair : timelines) { + if (bCancelled) { + break; + } + const auto position = pair.first; + const auto timeline = pair.second; + + // Debug.Log($"measure: {i}, position: {position}, lastPosition: + // {lastPosition} bpm: {bpm} scale: {measure.scale} interval: {240 * 1000 + // * 1000 * (position - lastPosition) * measure.scale / bpm}"); + const auto interval = + 240000000.0 * (position - lastPosition) * measure->Scale / currentBpm; + timePassed += interval; + timeline->Timing = static_cast(timePassed); + if (timeline->BpmChange) { + currentBpm = timeline->Bpm; + minBpm = std::min(minBpm, timeline->Bpm); + maxBpm = std::max(maxBpm, timeline->Bpm); + } else { + timeline->Bpm = currentBpm; + } + + // Debug.Log($"measure: {i}, position: {position}, lastPosition: + // {lastPosition}, bpm: {currentBpm} scale: {measure.Scale} interval: + // {interval} stop: {timeline.GetStopDuration()}"); + + timePassed += timeline->GetStopDuration(); + if (!metaOnly) { + measure->TimeLines.push_back(timeline); + } + + lastPosition = position; + } + + if (metaOnly) { + for (auto &timeline : timelines) { + delete timeline.second; + } + timelines.clear(); + } + + if (!metaOnly && measure->TimeLines.size() == 0) { + auto timeline = new TimeLine(TempKey, metaOnly); + timeline->Timing = static_cast(timePassed); + timeline->Bpm = currentBpm; + measure->TimeLines.push_back(timeline); + } + new_chart->Meta.PlayLength = static_cast(timePassed); + timePassed += + 240000000.0 * (1 - lastPosition) * measure->Scale / currentBpm; + if (!metaOnly) { + new_chart->Measures.push_back(measure); + } else { + delete measure; + } + } #if BMS_PARSER_VERBOSE == 1 - std::cout << "Reading data field took " << std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - midStartTime).count() << "\n"; + std::cout << "Reading data field took " + << std::chrono::duration_cast( + std::chrono::high_resolution_clock::now() - midStartTime) + .count() + << "\n"; #endif - new_chart->Meta.TotalLength = static_cast(timePassed); - new_chart->Meta.MinBpm = minBpm; - new_chart->Meta.MaxBpm = maxBpm; - if (new_chart->Meta.Difficulty == 0) - { - std::string FullTitle; - FullTitle.reserve(new_chart->Meta.Title.length() + new_chart->Meta.SubTitle.length()); - std::transform(new_chart->Meta.Title.begin(), new_chart->Meta.Title.end(), std::back_inserter(FullTitle), ::towlower); - std::transform(new_chart->Meta.SubTitle.begin(), new_chart->Meta.SubTitle.end(), std::back_inserter(FullTitle), ::towlower); - if (FullTitle.find("easy") != std::string::npos) - { - new_chart->Meta.Difficulty = 1; - } - else if (FullTitle.find("normal") != std::string::npos) - { - new_chart->Meta.Difficulty = 2; - } - else if (FullTitle.find("hyper") != std::string::npos) - { - new_chart->Meta.Difficulty = 3; - } - else if (FullTitle.find("another") != std::string::npos) - { - new_chart->Meta.Difficulty = 4; - } - else if (FullTitle.find("insane") != std::string::npos) - { - new_chart->Meta.Difficulty = 5; - } - else - { - if (totalNotes < 250) - { - new_chart->Meta.Difficulty = 1; - } - else if (totalNotes < 600) - { - new_chart->Meta.Difficulty = 2; - } - else if (totalNotes < 1000) - { - new_chart->Meta.Difficulty = 3; - } - else if (totalNotes < 2000) - { - new_chart->Meta.Difficulty = 4; - } - else - { - new_chart->Meta.Difficulty = 5; - } - } - } + new_chart->Meta.TotalLength = static_cast(timePassed); + new_chart->Meta.MinBpm = minBpm; + new_chart->Meta.MaxBpm = maxBpm; + if (new_chart->Meta.Difficulty == 0) { + std::string FullTitle; + FullTitle.reserve(new_chart->Meta.Title.length() + + new_chart->Meta.SubTitle.length()); + std::transform(new_chart->Meta.Title.begin(), new_chart->Meta.Title.end(), + std::back_inserter(FullTitle), ::towlower); + std::transform(new_chart->Meta.SubTitle.begin(), + new_chart->Meta.SubTitle.end(), + std::back_inserter(FullTitle), ::towlower); + if (FullTitle.find("easy") != std::string::npos) { + new_chart->Meta.Difficulty = 1; + } else if (FullTitle.find("normal") != std::string::npos) { + new_chart->Meta.Difficulty = 2; + } else if (FullTitle.find("hyper") != std::string::npos) { + new_chart->Meta.Difficulty = 3; + } else if (FullTitle.find("another") != std::string::npos) { + new_chart->Meta.Difficulty = 4; + } else if (FullTitle.find("insane") != std::string::npos) { + new_chart->Meta.Difficulty = 5; + } else { + if (totalNotes < 250) { + new_chart->Meta.Difficulty = 1; + } else if (totalNotes < 600) { + new_chart->Meta.Difficulty = 2; + } else if (totalNotes < 1000) { + new_chart->Meta.Difficulty = 3; + } else if (totalNotes < 2000) { + new_chart->Meta.Difficulty = 4; + } else { + new_chart->Meta.Difficulty = 5; + } + } + } #if BMS_PARSER_VERBOSE == 1 - std::cout << "Total parsing time: " << std::chrono::duration_cast(std::chrono::high_resolution_clock::now() - startTime).count() << "\n"; + std::cout << "Total parsing time: " + << std::chrono::duration_cast( + std::chrono::high_resolution_clock::now() - startTime) + .count() + << "\n"; #endif - } - - void Parser::ParseHeader(Chart *Chart, std::string_view cmd, std::string_view Xx, const std::string &Value) - { - // Debug.Log($"cmd: {cmd}, xx: {xx} isXXNull: {xx == null}, value: {value}"); - // BASE 62 - if(MatchHeader(cmd, "BASE")){ - if (Value.empty()) - { - return; // TODO: handle this - } - auto base = static_cast(std::stol(Value, nullptr, 10)); - std::wcout << "BASE: " << base << std::endl; - if(base != 36 && base != 62) { - return; // TODO: handle this - } - this->UseBase62 = base == 62; - } - else if (MatchHeader(cmd, "PLAYER")) - { - Chart->Meta.Player = static_cast(std::stol(Value, nullptr, 10)); - } - else if (MatchHeader(cmd, "GENRE")) - { - Chart->Meta.Genre = Value; - } - else if (MatchHeader(cmd, "TITLE")) - { - Chart->Meta.Title = Value; - } - else if (MatchHeader(cmd, "SUBTITLE")) - { - Chart->Meta.SubTitle = Value; - } - else if (MatchHeader(cmd, "ARTIST")) - { - Chart->Meta.Artist = Value; - } - else if (MatchHeader(cmd, "SUBARTIST")) - { - Chart->Meta.SubArtist = Value; - } - else if (MatchHeader(cmd, "DIFFICULTY")) - { - Chart->Meta.Difficulty = static_cast(std::stol(Value, nullptr, 10)); - } - else if (MatchHeader(cmd, "BPM")) - { - if (Value.empty()) - { - return; // TODO: handle this - } - if (Xx.empty()) - { - // chart initial bpm - Chart->Meta.Bpm = std::stod(Value, nullptr); - // std::cout << "MainBPM: " << Chart->Meta.Bpm << std::endl; - } - else - { - // Debug.Log($"BPM: {DecodeBase36(xx)} = {double.Parse(value)}"); - int id = ParseInt(Xx); - if (!CheckResourceIdRange(id)) - { - // UE_LOG(LogTemp, Warning, TEXT("Invalid BPM id: %s"), *Xx); - return; - } - BpmTable[id] = std::stod(Value, nullptr); - } - } - else if (MatchHeader(cmd, "STOP")) - { - if (Value.empty() || Xx.empty() || Xx.length() == 0) - { - return; // TODO: handle this - } - int id = ParseInt(Xx); - if (!CheckResourceIdRange(id)) - { - // UE_LOG(LogTemp, Warning, TEXT("Invalid STOP id: %s"), *Xx); - return; - } - StopLengthTable[id] = std::stod(Value, nullptr); - } - else if (MatchHeader(cmd, "MIDIFILE")) - { - } - else if (MatchHeader(cmd, "VIDEOFILE")) - { - } - else if (MatchHeader(cmd, "PLAYLEVEL")) - { - Chart->Meta.PlayLevel = std::stod(Value, nullptr); // TODO: handle error - } - else if (MatchHeader(cmd, "RANK")) - { - Chart->Meta.Rank = static_cast(std::stol(Value, nullptr, 10)); - } - else if (MatchHeader(cmd, "TOTAL")) - { - auto total = std::stod(Value, nullptr); - if (total > 0) - { - Chart->Meta.Total = total; - } - } - else if (MatchHeader(cmd, "VOLWAV")) - { - } - else if (MatchHeader(cmd, "STAGEFILE")) - { - Chart->Meta.StageFile = Value; - } - else if (MatchHeader(cmd, "BANNER")) - { - Chart->Meta.Banner = Value; - } - else if (MatchHeader(cmd, "BACKBMP")) - { - Chart->Meta.BackBmp = Value; - } - else if (MatchHeader(cmd, "PREVIEW")) - { - Chart->Meta.Preview = Value; - } - else if (MatchHeader(cmd, "WAV")) - { - if (Xx.empty() || Value.empty()) - { - // UE_LOG(LogTemp, Warning, TEXT("WAV command requires two arguments")); - return; - } - int id = ParseInt(Xx); - if (!CheckResourceIdRange(id)) - { - // UE_LOG(LogTemp, Warning, TEXT("Invalid WAV id: %s"), *Xx); - return; - } - Chart->WavTable[id] = Value; - } - else if (MatchHeader(cmd, "BMP")) - { - if (Xx.empty() || Value.empty()) - { - // UE_LOG(LogTemp, Warning, TEXT("BMP command requires two arguments")); - return; - } - int id = ParseInt(Xx); - if (!CheckResourceIdRange(id)) - { - // UE_LOG(LogTemp, Warning, TEXT("Invalid BMP id: %s"), *Xx); - return; - } - Chart->BmpTable[id] = Value; - if (Xx == "00") - { - Chart->Meta.BgaPoorDefault = true; - } - } - else if (MatchHeader(cmd, "LNOBJ")) - { - Lnobj = ParseInt(Value); - } - else if (MatchHeader(cmd, "LNTYPE")) - { - Lntype = static_cast(std::stol(Value, nullptr, 10)); - } - else if (MatchHeader(cmd, "LNMODE")) - { - Chart->Meta.LnMode = static_cast(std::stol(Value, nullptr, 10)); - } - else if (MatchHeader(cmd, "SCROLL")) - { - auto xx = ParseInt(Xx); - auto value = std::stod(Value, nullptr); - ScrollTable[xx] = value; - // std::wcout << "SCROLL: " << xx << " = " << value << std::endl; - } - else - { - std::cout << "Unknown command: " << cmd << std::endl; - } - } - - inline int Parser::Gcd(int A, int B) - { - while (true) - { - if (B == 0) - { - return A; - } - auto a1 = A; - A = B; - B = a1 % B; - } - } +} - inline bool Parser::CheckResourceIdRange(int Id) - { - return Id >= 0 && Id < (UseBase62 ? 62*62 : 36*36); - } +void Parser::ParseHeader(Chart *Chart, std::string_view cmd, + std::string_view Xx, const std::string &Value) { + // Debug.Log($"cmd: {cmd}, xx: {xx} isXXNull: {xx == null}, value: {value}"); + // BASE 62 + if (MatchHeader(cmd, "BASE")) { + if (Value.empty()) { + return; // TODO: handle this + } + auto base = static_cast(std::stol(Value, nullptr, 10)); + std::wcout << "BASE: " << base << std::endl; + if (base != 36 && base != 62) { + return; // TODO: handle this + } + this->UseBase62 = base == 62; + } else if (MatchHeader(cmd, "PLAYER")) { + Chart->Meta.Player = static_cast(std::stol(Value, nullptr, 10)); + } else if (MatchHeader(cmd, "GENRE")) { + Chart->Meta.Genre = Value; + } else if (MatchHeader(cmd, "TITLE")) { + Chart->Meta.Title = Value; + } else if (MatchHeader(cmd, "SUBTITLE")) { + Chart->Meta.SubTitle = Value; + } else if (MatchHeader(cmd, "ARTIST")) { + Chart->Meta.Artist = Value; + } else if (MatchHeader(cmd, "SUBARTIST")) { + Chart->Meta.SubArtist = Value; + } else if (MatchHeader(cmd, "DIFFICULTY")) { + Chart->Meta.Difficulty = static_cast(std::stol(Value, nullptr, 10)); + } else if (MatchHeader(cmd, "BPM")) { + if (Value.empty()) { + return; // TODO: handle this + } + if (Xx.empty()) { + // chart initial bpm + Chart->Meta.Bpm = std::stod(Value, nullptr); + // std::cout << "MainBPM: " << Chart->Meta.Bpm << std::endl; + } else { + // Debug.Log($"BPM: {DecodeBase36(xx)} = {double.Parse(value)}"); + int id = ParseInt(Xx); + if (!CheckResourceIdRange(id)) { + // UE_LOG(LogTemp, Warning, TEXT("Invalid BPM id: %s"), *Xx); + return; + } + BpmTable[id] = std::stod(Value, nullptr); + } + } else if (MatchHeader(cmd, "STOP")) { + if (Value.empty() || Xx.empty() || Xx.length() == 0) { + return; // TODO: handle this + } + int id = ParseInt(Xx); + if (!CheckResourceIdRange(id)) { + // UE_LOG(LogTemp, Warning, TEXT("Invalid STOP id: %s"), *Xx); + return; + } + StopLengthTable[id] = std::stod(Value, nullptr); + } else if (MatchHeader(cmd, "MIDIFILE")) { + } else if (MatchHeader(cmd, "VIDEOFILE")) { + } else if (MatchHeader(cmd, "PLAYLEVEL")) { + Chart->Meta.PlayLevel = std::stod(Value, nullptr); // TODO: handle error + } else if (MatchHeader(cmd, "RANK")) { + Chart->Meta.Rank = static_cast(std::stol(Value, nullptr, 10)); + } else if (MatchHeader(cmd, "TOTAL")) { + auto total = std::stod(Value, nullptr); + if (total > 0) { + Chart->Meta.Total = total; + } + } else if (MatchHeader(cmd, "VOLWAV")) { + } else if (MatchHeader(cmd, "STAGEFILE")) { + Chart->Meta.StageFile = Value; + } else if (MatchHeader(cmd, "BANNER")) { + Chart->Meta.Banner = Value; + } else if (MatchHeader(cmd, "BACKBMP")) { + Chart->Meta.BackBmp = Value; + } else if (MatchHeader(cmd, "PREVIEW")) { + Chart->Meta.Preview = Value; + } else if (MatchHeader(cmd, "WAV")) { + if (Xx.empty() || Value.empty()) { + // UE_LOG(LogTemp, Warning, TEXT("WAV command requires two arguments")); + return; + } + int id = ParseInt(Xx); + if (!CheckResourceIdRange(id)) { + // UE_LOG(LogTemp, Warning, TEXT("Invalid WAV id: %s"), *Xx); + return; + } + Chart->WavTable[id] = Value; + } else if (MatchHeader(cmd, "BMP")) { + if (Xx.empty() || Value.empty()) { + // UE_LOG(LogTemp, Warning, TEXT("BMP command requires two arguments")); + return; + } + int id = ParseInt(Xx); + if (!CheckResourceIdRange(id)) { + // UE_LOG(LogTemp, Warning, TEXT("Invalid BMP id: %s"), *Xx); + return; + } + Chart->BmpTable[id] = Value; + if (Xx == "00") { + Chart->Meta.BgaPoorDefault = true; + } + } else if (MatchHeader(cmd, "LNOBJ")) { + Lnobj = ParseInt(Value); + } else if (MatchHeader(cmd, "LNTYPE")) { + Lntype = static_cast(std::stol(Value, nullptr, 10)); + } else if (MatchHeader(cmd, "LNMODE")) { + Chart->Meta.LnMode = static_cast(std::stol(Value, nullptr, 10)); + } else if (MatchHeader(cmd, "SCROLL")) { + auto xx = ParseInt(Xx); + auto value = std::stod(Value, nullptr); + ScrollTable[xx] = value; + // std::wcout << "SCROLL: " << xx << " = " << value << std::endl; + } else { + std::cout << "Unknown command: " << cmd << std::endl; + } +} - inline int Parser::ToWaveId(Chart *Chart, std::string_view Wav, bool metaOnly) - { - if (metaOnly) - { - return NoWav; - } - if (Wav.empty()) - { - return NoWav; - } - auto decoded = ParseInt(Wav); - // check range - if (!CheckResourceIdRange(decoded)) - { - // UE_LOG(LogTemp, Warning, TEXT("Invalid wav id: %s"), *Wav); - return NoWav; - } +inline int Parser::Gcd(int A, int B) { + while (true) { + if (B == 0) { + return A; + } + auto a1 = A; + A = B; + B = a1 % B; + } +} - return Chart->WavTable.find(decoded) != Chart->WavTable.end() ? decoded : NoWav; - } - inline int Parser::ParseHex(std::string_view Str) - { - auto result = 0; - for (size_t i = 0; i < Str.length(); ++i) - { - auto c = Str[i]; - if (c >= '0' && c <= '9') - { - result = result * 16 + c - '0'; - } - else if (c >= 'A' && c <= 'F') - { - result = result * 16 + c - 'A' + 10; - } - else if (c >= 'a' && c <= 'f') - { - result = result * 16 + c - 'a' + 10; - } - } - return result; - } - inline int Parser::ParseInt(std::string_view Str, bool forceBase36) - { - if(forceBase36 || !UseBase62) { - auto result = static_cast(std::stol(Str.data(), nullptr, 36)); - // std::wcout << "ParseInt36: " << Str << " = " << result << std::endl; - return result; - } - - auto result = 0; - for (size_t i = 0; i < Str.length(); ++i) - { - auto c = Str[i]; - if (c >= '0' && c <= '9') - { - result = result * 62 + c - '0'; - } - else if (c >= 'A' && c <= 'Z') - { - result = result * 62 + c - 'A' + 10; - } - else if (c >= 'a' && c <= 'z') - { - result = result * 62 + c - 'a' + 36; - } else return -1; - } - // std::wcout << "ParseInt62: " << Str << " = " << result << std::endl; - return result; - } +inline bool Parser::CheckResourceIdRange(int Id) { + return Id >= 0 && Id < (UseBase62 ? 62 * 62 : 36 * 36); +} - Parser::~Parser() - { - } +inline int Parser::ToWaveId(Chart *Chart, std::string_view Wav, bool metaOnly) { + if (metaOnly) { + return NoWav; + } + if (Wav.empty()) { + return NoWav; + } + auto decoded = ParseInt(Wav); + // check range + if (!CheckResourceIdRange(decoded)) { + // UE_LOG(LogTemp, Warning, TEXT("Invalid wav id: %s"), *Wav); + return NoWav; + } + + return Chart->WavTable.find(decoded) != Chart->WavTable.end() ? decoded + : NoWav; +} +inline int Parser::ParseHex(std::string_view Str) { + auto result = 0; + for (size_t i = 0; i < Str.length(); ++i) { + auto c = Str[i]; + if (c >= '0' && c <= '9') { + result = result * 16 + c - '0'; + } else if (c >= 'A' && c <= 'F') { + result = result * 16 + c - 'A' + 10; + } else if (c >= 'a' && c <= 'f') { + result = result * 16 + c - 'a' + 10; + } + } + return result; } +inline int Parser::ParseInt(std::string_view Str, bool forceBase36) { + if (forceBase36 || !UseBase62) { + auto result = static_cast(std::stol(Str.data(), nullptr, 36)); + // std::wcout << "ParseInt36: " << Str << " = " << result << std::endl; + return result; + } + + auto result = 0; + for (size_t i = 0; i < Str.length(); ++i) { + auto c = Str[i]; + if (c >= '0' && c <= '9') { + result = result * 62 + c - '0'; + } else if (c >= 'A' && c <= 'Z') { + result = result * 62 + c - 'A' + 10; + } else if (c >= 'a' && c <= 'z') { + result = result * 62 + c - 'a' + 36; + } else + return -1; + } + // std::wcout << "ParseInt62: " << Str << " = " << result << std::endl; + return result; +} + +Parser::~Parser() {} +} // namespace bms_parser diff --git a/src/Parser.h b/src/Parser.h index 94582a4..10afafe 100644 --- a/src/Parser.h +++ b/src/Parser.h @@ -1,15 +1,15 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ @@ -17,42 +17,45 @@ #pragma once #include "Chart.h" -#include -#include #include #include +#include +#include + /** * */ -namespace bms_parser -{ - class Parser - { - public: - Parser(); - void SetRandomSeed(int RandomSeed); - void Parse(std::filesystem::path path, Chart **Chart, bool addReadyMeasure, bool metaOnly, std::atomic_bool &bCancelled); - ~Parser(); - void Parse(const std::vector& bytes, Chart **chart, bool addReadyMeasure, bool metaOnly, std::atomic_bool &bCancelled); - static int NoWav; - static int MetronomeWav; +namespace bms_parser { +class Parser { +public: + Parser(); + void SetRandomSeed(int RandomSeed); + void Parse(std::filesystem::path path, Chart **Chart, bool addReadyMeasure, + bool metaOnly, std::atomic_bool &bCancelled); + ~Parser(); + void Parse(const std::vector &bytes, Chart **chart, + bool addReadyMeasure, bool metaOnly, std::atomic_bool &bCancelled); + static int NoWav; + static int MetronomeWav; - private: - // bpmTable - std::unordered_map BpmTable; - std::unordered_map StopLengthTable; - std::unordered_map ScrollTable; +private: + // bpmTable + std::unordered_map BpmTable; + std::unordered_map StopLengthTable; + std::unordered_map ScrollTable; - bool UseBase62 = false; - int Lnobj = -1; - int Lntype = 1; - int Seed; - inline int ParseHex(std::string_view Str); - inline int ParseInt(std::string_view Str, bool forceBase32 = false); - void ParseHeader(Chart *Chart, std::string_view cmd, std::string_view Xx, const std::string &Value); - inline bool MatchHeader(const std::string_view &str, const std::string_view &headerUpper); - inline int Gcd(int A, int B); - inline bool CheckResourceIdRange(int Id); - inline int ToWaveId(Chart *Chart, std::string_view Wav, bool metaOnly); - }; -} + bool UseBase62 = false; + int Lnobj = -1; + int Lntype = 1; + int Seed; + inline int ParseHex(std::string_view Str); + inline int ParseInt(std::string_view Str, bool forceBase32 = false); + void ParseHeader(Chart *Chart, std::string_view cmd, std::string_view Xx, + const std::string &Value); + inline bool MatchHeader(const std::string_view &str, + const std::string_view &headerUpper); + inline int Gcd(int A, int B); + inline bool CheckResourceIdRange(int Id); + inline int ToWaveId(Chart *Chart, std::string_view Wav, bool metaOnly); +}; +} // namespace bms_parser diff --git a/src/SHA256.cpp b/src/SHA256.cpp index cdd717c..d4fe907 100644 --- a/src/SHA256.cpp +++ b/src/SHA256.cpp @@ -1,7 +1,7 @@ /* * Updated to C++, zedwood.com 2012 * Based on Olivier Gay's version - * See Modified BSD License below: + * See Modified BSD License below: * * FIPS 180-2 SHA-224/256/384/512 implementation * Issue date: 04/30/2005 @@ -40,143 +40,124 @@ #include #include -namespace bms_parser -{ - const unsigned int SHA256::sha256_k[64] = // UL = uint32 - { - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; +namespace bms_parser { +const unsigned int SHA256::sha256_k[64] = // UL = uint32 + {0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, + 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, + 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, + 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, + 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, + 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; - void SHA256::transform(const unsigned char *message, unsigned int block_nb) - { - uint32 w[64]; - uint32 wv[8]; - uint32 t1, t2; - const unsigned char *sub_block; - int i; - int j; - for (i = 0; i < static_cast(block_nb); i++) - { - sub_block = message + (i << 6); - for (j = 0; j < 16; j++) - { - SHA2_PACK32(&sub_block[j << 2], &w[j]); - } - for (j = 16; j < 64; j++) - { - w[j] = SHA256_F4(w[j - 2]) + w[j - 7] + SHA256_F3(w[j - 15]) + w[j - 16]; - } - for (j = 0; j < 8; j++) - { - wv[j] = m_h[j]; - } - for (j = 0; j < 64; j++) - { - t1 = wv[7] + SHA256_F2(wv[4]) + SHA2_CH(wv[4], wv[5], wv[6]) + sha256_k[j] + w[j]; - t2 = SHA256_F1(wv[0]) + SHA2_MAJ(wv[0], wv[1], wv[2]); - wv[7] = wv[6]; - wv[6] = wv[5]; - wv[5] = wv[4]; - wv[4] = wv[3] + t1; - wv[3] = wv[2]; - wv[2] = wv[1]; - wv[1] = wv[0]; - wv[0] = t1 + t2; - } - for (j = 0; j < 8; j++) - { - m_h[j] += wv[j]; - } - } - } +void SHA256::transform(const unsigned char *message, unsigned int block_nb) { + uint32 w[64]; + uint32 wv[8]; + uint32 t1, t2; + const unsigned char *sub_block; + int i; + int j; + for (i = 0; i < static_cast(block_nb); i++) { + sub_block = message + (i << 6); + for (j = 0; j < 16; j++) { + SHA2_PACK32(&sub_block[j << 2], &w[j]); + } + for (j = 16; j < 64; j++) { + w[j] = SHA256_F4(w[j - 2]) + w[j - 7] + SHA256_F3(w[j - 15]) + w[j - 16]; + } + for (j = 0; j < 8; j++) { + wv[j] = m_h[j]; + } + for (j = 0; j < 64; j++) { + t1 = wv[7] + SHA256_F2(wv[4]) + SHA2_CH(wv[4], wv[5], wv[6]) + + sha256_k[j] + w[j]; + t2 = SHA256_F1(wv[0]) + SHA2_MAJ(wv[0], wv[1], wv[2]); + wv[7] = wv[6]; + wv[6] = wv[5]; + wv[5] = wv[4]; + wv[4] = wv[3] + t1; + wv[3] = wv[2]; + wv[2] = wv[1]; + wv[1] = wv[0]; + wv[0] = t1 + t2; + } + for (j = 0; j < 8; j++) { + m_h[j] += wv[j]; + } + } +} - void SHA256::init() - { - m_h[0] = 0x6a09e667; - m_h[1] = 0xbb67ae85; - m_h[2] = 0x3c6ef372; - m_h[3] = 0xa54ff53a; - m_h[4] = 0x510e527f; - m_h[5] = 0x9b05688c; - m_h[6] = 0x1f83d9ab; - m_h[7] = 0x5be0cd19; - m_len = 0; - m_tot_len = 0; - } +void SHA256::init() { + m_h[0] = 0x6a09e667; + m_h[1] = 0xbb67ae85; + m_h[2] = 0x3c6ef372; + m_h[3] = 0xa54ff53a; + m_h[4] = 0x510e527f; + m_h[5] = 0x9b05688c; + m_h[6] = 0x1f83d9ab; + m_h[7] = 0x5be0cd19; + m_len = 0; + m_tot_len = 0; +} - void SHA256::update(const unsigned char *message, unsigned int len) - { - unsigned int block_nb; - unsigned int new_len, rem_len, tmp_len; - const unsigned char *shifted_message; - tmp_len = SHA224_256_BLOCK_SIZE - m_len; - rem_len = len < tmp_len ? len : tmp_len; - memcpy(&m_block[m_len], message, rem_len); - if (m_len + len < SHA224_256_BLOCK_SIZE) - { - m_len += len; - return; - } - new_len = len - rem_len; - block_nb = new_len / SHA224_256_BLOCK_SIZE; - shifted_message = message + rem_len; - transform(m_block, 1); - transform(shifted_message, block_nb); - rem_len = new_len % SHA224_256_BLOCK_SIZE; - memcpy(m_block, &shifted_message[block_nb << 6], rem_len); - m_len = rem_len; - m_tot_len += (block_nb + 1) << 6; - } +void SHA256::update(const unsigned char *message, unsigned int len) { + unsigned int block_nb; + unsigned int new_len, rem_len, tmp_len; + const unsigned char *shifted_message; + tmp_len = SHA224_256_BLOCK_SIZE - m_len; + rem_len = len < tmp_len ? len : tmp_len; + memcpy(&m_block[m_len], message, rem_len); + if (m_len + len < SHA224_256_BLOCK_SIZE) { + m_len += len; + return; + } + new_len = len - rem_len; + block_nb = new_len / SHA224_256_BLOCK_SIZE; + shifted_message = message + rem_len; + transform(m_block, 1); + transform(shifted_message, block_nb); + rem_len = new_len % SHA224_256_BLOCK_SIZE; + memcpy(m_block, &shifted_message[block_nb << 6], rem_len); + m_len = rem_len; + m_tot_len += (block_nb + 1) << 6; +} - void SHA256::final(unsigned char *digest) - { - unsigned int block_nb; - unsigned int pm_len; - unsigned int len_b; - int i; - block_nb = (1 + ((SHA224_256_BLOCK_SIZE - 9) < (m_len % SHA224_256_BLOCK_SIZE))); - len_b = (m_tot_len + m_len) << 3; - pm_len = block_nb << 6; - memset(m_block + m_len, 0, pm_len - m_len); - m_block[m_len] = 0x80; - SHA2_UNPACK32(len_b, m_block + pm_len - 4); - transform(m_block, block_nb); - for (i = 0; i < 8; i++) - { - SHA2_UNPACK32(m_h[i], &digest[i << 2]); - } - } +void SHA256::final(unsigned char *digest) { + unsigned int block_nb; + unsigned int pm_len; + unsigned int len_b; + int i; + block_nb = + (1 + ((SHA224_256_BLOCK_SIZE - 9) < (m_len % SHA224_256_BLOCK_SIZE))); + len_b = (m_tot_len + m_len) << 3; + pm_len = block_nb << 6; + memset(m_block + m_len, 0, pm_len - m_len); + m_block[m_len] = 0x80; + SHA2_UNPACK32(len_b, m_block + pm_len - 4); + transform(m_block, block_nb); + for (i = 0; i < 8; i++) { + SHA2_UNPACK32(m_h[i], &digest[i << 2]); + } +} - std::string sha256(const std::vector &bytes) - { - unsigned char digest[SHA256::DIGEST_SIZE]; - memset(digest, 0, SHA256::DIGEST_SIZE); +std::string sha256(const std::vector &bytes) { + unsigned char digest[SHA256::DIGEST_SIZE]; + memset(digest, 0, SHA256::DIGEST_SIZE); - SHA256 ctx = SHA256(); - ctx.init(); - ctx.update(bytes.data(), bytes.size()); - ctx.final(digest); + SHA256 ctx = SHA256(); + ctx.init(); + ctx.update(bytes.data(), bytes.size()); + ctx.final(digest); - char buf[2 * SHA256::DIGEST_SIZE + 1]; - buf[2 * SHA256::DIGEST_SIZE] = 0; - for (unsigned int i = 0; i < SHA256::DIGEST_SIZE; i++) - { - snprintf(buf + i * 2, 3, "%02x", digest[i]); - } - return buf; - } + char buf[2 * SHA256::DIGEST_SIZE + 1]; + buf[2 * SHA256::DIGEST_SIZE] = 0; + for (unsigned int i = 0; i < SHA256::DIGEST_SIZE; i++) { + snprintf(buf + i * 2, 3, "%02x", digest[i]); + } + return buf; } +} // namespace bms_parser diff --git a/src/SHA256.h b/src/SHA256.h index 85cf1ee..0674444 100644 --- a/src/SHA256.h +++ b/src/SHA256.h @@ -1,71 +1,70 @@ #pragma once -#include #include +#include + // http://www.zedwood.com/article/cpp-sha256-function -namespace bms_parser -{ - class SHA256 - { - /* - * Updated to C++, zedwood.com 2012 - * Based on Olivier Gay's version - * See Modified BSD License below: - * - * FIPS 180-2 SHA-224/256/384/512 implementation - * Issue date: 04/30/2005 - * http://www.ouah.org/ogay/sha2/ - * - * Copyright (C) 2005, 2007 Olivier Gay - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the project nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - protected: - using uint8 = unsigned char; - using uint32 = unsigned int; - using uint64 = unsigned long long; +namespace bms_parser { +class SHA256 { + /* + * Updated to C++, zedwood.com 2012 + * Based on Olivier Gay's version + * See Modified BSD License below: + * + * FIPS 180-2 SHA-224/256/384/512 implementation + * Issue date: 04/30/2005 + * http://www.ouah.org/ogay/sha2/ + * + * Copyright (C) 2005, 2007 Olivier Gay + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +protected: + using uint8 = unsigned char; + using uint32 = unsigned int; + using uint64 = unsigned long long; - const static uint32 sha256_k[]; - static constexpr unsigned int SHA224_256_BLOCK_SIZE = (512 / 8); + const static uint32 sha256_k[]; + static constexpr unsigned int SHA224_256_BLOCK_SIZE = (512 / 8); - public: - void init(); - void update(const unsigned char *message, unsigned int len); - void final(unsigned char *digest); - static constexpr unsigned int DIGEST_SIZE = (256 / 8); +public: + void init(); + void update(const unsigned char *message, unsigned int len); + void final(unsigned char *digest); + static constexpr unsigned int DIGEST_SIZE = (256 / 8); - protected: - void transform(const unsigned char *message, unsigned int block_nb); - unsigned int m_tot_len; - unsigned int m_len; - unsigned char m_block[2 * SHA224_256_BLOCK_SIZE]; - uint32 m_h[8]; - }; +protected: + void transform(const unsigned char *message, unsigned int block_nb); + unsigned int m_tot_len; + unsigned int m_len; + unsigned char m_block[2 * SHA224_256_BLOCK_SIZE]; + uint32 m_h[8]; +}; - std::string sha256(const std::vector &bytes); +std::string sha256(const std::vector &bytes); #define SHA2_SHFR(x, n) (x >> n) #define SHA2_ROTR(x, n) ((x >> n) | (x << ((sizeof(x) << 3) - n))) @@ -76,15 +75,16 @@ namespace bms_parser #define SHA256_F2(x) (SHA2_ROTR(x, 6) ^ SHA2_ROTR(x, 11) ^ SHA2_ROTR(x, 25)) #define SHA256_F3(x) (SHA2_ROTR(x, 7) ^ SHA2_ROTR(x, 18) ^ SHA2_SHFR(x, 3)) #define SHA256_F4(x) (SHA2_ROTR(x, 17) ^ SHA2_ROTR(x, 19) ^ SHA2_SHFR(x, 10)) -#define SHA2_UNPACK32(x, str) \ - { \ - *((str) + 3) = (uint8)((x)); \ - *((str) + 2) = (uint8)((x) >> 8); \ - *((str) + 1) = (uint8)((x) >> 16); \ - *((str) + 0) = (uint8)((x) >> 24); \ - } -#define SHA2_PACK32(str, x) \ - { \ - *(x) = ((uint32) * ((str) + 3)) | ((uint32) * ((str) + 2) << 8) | ((uint32) * ((str) + 1) << 16) | ((uint32) * ((str) + 0) << 24); \ - } -} +#define SHA2_UNPACK32(x, str) \ + { \ + *((str) + 3) = (uint8)((x)); \ + *((str) + 2) = (uint8)((x) >> 8); \ + *((str) + 1) = (uint8)((x) >> 16); \ + *((str) + 0) = (uint8)((x) >> 24); \ + } +#define SHA2_PACK32(str, x) \ + { \ + *(x) = ((uint32) * ((str) + 3)) | ((uint32) * ((str) + 2) << 8) | \ + ((uint32) * ((str) + 1) << 16) | ((uint32) * ((str) + 0) << 24); \ + } +} // namespace bms_parser diff --git a/src/ShiftJISConverter.cpp b/src/ShiftJISConverter.cpp index 1b9bd38..1c8e763 100644 --- a/src/ShiftJISConverter.cpp +++ b/src/ShiftJISConverter.cpp @@ -1,74 +1,60 @@ // https://stackoverflow.com/questions/33165171/c-shiftjis-to-utf8-conversion +#include "ShiftJISConverter.h" #include -#include #include #include -#include "ShiftJISConverter.h" -namespace bms_parser -{ - void ShiftJISConverter::BytesToUTF8(const unsigned char *input, size_t size, std::string &result) - { - // ShiftJis won't give 4byte UTF8, so max. 3 byte per input char are needed - result.resize(size * 3, ' '); - size_t indexInput = 0, indexOutput = 0; +#include + +namespace bms_parser { +void ShiftJISConverter::BytesToUTF8(const unsigned char *input, size_t size, + std::string &result) { + // ShiftJis won't give 4byte UTF8, so max. 3 byte per input char are needed + result.resize(size * 3, ' '); + size_t indexInput = 0, indexOutput = 0; - while (indexInput < size) - { - char arraySection = (input[indexInput]) >> 4; + while (indexInput < size) { + char arraySection = (input[indexInput]) >> 4; - size_t arrayOffset; - if (arraySection == 0x8) - { - arrayOffset = 0x100; // these are two-byte shiftjis - } - else if (arraySection == 0x9) - { - arrayOffset = 0x1100; - } - else if (arraySection == 0xE) - { - arrayOffset = 0x2100; - } - else - { - arrayOffset = 0; // this is one byte shiftjis - } + size_t arrayOffset; + if (arraySection == 0x8) { + arrayOffset = 0x100; // these are two-byte shiftjis + } else if (arraySection == 0x9) { + arrayOffset = 0x1100; + } else if (arraySection == 0xE) { + arrayOffset = 0x2100; + } else { + arrayOffset = 0; // this is one byte shiftjis + } - // determining real array offset - if (arrayOffset) - { - arrayOffset += ((input[indexInput]) & 0xf) << 8; - indexInput++; - if (indexInput >= size) - { - break; - } - } - arrayOffset += input[indexInput++]; - arrayOffset <<= 1; + // determining real array offset + if (arrayOffset) { + arrayOffset += ((input[indexInput]) & 0xf) << 8; + indexInput++; + if (indexInput >= size) { + break; + } + } + arrayOffset += input[indexInput++]; + arrayOffset <<= 1; - // unicode number is... - uint16_t unicodeValue = (shiftJIS_convTable[arrayOffset] << 8) | shiftJIS_convTable[arrayOffset + 1]; + // unicode number is... + uint16_t unicodeValue = (shiftJIS_convTable[arrayOffset] << 8) | + shiftJIS_convTable[arrayOffset + 1]; - // converting to UTF8 - if (unicodeValue < 0x80) - { - result[indexOutput++] = unicodeValue; - } - else if (unicodeValue < 0x800) - { - result[indexOutput++] = 0xC0 | (unicodeValue >> 6); - result[indexOutput++] = 0x80 | (unicodeValue & 0x3f); - } - else - { - result[indexOutput++] = 0xE0 | (unicodeValue >> 12); - result[indexOutput++] = 0x80 | ((unicodeValue & 0xfff) >> 6); - result[indexOutput++] = 0x80 | (unicodeValue & 0x3f); - } - } + // converting to UTF8 + if (unicodeValue < 0x80) { + result[indexOutput++] = unicodeValue; + } else if (unicodeValue < 0x800) { + result[indexOutput++] = 0xC0 | (unicodeValue >> 6); + result[indexOutput++] = 0x80 | (unicodeValue & 0x3f); + } else { + result[indexOutput++] = 0xE0 | (unicodeValue >> 12); + result[indexOutput++] = 0x80 | ((unicodeValue & 0xfff) >> 6); + result[indexOutput++] = 0x80 | (unicodeValue & 0x3f); + } + } - result.resize(indexOutput); - } + result.resize(indexOutput); } +} // namespace bms_parser diff --git a/src/ShiftJISConverter.h b/src/ShiftJISConverter.h index 5798008..05068f8 100644 --- a/src/ShiftJISConverter.h +++ b/src/ShiftJISConverter.h @@ -3,3149 +3,2102 @@ #pragma once #include #include -namespace bms_parser -{ - namespace ShiftJISConverter - { - void BytesToUTF8(const unsigned char *input, size_t size, std::string &result); - } - - static const unsigned char shiftJIS_convTable[25088] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, - 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, - 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, - 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, - 0x00, 0x10, 0x00, 0x11, 0x00, 0x12, 0x00, 0x13, - 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, - 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, - 0x00, 0x1c, 0x00, 0x1d, 0x00, 0x1e, 0x00, 0x1f, - 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, - 0x00, 0x28, 0x00, 0x29, 0x00, 0x2a, 0x00, 0x2b, - 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, - 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, - 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, - 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, - 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, - 0x00, 0x40, 0x00, 0x41, 0x00, 0x42, 0x00, 0x43, - 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, - 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, - 0x00, 0x4c, 0x00, 0x4d, 0x00, 0x4e, 0x00, 0x4f, - 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, - 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, - 0x00, 0x58, 0x00, 0x59, 0x00, 0x5a, 0x00, 0x5b, - 0x00, 0xa5, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, - 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, - 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, - 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6b, - 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6f, - 0x00, 0x70, 0x00, 0x71, 0x00, 0x72, 0x00, 0x73, - 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, - 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, - 0x00, 0x7c, 0x00, 0x7d, 0x20, 0x3e, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0xff, 0x61, 0xff, 0x62, 0xff, 0x63, - 0xff, 0x64, 0xff, 0x65, 0xff, 0x66, 0xff, 0x67, - 0xff, 0x68, 0xff, 0x69, 0xff, 0x6a, 0xff, 0x6b, - 0xff, 0x6c, 0xff, 0x6d, 0xff, 0x6e, 0xff, 0x6f, - 0xff, 0x70, 0xff, 0x71, 0xff, 0x72, 0xff, 0x73, - 0xff, 0x74, 0xff, 0x75, 0xff, 0x76, 0xff, 0x77, - 0xff, 0x78, 0xff, 0x79, 0xff, 0x7a, 0xff, 0x7b, - 0xff, 0x7c, 0xff, 0x7d, 0xff, 0x7e, 0xff, 0x7f, - 0xff, 0x80, 0xff, 0x81, 0xff, 0x82, 0xff, 0x83, - 0xff, 0x84, 0xff, 0x85, 0xff, 0x86, 0xff, 0x87, - 0xff, 0x88, 0xff, 0x89, 0xff, 0x8a, 0xff, 0x8b, - 0xff, 0x8c, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0x8f, - 0xff, 0x90, 0xff, 0x91, 0xff, 0x92, 0xff, 0x93, - 0xff, 0x94, 0xff, 0x95, 0xff, 0x96, 0xff, 0x97, - 0xff, 0x98, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x9b, - 0xff, 0x9c, 0xff, 0x9d, 0xff, 0x9e, 0xff, 0x9f, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x30, 0x00, 0x30, 0x01, 0x30, 0x02, 0xff, 0x0c, - 0xff, 0x0e, 0x30, 0xfb, 0xff, 0x1a, 0xff, 0x1b, - 0xff, 0x1f, 0xff, 0x01, 0x30, 0x9b, 0x30, 0x9c, - 0x00, 0xb4, 0xff, 0x40, 0x00, 0xa8, 0xff, 0x3e, - 0xff, 0xe3, 0xff, 0x3f, 0x30, 0xfd, 0x30, 0xfe, - 0x30, 0x9d, 0x30, 0x9e, 0x30, 0x03, 0x4e, 0xdd, - 0x30, 0x05, 0x30, 0x06, 0x30, 0x07, 0x30, 0xfc, - 0x20, 0x15, 0x20, 0x10, 0xff, 0x0f, 0x00, 0x5c, - 0x30, 0x1c, 0x20, 0x16, 0xff, 0x5c, 0x20, 0x26, - 0x20, 0x25, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, - 0x20, 0x1d, 0xff, 0x08, 0xff, 0x09, 0x30, 0x14, - 0x30, 0x15, 0xff, 0x3b, 0xff, 0x3d, 0xff, 0x5b, - 0xff, 0x5d, 0x30, 0x08, 0x30, 0x09, 0x30, 0x0a, - 0x30, 0x0b, 0x30, 0x0c, 0x30, 0x0d, 0x30, 0x0e, - 0x30, 0x0f, 0x30, 0x10, 0x30, 0x11, 0xff, 0x0b, - 0x22, 0x12, 0x00, 0xb1, 0x00, 0xd7, 0x00, 0x20, - 0x00, 0xf7, 0xff, 0x1d, 0x22, 0x60, 0xff, 0x1c, - 0xff, 0x1e, 0x22, 0x66, 0x22, 0x67, 0x22, 0x1e, - 0x22, 0x34, 0x26, 0x42, 0x26, 0x40, 0x00, 0xb0, - 0x20, 0x32, 0x20, 0x33, 0x21, 0x03, 0xff, 0xe5, - 0xff, 0x04, 0x00, 0xa2, 0x00, 0xa3, 0xff, 0x05, - 0xff, 0x03, 0xff, 0x06, 0xff, 0x0a, 0xff, 0x20, - 0x00, 0xa7, 0x26, 0x06, 0x26, 0x05, 0x25, 0xcb, - 0x25, 0xcf, 0x25, 0xce, 0x25, 0xc7, 0x25, 0xc6, - 0x25, 0xa1, 0x25, 0xa0, 0x25, 0xb3, 0x25, 0xb2, - 0x25, 0xbd, 0x25, 0xbc, 0x20, 0x3b, 0x30, 0x12, - 0x21, 0x92, 0x21, 0x90, 0x21, 0x91, 0x21, 0x93, - 0x30, 0x13, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x22, 0x08, 0x22, 0x0b, 0x22, 0x86, 0x22, 0x87, - 0x22, 0x82, 0x22, 0x83, 0x22, 0x2a, 0x22, 0x29, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x22, 0x27, 0x22, 0x28, 0x00, 0xac, 0x21, 0xd2, - 0x21, 0xd4, 0x22, 0x00, 0x22, 0x03, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x22, 0x20, 0x22, 0xa5, - 0x23, 0x12, 0x22, 0x02, 0x22, 0x07, 0x22, 0x61, - 0x22, 0x52, 0x22, 0x6a, 0x22, 0x6b, 0x22, 0x1a, - 0x22, 0x3d, 0x22, 0x1d, 0x22, 0x35, 0x22, 0x2b, - 0x22, 0x2c, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x21, 0x2b, 0x20, 0x30, 0x26, 0x6f, 0x26, 0x6d, - 0x26, 0x6a, 0x20, 0x20, 0x20, 0x21, 0x00, 0xb6, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x25, 0xef, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0xff, 0x10, - 0xff, 0x11, 0xff, 0x12, 0xff, 0x13, 0xff, 0x14, - 0xff, 0x15, 0xff, 0x16, 0xff, 0x17, 0xff, 0x18, - 0xff, 0x19, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0xff, 0x21, 0xff, 0x22, 0xff, 0x23, 0xff, 0x24, - 0xff, 0x25, 0xff, 0x26, 0xff, 0x27, 0xff, 0x28, - 0xff, 0x29, 0xff, 0x2a, 0xff, 0x2b, 0xff, 0x2c, - 0xff, 0x2d, 0xff, 0x2e, 0xff, 0x2f, 0xff, 0x30, - 0xff, 0x31, 0xff, 0x32, 0xff, 0x33, 0xff, 0x34, - 0xff, 0x35, 0xff, 0x36, 0xff, 0x37, 0xff, 0x38, - 0xff, 0x39, 0xff, 0x3a, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0xff, 0x41, 0xff, 0x42, 0xff, 0x43, - 0xff, 0x44, 0xff, 0x45, 0xff, 0x46, 0xff, 0x47, - 0xff, 0x48, 0xff, 0x49, 0xff, 0x4a, 0xff, 0x4b, - 0xff, 0x4c, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x4f, - 0xff, 0x50, 0xff, 0x51, 0xff, 0x52, 0xff, 0x53, - 0xff, 0x54, 0xff, 0x55, 0xff, 0x56, 0xff, 0x57, - 0xff, 0x58, 0xff, 0x59, 0xff, 0x5a, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x30, 0x41, - 0x30, 0x42, 0x30, 0x43, 0x30, 0x44, 0x30, 0x45, - 0x30, 0x46, 0x30, 0x47, 0x30, 0x48, 0x30, 0x49, - 0x30, 0x4a, 0x30, 0x4b, 0x30, 0x4c, 0x30, 0x4d, - 0x30, 0x4e, 0x30, 0x4f, 0x30, 0x50, 0x30, 0x51, - 0x30, 0x52, 0x30, 0x53, 0x30, 0x54, 0x30, 0x55, - 0x30, 0x56, 0x30, 0x57, 0x30, 0x58, 0x30, 0x59, - 0x30, 0x5a, 0x30, 0x5b, 0x30, 0x5c, 0x30, 0x5d, - 0x30, 0x5e, 0x30, 0x5f, 0x30, 0x60, 0x30, 0x61, - 0x30, 0x62, 0x30, 0x63, 0x30, 0x64, 0x30, 0x65, - 0x30, 0x66, 0x30, 0x67, 0x30, 0x68, 0x30, 0x69, - 0x30, 0x6a, 0x30, 0x6b, 0x30, 0x6c, 0x30, 0x6d, - 0x30, 0x6e, 0x30, 0x6f, 0x30, 0x70, 0x30, 0x71, - 0x30, 0x72, 0x30, 0x73, 0x30, 0x74, 0x30, 0x75, - 0x30, 0x76, 0x30, 0x77, 0x30, 0x78, 0x30, 0x79, - 0x30, 0x7a, 0x30, 0x7b, 0x30, 0x7c, 0x30, 0x7d, - 0x30, 0x7e, 0x30, 0x7f, 0x30, 0x80, 0x30, 0x81, - 0x30, 0x82, 0x30, 0x83, 0x30, 0x84, 0x30, 0x85, - 0x30, 0x86, 0x30, 0x87, 0x30, 0x88, 0x30, 0x89, - 0x30, 0x8a, 0x30, 0x8b, 0x30, 0x8c, 0x30, 0x8d, - 0x30, 0x8e, 0x30, 0x8f, 0x30, 0x90, 0x30, 0x91, - 0x30, 0x92, 0x30, 0x93, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x30, 0xa1, 0x30, 0xa2, 0x30, 0xa3, 0x30, 0xa4, - 0x30, 0xa5, 0x30, 0xa6, 0x30, 0xa7, 0x30, 0xa8, - 0x30, 0xa9, 0x30, 0xaa, 0x30, 0xab, 0x30, 0xac, - 0x30, 0xad, 0x30, 0xae, 0x30, 0xaf, 0x30, 0xb0, - 0x30, 0xb1, 0x30, 0xb2, 0x30, 0xb3, 0x30, 0xb4, - 0x30, 0xb5, 0x30, 0xb6, 0x30, 0xb7, 0x30, 0xb8, - 0x30, 0xb9, 0x30, 0xba, 0x30, 0xbb, 0x30, 0xbc, - 0x30, 0xbd, 0x30, 0xbe, 0x30, 0xbf, 0x30, 0xc0, - 0x30, 0xc1, 0x30, 0xc2, 0x30, 0xc3, 0x30, 0xc4, - 0x30, 0xc5, 0x30, 0xc6, 0x30, 0xc7, 0x30, 0xc8, - 0x30, 0xc9, 0x30, 0xca, 0x30, 0xcb, 0x30, 0xcc, - 0x30, 0xcd, 0x30, 0xce, 0x30, 0xcf, 0x30, 0xd0, - 0x30, 0xd1, 0x30, 0xd2, 0x30, 0xd3, 0x30, 0xd4, - 0x30, 0xd5, 0x30, 0xd6, 0x30, 0xd7, 0x30, 0xd8, - 0x30, 0xd9, 0x30, 0xda, 0x30, 0xdb, 0x30, 0xdc, - 0x30, 0xdd, 0x30, 0xde, 0x30, 0xdf, 0x00, 0x20, - 0x30, 0xe0, 0x30, 0xe1, 0x30, 0xe2, 0x30, 0xe3, - 0x30, 0xe4, 0x30, 0xe5, 0x30, 0xe6, 0x30, 0xe7, - 0x30, 0xe8, 0x30, 0xe9, 0x30, 0xea, 0x30, 0xeb, - 0x30, 0xec, 0x30, 0xed, 0x30, 0xee, 0x30, 0xef, - 0x30, 0xf0, 0x30, 0xf1, 0x30, 0xf2, 0x30, 0xf3, - 0x30, 0xf4, 0x30, 0xf5, 0x30, 0xf6, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x03, 0x91, - 0x03, 0x92, 0x03, 0x93, 0x03, 0x94, 0x03, 0x95, - 0x03, 0x96, 0x03, 0x97, 0x03, 0x98, 0x03, 0x99, - 0x03, 0x9a, 0x03, 0x9b, 0x03, 0x9c, 0x03, 0x9d, - 0x03, 0x9e, 0x03, 0x9f, 0x03, 0xa0, 0x03, 0xa1, - 0x03, 0xa3, 0x03, 0xa4, 0x03, 0xa5, 0x03, 0xa6, - 0x03, 0xa7, 0x03, 0xa8, 0x03, 0xa9, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x03, 0xb1, - 0x03, 0xb2, 0x03, 0xb3, 0x03, 0xb4, 0x03, 0xb5, - 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0xb9, - 0x03, 0xba, 0x03, 0xbb, 0x03, 0xbc, 0x03, 0xbd, - 0x03, 0xbe, 0x03, 0xbf, 0x03, 0xc0, 0x03, 0xc1, - 0x03, 0xc3, 0x03, 0xc4, 0x03, 0xc5, 0x03, 0xc6, - 0x03, 0xc7, 0x03, 0xc8, 0x03, 0xc9, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x04, 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, - 0x04, 0x14, 0x04, 0x15, 0x04, 0x01, 0x04, 0x16, - 0x04, 0x17, 0x04, 0x18, 0x04, 0x19, 0x04, 0x1a, - 0x04, 0x1b, 0x04, 0x1c, 0x04, 0x1d, 0x04, 0x1e, - 0x04, 0x1f, 0x04, 0x20, 0x04, 0x21, 0x04, 0x22, - 0x04, 0x23, 0x04, 0x24, 0x04, 0x25, 0x04, 0x26, - 0x04, 0x27, 0x04, 0x28, 0x04, 0x29, 0x04, 0x2a, - 0x04, 0x2b, 0x04, 0x2c, 0x04, 0x2d, 0x04, 0x2e, - 0x04, 0x2f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x04, 0x30, 0x04, 0x31, 0x04, 0x32, 0x04, 0x33, - 0x04, 0x34, 0x04, 0x35, 0x04, 0x51, 0x04, 0x36, - 0x04, 0x37, 0x04, 0x38, 0x04, 0x39, 0x04, 0x3a, - 0x04, 0x3b, 0x04, 0x3c, 0x04, 0x3d, 0x00, 0x20, - 0x04, 0x3e, 0x04, 0x3f, 0x04, 0x40, 0x04, 0x41, - 0x04, 0x42, 0x04, 0x43, 0x04, 0x44, 0x04, 0x45, - 0x04, 0x46, 0x04, 0x47, 0x04, 0x48, 0x04, 0x49, - 0x04, 0x4a, 0x04, 0x4b, 0x04, 0x4c, 0x04, 0x4d, - 0x04, 0x4e, 0x04, 0x4f, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x25, 0x00, - 0x25, 0x02, 0x25, 0x0c, 0x25, 0x10, 0x25, 0x18, - 0x25, 0x14, 0x25, 0x1c, 0x25, 0x2c, 0x25, 0x24, - 0x25, 0x34, 0x25, 0x3c, 0x25, 0x01, 0x25, 0x03, - 0x25, 0x0f, 0x25, 0x13, 0x25, 0x1b, 0x25, 0x17, - 0x25, 0x23, 0x25, 0x33, 0x25, 0x2b, 0x25, 0x3b, - 0x25, 0x4b, 0x25, 0x20, 0x25, 0x2f, 0x25, 0x28, - 0x25, 0x37, 0x25, 0x3f, 0x25, 0x1d, 0x25, 0x30, - 0x25, 0x25, 0x25, 0x38, 0x25, 0x42, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x4e, 0x9c, - 0x55, 0x16, 0x5a, 0x03, 0x96, 0x3f, 0x54, 0xc0, - 0x61, 0x1b, 0x63, 0x28, 0x59, 0xf6, 0x90, 0x22, - 0x84, 0x75, 0x83, 0x1c, 0x7a, 0x50, 0x60, 0xaa, - 0x63, 0xe1, 0x6e, 0x25, 0x65, 0xed, 0x84, 0x66, - 0x82, 0xa6, 0x9b, 0xf5, 0x68, 0x93, 0x57, 0x27, - 0x65, 0xa1, 0x62, 0x71, 0x5b, 0x9b, 0x59, 0xd0, - 0x86, 0x7b, 0x98, 0xf4, 0x7d, 0x62, 0x7d, 0xbe, - 0x9b, 0x8e, 0x62, 0x16, 0x7c, 0x9f, 0x88, 0xb7, - 0x5b, 0x89, 0x5e, 0xb5, 0x63, 0x09, 0x66, 0x97, - 0x68, 0x48, 0x95, 0xc7, 0x97, 0x8d, 0x67, 0x4f, - 0x4e, 0xe5, 0x4f, 0x0a, 0x4f, 0x4d, 0x4f, 0x9d, - 0x50, 0x49, 0x56, 0xf2, 0x59, 0x37, 0x59, 0xd4, - 0x5a, 0x01, 0x5c, 0x09, 0x60, 0xdf, 0x61, 0x0f, - 0x61, 0x70, 0x66, 0x13, 0x69, 0x05, 0x70, 0xba, - 0x75, 0x4f, 0x75, 0x70, 0x79, 0xfb, 0x7d, 0xad, - 0x7d, 0xef, 0x80, 0xc3, 0x84, 0x0e, 0x88, 0x63, - 0x8b, 0x02, 0x90, 0x55, 0x90, 0x7a, 0x53, 0x3b, - 0x4e, 0x95, 0x4e, 0xa5, 0x57, 0xdf, 0x80, 0xb2, - 0x90, 0xc1, 0x78, 0xef, 0x4e, 0x00, 0x58, 0xf1, - 0x6e, 0xa2, 0x90, 0x38, 0x7a, 0x32, 0x83, 0x28, - 0x82, 0x8b, 0x9c, 0x2f, 0x51, 0x41, 0x53, 0x70, - 0x54, 0xbd, 0x54, 0xe1, 0x56, 0xe0, 0x59, 0xfb, - 0x5f, 0x15, 0x98, 0xf2, 0x6d, 0xeb, 0x80, 0xe4, - 0x85, 0x2d, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x96, 0x62, 0x96, 0x70, 0x96, 0xa0, 0x97, 0xfb, - 0x54, 0x0b, 0x53, 0xf3, 0x5b, 0x87, 0x70, 0xcf, - 0x7f, 0xbd, 0x8f, 0xc2, 0x96, 0xe8, 0x53, 0x6f, - 0x9d, 0x5c, 0x7a, 0xba, 0x4e, 0x11, 0x78, 0x93, - 0x81, 0xfc, 0x6e, 0x26, 0x56, 0x18, 0x55, 0x04, - 0x6b, 0x1d, 0x85, 0x1a, 0x9c, 0x3b, 0x59, 0xe5, - 0x53, 0xa9, 0x6d, 0x66, 0x74, 0xdc, 0x95, 0x8f, - 0x56, 0x42, 0x4e, 0x91, 0x90, 0x4b, 0x96, 0xf2, - 0x83, 0x4f, 0x99, 0x0c, 0x53, 0xe1, 0x55, 0xb6, - 0x5b, 0x30, 0x5f, 0x71, 0x66, 0x20, 0x66, 0xf3, - 0x68, 0x04, 0x6c, 0x38, 0x6c, 0xf3, 0x6d, 0x29, - 0x74, 0x5b, 0x76, 0xc8, 0x7a, 0x4e, 0x98, 0x34, - 0x82, 0xf1, 0x88, 0x5b, 0x8a, 0x60, 0x92, 0xed, - 0x6d, 0xb2, 0x75, 0xab, 0x76, 0xca, 0x99, 0xc5, - 0x60, 0xa6, 0x8b, 0x01, 0x8d, 0x8a, 0x95, 0xb2, - 0x69, 0x8e, 0x53, 0xad, 0x51, 0x86, 0x00, 0x20, - 0x57, 0x12, 0x58, 0x30, 0x59, 0x44, 0x5b, 0xb4, - 0x5e, 0xf6, 0x60, 0x28, 0x63, 0xa9, 0x63, 0xf4, - 0x6c, 0xbf, 0x6f, 0x14, 0x70, 0x8e, 0x71, 0x14, - 0x71, 0x59, 0x71, 0xd5, 0x73, 0x3f, 0x7e, 0x01, - 0x82, 0x76, 0x82, 0xd1, 0x85, 0x97, 0x90, 0x60, - 0x92, 0x5b, 0x9d, 0x1b, 0x58, 0x69, 0x65, 0xbc, - 0x6c, 0x5a, 0x75, 0x25, 0x51, 0xf9, 0x59, 0x2e, - 0x59, 0x65, 0x5f, 0x80, 0x5f, 0xdc, 0x62, 0xbc, - 0x65, 0xfa, 0x6a, 0x2a, 0x6b, 0x27, 0x6b, 0xb4, - 0x73, 0x8b, 0x7f, 0xc1, 0x89, 0x56, 0x9d, 0x2c, - 0x9d, 0x0e, 0x9e, 0xc4, 0x5c, 0xa1, 0x6c, 0x96, - 0x83, 0x7b, 0x51, 0x04, 0x5c, 0x4b, 0x61, 0xb6, - 0x81, 0xc6, 0x68, 0x76, 0x72, 0x61, 0x4e, 0x59, - 0x4f, 0xfa, 0x53, 0x78, 0x60, 0x69, 0x6e, 0x29, - 0x7a, 0x4f, 0x97, 0xf3, 0x4e, 0x0b, 0x53, 0x16, - 0x4e, 0xee, 0x4f, 0x55, 0x4f, 0x3d, 0x4f, 0xa1, - 0x4f, 0x73, 0x52, 0xa0, 0x53, 0xef, 0x56, 0x09, - 0x59, 0x0f, 0x5a, 0xc1, 0x5b, 0xb6, 0x5b, 0xe1, - 0x79, 0xd1, 0x66, 0x87, 0x67, 0x9c, 0x67, 0xb6, - 0x6b, 0x4c, 0x6c, 0xb3, 0x70, 0x6b, 0x73, 0xc2, - 0x79, 0x8d, 0x79, 0xbe, 0x7a, 0x3c, 0x7b, 0x87, - 0x82, 0xb1, 0x82, 0xdb, 0x83, 0x04, 0x83, 0x77, - 0x83, 0xef, 0x83, 0xd3, 0x87, 0x66, 0x8a, 0xb2, - 0x56, 0x29, 0x8c, 0xa8, 0x8f, 0xe6, 0x90, 0x4e, - 0x97, 0x1e, 0x86, 0x8a, 0x4f, 0xc4, 0x5c, 0xe8, - 0x62, 0x11, 0x72, 0x59, 0x75, 0x3b, 0x81, 0xe5, - 0x82, 0xbd, 0x86, 0xfe, 0x8c, 0xc0, 0x96, 0xc5, - 0x99, 0x13, 0x99, 0xd5, 0x4e, 0xcb, 0x4f, 0x1a, - 0x89, 0xe3, 0x56, 0xde, 0x58, 0x4a, 0x58, 0xca, - 0x5e, 0xfb, 0x5f, 0xeb, 0x60, 0x2a, 0x60, 0x94, - 0x60, 0x62, 0x61, 0xd0, 0x62, 0x12, 0x62, 0xd0, - 0x65, 0x39, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x9b, 0x41, 0x66, 0x66, 0x68, 0xb0, 0x6d, 0x77, - 0x70, 0x70, 0x75, 0x4c, 0x76, 0x86, 0x7d, 0x75, - 0x82, 0xa5, 0x87, 0xf9, 0x95, 0x8b, 0x96, 0x8e, - 0x8c, 0x9d, 0x51, 0xf1, 0x52, 0xbe, 0x59, 0x16, - 0x54, 0xb3, 0x5b, 0xb3, 0x5d, 0x16, 0x61, 0x68, - 0x69, 0x82, 0x6d, 0xaf, 0x78, 0x8d, 0x84, 0xcb, - 0x88, 0x57, 0x8a, 0x72, 0x93, 0xa7, 0x9a, 0xb8, - 0x6d, 0x6c, 0x99, 0xa8, 0x86, 0xd9, 0x57, 0xa3, - 0x67, 0xff, 0x86, 0xce, 0x92, 0x0e, 0x52, 0x83, - 0x56, 0x87, 0x54, 0x04, 0x5e, 0xd3, 0x62, 0xe1, - 0x64, 0xb9, 0x68, 0x3c, 0x68, 0x38, 0x6b, 0xbb, - 0x73, 0x72, 0x78, 0xba, 0x7a, 0x6b, 0x89, 0x9a, - 0x89, 0xd2, 0x8d, 0x6b, 0x8f, 0x03, 0x90, 0xed, - 0x95, 0xa3, 0x96, 0x94, 0x97, 0x69, 0x5b, 0x66, - 0x5c, 0xb3, 0x69, 0x7d, 0x98, 0x4d, 0x98, 0x4e, - 0x63, 0x9b, 0x7b, 0x20, 0x6a, 0x2b, 0x00, 0x20, - 0x6a, 0x7f, 0x68, 0xb6, 0x9c, 0x0d, 0x6f, 0x5f, - 0x52, 0x72, 0x55, 0x9d, 0x60, 0x70, 0x62, 0xec, - 0x6d, 0x3b, 0x6e, 0x07, 0x6e, 0xd1, 0x84, 0x5b, - 0x89, 0x10, 0x8f, 0x44, 0x4e, 0x14, 0x9c, 0x39, - 0x53, 0xf6, 0x69, 0x1b, 0x6a, 0x3a, 0x97, 0x84, - 0x68, 0x2a, 0x51, 0x5c, 0x7a, 0xc3, 0x84, 0xb2, - 0x91, 0xdc, 0x93, 0x8c, 0x56, 0x5b, 0x9d, 0x28, - 0x68, 0x22, 0x83, 0x05, 0x84, 0x31, 0x7c, 0xa5, - 0x52, 0x08, 0x82, 0xc5, 0x74, 0xe6, 0x4e, 0x7e, - 0x4f, 0x83, 0x51, 0xa0, 0x5b, 0xd2, 0x52, 0x0a, - 0x52, 0xd8, 0x52, 0xe7, 0x5d, 0xfb, 0x55, 0x9a, - 0x58, 0x2a, 0x59, 0xe6, 0x5b, 0x8c, 0x5b, 0x98, - 0x5b, 0xdb, 0x5e, 0x72, 0x5e, 0x79, 0x60, 0xa3, - 0x61, 0x1f, 0x61, 0x63, 0x61, 0xbe, 0x63, 0xdb, - 0x65, 0x62, 0x67, 0xd1, 0x68, 0x53, 0x68, 0xfa, - 0x6b, 0x3e, 0x6b, 0x53, 0x6c, 0x57, 0x6f, 0x22, - 0x6f, 0x97, 0x6f, 0x45, 0x74, 0xb0, 0x75, 0x18, - 0x76, 0xe3, 0x77, 0x0b, 0x7a, 0xff, 0x7b, 0xa1, - 0x7c, 0x21, 0x7d, 0xe9, 0x7f, 0x36, 0x7f, 0xf0, - 0x80, 0x9d, 0x82, 0x66, 0x83, 0x9e, 0x89, 0xb3, - 0x8a, 0xcc, 0x8c, 0xab, 0x90, 0x84, 0x94, 0x51, - 0x95, 0x93, 0x95, 0x91, 0x95, 0xa2, 0x96, 0x65, - 0x97, 0xd3, 0x99, 0x28, 0x82, 0x18, 0x4e, 0x38, - 0x54, 0x2b, 0x5c, 0xb8, 0x5d, 0xcc, 0x73, 0xa9, - 0x76, 0x4c, 0x77, 0x3c, 0x5c, 0xa9, 0x7f, 0xeb, - 0x8d, 0x0b, 0x96, 0xc1, 0x98, 0x11, 0x98, 0x54, - 0x98, 0x58, 0x4f, 0x01, 0x4f, 0x0e, 0x53, 0x71, - 0x55, 0x9c, 0x56, 0x68, 0x57, 0xfa, 0x59, 0x47, - 0x5b, 0x09, 0x5b, 0xc4, 0x5c, 0x90, 0x5e, 0x0c, - 0x5e, 0x7e, 0x5f, 0xcc, 0x63, 0xee, 0x67, 0x3a, - 0x65, 0xd7, 0x65, 0xe2, 0x67, 0x1f, 0x68, 0xcb, - 0x68, 0xc4, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x6a, 0x5f, 0x5e, 0x30, 0x6b, 0xc5, 0x6c, 0x17, - 0x6c, 0x7d, 0x75, 0x7f, 0x79, 0x48, 0x5b, 0x63, - 0x7a, 0x00, 0x7d, 0x00, 0x5f, 0xbd, 0x89, 0x8f, - 0x8a, 0x18, 0x8c, 0xb4, 0x8d, 0x77, 0x8e, 0xcc, - 0x8f, 0x1d, 0x98, 0xe2, 0x9a, 0x0e, 0x9b, 0x3c, - 0x4e, 0x80, 0x50, 0x7d, 0x51, 0x00, 0x59, 0x93, - 0x5b, 0x9c, 0x62, 0x2f, 0x62, 0x80, 0x64, 0xec, - 0x6b, 0x3a, 0x72, 0xa0, 0x75, 0x91, 0x79, 0x47, - 0x7f, 0xa9, 0x87, 0xfb, 0x8a, 0xbc, 0x8b, 0x70, - 0x63, 0xac, 0x83, 0xca, 0x97, 0xa0, 0x54, 0x09, - 0x54, 0x03, 0x55, 0xab, 0x68, 0x54, 0x6a, 0x58, - 0x8a, 0x70, 0x78, 0x27, 0x67, 0x75, 0x9e, 0xcd, - 0x53, 0x74, 0x5b, 0xa2, 0x81, 0x1a, 0x86, 0x50, - 0x90, 0x06, 0x4e, 0x18, 0x4e, 0x45, 0x4e, 0xc7, - 0x4f, 0x11, 0x53, 0xca, 0x54, 0x38, 0x5b, 0xae, - 0x5f, 0x13, 0x60, 0x25, 0x65, 0x51, 0x00, 0x20, - 0x67, 0x3d, 0x6c, 0x42, 0x6c, 0x72, 0x6c, 0xe3, - 0x70, 0x78, 0x74, 0x03, 0x7a, 0x76, 0x7a, 0xae, - 0x7b, 0x08, 0x7d, 0x1a, 0x7c, 0xfe, 0x7d, 0x66, - 0x65, 0xe7, 0x72, 0x5b, 0x53, 0xbb, 0x5c, 0x45, - 0x5d, 0xe8, 0x62, 0xd2, 0x62, 0xe0, 0x63, 0x19, - 0x6e, 0x20, 0x86, 0x5a, 0x8a, 0x31, 0x8d, 0xdd, - 0x92, 0xf8, 0x6f, 0x01, 0x79, 0xa6, 0x9b, 0x5a, - 0x4e, 0xa8, 0x4e, 0xab, 0x4e, 0xac, 0x4f, 0x9b, - 0x4f, 0xa0, 0x50, 0xd1, 0x51, 0x47, 0x7a, 0xf6, - 0x51, 0x71, 0x51, 0xf6, 0x53, 0x54, 0x53, 0x21, - 0x53, 0x7f, 0x53, 0xeb, 0x55, 0xac, 0x58, 0x83, - 0x5c, 0xe1, 0x5f, 0x37, 0x5f, 0x4a, 0x60, 0x2f, - 0x60, 0x50, 0x60, 0x6d, 0x63, 0x1f, 0x65, 0x59, - 0x6a, 0x4b, 0x6c, 0xc1, 0x72, 0xc2, 0x72, 0xed, - 0x77, 0xef, 0x80, 0xf8, 0x81, 0x05, 0x82, 0x08, - 0x85, 0x4e, 0x90, 0xf7, 0x93, 0xe1, 0x97, 0xff, - 0x99, 0x57, 0x9a, 0x5a, 0x4e, 0xf0, 0x51, 0xdd, - 0x5c, 0x2d, 0x66, 0x81, 0x69, 0x6d, 0x5c, 0x40, - 0x66, 0xf2, 0x69, 0x75, 0x73, 0x89, 0x68, 0x50, - 0x7c, 0x81, 0x50, 0xc5, 0x52, 0xe4, 0x57, 0x47, - 0x5d, 0xfe, 0x93, 0x26, 0x65, 0xa4, 0x6b, 0x23, - 0x6b, 0x3d, 0x74, 0x34, 0x79, 0x81, 0x79, 0xbd, - 0x7b, 0x4b, 0x7d, 0xca, 0x82, 0xb9, 0x83, 0xcc, - 0x88, 0x7f, 0x89, 0x5f, 0x8b, 0x39, 0x8f, 0xd1, - 0x91, 0xd1, 0x54, 0x1f, 0x92, 0x80, 0x4e, 0x5d, - 0x50, 0x36, 0x53, 0xe5, 0x53, 0x3a, 0x72, 0xd7, - 0x73, 0x96, 0x77, 0xe9, 0x82, 0xe6, 0x8e, 0xaf, - 0x99, 0xc6, 0x99, 0xc8, 0x99, 0xd2, 0x51, 0x77, - 0x61, 0x1a, 0x86, 0x5e, 0x55, 0xb0, 0x7a, 0x7a, - 0x50, 0x76, 0x5b, 0xd3, 0x90, 0x47, 0x96, 0x85, - 0x4e, 0x32, 0x6a, 0xdb, 0x91, 0xe7, 0x5c, 0x51, - 0x5c, 0x48, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x63, 0x98, 0x7a, 0x9f, 0x6c, 0x93, 0x97, 0x74, - 0x8f, 0x61, 0x7a, 0xaa, 0x71, 0x8a, 0x96, 0x88, - 0x7c, 0x82, 0x68, 0x17, 0x7e, 0x70, 0x68, 0x51, - 0x93, 0x6c, 0x52, 0xf2, 0x54, 0x1b, 0x85, 0xab, - 0x8a, 0x13, 0x7f, 0xa4, 0x8e, 0xcd, 0x90, 0xe1, - 0x53, 0x66, 0x88, 0x88, 0x79, 0x41, 0x4f, 0xc2, - 0x50, 0xbe, 0x52, 0x11, 0x51, 0x44, 0x55, 0x53, - 0x57, 0x2d, 0x73, 0xea, 0x57, 0x8b, 0x59, 0x51, - 0x5f, 0x62, 0x5f, 0x84, 0x60, 0x75, 0x61, 0x76, - 0x61, 0x67, 0x61, 0xa9, 0x63, 0xb2, 0x64, 0x3a, - 0x65, 0x6c, 0x66, 0x6f, 0x68, 0x42, 0x6e, 0x13, - 0x75, 0x66, 0x7a, 0x3d, 0x7c, 0xfb, 0x7d, 0x4c, - 0x7d, 0x99, 0x7e, 0x4b, 0x7f, 0x6b, 0x83, 0x0e, - 0x83, 0x4a, 0x86, 0xcd, 0x8a, 0x08, 0x8a, 0x63, - 0x8b, 0x66, 0x8e, 0xfd, 0x98, 0x1a, 0x9d, 0x8f, - 0x82, 0xb8, 0x8f, 0xce, 0x9b, 0xe8, 0x00, 0x20, - 0x52, 0x87, 0x62, 0x1f, 0x64, 0x83, 0x6f, 0xc0, - 0x96, 0x99, 0x68, 0x41, 0x50, 0x91, 0x6b, 0x20, - 0x6c, 0x7a, 0x6f, 0x54, 0x7a, 0x74, 0x7d, 0x50, - 0x88, 0x40, 0x8a, 0x23, 0x67, 0x08, 0x4e, 0xf6, - 0x50, 0x39, 0x50, 0x26, 0x50, 0x65, 0x51, 0x7c, - 0x52, 0x38, 0x52, 0x63, 0x55, 0xa7, 0x57, 0x0f, - 0x58, 0x05, 0x5a, 0xcc, 0x5e, 0xfa, 0x61, 0xb2, - 0x61, 0xf8, 0x62, 0xf3, 0x63, 0x72, 0x69, 0x1c, - 0x6a, 0x29, 0x72, 0x7d, 0x72, 0xac, 0x73, 0x2e, - 0x78, 0x14, 0x78, 0x6f, 0x7d, 0x79, 0x77, 0x0c, - 0x80, 0xa9, 0x89, 0x8b, 0x8b, 0x19, 0x8c, 0xe2, - 0x8e, 0xd2, 0x90, 0x63, 0x93, 0x75, 0x96, 0x7a, - 0x98, 0x55, 0x9a, 0x13, 0x9e, 0x78, 0x51, 0x43, - 0x53, 0x9f, 0x53, 0xb3, 0x5e, 0x7b, 0x5f, 0x26, - 0x6e, 0x1b, 0x6e, 0x90, 0x73, 0x84, 0x73, 0xfe, - 0x7d, 0x43, 0x82, 0x37, 0x8a, 0x00, 0x8a, 0xfa, - 0x96, 0x50, 0x4e, 0x4e, 0x50, 0x0b, 0x53, 0xe4, - 0x54, 0x7c, 0x56, 0xfa, 0x59, 0xd1, 0x5b, 0x64, - 0x5d, 0xf1, 0x5e, 0xab, 0x5f, 0x27, 0x62, 0x38, - 0x65, 0x45, 0x67, 0xaf, 0x6e, 0x56, 0x72, 0xd0, - 0x7c, 0xca, 0x88, 0xb4, 0x80, 0xa1, 0x80, 0xe1, - 0x83, 0xf0, 0x86, 0x4e, 0x8a, 0x87, 0x8d, 0xe8, - 0x92, 0x37, 0x96, 0xc7, 0x98, 0x67, 0x9f, 0x13, - 0x4e, 0x94, 0x4e, 0x92, 0x4f, 0x0d, 0x53, 0x48, - 0x54, 0x49, 0x54, 0x3e, 0x5a, 0x2f, 0x5f, 0x8c, - 0x5f, 0xa1, 0x60, 0x9f, 0x68, 0xa7, 0x6a, 0x8e, - 0x74, 0x5a, 0x78, 0x81, 0x8a, 0x9e, 0x8a, 0xa4, - 0x8b, 0x77, 0x91, 0x90, 0x4e, 0x5e, 0x9b, 0xc9, - 0x4e, 0xa4, 0x4f, 0x7c, 0x4f, 0xaf, 0x50, 0x19, - 0x50, 0x16, 0x51, 0x49, 0x51, 0x6c, 0x52, 0x9f, - 0x52, 0xb9, 0x52, 0xfe, 0x53, 0x9a, 0x53, 0xe3, - 0x54, 0x11, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x54, 0x0e, 0x55, 0x89, 0x57, 0x51, 0x57, 0xa2, - 0x59, 0x7d, 0x5b, 0x54, 0x5b, 0x5d, 0x5b, 0x8f, - 0x5d, 0xe5, 0x5d, 0xe7, 0x5d, 0xf7, 0x5e, 0x78, - 0x5e, 0x83, 0x5e, 0x9a, 0x5e, 0xb7, 0x5f, 0x18, - 0x60, 0x52, 0x61, 0x4c, 0x62, 0x97, 0x62, 0xd8, - 0x63, 0xa7, 0x65, 0x3b, 0x66, 0x02, 0x66, 0x43, - 0x66, 0xf4, 0x67, 0x6d, 0x68, 0x21, 0x68, 0x97, - 0x69, 0xcb, 0x6c, 0x5f, 0x6d, 0x2a, 0x6d, 0x69, - 0x6e, 0x2f, 0x6e, 0x9d, 0x75, 0x32, 0x76, 0x87, - 0x78, 0x6c, 0x7a, 0x3f, 0x7c, 0xe0, 0x7d, 0x05, - 0x7d, 0x18, 0x7d, 0x5e, 0x7d, 0xb1, 0x80, 0x15, - 0x80, 0x03, 0x80, 0xaf, 0x80, 0xb1, 0x81, 0x54, - 0x81, 0x8f, 0x82, 0x2a, 0x83, 0x52, 0x88, 0x4c, - 0x88, 0x61, 0x8b, 0x1b, 0x8c, 0xa2, 0x8c, 0xfc, - 0x90, 0xca, 0x91, 0x75, 0x92, 0x71, 0x78, 0x3f, - 0x92, 0xfc, 0x95, 0xa4, 0x96, 0x4d, 0x00, 0x20, - 0x98, 0x05, 0x99, 0x99, 0x9a, 0xd8, 0x9d, 0x3b, - 0x52, 0x5b, 0x52, 0xab, 0x53, 0xf7, 0x54, 0x08, - 0x58, 0xd5, 0x62, 0xf7, 0x6f, 0xe0, 0x8c, 0x6a, - 0x8f, 0x5f, 0x9e, 0xb9, 0x51, 0x4b, 0x52, 0x3b, - 0x54, 0x4a, 0x56, 0xfd, 0x7a, 0x40, 0x91, 0x77, - 0x9d, 0x60, 0x9e, 0xd2, 0x73, 0x44, 0x6f, 0x09, - 0x81, 0x70, 0x75, 0x11, 0x5f, 0xfd, 0x60, 0xda, - 0x9a, 0xa8, 0x72, 0xdb, 0x8f, 0xbc, 0x6b, 0x64, - 0x98, 0x03, 0x4e, 0xca, 0x56, 0xf0, 0x57, 0x64, - 0x58, 0xbe, 0x5a, 0x5a, 0x60, 0x68, 0x61, 0xc7, - 0x66, 0x0f, 0x66, 0x06, 0x68, 0x39, 0x68, 0xb1, - 0x6d, 0xf7, 0x75, 0xd5, 0x7d, 0x3a, 0x82, 0x6e, - 0x9b, 0x42, 0x4e, 0x9b, 0x4f, 0x50, 0x53, 0xc9, - 0x55, 0x06, 0x5d, 0x6f, 0x5d, 0xe6, 0x5d, 0xee, - 0x67, 0xfb, 0x6c, 0x99, 0x74, 0x73, 0x78, 0x02, - 0x8a, 0x50, 0x93, 0x96, 0x88, 0xdf, 0x57, 0x50, - 0x5e, 0xa7, 0x63, 0x2b, 0x50, 0xb5, 0x50, 0xac, - 0x51, 0x8d, 0x67, 0x00, 0x54, 0xc9, 0x58, 0x5e, - 0x59, 0xbb, 0x5b, 0xb0, 0x5f, 0x69, 0x62, 0x4d, - 0x63, 0xa1, 0x68, 0x3d, 0x6b, 0x73, 0x6e, 0x08, - 0x70, 0x7d, 0x91, 0xc7, 0x72, 0x80, 0x78, 0x15, - 0x78, 0x26, 0x79, 0x6d, 0x65, 0x8e, 0x7d, 0x30, - 0x83, 0xdc, 0x88, 0xc1, 0x8f, 0x09, 0x96, 0x9b, - 0x52, 0x64, 0x57, 0x28, 0x67, 0x50, 0x7f, 0x6a, - 0x8c, 0xa1, 0x51, 0xb4, 0x57, 0x42, 0x96, 0x2a, - 0x58, 0x3a, 0x69, 0x8a, 0x80, 0xb4, 0x54, 0xb2, - 0x5d, 0x0e, 0x57, 0xfc, 0x78, 0x95, 0x9d, 0xfa, - 0x4f, 0x5c, 0x52, 0x4a, 0x54, 0x8b, 0x64, 0x3e, - 0x66, 0x28, 0x67, 0x14, 0x67, 0xf5, 0x7a, 0x84, - 0x7b, 0x56, 0x7d, 0x22, 0x93, 0x2f, 0x68, 0x5c, - 0x9b, 0xad, 0x7b, 0x39, 0x53, 0x19, 0x51, 0x8a, - 0x52, 0x37, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x5b, 0xdf, 0x62, 0xf6, 0x64, 0xae, 0x64, 0xe6, - 0x67, 0x2d, 0x6b, 0xba, 0x85, 0xa9, 0x96, 0xd1, - 0x76, 0x90, 0x9b, 0xd6, 0x63, 0x4c, 0x93, 0x06, - 0x9b, 0xab, 0x76, 0xbf, 0x66, 0x52, 0x4e, 0x09, - 0x50, 0x98, 0x53, 0xc2, 0x5c, 0x71, 0x60, 0xe8, - 0x64, 0x92, 0x65, 0x63, 0x68, 0x5f, 0x71, 0xe6, - 0x73, 0xca, 0x75, 0x23, 0x7b, 0x97, 0x7e, 0x82, - 0x86, 0x95, 0x8b, 0x83, 0x8c, 0xdb, 0x91, 0x78, - 0x99, 0x10, 0x65, 0xac, 0x66, 0xab, 0x6b, 0x8b, - 0x4e, 0xd5, 0x4e, 0xd4, 0x4f, 0x3a, 0x4f, 0x7f, - 0x52, 0x3a, 0x53, 0xf8, 0x53, 0xf2, 0x55, 0xe3, - 0x56, 0xdb, 0x58, 0xeb, 0x59, 0xcb, 0x59, 0xc9, - 0x59, 0xff, 0x5b, 0x50, 0x5c, 0x4d, 0x5e, 0x02, - 0x5e, 0x2b, 0x5f, 0xd7, 0x60, 0x1d, 0x63, 0x07, - 0x65, 0x2f, 0x5b, 0x5c, 0x65, 0xaf, 0x65, 0xbd, - 0x65, 0xe8, 0x67, 0x9d, 0x6b, 0x62, 0x00, 0x20, - 0x6b, 0x7b, 0x6c, 0x0f, 0x73, 0x45, 0x79, 0x49, - 0x79, 0xc1, 0x7c, 0xf8, 0x7d, 0x19, 0x7d, 0x2b, - 0x80, 0xa2, 0x81, 0x02, 0x81, 0xf3, 0x89, 0x96, - 0x8a, 0x5e, 0x8a, 0x69, 0x8a, 0x66, 0x8a, 0x8c, - 0x8a, 0xee, 0x8c, 0xc7, 0x8c, 0xdc, 0x96, 0xcc, - 0x98, 0xfc, 0x6b, 0x6f, 0x4e, 0x8b, 0x4f, 0x3c, - 0x4f, 0x8d, 0x51, 0x50, 0x5b, 0x57, 0x5b, 0xfa, - 0x61, 0x48, 0x63, 0x01, 0x66, 0x42, 0x6b, 0x21, - 0x6e, 0xcb, 0x6c, 0xbb, 0x72, 0x3e, 0x74, 0xbd, - 0x75, 0xd4, 0x78, 0xc1, 0x79, 0x3a, 0x80, 0x0c, - 0x80, 0x33, 0x81, 0xea, 0x84, 0x94, 0x8f, 0x9e, - 0x6c, 0x50, 0x9e, 0x7f, 0x5f, 0x0f, 0x8b, 0x58, - 0x9d, 0x2b, 0x7a, 0xfa, 0x8e, 0xf8, 0x5b, 0x8d, - 0x96, 0xeb, 0x4e, 0x03, 0x53, 0xf1, 0x57, 0xf7, - 0x59, 0x31, 0x5a, 0xc9, 0x5b, 0xa4, 0x60, 0x89, - 0x6e, 0x7f, 0x6f, 0x06, 0x75, 0xbe, 0x8c, 0xea, - 0x5b, 0x9f, 0x85, 0x00, 0x7b, 0xe0, 0x50, 0x72, - 0x67, 0xf4, 0x82, 0x9d, 0x5c, 0x61, 0x85, 0x4a, - 0x7e, 0x1e, 0x82, 0x0e, 0x51, 0x99, 0x5c, 0x04, - 0x63, 0x68, 0x8d, 0x66, 0x65, 0x9c, 0x71, 0x6e, - 0x79, 0x3e, 0x7d, 0x17, 0x80, 0x05, 0x8b, 0x1d, - 0x8e, 0xca, 0x90, 0x6e, 0x86, 0xc7, 0x90, 0xaa, - 0x50, 0x1f, 0x52, 0xfa, 0x5c, 0x3a, 0x67, 0x53, - 0x70, 0x7c, 0x72, 0x35, 0x91, 0x4c, 0x91, 0xc8, - 0x93, 0x2b, 0x82, 0xe5, 0x5b, 0xc2, 0x5f, 0x31, - 0x60, 0xf9, 0x4e, 0x3b, 0x53, 0xd6, 0x5b, 0x88, - 0x62, 0x4b, 0x67, 0x31, 0x6b, 0x8a, 0x72, 0xe9, - 0x73, 0xe0, 0x7a, 0x2e, 0x81, 0x6b, 0x8d, 0xa3, - 0x91, 0x52, 0x99, 0x96, 0x51, 0x12, 0x53, 0xd7, - 0x54, 0x6a, 0x5b, 0xff, 0x63, 0x88, 0x6a, 0x39, - 0x7d, 0xac, 0x97, 0x00, 0x56, 0xda, 0x53, 0xce, - 0x54, 0x68, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x5b, 0x97, 0x5c, 0x31, 0x5d, 0xde, 0x4f, 0xee, - 0x61, 0x01, 0x62, 0xfe, 0x6d, 0x32, 0x79, 0xc0, - 0x79, 0xcb, 0x7d, 0x42, 0x7e, 0x4d, 0x7f, 0xd2, - 0x81, 0xed, 0x82, 0x1f, 0x84, 0x90, 0x88, 0x46, - 0x89, 0x72, 0x8b, 0x90, 0x8e, 0x74, 0x8f, 0x2f, - 0x90, 0x31, 0x91, 0x4b, 0x91, 0x6c, 0x96, 0xc6, - 0x91, 0x9c, 0x4e, 0xc0, 0x4f, 0x4f, 0x51, 0x45, - 0x53, 0x41, 0x5f, 0x93, 0x62, 0x0e, 0x67, 0xd4, - 0x6c, 0x41, 0x6e, 0x0b, 0x73, 0x63, 0x7e, 0x26, - 0x91, 0xcd, 0x92, 0x83, 0x53, 0xd4, 0x59, 0x19, - 0x5b, 0xbf, 0x6d, 0xd1, 0x79, 0x5d, 0x7e, 0x2e, - 0x7c, 0x9b, 0x58, 0x7e, 0x71, 0x9f, 0x51, 0xfa, - 0x88, 0x53, 0x8f, 0xf0, 0x4f, 0xca, 0x5c, 0xfb, - 0x66, 0x25, 0x77, 0xac, 0x7a, 0xe3, 0x82, 0x1c, - 0x99, 0xff, 0x51, 0xc6, 0x5f, 0xaa, 0x65, 0xec, - 0x69, 0x6f, 0x6b, 0x89, 0x6d, 0xf3, 0x00, 0x20, - 0x6e, 0x96, 0x6f, 0x64, 0x76, 0xfe, 0x7d, 0x14, - 0x5d, 0xe1, 0x90, 0x75, 0x91, 0x87, 0x98, 0x06, - 0x51, 0xe6, 0x52, 0x1d, 0x62, 0x40, 0x66, 0x91, - 0x66, 0xd9, 0x6e, 0x1a, 0x5e, 0xb6, 0x7d, 0xd2, - 0x7f, 0x72, 0x66, 0xf8, 0x85, 0xaf, 0x85, 0xf7, - 0x8a, 0xf8, 0x52, 0xa9, 0x53, 0xd9, 0x59, 0x73, - 0x5e, 0x8f, 0x5f, 0x90, 0x60, 0x55, 0x92, 0xe4, - 0x96, 0x64, 0x50, 0xb7, 0x51, 0x1f, 0x52, 0xdd, - 0x53, 0x20, 0x53, 0x47, 0x53, 0xec, 0x54, 0xe8, - 0x55, 0x46, 0x55, 0x31, 0x56, 0x17, 0x59, 0x68, - 0x59, 0xbe, 0x5a, 0x3c, 0x5b, 0xb5, 0x5c, 0x06, - 0x5c, 0x0f, 0x5c, 0x11, 0x5c, 0x1a, 0x5e, 0x84, - 0x5e, 0x8a, 0x5e, 0xe0, 0x5f, 0x70, 0x62, 0x7f, - 0x62, 0x84, 0x62, 0xdb, 0x63, 0x8c, 0x63, 0x77, - 0x66, 0x07, 0x66, 0x0c, 0x66, 0x2d, 0x66, 0x76, - 0x67, 0x7e, 0x68, 0xa2, 0x6a, 0x1f, 0x6a, 0x35, - 0x6c, 0xbc, 0x6d, 0x88, 0x6e, 0x09, 0x6e, 0x58, - 0x71, 0x3c, 0x71, 0x26, 0x71, 0x67, 0x75, 0xc7, - 0x77, 0x01, 0x78, 0x5d, 0x79, 0x01, 0x79, 0x65, - 0x79, 0xf0, 0x7a, 0xe0, 0x7b, 0x11, 0x7c, 0xa7, - 0x7d, 0x39, 0x80, 0x96, 0x83, 0xd6, 0x84, 0x8b, - 0x85, 0x49, 0x88, 0x5d, 0x88, 0xf3, 0x8a, 0x1f, - 0x8a, 0x3c, 0x8a, 0x54, 0x8a, 0x73, 0x8c, 0x61, - 0x8c, 0xde, 0x91, 0xa4, 0x92, 0x66, 0x93, 0x7e, - 0x94, 0x18, 0x96, 0x9c, 0x97, 0x98, 0x4e, 0x0a, - 0x4e, 0x08, 0x4e, 0x1e, 0x4e, 0x57, 0x51, 0x97, - 0x52, 0x70, 0x57, 0xce, 0x58, 0x34, 0x58, 0xcc, - 0x5b, 0x22, 0x5e, 0x38, 0x60, 0xc5, 0x64, 0xfe, - 0x67, 0x61, 0x67, 0x56, 0x6d, 0x44, 0x72, 0xb6, - 0x75, 0x73, 0x7a, 0x63, 0x84, 0xb8, 0x8b, 0x72, - 0x91, 0xb8, 0x93, 0x20, 0x56, 0x31, 0x57, 0xf4, - 0x98, 0xfe, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x62, 0xed, 0x69, 0x0d, 0x6b, 0x96, 0x71, 0xed, - 0x7e, 0x54, 0x80, 0x77, 0x82, 0x72, 0x89, 0xe6, - 0x98, 0xdf, 0x87, 0x55, 0x8f, 0xb1, 0x5c, 0x3b, - 0x4f, 0x38, 0x4f, 0xe1, 0x4f, 0xb5, 0x55, 0x07, - 0x5a, 0x20, 0x5b, 0xdd, 0x5b, 0xe9, 0x5f, 0xc3, - 0x61, 0x4e, 0x63, 0x2f, 0x65, 0xb0, 0x66, 0x4b, - 0x68, 0xee, 0x69, 0x9b, 0x6d, 0x78, 0x6d, 0xf1, - 0x75, 0x33, 0x75, 0xb9, 0x77, 0x1f, 0x79, 0x5e, - 0x79, 0xe6, 0x7d, 0x33, 0x81, 0xe3, 0x82, 0xaf, - 0x85, 0xaa, 0x89, 0xaa, 0x8a, 0x3a, 0x8e, 0xab, - 0x8f, 0x9b, 0x90, 0x32, 0x91, 0xdd, 0x97, 0x07, - 0x4e, 0xba, 0x4e, 0xc1, 0x52, 0x03, 0x58, 0x75, - 0x58, 0xec, 0x5c, 0x0b, 0x75, 0x1a, 0x5c, 0x3d, - 0x81, 0x4e, 0x8a, 0x0a, 0x8f, 0xc5, 0x96, 0x63, - 0x97, 0x6d, 0x7b, 0x25, 0x8a, 0xcf, 0x98, 0x08, - 0x91, 0x62, 0x56, 0xf3, 0x53, 0xa8, 0x00, 0x20, - 0x90, 0x17, 0x54, 0x39, 0x57, 0x82, 0x5e, 0x25, - 0x63, 0xa8, 0x6c, 0x34, 0x70, 0x8a, 0x77, 0x61, - 0x7c, 0x8b, 0x7f, 0xe0, 0x88, 0x70, 0x90, 0x42, - 0x91, 0x54, 0x93, 0x10, 0x93, 0x18, 0x96, 0x8f, - 0x74, 0x5e, 0x9a, 0xc4, 0x5d, 0x07, 0x5d, 0x69, - 0x65, 0x70, 0x67, 0xa2, 0x8d, 0xa8, 0x96, 0xdb, - 0x63, 0x6e, 0x67, 0x49, 0x69, 0x19, 0x83, 0xc5, - 0x98, 0x17, 0x96, 0xc0, 0x88, 0xfe, 0x6f, 0x84, - 0x64, 0x7a, 0x5b, 0xf8, 0x4e, 0x16, 0x70, 0x2c, - 0x75, 0x5d, 0x66, 0x2f, 0x51, 0xc4, 0x52, 0x36, - 0x52, 0xe2, 0x59, 0xd3, 0x5f, 0x81, 0x60, 0x27, - 0x62, 0x10, 0x65, 0x3f, 0x65, 0x74, 0x66, 0x1f, - 0x66, 0x74, 0x68, 0xf2, 0x68, 0x16, 0x6b, 0x63, - 0x6e, 0x05, 0x72, 0x72, 0x75, 0x1f, 0x76, 0xdb, - 0x7c, 0xbe, 0x80, 0x56, 0x58, 0xf0, 0x88, 0xfd, - 0x89, 0x7f, 0x8a, 0xa0, 0x8a, 0x93, 0x8a, 0xcb, - 0x90, 0x1d, 0x91, 0x92, 0x97, 0x52, 0x97, 0x59, - 0x65, 0x89, 0x7a, 0x0e, 0x81, 0x06, 0x96, 0xbb, - 0x5e, 0x2d, 0x60, 0xdc, 0x62, 0x1a, 0x65, 0xa5, - 0x66, 0x14, 0x67, 0x90, 0x77, 0xf3, 0x7a, 0x4d, - 0x7c, 0x4d, 0x7e, 0x3e, 0x81, 0x0a, 0x8c, 0xac, - 0x8d, 0x64, 0x8d, 0xe1, 0x8e, 0x5f, 0x78, 0xa9, - 0x52, 0x07, 0x62, 0xd9, 0x63, 0xa5, 0x64, 0x42, - 0x62, 0x98, 0x8a, 0x2d, 0x7a, 0x83, 0x7b, 0xc0, - 0x8a, 0xac, 0x96, 0xea, 0x7d, 0x76, 0x82, 0x0c, - 0x87, 0x49, 0x4e, 0xd9, 0x51, 0x48, 0x53, 0x43, - 0x53, 0x60, 0x5b, 0xa3, 0x5c, 0x02, 0x5c, 0x16, - 0x5d, 0xdd, 0x62, 0x26, 0x62, 0x47, 0x64, 0xb0, - 0x68, 0x13, 0x68, 0x34, 0x6c, 0xc9, 0x6d, 0x45, - 0x6d, 0x17, 0x67, 0xd3, 0x6f, 0x5c, 0x71, 0x4e, - 0x71, 0x7d, 0x65, 0xcb, 0x7a, 0x7f, 0x7b, 0xad, - 0x7d, 0xda, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x7e, 0x4a, 0x7f, 0xa8, 0x81, 0x7a, 0x82, 0x1b, - 0x82, 0x39, 0x85, 0xa6, 0x8a, 0x6e, 0x8c, 0xce, - 0x8d, 0xf5, 0x90, 0x78, 0x90, 0x77, 0x92, 0xad, - 0x92, 0x91, 0x95, 0x83, 0x9b, 0xae, 0x52, 0x4d, - 0x55, 0x84, 0x6f, 0x38, 0x71, 0x36, 0x51, 0x68, - 0x79, 0x85, 0x7e, 0x55, 0x81, 0xb3, 0x7c, 0xce, - 0x56, 0x4c, 0x58, 0x51, 0x5c, 0xa8, 0x63, 0xaa, - 0x66, 0xfe, 0x66, 0xfd, 0x69, 0x5a, 0x72, 0xd9, - 0x75, 0x8f, 0x75, 0x8e, 0x79, 0x0e, 0x79, 0x56, - 0x79, 0xdf, 0x7c, 0x97, 0x7d, 0x20, 0x7d, 0x44, - 0x86, 0x07, 0x8a, 0x34, 0x96, 0x3b, 0x90, 0x61, - 0x9f, 0x20, 0x50, 0xe7, 0x52, 0x75, 0x53, 0xcc, - 0x53, 0xe2, 0x50, 0x09, 0x55, 0xaa, 0x58, 0xee, - 0x59, 0x4f, 0x72, 0x3d, 0x5b, 0x8b, 0x5c, 0x64, - 0x53, 0x1d, 0x60, 0xe3, 0x60, 0xf3, 0x63, 0x5c, - 0x63, 0x83, 0x63, 0x3f, 0x63, 0xbb, 0x00, 0x20, - 0x64, 0xcd, 0x65, 0xe9, 0x66, 0xf9, 0x5d, 0xe3, - 0x69, 0xcd, 0x69, 0xfd, 0x6f, 0x15, 0x71, 0xe5, - 0x4e, 0x89, 0x75, 0xe9, 0x76, 0xf8, 0x7a, 0x93, - 0x7c, 0xdf, 0x7d, 0xcf, 0x7d, 0x9c, 0x80, 0x61, - 0x83, 0x49, 0x83, 0x58, 0x84, 0x6c, 0x84, 0xbc, - 0x85, 0xfb, 0x88, 0xc5, 0x8d, 0x70, 0x90, 0x01, - 0x90, 0x6d, 0x93, 0x97, 0x97, 0x1c, 0x9a, 0x12, - 0x50, 0xcf, 0x58, 0x97, 0x61, 0x8e, 0x81, 0xd3, - 0x85, 0x35, 0x8d, 0x08, 0x90, 0x20, 0x4f, 0xc3, - 0x50, 0x74, 0x52, 0x47, 0x53, 0x73, 0x60, 0x6f, - 0x63, 0x49, 0x67, 0x5f, 0x6e, 0x2c, 0x8d, 0xb3, - 0x90, 0x1f, 0x4f, 0xd7, 0x5c, 0x5e, 0x8c, 0xca, - 0x65, 0xcf, 0x7d, 0x9a, 0x53, 0x52, 0x88, 0x96, - 0x51, 0x76, 0x63, 0xc3, 0x5b, 0x58, 0x5b, 0x6b, - 0x5c, 0x0a, 0x64, 0x0d, 0x67, 0x51, 0x90, 0x5c, - 0x4e, 0xd6, 0x59, 0x1a, 0x59, 0x2a, 0x6c, 0x70, - 0x8a, 0x51, 0x55, 0x3e, 0x58, 0x15, 0x59, 0xa5, - 0x60, 0xf0, 0x62, 0x53, 0x67, 0xc1, 0x82, 0x35, - 0x69, 0x55, 0x96, 0x40, 0x99, 0xc4, 0x9a, 0x28, - 0x4f, 0x53, 0x58, 0x06, 0x5b, 0xfe, 0x80, 0x10, - 0x5c, 0xb1, 0x5e, 0x2f, 0x5f, 0x85, 0x60, 0x20, - 0x61, 0x4b, 0x62, 0x34, 0x66, 0xff, 0x6c, 0xf0, - 0x6e, 0xde, 0x80, 0xce, 0x81, 0x7f, 0x82, 0xd4, - 0x88, 0x8b, 0x8c, 0xb8, 0x90, 0x00, 0x90, 0x2e, - 0x96, 0x8a, 0x9e, 0xdb, 0x9b, 0xdb, 0x4e, 0xe3, - 0x53, 0xf0, 0x59, 0x27, 0x7b, 0x2c, 0x91, 0x8d, - 0x98, 0x4c, 0x9d, 0xf9, 0x6e, 0xdd, 0x70, 0x27, - 0x53, 0x53, 0x55, 0x44, 0x5b, 0x85, 0x62, 0x58, - 0x62, 0x9e, 0x62, 0xd3, 0x6c, 0xa2, 0x6f, 0xef, - 0x74, 0x22, 0x8a, 0x17, 0x94, 0x38, 0x6f, 0xc1, - 0x8a, 0xfe, 0x83, 0x38, 0x51, 0xe7, 0x86, 0xf8, - 0x53, 0xea, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x53, 0xe9, 0x4f, 0x46, 0x90, 0x54, 0x8f, 0xb0, - 0x59, 0x6a, 0x81, 0x31, 0x5d, 0xfd, 0x7a, 0xea, - 0x8f, 0xbf, 0x68, 0xda, 0x8c, 0x37, 0x72, 0xf8, - 0x9c, 0x48, 0x6a, 0x3d, 0x8a, 0xb0, 0x4e, 0x39, - 0x53, 0x58, 0x56, 0x06, 0x57, 0x66, 0x62, 0xc5, - 0x63, 0xa2, 0x65, 0xe6, 0x6b, 0x4e, 0x6d, 0xe1, - 0x6e, 0x5b, 0x70, 0xad, 0x77, 0xed, 0x7a, 0xef, - 0x7b, 0xaa, 0x7d, 0xbb, 0x80, 0x3d, 0x80, 0xc6, - 0x86, 0xcb, 0x8a, 0x95, 0x93, 0x5b, 0x56, 0xe3, - 0x58, 0xc7, 0x5f, 0x3e, 0x65, 0xad, 0x66, 0x96, - 0x6a, 0x80, 0x6b, 0xb5, 0x75, 0x37, 0x8a, 0xc7, - 0x50, 0x24, 0x77, 0xe5, 0x57, 0x30, 0x5f, 0x1b, - 0x60, 0x65, 0x66, 0x7a, 0x6c, 0x60, 0x75, 0xf4, - 0x7a, 0x1a, 0x7f, 0x6e, 0x81, 0xf4, 0x87, 0x18, - 0x90, 0x45, 0x99, 0xb3, 0x7b, 0xc9, 0x75, 0x5c, - 0x7a, 0xf9, 0x7b, 0x51, 0x84, 0xc4, 0x00, 0x20, - 0x90, 0x10, 0x79, 0xe9, 0x7a, 0x92, 0x83, 0x36, - 0x5a, 0xe1, 0x77, 0x40, 0x4e, 0x2d, 0x4e, 0xf2, - 0x5b, 0x99, 0x5f, 0xe0, 0x62, 0xbd, 0x66, 0x3c, - 0x67, 0xf1, 0x6c, 0xe8, 0x86, 0x6b, 0x88, 0x77, - 0x8a, 0x3b, 0x91, 0x4e, 0x92, 0xf3, 0x99, 0xd0, - 0x6a, 0x17, 0x70, 0x26, 0x73, 0x2a, 0x82, 0xe7, - 0x84, 0x57, 0x8c, 0xaf, 0x4e, 0x01, 0x51, 0x46, - 0x51, 0xcb, 0x55, 0x8b, 0x5b, 0xf5, 0x5e, 0x16, - 0x5e, 0x33, 0x5e, 0x81, 0x5f, 0x14, 0x5f, 0x35, - 0x5f, 0x6b, 0x5f, 0xb4, 0x61, 0xf2, 0x63, 0x11, - 0x66, 0xa2, 0x67, 0x1d, 0x6f, 0x6e, 0x72, 0x52, - 0x75, 0x3a, 0x77, 0x3a, 0x80, 0x74, 0x81, 0x39, - 0x81, 0x78, 0x87, 0x76, 0x8a, 0xbf, 0x8a, 0xdc, - 0x8d, 0x85, 0x8d, 0xf3, 0x92, 0x9a, 0x95, 0x77, - 0x98, 0x02, 0x9c, 0xe5, 0x52, 0xc5, 0x63, 0x57, - 0x76, 0xf4, 0x67, 0x15, 0x6c, 0x88, 0x73, 0xcd, - 0x8c, 0xc3, 0x93, 0xae, 0x96, 0x73, 0x6d, 0x25, - 0x58, 0x9c, 0x69, 0x0e, 0x69, 0xcc, 0x8f, 0xfd, - 0x93, 0x9a, 0x75, 0xdb, 0x90, 0x1a, 0x58, 0x5a, - 0x68, 0x02, 0x63, 0xb4, 0x69, 0xfb, 0x4f, 0x43, - 0x6f, 0x2c, 0x67, 0xd8, 0x8f, 0xbb, 0x85, 0x26, - 0x7d, 0xb4, 0x93, 0x54, 0x69, 0x3f, 0x6f, 0x70, - 0x57, 0x6a, 0x58, 0xf7, 0x5b, 0x2c, 0x7d, 0x2c, - 0x72, 0x2a, 0x54, 0x0a, 0x91, 0xe3, 0x9d, 0xb4, - 0x4e, 0xad, 0x4f, 0x4e, 0x50, 0x5c, 0x50, 0x75, - 0x52, 0x43, 0x8c, 0x9e, 0x54, 0x48, 0x58, 0x24, - 0x5b, 0x9a, 0x5e, 0x1d, 0x5e, 0x95, 0x5e, 0xad, - 0x5e, 0xf7, 0x5f, 0x1f, 0x60, 0x8c, 0x62, 0xb5, - 0x63, 0x3a, 0x63, 0xd0, 0x68, 0xaf, 0x6c, 0x40, - 0x78, 0x87, 0x79, 0x8e, 0x7a, 0x0b, 0x7d, 0xe0, - 0x82, 0x47, 0x8a, 0x02, 0x8a, 0xe6, 0x8e, 0x44, - 0x90, 0x13, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x90, 0xb8, 0x91, 0x2d, 0x91, 0xd8, 0x9f, 0x0e, - 0x6c, 0xe5, 0x64, 0x58, 0x64, 0xe2, 0x65, 0x75, - 0x6e, 0xf4, 0x76, 0x84, 0x7b, 0x1b, 0x90, 0x69, - 0x93, 0xd1, 0x6e, 0xba, 0x54, 0xf2, 0x5f, 0xb9, - 0x64, 0xa4, 0x8f, 0x4d, 0x8f, 0xed, 0x92, 0x44, - 0x51, 0x78, 0x58, 0x6b, 0x59, 0x29, 0x5c, 0x55, - 0x5e, 0x97, 0x6d, 0xfb, 0x7e, 0x8f, 0x75, 0x1c, - 0x8c, 0xbc, 0x8e, 0xe2, 0x98, 0x5b, 0x70, 0xb9, - 0x4f, 0x1d, 0x6b, 0xbf, 0x6f, 0xb1, 0x75, 0x30, - 0x96, 0xfb, 0x51, 0x4e, 0x54, 0x10, 0x58, 0x35, - 0x58, 0x57, 0x59, 0xac, 0x5c, 0x60, 0x5f, 0x92, - 0x65, 0x97, 0x67, 0x5c, 0x6e, 0x21, 0x76, 0x7b, - 0x83, 0xdf, 0x8c, 0xed, 0x90, 0x14, 0x90, 0xfd, - 0x93, 0x4d, 0x78, 0x25, 0x78, 0x3a, 0x52, 0xaa, - 0x5e, 0xa6, 0x57, 0x1f, 0x59, 0x74, 0x60, 0x12, - 0x50, 0x12, 0x51, 0x5a, 0x51, 0xac, 0x00, 0x20, - 0x51, 0xcd, 0x52, 0x00, 0x55, 0x10, 0x58, 0x54, - 0x58, 0x58, 0x59, 0x57, 0x5b, 0x95, 0x5c, 0xf6, - 0x5d, 0x8b, 0x60, 0xbc, 0x62, 0x95, 0x64, 0x2d, - 0x67, 0x71, 0x68, 0x43, 0x68, 0xbc, 0x68, 0xdf, - 0x76, 0xd7, 0x6d, 0xd8, 0x6e, 0x6f, 0x6d, 0x9b, - 0x70, 0x6f, 0x71, 0xc8, 0x5f, 0x53, 0x75, 0xd8, - 0x79, 0x77, 0x7b, 0x49, 0x7b, 0x54, 0x7b, 0x52, - 0x7c, 0xd6, 0x7d, 0x71, 0x52, 0x30, 0x84, 0x63, - 0x85, 0x69, 0x85, 0xe4, 0x8a, 0x0e, 0x8b, 0x04, - 0x8c, 0x46, 0x8e, 0x0f, 0x90, 0x03, 0x90, 0x0f, - 0x94, 0x19, 0x96, 0x76, 0x98, 0x2d, 0x9a, 0x30, - 0x95, 0xd8, 0x50, 0xcd, 0x52, 0xd5, 0x54, 0x0c, - 0x58, 0x02, 0x5c, 0x0e, 0x61, 0xa7, 0x64, 0x9e, - 0x6d, 0x1e, 0x77, 0xb3, 0x7a, 0xe5, 0x80, 0xf4, - 0x84, 0x04, 0x90, 0x53, 0x92, 0x85, 0x5c, 0xe0, - 0x9d, 0x07, 0x53, 0x3f, 0x5f, 0x97, 0x5f, 0xb3, - 0x6d, 0x9c, 0x72, 0x79, 0x77, 0x63, 0x79, 0xbf, - 0x7b, 0xe4, 0x6b, 0xd2, 0x72, 0xec, 0x8a, 0xad, - 0x68, 0x03, 0x6a, 0x61, 0x51, 0xf8, 0x7a, 0x81, - 0x69, 0x34, 0x5c, 0x4a, 0x9c, 0xf6, 0x82, 0xeb, - 0x5b, 0xc5, 0x91, 0x49, 0x70, 0x1e, 0x56, 0x78, - 0x5c, 0x6f, 0x60, 0xc7, 0x65, 0x66, 0x6c, 0x8c, - 0x8c, 0x5a, 0x90, 0x41, 0x98, 0x13, 0x54, 0x51, - 0x66, 0xc7, 0x92, 0x0d, 0x59, 0x48, 0x90, 0xa3, - 0x51, 0x85, 0x4e, 0x4d, 0x51, 0xea, 0x85, 0x99, - 0x8b, 0x0e, 0x70, 0x58, 0x63, 0x7a, 0x93, 0x4b, - 0x69, 0x62, 0x99, 0xb4, 0x7e, 0x04, 0x75, 0x77, - 0x53, 0x57, 0x69, 0x60, 0x8e, 0xdf, 0x96, 0xe3, - 0x6c, 0x5d, 0x4e, 0x8c, 0x5c, 0x3c, 0x5f, 0x10, - 0x8f, 0xe9, 0x53, 0x02, 0x8c, 0xd1, 0x80, 0x89, - 0x86, 0x79, 0x5e, 0xff, 0x65, 0xe5, 0x4e, 0x73, - 0x51, 0x65, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x59, 0x82, 0x5c, 0x3f, 0x97, 0xee, 0x4e, 0xfb, - 0x59, 0x8a, 0x5f, 0xcd, 0x8a, 0x8d, 0x6f, 0xe1, - 0x79, 0xb0, 0x79, 0x62, 0x5b, 0xe7, 0x84, 0x71, - 0x73, 0x2b, 0x71, 0xb1, 0x5e, 0x74, 0x5f, 0xf5, - 0x63, 0x7b, 0x64, 0x9a, 0x71, 0xc3, 0x7c, 0x98, - 0x4e, 0x43, 0x5e, 0xfc, 0x4e, 0x4b, 0x57, 0xdc, - 0x56, 0xa2, 0x60, 0xa9, 0x6f, 0xc3, 0x7d, 0x0d, - 0x80, 0xfd, 0x81, 0x33, 0x81, 0xbf, 0x8f, 0xb2, - 0x89, 0x97, 0x86, 0xa4, 0x5d, 0xf4, 0x62, 0x8a, - 0x64, 0xad, 0x89, 0x87, 0x67, 0x77, 0x6c, 0xe2, - 0x6d, 0x3e, 0x74, 0x36, 0x78, 0x34, 0x5a, 0x46, - 0x7f, 0x75, 0x82, 0xad, 0x99, 0xac, 0x4f, 0xf3, - 0x5e, 0xc3, 0x62, 0xdd, 0x63, 0x92, 0x65, 0x57, - 0x67, 0x6f, 0x76, 0xc3, 0x72, 0x4c, 0x80, 0xcc, - 0x80, 0xba, 0x8f, 0x29, 0x91, 0x4d, 0x50, 0x0d, - 0x57, 0xf9, 0x5a, 0x92, 0x68, 0x85, 0x00, 0x20, - 0x69, 0x73, 0x71, 0x64, 0x72, 0xfd, 0x8c, 0xb7, - 0x58, 0xf2, 0x8c, 0xe0, 0x96, 0x6a, 0x90, 0x19, - 0x87, 0x7f, 0x79, 0xe4, 0x77, 0xe7, 0x84, 0x29, - 0x4f, 0x2f, 0x52, 0x65, 0x53, 0x5a, 0x62, 0xcd, - 0x67, 0xcf, 0x6c, 0xca, 0x76, 0x7d, 0x7b, 0x94, - 0x7c, 0x95, 0x82, 0x36, 0x85, 0x84, 0x8f, 0xeb, - 0x66, 0xdd, 0x6f, 0x20, 0x72, 0x06, 0x7e, 0x1b, - 0x83, 0xab, 0x99, 0xc1, 0x9e, 0xa6, 0x51, 0xfd, - 0x7b, 0xb1, 0x78, 0x72, 0x7b, 0xb8, 0x80, 0x87, - 0x7b, 0x48, 0x6a, 0xe8, 0x5e, 0x61, 0x80, 0x8c, - 0x75, 0x51, 0x75, 0x60, 0x51, 0x6b, 0x92, 0x62, - 0x6e, 0x8c, 0x76, 0x7a, 0x91, 0x97, 0x9a, 0xea, - 0x4f, 0x10, 0x7f, 0x70, 0x62, 0x9c, 0x7b, 0x4f, - 0x95, 0xa5, 0x9c, 0xe9, 0x56, 0x7a, 0x58, 0x59, - 0x86, 0xe4, 0x96, 0xbc, 0x4f, 0x34, 0x52, 0x24, - 0x53, 0x4a, 0x53, 0xcd, 0x53, 0xdb, 0x5e, 0x06, - 0x64, 0x2c, 0x65, 0x91, 0x67, 0x7f, 0x6c, 0x3e, - 0x6c, 0x4e, 0x72, 0x48, 0x72, 0xaf, 0x73, 0xed, - 0x75, 0x54, 0x7e, 0x41, 0x82, 0x2c, 0x85, 0xe9, - 0x8c, 0xa9, 0x7b, 0xc4, 0x91, 0xc6, 0x71, 0x69, - 0x98, 0x12, 0x98, 0xef, 0x63, 0x3d, 0x66, 0x69, - 0x75, 0x6a, 0x76, 0xe4, 0x78, 0xd0, 0x85, 0x43, - 0x86, 0xee, 0x53, 0x2a, 0x53, 0x51, 0x54, 0x26, - 0x59, 0x83, 0x5e, 0x87, 0x5f, 0x7c, 0x60, 0xb2, - 0x62, 0x49, 0x62, 0x79, 0x62, 0xab, 0x65, 0x90, - 0x6b, 0xd4, 0x6c, 0xcc, 0x75, 0xb2, 0x76, 0xae, - 0x78, 0x91, 0x79, 0xd8, 0x7d, 0xcb, 0x7f, 0x77, - 0x80, 0xa5, 0x88, 0xab, 0x8a, 0xb9, 0x8c, 0xbb, - 0x90, 0x7f, 0x97, 0x5e, 0x98, 0xdb, 0x6a, 0x0b, - 0x7c, 0x38, 0x50, 0x99, 0x5c, 0x3e, 0x5f, 0xae, - 0x67, 0x87, 0x6b, 0xd8, 0x74, 0x35, 0x77, 0x09, - 0x7f, 0x8e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x9f, 0x3b, 0x67, 0xca, 0x7a, 0x17, 0x53, 0x39, - 0x75, 0x8b, 0x9a, 0xed, 0x5f, 0x66, 0x81, 0x9d, - 0x83, 0xf1, 0x80, 0x98, 0x5f, 0x3c, 0x5f, 0xc5, - 0x75, 0x62, 0x7b, 0x46, 0x90, 0x3c, 0x68, 0x67, - 0x59, 0xeb, 0x5a, 0x9b, 0x7d, 0x10, 0x76, 0x7e, - 0x8b, 0x2c, 0x4f, 0xf5, 0x5f, 0x6a, 0x6a, 0x19, - 0x6c, 0x37, 0x6f, 0x02, 0x74, 0xe2, 0x79, 0x68, - 0x88, 0x68, 0x8a, 0x55, 0x8c, 0x79, 0x5e, 0xdf, - 0x63, 0xcf, 0x75, 0xc5, 0x79, 0xd2, 0x82, 0xd7, - 0x93, 0x28, 0x92, 0xf2, 0x84, 0x9c, 0x86, 0xed, - 0x9c, 0x2d, 0x54, 0xc1, 0x5f, 0x6c, 0x65, 0x8c, - 0x6d, 0x5c, 0x70, 0x15, 0x8c, 0xa7, 0x8c, 0xd3, - 0x98, 0x3b, 0x65, 0x4f, 0x74, 0xf6, 0x4e, 0x0d, - 0x4e, 0xd8, 0x57, 0xe0, 0x59, 0x2b, 0x5a, 0x66, - 0x5b, 0xcc, 0x51, 0xa8, 0x5e, 0x03, 0x5e, 0x9c, - 0x60, 0x16, 0x62, 0x76, 0x65, 0x77, 0x00, 0x20, - 0x65, 0xa7, 0x66, 0x6e, 0x6d, 0x6e, 0x72, 0x36, - 0x7b, 0x26, 0x81, 0x50, 0x81, 0x9a, 0x82, 0x99, - 0x8b, 0x5c, 0x8c, 0xa0, 0x8c, 0xe6, 0x8d, 0x74, - 0x96, 0x1c, 0x96, 0x44, 0x4f, 0xae, 0x64, 0xab, - 0x6b, 0x66, 0x82, 0x1e, 0x84, 0x61, 0x85, 0x6a, - 0x90, 0xe8, 0x5c, 0x01, 0x69, 0x53, 0x98, 0xa8, - 0x84, 0x7a, 0x85, 0x57, 0x4f, 0x0f, 0x52, 0x6f, - 0x5f, 0xa9, 0x5e, 0x45, 0x67, 0x0d, 0x79, 0x8f, - 0x81, 0x79, 0x89, 0x07, 0x89, 0x86, 0x6d, 0xf5, - 0x5f, 0x17, 0x62, 0x55, 0x6c, 0xb8, 0x4e, 0xcf, - 0x72, 0x69, 0x9b, 0x92, 0x52, 0x06, 0x54, 0x3b, - 0x56, 0x74, 0x58, 0xb3, 0x61, 0xa4, 0x62, 0x6e, - 0x71, 0x1a, 0x59, 0x6e, 0x7c, 0x89, 0x7c, 0xde, - 0x7d, 0x1b, 0x96, 0xf0, 0x65, 0x87, 0x80, 0x5e, - 0x4e, 0x19, 0x4f, 0x75, 0x51, 0x75, 0x58, 0x40, - 0x5e, 0x63, 0x5e, 0x73, 0x5f, 0x0a, 0x67, 0xc4, - 0x4e, 0x26, 0x85, 0x3d, 0x95, 0x89, 0x96, 0x5b, - 0x7c, 0x73, 0x98, 0x01, 0x50, 0xfb, 0x58, 0xc1, - 0x76, 0x56, 0x78, 0xa7, 0x52, 0x25, 0x77, 0xa5, - 0x85, 0x11, 0x7b, 0x86, 0x50, 0x4f, 0x59, 0x09, - 0x72, 0x47, 0x7b, 0xc7, 0x7d, 0xe8, 0x8f, 0xba, - 0x8f, 0xd4, 0x90, 0x4d, 0x4f, 0xbf, 0x52, 0xc9, - 0x5a, 0x29, 0x5f, 0x01, 0x97, 0xad, 0x4f, 0xdd, - 0x82, 0x17, 0x92, 0xea, 0x57, 0x03, 0x63, 0x55, - 0x6b, 0x69, 0x75, 0x2b, 0x88, 0xdc, 0x8f, 0x14, - 0x7a, 0x42, 0x52, 0xdf, 0x58, 0x93, 0x61, 0x55, - 0x62, 0x0a, 0x66, 0xae, 0x6b, 0xcd, 0x7c, 0x3f, - 0x83, 0xe9, 0x50, 0x23, 0x4f, 0xf8, 0x53, 0x05, - 0x54, 0x46, 0x58, 0x31, 0x59, 0x49, 0x5b, 0x9d, - 0x5c, 0xf0, 0x5c, 0xef, 0x5d, 0x29, 0x5e, 0x96, - 0x62, 0xb1, 0x63, 0x67, 0x65, 0x3e, 0x65, 0xb9, - 0x67, 0x0b, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x6c, 0xd5, 0x6c, 0xe1, 0x70, 0xf9, 0x78, 0x32, - 0x7e, 0x2b, 0x80, 0xde, 0x82, 0xb3, 0x84, 0x0c, - 0x84, 0xec, 0x87, 0x02, 0x89, 0x12, 0x8a, 0x2a, - 0x8c, 0x4a, 0x90, 0xa6, 0x92, 0xd2, 0x98, 0xfd, - 0x9c, 0xf3, 0x9d, 0x6c, 0x4e, 0x4f, 0x4e, 0xa1, - 0x50, 0x8d, 0x52, 0x56, 0x57, 0x4a, 0x59, 0xa8, - 0x5e, 0x3d, 0x5f, 0xd8, 0x5f, 0xd9, 0x62, 0x3f, - 0x66, 0xb4, 0x67, 0x1b, 0x67, 0xd0, 0x68, 0xd2, - 0x51, 0x92, 0x7d, 0x21, 0x80, 0xaa, 0x81, 0xa8, - 0x8b, 0x00, 0x8c, 0x8c, 0x8c, 0xbf, 0x92, 0x7e, - 0x96, 0x32, 0x54, 0x20, 0x98, 0x2c, 0x53, 0x17, - 0x50, 0xd5, 0x53, 0x5c, 0x58, 0xa8, 0x64, 0xb2, - 0x67, 0x34, 0x72, 0x67, 0x77, 0x66, 0x7a, 0x46, - 0x91, 0xe6, 0x52, 0xc3, 0x6c, 0xa1, 0x6b, 0x86, - 0x58, 0x00, 0x5e, 0x4c, 0x59, 0x54, 0x67, 0x2c, - 0x7f, 0xfb, 0x51, 0xe1, 0x76, 0xc6, 0x00, 0x20, - 0x64, 0x69, 0x78, 0xe8, 0x9b, 0x54, 0x9e, 0xbb, - 0x57, 0xcb, 0x59, 0xb9, 0x66, 0x27, 0x67, 0x9a, - 0x6b, 0xce, 0x54, 0xe9, 0x69, 0xd9, 0x5e, 0x55, - 0x81, 0x9c, 0x67, 0x95, 0x9b, 0xaa, 0x67, 0xfe, - 0x9c, 0x52, 0x68, 0x5d, 0x4e, 0xa6, 0x4f, 0xe3, - 0x53, 0xc8, 0x62, 0xb9, 0x67, 0x2b, 0x6c, 0xab, - 0x8f, 0xc4, 0x4f, 0xad, 0x7e, 0x6d, 0x9e, 0xbf, - 0x4e, 0x07, 0x61, 0x62, 0x6e, 0x80, 0x6f, 0x2b, - 0x85, 0x13, 0x54, 0x73, 0x67, 0x2a, 0x9b, 0x45, - 0x5d, 0xf3, 0x7b, 0x95, 0x5c, 0xac, 0x5b, 0xc6, - 0x87, 0x1c, 0x6e, 0x4a, 0x84, 0xd1, 0x7a, 0x14, - 0x81, 0x08, 0x59, 0x99, 0x7c, 0x8d, 0x6c, 0x11, - 0x77, 0x20, 0x52, 0xd9, 0x59, 0x22, 0x71, 0x21, - 0x72, 0x5f, 0x77, 0xdb, 0x97, 0x27, 0x9d, 0x61, - 0x69, 0x0b, 0x5a, 0x7f, 0x5a, 0x18, 0x51, 0xa5, - 0x54, 0x0d, 0x54, 0x7d, 0x66, 0x0e, 0x76, 0xdf, - 0x8f, 0xf7, 0x92, 0x98, 0x9c, 0xf4, 0x59, 0xea, - 0x72, 0x5d, 0x6e, 0xc5, 0x51, 0x4d, 0x68, 0xc9, - 0x7d, 0xbf, 0x7d, 0xec, 0x97, 0x62, 0x9e, 0xba, - 0x64, 0x78, 0x6a, 0x21, 0x83, 0x02, 0x59, 0x84, - 0x5b, 0x5f, 0x6b, 0xdb, 0x73, 0x1b, 0x76, 0xf2, - 0x7d, 0xb2, 0x80, 0x17, 0x84, 0x99, 0x51, 0x32, - 0x67, 0x28, 0x9e, 0xd9, 0x76, 0xee, 0x67, 0x62, - 0x52, 0xff, 0x99, 0x05, 0x5c, 0x24, 0x62, 0x3b, - 0x7c, 0x7e, 0x8c, 0xb0, 0x55, 0x4f, 0x60, 0xb6, - 0x7d, 0x0b, 0x95, 0x80, 0x53, 0x01, 0x4e, 0x5f, - 0x51, 0xb6, 0x59, 0x1c, 0x72, 0x3a, 0x80, 0x36, - 0x91, 0xce, 0x5f, 0x25, 0x77, 0xe2, 0x53, 0x84, - 0x5f, 0x79, 0x7d, 0x04, 0x85, 0xac, 0x8a, 0x33, - 0x8e, 0x8d, 0x97, 0x56, 0x67, 0xf3, 0x85, 0xae, - 0x94, 0x53, 0x61, 0x09, 0x61, 0x08, 0x6c, 0xb9, - 0x76, 0x52, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x8a, 0xed, 0x8f, 0x38, 0x55, 0x2f, 0x4f, 0x51, - 0x51, 0x2a, 0x52, 0xc7, 0x53, 0xcb, 0x5b, 0xa5, - 0x5e, 0x7d, 0x60, 0xa0, 0x61, 0x82, 0x63, 0xd6, - 0x67, 0x09, 0x67, 0xda, 0x6e, 0x67, 0x6d, 0x8c, - 0x73, 0x36, 0x73, 0x37, 0x75, 0x31, 0x79, 0x50, - 0x88, 0xd5, 0x8a, 0x98, 0x90, 0x4a, 0x90, 0x91, - 0x90, 0xf5, 0x96, 0xc4, 0x87, 0x8d, 0x59, 0x15, - 0x4e, 0x88, 0x4f, 0x59, 0x4e, 0x0e, 0x8a, 0x89, - 0x8f, 0x3f, 0x98, 0x10, 0x50, 0xad, 0x5e, 0x7c, - 0x59, 0x96, 0x5b, 0xb9, 0x5e, 0xb8, 0x63, 0xda, - 0x63, 0xfa, 0x64, 0xc1, 0x66, 0xdc, 0x69, 0x4a, - 0x69, 0xd8, 0x6d, 0x0b, 0x6e, 0xb6, 0x71, 0x94, - 0x75, 0x28, 0x7a, 0xaf, 0x7f, 0x8a, 0x80, 0x00, - 0x84, 0x49, 0x84, 0xc9, 0x89, 0x81, 0x8b, 0x21, - 0x8e, 0x0a, 0x90, 0x65, 0x96, 0x7d, 0x99, 0x0a, - 0x61, 0x7e, 0x62, 0x91, 0x6b, 0x32, 0x00, 0x20, - 0x6c, 0x83, 0x6d, 0x74, 0x7f, 0xcc, 0x7f, 0xfc, - 0x6d, 0xc0, 0x7f, 0x85, 0x87, 0xba, 0x88, 0xf8, - 0x67, 0x65, 0x83, 0xb1, 0x98, 0x3c, 0x96, 0xf7, - 0x6d, 0x1b, 0x7d, 0x61, 0x84, 0x3d, 0x91, 0x6a, - 0x4e, 0x71, 0x53, 0x75, 0x5d, 0x50, 0x6b, 0x04, - 0x6f, 0xeb, 0x85, 0xcd, 0x86, 0x2d, 0x89, 0xa7, - 0x52, 0x29, 0x54, 0x0f, 0x5c, 0x65, 0x67, 0x4e, - 0x68, 0xa8, 0x74, 0x06, 0x74, 0x83, 0x75, 0xe2, - 0x88, 0xcf, 0x88, 0xe1, 0x91, 0xcc, 0x96, 0xe2, - 0x96, 0x78, 0x5f, 0x8b, 0x73, 0x87, 0x7a, 0xcb, - 0x84, 0x4e, 0x63, 0xa0, 0x75, 0x65, 0x52, 0x89, - 0x6d, 0x41, 0x6e, 0x9c, 0x74, 0x09, 0x75, 0x59, - 0x78, 0x6b, 0x7c, 0x92, 0x96, 0x86, 0x7a, 0xdc, - 0x9f, 0x8d, 0x4f, 0xb6, 0x61, 0x6e, 0x65, 0xc5, - 0x86, 0x5c, 0x4e, 0x86, 0x4e, 0xae, 0x50, 0xda, - 0x4e, 0x21, 0x51, 0xcc, 0x5b, 0xee, 0x65, 0x99, - 0x68, 0x81, 0x6d, 0xbc, 0x73, 0x1f, 0x76, 0x42, - 0x77, 0xad, 0x7a, 0x1c, 0x7c, 0xe7, 0x82, 0x6f, - 0x8a, 0xd2, 0x90, 0x7c, 0x91, 0xcf, 0x96, 0x75, - 0x98, 0x18, 0x52, 0x9b, 0x7d, 0xd1, 0x50, 0x2b, - 0x53, 0x98, 0x67, 0x97, 0x6d, 0xcb, 0x71, 0xd0, - 0x74, 0x33, 0x81, 0xe8, 0x8f, 0x2a, 0x96, 0xa3, - 0x9c, 0x57, 0x9e, 0x9f, 0x74, 0x60, 0x58, 0x41, - 0x6d, 0x99, 0x7d, 0x2f, 0x98, 0x5e, 0x4e, 0xe4, - 0x4f, 0x36, 0x4f, 0x8b, 0x51, 0xb7, 0x52, 0xb1, - 0x5d, 0xba, 0x60, 0x1c, 0x73, 0xb2, 0x79, 0x3c, - 0x82, 0xd3, 0x92, 0x34, 0x96, 0xb7, 0x96, 0xf6, - 0x97, 0x0a, 0x9e, 0x97, 0x9f, 0x62, 0x66, 0xa6, - 0x6b, 0x74, 0x52, 0x17, 0x52, 0xa3, 0x70, 0xc8, - 0x88, 0xc2, 0x5e, 0xc9, 0x60, 0x4b, 0x61, 0x90, - 0x6f, 0x23, 0x71, 0x49, 0x7c, 0x3e, 0x7d, 0xf4, - 0x80, 0x6f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x84, 0xee, 0x90, 0x23, 0x93, 0x2c, 0x54, 0x42, - 0x9b, 0x6f, 0x6a, 0xd3, 0x70, 0x89, 0x8c, 0xc2, - 0x8d, 0xef, 0x97, 0x32, 0x52, 0xb4, 0x5a, 0x41, - 0x5e, 0xca, 0x5f, 0x04, 0x67, 0x17, 0x69, 0x7c, - 0x69, 0x94, 0x6d, 0x6a, 0x6f, 0x0f, 0x72, 0x62, - 0x72, 0xfc, 0x7b, 0xed, 0x80, 0x01, 0x80, 0x7e, - 0x87, 0x4b, 0x90, 0xce, 0x51, 0x6d, 0x9e, 0x93, - 0x79, 0x84, 0x80, 0x8b, 0x93, 0x32, 0x8a, 0xd6, - 0x50, 0x2d, 0x54, 0x8c, 0x8a, 0x71, 0x6b, 0x6a, - 0x8c, 0xc4, 0x81, 0x07, 0x60, 0xd1, 0x67, 0xa0, - 0x9d, 0xf2, 0x4e, 0x99, 0x4e, 0x98, 0x9c, 0x10, - 0x8a, 0x6b, 0x85, 0xc1, 0x85, 0x68, 0x69, 0x00, - 0x6e, 0x7e, 0x78, 0x97, 0x81, 0x55, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x5f, 0x0c, - 0x4e, 0x10, 0x4e, 0x15, 0x4e, 0x2a, 0x4e, 0x31, - 0x4e, 0x36, 0x4e, 0x3c, 0x4e, 0x3f, 0x4e, 0x42, - 0x4e, 0x56, 0x4e, 0x58, 0x4e, 0x82, 0x4e, 0x85, - 0x8c, 0x6b, 0x4e, 0x8a, 0x82, 0x12, 0x5f, 0x0d, - 0x4e, 0x8e, 0x4e, 0x9e, 0x4e, 0x9f, 0x4e, 0xa0, - 0x4e, 0xa2, 0x4e, 0xb0, 0x4e, 0xb3, 0x4e, 0xb6, - 0x4e, 0xce, 0x4e, 0xcd, 0x4e, 0xc4, 0x4e, 0xc6, - 0x4e, 0xc2, 0x4e, 0xd7, 0x4e, 0xde, 0x4e, 0xed, - 0x4e, 0xdf, 0x4e, 0xf7, 0x4f, 0x09, 0x4f, 0x5a, - 0x4f, 0x30, 0x4f, 0x5b, 0x4f, 0x5d, 0x4f, 0x57, - 0x4f, 0x47, 0x4f, 0x76, 0x4f, 0x88, 0x4f, 0x8f, - 0x4f, 0x98, 0x4f, 0x7b, 0x4f, 0x69, 0x4f, 0x70, - 0x4f, 0x91, 0x4f, 0x6f, 0x4f, 0x86, 0x4f, 0x96, - 0x51, 0x18, 0x4f, 0xd4, 0x4f, 0xdf, 0x4f, 0xce, - 0x4f, 0xd8, 0x4f, 0xdb, 0x4f, 0xd1, 0x4f, 0xda, - 0x4f, 0xd0, 0x4f, 0xe4, 0x4f, 0xe5, 0x50, 0x1a, - 0x50, 0x28, 0x50, 0x14, 0x50, 0x2a, 0x50, 0x25, - 0x50, 0x05, 0x4f, 0x1c, 0x4f, 0xf6, 0x50, 0x21, - 0x50, 0x29, 0x50, 0x2c, 0x4f, 0xfe, 0x4f, 0xef, - 0x50, 0x11, 0x50, 0x06, 0x50, 0x43, 0x50, 0x47, - 0x67, 0x03, 0x50, 0x55, 0x50, 0x50, 0x50, 0x48, - 0x50, 0x5a, 0x50, 0x56, 0x50, 0x6c, 0x50, 0x78, - 0x50, 0x80, 0x50, 0x9a, 0x50, 0x85, 0x50, 0xb4, - 0x50, 0xb2, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x50, 0xc9, 0x50, 0xca, 0x50, 0xb3, 0x50, 0xc2, - 0x50, 0xd6, 0x50, 0xde, 0x50, 0xe5, 0x50, 0xed, - 0x50, 0xe3, 0x50, 0xee, 0x50, 0xf9, 0x50, 0xf5, - 0x51, 0x09, 0x51, 0x01, 0x51, 0x02, 0x51, 0x16, - 0x51, 0x15, 0x51, 0x14, 0x51, 0x1a, 0x51, 0x21, - 0x51, 0x3a, 0x51, 0x37, 0x51, 0x3c, 0x51, 0x3b, - 0x51, 0x3f, 0x51, 0x40, 0x51, 0x52, 0x51, 0x4c, - 0x51, 0x54, 0x51, 0x62, 0x7a, 0xf8, 0x51, 0x69, - 0x51, 0x6a, 0x51, 0x6e, 0x51, 0x80, 0x51, 0x82, - 0x56, 0xd8, 0x51, 0x8c, 0x51, 0x89, 0x51, 0x8f, - 0x51, 0x91, 0x51, 0x93, 0x51, 0x95, 0x51, 0x96, - 0x51, 0xa4, 0x51, 0xa6, 0x51, 0xa2, 0x51, 0xa9, - 0x51, 0xaa, 0x51, 0xab, 0x51, 0xb3, 0x51, 0xb1, - 0x51, 0xb2, 0x51, 0xb0, 0x51, 0xb5, 0x51, 0xbd, - 0x51, 0xc5, 0x51, 0xc9, 0x51, 0xdb, 0x51, 0xe0, - 0x86, 0x55, 0x51, 0xe9, 0x51, 0xed, 0x00, 0x20, - 0x51, 0xf0, 0x51, 0xf5, 0x51, 0xfe, 0x52, 0x04, - 0x52, 0x0b, 0x52, 0x14, 0x52, 0x0e, 0x52, 0x27, - 0x52, 0x2a, 0x52, 0x2e, 0x52, 0x33, 0x52, 0x39, - 0x52, 0x4f, 0x52, 0x44, 0x52, 0x4b, 0x52, 0x4c, - 0x52, 0x5e, 0x52, 0x54, 0x52, 0x6a, 0x52, 0x74, - 0x52, 0x69, 0x52, 0x73, 0x52, 0x7f, 0x52, 0x7d, - 0x52, 0x8d, 0x52, 0x94, 0x52, 0x92, 0x52, 0x71, - 0x52, 0x88, 0x52, 0x91, 0x8f, 0xa8, 0x8f, 0xa7, - 0x52, 0xac, 0x52, 0xad, 0x52, 0xbc, 0x52, 0xb5, - 0x52, 0xc1, 0x52, 0xcd, 0x52, 0xd7, 0x52, 0xde, - 0x52, 0xe3, 0x52, 0xe6, 0x98, 0xed, 0x52, 0xe0, - 0x52, 0xf3, 0x52, 0xf5, 0x52, 0xf8, 0x52, 0xf9, - 0x53, 0x06, 0x53, 0x08, 0x75, 0x38, 0x53, 0x0d, - 0x53, 0x10, 0x53, 0x0f, 0x53, 0x15, 0x53, 0x1a, - 0x53, 0x23, 0x53, 0x2f, 0x53, 0x31, 0x53, 0x33, - 0x53, 0x38, 0x53, 0x40, 0x53, 0x46, 0x53, 0x45, - 0x4e, 0x17, 0x53, 0x49, 0x53, 0x4d, 0x51, 0xd6, - 0x53, 0x5e, 0x53, 0x69, 0x53, 0x6e, 0x59, 0x18, - 0x53, 0x7b, 0x53, 0x77, 0x53, 0x82, 0x53, 0x96, - 0x53, 0xa0, 0x53, 0xa6, 0x53, 0xa5, 0x53, 0xae, - 0x53, 0xb0, 0x53, 0xb6, 0x53, 0xc3, 0x7c, 0x12, - 0x96, 0xd9, 0x53, 0xdf, 0x66, 0xfc, 0x71, 0xee, - 0x53, 0xee, 0x53, 0xe8, 0x53, 0xed, 0x53, 0xfa, - 0x54, 0x01, 0x54, 0x3d, 0x54, 0x40, 0x54, 0x2c, - 0x54, 0x2d, 0x54, 0x3c, 0x54, 0x2e, 0x54, 0x36, - 0x54, 0x29, 0x54, 0x1d, 0x54, 0x4e, 0x54, 0x8f, - 0x54, 0x75, 0x54, 0x8e, 0x54, 0x5f, 0x54, 0x71, - 0x54, 0x77, 0x54, 0x70, 0x54, 0x92, 0x54, 0x7b, - 0x54, 0x80, 0x54, 0x76, 0x54, 0x84, 0x54, 0x90, - 0x54, 0x86, 0x54, 0xc7, 0x54, 0xa2, 0x54, 0xb8, - 0x54, 0xa5, 0x54, 0xac, 0x54, 0xc4, 0x54, 0xc8, - 0x54, 0xa8, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x54, 0xab, 0x54, 0xc2, 0x54, 0xa4, 0x54, 0xbe, - 0x54, 0xbc, 0x54, 0xd8, 0x54, 0xe5, 0x54, 0xe6, - 0x55, 0x0f, 0x55, 0x14, 0x54, 0xfd, 0x54, 0xee, - 0x54, 0xed, 0x54, 0xfa, 0x54, 0xe2, 0x55, 0x39, - 0x55, 0x40, 0x55, 0x63, 0x55, 0x4c, 0x55, 0x2e, - 0x55, 0x5c, 0x55, 0x45, 0x55, 0x56, 0x55, 0x57, - 0x55, 0x38, 0x55, 0x33, 0x55, 0x5d, 0x55, 0x99, - 0x55, 0x80, 0x54, 0xaf, 0x55, 0x8a, 0x55, 0x9f, - 0x55, 0x7b, 0x55, 0x7e, 0x55, 0x98, 0x55, 0x9e, - 0x55, 0xae, 0x55, 0x7c, 0x55, 0x83, 0x55, 0xa9, - 0x55, 0x87, 0x55, 0xa8, 0x55, 0xda, 0x55, 0xc5, - 0x55, 0xdf, 0x55, 0xc4, 0x55, 0xdc, 0x55, 0xe4, - 0x55, 0xd4, 0x56, 0x14, 0x55, 0xf7, 0x56, 0x16, - 0x55, 0xfe, 0x55, 0xfd, 0x56, 0x1b, 0x55, 0xf9, - 0x56, 0x4e, 0x56, 0x50, 0x71, 0xdf, 0x56, 0x34, - 0x56, 0x36, 0x56, 0x32, 0x56, 0x38, 0x00, 0x20, - 0x56, 0x6b, 0x56, 0x64, 0x56, 0x2f, 0x56, 0x6c, - 0x56, 0x6a, 0x56, 0x86, 0x56, 0x80, 0x56, 0x8a, - 0x56, 0xa0, 0x56, 0x94, 0x56, 0x8f, 0x56, 0xa5, - 0x56, 0xae, 0x56, 0xb6, 0x56, 0xb4, 0x56, 0xc2, - 0x56, 0xbc, 0x56, 0xc1, 0x56, 0xc3, 0x56, 0xc0, - 0x56, 0xc8, 0x56, 0xce, 0x56, 0xd1, 0x56, 0xd3, - 0x56, 0xd7, 0x56, 0xee, 0x56, 0xf9, 0x57, 0x00, - 0x56, 0xff, 0x57, 0x04, 0x57, 0x09, 0x57, 0x08, - 0x57, 0x0b, 0x57, 0x0d, 0x57, 0x13, 0x57, 0x18, - 0x57, 0x16, 0x55, 0xc7, 0x57, 0x1c, 0x57, 0x26, - 0x57, 0x37, 0x57, 0x38, 0x57, 0x4e, 0x57, 0x3b, - 0x57, 0x40, 0x57, 0x4f, 0x57, 0x69, 0x57, 0xc0, - 0x57, 0x88, 0x57, 0x61, 0x57, 0x7f, 0x57, 0x89, - 0x57, 0x93, 0x57, 0xa0, 0x57, 0xb3, 0x57, 0xa4, - 0x57, 0xaa, 0x57, 0xb0, 0x57, 0xc3, 0x57, 0xc6, - 0x57, 0xd4, 0x57, 0xd2, 0x57, 0xd3, 0x58, 0x0a, - 0x57, 0xd6, 0x57, 0xe3, 0x58, 0x0b, 0x58, 0x19, - 0x58, 0x1d, 0x58, 0x72, 0x58, 0x21, 0x58, 0x62, - 0x58, 0x4b, 0x58, 0x70, 0x6b, 0xc0, 0x58, 0x52, - 0x58, 0x3d, 0x58, 0x79, 0x58, 0x85, 0x58, 0xb9, - 0x58, 0x9f, 0x58, 0xab, 0x58, 0xba, 0x58, 0xde, - 0x58, 0xbb, 0x58, 0xb8, 0x58, 0xae, 0x58, 0xc5, - 0x58, 0xd3, 0x58, 0xd1, 0x58, 0xd7, 0x58, 0xd9, - 0x58, 0xd8, 0x58, 0xe5, 0x58, 0xdc, 0x58, 0xe4, - 0x58, 0xdf, 0x58, 0xef, 0x58, 0xfa, 0x58, 0xf9, - 0x58, 0xfb, 0x58, 0xfc, 0x58, 0xfd, 0x59, 0x02, - 0x59, 0x0a, 0x59, 0x10, 0x59, 0x1b, 0x68, 0xa6, - 0x59, 0x25, 0x59, 0x2c, 0x59, 0x2d, 0x59, 0x32, - 0x59, 0x38, 0x59, 0x3e, 0x7a, 0xd2, 0x59, 0x55, - 0x59, 0x50, 0x59, 0x4e, 0x59, 0x5a, 0x59, 0x58, - 0x59, 0x62, 0x59, 0x60, 0x59, 0x67, 0x59, 0x6c, - 0x59, 0x69, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x59, 0x78, 0x59, 0x81, 0x59, 0x9d, 0x4f, 0x5e, - 0x4f, 0xab, 0x59, 0xa3, 0x59, 0xb2, 0x59, 0xc6, - 0x59, 0xe8, 0x59, 0xdc, 0x59, 0x8d, 0x59, 0xd9, - 0x59, 0xda, 0x5a, 0x25, 0x5a, 0x1f, 0x5a, 0x11, - 0x5a, 0x1c, 0x5a, 0x09, 0x5a, 0x1a, 0x5a, 0x40, - 0x5a, 0x6c, 0x5a, 0x49, 0x5a, 0x35, 0x5a, 0x36, - 0x5a, 0x62, 0x5a, 0x6a, 0x5a, 0x9a, 0x5a, 0xbc, - 0x5a, 0xbe, 0x5a, 0xcb, 0x5a, 0xc2, 0x5a, 0xbd, - 0x5a, 0xe3, 0x5a, 0xd7, 0x5a, 0xe6, 0x5a, 0xe9, - 0x5a, 0xd6, 0x5a, 0xfa, 0x5a, 0xfb, 0x5b, 0x0c, - 0x5b, 0x0b, 0x5b, 0x16, 0x5b, 0x32, 0x5a, 0xd0, - 0x5b, 0x2a, 0x5b, 0x36, 0x5b, 0x3e, 0x5b, 0x43, - 0x5b, 0x45, 0x5b, 0x40, 0x5b, 0x51, 0x5b, 0x55, - 0x5b, 0x5a, 0x5b, 0x5b, 0x5b, 0x65, 0x5b, 0x69, - 0x5b, 0x70, 0x5b, 0x73, 0x5b, 0x75, 0x5b, 0x78, - 0x65, 0x88, 0x5b, 0x7a, 0x5b, 0x80, 0x00, 0x20, - 0x5b, 0x83, 0x5b, 0xa6, 0x5b, 0xb8, 0x5b, 0xc3, - 0x5b, 0xc7, 0x5b, 0xc9, 0x5b, 0xd4, 0x5b, 0xd0, - 0x5b, 0xe4, 0x5b, 0xe6, 0x5b, 0xe2, 0x5b, 0xde, - 0x5b, 0xe5, 0x5b, 0xeb, 0x5b, 0xf0, 0x5b, 0xf6, - 0x5b, 0xf3, 0x5c, 0x05, 0x5c, 0x07, 0x5c, 0x08, - 0x5c, 0x0d, 0x5c, 0x13, 0x5c, 0x20, 0x5c, 0x22, - 0x5c, 0x28, 0x5c, 0x38, 0x5c, 0x39, 0x5c, 0x41, - 0x5c, 0x46, 0x5c, 0x4e, 0x5c, 0x53, 0x5c, 0x50, - 0x5c, 0x4f, 0x5b, 0x71, 0x5c, 0x6c, 0x5c, 0x6e, - 0x4e, 0x62, 0x5c, 0x76, 0x5c, 0x79, 0x5c, 0x8c, - 0x5c, 0x91, 0x5c, 0x94, 0x59, 0x9b, 0x5c, 0xab, - 0x5c, 0xbb, 0x5c, 0xb6, 0x5c, 0xbc, 0x5c, 0xb7, - 0x5c, 0xc5, 0x5c, 0xbe, 0x5c, 0xc7, 0x5c, 0xd9, - 0x5c, 0xe9, 0x5c, 0xfd, 0x5c, 0xfa, 0x5c, 0xed, - 0x5d, 0x8c, 0x5c, 0xea, 0x5d, 0x0b, 0x5d, 0x15, - 0x5d, 0x17, 0x5d, 0x5c, 0x5d, 0x1f, 0x5d, 0x1b, - 0x5d, 0x11, 0x5d, 0x14, 0x5d, 0x22, 0x5d, 0x1a, - 0x5d, 0x19, 0x5d, 0x18, 0x5d, 0x4c, 0x5d, 0x52, - 0x5d, 0x4e, 0x5d, 0x4b, 0x5d, 0x6c, 0x5d, 0x73, - 0x5d, 0x76, 0x5d, 0x87, 0x5d, 0x84, 0x5d, 0x82, - 0x5d, 0xa2, 0x5d, 0x9d, 0x5d, 0xac, 0x5d, 0xae, - 0x5d, 0xbd, 0x5d, 0x90, 0x5d, 0xb7, 0x5d, 0xbc, - 0x5d, 0xc9, 0x5d, 0xcd, 0x5d, 0xd3, 0x5d, 0xd2, - 0x5d, 0xd6, 0x5d, 0xdb, 0x5d, 0xeb, 0x5d, 0xf2, - 0x5d, 0xf5, 0x5e, 0x0b, 0x5e, 0x1a, 0x5e, 0x19, - 0x5e, 0x11, 0x5e, 0x1b, 0x5e, 0x36, 0x5e, 0x37, - 0x5e, 0x44, 0x5e, 0x43, 0x5e, 0x40, 0x5e, 0x4e, - 0x5e, 0x57, 0x5e, 0x54, 0x5e, 0x5f, 0x5e, 0x62, - 0x5e, 0x64, 0x5e, 0x47, 0x5e, 0x75, 0x5e, 0x76, - 0x5e, 0x7a, 0x9e, 0xbc, 0x5e, 0x7f, 0x5e, 0xa0, - 0x5e, 0xc1, 0x5e, 0xc2, 0x5e, 0xc8, 0x5e, 0xd0, - 0x5e, 0xcf, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x5e, 0xd6, 0x5e, 0xe3, 0x5e, 0xdd, 0x5e, 0xda, - 0x5e, 0xdb, 0x5e, 0xe2, 0x5e, 0xe1, 0x5e, 0xe8, - 0x5e, 0xe9, 0x5e, 0xec, 0x5e, 0xf1, 0x5e, 0xf3, - 0x5e, 0xf0, 0x5e, 0xf4, 0x5e, 0xf8, 0x5e, 0xfe, - 0x5f, 0x03, 0x5f, 0x09, 0x5f, 0x5d, 0x5f, 0x5c, - 0x5f, 0x0b, 0x5f, 0x11, 0x5f, 0x16, 0x5f, 0x29, - 0x5f, 0x2d, 0x5f, 0x38, 0x5f, 0x41, 0x5f, 0x48, - 0x5f, 0x4c, 0x5f, 0x4e, 0x5f, 0x2f, 0x5f, 0x51, - 0x5f, 0x56, 0x5f, 0x57, 0x5f, 0x59, 0x5f, 0x61, - 0x5f, 0x6d, 0x5f, 0x73, 0x5f, 0x77, 0x5f, 0x83, - 0x5f, 0x82, 0x5f, 0x7f, 0x5f, 0x8a, 0x5f, 0x88, - 0x5f, 0x91, 0x5f, 0x87, 0x5f, 0x9e, 0x5f, 0x99, - 0x5f, 0x98, 0x5f, 0xa0, 0x5f, 0xa8, 0x5f, 0xad, - 0x5f, 0xbc, 0x5f, 0xd6, 0x5f, 0xfb, 0x5f, 0xe4, - 0x5f, 0xf8, 0x5f, 0xf1, 0x5f, 0xdd, 0x60, 0xb3, - 0x5f, 0xff, 0x60, 0x21, 0x60, 0x60, 0x00, 0x20, - 0x60, 0x19, 0x60, 0x10, 0x60, 0x29, 0x60, 0x0e, - 0x60, 0x31, 0x60, 0x1b, 0x60, 0x15, 0x60, 0x2b, - 0x60, 0x26, 0x60, 0x0f, 0x60, 0x3a, 0x60, 0x5a, - 0x60, 0x41, 0x60, 0x6a, 0x60, 0x77, 0x60, 0x5f, - 0x60, 0x4a, 0x60, 0x46, 0x60, 0x4d, 0x60, 0x63, - 0x60, 0x43, 0x60, 0x64, 0x60, 0x42, 0x60, 0x6c, - 0x60, 0x6b, 0x60, 0x59, 0x60, 0x81, 0x60, 0x8d, - 0x60, 0xe7, 0x60, 0x83, 0x60, 0x9a, 0x60, 0x84, - 0x60, 0x9b, 0x60, 0x96, 0x60, 0x97, 0x60, 0x92, - 0x60, 0xa7, 0x60, 0x8b, 0x60, 0xe1, 0x60, 0xb8, - 0x60, 0xe0, 0x60, 0xd3, 0x60, 0xb4, 0x5f, 0xf0, - 0x60, 0xbd, 0x60, 0xc6, 0x60, 0xb5, 0x60, 0xd8, - 0x61, 0x4d, 0x61, 0x15, 0x61, 0x06, 0x60, 0xf6, - 0x60, 0xf7, 0x61, 0x00, 0x60, 0xf4, 0x60, 0xfa, - 0x61, 0x03, 0x61, 0x21, 0x60, 0xfb, 0x60, 0xf1, - 0x61, 0x0d, 0x61, 0x0e, 0x61, 0x47, 0x61, 0x3e, - 0x61, 0x28, 0x61, 0x27, 0x61, 0x4a, 0x61, 0x3f, - 0x61, 0x3c, 0x61, 0x2c, 0x61, 0x34, 0x61, 0x3d, - 0x61, 0x42, 0x61, 0x44, 0x61, 0x73, 0x61, 0x77, - 0x61, 0x58, 0x61, 0x59, 0x61, 0x5a, 0x61, 0x6b, - 0x61, 0x74, 0x61, 0x6f, 0x61, 0x65, 0x61, 0x71, - 0x61, 0x5f, 0x61, 0x5d, 0x61, 0x53, 0x61, 0x75, - 0x61, 0x99, 0x61, 0x96, 0x61, 0x87, 0x61, 0xac, - 0x61, 0x94, 0x61, 0x9a, 0x61, 0x8a, 0x61, 0x91, - 0x61, 0xab, 0x61, 0xae, 0x61, 0xcc, 0x61, 0xca, - 0x61, 0xc9, 0x61, 0xf7, 0x61, 0xc8, 0x61, 0xc3, - 0x61, 0xc6, 0x61, 0xba, 0x61, 0xcb, 0x7f, 0x79, - 0x61, 0xcd, 0x61, 0xe6, 0x61, 0xe3, 0x61, 0xf6, - 0x61, 0xfa, 0x61, 0xf4, 0x61, 0xff, 0x61, 0xfd, - 0x61, 0xfc, 0x61, 0xfe, 0x62, 0x00, 0x62, 0x08, - 0x62, 0x09, 0x62, 0x0d, 0x62, 0x0c, 0x62, 0x14, - 0x62, 0x1b, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x62, 0x1e, 0x62, 0x21, 0x62, 0x2a, 0x62, 0x2e, - 0x62, 0x30, 0x62, 0x32, 0x62, 0x33, 0x62, 0x41, - 0x62, 0x4e, 0x62, 0x5e, 0x62, 0x63, 0x62, 0x5b, - 0x62, 0x60, 0x62, 0x68, 0x62, 0x7c, 0x62, 0x82, - 0x62, 0x89, 0x62, 0x7e, 0x62, 0x92, 0x62, 0x93, - 0x62, 0x96, 0x62, 0xd4, 0x62, 0x83, 0x62, 0x94, - 0x62, 0xd7, 0x62, 0xd1, 0x62, 0xbb, 0x62, 0xcf, - 0x62, 0xff, 0x62, 0xc6, 0x64, 0xd4, 0x62, 0xc8, - 0x62, 0xdc, 0x62, 0xcc, 0x62, 0xca, 0x62, 0xc2, - 0x62, 0xc7, 0x62, 0x9b, 0x62, 0xc9, 0x63, 0x0c, - 0x62, 0xee, 0x62, 0xf1, 0x63, 0x27, 0x63, 0x02, - 0x63, 0x08, 0x62, 0xef, 0x62, 0xf5, 0x63, 0x50, - 0x63, 0x3e, 0x63, 0x4d, 0x64, 0x1c, 0x63, 0x4f, - 0x63, 0x96, 0x63, 0x8e, 0x63, 0x80, 0x63, 0xab, - 0x63, 0x76, 0x63, 0xa3, 0x63, 0x8f, 0x63, 0x89, - 0x63, 0x9f, 0x63, 0xb5, 0x63, 0x6b, 0x00, 0x20, - 0x63, 0x69, 0x63, 0xbe, 0x63, 0xe9, 0x63, 0xc0, - 0x63, 0xc6, 0x63, 0xe3, 0x63, 0xc9, 0x63, 0xd2, - 0x63, 0xf6, 0x63, 0xc4, 0x64, 0x16, 0x64, 0x34, - 0x64, 0x06, 0x64, 0x13, 0x64, 0x26, 0x64, 0x36, - 0x65, 0x1d, 0x64, 0x17, 0x64, 0x28, 0x64, 0x0f, - 0x64, 0x67, 0x64, 0x6f, 0x64, 0x76, 0x64, 0x4e, - 0x65, 0x2a, 0x64, 0x95, 0x64, 0x93, 0x64, 0xa5, - 0x64, 0xa9, 0x64, 0x88, 0x64, 0xbc, 0x64, 0xda, - 0x64, 0xd2, 0x64, 0xc5, 0x64, 0xc7, 0x64, 0xbb, - 0x64, 0xd8, 0x64, 0xc2, 0x64, 0xf1, 0x64, 0xe7, - 0x82, 0x09, 0x64, 0xe0, 0x64, 0xe1, 0x62, 0xac, - 0x64, 0xe3, 0x64, 0xef, 0x65, 0x2c, 0x64, 0xf6, - 0x64, 0xf4, 0x64, 0xf2, 0x64, 0xfa, 0x65, 0x00, - 0x64, 0xfd, 0x65, 0x18, 0x65, 0x1c, 0x65, 0x05, - 0x65, 0x24, 0x65, 0x23, 0x65, 0x2b, 0x65, 0x34, - 0x65, 0x35, 0x65, 0x37, 0x65, 0x36, 0x65, 0x38, - 0x75, 0x4b, 0x65, 0x48, 0x65, 0x56, 0x65, 0x55, - 0x65, 0x4d, 0x65, 0x58, 0x65, 0x5e, 0x65, 0x5d, - 0x65, 0x72, 0x65, 0x78, 0x65, 0x82, 0x65, 0x83, - 0x8b, 0x8a, 0x65, 0x9b, 0x65, 0x9f, 0x65, 0xab, - 0x65, 0xb7, 0x65, 0xc3, 0x65, 0xc6, 0x65, 0xc1, - 0x65, 0xc4, 0x65, 0xcc, 0x65, 0xd2, 0x65, 0xdb, - 0x65, 0xd9, 0x65, 0xe0, 0x65, 0xe1, 0x65, 0xf1, - 0x67, 0x72, 0x66, 0x0a, 0x66, 0x03, 0x65, 0xfb, - 0x67, 0x73, 0x66, 0x35, 0x66, 0x36, 0x66, 0x34, - 0x66, 0x1c, 0x66, 0x4f, 0x66, 0x44, 0x66, 0x49, - 0x66, 0x41, 0x66, 0x5e, 0x66, 0x5d, 0x66, 0x64, - 0x66, 0x67, 0x66, 0x68, 0x66, 0x5f, 0x66, 0x62, - 0x66, 0x70, 0x66, 0x83, 0x66, 0x88, 0x66, 0x8e, - 0x66, 0x89, 0x66, 0x84, 0x66, 0x98, 0x66, 0x9d, - 0x66, 0xc1, 0x66, 0xb9, 0x66, 0xc9, 0x66, 0xbe, - 0x66, 0xbc, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x66, 0xc4, 0x66, 0xb8, 0x66, 0xd6, 0x66, 0xda, - 0x66, 0xe0, 0x66, 0x3f, 0x66, 0xe6, 0x66, 0xe9, - 0x66, 0xf0, 0x66, 0xf5, 0x66, 0xf7, 0x67, 0x0f, - 0x67, 0x16, 0x67, 0x1e, 0x67, 0x26, 0x67, 0x27, - 0x97, 0x38, 0x67, 0x2e, 0x67, 0x3f, 0x67, 0x36, - 0x67, 0x41, 0x67, 0x38, 0x67, 0x37, 0x67, 0x46, - 0x67, 0x5e, 0x67, 0x60, 0x67, 0x59, 0x67, 0x63, - 0x67, 0x64, 0x67, 0x89, 0x67, 0x70, 0x67, 0xa9, - 0x67, 0x7c, 0x67, 0x6a, 0x67, 0x8c, 0x67, 0x8b, - 0x67, 0xa6, 0x67, 0xa1, 0x67, 0x85, 0x67, 0xb7, - 0x67, 0xef, 0x67, 0xb4, 0x67, 0xec, 0x67, 0xb3, - 0x67, 0xe9, 0x67, 0xb8, 0x67, 0xe4, 0x67, 0xde, - 0x67, 0xdd, 0x67, 0xe2, 0x67, 0xee, 0x67, 0xb9, - 0x67, 0xce, 0x67, 0xc6, 0x67, 0xe7, 0x6a, 0x9c, - 0x68, 0x1e, 0x68, 0x46, 0x68, 0x29, 0x68, 0x40, - 0x68, 0x4d, 0x68, 0x32, 0x68, 0x4e, 0x00, 0x20, - 0x68, 0xb3, 0x68, 0x2b, 0x68, 0x59, 0x68, 0x63, - 0x68, 0x77, 0x68, 0x7f, 0x68, 0x9f, 0x68, 0x8f, - 0x68, 0xad, 0x68, 0x94, 0x68, 0x9d, 0x68, 0x9b, - 0x68, 0x83, 0x6a, 0xae, 0x68, 0xb9, 0x68, 0x74, - 0x68, 0xb5, 0x68, 0xa0, 0x68, 0xba, 0x69, 0x0f, - 0x68, 0x8d, 0x68, 0x7e, 0x69, 0x01, 0x68, 0xca, - 0x69, 0x08, 0x68, 0xd8, 0x69, 0x22, 0x69, 0x26, - 0x68, 0xe1, 0x69, 0x0c, 0x68, 0xcd, 0x68, 0xd4, - 0x68, 0xe7, 0x68, 0xd5, 0x69, 0x36, 0x69, 0x12, - 0x69, 0x04, 0x68, 0xd7, 0x68, 0xe3, 0x69, 0x25, - 0x68, 0xf9, 0x68, 0xe0, 0x68, 0xef, 0x69, 0x28, - 0x69, 0x2a, 0x69, 0x1a, 0x69, 0x23, 0x69, 0x21, - 0x68, 0xc6, 0x69, 0x79, 0x69, 0x77, 0x69, 0x5c, - 0x69, 0x78, 0x69, 0x6b, 0x69, 0x54, 0x69, 0x7e, - 0x69, 0x6e, 0x69, 0x39, 0x69, 0x74, 0x69, 0x3d, - 0x69, 0x59, 0x69, 0x30, 0x69, 0x61, 0x69, 0x5e, - 0x69, 0x5d, 0x69, 0x81, 0x69, 0x6a, 0x69, 0xb2, - 0x69, 0xae, 0x69, 0xd0, 0x69, 0xbf, 0x69, 0xc1, - 0x69, 0xd3, 0x69, 0xbe, 0x69, 0xce, 0x5b, 0xe8, - 0x69, 0xca, 0x69, 0xdd, 0x69, 0xbb, 0x69, 0xc3, - 0x69, 0xa7, 0x6a, 0x2e, 0x69, 0x91, 0x69, 0xa0, - 0x69, 0x9c, 0x69, 0x95, 0x69, 0xb4, 0x69, 0xde, - 0x69, 0xe8, 0x6a, 0x02, 0x6a, 0x1b, 0x69, 0xff, - 0x6b, 0x0a, 0x69, 0xf9, 0x69, 0xf2, 0x69, 0xe7, - 0x6a, 0x05, 0x69, 0xb1, 0x6a, 0x1e, 0x69, 0xed, - 0x6a, 0x14, 0x69, 0xeb, 0x6a, 0x0a, 0x6a, 0x12, - 0x6a, 0xc1, 0x6a, 0x23, 0x6a, 0x13, 0x6a, 0x44, - 0x6a, 0x0c, 0x6a, 0x72, 0x6a, 0x36, 0x6a, 0x78, - 0x6a, 0x47, 0x6a, 0x62, 0x6a, 0x59, 0x6a, 0x66, - 0x6a, 0x48, 0x6a, 0x38, 0x6a, 0x22, 0x6a, 0x90, - 0x6a, 0x8d, 0x6a, 0xa0, 0x6a, 0x84, 0x6a, 0xa2, - 0x6a, 0xa3, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x6a, 0x97, 0x86, 0x17, 0x6a, 0xbb, 0x6a, 0xc3, - 0x6a, 0xc2, 0x6a, 0xb8, 0x6a, 0xb3, 0x6a, 0xac, - 0x6a, 0xde, 0x6a, 0xd1, 0x6a, 0xdf, 0x6a, 0xaa, - 0x6a, 0xda, 0x6a, 0xea, 0x6a, 0xfb, 0x6b, 0x05, - 0x86, 0x16, 0x6a, 0xfa, 0x6b, 0x12, 0x6b, 0x16, - 0x9b, 0x31, 0x6b, 0x1f, 0x6b, 0x38, 0x6b, 0x37, - 0x76, 0xdc, 0x6b, 0x39, 0x98, 0xee, 0x6b, 0x47, - 0x6b, 0x43, 0x6b, 0x49, 0x6b, 0x50, 0x6b, 0x59, - 0x6b, 0x54, 0x6b, 0x5b, 0x6b, 0x5f, 0x6b, 0x61, - 0x6b, 0x78, 0x6b, 0x79, 0x6b, 0x7f, 0x6b, 0x80, - 0x6b, 0x84, 0x6b, 0x83, 0x6b, 0x8d, 0x6b, 0x98, - 0x6b, 0x95, 0x6b, 0x9e, 0x6b, 0xa4, 0x6b, 0xaa, - 0x6b, 0xab, 0x6b, 0xaf, 0x6b, 0xb2, 0x6b, 0xb1, - 0x6b, 0xb3, 0x6b, 0xb7, 0x6b, 0xbc, 0x6b, 0xc6, - 0x6b, 0xcb, 0x6b, 0xd3, 0x6b, 0xdf, 0x6b, 0xec, - 0x6b, 0xeb, 0x6b, 0xf3, 0x6b, 0xef, 0x00, 0x20, - 0x9e, 0xbe, 0x6c, 0x08, 0x6c, 0x13, 0x6c, 0x14, - 0x6c, 0x1b, 0x6c, 0x24, 0x6c, 0x23, 0x6c, 0x5e, - 0x6c, 0x55, 0x6c, 0x62, 0x6c, 0x6a, 0x6c, 0x82, - 0x6c, 0x8d, 0x6c, 0x9a, 0x6c, 0x81, 0x6c, 0x9b, - 0x6c, 0x7e, 0x6c, 0x68, 0x6c, 0x73, 0x6c, 0x92, - 0x6c, 0x90, 0x6c, 0xc4, 0x6c, 0xf1, 0x6c, 0xd3, - 0x6c, 0xbd, 0x6c, 0xd7, 0x6c, 0xc5, 0x6c, 0xdd, - 0x6c, 0xae, 0x6c, 0xb1, 0x6c, 0xbe, 0x6c, 0xba, - 0x6c, 0xdb, 0x6c, 0xef, 0x6c, 0xd9, 0x6c, 0xea, - 0x6d, 0x1f, 0x88, 0x4d, 0x6d, 0x36, 0x6d, 0x2b, - 0x6d, 0x3d, 0x6d, 0x38, 0x6d, 0x19, 0x6d, 0x35, - 0x6d, 0x33, 0x6d, 0x12, 0x6d, 0x0c, 0x6d, 0x63, - 0x6d, 0x93, 0x6d, 0x64, 0x6d, 0x5a, 0x6d, 0x79, - 0x6d, 0x59, 0x6d, 0x8e, 0x6d, 0x95, 0x6f, 0xe4, - 0x6d, 0x85, 0x6d, 0xf9, 0x6e, 0x15, 0x6e, 0x0a, - 0x6d, 0xb5, 0x6d, 0xc7, 0x6d, 0xe6, 0x6d, 0xb8, - 0x6d, 0xc6, 0x6d, 0xec, 0x6d, 0xde, 0x6d, 0xcc, - 0x6d, 0xe8, 0x6d, 0xd2, 0x6d, 0xc5, 0x6d, 0xfa, - 0x6d, 0xd9, 0x6d, 0xe4, 0x6d, 0xd5, 0x6d, 0xea, - 0x6d, 0xee, 0x6e, 0x2d, 0x6e, 0x6e, 0x6e, 0x2e, - 0x6e, 0x19, 0x6e, 0x72, 0x6e, 0x5f, 0x6e, 0x3e, - 0x6e, 0x23, 0x6e, 0x6b, 0x6e, 0x2b, 0x6e, 0x76, - 0x6e, 0x4d, 0x6e, 0x1f, 0x6e, 0x43, 0x6e, 0x3a, - 0x6e, 0x4e, 0x6e, 0x24, 0x6e, 0xff, 0x6e, 0x1d, - 0x6e, 0x38, 0x6e, 0x82, 0x6e, 0xaa, 0x6e, 0x98, - 0x6e, 0xc9, 0x6e, 0xb7, 0x6e, 0xd3, 0x6e, 0xbd, - 0x6e, 0xaf, 0x6e, 0xc4, 0x6e, 0xb2, 0x6e, 0xd4, - 0x6e, 0xd5, 0x6e, 0x8f, 0x6e, 0xa5, 0x6e, 0xc2, - 0x6e, 0x9f, 0x6f, 0x41, 0x6f, 0x11, 0x70, 0x4c, - 0x6e, 0xec, 0x6e, 0xf8, 0x6e, 0xfe, 0x6f, 0x3f, - 0x6e, 0xf2, 0x6f, 0x31, 0x6e, 0xef, 0x6f, 0x32, - 0x6e, 0xcc, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x6f, 0x3e, 0x6f, 0x13, 0x6e, 0xf7, 0x6f, 0x86, - 0x6f, 0x7a, 0x6f, 0x78, 0x6f, 0x81, 0x6f, 0x80, - 0x6f, 0x6f, 0x6f, 0x5b, 0x6f, 0xf3, 0x6f, 0x6d, - 0x6f, 0x82, 0x6f, 0x7c, 0x6f, 0x58, 0x6f, 0x8e, - 0x6f, 0x91, 0x6f, 0xc2, 0x6f, 0x66, 0x6f, 0xb3, - 0x6f, 0xa3, 0x6f, 0xa1, 0x6f, 0xa4, 0x6f, 0xb9, - 0x6f, 0xc6, 0x6f, 0xaa, 0x6f, 0xdf, 0x6f, 0xd5, - 0x6f, 0xec, 0x6f, 0xd4, 0x6f, 0xd8, 0x6f, 0xf1, - 0x6f, 0xee, 0x6f, 0xdb, 0x70, 0x09, 0x70, 0x0b, - 0x6f, 0xfa, 0x70, 0x11, 0x70, 0x01, 0x70, 0x0f, - 0x6f, 0xfe, 0x70, 0x1b, 0x70, 0x1a, 0x6f, 0x74, - 0x70, 0x1d, 0x70, 0x18, 0x70, 0x1f, 0x70, 0x30, - 0x70, 0x3e, 0x70, 0x32, 0x70, 0x51, 0x70, 0x63, - 0x70, 0x99, 0x70, 0x92, 0x70, 0xaf, 0x70, 0xf1, - 0x70, 0xac, 0x70, 0xb8, 0x70, 0xb3, 0x70, 0xae, - 0x70, 0xdf, 0x70, 0xcb, 0x70, 0xdd, 0x00, 0x20, - 0x70, 0xd9, 0x71, 0x09, 0x70, 0xfd, 0x71, 0x1c, - 0x71, 0x19, 0x71, 0x65, 0x71, 0x55, 0x71, 0x88, - 0x71, 0x66, 0x71, 0x62, 0x71, 0x4c, 0x71, 0x56, - 0x71, 0x6c, 0x71, 0x8f, 0x71, 0xfb, 0x71, 0x84, - 0x71, 0x95, 0x71, 0xa8, 0x71, 0xac, 0x71, 0xd7, - 0x71, 0xb9, 0x71, 0xbe, 0x71, 0xd2, 0x71, 0xc9, - 0x71, 0xd4, 0x71, 0xce, 0x71, 0xe0, 0x71, 0xec, - 0x71, 0xe7, 0x71, 0xf5, 0x71, 0xfc, 0x71, 0xf9, - 0x71, 0xff, 0x72, 0x0d, 0x72, 0x10, 0x72, 0x1b, - 0x72, 0x28, 0x72, 0x2d, 0x72, 0x2c, 0x72, 0x30, - 0x72, 0x32, 0x72, 0x3b, 0x72, 0x3c, 0x72, 0x3f, - 0x72, 0x40, 0x72, 0x46, 0x72, 0x4b, 0x72, 0x58, - 0x72, 0x74, 0x72, 0x7e, 0x72, 0x82, 0x72, 0x81, - 0x72, 0x87, 0x72, 0x92, 0x72, 0x96, 0x72, 0xa2, - 0x72, 0xa7, 0x72, 0xb9, 0x72, 0xb2, 0x72, 0xc3, - 0x72, 0xc6, 0x72, 0xc4, 0x72, 0xce, 0x72, 0xd2, - 0x72, 0xe2, 0x72, 0xe0, 0x72, 0xe1, 0x72, 0xf9, - 0x72, 0xf7, 0x50, 0x0f, 0x73, 0x17, 0x73, 0x0a, - 0x73, 0x1c, 0x73, 0x16, 0x73, 0x1d, 0x73, 0x34, - 0x73, 0x2f, 0x73, 0x29, 0x73, 0x25, 0x73, 0x3e, - 0x73, 0x4e, 0x73, 0x4f, 0x9e, 0xd8, 0x73, 0x57, - 0x73, 0x6a, 0x73, 0x68, 0x73, 0x70, 0x73, 0x78, - 0x73, 0x75, 0x73, 0x7b, 0x73, 0x7a, 0x73, 0xc8, - 0x73, 0xb3, 0x73, 0xce, 0x73, 0xbb, 0x73, 0xc0, - 0x73, 0xe5, 0x73, 0xee, 0x73, 0xde, 0x74, 0xa2, - 0x74, 0x05, 0x74, 0x6f, 0x74, 0x25, 0x73, 0xf8, - 0x74, 0x32, 0x74, 0x3a, 0x74, 0x55, 0x74, 0x3f, - 0x74, 0x5f, 0x74, 0x59, 0x74, 0x41, 0x74, 0x5c, - 0x74, 0x69, 0x74, 0x70, 0x74, 0x63, 0x74, 0x6a, - 0x74, 0x76, 0x74, 0x7e, 0x74, 0x8b, 0x74, 0x9e, - 0x74, 0xa7, 0x74, 0xca, 0x74, 0xcf, 0x74, 0xd4, - 0x73, 0xf1, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x74, 0xe0, 0x74, 0xe3, 0x74, 0xe7, 0x74, 0xe9, - 0x74, 0xee, 0x74, 0xf2, 0x74, 0xf0, 0x74, 0xf1, - 0x74, 0xf8, 0x74, 0xf7, 0x75, 0x04, 0x75, 0x03, - 0x75, 0x05, 0x75, 0x0c, 0x75, 0x0e, 0x75, 0x0d, - 0x75, 0x15, 0x75, 0x13, 0x75, 0x1e, 0x75, 0x26, - 0x75, 0x2c, 0x75, 0x3c, 0x75, 0x44, 0x75, 0x4d, - 0x75, 0x4a, 0x75, 0x49, 0x75, 0x5b, 0x75, 0x46, - 0x75, 0x5a, 0x75, 0x69, 0x75, 0x64, 0x75, 0x67, - 0x75, 0x6b, 0x75, 0x6d, 0x75, 0x78, 0x75, 0x76, - 0x75, 0x86, 0x75, 0x87, 0x75, 0x74, 0x75, 0x8a, - 0x75, 0x89, 0x75, 0x82, 0x75, 0x94, 0x75, 0x9a, - 0x75, 0x9d, 0x75, 0xa5, 0x75, 0xa3, 0x75, 0xc2, - 0x75, 0xb3, 0x75, 0xc3, 0x75, 0xb5, 0x75, 0xbd, - 0x75, 0xb8, 0x75, 0xbc, 0x75, 0xb1, 0x75, 0xcd, - 0x75, 0xca, 0x75, 0xd2, 0x75, 0xd9, 0x75, 0xe3, - 0x75, 0xde, 0x75, 0xfe, 0x75, 0xff, 0x00, 0x20, - 0x75, 0xfc, 0x76, 0x01, 0x75, 0xf0, 0x75, 0xfa, - 0x75, 0xf2, 0x75, 0xf3, 0x76, 0x0b, 0x76, 0x0d, - 0x76, 0x09, 0x76, 0x1f, 0x76, 0x27, 0x76, 0x20, - 0x76, 0x21, 0x76, 0x22, 0x76, 0x24, 0x76, 0x34, - 0x76, 0x30, 0x76, 0x3b, 0x76, 0x47, 0x76, 0x48, - 0x76, 0x46, 0x76, 0x5c, 0x76, 0x58, 0x76, 0x61, - 0x76, 0x62, 0x76, 0x68, 0x76, 0x69, 0x76, 0x6a, - 0x76, 0x67, 0x76, 0x6c, 0x76, 0x70, 0x76, 0x72, - 0x76, 0x76, 0x76, 0x78, 0x76, 0x7c, 0x76, 0x80, - 0x76, 0x83, 0x76, 0x88, 0x76, 0x8b, 0x76, 0x8e, - 0x76, 0x96, 0x76, 0x93, 0x76, 0x99, 0x76, 0x9a, - 0x76, 0xb0, 0x76, 0xb4, 0x76, 0xb8, 0x76, 0xb9, - 0x76, 0xba, 0x76, 0xc2, 0x76, 0xcd, 0x76, 0xd6, - 0x76, 0xd2, 0x76, 0xde, 0x76, 0xe1, 0x76, 0xe5, - 0x76, 0xe7, 0x76, 0xea, 0x86, 0x2f, 0x76, 0xfb, - 0x77, 0x08, 0x77, 0x07, 0x77, 0x04, 0x77, 0x29, - 0x77, 0x24, 0x77, 0x1e, 0x77, 0x25, 0x77, 0x26, - 0x77, 0x1b, 0x77, 0x37, 0x77, 0x38, 0x77, 0x47, - 0x77, 0x5a, 0x77, 0x68, 0x77, 0x6b, 0x77, 0x5b, - 0x77, 0x65, 0x77, 0x7f, 0x77, 0x7e, 0x77, 0x79, - 0x77, 0x8e, 0x77, 0x8b, 0x77, 0x91, 0x77, 0xa0, - 0x77, 0x9e, 0x77, 0xb0, 0x77, 0xb6, 0x77, 0xb9, - 0x77, 0xbf, 0x77, 0xbc, 0x77, 0xbd, 0x77, 0xbb, - 0x77, 0xc7, 0x77, 0xcd, 0x77, 0xd7, 0x77, 0xda, - 0x77, 0xdc, 0x77, 0xe3, 0x77, 0xee, 0x77, 0xfc, - 0x78, 0x0c, 0x78, 0x12, 0x79, 0x26, 0x78, 0x20, - 0x79, 0x2a, 0x78, 0x45, 0x78, 0x8e, 0x78, 0x74, - 0x78, 0x86, 0x78, 0x7c, 0x78, 0x9a, 0x78, 0x8c, - 0x78, 0xa3, 0x78, 0xb5, 0x78, 0xaa, 0x78, 0xaf, - 0x78, 0xd1, 0x78, 0xc6, 0x78, 0xcb, 0x78, 0xd4, - 0x78, 0xbe, 0x78, 0xbc, 0x78, 0xc5, 0x78, 0xca, - 0x78, 0xec, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x78, 0xe7, 0x78, 0xda, 0x78, 0xfd, 0x78, 0xf4, - 0x79, 0x07, 0x79, 0x12, 0x79, 0x11, 0x79, 0x19, - 0x79, 0x2c, 0x79, 0x2b, 0x79, 0x40, 0x79, 0x60, - 0x79, 0x57, 0x79, 0x5f, 0x79, 0x5a, 0x79, 0x55, - 0x79, 0x53, 0x79, 0x7a, 0x79, 0x7f, 0x79, 0x8a, - 0x79, 0x9d, 0x79, 0xa7, 0x9f, 0x4b, 0x79, 0xaa, - 0x79, 0xae, 0x79, 0xb3, 0x79, 0xb9, 0x79, 0xba, - 0x79, 0xc9, 0x79, 0xd5, 0x79, 0xe7, 0x79, 0xec, - 0x79, 0xe1, 0x79, 0xe3, 0x7a, 0x08, 0x7a, 0x0d, - 0x7a, 0x18, 0x7a, 0x19, 0x7a, 0x20, 0x7a, 0x1f, - 0x79, 0x80, 0x7a, 0x31, 0x7a, 0x3b, 0x7a, 0x3e, - 0x7a, 0x37, 0x7a, 0x43, 0x7a, 0x57, 0x7a, 0x49, - 0x7a, 0x61, 0x7a, 0x62, 0x7a, 0x69, 0x9f, 0x9d, - 0x7a, 0x70, 0x7a, 0x79, 0x7a, 0x7d, 0x7a, 0x88, - 0x7a, 0x97, 0x7a, 0x95, 0x7a, 0x98, 0x7a, 0x96, - 0x7a, 0xa9, 0x7a, 0xc8, 0x7a, 0xb0, 0x00, 0x20, - 0x7a, 0xb6, 0x7a, 0xc5, 0x7a, 0xc4, 0x7a, 0xbf, - 0x90, 0x83, 0x7a, 0xc7, 0x7a, 0xca, 0x7a, 0xcd, - 0x7a, 0xcf, 0x7a, 0xd5, 0x7a, 0xd3, 0x7a, 0xd9, - 0x7a, 0xda, 0x7a, 0xdd, 0x7a, 0xe1, 0x7a, 0xe2, - 0x7a, 0xe6, 0x7a, 0xed, 0x7a, 0xf0, 0x7b, 0x02, - 0x7b, 0x0f, 0x7b, 0x0a, 0x7b, 0x06, 0x7b, 0x33, - 0x7b, 0x18, 0x7b, 0x19, 0x7b, 0x1e, 0x7b, 0x35, - 0x7b, 0x28, 0x7b, 0x36, 0x7b, 0x50, 0x7b, 0x7a, - 0x7b, 0x04, 0x7b, 0x4d, 0x7b, 0x0b, 0x7b, 0x4c, - 0x7b, 0x45, 0x7b, 0x75, 0x7b, 0x65, 0x7b, 0x74, - 0x7b, 0x67, 0x7b, 0x70, 0x7b, 0x71, 0x7b, 0x6c, - 0x7b, 0x6e, 0x7b, 0x9d, 0x7b, 0x98, 0x7b, 0x9f, - 0x7b, 0x8d, 0x7b, 0x9c, 0x7b, 0x9a, 0x7b, 0x8b, - 0x7b, 0x92, 0x7b, 0x8f, 0x7b, 0x5d, 0x7b, 0x99, - 0x7b, 0xcb, 0x7b, 0xc1, 0x7b, 0xcc, 0x7b, 0xcf, - 0x7b, 0xb4, 0x7b, 0xc6, 0x7b, 0xdd, 0x7b, 0xe9, - 0x7c, 0x11, 0x7c, 0x14, 0x7b, 0xe6, 0x7b, 0xe5, - 0x7c, 0x60, 0x7c, 0x00, 0x7c, 0x07, 0x7c, 0x13, - 0x7b, 0xf3, 0x7b, 0xf7, 0x7c, 0x17, 0x7c, 0x0d, - 0x7b, 0xf6, 0x7c, 0x23, 0x7c, 0x27, 0x7c, 0x2a, - 0x7c, 0x1f, 0x7c, 0x37, 0x7c, 0x2b, 0x7c, 0x3d, - 0x7c, 0x4c, 0x7c, 0x43, 0x7c, 0x54, 0x7c, 0x4f, - 0x7c, 0x40, 0x7c, 0x50, 0x7c, 0x58, 0x7c, 0x5f, - 0x7c, 0x64, 0x7c, 0x56, 0x7c, 0x65, 0x7c, 0x6c, - 0x7c, 0x75, 0x7c, 0x83, 0x7c, 0x90, 0x7c, 0xa4, - 0x7c, 0xad, 0x7c, 0xa2, 0x7c, 0xab, 0x7c, 0xa1, - 0x7c, 0xa8, 0x7c, 0xb3, 0x7c, 0xb2, 0x7c, 0xb1, - 0x7c, 0xae, 0x7c, 0xb9, 0x7c, 0xbd, 0x7c, 0xc0, - 0x7c, 0xc5, 0x7c, 0xc2, 0x7c, 0xd8, 0x7c, 0xd2, - 0x7c, 0xdc, 0x7c, 0xe2, 0x9b, 0x3b, 0x7c, 0xef, - 0x7c, 0xf2, 0x7c, 0xf4, 0x7c, 0xf6, 0x7c, 0xfa, - 0x7d, 0x06, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x7d, 0x02, 0x7d, 0x1c, 0x7d, 0x15, 0x7d, 0x0a, - 0x7d, 0x45, 0x7d, 0x4b, 0x7d, 0x2e, 0x7d, 0x32, - 0x7d, 0x3f, 0x7d, 0x35, 0x7d, 0x46, 0x7d, 0x73, - 0x7d, 0x56, 0x7d, 0x4e, 0x7d, 0x72, 0x7d, 0x68, - 0x7d, 0x6e, 0x7d, 0x4f, 0x7d, 0x63, 0x7d, 0x93, - 0x7d, 0x89, 0x7d, 0x5b, 0x7d, 0x8f, 0x7d, 0x7d, - 0x7d, 0x9b, 0x7d, 0xba, 0x7d, 0xae, 0x7d, 0xa3, - 0x7d, 0xb5, 0x7d, 0xc7, 0x7d, 0xbd, 0x7d, 0xab, - 0x7e, 0x3d, 0x7d, 0xa2, 0x7d, 0xaf, 0x7d, 0xdc, - 0x7d, 0xb8, 0x7d, 0x9f, 0x7d, 0xb0, 0x7d, 0xd8, - 0x7d, 0xdd, 0x7d, 0xe4, 0x7d, 0xde, 0x7d, 0xfb, - 0x7d, 0xf2, 0x7d, 0xe1, 0x7e, 0x05, 0x7e, 0x0a, - 0x7e, 0x23, 0x7e, 0x21, 0x7e, 0x12, 0x7e, 0x31, - 0x7e, 0x1f, 0x7e, 0x09, 0x7e, 0x0b, 0x7e, 0x22, - 0x7e, 0x46, 0x7e, 0x66, 0x7e, 0x3b, 0x7e, 0x35, - 0x7e, 0x39, 0x7e, 0x43, 0x7e, 0x37, 0x00, 0x20, - 0x7e, 0x32, 0x7e, 0x3a, 0x7e, 0x67, 0x7e, 0x5d, - 0x7e, 0x56, 0x7e, 0x5e, 0x7e, 0x59, 0x7e, 0x5a, - 0x7e, 0x79, 0x7e, 0x6a, 0x7e, 0x69, 0x7e, 0x7c, - 0x7e, 0x7b, 0x7e, 0x83, 0x7d, 0xd5, 0x7e, 0x7d, - 0x8f, 0xae, 0x7e, 0x7f, 0x7e, 0x88, 0x7e, 0x89, - 0x7e, 0x8c, 0x7e, 0x92, 0x7e, 0x90, 0x7e, 0x93, - 0x7e, 0x94, 0x7e, 0x96, 0x7e, 0x8e, 0x7e, 0x9b, - 0x7e, 0x9c, 0x7f, 0x38, 0x7f, 0x3a, 0x7f, 0x45, - 0x7f, 0x4c, 0x7f, 0x4d, 0x7f, 0x4e, 0x7f, 0x50, - 0x7f, 0x51, 0x7f, 0x55, 0x7f, 0x54, 0x7f, 0x58, - 0x7f, 0x5f, 0x7f, 0x60, 0x7f, 0x68, 0x7f, 0x69, - 0x7f, 0x67, 0x7f, 0x78, 0x7f, 0x82, 0x7f, 0x86, - 0x7f, 0x83, 0x7f, 0x88, 0x7f, 0x87, 0x7f, 0x8c, - 0x7f, 0x94, 0x7f, 0x9e, 0x7f, 0x9d, 0x7f, 0x9a, - 0x7f, 0xa3, 0x7f, 0xaf, 0x7f, 0xb2, 0x7f, 0xb9, - 0x7f, 0xae, 0x7f, 0xb6, 0x7f, 0xb8, 0x8b, 0x71, - 0x7f, 0xc5, 0x7f, 0xc6, 0x7f, 0xca, 0x7f, 0xd5, - 0x7f, 0xd4, 0x7f, 0xe1, 0x7f, 0xe6, 0x7f, 0xe9, - 0x7f, 0xf3, 0x7f, 0xf9, 0x98, 0xdc, 0x80, 0x06, - 0x80, 0x04, 0x80, 0x0b, 0x80, 0x12, 0x80, 0x18, - 0x80, 0x19, 0x80, 0x1c, 0x80, 0x21, 0x80, 0x28, - 0x80, 0x3f, 0x80, 0x3b, 0x80, 0x4a, 0x80, 0x46, - 0x80, 0x52, 0x80, 0x58, 0x80, 0x5a, 0x80, 0x5f, - 0x80, 0x62, 0x80, 0x68, 0x80, 0x73, 0x80, 0x72, - 0x80, 0x70, 0x80, 0x76, 0x80, 0x79, 0x80, 0x7d, - 0x80, 0x7f, 0x80, 0x84, 0x80, 0x86, 0x80, 0x85, - 0x80, 0x9b, 0x80, 0x93, 0x80, 0x9a, 0x80, 0xad, - 0x51, 0x90, 0x80, 0xac, 0x80, 0xdb, 0x80, 0xe5, - 0x80, 0xd9, 0x80, 0xdd, 0x80, 0xc4, 0x80, 0xda, - 0x80, 0xd6, 0x81, 0x09, 0x80, 0xef, 0x80, 0xf1, - 0x81, 0x1b, 0x81, 0x29, 0x81, 0x23, 0x81, 0x2f, - 0x81, 0x4b, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x96, 0x8b, 0x81, 0x46, 0x81, 0x3e, 0x81, 0x53, - 0x81, 0x51, 0x80, 0xfc, 0x81, 0x71, 0x81, 0x6e, - 0x81, 0x65, 0x81, 0x66, 0x81, 0x74, 0x81, 0x83, - 0x81, 0x88, 0x81, 0x8a, 0x81, 0x80, 0x81, 0x82, - 0x81, 0xa0, 0x81, 0x95, 0x81, 0xa4, 0x81, 0xa3, - 0x81, 0x5f, 0x81, 0x93, 0x81, 0xa9, 0x81, 0xb0, - 0x81, 0xb5, 0x81, 0xbe, 0x81, 0xb8, 0x81, 0xbd, - 0x81, 0xc0, 0x81, 0xc2, 0x81, 0xba, 0x81, 0xc9, - 0x81, 0xcd, 0x81, 0xd1, 0x81, 0xd9, 0x81, 0xd8, - 0x81, 0xc8, 0x81, 0xda, 0x81, 0xdf, 0x81, 0xe0, - 0x81, 0xe7, 0x81, 0xfa, 0x81, 0xfb, 0x81, 0xfe, - 0x82, 0x01, 0x82, 0x02, 0x82, 0x05, 0x82, 0x07, - 0x82, 0x0a, 0x82, 0x0d, 0x82, 0x10, 0x82, 0x16, - 0x82, 0x29, 0x82, 0x2b, 0x82, 0x38, 0x82, 0x33, - 0x82, 0x40, 0x82, 0x59, 0x82, 0x58, 0x82, 0x5d, - 0x82, 0x5a, 0x82, 0x5f, 0x82, 0x64, 0x00, 0x20, - 0x82, 0x62, 0x82, 0x68, 0x82, 0x6a, 0x82, 0x6b, - 0x82, 0x2e, 0x82, 0x71, 0x82, 0x77, 0x82, 0x78, - 0x82, 0x7e, 0x82, 0x8d, 0x82, 0x92, 0x82, 0xab, - 0x82, 0x9f, 0x82, 0xbb, 0x82, 0xac, 0x82, 0xe1, - 0x82, 0xe3, 0x82, 0xdf, 0x82, 0xd2, 0x82, 0xf4, - 0x82, 0xf3, 0x82, 0xfa, 0x83, 0x93, 0x83, 0x03, - 0x82, 0xfb, 0x82, 0xf9, 0x82, 0xde, 0x83, 0x06, - 0x82, 0xdc, 0x83, 0x09, 0x82, 0xd9, 0x83, 0x35, - 0x83, 0x34, 0x83, 0x16, 0x83, 0x32, 0x83, 0x31, - 0x83, 0x40, 0x83, 0x39, 0x83, 0x50, 0x83, 0x45, - 0x83, 0x2f, 0x83, 0x2b, 0x83, 0x17, 0x83, 0x18, - 0x83, 0x85, 0x83, 0x9a, 0x83, 0xaa, 0x83, 0x9f, - 0x83, 0xa2, 0x83, 0x96, 0x83, 0x23, 0x83, 0x8e, - 0x83, 0x87, 0x83, 0x8a, 0x83, 0x7c, 0x83, 0xb5, - 0x83, 0x73, 0x83, 0x75, 0x83, 0xa0, 0x83, 0x89, - 0x83, 0xa8, 0x83, 0xf4, 0x84, 0x13, 0x83, 0xeb, - 0x83, 0xce, 0x83, 0xfd, 0x84, 0x03, 0x83, 0xd8, - 0x84, 0x0b, 0x83, 0xc1, 0x83, 0xf7, 0x84, 0x07, - 0x83, 0xe0, 0x83, 0xf2, 0x84, 0x0d, 0x84, 0x22, - 0x84, 0x20, 0x83, 0xbd, 0x84, 0x38, 0x85, 0x06, - 0x83, 0xfb, 0x84, 0x6d, 0x84, 0x2a, 0x84, 0x3c, - 0x85, 0x5a, 0x84, 0x84, 0x84, 0x77, 0x84, 0x6b, - 0x84, 0xad, 0x84, 0x6e, 0x84, 0x82, 0x84, 0x69, - 0x84, 0x46, 0x84, 0x2c, 0x84, 0x6f, 0x84, 0x79, - 0x84, 0x35, 0x84, 0xca, 0x84, 0x62, 0x84, 0xb9, - 0x84, 0xbf, 0x84, 0x9f, 0x84, 0xd9, 0x84, 0xcd, - 0x84, 0xbb, 0x84, 0xda, 0x84, 0xd0, 0x84, 0xc1, - 0x84, 0xc6, 0x84, 0xd6, 0x84, 0xa1, 0x85, 0x21, - 0x84, 0xff, 0x84, 0xf4, 0x85, 0x17, 0x85, 0x18, - 0x85, 0x2c, 0x85, 0x1f, 0x85, 0x15, 0x85, 0x14, - 0x84, 0xfc, 0x85, 0x40, 0x85, 0x63, 0x85, 0x58, - 0x85, 0x48, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x85, 0x41, 0x86, 0x02, 0x85, 0x4b, 0x85, 0x55, - 0x85, 0x80, 0x85, 0xa4, 0x85, 0x88, 0x85, 0x91, - 0x85, 0x8a, 0x85, 0xa8, 0x85, 0x6d, 0x85, 0x94, - 0x85, 0x9b, 0x85, 0xea, 0x85, 0x87, 0x85, 0x9c, - 0x85, 0x77, 0x85, 0x7e, 0x85, 0x90, 0x85, 0xc9, - 0x85, 0xba, 0x85, 0xcf, 0x85, 0xb9, 0x85, 0xd0, - 0x85, 0xd5, 0x85, 0xdd, 0x85, 0xe5, 0x85, 0xdc, - 0x85, 0xf9, 0x86, 0x0a, 0x86, 0x13, 0x86, 0x0b, - 0x85, 0xfe, 0x85, 0xfa, 0x86, 0x06, 0x86, 0x22, - 0x86, 0x1a, 0x86, 0x30, 0x86, 0x3f, 0x86, 0x4d, - 0x4e, 0x55, 0x86, 0x54, 0x86, 0x5f, 0x86, 0x67, - 0x86, 0x71, 0x86, 0x93, 0x86, 0xa3, 0x86, 0xa9, - 0x86, 0xaa, 0x86, 0x8b, 0x86, 0x8c, 0x86, 0xb6, - 0x86, 0xaf, 0x86, 0xc4, 0x86, 0xc6, 0x86, 0xb0, - 0x86, 0xc9, 0x88, 0x23, 0x86, 0xab, 0x86, 0xd4, - 0x86, 0xde, 0x86, 0xe9, 0x86, 0xec, 0x00, 0x20, - 0x86, 0xdf, 0x86, 0xdb, 0x86, 0xef, 0x87, 0x12, - 0x87, 0x06, 0x87, 0x08, 0x87, 0x00, 0x87, 0x03, - 0x86, 0xfb, 0x87, 0x11, 0x87, 0x09, 0x87, 0x0d, - 0x86, 0xf9, 0x87, 0x0a, 0x87, 0x34, 0x87, 0x3f, - 0x87, 0x37, 0x87, 0x3b, 0x87, 0x25, 0x87, 0x29, - 0x87, 0x1a, 0x87, 0x60, 0x87, 0x5f, 0x87, 0x78, - 0x87, 0x4c, 0x87, 0x4e, 0x87, 0x74, 0x87, 0x57, - 0x87, 0x68, 0x87, 0x6e, 0x87, 0x59, 0x87, 0x53, - 0x87, 0x63, 0x87, 0x6a, 0x88, 0x05, 0x87, 0xa2, - 0x87, 0x9f, 0x87, 0x82, 0x87, 0xaf, 0x87, 0xcb, - 0x87, 0xbd, 0x87, 0xc0, 0x87, 0xd0, 0x96, 0xd6, - 0x87, 0xab, 0x87, 0xc4, 0x87, 0xb3, 0x87, 0xc7, - 0x87, 0xc6, 0x87, 0xbb, 0x87, 0xef, 0x87, 0xf2, - 0x87, 0xe0, 0x88, 0x0f, 0x88, 0x0d, 0x87, 0xfe, - 0x87, 0xf6, 0x87, 0xf7, 0x88, 0x0e, 0x87, 0xd2, - 0x88, 0x11, 0x88, 0x16, 0x88, 0x15, 0x88, 0x22, - 0x88, 0x21, 0x88, 0x31, 0x88, 0x36, 0x88, 0x39, - 0x88, 0x27, 0x88, 0x3b, 0x88, 0x44, 0x88, 0x42, - 0x88, 0x52, 0x88, 0x59, 0x88, 0x5e, 0x88, 0x62, - 0x88, 0x6b, 0x88, 0x81, 0x88, 0x7e, 0x88, 0x9e, - 0x88, 0x75, 0x88, 0x7d, 0x88, 0xb5, 0x88, 0x72, - 0x88, 0x82, 0x88, 0x97, 0x88, 0x92, 0x88, 0xae, - 0x88, 0x99, 0x88, 0xa2, 0x88, 0x8d, 0x88, 0xa4, - 0x88, 0xb0, 0x88, 0xbf, 0x88, 0xb1, 0x88, 0xc3, - 0x88, 0xc4, 0x88, 0xd4, 0x88, 0xd8, 0x88, 0xd9, - 0x88, 0xdd, 0x88, 0xf9, 0x89, 0x02, 0x88, 0xfc, - 0x88, 0xf4, 0x88, 0xe8, 0x88, 0xf2, 0x89, 0x04, - 0x89, 0x0c, 0x89, 0x0a, 0x89, 0x13, 0x89, 0x43, - 0x89, 0x1e, 0x89, 0x25, 0x89, 0x2a, 0x89, 0x2b, - 0x89, 0x41, 0x89, 0x44, 0x89, 0x3b, 0x89, 0x36, - 0x89, 0x38, 0x89, 0x4c, 0x89, 0x1d, 0x89, 0x60, - 0x89, 0x5e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x89, 0x66, 0x89, 0x64, 0x89, 0x6d, 0x89, 0x6a, - 0x89, 0x6f, 0x89, 0x74, 0x89, 0x77, 0x89, 0x7e, - 0x89, 0x83, 0x89, 0x88, 0x89, 0x8a, 0x89, 0x93, - 0x89, 0x98, 0x89, 0xa1, 0x89, 0xa9, 0x89, 0xa6, - 0x89, 0xac, 0x89, 0xaf, 0x89, 0xb2, 0x89, 0xba, - 0x89, 0xbd, 0x89, 0xbf, 0x89, 0xc0, 0x89, 0xda, - 0x89, 0xdc, 0x89, 0xdd, 0x89, 0xe7, 0x89, 0xf4, - 0x89, 0xf8, 0x8a, 0x03, 0x8a, 0x16, 0x8a, 0x10, - 0x8a, 0x0c, 0x8a, 0x1b, 0x8a, 0x1d, 0x8a, 0x25, - 0x8a, 0x36, 0x8a, 0x41, 0x8a, 0x5b, 0x8a, 0x52, - 0x8a, 0x46, 0x8a, 0x48, 0x8a, 0x7c, 0x8a, 0x6d, - 0x8a, 0x6c, 0x8a, 0x62, 0x8a, 0x85, 0x8a, 0x82, - 0x8a, 0x84, 0x8a, 0xa8, 0x8a, 0xa1, 0x8a, 0x91, - 0x8a, 0xa5, 0x8a, 0xa6, 0x8a, 0x9a, 0x8a, 0xa3, - 0x8a, 0xc4, 0x8a, 0xcd, 0x8a, 0xc2, 0x8a, 0xda, - 0x8a, 0xeb, 0x8a, 0xf3, 0x8a, 0xe7, 0x00, 0x20, - 0x8a, 0xe4, 0x8a, 0xf1, 0x8b, 0x14, 0x8a, 0xe0, - 0x8a, 0xe2, 0x8a, 0xf7, 0x8a, 0xde, 0x8a, 0xdb, - 0x8b, 0x0c, 0x8b, 0x07, 0x8b, 0x1a, 0x8a, 0xe1, - 0x8b, 0x16, 0x8b, 0x10, 0x8b, 0x17, 0x8b, 0x20, - 0x8b, 0x33, 0x97, 0xab, 0x8b, 0x26, 0x8b, 0x2b, - 0x8b, 0x3e, 0x8b, 0x28, 0x8b, 0x41, 0x8b, 0x4c, - 0x8b, 0x4f, 0x8b, 0x4e, 0x8b, 0x49, 0x8b, 0x56, - 0x8b, 0x5b, 0x8b, 0x5a, 0x8b, 0x6b, 0x8b, 0x5f, - 0x8b, 0x6c, 0x8b, 0x6f, 0x8b, 0x74, 0x8b, 0x7d, - 0x8b, 0x80, 0x8b, 0x8c, 0x8b, 0x8e, 0x8b, 0x92, - 0x8b, 0x93, 0x8b, 0x96, 0x8b, 0x99, 0x8b, 0x9a, - 0x8c, 0x3a, 0x8c, 0x41, 0x8c, 0x3f, 0x8c, 0x48, - 0x8c, 0x4c, 0x8c, 0x4e, 0x8c, 0x50, 0x8c, 0x55, - 0x8c, 0x62, 0x8c, 0x6c, 0x8c, 0x78, 0x8c, 0x7a, - 0x8c, 0x82, 0x8c, 0x89, 0x8c, 0x85, 0x8c, 0x8a, - 0x8c, 0x8d, 0x8c, 0x8e, 0x8c, 0x94, 0x8c, 0x7c, - 0x8c, 0x98, 0x62, 0x1d, 0x8c, 0xad, 0x8c, 0xaa, - 0x8c, 0xbd, 0x8c, 0xb2, 0x8c, 0xb3, 0x8c, 0xae, - 0x8c, 0xb6, 0x8c, 0xc8, 0x8c, 0xc1, 0x8c, 0xe4, - 0x8c, 0xe3, 0x8c, 0xda, 0x8c, 0xfd, 0x8c, 0xfa, - 0x8c, 0xfb, 0x8d, 0x04, 0x8d, 0x05, 0x8d, 0x0a, - 0x8d, 0x07, 0x8d, 0x0f, 0x8d, 0x0d, 0x8d, 0x10, - 0x9f, 0x4e, 0x8d, 0x13, 0x8c, 0xcd, 0x8d, 0x14, - 0x8d, 0x16, 0x8d, 0x67, 0x8d, 0x6d, 0x8d, 0x71, - 0x8d, 0x73, 0x8d, 0x81, 0x8d, 0x99, 0x8d, 0xc2, - 0x8d, 0xbe, 0x8d, 0xba, 0x8d, 0xcf, 0x8d, 0xda, - 0x8d, 0xd6, 0x8d, 0xcc, 0x8d, 0xdb, 0x8d, 0xcb, - 0x8d, 0xea, 0x8d, 0xeb, 0x8d, 0xdf, 0x8d, 0xe3, - 0x8d, 0xfc, 0x8e, 0x08, 0x8e, 0x09, 0x8d, 0xff, - 0x8e, 0x1d, 0x8e, 0x1e, 0x8e, 0x10, 0x8e, 0x1f, - 0x8e, 0x42, 0x8e, 0x35, 0x8e, 0x30, 0x8e, 0x34, - 0x8e, 0x4a, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x8e, 0x47, 0x8e, 0x49, 0x8e, 0x4c, 0x8e, 0x50, - 0x8e, 0x48, 0x8e, 0x59, 0x8e, 0x64, 0x8e, 0x60, - 0x8e, 0x2a, 0x8e, 0x63, 0x8e, 0x55, 0x8e, 0x76, - 0x8e, 0x72, 0x8e, 0x7c, 0x8e, 0x81, 0x8e, 0x87, - 0x8e, 0x85, 0x8e, 0x84, 0x8e, 0x8b, 0x8e, 0x8a, - 0x8e, 0x93, 0x8e, 0x91, 0x8e, 0x94, 0x8e, 0x99, - 0x8e, 0xaa, 0x8e, 0xa1, 0x8e, 0xac, 0x8e, 0xb0, - 0x8e, 0xc6, 0x8e, 0xb1, 0x8e, 0xbe, 0x8e, 0xc5, - 0x8e, 0xc8, 0x8e, 0xcb, 0x8e, 0xdb, 0x8e, 0xe3, - 0x8e, 0xfc, 0x8e, 0xfb, 0x8e, 0xeb, 0x8e, 0xfe, - 0x8f, 0x0a, 0x8f, 0x05, 0x8f, 0x15, 0x8f, 0x12, - 0x8f, 0x19, 0x8f, 0x13, 0x8f, 0x1c, 0x8f, 0x1f, - 0x8f, 0x1b, 0x8f, 0x0c, 0x8f, 0x26, 0x8f, 0x33, - 0x8f, 0x3b, 0x8f, 0x39, 0x8f, 0x45, 0x8f, 0x42, - 0x8f, 0x3e, 0x8f, 0x4c, 0x8f, 0x49, 0x8f, 0x46, - 0x8f, 0x4e, 0x8f, 0x57, 0x8f, 0x5c, 0x00, 0x20, - 0x8f, 0x62, 0x8f, 0x63, 0x8f, 0x64, 0x8f, 0x9c, - 0x8f, 0x9f, 0x8f, 0xa3, 0x8f, 0xad, 0x8f, 0xaf, - 0x8f, 0xb7, 0x8f, 0xda, 0x8f, 0xe5, 0x8f, 0xe2, - 0x8f, 0xea, 0x8f, 0xef, 0x90, 0x87, 0x8f, 0xf4, - 0x90, 0x05, 0x8f, 0xf9, 0x8f, 0xfa, 0x90, 0x11, - 0x90, 0x15, 0x90, 0x21, 0x90, 0x0d, 0x90, 0x1e, - 0x90, 0x16, 0x90, 0x0b, 0x90, 0x27, 0x90, 0x36, - 0x90, 0x35, 0x90, 0x39, 0x8f, 0xf8, 0x90, 0x4f, - 0x90, 0x50, 0x90, 0x51, 0x90, 0x52, 0x90, 0x0e, - 0x90, 0x49, 0x90, 0x3e, 0x90, 0x56, 0x90, 0x58, - 0x90, 0x5e, 0x90, 0x68, 0x90, 0x6f, 0x90, 0x76, - 0x96, 0xa8, 0x90, 0x72, 0x90, 0x82, 0x90, 0x7d, - 0x90, 0x81, 0x90, 0x80, 0x90, 0x8a, 0x90, 0x89, - 0x90, 0x8f, 0x90, 0xa8, 0x90, 0xaf, 0x90, 0xb1, - 0x90, 0xb5, 0x90, 0xe2, 0x90, 0xe4, 0x62, 0x48, - 0x90, 0xdb, 0x91, 0x02, 0x91, 0x12, 0x91, 0x19, - 0x91, 0x32, 0x91, 0x30, 0x91, 0x4a, 0x91, 0x56, - 0x91, 0x58, 0x91, 0x63, 0x91, 0x65, 0x91, 0x69, - 0x91, 0x73, 0x91, 0x72, 0x91, 0x8b, 0x91, 0x89, - 0x91, 0x82, 0x91, 0xa2, 0x91, 0xab, 0x91, 0xaf, - 0x91, 0xaa, 0x91, 0xb5, 0x91, 0xb4, 0x91, 0xba, - 0x91, 0xc0, 0x91, 0xc1, 0x91, 0xc9, 0x91, 0xcb, - 0x91, 0xd0, 0x91, 0xd6, 0x91, 0xdf, 0x91, 0xe1, - 0x91, 0xdb, 0x91, 0xfc, 0x91, 0xf5, 0x91, 0xf6, - 0x92, 0x1e, 0x91, 0xff, 0x92, 0x14, 0x92, 0x2c, - 0x92, 0x15, 0x92, 0x11, 0x92, 0x5e, 0x92, 0x57, - 0x92, 0x45, 0x92, 0x49, 0x92, 0x64, 0x92, 0x48, - 0x92, 0x95, 0x92, 0x3f, 0x92, 0x4b, 0x92, 0x50, - 0x92, 0x9c, 0x92, 0x96, 0x92, 0x93, 0x92, 0x9b, - 0x92, 0x5a, 0x92, 0xcf, 0x92, 0xb9, 0x92, 0xb7, - 0x92, 0xe9, 0x93, 0x0f, 0x92, 0xfa, 0x93, 0x44, - 0x93, 0x2e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x93, 0x19, 0x93, 0x22, 0x93, 0x1a, 0x93, 0x23, - 0x93, 0x3a, 0x93, 0x35, 0x93, 0x3b, 0x93, 0x5c, - 0x93, 0x60, 0x93, 0x7c, 0x93, 0x6e, 0x93, 0x56, - 0x93, 0xb0, 0x93, 0xac, 0x93, 0xad, 0x93, 0x94, - 0x93, 0xb9, 0x93, 0xd6, 0x93, 0xd7, 0x93, 0xe8, - 0x93, 0xe5, 0x93, 0xd8, 0x93, 0xc3, 0x93, 0xdd, - 0x93, 0xd0, 0x93, 0xc8, 0x93, 0xe4, 0x94, 0x1a, - 0x94, 0x14, 0x94, 0x13, 0x94, 0x03, 0x94, 0x07, - 0x94, 0x10, 0x94, 0x36, 0x94, 0x2b, 0x94, 0x35, - 0x94, 0x21, 0x94, 0x3a, 0x94, 0x41, 0x94, 0x52, - 0x94, 0x44, 0x94, 0x5b, 0x94, 0x60, 0x94, 0x62, - 0x94, 0x5e, 0x94, 0x6a, 0x92, 0x29, 0x94, 0x70, - 0x94, 0x75, 0x94, 0x77, 0x94, 0x7d, 0x94, 0x5a, - 0x94, 0x7c, 0x94, 0x7e, 0x94, 0x81, 0x94, 0x7f, - 0x95, 0x82, 0x95, 0x87, 0x95, 0x8a, 0x95, 0x94, - 0x95, 0x96, 0x95, 0x98, 0x95, 0x99, 0x00, 0x20, - 0x95, 0xa0, 0x95, 0xa8, 0x95, 0xa7, 0x95, 0xad, - 0x95, 0xbc, 0x95, 0xbb, 0x95, 0xb9, 0x95, 0xbe, - 0x95, 0xca, 0x6f, 0xf6, 0x95, 0xc3, 0x95, 0xcd, - 0x95, 0xcc, 0x95, 0xd5, 0x95, 0xd4, 0x95, 0xd6, - 0x95, 0xdc, 0x95, 0xe1, 0x95, 0xe5, 0x95, 0xe2, - 0x96, 0x21, 0x96, 0x28, 0x96, 0x2e, 0x96, 0x2f, - 0x96, 0x42, 0x96, 0x4c, 0x96, 0x4f, 0x96, 0x4b, - 0x96, 0x77, 0x96, 0x5c, 0x96, 0x5e, 0x96, 0x5d, - 0x96, 0x5f, 0x96, 0x66, 0x96, 0x72, 0x96, 0x6c, - 0x96, 0x8d, 0x96, 0x98, 0x96, 0x95, 0x96, 0x97, - 0x96, 0xaa, 0x96, 0xa7, 0x96, 0xb1, 0x96, 0xb2, - 0x96, 0xb0, 0x96, 0xb4, 0x96, 0xb6, 0x96, 0xb8, - 0x96, 0xb9, 0x96, 0xce, 0x96, 0xcb, 0x96, 0xc9, - 0x96, 0xcd, 0x89, 0x4d, 0x96, 0xdc, 0x97, 0x0d, - 0x96, 0xd5, 0x96, 0xf9, 0x97, 0x04, 0x97, 0x06, - 0x97, 0x08, 0x97, 0x13, 0x97, 0x0e, 0x97, 0x11, - 0x97, 0x0f, 0x97, 0x16, 0x97, 0x19, 0x97, 0x24, - 0x97, 0x2a, 0x97, 0x30, 0x97, 0x39, 0x97, 0x3d, - 0x97, 0x3e, 0x97, 0x44, 0x97, 0x46, 0x97, 0x48, - 0x97, 0x42, 0x97, 0x49, 0x97, 0x5c, 0x97, 0x60, - 0x97, 0x64, 0x97, 0x66, 0x97, 0x68, 0x52, 0xd2, - 0x97, 0x6b, 0x97, 0x71, 0x97, 0x79, 0x97, 0x85, - 0x97, 0x7c, 0x97, 0x81, 0x97, 0x7a, 0x97, 0x86, - 0x97, 0x8b, 0x97, 0x8f, 0x97, 0x90, 0x97, 0x9c, - 0x97, 0xa8, 0x97, 0xa6, 0x97, 0xa3, 0x97, 0xb3, - 0x97, 0xb4, 0x97, 0xc3, 0x97, 0xc6, 0x97, 0xc8, - 0x97, 0xcb, 0x97, 0xdc, 0x97, 0xed, 0x9f, 0x4f, - 0x97, 0xf2, 0x7a, 0xdf, 0x97, 0xf6, 0x97, 0xf5, - 0x98, 0x0f, 0x98, 0x0c, 0x98, 0x38, 0x98, 0x24, - 0x98, 0x21, 0x98, 0x37, 0x98, 0x3d, 0x98, 0x46, - 0x98, 0x4f, 0x98, 0x4b, 0x98, 0x6b, 0x98, 0x6f, - 0x98, 0x70, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x98, 0x71, 0x98, 0x74, 0x98, 0x73, 0x98, 0xaa, - 0x98, 0xaf, 0x98, 0xb1, 0x98, 0xb6, 0x98, 0xc4, - 0x98, 0xc3, 0x98, 0xc6, 0x98, 0xe9, 0x98, 0xeb, - 0x99, 0x03, 0x99, 0x09, 0x99, 0x12, 0x99, 0x14, - 0x99, 0x18, 0x99, 0x21, 0x99, 0x1d, 0x99, 0x1e, - 0x99, 0x24, 0x99, 0x20, 0x99, 0x2c, 0x99, 0x2e, - 0x99, 0x3d, 0x99, 0x3e, 0x99, 0x42, 0x99, 0x49, - 0x99, 0x45, 0x99, 0x50, 0x99, 0x4b, 0x99, 0x51, - 0x99, 0x52, 0x99, 0x4c, 0x99, 0x55, 0x99, 0x97, - 0x99, 0x98, 0x99, 0xa5, 0x99, 0xad, 0x99, 0xae, - 0x99, 0xbc, 0x99, 0xdf, 0x99, 0xdb, 0x99, 0xdd, - 0x99, 0xd8, 0x99, 0xd1, 0x99, 0xed, 0x99, 0xee, - 0x99, 0xf1, 0x99, 0xf2, 0x99, 0xfb, 0x99, 0xf8, - 0x9a, 0x01, 0x9a, 0x0f, 0x9a, 0x05, 0x99, 0xe2, - 0x9a, 0x19, 0x9a, 0x2b, 0x9a, 0x37, 0x9a, 0x45, - 0x9a, 0x42, 0x9a, 0x40, 0x9a, 0x43, 0x00, 0x20, - 0x9a, 0x3e, 0x9a, 0x55, 0x9a, 0x4d, 0x9a, 0x5b, - 0x9a, 0x57, 0x9a, 0x5f, 0x9a, 0x62, 0x9a, 0x65, - 0x9a, 0x64, 0x9a, 0x69, 0x9a, 0x6b, 0x9a, 0x6a, - 0x9a, 0xad, 0x9a, 0xb0, 0x9a, 0xbc, 0x9a, 0xc0, - 0x9a, 0xcf, 0x9a, 0xd1, 0x9a, 0xd3, 0x9a, 0xd4, - 0x9a, 0xde, 0x9a, 0xdf, 0x9a, 0xe2, 0x9a, 0xe3, - 0x9a, 0xe6, 0x9a, 0xef, 0x9a, 0xeb, 0x9a, 0xee, - 0x9a, 0xf4, 0x9a, 0xf1, 0x9a, 0xf7, 0x9a, 0xfb, - 0x9b, 0x06, 0x9b, 0x18, 0x9b, 0x1a, 0x9b, 0x1f, - 0x9b, 0x22, 0x9b, 0x23, 0x9b, 0x25, 0x9b, 0x27, - 0x9b, 0x28, 0x9b, 0x29, 0x9b, 0x2a, 0x9b, 0x2e, - 0x9b, 0x2f, 0x9b, 0x32, 0x9b, 0x44, 0x9b, 0x43, - 0x9b, 0x4f, 0x9b, 0x4d, 0x9b, 0x4e, 0x9b, 0x51, - 0x9b, 0x58, 0x9b, 0x74, 0x9b, 0x93, 0x9b, 0x83, - 0x9b, 0x91, 0x9b, 0x96, 0x9b, 0x97, 0x9b, 0x9f, - 0x9b, 0xa0, 0x9b, 0xa8, 0x9b, 0xb4, 0x9b, 0xc0, - 0x9b, 0xca, 0x9b, 0xb9, 0x9b, 0xc6, 0x9b, 0xcf, - 0x9b, 0xd1, 0x9b, 0xd2, 0x9b, 0xe3, 0x9b, 0xe2, - 0x9b, 0xe4, 0x9b, 0xd4, 0x9b, 0xe1, 0x9c, 0x3a, - 0x9b, 0xf2, 0x9b, 0xf1, 0x9b, 0xf0, 0x9c, 0x15, - 0x9c, 0x14, 0x9c, 0x09, 0x9c, 0x13, 0x9c, 0x0c, - 0x9c, 0x06, 0x9c, 0x08, 0x9c, 0x12, 0x9c, 0x0a, - 0x9c, 0x04, 0x9c, 0x2e, 0x9c, 0x1b, 0x9c, 0x25, - 0x9c, 0x24, 0x9c, 0x21, 0x9c, 0x30, 0x9c, 0x47, - 0x9c, 0x32, 0x9c, 0x46, 0x9c, 0x3e, 0x9c, 0x5a, - 0x9c, 0x60, 0x9c, 0x67, 0x9c, 0x76, 0x9c, 0x78, - 0x9c, 0xe7, 0x9c, 0xec, 0x9c, 0xf0, 0x9d, 0x09, - 0x9d, 0x08, 0x9c, 0xeb, 0x9d, 0x03, 0x9d, 0x06, - 0x9d, 0x2a, 0x9d, 0x26, 0x9d, 0xaf, 0x9d, 0x23, - 0x9d, 0x1f, 0x9d, 0x44, 0x9d, 0x15, 0x9d, 0x12, - 0x9d, 0x41, 0x9d, 0x3f, 0x9d, 0x3e, 0x9d, 0x46, - 0x9d, 0x48, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x9d, 0x5d, 0x9d, 0x5e, 0x9d, 0x64, 0x9d, 0x51, - 0x9d, 0x50, 0x9d, 0x59, 0x9d, 0x72, 0x9d, 0x89, - 0x9d, 0x87, 0x9d, 0xab, 0x9d, 0x6f, 0x9d, 0x7a, - 0x9d, 0x9a, 0x9d, 0xa4, 0x9d, 0xa9, 0x9d, 0xb2, - 0x9d, 0xc4, 0x9d, 0xc1, 0x9d, 0xbb, 0x9d, 0xb8, - 0x9d, 0xba, 0x9d, 0xc6, 0x9d, 0xcf, 0x9d, 0xc2, - 0x9d, 0xd9, 0x9d, 0xd3, 0x9d, 0xf8, 0x9d, 0xe6, - 0x9d, 0xed, 0x9d, 0xef, 0x9d, 0xfd, 0x9e, 0x1a, - 0x9e, 0x1b, 0x9e, 0x1e, 0x9e, 0x75, 0x9e, 0x79, - 0x9e, 0x7d, 0x9e, 0x81, 0x9e, 0x88, 0x9e, 0x8b, - 0x9e, 0x8c, 0x9e, 0x92, 0x9e, 0x95, 0x9e, 0x91, - 0x9e, 0x9d, 0x9e, 0xa5, 0x9e, 0xa9, 0x9e, 0xb8, - 0x9e, 0xaa, 0x9e, 0xad, 0x97, 0x61, 0x9e, 0xcc, - 0x9e, 0xce, 0x9e, 0xcf, 0x9e, 0xd0, 0x9e, 0xd4, - 0x9e, 0xdc, 0x9e, 0xde, 0x9e, 0xdd, 0x9e, 0xe0, - 0x9e, 0xe5, 0x9e, 0xe8, 0x9e, 0xef, 0x00, 0x20, - 0x9e, 0xf4, 0x9e, 0xf6, 0x9e, 0xf7, 0x9e, 0xf9, - 0x9e, 0xfb, 0x9e, 0xfc, 0x9e, 0xfd, 0x9f, 0x07, - 0x9f, 0x08, 0x76, 0xb7, 0x9f, 0x15, 0x9f, 0x21, - 0x9f, 0x2c, 0x9f, 0x3e, 0x9f, 0x4a, 0x9f, 0x52, - 0x9f, 0x54, 0x9f, 0x63, 0x9f, 0x5f, 0x9f, 0x60, - 0x9f, 0x61, 0x9f, 0x66, 0x9f, 0x67, 0x9f, 0x6c, - 0x9f, 0x6a, 0x9f, 0x77, 0x9f, 0x72, 0x9f, 0x76, - 0x9f, 0x95, 0x9f, 0x9c, 0x9f, 0xa0, 0x58, 0x2f, - 0x69, 0xc7, 0x90, 0x59, 0x74, 0x64, 0x51, 0xdc, - 0x71, 0x99, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, - }; +namespace bms_parser { +namespace ShiftJISConverter { +void BytesToUTF8(const unsigned char *input, size_t size, std::string &result); } + +static const unsigned char shiftJIS_convTable[25088] = { + 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, + 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, + 0x00, 0x0c, 0x00, 0x0d, 0x00, 0x0e, 0x00, 0x0f, 0x00, 0x10, 0x00, 0x11, + 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, + 0x00, 0x18, 0x00, 0x19, 0x00, 0x1a, 0x00, 0x1b, 0x00, 0x1c, 0x00, 0x1d, + 0x00, 0x1e, 0x00, 0x1f, 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, + 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00, 0x29, + 0x00, 0x2a, 0x00, 0x2b, 0x00, 0x2c, 0x00, 0x2d, 0x00, 0x2e, 0x00, 0x2f, + 0x00, 0x30, 0x00, 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, + 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00, 0x39, 0x00, 0x3a, 0x00, 0x3b, + 0x00, 0x3c, 0x00, 0x3d, 0x00, 0x3e, 0x00, 0x3f, 0x00, 0x40, 0x00, 0x41, + 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, + 0x00, 0x48, 0x00, 0x49, 0x00, 0x4a, 0x00, 0x4b, 0x00, 0x4c, 0x00, 0x4d, + 0x00, 0x4e, 0x00, 0x4f, 0x00, 0x50, 0x00, 0x51, 0x00, 0x52, 0x00, 0x53, + 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00, 0x59, + 0x00, 0x5a, 0x00, 0x5b, 0x00, 0xa5, 0x00, 0x5d, 0x00, 0x5e, 0x00, 0x5f, + 0x00, 0x60, 0x00, 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, + 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6a, 0x00, 0x6b, + 0x00, 0x6c, 0x00, 0x6d, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x71, + 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, + 0x00, 0x78, 0x00, 0x79, 0x00, 0x7a, 0x00, 0x7b, 0x00, 0x7c, 0x00, 0x7d, + 0x20, 0x3e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0xff, 0x61, + 0xff, 0x62, 0xff, 0x63, 0xff, 0x64, 0xff, 0x65, 0xff, 0x66, 0xff, 0x67, + 0xff, 0x68, 0xff, 0x69, 0xff, 0x6a, 0xff, 0x6b, 0xff, 0x6c, 0xff, 0x6d, + 0xff, 0x6e, 0xff, 0x6f, 0xff, 0x70, 0xff, 0x71, 0xff, 0x72, 0xff, 0x73, + 0xff, 0x74, 0xff, 0x75, 0xff, 0x76, 0xff, 0x77, 0xff, 0x78, 0xff, 0x79, + 0xff, 0x7a, 0xff, 0x7b, 0xff, 0x7c, 0xff, 0x7d, 0xff, 0x7e, 0xff, 0x7f, + 0xff, 0x80, 0xff, 0x81, 0xff, 0x82, 0xff, 0x83, 0xff, 0x84, 0xff, 0x85, + 0xff, 0x86, 0xff, 0x87, 0xff, 0x88, 0xff, 0x89, 0xff, 0x8a, 0xff, 0x8b, + 0xff, 0x8c, 0xff, 0x8d, 0xff, 0x8e, 0xff, 0x8f, 0xff, 0x90, 0xff, 0x91, + 0xff, 0x92, 0xff, 0x93, 0xff, 0x94, 0xff, 0x95, 0xff, 0x96, 0xff, 0x97, + 0xff, 0x98, 0xff, 0x99, 0xff, 0x9a, 0xff, 0x9b, 0xff, 0x9c, 0xff, 0x9d, + 0xff, 0x9e, 0xff, 0x9f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x30, 0x00, 0x30, 0x01, 0x30, 0x02, 0xff, 0x0c, 0xff, 0x0e, 0x30, 0xfb, + 0xff, 0x1a, 0xff, 0x1b, 0xff, 0x1f, 0xff, 0x01, 0x30, 0x9b, 0x30, 0x9c, + 0x00, 0xb4, 0xff, 0x40, 0x00, 0xa8, 0xff, 0x3e, 0xff, 0xe3, 0xff, 0x3f, + 0x30, 0xfd, 0x30, 0xfe, 0x30, 0x9d, 0x30, 0x9e, 0x30, 0x03, 0x4e, 0xdd, + 0x30, 0x05, 0x30, 0x06, 0x30, 0x07, 0x30, 0xfc, 0x20, 0x15, 0x20, 0x10, + 0xff, 0x0f, 0x00, 0x5c, 0x30, 0x1c, 0x20, 0x16, 0xff, 0x5c, 0x20, 0x26, + 0x20, 0x25, 0x20, 0x18, 0x20, 0x19, 0x20, 0x1c, 0x20, 0x1d, 0xff, 0x08, + 0xff, 0x09, 0x30, 0x14, 0x30, 0x15, 0xff, 0x3b, 0xff, 0x3d, 0xff, 0x5b, + 0xff, 0x5d, 0x30, 0x08, 0x30, 0x09, 0x30, 0x0a, 0x30, 0x0b, 0x30, 0x0c, + 0x30, 0x0d, 0x30, 0x0e, 0x30, 0x0f, 0x30, 0x10, 0x30, 0x11, 0xff, 0x0b, + 0x22, 0x12, 0x00, 0xb1, 0x00, 0xd7, 0x00, 0x20, 0x00, 0xf7, 0xff, 0x1d, + 0x22, 0x60, 0xff, 0x1c, 0xff, 0x1e, 0x22, 0x66, 0x22, 0x67, 0x22, 0x1e, + 0x22, 0x34, 0x26, 0x42, 0x26, 0x40, 0x00, 0xb0, 0x20, 0x32, 0x20, 0x33, + 0x21, 0x03, 0xff, 0xe5, 0xff, 0x04, 0x00, 0xa2, 0x00, 0xa3, 0xff, 0x05, + 0xff, 0x03, 0xff, 0x06, 0xff, 0x0a, 0xff, 0x20, 0x00, 0xa7, 0x26, 0x06, + 0x26, 0x05, 0x25, 0xcb, 0x25, 0xcf, 0x25, 0xce, 0x25, 0xc7, 0x25, 0xc6, + 0x25, 0xa1, 0x25, 0xa0, 0x25, 0xb3, 0x25, 0xb2, 0x25, 0xbd, 0x25, 0xbc, + 0x20, 0x3b, 0x30, 0x12, 0x21, 0x92, 0x21, 0x90, 0x21, 0x91, 0x21, 0x93, + 0x30, 0x13, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x22, 0x08, 0x22, 0x0b, 0x22, 0x86, 0x22, 0x87, 0x22, 0x82, 0x22, 0x83, + 0x22, 0x2a, 0x22, 0x29, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x22, 0x27, 0x22, 0x28, + 0x00, 0xac, 0x21, 0xd2, 0x21, 0xd4, 0x22, 0x00, 0x22, 0x03, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x22, 0x20, 0x22, 0xa5, + 0x23, 0x12, 0x22, 0x02, 0x22, 0x07, 0x22, 0x61, 0x22, 0x52, 0x22, 0x6a, + 0x22, 0x6b, 0x22, 0x1a, 0x22, 0x3d, 0x22, 0x1d, 0x22, 0x35, 0x22, 0x2b, + 0x22, 0x2c, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x21, 0x2b, 0x20, 0x30, 0x26, 0x6f, 0x26, 0x6d, + 0x26, 0x6a, 0x20, 0x20, 0x20, 0x21, 0x00, 0xb6, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x25, 0xef, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0xff, 0x10, 0xff, 0x11, 0xff, 0x12, 0xff, 0x13, 0xff, 0x14, + 0xff, 0x15, 0xff, 0x16, 0xff, 0x17, 0xff, 0x18, 0xff, 0x19, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0xff, 0x21, 0xff, 0x22, 0xff, 0x23, 0xff, 0x24, 0xff, 0x25, 0xff, 0x26, + 0xff, 0x27, 0xff, 0x28, 0xff, 0x29, 0xff, 0x2a, 0xff, 0x2b, 0xff, 0x2c, + 0xff, 0x2d, 0xff, 0x2e, 0xff, 0x2f, 0xff, 0x30, 0xff, 0x31, 0xff, 0x32, + 0xff, 0x33, 0xff, 0x34, 0xff, 0x35, 0xff, 0x36, 0xff, 0x37, 0xff, 0x38, + 0xff, 0x39, 0xff, 0x3a, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0xff, 0x41, 0xff, 0x42, 0xff, 0x43, + 0xff, 0x44, 0xff, 0x45, 0xff, 0x46, 0xff, 0x47, 0xff, 0x48, 0xff, 0x49, + 0xff, 0x4a, 0xff, 0x4b, 0xff, 0x4c, 0xff, 0x4d, 0xff, 0x4e, 0xff, 0x4f, + 0xff, 0x50, 0xff, 0x51, 0xff, 0x52, 0xff, 0x53, 0xff, 0x54, 0xff, 0x55, + 0xff, 0x56, 0xff, 0x57, 0xff, 0x58, 0xff, 0x59, 0xff, 0x5a, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x30, 0x41, 0x30, 0x42, 0x30, 0x43, + 0x30, 0x44, 0x30, 0x45, 0x30, 0x46, 0x30, 0x47, 0x30, 0x48, 0x30, 0x49, + 0x30, 0x4a, 0x30, 0x4b, 0x30, 0x4c, 0x30, 0x4d, 0x30, 0x4e, 0x30, 0x4f, + 0x30, 0x50, 0x30, 0x51, 0x30, 0x52, 0x30, 0x53, 0x30, 0x54, 0x30, 0x55, + 0x30, 0x56, 0x30, 0x57, 0x30, 0x58, 0x30, 0x59, 0x30, 0x5a, 0x30, 0x5b, + 0x30, 0x5c, 0x30, 0x5d, 0x30, 0x5e, 0x30, 0x5f, 0x30, 0x60, 0x30, 0x61, + 0x30, 0x62, 0x30, 0x63, 0x30, 0x64, 0x30, 0x65, 0x30, 0x66, 0x30, 0x67, + 0x30, 0x68, 0x30, 0x69, 0x30, 0x6a, 0x30, 0x6b, 0x30, 0x6c, 0x30, 0x6d, + 0x30, 0x6e, 0x30, 0x6f, 0x30, 0x70, 0x30, 0x71, 0x30, 0x72, 0x30, 0x73, + 0x30, 0x74, 0x30, 0x75, 0x30, 0x76, 0x30, 0x77, 0x30, 0x78, 0x30, 0x79, + 0x30, 0x7a, 0x30, 0x7b, 0x30, 0x7c, 0x30, 0x7d, 0x30, 0x7e, 0x30, 0x7f, + 0x30, 0x80, 0x30, 0x81, 0x30, 0x82, 0x30, 0x83, 0x30, 0x84, 0x30, 0x85, + 0x30, 0x86, 0x30, 0x87, 0x30, 0x88, 0x30, 0x89, 0x30, 0x8a, 0x30, 0x8b, + 0x30, 0x8c, 0x30, 0x8d, 0x30, 0x8e, 0x30, 0x8f, 0x30, 0x90, 0x30, 0x91, + 0x30, 0x92, 0x30, 0x93, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x30, 0xa1, 0x30, 0xa2, 0x30, 0xa3, 0x30, 0xa4, + 0x30, 0xa5, 0x30, 0xa6, 0x30, 0xa7, 0x30, 0xa8, 0x30, 0xa9, 0x30, 0xaa, + 0x30, 0xab, 0x30, 0xac, 0x30, 0xad, 0x30, 0xae, 0x30, 0xaf, 0x30, 0xb0, + 0x30, 0xb1, 0x30, 0xb2, 0x30, 0xb3, 0x30, 0xb4, 0x30, 0xb5, 0x30, 0xb6, + 0x30, 0xb7, 0x30, 0xb8, 0x30, 0xb9, 0x30, 0xba, 0x30, 0xbb, 0x30, 0xbc, + 0x30, 0xbd, 0x30, 0xbe, 0x30, 0xbf, 0x30, 0xc0, 0x30, 0xc1, 0x30, 0xc2, + 0x30, 0xc3, 0x30, 0xc4, 0x30, 0xc5, 0x30, 0xc6, 0x30, 0xc7, 0x30, 0xc8, + 0x30, 0xc9, 0x30, 0xca, 0x30, 0xcb, 0x30, 0xcc, 0x30, 0xcd, 0x30, 0xce, + 0x30, 0xcf, 0x30, 0xd0, 0x30, 0xd1, 0x30, 0xd2, 0x30, 0xd3, 0x30, 0xd4, + 0x30, 0xd5, 0x30, 0xd6, 0x30, 0xd7, 0x30, 0xd8, 0x30, 0xd9, 0x30, 0xda, + 0x30, 0xdb, 0x30, 0xdc, 0x30, 0xdd, 0x30, 0xde, 0x30, 0xdf, 0x00, 0x20, + 0x30, 0xe0, 0x30, 0xe1, 0x30, 0xe2, 0x30, 0xe3, 0x30, 0xe4, 0x30, 0xe5, + 0x30, 0xe6, 0x30, 0xe7, 0x30, 0xe8, 0x30, 0xe9, 0x30, 0xea, 0x30, 0xeb, + 0x30, 0xec, 0x30, 0xed, 0x30, 0xee, 0x30, 0xef, 0x30, 0xf0, 0x30, 0xf1, + 0x30, 0xf2, 0x30, 0xf3, 0x30, 0xf4, 0x30, 0xf5, 0x30, 0xf6, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x03, 0x91, 0x03, 0x92, 0x03, 0x93, 0x03, 0x94, 0x03, 0x95, + 0x03, 0x96, 0x03, 0x97, 0x03, 0x98, 0x03, 0x99, 0x03, 0x9a, 0x03, 0x9b, + 0x03, 0x9c, 0x03, 0x9d, 0x03, 0x9e, 0x03, 0x9f, 0x03, 0xa0, 0x03, 0xa1, + 0x03, 0xa3, 0x03, 0xa4, 0x03, 0xa5, 0x03, 0xa6, 0x03, 0xa7, 0x03, 0xa8, + 0x03, 0xa9, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x03, 0xb1, 0x03, 0xb2, 0x03, 0xb3, + 0x03, 0xb4, 0x03, 0xb5, 0x03, 0xb6, 0x03, 0xb7, 0x03, 0xb8, 0x03, 0xb9, + 0x03, 0xba, 0x03, 0xbb, 0x03, 0xbc, 0x03, 0xbd, 0x03, 0xbe, 0x03, 0xbf, + 0x03, 0xc0, 0x03, 0xc1, 0x03, 0xc3, 0x03, 0xc4, 0x03, 0xc5, 0x03, 0xc6, + 0x03, 0xc7, 0x03, 0xc8, 0x03, 0xc9, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x04, 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, 0x04, 0x14, 0x04, 0x15, + 0x04, 0x01, 0x04, 0x16, 0x04, 0x17, 0x04, 0x18, 0x04, 0x19, 0x04, 0x1a, + 0x04, 0x1b, 0x04, 0x1c, 0x04, 0x1d, 0x04, 0x1e, 0x04, 0x1f, 0x04, 0x20, + 0x04, 0x21, 0x04, 0x22, 0x04, 0x23, 0x04, 0x24, 0x04, 0x25, 0x04, 0x26, + 0x04, 0x27, 0x04, 0x28, 0x04, 0x29, 0x04, 0x2a, 0x04, 0x2b, 0x04, 0x2c, + 0x04, 0x2d, 0x04, 0x2e, 0x04, 0x2f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x04, 0x30, 0x04, 0x31, 0x04, 0x32, 0x04, 0x33, 0x04, 0x34, 0x04, 0x35, + 0x04, 0x51, 0x04, 0x36, 0x04, 0x37, 0x04, 0x38, 0x04, 0x39, 0x04, 0x3a, + 0x04, 0x3b, 0x04, 0x3c, 0x04, 0x3d, 0x00, 0x20, 0x04, 0x3e, 0x04, 0x3f, + 0x04, 0x40, 0x04, 0x41, 0x04, 0x42, 0x04, 0x43, 0x04, 0x44, 0x04, 0x45, + 0x04, 0x46, 0x04, 0x47, 0x04, 0x48, 0x04, 0x49, 0x04, 0x4a, 0x04, 0x4b, + 0x04, 0x4c, 0x04, 0x4d, 0x04, 0x4e, 0x04, 0x4f, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x25, 0x00, + 0x25, 0x02, 0x25, 0x0c, 0x25, 0x10, 0x25, 0x18, 0x25, 0x14, 0x25, 0x1c, + 0x25, 0x2c, 0x25, 0x24, 0x25, 0x34, 0x25, 0x3c, 0x25, 0x01, 0x25, 0x03, + 0x25, 0x0f, 0x25, 0x13, 0x25, 0x1b, 0x25, 0x17, 0x25, 0x23, 0x25, 0x33, + 0x25, 0x2b, 0x25, 0x3b, 0x25, 0x4b, 0x25, 0x20, 0x25, 0x2f, 0x25, 0x28, + 0x25, 0x37, 0x25, 0x3f, 0x25, 0x1d, 0x25, 0x30, 0x25, 0x25, 0x25, 0x38, + 0x25, 0x42, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x4e, 0x9c, 0x55, 0x16, 0x5a, 0x03, + 0x96, 0x3f, 0x54, 0xc0, 0x61, 0x1b, 0x63, 0x28, 0x59, 0xf6, 0x90, 0x22, + 0x84, 0x75, 0x83, 0x1c, 0x7a, 0x50, 0x60, 0xaa, 0x63, 0xe1, 0x6e, 0x25, + 0x65, 0xed, 0x84, 0x66, 0x82, 0xa6, 0x9b, 0xf5, 0x68, 0x93, 0x57, 0x27, + 0x65, 0xa1, 0x62, 0x71, 0x5b, 0x9b, 0x59, 0xd0, 0x86, 0x7b, 0x98, 0xf4, + 0x7d, 0x62, 0x7d, 0xbe, 0x9b, 0x8e, 0x62, 0x16, 0x7c, 0x9f, 0x88, 0xb7, + 0x5b, 0x89, 0x5e, 0xb5, 0x63, 0x09, 0x66, 0x97, 0x68, 0x48, 0x95, 0xc7, + 0x97, 0x8d, 0x67, 0x4f, 0x4e, 0xe5, 0x4f, 0x0a, 0x4f, 0x4d, 0x4f, 0x9d, + 0x50, 0x49, 0x56, 0xf2, 0x59, 0x37, 0x59, 0xd4, 0x5a, 0x01, 0x5c, 0x09, + 0x60, 0xdf, 0x61, 0x0f, 0x61, 0x70, 0x66, 0x13, 0x69, 0x05, 0x70, 0xba, + 0x75, 0x4f, 0x75, 0x70, 0x79, 0xfb, 0x7d, 0xad, 0x7d, 0xef, 0x80, 0xc3, + 0x84, 0x0e, 0x88, 0x63, 0x8b, 0x02, 0x90, 0x55, 0x90, 0x7a, 0x53, 0x3b, + 0x4e, 0x95, 0x4e, 0xa5, 0x57, 0xdf, 0x80, 0xb2, 0x90, 0xc1, 0x78, 0xef, + 0x4e, 0x00, 0x58, 0xf1, 0x6e, 0xa2, 0x90, 0x38, 0x7a, 0x32, 0x83, 0x28, + 0x82, 0x8b, 0x9c, 0x2f, 0x51, 0x41, 0x53, 0x70, 0x54, 0xbd, 0x54, 0xe1, + 0x56, 0xe0, 0x59, 0xfb, 0x5f, 0x15, 0x98, 0xf2, 0x6d, 0xeb, 0x80, 0xe4, + 0x85, 0x2d, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x96, 0x62, 0x96, 0x70, 0x96, 0xa0, 0x97, 0xfb, + 0x54, 0x0b, 0x53, 0xf3, 0x5b, 0x87, 0x70, 0xcf, 0x7f, 0xbd, 0x8f, 0xc2, + 0x96, 0xe8, 0x53, 0x6f, 0x9d, 0x5c, 0x7a, 0xba, 0x4e, 0x11, 0x78, 0x93, + 0x81, 0xfc, 0x6e, 0x26, 0x56, 0x18, 0x55, 0x04, 0x6b, 0x1d, 0x85, 0x1a, + 0x9c, 0x3b, 0x59, 0xe5, 0x53, 0xa9, 0x6d, 0x66, 0x74, 0xdc, 0x95, 0x8f, + 0x56, 0x42, 0x4e, 0x91, 0x90, 0x4b, 0x96, 0xf2, 0x83, 0x4f, 0x99, 0x0c, + 0x53, 0xe1, 0x55, 0xb6, 0x5b, 0x30, 0x5f, 0x71, 0x66, 0x20, 0x66, 0xf3, + 0x68, 0x04, 0x6c, 0x38, 0x6c, 0xf3, 0x6d, 0x29, 0x74, 0x5b, 0x76, 0xc8, + 0x7a, 0x4e, 0x98, 0x34, 0x82, 0xf1, 0x88, 0x5b, 0x8a, 0x60, 0x92, 0xed, + 0x6d, 0xb2, 0x75, 0xab, 0x76, 0xca, 0x99, 0xc5, 0x60, 0xa6, 0x8b, 0x01, + 0x8d, 0x8a, 0x95, 0xb2, 0x69, 0x8e, 0x53, 0xad, 0x51, 0x86, 0x00, 0x20, + 0x57, 0x12, 0x58, 0x30, 0x59, 0x44, 0x5b, 0xb4, 0x5e, 0xf6, 0x60, 0x28, + 0x63, 0xa9, 0x63, 0xf4, 0x6c, 0xbf, 0x6f, 0x14, 0x70, 0x8e, 0x71, 0x14, + 0x71, 0x59, 0x71, 0xd5, 0x73, 0x3f, 0x7e, 0x01, 0x82, 0x76, 0x82, 0xd1, + 0x85, 0x97, 0x90, 0x60, 0x92, 0x5b, 0x9d, 0x1b, 0x58, 0x69, 0x65, 0xbc, + 0x6c, 0x5a, 0x75, 0x25, 0x51, 0xf9, 0x59, 0x2e, 0x59, 0x65, 0x5f, 0x80, + 0x5f, 0xdc, 0x62, 0xbc, 0x65, 0xfa, 0x6a, 0x2a, 0x6b, 0x27, 0x6b, 0xb4, + 0x73, 0x8b, 0x7f, 0xc1, 0x89, 0x56, 0x9d, 0x2c, 0x9d, 0x0e, 0x9e, 0xc4, + 0x5c, 0xa1, 0x6c, 0x96, 0x83, 0x7b, 0x51, 0x04, 0x5c, 0x4b, 0x61, 0xb6, + 0x81, 0xc6, 0x68, 0x76, 0x72, 0x61, 0x4e, 0x59, 0x4f, 0xfa, 0x53, 0x78, + 0x60, 0x69, 0x6e, 0x29, 0x7a, 0x4f, 0x97, 0xf3, 0x4e, 0x0b, 0x53, 0x16, + 0x4e, 0xee, 0x4f, 0x55, 0x4f, 0x3d, 0x4f, 0xa1, 0x4f, 0x73, 0x52, 0xa0, + 0x53, 0xef, 0x56, 0x09, 0x59, 0x0f, 0x5a, 0xc1, 0x5b, 0xb6, 0x5b, 0xe1, + 0x79, 0xd1, 0x66, 0x87, 0x67, 0x9c, 0x67, 0xb6, 0x6b, 0x4c, 0x6c, 0xb3, + 0x70, 0x6b, 0x73, 0xc2, 0x79, 0x8d, 0x79, 0xbe, 0x7a, 0x3c, 0x7b, 0x87, + 0x82, 0xb1, 0x82, 0xdb, 0x83, 0x04, 0x83, 0x77, 0x83, 0xef, 0x83, 0xd3, + 0x87, 0x66, 0x8a, 0xb2, 0x56, 0x29, 0x8c, 0xa8, 0x8f, 0xe6, 0x90, 0x4e, + 0x97, 0x1e, 0x86, 0x8a, 0x4f, 0xc4, 0x5c, 0xe8, 0x62, 0x11, 0x72, 0x59, + 0x75, 0x3b, 0x81, 0xe5, 0x82, 0xbd, 0x86, 0xfe, 0x8c, 0xc0, 0x96, 0xc5, + 0x99, 0x13, 0x99, 0xd5, 0x4e, 0xcb, 0x4f, 0x1a, 0x89, 0xe3, 0x56, 0xde, + 0x58, 0x4a, 0x58, 0xca, 0x5e, 0xfb, 0x5f, 0xeb, 0x60, 0x2a, 0x60, 0x94, + 0x60, 0x62, 0x61, 0xd0, 0x62, 0x12, 0x62, 0xd0, 0x65, 0x39, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x9b, 0x41, 0x66, 0x66, 0x68, 0xb0, 0x6d, 0x77, 0x70, 0x70, 0x75, 0x4c, + 0x76, 0x86, 0x7d, 0x75, 0x82, 0xa5, 0x87, 0xf9, 0x95, 0x8b, 0x96, 0x8e, + 0x8c, 0x9d, 0x51, 0xf1, 0x52, 0xbe, 0x59, 0x16, 0x54, 0xb3, 0x5b, 0xb3, + 0x5d, 0x16, 0x61, 0x68, 0x69, 0x82, 0x6d, 0xaf, 0x78, 0x8d, 0x84, 0xcb, + 0x88, 0x57, 0x8a, 0x72, 0x93, 0xa7, 0x9a, 0xb8, 0x6d, 0x6c, 0x99, 0xa8, + 0x86, 0xd9, 0x57, 0xa3, 0x67, 0xff, 0x86, 0xce, 0x92, 0x0e, 0x52, 0x83, + 0x56, 0x87, 0x54, 0x04, 0x5e, 0xd3, 0x62, 0xe1, 0x64, 0xb9, 0x68, 0x3c, + 0x68, 0x38, 0x6b, 0xbb, 0x73, 0x72, 0x78, 0xba, 0x7a, 0x6b, 0x89, 0x9a, + 0x89, 0xd2, 0x8d, 0x6b, 0x8f, 0x03, 0x90, 0xed, 0x95, 0xa3, 0x96, 0x94, + 0x97, 0x69, 0x5b, 0x66, 0x5c, 0xb3, 0x69, 0x7d, 0x98, 0x4d, 0x98, 0x4e, + 0x63, 0x9b, 0x7b, 0x20, 0x6a, 0x2b, 0x00, 0x20, 0x6a, 0x7f, 0x68, 0xb6, + 0x9c, 0x0d, 0x6f, 0x5f, 0x52, 0x72, 0x55, 0x9d, 0x60, 0x70, 0x62, 0xec, + 0x6d, 0x3b, 0x6e, 0x07, 0x6e, 0xd1, 0x84, 0x5b, 0x89, 0x10, 0x8f, 0x44, + 0x4e, 0x14, 0x9c, 0x39, 0x53, 0xf6, 0x69, 0x1b, 0x6a, 0x3a, 0x97, 0x84, + 0x68, 0x2a, 0x51, 0x5c, 0x7a, 0xc3, 0x84, 0xb2, 0x91, 0xdc, 0x93, 0x8c, + 0x56, 0x5b, 0x9d, 0x28, 0x68, 0x22, 0x83, 0x05, 0x84, 0x31, 0x7c, 0xa5, + 0x52, 0x08, 0x82, 0xc5, 0x74, 0xe6, 0x4e, 0x7e, 0x4f, 0x83, 0x51, 0xa0, + 0x5b, 0xd2, 0x52, 0x0a, 0x52, 0xd8, 0x52, 0xe7, 0x5d, 0xfb, 0x55, 0x9a, + 0x58, 0x2a, 0x59, 0xe6, 0x5b, 0x8c, 0x5b, 0x98, 0x5b, 0xdb, 0x5e, 0x72, + 0x5e, 0x79, 0x60, 0xa3, 0x61, 0x1f, 0x61, 0x63, 0x61, 0xbe, 0x63, 0xdb, + 0x65, 0x62, 0x67, 0xd1, 0x68, 0x53, 0x68, 0xfa, 0x6b, 0x3e, 0x6b, 0x53, + 0x6c, 0x57, 0x6f, 0x22, 0x6f, 0x97, 0x6f, 0x45, 0x74, 0xb0, 0x75, 0x18, + 0x76, 0xe3, 0x77, 0x0b, 0x7a, 0xff, 0x7b, 0xa1, 0x7c, 0x21, 0x7d, 0xe9, + 0x7f, 0x36, 0x7f, 0xf0, 0x80, 0x9d, 0x82, 0x66, 0x83, 0x9e, 0x89, 0xb3, + 0x8a, 0xcc, 0x8c, 0xab, 0x90, 0x84, 0x94, 0x51, 0x95, 0x93, 0x95, 0x91, + 0x95, 0xa2, 0x96, 0x65, 0x97, 0xd3, 0x99, 0x28, 0x82, 0x18, 0x4e, 0x38, + 0x54, 0x2b, 0x5c, 0xb8, 0x5d, 0xcc, 0x73, 0xa9, 0x76, 0x4c, 0x77, 0x3c, + 0x5c, 0xa9, 0x7f, 0xeb, 0x8d, 0x0b, 0x96, 0xc1, 0x98, 0x11, 0x98, 0x54, + 0x98, 0x58, 0x4f, 0x01, 0x4f, 0x0e, 0x53, 0x71, 0x55, 0x9c, 0x56, 0x68, + 0x57, 0xfa, 0x59, 0x47, 0x5b, 0x09, 0x5b, 0xc4, 0x5c, 0x90, 0x5e, 0x0c, + 0x5e, 0x7e, 0x5f, 0xcc, 0x63, 0xee, 0x67, 0x3a, 0x65, 0xd7, 0x65, 0xe2, + 0x67, 0x1f, 0x68, 0xcb, 0x68, 0xc4, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x6a, 0x5f, 0x5e, 0x30, + 0x6b, 0xc5, 0x6c, 0x17, 0x6c, 0x7d, 0x75, 0x7f, 0x79, 0x48, 0x5b, 0x63, + 0x7a, 0x00, 0x7d, 0x00, 0x5f, 0xbd, 0x89, 0x8f, 0x8a, 0x18, 0x8c, 0xb4, + 0x8d, 0x77, 0x8e, 0xcc, 0x8f, 0x1d, 0x98, 0xe2, 0x9a, 0x0e, 0x9b, 0x3c, + 0x4e, 0x80, 0x50, 0x7d, 0x51, 0x00, 0x59, 0x93, 0x5b, 0x9c, 0x62, 0x2f, + 0x62, 0x80, 0x64, 0xec, 0x6b, 0x3a, 0x72, 0xa0, 0x75, 0x91, 0x79, 0x47, + 0x7f, 0xa9, 0x87, 0xfb, 0x8a, 0xbc, 0x8b, 0x70, 0x63, 0xac, 0x83, 0xca, + 0x97, 0xa0, 0x54, 0x09, 0x54, 0x03, 0x55, 0xab, 0x68, 0x54, 0x6a, 0x58, + 0x8a, 0x70, 0x78, 0x27, 0x67, 0x75, 0x9e, 0xcd, 0x53, 0x74, 0x5b, 0xa2, + 0x81, 0x1a, 0x86, 0x50, 0x90, 0x06, 0x4e, 0x18, 0x4e, 0x45, 0x4e, 0xc7, + 0x4f, 0x11, 0x53, 0xca, 0x54, 0x38, 0x5b, 0xae, 0x5f, 0x13, 0x60, 0x25, + 0x65, 0x51, 0x00, 0x20, 0x67, 0x3d, 0x6c, 0x42, 0x6c, 0x72, 0x6c, 0xe3, + 0x70, 0x78, 0x74, 0x03, 0x7a, 0x76, 0x7a, 0xae, 0x7b, 0x08, 0x7d, 0x1a, + 0x7c, 0xfe, 0x7d, 0x66, 0x65, 0xe7, 0x72, 0x5b, 0x53, 0xbb, 0x5c, 0x45, + 0x5d, 0xe8, 0x62, 0xd2, 0x62, 0xe0, 0x63, 0x19, 0x6e, 0x20, 0x86, 0x5a, + 0x8a, 0x31, 0x8d, 0xdd, 0x92, 0xf8, 0x6f, 0x01, 0x79, 0xa6, 0x9b, 0x5a, + 0x4e, 0xa8, 0x4e, 0xab, 0x4e, 0xac, 0x4f, 0x9b, 0x4f, 0xa0, 0x50, 0xd1, + 0x51, 0x47, 0x7a, 0xf6, 0x51, 0x71, 0x51, 0xf6, 0x53, 0x54, 0x53, 0x21, + 0x53, 0x7f, 0x53, 0xeb, 0x55, 0xac, 0x58, 0x83, 0x5c, 0xe1, 0x5f, 0x37, + 0x5f, 0x4a, 0x60, 0x2f, 0x60, 0x50, 0x60, 0x6d, 0x63, 0x1f, 0x65, 0x59, + 0x6a, 0x4b, 0x6c, 0xc1, 0x72, 0xc2, 0x72, 0xed, 0x77, 0xef, 0x80, 0xf8, + 0x81, 0x05, 0x82, 0x08, 0x85, 0x4e, 0x90, 0xf7, 0x93, 0xe1, 0x97, 0xff, + 0x99, 0x57, 0x9a, 0x5a, 0x4e, 0xf0, 0x51, 0xdd, 0x5c, 0x2d, 0x66, 0x81, + 0x69, 0x6d, 0x5c, 0x40, 0x66, 0xf2, 0x69, 0x75, 0x73, 0x89, 0x68, 0x50, + 0x7c, 0x81, 0x50, 0xc5, 0x52, 0xe4, 0x57, 0x47, 0x5d, 0xfe, 0x93, 0x26, + 0x65, 0xa4, 0x6b, 0x23, 0x6b, 0x3d, 0x74, 0x34, 0x79, 0x81, 0x79, 0xbd, + 0x7b, 0x4b, 0x7d, 0xca, 0x82, 0xb9, 0x83, 0xcc, 0x88, 0x7f, 0x89, 0x5f, + 0x8b, 0x39, 0x8f, 0xd1, 0x91, 0xd1, 0x54, 0x1f, 0x92, 0x80, 0x4e, 0x5d, + 0x50, 0x36, 0x53, 0xe5, 0x53, 0x3a, 0x72, 0xd7, 0x73, 0x96, 0x77, 0xe9, + 0x82, 0xe6, 0x8e, 0xaf, 0x99, 0xc6, 0x99, 0xc8, 0x99, 0xd2, 0x51, 0x77, + 0x61, 0x1a, 0x86, 0x5e, 0x55, 0xb0, 0x7a, 0x7a, 0x50, 0x76, 0x5b, 0xd3, + 0x90, 0x47, 0x96, 0x85, 0x4e, 0x32, 0x6a, 0xdb, 0x91, 0xe7, 0x5c, 0x51, + 0x5c, 0x48, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x63, 0x98, 0x7a, 0x9f, 0x6c, 0x93, 0x97, 0x74, + 0x8f, 0x61, 0x7a, 0xaa, 0x71, 0x8a, 0x96, 0x88, 0x7c, 0x82, 0x68, 0x17, + 0x7e, 0x70, 0x68, 0x51, 0x93, 0x6c, 0x52, 0xf2, 0x54, 0x1b, 0x85, 0xab, + 0x8a, 0x13, 0x7f, 0xa4, 0x8e, 0xcd, 0x90, 0xe1, 0x53, 0x66, 0x88, 0x88, + 0x79, 0x41, 0x4f, 0xc2, 0x50, 0xbe, 0x52, 0x11, 0x51, 0x44, 0x55, 0x53, + 0x57, 0x2d, 0x73, 0xea, 0x57, 0x8b, 0x59, 0x51, 0x5f, 0x62, 0x5f, 0x84, + 0x60, 0x75, 0x61, 0x76, 0x61, 0x67, 0x61, 0xa9, 0x63, 0xb2, 0x64, 0x3a, + 0x65, 0x6c, 0x66, 0x6f, 0x68, 0x42, 0x6e, 0x13, 0x75, 0x66, 0x7a, 0x3d, + 0x7c, 0xfb, 0x7d, 0x4c, 0x7d, 0x99, 0x7e, 0x4b, 0x7f, 0x6b, 0x83, 0x0e, + 0x83, 0x4a, 0x86, 0xcd, 0x8a, 0x08, 0x8a, 0x63, 0x8b, 0x66, 0x8e, 0xfd, + 0x98, 0x1a, 0x9d, 0x8f, 0x82, 0xb8, 0x8f, 0xce, 0x9b, 0xe8, 0x00, 0x20, + 0x52, 0x87, 0x62, 0x1f, 0x64, 0x83, 0x6f, 0xc0, 0x96, 0x99, 0x68, 0x41, + 0x50, 0x91, 0x6b, 0x20, 0x6c, 0x7a, 0x6f, 0x54, 0x7a, 0x74, 0x7d, 0x50, + 0x88, 0x40, 0x8a, 0x23, 0x67, 0x08, 0x4e, 0xf6, 0x50, 0x39, 0x50, 0x26, + 0x50, 0x65, 0x51, 0x7c, 0x52, 0x38, 0x52, 0x63, 0x55, 0xa7, 0x57, 0x0f, + 0x58, 0x05, 0x5a, 0xcc, 0x5e, 0xfa, 0x61, 0xb2, 0x61, 0xf8, 0x62, 0xf3, + 0x63, 0x72, 0x69, 0x1c, 0x6a, 0x29, 0x72, 0x7d, 0x72, 0xac, 0x73, 0x2e, + 0x78, 0x14, 0x78, 0x6f, 0x7d, 0x79, 0x77, 0x0c, 0x80, 0xa9, 0x89, 0x8b, + 0x8b, 0x19, 0x8c, 0xe2, 0x8e, 0xd2, 0x90, 0x63, 0x93, 0x75, 0x96, 0x7a, + 0x98, 0x55, 0x9a, 0x13, 0x9e, 0x78, 0x51, 0x43, 0x53, 0x9f, 0x53, 0xb3, + 0x5e, 0x7b, 0x5f, 0x26, 0x6e, 0x1b, 0x6e, 0x90, 0x73, 0x84, 0x73, 0xfe, + 0x7d, 0x43, 0x82, 0x37, 0x8a, 0x00, 0x8a, 0xfa, 0x96, 0x50, 0x4e, 0x4e, + 0x50, 0x0b, 0x53, 0xe4, 0x54, 0x7c, 0x56, 0xfa, 0x59, 0xd1, 0x5b, 0x64, + 0x5d, 0xf1, 0x5e, 0xab, 0x5f, 0x27, 0x62, 0x38, 0x65, 0x45, 0x67, 0xaf, + 0x6e, 0x56, 0x72, 0xd0, 0x7c, 0xca, 0x88, 0xb4, 0x80, 0xa1, 0x80, 0xe1, + 0x83, 0xf0, 0x86, 0x4e, 0x8a, 0x87, 0x8d, 0xe8, 0x92, 0x37, 0x96, 0xc7, + 0x98, 0x67, 0x9f, 0x13, 0x4e, 0x94, 0x4e, 0x92, 0x4f, 0x0d, 0x53, 0x48, + 0x54, 0x49, 0x54, 0x3e, 0x5a, 0x2f, 0x5f, 0x8c, 0x5f, 0xa1, 0x60, 0x9f, + 0x68, 0xa7, 0x6a, 0x8e, 0x74, 0x5a, 0x78, 0x81, 0x8a, 0x9e, 0x8a, 0xa4, + 0x8b, 0x77, 0x91, 0x90, 0x4e, 0x5e, 0x9b, 0xc9, 0x4e, 0xa4, 0x4f, 0x7c, + 0x4f, 0xaf, 0x50, 0x19, 0x50, 0x16, 0x51, 0x49, 0x51, 0x6c, 0x52, 0x9f, + 0x52, 0xb9, 0x52, 0xfe, 0x53, 0x9a, 0x53, 0xe3, 0x54, 0x11, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x54, 0x0e, 0x55, 0x89, 0x57, 0x51, 0x57, 0xa2, 0x59, 0x7d, 0x5b, 0x54, + 0x5b, 0x5d, 0x5b, 0x8f, 0x5d, 0xe5, 0x5d, 0xe7, 0x5d, 0xf7, 0x5e, 0x78, + 0x5e, 0x83, 0x5e, 0x9a, 0x5e, 0xb7, 0x5f, 0x18, 0x60, 0x52, 0x61, 0x4c, + 0x62, 0x97, 0x62, 0xd8, 0x63, 0xa7, 0x65, 0x3b, 0x66, 0x02, 0x66, 0x43, + 0x66, 0xf4, 0x67, 0x6d, 0x68, 0x21, 0x68, 0x97, 0x69, 0xcb, 0x6c, 0x5f, + 0x6d, 0x2a, 0x6d, 0x69, 0x6e, 0x2f, 0x6e, 0x9d, 0x75, 0x32, 0x76, 0x87, + 0x78, 0x6c, 0x7a, 0x3f, 0x7c, 0xe0, 0x7d, 0x05, 0x7d, 0x18, 0x7d, 0x5e, + 0x7d, 0xb1, 0x80, 0x15, 0x80, 0x03, 0x80, 0xaf, 0x80, 0xb1, 0x81, 0x54, + 0x81, 0x8f, 0x82, 0x2a, 0x83, 0x52, 0x88, 0x4c, 0x88, 0x61, 0x8b, 0x1b, + 0x8c, 0xa2, 0x8c, 0xfc, 0x90, 0xca, 0x91, 0x75, 0x92, 0x71, 0x78, 0x3f, + 0x92, 0xfc, 0x95, 0xa4, 0x96, 0x4d, 0x00, 0x20, 0x98, 0x05, 0x99, 0x99, + 0x9a, 0xd8, 0x9d, 0x3b, 0x52, 0x5b, 0x52, 0xab, 0x53, 0xf7, 0x54, 0x08, + 0x58, 0xd5, 0x62, 0xf7, 0x6f, 0xe0, 0x8c, 0x6a, 0x8f, 0x5f, 0x9e, 0xb9, + 0x51, 0x4b, 0x52, 0x3b, 0x54, 0x4a, 0x56, 0xfd, 0x7a, 0x40, 0x91, 0x77, + 0x9d, 0x60, 0x9e, 0xd2, 0x73, 0x44, 0x6f, 0x09, 0x81, 0x70, 0x75, 0x11, + 0x5f, 0xfd, 0x60, 0xda, 0x9a, 0xa8, 0x72, 0xdb, 0x8f, 0xbc, 0x6b, 0x64, + 0x98, 0x03, 0x4e, 0xca, 0x56, 0xf0, 0x57, 0x64, 0x58, 0xbe, 0x5a, 0x5a, + 0x60, 0x68, 0x61, 0xc7, 0x66, 0x0f, 0x66, 0x06, 0x68, 0x39, 0x68, 0xb1, + 0x6d, 0xf7, 0x75, 0xd5, 0x7d, 0x3a, 0x82, 0x6e, 0x9b, 0x42, 0x4e, 0x9b, + 0x4f, 0x50, 0x53, 0xc9, 0x55, 0x06, 0x5d, 0x6f, 0x5d, 0xe6, 0x5d, 0xee, + 0x67, 0xfb, 0x6c, 0x99, 0x74, 0x73, 0x78, 0x02, 0x8a, 0x50, 0x93, 0x96, + 0x88, 0xdf, 0x57, 0x50, 0x5e, 0xa7, 0x63, 0x2b, 0x50, 0xb5, 0x50, 0xac, + 0x51, 0x8d, 0x67, 0x00, 0x54, 0xc9, 0x58, 0x5e, 0x59, 0xbb, 0x5b, 0xb0, + 0x5f, 0x69, 0x62, 0x4d, 0x63, 0xa1, 0x68, 0x3d, 0x6b, 0x73, 0x6e, 0x08, + 0x70, 0x7d, 0x91, 0xc7, 0x72, 0x80, 0x78, 0x15, 0x78, 0x26, 0x79, 0x6d, + 0x65, 0x8e, 0x7d, 0x30, 0x83, 0xdc, 0x88, 0xc1, 0x8f, 0x09, 0x96, 0x9b, + 0x52, 0x64, 0x57, 0x28, 0x67, 0x50, 0x7f, 0x6a, 0x8c, 0xa1, 0x51, 0xb4, + 0x57, 0x42, 0x96, 0x2a, 0x58, 0x3a, 0x69, 0x8a, 0x80, 0xb4, 0x54, 0xb2, + 0x5d, 0x0e, 0x57, 0xfc, 0x78, 0x95, 0x9d, 0xfa, 0x4f, 0x5c, 0x52, 0x4a, + 0x54, 0x8b, 0x64, 0x3e, 0x66, 0x28, 0x67, 0x14, 0x67, 0xf5, 0x7a, 0x84, + 0x7b, 0x56, 0x7d, 0x22, 0x93, 0x2f, 0x68, 0x5c, 0x9b, 0xad, 0x7b, 0x39, + 0x53, 0x19, 0x51, 0x8a, 0x52, 0x37, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x5b, 0xdf, 0x62, 0xf6, + 0x64, 0xae, 0x64, 0xe6, 0x67, 0x2d, 0x6b, 0xba, 0x85, 0xa9, 0x96, 0xd1, + 0x76, 0x90, 0x9b, 0xd6, 0x63, 0x4c, 0x93, 0x06, 0x9b, 0xab, 0x76, 0xbf, + 0x66, 0x52, 0x4e, 0x09, 0x50, 0x98, 0x53, 0xc2, 0x5c, 0x71, 0x60, 0xe8, + 0x64, 0x92, 0x65, 0x63, 0x68, 0x5f, 0x71, 0xe6, 0x73, 0xca, 0x75, 0x23, + 0x7b, 0x97, 0x7e, 0x82, 0x86, 0x95, 0x8b, 0x83, 0x8c, 0xdb, 0x91, 0x78, + 0x99, 0x10, 0x65, 0xac, 0x66, 0xab, 0x6b, 0x8b, 0x4e, 0xd5, 0x4e, 0xd4, + 0x4f, 0x3a, 0x4f, 0x7f, 0x52, 0x3a, 0x53, 0xf8, 0x53, 0xf2, 0x55, 0xe3, + 0x56, 0xdb, 0x58, 0xeb, 0x59, 0xcb, 0x59, 0xc9, 0x59, 0xff, 0x5b, 0x50, + 0x5c, 0x4d, 0x5e, 0x02, 0x5e, 0x2b, 0x5f, 0xd7, 0x60, 0x1d, 0x63, 0x07, + 0x65, 0x2f, 0x5b, 0x5c, 0x65, 0xaf, 0x65, 0xbd, 0x65, 0xe8, 0x67, 0x9d, + 0x6b, 0x62, 0x00, 0x20, 0x6b, 0x7b, 0x6c, 0x0f, 0x73, 0x45, 0x79, 0x49, + 0x79, 0xc1, 0x7c, 0xf8, 0x7d, 0x19, 0x7d, 0x2b, 0x80, 0xa2, 0x81, 0x02, + 0x81, 0xf3, 0x89, 0x96, 0x8a, 0x5e, 0x8a, 0x69, 0x8a, 0x66, 0x8a, 0x8c, + 0x8a, 0xee, 0x8c, 0xc7, 0x8c, 0xdc, 0x96, 0xcc, 0x98, 0xfc, 0x6b, 0x6f, + 0x4e, 0x8b, 0x4f, 0x3c, 0x4f, 0x8d, 0x51, 0x50, 0x5b, 0x57, 0x5b, 0xfa, + 0x61, 0x48, 0x63, 0x01, 0x66, 0x42, 0x6b, 0x21, 0x6e, 0xcb, 0x6c, 0xbb, + 0x72, 0x3e, 0x74, 0xbd, 0x75, 0xd4, 0x78, 0xc1, 0x79, 0x3a, 0x80, 0x0c, + 0x80, 0x33, 0x81, 0xea, 0x84, 0x94, 0x8f, 0x9e, 0x6c, 0x50, 0x9e, 0x7f, + 0x5f, 0x0f, 0x8b, 0x58, 0x9d, 0x2b, 0x7a, 0xfa, 0x8e, 0xf8, 0x5b, 0x8d, + 0x96, 0xeb, 0x4e, 0x03, 0x53, 0xf1, 0x57, 0xf7, 0x59, 0x31, 0x5a, 0xc9, + 0x5b, 0xa4, 0x60, 0x89, 0x6e, 0x7f, 0x6f, 0x06, 0x75, 0xbe, 0x8c, 0xea, + 0x5b, 0x9f, 0x85, 0x00, 0x7b, 0xe0, 0x50, 0x72, 0x67, 0xf4, 0x82, 0x9d, + 0x5c, 0x61, 0x85, 0x4a, 0x7e, 0x1e, 0x82, 0x0e, 0x51, 0x99, 0x5c, 0x04, + 0x63, 0x68, 0x8d, 0x66, 0x65, 0x9c, 0x71, 0x6e, 0x79, 0x3e, 0x7d, 0x17, + 0x80, 0x05, 0x8b, 0x1d, 0x8e, 0xca, 0x90, 0x6e, 0x86, 0xc7, 0x90, 0xaa, + 0x50, 0x1f, 0x52, 0xfa, 0x5c, 0x3a, 0x67, 0x53, 0x70, 0x7c, 0x72, 0x35, + 0x91, 0x4c, 0x91, 0xc8, 0x93, 0x2b, 0x82, 0xe5, 0x5b, 0xc2, 0x5f, 0x31, + 0x60, 0xf9, 0x4e, 0x3b, 0x53, 0xd6, 0x5b, 0x88, 0x62, 0x4b, 0x67, 0x31, + 0x6b, 0x8a, 0x72, 0xe9, 0x73, 0xe0, 0x7a, 0x2e, 0x81, 0x6b, 0x8d, 0xa3, + 0x91, 0x52, 0x99, 0x96, 0x51, 0x12, 0x53, 0xd7, 0x54, 0x6a, 0x5b, 0xff, + 0x63, 0x88, 0x6a, 0x39, 0x7d, 0xac, 0x97, 0x00, 0x56, 0xda, 0x53, 0xce, + 0x54, 0x68, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x5b, 0x97, 0x5c, 0x31, 0x5d, 0xde, 0x4f, 0xee, + 0x61, 0x01, 0x62, 0xfe, 0x6d, 0x32, 0x79, 0xc0, 0x79, 0xcb, 0x7d, 0x42, + 0x7e, 0x4d, 0x7f, 0xd2, 0x81, 0xed, 0x82, 0x1f, 0x84, 0x90, 0x88, 0x46, + 0x89, 0x72, 0x8b, 0x90, 0x8e, 0x74, 0x8f, 0x2f, 0x90, 0x31, 0x91, 0x4b, + 0x91, 0x6c, 0x96, 0xc6, 0x91, 0x9c, 0x4e, 0xc0, 0x4f, 0x4f, 0x51, 0x45, + 0x53, 0x41, 0x5f, 0x93, 0x62, 0x0e, 0x67, 0xd4, 0x6c, 0x41, 0x6e, 0x0b, + 0x73, 0x63, 0x7e, 0x26, 0x91, 0xcd, 0x92, 0x83, 0x53, 0xd4, 0x59, 0x19, + 0x5b, 0xbf, 0x6d, 0xd1, 0x79, 0x5d, 0x7e, 0x2e, 0x7c, 0x9b, 0x58, 0x7e, + 0x71, 0x9f, 0x51, 0xfa, 0x88, 0x53, 0x8f, 0xf0, 0x4f, 0xca, 0x5c, 0xfb, + 0x66, 0x25, 0x77, 0xac, 0x7a, 0xe3, 0x82, 0x1c, 0x99, 0xff, 0x51, 0xc6, + 0x5f, 0xaa, 0x65, 0xec, 0x69, 0x6f, 0x6b, 0x89, 0x6d, 0xf3, 0x00, 0x20, + 0x6e, 0x96, 0x6f, 0x64, 0x76, 0xfe, 0x7d, 0x14, 0x5d, 0xe1, 0x90, 0x75, + 0x91, 0x87, 0x98, 0x06, 0x51, 0xe6, 0x52, 0x1d, 0x62, 0x40, 0x66, 0x91, + 0x66, 0xd9, 0x6e, 0x1a, 0x5e, 0xb6, 0x7d, 0xd2, 0x7f, 0x72, 0x66, 0xf8, + 0x85, 0xaf, 0x85, 0xf7, 0x8a, 0xf8, 0x52, 0xa9, 0x53, 0xd9, 0x59, 0x73, + 0x5e, 0x8f, 0x5f, 0x90, 0x60, 0x55, 0x92, 0xe4, 0x96, 0x64, 0x50, 0xb7, + 0x51, 0x1f, 0x52, 0xdd, 0x53, 0x20, 0x53, 0x47, 0x53, 0xec, 0x54, 0xe8, + 0x55, 0x46, 0x55, 0x31, 0x56, 0x17, 0x59, 0x68, 0x59, 0xbe, 0x5a, 0x3c, + 0x5b, 0xb5, 0x5c, 0x06, 0x5c, 0x0f, 0x5c, 0x11, 0x5c, 0x1a, 0x5e, 0x84, + 0x5e, 0x8a, 0x5e, 0xe0, 0x5f, 0x70, 0x62, 0x7f, 0x62, 0x84, 0x62, 0xdb, + 0x63, 0x8c, 0x63, 0x77, 0x66, 0x07, 0x66, 0x0c, 0x66, 0x2d, 0x66, 0x76, + 0x67, 0x7e, 0x68, 0xa2, 0x6a, 0x1f, 0x6a, 0x35, 0x6c, 0xbc, 0x6d, 0x88, + 0x6e, 0x09, 0x6e, 0x58, 0x71, 0x3c, 0x71, 0x26, 0x71, 0x67, 0x75, 0xc7, + 0x77, 0x01, 0x78, 0x5d, 0x79, 0x01, 0x79, 0x65, 0x79, 0xf0, 0x7a, 0xe0, + 0x7b, 0x11, 0x7c, 0xa7, 0x7d, 0x39, 0x80, 0x96, 0x83, 0xd6, 0x84, 0x8b, + 0x85, 0x49, 0x88, 0x5d, 0x88, 0xf3, 0x8a, 0x1f, 0x8a, 0x3c, 0x8a, 0x54, + 0x8a, 0x73, 0x8c, 0x61, 0x8c, 0xde, 0x91, 0xa4, 0x92, 0x66, 0x93, 0x7e, + 0x94, 0x18, 0x96, 0x9c, 0x97, 0x98, 0x4e, 0x0a, 0x4e, 0x08, 0x4e, 0x1e, + 0x4e, 0x57, 0x51, 0x97, 0x52, 0x70, 0x57, 0xce, 0x58, 0x34, 0x58, 0xcc, + 0x5b, 0x22, 0x5e, 0x38, 0x60, 0xc5, 0x64, 0xfe, 0x67, 0x61, 0x67, 0x56, + 0x6d, 0x44, 0x72, 0xb6, 0x75, 0x73, 0x7a, 0x63, 0x84, 0xb8, 0x8b, 0x72, + 0x91, 0xb8, 0x93, 0x20, 0x56, 0x31, 0x57, 0xf4, 0x98, 0xfe, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x62, 0xed, 0x69, 0x0d, 0x6b, 0x96, 0x71, 0xed, 0x7e, 0x54, 0x80, 0x77, + 0x82, 0x72, 0x89, 0xe6, 0x98, 0xdf, 0x87, 0x55, 0x8f, 0xb1, 0x5c, 0x3b, + 0x4f, 0x38, 0x4f, 0xe1, 0x4f, 0xb5, 0x55, 0x07, 0x5a, 0x20, 0x5b, 0xdd, + 0x5b, 0xe9, 0x5f, 0xc3, 0x61, 0x4e, 0x63, 0x2f, 0x65, 0xb0, 0x66, 0x4b, + 0x68, 0xee, 0x69, 0x9b, 0x6d, 0x78, 0x6d, 0xf1, 0x75, 0x33, 0x75, 0xb9, + 0x77, 0x1f, 0x79, 0x5e, 0x79, 0xe6, 0x7d, 0x33, 0x81, 0xe3, 0x82, 0xaf, + 0x85, 0xaa, 0x89, 0xaa, 0x8a, 0x3a, 0x8e, 0xab, 0x8f, 0x9b, 0x90, 0x32, + 0x91, 0xdd, 0x97, 0x07, 0x4e, 0xba, 0x4e, 0xc1, 0x52, 0x03, 0x58, 0x75, + 0x58, 0xec, 0x5c, 0x0b, 0x75, 0x1a, 0x5c, 0x3d, 0x81, 0x4e, 0x8a, 0x0a, + 0x8f, 0xc5, 0x96, 0x63, 0x97, 0x6d, 0x7b, 0x25, 0x8a, 0xcf, 0x98, 0x08, + 0x91, 0x62, 0x56, 0xf3, 0x53, 0xa8, 0x00, 0x20, 0x90, 0x17, 0x54, 0x39, + 0x57, 0x82, 0x5e, 0x25, 0x63, 0xa8, 0x6c, 0x34, 0x70, 0x8a, 0x77, 0x61, + 0x7c, 0x8b, 0x7f, 0xe0, 0x88, 0x70, 0x90, 0x42, 0x91, 0x54, 0x93, 0x10, + 0x93, 0x18, 0x96, 0x8f, 0x74, 0x5e, 0x9a, 0xc4, 0x5d, 0x07, 0x5d, 0x69, + 0x65, 0x70, 0x67, 0xa2, 0x8d, 0xa8, 0x96, 0xdb, 0x63, 0x6e, 0x67, 0x49, + 0x69, 0x19, 0x83, 0xc5, 0x98, 0x17, 0x96, 0xc0, 0x88, 0xfe, 0x6f, 0x84, + 0x64, 0x7a, 0x5b, 0xf8, 0x4e, 0x16, 0x70, 0x2c, 0x75, 0x5d, 0x66, 0x2f, + 0x51, 0xc4, 0x52, 0x36, 0x52, 0xe2, 0x59, 0xd3, 0x5f, 0x81, 0x60, 0x27, + 0x62, 0x10, 0x65, 0x3f, 0x65, 0x74, 0x66, 0x1f, 0x66, 0x74, 0x68, 0xf2, + 0x68, 0x16, 0x6b, 0x63, 0x6e, 0x05, 0x72, 0x72, 0x75, 0x1f, 0x76, 0xdb, + 0x7c, 0xbe, 0x80, 0x56, 0x58, 0xf0, 0x88, 0xfd, 0x89, 0x7f, 0x8a, 0xa0, + 0x8a, 0x93, 0x8a, 0xcb, 0x90, 0x1d, 0x91, 0x92, 0x97, 0x52, 0x97, 0x59, + 0x65, 0x89, 0x7a, 0x0e, 0x81, 0x06, 0x96, 0xbb, 0x5e, 0x2d, 0x60, 0xdc, + 0x62, 0x1a, 0x65, 0xa5, 0x66, 0x14, 0x67, 0x90, 0x77, 0xf3, 0x7a, 0x4d, + 0x7c, 0x4d, 0x7e, 0x3e, 0x81, 0x0a, 0x8c, 0xac, 0x8d, 0x64, 0x8d, 0xe1, + 0x8e, 0x5f, 0x78, 0xa9, 0x52, 0x07, 0x62, 0xd9, 0x63, 0xa5, 0x64, 0x42, + 0x62, 0x98, 0x8a, 0x2d, 0x7a, 0x83, 0x7b, 0xc0, 0x8a, 0xac, 0x96, 0xea, + 0x7d, 0x76, 0x82, 0x0c, 0x87, 0x49, 0x4e, 0xd9, 0x51, 0x48, 0x53, 0x43, + 0x53, 0x60, 0x5b, 0xa3, 0x5c, 0x02, 0x5c, 0x16, 0x5d, 0xdd, 0x62, 0x26, + 0x62, 0x47, 0x64, 0xb0, 0x68, 0x13, 0x68, 0x34, 0x6c, 0xc9, 0x6d, 0x45, + 0x6d, 0x17, 0x67, 0xd3, 0x6f, 0x5c, 0x71, 0x4e, 0x71, 0x7d, 0x65, 0xcb, + 0x7a, 0x7f, 0x7b, 0xad, 0x7d, 0xda, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x7e, 0x4a, 0x7f, 0xa8, + 0x81, 0x7a, 0x82, 0x1b, 0x82, 0x39, 0x85, 0xa6, 0x8a, 0x6e, 0x8c, 0xce, + 0x8d, 0xf5, 0x90, 0x78, 0x90, 0x77, 0x92, 0xad, 0x92, 0x91, 0x95, 0x83, + 0x9b, 0xae, 0x52, 0x4d, 0x55, 0x84, 0x6f, 0x38, 0x71, 0x36, 0x51, 0x68, + 0x79, 0x85, 0x7e, 0x55, 0x81, 0xb3, 0x7c, 0xce, 0x56, 0x4c, 0x58, 0x51, + 0x5c, 0xa8, 0x63, 0xaa, 0x66, 0xfe, 0x66, 0xfd, 0x69, 0x5a, 0x72, 0xd9, + 0x75, 0x8f, 0x75, 0x8e, 0x79, 0x0e, 0x79, 0x56, 0x79, 0xdf, 0x7c, 0x97, + 0x7d, 0x20, 0x7d, 0x44, 0x86, 0x07, 0x8a, 0x34, 0x96, 0x3b, 0x90, 0x61, + 0x9f, 0x20, 0x50, 0xe7, 0x52, 0x75, 0x53, 0xcc, 0x53, 0xe2, 0x50, 0x09, + 0x55, 0xaa, 0x58, 0xee, 0x59, 0x4f, 0x72, 0x3d, 0x5b, 0x8b, 0x5c, 0x64, + 0x53, 0x1d, 0x60, 0xe3, 0x60, 0xf3, 0x63, 0x5c, 0x63, 0x83, 0x63, 0x3f, + 0x63, 0xbb, 0x00, 0x20, 0x64, 0xcd, 0x65, 0xe9, 0x66, 0xf9, 0x5d, 0xe3, + 0x69, 0xcd, 0x69, 0xfd, 0x6f, 0x15, 0x71, 0xe5, 0x4e, 0x89, 0x75, 0xe9, + 0x76, 0xf8, 0x7a, 0x93, 0x7c, 0xdf, 0x7d, 0xcf, 0x7d, 0x9c, 0x80, 0x61, + 0x83, 0x49, 0x83, 0x58, 0x84, 0x6c, 0x84, 0xbc, 0x85, 0xfb, 0x88, 0xc5, + 0x8d, 0x70, 0x90, 0x01, 0x90, 0x6d, 0x93, 0x97, 0x97, 0x1c, 0x9a, 0x12, + 0x50, 0xcf, 0x58, 0x97, 0x61, 0x8e, 0x81, 0xd3, 0x85, 0x35, 0x8d, 0x08, + 0x90, 0x20, 0x4f, 0xc3, 0x50, 0x74, 0x52, 0x47, 0x53, 0x73, 0x60, 0x6f, + 0x63, 0x49, 0x67, 0x5f, 0x6e, 0x2c, 0x8d, 0xb3, 0x90, 0x1f, 0x4f, 0xd7, + 0x5c, 0x5e, 0x8c, 0xca, 0x65, 0xcf, 0x7d, 0x9a, 0x53, 0x52, 0x88, 0x96, + 0x51, 0x76, 0x63, 0xc3, 0x5b, 0x58, 0x5b, 0x6b, 0x5c, 0x0a, 0x64, 0x0d, + 0x67, 0x51, 0x90, 0x5c, 0x4e, 0xd6, 0x59, 0x1a, 0x59, 0x2a, 0x6c, 0x70, + 0x8a, 0x51, 0x55, 0x3e, 0x58, 0x15, 0x59, 0xa5, 0x60, 0xf0, 0x62, 0x53, + 0x67, 0xc1, 0x82, 0x35, 0x69, 0x55, 0x96, 0x40, 0x99, 0xc4, 0x9a, 0x28, + 0x4f, 0x53, 0x58, 0x06, 0x5b, 0xfe, 0x80, 0x10, 0x5c, 0xb1, 0x5e, 0x2f, + 0x5f, 0x85, 0x60, 0x20, 0x61, 0x4b, 0x62, 0x34, 0x66, 0xff, 0x6c, 0xf0, + 0x6e, 0xde, 0x80, 0xce, 0x81, 0x7f, 0x82, 0xd4, 0x88, 0x8b, 0x8c, 0xb8, + 0x90, 0x00, 0x90, 0x2e, 0x96, 0x8a, 0x9e, 0xdb, 0x9b, 0xdb, 0x4e, 0xe3, + 0x53, 0xf0, 0x59, 0x27, 0x7b, 0x2c, 0x91, 0x8d, 0x98, 0x4c, 0x9d, 0xf9, + 0x6e, 0xdd, 0x70, 0x27, 0x53, 0x53, 0x55, 0x44, 0x5b, 0x85, 0x62, 0x58, + 0x62, 0x9e, 0x62, 0xd3, 0x6c, 0xa2, 0x6f, 0xef, 0x74, 0x22, 0x8a, 0x17, + 0x94, 0x38, 0x6f, 0xc1, 0x8a, 0xfe, 0x83, 0x38, 0x51, 0xe7, 0x86, 0xf8, + 0x53, 0xea, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x53, 0xe9, 0x4f, 0x46, 0x90, 0x54, 0x8f, 0xb0, + 0x59, 0x6a, 0x81, 0x31, 0x5d, 0xfd, 0x7a, 0xea, 0x8f, 0xbf, 0x68, 0xda, + 0x8c, 0x37, 0x72, 0xf8, 0x9c, 0x48, 0x6a, 0x3d, 0x8a, 0xb0, 0x4e, 0x39, + 0x53, 0x58, 0x56, 0x06, 0x57, 0x66, 0x62, 0xc5, 0x63, 0xa2, 0x65, 0xe6, + 0x6b, 0x4e, 0x6d, 0xe1, 0x6e, 0x5b, 0x70, 0xad, 0x77, 0xed, 0x7a, 0xef, + 0x7b, 0xaa, 0x7d, 0xbb, 0x80, 0x3d, 0x80, 0xc6, 0x86, 0xcb, 0x8a, 0x95, + 0x93, 0x5b, 0x56, 0xe3, 0x58, 0xc7, 0x5f, 0x3e, 0x65, 0xad, 0x66, 0x96, + 0x6a, 0x80, 0x6b, 0xb5, 0x75, 0x37, 0x8a, 0xc7, 0x50, 0x24, 0x77, 0xe5, + 0x57, 0x30, 0x5f, 0x1b, 0x60, 0x65, 0x66, 0x7a, 0x6c, 0x60, 0x75, 0xf4, + 0x7a, 0x1a, 0x7f, 0x6e, 0x81, 0xf4, 0x87, 0x18, 0x90, 0x45, 0x99, 0xb3, + 0x7b, 0xc9, 0x75, 0x5c, 0x7a, 0xf9, 0x7b, 0x51, 0x84, 0xc4, 0x00, 0x20, + 0x90, 0x10, 0x79, 0xe9, 0x7a, 0x92, 0x83, 0x36, 0x5a, 0xe1, 0x77, 0x40, + 0x4e, 0x2d, 0x4e, 0xf2, 0x5b, 0x99, 0x5f, 0xe0, 0x62, 0xbd, 0x66, 0x3c, + 0x67, 0xf1, 0x6c, 0xe8, 0x86, 0x6b, 0x88, 0x77, 0x8a, 0x3b, 0x91, 0x4e, + 0x92, 0xf3, 0x99, 0xd0, 0x6a, 0x17, 0x70, 0x26, 0x73, 0x2a, 0x82, 0xe7, + 0x84, 0x57, 0x8c, 0xaf, 0x4e, 0x01, 0x51, 0x46, 0x51, 0xcb, 0x55, 0x8b, + 0x5b, 0xf5, 0x5e, 0x16, 0x5e, 0x33, 0x5e, 0x81, 0x5f, 0x14, 0x5f, 0x35, + 0x5f, 0x6b, 0x5f, 0xb4, 0x61, 0xf2, 0x63, 0x11, 0x66, 0xa2, 0x67, 0x1d, + 0x6f, 0x6e, 0x72, 0x52, 0x75, 0x3a, 0x77, 0x3a, 0x80, 0x74, 0x81, 0x39, + 0x81, 0x78, 0x87, 0x76, 0x8a, 0xbf, 0x8a, 0xdc, 0x8d, 0x85, 0x8d, 0xf3, + 0x92, 0x9a, 0x95, 0x77, 0x98, 0x02, 0x9c, 0xe5, 0x52, 0xc5, 0x63, 0x57, + 0x76, 0xf4, 0x67, 0x15, 0x6c, 0x88, 0x73, 0xcd, 0x8c, 0xc3, 0x93, 0xae, + 0x96, 0x73, 0x6d, 0x25, 0x58, 0x9c, 0x69, 0x0e, 0x69, 0xcc, 0x8f, 0xfd, + 0x93, 0x9a, 0x75, 0xdb, 0x90, 0x1a, 0x58, 0x5a, 0x68, 0x02, 0x63, 0xb4, + 0x69, 0xfb, 0x4f, 0x43, 0x6f, 0x2c, 0x67, 0xd8, 0x8f, 0xbb, 0x85, 0x26, + 0x7d, 0xb4, 0x93, 0x54, 0x69, 0x3f, 0x6f, 0x70, 0x57, 0x6a, 0x58, 0xf7, + 0x5b, 0x2c, 0x7d, 0x2c, 0x72, 0x2a, 0x54, 0x0a, 0x91, 0xe3, 0x9d, 0xb4, + 0x4e, 0xad, 0x4f, 0x4e, 0x50, 0x5c, 0x50, 0x75, 0x52, 0x43, 0x8c, 0x9e, + 0x54, 0x48, 0x58, 0x24, 0x5b, 0x9a, 0x5e, 0x1d, 0x5e, 0x95, 0x5e, 0xad, + 0x5e, 0xf7, 0x5f, 0x1f, 0x60, 0x8c, 0x62, 0xb5, 0x63, 0x3a, 0x63, 0xd0, + 0x68, 0xaf, 0x6c, 0x40, 0x78, 0x87, 0x79, 0x8e, 0x7a, 0x0b, 0x7d, 0xe0, + 0x82, 0x47, 0x8a, 0x02, 0x8a, 0xe6, 0x8e, 0x44, 0x90, 0x13, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x90, 0xb8, 0x91, 0x2d, 0x91, 0xd8, 0x9f, 0x0e, 0x6c, 0xe5, 0x64, 0x58, + 0x64, 0xe2, 0x65, 0x75, 0x6e, 0xf4, 0x76, 0x84, 0x7b, 0x1b, 0x90, 0x69, + 0x93, 0xd1, 0x6e, 0xba, 0x54, 0xf2, 0x5f, 0xb9, 0x64, 0xa4, 0x8f, 0x4d, + 0x8f, 0xed, 0x92, 0x44, 0x51, 0x78, 0x58, 0x6b, 0x59, 0x29, 0x5c, 0x55, + 0x5e, 0x97, 0x6d, 0xfb, 0x7e, 0x8f, 0x75, 0x1c, 0x8c, 0xbc, 0x8e, 0xe2, + 0x98, 0x5b, 0x70, 0xb9, 0x4f, 0x1d, 0x6b, 0xbf, 0x6f, 0xb1, 0x75, 0x30, + 0x96, 0xfb, 0x51, 0x4e, 0x54, 0x10, 0x58, 0x35, 0x58, 0x57, 0x59, 0xac, + 0x5c, 0x60, 0x5f, 0x92, 0x65, 0x97, 0x67, 0x5c, 0x6e, 0x21, 0x76, 0x7b, + 0x83, 0xdf, 0x8c, 0xed, 0x90, 0x14, 0x90, 0xfd, 0x93, 0x4d, 0x78, 0x25, + 0x78, 0x3a, 0x52, 0xaa, 0x5e, 0xa6, 0x57, 0x1f, 0x59, 0x74, 0x60, 0x12, + 0x50, 0x12, 0x51, 0x5a, 0x51, 0xac, 0x00, 0x20, 0x51, 0xcd, 0x52, 0x00, + 0x55, 0x10, 0x58, 0x54, 0x58, 0x58, 0x59, 0x57, 0x5b, 0x95, 0x5c, 0xf6, + 0x5d, 0x8b, 0x60, 0xbc, 0x62, 0x95, 0x64, 0x2d, 0x67, 0x71, 0x68, 0x43, + 0x68, 0xbc, 0x68, 0xdf, 0x76, 0xd7, 0x6d, 0xd8, 0x6e, 0x6f, 0x6d, 0x9b, + 0x70, 0x6f, 0x71, 0xc8, 0x5f, 0x53, 0x75, 0xd8, 0x79, 0x77, 0x7b, 0x49, + 0x7b, 0x54, 0x7b, 0x52, 0x7c, 0xd6, 0x7d, 0x71, 0x52, 0x30, 0x84, 0x63, + 0x85, 0x69, 0x85, 0xe4, 0x8a, 0x0e, 0x8b, 0x04, 0x8c, 0x46, 0x8e, 0x0f, + 0x90, 0x03, 0x90, 0x0f, 0x94, 0x19, 0x96, 0x76, 0x98, 0x2d, 0x9a, 0x30, + 0x95, 0xd8, 0x50, 0xcd, 0x52, 0xd5, 0x54, 0x0c, 0x58, 0x02, 0x5c, 0x0e, + 0x61, 0xa7, 0x64, 0x9e, 0x6d, 0x1e, 0x77, 0xb3, 0x7a, 0xe5, 0x80, 0xf4, + 0x84, 0x04, 0x90, 0x53, 0x92, 0x85, 0x5c, 0xe0, 0x9d, 0x07, 0x53, 0x3f, + 0x5f, 0x97, 0x5f, 0xb3, 0x6d, 0x9c, 0x72, 0x79, 0x77, 0x63, 0x79, 0xbf, + 0x7b, 0xe4, 0x6b, 0xd2, 0x72, 0xec, 0x8a, 0xad, 0x68, 0x03, 0x6a, 0x61, + 0x51, 0xf8, 0x7a, 0x81, 0x69, 0x34, 0x5c, 0x4a, 0x9c, 0xf6, 0x82, 0xeb, + 0x5b, 0xc5, 0x91, 0x49, 0x70, 0x1e, 0x56, 0x78, 0x5c, 0x6f, 0x60, 0xc7, + 0x65, 0x66, 0x6c, 0x8c, 0x8c, 0x5a, 0x90, 0x41, 0x98, 0x13, 0x54, 0x51, + 0x66, 0xc7, 0x92, 0x0d, 0x59, 0x48, 0x90, 0xa3, 0x51, 0x85, 0x4e, 0x4d, + 0x51, 0xea, 0x85, 0x99, 0x8b, 0x0e, 0x70, 0x58, 0x63, 0x7a, 0x93, 0x4b, + 0x69, 0x62, 0x99, 0xb4, 0x7e, 0x04, 0x75, 0x77, 0x53, 0x57, 0x69, 0x60, + 0x8e, 0xdf, 0x96, 0xe3, 0x6c, 0x5d, 0x4e, 0x8c, 0x5c, 0x3c, 0x5f, 0x10, + 0x8f, 0xe9, 0x53, 0x02, 0x8c, 0xd1, 0x80, 0x89, 0x86, 0x79, 0x5e, 0xff, + 0x65, 0xe5, 0x4e, 0x73, 0x51, 0x65, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x59, 0x82, 0x5c, 0x3f, + 0x97, 0xee, 0x4e, 0xfb, 0x59, 0x8a, 0x5f, 0xcd, 0x8a, 0x8d, 0x6f, 0xe1, + 0x79, 0xb0, 0x79, 0x62, 0x5b, 0xe7, 0x84, 0x71, 0x73, 0x2b, 0x71, 0xb1, + 0x5e, 0x74, 0x5f, 0xf5, 0x63, 0x7b, 0x64, 0x9a, 0x71, 0xc3, 0x7c, 0x98, + 0x4e, 0x43, 0x5e, 0xfc, 0x4e, 0x4b, 0x57, 0xdc, 0x56, 0xa2, 0x60, 0xa9, + 0x6f, 0xc3, 0x7d, 0x0d, 0x80, 0xfd, 0x81, 0x33, 0x81, 0xbf, 0x8f, 0xb2, + 0x89, 0x97, 0x86, 0xa4, 0x5d, 0xf4, 0x62, 0x8a, 0x64, 0xad, 0x89, 0x87, + 0x67, 0x77, 0x6c, 0xe2, 0x6d, 0x3e, 0x74, 0x36, 0x78, 0x34, 0x5a, 0x46, + 0x7f, 0x75, 0x82, 0xad, 0x99, 0xac, 0x4f, 0xf3, 0x5e, 0xc3, 0x62, 0xdd, + 0x63, 0x92, 0x65, 0x57, 0x67, 0x6f, 0x76, 0xc3, 0x72, 0x4c, 0x80, 0xcc, + 0x80, 0xba, 0x8f, 0x29, 0x91, 0x4d, 0x50, 0x0d, 0x57, 0xf9, 0x5a, 0x92, + 0x68, 0x85, 0x00, 0x20, 0x69, 0x73, 0x71, 0x64, 0x72, 0xfd, 0x8c, 0xb7, + 0x58, 0xf2, 0x8c, 0xe0, 0x96, 0x6a, 0x90, 0x19, 0x87, 0x7f, 0x79, 0xe4, + 0x77, 0xe7, 0x84, 0x29, 0x4f, 0x2f, 0x52, 0x65, 0x53, 0x5a, 0x62, 0xcd, + 0x67, 0xcf, 0x6c, 0xca, 0x76, 0x7d, 0x7b, 0x94, 0x7c, 0x95, 0x82, 0x36, + 0x85, 0x84, 0x8f, 0xeb, 0x66, 0xdd, 0x6f, 0x20, 0x72, 0x06, 0x7e, 0x1b, + 0x83, 0xab, 0x99, 0xc1, 0x9e, 0xa6, 0x51, 0xfd, 0x7b, 0xb1, 0x78, 0x72, + 0x7b, 0xb8, 0x80, 0x87, 0x7b, 0x48, 0x6a, 0xe8, 0x5e, 0x61, 0x80, 0x8c, + 0x75, 0x51, 0x75, 0x60, 0x51, 0x6b, 0x92, 0x62, 0x6e, 0x8c, 0x76, 0x7a, + 0x91, 0x97, 0x9a, 0xea, 0x4f, 0x10, 0x7f, 0x70, 0x62, 0x9c, 0x7b, 0x4f, + 0x95, 0xa5, 0x9c, 0xe9, 0x56, 0x7a, 0x58, 0x59, 0x86, 0xe4, 0x96, 0xbc, + 0x4f, 0x34, 0x52, 0x24, 0x53, 0x4a, 0x53, 0xcd, 0x53, 0xdb, 0x5e, 0x06, + 0x64, 0x2c, 0x65, 0x91, 0x67, 0x7f, 0x6c, 0x3e, 0x6c, 0x4e, 0x72, 0x48, + 0x72, 0xaf, 0x73, 0xed, 0x75, 0x54, 0x7e, 0x41, 0x82, 0x2c, 0x85, 0xe9, + 0x8c, 0xa9, 0x7b, 0xc4, 0x91, 0xc6, 0x71, 0x69, 0x98, 0x12, 0x98, 0xef, + 0x63, 0x3d, 0x66, 0x69, 0x75, 0x6a, 0x76, 0xe4, 0x78, 0xd0, 0x85, 0x43, + 0x86, 0xee, 0x53, 0x2a, 0x53, 0x51, 0x54, 0x26, 0x59, 0x83, 0x5e, 0x87, + 0x5f, 0x7c, 0x60, 0xb2, 0x62, 0x49, 0x62, 0x79, 0x62, 0xab, 0x65, 0x90, + 0x6b, 0xd4, 0x6c, 0xcc, 0x75, 0xb2, 0x76, 0xae, 0x78, 0x91, 0x79, 0xd8, + 0x7d, 0xcb, 0x7f, 0x77, 0x80, 0xa5, 0x88, 0xab, 0x8a, 0xb9, 0x8c, 0xbb, + 0x90, 0x7f, 0x97, 0x5e, 0x98, 0xdb, 0x6a, 0x0b, 0x7c, 0x38, 0x50, 0x99, + 0x5c, 0x3e, 0x5f, 0xae, 0x67, 0x87, 0x6b, 0xd8, 0x74, 0x35, 0x77, 0x09, + 0x7f, 0x8e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x9f, 0x3b, 0x67, 0xca, 0x7a, 0x17, 0x53, 0x39, + 0x75, 0x8b, 0x9a, 0xed, 0x5f, 0x66, 0x81, 0x9d, 0x83, 0xf1, 0x80, 0x98, + 0x5f, 0x3c, 0x5f, 0xc5, 0x75, 0x62, 0x7b, 0x46, 0x90, 0x3c, 0x68, 0x67, + 0x59, 0xeb, 0x5a, 0x9b, 0x7d, 0x10, 0x76, 0x7e, 0x8b, 0x2c, 0x4f, 0xf5, + 0x5f, 0x6a, 0x6a, 0x19, 0x6c, 0x37, 0x6f, 0x02, 0x74, 0xe2, 0x79, 0x68, + 0x88, 0x68, 0x8a, 0x55, 0x8c, 0x79, 0x5e, 0xdf, 0x63, 0xcf, 0x75, 0xc5, + 0x79, 0xd2, 0x82, 0xd7, 0x93, 0x28, 0x92, 0xf2, 0x84, 0x9c, 0x86, 0xed, + 0x9c, 0x2d, 0x54, 0xc1, 0x5f, 0x6c, 0x65, 0x8c, 0x6d, 0x5c, 0x70, 0x15, + 0x8c, 0xa7, 0x8c, 0xd3, 0x98, 0x3b, 0x65, 0x4f, 0x74, 0xf6, 0x4e, 0x0d, + 0x4e, 0xd8, 0x57, 0xe0, 0x59, 0x2b, 0x5a, 0x66, 0x5b, 0xcc, 0x51, 0xa8, + 0x5e, 0x03, 0x5e, 0x9c, 0x60, 0x16, 0x62, 0x76, 0x65, 0x77, 0x00, 0x20, + 0x65, 0xa7, 0x66, 0x6e, 0x6d, 0x6e, 0x72, 0x36, 0x7b, 0x26, 0x81, 0x50, + 0x81, 0x9a, 0x82, 0x99, 0x8b, 0x5c, 0x8c, 0xa0, 0x8c, 0xe6, 0x8d, 0x74, + 0x96, 0x1c, 0x96, 0x44, 0x4f, 0xae, 0x64, 0xab, 0x6b, 0x66, 0x82, 0x1e, + 0x84, 0x61, 0x85, 0x6a, 0x90, 0xe8, 0x5c, 0x01, 0x69, 0x53, 0x98, 0xa8, + 0x84, 0x7a, 0x85, 0x57, 0x4f, 0x0f, 0x52, 0x6f, 0x5f, 0xa9, 0x5e, 0x45, + 0x67, 0x0d, 0x79, 0x8f, 0x81, 0x79, 0x89, 0x07, 0x89, 0x86, 0x6d, 0xf5, + 0x5f, 0x17, 0x62, 0x55, 0x6c, 0xb8, 0x4e, 0xcf, 0x72, 0x69, 0x9b, 0x92, + 0x52, 0x06, 0x54, 0x3b, 0x56, 0x74, 0x58, 0xb3, 0x61, 0xa4, 0x62, 0x6e, + 0x71, 0x1a, 0x59, 0x6e, 0x7c, 0x89, 0x7c, 0xde, 0x7d, 0x1b, 0x96, 0xf0, + 0x65, 0x87, 0x80, 0x5e, 0x4e, 0x19, 0x4f, 0x75, 0x51, 0x75, 0x58, 0x40, + 0x5e, 0x63, 0x5e, 0x73, 0x5f, 0x0a, 0x67, 0xc4, 0x4e, 0x26, 0x85, 0x3d, + 0x95, 0x89, 0x96, 0x5b, 0x7c, 0x73, 0x98, 0x01, 0x50, 0xfb, 0x58, 0xc1, + 0x76, 0x56, 0x78, 0xa7, 0x52, 0x25, 0x77, 0xa5, 0x85, 0x11, 0x7b, 0x86, + 0x50, 0x4f, 0x59, 0x09, 0x72, 0x47, 0x7b, 0xc7, 0x7d, 0xe8, 0x8f, 0xba, + 0x8f, 0xd4, 0x90, 0x4d, 0x4f, 0xbf, 0x52, 0xc9, 0x5a, 0x29, 0x5f, 0x01, + 0x97, 0xad, 0x4f, 0xdd, 0x82, 0x17, 0x92, 0xea, 0x57, 0x03, 0x63, 0x55, + 0x6b, 0x69, 0x75, 0x2b, 0x88, 0xdc, 0x8f, 0x14, 0x7a, 0x42, 0x52, 0xdf, + 0x58, 0x93, 0x61, 0x55, 0x62, 0x0a, 0x66, 0xae, 0x6b, 0xcd, 0x7c, 0x3f, + 0x83, 0xe9, 0x50, 0x23, 0x4f, 0xf8, 0x53, 0x05, 0x54, 0x46, 0x58, 0x31, + 0x59, 0x49, 0x5b, 0x9d, 0x5c, 0xf0, 0x5c, 0xef, 0x5d, 0x29, 0x5e, 0x96, + 0x62, 0xb1, 0x63, 0x67, 0x65, 0x3e, 0x65, 0xb9, 0x67, 0x0b, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x6c, 0xd5, 0x6c, 0xe1, 0x70, 0xf9, 0x78, 0x32, 0x7e, 0x2b, 0x80, 0xde, + 0x82, 0xb3, 0x84, 0x0c, 0x84, 0xec, 0x87, 0x02, 0x89, 0x12, 0x8a, 0x2a, + 0x8c, 0x4a, 0x90, 0xa6, 0x92, 0xd2, 0x98, 0xfd, 0x9c, 0xf3, 0x9d, 0x6c, + 0x4e, 0x4f, 0x4e, 0xa1, 0x50, 0x8d, 0x52, 0x56, 0x57, 0x4a, 0x59, 0xa8, + 0x5e, 0x3d, 0x5f, 0xd8, 0x5f, 0xd9, 0x62, 0x3f, 0x66, 0xb4, 0x67, 0x1b, + 0x67, 0xd0, 0x68, 0xd2, 0x51, 0x92, 0x7d, 0x21, 0x80, 0xaa, 0x81, 0xa8, + 0x8b, 0x00, 0x8c, 0x8c, 0x8c, 0xbf, 0x92, 0x7e, 0x96, 0x32, 0x54, 0x20, + 0x98, 0x2c, 0x53, 0x17, 0x50, 0xd5, 0x53, 0x5c, 0x58, 0xa8, 0x64, 0xb2, + 0x67, 0x34, 0x72, 0x67, 0x77, 0x66, 0x7a, 0x46, 0x91, 0xe6, 0x52, 0xc3, + 0x6c, 0xa1, 0x6b, 0x86, 0x58, 0x00, 0x5e, 0x4c, 0x59, 0x54, 0x67, 0x2c, + 0x7f, 0xfb, 0x51, 0xe1, 0x76, 0xc6, 0x00, 0x20, 0x64, 0x69, 0x78, 0xe8, + 0x9b, 0x54, 0x9e, 0xbb, 0x57, 0xcb, 0x59, 0xb9, 0x66, 0x27, 0x67, 0x9a, + 0x6b, 0xce, 0x54, 0xe9, 0x69, 0xd9, 0x5e, 0x55, 0x81, 0x9c, 0x67, 0x95, + 0x9b, 0xaa, 0x67, 0xfe, 0x9c, 0x52, 0x68, 0x5d, 0x4e, 0xa6, 0x4f, 0xe3, + 0x53, 0xc8, 0x62, 0xb9, 0x67, 0x2b, 0x6c, 0xab, 0x8f, 0xc4, 0x4f, 0xad, + 0x7e, 0x6d, 0x9e, 0xbf, 0x4e, 0x07, 0x61, 0x62, 0x6e, 0x80, 0x6f, 0x2b, + 0x85, 0x13, 0x54, 0x73, 0x67, 0x2a, 0x9b, 0x45, 0x5d, 0xf3, 0x7b, 0x95, + 0x5c, 0xac, 0x5b, 0xc6, 0x87, 0x1c, 0x6e, 0x4a, 0x84, 0xd1, 0x7a, 0x14, + 0x81, 0x08, 0x59, 0x99, 0x7c, 0x8d, 0x6c, 0x11, 0x77, 0x20, 0x52, 0xd9, + 0x59, 0x22, 0x71, 0x21, 0x72, 0x5f, 0x77, 0xdb, 0x97, 0x27, 0x9d, 0x61, + 0x69, 0x0b, 0x5a, 0x7f, 0x5a, 0x18, 0x51, 0xa5, 0x54, 0x0d, 0x54, 0x7d, + 0x66, 0x0e, 0x76, 0xdf, 0x8f, 0xf7, 0x92, 0x98, 0x9c, 0xf4, 0x59, 0xea, + 0x72, 0x5d, 0x6e, 0xc5, 0x51, 0x4d, 0x68, 0xc9, 0x7d, 0xbf, 0x7d, 0xec, + 0x97, 0x62, 0x9e, 0xba, 0x64, 0x78, 0x6a, 0x21, 0x83, 0x02, 0x59, 0x84, + 0x5b, 0x5f, 0x6b, 0xdb, 0x73, 0x1b, 0x76, 0xf2, 0x7d, 0xb2, 0x80, 0x17, + 0x84, 0x99, 0x51, 0x32, 0x67, 0x28, 0x9e, 0xd9, 0x76, 0xee, 0x67, 0x62, + 0x52, 0xff, 0x99, 0x05, 0x5c, 0x24, 0x62, 0x3b, 0x7c, 0x7e, 0x8c, 0xb0, + 0x55, 0x4f, 0x60, 0xb6, 0x7d, 0x0b, 0x95, 0x80, 0x53, 0x01, 0x4e, 0x5f, + 0x51, 0xb6, 0x59, 0x1c, 0x72, 0x3a, 0x80, 0x36, 0x91, 0xce, 0x5f, 0x25, + 0x77, 0xe2, 0x53, 0x84, 0x5f, 0x79, 0x7d, 0x04, 0x85, 0xac, 0x8a, 0x33, + 0x8e, 0x8d, 0x97, 0x56, 0x67, 0xf3, 0x85, 0xae, 0x94, 0x53, 0x61, 0x09, + 0x61, 0x08, 0x6c, 0xb9, 0x76, 0x52, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x8a, 0xed, 0x8f, 0x38, + 0x55, 0x2f, 0x4f, 0x51, 0x51, 0x2a, 0x52, 0xc7, 0x53, 0xcb, 0x5b, 0xa5, + 0x5e, 0x7d, 0x60, 0xa0, 0x61, 0x82, 0x63, 0xd6, 0x67, 0x09, 0x67, 0xda, + 0x6e, 0x67, 0x6d, 0x8c, 0x73, 0x36, 0x73, 0x37, 0x75, 0x31, 0x79, 0x50, + 0x88, 0xd5, 0x8a, 0x98, 0x90, 0x4a, 0x90, 0x91, 0x90, 0xf5, 0x96, 0xc4, + 0x87, 0x8d, 0x59, 0x15, 0x4e, 0x88, 0x4f, 0x59, 0x4e, 0x0e, 0x8a, 0x89, + 0x8f, 0x3f, 0x98, 0x10, 0x50, 0xad, 0x5e, 0x7c, 0x59, 0x96, 0x5b, 0xb9, + 0x5e, 0xb8, 0x63, 0xda, 0x63, 0xfa, 0x64, 0xc1, 0x66, 0xdc, 0x69, 0x4a, + 0x69, 0xd8, 0x6d, 0x0b, 0x6e, 0xb6, 0x71, 0x94, 0x75, 0x28, 0x7a, 0xaf, + 0x7f, 0x8a, 0x80, 0x00, 0x84, 0x49, 0x84, 0xc9, 0x89, 0x81, 0x8b, 0x21, + 0x8e, 0x0a, 0x90, 0x65, 0x96, 0x7d, 0x99, 0x0a, 0x61, 0x7e, 0x62, 0x91, + 0x6b, 0x32, 0x00, 0x20, 0x6c, 0x83, 0x6d, 0x74, 0x7f, 0xcc, 0x7f, 0xfc, + 0x6d, 0xc0, 0x7f, 0x85, 0x87, 0xba, 0x88, 0xf8, 0x67, 0x65, 0x83, 0xb1, + 0x98, 0x3c, 0x96, 0xf7, 0x6d, 0x1b, 0x7d, 0x61, 0x84, 0x3d, 0x91, 0x6a, + 0x4e, 0x71, 0x53, 0x75, 0x5d, 0x50, 0x6b, 0x04, 0x6f, 0xeb, 0x85, 0xcd, + 0x86, 0x2d, 0x89, 0xa7, 0x52, 0x29, 0x54, 0x0f, 0x5c, 0x65, 0x67, 0x4e, + 0x68, 0xa8, 0x74, 0x06, 0x74, 0x83, 0x75, 0xe2, 0x88, 0xcf, 0x88, 0xe1, + 0x91, 0xcc, 0x96, 0xe2, 0x96, 0x78, 0x5f, 0x8b, 0x73, 0x87, 0x7a, 0xcb, + 0x84, 0x4e, 0x63, 0xa0, 0x75, 0x65, 0x52, 0x89, 0x6d, 0x41, 0x6e, 0x9c, + 0x74, 0x09, 0x75, 0x59, 0x78, 0x6b, 0x7c, 0x92, 0x96, 0x86, 0x7a, 0xdc, + 0x9f, 0x8d, 0x4f, 0xb6, 0x61, 0x6e, 0x65, 0xc5, 0x86, 0x5c, 0x4e, 0x86, + 0x4e, 0xae, 0x50, 0xda, 0x4e, 0x21, 0x51, 0xcc, 0x5b, 0xee, 0x65, 0x99, + 0x68, 0x81, 0x6d, 0xbc, 0x73, 0x1f, 0x76, 0x42, 0x77, 0xad, 0x7a, 0x1c, + 0x7c, 0xe7, 0x82, 0x6f, 0x8a, 0xd2, 0x90, 0x7c, 0x91, 0xcf, 0x96, 0x75, + 0x98, 0x18, 0x52, 0x9b, 0x7d, 0xd1, 0x50, 0x2b, 0x53, 0x98, 0x67, 0x97, + 0x6d, 0xcb, 0x71, 0xd0, 0x74, 0x33, 0x81, 0xe8, 0x8f, 0x2a, 0x96, 0xa3, + 0x9c, 0x57, 0x9e, 0x9f, 0x74, 0x60, 0x58, 0x41, 0x6d, 0x99, 0x7d, 0x2f, + 0x98, 0x5e, 0x4e, 0xe4, 0x4f, 0x36, 0x4f, 0x8b, 0x51, 0xb7, 0x52, 0xb1, + 0x5d, 0xba, 0x60, 0x1c, 0x73, 0xb2, 0x79, 0x3c, 0x82, 0xd3, 0x92, 0x34, + 0x96, 0xb7, 0x96, 0xf6, 0x97, 0x0a, 0x9e, 0x97, 0x9f, 0x62, 0x66, 0xa6, + 0x6b, 0x74, 0x52, 0x17, 0x52, 0xa3, 0x70, 0xc8, 0x88, 0xc2, 0x5e, 0xc9, + 0x60, 0x4b, 0x61, 0x90, 0x6f, 0x23, 0x71, 0x49, 0x7c, 0x3e, 0x7d, 0xf4, + 0x80, 0x6f, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x84, 0xee, 0x90, 0x23, 0x93, 0x2c, 0x54, 0x42, + 0x9b, 0x6f, 0x6a, 0xd3, 0x70, 0x89, 0x8c, 0xc2, 0x8d, 0xef, 0x97, 0x32, + 0x52, 0xb4, 0x5a, 0x41, 0x5e, 0xca, 0x5f, 0x04, 0x67, 0x17, 0x69, 0x7c, + 0x69, 0x94, 0x6d, 0x6a, 0x6f, 0x0f, 0x72, 0x62, 0x72, 0xfc, 0x7b, 0xed, + 0x80, 0x01, 0x80, 0x7e, 0x87, 0x4b, 0x90, 0xce, 0x51, 0x6d, 0x9e, 0x93, + 0x79, 0x84, 0x80, 0x8b, 0x93, 0x32, 0x8a, 0xd6, 0x50, 0x2d, 0x54, 0x8c, + 0x8a, 0x71, 0x6b, 0x6a, 0x8c, 0xc4, 0x81, 0x07, 0x60, 0xd1, 0x67, 0xa0, + 0x9d, 0xf2, 0x4e, 0x99, 0x4e, 0x98, 0x9c, 0x10, 0x8a, 0x6b, 0x85, 0xc1, + 0x85, 0x68, 0x69, 0x00, 0x6e, 0x7e, 0x78, 0x97, 0x81, 0x55, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x5f, 0x0c, 0x4e, 0x10, 0x4e, 0x15, 0x4e, 0x2a, 0x4e, 0x31, + 0x4e, 0x36, 0x4e, 0x3c, 0x4e, 0x3f, 0x4e, 0x42, 0x4e, 0x56, 0x4e, 0x58, + 0x4e, 0x82, 0x4e, 0x85, 0x8c, 0x6b, 0x4e, 0x8a, 0x82, 0x12, 0x5f, 0x0d, + 0x4e, 0x8e, 0x4e, 0x9e, 0x4e, 0x9f, 0x4e, 0xa0, 0x4e, 0xa2, 0x4e, 0xb0, + 0x4e, 0xb3, 0x4e, 0xb6, 0x4e, 0xce, 0x4e, 0xcd, 0x4e, 0xc4, 0x4e, 0xc6, + 0x4e, 0xc2, 0x4e, 0xd7, 0x4e, 0xde, 0x4e, 0xed, 0x4e, 0xdf, 0x4e, 0xf7, + 0x4f, 0x09, 0x4f, 0x5a, 0x4f, 0x30, 0x4f, 0x5b, 0x4f, 0x5d, 0x4f, 0x57, + 0x4f, 0x47, 0x4f, 0x76, 0x4f, 0x88, 0x4f, 0x8f, 0x4f, 0x98, 0x4f, 0x7b, + 0x4f, 0x69, 0x4f, 0x70, 0x4f, 0x91, 0x4f, 0x6f, 0x4f, 0x86, 0x4f, 0x96, + 0x51, 0x18, 0x4f, 0xd4, 0x4f, 0xdf, 0x4f, 0xce, 0x4f, 0xd8, 0x4f, 0xdb, + 0x4f, 0xd1, 0x4f, 0xda, 0x4f, 0xd0, 0x4f, 0xe4, 0x4f, 0xe5, 0x50, 0x1a, + 0x50, 0x28, 0x50, 0x14, 0x50, 0x2a, 0x50, 0x25, 0x50, 0x05, 0x4f, 0x1c, + 0x4f, 0xf6, 0x50, 0x21, 0x50, 0x29, 0x50, 0x2c, 0x4f, 0xfe, 0x4f, 0xef, + 0x50, 0x11, 0x50, 0x06, 0x50, 0x43, 0x50, 0x47, 0x67, 0x03, 0x50, 0x55, + 0x50, 0x50, 0x50, 0x48, 0x50, 0x5a, 0x50, 0x56, 0x50, 0x6c, 0x50, 0x78, + 0x50, 0x80, 0x50, 0x9a, 0x50, 0x85, 0x50, 0xb4, 0x50, 0xb2, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x50, 0xc9, 0x50, 0xca, 0x50, 0xb3, 0x50, 0xc2, 0x50, 0xd6, 0x50, 0xde, + 0x50, 0xe5, 0x50, 0xed, 0x50, 0xe3, 0x50, 0xee, 0x50, 0xf9, 0x50, 0xf5, + 0x51, 0x09, 0x51, 0x01, 0x51, 0x02, 0x51, 0x16, 0x51, 0x15, 0x51, 0x14, + 0x51, 0x1a, 0x51, 0x21, 0x51, 0x3a, 0x51, 0x37, 0x51, 0x3c, 0x51, 0x3b, + 0x51, 0x3f, 0x51, 0x40, 0x51, 0x52, 0x51, 0x4c, 0x51, 0x54, 0x51, 0x62, + 0x7a, 0xf8, 0x51, 0x69, 0x51, 0x6a, 0x51, 0x6e, 0x51, 0x80, 0x51, 0x82, + 0x56, 0xd8, 0x51, 0x8c, 0x51, 0x89, 0x51, 0x8f, 0x51, 0x91, 0x51, 0x93, + 0x51, 0x95, 0x51, 0x96, 0x51, 0xa4, 0x51, 0xa6, 0x51, 0xa2, 0x51, 0xa9, + 0x51, 0xaa, 0x51, 0xab, 0x51, 0xb3, 0x51, 0xb1, 0x51, 0xb2, 0x51, 0xb0, + 0x51, 0xb5, 0x51, 0xbd, 0x51, 0xc5, 0x51, 0xc9, 0x51, 0xdb, 0x51, 0xe0, + 0x86, 0x55, 0x51, 0xe9, 0x51, 0xed, 0x00, 0x20, 0x51, 0xf0, 0x51, 0xf5, + 0x51, 0xfe, 0x52, 0x04, 0x52, 0x0b, 0x52, 0x14, 0x52, 0x0e, 0x52, 0x27, + 0x52, 0x2a, 0x52, 0x2e, 0x52, 0x33, 0x52, 0x39, 0x52, 0x4f, 0x52, 0x44, + 0x52, 0x4b, 0x52, 0x4c, 0x52, 0x5e, 0x52, 0x54, 0x52, 0x6a, 0x52, 0x74, + 0x52, 0x69, 0x52, 0x73, 0x52, 0x7f, 0x52, 0x7d, 0x52, 0x8d, 0x52, 0x94, + 0x52, 0x92, 0x52, 0x71, 0x52, 0x88, 0x52, 0x91, 0x8f, 0xa8, 0x8f, 0xa7, + 0x52, 0xac, 0x52, 0xad, 0x52, 0xbc, 0x52, 0xb5, 0x52, 0xc1, 0x52, 0xcd, + 0x52, 0xd7, 0x52, 0xde, 0x52, 0xe3, 0x52, 0xe6, 0x98, 0xed, 0x52, 0xe0, + 0x52, 0xf3, 0x52, 0xf5, 0x52, 0xf8, 0x52, 0xf9, 0x53, 0x06, 0x53, 0x08, + 0x75, 0x38, 0x53, 0x0d, 0x53, 0x10, 0x53, 0x0f, 0x53, 0x15, 0x53, 0x1a, + 0x53, 0x23, 0x53, 0x2f, 0x53, 0x31, 0x53, 0x33, 0x53, 0x38, 0x53, 0x40, + 0x53, 0x46, 0x53, 0x45, 0x4e, 0x17, 0x53, 0x49, 0x53, 0x4d, 0x51, 0xd6, + 0x53, 0x5e, 0x53, 0x69, 0x53, 0x6e, 0x59, 0x18, 0x53, 0x7b, 0x53, 0x77, + 0x53, 0x82, 0x53, 0x96, 0x53, 0xa0, 0x53, 0xa6, 0x53, 0xa5, 0x53, 0xae, + 0x53, 0xb0, 0x53, 0xb6, 0x53, 0xc3, 0x7c, 0x12, 0x96, 0xd9, 0x53, 0xdf, + 0x66, 0xfc, 0x71, 0xee, 0x53, 0xee, 0x53, 0xe8, 0x53, 0xed, 0x53, 0xfa, + 0x54, 0x01, 0x54, 0x3d, 0x54, 0x40, 0x54, 0x2c, 0x54, 0x2d, 0x54, 0x3c, + 0x54, 0x2e, 0x54, 0x36, 0x54, 0x29, 0x54, 0x1d, 0x54, 0x4e, 0x54, 0x8f, + 0x54, 0x75, 0x54, 0x8e, 0x54, 0x5f, 0x54, 0x71, 0x54, 0x77, 0x54, 0x70, + 0x54, 0x92, 0x54, 0x7b, 0x54, 0x80, 0x54, 0x76, 0x54, 0x84, 0x54, 0x90, + 0x54, 0x86, 0x54, 0xc7, 0x54, 0xa2, 0x54, 0xb8, 0x54, 0xa5, 0x54, 0xac, + 0x54, 0xc4, 0x54, 0xc8, 0x54, 0xa8, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x54, 0xab, 0x54, 0xc2, + 0x54, 0xa4, 0x54, 0xbe, 0x54, 0xbc, 0x54, 0xd8, 0x54, 0xe5, 0x54, 0xe6, + 0x55, 0x0f, 0x55, 0x14, 0x54, 0xfd, 0x54, 0xee, 0x54, 0xed, 0x54, 0xfa, + 0x54, 0xe2, 0x55, 0x39, 0x55, 0x40, 0x55, 0x63, 0x55, 0x4c, 0x55, 0x2e, + 0x55, 0x5c, 0x55, 0x45, 0x55, 0x56, 0x55, 0x57, 0x55, 0x38, 0x55, 0x33, + 0x55, 0x5d, 0x55, 0x99, 0x55, 0x80, 0x54, 0xaf, 0x55, 0x8a, 0x55, 0x9f, + 0x55, 0x7b, 0x55, 0x7e, 0x55, 0x98, 0x55, 0x9e, 0x55, 0xae, 0x55, 0x7c, + 0x55, 0x83, 0x55, 0xa9, 0x55, 0x87, 0x55, 0xa8, 0x55, 0xda, 0x55, 0xc5, + 0x55, 0xdf, 0x55, 0xc4, 0x55, 0xdc, 0x55, 0xe4, 0x55, 0xd4, 0x56, 0x14, + 0x55, 0xf7, 0x56, 0x16, 0x55, 0xfe, 0x55, 0xfd, 0x56, 0x1b, 0x55, 0xf9, + 0x56, 0x4e, 0x56, 0x50, 0x71, 0xdf, 0x56, 0x34, 0x56, 0x36, 0x56, 0x32, + 0x56, 0x38, 0x00, 0x20, 0x56, 0x6b, 0x56, 0x64, 0x56, 0x2f, 0x56, 0x6c, + 0x56, 0x6a, 0x56, 0x86, 0x56, 0x80, 0x56, 0x8a, 0x56, 0xa0, 0x56, 0x94, + 0x56, 0x8f, 0x56, 0xa5, 0x56, 0xae, 0x56, 0xb6, 0x56, 0xb4, 0x56, 0xc2, + 0x56, 0xbc, 0x56, 0xc1, 0x56, 0xc3, 0x56, 0xc0, 0x56, 0xc8, 0x56, 0xce, + 0x56, 0xd1, 0x56, 0xd3, 0x56, 0xd7, 0x56, 0xee, 0x56, 0xf9, 0x57, 0x00, + 0x56, 0xff, 0x57, 0x04, 0x57, 0x09, 0x57, 0x08, 0x57, 0x0b, 0x57, 0x0d, + 0x57, 0x13, 0x57, 0x18, 0x57, 0x16, 0x55, 0xc7, 0x57, 0x1c, 0x57, 0x26, + 0x57, 0x37, 0x57, 0x38, 0x57, 0x4e, 0x57, 0x3b, 0x57, 0x40, 0x57, 0x4f, + 0x57, 0x69, 0x57, 0xc0, 0x57, 0x88, 0x57, 0x61, 0x57, 0x7f, 0x57, 0x89, + 0x57, 0x93, 0x57, 0xa0, 0x57, 0xb3, 0x57, 0xa4, 0x57, 0xaa, 0x57, 0xb0, + 0x57, 0xc3, 0x57, 0xc6, 0x57, 0xd4, 0x57, 0xd2, 0x57, 0xd3, 0x58, 0x0a, + 0x57, 0xd6, 0x57, 0xe3, 0x58, 0x0b, 0x58, 0x19, 0x58, 0x1d, 0x58, 0x72, + 0x58, 0x21, 0x58, 0x62, 0x58, 0x4b, 0x58, 0x70, 0x6b, 0xc0, 0x58, 0x52, + 0x58, 0x3d, 0x58, 0x79, 0x58, 0x85, 0x58, 0xb9, 0x58, 0x9f, 0x58, 0xab, + 0x58, 0xba, 0x58, 0xde, 0x58, 0xbb, 0x58, 0xb8, 0x58, 0xae, 0x58, 0xc5, + 0x58, 0xd3, 0x58, 0xd1, 0x58, 0xd7, 0x58, 0xd9, 0x58, 0xd8, 0x58, 0xe5, + 0x58, 0xdc, 0x58, 0xe4, 0x58, 0xdf, 0x58, 0xef, 0x58, 0xfa, 0x58, 0xf9, + 0x58, 0xfb, 0x58, 0xfc, 0x58, 0xfd, 0x59, 0x02, 0x59, 0x0a, 0x59, 0x10, + 0x59, 0x1b, 0x68, 0xa6, 0x59, 0x25, 0x59, 0x2c, 0x59, 0x2d, 0x59, 0x32, + 0x59, 0x38, 0x59, 0x3e, 0x7a, 0xd2, 0x59, 0x55, 0x59, 0x50, 0x59, 0x4e, + 0x59, 0x5a, 0x59, 0x58, 0x59, 0x62, 0x59, 0x60, 0x59, 0x67, 0x59, 0x6c, + 0x59, 0x69, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x59, 0x78, 0x59, 0x81, 0x59, 0x9d, 0x4f, 0x5e, + 0x4f, 0xab, 0x59, 0xa3, 0x59, 0xb2, 0x59, 0xc6, 0x59, 0xe8, 0x59, 0xdc, + 0x59, 0x8d, 0x59, 0xd9, 0x59, 0xda, 0x5a, 0x25, 0x5a, 0x1f, 0x5a, 0x11, + 0x5a, 0x1c, 0x5a, 0x09, 0x5a, 0x1a, 0x5a, 0x40, 0x5a, 0x6c, 0x5a, 0x49, + 0x5a, 0x35, 0x5a, 0x36, 0x5a, 0x62, 0x5a, 0x6a, 0x5a, 0x9a, 0x5a, 0xbc, + 0x5a, 0xbe, 0x5a, 0xcb, 0x5a, 0xc2, 0x5a, 0xbd, 0x5a, 0xe3, 0x5a, 0xd7, + 0x5a, 0xe6, 0x5a, 0xe9, 0x5a, 0xd6, 0x5a, 0xfa, 0x5a, 0xfb, 0x5b, 0x0c, + 0x5b, 0x0b, 0x5b, 0x16, 0x5b, 0x32, 0x5a, 0xd0, 0x5b, 0x2a, 0x5b, 0x36, + 0x5b, 0x3e, 0x5b, 0x43, 0x5b, 0x45, 0x5b, 0x40, 0x5b, 0x51, 0x5b, 0x55, + 0x5b, 0x5a, 0x5b, 0x5b, 0x5b, 0x65, 0x5b, 0x69, 0x5b, 0x70, 0x5b, 0x73, + 0x5b, 0x75, 0x5b, 0x78, 0x65, 0x88, 0x5b, 0x7a, 0x5b, 0x80, 0x00, 0x20, + 0x5b, 0x83, 0x5b, 0xa6, 0x5b, 0xb8, 0x5b, 0xc3, 0x5b, 0xc7, 0x5b, 0xc9, + 0x5b, 0xd4, 0x5b, 0xd0, 0x5b, 0xe4, 0x5b, 0xe6, 0x5b, 0xe2, 0x5b, 0xde, + 0x5b, 0xe5, 0x5b, 0xeb, 0x5b, 0xf0, 0x5b, 0xf6, 0x5b, 0xf3, 0x5c, 0x05, + 0x5c, 0x07, 0x5c, 0x08, 0x5c, 0x0d, 0x5c, 0x13, 0x5c, 0x20, 0x5c, 0x22, + 0x5c, 0x28, 0x5c, 0x38, 0x5c, 0x39, 0x5c, 0x41, 0x5c, 0x46, 0x5c, 0x4e, + 0x5c, 0x53, 0x5c, 0x50, 0x5c, 0x4f, 0x5b, 0x71, 0x5c, 0x6c, 0x5c, 0x6e, + 0x4e, 0x62, 0x5c, 0x76, 0x5c, 0x79, 0x5c, 0x8c, 0x5c, 0x91, 0x5c, 0x94, + 0x59, 0x9b, 0x5c, 0xab, 0x5c, 0xbb, 0x5c, 0xb6, 0x5c, 0xbc, 0x5c, 0xb7, + 0x5c, 0xc5, 0x5c, 0xbe, 0x5c, 0xc7, 0x5c, 0xd9, 0x5c, 0xe9, 0x5c, 0xfd, + 0x5c, 0xfa, 0x5c, 0xed, 0x5d, 0x8c, 0x5c, 0xea, 0x5d, 0x0b, 0x5d, 0x15, + 0x5d, 0x17, 0x5d, 0x5c, 0x5d, 0x1f, 0x5d, 0x1b, 0x5d, 0x11, 0x5d, 0x14, + 0x5d, 0x22, 0x5d, 0x1a, 0x5d, 0x19, 0x5d, 0x18, 0x5d, 0x4c, 0x5d, 0x52, + 0x5d, 0x4e, 0x5d, 0x4b, 0x5d, 0x6c, 0x5d, 0x73, 0x5d, 0x76, 0x5d, 0x87, + 0x5d, 0x84, 0x5d, 0x82, 0x5d, 0xa2, 0x5d, 0x9d, 0x5d, 0xac, 0x5d, 0xae, + 0x5d, 0xbd, 0x5d, 0x90, 0x5d, 0xb7, 0x5d, 0xbc, 0x5d, 0xc9, 0x5d, 0xcd, + 0x5d, 0xd3, 0x5d, 0xd2, 0x5d, 0xd6, 0x5d, 0xdb, 0x5d, 0xeb, 0x5d, 0xf2, + 0x5d, 0xf5, 0x5e, 0x0b, 0x5e, 0x1a, 0x5e, 0x19, 0x5e, 0x11, 0x5e, 0x1b, + 0x5e, 0x36, 0x5e, 0x37, 0x5e, 0x44, 0x5e, 0x43, 0x5e, 0x40, 0x5e, 0x4e, + 0x5e, 0x57, 0x5e, 0x54, 0x5e, 0x5f, 0x5e, 0x62, 0x5e, 0x64, 0x5e, 0x47, + 0x5e, 0x75, 0x5e, 0x76, 0x5e, 0x7a, 0x9e, 0xbc, 0x5e, 0x7f, 0x5e, 0xa0, + 0x5e, 0xc1, 0x5e, 0xc2, 0x5e, 0xc8, 0x5e, 0xd0, 0x5e, 0xcf, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x5e, 0xd6, 0x5e, 0xe3, 0x5e, 0xdd, 0x5e, 0xda, 0x5e, 0xdb, 0x5e, 0xe2, + 0x5e, 0xe1, 0x5e, 0xe8, 0x5e, 0xe9, 0x5e, 0xec, 0x5e, 0xf1, 0x5e, 0xf3, + 0x5e, 0xf0, 0x5e, 0xf4, 0x5e, 0xf8, 0x5e, 0xfe, 0x5f, 0x03, 0x5f, 0x09, + 0x5f, 0x5d, 0x5f, 0x5c, 0x5f, 0x0b, 0x5f, 0x11, 0x5f, 0x16, 0x5f, 0x29, + 0x5f, 0x2d, 0x5f, 0x38, 0x5f, 0x41, 0x5f, 0x48, 0x5f, 0x4c, 0x5f, 0x4e, + 0x5f, 0x2f, 0x5f, 0x51, 0x5f, 0x56, 0x5f, 0x57, 0x5f, 0x59, 0x5f, 0x61, + 0x5f, 0x6d, 0x5f, 0x73, 0x5f, 0x77, 0x5f, 0x83, 0x5f, 0x82, 0x5f, 0x7f, + 0x5f, 0x8a, 0x5f, 0x88, 0x5f, 0x91, 0x5f, 0x87, 0x5f, 0x9e, 0x5f, 0x99, + 0x5f, 0x98, 0x5f, 0xa0, 0x5f, 0xa8, 0x5f, 0xad, 0x5f, 0xbc, 0x5f, 0xd6, + 0x5f, 0xfb, 0x5f, 0xe4, 0x5f, 0xf8, 0x5f, 0xf1, 0x5f, 0xdd, 0x60, 0xb3, + 0x5f, 0xff, 0x60, 0x21, 0x60, 0x60, 0x00, 0x20, 0x60, 0x19, 0x60, 0x10, + 0x60, 0x29, 0x60, 0x0e, 0x60, 0x31, 0x60, 0x1b, 0x60, 0x15, 0x60, 0x2b, + 0x60, 0x26, 0x60, 0x0f, 0x60, 0x3a, 0x60, 0x5a, 0x60, 0x41, 0x60, 0x6a, + 0x60, 0x77, 0x60, 0x5f, 0x60, 0x4a, 0x60, 0x46, 0x60, 0x4d, 0x60, 0x63, + 0x60, 0x43, 0x60, 0x64, 0x60, 0x42, 0x60, 0x6c, 0x60, 0x6b, 0x60, 0x59, + 0x60, 0x81, 0x60, 0x8d, 0x60, 0xe7, 0x60, 0x83, 0x60, 0x9a, 0x60, 0x84, + 0x60, 0x9b, 0x60, 0x96, 0x60, 0x97, 0x60, 0x92, 0x60, 0xa7, 0x60, 0x8b, + 0x60, 0xe1, 0x60, 0xb8, 0x60, 0xe0, 0x60, 0xd3, 0x60, 0xb4, 0x5f, 0xf0, + 0x60, 0xbd, 0x60, 0xc6, 0x60, 0xb5, 0x60, 0xd8, 0x61, 0x4d, 0x61, 0x15, + 0x61, 0x06, 0x60, 0xf6, 0x60, 0xf7, 0x61, 0x00, 0x60, 0xf4, 0x60, 0xfa, + 0x61, 0x03, 0x61, 0x21, 0x60, 0xfb, 0x60, 0xf1, 0x61, 0x0d, 0x61, 0x0e, + 0x61, 0x47, 0x61, 0x3e, 0x61, 0x28, 0x61, 0x27, 0x61, 0x4a, 0x61, 0x3f, + 0x61, 0x3c, 0x61, 0x2c, 0x61, 0x34, 0x61, 0x3d, 0x61, 0x42, 0x61, 0x44, + 0x61, 0x73, 0x61, 0x77, 0x61, 0x58, 0x61, 0x59, 0x61, 0x5a, 0x61, 0x6b, + 0x61, 0x74, 0x61, 0x6f, 0x61, 0x65, 0x61, 0x71, 0x61, 0x5f, 0x61, 0x5d, + 0x61, 0x53, 0x61, 0x75, 0x61, 0x99, 0x61, 0x96, 0x61, 0x87, 0x61, 0xac, + 0x61, 0x94, 0x61, 0x9a, 0x61, 0x8a, 0x61, 0x91, 0x61, 0xab, 0x61, 0xae, + 0x61, 0xcc, 0x61, 0xca, 0x61, 0xc9, 0x61, 0xf7, 0x61, 0xc8, 0x61, 0xc3, + 0x61, 0xc6, 0x61, 0xba, 0x61, 0xcb, 0x7f, 0x79, 0x61, 0xcd, 0x61, 0xe6, + 0x61, 0xe3, 0x61, 0xf6, 0x61, 0xfa, 0x61, 0xf4, 0x61, 0xff, 0x61, 0xfd, + 0x61, 0xfc, 0x61, 0xfe, 0x62, 0x00, 0x62, 0x08, 0x62, 0x09, 0x62, 0x0d, + 0x62, 0x0c, 0x62, 0x14, 0x62, 0x1b, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x62, 0x1e, 0x62, 0x21, + 0x62, 0x2a, 0x62, 0x2e, 0x62, 0x30, 0x62, 0x32, 0x62, 0x33, 0x62, 0x41, + 0x62, 0x4e, 0x62, 0x5e, 0x62, 0x63, 0x62, 0x5b, 0x62, 0x60, 0x62, 0x68, + 0x62, 0x7c, 0x62, 0x82, 0x62, 0x89, 0x62, 0x7e, 0x62, 0x92, 0x62, 0x93, + 0x62, 0x96, 0x62, 0xd4, 0x62, 0x83, 0x62, 0x94, 0x62, 0xd7, 0x62, 0xd1, + 0x62, 0xbb, 0x62, 0xcf, 0x62, 0xff, 0x62, 0xc6, 0x64, 0xd4, 0x62, 0xc8, + 0x62, 0xdc, 0x62, 0xcc, 0x62, 0xca, 0x62, 0xc2, 0x62, 0xc7, 0x62, 0x9b, + 0x62, 0xc9, 0x63, 0x0c, 0x62, 0xee, 0x62, 0xf1, 0x63, 0x27, 0x63, 0x02, + 0x63, 0x08, 0x62, 0xef, 0x62, 0xf5, 0x63, 0x50, 0x63, 0x3e, 0x63, 0x4d, + 0x64, 0x1c, 0x63, 0x4f, 0x63, 0x96, 0x63, 0x8e, 0x63, 0x80, 0x63, 0xab, + 0x63, 0x76, 0x63, 0xa3, 0x63, 0x8f, 0x63, 0x89, 0x63, 0x9f, 0x63, 0xb5, + 0x63, 0x6b, 0x00, 0x20, 0x63, 0x69, 0x63, 0xbe, 0x63, 0xe9, 0x63, 0xc0, + 0x63, 0xc6, 0x63, 0xe3, 0x63, 0xc9, 0x63, 0xd2, 0x63, 0xf6, 0x63, 0xc4, + 0x64, 0x16, 0x64, 0x34, 0x64, 0x06, 0x64, 0x13, 0x64, 0x26, 0x64, 0x36, + 0x65, 0x1d, 0x64, 0x17, 0x64, 0x28, 0x64, 0x0f, 0x64, 0x67, 0x64, 0x6f, + 0x64, 0x76, 0x64, 0x4e, 0x65, 0x2a, 0x64, 0x95, 0x64, 0x93, 0x64, 0xa5, + 0x64, 0xa9, 0x64, 0x88, 0x64, 0xbc, 0x64, 0xda, 0x64, 0xd2, 0x64, 0xc5, + 0x64, 0xc7, 0x64, 0xbb, 0x64, 0xd8, 0x64, 0xc2, 0x64, 0xf1, 0x64, 0xe7, + 0x82, 0x09, 0x64, 0xe0, 0x64, 0xe1, 0x62, 0xac, 0x64, 0xe3, 0x64, 0xef, + 0x65, 0x2c, 0x64, 0xf6, 0x64, 0xf4, 0x64, 0xf2, 0x64, 0xfa, 0x65, 0x00, + 0x64, 0xfd, 0x65, 0x18, 0x65, 0x1c, 0x65, 0x05, 0x65, 0x24, 0x65, 0x23, + 0x65, 0x2b, 0x65, 0x34, 0x65, 0x35, 0x65, 0x37, 0x65, 0x36, 0x65, 0x38, + 0x75, 0x4b, 0x65, 0x48, 0x65, 0x56, 0x65, 0x55, 0x65, 0x4d, 0x65, 0x58, + 0x65, 0x5e, 0x65, 0x5d, 0x65, 0x72, 0x65, 0x78, 0x65, 0x82, 0x65, 0x83, + 0x8b, 0x8a, 0x65, 0x9b, 0x65, 0x9f, 0x65, 0xab, 0x65, 0xb7, 0x65, 0xc3, + 0x65, 0xc6, 0x65, 0xc1, 0x65, 0xc4, 0x65, 0xcc, 0x65, 0xd2, 0x65, 0xdb, + 0x65, 0xd9, 0x65, 0xe0, 0x65, 0xe1, 0x65, 0xf1, 0x67, 0x72, 0x66, 0x0a, + 0x66, 0x03, 0x65, 0xfb, 0x67, 0x73, 0x66, 0x35, 0x66, 0x36, 0x66, 0x34, + 0x66, 0x1c, 0x66, 0x4f, 0x66, 0x44, 0x66, 0x49, 0x66, 0x41, 0x66, 0x5e, + 0x66, 0x5d, 0x66, 0x64, 0x66, 0x67, 0x66, 0x68, 0x66, 0x5f, 0x66, 0x62, + 0x66, 0x70, 0x66, 0x83, 0x66, 0x88, 0x66, 0x8e, 0x66, 0x89, 0x66, 0x84, + 0x66, 0x98, 0x66, 0x9d, 0x66, 0xc1, 0x66, 0xb9, 0x66, 0xc9, 0x66, 0xbe, + 0x66, 0xbc, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x66, 0xc4, 0x66, 0xb8, 0x66, 0xd6, 0x66, 0xda, + 0x66, 0xe0, 0x66, 0x3f, 0x66, 0xe6, 0x66, 0xe9, 0x66, 0xf0, 0x66, 0xf5, + 0x66, 0xf7, 0x67, 0x0f, 0x67, 0x16, 0x67, 0x1e, 0x67, 0x26, 0x67, 0x27, + 0x97, 0x38, 0x67, 0x2e, 0x67, 0x3f, 0x67, 0x36, 0x67, 0x41, 0x67, 0x38, + 0x67, 0x37, 0x67, 0x46, 0x67, 0x5e, 0x67, 0x60, 0x67, 0x59, 0x67, 0x63, + 0x67, 0x64, 0x67, 0x89, 0x67, 0x70, 0x67, 0xa9, 0x67, 0x7c, 0x67, 0x6a, + 0x67, 0x8c, 0x67, 0x8b, 0x67, 0xa6, 0x67, 0xa1, 0x67, 0x85, 0x67, 0xb7, + 0x67, 0xef, 0x67, 0xb4, 0x67, 0xec, 0x67, 0xb3, 0x67, 0xe9, 0x67, 0xb8, + 0x67, 0xe4, 0x67, 0xde, 0x67, 0xdd, 0x67, 0xe2, 0x67, 0xee, 0x67, 0xb9, + 0x67, 0xce, 0x67, 0xc6, 0x67, 0xe7, 0x6a, 0x9c, 0x68, 0x1e, 0x68, 0x46, + 0x68, 0x29, 0x68, 0x40, 0x68, 0x4d, 0x68, 0x32, 0x68, 0x4e, 0x00, 0x20, + 0x68, 0xb3, 0x68, 0x2b, 0x68, 0x59, 0x68, 0x63, 0x68, 0x77, 0x68, 0x7f, + 0x68, 0x9f, 0x68, 0x8f, 0x68, 0xad, 0x68, 0x94, 0x68, 0x9d, 0x68, 0x9b, + 0x68, 0x83, 0x6a, 0xae, 0x68, 0xb9, 0x68, 0x74, 0x68, 0xb5, 0x68, 0xa0, + 0x68, 0xba, 0x69, 0x0f, 0x68, 0x8d, 0x68, 0x7e, 0x69, 0x01, 0x68, 0xca, + 0x69, 0x08, 0x68, 0xd8, 0x69, 0x22, 0x69, 0x26, 0x68, 0xe1, 0x69, 0x0c, + 0x68, 0xcd, 0x68, 0xd4, 0x68, 0xe7, 0x68, 0xd5, 0x69, 0x36, 0x69, 0x12, + 0x69, 0x04, 0x68, 0xd7, 0x68, 0xe3, 0x69, 0x25, 0x68, 0xf9, 0x68, 0xe0, + 0x68, 0xef, 0x69, 0x28, 0x69, 0x2a, 0x69, 0x1a, 0x69, 0x23, 0x69, 0x21, + 0x68, 0xc6, 0x69, 0x79, 0x69, 0x77, 0x69, 0x5c, 0x69, 0x78, 0x69, 0x6b, + 0x69, 0x54, 0x69, 0x7e, 0x69, 0x6e, 0x69, 0x39, 0x69, 0x74, 0x69, 0x3d, + 0x69, 0x59, 0x69, 0x30, 0x69, 0x61, 0x69, 0x5e, 0x69, 0x5d, 0x69, 0x81, + 0x69, 0x6a, 0x69, 0xb2, 0x69, 0xae, 0x69, 0xd0, 0x69, 0xbf, 0x69, 0xc1, + 0x69, 0xd3, 0x69, 0xbe, 0x69, 0xce, 0x5b, 0xe8, 0x69, 0xca, 0x69, 0xdd, + 0x69, 0xbb, 0x69, 0xc3, 0x69, 0xa7, 0x6a, 0x2e, 0x69, 0x91, 0x69, 0xa0, + 0x69, 0x9c, 0x69, 0x95, 0x69, 0xb4, 0x69, 0xde, 0x69, 0xe8, 0x6a, 0x02, + 0x6a, 0x1b, 0x69, 0xff, 0x6b, 0x0a, 0x69, 0xf9, 0x69, 0xf2, 0x69, 0xe7, + 0x6a, 0x05, 0x69, 0xb1, 0x6a, 0x1e, 0x69, 0xed, 0x6a, 0x14, 0x69, 0xeb, + 0x6a, 0x0a, 0x6a, 0x12, 0x6a, 0xc1, 0x6a, 0x23, 0x6a, 0x13, 0x6a, 0x44, + 0x6a, 0x0c, 0x6a, 0x72, 0x6a, 0x36, 0x6a, 0x78, 0x6a, 0x47, 0x6a, 0x62, + 0x6a, 0x59, 0x6a, 0x66, 0x6a, 0x48, 0x6a, 0x38, 0x6a, 0x22, 0x6a, 0x90, + 0x6a, 0x8d, 0x6a, 0xa0, 0x6a, 0x84, 0x6a, 0xa2, 0x6a, 0xa3, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x6a, 0x97, 0x86, 0x17, 0x6a, 0xbb, 0x6a, 0xc3, 0x6a, 0xc2, 0x6a, 0xb8, + 0x6a, 0xb3, 0x6a, 0xac, 0x6a, 0xde, 0x6a, 0xd1, 0x6a, 0xdf, 0x6a, 0xaa, + 0x6a, 0xda, 0x6a, 0xea, 0x6a, 0xfb, 0x6b, 0x05, 0x86, 0x16, 0x6a, 0xfa, + 0x6b, 0x12, 0x6b, 0x16, 0x9b, 0x31, 0x6b, 0x1f, 0x6b, 0x38, 0x6b, 0x37, + 0x76, 0xdc, 0x6b, 0x39, 0x98, 0xee, 0x6b, 0x47, 0x6b, 0x43, 0x6b, 0x49, + 0x6b, 0x50, 0x6b, 0x59, 0x6b, 0x54, 0x6b, 0x5b, 0x6b, 0x5f, 0x6b, 0x61, + 0x6b, 0x78, 0x6b, 0x79, 0x6b, 0x7f, 0x6b, 0x80, 0x6b, 0x84, 0x6b, 0x83, + 0x6b, 0x8d, 0x6b, 0x98, 0x6b, 0x95, 0x6b, 0x9e, 0x6b, 0xa4, 0x6b, 0xaa, + 0x6b, 0xab, 0x6b, 0xaf, 0x6b, 0xb2, 0x6b, 0xb1, 0x6b, 0xb3, 0x6b, 0xb7, + 0x6b, 0xbc, 0x6b, 0xc6, 0x6b, 0xcb, 0x6b, 0xd3, 0x6b, 0xdf, 0x6b, 0xec, + 0x6b, 0xeb, 0x6b, 0xf3, 0x6b, 0xef, 0x00, 0x20, 0x9e, 0xbe, 0x6c, 0x08, + 0x6c, 0x13, 0x6c, 0x14, 0x6c, 0x1b, 0x6c, 0x24, 0x6c, 0x23, 0x6c, 0x5e, + 0x6c, 0x55, 0x6c, 0x62, 0x6c, 0x6a, 0x6c, 0x82, 0x6c, 0x8d, 0x6c, 0x9a, + 0x6c, 0x81, 0x6c, 0x9b, 0x6c, 0x7e, 0x6c, 0x68, 0x6c, 0x73, 0x6c, 0x92, + 0x6c, 0x90, 0x6c, 0xc4, 0x6c, 0xf1, 0x6c, 0xd3, 0x6c, 0xbd, 0x6c, 0xd7, + 0x6c, 0xc5, 0x6c, 0xdd, 0x6c, 0xae, 0x6c, 0xb1, 0x6c, 0xbe, 0x6c, 0xba, + 0x6c, 0xdb, 0x6c, 0xef, 0x6c, 0xd9, 0x6c, 0xea, 0x6d, 0x1f, 0x88, 0x4d, + 0x6d, 0x36, 0x6d, 0x2b, 0x6d, 0x3d, 0x6d, 0x38, 0x6d, 0x19, 0x6d, 0x35, + 0x6d, 0x33, 0x6d, 0x12, 0x6d, 0x0c, 0x6d, 0x63, 0x6d, 0x93, 0x6d, 0x64, + 0x6d, 0x5a, 0x6d, 0x79, 0x6d, 0x59, 0x6d, 0x8e, 0x6d, 0x95, 0x6f, 0xe4, + 0x6d, 0x85, 0x6d, 0xf9, 0x6e, 0x15, 0x6e, 0x0a, 0x6d, 0xb5, 0x6d, 0xc7, + 0x6d, 0xe6, 0x6d, 0xb8, 0x6d, 0xc6, 0x6d, 0xec, 0x6d, 0xde, 0x6d, 0xcc, + 0x6d, 0xe8, 0x6d, 0xd2, 0x6d, 0xc5, 0x6d, 0xfa, 0x6d, 0xd9, 0x6d, 0xe4, + 0x6d, 0xd5, 0x6d, 0xea, 0x6d, 0xee, 0x6e, 0x2d, 0x6e, 0x6e, 0x6e, 0x2e, + 0x6e, 0x19, 0x6e, 0x72, 0x6e, 0x5f, 0x6e, 0x3e, 0x6e, 0x23, 0x6e, 0x6b, + 0x6e, 0x2b, 0x6e, 0x76, 0x6e, 0x4d, 0x6e, 0x1f, 0x6e, 0x43, 0x6e, 0x3a, + 0x6e, 0x4e, 0x6e, 0x24, 0x6e, 0xff, 0x6e, 0x1d, 0x6e, 0x38, 0x6e, 0x82, + 0x6e, 0xaa, 0x6e, 0x98, 0x6e, 0xc9, 0x6e, 0xb7, 0x6e, 0xd3, 0x6e, 0xbd, + 0x6e, 0xaf, 0x6e, 0xc4, 0x6e, 0xb2, 0x6e, 0xd4, 0x6e, 0xd5, 0x6e, 0x8f, + 0x6e, 0xa5, 0x6e, 0xc2, 0x6e, 0x9f, 0x6f, 0x41, 0x6f, 0x11, 0x70, 0x4c, + 0x6e, 0xec, 0x6e, 0xf8, 0x6e, 0xfe, 0x6f, 0x3f, 0x6e, 0xf2, 0x6f, 0x31, + 0x6e, 0xef, 0x6f, 0x32, 0x6e, 0xcc, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x6f, 0x3e, 0x6f, 0x13, + 0x6e, 0xf7, 0x6f, 0x86, 0x6f, 0x7a, 0x6f, 0x78, 0x6f, 0x81, 0x6f, 0x80, + 0x6f, 0x6f, 0x6f, 0x5b, 0x6f, 0xf3, 0x6f, 0x6d, 0x6f, 0x82, 0x6f, 0x7c, + 0x6f, 0x58, 0x6f, 0x8e, 0x6f, 0x91, 0x6f, 0xc2, 0x6f, 0x66, 0x6f, 0xb3, + 0x6f, 0xa3, 0x6f, 0xa1, 0x6f, 0xa4, 0x6f, 0xb9, 0x6f, 0xc6, 0x6f, 0xaa, + 0x6f, 0xdf, 0x6f, 0xd5, 0x6f, 0xec, 0x6f, 0xd4, 0x6f, 0xd8, 0x6f, 0xf1, + 0x6f, 0xee, 0x6f, 0xdb, 0x70, 0x09, 0x70, 0x0b, 0x6f, 0xfa, 0x70, 0x11, + 0x70, 0x01, 0x70, 0x0f, 0x6f, 0xfe, 0x70, 0x1b, 0x70, 0x1a, 0x6f, 0x74, + 0x70, 0x1d, 0x70, 0x18, 0x70, 0x1f, 0x70, 0x30, 0x70, 0x3e, 0x70, 0x32, + 0x70, 0x51, 0x70, 0x63, 0x70, 0x99, 0x70, 0x92, 0x70, 0xaf, 0x70, 0xf1, + 0x70, 0xac, 0x70, 0xb8, 0x70, 0xb3, 0x70, 0xae, 0x70, 0xdf, 0x70, 0xcb, + 0x70, 0xdd, 0x00, 0x20, 0x70, 0xd9, 0x71, 0x09, 0x70, 0xfd, 0x71, 0x1c, + 0x71, 0x19, 0x71, 0x65, 0x71, 0x55, 0x71, 0x88, 0x71, 0x66, 0x71, 0x62, + 0x71, 0x4c, 0x71, 0x56, 0x71, 0x6c, 0x71, 0x8f, 0x71, 0xfb, 0x71, 0x84, + 0x71, 0x95, 0x71, 0xa8, 0x71, 0xac, 0x71, 0xd7, 0x71, 0xb9, 0x71, 0xbe, + 0x71, 0xd2, 0x71, 0xc9, 0x71, 0xd4, 0x71, 0xce, 0x71, 0xe0, 0x71, 0xec, + 0x71, 0xe7, 0x71, 0xf5, 0x71, 0xfc, 0x71, 0xf9, 0x71, 0xff, 0x72, 0x0d, + 0x72, 0x10, 0x72, 0x1b, 0x72, 0x28, 0x72, 0x2d, 0x72, 0x2c, 0x72, 0x30, + 0x72, 0x32, 0x72, 0x3b, 0x72, 0x3c, 0x72, 0x3f, 0x72, 0x40, 0x72, 0x46, + 0x72, 0x4b, 0x72, 0x58, 0x72, 0x74, 0x72, 0x7e, 0x72, 0x82, 0x72, 0x81, + 0x72, 0x87, 0x72, 0x92, 0x72, 0x96, 0x72, 0xa2, 0x72, 0xa7, 0x72, 0xb9, + 0x72, 0xb2, 0x72, 0xc3, 0x72, 0xc6, 0x72, 0xc4, 0x72, 0xce, 0x72, 0xd2, + 0x72, 0xe2, 0x72, 0xe0, 0x72, 0xe1, 0x72, 0xf9, 0x72, 0xf7, 0x50, 0x0f, + 0x73, 0x17, 0x73, 0x0a, 0x73, 0x1c, 0x73, 0x16, 0x73, 0x1d, 0x73, 0x34, + 0x73, 0x2f, 0x73, 0x29, 0x73, 0x25, 0x73, 0x3e, 0x73, 0x4e, 0x73, 0x4f, + 0x9e, 0xd8, 0x73, 0x57, 0x73, 0x6a, 0x73, 0x68, 0x73, 0x70, 0x73, 0x78, + 0x73, 0x75, 0x73, 0x7b, 0x73, 0x7a, 0x73, 0xc8, 0x73, 0xb3, 0x73, 0xce, + 0x73, 0xbb, 0x73, 0xc0, 0x73, 0xe5, 0x73, 0xee, 0x73, 0xde, 0x74, 0xa2, + 0x74, 0x05, 0x74, 0x6f, 0x74, 0x25, 0x73, 0xf8, 0x74, 0x32, 0x74, 0x3a, + 0x74, 0x55, 0x74, 0x3f, 0x74, 0x5f, 0x74, 0x59, 0x74, 0x41, 0x74, 0x5c, + 0x74, 0x69, 0x74, 0x70, 0x74, 0x63, 0x74, 0x6a, 0x74, 0x76, 0x74, 0x7e, + 0x74, 0x8b, 0x74, 0x9e, 0x74, 0xa7, 0x74, 0xca, 0x74, 0xcf, 0x74, 0xd4, + 0x73, 0xf1, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x74, 0xe0, 0x74, 0xe3, 0x74, 0xe7, 0x74, 0xe9, + 0x74, 0xee, 0x74, 0xf2, 0x74, 0xf0, 0x74, 0xf1, 0x74, 0xf8, 0x74, 0xf7, + 0x75, 0x04, 0x75, 0x03, 0x75, 0x05, 0x75, 0x0c, 0x75, 0x0e, 0x75, 0x0d, + 0x75, 0x15, 0x75, 0x13, 0x75, 0x1e, 0x75, 0x26, 0x75, 0x2c, 0x75, 0x3c, + 0x75, 0x44, 0x75, 0x4d, 0x75, 0x4a, 0x75, 0x49, 0x75, 0x5b, 0x75, 0x46, + 0x75, 0x5a, 0x75, 0x69, 0x75, 0x64, 0x75, 0x67, 0x75, 0x6b, 0x75, 0x6d, + 0x75, 0x78, 0x75, 0x76, 0x75, 0x86, 0x75, 0x87, 0x75, 0x74, 0x75, 0x8a, + 0x75, 0x89, 0x75, 0x82, 0x75, 0x94, 0x75, 0x9a, 0x75, 0x9d, 0x75, 0xa5, + 0x75, 0xa3, 0x75, 0xc2, 0x75, 0xb3, 0x75, 0xc3, 0x75, 0xb5, 0x75, 0xbd, + 0x75, 0xb8, 0x75, 0xbc, 0x75, 0xb1, 0x75, 0xcd, 0x75, 0xca, 0x75, 0xd2, + 0x75, 0xd9, 0x75, 0xe3, 0x75, 0xde, 0x75, 0xfe, 0x75, 0xff, 0x00, 0x20, + 0x75, 0xfc, 0x76, 0x01, 0x75, 0xf0, 0x75, 0xfa, 0x75, 0xf2, 0x75, 0xf3, + 0x76, 0x0b, 0x76, 0x0d, 0x76, 0x09, 0x76, 0x1f, 0x76, 0x27, 0x76, 0x20, + 0x76, 0x21, 0x76, 0x22, 0x76, 0x24, 0x76, 0x34, 0x76, 0x30, 0x76, 0x3b, + 0x76, 0x47, 0x76, 0x48, 0x76, 0x46, 0x76, 0x5c, 0x76, 0x58, 0x76, 0x61, + 0x76, 0x62, 0x76, 0x68, 0x76, 0x69, 0x76, 0x6a, 0x76, 0x67, 0x76, 0x6c, + 0x76, 0x70, 0x76, 0x72, 0x76, 0x76, 0x76, 0x78, 0x76, 0x7c, 0x76, 0x80, + 0x76, 0x83, 0x76, 0x88, 0x76, 0x8b, 0x76, 0x8e, 0x76, 0x96, 0x76, 0x93, + 0x76, 0x99, 0x76, 0x9a, 0x76, 0xb0, 0x76, 0xb4, 0x76, 0xb8, 0x76, 0xb9, + 0x76, 0xba, 0x76, 0xc2, 0x76, 0xcd, 0x76, 0xd6, 0x76, 0xd2, 0x76, 0xde, + 0x76, 0xe1, 0x76, 0xe5, 0x76, 0xe7, 0x76, 0xea, 0x86, 0x2f, 0x76, 0xfb, + 0x77, 0x08, 0x77, 0x07, 0x77, 0x04, 0x77, 0x29, 0x77, 0x24, 0x77, 0x1e, + 0x77, 0x25, 0x77, 0x26, 0x77, 0x1b, 0x77, 0x37, 0x77, 0x38, 0x77, 0x47, + 0x77, 0x5a, 0x77, 0x68, 0x77, 0x6b, 0x77, 0x5b, 0x77, 0x65, 0x77, 0x7f, + 0x77, 0x7e, 0x77, 0x79, 0x77, 0x8e, 0x77, 0x8b, 0x77, 0x91, 0x77, 0xa0, + 0x77, 0x9e, 0x77, 0xb0, 0x77, 0xb6, 0x77, 0xb9, 0x77, 0xbf, 0x77, 0xbc, + 0x77, 0xbd, 0x77, 0xbb, 0x77, 0xc7, 0x77, 0xcd, 0x77, 0xd7, 0x77, 0xda, + 0x77, 0xdc, 0x77, 0xe3, 0x77, 0xee, 0x77, 0xfc, 0x78, 0x0c, 0x78, 0x12, + 0x79, 0x26, 0x78, 0x20, 0x79, 0x2a, 0x78, 0x45, 0x78, 0x8e, 0x78, 0x74, + 0x78, 0x86, 0x78, 0x7c, 0x78, 0x9a, 0x78, 0x8c, 0x78, 0xa3, 0x78, 0xb5, + 0x78, 0xaa, 0x78, 0xaf, 0x78, 0xd1, 0x78, 0xc6, 0x78, 0xcb, 0x78, 0xd4, + 0x78, 0xbe, 0x78, 0xbc, 0x78, 0xc5, 0x78, 0xca, 0x78, 0xec, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x78, 0xe7, 0x78, 0xda, 0x78, 0xfd, 0x78, 0xf4, 0x79, 0x07, 0x79, 0x12, + 0x79, 0x11, 0x79, 0x19, 0x79, 0x2c, 0x79, 0x2b, 0x79, 0x40, 0x79, 0x60, + 0x79, 0x57, 0x79, 0x5f, 0x79, 0x5a, 0x79, 0x55, 0x79, 0x53, 0x79, 0x7a, + 0x79, 0x7f, 0x79, 0x8a, 0x79, 0x9d, 0x79, 0xa7, 0x9f, 0x4b, 0x79, 0xaa, + 0x79, 0xae, 0x79, 0xb3, 0x79, 0xb9, 0x79, 0xba, 0x79, 0xc9, 0x79, 0xd5, + 0x79, 0xe7, 0x79, 0xec, 0x79, 0xe1, 0x79, 0xe3, 0x7a, 0x08, 0x7a, 0x0d, + 0x7a, 0x18, 0x7a, 0x19, 0x7a, 0x20, 0x7a, 0x1f, 0x79, 0x80, 0x7a, 0x31, + 0x7a, 0x3b, 0x7a, 0x3e, 0x7a, 0x37, 0x7a, 0x43, 0x7a, 0x57, 0x7a, 0x49, + 0x7a, 0x61, 0x7a, 0x62, 0x7a, 0x69, 0x9f, 0x9d, 0x7a, 0x70, 0x7a, 0x79, + 0x7a, 0x7d, 0x7a, 0x88, 0x7a, 0x97, 0x7a, 0x95, 0x7a, 0x98, 0x7a, 0x96, + 0x7a, 0xa9, 0x7a, 0xc8, 0x7a, 0xb0, 0x00, 0x20, 0x7a, 0xb6, 0x7a, 0xc5, + 0x7a, 0xc4, 0x7a, 0xbf, 0x90, 0x83, 0x7a, 0xc7, 0x7a, 0xca, 0x7a, 0xcd, + 0x7a, 0xcf, 0x7a, 0xd5, 0x7a, 0xd3, 0x7a, 0xd9, 0x7a, 0xda, 0x7a, 0xdd, + 0x7a, 0xe1, 0x7a, 0xe2, 0x7a, 0xe6, 0x7a, 0xed, 0x7a, 0xf0, 0x7b, 0x02, + 0x7b, 0x0f, 0x7b, 0x0a, 0x7b, 0x06, 0x7b, 0x33, 0x7b, 0x18, 0x7b, 0x19, + 0x7b, 0x1e, 0x7b, 0x35, 0x7b, 0x28, 0x7b, 0x36, 0x7b, 0x50, 0x7b, 0x7a, + 0x7b, 0x04, 0x7b, 0x4d, 0x7b, 0x0b, 0x7b, 0x4c, 0x7b, 0x45, 0x7b, 0x75, + 0x7b, 0x65, 0x7b, 0x74, 0x7b, 0x67, 0x7b, 0x70, 0x7b, 0x71, 0x7b, 0x6c, + 0x7b, 0x6e, 0x7b, 0x9d, 0x7b, 0x98, 0x7b, 0x9f, 0x7b, 0x8d, 0x7b, 0x9c, + 0x7b, 0x9a, 0x7b, 0x8b, 0x7b, 0x92, 0x7b, 0x8f, 0x7b, 0x5d, 0x7b, 0x99, + 0x7b, 0xcb, 0x7b, 0xc1, 0x7b, 0xcc, 0x7b, 0xcf, 0x7b, 0xb4, 0x7b, 0xc6, + 0x7b, 0xdd, 0x7b, 0xe9, 0x7c, 0x11, 0x7c, 0x14, 0x7b, 0xe6, 0x7b, 0xe5, + 0x7c, 0x60, 0x7c, 0x00, 0x7c, 0x07, 0x7c, 0x13, 0x7b, 0xf3, 0x7b, 0xf7, + 0x7c, 0x17, 0x7c, 0x0d, 0x7b, 0xf6, 0x7c, 0x23, 0x7c, 0x27, 0x7c, 0x2a, + 0x7c, 0x1f, 0x7c, 0x37, 0x7c, 0x2b, 0x7c, 0x3d, 0x7c, 0x4c, 0x7c, 0x43, + 0x7c, 0x54, 0x7c, 0x4f, 0x7c, 0x40, 0x7c, 0x50, 0x7c, 0x58, 0x7c, 0x5f, + 0x7c, 0x64, 0x7c, 0x56, 0x7c, 0x65, 0x7c, 0x6c, 0x7c, 0x75, 0x7c, 0x83, + 0x7c, 0x90, 0x7c, 0xa4, 0x7c, 0xad, 0x7c, 0xa2, 0x7c, 0xab, 0x7c, 0xa1, + 0x7c, 0xa8, 0x7c, 0xb3, 0x7c, 0xb2, 0x7c, 0xb1, 0x7c, 0xae, 0x7c, 0xb9, + 0x7c, 0xbd, 0x7c, 0xc0, 0x7c, 0xc5, 0x7c, 0xc2, 0x7c, 0xd8, 0x7c, 0xd2, + 0x7c, 0xdc, 0x7c, 0xe2, 0x9b, 0x3b, 0x7c, 0xef, 0x7c, 0xf2, 0x7c, 0xf4, + 0x7c, 0xf6, 0x7c, 0xfa, 0x7d, 0x06, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x7d, 0x02, 0x7d, 0x1c, + 0x7d, 0x15, 0x7d, 0x0a, 0x7d, 0x45, 0x7d, 0x4b, 0x7d, 0x2e, 0x7d, 0x32, + 0x7d, 0x3f, 0x7d, 0x35, 0x7d, 0x46, 0x7d, 0x73, 0x7d, 0x56, 0x7d, 0x4e, + 0x7d, 0x72, 0x7d, 0x68, 0x7d, 0x6e, 0x7d, 0x4f, 0x7d, 0x63, 0x7d, 0x93, + 0x7d, 0x89, 0x7d, 0x5b, 0x7d, 0x8f, 0x7d, 0x7d, 0x7d, 0x9b, 0x7d, 0xba, + 0x7d, 0xae, 0x7d, 0xa3, 0x7d, 0xb5, 0x7d, 0xc7, 0x7d, 0xbd, 0x7d, 0xab, + 0x7e, 0x3d, 0x7d, 0xa2, 0x7d, 0xaf, 0x7d, 0xdc, 0x7d, 0xb8, 0x7d, 0x9f, + 0x7d, 0xb0, 0x7d, 0xd8, 0x7d, 0xdd, 0x7d, 0xe4, 0x7d, 0xde, 0x7d, 0xfb, + 0x7d, 0xf2, 0x7d, 0xe1, 0x7e, 0x05, 0x7e, 0x0a, 0x7e, 0x23, 0x7e, 0x21, + 0x7e, 0x12, 0x7e, 0x31, 0x7e, 0x1f, 0x7e, 0x09, 0x7e, 0x0b, 0x7e, 0x22, + 0x7e, 0x46, 0x7e, 0x66, 0x7e, 0x3b, 0x7e, 0x35, 0x7e, 0x39, 0x7e, 0x43, + 0x7e, 0x37, 0x00, 0x20, 0x7e, 0x32, 0x7e, 0x3a, 0x7e, 0x67, 0x7e, 0x5d, + 0x7e, 0x56, 0x7e, 0x5e, 0x7e, 0x59, 0x7e, 0x5a, 0x7e, 0x79, 0x7e, 0x6a, + 0x7e, 0x69, 0x7e, 0x7c, 0x7e, 0x7b, 0x7e, 0x83, 0x7d, 0xd5, 0x7e, 0x7d, + 0x8f, 0xae, 0x7e, 0x7f, 0x7e, 0x88, 0x7e, 0x89, 0x7e, 0x8c, 0x7e, 0x92, + 0x7e, 0x90, 0x7e, 0x93, 0x7e, 0x94, 0x7e, 0x96, 0x7e, 0x8e, 0x7e, 0x9b, + 0x7e, 0x9c, 0x7f, 0x38, 0x7f, 0x3a, 0x7f, 0x45, 0x7f, 0x4c, 0x7f, 0x4d, + 0x7f, 0x4e, 0x7f, 0x50, 0x7f, 0x51, 0x7f, 0x55, 0x7f, 0x54, 0x7f, 0x58, + 0x7f, 0x5f, 0x7f, 0x60, 0x7f, 0x68, 0x7f, 0x69, 0x7f, 0x67, 0x7f, 0x78, + 0x7f, 0x82, 0x7f, 0x86, 0x7f, 0x83, 0x7f, 0x88, 0x7f, 0x87, 0x7f, 0x8c, + 0x7f, 0x94, 0x7f, 0x9e, 0x7f, 0x9d, 0x7f, 0x9a, 0x7f, 0xa3, 0x7f, 0xaf, + 0x7f, 0xb2, 0x7f, 0xb9, 0x7f, 0xae, 0x7f, 0xb6, 0x7f, 0xb8, 0x8b, 0x71, + 0x7f, 0xc5, 0x7f, 0xc6, 0x7f, 0xca, 0x7f, 0xd5, 0x7f, 0xd4, 0x7f, 0xe1, + 0x7f, 0xe6, 0x7f, 0xe9, 0x7f, 0xf3, 0x7f, 0xf9, 0x98, 0xdc, 0x80, 0x06, + 0x80, 0x04, 0x80, 0x0b, 0x80, 0x12, 0x80, 0x18, 0x80, 0x19, 0x80, 0x1c, + 0x80, 0x21, 0x80, 0x28, 0x80, 0x3f, 0x80, 0x3b, 0x80, 0x4a, 0x80, 0x46, + 0x80, 0x52, 0x80, 0x58, 0x80, 0x5a, 0x80, 0x5f, 0x80, 0x62, 0x80, 0x68, + 0x80, 0x73, 0x80, 0x72, 0x80, 0x70, 0x80, 0x76, 0x80, 0x79, 0x80, 0x7d, + 0x80, 0x7f, 0x80, 0x84, 0x80, 0x86, 0x80, 0x85, 0x80, 0x9b, 0x80, 0x93, + 0x80, 0x9a, 0x80, 0xad, 0x51, 0x90, 0x80, 0xac, 0x80, 0xdb, 0x80, 0xe5, + 0x80, 0xd9, 0x80, 0xdd, 0x80, 0xc4, 0x80, 0xda, 0x80, 0xd6, 0x81, 0x09, + 0x80, 0xef, 0x80, 0xf1, 0x81, 0x1b, 0x81, 0x29, 0x81, 0x23, 0x81, 0x2f, + 0x81, 0x4b, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x96, 0x8b, 0x81, 0x46, 0x81, 0x3e, 0x81, 0x53, + 0x81, 0x51, 0x80, 0xfc, 0x81, 0x71, 0x81, 0x6e, 0x81, 0x65, 0x81, 0x66, + 0x81, 0x74, 0x81, 0x83, 0x81, 0x88, 0x81, 0x8a, 0x81, 0x80, 0x81, 0x82, + 0x81, 0xa0, 0x81, 0x95, 0x81, 0xa4, 0x81, 0xa3, 0x81, 0x5f, 0x81, 0x93, + 0x81, 0xa9, 0x81, 0xb0, 0x81, 0xb5, 0x81, 0xbe, 0x81, 0xb8, 0x81, 0xbd, + 0x81, 0xc0, 0x81, 0xc2, 0x81, 0xba, 0x81, 0xc9, 0x81, 0xcd, 0x81, 0xd1, + 0x81, 0xd9, 0x81, 0xd8, 0x81, 0xc8, 0x81, 0xda, 0x81, 0xdf, 0x81, 0xe0, + 0x81, 0xe7, 0x81, 0xfa, 0x81, 0xfb, 0x81, 0xfe, 0x82, 0x01, 0x82, 0x02, + 0x82, 0x05, 0x82, 0x07, 0x82, 0x0a, 0x82, 0x0d, 0x82, 0x10, 0x82, 0x16, + 0x82, 0x29, 0x82, 0x2b, 0x82, 0x38, 0x82, 0x33, 0x82, 0x40, 0x82, 0x59, + 0x82, 0x58, 0x82, 0x5d, 0x82, 0x5a, 0x82, 0x5f, 0x82, 0x64, 0x00, 0x20, + 0x82, 0x62, 0x82, 0x68, 0x82, 0x6a, 0x82, 0x6b, 0x82, 0x2e, 0x82, 0x71, + 0x82, 0x77, 0x82, 0x78, 0x82, 0x7e, 0x82, 0x8d, 0x82, 0x92, 0x82, 0xab, + 0x82, 0x9f, 0x82, 0xbb, 0x82, 0xac, 0x82, 0xe1, 0x82, 0xe3, 0x82, 0xdf, + 0x82, 0xd2, 0x82, 0xf4, 0x82, 0xf3, 0x82, 0xfa, 0x83, 0x93, 0x83, 0x03, + 0x82, 0xfb, 0x82, 0xf9, 0x82, 0xde, 0x83, 0x06, 0x82, 0xdc, 0x83, 0x09, + 0x82, 0xd9, 0x83, 0x35, 0x83, 0x34, 0x83, 0x16, 0x83, 0x32, 0x83, 0x31, + 0x83, 0x40, 0x83, 0x39, 0x83, 0x50, 0x83, 0x45, 0x83, 0x2f, 0x83, 0x2b, + 0x83, 0x17, 0x83, 0x18, 0x83, 0x85, 0x83, 0x9a, 0x83, 0xaa, 0x83, 0x9f, + 0x83, 0xa2, 0x83, 0x96, 0x83, 0x23, 0x83, 0x8e, 0x83, 0x87, 0x83, 0x8a, + 0x83, 0x7c, 0x83, 0xb5, 0x83, 0x73, 0x83, 0x75, 0x83, 0xa0, 0x83, 0x89, + 0x83, 0xa8, 0x83, 0xf4, 0x84, 0x13, 0x83, 0xeb, 0x83, 0xce, 0x83, 0xfd, + 0x84, 0x03, 0x83, 0xd8, 0x84, 0x0b, 0x83, 0xc1, 0x83, 0xf7, 0x84, 0x07, + 0x83, 0xe0, 0x83, 0xf2, 0x84, 0x0d, 0x84, 0x22, 0x84, 0x20, 0x83, 0xbd, + 0x84, 0x38, 0x85, 0x06, 0x83, 0xfb, 0x84, 0x6d, 0x84, 0x2a, 0x84, 0x3c, + 0x85, 0x5a, 0x84, 0x84, 0x84, 0x77, 0x84, 0x6b, 0x84, 0xad, 0x84, 0x6e, + 0x84, 0x82, 0x84, 0x69, 0x84, 0x46, 0x84, 0x2c, 0x84, 0x6f, 0x84, 0x79, + 0x84, 0x35, 0x84, 0xca, 0x84, 0x62, 0x84, 0xb9, 0x84, 0xbf, 0x84, 0x9f, + 0x84, 0xd9, 0x84, 0xcd, 0x84, 0xbb, 0x84, 0xda, 0x84, 0xd0, 0x84, 0xc1, + 0x84, 0xc6, 0x84, 0xd6, 0x84, 0xa1, 0x85, 0x21, 0x84, 0xff, 0x84, 0xf4, + 0x85, 0x17, 0x85, 0x18, 0x85, 0x2c, 0x85, 0x1f, 0x85, 0x15, 0x85, 0x14, + 0x84, 0xfc, 0x85, 0x40, 0x85, 0x63, 0x85, 0x58, 0x85, 0x48, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x85, 0x41, 0x86, 0x02, 0x85, 0x4b, 0x85, 0x55, 0x85, 0x80, 0x85, 0xa4, + 0x85, 0x88, 0x85, 0x91, 0x85, 0x8a, 0x85, 0xa8, 0x85, 0x6d, 0x85, 0x94, + 0x85, 0x9b, 0x85, 0xea, 0x85, 0x87, 0x85, 0x9c, 0x85, 0x77, 0x85, 0x7e, + 0x85, 0x90, 0x85, 0xc9, 0x85, 0xba, 0x85, 0xcf, 0x85, 0xb9, 0x85, 0xd0, + 0x85, 0xd5, 0x85, 0xdd, 0x85, 0xe5, 0x85, 0xdc, 0x85, 0xf9, 0x86, 0x0a, + 0x86, 0x13, 0x86, 0x0b, 0x85, 0xfe, 0x85, 0xfa, 0x86, 0x06, 0x86, 0x22, + 0x86, 0x1a, 0x86, 0x30, 0x86, 0x3f, 0x86, 0x4d, 0x4e, 0x55, 0x86, 0x54, + 0x86, 0x5f, 0x86, 0x67, 0x86, 0x71, 0x86, 0x93, 0x86, 0xa3, 0x86, 0xa9, + 0x86, 0xaa, 0x86, 0x8b, 0x86, 0x8c, 0x86, 0xb6, 0x86, 0xaf, 0x86, 0xc4, + 0x86, 0xc6, 0x86, 0xb0, 0x86, 0xc9, 0x88, 0x23, 0x86, 0xab, 0x86, 0xd4, + 0x86, 0xde, 0x86, 0xe9, 0x86, 0xec, 0x00, 0x20, 0x86, 0xdf, 0x86, 0xdb, + 0x86, 0xef, 0x87, 0x12, 0x87, 0x06, 0x87, 0x08, 0x87, 0x00, 0x87, 0x03, + 0x86, 0xfb, 0x87, 0x11, 0x87, 0x09, 0x87, 0x0d, 0x86, 0xf9, 0x87, 0x0a, + 0x87, 0x34, 0x87, 0x3f, 0x87, 0x37, 0x87, 0x3b, 0x87, 0x25, 0x87, 0x29, + 0x87, 0x1a, 0x87, 0x60, 0x87, 0x5f, 0x87, 0x78, 0x87, 0x4c, 0x87, 0x4e, + 0x87, 0x74, 0x87, 0x57, 0x87, 0x68, 0x87, 0x6e, 0x87, 0x59, 0x87, 0x53, + 0x87, 0x63, 0x87, 0x6a, 0x88, 0x05, 0x87, 0xa2, 0x87, 0x9f, 0x87, 0x82, + 0x87, 0xaf, 0x87, 0xcb, 0x87, 0xbd, 0x87, 0xc0, 0x87, 0xd0, 0x96, 0xd6, + 0x87, 0xab, 0x87, 0xc4, 0x87, 0xb3, 0x87, 0xc7, 0x87, 0xc6, 0x87, 0xbb, + 0x87, 0xef, 0x87, 0xf2, 0x87, 0xe0, 0x88, 0x0f, 0x88, 0x0d, 0x87, 0xfe, + 0x87, 0xf6, 0x87, 0xf7, 0x88, 0x0e, 0x87, 0xd2, 0x88, 0x11, 0x88, 0x16, + 0x88, 0x15, 0x88, 0x22, 0x88, 0x21, 0x88, 0x31, 0x88, 0x36, 0x88, 0x39, + 0x88, 0x27, 0x88, 0x3b, 0x88, 0x44, 0x88, 0x42, 0x88, 0x52, 0x88, 0x59, + 0x88, 0x5e, 0x88, 0x62, 0x88, 0x6b, 0x88, 0x81, 0x88, 0x7e, 0x88, 0x9e, + 0x88, 0x75, 0x88, 0x7d, 0x88, 0xb5, 0x88, 0x72, 0x88, 0x82, 0x88, 0x97, + 0x88, 0x92, 0x88, 0xae, 0x88, 0x99, 0x88, 0xa2, 0x88, 0x8d, 0x88, 0xa4, + 0x88, 0xb0, 0x88, 0xbf, 0x88, 0xb1, 0x88, 0xc3, 0x88, 0xc4, 0x88, 0xd4, + 0x88, 0xd8, 0x88, 0xd9, 0x88, 0xdd, 0x88, 0xf9, 0x89, 0x02, 0x88, 0xfc, + 0x88, 0xf4, 0x88, 0xe8, 0x88, 0xf2, 0x89, 0x04, 0x89, 0x0c, 0x89, 0x0a, + 0x89, 0x13, 0x89, 0x43, 0x89, 0x1e, 0x89, 0x25, 0x89, 0x2a, 0x89, 0x2b, + 0x89, 0x41, 0x89, 0x44, 0x89, 0x3b, 0x89, 0x36, 0x89, 0x38, 0x89, 0x4c, + 0x89, 0x1d, 0x89, 0x60, 0x89, 0x5e, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x89, 0x66, 0x89, 0x64, + 0x89, 0x6d, 0x89, 0x6a, 0x89, 0x6f, 0x89, 0x74, 0x89, 0x77, 0x89, 0x7e, + 0x89, 0x83, 0x89, 0x88, 0x89, 0x8a, 0x89, 0x93, 0x89, 0x98, 0x89, 0xa1, + 0x89, 0xa9, 0x89, 0xa6, 0x89, 0xac, 0x89, 0xaf, 0x89, 0xb2, 0x89, 0xba, + 0x89, 0xbd, 0x89, 0xbf, 0x89, 0xc0, 0x89, 0xda, 0x89, 0xdc, 0x89, 0xdd, + 0x89, 0xe7, 0x89, 0xf4, 0x89, 0xf8, 0x8a, 0x03, 0x8a, 0x16, 0x8a, 0x10, + 0x8a, 0x0c, 0x8a, 0x1b, 0x8a, 0x1d, 0x8a, 0x25, 0x8a, 0x36, 0x8a, 0x41, + 0x8a, 0x5b, 0x8a, 0x52, 0x8a, 0x46, 0x8a, 0x48, 0x8a, 0x7c, 0x8a, 0x6d, + 0x8a, 0x6c, 0x8a, 0x62, 0x8a, 0x85, 0x8a, 0x82, 0x8a, 0x84, 0x8a, 0xa8, + 0x8a, 0xa1, 0x8a, 0x91, 0x8a, 0xa5, 0x8a, 0xa6, 0x8a, 0x9a, 0x8a, 0xa3, + 0x8a, 0xc4, 0x8a, 0xcd, 0x8a, 0xc2, 0x8a, 0xda, 0x8a, 0xeb, 0x8a, 0xf3, + 0x8a, 0xe7, 0x00, 0x20, 0x8a, 0xe4, 0x8a, 0xf1, 0x8b, 0x14, 0x8a, 0xe0, + 0x8a, 0xe2, 0x8a, 0xf7, 0x8a, 0xde, 0x8a, 0xdb, 0x8b, 0x0c, 0x8b, 0x07, + 0x8b, 0x1a, 0x8a, 0xe1, 0x8b, 0x16, 0x8b, 0x10, 0x8b, 0x17, 0x8b, 0x20, + 0x8b, 0x33, 0x97, 0xab, 0x8b, 0x26, 0x8b, 0x2b, 0x8b, 0x3e, 0x8b, 0x28, + 0x8b, 0x41, 0x8b, 0x4c, 0x8b, 0x4f, 0x8b, 0x4e, 0x8b, 0x49, 0x8b, 0x56, + 0x8b, 0x5b, 0x8b, 0x5a, 0x8b, 0x6b, 0x8b, 0x5f, 0x8b, 0x6c, 0x8b, 0x6f, + 0x8b, 0x74, 0x8b, 0x7d, 0x8b, 0x80, 0x8b, 0x8c, 0x8b, 0x8e, 0x8b, 0x92, + 0x8b, 0x93, 0x8b, 0x96, 0x8b, 0x99, 0x8b, 0x9a, 0x8c, 0x3a, 0x8c, 0x41, + 0x8c, 0x3f, 0x8c, 0x48, 0x8c, 0x4c, 0x8c, 0x4e, 0x8c, 0x50, 0x8c, 0x55, + 0x8c, 0x62, 0x8c, 0x6c, 0x8c, 0x78, 0x8c, 0x7a, 0x8c, 0x82, 0x8c, 0x89, + 0x8c, 0x85, 0x8c, 0x8a, 0x8c, 0x8d, 0x8c, 0x8e, 0x8c, 0x94, 0x8c, 0x7c, + 0x8c, 0x98, 0x62, 0x1d, 0x8c, 0xad, 0x8c, 0xaa, 0x8c, 0xbd, 0x8c, 0xb2, + 0x8c, 0xb3, 0x8c, 0xae, 0x8c, 0xb6, 0x8c, 0xc8, 0x8c, 0xc1, 0x8c, 0xe4, + 0x8c, 0xe3, 0x8c, 0xda, 0x8c, 0xfd, 0x8c, 0xfa, 0x8c, 0xfb, 0x8d, 0x04, + 0x8d, 0x05, 0x8d, 0x0a, 0x8d, 0x07, 0x8d, 0x0f, 0x8d, 0x0d, 0x8d, 0x10, + 0x9f, 0x4e, 0x8d, 0x13, 0x8c, 0xcd, 0x8d, 0x14, 0x8d, 0x16, 0x8d, 0x67, + 0x8d, 0x6d, 0x8d, 0x71, 0x8d, 0x73, 0x8d, 0x81, 0x8d, 0x99, 0x8d, 0xc2, + 0x8d, 0xbe, 0x8d, 0xba, 0x8d, 0xcf, 0x8d, 0xda, 0x8d, 0xd6, 0x8d, 0xcc, + 0x8d, 0xdb, 0x8d, 0xcb, 0x8d, 0xea, 0x8d, 0xeb, 0x8d, 0xdf, 0x8d, 0xe3, + 0x8d, 0xfc, 0x8e, 0x08, 0x8e, 0x09, 0x8d, 0xff, 0x8e, 0x1d, 0x8e, 0x1e, + 0x8e, 0x10, 0x8e, 0x1f, 0x8e, 0x42, 0x8e, 0x35, 0x8e, 0x30, 0x8e, 0x34, + 0x8e, 0x4a, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x8e, 0x47, 0x8e, 0x49, 0x8e, 0x4c, 0x8e, 0x50, + 0x8e, 0x48, 0x8e, 0x59, 0x8e, 0x64, 0x8e, 0x60, 0x8e, 0x2a, 0x8e, 0x63, + 0x8e, 0x55, 0x8e, 0x76, 0x8e, 0x72, 0x8e, 0x7c, 0x8e, 0x81, 0x8e, 0x87, + 0x8e, 0x85, 0x8e, 0x84, 0x8e, 0x8b, 0x8e, 0x8a, 0x8e, 0x93, 0x8e, 0x91, + 0x8e, 0x94, 0x8e, 0x99, 0x8e, 0xaa, 0x8e, 0xa1, 0x8e, 0xac, 0x8e, 0xb0, + 0x8e, 0xc6, 0x8e, 0xb1, 0x8e, 0xbe, 0x8e, 0xc5, 0x8e, 0xc8, 0x8e, 0xcb, + 0x8e, 0xdb, 0x8e, 0xe3, 0x8e, 0xfc, 0x8e, 0xfb, 0x8e, 0xeb, 0x8e, 0xfe, + 0x8f, 0x0a, 0x8f, 0x05, 0x8f, 0x15, 0x8f, 0x12, 0x8f, 0x19, 0x8f, 0x13, + 0x8f, 0x1c, 0x8f, 0x1f, 0x8f, 0x1b, 0x8f, 0x0c, 0x8f, 0x26, 0x8f, 0x33, + 0x8f, 0x3b, 0x8f, 0x39, 0x8f, 0x45, 0x8f, 0x42, 0x8f, 0x3e, 0x8f, 0x4c, + 0x8f, 0x49, 0x8f, 0x46, 0x8f, 0x4e, 0x8f, 0x57, 0x8f, 0x5c, 0x00, 0x20, + 0x8f, 0x62, 0x8f, 0x63, 0x8f, 0x64, 0x8f, 0x9c, 0x8f, 0x9f, 0x8f, 0xa3, + 0x8f, 0xad, 0x8f, 0xaf, 0x8f, 0xb7, 0x8f, 0xda, 0x8f, 0xe5, 0x8f, 0xe2, + 0x8f, 0xea, 0x8f, 0xef, 0x90, 0x87, 0x8f, 0xf4, 0x90, 0x05, 0x8f, 0xf9, + 0x8f, 0xfa, 0x90, 0x11, 0x90, 0x15, 0x90, 0x21, 0x90, 0x0d, 0x90, 0x1e, + 0x90, 0x16, 0x90, 0x0b, 0x90, 0x27, 0x90, 0x36, 0x90, 0x35, 0x90, 0x39, + 0x8f, 0xf8, 0x90, 0x4f, 0x90, 0x50, 0x90, 0x51, 0x90, 0x52, 0x90, 0x0e, + 0x90, 0x49, 0x90, 0x3e, 0x90, 0x56, 0x90, 0x58, 0x90, 0x5e, 0x90, 0x68, + 0x90, 0x6f, 0x90, 0x76, 0x96, 0xa8, 0x90, 0x72, 0x90, 0x82, 0x90, 0x7d, + 0x90, 0x81, 0x90, 0x80, 0x90, 0x8a, 0x90, 0x89, 0x90, 0x8f, 0x90, 0xa8, + 0x90, 0xaf, 0x90, 0xb1, 0x90, 0xb5, 0x90, 0xe2, 0x90, 0xe4, 0x62, 0x48, + 0x90, 0xdb, 0x91, 0x02, 0x91, 0x12, 0x91, 0x19, 0x91, 0x32, 0x91, 0x30, + 0x91, 0x4a, 0x91, 0x56, 0x91, 0x58, 0x91, 0x63, 0x91, 0x65, 0x91, 0x69, + 0x91, 0x73, 0x91, 0x72, 0x91, 0x8b, 0x91, 0x89, 0x91, 0x82, 0x91, 0xa2, + 0x91, 0xab, 0x91, 0xaf, 0x91, 0xaa, 0x91, 0xb5, 0x91, 0xb4, 0x91, 0xba, + 0x91, 0xc0, 0x91, 0xc1, 0x91, 0xc9, 0x91, 0xcb, 0x91, 0xd0, 0x91, 0xd6, + 0x91, 0xdf, 0x91, 0xe1, 0x91, 0xdb, 0x91, 0xfc, 0x91, 0xf5, 0x91, 0xf6, + 0x92, 0x1e, 0x91, 0xff, 0x92, 0x14, 0x92, 0x2c, 0x92, 0x15, 0x92, 0x11, + 0x92, 0x5e, 0x92, 0x57, 0x92, 0x45, 0x92, 0x49, 0x92, 0x64, 0x92, 0x48, + 0x92, 0x95, 0x92, 0x3f, 0x92, 0x4b, 0x92, 0x50, 0x92, 0x9c, 0x92, 0x96, + 0x92, 0x93, 0x92, 0x9b, 0x92, 0x5a, 0x92, 0xcf, 0x92, 0xb9, 0x92, 0xb7, + 0x92, 0xe9, 0x93, 0x0f, 0x92, 0xfa, 0x93, 0x44, 0x93, 0x2e, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x93, 0x19, 0x93, 0x22, 0x93, 0x1a, 0x93, 0x23, 0x93, 0x3a, 0x93, 0x35, + 0x93, 0x3b, 0x93, 0x5c, 0x93, 0x60, 0x93, 0x7c, 0x93, 0x6e, 0x93, 0x56, + 0x93, 0xb0, 0x93, 0xac, 0x93, 0xad, 0x93, 0x94, 0x93, 0xb9, 0x93, 0xd6, + 0x93, 0xd7, 0x93, 0xe8, 0x93, 0xe5, 0x93, 0xd8, 0x93, 0xc3, 0x93, 0xdd, + 0x93, 0xd0, 0x93, 0xc8, 0x93, 0xe4, 0x94, 0x1a, 0x94, 0x14, 0x94, 0x13, + 0x94, 0x03, 0x94, 0x07, 0x94, 0x10, 0x94, 0x36, 0x94, 0x2b, 0x94, 0x35, + 0x94, 0x21, 0x94, 0x3a, 0x94, 0x41, 0x94, 0x52, 0x94, 0x44, 0x94, 0x5b, + 0x94, 0x60, 0x94, 0x62, 0x94, 0x5e, 0x94, 0x6a, 0x92, 0x29, 0x94, 0x70, + 0x94, 0x75, 0x94, 0x77, 0x94, 0x7d, 0x94, 0x5a, 0x94, 0x7c, 0x94, 0x7e, + 0x94, 0x81, 0x94, 0x7f, 0x95, 0x82, 0x95, 0x87, 0x95, 0x8a, 0x95, 0x94, + 0x95, 0x96, 0x95, 0x98, 0x95, 0x99, 0x00, 0x20, 0x95, 0xa0, 0x95, 0xa8, + 0x95, 0xa7, 0x95, 0xad, 0x95, 0xbc, 0x95, 0xbb, 0x95, 0xb9, 0x95, 0xbe, + 0x95, 0xca, 0x6f, 0xf6, 0x95, 0xc3, 0x95, 0xcd, 0x95, 0xcc, 0x95, 0xd5, + 0x95, 0xd4, 0x95, 0xd6, 0x95, 0xdc, 0x95, 0xe1, 0x95, 0xe5, 0x95, 0xe2, + 0x96, 0x21, 0x96, 0x28, 0x96, 0x2e, 0x96, 0x2f, 0x96, 0x42, 0x96, 0x4c, + 0x96, 0x4f, 0x96, 0x4b, 0x96, 0x77, 0x96, 0x5c, 0x96, 0x5e, 0x96, 0x5d, + 0x96, 0x5f, 0x96, 0x66, 0x96, 0x72, 0x96, 0x6c, 0x96, 0x8d, 0x96, 0x98, + 0x96, 0x95, 0x96, 0x97, 0x96, 0xaa, 0x96, 0xa7, 0x96, 0xb1, 0x96, 0xb2, + 0x96, 0xb0, 0x96, 0xb4, 0x96, 0xb6, 0x96, 0xb8, 0x96, 0xb9, 0x96, 0xce, + 0x96, 0xcb, 0x96, 0xc9, 0x96, 0xcd, 0x89, 0x4d, 0x96, 0xdc, 0x97, 0x0d, + 0x96, 0xd5, 0x96, 0xf9, 0x97, 0x04, 0x97, 0x06, 0x97, 0x08, 0x97, 0x13, + 0x97, 0x0e, 0x97, 0x11, 0x97, 0x0f, 0x97, 0x16, 0x97, 0x19, 0x97, 0x24, + 0x97, 0x2a, 0x97, 0x30, 0x97, 0x39, 0x97, 0x3d, 0x97, 0x3e, 0x97, 0x44, + 0x97, 0x46, 0x97, 0x48, 0x97, 0x42, 0x97, 0x49, 0x97, 0x5c, 0x97, 0x60, + 0x97, 0x64, 0x97, 0x66, 0x97, 0x68, 0x52, 0xd2, 0x97, 0x6b, 0x97, 0x71, + 0x97, 0x79, 0x97, 0x85, 0x97, 0x7c, 0x97, 0x81, 0x97, 0x7a, 0x97, 0x86, + 0x97, 0x8b, 0x97, 0x8f, 0x97, 0x90, 0x97, 0x9c, 0x97, 0xa8, 0x97, 0xa6, + 0x97, 0xa3, 0x97, 0xb3, 0x97, 0xb4, 0x97, 0xc3, 0x97, 0xc6, 0x97, 0xc8, + 0x97, 0xcb, 0x97, 0xdc, 0x97, 0xed, 0x9f, 0x4f, 0x97, 0xf2, 0x7a, 0xdf, + 0x97, 0xf6, 0x97, 0xf5, 0x98, 0x0f, 0x98, 0x0c, 0x98, 0x38, 0x98, 0x24, + 0x98, 0x21, 0x98, 0x37, 0x98, 0x3d, 0x98, 0x46, 0x98, 0x4f, 0x98, 0x4b, + 0x98, 0x6b, 0x98, 0x6f, 0x98, 0x70, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x98, 0x71, 0x98, 0x74, + 0x98, 0x73, 0x98, 0xaa, 0x98, 0xaf, 0x98, 0xb1, 0x98, 0xb6, 0x98, 0xc4, + 0x98, 0xc3, 0x98, 0xc6, 0x98, 0xe9, 0x98, 0xeb, 0x99, 0x03, 0x99, 0x09, + 0x99, 0x12, 0x99, 0x14, 0x99, 0x18, 0x99, 0x21, 0x99, 0x1d, 0x99, 0x1e, + 0x99, 0x24, 0x99, 0x20, 0x99, 0x2c, 0x99, 0x2e, 0x99, 0x3d, 0x99, 0x3e, + 0x99, 0x42, 0x99, 0x49, 0x99, 0x45, 0x99, 0x50, 0x99, 0x4b, 0x99, 0x51, + 0x99, 0x52, 0x99, 0x4c, 0x99, 0x55, 0x99, 0x97, 0x99, 0x98, 0x99, 0xa5, + 0x99, 0xad, 0x99, 0xae, 0x99, 0xbc, 0x99, 0xdf, 0x99, 0xdb, 0x99, 0xdd, + 0x99, 0xd8, 0x99, 0xd1, 0x99, 0xed, 0x99, 0xee, 0x99, 0xf1, 0x99, 0xf2, + 0x99, 0xfb, 0x99, 0xf8, 0x9a, 0x01, 0x9a, 0x0f, 0x9a, 0x05, 0x99, 0xe2, + 0x9a, 0x19, 0x9a, 0x2b, 0x9a, 0x37, 0x9a, 0x45, 0x9a, 0x42, 0x9a, 0x40, + 0x9a, 0x43, 0x00, 0x20, 0x9a, 0x3e, 0x9a, 0x55, 0x9a, 0x4d, 0x9a, 0x5b, + 0x9a, 0x57, 0x9a, 0x5f, 0x9a, 0x62, 0x9a, 0x65, 0x9a, 0x64, 0x9a, 0x69, + 0x9a, 0x6b, 0x9a, 0x6a, 0x9a, 0xad, 0x9a, 0xb0, 0x9a, 0xbc, 0x9a, 0xc0, + 0x9a, 0xcf, 0x9a, 0xd1, 0x9a, 0xd3, 0x9a, 0xd4, 0x9a, 0xde, 0x9a, 0xdf, + 0x9a, 0xe2, 0x9a, 0xe3, 0x9a, 0xe6, 0x9a, 0xef, 0x9a, 0xeb, 0x9a, 0xee, + 0x9a, 0xf4, 0x9a, 0xf1, 0x9a, 0xf7, 0x9a, 0xfb, 0x9b, 0x06, 0x9b, 0x18, + 0x9b, 0x1a, 0x9b, 0x1f, 0x9b, 0x22, 0x9b, 0x23, 0x9b, 0x25, 0x9b, 0x27, + 0x9b, 0x28, 0x9b, 0x29, 0x9b, 0x2a, 0x9b, 0x2e, 0x9b, 0x2f, 0x9b, 0x32, + 0x9b, 0x44, 0x9b, 0x43, 0x9b, 0x4f, 0x9b, 0x4d, 0x9b, 0x4e, 0x9b, 0x51, + 0x9b, 0x58, 0x9b, 0x74, 0x9b, 0x93, 0x9b, 0x83, 0x9b, 0x91, 0x9b, 0x96, + 0x9b, 0x97, 0x9b, 0x9f, 0x9b, 0xa0, 0x9b, 0xa8, 0x9b, 0xb4, 0x9b, 0xc0, + 0x9b, 0xca, 0x9b, 0xb9, 0x9b, 0xc6, 0x9b, 0xcf, 0x9b, 0xd1, 0x9b, 0xd2, + 0x9b, 0xe3, 0x9b, 0xe2, 0x9b, 0xe4, 0x9b, 0xd4, 0x9b, 0xe1, 0x9c, 0x3a, + 0x9b, 0xf2, 0x9b, 0xf1, 0x9b, 0xf0, 0x9c, 0x15, 0x9c, 0x14, 0x9c, 0x09, + 0x9c, 0x13, 0x9c, 0x0c, 0x9c, 0x06, 0x9c, 0x08, 0x9c, 0x12, 0x9c, 0x0a, + 0x9c, 0x04, 0x9c, 0x2e, 0x9c, 0x1b, 0x9c, 0x25, 0x9c, 0x24, 0x9c, 0x21, + 0x9c, 0x30, 0x9c, 0x47, 0x9c, 0x32, 0x9c, 0x46, 0x9c, 0x3e, 0x9c, 0x5a, + 0x9c, 0x60, 0x9c, 0x67, 0x9c, 0x76, 0x9c, 0x78, 0x9c, 0xe7, 0x9c, 0xec, + 0x9c, 0xf0, 0x9d, 0x09, 0x9d, 0x08, 0x9c, 0xeb, 0x9d, 0x03, 0x9d, 0x06, + 0x9d, 0x2a, 0x9d, 0x26, 0x9d, 0xaf, 0x9d, 0x23, 0x9d, 0x1f, 0x9d, 0x44, + 0x9d, 0x15, 0x9d, 0x12, 0x9d, 0x41, 0x9d, 0x3f, 0x9d, 0x3e, 0x9d, 0x46, + 0x9d, 0x48, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x9d, 0x5d, 0x9d, 0x5e, 0x9d, 0x64, 0x9d, 0x51, + 0x9d, 0x50, 0x9d, 0x59, 0x9d, 0x72, 0x9d, 0x89, 0x9d, 0x87, 0x9d, 0xab, + 0x9d, 0x6f, 0x9d, 0x7a, 0x9d, 0x9a, 0x9d, 0xa4, 0x9d, 0xa9, 0x9d, 0xb2, + 0x9d, 0xc4, 0x9d, 0xc1, 0x9d, 0xbb, 0x9d, 0xb8, 0x9d, 0xba, 0x9d, 0xc6, + 0x9d, 0xcf, 0x9d, 0xc2, 0x9d, 0xd9, 0x9d, 0xd3, 0x9d, 0xf8, 0x9d, 0xe6, + 0x9d, 0xed, 0x9d, 0xef, 0x9d, 0xfd, 0x9e, 0x1a, 0x9e, 0x1b, 0x9e, 0x1e, + 0x9e, 0x75, 0x9e, 0x79, 0x9e, 0x7d, 0x9e, 0x81, 0x9e, 0x88, 0x9e, 0x8b, + 0x9e, 0x8c, 0x9e, 0x92, 0x9e, 0x95, 0x9e, 0x91, 0x9e, 0x9d, 0x9e, 0xa5, + 0x9e, 0xa9, 0x9e, 0xb8, 0x9e, 0xaa, 0x9e, 0xad, 0x97, 0x61, 0x9e, 0xcc, + 0x9e, 0xce, 0x9e, 0xcf, 0x9e, 0xd0, 0x9e, 0xd4, 0x9e, 0xdc, 0x9e, 0xde, + 0x9e, 0xdd, 0x9e, 0xe0, 0x9e, 0xe5, 0x9e, 0xe8, 0x9e, 0xef, 0x00, 0x20, + 0x9e, 0xf4, 0x9e, 0xf6, 0x9e, 0xf7, 0x9e, 0xf9, 0x9e, 0xfb, 0x9e, 0xfc, + 0x9e, 0xfd, 0x9f, 0x07, 0x9f, 0x08, 0x76, 0xb7, 0x9f, 0x15, 0x9f, 0x21, + 0x9f, 0x2c, 0x9f, 0x3e, 0x9f, 0x4a, 0x9f, 0x52, 0x9f, 0x54, 0x9f, 0x63, + 0x9f, 0x5f, 0x9f, 0x60, 0x9f, 0x61, 0x9f, 0x66, 0x9f, 0x67, 0x9f, 0x6c, + 0x9f, 0x6a, 0x9f, 0x77, 0x9f, 0x72, 0x9f, 0x76, 0x9f, 0x95, 0x9f, 0x9c, + 0x9f, 0xa0, 0x58, 0x2f, 0x69, 0xc7, 0x90, 0x59, 0x74, 0x64, 0x51, 0xdc, + 0x71, 0x99, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, +}; +} // namespace bms_parser diff --git a/src/TimeLine.cpp b/src/TimeLine.cpp index fc2484a..5c5c592 100644 --- a/src/TimeLine.cpp +++ b/src/TimeLine.cpp @@ -1,102 +1,85 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "TimeLine.h" -namespace bms_parser -{ - TimeLine::TimeLine(int lanes, bool metaOnly) - { - if (metaOnly) - { - return; - } - Notes.resize(lanes, nullptr); - InvisibleNotes.resize(lanes, nullptr); - LandmineNotes.resize(lanes, nullptr); - } +namespace bms_parser { +TimeLine::TimeLine(int lanes, bool metaOnly) { + if (metaOnly) { + return; + } + Notes.resize(lanes, nullptr); + InvisibleNotes.resize(lanes, nullptr); + LandmineNotes.resize(lanes, nullptr); +} - TimeLine *TimeLine::SetNote(int lane, Note *note) - { - Notes[lane] = note; - note->Lane = lane; - note->Timeline = this; - return this; - } +TimeLine *TimeLine::SetNote(int lane, Note *note) { + Notes[lane] = note; + note->Lane = lane; + note->Timeline = this; + return this; +} - TimeLine *TimeLine::SetInvisibleNote(int lane, Note *note) - { - InvisibleNotes[lane] = note; - note->Lane = lane; - note->Timeline = this; - return this; - } +TimeLine *TimeLine::SetInvisibleNote(int lane, Note *note) { + InvisibleNotes[lane] = note; + note->Lane = lane; + note->Timeline = this; + return this; +} - TimeLine *TimeLine::SetLandmineNote(int lane, LandmineNote *note) - { - LandmineNotes[lane] = note; - note->Lane = lane; - note->Timeline = this; - return this; - } +TimeLine *TimeLine::SetLandmineNote(int lane, LandmineNote *note) { + LandmineNotes[lane] = note; + note->Lane = lane; + note->Timeline = this; + return this; +} - TimeLine *TimeLine::AddBackgroundNote(Note *note) - { - BackgroundNotes.push_back(note); - note->Timeline = this; - return this; - } +TimeLine *TimeLine::AddBackgroundNote(Note *note) { + BackgroundNotes.push_back(note); + note->Timeline = this; + return this; +} - double TimeLine::GetStopDuration() - { - return 1250000.0 * StopLength / Bpm; // 1250000 = 240 * 1000 * 1000 / 192 - } +double TimeLine::GetStopDuration() { + return 1250000.0 * StopLength / Bpm; // 1250000 = 240 * 1000 * 1000 / 192 +} - TimeLine::~TimeLine() - { - for (const auto ¬e : Notes) - { - if (note != nullptr) - { - delete note; - } - } - Notes.clear(); - for (const auto ¬e : InvisibleNotes) - { - if (note != nullptr) - { - delete note; - } - } - InvisibleNotes.clear(); - for (const auto ¬e : LandmineNotes) - { - if (note != nullptr) - { - delete note; - } - } - LandmineNotes.clear(); - for (const auto ¬e : BackgroundNotes) - { - if (note != nullptr) - { - delete note; - } - } - BackgroundNotes.clear(); - } +TimeLine::~TimeLine() { + for (const auto ¬e : Notes) { + if (note != nullptr) { + delete note; + } + } + Notes.clear(); + for (const auto ¬e : InvisibleNotes) { + if (note != nullptr) { + delete note; + } + } + InvisibleNotes.clear(); + for (const auto ¬e : LandmineNotes) { + if (note != nullptr) { + delete note; + } + } + LandmineNotes.clear(); + for (const auto ¬e : BackgroundNotes) { + if (note != nullptr) { + delete note; + } + } + BackgroundNotes.clear(); } +} // namespace bms_parser diff --git a/src/TimeLine.h b/src/TimeLine.h index 5a01c1e..eb60df0 100644 --- a/src/TimeLine.h +++ b/src/TimeLine.h @@ -1,61 +1,60 @@ -/* +/* * Copyright (C) 2024 VioletXF, khoeun03 * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * 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. - * + * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once -#include "Note.h" #include "LandmineNote.h" +#include "Note.h" #include + /** * */ -namespace bms_parser -{ - class TimeLine - { - public: - std::vector BackgroundNotes; - std::vector InvisibleNotes; - std::vector Notes; - std::vector LandmineNotes; - double Bpm = 0; - bool BpmChange = false; - bool BpmChangeApplied = false; - int BgaBase = -1; - int BgaLayer = -1; - int BgaPoor = -1; +namespace bms_parser { +class TimeLine { +public: + std::vector BackgroundNotes; + std::vector InvisibleNotes; + std::vector Notes; + std::vector LandmineNotes; + double Bpm = 0; + bool BpmChange = false; + bool BpmChangeApplied = false; + int BgaBase = -1; + int BgaLayer = -1; + int BgaPoor = -1; - double StopLength = 0; - double Scroll = 1; + double StopLength = 0; + double Scroll = 1; - long long Timing = 0; - double Pos = 0; + long long Timing = 0; + double Pos = 0; - explicit TimeLine(int lanes, bool metaOnly); + explicit TimeLine(int lanes, bool metaOnly); - TimeLine *SetNote(int lane, Note *note); + TimeLine *SetNote(int lane, Note *note); - TimeLine *SetInvisibleNote(int lane, Note *note); + TimeLine *SetInvisibleNote(int lane, Note *note); - TimeLine *SetLandmineNote(int lane, LandmineNote *note); + TimeLine *SetLandmineNote(int lane, LandmineNote *note); - TimeLine *AddBackgroundNote(Note *note); + TimeLine *AddBackgroundNote(Note *note); - double GetStopDuration(); + double GetStopDuration(); - ~TimeLine(); - }; -} + ~TimeLine(); +}; +} // namespace bms_parser diff --git a/src/md5.cpp b/src/md5.cpp index f7aa008..77be53f 100644 --- a/src/md5.cpp +++ b/src/md5.cpp @@ -55,319 +55,292 @@ documentation and/or software. #define S44 21 /////////////////////////////////////////////// -namespace bms_parser -{ - // F, G, H and I are basic MD5 functions. - inline MD5::uint4 MD5::F(uint4 x, uint4 y, uint4 z) - { - return (x & y) | (~x & z); - } - - inline MD5::uint4 MD5::G(uint4 x, uint4 y, uint4 z) - { - return (x & z) | (y & ~z); - } +namespace bms_parser { +// F, G, H and I are basic MD5 functions. +inline MD5::uint4 MD5::F(uint4 x, uint4 y, uint4 z) { + return (x & y) | (~x & z); +} - inline MD5::uint4 MD5::H(uint4 x, uint4 y, uint4 z) - { - return x ^ y ^ z; - } +inline MD5::uint4 MD5::G(uint4 x, uint4 y, uint4 z) { + return (x & z) | (y & ~z); +} - inline MD5::uint4 MD5::I(uint4 x, uint4 y, uint4 z) - { - return y ^ (x | ~z); - } +inline MD5::uint4 MD5::H(uint4 x, uint4 y, uint4 z) { return x ^ y ^ z; } - // rotate_left rotates x left n bits. - inline MD5::uint4 MD5::rotate_left(uint4 x, int n) - { - return (x << n) | (x >> (32 - n)); - } +inline MD5::uint4 MD5::I(uint4 x, uint4 y, uint4 z) { return y ^ (x | ~z); } - // FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. - // Rotation is separate from addition to prevent recomputation. - inline void MD5::FF(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) - { - a = rotate_left(a + F(b, c, d) + x + ac, s) + b; - } +// rotate_left rotates x left n bits. +inline MD5::uint4 MD5::rotate_left(uint4 x, int n) { + return (x << n) | (x >> (32 - n)); +} - inline void MD5::GG(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) - { - a = rotate_left(a + G(b, c, d) + x + ac, s) + b; - } +// FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. +// Rotation is separate from addition to prevent recomputation. +inline void MD5::FF(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, + uint4 ac) { + a = rotate_left(a + F(b, c, d) + x + ac, s) + b; +} - inline void MD5::HH(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) - { - a = rotate_left(a + H(b, c, d) + x + ac, s) + b; - } +inline void MD5::GG(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, + uint4 ac) { + a = rotate_left(a + G(b, c, d) + x + ac, s) + b; +} - inline void MD5::II(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac) - { - a = rotate_left(a + I(b, c, d) + x + ac, s) + b; - } +inline void MD5::HH(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, + uint4 ac) { + a = rotate_left(a + H(b, c, d) + x + ac, s) + b; +} - ////////////////////////////////////////////// +inline void MD5::II(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, + uint4 ac) { + a = rotate_left(a + I(b, c, d) + x + ac, s) + b; +} - // default ctor, just initailize - MD5::MD5() - { - init(); - } +////////////////////////////////////////////// - ////////////////////////////////////////////// +// default ctor, just initailize +MD5::MD5() { init(); } - // nifty shortcut ctor, compute MD5 for string and finalize it right away - MD5::MD5(const std::string &text) - { - init(); - update(text.c_str(), text.length()); - finalize(); - } +////////////////////////////////////////////// - ////////////////////////////// +// nifty shortcut ctor, compute MD5 for string and finalize it right away +MD5::MD5(const std::string &text) { + init(); + update(text.c_str(), text.length()); + finalize(); +} - void MD5::init() - { - finalized = false; +////////////////////////////// - count[0] = 0; - count[1] = 0; +void MD5::init() { + finalized = false; - // load magic initialization constants. - state[0] = 0x67452301; - state[1] = 0xefcdab89; - state[2] = 0x98badcfe; - state[3] = 0x10325476; - } + count[0] = 0; + count[1] = 0; - ////////////////////////////// + // load magic initialization constants. + state[0] = 0x67452301; + state[1] = 0xefcdab89; + state[2] = 0x98badcfe; + state[3] = 0x10325476; +} - // decodes input (unsigned char) into output (uint4). Assumes len is a multiple of 4. - void MD5::decode(uint4 output[], const uint1 input[], size_type len) - { - for (unsigned int i = 0, j = 0; j < len; i++, j += 4) - output[i] = ((uint4)input[j]) | (((uint4)input[j + 1]) << 8) | - (((uint4)input[j + 2]) << 16) | (((uint4)input[j + 3]) << 24); - } +////////////////////////////// - ////////////////////////////// - - // encodes input (uint4) into output (unsigned char). Assumes len is - // a multiple of 4. - void MD5::encode(uint1 output[], const uint4 input[], size_type len) - { - for (size_type i = 0, j = 0; j < len; i++, j += 4) - { - output[j] = input[i] & 0xff; - output[j + 1] = (input[i] >> 8) & 0xff; - output[j + 2] = (input[i] >> 16) & 0xff; - output[j + 3] = (input[i] >> 24) & 0xff; - } - } +// decodes input (unsigned char) into output (uint4). Assumes len is a multiple +// of 4. +void MD5::decode(uint4 output[], const uint1 input[], size_type len) { + for (unsigned int i = 0, j = 0; j < len; i++, j += 4) + output[i] = ((uint4)input[j]) | (((uint4)input[j + 1]) << 8) | + (((uint4)input[j + 2]) << 16) | (((uint4)input[j + 3]) << 24); +} - ////////////////////////////// - - // apply MD5 algo on a block - void MD5::transform(const uint1 block[blocksize]) - { - uint4 a = state[0], b = state[1], c = state[2], d = state[3], x[16]; - decode(x, block, blocksize); - - /* Round 1 */ - FF(a, b, c, d, x[0], S11, 0xd76aa478); /* 1 */ - FF(d, a, b, c, x[1], S12, 0xe8c7b756); /* 2 */ - FF(c, d, a, b, x[2], S13, 0x242070db); /* 3 */ - FF(b, c, d, a, x[3], S14, 0xc1bdceee); /* 4 */ - FF(a, b, c, d, x[4], S11, 0xf57c0faf); /* 5 */ - FF(d, a, b, c, x[5], S12, 0x4787c62a); /* 6 */ - FF(c, d, a, b, x[6], S13, 0xa8304613); /* 7 */ - FF(b, c, d, a, x[7], S14, 0xfd469501); /* 8 */ - FF(a, b, c, d, x[8], S11, 0x698098d8); /* 9 */ - FF(d, a, b, c, x[9], S12, 0x8b44f7af); /* 10 */ - FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ - FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ - FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ - FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ - FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ - FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ - - /* Round 2 */ - GG(a, b, c, d, x[1], S21, 0xf61e2562); /* 17 */ - GG(d, a, b, c, x[6], S22, 0xc040b340); /* 18 */ - GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ - GG(b, c, d, a, x[0], S24, 0xe9b6c7aa); /* 20 */ - GG(a, b, c, d, x[5], S21, 0xd62f105d); /* 21 */ - GG(d, a, b, c, x[10], S22, 0x2441453); /* 22 */ - GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ - GG(b, c, d, a, x[4], S24, 0xe7d3fbc8); /* 24 */ - GG(a, b, c, d, x[9], S21, 0x21e1cde6); /* 25 */ - GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ - GG(c, d, a, b, x[3], S23, 0xf4d50d87); /* 27 */ - GG(b, c, d, a, x[8], S24, 0x455a14ed); /* 28 */ - GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ - GG(d, a, b, c, x[2], S22, 0xfcefa3f8); /* 30 */ - GG(c, d, a, b, x[7], S23, 0x676f02d9); /* 31 */ - GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ - - /* Round 3 */ - HH(a, b, c, d, x[5], S31, 0xfffa3942); /* 33 */ - HH(d, a, b, c, x[8], S32, 0x8771f681); /* 34 */ - HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ - HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ - HH(a, b, c, d, x[1], S31, 0xa4beea44); /* 37 */ - HH(d, a, b, c, x[4], S32, 0x4bdecfa9); /* 38 */ - HH(c, d, a, b, x[7], S33, 0xf6bb4b60); /* 39 */ - HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ - HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ - HH(d, a, b, c, x[0], S32, 0xeaa127fa); /* 42 */ - HH(c, d, a, b, x[3], S33, 0xd4ef3085); /* 43 */ - HH(b, c, d, a, x[6], S34, 0x4881d05); /* 44 */ - HH(a, b, c, d, x[9], S31, 0xd9d4d039); /* 45 */ - HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ - HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ - HH(b, c, d, a, x[2], S34, 0xc4ac5665); /* 48 */ - - /* Round 4 */ - II(a, b, c, d, x[0], S41, 0xf4292244); /* 49 */ - II(d, a, b, c, x[7], S42, 0x432aff97); /* 50 */ - II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ - II(b, c, d, a, x[5], S44, 0xfc93a039); /* 52 */ - II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ - II(d, a, b, c, x[3], S42, 0x8f0ccc92); /* 54 */ - II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ - II(b, c, d, a, x[1], S44, 0x85845dd1); /* 56 */ - II(a, b, c, d, x[8], S41, 0x6fa87e4f); /* 57 */ - II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ - II(c, d, a, b, x[6], S43, 0xa3014314); /* 59 */ - II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ - II(a, b, c, d, x[4], S41, 0xf7537e82); /* 61 */ - II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ - II(c, d, a, b, x[2], S43, 0x2ad7d2bb); /* 63 */ - II(b, c, d, a, x[9], S44, 0xeb86d391); /* 64 */ - - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; +////////////////////////////// - // Zeroize sensitive information. - memset(x, 0, sizeof x); +// encodes input (uint4) into output (unsigned char). Assumes len is +// a multiple of 4. +void MD5::encode(uint1 output[], const uint4 input[], size_type len) { + for (size_type i = 0, j = 0; j < len; i++, j += 4) { + output[j] = input[i] & 0xff; + output[j + 1] = (input[i] >> 8) & 0xff; + output[j + 2] = (input[i] >> 16) & 0xff; + output[j + 3] = (input[i] >> 24) & 0xff; } +} - ////////////////////////////// +////////////////////////////// + +// apply MD5 algo on a block +void MD5::transform(const uint1 block[blocksize]) { + uint4 a = state[0], b = state[1], c = state[2], d = state[3], x[16]; + decode(x, block, blocksize); + + /* Round 1 */ + FF(a, b, c, d, x[0], S11, 0xd76aa478); /* 1 */ + FF(d, a, b, c, x[1], S12, 0xe8c7b756); /* 2 */ + FF(c, d, a, b, x[2], S13, 0x242070db); /* 3 */ + FF(b, c, d, a, x[3], S14, 0xc1bdceee); /* 4 */ + FF(a, b, c, d, x[4], S11, 0xf57c0faf); /* 5 */ + FF(d, a, b, c, x[5], S12, 0x4787c62a); /* 6 */ + FF(c, d, a, b, x[6], S13, 0xa8304613); /* 7 */ + FF(b, c, d, a, x[7], S14, 0xfd469501); /* 8 */ + FF(a, b, c, d, x[8], S11, 0x698098d8); /* 9 */ + FF(d, a, b, c, x[9], S12, 0x8b44f7af); /* 10 */ + FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ + FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ + FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ + FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ + FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ + FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ + + /* Round 2 */ + GG(a, b, c, d, x[1], S21, 0xf61e2562); /* 17 */ + GG(d, a, b, c, x[6], S22, 0xc040b340); /* 18 */ + GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ + GG(b, c, d, a, x[0], S24, 0xe9b6c7aa); /* 20 */ + GG(a, b, c, d, x[5], S21, 0xd62f105d); /* 21 */ + GG(d, a, b, c, x[10], S22, 0x2441453); /* 22 */ + GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ + GG(b, c, d, a, x[4], S24, 0xe7d3fbc8); /* 24 */ + GG(a, b, c, d, x[9], S21, 0x21e1cde6); /* 25 */ + GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ + GG(c, d, a, b, x[3], S23, 0xf4d50d87); /* 27 */ + GG(b, c, d, a, x[8], S24, 0x455a14ed); /* 28 */ + GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ + GG(d, a, b, c, x[2], S22, 0xfcefa3f8); /* 30 */ + GG(c, d, a, b, x[7], S23, 0x676f02d9); /* 31 */ + GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ + + /* Round 3 */ + HH(a, b, c, d, x[5], S31, 0xfffa3942); /* 33 */ + HH(d, a, b, c, x[8], S32, 0x8771f681); /* 34 */ + HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ + HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ + HH(a, b, c, d, x[1], S31, 0xa4beea44); /* 37 */ + HH(d, a, b, c, x[4], S32, 0x4bdecfa9); /* 38 */ + HH(c, d, a, b, x[7], S33, 0xf6bb4b60); /* 39 */ + HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ + HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ + HH(d, a, b, c, x[0], S32, 0xeaa127fa); /* 42 */ + HH(c, d, a, b, x[3], S33, 0xd4ef3085); /* 43 */ + HH(b, c, d, a, x[6], S34, 0x4881d05); /* 44 */ + HH(a, b, c, d, x[9], S31, 0xd9d4d039); /* 45 */ + HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ + HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ + HH(b, c, d, a, x[2], S34, 0xc4ac5665); /* 48 */ + + /* Round 4 */ + II(a, b, c, d, x[0], S41, 0xf4292244); /* 49 */ + II(d, a, b, c, x[7], S42, 0x432aff97); /* 50 */ + II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ + II(b, c, d, a, x[5], S44, 0xfc93a039); /* 52 */ + II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ + II(d, a, b, c, x[3], S42, 0x8f0ccc92); /* 54 */ + II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ + II(b, c, d, a, x[1], S44, 0x85845dd1); /* 56 */ + II(a, b, c, d, x[8], S41, 0x6fa87e4f); /* 57 */ + II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ + II(c, d, a, b, x[6], S43, 0xa3014314); /* 59 */ + II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ + II(a, b, c, d, x[4], S41, 0xf7537e82); /* 61 */ + II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ + II(c, d, a, b, x[2], S43, 0x2ad7d2bb); /* 63 */ + II(b, c, d, a, x[9], S44, 0xeb86d391); /* 64 */ + + state[0] += a; + state[1] += b; + state[2] += c; + state[3] += d; + + // Zeroize sensitive information. + memset(x, 0, sizeof x); +} - // MD5 block update operation. Continues an MD5 message-digest - // operation, processing another message block - void MD5::update(const unsigned char input[], size_type length) - { - // compute number of bytes mod 64 - size_type index = count[0] / 8 % blocksize; +////////////////////////////// - // Update number of bits - if ((count[0] += (length << 3)) < (length << 3)) - count[1]++; - count[1] += (length >> 29); +// MD5 block update operation. Continues an MD5 message-digest +// operation, processing another message block +void MD5::update(const unsigned char input[], size_type length) { + // compute number of bytes mod 64 + size_type index = count[0] / 8 % blocksize; - // number of bytes we need to fill in buffer - size_type firstpart = 64 - index; + // Update number of bits + if ((count[0] += (length << 3)) < (length << 3)) + count[1]++; + count[1] += (length >> 29); - size_type i; + // number of bytes we need to fill in buffer + size_type firstpart = 64 - index; - // transform as many times as possible. - if (length >= firstpart) - { - // fill buffer first, transform - memcpy(&buffer[index], input, firstpart); - transform(buffer); + size_type i; - // transform chunks of blocksize (64 bytes) - for (i = firstpart; i + blocksize <= length; i += blocksize) - transform(&input[i]); + // transform as many times as possible. + if (length >= firstpart) { + // fill buffer first, transform + memcpy(&buffer[index], input, firstpart); + transform(buffer); - index = 0; - } - else - i = 0; + // transform chunks of blocksize (64 bytes) + for (i = firstpart; i + blocksize <= length; i += blocksize) + transform(&input[i]); - // buffer remaining input - memcpy(&buffer[index], &input[i], length - i); - } + index = 0; + } else + i = 0; - ////////////////////////////// + // buffer remaining input + memcpy(&buffer[index], &input[i], length - i); +} - // for convenience provide a verson with signed char - void MD5::update(const char input[], size_type length) - { - update((const unsigned char *)input, length); - } +////////////////////////////// - ////////////////////////////// +// for convenience provide a verson with signed char +void MD5::update(const char input[], size_type length) { + update((const unsigned char *)input, length); +} - // MD5 finalization. Ends an MD5 message-digest operation, writing the - // the message digest and zeroizing the context. - MD5 &MD5::finalize() - { - static unsigned char padding[64] = { - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +////////////////////////////// - if (!finalized) - { - // Save number of bits - unsigned char bits[8]; - encode(bits, count, 8); +// MD5 finalization. Ends an MD5 message-digest operation, writing the +// the message digest and zeroizing the context. +MD5 &MD5::finalize() { + static unsigned char padding[64] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - // pad out to 56 mod 64. - size_type index = count[0] / 8 % 64; - size_type padLen = (index < 56) ? (56 - index) : (120 - index); - update(padding, padLen); + if (!finalized) { + // Save number of bits + unsigned char bits[8]; + encode(bits, count, 8); - // Append length (before padding) - update(bits, 8); + // pad out to 56 mod 64. + size_type index = count[0] / 8 % 64; + size_type padLen = (index < 56) ? (56 - index) : (120 - index); + update(padding, padLen); - // Store state in digest - encode(digest, state, 16); + // Append length (before padding) + update(bits, 8); - // Zeroize sensitive information. - memset(buffer, 0, sizeof buffer); - memset(count, 0, sizeof count); + // Store state in digest + encode(digest, state, 16); - finalized = true; - } + // Zeroize sensitive information. + memset(buffer, 0, sizeof buffer); + memset(count, 0, sizeof count); - return *this; + finalized = true; } - ////////////////////////////// + return *this; +} - // return hex representation of digest as string - std::string MD5::hexdigest() const - { - if (!finalized) - return ""; +////////////////////////////// - char buf[33]; - for (int i = 0; i < 16; i++) - snprintf(buf + i * 2,3, "%02x", digest[i]); - buf[32] = 0; +// return hex representation of digest as string +std::string MD5::hexdigest() const { + if (!finalized) + return ""; - return buf; - } + char buf[33]; + for (int i = 0; i < 16; i++) + snprintf(buf + i * 2, 3, "%02x", digest[i]); + buf[32] = 0; - ////////////////////////////// + return buf; +} - std::ostream &operator<<(std::ostream &out, MD5 md5) - { - return out << md5.hexdigest(); - } +////////////////////////////// - ////////////////////////////// +std::ostream &operator<<(std::ostream &out, MD5 md5) { + return out << md5.hexdigest(); +} - std::string md5(const std::string str) - { - MD5 md5 = MD5(str); +////////////////////////////// - return md5.hexdigest(); - } +std::string md5(const std::string str) { + MD5 md5 = MD5(str); + + return md5.hexdigest(); } +} // namespace bms_parser diff --git a/src/md5.h b/src/md5.h index 8ce7eab..813e5c7 100644 --- a/src/md5.h +++ b/src/md5.h @@ -47,52 +47,51 @@ documentation and/or software. // // assumes that char is 8 bit and int is 32 bit -namespace bms_parser -{ - class MD5 - { - public: - typedef unsigned int size_type; // must be 32bit - - MD5(); - MD5(const std::string &text); - void update(const unsigned char *buf, size_type length); - void update(const char *buf, size_type length); - MD5 &finalize(); - std::string hexdigest() const; - friend std::ostream &operator<<(std::ostream &, MD5 md5); - - private: - void init(); - typedef unsigned char uint1; // 8bit - typedef unsigned int uint4; // 32bit - enum - { - blocksize = 64 - }; // VC6 won't eat a const static int here - - void transform(const uint1 block[blocksize]); - static void decode(uint4 output[], const uint1 input[], size_type len); - static void encode(uint1 output[], const uint4 input[], size_type len); - - bool finalized; - uint1 buffer[blocksize]; // bytes that didn't fit in last 64 byte chunk - uint4 count[2]; // 64bit counter for number of bits (lo, hi) - uint4 state[4]; // digest so far - uint1 digest[16]; // the result - - // low level logic operations - static inline uint4 F(uint4 x, uint4 y, uint4 z); - static inline uint4 G(uint4 x, uint4 y, uint4 z); - static inline uint4 H(uint4 x, uint4 y, uint4 z); - static inline uint4 I(uint4 x, uint4 y, uint4 z); - static inline uint4 rotate_left(uint4 x, int n); - static inline void FF(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); - static inline void GG(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); - static inline void HH(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); - static inline void II(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, uint4 ac); - }; - - std::string md5(const std::string str); -} +namespace bms_parser { +class MD5 { +public: + typedef unsigned int size_type; // must be 32bit + + MD5(); + MD5(const std::string &text); + void update(const unsigned char *buf, size_type length); + void update(const char *buf, size_type length); + MD5 &finalize(); + std::string hexdigest() const; + friend std::ostream &operator<<(std::ostream &, MD5 md5); + +private: + void init(); + typedef unsigned char uint1; // 8bit + typedef unsigned int uint4; // 32bit + enum { blocksize = 64 }; // VC6 won't eat a const static int here + + void transform(const uint1 block[blocksize]); + static void decode(uint4 output[], const uint1 input[], size_type len); + static void encode(uint1 output[], const uint4 input[], size_type len); + + bool finalized; + uint1 buffer[blocksize]; // bytes that didn't fit in last 64 byte chunk + uint4 count[2]; // 64bit counter for number of bits (lo, hi) + uint4 state[4]; // digest so far + uint1 digest[16]; // the result + + // low level logic operations + static inline uint4 F(uint4 x, uint4 y, uint4 z); + static inline uint4 G(uint4 x, uint4 y, uint4 z); + static inline uint4 H(uint4 x, uint4 y, uint4 z); + static inline uint4 I(uint4 x, uint4 y, uint4 z); + static inline uint4 rotate_left(uint4 x, int n); + static inline void FF(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, + uint4 ac); + static inline void GG(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, + uint4 ac); + static inline void HH(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, + uint4 ac); + static inline void II(uint4 &a, uint4 b, uint4 c, uint4 d, uint4 x, uint4 s, + uint4 ac); +}; + +std::string md5(const std::string str); +} // namespace bms_parser #endif diff --git a/test/main.cpp b/test/main.cpp index 7acbd34..49e6396 100644 --- a/test/main.cpp +++ b/test/main.cpp @@ -1,191 +1,140 @@ -#include -#include #include +#include #include #include +#include + #if WITH_AMALGAMATION #include "bms_parser.hpp" #else -#include "../src/Parser.h" #include "../src/Chart.h" +#include "../src/Parser.h" + #endif -#define ASSERT_EQ(a, b, desc) \ - if (a != b) \ - { \ - std::cerr << desc << std::endl; \ - std::cerr << "\tExpected: " << a << std::endl; \ - std::cerr << "\tActual: " << b << std::endl; \ - return 1; \ - } else { \ - std::cout << "\t" << desc << " passed" << std::endl; \ - } -#define ASSERT_EQW(a, b, desc) \ - if (a != b) \ - { \ - std::cerr << desc; \ - std::wcerr << "\tExpected: " << a << std::endl; \ - std::wcerr << "\tActual: " << b << std::endl; \ - return 1; \ - } else { \ - std::cout << "\t" << desc << " passed" << std::endl; \ - } -std::string ws2s(const std::wstring &wstr) -{ +#define ASSERT_EQ(a, b, desc) \ + if (a != b) { \ + std::cerr << desc << std::endl; \ + std::cerr << "\tExpected: " << a << std::endl; \ + std::cerr << "\tActual: " << b << std::endl; \ + return 1; \ + } else { \ + std::cout << "\t" << desc << " passed" << std::endl; \ + } +#define ASSERT_EQW(a, b, desc) \ + if (a != b) { \ + std::cerr << desc; \ + std::wcerr << "\tExpected: " << a << std::endl; \ + std::wcerr << "\tActual: " << b << std::endl; \ + return 1; \ + } else { \ + std::cout << "\t" << desc << " passed" << std::endl; \ + } +std::string ws2s(const std::wstring &wstr) { return std::string().assign(wstr.begin(), wstr.end()); } -int main() -{ - // read inputs from ./testcases/*.bme - std::vector inputs; - for (auto &p : std::filesystem::directory_iterator("./testcases")) - { - if (p.path().extension() == ".bme") - { - inputs.push_back(p.path()); - } +int main() { + // read inputs from ./testcases/*.bme + std::vector inputs; + for (auto &p : std::filesystem::directory_iterator("./testcases")) { + if (p.path().extension() == ".bme") { + inputs.push_back(p.path()); } + } - for (auto &input : inputs) - { - std::filesystem::path output_path = input; - output_path.replace_extension(".output"); - if (std::filesystem::exists(output_path)) - { - std::cout << "Testing " << input << "..." << std::endl; - bms_parser::Chart *chart; - std::atomic_bool cancel = false; - bms_parser::Parser parser; - parser.Parse(input, &chart, false, false, cancel); - std::ifstream ifs(output_path); - std::string line; - while (std::getline(ifs, line)) - { - if (line.rfind("md5: ", 0) == 0) - { - auto out = line.substr(5); - ASSERT_EQ(out, chart->Meta.MD5, "md5: "); - } - else if (line.rfind("sha256: ", 0) == 0) - { - auto out = line.substr(8); - ASSERT_EQ(out, chart->Meta.SHA256, "sha256: "); - } - else if (line.rfind("title: ", 0) == 0) - { - auto out = line.substr(7); - ASSERT_EQ(out, chart->Meta.Title, "title: "); - } - else if (line.rfind("artist: ", 0) == 0) - { - auto out = line.substr(8); - ASSERT_EQ(out, chart->Meta.Artist, "artist: "); - } - else if (line.rfind("genre: ", 0) == 0) - { - auto out = line.substr(7); - ASSERT_EQ(out, chart->Meta.Genre, "genre: "); - } - else if (line.rfind("subartist: ", 0) == 0) - { - auto out = line.substr(11); - ASSERT_EQ(out, chart->Meta.SubArtist, "subartist: "); - } - else if (line.rfind("total: ", 0) == 0) - { - auto out = std::stod(line.substr(7)); - ASSERT_EQ(out, chart->Meta.Total, "total: "); - } - else if (line.rfind("total_notes: ", 0) == 0) - { - auto out = std::stoi(line.substr(13)); - ASSERT_EQ(out, chart->Meta.TotalNotes, "total_notes: "); - } - else if (line.rfind("total_backspin_notes: ", 0) == 0) - { - auto out = std::stoi(line.substr(22)); - ASSERT_EQ(out, chart->Meta.TotalBackSpinNotes, "total_backspin_notes: "); - } - else if (line.rfind("total_long_notes: ", 0) == 0) - { - auto out = std::stoi(line.substr(18)); - ASSERT_EQ(out, chart->Meta.TotalLongNotes, "total_long_notes: "); - } - else if (line.rfind("total_scratch_notes: ", 0) == 0) - { - auto out = std::stoi(line.substr(21)); - ASSERT_EQ(out, chart->Meta.TotalScratchNotes, "total_scratch_notes: "); - } - else if (line.rfind("total_landmine_notes: ", 0) == 0) - { - auto out = std::stoi(line.substr(22)); - ASSERT_EQ(out, chart->Meta.TotalLandmineNotes, "total_landmine_notes: "); - } - else if (line.rfind("min_bpm: ", 0) == 0) - { - auto out = std::stod(line.substr(9)); - ASSERT_EQ(out, chart->Meta.MinBpm, "min_bpm: "); - } - else if (line.rfind("max_bpm: ", 0) == 0) - { - auto out = std::stod(line.substr(9)); - ASSERT_EQ(out, chart->Meta.MaxBpm, "max_bpm: "); - } - else if (line.rfind("bpm: ", 0) == 0) - { - auto out = std::stod(line.substr(5)); - ASSERT_EQ(out, chart->Meta.Bpm, "bpm: "); - } - else if (line.rfind("minbpm: ", 0) == 0) - { - auto out = std::stod(line.substr(8)); - ASSERT_EQ(out, chart->Meta.MinBpm, "minbpm: "); - } - else if (line.rfind("maxbpm: ", 0) == 0) - { - auto out = std::stod(line.substr(8)); - ASSERT_EQ(out, chart->Meta.MaxBpm, "maxbpm: "); - } - else if (line.rfind("is_dp: ", 0) == 0) - { - auto out = line.substr(7) == "true"; - ASSERT_EQ(out, chart->Meta.IsDP, "is_dp: "); - } - else if (line.rfind("key_mode: ", 0) == 0) - { - auto out = std::stoi(line.substr(10)); - ASSERT_EQ(out, chart->Meta.KeyMode, "key_mode: "); - } - else if (line.rfind("difficulty: ", 0) == 0) - { - auto out = std::stoi(line.substr(12)); - ASSERT_EQ(out, chart->Meta.Difficulty, "difficulty: "); - } - else if (line.rfind("playlevel: ", 0) == 0) - { - auto out = std::stoi(line.substr(11)); - ASSERT_EQ(out, chart->Meta.PlayLevel, "playlevel: "); - } - else if (line.rfind("player: ", 0) == 0) - { - auto out = std::stoi(line.substr(8)); - ASSERT_EQ(out, chart->Meta.Player, "player: "); - } - else if (line.rfind("rank: ", 0) == 0) - { - auto out = std::stoi(line.substr(6)); - ASSERT_EQ(out, chart->Meta.Rank, "rank: "); - } - else if (line.rfind("playlength: ", 0) == 0) - { - auto out = std::stoi(line.substr(11)); - ASSERT_EQ(out, chart->Meta.PlayLength, "playlength: "); - } - } - delete chart; - std::cout << "\tPass" << std::endl; + for (auto &input : inputs) { + std::filesystem::path output_path = input; + output_path.replace_extension(".output"); + if (std::filesystem::exists(output_path)) { + std::cout << "Testing " << input << "..." << std::endl; + bms_parser::Chart *chart; + std::atomic_bool cancel = false; + bms_parser::Parser parser; + parser.Parse(input.wstring(), &chart, false, false, cancel); + std::ifstream ifs(output_path); + std::string line; + while (std::getline(ifs, line)) { + if (line.rfind("md5: ", 0) == 0) { + auto out = line.substr(5); + ASSERT_EQ(out, chart->Meta.MD5, "md5: "); + } else if (line.rfind("sha256: ", 0) == 0) { + auto out = line.substr(8); + ASSERT_EQ(out, chart->Meta.SHA256, "sha256: "); + } else if (line.rfind("title: ", 0) == 0) { + auto out = line.substr(7); + ASSERT_EQ(out, chart->Meta.Title, "title: "); + } else if (line.rfind("artist: ", 0) == 0) { + auto out = line.substr(8); + ASSERT_EQ(out, chart->Meta.Artist, "artist: "); + } else if (line.rfind("genre: ", 0) == 0) { + auto out = line.substr(7); + ASSERT_EQ(out, chart->Meta.Genre, "genre: "); + } else if (line.rfind("subartist: ", 0) == 0) { + auto out = line.substr(11); + ASSERT_EQ(out, chart->Meta.SubArtist, "subartist: "); + } else if (line.rfind("total: ", 0) == 0) { + auto out = std::stod(line.substr(7)); + ASSERT_EQ(out, chart->Meta.Total, "total: "); + } else if (line.rfind("total_notes: ", 0) == 0) { + auto out = std::stoi(line.substr(13)); + ASSERT_EQ(out, chart->Meta.TotalNotes, "total_notes: "); + } else if (line.rfind("total_backspin_notes: ", 0) == 0) { + auto out = std::stoi(line.substr(22)); + ASSERT_EQ(out, chart->Meta.TotalBackSpinNotes, + "total_backspin_notes: "); + } else if (line.rfind("total_long_notes: ", 0) == 0) { + auto out = std::stoi(line.substr(18)); + ASSERT_EQ(out, chart->Meta.TotalLongNotes, "total_long_notes: "); + } else if (line.rfind("total_scratch_notes: ", 0) == 0) { + auto out = std::stoi(line.substr(21)); + ASSERT_EQ(out, chart->Meta.TotalScratchNotes, + "total_scratch_notes: "); + } else if (line.rfind("total_landmine_notes: ", 0) == 0) { + auto out = std::stoi(line.substr(22)); + ASSERT_EQ(out, chart->Meta.TotalLandmineNotes, + "total_landmine_notes: "); + } else if (line.rfind("min_bpm: ", 0) == 0) { + auto out = std::stod(line.substr(9)); + ASSERT_EQ(out, chart->Meta.MinBpm, "min_bpm: "); + } else if (line.rfind("max_bpm: ", 0) == 0) { + auto out = std::stod(line.substr(9)); + ASSERT_EQ(out, chart->Meta.MaxBpm, "max_bpm: "); + } else if (line.rfind("bpm: ", 0) == 0) { + auto out = std::stod(line.substr(5)); + ASSERT_EQ(out, chart->Meta.Bpm, "bpm: "); + } else if (line.rfind("minbpm: ", 0) == 0) { + auto out = std::stod(line.substr(8)); + ASSERT_EQ(out, chart->Meta.MinBpm, "minbpm: "); + } else if (line.rfind("maxbpm: ", 0) == 0) { + auto out = std::stod(line.substr(8)); + ASSERT_EQ(out, chart->Meta.MaxBpm, "maxbpm: "); + } else if (line.rfind("is_dp: ", 0) == 0) { + auto out = line.substr(7) == "true"; + ASSERT_EQ(out, chart->Meta.IsDP, "is_dp: "); + } else if (line.rfind("key_mode: ", 0) == 0) { + auto out = std::stoi(line.substr(10)); + ASSERT_EQ(out, chart->Meta.KeyMode, "key_mode: "); + } else if (line.rfind("difficulty: ", 0) == 0) { + auto out = std::stoi(line.substr(12)); + ASSERT_EQ(out, chart->Meta.Difficulty, "difficulty: "); + } else if (line.rfind("playlevel: ", 0) == 0) { + auto out = std::stoi(line.substr(11)); + ASSERT_EQ(out, chart->Meta.PlayLevel, "playlevel: "); + } else if (line.rfind("player: ", 0) == 0) { + auto out = std::stoi(line.substr(8)); + ASSERT_EQ(out, chart->Meta.Player, "player: "); + } else if (line.rfind("rank: ", 0) == 0) { + auto out = std::stoi(line.substr(6)); + ASSERT_EQ(out, chart->Meta.Rank, "rank: "); + } else if (line.rfind("playlength: ", 0) == 0) { + auto out = std::stoi(line.substr(11)); + ASSERT_EQ(out, chart->Meta.PlayLength, "playlength: "); } + } + delete chart; + std::cout << "\tPass" << std::endl; } + } - return 0; + return 0; } \ No newline at end of file