From 60577e83948647d36a2e6a8b4ec8f8556df3f72f Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Tue, 22 Jan 2019 17:48:19 -0600 Subject: [PATCH 01/50] Tools: Allow for separate fast forward ratios for held/toggled speedup The current implementation allows for a toggle or hold of fast forward. This, however, means that there is no way to do something similar to snes9x in which there is a increase speed/decrease speed hotkey as well as a "turbo" hotkey (which just uncaps the fps). I have implemented a separate setting to control the speedup ratio when the fast forward button is held, and the logic to allow the user to (for example): 1. Set the toggled fast forward speed to 200% 2. Set the "held" fast forward speed to uncapped 3. Toggle fast forward on (press shift tab) and play at 2x speed 4. Hold fast forward (tab) to uncap 5. Let go of fast forward (tab) to go back to 2x speed 6. Toggle fast forward off (press shift tab) and go back to 1x speed --- src/platform/qt/CoreController.cpp | 24 +++++++-- src/platform/qt/CoreController.h | 1 + src/platform/qt/SettingsView.cpp | 16 ++++++ src/platform/qt/SettingsView.ui | 87 +++++++++++++++++++++++------- 4 files changed, 106 insertions(+), 22 deletions(-) diff --git a/src/platform/qt/CoreController.cpp b/src/platform/qt/CoreController.cpp index e4f12087b..c35283b81 100644 --- a/src/platform/qt/CoreController.cpp +++ b/src/platform/qt/CoreController.cpp @@ -238,6 +238,7 @@ void CoreController::loadConfig(ConfigController* config) { m_loadStateFlags = config->getOption("loadStateExtdata", m_loadStateFlags).toInt(); m_saveStateFlags = config->getOption("saveStateExtdata", m_saveStateFlags).toInt(); m_fastForwardRatio = config->getOption("fastForwardRatio", m_fastForwardRatio).toFloat(); + m_fastForwardHeldRatio = config->getOption("fastForwardHeldRatio", m_fastForwardRatio).toFloat(); m_videoSync = config->getOption("videoSync", m_videoSync).toInt(); m_audioSync = config->getOption("audioSync", m_audioSync).toInt(); m_fpsTarget = config->getOption("fpsTarget").toFloat(); @@ -812,6 +813,8 @@ void CoreController::finishFrame() { } void CoreController::updateFastForward() { + // If we have "Fast forward" checked in the menu (m_fastForwardForced) + // or are holding the fast forward button (m_fastForward): if (m_fastForward || m_fastForwardForced) { if (m_fastForwardVolume >= 0) { m_threadContext.core->opts.volume = m_fastForwardVolume; @@ -819,10 +822,25 @@ void CoreController::updateFastForward() { if (m_fastForwardMute >= 0) { m_threadContext.core->opts.mute = m_fastForwardMute; } - if (m_fastForwardRatio > 0) { - m_threadContext.impl->sync.fpsTarget = m_fpsTarget * m_fastForwardRatio; + + // If we aren't holding the fast forward button + // then use the non "(held)" ratio + if(!m_fastForward) { + if (m_fastForwardRatio > 0) { + m_threadContext.impl->sync.fpsTarget = m_fpsTarget * m_fastForwardRatio; + setSync(true); + } else { + setSync(false); + } } else { - setSync(false); + // If we are holding the fast forward button, + // then use the held ratio + if (m_fastForwardHeldRatio > 0) { + m_threadContext.impl->sync.fpsTarget = m_fpsTarget * m_fastForwardHeldRatio; + setSync(true); + } else { + setSync(false); + } } } else { if (!mCoreConfigGetIntValue(&m_threadContext.core->config, "volume", &m_threadContext.core->opts.volume)) { diff --git a/src/platform/qt/CoreController.h b/src/platform/qt/CoreController.h index 9d9537c6c..699b14626 100644 --- a/src/platform/qt/CoreController.h +++ b/src/platform/qt/CoreController.h @@ -207,6 +207,7 @@ private: int m_fastForwardVolume = -1; int m_fastForwardMute = -1; float m_fastForwardRatio = -1.f; + float m_fastForwardHeldRatio = -1.f; float m_fpsTarget; InputController* m_inputController = nullptr; diff --git a/src/platform/qt/SettingsView.cpp b/src/platform/qt/SettingsView.cpp index 7f2ded961..189cef385 100644 --- a/src/platform/qt/SettingsView.cpp +++ b/src/platform/qt/SettingsView.cpp @@ -396,6 +396,12 @@ void SettingsView::updateConfig() { saveSetting("fastForwardRatio", m_ui.fastForwardRatio); } + if (m_ui.fastForwardHeldUnbounded->isChecked()) { + saveSetting("fastForwardHeldRatio", "-1"); + } else { + saveSetting("fastForwardHeldRatio", m_ui.fastForwardHeldRatio); + } + switch (m_ui.idleOptimization->currentIndex() + IDLE_LOOP_IGNORE) { case IDLE_LOOP_IGNORE: saveSetting("idleOptimization", "ignore"); @@ -534,6 +540,16 @@ void SettingsView::reloadConfig() { m_ui.fastForwardRatio->setValue(fastForwardRatio); } + double fastForwardHeldRatio = loadSetting("fastForwardHeldRatio").toDouble(); + if (fastForwardHeldRatio <= 0) { + m_ui.fastForwardHeldUnbounded->setChecked(true); + m_ui.fastForwardHeldRatio->setEnabled(false); + } else { + m_ui.fastForwardHeldUnbounded->setChecked(false); + m_ui.fastForwardHeldRatio->setEnabled(true); + m_ui.fastForwardHeldRatio->setValue(fastForwardHeldRatio); + } + QString idleOptimization = loadSetting("idleOptimization"); if (idleOptimization == "ignore") { m_ui.idleOptimization->setCurrentIndex(0); diff --git a/src/platform/qt/SettingsView.ui b/src/platform/qt/SettingsView.ui index 0a2da478e..5e238bf90 100644 --- a/src/platform/qt/SettingsView.ui +++ b/src/platform/qt/SettingsView.ui @@ -658,13 +658,56 @@ + + + Fast forward (held) speed: + + + + + + + + + false + + + × + + + 0.010000000000000 + + + 20.000000000000000 + + + 0.500000000000000 + + + 5.000000000000000 + + + + + + + Unbounded + + + true + + + + + + Autofire interval: - + 1 @@ -674,28 +717,28 @@ - + Qt::Horizontal - + Enable rewind - + Rewind history: - + @@ -713,21 +756,21 @@ - + Qt::Horizontal - + Idle loops: - + @@ -746,28 +789,28 @@ - + Preload entire ROM into memory - + Qt::Horizontal - + Savestate extra data: - + Screenshot @@ -777,7 +820,7 @@ - + Save data @@ -787,7 +830,7 @@ - + Cheat codes @@ -797,21 +840,21 @@ - + Qt::Horizontal - + Load extra data: - + Screenshot @@ -821,14 +864,14 @@ - + Save data - + Cheat codes @@ -1817,5 +1860,11 @@ + + fastForwardHeldUnbounded + toggled(bool) + fastForwardHeldRatio + setDisabled(bool) + From 5321ffd2277a277a3aafda23a5956c8c06b4d94f Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 7 Jun 2019 12:46:38 -0700 Subject: [PATCH 02/50] Tools: Attempt to make perf.py work with Py3 --- tools/perf.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tools/perf.py b/tools/perf.py index 67453ddeb..b6fa04bcb 100755 --- a/tools/perf.py +++ b/tools/perf.py @@ -96,12 +96,15 @@ class PerfServer(object): subprocess.check_call(server_command) time.sleep(4) self.socket = socket.create_connection(self.address, timeout=1000) - self.reader = csv.DictReader(self.socket.makefile()) + kwargs = {} + if sys.version_info[0] >= 3: + kwargs["encoding"] = "utf-8" + self.reader = csv.DictReader(self.socket.makefile(**kwargs)) def run(self, test): if not self.socket: self._start(test) - self.socket.send(os.path.join("/perfroms", test.rom)) + self.socket.send(os.path.join("/perfroms", test.rom).encode("utf-8")) self.results.append(next(self.reader)) self.iterations -= 1 if self.iterations == 0: @@ -109,7 +112,7 @@ class PerfServer(object): self.iterations = self.ITERATIONS_PER_INSTANCE def finish(self): - self.socket.send("\n"); + self.socket.send(b"\n"); self.reader = None self.socket.close() time.sleep(5) From 763eccd69a740c62ae283c7f7adfa0f532dfb34a Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 8 Jun 2019 16:12:09 -0700 Subject: [PATCH 03/50] Qt: Fix menu bar staying hidden in full screen (fixes #317) --- CHANGES | 3 +-- src/platform/qt/Window.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index bb3eb9e80..83a608c58 100644 --- a/CHANGES +++ b/CHANGES @@ -30,8 +30,7 @@ Other fixes: - Switch: Fix threading-related crash on second launch - Qt: Fix FPS target maxing out at 59.727 (fixes mgba.io/i/1421) - Core: Fix crashes if core directories aren't set - - Qt: Cap audio buffer size to 8192 (fixes mgba.io/i/1433) - - GB Serialize: Fix loading non-BIOS state from BIOS (fixes mgba.io/i/1280) + - Qt: Fix menu bar staying hidden in full screen (fixes mgba.io/i/317) Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index 8b7762a8b..6b174a35d 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -821,6 +821,9 @@ void Window::gameStopped() { m_display.reset(); close(); } +#ifndef Q_OS_MAC + menuBar()->show(); +#endif #ifdef USE_DISCORD_RPC DiscordCoordinator::gameStopped(); @@ -1042,6 +1045,9 @@ void Window::openStateWindow(LoadSave ls) { m_stateWindow->setAttribute(Qt::WA_DeleteOnClose); m_stateWindow->setMode(ls); updateFrame(); +#ifndef Q_OS_MAC + menuBar()->show(); +#endif attachWidget(m_stateWindow); } From f33c5f55131a2ec4a4d8be7a729ee63d5adb0636 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 8 Jun 2019 16:21:46 -0700 Subject: [PATCH 04/50] Qt: Add cancel button to savestate view --- src/platform/qt/LoadSaveState.cpp | 1 + src/platform/qt/LoadSaveState.ui | 241 ++++++++++++++++-------------- 2 files changed, 128 insertions(+), 114 deletions(-) diff --git a/src/platform/qt/LoadSaveState.cpp b/src/platform/qt/LoadSaveState.cpp index 93cbfee66..78c58c2d4 100644 --- a/src/platform/qt/LoadSaveState.cpp +++ b/src/platform/qt/LoadSaveState.cpp @@ -65,6 +65,7 @@ LoadSaveState::LoadSaveState(std::shared_ptr controller, QWidget escape->setShortcutContext(Qt::WidgetWithChildrenShortcut); addAction(escape); + connect(m_ui.cancel, &QAbstractButton::clicked, this, &QWidget::close); connect(m_controller.get(), &CoreController::stopping, this, &QWidget::close); } diff --git a/src/platform/qt/LoadSaveState.ui b/src/platform/qt/LoadSaveState.ui index 46e90fc03..81e2001bb 100644 --- a/src/platform/qt/LoadSaveState.ui +++ b/src/platform/qt/LoadSaveState.ui @@ -13,7 +13,7 @@ %1 State - + 6 @@ -29,8 +29,8 @@ 2 - - + + 0 @@ -47,29 +47,7 @@ - 1 - - - - - - - - 0 - 0 - - - - No Save - - - - 240 - 160 - - - - 2 + 5 @@ -95,72 +73,6 @@ - - - - - 0 - 0 - - - - No Save - - - - 240 - 160 - - - - 3 - - - - - - - - 0 - 0 - - - - No Save - - - - 240 - 160 - - - - 4 - - - - - - - - 0 - 0 - - - - No Save - - - - 240 - 160 - - - - 5 - - - @@ -183,28 +95,6 @@ - - - - - 0 - 0 - - - - No Save - - - - 240 - 160 - - - - 7 - - - @@ -227,6 +117,94 @@ + + + + + 0 + 0 + + + + No Save + + + + 240 + 160 + + + + 4 + + + + + + + + 0 + 0 + + + + No Save + + + + 240 + 160 + + + + 1 + + + + + + + + 0 + 0 + + + + No Save + + + + 240 + 160 + + + + 3 + + + + + + + + 0 + 0 + + + + No Save + + + + 240 + 160 + + + + 7 + + + @@ -249,6 +227,41 @@ + + + + + 0 + 0 + + + + No Save + + + + 240 + 160 + + + + 2 + + + + + + + + 0 + 0 + + + + Cancel + + + From faef25b0d8772c78e8a5e25380576c30117789b7 Mon Sep 17 00:00:00 2001 From: Lothar Serra Mari Date: Sun, 9 Jun 2019 17:58:40 +0200 Subject: [PATCH 05/50] Qt: Update German GUI translation --- src/platform/qt/ts/mgba-de.ts | 277 +++++++++++++++++----------------- 1 file changed, 141 insertions(+), 136 deletions(-) diff --git a/src/platform/qt/ts/mgba-de.ts b/src/platform/qt/ts/mgba-de.ts index baba6f57c..fcbc84ca3 100644 --- a/src/platform/qt/ts/mgba-de.ts +++ b/src/platform/qt/ts/mgba-de.ts @@ -460,13 +460,13 @@ Game Boy Advance ist ein eingetragenes Warenzeichen von Nintendo Co., Ltd.LoadSaveState - + %1 State Savestate %1 - + @@ -478,17 +478,22 @@ Game Boy Advance ist ein eingetragenes Warenzeichen von Nintendo Co., Ltd.Kein Savestate - + 1 1 - + 2 2 - + + Cancel + Abbrechen + + + 3 3 @@ -498,12 +503,12 @@ Game Boy Advance ist ein eingetragenes Warenzeichen von Nintendo Co., Ltd.4 - + 5 5 - + 6 6 @@ -513,12 +518,12 @@ Game Boy Advance ist ein eingetragenes Warenzeichen von Nintendo Co., Ltd.7 - + 8 8 - + 9 9 @@ -1332,22 +1337,22 @@ Game Boy Advance ist ein eingetragenes Warenzeichen von Nintendo Co., Ltd. QGBA::CoreController - + Failed to open save file: %1 Fehler beim Öffnen der Speicherdatei: %1 - + Failed to open game file: %1 Fehler beim Öffnen der Spieldatei: %1 - + Failed to open snapshot file for reading: %1 Konnte Snapshot-Datei %1 nicht zum Lesen öffnen - + Failed to open snapshot file for writing: %1 Konnte Snapshot-Datei %1 nicht zum Schreiben öffnen @@ -2875,27 +2880,27 @@ Game Boy Advance ist ein eingetragenes Warenzeichen von Nintendo Co., Ltd. QGBA::LoadSaveState - + Load State Savestate laden - + Save State Savestate speichern - + Empty Leer - + Corrupted Defekt - + Slot %1 Speicherplatz %1 @@ -3502,12 +3507,12 @@ Game Boy Advance ist ein eingetragenes Warenzeichen von Nintendo Co., Ltd.Video-Logs (*.mvl) - + Crash Absturz - + The game has crashed with the following error: %1 @@ -3516,428 +3521,428 @@ Game Boy Advance ist ein eingetragenes Warenzeichen von Nintendo Co., Ltd. - + Couldn't Load Konnte nicht geladen werden - + Could not load game. Are you sure it's in the correct format? Konnte das Spiel nicht laden. Sind Sie sicher, dass es im korrekten Format vorliegt? - + Unimplemented BIOS call Nicht implementierter BIOS-Aufruf - + This game uses a BIOS call that is not implemented. Please use the official BIOS for best experience. Dieses Spiel verwendet einen BIOS-Aufruf, der nicht implementiert ist. Bitte verwenden Sie für die beste Spielerfahrung das offizielle BIOS. - + Really make portable? Portablen Modus wirklich aktivieren? - + This will make the emulator load its configuration from the same directory as the executable. Do you want to continue? Diese Einstellung wird den Emulator so konfigurieren, dass er seine Konfiguration aus dem gleichen Verzeichnis wie die Programmdatei lädt. Möchten Sie fortfahren? - + Restart needed Neustart benötigt - + Some changes will not take effect until the emulator is restarted. Einige Änderungen werden erst übernommen, wenn der Emulator neu gestartet wurde. - + - Player %1 of %2 - Spieler %1 von %2 - + %1 - %2 %1 - %2 - + %1 - %2 - %3 %1 - %2 - %3 - + %1 - %2 (%3 fps) - %4 %1 - %2 (%3 Bilder/Sekunde) - %4 - + &File &Datei - + Load &ROM... &ROM laden... - + Load ROM in archive... ROM aus Archiv laden... - + Load alternate save... Alternative Speicherdatei laden... - + Load temporary save... Temporäre Speicherdatei laden... - + Load &patch... &Patch laden... - + Boot BIOS BIOS booten - + Replace ROM... ROM ersetzen... - + ROM &info... ROM-&Informationen... - + Recent Zuletzt verwendet - + Make portable Portablen Modus aktivieren - + &Load state Savestate (aktueller Zustand) &laden - + Load state file... Ssavestate-Datei laden... - + &Save state Savestate (aktueller Zustand) &speichern - + Save state file... Savestate-Datei speichern... - + Quick load Schnell laden - + Quick save Schnell speichern - + Load recent Lade zuletzt gespeicherten Savestate - + Save recent Speichere aktuellen Zustand - + Undo load state Laden des Savestate rückgängig machen - + Undo save state Speichern des Savestate rückgängig machen - - + + State &%1 Savestate &%1 - + Load camera image... Lade Kamerabild... - + Import GameShark Save Importiere GameShark-Speicherstand - + Export GameShark Save Exportiere GameShark-Speicherstand - + New multiplayer window Neues Multiplayer-Fenster - + E&xit &Beenden - + &Emulation &Emulation - + &Reset Zu&rücksetzen - + Sh&utdown Schli&eßen - + Yank game pak Spielmodul herausziehen - + &Pause &Pause - + &Next frame &Nächstes Bild - + Fast forward (held) Schneller Vorlauf (gehalten) - + &Fast forward Schneller &Vorlauf - + Fast forward speed Vorlauf-Geschwindigkeit - + Unbounded Unbegrenzt - + %0x %0x - + Rewind (held) Zurückspulen (gehalten) - + Re&wind Zur&ückspulen - + Step backwards Schrittweiser Rücklauf - + Sync to &video Mit &Video synchronisieren - + Sync to &audio Mit &Audio synchronisieren - + Solar sensor Sonnen-Sensor - + Increase solar level Sonnen-Level erhöhen - + Decrease solar level Sonnen-Level verringern - + Brightest solar level Hellster Sonnen-Level - + Darkest solar level Dunkelster Sonnen-Level - + Brightness %1 Helligkeit %1 - + BattleChip Gate... BattleChip Gate... - + Audio/&Video Audio/&Video - + Frame size Bildgröße - + Toggle fullscreen Vollbildmodus umschalten - + Lock aspect ratio Seitenverhältnis korrigieren - + Force integer scaling Pixelgenaue Skalierung (Integer scaling) - + Interframe blending Interframe-Überblendung - + Frame&skip Frame&skip - + Mute Stummschalten - + FPS target Bildwiederholrate - + Take &screenshot &Screenshot erstellen - + F12 F12 - + Record GIF... GIF aufzeichen... - + Game Boy Printer... Game Boy Printer... - + Video layers Video-Ebenen - + Audio channels Audio-Kanäle - + Adjust layer placement... Lage der Bildebenen anpassen... - + &Tools &Werkzeuge - + View &logs... &Logs ansehen... - + Game &overrides... Spiel-&Überschreibungen... - + &Cheats... &Cheats... - + Open debugger console... Debugger-Konsole öffnen... - + Start &GDB server... &GDB-Server starten... - + Settings... Einstellungen... @@ -3947,152 +3952,152 @@ Game Boy Advance ist ein eingetragenes Warenzeichen von Nintendo Co., Ltd.Ordner auswählen - + Add folder to library... Ordner zur Bibliothek hinzufügen... - + About... Über... - + %1× %1x - + Bilinear filtering Bilineare Filterung - + Native (59.7275) Nativ (59.7275) - + Record A/V... Audio/Video aufzeichnen... - + Game Pak sensors... Spielmodul-Sensoren... - + View &palette... &Palette betrachten... - + View &sprites... &Sprites betrachten... - + View &tiles... &Tiles betrachten... - + View &map... &Map betrachten... - + &Frame inspector... &Bildbetrachter... - + View memory... Speicher betrachten... - + Search memory... Speicher durchsuchen... - + View &I/O registers... &I/O-Register betrachten... - + Record debug video log... Video-Protokoll aufzeichnen... - + Stop debug video log Aufzeichnen des Video-Protokolls beenden - + Exit fullscreen Vollbildmodus beenden - + GameShark Button (held) GameShark-Taste (gehalten) - + Autofire Autofeuer - + Autofire A Autofeuer A - + Autofire B Autofeuer B - + Autofire L Autofeuer L - + Autofire R Autofeuer R - + Autofire Start Autofeuer Start - + Autofire Select Autofeuer Select - + Autofire Up Autofeuer nach oben - + Autofire Right Autofeuer rechts - + Autofire Down Autofeuer nach unten - + Autofire Left Autofeuer links From c5c742dbfd76a5a6ac6083bee395a07e270c7dbd Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 10 Jun 2019 10:44:57 -0700 Subject: [PATCH 06/50] Revert "GBA Video: Clean up dead code in sprite rendering loop" This reverts commit 459eaefcfcf75a177ddecab65e7896279109f7c5. --- CHANGES | 1 - src/gba/renderers/software-obj.c | 36 +++++++++++++++++++++++--------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/CHANGES b/CHANGES index 83a608c58..72ccd171d 100644 --- a/CHANGES +++ b/CHANGES @@ -45,7 +45,6 @@ Misc: - Debugger: Make tracing compatible with breakpoints/watchpoints - Debugger: Print breakpoint/watchpoint number when inserting - Qt: Open a message box for Qt frontend errors - - GBA Video: Clean up dead code in sprite rendering loop - FFmpeg: Support audio-only recording - Qt: Increase maximum magnifications and scaling - Qt: Add native FPS button to settings view diff --git a/src/gba/renderers/software-obj.c b/src/gba/renderers/software-obj.c index 6f0c1bb9e..d638dd332 100644 --- a/src/gba/renderers/software-obj.c +++ b/src/gba/renderers/software-obj.c @@ -80,17 +80,25 @@ LOAD_16(tileData, ((yBase + charBase + xBase) & 0x7FFE), vramBase); \ tileData = (tileData >> ((localX & 3) << 2)) & 0xF; \ current = renderer->spriteLayer[outX]; \ - if ((current & FLAG_ORDER_MASK) > flags && tileData) { \ - renderer->spriteLayer[outX] = palette[tileData] | flags; \ + if ((current & FLAG_ORDER_MASK) > flags) { \ + if (tileData) { \ + renderer->spriteLayer[outX] = palette[tileData] | flags; \ + } else if (current != FLAG_UNWRITTEN) { \ + renderer->spriteLayer[outX] = (current & ~FLAG_ORDER_MASK) | GBAObjAttributesCGetPriority(sprite->c) << OFFSET_PRIORITY; \ + } \ } #define SPRITE_DRAW_PIXEL_16_NORMAL_OBJWIN(localX) \ LOAD_16(tileData, ((yBase + charBase + xBase) & 0x7FFE), vramBase); \ tileData = (tileData >> ((localX & 3) << 2)) & 0xF; \ current = renderer->spriteLayer[outX]; \ - if ((current & FLAG_ORDER_MASK) > flags && tileData) { \ - unsigned color = (renderer->row[outX] & FLAG_OBJWIN) ? objwinPalette[tileData] : palette[tileData]; \ - renderer->spriteLayer[outX] = color | flags; \ + if ((current & FLAG_ORDER_MASK) > flags) { \ + if (tileData) { \ + unsigned color = (renderer->row[outX] & FLAG_OBJWIN) ? objwinPalette[tileData] : palette[tileData]; \ + renderer->spriteLayer[outX] = color | flags; \ + } else if (current != FLAG_UNWRITTEN) { \ + renderer->spriteLayer[outX] = (current & ~FLAG_ORDER_MASK) | GBAObjAttributesCGetPriority(sprite->c) << OFFSET_PRIORITY; \ + } \ } #define SPRITE_DRAW_PIXEL_16_OBJWIN(localX) \ @@ -107,17 +115,25 @@ LOAD_16(tileData, ((yBase + charBase + xBase) & 0x7FFE), vramBase); \ tileData = (tileData >> ((localX & 1) << 3)) & 0xFF; \ current = renderer->spriteLayer[outX]; \ - if ((current & FLAG_ORDER_MASK) > flags && tileData) { \ - renderer->spriteLayer[outX] = palette[tileData] | flags; \ + if ((current & FLAG_ORDER_MASK) > flags) { \ + if (tileData) { \ + renderer->spriteLayer[outX] = palette[tileData] | flags; \ + } else if (current != FLAG_UNWRITTEN) { \ + renderer->spriteLayer[outX] = (current & ~FLAG_ORDER_MASK) | GBAObjAttributesCGetPriority(sprite->c) << OFFSET_PRIORITY; \ + } \ } #define SPRITE_DRAW_PIXEL_256_NORMAL_OBJWIN(localX) \ LOAD_16(tileData, ((yBase + charBase + xBase) & 0x7FFE), vramBase); \ tileData = (tileData >> ((localX & 1) << 3)) & 0xFF; \ current = renderer->spriteLayer[outX]; \ - if ((current & FLAG_ORDER_MASK) > flags && tileData) { \ - unsigned color = (renderer->row[outX] & FLAG_OBJWIN) ? objwinPalette[tileData] : palette[tileData]; \ - renderer->spriteLayer[outX] = color | flags; \ + if ((current & FLAG_ORDER_MASK) > flags) { \ + if (tileData) { \ + unsigned color = (renderer->row[outX] & FLAG_OBJWIN) ? objwinPalette[tileData] : palette[tileData]; \ + renderer->spriteLayer[outX] = color | flags; \ + } else if (current != FLAG_UNWRITTEN) { \ + renderer->spriteLayer[outX] = (current & ~FLAG_ORDER_MASK) | GBAObjAttributesCGetPriority(sprite->c) << OFFSET_PRIORITY; \ + } \ } #define SPRITE_DRAW_PIXEL_256_OBJWIN(localX) \ From 09ccf5403eb0a0d85fa119c612b9070fe8807818 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 10 Jun 2019 10:50:14 -0700 Subject: [PATCH 07/50] GBA Video: Fix GL mode 0 y wrapping --- src/gba/renderers/gl.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gba/renderers/gl.c b/src/gba/renderers/gl.c index 72ddd1d8c..a54e0b028 100644 --- a/src/gba/renderers/gl.c +++ b/src/gba/renderers/gl.c @@ -146,8 +146,12 @@ static const char* const _renderMode0 = " coord.y -= coord.y % mosaic.y;\n" " }\n" " coord += (ivec2(0x3FF, 0x3FF000) & offset[int(texCoord.y)]) >> ivec2(0, 12);\n" + " ivec2 wrap = ivec2(255, 511);\n" " if (size == 3) {\n" " coord.y += (coord.y & 256) << 1;\n" + " wrap.y = 1023;\n" + " } else if (size == 0) {\n" + " wrap.y = 255;\n" " }\n" " if (size != 2) {\n" " coord.y &= ~256;\n" @@ -155,7 +159,7 @@ static const char* const _renderMode0 = " if ((size & 1) == 1) {\n" " coord.y += coord.x & 256;\n" " }\n" - " coord &= ivec2(255, 1023);\n" + " coord &= wrap;\n" " int mapAddress = screenBase + (coord.x >> 3) + (coord.y >> 3) * 32;\n" " vec4 map = texelFetch(vram, ivec2(mapAddress & 255, mapAddress >> 8), 0);\n" " int tileFlags = int(map.g * 15.9);\n" From a39741056ece1da3db99710ac7c079ce81306952 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 11 Jun 2019 12:23:21 -0700 Subject: [PATCH 08/50] Cinema: Rebaseline F-Zero Climax test --- .../obj/fzc-obj-priority/baseline_0000.png | Bin 29698 -> 29741 bytes .../obj/fzc-obj-priority/baseline_0001.png | Bin 29919 -> 29963 bytes .../obj/fzc-obj-priority/baseline_0002.png | Bin 29919 -> 29963 bytes .../obj/fzc-obj-priority/baseline_0003.png | Bin 29919 -> 29963 bytes .../obj/fzc-obj-priority/baseline_0004.png | Bin 29919 -> 29963 bytes .../obj/fzc-obj-priority/baseline_0005.png | Bin 29919 -> 29963 bytes .../obj/fzc-obj-priority/baseline_0006.png | Bin 30051 -> 30095 bytes 7 files changed, 0 insertions(+), 0 deletions(-) diff --git a/cinema/gba/obj/fzc-obj-priority/baseline_0000.png b/cinema/gba/obj/fzc-obj-priority/baseline_0000.png index 1542506183adc4dc00eec892ddfd48ae6d7ce66f..9515678bdaa2959251957eb7ae5b89dcb6c35ea6 100644 GIT binary patch delta 26922 zcmW(+1yCJLvt8U>KHQVw!R_KM!5tDLxCaOxSS+{)F7EE`8rv?7_+s_j9ki+`dY4O3`5wTxiDvRA-V0NY`mYNTforW=Lpz=R>@JGEHT+f> z9_H}KoopX#I#)VCp4AX795QEz==^Evh1y~*49tkqM$YljgFLbtA+hgUgq9+0QgX@Rcs@o^)zL3{R6@5btK znZcXc^ujx5+K)24wVcTwVIKQ)Jx-6K>KnqbPLK=)QH*gj((~E-D=}G& z&3ldQ$N@sMv`|!1@Q3jg!OItxtN#xB;5U5NIpe}u4dS6Vxp%liM_q(@9)=p zX1v>2TpUy~+GB{yh^F9lJG#jFjWJ5CcIH$gbPg`Wr`@;~)da*iK~5FbDq1x%JbImK z6#Miy357b;j@u8uEr?>Dz6~pSZ_mVoS)p*Iv!7o~f57nRlhb^((5|23O^Wr!3k_fS zlE6SKvs0coQ7tF4*EdU<5-#-9&}?=3LYWyBN` zP}348D(;3&<_Lo>vUGGcl8KTE1aT-Fq$al4AzuM z|4yzs5fuA@6F8o}wRi)L(HJ8O|0wd6+ZnM&cdD_iAP1eX^&FbLaRT?$$#g6T1wT%xXVRBmG$~#N@S#m8 zEq1P~wxN5JQGFX(MF(_TXRy}trWGd@jpGL*pN2Bf>jpopIPdxWvjNEaE8R!(Y5Tb> z&z3O!?H1EDFIHO~S6hx*5^a0d3BT%xjF;%VtHD^|u?@gx3D-98*nPM;o&sz5raIR5 z1P(HrgjQtEJ8L?@wPVw0Pctx6;3%P zeA-T9Mx`Eg@NwRUg;(RuZBDK+R#KN+R}(JdC`3f%XgA6ob-~$V;oY)7eenOO&Z6XE zqlzwRa4Q%=Z9RKCpfAYZ$_QSB(#5pR)XimRFgX>QRA-&sBdm8%1~X z#}Ct9@I!sH_|lZk{#iJH%x0e{yxs{)arDF{c7Z3yJleThC+rF^}~3PWzl39 z-ClU7j15mxvQtUuA)GUgN3!qWqasZHDWG3medBEht|UBy?^*e{K9HQ0dt zJw81H6SBp=R0ywj zV2{B6qn&;=jsgg4WIujm*h|44ZNI8F!*==E(!yvNf5FXAS}GJGUi$-pkX8 zp|g0b*fk*ey|!?JI_BzpiQ&resY^hU11Znzb-O4U^#!@-Qy@p4b+@7}F(R9*(lj0o zWk3JvcU6NUGUI=#{45wNGE{fvQ`Z6#0d-P5UUxP%gM_v7@3t*Isd90<-{QZ`K5OP_ zNne<03RRliVAZfE_>MZ5YZ`_G)NE6lJFGuCr&eHjxEg+xeL5TM+4d*Tj4IV%vW~&& zahhLTlh>GdS95e61-&dLZK2CRAT>IyflKR9`PA0xkJ(+ig@AJNA?~?9pIzq?Ee@{Z zcY65TBs|3GGH<$tAAWpL>nB&_RNT0_rXXAbeprnx3UHCF`F)9fKTE5=p67J^he3+a zDBv1QnIhN>{4I-f#e2sqs

HDP(3oszqmJ%ku8`b^R5eqfK0Rr)38!W! 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 delta 26906 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

5o2(}R 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 E1E&Uo00000 delta 27520 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 E1E&Uo00000 delta 27520 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 E1E&Uo00000 delta 27520 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 E1E&Uo00000 delta 27520 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 E1E&Uo00000 delta 27520 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 z

4#O%i@UD^y*K4eh>E{9=gO~o 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 delta 27292 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�agQ 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%0DJv1fMIXl+l>ld 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

T9C^_Z>?`JJMT(wvPR`8^vH&z+50&qtV+vu z)2{QC*h3YG-czKOByXgLL$zmI8WjdBS1jcKW;*fyFTap{bU*6gRNTh;)YkrZSO1?6 zsf&K7Y?H;Lo#a%*)Y8(Q#!pN&6;C~UGDRaeDaqNp$hAbd0W1zPEO&{DaQfnlh1fDC zy|;8mGi8^vq2X3Gc!yuLx+LNV&Ax6wrFKu6-LE%@-SU3-1erpzP)Y_h4mqYe2ewan z-`;28v-ggr*D!?fY}j(uxHX_M)>Ak$&Ak0Ie`%?{!if(ZAU`Ur?epks6NZKOEoIxd zeS*k1adGOte!orNNn*DFL3R3U>e1)_fB&yU&H`Byo2Zd_xK=v5LcEYEqB!7BU2uSa OFF7eC$qI3k!2bb|cla0p From 442a0794be6ebe81568c6579f4b36996c4dcb8e1 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 11 Jun 2019 13:44:52 -0700 Subject: [PATCH 09/50] GBA Video: Add transparent sprite priority updating for GL --- include/mgba/internal/gba/renderers/gl.h | 2 +- src/gba/renderers/gl.c | 45 ++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 3 deletions(-) diff --git a/include/mgba/internal/gba/renderers/gl.h b/include/mgba/internal/gba/renderers/gl.h index 0d804bc6f..b0fab6e7c 100644 --- a/include/mgba/internal/gba/renderers/gl.h +++ b/include/mgba/internal/gba/renderers/gl.h @@ -161,7 +161,7 @@ struct GBAVideoGLRenderer { uint64_t regsDirty; struct GBAVideoGLShader bgShader[6]; - struct GBAVideoGLShader objShader[2]; + struct GBAVideoGLShader objShader[3]; struct GBAVideoGLShader windowShader; struct GBAVideoGLShader finalizeShader; diff --git a/src/gba/renderers/gl.c b/src/gba/renderers/gl.c index a54e0b028..0667f2cf5 100644 --- a/src/gba/renderers/gl.c +++ b/src/gba/renderers/gl.c @@ -474,6 +474,25 @@ static const char* const _renderObj = " window = ivec4(objwin.yzw, 0);\n" "}"; +static const struct GBAVideoGLUniform _uniformsObjPriority[] = { + { "loc", GBA_GL_VS_LOC, }, + { "maxPos", GBA_GL_VS_MAXPOS, }, + { "inflags", GBA_GL_OBJ_INFLAGS, }, + { 0 } +}; + +static const char* const _renderObjPriority = + "in vec2 texCoord;\n" + "uniform ivec4 inflags;\n" + "OUT(0) out vec4 color;\n" + "OUT(1) out ivec4 flags;\n" + + "void main() {\n" + " flags = inflags;\n" + " gl_FragDepth = float(flags.x) / 16.;\n" + " color = vec4(0., 0., 0., 0.);" + "}"; + static const struct GBAVideoGLUniform _uniformsWindow[] = { { "loc", GBA_GL_VS_LOC, }, { "maxPos", GBA_GL_VS_MAXPOS, }, @@ -742,7 +761,7 @@ void GBAVideoGLRendererInit(struct GBAVideoRenderer* renderer) { _initFramebufferTexture(glRenderer->layers[GBA_GL_TEX_OBJ_COLOR], GL_RGBA, GL_COLOR_ATTACHMENT0, glRenderer->scale); _initFramebufferTextureEx(glRenderer->layers[GBA_GL_TEX_OBJ_FLAGS], GL_RGBA8I, GL_RGBA_INTEGER, GL_BYTE, GL_COLOR_ATTACHMENT1, glRenderer->scale); _initFramebufferTextureEx(glRenderer->layers[GBA_GL_TEX_WINDOW], GL_RGBA8I, GL_RGBA_INTEGER, GL_BYTE, GL_COLOR_ATTACHMENT2, glRenderer->scale); - _initFramebufferTextureEx(glRenderer->layers[GBA_GL_TEX_OBJ_DEPTH], GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, GL_DEPTH_ATTACHMENT, glRenderer->scale); + _initFramebufferTextureEx(glRenderer->layers[GBA_GL_TEX_OBJ_DEPTH], GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL, GL_UNSIGNED_INT_24_8, GL_DEPTH_STENCIL_ATTACHMENT, glRenderer->scale); glBindFramebuffer(GL_FRAMEBUFFER, glRenderer->fbo[GBA_GL_FBO_BACKDROP]); _initFramebufferTexture(glRenderer->layers[GBA_GL_TEX_BACKDROP_COLOR], GL_RGB, GL_COLOR_ATTACHMENT0, 0); @@ -850,6 +869,9 @@ void GBAVideoGLRendererInit(struct GBAVideoRenderer* renderer) { glBindFragDataLocation(glRenderer->objShader[1].program, 2, "window"); #endif + shaderBuffer[1] = _renderObjPriority; + _compileShader(glRenderer, &glRenderer->objShader[2], shaderBuffer, 2, vs, _uniformsObjPriority, log); + shaderBuffer[1] = _renderWindow; _compileShader(glRenderer, &glRenderer->windowShader, shaderBuffer, 2, vs, _uniformsWindow, log); #ifndef BUILD_GLES3 @@ -1357,9 +1379,10 @@ void GBAVideoGLRendererDrawScanline(struct GBAVideoRenderer* renderer, int y) { #else glClearDepth(1); #endif + glClearStencil(0); glBindFramebuffer(GL_FRAMEBUFFER, glRenderer->fbo[GBA_GL_FBO_OBJ]); glDrawBuffers(2, (GLenum[]) { GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1 }); - glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); for (i = 0; i < 4; ++i) { glBindFramebuffer(GL_FRAMEBUFFER, glRenderer->bg[i].fbo); @@ -1391,6 +1414,8 @@ void _drawScanlines(struct GBAVideoGLRenderer* glRenderer, int y) { GBAVideoGLRendererDrawWindow(glRenderer, y); if (GBARegisterDISPCNTIsObjEnable(glRenderer->dispcnt) && !glRenderer->d.disableOBJ) { int i; + glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE); + glEnable(GL_STENCIL_TEST); glDepthFunc(GL_LESS); for (i = 0; i < glRenderer->oamMax; ++i) { struct GBAVideoRendererSprite* sprite = &glRenderer->sprites[i]; @@ -1401,6 +1426,7 @@ void _drawScanlines(struct GBAVideoGLRenderer* glRenderer, int y) { GBAVideoGLRendererDrawSprite(glRenderer, &sprite->obj, y, sprite->y); } glDisable(GL_DEPTH_TEST); + glDisable(GL_STENCIL_TEST); } if (TEST_LAYER_ENABLED(0) && GBARegisterDISPCNTGetMode(glRenderer->dispcnt) < 2) { @@ -1678,7 +1704,22 @@ void GBAVideoGLRendererDrawSprite(struct GBAVideoGLRenderer* renderer, struct GB } else { glUniform4i(uniforms[GBA_GL_OBJ_MOSAIC], 0, 0, 0, 0); } + glStencilFunc(GL_ALWAYS, 1, 1); glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + + shader = &renderer->objShader[2]; + uniforms = shader->uniforms; + glStencilFunc(GL_EQUAL, 1, 1); + glUseProgram(shader->program); + glDrawBuffers(2, (GLenum[]) { GL_NONE, GL_COLOR_ATTACHMENT1 }); + glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_FALSE); + glBindVertexArray(shader->vao); + glUniform2i(uniforms[GBA_GL_VS_LOC], totalHeight, 0); + glUniform2i(uniforms[GBA_GL_VS_MAXPOS], totalWidth, totalHeight); + glUniform4i(uniforms[GBA_GL_OBJ_INFLAGS], GBAObjAttributesCGetPriority(sprite->c), 0, 0, 0); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glDrawBuffers(1, (GLenum[]) { GL_COLOR_ATTACHMENT0 }); } From 34ddae8e4d612badeef7fd2dc07452476cb8558d Mon Sep 17 00:00:00 2001 From: KAMiKAZOW Date: Sat, 8 Jun 2019 20:53:25 +0200 Subject: [PATCH 10/50] HiDPI support for Qt GUI --- src/platform/qt/main.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/platform/qt/main.cpp b/src/platform/qt/main.cpp index e2659eae3..98f57723d 100644 --- a/src/platform/qt/main.cpp +++ b/src/platform/qt/main.cpp @@ -68,6 +68,7 @@ int main(int argc, char* argv[]) { QApplication::setApplicationName(projectName); QApplication::setApplicationVersion(projectVersion); + QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps, true); #ifdef BUILD_GLES2 QSurfaceFormat format; From 918caf87c476a60685dffab94c3b6f615991c231 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 17 Jun 2019 12:57:45 -0700 Subject: [PATCH 11/50] Core: Create game-related paths if they don't exist (fixes #1446) --- CHANGES | 1 + include/mgba-util/vfs.h | 2 ++ src/core/directories.c | 15 +++++++++++++++ src/platform/3ds/3ds-vfs.c | 5 +++++ src/platform/psp2/sce-vfs.c | 6 ++++++ src/platform/windows/vfs-w32.c | 12 ++++++++++++ src/util/vfs/vfs-dirent.c | 5 +++++ 7 files changed, 46 insertions(+) diff --git a/CHANGES b/CHANGES index 72ccd171d..20cf0a4f4 100644 --- a/CHANGES +++ b/CHANGES @@ -53,6 +53,7 @@ Misc: - Qt: Make mute menu option also toggle fast-forward mute (fixes mgba.io/i/1424) - Vita: L2/R2 and L3/R3 can now be mapped on PSTV (fixes mgba.io/i/1292) - mGUI: Remember name and position of last loaded game + - Core: Create game-related paths if they don't exist (fixes mgba.io/i/1446) 0.7.2: (2019-05-25) Emulation fixes: diff --git a/include/mgba-util/vfs.h b/include/mgba-util/vfs.h index f10f3c577..0ac676d5f 100644 --- a/include/mgba-util/vfs.h +++ b/include/mgba-util/vfs.h @@ -91,6 +91,8 @@ struct VDir* VDirOpen7z(const char* path, int flags); struct VDir* VDeviceList(void); #endif +bool VDirCreate(const char* path); + #ifdef USE_VFS_FILE struct VFile* VFileFOpen(const char* path, const char* mode); struct VFile* VFileFromFILE(FILE* file); diff --git a/src/core/directories.c b/src/core/directories.c index 295614a12..e2e2d2c9f 100644 --- a/src/core/directories.c +++ b/src/core/directories.c @@ -173,6 +173,9 @@ struct VFile* mDirectorySetOpenSuffix(struct mDirectorySet* dirs, struct VDir* d void mDirectorySetMapOptions(struct mDirectorySet* dirs, const struct mCoreOptions* opts) { if (opts->savegamePath) { struct VDir* dir = VDirOpen(opts->savegamePath); + if (!dir && VDirCreate(opts->savegamePath)) { + dir = VDirOpen(opts->savegamePath); + } if (dir) { if (dirs->save && dirs->save != dirs->base) { dirs->save->close(dirs->save); @@ -183,6 +186,9 @@ void mDirectorySetMapOptions(struct mDirectorySet* dirs, const struct mCoreOptio if (opts->savestatePath) { struct VDir* dir = VDirOpen(opts->savestatePath); + if (!dir && VDirCreate(opts->savestatePath)) { + dir = VDirOpen(opts->savestatePath); + } if (dir) { if (dirs->state && dirs->state != dirs->base) { dirs->state->close(dirs->state); @@ -193,6 +199,9 @@ void mDirectorySetMapOptions(struct mDirectorySet* dirs, const struct mCoreOptio if (opts->screenshotPath) { struct VDir* dir = VDirOpen(opts->screenshotPath); + if (!dir && VDirCreate(opts->screenshotPath)) { + dir = VDirOpen(opts->screenshotPath); + } if (dir) { if (dirs->screenshot && dirs->screenshot != dirs->base) { dirs->screenshot->close(dirs->screenshot); @@ -203,6 +212,9 @@ void mDirectorySetMapOptions(struct mDirectorySet* dirs, const struct mCoreOptio if (opts->patchPath) { struct VDir* dir = VDirOpen(opts->patchPath); + if (!dir && VDirCreate(opts->patchPath)) { + dir = VDirOpen(opts->patchPath); + } if (dir) { if (dirs->patch && dirs->patch != dirs->base) { dirs->patch->close(dirs->patch); @@ -213,6 +225,9 @@ void mDirectorySetMapOptions(struct mDirectorySet* dirs, const struct mCoreOptio if (opts->cheatsPath) { struct VDir* dir = VDirOpen(opts->cheatsPath); + if (!dir && VDirCreate(opts->cheatsPath)) { + dir = VDirOpen(opts->cheatsPath); + } if (dir) { if (dirs->cheats && dirs->cheats != dirs->base) { dirs->cheats->close(dirs->cheats); diff --git a/src/platform/3ds/3ds-vfs.c b/src/platform/3ds/3ds-vfs.c index 975d63fdf..8f5864745 100644 --- a/src/platform/3ds/3ds-vfs.c +++ b/src/platform/3ds/3ds-vfs.c @@ -310,4 +310,9 @@ static enum VFSType _vd3deType(struct VDirEntry* vde) { } return VFS_FILE; } + +bool VDirCreate(const char* path) { + Result rc = FSUSER_CreateDirectory(sdmcArchive, fsMakePath(PATH_ASCII, path), 0); + return R_SUCCEEDED(rc) || rc == 0xC82044BE; +} #endif diff --git a/src/platform/psp2/sce-vfs.c b/src/platform/psp2/sce-vfs.c index 383847291..c200d8903 100644 --- a/src/platform/psp2/sce-vfs.c +++ b/src/platform/psp2/sce-vfs.c @@ -357,3 +357,9 @@ static enum VFSType _vdlesceType(struct VDirEntry* vde) { UNUSED(vde); return VFS_DIRECTORY; } + +bool VDirCreate(const char* path) { + // TODO: Verify vitasdk explanation of return values + sceIoMkdir(path, 0777); + return true; +} \ No newline at end of file diff --git a/src/platform/windows/vfs-w32.c b/src/platform/windows/vfs-w32.c index 902f937f3..bfa2e30a3 100644 --- a/src/platform/windows/vfs-w32.c +++ b/src/platform/windows/vfs-w32.c @@ -172,3 +172,15 @@ static enum VFSType _vdweType(struct VDirEntry* vde) { } return VFS_FILE; } + +bool VDirCreate(const char* path) { + wchar_t wpath[MAX_PATH]; + MultiByteToWideChar(CP_UTF8, 0, path, -1, wpath, MAX_PATH); + if (CreateDirectoryW(wpath, NULL)) { + return true; + } + if (GetLastError() == ERROR_ALREADY_EXISTS) { + return true; + } + return false; +} \ No newline at end of file diff --git a/src/util/vfs/vfs-dirent.c b/src/util/vfs/vfs-dirent.c index c41c5b728..0cb060e2b 100644 --- a/src/util/vfs/vfs-dirent.c +++ b/src/util/vfs/vfs-dirent.c @@ -8,6 +8,7 @@ #include #include +#include #include static bool _vdClose(struct VDir* vd); @@ -166,3 +167,7 @@ static enum VFSType _vdeType(struct VDirEntry* vde) { return VFS_FILE; #endif } + +bool VDirCreate(const char* path) { + return mkdir(path, 0777) == 0 || errno == EEXIST; +} \ No newline at end of file From a9e96c7d00f7816cebf1edf50575e7d9f59219d8 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 17 Jun 2019 13:28:03 -0700 Subject: [PATCH 12/50] GB SIO: Fix lockstep failing games aren't reloaded --- CHANGES | 1 + src/gb/sio.c | 1 + src/gb/sio/lockstep.c | 35 +++++++++++++++++++++++++++++------ 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 20cf0a4f4..7999a8365 100644 --- a/CHANGES +++ b/CHANGES @@ -31,6 +31,7 @@ Other fixes: - Qt: Fix FPS target maxing out at 59.727 (fixes mgba.io/i/1421) - Core: Fix crashes if core directories aren't set - Qt: Fix menu bar staying hidden in full screen (fixes mgba.io/i/317) + - GB SIO: Fix lockstep failing games aren't reloaded Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/gb/sio.c b/src/gb/sio.c index 26a326966..f2bb20fe8 100644 --- a/src/gb/sio.c +++ b/src/gb/sio.c @@ -31,6 +31,7 @@ void GBSIOInit(struct GBSIO* sio) { void GBSIOReset(struct GBSIO* sio) { sio->nextEvent = INT_MAX; sio->remainingBits = 0; + GBSIOSetDriver(sio, sio->driver); } void GBSIODeinit(struct GBSIO* sio) { diff --git a/src/gb/sio/lockstep.c b/src/gb/sio/lockstep.c index b1d925ebc..4aba35e01 100644 --- a/src/gb/sio/lockstep.c +++ b/src/gb/sio/lockstep.c @@ -103,9 +103,12 @@ static void _finishTransfer(struct GBSIOLockstepNode* node) { static int32_t _masterUpdate(struct GBSIOLockstepNode* node) { + enum mLockstepPhase transferActive; + ATOMIC_LOAD(transferActive, node->p->d.transferActive); + bool needsToWait = false; int i; - switch (node->p->d.transferActive) { + switch (transferActive) { case TRANSFER_IDLE: // If the master hasn't initiated a transfer, it can keep going. node->nextEvent += LOCKSTEP_INCREMENT; @@ -165,8 +168,12 @@ static int32_t _masterUpdate(struct GBSIOLockstepNode* node) { } static uint32_t _slaveUpdate(struct GBSIOLockstepNode* node) { + enum mLockstepPhase transferActive; + + ATOMIC_LOAD(transferActive, node->p->d.transferActive); + bool signal = false; - switch (node->p->d.transferActive) { + switch (transferActive) { case TRANSFER_IDLE: node->p->d.addCycles(&node->p->d, node->id, LOCKSTEP_INCREMENT); break; @@ -174,10 +181,16 @@ static uint32_t _slaveUpdate(struct GBSIOLockstepNode* node) { case TRANSFER_FINISHING: break; case TRANSFER_STARTED: + if (node->p->d.unusedCycles(&node->p->d, node->id) > node->eventDiff) { + break; + } node->transferFinished = false; signal = true; break; case TRANSFER_FINISHED: + if (node->p->d.unusedCycles(&node->p->d, node->id) > node->eventDiff) { + break; + } _finishTransfer(node); signal = true; break; @@ -193,7 +206,10 @@ static uint32_t _slaveUpdate(struct GBSIOLockstepNode* node) { static void _GBSIOLockstepNodeProcessEvents(struct mTiming* timing, void* user, uint32_t cyclesLate) { struct GBSIOLockstepNode* node = user; + mLockstepLock(&node->p->d); if (node->p->d.attached < 2) { + mTimingSchedule(timing, &node->event, (GBSIOCyclesPerTransfer[0] >> 1) - cyclesLate); + mLockstepUnlock(&node->p->d); return; } int32_t cycles = 0; @@ -209,6 +225,8 @@ static void _GBSIOLockstepNodeProcessEvents(struct mTiming* timing, void* user, } else { cycles = node->nextEvent; } + mLockstepUnlock(&node->p->d); + if (cycles > 0) { node->nextEvent = 0; node->eventDiff += cycles; @@ -227,17 +245,22 @@ static void GBSIOLockstepNodeWriteSB(struct GBSIODriver* driver, uint8_t value) static uint8_t GBSIOLockstepNodeWriteSC(struct GBSIODriver* driver, uint8_t value) { struct GBSIOLockstepNode* node = (struct GBSIOLockstepNode*) driver; - if ((value & 0x81) == 0x81 && node->p->d.attached > 1) { + int attached; + ATOMIC_LOAD(attached, node->p->d.attached); + + if ((value & 0x81) == 0x81 && attached > 1) { + mLockstepLock(&node->p->d); bool claimed = false; if (ATOMIC_CMPXCHG(node->p->masterClaimed, claimed, true)) { - node->p->d.transferActive = TRANSFER_STARTING; - node->p->d.transferCycles = GBSIOCyclesPerTransfer[(value >> 1) & 1]; + ATOMIC_STORE(node->p->d.transferActive, TRANSFER_STARTING); + ATOMIC_STORE(node->p->d.transferCycles, GBSIOCyclesPerTransfer[(value >> 1) & 1]); mTimingDeschedule(&driver->p->p->timing, &driver->p->event); mTimingDeschedule(&driver->p->p->timing, &node->event); mTimingSchedule(&driver->p->p->timing, &node->event, 0); } else { - mLOG(GB_SIO, FATAL, "GBSIOLockstepNodeWriteSC() failed to write to masterClaimed\n"); + mLOG(GB_SIO, DEBUG, "GBSIOLockstepNodeWriteSC() failed to write to masterClaimed\n"); } + mLockstepUnlock(&node->p->d); } return value; } From ecc6141c67ee8eff2fc74d8a9eaa7fcc4f0b4788 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Tue, 18 Jun 2019 11:14:05 -0700 Subject: [PATCH 13/50] Qt: Add option to pause on minimizing window (closes #1379) --- CHANGES | 1 + src/platform/qt/SettingsView.cpp | 2 ++ src/platform/qt/SettingsView.ui | 23 +++++++++++++++-------- src/platform/qt/Window.cpp | 20 ++++++++++++++++++++ src/platform/qt/Window.h | 1 + 5 files changed, 39 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index 7999a8365..d28e64d8b 100644 --- a/CHANGES +++ b/CHANGES @@ -55,6 +55,7 @@ Misc: - Vita: L2/R2 and L3/R3 can now be mapped on PSTV (fixes mgba.io/i/1292) - mGUI: Remember name and position of last loaded game - Core: Create game-related paths if they don't exist (fixes mgba.io/i/1446) + - Qt: Add option to pause on minimizing window (closes mgba.io/i/1379) 0.7.2: (2019-05-25) Emulation fixes: diff --git a/src/platform/qt/SettingsView.cpp b/src/platform/qt/SettingsView.cpp index 62a1d43f0..6f5f94005 100644 --- a/src/platform/qt/SettingsView.cpp +++ b/src/platform/qt/SettingsView.cpp @@ -387,6 +387,7 @@ void SettingsView::updateConfig() { saveSetting("allowOpposingDirections", m_ui.allowOpposingDirections); saveSetting("suspendScreensaver", m_ui.suspendScreensaver); saveSetting("pauseOnFocusLost", m_ui.pauseOnFocusLost); + saveSetting("pauseOnMinimize", m_ui.pauseOnMinimize); saveSetting("savegamePath", m_ui.savegamePath); saveSetting("savestatePath", m_ui.savestatePath); saveSetting("screenshotPath", m_ui.screenshotPath); @@ -550,6 +551,7 @@ void SettingsView::reloadConfig() { loadSetting("allowOpposingDirections", m_ui.allowOpposingDirections); loadSetting("suspendScreensaver", m_ui.suspendScreensaver); loadSetting("pauseOnFocusLost", m_ui.pauseOnFocusLost); + loadSetting("pauseOnMinimize", m_ui.pauseOnMinimize); loadSetting("savegamePath", m_ui.savegamePath); loadSetting("savestatePath", m_ui.savestatePath); loadSetting("screenshotPath", m_ui.screenshotPath); diff --git a/src/platform/qt/SettingsView.ui b/src/platform/qt/SettingsView.ui index d674dd15d..608ab70e1 100644 --- a/src/platform/qt/SettingsView.ui +++ b/src/platform/qt/SettingsView.ui @@ -562,7 +562,7 @@ - + Show FPS in title bar @@ -572,21 +572,21 @@ - + Qt::Horizontal - + Qt::Horizontal - + Automatically save cheats @@ -596,7 +596,7 @@ - + Automatically load cheats @@ -606,7 +606,7 @@ - + Automatically save state @@ -616,7 +616,7 @@ - + Automatically load state @@ -626,13 +626,20 @@ - + Enable Discord Rich Presence + + + + Pause when minimized + + + diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index 6b174a35d..d8b64b5cb 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -602,6 +602,13 @@ void Window::resizeEvent(QResizeEvent* event) { void Window::showEvent(QShowEvent* event) { if (m_wasOpened) { + if (event->spontaneous() && m_config->getOption("pauseOnMinimize").toInt() && m_controller) { + focusCheck(); + if (m_autoresume) { + m_controller->setPaused(false); + m_autoresume = false; + } + } return; } m_wasOpened = true; @@ -623,6 +630,19 @@ void Window::showEvent(QShowEvent* event) { setFocus(); } +void Window::hideEvent(QHideEvent* event) { + if (!event->spontaneous()) { + return; + } + if (!m_config->getOption("pauseOnMinimize").toInt() || !m_controller) { + return; + } + if (!m_controller->isPaused()) { + m_autoresume = true; + m_controller->setPaused(true); + } +} + void Window::closeEvent(QCloseEvent* event) { emit shutdown(); m_config->setQtOption("windowPos", pos()); diff --git a/src/platform/qt/Window.h b/src/platform/qt/Window.h index b41944fa0..b49185740 100644 --- a/src/platform/qt/Window.h +++ b/src/platform/qt/Window.h @@ -116,6 +116,7 @@ protected: virtual void keyReleaseEvent(QKeyEvent* event) override; virtual void resizeEvent(QResizeEvent*) override; virtual void showEvent(QShowEvent*) override; + virtual void hideEvent(QHideEvent*) override; virtual void closeEvent(QCloseEvent*) override; virtual void focusInEvent(QFocusEvent*) override; virtual void focusOutEvent(QFocusEvent*) override; From 120e1006d04ed62e011b2342842ac6c54f0673c3 Mon Sep 17 00:00:00 2001 From: Arves100 Date: Tue, 18 Jun 2019 21:42:25 +0200 Subject: [PATCH 14/50] All: Microsoft Visual C++ compatibility code --- CMakeLists.txt | 20 +++- include/mgba/core/version.h | 16 +-- include/mgba/internal/gba/input.h | 3 +- src/core/version.c.in | 14 +-- src/gba/input.c | 2 +- src/platform/cmake/FindSDL2.cmake | 181 +++++++++++++++++++++++++++++ src/platform/cmake/Findepoxy.cmake | 14 +++ src/platform/sdl/CMakeLists.txt | 7 ++ src/platform/sdl/main.c | 2 +- 9 files changed, 236 insertions(+), 23 deletions(-) create mode 100644 src/platform/cmake/FindSDL2.cmake create mode 100644 src/platform/cmake/Findepoxy.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 50ec9fc3e..8b3451987 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,6 @@ cmake_minimum_required(VERSION 3.1) +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/platform/cmake/") + if(POLICY CMP0025) cmake_policy(SET CMP0025 NEW) endif() @@ -245,16 +247,18 @@ endif() if(WIN32) set(WIN32_VERSION "${LIB_VERSION_MAJOR},${LIB_VERSION_MINOR},${LIB_VERSION_PATCH}") add_definitions(-D_WIN32_WINNT=0x0600) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -municode") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -municode") + if(MSVC) + add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN) + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) + add_definitions(-D_UNICODE -DUNICODE) + else() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -municode") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -municode") + endif() list(APPEND OS_LIB ws2_32 shlwapi) list(APPEND CORE_VFS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/util/vfs/vfs-fd.c ${CMAKE_CURRENT_SOURCE_DIR}/src/platform/windows/vfs-w32.c) file(GLOB OS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/platform/windows/*.c) source_group("Windows-specific code" FILES ${OS_SRC}) - if(MSVC) - add_definitions(-DNOMINMAX -DWIN32_LEAN_AND_MEAN) - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) - endif() elseif(UNIX) set(USE_PTHREADS ON) @@ -944,6 +948,10 @@ if(NOT SKIP_LIBRARY) add_library(${BINARY_NAME} STATIC ${SRC}) endif() + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util) + include(GenerateExportHeader) + generate_export_header(${BINARY_NAME} BASE_NAME mgba STATIC_DEFINE BUILD_STATIC EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util/dllexports.h) + target_include_directories(${BINARY_NAME} BEFORE PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/include) set_target_properties(${BINARY_NAME} PROPERTIES VERSION ${LIB_VERSION_STRING} SOVERSION ${LIB_VERSION_ABI} COMPILE_DEFINITIONS "${OS_DEFINES};${FEATURE_DEFINES};${FUNCTION_DEFINES}" COMPILE_OPTIONS "${FEATURE_FLAGS}") add_dependencies(${BINARY_NAME} version-info) diff --git a/include/mgba/core/version.h b/include/mgba/core/version.h index 47086618f..b261ab6d3 100644 --- a/include/mgba/core/version.h +++ b/include/mgba/core/version.h @@ -10,13 +10,15 @@ extern "C" { #endif -extern const char* const gitCommit; -extern const char* const gitCommitShort; -extern const char* const gitBranch; -extern const int gitRevision; -extern const char* const binaryName; -extern const char* const projectName; -extern const char* const projectVersion; +#include + +extern MGBA_EXPORT const char* const gitCommit; +extern MGBA_EXPORT const char* const gitCommitShort; +extern MGBA_EXPORT const char* const gitBranch; +extern MGBA_EXPORT const int gitRevision; +extern MGBA_EXPORT const char* const binaryName; +extern MGBA_EXPORT const char* const projectName; +extern MGBA_EXPORT const char* const projectVersion; #ifdef __cplusplus } diff --git a/include/mgba/internal/gba/input.h b/include/mgba/internal/gba/input.h index 03cb8b5e0..179e935f4 100644 --- a/include/mgba/internal/gba/input.h +++ b/include/mgba/internal/gba/input.h @@ -7,12 +7,13 @@ #define GBA_INPUT_H #include +#include CXX_GUARD_START #include -extern const struct mInputPlatformInfo GBAInputInfo; +extern MGBA_EXPORT const struct mInputPlatformInfo GBAInputInfo; enum GBAKey { GBA_KEY_A = 0, diff --git a/src/core/version.c.in b/src/core/version.c.in index b8c87fb70..00028e4c5 100644 --- a/src/core/version.c.in +++ b/src/core/version.c.in @@ -5,10 +5,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include -const char* const gitCommit = "${GIT_COMMIT}"; -const char* const gitCommitShort = "${GIT_COMMIT_SHORT}"; -const char* const gitBranch = "${GIT_BRANCH}"; -const int gitRevision = ${GIT_REV}; -const char* const binaryName = "${BINARY_NAME}"; -const char* const projectName = "${PROJECT_NAME}"; -const char* const projectVersion = "${VERSION_STRING}"; +MGBA_EXPORT const char* const gitCommit = "${GIT_COMMIT}"; +MGBA_EXPORT const char* const gitCommitShort = "${GIT_COMMIT_SHORT}"; +MGBA_EXPORT const char* const gitBranch = "${GIT_BRANCH}"; +MGBA_EXPORT const int gitRevision = ${GIT_REV}; +MGBA_EXPORT const char* const binaryName = "${BINARY_NAME}"; +MGBA_EXPORT const char* const projectName = "${PROJECT_NAME}"; +MGBA_EXPORT const char* const projectVersion = "${VERSION_STRING}"; diff --git a/src/gba/input.c b/src/gba/input.c index 8b24dc3f2..4c7d6b09a 100644 --- a/src/gba/input.c +++ b/src/gba/input.c @@ -7,7 +7,7 @@ #include -const struct mInputPlatformInfo GBAInputInfo = { +MGBA_EXPORT const struct mInputPlatformInfo GBAInputInfo = { .platformName = "gba", .keyId = (const char*[]) { "A", diff --git a/src/platform/cmake/FindSDL2.cmake b/src/platform/cmake/FindSDL2.cmake new file mode 100644 index 000000000..091faba16 --- /dev/null +++ b/src/platform/cmake/FindSDL2.cmake @@ -0,0 +1,181 @@ +# SDL2_LIBRARY, the name of the library to link against +# SDL2_FOUND, if false, do not try to link to SDL2 +# SDL2_INCLUDE_DIR, where to find SDL.h +# +# This module responds to the the flag: +# SDL2_BUILDING_LIBRARY +# If this is defined, then no SDL2main will be linked in because +# only applications need main(). +# Otherwise, it is assumed you are building an application and this +# module will attempt to locate and set the the proper link flags +# as part of the returned SDL2_LIBRARY variable. +# +# Don't forget to include SDLmain.h and SDLmain.m your project for the +# OS X framework based version. (Other versions link to -lSDL2main which +# this module will try to find on your behalf.) Also for OS X, this +# module will automatically add the -framework Cocoa on your behalf. +# +# +# Additional Note: If you see an empty SDL2_LIBRARY_TEMP in your configuration +# and no SDL2_LIBRARY, it means CMake did not find your SDL2 library +# (SDL2.dll, libsdl2.so, SDL2.framework, etc). +# Set SDL2_LIBRARY_TEMP to point to your SDL2 library, and configure again. +# Similarly, if you see an empty SDL2MAIN_LIBRARY, you should set this value +# as appropriate. These values are used to generate the final SDL2_LIBRARY +# variable, but when these values are unset, SDL2_LIBRARY does not get created. +# +# +# $SDL2DIR is an environment variable that would +# correspond to the ./configure --prefix=$SDL2DIR +# used in building SDL2. +# l.e.galup 9-20-02 +# +# Modified by Eric Wing. +# Added code to assist with automated building by using environmental variables +# and providing a more controlled/consistent search behavior. +# Added new modifications to recognize OS X frameworks and +# additional Unix paths (FreeBSD, etc). +# Also corrected the header search path to follow "proper" SDL guidelines. +# Added a search for SDL2main which is needed by some platforms. +# Added a search for threads which is needed by some platforms. +# Added needed compile switches for MinGW. +# +# On OSX, this will prefer the Framework version (if found) over others. +# People will have to manually change the cache values of +# SDL2_LIBRARY to override this selection or set the CMake environment +# CMAKE_INCLUDE_PATH to modify the search paths. +# +# Note that the header path has changed from SDL2/SDL.h to just SDL.h +# This needed to change because "proper" SDL convention +# is #include "SDL.h", not . This is done for portability +# reasons because not all systems place things in SDL2/ (see FreeBSD). +# +#========================================================================= +# +# Copyright (c) 1993-2015 Ken Martin, Will Schroeder, Bill Lorensen +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names +# of any contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +#========================================================================= +# +SET(SDL2_SEARCH_PATHS + ~/Library/Frameworks + /Library/Frameworks + /usr/local + /usr + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave + /opt + ${SDL2_PATH} +) + +FIND_PATH(SDL2_INCLUDE_DIR SDL.h + HINTS + $ENV{SDL2DIR} + PATH_SUFFIXES include/SDL2 include + PATHS ${SDL2_SEARCH_PATHS} ${SDL2_LIBRARY_TEMP}/../.. +) + +FIND_LIBRARY(SDL2_LIBRARY_TEMP + NAMES SDL2 + HINTS + $ENV{SDL2DIR} + PATH_SUFFIXES lib64 lib + PATHS ${SDL2_SEARCH_PATHS} ${SDL2_INCLUDE_DIR}/../.. +) + +IF(NOT SDL2_BUILDING_LIBRARY) + IF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework") + # Non-OS X framework versions expect you to also dynamically link to + # SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms + # seem to provide SDL2main for compatibility even though they don't + # necessarily need it. + FIND_LIBRARY(SDL2MAIN_LIBRARY + NAMES SDL2main + HINTS + $ENV{SDL2DIR} + PATH_SUFFIXES lib64 lib + PATHS ${SDL2_SEARCH_PATHS} + ) + ENDIF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework") +ENDIF(NOT SDL2_BUILDING_LIBRARY) + +# SDL2 may require threads on your system. +# The Apple build may not need an explicit flag because one of the +# frameworks may already provide it. +# But for non-OSX systems, I will use the CMake Threads package. +IF(NOT APPLE) + FIND_PACKAGE(Threads) +ENDIF(NOT APPLE) + +# MinGW needs an additional library, mwindows +# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -lmwindows +# (Actually on second look, I think it only needs one of the m* libraries.) +IF(MINGW) + SET(MINGW32_LIBRARY mingw32 CACHE STRING "mwindows for MinGW") +ENDIF(MINGW) + +IF(SDL2_LIBRARY_TEMP) + # For SDL2main + IF(NOT SDL2_BUILDING_LIBRARY) + IF(SDL2MAIN_LIBRARY) + SET(SDL2_LIBRARY_TEMP ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARY_TEMP}) + ENDIF(SDL2MAIN_LIBRARY) + ENDIF(NOT SDL2_BUILDING_LIBRARY) + + # For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa. + # CMake doesn't display the -framework Cocoa string in the UI even + # though it actually is there if I modify a pre-used variable. + # I think it has something to do with the CACHE STRING. + # So I use a temporary variable until the end so I can set the + # "real" variable in one-shot. + IF(APPLE) + SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa") + ENDIF(APPLE) + + # For threads, as mentioned Apple doesn't need this. + # In fact, there seems to be a problem if I used the Threads package + # and try using this line, so I'm just skipping it entirely for OS X. + IF(NOT APPLE) + SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT}) + ENDIF(NOT APPLE) + + # For MinGW library + IF(MINGW) + SET(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP}) + ENDIF(MINGW) + + # Set the final string here so the GUI reflects the final state. + SET(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found") + # Set the temp variable to INTERNAL so it is not seen in the CMake GUI + SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "") +ENDIF(SDL2_LIBRARY_TEMP) + +INCLUDE(FindPackageHandleStandardArgs) + +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR) diff --git a/src/platform/cmake/Findepoxy.cmake b/src/platform/cmake/Findepoxy.cmake new file mode 100644 index 000000000..1f56add79 --- /dev/null +++ b/src/platform/cmake/Findepoxy.cmake @@ -0,0 +1,14 @@ +find_path(EPOXY_INCLUDE_DIRS NAMES epoxy/gl.h PATH_SUFFIX include) +find_library(EPOXY_LIBRARIES NAMES epoxy_0 PATH_SUFFIX lib) + +if (NOT EPOXY_LIBRARIES) + find_library(EPOXY_LIBRARIES NAMES epoxy PATH_SUFFIX lib) +endif() + +if(EPOXY_LIBRARIES AND EPOXY_INCLUDE_DIRS) + set(epoxy_FOUND TRUE) +endif() + +if (WIN32 AND NOT epoxy_FOUND) + message(FATAL_ERROR "Windows requires epoxy module!") +endif() diff --git a/src/platform/sdl/CMakeLists.txt b/src/platform/sdl/CMakeLists.txt index 36e73b686..6f3bdf5ed 100644 --- a/src/platform/sdl/CMakeLists.txt +++ b/src/platform/sdl/CMakeLists.txt @@ -3,6 +3,10 @@ set(SDL_VERSION "2" CACHE STRING "Version of SDL to use (1.2 or 2)") if (SDL_VERSION EQUAL "2") include(FindPkgConfig) pkg_search_module(SDL2 sdl2) + if (NOT SDL2_FOUND) + find_package(SDL2) + endif() + if (SDL2_FOUND) set(SDL_INCLUDE_DIR ${SDL2_INCLUDE_DIRS}) set(SDL_LIBRARY ${SDL2_LIBRARIES}) @@ -105,6 +109,9 @@ target_link_libraries(${BINARY_NAME}-sdl ${BINARY_NAME} ${PLATFORM_LIBRARY} ${OP if(NOT WIN32) set_target_properties(${BINARY_NAME}-sdl PROPERTIES OUTPUT_NAME ${BINARY_NAME}) endif() +if (WIN32 AND MSVC) + set_target_properties(${BINARY_NAME}-sdl PROPERTIES LINK_FLAGS "/SUBSYSTEM:CONSOLE") +endif() install(TARGETS ${BINARY_NAME}-sdl DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${BINARY_NAME}-sdl) if(UNIX) install(FILES ${CMAKE_SOURCE_DIR}/doc/mgba.6 DESTINATION ${MANDIR}/man6 COMPONENT ${BINARY_NAME}-sdl) diff --git a/src/platform/sdl/main.c b/src/platform/sdl/main.c index 0bb340c23..deda42506 100644 --- a/src/platform/sdl/main.c +++ b/src/platform/sdl/main.c @@ -178,7 +178,7 @@ int main(int argc, char** argv) { return ret; } -#ifdef _WIN32 +#if defined(_WIN32) && !defined(_UNICODE) #include int wmain(int argc, wchar_t** argv) { From abc5fbeb387e93d9194714eff8ba78669701d5f3 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 20 Jun 2019 14:02:45 -0700 Subject: [PATCH 15/50] Python: Fix build --- CMakeLists.txt | 4 ++++ src/platform/cmake/Findepoxy.cmake | 4 ---- src/platform/python/_builder.h | 1 + src/platform/python/_builder.py | 1 + 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b3451987..8e61e6953 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -785,6 +785,10 @@ elseif(BUILD_GLES2) set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libgles2") endif() +if (WIN32 AND NOT USE_EPOXY) + message(FATAL_ERROR "Windows requires epoxy module!") +endif() + if(USE_SQLITE3) list(APPEND FEATURES SQLITE3) include_directories(AFTER ${SQLITE3_INCLUDE_DIRS}) diff --git a/src/platform/cmake/Findepoxy.cmake b/src/platform/cmake/Findepoxy.cmake index 1f56add79..0a5ce4091 100644 --- a/src/platform/cmake/Findepoxy.cmake +++ b/src/platform/cmake/Findepoxy.cmake @@ -8,7 +8,3 @@ endif() if(EPOXY_LIBRARIES AND EPOXY_INCLUDE_DIRS) set(epoxy_FOUND TRUE) endif() - -if (WIN32 AND NOT epoxy_FOUND) - message(FATAL_ERROR "Windows requires epoxy module!") -endif() diff --git a/src/platform/python/_builder.h b/src/platform/python/_builder.h index 7c37e4a18..a0a27d5a7 100644 --- a/src/platform/python/_builder.h +++ b/src/platform/python/_builder.h @@ -5,6 +5,7 @@ #define _SYS_TIME_H_ #define _TIME_H #define _TIME_H_ +#define MGBA_EXPORT #define ATTRIBUTE_FORMAT(X, Y, Z) #define DECL_BITFIELD(newtype, oldtype) typedef oldtype newtype diff --git a/src/platform/python/_builder.py b/src/platform/python/_builder.py index 6b76ee698..82c484e64 100644 --- a/src/platform/python/_builder.py +++ b/src/platform/python/_builder.py @@ -18,6 +18,7 @@ cppflags.extend(["-I" + incdir, "-I" + srcdir, "-I" + bindir]) ffi.set_source("mgba._pylib", """ #define static #define inline +#define MGBA_EXPORT #include #define OPAQUE_THREADING #include From 227121e6761d3bc3a8ad65e8eebaadfa54e7c6ec Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 20 Jun 2019 13:46:54 -0700 Subject: [PATCH 16/50] CMake: Begin cleanup --- CMakeLists.txt | 155 ++++------------------- src/arm/CMakeLists.txt | 20 +++ src/core/CMakeLists.txt | 31 +++++ src/debugger/CMakeLists.txt | 16 +++ src/feature/CMakeLists.txt | 16 +++ src/gb/CMakeLists.txt | 45 +++++++ src/gba/CMakeLists.txt | 63 +++++++++ src/lr35902/CMakeLists.txt | 16 +++ src/platform/cmake/ExportDirectory.cmake | 7 + src/platform/cmake/FindFeature.cmake | 47 +++++++ src/util/CMakeLists.txt | 38 ++++++ 11 files changed, 325 insertions(+), 129 deletions(-) create mode 100644 src/arm/CMakeLists.txt create mode 100644 src/core/CMakeLists.txt create mode 100644 src/debugger/CMakeLists.txt create mode 100644 src/feature/CMakeLists.txt create mode 100644 src/gb/CMakeLists.txt create mode 100644 src/gba/CMakeLists.txt create mode 100644 src/lr35902/CMakeLists.txt create mode 100644 src/platform/cmake/ExportDirectory.cmake create mode 100644 src/platform/cmake/FindFeature.cmake create mode 100644 src/util/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 8e61e6953..b4c617d89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.1) -set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src/platform/cmake/") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/src/platform/cmake/") if(POLICY CMP0025) cmake_policy(SET CMP0025 NEW) @@ -81,38 +81,9 @@ else() endif() endif() -file(GLOB ARM_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/arm/*.c) -file(GLOB ARM_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/arm/test/*.c) -file(GLOB LR35902_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/lr35902/*.c) -file(GLOB LR35902_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/lr35902/test/*.c) -file(GLOB GBA_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gba/*.c) -file(GLOB GBA_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gba/test/*.c) -file(GLOB GB_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gb/*.c) -file(GLOB GB_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gb/test/*.c) -file(GLOB GBA_CHEATS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gba/cheats/*.c) -file(GLOB GBA_EXTRA_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gba/extra/audio-mixer.c) -file(GLOB GBA_RR_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gba/rr/*.c) -file(GLOB CORE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/core/*.c) -file(GLOB CORE_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/core/test/*.c) -file(GLOB UTIL_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/util/*.c) -file(GLOB UTIL_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/util/test/*.c) -file(GLOB GUI_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/util/gui/*.c ${CMAKE_CURRENT_SOURCE_DIR}/src/feature/gui/*.c) -file(GLOB GBA_RENDERER_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gba/renderers/*.c) -file(GLOB GBA_SIO_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gba/sio/*.c) -file(GLOB GBA_EXTRA_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gba/extra/*.c) -file(GLOB GB_SIO_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gb/sio/*.c) -file(GLOB GB_RENDERER_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gb/renderers/*.c) -file(GLOB GB_EXTRA_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gb/extra/*.c) file(GLOB THIRD_PARTY_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/third-party/inih/*.c) -file(GLOB EXTRA_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/feature/*.c) set(CORE_VFS_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/util/vfs/vfs-mem.c ${CMAKE_CURRENT_SOURCE_DIR}/src/util/vfs/vfs-fifo.c) set(VFS_SRC) -source_group("ARM core" FILES ${ARM_SRC}) -source_group("LR35902 core" FILES ${LR35902_SRC}) -source_group("GBA board" FILES ${GBA_SRC} ${GBA_RENDERER_SRC} ${GBA_SIO_SRC}) -source_group("GBA extra" FILES ${GBA_CHEATS_SRC} ${GBA_RR_SRC}) -source_group("GB board" FILES ${GB_SRC} ${GB_SIO_SRC}) -source_group("Utilities" FILES ${UTIL_SRC}) include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/include) if(NOT CMAKE_BUILD_TYPE) @@ -154,54 +125,7 @@ if (NOT DEFINED MANDIR) set(MANDIR ${CMAKE_INSTALL_MANDIR}) endif() -# Function definitions -include(FindPkgConfig) -function(find_feature FEATURE_NAME FEATURE_REQUIRES) - if (NOT ${FEATURE_NAME}) - return() - endif() - if (DISABLE_DEPS) - set(${FEATURE_NAME} OFF PARENT_SCOPE) - return() - endif() - foreach(REQUIRE ${FEATURE_REQUIRES}) - if(NOT ${REQUIRE}_FOUND) - find_package(${REQUIRE} QUIET) - if(NOT ${REQUIRE}_FOUND) - pkg_search_module(${REQUIRE} ${REQUIRE}) - if (NOT ${REQUIRE}_FOUND) - message(WARNING "Requested module ${REQUIRE} missing for feature ${FEATURE_NAME}. Feature disabled.") - set(${FEATURE_NAME} OFF PARENT_SCOPE) - return() - endif() - endif() - endif() - string(TOUPPER ${REQUIRE} UREQUIRE) - set(${UREQUIRE}_CFLAGS_OTHER ${${REQUIRE}_CFLAGS_OTHER} PARENT_SCOPE) - set(${UREQUIRE}_FOUND ${${REQUIRE}_FOUND} PARENT_SCOPE) - set(${UREQUIRE}_INCLUDE_DIRS ${${REQUIRE}_INCLUDE_DIRS} PARENT_SCOPE) - set(${UREQUIRE}_VERSION_STRING ${${REQUIRE}_VERSION_STRING} PARENT_SCOPE) - if (APPLE) - set(IS_FRAMEWORK OFF) - set(LIBS) - foreach(LIB IN LISTS ${REQUIRE}_LIBRARIES) - if(LIB STREQUAL "-framework") - set(IS_FRAMEWORK ON) - elseif(IS_FRAMEWORK) - list(APPEND LIBS "-framework ${LIB}") - set(IS_FRAMEWORK OFF) - else() - list(APPEND LIBS ${LIB}) - endif() - endforeach() - set(${UREQUIRE}_LIBRARIES ${LIBS} PARENT_SCOPE) - else() - set(${UREQUIRE}_LIBRARIES ${${REQUIRE}_LIBRARIES} PARENT_SCOPE) - endif() - set(${UREQUIRE}_LIBRARY_DIRS ${${REQUIRE}_LIBRARY_DIRS} PARENT_SCOPE) - set(${UREQUIRE}_LDFLAGS_OTHER ${${REQUIRE}_LDFLAGS_OTHER} PARENT_SCOPE) - endforeach() -endfunction() +include(FindFeature) # Version information add_custom_target(version-info ALL @@ -215,7 +139,6 @@ add_custom_target(version-info ALL include(${CMAKE_CURRENT_SOURCE_DIR}/version.cmake) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/core/version.c.in ${CMAKE_CURRENT_BINARY_DIR}/version.c) -list(APPEND UTIL_SRC ${CMAKE_CURRENT_BINARY_DIR}/version.c) source_group("Generated sources" FILES ${CMAKE_CURRENT_BINARY_DIR}/version.c) # Advanced settings @@ -559,13 +482,8 @@ if(USE_FFMPEG) endif() # Features -set(DEBUGGER_SRC - ${CMAKE_CURRENT_SOURCE_DIR}/src/debugger/debugger.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/debugger/parser.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/debugger/symbols.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/debugger/cli-debugger.c) - -file(GLOB DEBUGGER_TEST_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/debugger/test/*.c) +add_subdirectory(src/debugger) +add_subdirectory(src/feature) set(FEATURE_SRC) set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6") @@ -823,43 +741,29 @@ if(ENABLE_SCRIPTING) endif() endif() +add_subdirectory(src/arm) +add_subdirectory(src/core) +add_subdirectory(src/gb) +add_subdirectory(src/gba) +add_subdirectory(src/lr35902) +add_subdirectory(src/util) + +list(APPEND GUI_SRC ${EXTRA_GUI_SRC}) +list(APPEND UTIL_SRC ${CMAKE_CURRENT_BINARY_DIR}/version.c) + set(TEST_SRC ${CORE_TEST_SRC}) if(M_CORE_GB) add_definitions(-DM_CORE_GB) - list(APPEND CORE_SRC - ${LR35902_SRC} - ${GB_SRC} - ${GB_RENDERER_SRC}) - list(APPEND DEBUGGER_SRC - ${CMAKE_CURRENT_SOURCE_DIR}/src/lr35902/debugger/cli-debugger.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/lr35902/debugger/debugger.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/lr35902/debugger/memory-debugger.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/gb/debugger/cli.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/gb/debugger/debugger.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/gb/debugger/symbols.c) - list(APPEND TEST_SRC - ${LR35902_TEST_SRC} - ${GB_TEST_SRC}) + list(APPEND CORE_SRC ${LR35902_SRC} ${GB_SRC}) + list(APPEND DEBUGGER_SRC ${LR35902_DEBUGGER_SRC} ${GB_DEBUGGER_SRC}) + list(APPEND TEST_SRC ${LR35902_TEST_SRC} ${GB_TEST_SRC}) endif() if(M_CORE_GBA) add_definitions(-DM_CORE_GBA) - list(APPEND CORE_SRC - ${ARM_SRC} - ${GBA_SRC} - ${GBA_CHEATS_SRC} - ${GBA_RENDERER_SRC}) - list(APPEND DEBUGGER_SRC - ${CMAKE_CURRENT_SOURCE_DIR}/src/arm/debugger/cli-debugger.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/arm/debugger/debugger.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/arm/debugger/memory-debugger.c - ${CMAKE_CURRENT_SOURCE_DIR}/src/gba/debugger/cli.c) - list(APPEND TEST_SRC - ${ARM_TEST_SRC} - ${GBA_TEST_SRC}) - if(NOT M_CORE_GB) - list(APPEND CORE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/gb/audio.c) - endif() + list(APPEND CORE_SRC ${ARM_SRC} ${GBA_SRC}) + list(APPEND DEBUGGER_SRC ${ARM_DEBUGGER_SRC} ${GBA_DEBUGGER_SRC}) + list(APPEND TEST_SRC ${ARM_TEST_SRC} ${GBA_TEST_SRC}) endif() if(USE_DEBUGGERS) @@ -909,29 +813,22 @@ set(SRC ${CORE_SRC} ${VFS_SRC}) if(NOT MINIMAL_CORE) set(ENABLE_EXTRA ON) if(M_CORE_GBA) - list(APPEND SRC - ${GBA_SIO_SRC}) + list(APPEND SRC ${GBA_SIO_SRC}) endif() if(M_CORE_GB) - list(APPEND SRC - ${GB_SIO_SRC}) + list(APPEND SRC ${GB_SIO_SRC}) endif() - list(APPEND SRC - ${FEATURE_SRC}) + list(APPEND SRC ${FEATURE_SRC}) endif() if(ENABLE_EXTRA) if(M_CORE_GBA) - list(APPEND SRC - ${GBA_RR_SRC} - ${GBA_EXTRA_SRC}) + list(APPEND SRC ${GBA_EXTRA_SRC}) endif() if(M_CORE_GB) - list(APPEND SRC - ${GB_EXTRA_SRC}) + list(APPEND SRC ${GB_EXTRA_SRC}) endif() - list(APPEND SRC - ${EXTRA_SRC}) + list(APPEND SRC ${EXTRA_SRC}) endif() if(NOT SKIP_LIBRARY) diff --git a/src/arm/CMakeLists.txt b/src/arm/CMakeLists.txt new file mode 100644 index 000000000..3eaa2d0d3 --- /dev/null +++ b/src/arm/CMakeLists.txt @@ -0,0 +1,20 @@ +include(ExportDirectory) +set(SOURCE_FILES + arm.c + core.c + decoder-arm.c + decoder.c + decoder-thumb.c + isa-arm.c + isa-thumb.c) + +set(DEBUGGER_FILES + debugger/cli-debugger.c + debugger/debugger.c + debugger/memory-debugger.c) + +source_group("ARM core" FILES ${SOURCE_FILES}) +source_group("ARM debugger" FILES ${DEBUGGER_FILES}) + +export_directory(ARM SOURCE_FILES) +export_directory(ARM_DEBUGGER DEBUGGER_FILES) \ No newline at end of file diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt new file mode 100644 index 000000000..6c639e594 --- /dev/null +++ b/src/core/CMakeLists.txt @@ -0,0 +1,31 @@ +include(ExportDirectory) +set(SOURCE_FILES + bitmap-cache.c + cache-set.c + cheats.c + config.c + core.c + directories.c + input.c + interface.c + library.c + lockstep.c + log.c + map-cache.c + mem-search.c + rewind.c + scripting.c + serialize.c + sync.c + thread.c + tile-cache.c + timing.c) + +set(TEST_FILES + test/core.c) + +source_group("mCore" FILES ${SOURCE_FILES}) +source_group("mCore tests" FILES ${TEST_FILES}) + +export_directory(CORE SOURCE_FILES) +export_directory(CORE_TEST TEST_FILES) \ No newline at end of file diff --git a/src/debugger/CMakeLists.txt b/src/debugger/CMakeLists.txt new file mode 100644 index 000000000..b555caf7d --- /dev/null +++ b/src/debugger/CMakeLists.txt @@ -0,0 +1,16 @@ +include(ExportDirectory) +set(SOURCE_FILES + cli-debugger.c + debugger.c + parser.c + symbols.c) + +set(TEST_FILES + test/lexer.c + test/parser.c) + +source_group("Debugger" FILES ${SOURCE_FILES}) +source_group("Debugger tests" FILES ${TEST_FILES}) + +export_directory(DEBUGGER SOURCE_FILES) +export_directory(DEBUGGER_TEST TEST_FILES) \ No newline at end of file diff --git a/src/feature/CMakeLists.txt b/src/feature/CMakeLists.txt new file mode 100644 index 000000000..e92064d2b --- /dev/null +++ b/src/feature/CMakeLists.txt @@ -0,0 +1,16 @@ +include(ExportDirectory) +set(SOURCE_FILES + commandline.c + thread-proxy.c + video-logger.c) + +set(GUI_FILES + gui/gui-config.c + gui/gui-runner.c + gui/remap.c) + +source_group("Extra features" FILES ${SOURCE_FILES}) +source_group("Extra GUI source" FILES ${GUI_FILES}) + +export_directory(EXTRA SOURCE_FILES) +export_directory(EXTRA_GUI GUI_FILES) diff --git a/src/gb/CMakeLists.txt b/src/gb/CMakeLists.txt new file mode 100644 index 000000000..948cca747 --- /dev/null +++ b/src/gb/CMakeLists.txt @@ -0,0 +1,45 @@ +include(ExportDirectory) +set(SOURCE_FILES + audio.c + cheats.c + core.c + gb.c + io.c + mbc.c + memory.c + overrides.c + serialize.c + renderers/cache-set.c + renderers/software.c + sio.c + timer.c + video.c) + +set(SIO_FILES + sio/lockstep.c + sio/printer.c) + +set(EXTRA_FILES + extra/proxy.c) + +set(DEBUGGER_FILES + debugger/cli.c + debugger/debugger.c + debugger/symbols.c) + +set(TEST_FILES + test/core.c + test/mbc.c + test/memory.c + test/rtc.c) + +source_group("GB board" FILES ${SOURCE_FILES}) +source_group("GB extras" FILES ${EXTRA_FILES} ${SIO_FILES}) +source_group("GB debugger" FILES ${DEBUGGER_FILES}) +source_group("GB tests" FILES ${TEST_FILES}) + +export_directory(GB SOURCE_FILES) +export_directory(GB_SIO SIO_FILES) +export_directory(GB_EXTRA EXTRA_FILES) +export_directory(GB_DEBUGGER DEBUGGER_FILES) +export_directory(GB_TEST TEST_FILES) diff --git a/src/gba/CMakeLists.txt b/src/gba/CMakeLists.txt new file mode 100644 index 000000000..74a79425c --- /dev/null +++ b/src/gba/CMakeLists.txt @@ -0,0 +1,63 @@ +include(ExportDirectory) +set(SOURCE_FILES + ../gb/audio.c + audio.c + bios.c + cheats.c + cheats/codebreaker.c + cheats/gameshark.c + cheats/parv3.c + core.c + dma.c + gba.c + hardware.c + hle-bios.c + input.c + io.c + matrix.c + memory.c + overrides.c + renderers/cache-set.c + renderers/common.c + renderers/gl.c + renderers/software-bg.c + renderers/software-mode0.c + renderers/software-obj.c + renderers/video-software.c + savedata.c + serialize.c + sharkport.c + sio.c + timer.c + vfame.c + video.c) + +set(SIO_FILES + sio/joybus.c + sio/lockstep.c) + +set(EXTRA_FILES + extra/audio-mixer.c + extra/battlechip.c + extra/proxy.c + rr/mgm.c + rr/rr.c + rr/vbm.c) + +set(DEBUGGER_FILES + debugger/cli.c) + +set(TEST_FILES + test/cheats.c + test/core.c) + +source_group("GBA board" FILES ${SOURCE_FILES}) +source_group("GBA extras" FILES ${EXTRA_FILES} ${SIO_FILES}) +source_group("GBA debugger" FILES ${DEBUGGER_FILES}) +source_group("GBA tests" FILES ${TEST_FILES}) + +export_directory(GBA SOURCE_FILES) +export_directory(GBA_SIO SIO_FILES) +export_directory(GBA_EXTRA EXTRA_FILES) +export_directory(GBA_DEBUGGER DEBUGGER_FILES) +export_directory(GBA_TEST TEST_FILES) diff --git a/src/lr35902/CMakeLists.txt b/src/lr35902/CMakeLists.txt new file mode 100644 index 000000000..3b833d418 --- /dev/null +++ b/src/lr35902/CMakeLists.txt @@ -0,0 +1,16 @@ +include(ExportDirectory) +set(SOURCE_FILES + decoder.c + isa-lr35902.c + lr35902.c) + +set(DEBUGGER_FILES + debugger/cli-debugger.c + debugger/debugger.c + debugger/memory-debugger.c) + +source_group("LR35902 core" FILES ${SOURCE_FILES}) +source_group("ARM LR35902" FILES ${DEBUGGER_FILES}) + +export_directory(LR35902 SOURCE_FILES) +export_directory(LR35902_DEBUGGER DEBUGGER_FILES) \ No newline at end of file diff --git a/src/platform/cmake/ExportDirectory.cmake b/src/platform/cmake/ExportDirectory.cmake new file mode 100644 index 000000000..49e5ff929 --- /dev/null +++ b/src/platform/cmake/ExportDirectory.cmake @@ -0,0 +1,7 @@ +macro(export_directory PREFIX FILES) + set(${PREFIX}_SRC) + foreach(SRCFILE IN LISTS ${FILES}) + list(APPEND ${PREFIX}_SRC "${CMAKE_CURRENT_SOURCE_DIR}/${SRCFILE}") + endforeach() + set(${PREFIX}_SRC ${${PREFIX}_SRC} PARENT_SCOPE) +endmacro() \ No newline at end of file diff --git a/src/platform/cmake/FindFeature.cmake b/src/platform/cmake/FindFeature.cmake new file mode 100644 index 000000000..ef23ac32d --- /dev/null +++ b/src/platform/cmake/FindFeature.cmake @@ -0,0 +1,47 @@ +include(FindPkgConfig) +function(find_feature FEATURE_NAME FEATURE_REQUIRES) + if (NOT ${FEATURE_NAME}) + return() + endif() + if (DISABLE_DEPS) + set(${FEATURE_NAME} OFF PARENT_SCOPE) + return() + endif() + foreach(REQUIRE ${FEATURE_REQUIRES}) + if(NOT ${REQUIRE}_FOUND) + find_package(${REQUIRE} QUIET) + if(NOT ${REQUIRE}_FOUND) + pkg_search_module(${REQUIRE} ${REQUIRE}) + if (NOT ${REQUIRE}_FOUND) + message(WARNING "Requested module ${REQUIRE} missing for feature ${FEATURE_NAME}. Feature disabled.") + set(${FEATURE_NAME} OFF PARENT_SCOPE) + return() + endif() + endif() + endif() + string(TOUPPER ${REQUIRE} UREQUIRE) + set(${UREQUIRE}_CFLAGS_OTHER ${${REQUIRE}_CFLAGS_OTHER} PARENT_SCOPE) + set(${UREQUIRE}_FOUND ${${REQUIRE}_FOUND} PARENT_SCOPE) + set(${UREQUIRE}_INCLUDE_DIRS ${${REQUIRE}_INCLUDE_DIRS} PARENT_SCOPE) + set(${UREQUIRE}_VERSION_STRING ${${REQUIRE}_VERSION_STRING} PARENT_SCOPE) + if (APPLE) + set(IS_FRAMEWORK OFF) + set(LIBS) + foreach(LIB IN LISTS ${REQUIRE}_LIBRARIES) + if(LIB STREQUAL "-framework") + set(IS_FRAMEWORK ON) + elseif(IS_FRAMEWORK) + list(APPEND LIBS "-framework ${LIB}") + set(IS_FRAMEWORK OFF) + else() + list(APPEND LIBS ${LIB}) + endif() + endforeach() + set(${UREQUIRE}_LIBRARIES ${LIBS} PARENT_SCOPE) + else() + set(${UREQUIRE}_LIBRARIES ${${REQUIRE}_LIBRARIES} PARENT_SCOPE) + endif() + set(${UREQUIRE}_LIBRARY_DIRS ${${REQUIRE}_LIBRARY_DIRS} PARENT_SCOPE) + set(${UREQUIRE}_LDFLAGS_OTHER ${${REQUIRE}_LDFLAGS_OTHER} PARENT_SCOPE) + endforeach() +endfunction() \ No newline at end of file diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt new file mode 100644 index 000000000..f4265b2ea --- /dev/null +++ b/src/util/CMakeLists.txt @@ -0,0 +1,38 @@ +include(ExportDirectory) +set(SOURCE_FILES + circle-buffer.c + configuration.c + crc32.c + elf-read.c + export.c + formatting.c + hash.c + patch.c + patch-fast.c + patch-ips.c + patch-ups.c + png-io.c + ring-fifo.c + string.c + table.c + text-codec.c + vfs.c) + +set(GUI_FILES + gui.c + gui/file-select.c + gui/font.c + gui/font-metrics.c + gui/menu.c) + +set(TEST_FILES + test/text-codec.c + test/vfs.c) + +source_group("Utilities" FILES ${SOURCE_FILES}) +source_group("GUI source" FILES ${GUI_FILES}) +source_group("Utilities tests" FILES ${TEST_FILES}) + +export_directory(UTIL SOURCE_FILES) +export_directory(GUI GUI_FILES) +export_directory(UTIL_TEST TEST_FILES) \ No newline at end of file From ebf35aaaf73915c115635764c83354ae8668c7cc Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 20 Jun 2019 14:14:46 -0700 Subject: [PATCH 17/50] ARM: Fix build --- src/arm/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/src/arm/CMakeLists.txt b/src/arm/CMakeLists.txt index 3eaa2d0d3..a86f0bea1 100644 --- a/src/arm/CMakeLists.txt +++ b/src/arm/CMakeLists.txt @@ -1,7 +1,6 @@ include(ExportDirectory) set(SOURCE_FILES arm.c - core.c decoder-arm.c decoder.c decoder-thumb.c From c9c80df43370f39acfbfb25ac4d5b9a62ab25d79 Mon Sep 17 00:00:00 2001 From: Arves100 Date: Thu, 20 Jun 2019 23:12:19 +0200 Subject: [PATCH 18/50] SDL: Fix SDL2 package search --- src/platform/cmake/FindSDL2.cmake | 48 +++++++++++++++---------------- src/platform/sdl/CMakeLists.txt | 6 ++++ 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/src/platform/cmake/FindSDL2.cmake b/src/platform/cmake/FindSDL2.cmake index 091faba16..be210361c 100644 --- a/src/platform/cmake/FindSDL2.cmake +++ b/src/platform/cmake/FindSDL2.cmake @@ -1,6 +1,6 @@ -# SDL2_LIBRARY, the name of the library to link against +# SDL2_LIBRARIES, the name of the library to link against # SDL2_FOUND, if false, do not try to link to SDL2 -# SDL2_INCLUDE_DIR, where to find SDL.h +# SDL2_INCLUDE_DIRS, where to find SDL.h # # This module responds to the the flag: # SDL2_BUILDING_LIBRARY @@ -8,7 +8,7 @@ # only applications need main(). # Otherwise, it is assumed you are building an application and this # module will attempt to locate and set the the proper link flags -# as part of the returned SDL2_LIBRARY variable. +# as part of the returned SDL2_LIBRARIES variable. # # Don't forget to include SDLmain.h and SDLmain.m your project for the # OS X framework based version. (Other versions link to -lSDL2main which @@ -16,13 +16,13 @@ # module will automatically add the -framework Cocoa on your behalf. # # -# Additional Note: If you see an empty SDL2_LIBRARY_TEMP in your configuration -# and no SDL2_LIBRARY, it means CMake did not find your SDL2 library +# Additional Note: If you see an empty SDL2_LIBRARIES_TEMP in your configuration +# and no SDL2_LIBRARIES, it means CMake did not find your SDL2 library # (SDL2.dll, libsdl2.so, SDL2.framework, etc). -# Set SDL2_LIBRARY_TEMP to point to your SDL2 library, and configure again. +# Set SDL2_LIBRARIES_TEMP to point to your SDL2 library, and configure again. # Similarly, if you see an empty SDL2MAIN_LIBRARY, you should set this value -# as appropriate. These values are used to generate the final SDL2_LIBRARY -# variable, but when these values are unset, SDL2_LIBRARY does not get created. +# as appropriate. These values are used to generate the final SDL2_LIBRARIES +# variable, but when these values are unset, SDL2_LIBRARIES does not get created. # # # $SDL2DIR is an environment variable that would @@ -42,7 +42,7 @@ # # On OSX, this will prefer the Framework version (if found) over others. # People will have to manually change the cache values of -# SDL2_LIBRARY to override this selection or set the CMake environment +# SDL2_LIBRARIES to override this selection or set the CMake environment # CMAKE_INCLUDE_PATH to modify the search paths. # # Note that the header path has changed from SDL2/SDL.h to just SDL.h @@ -94,23 +94,23 @@ SET(SDL2_SEARCH_PATHS ${SDL2_PATH} ) -FIND_PATH(SDL2_INCLUDE_DIR SDL.h +FIND_PATH(SDL2_INCLUDE_DIRS SDL.h HINTS $ENV{SDL2DIR} PATH_SUFFIXES include/SDL2 include - PATHS ${SDL2_SEARCH_PATHS} ${SDL2_LIBRARY_TEMP}/../.. + PATHS ${SDL2_SEARCH_PATHS} ${SDL2_LIBRARIES_TEMP}/../.. ) -FIND_LIBRARY(SDL2_LIBRARY_TEMP +FIND_LIBRARY(SDL2_LIBRARIES_TEMP NAMES SDL2 HINTS $ENV{SDL2DIR} PATH_SUFFIXES lib64 lib - PATHS ${SDL2_SEARCH_PATHS} ${SDL2_INCLUDE_DIR}/../.. + PATHS ${SDL2_SEARCH_PATHS} ${SDL2_INCLUDE_DIRS}/../.. ) IF(NOT SDL2_BUILDING_LIBRARY) - IF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework") + IF(NOT ${SDL2_INCLUDE_DIRS} MATCHES ".framework") # Non-OS X framework versions expect you to also dynamically link to # SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms # seem to provide SDL2main for compatibility even though they don't @@ -122,7 +122,7 @@ IF(NOT SDL2_BUILDING_LIBRARY) PATH_SUFFIXES lib64 lib PATHS ${SDL2_SEARCH_PATHS} ) - ENDIF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework") + ENDIF(NOT ${SDL2_INCLUDE_DIRS} MATCHES ".framework") ENDIF(NOT SDL2_BUILDING_LIBRARY) # SDL2 may require threads on your system. @@ -140,11 +140,11 @@ IF(MINGW) SET(MINGW32_LIBRARY mingw32 CACHE STRING "mwindows for MinGW") ENDIF(MINGW) -IF(SDL2_LIBRARY_TEMP) +IF(SDL2_LIBRARIES_TEMP) # For SDL2main IF(NOT SDL2_BUILDING_LIBRARY) IF(SDL2MAIN_LIBRARY) - SET(SDL2_LIBRARY_TEMP ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARY_TEMP}) + SET(SDL2_LIBRARIES_TEMP ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARIES_TEMP}) ENDIF(SDL2MAIN_LIBRARY) ENDIF(NOT SDL2_BUILDING_LIBRARY) @@ -155,27 +155,27 @@ IF(SDL2_LIBRARY_TEMP) # So I use a temporary variable until the end so I can set the # "real" variable in one-shot. IF(APPLE) - SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa") + SET(SDL2_LIBRARIES_TEMP ${SDL2_LIBRARIES_TEMP} "-framework Cocoa") ENDIF(APPLE) # For threads, as mentioned Apple doesn't need this. # In fact, there seems to be a problem if I used the Threads package # and try using this line, so I'm just skipping it entirely for OS X. IF(NOT APPLE) - SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT}) + SET(SDL2_LIBRARIES_TEMP ${SDL2_LIBRARIES_TEMP} ${CMAKE_THREAD_LIBS_INIT}) ENDIF(NOT APPLE) # For MinGW library IF(MINGW) - SET(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP}) + SET(SDL2_LIBRARIES_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARIES_TEMP}) ENDIF(MINGW) # Set the final string here so the GUI reflects the final state. - SET(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found") + SET(SDL2_LIBRARIES ${SDL2_LIBRARIES_TEMP} CACHE STRING "Where the SDL2 Library can be found") # Set the temp variable to INTERNAL so it is not seen in the CMake GUI - SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "") -ENDIF(SDL2_LIBRARY_TEMP) + SET(SDL2_LIBRARIES_TEMP "${SDL2_LIBRARIES_TEMP}" CACHE INTERNAL "") +ENDIF(SDL2_LIBRARIES_TEMP) INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARIES SDL2_INCLUDE_DIRS) diff --git a/src/platform/sdl/CMakeLists.txt b/src/platform/sdl/CMakeLists.txt index 6f3bdf5ed..12b803175 100644 --- a/src/platform/sdl/CMakeLists.txt +++ b/src/platform/sdl/CMakeLists.txt @@ -13,6 +13,12 @@ if (SDL_VERSION EQUAL "2") link_directories(${SDL2_LIBDIR}) set(SDL_VERSION_DEBIAN "2-2.0-0") set(SDL_FOUND ON PARENT_SCOPE) + + if (NOT SDL2MAIN_LIBRARY) + set(SDL2MAIN_LIBRARY "") + endif() + + set(SDLMAIN_LIBRARY ${SDL2MAIN_LIBRARY}) endif() endif() From 98d2671c6d90e662b50e676921ef431dc0b20979 Mon Sep 17 00:00:00 2001 From: Arves100 Date: Fri, 21 Jun 2019 00:21:25 +0200 Subject: [PATCH 19/50] Util: Removed broken dllexport symbol --- include/mgba-util/common.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/mgba-util/common.h b/include/mgba-util/common.h index cb6b35735..e268dbad5 100644 --- a/include/mgba-util/common.h +++ b/include/mgba-util/common.h @@ -222,7 +222,6 @@ typedef intptr_t ssize_t; #define _CONSTRUCTOR(FN, PRE) \ static void FN(void); \ __declspec(allocate(".CRT$XCU")) void (*_CONSTRUCTOR_ ## FN)(void) = FN; \ - __pragma(comment(linker,"/include:" PRE "_CONSTRUCTOR_" #FN)) \ static void FN(void) #ifdef _WIN64 #define CONSTRUCTOR(FN) _CONSTRUCTOR(FN, "") From 2d04d03d32aa433fba030cda907d1e2a7b9e6f79 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 22 Jun 2019 10:35:21 -0700 Subject: [PATCH 20/50] CMake: Fix Windows static build --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b4c617d89..e87a69dce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -785,6 +785,7 @@ source_group("Extra features" FILES ${FEATURE_SRC}) source_group("Third-party code" FILES ${THIRD_PARTY_SRC}) # Platform binaries +set(OS_DEFINES) if(DEFINED 3DS) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/platform/3ds ${CMAKE_CURRENT_BINARY_DIR}/3ds) endif() @@ -841,12 +842,13 @@ if(NOT SKIP_LIBRARY) if(BUILD_STATIC) add_library(${BINARY_NAME}-static STATIC ${SRC}) target_include_directories(${BINARY_NAME}-static BEFORE PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/include) - set_target_properties(${BINARY_NAME}-static PROPERTIES COMPILE_DEFINITIONS "${OS_DEFINES};${FEATURE_DEFINES};${FUNCTION_DEFINES}" COMPILE_OPTIONS "${FEATURE_FLAGS}") + set_target_properties(${BINARY_NAME}-static PROPERTIES COMPILE_DEFINITIONS "${OS_DEFINES};${FEATURE_DEFINES};${FUNCTION_DEFINES};BUILD_STATIC" COMPILE_OPTIONS "${FEATURE_FLAGS}") install(TARGETS ${BINARY_NAME}-static DESTINATION ${LIBDIR} COMPONENT lib${BINARY_NAME}) add_dependencies(${BINARY_NAME}-static version-info) endif() else() add_library(${BINARY_NAME} STATIC ${SRC}) + list(APPEND OS_DEFINES BUILD_STATIC) endif() file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util) From 3f044a5791166da2f05f1e72c8d6d06b6cd2d846 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 20 Jun 2019 12:30:08 -0700 Subject: [PATCH 21/50] Core: Add support for loading Libretro-style cht files --- CHANGES | 1 + include/mgba-util/string.h | 2 + include/mgba/core/cheats.h | 2 + src/core/cheats.c | 115 +++++++++++++++++++++++++++- src/platform/qt/CheatsView.cpp | 4 +- src/util/string.c | 63 ++++++++++++++- src/util/test/string-parser.c | 136 +++++++++++++++++++++++++++++++++ 7 files changed, 319 insertions(+), 4 deletions(-) create mode 100644 src/util/test/string-parser.c diff --git a/CHANGES b/CHANGES index d28e64d8b..80786cc0c 100644 --- a/CHANGES +++ b/CHANGES @@ -15,6 +15,7 @@ Features: - Switch: Option to use built-in brightness sensor for Boktai - Ports: Ability to enable or disable all SGB features (closes mgba.io/i/1205) - Ports: Ability to crop SGB borders off screen (closes mgba.io/i/1204) + - Cheats: Add support for loading Libretro-style cht files Emulation fixes: - GBA: All IRQs have 7 cycle delay (fixes mgba.io/i/539, mgba.io/i/1208) - GBA: Reset now reloads multiboot ROMs diff --git a/include/mgba-util/string.h b/include/mgba-util/string.h index 7e9465719..fe5f48f59 100644 --- a/include/mgba-util/string.h +++ b/include/mgba-util/string.h @@ -39,6 +39,8 @@ const char* hex4(const char* line, uint8_t* out); void rtrim(char* string); +ssize_t parseQuotedString(const char* unparsed, ssize_t unparsedLen, char* parsed, ssize_t parsedLen); + CXX_GUARD_END #endif diff --git a/include/mgba/core/cheats.h b/include/mgba/core/cheats.h index 32c7cad42..dbc94199f 100644 --- a/include/mgba/core/cheats.h +++ b/include/mgba/core/cheats.h @@ -100,6 +100,8 @@ void mCheatRemoveSet(struct mCheatDevice*, struct mCheatSet*); bool mCheatParseFile(struct mCheatDevice*, struct VFile*); bool mCheatSaveFile(struct mCheatDevice*, struct VFile*); +bool mCheatParseLibretroFile(struct mCheatDevice*, struct VFile*); + #if !defined(MINIMAL_CORE) || MINIMAL_CORE < 2 void mCheatAutosave(struct mCheatDevice*); #endif diff --git a/src/core/cheats.c b/src/core/cheats.c index 464ebfc39..92b6aa778 100644 --- a/src/core/cheats.c +++ b/src/core/cheats.c @@ -9,7 +9,8 @@ #include #include -#define MAX_LINE_LENGTH 128 +#define MAX_LINE_LENGTH 512 +#define MAX_CHEATS 1000 const uint32_t M_CHEAT_DEVICE_ID = 0xABADC0DE; @@ -191,6 +192,12 @@ bool mCheatParseFile(struct mCheatDevice* device, struct VFile* vf) { break; default: if (!set) { + if (strncmp(cheat, "cheats = ", 9) == 0) { + // This is in libretro format, switch over to that parser + vf->seek(vf, 0, SEEK_SET); + StringListDeinit(&directives); + return mCheatParseLibretroFile(device, vf); + } set = device->createSet(device, NULL); set->enabled = !nextDisabled; nextDisabled = false; @@ -211,6 +218,112 @@ bool mCheatParseFile(struct mCheatDevice* device, struct VFile* vf) { return true; } +bool mCheatParseLibretroFile(struct mCheatDevice* device, struct VFile* vf) { + char cheat[MAX_LINE_LENGTH]; + char parsed[MAX_LINE_LENGTH]; + struct mCheatSet* set = NULL; + unsigned long i = 0; + bool startFound = false; + + while (true) { + ssize_t bytesRead = vf->readline(vf, cheat, sizeof(cheat)); + if (bytesRead == 0) { + break; + } + if (bytesRead < 0) { + return false; + } + if (cheat[0] == '\n') { + continue; + } + if (strncmp(cheat, "cheat", 5) != 0) { + return false; + } + char* underscore = strchr(&cheat[5], '_'); + if (!underscore) { + if (!startFound && cheat[5] == 's') { + startFound = true; + char* eq = strchr(&cheat[6], '='); + if (!eq) { + return false; + } + ++eq; + while (isspace((int) eq[0])) { + if (eq[0] == '\0') { + return false; + } + ++eq; + } + + char* end; + unsigned long nCheats = strtoul(eq, &end, 10); + if (end[0] != '\0' && !isspace(end[0])) { + return false; + } + + if (nCheats > MAX_CHEATS) { + return false; + } + + while (nCheats > mCheatSetsSize(&device->cheats)) { + struct mCheatSet* newSet = device->createSet(device, NULL); + if (!newSet) { + return false; + } + mCheatAddSet(device, newSet); + } + continue; + } + return false; + } + char* underscore2; + i = strtoul(&cheat[5], &underscore2, 10); + if (underscore2 != underscore) { + return false; + } + ++underscore; + char* eq = strchr(underscore, '='); + if (!eq) { + return false; + } + ++eq; + while (isspace((int) eq[0])) { + if (eq[0] == '\0') { + return false; + } + ++eq; + } + + if (i >= mCheatSetsSize(&device->cheats)) { + return false; + } + set = *mCheatSetsGetPointer(&device->cheats, i); + + if (strncmp(underscore, "desc", 4) == 0) { + parseQuotedString(eq, strlen(eq), parsed, sizeof(parsed)); + mCheatSetRename(set, parsed); + } else if (strncmp(underscore, "enable", 6) == 0) { + set->enabled = strncmp(eq, "true\n", 5) == 0; + } else if (strncmp(underscore, "code", 4) == 0) { + parseQuotedString(eq, strlen(eq), parsed, sizeof(parsed)); + char* cur = parsed; + char* next; + while ((next = strchr(cur, '+'))) { + next[0] = '\0'; + mCheatAddLine(set, cur, 0); + cur = &next[1]; + } + mCheatAddLine(set, cur, 0); + + for (++i; i < mCheatSetsSize(&device->cheats); ++i) { + struct mCheatSet* newSet = *mCheatSetsGetPointer(&device->cheats, i); + newSet->copyProperties(newSet, set); + } + } + } + return true; +} + bool mCheatSaveFile(struct mCheatDevice* device, struct VFile* vf) { static const char lineStart[3] = "# "; static const char lineEnd = '\n'; diff --git a/src/platform/qt/CheatsView.cpp b/src/platform/qt/CheatsView.cpp index 315edcae1..4a631c932 100644 --- a/src/platform/qt/CheatsView.cpp +++ b/src/platform/qt/CheatsView.cpp @@ -109,14 +109,14 @@ bool CheatsView::eventFilter(QObject* object, QEvent* event) { } void CheatsView::load() { - QString filename = GBAApp::app()->getOpenFileName(this, tr("Select cheats file"), tr(("Cheats file (*.cheats *.cht *.clt)"))); + QString filename = GBAApp::app()->getOpenFileName(this, tr("Select cheats file"), tr(("Cheats file (*.cheats *.cht)"))); if (!filename.isEmpty()) { m_model.loadFile(filename); } } void CheatsView::save() { - QString filename = GBAApp::app()->getSaveFileName(this, tr("Select cheats file"), tr(("Cheats file (*.cheats *.cht *.clt)"))); + QString filename = GBAApp::app()->getSaveFileName(this, tr("Select cheats file"), tr(("Cheats file (*.cheats)"))); if (!filename.isEmpty()) { m_model.saveFile(filename); } diff --git a/src/util/string.c b/src/util/string.c index cef28e5cd..f3835f04b 100644 --- a/src/util/string.c +++ b/src/util/string.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2013-2015 Jeffrey Pfau +/* Copyright (c) 2013-2019 Jeffrey Pfau * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this @@ -373,3 +373,64 @@ void rtrim(char* string) { --end; } } + +ssize_t parseQuotedString(const char* unparsed, ssize_t unparsedLen, char* parsed, ssize_t parsedLen) { + memset(parsed, 0, parsedLen); + bool escaped = false; + char start = '\0'; + ssize_t len = 0; + ssize_t i; + for (i = 0; i < unparsedLen && len < parsedLen; ++i) { + if (i == 0) { + switch (unparsed[0]) { + case '"': + case '\'': + start = unparsed[0]; + break; + default: + return -1; + } + continue; + } + if (escaped) { + switch (unparsed[i]) { + case 'n': + parsed[len] = '\n'; + break; + case 'r': + parsed[len] = '\r'; + break; + case '\\': + parsed[len] = '\\'; + break; + case '\'': + parsed[len] = '\''; + break; + case '"': + parsed[len] = '"'; + break; + default: + return -1; + } + escaped = false; + ++len; + continue; + } + if (unparsed[i] == start) { + return len; + } + switch (unparsed[i]) { + case '\\': + escaped = true; + break; + case '\n': + case '\r': + return len; + default: + parsed[len] = unparsed[i]; + ++len; + break; + } + } + return -1; +} \ No newline at end of file diff --git a/src/util/test/string-parser.c b/src/util/test/string-parser.c new file mode 100644 index 000000000..38650d0c9 --- /dev/null +++ b/src/util/test/string-parser.c @@ -0,0 +1,136 @@ +/* Copyright (c) 2013-2019 Jeffrey Pfau + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include "util/test/suite.h" + +#include + +M_TEST_DEFINE(nullString) { + const char* unparsed = ""; + char parsed[2]; + assert_int_equal(parseQuotedString(unparsed, 1, parsed, sizeof(parsed)), -1); +} + +M_TEST_DEFINE(emptyString2) { + const char* unparsed = "\"\""; + char parsed[2]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), 0); +} + +M_TEST_DEFINE(emptyString) { + const char* unparsed = "''"; + char parsed[2]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), 0); +} + +M_TEST_DEFINE(plainString) { + const char* unparsed = "\"plain\""; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), strlen("plain")); + assert_string_equal(parsed, "plain"); +} + +M_TEST_DEFINE(plainString2) { + const char* unparsed = "\"plain\""; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed), parsed, sizeof(parsed)), strlen("plain")); + assert_string_equal(parsed, "plain"); +} + +M_TEST_DEFINE(trailingString) { + const char* unparsed = "\"trailing\"T"; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), strlen("trailing")); + assert_string_equal(parsed, "trailing"); +} + +M_TEST_DEFINE(leadingString) { + const char* unparsed = "L\"leading\""; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), -1); +} + +M_TEST_DEFINE(backslashString) { + const char* unparsed = "\"back\\\\slash\""; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), strlen("back\\slash")); + assert_string_equal(parsed, "back\\slash"); +} + +M_TEST_DEFINE(doubleBackslashString) { + const char* unparsed = "\"back\\\\\\\\slash\""; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), strlen("back\\\\slash")); + assert_string_equal(parsed, "back\\\\slash"); +} + +M_TEST_DEFINE(escapeCharsString) { + const char* unparsed = "\"\\\"\\'\\n\\r\\\\\""; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), strlen("\"'\n\r\\")); + assert_string_equal(parsed, "\"'\n\r\\"); +} + +M_TEST_DEFINE(invalidEscapeCharString) { + const char* unparsed = "\"\\z\""; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), -1); +} + +M_TEST_DEFINE(overflowString) { + const char* unparsed = "\"longstring\""; + char parsed[4]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), -1); +} + +M_TEST_DEFINE(unclosedString) { + const char* unparsed = "\"forever"; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), -1); +} + +M_TEST_DEFINE(unclosedString2) { + const char* unparsed = "\"forever"; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, 4, parsed, sizeof(parsed)), -1); +} + +M_TEST_DEFINE(unclosedBackslashString) { + const char* unparsed = "\"backslash\\"; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed), parsed, sizeof(parsed)), -1); +} + +M_TEST_DEFINE(unclosedBackslashString2) { + const char* unparsed = "\"backslash\\"; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), -1); +} + +M_TEST_DEFINE(highCharacterString) { + const char* unparsed = "\"\200\""; + char parsed[32]; + assert_int_equal(parseQuotedString(unparsed, strlen(unparsed) + 1, parsed, sizeof(parsed)), 1); + assert_string_equal(parsed, "\200"); +} + +M_TEST_SUITE_DEFINE(StringParser, + cmocka_unit_test(nullString), + cmocka_unit_test(emptyString), + cmocka_unit_test(emptyString2), + cmocka_unit_test(plainString), + cmocka_unit_test(plainString2), + cmocka_unit_test(leadingString), + cmocka_unit_test(trailingString), + cmocka_unit_test(backslashString), + cmocka_unit_test(doubleBackslashString), + cmocka_unit_test(escapeCharsString), + cmocka_unit_test(invalidEscapeCharString), + cmocka_unit_test(overflowString), + cmocka_unit_test(unclosedString), + cmocka_unit_test(unclosedString2), + cmocka_unit_test(unclosedBackslashString), + cmocka_unit_test(unclosedBackslashString2), + cmocka_unit_test(highCharacterString)) From f3ec9db9d7c8988fad58cbd650697aa87f3e29fb Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 22 Jun 2019 13:03:53 -0700 Subject: [PATCH 22/50] Core: Fix crash when exiting game with cheats loaded --- CHANGES | 1 + src/core/cheats.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 80786cc0c..b44079e20 100644 --- a/CHANGES +++ b/CHANGES @@ -33,6 +33,7 @@ Other fixes: - Core: Fix crashes if core directories aren't set - Qt: Fix menu bar staying hidden in full screen (fixes mgba.io/i/317) - GB SIO: Fix lockstep failing games aren't reloaded + - Core: Fix crash when exiting game with cheats loaded Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/core/cheats.c b/src/core/cheats.c index 92b6aa778..d8b6fa7b0 100644 --- a/src/core/cheats.c +++ b/src/core/cheats.c @@ -83,11 +83,11 @@ void mCheatSetInit(struct mCheatSet* set, const char* name) { } void mCheatSetDeinit(struct mCheatSet* set) { - mCheatListDeinit(&set->list); size_t i; for (i = 0; i < StringListSize(&set->lines); ++i) { free(*StringListGetPointer(&set->lines, i)); } + mCheatListDeinit(&set->list); if (set->name) { free(set->name); } From 81098060aa14903062555bdd3d7a2ec50733344f Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 22 Jun 2019 13:04:34 -0700 Subject: [PATCH 23/50] GBA Cheats: Fix PARv3 Thumb hooks --- CHANGES | 1 + src/gba/cheats/parv3.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index b44079e20..c452e9fb7 100644 --- a/CHANGES +++ b/CHANGES @@ -34,6 +34,7 @@ Other fixes: - Qt: Fix menu bar staying hidden in full screen (fixes mgba.io/i/317) - GB SIO: Fix lockstep failing games aren't reloaded - Core: Fix crash when exiting game with cheats loaded + - GBA Cheats: Fix PARv3 Thumb hooks Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/gba/cheats/parv3.c b/src/gba/cheats/parv3.c index 0d74aaed4..4f3a89310 100644 --- a/src/gba/cheats/parv3.c +++ b/src/gba/cheats/parv3.c @@ -284,7 +284,7 @@ bool GBACheatAddProActionReplayRaw(struct GBACheatSet* cheats, uint32_t op1, uin return false; } cheats->hook = malloc(sizeof(*cheats->hook)); - cheats->hook->address = BASE_CART0 | (op1 & (SIZE_CART0 - 1)); + cheats->hook->address = BASE_CART0 | (op1 & (SIZE_CART0 - 2)); cheats->hook->mode = MODE_THUMB; cheats->hook->refs = 1; cheats->hook->reentries = 0; From 9f5adf2dccff8e3a7a6703911fcc1a03bce4f616 Mon Sep 17 00:00:00 2001 From: Arves100 Date: Sun, 23 Jun 2019 03:06:32 +0200 Subject: [PATCH 24/50] Qt: Simplified search of Qt5 modules --- src/platform/qt/CMakeLists.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/platform/qt/CMakeLists.txt b/src/platform/qt/CMakeLists.txt index 49be1cda7..6df091760 100644 --- a/src/platform/qt/CMakeLists.txt +++ b/src/platform/qt/CMakeLists.txt @@ -22,10 +22,7 @@ endif() set(CMAKE_AUTOMOC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) -find_package(Qt5Multimedia) -find_package(Qt5Network) -find_package(Qt5OpenGL) -find_package(Qt5Widgets) +find_package(Qt5 COMPONENTS Core Widgets OpenGL Network Multimedia) if(NOT BUILD_GL AND NOT BUILD_GLES2) message(WARNING "OpenGL is recommended to build the Qt port") From 0a06f4dad025ed321de45acfb16d7a67c3b83a87 Mon Sep 17 00:00:00 2001 From: Arves100 Date: Sun, 23 Jun 2019 03:35:23 +0200 Subject: [PATCH 25/50] All: Added exports for qt --- include/mgba/core/log.h | 3 ++- include/mgba/gba/interface.h | 3 ++- include/mgba/internal/gb/io.h | 3 ++- include/mgba/internal/gba/io.h | 2 +- include/mgba/internal/gba/video.h | 3 ++- src/gb/io.c | 2 +- src/gba/hardware.c | 2 +- src/gba/video.c | 2 +- 8 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/mgba/core/log.h b/include/mgba/core/log.h index d7491f4cf..71614cf2c 100644 --- a/include/mgba/core/log.h +++ b/include/mgba/core/log.h @@ -7,6 +7,7 @@ #define M_LOG_H #include +#include CXX_GUARD_START @@ -65,7 +66,7 @@ void mLog(int category, enum mLogLevel level, const char* format, ...); _mLOG_CAT_ ## CATEGORY = mLogGenerateCategory(NAME, ID); \ } -mLOG_DECLARE_CATEGORY(STATUS) +MGBA_EXPORT mLOG_DECLARE_CATEGORY(STATUS) CXX_GUARD_END diff --git a/include/mgba/gba/interface.h b/include/mgba/gba/interface.h index 930faa925..730d651e2 100644 --- a/include/mgba/gba/interface.h +++ b/include/mgba/gba/interface.h @@ -7,6 +7,7 @@ #define GBA_INTERFACE_H #include +#include CXX_GUARD_START @@ -39,7 +40,7 @@ struct GBAAudio; struct GBASIO; struct GBAVideoRenderer; -extern const int GBA_LUX_LEVELS[10]; +extern MGBA_EXPORT const int GBA_LUX_LEVELS[10]; enum { mPERIPH_GBA_LUMINANCE = 0x1000, diff --git a/include/mgba/internal/gb/io.h b/include/mgba/internal/gb/io.h index 15172ff0f..b28a7cc01 100644 --- a/include/mgba/internal/gb/io.h +++ b/include/mgba/internal/gb/io.h @@ -7,6 +7,7 @@ #define GB_IO_H #include +#include CXX_GUARD_START @@ -108,7 +109,7 @@ enum GBIORegisters { REG_MAX = 0x100 }; -extern const char* const GBIORegisterNames[]; +extern MGBA_EXPORT const char* const GBIORegisterNames[]; struct GB; void GBIOInit(struct GB* gb); diff --git a/include/mgba/internal/gba/io.h b/include/mgba/internal/gba/io.h index 959babf05..9875061f3 100644 --- a/include/mgba/internal/gba/io.h +++ b/include/mgba/internal/gba/io.h @@ -161,7 +161,7 @@ enum GBAIORegisters { mLOG_DECLARE_CATEGORY(GBA_IO); -extern const char* const GBAIORegisterNames[]; +extern MGBA_EXPORT const char* const GBAIORegisterNames[]; struct GBA; void GBAIOInit(struct GBA* gba); diff --git a/include/mgba/internal/gba/video.h b/include/mgba/internal/gba/video.h index ea65699aa..4fe4d111e 100644 --- a/include/mgba/internal/gba/video.h +++ b/include/mgba/internal/gba/video.h @@ -7,6 +7,7 @@ #define GBA_VIDEO_H #include +#include CXX_GUARD_START @@ -228,7 +229,7 @@ struct GBASerializedState; void GBAVideoSerialize(const struct GBAVideo* video, struct GBASerializedState* state); void GBAVideoDeserialize(struct GBAVideo* video, const struct GBASerializedState* state); -extern const int GBAVideoObjSizes[16][2]; +extern MGBA_EXPORT const int GBAVideoObjSizes[16][2]; CXX_GUARD_END diff --git a/src/gb/io.c b/src/gb/io.c index c7b08dd03..e008dbb26 100644 --- a/src/gb/io.c +++ b/src/gb/io.c @@ -11,7 +11,7 @@ mLOG_DEFINE_CATEGORY(GB_IO, "GB I/O", "gb.io"); -const char* const GBIORegisterNames[] = { +MGBA_EXPORT const char* const GBIORegisterNames[] = { [REG_JOYP] = "JOYP", [REG_SB] = "SB", [REG_SC] = "SC", diff --git a/src/gba/hardware.c b/src/gba/hardware.c index dedbd9af3..593386bef 100644 --- a/src/gba/hardware.c +++ b/src/gba/hardware.c @@ -13,7 +13,7 @@ mLOG_DEFINE_CATEGORY(GBA_HW, "GBA Pak Hardware", "gba.hardware"); -const int GBA_LUX_LEVELS[10] = { 5, 11, 18, 27, 42, 62, 84, 109, 139, 183 }; +MGBA_EXPORT const int GBA_LUX_LEVELS[10] = { 5, 11, 18, 27, 42, 62, 84, 109, 139, 183 }; static void _readPins(struct GBACartridgeHardware* hw); static void _outputPins(struct GBACartridgeHardware* hw, unsigned pins); diff --git a/src/gba/video.c b/src/gba/video.c index 7660e0b04..a05d6a7f0 100644 --- a/src/gba/video.c +++ b/src/gba/video.c @@ -33,7 +33,7 @@ static void GBAVideoDummyRendererPutPixels(struct GBAVideoRenderer* renderer, si static void _startHblank(struct mTiming*, void* context, uint32_t cyclesLate); static void _startHdraw(struct mTiming*, void* context, uint32_t cyclesLate); -const int GBAVideoObjSizes[16][2] = { +MGBA_EXPORT const int GBAVideoObjSizes[16][2] = { { 8, 8 }, { 16, 16 }, { 32, 32 }, From f98da2ab3ff0a8c7171c256ead46f819536618e2 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 22 Jun 2019 22:02:10 -0700 Subject: [PATCH 26/50] Qt: Fix disabling audio channels --- src/platform/qt/Window.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index d8b64b5cb..19ff6ffab 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -787,7 +787,7 @@ void Window::gameStarted() { if (nAudio) { for (size_t i = 0; i < nAudio; ++i) { Action* action = m_actions.addBooleanAction(audioChannels[i].visibleName, QString("audioChannel.%1").arg(audioChannels[i].internalName), [this, audioChannels, i](bool enable) { - m_controller->thread()->core->enableVideoLayer(m_controller->thread()->core, audioChannels[i].id, enable); + m_controller->thread()->core->enableAudioChannel(m_controller->thread()->core, audioChannels[i].id, enable); }, "audioChannels"); action->setActive(true); } From 68fc62073d2d6705613439c81d278c3070f1fa96 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 22 Jun 2019 23:17:58 -0700 Subject: [PATCH 27/50] GB Audio: Only reset channel 3 sample in DMG mode --- CHANGES | 1 + src/gb/audio.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index c452e9fb7..0fed364fe 100644 --- a/CHANGES +++ b/CHANGES @@ -25,6 +25,7 @@ Emulation fixes: - GB I/O: Filter IE top bits properly (fixes mgba.io/i/1329) - GBA Video: Fix wrapped sprite mosaic clamping (fixes mgba.io/i/1432) - GBA Memory: Fix STM to VRAM (fixes mgba.io/i/1430) + - GB Audio: Only reset channel 3 sample in DMG mode Other fixes: - Qt: Fix some Qt display driver race conditions - Core: Improved lockstep driver reliability (Le Hoang Quyen) diff --git a/src/gb/audio.c b/src/gb/audio.c index 08ba1fa9e..01e66802b 100644 --- a/src/gb/audio.c +++ b/src/gb/audio.c @@ -329,7 +329,9 @@ void GBAudioWriteNR34(struct GBAudio* audio, uint8_t value) { } } audio->ch3.window = 0; - audio->ch3.sample = 0; + if (audio->style == GB_AUDIO_DMG) { + audio->ch3.sample = 0; + } } mTimingDeschedule(audio->timing, &audio->ch3Fade); mTimingDeschedule(audio->timing, &audio->ch3Event); From 6d53c44422fad289cef0ed67bbebb25433c4e8bf Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sat, 22 Jun 2019 23:15:43 -0700 Subject: [PATCH 28/50] GB Audio: Sample inactive channels (fixes #1455, fixes #1456) --- CHANGES | 1 + src/gb/audio.c | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 0fed364fe..5b4a414a9 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,7 @@ Emulation fixes: - GBA Video: Fix wrapped sprite mosaic clamping (fixes mgba.io/i/1432) - GBA Memory: Fix STM to VRAM (fixes mgba.io/i/1430) - GB Audio: Only reset channel 3 sample in DMG mode + - GB Audio: Sample inactive channels (fixes mgba.io/i/1455, mgba.io/i/1456) Other fixes: - Qt: Fix some Qt display driver race conditions - Core: Improved lockstep driver reliability (Le Hoang Quyen) diff --git a/src/gb/audio.c b/src/gb/audio.c index 01e66802b..633739c00 100644 --- a/src/gb/audio.c +++ b/src/gb/audio.c @@ -598,7 +598,7 @@ void GBAudioSamplePSG(struct GBAudio* audio, int16_t* left, int16_t* right) { int sampleLeft = dcOffset; int sampleRight = dcOffset; - if (audio->playingCh1 && !audio->forceDisableCh[0]) { + if (!audio->forceDisableCh[0]) { if (audio->ch1Left) { sampleLeft += audio->ch1.sample; } @@ -608,7 +608,7 @@ void GBAudioSamplePSG(struct GBAudio* audio, int16_t* left, int16_t* right) { } } - if (audio->playingCh2 && !audio->forceDisableCh[1]) { + if (!audio->forceDisableCh[1]) { if (audio->ch2Left) { sampleLeft += audio->ch2.sample; } @@ -618,7 +618,7 @@ void GBAudioSamplePSG(struct GBAudio* audio, int16_t* left, int16_t* right) { } } - if (audio->playingCh3 && !audio->forceDisableCh[2]) { + if (!audio->forceDisableCh[2]) { if (audio->ch3Left) { sampleLeft += audio->ch3.sample; } @@ -628,7 +628,7 @@ void GBAudioSamplePSG(struct GBAudio* audio, int16_t* left, int16_t* right) { } } - if (audio->playingCh4 && !audio->forceDisableCh[3]) { + if (!audio->forceDisableCh[3]) { int8_t sample = _coalesceNoiseChannel(&audio->ch4); if (audio->ch4Left) { sampleLeft += sample; From 46f8dffcd7a48c6f9c385e2d4d5645cdf3a046de Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 23 Jun 2019 12:42:38 -0700 Subject: [PATCH 29/50] CMake: Move export header generation (fixes #1464) --- CMakeLists.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e87a69dce..0adb3c57d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -851,10 +851,6 @@ if(NOT SKIP_LIBRARY) list(APPEND OS_DEFINES BUILD_STATIC) endif() - file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util) - include(GenerateExportHeader) - generate_export_header(${BINARY_NAME} BASE_NAME mgba STATIC_DEFINE BUILD_STATIC EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util/dllexports.h) - target_include_directories(${BINARY_NAME} BEFORE PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_BINARY_DIR}/include) set_target_properties(${BINARY_NAME} PROPERTIES VERSION ${LIB_VERSION_STRING} SOVERSION ${LIB_VERSION_ABI} COMPILE_DEFINITIONS "${OS_DEFINES};${FEATURE_DEFINES};${FUNCTION_DEFINES}" COMPILE_OPTIONS "${FEATURE_FLAGS}") add_dependencies(${BINARY_NAME} version-info) @@ -999,8 +995,11 @@ if(BUILD_EXAMPLE) endif() endif() +include(GenerateExportHeader) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/mgba) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/core/flags.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/mgba/flags.h) +generate_export_header(${BINARY_NAME} BASE_NAME ${BINARY_NAME} STATIC_DEFINE BUILD_STATIC EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util/dllexports.h) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/mgba DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${BINARY_NAME}-dev FILES_MATCHING PATTERN "*.h") install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/mgba-util DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${BINARY_NAME}-dev FILES_MATCHING PATTERN "*.h") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/mgba/flags.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mgba COMPONENT ${BINARY_NAME}-dev) From e40617f8505102c1b62953c8882b8997ae93cffe Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 23 Jun 2019 12:46:14 -0700 Subject: [PATCH 30/50] CMake: Libepoxy is only needed on Windows if building the library or frontends --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0adb3c57d..3bb4585d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -703,7 +703,7 @@ elseif(BUILD_GLES2) set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS},libgles2") endif() -if (WIN32 AND NOT USE_EPOXY) +if(WIN32 AND NOT SKIP_LIBRARY AND NOT USE_EPOXY) message(FATAL_ERROR "Windows requires epoxy module!") endif() From fb72b70505dd649af912c4bbf74ad4ff06d27eb8 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 24 Jun 2019 08:30:28 -0700 Subject: [PATCH 31/50] All: Don't require dllexports.h on standalone builds (really fixes #1464) --- CMakeLists.txt | 11 ++++++----- include/mgba-util/common.h | 7 +++++++ include/mgba/core/log.h | 1 - include/mgba/core/version.h | 4 ++++ include/mgba/gba/interface.h | 1 - include/mgba/internal/gb/io.h | 1 - include/mgba/internal/gba/input.h | 1 - include/mgba/internal/gba/video.h | 1 - 8 files changed, 17 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3bb4585d8..6ee4c2a70 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -855,6 +855,10 @@ if(NOT SKIP_LIBRARY) set_target_properties(${BINARY_NAME} PROPERTIES VERSION ${LIB_VERSION_STRING} SOVERSION ${LIB_VERSION_ABI} COMPILE_DEFINITIONS "${OS_DEFINES};${FEATURE_DEFINES};${FUNCTION_DEFINES}" COMPILE_OPTIONS "${FEATURE_FLAGS}") add_dependencies(${BINARY_NAME} version-info) + include(GenerateExportHeader) + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util) + generate_export_header(${BINARY_NAME} BASE_NAME ${BINARY_NAME} STATIC_DEFINE BUILD_STATIC EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util/dllexports.h) + target_link_libraries(${BINARY_NAME} ${DEBUGGER_LIB} ${DEPENDENCY_LIB} ${OS_LIB}) install(TARGETS ${BINARY_NAME} LIBRARY DESTINATION ${LIBDIR} COMPONENT lib${BINARY_NAME} NAMELINK_SKIP ARCHIVE DESTINATION ${LIBDIR} RUNTIME DESTINATION ${LIBDIR} COMPONENT lib${BINARY_NAME}) if(UNIX AND NOT APPLE AND NOT HAIKU) @@ -906,7 +910,7 @@ if(BUILD_LIBRETRO) file(GLOB RETRO_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/platform/libretro/*.c) add_library(${BINARY_NAME}_libretro SHARED ${CORE_SRC} ${RETRO_SRC}) add_dependencies(${BINARY_NAME}_libretro version-info) - set_target_properties(${BINARY_NAME}_libretro PROPERTIES PREFIX "" COMPILE_DEFINITIONS "__LIBRETRO__;COLOR_16_BIT;COLOR_5_6_5;DISABLE_THREADING;${OS_DEFINES};${FUNCTION_DEFINES};MINIMAL_CORE=2") + set_target_properties(${BINARY_NAME}_libretro PROPERTIES PREFIX "" COMPILE_DEFINITIONS "__LIBRETRO__;COLOR_16_BIT;COLOR_5_6_5;DISABLE_THREADING;MGBA_STANDALONE;${OS_DEFINES};${FUNCTION_DEFINES};MINIMAL_CORE=2") target_link_libraries(${BINARY_NAME}_libretro ${OS_LIB}) if(MSVC) install(TARGETS ${BINARY_NAME}_libretro RUNTIME DESTINATION ${LIBRETRO_LIBDIR} COMPONENT ${BINARY_NAME}_libretro) @@ -925,7 +929,7 @@ if(BUILD_OPENEMU) BUNDLE TRUE BUNDLE_EXTENSION oecoreplugin OUTPUT_NAME ${PROJECT_NAME} - COMPILE_DEFINITIONS "DISABLE_THREADING;${OS_DEFINES};${FUNCTION_DEFINES};MINIMAL_CORE=1") + COMPILE_DEFINITIONS "DISABLE_THREADING;MGBA_STANDALONE;${OS_DEFINES};${FUNCTION_DEFINES};MINIMAL_CORE=1") target_link_libraries(${BINARY_NAME}-openemu ${OS_LIB} ${FOUNDATION} ${OPENEMUBASE}) install(TARGETS ${BINARY_NAME}-openemu LIBRARY DESTINATION ${OE_LIBDIR} COMPONENT ${BINARY_NAME}.oecoreplugin NAMELINK_SKIP) endif() @@ -995,11 +999,8 @@ if(BUILD_EXAMPLE) endif() endif() -include(GenerateExportHeader) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/mgba) -file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/core/flags.h.in ${CMAKE_CURRENT_BINARY_DIR}/include/mgba/flags.h) -generate_export_header(${BINARY_NAME} BASE_NAME ${BINARY_NAME} STATIC_DEFINE BUILD_STATIC EXPORT_FILE_NAME ${CMAKE_CURRENT_BINARY_DIR}/include/mgba-util/dllexports.h) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/mgba DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${BINARY_NAME}-dev FILES_MATCHING PATTERN "*.h") install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/mgba-util DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT ${BINARY_NAME}-dev FILES_MATCHING PATTERN "*.h") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/mgba/flags.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/mgba COMPONENT ${BINARY_NAME}-dev) diff --git a/include/mgba-util/common.h b/include/mgba-util/common.h index e268dbad5..1b31bfccb 100644 --- a/include/mgba-util/common.h +++ b/include/mgba-util/common.h @@ -65,6 +65,13 @@ typedef intptr_t ssize_t; #include #endif +#ifndef MGBA_STANDALONE +#include +#else +#define MGBA_EXPORT +#define MGBA_NO_EXPORT +#endif + #ifndef SSIZE_MAX #define SSIZE_MAX ((ssize_t) (SIZE_MAX >> 1)) #endif diff --git a/include/mgba/core/log.h b/include/mgba/core/log.h index 71614cf2c..e2ac55e4b 100644 --- a/include/mgba/core/log.h +++ b/include/mgba/core/log.h @@ -7,7 +7,6 @@ #define M_LOG_H #include -#include CXX_GUARD_START diff --git a/include/mgba/core/version.h b/include/mgba/core/version.h index b261ab6d3..7749723c1 100644 --- a/include/mgba/core/version.h +++ b/include/mgba/core/version.h @@ -10,7 +10,11 @@ extern "C" { #endif +#ifdef MGBA_STANDALONE +#define MGBA_EXPORT +#else #include +#endif extern MGBA_EXPORT const char* const gitCommit; extern MGBA_EXPORT const char* const gitCommitShort; diff --git a/include/mgba/gba/interface.h b/include/mgba/gba/interface.h index 730d651e2..33c7a8e88 100644 --- a/include/mgba/gba/interface.h +++ b/include/mgba/gba/interface.h @@ -7,7 +7,6 @@ #define GBA_INTERFACE_H #include -#include CXX_GUARD_START diff --git a/include/mgba/internal/gb/io.h b/include/mgba/internal/gb/io.h index b28a7cc01..1df09da2f 100644 --- a/include/mgba/internal/gb/io.h +++ b/include/mgba/internal/gb/io.h @@ -7,7 +7,6 @@ #define GB_IO_H #include -#include CXX_GUARD_START diff --git a/include/mgba/internal/gba/input.h b/include/mgba/internal/gba/input.h index 179e935f4..cdfde6e1f 100644 --- a/include/mgba/internal/gba/input.h +++ b/include/mgba/internal/gba/input.h @@ -7,7 +7,6 @@ #define GBA_INPUT_H #include -#include CXX_GUARD_START diff --git a/include/mgba/internal/gba/video.h b/include/mgba/internal/gba/video.h index 4fe4d111e..77ff3cf0e 100644 --- a/include/mgba/internal/gba/video.h +++ b/include/mgba/internal/gba/video.h @@ -7,7 +7,6 @@ #define GBA_VIDEO_H #include -#include CXX_GUARD_START From 06d407f130ca454bc23668051a7b73a84b9c1dd7 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 24 Jun 2019 09:05:38 -0700 Subject: [PATCH 32/50] GB Video: Increment BCPS/OCPS even in mode 3 (fixes #1462) --- CHANGES | 1 + src/gb/io.c | 4 ++-- src/gb/video.c | 32 ++++++++++++++++++-------------- 3 files changed, 21 insertions(+), 16 deletions(-) diff --git a/CHANGES b/CHANGES index 5b4a414a9..3a5e1033b 100644 --- a/CHANGES +++ b/CHANGES @@ -27,6 +27,7 @@ Emulation fixes: - GBA Memory: Fix STM to VRAM (fixes mgba.io/i/1430) - GB Audio: Only reset channel 3 sample in DMG mode - GB Audio: Sample inactive channels (fixes mgba.io/i/1455, mgba.io/i/1456) + - GB Video: Increment BCPS/OCPS even in mode 3 (fixes mgba.io/i/1462) Other fixes: - Qt: Fix some Qt display driver race conditions - Core: Improved lockstep driver reliability (Le Hoang Quyen) diff --git a/src/gb/io.c b/src/gb/io.c index e008dbb26..2c4b9b4b3 100644 --- a/src/gb/io.c +++ b/src/gb/io.c @@ -499,8 +499,8 @@ void GBIOWrite(struct GB* gb, unsigned address, uint8_t value) { case REG_BCPD: if (gb->video.mode != 3) { GBVideoProcessDots(&gb->video, 0); - GBVideoWritePalette(&gb->video, address, value); } + GBVideoWritePalette(&gb->video, address, value); return; case REG_OCPS: gb->video.ocpIndex = value & 0x3F; @@ -510,8 +510,8 @@ void GBIOWrite(struct GB* gb, unsigned address, uint8_t value) { case REG_OCPD: if (gb->video.mode != 3) { GBVideoProcessDots(&gb->video, 0); - GBVideoWritePalette(&gb->video, address, value); } + GBVideoWritePalette(&gb->video, address, value); return; case REG_SVBK: GBMemorySwitchWramBank(&gb->memory, value); diff --git a/src/gb/video.c b/src/gb/video.c index cfe80f913..020889ca9 100644 --- a/src/gb/video.c +++ b/src/gb/video.c @@ -505,14 +505,16 @@ void GBVideoWritePalette(struct GBVideo* video, uint16_t address, uint8_t value) } else { switch (address) { case REG_BCPD: - if (video->bcpIndex & 1) { - video->palette[video->bcpIndex >> 1] &= 0x00FF; - video->palette[video->bcpIndex >> 1] |= value << 8; - } else { - video->palette[video->bcpIndex >> 1] &= 0xFF00; - video->palette[video->bcpIndex >> 1] |= value; + if (video->mode != 3) { + if (video->bcpIndex & 1) { + video->palette[video->bcpIndex >> 1] &= 0x00FF; + video->palette[video->bcpIndex >> 1] |= value << 8; + } else { + video->palette[video->bcpIndex >> 1] &= 0xFF00; + video->palette[video->bcpIndex >> 1] |= value; + } + video->renderer->writePalette(video->renderer, video->bcpIndex >> 1, video->palette[video->bcpIndex >> 1]); } - video->renderer->writePalette(video->renderer, video->bcpIndex >> 1, video->palette[video->bcpIndex >> 1]); if (video->bcpIncrement) { ++video->bcpIndex; video->bcpIndex &= 0x3F; @@ -522,14 +524,16 @@ void GBVideoWritePalette(struct GBVideo* video, uint16_t address, uint8_t value) video->p->memory.io[REG_BCPD] = video->palette[video->bcpIndex >> 1] >> (8 * (video->bcpIndex & 1)); break; case REG_OCPD: - if (video->ocpIndex & 1) { - video->palette[8 * 4 + (video->ocpIndex >> 1)] &= 0x00FF; - video->palette[8 * 4 + (video->ocpIndex >> 1)] |= value << 8; - } else { - video->palette[8 * 4 + (video->ocpIndex >> 1)] &= 0xFF00; - video->palette[8 * 4 + (video->ocpIndex >> 1)] |= value; + if (video->mode != 3) { + if (video->ocpIndex & 1) { + video->palette[8 * 4 + (video->ocpIndex >> 1)] &= 0x00FF; + video->palette[8 * 4 + (video->ocpIndex >> 1)] |= value << 8; + } else { + video->palette[8 * 4 + (video->ocpIndex >> 1)] &= 0xFF00; + video->palette[8 * 4 + (video->ocpIndex >> 1)] |= value; + } + video->renderer->writePalette(video->renderer, 8 * 4 + (video->ocpIndex >> 1), video->palette[8 * 4 + (video->ocpIndex >> 1)]); } - video->renderer->writePalette(video->renderer, 8 * 4 + (video->ocpIndex >> 1), video->palette[8 * 4 + (video->ocpIndex >> 1)]); if (video->ocpIncrement) { ++video->ocpIndex; video->ocpIndex &= 0x3F; From 51e70703023773fbe37a527c13c3df9f9fc05c69 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 24 Jun 2019 09:15:35 -0700 Subject: [PATCH 33/50] GB Audio: Deschedule channel 3 when disabled (fixes #1463) --- CHANGES | 1 + src/gb/audio.c | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 3a5e1033b..a2b844363 100644 --- a/CHANGES +++ b/CHANGES @@ -28,6 +28,7 @@ Emulation fixes: - GB Audio: Only reset channel 3 sample in DMG mode - GB Audio: Sample inactive channels (fixes mgba.io/i/1455, mgba.io/i/1456) - GB Video: Increment BCPS/OCPS even in mode 3 (fixes mgba.io/i/1462) + - GB Audio: Deschedule channel 3 when disabled (fixes mgba.io/i/1463) Other fixes: - Qt: Fix some Qt display driver race conditions - Core: Improved lockstep driver reliability (Le Hoang Quyen) diff --git a/src/gb/audio.c b/src/gb/audio.c index 633739c00..b4c745404 100644 --- a/src/gb/audio.c +++ b/src/gb/audio.c @@ -279,6 +279,7 @@ void GBAudioWriteNR24(struct GBAudio* audio, uint8_t value) { void GBAudioWriteNR30(struct GBAudio* audio, uint8_t value) { audio->ch3.enable = GBAudioRegisterBankGetEnable(value); if (!audio->ch3.enable) { + mTimingDeschedule(audio->timing, &audio->ch3Event); audio->playingCh3 = false; *audio->nr52 &= ~0x0004; } From ba547b26d1c645b6f62739f01d7194794cca6949 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 24 Jun 2019 13:15:37 -0700 Subject: [PATCH 34/50] mGUI: Fix crash if last loaded ROM directory disappears (fixes #1466) --- CHANGES | 1 + src/feature/gui/gui-runner.c | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index a2b844363..4aad6498f 100644 --- a/CHANGES +++ b/CHANGES @@ -39,6 +39,7 @@ Other fixes: - GB SIO: Fix lockstep failing games aren't reloaded - Core: Fix crash when exiting game with cheats loaded - GBA Cheats: Fix PARv3 Thumb hooks + - mGUI: Fix crash if last loaded ROM directory disappears (fixes mgba.io/i/1466) Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/feature/gui/gui-runner.c b/src/feature/gui/gui-runner.c index 038d30a3c..af6584ee0 100644 --- a/src/feature/gui/gui-runner.c +++ b/src/feature/gui/gui-runner.c @@ -212,8 +212,12 @@ void mGUIInit(struct mGUIRunner* runner, const char* port) { const char* lastPath = mCoreConfigGetValue(&runner->config, "lastDirectory"); if (lastPath) { - strncpy(runner->params.currentPath, lastPath, PATH_MAX - 1); - runner->params.currentPath[PATH_MAX - 1] = '\0'; + struct VDir* dir = VDirOpen(lastPath); + if (dir) { + dir->close(dir); + strncpy(runner->params.currentPath, lastPath, PATH_MAX - 1); + runner->params.currentPath[PATH_MAX - 1] = '\0'; + } } #ifndef DISABLE_THREADING From aead90a2c14949fbf063a8ef210867a949f9e437 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 24 Jun 2019 14:02:56 -0700 Subject: [PATCH 35/50] Windows: Fix ATOMIC_*_PTR in MSVC --- include/mgba-util/common.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/mgba-util/common.h b/include/mgba-util/common.h index 1b31bfccb..f8b705e11 100644 --- a/include/mgba-util/common.h +++ b/include/mgba-util/common.h @@ -102,8 +102,8 @@ typedef intptr_t ssize_t; #define ATOMIC_OR(DST, OP) InterlockedOrRelease(&DST, OP) #define ATOMIC_AND(DST, OP) InterlockedAndRelease(&DST, OP) #define ATOMIC_CMPXCHG(DST, EXPECTED, SRC) (InterlockedCompareExchange(&DST, SRC, EXPECTED) == EXPECTED) -#define ATOMIC_STORE_PTR(DST, SRC) InterlockedExchangePointer(DST, SRC) -#define ATOMIC_LOAD_PTR(DST, SRC) DST = InterlockedCompareExchangePointer(SRC, 0, 0) +#define ATOMIC_STORE_PTR(DST, SRC) InterlockedExchangePointer(&DST, SRC) +#define ATOMIC_LOAD_PTR(DST, SRC) DST = InterlockedCompareExchangePointer(&SRC, 0, 0) #else // TODO #define ATOMIC_STORE(DST, SRC) DST = SRC From 43b6004cea5aacf62a61d92ef190f3b3a24911d0 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 24 Jun 2019 19:01:20 -0700 Subject: [PATCH 36/50] Switch: Support file associations --- CHANGES | 1 + src/platform/switch/CMakeLists.txt | 3 ++- src/platform/switch/fileassoc.cfg.in | 18 ++++++++++++++++++ src/platform/switch/main.c | 24 ++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 src/platform/switch/fileassoc.cfg.in diff --git a/CHANGES b/CHANGES index 4aad6498f..d47dfe64f 100644 --- a/CHANGES +++ b/CHANGES @@ -64,6 +64,7 @@ Misc: - mGUI: Remember name and position of last loaded game - Core: Create game-related paths if they don't exist (fixes mgba.io/i/1446) - Qt: Add option to pause on minimizing window (closes mgba.io/i/1379) + - Switch: Support file associations 0.7.2: (2019-05-25) Emulation fixes: diff --git a/src/platform/switch/CMakeLists.txt b/src/platform/switch/CMakeLists.txt index 6666b8a01..2d98ad0a5 100644 --- a/src/platform/switch/CMakeLists.txt +++ b/src/platform/switch/CMakeLists.txt @@ -42,9 +42,10 @@ add_custom_command(OUTPUT control.nacp add_custom_command(OUTPUT romfs.bin COMMAND ${CMAKE_COMMAND} -E make_directory romfs COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/res/font-new.png" romfs/ + COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/fileassoc.cfg.in" romfs/ COMMAND ${BUILD_ROMFS} romfs romfs.bin COMMAND ${CMAKE_COMMAND} -E remove_directory romfs - DEPENDS "${CMAKE_SOURCE_DIR}/res/font-new.png") + DEPENDS "${CMAKE_SOURCE_DIR}/res/font-new.png" "${CMAKE_CURRENT_SOURCE_DIR}/fileassoc.cfg.in") add_custom_target(${BINARY_NAME}.nro ALL ${ELF2NRO} ${BINARY_NAME}.elf ${BINARY_NAME}.nro --romfs=romfs.bin --nacp=control.nacp --icon="${CMAKE_CURRENT_SOURCE_DIR}/icon.jpg" diff --git a/src/platform/switch/fileassoc.cfg.in b/src/platform/switch/fileassoc.cfg.in new file mode 100644 index 000000000..cbf5be1a4 --- /dev/null +++ b/src/platform/switch/fileassoc.cfg.in @@ -0,0 +1,18 @@ +fileassoc={ + app_path="%s"; + + targets=( + { + file_extension=".gba"; + }, + { + file_extension=".gb"; + }, + { + file_extension=".gbc"; + }, + { + file_extension=".sgb"; + } + ); +}; \ No newline at end of file diff --git a/src/platform/switch/main.c b/src/platform/switch/main.c index c0624423d..f87caf667 100644 --- a/src/platform/switch/main.c +++ b/src/platform/switch/main.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -921,6 +922,29 @@ int main(int argc, char* argv[]) { audoutStartAudioOut(); + if (argc > 0) { + struct VFile* vf = VFileOpen("romfs:/fileassoc.cfg.in", O_RDONLY); + if (vf) { + size_t size = vf->size(vf); + const char* arg0 = strchr(argv[0], '/'); + char* buffer[2] = { + calloc(size + 1, 1), + malloc(size + strlen(arg0) + 1) + }; + vf->read(vf, buffer[0], vf->size(vf)); + vf->close(vf); + snprintf(buffer[1], size + strlen(arg0), buffer[0], arg0); + mkdir("sdmc:/config/nx-hbmenu/fileassoc", 0755); + vf = VFileOpen("sdmc:/config/nx-hbmenu/fileassoc/mgba.cfg", O_CREAT | O_TRUNC | O_WRONLY); + if (vf) { + vf->write(vf, buffer[1], strlen(buffer[1])); + vf->close(vf); + } + free(buffer[0]); + free(buffer[1]); + } + } + if (argc > 1) { size_t i; for (i = 0; runner.keySources[i].id; ++i) { From 417a749fecb8c991e7dd3ec28171fbad64378d53 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 26 Jun 2019 10:15:51 -0700 Subject: [PATCH 37/50] Libretro: Fix crash changing allowing opposing directions (backports libretro/mgba@2619aa) --- CHANGES | 1 + src/platform/libretro/libretro.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index d47dfe64f..89f2cf58b 100644 --- a/CHANGES +++ b/CHANGES @@ -40,6 +40,7 @@ Other fixes: - Core: Fix crash when exiting game with cheats loaded - GBA Cheats: Fix PARv3 Thumb hooks - mGUI: Fix crash if last loaded ROM directory disappears (fixes mgba.io/i/1466) + - Libretro: Fix crash changing allowing opposing directions (hhromic) Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/platform/libretro/libretro.c b/src/platform/libretro/libretro.c index 29dbc9033..badc917b0 100644 --- a/src/platform/libretro/libretro.c +++ b/src/platform/libretro/libretro.c @@ -297,7 +297,18 @@ void retro_run(void) { .value = 0 }; if (environCallback(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { - ((struct GBA*) core->board)->allowOpposingDirections = strcmp(var.value, "yes") == 0; + struct GBA* gba = core->board; + struct GB* gb = core->board; + switch (core->platform(core)) { + case PLATFORM_GBA: + gba->allowOpposingDirections = strcmp(var.value, "yes") == 0; + break; + case PLATFORM_GB: + gb->allowOpposingDirections = strcmp(var.value, "yes") == 0; + break; + default: + break; + } } var.key = "mgba_frameskip"; From 042a77a932d2d2f2d7606df365c6ed8eb87b69f6 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 26 Jun 2019 10:33:36 -0700 Subject: [PATCH 38/50] GB Audio: Deschedule channel 1 when disabled by sweep (fixes #1467) --- CHANGES | 1 + src/gb/audio.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index 89f2cf58b..2b334801f 100644 --- a/CHANGES +++ b/CHANGES @@ -29,6 +29,7 @@ Emulation fixes: - GB Audio: Sample inactive channels (fixes mgba.io/i/1455, mgba.io/i/1456) - GB Video: Increment BCPS/OCPS even in mode 3 (fixes mgba.io/i/1462) - GB Audio: Deschedule channel 3 when disabled (fixes mgba.io/i/1463) + - GB Audio: Deschedule channel 1 when disabled by sweep (fixes mgba.io/i/1467) Other fixes: - Qt: Fix some Qt display driver race conditions - Core: Improved lockstep driver reliability (Le Hoang Quyen) diff --git a/src/gb/audio.c b/src/gb/audio.c index b4c745404..666ab42b8 100644 --- a/src/gb/audio.c +++ b/src/gb/audio.c @@ -513,6 +513,9 @@ void GBAudioUpdateFrame(struct GBAudio* audio, struct mTiming* timing) { audio->playingCh1 = _updateSweep(&audio->ch1, false); *audio->nr52 &= ~0x0001; *audio->nr52 |= audio->playingCh1; + if (!audio->playingCh1) { + mTimingDeschedule(audio->timing, &audio->ch1Event); + } } } // Fall through From 48162e75e741743428fcbe6feca0f2f383da9806 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 26 Jun 2019 15:39:18 -0700 Subject: [PATCH 39/50] Qt: Fix forcing 1.x when getting a 2/3 backwards-compatible context --- src/platform/qt/DisplayGL.cpp | 12 +++++++++--- src/platform/qt/DisplayGL.h | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/platform/qt/DisplayGL.cpp b/src/platform/qt/DisplayGL.cpp index ad8f7ba4f..94069c96d 100644 --- a/src/platform/qt/DisplayGL.cpp +++ b/src/platform/qt/DisplayGL.cpp @@ -50,14 +50,20 @@ DisplayGL::DisplayGL(const QSurfaceFormat& format, QWidget* parent) auto version = m_gl->format().version(); QStringList extensions = QString(reinterpret_cast(glGetString(GL_EXTENSIONS))).split(' '); + int forceVersion = 0; + if (format.majorVersion() < 2) { + forceVersion = 1; + } + if ((version == qMakePair(2, 1) && !extensions.contains("GL_ARB_framebuffer_object")) || version == qMakePair(2, 0)) { QSurfaceFormat newFormat(format); newFormat.setVersion(1, 4); + forceVersion = 1; m_gl->setFormat(newFormat); m_gl->create(); } - m_painter = new PainterGL(windowHandle(), m_gl); + m_painter = new PainterGL(windowHandle(), m_gl, forceVersion); setUpdatesEnabled(false); // Prevent paint events, which can cause race conditions } @@ -230,7 +236,7 @@ int DisplayGL::framebufferHandle() { return m_painter->glTex(); } -PainterGL::PainterGL(QWindow* surface, QOpenGLContext* parent) +PainterGL::PainterGL(QWindow* surface, QOpenGLContext* parent, int forceVersion) : m_gl(parent) , m_surface(surface) { @@ -250,7 +256,7 @@ PainterGL::PainterGL(QWindow* surface, QOpenGLContext* parent) #ifdef BUILD_GLES2 auto version = m_gl->format().version(); QStringList extensions = QString(reinterpret_cast(glGetString(GL_EXTENSIONS))).split(' '); - if ((version == qMakePair(2, 1) && extensions.contains("GL_ARB_framebuffer_object")) || version.first > 2) { + if (forceVersion != 1 && ((version == qMakePair(2, 1) && extensions.contains("GL_ARB_framebuffer_object")) || version.first > 2)) { gl2Backend = static_cast(malloc(sizeof(mGLES2Context))); mGLES2ContextCreate(gl2Backend); m_backend = &gl2Backend->d; diff --git a/src/platform/qt/DisplayGL.h b/src/platform/qt/DisplayGL.h index 0256b32cc..40cc05b77 100644 --- a/src/platform/qt/DisplayGL.h +++ b/src/platform/qt/DisplayGL.h @@ -77,7 +77,7 @@ class PainterGL : public QObject { Q_OBJECT public: - PainterGL(QWindow* surface, QOpenGLContext* parent); + PainterGL(QWindow* surface, QOpenGLContext* parent, int forceVersion = 0); ~PainterGL(); void setContext(std::shared_ptr); From 4731bae9e00a39c0ba2090846f16296704442514 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 26 Jun 2019 15:43:58 -0700 Subject: [PATCH 40/50] Qt: Show error message if file failed to load --- CHANGES | 1 + src/platform/qt/Window.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 2b334801f..b649f2abc 100644 --- a/CHANGES +++ b/CHANGES @@ -67,6 +67,7 @@ Misc: - Core: Create game-related paths if they don't exist (fixes mgba.io/i/1446) - Qt: Add option to pause on minimizing window (closes mgba.io/i/1379) - Switch: Support file associations + - Qt: Show error message if file failed to load 0.7.2: (2019-05-25) Emulation fixes: diff --git a/src/platform/qt/Window.cpp b/src/platform/qt/Window.cpp index 19ff6ffab..b1eea01d5 100644 --- a/src/platform/qt/Window.cpp +++ b/src/platform/qt/Window.cpp @@ -1762,6 +1762,7 @@ void Window::updateFrame() { void Window::setController(CoreController* controller, const QString& fname) { if (!controller) { + gameFailed(); return; } if (m_pendingClose) { From 2420fd81e71c3db111fa44cfc075b1c921948b24 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Thu, 27 Jun 2019 17:56:09 -0700 Subject: [PATCH 41/50] Qt: Fix race conditions initializing GDB stub --- CHANGES | 1 + src/platform/qt/CoreController.cpp | 1 + src/platform/qt/DebuggerController.cpp | 1 - src/platform/qt/GDBController.cpp | 6 +++--- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index b649f2abc..9a1a72c9d 100644 --- a/CHANGES +++ b/CHANGES @@ -42,6 +42,7 @@ Other fixes: - GBA Cheats: Fix PARv3 Thumb hooks - mGUI: Fix crash if last loaded ROM directory disappears (fixes mgba.io/i/1466) - Libretro: Fix crash changing allowing opposing directions (hhromic) + - Qt: Fix race conditions initializing GDB stub Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/platform/qt/CoreController.cpp b/src/platform/qt/CoreController.cpp index cd4195420..fecc36ccc 100644 --- a/src/platform/qt/CoreController.cpp +++ b/src/platform/qt/CoreController.cpp @@ -275,6 +275,7 @@ void CoreController::setDebugger(mDebugger* debugger) { Interrupter interrupter(this); if (debugger) { mDebuggerAttach(debugger, m_threadContext.core); + mDebuggerEnter(debugger, DEBUGGER_ENTER_ATTACHED, 0); } else { m_threadContext.core->detachDebugger(m_threadContext.core); } diff --git a/src/platform/qt/DebuggerController.cpp b/src/platform/qt/DebuggerController.cpp index f6c7fdd36..7291b62fa 100644 --- a/src/platform/qt/DebuggerController.cpp +++ b/src/platform/qt/DebuggerController.cpp @@ -46,7 +46,6 @@ void DebuggerController::attach() { if (m_gameController) { attachInternal(); m_gameController->setDebugger(m_debugger); - mDebuggerEnter(m_debugger, DEBUGGER_ENTER_ATTACHED, 0); } else { m_autoattach = true; } diff --git a/src/platform/qt/GDBController.cpp b/src/platform/qt/GDBController.cpp index d2e9523b7..32edc7d14 100644 --- a/src/platform/qt/GDBController.cpp +++ b/src/platform/qt/GDBController.cpp @@ -34,10 +34,10 @@ void GDBController::setBindAddress(uint32_t bindAddress) { } void GDBController::listen() { - if (!isAttached()) { - attach(); - } if (GDBStubListen(&m_gdbStub, m_port, &m_bindAddress)) { + if (!isAttached()) { + attach(); + } emit listening(); } else { detach(); From 4ea82f9e3ae326a1070162e8ab34f9e685cf1fc6 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 30 Jun 2019 11:01:14 -0700 Subject: [PATCH 42/50] Qt: Add label with pixel size of high-res upscale --- src/platform/qt/SettingsView.cpp | 6 +++- src/platform/qt/SettingsView.ui | 62 ++++++++++++++++++++++++++------ 2 files changed, 56 insertions(+), 12 deletions(-) diff --git a/src/platform/qt/SettingsView.cpp b/src/platform/qt/SettingsView.cpp index 6f5f94005..dc1e9a26a 100644 --- a/src/platform/qt/SettingsView.cpp +++ b/src/platform/qt/SettingsView.cpp @@ -569,7 +569,6 @@ void SettingsView::reloadConfig() { loadSetting("logFile", m_ui.logFile); loadSetting("useDiscordPresence", m_ui.useDiscordPresence); loadSetting("gba.audioHle", m_ui.audioHle); - loadSetting("videoScale", m_ui.videoScale, 1); m_ui.libraryStyle->setCurrentIndex(loadSetting("libraryStyle").toInt()); @@ -636,6 +635,11 @@ void SettingsView::reloadConfig() { int hwaccelVideo = m_controller->getOption("hwaccelVideo", 0).toInt(); m_ui.hwaccelVideo->setCurrentIndex(hwaccelVideo); + + connect(m_ui.videoScale, static_cast(&QSpinBox::valueChanged), [this](int value) { + m_ui.videoScaleSize->setText(tr("(%1×%2)").arg(GBA_VIDEO_HORIZONTAL_PIXELS * value).arg(GBA_VIDEO_VERTICAL_PIXELS * value)); + }); + loadSetting("videoScale", m_ui.videoScale, 1); } void SettingsView::saveSetting(const char* key, const QAbstractButton* field) { diff --git a/src/platform/qt/SettingsView.ui b/src/platform/qt/SettingsView.ui index 608ab70e1..3f4068bb5 100644 --- a/src/platform/qt/SettingsView.ui +++ b/src/platform/qt/SettingsView.ui @@ -907,17 +907,57 @@ - - - × - - - 1 - - - 16 - - + + + + + × + + + 1 + + + 16 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + false + + + {size} + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + From cbc27f08f9d4ea827c97f3e824f319f4104482ee Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 30 Jun 2019 11:25:40 -0700 Subject: [PATCH 43/50] Core: Add single config option reloading function --- include/mgba/core/core.h | 1 + src/gb/core.c | 54 ++++++++++++++++++++++++++++++ src/gba/core.c | 54 ++++++++++++++++++++++++++++++ src/platform/qt/CoreController.cpp | 29 ++-------------- 4 files changed, 111 insertions(+), 27 deletions(-) diff --git a/include/mgba/core/core.h b/include/mgba/core/core.h index 9cad7a3e8..bca92b1ff 100644 --- a/include/mgba/core/core.h +++ b/include/mgba/core/core.h @@ -68,6 +68,7 @@ struct mCore { void (*setSync)(struct mCore*, struct mCoreSync*); void (*loadConfig)(struct mCore*, const struct mCoreConfig*); + void (*reloadConfigOption)(struct mCore*, const char* option, const struct mCoreConfig*); void (*desiredVideoDimensions)(struct mCore*, unsigned* width, unsigned* height); void (*setVideoBuffer)(struct mCore*, color_t* buffer, size_t stride); diff --git a/src/gb/core.c b/src/gb/core.c index 87eedfd40..655449eaf 100644 --- a/src/gb/core.c +++ b/src/gb/core.c @@ -224,6 +224,59 @@ static void _GBCoreLoadConfig(struct mCore* core, const struct mCoreConfig* conf #endif } +static void _GBCoreReloadConfigOption(struct mCore* core, const char* option, const struct mCoreConfig* config) { + struct GB* gb = core->board; + if (!config) { + config = &core->config; + } + + if (!option) { + // Reload options from opts + if (core->opts.mute) { + gb->audio.masterVolume = 0; + } else { + gb->audio.masterVolume = core->opts.volume; + } + gb->video.frameskip = core->opts.frameskip; + return; + } + + int fakeBool; + if (strcmp("mute", option) == 0) { + if (mCoreConfigGetIntValue(config, "mute", &fakeBool)) { + core->opts.mute = fakeBool; + + if (core->opts.mute) { + gb->audio.masterVolume = 0; + } else { + gb->audio.masterVolume = core->opts.volume; + } + } + return; + } + if (strcmp("volume", option) == 0) { + if (mCoreConfigGetIntValue(config, "volume", &core->opts.volume) && !core->opts.mute) { + gb->audio.masterVolume = core->opts.volume; + } + return; + } + if (strcmp("frameskip", option) == 0) { + if (mCoreConfigGetIntValue(config, "frameskip", &core->opts.frameskip)) { + gb->video.frameskip = core->opts.frameskip; + } + return; + } + if (strcmp("allowOpposingDirections", option) == 0) { + if (config != &core->config) { + mCoreConfigCopyValue(&core->config, config, "allowOpposingDirections"); + } + if (mCoreConfigGetIntValue(config, "allowOpposingDirections", &fakeBool)) { + gb->allowOpposingDirections = fakeBool; + } + return; + } +} + static void _GBCoreDesiredVideoDimensions(struct mCore* core, unsigned* width, unsigned* height) { struct GB* gb = core->board; if (gb && (!(gb->model & GB_MODEL_SGB) || !gb->video.sgbBorders)) { @@ -901,6 +954,7 @@ struct mCore* GBCoreCreate(void) { core->supportsFeature = _GBCoreSupportsFeature; core->setSync = _GBCoreSetSync; core->loadConfig = _GBCoreLoadConfig; + core->reloadConfigOption = _GBCoreReloadConfigOption; core->desiredVideoDimensions = _GBCoreDesiredVideoDimensions; core->setVideoBuffer = _GBCoreSetVideoBuffer; core->setVideoGLTex = _GBCoreSetVideoGLTex; diff --git a/src/gba/core.c b/src/gba/core.c index 20c08779e..c6cadd233 100644 --- a/src/gba/core.c +++ b/src/gba/core.c @@ -296,6 +296,59 @@ static void _GBACoreLoadConfig(struct mCore* core, const struct mCoreConfig* con mCoreConfigCopyValue(&core->config, config, "videoScale"); } +static void _GBACoreReloadConfigOption(struct mCore* core, const char* option, const struct mCoreConfig* config) { + struct GBA* gba = core->board; + if (!config) { + config = &core->config; + } + + if (!option) { + // Reload options from opts + if (core->opts.mute) { + gba->audio.masterVolume = 0; + } else { + gba->audio.masterVolume = core->opts.volume; + } + gba->video.frameskip = core->opts.frameskip; + return; + } + + int fakeBool; + if (strcmp("mute", option) == 0) { + if (mCoreConfigGetIntValue(config, "mute", &fakeBool)) { + core->opts.mute = fakeBool; + + if (core->opts.mute) { + gba->audio.masterVolume = 0; + } else { + gba->audio.masterVolume = core->opts.volume; + } + } + return; + } + if (strcmp("volume", option) == 0) { + if (mCoreConfigGetIntValue(config, "volume", &core->opts.volume) && !core->opts.mute) { + gba->audio.masterVolume = core->opts.volume; + } + return; + } + if (strcmp("frameskip", option) == 0) { + if (mCoreConfigGetIntValue(config, "frameskip", &core->opts.frameskip)) { + gba->video.frameskip = core->opts.frameskip; + } + return; + } + if (strcmp("allowOpposingDirections", option) == 0) { + if (config != &core->config) { + mCoreConfigCopyValue(&core->config, config, "allowOpposingDirections"); + } + if (mCoreConfigGetIntValue(config, "allowOpposingDirections", &fakeBool)) { + gba->allowOpposingDirections = fakeBool; + } + return; + } +} + static void _GBACoreDesiredVideoDimensions(struct mCore* core, unsigned* width, unsigned* height) { #if defined(BUILD_GLES2) || defined(BUILD_GLES3) struct GBACore* gbacore = (struct GBACore*) core; @@ -1021,6 +1074,7 @@ struct mCore* GBACoreCreate(void) { core->supportsFeature = _GBACoreSupportsFeature; core->setSync = _GBACoreSetSync; core->loadConfig = _GBACoreLoadConfig; + core->reloadConfigOption = _GBACoreReloadConfigOption; core->desiredVideoDimensions = _GBACoreDesiredVideoDimensions; core->setVideoBuffer = _GBACoreSetVideoBuffer; core->setVideoGLTex = _GBACoreSetVideoGLTex; diff --git a/src/platform/qt/CoreController.cpp b/src/platform/qt/CoreController.cpp index fecc36ccc..f0e29584d 100644 --- a/src/platform/qt/CoreController.cpp +++ b/src/platform/qt/CoreController.cpp @@ -922,33 +922,8 @@ void CoreController::updateFastForward() { m_threadContext.impl->sync.fpsTarget = m_fpsTarget; setSync(true); } - // XXX: Have a way of just updating volume - switch (platform()) { -#ifdef M_CORE_GBA - case PLATFORM_GBA: { - GBA* gba = static_cast(m_threadContext.core->board); - if (m_threadContext.core->opts.mute) { - gba->audio.masterVolume = 0; - } else { - gba->audio.masterVolume = m_threadContext.core->opts.volume; - } - break; - } -#endif -#ifdef M_CORE_GB - case PLATFORM_GB: { - GB* gb = static_cast(m_threadContext.core->board); - if (m_threadContext.core->opts.mute) { - gb->audio.masterVolume = 0; - } else { - gb->audio.masterVolume = m_threadContext.core->opts.volume; - } - break; - } -#endif - default: - break; - } + + m_threadContext.core->reloadConfigOption(m_threadContext.core, NULL, NULL); } CoreController::Interrupter::Interrupter(CoreController* parent, bool fromThread) From 09cce3627bfbe45ab3234ddae06105d5e4cf29c7 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 30 Jun 2019 11:33:47 -0700 Subject: [PATCH 44/50] GB, GBA: Make file type checking functions public API --- include/mgba/gb/interface.h | 5 +++++ include/mgba/gba/interface.h | 5 +++++ include/mgba/internal/gb/gb.h | 2 -- include/mgba/internal/gba/gba.h | 3 --- src/core/core.c | 5 ++--- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/include/mgba/gb/interface.h b/include/mgba/gb/interface.h index 809c0ca36..300846c6a 100644 --- a/include/mgba/gb/interface.h +++ b/include/mgba/gb/interface.h @@ -47,6 +47,11 @@ struct GBSIODriver { uint8_t (*writeSC)(struct GBSIODriver* driver, uint8_t value); }; +struct VFile; + +bool GBIsROM(struct VFile* vf); +bool GBIsBIOS(struct VFile* vf); + enum GBModel GBNameToModel(const char*); const char* GBModelToName(enum GBModel); diff --git a/include/mgba/gba/interface.h b/include/mgba/gba/interface.h index 33c7a8e88..8c725e161 100644 --- a/include/mgba/gba/interface.h +++ b/include/mgba/gba/interface.h @@ -38,6 +38,7 @@ struct GBA; struct GBAAudio; struct GBASIO; struct GBAVideoRenderer; +struct VFile; extern MGBA_EXPORT const int GBA_LUX_LEVELS[10]; @@ -46,6 +47,10 @@ enum { mPERIPH_GBA_BATTLECHIP_GATE, }; +bool GBAIsROM(struct VFile* vf); +bool GBAIsMB(struct VFile* vf); +bool GBAIsBIOS(struct VFile* vf); + struct GBALuminanceSource { void (*sample)(struct GBALuminanceSource*); diff --git a/include/mgba/internal/gb/gb.h b/include/mgba/internal/gb/gb.h index 7d007296a..22abf2080 100644 --- a/include/mgba/internal/gb/gb.h +++ b/include/mgba/internal/gb/gb.h @@ -163,7 +163,6 @@ bool GBLoadSave(struct GB* gb, struct VFile* vf); void GBUnloadROM(struct GB* gb); void GBSynthesizeROM(struct VFile* vf); -bool GBIsBIOS(struct VFile* vf); void GBLoadBIOS(struct GB* gb, struct VFile* vf); void GBSramClean(struct GB* gb, uint32_t frameCount); @@ -174,7 +173,6 @@ void GBSavedataUnmask(struct GB* gb); struct Patch; void GBApplyPatch(struct GB* gb, struct Patch* patch); -bool GBIsROM(struct VFile* vf); void GBGetGameTitle(const struct GB* gba, char* out); void GBGetGameCode(const struct GB* gba, char* out); diff --git a/include/mgba/internal/gba/gba.h b/include/mgba/internal/gba/gba.h index f1b3fa2f5..fffd46936 100644 --- a/include/mgba/internal/gba/gba.h +++ b/include/mgba/internal/gba/gba.h @@ -169,9 +169,6 @@ void GBAApplyPatch(struct GBA* gba, struct Patch* patch); bool GBALoadMB(struct GBA* gba, struct VFile* vf); bool GBALoadNull(struct GBA* gba); -bool GBAIsROM(struct VFile* vf); -bool GBAIsMB(struct VFile* vf); -bool GBAIsBIOS(struct VFile* vf); void GBAGetGameCode(const struct GBA* gba, char* out); void GBAGetGameTitle(const struct GBA* gba, char* out); diff --git a/src/core/core.c b/src/core/core.c index af3ff68a8..80de0e6bb 100644 --- a/src/core/core.c +++ b/src/core/core.c @@ -17,12 +17,11 @@ #ifdef M_CORE_GB #include -// TODO: Fix layering violation -#include +#include #endif #ifdef M_CORE_GBA #include -#include +#include #endif #ifndef MINIMAL_CORE #include From 6bd38d1565a4e19d86c840240e2f97dc2fdc4d58 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 30 Jun 2019 14:51:27 -0700 Subject: [PATCH 45/50] GBA Cheats: Add support for loading EZ Flash-style cht files --- CHANGES | 1 + include/mgba-util/string.h | 1 + include/mgba/core/cheats.h | 1 + src/core/cheats.c | 119 ++++++++++++++++++++++++++++++++++ src/util/CMakeLists.txt | 1 + src/util/gbk-table.c | 129 +++++++++++++++++++++++++++++++++++++ src/util/string.c | 70 +++++++++++++++++++- 7 files changed, 321 insertions(+), 1 deletion(-) create mode 100644 src/util/gbk-table.c diff --git a/CHANGES b/CHANGES index 9a1a72c9d..1380e7ed9 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,7 @@ Features: - Ports: Ability to enable or disable all SGB features (closes mgba.io/i/1205) - Ports: Ability to crop SGB borders off screen (closes mgba.io/i/1204) - Cheats: Add support for loading Libretro-style cht files + - GBA Cheats: Add support for loading EZ Flash-style cht files Emulation fixes: - GBA: All IRQs have 7 cycle delay (fixes mgba.io/i/539, mgba.io/i/1208) - GBA: Reset now reloads multiboot ROMs diff --git a/include/mgba-util/string.h b/include/mgba-util/string.h index fe5f48f59..af8375cca 100644 --- a/include/mgba-util/string.h +++ b/include/mgba-util/string.h @@ -28,6 +28,7 @@ int utfcmp(const uint16_t* utf16, const char* utf8, size_t utf16Length, size_t u char* utf16to8(const uint16_t* utf16, size_t length); uint32_t utf8Char(const char** unicode, size_t* length); uint32_t utf16Char(const uint16_t** unicode, size_t* length); +char* gbkToUtf8(const char* gbk, size_t length); int hexDigit(char digit); const char* hex32(const char* line, uint32_t* out); diff --git a/include/mgba/core/cheats.h b/include/mgba/core/cheats.h index dbc94199f..d05ac8e5f 100644 --- a/include/mgba/core/cheats.h +++ b/include/mgba/core/cheats.h @@ -101,6 +101,7 @@ bool mCheatParseFile(struct mCheatDevice*, struct VFile*); bool mCheatSaveFile(struct mCheatDevice*, struct VFile*); bool mCheatParseLibretroFile(struct mCheatDevice*, struct VFile*); +bool mCheatParseEZFChtFile(struct mCheatDevice*, struct VFile*); #if !defined(MINIMAL_CORE) || MINIMAL_CORE < 2 void mCheatAutosave(struct mCheatDevice*); diff --git a/src/core/cheats.c b/src/core/cheats.c index d8b6fa7b0..fa45db291 100644 --- a/src/core/cheats.c +++ b/src/core/cheats.c @@ -198,6 +198,12 @@ bool mCheatParseFile(struct mCheatDevice* device, struct VFile* vf) { StringListDeinit(&directives); return mCheatParseLibretroFile(device, vf); } + if (cheat[0] == '[') { + // This is in EZ Flash CHT format, switch over to that parser + vf->seek(vf, 0, SEEK_SET); + StringListDeinit(&directives); + return mCheatParseEZFChtFile(device, vf); + } set = device->createSet(device, NULL); set->enabled = !nextDisabled; nextDisabled = false; @@ -324,6 +330,119 @@ bool mCheatParseLibretroFile(struct mCheatDevice* device, struct VFile* vf) { return true; } +bool mCheatParseEZFChtFile(struct mCheatDevice* device, struct VFile* vf) { + char cheat[MAX_LINE_LENGTH]; + char cheatName[MAX_LINE_LENGTH]; + char miniline[32]; + size_t cheatNameLength; + struct mCheatSet* set = NULL; + + cheatName[MAX_LINE_LENGTH - 1] = '\0'; + while (true) { + ssize_t bytesRead = vf->readline(vf, cheat, sizeof(cheat)); + if (bytesRead == 0) { + break; + } + if (bytesRead < 0) { + return false; + } + if (cheat[0] == '\n' || (bytesRead >= 2 && cheat[0] == '\r' && cheat[1] == '\n')) { + continue; + } + + if (cheat[0] == '[') { + if (strncmp(cheat, "[GameInfo]", 10) == 0) { + break; + } + char* end = strchr(cheat, ']'); + if (!end) { + return false; + } + char* name = gbkToUtf8(&cheat[1], end - cheat - 1); + strncpy(cheatName, name, sizeof(cheatName) - 1); + free(name); + cheatNameLength = strlen(cheatName); + continue; + } + + char* eq = strchr(cheat, '='); + if (!eq) { + continue; + } + if (strncmp(cheat, "ON", eq - cheat) != 0) { + char* subname = gbkToUtf8(cheat, eq - cheat); + snprintf(&cheatName[cheatNameLength], sizeof(cheatName) - cheatNameLength - 1, ": %s", subname); + } + set = device->createSet(device, cheatName); + set->enabled = false; + mCheatAddSet(device, set); + cheatName[cheatNameLength] = '\0'; + ++eq; + + uint32_t gameptr = 0; + uint32_t hexval = 0; + int digit; + while (eq[0] != '\r' && eq[1] != '\n') { + if (cheat + bytesRead == eq || eq[0] == '\0') { + bytesRead = vf->readline(vf, cheat, sizeof(cheat)); + eq = cheat; + if (bytesRead == 0) { + break; + } + if (bytesRead < 0) { + return false; + } + } + switch (eq[0]) { + case ',': + if (!gameptr) { + gameptr = hexval; + if (hexval < 0x40000) { + gameptr += 0x02000000; + } else { + gameptr += 0x03000000 - 0x40000; + } + } else { + if (hexval > 0xFF) { + return false; + } + snprintf(miniline, sizeof(miniline) - 1, "%08X:%02X", gameptr, hexval); + mCheatAddLine(set, miniline, 0); + ++gameptr; + } + hexval = 0; + break; + case ';': + if (hexval > 0xFF) { + return false; + } + snprintf(miniline, sizeof(miniline) - 1, "%08X:%02X", gameptr, hexval); + mCheatAddLine(set, miniline, 0); + hexval = 0; + gameptr = 0; + break; + default: + digit = hexDigit(eq[0]); + if (digit < 0) { + return false; + } + hexval <<= 4; + hexval |= digit; + break; + } + ++eq; + } + if (gameptr) { + if (hexval > 0xFF) { + return false; + } + snprintf(miniline, sizeof(miniline) - 1, "%08X:%02X", gameptr, hexval); + mCheatAddLine(set, miniline, 0); + } + } + return true; +} + bool mCheatSaveFile(struct mCheatDevice* device, struct VFile* vf) { static const char lineStart[3] = "# "; static const char lineEnd = '\n'; diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index f4265b2ea..b4e7e1b0b 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -6,6 +6,7 @@ set(SOURCE_FILES elf-read.c export.c formatting.c + gbk-table.c hash.c patch.c patch-fast.c diff --git a/src/util/gbk-table.c b/src/util/gbk-table.c new file mode 100644 index 000000000..87f58f185 --- /dev/null +++ b/src/util/gbk-table.c @@ -0,0 +1,129 @@ +#include +const uint16_t gbkUnicodeTable[] = { + 0x4e02, 0x4e04, 0x4e05, 0x4e06, 0x4e0f, 0x4e12, 0x4e17, 0x4e1f, 0x4e20, 0x4e21, 0x4e23, 0x4e26, 0x4e29, 0x4e2e, 0x4e2f, 0x4e31, 0x4e33, 0x4e35, 0x4e37, 0x4e3c, 0x4e40, 0x4e41, 0x4e42, 0x4e44, 0x4e46, 0x4e4a, 0x4e51, 0x4e55, 0x4e57, 0x4e5a, 0x4e5b, 0x4e62, 0x4e63, 0x4e64, 0x4e65, 0x4e67, 0x4e68, 0x4e6a, 0x4e6b, 0x4e6c, 0x4e6d, 0x4e6e, 0x4e6f, 0x4e72, 0x4e74, 0x4e75, 0x4e76, 0x4e77, 0x4e78, 0x4e79, 0x4e7a, 0x4e7b, 0x4e7c, 0x4e7d, 0x4e7f, 0x4e80, 0x4e81, 0x4e82, 0x4e83, 0x4e84, 0x4e85, 0x4e87, 0x4e8a, 0xfffd, 0x4e90, 0x4e96, 0x4e97, 0x4e99, 0x4e9c, 0x4e9d, 0x4e9e, 0x4ea3, 0x4eaa, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb4, 0x4eb6, 0x4eb7, 0x4eb8, 0x4eb9, 0x4ebc, 0x4ebd, 0x4ebe, 0x4ec8, 0x4ecc, 0x4ecf, 0x4ed0, 0x4ed2, 0x4eda, 0x4edb, 0x4edc, 0x4ee0, 0x4ee2, 0x4ee6, 0x4ee7, 0x4ee9, 0x4eed, 0x4eee, 0x4eef, 0x4ef1, 0x4ef4, 0x4ef8, 0x4ef9, 0x4efa, 0x4efc, 0x4efe, 0x4f00, 0x4f02, 0x4f03, 0x4f04, 0x4f05, 0x4f06, 0x4f07, 0x4f08, 0x4f0b, 0x4f0c, 0x4f12, 0x4f13, 0x4f14, 0x4f15, 0x4f16, 0x4f1c, 0x4f1d, 0x4f21, 0x4f23, 0x4f28, 0x4f29, 0x4f2c, 0x4f2d, 0x4f2e, 0x4f31, 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f3f, 0x4f40, 0x4f41, 0x4f42, 0x4f44, 0x4f45, 0x4f47, 0x4f48, 0x4f49, 0x4f4a, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f61, 0x4f62, 0x4f66, 0x4f68, 0x4f6a, 0x4f6b, 0x4f6d, 0x4f6e, 0x4f71, 0x4f72, 0x4f75, 0x4f77, 0x4f78, 0x4f79, 0x4f7a, 0x4f7d, 0x4f80, 0x4f81, 0x4f82, 0x4f85, 0x4f86, 0x4f87, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92, 0x4f93, 0x4f95, 0x4f96, 0x4f98, 0x4f99, 0x4f9a, 0x4f9c, 0x4f9e, 0x4f9f, 0x4fa1, 0x4fa2, + 0x4fa4, 0x4fab, 0x4fad, 0x4fb0, 0x4fb1, 0x4fb2, 0x4fb3, 0x4fb4, 0x4fb6, 0x4fb7, 0x4fb8, 0x4fb9, 0x4fba, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1, 0x4fc2, 0x4fc6, 0x4fc7, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fd2, 0x4fd3, 0x4fd4, 0x4fd5, 0x4fd6, 0x4fd9, 0x4fdb, 0x4fe0, 0x4fe2, 0x4fe4, 0x4fe5, 0x4fe7, 0x4feb, 0x4fec, 0x4ff0, 0x4ff2, 0x4ff4, 0x4ff5, 0x4ff6, 0x4ff7, 0x4ff9, 0x4ffb, 0x4ffc, 0x4ffd, 0x4fff, 0x5000, 0x5001, 0x5002, 0x5003, 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500a, 0xfffd, 0x500b, 0x500e, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017, 0x501b, 0x501d, 0x501e, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027, 0x502b, 0x502f, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035, 0x5036, 0x5037, 0x5038, 0x5039, 0x503b, 0x503d, 0x503f, 0x5040, 0x5041, 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504a, 0x504b, 0x504d, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057, 0x5058, 0x5059, 0x505b, 0x505d, 0x505e, 0x505f, 0x5060, 0x5061, 0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506a, 0x506b, 0x506d, 0x506e, 0x506f, 0x5070, 0x5071, 0x5072, 0x5073, 0x5074, 0x5075, 0x5078, 0x5079, 0x507a, 0x507c, 0x507d, 0x5081, 0x5082, 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508a, 0x508b, 0x508c, 0x508e, 0x508f, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094, 0x5095, 0x5096, 0x5097, 0x5098, 0x5099, 0x509a, 0x509b, 0x509c, 0x509d, 0x509e, 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50a4, 0x50a6, 0x50aa, 0x50ab, 0x50ad, 0x50ae, 0x50af, 0x50b0, 0x50b1, 0x50b3, 0x50b4, 0x50b5, 0x50b6, 0x50b7, 0x50b8, 0x50b9, 0x50bc, + 0x50bd, 0x50be, 0x50bf, 0x50c0, 0x50c1, 0x50c2, 0x50c3, 0x50c4, 0x50c5, 0x50c6, 0x50c7, 0x50c8, 0x50c9, 0x50ca, 0x50cb, 0x50cc, 0x50cd, 0x50ce, 0x50d0, 0x50d1, 0x50d2, 0x50d3, 0x50d4, 0x50d5, 0x50d7, 0x50d8, 0x50d9, 0x50db, 0x50dc, 0x50dd, 0x50de, 0x50df, 0x50e0, 0x50e1, 0x50e2, 0x50e3, 0x50e4, 0x50e5, 0x50e8, 0x50e9, 0x50ea, 0x50eb, 0x50ef, 0x50f0, 0x50f1, 0x50f2, 0x50f4, 0x50f6, 0x50f7, 0x50f8, 0x50f9, 0x50fa, 0x50fc, 0x50fd, 0x50fe, 0x50ff, 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108, 0xfffd, 0x5109, 0x510a, 0x510c, 0x510d, 0x510e, 0x510f, 0x5110, 0x5111, 0x5113, 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511a, 0x511b, 0x511c, 0x511d, 0x511e, 0x511f, 0x5120, 0x5122, 0x5123, 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512a, 0x512b, 0x512c, 0x512d, 0x512e, 0x512f, 0x5130, 0x5131, 0x5132, 0x5133, 0x5134, 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513a, 0x513b, 0x513c, 0x513d, 0x513e, 0x5142, 0x5147, 0x514a, 0x514c, 0x514e, 0x514f, 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515b, 0x515d, 0x515e, 0x515f, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166, 0x5167, 0x5169, 0x516a, 0x516f, 0x5172, 0x517a, 0x517e, 0x517f, 0x5183, 0x5184, 0x5186, 0x5187, 0x518a, 0x518b, 0x518e, 0x518f, 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519a, 0x519d, 0x519e, 0x519f, 0x51a1, 0x51a3, 0x51a6, 0x51a7, 0x51a8, 0x51a9, 0x51aa, 0x51ad, 0x51ae, 0x51b4, 0x51b8, 0x51b9, 0x51ba, 0x51be, 0x51bf, 0x51c1, 0x51c2, 0x51c3, 0x51c5, 0x51c8, 0x51ca, 0x51cd, 0x51ce, 0x51d0, 0x51d2, 0x51d3, 0x51d4, 0x51d5, 0x51d6, 0x51d7, + 0x51d8, 0x51d9, 0x51da, 0x51dc, 0x51de, 0x51df, 0x51e2, 0x51e3, 0x51e5, 0x51e6, 0x51e7, 0x51e8, 0x51e9, 0x51ea, 0x51ec, 0x51ee, 0x51f1, 0x51f2, 0x51f4, 0x51f7, 0x51fe, 0x5204, 0x5205, 0x5209, 0x520b, 0x520c, 0x520f, 0x5210, 0x5213, 0x5214, 0x5215, 0x521c, 0x521e, 0x521f, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227, 0x522a, 0x522c, 0x522f, 0x5231, 0x5232, 0x5234, 0x5235, 0x523c, 0x523e, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524b, 0x524e, 0x524f, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258, 0xfffd, 0x5259, 0x525a, 0x525b, 0x525d, 0x525f, 0x5260, 0x5262, 0x5263, 0x5264, 0x5266, 0x5268, 0x526b, 0x526c, 0x526d, 0x526e, 0x5270, 0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279, 0x527a, 0x527b, 0x527c, 0x527e, 0x5280, 0x5283, 0x5284, 0x5285, 0x5286, 0x5287, 0x5289, 0x528a, 0x528b, 0x528c, 0x528d, 0x528e, 0x528f, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298, 0x5299, 0x529a, 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52ae, 0x52af, 0x52b0, 0x52b4, 0x52b5, 0x52b6, 0x52b7, 0x52b8, 0x52b9, 0x52ba, 0x52bb, 0x52bc, 0x52bd, 0x52c0, 0x52c1, 0x52c2, 0x52c4, 0x52c5, 0x52c6, 0x52c8, 0x52ca, 0x52cc, 0x52cd, 0x52ce, 0x52cf, 0x52d1, 0x52d3, 0x52d4, 0x52d5, 0x52d7, 0x52d9, 0x52da, 0x52db, 0x52dc, 0x52dd, 0x52de, 0x52e0, 0x52e1, 0x52e2, 0x52e3, 0x52e5, 0x52e6, 0x52e7, 0x52e8, 0x52e9, 0x52ea, 0x52eb, 0x52ec, 0x52ed, 0x52ee, 0x52ef, 0x52f1, 0x52f2, 0x52f3, 0x52f4, 0x52f5, 0x52f6, 0x52f7, 0x52f8, 0x52fb, 0x52fc, 0x52fd, 0x5301, 0x5302, 0x5303, 0x5304, 0x5307, 0x5309, 0x530a, 0x530b, 0x530c, 0x530e, + 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531b, 0x531c, 0x531e, 0x531f, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d, 0x532f, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334, 0x5335, 0x5336, 0x5337, 0x5338, 0x533c, 0x533d, 0x5340, 0x5342, 0x5344, 0x5346, 0x534b, 0x534c, 0x534d, 0x5350, 0x5354, 0x5358, 0x5359, 0x535b, 0x535d, 0x5365, 0x5368, 0x536a, 0x536c, 0x536d, 0x5372, 0x5376, 0x5379, 0x537b, 0x537c, 0x537d, 0x537e, 0x5380, 0x5381, 0x5383, 0x5387, 0x5388, 0x538a, 0x538e, 0x538f, 0xfffd, 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399, 0x539b, 0x539c, 0x539e, 0x53a0, 0x53a1, 0x53a4, 0x53a7, 0x53aa, 0x53ab, 0x53ac, 0x53ad, 0x53af, 0x53b0, 0x53b1, 0x53b2, 0x53b3, 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53b9, 0x53ba, 0x53bc, 0x53bd, 0x53be, 0x53c0, 0x53c3, 0x53c4, 0x53c5, 0x53c6, 0x53c7, 0x53ce, 0x53cf, 0x53d0, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dc, 0x53dd, 0x53de, 0x53e1, 0x53e2, 0x53e7, 0x53f4, 0x53fa, 0x53fe, 0x53ff, 0x5400, 0x5402, 0x5405, 0x5407, 0x540b, 0x5414, 0x5418, 0x5419, 0x541a, 0x541c, 0x5422, 0x5424, 0x5425, 0x542a, 0x5430, 0x5433, 0x5436, 0x5437, 0x543a, 0x543d, 0x543f, 0x5441, 0x5442, 0x5444, 0x5445, 0x5447, 0x5449, 0x544c, 0x544d, 0x544e, 0x544f, 0x5451, 0x545a, 0x545d, 0x545e, 0x545f, 0x5460, 0x5461, 0x5463, 0x5465, 0x5467, 0x5469, 0x546a, 0x546b, 0x546c, 0x546d, 0x546e, 0x546f, 0x5470, 0x5474, 0x5479, 0x547a, 0x547e, 0x547f, 0x5481, 0x5483, 0x5485, 0x5487, 0x5488, 0x5489, 0x548a, 0x548d, 0x5491, 0x5493, 0x5497, 0x5498, 0x549c, 0x549e, 0x549f, 0x54a0, 0x54a1, + 0x54a2, 0x54a5, 0x54ae, 0x54b0, 0x54b2, 0x54b5, 0x54b6, 0x54b7, 0x54b9, 0x54ba, 0x54bc, 0x54be, 0x54c3, 0x54c5, 0x54ca, 0x54cb, 0x54d6, 0x54d8, 0x54db, 0x54e0, 0x54e1, 0x54e2, 0x54e3, 0x54e4, 0x54eb, 0x54ec, 0x54ef, 0x54f0, 0x54f1, 0x54f4, 0x54f5, 0x54f6, 0x54f7, 0x54f8, 0x54f9, 0x54fb, 0x54fe, 0x5500, 0x5502, 0x5503, 0x5504, 0x5505, 0x5508, 0x550a, 0x550b, 0x550c, 0x550d, 0x550e, 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551a, 0x551c, 0x551d, 0x551e, 0x551f, 0x5521, 0x5525, 0x5526, 0xfffd, 0x5528, 0x5529, 0x552b, 0x552d, 0x5532, 0x5534, 0x5535, 0x5536, 0x5538, 0x5539, 0x553a, 0x553b, 0x553d, 0x5540, 0x5542, 0x5545, 0x5547, 0x5548, 0x554b, 0x554c, 0x554d, 0x554e, 0x554f, 0x5551, 0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555a, 0x555b, 0x555d, 0x555e, 0x555f, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569, 0x556b, 0x556f, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579, 0x557a, 0x557d, 0x557f, 0x5585, 0x5586, 0x558c, 0x558d, 0x558e, 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559a, 0x559b, 0x559e, 0x55a0, 0x55a1, 0x55a2, 0x55a3, 0x55a4, 0x55a5, 0x55a6, 0x55a8, 0x55a9, 0x55aa, 0x55ab, 0x55ac, 0x55ad, 0x55ae, 0x55af, 0x55b0, 0x55b2, 0x55b4, 0x55b6, 0x55b8, 0x55ba, 0x55bc, 0x55bf, 0x55c0, 0x55c1, 0x55c2, 0x55c3, 0x55c6, 0x55c7, 0x55c8, 0x55ca, 0x55cb, 0x55ce, 0x55cf, 0x55d0, 0x55d5, 0x55d7, 0x55d8, 0x55d9, 0x55da, 0x55db, 0x55de, 0x55e0, 0x55e2, 0x55e7, 0x55e9, 0x55ed, 0x55ee, 0x55f0, 0x55f1, 0x55f4, 0x55f6, 0x55f8, 0x55f9, 0x55fa, 0x55fb, 0x55fc, 0x55ff, 0x5602, 0x5603, 0x5604, 0x5605, + 0x5606, 0x5607, 0x560a, 0x560b, 0x560d, 0x5610, 0x5611, 0x5612, 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561a, 0x561c, 0x561d, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629, 0x562a, 0x562b, 0x562e, 0x562f, 0x5630, 0x5633, 0x5635, 0x5637, 0x5638, 0x563a, 0x563c, 0x563d, 0x563e, 0x5640, 0x5641, 0x5642, 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564a, 0x564b, 0x564f, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656, 0x565a, 0x565b, 0x565d, 0x565e, 0x565f, 0x5660, 0x5661, 0xfffd, 0x5663, 0x5665, 0x5666, 0x5667, 0x566d, 0x566e, 0x566f, 0x5670, 0x5672, 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567a, 0x567d, 0x567e, 0x567f, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5687, 0x5688, 0x5689, 0x568a, 0x568b, 0x568c, 0x568d, 0x5690, 0x5691, 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699, 0x569a, 0x569b, 0x569c, 0x569d, 0x569e, 0x569f, 0x56a0, 0x56a1, 0x56a2, 0x56a4, 0x56a5, 0x56a6, 0x56a7, 0x56a8, 0x56a9, 0x56aa, 0x56ab, 0x56ac, 0x56ad, 0x56ae, 0x56b0, 0x56b1, 0x56b2, 0x56b3, 0x56b4, 0x56b5, 0x56b6, 0x56b8, 0x56b9, 0x56ba, 0x56bb, 0x56bd, 0x56be, 0x56bf, 0x56c0, 0x56c1, 0x56c2, 0x56c3, 0x56c4, 0x56c5, 0x56c6, 0x56c7, 0x56c8, 0x56c9, 0x56cb, 0x56cc, 0x56cd, 0x56ce, 0x56cf, 0x56d0, 0x56d1, 0x56d2, 0x56d3, 0x56d5, 0x56d6, 0x56d8, 0x56d9, 0x56dc, 0x56e3, 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56e9, 0x56ea, 0x56ec, 0x56ee, 0x56ef, 0x56f2, 0x56f3, 0x56f6, 0x56f7, 0x56f8, 0x56fb, 0x56fc, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707, 0x570b, 0x570c, 0x570d, 0x570e, 0x570f, 0x5710, 0x5711, + 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719, 0x571a, 0x571b, 0x571d, 0x571e, 0x5720, 0x5721, 0x5722, 0x5724, 0x5725, 0x5726, 0x5727, 0x572b, 0x5731, 0x5732, 0x5734, 0x5735, 0x5736, 0x5737, 0x5738, 0x573c, 0x573d, 0x573f, 0x5741, 0x5743, 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574b, 0x5752, 0x5753, 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765, 0x5767, 0x576c, 0x576e, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775, 0x5778, 0x5779, 0x577a, 0x577d, 0x577e, 0x577f, 0x5780, 0xfffd, 0x5781, 0x5787, 0x5788, 0x5789, 0x578a, 0x578d, 0x578e, 0x578f, 0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a5, 0x57a8, 0x57aa, 0x57ac, 0x57af, 0x57b0, 0x57b1, 0x57b3, 0x57b5, 0x57b6, 0x57b7, 0x57b9, 0x57ba, 0x57bb, 0x57bc, 0x57bd, 0x57be, 0x57bf, 0x57c0, 0x57c1, 0x57c4, 0x57c5, 0x57c6, 0x57c7, 0x57c8, 0x57c9, 0x57ca, 0x57cc, 0x57cd, 0x57d0, 0x57d1, 0x57d3, 0x57d6, 0x57d7, 0x57db, 0x57dc, 0x57de, 0x57e1, 0x57e2, 0x57e3, 0x57e5, 0x57e6, 0x57e7, 0x57e8, 0x57e9, 0x57ea, 0x57eb, 0x57ec, 0x57ee, 0x57f0, 0x57f1, 0x57f2, 0x57f3, 0x57f5, 0x57f6, 0x57f7, 0x57fb, 0x57fc, 0x57fe, 0x57ff, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580a, 0x580c, 0x580e, 0x580f, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816, 0x5817, 0x5818, 0x581a, 0x581b, 0x581c, 0x581d, 0x581f, 0x5822, 0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582b, 0x582c, 0x582d, 0x582e, 0x582f, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836, 0x5837, 0x5838, 0x5839, 0x583a, 0x583b, 0x583c, 0x583d, + 0x583e, 0x583f, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846, 0x5847, 0x5848, 0x5849, 0x584a, 0x584b, 0x584e, 0x584f, 0x5850, 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585a, 0x585b, 0x585c, 0x585d, 0x585f, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864, 0x5866, 0x5867, 0x5868, 0x5869, 0x586a, 0x586d, 0x586e, 0x586f, 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, 0x5878, 0x5879, 0x587a, 0x587b, 0x587c, 0x587d, 0x587f, 0x5882, 0x5884, 0x5886, 0x5887, 0x5888, 0x588a, 0x588b, 0x588c, 0xfffd, 0x588d, 0x588e, 0x588f, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896, 0x5897, 0x5898, 0x589b, 0x589c, 0x589d, 0x58a0, 0x58a1, 0x58a2, 0x58a3, 0x58a4, 0x58a5, 0x58a6, 0x58a7, 0x58aa, 0x58ab, 0x58ac, 0x58ad, 0x58ae, 0x58af, 0x58b0, 0x58b1, 0x58b2, 0x58b3, 0x58b4, 0x58b5, 0x58b6, 0x58b7, 0x58b8, 0x58b9, 0x58ba, 0x58bb, 0x58bd, 0x58be, 0x58bf, 0x58c0, 0x58c2, 0x58c3, 0x58c4, 0x58c6, 0x58c7, 0x58c8, 0x58c9, 0x58ca, 0x58cb, 0x58cc, 0x58cd, 0x58ce, 0x58cf, 0x58d0, 0x58d2, 0x58d3, 0x58d4, 0x58d6, 0x58d7, 0x58d8, 0x58d9, 0x58da, 0x58db, 0x58dc, 0x58dd, 0x58de, 0x58df, 0x58e0, 0x58e1, 0x58e2, 0x58e3, 0x58e5, 0x58e6, 0x58e7, 0x58e8, 0x58e9, 0x58ea, 0x58ed, 0x58ef, 0x58f1, 0x58f2, 0x58f4, 0x58f5, 0x58f7, 0x58f8, 0x58fa, 0x58fb, 0x58fc, 0x58fd, 0x58fe, 0x58ff, 0x5900, 0x5901, 0x5903, 0x5905, 0x5906, 0x5908, 0x5909, 0x590a, 0x590b, 0x590c, 0x590e, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591b, 0x591d, 0x591e, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928, 0x592c, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593b, + 0x593d, 0x593e, 0x593f, 0x5940, 0x5943, 0x5945, 0x5946, 0x594a, 0x594c, 0x594d, 0x5950, 0x5952, 0x5953, 0x5959, 0x595b, 0x595c, 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967, 0x5968, 0x5969, 0x596a, 0x596b, 0x596c, 0x596d, 0x596e, 0x596f, 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597a, 0x597b, 0x597c, 0x597e, 0x597f, 0x5980, 0x5985, 0x5989, 0x598b, 0x598c, 0x598e, 0x598f, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599a, 0x599b, 0x599c, 0x599d, 0x599f, 0x59a0, 0x59a1, 0x59a2, 0x59a6, 0xfffd, 0x59a7, 0x59ac, 0x59ad, 0x59b0, 0x59b1, 0x59b3, 0x59b4, 0x59b5, 0x59b6, 0x59b7, 0x59b8, 0x59ba, 0x59bc, 0x59bd, 0x59bf, 0x59c0, 0x59c1, 0x59c2, 0x59c3, 0x59c4, 0x59c5, 0x59c7, 0x59c8, 0x59c9, 0x59cc, 0x59cd, 0x59ce, 0x59cf, 0x59d5, 0x59d6, 0x59d9, 0x59db, 0x59de, 0x59df, 0x59e0, 0x59e1, 0x59e2, 0x59e4, 0x59e6, 0x59e7, 0x59e9, 0x59ea, 0x59eb, 0x59ed, 0x59ee, 0x59ef, 0x59f0, 0x59f1, 0x59f2, 0x59f3, 0x59f4, 0x59f5, 0x59f6, 0x59f7, 0x59f8, 0x59fa, 0x59fc, 0x59fd, 0x59fe, 0x5a00, 0x5a02, 0x5a0a, 0x5a0b, 0x5a0d, 0x5a0e, 0x5a0f, 0x5a10, 0x5a12, 0x5a14, 0x5a15, 0x5a16, 0x5a17, 0x5a19, 0x5a1a, 0x5a1b, 0x5a1d, 0x5a1e, 0x5a21, 0x5a22, 0x5a24, 0x5a26, 0x5a27, 0x5a28, 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2d, 0x5a2e, 0x5a2f, 0x5a30, 0x5a33, 0x5a35, 0x5a37, 0x5a38, 0x5a39, 0x5a3a, 0x5a3b, 0x5a3d, 0x5a3e, 0x5a3f, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4b, 0x5a4c, 0x5a4d, 0x5a4e, 0x5a4f, 0x5a50, 0x5a51, 0x5a52, 0x5a53, 0x5a54, 0x5a56, 0x5a57, 0x5a58, 0x5a59, 0x5a5b, 0x5a5c, 0x5a5d, 0x5a5e, 0x5a5f, 0x5a60, + 0x5a61, 0x5a63, 0x5a64, 0x5a65, 0x5a66, 0x5a68, 0x5a69, 0x5a6b, 0x5a6c, 0x5a6d, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71, 0x5a72, 0x5a73, 0x5a78, 0x5a79, 0x5a7b, 0x5a7c, 0x5a7d, 0x5a7e, 0x5a80, 0x5a81, 0x5a82, 0x5a83, 0x5a84, 0x5a85, 0x5a86, 0x5a87, 0x5a88, 0x5a89, 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8d, 0x5a8e, 0x5a8f, 0x5a90, 0x5a91, 0x5a93, 0x5a94, 0x5a95, 0x5a96, 0x5a97, 0x5a98, 0x5a99, 0x5a9c, 0x5a9d, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa1, 0x5aa2, 0x5aa3, 0x5aa4, 0x5aa5, 0x5aa6, 0x5aa7, 0x5aa8, 0x5aa9, 0x5aab, 0x5aac, 0xfffd, 0x5aad, 0x5aae, 0x5aaf, 0x5ab0, 0x5ab1, 0x5ab4, 0x5ab6, 0x5ab7, 0x5ab9, 0x5aba, 0x5abb, 0x5abc, 0x5abd, 0x5abf, 0x5ac0, 0x5ac3, 0x5ac4, 0x5ac5, 0x5ac6, 0x5ac7, 0x5ac8, 0x5aca, 0x5acb, 0x5acd, 0x5ace, 0x5acf, 0x5ad0, 0x5ad1, 0x5ad3, 0x5ad5, 0x5ad7, 0x5ad9, 0x5ada, 0x5adb, 0x5add, 0x5ade, 0x5adf, 0x5ae2, 0x5ae4, 0x5ae5, 0x5ae7, 0x5ae8, 0x5aea, 0x5aec, 0x5aed, 0x5aee, 0x5aef, 0x5af0, 0x5af2, 0x5af3, 0x5af4, 0x5af5, 0x5af6, 0x5af7, 0x5af8, 0x5af9, 0x5afa, 0x5afb, 0x5afc, 0x5afd, 0x5afe, 0x5aff, 0x5b00, 0x5b01, 0x5b02, 0x5b03, 0x5b04, 0x5b05, 0x5b06, 0x5b07, 0x5b08, 0x5b0a, 0x5b0b, 0x5b0c, 0x5b0d, 0x5b0e, 0x5b0f, 0x5b10, 0x5b11, 0x5b12, 0x5b13, 0x5b14, 0x5b15, 0x5b18, 0x5b19, 0x5b1a, 0x5b1b, 0x5b1c, 0x5b1d, 0x5b1e, 0x5b1f, 0x5b20, 0x5b21, 0x5b22, 0x5b23, 0x5b24, 0x5b25, 0x5b26, 0x5b27, 0x5b28, 0x5b29, 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2d, 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b33, 0x5b35, 0x5b36, 0x5b38, 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c, 0x5b3d, 0x5b3e, 0x5b3f, 0x5b41, 0x5b42, 0x5b43, 0x5b44, 0x5b45, 0x5b46, 0x5b47, + 0x5b48, 0x5b49, 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4d, 0x5b4e, 0x5b4f, 0x5b52, 0x5b56, 0x5b5e, 0x5b60, 0x5b61, 0x5b67, 0x5b68, 0x5b6b, 0x5b6d, 0x5b6e, 0x5b6f, 0x5b72, 0x5b74, 0x5b76, 0x5b77, 0x5b78, 0x5b79, 0x5b7b, 0x5b7c, 0x5b7e, 0x5b7f, 0x5b82, 0x5b86, 0x5b8a, 0x5b8d, 0x5b8e, 0x5b90, 0x5b91, 0x5b92, 0x5b94, 0x5b96, 0x5b9f, 0x5ba7, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5bae, 0x5baf, 0x5bb1, 0x5bb2, 0x5bb7, 0x5bba, 0x5bbb, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bc3, 0x5bc8, 0x5bc9, 0x5bca, 0x5bcb, 0x5bcd, 0x5bce, 0x5bcf, 0xfffd, 0x5bd1, 0x5bd4, 0x5bd5, 0x5bd6, 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda, 0x5bdb, 0x5bdc, 0x5be0, 0x5be2, 0x5be3, 0x5be6, 0x5be7, 0x5be9, 0x5bea, 0x5beb, 0x5bec, 0x5bed, 0x5bef, 0x5bf1, 0x5bf2, 0x5bf3, 0x5bf4, 0x5bf5, 0x5bf6, 0x5bf7, 0x5bfd, 0x5bfe, 0x5c00, 0x5c02, 0x5c03, 0x5c05, 0x5c07, 0x5c08, 0x5c0b, 0x5c0c, 0x5c0d, 0x5c0e, 0x5c10, 0x5c12, 0x5c13, 0x5c17, 0x5c19, 0x5c1b, 0x5c1e, 0x5c1f, 0x5c20, 0x5c21, 0x5c23, 0x5c26, 0x5c28, 0x5c29, 0x5c2a, 0x5c2b, 0x5c2d, 0x5c2e, 0x5c2f, 0x5c30, 0x5c32, 0x5c33, 0x5c35, 0x5c36, 0x5c37, 0x5c43, 0x5c44, 0x5c46, 0x5c47, 0x5c4c, 0x5c4d, 0x5c52, 0x5c53, 0x5c54, 0x5c56, 0x5c57, 0x5c58, 0x5c5a, 0x5c5b, 0x5c5c, 0x5c5d, 0x5c5f, 0x5c62, 0x5c64, 0x5c67, 0x5c68, 0x5c69, 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6d, 0x5c70, 0x5c72, 0x5c73, 0x5c74, 0x5c75, 0x5c76, 0x5c77, 0x5c78, 0x5c7b, 0x5c7c, 0x5c7d, 0x5c7e, 0x5c80, 0x5c83, 0x5c84, 0x5c85, 0x5c86, 0x5c87, 0x5c89, 0x5c8a, 0x5c8b, 0x5c8e, 0x5c8f, 0x5c92, 0x5c93, 0x5c95, 0x5c9d, 0x5c9e, 0x5c9f, 0x5ca0, 0x5ca1, 0x5ca4, 0x5ca5, 0x5ca6, 0x5ca7, 0x5ca8, + 0x5caa, 0x5cae, 0x5caf, 0x5cb0, 0x5cb2, 0x5cb4, 0x5cb6, 0x5cb9, 0x5cba, 0x5cbb, 0x5cbc, 0x5cbe, 0x5cc0, 0x5cc2, 0x5cc3, 0x5cc5, 0x5cc6, 0x5cc7, 0x5cc8, 0x5cc9, 0x5cca, 0x5ccc, 0x5ccd, 0x5cce, 0x5ccf, 0x5cd0, 0x5cd1, 0x5cd3, 0x5cd4, 0x5cd5, 0x5cd6, 0x5cd7, 0x5cd8, 0x5cda, 0x5cdb, 0x5cdc, 0x5cdd, 0x5cde, 0x5cdf, 0x5ce0, 0x5ce2, 0x5ce3, 0x5ce7, 0x5ce9, 0x5ceb, 0x5cec, 0x5cee, 0x5cef, 0x5cf1, 0x5cf2, 0x5cf3, 0x5cf4, 0x5cf5, 0x5cf6, 0x5cf7, 0x5cf8, 0x5cf9, 0x5cfa, 0x5cfc, 0x5cfd, 0x5cfe, 0x5cff, 0x5d00, 0xfffd, 0x5d01, 0x5d04, 0x5d05, 0x5d08, 0x5d09, 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0d, 0x5d0f, 0x5d10, 0x5d11, 0x5d12, 0x5d13, 0x5d15, 0x5d17, 0x5d18, 0x5d19, 0x5d1a, 0x5d1c, 0x5d1d, 0x5d1f, 0x5d20, 0x5d21, 0x5d22, 0x5d23, 0x5d25, 0x5d28, 0x5d2a, 0x5d2b, 0x5d2c, 0x5d2f, 0x5d30, 0x5d31, 0x5d32, 0x5d33, 0x5d35, 0x5d36, 0x5d37, 0x5d38, 0x5d39, 0x5d3a, 0x5d3b, 0x5d3c, 0x5d3f, 0x5d40, 0x5d41, 0x5d42, 0x5d43, 0x5d44, 0x5d45, 0x5d46, 0x5d48, 0x5d49, 0x5d4d, 0x5d4e, 0x5d4f, 0x5d50, 0x5d51, 0x5d52, 0x5d53, 0x5d54, 0x5d55, 0x5d56, 0x5d57, 0x5d59, 0x5d5a, 0x5d5c, 0x5d5e, 0x5d5f, 0x5d60, 0x5d61, 0x5d62, 0x5d63, 0x5d64, 0x5d65, 0x5d66, 0x5d67, 0x5d68, 0x5d6a, 0x5d6d, 0x5d6e, 0x5d70, 0x5d71, 0x5d72, 0x5d73, 0x5d75, 0x5d76, 0x5d77, 0x5d78, 0x5d79, 0x5d7a, 0x5d7b, 0x5d7c, 0x5d7d, 0x5d7e, 0x5d7f, 0x5d80, 0x5d81, 0x5d83, 0x5d84, 0x5d85, 0x5d86, 0x5d87, 0x5d88, 0x5d89, 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8d, 0x5d8e, 0x5d8f, 0x5d90, 0x5d91, 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d96, 0x5d97, 0x5d98, 0x5d9a, 0x5d9b, 0x5d9c, 0x5d9e, 0x5d9f, 0x5da0, + 0x5da1, 0x5da2, 0x5da3, 0x5da4, 0x5da5, 0x5da6, 0x5da7, 0x5da8, 0x5da9, 0x5daa, 0x5dab, 0x5dac, 0x5dad, 0x5dae, 0x5daf, 0x5db0, 0x5db1, 0x5db2, 0x5db3, 0x5db4, 0x5db5, 0x5db6, 0x5db8, 0x5db9, 0x5dba, 0x5dbb, 0x5dbc, 0x5dbd, 0x5dbe, 0x5dbf, 0x5dc0, 0x5dc1, 0x5dc2, 0x5dc3, 0x5dc4, 0x5dc6, 0x5dc7, 0x5dc8, 0x5dc9, 0x5dca, 0x5dcb, 0x5dcc, 0x5dce, 0x5dcf, 0x5dd0, 0x5dd1, 0x5dd2, 0x5dd3, 0x5dd4, 0x5dd5, 0x5dd6, 0x5dd7, 0x5dd8, 0x5dd9, 0x5dda, 0x5ddc, 0x5ddf, 0x5de0, 0x5de3, 0x5de4, 0x5dea, 0x5dec, 0x5ded, 0xfffd, 0x5df0, 0x5df5, 0x5df6, 0x5df8, 0x5df9, 0x5dfa, 0x5dfb, 0x5dfc, 0x5dff, 0x5e00, 0x5e04, 0x5e07, 0x5e09, 0x5e0a, 0x5e0b, 0x5e0d, 0x5e0e, 0x5e12, 0x5e13, 0x5e17, 0x5e1e, 0x5e1f, 0x5e20, 0x5e21, 0x5e22, 0x5e23, 0x5e24, 0x5e25, 0x5e28, 0x5e29, 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2f, 0x5e30, 0x5e32, 0x5e33, 0x5e34, 0x5e35, 0x5e36, 0x5e39, 0x5e3a, 0x5e3e, 0x5e3f, 0x5e40, 0x5e41, 0x5e43, 0x5e46, 0x5e47, 0x5e48, 0x5e49, 0x5e4a, 0x5e4b, 0x5e4d, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e52, 0x5e53, 0x5e56, 0x5e57, 0x5e58, 0x5e59, 0x5e5a, 0x5e5c, 0x5e5d, 0x5e5f, 0x5e60, 0x5e63, 0x5e64, 0x5e65, 0x5e66, 0x5e67, 0x5e68, 0x5e69, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d, 0x5e6e, 0x5e6f, 0x5e70, 0x5e71, 0x5e75, 0x5e77, 0x5e79, 0x5e7e, 0x5e81, 0x5e82, 0x5e83, 0x5e85, 0x5e88, 0x5e89, 0x5e8c, 0x5e8d, 0x5e8e, 0x5e92, 0x5e98, 0x5e9b, 0x5e9d, 0x5ea1, 0x5ea2, 0x5ea3, 0x5ea4, 0x5ea8, 0x5ea9, 0x5eaa, 0x5eab, 0x5eac, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb2, 0x5eb4, 0x5eba, 0x5ebb, 0x5ebc, 0x5ebd, 0x5ebf, 0x5ec0, 0x5ec1, 0x5ec2, 0x5ec3, 0x5ec4, 0x5ec5, + 0x5ec6, 0x5ec7, 0x5ec8, 0x5ecb, 0x5ecc, 0x5ecd, 0x5ece, 0x5ecf, 0x5ed0, 0x5ed4, 0x5ed5, 0x5ed7, 0x5ed8, 0x5ed9, 0x5eda, 0x5edc, 0x5edd, 0x5ede, 0x5edf, 0x5ee0, 0x5ee1, 0x5ee2, 0x5ee3, 0x5ee4, 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee9, 0x5eeb, 0x5eec, 0x5eed, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef2, 0x5ef3, 0x5ef5, 0x5ef8, 0x5ef9, 0x5efb, 0x5efc, 0x5efd, 0x5f05, 0x5f06, 0x5f07, 0x5f09, 0x5f0c, 0x5f0d, 0x5f0e, 0x5f10, 0x5f12, 0x5f14, 0x5f16, 0x5f19, 0x5f1a, 0x5f1c, 0x5f1d, 0x5f1e, 0x5f21, 0x5f22, 0x5f23, 0x5f24, 0xfffd, 0x5f28, 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f32, 0x5f33, 0x5f34, 0x5f35, 0x5f36, 0x5f37, 0x5f38, 0x5f3b, 0x5f3d, 0x5f3e, 0x5f3f, 0x5f41, 0x5f42, 0x5f43, 0x5f44, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49, 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4d, 0x5f4e, 0x5f4f, 0x5f51, 0x5f54, 0x5f59, 0x5f5a, 0x5f5b, 0x5f5c, 0x5f5e, 0x5f5f, 0x5f60, 0x5f63, 0x5f65, 0x5f67, 0x5f68, 0x5f6b, 0x5f6e, 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f76, 0x5f78, 0x5f7a, 0x5f7d, 0x5f7e, 0x5f7f, 0x5f83, 0x5f86, 0x5f8d, 0x5f8e, 0x5f8f, 0x5f91, 0x5f93, 0x5f94, 0x5f96, 0x5f9a, 0x5f9b, 0x5f9d, 0x5f9e, 0x5f9f, 0x5fa0, 0x5fa2, 0x5fa3, 0x5fa4, 0x5fa5, 0x5fa6, 0x5fa7, 0x5fa9, 0x5fab, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb2, 0x5fb3, 0x5fb4, 0x5fb6, 0x5fb8, 0x5fb9, 0x5fba, 0x5fbb, 0x5fbe, 0x5fbf, 0x5fc0, 0x5fc1, 0x5fc2, 0x5fc7, 0x5fc8, 0x5fca, 0x5fcb, 0x5fce, 0x5fd3, 0x5fd4, 0x5fd5, 0x5fda, 0x5fdb, 0x5fdc, 0x5fde, 0x5fdf, 0x5fe2, 0x5fe3, 0x5fe5, 0x5fe6, 0x5fe8, 0x5fe9, 0x5fec, 0x5fef, 0x5ff0, 0x5ff2, 0x5ff3, 0x5ff4, 0x5ff6, 0x5ff7, 0x5ff9, 0x5ffa, 0x5ffc, 0x6007, + 0x6008, 0x6009, 0x600b, 0x600c, 0x6010, 0x6011, 0x6013, 0x6017, 0x6018, 0x601a, 0x601e, 0x601f, 0x6022, 0x6023, 0x6024, 0x602c, 0x602d, 0x602e, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036, 0x6037, 0x6038, 0x6039, 0x603a, 0x603d, 0x603e, 0x6040, 0x6044, 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604a, 0x604c, 0x604e, 0x604f, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605b, 0x605c, 0x605e, 0x605f, 0x6060, 0x6061, 0x6065, 0x6066, 0x606e, 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607e, 0x6080, 0xfffd, 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608a, 0x608b, 0x608e, 0x608f, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098, 0x6099, 0x609c, 0x609e, 0x60a1, 0x60a2, 0x60a4, 0x60a5, 0x60a7, 0x60a9, 0x60aa, 0x60ae, 0x60b0, 0x60b3, 0x60b5, 0x60b6, 0x60b7, 0x60b9, 0x60ba, 0x60bd, 0x60be, 0x60bf, 0x60c0, 0x60c1, 0x60c2, 0x60c3, 0x60c4, 0x60c7, 0x60c8, 0x60c9, 0x60cc, 0x60cd, 0x60ce, 0x60cf, 0x60d0, 0x60d2, 0x60d3, 0x60d4, 0x60d6, 0x60d7, 0x60d9, 0x60db, 0x60de, 0x60e1, 0x60e2, 0x60e3, 0x60e4, 0x60e5, 0x60ea, 0x60f1, 0x60f2, 0x60f5, 0x60f7, 0x60f8, 0x60fb, 0x60fc, 0x60fd, 0x60fe, 0x60ff, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610a, 0x610b, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116, 0x6117, 0x6118, 0x6119, 0x611b, 0x611c, 0x611d, 0x611e, 0x6121, 0x6122, 0x6125, 0x6128, 0x6129, 0x612a, 0x612c, 0x612d, 0x612e, 0x612f, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136, 0x6137, 0x6138, 0x6139, 0x613a, 0x613b, 0x613c, 0x613d, 0x613e, 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146, + 0x6147, 0x6149, 0x614b, 0x614d, 0x614f, 0x6150, 0x6152, 0x6153, 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615a, 0x615b, 0x615c, 0x615e, 0x615f, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166, 0x6169, 0x616a, 0x616b, 0x616c, 0x616d, 0x616e, 0x616f, 0x6171, 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617a, 0x617b, 0x617c, 0x617d, 0x617e, 0x617f, 0x6180, 0x6181, 0x6182, 0x6183, 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618a, 0x618c, 0x618d, 0x618f, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195, 0xfffd, 0x6196, 0x6197, 0x6198, 0x6199, 0x619a, 0x619b, 0x619c, 0x619e, 0x619f, 0x61a0, 0x61a1, 0x61a2, 0x61a3, 0x61a4, 0x61a5, 0x61a6, 0x61aa, 0x61ab, 0x61ad, 0x61ae, 0x61af, 0x61b0, 0x61b1, 0x61b2, 0x61b3, 0x61b4, 0x61b5, 0x61b6, 0x61b8, 0x61b9, 0x61ba, 0x61bb, 0x61bc, 0x61bd, 0x61bf, 0x61c0, 0x61c1, 0x61c3, 0x61c4, 0x61c5, 0x61c6, 0x61c7, 0x61c9, 0x61cc, 0x61cd, 0x61ce, 0x61cf, 0x61d0, 0x61d3, 0x61d5, 0x61d6, 0x61d7, 0x61d8, 0x61d9, 0x61da, 0x61db, 0x61dc, 0x61dd, 0x61de, 0x61df, 0x61e0, 0x61e1, 0x61e2, 0x61e3, 0x61e4, 0x61e5, 0x61e7, 0x61e8, 0x61e9, 0x61ea, 0x61eb, 0x61ec, 0x61ed, 0x61ee, 0x61ef, 0x61f0, 0x61f1, 0x61f2, 0x61f3, 0x61f4, 0x61f6, 0x61f7, 0x61f8, 0x61f9, 0x61fa, 0x61fb, 0x61fc, 0x61fd, 0x61fe, 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207, 0x6209, 0x6213, 0x6214, 0x6219, 0x621c, 0x621d, 0x621e, 0x6220, 0x6223, 0x6226, 0x6227, 0x6228, 0x6229, 0x622b, 0x622d, 0x622f, 0x6230, 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623a, 0x623b, 0x623c, 0x6242, 0x6244, 0x6245, 0x6246, 0x624a, + 0x624f, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625a, 0x625c, 0x625d, 0x625e, 0x625f, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265, 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627a, 0x627b, 0x627d, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287, 0x6288, 0x628b, 0x628c, 0x628d, 0x628e, 0x628f, 0x6290, 0x6294, 0x6299, 0x629c, 0x629d, 0x629e, 0x62a3, 0x62a6, 0x62a7, 0x62a9, 0x62aa, 0x62ad, 0x62ae, 0x62af, 0x62b0, 0x62b2, 0x62b3, 0x62b4, 0x62b6, 0x62b7, 0x62b8, 0x62ba, 0x62be, 0x62c0, 0x62c1, 0xfffd, 0x62c3, 0x62cb, 0x62cf, 0x62d1, 0x62d5, 0x62dd, 0x62de, 0x62e0, 0x62e1, 0x62e4, 0x62ea, 0x62eb, 0x62f0, 0x62f2, 0x62f5, 0x62f8, 0x62f9, 0x62fa, 0x62fb, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306, 0x630a, 0x630b, 0x630c, 0x630d, 0x630f, 0x6310, 0x6312, 0x6313, 0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631c, 0x6326, 0x6327, 0x6329, 0x632c, 0x632d, 0x632e, 0x6330, 0x6331, 0x6333, 0x6334, 0x6335, 0x6336, 0x6337, 0x6338, 0x633b, 0x633c, 0x633e, 0x633f, 0x6340, 0x6341, 0x6344, 0x6347, 0x6348, 0x634a, 0x6351, 0x6352, 0x6353, 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635a, 0x635b, 0x635c, 0x635d, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636a, 0x636b, 0x636c, 0x636f, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375, 0x6378, 0x6379, 0x637c, 0x637d, 0x637e, 0x637f, 0x6381, 0x6383, 0x6384, 0x6385, 0x6386, 0x638b, 0x638d, 0x6391, 0x6393, 0x6394, 0x6395, 0x6397, 0x6399, 0x639a, 0x639b, 0x639c, 0x639d, 0x639e, 0x639f, 0x63a1, 0x63a4, 0x63a6, 0x63ab, 0x63af, 0x63b1, 0x63b2, 0x63b5, 0x63b6, 0x63b9, 0x63bb, 0x63bd, 0x63bf, 0x63c0, + 0x63c1, 0x63c2, 0x63c3, 0x63c5, 0x63c7, 0x63c8, 0x63ca, 0x63cb, 0x63cc, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63d7, 0x63d8, 0x63d9, 0x63da, 0x63db, 0x63dc, 0x63dd, 0x63df, 0x63e2, 0x63e4, 0x63e5, 0x63e6, 0x63e7, 0x63e8, 0x63eb, 0x63ec, 0x63ee, 0x63ef, 0x63f0, 0x63f1, 0x63f3, 0x63f5, 0x63f7, 0x63f9, 0x63fa, 0x63fb, 0x63fc, 0x63fe, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640a, 0x640d, 0x640e, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418, 0x6419, 0x641a, 0x641d, 0x641f, 0x6422, 0x6423, 0x6424, 0xfffd, 0x6425, 0x6427, 0x6428, 0x6429, 0x642b, 0x642e, 0x642f, 0x6430, 0x6431, 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439, 0x643b, 0x643c, 0x643e, 0x6440, 0x6442, 0x6443, 0x6449, 0x644b, 0x644c, 0x644d, 0x644e, 0x644f, 0x6450, 0x6451, 0x6453, 0x6455, 0x6456, 0x6457, 0x6459, 0x645a, 0x645b, 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468, 0x646a, 0x646b, 0x646c, 0x646e, 0x646f, 0x6470, 0x6471, 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x647b, 0x647c, 0x647d, 0x647e, 0x647f, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489, 0x648a, 0x648b, 0x648c, 0x648d, 0x648e, 0x648f, 0x6490, 0x6493, 0x6494, 0x6497, 0x6498, 0x649a, 0x649b, 0x649c, 0x649d, 0x649f, 0x64a0, 0x64a1, 0x64a2, 0x64a3, 0x64a5, 0x64a6, 0x64a7, 0x64a8, 0x64aa, 0x64ab, 0x64af, 0x64b1, 0x64b2, 0x64b3, 0x64b4, 0x64b6, 0x64b9, 0x64bb, 0x64bd, 0x64be, 0x64bf, 0x64c1, 0x64c3, 0x64c4, 0x64c6, 0x64c7, 0x64c8, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64cf, 0x64d1, 0x64d3, 0x64d4, 0x64d5, 0x64d6, 0x64d9, 0x64da, + 0x64db, 0x64dc, 0x64dd, 0x64df, 0x64e0, 0x64e1, 0x64e3, 0x64e5, 0x64e7, 0x64e8, 0x64e9, 0x64ea, 0x64eb, 0x64ec, 0x64ed, 0x64ee, 0x64ef, 0x64f0, 0x64f1, 0x64f2, 0x64f3, 0x64f4, 0x64f5, 0x64f6, 0x64f7, 0x64f8, 0x64f9, 0x64fa, 0x64fb, 0x64fc, 0x64fd, 0x64fe, 0x64ff, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507, 0x6508, 0x650a, 0x650b, 0x650c, 0x650d, 0x650e, 0x650f, 0x6510, 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651a, 0x651b, 0x651c, 0x651d, 0x651e, 0x651f, 0x6520, 0x6521, 0xfffd, 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652a, 0x652c, 0x652d, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653a, 0x653c, 0x653d, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546, 0x6547, 0x654a, 0x654b, 0x654d, 0x654e, 0x6550, 0x6552, 0x6553, 0x6554, 0x6557, 0x6558, 0x655a, 0x655c, 0x655f, 0x6560, 0x6561, 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656a, 0x656d, 0x656e, 0x656f, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657a, 0x657b, 0x657c, 0x657d, 0x657e, 0x657f, 0x6580, 0x6581, 0x6582, 0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658a, 0x658d, 0x658e, 0x658f, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659a, 0x659d, 0x659e, 0x65a0, 0x65a2, 0x65a3, 0x65a6, 0x65a8, 0x65aa, 0x65ac, 0x65ae, 0x65b1, 0x65b2, 0x65b3, 0x65b4, 0x65b5, 0x65b6, 0x65b7, 0x65b8, 0x65ba, 0x65bb, 0x65be, 0x65bf, 0x65c0, 0x65c2, 0x65c7, 0x65c8, 0x65c9, 0x65ca, 0x65cd, 0x65d0, 0x65d1, 0x65d3, 0x65d4, 0x65d5, 0x65d8, 0x65d9, 0x65da, 0x65db, 0x65dc, 0x65dd, 0x65de, 0x65df, 0x65e1, 0x65e3, 0x65e4, 0x65ea, 0x65eb, + 0x65f2, 0x65f3, 0x65f4, 0x65f5, 0x65f8, 0x65f9, 0x65fb, 0x65fc, 0x65fd, 0x65fe, 0x65ff, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608, 0x6609, 0x660b, 0x660d, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617, 0x6618, 0x661a, 0x661b, 0x661c, 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629, 0x662a, 0x662b, 0x662c, 0x662e, 0x6630, 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663a, 0x663b, 0x663d, 0x663f, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648, 0x6649, 0x664a, 0x664d, 0x664e, 0x6650, 0x6651, 0x6658, 0xfffd, 0x6659, 0x665b, 0x665c, 0x665d, 0x665e, 0x6660, 0x6662, 0x6663, 0x6665, 0x6667, 0x6669, 0x666a, 0x666b, 0x666c, 0x666d, 0x6671, 0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667b, 0x667c, 0x667d, 0x667f, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689, 0x668a, 0x668b, 0x668d, 0x668e, 0x668f, 0x6690, 0x6692, 0x6693, 0x6694, 0x6695, 0x6698, 0x6699, 0x669a, 0x669b, 0x669c, 0x669e, 0x669f, 0x66a0, 0x66a1, 0x66a2, 0x66a3, 0x66a4, 0x66a5, 0x66a6, 0x66a9, 0x66aa, 0x66ab, 0x66ac, 0x66ad, 0x66af, 0x66b0, 0x66b1, 0x66b2, 0x66b3, 0x66b5, 0x66b6, 0x66b7, 0x66b8, 0x66ba, 0x66bb, 0x66bc, 0x66bd, 0x66bf, 0x66c0, 0x66c1, 0x66c2, 0x66c3, 0x66c4, 0x66c5, 0x66c6, 0x66c7, 0x66c8, 0x66c9, 0x66ca, 0x66cb, 0x66cc, 0x66cd, 0x66ce, 0x66cf, 0x66d0, 0x66d1, 0x66d2, 0x66d3, 0x66d4, 0x66d5, 0x66d6, 0x66d7, 0x66d8, 0x66da, 0x66de, 0x66df, 0x66e0, 0x66e1, 0x66e2, 0x66e3, 0x66e4, 0x66e5, 0x66e7, 0x66e8, 0x66ea, 0x66eb, 0x66ec, 0x66ed, 0x66ee, 0x66ef, 0x66f1, 0x66f5, 0x66f6, 0x66f8, 0x66fa, 0x66fb, 0x66fd, 0x6701, 0x6702, 0x6703, + 0x6704, 0x6705, 0x6706, 0x6707, 0x670c, 0x670e, 0x670f, 0x6711, 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671a, 0x671c, 0x671e, 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729, 0x672e, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739, 0x673b, 0x673c, 0x673e, 0x673f, 0x6741, 0x6744, 0x6745, 0x6747, 0x674a, 0x674b, 0x674d, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758, 0x6759, 0x675a, 0x675b, 0x675d, 0x6762, 0x6763, 0x6764, 0x6766, 0x6767, 0x676b, 0x676c, 0x676e, 0x6771, 0x6774, 0x6776, 0xfffd, 0x6778, 0x6779, 0x677a, 0x677b, 0x677d, 0x6780, 0x6782, 0x6783, 0x6785, 0x6786, 0x6788, 0x678a, 0x678c, 0x678d, 0x678e, 0x678f, 0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679b, 0x679f, 0x67a0, 0x67a1, 0x67a4, 0x67a6, 0x67a9, 0x67ac, 0x67ae, 0x67b1, 0x67b2, 0x67b4, 0x67b9, 0x67ba, 0x67bb, 0x67bc, 0x67bd, 0x67be, 0x67bf, 0x67c0, 0x67c2, 0x67c5, 0x67c6, 0x67c7, 0x67c8, 0x67c9, 0x67ca, 0x67cb, 0x67cc, 0x67cd, 0x67ce, 0x67d5, 0x67d6, 0x67d7, 0x67db, 0x67df, 0x67e1, 0x67e3, 0x67e4, 0x67e6, 0x67e7, 0x67e8, 0x67ea, 0x67eb, 0x67ed, 0x67ee, 0x67f2, 0x67f5, 0x67f6, 0x67f7, 0x67f8, 0x67f9, 0x67fa, 0x67fb, 0x67fc, 0x67fe, 0x6801, 0x6802, 0x6803, 0x6804, 0x6806, 0x680d, 0x6810, 0x6812, 0x6814, 0x6815, 0x6818, 0x6819, 0x681a, 0x681b, 0x681c, 0x681e, 0x681f, 0x6820, 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682b, 0x682c, 0x682d, 0x682e, 0x682f, 0x6830, 0x6831, 0x6834, 0x6835, 0x6836, 0x683a, 0x683b, 0x683f, 0x6847, 0x684b, 0x684d, 0x684f, 0x6852, 0x6856, 0x6857, 0x6858, 0x6859, 0x685a, 0x685b, + 0x685c, 0x685d, 0x685e, 0x685f, 0x686a, 0x686c, 0x686d, 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879, 0x687a, 0x687b, 0x687c, 0x687d, 0x687e, 0x687f, 0x6880, 0x6882, 0x6884, 0x6887, 0x6888, 0x6889, 0x688a, 0x688b, 0x688c, 0x688d, 0x688e, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898, 0x6899, 0x689a, 0x689b, 0x689c, 0x689d, 0x689e, 0x689f, 0x68a0, 0x68a1, 0x68a3, 0x68a4, 0x68a5, 0x68a9, 0x68aa, 0x68ab, 0x68ac, 0x68ae, 0x68b1, 0x68b2, 0x68b4, 0x68b6, 0x68b7, 0x68b8, 0xfffd, 0x68b9, 0x68ba, 0x68bb, 0x68bc, 0x68bd, 0x68be, 0x68bf, 0x68c1, 0x68c3, 0x68c4, 0x68c5, 0x68c6, 0x68c7, 0x68c8, 0x68ca, 0x68cc, 0x68ce, 0x68cf, 0x68d0, 0x68d1, 0x68d3, 0x68d4, 0x68d6, 0x68d7, 0x68d9, 0x68db, 0x68dc, 0x68dd, 0x68de, 0x68df, 0x68e1, 0x68e2, 0x68e4, 0x68e5, 0x68e6, 0x68e7, 0x68e8, 0x68e9, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68ef, 0x68f2, 0x68f3, 0x68f4, 0x68f6, 0x68f7, 0x68f8, 0x68fb, 0x68fd, 0x68fe, 0x68ff, 0x6900, 0x6902, 0x6903, 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690a, 0x690c, 0x690f, 0x6911, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919, 0x691a, 0x691b, 0x691c, 0x691d, 0x691e, 0x6921, 0x6922, 0x6923, 0x6925, 0x6926, 0x6927, 0x6928, 0x6929, 0x692a, 0x692b, 0x692c, 0x692e, 0x692f, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937, 0x6938, 0x693a, 0x693b, 0x693c, 0x693e, 0x6940, 0x6941, 0x6943, 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694a, 0x694b, 0x694c, 0x694d, 0x694e, 0x694f, 0x6950, 0x6951, 0x6952, 0x6953, 0x6955, 0x6956, 0x6958, 0x6959, 0x695b, 0x695c, 0x695f, + 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696a, 0x696c, 0x696d, 0x696f, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975, 0x6976, 0x697a, 0x697b, 0x697d, 0x697e, 0x697f, 0x6981, 0x6983, 0x6985, 0x698a, 0x698b, 0x698c, 0x698e, 0x698f, 0x6990, 0x6991, 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699a, 0x699d, 0x699e, 0x699f, 0x69a0, 0x69a1, 0x69a2, 0x69a3, 0x69a4, 0x69a5, 0x69a6, 0x69a9, 0x69aa, 0x69ac, 0x69ae, 0x69af, 0x69b0, 0x69b2, 0x69b3, 0x69b5, 0x69b6, 0x69b8, 0x69b9, 0x69ba, 0x69bc, 0x69bd, 0xfffd, 0x69be, 0x69bf, 0x69c0, 0x69c2, 0x69c3, 0x69c4, 0x69c5, 0x69c6, 0x69c7, 0x69c8, 0x69c9, 0x69cb, 0x69cd, 0x69cf, 0x69d1, 0x69d2, 0x69d3, 0x69d5, 0x69d6, 0x69d7, 0x69d8, 0x69d9, 0x69da, 0x69dc, 0x69dd, 0x69de, 0x69e1, 0x69e2, 0x69e3, 0x69e4, 0x69e5, 0x69e6, 0x69e7, 0x69e8, 0x69e9, 0x69ea, 0x69eb, 0x69ec, 0x69ee, 0x69ef, 0x69f0, 0x69f1, 0x69f3, 0x69f4, 0x69f5, 0x69f6, 0x69f7, 0x69f8, 0x69f9, 0x69fa, 0x69fb, 0x69fc, 0x69fe, 0x6a00, 0x6a01, 0x6a02, 0x6a03, 0x6a04, 0x6a05, 0x6a06, 0x6a07, 0x6a08, 0x6a09, 0x6a0b, 0x6a0c, 0x6a0d, 0x6a0e, 0x6a0f, 0x6a10, 0x6a11, 0x6a12, 0x6a13, 0x6a14, 0x6a15, 0x6a16, 0x6a19, 0x6a1a, 0x6a1b, 0x6a1c, 0x6a1d, 0x6a1e, 0x6a20, 0x6a22, 0x6a23, 0x6a24, 0x6a25, 0x6a26, 0x6a27, 0x6a29, 0x6a2b, 0x6a2c, 0x6a2d, 0x6a2e, 0x6a30, 0x6a32, 0x6a33, 0x6a34, 0x6a36, 0x6a37, 0x6a38, 0x6a39, 0x6a3a, 0x6a3b, 0x6a3c, 0x6a3f, 0x6a40, 0x6a41, 0x6a42, 0x6a43, 0x6a45, 0x6a46, 0x6a48, 0x6a49, 0x6a4a, 0x6a4b, 0x6a4c, 0x6a4d, 0x6a4e, 0x6a4f, 0x6a51, 0x6a52, 0x6a53, 0x6a54, 0x6a55, 0x6a56, 0x6a57, 0x6a5a, + 0x6a5c, 0x6a5d, 0x6a5e, 0x6a5f, 0x6a60, 0x6a62, 0x6a63, 0x6a64, 0x6a66, 0x6a67, 0x6a68, 0x6a69, 0x6a6a, 0x6a6b, 0x6a6c, 0x6a6d, 0x6a6e, 0x6a6f, 0x6a70, 0x6a72, 0x6a73, 0x6a74, 0x6a75, 0x6a76, 0x6a77, 0x6a78, 0x6a7a, 0x6a7b, 0x6a7d, 0x6a7e, 0x6a7f, 0x6a81, 0x6a82, 0x6a83, 0x6a85, 0x6a86, 0x6a87, 0x6a88, 0x6a89, 0x6a8a, 0x6a8b, 0x6a8c, 0x6a8d, 0x6a8f, 0x6a92, 0x6a93, 0x6a94, 0x6a95, 0x6a96, 0x6a98, 0x6a99, 0x6a9a, 0x6a9b, 0x6a9c, 0x6a9d, 0x6a9e, 0x6a9f, 0x6aa1, 0x6aa2, 0x6aa3, 0x6aa4, 0x6aa5, 0x6aa6, 0xfffd, 0x6aa7, 0x6aa8, 0x6aaa, 0x6aad, 0x6aae, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab2, 0x6ab3, 0x6ab4, 0x6ab5, 0x6ab6, 0x6ab7, 0x6ab8, 0x6ab9, 0x6aba, 0x6abb, 0x6abc, 0x6abd, 0x6abe, 0x6abf, 0x6ac0, 0x6ac1, 0x6ac2, 0x6ac3, 0x6ac4, 0x6ac5, 0x6ac6, 0x6ac7, 0x6ac8, 0x6ac9, 0x6aca, 0x6acb, 0x6acc, 0x6acd, 0x6ace, 0x6acf, 0x6ad0, 0x6ad1, 0x6ad2, 0x6ad3, 0x6ad4, 0x6ad5, 0x6ad6, 0x6ad7, 0x6ad8, 0x6ad9, 0x6ada, 0x6adb, 0x6adc, 0x6add, 0x6ade, 0x6adf, 0x6ae0, 0x6ae1, 0x6ae2, 0x6ae3, 0x6ae4, 0x6ae5, 0x6ae6, 0x6ae7, 0x6ae8, 0x6ae9, 0x6aea, 0x6aeb, 0x6aec, 0x6aed, 0x6aee, 0x6aef, 0x6af0, 0x6af1, 0x6af2, 0x6af3, 0x6af4, 0x6af5, 0x6af6, 0x6af7, 0x6af8, 0x6af9, 0x6afa, 0x6afb, 0x6afc, 0x6afd, 0x6afe, 0x6aff, 0x6b00, 0x6b01, 0x6b02, 0x6b03, 0x6b04, 0x6b05, 0x6b06, 0x6b07, 0x6b08, 0x6b09, 0x6b0a, 0x6b0b, 0x6b0c, 0x6b0d, 0x6b0e, 0x6b0f, 0x6b10, 0x6b11, 0x6b12, 0x6b13, 0x6b14, 0x6b15, 0x6b16, 0x6b17, 0x6b18, 0x6b19, 0x6b1a, 0x6b1b, 0x6b1c, 0x6b1d, 0x6b1e, 0x6b1f, 0x6b25, 0x6b26, 0x6b28, 0x6b29, 0x6b2a, 0x6b2b, 0x6b2c, 0x6b2d, 0x6b2e, + 0x6b2f, 0x6b30, 0x6b31, 0x6b33, 0x6b34, 0x6b35, 0x6b36, 0x6b38, 0x6b3b, 0x6b3c, 0x6b3d, 0x6b3f, 0x6b40, 0x6b41, 0x6b42, 0x6b44, 0x6b45, 0x6b48, 0x6b4a, 0x6b4b, 0x6b4d, 0x6b4e, 0x6b4f, 0x6b50, 0x6b51, 0x6b52, 0x6b53, 0x6b54, 0x6b55, 0x6b56, 0x6b57, 0x6b58, 0x6b5a, 0x6b5b, 0x6b5c, 0x6b5d, 0x6b5e, 0x6b5f, 0x6b60, 0x6b61, 0x6b68, 0x6b69, 0x6b6b, 0x6b6c, 0x6b6d, 0x6b6e, 0x6b6f, 0x6b70, 0x6b71, 0x6b72, 0x6b73, 0x6b74, 0x6b75, 0x6b76, 0x6b77, 0x6b78, 0x6b7a, 0x6b7d, 0x6b7e, 0x6b7f, 0x6b80, 0x6b85, 0x6b88, 0xfffd, 0x6b8c, 0x6b8e, 0x6b8f, 0x6b90, 0x6b91, 0x6b94, 0x6b95, 0x6b97, 0x6b98, 0x6b99, 0x6b9c, 0x6b9d, 0x6b9e, 0x6b9f, 0x6ba0, 0x6ba2, 0x6ba3, 0x6ba4, 0x6ba5, 0x6ba6, 0x6ba7, 0x6ba8, 0x6ba9, 0x6bab, 0x6bac, 0x6bad, 0x6bae, 0x6baf, 0x6bb0, 0x6bb1, 0x6bb2, 0x6bb6, 0x6bb8, 0x6bb9, 0x6bba, 0x6bbb, 0x6bbc, 0x6bbd, 0x6bbe, 0x6bc0, 0x6bc3, 0x6bc4, 0x6bc6, 0x6bc7, 0x6bc8, 0x6bc9, 0x6bca, 0x6bcc, 0x6bce, 0x6bd0, 0x6bd1, 0x6bd8, 0x6bda, 0x6bdc, 0x6bdd, 0x6bde, 0x6bdf, 0x6be0, 0x6be2, 0x6be3, 0x6be4, 0x6be5, 0x6be6, 0x6be7, 0x6be8, 0x6be9, 0x6bec, 0x6bed, 0x6bee, 0x6bf0, 0x6bf1, 0x6bf2, 0x6bf4, 0x6bf6, 0x6bf7, 0x6bf8, 0x6bfa, 0x6bfb, 0x6bfc, 0x6bfe, 0x6bff, 0x6c00, 0x6c01, 0x6c02, 0x6c03, 0x6c04, 0x6c08, 0x6c09, 0x6c0a, 0x6c0b, 0x6c0c, 0x6c0e, 0x6c12, 0x6c17, 0x6c1c, 0x6c1d, 0x6c1e, 0x6c20, 0x6c23, 0x6c25, 0x6c2b, 0x6c2c, 0x6c2d, 0x6c31, 0x6c33, 0x6c36, 0x6c37, 0x6c39, 0x6c3a, 0x6c3b, 0x6c3c, 0x6c3e, 0x6c3f, 0x6c43, 0x6c44, 0x6c45, 0x6c48, 0x6c4b, 0x6c4c, 0x6c4d, 0x6c4e, 0x6c4f, 0x6c51, 0x6c52, 0x6c53, 0x6c56, 0x6c58, + 0x6c59, 0x6c5a, 0x6c62, 0x6c63, 0x6c65, 0x6c66, 0x6c67, 0x6c6b, 0x6c6c, 0x6c6d, 0x6c6e, 0x6c6f, 0x6c71, 0x6c73, 0x6c75, 0x6c77, 0x6c78, 0x6c7a, 0x6c7b, 0x6c7c, 0x6c7f, 0x6c80, 0x6c84, 0x6c87, 0x6c8a, 0x6c8b, 0x6c8d, 0x6c8e, 0x6c91, 0x6c92, 0x6c95, 0x6c96, 0x6c97, 0x6c98, 0x6c9a, 0x6c9c, 0x6c9d, 0x6c9e, 0x6ca0, 0x6ca2, 0x6ca8, 0x6cac, 0x6caf, 0x6cb0, 0x6cb4, 0x6cb5, 0x6cb6, 0x6cb7, 0x6cba, 0x6cc0, 0x6cc1, 0x6cc2, 0x6cc3, 0x6cc6, 0x6cc7, 0x6cc8, 0x6ccb, 0x6ccd, 0x6cce, 0x6ccf, 0x6cd1, 0x6cd2, 0x6cd8, 0xfffd, 0x6cd9, 0x6cda, 0x6cdc, 0x6cdd, 0x6cdf, 0x6ce4, 0x6ce6, 0x6ce7, 0x6ce9, 0x6cec, 0x6ced, 0x6cf2, 0x6cf4, 0x6cf9, 0x6cff, 0x6d00, 0x6d02, 0x6d03, 0x6d05, 0x6d06, 0x6d08, 0x6d09, 0x6d0a, 0x6d0d, 0x6d0f, 0x6d10, 0x6d11, 0x6d13, 0x6d14, 0x6d15, 0x6d16, 0x6d18, 0x6d1c, 0x6d1d, 0x6d1f, 0x6d20, 0x6d21, 0x6d22, 0x6d23, 0x6d24, 0x6d26, 0x6d28, 0x6d29, 0x6d2c, 0x6d2d, 0x6d2f, 0x6d30, 0x6d34, 0x6d36, 0x6d37, 0x6d38, 0x6d3a, 0x6d3f, 0x6d40, 0x6d42, 0x6d44, 0x6d49, 0x6d4c, 0x6d50, 0x6d55, 0x6d56, 0x6d57, 0x6d58, 0x6d5b, 0x6d5d, 0x6d5f, 0x6d61, 0x6d62, 0x6d64, 0x6d65, 0x6d67, 0x6d68, 0x6d6b, 0x6d6c, 0x6d6d, 0x6d70, 0x6d71, 0x6d72, 0x6d73, 0x6d75, 0x6d76, 0x6d79, 0x6d7a, 0x6d7b, 0x6d7d, 0x6d7e, 0x6d7f, 0x6d80, 0x6d81, 0x6d83, 0x6d84, 0x6d86, 0x6d87, 0x6d8a, 0x6d8b, 0x6d8d, 0x6d8f, 0x6d90, 0x6d92, 0x6d96, 0x6d97, 0x6d98, 0x6d99, 0x6d9a, 0x6d9c, 0x6da2, 0x6da5, 0x6dac, 0x6dad, 0x6db0, 0x6db1, 0x6db3, 0x6db4, 0x6db6, 0x6db7, 0x6db9, 0x6dba, 0x6dbb, 0x6dbc, 0x6dbd, 0x6dbe, 0x6dc1, 0x6dc2, 0x6dc3, 0x6dc8, 0x6dc9, 0x6dca, + 0x6dcd, 0x6dce, 0x6dcf, 0x6dd0, 0x6dd2, 0x6dd3, 0x6dd4, 0x6dd5, 0x6dd7, 0x6dda, 0x6ddb, 0x6ddc, 0x6ddf, 0x6de2, 0x6de3, 0x6de5, 0x6de7, 0x6de8, 0x6de9, 0x6dea, 0x6ded, 0x6def, 0x6df0, 0x6df2, 0x6df4, 0x6df5, 0x6df6, 0x6df8, 0x6dfa, 0x6dfd, 0x6dfe, 0x6dff, 0x6e00, 0x6e01, 0x6e02, 0x6e03, 0x6e04, 0x6e06, 0x6e07, 0x6e08, 0x6e09, 0x6e0b, 0x6e0f, 0x6e12, 0x6e13, 0x6e15, 0x6e18, 0x6e19, 0x6e1b, 0x6e1c, 0x6e1e, 0x6e1f, 0x6e22, 0x6e26, 0x6e27, 0x6e28, 0x6e2a, 0x6e2c, 0x6e2e, 0x6e30, 0x6e31, 0x6e33, 0x6e35, 0xfffd, 0x6e36, 0x6e37, 0x6e39, 0x6e3b, 0x6e3c, 0x6e3d, 0x6e3e, 0x6e3f, 0x6e40, 0x6e41, 0x6e42, 0x6e45, 0x6e46, 0x6e47, 0x6e48, 0x6e49, 0x6e4a, 0x6e4b, 0x6e4c, 0x6e4f, 0x6e50, 0x6e51, 0x6e52, 0x6e55, 0x6e57, 0x6e59, 0x6e5a, 0x6e5c, 0x6e5d, 0x6e5e, 0x6e60, 0x6e61, 0x6e62, 0x6e63, 0x6e64, 0x6e65, 0x6e66, 0x6e67, 0x6e68, 0x6e69, 0x6e6a, 0x6e6c, 0x6e6d, 0x6e6f, 0x6e70, 0x6e71, 0x6e72, 0x6e73, 0x6e74, 0x6e75, 0x6e76, 0x6e77, 0x6e78, 0x6e79, 0x6e7a, 0x6e7b, 0x6e7c, 0x6e7d, 0x6e80, 0x6e81, 0x6e82, 0x6e84, 0x6e87, 0x6e88, 0x6e8a, 0x6e8b, 0x6e8c, 0x6e8d, 0x6e8e, 0x6e91, 0x6e92, 0x6e93, 0x6e94, 0x6e95, 0x6e96, 0x6e97, 0x6e99, 0x6e9a, 0x6e9b, 0x6e9d, 0x6e9e, 0x6ea0, 0x6ea1, 0x6ea3, 0x6ea4, 0x6ea6, 0x6ea8, 0x6ea9, 0x6eab, 0x6eac, 0x6ead, 0x6eae, 0x6eb0, 0x6eb3, 0x6eb5, 0x6eb8, 0x6eb9, 0x6ebc, 0x6ebe, 0x6ebf, 0x6ec0, 0x6ec3, 0x6ec4, 0x6ec5, 0x6ec6, 0x6ec8, 0x6ec9, 0x6eca, 0x6ecc, 0x6ecd, 0x6ece, 0x6ed0, 0x6ed2, 0x6ed6, 0x6ed8, 0x6ed9, 0x6edb, 0x6edc, 0x6edd, 0x6ee3, 0x6ee7, 0x6eea, 0x6eeb, 0x6eec, 0x6eed, 0x6eee, 0x6eef, + 0x6ef0, 0x6ef1, 0x6ef2, 0x6ef3, 0x6ef5, 0x6ef6, 0x6ef7, 0x6ef8, 0x6efa, 0x6efb, 0x6efc, 0x6efd, 0x6efe, 0x6eff, 0x6f00, 0x6f01, 0x6f03, 0x6f04, 0x6f05, 0x6f07, 0x6f08, 0x6f0a, 0x6f0b, 0x6f0c, 0x6f0d, 0x6f0e, 0x6f10, 0x6f11, 0x6f12, 0x6f16, 0x6f17, 0x6f18, 0x6f19, 0x6f1a, 0x6f1b, 0x6f1c, 0x6f1d, 0x6f1e, 0x6f1f, 0x6f21, 0x6f22, 0x6f23, 0x6f25, 0x6f26, 0x6f27, 0x6f28, 0x6f2c, 0x6f2e, 0x6f30, 0x6f32, 0x6f34, 0x6f35, 0x6f37, 0x6f38, 0x6f39, 0x6f3a, 0x6f3b, 0x6f3c, 0x6f3d, 0x6f3f, 0x6f40, 0x6f41, 0x6f42, 0xfffd, 0x6f43, 0x6f44, 0x6f45, 0x6f48, 0x6f49, 0x6f4a, 0x6f4c, 0x6f4e, 0x6f4f, 0x6f50, 0x6f51, 0x6f52, 0x6f53, 0x6f54, 0x6f55, 0x6f56, 0x6f57, 0x6f59, 0x6f5a, 0x6f5b, 0x6f5d, 0x6f5f, 0x6f60, 0x6f61, 0x6f63, 0x6f64, 0x6f65, 0x6f67, 0x6f68, 0x6f69, 0x6f6a, 0x6f6b, 0x6f6c, 0x6f6f, 0x6f70, 0x6f71, 0x6f73, 0x6f75, 0x6f76, 0x6f77, 0x6f79, 0x6f7b, 0x6f7d, 0x6f7e, 0x6f7f, 0x6f80, 0x6f81, 0x6f82, 0x6f83, 0x6f85, 0x6f86, 0x6f87, 0x6f8a, 0x6f8b, 0x6f8f, 0x6f90, 0x6f91, 0x6f92, 0x6f93, 0x6f94, 0x6f95, 0x6f96, 0x6f97, 0x6f98, 0x6f99, 0x6f9a, 0x6f9b, 0x6f9d, 0x6f9e, 0x6f9f, 0x6fa0, 0x6fa2, 0x6fa3, 0x6fa4, 0x6fa5, 0x6fa6, 0x6fa8, 0x6fa9, 0x6faa, 0x6fab, 0x6fac, 0x6fad, 0x6fae, 0x6faf, 0x6fb0, 0x6fb1, 0x6fb2, 0x6fb4, 0x6fb5, 0x6fb7, 0x6fb8, 0x6fba, 0x6fbb, 0x6fbc, 0x6fbd, 0x6fbe, 0x6fbf, 0x6fc1, 0x6fc3, 0x6fc4, 0x6fc5, 0x6fc6, 0x6fc7, 0x6fc8, 0x6fca, 0x6fcb, 0x6fcc, 0x6fcd, 0x6fce, 0x6fcf, 0x6fd0, 0x6fd3, 0x6fd4, 0x6fd5, 0x6fd6, 0x6fd7, 0x6fd8, 0x6fd9, 0x6fda, 0x6fdb, 0x6fdc, 0x6fdd, 0x6fdf, 0x6fe2, 0x6fe3, 0x6fe4, 0x6fe5, + 0x6fe6, 0x6fe7, 0x6fe8, 0x6fe9, 0x6fea, 0x6feb, 0x6fec, 0x6fed, 0x6ff0, 0x6ff1, 0x6ff2, 0x6ff3, 0x6ff4, 0x6ff5, 0x6ff6, 0x6ff7, 0x6ff8, 0x6ff9, 0x6ffa, 0x6ffb, 0x6ffc, 0x6ffd, 0x6ffe, 0x6fff, 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009, 0x700a, 0x700b, 0x700c, 0x700d, 0x700e, 0x700f, 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018, 0x7019, 0x701c, 0x701d, 0x701e, 0x701f, 0x7020, 0x7021, 0x7022, 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702a, 0xfffd, 0x702b, 0x702c, 0x702d, 0x702e, 0x702f, 0x7030, 0x7031, 0x7032, 0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703a, 0x703b, 0x703c, 0x703d, 0x703e, 0x703f, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044, 0x7045, 0x7046, 0x7047, 0x7048, 0x7049, 0x704a, 0x704b, 0x704d, 0x704e, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056, 0x7057, 0x7058, 0x7059, 0x705a, 0x705b, 0x705c, 0x705d, 0x705f, 0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069, 0x706a, 0x706e, 0x7071, 0x7072, 0x7073, 0x7074, 0x7077, 0x7079, 0x707a, 0x707b, 0x707d, 0x7081, 0x7082, 0x7083, 0x7084, 0x7086, 0x7087, 0x7088, 0x708b, 0x708c, 0x708d, 0x708f, 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709a, 0x709b, 0x709e, 0x709f, 0x70a0, 0x70a1, 0x70a2, 0x70a3, 0x70a4, 0x70a5, 0x70a6, 0x70a7, 0x70a8, 0x70a9, 0x70aa, 0x70b0, 0x70b2, 0x70b4, 0x70b5, 0x70b6, 0x70ba, 0x70be, 0x70bf, 0x70c4, 0x70c5, 0x70c6, 0x70c7, 0x70c9, 0x70cb, 0x70cc, 0x70cd, 0x70ce, 0x70cf, 0x70d0, 0x70d1, 0x70d2, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d7, 0x70da, + 0x70dc, 0x70dd, 0x70de, 0x70e0, 0x70e1, 0x70e2, 0x70e3, 0x70e5, 0x70ea, 0x70ee, 0x70f0, 0x70f1, 0x70f2, 0x70f3, 0x70f4, 0x70f5, 0x70f6, 0x70f8, 0x70fa, 0x70fb, 0x70fc, 0x70fe, 0x70ff, 0x7100, 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108, 0x710b, 0x710c, 0x710d, 0x710e, 0x710f, 0x7111, 0x7112, 0x7114, 0x7117, 0x711b, 0x711c, 0x711d, 0x711e, 0x711f, 0x7120, 0x7121, 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712a, 0x712b, 0x712c, 0x712d, 0x712e, 0x7132, 0x7133, 0x7134, 0xfffd, 0x7135, 0x7137, 0x7138, 0x7139, 0x713a, 0x713b, 0x713c, 0x713d, 0x713e, 0x713f, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146, 0x7147, 0x7148, 0x7149, 0x714b, 0x714d, 0x714f, 0x7150, 0x7151, 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 0x715a, 0x715b, 0x715d, 0x715f, 0x7160, 0x7161, 0x7162, 0x7163, 0x7165, 0x7169, 0x716a, 0x716b, 0x716c, 0x716d, 0x716f, 0x7170, 0x7171, 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717b, 0x717c, 0x717e, 0x717f, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x718b, 0x718c, 0x718d, 0x718e, 0x7190, 0x7191, 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719a, 0x719b, 0x719c, 0x719d, 0x719e, 0x71a1, 0x71a2, 0x71a3, 0x71a4, 0x71a5, 0x71a6, 0x71a7, 0x71a9, 0x71aa, 0x71ab, 0x71ad, 0x71ae, 0x71af, 0x71b0, 0x71b1, 0x71b2, 0x71b4, 0x71b6, 0x71b7, 0x71b8, 0x71ba, 0x71bb, 0x71bc, 0x71bd, 0x71be, 0x71bf, 0x71c0, 0x71c1, 0x71c2, 0x71c4, 0x71c5, 0x71c6, 0x71c7, 0x71c8, 0x71c9, 0x71ca, 0x71cb, 0x71cc, 0x71cd, 0x71cf, 0x71d0, 0x71d1, 0x71d2, 0x71d3, + 0x71d6, 0x71d7, 0x71d8, 0x71d9, 0x71da, 0x71db, 0x71dc, 0x71dd, 0x71de, 0x71df, 0x71e1, 0x71e2, 0x71e3, 0x71e4, 0x71e6, 0x71e8, 0x71e9, 0x71ea, 0x71eb, 0x71ec, 0x71ed, 0x71ef, 0x71f0, 0x71f1, 0x71f2, 0x71f3, 0x71f4, 0x71f5, 0x71f6, 0x71f7, 0x71f8, 0x71fa, 0x71fb, 0x71fc, 0x71fd, 0x71fe, 0x71ff, 0x7200, 0x7201, 0x7202, 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720a, 0x720b, 0x720c, 0x720d, 0x720e, 0x720f, 0x7210, 0x7211, 0x7212, 0x7213, 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721a, 0xfffd, 0x721b, 0x721c, 0x721e, 0x721f, 0x7220, 0x7221, 0x7222, 0x7223, 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722b, 0x722d, 0x722e, 0x722f, 0x7232, 0x7233, 0x7234, 0x723a, 0x723c, 0x723e, 0x7240, 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724a, 0x724b, 0x724e, 0x724f, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255, 0x7257, 0x7258, 0x725a, 0x725c, 0x725e, 0x7260, 0x7263, 0x7264, 0x7265, 0x7268, 0x726a, 0x726b, 0x726c, 0x726d, 0x7270, 0x7271, 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727b, 0x727c, 0x727d, 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728c, 0x728e, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297, 0x7298, 0x7299, 0x729a, 0x729b, 0x729c, 0x729d, 0x729e, 0x72a0, 0x72a1, 0x72a2, 0x72a3, 0x72a4, 0x72a5, 0x72a6, 0x72a7, 0x72a8, 0x72a9, 0x72aa, 0x72ab, 0x72ae, 0x72b1, 0x72b2, 0x72b3, 0x72b5, 0x72ba, 0x72bb, 0x72bc, 0x72bd, 0x72be, 0x72bf, 0x72c0, 0x72c5, 0x72c6, 0x72c7, 0x72c9, 0x72ca, 0x72cb, 0x72cc, 0x72cf, 0x72d1, 0x72d3, 0x72d4, 0x72d5, 0x72d6, 0x72d8, 0x72da, 0x72db, + 0xe4c6, 0xe4c7, 0xe4c8, 0xe4c9, 0xe4ca, 0xe4cb, 0xe4cc, 0xe4cd, 0xe4ce, 0xe4cf, 0xe4d0, 0xe4d1, 0xe4d2, 0xe4d3, 0xe4d4, 0xe4d5, 0xe4d6, 0xe4d7, 0xe4d8, 0xe4d9, 0xe4da, 0xe4db, 0xe4dc, 0xe4dd, 0xe4de, 0xe4df, 0xe4e0, 0xe4e1, 0xe4e2, 0xe4e3, 0xe4e4, 0xe4e5, 0xe4e6, 0xe4e7, 0xe4e8, 0xe4e9, 0xe4ea, 0xe4eb, 0xe4ec, 0xe4ed, 0xe4ee, 0xe4ef, 0xe4f0, 0xe4f1, 0xe4f2, 0xe4f3, 0xe4f4, 0xe4f5, 0xe4f6, 0xe4f7, 0xe4f8, 0xe4f9, 0xe4fa, 0xe4fb, 0xe4fc, 0xe4fd, 0xe4fe, 0xe4ff, 0xe500, 0xe501, 0xe502, 0xe503, 0xe504, 0xfffd, 0xe505, 0xe506, 0xe507, 0xe508, 0xe509, 0xe50a, 0xe50b, 0xe50c, 0xe50d, 0xe50e, 0xe50f, 0xe510, 0xe511, 0xe512, 0xe513, 0xe514, 0xe515, 0xe516, 0xe517, 0xe518, 0xe519, 0xe51a, 0xe51b, 0xe51c, 0xe51d, 0xe51e, 0xe51f, 0xe520, 0xe521, 0xe522, 0xe523, 0xe524, 0xe525, 0x3000, 0x3001, 0x3002, 0xb7, 0x2c9, 0x2c7, 0xa8, 0x3003, 0x3005, 0x2014, 0xff5e, 0x2016, 0x2026, 0x2018, 0x2019, 0x201c, 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d, 0x300e, 0x300f, 0x3016, 0x3017, 0x3010, 0x3011, 0xb1, 0xd7, 0xf7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220f, 0x222a, 0x2229, 0x2208, 0x2237, 0x221a, 0x22a5, 0x2225, 0x2220, 0x2312, 0x2299, 0x222b, 0x222e, 0x2261, 0x224c, 0x2248, 0x223d, 0x221d, 0x2260, 0x226e, 0x226f, 0x2264, 0x2265, 0x221e, 0x2235, 0x2234, 0x2642, 0x2640, 0xb0, 0x2032, 0x2033, 0x2103, 0xff04, 0xa4, 0xffe0, 0xffe1, 0x2030, 0xa7, 0x2116, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x203b, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, + 0xe526, 0xe527, 0xe528, 0xe529, 0xe52a, 0xe52b, 0xe52c, 0xe52d, 0xe52e, 0xe52f, 0xe530, 0xe531, 0xe532, 0xe533, 0xe534, 0xe535, 0xe536, 0xe537, 0xe538, 0xe539, 0xe53a, 0xe53b, 0xe53c, 0xe53d, 0xe53e, 0xe53f, 0xe540, 0xe541, 0xe542, 0xe543, 0xe544, 0xe545, 0xe546, 0xe547, 0xe548, 0xe549, 0xe54a, 0xe54b, 0xe54c, 0xe54d, 0xe54e, 0xe54f, 0xe550, 0xe551, 0xe552, 0xe553, 0xe554, 0xe555, 0xe556, 0xe557, 0xe558, 0xe559, 0xe55a, 0xe55b, 0xe55c, 0xe55d, 0xe55e, 0xe55f, 0xe560, 0xe561, 0xe562, 0xe563, 0xe564, 0xfffd, 0xe565, 0xe566, 0xe567, 0xe568, 0xe569, 0xe56a, 0xe56b, 0xe56c, 0xe56d, 0xe56e, 0xe56f, 0xe570, 0xe571, 0xe572, 0xe573, 0xe574, 0xe575, 0xe576, 0xe577, 0xe578, 0xe579, 0xe57a, 0xe57b, 0xe57c, 0xe57d, 0xe57e, 0xe57f, 0xe580, 0xe581, 0xe582, 0xe583, 0xe584, 0xe585, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0xe766, 0xe767, 0xe768, 0xe769, 0xe76a, 0xe76b, 0x2488, 0x2489, 0x248a, 0x248b, 0x248c, 0x248d, 0x248e, 0x248f, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, 0x249a, 0x249b, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d, 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486, 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x20ac, 0xe76d, 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xe76e, 0xe76f, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x216a, 0x216b, 0xe770, 0xe771, + 0xe586, 0xe587, 0xe588, 0xe589, 0xe58a, 0xe58b, 0xe58c, 0xe58d, 0xe58e, 0xe58f, 0xe590, 0xe591, 0xe592, 0xe593, 0xe594, 0xe595, 0xe596, 0xe597, 0xe598, 0xe599, 0xe59a, 0xe59b, 0xe59c, 0xe59d, 0xe59e, 0xe59f, 0xe5a0, 0xe5a1, 0xe5a2, 0xe5a3, 0xe5a4, 0xe5a5, 0xe5a6, 0xe5a7, 0xe5a8, 0xe5a9, 0xe5aa, 0xe5ab, 0xe5ac, 0xe5ad, 0xe5ae, 0xe5af, 0xe5b0, 0xe5b1, 0xe5b2, 0xe5b3, 0xe5b4, 0xe5b5, 0xe5b6, 0xe5b7, 0xe5b8, 0xe5b9, 0xe5ba, 0xe5bb, 0xe5bc, 0xe5bd, 0xe5be, 0xe5bf, 0xe5c0, 0xe5c1, 0xe5c2, 0xe5c3, 0xe5c4, 0xfffd, 0xe5c5, 0xe5c6, 0xe5c7, 0xe5c8, 0xe5c9, 0xe5ca, 0xe5cb, 0xe5cc, 0xe5cd, 0xe5ce, 0xe5cf, 0xe5d0, 0xe5d1, 0xe5d2, 0xe5d3, 0xe5d4, 0xe5d5, 0xe5d6, 0xe5d7, 0xe5d8, 0xe5d9, 0xe5da, 0xe5db, 0xe5dc, 0xe5dd, 0xe5de, 0xe5df, 0xe5e0, 0xe5e1, 0xe5e2, 0xe5e3, 0xe5e4, 0xe5e5, 0xff01, 0xff02, 0xff03, 0xffe5, 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c, 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c, 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xff3c, 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c, 0xff5d, 0xffe3, + 0xe5e6, 0xe5e7, 0xe5e8, 0xe5e9, 0xe5ea, 0xe5eb, 0xe5ec, 0xe5ed, 0xe5ee, 0xe5ef, 0xe5f0, 0xe5f1, 0xe5f2, 0xe5f3, 0xe5f4, 0xe5f5, 0xe5f6, 0xe5f7, 0xe5f8, 0xe5f9, 0xe5fa, 0xe5fb, 0xe5fc, 0xe5fd, 0xe5fe, 0xe5ff, 0xe600, 0xe601, 0xe602, 0xe603, 0xe604, 0xe605, 0xe606, 0xe607, 0xe608, 0xe609, 0xe60a, 0xe60b, 0xe60c, 0xe60d, 0xe60e, 0xe60f, 0xe610, 0xe611, 0xe612, 0xe613, 0xe614, 0xe615, 0xe616, 0xe617, 0xe618, 0xe619, 0xe61a, 0xe61b, 0xe61c, 0xe61d, 0xe61e, 0xe61f, 0xe620, 0xe621, 0xe622, 0xe623, 0xe624, 0xfffd, 0xe625, 0xe626, 0xe627, 0xe628, 0xe629, 0xe62a, 0xe62b, 0xe62c, 0xe62d, 0xe62e, 0xe62f, 0xe630, 0xe631, 0xe632, 0xe633, 0xe634, 0xe635, 0xe636, 0xe637, 0xe638, 0xe639, 0xe63a, 0xe63b, 0xe63c, 0xe63d, 0xe63e, 0xe63f, 0xe640, 0xe641, 0xe642, 0xe643, 0xe644, 0xe645, 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092, 0x3093, 0xe772, 0xe773, 0xe774, 0xe775, 0xe776, 0xe777, 0xe778, 0xe779, 0xe77a, 0xe77b, 0xe77c, + 0xe646, 0xe647, 0xe648, 0xe649, 0xe64a, 0xe64b, 0xe64c, 0xe64d, 0xe64e, 0xe64f, 0xe650, 0xe651, 0xe652, 0xe653, 0xe654, 0xe655, 0xe656, 0xe657, 0xe658, 0xe659, 0xe65a, 0xe65b, 0xe65c, 0xe65d, 0xe65e, 0xe65f, 0xe660, 0xe661, 0xe662, 0xe663, 0xe664, 0xe665, 0xe666, 0xe667, 0xe668, 0xe669, 0xe66a, 0xe66b, 0xe66c, 0xe66d, 0xe66e, 0xe66f, 0xe670, 0xe671, 0xe672, 0xe673, 0xe674, 0xe675, 0xe676, 0xe677, 0xe678, 0xe679, 0xe67a, 0xe67b, 0xe67c, 0xe67d, 0xe67e, 0xe67f, 0xe680, 0xe681, 0xe682, 0xe683, 0xe684, 0xfffd, 0xe685, 0xe686, 0xe687, 0xe688, 0xe689, 0xe68a, 0xe68b, 0xe68c, 0xe68d, 0xe68e, 0xe68f, 0xe690, 0xe691, 0xe692, 0xe693, 0xe694, 0xe695, 0xe696, 0xe697, 0xe698, 0xe699, 0xe69a, 0xe69b, 0xe69c, 0xe69d, 0xe69e, 0xe69f, 0xe6a0, 0xe6a1, 0xe6a2, 0xe6a3, 0xe6a4, 0xe6a5, 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0xe77d, 0xe77e, 0xe77f, 0xe780, 0xe781, 0xe782, 0xe783, 0xe784, + 0xe6a6, 0xe6a7, 0xe6a8, 0xe6a9, 0xe6aa, 0xe6ab, 0xe6ac, 0xe6ad, 0xe6ae, 0xe6af, 0xe6b0, 0xe6b1, 0xe6b2, 0xe6b3, 0xe6b4, 0xe6b5, 0xe6b6, 0xe6b7, 0xe6b8, 0xe6b9, 0xe6ba, 0xe6bb, 0xe6bc, 0xe6bd, 0xe6be, 0xe6bf, 0xe6c0, 0xe6c1, 0xe6c2, 0xe6c3, 0xe6c4, 0xe6c5, 0xe6c6, 0xe6c7, 0xe6c8, 0xe6c9, 0xe6ca, 0xe6cb, 0xe6cc, 0xe6cd, 0xe6ce, 0xe6cf, 0xe6d0, 0xe6d1, 0xe6d2, 0xe6d3, 0xe6d4, 0xe6d5, 0xe6d6, 0xe6d7, 0xe6d8, 0xe6d9, 0xe6da, 0xe6db, 0xe6dc, 0xe6dd, 0xe6de, 0xe6df, 0xe6e0, 0xe6e1, 0xe6e2, 0xe6e3, 0xe6e4, 0xfffd, 0xe6e5, 0xe6e6, 0xe6e7, 0xe6e8, 0xe6e9, 0xe6ea, 0xe6eb, 0xe6ec, 0xe6ed, 0xe6ee, 0xe6ef, 0xe6f0, 0xe6f1, 0xe6f2, 0xe6f3, 0xe6f4, 0xe6f5, 0xe6f6, 0xe6f7, 0xe6f8, 0xe6f9, 0xe6fa, 0xe6fb, 0xe6fc, 0xe6fd, 0xe6fe, 0xe6ff, 0xe700, 0xe701, 0xe702, 0xe703, 0xe704, 0xe705, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397, 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f, 0x3a0, 0x3a1, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7, 0x3a8, 0x3a9, 0xe785, 0xe786, 0xe787, 0xe788, 0xe789, 0xe78a, 0xe78b, 0xe78c, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7, 0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf, 0x3c0, 0x3c1, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c7, 0x3c8, 0x3c9, 0xe78d, 0xe78e, 0xe78f, 0xe790, 0xe791, 0xe792, 0xe793, 0xfe35, 0xfe36, 0xfe39, 0xfe3a, 0xfe3f, 0xfe40, 0xfe3d, 0xfe3e, 0xfe41, 0xfe42, 0xfe43, 0xfe44, 0xe794, 0xe795, 0xfe3b, 0xfe3c, 0xfe37, 0xfe38, 0xfe31, 0xe796, 0xfe33, 0xfe34, 0xe797, 0xe798, 0xe799, 0xe79a, 0xe79b, 0xe79c, 0xe79d, 0xe79e, 0xe79f, + 0xe706, 0xe707, 0xe708, 0xe709, 0xe70a, 0xe70b, 0xe70c, 0xe70d, 0xe70e, 0xe70f, 0xe710, 0xe711, 0xe712, 0xe713, 0xe714, 0xe715, 0xe716, 0xe717, 0xe718, 0xe719, 0xe71a, 0xe71b, 0xe71c, 0xe71d, 0xe71e, 0xe71f, 0xe720, 0xe721, 0xe722, 0xe723, 0xe724, 0xe725, 0xe726, 0xe727, 0xe728, 0xe729, 0xe72a, 0xe72b, 0xe72c, 0xe72d, 0xe72e, 0xe72f, 0xe730, 0xe731, 0xe732, 0xe733, 0xe734, 0xe735, 0xe736, 0xe737, 0xe738, 0xe739, 0xe73a, 0xe73b, 0xe73c, 0xe73d, 0xe73e, 0xe73f, 0xe740, 0xe741, 0xe742, 0xe743, 0xe744, 0xfffd, 0xe745, 0xe746, 0xe747, 0xe748, 0xe749, 0xe74a, 0xe74b, 0xe74c, 0xe74d, 0xe74e, 0xe74f, 0xe750, 0xe751, 0xe752, 0xe753, 0xe754, 0xe755, 0xe756, 0xe757, 0xe758, 0xe759, 0xe75a, 0xe75b, 0xe75c, 0xe75d, 0xe75e, 0xe75f, 0xe760, 0xe761, 0xe762, 0xe763, 0xe764, 0xe765, 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x401, 0x416, 0x417, 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f, 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427, 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f, 0xe7a0, 0xe7a1, 0xe7a2, 0xe7a3, 0xe7a4, 0xe7a5, 0xe7a6, 0xe7a7, 0xe7a8, 0xe7a9, 0xe7aa, 0xe7ab, 0xe7ac, 0xe7ad, 0xe7ae, 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x451, 0x436, 0x437, 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f, 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447, 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f, 0xe7af, 0xe7b0, 0xe7b1, 0xe7b2, 0xe7b3, 0xe7b4, 0xe7b5, 0xe7b6, 0xe7b7, 0xe7b8, 0xe7b9, 0xe7ba, 0xe7bb, + 0x2ca, 0x2cb, 0x2d9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105, 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221f, 0x2223, 0x2252, 0x2266, 0x2267, 0x22bf, 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f, 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f, 0x2570, 0x2571, 0x2572, 0x2573, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587, 0xfffd, 0x2588, 0x2589, 0x258a, 0x258b, 0x258c, 0x258d, 0x258e, 0x258f, 0x2593, 0x2594, 0x2595, 0x25bc, 0x25bd, 0x25e2, 0x25e3, 0x25e4, 0x25e5, 0x2609, 0x2295, 0x3012, 0x301d, 0x301e, 0xe7bc, 0xe7bd, 0xe7be, 0xe7bf, 0xe7c0, 0xe7c1, 0xe7c2, 0xe7c3, 0xe7c4, 0xe7c5, 0xe7c6, 0x101, 0xe1, 0x1ce, 0xe0, 0x113, 0xe9, 0x11b, 0xe8, 0x12b, 0xed, 0x1d0, 0xec, 0x14d, 0xf3, 0x1d2, 0xf2, 0x16b, 0xfa, 0x1d4, 0xf9, 0x1d6, 0x1d8, 0x1da, 0x1dc, 0xfc, 0xea, 0x251, 0xe7c7, 0x144, 0x148, 0x1f9, 0x261, 0xe7c9, 0xe7ca, 0xe7cb, 0xe7cc, 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x310a, 0x310b, 0x310c, 0x310d, 0x310e, 0x310f, 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x311a, 0x311b, 0x311c, 0x311d, 0x311e, 0x311f, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129, 0xe7cd, 0xe7ce, 0xe7cf, 0xe7d0, 0xe7d1, 0xe7d2, 0xe7d3, 0xe7d4, 0xe7d5, 0xe7d6, 0xe7d7, 0xe7d8, 0xe7d9, 0xe7da, 0xe7db, 0xe7dc, 0xe7dd, 0xe7de, 0xe7df, 0xe7e0, 0xe7e1, + 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029, 0x32a3, 0x338e, 0x338f, 0x339c, 0x339d, 0x339e, 0x33a1, 0x33c4, 0x33ce, 0x33d1, 0x33d2, 0x33d5, 0xfe30, 0xffe2, 0xffe4, 0xe7e2, 0x2121, 0x3231, 0xe7e3, 0x2010, 0xe7e4, 0xe7e5, 0xe7e6, 0x30fc, 0x309b, 0x309c, 0x30fd, 0x30fe, 0x3006, 0x309d, 0x309e, 0xfe49, 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4d, 0xfe4e, 0xfe4f, 0xfe50, 0xfe51, 0xfe52, 0xfe54, 0xfe55, 0xfe56, 0xfe57, 0xfe59, 0xfe5a, 0xfe5b, 0xfe5c, 0xfe5d, 0xfe5e, 0xfe5f, 0xfe60, 0xfe61, 0xfffd, 0xfe62, 0xfe63, 0xfe64, 0xfe65, 0xfe66, 0xfe68, 0xfe69, 0xfe6a, 0xfe6b, 0x303e, 0x2ff0, 0x2ff1, 0x2ff2, 0x2ff3, 0x2ff4, 0x2ff5, 0x2ff6, 0x2ff7, 0x2ff8, 0x2ff9, 0x2ffa, 0x2ffb, 0x3007, 0xe7f4, 0xe7f5, 0xe7f6, 0xe7f7, 0xe7f8, 0xe7f9, 0xe7fa, 0xe7fb, 0xe7fc, 0xe7fd, 0xe7fe, 0xe7ff, 0xe800, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250a, 0x250b, 0x250c, 0x250d, 0x250e, 0x250f, 0x2510, 0x2511, 0x2512, 0x2513, 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251a, 0x251b, 0x251c, 0x251d, 0x251e, 0x251f, 0x2520, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f, 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254a, 0x254b, 0xe801, 0xe802, 0xe803, 0xe804, 0xe805, 0xe806, 0xe807, 0xe808, 0xe809, 0xe80a, 0xe80b, 0xe80c, 0xe80d, 0xe80e, 0xe80f, + 0x72dc, 0x72dd, 0x72df, 0x72e2, 0x72e3, 0x72e4, 0x72e5, 0x72e6, 0x72e7, 0x72ea, 0x72eb, 0x72f5, 0x72f6, 0x72f9, 0x72fd, 0x72fe, 0x72ff, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308, 0x7309, 0x730b, 0x730c, 0x730d, 0x730f, 0x7310, 0x7311, 0x7312, 0x7314, 0x7318, 0x7319, 0x731a, 0x731f, 0x7320, 0x7323, 0x7324, 0x7326, 0x7327, 0x7328, 0x732d, 0x732f, 0x7330, 0x7332, 0x7333, 0x7335, 0x7336, 0x733a, 0x733b, 0x733c, 0x733d, 0x7340, 0x7341, 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348, 0xfffd, 0x7349, 0x734a, 0x734b, 0x734c, 0x734e, 0x734f, 0x7351, 0x7353, 0x7354, 0x7355, 0x7356, 0x7358, 0x7359, 0x735a, 0x735b, 0x735c, 0x735d, 0x735e, 0x735f, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365, 0x7366, 0x7367, 0x7368, 0x7369, 0x736a, 0x736b, 0x736e, 0x7370, 0x7371, 0xe000, 0xe001, 0xe002, 0xe003, 0xe004, 0xe005, 0xe006, 0xe007, 0xe008, 0xe009, 0xe00a, 0xe00b, 0xe00c, 0xe00d, 0xe00e, 0xe00f, 0xe010, 0xe011, 0xe012, 0xe013, 0xe014, 0xe015, 0xe016, 0xe017, 0xe018, 0xe019, 0xe01a, 0xe01b, 0xe01c, 0xe01d, 0xe01e, 0xe01f, 0xe020, 0xe021, 0xe022, 0xe023, 0xe024, 0xe025, 0xe026, 0xe027, 0xe028, 0xe029, 0xe02a, 0xe02b, 0xe02c, 0xe02d, 0xe02e, 0xe02f, 0xe030, 0xe031, 0xe032, 0xe033, 0xe034, 0xe035, 0xe036, 0xe037, 0xe038, 0xe039, 0xe03a, 0xe03b, 0xe03c, 0xe03d, 0xe03e, 0xe03f, 0xe040, 0xe041, 0xe042, 0xe043, 0xe044, 0xe045, 0xe046, 0xe047, 0xe048, 0xe049, 0xe04a, 0xe04b, 0xe04c, 0xe04d, 0xe04e, 0xe04f, 0xe050, 0xe051, 0xe052, 0xe053, 0xe054, 0xe055, 0xe056, 0xe057, 0xe058, 0xe059, 0xe05a, 0xe05b, 0xe05c, 0xe05d, + 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379, 0x737a, 0x737b, 0x737c, 0x737d, 0x737f, 0x7380, 0x7381, 0x7382, 0x7383, 0x7385, 0x7386, 0x7388, 0x738a, 0x738c, 0x738d, 0x738f, 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399, 0x739a, 0x739c, 0x739d, 0x739e, 0x73a0, 0x73a1, 0x73a3, 0x73a4, 0x73a5, 0x73a6, 0x73a7, 0x73a8, 0x73aa, 0x73ac, 0x73ad, 0x73b1, 0x73b4, 0x73b5, 0x73b6, 0x73b8, 0x73b9, 0x73bc, 0x73bd, 0x73be, 0x73bf, 0x73c1, 0x73c3, 0x73c4, 0x73c5, 0x73c6, 0x73c7, 0xfffd, 0x73cb, 0x73cc, 0x73ce, 0x73d2, 0x73d3, 0x73d4, 0x73d5, 0x73d6, 0x73d7, 0x73d8, 0x73da, 0x73db, 0x73dc, 0x73dd, 0x73df, 0x73e1, 0x73e2, 0x73e3, 0x73e4, 0x73e6, 0x73e8, 0x73ea, 0x73eb, 0x73ec, 0x73ee, 0x73ef, 0x73f0, 0x73f1, 0x73f3, 0x73f4, 0x73f5, 0x73f6, 0x73f7, 0xe05e, 0xe05f, 0xe060, 0xe061, 0xe062, 0xe063, 0xe064, 0xe065, 0xe066, 0xe067, 0xe068, 0xe069, 0xe06a, 0xe06b, 0xe06c, 0xe06d, 0xe06e, 0xe06f, 0xe070, 0xe071, 0xe072, 0xe073, 0xe074, 0xe075, 0xe076, 0xe077, 0xe078, 0xe079, 0xe07a, 0xe07b, 0xe07c, 0xe07d, 0xe07e, 0xe07f, 0xe080, 0xe081, 0xe082, 0xe083, 0xe084, 0xe085, 0xe086, 0xe087, 0xe088, 0xe089, 0xe08a, 0xe08b, 0xe08c, 0xe08d, 0xe08e, 0xe08f, 0xe090, 0xe091, 0xe092, 0xe093, 0xe094, 0xe095, 0xe096, 0xe097, 0xe098, 0xe099, 0xe09a, 0xe09b, 0xe09c, 0xe09d, 0xe09e, 0xe09f, 0xe0a0, 0xe0a1, 0xe0a2, 0xe0a3, 0xe0a4, 0xe0a5, 0xe0a6, 0xe0a7, 0xe0a8, 0xe0a9, 0xe0aa, 0xe0ab, 0xe0ac, 0xe0ad, 0xe0ae, 0xe0af, 0xe0b0, 0xe0b1, 0xe0b2, 0xe0b3, 0xe0b4, 0xe0b5, 0xe0b6, 0xe0b7, 0xe0b8, 0xe0b9, 0xe0ba, 0xe0bb, + 0x73f8, 0x73f9, 0x73fa, 0x73fb, 0x73fc, 0x73fd, 0x73fe, 0x73ff, 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740b, 0x740c, 0x740d, 0x740e, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416, 0x7417, 0x7418, 0x7419, 0x741c, 0x741d, 0x741e, 0x741f, 0x7420, 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742b, 0x742d, 0x742f, 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743a, 0x743b, 0x743d, 0x743e, 0x743f, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446, 0x7447, 0x7448, 0x7449, 0x744a, 0x744b, 0x744c, 0x744d, 0xfffd, 0x744e, 0x744f, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456, 0x7458, 0x745d, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465, 0x7466, 0x7467, 0x7468, 0x7469, 0x746a, 0x746b, 0x746c, 0x746e, 0x746f, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479, 0x747a, 0xe0bc, 0xe0bd, 0xe0be, 0xe0bf, 0xe0c0, 0xe0c1, 0xe0c2, 0xe0c3, 0xe0c4, 0xe0c5, 0xe0c6, 0xe0c7, 0xe0c8, 0xe0c9, 0xe0ca, 0xe0cb, 0xe0cc, 0xe0cd, 0xe0ce, 0xe0cf, 0xe0d0, 0xe0d1, 0xe0d2, 0xe0d3, 0xe0d4, 0xe0d5, 0xe0d6, 0xe0d7, 0xe0d8, 0xe0d9, 0xe0da, 0xe0db, 0xe0dc, 0xe0dd, 0xe0de, 0xe0df, 0xe0e0, 0xe0e1, 0xe0e2, 0xe0e3, 0xe0e4, 0xe0e5, 0xe0e6, 0xe0e7, 0xe0e8, 0xe0e9, 0xe0ea, 0xe0eb, 0xe0ec, 0xe0ed, 0xe0ee, 0xe0ef, 0xe0f0, 0xe0f1, 0xe0f2, 0xe0f3, 0xe0f4, 0xe0f5, 0xe0f6, 0xe0f7, 0xe0f8, 0xe0f9, 0xe0fa, 0xe0fb, 0xe0fc, 0xe0fd, 0xe0fe, 0xe0ff, 0xe100, 0xe101, 0xe102, 0xe103, 0xe104, 0xe105, 0xe106, 0xe107, 0xe108, 0xe109, 0xe10a, 0xe10b, 0xe10c, 0xe10d, 0xe10e, 0xe10f, 0xe110, 0xe111, 0xe112, 0xe113, 0xe114, 0xe115, 0xe116, 0xe117, 0xe118, 0xe119, + 0x747b, 0x747c, 0x747d, 0x747f, 0x7482, 0x7484, 0x7485, 0x7486, 0x7488, 0x7489, 0x748a, 0x748c, 0x748d, 0x748f, 0x7491, 0x7492, 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749a, 0x749b, 0x749d, 0x749f, 0x74a0, 0x74a1, 0x74a2, 0x74a3, 0x74a4, 0x74a5, 0x74a6, 0x74aa, 0x74ab, 0x74ac, 0x74ad, 0x74ae, 0x74af, 0x74b0, 0x74b1, 0x74b2, 0x74b3, 0x74b4, 0x74b5, 0x74b6, 0x74b7, 0x74b8, 0x74b9, 0x74bb, 0x74bc, 0x74bd, 0x74be, 0x74bf, 0x74c0, 0x74c1, 0x74c2, 0x74c3, 0x74c4, 0x74c5, 0x74c6, 0x74c7, 0xfffd, 0x74c8, 0x74c9, 0x74ca, 0x74cb, 0x74cc, 0x74cd, 0x74ce, 0x74cf, 0x74d0, 0x74d1, 0x74d3, 0x74d4, 0x74d5, 0x74d6, 0x74d7, 0x74d8, 0x74d9, 0x74da, 0x74db, 0x74dd, 0x74df, 0x74e1, 0x74e5, 0x74e7, 0x74e8, 0x74e9, 0x74ea, 0x74eb, 0x74ec, 0x74ed, 0x74f0, 0x74f1, 0x74f2, 0xe11a, 0xe11b, 0xe11c, 0xe11d, 0xe11e, 0xe11f, 0xe120, 0xe121, 0xe122, 0xe123, 0xe124, 0xe125, 0xe126, 0xe127, 0xe128, 0xe129, 0xe12a, 0xe12b, 0xe12c, 0xe12d, 0xe12e, 0xe12f, 0xe130, 0xe131, 0xe132, 0xe133, 0xe134, 0xe135, 0xe136, 0xe137, 0xe138, 0xe139, 0xe13a, 0xe13b, 0xe13c, 0xe13d, 0xe13e, 0xe13f, 0xe140, 0xe141, 0xe142, 0xe143, 0xe144, 0xe145, 0xe146, 0xe147, 0xe148, 0xe149, 0xe14a, 0xe14b, 0xe14c, 0xe14d, 0xe14e, 0xe14f, 0xe150, 0xe151, 0xe152, 0xe153, 0xe154, 0xe155, 0xe156, 0xe157, 0xe158, 0xe159, 0xe15a, 0xe15b, 0xe15c, 0xe15d, 0xe15e, 0xe15f, 0xe160, 0xe161, 0xe162, 0xe163, 0xe164, 0xe165, 0xe166, 0xe167, 0xe168, 0xe169, 0xe16a, 0xe16b, 0xe16c, 0xe16d, 0xe16e, 0xe16f, 0xe170, 0xe171, 0xe172, 0xe173, 0xe174, 0xe175, 0xe176, 0xe177, + 0x74f3, 0x74f5, 0x74f8, 0x74f9, 0x74fa, 0x74fb, 0x74fc, 0x74fd, 0x74fe, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507, 0x7508, 0x7509, 0x750a, 0x750b, 0x750c, 0x750e, 0x7510, 0x7512, 0x7514, 0x7515, 0x7516, 0x7517, 0x751b, 0x751d, 0x751e, 0x7520, 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752a, 0x752e, 0x7534, 0x7536, 0x7539, 0x753c, 0x753d, 0x753f, 0x7541, 0x7542, 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754a, 0x754d, 0x7550, 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558, 0xfffd, 0x755d, 0x755e, 0x755f, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564, 0x7567, 0x7568, 0x7569, 0x756b, 0x756c, 0x756d, 0x756e, 0x756f, 0x7570, 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757a, 0x757b, 0x757c, 0x757d, 0x757e, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585, 0x7587, 0xe178, 0xe179, 0xe17a, 0xe17b, 0xe17c, 0xe17d, 0xe17e, 0xe17f, 0xe180, 0xe181, 0xe182, 0xe183, 0xe184, 0xe185, 0xe186, 0xe187, 0xe188, 0xe189, 0xe18a, 0xe18b, 0xe18c, 0xe18d, 0xe18e, 0xe18f, 0xe190, 0xe191, 0xe192, 0xe193, 0xe194, 0xe195, 0xe196, 0xe197, 0xe198, 0xe199, 0xe19a, 0xe19b, 0xe19c, 0xe19d, 0xe19e, 0xe19f, 0xe1a0, 0xe1a1, 0xe1a2, 0xe1a3, 0xe1a4, 0xe1a5, 0xe1a6, 0xe1a7, 0xe1a8, 0xe1a9, 0xe1aa, 0xe1ab, 0xe1ac, 0xe1ad, 0xe1ae, 0xe1af, 0xe1b0, 0xe1b1, 0xe1b2, 0xe1b3, 0xe1b4, 0xe1b5, 0xe1b6, 0xe1b7, 0xe1b8, 0xe1b9, 0xe1ba, 0xe1bb, 0xe1bc, 0xe1bd, 0xe1be, 0xe1bf, 0xe1c0, 0xe1c1, 0xe1c2, 0xe1c3, 0xe1c4, 0xe1c5, 0xe1c6, 0xe1c7, 0xe1c8, 0xe1c9, 0xe1ca, 0xe1cb, 0xe1cc, 0xe1cd, 0xe1ce, 0xe1cf, 0xe1d0, 0xe1d1, 0xe1d2, 0xe1d3, 0xe1d4, 0xe1d5, + 0x7588, 0x7589, 0x758a, 0x758c, 0x758d, 0x758e, 0x7590, 0x7593, 0x7595, 0x7598, 0x759b, 0x759c, 0x759e, 0x75a2, 0x75a6, 0x75a7, 0x75a8, 0x75a9, 0x75aa, 0x75ad, 0x75b6, 0x75b7, 0x75ba, 0x75bb, 0x75bf, 0x75c0, 0x75c1, 0x75c6, 0x75cb, 0x75cc, 0x75ce, 0x75cf, 0x75d0, 0x75d1, 0x75d3, 0x75d7, 0x75d9, 0x75da, 0x75dc, 0x75dd, 0x75df, 0x75e0, 0x75e1, 0x75e5, 0x75e9, 0x75ec, 0x75ed, 0x75ee, 0x75ef, 0x75f2, 0x75f3, 0x75f5, 0x75f6, 0x75f7, 0x75f8, 0x75fa, 0x75fb, 0x75fd, 0x75fe, 0x7602, 0x7604, 0x7606, 0x7607, 0xfffd, 0x7608, 0x7609, 0x760b, 0x760d, 0x760e, 0x760f, 0x7611, 0x7612, 0x7613, 0x7614, 0x7616, 0x761a, 0x761c, 0x761d, 0x761e, 0x7621, 0x7623, 0x7627, 0x7628, 0x762c, 0x762e, 0x762f, 0x7631, 0x7632, 0x7636, 0x7637, 0x7639, 0x763a, 0x763b, 0x763d, 0x7641, 0x7642, 0x7644, 0xe1d6, 0xe1d7, 0xe1d8, 0xe1d9, 0xe1da, 0xe1db, 0xe1dc, 0xe1dd, 0xe1de, 0xe1df, 0xe1e0, 0xe1e1, 0xe1e2, 0xe1e3, 0xe1e4, 0xe1e5, 0xe1e6, 0xe1e7, 0xe1e8, 0xe1e9, 0xe1ea, 0xe1eb, 0xe1ec, 0xe1ed, 0xe1ee, 0xe1ef, 0xe1f0, 0xe1f1, 0xe1f2, 0xe1f3, 0xe1f4, 0xe1f5, 0xe1f6, 0xe1f7, 0xe1f8, 0xe1f9, 0xe1fa, 0xe1fb, 0xe1fc, 0xe1fd, 0xe1fe, 0xe1ff, 0xe200, 0xe201, 0xe202, 0xe203, 0xe204, 0xe205, 0xe206, 0xe207, 0xe208, 0xe209, 0xe20a, 0xe20b, 0xe20c, 0xe20d, 0xe20e, 0xe20f, 0xe210, 0xe211, 0xe212, 0xe213, 0xe214, 0xe215, 0xe216, 0xe217, 0xe218, 0xe219, 0xe21a, 0xe21b, 0xe21c, 0xe21d, 0xe21e, 0xe21f, 0xe220, 0xe221, 0xe222, 0xe223, 0xe224, 0xe225, 0xe226, 0xe227, 0xe228, 0xe229, 0xe22a, 0xe22b, 0xe22c, 0xe22d, 0xe22e, 0xe22f, 0xe230, 0xe231, 0xe232, 0xe233, + 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764a, 0x764b, 0x764e, 0x764f, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658, 0x7659, 0x765a, 0x765b, 0x765d, 0x765f, 0x7660, 0x7661, 0x7662, 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766a, 0x766c, 0x766d, 0x766e, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675, 0x7676, 0x7677, 0x7679, 0x767a, 0x767c, 0x767f, 0x7680, 0x7681, 0x7683, 0x7685, 0x7689, 0x768a, 0x768c, 0x768d, 0x768f, 0x7690, 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769a, 0x769b, 0xfffd, 0x769c, 0x769d, 0x769e, 0x769f, 0x76a0, 0x76a1, 0x76a2, 0x76a3, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76a9, 0x76aa, 0x76ab, 0x76ac, 0x76ad, 0x76af, 0x76b0, 0x76b3, 0x76b5, 0x76b6, 0x76b7, 0x76b8, 0x76b9, 0x76ba, 0x76bb, 0x76bc, 0x76bd, 0x76be, 0x76c0, 0x76c1, 0x76c3, 0x554a, 0x963f, 0x57c3, 0x6328, 0x54ce, 0x5509, 0x54c0, 0x7691, 0x764c, 0x853c, 0x77ee, 0x827e, 0x788d, 0x7231, 0x9698, 0x978d, 0x6c28, 0x5b89, 0x4ffa, 0x6309, 0x6697, 0x5cb8, 0x80fa, 0x6848, 0x80ae, 0x6602, 0x76ce, 0x51f9, 0x6556, 0x71ac, 0x7ff1, 0x8884, 0x50b2, 0x5965, 0x61ca, 0x6fb3, 0x82ad, 0x634c, 0x6252, 0x53ed, 0x5427, 0x7b06, 0x516b, 0x75a4, 0x5df4, 0x62d4, 0x8dcb, 0x9776, 0x628a, 0x8019, 0x575d, 0x9738, 0x7f62, 0x7238, 0x767d, 0x67cf, 0x767e, 0x6446, 0x4f70, 0x8d25, 0x62dc, 0x7a17, 0x6591, 0x73ed, 0x642c, 0x6273, 0x822c, 0x9881, 0x677f, 0x7248, 0x626e, 0x62cc, 0x4f34, 0x74e3, 0x534a, 0x529e, 0x7eca, 0x90a6, 0x5e2e, 0x6886, 0x699c, 0x8180, 0x7ed1, 0x68d2, 0x78c5, 0x868c, 0x9551, 0x508d, 0x8c24, 0x82de, 0x80de, 0x5305, 0x8912, 0x5265, + 0x76c4, 0x76c7, 0x76c9, 0x76cb, 0x76cc, 0x76d3, 0x76d5, 0x76d9, 0x76da, 0x76dc, 0x76dd, 0x76de, 0x76e0, 0x76e1, 0x76e2, 0x76e3, 0x76e4, 0x76e6, 0x76e7, 0x76e8, 0x76e9, 0x76ea, 0x76eb, 0x76ec, 0x76ed, 0x76f0, 0x76f3, 0x76f5, 0x76f6, 0x76f7, 0x76fa, 0x76fb, 0x76fd, 0x76ff, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770a, 0x770c, 0x770e, 0x770f, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714, 0x7715, 0x7716, 0x7717, 0x7718, 0x771b, 0x771c, 0x771d, 0x771e, 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772a, 0x772b, 0xfffd, 0x772c, 0x772e, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739, 0x773b, 0x773d, 0x773e, 0x773f, 0x7742, 0x7744, 0x7745, 0x7746, 0x7748, 0x7749, 0x774a, 0x774b, 0x774c, 0x774d, 0x774e, 0x774f, 0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759, 0x775c, 0x8584, 0x96f9, 0x4fdd, 0x5821, 0x9971, 0x5b9d, 0x62b1, 0x62a5, 0x66b4, 0x8c79, 0x9c8d, 0x7206, 0x676f, 0x7891, 0x60b2, 0x5351, 0x5317, 0x8f88, 0x80cc, 0x8d1d, 0x94a1, 0x500d, 0x72c8, 0x5907, 0x60eb, 0x7119, 0x88ab, 0x5954, 0x82ef, 0x672c, 0x7b28, 0x5d29, 0x7ef7, 0x752d, 0x6cf5, 0x8e66, 0x8ff8, 0x903c, 0x9f3b, 0x6bd4, 0x9119, 0x7b14, 0x5f7c, 0x78a7, 0x84d6, 0x853d, 0x6bd5, 0x6bd9, 0x6bd6, 0x5e01, 0x5e87, 0x75f9, 0x95ed, 0x655d, 0x5f0a, 0x5fc5, 0x8f9f, 0x58c1, 0x81c2, 0x907f, 0x965b, 0x97ad, 0x8fb9, 0x7f16, 0x8d2c, 0x6241, 0x4fbf, 0x53d8, 0x535e, 0x8fa8, 0x8fa9, 0x8fab, 0x904d, 0x6807, 0x5f6a, 0x8198, 0x8868, 0x9cd6, 0x618b, 0x522b, 0x762a, 0x5f6c, 0x658c, 0x6fd2, 0x6ee8, 0x5bbe, 0x6448, 0x5175, 0x51b0, 0x67c4, 0x4e19, 0x79c9, 0x997c, 0x70b3, + 0x775d, 0x775e, 0x775f, 0x7760, 0x7764, 0x7767, 0x7769, 0x776a, 0x776d, 0x776e, 0x776f, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774, 0x7775, 0x7776, 0x7777, 0x7778, 0x777a, 0x777b, 0x777c, 0x7781, 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778a, 0x778b, 0x778f, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798, 0x7799, 0x779a, 0x779b, 0x779c, 0x779d, 0x779e, 0x77a1, 0x77a3, 0x77a4, 0x77a6, 0x77a8, 0x77ab, 0x77ad, 0x77ae, 0x77af, 0x77b1, 0x77b2, 0x77b4, 0x77b6, 0x77b7, 0x77b8, 0x77b9, 0x77ba, 0xfffd, 0x77bc, 0x77be, 0x77c0, 0x77c1, 0x77c2, 0x77c3, 0x77c4, 0x77c5, 0x77c6, 0x77c7, 0x77c8, 0x77c9, 0x77ca, 0x77cb, 0x77cc, 0x77ce, 0x77cf, 0x77d0, 0x77d1, 0x77d2, 0x77d3, 0x77d4, 0x77d5, 0x77d6, 0x77d8, 0x77d9, 0x77da, 0x77dd, 0x77de, 0x77df, 0x77e0, 0x77e1, 0x77e4, 0x75c5, 0x5e76, 0x73bb, 0x83e0, 0x64ad, 0x62e8, 0x94b5, 0x6ce2, 0x535a, 0x52c3, 0x640f, 0x94c2, 0x7b94, 0x4f2f, 0x5e1b, 0x8236, 0x8116, 0x818a, 0x6e24, 0x6cca, 0x9a73, 0x6355, 0x535c, 0x54fa, 0x8865, 0x57e0, 0x4e0d, 0x5e03, 0x6b65, 0x7c3f, 0x90e8, 0x6016, 0x64e6, 0x731c, 0x88c1, 0x6750, 0x624d, 0x8d22, 0x776c, 0x8e29, 0x91c7, 0x5f69, 0x83dc, 0x8521, 0x9910, 0x53c2, 0x8695, 0x6b8b, 0x60ed, 0x60e8, 0x707f, 0x82cd, 0x8231, 0x4ed3, 0x6ca7, 0x85cf, 0x64cd, 0x7cd9, 0x69fd, 0x66f9, 0x8349, 0x5395, 0x7b56, 0x4fa7, 0x518c, 0x6d4b, 0x5c42, 0x8e6d, 0x63d2, 0x53c9, 0x832c, 0x8336, 0x67e5, 0x78b4, 0x643d, 0x5bdf, 0x5c94, 0x5dee, 0x8be7, 0x62c6, 0x67f4, 0x8c7a, 0x6400, 0x63ba, 0x8749, 0x998b, 0x8c17, 0x7f20, 0x94f2, 0x4ea7, 0x9610, 0x98a4, 0x660c, 0x7316, + 0x77e6, 0x77e8, 0x77ea, 0x77ef, 0x77f0, 0x77f1, 0x77f2, 0x77f4, 0x77f5, 0x77f7, 0x77f9, 0x77fa, 0x77fb, 0x77fc, 0x7803, 0x7804, 0x7805, 0x7806, 0x7807, 0x7808, 0x780a, 0x780b, 0x780e, 0x780f, 0x7810, 0x7813, 0x7815, 0x7819, 0x781b, 0x781e, 0x7820, 0x7821, 0x7822, 0x7824, 0x7828, 0x782a, 0x782b, 0x782e, 0x782f, 0x7831, 0x7832, 0x7833, 0x7835, 0x7836, 0x783d, 0x783f, 0x7841, 0x7842, 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784a, 0x784b, 0x784d, 0x784f, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785a, 0xfffd, 0x785b, 0x785c, 0x785e, 0x785f, 0x7860, 0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786f, 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879, 0x787a, 0x787b, 0x787d, 0x787e, 0x787f, 0x7880, 0x7881, 0x7882, 0x7883, 0x573a, 0x5c1d, 0x5e38, 0x957f, 0x507f, 0x80a0, 0x5382, 0x655e, 0x7545, 0x5531, 0x5021, 0x8d85, 0x6284, 0x949e, 0x671d, 0x5632, 0x6f6e, 0x5de2, 0x5435, 0x7092, 0x8f66, 0x626f, 0x64a4, 0x63a3, 0x5f7b, 0x6f88, 0x90f4, 0x81e3, 0x8fb0, 0x5c18, 0x6668, 0x5ff1, 0x6c89, 0x9648, 0x8d81, 0x886c, 0x6491, 0x79f0, 0x57ce, 0x6a59, 0x6210, 0x5448, 0x4e58, 0x7a0b, 0x60e9, 0x6f84, 0x8bda, 0x627f, 0x901e, 0x9a8b, 0x79e4, 0x5403, 0x75f4, 0x6301, 0x5319, 0x6c60, 0x8fdf, 0x5f1b, 0x9a70, 0x803b, 0x9f7f, 0x4f88, 0x5c3a, 0x8d64, 0x7fc5, 0x65a5, 0x70bd, 0x5145, 0x51b2, 0x866b, 0x5d07, 0x5ba0, 0x62bd, 0x916c, 0x7574, 0x8e0c, 0x7a20, 0x6101, 0x7b79, 0x4ec7, 0x7ef8, 0x7785, 0x4e11, 0x81ed, 0x521d, 0x51fa, 0x6a71, 0x53a8, 0x8e87, 0x9504, 0x96cf, 0x6ec1, 0x9664, 0x695a, + 0x7884, 0x7885, 0x7886, 0x7888, 0x788a, 0x788b, 0x788f, 0x7890, 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789d, 0x789e, 0x78a0, 0x78a2, 0x78a4, 0x78a6, 0x78a8, 0x78a9, 0x78aa, 0x78ab, 0x78ac, 0x78ad, 0x78ae, 0x78af, 0x78b5, 0x78b6, 0x78b7, 0x78b8, 0x78ba, 0x78bb, 0x78bc, 0x78bd, 0x78bf, 0x78c0, 0x78c2, 0x78c3, 0x78c4, 0x78c6, 0x78c7, 0x78c8, 0x78cc, 0x78cd, 0x78ce, 0x78cf, 0x78d1, 0x78d2, 0x78d3, 0x78d6, 0x78d7, 0x78d8, 0x78da, 0x78db, 0x78dc, 0x78dd, 0x78de, 0x78df, 0x78e0, 0x78e1, 0x78e2, 0x78e3, 0xfffd, 0x78e4, 0x78e5, 0x78e6, 0x78e7, 0x78e9, 0x78ea, 0x78eb, 0x78ed, 0x78ee, 0x78ef, 0x78f0, 0x78f1, 0x78f3, 0x78f5, 0x78f6, 0x78f8, 0x78f9, 0x78fb, 0x78fc, 0x78fd, 0x78fe, 0x78ff, 0x7900, 0x7902, 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790a, 0x790b, 0x790c, 0x7840, 0x50a8, 0x77d7, 0x6410, 0x89e6, 0x5904, 0x63e3, 0x5ddd, 0x7a7f, 0x693d, 0x4f20, 0x8239, 0x5598, 0x4e32, 0x75ae, 0x7a97, 0x5e62, 0x5e8a, 0x95ef, 0x521b, 0x5439, 0x708a, 0x6376, 0x9524, 0x5782, 0x6625, 0x693f, 0x9187, 0x5507, 0x6df3, 0x7eaf, 0x8822, 0x6233, 0x7ef0, 0x75b5, 0x8328, 0x78c1, 0x96cc, 0x8f9e, 0x6148, 0x74f7, 0x8bcd, 0x6b64, 0x523a, 0x8d50, 0x6b21, 0x806a, 0x8471, 0x56f1, 0x5306, 0x4ece, 0x4e1b, 0x51d1, 0x7c97, 0x918b, 0x7c07, 0x4fc3, 0x8e7f, 0x7be1, 0x7a9c, 0x6467, 0x5d14, 0x50ac, 0x8106, 0x7601, 0x7cb9, 0x6dec, 0x7fe0, 0x6751, 0x5b58, 0x5bf8, 0x78cb, 0x64ae, 0x6413, 0x63aa, 0x632b, 0x9519, 0x642d, 0x8fbe, 0x7b54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6b79, 0x50a3, 0x6234, 0x5e26, 0x6b86, 0x4ee3, 0x8d37, 0x888b, 0x5f85, 0x902e, + 0x790d, 0x790e, 0x790f, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915, 0x7916, 0x7917, 0x7918, 0x7919, 0x791a, 0x791b, 0x791c, 0x791d, 0x791f, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927, 0x7928, 0x7929, 0x792a, 0x792b, 0x792c, 0x792d, 0x792e, 0x792f, 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938, 0x7939, 0x793d, 0x793f, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947, 0x794a, 0x794b, 0x794c, 0x794d, 0x794e, 0x794f, 0x7950, 0x7951, 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963, 0xfffd, 0x7964, 0x7966, 0x7969, 0x796a, 0x796b, 0x796c, 0x796e, 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797b, 0x797c, 0x797d, 0x797e, 0x797f, 0x7982, 0x7983, 0x7986, 0x7987, 0x7988, 0x7989, 0x798b, 0x798c, 0x798d, 0x798e, 0x7990, 0x7991, 0x7992, 0x6020, 0x803d, 0x62c5, 0x4e39, 0x5355, 0x90f8, 0x63b8, 0x80c6, 0x65e6, 0x6c2e, 0x4f46, 0x60ee, 0x6de1, 0x8bde, 0x5f39, 0x86cb, 0x5f53, 0x6321, 0x515a, 0x8361, 0x6863, 0x5200, 0x6363, 0x8e48, 0x5012, 0x5c9b, 0x7977, 0x5bfc, 0x5230, 0x7a3b, 0x60bc, 0x9053, 0x76d7, 0x5fb7, 0x5f97, 0x7684, 0x8e6c, 0x706f, 0x767b, 0x7b49, 0x77aa, 0x51f3, 0x9093, 0x5824, 0x4f4e, 0x6ef4, 0x8fea, 0x654c, 0x7b1b, 0x72c4, 0x6da4, 0x7fdf, 0x5ae1, 0x62b5, 0x5e95, 0x5730, 0x8482, 0x7b2c, 0x5e1d, 0x5f1f, 0x9012, 0x7f14, 0x98a0, 0x6382, 0x6ec7, 0x7898, 0x70b9, 0x5178, 0x975b, 0x57ab, 0x7535, 0x4f43, 0x7538, 0x5e97, 0x60e6, 0x5960, 0x6dc0, 0x6bbf, 0x7889, 0x53fc, 0x96d5, 0x51cb, 0x5201, 0x6389, 0x540a, 0x9493, 0x8c03, 0x8dcc, 0x7239, 0x789f, 0x8776, 0x8fed, 0x8c0d, 0x53e0, + 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799b, 0x799c, 0x799d, 0x799e, 0x799f, 0x79a0, 0x79a1, 0x79a2, 0x79a3, 0x79a4, 0x79a5, 0x79a6, 0x79a8, 0x79a9, 0x79aa, 0x79ab, 0x79ac, 0x79ad, 0x79ae, 0x79af, 0x79b0, 0x79b1, 0x79b2, 0x79b4, 0x79b5, 0x79b6, 0x79b7, 0x79b8, 0x79bc, 0x79bf, 0x79c2, 0x79c4, 0x79c5, 0x79c7, 0x79c8, 0x79ca, 0x79cc, 0x79ce, 0x79cf, 0x79d0, 0x79d3, 0x79d4, 0x79d6, 0x79d7, 0x79d9, 0x79da, 0x79db, 0x79dc, 0x79dd, 0x79de, 0x79e0, 0x79e1, 0x79e2, 0x79e5, 0x79e8, 0x79ea, 0xfffd, 0x79ec, 0x79ee, 0x79f1, 0x79f2, 0x79f3, 0x79f4, 0x79f5, 0x79f6, 0x79f7, 0x79f9, 0x79fa, 0x79fc, 0x79fe, 0x79ff, 0x7a01, 0x7a04, 0x7a05, 0x7a07, 0x7a08, 0x7a09, 0x7a0a, 0x7a0c, 0x7a0f, 0x7a10, 0x7a11, 0x7a12, 0x7a13, 0x7a15, 0x7a16, 0x7a18, 0x7a19, 0x7a1b, 0x7a1c, 0x4e01, 0x76ef, 0x53ee, 0x9489, 0x9876, 0x9f0e, 0x952d, 0x5b9a, 0x8ba2, 0x4e22, 0x4e1c, 0x51ac, 0x8463, 0x61c2, 0x52a8, 0x680b, 0x4f97, 0x606b, 0x51bb, 0x6d1e, 0x515c, 0x6296, 0x6597, 0x9661, 0x8c46, 0x9017, 0x75d8, 0x90fd, 0x7763, 0x6bd2, 0x728a, 0x72ec, 0x8bfb, 0x5835, 0x7779, 0x8d4c, 0x675c, 0x9540, 0x809a, 0x5ea6, 0x6e21, 0x5992, 0x7aef, 0x77ed, 0x953b, 0x6bb5, 0x65ad, 0x7f0e, 0x5806, 0x5151, 0x961f, 0x5bf9, 0x58a9, 0x5428, 0x8e72, 0x6566, 0x987f, 0x56e4, 0x949d, 0x76fe, 0x9041, 0x6387, 0x54c6, 0x591a, 0x593a, 0x579b, 0x8eb2, 0x6735, 0x8dfa, 0x8235, 0x5241, 0x60f0, 0x5815, 0x86fe, 0x5ce8, 0x9e45, 0x4fc4, 0x989d, 0x8bb9, 0x5a25, 0x6076, 0x5384, 0x627c, 0x904f, 0x9102, 0x997f, 0x6069, 0x800c, 0x513f, 0x8033, 0x5c14, 0x9975, 0x6d31, 0x4e8c, + 0x7a1d, 0x7a1f, 0x7a21, 0x7a22, 0x7a24, 0x7a25, 0x7a26, 0x7a27, 0x7a28, 0x7a29, 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2d, 0x7a2e, 0x7a2f, 0x7a30, 0x7a31, 0x7a32, 0x7a34, 0x7a35, 0x7a36, 0x7a38, 0x7a3a, 0x7a3e, 0x7a40, 0x7a41, 0x7a42, 0x7a43, 0x7a44, 0x7a45, 0x7a47, 0x7a48, 0x7a49, 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4d, 0x7a4e, 0x7a4f, 0x7a50, 0x7a52, 0x7a53, 0x7a54, 0x7a55, 0x7a56, 0x7a58, 0x7a59, 0x7a5a, 0x7a5b, 0x7a5c, 0x7a5d, 0x7a5e, 0x7a5f, 0x7a60, 0x7a61, 0x7a62, 0x7a63, 0x7a64, 0x7a65, 0x7a66, 0x7a67, 0x7a68, 0xfffd, 0x7a69, 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6d, 0x7a6e, 0x7a6f, 0x7a71, 0x7a72, 0x7a73, 0x7a75, 0x7a7b, 0x7a7c, 0x7a7d, 0x7a7e, 0x7a82, 0x7a85, 0x7a87, 0x7a89, 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8e, 0x7a8f, 0x7a90, 0x7a93, 0x7a94, 0x7a99, 0x7a9a, 0x7a9b, 0x7a9e, 0x7aa1, 0x7aa2, 0x8d30, 0x53d1, 0x7f5a, 0x7b4f, 0x4f10, 0x4e4f, 0x9600, 0x6cd5, 0x73d0, 0x85e9, 0x5e06, 0x756a, 0x7ffb, 0x6a0a, 0x77fe, 0x9492, 0x7e41, 0x51e1, 0x70e6, 0x53cd, 0x8fd4, 0x8303, 0x8d29, 0x72af, 0x996d, 0x6cdb, 0x574a, 0x82b3, 0x65b9, 0x80aa, 0x623f, 0x9632, 0x59a8, 0x4eff, 0x8bbf, 0x7eba, 0x653e, 0x83f2, 0x975e, 0x5561, 0x98de, 0x80a5, 0x532a, 0x8bfd, 0x5420, 0x80ba, 0x5e9f, 0x6cb8, 0x8d39, 0x82ac, 0x915a, 0x5429, 0x6c1b, 0x5206, 0x7eb7, 0x575f, 0x711a, 0x6c7e, 0x7c89, 0x594b, 0x4efd, 0x5fff, 0x6124, 0x7caa, 0x4e30, 0x5c01, 0x67ab, 0x8702, 0x5cf0, 0x950b, 0x98ce, 0x75af, 0x70fd, 0x9022, 0x51af, 0x7f1d, 0x8bbd, 0x5949, 0x51e4, 0x4f5b, 0x5426, 0x592b, 0x6577, 0x80a4, 0x5b75, 0x6276, 0x62c2, 0x8f90, 0x5e45, 0x6c1f, 0x7b26, 0x4f0f, 0x4fd8, 0x670d, + 0x7aa3, 0x7aa4, 0x7aa7, 0x7aa9, 0x7aaa, 0x7aab, 0x7aae, 0x7aaf, 0x7ab0, 0x7ab1, 0x7ab2, 0x7ab4, 0x7ab5, 0x7ab6, 0x7ab7, 0x7ab8, 0x7ab9, 0x7aba, 0x7abb, 0x7abc, 0x7abd, 0x7abe, 0x7ac0, 0x7ac1, 0x7ac2, 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac6, 0x7ac7, 0x7ac8, 0x7ac9, 0x7aca, 0x7acc, 0x7acd, 0x7ace, 0x7acf, 0x7ad0, 0x7ad1, 0x7ad2, 0x7ad3, 0x7ad4, 0x7ad5, 0x7ad7, 0x7ad8, 0x7ada, 0x7adb, 0x7adc, 0x7add, 0x7ae1, 0x7ae2, 0x7ae4, 0x7ae7, 0x7ae8, 0x7ae9, 0x7aea, 0x7aeb, 0x7aec, 0x7aee, 0x7af0, 0x7af1, 0x7af2, 0x7af3, 0xfffd, 0x7af4, 0x7af5, 0x7af6, 0x7af7, 0x7af8, 0x7afb, 0x7afc, 0x7afe, 0x7b00, 0x7b01, 0x7b02, 0x7b05, 0x7b07, 0x7b09, 0x7b0c, 0x7b0d, 0x7b0e, 0x7b10, 0x7b12, 0x7b13, 0x7b16, 0x7b17, 0x7b18, 0x7b1a, 0x7b1c, 0x7b1d, 0x7b1f, 0x7b21, 0x7b22, 0x7b23, 0x7b27, 0x7b29, 0x7b2d, 0x6d6e, 0x6daa, 0x798f, 0x88b1, 0x5f17, 0x752b, 0x629a, 0x8f85, 0x4fef, 0x91dc, 0x65a7, 0x812f, 0x8151, 0x5e9c, 0x8150, 0x8d74, 0x526f, 0x8986, 0x8d4b, 0x590d, 0x5085, 0x4ed8, 0x961c, 0x7236, 0x8179, 0x8d1f, 0x5bcc, 0x8ba3, 0x9644, 0x5987, 0x7f1a, 0x5490, 0x5676, 0x560e, 0x8be5, 0x6539, 0x6982, 0x9499, 0x76d6, 0x6e89, 0x5e72, 0x7518, 0x6746, 0x67d1, 0x7aff, 0x809d, 0x8d76, 0x611f, 0x79c6, 0x6562, 0x8d63, 0x5188, 0x521a, 0x94a2, 0x7f38, 0x809b, 0x7eb2, 0x5c97, 0x6e2f, 0x6760, 0x7bd9, 0x768b, 0x9ad8, 0x818f, 0x7f94, 0x7cd5, 0x641e, 0x9550, 0x7a3f, 0x544a, 0x54e5, 0x6b4c, 0x6401, 0x6208, 0x9e3d, 0x80f3, 0x7599, 0x5272, 0x9769, 0x845b, 0x683c, 0x86e4, 0x9601, 0x9694, 0x94ec, 0x4e2a, 0x5404, 0x7ed9, 0x6839, 0x8ddf, 0x8015, 0x66f4, 0x5e9a, 0x7fb9, + 0x7b2f, 0x7b30, 0x7b32, 0x7b34, 0x7b35, 0x7b36, 0x7b37, 0x7b39, 0x7b3b, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b42, 0x7b43, 0x7b44, 0x7b46, 0x7b48, 0x7b4a, 0x7b4d, 0x7b4e, 0x7b53, 0x7b55, 0x7b57, 0x7b59, 0x7b5c, 0x7b5e, 0x7b5f, 0x7b61, 0x7b63, 0x7b64, 0x7b65, 0x7b66, 0x7b67, 0x7b68, 0x7b69, 0x7b6a, 0x7b6b, 0x7b6c, 0x7b6d, 0x7b6f, 0x7b70, 0x7b73, 0x7b74, 0x7b76, 0x7b78, 0x7b7a, 0x7b7c, 0x7b7d, 0x7b7f, 0x7b81, 0x7b82, 0x7b83, 0x7b84, 0x7b86, 0x7b87, 0x7b88, 0x7b89, 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8e, 0x7b8f, 0xfffd, 0x7b91, 0x7b92, 0x7b93, 0x7b96, 0x7b98, 0x7b99, 0x7b9a, 0x7b9b, 0x7b9e, 0x7b9f, 0x7ba0, 0x7ba3, 0x7ba4, 0x7ba5, 0x7bae, 0x7baf, 0x7bb0, 0x7bb2, 0x7bb3, 0x7bb5, 0x7bb6, 0x7bb7, 0x7bb9, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd, 0x7bbe, 0x7bbf, 0x7bc0, 0x7bc2, 0x7bc3, 0x7bc4, 0x57c2, 0x803f, 0x6897, 0x5de5, 0x653b, 0x529f, 0x606d, 0x9f9a, 0x4f9b, 0x8eac, 0x516c, 0x5bab, 0x5f13, 0x5de9, 0x6c5e, 0x62f1, 0x8d21, 0x5171, 0x94a9, 0x52fe, 0x6c9f, 0x82df, 0x72d7, 0x57a2, 0x6784, 0x8d2d, 0x591f, 0x8f9c, 0x83c7, 0x5495, 0x7b8d, 0x4f30, 0x6cbd, 0x5b64, 0x59d1, 0x9f13, 0x53e4, 0x86ca, 0x9aa8, 0x8c37, 0x80a1, 0x6545, 0x987e, 0x56fa, 0x96c7, 0x522e, 0x74dc, 0x5250, 0x5be1, 0x6302, 0x8902, 0x4e56, 0x62d0, 0x602a, 0x68fa, 0x5173, 0x5b98, 0x51a0, 0x89c2, 0x7ba1, 0x9986, 0x7f50, 0x60ef, 0x704c, 0x8d2f, 0x5149, 0x5e7f, 0x901b, 0x7470, 0x89c4, 0x572d, 0x7845, 0x5f52, 0x9f9f, 0x95fa, 0x8f68, 0x9b3c, 0x8be1, 0x7678, 0x6842, 0x67dc, 0x8dea, 0x8d35, 0x523d, 0x8f8a, 0x6eda, 0x68cd, 0x9505, 0x90ed, 0x56fd, 0x679c, 0x88f9, 0x8fc7, 0x54c8, + 0x7bc5, 0x7bc8, 0x7bc9, 0x7bca, 0x7bcb, 0x7bcd, 0x7bce, 0x7bcf, 0x7bd0, 0x7bd2, 0x7bd4, 0x7bd5, 0x7bd6, 0x7bd7, 0x7bd8, 0x7bdb, 0x7bdc, 0x7bde, 0x7bdf, 0x7be0, 0x7be2, 0x7be3, 0x7be4, 0x7be7, 0x7be8, 0x7be9, 0x7beb, 0x7bec, 0x7bed, 0x7bef, 0x7bf0, 0x7bf2, 0x7bf3, 0x7bf4, 0x7bf5, 0x7bf6, 0x7bf8, 0x7bf9, 0x7bfa, 0x7bfb, 0x7bfd, 0x7bff, 0x7c00, 0x7c01, 0x7c02, 0x7c03, 0x7c04, 0x7c05, 0x7c06, 0x7c08, 0x7c09, 0x7c0a, 0x7c0d, 0x7c0e, 0x7c10, 0x7c11, 0x7c12, 0x7c13, 0x7c14, 0x7c15, 0x7c17, 0x7c18, 0x7c19, 0xfffd, 0x7c1a, 0x7c1b, 0x7c1c, 0x7c1d, 0x7c1e, 0x7c20, 0x7c21, 0x7c22, 0x7c23, 0x7c24, 0x7c25, 0x7c28, 0x7c29, 0x7c2b, 0x7c2c, 0x7c2d, 0x7c2e, 0x7c2f, 0x7c30, 0x7c31, 0x7c32, 0x7c33, 0x7c34, 0x7c35, 0x7c36, 0x7c37, 0x7c39, 0x7c3a, 0x7c3b, 0x7c3c, 0x7c3d, 0x7c3e, 0x7c42, 0x9ab8, 0x5b69, 0x6d77, 0x6c26, 0x4ea5, 0x5bb3, 0x9a87, 0x9163, 0x61a8, 0x90af, 0x97e9, 0x542b, 0x6db5, 0x5bd2, 0x51fd, 0x558a, 0x7f55, 0x7ff0, 0x64bc, 0x634d, 0x65f1, 0x61be, 0x608d, 0x710a, 0x6c57, 0x6c49, 0x592f, 0x676d, 0x822a, 0x58d5, 0x568e, 0x8c6a, 0x6beb, 0x90dd, 0x597d, 0x8017, 0x53f7, 0x6d69, 0x5475, 0x559d, 0x8377, 0x83cf, 0x6838, 0x79be, 0x548c, 0x4f55, 0x5408, 0x76d2, 0x8c89, 0x9602, 0x6cb3, 0x6db8, 0x8d6b, 0x8910, 0x9e64, 0x8d3a, 0x563f, 0x9ed1, 0x75d5, 0x5f88, 0x72e0, 0x6068, 0x54fc, 0x4ea8, 0x6a2a, 0x8861, 0x6052, 0x8f70, 0x54c4, 0x70d8, 0x8679, 0x9e3f, 0x6d2a, 0x5b8f, 0x5f18, 0x7ea2, 0x5589, 0x4faf, 0x7334, 0x543c, 0x539a, 0x5019, 0x540e, 0x547c, 0x4e4e, 0x5ffd, 0x745a, 0x58f6, 0x846b, 0x80e1, 0x8774, 0x72d0, 0x7cca, 0x6e56, + 0x7c43, 0x7c44, 0x7c45, 0x7c46, 0x7c47, 0x7c48, 0x7c49, 0x7c4a, 0x7c4b, 0x7c4c, 0x7c4e, 0x7c4f, 0x7c50, 0x7c51, 0x7c52, 0x7c53, 0x7c54, 0x7c55, 0x7c56, 0x7c57, 0x7c58, 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e, 0x7c5f, 0x7c60, 0x7c61, 0x7c62, 0x7c63, 0x7c64, 0x7c65, 0x7c66, 0x7c67, 0x7c68, 0x7c69, 0x7c6a, 0x7c6b, 0x7c6c, 0x7c6d, 0x7c6e, 0x7c6f, 0x7c70, 0x7c71, 0x7c72, 0x7c75, 0x7c76, 0x7c77, 0x7c78, 0x7c79, 0x7c7a, 0x7c7e, 0x7c7f, 0x7c80, 0x7c81, 0x7c82, 0x7c83, 0x7c84, 0x7c85, 0x7c86, 0x7c87, 0xfffd, 0x7c88, 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8d, 0x7c8e, 0x7c8f, 0x7c90, 0x7c93, 0x7c94, 0x7c96, 0x7c99, 0x7c9a, 0x7c9b, 0x7ca0, 0x7ca1, 0x7ca3, 0x7ca6, 0x7ca7, 0x7ca8, 0x7ca9, 0x7cab, 0x7cac, 0x7cad, 0x7caf, 0x7cb0, 0x7cb4, 0x7cb5, 0x7cb6, 0x7cb7, 0x7cb8, 0x7cba, 0x7cbb, 0x5f27, 0x864e, 0x552c, 0x62a4, 0x4e92, 0x6caa, 0x6237, 0x82b1, 0x54d7, 0x534e, 0x733e, 0x6ed1, 0x753b, 0x5212, 0x5316, 0x8bdd, 0x69d0, 0x5f8a, 0x6000, 0x6dee, 0x574f, 0x6b22, 0x73af, 0x6853, 0x8fd8, 0x7f13, 0x6362, 0x60a3, 0x5524, 0x75ea, 0x8c62, 0x7115, 0x6da3, 0x5ba6, 0x5e7b, 0x8352, 0x614c, 0x9ec4, 0x78fa, 0x8757, 0x7c27, 0x7687, 0x51f0, 0x60f6, 0x714c, 0x6643, 0x5e4c, 0x604d, 0x8c0e, 0x7070, 0x6325, 0x8f89, 0x5fbd, 0x6062, 0x86d4, 0x56de, 0x6bc1, 0x6094, 0x6167, 0x5349, 0x60e0, 0x6666, 0x8d3f, 0x79fd, 0x4f1a, 0x70e9, 0x6c47, 0x8bb3, 0x8bf2, 0x7ed8, 0x8364, 0x660f, 0x5a5a, 0x9b42, 0x6d51, 0x6df7, 0x8c41, 0x6d3b, 0x4f19, 0x706b, 0x83b7, 0x6216, 0x60d1, 0x970d, 0x8d27, 0x7978, 0x51fb, 0x573e, 0x57fa, 0x673a, 0x7578, 0x7a3d, 0x79ef, 0x7b95, + 0x7cbf, 0x7cc0, 0x7cc2, 0x7cc3, 0x7cc4, 0x7cc6, 0x7cc9, 0x7ccb, 0x7cce, 0x7ccf, 0x7cd0, 0x7cd1, 0x7cd2, 0x7cd3, 0x7cd4, 0x7cd8, 0x7cda, 0x7cdb, 0x7cdd, 0x7cde, 0x7ce1, 0x7ce2, 0x7ce3, 0x7ce4, 0x7ce5, 0x7ce6, 0x7ce7, 0x7ce9, 0x7cea, 0x7ceb, 0x7cec, 0x7ced, 0x7cee, 0x7cf0, 0x7cf1, 0x7cf2, 0x7cf3, 0x7cf4, 0x7cf5, 0x7cf6, 0x7cf7, 0x7cf9, 0x7cfa, 0x7cfc, 0x7cfd, 0x7cfe, 0x7cff, 0x7d00, 0x7d01, 0x7d02, 0x7d03, 0x7d04, 0x7d05, 0x7d06, 0x7d07, 0x7d08, 0x7d09, 0x7d0b, 0x7d0c, 0x7d0d, 0x7d0e, 0x7d0f, 0x7d10, 0xfffd, 0x7d11, 0x7d12, 0x7d13, 0x7d14, 0x7d15, 0x7d16, 0x7d17, 0x7d18, 0x7d19, 0x7d1a, 0x7d1b, 0x7d1c, 0x7d1d, 0x7d1e, 0x7d1f, 0x7d21, 0x7d23, 0x7d24, 0x7d25, 0x7d26, 0x7d28, 0x7d29, 0x7d2a, 0x7d2c, 0x7d2d, 0x7d2e, 0x7d30, 0x7d31, 0x7d32, 0x7d33, 0x7d34, 0x7d35, 0x7d36, 0x808c, 0x9965, 0x8ff9, 0x6fc0, 0x8ba5, 0x9e21, 0x59ec, 0x7ee9, 0x7f09, 0x5409, 0x6781, 0x68d8, 0x8f91, 0x7c4d, 0x96c6, 0x53ca, 0x6025, 0x75be, 0x6c72, 0x5373, 0x5ac9, 0x7ea7, 0x6324, 0x51e0, 0x810a, 0x5df1, 0x84df, 0x6280, 0x5180, 0x5b63, 0x4f0e, 0x796d, 0x5242, 0x60b8, 0x6d4e, 0x5bc4, 0x5bc2, 0x8ba1, 0x8bb0, 0x65e2, 0x5fcc, 0x9645, 0x5993, 0x7ee7, 0x7eaa, 0x5609, 0x67b7, 0x5939, 0x4f73, 0x5bb6, 0x52a0, 0x835a, 0x988a, 0x8d3e, 0x7532, 0x94be, 0x5047, 0x7a3c, 0x4ef7, 0x67b6, 0x9a7e, 0x5ac1, 0x6b7c, 0x76d1, 0x575a, 0x5c16, 0x7b3a, 0x95f4, 0x714e, 0x517c, 0x80a9, 0x8270, 0x5978, 0x7f04, 0x8327, 0x68c0, 0x67ec, 0x78b1, 0x7877, 0x62e3, 0x6361, 0x7b80, 0x4fed, 0x526a, 0x51cf, 0x8350, 0x69db, 0x9274, 0x8df5, 0x8d31, 0x89c1, 0x952e, 0x7bad, 0x4ef6, + 0x7d37, 0x7d38, 0x7d39, 0x7d3a, 0x7d3b, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d3f, 0x7d40, 0x7d41, 0x7d42, 0x7d43, 0x7d44, 0x7d45, 0x7d46, 0x7d47, 0x7d48, 0x7d49, 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4d, 0x7d4e, 0x7d4f, 0x7d50, 0x7d51, 0x7d52, 0x7d53, 0x7d54, 0x7d55, 0x7d56, 0x7d57, 0x7d58, 0x7d59, 0x7d5a, 0x7d5b, 0x7d5c, 0x7d5d, 0x7d5e, 0x7d5f, 0x7d60, 0x7d61, 0x7d62, 0x7d63, 0x7d64, 0x7d65, 0x7d66, 0x7d67, 0x7d68, 0x7d69, 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6d, 0x7d6f, 0x7d70, 0x7d71, 0x7d72, 0x7d73, 0x7d74, 0x7d75, 0x7d76, 0xfffd, 0x7d78, 0x7d79, 0x7d7a, 0x7d7b, 0x7d7c, 0x7d7d, 0x7d7e, 0x7d7f, 0x7d80, 0x7d81, 0x7d82, 0x7d83, 0x7d84, 0x7d85, 0x7d86, 0x7d87, 0x7d88, 0x7d89, 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8d, 0x7d8e, 0x7d8f, 0x7d90, 0x7d91, 0x7d92, 0x7d93, 0x7d94, 0x7d95, 0x7d96, 0x7d97, 0x7d98, 0x5065, 0x8230, 0x5251, 0x996f, 0x6e10, 0x6e85, 0x6da7, 0x5efa, 0x50f5, 0x59dc, 0x5c06, 0x6d46, 0x6c5f, 0x7586, 0x848b, 0x6868, 0x5956, 0x8bb2, 0x5320, 0x9171, 0x964d, 0x8549, 0x6912, 0x7901, 0x7126, 0x80f6, 0x4ea4, 0x90ca, 0x6d47, 0x9a84, 0x5a07, 0x56bc, 0x6405, 0x94f0, 0x77eb, 0x4fa5, 0x811a, 0x72e1, 0x89d2, 0x997a, 0x7f34, 0x7ede, 0x527f, 0x6559, 0x9175, 0x8f7f, 0x8f83, 0x53eb, 0x7a96, 0x63ed, 0x63a5, 0x7686, 0x79f8, 0x8857, 0x9636, 0x622a, 0x52ab, 0x8282, 0x6854, 0x6770, 0x6377, 0x776b, 0x7aed, 0x6d01, 0x7ed3, 0x89e3, 0x59d0, 0x6212, 0x85c9, 0x82a5, 0x754c, 0x501f, 0x4ecb, 0x75a5, 0x8beb, 0x5c4a, 0x5dfe, 0x7b4b, 0x65a4, 0x91d1, 0x4eca, 0x6d25, 0x895f, 0x7d27, 0x9526, 0x4ec5, 0x8c28, 0x8fdb, 0x9773, 0x664b, 0x7981, 0x8fd1, 0x70ec, 0x6d78, + 0x7d99, 0x7d9a, 0x7d9b, 0x7d9c, 0x7d9d, 0x7d9e, 0x7d9f, 0x7da0, 0x7da1, 0x7da2, 0x7da3, 0x7da4, 0x7da5, 0x7da7, 0x7da8, 0x7da9, 0x7daa, 0x7dab, 0x7dac, 0x7dad, 0x7daf, 0x7db0, 0x7db1, 0x7db2, 0x7db3, 0x7db4, 0x7db5, 0x7db6, 0x7db7, 0x7db8, 0x7db9, 0x7dba, 0x7dbb, 0x7dbc, 0x7dbd, 0x7dbe, 0x7dbf, 0x7dc0, 0x7dc1, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dc7, 0x7dc8, 0x7dc9, 0x7dca, 0x7dcb, 0x7dcc, 0x7dcd, 0x7dce, 0x7dcf, 0x7dd0, 0x7dd1, 0x7dd2, 0x7dd3, 0x7dd4, 0x7dd5, 0x7dd6, 0x7dd7, 0x7dd8, 0x7dd9, 0xfffd, 0x7dda, 0x7ddb, 0x7ddc, 0x7ddd, 0x7dde, 0x7ddf, 0x7de0, 0x7de1, 0x7de2, 0x7de3, 0x7de4, 0x7de5, 0x7de6, 0x7de7, 0x7de8, 0x7de9, 0x7dea, 0x7deb, 0x7dec, 0x7ded, 0x7dee, 0x7def, 0x7df0, 0x7df1, 0x7df2, 0x7df3, 0x7df4, 0x7df5, 0x7df6, 0x7df7, 0x7df8, 0x7df9, 0x7dfa, 0x5c3d, 0x52b2, 0x8346, 0x5162, 0x830e, 0x775b, 0x6676, 0x9cb8, 0x4eac, 0x60ca, 0x7cbe, 0x7cb3, 0x7ecf, 0x4e95, 0x8b66, 0x666f, 0x9888, 0x9759, 0x5883, 0x656c, 0x955c, 0x5f84, 0x75c9, 0x9756, 0x7adf, 0x7ade, 0x51c0, 0x70af, 0x7a98, 0x63ea, 0x7a76, 0x7ea0, 0x7396, 0x97ed, 0x4e45, 0x7078, 0x4e5d, 0x9152, 0x53a9, 0x6551, 0x65e7, 0x81fc, 0x8205, 0x548e, 0x5c31, 0x759a, 0x97a0, 0x62d8, 0x72d9, 0x75bd, 0x5c45, 0x9a79, 0x83ca, 0x5c40, 0x5480, 0x77e9, 0x4e3e, 0x6cae, 0x805a, 0x62d2, 0x636e, 0x5de8, 0x5177, 0x8ddd, 0x8e1e, 0x952f, 0x4ff1, 0x53e5, 0x60e7, 0x70ac, 0x5267, 0x6350, 0x9e43, 0x5a1f, 0x5026, 0x7737, 0x5377, 0x7ee2, 0x6485, 0x652b, 0x6289, 0x6398, 0x5014, 0x7235, 0x89c9, 0x51b3, 0x8bc0, 0x7edd, 0x5747, 0x83cc, 0x94a7, 0x519b, 0x541b, 0x5cfb, + 0x7dfb, 0x7dfc, 0x7dfd, 0x7dfe, 0x7dff, 0x7e00, 0x7e01, 0x7e02, 0x7e03, 0x7e04, 0x7e05, 0x7e06, 0x7e07, 0x7e08, 0x7e09, 0x7e0a, 0x7e0b, 0x7e0c, 0x7e0d, 0x7e0e, 0x7e0f, 0x7e10, 0x7e11, 0x7e12, 0x7e13, 0x7e14, 0x7e15, 0x7e16, 0x7e17, 0x7e18, 0x7e19, 0x7e1a, 0x7e1b, 0x7e1c, 0x7e1d, 0x7e1e, 0x7e1f, 0x7e20, 0x7e21, 0x7e22, 0x7e23, 0x7e24, 0x7e25, 0x7e26, 0x7e27, 0x7e28, 0x7e29, 0x7e2a, 0x7e2b, 0x7e2c, 0x7e2d, 0x7e2e, 0x7e2f, 0x7e30, 0x7e31, 0x7e32, 0x7e33, 0x7e34, 0x7e35, 0x7e36, 0x7e37, 0x7e38, 0x7e39, 0xfffd, 0x7e3a, 0x7e3c, 0x7e3d, 0x7e3e, 0x7e3f, 0x7e40, 0x7e42, 0x7e43, 0x7e44, 0x7e45, 0x7e46, 0x7e48, 0x7e49, 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4d, 0x7e4e, 0x7e4f, 0x7e50, 0x7e51, 0x7e52, 0x7e53, 0x7e54, 0x7e55, 0x7e56, 0x7e57, 0x7e58, 0x7e59, 0x7e5a, 0x7e5b, 0x7e5c, 0x7e5d, 0x4fca, 0x7ae3, 0x6d5a, 0x90e1, 0x9a8f, 0x5580, 0x5496, 0x5361, 0x54af, 0x5f00, 0x63e9, 0x6977, 0x51ef, 0x6168, 0x520a, 0x582a, 0x52d8, 0x574e, 0x780d, 0x770b, 0x5eb7, 0x6177, 0x7ce0, 0x625b, 0x6297, 0x4ea2, 0x7095, 0x8003, 0x62f7, 0x70e4, 0x9760, 0x5777, 0x82db, 0x67ef, 0x68f5, 0x78d5, 0x9897, 0x79d1, 0x58f3, 0x54b3, 0x53ef, 0x6e34, 0x514b, 0x523b, 0x5ba2, 0x8bfe, 0x80af, 0x5543, 0x57a6, 0x6073, 0x5751, 0x542d, 0x7a7a, 0x6050, 0x5b54, 0x63a7, 0x62a0, 0x53e3, 0x6263, 0x5bc7, 0x67af, 0x54ed, 0x7a9f, 0x82e6, 0x9177, 0x5e93, 0x88e4, 0x5938, 0x57ae, 0x630e, 0x8de8, 0x80ef, 0x5757, 0x7b77, 0x4fa9, 0x5feb, 0x5bbd, 0x6b3e, 0x5321, 0x7b50, 0x72c2, 0x6846, 0x77ff, 0x7736, 0x65f7, 0x51b5, 0x4e8f, 0x76d4, 0x5cbf, 0x7aa5, 0x8475, 0x594e, 0x9b41, 0x5080, + 0x7e5e, 0x7e5f, 0x7e60, 0x7e61, 0x7e62, 0x7e63, 0x7e64, 0x7e65, 0x7e66, 0x7e67, 0x7e68, 0x7e69, 0x7e6a, 0x7e6b, 0x7e6c, 0x7e6d, 0x7e6e, 0x7e6f, 0x7e70, 0x7e71, 0x7e72, 0x7e73, 0x7e74, 0x7e75, 0x7e76, 0x7e77, 0x7e78, 0x7e79, 0x7e7a, 0x7e7b, 0x7e7c, 0x7e7d, 0x7e7e, 0x7e7f, 0x7e80, 0x7e81, 0x7e83, 0x7e84, 0x7e85, 0x7e86, 0x7e87, 0x7e88, 0x7e89, 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8d, 0x7e8e, 0x7e8f, 0x7e90, 0x7e91, 0x7e92, 0x7e93, 0x7e94, 0x7e95, 0x7e96, 0x7e97, 0x7e98, 0x7e99, 0x7e9a, 0x7e9c, 0x7e9d, 0x7e9e, 0xfffd, 0x7eae, 0x7eb4, 0x7ebb, 0x7ebc, 0x7ed6, 0x7ee4, 0x7eec, 0x7ef9, 0x7f0a, 0x7f10, 0x7f1e, 0x7f37, 0x7f39, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e, 0x7f3f, 0x7f40, 0x7f41, 0x7f43, 0x7f46, 0x7f47, 0x7f48, 0x7f49, 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f, 0x7f52, 0x7f53, 0x9988, 0x6127, 0x6e83, 0x5764, 0x6606, 0x6346, 0x56f0, 0x62ec, 0x6269, 0x5ed3, 0x9614, 0x5783, 0x62c9, 0x5587, 0x8721, 0x814a, 0x8fa3, 0x5566, 0x83b1, 0x6765, 0x8d56, 0x84dd, 0x5a6a, 0x680f, 0x62e6, 0x7bee, 0x9611, 0x5170, 0x6f9c, 0x8c30, 0x63fd, 0x89c8, 0x61d2, 0x7f06, 0x70c2, 0x6ee5, 0x7405, 0x6994, 0x72fc, 0x5eca, 0x90ce, 0x6717, 0x6d6a, 0x635e, 0x52b3, 0x7262, 0x8001, 0x4f6c, 0x59e5, 0x916a, 0x70d9, 0x6d9d, 0x52d2, 0x4e50, 0x96f7, 0x956d, 0x857e, 0x78ca, 0x7d2f, 0x5121, 0x5792, 0x64c2, 0x808b, 0x7c7b, 0x6cea, 0x68f1, 0x695e, 0x51b7, 0x5398, 0x68a8, 0x7281, 0x9ece, 0x7bf1, 0x72f8, 0x79bb, 0x6f13, 0x7406, 0x674e, 0x91cc, 0x9ca4, 0x793c, 0x8389, 0x8354, 0x540f, 0x6817, 0x4e3d, 0x5389, 0x52b1, 0x783e, 0x5386, 0x5229, 0x5088, 0x4f8b, 0x4fd0, + 0x7f56, 0x7f59, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f60, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f67, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6f, 0x7f70, 0x7f73, 0x7f75, 0x7f76, 0x7f77, 0x7f78, 0x7f7a, 0x7f7b, 0x7f7c, 0x7f7d, 0x7f7f, 0x7f80, 0x7f82, 0x7f83, 0x7f84, 0x7f85, 0x7f86, 0x7f87, 0x7f88, 0x7f89, 0x7f8b, 0x7f8d, 0x7f8f, 0x7f90, 0x7f91, 0x7f92, 0x7f93, 0x7f95, 0x7f96, 0x7f97, 0x7f98, 0x7f99, 0x7f9b, 0x7f9c, 0x7fa0, 0x7fa2, 0x7fa3, 0x7fa5, 0x7fa6, 0x7fa8, 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7fb1, 0xfffd, 0x7fb3, 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7, 0x7fba, 0x7fbb, 0x7fbe, 0x7fc0, 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc6, 0x7fc7, 0x7fc8, 0x7fc9, 0x7fcb, 0x7fcd, 0x7fcf, 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd6, 0x7fd7, 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fe2, 0x7fe3, 0x75e2, 0x7acb, 0x7c92, 0x6ca5, 0x96b6, 0x529b, 0x7483, 0x54e9, 0x4fe9, 0x8054, 0x83b2, 0x8fde, 0x9570, 0x5ec9, 0x601c, 0x6d9f, 0x5e18, 0x655b, 0x8138, 0x94fe, 0x604b, 0x70bc, 0x7ec3, 0x7cae, 0x51c9, 0x6881, 0x7cb1, 0x826f, 0x4e24, 0x8f86, 0x91cf, 0x667e, 0x4eae, 0x8c05, 0x64a9, 0x804a, 0x50da, 0x7597, 0x71ce, 0x5be5, 0x8fbd, 0x6f66, 0x4e86, 0x6482, 0x9563, 0x5ed6, 0x6599, 0x5217, 0x88c2, 0x70c8, 0x52a3, 0x730e, 0x7433, 0x6797, 0x78f7, 0x9716, 0x4e34, 0x90bb, 0x9cde, 0x6dcb, 0x51db, 0x8d41, 0x541d, 0x62ce, 0x73b2, 0x83f1, 0x96f6, 0x9f84, 0x94c3, 0x4f36, 0x7f9a, 0x51cc, 0x7075, 0x9675, 0x5cad, 0x9886, 0x53e6, 0x4ee4, 0x6e9c, 0x7409, 0x69b4, 0x786b, 0x998f, 0x7559, 0x5218, 0x7624, 0x6d41, 0x67f3, 0x516d, 0x9f99, 0x804b, 0x5499, 0x7b3c, 0x7abf, + 0x7fe4, 0x7fe7, 0x7fe8, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fef, 0x7ff2, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7, 0x7ff8, 0x7ff9, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff, 0x8002, 0x8007, 0x8008, 0x8009, 0x800a, 0x800e, 0x800f, 0x8011, 0x8013, 0x801a, 0x801b, 0x801d, 0x801e, 0x801f, 0x8021, 0x8023, 0x8024, 0x802b, 0x802c, 0x802d, 0x802e, 0x802f, 0x8030, 0x8032, 0x8034, 0x8039, 0x803a, 0x803c, 0x803e, 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804e, 0x804f, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057, 0xfffd, 0x8059, 0x805b, 0x805c, 0x805d, 0x805e, 0x805f, 0x8060, 0x8061, 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806b, 0x806c, 0x806d, 0x806e, 0x806f, 0x8070, 0x8072, 0x8073, 0x8074, 0x8075, 0x8076, 0x8077, 0x8078, 0x8079, 0x807a, 0x807b, 0x807c, 0x807d, 0x9686, 0x5784, 0x62e2, 0x9647, 0x697c, 0x5a04, 0x6402, 0x7bd3, 0x6f0f, 0x964b, 0x82a6, 0x5362, 0x9885, 0x5e90, 0x7089, 0x63b3, 0x5364, 0x864f, 0x9c81, 0x9e93, 0x788c, 0x9732, 0x8def, 0x8d42, 0x9e7f, 0x6f5e, 0x7984, 0x5f55, 0x9646, 0x622e, 0x9a74, 0x5415, 0x94dd, 0x4fa3, 0x65c5, 0x5c65, 0x5c61, 0x7f15, 0x8651, 0x6c2f, 0x5f8b, 0x7387, 0x6ee4, 0x7eff, 0x5ce6, 0x631b, 0x5b6a, 0x6ee6, 0x5375, 0x4e71, 0x63a0, 0x7565, 0x62a1, 0x8f6e, 0x4f26, 0x4ed1, 0x6ca6, 0x7eb6, 0x8bba, 0x841d, 0x87ba, 0x7f57, 0x903b, 0x9523, 0x7ba9, 0x9aa1, 0x88f8, 0x843d, 0x6d1b, 0x9a86, 0x7edc, 0x5988, 0x9ebb, 0x739b, 0x7801, 0x8682, 0x9a6c, 0x9a82, 0x561b, 0x5417, 0x57cb, 0x4e70, 0x9ea6, 0x5356, 0x8fc8, 0x8109, 0x7792, 0x9992, 0x86ee, 0x6ee1, 0x8513, 0x66fc, 0x6162, 0x6f2b, + 0x807e, 0x8081, 0x8082, 0x8085, 0x8088, 0x808a, 0x808d, 0x808e, 0x808f, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099, 0x809e, 0x80a3, 0x80a6, 0x80a7, 0x80a8, 0x80ac, 0x80b0, 0x80b3, 0x80b5, 0x80b6, 0x80b8, 0x80b9, 0x80bb, 0x80c5, 0x80c7, 0x80c8, 0x80c9, 0x80ca, 0x80cb, 0x80cf, 0x80d0, 0x80d1, 0x80d2, 0x80d3, 0x80d4, 0x80d5, 0x80d8, 0x80df, 0x80e0, 0x80e2, 0x80e3, 0x80e6, 0x80ee, 0x80f5, 0x80f7, 0x80f9, 0x80fb, 0x80fe, 0x80ff, 0x8100, 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810b, 0xfffd, 0x810c, 0x8115, 0x8117, 0x8119, 0x811b, 0x811c, 0x811d, 0x811f, 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127, 0x8128, 0x8129, 0x812a, 0x812b, 0x812d, 0x812e, 0x8130, 0x8133, 0x8134, 0x8135, 0x8137, 0x8139, 0x813a, 0x813b, 0x813c, 0x813d, 0x813f, 0x8c29, 0x8292, 0x832b, 0x76f2, 0x6c13, 0x5fd9, 0x83bd, 0x732b, 0x8305, 0x951a, 0x6bdb, 0x77db, 0x94c6, 0x536f, 0x8302, 0x5192, 0x5e3d, 0x8c8c, 0x8d38, 0x4e48, 0x73ab, 0x679a, 0x6885, 0x9176, 0x9709, 0x7164, 0x6ca1, 0x7709, 0x5a92, 0x9541, 0x6bcf, 0x7f8e, 0x6627, 0x5bd0, 0x59b9, 0x5a9a, 0x95e8, 0x95f7, 0x4eec, 0x840c, 0x8499, 0x6aac, 0x76df, 0x9530, 0x731b, 0x68a6, 0x5b5f, 0x772f, 0x919a, 0x9761, 0x7cdc, 0x8ff7, 0x8c1c, 0x5f25, 0x7c73, 0x79d8, 0x89c5, 0x6ccc, 0x871c, 0x5bc6, 0x5e42, 0x68c9, 0x7720, 0x7ef5, 0x5195, 0x514d, 0x52c9, 0x5a29, 0x7f05, 0x9762, 0x82d7, 0x63cf, 0x7784, 0x85d0, 0x79d2, 0x6e3a, 0x5e99, 0x5999, 0x8511, 0x706d, 0x6c11, 0x62bf, 0x76bf, 0x654f, 0x60af, 0x95fd, 0x660e, 0x879f, 0x9e23, 0x94ed, 0x540d, 0x547d, 0x8c2c, 0x6478, + 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149, 0x814d, 0x814e, 0x814f, 0x8152, 0x8156, 0x8157, 0x8158, 0x815b, 0x815c, 0x815d, 0x815e, 0x815f, 0x8161, 0x8162, 0x8163, 0x8164, 0x8166, 0x8168, 0x816a, 0x816b, 0x816c, 0x816f, 0x8172, 0x8173, 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185, 0x8186, 0x8187, 0x8189, 0x818b, 0x818c, 0x818d, 0x818e, 0x8190, 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819a, 0x819e, 0x819f, 0x81a0, 0x81a1, 0x81a2, 0x81a4, 0x81a5, 0xfffd, 0x81a7, 0x81a9, 0x81ab, 0x81ac, 0x81ad, 0x81ae, 0x81af, 0x81b0, 0x81b1, 0x81b2, 0x81b4, 0x81b5, 0x81b6, 0x81b7, 0x81b8, 0x81b9, 0x81bc, 0x81bd, 0x81be, 0x81bf, 0x81c4, 0x81c5, 0x81c7, 0x81c8, 0x81c9, 0x81cb, 0x81cd, 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d2, 0x81d3, 0x6479, 0x8611, 0x6a21, 0x819c, 0x78e8, 0x6469, 0x9b54, 0x62b9, 0x672b, 0x83ab, 0x58a8, 0x9ed8, 0x6cab, 0x6f20, 0x5bde, 0x964c, 0x8c0b, 0x725f, 0x67d0, 0x62c7, 0x7261, 0x4ea9, 0x59c6, 0x6bcd, 0x5893, 0x66ae, 0x5e55, 0x52df, 0x6155, 0x6728, 0x76ee, 0x7766, 0x7267, 0x7a46, 0x62ff, 0x54ea, 0x5450, 0x94a0, 0x90a3, 0x5a1c, 0x7eb3, 0x6c16, 0x4e43, 0x5976, 0x8010, 0x5948, 0x5357, 0x7537, 0x96be, 0x56ca, 0x6320, 0x8111, 0x607c, 0x95f9, 0x6dd6, 0x5462, 0x9981, 0x5185, 0x5ae9, 0x80fd, 0x59ae, 0x9713, 0x502a, 0x6ce5, 0x5c3c, 0x62df, 0x4f60, 0x533f, 0x817b, 0x9006, 0x6eba, 0x852b, 0x62c8, 0x5e74, 0x78be, 0x64b5, 0x637b, 0x5ff5, 0x5a18, 0x917f, 0x9e1f, 0x5c3f, 0x634f, 0x8042, 0x5b7d, 0x556e, 0x954a, 0x954d, 0x6d85, 0x60a8, 0x67e0, 0x72de, 0x51dd, 0x5b81, + 0x81d4, 0x81d5, 0x81d6, 0x81d7, 0x81d8, 0x81d9, 0x81da, 0x81db, 0x81dc, 0x81dd, 0x81de, 0x81df, 0x81e0, 0x81e1, 0x81e2, 0x81e4, 0x81e5, 0x81e6, 0x81e8, 0x81e9, 0x81eb, 0x81ee, 0x81ef, 0x81f0, 0x81f1, 0x81f2, 0x81f5, 0x81f6, 0x81f7, 0x81f8, 0x81f9, 0x81fa, 0x81fd, 0x81ff, 0x8203, 0x8207, 0x8208, 0x8209, 0x820a, 0x820b, 0x820e, 0x820f, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218, 0x8219, 0x821a, 0x821d, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227, 0x8229, 0x822e, 0x8232, 0x823a, 0x823c, 0x823d, 0x823f, 0xfffd, 0x8240, 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824a, 0x824c, 0x824d, 0x824e, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254, 0x8255, 0x8256, 0x8257, 0x8259, 0x825b, 0x825c, 0x825d, 0x825e, 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267, 0x8269, 0x62e7, 0x6cde, 0x725b, 0x626d, 0x94ae, 0x7ebd, 0x8113, 0x6d53, 0x519c, 0x5f04, 0x5974, 0x52aa, 0x6012, 0x5973, 0x6696, 0x8650, 0x759f, 0x632a, 0x61e6, 0x7cef, 0x8bfa, 0x54e6, 0x6b27, 0x9e25, 0x6bb4, 0x85d5, 0x5455, 0x5076, 0x6ca4, 0x556a, 0x8db4, 0x722c, 0x5e15, 0x6015, 0x7436, 0x62cd, 0x6392, 0x724c, 0x5f98, 0x6e43, 0x6d3e, 0x6500, 0x6f58, 0x76d8, 0x78d0, 0x76fc, 0x7554, 0x5224, 0x53db, 0x4e53, 0x5e9e, 0x65c1, 0x802a, 0x80d6, 0x629b, 0x5486, 0x5228, 0x70ae, 0x888d, 0x8dd1, 0x6ce1, 0x5478, 0x80da, 0x57f9, 0x88f4, 0x8d54, 0x966a, 0x914d, 0x4f69, 0x6c9b, 0x55b7, 0x76c6, 0x7830, 0x62a8, 0x70f9, 0x6f8e, 0x5f6d, 0x84ec, 0x68da, 0x787c, 0x7bf7, 0x81a8, 0x670b, 0x9e4f, 0x6367, 0x78b0, 0x576f, 0x7812, 0x9739, 0x6279, 0x62ab, 0x5288, 0x7435, 0x6bd7, + 0x826a, 0x826b, 0x826c, 0x826d, 0x8271, 0x8275, 0x8276, 0x8277, 0x8278, 0x827b, 0x827c, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286, 0x8287, 0x8289, 0x828c, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296, 0x829a, 0x829b, 0x829e, 0x82a0, 0x82a2, 0x82a3, 0x82a7, 0x82b2, 0x82b5, 0x82b6, 0x82ba, 0x82bb, 0x82bc, 0x82bf, 0x82c0, 0x82c2, 0x82c3, 0x82c5, 0x82c6, 0x82c9, 0x82d0, 0x82d6, 0x82d9, 0x82da, 0x82dd, 0x82e2, 0x82e7, 0x82e8, 0x82e9, 0x82ea, 0x82ec, 0x82ed, 0x82ee, 0x82f0, 0x82f2, 0x82f3, 0x82f5, 0x82f6, 0x82f8, 0xfffd, 0x82fa, 0x82fc, 0x82fd, 0x82fe, 0x82ff, 0x8300, 0x830a, 0x830b, 0x830d, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831d, 0x831e, 0x831f, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325, 0x8326, 0x8329, 0x832a, 0x832e, 0x8330, 0x8332, 0x8337, 0x833b, 0x833d, 0x5564, 0x813e, 0x75b2, 0x76ae, 0x5339, 0x75de, 0x50fb, 0x5c41, 0x8b6c, 0x7bc7, 0x504f, 0x7247, 0x9a97, 0x98d8, 0x6f02, 0x74e2, 0x7968, 0x6487, 0x77a5, 0x62fc, 0x9891, 0x8d2b, 0x54c1, 0x8058, 0x4e52, 0x576a, 0x82f9, 0x840d, 0x5e73, 0x51ed, 0x74f6, 0x8bc4, 0x5c4f, 0x5761, 0x6cfc, 0x9887, 0x5a46, 0x7834, 0x9b44, 0x8feb, 0x7c95, 0x5256, 0x6251, 0x94fa, 0x4ec6, 0x8386, 0x8461, 0x83e9, 0x84b2, 0x57d4, 0x6734, 0x5703, 0x666e, 0x6d66, 0x8c31, 0x66dd, 0x7011, 0x671f, 0x6b3a, 0x6816, 0x621a, 0x59bb, 0x4e03, 0x51c4, 0x6f06, 0x67d2, 0x6c8f, 0x5176, 0x68cb, 0x5947, 0x6b67, 0x7566, 0x5d0e, 0x8110, 0x9f50, 0x65d7, 0x7948, 0x7941, 0x9a91, 0x8d77, 0x5c82, 0x4e5e, 0x4f01, 0x542f, 0x5951, 0x780c, 0x5668, 0x6c14, 0x8fc4, 0x5f03, 0x6c7d, 0x6ce3, 0x8bab, 0x6390, + 0x833e, 0x833f, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834a, 0x834b, 0x834c, 0x834d, 0x834e, 0x8353, 0x8355, 0x8356, 0x8357, 0x8358, 0x8359, 0x835d, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373, 0x8374, 0x8375, 0x8376, 0x8379, 0x837a, 0x837e, 0x837f, 0x8380, 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838a, 0x838b, 0x838c, 0x838d, 0x838f, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396, 0x8397, 0x8399, 0x839a, 0x839d, 0x839f, 0x83a1, 0x83a2, 0x83a3, 0x83a4, 0x83a5, 0x83a6, 0x83a7, 0x83ac, 0x83ad, 0x83ae, 0xfffd, 0x83af, 0x83b5, 0x83bb, 0x83be, 0x83bf, 0x83c2, 0x83c3, 0x83c4, 0x83c6, 0x83c8, 0x83c9, 0x83cb, 0x83cd, 0x83ce, 0x83d0, 0x83d1, 0x83d2, 0x83d3, 0x83d5, 0x83d7, 0x83d9, 0x83da, 0x83db, 0x83de, 0x83e2, 0x83e3, 0x83e4, 0x83e6, 0x83e7, 0x83e8, 0x83eb, 0x83ec, 0x83ed, 0x6070, 0x6d3d, 0x7275, 0x6266, 0x948e, 0x94c5, 0x5343, 0x8fc1, 0x7b7e, 0x4edf, 0x8c26, 0x4e7e, 0x9ed4, 0x94b1, 0x94b3, 0x524d, 0x6f5c, 0x9063, 0x6d45, 0x8c34, 0x5811, 0x5d4c, 0x6b20, 0x6b49, 0x67aa, 0x545b, 0x8154, 0x7f8c, 0x5899, 0x8537, 0x5f3a, 0x62a2, 0x6a47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77a7, 0x4e54, 0x4fa8, 0x5de7, 0x9798, 0x64ac, 0x7fd8, 0x5ced, 0x4fcf, 0x7a8d, 0x5207, 0x8304, 0x4e14, 0x602f, 0x7a83, 0x94a6, 0x4fb5, 0x4eb2, 0x79e6, 0x7434, 0x52e4, 0x82b9, 0x64d2, 0x79bd, 0x5bdd, 0x6c81, 0x9752, 0x8f7b, 0x6c22, 0x503e, 0x537f, 0x6e05, 0x64ce, 0x6674, 0x6c30, 0x60c5, 0x9877, 0x8bf7, 0x5e86, 0x743c, 0x7a77, 0x79cb, 0x4e18, 0x90b1, 0x7403, 0x6c42, 0x56da, 0x914b, 0x6cc5, 0x8d8b, 0x533a, 0x86c6, 0x66f2, 0x8eaf, 0x5c48, 0x9a71, 0x6e20, + 0x83ee, 0x83ef, 0x83f3, 0x83f4, 0x83f5, 0x83f6, 0x83f7, 0x83fa, 0x83fb, 0x83fc, 0x83fe, 0x83ff, 0x8400, 0x8402, 0x8405, 0x8407, 0x8408, 0x8409, 0x840a, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415, 0x8416, 0x8417, 0x8419, 0x841a, 0x841b, 0x841e, 0x841f, 0x8420, 0x8421, 0x8422, 0x8423, 0x8429, 0x842a, 0x842b, 0x842c, 0x842d, 0x842e, 0x842f, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436, 0x8437, 0x8439, 0x843a, 0x843b, 0x843e, 0x843f, 0x8440, 0x8441, 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449, 0xfffd, 0x844a, 0x844b, 0x844c, 0x844d, 0x844e, 0x844f, 0x8450, 0x8452, 0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845d, 0x845e, 0x845f, 0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846a, 0x846e, 0x846f, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847b, 0x847c, 0x53d6, 0x5a36, 0x9f8b, 0x8da3, 0x53bb, 0x5708, 0x98a7, 0x6743, 0x919b, 0x6cc9, 0x5168, 0x75ca, 0x62f3, 0x72ac, 0x5238, 0x529d, 0x7f3a, 0x7094, 0x7638, 0x5374, 0x9e4a, 0x69b7, 0x786e, 0x96c0, 0x88d9, 0x7fa4, 0x7136, 0x71c3, 0x5189, 0x67d3, 0x74e4, 0x58e4, 0x6518, 0x56b7, 0x8ba9, 0x9976, 0x6270, 0x7ed5, 0x60f9, 0x70ed, 0x58ec, 0x4ec1, 0x4eba, 0x5fcd, 0x97e7, 0x4efb, 0x8ba4, 0x5203, 0x598a, 0x7eab, 0x6254, 0x4ecd, 0x65e5, 0x620e, 0x8338, 0x84c9, 0x8363, 0x878d, 0x7194, 0x6eb6, 0x5bb9, 0x7ed2, 0x5197, 0x63c9, 0x67d4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5b7a, 0x5982, 0x8fb1, 0x4e73, 0x6c5d, 0x5165, 0x8925, 0x8f6f, 0x962e, 0x854a, 0x745e, 0x9510, 0x95f0, 0x6da6, 0x82e5, 0x5f31, 0x6492, 0x6d12, 0x8428, 0x816e, 0x9cc3, 0x585e, 0x8d5b, 0x4e09, 0x53c1, + 0x847d, 0x847e, 0x847f, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485, 0x8486, 0x848a, 0x848d, 0x848f, 0x8490, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495, 0x8496, 0x8498, 0x849a, 0x849b, 0x849d, 0x849e, 0x849f, 0x84a0, 0x84a2, 0x84a3, 0x84a4, 0x84a5, 0x84a6, 0x84a7, 0x84a8, 0x84a9, 0x84aa, 0x84ab, 0x84ac, 0x84ad, 0x84ae, 0x84b0, 0x84b1, 0x84b3, 0x84b5, 0x84b6, 0x84b7, 0x84bb, 0x84bc, 0x84be, 0x84c0, 0x84c2, 0x84c3, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84cb, 0x84cc, 0x84ce, 0x84cf, 0x84d2, 0x84d4, 0x84d5, 0x84d7, 0xfffd, 0x84d8, 0x84d9, 0x84da, 0x84db, 0x84dc, 0x84de, 0x84e1, 0x84e2, 0x84e4, 0x84e7, 0x84e8, 0x84e9, 0x84ea, 0x84eb, 0x84ed, 0x84ee, 0x84ef, 0x84f1, 0x84f2, 0x84f3, 0x84f4, 0x84f5, 0x84f6, 0x84f7, 0x84f8, 0x84f9, 0x84fa, 0x84fb, 0x84fd, 0x84fe, 0x8500, 0x8501, 0x8502, 0x4f1e, 0x6563, 0x6851, 0x55d3, 0x4e27, 0x6414, 0x9a9a, 0x626b, 0x5ac2, 0x745f, 0x8272, 0x6da9, 0x68ee, 0x50e7, 0x838e, 0x7802, 0x6740, 0x5239, 0x6c99, 0x7eb1, 0x50bb, 0x5565, 0x715e, 0x7b5b, 0x6652, 0x73ca, 0x82eb, 0x6749, 0x5c71, 0x5220, 0x717d, 0x886b, 0x95ea, 0x9655, 0x64c5, 0x8d61, 0x81b3, 0x5584, 0x6c55, 0x6247, 0x7f2e, 0x5892, 0x4f24, 0x5546, 0x8d4f, 0x664c, 0x4e0a, 0x5c1a, 0x88f3, 0x68a2, 0x634e, 0x7a0d, 0x70e7, 0x828d, 0x52fa, 0x97f6, 0x5c11, 0x54e8, 0x90b5, 0x7ecd, 0x5962, 0x8d4a, 0x86c7, 0x820c, 0x820d, 0x8d66, 0x6444, 0x5c04, 0x6151, 0x6d89, 0x793e, 0x8bbe, 0x7837, 0x7533, 0x547b, 0x4f38, 0x8eab, 0x6df1, 0x5a20, 0x7ec5, 0x795e, 0x6c88, 0x5ba1, 0x5a76, 0x751a, 0x80be, 0x614e, 0x6e17, 0x58f0, 0x751f, 0x7525, 0x7272, 0x5347, 0x7ef3, + 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850a, 0x850b, 0x850d, 0x850e, 0x850f, 0x8510, 0x8512, 0x8514, 0x8515, 0x8516, 0x8518, 0x8519, 0x851b, 0x851c, 0x851d, 0x851e, 0x8520, 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529, 0x852a, 0x852d, 0x852e, 0x852f, 0x8530, 0x8531, 0x8532, 0x8533, 0x8534, 0x8535, 0x8536, 0x853e, 0x853f, 0x8540, 0x8541, 0x8542, 0x8544, 0x8545, 0x8546, 0x8547, 0x854b, 0x854c, 0x854d, 0x854e, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555, 0xfffd, 0x8557, 0x8558, 0x855a, 0x855b, 0x855c, 0x855d, 0x855f, 0x8560, 0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856a, 0x856b, 0x856c, 0x856d, 0x856e, 0x856f, 0x8570, 0x8571, 0x8573, 0x8575, 0x8576, 0x8577, 0x8578, 0x857c, 0x857d, 0x857f, 0x8580, 0x8581, 0x7701, 0x76db, 0x5269, 0x80dc, 0x5723, 0x5e08, 0x5931, 0x72ee, 0x65bd, 0x6e7f, 0x8bd7, 0x5c38, 0x8671, 0x5341, 0x77f3, 0x62fe, 0x65f6, 0x4ec0, 0x98df, 0x8680, 0x5b9e, 0x8bc6, 0x53f2, 0x77e2, 0x4f7f, 0x5c4e, 0x9a76, 0x59cb, 0x5f0f, 0x793a, 0x58eb, 0x4e16, 0x67ff, 0x4e8b, 0x62ed, 0x8a93, 0x901d, 0x52bf, 0x662f, 0x55dc, 0x566c, 0x9002, 0x4ed5, 0x4f8d, 0x91ca, 0x9970, 0x6c0f, 0x5e02, 0x6043, 0x5ba4, 0x89c6, 0x8bd5, 0x6536, 0x624b, 0x9996, 0x5b88, 0x5bff, 0x6388, 0x552e, 0x53d7, 0x7626, 0x517d, 0x852c, 0x67a2, 0x68b3, 0x6b8a, 0x6292, 0x8f93, 0x53d4, 0x8212, 0x6dd1, 0x758f, 0x4e66, 0x8d4e, 0x5b70, 0x719f, 0x85af, 0x6691, 0x66d9, 0x7f72, 0x8700, 0x9ecd, 0x9f20, 0x5c5e, 0x672f, 0x8ff0, 0x6811, 0x675f, 0x620d, 0x7ad6, 0x5885, 0x5eb6, 0x6570, 0x6f31, + 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858a, 0x858b, 0x858c, 0x858d, 0x858e, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0x859a, 0x859d, 0x859e, 0x859f, 0x85a0, 0x85a1, 0x85a2, 0x85a3, 0x85a5, 0x85a6, 0x85a7, 0x85a9, 0x85ab, 0x85ac, 0x85ad, 0x85b1, 0x85b2, 0x85b3, 0x85b4, 0x85b5, 0x85b6, 0x85b8, 0x85ba, 0x85bb, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c0, 0x85c2, 0x85c3, 0x85c4, 0x85c5, 0x85c6, 0x85c7, 0x85c8, 0x85ca, 0x85cb, 0x85cc, 0x85cd, 0x85ce, 0x85d1, 0x85d2, 0xfffd, 0x85d4, 0x85d6, 0x85d7, 0x85d8, 0x85d9, 0x85da, 0x85db, 0x85dd, 0x85de, 0x85df, 0x85e0, 0x85e1, 0x85e2, 0x85e3, 0x85e5, 0x85e6, 0x85e7, 0x85e8, 0x85ea, 0x85eb, 0x85ec, 0x85ed, 0x85ee, 0x85ef, 0x85f0, 0x85f1, 0x85f2, 0x85f3, 0x85f4, 0x85f5, 0x85f6, 0x85f7, 0x85f8, 0x6055, 0x5237, 0x800d, 0x6454, 0x8870, 0x7529, 0x5e05, 0x6813, 0x62f4, 0x971c, 0x53cc, 0x723d, 0x8c01, 0x6c34, 0x7761, 0x7a0e, 0x542e, 0x77ac, 0x987a, 0x821c, 0x8bf4, 0x7855, 0x6714, 0x70c1, 0x65af, 0x6495, 0x5636, 0x601d, 0x79c1, 0x53f8, 0x4e1d, 0x6b7b, 0x8086, 0x5bfa, 0x55e3, 0x56db, 0x4f3a, 0x4f3c, 0x9972, 0x5df3, 0x677e, 0x8038, 0x6002, 0x9882, 0x9001, 0x5b8b, 0x8bbc, 0x8bf5, 0x641c, 0x8258, 0x64de, 0x55fd, 0x82cf, 0x9165, 0x4fd7, 0x7d20, 0x901f, 0x7c9f, 0x50f3, 0x5851, 0x6eaf, 0x5bbf, 0x8bc9, 0x8083, 0x9178, 0x849c, 0x7b97, 0x867d, 0x968b, 0x968f, 0x7ee5, 0x9ad3, 0x788e, 0x5c81, 0x7a57, 0x9042, 0x96a7, 0x795f, 0x5b59, 0x635f, 0x7b0b, 0x84d1, 0x68ad, 0x5506, 0x7f29, 0x7410, 0x7d22, 0x9501, 0x6240, 0x584c, 0x4ed6, 0x5b83, 0x5979, 0x5854, + 0x85f9, 0x85fa, 0x85fc, 0x85fd, 0x85fe, 0x8600, 0x8601, 0x8602, 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860a, 0x860b, 0x860c, 0x860d, 0x860e, 0x860f, 0x8610, 0x8612, 0x8613, 0x8614, 0x8615, 0x8617, 0x8618, 0x8619, 0x861a, 0x861b, 0x861c, 0x861d, 0x861e, 0x861f, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625, 0x8626, 0x8628, 0x862a, 0x862b, 0x862c, 0x862d, 0x862e, 0x862f, 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637, 0x8639, 0x863a, 0x863b, 0x863d, 0x863e, 0x863f, 0x8640, 0xfffd, 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649, 0x864a, 0x864b, 0x864c, 0x8652, 0x8653, 0x8655, 0x8656, 0x8657, 0x8658, 0x8659, 0x865b, 0x865c, 0x865d, 0x865f, 0x8660, 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669, 0x866a, 0x736d, 0x631e, 0x8e4b, 0x8e0f, 0x80ce, 0x82d4, 0x62ac, 0x53f0, 0x6cf0, 0x915e, 0x592a, 0x6001, 0x6c70, 0x574d, 0x644a, 0x8d2a, 0x762b, 0x6ee9, 0x575b, 0x6a80, 0x75f0, 0x6f6d, 0x8c2d, 0x8c08, 0x5766, 0x6bef, 0x8892, 0x78b3, 0x63a2, 0x53f9, 0x70ad, 0x6c64, 0x5858, 0x642a, 0x5802, 0x68e0, 0x819b, 0x5510, 0x7cd6, 0x5018, 0x8eba, 0x6dcc, 0x8d9f, 0x70eb, 0x638f, 0x6d9b, 0x6ed4, 0x7ee6, 0x8404, 0x6843, 0x9003, 0x6dd8, 0x9676, 0x8ba8, 0x5957, 0x7279, 0x85e4, 0x817e, 0x75bc, 0x8a8a, 0x68af, 0x5254, 0x8e22, 0x9511, 0x63d0, 0x9898, 0x8e44, 0x557c, 0x4f53, 0x66ff, 0x568f, 0x60d5, 0x6d95, 0x5243, 0x5c49, 0x5929, 0x6dfb, 0x586b, 0x7530, 0x751c, 0x606c, 0x8214, 0x8146, 0x6311, 0x6761, 0x8fe2, 0x773a, 0x8df3, 0x8d34, 0x94c1, 0x5e16, 0x5385, 0x542c, 0x70c3, + 0x866d, 0x866f, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676, 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688, 0x8689, 0x868e, 0x868f, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696, 0x8697, 0x8698, 0x8699, 0x869a, 0x869b, 0x869e, 0x869f, 0x86a0, 0x86a1, 0x86a2, 0x86a5, 0x86a6, 0x86ab, 0x86ad, 0x86ae, 0x86b2, 0x86b3, 0x86b7, 0x86b8, 0x86b9, 0x86bb, 0x86bc, 0x86bd, 0x86be, 0x86bf, 0x86c1, 0x86c2, 0x86c3, 0x86c5, 0x86c8, 0x86cc, 0x86cd, 0x86d2, 0x86d3, 0x86d5, 0x86d6, 0x86d7, 0x86da, 0x86dc, 0xfffd, 0x86dd, 0x86e0, 0x86e1, 0x86e2, 0x86e3, 0x86e5, 0x86e6, 0x86e7, 0x86e8, 0x86ea, 0x86eb, 0x86ec, 0x86ef, 0x86f5, 0x86f6, 0x86f7, 0x86fa, 0x86fb, 0x86fc, 0x86fd, 0x86ff, 0x8701, 0x8704, 0x8705, 0x8706, 0x870b, 0x870c, 0x870e, 0x870f, 0x8710, 0x8711, 0x8714, 0x8716, 0x6c40, 0x5ef7, 0x505c, 0x4ead, 0x5ead, 0x633a, 0x8247, 0x901a, 0x6850, 0x916e, 0x77b3, 0x540c, 0x94dc, 0x5f64, 0x7ae5, 0x6876, 0x6345, 0x7b52, 0x7edf, 0x75db, 0x5077, 0x6295, 0x5934, 0x900f, 0x51f8, 0x79c3, 0x7a81, 0x56fe, 0x5f92, 0x9014, 0x6d82, 0x5c60, 0x571f, 0x5410, 0x5154, 0x6e4d, 0x56e2, 0x63a8, 0x9893, 0x817f, 0x8715, 0x892a, 0x9000, 0x541e, 0x5c6f, 0x81c0, 0x62d6, 0x6258, 0x8131, 0x9e35, 0x9640, 0x9a6e, 0x9a7c, 0x692d, 0x59a5, 0x62d3, 0x553e, 0x6316, 0x54c7, 0x86d9, 0x6d3c, 0x5a03, 0x74e6, 0x889c, 0x6b6a, 0x5916, 0x8c4c, 0x5f2f, 0x6e7e, 0x73a9, 0x987d, 0x4e38, 0x70f7, 0x5b8c, 0x7897, 0x633d, 0x665a, 0x7696, 0x60cb, 0x5b9b, 0x5a49, 0x4e07, 0x8155, 0x6c6a, 0x738b, 0x4ea1, 0x6789, 0x7f51, 0x5f80, 0x65fa, 0x671b, 0x5fd8, 0x5984, 0x5a01, + 0x8719, 0x871b, 0x871d, 0x871f, 0x8720, 0x8724, 0x8726, 0x8727, 0x8728, 0x872a, 0x872b, 0x872c, 0x872d, 0x872f, 0x8730, 0x8732, 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873a, 0x873c, 0x873d, 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874a, 0x874b, 0x874d, 0x874f, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755, 0x8756, 0x8758, 0x875a, 0x875b, 0x875c, 0x875d, 0x875e, 0x875f, 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876a, 0x876b, 0x876c, 0x876d, 0x876f, 0x8771, 0x8772, 0x8773, 0x8775, 0xfffd, 0x8777, 0x8778, 0x8779, 0x877a, 0x877f, 0x8780, 0x8781, 0x8784, 0x8786, 0x8787, 0x8789, 0x878a, 0x878c, 0x878e, 0x878f, 0x8790, 0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879a, 0x879b, 0x879c, 0x879d, 0x879e, 0x87a0, 0x87a1, 0x87a2, 0x87a3, 0x87a4, 0x5dcd, 0x5fae, 0x5371, 0x97e6, 0x8fdd, 0x6845, 0x56f4, 0x552f, 0x60df, 0x4e3a, 0x6f4d, 0x7ef4, 0x82c7, 0x840e, 0x59d4, 0x4f1f, 0x4f2a, 0x5c3e, 0x7eac, 0x672a, 0x851a, 0x5473, 0x754f, 0x80c3, 0x5582, 0x9b4f, 0x4f4d, 0x6e2d, 0x8c13, 0x5c09, 0x6170, 0x536b, 0x761f, 0x6e29, 0x868a, 0x6587, 0x95fb, 0x7eb9, 0x543b, 0x7a33, 0x7d0a, 0x95ee, 0x55e1, 0x7fc1, 0x74ee, 0x631d, 0x8717, 0x6da1, 0x7a9d, 0x6211, 0x65a1, 0x5367, 0x63e1, 0x6c83, 0x5deb, 0x545c, 0x94a8, 0x4e4c, 0x6c61, 0x8bec, 0x5c4b, 0x65e0, 0x829c, 0x68a7, 0x543e, 0x5434, 0x6bcb, 0x6b66, 0x4e94, 0x6342, 0x5348, 0x821e, 0x4f0d, 0x4fae, 0x575e, 0x620a, 0x96fe, 0x6664, 0x7269, 0x52ff, 0x52a1, 0x609f, 0x8bef, 0x6614, 0x7199, 0x6790, 0x897f, 0x7852, 0x77fd, 0x6670, 0x563b, 0x5438, 0x9521, 0x727a, + 0x87a5, 0x87a6, 0x87a7, 0x87a9, 0x87aa, 0x87ae, 0x87b0, 0x87b1, 0x87b2, 0x87b4, 0x87b6, 0x87b7, 0x87b8, 0x87b9, 0x87bb, 0x87bc, 0x87be, 0x87bf, 0x87c1, 0x87c2, 0x87c3, 0x87c4, 0x87c5, 0x87c7, 0x87c8, 0x87c9, 0x87cc, 0x87cd, 0x87ce, 0x87cf, 0x87d0, 0x87d4, 0x87d5, 0x87d6, 0x87d7, 0x87d8, 0x87d9, 0x87da, 0x87dc, 0x87dd, 0x87de, 0x87df, 0x87e1, 0x87e2, 0x87e3, 0x87e4, 0x87e6, 0x87e7, 0x87e8, 0x87e9, 0x87eb, 0x87ec, 0x87ed, 0x87ef, 0x87f0, 0x87f1, 0x87f2, 0x87f3, 0x87f4, 0x87f5, 0x87f6, 0x87f7, 0x87f8, 0xfffd, 0x87fa, 0x87fb, 0x87fc, 0x87fd, 0x87ff, 0x8800, 0x8801, 0x8802, 0x8804, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880b, 0x880c, 0x880d, 0x880e, 0x880f, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817, 0x8818, 0x8819, 0x881a, 0x881c, 0x881d, 0x881e, 0x881f, 0x8820, 0x8823, 0x7a00, 0x606f, 0x5e0c, 0x6089, 0x819d, 0x5915, 0x60dc, 0x7184, 0x70ef, 0x6eaa, 0x6c50, 0x7280, 0x6a84, 0x88ad, 0x5e2d, 0x4e60, 0x5ab3, 0x559c, 0x94e3, 0x6d17, 0x7cfb, 0x9699, 0x620f, 0x7ec6, 0x778e, 0x867e, 0x5323, 0x971e, 0x8f96, 0x6687, 0x5ce1, 0x4fa0, 0x72ed, 0x4e0b, 0x53a6, 0x590f, 0x5413, 0x6380, 0x9528, 0x5148, 0x4ed9, 0x9c9c, 0x7ea4, 0x54b8, 0x8d24, 0x8854, 0x8237, 0x95f2, 0x6d8e, 0x5f26, 0x5acc, 0x663e, 0x9669, 0x73b0, 0x732e, 0x53bf, 0x817a, 0x9985, 0x7fa1, 0x5baa, 0x9677, 0x9650, 0x7ebf, 0x76f8, 0x53a2, 0x9576, 0x9999, 0x7bb1, 0x8944, 0x6e58, 0x4e61, 0x7fd4, 0x7965, 0x8be6, 0x60f3, 0x54cd, 0x4eab, 0x9879, 0x5df7, 0x6a61, 0x50cf, 0x5411, 0x8c61, 0x8427, 0x785d, 0x9704, 0x524a, 0x54ee, 0x56a3, 0x9500, 0x6d88, 0x5bb5, 0x6dc6, 0x6653, + 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882a, 0x882b, 0x882c, 0x882d, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833, 0x8834, 0x8835, 0x8836, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883e, 0x883f, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849, 0x884a, 0x884b, 0x884e, 0x884f, 0x8850, 0x8851, 0x8852, 0x8853, 0x8855, 0x8856, 0x8858, 0x885a, 0x885b, 0x885c, 0x885d, 0x885e, 0x885f, 0x8860, 0x8866, 0x8867, 0x886a, 0x886d, 0x886f, 0x8871, 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887a, 0xfffd, 0x887b, 0x887c, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888a, 0x888c, 0x888e, 0x888f, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895, 0x8897, 0x8898, 0x8899, 0x889a, 0x889b, 0x889d, 0x889e, 0x889f, 0x88a0, 0x88a1, 0x88a3, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9, 0x88aa, 0x5c0f, 0x5b5d, 0x6821, 0x8096, 0x5578, 0x7b11, 0x6548, 0x6954, 0x4e9b, 0x6b47, 0x874e, 0x978b, 0x534f, 0x631f, 0x643a, 0x90aa, 0x659c, 0x80c1, 0x8c10, 0x5199, 0x68b0, 0x5378, 0x87f9, 0x61c8, 0x6cc4, 0x6cfb, 0x8c22, 0x5c51, 0x85aa, 0x82af, 0x950c, 0x6b23, 0x8f9b, 0x65b0, 0x5ffb, 0x5fc3, 0x4fe1, 0x8845, 0x661f, 0x8165, 0x7329, 0x60fa, 0x5174, 0x5211, 0x578b, 0x5f62, 0x90a2, 0x884c, 0x9192, 0x5e78, 0x674f, 0x6027, 0x59d3, 0x5144, 0x51f6, 0x80f8, 0x5308, 0x6c79, 0x96c4, 0x718a, 0x4f11, 0x4fee, 0x7f9e, 0x673d, 0x55c5, 0x9508, 0x79c0, 0x8896, 0x7ee3, 0x589f, 0x620c, 0x9700, 0x865a, 0x5618, 0x987b, 0x5f90, 0x8bb8, 0x84c4, 0x9157, 0x53d9, 0x65ed, 0x5e8f, 0x755c, 0x6064, 0x7d6e, 0x5a7f, 0x7eea, 0x7eed, 0x8f69, 0x55a7, 0x5ba3, 0x60ac, 0x65cb, 0x7384, + 0x88ac, 0x88ae, 0x88af, 0x88b0, 0x88b2, 0x88b3, 0x88b4, 0x88b5, 0x88b6, 0x88b8, 0x88b9, 0x88ba, 0x88bb, 0x88bd, 0x88be, 0x88bf, 0x88c0, 0x88c3, 0x88c4, 0x88c7, 0x88c8, 0x88ca, 0x88cb, 0x88cc, 0x88cd, 0x88cf, 0x88d0, 0x88d1, 0x88d3, 0x88d6, 0x88d7, 0x88da, 0x88db, 0x88dc, 0x88dd, 0x88de, 0x88e0, 0x88e1, 0x88e6, 0x88e7, 0x88e9, 0x88ea, 0x88eb, 0x88ec, 0x88ed, 0x88ee, 0x88ef, 0x88f2, 0x88f5, 0x88f6, 0x88f7, 0x88fa, 0x88fb, 0x88fd, 0x88ff, 0x8900, 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908, 0xfffd, 0x8909, 0x890b, 0x890c, 0x890d, 0x890e, 0x890f, 0x8911, 0x8914, 0x8915, 0x8916, 0x8917, 0x8918, 0x891c, 0x891d, 0x891e, 0x891f, 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929, 0x892c, 0x892d, 0x892e, 0x892f, 0x8931, 0x8932, 0x8933, 0x8935, 0x8937, 0x9009, 0x7663, 0x7729, 0x7eda, 0x9774, 0x859b, 0x5b66, 0x7a74, 0x96ea, 0x8840, 0x52cb, 0x718f, 0x5faa, 0x65ec, 0x8be2, 0x5bfb, 0x9a6f, 0x5de1, 0x6b89, 0x6c5b, 0x8bad, 0x8baf, 0x900a, 0x8fc5, 0x538b, 0x62bc, 0x9e26, 0x9e2d, 0x5440, 0x4e2b, 0x82bd, 0x7259, 0x869c, 0x5d16, 0x8859, 0x6daf, 0x96c5, 0x54d1, 0x4e9a, 0x8bb6, 0x7109, 0x54bd, 0x9609, 0x70df, 0x6df9, 0x76d0, 0x4e25, 0x7814, 0x8712, 0x5ca9, 0x5ef6, 0x8a00, 0x989c, 0x960e, 0x708e, 0x6cbf, 0x5944, 0x63a9, 0x773c, 0x884d, 0x6f14, 0x8273, 0x5830, 0x71d5, 0x538c, 0x781a, 0x96c1, 0x5501, 0x5f66, 0x7130, 0x5bb4, 0x8c1a, 0x9a8c, 0x6b83, 0x592e, 0x9e2f, 0x79e7, 0x6768, 0x626c, 0x4f6f, 0x75a1, 0x7f8a, 0x6d0b, 0x9633, 0x6c27, 0x4ef0, 0x75d2, 0x517b, 0x6837, 0x6f3e, 0x9080, 0x8170, 0x5996, 0x7476, + 0x8938, 0x8939, 0x893a, 0x893b, 0x893c, 0x893d, 0x893e, 0x893f, 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949, 0x894a, 0x894b, 0x894c, 0x894d, 0x894e, 0x894f, 0x8950, 0x8951, 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0x895a, 0x895b, 0x895c, 0x895d, 0x8960, 0x8961, 0x8962, 0x8963, 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896a, 0x896b, 0x896c, 0x896d, 0x896e, 0x896f, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897a, 0x897c, 0xfffd, 0x897d, 0x897e, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988, 0x8989, 0x898a, 0x898b, 0x898c, 0x898d, 0x898e, 0x898f, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899a, 0x899b, 0x899c, 0x899d, 0x899e, 0x899f, 0x89a0, 0x89a1, 0x6447, 0x5c27, 0x9065, 0x7a91, 0x8c23, 0x59da, 0x54ac, 0x8200, 0x836f, 0x8981, 0x8000, 0x6930, 0x564e, 0x8036, 0x7237, 0x91ce, 0x51b6, 0x4e5f, 0x9875, 0x6396, 0x4e1a, 0x53f6, 0x66f3, 0x814b, 0x591c, 0x6db2, 0x4e00, 0x58f9, 0x533b, 0x63d6, 0x94f1, 0x4f9d, 0x4f0a, 0x8863, 0x9890, 0x5937, 0x9057, 0x79fb, 0x4eea, 0x80f0, 0x7591, 0x6c82, 0x5b9c, 0x59e8, 0x5f5d, 0x6905, 0x8681, 0x501a, 0x5df2, 0x4e59, 0x77e3, 0x4ee5, 0x827a, 0x6291, 0x6613, 0x9091, 0x5c79, 0x4ebf, 0x5f79, 0x81c6, 0x9038, 0x8084, 0x75ab, 0x4ea6, 0x88d4, 0x610f, 0x6bc5, 0x5fc6, 0x4e49, 0x76ca, 0x6ea2, 0x8be3, 0x8bae, 0x8c0a, 0x8bd1, 0x5f02, 0x7ffc, 0x7fcc, 0x7ece, 0x8335, 0x836b, 0x56e0, 0x6bb7, 0x97f3, 0x9634, 0x59fb, 0x541f, 0x94f6, 0x6deb, 0x5bc5, 0x996e, 0x5c39, 0x5f15, 0x9690, + 0x89a2, 0x89a3, 0x89a4, 0x89a5, 0x89a6, 0x89a7, 0x89a8, 0x89a9, 0x89aa, 0x89ab, 0x89ac, 0x89ad, 0x89ae, 0x89af, 0x89b0, 0x89b1, 0x89b2, 0x89b3, 0x89b4, 0x89b5, 0x89b6, 0x89b7, 0x89b8, 0x89b9, 0x89ba, 0x89bb, 0x89bc, 0x89bd, 0x89be, 0x89bf, 0x89c0, 0x89c3, 0x89cd, 0x89d3, 0x89d4, 0x89d5, 0x89d7, 0x89d8, 0x89d9, 0x89db, 0x89dd, 0x89df, 0x89e0, 0x89e1, 0x89e2, 0x89e4, 0x89e7, 0x89e8, 0x89e9, 0x89ea, 0x89ec, 0x89ed, 0x89ee, 0x89f0, 0x89f1, 0x89f2, 0x89f4, 0x89f5, 0x89f6, 0x89f7, 0x89f8, 0x89f9, 0x89fa, 0xfffd, 0x89fb, 0x89fc, 0x89fd, 0x89fe, 0x89ff, 0x8a01, 0x8a02, 0x8a03, 0x8a04, 0x8a05, 0x8a06, 0x8a08, 0x8a09, 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0d, 0x8a0e, 0x8a0f, 0x8a10, 0x8a11, 0x8a12, 0x8a13, 0x8a14, 0x8a15, 0x8a16, 0x8a17, 0x8a18, 0x8a19, 0x8a1a, 0x8a1b, 0x8a1c, 0x8a1d, 0x5370, 0x82f1, 0x6a31, 0x5a74, 0x9e70, 0x5e94, 0x7f28, 0x83b9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8fce, 0x8d62, 0x76c8, 0x5f71, 0x9896, 0x786c, 0x6620, 0x54df, 0x62e5, 0x4f63, 0x81c3, 0x75c8, 0x5eb8, 0x96cd, 0x8e0a, 0x86f9, 0x548f, 0x6cf3, 0x6d8c, 0x6c38, 0x607f, 0x52c7, 0x7528, 0x5e7d, 0x4f18, 0x60a0, 0x5fe7, 0x5c24, 0x7531, 0x90ae, 0x94c0, 0x72b9, 0x6cb9, 0x6e38, 0x9149, 0x6709, 0x53cb, 0x53f3, 0x4f51, 0x91c9, 0x8bf1, 0x53c8, 0x5e7c, 0x8fc2, 0x6de4, 0x4e8e, 0x76c2, 0x6986, 0x865e, 0x611a, 0x8206, 0x4f59, 0x4fde, 0x903e, 0x9c7c, 0x6109, 0x6e1d, 0x6e14, 0x9685, 0x4e88, 0x5a31, 0x96e8, 0x4e0e, 0x5c7f, 0x79b9, 0x5b87, 0x8bed, 0x7fbd, 0x7389, 0x57df, 0x828b, 0x90c1, 0x5401, 0x9047, 0x55bb, 0x5cea, 0x5fa1, 0x6108, 0x6b32, 0x72f1, 0x80b2, 0x8a89, + 0x8a1e, 0x8a1f, 0x8a20, 0x8a21, 0x8a22, 0x8a23, 0x8a24, 0x8a25, 0x8a26, 0x8a27, 0x8a28, 0x8a29, 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2d, 0x8a2e, 0x8a2f, 0x8a30, 0x8a31, 0x8a32, 0x8a33, 0x8a34, 0x8a35, 0x8a36, 0x8a37, 0x8a38, 0x8a39, 0x8a3a, 0x8a3b, 0x8a3c, 0x8a3d, 0x8a3f, 0x8a40, 0x8a41, 0x8a42, 0x8a43, 0x8a44, 0x8a45, 0x8a46, 0x8a47, 0x8a49, 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4d, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a52, 0x8a53, 0x8a54, 0x8a55, 0x8a56, 0x8a57, 0x8a58, 0x8a59, 0x8a5a, 0x8a5b, 0x8a5c, 0x8a5d, 0x8a5e, 0xfffd, 0x8a5f, 0x8a60, 0x8a61, 0x8a62, 0x8a63, 0x8a64, 0x8a65, 0x8a66, 0x8a67, 0x8a68, 0x8a69, 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6d, 0x8a6e, 0x8a6f, 0x8a70, 0x8a71, 0x8a72, 0x8a73, 0x8a74, 0x8a75, 0x8a76, 0x8a77, 0x8a78, 0x8a7a, 0x8a7b, 0x8a7c, 0x8a7d, 0x8a7e, 0x8a7f, 0x8a80, 0x6d74, 0x5bd3, 0x88d5, 0x9884, 0x8c6b, 0x9a6d, 0x9e33, 0x6e0a, 0x51a4, 0x5143, 0x57a3, 0x8881, 0x539f, 0x63f4, 0x8f95, 0x56ed, 0x5458, 0x5706, 0x733f, 0x6e90, 0x7f18, 0x8fdc, 0x82d1, 0x613f, 0x6028, 0x9662, 0x66f0, 0x7ea6, 0x8d8a, 0x8dc3, 0x94a5, 0x5cb3, 0x7ca4, 0x6708, 0x60a6, 0x9605, 0x8018, 0x4e91, 0x90e7, 0x5300, 0x9668, 0x5141, 0x8fd0, 0x8574, 0x915d, 0x6655, 0x97f5, 0x5b55, 0x531d, 0x7838, 0x6742, 0x683d, 0x54c9, 0x707e, 0x5bb0, 0x8f7d, 0x518d, 0x5728, 0x54b1, 0x6512, 0x6682, 0x8d5e, 0x8d43, 0x810f, 0x846c, 0x906d, 0x7cdf, 0x51ff, 0x85fb, 0x67a3, 0x65e9, 0x6fa1, 0x86a4, 0x8e81, 0x566a, 0x9020, 0x7682, 0x7076, 0x71e5, 0x8d23, 0x62e9, 0x5219, 0x6cfd, 0x8d3c, 0x600e, 0x589e, 0x618e, 0x66fe, 0x8d60, 0x624e, 0x55b3, 0x6e23, 0x672d, 0x8f67, + 0x8a81, 0x8a82, 0x8a83, 0x8a84, 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a8b, 0x8a8c, 0x8a8d, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a92, 0x8a94, 0x8a95, 0x8a96, 0x8a97, 0x8a98, 0x8a99, 0x8a9a, 0x8a9b, 0x8a9c, 0x8a9d, 0x8a9e, 0x8a9f, 0x8aa0, 0x8aa1, 0x8aa2, 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, 0x8aa9, 0x8aaa, 0x8aab, 0x8aac, 0x8aad, 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab2, 0x8ab3, 0x8ab4, 0x8ab5, 0x8ab6, 0x8ab7, 0x8ab8, 0x8ab9, 0x8aba, 0x8abb, 0x8abc, 0x8abd, 0x8abe, 0x8abf, 0x8ac0, 0x8ac1, 0x8ac2, 0xfffd, 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9, 0x8aca, 0x8acb, 0x8acc, 0x8acd, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad2, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad6, 0x8ad7, 0x8ad8, 0x8ad9, 0x8ada, 0x8adb, 0x8adc, 0x8add, 0x8ade, 0x8adf, 0x8ae0, 0x8ae1, 0x8ae2, 0x8ae3, 0x94e1, 0x95f8, 0x7728, 0x6805, 0x69a8, 0x548b, 0x4e4d, 0x70b8, 0x8bc8, 0x6458, 0x658b, 0x5b85, 0x7a84, 0x503a, 0x5be8, 0x77bb, 0x6be1, 0x8a79, 0x7c98, 0x6cbe, 0x76cf, 0x65a9, 0x8f97, 0x5d2d, 0x5c55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7ad9, 0x6e5b, 0x7efd, 0x6a1f, 0x7ae0, 0x5f70, 0x6f33, 0x5f20, 0x638c, 0x6da8, 0x6756, 0x4e08, 0x5e10, 0x8d26, 0x4ed7, 0x80c0, 0x7634, 0x969c, 0x62db, 0x662d, 0x627e, 0x6cbc, 0x8d75, 0x7167, 0x7f69, 0x5146, 0x8087, 0x53ec, 0x906e, 0x6298, 0x54f2, 0x86f0, 0x8f99, 0x8005, 0x9517, 0x8517, 0x8fd9, 0x6d59, 0x73cd, 0x659f, 0x771f, 0x7504, 0x7827, 0x81fb, 0x8d1e, 0x9488, 0x4fa6, 0x6795, 0x75b9, 0x8bca, 0x9707, 0x632f, 0x9547, 0x9635, 0x84b8, 0x6323, 0x7741, 0x5f81, 0x72f0, 0x4e89, 0x6014, 0x6574, 0x62ef, 0x6b63, 0x653f, + 0x8ae4, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9, 0x8aea, 0x8aeb, 0x8aec, 0x8aed, 0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af2, 0x8af3, 0x8af4, 0x8af5, 0x8af6, 0x8af7, 0x8af8, 0x8af9, 0x8afa, 0x8afb, 0x8afc, 0x8afd, 0x8afe, 0x8aff, 0x8b00, 0x8b01, 0x8b02, 0x8b03, 0x8b04, 0x8b05, 0x8b06, 0x8b08, 0x8b09, 0x8b0a, 0x8b0b, 0x8b0c, 0x8b0d, 0x8b0e, 0x8b0f, 0x8b10, 0x8b11, 0x8b12, 0x8b13, 0x8b14, 0x8b15, 0x8b16, 0x8b17, 0x8b18, 0x8b19, 0x8b1a, 0x8b1b, 0x8b1c, 0x8b1d, 0x8b1e, 0x8b1f, 0x8b20, 0x8b21, 0x8b22, 0x8b23, 0xfffd, 0x8b24, 0x8b25, 0x8b27, 0x8b28, 0x8b29, 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2d, 0x8b2e, 0x8b2f, 0x8b30, 0x8b31, 0x8b32, 0x8b33, 0x8b34, 0x8b35, 0x8b36, 0x8b37, 0x8b38, 0x8b39, 0x8b3a, 0x8b3b, 0x8b3c, 0x8b3d, 0x8b3e, 0x8b3f, 0x8b40, 0x8b41, 0x8b42, 0x8b43, 0x8b44, 0x8b45, 0x5e27, 0x75c7, 0x90d1, 0x8bc1, 0x829d, 0x679d, 0x652f, 0x5431, 0x8718, 0x77e5, 0x80a2, 0x8102, 0x6c41, 0x4e4b, 0x7ec7, 0x804c, 0x76f4, 0x690d, 0x6b96, 0x6267, 0x503c, 0x4f84, 0x5740, 0x6307, 0x6b62, 0x8dbe, 0x53ea, 0x65e8, 0x7eb8, 0x5fd7, 0x631a, 0x63b7, 0x81f3, 0x81f4, 0x7f6e, 0x5e1c, 0x5cd9, 0x5236, 0x667a, 0x79e9, 0x7a1a, 0x8d28, 0x7099, 0x75d4, 0x6ede, 0x6cbb, 0x7a92, 0x4e2d, 0x76c5, 0x5fe0, 0x949f, 0x8877, 0x7ec8, 0x79cd, 0x80bf, 0x91cd, 0x4ef2, 0x4f17, 0x821f, 0x5468, 0x5dde, 0x6d32, 0x8bcc, 0x7ca5, 0x8f74, 0x8098, 0x5e1a, 0x5492, 0x76b1, 0x5b99, 0x663c, 0x9aa4, 0x73e0, 0x682a, 0x86db, 0x6731, 0x732a, 0x8bf8, 0x8bdb, 0x9010, 0x7af9, 0x70db, 0x716e, 0x62c4, 0x77a9, 0x5631, 0x4e3b, 0x8457, 0x67f1, 0x52a9, 0x86c0, 0x8d2e, 0x94f8, 0x7b51, + 0x8b46, 0x8b47, 0x8b48, 0x8b49, 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4d, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b52, 0x8b53, 0x8b54, 0x8b55, 0x8b56, 0x8b57, 0x8b58, 0x8b59, 0x8b5a, 0x8b5b, 0x8b5c, 0x8b5d, 0x8b5e, 0x8b5f, 0x8b60, 0x8b61, 0x8b62, 0x8b63, 0x8b64, 0x8b65, 0x8b67, 0x8b68, 0x8b69, 0x8b6a, 0x8b6b, 0x8b6d, 0x8b6e, 0x8b6f, 0x8b70, 0x8b71, 0x8b72, 0x8b73, 0x8b74, 0x8b75, 0x8b76, 0x8b77, 0x8b78, 0x8b79, 0x8b7a, 0x8b7b, 0x8b7c, 0x8b7d, 0x8b7e, 0x8b7f, 0x8b80, 0x8b81, 0x8b82, 0x8b83, 0x8b84, 0x8b85, 0x8b86, 0xfffd, 0x8b87, 0x8b88, 0x8b89, 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8d, 0x8b8e, 0x8b8f, 0x8b90, 0x8b91, 0x8b92, 0x8b93, 0x8b94, 0x8b95, 0x8b96, 0x8b97, 0x8b98, 0x8b99, 0x8b9a, 0x8b9b, 0x8b9c, 0x8b9d, 0x8b9e, 0x8b9f, 0x8bac, 0x8bb1, 0x8bbb, 0x8bc7, 0x8bd0, 0x8bea, 0x8c09, 0x8c1e, 0x4f4f, 0x6ce8, 0x795d, 0x9a7b, 0x6293, 0x722a, 0x62fd, 0x4e13, 0x7816, 0x8f6c, 0x64b0, 0x8d5a, 0x7bc6, 0x6869, 0x5e84, 0x88c5, 0x5986, 0x649e, 0x58ee, 0x72b6, 0x690e, 0x9525, 0x8ffd, 0x8d58, 0x5760, 0x7f00, 0x8c06, 0x51c6, 0x6349, 0x62d9, 0x5353, 0x684c, 0x7422, 0x8301, 0x914c, 0x5544, 0x7740, 0x707c, 0x6d4a, 0x5179, 0x54a8, 0x8d44, 0x59ff, 0x6ecb, 0x6dc4, 0x5b5c, 0x7d2b, 0x4ed4, 0x7c7d, 0x6ed3, 0x5b50, 0x81ea, 0x6e0d, 0x5b57, 0x9b03, 0x68d5, 0x8e2a, 0x5b97, 0x7efc, 0x603b, 0x7eb5, 0x90b9, 0x8d70, 0x594f, 0x63cd, 0x79df, 0x8db3, 0x5352, 0x65cf, 0x7956, 0x8bc5, 0x963b, 0x7ec4, 0x94bb, 0x7e82, 0x5634, 0x9189, 0x6700, 0x7f6a, 0x5c0a, 0x9075, 0x6628, 0x5de6, 0x4f50, 0x67de, 0x505a, 0x4f5c, 0x5750, 0x5ea7, 0xe810, 0xe811, 0xe812, 0xe813, 0xe814, + 0x8c38, 0x8c39, 0x8c3a, 0x8c3b, 0x8c3c, 0x8c3d, 0x8c3e, 0x8c3f, 0x8c40, 0x8c42, 0x8c43, 0x8c44, 0x8c45, 0x8c48, 0x8c4a, 0x8c4b, 0x8c4d, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c52, 0x8c53, 0x8c54, 0x8c56, 0x8c57, 0x8c58, 0x8c59, 0x8c5b, 0x8c5c, 0x8c5d, 0x8c5e, 0x8c5f, 0x8c60, 0x8c63, 0x8c64, 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69, 0x8c6c, 0x8c6d, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c72, 0x8c74, 0x8c75, 0x8c76, 0x8c77, 0x8c7b, 0x8c7c, 0x8c7d, 0x8c7e, 0x8c7f, 0x8c80, 0x8c81, 0x8c83, 0x8c84, 0x8c86, 0x8c87, 0xfffd, 0x8c88, 0x8c8b, 0x8c8d, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c92, 0x8c93, 0x8c95, 0x8c96, 0x8c97, 0x8c99, 0x8c9a, 0x8c9b, 0x8c9c, 0x8c9d, 0x8c9e, 0x8c9f, 0x8ca0, 0x8ca1, 0x8ca2, 0x8ca3, 0x8ca4, 0x8ca5, 0x8ca6, 0x8ca7, 0x8ca8, 0x8ca9, 0x8caa, 0x8cab, 0x8cac, 0x8cad, 0x4e8d, 0x4e0c, 0x5140, 0x4e10, 0x5eff, 0x5345, 0x4e15, 0x4e98, 0x4e1e, 0x9b32, 0x5b6c, 0x5669, 0x4e28, 0x79ba, 0x4e3f, 0x5315, 0x4e47, 0x592d, 0x723b, 0x536e, 0x6c10, 0x56df, 0x80e4, 0x9997, 0x6bd3, 0x777e, 0x9f17, 0x4e36, 0x4e9f, 0x9f10, 0x4e5c, 0x4e69, 0x4e93, 0x8288, 0x5b5b, 0x556c, 0x560f, 0x4ec4, 0x538d, 0x539d, 0x53a3, 0x53a5, 0x53ae, 0x9765, 0x8d5d, 0x531a, 0x53f5, 0x5326, 0x532e, 0x533e, 0x8d5c, 0x5366, 0x5363, 0x5202, 0x5208, 0x520e, 0x522d, 0x5233, 0x523f, 0x5240, 0x524c, 0x525e, 0x5261, 0x525c, 0x84af, 0x527d, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182, 0x7f54, 0x4ebb, 0x4ec3, 0x4ec9, 0x4ec2, 0x4ee8, 0x4ee1, 0x4eeb, 0x4ede, 0x4f1b, 0x4ef3, 0x4f22, 0x4f64, 0x4ef5, 0x4f25, 0x4f27, 0x4f09, 0x4f2b, 0x4f5e, 0x4f67, 0x6538, 0x4f5a, 0x4f5d, + 0x8cae, 0x8caf, 0x8cb0, 0x8cb1, 0x8cb2, 0x8cb3, 0x8cb4, 0x8cb5, 0x8cb6, 0x8cb7, 0x8cb8, 0x8cb9, 0x8cba, 0x8cbb, 0x8cbc, 0x8cbd, 0x8cbe, 0x8cbf, 0x8cc0, 0x8cc1, 0x8cc2, 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9, 0x8cca, 0x8ccb, 0x8ccc, 0x8ccd, 0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd2, 0x8cd3, 0x8cd4, 0x8cd5, 0x8cd6, 0x8cd7, 0x8cd8, 0x8cd9, 0x8cda, 0x8cdb, 0x8cdc, 0x8cdd, 0x8cde, 0x8cdf, 0x8ce0, 0x8ce1, 0x8ce2, 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9, 0x8cea, 0x8ceb, 0x8cec, 0xfffd, 0x8ced, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf2, 0x8cf3, 0x8cf4, 0x8cf5, 0x8cf6, 0x8cf7, 0x8cf8, 0x8cf9, 0x8cfa, 0x8cfb, 0x8cfc, 0x8cfd, 0x8cfe, 0x8cff, 0x8d00, 0x8d01, 0x8d02, 0x8d03, 0x8d04, 0x8d05, 0x8d06, 0x8d07, 0x8d08, 0x8d09, 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0d, 0x4f5f, 0x4f57, 0x4f32, 0x4f3d, 0x4f76, 0x4f74, 0x4f91, 0x4f89, 0x4f83, 0x4f8f, 0x4f7e, 0x4f7b, 0x4faa, 0x4f7c, 0x4fac, 0x4f94, 0x4fe6, 0x4fe8, 0x4fea, 0x4fc5, 0x4fda, 0x4fe3, 0x4fdc, 0x4fd1, 0x4fdf, 0x4ff8, 0x5029, 0x504c, 0x4ff3, 0x502c, 0x500f, 0x502e, 0x502d, 0x4ffe, 0x501c, 0x500c, 0x5025, 0x5028, 0x507e, 0x5043, 0x5055, 0x5048, 0x504e, 0x506c, 0x507b, 0x50a5, 0x50a7, 0x50a9, 0x50ba, 0x50d6, 0x5106, 0x50ed, 0x50ec, 0x50e6, 0x50ee, 0x5107, 0x510b, 0x4edd, 0x6c3d, 0x4f58, 0x4f65, 0x4fce, 0x9fa0, 0x6c46, 0x7c74, 0x516e, 0x5dfd, 0x9ec9, 0x9998, 0x5181, 0x5914, 0x52f9, 0x530d, 0x8a07, 0x5310, 0x51eb, 0x5919, 0x5155, 0x4ea0, 0x5156, 0x4eb3, 0x886e, 0x88a4, 0x4eb5, 0x8114, 0x88d2, 0x7980, 0x5b34, 0x8803, 0x7fb8, 0x51ab, 0x51b1, 0x51bd, 0x51bc, + 0x8d0e, 0x8d0f, 0x8d10, 0x8d11, 0x8d12, 0x8d13, 0x8d14, 0x8d15, 0x8d16, 0x8d17, 0x8d18, 0x8d19, 0x8d1a, 0x8d1b, 0x8d1c, 0x8d20, 0x8d51, 0x8d52, 0x8d57, 0x8d5f, 0x8d65, 0x8d68, 0x8d69, 0x8d6a, 0x8d6c, 0x8d6e, 0x8d6f, 0x8d71, 0x8d72, 0x8d78, 0x8d79, 0x8d7a, 0x8d7b, 0x8d7c, 0x8d7d, 0x8d7e, 0x8d7f, 0x8d80, 0x8d82, 0x8d83, 0x8d86, 0x8d87, 0x8d88, 0x8d89, 0x8d8c, 0x8d8d, 0x8d8e, 0x8d8f, 0x8d90, 0x8d92, 0x8d93, 0x8d95, 0x8d96, 0x8d97, 0x8d98, 0x8d99, 0x8d9a, 0x8d9b, 0x8d9c, 0x8d9d, 0x8d9e, 0x8da0, 0x8da1, 0xfffd, 0x8da2, 0x8da4, 0x8da5, 0x8da6, 0x8da7, 0x8da8, 0x8da9, 0x8daa, 0x8dab, 0x8dac, 0x8dad, 0x8dae, 0x8daf, 0x8db0, 0x8db2, 0x8db6, 0x8db7, 0x8db9, 0x8dbb, 0x8dbd, 0x8dc0, 0x8dc1, 0x8dc2, 0x8dc5, 0x8dc7, 0x8dc8, 0x8dc9, 0x8dca, 0x8dcd, 0x8dd0, 0x8dd2, 0x8dd3, 0x8dd4, 0x51c7, 0x5196, 0x51a2, 0x51a5, 0x8ba0, 0x8ba6, 0x8ba7, 0x8baa, 0x8bb4, 0x8bb5, 0x8bb7, 0x8bc2, 0x8bc3, 0x8bcb, 0x8bcf, 0x8bce, 0x8bd2, 0x8bd3, 0x8bd4, 0x8bd6, 0x8bd8, 0x8bd9, 0x8bdc, 0x8bdf, 0x8be0, 0x8be4, 0x8be8, 0x8be9, 0x8bee, 0x8bf0, 0x8bf3, 0x8bf6, 0x8bf9, 0x8bfc, 0x8bff, 0x8c00, 0x8c02, 0x8c04, 0x8c07, 0x8c0c, 0x8c0f, 0x8c11, 0x8c12, 0x8c14, 0x8c15, 0x8c16, 0x8c19, 0x8c1b, 0x8c18, 0x8c1d, 0x8c1f, 0x8c20, 0x8c21, 0x8c25, 0x8c27, 0x8c2a, 0x8c2b, 0x8c2e, 0x8c2f, 0x8c32, 0x8c33, 0x8c35, 0x8c36, 0x5369, 0x537a, 0x961d, 0x9622, 0x9621, 0x9631, 0x962a, 0x963d, 0x963c, 0x9642, 0x9649, 0x9654, 0x965f, 0x9667, 0x966c, 0x9672, 0x9674, 0x9688, 0x968d, 0x9697, 0x96b0, 0x9097, 0x909b, 0x909d, 0x9099, 0x90ac, 0x90a1, 0x90b4, 0x90b3, 0x90b6, 0x90ba, + 0x8dd5, 0x8dd8, 0x8dd9, 0x8ddc, 0x8de0, 0x8de1, 0x8de2, 0x8de5, 0x8de6, 0x8de7, 0x8de9, 0x8ded, 0x8dee, 0x8df0, 0x8df1, 0x8df2, 0x8df4, 0x8df6, 0x8dfc, 0x8dfe, 0x8dff, 0x8e00, 0x8e01, 0x8e02, 0x8e03, 0x8e04, 0x8e06, 0x8e07, 0x8e08, 0x8e0b, 0x8e0d, 0x8e0e, 0x8e10, 0x8e11, 0x8e12, 0x8e13, 0x8e15, 0x8e16, 0x8e17, 0x8e18, 0x8e19, 0x8e1a, 0x8e1b, 0x8e1c, 0x8e20, 0x8e21, 0x8e24, 0x8e25, 0x8e26, 0x8e27, 0x8e28, 0x8e2b, 0x8e2d, 0x8e30, 0x8e32, 0x8e33, 0x8e34, 0x8e36, 0x8e37, 0x8e38, 0x8e3b, 0x8e3c, 0x8e3e, 0xfffd, 0x8e3f, 0x8e43, 0x8e45, 0x8e46, 0x8e4c, 0x8e4d, 0x8e4e, 0x8e4f, 0x8e50, 0x8e53, 0x8e54, 0x8e55, 0x8e56, 0x8e57, 0x8e58, 0x8e5a, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e5f, 0x8e60, 0x8e61, 0x8e62, 0x8e63, 0x8e64, 0x8e65, 0x8e67, 0x8e68, 0x8e6a, 0x8e6b, 0x8e6e, 0x8e71, 0x90b8, 0x90b0, 0x90cf, 0x90c5, 0x90be, 0x90d0, 0x90c4, 0x90c7, 0x90d3, 0x90e6, 0x90e2, 0x90dc, 0x90d7, 0x90db, 0x90eb, 0x90ef, 0x90fe, 0x9104, 0x9122, 0x911e, 0x9123, 0x9131, 0x912f, 0x9139, 0x9143, 0x9146, 0x520d, 0x5942, 0x52a2, 0x52ac, 0x52ad, 0x52be, 0x54ff, 0x52d0, 0x52d6, 0x52f0, 0x53df, 0x71ee, 0x77cd, 0x5ef4, 0x51f5, 0x51fc, 0x9b2f, 0x53b6, 0x5f01, 0x755a, 0x5def, 0x574c, 0x57a9, 0x57a1, 0x587e, 0x58bc, 0x58c5, 0x58d1, 0x5729, 0x572c, 0x572a, 0x5733, 0x5739, 0x572e, 0x572f, 0x575c, 0x573b, 0x5742, 0x5769, 0x5785, 0x576b, 0x5786, 0x577c, 0x577b, 0x5768, 0x576d, 0x5776, 0x5773, 0x57ad, 0x57a4, 0x578c, 0x57b2, 0x57cf, 0x57a7, 0x57b4, 0x5793, 0x57a0, 0x57d5, 0x57d8, 0x57da, 0x57d9, 0x57d2, 0x57b8, 0x57f4, 0x57ef, 0x57f8, 0x57e4, 0x57dd, + 0x8e73, 0x8e75, 0x8e77, 0x8e78, 0x8e79, 0x8e7a, 0x8e7b, 0x8e7d, 0x8e7e, 0x8e80, 0x8e82, 0x8e83, 0x8e84, 0x8e86, 0x8e88, 0x8e89, 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8d, 0x8e8e, 0x8e91, 0x8e92, 0x8e93, 0x8e95, 0x8e96, 0x8e97, 0x8e98, 0x8e99, 0x8e9a, 0x8e9b, 0x8e9d, 0x8e9f, 0x8ea0, 0x8ea1, 0x8ea2, 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9, 0x8eaa, 0x8ead, 0x8eae, 0x8eb0, 0x8eb1, 0x8eb3, 0x8eb4, 0x8eb5, 0x8eb6, 0x8eb7, 0x8eb8, 0x8eb9, 0x8ebb, 0x8ebc, 0x8ebd, 0x8ebe, 0x8ebf, 0x8ec0, 0x8ec1, 0x8ec2, 0xfffd, 0x8ec3, 0x8ec4, 0x8ec5, 0x8ec6, 0x8ec7, 0x8ec8, 0x8ec9, 0x8eca, 0x8ecb, 0x8ecc, 0x8ecd, 0x8ecf, 0x8ed0, 0x8ed1, 0x8ed2, 0x8ed3, 0x8ed4, 0x8ed5, 0x8ed6, 0x8ed7, 0x8ed8, 0x8ed9, 0x8eda, 0x8edb, 0x8edc, 0x8edd, 0x8ede, 0x8edf, 0x8ee0, 0x8ee1, 0x8ee2, 0x8ee3, 0x8ee4, 0x580b, 0x580d, 0x57fd, 0x57ed, 0x5800, 0x581e, 0x5819, 0x5844, 0x5820, 0x5865, 0x586c, 0x5881, 0x5889, 0x589a, 0x5880, 0x99a8, 0x9f19, 0x61ff, 0x8279, 0x827d, 0x827f, 0x828f, 0x828a, 0x82a8, 0x8284, 0x828e, 0x8291, 0x8297, 0x8299, 0x82ab, 0x82b8, 0x82be, 0x82b0, 0x82c8, 0x82ca, 0x82e3, 0x8298, 0x82b7, 0x82ae, 0x82cb, 0x82cc, 0x82c1, 0x82a9, 0x82b4, 0x82a1, 0x82aa, 0x829f, 0x82c4, 0x82ce, 0x82a4, 0x82e1, 0x8309, 0x82f7, 0x82e4, 0x830f, 0x8307, 0x82dc, 0x82f4, 0x82d2, 0x82d8, 0x830c, 0x82fb, 0x82d3, 0x8311, 0x831a, 0x8306, 0x8314, 0x8315, 0x82e0, 0x82d5, 0x831c, 0x8351, 0x835b, 0x835c, 0x8308, 0x8392, 0x833c, 0x8334, 0x8331, 0x839b, 0x835e, 0x832f, 0x834f, 0x8347, 0x8343, 0x835f, 0x8340, 0x8317, 0x8360, 0x832d, 0x833a, 0x8333, 0x8366, 0x8365, + 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9, 0x8eea, 0x8eeb, 0x8eec, 0x8eed, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef2, 0x8ef3, 0x8ef4, 0x8ef5, 0x8ef6, 0x8ef7, 0x8ef8, 0x8ef9, 0x8efa, 0x8efb, 0x8efc, 0x8efd, 0x8efe, 0x8eff, 0x8f00, 0x8f01, 0x8f02, 0x8f03, 0x8f04, 0x8f05, 0x8f06, 0x8f07, 0x8f08, 0x8f09, 0x8f0a, 0x8f0b, 0x8f0c, 0x8f0d, 0x8f0e, 0x8f0f, 0x8f10, 0x8f11, 0x8f12, 0x8f13, 0x8f14, 0x8f15, 0x8f16, 0x8f17, 0x8f18, 0x8f19, 0x8f1a, 0x8f1b, 0x8f1c, 0x8f1d, 0x8f1e, 0x8f1f, 0x8f20, 0x8f21, 0x8f22, 0x8f23, 0xfffd, 0x8f24, 0x8f25, 0x8f26, 0x8f27, 0x8f28, 0x8f29, 0x8f2a, 0x8f2b, 0x8f2c, 0x8f2d, 0x8f2e, 0x8f2f, 0x8f30, 0x8f31, 0x8f32, 0x8f33, 0x8f34, 0x8f35, 0x8f36, 0x8f37, 0x8f38, 0x8f39, 0x8f3a, 0x8f3b, 0x8f3c, 0x8f3d, 0x8f3e, 0x8f3f, 0x8f40, 0x8f41, 0x8f42, 0x8f43, 0x8f44, 0x8368, 0x831b, 0x8369, 0x836c, 0x836a, 0x836d, 0x836e, 0x83b0, 0x8378, 0x83b3, 0x83b4, 0x83a0, 0x83aa, 0x8393, 0x839c, 0x8385, 0x837c, 0x83b6, 0x83a9, 0x837d, 0x83b8, 0x837b, 0x8398, 0x839e, 0x83a8, 0x83ba, 0x83bc, 0x83c1, 0x8401, 0x83e5, 0x83d8, 0x5807, 0x8418, 0x840b, 0x83dd, 0x83fd, 0x83d6, 0x841c, 0x8438, 0x8411, 0x8406, 0x83d4, 0x83df, 0x840f, 0x8403, 0x83f8, 0x83f9, 0x83ea, 0x83c5, 0x83c0, 0x8426, 0x83f0, 0x83e1, 0x845c, 0x8451, 0x845a, 0x8459, 0x8473, 0x8487, 0x8488, 0x847a, 0x8489, 0x8478, 0x843c, 0x8446, 0x8469, 0x8476, 0x848c, 0x848e, 0x8431, 0x846d, 0x84c1, 0x84cd, 0x84d0, 0x84e6, 0x84bd, 0x84d3, 0x84ca, 0x84bf, 0x84ba, 0x84e0, 0x84a1, 0x84b9, 0x84b4, 0x8497, 0x84e5, 0x84e3, 0x850c, 0x750d, 0x8538, 0x84f0, 0x8539, 0x851f, 0x853a, + 0x8f45, 0x8f46, 0x8f47, 0x8f48, 0x8f49, 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4d, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f52, 0x8f53, 0x8f54, 0x8f55, 0x8f56, 0x8f57, 0x8f58, 0x8f59, 0x8f5a, 0x8f5b, 0x8f5c, 0x8f5d, 0x8f5e, 0x8f5f, 0x8f60, 0x8f61, 0x8f62, 0x8f63, 0x8f64, 0x8f65, 0x8f6a, 0x8f80, 0x8f8c, 0x8f92, 0x8f9d, 0x8fa0, 0x8fa1, 0x8fa2, 0x8fa4, 0x8fa5, 0x8fa6, 0x8fa7, 0x8faa, 0x8fac, 0x8fad, 0x8fae, 0x8faf, 0x8fb2, 0x8fb3, 0x8fb4, 0x8fb5, 0x8fb7, 0x8fb8, 0x8fba, 0x8fbb, 0x8fbc, 0x8fbf, 0x8fc0, 0x8fc3, 0x8fc6, 0xfffd, 0x8fc9, 0x8fca, 0x8fcb, 0x8fcc, 0x8fcd, 0x8fcf, 0x8fd2, 0x8fd6, 0x8fd7, 0x8fda, 0x8fe0, 0x8fe1, 0x8fe3, 0x8fe7, 0x8fec, 0x8fef, 0x8ff1, 0x8ff2, 0x8ff4, 0x8ff5, 0x8ff6, 0x8ffa, 0x8ffb, 0x8ffc, 0x8ffe, 0x8fff, 0x9007, 0x9008, 0x900c, 0x900e, 0x9013, 0x9015, 0x9018, 0x8556, 0x853b, 0x84ff, 0x84fc, 0x8559, 0x8548, 0x8568, 0x8564, 0x855e, 0x857a, 0x77a2, 0x8543, 0x8572, 0x857b, 0x85a4, 0x85a8, 0x8587, 0x858f, 0x8579, 0x85ae, 0x859c, 0x8585, 0x85b9, 0x85b7, 0x85b0, 0x85d3, 0x85c1, 0x85dc, 0x85ff, 0x8627, 0x8605, 0x8629, 0x8616, 0x863c, 0x5efe, 0x5f08, 0x593c, 0x5941, 0x8037, 0x5955, 0x595a, 0x5958, 0x530f, 0x5c22, 0x5c25, 0x5c2c, 0x5c34, 0x624c, 0x626a, 0x629f, 0x62bb, 0x62ca, 0x62da, 0x62d7, 0x62ee, 0x6322, 0x62f6, 0x6339, 0x634b, 0x6343, 0x63ad, 0x63f6, 0x6371, 0x637a, 0x638e, 0x63b4, 0x636d, 0x63ac, 0x638a, 0x6369, 0x63ae, 0x63bc, 0x63f2, 0x63f8, 0x63e0, 0x63ff, 0x63c4, 0x63de, 0x63ce, 0x6452, 0x63c6, 0x63be, 0x6445, 0x6441, 0x640b, 0x641b, 0x6420, 0x640c, 0x6426, 0x6421, 0x645e, 0x6484, 0x646d, 0x6496, + 0x9019, 0x901c, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029, 0x902a, 0x902b, 0x902c, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034, 0x9037, 0x9039, 0x903a, 0x903d, 0x903f, 0x9040, 0x9043, 0x9045, 0x9046, 0x9048, 0x9049, 0x904a, 0x904b, 0x904c, 0x904e, 0x9054, 0x9055, 0x9056, 0x9059, 0x905a, 0x905c, 0x905d, 0x905e, 0x905f, 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906a, 0x906b, 0x906c, 0x906f, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077, 0x9078, 0x9079, 0x907a, 0x907b, 0x907c, 0x907e, 0x9081, 0xfffd, 0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908a, 0x908c, 0x908d, 0x908e, 0x908f, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909a, 0x909c, 0x909e, 0x909f, 0x90a0, 0x90a4, 0x90a5, 0x90a7, 0x90a8, 0x90a9, 0x90ab, 0x90ad, 0x90b2, 0x90b7, 0x90bc, 0x90bd, 0x90bf, 0x90c0, 0x647a, 0x64b7, 0x64b8, 0x6499, 0x64ba, 0x64c0, 0x64d0, 0x64d7, 0x64e4, 0x64e2, 0x6509, 0x6525, 0x652e, 0x5f0b, 0x5fd2, 0x7519, 0x5f11, 0x535f, 0x53f1, 0x53fd, 0x53e9, 0x53e8, 0x53fb, 0x5412, 0x5416, 0x5406, 0x544b, 0x5452, 0x5453, 0x5454, 0x5456, 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494, 0x5477, 0x5471, 0x5464, 0x549a, 0x549b, 0x5484, 0x5476, 0x5466, 0x549d, 0x54d0, 0x54ad, 0x54c2, 0x54b4, 0x54d2, 0x54a7, 0x54a6, 0x54d3, 0x54d4, 0x5472, 0x54a3, 0x54d5, 0x54bb, 0x54bf, 0x54cc, 0x54d9, 0x54da, 0x54dc, 0x54a9, 0x54aa, 0x54a4, 0x54dd, 0x54cf, 0x54de, 0x551b, 0x54e7, 0x5520, 0x54fd, 0x5514, 0x54f3, 0x5522, 0x5523, 0x550f, 0x5511, 0x5527, 0x552a, 0x5567, 0x558f, 0x55b5, 0x5549, 0x556d, 0x5541, 0x5555, 0x553f, 0x5550, 0x553c, + 0x90c2, 0x90c3, 0x90c6, 0x90c8, 0x90c9, 0x90cb, 0x90cc, 0x90cd, 0x90d2, 0x90d4, 0x90d5, 0x90d6, 0x90d8, 0x90d9, 0x90da, 0x90de, 0x90df, 0x90e0, 0x90e3, 0x90e4, 0x90e5, 0x90e9, 0x90ea, 0x90ec, 0x90ee, 0x90f0, 0x90f1, 0x90f2, 0x90f3, 0x90f5, 0x90f6, 0x90f7, 0x90f9, 0x90fa, 0x90fb, 0x90fc, 0x90ff, 0x9100, 0x9101, 0x9103, 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910a, 0x910b, 0x910c, 0x910d, 0x910e, 0x910f, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114, 0x9115, 0x9116, 0x9117, 0x9118, 0x911a, 0x911b, 0x911c, 0xfffd, 0x911d, 0x911f, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127, 0x9128, 0x9129, 0x912a, 0x912b, 0x912c, 0x912d, 0x912e, 0x9130, 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913a, 0x913b, 0x913c, 0x913d, 0x913e, 0x913f, 0x9140, 0x9141, 0x9142, 0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530, 0x555c, 0x558b, 0x55d2, 0x5583, 0x55b1, 0x55b9, 0x5588, 0x5581, 0x559f, 0x557e, 0x55d6, 0x5591, 0x557b, 0x55df, 0x55bd, 0x55be, 0x5594, 0x5599, 0x55ea, 0x55f7, 0x55c9, 0x561f, 0x55d1, 0x55eb, 0x55ec, 0x55d4, 0x55e6, 0x55dd, 0x55c4, 0x55ef, 0x55e5, 0x55f2, 0x55f3, 0x55cc, 0x55cd, 0x55e8, 0x55f5, 0x55e4, 0x8f94, 0x561e, 0x5608, 0x560c, 0x5601, 0x5624, 0x5623, 0x55fe, 0x5600, 0x5627, 0x562d, 0x5658, 0x5639, 0x5657, 0x562c, 0x564d, 0x5662, 0x5659, 0x565c, 0x564c, 0x5654, 0x5686, 0x5664, 0x5671, 0x566b, 0x567b, 0x567c, 0x5685, 0x5693, 0x56af, 0x56d4, 0x56d7, 0x56dd, 0x56e1, 0x56f5, 0x56eb, 0x56f9, 0x56ff, 0x5704, 0x570a, 0x5709, 0x571c, 0x5e0f, 0x5e19, 0x5e14, 0x5e11, 0x5e31, 0x5e3b, 0x5e3c, + 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156, 0x9158, 0x9159, 0x915b, 0x915c, 0x915f, 0x9160, 0x9166, 0x9167, 0x9168, 0x916b, 0x916d, 0x9173, 0x917a, 0x917b, 0x917c, 0x9180, 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918a, 0x918e, 0x918f, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919c, 0x919d, 0x919e, 0x919f, 0x91a0, 0x91a1, 0x91a4, 0x91a5, 0x91a6, 0x91a7, 0x91a8, 0x91a9, 0x91ab, 0x91ac, 0x91b0, 0x91b1, 0x91b2, 0x91b3, 0x91b6, 0x91b7, 0x91b8, 0x91b9, 0x91bb, 0xfffd, 0x91bc, 0x91bd, 0x91be, 0x91bf, 0x91c0, 0x91c1, 0x91c2, 0x91c3, 0x91c4, 0x91c5, 0x91c6, 0x91c8, 0x91cb, 0x91d0, 0x91d2, 0x91d3, 0x91d4, 0x91d5, 0x91d6, 0x91d7, 0x91d8, 0x91d9, 0x91da, 0x91db, 0x91dd, 0x91de, 0x91df, 0x91e0, 0x91e1, 0x91e2, 0x91e3, 0x91e4, 0x91e5, 0x5e37, 0x5e44, 0x5e54, 0x5e5b, 0x5e5e, 0x5e61, 0x5c8c, 0x5c7a, 0x5c8d, 0x5c90, 0x5c96, 0x5c88, 0x5c98, 0x5c99, 0x5c91, 0x5c9a, 0x5c9c, 0x5cb5, 0x5ca2, 0x5cbd, 0x5cac, 0x5cab, 0x5cb1, 0x5ca3, 0x5cc1, 0x5cb7, 0x5cc4, 0x5cd2, 0x5ce4, 0x5ccb, 0x5ce5, 0x5d02, 0x5d03, 0x5d27, 0x5d26, 0x5d2e, 0x5d24, 0x5d1e, 0x5d06, 0x5d1b, 0x5d58, 0x5d3e, 0x5d34, 0x5d3d, 0x5d6c, 0x5d5b, 0x5d6f, 0x5d5d, 0x5d6b, 0x5d4b, 0x5d4a, 0x5d69, 0x5d74, 0x5d82, 0x5d99, 0x5d9d, 0x8c73, 0x5db7, 0x5dc5, 0x5f73, 0x5f77, 0x5f82, 0x5f87, 0x5f89, 0x5f8c, 0x5f95, 0x5f99, 0x5f9c, 0x5fa8, 0x5fad, 0x5fb5, 0x5fbc, 0x8862, 0x5f61, 0x72ad, 0x72b0, 0x72b4, 0x72b7, 0x72b8, 0x72c3, 0x72c1, 0x72ce, 0x72cd, 0x72d2, 0x72e8, 0x72ef, 0x72e9, 0x72f2, 0x72f4, 0x72f7, 0x7301, 0x72f3, 0x7303, 0x72fa, + 0x91e6, 0x91e7, 0x91e8, 0x91e9, 0x91ea, 0x91eb, 0x91ec, 0x91ed, 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f2, 0x91f3, 0x91f4, 0x91f5, 0x91f6, 0x91f7, 0x91f8, 0x91f9, 0x91fa, 0x91fb, 0x91fc, 0x91fd, 0x91fe, 0x91ff, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205, 0x9206, 0x9207, 0x9208, 0x9209, 0x920a, 0x920b, 0x920c, 0x920d, 0x920e, 0x920f, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215, 0x9216, 0x9217, 0x9218, 0x9219, 0x921a, 0x921b, 0x921c, 0x921d, 0x921e, 0x921f, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224, 0xfffd, 0x9225, 0x9226, 0x9227, 0x9228, 0x9229, 0x922a, 0x922b, 0x922c, 0x922d, 0x922e, 0x922f, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234, 0x9235, 0x9236, 0x9237, 0x9238, 0x9239, 0x923a, 0x923b, 0x923c, 0x923d, 0x923e, 0x923f, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244, 0x9245, 0x72fb, 0x7317, 0x7313, 0x7321, 0x730a, 0x731e, 0x731d, 0x7315, 0x7322, 0x7339, 0x7325, 0x732c, 0x7338, 0x7331, 0x7350, 0x734d, 0x7357, 0x7360, 0x736c, 0x736f, 0x737e, 0x821b, 0x5925, 0x98e7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996a, 0x996b, 0x996c, 0x9974, 0x9977, 0x997d, 0x9980, 0x9984, 0x9987, 0x998a, 0x998d, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5e80, 0x5e91, 0x5e8b, 0x5e96, 0x5ea5, 0x5ea0, 0x5eb9, 0x5eb5, 0x5ebe, 0x5eb3, 0x8d53, 0x5ed2, 0x5ed1, 0x5edb, 0x5ee8, 0x5eea, 0x81ba, 0x5fc4, 0x5fc9, 0x5fd6, 0x5fcf, 0x6003, 0x5fee, 0x6004, 0x5fe1, 0x5fe4, 0x5ffe, 0x6005, 0x6006, 0x5fea, 0x5fed, 0x5ff8, 0x6019, 0x6035, 0x6026, 0x601b, 0x600f, 0x600d, 0x6029, 0x602b, 0x600a, 0x603f, 0x6021, 0x6078, 0x6079, 0x607b, 0x607a, 0x6042, + 0x9246, 0x9247, 0x9248, 0x9249, 0x924a, 0x924b, 0x924c, 0x924d, 0x924e, 0x924f, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255, 0x9256, 0x9257, 0x9258, 0x9259, 0x925a, 0x925b, 0x925c, 0x925d, 0x925e, 0x925f, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265, 0x9266, 0x9267, 0x9268, 0x9269, 0x926a, 0x926b, 0x926c, 0x926d, 0x926e, 0x926f, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276, 0x9277, 0x9278, 0x9279, 0x927a, 0x927b, 0x927c, 0x927d, 0x927e, 0x927f, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285, 0xfffd, 0x9286, 0x9287, 0x9288, 0x9289, 0x928a, 0x928b, 0x928c, 0x928d, 0x928f, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296, 0x9297, 0x9298, 0x9299, 0x929a, 0x929b, 0x929c, 0x929d, 0x929e, 0x929f, 0x92a0, 0x92a1, 0x92a2, 0x92a3, 0x92a4, 0x92a5, 0x92a6, 0x92a7, 0x606a, 0x607d, 0x6096, 0x609a, 0x60ad, 0x609d, 0x6083, 0x6092, 0x608c, 0x609b, 0x60ec, 0x60bb, 0x60b1, 0x60dd, 0x60d8, 0x60c6, 0x60da, 0x60b4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60f4, 0x6100, 0x610e, 0x612b, 0x614a, 0x6175, 0x61ac, 0x6194, 0x61a7, 0x61b7, 0x61d4, 0x61f5, 0x5fdd, 0x96b3, 0x95e9, 0x95eb, 0x95f1, 0x95f3, 0x95f5, 0x95f6, 0x95fc, 0x95fe, 0x9603, 0x9604, 0x9606, 0x9608, 0x960a, 0x960b, 0x960c, 0x960d, 0x960f, 0x9612, 0x9615, 0x9616, 0x9617, 0x9619, 0x961a, 0x4e2c, 0x723f, 0x6215, 0x6c35, 0x6c54, 0x6c5c, 0x6c4a, 0x6ca3, 0x6c85, 0x6c90, 0x6c94, 0x6c8c, 0x6c68, 0x6c69, 0x6c74, 0x6c76, 0x6c86, 0x6ca9, 0x6cd0, 0x6cd4, 0x6cad, 0x6cf7, 0x6cf8, 0x6cf1, 0x6cd7, 0x6cb2, 0x6ce0, 0x6cd6, 0x6cfa, 0x6ceb, 0x6cee, 0x6cb1, 0x6cd3, 0x6cef, 0x6cfe, + 0x92a8, 0x92a9, 0x92aa, 0x92ab, 0x92ac, 0x92ad, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92b3, 0x92b4, 0x92b5, 0x92b6, 0x92b7, 0x92b8, 0x92b9, 0x92ba, 0x92bb, 0x92bc, 0x92bd, 0x92be, 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c4, 0x92c5, 0x92c6, 0x92c7, 0x92c9, 0x92ca, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92cf, 0x92d0, 0x92d1, 0x92d2, 0x92d3, 0x92d4, 0x92d5, 0x92d6, 0x92d7, 0x92d8, 0x92d9, 0x92da, 0x92db, 0x92dc, 0x92dd, 0x92de, 0x92df, 0x92e0, 0x92e1, 0x92e2, 0x92e3, 0x92e4, 0x92e5, 0x92e6, 0x92e7, 0x92e8, 0xfffd, 0x92e9, 0x92ea, 0x92eb, 0x92ec, 0x92ed, 0x92ee, 0x92ef, 0x92f0, 0x92f1, 0x92f2, 0x92f3, 0x92f4, 0x92f5, 0x92f6, 0x92f7, 0x92f8, 0x92f9, 0x92fa, 0x92fb, 0x92fc, 0x92fd, 0x92fe, 0x92ff, 0x9300, 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308, 0x9309, 0x6d39, 0x6d27, 0x6d0c, 0x6d43, 0x6d48, 0x6d07, 0x6d04, 0x6d19, 0x6d0e, 0x6d2b, 0x6d4d, 0x6d2e, 0x6d35, 0x6d1a, 0x6d4f, 0x6d52, 0x6d54, 0x6d33, 0x6d91, 0x6d6f, 0x6d9e, 0x6da0, 0x6d5e, 0x6d93, 0x6d94, 0x6d5c, 0x6d60, 0x6d7c, 0x6d63, 0x6e1a, 0x6dc7, 0x6dc5, 0x6dde, 0x6e0e, 0x6dbf, 0x6de0, 0x6e11, 0x6de6, 0x6ddd, 0x6dd9, 0x6e16, 0x6dab, 0x6e0c, 0x6dae, 0x6e2b, 0x6e6e, 0x6e4e, 0x6e6b, 0x6eb2, 0x6e5f, 0x6e86, 0x6e53, 0x6e54, 0x6e32, 0x6e25, 0x6e44, 0x6edf, 0x6eb1, 0x6e98, 0x6ee0, 0x6f2d, 0x6ee2, 0x6ea5, 0x6ea7, 0x6ebd, 0x6ebb, 0x6eb7, 0x6ed7, 0x6eb4, 0x6ecf, 0x6e8f, 0x6ec2, 0x6e9f, 0x6f62, 0x6f46, 0x6f47, 0x6f24, 0x6f15, 0x6ef9, 0x6f2f, 0x6f36, 0x6f4b, 0x6f74, 0x6f2a, 0x6f09, 0x6f29, 0x6f89, 0x6f8d, 0x6f8c, 0x6f78, 0x6f72, 0x6f7c, 0x6f7a, 0x6fd1, + 0x930a, 0x930b, 0x930c, 0x930d, 0x930e, 0x930f, 0x9310, 0x9311, 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319, 0x931a, 0x931b, 0x931c, 0x931d, 0x931e, 0x931f, 0x9320, 0x9321, 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329, 0x932a, 0x932b, 0x932c, 0x932d, 0x932e, 0x932f, 0x9330, 0x9331, 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339, 0x933a, 0x933b, 0x933c, 0x933d, 0x933f, 0x9340, 0x9341, 0x9342, 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349, 0xfffd, 0x934a, 0x934b, 0x934c, 0x934d, 0x934e, 0x934f, 0x9350, 0x9351, 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359, 0x935a, 0x935b, 0x935c, 0x935d, 0x935e, 0x935f, 0x9360, 0x9361, 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369, 0x936b, 0x6fc9, 0x6fa7, 0x6fb9, 0x6fb6, 0x6fc2, 0x6fe1, 0x6fee, 0x6fde, 0x6fe0, 0x6fef, 0x701a, 0x7023, 0x701b, 0x7039, 0x7035, 0x704f, 0x705e, 0x5b80, 0x5b84, 0x5b95, 0x5b93, 0x5ba5, 0x5bb8, 0x752f, 0x9a9e, 0x6434, 0x5be4, 0x5bee, 0x8930, 0x5bf0, 0x8e47, 0x8b07, 0x8fb6, 0x8fd3, 0x8fd5, 0x8fe5, 0x8fee, 0x8fe4, 0x8fe9, 0x8fe6, 0x8ff3, 0x8fe8, 0x9005, 0x9004, 0x900b, 0x9026, 0x9011, 0x900d, 0x9016, 0x9021, 0x9035, 0x9036, 0x902d, 0x902f, 0x9044, 0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905b, 0x66b9, 0x9074, 0x907d, 0x9082, 0x9088, 0x9083, 0x908b, 0x5f50, 0x5f57, 0x5f56, 0x5f58, 0x5c3b, 0x54ab, 0x5c50, 0x5c59, 0x5b71, 0x5c63, 0x5c66, 0x7fbc, 0x5f2a, 0x5f29, 0x5f2d, 0x8274, 0x5f3c, 0x9b3b, 0x5c6e, 0x5981, 0x5983, 0x598d, 0x59a9, 0x59aa, 0x59a3, + 0x936c, 0x936d, 0x936e, 0x936f, 0x9370, 0x9371, 0x9372, 0x9373, 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937a, 0x937b, 0x937c, 0x937d, 0x937e, 0x937f, 0x9380, 0x9381, 0x9382, 0x9383, 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938a, 0x938b, 0x938c, 0x938d, 0x938e, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394, 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939a, 0x939b, 0x939c, 0x939d, 0x939e, 0x939f, 0x93a0, 0x93a1, 0x93a2, 0x93a3, 0x93a4, 0x93a5, 0x93a6, 0x93a7, 0x93a8, 0x93a9, 0x93aa, 0x93ab, 0xfffd, 0x93ac, 0x93ad, 0x93ae, 0x93af, 0x93b0, 0x93b1, 0x93b2, 0x93b3, 0x93b4, 0x93b5, 0x93b6, 0x93b7, 0x93b8, 0x93b9, 0x93ba, 0x93bb, 0x93bc, 0x93bd, 0x93be, 0x93bf, 0x93c0, 0x93c1, 0x93c2, 0x93c3, 0x93c4, 0x93c5, 0x93c6, 0x93c7, 0x93c8, 0x93c9, 0x93cb, 0x93cc, 0x93cd, 0x5997, 0x59ca, 0x59ab, 0x599e, 0x59a4, 0x59d2, 0x59b2, 0x59af, 0x59d7, 0x59be, 0x5a05, 0x5a06, 0x59dd, 0x5a08, 0x59e3, 0x59d8, 0x59f9, 0x5a0c, 0x5a09, 0x5a32, 0x5a34, 0x5a11, 0x5a23, 0x5a13, 0x5a40, 0x5a67, 0x5a4a, 0x5a55, 0x5a3c, 0x5a62, 0x5a75, 0x80ec, 0x5aaa, 0x5a9b, 0x5a77, 0x5a7a, 0x5abe, 0x5aeb, 0x5ab2, 0x5ad2, 0x5ad4, 0x5ab8, 0x5ae0, 0x5ae3, 0x5af1, 0x5ad6, 0x5ae6, 0x5ad8, 0x5adc, 0x5b09, 0x5b17, 0x5b16, 0x5b32, 0x5b37, 0x5b40, 0x5c15, 0x5c1c, 0x5b5a, 0x5b65, 0x5b73, 0x5b51, 0x5b53, 0x5b62, 0x9a75, 0x9a77, 0x9a78, 0x9a7a, 0x9a7f, 0x9a7d, 0x9a80, 0x9a81, 0x9a85, 0x9a88, 0x9a8a, 0x9a90, 0x9a92, 0x9a93, 0x9a96, 0x9a98, 0x9a9b, 0x9a9c, 0x9a9d, 0x9a9f, 0x9aa0, 0x9aa2, 0x9aa3, 0x9aa5, 0x9aa7, 0x7e9f, 0x7ea1, 0x7ea3, 0x7ea5, 0x7ea8, 0x7ea9, + 0x93ce, 0x93cf, 0x93d0, 0x93d1, 0x93d2, 0x93d3, 0x93d4, 0x93d5, 0x93d7, 0x93d8, 0x93d9, 0x93da, 0x93db, 0x93dc, 0x93dd, 0x93de, 0x93df, 0x93e0, 0x93e1, 0x93e2, 0x93e3, 0x93e4, 0x93e5, 0x93e6, 0x93e7, 0x93e8, 0x93e9, 0x93ea, 0x93eb, 0x93ec, 0x93ed, 0x93ee, 0x93ef, 0x93f0, 0x93f1, 0x93f2, 0x93f3, 0x93f4, 0x93f5, 0x93f6, 0x93f7, 0x93f8, 0x93f9, 0x93fa, 0x93fb, 0x93fc, 0x93fd, 0x93fe, 0x93ff, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406, 0x9407, 0x9408, 0x9409, 0x940a, 0x940b, 0x940c, 0x940d, 0xfffd, 0x940e, 0x940f, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415, 0x9416, 0x9417, 0x9418, 0x9419, 0x941a, 0x941b, 0x941c, 0x941d, 0x941e, 0x941f, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425, 0x9426, 0x9427, 0x9428, 0x9429, 0x942a, 0x942b, 0x942c, 0x942d, 0x942e, 0x7ead, 0x7eb0, 0x7ebe, 0x7ec0, 0x7ec1, 0x7ec2, 0x7ec9, 0x7ecb, 0x7ecc, 0x7ed0, 0x7ed4, 0x7ed7, 0x7edb, 0x7ee0, 0x7ee1, 0x7ee8, 0x7eeb, 0x7eee, 0x7eef, 0x7ef1, 0x7ef2, 0x7f0d, 0x7ef6, 0x7efa, 0x7efb, 0x7efe, 0x7f01, 0x7f02, 0x7f03, 0x7f07, 0x7f08, 0x7f0b, 0x7f0c, 0x7f0f, 0x7f11, 0x7f12, 0x7f17, 0x7f19, 0x7f1c, 0x7f1b, 0x7f1f, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2f, 0x7f30, 0x7f31, 0x7f32, 0x7f33, 0x7f35, 0x5e7a, 0x757f, 0x5ddb, 0x753e, 0x9095, 0x738e, 0x7391, 0x73ae, 0x73a2, 0x739f, 0x73cf, 0x73c2, 0x73d1, 0x73b7, 0x73b3, 0x73c0, 0x73c9, 0x73c8, 0x73e5, 0x73d9, 0x987c, 0x740a, 0x73e9, 0x73e7, 0x73de, 0x73ba, 0x73f2, 0x740f, 0x742a, 0x745b, 0x7426, 0x7425, 0x7428, 0x7430, 0x742e, 0x742c, + 0x942f, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436, 0x9437, 0x9438, 0x9439, 0x943a, 0x943b, 0x943c, 0x943d, 0x943f, 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447, 0x9448, 0x9449, 0x944a, 0x944b, 0x944c, 0x944d, 0x944e, 0x944f, 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458, 0x9459, 0x945a, 0x945b, 0x945c, 0x945d, 0x945e, 0x945f, 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467, 0x9468, 0x9469, 0x946a, 0x946c, 0x946d, 0x946e, 0x946f, 0xfffd, 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477, 0x9478, 0x9479, 0x947a, 0x947b, 0x947c, 0x947d, 0x947e, 0x947f, 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498, 0x94c7, 0x94cf, 0x94d3, 0x94d4, 0x94da, 0x94e6, 0x94fb, 0x951c, 0x9520, 0x741b, 0x741a, 0x7441, 0x745c, 0x7457, 0x7455, 0x7459, 0x7477, 0x746d, 0x747e, 0x749c, 0x748e, 0x7480, 0x7481, 0x7487, 0x748b, 0x749e, 0x74a8, 0x74a9, 0x7490, 0x74a7, 0x74d2, 0x74ba, 0x97ea, 0x97eb, 0x97ec, 0x674c, 0x6753, 0x675e, 0x6748, 0x6769, 0x67a5, 0x6787, 0x676a, 0x6773, 0x6798, 0x67a7, 0x6775, 0x67a8, 0x679e, 0x67ad, 0x678b, 0x6777, 0x677c, 0x67f0, 0x6809, 0x67d8, 0x680a, 0x67e9, 0x67b0, 0x680c, 0x67d9, 0x67b5, 0x67da, 0x67b3, 0x67dd, 0x6800, 0x67c3, 0x67b8, 0x67e2, 0x680e, 0x67c1, 0x67fd, 0x6832, 0x6833, 0x6860, 0x6861, 0x684e, 0x6862, 0x6844, 0x6864, 0x6883, 0x681d, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683e, 0x684a, 0x6849, 0x6829, 0x68b5, 0x688f, 0x6874, 0x6877, 0x6893, 0x686b, 0x68c2, 0x696e, 0x68fc, 0x691f, 0x6920, 0x68f9, + 0x9527, 0x9533, 0x953d, 0x9543, 0x9548, 0x954b, 0x9555, 0x955a, 0x9560, 0x956e, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957a, 0x957b, 0x957c, 0x957d, 0x957e, 0x9580, 0x9581, 0x9582, 0x9583, 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958a, 0x958b, 0x958c, 0x958d, 0x958e, 0x958f, 0x9590, 0x9591, 0x9592, 0x9593, 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959a, 0x959b, 0x959c, 0x959d, 0x959e, 0x959f, 0x95a0, 0x95a1, 0x95a2, 0x95a3, 0x95a4, 0x95a5, 0x95a6, 0x95a7, 0x95a8, 0x95a9, 0x95aa, 0xfffd, 0x95ab, 0x95ac, 0x95ad, 0x95ae, 0x95af, 0x95b0, 0x95b1, 0x95b2, 0x95b3, 0x95b4, 0x95b5, 0x95b6, 0x95b7, 0x95b8, 0x95b9, 0x95ba, 0x95bb, 0x95bc, 0x95bd, 0x95be, 0x95bf, 0x95c0, 0x95c1, 0x95c2, 0x95c3, 0x95c4, 0x95c5, 0x95c6, 0x95c7, 0x95c8, 0x95c9, 0x95ca, 0x95cb, 0x6924, 0x68f0, 0x690b, 0x6901, 0x6957, 0x68e3, 0x6910, 0x6971, 0x6939, 0x6960, 0x6942, 0x695d, 0x6984, 0x696b, 0x6980, 0x6998, 0x6978, 0x6934, 0x69cc, 0x6987, 0x6988, 0x69ce, 0x6989, 0x6966, 0x6963, 0x6979, 0x699b, 0x69a7, 0x69bb, 0x69ab, 0x69ad, 0x69d4, 0x69b1, 0x69c1, 0x69ca, 0x69df, 0x6995, 0x69e0, 0x698d, 0x69ff, 0x6a2f, 0x69ed, 0x6a17, 0x6a18, 0x6a65, 0x69f2, 0x6a44, 0x6a3e, 0x6aa0, 0x6a50, 0x6a5b, 0x6a35, 0x6a8e, 0x6a79, 0x6a3d, 0x6a28, 0x6a58, 0x6a7c, 0x6a91, 0x6a90, 0x6aa9, 0x6a97, 0x6aab, 0x7337, 0x7352, 0x6b81, 0x6b82, 0x6b87, 0x6b84, 0x6b92, 0x6b93, 0x6b8d, 0x6b9a, 0x6b9b, 0x6ba1, 0x6baa, 0x8f6b, 0x8f6d, 0x8f71, 0x8f72, 0x8f73, 0x8f75, 0x8f76, 0x8f78, 0x8f77, 0x8f79, 0x8f7a, 0x8f7c, 0x8f7e, 0x8f81, 0x8f82, 0x8f84, 0x8f87, 0x8f8b, + 0x95cc, 0x95cd, 0x95ce, 0x95cf, 0x95d0, 0x95d1, 0x95d2, 0x95d3, 0x95d4, 0x95d5, 0x95d6, 0x95d7, 0x95d8, 0x95d9, 0x95da, 0x95db, 0x95dc, 0x95dd, 0x95de, 0x95df, 0x95e0, 0x95e1, 0x95e2, 0x95e3, 0x95e4, 0x95e5, 0x95e6, 0x95e7, 0x95ec, 0x95ff, 0x9607, 0x9613, 0x9618, 0x961b, 0x961e, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626, 0x9627, 0x9628, 0x9629, 0x962b, 0x962c, 0x962d, 0x962f, 0x9630, 0x9637, 0x9638, 0x9639, 0x963a, 0x963e, 0x9641, 0x9643, 0x964a, 0x964e, 0x964f, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657, 0xfffd, 0x9658, 0x9659, 0x965a, 0x965c, 0x965d, 0x965e, 0x9660, 0x9663, 0x9665, 0x9666, 0x966b, 0x966d, 0x966e, 0x966f, 0x9670, 0x9671, 0x9673, 0x9678, 0x9679, 0x967a, 0x967b, 0x967c, 0x967d, 0x967e, 0x967f, 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689, 0x968a, 0x8f8d, 0x8f8e, 0x8f8f, 0x8f98, 0x8f9a, 0x8ece, 0x620b, 0x6217, 0x621b, 0x621f, 0x6222, 0x6221, 0x6225, 0x6224, 0x622c, 0x81e7, 0x74ef, 0x74f4, 0x74ff, 0x750f, 0x7511, 0x7513, 0x6534, 0x65ee, 0x65ef, 0x65f0, 0x660a, 0x6619, 0x6772, 0x6603, 0x6615, 0x6600, 0x7085, 0x66f7, 0x661d, 0x6634, 0x6631, 0x6636, 0x6635, 0x8006, 0x665f, 0x6654, 0x6641, 0x664f, 0x6656, 0x6661, 0x6657, 0x6677, 0x6684, 0x668c, 0x66a7, 0x669d, 0x66be, 0x66db, 0x66dc, 0x66e6, 0x66e9, 0x8d32, 0x8d33, 0x8d36, 0x8d3b, 0x8d3d, 0x8d40, 0x8d45, 0x8d46, 0x8d48, 0x8d49, 0x8d47, 0x8d4d, 0x8d55, 0x8d59, 0x89c7, 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x726e, 0x729f, 0x725d, 0x7266, 0x726f, 0x727e, 0x727f, 0x7284, 0x728b, 0x728d, 0x728f, 0x7292, 0x6308, 0x6332, 0x63b0, + 0x968c, 0x968e, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969a, 0x969b, 0x969d, 0x969e, 0x969f, 0x96a0, 0x96a1, 0x96a2, 0x96a3, 0x96a4, 0x96a5, 0x96a6, 0x96a8, 0x96a9, 0x96aa, 0x96ab, 0x96ac, 0x96ad, 0x96ae, 0x96af, 0x96b1, 0x96b2, 0x96b4, 0x96b5, 0x96b7, 0x96b8, 0x96ba, 0x96bb, 0x96bf, 0x96c2, 0x96c3, 0x96c8, 0x96ca, 0x96cb, 0x96d0, 0x96d1, 0x96d3, 0x96d4, 0x96d6, 0x96d7, 0x96d8, 0x96d9, 0x96da, 0x96db, 0x96dc, 0x96dd, 0x96de, 0x96df, 0x96e1, 0x96e2, 0x96e3, 0x96e4, 0x96e5, 0x96e6, 0x96e7, 0x96eb, 0xfffd, 0x96ec, 0x96ed, 0x96ee, 0x96f0, 0x96f1, 0x96f2, 0x96f4, 0x96f5, 0x96f8, 0x96fa, 0x96fb, 0x96fc, 0x96fd, 0x96ff, 0x9702, 0x9703, 0x9705, 0x970a, 0x970b, 0x970c, 0x9710, 0x9711, 0x9712, 0x9714, 0x9715, 0x9717, 0x9718, 0x9719, 0x971a, 0x971b, 0x971d, 0x971f, 0x9720, 0x643f, 0x64d8, 0x8004, 0x6bea, 0x6bf3, 0x6bfd, 0x6bf5, 0x6bf9, 0x6c05, 0x6c07, 0x6c06, 0x6c0d, 0x6c15, 0x6c18, 0x6c19, 0x6c1a, 0x6c21, 0x6c29, 0x6c24, 0x6c2a, 0x6c32, 0x6535, 0x6555, 0x656b, 0x724d, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809f, 0x809c, 0x8093, 0x80bc, 0x670a, 0x80bd, 0x80b1, 0x80ab, 0x80ad, 0x80b4, 0x80b7, 0x80e7, 0x80e8, 0x80e9, 0x80ea, 0x80db, 0x80c2, 0x80c4, 0x80d9, 0x80cd, 0x80d7, 0x6710, 0x80dd, 0x80eb, 0x80f1, 0x80f4, 0x80ed, 0x810d, 0x810e, 0x80f2, 0x80fc, 0x6715, 0x8112, 0x8c5a, 0x8136, 0x811e, 0x812c, 0x8118, 0x8132, 0x8148, 0x814c, 0x8153, 0x8174, 0x8159, 0x815a, 0x8171, 0x8160, 0x8169, 0x817c, 0x817d, 0x816d, 0x8167, 0x584d, 0x5ab5, 0x8188, 0x8182, 0x8191, 0x6ed5, 0x81a3, 0x81aa, 0x81cc, 0x6726, 0x81ca, 0x81bb, + 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728, 0x9729, 0x972b, 0x972c, 0x972e, 0x972f, 0x9731, 0x9733, 0x9734, 0x9735, 0x9736, 0x9737, 0x973a, 0x973b, 0x973c, 0x973d, 0x973f, 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747, 0x9748, 0x9749, 0x974a, 0x974b, 0x974c, 0x974d, 0x974e, 0x974f, 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975a, 0x975c, 0x975d, 0x975f, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976a, 0x976b, 0x976c, 0x976d, 0x976e, 0x976f, 0x9770, 0x9771, 0xfffd, 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977a, 0x977b, 0x977d, 0x977e, 0x977f, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786, 0x9787, 0x9788, 0x9789, 0x978a, 0x978c, 0x978e, 0x978f, 0x9790, 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979a, 0x979b, 0x979c, 0x979d, 0x81c1, 0x81a6, 0x6b24, 0x6b37, 0x6b39, 0x6b43, 0x6b46, 0x6b59, 0x98d1, 0x98d2, 0x98d3, 0x98d5, 0x98d9, 0x98da, 0x6bb3, 0x5f40, 0x6bc2, 0x89f3, 0x6590, 0x9f51, 0x6593, 0x65bc, 0x65c6, 0x65c4, 0x65c3, 0x65cc, 0x65ce, 0x65d2, 0x65d6, 0x7080, 0x709c, 0x7096, 0x709d, 0x70bb, 0x70c0, 0x70b7, 0x70ab, 0x70b1, 0x70e8, 0x70ca, 0x7110, 0x7113, 0x7116, 0x712f, 0x7131, 0x7173, 0x715c, 0x7168, 0x7145, 0x7172, 0x714a, 0x7178, 0x717a, 0x7198, 0x71b3, 0x71b5, 0x71a8, 0x71a0, 0x71e0, 0x71d4, 0x71e7, 0x71f9, 0x721d, 0x7228, 0x706c, 0x7118, 0x7166, 0x71b9, 0x623e, 0x623d, 0x6243, 0x6248, 0x6249, 0x793b, 0x7940, 0x7946, 0x7949, 0x795b, 0x795c, 0x7953, 0x795a, 0x7962, 0x7957, 0x7960, 0x796f, 0x7967, 0x797a, 0x7985, 0x798a, 0x799a, 0x79a7, 0x79b3, 0x5fd1, 0x5fd0, + 0x979e, 0x979f, 0x97a1, 0x97a2, 0x97a4, 0x97a5, 0x97a6, 0x97a7, 0x97a8, 0x97a9, 0x97aa, 0x97ac, 0x97ae, 0x97b0, 0x97b1, 0x97b3, 0x97b5, 0x97b6, 0x97b7, 0x97b8, 0x97b9, 0x97ba, 0x97bb, 0x97bc, 0x97bd, 0x97be, 0x97bf, 0x97c0, 0x97c1, 0x97c2, 0x97c3, 0x97c4, 0x97c5, 0x97c6, 0x97c7, 0x97c8, 0x97c9, 0x97ca, 0x97cb, 0x97cc, 0x97cd, 0x97ce, 0x97cf, 0x97d0, 0x97d1, 0x97d2, 0x97d3, 0x97d4, 0x97d5, 0x97d6, 0x97d7, 0x97d8, 0x97d9, 0x97da, 0x97db, 0x97dc, 0x97dd, 0x97de, 0x97df, 0x97e0, 0x97e1, 0x97e2, 0x97e3, 0xfffd, 0x97e4, 0x97e5, 0x97e8, 0x97ee, 0x97ef, 0x97f0, 0x97f1, 0x97f2, 0x97f4, 0x97f7, 0x97f8, 0x97f9, 0x97fa, 0x97fb, 0x97fc, 0x97fd, 0x97fe, 0x97ff, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805, 0x9806, 0x9807, 0x9808, 0x9809, 0x980a, 0x980b, 0x980c, 0x980d, 0x980e, 0x603c, 0x605d, 0x605a, 0x6067, 0x6041, 0x6059, 0x6063, 0x60ab, 0x6106, 0x610d, 0x615d, 0x61a9, 0x619d, 0x61cb, 0x61d1, 0x6206, 0x8080, 0x807f, 0x6c93, 0x6cf6, 0x6dfc, 0x77f6, 0x77f8, 0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65ab, 0x782d, 0x781c, 0x781d, 0x7839, 0x783a, 0x783b, 0x781f, 0x783c, 0x7825, 0x782c, 0x7823, 0x7829, 0x784e, 0x786d, 0x7856, 0x7857, 0x7826, 0x7850, 0x7847, 0x784c, 0x786a, 0x789b, 0x7893, 0x789a, 0x7887, 0x789c, 0x78a1, 0x78a3, 0x78b2, 0x78b9, 0x78a5, 0x78d4, 0x78d9, 0x78c9, 0x78ec, 0x78f2, 0x7905, 0x78f4, 0x7913, 0x7924, 0x791e, 0x7934, 0x9f9b, 0x9ef9, 0x9efb, 0x9efc, 0x76f1, 0x7704, 0x770d, 0x76f9, 0x7707, 0x7708, 0x771a, 0x7722, 0x7719, 0x772d, 0x7726, 0x7735, 0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775a, 0x7768, + 0x980f, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816, 0x9817, 0x9818, 0x9819, 0x981a, 0x981b, 0x981c, 0x981d, 0x981e, 0x981f, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826, 0x9827, 0x9828, 0x9829, 0x982a, 0x982b, 0x982c, 0x982d, 0x982e, 0x982f, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836, 0x9837, 0x9838, 0x9839, 0x983a, 0x983b, 0x983c, 0x983d, 0x983e, 0x983f, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846, 0x9847, 0x9848, 0x9849, 0x984a, 0x984b, 0x984c, 0x984d, 0xfffd, 0x984e, 0x984f, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855, 0x9856, 0x9857, 0x9858, 0x9859, 0x985a, 0x985b, 0x985c, 0x985d, 0x985e, 0x985f, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865, 0x9866, 0x9867, 0x9868, 0x9869, 0x986a, 0x986b, 0x986c, 0x986d, 0x986e, 0x7762, 0x7765, 0x777f, 0x778d, 0x777d, 0x7780, 0x778c, 0x7791, 0x779f, 0x77a0, 0x77b0, 0x77b5, 0x77bd, 0x753a, 0x7540, 0x754e, 0x754b, 0x7548, 0x755b, 0x7572, 0x7579, 0x7583, 0x7f58, 0x7f61, 0x7f5f, 0x8a48, 0x7f68, 0x7f74, 0x7f71, 0x7f79, 0x7f81, 0x7f7e, 0x76cd, 0x76e5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948b, 0x948a, 0x948c, 0x948d, 0x948f, 0x9490, 0x9494, 0x9497, 0x9495, 0x949a, 0x949b, 0x949c, 0x94a3, 0x94a4, 0x94ab, 0x94aa, 0x94ad, 0x94ac, 0x94af, 0x94b0, 0x94b2, 0x94b4, 0x94b6, 0x94b7, 0x94b8, 0x94b9, 0x94ba, 0x94bc, 0x94bd, 0x94bf, 0x94c4, 0x94c8, 0x94c9, 0x94ca, 0x94cb, 0x94cc, 0x94cd, 0x94ce, 0x94d0, 0x94d1, 0x94d2, 0x94d5, 0x94d6, 0x94d7, 0x94d9, 0x94d8, 0x94db, 0x94de, 0x94df, 0x94e0, 0x94e2, 0x94e4, 0x94e5, 0x94e7, 0x94e8, 0x94ea, + 0x986f, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988b, 0x988e, 0x9892, 0x9895, 0x9899, 0x98a3, 0x98a8, 0x98a9, 0x98aa, 0x98ab, 0x98ac, 0x98ad, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b2, 0x98b3, 0x98b4, 0x98b5, 0x98b6, 0x98b7, 0x98b8, 0x98b9, 0x98ba, 0x98bb, 0x98bc, 0x98bd, 0x98be, 0x98bf, 0x98c0, 0x98c1, 0x98c2, 0x98c3, 0x98c4, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9, 0x98ca, 0x98cb, 0x98cc, 0x98cd, 0x98cf, 0x98d0, 0x98d4, 0x98d6, 0x98d7, 0x98db, 0x98dc, 0x98dd, 0x98e0, 0x98e1, 0x98e2, 0x98e3, 0x98e4, 0xfffd, 0x98e5, 0x98e6, 0x98e9, 0x98ea, 0x98eb, 0x98ec, 0x98ed, 0x98ee, 0x98ef, 0x98f0, 0x98f1, 0x98f2, 0x98f3, 0x98f4, 0x98f5, 0x98f6, 0x98f7, 0x98f8, 0x98f9, 0x98fa, 0x98fb, 0x98fc, 0x98fd, 0x98fe, 0x98ff, 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906, 0x9907, 0x94e9, 0x94eb, 0x94ee, 0x94ef, 0x94f3, 0x94f4, 0x94f5, 0x94f7, 0x94f9, 0x94fc, 0x94fd, 0x94ff, 0x9503, 0x9502, 0x9506, 0x9507, 0x9509, 0x950a, 0x950d, 0x950e, 0x950f, 0x9512, 0x9513, 0x9514, 0x9515, 0x9516, 0x9518, 0x951b, 0x951d, 0x951e, 0x951f, 0x9522, 0x952a, 0x952b, 0x9529, 0x952c, 0x9531, 0x9532, 0x9534, 0x9536, 0x9537, 0x9538, 0x953c, 0x953e, 0x953f, 0x9542, 0x9535, 0x9544, 0x9545, 0x9546, 0x9549, 0x954c, 0x954e, 0x954f, 0x9552, 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955b, 0x955e, 0x955f, 0x955d, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567, 0x9568, 0x9569, 0x956a, 0x956b, 0x956c, 0x956f, 0x9571, 0x9572, 0x9573, 0x953a, 0x77e7, 0x77ec, 0x96c9, 0x79d5, 0x79ed, 0x79e3, 0x79eb, 0x7a06, 0x5d47, 0x7a03, 0x7a02, 0x7a1e, 0x7a14, + 0x9908, 0x9909, 0x990a, 0x990b, 0x990c, 0x990e, 0x990f, 0x9911, 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919, 0x991a, 0x991b, 0x991c, 0x991d, 0x991e, 0x991f, 0x9920, 0x9921, 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929, 0x992a, 0x992b, 0x992c, 0x992d, 0x992f, 0x9930, 0x9931, 0x9932, 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993a, 0x993b, 0x993c, 0x993d, 0x993e, 0x993f, 0x9940, 0x9941, 0x9942, 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949, 0xfffd, 0x994a, 0x994b, 0x994c, 0x994d, 0x994e, 0x994f, 0x9950, 0x9951, 0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995a, 0x995b, 0x995c, 0x995d, 0x995e, 0x995f, 0x9960, 0x9961, 0x9962, 0x9964, 0x9966, 0x9973, 0x9978, 0x9979, 0x997b, 0x997e, 0x9982, 0x9983, 0x9989, 0x7a39, 0x7a37, 0x7a51, 0x9ecf, 0x99a5, 0x7a70, 0x7688, 0x768e, 0x7693, 0x7699, 0x76a4, 0x74de, 0x74e0, 0x752c, 0x9e20, 0x9e22, 0x9e28, 0x9e29, 0x9e2a, 0x9e2b, 0x9e2c, 0x9e32, 0x9e31, 0x9e36, 0x9e38, 0x9e37, 0x9e39, 0x9e3a, 0x9e3e, 0x9e41, 0x9e42, 0x9e44, 0x9e46, 0x9e47, 0x9e48, 0x9e49, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e51, 0x9e55, 0x9e57, 0x9e5a, 0x9e5b, 0x9e5c, 0x9e5e, 0x9e63, 0x9e66, 0x9e67, 0x9e68, 0x9e69, 0x9e6a, 0x9e6b, 0x9e6c, 0x9e71, 0x9e6d, 0x9e73, 0x7592, 0x7594, 0x7596, 0x75a0, 0x759d, 0x75ac, 0x75a3, 0x75b3, 0x75b4, 0x75b8, 0x75c4, 0x75b1, 0x75b0, 0x75c3, 0x75c2, 0x75d6, 0x75cd, 0x75e3, 0x75e8, 0x75e6, 0x75e4, 0x75eb, 0x75e7, 0x7603, 0x75f1, 0x75fc, 0x75ff, 0x7610, 0x7600, 0x7605, 0x760c, 0x7617, 0x760a, 0x7625, 0x7618, 0x7615, 0x7619, + 0x998c, 0x998e, 0x999a, 0x999b, 0x999c, 0x999d, 0x999e, 0x999f, 0x99a0, 0x99a1, 0x99a2, 0x99a3, 0x99a4, 0x99a6, 0x99a7, 0x99a9, 0x99aa, 0x99ab, 0x99ac, 0x99ad, 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b2, 0x99b3, 0x99b4, 0x99b5, 0x99b6, 0x99b7, 0x99b8, 0x99b9, 0x99ba, 0x99bb, 0x99bc, 0x99bd, 0x99be, 0x99bf, 0x99c0, 0x99c1, 0x99c2, 0x99c3, 0x99c4, 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9, 0x99ca, 0x99cb, 0x99cc, 0x99cd, 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d2, 0x99d3, 0x99d4, 0x99d5, 0x99d6, 0x99d7, 0x99d8, 0xfffd, 0x99d9, 0x99da, 0x99db, 0x99dc, 0x99dd, 0x99de, 0x99df, 0x99e0, 0x99e1, 0x99e2, 0x99e3, 0x99e4, 0x99e5, 0x99e6, 0x99e7, 0x99e8, 0x99e9, 0x99ea, 0x99eb, 0x99ec, 0x99ed, 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f2, 0x99f3, 0x99f4, 0x99f5, 0x99f6, 0x99f7, 0x99f8, 0x99f9, 0x761b, 0x763c, 0x7622, 0x7620, 0x7640, 0x762d, 0x7630, 0x763f, 0x7635, 0x7643, 0x763e, 0x7633, 0x764d, 0x765e, 0x7654, 0x765c, 0x7656, 0x766b, 0x766f, 0x7fca, 0x7ae6, 0x7a78, 0x7a79, 0x7a80, 0x7a86, 0x7a88, 0x7a95, 0x7aa6, 0x7aa0, 0x7aac, 0x7aa8, 0x7aad, 0x7ab3, 0x8864, 0x8869, 0x8872, 0x887d, 0x887f, 0x8882, 0x88a2, 0x88c6, 0x88b7, 0x88bc, 0x88c9, 0x88e2, 0x88ce, 0x88e3, 0x88e5, 0x88f1, 0x891a, 0x88fc, 0x88e8, 0x88fe, 0x88f0, 0x8921, 0x8919, 0x8913, 0x891b, 0x890a, 0x8934, 0x892b, 0x8936, 0x8941, 0x8966, 0x897b, 0x758b, 0x80e5, 0x76b2, 0x76b4, 0x77dc, 0x8012, 0x8014, 0x8016, 0x801c, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027, 0x8029, 0x8028, 0x8031, 0x800b, 0x8035, 0x8043, 0x8046, 0x804d, 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883, + 0x99fa, 0x99fb, 0x99fc, 0x99fd, 0x99fe, 0x99ff, 0x9a00, 0x9a01, 0x9a02, 0x9a03, 0x9a04, 0x9a05, 0x9a06, 0x9a07, 0x9a08, 0x9a09, 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0d, 0x9a0e, 0x9a0f, 0x9a10, 0x9a11, 0x9a12, 0x9a13, 0x9a14, 0x9a15, 0x9a16, 0x9a17, 0x9a18, 0x9a19, 0x9a1a, 0x9a1b, 0x9a1c, 0x9a1d, 0x9a1e, 0x9a1f, 0x9a20, 0x9a21, 0x9a22, 0x9a23, 0x9a24, 0x9a25, 0x9a26, 0x9a27, 0x9a28, 0x9a29, 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2d, 0x9a2e, 0x9a2f, 0x9a30, 0x9a31, 0x9a32, 0x9a33, 0x9a34, 0x9a35, 0x9a36, 0x9a37, 0x9a38, 0xfffd, 0x9a39, 0x9a3a, 0x9a3b, 0x9a3c, 0x9a3d, 0x9a3e, 0x9a3f, 0x9a40, 0x9a41, 0x9a42, 0x9a43, 0x9a44, 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49, 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4d, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51, 0x9a52, 0x9a53, 0x9a54, 0x9a55, 0x9a56, 0x9a57, 0x9a58, 0x9a59, 0x9889, 0x988c, 0x988d, 0x988f, 0x9894, 0x989a, 0x989b, 0x989e, 0x989f, 0x98a1, 0x98a2, 0x98a5, 0x98a6, 0x864d, 0x8654, 0x866c, 0x866e, 0x867f, 0x867a, 0x867c, 0x867b, 0x86a8, 0x868d, 0x868b, 0x86ac, 0x869d, 0x86a7, 0x86a3, 0x86aa, 0x8693, 0x86a9, 0x86b6, 0x86c4, 0x86b5, 0x86ce, 0x86b0, 0x86ba, 0x86b1, 0x86af, 0x86c9, 0x86cf, 0x86b4, 0x86e9, 0x86f1, 0x86f2, 0x86ed, 0x86f3, 0x86d0, 0x8713, 0x86de, 0x86f4, 0x86df, 0x86d8, 0x86d1, 0x8703, 0x8707, 0x86f8, 0x8708, 0x870a, 0x870d, 0x8709, 0x8723, 0x873b, 0x871e, 0x8725, 0x872e, 0x871a, 0x873e, 0x8748, 0x8734, 0x8731, 0x8729, 0x8737, 0x873f, 0x8782, 0x8722, 0x877d, 0x877e, 0x877b, 0x8760, 0x8770, 0x874c, 0x876e, 0x878b, 0x8753, 0x8763, 0x877c, 0x8764, 0x8759, 0x8765, 0x8793, 0x87af, 0x87a8, 0x87d2, + 0x9a5a, 0x9a5b, 0x9a5c, 0x9a5d, 0x9a5e, 0x9a5f, 0x9a60, 0x9a61, 0x9a62, 0x9a63, 0x9a64, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69, 0x9a6a, 0x9a6b, 0x9a72, 0x9a83, 0x9a89, 0x9a8d, 0x9a8e, 0x9a94, 0x9a95, 0x9a99, 0x9aa6, 0x9aa9, 0x9aaa, 0x9aab, 0x9aac, 0x9aad, 0x9aae, 0x9aaf, 0x9ab2, 0x9ab3, 0x9ab4, 0x9ab5, 0x9ab9, 0x9abb, 0x9abd, 0x9abe, 0x9abf, 0x9ac3, 0x9ac4, 0x9ac6, 0x9ac7, 0x9ac8, 0x9ac9, 0x9aca, 0x9acd, 0x9ace, 0x9acf, 0x9ad0, 0x9ad2, 0x9ad4, 0x9ad5, 0x9ad6, 0x9ad7, 0x9ad9, 0x9ada, 0x9adb, 0x9adc, 0xfffd, 0x9add, 0x9ade, 0x9ae0, 0x9ae2, 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae7, 0x9ae8, 0x9ae9, 0x9aea, 0x9aec, 0x9aee, 0x9af0, 0x9af1, 0x9af2, 0x9af3, 0x9af4, 0x9af5, 0x9af6, 0x9af7, 0x9af8, 0x9afa, 0x9afc, 0x9afd, 0x9afe, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b04, 0x9b05, 0x9b06, 0x87c6, 0x8788, 0x8785, 0x87ad, 0x8797, 0x8783, 0x87ab, 0x87e5, 0x87ac, 0x87b5, 0x87b3, 0x87cb, 0x87d3, 0x87bd, 0x87d1, 0x87c0, 0x87ca, 0x87db, 0x87ea, 0x87e0, 0x87ee, 0x8816, 0x8813, 0x87fe, 0x880a, 0x881b, 0x8821, 0x8839, 0x883c, 0x7f36, 0x7f42, 0x7f44, 0x7f45, 0x8210, 0x7afa, 0x7afd, 0x7b08, 0x7b03, 0x7b04, 0x7b15, 0x7b0a, 0x7b2b, 0x7b0f, 0x7b47, 0x7b38, 0x7b2a, 0x7b19, 0x7b2e, 0x7b31, 0x7b20, 0x7b25, 0x7b24, 0x7b33, 0x7b3e, 0x7b1e, 0x7b58, 0x7b5a, 0x7b45, 0x7b75, 0x7b4c, 0x7b5d, 0x7b60, 0x7b6e, 0x7b7b, 0x7b62, 0x7b72, 0x7b71, 0x7b90, 0x7ba6, 0x7ba7, 0x7bb8, 0x7bac, 0x7b9d, 0x7ba8, 0x7b85, 0x7baa, 0x7b9c, 0x7ba2, 0x7bab, 0x7bb4, 0x7bd1, 0x7bc1, 0x7bcc, 0x7bdd, 0x7bda, 0x7be5, 0x7be6, 0x7bea, 0x7c0c, 0x7bfe, 0x7bfc, 0x7c0f, 0x7c16, 0x7c0b, + 0x9b07, 0x9b09, 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0d, 0x9b0e, 0x9b10, 0x9b11, 0x9b12, 0x9b14, 0x9b15, 0x9b16, 0x9b17, 0x9b18, 0x9b19, 0x9b1a, 0x9b1b, 0x9b1c, 0x9b1d, 0x9b1e, 0x9b20, 0x9b21, 0x9b22, 0x9b24, 0x9b25, 0x9b26, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2b, 0x9b2c, 0x9b2d, 0x9b2e, 0x9b30, 0x9b31, 0x9b33, 0x9b34, 0x9b35, 0x9b36, 0x9b37, 0x9b38, 0x9b39, 0x9b3a, 0x9b3d, 0x9b3e, 0x9b3f, 0x9b40, 0x9b46, 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4e, 0x9b50, 0x9b52, 0x9b53, 0x9b55, 0x9b56, 0x9b57, 0x9b58, 0x9b59, 0x9b5a, 0xfffd, 0x9b5b, 0x9b5c, 0x9b5d, 0x9b5e, 0x9b5f, 0x9b60, 0x9b61, 0x9b62, 0x9b63, 0x9b64, 0x9b65, 0x9b66, 0x9b67, 0x9b68, 0x9b69, 0x9b6a, 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b6f, 0x9b70, 0x9b71, 0x9b72, 0x9b73, 0x9b74, 0x9b75, 0x9b76, 0x9b77, 0x9b78, 0x9b79, 0x9b7a, 0x9b7b, 0x7c1f, 0x7c2a, 0x7c26, 0x7c38, 0x7c41, 0x7c40, 0x81fe, 0x8201, 0x8202, 0x8204, 0x81ec, 0x8844, 0x8221, 0x8222, 0x8223, 0x822d, 0x822f, 0x8228, 0x822b, 0x8238, 0x823b, 0x8233, 0x8234, 0x823e, 0x8244, 0x8249, 0x824b, 0x824f, 0x825a, 0x825f, 0x8268, 0x887e, 0x8885, 0x8888, 0x88d8, 0x88df, 0x895e, 0x7f9d, 0x7f9f, 0x7fa7, 0x7faf, 0x7fb0, 0x7fb2, 0x7c7c, 0x6549, 0x7c91, 0x7c9d, 0x7c9c, 0x7c9e, 0x7ca2, 0x7cb2, 0x7cbc, 0x7cbd, 0x7cc1, 0x7cc7, 0x7ccc, 0x7ccd, 0x7cc8, 0x7cc5, 0x7cd7, 0x7ce8, 0x826e, 0x66a8, 0x7fbf, 0x7fce, 0x7fd5, 0x7fe5, 0x7fe1, 0x7fe6, 0x7fe9, 0x7fee, 0x7ff3, 0x7cf8, 0x7d77, 0x7da6, 0x7dae, 0x7e47, 0x7e9b, 0x9eb8, 0x9eb4, 0x8d73, 0x8d84, 0x8d94, 0x8d91, 0x8db1, 0x8d67, 0x8d6d, 0x8c47, 0x8c49, 0x914a, 0x9150, 0x914e, 0x914f, 0x9164, + 0x9b7c, 0x9b7d, 0x9b7e, 0x9b7f, 0x9b80, 0x9b81, 0x9b82, 0x9b83, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89, 0x9b8a, 0x9b8b, 0x9b8c, 0x9b8d, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b92, 0x9b93, 0x9b94, 0x9b95, 0x9b96, 0x9b97, 0x9b98, 0x9b99, 0x9b9a, 0x9b9b, 0x9b9c, 0x9b9d, 0x9b9e, 0x9b9f, 0x9ba0, 0x9ba1, 0x9ba2, 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9, 0x9baa, 0x9bab, 0x9bac, 0x9bad, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb2, 0x9bb3, 0x9bb4, 0x9bb5, 0x9bb6, 0x9bb7, 0x9bb8, 0x9bb9, 0x9bba, 0xfffd, 0x9bbb, 0x9bbc, 0x9bbd, 0x9bbe, 0x9bbf, 0x9bc0, 0x9bc1, 0x9bc2, 0x9bc3, 0x9bc4, 0x9bc5, 0x9bc6, 0x9bc7, 0x9bc8, 0x9bc9, 0x9bca, 0x9bcb, 0x9bcc, 0x9bcd, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd2, 0x9bd3, 0x9bd4, 0x9bd5, 0x9bd6, 0x9bd7, 0x9bd8, 0x9bd9, 0x9bda, 0x9bdb, 0x9162, 0x9161, 0x9170, 0x9169, 0x916f, 0x917d, 0x917e, 0x9172, 0x9174, 0x9179, 0x918c, 0x9185, 0x9190, 0x918d, 0x9191, 0x91a2, 0x91a3, 0x91aa, 0x91ad, 0x91ae, 0x91af, 0x91b5, 0x91b4, 0x91ba, 0x8c55, 0x9e7e, 0x8db8, 0x8deb, 0x8e05, 0x8e59, 0x8e69, 0x8db5, 0x8dbf, 0x8dbc, 0x8dba, 0x8dc4, 0x8dd6, 0x8dd7, 0x8dda, 0x8dde, 0x8dce, 0x8dcf, 0x8ddb, 0x8dc6, 0x8dec, 0x8df7, 0x8df8, 0x8de3, 0x8df9, 0x8dfb, 0x8de4, 0x8e09, 0x8dfd, 0x8e14, 0x8e1d, 0x8e1f, 0x8e2c, 0x8e2e, 0x8e23, 0x8e2f, 0x8e3a, 0x8e40, 0x8e39, 0x8e35, 0x8e3d, 0x8e31, 0x8e49, 0x8e41, 0x8e42, 0x8e51, 0x8e52, 0x8e4a, 0x8e70, 0x8e76, 0x8e7c, 0x8e6f, 0x8e74, 0x8e85, 0x8e8f, 0x8e94, 0x8e90, 0x8e9c, 0x8e9e, 0x8c78, 0x8c82, 0x8c8a, 0x8c85, 0x8c98, 0x8c94, 0x659b, 0x89d6, 0x89de, 0x89da, 0x89dc, + 0x9bdc, 0x9bdd, 0x9bde, 0x9bdf, 0x9be0, 0x9be1, 0x9be2, 0x9be3, 0x9be4, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9, 0x9bea, 0x9beb, 0x9bec, 0x9bed, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf2, 0x9bf3, 0x9bf4, 0x9bf5, 0x9bf6, 0x9bf7, 0x9bf8, 0x9bf9, 0x9bfa, 0x9bfb, 0x9bfc, 0x9bfd, 0x9bfe, 0x9bff, 0x9c00, 0x9c01, 0x9c02, 0x9c03, 0x9c04, 0x9c05, 0x9c06, 0x9c07, 0x9c08, 0x9c09, 0x9c0a, 0x9c0b, 0x9c0c, 0x9c0d, 0x9c0e, 0x9c0f, 0x9c10, 0x9c11, 0x9c12, 0x9c13, 0x9c14, 0x9c15, 0x9c16, 0x9c17, 0x9c18, 0x9c19, 0x9c1a, 0xfffd, 0x9c1b, 0x9c1c, 0x9c1d, 0x9c1e, 0x9c1f, 0x9c20, 0x9c21, 0x9c22, 0x9c23, 0x9c24, 0x9c25, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c2b, 0x9c2c, 0x9c2d, 0x9c2e, 0x9c2f, 0x9c30, 0x9c31, 0x9c32, 0x9c33, 0x9c34, 0x9c35, 0x9c36, 0x9c37, 0x9c38, 0x9c39, 0x9c3a, 0x9c3b, 0x89e5, 0x89eb, 0x89ef, 0x8a3e, 0x8b26, 0x9753, 0x96e9, 0x96f3, 0x96ef, 0x9706, 0x9701, 0x9708, 0x970f, 0x970e, 0x972a, 0x972d, 0x9730, 0x973e, 0x9f80, 0x9f83, 0x9f85, 0x9f86, 0x9f87, 0x9f88, 0x9f89, 0x9f8a, 0x9f8c, 0x9efe, 0x9f0b, 0x9f0d, 0x96b9, 0x96bc, 0x96bd, 0x96ce, 0x96d2, 0x77bf, 0x96e0, 0x928e, 0x92ae, 0x92c8, 0x933e, 0x936a, 0x93ca, 0x938f, 0x943e, 0x946b, 0x9c7f, 0x9c82, 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x7a23, 0x9c8b, 0x9c8e, 0x9c90, 0x9c91, 0x9c92, 0x9c94, 0x9c95, 0x9c9a, 0x9c9b, 0x9c9e, 0x9c9f, 0x9ca0, 0x9ca1, 0x9ca2, 0x9ca3, 0x9ca5, 0x9ca6, 0x9ca7, 0x9ca8, 0x9ca9, 0x9cab, 0x9cad, 0x9cae, 0x9cb0, 0x9cb1, 0x9cb2, 0x9cb3, 0x9cb4, 0x9cb5, 0x9cb6, 0x9cb7, 0x9cba, 0x9cbb, 0x9cbc, 0x9cbd, 0x9cc4, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cca, 0x9ccb, + 0x9c3c, 0x9c3d, 0x9c3e, 0x9c3f, 0x9c40, 0x9c41, 0x9c42, 0x9c43, 0x9c44, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49, 0x9c4a, 0x9c4b, 0x9c4c, 0x9c4d, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c52, 0x9c53, 0x9c54, 0x9c55, 0x9c56, 0x9c57, 0x9c58, 0x9c59, 0x9c5a, 0x9c5b, 0x9c5c, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c60, 0x9c61, 0x9c62, 0x9c63, 0x9c64, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69, 0x9c6a, 0x9c6b, 0x9c6c, 0x9c6d, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c72, 0x9c73, 0x9c74, 0x9c75, 0x9c76, 0x9c77, 0x9c78, 0x9c79, 0x9c7a, 0xfffd, 0x9c7b, 0x9c7d, 0x9c7e, 0x9c80, 0x9c83, 0x9c84, 0x9c89, 0x9c8a, 0x9c8c, 0x9c8f, 0x9c93, 0x9c96, 0x9c97, 0x9c98, 0x9c99, 0x9c9d, 0x9caa, 0x9cac, 0x9caf, 0x9cb9, 0x9cbe, 0x9cbf, 0x9cc0, 0x9cc1, 0x9cc2, 0x9cc8, 0x9cc9, 0x9cd1, 0x9cd2, 0x9cda, 0x9cdb, 0x9ce0, 0x9ce1, 0x9ccc, 0x9ccd, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd3, 0x9cd4, 0x9cd5, 0x9cd7, 0x9cd8, 0x9cd9, 0x9cdc, 0x9cdd, 0x9cdf, 0x9ce2, 0x977c, 0x9785, 0x9791, 0x9792, 0x9794, 0x97af, 0x97ab, 0x97a3, 0x97b2, 0x97b4, 0x9ab1, 0x9ab0, 0x9ab7, 0x9e58, 0x9ab6, 0x9aba, 0x9abc, 0x9ac1, 0x9ac0, 0x9ac5, 0x9ac2, 0x9acb, 0x9acc, 0x9ad1, 0x9b45, 0x9b43, 0x9b47, 0x9b49, 0x9b48, 0x9b4d, 0x9b51, 0x98e8, 0x990d, 0x992e, 0x9955, 0x9954, 0x9adf, 0x9ae1, 0x9ae6, 0x9aef, 0x9aeb, 0x9afb, 0x9aed, 0x9af9, 0x9b08, 0x9b0f, 0x9b13, 0x9b1f, 0x9b23, 0x9ebd, 0x9ebe, 0x7e3b, 0x9e82, 0x9e87, 0x9e88, 0x9e8b, 0x9e92, 0x93d6, 0x9e9d, 0x9e9f, 0x9edb, 0x9edc, 0x9edd, 0x9ee0, 0x9edf, 0x9ee2, 0x9ee9, 0x9ee7, 0x9ee5, 0x9eea, 0x9eef, 0x9f22, 0x9f2c, 0x9f2f, 0x9f39, 0x9f37, 0x9f3d, 0x9f3e, 0x9f44, + 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9, 0x9cea, 0x9ceb, 0x9cec, 0x9ced, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf2, 0x9cf3, 0x9cf4, 0x9cf5, 0x9cf6, 0x9cf7, 0x9cf8, 0x9cf9, 0x9cfa, 0x9cfb, 0x9cfc, 0x9cfd, 0x9cfe, 0x9cff, 0x9d00, 0x9d01, 0x9d02, 0x9d03, 0x9d04, 0x9d05, 0x9d06, 0x9d07, 0x9d08, 0x9d09, 0x9d0a, 0x9d0b, 0x9d0c, 0x9d0d, 0x9d0e, 0x9d0f, 0x9d10, 0x9d11, 0x9d12, 0x9d13, 0x9d14, 0x9d15, 0x9d16, 0x9d17, 0x9d18, 0x9d19, 0x9d1a, 0x9d1b, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d1f, 0x9d20, 0x9d21, 0xfffd, 0x9d22, 0x9d23, 0x9d24, 0x9d25, 0x9d26, 0x9d27, 0x9d28, 0x9d29, 0x9d2a, 0x9d2b, 0x9d2c, 0x9d2d, 0x9d2e, 0x9d2f, 0x9d30, 0x9d31, 0x9d32, 0x9d33, 0x9d34, 0x9d35, 0x9d36, 0x9d37, 0x9d38, 0x9d39, 0x9d3a, 0x9d3b, 0x9d3c, 0x9d3d, 0x9d3e, 0x9d3f, 0x9d40, 0x9d41, 0x9d42, 0xe234, 0xe235, 0xe236, 0xe237, 0xe238, 0xe239, 0xe23a, 0xe23b, 0xe23c, 0xe23d, 0xe23e, 0xe23f, 0xe240, 0xe241, 0xe242, 0xe243, 0xe244, 0xe245, 0xe246, 0xe247, 0xe248, 0xe249, 0xe24a, 0xe24b, 0xe24c, 0xe24d, 0xe24e, 0xe24f, 0xe250, 0xe251, 0xe252, 0xe253, 0xe254, 0xe255, 0xe256, 0xe257, 0xe258, 0xe259, 0xe25a, 0xe25b, 0xe25c, 0xe25d, 0xe25e, 0xe25f, 0xe260, 0xe261, 0xe262, 0xe263, 0xe264, 0xe265, 0xe266, 0xe267, 0xe268, 0xe269, 0xe26a, 0xe26b, 0xe26c, 0xe26d, 0xe26e, 0xe26f, 0xe270, 0xe271, 0xe272, 0xe273, 0xe274, 0xe275, 0xe276, 0xe277, 0xe278, 0xe279, 0xe27a, 0xe27b, 0xe27c, 0xe27d, 0xe27e, 0xe27f, 0xe280, 0xe281, 0xe282, 0xe283, 0xe284, 0xe285, 0xe286, 0xe287, 0xe288, 0xe289, 0xe28a, 0xe28b, 0xe28c, 0xe28d, 0xe28e, 0xe28f, 0xe290, 0xe291, + 0x9d43, 0x9d44, 0x9d45, 0x9d46, 0x9d47, 0x9d48, 0x9d49, 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4d, 0x9d4e, 0x9d4f, 0x9d50, 0x9d51, 0x9d52, 0x9d53, 0x9d54, 0x9d55, 0x9d56, 0x9d57, 0x9d58, 0x9d59, 0x9d5a, 0x9d5b, 0x9d5c, 0x9d5d, 0x9d5e, 0x9d5f, 0x9d60, 0x9d61, 0x9d62, 0x9d63, 0x9d64, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69, 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6d, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d72, 0x9d73, 0x9d74, 0x9d75, 0x9d76, 0x9d77, 0x9d78, 0x9d79, 0x9d7a, 0x9d7b, 0x9d7c, 0x9d7d, 0x9d7e, 0x9d7f, 0x9d80, 0x9d81, 0xfffd, 0x9d82, 0x9d83, 0x9d84, 0x9d85, 0x9d86, 0x9d87, 0x9d88, 0x9d89, 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8d, 0x9d8e, 0x9d8f, 0x9d90, 0x9d91, 0x9d92, 0x9d93, 0x9d94, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9d99, 0x9d9a, 0x9d9b, 0x9d9c, 0x9d9d, 0x9d9e, 0x9d9f, 0x9da0, 0x9da1, 0x9da2, 0xe292, 0xe293, 0xe294, 0xe295, 0xe296, 0xe297, 0xe298, 0xe299, 0xe29a, 0xe29b, 0xe29c, 0xe29d, 0xe29e, 0xe29f, 0xe2a0, 0xe2a1, 0xe2a2, 0xe2a3, 0xe2a4, 0xe2a5, 0xe2a6, 0xe2a7, 0xe2a8, 0xe2a9, 0xe2aa, 0xe2ab, 0xe2ac, 0xe2ad, 0xe2ae, 0xe2af, 0xe2b0, 0xe2b1, 0xe2b2, 0xe2b3, 0xe2b4, 0xe2b5, 0xe2b6, 0xe2b7, 0xe2b8, 0xe2b9, 0xe2ba, 0xe2bb, 0xe2bc, 0xe2bd, 0xe2be, 0xe2bf, 0xe2c0, 0xe2c1, 0xe2c2, 0xe2c3, 0xe2c4, 0xe2c5, 0xe2c6, 0xe2c7, 0xe2c8, 0xe2c9, 0xe2ca, 0xe2cb, 0xe2cc, 0xe2cd, 0xe2ce, 0xe2cf, 0xe2d0, 0xe2d1, 0xe2d2, 0xe2d3, 0xe2d4, 0xe2d5, 0xe2d6, 0xe2d7, 0xe2d8, 0xe2d9, 0xe2da, 0xe2db, 0xe2dc, 0xe2dd, 0xe2de, 0xe2df, 0xe2e0, 0xe2e1, 0xe2e2, 0xe2e3, 0xe2e4, 0xe2e5, 0xe2e6, 0xe2e7, 0xe2e8, 0xe2e9, 0xe2ea, 0xe2eb, 0xe2ec, 0xe2ed, 0xe2ee, 0xe2ef, + 0x9da3, 0x9da4, 0x9da5, 0x9da6, 0x9da7, 0x9da8, 0x9da9, 0x9daa, 0x9dab, 0x9dac, 0x9dad, 0x9dae, 0x9daf, 0x9db0, 0x9db1, 0x9db2, 0x9db3, 0x9db4, 0x9db5, 0x9db6, 0x9db7, 0x9db8, 0x9db9, 0x9dba, 0x9dbb, 0x9dbc, 0x9dbd, 0x9dbe, 0x9dbf, 0x9dc0, 0x9dc1, 0x9dc2, 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9, 0x9dca, 0x9dcb, 0x9dcc, 0x9dcd, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd2, 0x9dd3, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7, 0x9dd8, 0x9dd9, 0x9dda, 0x9ddb, 0x9ddc, 0x9ddd, 0x9dde, 0x9ddf, 0x9de0, 0x9de1, 0xfffd, 0x9de2, 0x9de3, 0x9de4, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9, 0x9dea, 0x9deb, 0x9dec, 0x9ded, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df2, 0x9df3, 0x9df4, 0x9df5, 0x9df6, 0x9df7, 0x9df8, 0x9df9, 0x9dfa, 0x9dfb, 0x9dfc, 0x9dfd, 0x9dfe, 0x9dff, 0x9e00, 0x9e01, 0x9e02, 0xe2f0, 0xe2f1, 0xe2f2, 0xe2f3, 0xe2f4, 0xe2f5, 0xe2f6, 0xe2f7, 0xe2f8, 0xe2f9, 0xe2fa, 0xe2fb, 0xe2fc, 0xe2fd, 0xe2fe, 0xe2ff, 0xe300, 0xe301, 0xe302, 0xe303, 0xe304, 0xe305, 0xe306, 0xe307, 0xe308, 0xe309, 0xe30a, 0xe30b, 0xe30c, 0xe30d, 0xe30e, 0xe30f, 0xe310, 0xe311, 0xe312, 0xe313, 0xe314, 0xe315, 0xe316, 0xe317, 0xe318, 0xe319, 0xe31a, 0xe31b, 0xe31c, 0xe31d, 0xe31e, 0xe31f, 0xe320, 0xe321, 0xe322, 0xe323, 0xe324, 0xe325, 0xe326, 0xe327, 0xe328, 0xe329, 0xe32a, 0xe32b, 0xe32c, 0xe32d, 0xe32e, 0xe32f, 0xe330, 0xe331, 0xe332, 0xe333, 0xe334, 0xe335, 0xe336, 0xe337, 0xe338, 0xe339, 0xe33a, 0xe33b, 0xe33c, 0xe33d, 0xe33e, 0xe33f, 0xe340, 0xe341, 0xe342, 0xe343, 0xe344, 0xe345, 0xe346, 0xe347, 0xe348, 0xe349, 0xe34a, 0xe34b, 0xe34c, 0xe34d, + 0x9e03, 0x9e04, 0x9e05, 0x9e06, 0x9e07, 0x9e08, 0x9e09, 0x9e0a, 0x9e0b, 0x9e0c, 0x9e0d, 0x9e0e, 0x9e0f, 0x9e10, 0x9e11, 0x9e12, 0x9e13, 0x9e14, 0x9e15, 0x9e16, 0x9e17, 0x9e18, 0x9e19, 0x9e1a, 0x9e1b, 0x9e1c, 0x9e1d, 0x9e1e, 0x9e24, 0x9e27, 0x9e2e, 0x9e30, 0x9e34, 0x9e3b, 0x9e3c, 0x9e40, 0x9e4d, 0x9e50, 0x9e52, 0x9e53, 0x9e54, 0x9e56, 0x9e59, 0x9e5d, 0x9e5f, 0x9e60, 0x9e61, 0x9e62, 0x9e65, 0x9e6e, 0x9e6f, 0x9e72, 0x9e74, 0x9e75, 0x9e76, 0x9e77, 0x9e78, 0x9e79, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e7d, 0x9e80, 0xfffd, 0x9e81, 0x9e83, 0x9e84, 0x9e85, 0x9e86, 0x9e89, 0x9e8a, 0x9e8c, 0x9e8d, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e94, 0x9e95, 0x9e96, 0x9e97, 0x9e98, 0x9e99, 0x9e9a, 0x9e9b, 0x9e9c, 0x9e9e, 0x9ea0, 0x9ea1, 0x9ea2, 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea7, 0x9ea8, 0x9ea9, 0x9eaa, 0xe34e, 0xe34f, 0xe350, 0xe351, 0xe352, 0xe353, 0xe354, 0xe355, 0xe356, 0xe357, 0xe358, 0xe359, 0xe35a, 0xe35b, 0xe35c, 0xe35d, 0xe35e, 0xe35f, 0xe360, 0xe361, 0xe362, 0xe363, 0xe364, 0xe365, 0xe366, 0xe367, 0xe368, 0xe369, 0xe36a, 0xe36b, 0xe36c, 0xe36d, 0xe36e, 0xe36f, 0xe370, 0xe371, 0xe372, 0xe373, 0xe374, 0xe375, 0xe376, 0xe377, 0xe378, 0xe379, 0xe37a, 0xe37b, 0xe37c, 0xe37d, 0xe37e, 0xe37f, 0xe380, 0xe381, 0xe382, 0xe383, 0xe384, 0xe385, 0xe386, 0xe387, 0xe388, 0xe389, 0xe38a, 0xe38b, 0xe38c, 0xe38d, 0xe38e, 0xe38f, 0xe390, 0xe391, 0xe392, 0xe393, 0xe394, 0xe395, 0xe396, 0xe397, 0xe398, 0xe399, 0xe39a, 0xe39b, 0xe39c, 0xe39d, 0xe39e, 0xe39f, 0xe3a0, 0xe3a1, 0xe3a2, 0xe3a3, 0xe3a4, 0xe3a5, 0xe3a6, 0xe3a7, 0xe3a8, 0xe3a9, 0xe3aa, 0xe3ab, + 0x9eab, 0x9eac, 0x9ead, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb2, 0x9eb3, 0x9eb5, 0x9eb6, 0x9eb7, 0x9eb9, 0x9eba, 0x9ebc, 0x9ebf, 0x9ec0, 0x9ec1, 0x9ec2, 0x9ec3, 0x9ec5, 0x9ec6, 0x9ec7, 0x9ec8, 0x9eca, 0x9ecb, 0x9ecc, 0x9ed0, 0x9ed2, 0x9ed3, 0x9ed5, 0x9ed6, 0x9ed7, 0x9ed9, 0x9eda, 0x9ede, 0x9ee1, 0x9ee3, 0x9ee4, 0x9ee6, 0x9ee8, 0x9eeb, 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef3, 0x9ef4, 0x9ef5, 0x9ef6, 0x9ef7, 0x9ef8, 0x9efa, 0x9efd, 0x9eff, 0x9f00, 0x9f01, 0x9f02, 0x9f03, 0x9f04, 0x9f05, 0xfffd, 0x9f06, 0x9f07, 0x9f08, 0x9f09, 0x9f0a, 0x9f0c, 0x9f0f, 0x9f11, 0x9f12, 0x9f14, 0x9f15, 0x9f16, 0x9f18, 0x9f1a, 0x9f1b, 0x9f1c, 0x9f1d, 0x9f1e, 0x9f1f, 0x9f21, 0x9f23, 0x9f24, 0x9f25, 0x9f26, 0x9f27, 0x9f28, 0x9f29, 0x9f2a, 0x9f2b, 0x9f2d, 0x9f2e, 0x9f30, 0x9f31, 0xe3ac, 0xe3ad, 0xe3ae, 0xe3af, 0xe3b0, 0xe3b1, 0xe3b2, 0xe3b3, 0xe3b4, 0xe3b5, 0xe3b6, 0xe3b7, 0xe3b8, 0xe3b9, 0xe3ba, 0xe3bb, 0xe3bc, 0xe3bd, 0xe3be, 0xe3bf, 0xe3c0, 0xe3c1, 0xe3c2, 0xe3c3, 0xe3c4, 0xe3c5, 0xe3c6, 0xe3c7, 0xe3c8, 0xe3c9, 0xe3ca, 0xe3cb, 0xe3cc, 0xe3cd, 0xe3ce, 0xe3cf, 0xe3d0, 0xe3d1, 0xe3d2, 0xe3d3, 0xe3d4, 0xe3d5, 0xe3d6, 0xe3d7, 0xe3d8, 0xe3d9, 0xe3da, 0xe3db, 0xe3dc, 0xe3dd, 0xe3de, 0xe3df, 0xe3e0, 0xe3e1, 0xe3e2, 0xe3e3, 0xe3e4, 0xe3e5, 0xe3e6, 0xe3e7, 0xe3e8, 0xe3e9, 0xe3ea, 0xe3eb, 0xe3ec, 0xe3ed, 0xe3ee, 0xe3ef, 0xe3f0, 0xe3f1, 0xe3f2, 0xe3f3, 0xe3f4, 0xe3f5, 0xe3f6, 0xe3f7, 0xe3f8, 0xe3f9, 0xe3fa, 0xe3fb, 0xe3fc, 0xe3fd, 0xe3fe, 0xe3ff, 0xe400, 0xe401, 0xe402, 0xe403, 0xe404, 0xe405, 0xe406, 0xe407, 0xe408, 0xe409, + 0x9f32, 0x9f33, 0x9f34, 0x9f35, 0x9f36, 0x9f38, 0x9f3a, 0x9f3c, 0x9f3f, 0x9f40, 0x9f41, 0x9f42, 0x9f43, 0x9f45, 0x9f46, 0x9f47, 0x9f48, 0x9f49, 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4d, 0x9f4e, 0x9f4f, 0x9f52, 0x9f53, 0x9f54, 0x9f55, 0x9f56, 0x9f57, 0x9f58, 0x9f59, 0x9f5a, 0x9f5b, 0x9f5c, 0x9f5d, 0x9f5e, 0x9f5f, 0x9f60, 0x9f61, 0x9f62, 0x9f63, 0x9f64, 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69, 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6d, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f72, 0x9f73, 0x9f74, 0x9f75, 0x9f76, 0x9f77, 0x9f78, 0xfffd, 0x9f79, 0x9f7a, 0x9f7b, 0x9f7c, 0x9f7d, 0x9f7e, 0x9f81, 0x9f82, 0x9f8d, 0x9f8e, 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f93, 0x9f94, 0x9f95, 0x9f96, 0x9f97, 0x9f98, 0x9f9c, 0x9f9d, 0x9f9e, 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa4, 0x9fa5, 0xf92c, 0xf979, 0xf995, 0xf9e7, 0xf9f1, 0xe40a, 0xe40b, 0xe40c, 0xe40d, 0xe40e, 0xe40f, 0xe410, 0xe411, 0xe412, 0xe413, 0xe414, 0xe415, 0xe416, 0xe417, 0xe418, 0xe419, 0xe41a, 0xe41b, 0xe41c, 0xe41d, 0xe41e, 0xe41f, 0xe420, 0xe421, 0xe422, 0xe423, 0xe424, 0xe425, 0xe426, 0xe427, 0xe428, 0xe429, 0xe42a, 0xe42b, 0xe42c, 0xe42d, 0xe42e, 0xe42f, 0xe430, 0xe431, 0xe432, 0xe433, 0xe434, 0xe435, 0xe436, 0xe437, 0xe438, 0xe439, 0xe43a, 0xe43b, 0xe43c, 0xe43d, 0xe43e, 0xe43f, 0xe440, 0xe441, 0xe442, 0xe443, 0xe444, 0xe445, 0xe446, 0xe447, 0xe448, 0xe449, 0xe44a, 0xe44b, 0xe44c, 0xe44d, 0xe44e, 0xe44f, 0xe450, 0xe451, 0xe452, 0xe453, 0xe454, 0xe455, 0xe456, 0xe457, 0xe458, 0xe459, 0xe45a, 0xe45b, 0xe45c, 0xe45d, 0xe45e, 0xe45f, 0xe460, 0xe461, 0xe462, 0xe463, 0xe464, 0xe465, 0xe466, 0xe467, + 0xfa0c, 0xfa0d, 0xfa0e, 0xfa0f, 0xfa11, 0xfa13, 0xfa14, 0xfa18, 0xfa1f, 0xfa20, 0xfa21, 0xfa23, 0xfa24, 0xfa27, 0xfa28, 0xfa29, 0x2e81, 0xe816, 0xe817, 0xe818, 0x2e84, 0x3473, 0x3447, 0x2e88, 0x2e8b, 0xe81e, 0x359e, 0x361a, 0x360e, 0x2e8c, 0x2e97, 0x396e, 0x3918, 0xe826, 0x39cf, 0x39df, 0x3a73, 0x39d0, 0xe82b, 0xe82c, 0x3b4e, 0x3c6e, 0x3ce0, 0x2ea7, 0xe831, 0xe832, 0x2eaa, 0x4056, 0x415f, 0x2eae, 0x4337, 0x2eb3, 0x2eb6, 0x2eb7, 0xe83b, 0x43b1, 0x43ac, 0x2ebb, 0x43dd, 0x44d6, 0x4661, 0x464c, 0xe843, 0xfffd, 0x4723, 0x4729, 0x477c, 0x478d, 0x2eca, 0x4947, 0x497a, 0x497d, 0x4982, 0x4983, 0x4985, 0x4986, 0x499f, 0x499b, 0x49b7, 0x49b6, 0xe854, 0xe855, 0x4ca3, 0x4c9f, 0x4ca0, 0x4ca1, 0x4c77, 0x4ca2, 0x4d13, 0x4d14, 0x4d15, 0x4d16, 0x4d17, 0x4d18, 0x4d19, 0x4dae, 0xe864, 0xe468, 0xe469, 0xe46a, 0xe46b, 0xe46c, 0xe46d, 0xe46e, 0xe46f, 0xe470, 0xe471, 0xe472, 0xe473, 0xe474, 0xe475, 0xe476, 0xe477, 0xe478, 0xe479, 0xe47a, 0xe47b, 0xe47c, 0xe47d, 0xe47e, 0xe47f, 0xe480, 0xe481, 0xe482, 0xe483, 0xe484, 0xe485, 0xe486, 0xe487, 0xe488, 0xe489, 0xe48a, 0xe48b, 0xe48c, 0xe48d, 0xe48e, 0xe48f, 0xe490, 0xe491, 0xe492, 0xe493, 0xe494, 0xe495, 0xe496, 0xe497, 0xe498, 0xe499, 0xe49a, 0xe49b, 0xe49c, 0xe49d, 0xe49e, 0xe49f, 0xe4a0, 0xe4a1, 0xe4a2, 0xe4a3, 0xe4a4, 0xe4a5, 0xe4a6, 0xe4a7, 0xe4a8, 0xe4a9, 0xe4aa, 0xe4ab, 0xe4ac, 0xe4ad, 0xe4ae, 0xe4af, 0xe4b0, 0xe4b1, 0xe4b2, 0xe4b3, 0xe4b4, 0xe4b5, 0xe4b6, 0xe4b7, 0xe4b8, 0xe4b9, 0xe4ba, 0xe4bb, 0xe4bc, 0xe4bd, 0xe4be, 0xe4bf, 0xe4c0, 0xe4c1, 0xe4c2, 0xe4c3, 0xe4c4, 0xe4c5, +}; diff --git a/src/util/string.c b/src/util/string.c index f3835f04b..352daa91b 100644 --- a/src/util/string.c +++ b/src/util/string.c @@ -231,6 +231,75 @@ char* utf16to8(const uint16_t* utf16, size_t length) { return newUTF8; } +extern const uint16_t gbkUnicodeTable[]; + +char* gbkToUtf8(const char* gbk, size_t length) { + char* utf8 = 0; + char* utf8Offset; + size_t offset; + uint8_t gbk1 = 0; + char buffer[4]; + size_t utf8TotalBytes = 0; + size_t utf8Length = 0; + for (offset = 0; offset < length; ++offset) { + if (length == 0) { + break; + } + unsigned unichar = 0xFFFD; + if (!gbk1 && !(gbk[offset] & 0x80)) { + unichar = gbk[offset]; + } else if (gbk1) { + uint8_t gbk2 = gbk[offset]; + if (gbk2 >= 0x40 && gbk2 != 0xFF) { + // TODO: GB-18030 support? + unichar = gbkUnicodeTable[gbk1 * 0xBF + gbk2 - 0x40]; + } + gbk1 = 0; + } else if (((uint8_t*) gbk)[offset] == 0xFF) { + unichar = 0xFFFD; + } else if (((uint8_t*) gbk)[offset] == 0x80) { + unichar = 0x20AC; // Euro + } else { + gbk1 = ((uint8_t*) gbk)[offset] - 0x81; + continue; + } + + size_t bytes = toUtf8(unichar, buffer); + utf8Length += bytes; + if (utf8Length < utf8TotalBytes) { + memcpy(utf8Offset, buffer, bytes); + utf8Offset += bytes; + } else if (!utf8) { + utf8 = malloc(length); + if (!utf8) { + return 0; + } + utf8TotalBytes = length; + memcpy(utf8, buffer, bytes); + utf8Offset = utf8 + bytes; + } else if (utf8Length >= utf8TotalBytes) { + ptrdiff_t o = utf8Offset - utf8; + char* newUTF8 = realloc(utf8, utf8TotalBytes * 2); + utf8Offset = o + newUTF8; + if (!newUTF8) { + free(utf8); + return 0; + } + utf8 = newUTF8; + memcpy(utf8Offset, buffer, bytes); + utf8Offset += bytes; + } + } + + char* newUTF8 = realloc(utf8, utf8Length + 1); + if (!newUTF8) { + free(utf8); + return 0; + } + newUTF8[utf8Length] = '\0'; + return newUTF8; +} + int hexDigit(char digit) { switch (digit) { case '0': @@ -353,7 +422,6 @@ const char* hex4(const char* line, uint8_t* out) { uint8_t value = 0; *out = 0; char digit = *line; - value <<= 4; int nybble = hexDigit(digit); if (nybble < 0) { return 0; From 1a6d5ad7e3f28e01e747f634384e3775c562e119 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 30 Jun 2019 17:36:00 -0700 Subject: [PATCH 46/50] 3DS: Update font code for ctrulib 1.6 --- src/platform/3ds/gui-font.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/platform/3ds/gui-font.c b/src/platform/3ds/gui-font.c index 67d44f4c9..761cd7c55 100644 --- a/src/platform/3ds/gui-font.c +++ b/src/platform/3ds/gui-font.c @@ -14,6 +14,7 @@ #define FONT_SIZE 15.6f struct GUIFont { + CFNT_s* font; C3D_Tex* sheets; C3D_Tex icons; float size; @@ -27,14 +28,15 @@ struct GUIFont* GUIFontCreate(void) { } C3D_Tex* tex; - TGLP_s* glyphInfo = fontGetGlyphInfo(); + guiFont->font = fontGetSystemFont(); + TGLP_s* glyphInfo = fontGetGlyphInfo(guiFont->font); guiFont->size = FONT_SIZE / glyphInfo->cellHeight; guiFont->sheets = malloc(sizeof(*guiFont->sheets) * glyphInfo->nSheets); int i; for (i = 0; i < glyphInfo->nSheets; ++i) { tex = &guiFont->sheets[i]; - tex->data = fontGetGlyphSheetTex(i); + tex->data = fontGetGlyphSheetTex(guiFont->font, i); tex->fmt = glyphInfo->sheetFmt; tex->size = glyphInfo->sheetSize; tex->width = glyphInfo->sheetWidth; @@ -59,12 +61,12 @@ void GUIFontDestroy(struct GUIFont* font) { } unsigned GUIFontHeight(const struct GUIFont* font) { - return fontGetInfo()->lineFeed * font->size; + return fontGetInfo(font->font)->lineFeed * font->size; } unsigned GUIFontGlyphWidth(const struct GUIFont* font, uint32_t glyph) { - int index = fontGlyphIndexFromCodePoint(glyph); - charWidthInfo_s* info = fontGetCharWidthInfo(index); + int index = fontGlyphIndexFromCodePoint(font->font, glyph); + charWidthInfo_s* info = fontGetCharWidthInfo(font->font, index); if (info) { return info->charWidth * font->size; } @@ -91,9 +93,9 @@ void GUIFontIconMetrics(const struct GUIFont* font, enum GUIIcon icon, unsigned* } void GUIFontDrawGlyph(const struct GUIFont* font, int glyph_x, int glyph_y, uint32_t color, uint32_t glyph) { - int index = fontGlyphIndexFromCodePoint(glyph); + int index = fontGlyphIndexFromCodePoint(font->font, glyph); fontGlyphPos_s data; - fontCalcGlyphPos(&data, index, 0, 1.0, 1.0); + fontCalcGlyphPos(&data, font->font, index, 0, 1.0, 1.0); C3D_Tex* tex = &font->sheets[data.sheetIndex]; ctrActivateTexture(tex); From 981a8bcb7d253835c334e7b6671ce5a523917bd3 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Sun, 30 Jun 2019 17:49:44 -0700 Subject: [PATCH 47/50] mGUI: Refactor fixed ROM buffer code out of cores, add loading progress --- include/mgba/core/core.h | 3 +++ src/core/core.c | 52 +++++++++++++++++++++++++++++++++++- src/feature/gui/gui-runner.c | 20 +++++++++++++- src/gb/gb.c | 12 --------- src/gba/gba.c | 7 ----- 5 files changed, 73 insertions(+), 21 deletions(-) diff --git a/include/mgba/core/core.h b/include/mgba/core/core.h index bca92b1ff..b4e307a10 100644 --- a/include/mgba/core/core.h +++ b/include/mgba/core/core.h @@ -173,6 +173,9 @@ bool mCoreLoadFile(struct mCore* core, const char* path); bool mCorePreloadVF(struct mCore* core, struct VFile* vf); bool mCorePreloadFile(struct mCore* core, const char* path); +bool mCorePreloadVFCB(struct mCore* core, struct VFile* vf, void (cb)(size_t, size_t, void*), void* context); +bool mCorePreloadFileCB(struct mCore* core, const char* path, void (cb)(size_t, size_t, void*), void* context); + bool mCoreAutoloadSave(struct mCore* core); bool mCoreAutoloadPatch(struct mCore* core); bool mCoreAutoloadCheats(struct mCore* core); diff --git a/src/core/core.c b/src/core/core.c index 80de0e6bb..67e54b46b 100644 --- a/src/core/core.c +++ b/src/core/core.c @@ -127,7 +127,15 @@ bool mCoreLoadFile(struct mCore* core, const char* path) { } bool mCorePreloadVF(struct mCore* core, struct VFile* vf) { - struct VFile* vfm = VFileMemChunk(NULL, vf->size(vf)); + struct VFile* vfm; +#ifdef FIXED_ROM_BUFFER + extern uint32_t* romBuffer; + extern size_t romBufferSize; + vfm = VFileFromMemory(romBuffer, romBufferSize); +#else + vfm = VFileMemChunk(NULL, vf->size(vf)); +#endif + uint8_t buffer[2048]; ssize_t read; vf->seek(vf, 0, SEEK_SET); @@ -155,6 +163,48 @@ bool mCorePreloadFile(struct mCore* core, const char* path) { return ret; } +bool mCorePreloadVFCB(struct mCore* core, struct VFile* vf, void (cb)(size_t, size_t, void*), void* context) { + struct VFile* vfm; + size_t size = vf->size(vf); + +#ifdef FIXED_ROM_BUFFER + extern uint32_t* romBuffer; + extern size_t romBufferSize; + vfm = VFileFromMemory(romBuffer, romBufferSize); +#else + vfm = VFileMemChunk(NULL, size); +#endif + + uint8_t buffer[2048]; + ssize_t read; + size_t total = 0; + vf->seek(vf, 0, SEEK_SET); + while ((read = vf->read(vf, buffer, sizeof(buffer))) > 0) { + vfm->write(vfm, buffer, read); + total += read; + cb(total, size, context); + } + vf->close(vf); + bool ret = core->loadROM(core, vfm); + if (!ret) { + vfm->close(vfm); + } + return ret; +} + +bool mCorePreloadFileCB(struct mCore* core, const char* path, void (cb)(size_t, size_t, void*), void* context) { + struct VFile* rom = mDirectorySetOpenPath(&core->dirs, path, core->isROM); + if (!rom) { + return false; + } + + bool ret = mCorePreloadVFCB(core, rom, cb, context); + if (!ret) { + rom->close(rom); + } + return ret; +} + bool mCoreAutoloadSave(struct mCore* core) { if (!core->dirs.save) { return false; diff --git a/src/feature/gui/gui-runner.c b/src/feature/gui/gui-runner.c index af6584ee0..54752b2e9 100644 --- a/src/feature/gui/gui-runner.c +++ b/src/feature/gui/gui-runner.c @@ -289,6 +289,23 @@ static void _log(struct mLogger* logger, int category, enum mLogLevel level, con } } +static void _updateLoading(size_t read, size_t size, void* context) { + struct mGUIRunner* runner = context; + if (read & 0x3FFFF) { + return; + } + + runner->params.drawStart(); + if (runner->params.guiPrepare) { + runner->params.guiPrepare(); + } + GUIFontPrintf(runner->params.font, runner->params.width / 2, (GUIFontHeight(runner->params.font) + runner->params.height) / 2, GUI_ALIGN_HCENTER, 0xFFFFFFFF, "Loading...%i%%", 100 * read / size); + if (runner->params.guiFinish) { + runner->params.guiFinish(); + } + runner->params.drawEnd(); +} + void mGUIRun(struct mGUIRunner* runner, const char* path) { struct mGUIBackground drawState = { .d = { @@ -364,7 +381,8 @@ void mGUIRun(struct mGUIRunner* runner, const char* path) { runner->core->init(runner->core); mCoreInitConfig(runner->core, runner->port); mInputMapInit(&runner->core->inputMap, &GBAInputInfo); - found = mCoreLoadFile(runner->core, path); + + found = mCorePreloadFileCB(runner->core, path, _updateLoading, runner); if (!found) { mLOG(GUI_RUNNER, WARN, "Failed to load %s!", path); mCoreConfigDeinit(&runner->core->config); diff --git a/src/gb/gb.c b/src/gb/gb.c index a03eb36ff..63d81142b 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -46,11 +46,6 @@ static void GBStop(struct LR35902Core* cpu); static void _enableInterrupts(struct mTiming* timing, void* user, uint32_t cyclesLate); -#ifdef FIXED_ROM_BUFFER -extern uint32_t* romBuffer; -extern size_t romBufferSize; -#endif - void GBCreate(struct GB* gb) { gb->d.id = GB_COMPONENT_MAGIC; gb->d.init = GBInit; @@ -113,14 +108,7 @@ bool GBLoadROM(struct GB* gb, struct VFile* vf) { gb->pristineRomSize = vf->size(vf); vf->seek(vf, 0, SEEK_SET); gb->isPristine = true; -#ifdef FIXED_ROM_BUFFER - if (gb->pristineRomSize <= romBufferSize) { - gb->memory.rom = romBuffer; - vf->read(vf, romBuffer, gb->pristineRomSize); - } -#else gb->memory.rom = vf->map(vf, gb->pristineRomSize, MAP_READ); -#endif if (!gb->memory.rom) { return false; } diff --git a/src/gba/gba.c b/src/gba/gba.c index 42697ffe1..33d9ab426 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -383,14 +383,7 @@ bool GBALoadROM(struct GBA* gba, struct VFile* vf) { #endif } else { gba->isPristine = true; -#ifdef FIXED_ROM_BUFFER - if (gba->pristineRomSize <= romBufferSize) { - gba->memory.rom = romBuffer; - vf->read(vf, romBuffer, gba->pristineRomSize); - } -#else gba->memory.rom = vf->map(vf, gba->pristineRomSize, MAP_READ); -#endif gba->memory.romSize = gba->pristineRomSize; } if (!gba->memory.rom) { From 77ec5e6e91dec006cc9975315a04c5be40f4782b Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Mon, 1 Jul 2019 20:11:45 -0700 Subject: [PATCH 48/50] GBA: Set up GPIO mapping on null and ELF ROM regions (fixes #1481) --- CHANGES | 1 + src/gba/gba.c | 1 + 2 files changed, 2 insertions(+) diff --git a/CHANGES b/CHANGES index 1380e7ed9..4b4acbb5f 100644 --- a/CHANGES +++ b/CHANGES @@ -44,6 +44,7 @@ Other fixes: - mGUI: Fix crash if last loaded ROM directory disappears (fixes mgba.io/i/1466) - Libretro: Fix crash changing allowing opposing directions (hhromic) - Qt: Fix race conditions initializing GDB stub + - GBA: Set up GPIO mapping on null and ELF ROM regions (fixes mgba.io/i/1481) Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/gba/gba.c b/src/gba/gba.c index 33d9ab426..4193e47ce 100644 --- a/src/gba/gba.c +++ b/src/gba/gba.c @@ -342,6 +342,7 @@ bool GBALoadNull(struct GBA* gba) { if (gba->cpu) { gba->cpu->memory.setActiveRegion(gba->cpu, gba->cpu->gprs[ARM_PC]); } + GBAHardwareInit(&gba->memory.hw, &((uint16_t*) gba->memory.rom)[GPIO_REG_DATA >> 1]); return true; } From a00a02b8c4ea640bee8ec14d59b229dace7bce90 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 3 Jul 2019 10:19:05 -0700 Subject: [PATCH 49/50] GBA Memory: Fix STM/LDM to invalid VRAM --- CHANGES | 1 + src/gba/memory.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index 4b4acbb5f..af81f89af 100644 --- a/CHANGES +++ b/CHANGES @@ -31,6 +31,7 @@ Emulation fixes: - GB Video: Increment BCPS/OCPS even in mode 3 (fixes mgba.io/i/1462) - GB Audio: Deschedule channel 3 when disabled (fixes mgba.io/i/1463) - GB Audio: Deschedule channel 1 when disabled by sweep (fixes mgba.io/i/1467) + - GBA Memory: Fix STM/LDM to invalid VRAM Other fixes: - Qt: Fix some Qt display driver race conditions - Core: Improved lockstep driver reliability (Le Hoang Quyen) diff --git a/src/gba/memory.c b/src/gba/memory.c index 62fa6fda9..7a4cf18c7 100644 --- a/src/gba/memory.c +++ b/src/gba/memory.c @@ -394,9 +394,9 @@ static void GBASetActiveRegion(struct ARMCore* cpu, uint32_t address) { if ((address & (SIZE_VRAM | 0x00014000)) == SIZE_VRAM && (GBARegisterDISPCNTGetMode(gba->memory.io[REG_DISPCNT >> 1]) >= 3)) { \ mLOG(GBA_MEM, GAME_ERROR, "Bad VRAM Load32: 0x%08X", address); \ value = 0; \ - break; \ + } else { \ + LOAD_32(value, address & 0x00017FFC, gba->video.vram); \ } \ - LOAD_32(value, address & 0x00017FFC, gba->video.vram); \ } else { \ LOAD_32(value, address & 0x0001FFFC, gba->video.vram); \ } \ @@ -735,13 +735,13 @@ uint32_t GBALoad8(struct ARMCore* cpu, uint32_t address, int* cycleCounter) { if ((address & 0x0001FFFF) >= SIZE_VRAM) { \ if ((address & (SIZE_VRAM | 0x00014000)) == SIZE_VRAM && (GBARegisterDISPCNTGetMode(gba->memory.io[REG_DISPCNT >> 1]) >= 3)) { \ mLOG(GBA_MEM, GAME_ERROR, "Bad VRAM Store32: 0x%08X", address); \ - break; \ - } \ - LOAD_32(oldValue, address & 0x00017FFC, gba->video.vram); \ - if (oldValue != value) { \ - STORE_32(value, address & 0x00017FFC, gba->video.vram); \ - gba->video.renderer->writeVRAM(gba->video.renderer, (address & 0x00017FFC) + 2); \ - gba->video.renderer->writeVRAM(gba->video.renderer, (address & 0x00017FFC)); \ + } else { \ + LOAD_32(oldValue, address & 0x00017FFC, gba->video.vram); \ + if (oldValue != value) { \ + STORE_32(value, address & 0x00017FFC, gba->video.vram); \ + gba->video.renderer->writeVRAM(gba->video.renderer, (address & 0x00017FFC) + 2); \ + gba->video.renderer->writeVRAM(gba->video.renderer, (address & 0x00017FFC)); \ + } \ } \ } else { \ LOAD_32(oldValue, address & 0x0001FFFC, gba->video.vram); \ From a24bd073b41c64d4f1ee258e57584defa0f1c612 Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Wed, 3 Jul 2019 13:01:10 -0700 Subject: [PATCH 50/50] GB: Fix savedata initialization (fixes #1473, fixes #1478) --- CHANGES | 1 + src/gb/gb.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index af81f89af..13f5c13e8 100644 --- a/CHANGES +++ b/CHANGES @@ -32,6 +32,7 @@ Emulation fixes: - GB Audio: Deschedule channel 3 when disabled (fixes mgba.io/i/1463) - GB Audio: Deschedule channel 1 when disabled by sweep (fixes mgba.io/i/1467) - GBA Memory: Fix STM/LDM to invalid VRAM + - GB: Fix savedata initialization (fixes mgba.io/i/1473, mgba.io/i/1478) Other fixes: - Qt: Fix some Qt display driver race conditions - Core: Improved lockstep driver reliability (Le Hoang Quyen) diff --git a/src/gb/gb.c b/src/gb/gb.c index 63d81142b..06ceddc64 100644 --- a/src/gb/gb.c +++ b/src/gb/gb.c @@ -174,7 +174,7 @@ void GBResizeSram(struct GB* gb, size_t size) { vf->write(vf, extdataBuffer, vfSize & 0xFF); } gb->memory.sram = vf->map(vf, size, MAP_WRITE); - memset(&gb->memory.sram[gb->sramSize], 0xFF, size - gb->sramSize); + memset(&gb->memory.sram[vfSize], 0xFF, size - vfSize); } else if (size > gb->sramSize || !gb->memory.sram) { if (gb->memory.sram) { vf->unmap(vf, gb->memory.sram, gb->sramSize);