diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d94e6f6..d2f94e8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,10 +123,10 @@ set(SOURCES src/ServerState.cc src/Shell.cc src/StaticGameData.cc + src/StepGraph.cc src/TeamIndex.cc src/Text.cc - src/TextArchive.cc - src/UnicodeTextSet.cc + src/TextIndex.cc src/Version.cc src/WordSelectTable.cc ) diff --git a/README.md b/README.md index fb5bab4e..439e508b 100644 --- a/README.md +++ b/README.md @@ -286,6 +286,7 @@ Some commands only work on the game server and not on the proxy server. The chat * `$si` (game server only): Shows basic information about the server. * `$ping`: Shows round-trip ping time from the server to you. On the proxy server, shows the ping time from you to the proxy and from the proxy to the server. * `$matcount` (game server only): Shows how many of each type of material you've used. + * `$rarenotifs` (game server only): Enables or disables rare drop notifications. When enabled, you'll see a message whenever a rare item drops. In private drop mode, you will only see a notification if the item is visible to you; you won't be notified of other players' rare drops. * `$what` (game server only): Shows the type, name, and stats of the nearest item on the ground. * `$where` (game server only): Shows your current floor number and coordinates. Mainly useful for debugging. diff --git a/src/ChatCommands.cc b/src/ChatCommands.cc index 988ee31e..94e8dc36 100644 --- a/src/ChatCommands.cc +++ b/src/ChatCommands.cc @@ -295,7 +295,7 @@ static void server_command_quest(shared_ptr c, const std::string& args) auto s = c->require_server_state(); auto l = c->require_lobby(); - auto q = s->quest_index_for_version(effective_version)->get(stoul(args)); + auto q = s->quest_index(effective_version)->get(stoul(args)); if (!q) { send_text_message(c, "$C6Quest not found"); } else { @@ -1478,6 +1478,12 @@ static void proxy_command_song(shared_ptr ses, const send_ep3_change_music(ses->client_channel, song); } +static void server_command_rare_notifs(shared_ptr c, const std::string&) { + c->config.toggle_flag(Client::Flag::RARE_DROP_NOTIFICATIONS_ENABLED); + bool enabled = c->config.check_flag(Client::Flag::RARE_DROP_NOTIFICATIONS_ENABLED); + send_text_message_printf(c, "$C6Rare notifications\n%s", enabled ? "enabled" : "disabled"); +} + static void server_command_infinite_hp(shared_ptr c, const std::string&) { auto s = c->require_server_state(); auto l = c->require_lobby(); @@ -1611,7 +1617,7 @@ static void server_command_item(shared_ptr c, const std::string& args) { check_is_game(l, true); check_cheats_enabled(l, c); - ItemData item = s->item_name_index->parse_item_description(c->version(), args); + ItemData item = s->parse_item_description(c->version(), args); item.id = l->generate_item_id(c->lobby_client_id); if ((l->drop_mode == Lobby::DropMode::SERVER_PRIVATE) || (l->drop_mode == Lobby::DropMode::SERVER_DUPLICATE)) { @@ -1644,7 +1650,7 @@ static void proxy_command_item(shared_ptr ses, const bool set_drop = (!args.empty() && (args[0] == '!')); - ItemData item = s->item_name_index->parse_item_description(ses->version(), (set_drop ? args.substr(1) : args)); + ItemData item = s->parse_item_description(ses->version(), (set_drop ? args.substr(1) : args)); item.id = random_object() | 0x80000000; if (set_drop) { @@ -1994,6 +2000,7 @@ static const unordered_map chat_commands({ {"$qsyncall", {server_command_qsyncall, proxy_command_qsyncall}}, {"$quest", {server_command_quest, nullptr}}, {"$rand", {server_command_rand, proxy_command_rand}}, + {"$rarenotifs", {server_command_rare_notifs, nullptr}}, {"$save", {server_command_save, nullptr}}, {"$savechar", {server_command_savechar, nullptr}}, {"$saverec", {server_command_saverec, nullptr}}, diff --git a/src/Client.cc b/src/Client.cc index 58adfe1f..8573028d 100644 --- a/src/Client.cc +++ b/src/Client.cc @@ -195,6 +195,9 @@ Client::Client( external_bank_character_index(-1), last_play_time_update(0) { this->config.set_flags_for_version(version, -1); + if (server->get_state()->default_rare_notifs_enabled) { + this->config.set_flag(Flag::RARE_DROP_NOTIFICATIONS_ENABLED); + } this->config.specific_version = default_specific_version_for_version(version, -1); this->last_switch_enabled_command.header.subcommand = 0; @@ -1021,3 +1024,46 @@ void Client::use_character_bank(int8_t index) { } } } + +void Client::print_inventory(FILE* stream) const { + auto p = this->character(); + shared_ptr name_index; + try { + name_index = this->require_server_state()->item_name_index(this->version()); + } catch (const runtime_error&) { + } + fprintf(stream, "[PlayerInventory] Meseta: %" PRIu32 "\n", p->disp.stats.meseta.load()); + fprintf(stream, "[PlayerInventory] %hhu items\n", p->inventory.num_items); + for (size_t x = 0; x < p->inventory.num_items; x++) { + const auto& item = p->inventory.items[x]; + auto hex = item.data.hex(); + if (name_index) { + auto name = name_index->describe_item(item.data); + fprintf(stream, "[PlayerInventory] %2zu: [+%08" PRIX32 "] %s (%s)\n", x, item.flags.load(), hex.c_str(), name.c_str()); + } else { + fprintf(stream, "[PlayerInventory] %2zu: [+%08" PRIX32 "] %s\n", x, item.flags.load(), hex.c_str()); + } + } +} + +void Client::print_bank(FILE* stream) const { + auto p = this->character(); + shared_ptr name_index; + try { + name_index = this->require_server_state()->item_name_index(this->version()); + } catch (const runtime_error&) { + } + fprintf(stream, "[PlayerBank] Meseta: %" PRIu32 "\n", p->bank.meseta.load()); + fprintf(stream, "[PlayerBank] %" PRIu32 " items\n", p->bank.num_items.load()); + for (size_t x = 0; x < p->bank.num_items; x++) { + const auto& item = p->bank.items[x]; + const char* present_token = item.present ? "" : " (missing present flag)"; + auto hex = item.data.hex(); + if (name_index) { + auto name = name_index->describe_item(item.data); + fprintf(stream, "[PlayerBank] %3zu: %s (%s) (x%hu)%s\n", x, hex.c_str(), name.c_str(), item.amount.load(), present_token); + } else { + fprintf(stream, "[PlayerBank] %3zu: %s (x%hu)%s\n", x, hex.c_str(), item.amount.load(), present_token); + } + } +} diff --git a/src/Client.hh b/src/Client.hh index c52b9e9a..8c3332ad 100644 --- a/src/Client.hh +++ b/src/Client.hh @@ -68,10 +68,11 @@ public: SHOULD_SEND_ENABLE_SAVE = 0x0004000000000000, SWITCH_ASSIST_ENABLED = 0x0000000100000000, - // Cheat mode flags + // Cheat mode and option flags INFINITE_HP_ENABLED = 0x0000000200000000, INFINITE_TP_ENABLED = 0x0000000400000000, DEBUG_ENABLED = 0x0000000800000000, + RARE_DROP_NOTIFICATIONS_ENABLED = 0x0010000000000000, // Proxy option flags PROXY_SAVE_FILES = 0x0000001000000000, @@ -349,6 +350,9 @@ public: void use_character_bank(int8_t bb_character_index); void use_default_bank(); + void print_inventory(FILE* stream) const; + void print_bank(FILE* stream) const; + private: // The overlay character data is used in battle and challenge modes, when // character data is temporarily replaced in-game. In other play modes and in diff --git a/src/CommandFormats.hh b/src/CommandFormats.hh index 3733fe3e..4a3f843b 100644 --- a/src/CommandFormats.hh +++ b/src/CommandFormats.hh @@ -4369,13 +4369,13 @@ struct G_SwitchInteraction_6x50 { // 6x51: Invalid subcommand -// 6x52: Toggle counter (shop/bank) interaction (protected on V3/V4) +// 6x52: Set animation state (protected on V3/V4) -struct G_ToggleCounterInteraction_6x52 { +struct G_SetAnimationState_6x52 { G_ClientIDHeader header; - le_uint16_t unknown_a1 = 0; + le_uint16_t animation = 0; le_uint16_t unknown_a2 = 0; - le_uint32_t unknown_a3 = 0; + le_uint32_t angle = 0; } __packed__; // 6x53: Unknown (supported; game only) (protected on V3/V4) diff --git a/src/Episode3/DataIndexes.cc b/src/Episode3/DataIndexes.cc index d12192be..95644020 100644 --- a/src/Episode3/DataIndexes.cc +++ b/src/Episode3/DataIndexes.cc @@ -764,7 +764,7 @@ string CardDefinition::Effect::str_for_arg(const string& arg) { } } -string CardDefinition::Effect::str(const char* separator, const TextArchive* text_archive) const { +string CardDefinition::Effect::str(const char* separator, const TextSet* text_archive) const { vector tokens; tokens.emplace_back(string_printf("%hhu:", this->effect_num)); { @@ -802,7 +802,7 @@ string CardDefinition::Effect::str(const char* separator, const TextArchive* tex const char* name = nullptr; if (this->name_index && text_archive) { try { - name = text_archive->get_string(45, this->name_index).c_str(); + name = text_archive->get(45, this->name_index).c_str(); } catch (const exception&) { } } @@ -1061,7 +1061,7 @@ static const char* name_for_assist_ai_param_target(uint8_t target) { } } -string CardDefinition::str(bool single_line, const TextArchive* text_archive) const { +string CardDefinition::str(bool single_line, const TextSet* text_archive) const { string type_str; try { type_str = name_for_card_type(this->type); diff --git a/src/Episode3/DataIndexes.hh b/src/Episode3/DataIndexes.hh index 9e44f51c..727adc1d 100644 --- a/src/Episode3/DataIndexes.hh +++ b/src/Episode3/DataIndexes.hh @@ -15,7 +15,7 @@ #include "../PlayerSubordinates.hh" #include "../Text.hh" -#include "../TextArchive.hh" +#include "../TextIndex.hh" namespace Episode3 { @@ -514,7 +514,7 @@ struct CardDefinition { bool is_empty() const; static std::string str_for_arg(const std::string& arg); - std::string str(const char* separator = ", ", const TextArchive* text_archive = nullptr) const; + std::string str(const char* separator = ", ", const TextSet* text_archive = nullptr) const; } __attribute__((packed)); /* 0000 */ be_uint32_t card_id; @@ -780,7 +780,7 @@ struct CardDefinition { CardClass card_class() const; void decode_range(); - std::string str(bool single_line = true, const TextArchive* text_archive = nullptr) const; + std::string str(bool single_line = true, const TextSet* text_archive = nullptr) const; } __attribute__((packed)); // 0x128 bytes in total struct CardDefinitionsFooter { diff --git a/src/Episode3/Server.cc b/src/Episode3/Server.cc index c5bfde98..ba738aae 100644 --- a/src/Episode3/Server.cc +++ b/src/Episode3/Server.cc @@ -3,6 +3,7 @@ #include #include +#include "../Loggers.hh" #include "../SendCommands.hh" using namespace std; @@ -26,6 +27,7 @@ void Server::PresenceEntry::clear() { Server::Server(shared_ptr lobby, Options&& options) : lobby(lobby), + has_lobby(lobby != nullptr), options(std::move(options)), last_chosen_map(this->options.tournament ? this->options.tournament->get_map() : nullptr), tournament_match_result_sent(false), @@ -64,7 +66,11 @@ Server::Server(shared_ptr lobby, Options&& options) has_done_pb(0), num_6xB4x06_commands_sent(0), prev_num_6xB4x06_commands_sent(0) { - new StackLogger(this, lobby->log.prefix + "[Ep3::Server] ", lobby->log.min_level); + if (this->has_lobby) { + new StackLogger(this, lobby->log.prefix + "[Ep3::Server] ", lobby->log.min_level); + } else { + new StackLogger(this, "[Ep3::Server] ", lobby_log.min_level); + } } Server::~Server() noexcept(false) { @@ -187,52 +193,50 @@ int8_t Server::get_winner_team_id() const { return -1; // No team has won (yet) } -void Server::send(const void* data, size_t size) const { +void Server::send(const void* data, size_t size, uint8_t command, bool enable_masking) const { // Note: This function is (obviously) not part of the original implementation. - auto l = this->lobby.lock(); - if (!l) { - throw runtime_error("lobby is deleted"); - } + if (this->has_lobby) { + auto l = this->lobby.lock(); + if (!l) { + throw runtime_error("lobby is deleted"); + } - string masked_data; - if (!(this->options.behavior_flags & BehaviorFlag::DISABLE_MASKING)) { - if (size >= 8) { + string masked_data; + if (enable_masking && + !(this->options.behavior_flags & BehaviorFlag::DISABLE_MASKING) && + (size >= 8)) { masked_data.assign(reinterpret_cast(data), size); uint8_t mask_key = (random_object() % 0xFF) + 1; set_mask_for_ep3_game_command(masked_data.data(), masked_data.size(), mask_key); data = masked_data.data(); size = masked_data.size(); } - } - // Note: Sega's servers sent battle commands with the 60 command. The handlers - // for 60, 62, and C9 on the client are identical, so we choose to use C9 - // instead because it's unique to Episode 3, and therefore seems more - // appropriate to convey battle commands. - send_command(l, 0xC9, 0x00, data, size); - for (auto watcher_l : l->watcher_lobbies) { - send_command_if_not_loading(watcher_l, 0xC9, 0x00, data, size); - } - if (l->battle_record && l->battle_record->writable()) { - l->battle_record->add_command( - BattleRecord::Event::Type::BATTLE_COMMAND, data, size); + // Note: Sega's servers sent battle commands with the 60 command. The handlers + // for 60, 62, and C9 on the client are identical, so we choose to use C9 + // instead because it's unique to Episode 3, and therefore seems more + // appropriate to convey battle commands. + send_command(l, command, 0x00, data, size); + for (auto watcher_l : l->watcher_lobbies) { + send_command_if_not_loading(watcher_l, command, 0x00, data, size); + } + if (l->battle_record && l->battle_record->writable()) { + l->battle_record->add_command(BattleRecord::Event::Type::BATTLE_COMMAND, data, size); + } + + } else if (this->log().info("Generated command")) { + print_data(stderr, data, size); } } void Server::send_6xB4x46() const { // Note: This function is not part of the original implementation; it was // factored out from its callsites in this file and the strings were changed. - auto l = this->lobby.lock(); - if (!l) { - throw runtime_error("lobby is deleted"); - } - G_ServerVersionStrings_GC_Ep3_6xB4x46 cmd46; cmd46.version_signature.encode(VERSION_SIGNATURE, 1); cmd46.date_str1.encode(format_time(this->options.card_index->definitions_mtime() * 1000000), 1); string date_str2 = string_printf( - "Lobby:%08" PRIX32 " Random:%08" PRIX32 "+%08" PRIX32, - l->lobby_id, + "Random:%08" PRIX32 "+%08" PRIX32, this->options.random_crypt->seed(), this->options.random_crypt->absolute_offset()); if (this->last_chosen_map) { @@ -2110,17 +2114,15 @@ void Server::handle_CAx1D_start_battle(shared_ptr, const string& data) { this->battle_in_progress = false; } else { auto l = this->lobby.lock(); - if (!l) { - throw runtime_error("lobby is deleted"); - } - if (l->battle_record) { - l->battle_record->set_battle_start_timestamp(); - } - - // Note: Sega's implementation doesn't set EX results values here; they - // did it at game join time instead. We do it here for code simplicity. - if (l->ep3_ex_result_values) { - this->send(*l->ep3_ex_result_values); + if (l) { + if (l->battle_record) { + l->battle_record->set_battle_start_timestamp(); + } + // Note: Sega's implementation doesn't set EX results values here; they + // did it at game join time instead. We do it here for code simplicity. + if (l->ep3_ex_result_values) { + this->send(*l->ep3_ex_result_values); + } } this->setup_and_start_battle(); @@ -2327,65 +2329,66 @@ void Server::handle_CAx40_map_list_request(shared_ptr sender_c, const st throw runtime_error("lobby is deleted"); } - const auto& list_data = this->options.map_index->get_compressed_list(l->count_clients(), sender_c->language()); + size_t num_players = l ? l->count_clients() : 1; + uint8_t language = sender_c ? sender_c->language() : 1; + const auto& list_data = this->options.map_index->get_compressed_list(num_players, language); StringWriter w; uint32_t subcommand_size = (list_data.size() + sizeof(G_MapList_GC_Ep3_6xB6x40) + 3) & (~3); w.put( G_MapList_GC_Ep3_6xB6x40{{{{0xB6, 0, 0}, subcommand_size}, 0x40, {}}, list_data.size(), 0}); w.write(list_data); - send_command(l, 0x6C, 0x00, w.str()); - for (auto watcher_l : l->watcher_lobbies) { - send_command_if_not_loading(watcher_l, 0x6C, 0x00, w.str()); + while (w.size() & 3) { + w.put_u8(0); } - if (l->battle_record && l->battle_record->writable()) { - l->battle_record->add_command( - BattleRecord::Event::Type::BATTLE_COMMAND, std::move(w.str())); - } + const auto& out_data = w.str(); + this->send(out_data.data(), out_data.size(), 0x6C, false); } void Server::send_6xB6x41_to_all_clients() const { auto l = this->lobby.lock(); - if (!l) { - throw runtime_error("lobby is deleted"); - } - - vector map_commands_by_language; - auto send_to_client = [&](shared_ptr c) -> void { - if (!c) { - return; - } - if (map_commands_by_language.size() <= c->language()) { - map_commands_by_language.resize(c->language() + 1); - } - if (map_commands_by_language[c->language()].empty()) { - map_commands_by_language[c->language()] = this->prepare_6xB6x41_map_definition( - this->last_chosen_map, c->language(), (l->base_version == Version::GC_EP3_NTE)); - } - this->log().info("Sending %c version of map %08" PRIX32, char_for_language_code(c->language()), this->last_chosen_map->map_number); - send_command(c, 0x6C, 0x00, map_commands_by_language[c->language()]); - }; - for (const auto& c : l->clients) { - send_to_client(c); - } - for (auto watcher_l : l->watcher_lobbies) { - for (const auto& c : watcher_l->clients) { + if (l) { + vector map_commands_by_language; + auto send_to_client = [&](shared_ptr c) -> void { + if (!c) { + return; + } + if (map_commands_by_language.size() <= c->language()) { + map_commands_by_language.resize(c->language() + 1); + } + if (map_commands_by_language[c->language()].empty()) { + map_commands_by_language[c->language()] = this->prepare_6xB6x41_map_definition( + this->last_chosen_map, c->language(), (l->base_version == Version::GC_EP3_NTE)); + } + this->log().info("Sending %c version of map %08" PRIX32, char_for_language_code(c->language()), this->last_chosen_map->map_number); + send_command(c, 0x6C, 0x00, map_commands_by_language[c->language()]); + }; + for (const auto& c : l->clients) { send_to_client(c); } - } - - if (l->battle_record && l->battle_record->writable()) { - // TODO: It's not great that we just pick the first one; ideally we'd put - // all of them in the recording and send the appropriate one to the client - // in the playback lobby - for (string& data : map_commands_by_language) { - if (!data.empty()) { - l->battle_record->add_command( - BattleRecord::Event::Type::BATTLE_COMMAND, std::move(data)); - break; + for (auto watcher_l : l->watcher_lobbies) { + for (const auto& c : watcher_l->clients) { + send_to_client(c); } } + + if (l->battle_record && l->battle_record->writable()) { + // TODO: It's not great that we just pick the first one; ideally we'd put + // all of them in the recording and send the appropriate one to the client + // in the playback lobby + for (string& data : map_commands_by_language) { + if (!data.empty()) { + l->battle_record->add_command( + BattleRecord::Event::Type::BATTLE_COMMAND, std::move(data)); + break; + } + } + } + + } else { + auto out_data = this->prepare_6xB6x41_map_definition(this->last_chosen_map, 1, false); + this->send(out_data.data(), out_data.size(), 0x6C, false); } } diff --git a/src/Episode3/Server.hh b/src/Episode3/Server.hh index 4de02d5b..18f4dd0a 100644 --- a/src/Episode3/Server.hh +++ b/src/Episode3/Server.hh @@ -98,7 +98,7 @@ public: int8_t get_winner_team_id() const; template - void send(const T& cmd) const { + void send(const T& cmd, uint8_t command = 0xC9, bool enable_masking = true) const { if (cmd.header.size != sizeof(cmd) / 4) { throw std::logic_error("outbound command size field is incorrect"); } @@ -109,9 +109,9 @@ public: return; } } - this->send(&cmd, cmd.header.size * 4); + this->send(&cmd, cmd.header.size * 4, command, enable_masking); } - void send(const void* data, size_t size) const; + void send(const void* data, size_t size, uint8_t command = 0xC9, bool enable_masking = true) const; void send_commands_for_joining_spectator(Channel& ch) const; void force_battle_result(uint8_t surrendered_client_id, bool set_winner); @@ -242,6 +242,7 @@ private: public: // These fields are not part of the original implementation std::weak_ptr lobby; + bool has_lobby; Options options; std::shared_ptr last_chosen_map; bool tournament_match_result_sent; diff --git a/src/ItemCreator.cc b/src/ItemCreator.cc index 66d1480e..081e1977 100644 --- a/src/ItemCreator.cc +++ b/src/ItemCreator.cc @@ -134,46 +134,49 @@ uint8_t ItemCreator::normalize_area_number(uint8_t area) const { } } -ItemData ItemCreator::on_box_item_drop(uint16_t entity_id, uint8_t area) { +ItemCreator::DropResult ItemCreator::on_box_item_drop(uint16_t entity_id, uint8_t area) { return this->destroyed_boxes.count(entity_id) - ? ItemData() + ? DropResult() : this->on_box_item_drop_with_area_norm(this->normalize_area_number(area)); } -ItemData ItemCreator::on_monster_item_drop(uint16_t entity_id, uint32_t enemy_type, uint8_t area) { +ItemCreator::DropResult ItemCreator::on_monster_item_drop(uint16_t entity_id, uint32_t enemy_type, uint8_t area) { return this->destroyed_monsters.count(entity_id) - ? ItemData() + ? DropResult() : this->on_monster_item_drop_with_area_norm(enemy_type, this->normalize_area_number(area)); } -ItemData ItemCreator::on_box_item_drop_with_area_norm(uint8_t area_norm) { +ItemCreator::DropResult ItemCreator::on_box_item_drop_with_area_norm(uint8_t area_norm) { this->log.info("Box drop checks for area_norm %02hhX; random state: %08" PRIX32 " %08" PRIX32, area_norm, this->random_crypt.seed(), this->random_crypt.absolute_offset()); - ItemData item = this->check_rare_specs_and_create_rare_box_item(area_norm); - if (item.empty()) { + DropResult res; + res.item = this->check_rare_specs_and_create_rare_box_item(area_norm); + if (!res.item.empty()) { + res.is_from_rare_table = true; + } else { uint8_t item_class = this->get_rand_from_weighted_tables_2d_vertical(this->pt->box_item_class_prob_table, area_norm); this->log.info("Item class is %02hhX", item_class); switch (item_class) { case 0: // Weapon - item.data1[0] = 0; + res.item.data1[0] = 0; break; case 1: // Armor - item.data1[0] = 1; - item.data1[1] = 1; + res.item.data1[0] = 1; + res.item.data1[1] = 1; break; case 2: // Shield - item.data1[0] = 1; - item.data1[1] = 2; + res.item.data1[0] = 1; + res.item.data1[1] = 2; break; case 3: // Unit - item.data1[0] = 1; - item.data1[1] = 3; + res.item.data1[0] = 1; + res.item.data1[1] = 3; break; case 4: // Tool - item.data1[0] = 3; + res.item.data1[0] = 3; break; case 5: // Meseta - item.data1[0] = 4; + res.item.data1[0] = 4; break; case 6: // Nothing break; @@ -181,16 +184,16 @@ ItemData ItemCreator::on_box_item_drop_with_area_norm(uint8_t area_norm) { throw logic_error("this should be impossible"); } if (item_class < 6) { - this->generate_common_item_variances(area_norm, item); + this->generate_common_item_variances(area_norm, res.item); } } - return item; + return res; } -ItemData ItemCreator::on_monster_item_drop_with_area_norm(uint32_t enemy_type, uint8_t area_norm) { +ItemCreator::DropResult ItemCreator::on_monster_item_drop_with_area_norm(uint32_t enemy_type, uint8_t area_norm) { if (enemy_type > 0x58) { this->log.warning("Invalid enemy type: %" PRIX32, enemy_type); - return ItemData(); + return DropResult(); } this->log.info("Enemy type: %" PRIX32 "; random state: %08" PRIX32 " %08" PRIX32, enemy_type, this->random_crypt.seed(), this->random_crypt.absolute_offset()); @@ -198,13 +201,16 @@ ItemData ItemCreator::on_monster_item_drop_with_area_norm(uint32_t enemy_type, u uint8_t drop_sample = this->rand_int(100); if (drop_sample >= type_drop_prob) { this->log.info("Drop not chosen (%hhu >= %hhu)", drop_sample, type_drop_prob); - return ItemData(); + return DropResult(); } else { this->log.info("Drop chosen (%hhu < %hhu)", drop_sample, type_drop_prob); } - ItemData item = this->check_rare_spec_and_create_rare_enemy_item(enemy_type, area_norm); - if (item.empty()) { + DropResult res; + res.item = this->check_rare_spec_and_create_rare_enemy_item(enemy_type, area_norm); + if (!res.item.empty()) { + res.is_from_rare_table = true; + } else { uint32_t item_class_determinant = this->should_allow_meseta_drops() ? this->rand_int(3) @@ -229,34 +235,34 @@ ItemData ItemCreator::on_monster_item_drop_with_area_norm(uint32_t enemy_type, u switch (item_class) { case 0: // Weapon - item.data1[0] = 0x00; + res.item.data1[0] = 0x00; break; case 1: // Armor - item.data1w[0] = 0x0101; + res.item.data1w[0] = 0x0101; break; case 2: // Shield - item.data1w[0] = 0x0201; + res.item.data1w[0] = 0x0201; break; case 3: // Unit - item.data1w[0] = 0x0301; + res.item.data1w[0] = 0x0301; break; case 4: // Tool - item.data1[0] = 0x03; + res.item.data1[0] = 0x03; break; case 5: // Meseta - item.data1[0] = 0x04; - item.data2d = this->choose_meseta_amount(this->pt->enemy_meseta_ranges, enemy_type) & 0xFFFF; + res.item.data1[0] = 0x04; + res.item.data2d = this->choose_meseta_amount(this->pt->enemy_meseta_ranges, enemy_type) & 0xFFFF; break; default: - return item; + return res; } - if (item.data1[0] != 0x04) { - this->generate_common_item_variances(area_norm, item); + if (res.item.data1[0] != 0x04) { + this->generate_common_item_variances(area_norm, res.item); } } - return item; + return res; } ItemData ItemCreator::check_rare_specs_and_create_rare_box_item(uint8_t area_norm) { @@ -474,7 +480,7 @@ void ItemCreator::set_item_unidentified_flag_if_not_challenge(ItemData& item) co void ItemCreator::set_tool_item_amount_to_1(ItemData& item) const { if (item.data1[0] == 0x03) { - item.set_tool_item_amount(1); + item.set_tool_item_amount(this->version, 1); } } @@ -695,10 +701,20 @@ uint8_t ItemCreator::generate_tech_disk_level(uint32_t tech_num, uint32_t area_n return range.min; } -void ItemCreator::generate_common_mag_variances(ItemData& item) const { +void ItemCreator::generate_common_mag_variances(ItemData& item) { if (item.data1[0] == 0x02) { item.data1[1] = 0x00; item.assign_mag_stats(ItemMagStats()); + + // The original code (on PSO GC) assigns the mag color as 0x0E. We assign + // a random color instead. + if (is_pre_v1(this->version)) { + item.data2[3] = 0x00; + } else if (is_v1_or_v2(this->version)) { + item.data2[3] = this->random_crypt.next() % 0x0E; + } else { + item.data2[3] = this->random_crypt.next() % 0x12; + } } } @@ -1663,23 +1679,24 @@ void ItemCreator::generate_weapon_shop_item_bonus2(ItemData& item, size_t player } } -ItemData ItemCreator::on_specialized_box_item_drop( +ItemCreator::DropResult ItemCreator::on_specialized_box_item_drop( uint16_t entity_id, uint8_t area, float def_z, uint32_t def0, uint32_t def1, uint32_t def2) { if (this->destroyed_boxes.count(entity_id)) { - return ItemData(); + return DropResult(); } - ItemData item = this->base_item_for_specialized_box(def0, def1, def2); + DropResult res; + res.item = this->base_item_for_specialized_box(def0, def1, def2); if (def_z == 0.0f) { - uint16_t type = item.data1w[0]; - item.clear(); - item.data1w[0] = type; - this->generate_common_item_variances(this->normalize_area_number(area), item); + uint16_t type = res.item.data1w[0]; + res.item.clear(); + res.item.data1w[0] = type; + this->generate_common_item_variances(this->normalize_area_number(area), res.item); } - return item; + return res; } -ItemData ItemCreator::base_item_for_specialized_box(uint32_t def0, uint32_t def1, uint32_t def2) { +ItemData ItemCreator::base_item_for_specialized_box(uint32_t def0, uint32_t def1, uint32_t def2) const { ItemData item; item.data1[0] = (def0 >> 0x18) & 0x0F; item.data1[1] = (def0 >> 0x10) + ((item.data1[0] == 0x00) || (item.data1[0] == 0x01)); @@ -1708,7 +1725,7 @@ ItemData ItemCreator::base_item_for_specialized_box(uint32_t def0, uint32_t def1 if (item.data1[1] == 0x02) { item.data1[4] = def0 & 0xFF; } - item.set_tool_item_amount(1); + item.set_tool_item_amount(this->version, 1); break; case 0x04: item.data2d = ((def1 >> 0x10) & 0xFFFF) * 10; diff --git a/src/ItemCreator.hh b/src/ItemCreator.hh index 3d672b4d..5f2be0c6 100644 --- a/src/ItemCreator.hh +++ b/src/ItemCreator.hh @@ -31,14 +31,19 @@ public: void set_random_state(uint32_t seed, uint32_t absolute_offset); void clear_destroyed_entities(); - ItemData on_monster_item_drop(uint16_t entity_id, uint32_t enemy_type, uint8_t area); - ItemData on_box_item_drop(uint16_t entity_id, uint8_t area); - ItemData on_specialized_box_item_drop(uint16_t entity_id, uint8_t area, float def_z, uint32_t def0, uint32_t def1, uint32_t def2); + struct DropResult { + ItemData item; + bool is_from_rare_table = false; + }; + + DropResult on_monster_item_drop(uint16_t entity_id, uint32_t enemy_type, uint8_t area); + DropResult on_box_item_drop(uint16_t entity_id, uint8_t area); + DropResult on_specialized_box_item_drop(uint16_t entity_id, uint8_t area, float def_z, uint32_t def0, uint32_t def1, uint32_t def2); void set_monster_destroyed(uint16_t entity_id); void set_box_destroyed(uint16_t entity_id); - static ItemData base_item_for_specialized_box(uint32_t def0, uint32_t def1, uint32_t def2); + ItemData base_item_for_specialized_box(uint32_t def0, uint32_t def1, uint32_t def2) const; std::vector generate_armor_shop_contents(size_t player_level); std::vector generate_tool_shop_contents(size_t player_level); @@ -87,8 +92,8 @@ private: bool are_rare_drops_allowed() const; uint8_t normalize_area_number(uint8_t area) const; - ItemData on_monster_item_drop_with_area_norm(uint32_t enemy_type, uint8_t area_norm); - ItemData on_box_item_drop_with_area_norm(uint8_t area_norm); + DropResult on_monster_item_drop_with_area_norm(uint32_t enemy_type, uint8_t area_norm); + DropResult on_box_item_drop_with_area_norm(uint8_t area_norm); uint32_t rand_int(uint64_t max); float rand_float_0_1_from_crypt(); @@ -116,7 +121,7 @@ private: void generate_common_armor_or_shield_type_and_variances(char area_norm, ItemData& item); void generate_common_tool_variances(uint32_t area_norm, ItemData& item); uint8_t generate_tech_disk_level(uint32_t tech_num, uint32_t area_norm); - void generate_common_mag_variances(ItemData& item) const; + void generate_common_mag_variances(ItemData& item); void generate_common_weapon_variances(uint8_t area_norm, ItemData& item); void generate_common_weapon_grind(ItemData& item, uint8_t offset_within_subtype_range); void generate_common_weapon_bonuses(ItemData& item, uint8_t area_norm); diff --git a/src/ItemData.cc b/src/ItemData.cc index 02caeea3..8edf4d74 100644 --- a/src/ItemData.cc +++ b/src/ItemData.cc @@ -84,7 +84,7 @@ uint32_t ItemData::primary_identifier() const { } } -bool ItemData::is_wrapped() const { +bool ItemData::is_wrapped(Version version) const { switch (this->data1[0]) { case 0: case 1: @@ -92,7 +92,7 @@ bool ItemData::is_wrapped() const { case 2: return this->data2[2] & 0x40; case 3: - return !this->is_stackable() && (this->data1[3] & 0x40); + return !this->is_stackable(version) && (this->data1[3] & 0x40); case 4: return false; default: @@ -100,7 +100,7 @@ bool ItemData::is_wrapped() const { } } -void ItemData::wrap() { +void ItemData::wrap(Version version) { switch (this->data1[0]) { case 0: case 1: @@ -110,7 +110,7 @@ void ItemData::wrap() { this->data2[2] |= 0x40; break; case 3: - if (!this->is_stackable()) { + if (!this->is_stackable(version)) { this->data1[3] |= 0x40; } break; @@ -121,7 +121,7 @@ void ItemData::wrap() { } } -void ItemData::unwrap() { +void ItemData::unwrap(Version version) { switch (this->data1[0]) { case 0: case 1: @@ -131,7 +131,7 @@ void ItemData::unwrap() { this->data2[2] &= 0xBF; break; case 3: - if (!this->is_stackable()) { + if (!this->is_stackable(version)) { this->data1[3] &= 0xBF; } break; @@ -142,23 +142,23 @@ void ItemData::unwrap() { } } -bool ItemData::is_stackable() const { - return this->max_stack_size() > 1; +bool ItemData::is_stackable(Version version) const { + return this->max_stack_size(version) > 1; } -size_t ItemData::stack_size() const { - if (max_stack_size_for_item(this->data1[0], this->data1[1]) > 1) { +size_t ItemData::stack_size(Version version) const { + if (max_stack_size_for_item(version, this->data1[0], this->data1[1]) > 1) { return this->data1[5]; } return 1; } -size_t ItemData::max_stack_size() const { - return max_stack_size_for_item(this->data1[0], this->data1[1]); +size_t ItemData::max_stack_size(Version version) const { + return max_stack_size_for_item(version, this->data1[0], this->data1[1]); } -void ItemData::enforce_min_stack_size() { - if (this->stack_size() == 0) { +void ItemData::enforce_min_stack_size(Version version) { + if (this->stack_size(version) == 0) { this->data1[5] = 1; } } @@ -502,12 +502,12 @@ void ItemData::set_sealed_item_kill_count(uint16_t v) { } } -uint8_t ItemData::get_tool_item_amount() const { - return this->is_stackable() ? this->data1[5] : 1; +uint8_t ItemData::get_tool_item_amount(Version version) const { + return this->is_stackable(version) ? this->data1[5] : 1; } -void ItemData::set_tool_item_amount(uint8_t amount) { - if (this->is_stackable()) { +void ItemData::set_tool_item_amount(Version version, uint8_t amount) { + if (this->is_stackable(version)) { this->data1[5] = amount; } else if (this->data1[0] == 0x03) { this->data1[5] = 0x00; diff --git a/src/ItemData.hh b/src/ItemData.hh index 900caaf8..ffe6c75e 100644 --- a/src/ItemData.hh +++ b/src/ItemData.hh @@ -29,26 +29,15 @@ enum class EquipSlot { }; struct ItemMagStats { - uint16_t iq; - uint16_t synchro; - uint16_t def; - uint16_t pow; - uint16_t dex; - uint16_t mind; - uint8_t flags; - uint8_t photon_blasts; - uint8_t color; - - ItemMagStats() - : iq(0), - synchro(40), - def(500), - pow(0), - dex(0), - mind(0), - flags(0), - photon_blasts(0), - color(14) {} + uint16_t iq = 0; + uint16_t synchro = 40; + uint16_t def = 500; + uint16_t pow = 0; + uint16_t dex = 0; + uint16_t mind = 0; + uint8_t flags = 0; + uint8_t photon_blasts = 0; + uint8_t color = 14; inline uint16_t def_level() const { return this->def / 100; @@ -140,14 +129,14 @@ struct ItemData { // 0x14 bytes std::string hex() const; uint32_t primary_identifier() const; - bool is_wrapped() const; - void wrap(); - void unwrap(); + bool is_wrapped(Version version) const; + void wrap(Version version); + void unwrap(Version version); - bool is_stackable() const; - size_t stack_size() const; - size_t max_stack_size() const; - void enforce_min_stack_size(); + bool is_stackable(Version version) const; + size_t stack_size(Version version) const; + size_t max_stack_size(Version version) const; + void enforce_min_stack_size(Version version); static bool is_common_consumable(uint32_t primary_identifier); bool is_common_consumable() const; @@ -166,8 +155,8 @@ struct ItemData { // 0x14 bytes uint16_t get_sealed_item_kill_count() const; void set_sealed_item_kill_count(uint16_t v); - uint8_t get_tool_item_amount() const; - void set_tool_item_amount(uint8_t amount); + uint8_t get_tool_item_amount(Version version) const; + void set_tool_item_amount(Version version, uint8_t amount); int16_t get_armor_or_shield_defense_bonus() const; void set_armor_or_shield_defense_bonus(int16_t bonus); int16_t get_common_armor_evasion_bonus() const; diff --git a/src/ItemNameIndex.cc b/src/ItemNameIndex.cc index cfce7f0e..22555cc0 100644 --- a/src/ItemNameIndex.cc +++ b/src/ItemNameIndex.cc @@ -4,37 +4,69 @@ using namespace std; -ItemNameIndex::ItemNameIndex(JSON&& v2_names, JSON&& v3_names, JSON&& v4_names) { - auto get_or_create_meta = [&](uint32_t primary_identifier) { - shared_ptr meta; - try { - return this->primary_identifier_index.at(primary_identifier); - } catch (const out_of_range&) { - auto meta = make_shared(); - meta->primary_identifier = primary_identifier; - this->primary_identifier_index.emplace(primary_identifier, meta); - return meta; +// class ItemNameIndex { +// public: +// ItemNameIndex(std::shared_ptr pmt, const std::vector& name_coll); +// std::string describe_item(const ItemData& item, bool include_color_escapes = false) const; +// ItemData parse_item_description(const std::string& description) const; +// private: +// ItemData parse_item_description_phase(const std::string& description, bool skip_special) const; +// std::shared_ptr item_parameter_table; +// struct ItemMetadata { +// uint32_t primary_identifier; +// std::string name; +// }; +// std::unordered_map> primary_identifier_indexes; +// std::map> name_indexes; +// }; + +ItemNameIndex::ItemNameIndex( + Version version, + std::shared_ptr item_parameter_table, + const std::vector& name_coll) + : version(version), + item_parameter_table(item_parameter_table) { + + auto find_items_1d = [&](uint64_t data1, size_t position) -> size_t { + ItemData item(data1, 0); + for (size_t x = 0; x < 0x100; x++) { + item.data1[position] = x; + uint32_t id; + try { + id = this->item_parameter_table->get_item_id(item); + } catch (const out_of_range&) { + return x; + } + const string* name = nullptr; + try { + name = &name_coll.at(id); + } catch (const out_of_range&) { + } + + if (name) { + auto meta = make_shared(); + meta->primary_identifier = item.primary_identifier(); + meta->name = *name; + this->primary_identifier_index.emplace(meta->primary_identifier, meta); + this->name_index.emplace(tolower(meta->name), meta); + } + } + return 0x100; + }; + auto find_items_2d = [&](uint64_t data1) { + for (size_t x = 0; x < 0x100; x++) { + if (find_items_1d(data1 | (static_cast(x) << 48), 2) == 0) { + break; + } } }; - for (const auto& it : v2_names.as_dict()) { - uint32_t primary_identifier = stoul(it.first, nullptr, 16); - auto meta = get_or_create_meta(primary_identifier); - meta->v2_name = std::move(it.second->as_string()); - this->v2_name_index.emplace(tolower(meta->v2_name), meta); - } - for (const auto& it : v3_names.as_dict()) { - uint32_t primary_identifier = stoul(it.first, nullptr, 16); - auto meta = get_or_create_meta(primary_identifier); - meta->v3_name = std::move(it.second->as_string()); - this->v3_name_index.emplace(tolower(meta->v3_name), meta); - } - for (const auto& it : v4_names.as_dict()) { - uint32_t primary_identifier = stoul(it.first, nullptr, 16); - auto meta = get_or_create_meta(primary_identifier); - meta->v4_name = std::move(it.second->as_string()); - this->v4_name_index.emplace(tolower(meta->v4_name), meta); - } + find_items_2d(0x0000000000000000); + find_items_1d(0x0101000000000000, 2); + find_items_1d(0x0102000000000000, 2); + find_items_1d(0x0103000000000000, 2); + find_items_1d(0x0200000000000000, 1); + find_items_2d(0x0300000000000000); } static const char* s_rank_name_characters = "\0ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"; @@ -106,11 +138,10 @@ const array name_for_s_rank_special = { }; std::string ItemNameIndex::describe_item( - Version version, const ItemData& item, - std::shared_ptr item_parameter_table) const { + bool include_color_escapes) const { if (item.data1[0] == 0x04) { - return string_printf("%s%" PRIu32 " Meseta", item_parameter_table ? "$C7" : "", item.data2d.load()); + return string_printf("%s%" PRIu32 " Meseta", include_color_escapes ? "$C7" : "", item.data2d.load()); } vector ret_tokens; @@ -147,7 +178,7 @@ std::string ItemNameIndex::describe_item( // flags in a different location. if (((item.data1[1] == 0x01) && (item.data1[4] & 0x40)) || ((item.data1[0] == 0x02) && (item.data2[2] & 0x40)) || - ((item.data1[0] == 0x03) && !item.is_stackable() && (item.data1[3] & 0x40))) { + ((item.data1[0] == 0x03) && !item.is_stackable(this->version) && (item.data1[3] & 0x40))) { ret_tokens.emplace_back("Wrapped"); } @@ -172,18 +203,7 @@ std::string ItemNameIndex::describe_item( } else { try { auto meta = this->primary_identifier_index.at(primary_identifier); - const string* name; - if (is_v4(version)) { - name = &meta->v4_name; - } else if (is_v3(version)) { - name = &meta->v3_name; - } else { - name = &meta->v2_name; - } - if (name->empty()) { - throw out_of_range("item does not exist"); - } - ret_tokens.emplace_back(*name); + ret_tokens.emplace_back(meta->name); } catch (const out_of_range&) { ret_tokens.emplace_back(string_printf("!ID:%06" PRIX32, primary_identifier)); @@ -341,16 +361,16 @@ std::string ItemNameIndex::describe_item( // For tools, add the amount (if applicable) } else if (item.data1[0] == 0x03) { - if (item.max_stack_size() > 1) { + if (item.max_stack_size(this->version) > 1) { ret_tokens.emplace_back(string_printf("x%hhu", item.data1[5])); } } string ret = join(ret_tokens, " "); - if (item_parameter_table) { + if (include_color_escapes) { if (item.is_s_rank_weapon()) { return "$C4" + ret; - } else if (item_parameter_table->is_item_rare(item)) { + } else if (this->item_parameter_table->is_item_rare(item)) { return "$C6" + ret; } else if (item.has_bonuses()) { return "$C2" + ret; @@ -362,32 +382,32 @@ std::string ItemNameIndex::describe_item( } } -ItemData ItemNameIndex::parse_item_description(Version version, const std::string& desc) const { +ItemData ItemNameIndex::parse_item_description(const std::string& desc) const { ItemData ret; try { - ret = this->parse_item_description_phase(version, desc, false); + ret = this->parse_item_description_phase(desc, false); } catch (const exception& e1) { try { - ret = this->parse_item_description_phase(version, desc, true); + ret = this->parse_item_description_phase(desc, true); } catch (const exception& e2) { try { ret = ItemData::from_data(parse_data_string(desc)); } catch (const exception& ed) { if (strcmp(e1.what(), e2.what())) { - throw runtime_error(string_printf("cannot parse item description \"%s\" in %s (as text 1: %s) (as text 2: %s) (as data: %s)", - desc.c_str(), name_for_enum(version), e1.what(), e2.what(), ed.what())); + throw runtime_error(string_printf("cannot parse item description \"%s\" (as text 1: %s) (as text 2: %s) (as data: %s)", + desc.c_str(), e1.what(), e2.what(), ed.what())); } else { - throw runtime_error(string_printf("cannot parse item description \"%s\" in %s (as text: %s) (as data: %s)", - desc.c_str(), name_for_enum(version), e1.what(), ed.what())); + throw runtime_error(string_printf("cannot parse item description \"%s\" (as text: %s) (as data: %s)", + desc.c_str(), e1.what(), ed.what())); } } } } - ret.enforce_min_stack_size(); + ret.enforce_min_stack_size(this->version); return ret; } -ItemData ItemNameIndex::parse_item_description_phase(Version version, const std::string& description, bool skip_special) const { +ItemData ItemNameIndex::parse_item_description_phase(const std::string& description, bool skip_special) const { ItemData ret; ret.data1d.clear(0); ret.id = 0xFFFFFFFF; @@ -448,24 +468,15 @@ ItemData ItemNameIndex::parse_item_description_phase(Version version, const std: } } - const map>* name_index; - if (is_v4(version)) { - name_index = &this->v4_name_index; - } else if (is_v3(version)) { - name_index = &this->v3_name_index; - } else { - name_index = &this->v2_name_index; - } - - auto name_it = name_index->lower_bound(desc); + auto name_it = this->name_index.lower_bound(desc); // Look up to 3 places before the lower bound. We have to do this to catch // cases like Sange vs. Sange & Yasha - if the input is like "Sange 0/...", // then we'll see Sange & Yasha first, which we should skip. size_t lookback = 0; while (lookback < 4) { - if (name_it != name_index->end() && desc.starts_with(name_it->first)) { + if (name_it != this->name_index.end() && desc.starts_with(name_it->first)) { break; - } else if (name_it == name_index->begin()) { + } else if (name_it == this->name_index.begin()) { throw runtime_error("no such item"); } else { name_it--; @@ -626,7 +637,7 @@ ItemData ItemNameIndex::parse_item_description_phase(Version version, const std: ret.data2[2] |= 0x40; } } else if (ret.data1[0] == 0x03) { - if (ret.max_stack_size() > 1) { + if (ret.max_stack_size(this->version) > 1) { if (starts_with(desc, "x")) { ret.data1[5] = stoul(desc.substr(1), nullptr, 10); } else { @@ -637,7 +648,7 @@ ItemData ItemNameIndex::parse_item_description_phase(Version version, const std: } if (is_wrapped) { - if (ret.is_stackable()) { + if (ret.is_stackable(this->version)) { throw runtime_error("stackable items cannot be wrapped"); } else { ret.data1[3] |= 0x40; diff --git a/src/ItemNameIndex.hh b/src/ItemNameIndex.hh index 26cee92f..451249d4 100644 --- a/src/ItemNameIndex.hh +++ b/src/ItemNameIndex.hh @@ -14,26 +14,36 @@ class ItemNameIndex { public: - ItemNameIndex(JSON&& v2_names, JSON&& v3_names, JSON&& v4_names); - - std::string describe_item( - Version version, - const ItemData& item, - std::shared_ptr item_parameter_table = nullptr) const; - ItemData parse_item_description(Version version, const std::string& description) const; - -private: - ItemData parse_item_description_phase(Version version, const std::string& description, bool skip_special) const; - struct ItemMetadata { uint32_t primary_identifier; - std::string v2_name; - std::string v3_name; - std::string v4_name; + std::string name; }; - std::unordered_map> primary_identifier_index; - std::map> v2_name_index; - std::map> v3_name_index; - std::map> v4_name_index; + ItemNameIndex( + Version version, + std::shared_ptr pmt, + const std::vector& name_coll); + + inline size_t entry_count() const { + return this->primary_identifier_index.size(); + } + + inline const std::unordered_map>& all_by_primary_identifier() const { + return this->primary_identifier_index; + } + inline const std::map>& all_by_name() const { + return this->name_index; + } + + std::string describe_item(const ItemData& item, bool include_color_escapes = false) const; + ItemData parse_item_description(const std::string& description) const; + +private: + ItemData parse_item_description_phase(const std::string& description, bool skip_special) const; + + Version version; + std::shared_ptr item_parameter_table; + + std::unordered_map> primary_identifier_index; + std::map> name_index; }; diff --git a/src/ItemParameterTable.cc b/src/ItemParameterTable.cc index 5dc747fc..af76cdb4 100644 --- a/src/ItemParameterTable.cc +++ b/src/ItemParameterTable.cc @@ -52,13 +52,13 @@ ItemParameterTable::ItemParameterTable(shared_ptr data, Version ve const ItemParameterTable::WeaponV4& ItemParameterTable::get_weapon(uint8_t data1_1, uint8_t data1_2) const { if (data1_1 >= this->num_weapon_classes) { - throw runtime_error("weapon ID out of range"); + throw out_of_range("weapon ID out of range"); } if (this->offsets_v4) { const auto& co = this->r.pget(this->offsets_v4->weapon_table + sizeof(ArrayRefLE) * data1_1); if (data1_2 >= co.count) { - throw runtime_error("weapon ID out of range"); + throw out_of_range("weapon ID out of range"); } return this->r.pget(co.offset + sizeof(WeaponV4) * data1_2); } @@ -67,12 +67,12 @@ const ItemParameterTable::WeaponV4& ItemParameterTable::get_weapon(uint8_t data1 try { return this->parsed_weapons.at(key); } catch (const std::out_of_range&) { - auto& def_v4 = this->parsed_weapons.emplace(key, WeaponV4{}).first->second; + WeaponV4 def_v4; if (this->offsets_v2) { const auto& co = this->r.pget(this->offsets_v2->weapon_table + sizeof(ArrayRefLE) * data1_1); if (data1_2 >= co.count) { - throw runtime_error("weapon ID out of range"); + throw out_of_range("weapon ID out of range"); } const auto& def_v2 = this->r.pget(co.offset + sizeof(WeaponV2) * data1_2); def_v4.base.id = def_v2.base.id; @@ -90,7 +90,7 @@ const ItemParameterTable::WeaponV4& ItemParameterTable::get_weapon(uint8_t data1 } else if (this->offsets_v3) { const auto& co = this->r.pget(this->offsets_v3->weapon_table + sizeof(ArrayRefBE) * data1_1); if (data1_2 >= co.count) { - throw runtime_error("weapon ID out of range"); + throw out_of_range("weapon ID out of range"); } const auto& def_v3 = this->r.pget>(co.offset + sizeof(WeaponV3) * data1_2); def_v4.base.id = def_v3.base.id.load(); @@ -126,19 +126,19 @@ const ItemParameterTable::WeaponV4& ItemParameterTable::get_weapon(uint8_t data1 throw logic_error("table is not v2, v3, or v4"); } - return def_v4; + return this->parsed_weapons.emplace(key, def_v4).first->second; } } const ItemParameterTable::ArmorOrShieldV4& ItemParameterTable::get_armor_or_shield(uint8_t data1_1, uint8_t data1_2) const { if ((data1_1 < 1) || (data1_1 > 2)) { - throw runtime_error("armor/shield class ID out of range"); + throw out_of_range("armor/shield class ID out of range"); } if (this->offsets_v4) { const auto& co = this->r.pget(this->offsets_v4->armor_table + sizeof(ArrayRefLE) * (data1_1 - 1)); if (data1_2 >= co.count) { - throw runtime_error("armor/shield ID out of range"); + throw out_of_range("armor/shield ID out of range"); } return this->r.pget(co.offset + sizeof(ArmorOrShieldV4) * data1_2); } @@ -151,15 +151,12 @@ const ItemParameterTable::ArmorOrShieldV4& ItemParameterTable::get_armor_or_shie } return ret; } catch (const std::out_of_range&) { - if (data1_2 >= parsed_vec.size()) { - parsed_vec.resize(data1_2 + 1); - } - auto& def_v4 = parsed_vec[data1_2]; + ArmorOrShieldV4 def_v4; if (this->offsets_v2) { const auto& co = this->r.pget(this->offsets_v2->armor_table + sizeof(ArrayRefLE) * (data1_1 - 1)); if (data1_2 >= co.count) { - throw runtime_error("armor/shield ID out of range"); + throw out_of_range("armor/shield ID out of range"); } const auto& def_v2 = this->r.pget(co.offset + sizeof(ArmorOrShieldV2) * data1_2); def_v4.base.id = def_v2.base.id; @@ -183,7 +180,7 @@ const ItemParameterTable::ArmorOrShieldV4& ItemParameterTable::get_armor_or_shie } else if (this->offsets_v3) { const auto& co = this->r.pget(this->offsets_v3->armor_table + sizeof(ArrayRefBE) * (data1_1 - 1)); if (data1_2 >= co.count) { - throw runtime_error("armor/shield ID out of range"); + throw out_of_range("armor/shield ID out of range"); } const auto& def_v3 = this->r.pget(co.offset + sizeof(ArmorOrShieldV3) * data1_2); def_v4.base.id = def_v3.base.id.load(); @@ -210,7 +207,11 @@ const ItemParameterTable::ArmorOrShieldV4& ItemParameterTable::get_armor_or_shie throw logic_error("table is not v2, v3, or v4"); } - return def_v4; + if (data1_2 >= parsed_vec.size()) { + parsed_vec.resize(data1_2 + 1); + } + parsed_vec[data1_2] = def_v4; + return parsed_vec[data1_2]; } } @@ -218,7 +219,7 @@ const ItemParameterTable::UnitV4& ItemParameterTable::get_unit(uint8_t data1_2) if (this->offsets_v4) { const auto& co = this->r.pget(this->offsets_v4->unit_table); if (data1_2 >= co.count) { - throw runtime_error("unit ID out of range"); + throw out_of_range("unit ID out of range"); } return this->r.pget(co.offset + sizeof(UnitV4) * data1_2); } @@ -230,15 +231,12 @@ const ItemParameterTable::UnitV4& ItemParameterTable::get_unit(uint8_t data1_2) } return ret; } catch (const std::out_of_range&) { - if (data1_2 >= this->parsed_units.size()) { - this->parsed_units.resize(data1_2 + 1); - } - auto& def_v4 = this->parsed_units[data1_2]; + UnitV4 def_v4; if (this->offsets_v2) { const auto& co = this->r.pget(this->offsets_v2->unit_table); if (data1_2 >= co.count) { - throw runtime_error("unit ID out of range"); + throw out_of_range("unit ID out of range"); } const auto& def_v2 = this->r.pget(co.offset + sizeof(UnitV2) * data1_2); def_v4.base.id = def_v2.base.id; @@ -249,7 +247,7 @@ const ItemParameterTable::UnitV4& ItemParameterTable::get_unit(uint8_t data1_2) } else if (this->offsets_v3) { const auto& co = this->r.pget(this->offsets_v3->unit_table); if (data1_2 >= co.count) { - throw runtime_error("unit ID out of range"); + throw out_of_range("unit ID out of range"); } const auto& def_v3 = this->r.pget(co.offset + sizeof(UnitV3) * data1_2); def_v4.base.id = def_v3.base.id.load(); @@ -263,7 +261,11 @@ const ItemParameterTable::UnitV4& ItemParameterTable::get_unit(uint8_t data1_2) throw logic_error("table is not v2, v3, or v4"); } - return def_v4; + if (data1_2 >= this->parsed_units.size()) { + this->parsed_units.resize(data1_2 + 1); + } + this->parsed_units[data1_2] = def_v4; + return this->parsed_units[data1_2]; } } @@ -271,7 +273,7 @@ const ItemParameterTable::MagV4& ItemParameterTable::get_mag(uint8_t data1_1) co if (this->offsets_v4) { const auto& co = this->r.pget(this->offsets_v4->mag_table); if (data1_1 >= co.count) { - throw runtime_error("mag ID out of range"); + throw out_of_range("mag ID out of range"); } return this->r.pget(co.offset + sizeof(MagV4) * data1_1); } @@ -283,15 +285,12 @@ const ItemParameterTable::MagV4& ItemParameterTable::get_mag(uint8_t data1_1) co } return ret; } catch (const std::out_of_range&) { - if (data1_1 >= this->parsed_mags.size()) { - this->parsed_mags.resize(data1_1 + 1); - } - auto& def_v4 = this->parsed_mags[data1_1]; + MagV4 def_v4; if (this->offsets_v2) { const auto& co = this->r.pget(this->offsets_v2->mag_table); if (data1_1 >= co.count) { - throw runtime_error("mag ID out of range"); + throw out_of_range("mag ID out of range"); } const auto& def_v2 = this->r.pget(co.offset + sizeof(MagV2) * data1_1); def_v4.base.id = def_v2.base.id; @@ -311,7 +310,7 @@ const ItemParameterTable::MagV4& ItemParameterTable::get_mag(uint8_t data1_1) co } else if (this->offsets_v3) { const auto& co = this->r.pget(this->offsets_v3->mag_table); if (data1_1 >= co.count) { - throw runtime_error("mag ID out of range"); + throw out_of_range("mag ID out of range"); } const auto& def_v3 = this->r.pget(co.offset + sizeof(MagV3) * data1_1); def_v4.base.id = def_v3.base.id.load(); @@ -334,19 +333,23 @@ const ItemParameterTable::MagV4& ItemParameterTable::get_mag(uint8_t data1_1) co throw logic_error("table is not v2, v3, or v4"); } - return def_v4; + if (data1_1 >= this->parsed_mags.size()) { + this->parsed_mags.resize(data1_1 + 1); + } + this->parsed_mags[data1_1] = def_v4; + return this->parsed_mags[data1_1]; } } const ItemParameterTable::ToolV4& ItemParameterTable::get_tool(uint8_t data1_1, uint8_t data1_2) const { if (data1_1 >= this->num_tool_classes) { - throw runtime_error("tool class ID out of range"); + throw out_of_range("tool class ID out of range"); } if (this->offsets_v4) { const auto& co = this->r.pget(this->offsets_v4->tool_table + sizeof(ArrayRefLE) * data1_1); if (data1_2 >= co.count) { - throw runtime_error("tool ID out of range"); + throw out_of_range("tool ID out of range"); } return this->r.pget(co.offset + sizeof(ToolV4) * data1_2); } @@ -355,12 +358,12 @@ const ItemParameterTable::ToolV4& ItemParameterTable::get_tool(uint8_t data1_1, try { return this->parsed_tools.at(key); } catch (const std::out_of_range&) { - auto& def_v4 = this->parsed_tools.emplace(key, ToolV4{}).first->second; + ToolV4 def_v4; if (this->offsets_v2) { const auto& co = this->r.pget(this->offsets_v2->tool_table + sizeof(ArrayRefLE) * data1_1); if (data1_2 >= co.count) { - throw runtime_error("tool ID out of range"); + throw out_of_range("tool ID out of range"); } const auto& def_v2 = this->r.pget(co.offset + sizeof(ToolV2) * data1_2); def_v4.base.id = def_v2.base.id; @@ -372,7 +375,7 @@ const ItemParameterTable::ToolV4& ItemParameterTable::get_tool(uint8_t data1_1, } else if (this->offsets_v3) { const auto& co = this->r.pget(this->offsets_v3->tool_table + sizeof(ArrayRefBE) * data1_1); if (data1_2 >= co.count) { - throw runtime_error("tool ID out of range"); + throw out_of_range("tool ID out of range"); } const auto& def_v3 = this->r.pget(co.offset + sizeof(ToolV3) * data1_2); def_v4.base.id = def_v3.base.id.load(); @@ -387,7 +390,7 @@ const ItemParameterTable::ToolV4& ItemParameterTable::get_tool(uint8_t data1_1, throw logic_error("table is not v2, v3, or v4"); } - return def_v4; + return this->parsed_tools.emplace(key, def_v4).first->second; } } @@ -472,10 +475,10 @@ float ItemParameterTable::get_sale_divisor(uint8_t data1_0, uint8_t data1_1) con const ItemParameterTable::MagFeedResult& ItemParameterTable::get_mag_feed_result( uint8_t table_index, uint8_t item_index) const { if (table_index >= 8) { - throw runtime_error("invalid mag feed table index"); + throw out_of_range("invalid mag feed table index"); } if (item_index >= 11) { - throw runtime_error("invalid mag feed item index"); + throw out_of_range("invalid mag feed item index"); } uint32_t offset; @@ -521,7 +524,7 @@ uint8_t ItemParameterTable::get_special_stars(uint8_t det) const { const ItemParameterTable::Special& ItemParameterTable::get_special(uint8_t special) const { special &= 0x3F; if (special >= this->num_specials) { - throw runtime_error("invalid special index"); + throw out_of_range("invalid special index"); } if (this->offsets_v2) { @@ -545,10 +548,10 @@ const ItemParameterTable::Special& ItemParameterTable::get_special(uint8_ uint8_t ItemParameterTable::get_max_tech_level(uint8_t char_class, uint8_t tech_num) const { if (char_class >= 12) { - throw runtime_error("invalid character class"); + throw out_of_range("invalid character class"); } if (tech_num >= 19) { - throw runtime_error("invalid technique number"); + throw out_of_range("invalid technique number"); } if (this->offsets_v2) { @@ -762,7 +765,7 @@ std::pair ItemParameterTable::get_ uint32_t base_offset, uint8_t event_number) const { const auto& co = this->r.pget>(base_offset); if (event_number >= co.count) { - throw runtime_error("invalid event number"); + throw out_of_range("invalid event number"); } const auto& event_co = this->r.pget>(co.offset + sizeof(ArrayRef) * event_number); const auto* defs = &this->r.pget(event_co.offset, event_co.count * sizeof(EventItem)); diff --git a/src/ItemParameterTable.hh b/src/ItemParameterTable.hh index 64ac7644..68ada94d 100644 --- a/src/ItemParameterTable.hh +++ b/src/ItemParameterTable.hh @@ -55,7 +55,8 @@ public: uint8_t photon = 0; uint8_t special = 0; uint8_t ata = 0; - parray unknown_a9; + uint8_t stat_boost = 0; // TODO: This could be larger (16 or 32 bits) + parray unknown_a9; } __attribute__((packed)); template @@ -368,6 +369,9 @@ private: /* 40 / 5704 */ le_uint32_t shield_effect_table; // -> [8-byte structs] } __attribute__((packed)); + // TODO: The GC NTE ItemPMT format is intermediate between V2 and V3 - the + // Offsets struct is 0x50 bytes. Figure it out and add support here. + template struct TableOffsetsV3V4 { using U32T = typename std::conditional::type; diff --git a/src/Items.cc b/src/Items.cc index 99d6421f..572bcbc5 100644 --- a/src/Items.cc +++ b/src/Items.cc @@ -23,7 +23,7 @@ void player_use_item(shared_ptr c, size_t item_index, shared_ptritem_parameter_table_for_version(c->version()); + auto item_parameter_table = s->item_parameter_table(c->version()); uint8_t max_level = item_parameter_table->get_max_tech_level(player->disp.visual.char_class, item.data.data1[4]); if (item.data.data1[2] > max_level) { throw runtime_error("technique level too high"); @@ -43,7 +43,7 @@ void player_use_item(shared_ptr c, size_t item_index, shared_ptritem_parameter_table_for_version(c->version()); + auto item_parameter_table = s->item_parameter_table(c->version()); auto weapon_def = item_parameter_table->get_weapon(weapon.data.data1[1], weapon.data.data1[2]); if (weapon.data.data1[3] >= weapon_def.max_grind) { throw runtime_error("weapon already at maximum grind"); @@ -111,9 +111,9 @@ void player_use_item(shared_ptr c, size_t item_index, shared_ptrversion())) { // Unwrap present - item.data.unwrap(); + item.data.unwrap(c->version()); should_delete_item = false; } else if (item_identifier == 0x003300) { @@ -168,7 +168,7 @@ void player_use_item(shared_ptr c, size_t item_index, shared_ptritem_parameter_table_for_version(c->version()); + auto item_parameter_table = s->item_parameter_table(c->version()); auto table = item_parameter_table->get_event_items(item.data.data1[2]); size_t sum = 0; for (size_t z = 0; z < table.second; z++) { @@ -207,7 +207,7 @@ void player_use_item(shared_ptr c, size_t item_index, shared_ptritem_parameter_table_for_version(c->version()); + auto item_parameter_table = s->item_parameter_table(c->version()); const auto& combo = item_parameter_table->get_item_combination(item.data, inv_item.data); if (combo.char_class != 0xFF && combo.char_class != player->disp.visual.char_class) { throw runtime_error("item combination requires specific char_class"); @@ -250,7 +250,7 @@ void player_use_item(shared_ptr c, size_t item_index, shared_ptrremove_item(item.data.id, 1, !is_v4(c->version())); + player->remove_item(item.data.id, 1, c->version()); } } @@ -497,7 +497,7 @@ void player_feed_mag(std::shared_ptr c, size_t mag_item_index, size_t fe apply_mag_feed_result( player->inventory.items[mag_item_index].data, player->inventory.items[fed_item_index].data, - s->item_parameter_table_for_version(c->version()), + s->item_parameter_table(c->version()), s->mag_evolution_table, player->disp.visual.char_class, player->disp.visual.section_id, diff --git a/src/Lobby.cc b/src/Lobby.cc index 7e2abc77..7f60d06b 100644 --- a/src/Lobby.cc +++ b/src/Lobby.cc @@ -251,7 +251,7 @@ void Lobby::create_item_creator() { s->tool_random_set, s->weapon_random_sets.at(this->difficulty), s->tekker_adjustment_set, - s->item_parameter_table_for_version(this->base_version), + s->item_parameter_table(this->base_version), this->base_version, this->episode, (this->mode == GameMode::SOLO) ? GameMode::NORMAL : this->mode, @@ -351,7 +351,7 @@ void Lobby::load_maps() { this->log.info("Generated objects list (%zu entries):", this->map->objects.size()); for (size_t z = 0; z < this->map->objects.size(); z++) { - string o_str = this->map->objects[z].str(s->item_name_index); + string o_str = this->map->objects[z].str(); this->log.info("(K-%zX) %s", z, o_str.c_str()); } this->log.info("Generated enemies list (%zu entries):", this->map->enemies.size()); @@ -483,7 +483,16 @@ void Lobby::add_client(shared_ptr c, ssize_t required_client_id) { } } - this->assign_inventory_and_bank_item_ids(c); + // If this is not a game or the joining client is the leader, they will assign + // their item IDs BEFORE they process any inbound commands (therefore a 6x6D + // command, which we will send during loading, should reflect the item state + // AFTER their IDs are assigned). If the joining client is not the leader, + // they will not assign their item IDs until they receive a 6x71 command, + // which is sent AFTER the 6x6D command, so the 6x6D should reflect the item + // state BEFORE their IDs are assigned. (In the latter case, we'll assign the + // IDs for real when they send a 6F command, or 6x1F equivalent in the case of + // DC NTE and 11/2000.) + this->assign_inventory_and_bank_item_ids(c, (!this->is_game() || (c->lobby_client_id == this->leader_id))); // On BB, we send artificial flag state to fix an Episode 2 bug where the // CCA door lock state is overwritten by quests. @@ -710,17 +719,22 @@ void Lobby::on_item_id_generated_externally(uint32_t item_id) { } } -void Lobby::assign_inventory_and_bank_item_ids(shared_ptr c) { +void Lobby::assign_inventory_and_bank_item_ids(shared_ptr c, bool consume_ids) { auto p = c->character(); + uint32_t orig_next_item_id = this->next_item_id_for_client.at(c->lobby_client_id); for (size_t z = 0; z < p->inventory.num_items; z++) { p->inventory.items[z].data.id = this->generate_item_id(c->lobby_client_id); } - if (c->log.info("Assigned inventory item IDs")) { - p->print_inventory(stderr, c->version(), c->require_server_state()->item_name_index); + if (!consume_ids) { + this->next_item_id_for_client[c->lobby_client_id] = orig_next_item_id; + } + + if (c->log.info("Assigned inventory item IDs%s", consume_ids ? "" : " but did not mark IDs as used")) { + c->print_inventory(stderr); if (p->bank.num_items) { p->bank.assign_ids(0x99000000 + (c->lobby_client_id << 20)); c->log.info("Assigned bank item IDs"); - p->print_bank(stderr, c->version(), c->require_server_state()->item_name_index); + c->print_bank(stderr); } else { c->log.info("Bank is empty"); } diff --git a/src/Lobby.hh b/src/Lobby.hh index 32ebf296..1034fe59 100644 --- a/src/Lobby.hh +++ b/src/Lobby.hh @@ -237,7 +237,7 @@ struct Lobby : public std::enable_shared_from_this { uint32_t generate_item_id(uint8_t client_id); void on_item_id_generated_externally(uint32_t item_id); - void assign_inventory_and_bank_item_ids(std::shared_ptr c); + void assign_inventory_and_bank_item_ids(std::shared_ptr c, bool consume_ids); QuestIndex::IncludeCondition quest_include_condition() const; diff --git a/src/Main.cc b/src/Main.cc index df0f7f23..c92af79e 100644 --- a/src/Main.cc +++ b/src/Main.cc @@ -43,8 +43,7 @@ #include "ServerState.hh" #include "StaticGameData.hh" #include "Text.hh" -#include "TextArchive.hh" -#include "UnicodeTextSet.hh" +#include "TextIndex.hh" using namespace std; @@ -955,7 +954,7 @@ Action a_decode_gci( auto decoded = decode_gci_data(read_input_data(args), num_threads, dec_seed, skip_checksum); save_file(input_filename + ".dec", decoded); }); -Action a_decode_vmg( +Action a_decode_vms( "decode-vms", nullptr, +[](Arguments& args) { string input_filename = args.get(1, false); if (input_filename.empty() || (input_filename == "-")) { @@ -1171,25 +1170,35 @@ Action a_decode_sjis( }); Action a_decode_text_archive( - "decode-text-archive", nullptr, +[](Arguments& args) { + "decode-text-archive", "\ + decode-text-archive [INPUT-FILENAME [OUTPUT-FILENAME]]\n\ + Decode a text archive to JSON. --collections=NUM_COLLECTIONS is given,\n\ + expects a fixed number of collections in the input. If --has-pr3 is given,\n\ + expects the input not to have a REL footer.\n", + +[](Arguments& args) { string data = read_input_data(args); - TextArchive a(data, args.get("big-endian")); - JSON j = a.json(); + + unique_ptr ts; + size_t collection_count = args.get("collections", 0); + if (collection_count) { + ts = make_unique(data, collection_count, !args.get("has-pr3")); + } else { + ts = make_unique(data, args.get("big-endian")); + } + JSON j = ts->json(); string out_data = j.serialize(JSON::SerializeOption::FORMAT); write_output_data(args, out_data.data(), out_data.size(), "json"); }); Action a_encode_text_archive( "encode-text-archive", "\ decode-text-archive [INPUT-FILENAME [OUTPUT-FILENAME]]\n\ - encode-text-archive [INPUT-FILENAME [OUTPUT-FILENAME]]\n\ - Decode a text archive (e.g. TextEnglish.pr2) to JSON for easy editing, or\n\ - encode a JSON file to a text archive.\n", + Encode a text archive. Currently only supports GC and Xbox format.\n", +[](Arguments& args) { const string& input_filename = args.get(1, false); const string& output_filename = args.get(2, false); auto json = JSON::parse(read_input_data(args)); - TextArchive a(json); + BinaryTextAndKeyboardsSet a(json); auto result = a.serialize(args.get("big-endian")); if (output_filename.empty()) { if (input_filename.empty() || (input_filename == "-")) { @@ -1214,14 +1223,8 @@ Action a_encode_text_archive( Action a_decode_unicode_text_set( "decode-unicode-text-set", nullptr, +[](Arguments& args) { - auto collections = parse_unicode_text_set(read_input_data(args)); - JSON j = JSON::list(); - for (const auto& collection : collections) { - JSON& coll_j = j.emplace_back(JSON::list()); - for (const auto& s : collection) { - coll_j.emplace_back(s); - } - } + UnicodeTextSet uts(read_input_data(args)); + JSON j = uts.json(); string out_data = j.serialize(JSON::SerializeOption::FORMAT); write_output_data(args, out_data.data(), out_data.size(), "json"); }); @@ -1232,15 +1235,8 @@ Action a_encode_unicode_text_set( Decode a Unicode text set (e.g. unitxt_e.prs) to JSON for easy editing, or\n\ encode a JSON file to a Unicode text set.\n", +[](Arguments& args) { - auto json = JSON::parse(read_input_data(args)); - vector> collections; - for (const auto& coll_json : json.as_list()) { - auto& collection = collections.emplace_back(); - for (const auto& s_json : coll_json->as_list()) { - collection.emplace_back(std::move(s_json->as_string())); - } - } - string encoded = serialize_unicode_text_set(collections); + UnicodeTextSet uts(JSON::parse(read_input_data(args))); + string encoded = uts.serialize(); write_output_data(args, encoded.data(), encoded.size(), "prs"); }); @@ -1256,30 +1252,22 @@ Action a_decode_word_select_set( auto version = get_cli_version(args); string unitxt_filename = args.get("unitxt"); - vector unitxt_collection; + const vector* unitxt_collection; if (!unitxt_filename.empty()) { - vector> unitxt_data; + unique_ptr uts; if (ends_with(unitxt_filename, ".prs")) { - unitxt_data = parse_unicode_text_set(load_file(unitxt_filename)); + uts = make_unique(load_file(unitxt_filename)); } else if (ends_with(unitxt_filename, ".json")) { - auto json = JSON::parse(load_file(unitxt_filename)); - for (const auto& coll_it : json.as_list()) { - auto& coll = unitxt_data.emplace_back(); - for (const auto& str_it : coll_it->as_list()) { - coll.emplace_back(str_it->as_string()); - } - } + uts = make_unique(JSON::parse(load_file(unitxt_filename))); } else { throw runtime_error("unitxt filename must end in .prs or .json"); } - if (version == Version::BB_V4) { - unitxt_collection = std::move(unitxt_data.at(0)); - } else { - unitxt_collection = std::move(unitxt_data.at(35)); - } + unitxt_collection = &uts->get((version == Version::BB_V4) ? 0 : 35); + } else { + unitxt_collection = nullptr; } - WordSelectSet ws(read_input_data(args), version, &unitxt_collection, args.get("japanese")); + WordSelectSet ws(read_input_data(args), version, unitxt_collection, args.get("japanese")); ws.print(stdout); }); Action a_print_word_select_table( @@ -1289,17 +1277,18 @@ Action a_print_word_select_table( given, prints the table sorted by token ID for that version. If no version\n\ option is given, prints the token table sorted by canonical name.\n", +[](Arguments& args) { - auto table = ServerState::load_word_select_table_from_system(); - Version v = Version::UNKNOWN; + ServerState s; + s.load_objects_and_upstream_dependents("word_select_table"); + Version v; try { v = get_cli_version(args); } catch (const runtime_error&) { + v = Version::UNKNOWN; } - if (v != Version::UNKNOWN) { - table->print_index(stdout, v); + s.word_select_table->print_index(stdout, v); } else { - table->print(stdout); + s.word_select_table->print(stdout); } }); @@ -1343,21 +1332,20 @@ Action a_convert_rare_item_set( .afs (PSO V2 little-endian AFS archive)\n\ .rel (Schtserv rare table; cannot be used in output filename)\n", +[](Arguments& args) { - auto name_index = make_shared( - JSON::parse(load_file("system/item-tables/names-v2.json")), - JSON::parse(load_file("system/item-tables/names-v3.json")), - JSON::parse(load_file("system/item-tables/names-v4.json"))); + auto version = get_cli_version(args); + + ServerState s; + s.load_objects_and_upstream_dependents("item_name_indexes"); string input_filename = args.get(1, false); if (input_filename.empty() || (input_filename == "-")) { throw runtime_error("input filename must be given"); } - auto version = get_cli_version(args); auto data = make_shared(read_input_data(args)); shared_ptr rs; if (ends_with(input_filename, ".json")) { - rs = make_shared(JSON::parse(*data), version, name_index); + rs = make_shared(JSON::parse(*data), s.item_name_index(version)); } else if (ends_with(input_filename, ".gsl")) { rs = make_shared(GSLArchive(data, false), false); } else if (ends_with(input_filename, ".gslb")) { @@ -1372,9 +1360,9 @@ Action a_convert_rare_item_set( string output_filename = args.get(2, false); if (output_filename.empty() || (output_filename == "-")) { - rs->print_all_collections(stdout, version, name_index); + rs->print_all_collections(stdout, s.item_name_index(version)); } else if (ends_with(output_filename, ".json")) { - string data = rs->serialize_json(version, name_index); + string data = rs->serialize_json(s.item_name_index(version)); write_output_data(args, data.data(), data.size(), nullptr); } else if (ends_with(output_filename, ".gsl")) { string data = rs->serialize_gsl(args.get("big-endian")); @@ -1401,20 +1389,13 @@ Action a_describe_item( string description = args.get(1); auto version = get_cli_version(args); - auto name_index = make_shared( - JSON::parse(load_file("system/item-tables/names-v2.json")), - JSON::parse(load_file("system/item-tables/names-v3.json")), - JSON::parse(load_file("system/item-tables/names-v4.json"))); - auto pmt_data_v2 = make_shared(prs_decompress(load_file("system/item-tables/ItemPMT-v2.prs"))); - auto pmt_v2 = make_shared(pmt_data_v2, ItemParameterTable::Version::V2); - auto pmt_data_v3 = make_shared(prs_decompress(load_file("system/item-tables/ItemPMT-gc.prs"))); - auto pmt_v3 = make_shared(pmt_data_v3, ItemParameterTable::Version::V3); - auto pmt_data_v4 = make_shared(prs_decompress(load_file("system/item-tables/ItemPMT-bb.prs"))); - auto pmt_v4 = make_shared(pmt_data_v4, ItemParameterTable::Version::V4); + ServerState s; + s.load_objects_and_upstream_dependents("item_name_indexes"); + auto name_index = s.item_name_index(version); - ItemData item = name_index->parse_item_description(version, description); + ItemData item = name_index->parse_item_description(description); - string desc = name_index->describe_item(version, item); + string desc = name_index->describe_item(item); log_info("Data (decoded): %02hhX%02hhX%02hhX%02hhX %02hhX%02hhX%02hhX%02hhX %02hhX%02hhX%02hhX%02hhX -------- %02hhX%02hhX%02hhX%02hhX", item.data1[0], item.data1[1], item.data1[2], item.data1[3], item.data1[4], item.data1[5], item.data1[6], item.data1[7], @@ -1422,7 +1403,7 @@ Action a_describe_item( item.data2[0], item.data2[1], item.data2[2], item.data2[3]); ItemData item_v1 = item; - item_v1.encode_for_version(Version::PC_V2, pmt_v2); + item_v1.encode_for_version(Version::PC_V2, s.item_parameter_table(Version::PC_V2)); ItemData item_v1_decoded = item_v1; item_v1_decoded.decode_for_version(Version::PC_V2); @@ -1441,7 +1422,7 @@ Action a_describe_item( } ItemData item_gc = item; - item_gc.encode_for_version(Version::GC_V3, pmt_v3); + item_gc.encode_for_version(Version::GC_V3, s.item_parameter_table(Version::GC_V3)); ItemData item_gc_decoded = item_gc; item_gc_decoded.decode_for_version(Version::GC_V3); @@ -1461,11 +1442,49 @@ Action a_describe_item( log_info("Description: %s", desc.c_str()); - size_t purchase_price = pmt_v4->price_for_item(item); + size_t purchase_price = s.item_parameter_table(Version::BB_V4)->price_for_item(item); size_t sale_price = purchase_price >> 3; log_info("Purchase price: %zu; sale price: %zu", purchase_price, sale_price); }); +Action a_name_all_items( + "name-all-items", nullptr, +[](Arguments&) { + ServerState s; + s.load_objects_and_upstream_dependents("item_name_indexes"); + + set all_primary_identifiers; + for (const auto& index : s.item_name_indexes) { + if (index) { + for (const auto& it : index->all_by_primary_identifier()) { + all_primary_identifiers.emplace(it.first); + } + } + } + + fprintf(stderr, "IDENT :"); + for (size_t v_s = 0; v_s < NUM_VERSIONS; v_s++) { + Version version = static_cast(v_s); + const auto& index = s.item_name_indexes.at(v_s); + if (index) { + fprintf(stderr, " %30s", name_for_enum(version)); + } + } + fputc('\n', stderr); + + for (uint32_t primary_identifier : all_primary_identifiers) { + fprintf(stderr, "%06" PRIX32 ":", primary_identifier); + for (size_t v_s = 0; v_s < NUM_VERSIONS; v_s++) { + const auto& index = s.item_name_indexes.at(v_s); + if (index) { + ItemData item(static_cast(primary_identifier) << 40); + string name = index->describe_item(item); + fprintf(stderr, " %30s", name.c_str()); + } + } + fputc('\n', stderr); + } + }); + Action a_show_ep3_cards( "show-ep3-cards", "\ show-ep3-cards\n\ @@ -1474,24 +1493,20 @@ Action a_show_ep3_cards( +[](Arguments& args) { bool one_line = args.get("one-line"); - Episode3::CardIndex card_index( - "system/ep3/card-definitions.mnr", - "system/ep3/card-definitions.mnrd", - "system/ep3/card-text.mnr", - "system/ep3/card-text.mnrd", - "system/ep3/card-dice-text.mnr", - "system/ep3/card-dice-text.mnrd"); - unique_ptr text_english; + ServerState s; + s.load_objects_and_upstream_dependents("ep3_data"); + + unique_ptr text_english; try { JSON json = JSON::parse(load_file("system/ep3/text-english.json")); - text_english = make_unique(json); + text_english = make_unique(json); } catch (const exception& e) { } - auto card_ids = card_index.all_ids(); + auto card_ids = s.ep3_card_index->all_ids(); log_info("%zu card definitions", card_ids.size()); for (uint32_t card_id : card_ids) { - auto entry = card_index.definition_for_id(card_id); + auto entry = s.ep3_card_index->definition_for_id(card_id); string s = entry->def.str(one_line, text_english.get()); if (one_line) { fprintf(stdout, "%s\n", s.c_str()); @@ -1525,18 +1540,14 @@ Action a_generate_ep3_cards_html( +[](Arguments& args) { size_t num_threads = args.get("threads", 0); - Episode3::CardIndex card_index( - "system/ep3/card-definitions.mnr", - "system/ep3/card-definitions.mnrd", - "system/ep3/card-text.mnr", - "system/ep3/card-text.mnrd", - "system/ep3/card-dice-text.mnr", - "system/ep3/card-dice-text.mnrd"); - unique_ptr text_english; + ServerState s; + s.load_objects_and_upstream_dependents("ep3_data"); + s.load_objects_and_upstream_dependents("text_index"); + + shared_ptr text_english; try { - JSON json = JSON::parse(load_file("system/ep3/text-english.json")); - text_english = make_unique(json); - } catch (const exception& e) { + text_english = s.text_index->get(Version::GC_EP3, 1); + } catch (const out_of_range&) { } struct CardInfo { @@ -1553,11 +1564,11 @@ Action a_generate_ep3_cards_html( } }; vector infos; - for (uint32_t card_id : card_index.all_ids()) { + for (uint32_t card_id : s.ep3_card_index->all_ids()) { if (infos.size() <= card_id) { infos.resize(card_id + 1); } - infos[card_id].ce = card_index.definition_for_id(card_id); + infos[card_id].ce = s.ep3_card_index->definition_for_id(card_id); } for (const auto& filename : list_directory_sorted("system/ep3/cardtex")) { if ((filename[0] == 'C' || filename[0] == 'M' || filename[0] == 'L') && (filename[1] == '_')) { @@ -1665,20 +1676,21 @@ Action a_show_ep3_maps( human-readable format.\n", +[](Arguments&) { config_log.info("Collecting Episode 3 data"); - Episode3::MapIndex map_index("system/ep3/maps"); - Episode3::CardIndex card_index("system/ep3/card-definitions.mnr", "system/ep3/card-definitions.mnrd"); - auto map_ids = map_index.all_numbers(); + ServerState s; + s.load_objects_and_upstream_dependents("ep3_data"); + + auto map_ids = s.ep3_map_index->all_numbers(); log_info("%zu maps", map_ids.size()); for (uint32_t map_id : map_ids) { - auto map = map_index.for_number(map_id); + auto map = s.ep3_map_index->for_number(map_id); const auto& vms = map->all_versions(); for (size_t language = 0; language < vms.size(); language++) { if (!vms[language]) { continue; } - string s = vms[language]->map->str(&card_index, language); - fprintf(stdout, "(%c) %s\n", char_for_language_code(language), s.c_str()); + string map_s = vms[language]->map->str(s.ep3_card_index.get(), language); + fprintf(stdout, "(%c) %s\n", char_for_language_code(language), map_s.c_str()); } } }); @@ -1689,26 +1701,21 @@ Action a_show_battle_params( Print the Blue Burst battle parameters from the system/blueburst directory\n\ in a human-readable format.\n", +[](Arguments&) { - BattleParamsIndex index( - make_shared(load_file("system/blueburst/BattleParamEntry_on.dat")), - make_shared(load_file("system/blueburst/BattleParamEntry_lab_on.dat")), - make_shared(load_file("system/blueburst/BattleParamEntry_ep4_on.dat")), - make_shared(load_file("system/blueburst/BattleParamEntry.dat")), - make_shared(load_file("system/blueburst/BattleParamEntry_lab.dat")), - make_shared(load_file("system/blueburst/BattleParamEntry_ep4.dat"))); + ServerState s; + s.load_objects_and_upstream_dependents("battle_params"); fprintf(stdout, "Episode 1 multi\n"); - index.get_table(false, Episode::EP1).print(stdout); + s.battle_params->get_table(false, Episode::EP1).print(stdout); fprintf(stdout, "Episode 1 solo\n"); - index.get_table(true, Episode::EP1).print(stdout); + s.battle_params->get_table(true, Episode::EP1).print(stdout); fprintf(stdout, "Episode 2 multi\n"); - index.get_table(false, Episode::EP2).print(stdout); + s.battle_params->get_table(false, Episode::EP2).print(stdout); fprintf(stdout, "Episode 2 solo\n"); - index.get_table(true, Episode::EP2).print(stdout); + s.battle_params->get_table(true, Episode::EP2).print(stdout); fprintf(stdout, "Episode 4 multi\n"); - index.get_table(false, Episode::EP4).print(stdout); + s.battle_params->get_table(false, Episode::EP4).print(stdout); fprintf(stdout, "Episode 4 solo\n"); - index.get_table(true, Episode::EP4).print(stdout); + s.battle_params->get_table(true, Episode::EP4).print(stdout); }); Action a_parse_object_graph( @@ -1827,6 +1834,33 @@ Action a_diff_dol_files( } }); +Action a_replay_ep3_battle_commands( + "replay-ep3-battle-commands", nullptr, +[](Arguments& args) { + ServerState s; + s.load_objects_and_upstream_dependents("ep3_data"); + + auto random_crypt = make_shared(args.get("seed", 0, Arguments::IntFormat::HEX)); + Episode3::Server::Options options = { + .card_index = s.ep3_card_index, + .map_index = s.ep3_map_index, + .behavior_flags = 0x0092, + .random_crypt = random_crypt, + .tournament = nullptr, + .trap_card_ids = {}, + }; + auto server = make_shared(nullptr, std::move(options)); + server->init(); + + auto input = read_input_data(args); + auto lines = split(input, '\n'); + for (const auto& line : lines) { + string data = parse_data_string(line); + if (!data.empty()) { + server->on_server_data_input(nullptr, data); + } + } + }); + Action a_run_server_replay_log( "", nullptr, +[](Arguments& args) { if (!isdir("system/players")) { @@ -1852,13 +1886,17 @@ Action a_run_server_replay_log( shared_ptr base(event_base_new(), event_base_free); auto state = make_shared(base, config_filename, is_replay); - state->init(); + state->load_objects_and_downstream_dependents("all"); shared_ptr dns_server; if (state->dns_server_port && !is_replay) { - config_log.info("Starting DNS server on port %hu", state->dns_server_port); + if (!state->dns_server_addr.empty()) { + config_log.info("Starting DNS server on %s:%hu", state->dns_server_addr.c_str(), state->dns_server_port); + } else { + config_log.info("Starting DNS server on port %hu", state->dns_server_port); + } dns_server = make_shared(base, state->local_address, state->external_address); - dns_server->listen("", state->dns_server_port); + dns_server->listen(state->dns_server_addr, state->dns_server_port); } else { config_log.info("DNS server is disabled"); } @@ -1900,14 +1938,14 @@ Action a_run_server_replay_log( auto [ss, size] = make_sockaddr_storage( state->proxy_destination_patch.first, state->proxy_destination_patch.second); - state->proxy_server->listen(pc->port, pc->version, &ss); + state->proxy_server->listen(pc->addr, pc->port, pc->version, &ss); } else if (is_v4(pc->version)) { auto [ss, size] = make_sockaddr_storage( state->proxy_destination_bb.first, state->proxy_destination_bb.second); - state->proxy_server->listen(pc->port, pc->version, &ss); + state->proxy_server->listen(pc->addr, pc->port, pc->version, &ss); } else { - state->proxy_server->listen(pc->port, pc->version); + state->proxy_server->listen(pc->addr, pc->port, pc->version); } } } else { @@ -1916,7 +1954,7 @@ Action a_run_server_replay_log( state->game_server = make_shared(base, state); } string spec = string_printf("T-%hu-%s-%s-%s", pc->port, name_for_enum(pc->version), pc->name.c_str(), name_for_enum(pc->behavior)); - state->game_server->listen(spec, "", pc->port, pc->version, pc->behavior); + state->game_server->listen(spec, pc->addr, pc->port, pc->version, pc->behavior); } } diff --git a/src/Map.cc b/src/Map.cc index 941323aa..3aaefbae 100644 --- a/src/Map.cc +++ b/src/Map.cc @@ -113,17 +113,10 @@ string Map::Enemy::str() const { this->source_index, name_for_enum(this->type), this->floor, this->state_flags, this->last_hit_by_client_id); } -string Map::Object::str(shared_ptr name_index) const { +string Map::Object::str() const { if (this->param1 <= 0.0f) { - string item_name; - try { - auto item = ItemCreator::base_item_for_specialized_box(this->param4, this->param5, this->param6); - item_name = name_index ? name_index->describe_item(Version::BB_V4, item) : item.hex(); - } catch (const exception& e) { - item_name = string_printf("(failed: %s)", e.what()); - } - return string_printf("[Map::Object source %zX %04hX @%04hX p1=%g (specialized: %s) floor=%02hhX item_drop_checked=%s]", - this->source_index, this->base_type, this->section, this->param1, item_name.c_str(), this->floor, this->item_drop_checked ? "true" : "false"); + return string_printf("[Map::Object source %zX %04hX @%04hX p1=%g (specialized: %08" PRIX32 " %08" PRIX32 " %08" PRIX32 ") floor=%02hhX item_drop_checked=%s]", + this->source_index, this->base_type, this->section, this->param1, this->param4, this->param5, this->param6, this->floor, this->item_drop_checked ? "true" : "false"); } else { return string_printf("[Map::Object source %zX %04hX @%04hX p1=%g (generic) p456=[%08" PRIX32 " %08" PRIX32 " %08" PRIX32 "] floor=%02hhX item_drop_checked=%s]", this->source_index, this->base_type, this->section, this->param1, this->param4, this->param5, this->param6, diff --git a/src/Map.hh b/src/Map.hh index 9ac77338..a3946eab 100644 --- a/src/Map.hh +++ b/src/Map.hh @@ -10,7 +10,6 @@ #include #include "BattleParamsIndex.hh" -#include "ItemNameIndex.hh" #include "PSOEncryption.hh" #include "StaticGameData.hh" #include "Text.hh" @@ -217,7 +216,7 @@ struct Map { uint8_t floor; bool item_drop_checked; - std::string str(std::shared_ptr name_index) const; + std::string str() const; }; struct Enemy { diff --git a/src/PlayerSubordinates.cc b/src/PlayerSubordinates.cc index 9d8a6917..9f76eaed 100644 --- a/src/PlayerSubordinates.cc +++ b/src/PlayerSubordinates.cc @@ -450,7 +450,7 @@ PlayerRecordsBB_Challenge::operator PlayerRecordsV3_Challenge() const { return ret; } -void PlayerBank::add_item(const ItemData& item) { +void PlayerBank::add_item(const ItemData& item, Version version) { uint32_t pid = item.primary_identifier(); if (pid == MESETA_IDENTIFIER) { @@ -461,7 +461,7 @@ void PlayerBank::add_item(const ItemData& item) { return; } - size_t combine_max = item.max_stack_size(); + size_t combine_max = item.max_stack_size(version); if (combine_max > 1) { size_t y; for (y = 0; y < this->num_items; y++) { @@ -486,17 +486,17 @@ void PlayerBank::add_item(const ItemData& item) { } auto& last_item = this->items[this->num_items]; last_item.data = item; - last_item.amount = (item.max_stack_size() > 1) ? item.data1[5] : 1; + last_item.amount = (item.max_stack_size(version) > 1) ? item.data1[5] : 1; last_item.present = 1; this->num_items++; } -ItemData PlayerBank::remove_item(uint32_t item_id, uint32_t amount) { +ItemData PlayerBank::remove_item(uint32_t item_id, uint32_t amount, Version version) { size_t index = this->find_item(item_id); auto& bank_item = this->items[index]; ItemData ret; - if (amount && (bank_item.data.stack_size() > 1) && (amount < bank_item.data.data1[5])) { + if (amount && (bank_item.data.stack_size(version) > 1) && (amount < bank_item.data.data1[5])) { ret = bank_item.data; ret.data1[5] = amount; bank_item.data.data1[5] -= amount; @@ -678,7 +678,7 @@ void PlayerInventory::encode_for_client(shared_ptr c) { } } - auto item_parameter_table = c->require_server_state()->item_parameter_table_for_version(c->version()); + auto item_parameter_table = c->require_server_state()->item_parameter_table(c->version()); for (size_t z = 0; z < this->items.size(); z++) { this->items[z].data.encode_for_version(c->version(), item_parameter_table); } diff --git a/src/PlayerSubordinates.hh b/src/PlayerSubordinates.hh index fb8d4fd4..88224cec 100644 --- a/src/PlayerSubordinates.hh +++ b/src/PlayerSubordinates.hh @@ -100,8 +100,8 @@ struct PlayerBank { /* 0008 */ parray items; /* 12C8 */ - void add_item(const ItemData& item); - ItemData remove_item(uint32_t item_id, uint32_t amount); + void add_item(const ItemData& item, Version version); + ItemData remove_item(uint32_t item_id, uint32_t amount, Version version); size_t find_item(uint32_t item_id); void sort(); diff --git a/src/ProxyCommands.cc b/src/ProxyCommands.cc index 8cd3b45e..199252a5 100644 --- a/src/ProxyCommands.cc +++ b/src/ProxyCommands.cc @@ -1783,7 +1783,8 @@ static HandlerResult C_V123_A0_A1(shared_ptr ses, ui } // Indexed as [command][version][is_from_client] -static on_command_t handlers[0x100][14][2] = { +static_assert(NUM_VERSIONS == 14, "Don\'t forget to update the ProxyCommands handlers table"); +static on_command_t handlers[0x100][NUM_VERSIONS][2] = { // clang-format off // CMD S_PC_PATCH C S_BB_PATCH C S_DC_NTE C S_DC_V1_12_2000_PROTO C S_DC_V1 C S_DC_V2 C S_PC_NTE C S_PC_V2 C S_GC_NTE C S_GC_V3 C S_GC_EP3_NTE C S_GC_EP3 C S_XB_V3 C S_BB_V4 C /* 00 */ {{S_invalid, nullptr}, {S_invalid, nullptr}, {nullptr, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}, {S_invalid, nullptr}}, diff --git a/src/ProxyServer.cc b/src/ProxyServer.cc index 86555a2f..6e639944 100644 --- a/src/ProxyServer.cc +++ b/src/ProxyServer.cc @@ -43,20 +43,23 @@ ProxyServer::ProxyServer( state(state), next_unlicensed_session_id(0xFF00000000000001) {} -void ProxyServer::listen(uint16_t port, Version version, const struct sockaddr_storage* default_destination) { - auto socket_obj = make_shared(this, port, version, default_destination); - auto l = this->listeners.emplace(port, socket_obj).first->second; +void ProxyServer::listen(const std::string& addr, uint16_t port, Version version, const struct sockaddr_storage* default_destination) { + auto socket_obj = make_shared(this, addr, port, version, default_destination); + if (!this->listeners.emplace(port, socket_obj).second) { + throw runtime_error("duplicate port in proxy server configuration"); + } } ProxyServer::ListeningSocket::ListeningSocket( ProxyServer* server, + const std::string& addr, uint16_t port, Version version, const struct sockaddr_storage* default_destination) : server(server), log(string_printf("[ProxyServer:ListeningSocket:%hu] ", port), proxy_server_log.min_level), port(port), - fd(::listen("", port, SOMAXCONN)), + fd(::listen(addr, port, SOMAXCONN)), listener(nullptr, evconnlistener_free), version(version) { if (!this->fd.is_open()) { diff --git a/src/ProxyServer.hh b/src/ProxyServer.hh index 841ecec7..8ad98496 100644 --- a/src/ProxyServer.hh +++ b/src/ProxyServer.hh @@ -26,7 +26,7 @@ public: std::shared_ptr state); virtual ~ProxyServer() = default; - void listen(uint16_t port, Version version, const struct sockaddr_storage* default_destination = nullptr); + void listen(const std::string& addr, uint16_t port, Version version, const struct sockaddr_storage* default_destination = nullptr); void connect_client(struct bufferevent* bev, uint16_t server_port); @@ -207,6 +207,7 @@ private: ListeningSocket( ProxyServer* server, + const std::string& addr, uint16_t port, Version version, const struct sockaddr_storage* default_destination); diff --git a/src/Quest.cc b/src/Quest.cc index 06ee575c..53d2bc77 100644 --- a/src/Quest.cc +++ b/src/Quest.cc @@ -494,6 +494,10 @@ QuestIndex::QuestIndex( continue; } for (string filename : list_directory_sorted(cat_path)) { + if (filename == ".DS_Store") { + continue; + } + string file_path = cat_path + "/" + filename; try { string orig_filename = filename; diff --git a/src/QuestScript.cc b/src/QuestScript.cc index 0f446117..439aba17 100644 --- a/src/QuestScript.cc +++ b/src/QuestScript.cc @@ -189,6 +189,8 @@ constexpr uint16_t v_flag(Version v) { using Arg = QuestScriptOpcodeDefinition::Argument; +static_assert(NUM_VERSIONS == 14, "Don\'t forget to update the QuestScript flags and opcode definitions table"); + static constexpr uint16_t F_PASS = 0x0001; // Version::PC_PATCH (unused for quests) static constexpr uint16_t F_ARGS = 0x0002; // Version::BB_PATCH (unused for quests) static constexpr uint16_t F_DC_NTE = 0x0004; // Version::DC_NTE diff --git a/src/RareItemSet.cc b/src/RareItemSet.cc index eef1ce5d..fbfd28e7 100644 --- a/src/RareItemSet.cc +++ b/src/RareItemSet.cc @@ -17,7 +17,7 @@ string RareItemSet::ExpandedDrop::str() const { this->probability, frac.first, frac.second, this->item_code[0], this->item_code[1], this->item_code[2]); } -string RareItemSet::ExpandedDrop::str(Version version, shared_ptr name_index) const { +string RareItemSet::ExpandedDrop::str(shared_ptr name_index) const { ItemData item; item.data1[0] = this->item_code[0]; item.data1[1] = this->item_code[1]; @@ -25,7 +25,7 @@ string RareItemSet::ExpandedDrop::str(Version version, shared_ptrstr(); ret += " ("; - ret += name_index->describe_item(version, item); + ret += name_index->describe_item(item); ret += ")"; return ret; } @@ -303,7 +303,7 @@ RareItemSet::RareItemSet(const string& rel_data, bool is_big_endian) { } } -RareItemSet::RareItemSet(const JSON& json, Version version, shared_ptr name_index) { +RareItemSet::RareItemSet(const JSON& json, shared_ptr name_index) { for (const auto& mode_it : json.as_dict()) { static const unordered_map mode_keys( {{"Normal", GameMode::NORMAL}, {"Battle", GameMode::BATTLE}, {"Challenge", GameMode::CHALLENGE}, {"Solo", GameMode::SOLO}}); @@ -369,7 +369,7 @@ RareItemSet::RareItemSet(const JSON& json, Version version, shared_ptrparse_item_description(version, item_desc.as_string()); + ItemData data = name_index->parse_item_description(item_desc.as_string()); d.item_code[0] = data.data1[0]; d.item_code[1] = data.data1[1]; d.item_code[2] = data.data1[2]; @@ -427,7 +427,7 @@ std::string RareItemSet::serialize_gsl(bool big_endian) const { return GSLArchive::generate(files, big_endian); } -std::string RareItemSet::serialize_json(Version version, shared_ptr name_index) const { +std::string RareItemSet::serialize_json(shared_ptr name_index) const { auto modes_dict = JSON::dict(); static const array modes = {GameMode::NORMAL, GameMode::BATTLE, GameMode::CHALLENGE, GameMode::SOLO}; for (const auto& mode : modes) { @@ -458,7 +458,7 @@ std::string RareItemSet::serialize_json(Version version, shared_ptrdescribe_item(version, data)); + spec_json.emplace_back(name_index->describe_item(data)); } for (const auto& enemy_type : enemy_types) { if (enemy_type_valid_for_episode(episode, enemy_type)) { @@ -485,7 +485,7 @@ std::string RareItemSet::serialize_json(Version version, shared_ptrdescribe_item(version, data)); + area_list.back().emplace_back(name_index->describe_item(data)); } } @@ -512,7 +512,6 @@ std::string RareItemSet::serialize_json(Version version, shared_ptrrt_index_to_specs[z]) { - string s = name_index ? spec.str(version, name_index) : spec.str(); + string s = name_index ? spec.str(name_index) : spec.str(); fprintf(stream, " %02zX: %s (%s)\n", z, s.c_str(), enemy_types_str.c_str()); } } @@ -552,14 +551,13 @@ void RareItemSet::print_collection( fprintf(stream, " Box rares:\n"); for (size_t area = 0; area < collection->box_area_to_specs.size(); area++) { for (const auto& spec : collection->box_area_to_specs[area]) { - string s = name_index ? spec.str(version, name_index) : spec.str(); + string s = name_index ? spec.str(name_index) : spec.str(); fprintf(stream, " (area %02zX) %s\n", area, s.c_str()); } } } -void RareItemSet::print_all_collections( - FILE* stream, Version version, std::shared_ptr name_index) const { +void RareItemSet::print_all_collections(FILE* stream, std::shared_ptr name_index) const { static const array modes = {GameMode::NORMAL, GameMode::BATTLE, GameMode::CHALLENGE, GameMode::SOLO}; static const array episodes = {Episode::EP1, Episode::EP2, Episode::EP4}; for (GameMode mode : modes) { @@ -567,7 +565,7 @@ void RareItemSet::print_all_collections( for (uint8_t difficulty = 0; difficulty < 4; difficulty++) { for (uint8_t section_id = 0; section_id < 10; section_id++) { try { - this->print_collection(stream, version, mode, episode, difficulty, section_id, name_index); + this->print_collection(stream, mode, episode, difficulty, section_id, name_index); } catch (const out_of_range& e) { } } diff --git a/src/RareItemSet.hh b/src/RareItemSet.hh index ac3d6ab5..b2ec40e0 100644 --- a/src/RareItemSet.hh +++ b/src/RareItemSet.hh @@ -22,14 +22,14 @@ public: parray item_code; std::string str() const; - std::string str(Version version, std::shared_ptr name_index) const; + std::string str(std::shared_ptr name_index) const; }; RareItemSet(); RareItemSet(const AFSArchive& afs, bool is_v1); RareItemSet(const GSLArchive& gsl, bool is_big_endian); RareItemSet(const std::string& rel, bool is_big_endian); - RareItemSet(const JSON& json, Version version, std::shared_ptr name_index = nullptr); + RareItemSet(const JSON& json, std::shared_ptr name_index = nullptr); ~RareItemSet() = default; std::vector get_enemy_specs(GameMode mode, Episode episode, uint8_t difficulty, uint8_t secid, uint8_t rt_index) const; @@ -37,17 +37,16 @@ public: std::string serialize_afs(bool is_v1) const; std::string serialize_gsl(bool big_endian) const; - std::string serialize_json(Version version, std::shared_ptr name_index = nullptr) const; + std::string serialize_json(std::shared_ptr name_index = nullptr) const; void print_collection( FILE* stream, - Version version, GameMode mode, Episode episode, uint8_t difficulty, uint8_t section_id, std::shared_ptr name_index = nullptr) const; - void print_all_collections(FILE* stream, Version version, std::shared_ptr name_index = nullptr) const; + void print_all_collections(FILE* stream, std::shared_ptr name_index = nullptr) const; protected: struct SpecCollection { diff --git a/src/ReceiveCommands.cc b/src/ReceiveCommands.cc index 538f02a0..98d0c212 100644 --- a/src/ReceiveCommands.cc +++ b/src/ReceiveCommands.cc @@ -132,7 +132,7 @@ void send_client_to_proxy_server(shared_ptr c) { static void send_proxy_destinations_menu(shared_ptr c) { auto s = c->require_server_state(); - send_menu(c, s->proxy_destinations_menu_for_version(c->version())); + send_menu(c, s->proxy_destinations_menu(c->version())); } static bool send_enable_send_function_call_if_applicable(shared_ptr c) { @@ -1762,7 +1762,7 @@ static void on_D6_V3(shared_ptr c, uint16_t, uint32_t, string& data) { check_size_v(data.size(), 0); if (c->config.check_flag(Client::Flag::IN_INFORMATION_MENU)) { auto s = c->require_server_state(); - send_menu(c, s->information_menu_for_version(c->version())); + send_menu(c, s->information_menu(c->version())); } else if (c->config.check_flag(Client::Flag::AT_WELCOME_MESSAGE)) { c->config.clear_flag(Client::Flag::AT_WELCOME_MESSAGE); send_enable_send_function_call_if_applicable(c); @@ -1784,7 +1784,7 @@ static void on_09(shared_ptr c, uint16_t, uint32_t, string& data) { case MenuID::QUEST_EP1: case MenuID::QUEST_EP2: { bool is_download_quest = !c->lobby.lock(); - auto quest_index = s->quest_index_for_version(c->version()); + auto quest_index = s->quest_index(c->version()); if (!quest_index) { send_quest_info(c, "$C6Quests are not available.", is_download_quest); } else { @@ -2033,7 +2033,7 @@ static void on_quest_loaded(shared_ptr l) { lc->use_default_bank(); lc->create_challenge_overlay(lc->version(), l->quest->challenge_template_index, s->level_table); lc->log.info("Created challenge overlay"); - l->assign_inventory_and_bank_item_ids(lc); + l->assign_inventory_and_bank_item_ids(lc, true); } } } @@ -2178,7 +2178,7 @@ static void on_10(shared_ptr c, uint16_t, uint32_t, string& data) { case MainMenuItemID::INFORMATION: { auto s = c->require_server_state(); - send_menu(c, s->information_menu_for_version(c->version())); + send_menu(c, s->information_menu(c->version())); c->config.set_flag(Client::Flag::IN_INFORMATION_MENU); break; } @@ -2199,7 +2199,7 @@ static void on_10(shared_ptr c, uint16_t, uint32_t, string& data) { // always the download quest menu. (Episode 3 does actually have // online quests, but they're served via a server data request // instead of the file download paradigm that other versions use.) - auto quest_index = s->quest_index_for_version(c->version()); + auto quest_index = s->quest_index(c->version()); const auto& categories = quest_index->categories(menu_type, Episode::EP3, c->version()); if (categories.size() == 1) { auto quests = quest_index->filter(menu_type, Episode::EP3, c->version(), categories[0]->category_id); @@ -2208,7 +2208,7 @@ static void on_10(shared_ptr c, uint16_t, uint32_t, string& data) { } } - send_quest_categories_menu(c, s->quest_index_for_version(c->version()), menu_type, Episode::NONE); + send_quest_categories_menu(c, s->quest_index(c->version()), menu_type, Episode::NONE); break; } @@ -2346,7 +2346,7 @@ static void on_10(shared_ptr c, uint16_t, uint32_t, string& data) { auto s = c->require_server_state(); const pair* dest = nullptr; try { - dest = &s->proxy_destinations_for_version(c->version()).at(item_id); + dest = &s->proxy_destinations(c->version()).at(item_id); } catch (const out_of_range&) { } @@ -2453,7 +2453,7 @@ static void on_10(shared_ptr c, uint16_t, uint32_t, string& data) { case MenuID::QUEST_CATEGORIES: { auto s = c->require_server_state(); - auto quest_index = s->quest_index_for_version(c->version()); + auto quest_index = s->quest_index(c->version()); if (!quest_index) { send_lobby_message_box(c, "$C6Quests are not available."); break; @@ -2494,7 +2494,7 @@ static void on_10(shared_ptr c, uint16_t, uint32_t, string& data) { case MenuID::QUEST_EP1: case MenuID::QUEST_EP2: { auto s = c->require_server_state(); - auto quest_index = s->quest_index_for_version(c->version()); + auto quest_index = s->quest_index(c->version()); if (!quest_index) { send_lobby_message_box(c, "$C6Quests are not\navailable."); break; @@ -2707,7 +2707,7 @@ static void on_08_E6(shared_ptr c, uint16_t command, uint32_t, string& d static void on_1F(shared_ptr c, uint16_t, uint32_t, string& data) { check_size_v(data.size(), 0); auto s = c->require_server_state(); - send_menu(c, s->information_menu_for_version(c->version()), true); + send_menu(c, s->information_menu(c->version()), true); } static void on_A0(shared_ptr c, uint16_t, uint32_t, string&) { @@ -2842,7 +2842,7 @@ static void on_A2(shared_ptr c, uint16_t, uint32_t flag, string& data) { throw logic_error("invalid game mode"); } } - send_quest_categories_menu(c, s->quest_index_for_version(c->version()), menu_type, l->episode); + send_quest_categories_menu(c, s->quest_index(c->version()), menu_type, l->episode); } } @@ -3620,7 +3620,7 @@ static void on_DF_BB(shared_ptr c, uint16_t command, uint32_t, string& d lc->use_default_bank(); lc->create_challenge_overlay(lc->version(), l->quest->challenge_template_index, s->level_table); lc->log.info("Created challenge overlay"); - l->assign_inventory_and_bank_item_ids(lc); + l->assign_inventory_and_bank_item_ids(lc, true); } } @@ -3671,7 +3671,7 @@ static void on_DF_BB(shared_ptr c, uint16_t command, uint32_t, string& d ? p->challenge_records.ep2_online_award_state : p->challenge_records.ep1_online_award_state; award_state.rank_award_flags |= cmd.rank_bitmask; - p->add_item(cmd.item); + p->add_item(cmd.item, c->version()); l->on_item_id_generated_externally(cmd.item.id); string desc = s->describe_item(Version::BB_V4, cmd.item, false); l->log.info("(Challenge mode) Item awarded to player %hhu: %s", c->lobby_client_id, desc.c_str()); @@ -4361,17 +4361,23 @@ static void on_6F(shared_ptr c, uint16_t command, uint32_t, string& data if (!l->is_game()) { throw runtime_error("client sent ready command outside of game"); } - c->config.clear_flag(Client::Flag::LOADING); + + // Episode 3 sends a 6F after a CAx21 (end battle) command, so we shouldn't + // reassign the items IDs again in that case (even though item IDs really + // don't matter for Ep3) + if (c->config.check_flag(Client::Flag::LOADING)) { + c->config.clear_flag(Client::Flag::LOADING); + + // The client sends 6F when it has created its TObjPlayer and assigned its + // item IDs. For the leader, however, this happens before any inbound commands + // are processed, so we already did it when the client was added to the lobby. + // So, we only assign item IDs here if the client is not the leader. + if ((command == 0x006F) && (c->lobby_client_id != l->leader_id)) { + l->assign_inventory_and_bank_item_ids(c, true); + } + } send_server_time(c); - if (l->base_version == Version::BB_V4) { - send_set_exp_multiplier(l); - } - if (c->version() == Version::BB_V4) { - send_update_team_reward_flags(c); - send_all_nearby_team_metadatas_to_client(c, false); - } - if (c->config.check_flag(Client::Flag::DEBUG_ENABLED)) { string variations_str; for (size_t z = 0; z < l->variations.size(); z++) { @@ -4382,6 +4388,10 @@ static void on_6F(shared_ptr c, uint16_t command, uint32_t, string& data bool should_resume_game = true; if (c->version() == Version::BB_V4) { + send_set_exp_multiplier(l); + send_update_team_reward_flags(c); + send_all_nearby_team_metadatas_to_client(c, false); + // BB sends 016F when the client is done loading a quest. In that case, we // shouldn't send the quest to them again! if ((command == 0x006F) && l->check_flag(Lobby::Flag::JOINABLE_QUEST_IN_PROGRESS)) { @@ -4533,9 +4543,9 @@ static void on_D2_V3_BB(shared_ptr c, uint16_t, uint32_t, string& data) auto to_p = to_c->character(); auto from_p = from_c->character(); for (const auto& trade_item : from_c->pending_item_trade->items) { - size_t amount = trade_item.stack_size(); + size_t amount = trade_item.stack_size(from_c->version()); - auto item = from_p->remove_item(trade_item.id, amount, false); + auto item = from_p->remove_item(trade_item.id, amount, from_c->version()); // This is a special case: when the trade is executed, the client // deletes the traded items from its own inventory automatically, so we // should NOT send the 6x29 to that client; we should only send it to @@ -4547,7 +4557,7 @@ static void on_D2_V3_BB(shared_ptr c, uint16_t, uint32_t, string& data) } } - to_p->add_item(trade_item); + to_p->add_item(trade_item, to_c->version()); send_create_inventory_item_to_lobby(to_c, to_c->lobby_client_id, item); } send_command(to_c, 0xD3, 0x00); @@ -4981,7 +4991,7 @@ static void on_EA_BB(shared_ptr c, uint16_t command, uint32_t flag, stri } } if (!reward.reward_item.empty()) { - c->current_bank().add_item(reward.reward_item); + c->current_bank().add_item(reward.reward_item, c->version()); } } break; @@ -5206,9 +5216,10 @@ typedef void (*on_command_t)(shared_ptr c, uint16_t command, uint32_t fl // Command handler table, indexed by command number and game version. Null // entries in this table cause on_unimplemented_command to be called, which // disconnects the client. -static on_command_t handlers[0x100][14] = { +static_assert(NUM_VERSIONS == 14, "Don\'t forget to update the ReceiveCommands handler table"); +static on_command_t handlers[0x100][NUM_VERSIONS] = { // clang-format off -// PC_PATCH BB_PATCH DC_NTE DC_PROTO DCV1 DCV2 PC-NTE PC GCNTE GC EP3TE EP3 XB BB +// PC_PATCH BB_PATCH DC_NTE DC_112000 DCV1 DCV2 PC_NTE PC GCNTE GC EP3TE EP3 XB BB /* 00 */ {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}, /* 01 */ {nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}, /* 02 */ {on_02_P, on_02_P, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr}, diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index b321b2e3..cea872f7 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -832,7 +832,7 @@ static void on_sync_joining_player_disp_and_inventory( throw logic_error("6x70 command from unknown game version"); } - parsed->transcode_inventory_items(c->version(), target->version(), s->item_parameter_table_for_version(target->version())); + parsed->transcode_inventory_items(c->version(), target->version(), s->item_parameter_table(target->version())); parsed->visual.enforce_lobby_join_limits_for_version(target->version()); switch (target->version()) { @@ -1136,6 +1136,7 @@ static void on_change_floor_6x1F(shared_ptr c, uint8_t command, uint8_t if (c->config.check_flag(Client::Flag::LOADING)) { c->config.clear_flag(Client::Flag::LOADING); send_resume_game(c->require_lobby(), c); + c->require_lobby()->assign_inventory_and_bank_item_ids(c, true); } } else { @@ -1329,6 +1330,40 @@ void on_movement_with_floor(shared_ptr c, uint8_t command, uint8_t flag, forward_subcommand(c, command, flag, data, size); } +void on_set_animation_state(shared_ptr c, uint8_t command, uint8_t flag, void* data, size_t size) { + auto& cmd = check_size_t(data, size); + if (cmd.header.client_id != c->lobby_client_id) { + return; + } + if (command_is_private(command)) { + return; + } + auto l = c->require_lobby(); + if (l->is_game()) { + forward_subcommand(c, command, flag, data, size); + return; + } + + // The animation numbers were changed on V3. This is the most common one to + // see in the lobby (it occurs when a player talks to the counter), so we + // take care to translate it specifically. + bool c_is_v1_or_v2 = is_v1_or_v2(c->version()); + if (!((c_is_v1_or_v2 && (cmd.animation == 0x000A)) || (!c_is_v1_or_v2 && (cmd.animation == 0x0000)))) { + forward_subcommand(c, command, flag, data, size); + return; + } + + G_SetAnimationState_6x52 other_cmd = cmd; + other_cmd.animation = 0x000A - cmd.animation; + for (auto lc : l->clients) { + if (lc && (lc != c)) { + auto& out_cmd = (is_v1_or_v2(lc->version()) != c_is_v1_or_v2) ? other_cmd : cmd; + out_cmd.header.subcommand = translate_subcommand_number(lc->version(), Version::BB_V4, 0x52); + send_command_t(lc, command, flag, out_cmd); + } + } +} + //////////////////////////////////////////////////////////////////////////////// // Item commands @@ -1341,7 +1376,7 @@ static void on_player_drop_item(shared_ptr c, uint8_t command, uint8_t f auto l = c->require_lobby(); auto p = c->character(); - auto item = p->remove_item(cmd.item_id, 0, c->version() != Version::BB_V4); + auto item = p->remove_item(cmd.item_id, 0, c->version()); l->add_item(cmd.floor, item, cmd.x, cmd.z, 0x00F); if (l->log.should_log(LogLevel::INFO)) { @@ -1349,7 +1384,7 @@ static void on_player_drop_item(shared_ptr c, uint8_t command, uint8_t f auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hu dropped item %08" PRIX32 " (%s) at %hu:(%g, %g)", cmd.header.client_id.load(), cmd.item_id.load(), name.c_str(), cmd.floor.load(), cmd.x.load(), cmd.z.load()); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } forward_subcommand(c, command, flag, data, size); @@ -1374,7 +1409,7 @@ void forward_subcommand_with_item_transcode_t(shared_ptr c, uint8_t comm out_cmd.header.subcommand = translate_subcommand_number(lc->version(), c->version(), out_cmd.header.subcommand); if (out_cmd.header.subcommand) { out_cmd.item_data.decode_for_version(c->version()); - out_cmd.item_data.encode_for_version(lc->version(), s->item_parameter_table_for_version(lc->version())); + out_cmd.item_data.encode_for_version(lc->version(), s->item_parameter_table(lc->version())); send_command_t(lc, command, flag, out_cmd); } else { lc->log.info("Subcommand cannot be translated to client\'s version"); @@ -1403,13 +1438,13 @@ static void on_create_inventory_item_t(shared_ptr c, uint8_t command, ui ItemData item = cmd.item_data; item.decode_for_version(c->version()); l->on_item_id_generated_externally(item.id); - p->add_item(item); + p->add_item(item, c->version()); if (l->log.should_log(LogLevel::INFO)) { auto s = c->require_server_state(); auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hu created inventory item %08" PRIX32 " (%s)", c->lobby_client_id, item.id.load(), name.c_str()); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } forward_subcommand_with_item_transcode_t(c, command, flag, cmd); @@ -1450,7 +1485,7 @@ static void on_drop_partial_stack_t(shared_ptr c, uint8_t command, uint8 auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hu split stack to create floor item %08" PRIX32 " (%s) at %hu:(%g, %g)", cmd.header.client_id.load(), item.id.load(), name.c_str(), cmd.floor.load(), cmd.x.load(), cmd.z.load()); - c->character()->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } forward_subcommand_with_item_transcode_t(c, command, flag, cmd); @@ -1476,7 +1511,7 @@ static void on_drop_partial_stack_bb(shared_ptr c, uint8_t command, uint } auto p = c->character(); - auto item = p->remove_item(cmd.item_id, cmd.amount, c->version() != Version::BB_V4); + auto item = p->remove_item(cmd.item_id, cmd.amount, c->version()); // If a stack was split, the original item still exists, so the dropped item // needs a new ID. remove_item signals this by returning an item with an ID @@ -1488,7 +1523,7 @@ static void on_drop_partial_stack_bb(shared_ptr c, uint8_t command, uint // PSOBB sends a 6x29 command after it receives the 6x5D, so we need to add // the item back to the player's inventory to correct for this (it will get // removed again by the 6x29 handler) - p->add_item(item); + p->add_item(item, c->version()); l->add_item(cmd.floor, item, cmd.x, cmd.z, 0x00F); send_drop_stacked_item_to_lobby(l, item, cmd.floor, cmd.x, cmd.z); @@ -1498,7 +1533,7 @@ static void on_drop_partial_stack_bb(shared_ptr c, uint8_t command, uint auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hu split stack %08" PRIX32 " (removed: %s) at %hu:(%g, %g)", cmd.header.client_id.load(), cmd.item_id.load(), name.c_str(), cmd.floor.load(), cmd.x.load(), cmd.z.load()); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } } else { @@ -1523,21 +1558,31 @@ static void on_buy_shop_item(shared_ptr c, uint8_t command, uint8_t flag item.data2d = 0; // Clear the price field item.decode_for_version(c->version()); l->on_item_id_generated_externally(item.id); - p->add_item(item); + p->add_item(item, c->version()); - size_t price = s->item_parameter_table_for_version(c->version())->price_for_item(item); + size_t price = s->item_parameter_table(c->version())->price_for_item(item); p->remove_meseta(price, c->version() != Version::BB_V4); if (l->log.should_log(LogLevel::INFO)) { auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hu bought item %08" PRIX32 " (%s) from shop (%zu Meseta)", cmd.header.client_id.load(), item.id.load(), name.c_str(), price); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } forward_subcommand_with_item_transcode_t(c, command, flag, cmd); } +static void send_rare_notification_if_needed(shared_ptr to_c, const ItemData& item) { + auto s = to_c->require_server_state(); + if (!to_c->config.check_flag(Client::Flag::RARE_DROP_NOTIFICATIONS_ENABLED) || + !s->item_parameter_table(to_c->version())->is_item_rare(item)) { + return; + } + string name = s->describe_item(to_c->version(), item, true); + send_text_message_printf(to_c, "$C6Rare item dropped:\n%s", name.c_str()); +} + template static void on_box_or_enemy_item_drop_t(shared_ptr c, uint8_t command, uint8_t flag, void* data, size_t size) { // I'm lazy and this should never happen for item commands (since all players @@ -1567,22 +1612,25 @@ static void on_box_or_enemy_item_drop_t(shared_ptr c, uint8_t command, u l->leader_id, item.id.load(), name.c_str(), cmd.item.floor, cmd.item.x.load(), cmd.item.z.load()); for (auto& lc : l->clients) { - if (!lc || lc == c) { + if (!lc) { continue; } - if (c->version() != lc->version()) { - CmdT out_cmd = cmd; - out_cmd.header.subcommand = translate_subcommand_number(lc->version(), c->version(), out_cmd.header.subcommand); - if (out_cmd.header.subcommand) { - out_cmd.item.item.decode_for_version(c->version()); - out_cmd.item.item.encode_for_version(lc->version(), s->item_parameter_table_for_version(lc->version())); - send_command_t(lc, command, flag, out_cmd); + if (lc != c) { + if (c->version() != lc->version()) { + CmdT out_cmd = cmd; + out_cmd.header.subcommand = translate_subcommand_number(lc->version(), c->version(), out_cmd.header.subcommand); + if (out_cmd.header.subcommand) { + out_cmd.item.item.decode_for_version(c->version()); + out_cmd.item.item.encode_for_version(lc->version(), s->item_parameter_table(lc->version())); + send_command_t(lc, command, flag, out_cmd); + } else { + lc->log.info("Subcommand cannot be translated to client\'s version"); + } } else { - lc->log.info("Subcommand cannot be translated to client\'s version"); + send_command_t(lc, command, flag, cmd); } - } else { - send_command_t(lc, command, flag, cmd); } + send_rare_notification_if_needed(lc, item); } } @@ -1626,7 +1674,7 @@ static void on_pick_up_item_generic( } try { - p->add_item(fi->data); + p->add_item(fi->data, c->version()); } catch (const out_of_range&) { // Inventory is full; put the item back where it was l->log.warning("Player %hu requests to pick up %08" PRIX32 ", but their inventory is full; dropping command", @@ -1639,7 +1687,7 @@ static void on_pick_up_item_generic( auto s = c->require_server_state(); auto name = s->describe_item(c->version(), fi->data, false); l->log.info("Player %hu picked up %08" PRIX32 " (%s)", client_id, item_id, name.c_str()); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } auto s = c->require_server_state(); @@ -1725,7 +1773,7 @@ static void on_use_item( if (l->log.should_log(LogLevel::INFO)) { l->log.info("Player %hhu used item %hu:%08" PRIX32 " (%s)", c->lobby_client_id, cmd.header.client_id.load(), cmd.item_id.load(), name.c_str()); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } forward_subcommand(c, command, flag, data, size); @@ -1763,15 +1811,15 @@ static void on_feed_mag( // a 6x29 immediately after to destroy the fed item. So on BB, we should // remove the fed item here, but on other versions, we allow the following // 6x29 command to do that. - if (l->base_version == Version::BB_V4) { - p->remove_item(cmd.fed_item_id, 1, false); + if (c->version() == Version::BB_V4) { + p->remove_item(cmd.fed_item_id, 1, c->version()); } if (l->log.should_log(LogLevel::INFO)) { l->log.info("Player %hhu fed item %hu:%08" PRIX32 " (%s) to mag %hu:%08" PRIX32 " (%s)", c->lobby_client_id, cmd.header.client_id.load(), cmd.fed_item_id.load(), fed_name.c_str(), cmd.header.client_id.load(), cmd.mag_item_id.load(), mag_name.c_str()); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } forward_subcommand(c, command, flag, data, size); @@ -1806,7 +1854,7 @@ static void on_open_shop_bb_or_ep3_battle_subs(shared_ptr c, uint8_t com } for (auto& item : c->bb_shop_contents[cmd.shop_type]) { item.id = 0xFFFFFFFF; - item.data2d = s->item_parameter_table_for_version(c->version())->price_for_item(item); + item.data2d = s->item_parameter_table(c->version())->price_for_item(item); } send_shop(c, cmd.shop_type); @@ -1851,7 +1899,7 @@ static void on_ep3_private_word_select_bb_bank_action(shared_ptr c, uint } } else { // Deposit item - auto item = p->remove_item(cmd.item_id, cmd.item_amount, c->version() != Version::BB_V4); + auto item = p->remove_item(cmd.item_id, cmd.item_amount, c->version()); // If a stack was split, the bank item retains the same item ID as the // inventory item. This is annoying but doesn't cause any problems // because we always generate a new item ID when withdrawing from the @@ -1859,14 +1907,14 @@ static void on_ep3_private_word_select_bb_bank_action(shared_ptr c, uint if (item.id == 0xFFFFFFFF) { item.id = cmd.item_id; } - bank.add_item(item); + bank.add_item(item, c->version()); send_destroy_item_to_lobby(c, cmd.item_id, cmd.item_amount, true); if (l->log.should_log(LogLevel::INFO)) { - string name = s->item_name_index->describe_item(Version::BB_V4, item); + string name = s->describe_item(Version::BB_V4, item, false); l->log.info("Player %hu deposited item %08" PRIX32 " (x%hhu) (%s) in the bank", c->lobby_client_id, cmd.item_id.load(), cmd.item_amount, name.c_str()); - c->character()->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } } @@ -1886,16 +1934,16 @@ static void on_ep3_private_word_select_bb_bank_action(shared_ptr c, uint } } else { // Take item - auto item = bank.remove_item(cmd.item_id, cmd.item_amount); + auto item = bank.remove_item(cmd.item_id, cmd.item_amount, c->version()); item.id = l->generate_item_id(c->lobby_client_id); - p->add_item(item); + p->add_item(item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, item); if (l->log.should_log(LogLevel::INFO)) { - string name = s->item_name_index->describe_item(Version::BB_V4, item); + string name = s->describe_item(Version::BB_V4, item, false); l->log.info("Player %hu withdrew item %08" PRIX32 " (x%hhu) (%s) from the bank", c->lobby_client_id, item.id.load(), cmd.item_amount, name.c_str()); - c->character()->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } } @@ -2065,7 +2113,7 @@ static void on_entity_drop_item_request(shared_ptr c, uint8_t command, u cmd.effective_area = in_cmd.floor; } - auto generate_item = [&]() -> ItemData { + auto generate_item = [&]() -> ItemCreator::DropResult { if (cmd.rt_index == 0x30) { if (l->map) { auto& object = l->map->objects.at(cmd.entity_id); @@ -2129,29 +2177,39 @@ static void on_entity_drop_item_request(shared_ptr c, uint8_t command, u case Lobby::DropMode::SERVER_DUPLICATE: { // TODO: In SERVER_DUPLICATE mode, should we reduce the rates for rare // items? Maybe by a factor of l->count_clients()? - auto item = generate_item(); - if (item.empty()) { + auto res = generate_item(); + if (res.item.empty()) { l->log.info("No item was created"); } else { - string name = s->item_name_index->describe_item(l->base_version, item); + string name = s->describe_item(l->base_version, res.item, false); l->log.info("Entity %04hX (area %02hX) created item %s", cmd.entity_id.load(), cmd.effective_area, name.c_str()); if (l->drop_mode == Lobby::DropMode::SERVER_DUPLICATE) { for (const auto& lc : l->clients) { if (lc && ((cmd.rt_index == 0x30) || (lc->floor == cmd.floor))) { - item.id = l->generate_item_id(0xFF); + res.item.id = l->generate_item_id(0xFF); l->log.info("Creating item %08" PRIX32 " at %02hhX:%g,%g for %s", - item.id.load(), cmd.floor, cmd.x.load(), cmd.z.load(), lc->channel.name.c_str()); - l->add_item(cmd.floor, item, cmd.x, cmd.z, (1 << lc->lobby_client_id)); - send_drop_item_to_channel(s, lc->channel, item, cmd.rt_index != 0x30, cmd.floor, cmd.x, cmd.z, cmd.entity_id); + res.item.id.load(), cmd.floor, cmd.x.load(), cmd.z.load(), lc->channel.name.c_str()); + l->add_item(cmd.floor, res.item, cmd.x, cmd.z, (1 << lc->lobby_client_id)); + send_drop_item_to_channel(s, lc->channel, res.item, cmd.rt_index != 0x30, cmd.floor, cmd.x, cmd.z, cmd.entity_id); + if (res.is_from_rare_table) { + send_rare_notification_if_needed(lc, res.item); + } } } } else { - item.id = l->generate_item_id(0xFF); + res.item.id = l->generate_item_id(0xFF); l->log.info("Creating item %08" PRIX32 " at %02hhX:%g,%g for all clients", - item.id.load(), cmd.floor, cmd.x.load(), cmd.z.load()); - l->add_item(cmd.floor, item, cmd.x, cmd.z, 0x00F); - send_drop_item_to_lobby(l, item, cmd.rt_index != 0x30, cmd.floor, cmd.x, cmd.z, cmd.entity_id); + res.item.id.load(), cmd.floor, cmd.x.load(), cmd.z.load()); + l->add_item(cmd.floor, res.item, cmd.x, cmd.z, 0x00F); + send_drop_item_to_lobby(l, res.item, cmd.rt_index != 0x30, cmd.floor, cmd.x, cmd.z, cmd.entity_id); + if (res.is_from_rare_table) { + for (auto lc : l->clients) { + if (lc) { + send_rare_notification_if_needed(lc, res.item); + } + } + } } } break; @@ -2159,17 +2217,20 @@ static void on_entity_drop_item_request(shared_ptr c, uint8_t command, u case Lobby::DropMode::SERVER_PRIVATE: { for (const auto& lc : l->clients) { if (lc && ((cmd.rt_index == 0x30) || (lc->floor == cmd.floor))) { - auto item = generate_item(); - if (item.empty()) { + auto res = generate_item(); + if (res.item.empty()) { l->log.info("No item was created for %s", lc->channel.name.c_str()); } else { - string name = s->item_name_index->describe_item(l->base_version, item); + string name = s->describe_item(l->base_version, res.item, false); l->log.info("Entity %04hX (area %02hX) created item %s", cmd.entity_id.load(), cmd.effective_area, name.c_str()); - item.id = l->generate_item_id(0xFF); + res.item.id = l->generate_item_id(0xFF); l->log.info("Creating item %08" PRIX32 " at %02hhX:%g,%g for %s", - item.id.load(), cmd.floor, cmd.x.load(), cmd.z.load(), lc->channel.name.c_str()); - l->add_item(cmd.floor, item, cmd.x, cmd.z, (1 << lc->lobby_client_id)); - send_drop_item_to_channel(s, lc->channel, item, cmd.rt_index != 0x30, cmd.floor, cmd.x, cmd.z, cmd.entity_id); + res.item.id.load(), cmd.floor, cmd.x.load(), cmd.z.load(), lc->channel.name.c_str()); + l->add_item(cmd.floor, res.item, cmd.x, cmd.z, (1 << lc->lobby_client_id)); + send_drop_item_to_channel(s, lc->channel, res.item, cmd.rt_index != 0x30, cmd.floor, cmd.x, cmd.z, cmd.entity_id); + if (res.is_from_rare_table) { + send_rare_notification_if_needed(lc, res.item); + } } } } @@ -2455,7 +2516,7 @@ static void on_steal_exp_bb(shared_ptr c, uint8_t, uint8_t, void* data, const auto& inventory = p->inventory; const auto& weapon = inventory.items[inventory.find_equipped_item(EquipSlot::WEAPON)]; - auto item_parameter_table = s->item_parameter_table_for_version(c->version()); + auto item_parameter_table = s->item_parameter_table(c->version()); uint8_t special_id = 0; if (((weapon.data.data1[1] < 0x0A) && (weapon.data.data1[2] < 0x05)) || @@ -2574,7 +2635,7 @@ static void on_enemy_exp_request_bb(shared_ptr c, uint8_t, uint8_t, void for (size_t z = 0; z < inventory.num_items; z++) { auto& item = inventory.items[z]; if ((item.flags & 0x08) && - s->item_parameter_table_for_version(c->version())->is_unsealable_item(item.data)) { + s->item_parameter_table(c->version())->is_unsealable_item(item.data)) { item.data.set_sealed_item_kill_count(item.data.get_sealed_item_kill_count() + 1); } } @@ -2598,7 +2659,7 @@ void on_adjust_player_meseta_bb(shared_ptr c, uint8_t, uint8_t, void* da item.data1[0] = 0x04; item.data2d = cmd.amount.load(); item.id = l->generate_item_id(c->lobby_client_id); - p->add_item(item); + p->add_item(item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, item); } } @@ -2609,9 +2670,9 @@ void on_item_reward_request_bb(shared_ptr c, uint8_t, uint8_t, void* dat ItemData item; item = cmd.item_data; - item.enforce_min_stack_size(); + item.enforce_min_stack_size(c->version()); item.id = l->generate_item_id(c->lobby_client_id); - c->character()->add_item(item); + c->character()->add_item(item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, item); } @@ -2638,13 +2699,13 @@ void on_transfer_item_via_mail_message_bb(shared_ptr c, uint8_t command, auto s = c->require_server_state(); auto p = c->character(); - auto item = p->remove_item(cmd.item_id, cmd.amount, c->version() != Version::BB_V4); + auto item = p->remove_item(cmd.item_id, cmd.amount, c->version()); if (l->log.should_log(LogLevel::INFO)) { auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hhu sent inventory item %hu:%08" PRIX32 " (%s) x%" PRIu32 " to player %08" PRIX32, c->lobby_client_id, cmd.header.client_id.load(), cmd.item_id.load(), name.c_str(), cmd.amount.load(), cmd.target_guild_card_number.load()); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } // To receive an item, the player must be online, using BB, have a character @@ -2657,7 +2718,7 @@ void on_transfer_item_via_mail_message_bb(shared_ptr c, uint8_t command, (target_c->character(false) != nullptr) && !target_c->config.check_flag(Client::Flag::AT_BANK_COUNTER)) { try { - target_c->current_bank().add_item(item); + target_c->current_bank().add_item(item, target_c->version()); item_sent = true; } catch (const runtime_error&) { } @@ -2669,7 +2730,7 @@ void on_transfer_item_via_mail_message_bb(shared_ptr c, uint8_t command, send_command(c, 0x16EA, 0x00000000); // If the item failed to send, add it back to the sender's inventory item.id = l->generate_item_id(0xFF); - p->add_item(item); + p->add_item(item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, item); } } @@ -2695,7 +2756,7 @@ void on_exchange_item_for_team_points_bb(shared_ptr c, uint8_t command, auto s = c->require_server_state(); auto p = c->character(); - auto item = p->remove_item(cmd.item_id, cmd.amount, c->version() != Version::BB_V4); + auto item = p->remove_item(cmd.item_id, cmd.amount, c->version()); size_t points = s->item_parameter_table_v4->get_item_team_points(item); s->team_index->add_member_points(c->license->serial_number, points); @@ -2704,7 +2765,7 @@ void on_exchange_item_for_team_points_bb(shared_ptr c, uint8_t command, auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hhu exchanged inventory item %hu:%08" PRIX32 " (%s) for %zu team points", c->lobby_client_id, cmd.header.client_id.load(), cmd.item_id.load(), name.c_str(), points); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } forward_subcommand(c, command, flag, data, size); @@ -2723,13 +2784,13 @@ static void on_destroy_inventory_item(shared_ptr c, uint8_t command, uin auto s = c->require_server_state(); auto p = c->character(); - auto item = p->remove_item(cmd.item_id, cmd.amount, c->version() != Version::BB_V4); + auto item = p->remove_item(cmd.item_id, cmd.amount, c->version()); if (l->log.should_log(LogLevel::INFO)) { auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hhu destroyed inventory item %hu:%08" PRIX32 " (%s)", c->lobby_client_id, cmd.header.client_id.load(), cmd.item_id.load(), name.c_str()); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } forward_subcommand(c, command, flag, data, size); } @@ -2815,7 +2876,7 @@ static void on_accept_identify_item_bb(shared_ptr c, uint8_t command, ui if (c->bb_identify_result.id != cmd.item_id) { throw runtime_error("accepted item ID does not match previous identify request"); } - c->character()->add_item(c->bb_identify_result); + c->character()->add_item(c->bb_identify_result, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, c->bb_identify_result); c->bb_identify_result.clear(); @@ -2832,15 +2893,15 @@ static void on_sell_item_at_shop_bb(shared_ptr c, uint8_t command, uint8 auto s = c->require_server_state(); auto p = c->character(); - auto item = p->remove_item(cmd.item_id, cmd.amount, c->version() != Version::BB_V4); - size_t price = (s->item_parameter_table_for_version(c->version())->price_for_item(item) >> 3) * cmd.amount; + auto item = p->remove_item(cmd.item_id, cmd.amount, c->version()); + size_t price = (s->item_parameter_table(c->version())->price_for_item(item) >> 3) * cmd.amount; p->add_meseta(price); if (l->log.should_log(LogLevel::INFO)) { auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hhu sold inventory item %08" PRIX32 " (%s) for %zu Meseta", c->lobby_client_id, cmd.item_id.load(), name.c_str(), price); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } forward_subcommand(c, command, flag, data, size); @@ -2854,7 +2915,7 @@ static void on_buy_shop_item_bb(shared_ptr c, uint8_t, uint8_t, void* da ItemData item; item = c->bb_shop_contents.at(cmd.shop_type).at(cmd.item_index); - if (item.is_stackable()) { + if (item.is_stackable(c->version())) { item.data1[5] = cmd.amount; } else if (cmd.amount != 1) { throw runtime_error("item is not stackable"); @@ -2867,7 +2928,7 @@ static void on_buy_shop_item_bb(shared_ptr c, uint8_t, uint8_t, void* da item.id = cmd.shop_item_id; l->on_item_id_generated_externally(item.id); - p->add_item(item); + p->add_item(item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, item, true); if (l->log.should_log(LogLevel::INFO)) { @@ -2875,7 +2936,7 @@ static void on_buy_shop_item_bb(shared_ptr c, uint8_t, uint8_t, void* da auto name = s->describe_item(c->version(), item, false); l->log.info("Player %hhu purchased item %08" PRIX32 " (%s) for %zu meseta", c->lobby_client_id, item.id.load(), name.c_str(), price); - p->print_inventory(stderr, c->version(), s->item_name_index); + c->print_inventory(stderr); } } } @@ -2970,15 +3031,15 @@ static void on_quest_exchange_item_bb(shared_ptr c, uint8_t, uint8_t, vo auto p = c->character(); size_t found_index = p->inventory.find_item_by_primary_identifier(cmd.find_item.primary_identifier()); - auto found_item = p->remove_item(p->inventory.items[found_index].data.id, 1, false); + auto found_item = p->remove_item(p->inventory.items[found_index].data.id, 1, c->version()); send_destroy_item_to_lobby(c, found_item.id, 1); // TODO: We probably should use an allow-list here to prevent the client // from creating arbitrary items if cheat mode is disabled. ItemData new_item = cmd.replace_item; - new_item.enforce_min_stack_size(); + new_item.enforce_min_stack_size(c->version()); new_item.id = l->generate_item_id(c->lobby_client_id); - p->add_item(new_item); + p->add_item(new_item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, new_item); send_quest_function_call(c, cmd.success_function_id); @@ -2996,10 +3057,10 @@ static void on_wrap_item_bb(shared_ptr c, uint8_t, uint8_t, void* data, const auto& cmd = check_size_t(data, size); auto p = c->character(); - auto item = p->remove_item(cmd.item.id, 1, false); + auto item = p->remove_item(cmd.item.id, 1, c->version()); send_destroy_item_to_lobby(c, item.id, 1); - item.wrap(); - p->add_item(item); + item.wrap(c->version()); + p->add_item(item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, item); } } @@ -3013,15 +3074,15 @@ static void on_photon_drop_exchange_for_item_bb(shared_ptr c, uint8_t, u auto p = c->character(); size_t found_index = p->inventory.find_item_by_primary_identifier(0x031000); - auto found_item = p->remove_item(p->inventory.items[found_index].data.id, 0, false); - send_destroy_item_to_lobby(c, found_item.id, found_item.stack_size()); + auto found_item = p->remove_item(p->inventory.items[found_index].data.id, 0, c->version()); + send_destroy_item_to_lobby(c, found_item.id, found_item.stack_size(c->version())); // TODO: We probably should use an allow-list here to prevent the client // from creating arbitrary items if cheat mode is disabled. ItemData new_item = cmd.new_item; - new_item.enforce_min_stack_size(); + new_item.enforce_min_stack_size(c->version()); new_item.id = l->generate_item_id(c->lobby_client_id); - p->add_item(new_item); + p->add_item(new_item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, new_item); send_quest_function_call(c, cmd.success_function_id); @@ -3049,13 +3110,13 @@ static void on_photon_drop_exchange_for_s_rank_special_bb(shared_ptr c, // consistent in case of error p->inventory.find_item(cmd.item_id); - auto payment_item = p->remove_item(p->inventory.items[payment_item_index].data.id, cost, false); + auto payment_item = p->remove_item(p->inventory.items[payment_item_index].data.id, cost, c->version()); send_destroy_item_to_lobby(c, payment_item.id, cost); - auto item = p->remove_item(cmd.item_id, 1, false); + auto item = p->remove_item(cmd.item_id, 1, c->version()); send_destroy_item_to_lobby(c, item.id, cost); item.data1[2] = cmd.special_type; - p->add_item(item); + p->add_item(item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, item); send_quest_function_call(c, cmd.success_function_id); @@ -3096,14 +3157,14 @@ static void on_secret_lottery_ticket_exchange_bb(shared_ptr c, uint8_t, exchange_cmd.amount = 1; send_command_t(c, 0x60, 0x00, exchange_cmd); - send_destroy_item_to_lobby(c, slt_item_id, 1); + p->remove_item(slt_item_id, 1, c->version()); ItemData item = (s->secret_lottery_results.size() == 1) ? s->secret_lottery_results[0] : s->secret_lottery_results[l->random_crypt->next() % s->secret_lottery_results.size()]; - item.enforce_min_stack_size(); + item.enforce_min_stack_size(c->version()); item.id = l->generate_item_id(c->lobby_client_id); - p->add_item(item); + p->add_item(item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, item); } @@ -3129,7 +3190,7 @@ static void on_photon_crystal_exchange_bb(shared_ptr c, uint8_t, uint8_t check_size_t(data, size); auto p = c->character(); size_t index = p->inventory.find_item_by_primary_identifier(0x031002); - auto item = p->remove_item(p->inventory.items[index].data.id, 1, false); + auto item = p->remove_item(p->inventory.items[index].data.id, 1, c->version()); send_destroy_item_to_lobby(c, item.id, 1); } } @@ -3155,7 +3216,7 @@ static void on_quest_F95E_result_bb(shared_ptr c, uint8_t, uint8_t, void } else if (item.data1[0] == 0x00) { item.data1[4] |= 0x80; // Unidentified } else { - item.enforce_min_stack_size(); + item.enforce_min_stack_size(c->version()); } item.id = l->generate_item_id(0xFF); @@ -3179,7 +3240,7 @@ static void on_quest_F95F_result_bb(shared_ptr c, uint8_t, uint8_t, void } size_t index = p->inventory.find_item_by_primary_identifier(0x031004); // Photon Ticket - auto ticket_item = p->remove_item(p->inventory.items[index].data.id, result.first, false); + auto ticket_item = p->remove_item(p->inventory.items[index].data.id, result.first, c->version()); // TODO: Shouldn't we send a 6x29 here? Check if this causes desync in an // actual game @@ -3191,9 +3252,9 @@ static void on_quest_F95F_result_bb(shared_ptr c, uint8_t, uint8_t, void send_command_t(c, 0x60, 0x00, cmd_6xDB); ItemData new_item = result.second; - new_item.enforce_min_stack_size(); + new_item.enforce_min_stack_size(c->version()); new_item.id = l->generate_item_id(c->lobby_client_id); - p->add_item(new_item); + p->add_item(new_item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, new_item); S_GallonPlanResult_BB_25 out_cmd; @@ -3246,7 +3307,7 @@ static void on_quest_F960_result_bb(shared_ptr c, uint8_t, uint8_t, void item.id = l->generate_item_id(c->lobby_client_id); // If it's a weapon, make it unidentified - auto item_parameter_table = s->item_parameter_table_for_version(c->version()); + auto item_parameter_table = s->item_parameter_table(c->version()); if ((item.data1[0] == 0x00) && (item_parameter_table->is_item_rare(item) || (item.data1[4] != 0))) { item.data1[4] |= 0x80; } @@ -3257,15 +3318,15 @@ static void on_quest_F960_result_bb(shared_ptr c, uint8_t, uint8_t, void send_command_t(c, 0x60, 0x00, cmd_6xE3); try { - p->add_item(item); + p->add_item(item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, item); if (c->log.should_log(LogLevel::INFO)) { - string name = s->item_name_index->describe_item(c->version(), item); + string name = s->describe_item(c->version(), item, false); c->log.info("Awarded item %s", name.c_str()); } } catch (const out_of_range&) { if (c->log.should_log(LogLevel::INFO)) { - string name = s->item_name_index->describe_item(c->version(), item); + string name = s->describe_item(c->version(), item, false); c->log.info("Attempted to award item %s, but inventory was full", name.c_str()); } } @@ -3279,7 +3340,7 @@ static void on_momoka_item_exchange_bb(shared_ptr c, uint8_t, uint8_t, v auto p = c->character(); try { size_t found_index = p->inventory.find_item_by_primary_identifier(cmd.find_item.primary_identifier()); - auto found_item = p->remove_item(p->inventory.items[found_index].data.id, 1, false); + auto found_item = p->remove_item(p->inventory.items[found_index].data.id, 1, c->version()); G_ExchangeItemInQuest_BB_6xDB cmd_6xDB = {{0xDB, 0x04, c->lobby_client_id}, 1, found_item.id, 1}; send_command_t(c, 0x60, 0x00, cmd_6xDB); @@ -3289,9 +3350,9 @@ static void on_momoka_item_exchange_bb(shared_ptr c, uint8_t, uint8_t, v // TODO: We probably should use an allow-list here to prevent the client // from creating arbitrary items if cheat mode is disabled. ItemData new_item = cmd.replace_item; - new_item.enforce_min_stack_size(); + new_item.enforce_min_stack_size(c->version()); new_item.id = l->generate_item_id(c->lobby_client_id); - p->add_item(new_item); + p->add_item(new_item, c->version()); send_create_inventory_item_to_lobby(c, c->lobby_client_id, new_item); send_command(c, 0x23, 0x00); @@ -3314,10 +3375,10 @@ static void on_upgrade_weapon_attribute_bb(shared_ptr c, uint8_t, uint8_ uint32_t payment_primary_identifier = cmd.payment_type ? 0x031001 : 0x031000; size_t payment_index = p->inventory.find_item_by_primary_identifier(payment_primary_identifier); auto& payment_item = p->inventory.items[payment_index].data; - if (payment_item.stack_size() < cmd.payment_count) { + if (payment_item.stack_size(c->version()) < cmd.payment_count) { throw runtime_error("not enough payment items present"); } - p->remove_item(payment_item.id, cmd.payment_count, false); + p->remove_item(payment_item.id, cmd.payment_count, c->version()); send_destroy_item_to_lobby(c, payment_item.id, cmd.payment_count); uint8_t attribute_amount = 0; @@ -3445,7 +3506,7 @@ const SubcommandDefinition subcommand_definitions[0x100] = { /* 6x4F */ {0x43, 0x49, 0x4F, on_forward_check_game_client}, /* 6x50 */ {0x44, 0x4A, 0x50, on_forward_check_game_client}, /* 6x51 */ {0x00, 0x00, 0x51, nullptr}, - /* 6x52 */ {0x46, 0x4C, 0x52, forward_subcommand_m}, + /* 6x52 */ {0x46, 0x4C, 0x52, on_set_animation_state}, /* 6x53 */ {0x47, 0x4D, 0x53, on_forward_check_game}, /* 6x54 */ {0x48, 0x4E, 0x54, nullptr}, /* 6x55 */ {0x49, 0x4F, 0x55, on_forward_check_game_client}, diff --git a/src/ReplaySession.cc b/src/ReplaySession.cc index 42d24c62..9b3bd7a4 100644 --- a/src/ReplaySession.cc +++ b/src/ReplaySession.cc @@ -390,7 +390,19 @@ void ReplaySession::apply_default_mask(shared_ptr ev) { } break; case 0x6D: - if (!is_pre_v1(version)) { + if (version == Version::DC_NTE) { + const auto& header = check_size_t(cmd_data, cmd_size, 0xFFFF); + if (header.subcommand == 0x60) { + auto& mask = check_size_t(mask_data, mask_size, 0xFFFF); + mask.visual.name_color_checksum = 0; + } + } else if (version == Version::DC_V1_11_2000_PROTOTYPE) { + const auto& header = check_size_t(cmd_data, cmd_size, 0xFFFF); + if (header.subcommand == 0x67) { + auto& mask = check_size_t(mask_data, mask_size, 0xFFFF); + mask.visual.name_color_checksum = 0; + } + } else if (!is_pre_v1(version)) { const auto& header = check_size_t(cmd_data, cmd_size, 0xFFFF); if (header.subcommand == 0x70) { auto& mask = check_size_t(mask_data, mask_size, 0xFFFF); diff --git a/src/SaveFileFormats.cc b/src/SaveFileFormats.cc index 77c1858d..13f66485 100644 --- a/src/SaveFileFormats.cc +++ b/src/SaveFileFormats.cc @@ -396,7 +396,7 @@ PSOBBCharacterFile::SymbolChatEntry PSOBBCharacterFile::DefaultSymbolChatEntry:: // TODO: Eliminate duplication between this function and the parallel function // in PlayerBank -void PSOBBCharacterFile::add_item(const ItemData& item) { +void PSOBBCharacterFile::add_item(const ItemData& item, Version version) { uint32_t pid = item.primary_identifier(); // Annoyingly, meseta is in the disp data, not in the inventory struct. If the @@ -407,7 +407,7 @@ void PSOBBCharacterFile::add_item(const ItemData& item) { } // Handle combinable items - size_t combine_max = item.max_stack_size(); + size_t combine_max = item.max_stack_size(version); if (combine_max > 1) { // Get the item index if there's already a stack of the same item in the // player's inventory @@ -444,13 +444,13 @@ void PSOBBCharacterFile::add_item(const ItemData& item) { // TODO: Eliminate code duplication between this function and the parallel // function in PlayerBank -ItemData PSOBBCharacterFile::remove_item(uint32_t item_id, uint32_t amount, bool allow_meseta_overdraft) { +ItemData PSOBBCharacterFile::remove_item(uint32_t item_id, uint32_t amount, Version version) { ItemData ret; // If we're removing meseta (signaled by an invalid item ID), then create a // meseta item. if (item_id == 0xFFFFFFFF) { - this->remove_meseta(amount, allow_meseta_overdraft); + this->remove_meseta(amount, !is_v4(version)); ret.data1[0] = 0x04; ret.data2d = amount; return ret; @@ -464,7 +464,7 @@ ItemData PSOBBCharacterFile::remove_item(uint32_t item_id, uint32_t amount, bool // then create a new item and reduce the amount of the existing stack. Note // that passing amount == 0 means to remove the entire stack, so this only // applies if amount is nonzero. - if (amount && (inventory_item.data.stack_size() > 1) && + if (amount && (inventory_item.data.stack_size(version) > 1) && (amount < inventory_item.data.data1[5])) { if (is_equipped) { throw runtime_error("character has a combine item equipped"); @@ -578,29 +578,6 @@ void PSOBBCharacterFile::clear_all_material_usage() { } } -void PSOBBCharacterFile::print_inventory(FILE* stream, Version version, shared_ptr name_index) const { - fprintf(stream, "[PlayerInventory] Meseta: %" PRIu32 "\n", this->disp.stats.meseta.load()); - fprintf(stream, "[PlayerInventory] %hhu items\n", this->inventory.num_items); - for (size_t x = 0; x < this->inventory.num_items; x++) { - const auto& item = this->inventory.items[x]; - auto name = name_index->describe_item(version, item.data); - auto hex = item.data.hex(); - fprintf(stream, "[PlayerInventory] %2zu: [+%08" PRIX32 "] %s (%s)\n", x, item.flags.load(), hex.c_str(), name.c_str()); - } -} - -void PSOBBCharacterFile::print_bank(FILE* stream, Version version, shared_ptr name_index) const { - fprintf(stream, "[PlayerBank] Meseta: %" PRIu32 "\n", this->bank.meseta.load()); - fprintf(stream, "[PlayerBank] %" PRIu32 " items\n", this->bank.num_items.load()); - for (size_t x = 0; x < this->bank.num_items; x++) { - const auto& item = this->bank.items[x]; - const char* present_token = item.present ? "" : " (missing present flag)"; - auto name = name_index->describe_item(version, item.data); - auto hex = item.data.hex(); - fprintf(stream, "[PlayerBank] %3zu: %s (%s) (x%hu) %s\n", x, hex.c_str(), name.c_str(), item.amount.load(), present_token); - } -} - const array PSOBBCharacterFile::DEFAULT_SYMBOL_CHATS = { DefaultSymbolChatEntry{"\tEHello", 0x28, {0xFFFF, 0x000D, 0xFFFF, 0xFFFF}, {SymbolChat::FacePart{0x05, 0x18, 0x1D, 0x00}, {0x05, 0x28, 0x1D, 0x01}, {0x36, 0x20, 0x2A, 0x00}, {0x3C, 0x00, 0x32, 0x00}, {0xFF, 0x00, 0x00, 0x00}, {0xFF, 0x00, 0x00, 0x00}, {0xFF, 0x00, 0x00, 0x00}, {0xFF, 0x00, 0x00, 0x02}, {0xFF, 0x00, 0x00, 0x02}, {0xFF, 0x00, 0x00, 0x02}, {0xFF, 0x00, 0x00, 0x02}, {0xFF, 0x00, 0x00, 0x02}}}, DefaultSymbolChatEntry{"\tEGood-bye", 0x74, {0x0476, 0x000C, 0xFFFF, 0xFFFF}, {SymbolChat::FacePart{0x06, 0x15, 0x14, 0x00}, {0x06, 0x2B, 0x14, 0x01}, {0x05, 0x18, 0x1F, 0x00}, {0x05, 0x28, 0x1F, 0x01}, {0x36, 0x20, 0x2A, 0x00}, {0x3C, 0x00, 0x32, 0x00}, {0xFF, 0x00, 0x00, 0x00}, {0xFF, 0x00, 0x00, 0x02}, {0xFF, 0x00, 0x00, 0x02}, {0xFF, 0x00, 0x00, 0x02}, {0xFF, 0x00, 0x00, 0x02}, {0xFF, 0x00, 0x00, 0x02}}}, diff --git a/src/SaveFileFormats.hh b/src/SaveFileFormats.hh index 5da10b92..b36bcee5 100644 --- a/src/SaveFileFormats.hh +++ b/src/SaveFileFormats.hh @@ -231,8 +231,8 @@ struct PSOBBCharacterFile { const PlayerDispDataBBPreview& preview, std::shared_ptr level_table); - void add_item(const ItemData& item); - ItemData remove_item(uint32_t item_id, uint32_t amount, bool allow_meseta_overdraft); + void add_item(const ItemData& item, Version version); + ItemData remove_item(uint32_t item_id, uint32_t amount, Version version); void add_meseta(uint32_t amount); void remove_meseta(uint32_t amount, bool allow_overdraft); @@ -252,9 +252,6 @@ struct PSOBBCharacterFile { uint8_t get_material_usage(MaterialType which) const; void set_material_usage(MaterialType which, uint8_t usage); void clear_all_material_usage(); - - void print_inventory(FILE* stream, Version version, std::shared_ptr name_index) const; - void print_bank(FILE* stream, Version version, std::shared_ptr name_index) const; } __attribute__((packed)); struct PSOBBGuildCardFile { diff --git a/src/SendCommands.cc b/src/SendCommands.cc index 3717edda..cd92160a 100644 --- a/src/SendCommands.cc +++ b/src/SendCommands.cc @@ -2239,7 +2239,7 @@ void send_execute_item_trade(shared_ptr c, const vector& items cmd.item_count = items.size(); for (size_t x = 0; x < items.size(); x++) { cmd.item_datas[x] = items[x]; - cmd.item_datas[x].encode_for_version(c->version(), s->item_parameter_table_for_version(c->version())); + cmd.item_datas[x].encode_for_version(c->version(), s->item_parameter_table(c->version())); } send_command_t(c, 0xD3, 0x00, cmd); } @@ -2385,18 +2385,7 @@ void send_game_item_state(shared_ptr c) { G_SyncItemState_6x6D_Decompressed decompressed_header; for (size_t z = 0; z < 12; z++) { - if (z == c->lobby_client_id) { - // If the player is joining, adjust the next item ID to use the value - // before inventory item IDs are assigned - size_t num_items = c->character()->inventory.num_items; - uint32_t next_id = l->next_item_id_for_client[z] - num_items; - if ((next_id & 0xFFE00000) != (l->next_item_id_for_client[z] & 0xFFE00000)) { - throw runtime_error("next item ID underflow during joining player item state generation"); - } - decompressed_header.next_item_id_per_player[z] = next_id; - } else { - decompressed_header.next_item_id_per_player[z] = l->next_item_id_for_client[z]; - } + decompressed_header.next_item_id_per_player[z] = l->next_item_id_for_client[z]; } l->log.info("Sending next item IDs to client: %08" PRIX32 " %08" PRIX32 " %08" PRIX32 " %08" PRIX32, decompressed_header.next_item_id_per_player[0].load(), @@ -2426,7 +2415,7 @@ void send_game_item_state(shared_ptr c) { fi.unknown_a2 = 0; fi.drop_number = (floor == 0) ? 0xFFFF : (decompressed_header.next_drop_number_per_floor.at(floor - 1)++); fi.item = item->data; - fi.item.encode_for_version(c->version(), s->item_parameter_table_for_version(c->version())); + fi.item.encode_for_version(c->version(), s->item_parameter_table(c->version())); floor_items_w.put(fi); decompressed_header.floor_item_count_per_floor.at(floor)++; @@ -2504,7 +2493,7 @@ void send_drop_item_to_channel(shared_ptr s, Channel& ch, const Ite uint8_t subcommand = get_pre_v1_subcommand(ch.version, 0x51, 0x58, 0x5F); G_DropItem_PC_V3_BB_6x5F cmd = { {{subcommand, 0x0B, 0x0000}, {floor, from_enemy, entity_id, x, z, 0, 0, item}}, 0}; - cmd.item.item.encode_for_version(ch.version, s->item_parameter_table_for_version(ch.version)); + cmd.item.item.encode_for_version(ch.version, s->item_parameter_table(ch.version)); ch.send(0x60, 0x00, &cmd, sizeof(cmd)); } @@ -2523,7 +2512,7 @@ void send_drop_stacked_item_to_channel( shared_ptr s, Channel& ch, const ItemData& item, uint8_t floor, float x, float z) { uint8_t subcommand = get_pre_v1_subcommand(ch.version, 0x4F, 0x56, 0x5D); G_DropStackedItem_PC_V3_BB_6x5D cmd = {{{subcommand, 0x0A, 0x0000}, floor, 0, x, z, item}, 0}; - cmd.item_data.encode_for_version(ch.version, s->item_parameter_table_for_version(ch.version)); + cmd.item_data.encode_for_version(ch.version, s->item_parameter_table(ch.version)); ch.send(0x60, 0x00, &cmd, sizeof(cmd)); } diff --git a/src/ServerShell.cc b/src/ServerShell.cc index 91c396d5..0463120f 100644 --- a/src/ServerShell.cc +++ b/src/ServerShell.cc @@ -120,17 +120,24 @@ General commands:\n\ \n\ Server commands:\n\ reload ITEM [ITEM...]\n\ - Reload various parts of the server configuration. ITEMs can be:\n\ - licenses - reload the license index file\n\ - patches - reindex the PC and BB patch directories\n\ - battle-params - reload the enemy stats files\n\ - level-table - reload the level-up tables\n\ - item-tables - reload the item generation tables\n\ - ep3 - reload Episode 3 card definitions and maps (not download quests)\n\ - quests - reindex all quests (including Episode 3 download quests)\n\ - functions - recompile all client-side functions\n\ - dol-files - reindex all DOL files\n\ + Reload various parts of the server configuration. When you reload any item,\n\ + any other item that depends on it will be reloaded as well. The items are:\n\ + all - reindex/reload everything\n\ + battle-params - reload the BB enemy stats files\n\ + bb-private-keys - reload BB private keys\n\ config - reload most fields from config.json\n\ + dol-files - reindex all DOL files\n\ + drop-tables - reload drop tables\n\ + ep3-data - reload Episode 3 cards and maps (not download quests)\n\ + functions - recompile all client-side patches and functions\n\ + item-definitions - reload item definitions files\n\ + level-table - reload the level-up tables\n\ + licenses - reindex user licenses\n\ + patch-indexes - reindex the PC and BB patch directories\n\ + quest-index - reindex all quests (including Episode3 download quests)\n\ + teams - reindex all BB teams\n\ + text-index - reload in-game text\n\ + word-select-table - regenerate the Word Select translation table\n\ Reloading will not affect items that are in use; for example, if an Episode\n\ 3 battle is in progress, it will continue to use the previous map and card\n\ definitions. Similarly, BB clients are not forced to disconnect or reload\n\ @@ -285,41 +292,14 @@ Proxy session commands:\n\ if (types.empty()) { throw invalid_argument("no data type given"); } - for (const string& type : types) { - if (type == "licenses") { - this->state->load_licenses(); - } else if (type == "teams") { - this->state->load_teams(); - } else if (type == "patches") { - this->state->load_patch_indexes(); - } else if (type == "battle-params") { - this->state->load_battle_params(); - } else if (type == "level-table") { - this->state->load_level_table(); - } else if (type == "item-tables") { - this->state->load_item_name_index(); - this->state->load_item_tables(); - } else if (type == "word-select") { - this->state->load_word_select_table(); - } else if (type == "ep3") { - this->state->load_ep3_data(); - } else if (type == "quests") { - this->state->load_quest_index(); - } else if (type == "functions") { - auto config_json = this->state->load_config(); - this->state->compile_functions(); - } else if (type == "dol-files") { - auto config_json = this->state->load_config(); - this->state->load_dol_files(); - } else if (type == "config") { - auto config_json = this->state->load_config(); - this->state->parse_config(config_json, true); - this->state->resolve_ep3_card_names(); - this->state->load_teams(); - } else { - throw invalid_argument("incorrect data type"); + for (auto& type : types) { + for (char& ch : type) { + if (ch == '-') { + ch = '_'; + } } } + this->state->load_objects_and_downstream_dependents(types); } else if (command_name == "add-license") { auto l = this->state->license_index->create_license(); @@ -806,7 +786,7 @@ Proxy session commands:\n\ } auto s = ses->require_server_state(); - ItemData item = s->item_name_index->parse_item_description(ses->version(), command_args); + ItemData item = s->parse_item_description(ses->version(), command_args); item.id = random_object() | 0x80000000; if (command_name == "set-next-item") { diff --git a/src/ServerState.cc b/src/ServerState.cc index ce4b7703..682c2739 100644 --- a/src/ServerState.cc +++ b/src/ServerState.cc @@ -14,7 +14,7 @@ #include "NetworkAddresses.hh" #include "SendCommands.hh" #include "Text.hh" -#include "UnicodeTextSet.hh" +#include "TextIndex.hh" using namespace std; @@ -25,137 +25,39 @@ ServerState::QuestF960Result::QuestF960Result(const JSON& json, std::shared_ptr< this->probability_upgrade = json.get_int("ProbabilityUpgrade", 0); for (size_t day = 0; day < 7; day++) { for (const auto& item_it : json.get_list(day_names[day])) { - this->results[day].emplace_back(name_index->parse_item_description(Version::BB_V4, item_it->as_string())); + this->results[day].emplace_back(name_index->parse_item_description(item_it->as_string())); } } } +ServerState::ServerState() : creation_time(now()) { + this->create_load_step_graph(); +} + ServerState::ServerState(shared_ptr base, const string& config_filename, bool is_replay) : creation_time(now()), base(base), config_filename(config_filename), is_replay(is_replay), - dns_server_port(0), - ip_stack_debug(false), - allow_unregistered_users(false), - allow_pc_nte(false), - use_temp_licenses_for_prototypes(true), - allow_dc_pc_games(false), - allow_gc_xb_games(true), - allowed_drop_modes_v1_v2_normal(0x1F), - allowed_drop_modes_v1_v2_battle(0x07), - allowed_drop_modes_v1_v2_challenge(0x07), - allowed_drop_modes_v3_normal(0x1F), - allowed_drop_modes_v3_battle(0x07), - allowed_drop_modes_v3_challenge(0x07), - allowed_drop_modes_v4_normal(0x1D), // CLIENT not allowed - allowed_drop_modes_v4_battle(0x05), - allowed_drop_modes_v4_challenge(0x05), - default_drop_mode_v1_v2_normal(Lobby::DropMode::CLIENT), - default_drop_mode_v1_v2_battle(Lobby::DropMode::CLIENT), - default_drop_mode_v1_v2_challenge(Lobby::DropMode::CLIENT), - default_drop_mode_v3_normal(Lobby::DropMode::CLIENT), - default_drop_mode_v3_battle(Lobby::DropMode::CLIENT), - default_drop_mode_v3_challenge(Lobby::DropMode::CLIENT), - default_drop_mode_v4_normal(Lobby::DropMode::SERVER_SHARED), - default_drop_mode_v4_battle(Lobby::DropMode::SERVER_SHARED), - default_drop_mode_v4_challenge(Lobby::DropMode::SERVER_SHARED), - persistent_game_idle_timeout_usecs(0), - ep3_send_function_call_enabled(false), - catch_handler_exceptions(true), - ep3_infinite_meseta(false), - ep3_defeat_player_meseta_rewards({400, 500, 600, 700, 800}), - ep3_defeat_com_meseta_rewards({100, 200, 300, 400, 500}), - ep3_final_round_meseta_bonus(300), - ep3_jukebox_is_free(false), - ep3_behavior_flags(0), - hide_download_commands(true), - run_shell_behavior(RunShellBehavior::DEFAULT), - cheat_mode_behavior(BehaviorSwitch::OFF_BY_DEFAULT), - bb_global_exp_multiplier(1), - ep3_card_auction_points(0), - ep3_card_auction_min_size(0), - ep3_card_auction_max_size(0), - player_files_manager(make_shared(base)), - destroy_lobbies_event(event_new(base.get(), -1, EV_TIMEOUT, &ServerState::dispatch_destroy_lobbies, this), event_free), - next_lobby_id(1), - pre_lobby_event(0), - ep3_menu_song(-1), - local_address(0), - external_address(0), - proxy_allow_save_files(true), - proxy_enable_login_options(false) {} + player_files_manager(this->base ? make_shared(base) : nullptr), + destroy_lobbies_event(this->base ? event_new(base.get(), -1, EV_TIMEOUT, &ServerState::dispatch_destroy_lobbies, this) : nullptr, event_free) { + this->create_load_step_graph(); +} -void ServerState::init() { - vector> non_v1_only_lobbies; - vector> ep3_only_lobbies; +void ServerState::load_objects_and_downstream_dependents(const std::string& what) { + this->load_step_graph.run(what, false); +} - for (size_t x = 0; x < 20; x++) { - auto lobby_name = string_printf("LOBBY%zu", x + 1); - bool allow_v1 = (x <= 9); - bool allow_non_ep3 = (x <= 14); +void ServerState::load_objects_and_downstream_dependents(const std::vector& what) { + this->load_step_graph.run(what, false); +} - shared_ptr l = this->create_lobby(false); - l->set_flag(Lobby::Flag::PUBLIC); - l->set_flag(Lobby::Flag::DEFAULT); - l->set_flag(Lobby::Flag::PERSISTENT); - if (allow_non_ep3) { - if (allow_v1) { - l->allow_version(Version::DC_NTE); - l->allow_version(Version::DC_V1_11_2000_PROTOTYPE); - l->allow_version(Version::DC_V1); - } - l->allow_version(Version::DC_V2); - l->allow_version(Version::PC_NTE); - l->allow_version(Version::PC_V2); - l->allow_version(Version::GC_NTE); - l->allow_version(Version::GC_V3); - l->allow_version(Version::XB_V3); - l->allow_version(Version::BB_V4); - } - l->allow_version(Version::GC_EP3_NTE); - l->allow_version(Version::GC_EP3); +void ServerState::load_objects_and_upstream_dependents(const std::string& what) { + this->load_step_graph.run(what, true); +} - l->block = x + 1; - l->name = lobby_name; - l->max_clients = 12; - if (!allow_non_ep3) { - l->episode = Episode::EP3; - } - - if (allow_non_ep3) { - this->public_lobby_search_order.emplace_back(l); - } else { - ep3_only_lobbies.emplace_back(l); - } - } - - // Annoyingly, the CARD lobbies should be searched first, but are sent at the - // end of the lobby list command, so we have to change the search order - // manually here. - this->public_lobby_search_order.insert( - this->public_lobby_search_order.begin(), - ep3_only_lobbies.begin(), - ep3_only_lobbies.end()); - - // Load all the necessary data - auto config = this->load_config(); - this->collect_network_addresses(); - this->load_item_name_index(); - this->parse_config(config, false); - this->load_bb_private_keys(); - this->load_licenses(); - this->load_teams(); - this->load_patch_indexes(); - this->load_battle_params(); - this->load_level_table(); - this->load_item_tables(); - this->load_word_select_table(); - this->load_ep3_data(); - this->resolve_ep3_card_names(); - this->load_quest_index(); - this->compile_functions(); - this->load_dol_files(); +void ServerState::load_objects_and_upstream_dependents(const std::vector& what) { + this->load_step_graph.run(what, true); } void ServerState::add_client_to_available_lobby(shared_ptr c) { @@ -379,7 +281,7 @@ uint32_t ServerState::connect_address_for_client(shared_ptr c) const { } } -shared_ptr ServerState::information_menu_for_version(Version version) const { +shared_ptr ServerState::information_menu(Version version) const { if (is_v1_or_v2(version)) { return this->information_menu_v2; } else if (is_v3(version)) { @@ -388,7 +290,7 @@ shared_ptr ServerState::information_menu_for_version(Version version throw out_of_range("no information menu exists for this version"); } -shared_ptr ServerState::proxy_destinations_menu_for_version(Version version) const { +shared_ptr ServerState::proxy_destinations_menu(Version version) const { switch (version) { case Version::DC_NTE: case Version::DC_V1_11_2000_PROTOTYPE: @@ -410,7 +312,7 @@ shared_ptr ServerState::proxy_destinations_menu_for_version(Version } } -const vector>& ServerState::proxy_destinations_for_version(Version version) const { +const vector>& ServerState::proxy_destinations(Version version) const { switch (version) { case Version::DC_NTE: case Version::DC_V1_11_2000_PROTOTYPE: @@ -432,7 +334,19 @@ const vector>& ServerState::proxy_destinations_for_versio } } -shared_ptr ServerState::item_parameter_table_for_version(Version version) const { +shared_ptr> ServerState::information_contents_for_client(shared_ptr c) const { + return is_v1_or_v2(c->version()) ? this->information_contents_v2 : this->information_contents_v3; +} + +shared_ptr ServerState::quest_index(Version version) const { + return is_ep3(version) ? this->ep3_download_quest_index : this->default_quest_index; +} + +void ServerState::dispatch_destroy_lobbies(evutil_socket_t, short, void* ctx) { + reinterpret_cast(ctx)->lobbies_to_destroy.clear(); +} + +shared_ptr ServerState::item_parameter_table(Version version) const { switch (version) { case Version::DC_NTE: case Version::DC_V1_11_2000_PROTOTYPE: @@ -454,11 +368,24 @@ shared_ptr ServerState::item_parameter_table_for_versi } } +shared_ptr ServerState::item_name_index(Version version) const { + auto ret = this->item_name_indexes.at(static_cast(version)); + if (ret == nullptr) { + throw runtime_error("no item name index exists for this version"); + } + return ret; +} + +void ServerState::set_item_name_index(Version version, shared_ptr new_index) { + this->item_name_indexes.at(static_cast(version)) = new_index; +} + string ServerState::describe_item(Version version, const ItemData& item, bool include_color_codes) const { - return this->item_name_index->describe_item( - version, - item, - include_color_codes ? this->item_parameter_table_for_version(version) : nullptr); + return this->item_name_index(version)->describe_item(item, include_color_codes); +} + +ItemData ServerState::parse_item_description(Version version, const string& description) const { + return this->item_name_index(version)->parse_item_description(description); } void ServerState::set_port_configuration( @@ -553,6 +480,34 @@ shared_ptr ServerState::load_bb_file( } } +pair ServerState::parse_port_spec(const JSON& json) const { + if (json.is_list()) { + string addr = json.at(0).as_string(); + try { + addr = string_for_address(this->all_addresses.at(addr)); + } catch (const out_of_range&) { + } + return make_pair(addr, json.at(1).as_int()); + } else { + return make_pair("", json.as_int()); + } +} + +vector ServerState::parse_port_configuration(const JSON& json) const { + vector ret; + for (const auto& item_json_it : json.as_dict()) { + const auto& item_list = item_json_it.second; + PortConfiguration& pc = ret.emplace_back(); + pc.name = item_json_it.first; + auto spec = this->parse_port_spec(item_list->at(0)); + pc.addr = std::move(spec.first); + pc.port = spec.second; + pc.version = enum_for_name(item_list->at(1).as_string().c_str()); + pc.behavior = enum_for_name(item_list->at(2).as_string().c_str()); + } + return ret; +} + void ServerState::collect_network_addresses() { config_log.info("Reading network addresses"); this->all_addresses = get_local_addresses(); @@ -562,26 +517,13 @@ void ServerState::collect_network_addresses() { } } -JSON ServerState::load_config() const { - config_log.info("Loading configuration"); - return JSON::parse(load_file(this->config_filename)); -} - -static vector parse_port_configuration(const JSON& json) { - vector ret; - for (const auto& item_json_it : json.as_dict()) { - const auto& item_list = item_json_it.second; - PortConfiguration& pc = ret.emplace_back(); - pc.name = item_json_it.first; - pc.port = item_list->at(0).as_int(); - pc.version = enum_for_name(item_list->at(1).as_string().c_str()); - pc.behavior = enum_for_name(item_list->at(2).as_string().c_str()); +void ServerState::load_config() { + if (this->config_filename.empty()) { + throw logic_error("configuration filename is missing"); } - return ret; -} -void ServerState::parse_config(const JSON& json, bool is_reload) { - config_log.info("Parsing configuration"); + config_log.info("Loading configuration"); + auto json = JSON::parse(load_file(this->config_filename)); auto parse_behavior_switch = [&](const string& json_key, BehaviorSwitch default_value) -> ServerState::BehaviorSwitch { try { @@ -604,7 +546,7 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { this->name = json.at("ServerName").as_string(); - if (!is_reload) { + if (!this->config_loaded) { try { this->username = json.at("User").as_string(); if (this->username == "$SUDO_USER") { @@ -618,7 +560,12 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { } this->set_port_configuration(parse_port_configuration(json.at("PortConfiguration"))); - this->dns_server_port = json.get_int("DNSServerPort", this->dns_server_port); + try { + auto spec = this->parse_port_spec(json.at("DNSServerPort")); + this->dns_server_addr = std::move(spec.first); + this->dns_server_port = spec.second; + } catch (const out_of_range&) { + } try { for (const auto& item : json.at("IPStackListen").as_list()) { if (item->is_int()) { @@ -709,6 +656,7 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { this->persistent_game_idle_timeout_usecs = json.get_int("PersistentGameIdleTimeout", this->persistent_game_idle_timeout_usecs); this->cheat_mode_behavior = parse_behavior_switch("CheatModeBehavior", this->cheat_mode_behavior); + this->default_rare_notifs_enabled = json.get_bool("RareNotificationsEnabledByDefault", this->default_rare_notifs_enabled); this->ep3_send_function_call_enabled = json.get_bool("EnableEpisode3SendFunctionCall", this->ep3_send_function_call_enabled); this->catch_handler_exceptions = json.get_bool("CatchHandlerExceptions", this->catch_handler_exceptions); @@ -747,12 +695,17 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { try { for (const auto& it : json.get_dict("CardAuctionPool")) { + uint16_t card_id; + try { + card_id = this->ep3_card_index->definition_for_name_normalized(it.first)->def.card_id; + } catch (const out_of_range&) { + throw runtime_error(string_printf("Ep3 card \"%s\" in auction pool does not exist", it.first.c_str())); + } this->ep3_card_auction_pool.emplace_back( CardAuctionPoolEntry{ .probability = static_cast(it.second->at(0).as_int()), - .card_id = 0, - .min_price = static_cast(it.second->at(1).as_int()), - .card_name = it.first}); + .card_id = card_id, + .min_price = static_cast(it.second->at(1).as_int())}); } } catch (const out_of_range&) { } @@ -763,11 +716,18 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { if (ep3_trap_cards_json.size() != 5) { throw runtime_error("Episode3TrapCards must be a list of 5 lists"); } - this->ep3_trap_card_names.clear(); - for (const auto& trap_type_it : ep3_trap_cards_json) { - auto& names = this->ep3_trap_card_names.emplace_back(); - for (const auto& card_it : trap_type_it->as_list()) { - names.emplace_back(card_it->as_string()); + for (size_t trap_type = 0; trap_type < 5; trap_type++) { + auto& trap_card_ids = this->ep3_trap_card_ids[trap_type]; + for (const auto& card_it : ep3_trap_cards_json.at(trap_type)->as_list()) { + try { + const auto& card = this->ep3_card_index->definition_for_name_normalized(card_it->as_string()); + if (card->def.type != Episode3::CardType::ASSIST) { + throw runtime_error(string_printf("Ep3 card \"%s\" in trap card list is not an assist card", name.c_str())); + } + trap_card_ids.emplace_back(card->def.card_id); + } catch (const out_of_range&) { + throw runtime_error(string_printf("Ep3 card \"%s\" in trap card list does not exist", name.c_str())); + } } } } @@ -775,6 +735,7 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { } if (!this->is_replay) { + this->ep3_lobby_banners.clear(); for (const auto& it : json.get("Episode3LobbyBanners", JSON::list()).as_list()) { Image img("system/ep3/banners/" + it->at(2).as_string()); string gvm = encode_gvm(img, img.get_has_alpha() ? GVRDataFormat::RGB5A3 : GVRDataFormat::RGB565); @@ -829,7 +790,7 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { for (const auto& difficulty_it : type_it->as_list()) { auto& difficulty_res = type_res.emplace_back(); for (const auto& item_it : difficulty_it->as_list()) { - difficulty_res.emplace_back(this->item_name_index->parse_item_description(Version::BB_V4, item_it->as_string())); + difficulty_res.emplace_back(this->parse_item_description(Version::BB_V4, item_it->as_string())); } } } @@ -840,22 +801,22 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { for (const auto& it : json.get_list("QuestF95FResultItems")) { auto& list = it->as_list(); size_t price = list.at(0)->as_int(); - this->quest_F95F_results.emplace_back(make_pair(price, this->item_name_index->parse_item_description(Version::BB_V4, list.at(1)->as_string()))); + this->quest_F95F_results.emplace_back(make_pair(price, this->parse_item_description(Version::BB_V4, list.at(1)->as_string()))); } } catch (const out_of_range&) { } try { this->quest_F960_success_results.clear(); - this->quest_F960_failure_results = QuestF960Result(json.at("QuestF960FailureResultItems"), this->item_name_index); + this->quest_F960_failure_results = QuestF960Result(json.at("QuestF960FailureResultItems"), this->item_name_index(Version::BB_V4)); for (const auto& it : json.get_list("QuestF960SuccessResultItems")) { - this->quest_F960_success_results.emplace_back(*it, this->item_name_index); + this->quest_F960_success_results.emplace_back(*it, this->item_name_index(Version::BB_V4)); } } catch (const out_of_range&) { } try { this->secret_lottery_results.clear(); for (const auto& it : json.get_list("SecretLotteryResultItems")) { - this->secret_lottery_results.emplace_back(this->item_name_index->parse_item_description(Version::BB_V4, it->as_string())); + this->secret_lottery_results.emplace_back(this->parse_item_description(Version::BB_V4, it->as_string())); } } catch (const out_of_range&) { } @@ -864,13 +825,11 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { set_log_levels_from_json(json.get("LogLevels", JSON::dict())); - if (!is_reload) { - try { - this->run_shell_behavior = json.at("RunInteractiveShell").as_bool() - ? ServerState::RunShellBehavior::ALWAYS - : ServerState::RunShellBehavior::NEVER; - } catch (const out_of_range&) { - } + try { + this->run_shell_behavior = json.at("RunInteractiveShell").as_bool() + ? ServerState::RunShellBehavior::ALWAYS + : ServerState::RunShellBehavior::NEVER; + } catch (const out_of_range&) { } this->allow_dc_pc_games = json.get_bool("AllowDCPCGames", this->allow_dc_pc_games); @@ -888,13 +847,11 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { this->ep3_menu_song = json.get_int("Episode3MenuSong", this->ep3_menu_song); - if (!is_reload) { - try { - this->quest_category_index = make_shared(json.at("QuestCategories")); - } catch (const exception& e) { - throw runtime_error(string_printf( - "QuestCategories is missing or invalid in config.json (%s) - see config.example.json for an example", e.what())); - } + try { + this->quest_category_index = make_shared(json.at("QuestCategories")); + } catch (const exception& e) { + throw runtime_error(string_printf( + "QuestCategories is missing or invalid in config.json (%s) - see config.example.json for an example", e.what())); } config_log.info("Creating menus"); @@ -1046,6 +1003,8 @@ void ServerState::parse_config(const JSON& json, bool is_reload) { } } catch (const out_of_range&) { } + + this->config_loaded = true; } void ServerState::load_bb_private_keys() { @@ -1068,7 +1027,6 @@ void ServerState::load_licenses() { void ServerState::load_teams() { config_log.info("Indexing teams"); this->team_index = make_shared("system/teams", this->team_reward_defs_json); - this->team_reward_defs_json = nullptr; } void ServerState::load_patch_indexes() { @@ -1109,9 +1067,27 @@ void ServerState::load_level_table() { this->level_table = make_shared(*this->load_bb_file("PlyLevelTbl.prs"), true); } -shared_ptr ServerState::load_word_select_table_from_system() { +void ServerState::load_text_index() { + this->text_index = make_shared("system/text-sets", [&](Version version, const string& filename) -> shared_ptr { + try { + if (version == Version::BB_V4) { + return this->load_bb_file(filename); + } else { + return this->pc_patch_file_index->get("Media/PSO/" + filename)->load_data(); + } + } catch (const out_of_range&) { + return nullptr; + } catch (const cannot_open_file&) { + return nullptr; + } + }); +} + +void ServerState::load_word_select_table() { + config_log.info("Loading Word Select table"); + vector> name_alias_lists; - auto json = JSON::parse(load_file("system/word-select/name-alias-lists.json")); + auto json = JSON::parse(load_file("system/text-sets/ws-name-alias-lists.json")); for (const auto& coll_it : json.as_list()) { auto& coll = name_alias_lists.emplace_back(); for (const auto& str_it : coll_it->as_list()) { @@ -1119,60 +1095,117 @@ shared_ptr ServerState::load_word_select_table_from_system() { } } - config_log.info("(Word select) Loading pc_unitxt.prs"); - vector> pc_unitxt_data = parse_unicode_text_set(load_file("system/word-select/pc_unitxt.prs")); - config_log.info("(Word select) Loading bb_unitxt_ws.prs"); - vector> bb_unitxt_data = parse_unicode_text_set(load_file("system/word-select/bb_unitxt_ws.prs")); - vector pc_unitxt_collection = std::move(pc_unitxt_data.at(35)); - vector bb_unitxt_collection = std::move(bb_unitxt_data.at(0)); + const vector* pc_unitxt_collection = nullptr; + const vector* bb_unitxt_collection = nullptr; + unique_ptr pc_unitxt_data; + if (this->text_index) { + config_log.info("(Word select) Using PC_V2 unitxt_e.prs from text index"); + pc_unitxt_collection = &this->text_index->get(Version::PC_V2, 1, 35); + } else { + config_log.info("(Word select) Loading PC_V2 unitxt_e.prs"); + pc_unitxt_data = make_unique(load_file("system/text-sets/pc-v2/unitxt_e.prs")); + pc_unitxt_collection = &pc_unitxt_data->get(35); + } + config_log.info("(Word select) Loading BB_V4 unitxt_ws_e.prs"); + auto bb_unitxt_data = make_unique(load_file("system/text-sets/bb-v4/unitxt_ws_e.prs")); + bb_unitxt_collection = &bb_unitxt_data->get(0); config_log.info("(Word select) Loading DC_NTE data"); - WordSelectSet dc_nte_ws(load_file("system/word-select/dc_nte_ws_data.bin"), Version::DC_NTE, nullptr, true); + WordSelectSet dc_nte_ws(load_file("system/text-sets/dc-nte/ws_data.bin"), Version::DC_NTE, nullptr, true); config_log.info("(Word select) Loading DC_V1_11_2000_PROTOTYPE data"); - WordSelectSet dc_112000_ws(load_file("system/word-select/dc_112000_ws_data.bin"), Version::DC_V1_11_2000_PROTOTYPE, nullptr, false); + WordSelectSet dc_112000_ws(load_file("system/text-sets/dc-11-2000/ws_data.bin"), Version::DC_V1_11_2000_PROTOTYPE, nullptr, false); config_log.info("(Word select) Loading DC_V1 data"); - WordSelectSet dc_v1_ws(load_file("system/word-select/dcv1_ws_data.bin"), Version::DC_V1, nullptr, false); + WordSelectSet dc_v1_ws(load_file("system/text-sets/dc-v1/ws_data.bin"), Version::DC_V1, nullptr, false); config_log.info("(Word select) Loading DC_V2 data"); - WordSelectSet dc_v2_ws(load_file("system/word-select/dcv2_ws_data.bin"), Version::DC_V2, nullptr, false); + WordSelectSet dc_v2_ws(load_file("system/text-sets/dc-v2/ws_data.bin"), Version::DC_V2, nullptr, false); config_log.info("(Word select) Loading PC_NTE data"); - WordSelectSet pc_nte_ws(load_file("system/word-select/pc_nte_ws_data.bin"), Version::PC_NTE, &pc_unitxt_collection, false); + WordSelectSet pc_nte_ws(load_file("system/text-sets/pc-nte/ws_data.bin"), Version::PC_NTE, pc_unitxt_collection, false); config_log.info("(Word select) Loading PC_V2 data"); - WordSelectSet pc_v2_ws(load_file("system/word-select/pc_ws_data.bin"), Version::PC_V2, &pc_unitxt_collection, false); + WordSelectSet pc_v2_ws(load_file("system/text-sets/pc-v2/ws_data.bin"), Version::PC_V2, pc_unitxt_collection, false); config_log.info("(Word select) Loading GC_NTE data"); - WordSelectSet gc_nte_ws(load_file("system/word-select/gc_nte_ws_data.bin"), Version::GC_NTE, nullptr, false); + WordSelectSet gc_nte_ws(load_file("system/text-sets/gc-nte/ws_data.bin"), Version::GC_NTE, nullptr, false); config_log.info("(Word select) Loading GC_V3 data"); - WordSelectSet gc_v3_ws(load_file("system/word-select/gc_ws_data.bin"), Version::GC_V3, nullptr, false); + WordSelectSet gc_v3_ws(load_file("system/text-sets/gc-v3/ws_data.bin"), Version::GC_V3, nullptr, false); config_log.info("(Word select) Loading GC_EP3_NTE data"); - WordSelectSet gc_ep3_nte_ws(load_file("system/word-select/gc_ep3_nte_ws_data.bin"), Version::GC_EP3_NTE, nullptr, false); + WordSelectSet gc_ep3_nte_ws(load_file("system/text-sets/gc-ep3-nte/ws_data.bin"), Version::GC_EP3_NTE, nullptr, false); config_log.info("(Word select) Loading GC_EP3 data"); - WordSelectSet gc_ep3_ws(load_file("system/word-select/gc_ep3_ws_data.bin"), Version::GC_EP3, nullptr, false); + WordSelectSet gc_ep3_ws(load_file("system/text-sets/gc-ep3/ws_data.bin"), Version::GC_EP3, nullptr, false); config_log.info("(Word select) Loading XB_V3 data"); - WordSelectSet xb_v3_ws(load_file("system/word-select/xb_ws_data.bin"), Version::XB_V3, nullptr, false); + WordSelectSet xb_v3_ws(load_file("system/text-sets/xb-v3/ws_data.bin"), Version::XB_V3, nullptr, false); config_log.info("(Word select) Loading BB_V4 data"); - WordSelectSet bb_v4_ws(load_file("system/word-select/bb_ws_data.bin"), Version::BB_V4, &bb_unitxt_collection, false); + WordSelectSet bb_v4_ws(load_file("system/text-sets/bb-v4/ws_data.bin"), Version::BB_V4, bb_unitxt_collection, false); config_log.info("(Word select) Generating table"); - return make_shared( + this->word_select_table = make_shared( dc_nte_ws, dc_112000_ws, dc_v1_ws, dc_v2_ws, pc_nte_ws, pc_v2_ws, gc_nte_ws, gc_v3_ws, gc_ep3_nte_ws, gc_ep3_ws, xb_v3_ws, bb_v4_ws, name_alias_lists); } -void ServerState::load_word_select_table() { - config_log.info("Loading Word Select table"); - this->word_select_table = this->load_word_select_table_from_system(); +shared_ptr ServerState::create_item_name_index_for_version( + Version version, shared_ptr pmt, shared_ptr text_index) { + switch (version) { + case Version::DC_NTE: + return make_shared(version, pmt, text_index->get(Version::DC_NTE, 0, 2)); + case Version::DC_V1_11_2000_PROTOTYPE: + return make_shared(version, pmt, text_index->get(Version::DC_V1_11_2000_PROTOTYPE, 1, 2)); + case Version::DC_V1: + return make_shared(version, pmt, text_index->get(Version::DC_V1, 1, 2)); + case Version::DC_V2: + return make_shared(version, pmt, text_index->get(Version::DC_V2, 1, 3)); + case Version::PC_NTE: + return make_shared(version, pmt, text_index->get(Version::PC_NTE, 1, 3)); + case Version::PC_V2: + return make_shared(version, pmt, text_index->get(Version::PC_V2, 1, 3)); + case Version::GC_NTE: + return make_shared(version, pmt, text_index->get(Version::GC_NTE, 1, 0)); + case Version::GC_V3: + return make_shared(version, pmt, text_index->get(Version::GC_V3, 1, 0)); + case Version::XB_V3: + return make_shared(version, pmt, text_index->get(Version::XB_V3, 1, 0)); + case Version::BB_V4: + return make_shared(version, pmt, text_index->get(Version::BB_V4, 1, 1)); + default: + return nullptr; + } } -void ServerState::load_item_name_index() { - config_log.info("Loading item name index"); - this->item_name_index = make_shared( - JSON::parse(load_file("system/item-tables/names-v2.json")), - JSON::parse(load_file("system/item-tables/names-v3.json")), - JSON::parse(load_file("system/item-tables/names-v4.json"))); +void ServerState::load_item_name_indexes() { + config_log.info("Generating item name indexes"); + // TODO: Get ItemPMT files for the versions for which we don't have them + // (especially DC_V1) and add support for them. Currently we only have three + // ItemPMTs (PC, GC, and BB), so we can't use them to generate all the name + // indexes. + + auto pc_v2_index = create_item_name_index_for_version( + Version::PC_V2, this->item_parameter_table(Version::PC_V2), this->text_index); + this->set_item_name_index(Version::DC_NTE, pc_v2_index); + this->set_item_name_index(Version::DC_V1, pc_v2_index); + this->set_item_name_index(Version::DC_V2, pc_v2_index); + this->set_item_name_index(Version::PC_NTE, pc_v2_index); + this->set_item_name_index(Version::PC_V2, pc_v2_index); + + // All tools are stackable on 11/2000, so make a separate index (still using + // V2 data) with the correct version + auto dc_112000_index = make_shared( + Version::DC_V1_11_2000_PROTOTYPE, + this->item_parameter_table(Version::PC_V2), + this->text_index->get(Version::PC_V2, 1, 3)); + this->set_item_name_index(Version::DC_V1_11_2000_PROTOTYPE, dc_112000_index); + + auto gc_v3_index = create_item_name_index_for_version( + Version::GC_V3, this->item_parameter_table(Version::GC_V3), this->text_index); + this->set_item_name_index(Version::GC_NTE, gc_v3_index); + this->set_item_name_index(Version::GC_V3, gc_v3_index); + this->set_item_name_index(Version::XB_V3, gc_v3_index); + + auto bb_v4_index = create_item_name_index_for_version( + Version::BB_V4, this->item_parameter_table(Version::BB_V4), this->text_index); + this->set_item_name_index(Version::BB_V4, bb_v4_index); } -void ServerState::load_item_tables() { +void ServerState::load_drop_tables() { config_log.info("Loading rare item sets"); unordered_map> new_rare_item_sets; for (const auto& filename : list_directory_sorted("system/item-tables")) { @@ -1186,16 +1219,16 @@ void ServerState::load_item_tables() { if (ends_with(filename, "-v1.json")) { config_log.info("Loading v1 JSON rare item table %s", filename.c_str()); - new_rare_item_sets.emplace(basename, make_shared(JSON::parse(load_file(path)), Version::DC_V1, this->item_name_index)); + new_rare_item_sets.emplace(basename, make_shared(JSON::parse(load_file(path)), this->item_name_index(Version::DC_V1))); } else if (ends_with(filename, "-v2.json")) { config_log.info("Loading v2 JSON rare item table %s", filename.c_str()); - new_rare_item_sets.emplace(basename, make_shared(JSON::parse(load_file(path)), Version::PC_V2, this->item_name_index)); + new_rare_item_sets.emplace(basename, make_shared(JSON::parse(load_file(path)), this->item_name_index(Version::PC_V2))); } else if (ends_with(filename, "-v3.json")) { config_log.info("Loading v3 JSON rare item table %s", filename.c_str()); - new_rare_item_sets.emplace(basename, make_shared(JSON::parse(load_file(path)), Version::GC_V3, this->item_name_index)); + new_rare_item_sets.emplace(basename, make_shared(JSON::parse(load_file(path)), this->item_name_index(Version::GC_V3))); } else if (ends_with(filename, "-v4.json")) { config_log.info("Loading v4 JSON rare item table %s", filename.c_str()); - new_rare_item_sets.emplace(basename, make_shared(JSON::parse(load_file(path)), Version::BB_V4, this->item_name_index)); + new_rare_item_sets.emplace(basename, make_shared(JSON::parse(load_file(path)), this->item_name_index(Version::BB_V4))); } else if (ends_with(filename, ".afs")) { config_log.info("Loading AFS rare item table %s", filename.c_str()); @@ -1255,7 +1288,9 @@ void ServerState::load_item_tables() { config_log.info("Loading tekker adjustment table"); auto tekker_data = make_shared(load_file("system/item-tables/JudgeItem-gc.rel")); this->tekker_adjustment_set = make_shared(tekker_data); +} +void ServerState::load_item_definitions() { config_log.info("Loading item definition tables"); auto pmt_data_v2 = make_shared(prs_decompress(load_file("system/item-tables/ItemPMT-v2.prs"))); this->item_parameter_table_v2 = make_shared(pmt_data_v2, ItemParameterTable::Version::V2); @@ -1298,37 +1333,6 @@ void ServerState::load_ep3_data() { config_log.info("Loaded Episode 3 tournament state"); } -void ServerState::resolve_ep3_card_names() { - config_log.info("Resolving Episode 3 card names"); - for (auto& e : this->ep3_card_auction_pool) { - try { - const auto& card = this->ep3_card_index->definition_for_name_normalized(e.card_name); - e.card_id = card->def.card_id; - } catch (const out_of_range&) { - throw runtime_error(string_printf("Ep3 card \"%s\" in auction pool does not exist", e.card_name.c_str())); - } - } - - for (size_t z = 0; z < this->ep3_trap_card_ids.size(); z++) { - auto& ids = this->ep3_trap_card_ids[z]; - ids.clear(); - if (z < this->ep3_trap_card_names.size()) { - auto& names = this->ep3_trap_card_names[z]; - for (const auto& name : names) { - try { - const auto& card = this->ep3_card_index->definition_for_name_normalized(name); - if (card->def.type != Episode3::CardType::ASSIST) { - throw runtime_error(string_printf("Ep3 card \"%s\" in trap card list is not an assist card", name.c_str())); - } - ids.emplace_back(card->def.card_id); - } catch (const out_of_range&) { - throw runtime_error(string_printf("Ep3 card \"%s\" in trap card list does not exist", name.c_str())); - } - } - } - } -} - void ServerState::load_quest_index() { config_log.info("Collecting quests"); this->default_quest_index = make_shared("system/quests", this->quest_category_index, false); @@ -1346,14 +1350,137 @@ void ServerState::load_dol_files() { this->dol_file_index = make_shared("system/dol"); } -shared_ptr> ServerState::information_contents_for_client(shared_ptr c) const { - return is_v1_or_v2(c->version()) ? this->information_contents_v2 : this->information_contents_v3; +void ServerState::create_default_lobbies() { + if (this->default_lobbies_created) { + return; + } + this->default_lobbies_created = true; + + vector> non_v1_only_lobbies; + vector> ep3_only_lobbies; + + for (size_t x = 0; x < 20; x++) { + auto lobby_name = string_printf("LOBBY%zu", x + 1); + bool allow_v1 = (x <= 9); + bool allow_non_ep3 = (x <= 14); + + shared_ptr l = this->create_lobby(false); + l->event = this->pre_lobby_event; + l->set_flag(Lobby::Flag::PUBLIC); + l->set_flag(Lobby::Flag::DEFAULT); + l->set_flag(Lobby::Flag::PERSISTENT); + if (allow_non_ep3) { + if (allow_v1) { + l->allow_version(Version::DC_NTE); + l->allow_version(Version::DC_V1_11_2000_PROTOTYPE); + l->allow_version(Version::DC_V1); + } + l->allow_version(Version::DC_V2); + l->allow_version(Version::PC_NTE); + l->allow_version(Version::PC_V2); + l->allow_version(Version::GC_NTE); + l->allow_version(Version::GC_V3); + l->allow_version(Version::XB_V3); + l->allow_version(Version::BB_V4); + } + l->allow_version(Version::GC_EP3_NTE); + l->allow_version(Version::GC_EP3); + + l->block = x + 1; + l->name = lobby_name; + l->max_clients = 12; + if (!allow_non_ep3) { + l->episode = Episode::EP3; + } + + if (allow_non_ep3) { + this->public_lobby_search_order.emplace_back(l); + } else { + ep3_only_lobbies.emplace_back(l); + } + } + + // Annoyingly, the CARD lobbies should be searched first, but are sent at the + // end of the lobby list command, so we have to change the search order + // manually here. + this->public_lobby_search_order.insert( + this->public_lobby_search_order.begin(), + ep3_only_lobbies.begin(), + ep3_only_lobbies.end()); } -shared_ptr ServerState::quest_index_for_version(Version version) const { - return is_ep3(version) ? this->ep3_download_quest_index : this->default_quest_index; -} +void ServerState::create_load_step_graph() { + this->load_step_graph.add_step("all", {}, nullptr); -void ServerState::dispatch_destroy_lobbies(evutil_socket_t, short, void* ctx) { - reinterpret_cast(ctx)->lobbies_to_destroy.clear(); + // In: none + // Out: all_addresses + this->load_step_graph.add_step("network_addresses", {"all"}, bind(&ServerState::collect_network_addresses, this)); + + // In: none + // Out: bb_private_keys + this->load_step_graph.add_step("bb_private_keys", {"all"}, bind(&ServerState::load_bb_private_keys, this)); + + // In: none + // Out: license_index + this->load_step_graph.add_step("licenses", {"all"}, bind(&ServerState::load_licenses, this)); + + // In: none + // Out: pc_patch_file_index, bb_patch_file_index, bb_data_gsl + this->load_step_graph.add_step("patch_indexes", {"all"}, bind(&ServerState::load_patch_indexes, this)); + + // In: none + // Out: ep3_map_index, ep3_card_index, ep3_card_index_trial, ep3_com_deck_index, ep3_tournament_index + this->load_step_graph.add_step("ep3_data", {"all"}, bind(&ServerState::load_ep3_data, this)); + + // In: none + // Out: function_code_index + this->load_step_graph.add_step("functions", {"all"}, bind(&ServerState::compile_functions, this)); + + // In: none + // Out: dol_file_index + this->load_step_graph.add_step("dol_files", {"all"}, bind(&ServerState::load_dol_files, this)); + + // In: none + // Out: lobbies + this->load_step_graph.add_step("lobbies", {"all"}, bind(&ServerState::create_default_lobbies, this)); + + // In: bb_patch_file_index + // Out: battle_params + this->load_step_graph.add_step("battle_params", {"all", "patch_indexes"}, bind(&ServerState::load_battle_params, this)); + + // In: bb_patch_file_index + // Out: level_table + this->load_step_graph.add_step("level_table", {"all", "patch_indexes"}, bind(&ServerState::load_level_table, this)); + + // In: bb_patch_file_index + // Out: text_index + this->load_step_graph.add_step("text_index", {"all", "patch_indexes"}, bind(&ServerState::load_text_index, this)); + + // In: text_index (optional) + // Out: word_select_table + this->load_step_graph.add_step("word_select_table", {"all"}, bind(&ServerState::load_word_select_table, this)); + + // In: none + // Out: item_parameter_tables, mag_evolution_table + this->load_step_graph.add_step("item_definitions", {"all"}, bind(&ServerState::load_item_definitions, this)); + + // In: text_index, item_parameter_tables + // Out: item_name_indexes + this->load_step_graph.add_step("item_name_indexes", {"all", "text_index", "item_definitions"}, bind(&ServerState::load_item_name_indexes, this)); + + // In: none + // Out: rare_item_sets, common_item_sets, armor_random_set, tool_random_set, weapon_random_sets, tekker_adjustment_set + this->load_step_graph.add_step("drop_tables", {"all", "item_definitions", "item_name_indexes"}, bind(&ServerState::load_drop_tables, this)); + + // In: all_addresses, ep3_card_index, item_name_indexes + // Out: config, ep3_lobby_banners, quest_category_index, information menus, proxy destinations menus, team_reward_defs_json + this->load_step_graph.add_step("config", {"all", "network_addresses", "ep3_data", "item_name_indexes"}, bind(&ServerState::load_config, this)); + + // In: team_reward_defs_json + // Out: team_index + this->load_step_graph.add_step("teams", {"all", "config"}, bind(&ServerState::load_teams, this)); + + // In: quest_category_index + // Out: default_quest_index, ep3_download_quest_index + this->load_step_graph.add_step("quest_index", {"all", "config"}, bind(&ServerState::load_quest_index, this)); } diff --git a/src/ServerState.hh b/src/ServerState.hh index b7b581cb..cf6839b2 100644 --- a/src/ServerState.hh +++ b/src/ServerState.hh @@ -25,6 +25,7 @@ #include "Menu.hh" #include "PlayerFilesManager.hh" #include "Quest.hh" +#include "StepGraph.hh" #include "TeamIndex.hh" #include "WordSelectTable.hh" @@ -34,6 +35,7 @@ class Server; struct PortConfiguration { std::string name; + std::string addr; // Blank = listen on all interfaces (default) uint16_t port; Version version; ServerBehavior behavior; @@ -63,52 +65,58 @@ struct ServerState : public std::enable_shared_from_this { std::shared_ptr base; std::string config_filename; - bool is_replay; + bool is_replay = false; + bool config_loaded = false; + bool default_lobbies_created = false; + + StepGraph load_step_graph; std::string name; std::unordered_map> name_to_port_config; std::unordered_map> number_to_port_config; std::string username; - uint16_t dns_server_port; + std::string dns_server_addr; + uint16_t dns_server_port = 0; std::vector ip_stack_addresses; std::vector ppp_stack_addresses; - bool ip_stack_debug; - bool allow_unregistered_users; - bool allow_pc_nte; - bool use_temp_licenses_for_prototypes; - bool allow_dc_pc_games; - bool allow_gc_xb_games; - uint8_t allowed_drop_modes_v1_v2_normal; - uint8_t allowed_drop_modes_v1_v2_battle; - uint8_t allowed_drop_modes_v1_v2_challenge; - uint8_t allowed_drop_modes_v3_normal; - uint8_t allowed_drop_modes_v3_battle; - uint8_t allowed_drop_modes_v3_challenge; - uint8_t allowed_drop_modes_v4_normal; - uint8_t allowed_drop_modes_v4_battle; - uint8_t allowed_drop_modes_v4_challenge; - Lobby::DropMode default_drop_mode_v1_v2_normal; - Lobby::DropMode default_drop_mode_v1_v2_battle; - Lobby::DropMode default_drop_mode_v1_v2_challenge; - Lobby::DropMode default_drop_mode_v3_normal; - Lobby::DropMode default_drop_mode_v3_battle; - Lobby::DropMode default_drop_mode_v3_challenge; - Lobby::DropMode default_drop_mode_v4_normal; - Lobby::DropMode default_drop_mode_v4_battle; - Lobby::DropMode default_drop_mode_v4_challenge; + bool ip_stack_debug = false; + bool allow_unregistered_users = false; + bool allow_pc_nte = false; + bool use_temp_licenses_for_prototypes = true; + bool allow_dc_pc_games = true; + bool allow_gc_xb_games = true; + uint8_t allowed_drop_modes_v1_v2_normal = 0x1F; + uint8_t allowed_drop_modes_v1_v2_battle = 0x07; + uint8_t allowed_drop_modes_v1_v2_challenge = 0x07; + uint8_t allowed_drop_modes_v3_normal = 0x1F; + uint8_t allowed_drop_modes_v3_battle = 0x07; + uint8_t allowed_drop_modes_v3_challenge = 0x07; + uint8_t allowed_drop_modes_v4_normal = 0x1D; // CLIENT not allowed + uint8_t allowed_drop_modes_v4_battle = 0x05; + uint8_t allowed_drop_modes_v4_challenge = 0x05; + Lobby::DropMode default_drop_mode_v1_v2_normal = Lobby::DropMode::CLIENT; + Lobby::DropMode default_drop_mode_v1_v2_battle = Lobby::DropMode::CLIENT; + Lobby::DropMode default_drop_mode_v1_v2_challenge = Lobby::DropMode::CLIENT; + Lobby::DropMode default_drop_mode_v3_normal = Lobby::DropMode::CLIENT; + Lobby::DropMode default_drop_mode_v3_battle = Lobby::DropMode::CLIENT; + Lobby::DropMode default_drop_mode_v3_challenge = Lobby::DropMode::CLIENT; + Lobby::DropMode default_drop_mode_v4_normal = Lobby::DropMode::SERVER_SHARED; + Lobby::DropMode default_drop_mode_v4_battle = Lobby::DropMode::SERVER_SHARED; + Lobby::DropMode default_drop_mode_v4_challenge = Lobby::DropMode::SERVER_SHARED; QuestFlagsForDifficulty quest_flag_persist_mask; - uint64_t persistent_game_idle_timeout_usecs; - bool ep3_send_function_call_enabled; - bool catch_handler_exceptions; - bool ep3_infinite_meseta; - std::vector ep3_defeat_player_meseta_rewards; - std::vector ep3_defeat_com_meseta_rewards; - uint32_t ep3_final_round_meseta_bonus; - bool ep3_jukebox_is_free; - uint32_t ep3_behavior_flags; - bool hide_download_commands; - RunShellBehavior run_shell_behavior; - BehaviorSwitch cheat_mode_behavior; + uint64_t persistent_game_idle_timeout_usecs = 0; + bool ep3_send_function_call_enabled = false; + bool catch_handler_exceptions = true; + bool ep3_infinite_meseta = false; + std::vector ep3_defeat_player_meseta_rewards = {400, 500, 600, 700, 800}; + std::vector ep3_defeat_com_meseta_rewards = {100, 200, 300, 400, 500}; + uint32_t ep3_final_round_meseta_bonus = 300; + bool ep3_jukebox_is_free = false; + uint32_t ep3_behavior_flags = 0; + bool hide_download_commands = true; + RunShellBehavior run_shell_behavior = RunShellBehavior::DEFAULT; + BehaviorSwitch cheat_mode_behavior = BehaviorSwitch::OFF_BY_DEFAULT; + bool default_rare_notifs_enabled = false; std::vector> bb_private_keys; std::shared_ptr function_code_index; std::shared_ptr pc_patch_file_index; @@ -138,7 +146,8 @@ struct ServerState : public std::enable_shared_from_this { std::shared_ptr item_parameter_table_v3; std::shared_ptr item_parameter_table_v4; std::shared_ptr mag_evolution_table; - std::shared_ptr item_name_index; + std::shared_ptr text_index; + std::array, NUM_VERSIONS> item_name_indexes; std::shared_ptr word_select_table; std::array, 4> rare_enemy_rates_by_difficulty; std::shared_ptr rare_enemy_rates_challenge; @@ -160,21 +169,19 @@ struct ServerState : public std::enable_shared_from_this { std::vector quest_F960_success_results; QuestF960Result quest_F960_failure_results; std::vector secret_lottery_results; - uint16_t bb_global_exp_multiplier; + uint16_t bb_global_exp_multiplier = 1; std::shared_ptr ep3_tournament_index; - uint16_t ep3_card_auction_points; - uint16_t ep3_card_auction_min_size; - uint16_t ep3_card_auction_max_size; + uint16_t ep3_card_auction_points = 0; + uint16_t ep3_card_auction_min_size = 0; + uint16_t ep3_card_auction_max_size = 0; struct CardAuctionPoolEntry { uint64_t probability; uint16_t card_id; uint16_t min_price; - std::string card_name; }; std::vector ep3_card_auction_pool; - std::vector> ep3_trap_card_names; std::array, 5> ep3_trap_card_ids; struct Ep3LobbyBannerEntry { uint32_t type = 1; @@ -211,26 +218,31 @@ struct ServerState : public std::enable_shared_from_this { std::unordered_set> lobbies_to_destroy; std::shared_ptr destroy_lobbies_event; std::vector> public_lobby_search_order; - std::atomic next_lobby_id; - uint8_t pre_lobby_event; - int32_t ep3_menu_song; + std::atomic next_lobby_id = 1; + uint8_t pre_lobby_event = 0; + int32_t ep3_menu_song = -1; std::map all_addresses; - uint32_t local_address; - uint32_t external_address; + uint32_t local_address = 0; + uint32_t external_address = 0; - bool proxy_allow_save_files; - bool proxy_enable_login_options; + bool proxy_allow_save_files = true; + bool proxy_enable_login_options = false; std::shared_ptr proxy_server; std::shared_ptr game_server; + ServerState(); ServerState(std::shared_ptr base, const std::string& config_filename, bool is_replay); ServerState(const ServerState&) = delete; ServerState(ServerState&&) = delete; ServerState& operator=(const ServerState&) = delete; ServerState& operator=(ServerState&&) = delete; - void init(); + + void load_objects_and_downstream_dependents(const std::string& what); + void load_objects_and_downstream_dependents(const std::vector& what); + void load_objects_and_upstream_dependents(const std::string& what); + void load_objects_and_upstream_dependents(const std::vector& what); void add_client_to_available_lobby(std::shared_ptr c); void remove_client_from_lobby(std::shared_ptr c); @@ -257,15 +269,18 @@ struct ServerState : public std::enable_shared_from_this { uint32_t connect_address_for_client(std::shared_ptr c) const; - std::shared_ptr information_menu_for_version(Version version) const; - std::shared_ptr proxy_destinations_menu_for_version(Version version) const; - const std::vector>& proxy_destinations_for_version(Version version) const; + std::shared_ptr information_menu(Version version) const; + std::shared_ptr proxy_destinations_menu(Version version) const; + const std::vector>& proxy_destinations(Version version) const; - std::shared_ptr item_parameter_table_for_version(Version version) const; + std::shared_ptr item_parameter_table(Version version) const; + std::shared_ptr item_name_index(Version version) const; + void set_item_name_index(Version version, std::shared_ptr); std::string describe_item(Version version, const ItemData& item, bool include_color_codes) const; + ItemData parse_item_description(Version version, const std::string& description) const; std::shared_ptr> information_contents_for_client(std::shared_ptr c) const; - std::shared_ptr quest_index_for_version(Version version) const; + std::shared_ptr quest_index(Version version) const; void set_port_configuration(const std::vector& port_configs); @@ -274,21 +289,27 @@ struct ServerState : public std::enable_shared_from_this { const std::string& gsl_filename = "", const std::string& bb_directory_filename = "") const; - JSON load_config() const; + std::pair parse_port_spec(const JSON& json) const; + std::vector parse_port_configuration(const JSON& json) const; + + void create_load_step_graph(); + void create_default_lobbies(); void collect_network_addresses(); - void parse_config(const JSON& config_json, bool is_reload); + void load_config(); void load_bb_private_keys(); void load_licenses(); void load_teams(); void load_patch_indexes(); void load_battle_params(); void load_level_table(); - void load_item_name_index(); - void load_item_tables(); - static std::shared_ptr load_word_select_table_from_system(); + void load_text_index(); + static std::shared_ptr create_item_name_index_for_version( + Version version, std::shared_ptr pmt, std::shared_ptr text_index); + void load_item_name_indexes(); + void load_drop_tables(); + void load_item_definitions(); void load_word_select_table(); void load_ep3_data(); - void resolve_ep3_card_names(); void load_quest_index(); void compile_functions(); void load_dol_files(); diff --git a/src/StaticGameData.cc b/src/StaticGameData.cc index e0895e2e..c7047d48 100644 --- a/src/StaticGameData.cc +++ b/src/StaticGameData.cc @@ -493,12 +493,15 @@ uint8_t language_code_for_char(char language_char) { } } -size_t max_stack_size_for_item(uint8_t data0, uint8_t data1) { +size_t max_stack_size_for_item(Version version, uint8_t data0, uint8_t data1) { if (data0 == 4) { return 999999; } if (data0 == 3) { - if ((data1 < 9) && (data1 != 2)) { + if (version == Version::DC_V1_11_2000_PROTOTYPE) { + // All tool items are stackable up to x10 on this version + return 10; + } else if ((data1 < 9) && (data1 != 2)) { return 10; } else if (data1 == 0x10) { return 99; diff --git a/src/StaticGameData.hh b/src/StaticGameData.hh index 87861eaf..dfcfbdad 100644 --- a/src/StaticGameData.hh +++ b/src/StaticGameData.hh @@ -7,6 +7,7 @@ #include #include "FileContentsCache.hh" +#include "Version.hh" enum class Episode { NONE = 0, @@ -32,7 +33,7 @@ enum class GameMode { const char* name_for_mode(GameMode mode); const char* abbreviation_for_mode(GameMode mode); -size_t max_stack_size_for_item(uint8_t data0, uint8_t data1); +size_t max_stack_size_for_item(Version version, uint8_t data0, uint8_t data1); extern const std::vector tech_id_to_name; extern const std::unordered_map name_to_tech_id; diff --git a/src/StepGraph.cc b/src/StepGraph.cc new file mode 100644 index 00000000..a78bfcc2 --- /dev/null +++ b/src/StepGraph.cc @@ -0,0 +1,83 @@ +#include "StepGraph.hh" + +using namespace std; + +void StepGraph::add_step(const string& name, const vector& depends_on_names, function&& execute) { + auto new_step = make_shared(); + new_step->execute = std::move(execute); + this->steps.emplace(name, new_step); + + for (const auto& depends_on_name : depends_on_names) { + auto upstream_step = this->steps.at(depends_on_name); + upstream_step->downstream_dependencies.emplace_back(new_step); + new_step->upstream_dependencies.emplace_back(upstream_step); + } +} + +void StepGraph::run(const string& start_step_name, bool run_upstreams) { + vector start_step_names({start_step_name}); + this->run(start_step_names, run_upstreams); +} + +void StepGraph::run(const vector& start_step_names, bool run_upstreams) { + // Collect all steps to run + deque> steps_to_visit; + try { + for (const auto& start_step_name : start_step_names) { + steps_to_visit.emplace_back(this->steps.at(start_step_name)); + } + } catch (const out_of_range&) { + throw runtime_error("invalid step name"); + } + unordered_set> steps_to_run; + while (!steps_to_visit.empty()) { + auto step = std::move(steps_to_visit.front()); + steps_to_visit.pop_front(); + if (steps_to_run.emplace(step).second) { + if (run_upstreams) { + for (const auto& w_other_step : step->upstream_dependencies) { + auto other_step = w_other_step.lock(); + if (!other_step) { + throw runtime_error("upstream step is deleted"); + } + steps_to_visit.emplace_back(other_step); + } + } else { + for (const auto& other_step : step->downstream_dependencies) { + steps_to_visit.emplace_back(other_step); + } + } + } + } + + // Topological sort: repeatedly take all steps that are not a downstream + // dependency of any other step in the set + vector> steps_order; + steps_order.reserve(steps_to_run.size()); + while (!steps_to_run.empty()) { + unordered_set> candidate_steps = steps_to_run; + for (const auto& step : steps_to_run) { + for (const auto& downstream_step : step->downstream_dependencies) { + candidate_steps.erase(downstream_step); + } + } + if (candidate_steps.empty()) { + throw logic_error("dependency graph contains a cycle"); + } + for (const auto& step : candidate_steps) { + steps_to_run.erase(step); + steps_order.emplace_back(step); + } + } + + // Run the steps in order + uint64_t run_id = ++this->last_run_id; + for (auto step : steps_order) { + if (step->last_run_id < run_id) { + step->last_run_id = run_id; + if (step->execute) { + step->execute(); + } + } + } +} diff --git a/src/StepGraph.hh b/src/StepGraph.hh new file mode 100644 index 00000000..9bb00fba --- /dev/null +++ b/src/StepGraph.hh @@ -0,0 +1,28 @@ +#pragma once + +#include + +#include +#include +#include +#include +#include +#include + +struct StepGraph { + struct Step { + std::vector> downstream_dependencies; + std::vector> upstream_dependencies; + std::function execute; + uint64_t last_run_id = 0; + }; + + std::unordered_map> steps; + uint64_t last_run_id = 0; + + StepGraph() = default; + + void add_step(const std::string& name, const std::vector& depends_on_names, std::function&& execute); + void run(const std::string& start_step, bool run_upstreams); + void run(const std::vector& start_steps, bool run_upstreams); +}; diff --git a/src/TextArchive.cc b/src/TextArchive.cc deleted file mode 100644 index a7a0f5a9..00000000 --- a/src/TextArchive.cc +++ /dev/null @@ -1,302 +0,0 @@ -#include "TextArchive.hh" - -#include -#include -#include -#include -#include - -#include "Compression.hh" -#include "PSOEncryption.hh" -#include "Text.hh" - -using namespace std; - -TextArchive::TextArchive(const string& pr2_data, bool big_endian) { - if (big_endian) { - this->load_t(pr2_data); - } else { - this->load_t(pr2_data); - } -} - -TextArchive::TextArchive(const JSON& json) { - for (const auto& collection_json : json.at("collections").as_list()) { - auto& collection = this->collections.emplace_back(); - for (const auto& string_json : collection_json->as_list()) { - collection.emplace_back(string_json->as_string()); - } - } - - for (const auto& keyboard_json : json.at("keyboards").as_list()) { - auto& keyboard = this->keyboards.emplace_back(make_unique()); - for (size_t y = 0; y < keyboard->size(); y++) { - auto& row = keyboard->at(y); - const auto& row_json = keyboard_json->at(y); - for (size_t x = 0; x < row.size(); x++) { - row[x] = row_json.at(x).as_int(); - } - } - } - - this->keyboard_selector_width = json.at("keyboard_selector_width").as_int(); -} - -JSON TextArchive::json() const { - auto collections_json = JSON::list(); - for (const auto& collection : this->collections) { - auto collection_json = JSON::list(); - for (const auto& s : collection) { - collection_json.emplace_back(s); - } - collections_json.emplace_back(std::move(collection_json)); - } - auto keyboards_json = JSON::list(); - for (const auto& kb : this->keyboards) { - JSON keyboard_json = JSON::list(); - for (size_t y = 0; y < kb->size(); y++) { - const auto& row = kb->at(y); - JSON row_json = JSON::list(); - for (size_t x = 0; x < row.size(); x++) { - row_json.emplace_back(row[x]); - } - keyboard_json.emplace_back(std::move(row_json)); - } - keyboards_json.emplace_back(std::move(keyboard_json)); - } - return JSON::dict({ - {"collections", std::move(collections_json)}, - {"keyboards", std::move(keyboards_json)}, - {"keyboard_selector_width", this->keyboard_selector_width}, - }); -} - -const string& TextArchive::get_string(size_t collection_index, size_t index) const { - return this->collections.at(collection_index).at(index); -} - -void TextArchive::set_string(size_t collection_index, size_t index, const string& data) { - if (collection_index >= this->collections.size()) { - this->collections.resize(collection_index + 1); - } - auto& coll = this->collections[collection_index]; - if (index >= coll.size()) { - coll.resize(index + 1); - } - coll[index] = data; -} - -void TextArchive::set_string(size_t collection_index, size_t index, string&& data) { - if (collection_index >= this->collections.size()) { - this->collections.resize(collection_index + 1); - } - auto& coll = this->collections[collection_index]; - if (index >= coll.size()) { - coll.resize(index + 1); - } - coll[index] = std::move(data); -} - -void TextArchive::resize_collection(size_t collection_index, size_t size) { - if (collection_index >= this->collections.size()) { - this->collections.resize(collection_index + 1); - } - this->collections[collection_index].resize(size); -} - -void TextArchive::resize_collection(size_t num_collections) { - this->collections.resize(num_collections); -} - -TextArchive::Keyboard TextArchive::get_keyboard(size_t kb_index) const { - return *this->keyboards.at(kb_index); -} - -void TextArchive::set_keyboard(size_t kb_index, const Keyboard& kb) { - if (kb_index >= this->keyboards.size()) { - this->keyboards.resize(kb_index + 1); - } - this->keyboards[kb_index] = make_unique(kb); -} - -void TextArchive::resize_keyboards(size_t num_keyboards) { - this->keyboards.resize(num_keyboards); -} - -pair TextArchive::serialize(bool big_endian) const { - if (big_endian) { - return this->serialize_t(); - } else { - return this->serialize_t(); - } -} - -template -void TextArchive::load_t(const string& pr2_data) { - using U32T = std::conditional_t; - using U16T = std::conditional_t; - - // The structure is as follows: - // Footer: - // U32T keyboard_index_offset ->: - // U8 num_keyboards - // U8 keyboard_selector_width - // U8 unused[2] - // U32T keyboards_offset ->: - // U32T keyboard_offset[num_keyboards] ->: - // U16T key_defs[7][16] - // U32T collections_offset ->: - // U32T[...] strings_offset ->: - // U32T[...] string_offset ->: - // char string[...\0] - // - - auto pr2_decrypted = decrypt_pr2_data(pr2_data); - auto decompressed = prs_decompress(pr2_decrypted.compressed_data); - StringReader r(decompressed); - - // Annoyingly, there doesn't appear to be any bounds-checking on the language - // functions, so there are no counts of strings in each collection. We have to - // figure out where each collection ends by collecting all the relevant - // offsets in the file instead. - set used_offsets; - used_offsets.emplace(r.size() - 8); - - uint32_t keyboard_index_offset = r.pget(r.size() - 8); - used_offsets.emplace(keyboard_index_offset); - size_t num_keyboards = r.pget_u8(keyboard_index_offset); - this->keyboard_selector_width = r.pget_u8(keyboard_index_offset + 1); - uint32_t keyboards_offset = r.pget(keyboard_index_offset + 4); - used_offsets.emplace(keyboards_offset); - while (this->keyboards.size() < num_keyboards) { - uint32_t keyboard_offset = r.pget(keyboards_offset + 4 * this->keyboards.size()); - used_offsets.emplace(keyboard_offset); - auto& kb = this->keyboards.emplace_back(make_unique()); - auto key_r = r.sub(keyboard_offset, sizeof(Keyboard)); - for (size_t y = 0; y < kb->size(); y++) { - auto& row = kb->at(y); - for (size_t x = 0; x < row.size(); x++) { - row[x] = key_r.get(); - } - } - } - - uint32_t collections_offset = r.pget(r.size() - 4); - for (uint32_t offset = collections_offset; !used_offsets.count(offset); offset += 4) { - used_offsets.emplace(r.pget(offset)); - } - used_offsets.emplace(collections_offset); - - for (uint32_t offset = collections_offset; (offset == collections_offset) || !used_offsets.count(offset); offset += 4) { - auto& collection = this->collections.emplace_back(); - uint32_t first_string_offset_offset = r.pget(offset); - for (uint32_t string_offset_offset = first_string_offset_offset; - (string_offset_offset == first_string_offset_offset) || !used_offsets.count(string_offset_offset); - string_offset_offset += 4) { - collection.emplace_back(r.pget_cstr(r.pget(string_offset_offset))); - } - } -} - -template -pair TextArchive::serialize_t() const { - using U32T = std::conditional_t; - using U16T = std::conditional_t; - - StringWriter w; - set relocation_offsets; - auto put_offset_u32 = [&](uint32_t v) { - relocation_offsets.emplace(w.size()); - w.put(v); - }; - - uint32_t collections_offset; - { - unordered_map string_to_offset; - for (const auto& collection : this->collections) { - for (const auto& s : collection) { - if (string_to_offset.emplace(s, w.size()).second) { - w.write(s); - w.put_u8(0); - while (w.size() & 3) { - w.put_u8(0); - } - } - } - } - - vector collection_offsets; - for (const auto& collection : this->collections) { - collection_offsets.emplace_back(w.size()); - for (const auto& s : collection) { - put_offset_u32(string_to_offset.at(s)); - } - } - - collections_offset = w.size(); - for (uint32_t collection_offset : collection_offsets) { - put_offset_u32(collection_offset); - } - } - - uint32_t keyboard_index_offset; - { - vector keyboard_offsets; - for (const auto& keyboard : this->keyboards) { - keyboard_offsets.emplace_back(w.size()); - for (size_t y = 0; y < keyboard->size(); y++) { - const auto& row = keyboard->at(y); - for (size_t x = 0; x < row.size(); x++) { - w.put(row[x]); - } - } - } - - uint32_t keyboards_offset = w.size(); - for (uint32_t keyboard_offset : keyboard_offsets) { - put_offset_u32(keyboard_offset); - } - - keyboard_index_offset = w.size(); - w.put_u8(keyboard_offsets.size()); - w.put_u8(this->keyboard_selector_width); - w.put_u16(0); - put_offset_u32(keyboards_offset); - } - - put_offset_u32(keyboard_index_offset); - put_offset_u32(collections_offset); - - StringWriter reloc_w; - reloc_w.put_u32(0); - reloc_w.put(relocation_offsets.size()); - reloc_w.put_u64(0); - reloc_w.put(w.size() - 8); - reloc_w.put_u32(0); - reloc_w.put_u64(0); - { - size_t offset = 0; - for (size_t reloc_offset : relocation_offsets) { - if (reloc_offset & 3) { - throw logic_error("misaligned relocation"); - } - size_t num_words = (reloc_offset - offset) >> 2; - if (num_words > 0xFFFF) { - throw runtime_error("relocation offset too far away"); - } - reloc_w.put(num_words); - offset = reloc_offset; - } - } - - const string& pr2_data = w.str(); - const string& pr3_data = reloc_w.str(); - print_data(stderr, pr2_data); - string pr2_compressed = prs_compress_optimal(pr2_data.data(), pr2_data.size()); - string pr3_compressed = prs_compress_optimal(pr3_data.data(), pr3_data.size()); - print_data(stderr, pr2_compressed); - string pr2_ret = encrypt_pr2_data(pr2_compressed, pr2_data.size(), random_object()); - string pr3_ret = encrypt_pr2_data(pr3_compressed, pr3_data.size(), random_object()); - print_data(stderr, pr2_ret); - return make_pair(std::move(pr2_ret), std::move(pr3_ret)); -} diff --git a/src/TextArchive.hh b/src/TextArchive.hh deleted file mode 100644 index f99f7f2b..00000000 --- a/src/TextArchive.hh +++ /dev/null @@ -1,51 +0,0 @@ -#pragma once - -#include - -#include -#include -#include -#include - -#include "Text.hh" - -// This class implements loading and saving of text archives, commonly found in -// PSO games with filenames like TextEnglish.pr2 and TextEnglish.pr3. The game -// requires both files, but newserv needs only the pr2 file to load a text -// archive. When saving (serializing), both pr2 and pr3 files are generated. -class TextArchive { -public: - using Keyboard = parray, 7>; - - explicit TextArchive(const JSON& json); - TextArchive(const std::string& pr2_data, bool big_endian); - ~TextArchive() = default; - - JSON json() const; - - const std::string& get_string(size_t collection_index, size_t index) const; - void set_string(size_t collection_index, size_t index, const std::string& data); - void set_string(size_t collection_index, size_t index, std::string&& data); - void resize_collection(size_t collection_index, size_t size); - void resize_collection(size_t num_collections); - - Keyboard get_keyboard(size_t kb_index) const; - void set_keyboard(size_t kb_index, const Keyboard& kb); - void resize_keyboards(size_t num_keyboards); - - uint8_t get_keyboard_selector_width() const; - void set_keyboard_selector_width(uint8_t width); - - // Returns (pr2_data, pr3_data) - std::pair serialize(bool big_endian) const; - -private: - template - void load_t(const std::string& pr2_data); - template - std::pair serialize_t() const; - - std::vector> collections; - std::vector> keyboards; - uint8_t keyboard_selector_width; -}; diff --git a/src/TextIndex.cc b/src/TextIndex.cc new file mode 100644 index 00000000..c42c0320 --- /dev/null +++ b/src/TextIndex.cc @@ -0,0 +1,557 @@ +#include "TextIndex.hh" + +#include +#include +#include +#include +#include + +#include "Compression.hh" +#include "Loggers.hh" +#include "PSOEncryption.hh" +#include "StaticGameData.hh" +#include "Text.hh" + +using namespace std; + +TextSet::TextSet(const JSON& json) { + for (const auto& coll_json : json.as_list()) { + auto& collection = this->collections.emplace_back(); + for (const auto& s_json : coll_json->as_list()) { + collection.emplace_back(s_json->as_string()); + } + } +} + +TextSet::TextSet(JSON&& json) { + for (const auto& coll_json : json.as_list()) { + auto& collection = this->collections.emplace_back(); + for (const auto& s_json : coll_json->as_list()) { + collection.emplace_back(std::move(s_json->as_string())); + } + } +} + +JSON TextSet::json() const { + JSON j = JSON::list(); + for (const auto& collection : this->collections) { + JSON& coll_j = j.emplace_back(JSON::list()); + for (const auto& s : collection) { + coll_j.emplace_back(s); + } + } + return j; +} + +size_t TextSet::count(size_t collection_index) const { + return this->collections.at(collection_index).size(); +} + +size_t TextSet::count() const { + return this->collections.size(); +} + +const std::string& TextSet::get(size_t collection_index, size_t string_index) const { + return this->get(collection_index).at(string_index); +} + +const vector& TextSet::get(size_t collection_index) const { + return this->collections.at(collection_index); +} + +void TextSet::set(size_t collection_index, size_t string_index, const std::string& data) { + this->ensure_slot_exists(collection_index, string_index); + this->collections[collection_index][string_index] = data; +} + +void TextSet::set(size_t collection_index, size_t string_index, std::string&& data) { + this->ensure_slot_exists(collection_index, string_index); + this->collections[collection_index][string_index] = std::move(data); +} + +void TextSet::set(size_t collection_index, const std::vector& coll) { + this->ensure_collection_exists(collection_index); + this->collections[collection_index] = coll; +} + +void TextSet::set(size_t collection_index, std::vector&& coll) { + this->ensure_collection_exists(collection_index); + this->collections[collection_index] = std::move(coll); +} + +void TextSet::truncate_collection(size_t collection_index, size_t new_entry_count) { + if (collection_index >= this->collections.size()) { + this->collections.resize(collection_index + 1); + } + this->collections[collection_index].resize(new_entry_count); +} + +void TextSet::truncate(size_t new_collection_count) { + this->collections.resize(new_collection_count); +} + +void TextSet::ensure_slot_exists(size_t collection_index, size_t string_index) { + this->ensure_collection_exists(collection_index); + auto& coll = this->collections[collection_index]; + if (string_index >= coll.size()) { + coll.resize(string_index + 1); + } +} + +void TextSet::ensure_collection_exists(size_t collection_index) { + if (collection_index >= this->collections.size()) { + this->collections.resize(collection_index + 1); + } +} + +UnicodeTextSet::UnicodeTextSet(const string& prs_data) { + string data = prs_decompress(prs_data); + StringReader r(data); + + uint32_t num_collections = r.get_u32l(); + deque collection_sizes; + while (collection_sizes.size() < num_collections) { + collection_sizes.emplace_back(r.get_u32l()); + } + + this->collections.reserve(collection_sizes.size()); + while (!collection_sizes.empty()) { + uint32_t num_strings = collection_sizes.front(); + collection_sizes.pop_front(); + + auto& strings = this->collections.emplace_back(); + strings.reserve(num_strings); + while (strings.size() < num_strings) { + StringReader sub_r = r.sub(r.get_u32l()); + StringWriter w; + for (uint16_t ch = sub_r.get_u16l(); ch != 0; ch = sub_r.get_u16l()) { + w.put_u16l(ch); + } + strings.emplace_back(tt_utf16_to_utf8(w.str())); + } + } +} + +string UnicodeTextSet::serialize() const { + StringWriter header_w; + StringWriter data_w; + + size_t total_num_strings = 0; + header_w.put_u32l(this->collections.size()); + for (const auto& collection : this->collections) { + header_w.put_u32l(collection.size()); + total_num_strings += collection.size(); + } + + unordered_map encoded; + + size_t data_base_offset = (total_num_strings * 4) + header_w.size(); + for (const auto& collection : this->collections) { + for (const auto& s : collection) { + auto encoded_it = encoded.find(s); + if (encoded_it == encoded.end()) { + uint32_t offset = data_base_offset + data_w.size(); + encoded_it = encoded.emplace(s, offset).first; + string s_utf16 = tt_utf8_to_utf16(s); + data_w.write(s_utf16.data(), s_utf16.size()); + data_w.put_u16(0); + while (data_w.size() & 3) { + data_w.put_u8(0); + } + } + header_w.put_u32l(encoded_it->second); + } + } + + header_w.write(data_w.str()); + return prs_compress_optimal(header_w.str()); +} + +BinaryTextSet::BinaryTextSet(const std::string& pr2_data, size_t collection_count, bool has_rel_footer) { + auto pr2_decrypted = decrypt_pr2_data(pr2_data); + auto decompressed = prs_decompress(pr2_decrypted.compressed_data); + StringReader r(decompressed); + + // Annoyingly, there doesn't appear to be any bounds-checking on the language + // functions, so there are no counts of strings in each collection. We have to + // figure out where each collection ends by collecting all the relevant + // offsets in the file instead. + ::set used_offsets; + size_t root_offset = has_rel_footer + ? r.pget_u32l(r.size() - 0x10) + : (r.size() - collection_count * sizeof(le_uint32_t)); + + StringReader collection_offsets_r = r.sub(root_offset, collection_count * sizeof(le_uint32_t)); + while (!collection_offsets_r.eof()) { + used_offsets.emplace(collection_offsets_r.get_u32l()); + } + used_offsets.emplace(root_offset); + + collection_offsets_r.go(0); + while (!collection_offsets_r.eof()) { + auto& collection = this->collections.emplace_back(); + uint32_t first_string_offset_offset = collection_offsets_r.get_u32l(); + // TODO: Apparently the early formats do actually include keyboards, but + // they're just in the middle of the collections list. Sigh... + try { + for (uint32_t string_offset_offset = first_string_offset_offset; + (string_offset_offset == first_string_offset_offset) || !used_offsets.count(string_offset_offset); + string_offset_offset += 4) { + collection.emplace_back(r.pget_cstr(r.pget_u32l(string_offset_offset))); + } + } catch (const out_of_range&) { + } + } +} + +BinaryTextAndKeyboardsSet::BinaryTextAndKeyboardsSet(const string& pr2_data, bool big_endian) { + if (big_endian) { + this->parse_t(pr2_data); + } else { + this->parse_t(pr2_data); + } +} + +BinaryTextAndKeyboardsSet::BinaryTextAndKeyboardsSet(const JSON& json) { + for (const auto& collection_json : json.at("collections").as_list()) { + auto& collection = this->collections.emplace_back(); + for (const auto& string_json : collection_json->as_list()) { + collection.emplace_back(string_json->as_string()); + } + } + + for (const auto& keyboard_json : json.at("keyboards").as_list()) { + auto& keyboard = this->keyboards.emplace_back(make_unique()); + for (size_t y = 0; y < keyboard->size(); y++) { + auto& row = keyboard->at(y); + const auto& row_json = keyboard_json->at(y); + for (size_t x = 0; x < row.size(); x++) { + row[x] = row_json.at(x).as_int(); + } + } + } + + this->keyboard_selector_width = json.at("keyboard_selector_width").as_int(); +} + +JSON BinaryTextAndKeyboardsSet::json() const { + auto collections_json = this->TextSet::json(); + auto keyboards_json = JSON::list(); + for (const auto& kb : this->keyboards) { + JSON keyboard_json = JSON::list(); + for (size_t y = 0; y < kb->size(); y++) { + const auto& row = kb->at(y); + JSON row_json = JSON::list(); + for (size_t x = 0; x < row.size(); x++) { + row_json.emplace_back(row[x]); + } + keyboard_json.emplace_back(std::move(row_json)); + } + keyboards_json.emplace_back(std::move(keyboard_json)); + } + return JSON::dict({ + {"collections", std::move(collections_json)}, + {"keyboards", std::move(keyboards_json)}, + {"keyboard_selector_width", this->keyboard_selector_width}, + }); +} + +const BinaryTextAndKeyboardsSet::Keyboard& BinaryTextAndKeyboardsSet::get_keyboard(size_t kb_index) const { + return *this->keyboards.at(kb_index); +} + +void BinaryTextAndKeyboardsSet::set_keyboard(size_t kb_index, const Keyboard& kb) { + if (kb_index >= this->keyboards.size()) { + this->keyboards.resize(kb_index + 1); + } + this->keyboards[kb_index] = make_unique(kb); +} + +void BinaryTextAndKeyboardsSet::resize_keyboards(size_t num_keyboards) { + this->keyboards.resize(num_keyboards); +} + +pair BinaryTextAndKeyboardsSet::serialize(bool big_endian) const { + if (big_endian) { + return this->serialize_t(); + } else { + return this->serialize_t(); + } +} + +template +void BinaryTextAndKeyboardsSet::parse_t(const string& pr2_data) { + using U32T = std::conditional_t; + using U16T = std::conditional_t; + + // The structure is as follows: + // Footer: + // U32T keyboard_index_offset ->: + // U8 num_keyboards + // U8 keyboard_selector_width + // U8 unused[2] + // U32T keyboards_offset ->: + // U32T keyboard_offset[num_keyboards] ->: + // U16T key_defs[7][16] + // U32T collections_offset ->: + // U32T[...] strings_offset ->: + // U32T[...] string_offset ->: + // char string[...\0] + // + + auto pr2_decrypted = decrypt_pr2_data(pr2_data); + auto decompressed = prs_decompress(pr2_decrypted.compressed_data); + StringReader r(decompressed); + + // Annoyingly, there doesn't appear to be any bounds-checking on the language + // functions, so there are no counts of strings in each collection. We have to + // figure out where each collection ends by collecting all the relevant + // offsets in the file instead. + ::set used_offsets; + used_offsets.emplace(r.size() - 8); + + uint32_t keyboard_index_offset = r.pget(r.size() - 8); + used_offsets.emplace(keyboard_index_offset); + size_t num_keyboards = r.pget_u8(keyboard_index_offset); + this->keyboard_selector_width = r.pget_u8(keyboard_index_offset + 1); + uint32_t keyboards_offset = r.pget(keyboard_index_offset + 4); + used_offsets.emplace(keyboards_offset); + while (this->keyboards.size() < num_keyboards) { + uint32_t keyboard_offset = r.pget(keyboards_offset + 4 * this->keyboards.size()); + used_offsets.emplace(keyboard_offset); + auto& kb = this->keyboards.emplace_back(make_unique()); + auto key_r = r.sub(keyboard_offset, sizeof(Keyboard)); + for (size_t y = 0; y < kb->size(); y++) { + auto& row = kb->at(y); + for (size_t x = 0; x < row.size(); x++) { + row[x] = key_r.get(); + } + } + } + + uint32_t collections_offset = r.pget(r.size() - 4); + for (uint32_t offset = collections_offset; !used_offsets.count(offset); offset += 4) { + used_offsets.emplace(r.pget(offset)); + } + used_offsets.emplace(collections_offset); + + for (uint32_t offset = collections_offset; (offset == collections_offset) || !used_offsets.count(offset); offset += 4) { + auto& collection = this->collections.emplace_back(); + uint32_t first_string_offset_offset = r.pget(offset); + for (uint32_t string_offset_offset = first_string_offset_offset; + (string_offset_offset == first_string_offset_offset) || !used_offsets.count(string_offset_offset); + string_offset_offset += 4) { + collection.emplace_back(r.pget_cstr(r.pget(string_offset_offset))); + } + } +} + +template +pair BinaryTextAndKeyboardsSet::serialize_t() const { + using U32T = std::conditional_t; + using U16T = std::conditional_t; + + StringWriter w; + ::set relocation_offsets; + auto put_offset_u32 = [&](uint32_t v) { + relocation_offsets.emplace(w.size()); + w.put(v); + }; + + uint32_t collections_offset; + { + unordered_map string_to_offset; + for (const auto& collection : this->collections) { + for (const auto& s : collection) { + if (string_to_offset.emplace(s, w.size()).second) { + w.write(s); + w.put_u8(0); + while (w.size() & 3) { + w.put_u8(0); + } + } + } + } + + vector collection_offsets; + for (const auto& collection : this->collections) { + collection_offsets.emplace_back(w.size()); + for (const auto& s : collection) { + put_offset_u32(string_to_offset.at(s)); + } + } + + collections_offset = w.size(); + for (uint32_t collection_offset : collection_offsets) { + put_offset_u32(collection_offset); + } + } + + uint32_t keyboard_index_offset; + { + vector keyboard_offsets; + for (const auto& keyboard : this->keyboards) { + keyboard_offsets.emplace_back(w.size()); + for (size_t y = 0; y < keyboard->size(); y++) { + const auto& row = keyboard->at(y); + for (size_t x = 0; x < row.size(); x++) { + w.put(row[x]); + } + } + } + + uint32_t keyboards_offset = w.size(); + for (uint32_t keyboard_offset : keyboard_offsets) { + put_offset_u32(keyboard_offset); + } + + keyboard_index_offset = w.size(); + w.put_u8(keyboard_offsets.size()); + w.put_u8(this->keyboard_selector_width); + w.put_u16(0); + put_offset_u32(keyboards_offset); + } + + put_offset_u32(keyboard_index_offset); + put_offset_u32(collections_offset); + + StringWriter reloc_w; + reloc_w.put_u32(0); + reloc_w.put(relocation_offsets.size()); + reloc_w.put_u64(0); + reloc_w.put(w.size() - 8); + reloc_w.put_u32(0); + reloc_w.put_u64(0); + { + size_t offset = 0; + for (size_t reloc_offset : relocation_offsets) { + if (reloc_offset & 3) { + throw logic_error("misaligned relocation"); + } + size_t num_words = (reloc_offset - offset) >> 2; + if (num_words > 0xFFFF) { + throw runtime_error("relocation offset too far away"); + } + reloc_w.put(num_words); + offset = reloc_offset; + } + } + + const string& pr2_data = w.str(); + const string& pr3_data = reloc_w.str(); + print_data(stderr, pr2_data); + string pr2_compressed = prs_compress_optimal(pr2_data.data(), pr2_data.size()); + string pr3_compressed = prs_compress_optimal(pr3_data.data(), pr3_data.size()); + print_data(stderr, pr2_compressed); + string pr2_ret = encrypt_pr2_data(pr2_compressed, pr2_data.size(), random_object()); + string pr3_ret = encrypt_pr2_data(pr3_compressed, pr3_data.size(), random_object()); + print_data(stderr, pr2_ret); + return make_pair(std::move(pr2_ret), std::move(pr3_ret)); +} + +TextIndex::TextIndex( + const string& directory, + function(Version, const string&)> get_patch_file) + : log("[TextIndex] ", static_game_data_log.min_level) { + if (!directory.empty()) { + auto add_version = [&](Version version, const string& subdirectory, function(const string&)> make_set) -> void { + static const map bintext_filenames({ + {"TextJapanese.pr2", 0x00}, + {"TextEnglish.pr2", 0x01}, + {"TextGerman.pr2", 0x02}, + {"TextFrench.pr2", 0x03}, + {"TextSpanish.pr2", 0x04}, + }); + static const map unitext_filenames({ + {"unitxt_j.prs", 0x00}, // PC/BB Japanese + {"unitxt_e.prs", 0x01}, // PC/BB English + {"unitxt_g.prs", 0x02}, // PC/BB German + {"unitxt_f.prs", 0x03}, // PC/BB French + {"unitxt_s.prs", 0x04}, // PC/BB Spanish + {"unitxt_b.prs", 0x05}, // PC Simplified Chinese + {"unitxt_cs.prs", 0x05}, // BB Simplified Chinese + {"unitxt_t.prs", 0x06}, // PC Traditional Chinese + {"unitxt_ct.prs", 0x06}, // BB Traditional Chinese + {"unitxt_k.prs", 0x07}, // PC Korean + {"unitxt_h.prs", 0x07}, // BB Korean + }); + if (!uses_utf16(version)) { + for (const auto& it : bintext_filenames) { + string file_path = directory + "/" + subdirectory + "/" + it.first; + string json_path = file_path + ".json"; + if (isfile(json_path)) { + this->log.info("Loading %s %c JSON text set from %s", name_for_enum(version), char_for_language_code(it.second), json_path.c_str()); + this->add_set(version, it.second, make_shared(JSON::parse(load_file(json_path)))); + } else if (isfile(file_path)) { + this->log.info("Loading %s %c binary text set from %s", name_for_enum(version), char_for_language_code(it.second), file_path.c_str()); + this->add_set(version, it.second, make_set(load_file(file_path))); + } + } + } else { + for (const auto& it : unitext_filenames) { + string file_path = directory + "/" + subdirectory + "/" + it.first; + string json_path = file_path + ".json"; + if (isfile(json_path)) { + this->log.info("Loading %s %c JSON text set from %s", name_for_enum(version), char_for_language_code(it.second), json_path.c_str()); + this->add_set(version, it.second, make_shared(JSON::parse(load_file(json_path)))); + } else { + auto patch_file = get_patch_file ? get_patch_file(version, it.first) : nullptr; + if (patch_file) { + this->log.info("Loading %s %c Unicode text set from %s in patch tree", name_for_enum(version), char_for_language_code(it.second), it.first.c_str()); + this->add_set(version, it.second, make_set(*patch_file)); + } else { + if (isfile(file_path)) { + this->log.info("Loading %s %c Unicode text set from %s", name_for_enum(version), char_for_language_code(it.second), file_path.c_str()); + this->add_set(version, it.second, make_set(load_file(file_path))); + } + } + } + } + } + }; + + auto make_binary_dc112000 = +[](const string& data) { return make_shared(data, 21, true); }; + auto make_binary_dcnte_dcv1 = +[](const string& data) { return make_shared(data, 26, true); }; + auto make_binary_dcv2 = +[](const string& data) { return make_shared(data, 37, false); }; + auto make_binary_gc = +[](const string& data) { return make_shared(data, true); }; + auto make_binary_xb = +[](const string& data) { return make_shared(data, false); }; + auto make_unitxt = +[](const string& data) { return make_shared(data); }; + + add_version(Version::DC_NTE, "dc-nte", make_binary_dcnte_dcv1); + add_version(Version::DC_V1_11_2000_PROTOTYPE, "dc-11-2000", make_binary_dc112000); + add_version(Version::DC_V1, "dc-v1", make_binary_dcnte_dcv1); + add_version(Version::DC_V2, "dc-v2", make_binary_dcv2); + add_version(Version::PC_NTE, "pc-nte", make_unitxt); + add_version(Version::PC_V2, "pc-v2", make_unitxt); + add_version(Version::GC_NTE, "gc-nte", make_binary_gc); + add_version(Version::GC_V3, "gc-v3", make_binary_gc); + add_version(Version::GC_EP3_NTE, "gc-ep3-nte", make_binary_gc); + add_version(Version::GC_EP3, "gc-ep3", make_binary_gc); + add_version(Version::XB_V3, "xb-v3", make_binary_xb); + add_version(Version::BB_V4, "bb-v4", make_unitxt); + } +} + +void TextIndex::add_set(Version version, uint8_t language, std::shared_ptr ts) { + this->sets[this->key_for_set(version, language)] = ts; +} + +void TextIndex::delete_set(Version version, uint8_t language) { + this->sets.erase(this->key_for_set(version, language)); +} + +const std::string& TextIndex::get(Version version, uint8_t language, size_t collection_index, size_t string_index) const { + return this->get(version, language)->get(collection_index, string_index); +} + +const std::vector& TextIndex::get(Version version, uint8_t language, size_t collection_index) const { + return this->get(version, language)->get(collection_index); +} + +std::shared_ptr TextIndex::get(Version version, uint8_t language) const { + return this->sets.at(this->key_for_set(version, language)); +} + +uint32_t TextIndex::key_for_set(Version version, uint8_t language) { + return (static_cast(version) << 8) | language; +} diff --git a/src/TextIndex.hh b/src/TextIndex.hh new file mode 100644 index 00000000..f6465def --- /dev/null +++ b/src/TextIndex.hh @@ -0,0 +1,111 @@ +#pragma once + +#include + +#include +#include +#include +#include + +#include "Text.hh" +#include "Version.hh" + +class TextSet { +public: + virtual ~TextSet() = default; + virtual JSON json() const; + + size_t count(size_t collection_index) const; + size_t count() const; + + const std::string& get(size_t collection, size_t index) const; + const std::vector& get(size_t collection) const; + + void set(size_t collection_index, size_t string_index, const std::string& data); + void set(size_t collection_index, size_t string_index, std::string&& data); + void set(size_t collection_index, const std::vector& coll); + void set(size_t collection_index, std::vector&& coll); + + void truncate_collection(size_t collection, size_t new_entry_count); + void truncate(size_t new_collection_count); + +protected: + std::vector> collections; + + TextSet() = default; + TextSet(const JSON& json); + TextSet(JSON&& json); + + void ensure_slot_exists(size_t collection_index, size_t string_index); + void ensure_collection_exists(size_t collection_index); +}; + +class UnicodeTextSet : public TextSet { +public: + explicit UnicodeTextSet(const JSON& json) : TextSet(json) {} + explicit UnicodeTextSet(JSON&& json) : TextSet(json) {} + explicit UnicodeTextSet(const std::string& unitxt_prs_data); + virtual ~UnicodeTextSet() = default; + std::string serialize() const; +}; + +class BinaryTextSet : public TextSet { +public: + explicit BinaryTextSet(const JSON& json) : TextSet(json) {} + explicit BinaryTextSet(JSON&& json) : TextSet(json) {} + BinaryTextSet(const std::string& pr2_data, size_t collection_count, bool has_rel_footer); + ~BinaryTextSet() = default; + // TODO: Implement serialize functions +}; + +class BinaryTextAndKeyboardsSet : public TextSet { +public: + using Keyboard = parray, 7>; + + explicit BinaryTextAndKeyboardsSet(const JSON& json); + explicit BinaryTextAndKeyboardsSet(JSON&& json); + BinaryTextAndKeyboardsSet(const std::string& pr2_data, bool big_endian); + ~BinaryTextAndKeyboardsSet() = default; + + virtual JSON json() const; + + const Keyboard& get_keyboard(size_t kb_index) const; + void set_keyboard(size_t kb_index, const Keyboard& kb); + void resize_keyboards(size_t num_keyboards); + + uint8_t get_keyboard_selector_width() const; + void set_keyboard_selector_width(uint8_t width); + + // Returns (pr2_data, pr3_data) + std::pair serialize(bool big_endian) const; + +protected: + template + void parse_t(const std::string& pr2_data); + template + std::pair serialize_t() const; + + std::vector> keyboards; + uint8_t keyboard_selector_width; +}; + +class TextIndex { +public: + explicit TextIndex( + const std::string& directory = "", + std::function(Version, const std::string&)> get_patch_file = nullptr); + ~TextIndex() = default; + + void add_set(Version version, uint8_t language, std::shared_ptr ts); + void delete_set(Version version, uint8_t language); + + const std::string& get(Version version, uint8_t language, size_t collection_index, size_t string_index) const; + const std::vector& get(Version version, uint8_t language, size_t collection_index) const; + std::shared_ptr get(Version version, uint8_t language) const; + +protected: + static uint32_t key_for_set(Version version, uint8_t language); + + PrefixedLogger log; + std::unordered_map> sets; +}; diff --git a/src/UnicodeTextSet.cc b/src/UnicodeTextSet.cc deleted file mode 100644 index 3972dc4f..00000000 --- a/src/UnicodeTextSet.cc +++ /dev/null @@ -1,75 +0,0 @@ -#include "UnicodeTextSet.hh" - -#include -#include -#include - -#include "Compression.hh" - -using namespace std; - -vector> parse_unicode_text_set(const string& prs_data) { - string data = prs_decompress(prs_data); - StringReader r(data); - - uint32_t num_collections = r.get_u32l(); - deque collection_sizes; - while (collection_sizes.size() < num_collections) { - collection_sizes.emplace_back(r.get_u32l()); - } - - vector> ret; - ret.reserve(collection_sizes.size()); - while (!collection_sizes.empty()) { - uint32_t num_strings = collection_sizes.front(); - collection_sizes.pop_front(); - - auto& strings = ret.emplace_back(); - strings.reserve(num_strings); - while (strings.size() < num_strings) { - StringReader sub_r = r.sub(r.get_u32l()); - StringWriter w; - for (uint16_t ch = sub_r.get_u16l(); ch != 0; ch = sub_r.get_u16l()) { - w.put_u16l(ch); - } - strings.emplace_back(tt_utf16_to_utf8(w.str())); - } - } - return ret; -} - -string serialize_unicode_text_set(const vector>& collections) { - StringWriter header_w; - StringWriter data_w; - - size_t total_num_strings = 0; - header_w.put_u32l(collections.size()); - for (const auto& collection : collections) { - header_w.put_u32l(collection.size()); - total_num_strings += collection.size(); - } - - unordered_map encoded; - - size_t data_base_offset = (total_num_strings * 4) + header_w.size(); - for (const auto& collection : collections) { - for (const auto& s : collection) { - auto encoded_it = encoded.find(s); - if (encoded_it == encoded.end()) { - uint32_t offset = data_base_offset + data_w.size(); - encoded.emplace(s, offset); - string s_utf16 = tt_utf8_to_utf16(s); - data_w.write(s_utf16.data(), s_utf16.size()); - data_w.put_u16(0); - while (data_w.size() & 3) { - data_w.put_u8(0); - } - } else { - header_w.put_u32l(encoded_it->second); - } - } - } - - header_w.write(data_w.str()); - return std::move(header_w.str()); -} diff --git a/src/UnicodeTextSet.hh b/src/UnicodeTextSet.hh deleted file mode 100644 index 99d4e0e0..00000000 --- a/src/UnicodeTextSet.hh +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once - -#include -#include - -std::vector> parse_unicode_text_set(const std::string& prs_data); -std::string serialize_unicode_text_set(const std::vector>& collections); diff --git a/src/Version.hh b/src/Version.hh index 20e9c4b0..301b1697 100644 --- a/src/Version.hh +++ b/src/Version.hh @@ -24,6 +24,10 @@ enum class Version { UNKNOWN = 15, }; +constexpr size_t NUM_VERSIONS = static_cast(Version::BB_V4) + 1; +constexpr size_t NUM_PATCH_VERSIONS = static_cast(Version::BB_PATCH) + 1; +constexpr size_t NUM_NON_PATCH_VERSIONS = NUM_VERSIONS - NUM_PATCH_VERSIONS; + template <> const char* name_for_enum(Version v); template <> diff --git a/src/WordSelectTable.cc b/src/WordSelectTable.cc index 0067379d..4cf76c12 100644 --- a/src/WordSelectTable.cc +++ b/src/WordSelectTable.cc @@ -205,7 +205,8 @@ WordSelectTable::WordSelectTable( this->name_to_token.emplace(token->canonical_name, token); } - array ws_sets = { + static_assert(NUM_NON_PATCH_VERSIONS == 12, "Don\'t forget to update the WordSelectTable constructor"); + array ws_sets = { &dc_nte_ws, &dc_112000_ws, &dc_v1_ws, &dc_v2_ws, &pc_nte_ws, &pc_v2_ws, &gc_nte_ws, &gc_v3_ws, &gc_ep3_nte_ws, &gc_ep3_ws, &xb_v3_ws, &bb_v4_ws}; diff --git a/system/config.example.json b/system/config.example.json index 074ca0c9..81e34730 100644 --- a/system/config.example.json +++ b/system/config.example.json @@ -37,7 +37,9 @@ "ExternalAddress": "10.0.1.5", // Port to listen for DNS queries on. To disable the DNS server, comment this - // out or set it to zero. + // out or set it to zero. By default, the DNS server listens on all + // interfaces, but you can specify an interface by replacing this with a list + // of [interface_addr_or_name, port]. "DNSServerPort": 53, // Ports to listen for game connections on. @@ -45,6 +47,12 @@ // Format of entries in this dictionary: // name: [port, version, behavior] + // port is normally just an integer (which will cause the server to listen + // on that port on all interfaces), but you can also replace the integer + // with a 2-list of [address, port] to listen in a specific port. For + // example, that might look like: + // "xb-login": [["en0", 9500], "xb", "login_server"], + // Various versions of PSO hardcode these ports in the clients. Don't change // these unless you don't want to support certain versions of PSO. // Note: The pc_console_detect behavior is used for separating PSO PC and @@ -767,6 +775,10 @@ // available on the proxy server. "CheatModeBehavior": "OnByDefault", + // Whether to enable rare drop notifications by default. Players can toggle + // this behavior for themselves with the $rarenotifs command. + "RareNotificationsEnabledByDefault": false, + // Whether to enable patches on Episode 3 USA. This functionality depends on // exploiting a bug in Episode 3, and while it seems to work reliably on // Dolphin, it hasn't been tested on a real GameCube. So, newserv doesn't diff --git a/system/text-sets/bb-v4/unitxt_cs.prs b/system/text-sets/bb-v4/unitxt_cs.prs new file mode 100755 index 00000000..e5ad9fdd Binary files /dev/null and b/system/text-sets/bb-v4/unitxt_cs.prs differ diff --git a/system/text-sets/bb-v4/unitxt_ct.prs b/system/text-sets/bb-v4/unitxt_ct.prs new file mode 100755 index 00000000..b830666f Binary files /dev/null and b/system/text-sets/bb-v4/unitxt_ct.prs differ diff --git a/system/text-sets/bb-v4/unitxt_e.prs b/system/text-sets/bb-v4/unitxt_e.prs new file mode 100755 index 00000000..80934ac8 Binary files /dev/null and b/system/text-sets/bb-v4/unitxt_e.prs differ diff --git a/system/text-sets/bb-v4/unitxt_f.prs b/system/text-sets/bb-v4/unitxt_f.prs new file mode 100755 index 00000000..e9bed801 Binary files /dev/null and b/system/text-sets/bb-v4/unitxt_f.prs differ diff --git a/system/text-sets/bb-v4/unitxt_g.prs b/system/text-sets/bb-v4/unitxt_g.prs new file mode 100755 index 00000000..4880601b Binary files /dev/null and b/system/text-sets/bb-v4/unitxt_g.prs differ diff --git a/system/text-sets/bb-v4/unitxt_h.prs b/system/text-sets/bb-v4/unitxt_h.prs new file mode 100755 index 00000000..ff68603d Binary files /dev/null and b/system/text-sets/bb-v4/unitxt_h.prs differ diff --git a/system/text-sets/bb-v4/unitxt_j.prs b/system/text-sets/bb-v4/unitxt_j.prs new file mode 100755 index 00000000..6f25fa4d Binary files /dev/null and b/system/text-sets/bb-v4/unitxt_j.prs differ diff --git a/system/text-sets/bb-v4/unitxt_s.prs b/system/text-sets/bb-v4/unitxt_s.prs new file mode 100755 index 00000000..16842b66 Binary files /dev/null and b/system/text-sets/bb-v4/unitxt_s.prs differ diff --git a/system/word-select/bb_unitxt_ws.prs b/system/text-sets/bb-v4/unitxt_ws_e.prs similarity index 100% rename from system/word-select/bb_unitxt_ws.prs rename to system/text-sets/bb-v4/unitxt_ws_e.prs diff --git a/system/word-select/bb_ws_data.bin b/system/text-sets/bb-v4/ws_data.bin similarity index 100% rename from system/word-select/bb_ws_data.bin rename to system/text-sets/bb-v4/ws_data.bin diff --git a/system/text-sets/dc-11-2000/TextEnglish.pr2 b/system/text-sets/dc-11-2000/TextEnglish.pr2 new file mode 100644 index 00000000..2da2cba5 Binary files /dev/null and b/system/text-sets/dc-11-2000/TextEnglish.pr2 differ diff --git a/system/text-sets/dc-11-2000/TextFrench.pr2 b/system/text-sets/dc-11-2000/TextFrench.pr2 new file mode 100644 index 00000000..42133835 Binary files /dev/null and b/system/text-sets/dc-11-2000/TextFrench.pr2 differ diff --git a/system/text-sets/dc-11-2000/TextGerman.pr2 b/system/text-sets/dc-11-2000/TextGerman.pr2 new file mode 100644 index 00000000..e39a4d45 Binary files /dev/null and b/system/text-sets/dc-11-2000/TextGerman.pr2 differ diff --git a/system/text-sets/dc-11-2000/TextJapanese.pr2 b/system/text-sets/dc-11-2000/TextJapanese.pr2 new file mode 100644 index 00000000..0a4da6cb Binary files /dev/null and b/system/text-sets/dc-11-2000/TextJapanese.pr2 differ diff --git a/system/text-sets/dc-11-2000/TextSpanish.pr2 b/system/text-sets/dc-11-2000/TextSpanish.pr2 new file mode 100644 index 00000000..fdc73238 Binary files /dev/null and b/system/text-sets/dc-11-2000/TextSpanish.pr2 differ diff --git a/system/word-select/dc_112000_ws_data.bin b/system/text-sets/dc-11-2000/ws_data.bin similarity index 100% rename from system/word-select/dc_112000_ws_data.bin rename to system/text-sets/dc-11-2000/ws_data.bin diff --git a/system/text-sets/dc-nte/TextJapanese.pr2 b/system/text-sets/dc-nte/TextJapanese.pr2 new file mode 100644 index 00000000..f17849aa Binary files /dev/null and b/system/text-sets/dc-nte/TextJapanese.pr2 differ diff --git a/system/word-select/dc_nte_ws_data.bin b/system/text-sets/dc-nte/ws_data.bin similarity index 100% rename from system/word-select/dc_nte_ws_data.bin rename to system/text-sets/dc-nte/ws_data.bin diff --git a/system/text-sets/dc-v1/TextEnglish.pr2 b/system/text-sets/dc-v1/TextEnglish.pr2 new file mode 100644 index 00000000..f17849aa Binary files /dev/null and b/system/text-sets/dc-v1/TextEnglish.pr2 differ diff --git a/system/text-sets/dc-v1/TextFrench.pr2 b/system/text-sets/dc-v1/TextFrench.pr2 new file mode 100644 index 00000000..7ec911fa Binary files /dev/null and b/system/text-sets/dc-v1/TextFrench.pr2 differ diff --git a/system/text-sets/dc-v1/TextGerman.pr2 b/system/text-sets/dc-v1/TextGerman.pr2 new file mode 100644 index 00000000..dfb1ca0e Binary files /dev/null and b/system/text-sets/dc-v1/TextGerman.pr2 differ diff --git a/system/text-sets/dc-v1/TextJapanese.pr2 b/system/text-sets/dc-v1/TextJapanese.pr2 new file mode 100644 index 00000000..eecab395 Binary files /dev/null and b/system/text-sets/dc-v1/TextJapanese.pr2 differ diff --git a/system/text-sets/dc-v1/TextSpanish.pr2 b/system/text-sets/dc-v1/TextSpanish.pr2 new file mode 100644 index 00000000..709f2c48 Binary files /dev/null and b/system/text-sets/dc-v1/TextSpanish.pr2 differ diff --git a/system/word-select/dcv1_ws_data.bin b/system/text-sets/dc-v1/ws_data.bin similarity index 100% rename from system/word-select/dcv1_ws_data.bin rename to system/text-sets/dc-v1/ws_data.bin diff --git a/system/text-sets/dc-v2/TextEnglish.pr2 b/system/text-sets/dc-v2/TextEnglish.pr2 new file mode 100644 index 00000000..dd4d40f2 Binary files /dev/null and b/system/text-sets/dc-v2/TextEnglish.pr2 differ diff --git a/system/text-sets/dc-v2/TextFrench.pr2 b/system/text-sets/dc-v2/TextFrench.pr2 new file mode 100644 index 00000000..30421ecb Binary files /dev/null and b/system/text-sets/dc-v2/TextFrench.pr2 differ diff --git a/system/text-sets/dc-v2/TextGerman.pr2 b/system/text-sets/dc-v2/TextGerman.pr2 new file mode 100644 index 00000000..80a7dcbe Binary files /dev/null and b/system/text-sets/dc-v2/TextGerman.pr2 differ diff --git a/system/text-sets/dc-v2/TextJapanese.pr2 b/system/text-sets/dc-v2/TextJapanese.pr2 new file mode 100644 index 00000000..f4dd75ed Binary files /dev/null and b/system/text-sets/dc-v2/TextJapanese.pr2 differ diff --git a/system/text-sets/dc-v2/TextSpanish.pr2 b/system/text-sets/dc-v2/TextSpanish.pr2 new file mode 100644 index 00000000..71c853ad Binary files /dev/null and b/system/text-sets/dc-v2/TextSpanish.pr2 differ diff --git a/system/word-select/dcv2_ws_data.bin b/system/text-sets/dc-v2/ws_data.bin similarity index 100% rename from system/word-select/dcv2_ws_data.bin rename to system/text-sets/dc-v2/ws_data.bin diff --git a/system/text-sets/gc-ep3-nte/TextEnglish.pr2 b/system/text-sets/gc-ep3-nte/TextEnglish.pr2 new file mode 100755 index 00000000..173c52d8 Binary files /dev/null and b/system/text-sets/gc-ep3-nte/TextEnglish.pr2 differ diff --git a/system/text-sets/gc-ep3-nte/TextFrench.pr2 b/system/text-sets/gc-ep3-nte/TextFrench.pr2 new file mode 100755 index 00000000..55198e15 Binary files /dev/null and b/system/text-sets/gc-ep3-nte/TextFrench.pr2 differ diff --git a/system/text-sets/gc-ep3-nte/TextGerman.pr2 b/system/text-sets/gc-ep3-nte/TextGerman.pr2 new file mode 100755 index 00000000..49623e88 Binary files /dev/null and b/system/text-sets/gc-ep3-nte/TextGerman.pr2 differ diff --git a/system/text-sets/gc-ep3-nte/TextJapanese.pr2 b/system/text-sets/gc-ep3-nte/TextJapanese.pr2 new file mode 100755 index 00000000..c0d97bed Binary files /dev/null and b/system/text-sets/gc-ep3-nte/TextJapanese.pr2 differ diff --git a/system/text-sets/gc-ep3-nte/TextSpanish.pr2 b/system/text-sets/gc-ep3-nte/TextSpanish.pr2 new file mode 100755 index 00000000..b593b555 Binary files /dev/null and b/system/text-sets/gc-ep3-nte/TextSpanish.pr2 differ diff --git a/system/word-select/gc_ep3_nte_ws_data.bin b/system/text-sets/gc-ep3-nte/ws_data.bin similarity index 100% rename from system/word-select/gc_ep3_nte_ws_data.bin rename to system/text-sets/gc-ep3-nte/ws_data.bin diff --git a/system/text-sets/gc-ep3/TextEnglish.pr2 b/system/text-sets/gc-ep3/TextEnglish.pr2 new file mode 100755 index 00000000..eb722cdd Binary files /dev/null and b/system/text-sets/gc-ep3/TextEnglish.pr2 differ diff --git a/system/text-sets/gc-ep3/TextFrench.pr2 b/system/text-sets/gc-ep3/TextFrench.pr2 new file mode 100755 index 00000000..81a1ca35 Binary files /dev/null and b/system/text-sets/gc-ep3/TextFrench.pr2 differ diff --git a/system/text-sets/gc-ep3/TextGerman.pr2 b/system/text-sets/gc-ep3/TextGerman.pr2 new file mode 100755 index 00000000..253b9f64 Binary files /dev/null and b/system/text-sets/gc-ep3/TextGerman.pr2 differ diff --git a/system/text-sets/gc-ep3/TextJapanese.pr2 b/system/text-sets/gc-ep3/TextJapanese.pr2 new file mode 100755 index 00000000..a2278e80 Binary files /dev/null and b/system/text-sets/gc-ep3/TextJapanese.pr2 differ diff --git a/system/text-sets/gc-ep3/TextSpanish.pr2 b/system/text-sets/gc-ep3/TextSpanish.pr2 new file mode 100755 index 00000000..f5a25d75 Binary files /dev/null and b/system/text-sets/gc-ep3/TextSpanish.pr2 differ diff --git a/system/word-select/gc_ep3_ws_data.bin b/system/text-sets/gc-ep3/ws_data.bin similarity index 100% rename from system/word-select/gc_ep3_ws_data.bin rename to system/text-sets/gc-ep3/ws_data.bin diff --git a/system/text-sets/gc-nte/TextEnglish.pr2 b/system/text-sets/gc-nte/TextEnglish.pr2 new file mode 100755 index 00000000..3bdd6b91 Binary files /dev/null and b/system/text-sets/gc-nte/TextEnglish.pr2 differ diff --git a/system/text-sets/gc-nte/TextFrench.pr2 b/system/text-sets/gc-nte/TextFrench.pr2 new file mode 100755 index 00000000..ad035543 Binary files /dev/null and b/system/text-sets/gc-nte/TextFrench.pr2 differ diff --git a/system/text-sets/gc-nte/TextGerman.pr2 b/system/text-sets/gc-nte/TextGerman.pr2 new file mode 100755 index 00000000..1e811364 Binary files /dev/null and b/system/text-sets/gc-nte/TextGerman.pr2 differ diff --git a/system/text-sets/gc-nte/TextJapanese.pr2 b/system/text-sets/gc-nte/TextJapanese.pr2 new file mode 100755 index 00000000..3c9883fe Binary files /dev/null and b/system/text-sets/gc-nte/TextJapanese.pr2 differ diff --git a/system/text-sets/gc-nte/TextSpanish.pr2 b/system/text-sets/gc-nte/TextSpanish.pr2 new file mode 100755 index 00000000..148094c5 Binary files /dev/null and b/system/text-sets/gc-nte/TextSpanish.pr2 differ diff --git a/system/word-select/gc_nte_ws_data.bin b/system/text-sets/gc-nte/ws_data.bin similarity index 100% rename from system/word-select/gc_nte_ws_data.bin rename to system/text-sets/gc-nte/ws_data.bin diff --git a/system/text-sets/gc-v3/TextEnglish.pr2 b/system/text-sets/gc-v3/TextEnglish.pr2 new file mode 100755 index 00000000..5c4955b5 Binary files /dev/null and b/system/text-sets/gc-v3/TextEnglish.pr2 differ diff --git a/system/text-sets/gc-v3/TextFrench.pr2 b/system/text-sets/gc-v3/TextFrench.pr2 new file mode 100755 index 00000000..3afaeaf1 Binary files /dev/null and b/system/text-sets/gc-v3/TextFrench.pr2 differ diff --git a/system/text-sets/gc-v3/TextGerman.pr2 b/system/text-sets/gc-v3/TextGerman.pr2 new file mode 100755 index 00000000..7f5c74e6 Binary files /dev/null and b/system/text-sets/gc-v3/TextGerman.pr2 differ diff --git a/system/text-sets/gc-v3/TextJapanese.pr2 b/system/text-sets/gc-v3/TextJapanese.pr2 new file mode 100755 index 00000000..7b690939 Binary files /dev/null and b/system/text-sets/gc-v3/TextJapanese.pr2 differ diff --git a/system/text-sets/gc-v3/TextSpanish.pr2 b/system/text-sets/gc-v3/TextSpanish.pr2 new file mode 100755 index 00000000..eab039ab Binary files /dev/null and b/system/text-sets/gc-v3/TextSpanish.pr2 differ diff --git a/system/word-select/gc_ws_data.bin b/system/text-sets/gc-v3/ws_data.bin similarity index 100% rename from system/word-select/gc_ws_data.bin rename to system/text-sets/gc-v3/ws_data.bin diff --git a/system/text-sets/pc-nte/unitxt_b.prs b/system/text-sets/pc-nte/unitxt_b.prs new file mode 100644 index 00000000..a4a4202c Binary files /dev/null and b/system/text-sets/pc-nte/unitxt_b.prs differ diff --git a/system/word-select/pc_nte_unitxt.prs b/system/text-sets/pc-nte/unitxt_e.prs similarity index 100% rename from system/word-select/pc_nte_unitxt.prs rename to system/text-sets/pc-nte/unitxt_e.prs diff --git a/system/text-sets/pc-nte/unitxt_f.prs b/system/text-sets/pc-nte/unitxt_f.prs new file mode 100644 index 00000000..521f026e Binary files /dev/null and b/system/text-sets/pc-nte/unitxt_f.prs differ diff --git a/system/text-sets/pc-nte/unitxt_g.prs b/system/text-sets/pc-nte/unitxt_g.prs new file mode 100644 index 00000000..89704dbc Binary files /dev/null and b/system/text-sets/pc-nte/unitxt_g.prs differ diff --git a/system/text-sets/pc-nte/unitxt_j.prs b/system/text-sets/pc-nte/unitxt_j.prs new file mode 100644 index 00000000..27269e4f Binary files /dev/null and b/system/text-sets/pc-nte/unitxt_j.prs differ diff --git a/system/text-sets/pc-nte/unitxt_k.prs b/system/text-sets/pc-nte/unitxt_k.prs new file mode 100644 index 00000000..41ae2a54 Binary files /dev/null and b/system/text-sets/pc-nte/unitxt_k.prs differ diff --git a/system/text-sets/pc-nte/unitxt_s.prs b/system/text-sets/pc-nte/unitxt_s.prs new file mode 100644 index 00000000..3ae85e28 Binary files /dev/null and b/system/text-sets/pc-nte/unitxt_s.prs differ diff --git a/system/text-sets/pc-nte/unitxt_t.prs b/system/text-sets/pc-nte/unitxt_t.prs new file mode 100644 index 00000000..ac2d19d7 Binary files /dev/null and b/system/text-sets/pc-nte/unitxt_t.prs differ diff --git a/system/word-select/pc_nte_ws_data.bin b/system/text-sets/pc-nte/ws_data.bin similarity index 100% rename from system/word-select/pc_nte_ws_data.bin rename to system/text-sets/pc-nte/ws_data.bin diff --git a/system/text-sets/pc-v2/unitxt_b.prs b/system/text-sets/pc-v2/unitxt_b.prs new file mode 100644 index 00000000..9df4b451 Binary files /dev/null and b/system/text-sets/pc-v2/unitxt_b.prs differ diff --git a/system/word-select/pc_unitxt.prs b/system/text-sets/pc-v2/unitxt_e.prs similarity index 100% rename from system/word-select/pc_unitxt.prs rename to system/text-sets/pc-v2/unitxt_e.prs diff --git a/system/text-sets/pc-v2/unitxt_f.prs b/system/text-sets/pc-v2/unitxt_f.prs new file mode 100644 index 00000000..2206f691 Binary files /dev/null and b/system/text-sets/pc-v2/unitxt_f.prs differ diff --git a/system/text-sets/pc-v2/unitxt_g.prs b/system/text-sets/pc-v2/unitxt_g.prs new file mode 100644 index 00000000..a1c3ffcd Binary files /dev/null and b/system/text-sets/pc-v2/unitxt_g.prs differ diff --git a/system/text-sets/pc-v2/unitxt_j.prs b/system/text-sets/pc-v2/unitxt_j.prs new file mode 100644 index 00000000..4f6b2008 Binary files /dev/null and b/system/text-sets/pc-v2/unitxt_j.prs differ diff --git a/system/text-sets/pc-v2/unitxt_k.prs b/system/text-sets/pc-v2/unitxt_k.prs new file mode 100644 index 00000000..a47c6e9b Binary files /dev/null and b/system/text-sets/pc-v2/unitxt_k.prs differ diff --git a/system/text-sets/pc-v2/unitxt_s.prs b/system/text-sets/pc-v2/unitxt_s.prs new file mode 100644 index 00000000..8649c379 Binary files /dev/null and b/system/text-sets/pc-v2/unitxt_s.prs differ diff --git a/system/text-sets/pc-v2/unitxt_t.prs b/system/text-sets/pc-v2/unitxt_t.prs new file mode 100644 index 00000000..ebaaf996 Binary files /dev/null and b/system/text-sets/pc-v2/unitxt_t.prs differ diff --git a/system/word-select/pc_ws_data.bin b/system/text-sets/pc-v2/ws_data.bin similarity index 100% rename from system/word-select/pc_ws_data.bin rename to system/text-sets/pc-v2/ws_data.bin diff --git a/system/word-select/name-alias-lists.json b/system/text-sets/ws-name-alias-lists.json similarity index 100% rename from system/word-select/name-alias-lists.json rename to system/text-sets/ws-name-alias-lists.json diff --git a/system/text-sets/xb-v3/TextEnglish.pr2 b/system/text-sets/xb-v3/TextEnglish.pr2 new file mode 100644 index 00000000..2c404879 Binary files /dev/null and b/system/text-sets/xb-v3/TextEnglish.pr2 differ diff --git a/system/text-sets/xb-v3/TextFrench.pr2 b/system/text-sets/xb-v3/TextFrench.pr2 new file mode 100644 index 00000000..bf343ee9 Binary files /dev/null and b/system/text-sets/xb-v3/TextFrench.pr2 differ diff --git a/system/text-sets/xb-v3/TextGerman.pr2 b/system/text-sets/xb-v3/TextGerman.pr2 new file mode 100644 index 00000000..bb590030 Binary files /dev/null and b/system/text-sets/xb-v3/TextGerman.pr2 differ diff --git a/system/text-sets/xb-v3/TextJapanese.pr2 b/system/text-sets/xb-v3/TextJapanese.pr2 new file mode 100644 index 00000000..5d1e0afb Binary files /dev/null and b/system/text-sets/xb-v3/TextJapanese.pr2 differ diff --git a/system/text-sets/xb-v3/TextSpanish.pr2 b/system/text-sets/xb-v3/TextSpanish.pr2 new file mode 100644 index 00000000..02c9dd2c Binary files /dev/null and b/system/text-sets/xb-v3/TextSpanish.pr2 differ diff --git a/system/word-select/xb_ws_data.bin b/system/text-sets/xb-v3/ws_data.bin similarity index 100% rename from system/word-select/xb_ws_data.bin rename to system/text-sets/xb-v3/ws_data.bin diff --git a/tests/DCNTE-GameSmokeTest.test.txt b/tests/DCNTE-GameSmokeTest.test.txt index 0c10fbcd..cfe5aa6e 100644 --- a/tests/DCNTE-GameSmokeTest.test.txt +++ b/tests/DCNTE-GameSmokeTest.test.txt @@ -1,11 +1,11 @@ -I 25793 2023-11-24 23:06:54 - [C-7] Created -I 25793 2023-11-24 23:06:54 - [Server] Client connected: C-7 on fd 44 via 6 (T-9000-DC_NTE-gc-jp10-login_server) -I 25793 2023-11-24 23:06:54 - [Commands] Sending to C-7 (version=GC_V3 command=17 flag=00) +I 91446 2023-12-31 21:04:43 - [C-1] Created +I 91446 2023-12-31 21:04:43 - [Server] Client connected: C-1 on fd 45 via 6 (T-9000-DC_NTE-gc-jp10-login_server) +I 91446 2023-12-31 21:04:43 - [Commands] Sending to C-1 (version=DC_NTE command=17 flag=00) 0000 | 17 00 00 01 44 72 65 61 6D 43 61 73 74 20 50 6F | DreamCast Po 0010 | 72 74 20 4D 61 70 2E 20 43 6F 70 79 72 69 67 68 | rt Map. Copyrigh 0020 | 74 20 53 45 47 41 20 45 6E 74 65 72 70 72 69 73 | t SEGA Enterpris 0030 | 65 73 2E 20 31 39 39 39 00 00 00 00 00 00 00 00 | es. 1999 -0040 | 00 00 00 00 9D 4E 8A BD 92 52 62 76 54 68 69 73 | N RbvThis +0040 | 00 00 00 00 97 3D 87 BE 63 EB 7A DF 54 68 69 73 | = c z This 0050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no 0060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, 0070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s @@ -17,14 +17,15 @@ I 25793 2023-11-24 23:06:54 - [Commands] Sending to C-7 (version=GC_V3 command=1 00D0 | 72 65 6D 61 69 6E 20 63 6F 6D 70 61 74 69 62 6C | remain compatibl 00E0 | 65 20 77 69 74 68 20 70 72 6F 67 72 61 6D 73 20 | e with programs 00F0 | 74 68 61 74 20 65 78 70 65 63 74 20 69 74 2E 00 | that expect it. -I 25793 2023-11-24 23:06:54 - [Commands] Received from C-7 (version=GC_V3 command=88 flag=00) +I 91446 2023-12-31 21:04:43 - [Commands] Received from C-1 (version=DC_NTE command=88 flag=00) 0000 | 88 00 26 00 35 35 35 35 35 35 35 35 00 00 00 00 | & 55555555 0010 | 00 00 00 00 00 38 38 38 38 38 38 38 38 00 00 00 | 88888888 0020 | 00 00 00 00 00 00 | -I 25793 2023-11-24 23:06:54 - [C-7] Game version changed to DC_NTE -I 25793 2023-11-24 23:06:54 - [Commands] Sending to C-7 (version=DC_NTE command=88 flag=00) +I 91446 2023-12-31 21:04:43 - [C-1] Game version changed to DC_NTE +I 91446 2023-12-31 21:04:43 - [C-1] Created license [License: serial_number=1431655765/55555555, access_key=88888888, flags=00000000] +I 91446 2023-12-31 21:04:43 - [Commands] Sending to C-1 (version=DC_NTE command=88 flag=00) 0000 | 88 00 04 00 | -I 25793 2023-11-24 23:06:54 - [Commands] Received from C-7 (version=DC_NTE command=8A flag=00) +I 91446 2023-12-31 21:04:44 - [Commands] Received from C-1 (version=DC_NTE command=8A flag=00) 0000 | 8A 00 A4 00 00 00 13 2B 64 B2 2C B2 20 00 00 00 | +d , 0010 | 00 00 00 00 66 6C 79 63 61 73 74 31 00 00 00 00 | flycast1 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | @@ -36,10 +37,10 @@ I 25793 2023-11-24 23:06:54 - [Commands] Received from C-7 (version=DC_NTE comma 0080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00A0 | 00 00 00 00 | -I 25793 2023-11-24 23:06:54 - [C-7] Game version changed to DC_V1 -I 25793 2023-11-24 23:06:54 - [Commands] Sending to C-7 (version=DC_V1 command=8A flag=01) +I 91446 2023-12-31 21:04:44 - [C-1] Game version changed to DC_V1 +I 91446 2023-12-31 21:04:44 - [Commands] Sending to C-1 (version=DC_V1 command=8A flag=01) 0000 | 8A 01 04 00 | -I 25793 2023-11-24 23:06:54 - [Commands] Received from C-7 (version=DC_V1 command=8B flag=00) +I 91446 2023-12-31 21:04:44 - [Commands] Received from C-1 (version=DC_V1 command=8B flag=00) 0000 | 8B 00 14 01 00 00 FF FF FF FF 00 00 00 00 13 2B | + 0010 | 64 B2 2C B2 20 00 00 00 00 00 00 00 35 35 35 35 | d , 5555 0020 | 35 35 35 35 00 00 00 00 00 00 00 00 00 38 38 38 | 5555 888 @@ -58,37 +59,31 @@ I 25793 2023-11-24 23:06:54 - [Commands] Received from C-7 (version=DC_V1 comman 00F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0110 | 00 00 00 00 | -I 25793 2023-11-24 23:06:54 - [C-7] Game version changed to DC_NTE -I 25793 2023-11-24 23:06:54 - [Commands] Sending to C-7 (version=DC_NTE command=04 flag=00) +I 91446 2023-12-31 21:04:44 - [C-1] Game version changed to DC_NTE +I 91446 2023-12-31 21:04:44 - [Commands] Sending to C-1 (version=DC_NTE command=04 flag=00) 0000 | 04 00 0C 00 00 00 01 00 55 55 55 55 | UUUU -I 25793 2023-11-24 23:06:54 - [Commands] Sending to C-7 (version=DC_NTE command=07 flag=02) +I 91446 2023-12-31 21:04:44 - [C-1] Client is a prototype version and the license was created during this session; converting permanent license to temporary license +I 91446 2023-12-31 21:04:44 - [Commands] Sending to C-1 (version=DC_NTE command=07 flag=02) 0000 | 07 02 58 00 11 00 00 11 FF FF FF FF 04 00 41 6C | X Al 0010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 00 | exandria 0020 | 11 00 00 11 11 22 22 11 04 0F 47 6F 20 74 6F 20 | "" Go to 0030 | 6C 6F 62 62 79 00 00 00 00 00 00 00 11 00 00 11 | lobby 0040 | 11 88 88 11 04 0F 44 69 73 63 6F 6E 6E 65 63 74 | Disconnect 0050 | 00 00 00 00 00 00 00 00 | -I 25793 2023-11-24 23:06:57 - [Commands] Received from C-7 (version=DC_NTE command=09 flag=00) -0000 | 09 00 0C 00 11 00 00 11 11 22 22 11 | "" -I 25793 2023-11-24 23:06:57 - [Commands] Sending to C-7 (version=DC_NTE command=11 flag=00) -0000 | 11 00 38 00 00 00 00 00 00 00 00 00 30 20 70 6C | 8 0 pl -0010 | 61 79 65 72 73 20 6F 6E 6C 69 6E 65 0A 30 20 67 | ayers online 0 g -0020 | 61 6D 65 73 0A 30 20 63 6F 6D 70 61 74 69 62 6C | ames 0 compatibl -0030 | 65 20 67 61 6D 65 73 00 | e games -I 25793 2023-11-24 23:06:58 - [Commands] Received from C-7 (version=DC_NTE command=10 flag=00) +I 91446 2023-12-31 21:04:56 - [Commands] Received from C-1 (version=DC_NTE command=10 flag=00) 0000 | 10 00 0C 00 11 00 00 11 11 22 22 11 | "" -I 25793 2023-11-24 23:06:58 - [Commands] Sending to C-7 (version=DC_NTE command=19 flag=00) +I 91446 2023-12-31 21:04:56 - [Commands] Sending to C-1 (version=DC_NTE command=19 flag=00) 0000 | 19 00 0C 00 AC 10 00 0A F6 13 00 00 | -I 25793 2023-11-24 23:06:59 - [Server] Client disconnected: C-7 on fd 44 -I 25793 2023-11-24 23:06:59 - [C-7] Deleted -I 25793 2023-11-24 23:06:59 - [C-8] Created -I 25793 2023-11-24 23:06:59 - [Server] Client connected: C-8 on fd 44 via 10 (T-5110-DC_NTE-console-lobby-lobby_server) -I 25793 2023-11-24 23:06:59 - [Commands] Sending to C-8 (version=GC_V3 command=02 flag=00) +I 91446 2023-12-31 21:04:56 - [Server] Client disconnected: C-1 on fd 45 +I 91446 2023-12-31 21:04:56 - [C-1] Deleted +I 91446 2023-12-31 21:04:56 - [C-2] Created +I 91446 2023-12-31 21:04:56 - [Server] Client connected: C-2 on fd 45 via 10 (T-5110-DC_NTE-console-lobby-lobby_server) +I 91446 2023-12-31 21:04:56 - [Commands] Sending to C-2 (version=DC_NTE command=02 flag=00) 0000 | 02 00 00 01 44 72 65 61 6D 43 61 73 74 20 4C 6F | DreamCast Lo 0010 | 62 62 79 20 53 65 72 76 65 72 2E 20 43 6F 70 79 | bby Server. Copy 0020 | 72 69 67 68 74 20 53 45 47 41 20 45 6E 74 65 72 | right SEGA Enter 0030 | 70 72 69 73 65 73 2E 20 31 39 39 39 00 00 00 00 | prises. 1999 -0040 | 00 00 00 00 E7 2A 33 08 E5 CA 2F C6 54 68 69 73 | *3 / This +0040 | 00 00 00 00 4C B5 68 4C CB 2F E0 03 54 68 69 73 | L hL / This 0050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no 0060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, 0070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s @@ -100,7 +95,7 @@ I 25793 2023-11-24 23:06:59 - [Commands] Sending to C-8 (version=GC_V3 command=0 00D0 | 72 65 6D 61 69 6E 20 63 6F 6D 70 61 74 69 62 6C | remain compatibl 00E0 | 65 20 77 69 74 68 20 70 72 6F 67 72 61 6D 73 20 | e with programs 00F0 | 74 68 61 74 20 65 78 70 65 63 74 20 69 74 2E 00 | that expect it. -I 25793 2023-11-24 23:06:59 - [Commands] Received from C-8 (version=GC_V3 command=8B flag=00) +I 91446 2023-12-31 21:04:56 - [Commands] Received from C-2 (version=DC_NTE command=8B flag=00) 0000 | 8B 00 B0 00 00 00 01 00 55 55 55 55 00 00 13 2B | UUUU + 0010 | 64 B2 2C B2 20 00 00 00 00 00 00 00 35 35 35 35 | d , 5555 0020 | 35 35 35 35 00 00 00 00 00 00 00 00 00 38 38 38 | 5555 888 @@ -112,10 +107,12 @@ I 25793 2023-11-24 23:06:59 - [Commands] Received from C-8 (version=GC_V3 comman 0080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 42 | AB 00A0 | 43 44 45 46 47 48 49 4A 4B 4C 00 00 00 00 00 00 | CDEFGHIJKL -I 25793 2023-11-24 23:06:59 - [C-8] Game version changed to DC_NTE -I 25793 2023-11-24 23:06:59 - [Commands] Sending to C-8 (version=DC_NTE command=04 flag=00) +I 91446 2023-12-31 21:04:56 - [C-2] Game version changed to DC_NTE +I 91446 2023-12-31 21:04:56 - [C-2] Created license [License: serial_number=1431655765/55555555, access_key=88888888, flags=00000000] +I 91446 2023-12-31 21:04:56 - [Commands] Sending to C-2 (version=DC_NTE command=04 flag=00) 0000 | 04 00 0C 00 00 00 01 00 55 55 55 55 | UUUU -I 25793 2023-11-24 23:06:59 - [Commands] Sending to C-8 (version=DC_NTE command=83 flag=0A) +I 91446 2023-12-31 21:04:56 - [C-2] Client is a prototype version and the license was created during this session; converting permanent license to temporary license +I 91446 2023-12-31 21:04:56 - [Commands] Sending to C-2 (version=DC_NTE command=83 flag=0A) 0000 | 83 0A 7C 00 33 00 00 33 01 00 00 00 00 00 00 00 | | 3 3 0010 | 33 00 00 33 02 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 0020 | 03 00 00 00 00 00 00 00 33 00 00 33 04 00 00 00 | 3 3 @@ -124,27 +121,27 @@ I 25793 2023-11-24 23:06:59 - [Commands] Sending to C-8 (version=DC_NTE command= 0050 | 07 00 00 00 00 00 00 00 33 00 00 33 08 00 00 00 | 3 3 0060 | 00 00 00 00 33 00 00 33 09 00 00 00 00 00 00 00 | 3 3 0070 | 33 00 00 33 0A 00 00 00 00 00 00 00 | 3 3 -I 25793 2023-11-24 23:06:59 - [Commands] Sending to C-8 (version=DC_NTE command=8D flag=00) +I 91446 2023-12-31 21:04:56 - [Commands] Sending to C-2 (version=DC_NTE command=8D flag=00) 0000 | 8D 00 04 00 | -I 25793 2023-11-24 23:06:59 - [Commands] Received from C-8 (version=DC_NTE command=61 flag=01) -0000 | 61 01 20 04 05 00 00 00 02 00 00 00 0C 00 00 00 | a -0010 | 00 06 00 00 00 00 00 00 00 00 00 00 05 00 01 00 | -0020 | 00 00 00 00 02 00 00 00 0C 00 00 00 01 01 00 00 | -0030 | 00 00 00 00 00 00 00 00 06 00 01 00 00 00 00 00 | -0040 | 02 00 00 00 0C 00 00 00 02 00 05 00 F4 01 00 00 | -0050 | 00 00 00 00 07 00 01 00 00 00 28 00 01 00 00 00 | ( -0060 | 10 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 | -0070 | 08 00 01 00 00 00 00 00 01 00 00 00 10 00 00 00 | -0080 | 03 01 00 00 00 01 00 00 00 00 00 00 09 00 01 00 | -0090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +I 91446 2023-12-31 21:04:57 - [Commands] Received from C-2 (version=DC_NTE command=61 flag=01) +0000 | 61 01 20 04 0A 00 00 00 01 00 00 00 04 00 00 00 | a +0010 | 00 06 00 00 00 00 00 00 00 00 00 00 00 00 21 00 | ! +0020 | 00 00 00 00 01 00 00 00 04 00 00 00 01 01 00 00 | +0030 | 00 00 00 00 00 00 00 00 01 00 21 00 00 00 00 00 | ! +0040 | 02 00 00 00 0C 00 00 00 02 00 05 00 F9 01 1E 00 | +0050 | 05 00 00 00 02 00 21 00 02 00 2A 00 01 00 00 00 | ! * +0060 | 10 00 00 00 03 00 00 00 00 04 00 00 00 00 00 00 | +0070 | 03 00 21 00 00 00 00 00 02 00 00 00 0C 00 00 00 | ! +0080 | 01 02 00 00 00 00 00 00 00 00 00 00 04 00 21 00 | ! +0090 | 00 00 00 00 02 00 00 00 0C 00 00 00 01 01 00 00 | +00A0 | 00 00 00 00 00 00 00 00 05 00 21 00 00 00 28 00 | ! ( +00B0 | 01 00 00 00 04 00 00 00 02 00 05 00 F4 01 00 00 | +00C0 | 00 00 00 00 06 00 21 00 00 00 28 00 02 00 00 00 | ! ( +00D0 | 0C 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | +00E0 | 08 00 21 00 00 00 00 00 01 00 00 00 04 00 00 00 | ! +00F0 | 00 06 00 01 00 00 00 00 00 00 00 00 06 00 01 00 | +0100 | 00 00 00 00 01 00 00 00 10 00 00 00 03 02 00 00 | +0110 | 03 01 00 00 00 00 00 00 09 00 21 00 00 00 00 00 | ! 0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | @@ -181,39 +178,53 @@ I 25793 2023-11-24 23:06:59 - [Commands] Received from C-8 (version=DC_NTE comma 0330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0350 | 14 00 00 00 23 00 14 00 0A 00 46 00 14 00 00 00 | # F -0360 | E0 67 99 41 00 00 20 41 00 00 00 00 00 00 00 00 | g A A -0370 | 64 00 00 00 41 42 43 44 45 46 47 48 49 4A 4B 4C | d ABCDEFGHIJKL +0360 | E0 67 99 41 00 00 20 41 00 00 00 00 06 00 00 00 | g A A +0370 | 5E 01 01 00 41 42 43 44 45 46 47 48 49 4A 4B 4C | ^ ABCDEFGHIJKL 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0390 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -03A0 | 80 A7 80 A7 06 04 00 01 51 00 00 00 00 00 01 00 | Q +03A0 | 59 77 59 77 06 04 00 00 51 00 00 00 00 00 01 00 | YwYw Q 03B0 | 00 00 00 00 00 00 1F 00 3F 00 B3 00 00 C0 D5 3E | ? > -03C0 | 00 82 E9 3E 00 00 00 00 01 00 00 00 02 00 01 00 | > +03C0 | 00 82 E9 3E 00 00 00 00 01 02 00 00 02 00 01 00 | > 03D0 | 02 01 01 00 04 00 01 00 01 00 00 00 00 00 00 00 | 03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | 0410 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 | -I 25793 2023-11-24 23:06:59 - [Commands] Sending to C-8 (ABCDEFGHIJKL) (version=DC_NTE command=67 flag=01) +I 91446 2023-12-31 21:04:57 - [C-2] Assigned inventory item IDs +[PlayerInventory] Meseta: 65886 +[PlayerInventory] 10 items +[PlayerInventory] 0: [+00000004] 00060000 00000000 00000000 (10010000) 00000000 (Handgun) +[PlayerInventory] 1: [+00000004] 01010000 00000000 00000000 (10010001) 00000000 (Frame) +[PlayerInventory] 2: [+0000000C] 02000500 F8011E00 04000000 (10010002) 2A020005 (Mag LV5 5.04/0.3/0.04/0 42% 2IQ (black)) +[PlayerInventory] 3: [+00000010] 03000000 00040000 00000000 (10010003) 00000000 (Monomate x4) +[PlayerInventory] 4: [+0000000C] 01020000 00000000 00000000 (10010004) 00000000 (Barrier) +[PlayerInventory] 5: [+0000000C] 01010000 00000000 00000000 (10010005) 00002800 (Frame) +[PlayerInventory] 6: [+00000004] 02000500 F4010000 00000000 (10010006) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] 7: [+0000000C] 00010000 00000000 00000000 (10010007) 00000000 (Saber) +[PlayerInventory] 8: [+00000004] 00060001 00000000 00000000 (10010008) 00000000 (Handgun +1) +[PlayerInventory] 9: [+00000010] 03020000 03010000 00000000 (10010009) 00000000 (Disk:Barta Lv.1) +I 91446 2023-12-31 21:04:57 - [C-2] Bank is empty +I 91446 2023-12-31 21:04:57 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=67 flag=01) 0000 | 67 01 44 04 00 00 01 00 00 00 01 00 55 55 55 55 | g D UUUU 0010 | 7F 00 00 01 00 00 00 00 41 42 43 44 45 46 47 48 | ABCDEFGH -0020 | 49 4A 4B 4C 00 00 00 00 05 00 00 00 02 00 00 00 | IJKL -0030 | 0C 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 | -0040 | 00 00 01 10 00 00 00 00 02 00 00 00 0C 00 00 00 | +0020 | 49 4A 4B 4C 00 00 00 00 0A 00 00 00 01 00 00 00 | IJKL +0030 | 04 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 | +0040 | 00 00 01 10 00 00 00 00 01 00 00 00 04 00 00 00 | 0050 | 01 01 00 00 00 00 00 00 00 00 00 00 01 00 01 10 | 0060 | 00 00 00 00 02 00 00 00 0C 00 00 00 02 00 05 00 | -0070 | F4 01 00 00 00 00 00 00 02 00 01 10 00 00 28 00 | ( -0080 | 01 00 00 00 10 00 00 00 03 00 00 00 00 01 00 00 | -0090 | 00 00 00 00 03 00 01 10 00 00 00 00 01 00 00 00 | -00A0 | 10 00 00 00 03 01 00 00 00 01 00 00 00 00 00 00 | -00B0 | 04 00 01 10 00 00 00 00 00 00 00 00 00 00 00 00 | -00C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0070 | F9 01 1E 00 05 00 00 00 02 00 01 10 02 00 2A 00 | * +0080 | 01 00 00 00 10 00 00 00 03 00 00 00 00 04 00 00 | +0090 | 00 00 00 00 03 00 01 10 00 00 00 00 02 00 00 00 | +00A0 | 0C 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 | +00B0 | 04 00 01 10 00 00 00 00 02 00 00 00 0C 00 00 00 | +00C0 | 01 01 00 00 00 00 00 00 00 00 00 00 05 00 01 10 | +00D0 | 00 00 28 00 01 00 00 00 04 00 00 00 02 00 05 00 | ( +00E0 | F4 01 00 00 00 00 00 00 06 00 01 10 00 00 28 00 | ( +00F0 | 02 00 00 00 0C 00 00 00 00 01 00 00 00 00 00 00 | +0100 | 00 00 00 00 07 00 01 10 00 00 00 00 01 00 00 00 | +0110 | 04 00 00 00 00 06 00 01 00 00 00 00 00 00 00 00 | +0120 | 08 00 01 10 00 00 00 00 01 00 00 00 10 00 00 00 | +0130 | 03 02 00 00 03 01 00 00 00 00 00 00 09 00 01 10 | 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | @@ -251,315 +262,188 @@ I 25793 2023-11-24 23:06:59 - [Commands] Sending to C-8 (ABCDEFGHIJKL) (version= 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0370 | 00 00 00 00 14 00 00 00 23 00 14 00 0A 00 46 00 | # F 0380 | 14 00 00 00 E0 67 99 41 00 00 20 41 00 00 00 00 | g A A -0390 | 00 00 00 00 64 00 00 00 41 42 43 44 45 46 47 48 | d ABCDEFGH +0390 | 06 00 00 00 5E 01 01 00 41 42 43 44 45 46 47 48 | ^ ABCDEFGH 03A0 | 49 4A 4B 4C 00 00 00 00 00 00 00 00 00 00 00 00 | IJKL 03B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -03C0 | 00 00 00 00 F3 2E F3 2E 06 04 00 01 51 00 00 00 | . . Q +03C0 | 00 00 00 00 59 77 59 77 06 04 00 00 51 00 00 00 | YwYw Q 03D0 | 00 00 01 00 00 00 00 00 00 00 1F 00 3F 00 B3 00 | ? -03E0 | 00 C0 D5 3E 00 82 E9 3E 00 00 00 00 01 00 00 00 | > > +03E0 | 00 C0 D5 3E 00 82 E9 3E 00 00 00 00 01 02 00 00 | > > 03F0 | 02 00 01 00 02 01 01 00 04 00 01 00 01 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0430 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | 0440 | FF FF FF 00 | -I 25793 2023-11-24 23:07:00 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:04:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 1C 00 36 06 00 00 00 00 00 00 0F 00 FF FF | ` 6 0010 | 00 00 C8 C3 00 00 98 42 00 80 04 C4 | B -I 25793 2023-11-24 23:07:00 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:04:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1B 01 00 00 | ` -I 25793 2023-11-24 23:07:00 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:04:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 1C 00 36 06 00 00 00 00 00 40 0F 00 FF FF | ` 6 @ 0010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > -I 25793 2023-11-24 23:07:00 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:04:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1B 01 00 00 | ` -I 25793 2023-11-24 23:07:00 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:04:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1F 01 00 00 | ` -I 25793 2023-11-24 23:07:00 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 2A 03 00 00 FE FF FF FF 00 00 00 00 | ` * -I 25793 2023-11-24 23:07:03 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 A6 31 42 C2 A0 4C 89 3E | ` 7 1B L > +I 91446 2023-12-31 21:05:00 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 A6 31 62 C2 65 4A 04 41 | ` 7 1b eJ A 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:04 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 76 71 2B C2 CE 9B BC 40 | ` 7 vq+ @ +I 91446 2023-12-31 21:05:01 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 C2 F3 65 C2 BD E1 7F 41 | ` 7 e A 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:04 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 E3 E7 2E C2 8E 77 5A 41 | ` 7 . wZA +I 91446 2023-12-31 21:05:01 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 DF A5 70 C2 2A 42 BC 41 | ` 7 p *B A 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:04 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 FB 47 38 C2 CE 3F A9 41 | ` 7 G8 ? A +I 91446 2023-12-31 21:05:01 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 68 0C 55 C2 38 1A DD 41 | ` 7 h U 8 A 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:04 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 82 90 48 C2 E8 4C E0 41 | ` 9 H L A -I 25793 2023-11-24 23:07:05 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 BB 98 5B C2 28 3B 07 42 | ` 9 [ (; B -I 25793 2023-11-24 23:07:05 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 F6 F1 71 C2 AF 27 1B 42 | ` 9 q ' B -I 25793 2023-11-24 23:07:05 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 BE 6E 85 C2 68 C3 2B 42 | ` 9 n h +B -I 25793 2023-11-24 23:07:05 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 BF AA 89 C2 6B 3B 49 42 | ` 9 k;IB -I 25793 2023-11-24 23:07:05 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 DC C8 90 C2 44 90 63 42 | ` 9 D cB -I 25793 2023-11-24 23:07:05 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 82 36 98 C2 3E 9C 7D 42 | ` 9 6 > }B -I 25793 2023-11-24 23:07:06 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 3B E4 A0 C2 31 07 8B 42 | ` 9 ; 1 B -I 25793 2023-11-24 23:07:06 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 3B CC AA C2 A3 46 96 42 | ` 9 ; F B -I 25793 2023-11-24 23:07:06 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D8 DE B5 C2 1F 60 A0 42 | ` 9 ` B -I 25793 2023-11-24 23:07:06 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D1 01 C2 C2 8A 2A A9 42 | ` 9 * B -I 25793 2023-11-24 23:07:06 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 A7 8A C5 C2 8C 11 B8 42 | ` 9 B -I 25793 2023-11-24 23:07:06 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 A5 74 CB C2 B9 C5 C5 42 | ` 9 t B -I 25793 2023-11-24 23:07:07 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 05 F2 0F 00 01 00 | ` 6 -0010 | 33 12 CB C2 00 00 00 00 E6 D8 C4 42 | 3 B -I 25793 2023-11-24 23:07:09 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=84 flag=00) -0000 | 84 00 0C 00 33 00 00 33 07 00 00 00 | 3 3 -I 25793 2023-11-24 23:07:09 - [Commands] Sending to C-8 (ABCDEFGHIJKL) (version=DC_NTE command=67 flag=01) -0000 | 67 01 44 04 00 00 01 00 00 00 01 00 55 55 55 55 | g D UUUU -0010 | 7F 00 00 01 00 00 00 00 41 42 43 44 45 46 47 48 | ABCDEFGH -0020 | 49 4A 4B 4C 00 00 00 00 05 00 00 00 02 00 00 00 | IJKL -0030 | 0C 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 | -0040 | 00 00 01 10 00 00 00 00 02 00 00 00 0C 00 00 00 | -0050 | 01 01 00 00 00 00 00 00 00 00 00 00 01 00 01 10 | -0060 | 00 00 00 00 02 00 00 00 0C 00 00 00 02 00 05 00 | -0070 | F4 01 00 00 00 00 00 00 02 00 01 10 00 00 28 00 | ( -0080 | 01 00 00 00 10 00 00 00 03 00 00 00 00 01 00 00 | -0090 | 00 00 00 00 03 00 01 10 00 00 00 00 01 00 00 00 | -00A0 | 10 00 00 00 03 01 00 00 00 01 00 00 00 00 00 00 | -00B0 | 04 00 01 10 00 00 00 00 00 00 00 00 00 00 00 00 | -00C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -00F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -01A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -01B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -01C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -01D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -01E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -01F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -02A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -02E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -02F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0370 | 00 00 00 00 14 00 00 00 23 00 14 00 0A 00 46 00 | # F -0380 | 14 00 00 00 E0 67 99 41 00 00 20 41 00 00 00 00 | g A A -0390 | 00 00 00 00 64 00 00 00 41 42 43 44 45 46 47 48 | d ABCDEFGH -03A0 | 49 4A 4B 4C 00 00 00 00 00 00 00 00 00 00 00 00 | IJKL -03B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -03C0 | 00 00 00 00 F1 7D F1 7D 06 04 00 01 51 00 00 00 | } } Q -03D0 | 00 00 01 00 00 00 00 00 00 00 1F 00 3F 00 B3 00 | ? -03E0 | 00 C0 D5 3E 00 82 E9 3E 00 00 00 00 01 00 00 00 | > > -03F0 | 02 00 01 00 02 01 01 00 04 00 01 00 01 00 00 00 | -0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0430 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | -0440 | FF FF FF 00 | -I 25793 2023-11-24 23:07:09 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 08 00 1E 01 00 00 | ` -I 25793 2023-11-24 23:07:10 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 00 40 0F 00 01 00 | ` 6 @ -0010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > -I 25793 2023-11-24 23:07:10 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 08 00 1B 01 00 00 | ` -I 25793 2023-11-24 23:07:10 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 08 00 1F 01 00 00 | ` -I 25793 2023-11-24 23:07:11 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 A6 31 42 C2 A0 4C 89 3E | ` 7 1B L > +I 91446 2023-12-31 21:05:01 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 28 BE 3B C2 AF 3F 01 42 | ` 9 ( ; ? B +I 91446 2023-12-31 21:05:01 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 12 80 22 C2 91 6E 11 42 | ` 9 " n B +I 91446 2023-12-31 21:05:02 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 56 C5 04 C2 F6 41 0A 42 | ` 9 V A B +I 91446 2023-12-31 21:05:02 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 10 2F D6 C1 78 D4 1C 42 | ` 9 / x B +I 91446 2023-12-31 21:05:02 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 EB 4E 9F C1 DF 84 28 42 | ` 9 N (B +I 91446 2023-12-31 21:05:02 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 66 B0 53 C1 4D 22 36 42 | ` 9 f S M"6B +I 91446 2023-12-31 21:05:02 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 EB 2C 0F 00 01 00 | ` 6 , +0010 | EC D4 5A C1 00 00 00 00 B4 3B 35 42 | Z ;5B +I 91446 2023-12-31 21:05:17 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=06 flag=00) +0000 | 06 00 14 00 00 00 00 00 00 00 00 00 6F 6D 67 20 | omg +0010 | 68 34 78 00 | h4x +I 91446 2023-12-31 21:05:17 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=06 flag=00) +0000 | 06 00 24 00 00 00 00 00 55 55 55 55 41 42 43 44 | $ UUUUABCD +0010 | 45 46 47 48 49 4A 4B 4C 3E 30 6F 6D 67 20 68 34 | EFGHIJKL>0omg h4 +0020 | 78 00 00 00 | x +I 91446 2023-12-31 21:05:17 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 F0 3A D1 C0 A5 AD 43 42 | ` 7 : CB 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:11 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 A6 31 42 C2 36 6B F7 C0 | ` 7 1B 6k +I 91446 2023-12-31 21:05:18 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 36 17 80 C0 5A 07 62 42 | ` 7 6 Z bB 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:12 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 F3 2E 46 C2 A0 28 77 C1 | ` 7 .F (w +I 91446 2023-12-31 21:05:18 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 5D 23 0E C0 C4 5B 80 42 | ` 7 ]# [ B 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:12 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 46 DC 38 C2 56 C7 B5 C1 | ` 7 F 8 V +I 91446 2023-12-31 21:05:18 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 D2 FC 62 40 FE 09 89 42 | ` 7 b@ B 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:12 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 BB 8E 1D C2 86 5F D5 C1 | ` 9 _ -I 25793 2023-11-24 23:07:12 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C1 53 05 C2 28 70 F8 C1 | ` 9 S (p -I 25793 2023-11-24 23:07:13 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 8E 39 D8 C1 CA 78 0C C2 | ` 9 9 x -I 25793 2023-11-24 23:07:13 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 B4 FD A5 C1 9B E0 1C C2 | ` 9 -I 25793 2023-11-24 23:07:13 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C0 99 67 C1 D8 50 2D C2 | ` 9 g P- -I 25793 2023-11-24 23:07:13 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 1B 50 03 C1 3C CA 3D C2 | ` 9 P < = -I 25793 2023-11-24 23:07:13 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 AC B1 F8 BF 9D 49 4E C2 | ` 9 IN -I 25793 2023-11-24 23:07:13 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 E1 87 AF 40 80 ED 46 C2 | ` 9 @ F -I 25793 2023-11-24 23:07:14 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 A0 6A 4B 41 78 23 41 C2 | ` 9 jKAx#A -I 25793 2023-11-24 23:07:14 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 1E 9F 9D 41 96 50 36 C2 | ` 9 A P6 -I 25793 2023-11-24 23:07:14 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 78 C8 D2 41 E2 76 28 C2 | ` 9 x A v( -I 25793 2023-11-24 23:07:14 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 4D 30 02 42 CC A1 17 C2 | ` 9 M0 B -I 25793 2023-11-24 23:07:14 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 F4 D1 18 42 C2 FC 03 C2 | ` 9 B -I 25793 2023-11-24 23:07:14 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 26 F0 2C 42 FB 8D DB C1 | ` 9 & ,B -I 25793 2023-11-24 23:07:15 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 5F 3B 3E 42 30 9C AA C1 | ` 9 _;>B0 -I 25793 2023-11-24 23:07:15 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 98 6F 4C 42 B5 AD 6B C1 | ` 9 oLB k -I 25793 2023-11-24 23:07:15 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 45 55 57 42 F2 0B F8 C0 | ` 9 EUWB -I 25793 2023-11-24 23:07:15 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 94 C2 5E 42 C0 DE FC BE | ` 9 ^B -I 25793 2023-11-24 23:07:15 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 60 9A 62 42 26 F0 DD 40 | ` 9 ` bB& @ -I 25793 2023-11-24 23:07:15 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 44 CE 62 42 B4 D3 66 41 | ` 9 D bB fA -I 25793 2023-11-24 23:07:16 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 A3 5D 5F 42 80 F2 AE 41 | ` 9 ]_B A -I 25793 2023-11-24 23:07:16 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 40 55 58 42 0C 34 E9 41 | ` 9 @UXB 4 A -I 25793 2023-11-24 23:07:16 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D1 CF 4D 42 A9 A8 10 42 | ` 9 MB B -I 25793 2023-11-24 23:07:16 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 F8 F5 3F 42 00 3B 2B 42 | ` 9 ?B ;+B -I 25793 2023-11-24 23:07:16 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 86 FB 2E 42 DB EB 43 42 | ` 9 .B CB -I 25793 2023-11-24 23:07:16 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 93 21 1B 42 06 5E 5A 42 | ` 9 ! B ^ZB -I 25793 2023-11-24 23:07:17 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 CD B2 04 42 D3 3B 6E 42 | ` 9 B ;nB -I 25793 2023-11-24 23:07:17 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 B2 09 D8 41 80 3A 7F 42 | ` 9 A : B -I 25793 2023-11-24 23:07:17 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C4 E9 A2 41 73 8C 86 42 | ` 9 As B -I 25793 2023-11-24 23:07:17 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 32 A0 55 41 90 D1 8B 42 | ` 9 2 UA B -I 25793 2023-11-24 23:07:17 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 37 45 C2 40 9C 58 8F 42 | ` 9 7E @ X B -I 25793 2023-11-24 23:07:17 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 40 5D AF BF 34 14 91 42 | ` 9 @] 4 B -I 25793 2023-11-24 23:07:18 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 C6 C4 0F 00 01 00 | ` 6 -0010 | BE 85 5C BF 00 00 00 00 C5 1E 91 42 | \ B -I 25793 2023-11-24 23:07:27 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=06 flag=00) -0000 | 06 00 1C 00 00 00 00 00 00 00 00 00 31 32 33 34 | 1234 -0010 | 35 36 37 38 39 30 2C 2E 26 24 00 00 | 567890,.&$ -I 25793 2023-11-24 23:07:27 - [Commands] Sending to C-8 (ABCDEFGHIJKL) (version=DC_NTE command=06 flag=00) -0000 | 06 00 2C 00 00 00 00 00 55 55 55 55 41 42 43 44 | , UUUUABCD -0010 | 45 46 47 48 49 4A 4B 4C 3E 30 31 32 33 34 35 36 | EFGHIJKL>0123456 -0020 | 37 38 39 30 2C 2E 26 24 00 00 00 00 | 7890,.&$ -I 25793 2023-11-24 23:07:29 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 E0 F4 E5 BF D9 3A 81 42 | ` 7 : B -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:29 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 B5 B5 CF BF 90 5B 63 42 | ` 7 [cB -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:29 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 08 55 B9 3E 90 5C 44 42 | ` 7 U > \DB -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:29 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 8A B6 14 C0 6D 2B 26 42 | ` 7 m+&B -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:30 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 E1 BD 0B C1 01 DE 13 42 | ` 9 B -I 25793 2023-11-24 23:07:30 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 54 A6 0F 00 01 00 | ` 6 T -0010 | 50 66 01 C1 00 00 00 00 07 07 14 42 | Pf B -I 25793 2023-11-24 23:07:30 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 53 75 51 C1 E6 FE 2C 42 | ` 7 SuQ ,B -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:30 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 02 3C A7 C1 2A F2 33 42 | ` 7 < * 3B -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:31 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 1C A0 E1 C1 91 B9 28 42 | ` 7 (B -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:31 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 15 2F 0F C2 08 34 1F 42 | ` 7 / 4 B -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:31 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 8C 62 1D C2 D1 77 02 42 | ` 9 b w B -I 25793 2023-11-24 23:07:31 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 12 E7 2A C2 6E 8F D0 41 | ` 9 * n A -I 25793 2023-11-24 23:07:31 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 CA EE 33 C2 37 61 97 41 | ` 9 3 7a A -I 25793 2023-11-24 23:07:32 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 35 E6 39 C2 6D 41 39 41 | ` 9 5 9 mA9A -I 25793 2023-11-24 23:07:32 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D9 0F 25 C2 7F 87 BF 40 | ` 9 % @ -I 25793 2023-11-24 23:07:32 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 1D B2 08 C2 B3 2A D3 40 | ` 9 * @ -I 25793 2023-11-24 23:07:32 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 64 A9 E0 C1 B8 B8 C4 3F | ` 9 d ? -I 25793 2023-11-24 23:07:32 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 45 4A 0F 00 01 00 | ` 6 EJ -0010 | 8A 8E 05 C2 00 00 00 00 8C D2 AB 40 | @ -I 25793 2023-11-24 23:07:40 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 18 00 62 05 00 00 01 00 01 00 29 03 FF FF | ` b ) +I 91446 2023-12-31 21:05:18 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 40 A2 0F 41 0E 9E 94 42 | ` 9 @ A B +I 91446 2023-12-31 21:05:19 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 CE 9C 85 41 12 AF 93 42 | ` 9 A B +I 91446 2023-12-31 21:05:19 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D5 8B C0 41 E8 AD 93 42 | ` 9 A B +I 91446 2023-12-31 21:05:19 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 4A 99 FB 41 A2 15 91 42 | ` 9 J A B +I 91446 2023-12-31 21:05:19 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E4 92 1A 42 85 E3 8C 42 | ` 9 B B +I 91446 2023-12-31 21:05:19 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 1D 32 36 42 C2 12 87 42 | ` 9 26B B +I 91446 2023-12-31 21:05:19 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 20 52 53 42 5C D4 8B 42 | ` 9 RSB\ B +I 91446 2023-12-31 21:05:20 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 13 36 0F 00 01 00 | ` 6 6 +0010 | FC 89 51 42 00 00 00 00 07 AE 8A 42 | QB B +I 91446 2023-12-31 21:05:21 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 18 00 62 05 00 00 02 00 01 00 4F 00 AF 01 | ` b O 0010 | FF FF FF FF FF FF FF FF | -I 25793 2023-11-24 23:07:43 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 46 03 00 00 0A 00 00 00 45 4A 00 00 | ` F EJ -I 25793 2023-11-24 23:07:48 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 46 03 00 00 0A 00 00 00 45 4A 00 00 | ` F EJ -I 25793 2023-11-24 23:07:48 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 45 4A 0F 00 01 00 | ` 6 EJ -0010 | 8A 8E 05 C2 00 00 00 00 8C D2 AB 40 | @ -I 25793 2023-11-24 23:07:49 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 46 03 00 00 0A 00 00 00 45 4A 00 00 | ` F EJ -I 25793 2023-11-24 23:07:51 - [Commands] Received from C-8 (ABCDEFGHIJKL) (version=DC_NTE command=8E flag=00) -0000 | 8E 00 1C 00 00 00 01 00 55 55 55 55 00 00 00 00 | UUUU -0010 | 00 00 00 00 00 00 00 00 00 00 00 00 | -I 25793 2023-11-24 23:07:51 - [Commands] Sending to C-8 (ABCDEFGHIJKL) (version=DC_NTE command=69 flag=00) -0000 | 69 00 08 00 00 00 01 00 | i -I 25793 2023-11-24 23:07:51 - [Commands] Sending to C-8 (ABCDEFGHIJKL) (version=DC_NTE command=19 flag=00) -0000 | 19 00 0C 00 AC 10 00 0A EC 13 00 00 | -I 25793 2023-11-24 23:07:51 - [Server] Client disconnected: C-8 on fd 44 -I 25793 2023-11-24 23:07:51 - [C-8] Deleted -I 25793 2023-11-24 23:07:51 - [C-9] Created -I 25793 2023-11-24 23:07:51 - [Server] Client connected: C-9 on fd 44 via 7 (T-5100-DC_NTE-console-login-login_server) -I 25793 2023-11-24 23:07:51 - [Commands] Sending to C-9 (version=GC_V3 command=17 flag=00) +I 91446 2023-12-31 21:05:22 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 42 FC 70 42 A3 A4 8D 42 | ` 7 B pB B +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:05:22 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 2F 32 88 42 37 B4 90 42 | ` 7 /2 B7 B +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:05:23 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 BA E6 75 42 98 AC 99 42 | ` 7 uB B +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:05:23 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 D5 AD 5A 42 74 D4 A0 42 | ` 7 ZBt B +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:05:23 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F2 B6 3B 42 E9 DE A4 42 | ` 9 ;B B +I 91446 2023-12-31 21:05:23 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BF F4 1D 42 3E 68 A6 42 | ` 9 B>h B +I 91446 2023-12-31 21:05:23 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 9A 0D 00 42 42 A7 A5 42 | ` 9 BB B +I 91446 2023-12-31 21:05:24 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 3C 4C C5 41 AB D0 A2 42 | ` 9 @ W B +I 91446 2023-12-31 21:05:24 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 1A 24 90 C0 CB 0A A6 42 | ` 9 $ B +I 91446 2023-12-31 21:05:24 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DC 8E 3F C1 35 E6 A4 42 | ` 9 ? 5 B +I 91446 2023-12-31 21:05:25 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 6A 89 9A C1 38 F4 A1 42 | ` 9 j 8 B +I 91446 2023-12-31 21:05:25 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 7C C4 CF C1 D3 8E A9 42 | ` 9 | B +I 91446 2023-12-31 21:05:25 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 1C 55 04 C2 E9 2A AE 42 | ` 9 U * B +I 91446 2023-12-31 21:05:25 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E3 FF 20 C2 3A 92 B2 42 | ` 9 : B +I 91446 2023-12-31 21:05:25 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B5 A9 39 C2 26 83 A9 42 | ` 9 9 & B +I 91446 2023-12-31 21:05:25 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 90 ED 50 C2 2C AF A0 42 | ` 9 P , B +I 91446 2023-12-31 21:05:26 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 C0 80 64 C2 AD 5B 95 42 | ` 9 d [ B +I 91446 2023-12-31 21:05:26 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 06 9D 0F 00 01 00 | ` 6 +0010 | 9A 78 63 C2 00 00 00 00 6A 3E 96 42 | xc j> B +I 91446 2023-12-31 21:05:38 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 A0 40 4B C2 3C C9 8B 42 | ` 7 @K < B +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:05:38 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 CD 1B 31 C2 E0 5A 83 42 | ` 7 1 Z B +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:05:38 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 B8 9A 23 C2 B4 B0 69 42 | ` 7 # iB +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:05:39 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 3D C6 42 C2 FE F3 6F 42 | ` 7 = B oB +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:05:39 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A9 70 60 C2 10 77 77 42 | ` 9 p` wwB +I 91446 2023-12-31 21:05:39 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 34 75 7B C2 08 4D 82 42 | ` 9 4u{ M B +I 91446 2023-12-31 21:05:39 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 02 46 8A C2 E5 7B 8A 42 | ` 9 F { B +I 91446 2023-12-31 21:05:39 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 C3 7D 99 C2 0F AB 88 42 | ` 9 } B +I 91446 2023-12-31 21:05:40 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B2 63 A8 C2 CF 22 8A 42 | ` 9 c " B +I 91446 2023-12-31 21:05:40 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B3 44 B7 C2 90 FA 8B 42 | ` 9 D B +I 91446 2023-12-31 21:05:40 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DB CB BE C2 73 4A 99 42 | ` 9 sJ B +I 91446 2023-12-31 21:05:40 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 4B B6 C5 C2 33 25 A6 42 | ` 9 K 3% B +I 91446 2023-12-31 21:05:40 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 FB DC C9 C2 91 86 B4 42 | ` 9 B +I 91446 2023-12-31 21:05:40 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E0 28 C0 C2 D7 4B C0 42 | ` 9 ( K B +I 91446 2023-12-31 21:05:41 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 19 F6 B1 C2 9D 31 C0 42 | ` 9 1 B +I 91446 2023-12-31 21:05:41 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 D0 3D 0F 00 01 00 | ` 6 = +0010 | C5 4D B3 C2 00 00 00 00 5B 7F C1 42 | M [ B +I 91446 2023-12-31 21:05:43 - [C-3] Created +I 91446 2023-12-31 21:05:43 - [Server] Client connected: C-3 on fd 46 via 6 (T-9000-DC_NTE-gc-jp10-login_server) +I 91446 2023-12-31 21:05:43 - [Commands] Sending to C-3 (version=DC_NTE command=17 flag=00) 0000 | 17 00 00 01 44 72 65 61 6D 43 61 73 74 20 50 6F | DreamCast Po 0010 | 72 74 20 4D 61 70 2E 20 43 6F 70 79 72 69 67 68 | rt Map. Copyrigh 0020 | 74 20 53 45 47 41 20 45 6E 74 65 72 70 72 69 73 | t SEGA Enterpris 0030 | 65 73 2E 20 31 39 39 39 00 00 00 00 00 00 00 00 | es. 1999 -0040 | 00 00 00 00 3F 5E 70 37 10 17 F5 6C 54 68 69 73 | ?^p7 lThis +0040 | 00 00 00 00 64 1E 15 5B BB D6 71 54 54 68 69 73 | d [ qTThis 0050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no 0060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, 0070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s @@ -571,15 +455,16 @@ I 25793 2023-11-24 23:07:51 - [Commands] Sending to C-9 (version=GC_V3 command=1 00D0 | 72 65 6D 61 69 6E 20 63 6F 6D 70 61 74 69 62 6C | remain compatibl 00E0 | 65 20 77 69 74 68 20 70 72 6F 67 72 61 6D 73 20 | e with programs 00F0 | 74 68 61 74 20 65 78 70 65 63 74 20 69 74 2E 00 | that expect it. -I 25793 2023-11-24 23:07:51 - [Commands] Received from C-9 (version=GC_V3 command=88 flag=00) -0000 | 88 00 26 00 35 35 35 35 35 35 35 35 00 00 00 00 | & 55555555 -0010 | 00 00 00 00 00 38 38 38 38 38 38 38 38 00 00 00 | 88888888 +I 91446 2023-12-31 21:05:43 - [Commands] Received from C-3 (version=DC_NTE command=88 flag=00) +0000 | 88 00 26 00 39 39 39 39 39 39 39 39 00 00 00 00 | & 99999999 +0010 | 00 00 00 00 00 39 39 39 39 39 39 39 39 00 00 00 | 99999999 0020 | 00 00 00 00 00 00 | -I 25793 2023-11-24 23:07:51 - [C-9] Game version changed to DC_NTE -I 25793 2023-11-24 23:07:51 - [Commands] Sending to C-9 (version=DC_NTE command=88 flag=00) +I 91446 2023-12-31 21:05:43 - [C-3] Game version changed to DC_NTE +I 91446 2023-12-31 21:05:43 - [C-3] Created license [License: serial_number=2576980377/99999999, access_key=99999999, flags=00000000] +I 91446 2023-12-31 21:05:43 - [Commands] Sending to C-3 (version=DC_NTE command=88 flag=00) 0000 | 88 00 04 00 | -I 25793 2023-11-24 23:07:51 - [Commands] Received from C-9 (version=DC_NTE command=8A flag=00) -0000 | 8A 00 A4 00 00 00 13 2B 64 B2 2C B2 20 00 00 00 | +d , +I 91446 2023-12-31 21:05:43 - [Commands] Received from C-3 (version=DC_NTE command=8A flag=00) +0000 | 8A 00 A4 00 00 00 B7 57 02 41 B9 22 20 00 00 00 | W A " 0010 | 00 00 00 00 66 6C 79 63 61 73 74 31 00 00 00 00 | flycast1 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | @@ -590,21 +475,107 @@ I 25793 2023-11-24 23:07:51 - [Commands] Received from C-9 (version=DC_NTE comma 0080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00A0 | 00 00 00 00 | -I 25793 2023-11-24 23:07:51 - [C-9] Game version changed to DC_V1 -I 25793 2023-11-24 23:07:51 - [Commands] Sending to C-9 (version=DC_V1 command=8A flag=01) +I 91446 2023-12-31 21:05:43 - [C-3] Game version changed to DC_V1 +I 91446 2023-12-31 21:05:43 - [Commands] Sending to C-3 (version=DC_V1 command=8A flag=01) 0000 | 8A 01 04 00 | -I 25793 2023-11-24 23:07:51 - [Commands] Received from C-9 (version=DC_V1 command=8B flag=00) -0000 | 8B 00 14 01 00 00 01 00 55 55 55 55 00 00 13 2B | UUUU + -0010 | 64 B2 2C B2 20 00 00 00 00 00 00 00 35 35 35 35 | d , 5555 -0020 | 35 35 35 35 00 00 00 00 00 00 00 00 00 38 38 38 | 5555 888 -0030 | 38 38 38 38 38 00 00 00 00 00 00 00 00 00 66 6C | 88888 fl +I 91446 2023-12-31 21:05:43 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=84 flag=00) +0000 | 84 00 0C 00 33 00 00 33 05 00 00 00 | 3 3 +I 91446 2023-12-31 21:05:43 - [C-2] Assigned inventory item IDs +[PlayerInventory] Meseta: 65886 +[PlayerInventory] 10 items +[PlayerInventory] 0: [+00000004] 00060000 00000000 00000000 (10010000) 00000000 (Handgun) +[PlayerInventory] 1: [+00000004] 01010000 00000000 00000000 (10010001) 00000000 (Frame) +[PlayerInventory] 2: [+0000000C] 02000500 F8011E00 04000000 (10010002) 2A020005 (Mag LV5 5.04/0.3/0.04/0 42% 2IQ (black)) +[PlayerInventory] 3: [+00000010] 03000000 00040000 00000000 (10010003) 00000000 (Monomate x4) +[PlayerInventory] 4: [+0000000C] 01020000 00000000 00000000 (10010004) 00000000 (Barrier) +[PlayerInventory] 5: [+0000000C] 01010000 00000000 00000000 (10010005) 00002800 (Frame) +[PlayerInventory] 6: [+00000004] 02000500 F4010000 00000000 (10010006) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] 7: [+0000000C] 00010000 00000000 00000000 (10010007) 00000000 (Saber) +[PlayerInventory] 8: [+00000004] 00060001 00000000 00000000 (10010008) 00000000 (Handgun +1) +[PlayerInventory] 9: [+00000010] 03020000 03010000 00000000 (10010009) 00000000 (Disk:Barta Lv.1) +I 91446 2023-12-31 21:05:43 - [C-2] Bank is empty +I 91446 2023-12-31 21:05:43 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=67 flag=01) +0000 | 67 01 44 04 00 00 01 00 00 00 01 00 55 55 55 55 | g D UUUU +0010 | 7F 00 00 01 00 00 00 00 41 42 43 44 45 46 47 48 | ABCDEFGH +0020 | 49 4A 4B 4C 00 00 00 00 0A 00 00 00 01 00 00 00 | IJKL +0030 | 04 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 | +0040 | 00 00 01 10 00 00 00 00 01 00 00 00 04 00 00 00 | +0050 | 01 01 00 00 00 00 00 00 00 00 00 00 01 00 01 10 | +0060 | 00 00 00 00 02 00 00 00 0C 00 00 00 02 00 05 00 | +0070 | F9 01 1E 00 05 00 00 00 02 00 01 10 02 00 2A 00 | * +0080 | 01 00 00 00 10 00 00 00 03 00 00 00 00 04 00 00 | +0090 | 00 00 00 00 03 00 01 10 00 00 00 00 02 00 00 00 | +00A0 | 0C 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 | +00B0 | 04 00 01 10 00 00 00 00 02 00 00 00 0C 00 00 00 | +00C0 | 01 01 00 00 00 00 00 00 00 00 00 00 05 00 01 10 | +00D0 | 00 00 28 00 01 00 00 00 04 00 00 00 02 00 05 00 | ( +00E0 | F4 01 00 00 00 00 00 00 06 00 01 10 00 00 28 00 | ( +00F0 | 02 00 00 00 0C 00 00 00 00 01 00 00 00 00 00 00 | +0100 | 00 00 00 00 07 00 01 10 00 00 00 00 01 00 00 00 | +0110 | 04 00 00 00 00 06 00 01 00 00 00 00 00 00 00 00 | +0120 | 08 00 01 10 00 00 00 00 01 00 00 00 10 00 00 00 | +0130 | 03 02 00 00 03 01 00 00 00 00 00 00 09 00 01 10 | +0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0370 | 00 00 00 00 14 00 00 00 23 00 14 00 0A 00 46 00 | # F +0380 | 14 00 00 00 E0 67 99 41 00 00 20 41 00 00 00 00 | g A A +0390 | 06 00 00 00 5E 01 01 00 41 42 43 44 45 46 47 48 | ^ ABCDEFGH +03A0 | 49 4A 4B 4C 00 00 00 00 00 00 00 00 00 00 00 00 | IJKL +03B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +03C0 | 00 00 00 00 59 77 59 77 06 04 00 00 51 00 00 00 | YwYw Q +03D0 | 00 00 01 00 00 00 00 00 00 00 1F 00 3F 00 B3 00 | ? +03E0 | 00 C0 D5 3E 00 82 E9 3E 00 00 00 00 01 02 00 00 | > > +03F0 | 02 00 01 00 02 01 01 00 04 00 01 00 01 00 00 00 | +0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0430 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | +0440 | FF FF FF 00 | +I 91446 2023-12-31 21:05:43 - [Commands] Received from C-3 (version=DC_V1 command=8B flag=00) +0000 | 8B 00 14 01 00 00 FF FF FF FF 00 00 00 00 B7 57 | W +0010 | 02 41 B9 22 20 00 00 00 00 00 00 00 39 39 39 39 | A " 9999 +0020 | 39 39 39 39 00 00 00 00 00 00 00 00 00 39 39 39 | 9999 999 +0030 | 39 39 39 39 39 00 00 00 00 00 00 00 00 00 66 6C | 99999 fl 0040 | 79 63 61 73 74 31 00 00 00 00 00 00 00 00 00 00 | ycast1 0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70 61 | pa 0070 | 73 73 77 6F 72 64 00 00 00 00 00 00 00 00 00 00 | ssword 0080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 42 | AB -00A0 | 43 44 45 46 47 48 49 4A 4B 4C 00 00 00 00 00 00 | CDEFGHIJKL +0090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 42 | BB +00A0 | 42 42 42 42 42 42 42 42 42 42 00 00 00 00 00 00 | BBBBBBBBBB 00B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | @@ -612,30 +583,40 @@ I 25793 2023-11-24 23:07:51 - [Commands] Received from C-9 (version=DC_V1 comman 00F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0110 | 00 00 00 00 | -I 25793 2023-11-24 23:07:51 - [C-9] Game version changed to DC_NTE -I 25793 2023-11-24 23:07:51 - [Commands] Sending to C-9 (version=DC_NTE command=04 flag=00) -0000 | 04 00 0C 00 00 00 01 00 55 55 55 55 | UUUU -I 25793 2023-11-24 23:07:51 - [Commands] Sending to C-9 (version=DC_NTE command=07 flag=02) +I 91446 2023-12-31 21:05:43 - [C-3] Game version changed to DC_NTE +I 91446 2023-12-31 21:05:43 - [Commands] Sending to C-3 (version=DC_NTE command=04 flag=00) +0000 | 04 00 0C 00 00 00 01 00 99 99 99 99 | +I 91446 2023-12-31 21:05:43 - [C-3] Client is a prototype version and the license was created during this session; converting permanent license to temporary license +I 91446 2023-12-31 21:05:43 - [Commands] Sending to C-3 (version=DC_NTE command=07 flag=02) 0000 | 07 02 58 00 11 00 00 11 FF FF FF FF 04 00 41 6C | X Al 0010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 00 | exandria 0020 | 11 00 00 11 11 22 22 11 04 0F 47 6F 20 74 6F 20 | "" Go to 0030 | 6C 6F 62 62 79 00 00 00 00 00 00 00 11 00 00 11 | lobby 0040 | 11 88 88 11 04 0F 44 69 73 63 6F 6E 6E 65 63 74 | Disconnect 0050 | 00 00 00 00 00 00 00 00 | -I 25793 2023-11-24 23:07:53 - [Commands] Received from C-9 (version=DC_NTE command=10 flag=00) +I 91446 2023-12-31 21:05:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1E 01 00 00 | ` +I 91446 2023-12-31 21:05:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 00 40 0F 00 01 00 | ` 6 @ +0010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > +I 91446 2023-12-31 21:05:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 00 00 | ` +I 91446 2023-12-31 21:05:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1F 01 00 00 | ` +I 91446 2023-12-31 21:05:45 - [Commands] Received from C-3 (version=DC_NTE command=10 flag=00) 0000 | 10 00 0C 00 11 00 00 11 11 22 22 11 | "" -I 25793 2023-11-24 23:07:53 - [Commands] Sending to C-9 (version=DC_NTE command=19 flag=00) +I 91446 2023-12-31 21:05:45 - [Commands] Sending to C-3 (version=DC_NTE command=19 flag=00) 0000 | 19 00 0C 00 AC 10 00 0A F6 13 00 00 | -I 25793 2023-11-24 23:07:53 - [Server] Client disconnected: C-9 on fd 44 -I 25793 2023-11-24 23:07:53 - [C-9] Deleted -I 25793 2023-11-24 23:07:53 - [C-A] Created -I 25793 2023-11-24 23:07:53 - [Server] Client connected: C-A on fd 44 via 10 (T-5110-DC_NTE-console-lobby-lobby_server) -I 25793 2023-11-24 23:07:53 - [Commands] Sending to C-A (version=GC_V3 command=02 flag=00) +I 91446 2023-12-31 21:05:45 - [Server] Client disconnected: C-3 on fd 46 +I 91446 2023-12-31 21:05:45 - [C-3] Deleted +I 91446 2023-12-31 21:05:45 - [C-4] Created +I 91446 2023-12-31 21:05:45 - [Server] Client connected: C-4 on fd 46 via 10 (T-5110-DC_NTE-console-lobby-lobby_server) +I 91446 2023-12-31 21:05:45 - [Commands] Sending to C-4 (version=DC_NTE command=02 flag=00) 0000 | 02 00 00 01 44 72 65 61 6D 43 61 73 74 20 4C 6F | DreamCast Lo 0010 | 62 62 79 20 53 65 72 76 65 72 2E 20 43 6F 70 79 | bby Server. Copy 0020 | 72 69 67 68 74 20 53 45 47 41 20 45 6E 74 65 72 | right SEGA Enter 0030 | 70 72 69 73 65 73 2E 20 31 39 39 39 00 00 00 00 | prises. 1999 -0040 | 00 00 00 00 62 9C BC 8B 47 AC 8D 3D 54 68 69 73 | b G =This +0040 | 00 00 00 00 CC 60 AC 4B A8 F0 75 4E 54 68 69 73 | ` K uNThis 0050 | 20 73 65 72 76 65 72 20 69 73 20 69 6E 20 6E 6F | server is in no 0060 | 20 77 61 79 20 61 66 66 69 6C 69 61 74 65 64 2C | way affiliated, 0070 | 20 73 70 6F 6E 73 6F 72 65 64 2C 20 6F 72 20 73 | sponsored, or s @@ -647,22 +628,24 @@ I 25793 2023-11-24 23:07:53 - [Commands] Sending to C-A (version=GC_V3 command=0 00D0 | 72 65 6D 61 69 6E 20 63 6F 6D 70 61 74 69 62 6C | remain compatibl 00E0 | 65 20 77 69 74 68 20 70 72 6F 67 72 61 6D 73 20 | e with programs 00F0 | 74 68 61 74 20 65 78 70 65 63 74 20 69 74 2E 00 | that expect it. -I 25793 2023-11-24 23:07:53 - [Commands] Received from C-A (version=GC_V3 command=8B flag=00) -0000 | 8B 00 B0 00 00 00 01 00 55 55 55 55 00 00 13 2B | UUUU + -0010 | 64 B2 2C B2 20 00 00 00 00 00 00 00 35 35 35 35 | d , 5555 -0020 | 35 35 35 35 00 00 00 00 00 00 00 00 00 38 38 38 | 5555 888 -0030 | 38 38 38 38 38 00 00 00 00 00 00 00 00 00 66 6C | 88888 fl +I 91446 2023-12-31 21:05:45 - [Commands] Received from C-4 (version=DC_NTE command=8B flag=00) +0000 | 8B 00 B0 00 00 00 01 00 99 99 99 99 00 00 B7 57 | W +0010 | 02 41 B9 22 20 00 00 00 00 00 00 00 39 39 39 39 | A " 9999 +0020 | 39 39 39 39 00 00 00 00 00 00 00 00 00 39 39 39 | 9999 999 +0030 | 39 39 39 39 39 00 00 00 00 00 00 00 00 00 66 6C | 99999 fl 0040 | 79 63 61 73 74 31 00 00 00 00 00 00 00 00 00 00 | ycast1 0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70 61 | pa 0070 | 73 73 77 6F 72 64 00 00 00 00 00 00 00 00 00 00 | ssword 0080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 42 | AB -00A0 | 43 44 45 46 47 48 49 4A 4B 4C 00 00 00 00 00 00 | CDEFGHIJKL -I 25793 2023-11-24 23:07:53 - [C-A] Game version changed to DC_NTE -I 25793 2023-11-24 23:07:53 - [Commands] Sending to C-A (version=DC_NTE command=04 flag=00) -0000 | 04 00 0C 00 00 00 01 00 55 55 55 55 | UUUU -I 25793 2023-11-24 23:07:53 - [Commands] Sending to C-A (version=DC_NTE command=83 flag=0A) +0090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 42 | BB +00A0 | 42 42 42 42 42 42 42 42 42 42 00 00 00 00 00 00 | BBBBBBBBBB +I 91446 2023-12-31 21:05:45 - [C-4] Game version changed to DC_NTE +I 91446 2023-12-31 21:05:45 - [C-4] Created license [License: serial_number=2576980377/99999999, access_key=99999999, flags=00000000] +I 91446 2023-12-31 21:05:45 - [Commands] Sending to C-4 (version=DC_NTE command=04 flag=00) +0000 | 04 00 0C 00 00 00 01 00 99 99 99 99 | +I 91446 2023-12-31 21:05:45 - [C-4] Client is a prototype version and the license was created during this session; converting permanent license to temporary license +I 91446 2023-12-31 21:05:45 - [Commands] Sending to C-4 (version=DC_NTE command=83 flag=0A) 0000 | 83 0A 7C 00 33 00 00 33 01 00 00 00 00 00 00 00 | | 3 3 0010 | 33 00 00 33 02 00 00 00 00 00 00 00 33 00 00 33 | 3 3 3 3 0020 | 03 00 00 00 00 00 00 00 33 00 00 33 04 00 00 00 | 3 3 @@ -671,18 +654,18 @@ I 25793 2023-11-24 23:07:53 - [Commands] Sending to C-A (version=DC_NTE command= 0050 | 07 00 00 00 00 00 00 00 33 00 00 33 08 00 00 00 | 3 3 0060 | 00 00 00 00 33 00 00 33 09 00 00 00 00 00 00 00 | 3 3 0070 | 33 00 00 33 0A 00 00 00 00 00 00 00 | 3 3 -I 25793 2023-11-24 23:07:53 - [Commands] Sending to C-A (version=DC_NTE command=8D flag=00) +I 91446 2023-12-31 21:05:45 - [Commands] Sending to C-4 (version=DC_NTE command=8D flag=00) 0000 | 8D 00 04 00 | -I 25793 2023-11-24 23:07:53 - [Commands] Received from C-A (version=DC_NTE command=61 flag=01) -0000 | 61 01 20 04 05 00 00 00 02 00 00 00 0C 00 00 00 | a -0010 | 00 06 00 00 00 00 00 00 00 00 00 00 00 00 01 00 | -0020 | 00 00 00 00 02 00 00 00 0C 00 00 00 01 01 00 00 | -0030 | 00 00 00 00 00 00 00 00 01 00 01 00 00 00 00 00 | -0040 | 02 00 00 00 0C 00 00 00 02 00 05 00 F4 01 00 00 | -0050 | 00 00 00 00 02 00 01 00 00 00 28 00 01 00 00 00 | ( -0060 | 10 00 00 00 03 00 00 00 00 01 00 00 00 00 00 00 | -0070 | 03 00 01 00 00 00 00 00 01 00 00 00 10 00 00 00 | -0080 | 03 01 00 00 00 01 00 00 00 00 00 00 04 00 01 00 | +I 91446 2023-12-31 21:05:45 - [Commands] Received from C-4 (version=DC_NTE command=61 flag=01) +0000 | 61 01 20 04 04 00 00 00 01 00 00 00 10 00 00 00 | a +0010 | 03 00 00 00 00 02 00 00 00 00 00 00 03 00 01 00 | +0020 | 00 00 00 00 02 00 00 00 0C 00 00 00 00 02 00 02 | +0030 | 00 00 00 00 00 00 00 00 05 00 01 00 00 00 00 00 | +0040 | 01 00 00 00 04 00 00 00 01 01 00 00 00 00 00 00 | +0050 | 00 00 00 00 04 00 01 00 00 00 28 00 01 00 00 00 | ( +0060 | 04 00 00 00 01 02 01 00 00 00 00 00 00 00 00 00 | +0070 | 07 00 21 00 00 00 00 00 01 00 00 00 10 00 00 00 | ! +0080 | 03 01 00 00 00 01 00 00 00 00 00 00 04 00 21 00 | ! 0090 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | @@ -727,32 +710,40 @@ I 25793 2023-11-24 23:07:53 - [Commands] Received from C-A (version=DC_NTE comma 0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0350 | 14 00 00 00 23 00 14 00 0A 00 46 00 14 00 00 00 | # F -0360 | E0 67 99 41 00 00 20 41 00 00 00 00 00 00 00 00 | g A A -0370 | 64 00 00 00 41 42 43 44 45 46 47 48 49 4A 4B 4C | d ABCDEFGHIJKL +0350 | 2D 00 00 00 23 00 14 00 0A 00 23 00 14 00 00 00 | - # # +0360 | BC E0 94 41 00 00 20 41 00 00 00 00 00 00 00 00 | A A +0370 | 3E 82 01 00 42 42 42 42 42 42 42 42 42 42 42 42 | > BBBBBBBBBBBB 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0390 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -03A0 | F3 2E F3 2E 06 04 00 00 51 00 00 00 00 00 01 00 | . . Q -03B0 | 00 00 00 00 00 00 1F 00 3F 00 B3 00 00 C0 D5 3E | ? > -03C0 | 00 82 E9 3E 00 00 00 00 01 00 00 00 02 00 01 00 | > +03A0 | 00 00 00 00 02 02 00 00 31 00 00 00 00 00 00 00 | 1 +03B0 | 00 00 00 00 00 00 00 00 12 00 17 00 56 62 1E 3F | Vb ? +03C0 | 00 67 53 3F 00 00 00 00 01 00 00 00 02 00 01 00 | gS? 03D0 | 02 01 01 00 04 00 01 00 01 00 00 00 00 00 00 00 | 03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 03F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | 0410 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 | -I 25793 2023-11-24 23:07:53 - [Commands] Sending to C-A (ABCDEFGHIJKL) (version=DC_NTE command=67 flag=01) -0000 | 67 01 44 04 00 00 01 00 00 00 01 00 55 55 55 55 | g D UUUU -0010 | 7F 00 00 01 00 00 00 00 41 42 43 44 45 46 47 48 | ABCDEFGH -0020 | 49 4A 4B 4C 00 00 00 00 05 00 00 00 02 00 00 00 | IJKL -0030 | 0C 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 | +I 91446 2023-12-31 21:05:45 - [C-4] Assigned inventory item IDs +[PlayerInventory] Meseta: 98878 +[PlayerInventory] 4 items +[PlayerInventory] 0: [+00000010] 03000000 00020000 00000000 (10010000) 00000000 (Monomate x2) +[PlayerInventory] 1: [+0000000C] 00020002 00000000 00000000 (10010001) 00000000 (Sword +2) +[PlayerInventory] 2: [+00000004] 01010000 00000000 00000000 (10010002) 00002800 (Frame) +[PlayerInventory] 3: [+00000004] 01020100 00000000 00000000 (10010003) 00000000 (Shield) +I 91446 2023-12-31 21:05:45 - [C-4] Bank is empty +I 91446 2023-12-31 21:05:45 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=67 flag=01) +0000 | 67 01 44 04 00 00 01 00 00 00 01 00 99 99 99 99 | g D +0010 | 7F 00 00 01 00 00 00 00 42 42 42 42 42 42 42 42 | BBBBBBBB +0020 | 42 42 42 42 00 00 00 00 04 00 00 00 01 00 00 00 | BBBB +0030 | 10 00 00 00 03 00 00 00 00 02 00 00 00 00 00 00 | 0040 | 00 00 01 10 00 00 00 00 02 00 00 00 0C 00 00 00 | -0050 | 01 01 00 00 00 00 00 00 00 00 00 00 01 00 01 10 | -0060 | 00 00 00 00 02 00 00 00 0C 00 00 00 02 00 05 00 | -0070 | F4 01 00 00 00 00 00 00 02 00 01 10 00 00 28 00 | ( -0080 | 01 00 00 00 10 00 00 00 03 00 00 00 00 01 00 00 | +0050 | 00 02 00 02 00 00 00 00 00 00 00 00 01 00 01 10 | +0060 | 00 00 00 00 01 00 00 00 04 00 00 00 01 01 00 00 | +0070 | 00 00 00 00 00 00 00 00 02 00 01 10 00 00 28 00 | ( +0080 | 01 00 00 00 04 00 00 00 01 02 01 00 00 00 00 00 | 0090 | 00 00 00 00 03 00 01 10 00 00 00 00 01 00 00 00 | 00A0 | 10 00 00 00 03 01 00 00 00 01 00 00 00 00 00 00 | -00B0 | 04 00 01 10 00 00 00 00 00 00 00 00 00 00 00 00 | +00B0 | 04 00 21 00 00 00 00 00 00 00 00 00 00 00 00 00 | ! 00C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | @@ -796,80 +787,422 @@ I 25793 2023-11-24 23:07:53 - [Commands] Sending to C-A (ABCDEFGHIJKL) (version= 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0370 | 00 00 00 00 14 00 00 00 23 00 14 00 0A 00 46 00 | # F -0380 | 14 00 00 00 E0 67 99 41 00 00 20 41 00 00 00 00 | g A A -0390 | 00 00 00 00 64 00 00 00 41 42 43 44 45 46 47 48 | d ABCDEFGH -03A0 | 49 4A 4B 4C 00 00 00 00 00 00 00 00 00 00 00 00 | IJKL +0370 | 00 00 00 00 2D 00 00 00 23 00 14 00 0A 00 23 00 | - # # +0380 | 14 00 00 00 BC E0 94 41 00 00 20 41 00 00 00 00 | A A +0390 | 00 00 00 00 3E 82 01 00 42 42 42 42 42 42 42 42 | > BBBBBBBB +03A0 | 42 42 42 42 00 00 00 00 00 00 00 00 00 00 00 00 | BBBB 03B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -03C0 | 00 00 00 00 CF 41 CF 41 06 04 00 00 51 00 00 00 | A A Q -03D0 | 00 00 01 00 00 00 00 00 00 00 1F 00 3F 00 B3 00 | ? -03E0 | 00 C0 D5 3E 00 82 E9 3E 00 00 00 00 01 00 00 00 | > > +03C0 | 00 00 00 00 00 00 00 00 02 02 00 00 31 00 00 00 | 1 +03D0 | 00 00 00 00 00 00 00 00 00 00 00 00 12 00 17 00 | +03E0 | 56 62 1E 3F 00 67 53 3F 00 00 00 00 01 00 00 00 | Vb ? gS? 03F0 | 02 00 01 00 02 01 01 00 04 00 01 00 01 00 00 00 | 0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0430 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | 0440 | FF FF FF 00 | -I 25793 2023-11-24 23:07:54 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:05:46 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) 0000 | 60 00 1C 00 36 06 00 00 00 00 00 00 0F 00 FF FF | ` 6 0010 | 00 00 C8 C3 00 00 98 42 00 80 04 C4 | B -I 25793 2023-11-24 23:07:55 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:05:46 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1B 01 00 00 | ` -I 25793 2023-11-24 23:07:55 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:05:46 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) 0000 | 60 00 1C 00 36 06 00 00 00 00 00 40 0F 00 FF FF | ` 6 @ 0010 | A6 31 62 C2 00 00 00 00 A0 4C 89 3E | 1b L > -I 25793 2023-11-24 23:07:55 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:05:46 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1B 01 00 00 | ` -I 25793 2023-11-24 23:07:55 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:05:46 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1F 01 00 00 | ` -I 25793 2023-11-24 23:07:55 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:05:46 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) 0000 | 60 00 10 00 2A 03 00 00 FE FF FF FF 00 00 00 00 | ` * -I 25793 2023-11-24 23:07:55 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 A6 31 42 C2 A0 4C 89 3E | ` 7 1B L > +I 91446 2023-12-31 21:05:52 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 18 00 62 05 00 00 02 00 01 00 4F 00 AF 01 | ` b O +0010 | FF FF FF FF FF FF FF FF | +I 91446 2023-12-31 21:05:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 A6 31 62 C2 65 4A 04 41 | ` 7 1b eJ A 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:55 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 A6 31 22 C2 A0 4C 89 3E | ` 7 1" L > +I 91446 2023-12-31 21:05:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 06 84 66 C2 EA 85 7F 41 | ` 7 f A 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:56 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 A6 31 02 C2 A0 4C 89 3E | ` 7 1 L > +I 91446 2023-12-31 21:05:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 3B 60 59 C2 97 22 BA 41 | ` 7 ;`Y " A 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:07:56 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 00 40 0F 00 01 00 | ` 6 @ -0010 | A6 31 06 C2 00 00 00 00 A0 4C 89 3E | 1 L > -I 25793 2023-11-24 23:07:56 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 46 03 00 00 0A 00 00 00 00 40 00 00 | ` F @ -I 25793 2023-11-24 23:07:59 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=08 flag=00) -0000 | 08 00 04 00 | -I 25793 2023-11-24 23:07:59 - [Commands] Sending to C-A (ABCDEFGHIJKL) (version=DC_NTE command=08 flag=00) -0000 | 08 00 20 00 44 00 00 44 00 00 00 00 00 00 41 6C | D D Al -0010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 04 | exandria -I 25793 2023-11-24 23:08:00 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 46 03 00 00 0A 00 00 00 00 40 00 00 | ` F @ -I 25793 2023-11-24 23:08:00 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 00 40 0F 00 01 00 | ` 6 @ -0010 | A6 31 06 C2 00 00 00 00 A0 4C 89 3E | 1 L > -I 25793 2023-11-24 23:08:00 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 46 03 00 00 0A 00 00 00 00 40 00 00 | ` F @ -I 25793 2023-11-24 23:08:15 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=0C flag=03) -0000 | 0C 03 2C 00 00 00 00 00 00 00 00 00 40 40 40 00 | , @@@ -0010 | 00 00 00 00 00 00 00 00 00 00 00 00 41 41 41 41 | AAAA -0020 | 41 00 00 00 00 00 00 00 00 00 00 00 | A -I 25793 2023-11-24 23:08:15 - [Lobby:15] Created lobby -I 25793 2023-11-24 23:08:15 - [C-A] Assigned item IDs -[PlayerInventory] Meseta: 100 -[PlayerInventory] 5 items -[PlayerInventory] 0: [+0000000C] 00060000 00000000 00000000 (00010000) 00000000 (Handgun) -[PlayerInventory] 1: [+0000000C] 01010000 00000000 00000000 (00010001) 00000000 (Frame) -[PlayerInventory] 2: [+0000000C] 02000500 F4010000 00000000 (00010002) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) -[PlayerInventory] 3: [+00000010] 03000000 00010000 00000000 (00010003) 00000000 (Monomate x1) -[PlayerInventory] 4: [+00000010] 03010000 00010000 00000000 (00010004) 00000000 (Monofluid x1) -I 25793 2023-11-24 23:08:15 - [Commands] Sending to C-A (ABCDEFGHIJKL) (version=DC_NTE command=64 flag=01) +I 91446 2023-12-31 21:05:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 A6 95 51 C2 6B D7 F7 41 | ` 7 Q k A +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:05:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 50 E1 65 C2 64 74 14 42 | ` 9 P e dt B +I 91446 2023-12-31 21:05:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D1 66 7A C2 6D 16 29 42 | ` 9 fz m )B +I 91446 2023-12-31 21:05:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 CE E0 89 C2 E8 F6 38 42 | ` 9 8B +I 91446 2023-12-31 21:05:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 13 C8 8E C2 78 06 56 42 | ` 9 x VB +I 91446 2023-12-31 21:05:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 1E A4 96 C2 A2 88 6F 42 | ` 9 oB +I 91446 2023-12-31 21:05:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 29 E4 9E C2 7B 48 84 42 | ` 9 ) {H B +I 91446 2023-12-31 21:05:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 4C 66 A8 C2 D4 DE 8F 42 | ` 9 Lf B +I 91446 2023-12-31 21:05:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 86 1A B3 C2 39 5C 9A 42 | ` 9 9\ B +I 91446 2023-12-31 21:05:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 8B E9 BE C2 4B 96 A3 42 | ` 9 K B +I 91446 2023-12-31 21:05:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 71 E5 C1 C2 F3 9B B2 42 | ` 9 q B +I 91446 2023-12-31 21:05:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F7 4C C7 C2 8A 85 C0 42 | ` 9 L B +I 91446 2023-12-31 21:05:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 86 F3 0F 00 01 00 | ` 6 +0010 | 52 F3 C6 C2 00 00 00 00 3D 95 BF 42 | R = B +I 91446 2023-12-31 21:05:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=84 flag=00) +0000 | 84 00 0C 00 33 00 00 33 01 00 00 00 | 3 3 +I 91446 2023-12-31 21:05:56 - [C-2] Assigned inventory item IDs +[PlayerInventory] Meseta: 65886 +[PlayerInventory] 10 items +[PlayerInventory] 0: [+00000004] 00060000 00000000 00000000 (10210000) 00000000 (Handgun) +[PlayerInventory] 1: [+00000004] 01010000 00000000 00000000 (10210001) 00000000 (Frame) +[PlayerInventory] 2: [+0000000C] 02000500 F8011E00 04000000 (10210002) 2A020005 (Mag LV5 5.04/0.3/0.04/0 42% 2IQ (black)) +[PlayerInventory] 3: [+00000010] 03000000 00040000 00000000 (10210003) 00000000 (Monomate x4) +[PlayerInventory] 4: [+0000000C] 01020000 00000000 00000000 (10210004) 00000000 (Barrier) +[PlayerInventory] 5: [+0000000C] 01010000 00000000 00000000 (10210005) 00002800 (Frame) +[PlayerInventory] 6: [+00000004] 02000500 F4010000 00000000 (10210006) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] 7: [+0000000C] 00010000 00000000 00000000 (10210007) 00000000 (Saber) +[PlayerInventory] 8: [+00000004] 00060001 00000000 00000000 (10210008) 00000000 (Handgun +1) +[PlayerInventory] 9: [+00000010] 03020000 03010000 00000000 (10210009) 00000000 (Disk:Barta Lv.1) +I 91446 2023-12-31 21:05:56 - [C-2] Bank is empty +I 91446 2023-12-31 21:05:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=68 flag=01) +0000 | 68 01 44 04 00 00 01 00 00 00 01 00 55 55 55 55 | h D UUUU +0010 | 7F 00 00 01 01 00 00 00 41 42 43 44 45 46 47 48 | ABCDEFGH +0020 | 49 4A 4B 4C 00 00 00 00 0A 00 00 00 01 00 00 00 | IJKL +0030 | 04 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 | +0040 | 00 00 21 10 00 00 00 00 01 00 00 00 04 00 00 00 | ! +0050 | 01 01 00 00 00 00 00 00 00 00 00 00 01 00 21 10 | ! +0060 | 00 00 00 00 02 00 00 00 0C 00 00 00 02 00 05 00 | +0070 | F9 01 1E 00 05 00 00 00 02 00 21 10 02 00 2A 00 | ! * +0080 | 01 00 00 00 10 00 00 00 03 00 00 00 00 04 00 00 | +0090 | 00 00 00 00 03 00 21 10 00 00 00 00 02 00 00 00 | ! +00A0 | 0C 00 00 00 01 02 00 00 00 00 00 00 00 00 00 00 | +00B0 | 04 00 21 10 00 00 00 00 02 00 00 00 0C 00 00 00 | ! +00C0 | 01 01 00 00 00 00 00 00 00 00 00 00 05 00 21 10 | ! +00D0 | 00 00 28 00 01 00 00 00 04 00 00 00 02 00 05 00 | ( +00E0 | F4 01 00 00 00 00 00 00 06 00 21 10 00 00 28 00 | ! ( +00F0 | 02 00 00 00 0C 00 00 00 00 01 00 00 00 00 00 00 | +0100 | 00 00 00 00 07 00 21 10 00 00 00 00 01 00 00 00 | ! +0110 | 04 00 00 00 00 06 00 01 00 00 00 00 00 00 00 00 | +0120 | 08 00 21 10 00 00 00 00 01 00 00 00 10 00 00 00 | ! +0130 | 03 02 00 00 03 01 00 00 00 00 00 00 09 00 21 10 | ! +0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0370 | 00 00 00 00 14 00 00 00 23 00 14 00 0A 00 46 00 | # F +0380 | 14 00 00 00 E0 67 99 41 00 00 20 41 00 00 00 00 | g A A +0390 | 06 00 00 00 5E 01 01 00 41 42 43 44 45 46 47 48 | ^ ABCDEFGH +03A0 | 49 4A 4B 4C 00 00 00 00 00 00 00 00 00 00 00 00 | IJKL +03B0 | FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 | +03C0 | 00 00 00 00 FE BE 81 41 06 04 00 00 51 00 00 00 | A Q +03D0 | 00 00 01 00 00 00 00 00 00 00 1F 00 3F 00 B3 00 | ? +03E0 | 00 C0 D5 3E 00 82 E9 3E 00 00 00 00 01 02 00 00 | > > +03F0 | 02 00 01 00 02 01 01 00 04 00 01 00 01 00 00 00 | +0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0430 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | +0440 | FF FF FF 00 | +I 91446 2023-12-31 21:05:56 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=67 flag=02) +0000 | 67 02 80 08 01 00 01 00 00 00 01 00 99 99 99 99 | g +0010 | 7F 00 00 01 00 00 00 00 42 42 42 42 42 42 42 42 | BBBBBBBB +0020 | 42 42 42 42 00 00 00 00 04 00 00 00 01 00 00 00 | BBBB +0030 | 10 00 00 00 03 00 00 00 00 02 00 00 00 00 00 00 | +0040 | 00 00 01 10 00 00 00 00 02 00 00 00 0C 00 00 00 | +0050 | 00 02 00 02 00 00 00 00 00 00 00 00 01 00 01 10 | +0060 | 00 00 00 00 01 00 00 00 04 00 00 00 01 01 00 00 | +0070 | 00 00 00 00 00 00 00 00 02 00 01 10 00 00 28 00 | ( +0080 | 01 00 00 00 04 00 00 00 01 02 01 00 00 00 00 00 | +0090 | 00 00 00 00 03 00 01 10 00 00 00 00 01 00 00 00 | +00A0 | 10 00 00 00 03 01 00 00 00 01 00 00 00 00 00 00 | +00B0 | 04 00 21 00 00 00 00 00 00 00 00 00 00 00 00 00 | ! +00C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0370 | 00 00 00 00 2D 00 00 00 23 00 14 00 0A 00 23 00 | - # # +0380 | 14 00 00 00 BC E0 94 41 00 00 20 41 00 00 00 00 | A A +0390 | 00 00 00 00 3E 82 01 00 42 42 42 42 42 42 42 42 | > BBBBBBBB +03A0 | 42 42 42 42 00 00 00 00 00 00 00 00 00 00 00 00 | BBBB +03B0 | FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 | +03C0 | 00 00 00 00 88 7F F7 80 02 02 00 00 31 00 00 00 | 1 +03D0 | 00 00 00 00 00 00 00 00 00 00 00 00 12 00 17 00 | +03E0 | 56 62 1E 3F 00 67 53 3F 00 00 00 00 01 00 00 00 | Vb ? gS? +03F0 | 02 00 01 00 02 01 01 00 04 00 01 00 01 00 00 00 | +0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0430 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | +0440 | FF FF FF 00 00 00 01 00 55 55 55 55 7F 00 00 01 | UUUU +0450 | 01 00 00 00 41 42 43 44 45 46 47 48 49 4A 4B 4C | ABCDEFGHIJKL +0460 | 00 00 00 00 0A 00 00 00 01 00 00 00 04 00 00 00 | +0470 | 00 06 00 00 00 00 00 00 00 00 00 00 00 00 21 10 | ! +0480 | 00 00 00 00 01 00 00 00 04 00 00 00 01 01 00 00 | +0490 | 00 00 00 00 00 00 00 00 01 00 21 10 00 00 00 00 | ! +04A0 | 02 00 00 00 0C 00 00 00 02 00 05 00 F9 01 1E 00 | +04B0 | 05 00 00 00 02 00 21 10 02 00 2A 00 01 00 00 00 | ! * +04C0 | 10 00 00 00 03 00 00 00 00 04 00 00 00 00 00 00 | +04D0 | 03 00 21 10 00 00 00 00 02 00 00 00 0C 00 00 00 | ! +04E0 | 01 02 00 00 00 00 00 00 00 00 00 00 04 00 21 10 | ! +04F0 | 00 00 00 00 02 00 00 00 0C 00 00 00 01 01 00 00 | +0500 | 00 00 00 00 00 00 00 00 05 00 21 10 00 00 28 00 | ! ( +0510 | 01 00 00 00 04 00 00 00 02 00 05 00 F4 01 00 00 | +0520 | 00 00 00 00 06 00 21 10 00 00 28 00 02 00 00 00 | ! ( +0530 | 0C 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | +0540 | 07 00 21 10 00 00 00 00 01 00 00 00 04 00 00 00 | ! +0550 | 00 06 00 01 00 00 00 00 00 00 00 00 08 00 21 10 | ! +0560 | 00 00 00 00 01 00 00 00 10 00 00 00 03 02 00 00 | +0570 | 03 01 00 00 00 00 00 00 09 00 21 10 00 00 00 00 | ! +0580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0590 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +05A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +05B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +05C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +05D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +05E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +05F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0610 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0630 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0650 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0670 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0690 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +06A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +06B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +06C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +06D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +06E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +06F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0710 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0730 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0750 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0770 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0790 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +07A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +07B0 | 14 00 00 00 23 00 14 00 0A 00 46 00 14 00 00 00 | # F +07C0 | E0 67 99 41 00 00 20 41 00 00 00 00 06 00 00 00 | g A A +07D0 | 5E 01 01 00 41 42 43 44 45 46 47 48 49 4A 4B 4C | ^ ABCDEFGHIJKL +07E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +07F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0800 | 59 77 59 77 06 04 00 00 51 00 00 00 00 00 01 00 | YwYw Q +0810 | 00 00 00 00 00 00 1F 00 3F 00 B3 00 00 C0 D5 3E | ? > +0820 | 00 82 E9 3E 00 00 00 00 01 02 00 00 02 00 01 00 | > +0830 | 02 01 01 00 04 00 01 00 01 00 00 00 00 00 00 00 | +0840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0850 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0860 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0870 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 | +I 91446 2023-12-31 21:05:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 00 0F 00 FF FF | ` 6 +0010 | 00 00 C8 C3 00 00 98 42 00 80 04 C4 | B +I 91446 2023-12-31 21:05:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 00 0F 00 FF FF | ` 6 +0010 | 00 00 C8 C3 00 00 98 42 00 80 04 C4 | B +I 91446 2023-12-31 21:05:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:05:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:05:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 40 0F 00 FF FF | ` 6 @ +0010 | D4 18 9D C2 00 00 00 00 E4 98 8B 3D | = +I 91446 2023-12-31 21:05:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 40 0F 00 FF FF | ` 6 @ +0010 | D4 18 9D C2 00 00 00 00 E4 98 8B 3D | = +I 91446 2023-12-31 21:05:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:05:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:05:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1F 01 01 00 | ` +I 91446 2023-12-31 21:05:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1F 01 01 00 | ` +I 91446 2023-12-31 21:05:58 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 0F 00 00 00 A6 31 62 C2 | ` 1b +0010 | 00 00 00 00 A0 4C 89 3E 00 40 00 00 | L > @ +I 91446 2023-12-31 21:05:58 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 0F 00 00 00 A6 31 62 C2 | ` 1b +0010 | 00 00 00 00 A0 4C 89 3E 00 40 00 00 | L > @ +I 91446 2023-12-31 21:05:58 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 0F 00 00 00 A6 31 62 C2 | ` 1b +0010 | 00 00 00 00 A0 4C 89 3E 00 40 00 00 | L > @ +I 91446 2023-12-31 21:05:58 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 0F 00 00 00 A6 31 62 C2 | ` 1b +0010 | 00 00 00 00 A0 4C 89 3E 00 40 00 00 | L > @ +I 91446 2023-12-31 21:06:05 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 18 00 62 05 01 00 01 00 01 00 4F 03 FF FF | ` b O +0010 | FF FF FF FF FF FF FF FF | +I 91446 2023-12-31 21:06:05 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 24 00 62 08 01 00 01 00 01 00 4F 03 FF FF | ` $ b O +0010 | FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 | +0020 | 00 00 00 00 | +I 91446 2023-12-31 21:06:07 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 D4 18 8D C2 E4 98 8B 3D | ` 7 = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:07 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 D4 18 8D C2 E4 98 8B 3D | ` 7 = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:07 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 A8 31 7A C2 E4 98 8B 3D | ` 7 1z = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:07 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 A8 31 7A C2 E4 98 8B 3D | ` 7 1z = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:08 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 A8 31 5A C2 E4 98 8B 3D | ` 7 1Z = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:08 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 A8 31 5A C2 E4 98 8B 3D | ` 7 1Z = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:08 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 A8 31 3A C2 E4 98 8B 3D | ` 7 1: = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:08 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 A8 31 3A C2 E4 98 8B 3D | ` 7 1: = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:08 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 A8 31 1A C2 E4 98 8B 3D | ` 9 1 = +I 91446 2023-12-31 21:06:08 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 A8 31 1A C2 E4 98 8B 3D | ` 9 1 = +I 91446 2023-12-31 21:06:08 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 50 63 F8 C1 E4 98 8B 3D | ` 9 Pc = +I 91446 2023-12-31 21:06:08 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 50 63 F8 C1 E4 98 8B 3D | ` 9 Pc = +I 91446 2023-12-31 21:06:08 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 40 0F 00 01 00 | ` 6 @ +0010 | A8 31 0A C2 00 00 00 00 E4 98 8B 3D | 1 = +I 91446 2023-12-31 21:06:08 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 40 0F 00 01 00 | ` 6 @ +0010 | A8 31 0A C2 00 00 00 00 E4 98 8B 3D | 1 = +I 91446 2023-12-31 21:06:09 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 50 63 D4 C1 E4 98 8B 3D | ` 7 Pc = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:09 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 50 63 D4 C1 E4 98 8B 3D | ` 7 Pc = +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:09 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 40 0F 00 01 00 | ` 6 @ +0010 | A8 31 06 C2 00 00 00 00 E4 98 8B 3D | 1 = +I 91446 2023-12-31 21:06:09 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 40 0F 00 01 00 | ` 6 @ +0010 | A8 31 06 C2 00 00 00 00 E4 98 8B 3D | 1 = +I 91446 2023-12-31 21:06:09 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 46 03 01 00 0A 00 00 00 00 40 00 00 | ` F @ +I 91446 2023-12-31 21:06:09 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 46 03 01 00 0A 00 00 00 00 40 00 00 | ` F @ +I 91446 2023-12-31 21:06:24 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=0C flag=03) +0000 | 0C 03 2C 00 00 00 00 00 00 00 00 00 82 A0 82 A0 | , +0010 | 82 A0 82 A0 82 A0 81 90 00 00 00 00 00 00 00 00 | +0020 | 00 00 00 00 00 00 00 00 00 00 00 00 | +I 91446 2023-12-31 21:06:24 - [Game:15] Created +I 91446 2023-12-31 21:06:24 - [C-2] Assigned inventory item IDs +[PlayerInventory] Meseta: 65886 +[PlayerInventory] 10 items +[PlayerInventory] 0: [+00000004] 00060000 00000000 00000000 (00010000) 00000000 (Handgun) +[PlayerInventory] 1: [+00000004] 01010000 00000000 00000000 (00010001) 00000000 (Frame) +[PlayerInventory] 2: [+0000000C] 02000500 F8011E00 04000000 (00010002) 2A020005 (Mag LV5 5.04/0.3/0.04/0 42% 2IQ (black)) +[PlayerInventory] 3: [+00000010] 03000000 00040000 00000000 (00010003) 00000000 (Monomate x4) +[PlayerInventory] 4: [+0000000C] 01020000 00000000 00000000 (00010004) 00000000 (Barrier) +[PlayerInventory] 5: [+0000000C] 01010000 00000000 00000000 (00010005) 00002800 (Frame) +[PlayerInventory] 6: [+00000004] 02000500 F4010000 00000000 (00010006) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] 7: [+0000000C] 00010000 00000000 00000000 (00010007) 00000000 (Saber) +[PlayerInventory] 8: [+00000004] 00060001 00000000 00000000 (00010008) 00000000 (Handgun +1) +[PlayerInventory] 9: [+00000010] 03020000 03010000 00000000 (00010009) 00000000 (Disk:Barta Lv.1) +I 91446 2023-12-31 21:06:24 - [C-2] Bank is empty +I 91446 2023-12-31 21:06:24 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=69 flag=01) +0000 | 69 01 08 00 01 00 01 00 | i +I 91446 2023-12-31 21:06:24 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=64 flag=01) 0000 | 64 01 08 01 00 00 01 00 00 00 00 00 00 00 00 00 | d -0010 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0030 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | -0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0010 | 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 | +0020 | 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 | +0030 | 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 | +0040 | 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 | +0050 | 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 | 0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0080 | 00 00 00 00 00 00 00 00 00 00 01 00 55 55 55 55 | UUUU @@ -881,556 +1214,3886 @@ I 25793 2023-11-24 23:08:15 - [Commands] Sending to C-A (ABCDEFGHIJKL) (version= 00E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 00F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | 0100 | 00 00 00 00 00 00 00 00 | -I 25793 2023-11-24 23:08:15 - [C-A] Creating game join command queue -I 25793 2023-11-24 23:08:15 - [Commands] Sending to C-A (ABCDEFGHIJKL) (version=DC_NTE command=1D flag=00) +I 91446 2023-12-31 21:06:24 - [C-2] Creating game join command queue +I 91446 2023-12-31 21:06:24 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=1D flag=00) 0000 | 1D 00 04 00 | -I 25793 2023-11-24 23:08:15 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=1D flag=00) +I 91446 2023-12-31 21:06:25 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=1D flag=00) 0000 | 1D 00 04 00 | -I 25793 2023-11-24 23:08:15 - [C-A] Sending 0 queued command(s) -I 58396 2023-12-27 10:39:54 - [Lobby:15] Sending next item IDs to client: 00010000 00210000 00410000 00610000 -I 58396 2023-12-27 10:39:54 - [Commands] Sending to C-A (ABCDEFGHIJKL) (version=DC_NTE command=6D flag=00) -0000 | 6D 00 44 00 5E 00 00 00 40 00 00 00 8C 00 00 00 | m D ^ @ -0010 | A9 00 EE FF 00 0C 01 0D 00 21 11 00 41 AA 15 00 | ! A -0020 | 61 19 00 81 1D 00 A1 21 00 C1 52 25 00 E1 0D 01 | a ! R% -0030 | 10 00 21 31 00 41 35 00 01 61 10 01 40 0F 52 0F | !1 A5 a @ R -0040 | 64 0F 29 00 | d ) -I 25793 2023-11-24 23:08:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:06:25 - [C-2] Sending 0 queued command(s) +I 91446 2023-12-31 21:06:25 - [Game:15] Sending next item IDs to client: 0001000A 00210000 00410000 00610000 +I 91446 2023-12-31 21:06:25 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=6D flag=00) +0000 | 6D 00 48 00 5E 00 00 00 44 00 00 00 8C 00 00 00 | m H ^ D +0010 | B9 00 EE FF 00 0A 0A 00 01 0B 00 21 AA 11 00 41 | ! A +0020 | 15 00 61 19 00 81 1D 00 A1 AA 21 00 C1 25 00 E1 | a ! % +0030 | 0B 00 01 10 00 21 0A 31 00 41 35 00 61 10 01 40 | ! 1 A5 a @ +0040 | 0F 52 0F 64 0F 00 29 00 | R d ) +I 91446 2023-12-31 21:06:26 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 A6 31 42 C2 A0 4C 89 3E | ` 7 1B L > +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:26 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 A6 31 22 C2 A0 4C 89 3E | ` 7 1" L > +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:27 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 A6 31 02 C2 A0 4C 89 3E | ` 7 1 L > +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:06:27 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 00 40 0F 00 01 00 | ` 6 @ +0010 | A6 31 06 C2 00 00 00 00 A0 4C 89 3E | 1 L > +I 91446 2023-12-31 21:06:27 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 46 03 00 00 0A 00 00 00 00 40 00 00 | ` F @ +I 91446 2023-12-31 21:06:28 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=08 flag=00) +0000 | 08 00 04 00 | +I 91446 2023-12-31 21:06:28 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=08 flag=01) +0000 | 08 01 3C 00 44 00 00 44 00 00 00 00 00 00 41 6C | < D D Al +0010 | 65 78 61 6E 64 72 69 61 00 00 00 00 00 00 00 04 | exandria +0020 | 44 00 00 44 15 00 00 00 22 01 82 A0 82 A0 82 A0 | D D " +0030 | 82 A0 82 A0 81 90 00 00 00 00 00 00 | +I 91446 2023-12-31 21:06:30 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=09 flag=00) +0000 | 09 00 0C 00 44 00 00 44 15 00 00 00 | D D +I 91446 2023-12-31 21:06:30 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=11 flag=00) +0000 | 11 00 3C 00 00 00 00 00 00 00 00 00 31 3A 20 41 | < 1: A +0010 | 42 43 44 45 46 47 48 49 4A 4B 4C 20 52 41 63 74 | BCDEFGHIJKL RAct +0020 | 20 4C 31 0A 45 70 31 20 4E 20 4E 6D 6C 20 52 65 | L1 Ep1 N Nml Re +0030 | 64 0A 43 68 65 61 74 73 20 6F 6E 00 | d Cheats on +I 91446 2023-12-31 21:06:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 1C 00 36 06 00 00 00 00 00 00 00 00 00 00 | ` 6 0010 | 5C 0F C6 43 00 00 00 00 C3 75 95 42 | \ C u B -I 25793 2023-11-24 23:08:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:06:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1B 01 00 00 | ` -I 25793 2023-11-24 23:08:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:06:36 - [C-2] Assigned inventory item IDs +[PlayerInventory] Meseta: 65886 +[PlayerInventory] 10 items +[PlayerInventory] 0: [+00000004] 00060000 00000000 00000000 (0001000A) 00000000 (Handgun) +[PlayerInventory] 1: [+00000004] 01010000 00000000 00000000 (0001000B) 00000000 (Frame) +[PlayerInventory] 2: [+0000000C] 02000500 F8011E00 04000000 (0001000C) 2A020005 (Mag LV5 5.04/0.3/0.04/0 42% 2IQ (black)) +[PlayerInventory] 3: [+00000010] 03000000 00040000 00000000 (0001000D) 00000000 (Monomate x4) +[PlayerInventory] 4: [+0000000C] 01020000 00000000 00000000 (0001000E) 00000000 (Barrier) +[PlayerInventory] 5: [+0000000C] 01010000 00000000 00000000 (0001000F) 00002800 (Frame) +[PlayerInventory] 6: [+00000004] 02000500 F4010000 00000000 (00010010) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] 7: [+0000000C] 00010000 00000000 00000000 (00010011) 00000000 (Saber) +[PlayerInventory] 8: [+00000004] 00060001 00000000 00000000 (00010012) 00000000 (Handgun +1) +[PlayerInventory] 9: [+00000010] 03020000 03010000 00000000 (00010013) 00000000 (Disk:Barta Lv.1) +I 91446 2023-12-31 21:06:36 - [C-2] Bank is empty +I 91446 2023-12-31 21:06:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 0C 00 1D 02 00 00 00 00 00 00 | ` -I 25793 2023-11-24 23:08:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:06:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 1C 00 36 06 00 00 00 00 00 E0 00 00 00 00 | ` 6 0010 | 67 00 8A 43 00 00 00 00 78 FF 72 43 | g C x rC -I 25793 2023-11-24 23:08:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:06:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1B 01 00 00 | ` -I 25793 2023-11-24 23:08:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:06:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 0C 00 1D 02 00 00 00 00 00 00 | ` -I 25793 2023-11-24 23:08:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:06:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1F 01 00 00 | ` -I 25793 2023-11-24 23:08:28 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 53 2C 87 43 50 57 6D 43 | ` 7 S, CPWmC +I 91446 2023-12-31 21:06:44 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=10 flag=00) +0000 | 10 00 0C 00 44 00 00 44 15 00 00 00 | D D +I 91446 2023-12-31 21:06:44 - [C-4] Assigned inventory item IDs but did not mark IDs as used +[PlayerInventory] Meseta: 98878 +[PlayerInventory] 4 items +[PlayerInventory] 0: [+00000010] 03000000 00020000 00000000 (00210000) 00000000 (Monomate x2) +[PlayerInventory] 1: [+0000000C] 00020002 00000000 00000000 (00210001) 00000000 (Sword +2) +[PlayerInventory] 2: [+00000004] 01010000 00000000 00000000 (00210002) 00002800 (Frame) +[PlayerInventory] 3: [+00000004] 01020100 00000000 00000000 (00210003) 00000000 (Shield) +I 91446 2023-12-31 21:06:44 - [C-4] Bank is empty +I 91446 2023-12-31 21:06:44 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=65 flag=01) +0000 | 65 01 44 04 00 00 01 00 00 00 01 00 99 99 99 99 | e D +0010 | 7F 00 00 01 01 00 00 00 42 42 42 42 42 42 42 42 | BBBBBBBB +0020 | 42 42 42 42 00 00 00 00 04 00 00 00 01 00 00 00 | BBBB +0030 | 10 00 00 00 03 00 00 00 00 02 00 00 00 00 00 00 | +0040 | 00 00 21 00 00 00 00 00 02 00 00 00 0C 00 00 00 | ! +0050 | 00 02 00 02 00 00 00 00 00 00 00 00 01 00 21 00 | ! +0060 | 00 00 00 00 01 00 00 00 04 00 00 00 01 01 00 00 | +0070 | 00 00 00 00 00 00 00 00 02 00 21 00 00 00 28 00 | ! ( +0080 | 01 00 00 00 04 00 00 00 01 02 01 00 00 00 00 00 | +0090 | 00 00 00 00 03 00 21 00 00 00 00 00 01 00 00 00 | ! +00A0 | 10 00 00 00 03 01 00 00 00 01 00 00 00 00 00 00 | +00B0 | 04 00 21 00 00 00 00 00 00 00 00 00 00 00 00 00 | ! +00C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0110 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0130 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0150 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0170 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0190 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +01F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0210 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0230 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0310 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0370 | 00 00 00 00 2D 00 00 00 23 00 14 00 0A 00 23 00 | - # # +0380 | 14 00 00 00 BC E0 94 41 00 00 20 41 00 00 00 00 | A A +0390 | 00 00 00 00 3E 82 01 00 42 42 42 42 42 42 42 42 | > BBBBBBBB +03A0 | 42 42 42 42 00 00 00 00 00 00 00 00 00 00 00 00 | BBBB +03B0 | FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 | +03C0 | 00 00 00 00 29 1C 56 E3 02 02 00 00 31 00 00 00 | ) V 1 +03D0 | 00 00 00 00 00 00 00 00 00 00 00 00 12 00 17 00 | +03E0 | 56 62 1E 3F 00 67 53 3F 00 00 00 00 01 00 00 00 | Vb ? gS? +03F0 | 02 00 01 00 02 01 01 00 04 00 01 00 01 00 00 00 | +0400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0430 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF | +0440 | FF FF FF 00 | +I 91446 2023-12-31 21:06:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=64 flag=02) +0000 | 64 02 08 01 01 00 01 00 00 00 00 00 00 00 00 00 | d +0010 | 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 | +0020 | 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 | +0030 | 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 | +0040 | 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 | +0050 | 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 | +0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0080 | 00 00 00 00 00 00 00 00 00 00 01 00 55 55 55 55 | UUUU +0090 | 7F 00 00 01 00 00 00 00 41 42 43 44 45 46 47 48 | ABCDEFGH +00A0 | 49 4A 4B 4C 00 00 00 00 00 00 01 00 99 99 99 99 | IJKL +00B0 | 7F 00 00 01 01 00 00 00 42 42 42 42 42 42 42 42 | BBBBBBBB +00C0 | 42 42 42 42 00 00 00 00 00 00 00 00 00 00 00 00 | BBBB +00D0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +00F0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0100 | 00 00 00 00 00 00 00 00 | +I 91446 2023-12-31 21:06:44 - [C-4] Creating game join command queue +I 91446 2023-12-31 21:06:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=1D flag=00) +0000 | 1D 00 04 00 | +I 91446 2023-12-31 21:06:45 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=1D flag=00) +0000 | 1D 00 04 00 | +I 91446 2023-12-31 21:06:45 - [C-4] Sending 0 queued command(s) +I 91446 2023-12-31 21:06:48 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 F4 1D 5C 00 00 00 F0 1D 00 00 40 6E 00 00 | m \ @n +0010 | 56 ED F1 A0 0C E8 F7 A1 F3 F8 A2 F3 F8 55 A3 F3 | V U +0020 | F8 A4 F3 F8 A5 F3 F8 A6 F3 F8 55 A7 F3 F8 A8 F3 | U +0030 | F8 A9 F3 F8 AA F3 F8 55 AB F3 F8 AC F3 F8 AD F3 | U +0040 | F8 AE F3 F8 55 AF F3 F8 B0 F3 F8 B1 F3 F8 B2 F3 | U +0050 | F8 55 B3 F3 F8 B4 F3 F8 B5 F3 F8 B6 F3 F8 55 B7 | U U +0060 | F3 F8 B8 F3 F8 B9 F3 F8 BA F3 F8 55 BB F3 F8 BC | U +0070 | F3 F8 BD F3 F8 BE F3 F8 55 BF F3 F8 C0 F3 F8 C1 | U +0080 | F3 F8 C2 F3 F8 55 C3 F3 F8 C4 F3 F8 C5 F3 F8 C6 | U +0090 | F3 F8 55 C7 F3 F8 C8 F3 F8 C9 F3 F8 CA F3 F8 55 | U U +00A0 | CB F3 F8 CC F3 F8 CD F3 F8 CE F3 F8 55 CF F3 F8 | U +00B0 | D0 F3 F8 D1 F3 F8 D2 F3 F8 55 D3 F3 F8 D4 F3 F8 | U +00C0 | D5 F3 F8 D6 F3 F8 55 D7 F3 F8 D8 F3 F8 D9 F3 F8 | U +00D0 | DA F3 F8 55 DB F3 F8 DC F3 F8 DD F3 F8 DE F3 F8 | U +00E0 | 55 DF F3 F8 E0 F3 F8 E1 F3 F8 E2 F3 F8 55 E3 F3 | U U +00F0 | F8 E4 F3 F8 E5 F3 F8 E6 F3 F8 55 E7 F3 F8 E8 F3 | U +0100 | F8 E9 F3 F8 EA F3 F8 55 EB F3 F8 EC F3 F8 ED F3 | U +0110 | F8 EE F3 F8 55 EF F3 F8 F0 F3 F8 F1 F3 F8 F2 F3 | U +0120 | F8 55 F3 F3 F8 F4 F3 F8 F5 F3 F8 F6 F3 F8 55 F7 | U U +0130 | F3 F8 F8 F3 F8 F9 F3 F8 FA F3 F8 55 FB F3 F8 FC | U +0140 | F3 F8 FD F3 F8 FE F3 F8 AD FF F3 F8 00 0D E8 F7 | +0150 | 01 73 48 02 AA 73 48 03 73 48 04 73 48 05 73 48 | sH sH sH sH sH +0160 | 06 AA 73 48 07 73 48 08 73 48 09 73 48 0A AA 73 | sH sH sH sH s +0170 | 48 0B 73 48 0C 73 48 0D 73 48 0E AA 73 48 0F 73 | H sH sH sH sH s +0180 | 48 10 73 48 11 73 48 12 AA 73 48 13 73 48 14 73 | H sH sH sH sH s +0190 | 48 15 73 48 16 AA 73 48 17 73 48 18 73 48 19 73 | H sH sH sH sH s +01A0 | 48 1A AA 73 48 1B 73 48 1C 73 48 1D 73 48 1E AA | H sH sH sH sH +01B0 | 73 48 1F 73 48 20 73 48 21 73 48 22 AA 73 48 23 | sH sH sH!sH" sH# +01C0 | 73 48 24 73 48 25 73 48 26 AA 73 48 27 73 48 28 | sH$sH%sH& sH'sH( +01D0 | 73 48 29 73 48 2A AA 73 48 2B 73 48 2C 73 48 2D | sH)sH* sH+sH,sH- +01E0 | 73 48 2E AA 73 48 2F 73 48 30 73 48 31 73 48 32 | sH. sH/sH0sH1sH2 +01F0 | AA 73 48 33 73 48 34 73 48 35 73 48 36 AA 73 48 | sH3sH4sH5sH6 sH +0200 | 37 73 48 38 73 48 39 73 48 3A AA 73 48 3B 73 48 | 7sH8sH9sH: sH;sH +0210 | 3C 73 48 3D 73 48 3E AA 73 48 3F 73 48 40 73 48 | sH?sH@sH +0220 | 41 73 48 42 AA 73 48 43 73 48 44 73 48 45 73 48 | AsHB sHCsHDsHEsH +0230 | 46 AA 73 48 47 73 48 48 73 48 49 73 48 4A AA 73 | F sHGsHHsHIsHJ s +0240 | 48 4B 73 48 4C 73 48 4D 73 48 4E AA 73 48 4F 73 | HKsHLsHMsHN sHOs +0250 | 48 50 73 48 51 73 48 52 AA 73 48 53 73 48 54 73 | HPsHQsHR sHSsHTs +0260 | 48 55 73 48 56 AA 73 48 57 73 48 58 73 48 59 73 | HUsHV sHWsHXsHYs +0270 | 48 5A AA 73 48 5B 73 48 5C 73 48 5D 73 48 5E AA | HZ sH[sH\sH]sH^ +0280 | 73 48 5F 73 48 60 73 48 61 73 48 62 AA 73 48 63 | sH_sH`sHasHb sHc +0290 | 73 48 64 73 48 65 73 48 66 AA 73 48 67 73 48 68 | sHdsHesHf sHgsHh +02A0 | 73 48 69 73 48 6A AA 73 48 6B 73 48 6C 73 48 6D | sHisHj sHksHlsHm +02B0 | 73 48 6E AA 73 48 6F 73 48 70 73 48 71 73 48 72 | sHn sHosHpsHqsHr +02C0 | AA 73 48 73 73 48 74 73 48 75 73 48 76 AA 73 48 | sHssHtsHusHv sH +02D0 | 77 73 48 78 73 48 79 73 48 7A AA 73 48 7B 73 48 | wsHxsHysHz sH{sH +02E0 | 7C 73 48 7D 73 48 7E AA 73 48 7F 73 48 80 73 48 | |sH}sH~ sH sH sH +02F0 | 81 73 48 82 AA 73 48 83 73 48 84 73 48 85 73 48 | sH sH sH sH sH +0300 | 86 AA 73 48 87 73 48 88 73 48 89 73 48 8A AA 73 | sH sH sH sH s +0310 | 48 8B 73 48 8C 73 48 8D 73 48 8E AA 73 48 8F 73 | H sH sH sH sH s +0320 | 48 90 73 48 91 73 48 92 AA 73 48 93 73 48 94 73 | H sH sH sH sH s +0330 | 48 95 73 48 96 AA 73 48 97 73 48 98 73 48 99 73 | H sH sH sH sH s +0340 | 48 9A AA 73 48 9B 73 48 9C 73 48 9D 73 48 9E AA | H sH sH sH sH +0350 | 73 48 9F 73 48 A0 73 48 A1 73 48 A2 AA 73 48 A3 | sH sH sH sH sH +0360 | 73 48 A4 73 48 A5 73 48 A6 AA 73 48 A7 73 48 A8 | sH sH sH sH sH +0370 | 73 48 A9 73 48 AA AA 73 48 AB 73 48 AC 73 48 AD | sH sH sH sH sH +0380 | 73 48 AE AA 73 48 AF 73 48 B0 73 48 B1 73 48 B2 | sH sH sH sH sH +0390 | AA 73 48 B3 73 48 B4 73 48 B5 73 48 B6 AA 73 48 | sH sH sH sH sH +03A0 | B7 73 48 B8 73 48 B9 73 48 BA AA 73 48 BB 73 48 | sH sH sH sH sH +03B0 | BC 73 48 BD 73 48 BE AA 73 48 BF 73 48 C0 73 48 | sH sH sH sH sH +03C0 | C1 73 48 C2 AA 73 48 C3 73 48 C4 73 48 C5 73 48 | sH sH sH sH sH +03D0 | C6 AA 73 48 C7 73 48 C8 73 48 C9 73 48 CA AA 73 | sH sH sH sH s +03E0 | 48 CB 73 48 CC 73 48 CD 73 48 CE AA 73 48 CF 73 | H sH sH sH sH s +03F0 | 48 D0 73 48 D1 73 48 D2 AA 73 48 D3 73 48 D4 73 | H sH sH sH sH s +0400 | 48 D5 73 48 D6 AA 73 48 D7 73 48 D8 73 48 D9 73 | H sH sH sH sH s +0410 | 48 DA AA 73 48 DB 73 48 DC 73 48 DD 73 48 DE AA | H sH sH sH sH +0420 | 73 48 DF 73 48 E0 73 48 E1 73 48 E2 AA 73 48 E3 | sH sH sH sH sH +0430 | 73 48 E4 73 48 E5 73 48 E6 AA 73 48 E7 73 48 E8 | sH sH sH sH sH +0440 | 73 48 E9 73 48 EA AA 73 48 EB 73 48 EC 73 48 ED | sH sH sH sH sH +0450 | 73 48 EE AA 73 48 EF 73 48 F0 73 48 F1 73 48 F2 | sH sH sH sH sH +0460 | AA 73 48 F3 73 48 F4 73 48 F5 73 48 F6 AA 73 48 | sH sH sH sH sH +0470 | F7 73 48 F8 73 48 F9 73 48 FA AA 73 48 FB 73 48 | sH sH sH sH sH +0480 | FC 73 48 FD 73 48 FE 9A 73 48 FF 73 48 00 0E 74 | sH sH sH sH t +0490 | 48 73 08 02 AA 73 08 03 73 08 04 73 08 05 73 08 | Hs s s s s +04A0 | 06 AA 73 08 07 73 08 08 73 08 09 73 08 0A AA 73 | s s s s s +04B0 | 08 0B 73 08 0C 73 08 0D 73 08 0E AA 73 08 0F 73 | s s s s s +04C0 | 08 10 73 08 11 73 08 12 AA 73 08 13 73 08 14 73 | s s s s s +04D0 | 08 15 73 08 16 AA 73 08 17 73 08 18 73 08 19 73 | s s s s s +04E0 | 08 1A AA 73 08 1B 73 08 1C 73 08 1D 73 08 1E AA | s s s s +04F0 | 73 08 1F 73 08 20 73 08 21 73 08 22 AA 73 08 23 | s s s !s " s # +0500 | 73 08 24 73 08 25 73 08 26 AA 73 08 27 73 08 28 | s $s %s & s 's ( +0510 | 73 08 29 73 08 2A AA 73 08 2B 73 08 2C 73 08 2D | s )s * s +s ,s - +0520 | 73 08 2E AA 73 08 2F 73 08 30 73 08 31 73 08 32 | s . s /s 0s 1s 2 +0530 | AA 73 08 33 73 08 34 73 08 35 73 08 36 AA 73 08 | s 3s 4s 5s 6 s +0540 | 37 73 08 38 73 08 39 73 08 3A AA 73 08 3B 73 08 | 7s 8s 9s : s ;s +0550 | 3C 73 08 3D 73 08 3E AA 73 08 3F 73 08 40 73 08 | s ?s @s +0560 | 41 73 08 42 AA 73 08 43 73 08 44 73 08 45 73 08 | As B s Cs Ds Es +0570 | 46 AA 73 08 47 73 08 48 73 08 49 73 08 4A AA 73 | F s Gs Hs Is J s +0580 | 08 4B 73 08 4C 73 08 4D 73 08 4E AA 73 08 4F 73 | Ks Ls Ms N s Os +0590 | 08 50 73 08 51 73 08 52 AA 73 08 53 73 08 54 73 | Ps Qs R s Ss Ts +05A0 | 08 55 73 08 56 AA 73 08 57 73 08 58 73 08 59 73 | Us V s Ws Xs Ys +05B0 | 08 5A AA 73 08 5B 73 08 5C 73 08 5D 73 08 5E AA | Z s [s \s ]s ^ +05C0 | 73 08 5F 73 08 60 73 08 61 73 08 62 AA FF 48 63 | s _s `s as b Hc +05D0 | FF 48 64 FF 48 65 FF 48 66 AA FF 48 67 FF 48 68 | Hd He Hf Hg Hh +05E0 | FF 48 69 FF 48 6A AA FF 48 6B FF 48 6C FF 48 6D | Hi Hj Hk Hl Hm +05F0 | FF 48 6E AA FF 48 6F FF 48 70 FF 48 71 FF 48 72 | Hn Ho Hp Hq Hr +0600 | AA FF 48 73 FF 48 74 FF 48 75 FF 48 76 AA FF 48 | Hs Ht Hu Hv H +0610 | 77 FF 48 78 FF 48 79 FF 48 7A AA FF 48 7B FF 48 | w Hx Hy Hz H{ H +0620 | 7C FF 48 7D FF 48 7E AA FF 48 7F FF 48 80 FF 48 | | H} H~ H H H +0630 | 81 FF 48 82 AA FF 48 83 FF 48 84 FF 48 85 FF 48 | H H H H H +0640 | 86 AA FF 48 87 FF 48 88 FF 48 89 FF 48 8A AA FF | H H H H +0650 | 48 8B FF 48 8C FF 48 8D FF 48 8E AA FF 48 8F FF | H H H H H +0660 | 48 90 FF 48 91 FF 48 92 AA FF 48 93 FF 48 94 FF | H H H H H +0670 | 48 95 FF 48 96 AA FF 48 97 FF 48 98 FF 48 99 FF | H H H H H +0680 | 48 9A AA FF 48 9B FF 48 9C FF 48 9D FF 48 9E AA | H H H H H +0690 | FF 48 9F FF 48 A0 FF 48 A1 FF 48 A2 AA FF 48 A3 | H H H H H +06A0 | FF 48 A4 FF 48 A5 FF 48 A6 AA FF 48 A7 FF 48 A8 | H H H H H +06B0 | FF 48 A9 FF 48 AA AA FF 48 AB FF 48 AC FF 48 AD | H H H H H +06C0 | FF 48 AE AA FF 48 AF FF 48 B0 FF 48 B1 FF 48 B2 | H H H H H +06D0 | AA FF 48 B3 FF 48 B4 FF 48 B5 FF 48 B6 AA FF 48 | H H H H H +06E0 | B7 FF 48 B8 FF 48 B9 FF 48 BA AA FF 48 BB FF 48 | H H H H H +06F0 | BC FF 48 BD FF 48 BE AA FF 48 BF FF 48 C0 FF 48 | H H H H H +0700 | C1 FF 48 C2 AA FF 48 C3 FF 48 C4 FF 48 C5 FF 48 | H H H H H +0710 | C6 AA FF 48 C7 FF 48 C8 FF 48 C9 FF 48 CA AA FF | H H H H +0720 | 48 CB FF 48 CC FF 48 CD FF 48 CE AA FF 48 CF FF | H H H H H +0730 | 48 D0 FF 48 D1 FF 48 D2 AA FF 48 D3 FF 48 D4 FF | H H H H H +0740 | 48 D5 FF 48 D6 AA FF 48 D7 FF 48 D8 FF 48 D9 FF | H H H H H +0750 | 48 DA AA FF 48 DB FF 48 DC FF 48 DD FF 48 DE AA | H H H H H +0760 | FF 48 DF FF 48 E0 FF 48 E1 FF 48 E2 AA FF 48 E3 | H H H H H +0770 | FF 48 E4 FF 48 E5 FF 48 E6 AA FF 48 E7 FF 48 E8 | H H H H H +0780 | FF 48 E9 FF 48 EA AA FF 48 EB FF 48 EC FF 48 ED | H H H H H +0790 | FF 48 EE AA FF 48 EF FF 48 F0 FF 48 F1 FF 48 F2 | H H H H H +07A0 | AA FF 48 F3 FF 48 F4 FF 48 F5 FF 48 F6 AA FF 48 | H H H H H +07B0 | F7 FF 48 F8 FF 48 F9 FF 48 FA AA FF 48 FB FF 48 | H H H H H +07C0 | FC FF 48 FD FF 48 FE 9A FF 48 FF FF 48 00 0F 74 | H H H H t +07D0 | 08 73 C8 02 AA 73 C8 03 73 C8 04 73 C8 05 73 C8 | s s s s s +07E0 | 06 AA 73 C8 07 73 C8 08 73 C8 09 73 C8 0A AA 73 | s s s s s +07F0 | C8 0B 73 C8 0C 73 C8 0D 73 C8 0E AA 73 C8 0F 73 | s s s s s +0800 | C8 10 73 C8 11 73 C8 12 AA 73 C8 13 73 C8 14 73 | s s s s s +0810 | C8 15 73 C8 16 AA 73 C8 17 73 C8 18 73 C8 19 73 | s s s s s +0820 | C8 1A AA 73 C8 1B 73 C8 1C 73 C8 1D 73 C8 1E AA | s s s s +0830 | 73 C8 1F 73 C8 20 73 C8 21 73 C8 22 AA 73 C8 23 | s s s !s " s # +0840 | 73 C8 24 73 C8 25 73 C8 26 AA 73 C8 27 73 C8 28 | s $s %s & s 's ( +0850 | 73 C8 29 73 C8 2A AA 73 C8 2B 73 C8 2C 73 C8 2D | s )s * s +s ,s - +0860 | 73 C8 2E AA 73 C8 2F 73 C8 30 73 C8 31 73 C8 32 | s . s /s 0s 1s 2 +0870 | AA 73 C8 33 73 C8 34 73 C8 35 73 C8 36 AA 73 C8 | s 3s 4s 5s 6 s +0880 | 37 73 C8 38 73 C8 39 73 C8 3A AA 73 C8 3B 73 C8 | 7s 8s 9s : s ;s +0890 | 3C 73 C8 3D 73 C8 3E AA 73 C8 3F 73 C8 40 73 C8 | s ?s @s +08A0 | 41 73 C8 42 AA 73 C8 43 73 C8 44 73 C8 45 73 C8 | As B s Cs Ds Es +08B0 | 46 AA 73 C8 47 73 C8 48 73 C8 49 73 C8 4A AA 73 | F s Gs Hs Is J s +08C0 | C8 4B 73 C8 4C 73 C8 4D 73 C8 4E AA 73 C8 4F 73 | Ks Ls Ms N s Os +08D0 | C8 50 73 C8 51 73 C8 52 AA 73 C8 53 73 C8 54 73 | Ps Qs R s Ss Ts +08E0 | C8 55 73 C8 56 AA 73 C8 57 73 C8 58 73 C8 59 73 | Us V s Ws Xs Ys +08F0 | C8 5A AA 73 C8 5B 73 C8 5C 73 C8 5D 73 C8 5E AA | Z s [s \s ]s ^ +0900 | 73 C8 5F 73 C8 60 73 C8 61 73 C8 62 AA 73 C8 63 | s _s `s as b s c +0910 | 0B 18 64 0B 18 65 0B 18 66 AA 0B 18 67 0B 18 68 | d e f g h +0920 | 0B 18 69 0B 18 6A AA 0B 18 6B 0B 18 6C 0B 18 6D | i j k l m +0930 | 0B 18 6E AA 0B 18 6F 0B 18 70 0B 18 71 0B 18 72 | n o p q r +0940 | AA 0B 18 73 0B 18 74 0B 18 75 0B 18 76 AA 0B 18 | s t u v +0950 | 77 0B 18 78 0B 18 79 0B 18 7A AA 0B 18 7B 0B 18 | w x y z { +0960 | 7C 0B 18 7D 0B 18 7E AA 0B 18 7F 0B 18 80 0B 18 | | } ~ +0970 | 81 0B 18 82 AA 0B 18 83 0B 18 84 0B 18 85 0B 18 | +0980 | 86 AA 0B 18 87 0B 18 88 0B 18 89 0B 18 8A AA 0B | +0990 | 18 8B 0B 18 8C 0B 18 8D 0B 18 8E AA 0B 18 8F 0B | +09A0 | 18 90 0B 18 91 0B 18 92 AA 0B 18 93 0B 18 94 0B | +09B0 | 18 95 0B 18 96 AA 0B 18 97 0B 18 98 0B 18 99 0B | +09C0 | 18 9A AA 0B 18 9B 0B 18 9C 0B 18 9D 0B 18 9E AA | +09D0 | 0B 18 9F 0B 18 A0 0B 18 A1 0B 18 A2 AA 0B 18 A3 | +09E0 | 0B 18 A4 0B 18 A5 0B 18 A6 AA 0B 18 A7 0B 18 A8 | +09F0 | 0B 18 A9 0B 18 AA AA 0B 18 AB 0B 18 AC 0B 18 AD | +0A00 | 0B 18 AE AA 0B 18 AF 0B 18 B0 0B 18 B1 0B 18 B2 | +0A10 | AA 0B 18 B3 0B 18 B4 0B 18 B5 0B 18 B6 AA 0B 18 | +0A20 | B7 0B 18 B8 0B 18 B9 0B 18 BA AA 0B 18 BB 0B 18 | +0A30 | BC 0B 18 BD 0B 18 BE AA 0B 18 BF 0B 18 C0 0B 18 | +0A40 | C1 0B 18 C2 AA 0B 18 C3 0B 18 C4 0B 18 C5 0B 18 | +0A50 | C6 AA 0B 18 C7 0B 18 C8 0B 18 C9 0B 18 CA AA 0B | +0A60 | 18 CB 0B 18 CC 0B 18 CD 0B 18 CE AA 0B 18 CF 0B | +0A70 | 18 D0 0B 18 D1 0B 18 D2 AA 0B 18 D3 0B 18 D4 0B | +0A80 | 18 D5 0B 18 D6 AA 0B 18 D7 0B 18 D8 0B 18 D9 0B | +0A90 | 18 DA AA 0B 18 DB 0B 18 DC 0B 18 DD 0B 18 DE AA | +0AA0 | 0B 18 DF 0B 18 E0 0B 18 E1 0B 18 E2 AA 0B 18 E3 | +0AB0 | 0B 18 E4 0B 18 E5 0B 18 E6 AA 0B 18 E7 0B 18 E8 | +0AC0 | 0B 18 E9 0B 18 EA AA 0B 18 EB 0B 18 EC 0B 18 ED | +0AD0 | 0B 18 EE AA 0B 18 EF 0B 18 F0 0B 18 F1 0B 18 F2 | +0AE0 | AA 0B 18 F3 0B 18 F4 0B 18 F5 0B 18 F6 AA 0B 18 | +0AF0 | F7 0B 18 F8 0B 18 F9 0B 18 FA AA 0B 18 FB 0B 18 | +0B00 | FC 0B 18 FD 0B 18 FE 9A 0B 18 FF 0B 18 00 10 74 | t +0B10 | C8 73 88 02 AA 73 88 03 73 88 04 73 88 05 73 88 | s s s s s +0B20 | 06 AA 73 88 07 73 88 08 73 88 09 73 88 0A AA 73 | s s s s s +0B30 | 88 0B 73 88 0C 73 88 0D 73 88 0E AA 73 88 0F 73 | s s s s s +0B40 | 88 10 73 88 11 73 88 12 AA 73 88 13 73 88 14 73 | s s s s s +0B50 | 88 15 73 88 16 AA 73 88 17 73 88 18 73 88 19 73 | s s s s s +0B60 | 88 1A AA 73 88 1B 73 88 1C 73 88 1D 73 88 1E AA | s s s s +0B70 | 73 88 1F 73 88 20 73 88 21 73 88 22 AA 73 88 23 | s s s !s " s # +0B80 | 73 88 24 73 88 25 73 88 26 AA 73 88 27 73 88 28 | s $s %s & s 's ( +0B90 | 73 88 29 73 88 2A AA 73 88 2B 73 88 2C 73 88 2D | s )s * s +s ,s - +0BA0 | 73 88 2E AA 73 88 2F 73 88 30 73 88 31 73 88 32 | s . s /s 0s 1s 2 +0BB0 | AA 73 88 33 73 88 34 73 88 35 73 88 36 AA 73 88 | s 3s 4s 5s 6 s +0BC0 | 37 73 88 38 73 88 39 73 88 3A AA 73 88 3B 73 88 | 7s 8s 9s : s ;s +0BD0 | 3C 73 88 3D 73 88 3E AA 73 88 3F 73 88 40 73 88 | s ?s @s +0BE0 | 41 73 88 42 AA 73 88 43 73 88 44 73 88 45 73 88 | As B s Cs Ds Es +0BF0 | 46 AA 73 88 47 73 88 48 73 88 49 73 88 4A AA 73 | F s Gs Hs Is J s +0C00 | 88 4B 73 88 4C 73 88 4D 73 88 4E AA 73 88 4F 73 | Ks Ls Ms N s Os +0C10 | 88 50 73 88 51 73 88 52 AA 73 88 53 73 88 54 73 | Ps Qs R s Ss Ts +0C20 | 88 55 73 88 56 AA 73 88 57 73 88 58 73 88 59 73 | Us V s Ws Xs Ys +0C30 | 88 5A AA 73 88 5B 73 88 5C 73 88 5D 73 88 5E AA | Z s [s \s ]s ^ +0C40 | 73 88 5F 73 88 60 73 88 61 73 88 62 AA 73 88 63 | s _s `s as b s c +0C50 | 73 88 64 17 D8 65 17 D8 66 AA 17 D8 67 17 D8 68 | s d e f g h +0C60 | 17 D8 69 17 D8 6A AA 17 D8 6B 17 D8 6C 17 D8 6D | i j k l m +0C70 | 17 D8 6E AA 17 D8 6F 17 D8 70 17 D8 71 17 D8 72 | n o p q r +0C80 | AA 17 D8 73 17 D8 74 17 D8 75 17 D8 76 AA 17 D8 | s t u v +0C90 | 77 17 D8 78 17 D8 79 17 D8 7A AA 17 D8 7B 17 D8 | w x y z { +0CA0 | 7C 17 D8 7D 17 D8 7E AA 17 D8 7F 17 D8 80 17 D8 | | } ~ +0CB0 | 81 17 D8 82 AA 17 D8 83 17 D8 84 17 D8 85 17 D8 | +0CC0 | 86 AA 17 D8 87 17 D8 88 17 D8 89 17 D8 8A AA 17 | +0CD0 | D8 8B 17 D8 8C 17 D8 8D 17 D8 8E AA 17 D8 8F 17 | +0CE0 | D8 90 17 D8 91 17 D8 92 AA 17 D8 93 17 D8 94 17 | +0CF0 | D8 95 17 D8 96 AA 17 D8 97 17 D8 98 17 D8 99 17 | +0D00 | D8 9A AA 17 D8 9B 17 D8 9C 17 D8 9D 17 D8 9E AA | +0D10 | 17 D8 9F 17 D8 A0 17 D8 A1 17 D8 A2 AA 17 D8 A3 | +0D20 | 17 D8 A4 17 D8 A5 17 D8 A6 AA 17 D8 A7 17 D8 A8 | +0D30 | 17 D8 A9 17 D8 AA AA 17 D8 AB 17 D8 AC 17 D8 AD | +0D40 | 17 D8 AE AA 17 D8 AF 17 D8 B0 17 D8 B1 17 D8 B2 | +0D50 | AA 17 D8 B3 17 D8 B4 17 D8 B5 17 D8 B6 AA 17 D8 | +0D60 | B7 17 D8 B8 17 D8 B9 17 D8 BA AA 17 D8 BB 17 D8 | +0D70 | BC 17 D8 BD 17 D8 BE AA 17 D8 BF 17 D8 C0 17 D8 | +0D80 | C1 17 D8 C2 AA 17 D8 C3 17 D8 C4 17 D8 C5 17 D8 | +0D90 | C6 AA 17 D8 C7 17 D8 C8 17 D8 C9 17 D8 CA AA 17 | +0DA0 | D8 CB 17 D8 CC 17 D8 CD 17 D8 CE AA 17 D8 CF 17 | +0DB0 | D8 D0 17 D8 D1 17 D8 D2 AA 17 D8 D3 17 D8 D4 17 | +0DC0 | D8 D5 17 D8 D6 AA 17 D8 D7 17 D8 D8 17 D8 D9 17 | +0DD0 | D8 DA AA 17 D8 DB 17 D8 DC 17 D8 DD 17 D8 DE AA | +0DE0 | 17 D8 DF 17 D8 E0 17 D8 E1 17 D8 E2 AA 17 D8 E3 | +0DF0 | 17 D8 E4 17 D8 E5 17 D8 E6 AA 17 D8 E7 17 D8 E8 | +0E00 | 17 D8 E9 17 D8 EA AA 17 D8 EB 17 D8 EC 17 D8 ED | +0E10 | 17 D8 EE AA 17 D8 EF 17 D8 F0 17 D8 F1 17 D8 F2 | +0E20 | AA 17 D8 F3 17 D8 F4 17 D8 F5 17 D8 F6 AA 17 D8 | +0E30 | F7 17 D8 F8 17 D8 F9 17 D8 FA AA 17 D8 FB 17 D8 | +0E40 | FC 17 D8 FD 17 D8 FE 9A 17 D8 FF 17 D8 00 11 74 | t +0E50 | 88 73 48 02 AA 73 48 03 73 48 04 73 48 05 73 48 | sH sH sH sH sH +0E60 | 06 AA 73 48 07 73 48 08 73 48 09 73 48 0A AA 73 | sH sH sH sH s +0E70 | 48 0B 73 48 0C 73 48 0D 73 48 0E AA 73 48 0F 73 | H sH sH sH sH s +0E80 | 48 10 73 48 11 73 48 12 AA 73 48 13 73 48 14 73 | H sH sH sH sH s +0E90 | 48 15 73 48 16 AA 73 48 17 73 48 18 73 48 19 73 | H sH sH sH sH s +0EA0 | 48 1A AA 73 48 1B 73 48 1C 73 48 1D 73 48 1E AA | H sH sH sH sH +0EB0 | 73 48 1F 73 48 20 73 48 21 73 48 22 AA 73 48 23 | sH sH sH!sH" sH# +0EC0 | 73 48 24 73 48 25 73 48 26 AA 73 48 27 73 48 28 | sH$sH%sH& sH'sH( +0ED0 | 73 48 29 73 48 2A AA 73 48 2B 73 48 2C 73 48 2D | sH)sH* sH+sH,sH- +0EE0 | 73 48 2E AA 73 48 2F 73 48 30 73 48 31 73 48 32 | sH. sH/sH0sH1sH2 +0EF0 | AA 73 48 33 73 48 34 73 48 35 73 48 36 AA 73 48 | sH3sH4sH5sH6 sH +0F00 | 37 73 48 38 73 48 39 73 48 3A AA 73 48 3B 73 48 | 7sH8sH9sH: sH;sH +0F10 | 3C 73 48 3D 73 48 3E AA 73 48 3F 73 48 40 73 48 | sH?sH@sH +0F20 | 41 73 48 42 AA 73 48 43 73 48 44 73 48 45 73 48 | AsHB sHCsHDsHEsH +0F30 | 46 AA 73 48 47 73 48 48 73 48 49 73 48 4A AA 73 | F sHGsHHsHIsHJ s +0F40 | 48 4B 73 48 4C 73 48 4D 73 48 4E AA 73 48 4F 73 | HKsHLsHMsHN sHOs +0F50 | 48 50 73 48 51 73 48 52 AA 73 48 53 73 48 54 73 | HPsHQsHR sHSsHTs +0F60 | 48 55 73 48 56 AA 73 48 57 73 48 58 73 48 59 73 | HUsHV sHWsHXsHYs +0F70 | 48 5A AA 73 48 5B 73 48 5C 73 48 5D 73 48 5E AA | HZ sH[sH\sH]sH^ +0F80 | 73 48 5F 73 48 60 73 48 61 73 48 62 AA 73 48 63 | sH_sH`sHasHb sHc +0F90 | 73 48 64 73 48 65 23 98 66 AA 23 98 67 23 98 68 | sHdsHe# f # g# h +0FA0 | 23 98 69 23 98 6A AA 23 98 6B 23 98 6C 23 98 6D | # i# j # k# l# m +0FB0 | 23 98 6E AA 23 98 6F 23 98 70 23 98 71 23 98 72 | # n # o# p# q# r +0FC0 | AA 23 98 73 23 98 74 23 98 75 23 98 76 AA 23 98 | # s# t# u# v # +0FD0 | 77 23 98 78 23 98 79 23 98 7A AA 23 98 7B 23 98 | w# x# y# z # {# +0FE0 | 7C 23 98 7D 23 98 7E AA 23 98 7F 23 98 80 23 98 | |# }# ~ # # # +0FF0 | 81 23 98 82 AA 23 98 83 23 98 84 23 98 85 23 98 | # # # # # +1000 | 86 AA 23 98 87 23 98 88 23 98 89 23 98 8A AA 23 | # # # # # +1010 | 98 8B 23 98 8C 23 98 8D 23 98 8E AA 23 98 8F 23 | # # # # # +1020 | 98 90 23 98 91 23 98 92 AA 23 98 93 23 98 94 23 | # # # # # +1030 | 98 95 23 98 96 AA 23 98 97 23 98 98 23 98 99 23 | # # # # # +1040 | 98 9A AA 23 98 9B 23 98 9C 23 98 9D 23 98 9E AA | # # # # +1050 | 23 98 9F 23 98 A0 23 98 A1 23 98 A2 AA 23 98 A3 | # # # # # +1060 | 23 98 A4 23 98 A5 23 98 A6 AA 23 98 A7 23 98 A8 | # # # # # +1070 | 23 98 A9 23 98 AA AA 23 98 AB 23 98 AC 23 98 AD | # # # # # +1080 | 23 98 AE AA 23 98 AF 23 98 B0 23 98 B1 23 98 B2 | # # # # # +1090 | AA 23 98 B3 23 98 B4 23 98 B5 23 98 B6 AA 23 98 | # # # # # +10A0 | B7 23 98 B8 23 98 B9 23 98 BA AA 23 98 BB 23 98 | # # # # # +10B0 | BC 23 98 BD 23 98 BE AA 23 98 BF 23 98 C0 23 98 | # # # # # +10C0 | C1 23 98 C2 AA 23 98 C3 23 98 C4 23 98 C5 23 98 | # # # # # +10D0 | C6 AA 23 98 C7 23 98 C8 23 98 C9 23 98 CA AA 23 | # # # # # +10E0 | 98 CB 23 98 CC 23 98 CD 23 98 CE AA 23 98 CF 23 | # # # # # +10F0 | 98 D0 23 98 D1 23 98 D2 AA 23 98 D3 23 98 D4 23 | # # # # # +1100 | 98 D5 23 98 D6 AA 23 98 D7 23 98 D8 23 98 D9 23 | # # # # # +1110 | 98 DA AA 23 98 DB 23 98 DC 23 98 DD 23 98 DE AA | # # # # +1120 | 23 98 DF 23 98 E0 23 98 E1 23 98 E2 AA 23 98 E3 | # # # # # +1130 | 23 98 E4 23 98 E5 23 98 E6 AA 23 98 E7 23 98 E8 | # # # # # +1140 | 23 98 E9 23 98 EA AA 23 98 EB 23 98 EC 23 98 ED | # # # # # +1150 | 23 98 EE AA 23 98 EF 23 98 F0 23 98 F1 23 98 F2 | # # # # # +1160 | AA 23 98 F3 23 98 F4 23 98 F5 23 98 F6 AA 23 98 | # # # # # +1170 | F7 23 98 F8 23 98 F9 23 98 FA AA 23 98 FB 23 98 | # # # # # +1180 | FC 23 98 FD 23 98 FE 9A 23 98 FF 23 98 00 12 74 | # # # # t +1190 | 48 73 08 02 AA 73 08 03 73 08 04 73 08 05 73 08 | Hs s s s s +11A0 | 06 AA 73 08 07 73 08 08 73 08 09 73 08 0A AA 73 | s s s s s +11B0 | 08 0B 73 08 0C 73 08 0D 73 08 0E AA 73 08 0F 73 | s s s s s +11C0 | 08 10 73 08 11 73 08 12 AA 73 08 13 73 08 14 73 | s s s s s +11D0 | 08 15 73 08 16 AA 73 08 17 73 08 18 73 08 19 73 | s s s s s +11E0 | 08 1A AA 73 08 1B 73 08 1C 73 08 1D 73 08 1E AA | s s s s +11F0 | 73 08 1F 73 08 20 73 08 21 73 08 22 AA 73 08 23 | s s s !s " s # +1200 | 73 08 24 73 08 25 73 08 26 AA 73 08 27 73 08 28 | s $s %s & s 's ( +1210 | 73 08 29 73 08 2A AA 73 08 2B 73 08 2C 73 08 2D | s )s * s +s ,s - +1220 | 73 08 2E AA 73 08 2F 73 08 30 73 08 31 73 08 32 | s . s /s 0s 1s 2 +1230 | AA 73 08 33 73 08 34 73 08 35 73 08 36 AA 73 08 | s 3s 4s 5s 6 s +1240 | 37 73 08 38 73 08 39 73 08 3A AA 73 08 3B 73 08 | 7s 8s 9s : s ;s +1250 | 3C 73 08 3D 73 08 3E AA 73 08 3F 73 08 40 73 08 | s ?s @s +1260 | 41 73 08 42 AA 73 08 43 73 08 44 73 08 45 73 08 | As B s Cs Ds Es +1270 | 46 AA 73 08 47 73 08 48 73 08 49 73 08 4A AA 73 | F s Gs Hs Is J s +1280 | 08 4B 73 08 4C 73 08 4D 73 08 4E AA 73 08 4F 73 | Ks Ls Ms N s Os +1290 | 08 50 73 08 51 73 08 52 AA 73 08 53 73 08 54 73 | Ps Qs R s Ss Ts +12A0 | 08 55 73 08 56 AA 73 08 57 73 08 58 73 08 59 73 | Us V s Ws Xs Ys +12B0 | 08 5A AA 73 08 5B 73 08 5C 73 08 5D 73 08 5E AA | Z s [s \s ]s ^ +12C0 | 73 08 5F 73 08 60 73 08 61 73 08 62 AA 73 08 63 | s _s `s as b s c +12D0 | 73 08 64 73 08 65 73 08 66 AA 2F 58 67 2F 58 68 | s ds es f /Xg/Xh +12E0 | 2F 58 69 2F 58 6A AA 2F 58 6B 2F 58 6C 2F 58 6D | /Xi/Xj /Xk/Xl/Xm +12F0 | 2F 58 6E AA 2F 58 6F 2F 58 70 2F 58 71 2F 58 72 | /Xn /Xo/Xp/Xq/Xr +1300 | AA 2F 58 73 2F 58 74 2F 58 75 2F 58 76 AA 2F 58 | /Xs/Xt/Xu/Xv /X +1310 | 77 2F 58 78 2F 58 79 2F 58 7A AA 2F 58 7B 2F 58 | w/Xx/Xy/Xz /X{/X +1320 | 7C 2F 58 7D 2F 58 7E AA 2F 58 7F 2F 58 80 2F 58 | |/X}/X~ /X /X /X +1330 | 81 2F 58 82 AA 2F 58 83 2F 58 84 2F 58 85 2F 58 | /X /X /X /X /X +1340 | 86 AA 2F 58 87 2F 58 88 2F 58 89 2F 58 8A AA 2F | /X /X /X /X / +1350 | 58 8B 2F 58 8C 2F 58 8D 2F 58 8E AA 2F 58 8F 2F | X /X /X /X /X / +1360 | 58 90 2F 58 91 2F 58 92 AA 2F 58 93 2F 58 94 2F | X /X /X /X /X / +1370 | 58 95 2F 58 96 AA 2F 58 97 2F 58 98 2F 58 99 2F | X /X /X /X /X / +1380 | 58 9A AA 2F 58 9B 2F 58 9C 2F 58 9D 2F 58 9E AA | X /X /X /X /X +1390 | 2F 58 9F 2F 58 A0 2F 58 A1 2F 58 A2 AA 2F 58 A3 | /X /X /X /X /X +13A0 | 2F 58 A4 2F 58 A5 2F 58 A6 AA 2F 58 A7 2F 58 A8 | /X /X /X /X /X +13B0 | 2F 58 A9 2F 58 AA AA 2F 58 AB 2F 58 AC 2F 58 AD | /X /X /X /X /X +13C0 | 2F 58 AE AA 2F 58 AF 2F 58 B0 2F 58 B1 2F 58 B2 | /X /X /X /X /X +13D0 | AA 2F 58 B3 2F 58 B4 2F 58 B5 2F 58 B6 AA 2F 58 | /X /X /X /X /X +13E0 | B7 2F 58 B8 2F 58 B9 2F 58 BA AA 2F 58 BB 2F 58 | /X /X /X /X /X +13F0 | BC 2F 58 BD 2F 58 BE AA 2F 58 BF 2F 58 C0 2F 58 | /X /X /X /X /X +1400 | C1 2F 58 C2 AA 2F 58 C3 2F 58 C4 2F 58 C5 2F 58 | /X /X /X /X /X +1410 | C6 AA 2F 58 C7 2F 58 C8 2F 58 C9 2F 58 CA AA 2F | /X /X /X /X / +1420 | 58 CB 2F 58 CC 2F 58 CD 2F 58 CE AA 2F 58 CF 2F | X /X /X /X /X / +1430 | 58 D0 2F 58 D1 2F 58 D2 AA 2F 58 D3 2F 58 D4 2F | X /X /X /X /X / +1440 | 58 D5 2F 58 D6 AA 2F 58 D7 2F 58 D8 2F 58 D9 2F | X /X /X /X /X / +1450 | 58 DA AA 2F 58 DB 2F 58 DC 2F 58 DD 2F 58 DE AA | X /X /X /X /X +1460 | 2F 58 DF 2F 58 E0 2F 58 E1 2F 58 E2 AA 2F 58 E3 | /X /X /X /X /X +1470 | 2F 58 E4 2F 58 E5 2F 58 E6 AA 2F 58 E7 2F 58 E8 | /X /X /X /X /X +1480 | 2F 58 E9 2F 58 EA AA 2F 58 EB 2F 58 EC 2F 58 ED | /X /X /X /X /X +1490 | 2F 58 EE AA 2F 58 EF 2F 58 F0 2F 58 F1 2F 58 F2 | /X /X /X /X /X +14A0 | AA 2F 58 F3 2F 58 F4 2F 58 F5 2F 58 F6 AA 2F 58 | /X /X /X /X /X +14B0 | F7 2F 58 F8 2F 58 F9 2F 58 FA AA 2F 58 FB 2F 58 | /X /X /X /X /X +14C0 | FC 2F 58 FD 2F 58 FE 9A 2F 58 FF 2F 58 00 13 74 | /X /X /X /X t +14D0 | 08 73 C8 02 AA 73 C8 03 73 C8 04 73 C8 05 73 C8 | s s s s s +14E0 | 06 AA 73 C8 07 73 C8 08 73 C8 09 73 C8 0A AA 73 | s s s s s +14F0 | C8 0B 73 C8 0C 73 C8 0D 73 C8 0E AA 73 C8 0F 73 | s s s s s +1500 | C8 10 73 C8 11 73 C8 12 AA 73 C8 13 73 C8 14 73 | s s s s s +1510 | C8 15 73 C8 16 AA 73 C8 17 73 C8 18 73 C8 19 73 | s s s s s +1520 | C8 1A AA 73 C8 1B 73 C8 1C 73 C8 1D 73 C8 1E AA | s s s s +1530 | 73 C8 1F 73 C8 20 73 C8 21 73 C8 22 AA 73 C8 23 | s s s !s " s # +1540 | 73 C8 24 73 C8 25 73 C8 26 AA 73 C8 27 73 C8 28 | s $s %s & s 's ( +1550 | 73 C8 29 73 C8 2A AA 73 C8 2B 73 C8 2C 73 C8 2D | s )s * s +s ,s - +1560 | 73 C8 2E AA 73 C8 2F 73 C8 30 73 C8 31 73 C8 32 | s . s /s 0s 1s 2 +1570 | AA 73 C8 33 73 C8 34 73 C8 35 73 C8 36 AA 73 C8 | s 3s 4s 5s 6 s +1580 | 37 73 C8 38 73 C8 39 73 C8 3A AA 73 C8 3B 73 C8 | 7s 8s 9s : s ;s +1590 | 3C 73 C8 3D 73 C8 3E AA 73 C8 3F 73 C8 40 73 C8 | s ?s @s +15A0 | 41 73 C8 42 AA 73 C8 43 73 C8 44 73 C8 45 73 C8 | As B s Cs Ds Es +15B0 | 46 AA 73 C8 47 73 C8 48 73 C8 49 73 C8 4A AA 73 | F s Gs Hs Is J s +15C0 | C8 4B 73 C8 4C 73 C8 4D 73 C8 4E AA 73 C8 4F 73 | Ks Ls Ms N s Os +15D0 | C8 50 73 C8 51 73 C8 52 AA 73 C8 53 73 C8 54 73 | Ps Qs R s Ss Ts +15E0 | C8 55 73 C8 56 AA 73 C8 57 73 C8 58 73 C8 59 73 | Us V s Ws Xs Ys +15F0 | C8 5A AA 73 C8 5B 73 C8 5C 73 C8 5D 73 C8 5E AA | Z s [s \s ]s ^ +1600 | 73 C8 5F 73 C8 60 73 C8 61 73 C8 62 AA 73 C8 63 | s _s `s as b s c +1610 | 73 C8 64 73 C8 65 73 C8 66 AA 73 C8 67 3B 18 68 | s ds es f s g; h +1620 | 3B 18 69 3B 18 6A AA 3B 18 6B 3B 18 6C 3B 18 6D | ; i; j ; k; l; m +1630 | 3B 18 6E AA 3B 18 6F 3B 18 70 3B 18 71 3B 18 72 | ; n ; o; p; q; r +1640 | AA 3B 18 73 3B 18 74 3B 18 75 3B 18 76 AA 3B 18 | ; s; t; u; v ; +1650 | 77 3B 18 78 3B 18 79 3B 18 7A AA 3B 18 7B 3B 18 | w; x; y; z ; {; +1660 | 7C 3B 18 7D 3B 18 7E AA 3B 18 7F 3B 18 80 3B 18 | |; }; ~ ; ; ; +1670 | 81 3B 18 82 AA 3B 18 83 3B 18 84 3B 18 85 3B 18 | ; ; ; ; ; +1680 | 86 AA 3B 18 87 3B 18 88 3B 18 89 3B 18 8A AA 3B | ; ; ; ; ; +1690 | 18 8B 3B 18 8C 3B 18 8D 3B 18 8E AA 3B 18 8F 3B | ; ; ; ; ; +16A0 | 18 90 3B 18 91 3B 18 92 AA 3B 18 93 3B 18 94 3B | ; ; ; ; ; +16B0 | 18 95 3B 18 96 AA 3B 18 97 3B 18 98 3B 18 99 3B | ; ; ; ; ; +16C0 | 18 9A AA 3B 18 9B 3B 18 9C 3B 18 9D 3B 18 9E AA | ; ; ; ; +16D0 | 3B 18 9F 3B 18 A0 3B 18 A1 3B 18 A2 AA 3B 18 A3 | ; ; ; ; ; +16E0 | 3B 18 A4 3B 18 A5 3B 18 A6 AA 3B 18 A7 3B 18 A8 | ; ; ; ; ; +16F0 | 3B 18 A9 3B 18 AA AA 3B 18 AB 3B 18 AC 3B 18 AD | ; ; ; ; ; +1700 | 3B 18 AE AA 3B 18 AF 3B 18 B0 3B 18 B1 3B 18 B2 | ; ; ; ; ; +1710 | AA 3B 18 B3 3B 18 B4 3B 18 B5 3B 18 B6 AA 3B 18 | ; ; ; ; ; +1720 | B7 3B 18 B8 3B 18 B9 3B 18 BA AA 3B 18 BB 3B 18 | ; ; ; ; ; +1730 | BC 3B 18 BD 3B 18 BE AA 3B 18 BF 3B 18 C0 3B 18 | ; ; ; ; ; +1740 | C1 3B 18 C2 AA 3B 18 C3 3B 18 C4 3B 18 C5 3B 18 | ; ; ; ; ; +1750 | C6 AA 3B 18 C7 3B 18 C8 3B 18 C9 3B 18 CA AA 3B | ; ; ; ; ; +1760 | 18 CB 3B 18 CC 3B 18 CD 3B 18 CE AA 3B 18 CF 3B | ; ; ; ; ; +1770 | 18 D0 3B 18 D1 3B 18 D2 AA 3B 18 D3 3B 18 D4 3B | ; ; ; ; ; +1780 | 18 D5 3B 18 D6 AA 3B 18 D7 3B 18 D8 3B 18 D9 3B | ; ; ; ; ; +1790 | 18 DA AA 3B 18 DB 3B 18 DC 3B 18 DD 3B 18 DE AA | ; ; ; ; +17A0 | 3B 18 DF 3B 18 E0 3B 18 E1 3B 18 E2 AA 3B 18 E3 | ; ; ; ; ; +17B0 | 3B 18 E4 3B 18 E5 3B 18 E6 AA 3B 18 E7 3B 18 E8 | ; ; ; ; ; +17C0 | 3B 18 E9 3B 18 EA AA 3B 18 EB 3B 18 EC 3B 18 ED | ; ; ; ; ; +17D0 | 3B 18 EE AA 3B 18 EF 3B 18 F0 3B 18 F1 3B 18 F2 | ; ; ; ; ; +17E0 | AA 3B 18 F3 3B 18 F4 3B 18 F5 3B 18 F6 AA 3B 18 | ; ; ; ; ; +17F0 | F7 3B 18 F8 3B 18 F9 3B 18 FA AA 3B 18 FB 3B 18 | ; ; ; ; ; +1800 | FC 3B 18 FD 3B 18 FE 9A 3B 18 FF 3B 18 00 14 74 | ; ; ; ; t +1810 | C8 73 88 02 AA 73 88 03 73 88 04 73 88 05 73 88 | s s s s s +1820 | 06 AA 73 88 07 73 88 08 73 88 09 73 88 0A AA 73 | s s s s s +1830 | 88 0B 73 88 0C 73 88 0D 73 88 0E AA 73 88 0F 73 | s s s s s +1840 | 88 10 73 88 11 73 88 12 AA 73 88 13 73 88 14 73 | s s s s s +1850 | 88 15 73 88 16 AA 73 88 17 73 88 18 73 88 19 73 | s s s s s +1860 | 88 1A AA 73 88 1B 73 88 1C 73 88 1D 73 88 1E AA | s s s s +1870 | 73 88 1F 73 88 20 73 88 21 73 88 22 AA 73 88 23 | s s s !s " s # +1880 | 73 88 24 73 88 25 73 88 26 AA 73 88 27 73 88 28 | s $s %s & s 's ( +1890 | 73 88 29 73 88 2A AA 73 88 2B 73 88 2C 73 88 2D | s )s * s +s ,s - +18A0 | 73 88 2E AA 73 88 2F 73 88 30 73 88 31 73 88 32 | s . s /s 0s 1s 2 +18B0 | AA 73 88 33 73 88 34 73 88 35 73 88 36 AA 73 88 | s 3s 4s 5s 6 s +18C0 | 37 73 88 38 73 88 39 73 88 3A AA 73 88 3B 73 88 | 7s 8s 9s : s ;s +18D0 | 3C 73 88 3D 73 88 3E AA 73 88 3F 73 88 40 73 88 | s ?s @s +18E0 | 41 73 88 42 AA 73 88 43 73 88 44 73 88 45 73 88 | As B s Cs Ds Es +18F0 | 46 AA 73 88 47 73 88 48 73 88 49 73 88 4A AA 73 | F s Gs Hs Is J s +1900 | 88 4B 73 88 4C 73 88 4D 73 88 4E AA 73 88 4F 73 | Ks Ls Ms N s Os +1910 | 88 50 73 88 51 73 88 52 AA 73 88 53 73 88 54 73 | Ps Qs R s Ss Ts +1920 | 88 55 73 88 56 AA 73 88 57 73 88 58 73 88 59 73 | Us V s Ws Xs Ys +1930 | 88 5A AA 73 88 5B 73 88 5C 73 88 5D 73 88 5E AA | Z s [s \s ]s ^ +1940 | 73 88 5F 73 88 60 73 88 61 73 88 62 AA 73 88 63 | s _s `s as b s c +1950 | 73 88 64 73 88 65 73 88 66 AA 73 88 67 73 88 68 | s ds es f s gs h +1960 | 47 D8 69 47 D8 6A AA 47 D8 6B 47 D8 6C 47 D8 6D | G iG j G kG lG m +1970 | 47 D8 6E AA 47 D8 6F 47 D8 70 47 D8 71 47 D8 72 | G n G oG pG qG r +1980 | AA 47 D8 73 47 D8 74 47 D8 75 47 D8 76 AA 47 D8 | G sG tG uG v G +1990 | 77 47 D8 78 47 D8 79 47 D8 7A AA 47 D8 7B 47 D8 | wG xG yG z G {G +19A0 | 7C 47 D8 7D 47 D8 7E AA 47 D8 7F 47 D8 80 47 D8 | |G }G ~ G G G +19B0 | 81 47 D8 82 AA 47 D8 83 47 D8 84 47 D8 85 47 D8 | G G G G G +19C0 | 86 AA 47 D8 87 47 D8 88 47 D8 89 47 D8 8A AA 47 | G G G G G +19D0 | D8 8B 47 D8 8C 47 D8 8D 47 D8 8E AA 47 D8 8F 47 | G G G G G +19E0 | D8 90 47 D8 91 47 D8 92 AA 47 D8 93 47 D8 94 47 | G G G G G +19F0 | D8 95 47 D8 96 AA 47 D8 97 47 D8 98 47 D8 99 47 | G G G G G +1A00 | D8 9A AA 47 D8 9B 47 D8 9C 47 D8 9D 47 D8 9E AA | G G G G +1A10 | 47 D8 9F 47 D8 A0 47 D8 A1 47 D8 A2 AA 47 D8 A3 | G G G G G +1A20 | 47 D8 A4 47 D8 A5 47 D8 A6 AA 47 D8 A7 47 D8 A8 | G G G G G +1A30 | 47 D8 A9 47 D8 AA AA 47 D8 AB 47 D8 AC 47 D8 AD | G G G G G +1A40 | 47 D8 AE AA 47 D8 AF 47 D8 B0 47 D8 B1 47 D8 B2 | G G G G G +1A50 | AA 47 D8 B3 47 D8 B4 47 D8 B5 47 D8 B6 AA 47 D8 | G G G G G +1A60 | B7 47 D8 B8 47 D8 B9 47 D8 BA AA 47 D8 BB 47 D8 | G G G G G +1A70 | BC 47 D8 BD 47 D8 BE AA 47 D8 BF 47 D8 C0 47 D8 | G G G G G +1A80 | C1 47 D8 C2 AA 47 D8 C3 47 D8 C4 47 D8 C5 47 D8 | G G G G G +1A90 | C6 AA 47 D8 C7 47 D8 C8 47 D8 C9 47 D8 CA AA 47 | G G G G G +1AA0 | D8 CB 47 D8 CC 47 D8 CD 47 D8 CE AA 47 D8 CF 47 | G G G G G +1AB0 | D8 D0 47 D8 D1 47 D8 D2 AA 47 D8 D3 47 D8 D4 47 | G G G G G +1AC0 | D8 D5 47 D8 D6 AA 47 D8 D7 47 D8 D8 47 D8 D9 47 | G G G G G +1AD0 | D8 DA AA 47 D8 DB 47 D8 DC 47 D8 DD 47 D8 DE AA | G G G G +1AE0 | 47 D8 DF 47 D8 E0 47 D8 E1 47 D8 E2 AA 47 D8 E3 | G G G G G +1AF0 | 47 D8 E4 47 D8 E5 47 D8 E6 AA 47 D8 E7 47 D8 E8 | G G G G G +1B00 | 47 D8 E9 47 D8 EA AA 47 D8 EB 47 D8 EC 47 D8 ED | G G G G G +1B10 | 47 D8 EE AA 47 D8 EF 47 D8 F0 47 D8 F1 47 D8 F2 | G G G G G +1B20 | AA 47 D8 F3 47 D8 F4 47 D8 F5 47 D8 F6 AA 47 D8 | G G G G G +1B30 | F7 47 D8 F8 47 D8 F9 47 D8 FA AA 47 D8 FB 47 D8 | G G G G G +1B40 | FC 47 D8 FD 47 D8 FE 9A 47 D8 FF 47 D8 00 15 74 | G G G G t +1B50 | 88 73 48 02 AA 73 48 03 73 48 04 73 48 05 73 48 | sH sH sH sH sH +1B60 | 06 AA 73 48 07 73 48 08 73 48 09 73 48 0A AA 73 | sH sH sH sH s +1B70 | 48 0B 73 48 0C 73 48 0D 73 48 0E AA 73 48 0F 73 | H sH sH sH sH s +1B80 | 48 10 73 48 11 73 48 12 AA 73 48 13 73 48 14 73 | H sH sH sH sH s +1B90 | 48 15 73 48 16 AA 73 48 17 73 48 18 73 48 19 73 | H sH sH sH sH s +1BA0 | 48 1A AA 73 48 1B 73 48 1C 73 48 1D 73 48 1E AA | H sH sH sH sH +1BB0 | 73 48 1F 73 48 20 73 48 21 73 48 22 AA 73 48 23 | sH sH sH!sH" sH# +1BC0 | 73 48 24 73 48 25 73 48 26 AA 73 48 27 73 48 28 | sH$sH%sH& sH'sH( +1BD0 | 73 48 29 73 48 2A AA 73 48 2B 73 48 2C 73 48 2D | sH)sH* sH+sH,sH- +1BE0 | 73 48 2E AA 73 48 2F 73 48 30 73 48 31 73 48 32 | sH. sH/sH0sH1sH2 +1BF0 | AA 73 48 33 73 48 34 73 48 35 73 48 36 AA 73 48 | sH3sH4sH5sH6 sH +1C00 | 37 73 48 38 73 48 39 73 48 3A AA 73 48 3B 73 48 | 7sH8sH9sH: sH;sH +1C10 | 3C 73 48 3D 73 48 3E AA 73 48 3F 73 48 40 73 48 | sH?sH@sH +1C20 | 41 73 48 42 AA 73 48 43 73 48 44 73 48 45 73 48 | AsHB sHCsHDsHEsH +1C30 | 46 AA 73 48 47 73 48 48 73 48 49 73 48 4A AA 73 | F sHGsHHsHIsHJ s +1C40 | 48 4B 73 48 4C 73 48 4D 73 48 4E AA 73 48 4F 73 | HKsHLsHMsHN sHOs +1C50 | 48 50 73 48 51 73 48 52 AA 73 48 53 73 48 54 73 | HPsHQsHR sHSsHTs +1C60 | 48 55 73 48 56 AA 73 48 57 73 48 58 73 48 59 73 | HUsHV sHWsHXsHYs +1C70 | 48 5A AA 73 48 5B 73 48 5C 73 48 5D 73 48 5E AA | HZ sH[sH\sH]sH^ +1C80 | 73 48 5F 73 48 60 73 48 61 73 48 62 AA 73 48 63 | sH_sH`sHasHb sHc +1C90 | 73 48 64 73 48 65 73 48 66 AA 73 48 67 73 48 68 | sHdsHesHf sHgsHh +1CA0 | 73 48 69 53 98 6A AA 53 98 6B 53 98 6C 53 98 6D | sHiS j S kS lS m +1CB0 | 53 98 6E AA 53 98 6F 53 98 70 53 98 71 53 98 72 | S n S oS pS qS r +1CC0 | AA 53 98 73 53 98 74 53 98 75 53 98 76 AA 53 98 | S sS tS uS v S +1CD0 | 77 53 98 78 53 98 79 53 98 7A AA 53 98 7B 53 98 | wS xS yS z S {S +1CE0 | 7C 53 98 7D 53 98 7E AA 53 98 7F 53 98 80 53 98 | |S }S ~ S S S +1CF0 | 81 53 98 82 AA 53 98 83 53 98 84 53 98 85 53 98 | S S S S S +1D00 | 86 AA 53 98 87 53 98 88 53 98 89 53 98 8A AA 53 | S S S S S +1D10 | 98 8B 53 98 8C 53 98 8D 53 98 8E AA 53 98 8F 53 | S S S S S +1D20 | 98 90 53 98 91 53 98 92 AA 53 98 93 53 98 94 53 | S S S S S +1D30 | 98 95 53 98 96 AA 53 98 97 53 98 98 53 98 99 53 | S S S S S +1D40 | 98 9A AA 53 98 9B 53 98 9C 53 98 9D 53 98 9E AA | S S S S +1D50 | 53 98 9F 53 98 A0 53 98 A1 53 98 A2 AA 53 98 A3 | S S S S S +1D60 | 53 98 A4 53 98 A5 53 98 A6 AA 53 98 A7 53 98 A8 | S S S S S +1D70 | 53 98 A9 53 98 AA AA 53 98 AB 53 98 AC 53 98 AD | S S S S S +1D80 | 53 98 AE AA 53 98 AF 53 98 B0 53 98 B1 53 98 B2 | S S S S S +1D90 | AA 53 98 B3 53 98 B4 53 98 B5 53 98 B6 AA 53 98 | S S S S S +1DA0 | B7 53 98 B8 53 98 B9 53 98 BA AA 53 98 BB 53 98 | S S S S S +1DB0 | BC 53 98 BD 53 98 BE AA 53 98 BF 53 98 C0 53 98 | S S S S S +1DC0 | C1 53 98 C2 AA 53 98 C3 53 98 C4 53 98 C5 53 98 | S S S S S +1DD0 | C6 AA 53 98 C7 53 98 C8 53 98 C9 53 98 CA AA 53 | S S S S S +1DE0 | 98 CB 53 98 CC 53 98 CD 53 98 CE 02 53 98 CF 53 | S S S S S +1DF0 | 94 00 17 00 | +I 91446 2023-12-31 21:06:48 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 F4 1D 5C 00 00 00 F0 1D 00 00 40 6E 00 00 | m \ @n +0010 | 56 ED F1 A0 0C E8 F7 A1 F3 F8 A2 F3 F8 55 A3 F3 | V U +0020 | F8 A4 F3 F8 A5 F3 F8 A6 F3 F8 55 A7 F3 F8 A8 F3 | U +0030 | F8 A9 F3 F8 AA F3 F8 55 AB F3 F8 AC F3 F8 AD F3 | U +0040 | F8 AE F3 F8 55 AF F3 F8 B0 F3 F8 B1 F3 F8 B2 F3 | U +0050 | F8 55 B3 F3 F8 B4 F3 F8 B5 F3 F8 B6 F3 F8 55 B7 | U U +0060 | F3 F8 B8 F3 F8 B9 F3 F8 BA F3 F8 55 BB F3 F8 BC | U +0070 | F3 F8 BD F3 F8 BE F3 F8 55 BF F3 F8 C0 F3 F8 C1 | U +0080 | F3 F8 C2 F3 F8 55 C3 F3 F8 C4 F3 F8 C5 F3 F8 C6 | U +0090 | F3 F8 55 C7 F3 F8 C8 F3 F8 C9 F3 F8 CA F3 F8 55 | U U +00A0 | CB F3 F8 CC F3 F8 CD F3 F8 CE F3 F8 55 CF F3 F8 | U +00B0 | D0 F3 F8 D1 F3 F8 D2 F3 F8 55 D3 F3 F8 D4 F3 F8 | U +00C0 | D5 F3 F8 D6 F3 F8 55 D7 F3 F8 D8 F3 F8 D9 F3 F8 | U +00D0 | DA F3 F8 55 DB F3 F8 DC F3 F8 DD F3 F8 DE F3 F8 | U +00E0 | 55 DF F3 F8 E0 F3 F8 E1 F3 F8 E2 F3 F8 55 E3 F3 | U U +00F0 | F8 E4 F3 F8 E5 F3 F8 E6 F3 F8 55 E7 F3 F8 E8 F3 | U +0100 | F8 E9 F3 F8 EA F3 F8 55 EB F3 F8 EC F3 F8 ED F3 | U +0110 | F8 EE F3 F8 55 EF F3 F8 F0 F3 F8 F1 F3 F8 F2 F3 | U +0120 | F8 55 F3 F3 F8 F4 F3 F8 F5 F3 F8 F6 F3 F8 55 F7 | U U +0130 | F3 F8 F8 F3 F8 F9 F3 F8 FA F3 F8 55 FB F3 F8 FC | U +0140 | F3 F8 FD F3 F8 FE F3 F8 AD FF F3 F8 00 0D E8 F7 | +0150 | 01 73 48 02 AA 73 48 03 73 48 04 73 48 05 73 48 | sH sH sH sH sH +0160 | 06 AA 73 48 07 73 48 08 73 48 09 73 48 0A AA 73 | sH sH sH sH s +0170 | 48 0B 73 48 0C 73 48 0D 73 48 0E AA 73 48 0F 73 | H sH sH sH sH s +0180 | 48 10 73 48 11 73 48 12 AA 73 48 13 73 48 14 73 | H sH sH sH sH s +0190 | 48 15 73 48 16 AA 73 48 17 73 48 18 73 48 19 73 | H sH sH sH sH s +01A0 | 48 1A AA 73 48 1B 73 48 1C 73 48 1D 73 48 1E AA | H sH sH sH sH +01B0 | 73 48 1F 73 48 20 73 48 21 73 48 22 AA 73 48 23 | sH sH sH!sH" sH# +01C0 | 73 48 24 73 48 25 73 48 26 AA 73 48 27 73 48 28 | sH$sH%sH& sH'sH( +01D0 | 73 48 29 73 48 2A AA 73 48 2B 73 48 2C 73 48 2D | sH)sH* sH+sH,sH- +01E0 | 73 48 2E AA 73 48 2F 73 48 30 73 48 31 73 48 32 | sH. sH/sH0sH1sH2 +01F0 | AA 73 48 33 73 48 34 73 48 35 73 48 36 AA 73 48 | sH3sH4sH5sH6 sH +0200 | 37 73 48 38 73 48 39 73 48 3A AA 73 48 3B 73 48 | 7sH8sH9sH: sH;sH +0210 | 3C 73 48 3D 73 48 3E AA 73 48 3F 73 48 40 73 48 | sH?sH@sH +0220 | 41 73 48 42 AA 73 48 43 73 48 44 73 48 45 73 48 | AsHB sHCsHDsHEsH +0230 | 46 AA 73 48 47 73 48 48 73 48 49 73 48 4A AA 73 | F sHGsHHsHIsHJ s +0240 | 48 4B 73 48 4C 73 48 4D 73 48 4E AA 73 48 4F 73 | HKsHLsHMsHN sHOs +0250 | 48 50 73 48 51 73 48 52 AA 73 48 53 73 48 54 73 | HPsHQsHR sHSsHTs +0260 | 48 55 73 48 56 AA 73 48 57 73 48 58 73 48 59 73 | HUsHV sHWsHXsHYs +0270 | 48 5A AA 73 48 5B 73 48 5C 73 48 5D 73 48 5E AA | HZ sH[sH\sH]sH^ +0280 | 73 48 5F 73 48 60 73 48 61 73 48 62 AA 73 48 63 | sH_sH`sHasHb sHc +0290 | 73 48 64 73 48 65 73 48 66 AA 73 48 67 73 48 68 | sHdsHesHf sHgsHh +02A0 | 73 48 69 73 48 6A AA 73 48 6B 73 48 6C 73 48 6D | sHisHj sHksHlsHm +02B0 | 73 48 6E AA 73 48 6F 73 48 70 73 48 71 73 48 72 | sHn sHosHpsHqsHr +02C0 | AA 73 48 73 73 48 74 73 48 75 73 48 76 AA 73 48 | sHssHtsHusHv sH +02D0 | 77 73 48 78 73 48 79 73 48 7A AA 73 48 7B 73 48 | wsHxsHysHz sH{sH +02E0 | 7C 73 48 7D 73 48 7E AA 73 48 7F 73 48 80 73 48 | |sH}sH~ sH sH sH +02F0 | 81 73 48 82 AA 73 48 83 73 48 84 73 48 85 73 48 | sH sH sH sH sH +0300 | 86 AA 73 48 87 73 48 88 73 48 89 73 48 8A AA 73 | sH sH sH sH s +0310 | 48 8B 73 48 8C 73 48 8D 73 48 8E AA 73 48 8F 73 | H sH sH sH sH s +0320 | 48 90 73 48 91 73 48 92 AA 73 48 93 73 48 94 73 | H sH sH sH sH s +0330 | 48 95 73 48 96 AA 73 48 97 73 48 98 73 48 99 73 | H sH sH sH sH s +0340 | 48 9A AA 73 48 9B 73 48 9C 73 48 9D 73 48 9E AA | H sH sH sH sH +0350 | 73 48 9F 73 48 A0 73 48 A1 73 48 A2 AA 73 48 A3 | sH sH sH sH sH +0360 | 73 48 A4 73 48 A5 73 48 A6 AA 73 48 A7 73 48 A8 | sH sH sH sH sH +0370 | 73 48 A9 73 48 AA AA 73 48 AB 73 48 AC 73 48 AD | sH sH sH sH sH +0380 | 73 48 AE AA 73 48 AF 73 48 B0 73 48 B1 73 48 B2 | sH sH sH sH sH +0390 | AA 73 48 B3 73 48 B4 73 48 B5 73 48 B6 AA 73 48 | sH sH sH sH sH +03A0 | B7 73 48 B8 73 48 B9 73 48 BA AA 73 48 BB 73 48 | sH sH sH sH sH +03B0 | BC 73 48 BD 73 48 BE AA 73 48 BF 73 48 C0 73 48 | sH sH sH sH sH +03C0 | C1 73 48 C2 AA 73 48 C3 73 48 C4 73 48 C5 73 48 | sH sH sH sH sH +03D0 | C6 AA 73 48 C7 73 48 C8 73 48 C9 73 48 CA AA 73 | sH sH sH sH s +03E0 | 48 CB 73 48 CC 73 48 CD 73 48 CE AA 73 48 CF 73 | H sH sH sH sH s +03F0 | 48 D0 73 48 D1 73 48 D2 AA 73 48 D3 73 48 D4 73 | H sH sH sH sH s +0400 | 48 D5 73 48 D6 AA 73 48 D7 73 48 D8 73 48 D9 73 | H sH sH sH sH s +0410 | 48 DA AA 73 48 DB 73 48 DC 73 48 DD 73 48 DE AA | H sH sH sH sH +0420 | 73 48 DF 73 48 E0 73 48 E1 73 48 E2 AA 73 48 E3 | sH sH sH sH sH +0430 | 73 48 E4 73 48 E5 73 48 E6 AA 73 48 E7 73 48 E8 | sH sH sH sH sH +0440 | 73 48 E9 73 48 EA AA 73 48 EB 73 48 EC 73 48 ED | sH sH sH sH sH +0450 | 73 48 EE AA 73 48 EF 73 48 F0 73 48 F1 73 48 F2 | sH sH sH sH sH +0460 | AA 73 48 F3 73 48 F4 73 48 F5 73 48 F6 AA 73 48 | sH sH sH sH sH +0470 | F7 73 48 F8 73 48 F9 73 48 FA AA 73 48 FB 73 48 | sH sH sH sH sH +0480 | FC 73 48 FD 73 48 FE 9A 73 48 FF 73 48 00 0E 74 | sH sH sH sH t +0490 | 48 73 08 02 AA 73 08 03 73 08 04 73 08 05 73 08 | Hs s s s s +04A0 | 06 AA 73 08 07 73 08 08 73 08 09 73 08 0A AA 73 | s s s s s +04B0 | 08 0B 73 08 0C 73 08 0D 73 08 0E AA 73 08 0F 73 | s s s s s +04C0 | 08 10 73 08 11 73 08 12 AA 73 08 13 73 08 14 73 | s s s s s +04D0 | 08 15 73 08 16 AA 73 08 17 73 08 18 73 08 19 73 | s s s s s +04E0 | 08 1A AA 73 08 1B 73 08 1C 73 08 1D 73 08 1E AA | s s s s +04F0 | 73 08 1F 73 08 20 73 08 21 73 08 22 AA 73 08 23 | s s s !s " s # +0500 | 73 08 24 73 08 25 73 08 26 AA 73 08 27 73 08 28 | s $s %s & s 's ( +0510 | 73 08 29 73 08 2A AA 73 08 2B 73 08 2C 73 08 2D | s )s * s +s ,s - +0520 | 73 08 2E AA 73 08 2F 73 08 30 73 08 31 73 08 32 | s . s /s 0s 1s 2 +0530 | AA 73 08 33 73 08 34 73 08 35 73 08 36 AA 73 08 | s 3s 4s 5s 6 s +0540 | 37 73 08 38 73 08 39 73 08 3A AA 73 08 3B 73 08 | 7s 8s 9s : s ;s +0550 | 3C 73 08 3D 73 08 3E AA 73 08 3F 73 08 40 73 08 | s ?s @s +0560 | 41 73 08 42 AA 73 08 43 73 08 44 73 08 45 73 08 | As B s Cs Ds Es +0570 | 46 AA 73 08 47 73 08 48 73 08 49 73 08 4A AA 73 | F s Gs Hs Is J s +0580 | 08 4B 73 08 4C 73 08 4D 73 08 4E AA 73 08 4F 73 | Ks Ls Ms N s Os +0590 | 08 50 73 08 51 73 08 52 AA 73 08 53 73 08 54 73 | Ps Qs R s Ss Ts +05A0 | 08 55 73 08 56 AA 73 08 57 73 08 58 73 08 59 73 | Us V s Ws Xs Ys +05B0 | 08 5A AA 73 08 5B 73 08 5C 73 08 5D 73 08 5E AA | Z s [s \s ]s ^ +05C0 | 73 08 5F 73 08 60 73 08 61 73 08 62 AA FF 48 63 | s _s `s as b Hc +05D0 | FF 48 64 FF 48 65 FF 48 66 AA FF 48 67 FF 48 68 | Hd He Hf Hg Hh +05E0 | FF 48 69 FF 48 6A AA FF 48 6B FF 48 6C FF 48 6D | Hi Hj Hk Hl Hm +05F0 | FF 48 6E AA FF 48 6F FF 48 70 FF 48 71 FF 48 72 | Hn Ho Hp Hq Hr +0600 | AA FF 48 73 FF 48 74 FF 48 75 FF 48 76 AA FF 48 | Hs Ht Hu Hv H +0610 | 77 FF 48 78 FF 48 79 FF 48 7A AA FF 48 7B FF 48 | w Hx Hy Hz H{ H +0620 | 7C FF 48 7D FF 48 7E AA FF 48 7F FF 48 80 FF 48 | | H} H~ H H H +0630 | 81 FF 48 82 AA FF 48 83 FF 48 84 FF 48 85 FF 48 | H H H H H +0640 | 86 AA FF 48 87 FF 48 88 FF 48 89 FF 48 8A AA FF | H H H H +0650 | 48 8B FF 48 8C FF 48 8D FF 48 8E AA FF 48 8F FF | H H H H H +0660 | 48 90 FF 48 91 FF 48 92 AA FF 48 93 FF 48 94 FF | H H H H H +0670 | 48 95 FF 48 96 AA FF 48 97 FF 48 98 FF 48 99 FF | H H H H H +0680 | 48 9A AA FF 48 9B FF 48 9C FF 48 9D FF 48 9E AA | H H H H H +0690 | FF 48 9F FF 48 A0 FF 48 A1 FF 48 A2 AA FF 48 A3 | H H H H H +06A0 | FF 48 A4 FF 48 A5 FF 48 A6 AA FF 48 A7 FF 48 A8 | H H H H H +06B0 | FF 48 A9 FF 48 AA AA FF 48 AB FF 48 AC FF 48 AD | H H H H H +06C0 | FF 48 AE AA FF 48 AF FF 48 B0 FF 48 B1 FF 48 B2 | H H H H H +06D0 | AA FF 48 B3 FF 48 B4 FF 48 B5 FF 48 B6 AA FF 48 | H H H H H +06E0 | B7 FF 48 B8 FF 48 B9 FF 48 BA AA FF 48 BB FF 48 | H H H H H +06F0 | BC FF 48 BD FF 48 BE AA FF 48 BF FF 48 C0 FF 48 | H H H H H +0700 | C1 FF 48 C2 AA FF 48 C3 FF 48 C4 FF 48 C5 FF 48 | H H H H H +0710 | C6 AA FF 48 C7 FF 48 C8 FF 48 C9 FF 48 CA AA FF | H H H H +0720 | 48 CB FF 48 CC FF 48 CD FF 48 CE AA FF 48 CF FF | H H H H H +0730 | 48 D0 FF 48 D1 FF 48 D2 AA FF 48 D3 FF 48 D4 FF | H H H H H +0740 | 48 D5 FF 48 D6 AA FF 48 D7 FF 48 D8 FF 48 D9 FF | H H H H H +0750 | 48 DA AA FF 48 DB FF 48 DC FF 48 DD FF 48 DE AA | H H H H H +0760 | FF 48 DF FF 48 E0 FF 48 E1 FF 48 E2 AA FF 48 E3 | H H H H H +0770 | FF 48 E4 FF 48 E5 FF 48 E6 AA FF 48 E7 FF 48 E8 | H H H H H +0780 | FF 48 E9 FF 48 EA AA FF 48 EB FF 48 EC FF 48 ED | H H H H H +0790 | FF 48 EE AA FF 48 EF FF 48 F0 FF 48 F1 FF 48 F2 | H H H H H +07A0 | AA FF 48 F3 FF 48 F4 FF 48 F5 FF 48 F6 AA FF 48 | H H H H H +07B0 | F7 FF 48 F8 FF 48 F9 FF 48 FA AA FF 48 FB FF 48 | H H H H H +07C0 | FC FF 48 FD FF 48 FE 9A FF 48 FF FF 48 00 0F 74 | H H H H t +07D0 | 08 73 C8 02 AA 73 C8 03 73 C8 04 73 C8 05 73 C8 | s s s s s +07E0 | 06 AA 73 C8 07 73 C8 08 73 C8 09 73 C8 0A AA 73 | s s s s s +07F0 | C8 0B 73 C8 0C 73 C8 0D 73 C8 0E AA 73 C8 0F 73 | s s s s s +0800 | C8 10 73 C8 11 73 C8 12 AA 73 C8 13 73 C8 14 73 | s s s s s +0810 | C8 15 73 C8 16 AA 73 C8 17 73 C8 18 73 C8 19 73 | s s s s s +0820 | C8 1A AA 73 C8 1B 73 C8 1C 73 C8 1D 73 C8 1E AA | s s s s +0830 | 73 C8 1F 73 C8 20 73 C8 21 73 C8 22 AA 73 C8 23 | s s s !s " s # +0840 | 73 C8 24 73 C8 25 73 C8 26 AA 73 C8 27 73 C8 28 | s $s %s & s 's ( +0850 | 73 C8 29 73 C8 2A AA 73 C8 2B 73 C8 2C 73 C8 2D | s )s * s +s ,s - +0860 | 73 C8 2E AA 73 C8 2F 73 C8 30 73 C8 31 73 C8 32 | s . s /s 0s 1s 2 +0870 | AA 73 C8 33 73 C8 34 73 C8 35 73 C8 36 AA 73 C8 | s 3s 4s 5s 6 s +0880 | 37 73 C8 38 73 C8 39 73 C8 3A AA 73 C8 3B 73 C8 | 7s 8s 9s : s ;s +0890 | 3C 73 C8 3D 73 C8 3E AA 73 C8 3F 73 C8 40 73 C8 | s ?s @s +08A0 | 41 73 C8 42 AA 73 C8 43 73 C8 44 73 C8 45 73 C8 | As B s Cs Ds Es +08B0 | 46 AA 73 C8 47 73 C8 48 73 C8 49 73 C8 4A AA 73 | F s Gs Hs Is J s +08C0 | C8 4B 73 C8 4C 73 C8 4D 73 C8 4E AA 73 C8 4F 73 | Ks Ls Ms N s Os +08D0 | C8 50 73 C8 51 73 C8 52 AA 73 C8 53 73 C8 54 73 | Ps Qs R s Ss Ts +08E0 | C8 55 73 C8 56 AA 73 C8 57 73 C8 58 73 C8 59 73 | Us V s Ws Xs Ys +08F0 | C8 5A AA 73 C8 5B 73 C8 5C 73 C8 5D 73 C8 5E AA | Z s [s \s ]s ^ +0900 | 73 C8 5F 73 C8 60 73 C8 61 73 C8 62 AA 73 C8 63 | s _s `s as b s c +0910 | 0B 18 64 0B 18 65 0B 18 66 AA 0B 18 67 0B 18 68 | d e f g h +0920 | 0B 18 69 0B 18 6A AA 0B 18 6B 0B 18 6C 0B 18 6D | i j k l m +0930 | 0B 18 6E AA 0B 18 6F 0B 18 70 0B 18 71 0B 18 72 | n o p q r +0940 | AA 0B 18 73 0B 18 74 0B 18 75 0B 18 76 AA 0B 18 | s t u v +0950 | 77 0B 18 78 0B 18 79 0B 18 7A AA 0B 18 7B 0B 18 | w x y z { +0960 | 7C 0B 18 7D 0B 18 7E AA 0B 18 7F 0B 18 80 0B 18 | | } ~ +0970 | 81 0B 18 82 AA 0B 18 83 0B 18 84 0B 18 85 0B 18 | +0980 | 86 AA 0B 18 87 0B 18 88 0B 18 89 0B 18 8A AA 0B | +0990 | 18 8B 0B 18 8C 0B 18 8D 0B 18 8E AA 0B 18 8F 0B | +09A0 | 18 90 0B 18 91 0B 18 92 AA 0B 18 93 0B 18 94 0B | +09B0 | 18 95 0B 18 96 AA 0B 18 97 0B 18 98 0B 18 99 0B | +09C0 | 18 9A AA 0B 18 9B 0B 18 9C 0B 18 9D 0B 18 9E AA | +09D0 | 0B 18 9F 0B 18 A0 0B 18 A1 0B 18 A2 AA 0B 18 A3 | +09E0 | 0B 18 A4 0B 18 A5 0B 18 A6 AA 0B 18 A7 0B 18 A8 | +09F0 | 0B 18 A9 0B 18 AA AA 0B 18 AB 0B 18 AC 0B 18 AD | +0A00 | 0B 18 AE AA 0B 18 AF 0B 18 B0 0B 18 B1 0B 18 B2 | +0A10 | AA 0B 18 B3 0B 18 B4 0B 18 B5 0B 18 B6 AA 0B 18 | +0A20 | B7 0B 18 B8 0B 18 B9 0B 18 BA AA 0B 18 BB 0B 18 | +0A30 | BC 0B 18 BD 0B 18 BE AA 0B 18 BF 0B 18 C0 0B 18 | +0A40 | C1 0B 18 C2 AA 0B 18 C3 0B 18 C4 0B 18 C5 0B 18 | +0A50 | C6 AA 0B 18 C7 0B 18 C8 0B 18 C9 0B 18 CA AA 0B | +0A60 | 18 CB 0B 18 CC 0B 18 CD 0B 18 CE AA 0B 18 CF 0B | +0A70 | 18 D0 0B 18 D1 0B 18 D2 AA 0B 18 D3 0B 18 D4 0B | +0A80 | 18 D5 0B 18 D6 AA 0B 18 D7 0B 18 D8 0B 18 D9 0B | +0A90 | 18 DA AA 0B 18 DB 0B 18 DC 0B 18 DD 0B 18 DE AA | +0AA0 | 0B 18 DF 0B 18 E0 0B 18 E1 0B 18 E2 AA 0B 18 E3 | +0AB0 | 0B 18 E4 0B 18 E5 0B 18 E6 AA 0B 18 E7 0B 18 E8 | +0AC0 | 0B 18 E9 0B 18 EA AA 0B 18 EB 0B 18 EC 0B 18 ED | +0AD0 | 0B 18 EE AA 0B 18 EF 0B 18 F0 0B 18 F1 0B 18 F2 | +0AE0 | AA 0B 18 F3 0B 18 F4 0B 18 F5 0B 18 F6 AA 0B 18 | +0AF0 | F7 0B 18 F8 0B 18 F9 0B 18 FA AA 0B 18 FB 0B 18 | +0B00 | FC 0B 18 FD 0B 18 FE 9A 0B 18 FF 0B 18 00 10 74 | t +0B10 | C8 73 88 02 AA 73 88 03 73 88 04 73 88 05 73 88 | s s s s s +0B20 | 06 AA 73 88 07 73 88 08 73 88 09 73 88 0A AA 73 | s s s s s +0B30 | 88 0B 73 88 0C 73 88 0D 73 88 0E AA 73 88 0F 73 | s s s s s +0B40 | 88 10 73 88 11 73 88 12 AA 73 88 13 73 88 14 73 | s s s s s +0B50 | 88 15 73 88 16 AA 73 88 17 73 88 18 73 88 19 73 | s s s s s +0B60 | 88 1A AA 73 88 1B 73 88 1C 73 88 1D 73 88 1E AA | s s s s +0B70 | 73 88 1F 73 88 20 73 88 21 73 88 22 AA 73 88 23 | s s s !s " s # +0B80 | 73 88 24 73 88 25 73 88 26 AA 73 88 27 73 88 28 | s $s %s & s 's ( +0B90 | 73 88 29 73 88 2A AA 73 88 2B 73 88 2C 73 88 2D | s )s * s +s ,s - +0BA0 | 73 88 2E AA 73 88 2F 73 88 30 73 88 31 73 88 32 | s . s /s 0s 1s 2 +0BB0 | AA 73 88 33 73 88 34 73 88 35 73 88 36 AA 73 88 | s 3s 4s 5s 6 s +0BC0 | 37 73 88 38 73 88 39 73 88 3A AA 73 88 3B 73 88 | 7s 8s 9s : s ;s +0BD0 | 3C 73 88 3D 73 88 3E AA 73 88 3F 73 88 40 73 88 | s ?s @s +0BE0 | 41 73 88 42 AA 73 88 43 73 88 44 73 88 45 73 88 | As B s Cs Ds Es +0BF0 | 46 AA 73 88 47 73 88 48 73 88 49 73 88 4A AA 73 | F s Gs Hs Is J s +0C00 | 88 4B 73 88 4C 73 88 4D 73 88 4E AA 73 88 4F 73 | Ks Ls Ms N s Os +0C10 | 88 50 73 88 51 73 88 52 AA 73 88 53 73 88 54 73 | Ps Qs R s Ss Ts +0C20 | 88 55 73 88 56 AA 73 88 57 73 88 58 73 88 59 73 | Us V s Ws Xs Ys +0C30 | 88 5A AA 73 88 5B 73 88 5C 73 88 5D 73 88 5E AA | Z s [s \s ]s ^ +0C40 | 73 88 5F 73 88 60 73 88 61 73 88 62 AA 73 88 63 | s _s `s as b s c +0C50 | 73 88 64 17 D8 65 17 D8 66 AA 17 D8 67 17 D8 68 | s d e f g h +0C60 | 17 D8 69 17 D8 6A AA 17 D8 6B 17 D8 6C 17 D8 6D | i j k l m +0C70 | 17 D8 6E AA 17 D8 6F 17 D8 70 17 D8 71 17 D8 72 | n o p q r +0C80 | AA 17 D8 73 17 D8 74 17 D8 75 17 D8 76 AA 17 D8 | s t u v +0C90 | 77 17 D8 78 17 D8 79 17 D8 7A AA 17 D8 7B 17 D8 | w x y z { +0CA0 | 7C 17 D8 7D 17 D8 7E AA 17 D8 7F 17 D8 80 17 D8 | | } ~ +0CB0 | 81 17 D8 82 AA 17 D8 83 17 D8 84 17 D8 85 17 D8 | +0CC0 | 86 AA 17 D8 87 17 D8 88 17 D8 89 17 D8 8A AA 17 | +0CD0 | D8 8B 17 D8 8C 17 D8 8D 17 D8 8E AA 17 D8 8F 17 | +0CE0 | D8 90 17 D8 91 17 D8 92 AA 17 D8 93 17 D8 94 17 | +0CF0 | D8 95 17 D8 96 AA 17 D8 97 17 D8 98 17 D8 99 17 | +0D00 | D8 9A AA 17 D8 9B 17 D8 9C 17 D8 9D 17 D8 9E AA | +0D10 | 17 D8 9F 17 D8 A0 17 D8 A1 17 D8 A2 AA 17 D8 A3 | +0D20 | 17 D8 A4 17 D8 A5 17 D8 A6 AA 17 D8 A7 17 D8 A8 | +0D30 | 17 D8 A9 17 D8 AA AA 17 D8 AB 17 D8 AC 17 D8 AD | +0D40 | 17 D8 AE AA 17 D8 AF 17 D8 B0 17 D8 B1 17 D8 B2 | +0D50 | AA 17 D8 B3 17 D8 B4 17 D8 B5 17 D8 B6 AA 17 D8 | +0D60 | B7 17 D8 B8 17 D8 B9 17 D8 BA AA 17 D8 BB 17 D8 | +0D70 | BC 17 D8 BD 17 D8 BE AA 17 D8 BF 17 D8 C0 17 D8 | +0D80 | C1 17 D8 C2 AA 17 D8 C3 17 D8 C4 17 D8 C5 17 D8 | +0D90 | C6 AA 17 D8 C7 17 D8 C8 17 D8 C9 17 D8 CA AA 17 | +0DA0 | D8 CB 17 D8 CC 17 D8 CD 17 D8 CE AA 17 D8 CF 17 | +0DB0 | D8 D0 17 D8 D1 17 D8 D2 AA 17 D8 D3 17 D8 D4 17 | +0DC0 | D8 D5 17 D8 D6 AA 17 D8 D7 17 D8 D8 17 D8 D9 17 | +0DD0 | D8 DA AA 17 D8 DB 17 D8 DC 17 D8 DD 17 D8 DE AA | +0DE0 | 17 D8 DF 17 D8 E0 17 D8 E1 17 D8 E2 AA 17 D8 E3 | +0DF0 | 17 D8 E4 17 D8 E5 17 D8 E6 AA 17 D8 E7 17 D8 E8 | +0E00 | 17 D8 E9 17 D8 EA AA 17 D8 EB 17 D8 EC 17 D8 ED | +0E10 | 17 D8 EE AA 17 D8 EF 17 D8 F0 17 D8 F1 17 D8 F2 | +0E20 | AA 17 D8 F3 17 D8 F4 17 D8 F5 17 D8 F6 AA 17 D8 | +0E30 | F7 17 D8 F8 17 D8 F9 17 D8 FA AA 17 D8 FB 17 D8 | +0E40 | FC 17 D8 FD 17 D8 FE 9A 17 D8 FF 17 D8 00 11 74 | t +0E50 | 88 73 48 02 AA 73 48 03 73 48 04 73 48 05 73 48 | sH sH sH sH sH +0E60 | 06 AA 73 48 07 73 48 08 73 48 09 73 48 0A AA 73 | sH sH sH sH s +0E70 | 48 0B 73 48 0C 73 48 0D 73 48 0E AA 73 48 0F 73 | H sH sH sH sH s +0E80 | 48 10 73 48 11 73 48 12 AA 73 48 13 73 48 14 73 | H sH sH sH sH s +0E90 | 48 15 73 48 16 AA 73 48 17 73 48 18 73 48 19 73 | H sH sH sH sH s +0EA0 | 48 1A AA 73 48 1B 73 48 1C 73 48 1D 73 48 1E AA | H sH sH sH sH +0EB0 | 73 48 1F 73 48 20 73 48 21 73 48 22 AA 73 48 23 | sH sH sH!sH" sH# +0EC0 | 73 48 24 73 48 25 73 48 26 AA 73 48 27 73 48 28 | sH$sH%sH& sH'sH( +0ED0 | 73 48 29 73 48 2A AA 73 48 2B 73 48 2C 73 48 2D | sH)sH* sH+sH,sH- +0EE0 | 73 48 2E AA 73 48 2F 73 48 30 73 48 31 73 48 32 | sH. sH/sH0sH1sH2 +0EF0 | AA 73 48 33 73 48 34 73 48 35 73 48 36 AA 73 48 | sH3sH4sH5sH6 sH +0F00 | 37 73 48 38 73 48 39 73 48 3A AA 73 48 3B 73 48 | 7sH8sH9sH: sH;sH +0F10 | 3C 73 48 3D 73 48 3E AA 73 48 3F 73 48 40 73 48 | sH?sH@sH +0F20 | 41 73 48 42 AA 73 48 43 73 48 44 73 48 45 73 48 | AsHB sHCsHDsHEsH +0F30 | 46 AA 73 48 47 73 48 48 73 48 49 73 48 4A AA 73 | F sHGsHHsHIsHJ s +0F40 | 48 4B 73 48 4C 73 48 4D 73 48 4E AA 73 48 4F 73 | HKsHLsHMsHN sHOs +0F50 | 48 50 73 48 51 73 48 52 AA 73 48 53 73 48 54 73 | HPsHQsHR sHSsHTs +0F60 | 48 55 73 48 56 AA 73 48 57 73 48 58 73 48 59 73 | HUsHV sHWsHXsHYs +0F70 | 48 5A AA 73 48 5B 73 48 5C 73 48 5D 73 48 5E AA | HZ sH[sH\sH]sH^ +0F80 | 73 48 5F 73 48 60 73 48 61 73 48 62 AA 73 48 63 | sH_sH`sHasHb sHc +0F90 | 73 48 64 73 48 65 23 98 66 AA 23 98 67 23 98 68 | sHdsHe# f # g# h +0FA0 | 23 98 69 23 98 6A AA 23 98 6B 23 98 6C 23 98 6D | # i# j # k# l# m +0FB0 | 23 98 6E AA 23 98 6F 23 98 70 23 98 71 23 98 72 | # n # o# p# q# r +0FC0 | AA 23 98 73 23 98 74 23 98 75 23 98 76 AA 23 98 | # s# t# u# v # +0FD0 | 77 23 98 78 23 98 79 23 98 7A AA 23 98 7B 23 98 | w# x# y# z # {# +0FE0 | 7C 23 98 7D 23 98 7E AA 23 98 7F 23 98 80 23 98 | |# }# ~ # # # +0FF0 | 81 23 98 82 AA 23 98 83 23 98 84 23 98 85 23 98 | # # # # # +1000 | 86 AA 23 98 87 23 98 88 23 98 89 23 98 8A AA 23 | # # # # # +1010 | 98 8B 23 98 8C 23 98 8D 23 98 8E AA 23 98 8F 23 | # # # # # +1020 | 98 90 23 98 91 23 98 92 AA 23 98 93 23 98 94 23 | # # # # # +1030 | 98 95 23 98 96 AA 23 98 97 23 98 98 23 98 99 23 | # # # # # +1040 | 98 9A AA 23 98 9B 23 98 9C 23 98 9D 23 98 9E AA | # # # # +1050 | 23 98 9F 23 98 A0 23 98 A1 23 98 A2 AA 23 98 A3 | # # # # # +1060 | 23 98 A4 23 98 A5 23 98 A6 AA 23 98 A7 23 98 A8 | # # # # # +1070 | 23 98 A9 23 98 AA AA 23 98 AB 23 98 AC 23 98 AD | # # # # # +1080 | 23 98 AE AA 23 98 AF 23 98 B0 23 98 B1 23 98 B2 | # # # # # +1090 | AA 23 98 B3 23 98 B4 23 98 B5 23 98 B6 AA 23 98 | # # # # # +10A0 | B7 23 98 B8 23 98 B9 23 98 BA AA 23 98 BB 23 98 | # # # # # +10B0 | BC 23 98 BD 23 98 BE AA 23 98 BF 23 98 C0 23 98 | # # # # # +10C0 | C1 23 98 C2 AA 23 98 C3 23 98 C4 23 98 C5 23 98 | # # # # # +10D0 | C6 AA 23 98 C7 23 98 C8 23 98 C9 23 98 CA AA 23 | # # # # # +10E0 | 98 CB 23 98 CC 23 98 CD 23 98 CE AA 23 98 CF 23 | # # # # # +10F0 | 98 D0 23 98 D1 23 98 D2 AA 23 98 D3 23 98 D4 23 | # # # # # +1100 | 98 D5 23 98 D6 AA 23 98 D7 23 98 D8 23 98 D9 23 | # # # # # +1110 | 98 DA AA 23 98 DB 23 98 DC 23 98 DD 23 98 DE AA | # # # # +1120 | 23 98 DF 23 98 E0 23 98 E1 23 98 E2 AA 23 98 E3 | # # # # # +1130 | 23 98 E4 23 98 E5 23 98 E6 AA 23 98 E7 23 98 E8 | # # # # # +1140 | 23 98 E9 23 98 EA AA 23 98 EB 23 98 EC 23 98 ED | # # # # # +1150 | 23 98 EE AA 23 98 EF 23 98 F0 23 98 F1 23 98 F2 | # # # # # +1160 | AA 23 98 F3 23 98 F4 23 98 F5 23 98 F6 AA 23 98 | # # # # # +1170 | F7 23 98 F8 23 98 F9 23 98 FA AA 23 98 FB 23 98 | # # # # # +1180 | FC 23 98 FD 23 98 FE 9A 23 98 FF 23 98 00 12 74 | # # # # t +1190 | 48 73 08 02 AA 73 08 03 73 08 04 73 08 05 73 08 | Hs s s s s +11A0 | 06 AA 73 08 07 73 08 08 73 08 09 73 08 0A AA 73 | s s s s s +11B0 | 08 0B 73 08 0C 73 08 0D 73 08 0E AA 73 08 0F 73 | s s s s s +11C0 | 08 10 73 08 11 73 08 12 AA 73 08 13 73 08 14 73 | s s s s s +11D0 | 08 15 73 08 16 AA 73 08 17 73 08 18 73 08 19 73 | s s s s s +11E0 | 08 1A AA 73 08 1B 73 08 1C 73 08 1D 73 08 1E AA | s s s s +11F0 | 73 08 1F 73 08 20 73 08 21 73 08 22 AA 73 08 23 | s s s !s " s # +1200 | 73 08 24 73 08 25 73 08 26 AA 73 08 27 73 08 28 | s $s %s & s 's ( +1210 | 73 08 29 73 08 2A AA 73 08 2B 73 08 2C 73 08 2D | s )s * s +s ,s - +1220 | 73 08 2E AA 73 08 2F 73 08 30 73 08 31 73 08 32 | s . s /s 0s 1s 2 +1230 | AA 73 08 33 73 08 34 73 08 35 73 08 36 AA 73 08 | s 3s 4s 5s 6 s +1240 | 37 73 08 38 73 08 39 73 08 3A AA 73 08 3B 73 08 | 7s 8s 9s : s ;s +1250 | 3C 73 08 3D 73 08 3E AA 73 08 3F 73 08 40 73 08 | s ?s @s +1260 | 41 73 08 42 AA 73 08 43 73 08 44 73 08 45 73 08 | As B s Cs Ds Es +1270 | 46 AA 73 08 47 73 08 48 73 08 49 73 08 4A AA 73 | F s Gs Hs Is J s +1280 | 08 4B 73 08 4C 73 08 4D 73 08 4E AA 73 08 4F 73 | Ks Ls Ms N s Os +1290 | 08 50 73 08 51 73 08 52 AA 73 08 53 73 08 54 73 | Ps Qs R s Ss Ts +12A0 | 08 55 73 08 56 AA 73 08 57 73 08 58 73 08 59 73 | Us V s Ws Xs Ys +12B0 | 08 5A AA 73 08 5B 73 08 5C 73 08 5D 73 08 5E AA | Z s [s \s ]s ^ +12C0 | 73 08 5F 73 08 60 73 08 61 73 08 62 AA 73 08 63 | s _s `s as b s c +12D0 | 73 08 64 73 08 65 73 08 66 AA 2F 58 67 2F 58 68 | s ds es f /Xg/Xh +12E0 | 2F 58 69 2F 58 6A AA 2F 58 6B 2F 58 6C 2F 58 6D | /Xi/Xj /Xk/Xl/Xm +12F0 | 2F 58 6E AA 2F 58 6F 2F 58 70 2F 58 71 2F 58 72 | /Xn /Xo/Xp/Xq/Xr +1300 | AA 2F 58 73 2F 58 74 2F 58 75 2F 58 76 AA 2F 58 | /Xs/Xt/Xu/Xv /X +1310 | 77 2F 58 78 2F 58 79 2F 58 7A AA 2F 58 7B 2F 58 | w/Xx/Xy/Xz /X{/X +1320 | 7C 2F 58 7D 2F 58 7E AA 2F 58 7F 2F 58 80 2F 58 | |/X}/X~ /X /X /X +1330 | 81 2F 58 82 AA 2F 58 83 2F 58 84 2F 58 85 2F 58 | /X /X /X /X /X +1340 | 86 AA 2F 58 87 2F 58 88 2F 58 89 2F 58 8A AA 2F | /X /X /X /X / +1350 | 58 8B 2F 58 8C 2F 58 8D 2F 58 8E AA 2F 58 8F 2F | X /X /X /X /X / +1360 | 58 90 2F 58 91 2F 58 92 AA 2F 58 93 2F 58 94 2F | X /X /X /X /X / +1370 | 58 95 2F 58 96 AA 2F 58 97 2F 58 98 2F 58 99 2F | X /X /X /X /X / +1380 | 58 9A AA 2F 58 9B 2F 58 9C 2F 58 9D 2F 58 9E AA | X /X /X /X /X +1390 | 2F 58 9F 2F 58 A0 2F 58 A1 2F 58 A2 AA 2F 58 A3 | /X /X /X /X /X +13A0 | 2F 58 A4 2F 58 A5 2F 58 A6 AA 2F 58 A7 2F 58 A8 | /X /X /X /X /X +13B0 | 2F 58 A9 2F 58 AA AA 2F 58 AB 2F 58 AC 2F 58 AD | /X /X /X /X /X +13C0 | 2F 58 AE AA 2F 58 AF 2F 58 B0 2F 58 B1 2F 58 B2 | /X /X /X /X /X +13D0 | AA 2F 58 B3 2F 58 B4 2F 58 B5 2F 58 B6 AA 2F 58 | /X /X /X /X /X +13E0 | B7 2F 58 B8 2F 58 B9 2F 58 BA AA 2F 58 BB 2F 58 | /X /X /X /X /X +13F0 | BC 2F 58 BD 2F 58 BE AA 2F 58 BF 2F 58 C0 2F 58 | /X /X /X /X /X +1400 | C1 2F 58 C2 AA 2F 58 C3 2F 58 C4 2F 58 C5 2F 58 | /X /X /X /X /X +1410 | C6 AA 2F 58 C7 2F 58 C8 2F 58 C9 2F 58 CA AA 2F | /X /X /X /X / +1420 | 58 CB 2F 58 CC 2F 58 CD 2F 58 CE AA 2F 58 CF 2F | X /X /X /X /X / +1430 | 58 D0 2F 58 D1 2F 58 D2 AA 2F 58 D3 2F 58 D4 2F | X /X /X /X /X / +1440 | 58 D5 2F 58 D6 AA 2F 58 D7 2F 58 D8 2F 58 D9 2F | X /X /X /X /X / +1450 | 58 DA AA 2F 58 DB 2F 58 DC 2F 58 DD 2F 58 DE AA | X /X /X /X /X +1460 | 2F 58 DF 2F 58 E0 2F 58 E1 2F 58 E2 AA 2F 58 E3 | /X /X /X /X /X +1470 | 2F 58 E4 2F 58 E5 2F 58 E6 AA 2F 58 E7 2F 58 E8 | /X /X /X /X /X +1480 | 2F 58 E9 2F 58 EA AA 2F 58 EB 2F 58 EC 2F 58 ED | /X /X /X /X /X +1490 | 2F 58 EE AA 2F 58 EF 2F 58 F0 2F 58 F1 2F 58 F2 | /X /X /X /X /X +14A0 | AA 2F 58 F3 2F 58 F4 2F 58 F5 2F 58 F6 AA 2F 58 | /X /X /X /X /X +14B0 | F7 2F 58 F8 2F 58 F9 2F 58 FA AA 2F 58 FB 2F 58 | /X /X /X /X /X +14C0 | FC 2F 58 FD 2F 58 FE 9A 2F 58 FF 2F 58 00 13 74 | /X /X /X /X t +14D0 | 08 73 C8 02 AA 73 C8 03 73 C8 04 73 C8 05 73 C8 | s s s s s +14E0 | 06 AA 73 C8 07 73 C8 08 73 C8 09 73 C8 0A AA 73 | s s s s s +14F0 | C8 0B 73 C8 0C 73 C8 0D 73 C8 0E AA 73 C8 0F 73 | s s s s s +1500 | C8 10 73 C8 11 73 C8 12 AA 73 C8 13 73 C8 14 73 | s s s s s +1510 | C8 15 73 C8 16 AA 73 C8 17 73 C8 18 73 C8 19 73 | s s s s s +1520 | C8 1A AA 73 C8 1B 73 C8 1C 73 C8 1D 73 C8 1E AA | s s s s +1530 | 73 C8 1F 73 C8 20 73 C8 21 73 C8 22 AA 73 C8 23 | s s s !s " s # +1540 | 73 C8 24 73 C8 25 73 C8 26 AA 73 C8 27 73 C8 28 | s $s %s & s 's ( +1550 | 73 C8 29 73 C8 2A AA 73 C8 2B 73 C8 2C 73 C8 2D | s )s * s +s ,s - +1560 | 73 C8 2E AA 73 C8 2F 73 C8 30 73 C8 31 73 C8 32 | s . s /s 0s 1s 2 +1570 | AA 73 C8 33 73 C8 34 73 C8 35 73 C8 36 AA 73 C8 | s 3s 4s 5s 6 s +1580 | 37 73 C8 38 73 C8 39 73 C8 3A AA 73 C8 3B 73 C8 | 7s 8s 9s : s ;s +1590 | 3C 73 C8 3D 73 C8 3E AA 73 C8 3F 73 C8 40 73 C8 | s ?s @s +15A0 | 41 73 C8 42 AA 73 C8 43 73 C8 44 73 C8 45 73 C8 | As B s Cs Ds Es +15B0 | 46 AA 73 C8 47 73 C8 48 73 C8 49 73 C8 4A AA 73 | F s Gs Hs Is J s +15C0 | C8 4B 73 C8 4C 73 C8 4D 73 C8 4E AA 73 C8 4F 73 | Ks Ls Ms N s Os +15D0 | C8 50 73 C8 51 73 C8 52 AA 73 C8 53 73 C8 54 73 | Ps Qs R s Ss Ts +15E0 | C8 55 73 C8 56 AA 73 C8 57 73 C8 58 73 C8 59 73 | Us V s Ws Xs Ys +15F0 | C8 5A AA 73 C8 5B 73 C8 5C 73 C8 5D 73 C8 5E AA | Z s [s \s ]s ^ +1600 | 73 C8 5F 73 C8 60 73 C8 61 73 C8 62 AA 73 C8 63 | s _s `s as b s c +1610 | 73 C8 64 73 C8 65 73 C8 66 AA 73 C8 67 3B 18 68 | s ds es f s g; h +1620 | 3B 18 69 3B 18 6A AA 3B 18 6B 3B 18 6C 3B 18 6D | ; i; j ; k; l; m +1630 | 3B 18 6E AA 3B 18 6F 3B 18 70 3B 18 71 3B 18 72 | ; n ; o; p; q; r +1640 | AA 3B 18 73 3B 18 74 3B 18 75 3B 18 76 AA 3B 18 | ; s; t; u; v ; +1650 | 77 3B 18 78 3B 18 79 3B 18 7A AA 3B 18 7B 3B 18 | w; x; y; z ; {; +1660 | 7C 3B 18 7D 3B 18 7E AA 3B 18 7F 3B 18 80 3B 18 | |; }; ~ ; ; ; +1670 | 81 3B 18 82 AA 3B 18 83 3B 18 84 3B 18 85 3B 18 | ; ; ; ; ; +1680 | 86 AA 3B 18 87 3B 18 88 3B 18 89 3B 18 8A AA 3B | ; ; ; ; ; +1690 | 18 8B 3B 18 8C 3B 18 8D 3B 18 8E AA 3B 18 8F 3B | ; ; ; ; ; +16A0 | 18 90 3B 18 91 3B 18 92 AA 3B 18 93 3B 18 94 3B | ; ; ; ; ; +16B0 | 18 95 3B 18 96 AA 3B 18 97 3B 18 98 3B 18 99 3B | ; ; ; ; ; +16C0 | 18 9A AA 3B 18 9B 3B 18 9C 3B 18 9D 3B 18 9E AA | ; ; ; ; +16D0 | 3B 18 9F 3B 18 A0 3B 18 A1 3B 18 A2 AA 3B 18 A3 | ; ; ; ; ; +16E0 | 3B 18 A4 3B 18 A5 3B 18 A6 AA 3B 18 A7 3B 18 A8 | ; ; ; ; ; +16F0 | 3B 18 A9 3B 18 AA AA 3B 18 AB 3B 18 AC 3B 18 AD | ; ; ; ; ; +1700 | 3B 18 AE AA 3B 18 AF 3B 18 B0 3B 18 B1 3B 18 B2 | ; ; ; ; ; +1710 | AA 3B 18 B3 3B 18 B4 3B 18 B5 3B 18 B6 AA 3B 18 | ; ; ; ; ; +1720 | B7 3B 18 B8 3B 18 B9 3B 18 BA AA 3B 18 BB 3B 18 | ; ; ; ; ; +1730 | BC 3B 18 BD 3B 18 BE AA 3B 18 BF 3B 18 C0 3B 18 | ; ; ; ; ; +1740 | C1 3B 18 C2 AA 3B 18 C3 3B 18 C4 3B 18 C5 3B 18 | ; ; ; ; ; +1750 | C6 AA 3B 18 C7 3B 18 C8 3B 18 C9 3B 18 CA AA 3B | ; ; ; ; ; +1760 | 18 CB 3B 18 CC 3B 18 CD 3B 18 CE AA 3B 18 CF 3B | ; ; ; ; ; +1770 | 18 D0 3B 18 D1 3B 18 D2 AA 3B 18 D3 3B 18 D4 3B | ; ; ; ; ; +1780 | 18 D5 3B 18 D6 AA 3B 18 D7 3B 18 D8 3B 18 D9 3B | ; ; ; ; ; +1790 | 18 DA AA 3B 18 DB 3B 18 DC 3B 18 DD 3B 18 DE AA | ; ; ; ; +17A0 | 3B 18 DF 3B 18 E0 3B 18 E1 3B 18 E2 AA 3B 18 E3 | ; ; ; ; ; +17B0 | 3B 18 E4 3B 18 E5 3B 18 E6 AA 3B 18 E7 3B 18 E8 | ; ; ; ; ; +17C0 | 3B 18 E9 3B 18 EA AA 3B 18 EB 3B 18 EC 3B 18 ED | ; ; ; ; ; +17D0 | 3B 18 EE AA 3B 18 EF 3B 18 F0 3B 18 F1 3B 18 F2 | ; ; ; ; ; +17E0 | AA 3B 18 F3 3B 18 F4 3B 18 F5 3B 18 F6 AA 3B 18 | ; ; ; ; ; +17F0 | F7 3B 18 F8 3B 18 F9 3B 18 FA AA 3B 18 FB 3B 18 | ; ; ; ; ; +1800 | FC 3B 18 FD 3B 18 FE 9A 3B 18 FF 3B 18 00 14 74 | ; ; ; ; t +1810 | C8 73 88 02 AA 73 88 03 73 88 04 73 88 05 73 88 | s s s s s +1820 | 06 AA 73 88 07 73 88 08 73 88 09 73 88 0A AA 73 | s s s s s +1830 | 88 0B 73 88 0C 73 88 0D 73 88 0E AA 73 88 0F 73 | s s s s s +1840 | 88 10 73 88 11 73 88 12 AA 73 88 13 73 88 14 73 | s s s s s +1850 | 88 15 73 88 16 AA 73 88 17 73 88 18 73 88 19 73 | s s s s s +1860 | 88 1A AA 73 88 1B 73 88 1C 73 88 1D 73 88 1E AA | s s s s +1870 | 73 88 1F 73 88 20 73 88 21 73 88 22 AA 73 88 23 | s s s !s " s # +1880 | 73 88 24 73 88 25 73 88 26 AA 73 88 27 73 88 28 | s $s %s & s 's ( +1890 | 73 88 29 73 88 2A AA 73 88 2B 73 88 2C 73 88 2D | s )s * s +s ,s - +18A0 | 73 88 2E AA 73 88 2F 73 88 30 73 88 31 73 88 32 | s . s /s 0s 1s 2 +18B0 | AA 73 88 33 73 88 34 73 88 35 73 88 36 AA 73 88 | s 3s 4s 5s 6 s +18C0 | 37 73 88 38 73 88 39 73 88 3A AA 73 88 3B 73 88 | 7s 8s 9s : s ;s +18D0 | 3C 73 88 3D 73 88 3E AA 73 88 3F 73 88 40 73 88 | s ?s @s +18E0 | 41 73 88 42 AA 73 88 43 73 88 44 73 88 45 73 88 | As B s Cs Ds Es +18F0 | 46 AA 73 88 47 73 88 48 73 88 49 73 88 4A AA 73 | F s Gs Hs Is J s +1900 | 88 4B 73 88 4C 73 88 4D 73 88 4E AA 73 88 4F 73 | Ks Ls Ms N s Os +1910 | 88 50 73 88 51 73 88 52 AA 73 88 53 73 88 54 73 | Ps Qs R s Ss Ts +1920 | 88 55 73 88 56 AA 73 88 57 73 88 58 73 88 59 73 | Us V s Ws Xs Ys +1930 | 88 5A AA 73 88 5B 73 88 5C 73 88 5D 73 88 5E AA | Z s [s \s ]s ^ +1940 | 73 88 5F 73 88 60 73 88 61 73 88 62 AA 73 88 63 | s _s `s as b s c +1950 | 73 88 64 73 88 65 73 88 66 AA 73 88 67 73 88 68 | s ds es f s gs h +1960 | 47 D8 69 47 D8 6A AA 47 D8 6B 47 D8 6C 47 D8 6D | G iG j G kG lG m +1970 | 47 D8 6E AA 47 D8 6F 47 D8 70 47 D8 71 47 D8 72 | G n G oG pG qG r +1980 | AA 47 D8 73 47 D8 74 47 D8 75 47 D8 76 AA 47 D8 | G sG tG uG v G +1990 | 77 47 D8 78 47 D8 79 47 D8 7A AA 47 D8 7B 47 D8 | wG xG yG z G {G +19A0 | 7C 47 D8 7D 47 D8 7E AA 47 D8 7F 47 D8 80 47 D8 | |G }G ~ G G G +19B0 | 81 47 D8 82 AA 47 D8 83 47 D8 84 47 D8 85 47 D8 | G G G G G +19C0 | 86 AA 47 D8 87 47 D8 88 47 D8 89 47 D8 8A AA 47 | G G G G G +19D0 | D8 8B 47 D8 8C 47 D8 8D 47 D8 8E AA 47 D8 8F 47 | G G G G G +19E0 | D8 90 47 D8 91 47 D8 92 AA 47 D8 93 47 D8 94 47 | G G G G G +19F0 | D8 95 47 D8 96 AA 47 D8 97 47 D8 98 47 D8 99 47 | G G G G G +1A00 | D8 9A AA 47 D8 9B 47 D8 9C 47 D8 9D 47 D8 9E AA | G G G G +1A10 | 47 D8 9F 47 D8 A0 47 D8 A1 47 D8 A2 AA 47 D8 A3 | G G G G G +1A20 | 47 D8 A4 47 D8 A5 47 D8 A6 AA 47 D8 A7 47 D8 A8 | G G G G G +1A30 | 47 D8 A9 47 D8 AA AA 47 D8 AB 47 D8 AC 47 D8 AD | G G G G G +1A40 | 47 D8 AE AA 47 D8 AF 47 D8 B0 47 D8 B1 47 D8 B2 | G G G G G +1A50 | AA 47 D8 B3 47 D8 B4 47 D8 B5 47 D8 B6 AA 47 D8 | G G G G G +1A60 | B7 47 D8 B8 47 D8 B9 47 D8 BA AA 47 D8 BB 47 D8 | G G G G G +1A70 | BC 47 D8 BD 47 D8 BE AA 47 D8 BF 47 D8 C0 47 D8 | G G G G G +1A80 | C1 47 D8 C2 AA 47 D8 C3 47 D8 C4 47 D8 C5 47 D8 | G G G G G +1A90 | C6 AA 47 D8 C7 47 D8 C8 47 D8 C9 47 D8 CA AA 47 | G G G G G +1AA0 | D8 CB 47 D8 CC 47 D8 CD 47 D8 CE AA 47 D8 CF 47 | G G G G G +1AB0 | D8 D0 47 D8 D1 47 D8 D2 AA 47 D8 D3 47 D8 D4 47 | G G G G G +1AC0 | D8 D5 47 D8 D6 AA 47 D8 D7 47 D8 D8 47 D8 D9 47 | G G G G G +1AD0 | D8 DA AA 47 D8 DB 47 D8 DC 47 D8 DD 47 D8 DE AA | G G G G +1AE0 | 47 D8 DF 47 D8 E0 47 D8 E1 47 D8 E2 AA 47 D8 E3 | G G G G G +1AF0 | 47 D8 E4 47 D8 E5 47 D8 E6 AA 47 D8 E7 47 D8 E8 | G G G G G +1B00 | 47 D8 E9 47 D8 EA AA 47 D8 EB 47 D8 EC 47 D8 ED | G G G G G +1B10 | 47 D8 EE AA 47 D8 EF 47 D8 F0 47 D8 F1 47 D8 F2 | G G G G G +1B20 | AA 47 D8 F3 47 D8 F4 47 D8 F5 47 D8 F6 AA 47 D8 | G G G G G +1B30 | F7 47 D8 F8 47 D8 F9 47 D8 FA AA 47 D8 FB 47 D8 | G G G G G +1B40 | FC 47 D8 FD 47 D8 FE 9A 47 D8 FF 47 D8 00 15 74 | G G G G t +1B50 | 88 73 48 02 AA 73 48 03 73 48 04 73 48 05 73 48 | sH sH sH sH sH +1B60 | 06 AA 73 48 07 73 48 08 73 48 09 73 48 0A AA 73 | sH sH sH sH s +1B70 | 48 0B 73 48 0C 73 48 0D 73 48 0E AA 73 48 0F 73 | H sH sH sH sH s +1B80 | 48 10 73 48 11 73 48 12 AA 73 48 13 73 48 14 73 | H sH sH sH sH s +1B90 | 48 15 73 48 16 AA 73 48 17 73 48 18 73 48 19 73 | H sH sH sH sH s +1BA0 | 48 1A AA 73 48 1B 73 48 1C 73 48 1D 73 48 1E AA | H sH sH sH sH +1BB0 | 73 48 1F 73 48 20 73 48 21 73 48 22 AA 73 48 23 | sH sH sH!sH" sH# +1BC0 | 73 48 24 73 48 25 73 48 26 AA 73 48 27 73 48 28 | sH$sH%sH& sH'sH( +1BD0 | 73 48 29 73 48 2A AA 73 48 2B 73 48 2C 73 48 2D | sH)sH* sH+sH,sH- +1BE0 | 73 48 2E AA 73 48 2F 73 48 30 73 48 31 73 48 32 | sH. sH/sH0sH1sH2 +1BF0 | AA 73 48 33 73 48 34 73 48 35 73 48 36 AA 73 48 | sH3sH4sH5sH6 sH +1C00 | 37 73 48 38 73 48 39 73 48 3A AA 73 48 3B 73 48 | 7sH8sH9sH: sH;sH +1C10 | 3C 73 48 3D 73 48 3E AA 73 48 3F 73 48 40 73 48 | sH?sH@sH +1C20 | 41 73 48 42 AA 73 48 43 73 48 44 73 48 45 73 48 | AsHB sHCsHDsHEsH +1C30 | 46 AA 73 48 47 73 48 48 73 48 49 73 48 4A AA 73 | F sHGsHHsHIsHJ s +1C40 | 48 4B 73 48 4C 73 48 4D 73 48 4E AA 73 48 4F 73 | HKsHLsHMsHN sHOs +1C50 | 48 50 73 48 51 73 48 52 AA 73 48 53 73 48 54 73 | HPsHQsHR sHSsHTs +1C60 | 48 55 73 48 56 AA 73 48 57 73 48 58 73 48 59 73 | HUsHV sHWsHXsHYs +1C70 | 48 5A AA 73 48 5B 73 48 5C 73 48 5D 73 48 5E AA | HZ sH[sH\sH]sH^ +1C80 | 73 48 5F 73 48 60 73 48 61 73 48 62 AA 73 48 63 | sH_sH`sHasHb sHc +1C90 | 73 48 64 73 48 65 73 48 66 AA 73 48 67 73 48 68 | sHdsHesHf sHgsHh +1CA0 | 73 48 69 53 98 6A AA 53 98 6B 53 98 6C 53 98 6D | sHiS j S kS lS m +1CB0 | 53 98 6E AA 53 98 6F 53 98 70 53 98 71 53 98 72 | S n S oS pS qS r +1CC0 | AA 53 98 73 53 98 74 53 98 75 53 98 76 AA 53 98 | S sS tS uS v S +1CD0 | 77 53 98 78 53 98 79 53 98 7A AA 53 98 7B 53 98 | wS xS yS z S {S +1CE0 | 7C 53 98 7D 53 98 7E AA 53 98 7F 53 98 80 53 98 | |S }S ~ S S S +1CF0 | 81 53 98 82 AA 53 98 83 53 98 84 53 98 85 53 98 | S S S S S +1D00 | 86 AA 53 98 87 53 98 88 53 98 89 53 98 8A AA 53 | S S S S S +1D10 | 98 8B 53 98 8C 53 98 8D 53 98 8E AA 53 98 8F 53 | S S S S S +1D20 | 98 90 53 98 91 53 98 92 AA 53 98 93 53 98 94 53 | S S S S S +1D30 | 98 95 53 98 96 AA 53 98 97 53 98 98 53 98 99 53 | S S S S S +1D40 | 98 9A AA 53 98 9B 53 98 9C 53 98 9D 53 98 9E AA | S S S S +1D50 | 53 98 9F 53 98 A0 53 98 A1 53 98 A2 AA 53 98 A3 | S S S S S +1D60 | 53 98 A4 53 98 A5 53 98 A6 AA 53 98 A7 53 98 A8 | S S S S S +1D70 | 53 98 A9 53 98 AA AA 53 98 AB 53 98 AC 53 98 AD | S S S S S +1D80 | 53 98 AE AA 53 98 AF 53 98 B0 53 98 B1 53 98 B2 | S S S S S +1D90 | AA 53 98 B3 53 98 B4 53 98 B5 53 98 B6 AA 53 98 | S S S S S +1DA0 | B7 53 98 B8 53 98 B9 53 98 BA AA 53 98 BB 53 98 | S S S S S +1DB0 | BC 53 98 BD 53 98 BE AA 53 98 BF 53 98 C0 53 98 | S S S S S +1DC0 | C1 53 98 C2 AA 53 98 C3 53 98 C4 53 98 C5 53 98 | S S S S S +1DD0 | C6 AA 53 98 C7 53 98 C8 53 98 C9 53 98 CA AA 53 | S S S S S +1DE0 | 98 CB 53 98 CC 53 98 CD 53 98 CE 02 53 98 CF 53 | S S S S S +1DF0 | 94 00 17 00 | +I 91446 2023-12-31 21:06:48 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 C0 13 5D 00 00 00 BC 13 00 00 38 18 00 00 | m ] 8 +0010 | 52 ED F0 01 EF F0 F1 F0 02 F1 F0 03 F1 F0 55 04 | R U +0020 | F1 F0 05 F1 F0 06 F1 F0 07 F1 F0 55 08 F1 F0 09 | U +0030 | F1 F0 0A F1 F0 0B F1 F0 55 0C F1 F0 0D F1 F0 0E | U +0040 | F1 F0 0F F1 F0 55 10 F1 F0 11 F1 F0 12 F1 F0 13 | U +0050 | F1 F0 55 14 F1 F0 15 F1 F0 16 F1 F0 17 F1 F0 55 | U U +0060 | 18 F1 F0 19 F1 F0 1A F1 F0 1B F1 F0 55 1C F1 F0 | U +0070 | 1D F1 F0 1E F1 F0 1F F1 F0 55 20 F1 F0 21 F1 F0 | U ! +0080 | 22 F1 F0 23 F1 F0 55 24 F1 F0 25 F1 F0 26 F1 F0 | " # U$ % & +0090 | 27 F1 F0 55 28 F1 F0 29 F1 F0 2A F1 F0 2B F1 F0 | ' U( ) * + +00A0 | 55 2C F1 F0 2D F1 F0 2E F1 F0 2F F1 F0 55 30 F1 | U, - . / U0 +00B0 | F0 31 F1 F0 32 F1 F0 33 F1 F0 55 34 F1 F0 35 F1 | 1 2 3 U4 5 +00C0 | F0 36 F1 F0 37 F1 F0 55 38 F1 F0 39 F1 F0 3A F1 | 6 7 U8 9 : +00D0 | F0 3B F1 F0 55 3C F1 F0 3D F1 F0 3E F1 F0 3F F1 | ; U< = > ? +00E0 | F0 55 40 F1 F0 41 F1 F0 42 F1 F0 43 F1 F0 55 44 | U@ A B C UD +00F0 | F1 F0 45 F1 F0 46 F1 F0 47 F1 F0 55 48 F1 F0 49 | E F G UH I +0100 | F1 F0 4A F1 F0 4B F1 F0 55 4C F1 F0 4D F1 F0 4E | J K UL M N +0110 | F1 F0 4F F1 F0 55 50 F1 F0 51 F1 F0 52 F1 F0 53 | O UP Q R S +0120 | F1 F0 55 54 F1 F0 55 F1 F0 56 F1 F0 57 F1 F0 55 | UT U V W U +0130 | 58 F1 F0 59 F1 F0 5A F1 F0 5B F1 F0 55 5C F1 F0 | X Y Z [ U\ +0140 | 5D F1 F0 5E F1 F0 5F F1 F0 55 60 F1 F0 61 F1 F0 | ] ^ _ U` a +0150 | 62 F1 F0 63 F1 F0 55 64 F1 F0 65 F1 F0 66 F1 F0 | b c Ud e f +0160 | 67 F1 F0 55 68 F1 F0 69 F1 F0 6A F1 F0 6B F1 F0 | g Uh i j k +0170 | 55 6C F1 F0 6D F1 F0 6E F1 F0 6F F1 F0 55 70 F1 | Ul m n o Up +0180 | F0 71 F1 F0 72 F1 F0 73 F1 F0 55 74 F1 F0 75 F1 | q r s Ut u +0190 | F0 76 F1 F0 77 F1 F0 55 78 F1 F0 79 F1 F0 7A F1 | v w Ux y z +01A0 | F0 7B F1 F0 55 7C F1 F0 7D F1 F0 7E F1 F0 7F F1 | { U| } ~ +01B0 | F0 55 80 F1 F0 81 F1 F0 82 F1 F0 83 F1 F0 55 84 | U U +01C0 | F1 F0 85 F1 F0 86 F1 F0 87 F1 F0 55 88 F1 F0 89 | U +01D0 | F1 F0 8A F1 F0 8B F1 F0 55 8C F1 F0 8D F1 F0 8E | U +01E0 | F1 F0 8F F1 F0 55 90 F1 F0 91 F1 F0 92 F1 F0 93 | U +01F0 | F1 F0 55 94 F1 F0 95 F1 F0 96 F1 F0 97 F1 F0 55 | U U +0200 | 98 F1 F0 99 F1 F0 9A F1 F0 9B F1 F0 55 9C F1 F0 | U +0210 | 9D F1 F0 9E F1 F0 9F F1 F0 55 A0 F1 F0 A1 F1 F0 | U +0220 | A2 F1 F0 A3 F1 F0 55 A4 F1 F0 A5 F1 F0 A6 F1 F0 | U +0230 | A7 F1 F0 55 A8 F1 F0 A9 F1 F0 AA F1 F0 AB F1 F0 | U +0240 | 55 AC F1 F0 AD F1 F0 AE F1 F0 AF F1 F0 55 B0 F1 | U U +0250 | F0 B1 F1 F0 B2 F1 F0 B3 F1 F0 55 B4 F1 F0 B5 F1 | U +0260 | F0 B6 F1 F0 B7 F1 F0 55 B8 F1 F0 B9 F1 F0 BA F1 | U +0270 | F0 BB F1 F0 55 BC F1 F0 BD F1 F0 BE F1 F0 BF F1 | U +0280 | F0 55 C0 F1 F0 C1 F1 F0 C2 F1 F0 C3 F1 F0 55 C4 | U U +0290 | F1 F0 C5 F1 F0 C6 F1 F0 C7 F1 F0 55 C8 F1 F0 C9 | U +02A0 | F1 F0 CA F1 F0 CB F1 F0 55 CC F1 F0 CD F1 F0 CE | U +02B0 | F1 F0 CF F1 F0 55 D0 F1 F0 D1 F1 F0 D2 F1 F0 D3 | U +02C0 | F1 F0 55 D4 F1 F0 D5 F1 F0 D6 F1 F0 D7 F1 F0 55 | U U +02D0 | D8 F1 F0 D9 F1 F0 DA F1 F0 DB F1 F0 55 DC F1 F0 | U +02E0 | DD F1 F0 DE F1 F0 DF F1 F0 55 E0 F1 F0 E1 F1 F0 | U +02F0 | E2 F1 F0 E3 F1 F0 55 E4 F1 F0 E5 F1 F0 E6 F1 F0 | U +0300 | E7 F1 F0 55 E8 F1 F0 E9 F1 F0 EA F1 F0 EB F1 F0 | U +0310 | 55 EC F1 F0 ED F1 F0 EE F1 F0 EF F1 F0 55 F0 F1 | U U +0320 | F0 F1 F1 F0 F2 F1 F0 F3 F1 F0 55 F4 F1 F0 F5 F1 | U +0330 | F0 F6 F1 F0 F7 F1 F0 55 F8 F1 F0 F9 F1 F0 FA F1 | U +0340 | F0 FB F1 F0 55 FC F1 F0 FD F1 F0 FE F1 F0 FF F1 | U +0350 | F0 53 00 02 EF F0 F1 30 02 F1 30 03 F1 30 55 04 | S 0 0 0U +0360 | F1 30 05 F1 30 06 F1 30 07 F1 30 55 08 F1 30 09 | 0 0 0 0U 0 +0370 | F1 30 0A F1 30 0B F1 30 55 0C F1 30 0D F1 30 0E | 0 0 0U 0 0 +0380 | F1 30 0F F1 30 55 10 F1 30 11 F1 30 12 F1 30 13 | 0 0U 0 0 0 +0390 | F1 30 55 14 F1 30 15 F1 30 16 F1 30 17 F1 30 55 | 0U 0 0 0 0U +03A0 | 18 F1 30 19 F1 30 1A F1 30 1B F1 30 55 1C F1 30 | 0 0 0 0U 0 +03B0 | 1D F1 30 1E F1 30 1F F1 30 55 20 F1 30 21 F1 30 | 0 0 0U 0! 0 +03C0 | 22 F1 30 23 F1 30 55 24 F1 30 25 F1 30 26 F1 30 | " 0# 0U$ 0% 0& 0 +03D0 | 27 F1 30 55 28 F1 30 29 F1 30 2A F1 30 2B F1 30 | ' 0U( 0) 0* 0+ 0 +03E0 | 55 2C F1 30 2D F1 30 2E F1 30 2F F1 30 55 30 F1 | U, 0- 0. 0/ 0U0 +03F0 | 30 31 F1 30 32 F1 30 33 F1 30 55 34 F1 30 35 F1 | 01 02 03 0U4 05 +0400 | 30 36 F1 30 37 F1 30 55 38 F1 30 39 F1 30 3A F1 | 06 07 0U8 09 0: +0410 | 30 3B F1 30 55 3C F1 30 3D F1 30 3E F1 30 3F F1 | 0; 0U< 0= 0> 0? +0420 | 30 55 40 F1 30 41 F1 30 42 F1 30 43 F1 30 55 44 | 0U@ 0A 0B 0C 0UD +0430 | F1 30 45 F1 30 46 F1 30 47 F1 30 55 48 F1 30 49 | 0E 0F 0G 0UH 0I +0440 | F1 30 4A F1 30 4B F1 30 55 4C F1 30 4D F1 30 4E | 0J 0K 0UL 0M 0N +0450 | F1 30 4F F1 30 55 50 F1 30 51 F1 30 52 F1 30 53 | 0O 0UP 0Q 0R 0S +0460 | F1 30 55 54 F1 30 55 F1 30 56 F1 30 57 F1 30 55 | 0UT 0U 0V 0W 0U +0470 | 58 F1 30 59 F1 30 5A F1 30 5B F1 30 55 5C F1 30 | X 0Y 0Z 0[ 0U\ 0 +0480 | 5D F1 30 5E F1 30 5F F1 30 55 60 F1 30 61 F1 30 | ] 0^ 0_ 0U` 0a 0 +0490 | 62 F1 30 63 F1 30 55 64 F1 30 65 F1 30 66 F1 30 | b 0c 0Ud 0e 0f 0 +04A0 | 67 F1 30 55 68 F1 30 69 F1 30 6A F1 30 6B F1 30 | g 0Uh 0i 0j 0k 0 +04B0 | 55 6C F1 30 6D F1 30 6E F1 30 6F F1 30 55 70 F1 | Ul 0m 0n 0o 0Up +04C0 | 30 71 F1 30 72 F1 30 73 F1 30 55 74 F1 30 75 F1 | 0q 0r 0s 0Ut 0u +04D0 | 30 76 F1 30 77 F1 30 55 78 F1 30 79 F1 30 7A F1 | 0v 0w 0Ux 0y 0z +04E0 | 30 7B F1 30 55 7C F1 30 7D F1 30 7E F1 30 7F F1 | 0{ 0U| 0} 0~ 0 +04F0 | 30 55 80 F1 30 81 F1 30 82 F1 30 83 F1 30 55 84 | 0U 0 0 0 0U +0500 | F1 30 85 F1 30 86 F1 30 87 F1 30 55 88 F1 30 89 | 0 0 0 0U 0 +0510 | F1 30 8A F1 30 8B F1 30 55 8C F1 30 8D F1 30 8E | 0 0 0U 0 0 +0520 | F1 30 8F F1 30 55 90 F1 30 91 F1 30 92 F1 30 93 | 0 0U 0 0 0 +0530 | F1 30 55 94 F1 30 95 F1 30 96 F1 30 97 F1 30 55 | 0U 0 0 0 0U +0540 | 98 F1 30 99 F1 30 9A F1 30 9B F1 30 55 9C F1 30 | 0 0 0 0U 0 +0550 | 9D F1 30 9E F1 30 9F F1 30 55 A0 F1 30 A1 F1 30 | 0 0 0U 0 0 +0560 | A2 F1 30 A3 F1 30 55 A4 F1 30 A5 F1 30 A6 F1 30 | 0 0U 0 0 0 +0570 | A7 F1 30 55 A8 F1 30 A9 F1 30 AA F1 30 AB F1 30 | 0U 0 0 0 0 +0580 | 55 AC F1 30 AD F1 30 AE F1 30 AF F1 30 55 B0 F1 | U 0 0 0 0U +0590 | 30 B1 F1 30 B2 F1 30 B3 F1 30 55 B4 F1 30 B5 F1 | 0 0 0 0U 0 +05A0 | 30 B6 F1 30 B7 F1 30 55 B8 F1 30 B9 F1 30 BA F1 | 0 0 0U 0 0 +05B0 | 30 BB F1 30 55 BC F1 30 BD F1 30 BE F1 30 BF F1 | 0 0U 0 0 0 +05C0 | 30 55 C0 F1 30 C1 F1 30 C2 F1 30 C3 F1 30 55 C4 | 0U 0 0 0 0U +05D0 | F1 30 C5 F1 30 C6 F1 30 C7 F1 30 55 C8 F1 30 C9 | 0 0 0 0U 0 +05E0 | F1 30 CA F1 30 CB F1 30 55 CC F1 30 CD F1 30 CE | 0 0 0U 0 0 +05F0 | F1 30 CF F1 30 55 D0 F1 30 D1 F1 30 D2 F1 30 D3 | 0 0U 0 0 0 +0600 | F1 30 55 D4 F1 30 D5 F1 30 D6 F1 30 D7 F1 30 55 | 0U 0 0 0 0U +0610 | D8 F1 30 D9 F1 30 DA F1 30 DB F1 30 55 DC F1 30 | 0 0 0 0U 0 +0620 | DD F1 30 DE F1 30 DF F1 30 55 E0 F1 30 E1 F1 30 | 0 0 0U 0 0 +0630 | E2 F1 30 E3 F1 30 55 E4 F1 30 E5 F1 30 E6 F1 30 | 0 0U 0 0 0 +0640 | E7 F1 30 55 E8 F1 30 E9 F1 30 EA F1 30 EB F1 30 | 0U 0 0 0 0 +0650 | 55 EC F1 30 ED F1 30 EE F1 30 EF F1 30 55 F0 F1 | U 0 0 0 0U +0660 | 30 F1 F1 30 F2 F1 30 F3 F1 30 55 F4 F1 30 F5 F1 | 0 0 0 0U 0 +0670 | 30 F6 F1 30 F7 F1 30 55 F8 F1 30 F9 F1 30 FA F1 | 0 0 0U 0 0 +0680 | 30 FB F1 30 55 FC F1 30 FD F1 30 FE F1 30 FF F1 | 0 0U 0 0 0 +0690 | 30 53 00 03 EF F0 F1 70 02 F1 70 03 F1 70 55 04 | 0S p p pU +06A0 | F1 70 05 F1 70 06 F1 70 07 F1 70 55 08 F1 70 09 | p p p pU p +06B0 | F1 70 0A F1 70 0B F1 70 55 0C F1 70 0D F1 70 0E | p p pU p p +06C0 | F1 70 0F F1 70 55 10 F1 70 11 F1 70 12 F1 70 13 | p pU p p p +06D0 | F1 70 55 14 F1 70 15 F1 70 16 F1 70 17 F1 70 55 | pU p p p pU +06E0 | 18 F1 70 19 F1 70 1A F1 70 1B F1 70 55 1C F1 70 | p p p pU p +06F0 | 1D F1 70 1E F1 70 1F F1 70 55 20 F1 70 21 F1 70 | p p pU p! p +0700 | 22 F1 70 23 F1 70 55 24 F1 70 25 F1 70 26 F1 70 | " p# pU$ p% p& p +0710 | 27 F1 70 55 28 F1 70 29 F1 70 2A F1 70 2B F1 70 | ' pU( p) p* p+ p +0720 | 55 2C F1 70 2D F1 70 2E F1 70 2F F1 70 55 30 F1 | U, p- p. p/ pU0 +0730 | 70 31 F1 70 32 F1 70 33 F1 70 55 34 F1 70 35 F1 | p1 p2 p3 pU4 p5 +0740 | 70 36 F1 70 37 F1 70 55 38 F1 70 39 F1 70 3A F1 | p6 p7 pU8 p9 p: +0750 | 70 3B F1 70 55 3C F1 70 3D F1 70 3E F1 70 3F F1 | p; pU< p= p> p? +0760 | 70 55 40 F1 70 41 F1 70 42 F1 70 43 F1 70 55 44 | pU@ pA pB pC pUD +0770 | F1 70 45 F1 70 46 F1 70 47 F1 70 55 48 F1 70 49 | pE pF pG pUH pI +0780 | F1 70 4A F1 70 4B F1 70 55 4C F1 70 4D F1 70 4E | pJ pK pUL pM pN +0790 | F1 70 4F F1 70 55 50 F1 70 51 F1 70 52 F1 70 53 | pO pUP pQ pR pS +07A0 | F1 70 55 54 F1 70 55 F1 70 56 F1 70 57 F1 70 55 | pUT pU pV pW pU +07B0 | 58 F1 70 59 F1 70 5A F1 70 5B F1 70 55 5C F1 70 | X pY pZ p[ pU\ p +07C0 | 5D F1 70 5E F1 70 5F F1 70 55 60 F1 70 61 F1 70 | ] p^ p_ pU` pa p +07D0 | 62 F1 70 63 F1 70 55 64 F1 70 65 F1 70 66 F1 70 | b pc pUd pe pf p +07E0 | 67 F1 70 55 68 F1 70 69 F1 70 6A F1 70 6B F1 70 | g pUh pi pj pk p +07F0 | 55 6C F1 70 6D F1 70 6E F1 70 6F F1 70 55 70 F1 | Ul pm pn po pUp +0800 | 70 71 F1 70 72 F1 70 73 F1 70 55 74 F1 70 75 F1 | pq pr ps pUt pu +0810 | 70 76 F1 70 77 F1 70 55 78 F1 70 79 F1 70 7A F1 | pv pw pUx py pz +0820 | 70 7B F1 70 55 7C F1 70 7D F1 70 7E F1 70 7F F1 | p{ pU| p} p~ p +0830 | 70 55 80 F1 70 81 F1 70 82 F1 70 83 F1 70 55 84 | pU p p p pU +0840 | F1 70 85 F1 70 86 F1 70 87 F1 70 55 88 F1 70 89 | p p p pU p +0850 | F1 70 8A F1 70 8B F1 70 55 8C F1 70 8D F1 70 8E | p p pU p p +0860 | F1 70 8F F1 70 55 90 F1 70 91 F1 70 92 F1 70 93 | p pU p p p +0870 | F1 70 55 94 F1 70 95 F1 70 96 F1 70 97 F1 70 55 | pU p p p pU +0880 | 98 F1 70 99 F1 70 9A F1 70 9B F1 70 55 9C F1 70 | p p p pU p +0890 | 9D F1 70 9E F1 70 9F F1 70 55 A0 F1 70 A1 F1 70 | p p pU p p +08A0 | A2 F1 70 A3 F1 70 55 A4 F1 70 A5 F1 70 A6 F1 70 | p pU p p p +08B0 | A7 F1 70 55 A8 F1 70 A9 F1 70 AA F1 70 AB F1 70 | pU p p p p +08C0 | 55 AC F1 70 AD F1 70 AE F1 70 AF F1 70 55 B0 F1 | U p p p pU +08D0 | 70 B1 F1 70 B2 F1 70 B3 F1 70 55 B4 F1 70 B5 F1 | p p p pU p +08E0 | 70 B6 F1 70 B7 F1 70 55 B8 F1 70 B9 F1 70 BA F1 | p p pU p p +08F0 | 70 BB F1 70 55 BC F1 70 BD F1 70 BE F1 70 BF F1 | p pU p p p +0900 | 70 55 C0 F1 70 C1 F1 70 C2 F1 70 C3 F1 70 55 C4 | pU p p p pU +0910 | F1 70 C5 F1 70 C6 F1 70 C7 F1 70 55 C8 F1 70 C9 | p p p pU p +0920 | F1 70 CA F1 70 CB F1 70 55 CC F1 70 CD F1 70 CE | p p pU p p +0930 | F1 70 CF F1 70 55 D0 F1 70 D1 F1 70 D2 F1 70 D3 | p pU p p p +0940 | F1 70 55 D4 F1 70 D5 F1 70 D6 F1 70 D7 F1 70 55 | pU p p p pU +0950 | D8 F1 70 D9 F1 70 DA F1 70 DB F1 70 55 DC F1 70 | p p p pU p +0960 | DD F1 70 DE F1 70 DF F1 70 55 E0 F1 70 E1 F1 70 | p p pU p p +0970 | E2 F1 70 E3 F1 70 55 E4 F1 70 E5 F1 70 E6 F1 70 | p pU p p p +0980 | E7 F1 70 55 E8 F1 70 E9 F1 70 EA F1 70 EB F1 70 | pU p p p p +0990 | 55 EC F1 70 ED F1 70 EE F1 70 EF F1 70 55 F0 F1 | U p p p pU +09A0 | 70 F1 F1 70 F2 F1 70 F3 F1 70 55 F4 F1 70 F5 F1 | p p p pU p +09B0 | 70 F6 F1 70 F7 F1 70 55 F8 F1 70 F9 F1 70 FA F1 | p p pU p p +09C0 | 70 FB F1 70 55 FC F1 70 FD F1 70 FE F1 70 FF F1 | p pU p p p +09D0 | 70 53 00 04 EF F0 F1 B0 02 F1 B0 03 F1 B0 55 04 | pS U +09E0 | F1 B0 05 F1 B0 06 F1 B0 07 F1 B0 55 08 F1 B0 09 | U +09F0 | F1 B0 0A F1 B0 0B F1 B0 55 0C F1 B0 0D F1 B0 0E | U +0A00 | F1 B0 0F F1 B0 55 10 F1 B0 11 F1 B0 12 F1 B0 13 | U +0A10 | F1 B0 55 14 F1 B0 15 F1 B0 16 F1 B0 17 F1 B0 55 | U U +0A20 | 18 F1 B0 19 F1 B0 1A F1 B0 1B F1 B0 55 1C F1 B0 | U +0A30 | 1D F1 B0 1E F1 B0 1F F1 B0 55 20 F1 B0 21 F1 B0 | U ! +0A40 | 22 F1 B0 23 F1 B0 55 24 F1 B0 25 F1 B0 26 F1 B0 | " # U$ % & +0A50 | 27 F1 B0 55 28 F1 B0 29 F1 B0 2A F1 B0 2B F1 B0 | ' U( ) * + +0A60 | 55 2C F1 B0 2D F1 B0 2E F1 B0 2F F1 B0 55 30 F1 | U, - . / U0 +0A70 | B0 31 F1 B0 32 F1 B0 33 F1 B0 55 34 F1 B0 35 F1 | 1 2 3 U4 5 +0A80 | B0 36 F1 B0 37 F1 B0 55 38 F1 B0 39 F1 B0 3A F1 | 6 7 U8 9 : +0A90 | B0 3B F1 B0 55 3C F1 B0 3D F1 B0 3E F1 B0 3F F1 | ; U< = > ? +0AA0 | B0 55 40 F1 B0 41 F1 B0 42 F1 B0 43 F1 B0 55 44 | U@ A B C UD +0AB0 | F1 B0 45 F1 B0 46 F1 B0 47 F1 B0 55 48 F1 B0 49 | E F G UH I +0AC0 | F1 B0 4A F1 B0 4B F1 B0 55 4C F1 B0 4D F1 B0 4E | J K UL M N +0AD0 | F1 B0 4F F1 B0 55 50 F1 B0 51 F1 B0 52 F1 B0 53 | O UP Q R S +0AE0 | F1 B0 55 54 F1 B0 55 F1 B0 56 F1 B0 57 F1 B0 55 | UT U V W U +0AF0 | 58 F1 B0 59 F1 B0 5A F1 B0 5B F1 B0 55 5C F1 B0 | X Y Z [ U\ +0B00 | 5D F1 B0 5E F1 B0 5F F1 B0 55 60 F1 B0 61 F1 B0 | ] ^ _ U` a +0B10 | 62 F1 B0 63 F1 B0 55 64 F1 B0 65 F1 B0 66 F1 B0 | b c Ud e f +0B20 | 67 F1 B0 55 68 F1 B0 69 F1 B0 6A F1 B0 6B F1 B0 | g Uh i j k +0B30 | 55 6C F1 B0 6D F1 B0 6E F1 B0 6F F1 B0 55 70 F1 | Ul m n o Up +0B40 | B0 71 F1 B0 72 F1 B0 73 F1 B0 55 74 F1 B0 75 F1 | q r s Ut u +0B50 | B0 76 F1 B0 77 F1 B0 55 78 F1 B0 79 F1 B0 7A F1 | v w Ux y z +0B60 | B0 7B F1 B0 55 7C F1 B0 7D F1 B0 7E F1 B0 7F F1 | { U| } ~ +0B70 | B0 55 80 F1 B0 81 F1 B0 82 F1 B0 83 F1 B0 55 84 | U U +0B80 | F1 B0 85 F1 B0 86 F1 B0 87 F1 B0 55 88 F1 B0 89 | U +0B90 | F1 B0 8A F1 B0 8B F1 B0 55 8C F1 B0 8D F1 B0 8E | U +0BA0 | F1 B0 8F F1 B0 55 90 F1 B0 91 F1 B0 92 F1 B0 93 | U +0BB0 | F1 B0 55 94 F1 B0 95 F1 B0 96 F1 B0 97 F1 B0 55 | U U +0BC0 | 98 F1 B0 99 F1 B0 9A F1 B0 9B F1 B0 55 9C F1 B0 | U +0BD0 | 9D F1 B0 9E F1 B0 9F F1 B0 55 A0 F1 B0 A1 F1 B0 | U +0BE0 | A2 F1 B0 A3 F1 B0 55 A4 F1 B0 A5 F1 B0 A6 F1 B0 | U +0BF0 | A7 F1 B0 55 A8 F1 B0 A9 F1 B0 AA F1 B0 AB F1 B0 | U +0C00 | 55 AC F1 B0 AD F1 B0 AE F1 B0 AF F1 B0 55 B0 F1 | U U +0C10 | B0 B1 F1 B0 B2 F1 B0 B3 F1 B0 55 B4 F1 B0 B5 F1 | U +0C20 | B0 B6 F1 B0 B7 F1 B0 55 B8 F1 B0 B9 F1 B0 BA F1 | U +0C30 | B0 BB F1 B0 55 BC F1 B0 BD F1 B0 BE F1 B0 BF F1 | U +0C40 | B0 55 C0 F1 B0 C1 F1 B0 C2 F1 B0 C3 F1 B0 55 C4 | U U +0C50 | F1 B0 C5 F1 B0 C6 F1 B0 C7 F1 B0 55 C8 F1 B0 C9 | U +0C60 | F1 B0 CA F1 B0 CB F1 B0 55 CC F1 B0 CD F1 B0 CE | U +0C70 | F1 B0 CF F1 B0 55 D0 F1 B0 D1 F1 B0 D2 F1 B0 D3 | U +0C80 | F1 B0 55 D4 F1 B0 D5 F1 B0 D6 F1 B0 D7 F1 B0 55 | U U +0C90 | D8 F1 B0 D9 F1 B0 DA F1 B0 DB F1 B0 55 DC F1 B0 | U +0CA0 | DD F1 B0 DE F1 B0 DF F1 B0 55 E0 F1 B0 E1 F1 B0 | U +0CB0 | E2 F1 B0 E3 F1 B0 55 E4 F1 B0 E5 F1 B0 E6 F1 B0 | U +0CC0 | E7 F1 B0 55 E8 F1 B0 E9 F1 B0 EA F1 B0 EB F1 B0 | U +0CD0 | 55 EC F1 B0 ED F1 B0 EE F1 B0 EF F1 B0 55 F0 F1 | U U +0CE0 | B0 F1 F1 B0 F2 F1 B0 F3 F1 B0 55 F4 F1 B0 F5 F1 | U +0CF0 | B0 F6 F1 B0 F7 F1 B0 55 F8 F1 B0 F9 F1 B0 FA F1 | U +0D00 | B0 FB F1 B0 55 FC F1 B0 FD F1 B0 FE F1 B0 FF F1 | U +0D10 | B0 53 00 05 F2 30 F1 F0 02 F1 F0 03 F1 F0 55 04 | S 0 U +0D20 | F1 F0 05 F1 F0 06 F1 F0 07 F1 F0 55 08 F1 F0 09 | U +0D30 | F1 F0 0A F1 F0 0B F1 F0 55 0C F1 F0 0D F1 F0 0E | U +0D40 | F1 F0 0F F1 F0 55 10 F1 F0 11 F1 F0 12 F1 F0 13 | U +0D50 | F1 F0 55 14 F1 F0 15 F1 F0 16 F1 F0 17 F1 F0 55 | U U +0D60 | 18 F1 F0 19 F1 F0 1A F1 F0 1B F1 F0 55 1C F1 F0 | U +0D70 | 1D F1 F0 1E F1 F0 1F F1 F0 55 20 F1 F0 21 F1 F0 | U ! +0D80 | 22 F1 F0 23 F1 F0 55 24 F1 F0 25 F1 F0 26 F1 F0 | " # U$ % & +0D90 | 27 F1 F0 55 28 F1 F0 29 F1 F0 2A F1 F0 2B F1 F0 | ' U( ) * + +0DA0 | 55 2C F1 F0 2D F1 F0 2E F1 F0 2F F1 F0 55 30 F1 | U, - . / U0 +0DB0 | F0 31 F1 F0 32 F1 F0 33 F1 F0 55 34 F1 F0 35 F1 | 1 2 3 U4 5 +0DC0 | F0 36 F1 F0 37 F1 F0 55 38 F1 F0 39 F1 F0 3A F1 | 6 7 U8 9 : +0DD0 | F0 3B F1 F0 55 3C F1 F0 3D F1 F0 3E F1 F0 3F F1 | ; U< = > ? +0DE0 | F0 55 40 F1 F0 41 F1 F0 42 F1 F0 43 F1 F0 55 44 | U@ A B C UD +0DF0 | F1 F0 45 F1 F0 46 F1 F0 47 F1 F0 55 48 F1 F0 49 | E F G UH I +0E00 | F1 F0 4A F1 F0 4B F1 F0 55 4C F1 F0 4D F1 F0 4E | J K UL M N +0E10 | F1 F0 4F F1 F0 55 50 F1 F0 51 F1 F0 52 F1 F0 53 | O UP Q R S +0E20 | F1 F0 55 54 F1 F0 55 F1 F0 56 F1 F0 57 F1 F0 55 | UT U V W U +0E30 | 58 F1 F0 59 F1 F0 5A F1 F0 5B F1 F0 55 5C F1 F0 | X Y Z [ U\ +0E40 | 5D F1 F0 5E F1 F0 5F F1 F0 55 60 F1 F0 61 F1 F0 | ] ^ _ U` a +0E50 | 62 F1 F0 63 F1 F0 55 64 F1 F0 65 F1 F0 66 F1 F0 | b c Ud e f +0E60 | 67 F1 F0 55 68 F1 F0 69 F1 F0 6A F1 F0 6B F1 F0 | g Uh i j k +0E70 | 55 6C F1 F0 6D F1 F0 6E F1 F0 6F F1 F0 55 70 F1 | Ul m n o Up +0E80 | F0 71 F1 F0 72 F1 F0 73 F1 F0 55 74 F1 F0 75 F1 | q r s Ut u +0E90 | F0 76 F1 F0 77 F1 F0 55 78 F1 F0 79 F1 F0 7A F1 | v w Ux y z +0EA0 | F0 7B F1 F0 55 7C F1 F0 7D F1 F0 7E F1 F0 7F F1 | { U| } ~ +0EB0 | F0 55 80 F1 F0 81 F1 F0 82 F1 F0 83 F1 F0 55 84 | U U +0EC0 | F1 F0 85 F1 F0 86 F1 F0 87 F1 F0 55 88 F1 F0 89 | U +0ED0 | F1 F0 8A F1 F0 8B F1 F0 55 8C F1 F0 8D F1 F0 8E | U +0EE0 | F1 F0 8F F1 F0 55 90 F1 F0 91 F1 F0 92 F1 F0 93 | U +0EF0 | F1 F0 55 94 F1 F0 95 F1 F0 96 F1 F0 97 F1 F0 55 | U U +0F00 | 98 F1 F0 99 F1 F0 9A F1 F0 9B F1 F0 55 9C F1 F0 | U +0F10 | 9D F1 F0 9E F1 F0 9F F1 F0 55 A0 F1 F0 A1 F1 F0 | U +0F20 | A2 F1 F0 A3 F1 F0 55 A4 F1 F0 A5 F1 F0 A6 F1 F0 | U +0F30 | A7 F1 F0 55 A8 F1 F0 A9 F1 F0 AA F1 F0 AB F1 F0 | U +0F40 | 55 AC F1 F0 AD F1 F0 AE F1 F0 AF F1 F0 55 B0 F1 | U U +0F50 | F0 B1 F1 F0 B2 F1 F0 B3 F1 F0 55 B4 F1 F0 B5 F1 | U +0F60 | F0 B6 F1 F0 B7 F1 F0 55 B8 F1 F0 B9 F1 F0 BA F1 | U +0F70 | F0 BB F1 F0 55 BC F1 F0 BD F1 F0 BE F1 F0 BF F1 | U +0F80 | F0 55 C0 F1 F0 C1 F1 F0 C2 F1 F0 C3 F1 F0 55 C4 | U U +0F90 | F1 F0 C5 F1 F0 C6 F1 F0 C7 F1 F0 55 C8 F1 F0 C9 | U +0FA0 | F1 F0 CA F1 F0 CB F1 F0 55 CC F1 F0 CD F1 F0 CE | U +0FB0 | F1 F0 CF F1 F0 55 D0 F1 F0 D1 F1 F0 D2 F1 F0 D3 | U +0FC0 | F1 F0 55 D4 F1 F0 D5 F1 F0 D6 F1 F0 D7 F1 F0 55 | U U +0FD0 | D8 F1 F0 D9 F1 F0 DA F1 F0 DB F1 F0 55 DC F1 F0 | U +0FE0 | DD F1 F0 DE F1 F0 DF F1 F0 55 E0 F1 F0 E1 F1 F0 | U +0FF0 | E2 F1 F0 E3 F1 F0 55 E4 F1 F0 E5 F1 F0 E6 F1 F0 | U +1000 | E7 F1 F0 55 E8 F1 F0 E9 F1 F0 EA F1 F0 EB F1 F0 | U +1010 | 55 EC F1 F0 ED F1 F0 EE F1 F0 EF F1 F0 55 F0 F1 | U U +1020 | F0 F1 F1 F0 F2 F1 F0 F3 F1 F0 55 F4 F1 F0 F5 F1 | U +1030 | F0 F6 F1 F0 F7 F1 F0 55 F8 F1 F0 F9 F1 F0 FA F1 | U +1040 | F0 FB F1 F0 55 FC F1 F0 FD F1 F0 FE F1 F0 FF F1 | U +1050 | F0 53 00 06 F2 F0 F1 30 02 F5 30 03 F5 30 55 04 | S 0 0 0U +1060 | F5 30 05 F5 30 06 F5 30 07 F5 30 55 08 F5 30 09 | 0 0 0 0U 0 +1070 | F5 30 0A F5 30 0B F5 30 55 0C F5 30 0D F5 30 0E | 0 0 0U 0 0 +1080 | F5 30 0F F5 30 55 10 F5 30 11 F5 30 12 F5 30 13 | 0 0U 0 0 0 +1090 | F5 30 55 14 F5 30 15 F5 30 16 F5 30 17 F5 30 55 | 0U 0 0 0 0U +10A0 | 18 F5 30 19 F5 30 1A F5 30 1B F5 30 55 1C F5 30 | 0 0 0 0U 0 +10B0 | 1D F5 30 1E F5 30 1F F5 30 55 20 F5 30 21 F5 30 | 0 0 0U 0! 0 +10C0 | 22 F5 30 23 F5 30 55 24 F5 30 25 F5 30 26 F5 30 | " 0# 0U$ 0% 0& 0 +10D0 | 27 F5 30 55 28 F5 30 29 F5 30 2A F5 30 2B F5 30 | ' 0U( 0) 0* 0+ 0 +10E0 | 55 2C F5 30 2D F5 30 2E F5 30 2F F5 30 55 30 F5 | U, 0- 0. 0/ 0U0 +10F0 | 30 31 F5 30 32 F5 30 33 F5 30 55 34 F5 30 35 F5 | 01 02 03 0U4 05 +1100 | 30 36 F5 30 37 F5 30 55 38 F5 30 39 F5 30 3A F5 | 06 07 0U8 09 0: +1110 | 30 3B F5 30 55 3C F5 30 3D F5 30 3E F5 30 3F F5 | 0; 0U< 0= 0> 0? +1120 | 30 55 40 F5 30 41 F5 30 42 F5 30 43 F5 30 55 44 | 0U@ 0A 0B 0C 0UD +1130 | F5 30 45 F5 30 46 F5 30 47 F5 30 55 48 F5 30 49 | 0E 0F 0G 0UH 0I +1140 | F5 30 4A F5 30 4B F5 30 55 4C F5 30 4D F5 30 4E | 0J 0K 0UL 0M 0N +1150 | F5 30 4F F5 30 55 50 F5 30 51 F5 30 52 F5 30 53 | 0O 0UP 0Q 0R 0S +1160 | F5 30 55 54 F5 30 55 F5 30 56 F5 30 57 F5 30 55 | 0UT 0U 0V 0W 0U +1170 | 58 F5 30 59 F5 30 5A F5 30 5B F5 30 55 5C F5 30 | X 0Y 0Z 0[ 0U\ 0 +1180 | 5D F5 30 5E F5 30 5F F5 30 55 60 F5 30 61 F5 30 | ] 0^ 0_ 0U` 0a 0 +1190 | 62 F5 30 63 F5 30 55 64 F5 30 65 F5 30 66 F5 30 | b 0c 0Ud 0e 0f 0 +11A0 | 67 F5 30 55 68 F5 30 69 F5 30 6A F5 30 6B F5 30 | g 0Uh 0i 0j 0k 0 +11B0 | 55 6C F5 30 6D F5 30 6E F5 30 6F F5 30 55 70 F5 | Ul 0m 0n 0o 0Up +11C0 | 30 71 F5 30 72 F5 30 73 F5 30 55 74 F5 30 75 F5 | 0q 0r 0s 0Ut 0u +11D0 | 30 76 F5 30 77 F5 30 55 78 F5 30 79 F5 30 7A F5 | 0v 0w 0Ux 0y 0z +11E0 | 30 7B F5 30 55 7C F5 30 7D F5 30 7E F5 30 7F F5 | 0{ 0U| 0} 0~ 0 +11F0 | 30 55 80 F5 30 81 F5 30 82 F5 30 83 F5 30 55 84 | 0U 0 0 0 0U +1200 | F5 30 85 F5 30 86 F5 30 87 F5 30 55 88 F5 30 89 | 0 0 0 0U 0 +1210 | F5 30 8A F5 30 8B F5 30 55 8C F5 30 8D F5 30 8E | 0 0 0U 0 0 +1220 | F5 30 8F F5 30 55 90 F5 30 91 F5 30 92 F5 30 93 | 0 0U 0 0 0 +1230 | F5 30 55 94 F5 30 95 F5 30 96 F5 30 97 F5 30 55 | 0U 0 0 0 0U +1240 | 98 F5 30 99 F5 30 9A F5 30 9B F5 30 55 9C F5 30 | 0 0 0 0U 0 +1250 | 9D F5 30 9E F5 30 9F F5 30 55 A0 F5 30 A1 F5 30 | 0 0 0U 0 0 +1260 | A2 F5 30 A3 F5 30 55 A4 F5 30 A5 F5 30 A6 F5 30 | 0 0U 0 0 0 +1270 | A7 F5 30 55 A8 F5 30 A9 F5 30 AA F5 30 AB F5 30 | 0U 0 0 0 0 +1280 | 55 AC F5 30 AD F5 30 AE F5 30 AF F5 30 55 B0 F5 | U 0 0 0 0U +1290 | 30 B1 F5 30 B2 F5 30 B3 F5 30 55 B4 F5 30 B5 F5 | 0 0 0 0U 0 +12A0 | 30 B6 F5 30 B7 F5 30 55 B8 F5 30 B9 F5 30 BA F5 | 0 0 0U 0 0 +12B0 | 30 BB F5 30 55 BC F5 30 BD F5 30 BE F5 30 BF F5 | 0 0U 0 0 0 +12C0 | 30 55 C0 F5 30 C1 F5 30 C2 F5 30 C3 F5 30 55 C4 | 0U 0 0 0 0U +12D0 | F5 30 C5 F5 30 C6 F5 30 C7 F5 30 55 C8 F5 30 C9 | 0 0 0 0U 0 +12E0 | F5 30 CA F5 30 CB F5 30 55 CC F5 30 CD F5 30 CE | 0 0 0U 0 0 +12F0 | F5 30 CF F5 30 55 D0 F5 30 D1 F5 30 D2 F5 30 D3 | 0 0U 0 0 0 +1300 | F5 30 55 D4 F5 30 D5 F5 30 D6 F5 30 D7 F5 30 55 | 0U 0 0 0 0U +1310 | D8 F5 30 D9 F5 30 DA F5 30 DB F5 30 55 DC F5 30 | 0 0 0 0U 0 +1320 | DD F5 30 DE F5 30 DF F5 30 55 E0 F5 30 E1 F5 30 | 0 0 0U 0 0 +1330 | E2 F5 30 E3 F5 30 55 E4 F5 30 E5 F5 30 E6 F5 30 | 0 0U 0 0 0 +1340 | E7 F5 30 55 E8 F5 30 E9 F5 30 EA F5 30 EB F5 30 | 0U 0 0 0 0 +1350 | 55 EC F5 30 ED F5 30 EE F5 30 EF F5 30 55 F0 F5 | U 0 0 0 0U +1360 | 30 F1 F5 30 F2 F5 30 F3 F5 30 55 F4 F5 30 F5 F5 | 0 0 0 0U 0 +1370 | 30 F6 F5 30 F7 F5 30 55 F8 F5 30 F9 F5 30 FA F5 | 0 0 0U 0 0 +1380 | 30 FB F5 30 55 FC F5 30 FD F5 30 FE F5 30 FF F5 | 0 0U 0 0 0 +1390 | 30 53 00 07 F2 F0 F1 70 02 F1 70 03 F9 70 55 04 | 0S p p pU +13A0 | F9 70 05 F9 70 06 F9 70 07 F9 70 55 08 F9 70 09 | p p p pU p +13B0 | F9 70 0A F9 70 0B F9 70 0D 0C F9 70 0D 07 4C 00 | p p p p L +I 91446 2023-12-31 21:06:48 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 C0 13 5D 00 00 00 BC 13 00 00 38 18 00 00 | m ] 8 +0010 | 52 ED F0 01 EF F0 F1 F0 02 F1 F0 03 F1 F0 55 04 | R U +0020 | F1 F0 05 F1 F0 06 F1 F0 07 F1 F0 55 08 F1 F0 09 | U +0030 | F1 F0 0A F1 F0 0B F1 F0 55 0C F1 F0 0D F1 F0 0E | U +0040 | F1 F0 0F F1 F0 55 10 F1 F0 11 F1 F0 12 F1 F0 13 | U +0050 | F1 F0 55 14 F1 F0 15 F1 F0 16 F1 F0 17 F1 F0 55 | U U +0060 | 18 F1 F0 19 F1 F0 1A F1 F0 1B F1 F0 55 1C F1 F0 | U +0070 | 1D F1 F0 1E F1 F0 1F F1 F0 55 20 F1 F0 21 F1 F0 | U ! +0080 | 22 F1 F0 23 F1 F0 55 24 F1 F0 25 F1 F0 26 F1 F0 | " # U$ % & +0090 | 27 F1 F0 55 28 F1 F0 29 F1 F0 2A F1 F0 2B F1 F0 | ' U( ) * + +00A0 | 55 2C F1 F0 2D F1 F0 2E F1 F0 2F F1 F0 55 30 F1 | U, - . / U0 +00B0 | F0 31 F1 F0 32 F1 F0 33 F1 F0 55 34 F1 F0 35 F1 | 1 2 3 U4 5 +00C0 | F0 36 F1 F0 37 F1 F0 55 38 F1 F0 39 F1 F0 3A F1 | 6 7 U8 9 : +00D0 | F0 3B F1 F0 55 3C F1 F0 3D F1 F0 3E F1 F0 3F F1 | ; U< = > ? +00E0 | F0 55 40 F1 F0 41 F1 F0 42 F1 F0 43 F1 F0 55 44 | U@ A B C UD +00F0 | F1 F0 45 F1 F0 46 F1 F0 47 F1 F0 55 48 F1 F0 49 | E F G UH I +0100 | F1 F0 4A F1 F0 4B F1 F0 55 4C F1 F0 4D F1 F0 4E | J K UL M N +0110 | F1 F0 4F F1 F0 55 50 F1 F0 51 F1 F0 52 F1 F0 53 | O UP Q R S +0120 | F1 F0 55 54 F1 F0 55 F1 F0 56 F1 F0 57 F1 F0 55 | UT U V W U +0130 | 58 F1 F0 59 F1 F0 5A F1 F0 5B F1 F0 55 5C F1 F0 | X Y Z [ U\ +0140 | 5D F1 F0 5E F1 F0 5F F1 F0 55 60 F1 F0 61 F1 F0 | ] ^ _ U` a +0150 | 62 F1 F0 63 F1 F0 55 64 F1 F0 65 F1 F0 66 F1 F0 | b c Ud e f +0160 | 67 F1 F0 55 68 F1 F0 69 F1 F0 6A F1 F0 6B F1 F0 | g Uh i j k +0170 | 55 6C F1 F0 6D F1 F0 6E F1 F0 6F F1 F0 55 70 F1 | Ul m n o Up +0180 | F0 71 F1 F0 72 F1 F0 73 F1 F0 55 74 F1 F0 75 F1 | q r s Ut u +0190 | F0 76 F1 F0 77 F1 F0 55 78 F1 F0 79 F1 F0 7A F1 | v w Ux y z +01A0 | F0 7B F1 F0 55 7C F1 F0 7D F1 F0 7E F1 F0 7F F1 | { U| } ~ +01B0 | F0 55 80 F1 F0 81 F1 F0 82 F1 F0 83 F1 F0 55 84 | U U +01C0 | F1 F0 85 F1 F0 86 F1 F0 87 F1 F0 55 88 F1 F0 89 | U +01D0 | F1 F0 8A F1 F0 8B F1 F0 55 8C F1 F0 8D F1 F0 8E | U +01E0 | F1 F0 8F F1 F0 55 90 F1 F0 91 F1 F0 92 F1 F0 93 | U +01F0 | F1 F0 55 94 F1 F0 95 F1 F0 96 F1 F0 97 F1 F0 55 | U U +0200 | 98 F1 F0 99 F1 F0 9A F1 F0 9B F1 F0 55 9C F1 F0 | U +0210 | 9D F1 F0 9E F1 F0 9F F1 F0 55 A0 F1 F0 A1 F1 F0 | U +0220 | A2 F1 F0 A3 F1 F0 55 A4 F1 F0 A5 F1 F0 A6 F1 F0 | U +0230 | A7 F1 F0 55 A8 F1 F0 A9 F1 F0 AA F1 F0 AB F1 F0 | U +0240 | 55 AC F1 F0 AD F1 F0 AE F1 F0 AF F1 F0 55 B0 F1 | U U +0250 | F0 B1 F1 F0 B2 F1 F0 B3 F1 F0 55 B4 F1 F0 B5 F1 | U +0260 | F0 B6 F1 F0 B7 F1 F0 55 B8 F1 F0 B9 F1 F0 BA F1 | U +0270 | F0 BB F1 F0 55 BC F1 F0 BD F1 F0 BE F1 F0 BF F1 | U +0280 | F0 55 C0 F1 F0 C1 F1 F0 C2 F1 F0 C3 F1 F0 55 C4 | U U +0290 | F1 F0 C5 F1 F0 C6 F1 F0 C7 F1 F0 55 C8 F1 F0 C9 | U +02A0 | F1 F0 CA F1 F0 CB F1 F0 55 CC F1 F0 CD F1 F0 CE | U +02B0 | F1 F0 CF F1 F0 55 D0 F1 F0 D1 F1 F0 D2 F1 F0 D3 | U +02C0 | F1 F0 55 D4 F1 F0 D5 F1 F0 D6 F1 F0 D7 F1 F0 55 | U U +02D0 | D8 F1 F0 D9 F1 F0 DA F1 F0 DB F1 F0 55 DC F1 F0 | U +02E0 | DD F1 F0 DE F1 F0 DF F1 F0 55 E0 F1 F0 E1 F1 F0 | U +02F0 | E2 F1 F0 E3 F1 F0 55 E4 F1 F0 E5 F1 F0 E6 F1 F0 | U +0300 | E7 F1 F0 55 E8 F1 F0 E9 F1 F0 EA F1 F0 EB F1 F0 | U +0310 | 55 EC F1 F0 ED F1 F0 EE F1 F0 EF F1 F0 55 F0 F1 | U U +0320 | F0 F1 F1 F0 F2 F1 F0 F3 F1 F0 55 F4 F1 F0 F5 F1 | U +0330 | F0 F6 F1 F0 F7 F1 F0 55 F8 F1 F0 F9 F1 F0 FA F1 | U +0340 | F0 FB F1 F0 55 FC F1 F0 FD F1 F0 FE F1 F0 FF F1 | U +0350 | F0 53 00 02 EF F0 F1 30 02 F1 30 03 F1 30 55 04 | S 0 0 0U +0360 | F1 30 05 F1 30 06 F1 30 07 F1 30 55 08 F1 30 09 | 0 0 0 0U 0 +0370 | F1 30 0A F1 30 0B F1 30 55 0C F1 30 0D F1 30 0E | 0 0 0U 0 0 +0380 | F1 30 0F F1 30 55 10 F1 30 11 F1 30 12 F1 30 13 | 0 0U 0 0 0 +0390 | F1 30 55 14 F1 30 15 F1 30 16 F1 30 17 F1 30 55 | 0U 0 0 0 0U +03A0 | 18 F1 30 19 F1 30 1A F1 30 1B F1 30 55 1C F1 30 | 0 0 0 0U 0 +03B0 | 1D F1 30 1E F1 30 1F F1 30 55 20 F1 30 21 F1 30 | 0 0 0U 0! 0 +03C0 | 22 F1 30 23 F1 30 55 24 F1 30 25 F1 30 26 F1 30 | " 0# 0U$ 0% 0& 0 +03D0 | 27 F1 30 55 28 F1 30 29 F1 30 2A F1 30 2B F1 30 | ' 0U( 0) 0* 0+ 0 +03E0 | 55 2C F1 30 2D F1 30 2E F1 30 2F F1 30 55 30 F1 | U, 0- 0. 0/ 0U0 +03F0 | 30 31 F1 30 32 F1 30 33 F1 30 55 34 F1 30 35 F1 | 01 02 03 0U4 05 +0400 | 30 36 F1 30 37 F1 30 55 38 F1 30 39 F1 30 3A F1 | 06 07 0U8 09 0: +0410 | 30 3B F1 30 55 3C F1 30 3D F1 30 3E F1 30 3F F1 | 0; 0U< 0= 0> 0? +0420 | 30 55 40 F1 30 41 F1 30 42 F1 30 43 F1 30 55 44 | 0U@ 0A 0B 0C 0UD +0430 | F1 30 45 F1 30 46 F1 30 47 F1 30 55 48 F1 30 49 | 0E 0F 0G 0UH 0I +0440 | F1 30 4A F1 30 4B F1 30 55 4C F1 30 4D F1 30 4E | 0J 0K 0UL 0M 0N +0450 | F1 30 4F F1 30 55 50 F1 30 51 F1 30 52 F1 30 53 | 0O 0UP 0Q 0R 0S +0460 | F1 30 55 54 F1 30 55 F1 30 56 F1 30 57 F1 30 55 | 0UT 0U 0V 0W 0U +0470 | 58 F1 30 59 F1 30 5A F1 30 5B F1 30 55 5C F1 30 | X 0Y 0Z 0[ 0U\ 0 +0480 | 5D F1 30 5E F1 30 5F F1 30 55 60 F1 30 61 F1 30 | ] 0^ 0_ 0U` 0a 0 +0490 | 62 F1 30 63 F1 30 55 64 F1 30 65 F1 30 66 F1 30 | b 0c 0Ud 0e 0f 0 +04A0 | 67 F1 30 55 68 F1 30 69 F1 30 6A F1 30 6B F1 30 | g 0Uh 0i 0j 0k 0 +04B0 | 55 6C F1 30 6D F1 30 6E F1 30 6F F1 30 55 70 F1 | Ul 0m 0n 0o 0Up +04C0 | 30 71 F1 30 72 F1 30 73 F1 30 55 74 F1 30 75 F1 | 0q 0r 0s 0Ut 0u +04D0 | 30 76 F1 30 77 F1 30 55 78 F1 30 79 F1 30 7A F1 | 0v 0w 0Ux 0y 0z +04E0 | 30 7B F1 30 55 7C F1 30 7D F1 30 7E F1 30 7F F1 | 0{ 0U| 0} 0~ 0 +04F0 | 30 55 80 F1 30 81 F1 30 82 F1 30 83 F1 30 55 84 | 0U 0 0 0 0U +0500 | F1 30 85 F1 30 86 F1 30 87 F1 30 55 88 F1 30 89 | 0 0 0 0U 0 +0510 | F1 30 8A F1 30 8B F1 30 55 8C F1 30 8D F1 30 8E | 0 0 0U 0 0 +0520 | F1 30 8F F1 30 55 90 F1 30 91 F1 30 92 F1 30 93 | 0 0U 0 0 0 +0530 | F1 30 55 94 F1 30 95 F1 30 96 F1 30 97 F1 30 55 | 0U 0 0 0 0U +0540 | 98 F1 30 99 F1 30 9A F1 30 9B F1 30 55 9C F1 30 | 0 0 0 0U 0 +0550 | 9D F1 30 9E F1 30 9F F1 30 55 A0 F1 30 A1 F1 30 | 0 0 0U 0 0 +0560 | A2 F1 30 A3 F1 30 55 A4 F1 30 A5 F1 30 A6 F1 30 | 0 0U 0 0 0 +0570 | A7 F1 30 55 A8 F1 30 A9 F1 30 AA F1 30 AB F1 30 | 0U 0 0 0 0 +0580 | 55 AC F1 30 AD F1 30 AE F1 30 AF F1 30 55 B0 F1 | U 0 0 0 0U +0590 | 30 B1 F1 30 B2 F1 30 B3 F1 30 55 B4 F1 30 B5 F1 | 0 0 0 0U 0 +05A0 | 30 B6 F1 30 B7 F1 30 55 B8 F1 30 B9 F1 30 BA F1 | 0 0 0U 0 0 +05B0 | 30 BB F1 30 55 BC F1 30 BD F1 30 BE F1 30 BF F1 | 0 0U 0 0 0 +05C0 | 30 55 C0 F1 30 C1 F1 30 C2 F1 30 C3 F1 30 55 C4 | 0U 0 0 0 0U +05D0 | F1 30 C5 F1 30 C6 F1 30 C7 F1 30 55 C8 F1 30 C9 | 0 0 0 0U 0 +05E0 | F1 30 CA F1 30 CB F1 30 55 CC F1 30 CD F1 30 CE | 0 0 0U 0 0 +05F0 | F1 30 CF F1 30 55 D0 F1 30 D1 F1 30 D2 F1 30 D3 | 0 0U 0 0 0 +0600 | F1 30 55 D4 F1 30 D5 F1 30 D6 F1 30 D7 F1 30 55 | 0U 0 0 0 0U +0610 | D8 F1 30 D9 F1 30 DA F1 30 DB F1 30 55 DC F1 30 | 0 0 0 0U 0 +0620 | DD F1 30 DE F1 30 DF F1 30 55 E0 F1 30 E1 F1 30 | 0 0 0U 0 0 +0630 | E2 F1 30 E3 F1 30 55 E4 F1 30 E5 F1 30 E6 F1 30 | 0 0U 0 0 0 +0640 | E7 F1 30 55 E8 F1 30 E9 F1 30 EA F1 30 EB F1 30 | 0U 0 0 0 0 +0650 | 55 EC F1 30 ED F1 30 EE F1 30 EF F1 30 55 F0 F1 | U 0 0 0 0U +0660 | 30 F1 F1 30 F2 F1 30 F3 F1 30 55 F4 F1 30 F5 F1 | 0 0 0 0U 0 +0670 | 30 F6 F1 30 F7 F1 30 55 F8 F1 30 F9 F1 30 FA F1 | 0 0 0U 0 0 +0680 | 30 FB F1 30 55 FC F1 30 FD F1 30 FE F1 30 FF F1 | 0 0U 0 0 0 +0690 | 30 53 00 03 EF F0 F1 70 02 F1 70 03 F1 70 55 04 | 0S p p pU +06A0 | F1 70 05 F1 70 06 F1 70 07 F1 70 55 08 F1 70 09 | p p p pU p +06B0 | F1 70 0A F1 70 0B F1 70 55 0C F1 70 0D F1 70 0E | p p pU p p +06C0 | F1 70 0F F1 70 55 10 F1 70 11 F1 70 12 F1 70 13 | p pU p p p +06D0 | F1 70 55 14 F1 70 15 F1 70 16 F1 70 17 F1 70 55 | pU p p p pU +06E0 | 18 F1 70 19 F1 70 1A F1 70 1B F1 70 55 1C F1 70 | p p p pU p +06F0 | 1D F1 70 1E F1 70 1F F1 70 55 20 F1 70 21 F1 70 | p p pU p! p +0700 | 22 F1 70 23 F1 70 55 24 F1 70 25 F1 70 26 F1 70 | " p# pU$ p% p& p +0710 | 27 F1 70 55 28 F1 70 29 F1 70 2A F1 70 2B F1 70 | ' pU( p) p* p+ p +0720 | 55 2C F1 70 2D F1 70 2E F1 70 2F F1 70 55 30 F1 | U, p- p. p/ pU0 +0730 | 70 31 F1 70 32 F1 70 33 F1 70 55 34 F1 70 35 F1 | p1 p2 p3 pU4 p5 +0740 | 70 36 F1 70 37 F1 70 55 38 F1 70 39 F1 70 3A F1 | p6 p7 pU8 p9 p: +0750 | 70 3B F1 70 55 3C F1 70 3D F1 70 3E F1 70 3F F1 | p; pU< p= p> p? +0760 | 70 55 40 F1 70 41 F1 70 42 F1 70 43 F1 70 55 44 | pU@ pA pB pC pUD +0770 | F1 70 45 F1 70 46 F1 70 47 F1 70 55 48 F1 70 49 | pE pF pG pUH pI +0780 | F1 70 4A F1 70 4B F1 70 55 4C F1 70 4D F1 70 4E | pJ pK pUL pM pN +0790 | F1 70 4F F1 70 55 50 F1 70 51 F1 70 52 F1 70 53 | pO pUP pQ pR pS +07A0 | F1 70 55 54 F1 70 55 F1 70 56 F1 70 57 F1 70 55 | pUT pU pV pW pU +07B0 | 58 F1 70 59 F1 70 5A F1 70 5B F1 70 55 5C F1 70 | X pY pZ p[ pU\ p +07C0 | 5D F1 70 5E F1 70 5F F1 70 55 60 F1 70 61 F1 70 | ] p^ p_ pU` pa p +07D0 | 62 F1 70 63 F1 70 55 64 F1 70 65 F1 70 66 F1 70 | b pc pUd pe pf p +07E0 | 67 F1 70 55 68 F1 70 69 F1 70 6A F1 70 6B F1 70 | g pUh pi pj pk p +07F0 | 55 6C F1 70 6D F1 70 6E F1 70 6F F1 70 55 70 F1 | Ul pm pn po pUp +0800 | 70 71 F1 70 72 F1 70 73 F1 70 55 74 F1 70 75 F1 | pq pr ps pUt pu +0810 | 70 76 F1 70 77 F1 70 55 78 F1 70 79 F1 70 7A F1 | pv pw pUx py pz +0820 | 70 7B F1 70 55 7C F1 70 7D F1 70 7E F1 70 7F F1 | p{ pU| p} p~ p +0830 | 70 55 80 F1 70 81 F1 70 82 F1 70 83 F1 70 55 84 | pU p p p pU +0840 | F1 70 85 F1 70 86 F1 70 87 F1 70 55 88 F1 70 89 | p p p pU p +0850 | F1 70 8A F1 70 8B F1 70 55 8C F1 70 8D F1 70 8E | p p pU p p +0860 | F1 70 8F F1 70 55 90 F1 70 91 F1 70 92 F1 70 93 | p pU p p p +0870 | F1 70 55 94 F1 70 95 F1 70 96 F1 70 97 F1 70 55 | pU p p p pU +0880 | 98 F1 70 99 F1 70 9A F1 70 9B F1 70 55 9C F1 70 | p p p pU p +0890 | 9D F1 70 9E F1 70 9F F1 70 55 A0 F1 70 A1 F1 70 | p p pU p p +08A0 | A2 F1 70 A3 F1 70 55 A4 F1 70 A5 F1 70 A6 F1 70 | p pU p p p +08B0 | A7 F1 70 55 A8 F1 70 A9 F1 70 AA F1 70 AB F1 70 | pU p p p p +08C0 | 55 AC F1 70 AD F1 70 AE F1 70 AF F1 70 55 B0 F1 | U p p p pU +08D0 | 70 B1 F1 70 B2 F1 70 B3 F1 70 55 B4 F1 70 B5 F1 | p p p pU p +08E0 | 70 B6 F1 70 B7 F1 70 55 B8 F1 70 B9 F1 70 BA F1 | p p pU p p +08F0 | 70 BB F1 70 55 BC F1 70 BD F1 70 BE F1 70 BF F1 | p pU p p p +0900 | 70 55 C0 F1 70 C1 F1 70 C2 F1 70 C3 F1 70 55 C4 | pU p p p pU +0910 | F1 70 C5 F1 70 C6 F1 70 C7 F1 70 55 C8 F1 70 C9 | p p p pU p +0920 | F1 70 CA F1 70 CB F1 70 55 CC F1 70 CD F1 70 CE | p p pU p p +0930 | F1 70 CF F1 70 55 D0 F1 70 D1 F1 70 D2 F1 70 D3 | p pU p p p +0940 | F1 70 55 D4 F1 70 D5 F1 70 D6 F1 70 D7 F1 70 55 | pU p p p pU +0950 | D8 F1 70 D9 F1 70 DA F1 70 DB F1 70 55 DC F1 70 | p p p pU p +0960 | DD F1 70 DE F1 70 DF F1 70 55 E0 F1 70 E1 F1 70 | p p pU p p +0970 | E2 F1 70 E3 F1 70 55 E4 F1 70 E5 F1 70 E6 F1 70 | p pU p p p +0980 | E7 F1 70 55 E8 F1 70 E9 F1 70 EA F1 70 EB F1 70 | pU p p p p +0990 | 55 EC F1 70 ED F1 70 EE F1 70 EF F1 70 55 F0 F1 | U p p p pU +09A0 | 70 F1 F1 70 F2 F1 70 F3 F1 70 55 F4 F1 70 F5 F1 | p p p pU p +09B0 | 70 F6 F1 70 F7 F1 70 55 F8 F1 70 F9 F1 70 FA F1 | p p pU p p +09C0 | 70 FB F1 70 55 FC F1 70 FD F1 70 FE F1 70 FF F1 | p pU p p p +09D0 | 70 53 00 04 EF F0 F1 B0 02 F1 B0 03 F1 B0 55 04 | pS U +09E0 | F1 B0 05 F1 B0 06 F1 B0 07 F1 B0 55 08 F1 B0 09 | U +09F0 | F1 B0 0A F1 B0 0B F1 B0 55 0C F1 B0 0D F1 B0 0E | U +0A00 | F1 B0 0F F1 B0 55 10 F1 B0 11 F1 B0 12 F1 B0 13 | U +0A10 | F1 B0 55 14 F1 B0 15 F1 B0 16 F1 B0 17 F1 B0 55 | U U +0A20 | 18 F1 B0 19 F1 B0 1A F1 B0 1B F1 B0 55 1C F1 B0 | U +0A30 | 1D F1 B0 1E F1 B0 1F F1 B0 55 20 F1 B0 21 F1 B0 | U ! +0A40 | 22 F1 B0 23 F1 B0 55 24 F1 B0 25 F1 B0 26 F1 B0 | " # U$ % & +0A50 | 27 F1 B0 55 28 F1 B0 29 F1 B0 2A F1 B0 2B F1 B0 | ' U( ) * + +0A60 | 55 2C F1 B0 2D F1 B0 2E F1 B0 2F F1 B0 55 30 F1 | U, - . / U0 +0A70 | B0 31 F1 B0 32 F1 B0 33 F1 B0 55 34 F1 B0 35 F1 | 1 2 3 U4 5 +0A80 | B0 36 F1 B0 37 F1 B0 55 38 F1 B0 39 F1 B0 3A F1 | 6 7 U8 9 : +0A90 | B0 3B F1 B0 55 3C F1 B0 3D F1 B0 3E F1 B0 3F F1 | ; U< = > ? +0AA0 | B0 55 40 F1 B0 41 F1 B0 42 F1 B0 43 F1 B0 55 44 | U@ A B C UD +0AB0 | F1 B0 45 F1 B0 46 F1 B0 47 F1 B0 55 48 F1 B0 49 | E F G UH I +0AC0 | F1 B0 4A F1 B0 4B F1 B0 55 4C F1 B0 4D F1 B0 4E | J K UL M N +0AD0 | F1 B0 4F F1 B0 55 50 F1 B0 51 F1 B0 52 F1 B0 53 | O UP Q R S +0AE0 | F1 B0 55 54 F1 B0 55 F1 B0 56 F1 B0 57 F1 B0 55 | UT U V W U +0AF0 | 58 F1 B0 59 F1 B0 5A F1 B0 5B F1 B0 55 5C F1 B0 | X Y Z [ U\ +0B00 | 5D F1 B0 5E F1 B0 5F F1 B0 55 60 F1 B0 61 F1 B0 | ] ^ _ U` a +0B10 | 62 F1 B0 63 F1 B0 55 64 F1 B0 65 F1 B0 66 F1 B0 | b c Ud e f +0B20 | 67 F1 B0 55 68 F1 B0 69 F1 B0 6A F1 B0 6B F1 B0 | g Uh i j k +0B30 | 55 6C F1 B0 6D F1 B0 6E F1 B0 6F F1 B0 55 70 F1 | Ul m n o Up +0B40 | B0 71 F1 B0 72 F1 B0 73 F1 B0 55 74 F1 B0 75 F1 | q r s Ut u +0B50 | B0 76 F1 B0 77 F1 B0 55 78 F1 B0 79 F1 B0 7A F1 | v w Ux y z +0B60 | B0 7B F1 B0 55 7C F1 B0 7D F1 B0 7E F1 B0 7F F1 | { U| } ~ +0B70 | B0 55 80 F1 B0 81 F1 B0 82 F1 B0 83 F1 B0 55 84 | U U +0B80 | F1 B0 85 F1 B0 86 F1 B0 87 F1 B0 55 88 F1 B0 89 | U +0B90 | F1 B0 8A F1 B0 8B F1 B0 55 8C F1 B0 8D F1 B0 8E | U +0BA0 | F1 B0 8F F1 B0 55 90 F1 B0 91 F1 B0 92 F1 B0 93 | U +0BB0 | F1 B0 55 94 F1 B0 95 F1 B0 96 F1 B0 97 F1 B0 55 | U U +0BC0 | 98 F1 B0 99 F1 B0 9A F1 B0 9B F1 B0 55 9C F1 B0 | U +0BD0 | 9D F1 B0 9E F1 B0 9F F1 B0 55 A0 F1 B0 A1 F1 B0 | U +0BE0 | A2 F1 B0 A3 F1 B0 55 A4 F1 B0 A5 F1 B0 A6 F1 B0 | U +0BF0 | A7 F1 B0 55 A8 F1 B0 A9 F1 B0 AA F1 B0 AB F1 B0 | U +0C00 | 55 AC F1 B0 AD F1 B0 AE F1 B0 AF F1 B0 55 B0 F1 | U U +0C10 | B0 B1 F1 B0 B2 F1 B0 B3 F1 B0 55 B4 F1 B0 B5 F1 | U +0C20 | B0 B6 F1 B0 B7 F1 B0 55 B8 F1 B0 B9 F1 B0 BA F1 | U +0C30 | B0 BB F1 B0 55 BC F1 B0 BD F1 B0 BE F1 B0 BF F1 | U +0C40 | B0 55 C0 F1 B0 C1 F1 B0 C2 F1 B0 C3 F1 B0 55 C4 | U U +0C50 | F1 B0 C5 F1 B0 C6 F1 B0 C7 F1 B0 55 C8 F1 B0 C9 | U +0C60 | F1 B0 CA F1 B0 CB F1 B0 55 CC F1 B0 CD F1 B0 CE | U +0C70 | F1 B0 CF F1 B0 55 D0 F1 B0 D1 F1 B0 D2 F1 B0 D3 | U +0C80 | F1 B0 55 D4 F1 B0 D5 F1 B0 D6 F1 B0 D7 F1 B0 55 | U U +0C90 | D8 F1 B0 D9 F1 B0 DA F1 B0 DB F1 B0 55 DC F1 B0 | U +0CA0 | DD F1 B0 DE F1 B0 DF F1 B0 55 E0 F1 B0 E1 F1 B0 | U +0CB0 | E2 F1 B0 E3 F1 B0 55 E4 F1 B0 E5 F1 B0 E6 F1 B0 | U +0CC0 | E7 F1 B0 55 E8 F1 B0 E9 F1 B0 EA F1 B0 EB F1 B0 | U +0CD0 | 55 EC F1 B0 ED F1 B0 EE F1 B0 EF F1 B0 55 F0 F1 | U U +0CE0 | B0 F1 F1 B0 F2 F1 B0 F3 F1 B0 55 F4 F1 B0 F5 F1 | U +0CF0 | B0 F6 F1 B0 F7 F1 B0 55 F8 F1 B0 F9 F1 B0 FA F1 | U +0D00 | B0 FB F1 B0 55 FC F1 B0 FD F1 B0 FE F1 B0 FF F1 | U +0D10 | B0 53 00 05 F2 30 F1 F0 02 F1 F0 03 F1 F0 55 04 | S 0 U +0D20 | F1 F0 05 F1 F0 06 F1 F0 07 F1 F0 55 08 F1 F0 09 | U +0D30 | F1 F0 0A F1 F0 0B F1 F0 55 0C F1 F0 0D F1 F0 0E | U +0D40 | F1 F0 0F F1 F0 55 10 F1 F0 11 F1 F0 12 F1 F0 13 | U +0D50 | F1 F0 55 14 F1 F0 15 F1 F0 16 F1 F0 17 F1 F0 55 | U U +0D60 | 18 F1 F0 19 F1 F0 1A F1 F0 1B F1 F0 55 1C F1 F0 | U +0D70 | 1D F1 F0 1E F1 F0 1F F1 F0 55 20 F1 F0 21 F1 F0 | U ! +0D80 | 22 F1 F0 23 F1 F0 55 24 F1 F0 25 F1 F0 26 F1 F0 | " # U$ % & +0D90 | 27 F1 F0 55 28 F1 F0 29 F1 F0 2A F1 F0 2B F1 F0 | ' U( ) * + +0DA0 | 55 2C F1 F0 2D F1 F0 2E F1 F0 2F F1 F0 55 30 F1 | U, - . / U0 +0DB0 | F0 31 F1 F0 32 F1 F0 33 F1 F0 55 34 F1 F0 35 F1 | 1 2 3 U4 5 +0DC0 | F0 36 F1 F0 37 F1 F0 55 38 F1 F0 39 F1 F0 3A F1 | 6 7 U8 9 : +0DD0 | F0 3B F1 F0 55 3C F1 F0 3D F1 F0 3E F1 F0 3F F1 | ; U< = > ? +0DE0 | F0 55 40 F1 F0 41 F1 F0 42 F1 F0 43 F1 F0 55 44 | U@ A B C UD +0DF0 | F1 F0 45 F1 F0 46 F1 F0 47 F1 F0 55 48 F1 F0 49 | E F G UH I +0E00 | F1 F0 4A F1 F0 4B F1 F0 55 4C F1 F0 4D F1 F0 4E | J K UL M N +0E10 | F1 F0 4F F1 F0 55 50 F1 F0 51 F1 F0 52 F1 F0 53 | O UP Q R S +0E20 | F1 F0 55 54 F1 F0 55 F1 F0 56 F1 F0 57 F1 F0 55 | UT U V W U +0E30 | 58 F1 F0 59 F1 F0 5A F1 F0 5B F1 F0 55 5C F1 F0 | X Y Z [ U\ +0E40 | 5D F1 F0 5E F1 F0 5F F1 F0 55 60 F1 F0 61 F1 F0 | ] ^ _ U` a +0E50 | 62 F1 F0 63 F1 F0 55 64 F1 F0 65 F1 F0 66 F1 F0 | b c Ud e f +0E60 | 67 F1 F0 55 68 F1 F0 69 F1 F0 6A F1 F0 6B F1 F0 | g Uh i j k +0E70 | 55 6C F1 F0 6D F1 F0 6E F1 F0 6F F1 F0 55 70 F1 | Ul m n o Up +0E80 | F0 71 F1 F0 72 F1 F0 73 F1 F0 55 74 F1 F0 75 F1 | q r s Ut u +0E90 | F0 76 F1 F0 77 F1 F0 55 78 F1 F0 79 F1 F0 7A F1 | v w Ux y z +0EA0 | F0 7B F1 F0 55 7C F1 F0 7D F1 F0 7E F1 F0 7F F1 | { U| } ~ +0EB0 | F0 55 80 F1 F0 81 F1 F0 82 F1 F0 83 F1 F0 55 84 | U U +0EC0 | F1 F0 85 F1 F0 86 F1 F0 87 F1 F0 55 88 F1 F0 89 | U +0ED0 | F1 F0 8A F1 F0 8B F1 F0 55 8C F1 F0 8D F1 F0 8E | U +0EE0 | F1 F0 8F F1 F0 55 90 F1 F0 91 F1 F0 92 F1 F0 93 | U +0EF0 | F1 F0 55 94 F1 F0 95 F1 F0 96 F1 F0 97 F1 F0 55 | U U +0F00 | 98 F1 F0 99 F1 F0 9A F1 F0 9B F1 F0 55 9C F1 F0 | U +0F10 | 9D F1 F0 9E F1 F0 9F F1 F0 55 A0 F1 F0 A1 F1 F0 | U +0F20 | A2 F1 F0 A3 F1 F0 55 A4 F1 F0 A5 F1 F0 A6 F1 F0 | U +0F30 | A7 F1 F0 55 A8 F1 F0 A9 F1 F0 AA F1 F0 AB F1 F0 | U +0F40 | 55 AC F1 F0 AD F1 F0 AE F1 F0 AF F1 F0 55 B0 F1 | U U +0F50 | F0 B1 F1 F0 B2 F1 F0 B3 F1 F0 55 B4 F1 F0 B5 F1 | U +0F60 | F0 B6 F1 F0 B7 F1 F0 55 B8 F1 F0 B9 F1 F0 BA F1 | U +0F70 | F0 BB F1 F0 55 BC F1 F0 BD F1 F0 BE F1 F0 BF F1 | U +0F80 | F0 55 C0 F1 F0 C1 F1 F0 C2 F1 F0 C3 F1 F0 55 C4 | U U +0F90 | F1 F0 C5 F1 F0 C6 F1 F0 C7 F1 F0 55 C8 F1 F0 C9 | U +0FA0 | F1 F0 CA F1 F0 CB F1 F0 55 CC F1 F0 CD F1 F0 CE | U +0FB0 | F1 F0 CF F1 F0 55 D0 F1 F0 D1 F1 F0 D2 F1 F0 D3 | U +0FC0 | F1 F0 55 D4 F1 F0 D5 F1 F0 D6 F1 F0 D7 F1 F0 55 | U U +0FD0 | D8 F1 F0 D9 F1 F0 DA F1 F0 DB F1 F0 55 DC F1 F0 | U +0FE0 | DD F1 F0 DE F1 F0 DF F1 F0 55 E0 F1 F0 E1 F1 F0 | U +0FF0 | E2 F1 F0 E3 F1 F0 55 E4 F1 F0 E5 F1 F0 E6 F1 F0 | U +1000 | E7 F1 F0 55 E8 F1 F0 E9 F1 F0 EA F1 F0 EB F1 F0 | U +1010 | 55 EC F1 F0 ED F1 F0 EE F1 F0 EF F1 F0 55 F0 F1 | U U +1020 | F0 F1 F1 F0 F2 F1 F0 F3 F1 F0 55 F4 F1 F0 F5 F1 | U +1030 | F0 F6 F1 F0 F7 F1 F0 55 F8 F1 F0 F9 F1 F0 FA F1 | U +1040 | F0 FB F1 F0 55 FC F1 F0 FD F1 F0 FE F1 F0 FF F1 | U +1050 | F0 53 00 06 F2 F0 F1 30 02 F5 30 03 F5 30 55 04 | S 0 0 0U +1060 | F5 30 05 F5 30 06 F5 30 07 F5 30 55 08 F5 30 09 | 0 0 0 0U 0 +1070 | F5 30 0A F5 30 0B F5 30 55 0C F5 30 0D F5 30 0E | 0 0 0U 0 0 +1080 | F5 30 0F F5 30 55 10 F5 30 11 F5 30 12 F5 30 13 | 0 0U 0 0 0 +1090 | F5 30 55 14 F5 30 15 F5 30 16 F5 30 17 F5 30 55 | 0U 0 0 0 0U +10A0 | 18 F5 30 19 F5 30 1A F5 30 1B F5 30 55 1C F5 30 | 0 0 0 0U 0 +10B0 | 1D F5 30 1E F5 30 1F F5 30 55 20 F5 30 21 F5 30 | 0 0 0U 0! 0 +10C0 | 22 F5 30 23 F5 30 55 24 F5 30 25 F5 30 26 F5 30 | " 0# 0U$ 0% 0& 0 +10D0 | 27 F5 30 55 28 F5 30 29 F5 30 2A F5 30 2B F5 30 | ' 0U( 0) 0* 0+ 0 +10E0 | 55 2C F5 30 2D F5 30 2E F5 30 2F F5 30 55 30 F5 | U, 0- 0. 0/ 0U0 +10F0 | 30 31 F5 30 32 F5 30 33 F5 30 55 34 F5 30 35 F5 | 01 02 03 0U4 05 +1100 | 30 36 F5 30 37 F5 30 55 38 F5 30 39 F5 30 3A F5 | 06 07 0U8 09 0: +1110 | 30 3B F5 30 55 3C F5 30 3D F5 30 3E F5 30 3F F5 | 0; 0U< 0= 0> 0? +1120 | 30 55 40 F5 30 41 F5 30 42 F5 30 43 F5 30 55 44 | 0U@ 0A 0B 0C 0UD +1130 | F5 30 45 F5 30 46 F5 30 47 F5 30 55 48 F5 30 49 | 0E 0F 0G 0UH 0I +1140 | F5 30 4A F5 30 4B F5 30 55 4C F5 30 4D F5 30 4E | 0J 0K 0UL 0M 0N +1150 | F5 30 4F F5 30 55 50 F5 30 51 F5 30 52 F5 30 53 | 0O 0UP 0Q 0R 0S +1160 | F5 30 55 54 F5 30 55 F5 30 56 F5 30 57 F5 30 55 | 0UT 0U 0V 0W 0U +1170 | 58 F5 30 59 F5 30 5A F5 30 5B F5 30 55 5C F5 30 | X 0Y 0Z 0[ 0U\ 0 +1180 | 5D F5 30 5E F5 30 5F F5 30 55 60 F5 30 61 F5 30 | ] 0^ 0_ 0U` 0a 0 +1190 | 62 F5 30 63 F5 30 55 64 F5 30 65 F5 30 66 F5 30 | b 0c 0Ud 0e 0f 0 +11A0 | 67 F5 30 55 68 F5 30 69 F5 30 6A F5 30 6B F5 30 | g 0Uh 0i 0j 0k 0 +11B0 | 55 6C F5 30 6D F5 30 6E F5 30 6F F5 30 55 70 F5 | Ul 0m 0n 0o 0Up +11C0 | 30 71 F5 30 72 F5 30 73 F5 30 55 74 F5 30 75 F5 | 0q 0r 0s 0Ut 0u +11D0 | 30 76 F5 30 77 F5 30 55 78 F5 30 79 F5 30 7A F5 | 0v 0w 0Ux 0y 0z +11E0 | 30 7B F5 30 55 7C F5 30 7D F5 30 7E F5 30 7F F5 | 0{ 0U| 0} 0~ 0 +11F0 | 30 55 80 F5 30 81 F5 30 82 F5 30 83 F5 30 55 84 | 0U 0 0 0 0U +1200 | F5 30 85 F5 30 86 F5 30 87 F5 30 55 88 F5 30 89 | 0 0 0 0U 0 +1210 | F5 30 8A F5 30 8B F5 30 55 8C F5 30 8D F5 30 8E | 0 0 0U 0 0 +1220 | F5 30 8F F5 30 55 90 F5 30 91 F5 30 92 F5 30 93 | 0 0U 0 0 0 +1230 | F5 30 55 94 F5 30 95 F5 30 96 F5 30 97 F5 30 55 | 0U 0 0 0 0U +1240 | 98 F5 30 99 F5 30 9A F5 30 9B F5 30 55 9C F5 30 | 0 0 0 0U 0 +1250 | 9D F5 30 9E F5 30 9F F5 30 55 A0 F5 30 A1 F5 30 | 0 0 0U 0 0 +1260 | A2 F5 30 A3 F5 30 55 A4 F5 30 A5 F5 30 A6 F5 30 | 0 0U 0 0 0 +1270 | A7 F5 30 55 A8 F5 30 A9 F5 30 AA F5 30 AB F5 30 | 0U 0 0 0 0 +1280 | 55 AC F5 30 AD F5 30 AE F5 30 AF F5 30 55 B0 F5 | U 0 0 0 0U +1290 | 30 B1 F5 30 B2 F5 30 B3 F5 30 55 B4 F5 30 B5 F5 | 0 0 0 0U 0 +12A0 | 30 B6 F5 30 B7 F5 30 55 B8 F5 30 B9 F5 30 BA F5 | 0 0 0U 0 0 +12B0 | 30 BB F5 30 55 BC F5 30 BD F5 30 BE F5 30 BF F5 | 0 0U 0 0 0 +12C0 | 30 55 C0 F5 30 C1 F5 30 C2 F5 30 C3 F5 30 55 C4 | 0U 0 0 0 0U +12D0 | F5 30 C5 F5 30 C6 F5 30 C7 F5 30 55 C8 F5 30 C9 | 0 0 0 0U 0 +12E0 | F5 30 CA F5 30 CB F5 30 55 CC F5 30 CD F5 30 CE | 0 0 0U 0 0 +12F0 | F5 30 CF F5 30 55 D0 F5 30 D1 F5 30 D2 F5 30 D3 | 0 0U 0 0 0 +1300 | F5 30 55 D4 F5 30 D5 F5 30 D6 F5 30 D7 F5 30 55 | 0U 0 0 0 0U +1310 | D8 F5 30 D9 F5 30 DA F5 30 DB F5 30 55 DC F5 30 | 0 0 0 0U 0 +1320 | DD F5 30 DE F5 30 DF F5 30 55 E0 F5 30 E1 F5 30 | 0 0 0U 0 0 +1330 | E2 F5 30 E3 F5 30 55 E4 F5 30 E5 F5 30 E6 F5 30 | 0 0U 0 0 0 +1340 | E7 F5 30 55 E8 F5 30 E9 F5 30 EA F5 30 EB F5 30 | 0U 0 0 0 0 +1350 | 55 EC F5 30 ED F5 30 EE F5 30 EF F5 30 55 F0 F5 | U 0 0 0 0U +1360 | 30 F1 F5 30 F2 F5 30 F3 F5 30 55 F4 F5 30 F5 F5 | 0 0 0 0U 0 +1370 | 30 F6 F5 30 F7 F5 30 55 F8 F5 30 F9 F5 30 FA F5 | 0 0 0U 0 0 +1380 | 30 FB F5 30 55 FC F5 30 FD F5 30 FE F5 30 FF F5 | 0 0U 0 0 0 +1390 | 30 53 00 07 F2 F0 F1 70 02 F1 70 03 F9 70 55 04 | 0S p p pU +13A0 | F9 70 05 F9 70 06 F9 70 07 F9 70 55 08 F9 70 09 | p p p pU p +13B0 | F9 70 0A F9 70 0B F9 70 0D 0C F9 70 0D 07 4C 00 | p p p p L +I 91446 2023-12-31 21:06:49 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 48 00 5E 00 00 00 44 00 00 00 8C 00 00 00 | m H ^ D +0010 | 5C DC FF FC FB 14 00 01 FC F0 21 FC F0 55 41 FC | \ ! UA +0020 | F0 61 FC F0 81 FC F0 A1 FC F0 55 C1 FC F0 E1 FC | a U +0030 | F0 01 10 00 21 10 00 05 41 10 00 61 10 01 40 0F | ! A a @ +0040 | 52 0F 64 0F 76 00 F3 F8 | R d v +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 0 (00010014) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 1 (00210000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 2 (00410000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 3 (00610000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 4 (00810000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 5 (00A10000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 6 (00C10000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 7 (00E10000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 8 (01010000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 9 (01210000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 10 (01410000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Next item ID for player 11 (01610000) matches expected value +I 91446 2023-12-31 21:06:49 - [Game:15] Sending next item IDs to client: 00010014 00210000 00410000 00610000 +I 91446 2023-12-31 21:06:49 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 48 00 5E 00 00 00 44 00 00 00 8C 00 00 00 | m H ^ D +0010 | B9 00 EE FF 00 0A 14 00 01 0B 00 21 AA 11 00 41 | ! A +0020 | 15 00 61 19 00 81 1D 00 A1 AA 21 00 C1 25 00 E1 | a ! % +0030 | 0B 00 01 10 00 21 0A 31 00 41 35 00 61 10 01 40 | ! 1 A5 a @ +0040 | 0F 52 0F 64 0F 00 29 00 | R d ) +I 91446 2023-12-31 21:06:49 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 64 03 5F 00 00 00 60 03 00 00 64 1B 00 00 | m d _ ` d +0010 | FF 64 1B A8 16 BC 02 00 02 FD 10 EB F0 0E 06 00 | d +0020 | 00 2C 0C 0F 00 00 3E 05 DC FF 15 0F 27 0F 39 0F | , > ' 9 +0030 | 00 4B 0F 5D 0F 6F 0F 81 0F 93 0F A5 0F B7 0F C9 | K ] o +0040 | 0F 00 DB 0F ED 0F FF 0F 11 1F 23 1F 35 1F 47 1F | # 5 G +0050 | 59 1F 00 6B 1F 7D 1F 8F 1F A1 1F B3 1F C5 1F D7 | Y k } +0060 | 1F E9 1F 00 FB 1F 0D 2F 1F 2F 31 2F 43 2F 55 2F | / /1/C/U/ +0070 | 67 2F 79 2F 00 8B 2F 9D 2F AF 2F C1 2F D3 2F E5 | g/y/ / / / / / +0080 | 2F F7 2F 09 3F 00 1B 3F 2D 3F 3F 3F 51 3F 63 3F | / / ? ?-???Q?c? +0090 | 75 3F 87 3F 99 3F 00 AB 3F BD 3F CF 3F E1 3F F3 | u? ? ? ? ? ? ? +00A0 | 3F 05 4F 17 4F 29 4F 00 3B 4F 4D 4F 5F 4F 71 4F | ? O O)O ;OMO_OqO +00B0 | 83 4F 95 4F A7 4F B9 4F 00 CB 4F DD 4F EF 4F 01 | O O O O O O O +00C0 | 5F 13 5F 25 5F 37 5F 49 5F 00 5B 5F 6D 5F 7F 5F | _ _%_7_I_ [_m_ _ +00D0 | 91 5F A3 5F B5 5F C7 5F D9 5F 00 EB 5F FD 5F 0F | _ _ _ _ _ _ _ +00E0 | 6F 21 6F 33 6F 45 6F 57 6F 69 6F 00 7B 6F 8D 6F | o!o3oEoWoio {o o +00F0 | 9F 6F B1 6F C3 6F D5 6F E7 6F F9 6F 00 0B 7F 1D | o o o o o o +0100 | 7F 2F 7F 41 7F 53 7F 65 7F 77 7F 89 7F 00 9B 7F | / A S e w +0110 | AD 7F BF 7F D1 7F E3 7F F5 7F 07 8F 19 8F 00 2B | + +0120 | 8F 3D 8F 4F 8F 61 8F 73 8F 85 8F 97 8F A9 8F 00 | = O a s +0130 | BB 8F CD 8F DF 8F F1 8F 03 9F 15 9F 27 9F 39 9F | ' 9 +0140 | 00 4B 9F 5D 9F 6F 9F 81 9F 93 9F A5 9F B7 9F C9 | K ] o +0150 | 9F 00 DB 9F ED 9F FF 9F 11 AF 23 AF 35 AF 47 AF | # 5 G +0160 | 59 AF 00 6B AF 7D AF 8F AF A1 AF B3 AF C5 AF D7 | Y k } +0170 | AF E9 AF 00 FB AF 0D BF 1F BF 31 BF 43 BF 55 BF | 1 C U +0180 | 67 BF 79 BF 00 8B BF 9D BF AF BF C1 BF D3 BF E5 | g y +0190 | BF F7 BF 09 CF 00 1B CF 2D CF 3F CF 51 CF 63 CF | - ? Q c +01A0 | 75 CF 87 CF 99 CF 00 AB CF BD CF CF CF E1 CF F3 | u +01B0 | CF 05 DF 17 DF 29 DF 00 3B DF 4D DF 5F DF 71 DF | ) ; M _ q +01C0 | 83 DF 95 DF A7 DF B9 DF 00 CB DF DD DF EF DF 01 | +01D0 | EF 13 EF 25 EF 37 EF 49 EF 00 5B EF 6D EF 7F EF | % 7 I [ m +01E0 | 91 EF A3 EF B5 EF C7 EF D9 EF 00 EB EF FD EF 0F | +01F0 | FF 21 FF 33 FF 45 FF 57 FF 69 FF 00 7B FF 8D FF | ! 3 E W i { +0200 | 9F FF B1 FF C3 FF D5 FF E7 FF F9 FF 00 0B 0F 1D | +0210 | 0F 2F 0F 41 0F 53 0F 65 0F 77 0F 89 0F 00 9B 0F | / A S e w +0220 | AD 0F BF 0F D1 0F E3 0F F5 0F 07 1F 19 1F 00 2B | + +0230 | 1F 3D 1F 4F 1F 61 1F 73 1F 85 1F 97 1F A9 1F 00 | = O a s +0240 | BB 1F CD 1F DF 1F F1 1F 03 2F 15 2F 27 2F 39 2F | / /'/9/ +0250 | 00 4B 2F 5D 2F 6F 2F 81 2F 93 2F A5 2F B7 2F C9 | K/]/o/ / / / / +0260 | 2F 00 DB 2F ED 2F FF 2F 11 3F 23 3F 35 3F 47 3F | / / / / ?#?5?G? +0270 | 59 3F 00 6B 3F 7D 3F 8F 3F A1 3F B3 3F C5 3F D7 | Y? k?}? ? ? ? ? +0280 | 3F E9 3F 00 FB 3F 0D 4F 1F 4F 31 4F 43 4F 55 4F | ? ? ? O O1OCOUO +0290 | 67 4F 79 4F 00 8B 4F 9D 4F AF 4F C1 4F D3 4F E5 | gOyO O O O O O +02A0 | 4F F7 4F 09 5F 00 1B 5F 2D 5F 3F 5F 51 5F 63 5F | O O _ _-_?_Q_c_ +02B0 | 75 5F 87 5F 99 5F 00 AB 5F BD 5F CF 5F E1 5F F3 | u_ _ _ _ _ _ _ +02C0 | 5F 05 6F 17 6F 29 6F 00 3B 6F 4D 6F 5F 6F 71 6F | _ o o)o ;oMo_oqo +02D0 | 83 6F 95 6F A7 6F B9 6F 00 CB 6F DD 6F EF 6F 01 | o o o o o o o +02E0 | 7F 13 7F 25 7F 37 7F 49 7F 00 5B 7F 6D 7F 7F 7F | % 7 I [ m +02F0 | 91 7F A3 7F B5 7F C7 7F D9 7F 00 EB 7F FD 7F 0F | +0300 | 8F 21 8F 33 8F 45 8F 57 8F 69 8F 00 7B 8F 8D 8F | ! 3 E W i { +0310 | 9F 8F B1 8F C3 8F D5 8F E7 8F F9 8F 00 0B 9F 1D | +0320 | 9F 2F 9F 41 9F 53 9F 65 9F 77 9F 89 9F 00 9B 9F | / A S e w +0330 | AD 9F BF 9F D1 9F E3 9F F5 9F 07 AF 19 AF 00 2B | + +0340 | AF 3D AF 4F AF 61 AF 73 AF 85 AF 97 AF A9 AF 00 | = O a s +0350 | BB AF CD AF DF AF F1 AF 03 BF 15 BF 27 BF 39 BF | ' 9 +0360 | 00 4B B3 3F | K ? +I 91446 2023-12-31 21:06:49 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 64 03 5F 00 00 00 60 03 00 00 64 1B 00 00 | m d _ ` d +0010 | FF 64 1B A8 16 BC 02 00 02 FD 10 EB F0 0E 06 00 | d +0020 | 00 2C 0C 0F 00 00 3E 05 DC FF 15 0F 27 0F 39 0F | , > ' 9 +0030 | 00 4B 0F 5D 0F 6F 0F 81 0F 93 0F A5 0F B7 0F C9 | K ] o +0040 | 0F 00 DB 0F ED 0F FF 0F 11 1F 23 1F 35 1F 47 1F | # 5 G +0050 | 59 1F 00 6B 1F 7D 1F 8F 1F A1 1F B3 1F C5 1F D7 | Y k } +0060 | 1F E9 1F 00 FB 1F 0D 2F 1F 2F 31 2F 43 2F 55 2F | / /1/C/U/ +0070 | 67 2F 79 2F 00 8B 2F 9D 2F AF 2F C1 2F D3 2F E5 | g/y/ / / / / / +0080 | 2F F7 2F 09 3F 00 1B 3F 2D 3F 3F 3F 51 3F 63 3F | / / ? ?-???Q?c? +0090 | 75 3F 87 3F 99 3F 00 AB 3F BD 3F CF 3F E1 3F F3 | u? ? ? ? ? ? ? +00A0 | 3F 05 4F 17 4F 29 4F 00 3B 4F 4D 4F 5F 4F 71 4F | ? O O)O ;OMO_OqO +00B0 | 83 4F 95 4F A7 4F B9 4F 00 CB 4F DD 4F EF 4F 01 | O O O O O O O +00C0 | 5F 13 5F 25 5F 37 5F 49 5F 00 5B 5F 6D 5F 7F 5F | _ _%_7_I_ [_m_ _ +00D0 | 91 5F A3 5F B5 5F C7 5F D9 5F 00 EB 5F FD 5F 0F | _ _ _ _ _ _ _ +00E0 | 6F 21 6F 33 6F 45 6F 57 6F 69 6F 00 7B 6F 8D 6F | o!o3oEoWoio {o o +00F0 | 9F 6F B1 6F C3 6F D5 6F E7 6F F9 6F 00 0B 7F 1D | o o o o o o +0100 | 7F 2F 7F 41 7F 53 7F 65 7F 77 7F 89 7F 00 9B 7F | / A S e w +0110 | AD 7F BF 7F D1 7F E3 7F F5 7F 07 8F 19 8F 00 2B | + +0120 | 8F 3D 8F 4F 8F 61 8F 73 8F 85 8F 97 8F A9 8F 00 | = O a s +0130 | BB 8F CD 8F DF 8F F1 8F 03 9F 15 9F 27 9F 39 9F | ' 9 +0140 | 00 4B 9F 5D 9F 6F 9F 81 9F 93 9F A5 9F B7 9F C9 | K ] o +0150 | 9F 00 DB 9F ED 9F FF 9F 11 AF 23 AF 35 AF 47 AF | # 5 G +0160 | 59 AF 00 6B AF 7D AF 8F AF A1 AF B3 AF C5 AF D7 | Y k } +0170 | AF E9 AF 00 FB AF 0D BF 1F BF 31 BF 43 BF 55 BF | 1 C U +0180 | 67 BF 79 BF 00 8B BF 9D BF AF BF C1 BF D3 BF E5 | g y +0190 | BF F7 BF 09 CF 00 1B CF 2D CF 3F CF 51 CF 63 CF | - ? Q c +01A0 | 75 CF 87 CF 99 CF 00 AB CF BD CF CF CF E1 CF F3 | u +01B0 | CF 05 DF 17 DF 29 DF 00 3B DF 4D DF 5F DF 71 DF | ) ; M _ q +01C0 | 83 DF 95 DF A7 DF B9 DF 00 CB DF DD DF EF DF 01 | +01D0 | EF 13 EF 25 EF 37 EF 49 EF 00 5B EF 6D EF 7F EF | % 7 I [ m +01E0 | 91 EF A3 EF B5 EF C7 EF D9 EF 00 EB EF FD EF 0F | +01F0 | FF 21 FF 33 FF 45 FF 57 FF 69 FF 00 7B FF 8D FF | ! 3 E W i { +0200 | 9F FF B1 FF C3 FF D5 FF E7 FF F9 FF 00 0B 0F 1D | +0210 | 0F 2F 0F 41 0F 53 0F 65 0F 77 0F 89 0F 00 9B 0F | / A S e w +0220 | AD 0F BF 0F D1 0F E3 0F F5 0F 07 1F 19 1F 00 2B | + +0230 | 1F 3D 1F 4F 1F 61 1F 73 1F 85 1F 97 1F A9 1F 00 | = O a s +0240 | BB 1F CD 1F DF 1F F1 1F 03 2F 15 2F 27 2F 39 2F | / /'/9/ +0250 | 00 4B 2F 5D 2F 6F 2F 81 2F 93 2F A5 2F B7 2F C9 | K/]/o/ / / / / +0260 | 2F 00 DB 2F ED 2F FF 2F 11 3F 23 3F 35 3F 47 3F | / / / / ?#?5?G? +0270 | 59 3F 00 6B 3F 7D 3F 8F 3F A1 3F B3 3F C5 3F D7 | Y? k?}? ? ? ? ? +0280 | 3F E9 3F 00 FB 3F 0D 4F 1F 4F 31 4F 43 4F 55 4F | ? ? ? O O1OCOUO +0290 | 67 4F 79 4F 00 8B 4F 9D 4F AF 4F C1 4F D3 4F E5 | gOyO O O O O O +02A0 | 4F F7 4F 09 5F 00 1B 5F 2D 5F 3F 5F 51 5F 63 5F | O O _ _-_?_Q_c_ +02B0 | 75 5F 87 5F 99 5F 00 AB 5F BD 5F CF 5F E1 5F F3 | u_ _ _ _ _ _ _ +02C0 | 5F 05 6F 17 6F 29 6F 00 3B 6F 4D 6F 5F 6F 71 6F | _ o o)o ;oMo_oqo +02D0 | 83 6F 95 6F A7 6F B9 6F 00 CB 6F DD 6F EF 6F 01 | o o o o o o o +02E0 | 7F 13 7F 25 7F 37 7F 49 7F 00 5B 7F 6D 7F 7F 7F | % 7 I [ m +02F0 | 91 7F A3 7F B5 7F C7 7F D9 7F 00 EB 7F FD 7F 0F | +0300 | 8F 21 8F 33 8F 45 8F 57 8F 69 8F 00 7B 8F 8D 8F | ! 3 E W i { +0310 | 9F 8F B1 8F C3 8F D5 8F E7 8F F9 8F 00 0B 9F 1D | +0320 | 9F 2F 9F 41 9F 53 9F 65 9F 77 9F 89 9F 00 9B 9F | / A S e w +0330 | AD 9F BF 9F D1 9F E3 9F F5 9F 07 AF 19 AF 00 2B | + +0340 | AF 3D AF 4F AF 61 AF 73 AF 85 AF 97 AF A9 AF 00 | = O a s +0350 | BB AF CD AF DF AF F1 AF 03 BF 15 BF 27 BF 39 BF | ' 9 +0360 | 00 4B B3 3F | K ? +I 91446 2023-12-31 21:06:49 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 30 04 60 00 00 00 2C 04 00 00 00 00 00 00 | m 0 ` , +0010 | 00 00 00 10 67 00 8A 43 00 00 00 00 78 FF 72 43 | g C x rC +0020 | 00 00 00 00 00 E0 FF FF 00 00 00 00 01 00 24 00 | $ +0030 | 70 D8 F6 BD F7 C5 05 3D FF FF 00 00 00 00 00 00 | p = +0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0050 | FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 | +0070 | 41 42 43 44 45 46 47 48 49 4A 4B 4C 00 00 00 00 | ABCDEFGHIJKL +0080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0090 | 00 00 00 00 00 00 00 00 00 00 00 00 59 77 59 77 | YwYw +00A0 | 06 04 00 00 51 00 00 00 00 00 01 00 00 00 00 00 | Q +00B0 | 00 00 1F 00 3F 00 B3 00 00 C0 D5 3E 00 82 E9 3E | ? > > +00C0 | 14 00 00 00 23 00 14 00 0A 00 46 00 14 00 00 00 | # F +00D0 | E0 67 99 41 00 00 20 41 00 00 00 00 06 00 00 00 | g A A +00E0 | 5E 01 01 00 0A 00 00 00 01 0F 74 0F 04 00 00 00 | ^ t +00F0 | 00 06 00 00 00 00 00 00 00 00 00 00 0A 00 01 00 | +0100 | 7F 0F 80 0F 01 0F 82 0F 04 00 00 00 01 01 00 00 | +0110 | 00 00 00 00 00 00 00 00 0B 00 01 00 81 0B 82 0B | +0120 | 02 0B 84 0B 0C 00 00 00 02 00 05 00 F9 01 1E 00 | +0130 | 05 00 00 00 0C 00 01 00 02 00 2A 00 01 0F 92 0B | * +0140 | 10 00 00 00 03 00 00 00 00 04 00 00 00 00 00 00 | +0150 | 0D 00 01 00 A9 0F 9E 0B 02 0F AC 0F 0C 00 00 00 | +0160 | 01 02 00 00 00 00 00 00 00 00 00 00 0E 00 01 00 | +0170 | B7 0F B8 0F 02 0F BA 0F 0C 00 00 00 01 01 00 00 | +0180 | 00 00 00 00 00 00 00 00 0F 00 01 00 C5 0F C6 0F | +0190 | 01 0F C8 0F 04 00 00 00 02 00 05 00 F4 01 00 00 | +01A0 | 00 00 00 00 10 00 01 00 00 00 28 00 02 0F D6 0F | ( +01B0 | 0C 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | +01C0 | 11 00 01 00 E1 0F E2 0F 01 0F E4 0F 04 00 00 00 | +01D0 | 00 06 00 01 00 00 00 00 00 00 00 00 12 00 01 00 | +01E0 | 00 10 00 10 01 10 00 10 10 00 00 00 03 02 00 00 | +01F0 | 03 01 00 00 00 00 00 00 13 00 01 00 00 10 00 10 | +0200 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0210 | 00 10 FD 0F FE 0F FF 0F 00 00 14 00 79 00 10 00 | y +0220 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0230 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0240 | 00 10 00 10 0E 00 00 10 00 10 00 10 00 10 00 10 | +0250 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 14 00 | +0260 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0270 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0280 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0290 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 18 00 | +02A0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +02B0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +02C0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +02D0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 1C 00 | +02E0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +02F0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0300 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0310 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 20 00 | +0320 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0330 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0340 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0350 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 24 00 | $ +0360 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0370 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0380 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0390 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 28 00 | ( +03A0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +03B0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +03C0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +03D0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 2C 00 | , +03E0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +03F0 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0400 | 00 10 00 10 00 10 00 10 00 10 00 10 00 10 00 10 | +0410 | 00 10 00 10 00 10 00 10 00 10 00 10 78 00 00 00 | x +0420 | 12 00 00 00 0E DC 7E 8C E2 5B 7F 8C 0C DC 7E 8C | ~ [ ~ +I 91446 2023-12-31 21:06:49 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=6D flag=01) +0000 | 6D 01 30 04 60 00 00 00 2C 04 00 00 00 00 00 00 | m 0 ` , +0010 | 00 00 00 10 67 00 8A 43 00 00 00 00 78 FF 72 43 | g C x rC +0020 | 00 00 00 00 00 E0 FF FF 00 00 00 00 01 00 24 00 | $ +0030 | 70 D8 F6 BD 00 00 00 00 FF FF 00 00 00 00 00 00 | p +0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0050 | FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 | +0070 | 41 42 43 44 45 46 47 48 49 4A 4B 4C 00 00 00 00 | ABCDEFGHIJKL +0080 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +0090 | 00 00 00 00 00 00 00 00 00 00 00 00 1C 29 63 D6 | )c +00A0 | 06 04 00 00 51 00 00 00 00 00 01 00 00 00 00 00 | Q +00B0 | 00 00 1F 00 3F 00 B3 00 00 C0 D5 3E 00 82 E9 3E | ? > > +00C0 | 14 00 00 00 23 00 14 00 0A 00 46 00 14 00 00 00 | # F +00D0 | E0 67 99 41 00 00 20 41 00 00 00 00 06 00 00 00 | g A A +00E0 | 5E 01 01 00 0A 00 00 00 01 00 00 00 04 00 00 00 | ^ +00F0 | 00 06 00 00 00 00 00 00 00 00 00 00 0A 00 01 00 | +0100 | 00 00 00 00 01 00 00 00 04 00 00 00 01 01 00 00 | +0110 | 00 00 00 00 00 00 00 00 0B 00 01 00 00 00 00 00 | +0120 | 02 00 00 00 0C 00 00 00 02 00 05 00 F9 01 1E 00 | +0130 | 05 00 00 00 0C 00 01 00 00 00 00 00 01 00 00 00 | +0140 | 10 00 00 00 03 00 00 00 00 04 00 00 00 00 00 00 | +0150 | 0D 00 01 00 00 00 00 00 02 00 00 00 0C 00 00 00 | +0160 | 01 02 00 00 00 00 00 00 00 00 00 00 0E 00 01 00 | +0170 | 00 00 00 00 02 00 00 00 0C 00 00 00 01 01 00 00 | +0180 | 00 00 00 00 00 00 00 00 0F 00 01 00 00 00 00 00 | +0190 | 01 00 00 00 04 00 00 00 02 00 05 00 F4 01 00 00 | +01A0 | 00 00 00 00 10 00 01 00 00 00 00 00 02 00 00 00 | +01B0 | 0C 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 | +01C0 | 11 00 01 00 00 00 00 00 01 00 00 00 04 00 00 00 | +01D0 | 00 06 00 01 00 00 00 00 00 00 00 00 12 00 01 00 | +01E0 | 00 00 00 00 01 00 00 00 10 00 00 00 03 02 00 00 | +01F0 | 03 01 00 00 00 00 00 00 13 00 01 00 00 00 00 00 | +0200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0210 | 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 | +0220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0230 | FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 | +0240 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0250 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0260 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +0270 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0280 | 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 | +0290 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02A0 | FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 | +02B0 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +02C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02D0 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +02E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +02F0 | 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 | +0300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0310 | FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 | +0320 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0330 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0340 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +0350 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0360 | 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 | +0370 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0380 | FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 | +0390 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +03A0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +03B0 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +03C0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +03D0 | 00 00 00 00 FF FF FF FF 00 00 00 00 00 00 00 00 | +03E0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +03F0 | FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 | +0400 | 00 00 00 00 00 00 00 00 00 00 00 00 FF FF FF FF | +0410 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | +0420 | 00 00 00 00 00 00 00 00 FF FF FF FF 00 00 00 00 | +I 91446 2023-12-31 21:06:49 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 61 01 33 8C | ` a 3 +I 91446 2023-12-31 21:06:49 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 61 01 33 8C | ` a 3 +I 91446 2023-12-31 21:06:52 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 53 2C 87 43 A0 A7 78 43 | ` 7 S, C xC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:28 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 98 31 83 43 76 7E 6C 43 | ` 7 1 Cv~lC +I 91446 2023-12-31 21:06:52 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 53 2C 87 43 A0 A7 78 43 | ` 7 S, C xC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:28 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 91 DE 7E 43 D0 01 6A 43 | ` 7 ~C jC +I 91446 2023-12-31 21:06:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 00 E0 00 00 00 00 | ` 6 +0010 | 57 2C 87 43 00 00 00 00 A0 A7 78 43 | W, C xC +I 91446 2023-12-31 21:06:53 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 00 E0 00 00 00 00 | ` 6 +0010 | 57 2C 87 43 00 00 00 00 A0 A7 78 43 | W, C xC +I 91446 2023-12-31 21:06:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 43 58 84 43 C8 4F 7E 43 | ` 7 CX C O~C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 44 48 77 43 FE 96 6C 43 | ` 7 DHwC lC +I 91446 2023-12-31 21:06:53 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 43 58 84 43 C8 4F 7E 43 | ` 7 CX C O~C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 98 8D 6F 43 BA 5F 6E 43 | ` 9 oC _nC -I 25793 2023-11-24 23:08:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 4C 1E 69 43 25 67 6A 43 | ` 9 L iC%gjC -I 25793 2023-11-24 23:08:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 E0 BD 62 43 F4 B3 66 43 | ` 9 bC fC -I 25793 2023-11-24 23:08:30 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 1C A8 00 00 00 00 | ` 6 -0010 | BC 1F 63 43 00 00 00 00 CA 08 67 43 | cC gC -I 25793 2023-11-24 23:08:30 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 93 1F 6B 43 83 22 67 43 | ` 7 kC "gC +I 91446 2023-12-31 21:06:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 33 84 81 43 A0 A7 78 43 | ` 7 3 C xC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:30 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 C6 C6 72 43 77 72 67 43 | ` 7 rCwrgC +I 91446 2023-12-31 21:06:53 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 33 84 81 43 A0 A7 78 43 | ` 7 3 C xC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 8E B5 78 43 63 19 62 43 | ` 7 xCc bC +I 91446 2023-12-31 21:06:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 8B 45 7E 43 69 80 72 43 | ` 7 E~Ci rC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 C4 1C 7F 43 61 77 5D 43 | ` 7 Caw]C +I 91446 2023-12-31 21:06:53 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 8B 45 7E 43 69 80 72 43 | ` 7 E~Ci rC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D7 CF 80 43 A9 DB 55 43 | ` 9 C UC -I 25793 2023-11-24 23:08:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 F3 71 00 00 00 00 | ` 6 q -0010 | BA EA 80 43 00 00 00 00 90 88 56 43 | C VC -I 25793 2023-11-24 23:08:32 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 1C CF 84 43 1F B0 54 43 | ` 7 C TC +I 91446 2023-12-31 21:06:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 E9 C4 82 43 01 29 6F 43 | ` 7 C )oC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:32 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 FF AC 88 43 01 9F 53 43 | ` 7 C SC +I 91446 2023-12-31 21:06:54 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 E9 C4 82 43 01 29 6F 43 | ` 7 C )oC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:32 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 1E AB 8C 43 A3 1C 54 43 | ` 7 C TC +I 91446 2023-12-31 21:06:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 88 67 86 43 B8 81 6C 43 | ` 9 g C lC +I 91446 2023-12-31 21:06:54 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 88 67 86 43 B8 81 6C 43 | ` 9 g C lC +I 91446 2023-12-31 21:06:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 AC 12 87 43 83 7A 74 43 | ` 9 C ztC +I 91446 2023-12-31 21:06:54 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 AC 12 87 43 83 7A 74 43 | ` 9 C ztC +I 91446 2023-12-31 21:06:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E5 88 88 43 A8 42 7B 43 | ` 9 C B{C +I 91446 2023-12-31 21:06:54 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E5 88 88 43 A8 42 7B 43 | ` 9 C B{C +I 91446 2023-12-31 21:06:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E7 10 8A 43 08 0E 81 43 | ` 9 C C +I 91446 2023-12-31 21:06:54 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E7 10 8A 43 08 0E 81 43 | ` 9 C C +I 91446 2023-12-31 21:06:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 FC 7B 86 43 A0 DE 82 43 | ` 9 { C C +I 91446 2023-12-31 21:06:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 FC 7B 86 43 A0 DE 82 43 | ` 9 { C C +I 91446 2023-12-31 21:06:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 41 8D 83 43 B1 1C 85 43 | ` 9 A C C +I 91446 2023-12-31 21:06:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 41 8D 83 43 B1 1C 85 43 | ` 9 A C C +I 91446 2023-12-31 21:06:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 80 62 80 43 C6 1E 87 43 | ` 9 b C C +I 91446 2023-12-31 21:06:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 80 62 80 43 C6 1E 87 43 | ` 9 b C C +I 91446 2023-12-31 21:06:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BC 5F 79 43 B8 22 86 43 | ` 9 _yC " C +I 91446 2023-12-31 21:06:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BC 5F 79 43 B8 22 86 43 | ` 9 _yC " C +I 91446 2023-12-31 21:06:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 1C 0A 76 43 BC F0 82 43 | ` 9 vC C +I 91446 2023-12-31 21:06:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 1C 0A 76 43 BC F0 82 43 | ` 9 vC C +I 91446 2023-12-31 21:06:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 3F 03 73 43 D2 3D 7F 43 | ` 9 ? sC = C +I 91446 2023-12-31 21:06:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 3F 03 73 43 D2 3D 7F 43 | ` 9 ? sC = C +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F4 6E 71 43 47 ED 77 43 | ` 9 nqCG wC +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F4 6E 71 43 47 ED 77 43 | ` 9 nqCG wC +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BD EF 70 43 E0 74 70 43 | ` 9 pC tpC +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BD EF 70 43 E0 74 70 43 | ` 9 pC tpC +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 00 00 00 00 00 | ` 6 +0010 | 71 9D C3 43 00 00 00 00 66 A6 52 43 | q C f RC +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 00 00 00 00 00 | ` 6 +0010 | 71 9D C3 43 00 00 00 00 66 A6 52 43 | q C f RC +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:06:56 - [C-4] Assigned inventory item IDs +[PlayerInventory] Meseta: 98878 +[PlayerInventory] 4 items +[PlayerInventory] 0: [+00000010] 03000000 00020000 00000000 (00210000) 00000000 (Monomate x2) +[PlayerInventory] 1: [+0000000C] 00020002 00000000 00000000 (00210001) 00000000 (Sword +2) +[PlayerInventory] 2: [+00000004] 01010000 00000000 00000000 (00210002) 00002800 (Frame) +[PlayerInventory] 3: [+00000004] 01020100 00000000 00000000 (00210003) 00000000 (Shield) +I 91446 2023-12-31 21:06:56 - [C-4] Bank is empty +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 01 00 00 00 00 00 | ` +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 01 00 00 00 00 00 | ` +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 D8 00 00 00 00 | ` 6 +0010 | 08 00 96 43 00 00 00 00 9A FF 73 43 | C sC +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 D8 00 00 00 00 | ` 6 +0010 | 08 00 96 43 00 00 00 00 9A FF 73 43 | C sC +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 01 00 00 00 00 00 | ` +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 01 00 00 00 00 00 | ` +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1F 01 01 00 | ` +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1F 01 01 00 | ` +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F0 7B 71 43 22 FD 68 43 | ` 9 {qC" hC +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F0 7B 71 43 22 FD 68 43 | ` 9 {qC" hC +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 00 00 00 00 C4 E8 70 43 | ` pC +0010 | 00 00 00 00 4D 77 6F 43 49 81 00 00 | MwoCI +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 00 00 00 00 C4 E8 70 43 | ` pC +0010 | 00 00 00 00 4D 77 6F 43 49 81 00 00 | MwoCI +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 00 00 00 00 C4 E8 70 43 | ` pC +0010 | 00 00 00 00 4D 77 6F 43 49 81 00 00 | MwoCI +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 00 00 00 00 C4 E8 70 43 | ` pC +0010 | 00 00 00 00 4D 77 6F 43 49 81 00 00 | MwoCI +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 CB 2D 79 43 5F 29 6B 43 | ` 9 -yC_)kC +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 CB 2D 79 43 5F 29 6B 43 | ` 9 -yC_)kC +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 FC 2C 80 43 0D 55 6C 43 | ` 9 , C UlC +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 FC 2C 80 43 0D 55 6C 43 | ` 9 , C UlC +I 91446 2023-12-31 21:06:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 75 BF 83 43 0E 99 6E 43 | ` 9 u C nC +I 91446 2023-12-31 21:06:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 75 BF 83 43 0E 99 6E 43 | ` 9 u C nC +I 91446 2023-12-31 21:06:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 78 FA 84 43 1D DC 75 43 | ` 9 x C uC +I 91446 2023-12-31 21:06:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 78 FA 84 43 1D DC 75 43 | ` 9 x C uC +I 91446 2023-12-31 21:06:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 82 AF 83 43 81 7E 7C 43 | ` 9 C ~|C +I 91446 2023-12-31 21:06:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 82 AF 83 43 81 7E 7C 43 | ` 9 C ~|C +I 91446 2023-12-31 21:06:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E8 2A 83 43 F8 F5 81 43 | ` 9 * C C +I 91446 2023-12-31 21:06:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E8 2A 83 43 F8 F5 81 43 | ` 9 * C C +I 91446 2023-12-31 21:06:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 61 D7 82 43 40 B1 85 43 | ` 9 a C@ C +I 91446 2023-12-31 21:06:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 61 D7 82 43 40 B1 85 43 | ` 9 a C@ C +I 91446 2023-12-31 21:06:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A9 A5 7D 43 D1 98 85 43 | ` 9 }C C +I 91446 2023-12-31 21:06:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A9 A5 7D 43 D1 98 85 43 | ` 9 }C C +I 91446 2023-12-31 21:06:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A4 5B 76 43 B3 31 86 43 | ` 9 [vC 1 C +I 91446 2023-12-31 21:06:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A4 5B 76 43 B3 31 86 43 | ` 9 [vC 1 C +I 91446 2023-12-31 21:06:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D7 43 76 43 14 31 82 43 | ` 9 CvC 1 C +I 91446 2023-12-31 21:06:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D7 43 76 43 14 31 82 43 | ` 9 CvC 1 C +I 91446 2023-12-31 21:06:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 25 DD 75 43 6E 22 7D 43 | ` 9 % uCn"}C +I 91446 2023-12-31 21:06:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 25 DD 75 43 6E 22 7D 43 | ` 9 % uCn"}C +I 91446 2023-12-31 21:06:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 07 9F 7D 43 95 0D 7F 43 | ` 9 }C C +I 91446 2023-12-31 21:06:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 07 9F 7D 43 95 0D 7F 43 | ` 9 }C C +I 91446 2023-12-31 21:06:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 FB 66 82 43 51 09 80 43 | ` 9 f CQ C +I 91446 2023-12-31 21:06:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 FB 66 82 43 51 09 80 43 | ` 9 f CQ C +I 91446 2023-12-31 21:06:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D1 01 84 43 24 7D 83 43 | ` 9 C$} C +I 91446 2023-12-31 21:06:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D1 01 84 43 24 7D 83 43 | ` 9 C$} C +I 91446 2023-12-31 21:06:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E5 1A 86 43 33 8C 86 43 | ` 9 C3 C +I 91446 2023-12-31 21:06:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E5 1A 86 43 33 8C 86 43 | ` 9 C3 C +I 91446 2023-12-31 21:06:59 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 83 F1 89 43 D3 DC 86 43 | ` 9 C C +I 91446 2023-12-31 21:06:59 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 83 F1 89 43 D3 DC 86 43 | ` 9 C C +I 91446 2023-12-31 21:06:59 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 21 91 8D 43 0C 70 87 43 | ` 9 ! C p C +I 91446 2023-12-31 21:06:59 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 21 91 8D 43 0C 70 87 43 | ` 9 ! C p C +I 91446 2023-12-31 21:06:59 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 2D 50 91 43 AC 8C 87 43 | ` 9 -P C C +I 91446 2023-12-31 21:06:59 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 2D 50 91 43 AC 8C 87 43 | ` 9 -P C C +I 91446 2023-12-31 21:06:59 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 E9 3E 00 00 00 00 | ` 6 > +0010 | 04 10 91 43 00 00 00 00 5C 8F 87 43 | C \ C +I 91446 2023-12-31 21:06:59 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 E9 3E 00 00 00 00 | ` 6 > +0010 | 04 10 91 43 00 00 00 00 5C 8F 87 43 | C \ C +I 91446 2023-12-31 21:06:59 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 91 4F 90 43 9B A1 83 43 | ` 7 O C C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:33 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 02 8A 90 43 1C 16 56 43 | ` 7 C VC +I 91446 2023-12-31 21:06:59 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 91 4F 90 43 9B A1 83 43 | ` 7 O C C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:33 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 4A DE 91 43 16 9B 5D 43 | ` 9 J C ]C -I 25793 2023-11-24 23:08:33 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 E6 07 90 43 93 A5 63 43 | ` 9 C cC -I 25793 2023-11-24 23:08:33 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 2C B1 8E 43 63 93 6A 43 | ` 9 , Cc jC -I 25793 2023-11-24 23:08:33 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 86 8E 8D 43 D4 B9 71 43 | ` 9 C qC -I 25793 2023-11-24 23:08:34 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 71 E4 8C 43 63 18 79 43 | ` 9 q Cc yC -I 25793 2023-11-24 23:08:34 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 6A B9 8C 43 CB 49 80 43 | ` 9 j C I C -I 25793 2023-11-24 23:08:34 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C8 0B 8D 43 EA 04 84 43 | ` 9 C C -I 25793 2023-11-24 23:08:34 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 08 D9 8A 43 BF 27 87 43 | ` 9 C ' C -I 25793 2023-11-24 23:08:34 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 8E 93 89 43 29 B0 8A 43 | ` 9 C) C -I 25793 2023-11-24 23:08:34 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 33 89 88 43 42 49 8E 43 | ` 9 3 CBI C -I 25793 2023-11-24 23:08:35 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 13 55 85 43 81 63 90 43 | ` 9 U C c C -I 25793 2023-11-24 23:08:35 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 EE B0 82 43 FE 08 93 43 | ` 9 C C -I 25793 2023-11-24 23:08:35 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 ED 15 80 43 F2 BA 95 43 | ` 9 C C -I 25793 2023-11-24 23:08:35 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D1 7C 7B 43 19 A8 98 43 | ` 9 |{C C -I 25793 2023-11-24 23:08:35 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 B4 69 77 43 43 CD 9B 43 | ` 9 iwCC C -I 25793 2023-11-24 23:08:35 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 23 08 70 43 BB D2 9C 43 | ` 9 # pC C -I 25793 2023-11-24 23:08:36 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 61 49 69 43 0D 6A 9E 43 | ` 9 aIiC j C -I 25793 2023-11-24 23:08:36 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 2D 51 62 43 92 CC 9F 43 | ` 9 -QbC C -I 25793 2023-11-24 23:08:36 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 40 5C 5B 43 48 33 A1 43 | ` 9 @\[CH3 C -I 25793 2023-11-24 23:08:36 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 00 69 54 43 12 9C A2 43 | ` 9 iTC C -I 25793 2023-11-24 23:08:36 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D9 76 4D 43 35 06 A4 43 | ` 9 vMC5 C -I 25793 2023-11-24 23:08:36 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 9D 85 46 43 79 71 A5 43 | ` 9 FCyq C -I 25793 2023-11-24 23:08:37 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 16 95 3F 43 9A DD A6 43 | ` 9 ?C C -I 25793 2023-11-24 23:08:37 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 0D A5 38 43 54 4A A8 43 | ` 9 8CTJ C -I 25793 2023-11-24 23:08:37 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 DE CF 00 00 00 00 | ` 6 -0010 | 3E A8 3E 43 00 00 00 00 30 0E A7 43 | > >C 0 C -I 25793 2023-11-24 23:08:37 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 0A 03 00 10 00 00 00 00 00 00 00 44 | ` D -I 25793 2023-11-24 23:08:37 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 18 00 28 05 00 00 FF FF 00 00 3E A8 3E 43 | ` ( > >C -0010 | 30 0E A7 43 00 00 00 00 | 0 C -I 25793 2023-11-24 23:08:37 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 3B D8 00 00 00 00 | ` 6 ; -0010 | 3E A8 3E 43 00 00 00 00 30 0E A7 43 | > >C 0 C -I 25793 2023-11-24 23:08:39 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:00 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 0B 8E 00 00 00 00 | ` 6 +0010 | 63 7B 90 43 00 00 00 00 0B B8 83 43 | c{ C C +I 91446 2023-12-31 21:07:00 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 0B 8E 00 00 00 00 | ` 6 +0010 | 63 7B 90 43 00 00 00 00 0B B8 83 43 | c{ C C +I 91446 2023-12-31 21:07:04 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 18 00 28 05 00 00 84 03 00 00 63 7B 90 43 | ` ( c{ C +0010 | 0B B8 83 43 00 00 00 00 | C +I 91446 2023-12-31 21:07:04 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 18 00 28 05 00 00 84 03 00 00 63 7B 90 43 | ` ( c{ C +0010 | 0B B8 83 43 00 00 00 00 | C +I 91446 2023-12-31 21:07:04 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 26 06 00 00 01 00 00 00 13 00 01 00 | ` & +0010 | E5 77 8F 43 00 00 C0 40 36 E5 80 43 | w C @6 C +I 91446 2023-12-31 21:07:04 - [Lobby:00000015:FloorItems:00] Added floor item 00010013 at 286.937, 257.791 with drop number 0 visible to 00F +I 91446 2023-12-31 21:07:04 - [Lobby:00000015:FloorItems:00] Evicted 0 items +I 91446 2023-12-31 21:07:04 - [Game:15] Player 0 dropped item 00010013 (Disk:Barta Lv.1) at 0:(286.937, 257.791) +[PlayerInventory] Meseta: 65886 +[PlayerInventory] 9 items +[PlayerInventory] 0: [+00000004] 00060000 00000000 00000000 (0001000A) 00000000 (Handgun) +[PlayerInventory] 1: [+00000004] 01010000 00000000 00000000 (0001000B) 00000000 (Frame) +[PlayerInventory] 2: [+0000000C] 02000500 F8011E00 04000000 (0001000C) 2A020005 (Mag LV5 5.04/0.3/0.04/0 42% 2IQ (black)) +[PlayerInventory] 3: [+00000010] 03000000 00040000 00000000 (0001000D) 00000000 (Monomate x4) +[PlayerInventory] 4: [+0000000C] 01020000 00000000 00000000 (0001000E) 00000000 (Barrier) +[PlayerInventory] 5: [+0000000C] 01010000 00000000 00000000 (0001000F) 00002800 (Frame) +[PlayerInventory] 6: [+00000004] 02000500 F4010000 00000000 (00010010) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] 7: [+0000000C] 00010000 00000000 00000000 (00010011) 00000000 (Saber) +[PlayerInventory] 8: [+00000004] 00060001 00000000 00000000 (00010012) 00000000 (Handgun +1) +I 91446 2023-12-31 21:07:04 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 26 06 00 00 01 00 00 00 13 00 01 00 | ` & +0010 | E5 77 8F 43 00 00 C0 40 36 E5 80 43 | w C @6 C +I 91446 2023-12-31 21:07:04 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 29 01 00 00 | ` ) -I 25793 2023-11-24 23:08:39 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 50 9C 3F 43 7C 15 A3 43 | ` 7 P ?C| C +I 91446 2023-12-31 21:07:04 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 00 00 | ` ) +I 91446 2023-12-31 21:07:04 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 00 00 | ` ) +I 91446 2023-12-31 21:07:04 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 00 00 | ` ) +I 91446 2023-12-31 21:07:07 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 18 00 28 05 00 00 84 03 00 00 63 7B 90 43 | ` ( c{ C +0010 | 0B B8 83 43 00 00 00 00 | C +I 91446 2023-12-31 21:07:07 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 18 00 28 05 00 00 84 03 00 00 63 7B 90 43 | ` ( c{ C +0010 | 0B B8 83 43 00 00 00 00 | C +I 91446 2023-12-31 21:07:07 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 26 06 00 00 01 00 00 00 10 00 01 00 | ` & +0010 | 8E A8 8D 43 00 00 C0 40 89 BB 84 43 | C @ C +I 91446 2023-12-31 21:07:07 - [Lobby:00000015:FloorItems:00] Added floor item 00010010 at 283.317, 265.465 with drop number 1 visible to 00F +I 91446 2023-12-31 21:07:07 - [Lobby:00000015:FloorItems:00] Evicted 0 items +I 91446 2023-12-31 21:07:07 - [Game:15] Player 0 dropped item 00010010 (Mag LV5 5/0/0/0 40% 0IQ (red)) at 0:(283.317, 265.465) +[PlayerInventory] Meseta: 65886 +[PlayerInventory] 8 items +[PlayerInventory] 0: [+00000004] 00060000 00000000 00000000 (0001000A) 00000000 (Handgun) +[PlayerInventory] 1: [+00000004] 01010000 00000000 00000000 (0001000B) 00000000 (Frame) +[PlayerInventory] 2: [+0000000C] 02000500 F8011E00 04000000 (0001000C) 2A020005 (Mag LV5 5.04/0.3/0.04/0 42% 2IQ (black)) +[PlayerInventory] 3: [+00000010] 03000000 00040000 00000000 (0001000D) 00000000 (Monomate x4) +[PlayerInventory] 4: [+0000000C] 01020000 00000000 00000000 (0001000E) 00000000 (Barrier) +[PlayerInventory] 5: [+0000000C] 01010000 00000000 00000000 (0001000F) 00002800 (Frame) +[PlayerInventory] 6: [+0000000C] 00010000 00000000 00000000 (00010011) 00000000 (Saber) +[PlayerInventory] 7: [+00000004] 00060001 00000000 00000000 (00010012) 00000000 (Handgun +1) +I 91446 2023-12-31 21:07:07 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 26 06 00 00 01 00 00 00 10 00 01 00 | ` & +0010 | 8E A8 8D 43 00 00 C0 40 89 BB 84 43 | C @ C +I 91446 2023-12-31 21:07:07 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 00 00 | ` ) +I 91446 2023-12-31 21:07:07 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 00 00 | ` ) +I 91446 2023-12-31 21:07:07 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 00 00 | ` ) +I 91446 2023-12-31 21:07:07 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 00 00 | ` ) +I 91446 2023-12-31 21:07:08 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 9B AC 92 43 69 71 78 43 | ` 7 CiqxC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:40 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 3C 97 41 43 40 5D 9F 43 | ` 7 < AC@] C +I 91446 2023-12-31 21:07:08 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 9B AC 92 43 69 71 78 43 | ` 7 CiqxC 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:40 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 FB 4A 3F 43 41 88 9B 43 | ` 7 J?CA C +I 91446 2023-12-31 21:07:09 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 99 C3 8F 43 FF 54 7C 43 | ` 7 C T|C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:40 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 C6 6D 3E 43 A6 93 97 43 | ` 7 m>C C +I 91446 2023-12-31 21:07:09 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 99 C3 8F 43 FF 54 7C 43 | ` 7 C T|C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:08:40 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 BB C2 3E 43 F6 96 93 43 | ` 9 >C C -I 25793 2023-11-24 23:08:41 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 EC 10 40 43 D5 E6 8F 43 | ` 9 @C C -I 25793 2023-11-24 23:08:41 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 31 4B 42 43 7D 53 8C 43 | ` 9 1KBC}S C -I 25793 2023-11-24 23:08:41 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 82 63 45 43 5F EA 88 43 | ` 9 cEC_ C -I 25793 2023-11-24 23:08:41 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 B0 4A 43 43 71 3B 85 43 | ` 9 JCCq; C -I 25793 2023-11-24 23:08:41 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 E8 8D 42 43 7F 84 81 43 | ` 9 BC C -I 25793 2023-11-24 23:08:41 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 8A 51 41 43 53 A3 7B 43 | ` 9 QACS {C -I 25793 2023-11-24 23:08:42 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 F6 1D 40 43 1F 3C 74 43 | ` 9 @C C lC -I 25793 2023-11-24 23:08:42 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 CA B9 3D 43 3B 6D 65 43 | ` 9 =C;meC -I 25793 2023-11-24 23:08:42 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 AC 88 3C 43 A1 05 5E 43 | ` 9 C % C -I 25793 2023-11-24 23:08:44 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 E6 97 3E 43 89 AA 07 43 | ` 9 >C C -I 25793 2023-11-24 23:08:44 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 6B 28 3F 43 FC 2F 00 43 | ` 9 k(?C / C -I 25793 2023-11-24 23:08:44 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 52 B9 3F 43 ED 6A F1 42 | ` 9 R ?C j B -I 25793 2023-11-24 23:08:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 98 4A 40 43 EF 75 E2 42 | ` 9 J@C u B -I 25793 2023-11-24 23:08:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 07 DC 40 43 F9 80 D3 42 | ` 9 @C B -I 25793 2023-11-24 23:08:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 A7 6D 41 43 08 8C C4 42 | ` 9 mAC B -I 25793 2023-11-24 23:08:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 43 FF 41 43 15 97 B5 42 | ` 9 C AC B -I 25793 2023-11-24 23:08:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 1A 91 42 43 2B A2 A6 42 | ` 9 BC+ B -I 25793 2023-11-24 23:08:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 00 92 48 43 86 24 9D 42 | ` 9 HC $ B -I 25793 2023-11-24 23:08:46 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 7D 24 4E 43 DA 7D 93 42 | ` 9 }$NC } B -I 25793 2023-11-24 23:08:46 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 4F 90 54 43 FA C2 8B 42 | ` 9 O TC B -I 25793 2023-11-24 23:08:46 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D1 ED 56 43 CC 64 7A 42 | ` 9 VC dzB -I 25793 2023-11-24 23:08:46 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 5D 6D 5A 43 88 07 60 42 | ` 9 ]mZC `B -I 25793 2023-11-24 23:08:46 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 EB 7C 5D 43 70 A4 44 42 | ` 9 |]Cp DB -I 25793 2023-11-24 23:08:46 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 74 93 60 43 A5 4D 29 42 | ` 9 t `C M)B -I 25793 2023-11-24 23:08:47 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D5 D6 67 43 74 AA 1F 42 | ` 9 gCt B -I 25793 2023-11-24 23:08:47 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C0 B9 6E 43 02 27 15 42 | ` 9 nC ' B -I 25793 2023-11-24 23:08:47 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 E9 14 76 43 4B 6A 0F 42 | ` 9 vCKj B -I 25793 2023-11-24 23:08:47 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 CD 8C 7D 43 D6 F9 0C 42 | ` 9 }C B -I 25793 2023-11-24 23:08:47 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 E3 84 82 43 32 01 0E 42 | ` 9 C2 B -I 25793 2023-11-24 23:08:47 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 BC 38 86 43 20 8F 12 42 | ` 9 8 C B -I 25793 2023-11-24 23:08:48 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 61 D4 89 43 74 9D 1A 42 | ` 9 a Ct B -I 25793 2023-11-24 23:08:48 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 4A 4A 8D 43 86 15 26 42 | ` 9 JJ C &B -I 25793 2023-11-24 23:08:48 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 36 EF 90 43 49 AD 1C 42 | ` 9 6 CI B -I 25793 2023-11-24 23:08:48 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 3F A2 94 43 E2 B0 18 42 | ` 9 ? C B -I 25793 2023-11-24 23:08:48 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 FC 4E 98 43 A9 B7 12 42 | ` 9 N C B -I 25793 2023-11-24 23:08:48 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 9D FC 9B 43 42 E0 0C 42 | ` 9 CB B -I 25793 2023-11-24 23:08:49 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 52 AA 9F 43 69 0C 07 42 | ` 9 R Ci B -I 25793 2023-11-24 23:08:49 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 1A 58 A3 43 43 3B 01 42 | ` 9 X CC; B -I 25793 2023-11-24 23:08:49 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 F1 05 A7 43 0B D9 F6 41 | ` 9 C A -I 25793 2023-11-24 23:08:49 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D5 B3 AA 43 E7 3F EB 41 | ` 9 C ? A -I 25793 2023-11-24 23:08:49 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 BE 61 AE 43 03 A8 DF 41 | ` 9 a C A -I 25793 2023-11-24 23:08:49 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 B0 0F B2 43 1C 13 D4 41 | ` 9 C A -I 25793 2023-11-24 23:08:50 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 EB 47 00 00 00 00 | ` 6 G -0010 | E5 D0 B1 43 00 00 80 3F 7A D8 D4 41 | C ?z A -I 25793 2023-11-24 23:08:50 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:09 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 3E 66 8F 43 B6 CF 81 43 | ` 7 >f C C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:09 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 3E 66 8F 43 B6 CF 81 43 | ` 7 >f C C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:09 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 AA FC 00 00 00 00 | ` 6 +0010 | C7 54 8F 43 00 00 00 00 F8 BD 81 43 | T C C +I 91446 2023-12-31 21:07:09 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 AA FC 00 00 00 00 | ` 6 +0010 | C7 54 8F 43 00 00 00 00 F8 BD 81 43 | T C C +I 91446 2023-12-31 21:07:09 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=62 flag=00) +0000 | 62 00 10 00 4C 03 01 00 13 00 01 00 00 00 65 3F | b L e? +I 91446 2023-12-31 21:07:09 - [Lobby:00000015:FloorItems:00] Removed floor item 00010013 at 286.937, 257.791 with drop number 0 visible to 00F +I 91446 2023-12-31 21:07:09 - [Game:15] Player 1 picked up 00010013 (Disk:Barta Lv.1) +[PlayerInventory] Meseta: 98878 +[PlayerInventory] 5 items +[PlayerInventory] 0: [+00000010] 03000000 00020000 00000000 (00210000) 00000000 (Monomate x2) +[PlayerInventory] 1: [+0000000C] 00020002 00000000 00000000 (00210001) 00000000 (Sword +2) +[PlayerInventory] 2: [+00000004] 01010000 00000000 00000000 (00210002) 00002800 (Frame) +[PlayerInventory] 3: [+00000004] 01020100 00000000 00000000 (00210003) 00000000 (Shield) +[PlayerInventory] 4: [+00000000] 03020000 03010000 00000000 (00010013) 00000000 (Disk:Barta Lv.1) +I 91446 2023-12-31 21:07:09 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 00 00 13 00 01 00 | ` K +I 91446 2023-12-31 21:07:09 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 00 00 13 00 01 00 | ` K +I 91446 2023-12-31 21:07:10 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=62 flag=00) +0000 | 62 00 10 00 4C 03 01 00 10 00 01 00 00 00 64 3F | b L d? +I 91446 2023-12-31 21:07:10 - [Lobby:00000015:FloorItems:00] Removed floor item 00010010 at 283.317, 265.465 with drop number 1 visible to 00F +I 91446 2023-12-31 21:07:10 - [Game:15] Player 1 picked up 00010010 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] Meseta: 98878 +[PlayerInventory] 6 items +[PlayerInventory] 0: [+00000010] 03000000 00020000 00000000 (00210000) 00000000 (Monomate x2) +[PlayerInventory] 1: [+0000000C] 00020002 00000000 00000000 (00210001) 00000000 (Sword +2) +[PlayerInventory] 2: [+00000004] 01010000 00000000 00000000 (00210002) 00002800 (Frame) +[PlayerInventory] 3: [+00000004] 01020100 00000000 00000000 (00210003) 00000000 (Shield) +[PlayerInventory] 4: [+00000000] 03020000 03010000 00000000 (00010013) 00000000 (Disk:Barta Lv.1) +[PlayerInventory] 5: [+00000000] 02000500 F4010000 00000000 (00010010) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +I 91446 2023-12-31 21:07:10 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 00 00 10 00 01 00 | ` K +I 91446 2023-12-31 21:07:10 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 00 00 10 00 01 00 | ` K +I 91446 2023-12-31 21:07:11 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 84 4A 8C 43 F1 48 7E 43 | ` 7 J C H~C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:11 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 84 4A 8C 43 F1 48 7E 43 | ` 7 J C H~C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:11 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 4F 4B 88 43 49 35 7E 43 | ` 7 OK CI5~C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:11 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 4F 4B 88 43 49 35 7E 43 | ` 7 OK CI5~C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:11 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 F5 79 84 43 D6 1D 7C 43 | ` 7 y C |C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:11 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 F5 79 84 43 D6 1D 7C 43 | ` 7 y C |C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 AD D0 80 43 60 F3 78 43 | ` 7 C` xC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 AD D0 80 43 60 F3 78 43 | ` 7 C` xC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 B3 04 7B 43 6A 75 74 43 | ` 9 {CjutC +I 91446 2023-12-31 21:07:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 B3 04 7B 43 6A 75 74 43 | ` 9 {CjutC +I 91446 2023-12-31 21:07:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 D8 62 73 43 9A 34 75 43 | ` 9 bsC 4uC +I 91446 2023-12-31 21:07:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 D8 62 73 43 9A 34 75 43 | ` 9 bsC 4uC +I 91446 2023-12-31 21:07:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 F7 F1 6B 43 7E 87 74 43 | ` 9 kC~ tC +I 91446 2023-12-31 21:07:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 F7 F1 6B 43 7E 87 74 43 | ` 9 kC~ tC +I 91446 2023-12-31 21:07:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 C7 72 64 43 CF 54 74 43 | ` 9 rdC TtC +I 91446 2023-12-31 21:07:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 C7 72 64 43 CF 54 74 43 | ` 9 rdC TtC +I 91446 2023-12-31 21:07:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 A7 F3 5C 43 E4 1A 74 43 | ` 9 \C tC +I 91446 2023-12-31 21:07:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 A7 F3 5C 43 E4 1A 74 43 | ` 9 \C tC +I 91446 2023-12-31 21:07:13 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 C2 BE 00 00 00 00 | ` 6 +0010 | 99 73 5D 43 00 00 00 00 C9 1E 74 43 | s]C tC +I 91446 2023-12-31 21:07:13 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 C2 BE 00 00 00 00 | ` 6 +0010 | 99 73 5D 43 00 00 00 00 C9 1E 74 43 | s]C tC +I 91446 2023-12-31 21:07:15 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 18 00 28 05 01 00 84 03 00 00 99 73 5D 43 | ` ( s]C +0010 | C9 1E 74 43 00 00 00 00 | tC +I 91446 2023-12-31 21:07:15 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 18 00 28 05 01 00 84 03 00 00 99 73 5D 43 | ` ( s]C +0010 | C9 1E 74 43 00 00 00 00 | tC +I 91446 2023-12-31 21:07:15 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 26 06 01 00 01 00 00 00 02 00 21 00 | ` & ! +0010 | 50 74 57 43 00 00 C0 40 F7 EF 73 43 | PtWC @ sC +I 91446 2023-12-31 21:07:15 - [Lobby:00000015:FloorItems:00] Added floor item 00210002 at 215.454, 243.937 with drop number 2 visible to 00F +I 91446 2023-12-31 21:07:15 - [Lobby:00000015:FloorItems:00] Evicted 0 items +I 91446 2023-12-31 21:07:15 - [Game:15] Player 1 dropped item 00210002 (Frame) at 0:(215.454, 243.937) +[PlayerInventory] Meseta: 98878 +[PlayerInventory] 5 items +[PlayerInventory] 0: [+00000010] 03000000 00020000 00000000 (00210000) 00000000 (Monomate x2) +[PlayerInventory] 1: [+0000000C] 00020002 00000000 00000000 (00210001) 00000000 (Sword +2) +[PlayerInventory] 2: [+00000004] 01020100 00000000 00000000 (00210003) 00000000 (Shield) +[PlayerInventory] 3: [+00000000] 03020000 03010000 00000000 (00010013) 00000000 (Disk:Barta Lv.1) +[PlayerInventory] 4: [+00000000] 02000500 F4010000 00000000 (00010010) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +I 91446 2023-12-31 21:07:15 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 26 06 01 00 01 00 00 00 02 00 21 00 | ` & ! +0010 | 50 74 57 43 00 00 C0 40 F7 EF 73 43 | PtWC @ sC +I 91446 2023-12-31 21:07:15 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 01 00 | ` ) +I 91446 2023-12-31 21:07:15 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 01 00 | ` ) +I 91446 2023-12-31 21:07:15 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 01 00 | ` ) +I 91446 2023-12-31 21:07:15 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 29 01 01 00 | ` ) +I 91446 2023-12-31 21:07:16 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 8E 74 55 43 29 E0 73 43 | ` 7 tUC) sC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:16 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 8E 74 55 43 29 E0 73 43 | ` 7 tUC) sC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:16 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 85 75 4D 43 8F A1 73 43 | ` 7 uMC sC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:16 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 85 75 4D 43 8F A1 73 43 | ` 7 uMC sC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:17 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 C2 BE 00 00 00 00 | ` 6 +0010 | 87 75 4D 43 00 00 00 00 95 A1 73 43 | uMC sC +I 91446 2023-12-31 21:07:17 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 C2 BE 00 00 00 00 | ` 6 +0010 | 87 75 4D 43 00 00 00 00 95 A1 73 43 | uMC sC +I 91446 2023-12-31 21:07:17 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 92 74 55 43 35 E0 73 43 | ` 7 tUC5 sC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:17 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 92 74 55 43 35 E0 73 43 | ` 7 tUC5 sC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:17 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=62 flag=00) +0000 | 62 00 10 00 4C 03 01 00 02 00 21 00 00 00 61 3F | b L ! a? +I 91446 2023-12-31 21:07:17 - [Lobby:00000015:FloorItems:00] Removed floor item 00210002 at 215.454, 243.937 with drop number 2 visible to 00F +I 91446 2023-12-31 21:07:17 - [Game:15] Player 1 picked up 00210002 (Frame) +[PlayerInventory] Meseta: 98878 +[PlayerInventory] 6 items +[PlayerInventory] 0: [+00000010] 03000000 00020000 00000000 (00210000) 00000000 (Monomate x2) +[PlayerInventory] 1: [+0000000C] 00020002 00000000 00000000 (00210001) 00000000 (Sword +2) +[PlayerInventory] 2: [+00000004] 01020100 00000000 00000000 (00210003) 00000000 (Shield) +[PlayerInventory] 3: [+00000000] 03020000 03010000 00000000 (00010013) 00000000 (Disk:Barta Lv.1) +[PlayerInventory] 4: [+00000000] 02000500 F4010000 00000000 (00010010) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] 5: [+00000000] 01010000 00000000 00000000 (00210002) 00002800 (Frame) +I 91446 2023-12-31 21:07:17 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 00 00 02 00 21 00 | ` K ! +I 91446 2023-12-31 21:07:17 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 00 00 02 00 21 00 | ` K ! +I 91446 2023-12-31 21:07:17 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 37 46 00 00 00 00 | ` 6 7F +0010 | 09 FA 54 43 00 00 00 00 DA 53 74 43 | TC StC +I 91446 2023-12-31 21:07:17 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 37 46 00 00 00 00 | ` 6 7F +0010 | 09 FA 54 43 00 00 00 00 DA 53 74 43 | TC StC +I 91446 2023-12-31 21:07:17 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B3 B6 54 43 F5 54 6C 43 | ` 7 TC TlC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:17 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B3 B6 54 43 F5 54 6C 43 | ` 7 TC TlC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:18 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 61 E7 4F 43 A7 44 66 43 | ` 7 a OC DfC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:18 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 61 E7 4F 43 A7 44 66 43 | ` 7 a OC DfC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:18 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 DE E9 4B 43 A3 5F 5F 43 | ` 7 KC __C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:18 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 DE E9 4B 43 A3 5F 5F 43 | ` 7 KC __C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:18 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 FA EB 48 43 4D F8 57 43 | ` 7 HCM WC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:18 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 FA EB 48 43 4D F8 57 43 | ` 7 HCM WC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:18 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 BB 47 47 43 7A 25 50 43 | ` 9 GGCz%PC +I 91446 2023-12-31 21:07:18 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 BB 47 47 43 7A 25 50 43 | ` 9 GGCz%PC +I 91446 2023-12-31 21:07:19 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 32 AF 46 43 DA AE 48 43 | ` 9 2 FC HC +I 91446 2023-12-31 21:07:19 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 32 AF 46 43 DA AE 48 43 | ` 9 2 FC HC +I 91446 2023-12-31 21:07:19 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 48 50 41 43 B9 38 43 43 | ` 9 HPAC 8CC +I 91446 2023-12-31 21:07:19 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 48 50 41 43 B9 38 43 43 | ` 9 HPAC 8CC +I 91446 2023-12-31 21:07:19 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 58 F9 42 43 51 6D 3B 43 | ` 9 X BCQm;C +I 91446 2023-12-31 21:07:19 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 58 F9 42 43 51 6D 3B 43 | ` 9 X BCQm;C +I 91446 2023-12-31 21:07:19 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 3D F4 43 43 99 24 34 43 | ` 9 = CC $4C +I 91446 2023-12-31 21:07:19 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 3D F4 43 43 99 24 34 43 | ` 9 = CC $4C +I 91446 2023-12-31 21:07:19 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 AE 51 46 43 95 08 2D 43 | ` 9 QFC -C +I 91446 2023-12-31 21:07:19 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 AE 51 46 43 95 08 2D 43 | ` 9 QFC -C +I 91446 2023-12-31 21:07:19 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 AE 81 49 43 02 41 26 43 | ` 9 IC A&C +I 91446 2023-12-31 21:07:19 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 AE 81 49 43 02 41 26 43 | ` 9 IC A&C +I 91446 2023-12-31 21:07:20 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 0B 7E 47 43 87 DD 1E 43 | ` 9 ~GC C +I 91446 2023-12-31 21:07:20 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 0B 7E 47 43 87 DD 1E 43 | ` 9 ~GC C +I 91446 2023-12-31 21:07:20 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 26 D5 46 43 F1 6D 17 43 | ` 9 & FC m C +I 91446 2023-12-31 21:07:20 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 26 D5 46 43 F1 6D 17 43 | ` 9 & FC m C +I 91446 2023-12-31 21:07:20 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 54 AC 45 43 19 05 10 43 | ` 9 T EC C +I 91446 2023-12-31 21:07:20 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 54 AC 45 43 19 05 10 43 | ` 9 T EC C +I 91446 2023-12-31 21:07:20 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 03 8C 44 43 DF 9A 08 43 | ` 9 DC C +I 91446 2023-12-31 21:07:20 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 03 8C 44 43 DF 9A 08 43 | ` 9 DC C +I 91446 2023-12-31 21:07:20 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 51 55 49 43 5C A2 02 43 | ` 9 QUIC\ C +I 91446 2023-12-31 21:07:20 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 51 55 49 43 5C A2 02 43 | ` 9 QUIC\ C +I 91446 2023-12-31 21:07:20 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 4A AF 4D 43 AC 5E F9 42 | ` 9 J MC ^ B +I 91446 2023-12-31 21:07:20 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 4A AF 4D 43 AC 5E F9 42 | ` 9 J MC ^ B +I 91446 2023-12-31 21:07:21 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 09 83 4D 43 10 11 EA 42 | ` 9 MC B +I 91446 2023-12-31 21:07:21 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 09 83 4D 43 10 11 EA 42 | ` 9 MC B +I 91446 2023-12-31 21:07:21 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 B2 9C 4E 43 6E 4F DB 42 | ` 9 NCnO B +I 91446 2023-12-31 21:07:21 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 B2 9C 4E 43 6E 4F DB 42 | ` 9 NCnO B +I 91446 2023-12-31 21:07:21 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 07 39 4F 43 4B 5C CC 42 | ` 9 9OCK\ B +I 91446 2023-12-31 21:07:21 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 07 39 4F 43 4B 5C CC 42 | ` 9 9OCK\ B +I 91446 2023-12-31 21:07:21 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 D8 DB 4F 43 21 6A BD 42 | ` 9 OC!j B +I 91446 2023-12-31 21:07:21 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 D8 DB 4F 43 21 6A BD 42 | ` 9 OC!j B +I 91446 2023-12-31 21:07:21 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 38 7F 50 43 0D 78 AE 42 | ` 9 8 PC x B +I 91446 2023-12-31 21:07:21 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 38 7F 50 43 0D 78 AE 42 | ` 9 8 PC x B +I 91446 2023-12-31 21:07:21 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 9A 8B 56 43 B4 17 A5 42 | ` 9 VC B +I 91446 2023-12-31 21:07:21 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 9A 8B 56 43 B4 17 A5 42 | ` 9 VC B +I 91446 2023-12-31 21:07:22 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 34 F4 56 43 55 46 95 42 | ` 9 4 VCUF B +I 91446 2023-12-31 21:07:22 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 34 F4 56 43 55 46 95 42 | ` 9 4 VCUF B +I 91446 2023-12-31 21:07:22 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 D4 F9 58 43 9E EB 86 42 | ` 9 XC B +I 91446 2023-12-31 21:07:22 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 D4 F9 58 43 9E EB 86 42 | ` 9 XC B +I 91446 2023-12-31 21:07:22 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 51 86 5A 43 FA 7C 70 42 | ` 9 Q ZC |pB +I 91446 2023-12-31 21:07:22 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 51 86 5A 43 FA 7C 70 42 | ` 9 Q ZC |pB +I 91446 2023-12-31 21:07:22 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 80 17 5C 43 82 26 53 42 | ` 9 \C &SB +I 91446 2023-12-31 21:07:22 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 80 17 5C 43 82 26 53 42 | ` 9 \C &SB +I 91446 2023-12-31 21:07:22 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 C4 AD 62 43 8A 91 43 42 | ` 9 bC CB +I 91446 2023-12-31 21:07:22 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 C4 AD 62 43 8A 91 43 42 | ` 9 bC CB +I 91446 2023-12-31 21:07:22 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 97 D9 68 43 D0 71 33 42 | ` 9 hC q3B +I 91446 2023-12-31 21:07:22 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 97 D9 68 43 D0 71 33 42 | ` 9 hC q3B +I 91446 2023-12-31 21:07:23 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 BE BB 6F 43 3E 96 27 42 | ` 9 oC> 'B +I 91446 2023-12-31 21:07:23 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 BE BB 6F 43 3E 96 27 42 | ` 9 oC> 'B +I 91446 2023-12-31 21:07:23 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 C3 E6 76 43 88 DA 1E 42 | ` 9 vC B +I 91446 2023-12-31 21:07:23 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 C3 E6 76 43 88 DA 1E 42 | ` 9 vC B +I 91446 2023-12-31 21:07:23 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 F9 45 7E 43 D9 7E 19 42 | ` 9 E~C ~ B +I 91446 2023-12-31 21:07:23 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 F9 45 7E 43 D9 7E 19 42 | ` 9 E~C ~ B +I 91446 2023-12-31 21:07:23 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 27 E0 82 43 63 A6 17 42 | ` 9 ' Cc B +I 91446 2023-12-31 21:07:23 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 27 E0 82 43 63 A6 17 42 | ` 9 ' Cc B +I 91446 2023-12-31 21:07:23 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 4C A1 85 43 40 5F 02 42 | ` 9 L C@_ B +I 91446 2023-12-31 21:07:23 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 4C A1 85 43 40 5F 02 42 | ` 9 L C@_ B +I 91446 2023-12-31 21:07:23 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 1D BB 88 43 96 80 E3 41 | ` 9 C A +I 91446 2023-12-31 21:07:23 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 1D BB 88 43 96 80 E3 41 | ` 9 C A +I 91446 2023-12-31 21:07:24 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 01 7E 8C 43 A3 D4 ED 41 | ` 9 ~ C A +I 91446 2023-12-31 21:07:24 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 01 7E 8C 43 A3 D4 ED 41 | ` 9 ~ C A +I 91446 2023-12-31 21:07:24 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 21 8E 8F 43 5A B0 C5 41 | ` 9 ! CZ A +I 91446 2023-12-31 21:07:24 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 21 8E 8F 43 5A B0 C5 41 | ` 9 ! CZ A +I 91446 2023-12-31 21:07:24 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 27 E4 92 43 36 0C AB 41 | ` 9 ' C6 A +I 91446 2023-12-31 21:07:24 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 27 E4 92 43 36 0C AB 41 | ` 9 ' C6 A +I 91446 2023-12-31 21:07:24 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 C2 20 96 43 A1 C0 8C 41 | ` 9 C A +I 91446 2023-12-31 21:07:24 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 C2 20 96 43 A1 C0 8C 41 | ` 9 C A +I 91446 2023-12-31 21:07:24 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 9E C8 99 43 E8 CF 9E 41 | ` 9 C A +I 91446 2023-12-31 21:07:24 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 9E C8 99 43 E8 CF 9E 41 | ` 9 C A +I 91446 2023-12-31 21:07:24 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 7B 59 9D 43 1E B6 AD 41 | ` 9 {Y C A +I 91446 2023-12-31 21:07:24 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 7B 59 9D 43 1E B6 AD 41 | ` 9 {Y C A +I 91446 2023-12-31 21:07:25 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 70 C2 A0 43 3D 92 C6 41 | ` 9 p C= A +I 91446 2023-12-31 21:07:25 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 70 C2 A0 43 3D 92 C6 41 | ` 9 p C= A +I 91446 2023-12-31 21:07:25 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 53 6E A4 43 A9 35 B5 41 | ` 9 Sn C 5 A +I 91446 2023-12-31 21:07:25 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 53 6E A4 43 A9 35 B5 41 | ` 9 Sn C 5 A +I 91446 2023-12-31 21:07:25 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 4A 23 A8 43 C6 71 AE 41 | ` 9 J# C q A +I 91446 2023-12-31 21:07:25 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 4A 23 A8 43 C6 71 AE 41 | ` 9 J# C q A +I 91446 2023-12-31 21:07:25 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 98 D3 AB 43 0F A6 A3 41 | ` 9 C A +I 91446 2023-12-31 21:07:25 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 98 D3 AB 43 0F A6 A3 41 | ` 9 C A +I 91446 2023-12-31 21:07:25 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 3E 47 00 00 00 00 | ` 6 >G +0010 | 98 94 AB 43 00 00 80 3F BC 5A A4 41 | C ? Z A +I 91446 2023-12-31 21:07:25 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 3E 47 00 00 00 00 | ` 6 >G +0010 | 98 94 AB 43 00 00 80 3F BC 5A A4 41 | C ? Z A +I 91446 2023-12-31 21:07:26 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 01 00 01 00 00 00 | ` +I 91446 2023-12-31 21:07:26 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 01 00 01 00 00 00 | ` +I 91446 2023-12-31 21:07:26 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1E 01 01 00 | ` +I 91446 2023-12-31 21:07:26 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1E 01 01 00 | ` +I 91446 2023-12-31 21:07:26 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 7D 21 8F 43 77 E8 7F 43 | ` 7 }! Cw C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:26 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 7D 21 8F 43 77 E8 7F 43 | ` 7 }! Cw C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 9D AE 8B 43 8E 6F 7D 43 | ` 7 C o}C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 9D AE 8B 43 8E 6F 7D 43 | ` 7 C o}C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 62 FA 87 43 0A C4 7A 43 | ` 7 b C zC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 62 FA 87 43 0A C4 7A 43 | ` 7 b C zC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 7C 07 84 43 94 7D 79 43 | ` 7 | C }yC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 7C 07 84 43 94 7D 79 43 | ` 7 | C }yC +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DE 08 80 43 8B 9D 79 43 | ` 9 C yC +I 91446 2023-12-31 21:07:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DE 08 80 43 8B 9D 79 43 | ` 9 C yC +I 91446 2023-12-31 21:07:28 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A4 20 7A 43 49 C5 74 43 | ` 9 zCI tC +I 91446 2023-12-31 21:07:28 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A4 20 7A 43 49 C5 74 43 | ` 9 zCI tC +I 91446 2023-12-31 21:07:28 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 73 8F 73 43 D9 35 71 43 | ` 9 s sC 5qC +I 91446 2023-12-31 21:07:28 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 73 8F 73 43 D9 35 71 43 | ` 9 s sC 5qC +I 91446 2023-12-31 21:07:28 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 9F 36 6D 43 2D 37 6D 43 | ` 9 6mC-7mC +I 91446 2023-12-31 21:07:28 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 9F 36 6D 43 2D 37 6D 43 | ` 9 6mC-7mC +I 91446 2023-12-31 21:07:28 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 ED D9 66 43 6E 3E 69 43 | ` 9 fCn>iC +I 91446 2023-12-31 21:07:28 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 ED D9 66 43 6E 3E 69 43 | ` 9 fCn>iC +I 91446 2023-12-31 21:07:28 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B2 7C 60 43 89 46 65 43 | ` 9 |`C FeC +I 91446 2023-12-31 21:07:28 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B2 7C 60 43 89 46 65 43 | ` 9 |`C FeC +I 91446 2023-12-31 21:07:28 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 6E 1F 5A 43 B2 4E 61 43 | ` 9 n ZC NaC +I 91446 2023-12-31 21:07:28 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 6E 1F 5A 43 B2 4E 61 43 | ` 9 n ZC NaC +I 91446 2023-12-31 21:07:29 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 12 C2 53 43 03 57 5D 43 | ` 9 SC W]C +I 91446 2023-12-31 21:07:29 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 12 C2 53 43 03 57 5D 43 | ` 9 SC W]C +I 91446 2023-12-31 21:07:29 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 9C 64 4D 43 7B 5F 59 43 | ` 9 dMC{_YC +I 91446 2023-12-31 21:07:29 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 9C 64 4D 43 7B 5F 59 43 | ` 9 dMC{_YC +I 91446 2023-12-31 21:07:29 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 28 07 47 43 F1 67 55 43 | ` 9 ( GC gUC +I 91446 2023-12-31 21:07:29 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 28 07 47 43 F1 67 55 43 | ` 9 ( GC gUC +I 91446 2023-12-31 21:07:29 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 AF A9 40 43 6F 70 51 43 | ` 9 @CopQC +I 91446 2023-12-31 21:07:29 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 AF A9 40 43 6F 70 51 43 | ` 9 @CopQC +I 91446 2023-12-31 21:07:29 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 55 3C 3F 43 BC EB 49 43 | ` 9 UC d,C +I 91446 2023-12-31 21:07:30 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 20 B3 3E 43 E1 64 2C 43 | ` 9 >C d,C +I 91446 2023-12-31 21:07:30 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 9F CD 40 43 0D 34 25 43 | ` 9 @C 4%C +I 91446 2023-12-31 21:07:30 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 9F CD 40 43 0D 34 25 43 | ` 9 @C 4%C +I 91446 2023-12-31 21:07:30 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 3F C0 43 43 DD 50 1E 43 | ` 9 ? CC P C +I 91446 2023-12-31 21:07:30 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 3F C0 43 43 DD 50 1E 43 | ` 9 ? CC P C +I 91446 2023-12-31 21:07:30 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B2 81 47 43 70 D5 17 43 | ` 9 GCp C +I 91446 2023-12-31 21:07:30 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B2 81 47 43 70 D5 17 43 | ` 9 GCp C +I 91446 2023-12-31 21:07:31 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 6B 23 46 43 6E 4C 10 43 | ` 9 k#FCnL C +I 91446 2023-12-31 21:07:31 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 6B 23 46 43 6E 4C 10 43 | ` 9 k#FCnL C +I 91446 2023-12-31 21:07:31 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F1 20 46 43 3D D5 08 43 | ` 9 FC= C +I 91446 2023-12-31 21:07:31 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F1 20 46 43 3D D5 08 43 | ` 9 FC= C +I 91446 2023-12-31 21:07:31 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DA 9E 45 43 BC 59 01 43 | ` 9 EC Y C +I 91446 2023-12-31 21:07:31 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DA 9E 45 43 BC 59 01 43 | ` 9 EC Y C +I 91446 2023-12-31 21:07:31 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F5 E7 4A 43 4F A2 F7 42 | ` 9 JCO B +I 91446 2023-12-31 21:07:31 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F5 E7 4A 43 4F A2 F7 42 | ` 9 JCO B +I 91446 2023-12-31 21:07:31 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 10 C2 4F 43 96 89 EC 42 | ` 9 OC B +I 91446 2023-12-31 21:07:31 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 10 C2 4F 43 96 89 EC 42 | ` 9 OC B +I 91446 2023-12-31 21:07:31 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D7 40 50 43 32 43 DD 42 | ` 9 @PC2C B +I 91446 2023-12-31 21:07:31 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D7 40 50 43 32 43 DD 42 | ` 9 @PC2C B +I 91446 2023-12-31 21:07:32 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 27 FE 51 43 15 C1 CE 42 | ` 9 ' QC B +I 91446 2023-12-31 21:07:32 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 27 FE 51 43 15 C1 CE 42 | ` 9 ' QC B +I 91446 2023-12-31 21:07:32 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 01 41 53 43 E1 F7 BF 42 | ` 9 ASC B +I 91446 2023-12-31 21:07:32 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 01 41 53 43 E1 F7 BF 42 | ` 9 ASC B +I 91446 2023-12-31 21:07:32 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 40 8A 54 43 C3 30 B1 42 | ` 9 @ TC 0 B +I 91446 2023-12-31 21:07:32 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 40 8A 54 43 C3 30 B1 42 | ` 9 @ TC 0 B +I 91446 2023-12-31 21:07:32 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 40 D4 55 43 E8 69 A2 42 | ` 9 @ UC i B +I 91446 2023-12-31 21:07:32 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 40 D4 55 43 E8 69 A2 42 | ` 9 @ UC i B +I 91446 2023-12-31 21:07:32 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DB 1E 57 43 43 A3 93 42 | ` 9 WCC B +I 91446 2023-12-31 21:07:32 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DB 1E 57 43 43 A3 93 42 | ` 9 WCC B +I 91446 2023-12-31 21:07:32 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D0 69 58 43 BE DC 84 42 | ` 9 iXC B +I 91446 2023-12-31 21:07:32 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D0 69 58 43 BE DC 84 42 | ` 9 iXC B +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 23 B5 59 43 B2 2C 6C 42 | ` 9 # YC ,lB +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 23 B5 59 43 B2 2C 6C 42 | ` 9 # YC ,lB +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A0 00 5B 43 05 A0 4E 42 | ` 9 [C NB +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A0 00 5B 43 05 A0 4E 42 | ` 9 [C NB +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 96 70 61 43 EB 12 3E 42 | ` 9 paC >B +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 96 70 61 43 EB 12 3E 42 | ` 9 paC >B +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BD 74 67 43 A8 09 2D 42 | ` 9 tgC -B +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BD 74 67 43 A8 09 2D 42 | ` 9 tgC -B +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 D0 01 00 00 00 | ` 6 +0010 | DA 31 04 44 94 0A D0 40 F3 D4 FD 43 | 1 D @ C +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 00 D0 01 00 00 00 | ` 6 +0010 | DA 31 04 44 94 0A D0 40 F3 D4 FD 43 | 1 D @ C +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 3B 39 6E 43 1F 28 20 42 | ` 9 ;9nC ( B +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 3B 39 6E 43 1F 28 20 42 | ` 9 ;9nC ( B +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 01 00 | ` +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 01 00 01 00 00 00 | ` +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 01 00 01 00 00 00 | ` +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1F 01 01 00 | ` +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1F 01 01 00 | ` +I 91446 2023-12-31 21:07:33 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 03 4E 75 43 E4 5A 16 42 | ` 9 NuC Z B +I 91446 2023-12-31 21:07:33 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 03 4E 75 43 E4 5A 16 42 | ` 9 NuC Z B +I 91446 2023-12-31 21:07:34 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 00 00 00 00 E9 22 6F 43 | ` "oC +0010 | 00 00 00 00 53 93 1E 42 05 51 00 00 | S B Q +I 91446 2023-12-31 21:07:34 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 00 00 00 00 00 00 E9 22 6F 43 | ` "oC +0010 | 00 00 00 00 53 93 1E 42 05 51 00 00 | S B Q +I 91446 2023-12-31 21:07:34 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 0A 9F 7C 43 41 E5 0F 42 | ` 9 |CA B +I 91446 2023-12-31 21:07:34 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 0A 9F 7C 43 41 E5 0F 42 | ` 9 |CA B +I 91446 2023-12-31 21:07:34 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D2 09 82 43 B4 EF 0C 42 | ` 9 C B +I 91446 2023-12-31 21:07:34 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D2 09 82 43 B4 EF 0C 42 | ` 9 C B +I 91446 2023-12-31 21:07:34 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 8F C8 85 43 47 8F 0D 42 | ` 9 CG B +I 91446 2023-12-31 21:07:34 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 8F C8 85 43 47 8F 0D 42 | ` 9 CG B +I 91446 2023-12-31 21:07:34 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E3 7D 89 43 B6 C9 11 42 | ` 9 } C B +I 91446 2023-12-31 21:07:34 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E3 7D 89 43 B6 C9 11 42 | ` 9 } C B +I 91446 2023-12-31 21:07:34 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B3 BA 8C 43 FD 6D 01 42 | ` 9 C m B +I 91446 2023-12-31 21:07:34 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B3 BA 8C 43 FD 6D 01 42 | ` 9 C m B +I 91446 2023-12-31 21:07:34 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 5F 30 90 43 E2 6E EC 41 | ` 9 _0 C n A +I 91446 2023-12-31 21:07:34 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 5F 30 90 43 E2 6E EC 41 | ` 9 _0 C n A +I 91446 2023-12-31 21:07:35 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 35 BD 93 43 50 6A 01 42 | ` 9 5 CPj B +I 91446 2023-12-31 21:07:35 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 35 BD 93 43 50 6A 01 42 | ` 9 5 CPj B +I 91446 2023-12-31 21:07:35 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 32 38 97 43 53 1A 0B 42 | ` 9 28 CS B +I 91446 2023-12-31 21:07:35 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 32 38 97 43 53 1A 0B 42 | ` 9 28 CS B +I 91446 2023-12-31 21:07:35 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 7A DA 9A 43 4A 81 01 42 | ` 9 z CJ B +I 91446 2023-12-31 21:07:35 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 7A DA 9A 43 4A 81 01 42 | ` 9 z CJ B +I 91446 2023-12-31 21:07:35 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DE 8A 9E 43 CB 31 FA 41 | ` 9 C 1 A +I 91446 2023-12-31 21:07:35 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 DE 8A 9E 43 CB 31 FA 41 | ` 9 C 1 A +I 91446 2023-12-31 21:07:35 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D6 34 A2 43 F8 6B ED 41 | ` 9 4 C k A +I 91446 2023-12-31 21:07:35 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D6 34 A2 43 F8 6B ED 41 | ` 9 4 C k A +I 91446 2023-12-31 21:07:35 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 88 DF A5 43 DD D9 E0 41 | ` 9 C A +I 91446 2023-12-31 21:07:35 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 88 DF A5 43 DD D9 E0 41 | ` 9 C A +I 91446 2023-12-31 21:07:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 70 FF A8 43 92 17 02 42 | ` 9 p C B +I 91446 2023-12-31 21:07:36 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 70 FF A8 43 92 17 02 42 | ` 9 p C B +I 91446 2023-12-31 21:07:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 06 D7 AC 43 CC DC F4 41 | ` 9 C A +I 91446 2023-12-31 21:07:36 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 06 D7 AC 43 CC DC F4 41 | ` 9 C A +I 91446 2023-12-31 21:07:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 42 91 B0 43 76 99 F3 41 | ` 9 B Cv A +I 91446 2023-12-31 21:07:36 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 42 91 B0 43 76 99 F3 41 | ` 9 B Cv A +I 91446 2023-12-31 21:07:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 8B 43 00 00 00 00 | ` 6 C +0010 | 3E 51 B0 43 00 00 80 3F C9 C7 F3 41 | >Q C ? A +I 91446 2023-12-31 21:07:36 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 8B 43 00 00 00 00 | ` 6 C +0010 | 3E 51 B0 43 00 00 80 3F C9 C7 F3 41 | >Q C ? A +I 91446 2023-12-31 21:07:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 0C 00 1D 02 00 00 01 00 00 00 | ` -I 25793 2023-11-24 23:08:50 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:36 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 00 00 01 00 00 00 | ` +I 91446 2023-12-31 21:07:36 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1E 01 00 00 | ` -I 25793 2023-11-24 23:08:58 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:36 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1E 01 00 00 | ` +I 91446 2023-12-31 21:07:38 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 D3 58 02 44 D1 5C FF 43 | ` 7 X D \ C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:38 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 D3 58 02 44 D1 5C FF 43 | ` 7 X D \ C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:38 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 04 D0 01 44 F2 6E 01 44 | ` 7 D n D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:38 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 04 D0 01 44 F2 6E 01 44 | ` 7 D n D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:38 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 18 3C 01 44 B7 50 03 44 | ` 7 < D P D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:38 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 18 3C 01 44 B7 50 03 44 | ` 7 < D P D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:38 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 D8 02 01 44 81 4D 05 44 | ` 7 D M D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:38 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 D8 02 01 44 81 4D 05 44 | ` 7 D M D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:39 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 43 60 FF 43 61 CE 06 44 | ` 9 C` Ca D +I 91446 2023-12-31 21:07:39 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 43 60 FF 43 61 CE 06 44 | ` 9 C` Ca D +I 91446 2023-12-31 21:07:39 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 5D 53 FD 43 37 5E 08 44 | ` 9 ]S C7^ D +I 91446 2023-12-31 21:07:39 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 5D 53 FD 43 37 5E 08 44 | ` 9 ]S C7^ D +I 91446 2023-12-31 21:07:39 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 AA 14 FB 43 A6 DE 09 44 | ` 9 C D +I 91446 2023-12-31 21:07:39 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 AA 14 FB 43 A6 DE 09 44 | ` 9 C D +I 91446 2023-12-31 21:07:39 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 51 D8 F8 43 04 60 0B 44 | ` 9 Q C ` D +I 91446 2023-12-31 21:07:39 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 51 D8 F8 43 04 60 0B 44 | ` 9 Q C ` D +I 91446 2023-12-31 21:07:39 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 BB 9C F6 43 A9 E1 0C 44 | ` 9 C D +I 91446 2023-12-31 21:07:39 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 BB 9C F6 43 A9 E1 0C 44 | ` 9 C D +I 91446 2023-12-31 21:07:40 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 04 E6 01 00 10 00 | ` 6 +0010 | D3 C2 F6 43 4C FD E8 40 F2 C7 0C 44 | CL @ D +I 91446 2023-12-31 21:07:40 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 04 E6 01 00 10 00 | ` 6 +0010 | D3 C2 F6 43 4C FD E8 40 F2 C7 0C 44 | CL @ D +I 91446 2023-12-31 21:07:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 1C 00 36 06 00 00 00 00 00 D0 01 00 00 00 | ` 6 0010 | A9 29 05 44 1A CE E7 40 6B A6 F1 43 | ) D @k C -I 25793 2023-11-24 23:08:58 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 00 D0 01 00 00 00 | ` 6 +0010 | A9 29 05 44 1A CE E7 40 6B A6 F1 43 | ) D @k C +I 91446 2023-12-31 21:07:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1B 01 00 00 | ` -I 25793 2023-11-24 23:08:58 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1B 01 00 00 | ` +I 91446 2023-12-31 21:07:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 0C 00 1D 02 00 00 01 00 00 00 | ` -I 25793 2023-11-24 23:08:58 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 1D 02 00 00 01 00 00 00 | ` +I 91446 2023-12-31 21:07:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 08 00 1F 01 00 00 | ` -I 25793 2023-11-24 23:09:09 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 8C ED 05 44 82 58 F5 43 | ` 7 D X C +I 91446 2023-12-31 21:07:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 08 00 1F 01 00 00 | ` +I 91446 2023-12-31 21:07:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 CD 23 06 44 F2 28 EE 43 | ` 7 # D ( C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:10 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 12 EA 06 44 64 B2 F8 43 | ` 7 Dd C +I 91446 2023-12-31 21:07:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 CD 23 06 44 F2 28 EE 43 | ` 7 # D ( C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:10 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 13 77 05 44 CD 74 FB 43 | ` 7 w D t C +I 91446 2023-12-31 21:07:44 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 01 00 01 00 00 00 D3 C2 F6 43 | ` C +0010 | 4C FD E8 40 F2 C7 0C 44 04 E6 FF FF | L @ D +I 91446 2023-12-31 21:07:44 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 1C 06 01 00 01 00 00 00 D3 C2 F6 43 | ` C +0010 | 4C FD E8 40 F2 C7 0C 44 04 E6 FF FF | L @ D +I 91446 2023-12-31 21:07:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 B3 19 04 44 7A 3A EF 43 | ` 7 Dz: C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:10 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 46 2D 04 44 66 6E FE 43 | ` 7 F- Dfn C +I 91446 2023-12-31 21:07:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 B3 19 04 44 7A 3A EF 43 | ` 7 Dz: C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:10 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 B7 CC 02 44 E0 A9 00 44 | ` 9 D D -I 25793 2023-11-24 23:09:11 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 0C 89 01 44 56 0C 02 44 | ` 9 DV D -I 25793 2023-11-24 23:09:11 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 F3 42 00 44 8E 6C 03 44 | ` 9 B D l D -I 25793 2023-11-24 23:09:11 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 0C 00 3A 02 00 00 CE E4 00 00 | ` : -I 25793 2023-11-24 23:09:11 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 0F 30 02 44 BE C0 EF 43 | ` 7 0 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 0F 30 02 44 BE C0 EF 43 | ` 7 0 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:44 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 76 15 01 44 D0 19 F3 43 | ` 7 v D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:44 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 76 15 01 44 D0 19 F3 43 | ` 7 v D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:45 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 10 1A 00 44 9B 81 F6 43 | ` 9 D C +I 91446 2023-12-31 21:07:45 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 10 1A 00 44 9B 81 F6 43 | ` 9 D C +I 91446 2023-12-31 21:07:45 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 1C D2 FE 43 C5 FE F9 43 | ` 9 C C +I 91446 2023-12-31 21:07:45 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 1C D2 FE 43 C5 FE F9 43 | ` 9 C C +I 91446 2023-12-31 21:07:45 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 66 CD FD 43 BD 99 FD 43 | ` 9 f C C +I 91446 2023-12-31 21:07:45 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 66 CD FD 43 BD 99 FD 43 | ` 9 f C C +I 91446 2023-12-31 21:07:45 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 8F 35 FD 43 55 A6 00 44 | ` 9 5 CU D +I 91446 2023-12-31 21:07:45 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 8F 35 FD 43 55 A6 00 44 | ` 9 5 CU D +I 91446 2023-12-31 21:07:45 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 FD 0D FD 43 69 85 02 44 | ` 9 Ci D +I 91446 2023-12-31 21:07:45 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 FD 0D FD 43 69 85 02 44 | ` 9 Ci D +I 91446 2023-12-31 21:07:46 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BB 6E FA 43 C4 EA 03 44 | ` 9 n C D +I 91446 2023-12-31 21:07:46 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BB 6E FA 43 C4 EA 03 44 | ` 9 n C D +I 91446 2023-12-31 21:07:46 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 7E 65 F8 43 10 7B 05 44 | ` 9 ~e C { D +I 91446 2023-12-31 21:07:46 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 7E 65 F8 43 10 7B 05 44 | ` 9 ~e C { D +I 91446 2023-12-31 21:07:46 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 63 24 F6 43 9F FA 06 44 | ` 9 c$ C D +I 91446 2023-12-31 21:07:46 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 63 24 F6 43 9F FA 06 44 | ` 9 c$ C D +I 91446 2023-12-31 21:07:46 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B1 DE F6 43 98 DB 08 44 | ` 9 C D +I 91446 2023-12-31 21:07:46 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B1 DE F6 43 98 DB 08 44 | ` 9 C D +I 91446 2023-12-31 21:07:46 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 9A 65 F4 43 F2 67 0A 44 | ` 9 e C g D +I 91446 2023-12-31 21:07:46 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 9A 65 F4 43 F2 67 0A 44 | ` 9 e C g D +I 91446 2023-12-31 21:07:46 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 09 C7 F2 43 C5 15 0C 44 | ` 9 C D +I 91446 2023-12-31 21:07:46 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 09 C7 F2 43 C5 15 0C 44 | ` 9 C D +I 91446 2023-12-31 21:07:47 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 38 EA 01 00 10 00 | ` 6 8 +0010 | 73 19 F4 43 0A 47 FD 40 18 07 0B 44 | s C G @ D +I 91446 2023-12-31 21:07:47 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 38 EA 01 00 10 00 | ` 6 8 +0010 | 73 19 F4 43 0A 47 FD 40 18 07 0B 44 | s C G @ D +I 91446 2023-12-31 21:07:48 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 3A 02 01 00 56 CE 00 00 | ` : V +I 91446 2023-12-31 21:07:48 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 3A 02 01 00 56 CE 00 00 | ` : V +I 91446 2023-12-31 21:07:49 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) 0000 | 60 00 10 00 0B 03 71 40 01 00 00 00 71 00 00 00 | ` q@ q -I 25793 2023-11-24 23:09:11 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 2C 00 51 0A 60 40 01 02 71 00 9B FC EF 43 | ` , Q `@ q C -0010 | 42 06 0E 44 10 00 00 00 01 02 00 00 00 00 00 00 | B D -0020 | 00 00 00 00 71 01 00 00 00 00 00 00 | q -I 25793 2023-11-24 23:09:11 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 0C 00 3B 02 00 00 CD E4 00 00 | ` ; -I 25793 2023-11-24 23:09:12 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 0C 00 3C 02 00 00 CD E4 00 00 | ` < -I 25793 2023-11-24 23:09:13 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 CD E4 01 00 10 00 | ` 6 -0010 | 0F D9 00 44 A8 0F D6 40 A3 CA 02 44 | D @ D -I 25793 2023-11-24 23:09:13 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 DB 11 FF 43 D9 4C 04 44 | ` 7 C L D -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:13 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 DC 75 FC 43 E0 D0 05 44 | ` 7 u C D -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:14 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 0C 00 3A 02 00 00 1A E1 00 00 | ` : -I 25793 2023-11-24 23:09:14 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 0B 03 6F 40 01 00 00 00 6F 00 00 00 | ` o@ o -I 25793 2023-11-24 23:09:14 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 2C 00 51 0A 60 40 01 02 6F 00 65 1F E8 43 | ` , Q `@ o e C -0010 | 5E 83 10 44 10 00 00 00 04 00 00 00 00 00 00 00 | ^ D -0020 | 00 00 00 00 6F 01 00 00 0A 00 00 00 | o -I 25793 2023-11-24 23:09:15 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 1A E1 01 00 10 00 | ` 6 -0010 | D1 1B FD 43 58 D8 DB 40 D2 6F 05 44 | CX @ o D -I 25793 2023-11-24 23:09:15 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 29 4E FD 43 34 6F 07 44 | ` 7 )N C4o D -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:15 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 C6 D5 FD 43 41 62 09 44 | ` 7 CAb D -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:15 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 0C 00 3A 02 00 00 0B EC 00 00 | ` : -I 25793 2023-11-24 23:09:16 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 0B EC 01 00 10 00 | ` 6 -0010 | 71 C2 FD 43 B8 2B CE 40 3B 23 09 44 | q C + @;# D -I 25793 2023-11-24 23:09:16 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 6E 1A FC 43 46 F5 0A 44 | ` 7 n CF D -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:16 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 7D 6C FA 43 EA C5 0C 44 | ` 7 }l C D -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:17 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 0C 00 3A 02 00 00 3C E9 00 00 | ` : < -I 25793 2023-11-24 23:09:17 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:49 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 0B 03 71 40 01 00 00 00 71 00 00 00 | ` q@ q +I 91446 2023-12-31 21:07:49 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) 0000 | 60 00 10 00 0B 03 70 40 01 00 00 00 70 00 00 00 | ` p@ p -I 25793 2023-11-24 23:09:17 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:49 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 0B 03 70 40 01 00 00 00 70 00 00 00 | ` p@ p +I 91446 2023-12-31 21:07:49 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 0B 03 6F 40 01 00 00 00 6F 00 00 00 | ` o@ o +I 91446 2023-12-31 21:07:49 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 0B 03 6F 40 01 00 00 00 6F 00 00 00 | ` o@ o +I 91446 2023-12-31 21:07:49 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 2C 00 51 0A 60 40 01 02 70 00 1C D1 F2 43 | ` , Q `@ p C -0010 | C2 80 12 44 10 00 00 00 00 01 00 00 00 00 01 FB | D -0020 | 00 00 00 00 70 01 00 00 00 00 00 00 | p -I 25793 2023-11-24 23:09:18 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 3C E9 01 00 10 00 | ` 6 < -0010 | CF AE FB 43 B8 91 D1 40 B6 69 0B 44 | C @ i D -I 25793 2023-11-24 23:09:18 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 A3 EB F9 43 56 35 0D 44 | ` 7 CV5 D +0010 | C2 80 12 44 10 00 00 00 04 00 00 00 00 00 00 00 | D +0020 | 00 00 00 00 70 01 00 00 05 00 00 00 | p +I 91446 2023-12-31 21:07:49 - [Lobby:00000015:FloorItems:01] Added floor item 00000170 at 485.634, 586.012 with drop number 0 visible to 00F +I 91446 2023-12-31 21:07:49 - [Lobby:00000015:FloorItems:01] Evicted 0 items +I 91446 2023-12-31 21:07:49 - [Game:15] Player 0 (leader) created floor item 00000170 (5 Meseta) at 1:(485.634, 586.012) +I 91446 2023-12-31 21:07:49 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 2C 00 51 0A 60 40 01 02 70 00 1C D1 F2 43 | ` , Q `@ p C +0010 | C2 80 12 44 10 00 00 00 04 00 00 00 00 00 00 00 | D +0020 | 00 00 00 00 70 01 00 00 05 00 00 00 | p +I 91446 2023-12-31 21:07:49 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 2C 00 51 0A 60 40 01 02 6F 00 65 1F E8 43 | ` , Q `@ o e C +0010 | 5E 83 10 44 10 00 00 00 00 0A 00 00 00 00 02 FB | ^ D +0020 | 00 00 00 00 6F 01 00 00 00 00 00 00 | o +I 91446 2023-12-31 21:07:49 - [Lobby:00000015:FloorItems:01] Added floor item 0000016F at 464.245, 578.053 with drop number 1 visible to 00F +I 91446 2023-12-31 21:07:49 - [Lobby:00000015:FloorItems:01] Evicted 0 items +I 91446 2023-12-31 21:07:49 - [Game:15] Player 0 (leader) created floor item 0000016F (Cane 0/-5/0/0/0) at 1:(464.245, 578.053) +I 91446 2023-12-31 21:07:49 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 2C 00 51 0A 60 40 01 02 6F 00 65 1F E8 43 | ` , Q `@ o e C +0010 | 5E 83 10 44 10 00 00 00 00 0A 00 00 00 00 02 FB | ^ D +0020 | 00 00 00 00 6F 01 00 00 00 00 00 00 | o +I 91446 2023-12-31 21:07:50 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 56 CE 01 00 10 00 | ` 6 V +0010 | AB 3F F6 43 E8 8E EA 40 2A 35 0D 44 | ? C @*5 D +I 91446 2023-12-31 21:07:50 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 56 CE 01 00 10 00 | ` 6 V +0010 | AB 3F F6 43 E8 8E EA 40 2A 35 0D 44 | ? C @*5 D +I 91446 2023-12-31 21:07:51 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 15 16 F2 43 86 C1 0C 44 | ` 7 C D 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:18 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 03 20 F6 43 01 D9 0D 44 | ` 7 C D +I 91446 2023-12-31 21:07:51 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 15 16 F2 43 86 C1 0C 44 | ` 7 C D 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:18 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 62 0F F4 43 D6 90 0F 44 | ` 7 b C D +I 91446 2023-12-31 21:07:51 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 01 52 F0 43 53 44 0E 44 | ` 7 R CSD D 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:18 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 A4 ED 01 00 10 00 | ` 6 -0010 | 66 05 F4 43 14 FB EF 40 2F 85 0F 44 | f C @/ D -I 25793 2023-11-24 23:09:19 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 4C B9 F1 43 53 28 11 44 | ` 7 L CS( D +I 91446 2023-12-31 21:07:51 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 01 52 F0 43 53 44 0E 44 | ` 7 R CSD D 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:19 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 88 79 EF 43 60 CF 12 44 | ` 7 y C` D +I 91446 2023-12-31 21:07:51 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 FD 4D EE 43 90 FE 0F 44 | ` 7 M C D 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:19 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 64 8A EB 43 41 2D 13 44 | ` 7 d CA- D +I 91446 2023-12-31 21:07:51 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 FD 4D EE 43 90 FE 0F 44 | ` 7 M C D 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:20 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 B4 94 E8 43 C9 E7 11 44 | ` 7 C D -0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:20 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 E9 22 E6 43 AE 5D 10 44 | ` 9 " C ] D -I 25793 2023-11-24 23:09:20 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:51 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 7C EA 01 00 10 00 | ` 6 | +0010 | FD 4D EE 43 9E 4B 07 41 8F FE 0F 44 | M C K A D +I 91446 2023-12-31 21:07:51 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 7C EA 01 00 10 00 | ` 6 | +0010 | FD 4D EE 43 9E 4B 07 41 8F FE 0F 44 | M C K A D +I 91446 2023-12-31 21:07:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 10 00 4B 03 00 00 00 00 01 00 6F 01 00 00 | ` K o -I 25793 2023-11-24 23:09:20 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C8 60 E4 43 03 B6 0E 44 | ` 9 ` C D -I 25793 2023-11-24 23:09:20 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 29 20 E3 43 97 F2 0C 44 | ` 9 ) C D -I 25793 2023-11-24 23:09:20 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 69 63 E2 43 DA 1C 0B 44 | ` 9 ic C D -I 25793 2023-11-24 23:09:21 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C6 0C E5 43 0A BF 09 44 | ` 9 C D -I 25793 2023-11-24 23:09:21 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 5C 97 E7 43 17 70 08 44 | ` 9 \ C p D -I 25793 2023-11-24 23:09:21 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 2F A6 EA 43 AC 5B 07 44 | ` 9 / C [ D -I 25793 2023-11-24 23:09:21 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 5F F6 ED 43 F4 7B 06 44 | ` 9 _ C { D -I 25793 2023-11-24 23:09:21 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 7F 78 F1 43 1B D4 05 44 | ` 9 x C D -I 25793 2023-11-24 23:09:21 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 07 1E F5 43 D3 66 05 44 | ` 9 C f D -I 25793 2023-11-24 23:09:22 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 66 64 F7 43 57 DC 03 44 | ` 9 fd CW D -I 25793 2023-11-24 23:09:22 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 09 56 FA 43 28 B2 02 44 | ` 9 V C( D -I 25793 2023-11-24 23:09:22 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 ED 69 FD 43 EB A0 01 44 | ` 9 i C D -I 25793 2023-11-24 23:09:22 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 5B 5D 00 44 0B C2 00 44 | ` 9 [] D D -I 25793 2023-11-24 23:09:22 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 AA 1D 02 44 25 18 00 44 | ` 9 D% D -I 25793 2023-11-24 23:09:22 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 22 EF 03 44 63 4A FF 43 | ` 9 " DcJ C -I 25793 2023-11-24 23:09:23 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 06 CB 05 44 9D D5 FE 43 | ` 9 D C -I 25793 2023-11-24 23:09:23 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 7C AA 05 44 8F D3 FA 43 | ` 9 | D C -I 25793 2023-11-24 23:09:23 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 38 E5 05 44 6F 29 F7 43 | ` 9 8 Do) C -I 25793 2023-11-24 23:09:23 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C7 F7 05 44 25 6A F3 43 | ` 9 D%j C -I 25793 2023-11-24 23:09:23 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 0C 00 3A 02 00 00 E2 7E 00 00 | ` : ~ -I 25793 2023-11-24 23:09:23 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:07:53 - [Lobby:00000015:FloorItems:01] Removed floor item 0000016F at 464.245, 578.053 with drop number 1 visible to 00F +I 91446 2023-12-31 21:07:53 - [Game:15] Player 0 picked up 0000016F (Cane 0/-5/0/0/0) +[PlayerInventory] Meseta: 65886 +[PlayerInventory] 9 items +[PlayerInventory] 0: [+00000004] 00060000 00000000 00000000 (0001000A) 00000000 (Handgun) +[PlayerInventory] 1: [+00000004] 01010000 00000000 00000000 (0001000B) 00000000 (Frame) +[PlayerInventory] 2: [+0000000C] 02000500 F8011E00 04000000 (0001000C) 2A020005 (Mag LV5 5.04/0.3/0.04/0 42% 2IQ (black)) +[PlayerInventory] 3: [+00000010] 03000000 00040000 00000000 (0001000D) 00000000 (Monomate x4) +[PlayerInventory] 4: [+0000000C] 01020000 00000000 00000000 (0001000E) 00000000 (Barrier) +[PlayerInventory] 5: [+0000000C] 01010000 00000000 00000000 (0001000F) 00002800 (Frame) +[PlayerInventory] 6: [+0000000C] 00010000 00000000 00000000 (00010011) 00000000 (Saber) +[PlayerInventory] 7: [+00000004] 00060001 00000000 00000000 (00010012) 00000000 (Handgun +1) +[PlayerInventory] 8: [+00000000] 000A0000 000002FB 00000000 (0000016F) 00000000 (Cane 0/-5/0/0/0) +I 91446 2023-12-31 21:07:53 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 00 00 00 00 01 00 6F 01 00 00 | ` K o +I 91446 2023-12-31 21:07:53 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 00 00 00 00 01 00 70 01 00 00 | ` K p +I 91446 2023-12-31 21:07:53 - [Lobby:00000015:FloorItems:01] Removed floor item 00000170 at 485.634, 586.012 with drop number 0 visible to 00F +I 91446 2023-12-31 21:07:53 - [Game:15] Player 0 picked up 00000170 (5 Meseta) +[PlayerInventory] Meseta: 65891 +[PlayerInventory] 9 items +[PlayerInventory] 0: [+00000004] 00060000 00000000 00000000 (0001000A) 00000000 (Handgun) +[PlayerInventory] 1: [+00000004] 01010000 00000000 00000000 (0001000B) 00000000 (Frame) +[PlayerInventory] 2: [+0000000C] 02000500 F8011E00 04000000 (0001000C) 2A020005 (Mag LV5 5.04/0.3/0.04/0 42% 2IQ (black)) +[PlayerInventory] 3: [+00000010] 03000000 00040000 00000000 (0001000D) 00000000 (Monomate x4) +[PlayerInventory] 4: [+0000000C] 01020000 00000000 00000000 (0001000E) 00000000 (Barrier) +[PlayerInventory] 5: [+0000000C] 01010000 00000000 00000000 (0001000F) 00002800 (Frame) +[PlayerInventory] 6: [+0000000C] 00010000 00000000 00000000 (00010011) 00000000 (Saber) +[PlayerInventory] 7: [+00000004] 00060001 00000000 00000000 (00010012) 00000000 (Handgun +1) +[PlayerInventory] 8: [+00000000] 000A0000 000002FB 00000000 (0000016F) 00000000 (Cane 0/-5/0/0/0) +I 91446 2023-12-31 21:07:53 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 00 00 00 00 01 00 70 01 00 00 | ` K p +I 91446 2023-12-31 21:07:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 09 52 F0 43 54 44 0E 44 | ` 7 R CTD D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:54 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 09 52 F0 43 54 44 0E 44 | ` 7 R CTD D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 BA 24 EF 43 2A 87 0C 44 | ` 7 $ C* D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:54 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 BA 24 EF 43 2A 87 0C 44 | ` 7 $ C* D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 14 DF EB 43 BE 70 0B 44 | ` 7 C p D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:54 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 14 DF EB 43 BE 70 0B 44 | ` 7 C p D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:54 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 74 1B E9 43 CC 01 0A 44 | ` 7 t C D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:54 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 74 1B E9 43 CC 01 0A 44 | ` 7 t C D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:07:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 55 E4 E6 43 73 59 08 44 | ` 9 U CsY D +I 91446 2023-12-31 21:07:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 55 E4 E6 43 73 59 08 44 | ` 9 U CsY D +I 91446 2023-12-31 21:07:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 09 52 E5 43 8A A6 06 44 | ` 9 R C D +I 91446 2023-12-31 21:07:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 09 52 E5 43 8A A6 06 44 | ` 9 R C D +I 91446 2023-12-31 21:07:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 88 3F E4 43 7B DB 04 44 | ` 9 ? C{ D +I 91446 2023-12-31 21:07:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 88 3F E4 43 7B DB 04 44 | ` 9 ? C{ D +I 91446 2023-12-31 21:07:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 23 09 E1 43 C5 CF 03 44 | ` 9 # C D +I 91446 2023-12-31 21:07:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 23 09 E1 43 C5 CF 03 44 | ` 9 # C D +I 91446 2023-12-31 21:07:55 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 03 2F E1 43 07 D0 01 44 | ` 9 / C D +I 91446 2023-12-31 21:07:55 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 03 2F E1 43 07 D0 01 44 | ` 9 / C D +I 91446 2023-12-31 21:07:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F8 2A E1 43 98 F7 FF 43 | ` 9 * C C +I 91446 2023-12-31 21:07:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F8 2A E1 43 98 F7 FF 43 | ` 9 * C C +I 91446 2023-12-31 21:07:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 61 E5 E1 43 8C 4B FC 43 | ` 9 a C K C +I 91446 2023-12-31 21:07:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 61 E5 E1 43 8C 4B FC 43 | ` 9 a C K C +I 91446 2023-12-31 21:07:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D3 19 E3 43 DE BF F8 43 | ` 9 C C +I 91446 2023-12-31 21:07:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 D3 19 E3 43 DE BF F8 43 | ` 9 C C +I 91446 2023-12-31 21:07:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BB BF E4 43 F9 62 F5 43 | ` 9 C b C +I 91446 2023-12-31 21:07:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 BB BF E4 43 F9 62 F5 43 | ` 9 C b C +I 91446 2023-12-31 21:07:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 39 78 E8 43 F8 93 F4 43 | ` 9 9x C C +I 91446 2023-12-31 21:07:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 39 78 E8 43 F8 93 F4 43 | ` 9 9x C C +I 91446 2023-12-31 21:07:56 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 85 6E EB 43 00 2E F2 43 | ` 9 n C . C +I 91446 2023-12-31 21:07:56 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 85 6E EB 43 00 2E F2 43 | ` 9 n C . C +I 91446 2023-12-31 21:07:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 12 18 ED 43 E7 D6 EE 43 | ` 9 C C +I 91446 2023-12-31 21:07:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 12 18 ED 43 E7 D6 EE 43 | ` 9 C C +I 91446 2023-12-31 21:07:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 2E 50 EF 43 59 D1 EB 43 | ` 9 .P CY C +I 91446 2023-12-31 21:07:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 2E 50 EF 43 59 D1 EB 43 | ` 9 .P CY C +I 91446 2023-12-31 21:07:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 C6 5F F1 43 96 AF E8 43 | ` 9 _ C C +I 91446 2023-12-31 21:07:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 C6 5F F1 43 96 AF E8 43 | ` 9 _ C C +I 91446 2023-12-31 21:07:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 05 72 F3 43 50 8F E5 43 | ` 9 r CP C +I 91446 2023-12-31 21:07:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 05 72 F3 43 50 8F E5 43 | ` 9 r CP C +I 91446 2023-12-31 21:07:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 2C 85 F5 43 A4 6F E2 43 | ` 9 , C o C +I 91446 2023-12-31 21:07:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 2C 85 F5 43 A4 6F E2 43 | ` 9 , C o C +I 91446 2023-12-31 21:07:57 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 C5 97 F7 43 99 4F DF 43 | ` 9 C O C +I 91446 2023-12-31 21:07:57 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 C5 97 F7 43 99 4F DF 43 | ` 9 C O C +I 91446 2023-12-31 21:07:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 28 AA F9 43 6B 2F DC 43 | ` 9 ( Ck/ C +I 91446 2023-12-31 21:07:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 28 AA F9 43 6B 2F DC 43 | ` 9 ( Ck/ C +I 91446 2023-12-31 21:07:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 4C BC FB 43 13 0F D9 43 | ` 9 L C C +I 91446 2023-12-31 21:07:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 4C BC FB 43 13 0F D9 43 | ` 9 L C C +I 91446 2023-12-31 21:07:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 4C CE FD 43 A3 EE D5 43 | ` 9 L C C +I 91446 2023-12-31 21:07:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 4C CE FD 43 A3 EE D5 43 | ` 9 L C C +I 91446 2023-12-31 21:07:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 25 E0 FF 43 17 CE D2 43 | ` 9 % C C +I 91446 2023-12-31 21:07:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 25 E0 FF 43 17 CE D2 43 | ` 9 % C C +I 91446 2023-12-31 21:07:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F5 F8 00 44 80 AD CF 43 | ` 9 D C +I 91446 2023-12-31 21:07:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 F5 F8 00 44 80 AD CF 43 | ` 9 D C +I 91446 2023-12-31 21:07:58 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 2F 68 01 00 10 00 | ` 6 /h +0010 | 4D E7 00 44 00 85 23 41 E3 E2 CF 43 | M D #A C +I 91446 2023-12-31 21:07:58 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 2F 68 01 00 10 00 | ` 6 /h +0010 | 4D E7 00 44 00 85 23 41 E3 E2 CF 43 | M D #A C +I 91446 2023-12-31 21:08:09 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 C1 DE F4 43 88 54 0B 44 | ` 7 C T D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:09 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 C1 DE F4 43 88 54 0B 44 | ` 7 C T D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:10 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 ED 0C F4 43 F5 6D 09 44 | ` 7 C m D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:10 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 ED 0C F4 43 F5 6D 09 44 | ` 7 C m D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:10 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 55 1D F4 43 15 6E 07 44 | ` 7 U C n D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:10 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 55 1D F4 43 15 6E 07 44 | ` 7 U C n D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:10 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 DA F6 F4 43 A5 7A 05 44 | ` 7 C z D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:10 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 DA F6 F4 43 A5 7A 05 44 | ` 7 C z D +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:10 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 CB 94 F6 43 18 A7 03 44 | ` 9 C D +I 91446 2023-12-31 21:08:10 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 CB 94 F6 43 18 A7 03 44 | ` 9 C D +I 91446 2023-12-31 21:08:10 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 47 99 F8 43 BA 13 02 44 | ` 9 G C D +I 91446 2023-12-31 21:08:10 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 47 99 F8 43 BA 13 02 44 | ` 9 G C D +I 91446 2023-12-31 21:08:11 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 3B 0E FB 43 42 AA 00 44 | ` 9 ; CB D +I 91446 2023-12-31 21:08:11 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 3B 0E FB 43 42 AA 00 44 | ` 9 ; CB D +I 91446 2023-12-31 21:08:11 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 A2 DF FD 43 83 DD FE 43 | ` 9 C C +I 91446 2023-12-31 21:08:11 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 A2 DF FD 43 83 DD FE 43 | ` 9 C C +I 91446 2023-12-31 21:08:11 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 40 6E FE 43 D1 12 FB 43 | ` 9 @n C C +I 91446 2023-12-31 21:08:11 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 40 6E FE 43 D1 12 FB 43 | ` 9 @n C C +I 91446 2023-12-31 21:08:11 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 F6 BE FF 43 4F 92 F7 43 | ` 9 CO C +I 91446 2023-12-31 21:08:11 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 F6 BE FF 43 4F 92 F7 43 | ` 9 CO C +I 91446 2023-12-31 21:08:11 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 84 91 00 44 3B 17 F4 43 | ` 9 D; C +I 91446 2023-12-31 21:08:11 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 84 91 00 44 3B 17 F4 43 | ` 9 D; C +I 91446 2023-12-31 21:08:11 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 21 6E 01 44 49 C3 F0 43 | ` 9 !n DI C +I 91446 2023-12-31 21:08:11 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 21 6E 01 44 49 C3 F0 43 | ` 9 !n DI C +I 91446 2023-12-31 21:08:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 83 75 02 44 94 A1 ED 43 | ` 9 u D C +I 91446 2023-12-31 21:08:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 83 75 02 44 94 A1 ED 43 | ` 9 u D C +I 91446 2023-12-31 21:08:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 B0 A6 03 44 A5 BD EA 43 | ` 9 D C +I 91446 2023-12-31 21:08:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 B0 A6 03 44 A5 BD EA 43 | ` 9 D C +I 91446 2023-12-31 21:08:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 2D FF 04 44 69 22 E8 43 | ` 9 - Di" C +I 91446 2023-12-31 21:08:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 2D FF 04 44 69 22 E8 43 | ` 9 - Di" C +I 91446 2023-12-31 21:08:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 1F 2B 05 44 2F 52 E4 43 | ` 9 + D/R C +I 91446 2023-12-31 21:08:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 1F 2B 05 44 2F 52 E4 43 | ` 9 + D/R C +I 91446 2023-12-31 21:08:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 CC A7 05 44 1B B8 E0 43 | ` 9 D C +I 91446 2023-12-31 21:08:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 CC A7 05 44 1B B8 E0 43 | ` 9 D C +I 91446 2023-12-31 21:08:12 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 65 06 06 44 F9 0A DD 43 | ` 9 e D C +I 91446 2023-12-31 21:08:12 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 65 06 06 44 F9 0A DD 43 | ` 9 e D C +I 91446 2023-12-31 21:08:13 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 52 67 06 44 C0 5E D9 43 | ` 9 Rg D ^ C +I 91446 2023-12-31 21:08:13 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 52 67 06 44 C0 5E D9 43 | ` 9 Rg D ^ C +I 91446 2023-12-31 21:08:13 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 B8 C8 06 44 BA B2 D5 43 | ` 9 D C +I 91446 2023-12-31 21:08:13 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 B8 C8 06 44 BA B2 D5 43 | ` 9 D C +I 91446 2023-12-31 21:08:13 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 8C 2A 07 44 DF 06 D2 43 | ` 9 * D C +I 91446 2023-12-31 21:08:13 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 8C 2A 07 44 DF 06 D2 43 | ` 9 * D C +I 91446 2023-12-31 21:08:13 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 A3 77 01 00 10 00 | ` 6 w +0010 | 00 24 07 44 64 7A EB 40 85 45 D2 43 | $ Ddz @ E C +I 91446 2023-12-31 21:08:13 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 A3 77 01 00 10 00 | ` 6 w +0010 | 00 24 07 44 64 7A EB 40 85 45 D2 43 | $ Ddz @ E C +I 91446 2023-12-31 21:08:26 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B0 BB 06 44 0B 30 D6 43 | ` 7 D 0 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:26 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B0 BB 06 44 0B 30 D6 43 | ` 7 D 0 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:26 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 2F F0 01 00 10 00 | ` 6 / +0010 | EF DE 06 44 BC 72 DD 40 FD 01 D6 43 | D r @ C +I 91446 2023-12-31 21:08:26 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 2F F0 01 00 10 00 | ` 6 / +0010 | EF DE 06 44 BC 72 DD 40 FD 01 D6 43 | D r @ C +I 91446 2023-12-31 21:08:26 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 2F C9 08 44 44 29 D7 43 | ` 7 / DD) C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:26 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 2F C9 08 44 44 29 D7 43 | ` 7 / DD) C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:26 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 2C 7C 0A 44 F0 20 D9 43 | ` 7 ,| D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:26 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 2C 7C 0A 44 F0 20 D9 43 | ` 7 ,| D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:27 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 06 2A 01 00 10 00 | ` 6 * +0010 | A5 7C 0A 44 D8 79 B4 40 30 19 D9 43 | | D y @0 C +I 91446 2023-12-31 21:08:27 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 06 2A 01 00 10 00 | ` 6 * +0010 | A5 7C 0A 44 D8 79 B4 40 30 19 D9 43 | | D y @0 C +I 91446 2023-12-31 21:08:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 9F 99 FF 43 EC 38 D3 43 | ` 7 C 8 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 9F 99 FF 43 EC 38 D3 43 | ` 7 C 8 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 BB E0 01 00 10 00 | ` 6 +0010 | 2B EC FF 43 C2 43 0F 41 3D 28 D3 43 | + C C A=( C +I 91446 2023-12-31 21:08:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 BB E0 01 00 10 00 | ` 6 +0010 | 2B EC FF 43 C2 43 0F 41 3D 28 D3 43 | + C C A=( C +I 91446 2023-12-31 21:08:28 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 7C 3E 01 44 A0 16 D0 43 | ` 7 |> D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:28 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 7C 3E 01 44 A0 16 D0 43 | ` 7 |> D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:28 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 3D 5C 01 00 10 00 | ` 6 =\ +0010 | 31 16 01 44 0C B4 1F 41 B6 1D D0 43 | 1 D A C +I 91446 2023-12-31 21:08:28 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 3D 5C 01 00 10 00 | ` 6 =\ +0010 | 31 16 01 44 0C B4 1F 41 B6 1D D0 43 | 1 D A C +I 91446 2023-12-31 21:08:38 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=06 flag=00) +0000 | 06 00 20 00 00 00 00 00 00 00 00 00 24 64 72 6F | $dro +0010 | 70 6D 6F 64 65 20 70 72 69 76 61 74 65 00 00 00 | pmode private +I 91446 2023-12-31 21:08:38 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 3A 02 00 00 3D 5C 00 00 | ` : =\ +I 91446 2023-12-31 21:08:38 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 3A 02 00 00 3D 5C 00 00 | ` : =\ +I 91446 2023-12-31 21:08:38 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 10 00 0B 03 73 40 01 00 00 00 73 00 00 00 | ` s@ s -I 25793 2023-11-24 23:09:24 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:08:38 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 0B 03 73 40 01 00 00 00 73 00 00 00 | ` s@ s +I 91446 2023-12-31 21:08:38 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 2C 00 51 0A 60 40 01 02 73 00 3E 98 06 44 | ` , Q `@ s > D 0010 | 5E 32 C5 43 10 00 00 00 04 00 00 00 00 00 00 00 | ^2 C 0020 | 00 00 00 00 73 01 00 00 07 00 00 00 | s -I 25793 2023-11-24 23:09:24 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 E1 7E 01 00 10 00 | ` 6 ~ -0010 | AC F2 05 44 44 A2 E2 40 4E 69 F4 43 | DD @Ni C -I 25793 2023-11-24 23:09:24 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 53 F2 07 44 FF 8E F4 43 | ` 7 S D C +I 91446 2023-12-31 21:08:38 - [Lobby:00000015:FloorItems:01] Added floor item 00000173 at 538.379, 394.393 with drop number 2 visible to 00F +I 91446 2023-12-31 21:08:38 - [Lobby:00000015:FloorItems:01] Evicted 0 items +I 91446 2023-12-31 21:08:38 - [Game:15] Player 0 (leader) created floor item 00000173 (7 Meseta) at 1:(538.379, 394.393) +I 91446 2023-12-31 21:08:38 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 2C 00 51 0A 60 40 01 02 73 00 3E 98 06 44 | ` , Q `@ s > D +0010 | 5E 32 C5 43 10 00 00 00 04 00 00 00 00 00 00 00 | ^2 C +0020 | 00 00 00 00 73 01 00 00 07 00 00 00 | s +I 91446 2023-12-31 21:08:39 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 3D 5C 01 00 10 00 | ` 6 =\ +0010 | C4 11 03 44 DE 24 3E 41 9E D2 CC 43 | D $>A C +I 91446 2023-12-31 21:08:39 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 3D 5C 01 00 10 00 | ` 6 =\ +0010 | C4 11 03 44 DE 24 3E 41 9E D2 CC 43 | D $>A C +I 91446 2023-12-31 21:08:40 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 92 83 0B 44 85 AA D5 43 | ` 7 D C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:25 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 46 45 08 44 CF 7F F0 43 | ` 7 FE D C +I 91446 2023-12-31 21:08:40 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 92 83 0B 44 85 AA D5 43 | ` 7 D C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:25 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 2E D3 08 44 DB BD EC 43 | ` 7 . D C +I 91446 2023-12-31 21:08:40 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 5E 45 0C 44 95 15 D2 43 | ` 7 ^E D C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:25 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 2A 4A 09 44 E8 DA E8 43 | ` 7 *J D C +I 91446 2023-12-31 21:08:40 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 5E 45 0C 44 95 15 D2 43 | ` 7 ^E D C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:25 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 86 C8 09 44 A2 FA E4 43 | ` 9 D C -I 25793 2023-11-24 23:09:26 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 0C 00 3A 02 00 00 4B 7C 00 00 | ` : K| -I 25793 2023-11-24 23:09:26 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:08:41 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 C1 20 0B 44 CF CD CE 43 | ` 7 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:41 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 C1 20 0B 44 CF CD CE 43 | ` 7 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:41 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 55 C4 09 44 05 03 CC 43 | ` 7 U D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:41 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 55 C4 09 44 05 03 CC 43 | ` 7 U D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:41 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 03 17 08 44 90 D5 C9 43 | ` 9 D C +I 91446 2023-12-31 21:08:41 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 03 17 08 44 90 D5 C9 43 | ` 9 D C +I 91446 2023-12-31 21:08:41 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 9D 62 06 44 B7 4B C8 43 | ` 9 b D K C +I 91446 2023-12-31 21:08:41 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 9D 62 06 44 B7 4B C8 43 | ` 9 b D K C +I 91446 2023-12-31 21:08:41 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 64 95 04 44 88 48 C7 43 | ` 9 d D H C +I 91446 2023-12-31 21:08:41 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 64 95 04 44 88 48 C7 43 | ` 9 d D H C +I 91446 2023-12-31 21:08:42 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 A1 BA 02 44 6A C6 C6 43 | ` 9 Dj C +I 91446 2023-12-31 21:08:42 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 01 00 A1 BA 02 44 6A C6 C6 43 | ` 9 Dj C +I 91446 2023-12-31 21:08:42 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 6F BA 01 00 10 00 | ` 6 o +0010 | 57 DB 02 44 B0 69 50 41 C4 C3 C6 43 | W D iPA C +I 91446 2023-12-31 21:08:42 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 6F BA 01 00 10 00 | ` 6 o +0010 | 57 DB 02 44 B0 69 50 41 C4 C3 C6 43 | W D iPA C +I 91446 2023-12-31 21:08:42 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 01 36 04 44 32 D2 C3 43 | ` 7 6 D2 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:42 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 01 36 04 44 32 D2 C3 43 | ` 7 6 D2 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:42 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 5D 98 05 44 B8 67 C6 43 | ` 7 ] D g C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:42 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 5D 98 05 44 B8 67 C6 43 | ` 7 ] D g C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:43 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 E7 1D 01 00 10 00 | ` 6 +0010 | A5 99 05 44 E2 54 46 41 7F 48 C6 43 | D TFA H C +I 91446 2023-12-31 21:08:43 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 E7 1D 01 00 10 00 | ` 6 +0010 | A5 99 05 44 E2 54 46 41 7F 48 C6 43 | D TFA H C +I 91446 2023-12-31 21:08:43 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=62 flag=00) +0000 | 62 00 10 00 4C 03 01 00 73 01 00 00 01 00 01 44 | b L s D +I 91446 2023-12-31 21:08:43 - [Lobby:00000015:FloorItems:01] Removed floor item 00000173 at 538.379, 394.393 with drop number 2 visible to 00F +I 91446 2023-12-31 21:08:43 - [Game:15] Player 1 picked up 00000173 (7 Meseta) +[PlayerInventory] Meseta: 98885 +[PlayerInventory] 6 items +[PlayerInventory] 0: [+00000010] 03000000 00020000 00000000 (00210000) 00000000 (Monomate x2) +[PlayerInventory] 1: [+0000000C] 00020002 00000000 00000000 (00210001) 00000000 (Sword +2) +[PlayerInventory] 2: [+00000004] 01020100 00000000 00000000 (00210003) 00000000 (Shield) +[PlayerInventory] 3: [+00000000] 03020000 03010000 00000000 (00010013) 00000000 (Disk:Barta Lv.1) +[PlayerInventory] 4: [+00000000] 02000500 F4010000 00000000 (00010010) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] 5: [+00000000] 01010000 00000000 00000000 (00210002) 00002800 (Frame) +I 91446 2023-12-31 21:08:43 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 01 00 73 01 00 00 | ` K s +I 91446 2023-12-31 21:08:43 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 01 00 73 01 00 00 | ` K s +I 91446 2023-12-31 21:08:43 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 FD A7 06 44 1D AE C9 43 | ` 7 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:43 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 FD A7 06 44 1D AE C9 43 | ` 7 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:44 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 5C 74 07 44 9A 57 CD 43 | ` 7 \t D W C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:44 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 5C 74 07 44 9A 57 CD 43 | ` 7 \t D W C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:44 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B1 E8 07 44 06 3C D1 43 | ` 7 D < C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:44 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B1 E8 07 44 06 3C D1 43 | ` 7 D < C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:44 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 35 08 01 00 10 00 | ` 6 5 +0010 | 39 EA 07 44 9C 0B EA 40 AD 3A D1 43 | 9 D @ : C +I 91446 2023-12-31 21:08:44 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 35 08 01 00 10 00 | ` 6 5 +0010 | 39 EA 07 44 9C 0B EA 40 AD 3A D1 43 | 9 D @ : C +I 91446 2023-12-31 21:08:45 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B0 65 09 44 38 8B CE 43 | ` 7 e D8 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:45 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B0 65 09 44 38 8B CE 43 | ` 7 e D8 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:45 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 4F BE 0A 44 34 D3 CB 43 | ` 7 O D4 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:45 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 4F BE 0A 44 34 D3 CB 43 | ` 7 O D4 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:45 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 B0 61 01 00 10 00 | ` 6 a +0010 | C1 BD 0A 44 30 72 1F 41 5C D2 CB 43 | D0r A\ C +I 91446 2023-12-31 21:08:45 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 B0 61 01 00 10 00 | ` 6 a +0010 | C1 BD 0A 44 30 72 1F 41 5C D2 CB 43 | D0r A\ C +I 91446 2023-12-31 21:08:46 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 3A 02 01 00 C2 7B 00 00 | ` : { +I 91446 2023-12-31 21:08:46 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 0C 00 3A 02 01 00 C2 7B 00 00 | ` : { +I 91446 2023-12-31 21:08:46 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) 0000 | 60 00 10 00 0B 03 72 40 01 00 00 00 72 00 00 00 | ` r@ r -I 25793 2023-11-24 23:09:26 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +I 91446 2023-12-31 21:08:46 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 0B 03 72 40 01 00 00 00 72 00 00 00 | ` r@ r +I 91446 2023-12-31 21:08:46 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) 0000 | 60 00 2C 00 51 0A 60 40 01 02 72 00 D5 1C 0B 44 | ` , Q `@ r D 0010 | 69 B5 C4 43 10 00 00 00 04 00 00 00 00 00 00 00 | i C -0020 | 00 00 00 00 72 01 00 00 01 00 00 00 | r -I 25793 2023-11-24 23:09:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 4A 7C 01 00 10 00 | ` 6 J| -0010 | 57 90 09 44 48 0D EF 40 B1 AB E6 43 | W DH @ C -I 25793 2023-11-24 23:09:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 01 FB 09 44 29 C2 E2 43 | ` 7 D) C +0020 | 00 00 00 00 72 01 00 00 03 00 00 00 | r +I 91446 2023-12-31 21:08:46 - [Lobby:00000015:FloorItems:01] Added floor item 00000172 at 556.451, 393.417 with drop number 3 visible to 00F +I 91446 2023-12-31 21:08:46 - [Lobby:00000015:FloorItems:01] Evicted 0 items +I 91446 2023-12-31 21:08:46 - [Game:15] Player 0 (leader) created floor item 00000172 (3 Meseta) at 1:(556.451, 393.417) +I 91446 2023-12-31 21:08:46 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 2C 00 51 0A 60 40 01 02 72 00 D5 1C 0B 44 | ` , Q `@ r D +0010 | 69 B5 C4 43 10 00 00 00 04 00 00 00 00 00 00 00 | i C +0020 | 00 00 00 00 72 01 00 00 03 00 00 00 | r +I 91446 2023-12-31 21:08:47 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 C1 7B 01 00 10 00 | ` 6 { +0010 | 91 17 0B 44 BC CD 24 41 98 1D CB 43 | D $A C +I 91446 2023-12-31 21:08:47 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 C1 7B 01 00 10 00 | ` 6 { +0010 | 91 17 0B 44 BC CD 24 41 98 1D CB 43 | D $A C +I 91446 2023-12-31 21:08:48 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B0 E1 0C 44 5A 54 C9 43 | ` 7 DZT C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 17 60 0A 44 A3 D6 DE 43 | ` 7 ` D C +I 91446 2023-12-31 21:08:48 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 B0 E1 0C 44 5A 54 C9 43 | ` 7 DZT C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 33 C8 0A 44 0C EC DA 43 | ` 7 3 D C +I 91446 2023-12-31 21:08:48 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 14 96 0E 44 2D 66 C7 43 | ` 7 D-f C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:27 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 14 00 37 04 00 00 DA 2E 0B 44 D8 00 D7 43 | ` 7 . D C +I 91446 2023-12-31 21:08:48 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 14 96 0E 44 2D 66 C7 43 | ` 7 D-f C 0010 | 00 00 00 00 | -I 25793 2023-11-24 23:09:28 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 91 95 0B 44 AA 15 D3 43 | ` 9 D C -I 25793 2023-11-24 23:09:28 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 94 F5 0B 44 11 69 CF 43 | ` 9 D i C -I 25793 2023-11-24 23:09:28 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 99 55 0C 44 7A BC CB 43 | ` 9 U Dz C -I 25793 2023-11-24 23:09:28 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D0 34 0B 44 0E A5 C8 43 | ` 9 4 D C -I 25793 2023-11-24 23:09:28 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 3E 30 0A 44 C9 92 C5 43 | ` 9 >0 D C -I 25793 2023-11-24 23:09:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 4B 03 00 00 00 00 01 00 72 01 00 00 | ` K r -I 25793 2023-11-24 23:09:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 90 E6 08 44 FF D9 C2 43 | ` 9 D C -I 25793 2023-11-24 23:09:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 B5 01 07 44 83 59 C3 43 | ` 9 D Y C -I 25793 2023-11-24 23:09:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 4B 03 00 00 00 00 01 00 73 01 00 00 | ` K s -I 25793 2023-11-24 23:09:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 36 35 05 44 DB EE C3 43 | ` 9 65 D C -I 25793 2023-11-24 23:09:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D5 78 03 44 99 53 C5 43 | ` 9 x D S C -I 25793 2023-11-24 23:09:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 B6 DB 01 44 DD 38 C7 43 | ` 9 D 8 C -I 25793 2023-11-24 23:09:29 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 EA 64 00 44 01 8E C9 43 | ` 9 d D C -I 25793 2023-11-24 23:09:30 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 54 34 FE 43 A9 43 CC 43 | ` 9 T4 C C C -I 25793 2023-11-24 23:09:30 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 42 00 FC 43 BF 4A CF 43 | ` 9 B C J C -I 25793 2023-11-24 23:09:30 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 03 35 FA 43 46 94 D2 43 | ` 9 5 CF C -I 25793 2023-11-24 23:09:30 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 99 D8 F8 43 79 11 D6 43 | ` 9 Cy C -I 25793 2023-11-24 23:09:30 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 37 EF F7 43 6A B3 D9 43 | ` 9 7 Cj C -I 25793 2023-11-24 23:09:30 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 7E 7B F7 43 37 6B DD 43 | ` 9 ~{ C7k C -I 25793 2023-11-24 23:09:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 79 7E F7 43 0B 2A E1 43 | ` 9 y~ C * C -I 25793 2023-11-24 23:09:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 84 F7 F7 43 36 E1 E4 43 | ` 9 C6 C -I 25793 2023-11-24 23:09:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 77 E4 F8 43 52 82 E8 43 | ` 9 w CR C -I 25793 2023-11-24 23:09:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C6 31 F7 43 52 F1 EB 43 | ` 9 1 CR C -I 25793 2023-11-24 23:09:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 C4 43 F6 43 90 90 EF 43 | ` 9 C C C -I 25793 2023-11-24 23:09:31 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 53 66 F5 43 4B 36 F3 43 | ` 9 Sf CK6 C -I 25793 2023-11-24 23:09:32 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 9B 3E F2 43 11 61 F5 43 | ` 9 > C a C -I 25793 2023-11-24 23:09:32 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 82 8E EF 43 C7 F5 F7 43 | ` 9 C C -I 25793 2023-11-24 23:09:32 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 33 C1 EB 43 97 7B F7 43 | ` 9 3 C { C -I 25793 2023-11-24 23:09:32 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 D0 D2 E8 43 26 25 FA 43 | ` 9 C&% C -I 25793 2023-11-24 23:09:32 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 39 03 00 00 6E 94 E5 43 86 FB FB 43 | ` 9 n C C -I 25793 2023-11-24 23:09:32 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 1C 00 36 06 00 00 00 00 AF D7 01 00 10 00 | ` 6 -0010 | 60 CB E5 43 F8 67 40 41 90 DA FB 43 | ` C g@A C -I 25793 2023-11-24 23:09:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 18 00 28 05 00 00 84 03 00 00 60 CB E5 43 | ` ( ` C -0010 | 90 DA FB 43 00 00 00 00 | C -I 25793 2023-11-24 23:09:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 28 00 4F 09 00 00 01 00 10 00 83 49 E3 43 | ` ( O I C -0010 | 45 80 FD 43 04 00 00 00 00 00 00 00 00 00 00 00 | E C -0020 | 0F 00 01 00 65 00 00 00 | e -I 25793 2023-11-24 23:09:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 25 03 00 00 FF FF FF FF 65 00 00 00 | ` % e -I 25793 2023-11-24 23:09:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 08 00 29 01 00 00 | ` ) -I 25793 2023-11-24 23:09:45 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 08 00 29 01 00 00 | ` ) -I 25793 2023-11-24 23:10:04 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) -0000 | 60 00 10 00 4B 03 00 00 00 00 01 00 0F 00 01 00 | ` K -I 25793 2023-11-24 23:10:19 - [Commands] Received from C-A (ABCDEFGHIJKL) (version=DC_NTE command=05 flag=00) +I 91446 2023-12-31 21:08:49 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 D1 54 01 00 10 00 | ` 6 T +0010 | 91 96 0E 44 3C 5D 20 41 60 69 C7 43 | D<] A`i C +I 91446 2023-12-31 21:08:49 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 D1 54 01 00 10 00 | ` 6 T +0010 | 91 96 0E 44 3C 5D 20 41 60 69 C7 43 | D<] A`i C +I 91446 2023-12-31 21:08:49 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 E5 A9 0C 44 AF 52 C6 43 | ` 7 D R C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:49 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 E5 A9 0C 44 AF 52 C6 43 | ` 7 D R C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:49 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=62 flag=00) +0000 | 62 00 10 00 4C 03 01 00 72 01 00 00 01 00 01 44 | b L r D +I 91446 2023-12-31 21:08:49 - [Lobby:00000015:FloorItems:01] Removed floor item 00000172 at 556.451, 393.417 with drop number 3 visible to 00F +I 91446 2023-12-31 21:08:49 - [Game:15] Player 1 picked up 00000172 (3 Meseta) +[PlayerInventory] Meseta: 98888 +[PlayerInventory] 6 items +[PlayerInventory] 0: [+00000010] 03000000 00020000 00000000 (00210000) 00000000 (Monomate x2) +[PlayerInventory] 1: [+0000000C] 00020002 00000000 00000000 (00210001) 00000000 (Sword +2) +[PlayerInventory] 2: [+00000004] 01020100 00000000 00000000 (00210003) 00000000 (Shield) +[PlayerInventory] 3: [+00000000] 03020000 03010000 00000000 (00010013) 00000000 (Disk:Barta Lv.1) +[PlayerInventory] 4: [+00000000] 02000500 F4010000 00000000 (00010010) 28000000 (Mag LV5 5/0/0/0 40% 0IQ (red)) +[PlayerInventory] 5: [+00000000] 01010000 00000000 00000000 (00210002) 00002800 (Frame) +I 91446 2023-12-31 21:08:49 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 01 00 72 01 00 00 | ` K r +I 91446 2023-12-31 21:08:49 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 4B 03 01 00 01 00 01 00 72 01 00 00 | ` K r +I 91446 2023-12-31 21:08:49 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 39 BB 01 00 10 00 | ` 6 9 +0010 | F7 BF 0C 44 FA 2C 2A 41 5F 39 C6 43 | D ,*A_9 C +I 91446 2023-12-31 21:08:49 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 39 BB 01 00 10 00 | ` 6 9 +0010 | F7 BF 0C 44 FA 2C 2A 41 5F 39 C6 43 | D ,*A_9 C +I 91446 2023-12-31 21:08:50 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 4E 51 0B 44 16 04 C9 43 | ` 7 NQ D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:50 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 01 00 4E 51 0B 44 16 04 C9 43 | ` 7 NQ D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:08:51 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 A2 E4 01 00 10 00 | ` 6 +0010 | 0A 4F 0B 44 A8 44 29 41 12 E6 C8 43 | O D D)A C +I 91446 2023-12-31 21:08:51 - [Commands] Sending to C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 01 00 00 00 A2 E4 01 00 10 00 | ` 6 +0010 | 0A 4F 0B 44 A8 44 29 41 12 E6 C8 43 | O D D)A C +I 91446 2023-12-31 21:09:04 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 EC 87 01 44 EE 60 CF 43 | ` 7 D ` C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:04 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 EC 87 01 44 EE 60 CF 43 | ` 7 D ` C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:04 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 E4 0D 00 44 95 B2 D1 43 | ` 7 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:04 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 E4 0D 00 44 95 B2 D1 43 | ` 7 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:05 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 49 F3 FE 43 3A 85 D5 43 | ` 7 I C: C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:05 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 49 F3 FE 43 3A 85 D5 43 | ` 7 I C: C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:05 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 CA C9 FF 43 BA 5D D9 43 | ` 7 C ] C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:05 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 CA C9 FF 43 BA 5D D9 43 | ` 7 C ] C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:05 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 C3 0B 01 00 10 00 | ` 6 +0010 | E5 BF FF 43 7A 1E 03 41 B9 5B D9 43 | Cz A [ C +I 91446 2023-12-31 21:09:05 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 C3 0B 01 00 10 00 | ` 6 +0010 | E5 BF FF 43 7A 1E 03 41 B9 5B D9 43 | Cz A [ C +I 91446 2023-12-31 21:09:25 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 B5 71 00 44 5A 31 DD 43 | ` 7 q DZ1 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:25 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 B5 71 00 44 5A 31 DD 43 | ` 7 q DZ1 C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:25 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 D3 33 02 44 55 19 DF 43 | ` 7 3 DU C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:25 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 D3 33 02 44 55 19 DF 43 | ` 7 3 DU C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:26 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 F1 FF 03 44 1F 94 DD 43 | ` 7 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:26 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 F1 FF 03 44 1F 94 DD 43 | ` 7 D C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:26 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 1A 5A 04 44 5E BD D9 43 | ` 7 Z D^ C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:26 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 14 00 37 04 00 00 1A 5A 04 44 5E BD D9 43 | ` 7 Z D^ C +0010 | 00 00 00 00 | +I 91446 2023-12-31 21:09:26 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 8C 59 04 44 BA D2 D5 43 | ` 9 Y D C +I 91446 2023-12-31 21:09:26 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 8C 59 04 44 BA D2 D5 43 | ` 9 Y D C +I 91446 2023-12-31 21:09:26 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A5 04 04 44 36 22 D2 43 | ` 9 D6" C +I 91446 2023-12-31 21:09:26 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 A5 04 04 44 36 22 D2 43 | ` 9 D6" C +I 91446 2023-12-31 21:09:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 89 6B 03 44 2D 96 CE 43 | ` 9 k D- C +I 91446 2023-12-31 21:09:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 89 6B 03 44 2D 96 CE 43 | ` 9 k D- C +I 91446 2023-12-31 21:09:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B9 93 02 44 9E 3E CB 43 | ` 9 D > C +I 91446 2023-12-31 21:09:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B9 93 02 44 9E 3E CB 43 | ` 9 D > C +I 91446 2023-12-31 21:09:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E1 83 01 44 45 29 C8 43 | ` 9 DE) C +I 91446 2023-12-31 21:09:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 E1 83 01 44 45 29 C8 43 | ` 9 DE) C +I 91446 2023-12-31 21:09:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B6 B0 01 44 D9 58 C4 43 | ` 9 D X C +I 91446 2023-12-31 21:09:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 10 00 39 03 00 00 B6 B0 01 44 D9 58 C4 43 | ` 9 D X C +I 91446 2023-12-31 21:09:27 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 30 7F 01 00 10 00 | ` 6 0 +0010 | 19 94 01 44 EC C4 5A 41 54 A0 C4 43 | D ZAT C +I 91446 2023-12-31 21:09:27 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=60 flag=00) +0000 | 60 00 1C 00 36 06 00 00 00 00 30 7F 01 00 10 00 | ` 6 0 +0010 | 19 94 01 44 EC C4 5A 41 54 A0 C4 43 | D ZAT C +I 91446 2023-12-31 21:09:32 - [Commands] Received from C-2 (ABCDEFGHIJKL) (version=DC_NTE command=05 flag=00) 0000 | 05 00 04 00 | -I 25793 2023-11-24 23:10:20 - [Server] Client disconnected: C-A on fd 44 -I 25793 2023-11-24 23:10:20 - [Lobby:15] Deleted lobby -I 25793 2023-11-24 23:10:20 - [C-A] Deleted +I 91446 2023-12-31 21:09:34 - [Server] Client disconnected: C-2 on fd 45 +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:00] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:01] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:02] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:03] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:04] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:05] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:06] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:07] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:08] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:09] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:0A] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:0B] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:0C] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:0D] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:0E] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:0F] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:10] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Lobby:00000015:FloorItems:11] Deleted 0 inaccessible items +I 91446 2023-12-31 21:09:34 - [Commands] Sending to C-4 (BBBBBBBBBBBB) (version=DC_NTE command=66 flag=00) +0000 | 66 00 08 00 00 01 01 00 | f +I 91446 2023-12-31 21:09:34 - [C-2] Deleted +I 91446 2023-12-31 21:09:35 - [Commands] Received from C-4 (BBBBBBBBBBBB) (version=DC_NTE command=05 flag=00) +0000 | 05 00 04 00 | +I 91446 2023-12-31 21:09:36 - [Server] Client disconnected: C-4 on fd 46 +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:00] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:01] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:02] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:03] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:04] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:05] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:06] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:07] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:08] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:09] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:0A] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:0B] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:0C] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:0D] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:0E] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:0F] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:10] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Lobby:00000015:FloorItems:11] Deleted 0 private items +I 91446 2023-12-31 21:09:36 - [Game:15] Enqueued for deletion +I 91446 2023-12-31 21:09:36 - [Game:15] Deleted +I 91446 2023-12-31 21:09:36 - [C-4] Deleted diff --git a/tests/config.json b/tests/config.json index 578712f4..824c66cf 100644 --- a/tests/config.json +++ b/tests/config.json @@ -30,6 +30,7 @@ "DefaultDropModeV4Battle": "SERVER_SHARED", "DefaultDropModeV4Challenge": "SERVER_SHARED", "CheatModeBehavior": "OnByDefault", + "RareNotificationsEnabledByDefault": false, "LocalAddress": "en0", "ExternalAddress": "en0",