From 6ff4406638a873ae25df773de64775aadb057bac Mon Sep 17 00:00:00 2001 From: Sebastian Dine Date: Sat, 9 May 2026 19:32:18 +0200 Subject: [PATCH] minor: yugioh support added --- AGENTS.md | 16 +- README.md | 10 + app/AGENTS.md | 9 +- app/CMakeLists.txt | 7 + app/main.cpp | 38 +- core/AGENTS.md | 11 +- core/CMakeLists.txt | 5 + core/include/ccm/domain/Enums.hpp | 3 +- core/include/ccm/domain/YuGiOhCard.hpp | 38 ++ .../games/magic/MagicCardPreviewSource.hpp | 19 +- .../pokemon/PokemonCardPreviewSource.hpp | 15 +- .../games/yugioh/YuGiOhCardPreviewSource.hpp | 123 ++++ .../ccm/games/yugioh/YuGiOhGameModule.hpp | 25 + .../ccm/games/yugioh/YuGiOhSetSource.hpp | 23 + core/include/ccm/infra/CprHttpClient.hpp | 14 + .../ccm/infra/LocalPreviewByteCache.hpp | 85 +++ core/include/ccm/ports/ICardPreviewSource.hpp | 60 +- core/include/ccm/ports/IPreviewByteCache.hpp | 75 +++ core/include/ccm/services/CardFilter.hpp | 3 + .../ccm/services/CardPreviewService.hpp | 81 ++- core/include/ccm/services/CardSorter.hpp | 15 + core/include/ccm/util/YuGiOhPrintingSlot.hpp | 72 ++ core/src/domain/Enums.cpp | 6 +- core/src/domain/YuGiOhCard.cpp | 42 ++ .../games/magic/MagicCardPreviewSource.cpp | 31 +- .../pokemon/PokemonCardPreviewSource.cpp | 32 +- .../games/yugioh/YuGiOhCardPreviewSource.cpp | 565 ++++++++++++++++ core/src/games/yugioh/YuGiOhGameModule.cpp | 8 + core/src/games/yugioh/YuGiOhSetSource.cpp | 47 ++ core/src/infra/CprHttpClient.cpp | 37 +- core/src/infra/LocalPreviewByteCache.cpp | 228 +++++++ core/src/services/CardFilter.cpp | 16 + core/src/services/CardPreviewService.cpp | 225 ++++++- core/src/services/CardSorter.cpp | 60 ++ docs/AGENTS.md | 5 +- docs/README.md | 6 +- docs/adding-a-new-game.md | 11 + docs/assets-and-info-apis.md | 77 ++- docs/assets/images/demo-ygo.png | Bin 0 -> 716852 bytes docs/caching.md | 167 +++++ tests/AGENTS.md | 10 +- tests/CMakeLists.txt | 3 + tests/card_filter_tests.cpp | 25 + tests/card_preview_service_tests.cpp | 590 ++++++++++++++++- tests/card_sorter_tests.cpp | 36 + tests/domain_json_tests.cpp | 33 + tests/local_preview_byte_cache_tests.cpp | 293 +++++++++ tests/magic_card_preview_source_tests.cpp | 29 +- tests/pokemon_card_preview_source_tests.cpp | 26 +- tests/set_service_tests.cpp | 31 +- tests/yugioh_card_preview_source_tests.cpp | 613 ++++++++++++++++++ tests/yugioh_set_source_tests.cpp | 62 ++ ui_wx/AGENTS.md | 17 +- ui_wx/CMakeLists.txt | 4 + ui_wx/assets/ygo_card_back.png | Bin 0 -> 189898 bytes ui_wx/include/ccm/ui/AppContext.hpp | 1 + ui_wx/include/ccm/ui/BaseCardEditDialog.hpp | 33 + .../include/ccm/ui/BaseSelectedCardPanel.hpp | 76 ++- ui_wx/include/ccm/ui/YuGiOhCardEditDialog.hpp | 73 +++ ui_wx/include/ccm/ui/YuGiOhCardListPanel.hpp | 22 + ui_wx/include/ccm/ui/YuGiOhGameView.hpp | 62 ++ .../ccm/ui/YuGiOhSelectedCardPanel.hpp | 24 + ui_wx/src/ImageViewerDialog.cpp | 8 +- ui_wx/src/MainFrame.cpp | 2 +- ui_wx/src/YuGiOhCardEditDialog.cpp | 378 +++++++++++ ui_wx/src/YuGiOhCardListPanel.cpp | 69 ++ ui_wx/src/YuGiOhGameView.cpp | 209 ++++++ ui_wx/src/YuGiOhSelectedCardPanel.cpp | 89 +++ 68 files changed, 4994 insertions(+), 134 deletions(-) create mode 100644 core/include/ccm/domain/YuGiOhCard.hpp create mode 100644 core/include/ccm/games/yugioh/YuGiOhCardPreviewSource.hpp create mode 100644 core/include/ccm/games/yugioh/YuGiOhGameModule.hpp create mode 100644 core/include/ccm/games/yugioh/YuGiOhSetSource.hpp create mode 100644 core/include/ccm/infra/LocalPreviewByteCache.hpp create mode 100644 core/include/ccm/ports/IPreviewByteCache.hpp create mode 100644 core/include/ccm/util/YuGiOhPrintingSlot.hpp create mode 100644 core/src/domain/YuGiOhCard.cpp create mode 100644 core/src/games/yugioh/YuGiOhCardPreviewSource.cpp create mode 100644 core/src/games/yugioh/YuGiOhGameModule.cpp create mode 100644 core/src/games/yugioh/YuGiOhSetSource.cpp create mode 100644 core/src/infra/LocalPreviewByteCache.cpp create mode 100644 docs/assets/images/demo-ygo.png create mode 100644 docs/caching.md create mode 100644 tests/local_preview_byte_cache_tests.cpp create mode 100644 tests/yugioh_card_preview_source_tests.cpp create mode 100644 tests/yugioh_set_source_tests.cpp create mode 100644 ui_wx/assets/ygo_card_back.png create mode 100644 ui_wx/include/ccm/ui/YuGiOhCardEditDialog.hpp create mode 100644 ui_wx/include/ccm/ui/YuGiOhCardListPanel.hpp create mode 100644 ui_wx/include/ccm/ui/YuGiOhGameView.hpp create mode 100644 ui_wx/include/ccm/ui/YuGiOhSelectedCardPanel.hpp create mode 100644 ui_wx/src/YuGiOhCardEditDialog.cpp create mode 100644 ui_wx/src/YuGiOhCardListPanel.cpp create mode 100644 ui_wx/src/YuGiOhGameView.cpp create mode 100644 ui_wx/src/YuGiOhSelectedCardPanel.cpp diff --git a/AGENTS.md b/AGENTS.md index ae51c50..f63a622 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,7 @@ C++ desktop implementation (originally based on a Tauri Rust+TS version) — sin ## Project structure - `core/` — `ccm_core` static library. UI-agnostic domain, ports, services, infra adapters. **Never** depends on wxWidgets. See `core/AGENTS.md`. -- `ui_wx/` — `ccm_ui_wx` static library. The only place that touches wxWidgets. See `ui_wx/AGENTS.md`. +- `ui_wx/` — `ccm_ui_wx` static library. The only place that touches wxWidgets. See `ui_wx/AGENTS.md`. Ships `ui_wx/assets/ygo_card_back.png` (Yu-Gi-Oh! offline preview fallback); `app/CMakeLists.txt` copies it to `/assets/` when linking `ccm`. - `app/` — `ccm` executable (composition root). Wires concrete adapters into services. See `app/AGENTS.md`. - `tests/` — `ccm_core_tests` doctest binary. Pure-logic tests against in-memory fakes. See `tests/AGENTS.md`. - `docs/` — long-form developer documentation. Start with `docs/adding-a-new-game.md` for the canonical end-to-end procedure for extending the app with a new TCG. See `docs/AGENTS.md`. @@ -52,13 +52,13 @@ Run from the **workspace root**. - Run the app: `./build/bin/ccm3` (`.\build\bin\ccm3.exe` on Windows) - Run tests (CCM_BUILD_TESTS defaults to ON): - `ctest --test-dir build --output-on-failure` — current baseline: **86 cases / 211 assertions, all green**. + `ctest --test-dir build --output-on-failure` — current baseline: **180 tests, all green**. - Build tests only: `cmake --build build --target ccm_core_tests` -> **Windows runtime note**: `cpr` is built as a shared library, so `build/bin/` ends up with `libcpr.dll`, `libcurl.dll`, `libzlib.dll` next to `ccm.exe`. With MinGW-w64 you also need `libgcc_s_seh-1.dll` and `libstdc++-6.dll` from your MSYS2 UCRT64 `bin/` on `PATH` (or copied alongside the exe) to launch from Explorer. +> **Windows runtime note**: `cpr` is built as a shared library, so `build/bin/` ends up with `libcpr.dll`, `libcurl.dll`, `libzlib.dll` next to `ccm3.exe`. With MinGW-w64 you also need `libgcc_s_seh-1.dll` and `libstdc++-6.dll` from your MSYS2 UCRT64 `bin/` on `PATH` (or copied alongside the exe) to launch from Explorer. > -> **Windows rebuild note**: linking `ccm.exe` fails with `Permission denied` if the app is still running/locked. Close `ccm.exe` before rebuilding app targets. +> **Windows rebuild note**: linking `ccm3.exe` fails with `Permission denied` if the app is still running/locked. Close `ccm3.exe` before rebuilding app targets. > > **Windows cold-start note**: first launch right after a fresh build is often slower than subsequent launches due to cold file cache and Windows security scanning (Defender/SmartScreen) on the new exe/dll set. Warm launches are the meaningful baseline for app-side perf changes. @@ -69,8 +69,14 @@ Run from the **workspace root**. - Preserve "select first row on startup" behavior without blocking first paint by scheduling the initial selection with `CallAfter(...)` instead of selecting synchronously during row rebuild. - Avoid repeated set-list loads when opening Add/Edit: cache Magic sets in `MainFrame` and reuse them in `CardEditDialog`. - Pass preloaded set data to dialogs by pointer/reference, not by value, to avoid copying large vectors on every open. +- `MainFrame` default window size is **1210×770** (`ui_wx/src/MainFrame.cpp`). +- Saving from **Edit** in `BaseCardEditDialog`: themed Yes/No confirmation when the card changed versus the snapshot taken at dialog open; Add mode does not prompt. - While constructing/populating dialogs with many controls/choices, wrap with `Freeze()`/`Thaw()` and append choice items in bulk (`wxArrayString`) to reduce layout/repaint churn. - Keep selected-card preview usable when remote lookup fails: show a per-game card-back fallback image (CCM2 parity), not a blank preview panel. +- Card preview round-trips are slow (HTTPS handshake + image GET, often two hosts). The three amortizations in place — all game-agnostic — must stay. The full update mechanic (key-driven invalidation, positive↔negative same-key replacement, eviction, manual cache clearing) is documented in `docs/caching.md` → "Updating cached entries"; do **not** add a side-channel `clearCache(...)` API to `CardPreviewService` — keep updates flowing through cache keys so the in-memory and disk tiers stay aligned automatically. + - `CardPreviewService` keeps a bounded in-memory LRU (`kCacheCapacity`) of preview bytes keyed by `(game, name, setId, setNo)` plus a by-URL cache for the per-game card-back fallback. Re-selecting a row already viewed in this session is decode-only, no HTTP. Source failures are split by `PreviewLookupError::Kind`: `NotFound` (the upstream answered cleanly that the record has no image) is **negative-cached** so subsequent clicks short-circuit to the card-back placeholder without HTTP, while `Transient` (HTTP/network/parse) is **never** cached so a brief outage can recover on the next selection. Editing a lookup-relevant field changes the cache key and invalidates the negative entry automatically. + - `LocalPreviewByteCache` (port `IPreviewByteCache`) extends the LRU with an on-disk byte cache rooted at `/.cache/preview-cache/` — **next to the executable, in the same scope as `config.json`, NOT inside the user-configurable `dataStorage` path** so previews don't follow the user's collection when the data-storage path is reconfigured (the umbrella `.cache/` directory is reserved for any future computed-from-network caches). Both positive previews and `NotFound` verdicts **survive app restarts**. Lookup order is memory → disk → source/HTTP; a disk hit (positive or negative) is promoted into the in-memory tier so the follow-up call stays decode-only. Total `.bin` payload size is capped (default 64 MiB) and oldest-by-mtime entries are evicted when a new write would exceed the cap; tiny `.neg` markers are not counted against the cap. The persistent tier is fire-and-forget: any I/O error is swallowed by the adapter so disk problems can never break the preview path. + - `CprHttpClient` owns a single long-lived `cpr::Session` (and therefore a single libcurl easy handle) with keep-alive enabled, so repeat HTTPS calls to the same host (`api.scryfall.com`, `api.pokemontcg.io`, `db.ygoprodeck.com`, `yugipedia.com`, `ms.yugipedia.com`) reuse the existing TLS connection. Concurrent callers are serialized through a mutex — easy handles are not thread-safe and the preview path is single-flight already. Session default **`Accept: */*`** keeps JSON info APIs and binary image GETs on one client; **`CardPreviewService::fetchAndCache`** rejects empty HTTP bodies so a bogus 200 cannot masquerade as a cached preview. ## Windows UI theming guardrails @@ -83,7 +89,7 @@ Run from the **workspace root**. - For button hover/pressed contrast fixes in dark theme, prefer explicit state handling in `Theme.cpp`; native Windows button states can override wx colors and produce unreadable white-on-white combinations. - Keep button theming state dynamic across theme switches (Dark <-> Light). Avoid lambdas that permanently capture old theme colors or behavior; stale handlers can make light-mode buttons look wrong. - After changing `ui_wx` theming behavior, rebuild the final app target (`cmake --build build --target ccm --parallel`), not just `ccm_ui_wx`, before validating runtime behavior. -- If linker fails with `Permission denied` on `build/bin/ccm.exe`, the app is still running; close it before rebuilding. +- If linker fails with `Permission denied` on `build/bin/ccm3.exe`, the app is still running; close it before rebuilding. ## Required follow-ups diff --git a/README.md b/README.md index 7248f37..a913004 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,11 @@ Card Collection Manager 3 is an extensible desktop application for managing trading card game collections. It is designed as a practical way to track cards and manage per-card images for large collections, with local per-game data, set synchronization workflows, and a desktop-first UX. The app preserves the established JSON layout from earlier CCM versions so existing collections stay compatible. +Currently, the application supports the following TCGs: +- Magic the Gathering +- Pokemon TCG +- Yu-Gi-Oh! + ## Screenshots ### Magic The Gathering @@ -16,6 +21,11 @@ Card Collection Manager 3 is an extensible desktop application for managing trad ![CCM3 Demo - Pokemon](docs/assets/images/demo-pkm.png) +### Yu-Gi-Oh! + +![CCM3 Demo - YuGiOh](docs/assets/images/demo-ygo.png) + + ## Migrating From CCM1 And CCM2 CCM3 reads the established collection layout, so data from both CCM1 and CCM2 can be copied into the configured CCM3 data directory. diff --git a/app/AGENTS.md b/app/AGENTS.md index 0dd578b..3b3a523 100644 --- a/app/AGENTS.md +++ b/app/AGENTS.md @@ -5,20 +5,23 @@ The `ccm` executable — composition root only. The single place where concrete ## File pointers - `main.cpp` — the entire app. Defines `CcmApp : public wxApp`, builds the dependency graph in `OnInit()`, then hands an `AppContext` to `MainFrame`. -- `CMakeLists.txt` — declares the `ccm` target. Sets `WIN32_EXECUTABLE TRUE` on Windows so no console window appears. Links `ccm_core`, `ccm_ui_wx`, `ccm_warnings`. +- `CMakeLists.txt` — declares the `ccm` target. Sets `WIN32_EXECUTABLE TRUE` on Windows so no console window appears. Links `ccm_core`, `ccm_ui_wx`, `ccm_warnings`. **`POST_BUILD`**: creates `$/assets/` and copies `ui_wx/assets/ygo_card_back.png` there so Yu-Gi-Oh! preview fallbacks work offline (see `BaseSelectedCardPanel` / `docs/assets-and-info-apis.md`). ## Conventions -1. **Composition root is the only place** that names concrete adapters: `StdFileSystem`, `CprHttpClient`, `JsonCollectionRepository`, `JsonCollectionRepository`, `JsonSetRepository`, `LocalImageStore`, `MagicGameModule`, `PokemonGameModule`, `MagicGameView`, `PokemonGameView`, etc. If a concrete adapter type appears anywhere else in the codebase, move the wiring here. +1. **Composition root is the only place** that names concrete adapters: `StdFileSystem`, `CprHttpClient`, `JsonCollectionRepository`, `JsonCollectionRepository`, `JsonCollectionRepository`, `JsonSetRepository`, `LocalImageStore`, `LocalPreviewByteCache`, `MagicGameModule`, `PokemonGameModule`, `YuGiOhGameModule`, `MagicGameView`, `PokemonGameView`, `YuGiOhGameView`, etc. If a concrete adapter type appears anywhere else in the codebase, move the wiring here. 2. **Member declaration order in `CcmApp` matters** — destruction is reverse, so a member that depends on another (e.g. `magicCollSvc_` depends on `magicRepo_` and `imgStore_`; `previewSvc_` depends on `http_` and is consumed by `ctx_`; `magicView_` depends on the typed `magicCollSvc_` and the shared services) must be declared **after** its deps. Do not reorder casually. 3. **Use `std::unique_ptr` for everything owned** by `CcmApp`. The `AppContext` then holds plain references into those owned objects, plus a vector of `IGameView*` raw pointers (the `unique_ptr<>`s for the views are the actual owners; the vector just describes the active set). 4. **Game-to-directory mapping** lives in `dirNameForGame(Game)` (anonymous namespace). When adding a new game, extend this function — it is wired into all three repositories (`JsonCollectionRepository`, `JsonSetRepository`, `LocalImageStore`). 5. **`config.json` location** is the executable's parent directory, resolved via `wxStandardPaths::Get().GetExecutablePath()`. Do not change this — existing installations rely on that location. 6. **Image format handlers** must be registered via `wxImage::AddHandler(new wxPNGHandler)` and `new wxJPEGHandler` before any image is loaded. They are added in `OnInit()` first thing — keep it that way. 7. **Card preview source ownership** lives inside the `IGameModule`. The composition root never constructs an `CardPreviewSource` directly; it calls `previewSvc_->registerModule(*Mod_)` and the service pulls the module's preview source via `IGameModule::cardPreviewSource()` (returning `nullptr` is silently skipped). +8. **One `CprHttpClient` per app, shared by every consumer.** The single `http_` instance is handed to `SetService`, `CardPreviewService`, and every per-game module. Do **not** construct a second `CprHttpClient` (or pass `cpr::Get(...)` directly) from anywhere — the adapter holds a long-lived `cpr::Session` whose connection cache + TLS keep-alive is what makes repeat lookups fast (game-agnostic; see `core/AGENTS.md` convention 11). The shared instance also gives `CardPreviewService`'s in-memory LRU a single source of truth to cache against. +9. **One `LocalPreviewByteCache` per app**, rooted at `/.cache/preview-cache/` — i.e. **next to the executable**, in the same scope as `config.json`. **Do not** root the cache at `config_->current().dataStorage`: the user's data-storage path is user-configurable at runtime and is meant for the user's collection (cards, scans, set lists). Previews are downloaded-from-network artifacts that (a) must not move when the user relocates their collection, (b) must not be uploaded/synced together with the user's data dir, and (c) must not survive a fresh install elsewhere on disk. Pinning the cache to `exeDir` is what gives those properties without writing extra plumbing for each data-storage flow. The umbrella `.cache/` directory is reserved for any future computed-from-network caches (set-list snapshots, etc.); the leading dot keeps it out of the way for users poking around the install folder. Cache updates flow entirely through cache keys: `CardPreviewService` invalidates entries automatically when the cache key changes (record edits) and rewrites them when a same-key resolution flips between positive and negative — there is no `clearCache(...)` API. To wipe the cache manually, delete `/.cache/`; reinstalling / moving the executable also resets the cache by design. Construct the cache after `ConfigService` (so the dependency graph is the same as before; the cache itself only needs `*fs_` and the resolved `exeDir`) and before `CardPreviewService` (so the service can hold a stable raw pointer); declare the member after `config_`/`fs_` and before `previewSvc_` to keep destruction order correct. See `core/AGENTS.md` convention 10 and `docs/caching.md` ("Updating cached entries") for the full cache shape, policy, and update mechanic. ## Required follow-ups +- The **`POST_BUILD` copy of `ygo_card_back.png`** must stay in sync with `ui_wx/assets/`; if you relocate install layout or add more bundled assets, mirror the pattern (`make_directory` + `copy_if_different`) and document under `docs/assets-and-info-apis.md` / `ui_wx/AGENTS.md`. - After adding a new game module you **must**: (1) add a `unique_ptr<GameModule>` member in declaration-order-correct position, (2) construct it in `OnInit()`, (3) call `setSvc_->registerModule(Mod_.get())`, (4) call `previewSvc_->registerModule(*Mod_)` (no-op when the module has no preview source), (5) extend `dirNameForGame`, (6) add a typed `JsonCollectionRepository<Card>` + `CollectionService<Card>` if the game has a custom card type, (7) construct a `GameView` and append its raw pointer to the `AppContext::gameViews` vector, (8) make sure the view's `unique_ptr<>` member sits **after** all its deps (typed services + `IGameModule`). - After adding a new core service you **must** add a `unique_ptr<...>` member, construct it in `OnInit()` after its deps, and add a reference field to `AppContext`. - After adding a new dependency edge you **must** verify destruction order is still correct: deps **before** dependents in the member list. @@ -32,4 +35,4 @@ The `ccm` executable — composition root only. The single place where concrete ## Commands - Build the binary: `cmake --build build --target ccm` -- Run on Windows / MinGW-w64: `.\build\bin\ccm.exe`. The cpr/curl/zlib DLLs are placed next to the exe automatically; the MSYS2 UCRT64 runtime (`libgcc_s_seh-1.dll`, `libstdc++-6.dll`) needs to be on `PATH` (e.g. `P:\msys2\msys64\ucrt64\bin`). On verified runs the exe loads under window title "Card Collection Manager 3". +- Run on Windows / MinGW-w64: `.\build\bin\ccm3.exe`. The cpr/curl/zlib DLLs are placed next to the exe automatically; the MSYS2 UCRT64 runtime (`libgcc_s_seh-1.dll`, `libstdc++-6.dll`) needs to be on `PATH` (e.g. `P:\msys2\msys64\ucrt64\bin`). On verified runs the exe loads under window title "Card Collection Manager 3". diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 8eee632..5e7382d 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -18,3 +18,10 @@ target_link_libraries(ccm ccm_ui_wx ccm_warnings ) + +# Yu-Gi-Oh! preview fallback image (used when network card-back URLs fail). +add_custom_command(TARGET ccm POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "$/assets" + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${CMAKE_SOURCE_DIR}/ui_wx/assets/ygo_card_back.png" + "$/assets/ygo_card_back.png") diff --git a/app/main.cpp b/app/main.cpp index 3cb1eb7..2ba87b1 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -4,12 +4,15 @@ #include "ccm/domain/MagicCard.hpp" #include "ccm/domain/PokemonCard.hpp" +#include "ccm/domain/YuGiOhCard.hpp" #include "ccm/games/magic/MagicGameModule.hpp" #include "ccm/games/pokemon/PokemonGameModule.hpp" +#include "ccm/games/yugioh/YuGiOhGameModule.hpp" #include "ccm/infra/CprHttpClient.hpp" #include "ccm/infra/JsonCollectionRepository.hpp" #include "ccm/infra/JsonSetRepository.hpp" #include "ccm/infra/LocalImageStore.hpp" +#include "ccm/infra/LocalPreviewByteCache.hpp" #include "ccm/infra/StdFileSystem.hpp" #include "ccm/services/CardPreviewService.hpp" #include "ccm/services/CollectionService.hpp" @@ -20,6 +23,7 @@ #include "ccm/ui/MagicGameView.hpp" #include "ccm/ui/MainFrame.hpp" #include "ccm/ui/PokemonGameView.hpp" +#include "ccm/ui/YuGiOhGameView.hpp" #include #include @@ -40,6 +44,7 @@ std::string dirNameForGame(ccm::Game g) { switch (g) { case ccm::Game::Magic: return "magic"; case ccm::Game::Pokemon: return "pokemon"; + case ccm::Game::YuGiOh: return "yugioh"; } return "magic"; } @@ -74,11 +79,14 @@ public: http_ = std::make_unique(); magicMod_ = std::make_unique(*http_); pokeMod_ = std::make_unique(*http_); + ygoMod_ = std::make_unique(*http_); magicRepo_ = std::make_unique>( *fs_, *config_, &dirNameForGame); pokeRepo_ = std::make_unique>( *fs_, *config_, &dirNameForGame); + ygoRepo_ = std::make_unique>( + *fs_, *config_, &dirNameForGame); setRepo_ = std::make_unique(*fs_, *config_, &dirNameForGame); imgStore_ = std::make_unique(*fs_, *config_, &dirNameForGame); @@ -87,19 +95,39 @@ public: *magicRepo_, *imgStore_); pokeCollSvc_ = std::make_unique>( *pokeRepo_, *imgStore_); + ygoCollSvc_ = std::make_unique>( + *ygoRepo_, *imgStore_); setSvc_ = std::make_unique(*setRepo_); setSvc_->registerModule(magicMod_.get()); setSvc_->registerModule(pokeMod_.get()); + setSvc_->registerModule(ygoMod_.get()); - previewSvc_ = std::make_unique(*http_); + // Disk-backed preview cache lives next to the executable, in the same + // location scope as config.json - NOT inside the user's data-storage + // directory. Rationale: previews are downloaded artifacts, not user + // data, so they should not move when the user relocates their + // collection (data-storage path can be reconfigured at runtime), and + // they should not be uploaded together with the user's collection + // when the data dir is backed up / synced. The umbrella ".cache/" + // directory is reserved for any future computed-from-network caches + // (set-list snapshots, etc.); the leading dot keeps it out of the way + // for users poking around the install folder. Constructed before + // previewSvc_ so the service can hold a stable raw pointer to it. + previewCache_ = std::make_unique( + *fs_, + exeDir / ".cache" / "preview-cache"); + previewSvc_ = std::make_unique(*http_, previewCache_.get()); previewSvc_->registerModule(*magicMod_); previewSvc_->registerModule(*pokeMod_); + previewSvc_->registerModule(*ygoMod_); // Per-game UI bundles. Order here is the order shown in the Game menu. magicView_ = std::make_unique( *config_, *magicCollSvc_, *setSvc_, *imgSvc_, *previewSvc_, *magicMod_); pokeView_ = std::make_unique( *config_, *pokeCollSvc_, *setSvc_, *imgSvc_, *previewSvc_, *pokeMod_); + ygoView_ = std::make_unique( + *config_, *ygoCollSvc_, *setSvc_, *imgSvc_, *previewSvc_, *ygoMod_); ctx_ = std::make_unique(ccm::ui::AppContext{ *config_, @@ -108,7 +136,8 @@ public: *previewSvc_, *magicMod_, *pokeMod_, - { magicView_.get(), pokeView_.get() }, + *ygoMod_, + { magicView_.get(), pokeView_.get(), ygoView_.get() }, }); auto* frame = new ccm::ui::MainFrame(*ctx_); @@ -128,17 +157,22 @@ private: std::unique_ptr http_; std::unique_ptr magicMod_; std::unique_ptr pokeMod_; + std::unique_ptr ygoMod_; std::unique_ptr> magicRepo_; std::unique_ptr> pokeRepo_; + std::unique_ptr> ygoRepo_; std::unique_ptr setRepo_; std::unique_ptr imgStore_; std::unique_ptr imgSvc_; std::unique_ptr> magicCollSvc_; std::unique_ptr> pokeCollSvc_; + std::unique_ptr> ygoCollSvc_; std::unique_ptr setSvc_; + std::unique_ptr previewCache_; std::unique_ptr previewSvc_; std::unique_ptr magicView_; std::unique_ptr pokeView_; + std::unique_ptr ygoView_; std::unique_ptr ctx_; }; diff --git a/core/AGENTS.md b/core/AGENTS.md index 2b126b4..ed4a3f0 100644 --- a/core/AGENTS.md +++ b/core/AGENTS.md @@ -4,11 +4,11 @@ ## Layer pointers -- `include/ccm/domain/` — POD value types: `Enums`, `Set`, `MagicCard`, `PokemonCard`, `Configuration`. Each has `to_json` / `from_json` defined in the matching `src/domain/*.cpp`. -- `include/ccm/ports/` — interfaces (`IHttpClient`, `IFileSystem`, `ICollectionRepository`, `ISetRepository`, `IImageStore`, `ICardPreviewSource`). All seams the services depend on. Add new ports here when adding new external concerns. +- `include/ccm/domain/` — POD value types: `Enums`, `Set`, `MagicCard`, `PokemonCard`, `YuGiOhCard`, `Configuration`. Each has `to_json` / `from_json` defined in the matching `src/domain/*.cpp`. +- `include/ccm/ports/` — interfaces (`IHttpClient`, `IFileSystem`, `ICollectionRepository`, `ISetRepository`, `IImageStore`, `ICardPreviewSource`, `IPreviewByteCache`). All seams the services depend on. Add new ports here when adding new external concerns. - `include/ccm/services/` — high-level operations: `ConfigService`, `CollectionService` (header-only template), `SetService`, `ImageService`, `CardPreviewService`, `CardSorter` (free functions; per-column sort comparators that mirror established table sorting behavior — UI-agnostic so they can be unit-tested directly), `CardFilter` (free functions; case-insensitive substring row matcher restricted to each game's `tableFields` valueKey list). They depend only on ports. -- `include/ccm/infra/` — concrete adapters: `CprHttpClient`, `StdFileSystem`, `JsonCollectionRepository` (header-only template), `JsonSetRepository`, `LocalImageStore`. -- `include/ccm/games/` — `IGameModule` + per-game modules. `IGameModule` consolidates the per-game seams: every module owns an `ISetSource` (required) and may own an `ICardPreviewSource` (optional, default `nullptr`). `magic/` and `pokemon/` are the reference implementations — both expose a fully working set source + card preview source. +- `include/ccm/infra/` — concrete adapters: `CprHttpClient`, `StdFileSystem`, `JsonCollectionRepository` (header-only template), `JsonSetRepository`, `LocalImageStore`, `LocalPreviewByteCache`. +- `include/ccm/games/` — `IGameModule` + per-game modules. `IGameModule` consolidates the per-game seams: every module owns an `ISetSource` (required) and may own an `ICardPreviewSource` (optional, default `nullptr`). `magic/`, `pokemon/`, and `yugioh/` are the reference implementations — all three expose a fully working set source + card preview source. - `include/ccm/util/` — `Result.hpp` (the sum type), `FsNames.hpp` (filename munging ported from `util/fs.rs`). - `src/` mirrors `include/ccm/` for non-template implementations. @@ -25,6 +25,9 @@ 6. **Compiler warnings**: every target in this package links `ccm_warnings` `PRIVATE`. Treat warnings as errors locally during dev (`-Werror` is opt-in but encouraged). 7. **No `wx/...` includes** in headers or sources here. Verify with `rg "wx/" core/` — must be empty. 8. **HTTP query strings must be percent-encoded** before they reach `IHttpClient::get`. `cpr::Url` does **not** encode the URL string we hand it. See `MagicCardPreviewSource::buildSearchUrl` for the canonical pattern (RFC 3986 unreserved-set encoder). `IHttpClient::get` accepts arbitrary bytes back — `Result` is a binary buffer, not text, so callers can use it for image payloads directly. +9. **Yu-Gi-Oh! preview uses Yugipedia, not YGOPRODeck.** `YuGiOhCardPreviewSource::fetchImageUrl` queries Yugipedia's MediaWiki API with a batched list of deterministic file names (`----.`) so per-printing reprints with shared passcodes (LOB Blue-Eyes vs SDK Blue-Eyes, …) resolve to genuinely different scans. Region candidates are **always English** (`EN`/`NA`/`EU`/`AU`) regardless of `card.language`; localized scans are not queried. YGOPRODeck remains as a last-resort fallback (see `parseFallbackImageUrl`) for cards Yugipedia hasn't scanned yet, and as the source for `detectFirstPrint` / `detectPrintVariants` (`parsePrintVariants` enumerates distinct printings for the edit dialog). **Do not** restore a YGOPRODeck-only image path: that endpoint's `card_images` array is keyed by art-treatment passcode, not by physical printing, and adding `cardset=` only reorders the same passcode list (alt-art often gets promoted) without ever surfacing the per-printing scan. The YGO source therefore needs the printed edition flag to be plumbed through; `YuGiOhSelectedCardPanel::previewKey()` packs it into the third tuple slot as `||||<1E|UE>` so the candidate list can prioritize the correct edition without changing the generic `ICardPreviewSource` interface. +10. **Preview byte cache (`CardPreviewService`) is by `(game, name, setId, setNo)` across two tiers, with classified failure caching and a single update mechanic.** Successful `fetchPreviewBytes` results and successful `fetchImageBytesByUrl` results are stored first in a bounded in-memory LRU (`kCacheCapacity` entries, mutex-protected — the panel calls into the service from a worker thread) and then in an optional persistent byte cache (`IPreviewByteCache`, normally `LocalPreviewByteCache` rooted at `/.cache/preview-cache/` — next to the executable, **not** under `dataStorage`, so previews don't follow the user's collection when the data-storage path is reconfigured). **`fetchAndCache` rejects empty response bodies** (returns error, no tier write) so a degenerate HTTP 200 cannot fill the LRU with unusable entries. Lookup order is **memory → disk → source/HTTP**, and a disk hit (positive *or* negative) is promoted into the in-memory tier on its way to the caller so the next selection of the same row stays decode-only. **Failures are split by `PreviewLookupError::Kind`**: `NotFound` is negative-cached in both tiers (memory `CacheEntry::negative=true`, disk `.neg` marker) so the user gets an instant card-back on every subsequent click for cards whose printing genuinely has no upstream image; `Transient` (HTTP/network/parse failures) is **never** cached so a brief outage cannot permanently disable previews. Per-game `ICardPreviewSource::fetchImageUrl` implementations must classify their errors honestly — `NotFound` only when the upstream answered cleanly with no match / no image variants; anything that could be the network or a schema deviation is `Transient`. **The cache update mechanic is entirely key-driven and has no side-channel API:** (a) the user editing any lookup-relevant field of a card record changes the cache key, so the next selection misses both tiers and re-runs the source — this is how a stale negative entry gets dislodged after the user fixes the record, with no manual invalidation call needed; (b) a same-key resolution that flips between positive and negative outcomes overwrites the existing entry in both tiers (`store` removes any `.neg` for that hash; `storeNegative` removes any `.bin`) so `.bin` and `.neg` for the same hash are never co-resident; (c) eviction handles passive aging (LRU on the in-memory tier; oldest-by-mtime `.bin` files on the disk tier; `.neg` markers don't count against the size cap and are not actively evicted). **Do not add a `clearCache(...)` / `invalidate(...)` method** to `CardPreviewService`: the cache invariants depend on memory and disk staying aligned through the same write paths, and any side-channel API would just be a new way for future code to forget the disk tier. If you add a new lookup disambiguator (for example a future `editionTag` slot), pack it into one of the existing key fields (see `YuGiOhSelectedCardPanel::previewKey()`'s `||`-separated trailing fields) so editing the field continues to invalidate cached entries automatically. The persistent tier is **fire-and-forget**: the adapter swallows I/O errors so a flaky or full disk degrades the experience to a fresh-install warm-up, never to a broken preview path. +11. **`CprHttpClient` keeps one persistent `cpr::Session` for the app's lifetime.** All callers (set sources, preview sources, fallback URL fetch, auto-detect) share the same libcurl easy handle so connections to repeat hosts (`api.scryfall.com`, `api.pokemontcg.io`, `db.ygoprodeck.com`, `yugipedia.com`, `ms.yugipedia.com`) are reused with TLS keep-alive. Default request headers use **`Accept: */*`** so JSON endpoints and binary image downloads share one session without pinning every GET to `application/json`. The session is not thread-safe — every `get(...)` is serialized through an internal mutex. **Do not** construct a new `cpr::Session` (or `cpr::Get(...)`) per call: that throws away the connection cache and re-pays the TLS handshake every time. If you need richer behavior on the port (POST, headers per call, …) extend `IHttpClient` and the adapter while keeping the single-session ownership intact. ## Adding a new game diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 3fa3ecf..984bdaa 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -6,6 +6,7 @@ add_library(ccm_core STATIC src/domain/Set.cpp src/domain/MagicCard.cpp src/domain/PokemonCard.cpp + src/domain/YuGiOhCard.cpp src/domain/Configuration.cpp src/services/ConfigService.cpp @@ -19,6 +20,7 @@ add_library(ccm_core STATIC src/infra/StdFileSystem.cpp src/infra/JsonSetRepository.cpp src/infra/LocalImageStore.cpp + src/infra/LocalPreviewByteCache.cpp src/games/magic/MagicSetSource.cpp src/games/magic/MagicCardPreviewSource.cpp @@ -26,6 +28,9 @@ add_library(ccm_core STATIC src/games/pokemon/PokemonSetSource.cpp src/games/pokemon/PokemonCardPreviewSource.cpp src/games/pokemon/PokemonGameModule.cpp + src/games/yugioh/YuGiOhSetSource.cpp + src/games/yugioh/YuGiOhCardPreviewSource.cpp + src/games/yugioh/YuGiOhGameModule.cpp src/util/FsNames.cpp ) diff --git a/core/include/ccm/domain/Enums.hpp b/core/include/ccm/domain/Enums.hpp index acdfc8f..22c6cbd 100644 --- a/core/include/ccm/domain/Enums.hpp +++ b/core/include/ccm/domain/Enums.hpp @@ -18,6 +18,7 @@ namespace ccm { enum class Game { Magic, Pokemon, + YuGiOh, }; enum class Language { @@ -56,7 +57,7 @@ std::optional languageFromString(std::string_view s) noexcept; std::optional conditionFromString(std::string_view s) noexcept; std::optional themeFromString(std::string_view s) noexcept; -const std::array& allGames() noexcept; +const std::array& allGames() noexcept; const std::array& allLanguages() noexcept; const std::array& allConditions() noexcept; const std::array& allThemes() noexcept; diff --git a/core/include/ccm/domain/YuGiOhCard.hpp b/core/include/ccm/domain/YuGiOhCard.hpp new file mode 100644 index 0000000..76a7110 --- /dev/null +++ b/core/include/ccm/domain/YuGiOhCard.hpp @@ -0,0 +1,38 @@ +#pragma once + +// YuGiOhCard - Yu-Gi-Oh card model with print-level metadata. + +#include "ccm/domain/Enums.hpp" +#include "ccm/domain/Set.hpp" + +#include + +#include +#include +#include + +namespace ccm { + +struct YuGiOhCard { + std::uint32_t id{0}; + std::uint8_t amount{1}; + std::string name; + Set set; + std::string setNo; + std::string rarity; + std::string rarityCode; + std::string note; + std::vector images; + Language language{Language::English}; + Condition condition{Condition::NearMint}; + bool firstEdition{false}; + bool signed_{false}; + bool altered{false}; + + friend bool operator==(const YuGiOhCard&, const YuGiOhCard&) = default; +}; + +void to_json(nlohmann::json& j, const YuGiOhCard& c); +void from_json(const nlohmann::json& j, YuGiOhCard& c); + +} // namespace ccm diff --git a/core/include/ccm/games/magic/MagicCardPreviewSource.hpp b/core/include/ccm/games/magic/MagicCardPreviewSource.hpp index 2c3e5ab..884e3ae 100644 --- a/core/include/ccm/games/magic/MagicCardPreviewSource.hpp +++ b/core/include/ccm/games/magic/MagicCardPreviewSource.hpp @@ -19,9 +19,10 @@ class MagicCardPreviewSource final : public ICardPreviewSource { public: explicit MagicCardPreviewSource(IHttpClient& http); - Result fetchImageUrl(std::string_view name, - std::string_view setId, - std::string_view setNo) override; + Result + fetchImageUrl(std::string_view name, + std::string_view setId, + std::string_view setNo) override; // Build the fully URL-encoded Scryfall search URL for the given card. // Exposed for unit testing and to keep encoding rules in one place. @@ -29,11 +30,13 @@ public: std::string_view setId); // Parse a Scryfall /cards/search response body and pull out the - // `data[0].image_uris.normal` URL. Returns an error result when no - // matching printing is found, when the JSON is malformed, or when the - // entry has no top-level `image_uris` (double-faced cards expose them - // on a face object - no fallback in this compatibility behavior either). - static Result parseResponse(const std::string& body); + // `data[0].image_uris.normal` URL. Errors are classified: + // - JSON parse failure or missing/non-array `data` => Transient. + // - Empty `data` array, missing top-level `image_uris`, or missing + // `image_uris.normal` => NotFound (the upstream answered, but the + // printing simply has no preview we can use). + static Result + parseResponse(const std::string& body); private: IHttpClient& http_; diff --git a/core/include/ccm/games/pokemon/PokemonCardPreviewSource.hpp b/core/include/ccm/games/pokemon/PokemonCardPreviewSource.hpp index 39adb33..febc2ff 100644 --- a/core/include/ccm/games/pokemon/PokemonCardPreviewSource.hpp +++ b/core/include/ccm/games/pokemon/PokemonCardPreviewSource.hpp @@ -19,9 +19,10 @@ class PokemonCardPreviewSource final : public ICardPreviewSource { public: explicit PokemonCardPreviewSource(IHttpClient& http); - Result fetchImageUrl(std::string_view name, - std::string_view setId, - std::string_view setNo) override; + Result + fetchImageUrl(std::string_view name, + std::string_view setId, + std::string_view setNo) override; // Build the fully URL-encoded Pokemon TCG search URL for the given card. // Exposed for unit testing and to keep encoding rules in one place. @@ -31,9 +32,11 @@ public: // Parse a Pokemon TCG /v2/cards response body and pull out the image URL // for the first matching card. Prefers `images.large`, falls back to - // `images.small`, and returns an error result if neither is present, the - // data array is empty, or the JSON is malformed. - static Result parseResponse(const std::string& body); + // `images.small`. Errors are classified: + // - JSON parse failure or missing/non-array `data` => Transient. + // - Empty `data` array or missing image variants => NotFound. + static Result + parseResponse(const std::string& body); private: IHttpClient& http_; diff --git a/core/include/ccm/games/yugioh/YuGiOhCardPreviewSource.hpp b/core/include/ccm/games/yugioh/YuGiOhCardPreviewSource.hpp new file mode 100644 index 0000000..a401c36 --- /dev/null +++ b/core/include/ccm/games/yugioh/YuGiOhCardPreviewSource.hpp @@ -0,0 +1,123 @@ +#pragma once + +#include "ccm/ports/ICardPreviewSource.hpp" +#include "ccm/ports/IHttpClient.hpp" + +#include +#include +#include + +namespace ccm { + +// YuGiOhCardPreviewSource - resolves preview images for Yu-Gi-Oh! cards. +// +// The image-preview path is backed by Yugipedia's MediaWiki API +// (https://yugipedia.com/api.php). Yugipedia hosts actual per-printing card +// scans, with deterministic file names of the shape +// `----.` (e.g. +// `BlueEyesWhiteDragon-LOB-EN-UR-UE.png` vs `BlueEyesWhiteDragon-SDK-NA-UR-UE.png`), +// which lets us return the right artwork for printings that share a passcode +// but have visibly different art - a case YGOPRODeck cannot disambiguate (its +// card_images array is keyed by art-treatment passcode, not by physical +// printing). +// +// The auto-detect-first-print path keeps using YGOPRODeck (`cardinfo.php`): +// that endpoint returns a richer set listing (with rarities and release +// dates) than Yugipedia, and we don't need image data for it. +// +// Region policy: always English (EN/NA/EU/AU) regardless of the card's +// stored Language. Localized scans are intentionally not queried so the user +// sees a consistent, well-stocked gallery (EN scans are the most complete). +class YuGiOhCardPreviewSource final : public ICardPreviewSource { +public: + explicit YuGiOhCardPreviewSource(IHttpClient& http); + + [[nodiscard]] bool supportsAutoDetectPrint() const noexcept override { return true; } + + Result + fetchImageUrl(std::string_view name, + std::string_view setId, + std::string_view setNo) override; + Result detectFirstPrint(std::string_view name, + std::string_view setId) override; + Result> detectPrintVariants(std::string_view name, + std::string_view setId) override; + + // ---- Yugipedia helpers (image preview path) ---------------------------- + + // Build the list of candidate Yugipedia file names to try, in priority + // order (most likely first). Always uses English regions; the caller may + // pass an empty rarityCode when the rarity is unknown, in which case the + // returned list will skip rarity in the filename. + static std::vector buildCandidateFilenames( + std::string_view name, + std::string_view setCode, + std::string_view rarityCode, + bool firstEdition); + + // Build a single MediaWiki batch query URL that asks for imageinfo.url + // for every filename. MediaWiki's `titles=` parameter joins page titles + // with `|`, so we issue exactly one HTTP call per preview lookup. + static std::string buildYugipediaQueryUrl( + const std::vector& filenames); + + // Parse a MediaWiki `query.pages` response and return the resolved URL of + // the first filename in `filenameOrder` that exists. Missing pages have + // the `missing` marker (no `imageinfo`); existing pages carry an + // `imageinfo[0].url` we forward verbatim. Errors are classified: + // - JSON parse failure or schema deviation => Transient. + // - Every candidate came back missing => NotFound. + static Result parseYugipediaResponse( + const std::string& body, + const std::vector& filenameOrder); + + // Strip a card name down to Yugipedia's image-slug shape: alphanumerics + // (and parentheses) only, no whitespace, no policy-banned punctuation. + static std::string normalizeName(std::string_view name); + + // Map a CCM3 rarity name (e.g. "Ultra Rare") to the Yugipedia rarity + // code used in image filenames (e.g. "UR"). Returns an empty string when + // the rarity is unknown; the caller treats that as "skip rarity". + static std::string rarityCodeFor(std::string_view rarityName); + + // Pull the set abbreviation out of a CCM3 setNo such as "LOB-005" or + // "LOB-DE005" - in both cases we want "LOB". Returns the trimmed input + // unchanged if no dash is present. + static std::string extractSetCode(std::string_view setNo); + + // ---- YGOPRODeck helpers (auto-detect path + fallback) ------------------ + + // Build a fuzzy-name `cardinfo.php` URL. `setName` may be empty for an + // unfiltered fuzzy lookup. Used by detectFirstPrint and by the + // standard-art fallback when Yugipedia has no scan for this printing. + static std::string buildSearchUrl(std::string_view name, + std::string_view setName); + + // Pick the standard artwork (card_images[0]) from a YGOPRODeck response, + // preferring the exact-name match. Used only as a last-resort fallback + // when Yugipedia returns nothing for any of our candidate filenames. + // Errors are classified: + // - JSON parse failure or schema deviation => Transient. + // - Empty `data` array, or matched cards without a usable image + // variant => NotFound. + static Result + parseFallbackImageUrl(const std::string& body, std::string_view name); + + // Pick the first printing for `preferredSetName` from a YGOPRODeck + // response. Drives the "Auto detect" button in the YGO edit dialog. + static Result parseFirstPrint(const std::string& body, + std::string_view preferredSetName); + + // Every `(set_code, set_rarity)` pair for cards whose name matches + // `wantedCardName` (case-insensitive). When `wantedCardName` is empty, + // scans every row in `data[]` like `parseFirstPrint` did historically. + static Result> + parsePrintVariants(const std::string& body, + std::string_view preferredSetName, + std::string_view wantedCardName); + +private: + IHttpClient& http_; +}; + +} // namespace ccm diff --git a/core/include/ccm/games/yugioh/YuGiOhGameModule.hpp b/core/include/ccm/games/yugioh/YuGiOhGameModule.hpp new file mode 100644 index 0000000..2e45ea8 --- /dev/null +++ b/core/include/ccm/games/yugioh/YuGiOhGameModule.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include "ccm/games/IGameModule.hpp" +#include "ccm/games/yugioh/YuGiOhCardPreviewSource.hpp" +#include "ccm/games/yugioh/YuGiOhSetSource.hpp" + +namespace ccm { + +class YuGiOhGameModule final : public IGameModule { +public: + explicit YuGiOhGameModule(IHttpClient& http); + + [[nodiscard]] Game id() const noexcept override { return Game::YuGiOh; } + [[nodiscard]] std::string dirName() const override { return "yugioh"; } + [[nodiscard]] std::string displayName() const override { return "Yu-Gi-Oh!"; } + + ISetSource& setSource() override { return setSource_; } + ICardPreviewSource* cardPreviewSource() noexcept override { return &previewSource_; } + +private: + YuGiOhSetSource setSource_; + YuGiOhCardPreviewSource previewSource_; +}; + +} // namespace ccm diff --git a/core/include/ccm/games/yugioh/YuGiOhSetSource.hpp b/core/include/ccm/games/yugioh/YuGiOhSetSource.hpp new file mode 100644 index 0000000..638e87e --- /dev/null +++ b/core/include/ccm/games/yugioh/YuGiOhSetSource.hpp @@ -0,0 +1,23 @@ +#pragma once + +// YuGiOhSetSource: ISetSource implementation for Yu-Gi-Oh via YGOPRODeck. + +#include "ccm/games/IGameModule.hpp" +#include "ccm/ports/IHttpClient.hpp" + +namespace ccm { + +class YuGiOhSetSource final : public ISetSource { +public: + static constexpr const char* kEndpoint = "https://db.ygoprodeck.com/api/v7/cardsets.php"; + + explicit YuGiOhSetSource(IHttpClient& http); + + Result> fetchAll() override; + static Result> parseResponse(const std::string& body); + +private: + IHttpClient& http_; +}; + +} // namespace ccm diff --git a/core/include/ccm/infra/CprHttpClient.hpp b/core/include/ccm/infra/CprHttpClient.hpp index e4c6b46..afba624 100644 --- a/core/include/ccm/infra/CprHttpClient.hpp +++ b/core/include/ccm/infra/CprHttpClient.hpp @@ -7,17 +7,31 @@ #include "ccm/ports/IHttpClient.hpp" #include +#include +#include + +namespace cpr { class Session; } namespace ccm { +// Concrete IHttpClient backed by libcpr/libcurl. The single owned +// `cpr::Session` keeps libcurl's connection pool alive across calls, so +// repeat HTTPS requests to the same host (api.scryfall.com, yugipedia.com, +// ms.yugipedia.com, …) reuse the existing TLS connection instead of paying +// for a fresh handshake every time. Concurrent calls are serialized through +// a mutex - libcurl easy handles are not thread-safe, and the preview path +// only fires one outbound request at a time anyway. class CprHttpClient final : public IHttpClient { public: explicit CprHttpClient(std::chrono::milliseconds timeout = std::chrono::milliseconds{30000}); + ~CprHttpClient() override; Result get(std::string_view url) override; private: std::chrono::milliseconds timeout_; + std::unique_ptr session_; + std::mutex sessionMutex_; }; } // namespace ccm diff --git a/core/include/ccm/infra/LocalPreviewByteCache.hpp b/core/include/ccm/infra/LocalPreviewByteCache.hpp new file mode 100644 index 0000000..2bdbcff --- /dev/null +++ b/core/include/ccm/infra/LocalPreviewByteCache.hpp @@ -0,0 +1,85 @@ +#pragma once + +// LocalPreviewByteCache - on-disk byte cache for CardPreviewService. +// +// Layout under the configured cache directory (composition root passes +// `/.cache/preview-cache/` - next to the executable, NOT under +// the user-configurable `dataStorage` path; see `docs/caching.md` and +// `app/AGENTS.md` for the rationale): +// .bin raw image bytes (PNG/JPEG payload), positive entries only +// .neg zero-byte marker file, negative entries only +// .idx one-line text sidecar holding the original cache key, +// used to detect (and reject) hash collisions so we never +// serve the wrong card's image and never honor a stale +// negative entry across collisions +// +// Positive vs. negative entries are mutually exclusive for a given hash: +// `store` removes any existing `.neg`, `storeNegative` removes any existing +// `.bin`, and `load` prefers `.bin` on the off chance both somehow co-exist. +// +// The cache is bounded by total payload bytes (sum of `.bin` sizes). When +// `store` would push it past the cap we evict by file mtime (oldest first) +// until back under the cap; the `.idx` sidecar of an evicted entry is +// removed too. Negative entries are tiny (effectively `.idx` only) and are +// not subject to the byte cap directly - their count is naturally bounded +// by the user's collection size since a negative entry only ever exists +// for a card the user has actually looked at and the upstream answered +// "no image" for. Reads update mtime via a touch on hit so frequently- +// viewed cards survive eviction. +// +// All filesystem mutations go through `IFileSystem` (so the in-memory +// fake works in tests). Size and mtime queries - which the port does not +// expose - use `std::filesystem` directly inside this adapter. Tests that +// need to drive eviction stay easy to write: just call `store` past the cap +// and check the survivors. + +#include "ccm/ports/IFileSystem.hpp" +#include "ccm/ports/IPreviewByteCache.hpp" + +#include +#include +#include +#include +#include + +namespace ccm { + +class LocalPreviewByteCache final : public IPreviewByteCache { +public: + // Default soft cap: ~64 MiB. A typical preview is 80-200 KiB, so this + // holds several hundred cards comfortably while keeping disk usage + // bounded for users with very large collections. + static constexpr std::size_t kDefaultMaxBytes = 64ull * 1024 * 1024; + + LocalPreviewByteCache(IFileSystem& fs, + std::filesystem::path cacheDir, + std::size_t maxBytes = kDefaultMaxBytes); + + [[nodiscard]] LoadResult load(std::string_view key) override; + void store(std::string_view key, const std::string& payload) override; + void storeNegative(std::string_view key) override; + + // Test-visible knob: total payload bytes currently on disk (recomputed + // from the directory listing so it stays accurate after external + // tampering). Negative-entry markers do not count toward the total. + [[nodiscard]] std::size_t currentSizeBytes(); + +private: + std::filesystem::path payloadPath(const std::string& hash) const; + std::filesystem::path negativePath(const std::string& hash) const; + std::filesystem::path indexPath(const std::string& hash) const; + + // Hex-encoded FNV-1a 64-bit hash of the key. We don't need cryptographic + // strength; the sidecar `.idx` file rejects collisions on load so the + // worst case is a one-time cache miss. + static std::string hashKey(std::string_view key); + + void evictIfNeededLocked(std::size_t incomingBytes); + + IFileSystem& fs_; + std::filesystem::path cacheDir_; + std::size_t maxBytes_; + std::mutex mutex_; +}; + +} // namespace ccm diff --git a/core/include/ccm/ports/ICardPreviewSource.hpp b/core/include/ccm/ports/ICardPreviewSource.hpp index 43a3046..fb9cfe4 100644 --- a/core/include/ccm/ports/ICardPreviewSource.hpp +++ b/core/include/ccm/ports/ICardPreviewSource.hpp @@ -12,9 +12,38 @@ #include #include +#include namespace ccm { +struct AutoDetectedPrint { + std::string setNo; + std::string rarity; +}; + +// Classified error returned by ICardPreviewSource::fetchImageUrl. The kind +// drives caching policy in CardPreviewService: +// +// NotFound -- the upstream answered cleanly that the card has no image +// (or no matching record at all). Safe to remember: the +// answer will not change until the user edits the card +// record itself, which automatically invalidates the cache +// key. Negative-cached so subsequent selections show the +// fallback card-back instantly without another HTTP call. +// +// Transient -- the upstream did not answer cleanly (HTTP / network / +// timeout failure, malformed response, parse error). The +// record may well have an image; we just couldn't see it +// this time. NOT cached, so the next selection retries. +// +// The `message` is opaque to the service and is forwarded to the UI as +// the existing free-form `Result::error()` string. +struct PreviewLookupError { + enum class Kind { NotFound, Transient }; + Kind kind{Kind::Transient}; + std::string message; +}; + class ICardPreviewSource { public: virtual ~ICardPreviewSource() = default; @@ -22,9 +51,34 @@ public: // Resolve the preview image URL for a single card. `setNo` is optional // (empty string is fine); some game APIs (e.g. Pokemon TCG) can use it as // a more precise lookup key, others (Magic/Scryfall) ignore it. - virtual Result fetchImageUrl(std::string_view name, - std::string_view setId, - std::string_view setNo) = 0; + // + // Errors carry a classification (`PreviewLookupError::Kind`) so + // CardPreviewService can decide whether to remember the miss + // (`NotFound`) or retry on the next call (`Transient`). See the doc + // comment on PreviewLookupError above for the exact contract. + virtual Result + fetchImageUrl(std::string_view name, + std::string_view setId, + std::string_view setNo) = 0; + + // Opt-in switch for per-game print metadata detection. + [[nodiscard]] virtual bool supportsAutoDetectPrint() const noexcept { return false; } + + // Optional metadata lookup used by game-specific edit dialogs. The default + // implementation returns an explicit "unsupported" error so games without + // print metadata APIs do not need to override it. + virtual Result detectFirstPrint(std::string_view /*name*/, + std::string_view /*setId*/) { + return Result::err("Auto-detect not supported by this game."); + } + + // Optional listing of every distinct `(set_code, rarity)` print returned by + // the upstream for an exact card name inside the chosen display set. + virtual Result> + detectPrintVariants(std::string_view /*name*/, std::string_view /*setId*/) { + return Result>::err( + "Print variant listing not supported by this game."); + } }; } // namespace ccm diff --git a/core/include/ccm/ports/IPreviewByteCache.hpp b/core/include/ccm/ports/IPreviewByteCache.hpp new file mode 100644 index 0000000..6c2a3eb --- /dev/null +++ b/core/include/ccm/ports/IPreviewByteCache.hpp @@ -0,0 +1,75 @@ +#pragma once + +// IPreviewByteCache - persistent byte cache used by CardPreviewService to +// keep preview images alive across app restarts. +// +// The cache is keyed by an opaque string. CardPreviewService composes the +// key from `(game, name, setId, setNo)` (preview lookups) or directly from +// the URL (per-game card-back fallback fetches); the cache itself does not +// interpret the key, only stores the byte payload behind it. +// +// Two kinds of entries are persisted: +// +// * Positive entries hold raw image bytes. Stored via `store(key, payload)`, +// returned as `LoadResult{HitKind::Hit, payload}`. +// * Negative entries record "we tried to resolve this exact card and the +// upstream answered cleanly that it has no preview image" - i.e. the +// `NotFound` half of `PreviewLookupError`. Stored via +// `storeNegative(key)`, returned as `LoadResult{HitKind::NegativeHit, {}}`. +// `Transient` errors (HTTP / network / parse failures) must NEVER reach +// this cache: we cannot tell whether the record genuinely has no image +// or just couldn't be reached, and persisting the miss would leave the +// user staring at the card-back placeholder until they edit the card. +// +// A negative entry is implicitly invalidated when the cache key changes - +// since the key includes `(game, name, setId, setNo)` (with game-specific +// disambiguators packed into setNo), any edit that affects a lookup-relevant +// field will hit a fresh key and re-attempt the network lookup automatically. +// +// Implementations must be thread-safe with respect to concurrent load/store +// calls because CardPreviewService is invoked from a worker thread spawned +// by `BaseSelectedCardPanel`. +// +// Errors are intentionally swallowed (load returns Miss; store and +// storeNegative are fire-and-forget). A flaky or full disk must never break +// the preview path - in the worst case the user sees the same speed as a +// fresh app install. + +#include +#include + +namespace ccm { + +class IPreviewByteCache { +public: + enum class HitKind { + Miss, // no entry for this key (or unrecoverable I/O error) + Hit, // positive entry; bytes are in `payload` + NegativeHit, // negative entry; `payload` is empty by contract + }; + + struct LoadResult { + HitKind kind{HitKind::Miss}; + std::string payload; // only meaningful when kind == Hit + }; + + virtual ~IPreviewByteCache() = default; + + // Returns the cached entry for `key`. On any error - missing files, + // sidecar mismatch, malformed metadata, I/O failure - implementations + // must report `HitKind::Miss` rather than surfacing the error. + [[nodiscard]] virtual LoadResult load(std::string_view key) = 0; + + // Best-effort persist of `payload` under `key`. Empty payloads are not + // stored as positive entries. If a negative entry already exists for + // this key it is replaced. Errors are swallowed. + virtual void store(std::string_view key, const std::string& payload) = 0; + + // Best-effort persist of "we tried, upstream cleanly said no image". + // If a positive entry already exists for this key it is replaced. + // Errors are swallowed. Must be invoked ONLY for `NotFound`-class + // outcomes; never for transient failures. + virtual void storeNegative(std::string_view key) = 0; +}; + +} // namespace ccm diff --git a/core/include/ccm/services/CardFilter.hpp b/core/include/ccm/services/CardFilter.hpp index ecf3399..4752218 100644 --- a/core/include/ccm/services/CardFilter.hpp +++ b/core/include/ccm/services/CardFilter.hpp @@ -21,6 +21,7 @@ #include "ccm/domain/MagicCard.hpp" #include "ccm/domain/PokemonCard.hpp" +#include "ccm/domain/YuGiOhCard.hpp" #include @@ -37,5 +38,7 @@ namespace ccm { // Holo/FirstEdition/Signed/Altered are bool-typed and excluded. [[nodiscard]] bool matchesPokemonFilter(const PokemonCard& card, std::string_view filter); +[[nodiscard]] bool matchesYuGiOhFilter(const YuGiOhCard& card, + std::string_view filter); } // namespace ccm diff --git a/core/include/ccm/services/CardPreviewService.hpp b/core/include/ccm/services/CardPreviewService.hpp index a9b62bf..cd9ceba 100644 --- a/core/include/ccm/services/CardPreviewService.hpp +++ b/core/include/ccm/services/CardPreviewService.hpp @@ -16,17 +16,23 @@ #include "ccm/games/IGameModule.hpp" #include "ccm/ports/ICardPreviewSource.hpp" #include "ccm/ports/IHttpClient.hpp" +#include "ccm/ports/IPreviewByteCache.hpp" #include "ccm/util/Result.hpp" +#include +#include +#include #include #include #include +#include namespace ccm { class CardPreviewService { public: - explicit CardPreviewService(IHttpClient& http); + explicit CardPreviewService(IHttpClient& http, + IPreviewByteCache* persistentCache = nullptr); // Register a game module's preview source. Calling this with a module // whose `cardPreviewSource()` returns nullptr is a no-op (the game has @@ -38,18 +44,87 @@ public: // The returned `std::string` is a raw byte buffer (PNG/JPEG payload) - // it is NOT decoded text. Use std::string::data()/size() with whatever // image-decoding facility your UI provides. + // + // Successful results are cached in two tiers, both keyed by + // (game, name, setId, setNo): + // 1. In-memory LRU (bounded by `kCacheCapacity`) for instant hits + // while the app is running. + // 2. Optional persistent byte cache (passed at construction) so + // previews survive app restarts. + // Re-selecting the same row is then a memcpy away from the wxImage + // decoder, no HTTP at all - this is the common user-facing case + // (clicking around the table). + // + // Failures are split into two policies based on + // `PreviewLookupError::Kind`: + // * `NotFound` (the upstream answered cleanly that this record has + // no preview) is *negative-cached* in both tiers, so subsequent + // selections short-circuit without touching the network. The + // cache key is invalidated automatically when the user edits a + // lookup-relevant field of the record. + // * `Transient` (HTTP / network / parse failure) is NEVER cached, so + // the next selection retries cleanly once connectivity is back. Result fetchPreviewBytes(Game game, std::string_view name, std::string_view setId, std::string_view setNo); + Result detectFirstPrint(Game game, + std::string_view name, + std::string_view setId); + + Result> detectPrintVariants(Game game, + std::string_view name, + std::string_view setId); + // Download image bytes from a fully-qualified URL without going through - // per-game preview-source resolution. + // per-game preview-source resolution. Cached by URL (same LRU bound). Result fetchImageBytesByUrl(std::string_view url); + // Maximum number of cached preview entries kept in memory. Picked so a + // typical Yu-Gi-Oh! collection page can scroll up and down without + // re-hitting the network, while keeping a hard upper bound on RSS for + // very large collections (each entry is roughly one PNG, <100 KiB). + static constexpr std::size_t kCacheCapacity = 128; + private: - IHttpClient& http_; + enum class CacheLookupKind { + Miss, // not in the in-memory tier + Hit, // positive entry; bytes returned via outPayload + NegativeHit, // negative entry; outPayload is empty + }; + + Result fetchAndCache(const std::string& cacheKey, + std::string_view url); + + // Returns the kind of in-memory cache entry for `key`. On Hit the + // payload is copied into `outPayload`; on NegativeHit `outPayload` is + // cleared. Both Hit and NegativeHit move the entry to the front of + // the LRU. + CacheLookupKind cacheLookup(const std::string& key, std::string& outPayload); + void cacheStore(const std::string& key, std::string payload); + void cacheStoreNegative(const std::string& key); + + IHttpClient& http_; + IPreviewByteCache* persistentCache_{nullptr}; std::unordered_map sources_; + + // LRU: list holds entries in MRU-first order; map points at list nodes + // for O(1) move-to-front. Mutex covers both list and map - lookups + // happen on a worker thread spawned by BaseSelectedCardPanel. + // + // A `negative` entry has an empty payload by convention; we keep the + // flag explicit (rather than abusing emptiness) so future invariants + // around eviction or stats stay easy to reason about. + struct CacheEntry { + std::string key; + std::string payload; + bool negative{false}; + }; + using CacheList = std::list; + CacheList cacheList_; + std::unordered_map cacheIndex_; + std::mutex cacheMutex_; }; } // namespace ccm diff --git a/core/include/ccm/services/CardSorter.hpp b/core/include/ccm/services/CardSorter.hpp index 78c3546..c559570 100644 --- a/core/include/ccm/services/CardSorter.hpp +++ b/core/include/ccm/services/CardSorter.hpp @@ -18,6 +18,7 @@ #include "ccm/domain/MagicCard.hpp" #include "ccm/domain/PokemonCard.hpp" +#include "ccm/domain/YuGiOhCard.hpp" #include @@ -52,11 +53,25 @@ enum class PokemonSortColumn { Note, }; +enum class YuGiOhSortColumn { + Name, + SetReleaseDate, + Language, + Condition, + Amount, + FirstEdition, + Signed, + Altered, + Note, +}; + // Stable in-place sort. `ascending=false` runs the same comparator with // inverted sign, matching `byField(field, asc)` semantics. void sortMagicCards(std::vector& cards, MagicSortColumn column, bool ascending); void sortPokemonCards(std::vector& cards, PokemonSortColumn column, bool ascending); +void sortYuGiOhCards(std::vector& cards, YuGiOhSortColumn column, + bool ascending); } // namespace ccm diff --git a/core/include/ccm/util/YuGiOhPrintingSlot.hpp b/core/include/ccm/util/YuGiOhPrintingSlot.hpp new file mode 100644 index 0000000..406ad96 --- /dev/null +++ b/core/include/ccm/util/YuGiOhPrintingSlot.hpp @@ -0,0 +1,72 @@ +#pragma once + +// Yu-Gi-Oh! collector slot equivalence for UI + metadata matching. +// +// The edit dialog composes `setNo` as `-` using only numeric +// characters from the text field (e.g. SOD + "015" -> "SOD-015"). YGOPRODeck +// `set_code` values often embed region letters ("SOD-EN015"). Exact string +// compare would miss that both refer to the same slot. + +#include +#include +#include +#include + +namespace ccm { + +[[nodiscard]] inline std::string_view trimAsciiSpaces(std::string_view s) { + while (!s.empty() && std::isspace(static_cast(s.front()))) { + s.remove_prefix(1); + } + while (!s.empty() && std::isspace(static_cast(s.back()))) { + s.remove_suffix(1); + } + return s; +} + +[[nodiscard]] inline std::string ygoAbbrevBeforeDash(std::string_view raw) { + const std::string_view s = trimAsciiSpaces(raw); + const auto dash = s.find('-'); + const std::string_view pref = dash == std::string_view::npos ? s : s.substr(0, dash); + std::string out(pref); + std::transform(out.begin(), out.end(), out.begin(), [](unsigned char c) { + return static_cast(std::tolower(c)); + }); + return out; +} + +[[nodiscard]] inline std::string ygoCollectorDigitsOnly(std::string_view raw) { + const std::string_view s = trimAsciiSpaces(raw); + const auto dash = s.find('-'); + const std::string_view tail = + dash == std::string_view::npos ? std::string_view{} : s.substr(dash + 1); + std::string out; + out.reserve(tail.size()); + for (unsigned char c : tail) { + if (std::isdigit(c) != 0) out.push_back(static_cast(c)); + } + return out; +} + +// True when both strings designate the same printed slot: same abbreviation +// before the first '-' (ASCII case-insensitive) and the same ordered digit run +// extracted from everything after that dash. +[[nodiscard]] inline bool ygoPrintingSlotsMatch(std::string_view a, std::string_view b) { + if (ygoAbbrevBeforeDash(a) != ygoAbbrevBeforeDash(b)) return false; + return ygoCollectorDigitsOnly(a) == ygoCollectorDigitsOnly(b); +} + +// YGOPRODeck sometimes lists European alternate numbering alongside NA prints under +// the same English `set_name` (e.g. Dark Magician as "LOB-E003" vs NA "LOB-005"). +// The suffix uses a single leading `E` immediately followed by digits — distinct +// from two-letter regions such as "EN" ("LOB-EN005") or "DE" ("LOB-DE005"). +[[nodiscard]] inline bool ygoLikelyEuropeanRegionalSetCode(std::string_view setCode) { + const std::string_view s = trimAsciiSpaces(setCode); + const auto dash = s.find('-'); + if (dash == std::string_view::npos || dash + 2 >= s.size()) return false; + const std::string_view tail = s.substr(dash + 1); + return tail.size() >= 2 && tail[0] == 'E' + && std::isdigit(static_cast(tail[1])) != 0; +} + +} // namespace ccm diff --git a/core/src/domain/Enums.cpp b/core/src/domain/Enums.cpp index 97ee986..fcd5247 100644 --- a/core/src/domain/Enums.cpp +++ b/core/src/domain/Enums.cpp @@ -9,6 +9,7 @@ std::string_view to_string(Game g) noexcept { switch (g) { case Game::Magic: return "Magic"; case Game::Pokemon: return "Pokemon"; + case Game::YuGiOh: return "YuGiOh"; } return "Magic"; } @@ -51,6 +52,7 @@ std::string_view to_string(Theme t) noexcept { std::optional gameFromString(std::string_view s) noexcept { if (s == "Magic") return Game::Magic; if (s == "Pokemon") return Game::Pokemon; + if (s == "YuGiOh") return Game::YuGiOh; return std::nullopt; } @@ -83,8 +85,8 @@ std::optional themeFromString(std::string_view s) noexcept { return std::nullopt; } -const std::array& allGames() noexcept { - static constexpr std::array v{Game::Magic, Game::Pokemon}; +const std::array& allGames() noexcept { + static constexpr std::array v{Game::Magic, Game::Pokemon, Game::YuGiOh}; return v; } diff --git a/core/src/domain/YuGiOhCard.cpp b/core/src/domain/YuGiOhCard.cpp new file mode 100644 index 0000000..f28d299 --- /dev/null +++ b/core/src/domain/YuGiOhCard.cpp @@ -0,0 +1,42 @@ +#include "ccm/domain/YuGiOhCard.hpp" + +namespace ccm { + +void to_json(nlohmann::json& j, const YuGiOhCard& c) { + j = nlohmann::json{ + {"id", c.id}, + {"amount", c.amount}, + {"name", c.name}, + {"set", c.set}, + {"setNo", c.setNo}, + {"note", c.note}, + {"images", c.images}, + {"language", c.language}, + {"condition", c.condition}, + {"firstEdition", c.firstEdition}, + {"rarity", c.rarity}, + {"rarityCode", c.rarityCode}, + {"signed", c.signed_}, + {"altered", c.altered}, + }; +} + +void from_json(const nlohmann::json& j, YuGiOhCard& c) { + j.at("id").get_to(c.id); + j.at("amount").get_to(c.amount); + j.at("name").get_to(c.name); + j.at("set").get_to(c.set); + j.at("setNo").get_to(c.setNo); + j.at("note").get_to(c.note); + j.at("images").get_to(c.images); + j.at("language").get_to(c.language); + j.at("condition").get_to(c.condition); + j.at("firstEdition").get_to(c.firstEdition); + j.at("rarity").get_to(c.rarity); + if (j.contains("rarityCode")) j.at("rarityCode").get_to(c.rarityCode); + else c.rarityCode.clear(); + j.at("signed").get_to(c.signed_); + j.at("altered").get_to(c.altered); +} + +} // namespace ccm diff --git a/core/src/games/magic/MagicCardPreviewSource.cpp b/core/src/games/magic/MagicCardPreviewSource.cpp index 74db794..901eb31 100644 --- a/core/src/games/magic/MagicCardPreviewSource.cpp +++ b/core/src/games/magic/MagicCardPreviewSource.cpp @@ -62,38 +62,47 @@ std::string MagicCardPreviewSource::buildSearchUrl(std::string_view name, return std::string("https://api.scryfall.com/cards/search?q=") + urlEncode(query); } -Result MagicCardPreviewSource::parseResponse(const std::string& body) { +Result +MagicCardPreviewSource::parseResponse(const std::string& body) { + using R = Result; + using K = PreviewLookupError::Kind; try { const auto j = nlohmann::json::parse(body); if (!j.contains("data") || !j.at("data").is_array()) { - return Result::err("Scryfall response missing 'data' array."); + // Treat schema deviation as transient: the API contract failed, + // not the user's record. Scryfall returns a JSON error object + // here on outage, which is rare but not stable. + return R::err({K::Transient, "Scryfall response missing 'data' array."}); } const auto& data = j.at("data"); if (data.empty()) { - return Result::err("Scryfall returned no matching cards."); + return R::err({K::NotFound, "Scryfall returned no matching cards."}); } const auto& first = data.at(0); if (!first.contains("image_uris") || !first.at("image_uris").is_object()) { // Double-faced cards expose image_uris on each face; there is no // fallback for this and surfaces it as "no preview". - return Result::err("Card has no top-level image_uris."); + return R::err({K::NotFound, "Card has no top-level image_uris."}); } const auto& uris = first.at("image_uris"); if (!uris.contains("normal") || !uris.at("normal").is_string()) { - return Result::err("Card has no 'normal' image variant."); + return R::err({K::NotFound, "Card has no 'normal' image variant."}); } - return Result::ok(uris.at("normal").get()); + return R::ok(uris.at("normal").get()); } catch (const std::exception& e) { - return Result::err(std::string("Scryfall JSON parse error: ") + e.what()); + return R::err({K::Transient, std::string("Scryfall JSON parse error: ") + e.what()}); } } -Result MagicCardPreviewSource::fetchImageUrl(std::string_view name, - std::string_view setId, - std::string_view /*setNo*/) { +Result +MagicCardPreviewSource::fetchImageUrl(std::string_view name, + std::string_view setId, + std::string_view /*setNo*/) { + using R = Result; + using K = PreviewLookupError::Kind; const std::string url = buildSearchUrl(name, setId); auto resp = http_.get(url); - if (!resp) return Result::err(resp.error()); + if (!resp) return R::err({K::Transient, resp.error()}); return parseResponse(resp.value()); } diff --git a/core/src/games/pokemon/PokemonCardPreviewSource.cpp b/core/src/games/pokemon/PokemonCardPreviewSource.cpp index e9cbf34..00e8f23 100644 --- a/core/src/games/pokemon/PokemonCardPreviewSource.cpp +++ b/core/src/games/pokemon/PokemonCardPreviewSource.cpp @@ -70,40 +70,46 @@ std::string PokemonCardPreviewSource::buildSearchUrl(std::string_view name, return std::string("https://api.pokemontcg.io/v2/cards?q=") + urlEncode(query); } -Result PokemonCardPreviewSource::parseResponse(const std::string& body) { +Result +PokemonCardPreviewSource::parseResponse(const std::string& body) { + using R = Result; + using K = PreviewLookupError::Kind; try { const auto j = nlohmann::json::parse(body); if (!j.contains("data") || !j.at("data").is_array()) { - return Result::err("Pokemon TCG response missing 'data' array."); + return R::err({K::Transient, "Pokemon TCG response missing 'data' array."}); } const auto& data = j.at("data"); if (data.empty()) { - return Result::err("Pokemon TCG returned no matching cards."); + return R::err({K::NotFound, "Pokemon TCG returned no matching cards."}); } const auto& first = data.at(0); if (!first.contains("images") || !first.at("images").is_object()) { - return Result::err("Card has no 'images' object."); + return R::err({K::NotFound, "Card has no 'images' object."}); } const auto& images = first.at("images"); if (images.contains("large") && images.at("large").is_string()) { - return Result::ok(images.at("large").get()); + return R::ok(images.at("large").get()); } if (images.contains("small") && images.at("small").is_string()) { - return Result::ok(images.at("small").get()); + return R::ok(images.at("small").get()); } - return Result::err("Card has no 'large' or 'small' image variant."); + return R::err({K::NotFound, "Card has no 'large' or 'small' image variant."}); } catch (const std::exception& e) { - return Result::err( - std::string("Pokemon TCG JSON parse error: ") + e.what()); + return R::err({K::Transient, + std::string("Pokemon TCG JSON parse error: ") + e.what()}); } } -Result PokemonCardPreviewSource::fetchImageUrl(std::string_view name, - std::string_view setId, - std::string_view setNo) { +Result +PokemonCardPreviewSource::fetchImageUrl(std::string_view name, + std::string_view setId, + std::string_view setNo) { + using R = Result; + using K = PreviewLookupError::Kind; const std::string url = buildSearchUrl(name, setId, setNo); auto resp = http_.get(url); - if (!resp) return Result::err(resp.error()); + if (!resp) return R::err({K::Transient, resp.error()}); return parseResponse(resp.value()); } diff --git a/core/src/games/yugioh/YuGiOhCardPreviewSource.cpp b/core/src/games/yugioh/YuGiOhCardPreviewSource.cpp new file mode 100644 index 0000000..717a86b --- /dev/null +++ b/core/src/games/yugioh/YuGiOhCardPreviewSource.cpp @@ -0,0 +1,565 @@ +#include "ccm/games/yugioh/YuGiOhCardPreviewSource.hpp" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ccm { + +namespace { + +// RFC 3986 percent-encoder. Same rules as the Magic implementation; private +// here so the YGO and Magic code paths can drift independently if the future +// requires it (Yugipedia's MediaWiki API is fine with %20 for spaces and %7C +// for the `|` separator inside `titles=`). +std::string urlEncode(std::string_view in) { + std::ostringstream out; + out.fill('0'); + out << std::hex << std::uppercase; + for (unsigned char c : in) { + const bool unreserved = + (c >= 'A' && c <= 'Z') || + (c >= 'a' && c <= 'z') || + (c >= '0' && c <= '9') || + c == '-' || c == '.' || c == '_' || c == '~'; + if (unreserved) { + out << static_cast(c); + } else { + out << '%'; + out.width(2); + out << static_cast(c); + } + } + return out.str(); +} + +std::string trim(std::string s) { + while (!s.empty() && std::isspace(static_cast(s.front()))) s.erase(s.begin()); + while (!s.empty() && std::isspace(static_cast(s.back()))) s.pop_back(); + return s; +} + +std::string toLower(std::string s) { + for (char& ch : s) { + ch = static_cast(std::tolower(static_cast(ch))); + } + return s; +} + +// Pull the standard art URL out of a YGOPRODeck card object. We deliberately +// always return card_images[0]: when no `cardset=` filter is applied, that +// slot is the original/standard artwork (alt-art passcodes follow), which is +// the closest fallback we have when Yugipedia has no scan for this printing. +std::string imageFromCard(const nlohmann::json& card) { + if (!card.contains("card_images") || !card.at("card_images").is_array() || card.at("card_images").empty()) { + return {}; + } + const auto& first = card.at("card_images").at(0); + if (first.contains("image_url") && first.at("image_url").is_string()) { + return first.at("image_url").get(); + } + if (first.contains("image_url_small") && first.at("image_url_small").is_string()) { + return first.at("image_url_small").get(); + } + if (first.contains("image_url_cropped") && first.at("image_url_cropped").is_string()) { + return first.at("image_url_cropped").get(); + } + return {}; +} + +// Split a setNo encoded by the UI as `||||` into its +// three positional fields. Any missing trailing field becomes an empty +// string, so older callers that pass just `` keep working. +struct ParsedSetNo { + std::string setNo; + std::string rarity; + std::string edition; // "1E" / "UE" / "" (unknown) +}; +ParsedSetNo parseSetNoTuple(std::string_view raw) { + std::string s(raw); + ParsedSetNo p; + const auto a = s.find("||"); + if (a == std::string::npos) { + p.setNo = trim(std::move(s)); + return p; + } + p.setNo = trim(s.substr(0, a)); + std::string rest = s.substr(a + 2); + const auto b = rest.find("||"); + if (b == std::string::npos) { + p.rarity = trim(std::move(rest)); + return p; + } + p.rarity = trim(rest.substr(0, b)); + p.edition = trim(rest.substr(b + 2)); + return p; +} + +} // namespace + +YuGiOhCardPreviewSource::YuGiOhCardPreviewSource(IHttpClient& http) : http_(http) {} + +// ============================================================================ +// Yugipedia (image-preview path) +// ============================================================================ + +std::string YuGiOhCardPreviewSource::normalizeName(std::string_view name) { + // Yugipedia's image policy strips whitespace and a fixed set of + // punctuation from the displayed card name to produce the file slug. + // Reference: https://yugipedia.com/wiki/Yugipedia:Image_policy + std::string out; + out.reserve(name.size()); + for (unsigned char c : name) { + if (c <= 0x20) continue; // whitespace, including non-breaking + switch (c) { + case '#': case ',': case '.': case ':': case '\'': case '"': + case '?': case '!': case '&': case '@': case '%': case '=': + case '[': case ']': case '<': case '>': case '/': case '\\': + case '-': case '*': case ';': case '`': + continue; + default: + break; + } + out.push_back(static_cast(c)); + } + return out; +} + +std::string YuGiOhCardPreviewSource::rarityCodeFor(std::string_view rarityName) { + // Compare case-insensitively, ignoring whitespace, against a table of + // CCM3 dialog values (see ui_wx/src/YuGiOhCardEditDialog.cpp:kRarityOptions) + // plus a few extras occasionally seen in imported collections. The codes + // are the ones Yugipedia uses in image filenames. + std::string lc; + lc.reserve(rarityName.size()); + for (unsigned char c : rarityName) { + if (std::isspace(c)) continue; + lc.push_back(static_cast(std::tolower(c))); + } + static const std::array, 32> kTable = {{ + {"common", "C"}, + {"shortprint", "SP"}, + {"supershortprint", "SSP"}, + {"normalrare", "NR"}, + {"rare", "R"}, + {"superrare", "SR"}, + {"ultrarare", "UR"}, + {"ultimaterare", "UtR"}, + {"secretrare", "ScR"}, + {"prismaticsecretrare", "PScR"}, + {"extrasecretrare", "EScR"}, + {"ultrasecretrare", "UScR"}, + {"platinumsecretrare", "PtScR"}, + {"goldsecretrare", "GScR"}, + {"ghostrare", "GR"}, + {"goldrare", "GUR"}, + {"premiumgoldrare", "PGR"}, + {"goldenrare", "GUR"}, + {"starfoilrare", "SFR"}, + {"shatterfoilrare", "SHR"}, + {"mosaicrare", "MSR"}, + {"parallelrare", "PR"}, + {"superparallelrare", "SPR"}, + {"ultraparallelrare", "UPR"}, + {"holographicrare", "HGR"}, + {"starlightrare", "StR"}, + {"collectorsrare", "ColR"}, + {"prismaticcollectorsrare", "PColR"}, + {"quartercenturysecretrare", "QCScR"}, + {"prismaticultimaterare", "PUtR"}, + {"prismaticredsecretrare", "PRScR"}, + {"silverletter", "SLR"}, + }}; + for (const auto& [k, v] : kTable) { + if (lc == k) return std::string(v); + } + return {}; +} + +std::string YuGiOhCardPreviewSource::extractSetCode(std::string_view setNo) { + std::string s(setNo); + while (!s.empty() && std::isspace(static_cast(s.front()))) s.erase(s.begin()); + const auto dash = s.find('-'); + if (dash == std::string::npos) return s; + return s.substr(0, dash); +} + +std::vector YuGiOhCardPreviewSource::buildCandidateFilenames( + std::string_view name, + std::string_view setCode, + std::string_view rarityCode, + bool firstEdition) { + std::vector out; + const std::string slug = normalizeName(name); + if (slug.empty() || setCode.empty()) return out; + + // English-only region candidates, in rough usage order: EN is the + // current default, NA was used on most LOB-era prints, EU/AU show up + // sporadically. Always English regardless of the card's stored Language. + static constexpr std::array kRegions = + {"EN", "NA", "EU", "AU"}; + + // Edition candidates: prefer the printed edition the user has, then + // try the opposite, then fall back to LE for promo-type prints. + std::array editions = {"", "", "LE"}; + if (firstEdition) { + editions[0] = "1E"; + editions[1] = "UE"; + } else { + editions[0] = "UE"; + editions[1] = "1E"; + } + + // Two extension variants: Yugipedia has a mix of .png (modern) and .jpg + // (older uploads) for the same era. Both are common for LOB-era cards. + static constexpr std::array kExts = {"png", "jpg"}; + + auto pushCombos = [&](std::string_view rarity) { + for (auto edition : editions) { + for (auto region : kRegions) { + for (auto ext : kExts) { + std::string fn; + fn.reserve(slug.size() + setCode.size() + 16); + fn += slug; + fn += '-'; fn.append(setCode); + fn += '-'; fn.append(region); + if (!rarity.empty()) { + fn += '-'; fn.append(rarity); + } + fn += '-'; fn.append(edition); + fn += '.'; fn.append(ext); + out.push_back(std::move(fn)); + } + } + } + }; + + // Primary attempts include the rarity slot. If we don't know the rarity + // we skip straight to the rarity-less fallback (some sets are uniform + // rarity and the upload omits the slot). + if (!rarityCode.empty()) { + pushCombos(rarityCode); + } + pushCombos(""); + return out; +} + +std::string YuGiOhCardPreviewSource::buildYugipediaQueryUrl( + const std::vector& filenames) { + // MediaWiki batch query: `titles=File:A|File:B|File:C` (URL-encoded). + // One HTTP call returns imageinfo for every page whose file exists; the + // missing ones come back tagged with `"missing": ""`. + std::string joined; + for (size_t i = 0; i < filenames.size(); ++i) { + if (i > 0) joined += "|"; + joined += "File:"; + joined += filenames[i]; + } + std::string url = + "https://yugipedia.com/api.php?action=query&format=json" + "&prop=imageinfo&iiprop=url&titles="; + url += urlEncode(joined); + return url; +} + +Result YuGiOhCardPreviewSource::parseYugipediaResponse( + const std::string& body, + const std::vector& filenameOrder) { + using R = Result; + using K = PreviewLookupError::Kind; + try { + const auto j = nlohmann::json::parse(body); + if (!j.contains("query") || !j.at("query").is_object()) { + return R::err({K::Transient, "Yugipedia response missing 'query' object."}); + } + const auto& pages = j.at("query").value("pages", nlohmann::json::object()); + if (!pages.is_object()) { + return R::err({K::Transient, "Yugipedia response missing 'query.pages'."}); + } + + // Build a name->URL map. MediaWiki returns the title with namespace + // ("File:...") and may have replaced spaces with underscores; our + // candidate filenames never contain spaces, so a direct compare on + // the bit after "File:" is sufficient. + std::unordered_map resolved; + resolved.reserve(filenameOrder.size()); + for (auto it = pages.begin(); it != pages.end(); ++it) { + const auto& page = it.value(); + if (!page.contains("imageinfo")) continue; + const auto& info = page.at("imageinfo"); + if (!info.is_array() || info.empty()) continue; + const auto& info0 = info.at(0); + if (!info0.contains("url") || !info0.at("url").is_string()) continue; + + std::string title = page.value("title", ""); + constexpr std::string_view kPrefix = "File:"; + if (title.rfind(kPrefix, 0) == 0) title.erase(0, kPrefix.size()); + resolved[title] = info0.at("url").get(); + } + + // Walk our ordered candidate list and return the first hit. This is + // how priority works: 1E English first, then UE, then jpg, etc. + for (const auto& fn : filenameOrder) { + auto it = resolved.find(fn); + if (it != resolved.end() && !it->second.empty()) { + return R::ok(it->second); + } + } + // Every candidate was tagged "missing" => Yugipedia confirmed there + // is no English scan for this printing. Treat as NotFound; the + // YGOPRODeck fallback may still surface a generic art. + return R::err({K::NotFound, "No matching Yugipedia scan found."}); + } catch (const std::exception& e) { + return R::err({K::Transient, + std::string("Yugipedia JSON parse error: ") + e.what()}); + } +} + +// ============================================================================ +// YGOPRODeck (auto-detect path + last-resort fallback) +// ============================================================================ + +std::string YuGiOhCardPreviewSource::buildSearchUrl(std::string_view name, + std::string_view setName) { + std::string url = + std::string("https://db.ygoprodeck.com/api/v7/cardinfo.php?fname=") + urlEncode(name); + if (!setName.empty()) { + url += "&cardset="; + url += urlEncode(setName); + } + return url; +} + +Result YuGiOhCardPreviewSource::parseFallbackImageUrl( + const std::string& body, std::string_view name) { + using R = Result; + using K = PreviewLookupError::Kind; + try { + const auto j = nlohmann::json::parse(body); + if (!j.contains("data") || !j.at("data").is_array()) { + return R::err({K::Transient, "YGOPRODeck response missing 'data' array."}); + } + const auto& data = j.at("data"); + if (data.empty()) { + return R::err({K::NotFound, "YGOPRODeck returned no matching cards."}); + } + const std::string wantedNameLower = toLower(trim(std::string(name))); + + // Prefer the exact-name match: the fuzzy `fname=` search can mix in + // sibling cards (Dark Magician + Dark Magician Girl), and we don't + // want to land on a sibling's standard art. + for (const auto& card : data) { + const std::string cardName = trim(card.value("name", "")); + if (!wantedNameLower.empty() && toLower(cardName) == wantedNameLower) { + const std::string image = imageFromCard(card); + if (!image.empty()) return R::ok(image); + } + } + // Failing that, take whatever YGOPRODeck ranked first. + const std::string image = imageFromCard(data.at(0)); + if (!image.empty()) { + return R::ok(image); + } + return R::err({K::NotFound, "Card has no image variants."}); + } catch (const std::exception& e) { + return R::err({K::Transient, + std::string("YGOPRODeck JSON parse error: ") + e.what()}); + } +} + +Result> YuGiOhCardPreviewSource::parsePrintVariants( + const std::string& body, + std::string_view preferredSetName, + std::string_view wantedCardName) { + using R = Result>; + try { + const auto j = nlohmann::json::parse(body); + if (!j.contains("data") || !j.at("data").is_array() || j.at("data").empty()) { + return R::err("YGOPRODeck returned no matching cards."); + } + const std::string wantedSet = trim(std::string(preferredSetName)); + const std::string wantedNameLower = toLower(trim(std::string(wantedCardName))); + + std::vector collected; + auto pushPrint = [&collected](const nlohmann::json& print) { + AutoDetectedPrint out; + out.setNo = trim(print.value("set_code", "")); + out.rarity = trim(print.value("set_rarity", "")); + if (out.setNo.empty() && out.rarity.empty()) return; + collected.push_back(std::move(out)); + }; + + for (const auto& card : j.at("data")) { + if (!wantedNameLower.empty()) { + const std::string cardName = trim(card.value("name", "")); + if (toLower(cardName) != wantedNameLower) continue; + } + if (!card.contains("card_sets") || !card.at("card_sets").is_array()) continue; + for (const auto& print : card.at("card_sets")) { + const std::string setName = trim(print.value("set_name", "")); + if (!wantedSet.empty() && setName != wantedSet) continue; + pushPrint(print); + } + } + + // Mirror parseFirstPrint fallback: if nothing matched `wantedSet`, take + // every print from `data[0]` without filtering by set_name. + // + // When the caller supplied an exact card name (edit-dialog variant + // listing), combining unrelated `card_sets[]` rows after a non-empty + // display-set filter missed would falsely imply multiple printings + // "in one set" (different real-world products share the same card). + if (collected.empty()) { + if (!wantedNameLower.empty() && !wantedSet.empty()) { + return R::err("Could not auto-detect set print metadata."); + } + const auto& firstCard = j.at("data").at(0); + if (!wantedNameLower.empty()) { + const std::string cardName = trim(firstCard.value("name", "")); + if (toLower(cardName) != wantedNameLower) { + return R::err("Could not auto-detect set print metadata."); + } + } + if (firstCard.contains("card_sets") && firstCard.at("card_sets").is_array()) { + for (const auto& print : firstCard.at("card_sets")) { + pushPrint(print); + } + } + } + + if (collected.empty()) { + return R::err("Could not auto-detect set print metadata."); + } + + std::vector deduped; + deduped.reserve(collected.size()); + std::unordered_set seen; + seen.reserve(collected.size() * 2); + for (auto& p : collected) { + const std::string key = p.setNo + '\0' + p.rarity; + if (seen.insert(key).second) deduped.push_back(std::move(p)); + } + return R::ok(std::move(deduped)); + } catch (const std::exception& e) { + return R::err(std::string("YGOPRODeck JSON parse error: ") + e.what()); + } +} + +Result YuGiOhCardPreviewSource::parseFirstPrint( + const std::string& body, std::string_view preferredSetName) { + auto list = parsePrintVariants(body, preferredSetName, ""); + if (!list || list.value().empty()) { + if (!list) return Result::err(list.error()); + return Result::err("Could not auto-detect set print metadata."); + } + return Result::ok(list.value().front()); +} + +// ============================================================================ +// Public ICardPreviewSource API +// ============================================================================ + +Result +YuGiOhCardPreviewSource::fetchImageUrl(std::string_view name, + std::string_view /*setId*/, + std::string_view setNo) { + using R = Result; + using K = PreviewLookupError::Kind; + const ParsedSetNo p = parseSetNoTuple(setNo); + const std::string setCode = extractSetCode(p.setNo); + const std::string rarityCode = rarityCodeFor(p.rarity); + const bool firstEdition = (p.edition == "1E"); + + // The overall classification needs the worst outcome across the two + // upstreams: NotFound only when *both* answered cleanly with no match, + // Transient as soon as either one couldn't speak. We track Yugipedia's + // outcome here and combine it with YGOPRODeck's below. + bool yugipediaSawTransient = false; + PreviewLookupError yugipediaErr{K::NotFound, "Yugipedia not consulted."}; + + // Step 1: Yugipedia per-printing scan. Build a batch of plausible English + // filenames and ask MediaWiki for them all in one call. This is the only + // source we know of that distinguishes art between same-passcode reprints + // (LOB Blue-Eyes vs SDK Blue-Eyes, etc.). + // + // No usable set code (or empty candidate list) is treated as an + // "inapplicable" Yugipedia step rather than a failure - we don't want a + // legitimate metadata gap to taint the final classification as transient. + if (!setCode.empty()) { + const auto candidates = buildCandidateFilenames( + name, setCode, rarityCode, firstEdition); + if (!candidates.empty()) { + const std::string url = buildYugipediaQueryUrl(candidates); + auto resp = http_.get(url); + if (!resp) { + yugipediaSawTransient = true; + yugipediaErr = {K::Transient, resp.error()}; + } else { + auto parsed = parseYugipediaResponse(resp.value(), candidates); + if (parsed) return parsed; + yugipediaErr = std::move(parsed).error(); + if (yugipediaErr.kind == K::Transient) yugipediaSawTransient = true; + } + } + } + + // Step 2: YGOPRODeck standard-art fallback. Only used when Yugipedia has + // no scan we can match (newly-added cards, OCG-only cards without an + // English release, transient Yugipedia errors). Always unfiltered, so + // card_images[0] is the original artwork rather than an alt-art reprint. + const std::string fallbackUrl = buildSearchUrl(name, ""); + auto fallback = http_.get(fallbackUrl); + if (!fallback) { + // YGOPRODeck failed at the network layer => the overall lookup is + // transient regardless of what Yugipedia did. Surface YGOPRODeck's + // error string because it's the most recent failure. + return R::err({K::Transient, fallback.error()}); + } + auto parsed = parseFallbackImageUrl(fallback.value(), name); + if (parsed) return parsed; + + // Both upstreams answered. If *either* one was transient, the overall + // outcome is transient (we can't conclude the record has no image). + PreviewLookupError fallbackErr = std::move(parsed).error(); + if (yugipediaSawTransient || fallbackErr.kind == K::Transient) { + return R::err({K::Transient, + yugipediaSawTransient ? yugipediaErr.message : fallbackErr.message}); + } + // Otherwise both confirmed "no image" => safe to remember. + return R::err({K::NotFound, fallbackErr.message}); +} + +Result YuGiOhCardPreviewSource::detectFirstPrint(std::string_view name, + std::string_view setId) { + auto list = detectPrintVariants(name, setId); + if (!list || list.value().empty()) { + if (!list) return Result::err(list.error()); + return Result::err("Could not auto-detect set print metadata."); + } + return Result::ok(list.value().front()); +} + +Result> YuGiOhCardPreviewSource::detectPrintVariants( + std::string_view name, + std::string_view setId) { + using R = Result>; + const std::string url = buildSearchUrl(name, setId); + auto resp = http_.get(url); + if (resp) { + return parsePrintVariants(resp.value(), setId, name); + } + const std::string fallbackUrl = buildSearchUrl(name, ""); + auto fallback = http_.get(fallbackUrl); + if (!fallback) return R::err(fallback.error()); + return parsePrintVariants(fallback.value(), setId, name); +} + +} // namespace ccm diff --git a/core/src/games/yugioh/YuGiOhGameModule.cpp b/core/src/games/yugioh/YuGiOhGameModule.cpp new file mode 100644 index 0000000..7df0fb9 --- /dev/null +++ b/core/src/games/yugioh/YuGiOhGameModule.cpp @@ -0,0 +1,8 @@ +#include "ccm/games/yugioh/YuGiOhGameModule.hpp" + +namespace ccm { + +YuGiOhGameModule::YuGiOhGameModule(IHttpClient& http) + : setSource_(http), previewSource_(http) {} + +} // namespace ccm diff --git a/core/src/games/yugioh/YuGiOhSetSource.cpp b/core/src/games/yugioh/YuGiOhSetSource.cpp new file mode 100644 index 0000000..d47acd1 --- /dev/null +++ b/core/src/games/yugioh/YuGiOhSetSource.cpp @@ -0,0 +1,47 @@ +#include "ccm/games/yugioh/YuGiOhSetSource.hpp" + +#include + +#include +#include + +namespace ccm { + +YuGiOhSetSource::YuGiOhSetSource(IHttpClient& http) : http_(http) {} + +Result> YuGiOhSetSource::parseResponse(const std::string& body) { + try { + const auto j = nlohmann::json::parse(body); + if (!j.is_array()) { + return Result>::err( + "YGOPRODeck response is not an array."); + } + std::vector out; + out.reserve(j.size()); + for (const auto& entry : j) { + Set s; + s.id = entry.value("set_code", ""); + s.name = entry.value("set_name", ""); + std::string release = entry.value("tcg_date", ""); + for (char& ch : release) { + if (ch == '-') ch = '/'; + } + s.releaseDate = std::move(release); + out.push_back(std::move(s)); + } + std::sort(out.begin(), out.end(), + [](const Set& a, const Set& b) { return a.releaseDate < b.releaseDate; }); + return Result>::ok(std::move(out)); + } catch (const std::exception& e) { + return Result>::err( + std::string("YGOPRODeck set parse error: ") + e.what()); + } +} + +Result> YuGiOhSetSource::fetchAll() { + auto resp = http_.get(kEndpoint); + if (!resp) return Result>::err(resp.error()); + return parseResponse(resp.value()); +} + +} // namespace ccm diff --git a/core/src/infra/CprHttpClient.cpp b/core/src/infra/CprHttpClient.cpp index e644f84..a6f0938 100644 --- a/core/src/infra/CprHttpClient.cpp +++ b/core/src/infra/CprHttpClient.cpp @@ -3,19 +3,40 @@ #include #include +#include namespace ccm { -CprHttpClient::CprHttpClient(std::chrono::milliseconds timeout) : timeout_(timeout) {} +CprHttpClient::CprHttpClient(std::chrono::milliseconds timeout) + : timeout_(timeout), + session_(std::make_unique()) { + // Configure session-wide options once; every Get() then only updates + // the URL. libcurl's connection cache lives inside the easy handle, so + // reusing one Session across calls is what gets us TLS keep-alive. + session_->SetTimeout(cpr::Timeout{timeout_}); + // `Accept: application/json` breaks some CDNs that refuse non-JSON bodies + // (preview pipeline also GETs raw JPG/PNG). Wildcard keeps JSON APIs happy. + session_->SetHeader(cpr::Header{ + {"User-Agent", "card-collection-manager-3/0.1"}, + {"Accept", "*/*"}, + }); + session_->SetRedirect(cpr::Redirect{/*max_redirects=*/10L, + /*follow=*/true, + /*cont_send_cred=*/false, + cpr::PostRedirectFlags::POST_ALL}); +} + +CprHttpClient::~CprHttpClient() = default; Result CprHttpClient::get(std::string_view url) { - cpr::Response r = cpr::Get( - cpr::Url{std::string(url)}, - cpr::Timeout{timeout_}, - // Identify ourselves; some APIs rate-limit unknown agents harshly. - cpr::Header{{"User-Agent", "card-collection-manager-3/0.1"}, - {"Accept", "application/json"}} - ); + // libcurl easy handles (and therefore cpr::Session) are not thread-safe. + // We serialize callers here; the preview path is single-flight already + // (one fetch per BaseSelectedCardPanel selection change), so contention + // is negligible. + std::lock_guard lock(sessionMutex_); + + session_->SetUrl(cpr::Url{std::string(url)}); + cpr::Response r = session_->Get(); if (r.error) { return Result::err("HTTP error: " + r.error.message); diff --git a/core/src/infra/LocalPreviewByteCache.cpp b/core/src/infra/LocalPreviewByteCache.cpp new file mode 100644 index 0000000..07a6477 --- /dev/null +++ b/core/src/infra/LocalPreviewByteCache.cpp @@ -0,0 +1,228 @@ +#include "ccm/infra/LocalPreviewByteCache.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace ccm { + +namespace fs = std::filesystem; + +namespace { + +// FNV-1a 64-bit hash, hex-encoded. We don't need cryptographic strength +// here: the `.idx` sidecar file holds the original key and load() rejects +// any mismatch, so a hash collision degrades to a cache miss instead of a +// wrong-image return. FNV-1a was picked to keep this dependency-free +// (no openssl, no extra link). +std::string fnv1a64Hex(std::string_view in) { + constexpr std::uint64_t kOffsetBasis = 0xcbf29ce484222325ULL; + constexpr std::uint64_t kPrime = 0x100000001b3ULL; + std::uint64_t h = kOffsetBasis; + for (unsigned char c : in) { + h ^= c; + h *= kPrime; + } + std::ostringstream oss; + oss << std::hex << std::setw(16) << std::setfill('0') << h; + return oss.str(); +} + +// Best-effort mtime; returns the epoch on any error so callers can still +// sort consistently (oldest-first eviction stays well-defined). +fs::file_time_type mtimeOrEpoch(const fs::path& p) { + std::error_code ec; + auto t = fs::last_write_time(p, ec); + if (ec) return fs::file_time_type{}; + return t; +} + +std::uintmax_t fileSizeOrZero(const fs::path& p) { + std::error_code ec; + auto sz = fs::file_size(p, ec); + return ec ? 0u : sz; +} + +void touchMtime(const fs::path& p) { + std::error_code ec; + fs::last_write_time(p, fs::file_time_type::clock::now(), ec); + // Ignored: touch is a best-effort hint to the LRU policy. +} + +} // namespace + +LocalPreviewByteCache::LocalPreviewByteCache(IFileSystem& fs, + fs::path cacheDir, + std::size_t maxBytes) + : fs_(fs), cacheDir_(std::move(cacheDir)), maxBytes_(maxBytes) {} + +std::string LocalPreviewByteCache::hashKey(std::string_view key) { + return fnv1a64Hex(key); +} + +fs::path LocalPreviewByteCache::payloadPath(const std::string& hash) const { + return cacheDir_ / (hash + ".bin"); +} + +fs::path LocalPreviewByteCache::negativePath(const std::string& hash) const { + return cacheDir_ / (hash + ".neg"); +} + +fs::path LocalPreviewByteCache::indexPath(const std::string& hash) const { + return cacheDir_ / (hash + ".idx"); +} + +IPreviewByteCache::LoadResult LocalPreviewByteCache::load(std::string_view key) { + std::lock_guard lock(mutex_); + + const std::string hash = hashKey(key); + const auto bin = payloadPath(hash); + const auto neg = negativePath(hash); + const auto idx = indexPath(hash); + + const bool hasBin = fs_.exists(bin); + const bool hasNeg = fs_.exists(neg); + if (!hasBin && !hasNeg) return {HitKind::Miss, {}}; + + // Sidecar must exist and match exactly. Anything else - missing, + // mismatched, empty - is treated as a miss so the next store() / + // storeNegative() will overwrite cleanly. This is what guarantees that + // a hash collision can never serve another card's bytes or stale + // "no image" verdict. + if (!fs_.exists(idx)) return {HitKind::Miss, {}}; + auto idxRead = fs_.readText(idx); + if (!idxRead) return {HitKind::Miss, {}}; + if (idxRead.value() != key) return {HitKind::Miss, {}}; + + if (hasBin) { + auto payload = fs_.readText(bin); + if (!payload) return {HitKind::Miss, {}}; + // Touch mtime so this hit moves to the front of the LRU. + touchMtime(bin); + return {HitKind::Hit, std::move(payload).value()}; + } + // Negative-only entry. Touch its mtime as well so frequently-checked + // negatives don't get aged out by an arbitrary directory sweep. + touchMtime(neg); + return {HitKind::NegativeHit, {}}; +} + +void LocalPreviewByteCache::store(std::string_view key, const std::string& payload) { + if (payload.empty()) return; + + std::lock_guard lock(mutex_); + + auto ensure = fs_.ensureDirectory(cacheDir_); + if (!ensure) return; + + const std::string hash = hashKey(key); + const auto bin = payloadPath(hash); + const auto neg = negativePath(hash); + const auto idx = indexPath(hash); + + // If a negative entry exists for this exact key, drop it before writing + // the positive payload so the two are never co-resident on disk. + if (fs_.exists(neg)) (void)fs_.remove(neg); + + // Eviction runs against the *new* payload size, not the post-write + // total, so we make room before writing. If the same key is being + // overwritten the existing payload's bytes are released first. + evictIfNeededLocked(payload.size()); + + auto wrote = fs_.writeText(bin, payload); + if (!wrote) return; + auto wroteIdx = fs_.writeText(idx, std::string(key)); + if (!wroteIdx) { + // Sidecar failure leaves us with bytes we can't safely serve later. + // Roll back the payload write so a future load() doesn't see it. + (void)fs_.remove(bin); + return; + } +} + +void LocalPreviewByteCache::storeNegative(std::string_view key) { + std::lock_guard lock(mutex_); + + auto ensure = fs_.ensureDirectory(cacheDir_); + if (!ensure) return; + + const std::string hash = hashKey(key); + const auto bin = payloadPath(hash); + const auto neg = negativePath(hash); + const auto idx = indexPath(hash); + + // Replace any existing positive entry: storeNegative is the upstream + // saying "the previous bytes are no longer the correct answer for this + // record". Free the bytes from the size cap immediately. + if (fs_.exists(bin)) (void)fs_.remove(bin); + + // Order matters: write the marker first, then the sidecar. If the + // sidecar write fails we delete the marker to avoid a half-written + // entry that load() would treat as a miss anyway but that contributes + // a stray file to the directory listing. + auto wroteNeg = fs_.writeText(neg, std::string{}); + if (!wroteNeg) return; + auto wroteIdx = fs_.writeText(idx, std::string(key)); + if (!wroteIdx) { + (void)fs_.remove(neg); + } +} + +std::size_t LocalPreviewByteCache::currentSizeBytes() { + std::lock_guard lock(mutex_); + auto entries = fs_.listDirectory(cacheDir_); + if (!entries) return 0; + std::size_t total = 0; + for (const auto& p : entries.value()) { + if (p.extension() == ".bin") total += static_cast(fileSizeOrZero(p)); + } + return total; +} + +void LocalPreviewByteCache::evictIfNeededLocked(std::size_t incomingBytes) { + auto entries = fs_.listDirectory(cacheDir_); + if (!entries) return; + + struct Entry { + fs::path bin; + fs::path idx; + std::uintmax_t size; + fs::file_time_type mtime; + }; + std::vector bins; + bins.reserve(entries.value().size()); + std::size_t total = 0; + for (const auto& p : entries.value()) { + if (p.extension() != ".bin") continue; + Entry e; + e.bin = p; + e.idx = p; + e.idx.replace_extension(".idx"); + e.size = fileSizeOrZero(p); + e.mtime = mtimeOrEpoch(p); + total += static_cast(e.size); + bins.push_back(std::move(e)); + } + + if (total + incomingBytes <= maxBytes_) return; + + std::sort(bins.begin(), bins.end(), + [](const Entry& a, const Entry& b) { return a.mtime < b.mtime; }); + + for (const auto& e : bins) { + if (total + incomingBytes <= maxBytes_) break; + // remove() is best-effort; if it fails we still drop our accounting + // for the entry so we don't loop forever on a stuck file. + (void)fs_.remove(e.bin); + (void)fs_.remove(e.idx); + total -= std::min(static_cast(e.size), total); + } +} + +} // namespace ccm diff --git a/core/src/services/CardFilter.cpp b/core/src/services/CardFilter.cpp index a16ff3f..033cad4 100644 --- a/core/src/services/CardFilter.cpp +++ b/core/src/services/CardFilter.cpp @@ -63,4 +63,20 @@ bool matchesPokemonFilter(const PokemonCard& card, std::string_view filter) { return false; } +bool matchesYuGiOhFilter(const YuGiOhCard& card, std::string_view filter) { + if (filter.empty()) return true; + + const std::string needle = asciiLower(filter); + + if (containsLower(card.name, needle)) return true; + if (containsLower(card.set.name, needle)) return true; + if (containsLower(card.setNo, needle)) return true; + if (containsLower(card.rarity, needle)) return true; + if (containsLower(to_string(card.language), needle)) return true; + if (containsLower(to_string(card.condition), needle)) return true; + if (containsLower(std::to_string(card.amount), needle)) return true; + if (containsLower(card.note, needle)) return true; + return false; +} + } // namespace ccm diff --git a/core/src/services/CardPreviewService.cpp b/core/src/services/CardPreviewService.cpp index 80b5e9d..0c3d70e 100644 --- a/core/src/services/CardPreviewService.cpp +++ b/core/src/services/CardPreviewService.cpp @@ -1,8 +1,46 @@ #include "ccm/services/CardPreviewService.hpp" +#include +#include +#include + namespace ccm { -CardPreviewService::CardPreviewService(IHttpClient& http) : http_(http) {} +namespace { + +// Compose a stable cache key from the four lookup coordinates. Using NUL as +// a separator keeps the key unambiguous even if a card's name happens to +// contain `|` or other punctuation. +std::string makePreviewKey(Game game, + std::string_view name, + std::string_view setId, + std::string_view setNo) { + std::string k; + k.reserve(2 + name.size() + setId.size() + setNo.size() + 3); + k.push_back('p'); + k.push_back(static_cast(static_cast(game))); + k.push_back('\0'); + k.append(name); + k.push_back('\0'); + k.append(setId); + k.push_back('\0'); + k.append(setNo); + return k; +} + +std::string makeUrlKey(std::string_view url) { + std::string k; + k.reserve(url.size() + 1); + k.push_back('u'); + k.append(url); + return k; +} + +} // namespace + +CardPreviewService::CardPreviewService(IHttpClient& http, + IPreviewByteCache* persistentCache) + : http_(http), persistentCache_(persistentCache) {} void CardPreviewService::registerModule(IGameModule& module) { if (auto* src = module.cardPreviewSource(); src != nullptr) { @@ -10,6 +48,80 @@ void CardPreviewService::registerModule(IGameModule& module) { } } +CardPreviewService::CacheLookupKind CardPreviewService::cacheLookup( + const std::string& key, std::string& outPayload) { + std::lock_guard lock(cacheMutex_); + auto it = cacheIndex_.find(key); + if (it == cacheIndex_.end()) { + outPayload.clear(); + return CacheLookupKind::Miss; + } + // Move-to-front to mark as most-recently-used. + cacheList_.splice(cacheList_.begin(), cacheList_, it->second); + if (it->second->negative) { + outPayload.clear(); + return CacheLookupKind::NegativeHit; + } + outPayload = it->second->payload; + return CacheLookupKind::Hit; +} + +void CardPreviewService::cacheStore(const std::string& key, std::string payload) { + if (payload.empty()) return; + std::lock_guard lock(cacheMutex_); + auto it = cacheIndex_.find(key); + if (it != cacheIndex_.end()) { + // Overwrite existing entry (positive or negative) and bump it to + // the front. Replacing a negative entry is the "we got a real + // image after a previous NotFound" path - rare but valid. + it->second->payload = std::move(payload); + it->second->negative = false; + cacheList_.splice(cacheList_.begin(), cacheList_, it->second); + return; + } + cacheList_.push_front({key, std::move(payload), /*negative=*/false}); + cacheIndex_.emplace(key, cacheList_.begin()); + while (cacheList_.size() > kCacheCapacity) { + cacheIndex_.erase(cacheList_.back().key); + cacheList_.pop_back(); + } +} + +void CardPreviewService::cacheStoreNegative(const std::string& key) { + std::lock_guard lock(cacheMutex_); + auto it = cacheIndex_.find(key); + if (it != cacheIndex_.end()) { + it->second->payload.clear(); + it->second->negative = true; + cacheList_.splice(cacheList_.begin(), cacheList_, it->second); + return; + } + cacheList_.push_front({key, std::string{}, /*negative=*/true}); + cacheIndex_.emplace(key, cacheList_.begin()); + while (cacheList_.size() > kCacheCapacity) { + cacheIndex_.erase(cacheList_.back().key); + cacheList_.pop_back(); + } +} + +Result CardPreviewService::fetchAndCache(const std::string& cacheKey, + std::string_view url) { + auto bytes = http_.get(url); + if (!bytes) return Result::err(bytes.error()); + std::string payload = std::move(bytes).value(); + if (payload.empty()) { + return Result::err("Empty response body from " + std::string(url)); + } + cacheStore(cacheKey, payload); + // Best-effort persist to disk so the next app launch starts warm. + // The persistent tier is fire-and-forget: any I/O error is swallowed + // by the adapter, the in-memory tier still holds the bytes. + if (persistentCache_ != nullptr) { + persistentCache_->store(cacheKey, payload); + } + return Result::ok(std::move(payload)); +} + Result CardPreviewService::fetchPreviewBytes(Game game, std::string_view name, std::string_view setId, @@ -18,17 +130,114 @@ Result CardPreviewService::fetchPreviewBytes(Game game, if (it == sources_.end() || it->second == nullptr) { return Result::err("No preview source registered for this game."); } + + // Cache check before any HTTP call. The (game, name, setId, setNo) tuple + // uniquely identifies a printing for our purposes - the resolved image + // URL is always a deterministic function of those four inputs, and any + // edit to a lookup-relevant field changes the key automatically. + const std::string key = makePreviewKey(game, name, setId, setNo); + std::string cached; + switch (cacheLookup(key, cached)) { + case CacheLookupKind::Hit: + return Result::ok(std::move(cached)); + case CacheLookupKind::NegativeHit: + return Result::err("No preview available for this card."); + case CacheLookupKind::Miss: + break; + } + // Disk-backed second tier: previews persisted by an earlier app run + // get promoted into the in-memory LRU on first access this session, so + // subsequent re-selections stay fast without re-touching the network. + // Negative entries on disk are likewise promoted - the user already + // knows from a previous session that this record has no upstream image. + if (persistentCache_ != nullptr) { + const auto disk = persistentCache_->load(key); + switch (disk.kind) { + case IPreviewByteCache::HitKind::Hit: + cacheStore(key, disk.payload); + return Result::ok(disk.payload); + case IPreviewByteCache::HitKind::NegativeHit: + cacheStoreNegative(key); + return Result::err("No preview available for this card."); + case IPreviewByteCache::HitKind::Miss: + break; + } + } + auto url = it->second->fetchImageUrl(name, setId, setNo); - if (!url) return Result::err(url.error()); - auto bytes = http_.get(url.value()); - if (!bytes) return Result::err(bytes.error()); - return Result::ok(std::move(bytes).value()); + if (!url) { + // The two error kinds split here: + // - NotFound: upstream answered cleanly that this record has no + // image. Persist the verdict so we don't keep retrying. + // - Transient: network/HTTP/parse failure. Surface the error + // unchanged and DO NOT cache anything; the next selection + // retries from scratch. + const auto err = std::move(url).error(); + if (err.kind == PreviewLookupError::Kind::NotFound) { + cacheStoreNegative(key); + if (persistentCache_ != nullptr) persistentCache_->storeNegative(key); + } + return Result::err(err.message); + } + return fetchAndCache(key, url.value()); +} + +Result CardPreviewService::detectFirstPrint(Game game, + std::string_view name, + std::string_view setId) { + auto it = sources_.find(game); + if (it == sources_.end() || it->second == nullptr) { + return Result::err("No preview source registered for this game."); + } + if (!it->second->supportsAutoDetectPrint()) { + return Result::err("Auto-detect not enabled for this game."); + } + return it->second->detectFirstPrint(name, setId); +} + +Result> CardPreviewService::detectPrintVariants( + Game game, + std::string_view name, + std::string_view setId) { + auto it = sources_.find(game); + if (it == sources_.end() || it->second == nullptr) { + return Result>::err( + "No preview source registered for this game."); + } + if (!it->second->supportsAutoDetectPrint()) { + return Result>::err( + "Auto-detect not enabled for this game."); + } + return it->second->detectPrintVariants(name, setId); } Result CardPreviewService::fetchImageBytesByUrl(std::string_view url) { - auto bytes = http_.get(url); - if (!bytes) return Result::err(bytes.error()); - return Result::ok(std::move(bytes).value()); + // The by-URL path is used for fixed per-game card-back fallback images. + // A failure there is always transient (the URL itself is constant), so + // there is no negative-cache analogue to worry about; we just look up + // and, if needed, fetch+store. + const std::string key = makeUrlKey(url); + std::string cached; + switch (cacheLookup(key, cached)) { + case CacheLookupKind::Hit: + return Result::ok(std::move(cached)); + case CacheLookupKind::NegativeHit: + // Defensive: nothing in this code path ever stores a negative + // entry under a URL key, but if one ever ends up here (cache + // file tampering, future code paths) treat it as a miss so the + // fallback fetch can still run. + break; + case CacheLookupKind::Miss: + break; + } + if (persistentCache_ != nullptr) { + const auto disk = persistentCache_->load(key); + if (disk.kind == IPreviewByteCache::HitKind::Hit) { + cacheStore(key, disk.payload); + return Result::ok(disk.payload); + } + } + return fetchAndCache(key, url); } } // namespace ccm diff --git a/core/src/services/CardSorter.cpp b/core/src/services/CardSorter.cpp index b6ee0a5..ac6d9e7 100644 --- a/core/src/services/CardSorter.cpp +++ b/core/src/services/CardSorter.cpp @@ -170,4 +170,64 @@ void sortPokemonCards(std::vector& cards, PokemonSortColumn column, } } +void sortYuGiOhCards(std::vector& cards, YuGiOhSortColumn column, + bool ascending) { + switch (column) { + case YuGiOhSortColumn::Name: + std::stable_sort(cards.begin(), cards.end(), directional( + [](const YuGiOhCard& a, const YuGiOhCard& b) { + return asciiLower(a.name) < asciiLower(b.name); + }, ascending)); + break; + case YuGiOhSortColumn::SetReleaseDate: + std::stable_sort(cards.begin(), cards.end(), directional( + [](const YuGiOhCard& a, const YuGiOhCard& b) { + return asciiLower(a.set.releaseDate) < asciiLower(b.set.releaseDate); + }, ascending)); + break; + case YuGiOhSortColumn::Language: + std::stable_sort(cards.begin(), cards.end(), directional( + [](const YuGiOhCard& a, const YuGiOhCard& b) { + return asciiLower(to_string(a.language)) < asciiLower(to_string(b.language)); + }, ascending)); + break; + case YuGiOhSortColumn::Condition: + std::stable_sort(cards.begin(), cards.end(), directional( + [](const YuGiOhCard& a, const YuGiOhCard& b) { + return asciiLower(to_string(a.condition)) < asciiLower(to_string(b.condition)); + }, ascending)); + break; + case YuGiOhSortColumn::Amount: + std::stable_sort(cards.begin(), cards.end(), directional( + [](const YuGiOhCard& a, const YuGiOhCard& b) { + return a.amount < b.amount; + }, ascending)); + break; + case YuGiOhSortColumn::FirstEdition: + std::stable_sort(cards.begin(), cards.end(), directional( + [](const YuGiOhCard& a, const YuGiOhCard& b) { + return a.firstEdition < b.firstEdition; + }, ascending)); + break; + case YuGiOhSortColumn::Signed: + std::stable_sort(cards.begin(), cards.end(), directional( + [](const YuGiOhCard& a, const YuGiOhCard& b) { + return a.signed_ < b.signed_; + }, ascending)); + break; + case YuGiOhSortColumn::Altered: + std::stable_sort(cards.begin(), cards.end(), directional( + [](const YuGiOhCard& a, const YuGiOhCard& b) { + return a.altered < b.altered; + }, ascending)); + break; + case YuGiOhSortColumn::Note: + std::stable_sort(cards.begin(), cards.end(), directional( + [](const YuGiOhCard& a, const YuGiOhCard& b) { + return asciiLower(a.note) < asciiLower(b.note); + }, ascending)); + break; + } +} + } // namespace ccm diff --git a/docs/AGENTS.md b/docs/AGENTS.md index e40aa8d..b2619c1 100644 --- a/docs/AGENTS.md +++ b/docs/AGENTS.md @@ -11,7 +11,8 @@ Long-form contributor documentation that lives outside the source tree. - `dow-doc-build-locally.md` — complete local build/setup reference for Windows and Linux, including dependency management and troubleshooting. - `intro-to-new-developers.md` — onboarding map for new contributors: architecture, folder responsibilities, guardrails, anti-patterns, and links to deeper docs. - `testing-and-test-code-of-conduct.md` — testing workflow plus expected standards for writing and maintaining deterministic, hermetic, behavior-focused tests. -- `assets-and-info-apis.md` — reference for the external info APIs (set metadata) and asset APIs (card preview images) used by the Magic and Pokemon modules, plus the runtime flow through `SetService` / `CardPreviewService` and the error-surface conventions. +- `assets-and-info-apis.md` — reference for the external info APIs (set metadata) and asset APIs (card preview images) used by the Magic, Pokémon, and Yu-Gi-Oh! modules, plus the runtime flow through `SetService` / `CardPreviewService`, shared HTTP defaults (`CprHttpClient`, `Accept: */*`), per-game card-back fallbacks (URLs + bundled `ygo_card_back.png`), and error-surface conventions. +- `caching.md` — dedicated reference for preview-byte caching tiers (`CardPreviewService` LRU + `LocalPreviewByteCache`), cache keys and eviction, HTTP session reuse via `CprHttpClient`, and explicit non-goals (no error caching). - `README.md` — index page that clusters docs by area and links to all documents in this directory. ## Subdirectories @@ -27,7 +28,7 @@ Long-form contributor documentation that lives outside the source tree. ## Required follow-ups - After changing per-game seams in `core/` (e.g. `IGameModule`, `ISetSource`, `ICardPreviewSource`, `CollectionService`, `SetService`, `CardPreviewService`, `ImageService`) you **must** update `adding-a-new-game.md` to keep the canonical procedure in sync. The same applies to the UI seams (`IGameView`, `BaseCardListPanel`, `BaseCardEditDialog`, `BaseSelectedCardPanel`) and the composition-root wiring in `app/main.cpp`. -- After changing the Magic or Pokemon set/preview adapters (`MagicSetSource`, `MagicCardPreviewSource`, `PokemonSetSource`, `PokemonCardPreviewSource`) — endpoints, response parsing, name/number normalization, or the info-vs-asset split — you **must** update `assets-and-info-apis.md` so the API reference matches the live behavior. +- After changing any game's set/preview adapters (`MagicSetSource`, `MagicCardPreviewSource`, `PokemonSetSource`, `PokemonCardPreviewSource`, `YuGiOhSetSource`, `YuGiOhCardPreviewSource`) — endpoints, response parsing, name/number normalization, or the info-vs-asset split — you **must** update `assets-and-info-apis.md` so the API reference matches the live behavior. - After bumping a key dependency (`nlohmann/json`, `cpr`, `wxWidgets`, `doctest`) in a way that changes a public API used in the guide's examples, update those examples. - After adding a new file under `docs/` (or a new entry under `docs/assets/images/`) you **must** add it to the file list above **and** to `README.md` so the index stays complete. - Do **not** rename, move, or split this file without first updating every other `AGENTS.md` that points at it (root, `core/`, `ui_wx/`, `app/`, `tests/`). diff --git a/docs/README.md b/docs/README.md index 2ca0d78..ac791f5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -22,5 +22,9 @@ This folder contains contributor documentation for Card Collection Manager 3. St - [adding-a-new-game.md](adding-a-new-game.md): canonical end-to-end procedure for adding a new game module across `core/`, `ui_wx/`, and `app/`. -- [assets-and-info-apis.md](assets-and-info-apis.md): external info and asset APIs used by Magic/Pokemon modules and their runtime purpose. +- [assets-and-info-apis.md](assets-and-info-apis.md): external info and asset APIs used by Magic, Pokémon, and Yu-Gi-Oh! modules, preview fallback URLs / bundled YGO card-back asset, and shared HTTP behavior (`CprHttpClient`). + +## Performance & Caching + +- [caching.md](caching.md): preview image caching (in-memory LRU, on-disk byte cache, HTTP connection reuse), lookup order, keys, eviction, and what is intentionally not cached. diff --git a/docs/adding-a-new-game.md b/docs/adding-a-new-game.md index f9fa6f8..59b8190 100644 --- a/docs/adding-a-new-game.md +++ b/docs/adding-a-new-game.md @@ -37,6 +37,9 @@ A few traps to plan around now, before you write code: - **Lookup precision.** Some APIs return many ambiguous matches when you query by name only and require the set id (and sometimes the collector number) to disambiguate. Decide up front which fields make a search reliable enough to take the first result. - **URL encoding.** All query strings must be RFC 3986 percent-encoded before they reach `IHttpClient::get` (`cpr::Url` does **not** re-encode). The Magic/Pokemon implementations have a private `urlEncode` helper you can copy. - **Collector-number normalization.** Pokemon stores `4/102` but the API only accepts `4`. Whichever convention your domain type uses, normalize it inside `buildSearchUrl` so the wire format is whatever the API actually expects. Mismatches here produce empty result sets, which then look identical to "no preview available" and are very tedious to debug. +- **Name-matching strictness.** Some APIs reject strict exact-name parameters for real-world card spelling variants (e.g. hyphenation/punctuation differences). If your provider supports fuzzy-name search, prefer that for the first request, then disambiguate in `parseResponse` using set/print metadata. +- **400 fallback strategy.** If adding optional set filters can produce request validation errors (`HTTP 400`), add a second request path that retries without the risky filter and keeps disambiguation local in `parseResponse`. +- **Image variant priority.** If the provider returns both cropped art and full-card images, prefer the full-card URL for selected-card preview. Use cropped variants only as fallback. ### 1.3 Flag icons @@ -138,6 +141,8 @@ Mirror `core/include/ccm/games/pokemon/PokemonCardPreviewSource.hpp`. The header - `static std::string buildSearchUrl(std::string_view name, std::string_view setId, std::string_view setNo);` - `static Result parseResponse(const std::string& body);` +If your game benefits from edit-dialog metadata helpers (for example auto-detecting collector number / rarity), you can opt in to `ICardPreviewSource::detectFirstPrint(...)` and route it via `CardPreviewService::detectFirstPrint(...)`. If you need to enumerate multiple upstream printings (for example Yu-Gi-Oh! “Next” cycling between alternate `set_code` or `set_rarity` values), also override `ICardPreviewSource::detectPrintVariants(...)` and expose it through `CardPreviewService::detectPrintVariants(...)`. Keep both optional per game — default behavior should remain an explicit unsupported error. + Both `buildSearchUrl` and `parseResponse` are static and pure on purpose: every URL-encoding and JSON-shape rule is testable without HTTP. Common edge cases your tests must cover: - Names with spaces, punctuation, or non-ASCII characters (percent-encoding correctness). @@ -328,6 +333,10 @@ In the constructor: The reference implementation is `ui_wx/src/PokemonCardEditDialog.cpp`. +When an extra field is from a controlled vocabulary (rarity tiers, print types, etc.), prefer a dropdown (`wxChoice`) over free text to keep list/filter values consistent and reduce user-input variants. + +If the external API expects a full print code (e.g. `LOB-001`) but users mostly edit only the numeric suffix, expose a numeric input plus a read-only derived preview (for example `(LOB-001)`) and compose/decompose the stored full value in `readExtraFromCard()` / `writeExtraToCard()`. + ### 5.6 `GameView` This is the polymorphic glue between the new game's panels and the rest of the app. Create: @@ -452,6 +461,8 @@ Run, in order, from the workspace root. Do not skip any step. These do not match a single seam in this guide but are worth calling out explicitly. - **Stale set caches.** Each `IGameView` caches `std::vector setsCache_`. After `onUpdateSets` succeeds, refresh the cache (assign the new vector). The reference implementations do this. +- **Set ordering drift.** Keep set lists sorted by release date not only in `SetSource::parseResponse`, but also at UI consumption points (preloaded/cached vectors passed to `BaseCardEditDialog`). Older on-disk cache data or future parser changes can otherwise surface unsorted set pickers. +- **Auto-detect feature scope.** Treat print auto-detect as a per-game capability. Do not assume every game supports it; gate UI affordances behind game-specific dialog logic and source opt-in. - **`signed_` / `signed`.** The C++ field is `signed_`; the JSON key is `"signed"`. This is intentional and must not be changed. The same convention applies to any new field where the natural name collides with a C++ keyword — pick a trailing-underscore C++ name and an unaliased JSON key. - **Spacer column index.** `BaseCardListPanel` reserves index `0` for a hidden zero-width spacer column (MSW comctl32 image-list gutter workaround). Real columns start at index `1`. If you ever need to call into `wxListCtrl` directly from a derived panel (you should not), remember this. - **Preview-fetch threading.** The async preview fetch in `BaseSelectedCardPanel` uses a `shared_ptr` + `std::atomic alive` + `std::atomic currentGen` triple. Do not capture `this` raw in any background work you add to a new game's selected panel; copy that pattern verbatim. diff --git a/docs/assets-and-info-apis.md b/docs/assets-and-info-apis.md index 4594bc6..8242292 100644 --- a/docs/assets-and-info-apis.md +++ b/docs/assets-and-info-apis.md @@ -26,27 +26,92 @@ Used by `PokemonCardPreviewSource` to search by `name` plus optional `set.id` an The Pokemon source also normalizes collector numbers before request build. For example, `4/102` is reduced to `4` because the remote query expects only the printed number component. +## Yu-Gi-Oh! APIs (Yugipedia + YGOPRODeck) + +Yu-Gi-Oh! splits its remote calls across two upstreams. **Yugipedia** is the primary preview source because it hosts actual per-printing card scans; **YGOPRODeck** continues to drive set listings and the auto-detect-first-print helper, plus a last-resort image fallback. + +Upstream documentation: +- [Yugipedia MediaWiki API help](https://yugipedia.com/api.php?action=help) (standard MediaWiki action API; we only need `prop=imageinfo`). +- [Yu-Gi-Oh! API Guide — YGOPRODeck](https://ygoprodeck.com/api-guide/). CCM3 uses **v7** endpoints only. + +### Info API: YGOPRODeck `cardsets.php` + +`https://db.ygoprodeck.com/api/v7/cardsets.php` +Used by `YuGiOhSetSource`. The response is a top-level JSON array. Each object maps `set_code` → internal `Set.id`, `set_name` → `Set.name`, and `tcg_date` → `Set.releaseDate` with `-` rewritten to `/` for consistency with other games’ date strings. Results are sorted ascending by `releaseDate`. + +### Asset API: Yugipedia `api.php` (primary) + +`https://yugipedia.com/api.php?action=query&prop=imageinfo&iiprop=url&titles=...` +Used by `YuGiOhCardPreviewSource::fetchImageUrl` for the actual per-printing card scan. Yugipedia is the only public source we have found that distinguishes art between same-passcode reprints (LOB Blue-Eyes vs SDK Blue-Eyes, for example), and uses a **deterministic file-name convention** of the shape `----[-Misc].` per [Yugipedia’s image policy](https://yugipedia.com/wiki/Yugipedia:Image_policy). + +The UI passes a positional tuple in `setNo` of the form `set_code||rarity||edition` (for example `SDK-001||Ultra Rare||UE`); the source splits on `||` before building filenames. Field meanings: + +- `set_code` — full code as printed (`LOB-005`, `SDK-001`, `RA04-EN001`). Everything before the first `-` becomes the Yugipedia `` slot (`LOB`, `SDK`, `RA04`). +- `rarity` — full English rarity name from the edit dialog (`Ultra Rare` → `UR`, `Quarter Century Secret Rare` → `QCScR`, …). The mapping table lives in `rarityCodeFor(...)`. Unknown values fall back to the rarity-less filename pattern. +- `edition` — `1E` when the user marked the card as 1st Edition, otherwise `UE` (Unlimited). + +`buildCandidateFilenames(...)` then produces a priority-ordered list: + +1. Printed edition first (`1E` then `UE`, or `UE` then `1E` for non-first), with `LE` last for promo-style prints. +2. English regions only — `EN`, then `NA`, then `EU`, then `AU`. **Yugipedia is queried with English regions regardless of the card’s stored Language**, so a German-language card still shows the English scan; this matches the user-visible policy in the edit dialog and avoids querying region-specific scans that are sparser on Yugipedia. +3. Both `.png` and `.jpg` extensions per combo (older LOB-era uploads are `.jpg`, modern reprints are `.png`). +4. A rarity-less fallback round so cards with unknown rarities still resolve in single-rarity sets. + +`buildYugipediaQueryUrl(...)` joins all candidates into one MediaWiki **batch query** (`titles=File:A|File:B|...` URL-encoded), so the entire list resolves in a single HTTP call. `parseYugipediaResponse(...)` walks the candidate list in order and returns the URL of the first filename that came back with `imageinfo[0].url`; missing files come back with `"missing": ""` and are skipped. + +### Asset API: YGOPRODeck `cardinfo.php` (fallback + auto-detect) + +`https://db.ygoprodeck.com/api/v7/cardinfo.php?fname=...` +Used in two situations: + +1. **Last-resort preview fallback.** If Yugipedia returns no candidate match (cards without an English scan yet, transient API errors), `fetchImageUrl` falls through to `parseFallbackImageUrl(...)`, which prefers an exact-name match in YGOPRODeck’s `data[]`, otherwise the first row, and returns the first entry from `card_images[0]`. This is intentionally **not** filtered by `cardset=`: when YGOPRODeck applies that filter, it reorders `card_images` so alt-art passcodes are promoted ahead of the standard art, which would re-introduce the “wrong artwork” bug we fixed by switching to Yugipedia. + +2. **Auto-detect print (`detectFirstPrint` / `detectPrintVariants`, Yu-Gi-Oh! edit dialog).** Uses `fname=` plus **`cardset=`** set to the **display set name** from the picker (must match `card_sets[].set_name` in the payload). If that request fails (for example unknown set label), it retries with **`fname=` only** and still filters prints by preferred `set_name`. `YuGiOhCardPreviewSource::parsePrintVariants(...)` walks every `(set_code, set_rarity)` pair for rows whose **card name matches exactly** (case-insensitive) so the dialog can offer ring-buffer **Next** controls: one cycles distinct `set_code` values for that name+set (and resets rarity to the first upstream rarity for the newly selected code); another cycles distinct `set_rarity` values for the **current** `set_code` without changing the collector number. Shared HTTP and parsing rules live beside `parseFirstPrint`. When the dialog passes both an exact card name and a display `set_name`, an upstream miss on that label returns an error instead of falling back to unfiltered `card_sets[]` rows — otherwise unrelated products (same card name, different `set_name` on each printing) could be blended into one bogus variant list. The Yu-Gi-Oh! edit dialog additionally drops European alternate `set_code` rows that use the `-E###` pattern (single `E` before digits, e.g. `LOB-E003`) when the card language is **English**, because YGOPRODeck keeps those alongside NA numbering (`LOB-005`) under the same English `set_name`; it also collapses `LOB-005`-style and `LOB-EN005`-style codes to one **Next** slot via digit-tail matching (`ccm/util/YuGiOhPrintingSlot.hpp`). No image data is needed for this path, so Yugipedia is not consulted. + +YGOPRODeck publishes rate limits and asks clients to cache responses and avoid abusive hotlinking; treat failures after burst traffic as an upstream policy signal, not an app bug. Yugipedia’s MediaWiki API is similarly polite — one batched call per preview lookup keeps us well under any normal threshold. + ## Runtime Flow In CCM3 -The app uses the same flow for both games: +The app uses the same flow for every game that registers a module: - `SetService` asks the game's `ISetSource` (info API) for the latest set list. - `CardPreviewService` asks the game's `ICardPreviewSource` (asset API) for a preview image URL. - `CardPreviewService` performs a second HTTP GET to that URL and returns raw bytes to the UI layer. -- If preview lookup fails (or returns empty bytes), the UI fetches a per-game fallback card-back image URL through `CardPreviewService::fetchImageBytesByUrl(...)` and shows that image in the selected-card preview panel. +- If preview lookup fails (or returns empty bytes), the UI loads a **per-game card-back fallback** in `BaseSelectedCardPanel`: Magic / Pokémon call `CardPreviewService::fetchImageBytesByUrl(...)` against fixed HTTPS URLs. Yu-Gi-Oh! tries two Yugipedia URLs (thumbnail then full `Back-EN.png`), then reads **`assets/ygo_card_back.png`** next to the executable if both downloads fail (bundled asset; see `app/CMakeLists.txt`). -Current fallback image URLs (kept in `BaseSelectedCardPanel` for CCM2 parity): +### Caching And Connection Reuse + +See [caching.md](caching.md) for a dedicated reference on preview cache tiers, internal keys, eviction, clearing, and HTTP session reuse. + +Three mechanisms reduce preview latency for **all** games (Magic, Pokemon, Yu-Gi-Oh!). In addition, the shared HTTP session speeds **every** `IHttpClient::get` call (including set-list fetches), not only previews: + +- **In-memory preview LRU** (`CardPreviewService`). Successful `fetchPreviewBytes` results are cached keyed by `(game, name, setId, setNo)`; successful `fetchImageBytesByUrl` results are cached keyed by URL (used for the per-game card-back fallback). Re-selecting a previously viewed row is decode-only — no HTTP at all. The cache is bounded by `CardPreviewService::kCacheCapacity` (currently 128 entries) and uses a list+map LRU under a mutex (the preview pipeline is invoked from a worker thread in `BaseSelectedCardPanel`). **Source errors are split** by `PreviewLookupError::Kind`: `NotFound` (the upstream answered cleanly that the record has no image) is *negative-cached* in this tier so subsequent selections short-circuit without HTTP, while `Transient` (HTTP/network/parse failures) is **never** cached so a brief outage cannot permanently disable a card's preview. +- **Persistent disk byte cache** (`LocalPreviewByteCache`, port `IPreviewByteCache`). Wraps the in-memory tier with an on-disk store under `/.cache/preview-cache/` — pinned **next to the executable**, in the same scope as `config.json`, **not** under the user-configurable `Configuration.dataStorage` path. The cache stays put when the user reconfigures or relocates their collection data, and it is not part of the user's data directory backups; it is install-scoped, not collection-scoped. Both positive previews and `NotFound` verdicts survive an app restart. Each entry is a mutually-exclusive `.bin` (positive payload) or `.neg` (negative marker) plus a `.idx` sidecar containing the original key — load-time mismatch on the sidecar treats the entry as a miss, so a hash collision degrades to a one-time HTTP refetch instead of serving the wrong card's bytes (or the wrong card's "no image" verdict). Hashing is FNV-1a 64-bit (no crypto dependency). The cache is bounded by total `.bin` payload bytes (default `kDefaultMaxBytes = 64 MiB`) and evicts oldest entries by mtime when a new write would exceed the cap; reading an entry touches its mtime so frequently-viewed cards survive eviction. Negative `.neg` markers are tiny and not counted against the cap — their count is naturally bounded by the user's actively-viewed records. Filesystem mutations route through `IFileSystem`; size and mtime queries (which the port does not expose) use `std::filesystem` directly inside the adapter. The persistent tier is **fire-and-forget on the way down** — every adapter operation swallows I/O errors so a flaky or full disk never breaks the preview path. +- **Persistent HTTP session** (`CprHttpClient`). The adapter owns one long-lived `cpr::Session` (libcurl easy handle) for the lifetime of the app. Per-request configuration is limited to `SetUrl(...)`; headers, timeout, and redirect policy are configured once in the constructor. Default **`Accept: */*`** keeps JSON responses and raw image bodies working on the same session (avoid tying every GET to `application/json`). libcurl's connection pool keeps the TLS connection to each host warm, so repeat calls to `api.scryfall.com`, `api.pokemontcg.io`, `db.ygoprodeck.com`, `yugipedia.com`, and `ms.yugipedia.com` skip the TLS handshake. A `std::mutex` serializes callers — libcurl easy handles are not thread-safe, and the preview pipeline is single-flight per panel anyway. + +`CardPreviewService` consults the tiers in order **memory → disk → source/HTTP**. On a disk hit (positive *or* negative) the entry is promoted into the in-memory LRU so the next click on the same row never re-touches the disk cache. On HTTP success the bytes are written through to both tiers in one shot. On a `NotFound` source error the **negative** marker is written through to both tiers; on `Transient` source errors nothing is written, so the next selection retries cleanly. + +The combined effect on the preview path: first selection of a previously-unseen card pays one TLS handshake per *new* host this session (typically two hops for Yu-Gi-Oh!: `yugipedia.com` for the API, `ms.yugipedia.com` for the image), each subsequent fresh card on the same host skips the handshake, any re-selection of an already-viewed card is instant, after the first run with the disk cache populated **even a fresh app launch is decode-only for previously-seen cards** until eviction or a manual cache clear, and **records the upstream cleanly has no image for** stay "instant card-back" across restarts instead of re-paying the lookup every launch. Editing a lookup-relevant field of a record (name, set, setNo, or for Yu-Gi-Oh! the rarity / edition packed into setNo) changes the cache key automatically, so a fresh resolution attempt happens on the next click. + +To clear the persistent cache (for example to recover from a bad upstream image), delete the `/.cache/preview-cache/` subdirectory or the umbrella `/.cache/` folder. Note: the in-app "Reset" / data-storage-relocation flow does **not** touch this directory — the cache is install-scoped, not collection-scoped, so it is preserved across data-dir moves and only cleared by deleting the directory above explicitly (or by reinstalling / relocating the executable). + +For the full caching design and contributor rules see the dedicated [caching.md](caching.md). + +Fallback card-back sources (`BaseSelectedCardPanel`; Magic/Pokémon URLs match CCM2): - Magic: `https://gamepedia.cursecdn.com/mtgsalvation_gamepedia/f/f8/Magic_card_back.jpg` -- Pokemon: `https://archives.bulbagarden.net/media/upload/1/17/Cardback.jpg` +- Pokémon: `https://archives.bulbagarden.net/media/upload/1/17/Cardback.jpg` +- Yu-Gi-Oh!: Yugipedia English TCG back — try `https://ms.yugipedia.com/thumb/e/e5/Back-EN.png/250px-Back-EN.png`, then `https://ms.yugipedia.com/e/e5/Back-EN.png`; if both fail, load `/assets/ygo_card_back.png` (shipped from `ui_wx/assets/ygo_card_back.png` at link time). `fallbackImageUrlForGame(Game::YuGiOh)` returns the thumbnail URL for helpers that only consult a single string. If a game module does not provide a preview source (`cardPreviewSource() == nullptr`), preview registration is skipped and the UI behaves as "no remote preview API available." ## Error Surface And Debugging Intent -Both source types return `Result` errors so failures cross boundaries without exceptions. In practice, this keeps failures debuggable by separating: +All source types return `Result` errors so failures cross boundaries without exceptions. In practice, this keeps failures debuggable by separating: - info API failures (bad set payload, schema mismatch, endpoint/network failure), and - asset API failures (query mismatch, no matching card, missing image fields, image download failure). -When previews fail, verify request construction first (name sanitization, number normalization, percent encoding), then verify response shape assumptions (`data`, `image_uris`, `images.large`/`images.small`). If the fallback fetch succeeds, the panel intentionally shows the card-back image and the inline label `(image preview unavailable)`. +When previews fail, verify request construction first (name sanitization, number normalization, percent encoding), then verify response shape assumptions: Scryfall (`data`, `image_uris`), Pokemon (`data`, `images.large`/`images.small`), Yu-Gi-Oh! Yugipedia (`query.pages..imageinfo[0].url` per filename, missing files tagged `"missing": ""`), Yu-Gi-Oh! YGOPRODeck fallback (`data`, `name`, `card_images`). If the UI fallback path succeeds (network card-back and/or bundled PNG), the panel shows the card-back image and the inline label `(image preview unavailable)`; only if every fallback fails does the preview stay empty with status text. + +For Yu-Gi-Oh! specifically, when a printing shows the wrong art compared with Yugipedia’s gallery, debug in this order: (1) verify the candidate list via `YuGiOhCardPreviewSource::buildCandidateFilenames(...)` against the actual file names on Yugipedia’s `Card_Gallery:` page; (2) confirm the dialog rarity name maps to the right code in `rarityCodeFor(...)` (extend the table when a new rarity surfaces); (3) confirm the `firstEdition` flag matches the printed edition stamp — the candidate ordering puts the printed edition first. diff --git a/docs/assets/images/demo-ygo.png b/docs/assets/images/demo-ygo.png new file mode 100644 index 0000000000000000000000000000000000000000..ed7db118621a173dfa17c5727683617d08f23bf3 GIT binary patch literal 716852 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 F~o|MrQ3^RV0e0C7eB-dQwP5*7N6iMJw+ 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.bWASE3$14ZhQ!R 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

q);us|zVBE(p(6Qk-X6cvjFMN#?yZU+NOB_1(( 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 #ZeaS6XVA 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%0DDMzNCBvIBQF|McP_KuL@fnYWqd(UVzP$T| zoujf7b>p6#RwVFe*RcZQiqP3J1kd~BHt(oj<=1}x>!oRbyJ-F|aG>*=W`l3I3xUVH>jkrZtP#ze6$xU!mXmF(Gm6b@a!^uU z`)d9pMCHc`mj7XS@-IP`NQ8(J!z?DXM)(z<-9XaU)jiZw&zmq7|0LSnCq%Ey6Dv{u z{WrtC4!fF^>R*tmvU2amL>xm=^MO0i9BL~S+54+P+8pN_jIxrKa5vIzcjkzNR zhZ`mQ?0E!8f*|1~P%Z3CvWuXc>Z74ubp%yUx~0EV{$cw(G0}#qEHxT7L4`+**#w2A zhWi~VC~_#$9+RF_yQ+7gQm2KlRS{qZ`SOJS6Vy~jl9Ok~&dn_R?I{s^iGY{0oF$io3sPauvvzgLD$pvds=+gnUG|iP zj6TJybm|X*?cBXAmfPJ@nEH%(t5wRa>gx0-hwZ_|2@Hsm=!^lzn*(E|O z`1z-CuFm+254c?CP!QM5in>DtzBuf}!x}&?)FEmz-^={sNA?2hFe0HbEN4{dhYrX)qeTru=&l0|` zh%@&^H0kvUuplQ$n9H3=l<&VLNw)(_7HbaR(MSI&C|_+`NC7I?M6c^EPy%G>^kYS} z0bO$2{PU+@S_ian@zTIdWEi6$>kgo(w`@z9yy$qM94(H!mb4C~v$7Vh+Ps>C1s+F!#1Sz=KalcJ$KE8B>hCvQu@&SC`2a5O$5C)7rpD(P+K0iQrbFs0QnF5aJMh z`MSd1kO{8xTlVu7kwG6Q?|5QAs$ov#FbA&jL|?Kc8C>r7Q~5zmp1!bj^G$}?rjxHs zE|M69YG7f%UhFPEpprm2kKPpgT|~(m`*&5b4g@>8ez})|ugH6QdxqI9BkR$zDVt*w zCIP=dtM-btiH-8u%I_+bcRlt!+g~1dxJei6J9nQ*OVXegfKb*p-Sk z%lOA%1~1-;+t-&ebLzggKe(Jxy+Tah+>HHh>5obsI=m4KyzT+YO6ukp095eaQ@qVu+*caEizD-PxYX9lj<;35YG`9)|2XAyMauz*LHvq7CB|d_fg&6o zYQFY>@v>3*XHlH7JNu)mz4dmd^DMrK-Q}1*o#u2I%-wVb>Fs1w9wGR)525gMl*5Gj zdtG*W#t~`ILs5#5%TK4XyvYkn>(~2i5ANQfF?)i37c_guB7RL3p_NkFR)RKL6Cox( z!D_Fl8hBH#rZWTQ8)IPD4PCrV3#anolZ0y4_l$MSt@EY4!ZP>0A$|y5?tw2s?>O_9 zi_?4+u2#={`K^G$JG=%8_2Re^@!PNy zKX=OOSv-IGWX|6BidC!D;&}L}8T8)89O4LjM;4H!BI1eel@OfV{a3-7M%UjY>hD$@ z+HQNY`SBYX^8x!=%MT8Dwgf$ZED6!Tqq6T8;@$W@Bf50u+tp_m=5!7G-ckeogOg~b z?F?)@+Ke`EZ$-x19(d!4d*0mw#sUcjs0afV;ioOQK}M=xztdHO|H;^=9q9*Iw= zyDesWo#dpm#O2D6`H+Vzo;K?}Z>DkPNw#%HnUmR3NIOKEL9=Fp<1*p<+cDPJEJ})1 z_03x<@!Xx8ceApGUDUxdVF_`eAEWd|tH{BxSQ1G3~1t$##5z5UWR6m>w2Gr<(uNbdwv=npes7WR7LsDe1)qsRWDC)!UdgemD1I zTy{NU>KcT2ZSn#Z)Turkiy-h z?1~5tibX_w@w6V!`S{|T+d2FU4Srowdn$RqosUtMSWI>&#_AcXQ@>_gYFiIwwix%$ ztGhcmQnmO-6$p$kwnI&fbD7&Vq&EF`l&YDJ8_>LFa{;<;_0CFnt4&cC=daIiO~@?W zcko9nhKH+hHgDiW9teSgdbZ$Ls*dr&!YN-`G;Yw5>ZsIx5<>;*W;4#|3-5w!^h1>& zuj@bMhkhLbkso0S8r*>uITM9?>!&(j+uj}c=drhFGt1&!rmR(J<)DIqU7`-pfG8K| z(DNHX>U!y}kEZrtxFTU4WY?XI%eO*^VbE5&zZ;JsvXM@@lhc4fI1rCp3J=&+Xb#|# z1*1QQr*HQ%6eA131G%_K5%%Vo$D91Q%|1j53 za^`57h(vve?O!;V!G-|CBV?U775#scDJ*5^kD9lAl4g_>PuN>xbmg&TwWq0u?mHlo zXvxUc+TBD;0zLIBp}h53%w(R@jI3OWyeW;ZskNsbno=|%#YFj1$jM1bO>@G-!xvPc za72nL32f?@FI{B2exGEK#gney|C{54-kl{en(N~Zm}UBQVubyn{@(eY)B@!6-17E{ zHUDyNmDy^cM4$a@_53i?AJavng1m+qK`GHr^^z`qNnYWc9HFyiub&nML}^+w>HbYl zCp$fxZ1557AdgJ5&cRvzpj5L=`GNjMA;Go2>P%e^tgT0A&uG1Isebt`KWYBY9`x@_ zc5VPr zeG}gj+SO)DN}3c9 zTYK}@VMGIX1i4fAg99xm!;apw`|Ok(DSrl0O#X^2xDj$htq##%lpeIt@qmnKnGKg( zLo$&_I9EAa=434@zpogSEvf%$aXNk`obcE%qZw^%+YG0ci`Sm|V}Qz8Wktx1;CjcW zw(rLYUV`uuju;o>aMoe3FmatHWhrcEYDuYKYib49yDsCBA%b(oR@Gg08L-y>1ZiYj zn=j(qN0=Y9oVy#C6jS3l?N z-4u@U=2xJEeg*x!_16CLTq&Q3MlqmhI$5vI_h*BDZhcMXaHf3>qdo!VMmDc+gxK?m z&!nJN*4)(lPn{`aGd4f6zD`?ytQi;NtzHJhqgf)B+u3?&_AZ;gX{*)r&Fx)#mhUes zJgtKEyJ)dsYBz&fy_KKio?kW^vvXOe&J?zG+PD4*Z#}b!d|O-|xmt82UfopEapqY# zma~fwQ27343Pe~IToh~W8f>&yxqUmH`}Ohnu|+?U!XpmMr)Kf6z>r}CYr)@ULo23u zYPNOAu7Tw?p29gR5pcG?&vv^W({ZzIt1R-!Xzg6BcHEM@5x^exc(a+V73q~EM;pnf zz_{g|gJ%+uJf=W#XwVgk&dA~M!L{jqORs}#DCrwZh5jS7Z;c-!hq2)HZ4al~?Ri4S z`?}TI=luoq`H9r?egt?|7OP`q>htDd?7hQ2XL(Cf;4B_|1JioF1Z@zLQvUG|GsYMF z_(Iv2-PVkxk9g&<-v6GsM%XJ0&$xZ~`Iz1bKh8SPm9CDreo$Y{@@bk*PpZWE)M*t5 z!Fq?k-U^#;rr#4b+9O*M3O~l7U0jqZ5mKn>7+qgE@^%!XWpfSndq8K?=PfqfVp$BtTF22r3-n8+~W&o-))xtlh{wKDu%9NUQ>iytnpef_wRZ*saxyVxYU zlhkmeZe2+=;IIUmty=jW*XDp@2_8=IS*|<$N%pi+ua< z8CAB^!oPRY4H#;@@2QRTj=z2T9tr+f>o~;hM0Fswyo~=;ca2@H8Lim?ZR8gYm*GbY z`_^a&ou1{Iza(iwHu;9X%Twq7hv;7~dp&sCakEQJqr)KSo29VL;&$(V(b*ocskG5h zT90}rEXwW`wa}=Ad|93x@f2oT!qPo?d}Mq$fahGh+LRfuEY>18);~a?{Z5aPZhSBi zgQa-z&z>d$KrSxWzA3A0G}K^Npr|=>D#kQ5+MoSP_+7BH`$teFxl%`IdXOS9m%!); zTiJy1&OO<$!!Vu6tHC&S50k9=9o{x#WRbzm^%K{=22M_76buQSHP9%86YpK>tsfJ8a*=8*UH9lEwZe2iN=B)iVK zB&HR@dUuJJrj+Vw6mhG&CRb3FGKaY^MI#em-lUkjeR5H-_-@38UCZO0@Qa|)XN7y0 zBp|j(G(D=T*rwGH#ss*GG6PsAgz>i!aT{xCJl-LF=HK#lmWVUh@>IaHFT0*dLYq2@d$s)# zu|Yh_y~GHm2tsrTARB97J)P-mGV*63N2Nf7F7q$PzyfX3mhh(#O+%ta+Cq16z*}-nl&EE(Sr8Aq(a+Rx#r2tr2zKC~ z5H%s|G|GXijbLtsB)Rbte zFte0w`S?KL>#MHYHKJcN3f(z%J<1lCPDFw-ot!pTRF z$#*iDi^H_EkF>uYGNhnz7uPAYo~i0rf!W)8cklUd2d(vTzp9RFmE#$8wDmMw!k9>@ z?G@FZ-+e&?+d81UXGcu`UtGOYbR}Qd?cJSDcWic&4tH$Zwr$(CZ6}?M)v_HkylI$3OO`nHEwovdA0F?YY5Jc zG-47;!ns_X=`i%hw_n(lsS4Luq0#hUy+pB{*1Q!NaDT@e6^LQ9pnLW^TKBP52C2bJ zxn?DU6|TbW-zs96N6^1OKQ<)9ggD$ibF<7=zu?d^O{sBG2<NP1(NM08u+}wX|oOhYi;)4B$`(J(q1G<==;Vk ztei_nzd|&yPWQujWg7^TRGa<{S5}d0#huk{YP(rpV-bm79uU1ic}Il**x+`rcRl>F z;_>_8K@Ti#lv9H+wT)}7@0qeWm=gA0X>}&gYBK`3e!;2$P7EGSCDbfBs=>~yl~+^Ic zrWsq4h(U-}mT}KY5!ovPiTAtF$&G20m8u!ZP#j*vdJh*XgBJd{=eArR|H?y!@>2AI;TCjJUtt$?q>bJA?K(p984g`ifzh%?-qI8M?*} zwho!LIK>X?r24SRahdhci&jf!53IE>FK)<}8^f)osJFH%kX{bXCPDO1GP)~oF9&dn zGj{h3I7PXvwZGfpUg?g=J9VOx%r=J#L%B8ho>B;F!o2??*P)uw<(Pc@*topC%;}Ue zeKqHBGzh7)`*r1TLapQVLDTAlur{HnscTk}K$e|~Gi;<>lR841g1gk>ULa>@nAncHE=IbL72Lk^$x3&%-{T)T5(-X=R0wI!6eBE5zY9KRh_+^3Id-2kGgNn>!!HBi>3 zhkCp()HF34E~T(N3ZGRf`T?xpy@2xEt8Q;Od{Pthn#1M`fRb^1CVAOGp&l%EJ{=@&05hftW5JJEh>vaqR7twv;E($R)vn| zHBGA#hIds&<}~AJYGyXAfi`|62IH-1S_;eY!-4&#K*+WV;{qFM8H?_v=cRh73XSNn z54Rfvcrgj};ubdM=BV{&*B1YAEG@p9zBaB~+05Kx`r4juJ-cHLUGs*Lga zl)3bfviWlVU-;#&gnc8#O>pmkGr8ySD;ngn;g4Z9P!pr00aYYQJSfek)cw#g4v%;0 zdKUe>O}>{^LFwJ5?N;xi>l7cKqbt3WyIrDO{ z-9Oj=)BeBEw~qw=kA?;r)@pcz`nHaN`8}gXA78h?CLE1A>@q}*Rpp{d7|a7Hn#w@+ zsyep|)LS5^mgJ2n0$I&0gHAdk4h4~5eLU`b?dQb|F4`+%(;RAg4!`(jy(2gcZBb@% z9%X?h1=qPe;;_3DNewHUr#U$if#PH>`D zs!%B$VuxnH^;cx1byxPsUt3_=_4&XS>OX@zAjkMqrXwtL&<#L(ob5Zg7*%H-oDM*?x|~GZ;nk{BToabs;@KQk!epK_!3GaWhpqK zkyKIj_<=ajEoh`(Gb|qQ;p(oI)ldnLbP^EIMLjdzL zL8%QPqW4%BRp8_E_alMm14i00S~beN?#x*m;{Q zfh<1|Nxnl-E`=R+KVrA?2z{bD_ROQaWbbglgHd8XrA(#0oG(Qi(3U_61;LIfet9BR z#3XZ|HiBi{LKk8uVOtfUTl3EgzbimNDM1xMR~be$;Iti52w8sc=Nd3}!~0=oZ7KS+ zmF6&AQzOIN(JyYl7;ju!T1Hl;j)Q%Ab&LvVDLy)AQl*GgfU;jX6JbqeAwoYcBnE@= zCrY$ap;)WZKus2cT_6p>bj)&|$|Daz`Yz>E3nDrZ$dl?}L!Xc>0Qhb3|Gw`&(<6ucmM9I;q1oMoR zzD<;eTZgu&MQGmEp3pV@7Hw6@SE5m-OiOr6__&}0yF`jN>t~Lpz8@oI`2k#P7b&D#?k8CKaZl2nai<3#6eWp*P(Qb5N_=T> z2(}~eJ3_7DKb!jPvik*ZJ;iQqtMj|EyA$9HV6Ti3{Y0&(xq07uH-B3s$UPLg#CrCB zJJ{MkB)~RVJDv zBfP`*?vbsJhyQ+yXVlI&wQug9<^RzAX6?81j!p16ZhWD(Z)TRf!SrOyyoz-`E)_xT)Y^_$T5U+`1;lxny}#BUTBL~2W1 zn6q_-NCH5IBIs;SHc*MR#dG7YjrRQWb&1n2FNpUa)krB`;4uaAa3+ z`tro8@q+JvHT{Y5xkHL(eaZfG`Efwm%` zePhhV{I%=d=VXM+{|4zp{G-?Y1I_PndfK@P<+F&_f-Nw@jsQUELQ zJb%wLw9bgWA=g&i+~VXx-5P2xTQzTU()Ul~N}kly&&1Em&!@+y^V7~d{wM0UN&PoG zf-T>*BE^RF&)duE8arz9j-`SBQrpG^5Exe9Id17Pkv$a<5JfqeHRqCCQIrL z9RL#|}&4S^9yc!v^swK;x!CNeMCq)9hpeI$@T290nj+3C^a z_A*?qG>7w5c8uhHJbZ?KzRQzkuHIqz?b?5CJ-_hk+SvI|yEj{0yEW3>Y)f|CC88f> z^6&V+Kk#q+za07xNPqX(qNA8}ybODVk&H|#{?ITtb;{_n6@Tvb;n{oZel~yW_P-^# z)%L&QIUL7@6Wuj$<@Bb%PZ%ALEG3pbpv}15qkkj%ykqxI_UG+R=9Pb^@_)CMzfL^A zbV$*{wA@DNdeXo-?CU=Ce+6HZ;Jtx=Z;yA4XvYo7ipg;I6y>ojj)aA>Kg${m|`i(MpVqb z55bz_RWLHqc#C1czUQ*t-QUHNl<|cysCL=y&-O%GFx)G+4v& zl@^X!IM?G1KU_^FqK}%mse{fxNSyQQCO2vx+t5 zy;NvwFaf09?x{2x!(l)|@9Y?R%*JYqDl=tJg`E(9%j2*sU2vL(1 z#u^J{6^5p^UVoDgIy#Fe6aWmu(5g^ww(TGsz}kj_n7+N{CD^)VlxBr(RRteoJM2PoQ>WKUZ|fd9kC)b!OE@) zCv=7@1zjpdjkQvihOvEbRO8I!G_w1nUPjCAJ1JFGJ*afg4JVg~#B1wxf1i0R1NO5HYkRd=$b(H~D3;8O* zvb0~7<>9(W4wVU73;8JPwCMZgw~#^VTvt9Rs*v zI^!Tay@C#{@dBRC5;-!m6e{p?8%0mYWJ?})Ej|;^j zu63(5CF3t7qp(qUkvCCznlmDa7qi~KM{~0hFIb2V3L^!6sj4aBP}`w%j!_Y4&aC4g zi^8!N9MbX$xW&xcS1LSh+TX_ey)QlA-w$sc`aiRqx18A+UJ^xmkWfwj>F!D8f5m!B zCaB!DvK`2xf8(%V#9p3GvxAy!D5SWHO`+B>{Z8E#${P+ql_YG>`bZ>txR-a@uk5jk zSUh+Wt^Qc~?B##&Ws37Ued;)2YQ20j_B(u4&nQ1JLI37IXd-%M28!eOwIN^>F+XF7 zzwVp5pc&marj4{K-dF$c%(SF2`_6{Iw#VA@vClX>>joeOYsqJX1AzWA(e>dGJ zqXcfB%1v@8#@^JuL5{io2zOHTU#hTnB{`lbhQ(KZN`3_}#P~g&pA0!yXqf$qFvR9PTV0YTE)zBj z0CvImM}o%<&$vYHdBYlNgju9fOO{cwh zS>|nAfKypi+r-aKl|zX>HG%z}7TN=*b~iU?{ezE%EQ0d53uO72yajg{QR~Qa4gyNL zUt1rr`pBSRE34fSBrIn==W|528nUya`k-dGS)c<*!JFLKUJu}uo@-LRI&)!wofo&S zHlouO{>%qN-_t6te^0LO51h^Zqw6BQBC~BGWILZilzbF zhOX`1W2&ZZ*!DNpe~1C5Q+%I4;Pn3Fzh0P&-#SN=o}_X}ExBEI{*Bl0>95SlCvkV3 zQKU2EL|jloD(g~obL-j~c|+DXSTE)QZjOHRYeNsyH=MP0OuL#BAmU*q(kqSN8?H^^ z0}+B|XQz5bUzal@k~=%!kn-8ye;jt-a=+EkVl#Fe7a+DABdZXms??Pa!9 z6RgOtsDKTB z;_N2-fW|9W6S~Uny;5IAjXKuW43_AjH8{)Yt!dbO6RN$Lv%e+idSs%X4sCSr5FSV_ z5z=S3U7)HqRg`o?z1$kgv5Tl#l8*5x$l`s4iWp=a0S}s9q~ASS%xqw z@tuwYXyHIxZVq7h;rAy!31n!RwL&|t`4hH#FL23o&%-m_4|YNi_tnXUTrnEqjGEx7 zs{Tzmh4e#@rT)Ty=jaPXQk^&f7;P;6&z4k03T})ArJ3OdcQOm|S-1mG+^QV34 z<_UhV)wEIwq2?keL9)?(c9C5MTUyca+gMucX*lN`M zf(guTDzE~p#pjM$Y**NrGU2Z^@Pt7MrlCFeSGrh2fvZh z2hs}#G4wd=oD@^tE2V1Hg{d|Xce_pxBSEm}4l<}D2+^$NYg95ZryCnOhPE9SQZPa$ zGOX!*pM84|ZWDFn8{R8+tj=j2S?z;(|Ml}ndwob;q-wR1x~-LI)|^(XQC*m+cZiS} zH0RCk<2Rq-{wA9VsZ^=|q)d?mendnpu_ofUS;Ihwr;%(tKBtgQC?tk9Tk4JXcW`EF zou>!0u{Lm)og*YsBET3W!}X8U_XdTcHm$r2ZBtji>616uL7l)8D~#q7B2H9dHhqt1GBjtD$VcMg~-@$6S^|tun4!DfNpdx7sGDDk~g&jYVW` zW@K{edR3a9+4KEJu@K7iZQ&>z|JdhtIG8;dLIEkX%5dAAk1(!yXQXTq{}PSB#v;3h zb)0rYHxB!|eDegiz+vuQFOM=+yh6(E9wXK$g5d;7BqfA6N@^MTWEK6Yp8@rfT@D-g zbiLBy3P;&Jb~9NKGd&Fk-?sF|9&?tYle%553HluN^IYAjKd0LJ1=slA_~EYu`{pK5 zE5tp)cRQiqa zM7!wgLp|d~l$K3dx-P#=>sI)7KG!Jy59?Bn`}^1B9Xh7l7u=XNMec`N^9)MpF}I}r zRnnX+XG(5}AUx;fbkBc-#GUbyY6Le1SFIoTNyWcZb*AN!|7Py#GrOT#OuCZ0H zYL)8vaeIuh`p7p(-t87u!|zD&SOi-saaEWz>hB5Z5lRY+rGFR(UddZMG0my%<%ODo z0+wY1J}21nez)2_w;-rx_LROR1fxvDIKKx;w@6m1hMKD}o4C;%MEv(VM&N_l^ED|l z+?w8A@zSBh`4hCf-!pnC-z%j4I!Ynn_N&%2bWfq*I}1IJf7p^*+w$kA^4nYu%j#UZ z+|_n9q;;#s+;Mo)1&Q;O@mnALJJZ%nEB$pDRM^j$D#v}J`zlO~OQnmGP^!SKHpHf< zp99k~o9-Fma@jjsrE-oZ^M|eGGsS)f?Hx%_hql?%@zLR}9%0v!FmyDM1HX;M{L^sL z>26;{<1fU!`j-5U)eGD{_Q{`@H)%fZFsfIzm!FpppH|Ze{uPRI)tz1zp4aRe%ITOo z8vdymS>pau0&Ka{%{FCZk4;;B26}asWersJ{ z{F9v34>j(@TMwB_pRB>WY9A*Nvci?iq=C)|<7sE-w%|Ib?g8^0zlhhzyG=dlG3tz4 zXB~J%hn)uf!^3WeAa8dw$ITt%ePqC^#o8^UT=t9gpO;k<8#t^HUC#0QHS>>Ewpr&x zat_xM^sSc{ut@wuj;olpT3_>fHDhxgsOy$7=V=e*bKt zZ@RW6Ca;j}F#a1w?(-Zw=Y4Fv^JT5f@%^Rq6r{89dnl$yy2r(Ib;6RH!&CBBi|f`+ zB=-ulPdmFsbgn7-_9aU$7_^=!0brOUxR`k`BnE@F=D8y-y&(hR4_}{RkL-sVV1%<= zq)JMu1?A20bnkKh*(9D1h!M%HBIkFZlu>T8FO^4!Et3@#=>y3fd;)g^cY_GVj=&V! zSRzT-JVHQVCG;v+k_k8JQ-1I+r$-mTN+#ian3e_wuP#@ zYk&h^Di#$L7#p#Fmy0I8bpvx%m8jmmK;U_T2 zRJKS}1jr>>3;T&XLTs%3H){_Lv!Oxspj2H`lgdcTHAO)fRy9G@D3hg=MA+rtU5T=i z$=f$5G>e(T7595=^`vl&-PX|2h#436sv=9M!dG&KvZadU1u84B@cH}n?cbC!m9(^L zAuM(W2Op?$rZTnic`4REZL-@QA=UCn-e69{Z_N?~okERrBkr%|Rx^v6qV}K28@!zs zVY3-N;4dYZkeK}88DmFuU0WHgQ3;4MCxq^cf)J+inOZAEv&o_Ac8;`oP=-Uj4HQ3g z!L3XpOy8H;+924VFChY|0G57%_`yU~jA2&_OjyXAZ%G16tT7t!q977$lJOtYZeHou7y$ z#PWhp%>Q^$B%@p#-{$lk6g2uB2?j=WcBYA%$r0L{_p8d8iV&~RY(p5wQf!$)7% z#H8%jBDJqaA|Nu}_srPEwUZUc=>K6eu8PgAxOMDjO-xKNsc(7+qswNrrG=VRIkaMz z(wZhL_STipr`I?-bC#H^J^z%hs6$V^L8|+Afu9*7s-=EQ>C|k>DFF$;gZk zy2`A-5UcBZMN%_^C8$jGc*LWunDqMQWg2ExW=eFL*qJO{yF1$7Z`g-hpAIn0Y@p{l z@7w{S*xMRS+Qa6<5zVH@($p>0(XDK~O}9%K8M^srOPZSHMgVvb3g|P~)P2e+{zsf- z3?$|h#l|nwRJ9(yQKZt_tib1Hd*yFF-n+nqM+B13On4isl8GDRZ%7y<&2K8XXho2TB3mhHC9I(0#=l7OM|SpGWsn& z3)erLCUfU%Pzm@1)aM8pUk~37!HGHnBjcNFlvrTMepJu3-NNx{dLh@~uoKv2-mkE5 zl#yPNsj0X9G7lf^OkHW!8RLRup%kI3ZEAZ#W#7Ry7==~O=Z*s5nmZtX3w9v1vbou& zrdH59zwAIfJ0;~z2HUKxi9N3a?g$b?D)IR8%&KyMQ8gUWph`kW{~C z*VBv#6K9MtLsxz}Nq?8Bh8#J%J^-4k(Izhx$SQs1hi0r`Gn*u8r|zADGtbbaQG6pL z)Aa)s9ch&>j>K*esxy?W;rCG~!;P==aQ7Q?J2+<7> z#CoRPT0d>rE~6c`I68-AMn!9;kDid0n8VG#Q|$}!l`CtD#jcvJiLb>J=b+28G+4DiGA-}CF9st$V!@cT^G4G; z7(2Ya475^YZd;zSM1I0oGYt$Kwf@83En)fI>3q5`#vN$kesKlaT1>P=%%Qv=Q ztmlOR57#_)Gfz51ue0MtbTa18Qo#22C*uA(Uh8wJcBJe(7jRdpOr=h((@YOiz-E}%)^rbVmLH*jq=c^sBl$HGImb!%`gFq zzir{2j#;+$F4nDp)5fm04GMY74!9FD`!*u0G_cQK-8kRJ#2F%e#UWw$3Jh>__L6ZW-%YjWN3`OR<{nV?=$PP z^7X%+E0yFB=bRf92@kvKR?guuFAcT2xF$xa45LYgoFXraQdMwPZ)Nn)?uPgk>Mfet zFGzDrn%xqTa4V%u$r%wloWW9qc6B)215Yua6=&enPo(0&P>Bk;Y@=RcWWz?(F3&9` zEd#T%5v}`RxGIZl{rKJCcxDC$iF}2<>F(Roz1!!tXc57LNpdJeyu5~ntkT$V0Rb@LGcDH^46y z7+ShI%gU_$I=PP8u-&ZXYGGtpANo9{YQms^nMXyyPuz z?(rOpJ3+f}C4#rdkz<@M0Y(54qQ{OfW`-o7)CZM~g@g_K(+&1{0CU)W+V(q2PheT= zWKui+8{+}7FHvBeaO8yUluHDLp~}xPG7WS=#m%y=N?LkGu2Anz#LFw`(V>A*Z8~p} z`?bX-EpXB_2NCh`Mu*7(4!rA8V3@%8%#0cOh5?v#8olKWLt2tIfDQp6vo=(&30V@4 zN;RO8Ei%y)Q3jbGkD=x$6wVO9kiuvL-Vx_MK0Yn&Y)8{fhPhHez*taVFru=}w!BM; zn}HO9Nx)DLk>J(u(JISZMisL#z?6}yz&MMFHh=Z-Gnw9L!H)umO$ep1Tv6- z)E*O+I3~mpnUGa&V}wa)5!oUnu+NEckGm%0s9aD+J}IhHvUJXb`R6J(_XyBEVag4B zBu%-XM3+9F`@d_0qwN}+-F*qP0Fpb+ey7dLb;iTm!0wk-O`z>Y-(d9NQ~2i`~u@Ga*lh^NNVtG@3@W1Cifkf?O{eVvjx7OVc*5Jlb3NE|d z&DICIfA;O+^p;+cDfexc#p)PKQmLTHCo#^boaKbUNcr5AMchZ~UYKeKI?Q$K7tw?) z7^VHc9Zu9-_$VtY;Co1Ft}8!=;~5~XI4?^bB{A{n8_xh>TU3rNC7vcZf{>e zuGb+wP$4uV6)W|$kgTvSDdPP(-2)ri}6?0W?g_7v>~hR z4mBEr*e4wEMKFL+L_)EzR{%N$P&m9R5fw!MS;TC~!Yg%f{C!pmN-*NGHRB%a360dM z3Ik(0;iIY(MgWrLa}f*!&c93m@Ee3_G6@raJp}$4DH1dtwpOS*o zB9bpg0?42NNc=8^(-=VvDYgF*JS@88$L_Hu$d5+`kfRK$tm;}+c3)Dzn~^!CEJ{Ik zi7(d*qYz>L7Gp~$tG3qRa*rzx^;})6x7q57b)gbv%O0d!YH@pjn0{Z$y*bN$Bd6}%|pBX*%$gvTu%02>7j5cf&=Ac~yO$6#E z^V<2Pw*+wev$$4(z9Ad!zy{Y-XkXrQ3Xc@E^cGIP(CC`(-hK8d$NR}~9dPr$EE+^3 zSFJ$l#o-E5iYTXRu;i<=Ms79$Ha{j+ibOhKd}qHZTO-@oN>yqSYSk+|;F$k~1iEMZ zmD_daBDw7>^gei;XyS6Ud||BA%03=(&38W||YU2oy&-4Thini{C~ zY_SVC41MbQf|GL^6-6Zu(MBU03AI1s`kr>^ZEPxyEjFsYAGQ$#5J$NZN`mgA*b-UJ zs7yA2Au2dDd_uI!6(PX^d+Aj~BT;)46@>+60|YHS)Bb?W4OrTD){`RjjxdR|*S`Ze!1 z4wo%PFPzqaMQ5+(|A}_UmDDO9_a=lyFyxMkh`!%oC%0$yBh zcCgz=9pUo+$pT_cE(sAq_s8yAL|oa+9#Kg$vG5#ay(Se)^q>iCd*K6j4YV*zZ2vvs zm**Fr#D_{Zwd|ILJ4H|=G-X1vu%scS#51@?&M5Tz+ z)zi(TNdhr7u=Xgd9A}m)kO2Tn6II0kNV1&p-RvRtBd-Dfs#eUOCO*Y|(NvT$Wxl(+ zPZ~8Nwk8lI0@HJ3NF|Gu?+_p67C@o+pucNm6{%FARtTVb1^D32KtIG^oFY6wNzlQP z85AYZl6G%$PqL7S5NgzbfjjrH3!Z)&g(iOVxaq;6TA9k(kvnP6y-!Gli>5HU#LzBB znkZkh1Y2@JcMX;>=$bd)si|+`9>%O%ukg<}2`AgRWAJR3oSQxV_SG`Q!kbG5QY z26;1s_}{(*;a84_MDdox!g%M$!ISF1Bv z?hW?d7`H8}xpaxKDSUVVJP5(N2nA+~e>Gjp?{R?EyHAQ;-`4K0aXb-ZK-MxmttsP} z3sIs~W?+0NxW}+uGB{<+{qrYYZ&|AjpLZ&?`A}vTo48|>%tm8b7G|1ha6$pw@|CYW z8Ha6=qG%$UM+ZCE`J#N^5M(w$G}%S4KmNT6?z-@u<$dG3;zy(fDgzgPu~<&TU;XQ^ zfhCqlzZWHdIJ_2jwzArl;P=rR18Py*!_866JJMTK_s5sQ4<>fK){z@q+Pi-7AeCW! z{O5(w9Q{vk|J?4+$4|b`W_!O7Z!Ws4%g@702iL9E7s^v~{o zb}u;H-}-2xznV{z=K18_+VAtY(B-KIPte(d!D(39X)v!o^S?G)z-il4PV^}&YWxen z-Zr6w1gVJ^*Y1B90StPnl;t~L`-o;k=C4M=cS*$iKDq|UxQdsC$dQ+Z6wpF}`#+ZD zBF^VLBp~yJXcEO1b`%FZNCZnO1*ohOMvlNRxm~eHrC-A&(2&2Y^QoxnEAvLEl>TmO z@r_G^b%$s~COg-FOdCv5WiYJ%a`nGtC(+ppCE@L4u=yK=3qvp5K}eVaNXd|+$w!s8 zkdOj=8Lvkd9Uiqpf5!y};r2M|Rz?Nezd{ox6pV%opd!q2zDy9p!w7$VPH*N8FS~Ad z=4>DSY43a&?O0a-@hA%*l_~&8rI}^{|CGtJpG{Pj>y%nUQI(d%#p1)8wbhqHS>!P) zAN79ue&<30b>5qoHubx#nr2_?_>OojsY*A6;=&{$hIdD_<9*}(&-3m&A?0dj{kT&J z$d6zr2!;Kk)4u(&)B6oCxQcB(wHQNOp{22lu;77-pe>rr+Vb-iKBm)bv-Eb zRMKscZMn=Ibo(s@H3mK&ETseE<3$EVBxMo?Sh8qOa9v-{@fVyj?-yKy^a22<$UuPM zvN#uJKU(3$rM|(x9zVP_vEvk$$jIOXy9#M+k(O47;(V&&eALzs1CM26H>Ze>3X8M( zRyX6=LG9Bs7U4fSp~t*%cs@tiYgJrbTO_e0ArOJF=xk+~n1SZK7OcaCrAW+-szegR zYHYuCx?4wgs$}1~j?M2J-j2DRoVw0wO`QgLzyY>CeDXM= zA%3|%mne|FJAl4=S{gXK;SvQJ1}>(FfhP(OGn$OdJT?y9PFsLnM1Q~tJ5aQafzL@2 zuOJCBatJlAFC*_z7+y&`#80Mqqj2qH?(#LnQRWZ8!Vqtnc6Q830Ef%A!~# zg=Q@nC2)?pq$0(bK3r!r$5Fg?JZpC^SpbUpWv+5Eao@v;>6TG*=#=}A%~ zI1Z+r+eXJfcO0w6$+>Ct{pVkPJ-|ROB5pI5W=ChQTb{p&UJXtaTEPb*E*J*jcMqGs z>7V6!jmT|Fl;=goKj?FT$IgF%lxE2ZPI(dm?{onB{OaWt0a<@xQOZjbOPLNnwn zE`y#&>4+^obJJ@~=~G%R|9k>AVn*tO{OwuV8sr(Fwv&TabO%i&vJ!Y+U4K_Mcv zt#1VsfJl-g7S?|imJv#P#YrYMjXlc}bZA@Wm36A7`f{<&?P_^VETE~PRL^entxb%~ zt=H-&M9cDHC`Lg@Lja6WAOZB;d>^f9?FOC!Q6tJtu}m5KKBXFOUyD4tD5RhWUWo;1 ztutcUK4EC=3>y{ZQ+CGvKG(ZkL<(Z4QKVB-P%S{RTmB5HB=~`E9Iv*P25NW`j3P0_ zLo0?^g=jZPq{hy*8|P8kvm-1@uqckT_xXbi^>xDxiyvAsOHQH>x%&`g>1I(i@AxY|KN6)}nM8vWi#xrrsi}8y^@p~#_L&Xq$YC_P zH0e!FI4J{BzNAPy$hdSfZwrYc9B~oQaZ$sHzP$ji+;<%tov`E|8+Fg=C^Nd>OI+#U1dYvCLj_+2u6ZcOR}ie zfj3^LIO2S@aaDH6y6`Wd+5IBZc(ingUxWgVdhs$ukui}oep4AES*ds?P6dPFJ;lC_ zS0|fwmMbvJR>_u`i&eTzWuT6BCW->uk{y?3t8MUM2s7I)T#r5vbiJ~9Tw4$99b3hm zG(##TwWFK98bLN@W+gKVD~nbAs{*%-I>$iEXKFYMhRA5MQ7Hl(jjEgHm%A;{VFjZ+(NtHL`90%Adv8Y$ zd5RVraS+-j$t2MWNfZLfZj4{Dky8zVf>EIJCFYQ;NNB`&J%gO^b;P$@QJ2t`fj#vM zqIDaHcPzJsvnB1iaLgc4Sdxy*)#)NF(*`}79x+P6<{C|%$UqsNM<+w}0Ui$v#>7;5Pko%)-a zNw{4Kc_|-LoTBqKAvu2u3Y+SgL)LYx~$#2 zZMFPz?Y=Oj4`15^$)%^BHn+GPQ>j<$8C!aWF3KhAwM%0|N>EZ_N~eT{)rLvM$iygD zAS6zEL&G@Y6e`E|5X-S{5cVMng+Pd}?m2l{k&v8m`y|YQoe53E&xY|g7J*8W9_zz^ zyTS-JdV|vA-AChy-ZaFt)1($QlGlT>$;pI@v{@zWK;c0N1RydxEFI{!5IxN4Za3lF zEc`_-{ydvavRoigLa+o?T6?Hs**PH&5a+vk&(%5kgIe9b!Oc3g7R$ggLCeq(lLoh0 zXOLRep#!hlJdqxHte*`Hq)KI)-U2c`T!f8HbzQXIG~0cErH*!Q@q5O()NdKdPF3|% zj8VoZVB!<*ViP65Z>d|{n|!ptnN+90YO?Pdq^<$O8Jn^oEeF;EE%AL{0MkA5sTSLeI#*i+Ig*E#` zGDu1`M-UkRDJX=EbNRrb6yg`Nb${&o;=;}AwSg!_3J-?8X62e0TA`D}SX9~6IT~lb zC}rFAlSj(beKRC7Ni!y#pr{CCtNQ_g)@LJKL^{!AELqQmp%kn@W}$9jTaV#3{4G&a z)$~C{?9cRXrv^m7FO-upxC$i!38vx{wq}V%V~|3nQi(;Q8;CFeJ1Y!&0{*`f0@~oI zN2L4&dInxL@D2-hdnQF3OhJN1rooJnA`_REfm3A&ZS1~yIl3iIa*3lEJ=lrI&|5_% z8=Fz1gccFe1EdL2Jc;qBCXynIA%gBjVig1kwCqV?=nVJwxv)vY#F;DN&?QiFL)OJ( zB8y*dFi4C$Mf8K+*?$$#T!ev3&6=GJQb*!L4VyrTR3SJ)JV>$$jMzrV=b&(K252hr z&a#WdX$SyDfoh;0GIfq&-{pHcFBcFoYYD6AP=<_? zk1%%*|a=howab(kr43p!W${0%!d(&$HVrN_o4+BleJ^7;_T7%5RZU!y#1tyw zf8}Hpuz&VF(1;}MG;=jJ%E2(T zObT3!#G)Fo)zdjUwhA#;Zsg{LOmG`y!P??<4r||WOXjYYp1IcE(`ziw`LRsGiGIVyXk)kaoPQdk2;wz{91;nN|6#3BOBLnxeXB>hi`JZ z+1V0T1hT7dXpk-45G$lempTH3iWpM|#wi8a#p_jw;|)O@3dt!KqxAK;frZwBgc3<9 zBE>~x6AFo_A*O{P0JSKJI0df3B%EwA3CKYsFh7eI9adCLOG4J2yA*#G!%tBG9tiRs~-S18Wsf zLOMeRSz*cKedXNP%P1ZN@xU2Qj>Fag#+`}^G-0kH|@l1}E0A{UT{3<3- zhdAR>f}QzH5FUqDO1K=f4Ij(CNq!I z4Yu$;@qH5lkR5o$$}RF9z!G&$6Wy`9y}}mPIMGT)i)Tp^z{2XrEND_0myo9bt}{`o zg9wSEjCL4^po!bE@dfz-SHdsvU718gkgpGP4tFzOhpaG!x`n&fgpMHBP?ysLU~3x~ zlmi7U0_7%U(l_MXh)B~+O+}k4w@d10OzS`0(^U$U(5j`e1+yCF@a z(bqZBbb2H0YM8xwRB5Rq1iMke1IW%i`6w~UKx9l*s9!KIzX&j_ll(+VXAR98;;caxux8u%SJh80t zuKvo6o&4q1iF~~GcV6sg_8&7VzpvR=K@>tTf$Af{q>2!YDbQ;}WBVhi<0@7p@bWTB zS=gm4I{9m-id$vLNeZ~E`Pt_Oh;vQ7&IvigPxJ7?sfJGYA%5|Ta#?um1#ObHDN?67DaQnVMu~;S=MJ ztkosK)5e)&DA_nkD1nVEQn||bjsNdxw$mc9R(0!OF_I2j6|PP7rLylv6M#2zxUu_{?O^qEVR2R~HYuY;Luk~4m%h_cq7S{$rmQTTH z07J#m>J)p@6PGK|yIwYS_WuraY^M911d{VW$eE#)m`DMid7rN)vN~7Y@OqiY|@)g`T!9;h$+=tk6V#~4qx0oPt zb%Ui3w@%LjO{+t@huKZljG&4Mmm1*rgHpUG^_@jfGnc(|l#EAlj(>x%>~ zJ}N|0c}w|+m~-DXbNq+?oSMfW{uASi^$I`go#gMq6QAOn>W`mL*y!k2%ZQ!kxAP!L zIlw=>^?#>H7R;_)d;i*@Fpf?&>~XQgKTSTxHwaqsxEc`-&y1?62T31&j)1-#a=h&s z^V}Ta32Qg6z+Nu??)G2D8C)5ja7MO8b8UC=+k5ox2|(&~GTa(|UXdr*H;~+}u>tux zWD!8aEe{{(KC|R{7zKv@nO<19<1~4^3wo)>hYb>z0&R?!T)=oBi%{Aw^$KaFA6W|!s`ySfFHULjpQix5=+!48B zp5mx;LxODd=grx8-$o*ilJGCb-E(spl`h{6+mXYTBxGOLPXDiW5+5aT@Fe%+znUs0 z!&-+3=$7fxXe|-Z5yVd!i(18XaV0jkZ!F`~GWRv&sa*$pmhMq#ZIHub!g9F&;t376 zOO`1st9M^sRH+Y>T8{vG~c-|q(f*1D{IW-}S5+MHB z7AfQI zu!>!K?O|btsXo@dVSFQ@E;^mwQZBxbWVgc`-;lsBIAsi!wWR4rV)5yB^4c+)C~;0& zthz+yv0MfuR;@ZknykrVZ3#>wQ!;uutY4^VLoU?Pxf(E{w0yhB*FS$&j`?Z z5_!CWhsIVCEXN78SSIM=*uVA7-OD9VV4K?g`66=tcSq#5t|7;Fn^QF>FrEXM310;fX699K zfvyB16=nzCGsvN6q+o?|DtznHYYG-njQABH5EIcCkx!8z%_+5qbH$x}l9^j-z-VEZ zp>F2XKBk?Owaj5aG?(A;vploEqt%A72ug5L|Mo5Q>#s>vk7Zt9?As2qn~s{RGlvOh zq|SxAp`=P8Gx7#5!~q^!1)L-vGWTv6!>|g6$2n(S;4M1l{9{C`T+L!py7%vA9wh6} z2O_O=FS{e@`vR{gJER#5nh$O*FH^K?)jVStHWXHB+S>!7zM>y*(dEP+M1VqWKOX9~ ze+hpiI@d)zl6?3~KNXk*j#uMO9jhKRiO(Y{6Ed=Lz3|CTWlASd8zLD3M(;`Pd& zD`H}fSvD!!U)M%y&sMrj9gF-ZreRSp+8yND`tT`EV z+}0gDT=&xpzWfCc+{STVZ(56U;1F58-gByo286-!OUs~7Ihg(xceQIiaiTBiYNB^| z@uXQ+TwX3Q$UE0h=%|&PZ7_kdJfYs7(Dqm$T~tcgzToXO<9;;ir_8&=ZVDVaFY#bl z0v-d#>DK*R*|K<2k!=Z$hCEitKxXdYU1{I&$=kRbvGKfZwJQgn|4JJ14fL=BObKN3 zN^5Dlw9~Ai6V&wWUkIIbflH@~yg}e$(>r*?4ub<-Jp_N>s~;~Fdv50LcJZ*IFEGn` zyL;uM=e(@45H)_#`R3%3{=(`5#eoLol5n~Jm3 z^d~ncLIF79(qI%xH0li{q}X2+QbiW(!zVAlFaZ1Jjhw(ju{y|+r1l}w| z0pxfNQ>sv)S1+8Tk z7ot?>)S9&4uVgMuTy=hEFr;D)V!w39L&L9q-*!36Z_*b>UhwH=@?vD>M=$*5p^e3z zrTI`&yIJj#xGbAkielgZ9}*^bm8ZFWRTOj;Oy^M0FK=nBGoc^F&lGSENuCm$NCv*( z#Rojw-2z31hEMR?6j4~l@Q_wSg>L9#n^c-zYU+KiFqqS8-1e%_I`1BRs*T%K%Sfi9 zH6K^{s$w+AftF4c;1%EKTUFq1vSd%m;K1~JNKw~Z{;Dmd#l(_&tbIXD72*I24Wnd< zJde*}X^IzPJ4POD-L#&Ww6~r02l%p8EWg@YHx2+KaY!yiQE`(PXk+mK85vj$Ci2s0 z$d7MdRDnFG<#=c(nc3#fzEL^HpF^;_yb#aUkJr$V`rJ3rd~_W_hFQ4V)q^oUBV3dL zcLz^#)IG=#T+DPQaf-xqN9@V~O6}!J67x6!Xw&(`OLLZncdP21n52;+H@(2^u2zny ze(Bu=j34ym0vbr~zNYQI7B=0(G;z@+e)m9){WnNmGk@^L<(UlxbLsx?1uhS{kf7wd zF&m#-+;~@4D8mDi*C&q68gzm*{(-|fwaW{&919)D<}8Kv;&wXxS4=v`o2tax;5iB} z+WFGm{xR{ee+NF>=K{$-pY5j&A2C38HG%0a#>?MCy}tu7rQVV`cV8ks&%hqxYjJs{ zhOII)nTM;ekNdil=#%$`BjHmi~Mk~(!Ykcd+1`sHsi=$Q!ws|kYtkqxtnpzpx9 z?_Q|@!@6|Ke%qXR!{B1Bf`?5yalC*>ReXoTH)>Np-U|V#5*@)>0TJAOt|?Ji2m?-q zH;eZ>5T8UB6Fu|2r>sM3`E3Q#$c^mjVc;BJ;L@#OM0B17jEKP(^LJ zO)IkEOtOX}?-w(~*XK)D@vk~sp(UdOt;PTogS5KQ zX(Hhq0U1W~_I%ukemoG#^t#>LvfbPg{Jc;n<7PuL8&MQ~;C(oZP}GD_2PuWvZ?*^x zbYbDs{MIYdlt{5P=!$4M#b90~Gf1RqW-j)`-^0+VoN(Rz%eWs;UefIKv+fs?o`6S` zR2jw2fMqmDR-WVb#4k`>O+W%=oxEQMm@uC#%P4N^+qmJo>!As5Z-R zMwPgFC_L>@?1{lf`~iK+|52a(;1X|C#%PK%?%hh&hZhre=0Ic?yDb5}LDxK2K{XuNRv*l=1gWKFpLXs7 zE>!B^JePqz_%s6#M;ZlCsb2oU%7hSH4{$_MTG5*|ceVHcW~`k%X{ei_QK9McWc;Yh zsH2Gd7676Dhj{;zz%YXhrZr_US5Wwa7l<`&?`6xg>MkTUk;|6r`32|K0#0ruOg43X zKPR>CT9(gLlB)!h9UAu zV-s|Xs2Z@XPlo{=Bxb@En%3g13XGR+P_gXj9jd}VGwK|gUxe(fr+4=s2R&;>_jq+kp2#@p?6e*tyj}QM1Okr?4y<}qMZ#i-blb*l>;m$f;+dA{w zIr1Iy2_14+S$L<|7a*5YVfeG~@MRS`XpIP`xDxotB{d-CIc+Ty#H9?y8#7AZ=Ga<2 zPbUlT$wUcIM&fLLri{c>D3+I!!J!)nR0hq_UrHG%aT%3!8B}cfn0V&e^PsYRL368$ zV)^2&>j-Izoms(~58-KGI@3OsCg|)mEba&ziA(b6fso;b=$AFksK>xS@ZpXIQQ`oK zo&BT+H&0|`M-Y78SRBC_C+?XP&_uUr`W$rWvN3aV64-mnK49uY-cBFh$^1$Fu$}V;bT8Uv`m?gfLOaS?&X{Ly zL%i`9K5oVi=d(OVOe2@(P!Aa5^QItlX*s51{pHM9iY{Zdvf&H@=JOGv5GeKE%+UYc zvZuFf({mz}K5L{E=M*)5N7mmCd#rOh1AT=l8#rx`MH?yo(d)-}z=6Dw3h*^MaV4;< z_O|=ISj(dc`{kX9VnUz+oICwU;E{EY##-W@k5i@jdS4 z5Z_es`*au?Y#rqLOGzmgiT}Rf$ctBD`}^TNUY^5x*O^R7h~M+)C+GFT<+EC=g)9f# zyGJYp%5Jd0?$Q$6Z7jAqHNb0P2z#{?hUtxUr9Tm)b{9`ws=v>M>3>#Nb@Gso=}*o> z0&jg<8D_LA@@+u))0Qv&{OQ)nph%WW|8;zx^*GP{VOXPsTxi^W$iIGYpvT&HCSlQ{ zNSr|6P8%ew9AZh}v?0N-$O)Ng)}3pJntJjq)V~=&3dtPf_IZkiBo!yp**>}Rc`a@HnX~7ML;y-o znnU_{;>CSqBsU7y?dy#pLzr6c`KldueAzq+dX`ZT7LHeo_0Z#0HOc=ZmIg}}j9-tF z{^y_Z%^#gPU8%EG=ub$GkfQQH$~30|spaou^;ZeGxt8I1tN zIqcwH;xSn@(q?4jS=c*g)s1i}N?Dx*N7o_(@amfz`>GuHk$)v5tL5}E;w{_p*tPim zwWn4dAK%1xELK%`{&89*6u6l@wwIBcVI63XVZJKOMJwa^foW!^!)y87|4 ziY){s4X0Q#|GoTbsU90A7x&2Y_4`nN4E}~Jc!x6fMkT9?uS794@dB_dAWMrPY-m_n zQ(5b4le*yfLu(vxe$Q#We<0sv;bVsn9>Ffl5>SXN%BY8-@9DjU%)95+9vNVUhGlZFm=Q#QM#OxVNZYchLB__-sbOVpol+i&4ez2T zjTsts)=OKt$L+-DS$*>)*B{2UlUc$i4)h7BWypT71RQFx97bzWc0PrzwFY<8DaVrK3Ep zHBdkmiSyn}=_hTECh=6gLLV}-wtNgMZnV7{`|^y?{Rd4pVyz)Bt^o=5TD^*QHHXY6 zLsX+xF0tp?p(asMFzo>mHYYmuN-lY>GX&3!YX+-I-41mhx z7z2PAZt};E6K=YS8o*|a9#=BRRrR`#cTG*ooAqhe{uA52_LZfMmi$%HTYHxR&Us_H8Fxu)>V^Ck0YBfnb_vu_ zLAto0w4i&_7pV8vnxL55nZOfM@Y&Omz>jXQf7%Ab%D;3X zx2Ms|CQnOXk6wBPE_DqK(vWB(_@3NvAKSWKs_ma+`d9`UD1TAAT2{;5EKne9%Hq0F zf_(&C460qV0R_Qra(8b2zsD*T|CP3CiB3k^1jT`_FatAz;$Crb;o*XTXDGL1#5T5j z#7Y5X*DS!-KKAnp(5;M#fLEN`!DOAOY3ZD^1~isSiS7)p}21*B=%M40%AzL;0iEGi5$!F3(hIhx|*n z^zPL8&G9pGrkk+m=mz(6r!aVq9*%XvggXAoU0Qg`f3>n zK~X&;DYX_}bA;{?zN&$SyI+|!8WgBUwTOg<-GX4CT^IkehUe$20|B>hIf-XJ)h=$p zQ|Uw_yDY7PTb!;t0%qn_$GtK}@oOSbW9`T)q;t4w9^+*VZ~h%{9}3$sJ#YiQpicpX zM-n4Z;iOan2o~?t+4;W9iLd>KZdiEtFvQPXyuo>3s5$)UXTTI-fB1dT`qkRf&#x-A z2LmF>O(D0!gl!u>5o*u5gaV=m+fFPE`yD+}{*Tb^o})HI43(3uNYEWZJbF9_=#EnL zw1)HFl99{V9^q@e>9?R-)iuX@OBGGg^G|RCvPWLAJMO9MRZ*c4y*o1JlP`rBu8$4C z?HyAAaPI}~^GeMN)s#5wQ{IZH8N>SKY<@ss4`wW)GGO=Qy=uqgP^hq@SnCMpz}W@C z@TucmTT{&Iy+ogG^~?n|!f4FI$-&W7Uhz|vmqHmcP435L_L_!CYX2?JD^e#aB!zZzaNG(#bT=T60u%Iwu1N>iL z=J{vY!ZUu^==420I4`dN_K$h3`VM+E*7C#B|5-OEjGH1TOzVkaXEEr7P|)j))TY!j z1T<0Qi#!{45r5HU`bzt{4|x^=23~8BfBN%%S2r+Bv^{boE~27=G{`z^qXM$;84$eO zFm-V>m1}W%`&5avLmIS|{_xBWQ+a)y%G*hv3W(_%={RXb#oIr~TospS)Y-BGT~s`u zOueF0h>MKBcj#;pnfCavZ@DQq(R1}e-S01qor!s6EQ~Z42Ss7~2Sdcg6K8Jo)Z;#e;i}4s zQQqh|$Acs}n#4vkg8>2JM=sXM)(tofX@#8cWTH( zz}~;$RC)WMYA<`O-8)a1zdCUUTWd~Bd1`XjvBj==m4<21lQl$rDNZJfDL6193Qwwp zIBhSH>1R)0)5$m&*t^a!PN`e3XRJe7VOS?1*|P#s=*n%XecEWT*MlthGmRpyrS^^x zje;Vn%s#I&9+Rqke?~3ECK9E24o+#*X9bkxl+UWj+ZlnRb7)fS67s)!bP6I|McM(V zeSNM*ofdDI58y+6dK3*ToDbL%SlEM{T*sq?k_mKCpCgu*?dsavCT=~GP1rxHs2r9y zR*uW9ML-R{rRH~#%~O19@iX|g+L|ZTrfF8pH*hE)Ya}LDHfQ5dAyZSvh$kCisZg|G z5nvaZIw-T?3^CsuqKZzh0o-&&8+jj#xOCmp5l)(#0WRoPS669-tZa*iHr_o6Je*UD z`2XX1BD~$sZw)n{D&%j9AapWO!=V(>%oX0M)RA^5 z3Z87re2sFx8jnKx!oS`iIYuU4#(uj(g~AjX9qUqsc45A6%jl9n{(i>Gx;7yXp*wc= zJoCKH;@sVEFc*S*rFQe*+Ij#}Rjk#lB&`}2xzNmH(6qGFJNWp5Y37Ud%Q_aYz)T%b zxEv%NPdFUcE3#dM4|L$AWqDKIimypVY-w(Nd1iV`Dj=(0dLPT%uGfPVu7-~7Y_z{8 z{(w=lrkr^{fR>Y2!IhY8cGd%!4D`o=r9yU&gYK!=yA5olVqG71wlb2HnxIgBpf4L4&i$ATaQCCc5)} zyP~rTVWV8m$Mvgv{oVKH@lWJp1_MENGJ()LlieHdob7=?j94AUW%6Jt_z@P~By5~m zabUmPrg&v!@2*$4NL0H#mkM7pt*ri7U=5Yq~MzePfwj8sC=lMnTr(Vi!W(#l9 zXH{loL8}|qqYnes4Br4fL1T(im*+F@Qj`$iFiG*=o{1~B19F|0=xM;`hge9Mifk`s z;@fH_?US;Bm``f(FhO%dCDPqUH~LK0zxvNB@U??Y4+fR+O9^E&bE~)UWj_J4_I?CJ zwt!wfxER&UvBq$Tw)B7r+l_pmNILIND~wda1TX*E#Vrva?hCj+zNe3CcMQ6cc|C_; z=wJ)=Z2g2ZAi1UclDq;CoqYfr8LR0WAz94U^NdV9LJ3o3%hUe$?Ugd``C;l({t*Kj za2)S_F-Z83?9$oW;c$lr?U2tO?LFuoCVX9Rxy%lF*?DftTz!VUt}AuA*@Sxv4edU2 zioJ6CDNMppAdfqQJ{PMMYp8!j{Ac&~b>QeLy4DWw8&dFIPu-lid2*nfdZzdwec%~h ziEz+pg{e;>A?Ok#T}T^49Ojdkas9g;b0b}3zD^@7TnX<4X|W_Eo8S9*3|f!V)cSDN z;{CA4@BQNY&My7;gfiFH%ky1^WVf>WfhkdCpCjhZ+f?}5GrPEzYj2&~z=+k9ebCzk zQRnS$C*rTphd-D;TvA+Y8#?g7pX!2ukbulaKC_;9Y9^zib)y5FW6E3h)~||R%u`&Q za*9H&s@d*rZ#~iG2_y+VV{Qf@9h!P5}NpjRfKfy8*x$u0k1 zH;a&i%aT?z`=(Kud=I`#w{~JOZaBNe^2tCOXLLPnK$s^%0?ifhf>Yw zTVBzXw)H6-s(T6=jwUqV@JgV5BFrfIaZ0+k0}M*@@rpEr1SX36oQkq(Q|wP)vo!3H zwn2$)MK1Tu?QwaT@?zJ#vUZw~oddE7P5l!gPcP!TsmI36Pj3WA=P6Zl*j$fOYc5jx z&uY`McZaDl0a*7v=Wtaq{8;y@NfZI42%gOn;Pa$5APMqlI<5!+VsdwE`|rOoZ`byE zhuHw(E>LE)3Tf>?F!0s=aS+HHd6J>|jk2Z#0apFkT`>fG4e-LYRwxX~hwgXr-#vBRFqO- z)fk1+p;EYjVdoHT>kvCMk-g@BfUvj`7{97ptzin`um~c>9mKXHP4qGj8-*tUnpxUK za-O=`(|~6vgo+*UW$F_>2Y1OXfB<;nSEBKcy}7391h^eKC-cw~>Vp zw)aKnKIQ#UUi(|DA-RNk*erA(_(eSGNDk$Np@0zF_$=0~c%iK*jBYE3Em~5mXw|tz z>{%B>fFqpV&$^GDMiV7DOG9@{z5PGch5+JQ9fH|%y!*i6A=%vdc@^SVHuDTKI%Q<6 zj;sBf^+FBLW`9DjP!mRpU@JqsF+^FgTt-f&**Eu$&&X|or*zT$y0*Ls|BjuiyS#oe zAF#W=JU^}ZLaCT_tLyw9gjzO0>9vJRZFYe1F`V2aAlQ~n+G5@dNEDk^k{l5@~|2A zaXloT0{5O$gNPW@&(6`^^EA(q1l1?I!2ahxFy zAOGq##`Su-y>WxK%$tjHJ_HG9X|-t;Za(SG>k$8D(V=;l#xqkKiM^UUuq#UwIa-g} zt@QKLd4Ij1lV~e>{lX<1Gt{KW3V&p3oGa|z`1kKj#a&IK^CX5DCQ33Z-4n5QCI_iC zL9x0Uojo7#G_1ic#g0|w5EV4wl-A_&ana|oOy>y>eXBbEp~nwL0VIF;_n_{*lXgEQVKMHMfYUUDr!AYnz-ppMz*)OT-n(W|TmF5oD`)#nx zJU4#2IyUnzc|Ri*0nsHSGZSaeD1EHP#D@8(&h^G=5(pX|?9j61>cp14J=yu&FLe#^ z&ur;VG>&#L-nA#2g=QiC_~cfY@P&{8J>K=33E*IT)v+ajs%B_-Tuc?1Q>4S9F;2*^ z8%9L-$;!Of>Yx0VsNwteCS{=F^babOcL*Rg5EM6r^Nvoy{;Suo(_@#*StZD3NloWi zZliLbMbeQXc}IJ?7Sj85Vd&M$qRDnPBrtigrsW9S!EFK~4f*lR0hhf=)=TZ|AN%iQ zL$=pxfjU1v^>2%rzi=IZ;67Z>{|t>bYjfp)L9WtHmxu=ngVhV4Be-Wy|j?|ceS`#KRL zjm349)Z!^@DnXkC*CRUI9JM@M`vtVW@TJjaWagQ{UJ4x`MNC~54!s}+>5t>qP z`HiA&;nx{7+?7D-;K9QIyg}DNccQzM>lXg$buw3taHAy&UOv4p_e`al?x836t#_)V zYv*#B@IDcnJG95m$+h|Oza|DhxZqdL#~$(?OgE}5Ks^83?YQgC8+OC5*XEP$S}<^O zO=`fnlFJ7mvOuxKP71-cBid0+PaH*7$iP8FNvj=hBd5}i_)1wa;3D9g@FTwr;<3r*de| zA9W~$-NjHkbDH#79?`uo!Gw5DNvqN#ab=u^x}kxA5pX4VIVduV6Jjn;OiQDoj59c3 zE=fvHNBH^bVZi|RJvIr6$HHRs(XHg{b)LAuN=|mi!SLCUD=fTyeP<0nnDr-IzTfcs zucESYJeQcDEIjUH{tS3r%oZU;#mSvLwgniXp2D4p*Vgv7WM z%Xg#UQiZ(&Tui`aBD|&Zj|Q&QvT(Ex)+?^8ta07Dv|=;%j?YeKt8Z{e3UbIbbNhAn zkLmR0V^+3sqk(9%p(tN-$BE<3Q8TV@Zbl&gz<*IL^2Cr1@(Ii2Oh|!>7?hLetA)RN z#LD+Xi;W?V_tmuDS>Pba8vZ8P*gfOuIEkr4YAC6LW{Ex~EGD_KYs`^0rYr1QTw`1wJl_R9IZrf0Mnza#hdE}pl; z6gP!VK{JT~E;8I^;47%taGb2EbPMc}lU}1vkvZAsNS1Yb+F&s~P_^CBEfW;vQ+7T< zN89l5{CB*zMs=Lv;s%F2S*o08&`92|MjM&bSRAl+8j!c>nGIKPc-}Lr0tLsGfAN-H zajw3e8T!TNo_<(0?84l*1%}u5Fl&8ZeJ=|1jP6)}Jg)dCbP9JkKRXxk13u79_2b-|`$Pj>U{eIz_&RnL-M7-Xxb&_i#F-QJGmqxvo(UfpR)hc@c|E?J9-#L288VW&rWai;dYppja)x%yAkHY%rPhLjDI8edDUb^r3f^R_5(pIli zs*X)W-=3fYe;7j{@H;|pwRj%cP6&}ns!nWce)``Z#ATh)2 zMl5J-^lZ67Dzfc9|R-#vG$v7c&uV)}l+iSTqcuFm9LEHvaw zBRFMMEHtqD8`~I{(w0_?jLbqedYnw;i-&tmV40d%MVvjKdaMxrt@7n{`7e=|LkV&* zt}&w~c|C~P#d8Nsx7*L5D&9itAAN|6)S8@t>2CtS^9wKrz$_4b>L``;X%a7U_ z%a?yR{E#-q+Bq9n_aw>cFL>{-+sO(!B;*)r%CTvUNt~4Cd`ao|1;3N=d`^+IMVXa_ zm*NH3ilJOO2xBeI7yE`Twe@w1?AIEMdVSOf1m);iVZS-@QJtOXO@oU91&?EL-FD+m={rg6S-$SgeyrieaQqi zrTyUPK1XGt{7#Ctnuu&@dBCDbEvQ)JbCM&~g6sM+iW9xKxU~E);|W`4Nm9$5bZD&q zBv*g4Cvk_=?~o>5?3Ku7N^FE%O}uxxjNE4Gghys-$c10O+cWj9`vuj-|3X+*elmDvX{b0Eu?b+FH!LpRP=F4$mt_j#Ncx&P{wNL7qHGp=`mVVDe%x3 zB>%xH(TvcNuEdIzl(F;lA@(bWw~Z`|-Rz{FzLHchxZV7EZd-asz^STqWz>iEKTuSZf72lDjfkD_FeU*GqN*Gwe$%;z?Wb3E4$m za3Ec`_!slAx_4?9@u1JG_plcrJba@8_7isG)jhd7al$pNpA?Bj_e8^t1IhkaYxuj{ zrs~_q5=(LC-K&6E4`wKY#>jMcdq`}EkSRt@6w8)g87mL(qd$y^J-{L2;g=R^&?`-{ zUn!$$S6`{-ojz}-WYYs6#kE|%sjxn{Qnq2hFX$3<33|Q?vaTM4JpQ*}(0B`5=I?$A zqK{cBY3$D^psOj^C)nv3Cu|S2Jq@oWkces$@voCMti??Iq@jKFIQXbz#gOOhN=eEd2&p2PK&Dc3pt zZ2f{EJM{CgwG(RbFtJ)UIHTm|ofrJWT0&ZUT|U7G>9CwxUrm+I#Gjy8v+4N(vJW9k znqW4Hyj5SlV^KTt%EX6WPM~4=|6W}C0ph5?Sn7m+vrM#->=JiZ)%Pe9o0gwvpE&Sg2Eqg3VqzFLN?$IWod=ONXBNF3q;h0h*?`ypqIY9(>SB zO3heAcS99EoyCa4_qme9WyL=jyj%NaLjEohz&QkGO1Wa(Z2`V1e4H&`JURQAm>6y$ z9!Z=bqYj_kmJQ)4Ll;ng>e!;5iBUn<+#vJrh#-ch9rfhCTZj;EC;_87(;%k*V=l(4 z=Pw#$jdChfitS7n24AxjVsyk8fSMC;?A z!=Or`DC#H5Wnuw$Kb4p=D-fYgC%8rr`XP zEq`C7#Uhu)e(;H$b!U&pFgv^RW~jrc%{v+%iwhlUBv$ck=3iPivb?#aT4XcY-4-Tn z_3?{@`wH>#E$AB>!_$J4I&Uvq?iX~s`^HRPnQDS=NIGGc4wapLk=|BlErf|`h$i-y zjM-oHrBMb}^cstqz8ogFPMZ7w?vrnmCJvJh1PY+TyEp<-3b?VVJa!p4Pmv=G=hS@+ zlo5y$7MEDAg1z4d&08Hc#(y$vITn0p`FWtXD;gbaqtPrX@}93Wp};*x61!vwEdI9m z^fPO;018R~a0zn;5H(EKja=^_+Tb}e>OK}d9=^WIT}(5Iylucd%R{MZnWCsXqsq{O zH#bdOpp4~~RZ3&0_@`c7mrCX3EI-dY;ke z-T)9B40#Im!}h~6m){A{W;~+DliPpp_?QMd_=rh#{%dpYnEk2@(ki`|Xu8J@^iPXt zUAsF-B(c$fV z3$1{b7Bd_26xo$xLig^=;~8SjIwWcg>G(Z<&;!Z9uMz?8gd7_AvRDx11fC-8?5V|< zz9yOlBsVRx)%xta<*bR1h|Sa5+CGLBiM)(tLVY?<2Up!?QZIJGecU~hp`DFGs-kcf z`MccQ1%~T=u}nF73MOZ_4MqHE+t5ukomL4 zMtAlH#k)S_t{JnkO9rI)7`N{qI#;l`5AycDQ>yL3r`e?K(JtR#)n0jFS7XA%eaI$k zuuZ!E1IoczX!kB&L76!@#p(>xP*~%Ka({jwe(Rimr+XlHePEh|RC)95W+TM>i`7wzh`A=Y*! zy(_mE!c}a!aq*B?c`c&MoP3CVzR*WHMYecx_lP=!#NoT;HD`c>Wp=hwwxg5BVWVW9 zd;v?gf7AHxGmrW1+}cLrs+|@CCS{XZS@(ozK)8TPxk}6y-WBrV&?RZHB{n@us$ytC zqB-hd=Mk4Wqwq1w`%`iQhs#v1xhH~QZACcBSQrsl*6&#)QMOKbDYX*IH{tsZv`P>4 zj;PEu5+X36l(YIR>ElldzBz0XTGQ{8>FSp8f&Zj6D%Y)!6b(C_m|u)i5klI=7ye-s01Hz-D^O~nXy9$$`Q7JY ztXpRfsYais;x9ngtWOu5bX?Z0Pj7Jym9iU~v#yDagX7{+aoj5t6fOQqXZEo0M5Op{ zl<*mu7wcI0Hx3Qh#%|f8Of@SYPzymH|2SBoYV5g^%b}_>GN~jOWJg)t3OJz|8UE0r z0Z5WcB@w$k8%>tzeINEgkYoC0pZUNfnIGEv6e@!nNlPmTrZydhYm(lmn@2=hT9h1y zzJ+7Z(heyc+(z$Fzs5|XG$Z<`X|f<2E%r4bR$HC{7xufeKkxfB^RK1j7I4FS=13hY z?PI3%JkZccid7(sMqP7Al-PZesAx(n0%^Z!m4_=%eFdB`j`nMf;;|+&gNnjN)K?=F@GOCL0@}z(aYLKsNt!Yu!K;XCf#b zXRyFWHPgLg<#?Pifnzi+}t?Swph5>h9@kAh* zf|n$h0Bf5&x9xLuzk>=}o>MQAE#I-Svp9|1rLko>)$f}H+@x$me@jK419M}&AbYYE zN`~_p8JRoxM{!K=F}KE;^<}dM&)nQE1&<&9AWd=TDyuUeJk0UC z%tT3W_x6qWSl`BN9Vx_#-@cC*e?@NC#yBSIp75&XJ1P+svX4j{(T@}HkFo@-Wv^y5 zC`hIk^NjXt^{U&rwB}w(wZa9W7A9sPF2nP|8keH<4QjKF4f2Yc;6u)oML}Qj(q1nk65br zqt43Er(Sg$-K_2w=qO+I%li`Q>u1~?Vx{R^va?FhB^}Egfq)dzaMg=p>UhBZJ%U^q zLUnaxq<`;lU*P^eIK#FROwsKc>zk7BFGF5JHx{s62Ol)O3Y4i)*tqbPKJ4rI>}lra zev4Vgy;5GlS%G#A-l$5Kb@t>fi;DRE!wZiW9nY-e>i1J>)OD%%ydh?eG`l|s3-E~c zCmtctD%Jkwo052bU9DuPs@s;5iv?WH?2wK-dqLEduVQO1PnA5HcQ~ynvTR&wN?vYP zji8c$=$EdHkHx$_;n2;CHwzPh5d>o{X|ZIkmicluqpSUNU>x4Sf5x^QKR6VTJh%GNc_Qth^Si3z;_2>*JW#E*@y-eWt6iO2+6V-=V?M31rg_@4i14Y& zI5h+up+*~{CsmTR4Q1R<-g2X)JLgwS+-i)h~;PTN)VfO-UJ8MfEV^Z#GbMufTAsX z$E9Pzs-)JfdVLGTO2In{q;iEGl0*ZQE`0h%8{dlX)wA;~ePJeW{+2+w4b0^*U;3v|M+3{_S`W&utlw7 zolb|bDH3oZiQyRO&KiOT_fxYpR903|XG@o0{z|N2x|+XepG*^F(bTt56ix)p%Qs?4 zYGGyJkw}7b?g<8)cmBkyAA?PRn$;0YH}h!-^aopeZhz_Mz8l96E$}T?n@}rSF!lGR zgfR&S?hu*|?=kFM;dPSAfX$0H6Yq>1#|pcfCjR~VU|uQT6go-ckrK>97pq+6kyTnM zP*mSHfi&PXH&flv75b)F5+xRAX#agC3beyhR&&#vO^TWtF8bMCA-HK$aW>Kawl^u1 z2n=qXUSjxCppZ<25B|+Sb^8u3cI_I%$jx)P!k4NSpkLY@5x{#ZT zQzR30tdEYFo&n6ZfNhAv_h&945$Tcy`U5@W5|qctx(tad2PQQAs+7wmO=^#*(4o=x zb}tH0-43UuXO<)$V=#w|0|SA`C~bN$eQl^LIO!|1CS^U?zO>Y^uP>3$XR0WHJ>e?m zzItbPm(Q%vr{kwuIWj6$4qXWI6zG~>rv zFL_x#Hk2_{F(W~5LS)fU45*4@dkPPj*&zR<_=<*bn)O*o4E0*$!jJdrx)5eB;6&zX zOO1L>%{tjt;L5|+pcgk{=c;4vGWz)+{8@~%x=Zv_jaN86JmixxL{+USYac7xW;G=nKRRVC{MybREOQj zs_JMC)53jot`2pW=F1J=(u&^JzZ9#;=)65{5SHz1Db4}OO zX+C%|&gCST6p0Gh+R`_eZh9~}iV^$m&a|-}$;e-ie@@aQc`>-}K{mV+kA{ zy{=0PLUxk_9kq9&Ss#Hk+O~|)j#%xqg>1(=-(rpA`7wTdC^MCn`SQ`ahXbVP?1RG# zxiBlxgk91bL%MF{^w3!gVz9Tc&nJ;1M<=FGqZ&{#dFo5JdQ|6mBy_y$L`(*}^~`o} z4T-^VC*5gjv8#kwlz4#doi}t@%D|5$4wcaBLpl^iBzIqeHuvzVSl%=pzUAL{2|npO zqeHwPm72QA)Oi9sqQc@HD37g45RgATTUzlQw)s+7+d8-+MIE3>%<~)4J?aPXNgwQ{ z8ydQ>cpm!T5IyGjf%Ek9-~zFs;&uOfw<8Za#OHPPa4_CBN=jk z`r|W?rT>!4+4KG20&s9Y9W7+R0 zO6Coyk*N?&u|u#W)+ps4^8-ptjZ{fVwhJt^FIA(k^z-f0f_(Vpd5;}cv}A}$VE5~0 z(u{~q8rB;7Xc|e9Q)+g%c(K)`Ge5173I__fL?pV^B`G5<5NC(R2&aWg)}3qN5fE-R z@06J6hU`fNTYIR%cSXTOiA^3{>v2=D*$z1%_wej&<3HR_`rd~`T7CzN zn7Zn=XGWm$rWVNNxqK*Lo^J~ERkAJq>_ir&spt_Ok3ZCic&=!z=ZfCJ+~lYy0OR9#5d_~bu= zojncrtZgv%XxR2JRzEIv&hrwOC@aIv$uidq;+OvKkb@h|EoMqty;_?A|MKss)t?6h z#Ias&M&~6fH>Y36x;1VWefVc<1~NO?LpUYU3s`yiRKVKB(zYgl%OOlQYpY)~k{Ax-aS$em`>!2LDNju!5gi1dfK zN*rRG&;jP^02yXd#$-nKNaL!IA1QApLQYN6J@IC=vec0q_sk601g9*2|97w}GGMe6 zCeS&Alj%&nr}bkedO|c%38!Imi?8Zc-d{&CLUVfRG>hfojVsld zrNEje6XZoM6`udi9esO-xIYl4^C*GpQa zJ<3rj>Ro2u6aP?us|=TbtGhPWhf}1MVoW zjJ9yy(o(F&U5mTBySo&Z;_mJRf!l+en8+Q@aYMr>qms> z{i;0VS)fsJZSyxm3~8onb%gM>VvGQM?aHW=^sGBCPI!#QJ0)!QKDy}u{_H>0z7L!x zB770kO~3H`6mD*ys}TzK2XAK0cFwj%uK0)Btht|G>g)x%zIdee9AzWUYRY#M0Iu#> z{~`|yYHjOmchut~HB0dRmyO3USTnPr2Xq{K=~>(L$dlKiOk6YKkK2HZJ}M8*IMW=@9zNfeVYX!^FvT;zy> zk3ncl4fMNLgD*esOhl*4+E`|me^TQ7Gn|&|(u-PjA}uqQe>RTfii5HGl6YDzOG4QG zqjuIUlZvJX;M-$lNK8>?+|@gx*dpcT#_F7_>60_nJD?0FFKg`R;wF*JRPp|-b8KvC zQO1wJR+M&o5Nd^Nt@7{>v&TB7xH}-{OO~aU=reE2zOOOPz)#GNJnd-b$79{!*%j_G z1RD1I*yTechx)ZDk~dAfYf?evERi_$7uiyv1)*#aq{8}6TboRRGQJ(Lu>8|CaecQ5#79dygDBI=f^PmN{^W5^U0BUbh%@r0X& z7_wL!W6?J-6VduRk&O4ZP}Ne`mx1~%s0P&)(5XBG*=w}LI0NUZVI-y)aVjlF9!)HG8d~IK4I+2c zvN-fA4pxGa2&+HViyYoLg5S^q>_MeS(5Adu*xlrQgCjz`7=6g1OycJc z1={X8K^5|q2lZ^CeG?Y(5*y^R^p)DW!0==Ke})K4jcTS6+4^+E6qd6`j~~UA@IQj) z{hOw4S3kX+3UqMoouA;#-YR{^D3Mz^^U~eeF!goJxe-)u1(OuhiPMGDFgut+aNItg z((vbT2pd{i6@Q|z^lcj5vCB(~{{)UFEvi#Tva#Jxz5H7a;`6)YD`{Z}`ZaVkDad4G zP~5a$+R`mqu^_=H-Jt=xFvOCJmHCNHLMyc{qKT!c#rW-AXs@+($<)yta<@uCK*PlK z8nL;#IkqsKDst(fN59DU_&Apr;eEGA5!vjT?e{|^K6pUtzgYf$wn4^JBnZH(Elg*E zlb>_we3@-v;G10<$G{L=i$qe)zIrp08>WLqt?{3!9B9|@o=U8tZ&W}>%sDBsP;0ZJ+B}TC0pcB}gYra*UpVvtxvb30?{0R~T6x-*9GAihAA1Bm!$y^$#N+g|y%;SX?L!sfJ77}7`U#oJ6apA7vvWB~YFowGi4J*ik_WGOkBbYS_It?#!t0H+(`)B#o?XsL zMCAjhS~-JRP}%xcHt!Lh`=|5v5?erJq7TT|LN*05njfFe@JGu9wafmPPNDw~n8v#%A_GV5#rUPdc z8s<+LdloDLOQZu^6o=8|Qe_xy2fb~vsxs?0%jit2v`xL-0I8W}lemiZUwB#xxeSDp z06&+q<#2cS0?a8(No4;p=dA{rzHm9NUt zFX;5drOjf9F#Hgh$e?;tuW0FJ6fZ_;a*B8)=52hzOy&uBNG_K^oTHN0m4_ zHYimO9T7+gr*?HG700JAO3?kWyQ(xz6!Kd@%k-y4u{HyT1`~Vkv}U8DTY5O7IAcL9 zObFfHEE6Z)!4qM?VD3+9JT)}QZ#CLUS83}EMZfhL@=o)Vw_dIOnzHHrK^v#mo|8x4 z+!SieG+efHcX;bpS}CDGM9!RwPNk1wQQYK3f-E`k7c@+t5XZ(YI{dF+2;y%=ki)(6 z_-_r{m^?BWu0qS=bx?BRY;&Ne1cCp0#`KnKV|wtKFDey_7VT;fi=-tzuDjTn8 z|4IKx&3Vc=AU1u5un>ZftXMYs^`nOY$sC>Z!9?3yE4>!7PnKxU1nIA1xiuy=Zs^KC zA%x*p`hV_n!|-3^bGPo`p1+c-d|ki{=UP8f2Vlc3xw?|zHA^Q_0pyiRv7*V z$^52>vh9O7ZtCcnr0xElyLCLlIAD0fP~o@3X2;l#Vn&CXeafCH@G^fF=f0UYqr?3L zS*O-;`{fFHe%86v{>}NyXr&G|fh#MT6)4_Z`+lhbG{iEm+f9)H@KvXv<5i&u`mGH*)*2D{OMK8i+JG?p@c4)E?P zCP445HiOX&T-)#!gGWPwNpa^+@cxCTEOel!y9oy4Ma(Pgf5$sIC}hi|X9!zt=u-6S zQriZ&RcgH?RU90gL(6NQcatz+UbH3mhH$gy-2L+tzNd1TdXG>AZi9GKq8pwZA`%`R zeSj@4{!i+3jv+u0W>IpYU7w|uL+0oxq4IUzsuNLH z03|JO+q-kED2`!7+1wDXb;akn*I%MGDA+nVY_+X=TWed&+P&@+up{|57tQO>^&b+6!upSrSjn zAY!2seZnx!Or#SphHr>q14bp|f6<-e(B_h(?5UtvuZrTR^8|DB!(Px{YhDWvmatJ< z_4pkrFNH4)qEYze@L8=8ld00h2)6H)Yrsu6xscQ|*E3;#F2V{|X(ITdcg}#{#%S*E zS+_;WOxc4nK9P)(9-oN%efF@-uxD11G43>ytG~;9g|9W%vQrK$zREH;S(H>=w^=+- zh#zutS%SC8jXt}gZ|P{8)lx%~SJ3Wkh!kWWJGl#9>*?;S)`Z>z(41hN9}@=pq)jvb zT^?_zIyGnn;KO#{e}SF>r8do|w$4mVez3XLET;F_Ut3x$(CPnr_`k;g!#Wq*6#Zx} zT*Tq}EHa+79(-3b{+ig`XGH?Ve=nk}2|LzI{$7Xw$_aH+9CP?n9manZ-gAt?I=F70 z4fJ!A&`T3bd{^^kg0t0KW-Ek^$Nv!|G7y%%U$vaAzGbM->geH+X zB_%Fa5yKS&<3;cx$KSPJODW7=JaK`I1lC2w(Tg+_S9O2twkj8CnVH!U4&N-Vt(hH8 zAy4MfV45$Gr^yT>nYInzK7IaU*WaiZ%C&*Z4@mX zVBVSe)sW`c=Wrc;5r6?$(UZ&RTd}niq+u+|2IjFe4o>%`&kGT*!g$PFl?u=vhq+cd zv~QWY`Ngn(#;1MErKMl4a!{_PH}P1bkqVxE6y?3^;Nl`~v;sk1wuRfYP}&7MGUY(3 zOe9_WH#(p;9WaePF8xAgTyC1j=rn6R`l1z2ca8~8Q`c3PvTK@of>T6Txn#a*!w!Qk zT&Gfvgsg%`cy#9PM@skk2~vUHSy{5ZWk`a{^XNRW?+F#kFd9dTH|npgB8T_+VVYy+ zI9Ix56a!716J(-e*CBy`%7j*I<5_Bxu_VS_7?3m(ICMM3b4+C4ET~+}_cbOk)HoyP zSNP^>VKI8_NBK}{b3<88h866XWJ7f|I>k#I6y6F~lJI@;+VARgu=`ug1{UzTm}4jx3JH4w)o^g#y3 zXL}qrScLWlms62!*lp4#CFJ&>1a|QgXPb7%>tNCw$a5#w4%T#_azdIqpd#j zXoPJw{i8tHhNC9*cIDu9<>Ya&f#b{T7?XrOK>Gkj36jP*PQ{nzjj{3i-JDJGY%E4t zfe7ghb2LaDqXvP7k&2@P6&b5*YavhX^?z0`ztdn$W}0c~X$arEn$`c&EEi6dlx)@! zW6AGO>+E{5KF(y^Ep6W<{}%~SKk&%jfN9-$XK{x)U0Zv3WrZ9`qH2f&rpS$msEPx| zyBr*tj-_GJS03g9&7bL{5J#_{nGh1lOs7NOt6CT&CBMm3;h6J6{ItrHk>uZ>&q#HX zX4DzOgRLywk{ed^BFbq9^0O>_yh2w`+V%E8m6NJ$zuCfdro#TpAZ@fzk{{PkN%@vx zMMN+Xi})o9`{ViS&so;8GMBjX)7(yQ2H&GUkqUs;k|h7`?Yr1Z>JC_10ZDhZO3<2I zb`Y_i_VBZEEUeyyb{ohw6vLS5v>4lWDT*_Pe|=&1{Vw_hBq`cb_&q7muqjQ;o&<&I zR!lu@!xiyZ-M9OtVO43~s+*n%Uz&~TF^(ytr6aHXGU8Cc(Px}VywFL( zr&m}7vf15hTW9aXu1M9Ok~gy&v48*xh?r)qPQ-G+yx}~IM66<#W`E|!u{{PaQg8-ig@6f~||9Di$Z zf{}+^mD;Kk%a08*9W^Ya*pobS2*uZRXD!CEF-B5(o(Lt6m5L$83Egb#^%@p^*>aHm z+~_cycuRTEu&mxPXXLT&Pb!H@>}WB4+$3fsM{zpt5H%?}Z1j&9@u#20y|s0_o0MkG zW(+s~Jrg-!-X7PvKY=LLwGq_5o^Q-^j7wQDD0#<5Q_qQR_7_5zRaK-yG?gw<&j6gPK6X+4&2nhr3>2 zP8)EerN2cRlcL=yrg8|9)K|D9^^T*3@$J2oyN#=1k-Kk2h!}~8iK#w+T2#94ri35z zyP+MMo8G~H=td-IsSDfw4%n1nPnS|@CR2?czz2r1QH{>!qGK<2l*K~Yv16#2z~$?w zbH@nFt%@!BlFM-1%dL4Pnq|wnCKce*WcuiO$5M0~Fz7<)=;o7q6L`5J5aCAQ%aWVA zd_4Tr_(_elQ^#kw(C4R<=VTna$H z8?^EAw9@U2MhPk5k~!kC<0edFSdfTrJk_ix7WxSMls4$m$;^|J^Ox|;5zKUZ{AKJ$ zAT86vEc02Qq#s8g3*PydbXTK#U51^d-3>#QlKk99 zuxC990@%~_8P2JwcjO+w0=OALi#@)y*WvYmNyNxl&0ObpdIX2El-};K4T~Ib4QW|W z{=FWxCzG+KpX2mP_0M|6(iz6>)1bN-@y!9e@}p_WS0_vw=HgPxx=k8HK?^;AOsHC^ zo>F#}c`U3$5fhaHpo^i$W&+VNDow|6@EDhA-M9*&IEG=Dzr$uUXUDQkW|K#PWYPhn zQvgcYvn=I_um-avqZUn)ZT2tld+?ck z5MA>Bf4Dd^J9v2IIq!xmxxq-~sG8%Nlxs@WDlgRwwY20qV$sC1q>+i?ODA7Q9qZ0< z4;??Zh@g`u(svN6M@#)>km`S?ThdIUfGvOaKuQ}*ha+bRNgMMChiip|y1Wb7=htF{ zSCAIR_E6J{OC&5!+W9S=sQ;BIC-hj|!x4~f*zFdtWXVNHO(VmY>L9)vt81`P_-94( zj?;pbM%To$_>7%fzfeuB**`Fy_sP)Uw7&gsX~(Q26~0j&rf#Mg0JD%O8j1{({WUQa zr)i(M?BK{2?3vecgQ}jJINVpv#g|4=0VOOJmy1`avO(i;9`VLa+&58qmt$>12H-bE?YXiqc+;qKm zq3IUID?=ZM5Q9ns{C(^9YIX82{>{9<0Wa9(AxcHb*f45jCc5{dM~*PehF8dnB&m$e zILAaeiNc$u5Ivt6gg*xzvT-a*`>+aXB_;-2dQ4R4Ux*tFic8cH%|T@W@-oS`#Z;1L zOu$R|LV4;^jjt`?xUi#Sy@QKk$g%!1@Z!0Rd04lta1<5{0~*w`6WT;5ZB1U5faoGG zVch2z>T_-X%BOT;s#ilSixckRO4r)!<}&78)!_Ykrra>v$VEZ+Le3Nt9*)lQeg2ry zm>(?85RZ=9>QWDg4|nW3HbNV}==G{6MjO6bF*GS$TJI`adb)_X?-Abgc01{d^f@R= zINz$&%pI#RpT~tIgBNA3b@dBM<*g24kiLdTW;wB9-bp?}XQ-NcUJ%>X?o5Nsf+rSQ zNM8;}YVY&S5oF2uhH7MKD{D>6xqn}@2rM+fvPn=xN5j1HcJiMEHhjn5qvGo5+6{di zbvXf{Z=!II#ZwAh52;>m346OkVec&9DcDAuU()Os?NuGM@UiL18M2W;Vr^%?F$sRS zieo5S#UOp&p>=BiRKe#8#z0M5)OD1-ex0E0iVwTX-MS|M|Ex2z6y`9$h`=|C%K7eJ zzyDq&U=IKM;a$ z15eP6JeK3&%RUYkJ(w9w7z`#VFYDDwYY z;2pB$^qn`njC8iVa=MX@N9dd zWIy$HWB?U43&BbRiHqC`Au}L5O02KpAen7_wQHlUP}y9Xk1vUAi1ItBN(|U=NOJG{8(f4COi}vz`Y!@$ ztoN5&pzoT%UThp9GDU{{jQ7~c@By0@T1+rsC}t_uIwFoGdIgoK5;maJG)@I4U#C#F zM#Jf^OF)K7=j7aiZ@*VUqk)y5Svm>0t-<_>2X? zm5siJPF1#U^B9?$5#5$SsiNNY+4sUd^)_e>Y5({mNLef$>oSqmpLnkJ1E6 z$~Yipm{?^LkTPWRT?X?s0oWfTjd1?vQ;T1kS&2fCzIZ$8YHOlIAyY`JgNsp@TR3*? z-$r^Mki-2uS_#;iUKO~Vuy`)ZfGzV2o6xcf>kG&VWE;0II)_iLi40V%R4dhG(4fO1 z$ip}H@`?zB%z&2*9aiG*MZRoS96e|ui|o3kIf7d`h1p^9uB(h%x7QnYD$^KkxKen6 z!S2Kv6FLR%#Q*>_OHQhh;R+Ag(YSS3)nki4zaNeb7Ok-S0ld!Q|4Ic~p#u+}v#lRWk z2e}AZpOn$B(hbrH9+~i*S(Yd(UkvNQj*Lp1!XtAlLIv^?an6a-jL{&*jrw{ zdglp%wl(iuzBft?bov&N;mTyK1ZPUhdNuSeu@TzKmyt?dr;OTR8iC0h@UzgjaMUiGM3K!0xnY8~%xoH<+Z~j#B*j-0o^l zYQfm2Ic*nCg)rK|d#B)YDg;?#1*;#MXo!1+!~%f`ox_3198{mVH6~oPLS%i;Yd@T1 zRjqZ+2@WD^cA~i+v<5n`W*Mf!*6@zZeX6XN%Y6^p`778NGUcDpXn#i)pM&?LIRHnq z?0QZ2bgRNKwxvf&rJ_VS+lhuYoVVR;9L`P|yH8!FG-0;p7E)m&!D7Tre1!T?>P``4<^kMkN(4o4<-$W3VvI1n9%xF>Zw*BpgM*8Wvmp zBx!b6d`tv#*vNkfNiVmsx&KO7Xw%$1Fbpq0Fhr;4is4tR{c^vhSwPGw*sI=spOmJ; z>gOU+oT@5BN8vB5xVXEB(n7m)o=E+El(dnVgC{;?-4H@x^S>b2{fip*cl+p6qz0wK zkAbyJERDZs2QOljRGmxotJLXJf8r@{A;a6%%9iLBtJBTXY2!10!>5Nmrqk<;ah20# zZgj+7>V7ctkT(?HLFAa0!4s}_!#Lz$E`wW$W*xo zi0*>k9Ne6-mS8Re=9w*B)Ln@ryUI{%avM*iocDcxV*VZDdlHfH;VkwjB-xDb)eVww z#KYkTkQ>!fK!jxsB?%LsN6!%F zaT5j5Zd)dV4|P*xSQfHnTXr-Ve%}KvM;s@*1?%|;|MBCa&}jx}+M)MUC5|<3hcv-t zZiyYrlRuKC!=lR6N5&_VXy#4P%X18r^+2_Dv1w~nqq`j#kA6V_e89lQdE4Q)3HC2c z){R`_j&5!V_g$)lJL^&-pk3(szdylo!=(PO|0ibBKS$~!0lZ|v=U+WdJ?uph`OKfP zvhmGx+{5?t4EVX`zqdYytv=nMz&G>1wY>F0UqR+Vx697w&O!Tn#+A8yA(3bQ7S|!z z&c>Eey!l_t?tEHFa2E$?5gMnofr zJ}>KKAo=&3llcJ1=9heKQiyl{@BVPnj4%RO{G9H*$Uo<s#@x zZ*TW#Z)1kg&HEbBtzUTLO3uc&Mq*Hk{rp$tKX-yAkO!K<;38Sv{~m0fhlUdaf(30P zdl>0wJ7T`=HZF#2wx%XiDSt^S|Ch5+3MZMr{v)KV2}z<$r8Q^i(~%AY#}N*<4!nT) z5f&ud96keQpzG5bX1?-MNKKs)rjUk_(r2&gzsx64I}pPh(P~*#2jR^;`V&(VZ2bJu z$9@1)33RECrc&6_piTX(nH45Z<0Xw8Gbv1Km>7YWTFz1n8s<&_kVKUeqrUP?oM#y(ZoB5Kjx!x?5-d`TcGV)EZE= zfHAfpkPbC}APv{gGJ5iM-yenK3i%>D-JV$mH23MYjL8)#4c(jr#D0Ee#wt~k`zDbp z#Z+5e-`*IZN!R4QBm%pY`l730Y8%h^kp)gCEVA$`6LPxbXe&J;%F5WtmoGXhiU5&CqVDYS>8lCvmR$#3-3^UW7|T}FIK{dqKL!+qk5gr7P-)DenG3A{xVd3r94A>^@~4Uxqi1ZZz_6*joX`(1!$I8= z4E38VQ@{JEBg|kK848ml;O3w1-7*7_1Y4NuKUXTNc$M6wFMQ7AaXvBo?8b4lA9B=cr+PXWh zmN%d`ksvJb+=0C%XEJk&j3cJTRWH&qaLmCp_#}**^~@+>cCagP6RSNND;m1@CB*$x zfqZL|=LFEPTknE_sfl@M$P)of)MXV4XlwPp`t2O6tWPw3S@*VI=T^%$b$@^_cu8^n zHKpG*H=q-4+{^XT(vqvo36U4g#7$=q)9s??h5(J}lxO|K7Gb7+AjIDS!uP;EdUv%5 z9Yz;*0F3`Kd|E{5GTxm2>ygEamfs!(6#&Ku4op56IWBZ;Xd~P`8*C!V~~05NrC}fR0(SD!gksz?VJ9%ZAPDvC#0JrwS8@r#cL% z9lHJ??6@*jFk__z=H5Tt`hB~|x$61vbf}>ro^|!Eoh8ikBjVMgc0t3!Qul)o@o-=3 z<<6BdG}1h0x|2NOepVvk2KKf2znw#`?t)(kjPsx{7MK5z6QZ3Yu*tY``APxN=f`7lGX8^{ zjU57*Vtn#Sp$F*c9z6C1YRPg7UL7{*c7C|zy{_O52EythtPgWBFf?=Z;%?|BvZ z!AAvg^m3RwBZk}bvuUYZnRKP$z*P+5_E$D9P9QTKo)I$X2vzxkfUbT?@<(bc;>}N| z-;q!hZ7c|}qytgUM8!G`OUXV}JGbg?o;3X4paxQ=e#HorB!hIiC88-gr+gi_V%@1k?(kYdzguMdIESgG2Fp6xQLxn= zOw!i$b}n9CUhz|F96MHoda2_33Lkz;XBlU6x`jX)9{dC=>qY-~9lGMs!N1QXSo4TW z>b)HJ&~urd)t$ve@4JGRLiXnb5xe@fghN0!25gnWJH`&sg5OOGK$hO zP^{Yz7BmDTWC&o2`D8X_n@_@_bX3Tc{a;HrPn&wWVx}<1dIr`8@dYbrFVsJt;x>Mu z@T_-L%M!E9rkavViDODD&7zuuMO-CQWf8cV<@~WMALUTSWZaP>PmQHMIWF}x#&$Q7 zOdrQimYX{Sc=(a8f2C2FyhkSIs{IjauKvqs!s(Y99d5nD@Xr-a7;3Pcv=*|xy!RrJ z*=yjo;GbOvaFt7@SsGAmfuqtdUrq;k7H%OCTB1xhxf+F-n^zYBBoc$S(H}Ara+Pq> z)36@G)VY_Cg2!9gK^i;~d^QdO>v1~M-ies#A9(!*$;vJ_4Tmv2Iez*{4=O}*c z_ST8L*(ca}x(z5Wh2{wo-1u{u1chIPL06;8IRu6efG-nXf5ujD;|lJ%$nLLAcJ@U* zBRH+6T&xnx=MP;ROGcL0=!1@+LFwSzjq%9owf>}03|*~>{1xT%>y!!BC4$bE4*|D2 zBBR#c*S?ND%Czlze%yVpSh88aq^pIV;HK-i_*~a2+7`_`i=?HH+QSoGZ&Y2N-DnqE zM&9Q$MuLZ;yY8F87f7gQLL(OgwD$+B0lx-ui@G3SLLUD>G)8Q6 z;Fq~l<>Rsp{>{z?Y^|cTOh_wdC(@r6?5lA{o@B#8uxe)4uCdHt4!sKHCZCw;SKfl{ z+n2k`B3Y;H<+w;gxvYni;DPDDqYnW)1J-=*W~{?9enOsJ>)5`>vK_mx2^WfC<^&|W zBLfx7{x;c3;qDU%g~MmtNd?c?1#deQu!PJj(o-Dgnd4^N;{r`7uYx}5Q0Hn*hqxGk$o!}F2 zdiKvh*CWk>y@7&fKD5o>dBRiN#yz-SaU29M)JY#ESg&FWrocxcIeZ5$z6&KhL9_+0 z-~y|=YxXH2mx$?rJuD%QM=I~sIycWiq9-!HOtip9QXmh_it9Ct%2|C>C`(4?HyPA` zAAc@+dq##uuiuOK?0v34RbpEVPC_C2dh`D5`GA1*zSs5^*XuILvITa3gbPkN^ZfZLpc}ai);{%c-&jg1^((DZl&}`r_ zW9I+f1^zI3W&JZkEAlK3`&inj${p8#IHzee*B(|1_GyETI0N=zJ-W?q??z5PV47E2 zmL}P5iODkzLe72_bmGl|<;A0WxbE=?+d(Mb6J>7CbZfTfd1@Q?j2%tJK3B3WZ?G_o z5)#!FK-_}QSLvS4UcXw4ydt74)Sa(t$aO))NqrAKl8NZ=j4>(#l-!kxUFJB39{zQUGNPaXo)H?iQcvS4c)0lGi6O7SZv zWg@q$AR%Zwa7~}Y{3%4R!(Hcnk_TVgbr_v)7uH`}r772c*Tj9AsxFqoh21wJmLFt& zHt|FzDiKuN!97?37qJDq6Iq;V+$j|OUs&pfzw@*Cijuv-==_|bS6E$dgGj(7d*a6x zw5AkXKT7f%XUIXI`(AdfYQyOU0{>MsIJ4&xd3=^iR`iiG;L{NGbX*OCuyK2-AZzq|K>SsK%L zqFzjDRzs{BW*H|yuJRiR&9I_U9B#dIoW@djYTMCd$Bw61eGWbCMw48?Ga*UzYua(>ptu>p+T0rh2AkHie*&a2Mj38$z&`v$da9 z?(Hgvt#!&p%y>f>r&9dVg+quMA-%HNUP~D_p*iGatuwNNq^VSI@NthpJ~3IEK;FW^ z+QKZ#+cE;bFueCFka$@7gDHMvPeb3_>L>e2p3|=%r!CE_BEn>W_1163<<{kui;O-! zVW)`1A0_BL(nF`z1Sr#xh}LQF@b-OgcHrSEZIvcxGBZIe>1q-sS1q`{JUlXG8sdoK*dI8;_i|pC`{|sx68k*7`afn2 zC>1Z8-fb7AN>^lDjCJrR*aGSs0No39%N>{Ux~R*j{TJv!#m)|iWoPG>B{J_W>wlfM zwi9PoPEaqxrJe~z#+fgik2#7=#y$NjO$3m(X)*7-@BC7Wx9-ywP;Co6G#JR^M{#WcbV89M3>g4M3q_1(n1!kR<`FD3_%Tf7T;(JPrH{Et%U-2F2HjxTk*$<^`jje3xm~ z3w~hQ_xJC3qTQTMn*HLppT8FkopAT6nK+|NNwtux&reLfbDgd@gNSiV?+o$!9BJfu zIw$)(G1p)3P}FGm=5Sa<-oJ-*j@~(W61fjUw_iF9x*p>*+UspJbHM|%op+7Hdiy)} z&gWw>GK;c&tphtp^BIShF;eoOdmM@xtgg2X3Xl#DRy+T8?-MM2S z-=fh*&Y|_T`|7UWy&!#wBRqnvklo?89~H&|!@sV0c2^AAp(WmpjyDOuui;C+7j9A~ z2`*a)RF`9xtFv5!Dr-|0f_uy58NP>Ec)r~_)(%#JvTY0WUM%O&v2~X+fBKe{qUA+R zFNW+rHn{Q+Rljax6vmviUtyd3WqrT!+|ZpL;VW%%$ydbVIUJ$DYEw$;x<#&WNj~*n zn`#LA!k|;IXFr{{djhZQ`S!V_1oxtYy9(`%>S?X1IxjeSe-rWGkpJxAuPy44`G{N_&gcE(#;xH*Y)LbR~Jo`R>;dPZk?9uMTjKoA?$Y( zuqT)+><>iAsB19n3}KSXOm26Zo1NoK*oE zGBsIGyS?swOBYOW=)Ca)7G(AY?h*w&l{IxO*6dWqxz6qeSfBVOLMh`m-JUy_76>54 z(+_7%-f#bGQGIio>$>`|oSEFy2vmr@4h{899UD|F@UoU6P0u%?JK#;<_>8*h`I9$2 z$)in2*xq@zlaAnQxr!`RYQ z_uYSW2T+m?qz94aJYR$veWIL9!y1u#$C0;oQ;xx$38b529_~HwJXYS!iqzj{7qz3` zKo6y#z??k1AHB|<6hD~;i9_*yIBtxR6+m67bG>5aX#O-p%C&XZx7#u& z68ahe;!aE z(GX?AVAesZp4`yf*w+GsapxET_Bk6IVI|VLDe#RHWL-he&9IywhUuGWM~Fp@;fjl8 ziIk*tScZ|2f%h=g!K-`bMW?E)mYpk=u5gV3;GooSvyW+^T8zP#F2^AN?a)qY@Z=~f zv@k%L=CweCu%Th*Mt7Kz>}?Ztao~jCD=}*wT&WCHv(vg@1l^YX!=v*hrJk-h!TX6l zp~am3^AWx(D8#Qpszi%?@`Fp**V6gZS-Te7Ho;~=l4Pa>tUAa0`!Qo<#{s5;BXS>_OAW6pbrgKk!&NvOY^x0ehWqavkcZ%a`(H!Y6c2~U zyQ#j)Nt)rL908OnY$|7vEokJhlnEJ2xwNG#C)_SK{-J+tD4id-Y1PzUPgM~uBC{OK zqR=cKDVq6Nb89CwrEbDa6r$vUl z9K1c8GU}{}xYLPv<7>(1cZo$7a&^`*zw*9PL}?<2!-a=Na&nAIb@#W6>KbDi`bX>Z zya=&&HT24ecze996AQB`2#ZW}n)oNz^>iuSF@KgF2j6knNgqtY*WO@yK;iHfk^c^t zuQWkGBfQehUeSuIBI7BWJ-v;KrF2^L{g>f*_luCte;04h95qQssV6_qj$zLNHr!kz z9`EU}S_pS9x^o2@Vk?svU?Y%FlM>^+oe}1FY+A1-d;joHC_-;(!w*N0gsZ{vSf&;; zO`m5?N(!LHPE;R>YW+EKoyZgHa(jAXw5qu}5y9nZ=NG@Ykp4*G={lfQ!G?y_5%a$X6-|6||3lpwe!Cwx{Oez->SXR8=t7L#5d`Gzxnd@L zgV6dOb=Z6Cp|T6>7r#;->ODa|q0q6rj|;Eej6~kgAgH)bJHl&|1!pUwIO>O4QJOa{ z`Wipnw%vnt^0$X#jgmWFPHOeA9S=TXbh8zy(d{{UMqJ3mkM@5TCG2p`cV`tDg#Xt)_y% z1(wr$JbhVHVZ596u&CXcN`%Mvwv!_CdJkg}&S%)FoLajz_scoP&8`TqxgLATjO}(! z+pzKQ480D_^DQ9RrBQ_Ygr_yBUfei~j4H;`3;&X-)F_k4*g9%^*jxHDc7?~Q2iAB+ zWgkpH;Zi84QkTLGmr|Et_`riVeYrYbcV*a~p@}9m7~Md+{rpSFzetkfcLG=yT3GKI z(qzJ0;Aryn$m@HdFD0wQ*=dh9j5?)ugMu9kkGw(0$*Fm=ChT`LwHY_Z)zs+~y!3m1 zexA4bms(Cn$Mcvb>_cD$yb$f{lC2LdXG+u@*k%Ve>zofLIs}UFJ(`$|`u5_JqnY^s>-cJR{2?nFi*@|_&3a|zo69v35PG3AK zMC7jzogJ|OJpUso*^zxePe z^SRGi?lt#7hxa7oISkKS+H^m~QVPQV-nyuiCZ1ZaSl(Rn(l=eY<3RIQD&0LUaHPJu zbjwdE4hF;_Oe=#;6VR!e1z{0Tdt;l}^qS4-a+a^C15r+_rArC&Zk+_aVPq|fpf3jI zQf-J=Wh(R|RHc;^@>I4}Gab9lJt4#s!G$;nO5*A2w}v1>9GNQk<~VeLGTnN593w-6 z6l!t}n4YYrzP(utJzQx@rOADh6vi2@)V5HdXn`w=SFJn#?vEO-@xD%LkP-VlMkJ_1 zu1I5uIgMVc>Mt!#W^RtTg4ftOv><9g{|3JUVbAj9dm+rV*{tAhvQt$4^QFHTEt&}buV|*l6XDwVh zs^|JMxDczOYosqt7f&e_G~Hn#A3BCzyGsBcG+U(RM*l59VSyrO6y5-1Jd+J6+CrjO zQzI|=@H6ZTEgwH2CjWj}u1v11p6;2Aw9GP8}vf%eAu5FJcanqHLje zqtd{vfVq^nmsxJ~<7fTi6=nxoxY8GO6)3qnd=*8+wrTztXex06ev@y+BXki02>wlU z(2r$_z&S=ei9g}=TL|IT`OFJD--!Ay0?7Z>8R#IH5)>SX^9&Y#acq&!!#jyn{j-vx z2dsIE^qJnqb_tA^O=+PXkqT=FYjb}(M0nUb)LirSqfP0F?7U%Cfpbj9%efYC6;XXh zI`5rtrCO%Q^Twe%{b#}7<^y*t+3Ju@i_A(Ld!P#|0-DNJB}J2Ry?E^END!-^^95*`ztjrc6;k|lT;6MHz_wbrQ$25T+z7+_pz{fT$ozN)4RezefM zthMHxV?5)*VJlgqNC@&Rt$5qw`LBfda6!F;I5#yt=A6eJ*?9HzA6zgms@5Xw(&v&q zgdzhg*R}Fx&$S@$zn6xBKHrw{)12{euaCON@r-0Go!bm(9yS9pM2-73;d*H z{a|4mT`t>qieVC9oU?x=2lNACVl~n&`d6^dI}eb*-ClCVoKO~Jn1U=3u<c2$Yl*0qLsmvQkP zK0zLer!vHO`zjQM^tAJ|*daNGTc3_Mdcm^u9qw2z7-atjjIk8xuXY)_lkfZn?pzeCldawXG7VvT&C%ei&$AU3 zHFZu?ayPcAlEnjZ9#IFhMM7V1Y*bFmxp!I8CYJIwv=wgqCf&cw3+z}6Wu*HGbecVaBqADxoUYc+^!@&l6TQ0lhEoM=?(MsX1if>$2)LpM4nas# zLk2Nx2Dtzqh|au!-ICeXUCNJG(^Z(;FM=||9fkhy)hii|PmIXdr)EpPWG9fq4(gME zJi75(To4_Lohv^Ae+JqWPSxt}F&Uud0T%hTe~0^I*5&c3)T7A6-(1MfS+pA!!-u$` zBmYSCI>sLe3}_svDPUXFfbX81BugP074)+n$9|3)!kHLV%J zUS^)snZK=&EztR?$3FRs0Ae2wwy{mZ)!5n+|}>vUIuJ9?oa1U!#r$Q z2tvX%V{8{!`$dys1bB%G5pAm!1O6SJQFK=QiAN?wu10A)nRpkGPberBWDy}4W(@|& zQbzQs_fUgK+X<;cCPw)Q7bXH9a@jab>SUx$qjW`W4#>eD3)VT4n*g7YlX+0F7D$9J zdG8C6cdL4U7!5zhZb9XG(M`6m#(b6kDX3 zCqzLY0(B}_$D&sOM`7@Bh|RiYj7kL6TU^Q-1_0xGFsn9&u-A#TQIDxqhnzC)gl@o zwCSa@H6OF5lcm=Q=((o7YaYeiunhgRK)ZZ2X`pAd^9SMhN*Vr#4=zjE2$R9SluLYD zRV{|zaim&8R2+?O1C(4O<*LO5PND&XXsiQJnj!97QDRL?=4@UC)J_@=ID&$$d|}i| zOfSt8VKE^c8o+H!53d=)H&M;kOUN0lW0=A&h`5UO*Ak&hL|eQ01&zQL3k|f}S|sHE z9_$3h^QLq5^KcnY7n!e{I2;M3o~lHCpYHYrLA`+Y>HDlOR(0!1zoQU?=;Tn)73=W) zDDfsal%M%NV?y9zC{||A)@>Mf9vG3H7lId)QM-A}+o*=sc_OUBZio@=%ti91%Y4!}pB$NzG)U;1sFKL3%}yfHE~yYsq-3U(6f)iWg-GS9%Xu?s&V9tysX z9d}y4q+PyA?dYm}{!@8g+Hqg{NGa|b*3)om>1r9%^E#!}9fK=P;M-&NW9(y(@e{7` z{bb7RII`)b<0dsy1YaBW=PG-FmOogcY5ZlN4Cn66Mwa^$ zMC5l!dGT`B;TO)~b1-*%`W(8pu>=_snbnNR+p!nnKGXU>gdh>N zTj~3Vyv;&K>L#u0`3P~13%W4+=&#Y4B?ccm!6h5;cv;J$Z@jm7 z?vc3jJA3i*&K&LO=v}+he<6_Y(@tHu6w10S_v@B;j;=hb|Fd^X_EOZ*&*A4JAzS3I zdW|jh*x2oDTnAQ7l}_A4HWBZ@-+kC}um4;=;Te>K?lScd>|GfE*`OiBut#X@6C}egb#tNqwVxH6)Etx z2)sXSEGDRT5mBQW61CwE?u+b_j^l~0SeOyhm+^m~y! zZ%c4azBl8N>=y*w|M4{>o4oOhRv@r|j6&C`n<8hW!A~spM$E&kdmdfW_eC%G%9~*ULxm$=~hA z?@xH1Y6F{#q~ooBaX*P)h?b@sKAtmPP1xYGhffQoW?);Q20#&Ql1tY{$Egxs^Ws#1 zXF#^ETV!Qr+j>9(U~My|A+|Xqa!qjS;t}8`2XsAD^G}FKn6$0&6*XHCfb;AhPff8{ zfV6ULFjS$qaP#Zi-FV<9V7u7%`o+4_eRt7%xj76tSdtt{6{oQdV9jL)`lip_1j2U8 z_jcfBJGN#PWzXSsL`AY-7Uk|4!lxvLl^x}7%h2L#9H7?Iv*?A`i$1->0^-lhZl`63 zl$2w+d3c5{HG?KR!xOBwg!p0LoH{BEeo`Vue>0NT#N|pjvSuf;#q?-0X{GZ#0mK#9v^>NoIK|LmHoNMZ;Ue2CA>kblj!u_%ZXQ!X7HBmLSic%{biT(4D0!NZP(FJ z`9-YbdFQKEo9;D*FOj1^6`lTJZ6TJ+lGsw}62wp&tJ5F{Do} zh#Re8%4Fqi0$^qG=~^C@;~$^mXHux)c|MC{uGp$oAk+sboh*;O6B%+WH4r!G4&gEgZCYpFeTMzI^H!uD>@bj9D3LZ;UkX%&aXHS%7?d z?}a(N+NxKp{F}`*_IU4EwvZA31>gC=GX1AUC#gi|Q>>C2>l4%L6XZk2Pwh1O=@avp zF8S-x0ExvfC-DzLn#_3`QWY`v5>&>g=f==wU0>YUV~M#*FzyVculqNmMIj{OgBtt8bO{m~QhK1HhSR&ckvMMZ7|E^E zm6P21=&f(_u%N`mU`cE4)avGTINUOkH_^NaLDw#Cw!wM$?Yid%b%(=uQT$#t$x0$@ z5TwG0!n;(%693g)+gT!`i3cQHagSpX46CY#yOZbRGom86*k_%pRp3uZa&d{lv!1-> zVJ^t9Q`(T9qUu(bd;Gg@$3MCC`mYT$a;=UmhL9p=0Iw)c!@j8(ASdz(N zzT4REqCHw`i?z*>bk9@%ee~OCCBLoaqkEf7)daPH9ZnfP>fDm_D7#vzqF-&uYwOhb zUTS&Vbnn+DLG(_d=?Vn{xAQ12Q+P_TvFa@M^LiU-=-Q1a$3K%^3(mj3x}hr5F@tUq zC$$nT{#q+QHTsNDXOY8Za%2r<^6cg2GrCXy0F;Y#dUyp9zLa|9ae$q}NaBNhxEZ?l z9NdM~{uKg-!bge(`>?ZCveC@MH|BTi^#SE?oA@w@3tG&U=3$9M>CQ_fWc4vkn_AnL zyvg(qzy2{YR$&U)!lmX-_Q^C@quECGnfqCeq505#sq477hkc5x5Opfl1!Vg$#){wn z`}NV`tb!ZRKi_Qu<@l?5ppRV`>+<*Y4f+0SShkXLl=xOhLA zBGZhQ_^|QAvKTpWDd+m}lVrf_2J$|=mhQ*C+E&OFvvxzFw#QXBb7tMhs*gxV>5oUN z@3xb=ULk9DqjPd@5(BB@PZlmGes_D{E@?x5l(3#pl4+-6HMrbQ#h%Ym_&`4$vv6+8 zwkCaB>3l;b*5wIl)T4l{GFll-F^N zE_xp#!j$Fn{ld{;{g3|1x3G>l9pUlG!jQ!a&g>@^iGJgUTXqJ;=cT$CvT9Ie$C#~) zNQ3uz%3XK=>F(`VaGzr3-CeoP74|CPCJ7UcWAwe6JT-qWk@cNaz02%=I=}WQx&-#LJ!qn!8WLr>DotAL3g? z;ypxbe$eg>tn;(%JH^K#4&V6fyT8ZF;csi&4 zx9L}#dB)INh*au9Pm#whdXQDL?A;yKO24eQE0+7JPw=~cyVgM8_@Gq00Nila`QWB@ zY_wbKcf-q4pGW?3#Bl~#3eUCu?uhPg!Ji8wFEYID2-=@&%r{4f?(U4A?JQd)9&p5c zotH*M{CH|S#@f!A$6KLXklo0~} zhG`2P`P2UR*;I#l#f|aZrq%7ypjt^t0~7zgxb7{pv40Zy;o`O=l5srrV+xZyf`t`|QNyRfP&|#!P z2C~Kqe)CqCjl=bV{ndn|Dl-uiA-Y`Z?(?;Cub zTy50#J+tD)MHwp_9x`gXHq~3xKtZIXE*AWYxN&c2Fw|Uq2gVfCjV{NAqn9@c^(~Te z@yQfKnQyZriiQ(s9q#Non3$os=>z(hm?|f>^sD->_if_s#sIT#a@nnkZNeWVIh8Kj zZ1I>dGE&hXy#v%R*TXXR<42a+-dN_*e05^@8N{}LTb{VOy;T7)0`V&RHKf$nF*i|K zJiw{*T0fY)>?nI>hbZMBwiFg6E5oDMy|wMT-blKbemsgNWcVtQBnJC#>{a*w0elA+^y4k9oVe!9IoLZW##aLXuEo#;1!4_nuGJ^gx z4ICb4R}6Xq;HG(4Bsle_&fM2(a^zvRDg&>7`HTBd=)2Z{u{yekWAH>v-9>h+A7* zj%giLRU`BJD5a&tqG!E$j-JP(PEJ0`$slPHOEiatH`>Pc{FOlCO!0N0&|5jSP<(W4 zB=h6pjFx72k_(ZJp50VD>F`PQ?Kv4MA1#87$pWcJw)@T>W-=26tuoa_JA?K{(0he= z|E)&N($C$);}8em%qyyvjazPYdR3G3{H1Nchvds-x^-@moC5S=UxhVfX~%T*xAM&f ziQ5f}Wdwp-f7M2@Vh$`uwnD(ENm_EG@)23G$ri5c?eLj;8Fqs<_+%3O?CRz5RCf&$ zED;+fwMj=ie1Dmy?QvWhd-2CvT7-hNsQOqu5>OF1v*c42>S;?I@U>Bz_XCObD*}dkN&RJ=i-0TMu_%i%OHmBSp4ek6L}(T6~k9 z8e$Q&bE)Hb#i}?O=PN$$b}ul}a+dM^wyQhXOvEUAXKt*zj-<8k!NjBmHJ@+BVJR)Cq5u5zaw#wUQM0-g z=l3vcZ~+9i%XeTNA?OB?R+u!}TpYsH*5l@z}Nu+av4)yY(w8LQ}uU(r(i`=Vlx?4npR7WUFFRp$usSdxqXYKIKDi{@S z8=2=9a>!1a8?UWfFwY~ZYFh1Qx*On?vLMl&r?;-W02TFK$0N{d#|10vp#$^ABKE4y zC@x_=v(}?H2I>tsS?leHZbjMEYE~z3Ql>;3xhU3tYr|GnRWt3q2h(;$eWmjaNrqHb zdIIoI(k|;17SXNzl0Dq9@_^W6j{fdR#t~jvAKIbU($+Jl$1+(G)CDC-*AcCLDV{MY zCz(8!)+s;`mXFs3&93FwSC574uxC-$c%C3A9{Swt1)S7e{t-%UHslw6)h1!G63JrN z+WlpPePuf8wpH9QNF@zNMjRF+FTw&u)mAlwngU37~OTov|!nt4T0-($hwenG0uQC^+H_uJ%b z#)Z|Lt~e9tW>&YEbG$}m^vF83#4#QOZXT{YTW%PuogY;-YG1x%DU*(~A?qIwdpKmx zBpYeD%lMC@^ZU03r<)ab9ublLUCTs?`yPoe78X0ZGT8ducI&Vu2Qz#7sQUVP0gfxP zs03qEOLNjxdO8R&#?99Sm2j(*dmZKFq%Vr<5FI2 zjpU-88jPEiK621A94ykm;IhP;oB}x;qVM(vl?#H})TQpY_K39ZW?lB~#!40C40|D9 z%#*Y)mbUo)R|Dolx6>$3zUg#>VN!#SGhf*ab#qmjdH4jRnheZse6v&*n9%K$KZ4S|?k(_N|Q6c2fK)*<47d1zgA?%x> z&=zpqJf94XVAnIr!O;ugeqK|zGxELS1JorpQ8AGHeVkguPTbwbiQjhaHv9s*270Ct zNVrN-&~f8!Jr^lnqLPX-Czm*=c%K$(YVl0U;rk$z^$2g+cfXIC?*FA(0`h++{xUT}YlM%(INfMl-MkkQbpRk6eW~7_C&AqJ$rBYeD94zaOwciUr z8A-m6E4#t<3ua0cjh77gC%{J>R-&(uA?n9nt;lISok z5Kz%Q--D8Anz*UQ)ED?A-~9f8h{i74)GzGG%UT3pcv9 zF@X|b~Hpq~2qG0%IS=W)B= zGWDn(p7N3+vAH7(a`|@#^WU<5<-5iTe4sjez0z-WbH?uuS@djsp#e7ezd4O8h2Mqa zv+{{3B*JBn{oL=d^5xCi-I%+Bk-4?V#r1D%Iz4MVM4Q(Y|MVj)Aq-2Rkkx&Vj~?RH zOI39)_+ayDQ4)YcFy)T~E#jkqHCK~i*b3`<@WpOiH1s6ojUN_(Znes#A2kVm6?wye zP>)Rgvtf$>2Iw@N(>$#7mZ$DWc zt%<|K^t=@G`3;BuKCy^OejXpv&xt@QL@Wo>pnIP6`UwJh*Y z{nV?eDu3%50m_3iMBxGsLMo-WAxS;LN!;%wgg=8pXyG(LtbHmxXp5l22#1Wx6x5iM zbpqZYb=N@gQZnV{kKNOktjY8!-Qtk6IE4^=!c>cR6qzXLTlTAJoQNb`o3!8H`oT>^ z^gO!RA3u3=>|IObdxC#W<;~enfWeav&4&KGPLEyP|Sv3zh*OWkTG#!U2=ga(o0v%8Oz-Z(`u5aC8r*){W)K>v-0>; zyyx*OQdwQK*v&i(aJhc}$jamA3NS9G@4$8{# z-0oc$4e!;mN7Qv>$c{f0Yj(bIEuq32n5K#0g&1SIa;KHEkNP4XC=P8QktWjHe$5U< zhN+yfDi^P-vU*w{$H|+~(~=|GlND1Xk}|pUwOHf@e^{Ur4Zu(E#Z7b3j?hUZf0Ki+ z#ZV0`7GdU%PpGSf*8BFViWvBM^Q{OmCY*fPnJuKv*b!u8ZcK# z4#i7M{L6sXz5K$>LGS~If~KKhXvu}$RGZk2OmVM3BqzE&i5|NH{VjwQY{!$L#awWV&|e_BGq!#QBRMYIG3=vX^py?K*M#BSmkt+^Z#rS=IcB3guJ&ku*)#FDV z$V{KG&-B&W4K@N4+G`S=`LOgJB8d+|p$6~?@*#&FM}U%0-%+gl9Y6h!$vXDlF{$qR%ghUiQkw8uecqoMb{iU9q%$Ky0j8iVoPVv8r{%yGVXq z{YcF1$BSpMQoGN)aPrGQHvBQ!@g#2LKLrjoDB%K zKlsTXh^IfgL}_^?FOk1yUkj`1-P|eFx#J9}51}`D8jEZ_-yF6tb6oeL$lAjR!Flq{ z_HB^;eLUgljKnULugiFFuchNdiuQpcUl z6LjOYo{ITpfl!@!la6{!w!~aLt@X_?xAZra2wFrv9r(Gd&7@`m9f__bC|5A1A<69L zc`mXfafgSEcb+|B4A=}+iDJ76Gnw<|F}-SL?Z*~{l3V-H z7oQ}`NaCoB!H1s$D>r(3ed1FbIec#7G^Tbx#sa@1i^=MUp7c*?ex=K{}H(Y&x!w3D^v%AF**{Q6UL5wHemq z;R8yR`iQMt^O_|VLp!)I`Z$}2NEv(qs|>}NX#0p{7Yr*>{EJ6 zR40f7jMU+hd77t}D8h!D4*qX7%q0rjYPvQHJd!z#X>9?H1vr_*aAz@OxQwF$`|E?b ze8dPH_psa)eyTzZ9X&dp934%P&>2PirBs5^hvj2D*XB9_{a!VtCM`2(2f_`n%cT4i zhRexd-vnHF`CPv01Udy8Wlc5{d>m=&)FEuiI7BW8^tY{BBe%r(;ocZmM{AS@vw9|R z5tmrszz9Czify$;ZCMXwi_?o&$Xkc8qK{wv(qXb8-LW*`eF}^tF2Kk8sJofB}yMl`r;H-`{RwOJwa=d!Gma zJ;${jcfUEMjyn#&$d}9Q;S4a++q~ibor(bW6BY^c()MPe@$T80!1%k4C;gZBwa2Tq zUAsLZT})-m@&DrY{2*L(Yiop{9rgh>Bj;wty|Nj9l)1&YAiaYO*QBQVX+-X{56V(- ztl18g-knz!3VFT$X95f>-QUKE6NI%pX`ErtAOvw^`w#i=brqn6i1LyWD*G~APe#&d zjK2v}rx8t*e$WBdVGWPqe0nGHbk8c2QB;DDMaek1fcbw;Lmg^ANp zS1;=HQ3|s3S8AKw9gCLj3-oNCe*ip2Ls_iE+_z_G7Qo8a&G`ZFaFfz|CFh$LQ}=yl zh+gw$Ms0ajKBKHRe0a&PN0%uM0CRqyVAqNCW{T@dNM4)iDcY487=1ZDM;Hwu5FRFD zHEbQ43}LAw)Ry<6PM#KAM9dwUjv|)pMj@g9#rP2!m01puWZ6j29E1QQseB^bx)xRr z)&vHoB-?1`ypO@TMe4#flJ8><=(z%vP%RYV3Z!*Gtn`rN>h`9OrBe(FruhlLAgE<# z12{ezG=2*iRY{Sohc8zcjvTM{9gQ82*k}KXqFI#7G%XH06q+aeNvFre+UZXIr=E1F zVU$ZmB*>Uk=pQxw$%DF&iV;XD@$qO&4WFEk=3fn2V427R@$-pMoMT}c%0CzbISZCh zZOXsuwATy`C4KfJ^Rc(tSYH=n2kN@*helY)5I*D7b5vg&Q`TG2$q-KPPz_SWUTz4; z)p;-b}sYLeR>&(Yp8pC*Bf(f5N&U1+!rptO9v@_`73#KE1Q2 zKb$P4Ko}5q=W}mWC#gLoScc#nv(*mryzScVG6qiecuT;ttld=q+ku;mD9TG5t<~8# zFG>>T5r_gO0H)1X6uSnp^V!IA6GGwV&Dqv@h)(wQ+$r?GH2_cutiF?j+VlLYaK4D{ za_JYiTNE%d6Ic3fGVz}sK;jK?!l`4>;gE)zfZ4z%+2_6Qyosr5pIMj&)x#C&6>L?1 zTAbXl?tJwkEuT=xt&`sA{W*r}j=1YyJ9Q{RN{-&d?X76&$WTt8ZVAMoLwludR62{8 z+BgfBP~|n8R&do(7lG>snqUs9XJ;i_;+M9p*6FNP?#&B% zGPwP&EdYfZGc{shGLHAetT-6d)cJh8G~eJOvUNq81rC(#3Ql*34@1)|Y(N39>hx*~ zIKf<*DxHgZp&Yagy_FFJkeppD(Rn?!%#rSK{a27{QxmAEJA z=oNWfjp#nwxRwm$2LF2Zd&PRn&~9?g9`CE?Wjc6Mg_5LqfQowYsLI(U;EE-(j&RPJ z14x+j2-rc_J}7s{y~lCOt>OuxW%cftVUg*Wqy2L=7>Gj9YYtr7Q)@J9Q$}*LkpuT! z@*L)18zd;41wT%bxUWUYWyVWVLiwNwwXOFN4C3#-?Dn@)RIC$zx5>+w4@s!0X@)le zT}xg4BAwzIvl|N7@#5$*?095!v>NOdlR795mjzjC4r%&i=Web41LNmH&e~Ef)l6OC z?{9zoK%7eaN;_^pm^b>&J4JHB!n?KW`Kd+F+Z-z-HyRr)g!@$iT0ShCTbV;?zfLO6 z?wuA8puyb%a&HS&=_FuBs{GKTn!EoX2n$JGU!;)KAJ9x-fREYyB%WJjY-L;O{+hYm zVoY*K13n2*8a!lnk6#+_r(R-1Pt_l1#6Uv_>sk*pOr>e2xv1W8!~Isi!Ae^jEyEnl zZfZVb5A5kn{)lHyR-4_!!O+(dR!o!pF zdR|SGTdBN@%WEbcfO?Mk&}$OQdz3dBc3i75qN1$ILR1|B#{~tIaSfRy5wX_|eeQE} z$jsrhNt-y8txFTzC7S(qKXbua{~F$KY&jm#qcl3gEhId4(j;WtK5ktOk2zjqgev9} znycqH*S92mZ&XgihjvyQ4)8*-@!Vf~roR(DRL;$+P9N+>!3{s^2aX)LFwfph|J`%p z$dp~1O7Mpa6ARLKCfBr_gty26wDzvd;SbdE*zriH+`NC>N$7i5;(n3Ey}{w;KP;w` zVq_##Y^+cO0(*2#MOTyPCL-i4^@AV2{0YG!E9W0BEd{)bgn>#-3A`2_U!&bBL$z7C zx%iZu)C=^=)k>LI8sQM2#W8K(2|wAY9JvYb}dk5dieYP1^4}b zrbKrCmdJ4HZxQ)K>>z~Xj&ENIdR-rzn%Bh~iU?*!@92PZ*%60o!V7XK3ojo~O(Y7I zj;4%GC&8g~)zZvWV4}IN7&fc~upQOE=zy328o@j0%tA1w@`jKt#_U=)EB2>azOEz# zkH*Mg+iJt(k_!u?iLN#0oV^|0Kxgi*=SHOHttQ5z7(%9%_**o)Ao1?$Ugt@J*UW2` zL;Y>UIIT>pgRPG9G!qx%k|ZtZtnc@(KESe14Q(u@uRUuhu7K) z%u}(;M|=|h7kV!+2MMG;Jm=>uxqd5F5_8$W14J0 zB^Hy6`Snd7(+a<@tKe-4(x^z*@OIbWYb4ShEeiFIObceQIDwABHa2Fq-z`CLhbjvoXmHO?l#SC~6gvb6(B5i6_nT*_T@RV-D&WBIVUg4m; zZ9QbG5iF>0m$%B3pN*A!pjK=6G=Cg_8C@wFF5OqGwiC*=q7|A{@Rs3F#PjT0;S+!YY>3>+}V;2#^2`yitr4=y=rHm=axv@RgnAOw+GaTB>P5U|R?MG%l6DTg6eawF*9`w%m!jUGpq@ z#E%`HT4rd%rO21yH=+h}ebr#JNPU^{QH_H)L8i%Y0) zdz!b;nWP_b1|-2DkVTgh#AwayZ7pE7AF4SSiUPZ|J&-a~Z7+4XNC*R*NbG&i;kM-p zgDeTQ@@8dSF)M%u$LGyj5bx1m$ZO@_DjL;*;o$TxYIP<6hcLvrR-oCdE15wrhp&gi6VXSAvLzHk)l&wP9(Z6Ms&g>oCY5L^e_zveb-`u&=% zij8RLyowFE-wg+LkWyvO+TV8;F%OUtYC*(q6^@VnH9 z((?Q9JzL~tBj84CK$fy8Hu3!@=kslO%+E`~AG1e&-7Y3ig_v7DIUOEg{lz=&m?Ix2 zmp19NeRyY(KS)b1d`Bg56_0%3lA1>t5?l)Q6ySJx-H(a6cJmLG&(T|~-MPE%!NjBD z{`oF67Dq4t#F2NcNnYaKWOyt@Ht*B6zx#H55efa2y$#bZEG{=TV{3mtL-aQco)8hd zsMa{Dw3GG<8r_B?JqLEN^kgC5Z6mMs(*k^$!NgFZ<_?wfdjuc8{#CC}PD@~(>ABst zO+A7ymx8h0m+Y8PC}p$vOU9+=m~IpzUC822QSd+Xi`6vG6*v12J-uCCjaS!Ok}cX0xy|_+`a=12dbiEm5pL*5%JUU0=P&tQimSg_!IUXTyqDM2kaeZk^i|a>E+X zf5MURFhxeDycebP+NZl&{+gf|J#W2`_PShR6v7Eh4e~p*afBOPraEt$RiI|oiocdme}nm-+wh6i+-62 zE^#P60+S8%`;nD!tz~g064GebrftnH!Yl^lmLL--lbU#M5_~0c))ZBTy3Zoa)qfvc z4|0c8k>{l~*qgaf(njIicZ2cHF{giBf=EHQJ= z{`gWOK4x7E>f_7FXbk+LlesvLlDvgo*OH(4&$}WjKAMKh0d5UZuIE+KB^a=WHpW=p zt}7)V;g}RD+I`K8?jzvWo;_&r)X`gS5s%s0)neWi>#Xjqj_&_fp%>%z>UahNpwa{T zH(Bh>zl6(NppAtgcaQV2NVal{J{*rZ2@M9OUYf?v*!h_-|) zm`t)`k}KQgVqiOiCgSd}cl)jZa{oNFeDV7!qxl7>l~!aJzSw{>wFEj@l9@i+K}$YI z%%C|;yhe5@w?_sqrhW;CK~R^fCP{ls8e%Fkf}G4}2;yy3s^RyE;1jBJ^Fq zKoAn=MJW!Ci3r7$k)D(#YN+gjwU5wAuJ9hrUdEZM4%ui@T71D)FHVM?o+3)>mY3!#(`Xo5b$1+Q>v;QOSrsqVm8ERah6~jz06ZcP=9~|o`n_gf?FJ6753xuqCF7mr zuL?1%DBYvBCqv5Dqh<>L62I-(lSrts>0JfV%EmY*^%kg3kn>HHeq-&!M811t(Rd!S zw>e-@v%=x;2l8o@)e{)0|GYsgr%T_ZZ9)!0&2WMxGRW8-83H8632uTw}1-(WK3%1)JfZg zM;ER)M$M2NEy6O*WMiH74q7~JdnmW}&$e_zXtW8F8*8eRSi78k9@SHw%M}XLx|rs5 zfVx*0r5~xEo`CR4X)+~36$QZt8mLBt+7m1orKXN2i>g4{cb|NvVYFOx0ZXi%`EEmu zJuN(L|NEzl1Y^7v*L-pa8|%f?S0MMG|7(>!*?E;w@R1^TBV8!v+VwnXC;C10KJHHpEfv`1-+PgF1RUA)U*#zIN8i;(ts( zlwsA-;-~Sxzr>k~l|di*l?vDf*n9H0y`lgZ`R-WL*Q}?8*t5!)g@5_gW{>bw@v%9M z@AG#{FRNY1*O2oq%8gY#uldjIcVGV@E8^|C9sKk+hn9aKL}It$W#``qNo-a3KeHJ- z9)CI6KVEimjc71Cvz=C4g+wO0WtY40H% z=j^;?%McXqa=RjZc`(~elei`uKRb6O``qHOK}krHrfs}k?Ds_?WiGZvxcv4 zIeuyWux;)JiHdgKJErpa`t&@>YRsiryI@&xNJ`=cI2Uq0zbCSN7R}{U`PzT%y~{p0 zF?aW@aVTMpmQwZ~7|sAQzatF7J2aX7r$dv-5pH@8C?R!z4sT0H-C(hCmXq_yV; zzs@NZrj?ry2u;-yW z^~=CqW&VC!gYy!~?b=PlU;l~<>Jnr@mwv{tYhf0?oMG~8k#2W{D&R^^wRV&7?tmd2 zOh+;c2Tkl(`)~C)&bBEZ#f_iuhckR+U$XNv8Rt#9#yEi$dG!38yG+{ov zta=Od1U#!dBFs#@)7Rr?uVB;1cfp+eEI=jO@Ve4n>aX#Qm)7FE25}&}1jXAMajIkK z6N`3>qWFhtt5gPg?rz4MH7wLX;<`S-G2&JfnSeHa^-rXr3Tkc~oia88kN}{`sLDiO zGtC?|T?$2GPu4s%EA2Z;WffOsgp`1swaY|8qf>n+J1Kv2vJr$AGh_-HrD+vjdj!&ta>jEnq=d3eUrCgKfwf6tXSe&IkI zvwTU-^4!vVuZ|v7KB{Rwlwtq+piZPNolW={Qyv@l3L((QKLLnQlS`QX)*{Pr$scW| zX&h~-m* z7g_2oS#wErd?;G#ff(9GGuMNn)$4-~TXZU@*V+0%A`HPAx^-Giq@kA52QS%eFEOyA z=2MZb@zsZ5GUFHmqn(T%mV8Ney1+OTg#2I93pF$6jr}&FJjWJO7qU0O07V4iHF`Nh z>Sf&^)xuVJ^t9jmQ5|)oyy*#>H+P z9!^dLs3S}h28wScrKJcNo0lE2D>`l|BvB@(i&sOcbkdRT*h7C>dfzzfl#E7b#XMen zJ2r9XMb-Y0$4lTHM9{C5e_z2!tuv-?eWNHKi4-+KeCWNZEV4c$__Y;#fos`?qgvNO zS+2;`{bG@>g@trJs@0KFBRyDPaYrRzFEP!2$k%u*)jAf2gOJ~Q(TaKZyyZ`9K6fk5 ze=Te968nn5%(e7jyB>ru|XHDZg56xf$O?bG{i-Ng!+qn`w zU+*lxA>!0Q~g)$peH(X*v{j=`go+{$&+O$-0kawU)Jp`!~i$S8AukW4x{f z^gqaH6L)wCuK+r2LZ z#V0EkA2L=H#cuQ-JT?+%ukgYR!u}lOI{F4QtJt9Z6q4VXJ#2LrweU?<>bUXtJ#W%; z7^bw7VtLqJ@ufnlFs=(Bbe55L&i8HKymI^K;nBjPR*pmR3%oc)@kzL#Ku6i#UE*-g zVEd6oxqNZ;L^f7tAQlF0$W;0#;aw@&8H2d5Q4Q?+?Eet;j^S~2-~Vu%#%LPbwr$&K zY};mI+qRlaY};mI8xtGk_8hiX!)~k+RqB9484v^SND_!T&+0e?5uw6SMkR$>01~c&R#Yx%A~|(E3*XR5A9&)eS_0YiW|D)t zh8aka6LC%dE?&9c5Cd*WrEpbhmMoUeH2`CWPNGU6umojlrC^`2JF(WPav>qvpBWVNEO=XYv2uqHKQ zSJ>rtB%J;ct@^fsnv?E55Uetz@vS6sxRpFPTzqZjF#s zqwyPZ1QoDYVCXN`5S+TPl6787{T+Ep@wFo zl;SvHy`n)pCDx87kyQ4)1-qrFoN^Lzu}U}GYIU$>uoM!z5RAx<2ouHVOQKIXv~L6h zov?+wLLXmE2b3AJfVcanZrct$$lP0!;d}(TDh2b0%u;eg#&Jilres@~T?j#IUheTO z6p@ey=_Hz_PI|GPwua-%+iK{uA>TF#4dS=`?c+vH-hUsAqo>UDl``umps1!SO|WLS zV*8mokH;+r-AkFVZjNknNb0ikexQI`tMA@)fDc{-yBkrrD zr%ydsVE8zff4Cq9XZ4@1$+ms>;O^3ZjYdNXp7wHmN#*c5#?h7EDns;qhapCu|Gd-9 z)7H`66m?2UDj=c2d=t}?;68>$$MRbcq66)ES{bk>@5c}^Pxm|PIUJJ}JJBi67%_@ym{Wnz}4KJ*AOzZFoNSW|9uRPQ_xd$Q8$3QwIp(P8AYr4=4ijT48L`)H~h#q z018}$3b^ayuaCgHT_|%-ZJLC0?SUZgok{Jq3_Y7`B)BW-gakYujh42&xdUv1Evu?> z&!+_*?&<%|xcmUz$)L#F8^X}vxq)G9n{xJlfp~=1>Rg2>b-@b7KTgZN7{OpdX?Q>b z=_U{VILD-9*W`6fl=)q&O>oc$;Ce-`xqWr7VW}}ZZ}87x=)7m{x$b9*-1IW$2k~VBnqE_f~7r+dMh|Ko0+GF#O_%gnGNtD&oDt@JpHD zdq733Mx-QX(a8q;H_-4^In!Wofv~=8v)8Tf9s059TeVpm=8NNfg3Knrsi9N1El?2d z+us=Gsvt1VZKtHEv$MQ6j?Oaq>U)lfeJa5o>bbY#A2P%Dfr@B5sw7?3#%LL^$$OWT zXTDudoNhNuiGNhm^B~3^dvWv+6dF%UFg)H125@ON4~A`$N{*m$9t8&PdOk6&?Q)H( z+Y)kS_{RnWp1`#w9t9n1>Ds5bz8q*owd}D>!)KH?H;<9LL@)rh$+z=f0iy^X!2*rp>rq{e2_so11pq zoQVFPaPQ-w@xBxTE`;<0S+`UYSSxT`z3tZ=ilHQ=)wLRU<2d*OZK z_=wBj8@qeS`-Rif51N3w22MFU13D4JPi+4O_1xosb;cVl)MBj1t?W1j@3=gEpZ)`B z`tMwNUZ0pF`2QvbD$lYzyCq4qCaNXy_s8_TLR~l4UrO{}iD&rV;1O-ljsM9zoVkUa zpXLXF)-XzY4IbU@qfZI}Wj>KYL^2Srk2q#rK5Rn2ltx7qR*Nc0l|*A*hLGCPnS0D7 zh-Da524Ey^M<*%PsC6WbkH~CkEl4beQz-+~Y%GUU)og0}i&QU$o}4GB)vO_MRR6gmY zutk-k>yV?sDt~2gbSF;-4#P$vg*y3X1R>%YeKb#%3kyb|aHhWdN^Q>-Nz1TK?=Nu#DS=BVa1O~A&{#rJYY^Ri6`y#?v2a;Sj9QJ3!y`TyM6u;IdwMUJbhOy5(Cu790 zBACH&ERV{LHMBH@iKtK`GrA(lBD5OOY5u)XJ0{QDkZO<`Rtx?*&?%7k=e9=2-T+%K z-ex2(t{P;mZ32s0-21JfiFA#sBLyT1Al@tEvrRF1i0hcEk(od)PbV&UrUb6GPnA#s zm9zF^H(bNlNfTY&&~bp zI7m$0q_Qwb6mxV9BND{!dw3o%vvM7;Fko)yz)%}=mK$P1oHc7An3at{Pis+MhrNIA z7^u(!qDHRR%{ZBpk6aHEKUh<6JxyzOIy(mPz|rup4}5PATe%snCMW223eCDh$fSuI zIKW!%4%@|#09lwUIA?k643({}@D*3`K{>IdZ>6doq*%=YhSWB~ziBz0pagNHoFLP-}TXKN#>#wSAJ-)#I35q$qN7jT+w%;HC;*M8?rA!ob|K`qBkCcJi_@q-@tq+ph#~!_trdfHuKKjQN{cumu$liOM9B<$T z#ryTuc54e zD$P9Oj-!pem?FK~Euf{Ep7Ao~x;Hoelm&%$^7wSCHN#h8#bC=f$y#Qhir?eU4{t~; z-S*y=EuN`1al{`*VxfWIJQStnwFx(QJj2zy*mEf@9_N#!cbne-+Pu+*LU3e3)*VwR zafj?;=w8r}&9zZU+1(3++P;6}tf443y;4>fRwAaXn(j}zg4@)62Q8m}+~su-Cgr63OgJP21g10FRyh6ka4D+A zL=73%-4K)Xdd8KVgPX!0LAt?+huXl~OGJ8yoBBfg8F96m2g@AJslzkzpMIbG?CwkD z*}ie^)7yJS?V+x+bF^{sIGepFMR1*u!`|6E?zu8)H4e^R5i^N^4IwB2OAXg+s>doC z#dQ9@bBeO^uimpKv;%L}zJnW??92Lkvg0IJQpW|n-X?^Lj zI0P0>qw>x>Y-gNUCB05zYsA-^}Qa2hDTah;^~pq(YAKv@n7bNylQ$T zLKe(9xl)vyOx=#jIXMI-mnDAI*^c%-ix;PoDvl@$ zCY>{&%S8p3Mxqwmf}@1sg4L5WKot!wpD*rSB(x&eAW0kZV9r9Y&2ewOHn?0PT8=?b zrhkJ@AS@9do%AC?0b^Kqq!dzwKE=TcR^(bwW+j@#HV*N|Y(h3B!wyIY^l^`H>i%OZ zI=P);=eEDbyr!CMgzTOL5jp1g$1WfL4-Pm(;vV zP02%eBX)r`QYn4|C)dQ{!+Ik%0<6$?WEo|9q!nyd44Op@^jWFN_es_y4tuBlc{IE1 zp2^869#Cv2eL%O&PP7uS$xpz{tSC*fGP2dd{M*#nSejAHx{xf1Ba41g0U(oStB|S# zQ%{Hf(J!24+=3<)+oDL-3mHP{@SwGkCf zAeSPNCyLzg!-mtSv)M-m=a-hMnzP6$4DNmMsdXRFT(@#uiOog`8znD;cOTIB?Itn_ zS=8!x-hmr-XqQ$oi{SpWTTLh1F=ZykmJq`}R@^e7`;WULy?H6|SB84$hxEI*(1(D^A}4js zo!^0MCRm*st{?5xqhr@AWOmF1`rT!9K8`z9vpWS3RBEdH%;xieipfOD9Ch9e3f#W2?s}dn_FXsZ+k8EuB`Gm$8aKJamnzwwPe1ru zbqcs@BS^wlST_F`NwpvkR%aXH?t4F|GbuVU>>3S(| zJ@*V?Vqro}^e%khB`W1Pd|_?>iNi0=X$ z3AI7RYM;z1sm$}O$^HhQ-raX272d&K@9JP$YmqWEhLi36hRo7F4R8kD_Jx^qdRtd? z^(t^`iN@e$gOuDo&YxYY84geM8p7W2J=1?!^Ntf;d6A->C7F91gATYxL*P)cw;xk& zT6NDStWkH;HlZ`QHk$?1F?Tef8SoYJ>XtA7*wQO@e16~dy9BwNjECuHDcj+g5@>Gq z#>NmC?IHuaZ>hImAKg9f-oc_`?!A9GBQ=$9+397F>U0D+`Td#eCN2p)e4Nr$@6?Am z74jtEK?D?SPdj`(sCzstfmE14zprsL`JB%2l7*FwSoGGHzVlAkJ!TGSu2*${(UaN0 zC5PT|$F@(3dd~|iP&eJA?(4f-^m8)v*I^_7$i_>H$466=j$V1)##ssCA%e|zT>ygh zD-{HnlVNVQ!02mC5quRsIi=e|7EAirKCb_p>lVLnPF|=G2A+!p2L3qEd_Q4?tFtJ) z$0LV@K*#h*LegiriR&ucGYB~S(BL&?#U8VT@|Hnh`0yHYvBfXVHJSkDd=RJ?DiMmc zJ{wk-nlVJZCQOg9gCX<$!y1#uTT`PFlylWP+|YI3U83k@SL`$%GjZqaT|miz2L-{` z;N-VdX3gciQOf5Unc2m*%_xqr-L15`ozdxi9D$rj9-<~6s>^z|jY_K>Z=Qdf&BJmi zbdK?iFgTgsHU!(hVM#1|E^bx+QT#qUK}gl%!jV=S{P}`&KH}cZMr3 zuQj)DVyx2*v*nGgs_S^RKWK!7Ml$m>L%e-d`^@eMJqvBXmK zoV8NUCEE-g^NMr57|;wEW4iS37fy5ZJdeh=B``D+)o4|0Di&nqUzEx4qZs4&F+UCY zgtA{8wf85@lE-O%a7~j_$Z4tPNa5Iy?B$qU_t77Q#OBRVvPh>J^sHyG^`-k6K}C6` zMdCXMQkxz zIa(#+MO%bc;-CzEJ~9G3*2RALjFsB8P&}#?D`8QKGzD@hggWKa)67mzF-yC@S-BI{ zg@hc?9G-f{dIXAVG=uG97aOPxNiA)zhs+oXIR|SQ4YYF8vws)EwKEDgw9ba-XRGt) z=Bet~NHvIyEYE_)kr$$kl>rUSly$@Ha|q(bC8DqV)ELMI&hRyQL+x}~8eN8XAzOB5 zma?>TLYRu9hofQN+XzKrV6c>`gZqm^TT>DTLphm60m-Cuc1Y(&9(2`f2X8`VMJ9ci z$9a^d?67@Ed+gdRB&93@Tg@$wM@%%qg4hGFn?381s8}RgOO}~TM{^qjI7qaRreW2sA3Kvqxzhx zv*-8+{{54pGK;FY)ubGcDaReqX*V_B5bU;4*x4&_AAr&qC{{ffW+T4aB_ytMDL zpZAXPxsN60w*TO9qc#{DcU+t(mQ5FyHx^tQvq8gzLa_JND3Fll#(x~{v=_)`xCO<;c(v7tQ4a_jiQUGPflg{{1*D|i9T+9 zxS#b{Uf*gVXsD@#~hVI#oeSRwBW?Kx076Tb$E92m_~k$)9w72S+ z%hOWl*BIBWz#9hY-X%ec#RE+}7VI8DjQ+}fXC0mg_8R?nrS($Q@O_!io0y4{TTE;A znj(KwO6fMqbcR{=3v-thr7QnyN(l~kmUI?cQZ7};V7C3Z>+3lQ&)XCJM<8w~Y7Hq2 zvDTEBot{3SoB+3$90k=1zek#xXYiJ5$3JfF!OyM%*&NP^gNy!1pDcwy2x^@kucR>^ z=UEHG>a9JuM2TeITLL(@7Zp(}Mzwf1g!w#`15#EB28Yij{}F*V410&_d6$q8o$!_4 zr4k|Vw)p1T2}QV@U8%NwR10z;>|hp(npy@{My6*rK^ZtJoL{@1=+Q#@JySNeq32Oi zc3j3gueN5^sb=&F6(bVpp&Gu=hWOmClq0cM#$VNO`Yl?nsVXBizrMl#M}izGR(cfcg#7w&I?VWGmy zV5qMZNeZEE{tAumwT2SWD)UR34{4PmO8bGA?{+-r7N-Ls<@c92GNn@u}!QLA%#y9p6(7h zag}A})r3{!B(-3qDSa4vRq%x=qrtJBli#H8f4ZuijRlm|G53Xo)36m@2GpQRhTQ&u zEnz+k;BRyQ=ifl+d`O0yM4k7%!m*ZINIu&Dd&uA_ETN7WBGYQ(R%!@X!d8Ga$+DON zJB|-zl?vCQi=OkyC4~obGMuJ*Vj1dG#UFQmBy&fbxb%_|AA}Ryc}t!!ZSUx~;frIH zvSia??)LDINr*v&u{EqvDZaA#E3G0v7(Vg;&xQN(Y@?5VzE97IW(pCG!_t zOJOrf@e$h&7ssTxZV8XTlvIN$W6rAuolU|gsaHEbOk$bYZ;)&KEzq_T6-ma{8cxI% zu|cR~8eB%kks~H#3N^!3vS+s#s)I|NN?xj9AJj@RYi5965$I&h-&h~`3(|eE-TE^L zF}adDtCj>O(oaZu%`2PvhY37a;soN~A~%H3h2*mujhOYhxQzxzDot=hi=!CB$hZvE zO|nyQ$DM6|arJfb!;$H&mKj8%TY3UASVUhEn1U4VlHb&W0uA{5)6KvngFfuMY7(iX zTMn5P&irCXK_XfZ@1eQ0_e!kT@>j}j{iD|t|4#aIhp0afuarpH8(T%cE%%c{y9A_7jDF=wv!8)oqeaLwpDAY`ThnW znQ#HP8{;R6f;Cl)9P9L8EpVc%%9k_k9o8Se5c#qItIDZs@r5_mwmBA_%3vt5;lLBXSBK{s<0s4y|`B4 z;~GO9x3a7}ANbmk0QwFHZY1nAWj%v0y}gk9V8rwGCKMieU%q+;-q*e&z9zQ6)P1a( zO)X0%{XIo-1v%Pu5I=l1vqt^GFYtF5|MM}g>?}+3=o+T;F|IU71B@vfh2+o!=zN>zvZy1vjAmSZn@I*=p-xBf8SmAAW*_MZNh_ zA)w3s<&nQRYKlPj9mS9?6({?3z<)@t7K*{V2A&8mK41G?hi7X-$m$lK9!K`G?zr-yu*_}mqTU0 zI2xOJ@?)Q2_B=)Nd;7X}f2mpjxCVZ~eV*dT91POS4Yl6r(6&7MVLwqDNseHvO zhxgLR-Ey-syUDk)tQI)KKf)(-`#oc|ZD-eB!r*o#&51~rJ>+%mdQk#(c2wYfZ@VS7 zp2jNw2zs1M_TZimYI83YE5Slac#uOz=l?=Ip-%o)L26grct+JE9aZwe{ZN9gBvM2Y zWoNnPB|0B1mBmCZt)!N4=bU_J8fgfl|N3t*QItw5yAYrvqN&4VT&--}Jx6?TW;n6M zcOMhGlNR|;Fu^NT6sxf@xP;d@i@nx#MP8MEP%_}2`3)bpkCFwMg)Ng)K3t3G!78R? z)zd0UW)MKGgo{*yM6LMDg&0gGWo%9mJR}`(O)4yiD?us+2HmeC$)7j#KFT)CDPV_T zR+$aU+hJwP)+nerdVG3%MSks@Na+^&=#^8xDoQjK#>HE~SV3+%G&qHcM|Q$FL{7y% zm(EFM*Ep*rTd8dB=M}qV1c4Yqfl4lAxs)|HHM%+~3d3FpK2LFvI&UG0D^e-e**f^% zl(oU{pU|d_Lb?RW41tH^Vib-nmrTmKpKetoL>C!89}F&&>3Kpi9B=ibKVg)(A$l%@ z!#8W^@#7DpLo;)TQ%1oY5^^Qe@*Y(Pav*4EBQUVnA;Lt0+8ES09SNAi=EQFMuu9{1 zFoAy@9vQu6A1+N1%Xs4-?fh>uXTw^Uogw z$sX@ytnZIn~C2UJpQ51Qjt07W(BQjuG(sK#_;de$VD@} z!_8OpUO-(}oEY>|*&M8nAm67N(}#ag2?re7*L_sgkn31$?U^~}YMsrt*>pI|^}eo3Q;;B$DUl=rzYD8PTSj2``fIA~LuWW#p9v_Xh z`TTVl^yKWaC=v@lzfhjUjzf#)H5OxMdYoSzuQ@Fk%ZO`qoT~&o^sQZej%9vot#iG{ z3ol>P9mtr~g3ung*=r^qrYt>XOP}iq)}9A*AEUhS20fzYc^~pk_ueJ0)>H)J?rwqf zCNI$bx=T_eJ=>6}Cum7~_+P{KPT|}H3Ia20e}<1I`krWVN8YK^hETb%r-tU0GS@rq zg$(vDl36C%+@m!Y0X}PvdT;;jE*T%(6l?&54BNl{=B`L(jM=7?0#_U^Ubh69GPWj# z{a;O?6egF7E!fPXB#j!x9kg0eHqfudZ9! z;pwl%eTo9i76y@s-5>NVNxYQ=zR9+N-xzyDi!vn;Yz|LQ1`cj%NM{WH;9eB@TPB#H zD$yV+VXyW+`lZR;pECBc669tUqCGY|&5BR9Eyz+#OCOd&sZ28H96Yr6KKh)B#oB1j z{Po88Ud|SNY=qvK6D?35T981npqSe$0spX|u33yGrYaqTD#1}_{EgW>>;Kl2pV0*< zt*@Y(bA0!eANVxJ#!E*>zEqS@c(Ah2+zQJ4`XNfW%j#BvTt5%kq^5CtGl$P3&jhPq z>96|B9hs-D5;PH(KsE3wN;sXSNZ~ph0m?tueO}Ns(8Z*U*!m-*tmLZHB=~61A=haA zS{ztqu*(%BX@CIIWzvXYVnt=8pQr(-280nRduFn0(zA3i5%8e0ycQK8m889hl1Oe- z^7{py!Vb^ilB;V z>0 zMQ<$mZBGaw1A2l>8!ZgJY_}l07%^ep*hw)8!shD;O(OC}%g6WcdE*BhlPHP;pi$0c zZ|t%|q7<(P6`^}Zns3U8s zwR0=;k!iy?NZZw{KK%tAJ{cCH70gch&*&OoM;Oo}%39($x|fAjab;j7IpT-Z9iwRCuyMrI%JqN}!trvc}ybp=_qEn(vkEp1F> z@g&x(ULI(L%Tup8VVo|{gjsJ!TF0N^_V{_`N{B4Y{&x*KOer`cZ5;~UBiB_dt3it07;Pz-c%BbT(zt(q;;aec`aFF2m&oVGhHJiu_GTMwiU5k?dB0e_`4qNp%AA4bz$=N`SA z8(e}YursfmBkdX8RJr140R-U`HmA__7rLqiAEwc+bUG;S7PAS0lVn5UZ*kQ)E&7M{(v^591MV9CCEtDZf91Qg!; zL1C>GRMr#j(Jo%)iC#wzh%Ujx&p-VMu+|`ub@t^aZd<87Wib@nvEm)rXp7RR{DGNh zhNgW{!dV|Xbx6Ll{rWS_JT*NMY&5Rc-3Rf!dLnYf4#rj z)_S$Q8|wFH-Th~lP7cFdlV|i&CF#=B)}b;QGRtV@rE!&Ju6g+iIA4(GZ3sEW*Zz5S zZd}Anmf9L4og>E^EcyJR?;-p;I_5jwhprk1+&$v!8TTR(K!>hht8E z?*QpSO=MREtkgIpCZw~t--B;bQ%@VXGu#YEyMWg!n1mrlySWIZN)#%^Nt{+ z<>AxSCCl?@TIb-ka3*upyWyODc==(|V~AJ==pSb73=xSltkJPt_IS0f^H<0QQlrZ? zx(Rff4zWcEDwo|rNeyTb5wz0)UhM`#y9u3yxumt@-PkENO5v@V!9ybqqB;e3U;XK} z%L8$&IydkP%~+Z$nlj3~vmETbSz4sD*U6Vim$`4du!K-WP~o(gL=)cne~-HFLO=vx zBlSc52>8>fx^f!QIQ|2NLLM8yD@+&Mr3OvrS_frEWB-sXhtH{<`YnrL*kJtS4 zP!6cmxa@r5JM~%Vnj{`G+bvthJUTj(#GsyyM1q`G6P>=J4Ce3th9WTtKzBqnmv)C) zF0_qCvRe$k<>TEJk!0lVLkVQOV`^DT6dkLd=@_k!_(kvh4OQ9W*-w%vZQw2&Y$GlH z4q_f<2PPh!20=JriE5|H^jEcd36*FJx8tJL&umvIK*k~LrLL*u zAQQ>wuugv-VQm5d43(@LgWFed7NkE4wY)%f7Nwk!7jj{)b-IK`NgQ|1w_)wI5K`$(>>@t6T(iORMKDE``FTSp;_l9f?a|4D}*7g`GE>~cwBh`Hym6>NH zmrHAX+~RoNxv;gHJeOTnGcPE;p`)aV(1wvg`8~c43li)boVr7iwZ4Amc9+jHcdC=( zlapG2TtNBVnSCrCTS8^IL9E+8@Uo7Et(0Xl(af|0R&pKqEupm7Qo7wCVFBpd`*uv8 zVF!8dCbhRri_&7Au35f~pl2&wT_dV7jZzF_xn{CE-_hxO#*9IMEeSJT!{Yb~h5{#d zR?*1=oP;0;aquhIHFPWzfu~L+afJ|O)w%lz>t(IjT($-Bbi@E8j#AFIPcFL^_^E$| zvOkh09UnjLHmWW6;(RL}pq*eIUZlvYw+zX_WRlc~X93ViGtLi-rm63|YuKvwqQ;+) z$JMfq=lu}m7$jQ6L~`hDo`Bse_4eWSDY$H3pzk!DmNM@n###CSj&uW zZ$?8}o1S}-tJ6^U3(iVLdbSx+tmUw0vSq@uc}7mg?(3xa+~pUR1gtXLtu+)(V*qPm zn?sbg`PN}d(gLe-M4pTVtt_+S13L>{t;fV2dCit#JK4=05*&v;qoa9132JA4-@z)J z>@-`ssqHA-nQU&?=z&gDDdUMrLWFZ#hJ|ER-mFHt(e0US>H0eK`kfu~=3f^51c^wlgzu1>jvPfUvgkS39ZG3EfF=JflN0|p+73dN4>bPfjHo$1>`GR14ULfDNVf}Uh81Wv*K3Ga{%vMf*6Oqe2{&w{(Y7I1ss)=7RUx|t zIv?#F6Zi}HLK-~_mr6-utNA7&s0ufaMs9wjA+4;X6mCwEc*csd;JlGxzvayTX=1Pt zZebXx9hIoOMF9_CiJbsSonEhbd^{{eE3~3WK^?Z=BMji_i>p1QN;xK$fzB=G8cW68 zu2~UT3zK5R-t6H$Go2M3ceksZ*6!)L<@2zS&_zgdyeX^N*&V!nmr)q$RaVLjWYts5 zj;GuzbdrF6IOV<9anC1w)BmgF2|)A1z0hCHTh!Wb^S{2mWn^T$oG1$nP##8A;b}!N z!AKz^QP34~l1m#$$1t|{8`PLgv@>UoM4|?gGsAtN_9I!6!v(Sqd&ai_sMf%b>mNjq zpb)@p!Ig+L{%Zbp?K8qdrwJXhlD6`BeN|VXd?@Gy8=o*tN)9wXQDbT=76yS~Tjz-7 z$SNMg<5l^xdz$6(8fw@ugQO55+)_yZq$NmXm_(S=UiauCktMu`%CVgkFc7GGah=Bj z%~v|4R8yPwYN8Qmpj*o~B=VCU#c9g_d zs)khXyD5Yupz#vm_==S=;UbzW;OAR{slOTLjIZ5E1-ys{sU4MdbMlQ$-KBZ%r`S85 zzl+IQVQO?m(sj7iS+1)&g=9BiMr1A?VZ1!j)YLIHgd^jR!%`>Fqt~gP6>88IB`W~b z%ndCg7~xN@uE_OA7c7=Fb#w?V*?O^6%{Wj)iG-nD_GleIm~iVZTwa=D(U9-m1j=XB zNfQ{qq}#wG#aoR)c{o*p7C^Z|^~NV}>(j5@+q<^^C7fnErmOB^wJoZrG@P_93p@0wp^?mNA&X9WKI$Fv z&3cx+Pa}ydxXn8_QJ&1E3bJxm%dk-bxo^;A5a@4?bbS+q3<5^cr%~j=QDHct%8&)t zg6kn+xe&c0o6Gl1U#??Zbv=Ac3Pbk^yh?n9+pahJntW=5kl(3OI9#5$BA;8^Z{7r+ zm*z;+0)mDkX)g@^WBb$oAUN*V3Ap-|Zux&y31gAaP1F|ujO}OX+!BthohJV;d=T67 zzyJP+yZk@!B}+ih=gJp%*iVApy&;-+Ac(Xdvp*8I-61)0{j{*#-=5vVOi6UZ7gEDp zdj;;LIa`#d*_!JR`pY)Ytm9(yLbx&Y_YE^#ja3J`c2-3$8@CFq_gS@TSi^$_lz3pT z!K{Y$um1dCG6HI^cIW%2qf=_CNG>7%+5?}_7yLFt!h2rc-Hlwdc(@#9HQ4XVW@_|_ zq)n_v$yRhmes$Bz05MQW9U#G)2_jFD$+K3lPZZRN^E|j_S|oCk#h~n|$s(5+fagMA ztA_U$Y1t;wxGnIoN*9!2bbdRhy5@7z6&wHHE7u7}PaQ2LC5M0+A|yS2JNWn`_@ZHK zDTY+R1`=fatWctZQZN9rTNGhD4tdB;5hhs|G2lqb7(V zEo&qzO713afR^M+qLr)p?X81*@4QiPaI|!^iWzxj?X{8(S|z_Lm31}pyIaE}NJKLW zi^3bx4Cfa$p@v|jP>Yhl@kT%llS(~vOT&n^HrQb=Nd|BRK^jB=s+x2((;|(`Mz>GM zf_>LS1+a7KAmw~;$qT)ZCcCVYeOg2S6v~+#GYbJU$gS4)x|G%NnAWqFXKQtim%`A; zT-C|Ns?-HBC0G<1aJeAjNC;2{OkWWi^{`Wd3aB(H1^XQpY%~nNfMF~Ib{oY&xoVD* z>Y7EtT^XbPj08G4tcI6kTcfN{qA(eFi&1~ALPi#Fi~`9&jzXzGTr5T%fZ^p4K=V0! zHLzL^krG1Q(Yx5(<0T%?;0>sOR&(RqczB>a_zhyf(xMjfYcs(|6np)B#29VRZkor(UAWucGl{xJ*s)lSIolb%|7e5Q0iB+!KLnl zH>ya3sYMe!VAMbfb;9(Wu~$Q~N$6j)A{o4!l-dKtJt|pZzxPvH^gQEp<^NkrZT|>GC&cDtzdr5=36%B$j6r_rMg?7O7H6 zR4r<9El85yh2Zx~7lGi9lKH*Z`|F3X_37!k*emj>6fXfOcG7UM<(@EU0wn_>#sTHq zcdkPuN<7LyqNYW9e#46Tu zxI>}|aDuMi^D^w(D`YeCoD87d$rCrZ+i%Y|#xX~l3`B9p|3VMa-*B>sD8 zZpoyJX7>;#juz680X_ZowY~HG#8YO{z+Pw)<8v&%me}s4A{RtN1K)s@*j6@2VI51w zj7(EE!vL?!h%(e6;W;$FV2A1bWo`neb0;{EY_TdVjRORxwa`CWURJmQSA5#oS_PHT znhnzGWvauwgP=d1$iee_Nrg6h7aGY~yi_^`V`&}%areB9bAwXROfUh;!MS0=2FNk9 z)7zUlLhkh;s2WtYYQ!lDzYeZHzHQ%K`^L>aUGoL}Lh=A3fe>$(r%LHPK{bag`Q;(G zn?#;UYLzgET<|9b)2qakv}h-ZOl zTL8lF*Sz|bqt)T$o$fh1Odg?_u=<#JK8J*YRAG2dBCASE%N+T%TA|!QOG;%pyC%c8 z2r>F3pps355k_yMBC0e*GLT29rdg7;Ko;vnIr<*b3cSJQ?dB0WKN_$%hmn;v-zX;@;6Xc%Q$qw-IQ10Ih;5DiV1@yIFf zaTaC_vd#yGi04#PSXS$|_b)AAq<6aD)nwEH100*Lw&kjIOsds(mk+=>?DdYvU+#1` z9TRad=#?@w32n*$4H`5#8fIagp1yn+!XyqZp0g>8xdV|MdDP%C48uvvlibSxPD7tn z`dWY3e_C`%b?6jpI~G(H%+5$}Tp)ZXEWD{EEp~K^F!4-u(TvPKr&9f< z>XO0#(CjF`=S1JCHTDaChXL* zJ$?N^MNME=JW-he#`v;=YW;)taJWb-d6$|&NrtADVLl8QN}mAD9APxY{u3-nTn8PF z_wT#ZvL1b>KTOD4=v6aaV0Le?N!WH?~&`{dOrdw2xg}fTTVCkx6KSh6&N*6dFBNEn>?@aHxo@ zvkFc{V5*S{R>5caJlg#U@`U zfDC~&-mpCUL`m^09PW;D#N)uq2~UG5KhWyh?IK=E}v%m~VUMRn|7& ziclh*tH`W9SSxsdH`KTUJup1WL) z1LlM^PyUzrCq2G^pOLoBR&#`Tu~f~KG;yjGqRtn-xJoN^;byrU~Raaaww4 z5(6}?OKVIb`%B+4TR0&BuIQ)2DRXhxb&ir>22wry6iygn?X#i9x0EC)4r}aI<$3Dv zl8H`3xE;|IcOUjEC}68)dKvC$)@ZD0FKh`$?PxJEsKQ1`qfg~R5p$O;CPl!cMO^i#LwD$H= zKBWh#;6BmyXBN8k4=*(zEo2Fy;dw`*luegkY1JfSoQ=AsvN6c-%q1XW!RT=d?*&O^> zO-6R1&wYRL-}}gWN9D&?XP>v%=7sghgkg*%M$*zKQZlOa>6Q2U-MKcYn)|q49E6<&tvmBi+1m+GV-)#TKv>PNL{! z&{bQmvwty@e>a1*05~-B0^ekkVVTc<5rrjC1Spf|vL!gh8g}r2vN(#dn)dEk7+n>WC zNq3K5g6R`LiPJaR|EVqe;motuWs9r6nHC)mE?iox%^d5)@%-eRz7#Ekd^2s!%^iGp z;FG@ts7=P*;(eBt3^%3wQ-Y3!9XDf zD4GEkSJ={J?tae-XzqEz?)fOTV)r6$W{mrP$LfDgjb|B(;!z+26GzG?u+DCC(6UNazYLOe~82L#%p`>Yzc@w3Q>gf@I#+|sc@F%*T% z*@`%L;(t%}9rW%kRtjLGd6GZoG;JJn)hDSl6~GpJos`QXux`M`mY4Js4X;IvfnP2t z>c+$9;X?1bm&;R=!0hMxh0&NMRf-|5<)@T{g#GYEW#l1lWqkIY^{Z z0GoMYP*>LzwZZ-F^S}?W1VnT~JDZ5Y42z@$qfdz5h+!}f;_qSN1sHa}_X3T^AGfxH z^m|wLa*b%D_MAt`W|HvC%Y>9UHM2Ig*p0uNbjH|NIh>DCH5GIBLmUIbvn*LL+2-(1 zPWS)ihaguG?wz!{W(x&mM-uUtjg2L-&ee?L;}H2#C2E*7wizTWl_JQ@!0yTl8RiRx z)&BZgs%3lmA(tG1eL%IEH^S8N{kC_MIE6GiY+RmV&S{+56cc(Jd!s7(vz~=@GL(ozF$QeARlf*~)4NEmAsVFXjZc3|gO7`oj z-DJhwZ#EW{Ohcmp4^UW`WC4B2>RkWD5c`7(Y7FfkUMqE5;N3#GYylzqBVYykBxLz9 zdCu<(V#>!9BwcQ8LA+&5pNX@tW}wTsY+gXHW{qvUm7y%Rr9(p0FH?D0l&8)*DLN_X z=@{f^Kv67)B$;Gmg5+!yi4|QFrTloWfzBvNfu}qKzvDs*{utKp&LDk6g$>H38pFHn z{lSixhfR(mMO{?jz2K^kKpi)$S@zW?tN}3+UZz0fYsXX(PQO)oq8vHran79;ysc`5 zYy!TJQUVf=zPBv8Op0ZC^gFrMryp9ZU9B6H{q7}gTk0lIf;_3x~fLQG~mm>aIb)f3-KaAqVOIIOH=z~ae}$fRB-0Mw%z}FcmEsf?C9dk z%(zP(zP#~5R|pWHYh)l1hgeDEfx6A()a3SP4pyvdc2<2adlEy^eX?7LQJ{%a6tUrZ zDSm?ouOtl(_`I-4&AEA4iGdpA!b3REm-Pus3gt~RUx9ZjP_wOr3aHrJ&1j3$D^YNs zdr{ z1?)*E_OW~W{l0LJC87C?8)C?y8G6xg2H{W-Ov+(V+R9LKeUqb#i%^qBJ!VFp)v*kk zZd#U6I~}sz4N^zgO=NSg_1qAfN3AYcfv9}Jz!x(ru4i0Y6Pki8 zzqW&99*R)oWmQ-=EHRWIo*$7AMeQz0LXnDuJwD{khNpbOsB(1HgXF(&2+}5yU0T=t zHf=Liv9Ri_9bJvx?*~$?4RuxxKp)|@$g1qsndU3_Thn!Vyuk0f1-rneZ(`;Y(eVVW z_t=&~@UyvvYpycbzw2iLTt*2ECX_izTeI`0$H_VpjN~*=x>}gX47e=Jgz_d_W!!Gi z+iBier36TjDmk^YO$1gf5Bea3^`GH=BxGb%cD`AqGIU@_is9m)AVty%{ko-8b6J1HIOfPoiKtkSL6~%wB3F$2=V?uVbIR1jx7ot1iRgv?LtD`weL zS=MZH*-6}rA5~x~VRdTr=j1pvl1A|W>5x;v_PmWy8AeH@Y!TjcM)$t#CdG9-N!(?dNv%*i6|fu4r{f-z9Q+kZbT4s= z$}dFnc3icxmpwmJ%VO~0BG~gh#~D4y_{Wqt-sSHL>XO(_okl9WfEX%b8~d!~3YYQ# z=HqN7U^Z&++2z~^`jwwk5BYr%%^!W94i3*LP8dyKB&oTI+2bR)Q^O>WQW<*|ncHuw z;@i+Y$3rV*#H3(@^2(W%TJ^fFsbw)KYP{qqE9ya0vI-)2lwsEk9{CNpqC*(4-k~?y z{t3<+;>^D7@Yr%RDf=H_Oeth@{1eB8y2Hkz*fLonBTemoS)5YW^Cu>eBMk2%!HPw2 z5N@Ci?YhwKVsIzNH!+10EnCFchR>Tc(#D!@StPqC;rWMr0EQ^VhjB>vFqFNoBv#3>3K>$EY&=!y?#4+s?L!=CmiJyyRO1yUbA+A)donksMxt5bz_ z7hL+w=A$Q#J|GxdbD8J>acu+z_|sn#25_-T@5K|4+AF-Ul@a`1zp?6^9kO!^rSlhJbNU!g?fif!`?tamDuh;at=l~C zm&ce3CU#%;D!-tdT>p|5{XVGc8Wtvb7m@F()%QE^2;|lGG%3#bZy;i#|?ZaYRuQ32!Je@-s<_WxW0$oWct}`#_bn2$+qi?N`JA@{Fj3#NiqD z%96|dCsa7g%t~DyhA+IkuOvdRbA$M0is%bjvufnby(NPWTkDh~Zrkw=yRW5Cb}sL* z{zc4Y_#e#Get6-e{5|>h{yP?qoNIsgZ$)_q7M*V}NPS<20l1R@K&Z)DsQb^Hv z)23hRPbH$X%PU?#SR_QcdyublTO$LfeQ_p7;|6oL6JKn#vm9N#>wM0M&I@b>0oD0F zSeOdif;JsN`B<}Q4Dxpo)Rha~JM{)Do!=uXcfp|w zT~o&kztE!rS~Z|vd3kAnLxwjt)`mGT8E6^Jh zcR6<*AtUOzsa)@;>byYjz2>#{GObt$^K$@!kx>TWqo?^7r>&@^qzZ#}v;?p+tbWdJqy87QTT(XKWg^baV>l9w|s| zu7!uj|8Yb2OoD_*D!4O3sE$QR53J*4xnR!q@+5J*p_*p*i z5X<8^+P$)VPq}Oe2c!(4Of_$!8{UV(AL_P$yB@5KMSWE$EcAOz6eAB4FH_Ku>RR?l zu+bGhlBwgehc{RrdlRNIsB}8RSen%s5d3bR_1m)uOtromOR#*0xy&#U<}PlLU&nxC z*l$wv)mpA`-Nd16;6ybw%qB-F$w*i%LCq__zFiqagYfa8U79sv2S!XJWykO0YgFB* z{F+elt)(WmjxR_Nl_kY$CdeAHF)5kQ4l#tFQf#p5y_|p`k*%!hej!K4Um7iQjEXR-LD%M&+ zb3_YMZ8rFw>eQ)5!m{Shkq?>LI=66$L3B7UfRi6C+=oDyckB^`DyEXm$jv=6KcCoE z6Ix?CsB=cPG3>uBxCr)6QB|Dz{^Pp@4Nt|P<*iX>yIk!QrnjLo>kh)pyGoWy3-N6H zqWwgsJp?2XV}nFC`X1#ih7Y(`twP1BndAtvYTqg~N>$6Itr}!7W5o)diTho6A51>6 zx!E`~(HNks(z~nBdt&Tdkqak~sy=uH#OYPZXezPwt7htfzu@m7^b!Z17l!s>C4G_c zgQfgtt?_5|uTSjZu|=?8(xi=K(X#efi^cJ>|F05O zFE2@qey#o6b6GScM(KC^u3is6)Pc-hS|INuN=w%!HlklHb}3A94=?@qToyi(@dOU>4FkXV1m=FpS+J z__lTJaFyv#rNhA?VbLF);MlaCZ1b>#7993rXmUpM$m@;Y2ggu(il&o|ti4cPQ@M0> z>bGN(7c(WuY)WAtzch5{~m@fqY(F=tQU|rpE&mkKYxDZMRzD-Qh|90m1Bbj{fHzj*q6|t@bAy zgLf?DuNnRW9iA`Xw)5{|phV&L`oK|yUUS($qOoBvFTAp94f?fgx|*EXot{fTbzD~R z3!wNsMHB8%euBE*=L_2{@{OUb_^x3ck{{olSRALRz;$GN)eW9|;&*c56)Yfz=Ybhr^OCOEZe|;Szi-P zAi%u+g1#ah<@NvtzZM3gnS_pS!!P}P4SxZr&>51NLbd@l^KY3Yg742(#yJP9k)}5z z=UW?iAr)(l@oP`KoEq)WM$`bpsaD}Y#B9v(0$GtwyAmaR^Ez!=mh){f+<;c3FQ@5X z){LUUzF-aGqKRa>OjHgmh|@l9XR)dW)WM&)6x|&;;(p*^2DzB&l$_3K6{xG(e`Qwx zHO9)FQ8}w+#T6OTJ<9N$P08%FgD4Va@}-qYx{O$v@gW6~G_0Na0$Hvv6w?J0<`W3p z3;dN)%!YfMi-KdIEaK%|ncr87!cEz*+{7es(!DBq1%?@))u>1vj7qM22UQzu zaS2;WQyF_fg_*=m4Wa_6p)TLy}bU618MFr6(kHUP76My9f4?QB+C;6b8Gh{!O~wvE&yv* zQ7YFF3u7vw%4`qxV^~r_Gn;}D?TAPvZ^yDoT z$58rXPPv4IX^4A5hTm=ssmyuvWJ%k`1as7A3t20c`6k%mul&&l%g*~aEk`^lCn%$>y~mpimBXt4 zap8_Xyr>*kX4@Tw$?FrznQ;h04h4OQPil`b|!<=s89(BY+UAYO{m%#!@H<1NWH^1-qe0c zn??xxW0gx9TIU1&bE&9b`i%VhwDFkE3t}{q^|7DR9Y}#1T-q(p+0C!F3lD>D_s4!O z$DO@Qnm7+6XcyN?cBRsv0=lXtNS>|9dB1p{yfgf3=(>IT*5w%Z0vwwAO8Rz9wwgC* zTl;F$MC=_Zo!c5OEIit}7pRaz?{>abYv`Z&)QtA|ii#%gc$NRf9{iwdxPNT;Rtj9_ zEsmF|Tr2QE1Vn78G#nfBq!x~d`$eKgJ}UY@p*_58 zys^^Z3NntP2IycUoE!A-eSlsnGxQIo^!wsHXM9?1gtq29NMTmi&XC^nic7xTRL(6>9?c2Ts- zT;ky?2-nE&=apv1{mFcZQL#U_J~`2NY*%~04)$!7zkvQP)Lw?+zw*n|-RV>JsU>0| zvfbi%`ao9pOUTBiq5uDWp%=P$dX;y>^BrPM(9RrQtnKbg)p)SYHsd$2ggh^3x)-y zbV{u|$&gQo`P5|eF5od*=|8@puX2-8rY!ejGGJxubT+d;`pTGoy9gtG`2Xa^Fu6G* zk>)GDr)mAlwX9V!<#15_Mx}$VLre3Skck?!PsNs4!%-&K41-U6w0)8I(tZJC z#rEKVcKXwE_v8(|;|!ns_aCP5ayJh?JZUxmjo*BQ(dCW3>Z1zh^D#q1+vv=a1_GN4 z(N6XfpFHZFzp;U2WVdlKqrWCdeQJ~o^YQ;=N|YiO%w66F7#^^;!<%Xx?8z!0G3WZN zkL0fxxeD}#I6f~bapd+EF;q$=^U3LDR0jFgDtH=->H}%Xqifi0KIkK*IHg>LuuRwk zas_>p5tur)zL;bCE^eOC$?vS&Po%OZ>gznCME67Vaa`sOHorJafqGRh8n8a}iw9+& zPyLz8%*rSLYe`CTG;~aGy67aB6X8dXV9(=6!wMZ@_`H80cl*dpg8`O~lDtQxLatSe zz--<~^@+}WK%C)>9%Gxe;-L!t$abx_AbS*XSz%i|-|}UinkLRm@1&sgkt z!DAJU%Qf2h?7r91h(4oXKT!kPGj#JbG>aZEgLFR*uw2(i2jVGP@#Z`maIaEax#!fgAO4zMi+q z&WWCezR8YYPD$4p+&fvZ+K#mf{LXgpiC@*~gmjcH6ufRQ72Xetb|1fW2HFVax1XGSEX&&P@VIIe!)WT^k#d(#k?(9`*mQ%mfR`- z=*-7#G@!>P?dgiHF~80C^;5);WWVi=_U@Ht%$;A2C)iaHuZQ-}oHyUKYFF2gF+A-y z(1M?bG$~G;fFw!2;|3bgShe z5A~%l%cX180l106fy}w3cfv;?-_?!<(+A;PH^r5Ga7SF*g2{uFZ^pLq^e7C$SW@*&e=4#kU*)iXFyyvW#b>9Vw3Z385ygU^ zp@7|_5u)i!bjI(tdwcM&6psY*pT!0KCaq0&CRClyDkteEg-@1)R%|h&DrwNj5Cp0V zXGG<>4+addTRX`+w^4@?CIebIOQlUnajUn3e(ON0D_%x!j`?XC3bBx128wPIP=FR}Bdm-p z$cQ9rZt*)p=7s1}{xTr9D>2G`)cny#pc9Ra{xeFI!OW~7SI=Pc0d9jA7EBErqsT5G zwHVrkb#t3WKyYGO)0riHuqi7+QL0sM^DdPMz4+H}9IDU}7ITwwVAY-vvwOxOt@dIV}Po!;ILUt}lhzvEGk^Jd=f z_p0n;$EzH1!6yOE+xQh2vxI5UygEMs5u7Lj!iU^Rw4t!~#^{)Ph&zZh!G4kCW1Jk$ zsbOKF?+I>{5c<$gA4EndtIfh;Jy2+-3A3>`Y%78aXPxTndI2m8X=XVijHo0d!x8&mX!VeX6L)} zG2n%_vj+)aC7diu`ILYE(@eOSpCfda{wiST{mK9e+`|v&@t9E)>ng<4p&? zg@mTZ*K1*f+Va%fo)g{>S#Ab3Hqhc)8N^O?9Jjn(cPP9}!LMdt3|H!o4s?`T>7lf~ z;eq>H+5A9*o|PsFYkPg;v}u*A&}*g3N&lxsBcIl{>cGUy#=`&j6gj#Jb&YKkD|nW* zFF>FW5EhdjxEn1LcmgCMRfb$Q|7PXB|GoQyK!jFdnm1{7*(b|7R~LVvH#-!n^l5O2yGE=RR^g`ZU_U3HCiPUJpqam0}b4%Eg5OI7y7E(v(i z;0MGQJ|lH@jj{y*|KhpD#vkLRfLqrX7QNC&b@M61@vghlhw;w4?;>wEYC^6j_~E>_ zQ@W!4#r!oMMA89g45W{%KpbXcuHnmEy7%K@X-i;-5=YMN)-2j4+T%>rBAtS-7WAet zW+_WO9k-3q&V%OBEu1fI!)UZ(**fMCxkn`3V$kE}U3tr1{~Hylr)?4&txxLz{y zuEg&G=#Oy?pQpbEf7*MO_$U3Py>_k*|7ixCngbLn1mFSmwh73(gQa4H!a(Cfk3@lh zZt#McO~^Io(!LjY7UJaX03Z^o=?q)P$HG41x@`MhI=;ZMogrZOXE8X63>o^h=jsBG z2$^xjTrJ4y2G#L!`cDF8Hx3b>@QsH`UOrK6ijilG9#yh7@V()sJe$ZMo``3RsdSUG zQ{Kdr=AP^gEvm>9HLxF#eAP{FT_ZMs>LnUdD{8icS9)nR+yY<&93tv8Rc&Kod9$Nu zcyG|>Ej-b|=%q(glzH#BE1}`iie#um?kn^`24LUn#u;C+jiR`-1 z>Qedo>H61uWZ^N$+tuiEPkJB-0*n_^G|{e~JAC!2xbiII#N?f4_?@rmfswg^ui7AC zkC-RVSdMA0Tw5gcezf6(sB>{XZYJE^*X~iu_rt@tZ z(5d)0bx+qV>%SND+5ylN&x!C$&4=urkL7HxCyN|$6>{j6-c{pL6Qphz^to>%^3Oe* z;I3MU@WqX_{yRgzGZMwfwJKtYy z#xIV)>vJ9h%0`(P8AjK81;!miea5HHS4ZdXP# zzyBm0a~hap`T88#t!d~4aT5HCm#<^2QfaY~d|cLfOUqm0Lm+g|#r8IU5Pdbip?(w~S7xKodM zQ>Rcp^OV8YiP4yGy#kd()B8y(q3iuzQ}+NO!-tV*p|@vOp$69sZkNPuUfxUK+}?4d z%Omrfw|48b$|--Q~pDamZIQ#yt%)>wfh9$ru(Dv$waC7ta(L zfY$aY;0)#3&d2c&Bj;!v^9Hz_=*xQ)bXb%xk=U_!R`k}t`K5KntvtEPX=!2wdxf)? zQu&hZtcD5`3kQ^o;F4r;W%F1j*XH!+cJ0$f$K=j)Q9RGrL><~Ij>LHy#^g_5z!Wv=Sil?O1xLy zLQLo(*AF@_J#J+Uv-@es`T>+jtd7C*F$M^rrf8H)^${kofSYCH9$`8jQ-U}_2UtoR zHi`}YOs+4FbS>igK?*hge10?fIlKbR$ZqM~sT35-Xc@h_VctA~b4W-~NhoR(VyKUN zABtVp!(XI4HnTnzbq<(kl1f;A@}a88nsxM%h{f*}fTXL~fT(ZQNaP9@*FSZMir$T_TVu)^OPcSxz1V}!XE)Hp0eil@{a zl8MX7APGy!*uj>g*u=Vty#o%rfH0$&WHa#wNF(yzoP1Czo-XG3}LgFzL|gnl3~0iyAQM zYB7|ne!@D7Q*ucKyLF{vYPOgaDcNQzfiozQ$2WaMZpo<;#DnQ6RX-7iQ3An$EST~x zOe=9;D8r(u^vW0035XMYT6zC0R)tJPqHs%vP$`$)COfQ}N*TMg%YygoP){Y(?FJ~e z1?PR&Ye$y`-X<*#tj(pX^h7sV=Pk`a@CFck3qv!F3UW z&}0q&dm?yNz!l9J9Nil>yB-@`HFm!x3M39tzFec&fY#ZbOtxkytb?94Yf#I-wt1DqlyLx{Pbi~V#m0fG#)XF^5*#qy;So(ZV$YJNv{SJC#Ql6 z?z<=hXJN#DVMbQtpUlCmLK|_Z8o!XVd@r;Gd8qn7jMN zCoV4W^hA`S=Xdkiscmy>Ei(qm=?OvTq35{@ckhXp1)HufS0ht;Yg0n8Wrd9Y5hFl~ z==H^78mmIR*ohY%m$8VwJ>KW{^aXutj6EGw{-c>uE%Yn&24kn~(wYq4*lVBOp3`vm zsE1r)Fs{y#S;^s%xVlrc`?T%40*<1%@#9`;Nk)dU8_9_@AkrG2kBENqy0jD>ygPtV zTVQjw7oj*5?NST(DKiuqy$M$GSm6M9AF}JF8SK79H@AGoN!}4$Y;DWhdDWlq6_WzI zK8gPNH}(n_kFB<=e>|soGfGEMGCDr@4p42BeELFnP&0O=8rw6!7IP*z0_w)q327Tk z!F)bJVGz(Y<|qCH(n#BQBTR=FZf&gzd~dq!Q4*DZTSh6V*5BL;VMHnkcMkmZM6`B8 zLb~5o#S=BN?{zJ{O&T@*ZqZR3d`#RS2%X+Y?amb*?0?{hd%aMzbF5VU`zm7TIL@Bm zR5Q-3jD&4G$QtMWs74G~-`qw7-M(G%UqiVi4z&;>1Pt! z^D32jejl_u4E@d#pN{y-!8`W9{Z#F4VS>BwJwyY4ocg0WSpOV7-`Lu73EIpN-f>Gk zS`}i#_)VY3<(WR*W}D&`w|*JWL$sh(O%wX3%~E9uL>9JjGb#!` z#UW!VeN*}4J`;F>z8(H}_{%%KnQd)v@04G|hGN6xZWBtgY;{hu`7auNX<4Leah-}- zpeg$FgLaSZb;{Dns}jh_Pd9CAgvG%3jTXz9j7pbtrw8%6d1UrEM+mwvI(l}(RgQJ; zx@nN<0_BrNyQMlawDkBZ)v>E`)scE9+_u8rDXy*sFN*xF%(`-YUHuYyfgKO)Z* zPs#t101lVcX@A~*z4P;6&#wYgC8TIa|5PNrYUhW5;F0*tEhW)!(36j625keytr6U7 z1Bt629I9?PuWnTCkbS+>_PtJ5VLi{;YDj4g>m_k1JTFd^{C;*+BBjtyIG^1y9_v3X za%xb6U1Q69asIIQKJ-C^Boh&5*kFcH?9c?sm^H~>+6H{ zJX_uE#>@~8@#~BebP3I`Mb$~4xVU?;K4aC0;OQl*L#U0V3w$QHgUatLb7``!??1{h z38LQoQ=k9M+<(xdFZ5Epe_+@$w3fBNA7~%)=VbFD9kl?GYwW=wA8_)H4zw~1HVUrS zq-&`=+VpIyE#F|joq(lDEnU?70_Um#z7;U+6zT5>la4QrJg4&`zUr_Ryk?oKv13PJ z^SE@X0FeZk0PzS6PT*-Hu(kW@xP^`bW)U2BpAhVY_zB%j`0%{SXvr9aSl$b z^9$Q#d@bYV=aE@hL|7zq?@WH)iN`hhrKKtSG~tn$fI1g{e?(%qs27Q2a?%%@_hc{= zMkGj2%a-;Pk?@@;WjUTobB-JZV6EBz*2hzhr@VpbH%t7{U&?58h`jD^cb z?}2k+OfBkdr=HX4ySahcU+?TGmT&gDFv^tE&ToiTl*YE|LI`r|a;8WIFzX>sn0iWy z!$>+hLQ+zH`TV?yq*3GR+->3Q?MYcAhZhgtDG75-tmo)jG4Zv~c5zaidJo4X;>M9J zjUYizx0Bh3x3K8YuE&y}7Ta7SKoiXTO52h68!CCn8AYg!Uw)(GXhho3B>7~vXwX(v zV5!f`1|zCeDrhla%#Hk}Cr7k_ZDdqYmM-mUlSL9HR2DZPhTrt@&`ROqs}+aiupMQx zBHx%7XU(N!{+`+9nj7XjlcF&nVS4;h4NHwrSr`#R``)DRQ&NTxF~*-zKw$okfkclj zWZMVU_{V3CfC-u`Xkrz4cY>7|w{nF;D04NOx=oY~ONmDGr{2Y7{^D^N}mSYsSGaPZmVf_Q)4yg*X6zG1XcTrIz#J^ zn8c7q$=_TE^NqtjO~O1C`h@l~Jbp5w^)J1>ujXopuMs(^iuRUC)ZX~Z**Z$x%prtX z{-KA94XM_8#uS7URYko!C(hP|&cs36%RM?+8}^HnIn;_0it^uk^ytDs>yB*7bSn}Y zX&k7hWJUeg!}lWK6)8_oGSjy3Ja@eCT>nI+jvGw24!5LarE_CtEyQ!8I2t(_x1891 zZ_?Flv2&tQ!SvEEL^&)Ue=aY0L37%ek4S%d#?<*%gcs~@KLMxfpG*sYlYVqU%5lTf z*J>S(y*AuGz2?o(diZyWz@ehPdG~^tvzF6fw4z}>&QDf@tYjWDpw*kITb9!yg2RDxw71po8^X`9eLR8=VENbtYj^%8>TQ)zl zpUtSAXIS_k=rZh?NblakR6euH|Kx7aDKx6XU7%O4Rwdk? zra1Uc|I|J{G>P!Yb)hBT>>B`JQ3^Ib9ijt@>Eye~Pj$;O>)&mUyM= znQ#O4T|1I1a0U;EnoRm;0&q*qi4KnTAHvo^>5kp!gce1T0XuiUthOLLpBvClH@mLc zE~hO;`YjbvwjgV!N6Xmt&Zy0%DTU$DeKQL!7bE2WW23zN;kG$rf+WAXI{ftvbs7FA zzsr|8uRD^7cAG%o^$vkyxrOVK6UcO0{~e(3ou^&jJa#lNGdYC+cDw$=|6tykDn*!9 zadt04lRe{zlBpSTc~o9~eWc08QLHlzz2lrs>a{1@yzlx21>>s@;%Q*VH zsNy{sNAx=*&P1*##P_^I8i4i!U1*`FllqhOjw}V*imP6{fZA zE8FU;iBxS1TgkuDXxBUS()_c$gFqoP17v6xa7o%c(a~$GiTfM&6HzMR9C-ue5ga|k zA>*i=iU3~oHS`yvy!@U7g zC5!)wFy9y2{r5jxxFFBBP_NTQCItOViE$nA@x`LVw06vA`1L8tqC19&zZ{YvktsLkS$#mWU3CrRX z61ewtjcoY|Lby z?T(1d|JV{KY=8%!903w!bgSHd#Kg2aqz4L=-Gflmc zqULjuadZTQz)J&7c)VT-dpCEpC4tp`5Q*-g-8hwdOdO1DHReKMiGp;r(TWrNHoTPA zS*CNqK|SQMOi5(;KIjzrrg2&oy#beG8IkoPnLrf5W1FrO+an(><)`w{In3K>fw@?B zn_~B1m&g_aF=+})8vn*7N%+tXN7-}ok5&{3V5Qpn5OG^1(D^pL6H3bbytck!@1>9r z{G&5T`qh=dwOT#%_=FlmYGe|=IdUY&S2?Udp^H|S$i|pheHg|j(G*Q!YG-1+1^3EQ z0mOxLFKzhE<&{MQF?@!RxrkU7nM#LYD0xhzi7lDwyPTx+$j@JEOK@q`Z7|A@zo(_i zRWPU1r`uW;JCpbtj=;%+_IQhMa2uw|$a214P!*4>*392h%O(Eq!@Pj`43?+ZPagMa znO+{W8=0x?^XY|?kzvn}juQ3A{DvulVm$Y_SzAjmWPM!9`Z&IPDXyD12|-yIXy*~|B;C4j&E0XO%iY@<=777>_CqoAGmBPQ88AOn zoY&F`cQTLNE$7YT`jv3=h>McxlvXDAlf8yC#})}KLyLKOn$=0jj{M{ZhPPU234Gj5 zTz8lNLy!B@KenXnlB0e}HyAtoYsP;5a@HK0I%t`b3erV0qiSo#0zOw<=w< zCPOZIfQut)f6hu0LrKxf&@FDLeOSI1yBDeJh~?P?gnko2Sakf}ZoJaICi5`iGVNHfsi>@kngp=h6{HeIrp{o10ZGKD*u8TMqtr|BtYA;oSIQ;{d8hrD!mB>nIFo zq!`UN-_@FIW$@rm?9swtdweC5q@&Iy%h%FyKk%(%bWB?I&rl%o_dU8Q4rk9)uX9W9 z%L|RB2D6LzMe!>FLusWV-AItmuCnBC{EanvidTzf>(qxf&&(E=aCZ{p`6`Y^qu+m! z!{*(5mB2&M|2uL!=KQeOD(47TdEv1Mbe;wmZ~J6HzI(9Sr!%X7w_?9~O!-det29!j zOI%|sp)J#wcCk9YMB5nxlf%T*v8^UP?70sX=S(&@c_Px@m#mtWI>Wd$AT)H$*@aAy z9@RsThM5Ry%VXB_9WayY%RCJc$|Je1b_kpH{-q_W(c_qP)sE6HCz{cLb@AC^|aV(DkwoB!jDE?RL3(2@nG;-(_ur(G8~N8vy6_eB1BbAD0y~ehz;~l&Ea55Zzf?a4hwOsKkl9 z$%^=1$$|nMLf2#Bo0n#B2JF}c>*b1{F&GLmkri#3PFrry_$Kn{lw7VR>EQ*i(rj2G zalhoaSjRqOq7jrH3QR6Z$-khwqG@Cr1Q+R;@197O*t-8ep3X8TjxOrf3BjGg26uON zC%_C&fWQF3-Gc@V4uQcn1c%@R4}st?xVt+9cegw5z2A3#&_z)-P)+qYz0cljJ&Uza zMADI?9wTk_xDOb3LC=H(bT}~0?(zdc|ty)CS1)5 z@XJut+~|a&Ij#M$peyYhv^*IR3+-b1*db~B{n|O;Q)J1UZj<+m;57s_dPtjSi2aY? zyJ6eLAu3@%B@Bm6&B$b7V%hm>ogzF0!@inST z8&#@2!=Ur;Clmf@MF7`NmOL9j!YpKDOYty@SOg(qK&0 zp(6U;oEBTV#LL@T6;rxAPI~-wUS_CL6znHb)?=gQM`xhH3s+(TRF1Qha^iZ&Dl%qv z4_U>xg=Bi1T~hw}8kFbdCx1uqr@l8Y~sD4h(HEh?qw zA)ASuX%HP6Vj$X0D@`pg5k>~!-l)^L`>3(ARB8J-#rS6svn*uUSUS!WNf+HCxB@qo z`mH6<_2Xjp*2OMNU9cK)_e4*uP@|I(Dl1Y{=*V>#JSX=d}WIgQuId=l3sdt#uE-ynS8z^}_plJj8W*G1T7m>uGCk z=Pys(9diIsw?zBoZ1B+NXkMtJEiHCjYFch%6!8*P$d!1xEOkqD_p$wsw|#zo@Ab*x zspaFU)&7O^B~IWz@%_iCmif!D*B|ZIX@Nh+PHWyNN`9pex@VaERtc9*PyRGNS#1mA z3EvUBEqVV%^fz{$Bl9jS<;y_>PVs%41kfZAqy3WWzQI@}?sW$~xSwkqToOv7G`^Fg z#yysEzw)SSsP38!rg^D$y;)Je*sL>H*lHVV_qjj4ROWi6dwDJru_8TH3$LHgep&Lw zrE>VP&x>Qd=qo+HyH=6l-{O7sH_eGh#5MJoVOfp;p3Ftqra8ttqdt-QD^wJ>v^!|p zD`orDh1BK{u~qsDT|0^*(CHlZ`VejrRynv7*jz>Tb1&77z0uaaq;MrNj_@a%a#ef^EqR^K@18}rSLI=VN9ADjH2 z#f{qu>#Wykcr%vGqm}=C2_O4GZl-)D_`13C`rY`U=UPzEG zY9$^F>sSo8`odu1S~@)VUw3TbVL=RSQq{#jEN8-^7GZ9}JC=IuVf%?3KCgvc4p0;IteZESBeMRK`xgzd^ zqSwVjG4@&1map(%^RL-|JEF@p*k}$tE^6ot5V3O^=woR-F(Eee$m(AsI&_c~NkToj zVGT0hV>2PH%oRg_Y7m`{YQ>E=CLe#_x4zyHy&ed)b-li1{yJYWej$CG3%nCGeu*>Q z@`BS^maLt)d1^Y~gQeV`(rCP~%CLb%559UL@dsbOY+pOEoPYqKmWXKYPEsU-_hSrc z=jXhVlO8+*8amL(P5}gBs2Xd!MM}1su%KiIPL^m#-0L`Az~-gm{X`nK%Vt0K zm_%KKk=UcH?Fcmm%7%sXB5e>6C!~<3gqi<_l3vFO!~86?2M<7pw3yUCOCI1XW)OF3 zy%hCKfZP(PM6FiBS*2mHK%F^Kcex(0i2P7GCwpS_w=?Be+sJm&Qu6MsQW=jZtZW?r zaLH+A)AQSAy1cz1i|v5*{*hgAWedeIMlFTNqHlD)hsD4iMNG}=6)3-S#$1=EtfF#O zpA99sD_sL4IRW*U#tel*8Nd-mo>ogYk7{DcVH%Lv)zw8>1m!i=lgoUwB@YxrV1h-W zTFPnz^0yEvV3G5MbKSi*LAA*eVAT4r!XS22N)%ywf?Ce|iio5}bctX30MiApr|Z9(!e%4Ayy;0#NQfo&wYt24#P&NuA3 zIt{zz5z&7o6Q7=1chs+3mL1kQ4L1jf1C%`$j*4sS`8{Ouw zRuscrA11j;;cq3cmvf|cw1c;HH9fVfBQN*{3!)D+^siJTBql$`{LV!b{xUGG`Gk~% z^LEqpa8O9*1qOqb;oB!U{CK{7nwm2pd7kDIzuyLCEnwExWu43rvbxGQ zczm6G!SnPCzD#hYbiBg4s_`hqC#QP2t*dm#YHjPeazHMw%c^Q1WYskHU7DXkv$fE| zSLHuv?n14r9{jebwx);S|8913n9L`r_*MnKB3Z9VhXDf8^YW_O`l@Ikra@ldc1W4M z5D+q8z(aNz=iC(Ki~&8I@cEJD>$4z&no)&~te$0|E;-h1GwKXIXst7R3JDyMdVXN# zT>~*b0`nGoa+ryTiQ#gNqxl;6-7Vzo6bBp>3kN(2XJutk=~ZbkR|mcZ!1GL__P#vT z1>TI^wFKUtUf{fRO07eMR_{7$;jU)`Td6YwE-cw-lyS9>AEoHJky2B4L0XRsIJxCX zsr0hCtQB`(de()Pd~4nPrl?-}G%AzWQP`vX$^AVs-pK_fM=(-*@_bs?#a_Cg1h$JkoI;fgq^d)ln8sPkf5KT4k>Jlvij5@3%1wlQS zn>0pN;2S0+fj(T`c2gejJsMc1f*%|N3-?GYdo~*Dgv+)6uxHb`AbD3&CwUC~-eGoc zSZ}aM5FyTRg%8y-Vy<5SKyeh_HaP=>pqCfUM$GFv%j&qc6SZbBNWTw4(ljWTl{QKS z1(@^|G-^ZMf;%G8-!l7REJrnq!C`B_TlAa-W_mg z=ev!0$AUNIescE@n@2x%4%kB6 z4gVUZ-c+g8{=o#1Yq6!2d@M(uqua9Xx8R$tg?YG81Th`mdrk6j7WO1?lH{Gk6W?-m zKXv1OgLm2?wUQu-+)t$+D&>2k=woQm2}02lc;T2irTyuowOHJVeWcXb5V*YNfuuG& zn(4osHMFSMNDq}Y;W-ww>we4MeS*z!UE*<}s9VVXp*JiM1sHCbe{w8TU@YX+BYwx|7{Hb<; zLb>S+Xlf3DqDgIRKc%5yJ%6Ohg4F=U@9i0x*{U*}$xpidR zOHKbJCa=a7kuBbFcHb4+feLnB`XlX^J zk#{J|tIDHdO0{zHV?nw{RI9*$`itSH7#J~r#)+JeOe$c}tKDcDOHKhAU zRCsjNU-8Hb2ndyd_Cggy>>f$PY9ovu8~H@*LslZxT%LNId`8$W)7ExYhNgz+q=ka@ zG2#&G7)gA7JD9uly}dbF9L>u*cE@(t$oV_+)Y_slBQVrULB1y0bMmY>FY*`aC=w<# z*>&-UPi2&o*B~vlHmzHo+{ED&EtY(xuh9(JaOr$Dd#y98LuG*DTu=<0e@^WjAN#la zS9$+0qoCdGB!#+VTfSx6zgN+o34|A6OhWw>a#@sM}#}Hg-$I;YVO*%OQpP z@e0`3T6VvS&?yaN{`m=&qVl+&sPXgJ9sIvXR@`#M`J408#)W$%KqMT8()4WN_@0xD zcy;r{XBg!oDbr?Cov`gTsQi|SYn&81>oKcCY@qnNc5hr0JC_xH%I@jc~FL|rW zrVY(YcCQQcBVNKG-#bfqcXWiOJsKG1RmE9L;5pgu#U>Y$c=4xhnKN*Cf-P|N%rvN+ zNx0UU%=`uLq1-5jat&Pm$#myI^+boByW^x-;pngZ+#iFgx{2nj)}=<5vvnHJm=lW@ zvIHuQTF*;f97ZY}!;ufbm9A6{&Xn6Rx0XW@wYEEioG&lJTaS&kj?`8!BezZG9mU+D z7HM!)$!|8?eW!3wXUid?xWNUlsV{MX#f)vlkz46EH=dryi|+#irR3z~+`YU4L*gFc zniPC|{N?t*oI2|2o;Mz#dYW!m~ z2PPC}Y9m#z%xv?R04FW!XZowglMXvfidqftm6$BYM6t4JM&$ew5k!e8(s_puX@% zG`r){h&O<7q+FX?Kn+GSms(Wxi-PGigbA;zXYApwO)-%^nrc%OoFN5{EaDMml8doPxN0g1J+~^r6=l# zEpc;7h8@szEsbU(b4-cOf%cF<8JQ02A>k(EtH$?K!_@3iL7$eTbBUnO{w@;abBhx| zxUmxxya5bhV_qVN_JAr193!QnjmVy1>JE|)N2j(+hW)d8FHo`&6ru_ zQgb-s6){gsJ2+i~guk)hRN}&nJdZN*v<;5Ss(M#dpG4QmOxE-uGatA_Z~nsJT(;+|}hEQ>^@JxkOiQkOx01vKLOpDi0=PeVxEL=f|Fo6V^e?+!5#YI3(sbruJ_ zlb2t7U#ZILc8Wd6G*?saMG>Z4{kMN|?Yw0FkaLz)G@FsfSIrW*SPmW%vfsbS^EQ`ZXJ0=3RcD zm#2+K+x~sMX&<72cRhomVk|MlmPTBvsKZamnjjoXU!?B@cM41J_jEDPA!yrvYng%* z1e?2;H%ZCRnleZ)=NQwCE44rXOd8W4eKRy=ja`F-#>V{Ui1}qa3|HO=C^ZuYkF) zOZsWH&s9QRi-}#;ZReVA8B(F4#iOZbZdnR$tc)C&);4pz5hPv{?_2ps%a84(fTx?9 z-XhU!_T~WPA_CUwiZmI8I!I&c@VF?<{J|i5b5$$&Ob&d>H>}E44M1qJ_>2b!JMaFq z)<-X^NCwnSLKYPo(l4~aQd{5aavGUGoB-Hh)D{_k%73S`*#bV|>3mFY=Nk!@>d^R@ z0QWlpQcE~LZ7st+NNjBGj7BFn^cZjHVZB4l`3Dztmz1w+s(xI!h;OS7C#R;m8y%Ny zY;8L)+gy7N;5ZVIz!&i}F5}(*ny?m>{wR@^RI;A-Tp98~=%pNMTdOmde|6HLdSEupV~Hop|bVRj7q|;?f6Y_;WR~{5h%?xv!MlcZczkj7EUaJhC)G#E>Gl zOqrc?#MR3wq4y8(r`0+$-XaankrVTu-xA-Z6v6L!SN|n^F&LS(B9)MY#-&iskfV;r zHDRep;J-!EUfuJ#5}v8B^;l8>u3JvmH~nH7LajNjMV%&zqm#;{4}q8qa0@%7EWl~q zQVkt;xf*|H9qlrFz0#PG;6YGuCHHUYk8>rQPPiD*GA_RJ6Eee0h^2^od~D}=+3=^f zfhQknRS8Kh8g~Lv_26=)?=TXsJ@H(i`==~v>v0~XsXI!t>8_F7JjS-TGuQrGWCN6r zJh_N}2M1=h`&-_5FDAM19NfzSp+w`?8_r(?3R35=HO%|r14gnkjl$4~i=iSIF&s6_hyI5y|H;ENpb!thHffpMXlfceF07U0 zN^`0VsiibPX`UBc9vQ89+vt31>5`k`KqT89IlAp4K|D@xDy_{?aNw~lzoi@@{B0Z< zN;iRAwgW8eIG6ZQ5trnOS0x9GxXV`NOzL!7p6)iMjA{FD-mtW)aX|h zHIP7#jvo@)t_${4h#x`at?FPte7mM`PKT)!;(io~6ho0gGx3$2hh?ul)OR5V#GyzRY|c!x0U| zeOmnWOxogg`qJ^lcbaXz7t6zG+}82yY4Dfddfll3D)E!xr@M^Tn2i*nbkSE)XElj7 z4Y=UeJF8{E^JwbnI>+N~Fz_|=ua|x5eIK!1eiY+(8~EjAxXYI0=VeFS#atk4XVLkI z(z(??dY5iK2g}{vof{saO5Apa^ziU-<{$XsX|99J`ETdP_6MCR?2hguN<`p-P;?5je9U7tO{zW(#wV{@0R-piI({7GI zX9Poeku6Lx7rK&zi@d>HsAR+90~dDjjjw>c?6a$6Q+45~4fJh?TS_=F^qRrkyweBY zp;|o(BBuTlR+bEAUsy~$7_15iw6JLH1hQR~)n{8b6ZfPj&1I9DA>Pi00hwP;syl%Zh7a(VZnm zQDmb3#TP1*2~>^TgI&2>3O5C&s|Q}7N?qI+-!B)(xgGTb-${HatlCJ&Wsw2ToiMdF zRvm8q;ne!7W)`Z8S}=u1KGuEhPZnUyFRDfja(S!%HRLT}K@w`EESw&FZB+hG5M4Wl zpY))~nk-t0YF#V9+jE<(OA!$1P_zMe!I zUXOy=56pnJl$(gM#~>5Pe<5;-ld1f`o07pO9-I%0079s z4}^hzy-GNA{(ub)q3?Ep53#akuJQs=CA~Z{0DJ}zgqlx@BYs~*Ss6d`hEHp;;!P#Z zH$v0GNHbL+OWAcO6x`#(P)JJOgC3793tk!}dzK|#JW}dwG{5B5{_^46NonNEQ7da` z!#~$hia#c44UPN|+Zb@PuM&9%C0pa!wi3!d{9EK!QS7S2by2~~4p(vuQtB0EC4uu0 z6dFX{sc^n4K%bA(2gvsg$YtfJFJe$U_N1!|IUKn87CT#5<@SQNNce%Mvq_bILLT1L zpXj-jsz9>d($B3dPwHmM$@`^SM2WbzVH3&t!f)#62)$kPja$2eu9-MF#R|t}o*Mr5 z!6d&|-RkWOdHchus%eynAfWkx(VWMJ#9PfcS22BG)H;$_RF;I(`D^k%(6JgnSij4t zKe@^GO5GN18@ZE_bs1yRrIN-g@29%XT+g5YTrAdcTTB#-tv=l9R)w({;qDb zB3Q%Yhrd2I?8K+by#(KmL<3?Bjd6a)%kBB8tSVa4v(ib%!z@=kw8*|IKCMG7e@@xI zi{%%lclWRo5tr;LmUNB8@B2Nmt*?9&3IpWK#~Tv%mI%W< z=t;(UlK?E8=j4W5403M^2t`4-gUH9Cu!kV!HqoZq`?RpGj%@BS{;N5n zRtPq}Zkld7Jlx5{Hf7e25~uT^i}seuiO=8p8*?Q4K%6`%%9Ff)3ztkTRQapAQn+hnpyg;Tndd? zX^@NsK@b?#L)HNkf@*LE*2?j~0+SewPdYsO5}RyrRI_ylC$l+fz;MY>0dftL_zLI- z(e?yGHrmGyGO8@v`D6{^2B?623+bQ!k(rA`0#1w}3`-u1T>MUENjEfwbmF8vl3%xk zQ|p~^Uu~%vL#1sk-zNSa@FT~1W(p9T)*L81g!QDV9Z{& zR`$vOs6#(&1WK z;zd`Fh2eX6b(dE~i=>|49WSgBSrE#tHJvzpMn=ldgWy6@UNtkQXM8Jp;|Z391+oXZ2u- z!v7KLL4MUXeX=YyG!1CzQpoN1xZ>q*PO8eQWbP}n&y5SJ zl&in3$Ina$YxL5i=Y5!Lb&dVNMI>{88?5%u;DbQDEAy_=&FSi3LWp?`wpYA|Y+>0} zI-)H*Mul0(HyL03!b2J)CH@k4EFW&4Ql(2#&!u=_eO?LVtE(R`3Dua}+YqpsHbIEm zSz*YYFltCcxhAX8oR2RXl4*&)ad~ZxW-&a?6sy6v?1~uG{>-|4zF?IPCt6!`1b=vJ;W*9#2aLve8)(aayi6yM|H)M1iiPD13vT)a4Cl~DSw&-@QBvxltC#obfW?TOh7LnLVG% zTDFB}5xDY8)b~5!opAOkypLo+y>;*2SYOc4RY;SH4CNUF|3G8eMS{0Ak1MfbQEUD> zm9eY&_wtz3GpwnWg$w9iaLv>pz#ud6WzGWfHMx`|2MJh)Smw~q&Y@kc3nNHAmMVs#2YQWa*P5jP<|BPeFgOdf?}|AezIJmG_D>% zO1H4gs=Q0R9?P^B=!e)vXp`r{n`lTQmzS>ibC#?sr}x~AzRR?gvKoS=SFTVIfku}1 zlYq<)R-_g#Dmf#s1w!;-K&w~Ir6?QJfOfDnPVtG$uJr@&N7W$BaAxsBSH~<3WYM4m zk&x(P8Z|iHw%AtWUpOf_88(}=60WQP235g%yaUO<&7O^wBTBMd0lIM+G^1apv`{5_ zMo*0d`Y8HASKQbRLIf1DMa4wwM8rJ)6S@LA6>x=JUmYD)p}hTj0>sekjb<;lTr)O?;wmzz?e$Q?GEBi@q6?IVAej4ntsZjustDxo$MhpQUhbaWL=1j&L z^fe56%_Rx9^_&AjV!ymqr=ZVm$~-u2TyW(qFNtzbixZ^8o&e-< z3_%Q?6V8qz$FxR}Znr26cp=VoxHxmZHI+Ey%V7WGK(ux_;4PV*(>b;~u#JAV zARZt%_B;?}wSGVchxe@!YIA~OLc!1unQ*)7|YcJL9Z7;KbcP5USIrA)^e900~HnlXtMtZTF zoDs!K$cR!D1*X)JPZb)jsFxlFZk-C|g=CjHfX5-`+bzgZ19{K75Fcb)D)OK6OLBR? zqbVY8YW)3h3~pn1>fJ)~DCp|1+}H2385WB=Tr0bPrnsfOG06yXgi5x!vRlI6gMX2b zotRpb#Er^Q3Qa_I;HH`7L({7ZBg?}JkzG}BKO!W8k&J%H0L_ANGxVf9W4_oN(;#-a z;#OVn=rSkQNWQSb_dZ+-R&8AT8M;ksg+5XWvP2EMu-PsJbX9A`AUQa9{dXYQF@qC*NXei8j!1zjFo&s_X;+RePP5-~8tq-Q?0LTqw^Xom1&s^0 zDTNrOVC4%eR@oDn8ZyNm^wTSRJgiV1bA4`w>#@&S-EM#C8AI~w+eQyA&@cJwmNT1r z8!-0%c<&ljwFd^7SY~A#VmN+^HK~-p{^`W+?vl1Qd0baD%3Dr(~Gh%jEYiN z;3^)n#fYky_g>bF7J(3#{%t~3RFMLxqrt)>A2W&=-WCZCfj z9(fW6t9UY~xtLXJ96&>8)t2X2+TaM!~u+$fBPOefRS7|%f7 z5|cGK2307~R4BT6VR6OLeIM6Q>q^ccWN}6AJLM-qn)Sk5#4YA^_NEGY)jrInjz#MSAM?2Nt@Y ziQ|yUL@tto`TerVR!3%W7J19Gl*s#fZBQyHV$Mr+&4`F~^*?=LiY1&(xNB2}d7T&O zShdKm7pAi5im-uVXtZWOGirq^$pC@D-}64rP1}E?*62xSz>J~|(?xJBydKaE)?;BU zQ&Uo*6^MEVMo-3-2W!R=&M4JsVKwmxbhmtT=GH+2i9XmYwZ(17F#*M1FvZlxhZ>(1 z|B=8)=Vz#`-E{T0Sn({4T2+dMe|(}pH>ep{6C1TkY(p+AzLCTfbnx7Xf{;t6-V&m#m}%62nN$g2 zp)yM3?@{xZ3CMjOAtYpn*6xMGQsyoaA-L$~(~L4p)XOy2AZI`8@*+h$s5a@G4ew&S zCVH1>!=xyQ@#Mq`*j|xx4uyp<9aum&j+c(Ok4{fI2NW;DYxsK5g`PI{V{7+bc^JOw znSV)vr znXHki?E(y?Y7;4yx*9?ENaE4Hr^_q$u+q-*EPldt*|vHsZ)+ewxtO>HFI%ns#MioA z$)B#&Z3vtv6EIj7s_W! zaDHm;5j)M^c(^{ia)-xD>|y)(in@}^!3|}@!}K5F@vZ)jNNXPZHiste7Re!xuzj0T zrJ23ix+TbIq^f1@^>0Fi5=LI0eN9o=s$mS4cmy$LhiC!SN zELSy(z9JFvt?0J|NbwCHLIUzJsiVf=Du$rN2V4doS3p6%0<}w#Qj`U;qHr!vRI)^S z)HU$8P!a4OZsj}b-1c^8x8hB$|0C`~g-!`sl0$5xP0XsaAUY=uP_M^EUk`p~gl|}M zrX5@kAkQNqJ=wy~@yq6Vn&10!vpt3BxZizQ#Bc}VW`qHubckB^@&s}~n&5O3kC2oM zxKY1#?AhRVMze2R(SnFdrOL-y(~4gqMsoh{ci2C*7&%kMWt0H&@OGV6ZsEJC7X7Es z6o-~4O_bSb44ETI0~Y6gRAXLeenIZXH7pbbs=>I8s0k%NOMwAJedRrL=9#)Fy#8{gJ^0!l{zZ;0)f@lkSL(5mbF4m1A zI-%3<@Wj@M7c&0WZiHNUQNaEnzs2kg8njKm_!hrwQAHqjt?Ype?7j5MvQA$N;phL> z8vpf9|8E2JzssrU_iVUeKwnDEOL^}nN2C_(^>0C&g0GRXpT;LnrY24{glia<1b`{5 zs|`9pG1;GzoY}gond%Zj83H}iwqkotsKYXw5%#FJbrp$7u`Exc5#H-^^GxD zg&Z)$I@?CCD{m?bVCbo#iDYnfz(9rpLwROTA!PMD%$QMvJ;*WcE*}sy=^`5#WAV+3 zlB^y6=H1i z+~-|T317|r1VQKcCtp+3JlZp2pt72t`}b27uuV6qv~;N;|yM)=4hhLUMR3w;xIml8y&7e?8PoshuccRzSiN)%9G<#>kGw z!<{>T{{a24)mafwSh(vwFbaezs+q25Kx_Q<@GBG2q#o}oFeIMyk1U&!L@R*-ga?KT zr;c&g-+mNDmkVy)o!_V7$yxP6#)Yw#QiQmh9yZd%Qi^q~J{LGFEP}ke@cQ`Z7XedI z;F;A~E+q59Yek{&J@O{B7nJUV{-U*%`V>jg_~@wURqDFJB@lVTQv5mm{N{XZ>=MLp zK4z%NjI)B~G8jQbvz*8*u7+t2oFQqh=YCOpAVcGIrFXQl8Ikhu)vtD;sVp}SJ}tX9?=kjx9o@I3JTn=u_m24o zC-ud-iDxMo*hM}7ltF9`aI~TS4bmrJQKht;>e_rX${e8F;81En7Ja`MW>6*V05%=?7Z10LQ;V0g_( zQrmsc5ISdyB|>+6^xm*;?-*dpSud^UppjL1za(nqeiy-4eOm80H@*7u>0z7Fvk~=x zuRNK`csC9a1-R3%oUj{CUpo4F z<+Yk3FPpsZsFn`*9rM~X%qT`)bPAiCw`8+}r% z%~atlaw^3Ko8w%-TS$J&Pe?g$9rw`iq&V9S)&VG35Sumhet^O1Wb|zP~?wK z!P)AY9c>(#HsqYWv1nlZ$NvOShkqMs@6p`Sve4)j)7ZudsMPyzuzs_1Xei~IaKAKl z)o?owv5~Xy_9^X|zT)>fT`tnDGIMdjWhtDK+3+1-$u^&}kz&F=T`w(Y5%x48TZ(A0 zarOJ51Q+nknQH@!?T!#D`9&w_O@q-fMMFzcakXXPGgb&k;U^rlLp%^}!68p5I-YGP zFRFQz6IW!ssYUBXSdWK4Zw9%RFuZ0}8JCHP1XxtKs2((A+x+N}2AT(>8h1$tqNq!X zj4J2&XEWu%#kCqJZE4hnYOO0+S|K6wv>YO_jk@fmSaH(`bo{WImt8Gkd6}57DChu?SE6gpbHl z3An6wWCE-^qB}ma9KqvFh=Vjr)Jg=JiEzsk2Nm|)8WK$1N+&Iyb_efbGUx<)rFn8} zq>gMMK@?uebT(*x-m}D{AtpnoCv%+7vxRF6l$!*a9CP9q9eC} z;7)x_D18ujd{wiPF_*LdP}EZ0*&7d0E)wLCjpPT;-(X>Jc_(F~_ra%0mKe6s{CJ%~ zgUQwTk&tRSsfz1FtS>3GrrlR(%Yx@C(!_GUH#OF;g2;XbKa>+gK?zynHFZm?mn;`qAr1?# zaD)x@EzO}L?Xv`UlYWHGw#eLt=`n}Y+BcedidPs+%Khif|8jv`7 zV7fn7z&B#`Ba6b{cX!}5WW(IF8oG#uR=4=Jn759Kl4bQ&FD~2t+rN2V2CV1#menF& z@Alqs)Zao~*E8f|2(hw3N}pTZPs#W0t#503-TKAb2E7Qe$NT;R$Q$3Bk4a%x z*54j)k7M*L%xolj)dYvRUu_6UF~O&u)@YJpv6V+(ZU}Nj{nEF_C@dT*;$r)VAL--} zBpk%N;|s=ewtMml$p4`PUjF{ARO6N$GDc;sn5N$OyuP?5vbev{nAy!G*&D@_ZKD1$ zd=uq{Cg_s_O#N)SSncAfrZtABL#`l&R`bC8=Iwh(bEDf`l6q|m)8oA43;p_5Q^--k z0kEafW8yl`-}Ao#)PLo)Fx*eq7i1f6f;E($%)O>fWj1*9x7;nn#{=?aB%ech6!tNCAQm496M!4OS81i= zx(H|Mv;Wazd)%`kHs4=IvW5l##s|0MKZ2bjLqh2}`njzQA&zuQECfrDw7sxJWQ;nD z3a%>Lhy?$BWx{S*8*v<;W(fQtAX9{SxoxjIc{-347NmEAXcM(!N^Mn4#`9#tNC{co z^LYkyY2^SwcV^t0Xl$A)rk;lMY5+i2F5gZ`E1FtcxCRCSxhax~SDx#{WcCQNcFv$1 z%feEcVDN?@KGMHjY}c2Xy`mfu&xGH+cWoE>E3h#`?~ z=2QX|60$NhdK`2+aWhvsP*m`UQZsZ@^!2(PyXxf|(#GGsq}eu=RX@vbt=h-$*UFR> zhY2Mlo@OHYHFMd=Sx7N)AkG&!UD0@wWeRFF(k&jbRY0K}N_xs{=KhBizRRBUVGWD6 zn=MdLwp*^VoAzgqfakg6tJBq{&g))5NVK`%L)hEdUoY70k2_O-JIkyO6JK6m_>D!p za-e-e_caq>IXd;$9fm8~tX{#Rb9it;Lk3Y5O&K zFDlNufZM~TS*ge0e#bYg(Q6hHjNk8)!jQqsUoMB9M%!Qh`}?l~?dMCUE=6bjW3Apl z3dDT+CE!c{n@!5#^pfAb@e`5rs-8vL%N+t1!9WA$dT;yPmUwG%+Dn{xe0sHLcgos* z+S6|P9sF0l-pREIri|ZCM<0#&61+@H40uh5`TS6S4jVh~`Ra`EwE;!E=}Gi;?)Ap^ zM@BTWz)ZgClXM5uoM3+}o%*E%PiKGVbszD4tOi_#mr&Vqca@;F$a@iY-YZF;m$&|uY`p_;WX~5ry1~X9+qSc@ZD(U=qm47MZQIUfW81cE8xtFEzQ6x_ zuj*C3shV5EJ9WEzx=)|;0lKeO_w07FlqiyFfQ(hNOvU%;#&=}5E=kJ7+9EtCP#Jug z7Ervu;y1WZvg)8$WaXU^+>kRLb4*&iaZhR&L}6QIU@G%o@*B6W>|9=k7?oOs zNLz^=Q-Y3)fpM8S_fRhq*{V1)We`{+*^z=Y6;yZi#xAUlu<$g*k+Daj;qv%hF^MR&ktH z81@en`IpFEMqdy(T7UwqTd6MoA!#xM%ReEMUnX)eq?lovLKe)vapqK ztD1?CPkQ4btG1R1SEd6F9^O&9ITGMDc>iLPckJZkn@;m1b6s)fY~^N@&ACxack)z0 ztQtx05N(?}nMsc_9KrVi;cPC%(onEQ>LN_Z1vL>pnm-OA{OV$3F~GPXVK@-G`C1Qa zI-W~qryczKu|P=Nf*?PE`C+x0OeqRwAY9l|G>bZbS%Spgi|Et?dstjHG$R}~SfseO zBDzPFh61~M2`u{DvjvBUiov+Gs$Dv-T&ysu>33VxK_|-)=6aDFL#{QHAI0G%ccaX6 zsCSHXxKkulpq-#eJyVUh-!GE&k5yo#9%ZAZ${1~ujb`Pgc@&G(>ECm~x^l{{lA4cJ z@DweB#UNqap|_KcS7>0cyeunCW$*$t=X3A$ywAH){z*K&zoarPnpCKvHMAt;0oaO& zrzgB9glnruuTr(qQ|>1w``^&Pj3K+lLOdUIB9l$Y*tgn7P=VPqkX`2d_*wAt^nAl< z{q*F_3{qgv=QGYdc5|M{8z|6pCE57vrRLvT@3y~P!0Pw0r_>gp)7&i8wHHWzhu`b3 zmo;AI+vl~j;H&3N^!6ph9ib0a`)26f1-F}1`}UviSi-OUV_QHzXev^Tf*XI@-WB}p z{|fm!GUys^JOxfzANAMpaSv_;YI)>*kO!`AaMDn&aXkO<7TcefT-RKi;#htc;%&H8 z{H6?fZWU0g=iSiAUuV87ez84hUmT>VYk0PsLii{f?Q8dl7yASe%kWmxbSda^5$*ag zIZdcQv>58$0r)y;^nB;zYx+R)`ZVh1kF9!IskO7M|366$Ajkjm892)&{M#}Gs7Vph zYSxP_5{1%!VaED%t5@@@SBVbEzm{pO*z@s*PD=Sh;z)mZ9gv(dFtFH}uM!Ca4iJ}y zhIm-O7>lBdrup?!WHRl&aTnEmE}%kBJHVFx8aqD+VIcw`B;p1_H2odE7bFH*3k*-)cxOE?NV^bnOAQ+e z4#itn*fD#bGjeu63Ow0vnwr=IPUYw$W^+x=n&%8XBMS59b<~aZb<$8)>zf~fP&=Ig zv#`6f*^r~3o5A5p+<1p`-j70Hu43H*hyb7v>)eac5+D(RoJ>Xs{|11A!@qJ|*Z z0w-W(WCT%h zkG#alIYKRnB5f9sF!HiG@m;;Puh8w^$|13+L2_V{l60c|{nkXAeKE5P7b^l2S96g^Gp9trH1PJcg=`9CG|LM)L}hJa{CZypm(NfZiA8Y0<_IH0e-PVJ zj|Zc3RrO3uv1&nYL(rh7VH=?qkdsDKE{4j$y2Zhq5(hz)vL~rP1&MhOhSS-5pNC(y z63$7D0o>C0^f?qcG!9;)BPXW#yx3obL!V>#x1m>jtnsqb;jA>O96do+ z^>pnye4|)CpY!;(mxgZES(p5x7yKQm-UeJRBYf9=rdJg&Ghfm^SJm(62Cuc#cdM$y zTusfldOU!52l}2&OEa!BSNdC-pHk zLO(XQ0Kq3$p8%Wkr+=wlb^SWn>#9W_M+{d}{qQfl(y1snLWaZmK(AJ0ITrX`~!&riA6w`-> z!S4!I*@oI)j|FL~CzHD@Fdi45knUGbpBSc&dmMcp=QzDi#>Mga3f7)3EQwKDK0{06 z?1v4Ou4j-fW9=IKYzPVGnE#HT0%VQ_YCBqaOKaR1Bs({>bO@u`&EDLIv<@yw3u?X=YI0}zEpqw z6!bbn&lPA4+*&D2Tb;_!eU;8ZJ=UbBP$SJV37RStoY?-H!#o3&S7b6o2|T!e-uf~XUQ!eWo`hEN-MsBXz);RR%k=o#$se9znFvrb1yYXM3vAKzUe4rxHaX68C z3Isu?^{Qt8nvPzd2mIeBWWje0fzcG`WzBMm1-SOrhXo{W!|r`=xNgVTH!A^qKgF-Z zX~4mND*pBpx!}jV!QMitYSu|5@~>t0n#aquX%GiJ7ZTslkAM1pH#tSCg>`UmKk_|( zW@QUz@QgqmsKB!M23klrjBGn6WEzD$znI^0&Px94+-k@q)^!~2NAAxvgRj+w&P%hA z@Y0Q(!X%m+pyU^(;L9M>_26{w-hwK$n_1q_;F}fXEC-^`Et=P(x#0BdrQ%I7(`A0k z$;{HKOzpbq1JX2!Kw~zD^YI68o;12+3hn+moYR+^MKQzDAoQ~F-8S{Vla`-~-(EYWf2^*W-perg5^qVX40-{P-n5*WLf7iLvQ|XKdDn zTTJ)pal^Gc?B*s8l#92EXm!nQ9d$1w;N`kK{^amIjVyW2PgQU@yT%-fz?j-x{r2d1 zYc4R3HXK{m?8}tyMtW-`{v~R{gQvEvJ-eL0kM9+Pjpoy`bRQk8EH&q7TIepVF_(0)vTjCQ%#Pjfz zDF2FTn73Ve-hY}C~RJqoR=#uSC{arjH zoL@{LN4mztdwO;WamvEhJaX9%GXBUhb9eUl@Fox?n2tOdYrQ|JcWOAW0NR*5g+uUt z1S>i`vrW%7d!omW*L1ZFWsh^VJg@QUdhH{Cbl}OPQJa7pqpFI6lllFjqsNXxi*R>| zPpv+m-i+OEh)A}I$iHMp$jQmjc(lF#gPh$>SRzseT=IQKD=!ibg`3B`$t z(UL|%oHf#d@P5>o1L4FGl^!59oQNMVvT<}|(oy6bh}s@p3Q!uaFo$_(8AX4YojXe# zIOBVTcUlR9js0!bpwQ(^L==lekfy~^*SAlAh_5cs7?cJ zB?YFZ&?Hd^D*uV(tg57s4q~X&g2`|N(Tb!a4@Xir3E3Ise17slKyZhIMnqX#84X+T zdb&Q=xk?Ha1`;?mxg8Yssj}FjgJc~P{zC&LlMjR!5DuyZti0Ca`7ePNQuJwxcb&Wa z=F5!&#^2yOc7Y64$YIkU!~4>(D@}q>TKf921PBFUTv$lN7SlXHNfkJlbGT%f2FDrg zfOBG9D(7t$E^yW=2>%T=ol5hVAoBdgq1bymZp6tmZ z6CVkX@Y?hU=Vlp72{N9%_`iMox|bFcR*U}VZjeb*LvSuvPS{GCkZ z|4S~d1S)jg{3!0w`x_4AxOIvp*l*2!{qD1i<>PPg989!}_NHzB7wGs>nMtp7_*qLU)-pl<69S*BEnfXtmwG60wRL~ z?O*RL6>;L4-9zg@y`!-O6Nt^kU+NkuErRCQ_*Z>*dLGcw z77V|&x&VQ+P?PG9*<2%C1c-FNmCM{N${SwK74{|n^X9pFo3N<@#Us2Na>Ai7uAl{$5Mvy){8WJ%y+`cnjAS z*vU8eQ+FS)0srJ_z3c>KXBO9j|2f|p4DLDNn)92)2?60=Tx+kD!3)Iy zE`?Ed=fmo$<^I+AD3LW$V;iJ}i`8OpcNu^Ab0?k#k?pfkaN6Mc#b5_ZpgB9+Ea2;I zyR&~&MkFtE)%lrt|IN`li+fVT=j&%lHMNC}sas^f_2}XC7C{5XC3b2`lY)fng=p1A zA*M5{<1^%NjFX9N&QZCqea5`qX30iZX5cj6_%5Qo;5Eb|m&U0p;9HjD(J#$bw%+JF z*EA#$3-5@o!{L$A^_Yw`7||p2?PNrTk9(r3f0)~+2>O4gvUqBr?TUn$78u?|45z#O zF9mAfkW9!ndRpBvbs8SlSLJ=N$}zE17`iBiCirg#3=hDT<@*5jIs(#!-kQc-Um)rw zHi1U8ztH4Oc2&GPBg#6uALJ3P3Jvtso~1S3Jv;AsI0N;&Pij3H*wjr4_eO5<{IrS% zp0PzpKrc&j23ed1_02Tj11{%WE50wcmPU;>RT&2*Su#fBSD(EvG3* zzpYKj(t#kzy4cE%b6C=QVC{!O_YGmSfISY6PZED;!oihIRTpQkS6y!>p!&A4ez}GH zuJ--U=L&L)MjDT2hQ{ah&k{w012Y=M@m_}*SGYO_&}mT~qwP$dlm-^JzeKwn&0_5B z1>2D>OzrS2l55;Rs^UJNF|C-pyNSnsaAVH3kXuNXNU_b+voeC2gR{2N*=(?XKggW| z7kI(z=tm&sCBb!n!Nm(jin+xzc`En}S7P_u@*HS(Kcm3YWOJ{W~)H_ z@Ofw18?y*hSuztT8n;1wa8#+QL@CICD$_=tLfrOFvfv!jtUgCFAyb*_HsUuyk}`~= z{*liL8J>@8IhJ35Z&?QN>kSD~7R%BE7nn>KX!`|^HwG&OA%cfbX5ToV42~4egwF@5 zMKjt?C_YUFeKg$qxF>#rp7cADXMhJZLKh zzbb6T=sVgXNqB{f9*$T6Y`>qjQZeQN?0(n)HELpB5Ge{A1-iDyn;n5o40)J|xDq_< zA24NXln@qSWK=r5f;937P_g_Bg_a~6f!3d#<)0XPRY)f*=>yVmZ6hu$st!KMY}kq+ zX*3*a7`ux9PjKkaCF7jHHwo#Q4d#hT+%GK7omsq1_K ze776R81ExAe6E+D>xe+}gRkkW+|c#-tmEt*rj!Z3w@s$ULt|(-YIL}N!Ll~wqIj8B5Zeq>+w(AKtqnGk^!YDiHZ~DO^ z7;r*h!H3|k22&Y2ViQF1$9v%PbrCAFe+TZisB!=bzd<*#-y47}VB}LfP+!9JD$nM7 zYKghl)qvAp5V`D#T$D4vQ(V4NL=ub41B|l_IynL-`aT(jM5ydfTCidvRN7D%sARmN zT9|Y8`@4-eGXbtLG;t+0qMU`NKo$KXiW!Sa7!h$~sigaMm(ZGrAD04mQmut(GXSUF+Vm+txf*`(cfI< zl@>FIXDryqQY!IQJDg9dUav$<=~O-6Ta%rSZMWLu8LWWtT6F{o7rE@m3hIHvS0EkNxJwY)8lI;Zaj5a=dOYCDo3JEL zUaasB_I4(^@|9}R2y5)z)u3RjgHTM03L%*X>j;C*E6V2MP!v5wS zr_138!F(#~DB3+ZlW)Rb`m1w4&?J4;waR`sx_p94R@d`Thwlv(NM-{!v?@BnFWV_s z=QMZwPT9QfCUB;*UT}|($Zhvvps9pqzlGXt8b9{IXT7{~a^E%9%bh!%C8BMMlKFz# zpdqdav(+7B461``e!f(Bv8C2sFXT?9Q{v+A+#~Tv8x0D#QgWrn2!i*oMC}qwcY}y+ z)b^!rRl#s`ZDCcUVP#B5bKlsYx%-(;wS$ol2GBFd_*QGnqfwempm&I1KWZU#735pl zxC)qHqOVKaSWS8g&}$uQx8oa6XH&ebq++V$;u%~?>!0cv57ww=&gE?VT$|_nI{Utr z{-SvJ@VO;bpVeB7fec=WQN|%>>O`i>4)f|ITsLtWUC##^H``nv>{E=(N@VLR>}S5i z(@fO~hh0GD)&Sh?sYi(#Ov9yOo4HdB_s3B?$D{km4t6WUJM{LmguJf6&bN}4c9X2K zB@2RrMXq%h>)-n^KOh@XhG-4Vws$Vzw~x}786DgkgK*dSy(L}ioa>amhUw9u@K)M= z(L~7t2c7-Eps;tK{ekCn53%%O!WEStO|)T58cKIp3VYcBf_DSyu_r#zILl9F7zJ^; zH;^9NOGyL$t6Sm)%@wwjvyN3WBXm>Mbn zIL0p4>a$I#5O1!Bf&2Thg!?A3_@-w&3LKZ4qgQW8fcu-+n#*e+857Zlb%v_k?twup zgTqU6gQM3>yLv|}#9ex{_GbI%-M1B2AQ�vo@WqZnv91U|L{2IMu-HbJLY2n3 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

B`{6&y*x+ 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 Ai2wiq literal 0 HcmV?d00001 diff --git a/docs/caching.md b/docs/caching.md new file mode 100644 index 0000000..6d8a2db --- /dev/null +++ b/docs/caching.md @@ -0,0 +1,167 @@ +#documentation #performance #network #ccm3 + +# Caching In CCM3 + +This document describes **what CCM3 caches**, **how lookups are ordered**, and **what is deliberately not cached**. It focuses on the card **preview image** path (remote APIs → raw bytes → UI decode), which is where most explicit caching lives. For upstream URL shapes and API roles, see [assets-and-info-apis.md](assets-and-info-apis.md). + +## Scope + +| Mechanism | What it stores | Survives restart? | +|-----------|----------------|-------------------| +| In-memory preview LRU (`CardPreviewService`) | Successful preview / fallback-image **bytes** + negative markers for "no upstream image" | No | +| Disk preview byte cache (`LocalPreviewByteCache`) | Same bytes + negative markers, persisted under `/.cache/preview-cache/` | Yes | +| HTTP session reuse (`CprHttpClient`) | libcurl **connections** (TLS + TCP keep-alive), not response bodies | No (process lifetime only) | + +Other persistence (for example `JsonSetRepository` after “Update sets”, `JsonCollectionRepository` for card JSON, `LocalImageStore` for **user-attached** scan files) is normal app data storage, not preview caching. Those layers are documented elsewhere via domain services; this page stays centered on **preview latency** and **repeat lookups**. + +### Cache directory layout + +The umbrella cache root is `/.cache/`, where `exeDir` is the directory containing the running `ccm3` executable — the same scope as `config.json`. It is reserved for any future computed-from-network caches (set-list response snapshots, etc.); the leading dot keeps it out of the way for users poking around the install folder. Today it contains a single subdirectory: + +- `/.cache/preview-cache/` — owned by `LocalPreviewByteCache`. Files inside are `.bin` / `.neg` / `.idx` triples (see below). + +The cache is deliberately **not** under the user-configurable `Configuration.dataStorage` path. The data-storage path is meant for the user's own data — collection JSON, attached scans, set lists — and is meant to be relocatable, syncable, and backup-friendly. Previews are downloaded artifacts from upstream APIs: + +- They must **not** follow the user's collection when the data-storage path is reconfigured at runtime (the cache would otherwise either rebuild from cold every time the user moves the dir, or pollute every chosen target with a recurring `.cache/` directory). +- They must **not** be uploaded together with the user's collection if the user backs up / syncs / version-controls the data dir. +- They are install-scoped, not collection-scoped: a fresh install elsewhere on disk should start cold, and uninstalling / moving the executable should leave nothing stale behind. + +Pinning the cache to `exeDir` is what gives all three properties without per-flow plumbing. The trade-off is that the cache is **not** wiped by the in-app data-storage reset / relocation flow; if you genuinely want a clean slate (e.g. you suspect cache corruption), delete `/.cache/` manually. + +## Preview lookup order + +For `CardPreviewService::fetchPreviewBytes(game, name, setId, setNo)`: + +1. **In-memory LRU** — O(1) lookup. A positive entry returns the bytes immediately; a **negative** entry returns an error immediately (no network call). Either kind of hit moves the entry to the most-recently-used position. +2. **Disk cache** (`IPreviewByteCache`, production: `LocalPreviewByteCache`) — on memory miss, look up on disk. A positive disk hit is **promoted** into the in-memory LRU and returned; a negative disk hit is likewise promoted into memory as a negative entry and returned as an error. So the next selection of the same card stays in-memory only. +3. **Network** — ask `ICardPreviewSource` for an image URL, then `IHttpClient::get(url)` for bytes. On success, write through to **both** memory and disk tiers as a positive entry. **`CardPreviewService::fetchAndCache`** treats an HTTP **2xx with an empty body** as an error (no cache write) so empty payloads cannot populate the LRU as false positives. + +For `fetchImageBytesByUrl(url)` (used for per-game **card-back fallbacks** when preview lookup fails): + +- Same three-tier pattern, but the cache key is derived only from the URL. There is no negative-cache analogue here: the URL is a fixed constant, so any failure is by definition transient. Empty bodies are rejected the same way as on the preview-image GET path. + +## Negative caching: transient vs. permanent failures + +`fetchPreviewBytes` distinguishes two failure kinds via `PreviewLookupError::Kind`: + +- **`NotFound`** — the upstream answered cleanly that this exact record has no preview image. Examples: + - Scryfall search returned `data: []`, or the matched card has no top-level `image_uris`. + - Pokémon TCG search returned `data: []`, or the card has no `images` object / no `large` / `small` URL. + - Yu-Gi-Oh!: **both** Yugipedia and YGOPRODeck answered cleanly with no match (Yugipedia tagged every candidate filename `missing`, *and* YGOPRODeck returned an empty `data` array or no usable image variants). + + These are **negative-cached** in both tiers. Subsequent selections of the same record return an error instantly, without any HTTP call. The user-visible effect is that the per-game card-back fallback shows up immediately on every click. + + The cache key is `(game, name, setId, setNo)` (with Yu-Gi-Oh! also packing rarity and edition into `setNo`). Any **edit to a lookup-relevant field** of the record changes the key automatically, which means the negative entry no longer matches and a fresh network resolution attempt runs the next time the user clicks the row. So if the user fixes a typo, changes the set, switches a YGO printing's edition or rarity, etc., the new fingerprint guarantees a re-fetch — no manual cache clear needed. + +- **`Transient`** — we couldn't tell whether the record has an image because the upstream couldn't speak. Examples: + - HTTP / network / TLS / DNS failure. + - Malformed JSON, missing top-level fields (schema deviation that suggests an outage page rather than a real "no match" response). + - Yu-Gi-Oh!: **either** Yugipedia or YGOPRODeck failed at the network/parse layer. The cautious rule is that as soon as one upstream couldn't speak, the overall outcome is transient — we cannot conclude the record has no image, only that we couldn't reach the place that would tell us. + + These are **never cached** (positive or negative). The next selection of the same row retries cleanly. This is the property that keeps a temporary connection drop from semi-permanently breaking previews. + +This split is the reason the preview path doesn't keep retrying every click for cards whose printing genuinely has no upstream scan, *and* the reason a brief loss of connectivity doesn't poison the cache with bogus "no image" markers. + +## Updating cached entries + +There is no explicit "refresh" or "invalidate" API on `CardPreviewService` — by design. Every way an entry's state can change is driven by **what already happens** in the system, so contributors don't have to reason about a side-channel mutation API. The full set of transitions is: + +### 1. Edit-driven invalidation (record changed → fresh lookup, automatic) + +The cache key for the preview path is `(game, name, setId, setNo)`. For Yu-Gi-Oh! the third slot also encodes rarity and edition, packed by `YuGiOhSelectedCardPanel::previewKey()` as `||||<1E|UE>`. The user editing **any** lookup-relevant field of a card record produces a **different cache key** for the resulting selection, which means: + +- Memory and disk lookups for the new key **miss** the old entry (positive or negative). +- A fresh `ICardPreviewSource::fetchImageUrl` call runs. +- The result is cached under the new key, leaving the old key's entry untouched but unreachable from the UI (it ages out via LRU / mtime eviction). + +Concretely: fix a typo in the card name → re-fetch. Switch the printing's set → re-fetch. Toggle `1E` ↔ `UE` on a YGO card → re-fetch the per-printing scan. **No manual cache clear needed**; the test `editing a lookup-relevant field invalidates the negative entry automatically` pins this behavior. + +If you add a new disambiguator (say a future "art treatment" flag), the rule is to pack it into one of the existing key slots (`setNo`'s `||`-separated tuple is the established hook) so this auto-invalidation continues to apply. Adding it as a side parameter that the cache key *doesn't* see would silently break the update story. + +### 2. Same-key positive ↔ negative state transitions + +If a previously cached entry's verdict flips upstream (Yugipedia uploads a missing scan, a Scryfall printing's `image_uris` get fixed, etc.) **and** the user re-encounters it under the same key, the next fetch decides: + +- **Positive → negative.** Source returns `NotFound` for a key that previously cached a positive entry: `cacheStoreNegative(key)` overwrites the in-memory entry's bytes with an empty payload and flips `negative=true`; on disk, `LocalPreviewByteCache::storeNegative` removes the existing `.bin` (releasing its bytes from the size cap) and writes a `.neg` marker. +- **Negative → positive.** Source returns a real URL, `IHttpClient` returns bytes, `cacheStore(key, payload)` overwrites the existing in-memory entry with the new bytes and flips `negative=false`; on disk, `LocalPreviewByteCache::store` removes the existing `.neg` and writes the new `.bin`. + +Both paths preserve a key invariant: **`.bin` and `.neg` for the same hash are never co-resident**. `LocalPreviewByteCache` tests pin this down (`a later positive store overwrites an earlier negative entry`, `storeNegative for an existing positive entry replaces the bytes`). + +The "trigger" for these transitions in production is one of: the user edits the record back to a previous key (so the still-cached old entry surfaces and a network attempt then re-reaches the upstream), or the in-memory tier was cleared by an app restart and the disk-tier verdict is now stale. There is no time-based revalidation today; the design relies on the upstream answer being stable enough that a stale verdict only hurts until the natural transitions above kick in. + +### 3. Eviction-based aging (passive) + +- **In-memory LRU.** Capacity is hard-capped at `CardPreviewService::kCacheCapacity = 128` entries (positive and negative share the count). When a new entry is inserted past the cap, the **least-recently-used** entry — the back of the list — is dropped. Any access (positive hit, negative hit, or store) moves the entry to the front, so heavily clicked cards are the last to go. +- **Disk cache.** Capacity is hard-capped by total `.bin` payload bytes (`LocalPreviewByteCache::kDefaultMaxBytes = 64 MiB`). When a `store` would push the total past the cap, oldest-by-mtime `.bin` files (with their `.idx` sidecars) are deleted until the new write fits. A successful `load` touches the entry's mtime, so frequently viewed cards rarely become eviction victims. `.neg` markers are not counted against the cap and are not actively evicted; their count is naturally bounded by the number of records the user has viewed whose upstream cleanly reported "no image". + +Eviction is the only way an entry "ages out" without an explicit user action. + +### 4. Manual / external invalidation + +- **Delete the cache directory.** Removing `/.cache/preview-cache/` (or the umbrella `/.cache/`) is safe: `LocalPreviewByteCache` recreates the directory on the next store. The in-memory tier is unaffected by the disk delete during a running session, but a subsequent app restart starts cold. +- **Reinstall / move the executable.** Because the cache is rooted at ``, a fresh install elsewhere on disk starts cold by construction, and uninstalling / moving the exe leaves no stray cache in the user's data directory. (Note: **resetting or moving the user's data-storage directory does NOT clear the preview cache** — that's intentional; the cache is install-scoped, not collection-scoped.) +- **Tampering with sidecar files.** If a `.idx` is ever rewritten with a key that doesn't match the requested cache key (corruption, hash collision, filesystem hiccup), `LocalPreviewByteCache::load` reports `Miss` rather than serving the entry. A subsequent `store` / `storeNegative` overwrites the corrupted record cleanly. This is what makes FNV-1a (non-cryptographic) safe to use as the hash: the worst case is a one-time miss, never a wrong answer. + +### What does *not* trigger an update + +To keep the mental model crisp, the following cases **do not** invalidate or refresh anything: + +- **Re-selecting the same row repeatedly.** That's a hit by design — the whole point of the cache. The only thing that changes is the entry's LRU position / mtime. +- **Transient errors on a row that is already negatively cached.** The negative entry is consulted first and short-circuits the call; the network is never touched, so a flaky network can't accidentally turn a `NotFound` verdict into a `Transient` outcome. +- **Restart with a populated disk cache.** This is a *warm start*, not an update. Both positive and negative entries flow back into memory on first re-access via the disk tier. No upstream is consulted, no entries are rewritten. + +## In-memory LRU (`CardPreviewService`) + +- **Implementation:** Doubly linked list + hash map, guarded by a mutex. Each entry is `{key, payload, negative}`; positive entries hold the bytes, negative entries hold an empty payload and a `negative=true` flag. Hits move the entry to the front regardless of kind. +- **Capacity:** `CardPreviewService::kCacheCapacity` (128 entries — positive and negative entries share this count). +- **Threading:** Preview work can run on a worker thread from the UI layer; all cache access goes through the mutex. +- **Keys:** Internal strings built in `CardPreviewService.cpp`: + - Preview path: prefix `'p'`, then NUL-separated fields: enum `game`, `name`, `setId`, `setNo`. The `setNo` string may embed game-specific disambiguators (for example Yu-Gi-Oh! packs rarity and edition into `setNo` before it reaches the service — see `YuGiOhSelectedCardPanel::previewKey()`). + - URL path: prefix `'u'` plus the full URL string. + +Callers should treat the key as opaque; **correctness** depends on passing stable `(game, name, setId, setNo)` (and stable URL for fallback fetches) so the same printing always maps to the same cache entry. + +## Disk byte cache (`LocalPreviewByteCache`) + +- **Root directory:** `/.cache/preview-cache/` (created on first store). Pinned next to the executable, **not** under the user-configurable `Configuration.dataStorage` path — see "Cache directory layout" above for the rationale. +- **Files per logical entry:** mutually-exclusive `.bin` / `.neg`, plus an always-present `.idx` sidecar: + - `.bin` — raw image bytes (PNG/JPEG payload). **Positive** entry. + - `.neg` — zero-byte marker file. **Negative** entry (the upstream cleanly said "no image"). + - `.idx` — text sidecar holding the **exact** cache key string used by `CardPreviewService`. Used to reject hash collisions on load — if `.idx` does not match the requested key, the entry is treated as a miss regardless of which marker file is present. + + `store()` removes any existing `.neg` for the same hash; `storeNegative()` removes any existing `.bin`. The two states never co-exist. If they ever somehow did, `load()` prefers the `.bin` (more useful answer). + +- **Hash:** FNV-1a 64-bit over the key, rendered as 16 hex digits. Not cryptographic; the `.idx` sidecar is the safety net that prevents collisions from serving the wrong card's bytes or the wrong card's "no image" verdict. +- **Size bound:** Default total payload cap `LocalPreviewByteCache::kDefaultMaxBytes` (64 MiB). Eviction removes **oldest by modification time** among `.bin` files (with their `.idx` sidecars) until the new write fits. **Negative entries** (`.neg` markers) are tiny and are not counted against the cap — their count is naturally bounded by the user's actively-viewed records. +- **Recency on read:** A successful `load` updates the corresponding `.bin` or `.neg` file's mtime (“touch”) so frequently viewed cards are less likely to be evicted. +- **Failure policy:** All adapter I/O failures are swallowed (miss on read, no-op on failed write). Preview still works from network; worst case is “cold” performance. + +### Clearing the disk preview cache + +- Delete the `/.cache/` folder (or just the `preview-cache/` subfolder inside it). Both options are safe: `LocalPreviewByteCache` recreates the directory on the next store. +- The in-app data-storage reset/relocation flow does **not** touch this directory — the cache is install-scoped (sits next to the exe), not collection-scoped. If you need a clean slate for the cache, delete the directory above explicitly. + +## HTTP connection reuse (`CprHttpClient`) + +The app constructs **one** `CprHttpClient` and shares it across set sources, preview sources, and image downloads. It owns a single long-lived `cpr::Session` (one libcurl easy handle per process). + +- **Benefit:** Repeated HTTPS requests to the **same host** reuse TLS sessions / TCP connections where the server allows keep-alive, which materially reduces latency vs. a fresh session per GET (especially for Yu-Gi-Oh!, where preview resolution and the actual image often hit different hosts). +- **Thread safety:** All `get()` calls are serialized with a mutex because libcurl easy handles are not thread-safe. + +This is **not** a response-body cache; it only amortizes connection setup. + +## Design constraints (for contributors) + +- **Classify source errors honestly.** A new game module's `ICardPreviewSource::fetchImageUrl` must return `PreviewLookupError::Kind::NotFound` only when the upstream answered cleanly (parsed response, no match / no image variants). Anything that could be the network — HTTP error, malformed body, schema deviation, timeout — is `Transient`. +- **Do not cache transient errors.** That's the rule that keeps a flaky connection from permanently disabling previews. If you ever need to record a failure, route it through `IPreviewByteCache::storeNegative` only on a confirmed `NotFound`. +- **Updates flow through the cache key, not a side channel.** Don't add a `clearCache(...)` / `invalidate(...)` API to `CardPreviewService` to "fix" a stale entry. The supported update mechanic is: edit-driven invalidation (key changes), same-key positive/negative replacement on the next successful resolution, and LRU/mtime eviction (see "Updating cached entries" above). A side-channel invalidation API would just be another way for callers to forget to keep the disk tier in sync with the memory tier. +- **Extend cache keys** by packing new disambiguators into existing coordinates (typically `setNo` / tuple encoding) rather than bypassing `CardPreviewService`, so memory and disk tiers stay aligned and editing the record continues to invalidate the negative entry automatically. +- **Tests:** + - `card_preview_service_tests.cpp` pins tier ordering and write-through using an in-memory `IPreviewByteCache` fake; it also exercises the negative-caching behavior end-to-end (NotFound is remembered, Transient is retried, edits invalidate the entry, warm-restart honors the disk negative entry, a later positive overwrites a previous negative). + - `local_preview_byte_cache_tests.cpp` exercises the real-disk adapter in isolated temp directories, including the `.bin`/`.neg`/`.idx` interactions (round-trip, restart, mutual replacement, sidecar collision rejection, eviction). + +## Related reading + +- [assets-and-info-apis.md](assets-and-info-apis.md) — external APIs and the same preview tiers in **runtime flow** context. +- Root `AGENTS.md` — UI performance guardrails summary. +- `core/AGENTS.md` — conventions for preview caching, source-error classification, and `CprHttpClient` session ownership. diff --git a/tests/AGENTS.md b/tests/AGENTS.md index 53899c0..880c411 100644 --- a/tests/AGENTS.md +++ b/tests/AGENTS.md @@ -15,17 +15,20 @@ - `set_service_tests.cpp` — `SetService` with `FakeSetSource` + `InMemSetRepo`. - `magic_set_source_tests.cpp` — `MagicSetSource::parseResponse` (Scryfall mapping). Drives `fetchAll` via `FixedHttpClient` fake. - `magic_card_preview_source_tests.cpp` — `MagicCardPreviewSource::buildSearchUrl` URL-encoding rules + `parseResponse` (`data[0].image_uris.normal`). Drives `fetchImageUrl` via `FixedHttpClient`. -- `card_preview_service_tests.cpp` — `CardPreviewService` registry/orchestration through `registerModule(IGameModule&)` with an inline `FakeGameModule` returning a `FakeSource : ICardPreviewSource` and a `FixedHttpClient`. Pin-down for the "module returning nullptr is silently skipped" rule. +- `card_preview_service_tests.cpp` — `CardPreviewService` registry/orchestration through `registerModule(IGameModule&)` with an inline `FakeGameModule` returning a `FakeSource : ICardPreviewSource` (which carries a `PreviewLookupError::Kind` knob so tests can drive both transient and not-found paths) and a `FixedHttpClient`. Both fakes count `calls` so cache-hit assertions are precise. Pin-downs include: "module returning nullptr is silently skipped", the per-game `detectFirstPrint` / `detectPrintVariants` opt-in guards, and the LRU bytes cache (repeat `fetchPreviewBytes` for the same `(game, name, setId, setNo)` returns the cached payload without touching the source or HTTP; different cards get separate cache slots; transient errors are **not** cached so a flaky connection recovers; `fetchImageBytesByUrl` is keyed by URL and serves the per-game card-back fallback from the same LRU). Production `fetchAndCache` rejects empty HTTP bodies (not exercised by these fakes unless a test sets an empty `body` deliberately). The negative-cache behavior is also pinned down: a `NotFound` source error writes through to the persistent cache *and* short-circuits the next lookup (source not re-invoked); editing a lookup-relevant field invalidates the negative entry automatically; warm-restart (a fresh service over the same cache fake) honors a previously stored negative entry; and a later positive result for the same key replaces the negative entry. The persistent-tier wiring uses an inline `InMemoryByteCache : IPreviewByteCache` fake whose `Entry { negative, payload }` carries the kind explicitly. +- `local_preview_byte_cache_tests.cpp` — `LocalPreviewByteCache` adapter against `StdFileSystem` (the only test in the suite that touches real disk; each case scopes itself to a unique `temp_directory_path()/ccm_preview_cache_test_*` directory and cleans up via an RAII `TempDir`). Pin-downs: store/load round-trips bytes verbatim; missing key is a clean miss; empty payload is silently skipped; sidecar mismatch (faked hash collision) is treated as a miss so we never serve the wrong card's bytes (or wrong card's negative verdict); the cache survives an adapter restart over the same directory; total-size eviction drops the oldest `.bin` by mtime when a `store` would exceed the cap; a `load` touches the entry's mtime so frequently-viewed cards survive eviction. Negative-entry coverage: `storeNegative` round-trips as `NegativeHit` (not a miss, not a payload, and not counted against the byte cap); negatives survive an adapter restart; a later positive `store` overwrites a previous negative and a later `storeNegative` overwrites a previous positive (releasing its bytes from the cap); and the sidecar collision check applies to negative entries too. - `pokemon_set_source_tests.cpp` — `PokemonSetSource::parseResponse` (api.pokemontcg.io/v2/sets shape — `data[].id`, `name`, `releaseDate` already in `YYYY/MM/DD`) + sort-by-release-date stability. Drives `fetchAll` via `FixedHttpClient` and asserts the public endpoint URL. - `pokemon_card_preview_source_tests.cpp` — `PokemonCardPreviewSource::buildSearchUrl` (percent-encoded `name:` / `set.id:` / `number:` triple, with collector-number `4/102` -> `4` normalization) + `parseResponse` (`data[0].images.large` with `images.small` fallback). Drives `fetchImageUrl` via `FixedHttpClient`. +- `yugioh_set_source_tests.cpp` — `YuGiOhSetSource::parseResponse` for YGOPRODeck `cardsets.php` (`set_code`, `set_name`, `tcg_date`) including `YYYY-MM-DD` -> `YYYY/MM/DD` rewrite and chronological sort checks. +- `yugioh_card_preview_source_tests.cpp` — `YuGiOhCardPreviewSource` Yugipedia + YGOPRODeck unit coverage. Helper-level tests pin down `normalizeName` (whitespace + Yugipedia-policy punctuation stripping), `rarityCodeFor` (CCM3 dialog rarity names → Yugipedia codes, unknown rarity falls through), `extractSetCode` (`LOB-005` / `LOB-DE005` → `LOB`), `buildCandidateFilenames` (printed-edition first, EN/NA/EU/AU + png/jpg, rarity-less fallback round, empty list when slug or set code is missing), `buildYugipediaQueryUrl` (single `titles=File:A|File:B` batch, percent-encoded), and `parseYugipediaResponse` (returns the URL of the highest-priority filename that resolved, errors when every candidate is `missing`). End-to-end `fetchImageUrl` cases use a `RoutingHttpClient` to verify Yugipedia is queried first and the per-printing scan is returned when found, that empty/error Yugipedia responses fall through to the YGOPRODeck `card_images[0]` fallback, that the YGOPRODeck error is propagated when both upstreams fail, and that an empty `setNo` skips Yugipedia entirely. `parseFirstPrint` preferred-`set_name` lookup is also covered for the auto-detect path. `parsePrintVariants` includes synthetic scenarios aligned with the `yugioh_same_card_set_variant_tests` fixture (dual-rarity vs multi-code within one display set, duplicate suppression, and no merge across unrelated `set_name` rows when the picker label matches nothing). - `card_sorter_tests.cpp` — `sortMagicCards` / `sortPokemonCards` per-column behavior. Pin-down tests for `byField`-equivalent semantics: case-insensitive strings, chronological set sort via `set.releaseDate`, numeric `amount`, `false < true` boolean order, stable composition (sort by name then by set keeps inner-name order). Update this file whenever you add a new column / sort key. -- `card_filter_tests.cpp` — `matchesMagicFilter` / `matchesPokemonFilter` row-matcher behavior. Pin-down tests for `applyFilter`-equivalent semantics: case-insensitive substring match across `tableFields` valueKeys (name, set.name, language, condition, amount-as-string, note; Pokemon adds `setNo`), boolean flag columns (foil/signed/altered/holo/firstEdition) intentionally excluded, empty filter matches everything. Update this file whenever you add a new searchable column. +- `card_filter_tests.cpp` — `matchesMagicFilter` / `matchesPokemonFilter` / `matchesYuGiOhFilter` row-matcher behavior. Pin-down tests for `applyFilter`-equivalent semantics: case-insensitive substring match across `tableFields` valueKeys (name, set.name, language, condition, amount-as-string, note; Pokemon adds `setNo`; Yu-Gi-Oh adds `setNo` + `rarity`), boolean flag columns intentionally excluded, empty filter matches everything. Update this file whenever you add a new searchable column. - `CMakeLists.txt` — explicit list of every `.cpp` (no glob). ## Conventions 1. **Framework**: doctest. Each test file `#include ` and uses `TEST_SUITE("...")` + `TEST_CASE("...")`. Asserts: `CHECK`, `REQUIRE`, `CHECK_THROWS`. -2. **No real I/O.** Everything goes through `ccm::testing::InMemoryFileSystem` or an inline test-local fake. If you need HTTP, write a fake `IHttpClient` like `FixedHttpClient` in `magic_set_source_tests.cpp`. +2. **No real I/O.** Everything goes through `ccm::testing::InMemoryFileSystem` or an inline test-local fake. If you need HTTP, write a fake `IHttpClient` like `FixedHttpClient` in `magic_set_source_tests.cpp`. **One narrow exception**: `local_preview_byte_cache_tests.cpp` exercises the real filesystem because `LocalPreviewByteCache` uses `std::filesystem` directly for size + mtime queries that the `IFileSystem` port deliberately does not expose. Those tests scope themselves to a unique temp directory and clean up unconditionally — do not extend the exception to other test files. 3. **Fakes for narrow concerns stay in the test file** as anonymous-namespace classes (e.g. `RecordingImageStore`, `InMemoryRepo`). Promote a fake to `tests/fakes/` only when more than one test file needs it. 4. **Path strings** in expectations must use forward slashes. The fake normalizes everything to `generic_string()`. Do not hard-code `\` separators. 5. **Test names** describe behavior, not implementation. Prefer "missing file is created with defaults" over "test_init_no_file". @@ -37,6 +40,7 @@ - After modifying `formatTextForFs` or `parseIndexFromFilename` you **must** extend `fs_names_tests.cpp` — these are byte-compatibility shims with the original Rust code. - After adding a new service in `core/` you **must** add a corresponding `_service_tests.cpp` with at least the happy-path and one error-path test. - After adding a new game's set source / card preview source you **must** add `tests/_set_source_tests.cpp` and (if applicable) `tests/_card_preview_source_tests.cpp` mirroring the Magic and Pokemon files. Add them to `tests/CMakeLists.txt`. +- After adding or changing `ICardPreviewSource` optional capabilities (for example `detectFirstPrint` / `detectPrintVariants`), you **must** extend `card_preview_service_tests.cpp` and the corresponding game source tests to cover both supported and unsupported paths. ## Commands diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a9286c0..168ad2e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -16,8 +16,11 @@ add_executable(ccm_core_tests magic_set_source_tests.cpp magic_card_preview_source_tests.cpp card_preview_service_tests.cpp + local_preview_byte_cache_tests.cpp pokemon_set_source_tests.cpp pokemon_card_preview_source_tests.cpp + yugioh_set_source_tests.cpp + yugioh_card_preview_source_tests.cpp card_sorter_tests.cpp card_filter_tests.cpp diff --git a/tests/card_filter_tests.cpp b/tests/card_filter_tests.cpp index c7a5479..1e87913 100644 --- a/tests/card_filter_tests.cpp +++ b/tests/card_filter_tests.cpp @@ -8,6 +8,7 @@ #include "ccm/domain/Enums.hpp" #include "ccm/domain/MagicCard.hpp" #include "ccm/domain/PokemonCard.hpp" +#include "ccm/domain/YuGiOhCard.hpp" #include "ccm/services/CardFilter.hpp" #include @@ -52,6 +53,21 @@ PokemonCard pc(std::string name, return c; } +YuGiOhCard yc(std::string name, + std::string setName, + std::string setNo = "", + std::string rarity = "", + std::uint8_t amount = 1) { + YuGiOhCard c; + c.id = 1; + c.name = std::move(name); + c.set.name = std::move(setName); + c.setNo = std::move(setNo); + c.rarity = std::move(rarity); + c.amount = amount; + return c; +} + } // namespace TEST_SUITE("CardFilter::matchesMagicFilter") { @@ -158,3 +174,12 @@ TEST_SUITE("CardFilter::matchesPokemonFilter") { CHECK(matchesPokemonFilter(pc("Charizard", "Base Set"), "")); } } + +TEST_SUITE("CardFilter::matchesYuGiOhFilter") { + TEST_CASE("matches by set number and rarity") { + const YuGiOhCard c = yc("Dark Magician", "Legend of Blue Eyes", "LOB-005", "Ultra Rare"); + CHECK(matchesYuGiOhFilter(c, "lob-005")); + CHECK(matchesYuGiOhFilter(c, "ultra")); + CHECK_FALSE(matchesYuGiOhFilter(c, "secret rare")); + } +} diff --git a/tests/card_preview_service_tests.cpp b/tests/card_preview_service_tests.cpp index 1295619..69e8810 100644 --- a/tests/card_preview_service_tests.cpp +++ b/tests/card_preview_service_tests.cpp @@ -3,9 +3,13 @@ #include "ccm/games/IGameModule.hpp" #include "ccm/ports/ICardPreviewSource.hpp" #include "ccm/ports/IHttpClient.hpp" +#include "ccm/ports/IPreviewByteCache.hpp" #include "ccm/services/CardPreviewService.hpp" +#include #include +#include +#include using namespace ccm; @@ -15,21 +19,54 @@ class FakeSource final : public ICardPreviewSource { public: std::string url = "https://example.com/preview.jpg"; bool ok = true; + // The kind of error returned when ok == false. Defaults to Transient + // because the historical tests assumed "errors don't get cached"; the + // negative-cache tests flip this to NotFound explicitly. + PreviewLookupError::Kind errKind = PreviewLookupError::Kind::Transient; std::string err = "boom"; + int calls{0}; // Capture inputs so tests can assert routing. std::string lastName; std::string lastSetId; std::string lastSetNo; + std::string detectLastName; + std::string detectLastSetId; + AutoDetectedPrint detectedPrint{"LOB-001", "Ultra Rare"}; + bool allowAutoDetect{true}; - Result fetchImageUrl(std::string_view name, - std::string_view setId, - std::string_view setNo) override { + Result + fetchImageUrl(std::string_view name, + std::string_view setId, + std::string_view setNo) override { + ++calls; lastName = std::string(name); lastSetId = std::string(setId); lastSetNo = std::string(setNo); - return ok ? Result::ok(url) - : Result::err(err); + if (ok) { + return Result::ok(url); + } + return Result::err({errKind, err}); + } + + Result detectFirstPrint(std::string_view name, + std::string_view setId) override { + detectLastName = std::string(name); + detectLastSetId = std::string(setId); + return Result::ok(detectedPrint); + } + + Result> detectPrintVariants(std::string_view name, + std::string_view setId) override { + detectLastName = std::string(name); + detectLastSetId = std::string(setId); + std::vector v; + v.push_back(detectedPrint); + return Result>::ok(std::move(v)); + } + + [[nodiscard]] bool supportsAutoDetectPrint() const noexcept override { + return allowAutoDetect; } }; @@ -39,14 +76,48 @@ public: std::string body; bool ok = true; std::string err = "offline"; + int calls{0}; Result get(std::string_view url) override { + ++calls; lastUrl = std::string(url); return ok ? Result::ok(body) : Result::err(err); } }; +// In-memory persistent cache stand-in. Real implementation lives in +// LocalPreviewByteCache (covered by local_preview_byte_cache_tests.cpp); the +// fake here lets us pin down CardPreviewService's wiring without dragging in +// the filesystem. +class InMemoryByteCache final : public IPreviewByteCache { +public: + struct Entry { + bool negative{false}; + std::string payload; + }; + std::unordered_map entries; + int loadCalls{0}; + int storeCalls{0}; + int storeNegativeCalls{0}; + + [[nodiscard]] LoadResult load(std::string_view key) override { + ++loadCalls; + auto it = entries.find(std::string(key)); + if (it == entries.end()) return {HitKind::Miss, {}}; + if (it->second.negative) return {HitKind::NegativeHit, {}}; + return {HitKind::Hit, it->second.payload}; + } + void store(std::string_view key, const std::string& payload) override { + ++storeCalls; + entries[std::string(key)] = Entry{false, payload}; + } + void storeNegative(std::string_view key) override { + ++storeNegativeCalls; + entries[std::string(key)] = Entry{true, {}}; + } +}; + // Minimal IGameModule fake that exposes a configurable preview source. class FakeGameModule final : public IGameModule { public: @@ -150,3 +221,512 @@ TEST_SUITE("CardPreviewService::fetchPreviewBytes") { CHECK(out.error() == "net down"); } } + +TEST_SUITE("CardPreviewService caching") { + TEST_CASE("repeat fetchPreviewBytes for the same key serves from cache") { + // Re-selecting the same row in the table is the hot path: the + // (game, name, setId, setNo) tuple uniquely identifies a printing, + // and the resolved image URL is a deterministic function of those + // inputs - so we can safely cache the bytes and skip HTTP entirely + // on repeat. Each cache hit spares us two HTTPS round trips + // (Yugipedia API + image GET) plus a TLS handshake on a cold pool. + FakeSource source; + source.url = "https://example.com/img.png"; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + http.body = "PNG-bytes"; + + CardPreviewService svc{http}; + svc.registerModule(module); + + const auto first = svc.fetchPreviewBytes(Game::Magic, "Lightning Bolt", "lea", ""); + REQUIRE(first.isOk()); + CHECK(first.value() == "PNG-bytes"); + CHECK(http.calls == 1); + + // Mutate the source's response to prove the second call doesn't go + // through the source either: only the cache should be consulted. + source.url = "https://example.com/CHANGED.png"; + http.body = "DIFFERENT-bytes"; + + const auto second = svc.fetchPreviewBytes(Game::Magic, "Lightning Bolt", "lea", ""); + REQUIRE(second.isOk()); + CHECK(second.value() == "PNG-bytes"); + CHECK(http.calls == 1); // no new GET issued + } + + TEST_CASE("different cards share the same source but get separate cache slots") { + FakeSource source; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + + CardPreviewService svc{http}; + svc.registerModule(module); + + source.url = "https://example.com/a.png"; + http.body = "A-bytes"; + const auto a = svc.fetchPreviewBytes(Game::Magic, "Card A", "lea", ""); + REQUIRE(a.isOk()); + CHECK(a.value() == "A-bytes"); + + source.url = "https://example.com/b.png"; + http.body = "B-bytes"; + const auto b = svc.fetchPreviewBytes(Game::Magic, "Card B", "lea", ""); + REQUIRE(b.isOk()); + CHECK(b.value() == "B-bytes"); + + CHECK(http.calls == 2); + + // Re-fetching A returns the originally cached payload, not the most + // recent http.body; this pins down per-card cache scoping. + http.body = "stale"; + const auto aAgain = svc.fetchPreviewBytes(Game::Magic, "Card A", "lea", ""); + REQUIRE(aAgain.isOk()); + CHECK(aAgain.value() == "A-bytes"); + CHECK(http.calls == 2); + } + + TEST_CASE("source errors are not cached so a transient failure can recover") { + // If the per-game source returns an error we should not poison the + // cache - the next selection must be free to retry, otherwise a + // single network blip would permanently disable previews for that + // card until the user restarts the app. + FakeSource source; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + http.body = "PNG-bytes"; + + CardPreviewService svc{http}; + svc.registerModule(module); + + source.ok = false; + source.err = "transient 503"; + const auto firstErr = svc.fetchPreviewBytes(Game::Magic, "X", "abc", ""); + CHECK(firstErr.isErr()); + CHECK(http.calls == 0); // source short-circuited before HTTP + + source.ok = true; + source.url = "https://example.com/x.png"; + const auto recovered = svc.fetchPreviewBytes(Game::Magic, "X", "abc", ""); + REQUIRE(recovered.isOk()); + CHECK(recovered.value() == "PNG-bytes"); + CHECK(http.calls == 1); + } + + TEST_CASE("HTTP success writes through to the persistent cache") { + // The persistent tier is fire-and-forget on the way down (HTTP -> disk) + // and consulted on the way up (cache miss -> disk -> HTTP). This first + // sub-case exercises the write-through path. + FakeSource source; + source.url = "https://example.com/img.png"; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + http.body = "PNG-bytes"; + + InMemoryByteCache disk; + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + + const auto out = svc.fetchPreviewBytes(Game::Magic, "Lightning Bolt", "lea", ""); + REQUIRE(out.isOk()); + CHECK(disk.storeCalls == 1); + CHECK(disk.entries.size() == 1); + // Key shape is service-internal so we don't assert it directly; only + // that *something* identifying this card was persisted with the right + // payload. + bool foundPayload = false; + for (const auto& [k, e] : disk.entries) { + if (!e.negative && e.payload == "PNG-bytes") foundPayload = true; + } + CHECK(foundPayload); + } + + TEST_CASE("warm restart: a fresh service instance serves from disk without HTTP") { + // Simulates an app restart by constructing two CardPreviewService + // instances over the same persistent cache. The second instance + // must serve the previously-fetched bytes from disk - no source + // call, no HTTP call - which is the whole point of the persistent + // tier. + FakeSource source; + source.url = "https://example.com/img.png"; + FakeGameModule module; + module.gameId = Game::YuGiOh; + module.preview = &source; + + FixedHttpClient http; + http.body = "DM-bytes"; + + InMemoryByteCache disk; + + // Run 1: cold start, normal fetch path warms the persistent cache. + { + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + const auto out = svc.fetchPreviewBytes( + Game::YuGiOh, "Dark Magician", "Starter Deck: Yugi", "SDY-006||Ultra Rare||UE"); + REQUIRE(out.isOk()); + } + REQUIRE(http.calls == 1); + REQUIRE(disk.entries.size() == 1); + + // Run 2: pretend the app restarted. Make HTTP and the source both + // return obviously-wrong data so any unexpected fall-through to + // them shows up loudly in the assertion. + http.body = "UNEXPECTED"; + source.url = "https://example.com/UNEXPECTED.png"; + { + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + const auto warm = svc.fetchPreviewBytes( + Game::YuGiOh, "Dark Magician", "Starter Deck: Yugi", "SDY-006||Ultra Rare||UE"); + REQUIRE(warm.isOk()); + CHECK(warm.value() == "DM-bytes"); + } + // No second HTTP request - disk tier covered it. + CHECK(http.calls == 1); + CHECK(disk.loadCalls >= 1); + } + + TEST_CASE("disk hit promotes into the in-memory tier so subsequent calls skip even disk I/O") { + FakeSource source; + source.url = "https://example.com/img.png"; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + http.body = "X-bytes"; + + InMemoryByteCache disk; + // Pre-seed the disk cache with a value the service has never fetched + // this session. The first call should pull it off disk and copy it + // into memory; the second call should be served from memory without + // touching the disk cache at all. + // We can't compose the key from outside, so we go through the + // service once to learn the key shape via storeCalls. + { + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + (void)svc.fetchPreviewBytes(Game::Magic, "Lightning Bolt", "lea", ""); + } + REQUIRE(http.calls == 1); + REQUIRE(disk.entries.size() == 1); + const auto storedKey = disk.entries.begin()->first; + + // Clear the in-memory tier by constructing a fresh service. Disk + // entry stays. + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + + const int loadsBefore = disk.loadCalls; + // Force HTTP to fail loudly so we can prove neither call hits it. + http.ok = false; + + const auto first = svc.fetchPreviewBytes(Game::Magic, "Lightning Bolt", "lea", ""); + REQUIRE(first.isOk()); + CHECK(first.value() == "X-bytes"); + CHECK(disk.loadCalls == loadsBefore + 1); + + const auto second = svc.fetchPreviewBytes(Game::Magic, "Lightning Bolt", "lea", ""); + REQUIRE(second.isOk()); + CHECK(second.value() == "X-bytes"); + // No additional disk hit - in-memory tier served it. + CHECK(disk.loadCalls == loadsBefore + 1); + // Sanity: only the original storedKey ever made it to disk. + CHECK(disk.entries.count(storedKey) == 1); + } + + TEST_CASE("transient source errors do not write through to the persistent cache") { + // A transient failure (HTTP 5xx, network drop, parse error) must + // never get cached - if it did, a single bad request would + // silently break this card's preview until the user restarts the + // app or edits the record. + FakeSource source; + source.ok = false; + source.errKind = PreviewLookupError::Kind::Transient; + source.err = "scryfall 503"; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + InMemoryByteCache disk; + + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + + const auto out = svc.fetchPreviewBytes(Game::Magic, "X", "abc", ""); + CHECK(out.isErr()); + CHECK(disk.storeCalls == 0); + CHECK(disk.storeNegativeCalls == 0); + CHECK(disk.entries.empty()); + } + + TEST_CASE("NotFound source errors are negative-cached and short-circuit subsequent calls") { + // A NotFound result means the upstream cleanly answered "no image + // for this record". The next selection of the *same* record must + // return immediately without invoking the source again - that's + // the whole point of negative caching, and the user-visible win + // (no spinner, no per-click HTTP) on every selection of a card + // whose printing has no scan upstream. + FakeSource source; + source.ok = false; + source.errKind = PreviewLookupError::Kind::NotFound; + source.err = "no scan exists"; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + InMemoryByteCache disk; + + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + + const auto first = svc.fetchPreviewBytes(Game::Magic, "Bad Card", "abc", ""); + CHECK(first.isErr()); + CHECK(source.calls == 1); + CHECK(disk.storeCalls == 0); + CHECK(disk.storeNegativeCalls == 1); + + // Second call: the source must NOT be consulted again. The + // in-memory negative entry covers it. + const auto second = svc.fetchPreviewBytes(Game::Magic, "Bad Card", "abc", ""); + CHECK(second.isErr()); + CHECK(source.calls == 1); // still 1 - cache short-circuited + CHECK(http.calls == 0); + } + + TEST_CASE("editing a lookup-relevant field invalidates the negative entry automatically") { + // The cache key is (game, name, setId, setNo). The user fixing a + // typo in the card's name (or any other lookup-relevant field) + // changes the key, so the previously-cached "no image" verdict no + // longer matches and a fresh resolution attempt runs. + FakeSource source; + source.ok = false; + source.errKind = PreviewLookupError::Kind::NotFound; + source.err = "no scan exists"; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + InMemoryByteCache disk; + + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + + // First lookup: the typo name produces a clean NotFound -> negative cache. + REQUIRE(svc.fetchPreviewBytes(Game::Magic, "Lighting Bolt", "lea", "").isErr()); + REQUIRE(source.calls == 1); + + // Now flip the source to "found" and ask for the corrected name. + source.ok = true; + source.url = "https://example.com/lb.png"; + http.body = "LB-bytes"; + + const auto fixed = svc.fetchPreviewBytes(Game::Magic, "Lightning Bolt", "lea", ""); + REQUIRE(fixed.isOk()); + CHECK(fixed.value() == "LB-bytes"); + CHECK(source.calls == 2); + + // And the original (typo) record stays negative-cached. + source.ok = false; // belt-and-braces: prove the typo path doesn't re-call the source + const auto stillNegative = + svc.fetchPreviewBytes(Game::Magic, "Lighting Bolt", "lea", ""); + CHECK(stillNegative.isErr()); + CHECK(source.calls == 2); // typo path never re-resolved + } + + TEST_CASE("warm restart honors a previously-stored negative entry without HTTP") { + // Persistent negative caching is the strongest motivation for the + // disk tier carrying negatives at all: a card with no upstream + // image stays "instant card-back" across app restarts, instead of + // re-paying the round-trip to learn the same thing every launch. + FakeSource source; + source.ok = false; + source.errKind = PreviewLookupError::Kind::NotFound; + source.err = "no scan exists"; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + InMemoryByteCache disk; + + // Run 1: negative outcome, persisted. + { + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + REQUIRE(svc.fetchPreviewBytes(Game::Magic, "Z", "set", "").isErr()); + } + REQUIRE(disk.storeNegativeCalls == 1); + const int sourceCallsAfterRun1 = source.calls; + + // Run 2: fresh service over the same disk fake. Source must not be + // consulted at all - the negative entry on disk short-circuits it. + { + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + const auto warm = svc.fetchPreviewBytes(Game::Magic, "Z", "set", ""); + CHECK(warm.isErr()); + } + CHECK(source.calls == sourceCallsAfterRun1); + } + + TEST_CASE("a later positive result for the same key replaces the negative entry") { + // If the upstream eventually grows a scan for a card that was + // previously NotFound, the very next successful lookup must + // overwrite the negative entry so it doesn't keep haunting the + // user. Realistic scenario: Yugipedia uploads a scan that didn't + // exist before; the user clicks the row again and we now serve + // the real image. (In production the cache key may also change + // due to a record edit, but that's a separate path; here we test + // the same-key recovery story.) + FakeSource source; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + InMemoryByteCache disk; + + CardPreviewService svc{http, &disk}; + svc.registerModule(module); + + // First call: NotFound. + source.ok = false; + source.errKind = PreviewLookupError::Kind::NotFound; + source.err = "no scan yet"; + REQUIRE(svc.fetchPreviewBytes(Game::Magic, "Card", "set", "").isErr()); + + // Imitate the upstream growing a scan, AND simulate the user + // retrying. To bypass the negative cache without a record edit, + // construct a fresh service: this models the next-launch case + // where the user reopens the app and the image now exists. (Within + // a single session, only an edit to the record clears the cache, + // which is the correct UX - we don't want a network round-trip on + // every click for cards we already know have no upstream image.) + source.ok = true; + source.url = "https://example.com/late.png"; + http.body = "LATE-bytes"; + + // Drop the disk negative manually to simulate a scenario where + // the cache was cleared (e.g. the user manually wiped the cache + // directory). In production code paths, an edit to the record is + // the standard invalidation; both routes converge on the same + // expected behavior: a fresh successful lookup. + disk.entries.clear(); + + CardPreviewService svc2{http, &disk}; + svc2.registerModule(module); + const auto out = svc2.fetchPreviewBytes(Game::Magic, "Card", "set", ""); + REQUIRE(out.isOk()); + CHECK(out.value() == "LATE-bytes"); + } + + TEST_CASE("fetchImageBytesByUrl caches by URL too (fallback card-back)") { + // The fallback card-back image is fetched via fetchImageBytesByUrl + // for every card without a preview; caching by URL makes the second + // fallback effectively free. + FixedHttpClient http; + http.body = "card-back-bytes"; + CardPreviewService svc{http}; + + const auto first = svc.fetchImageBytesByUrl("https://cdn.example/back.png"); + REQUIRE(first.isOk()); + CHECK(http.calls == 1); + + http.body = "stale"; + const auto second = svc.fetchImageBytesByUrl("https://cdn.example/back.png"); + REQUIRE(second.isOk()); + CHECK(second.value() == "card-back-bytes"); + CHECK(http.calls == 1); + } +} + +TEST_SUITE("CardPreviewService::detectFirstPrint") { + TEST_CASE("routes auto-detect to registered source") { + FakeSource source; + source.detectedPrint = {"LOB-005", "Secret Rare"}; + FakeGameModule module; + module.gameId = Game::YuGiOh; + module.preview = &source; + + FixedHttpClient http; + CardPreviewService svc{http}; + svc.registerModule(module); + + const auto out = svc.detectFirstPrint(Game::YuGiOh, "Dark Magician", "Legend of Blue Eyes White Dragon"); + REQUIRE(out.isOk()); + CHECK(out.value().setNo == "LOB-005"); + CHECK(out.value().rarity == "Secret Rare"); + CHECK(source.detectLastName == "Dark Magician"); + CHECK(source.detectLastSetId == "Legend of Blue Eyes White Dragon"); + } + + TEST_CASE("returns explicit error when game does not enable auto-detect") { + FakeSource source; + source.allowAutoDetect = false; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + CardPreviewService svc{http}; + svc.registerModule(module); + + const auto out = svc.detectFirstPrint(Game::Magic, "Any", "Any Set"); + CHECK(out.isErr()); + CHECK(out.error().find("not enabled") != std::string::npos); + } +} + +TEST_SUITE("CardPreviewService::detectPrintVariants") { + TEST_CASE("routes variant listing to registered source") { + FakeSource source; + source.detectedPrint = {"LOB-005", "Secret Rare"}; + FakeGameModule module; + module.gameId = Game::YuGiOh; + module.preview = &source; + + FixedHttpClient http; + CardPreviewService svc{http}; + svc.registerModule(module); + + const auto out = svc.detectPrintVariants(Game::YuGiOh, "Dark Magician", + "Legend of Blue Eyes White Dragon"); + REQUIRE(out.isOk()); + REQUIRE(out.value().size() == 1); + CHECK(out.value()[0].setNo == "LOB-005"); + CHECK(out.value()[0].rarity == "Secret Rare"); + } + + TEST_CASE("detectPrintVariants returns error when game does not enable auto-detect") { + FakeSource source; + source.allowAutoDetect = false; + FakeGameModule module; + module.gameId = Game::Magic; + module.preview = &source; + + FixedHttpClient http; + CardPreviewService svc{http}; + svc.registerModule(module); + + const auto out = svc.detectPrintVariants(Game::Magic, "Any", "Any Set"); + CHECK(out.isErr()); + CHECK(out.error().find("not enabled") != std::string::npos); + } +} diff --git a/tests/card_sorter_tests.cpp b/tests/card_sorter_tests.cpp index 84c253a..6fdb066 100644 --- a/tests/card_sorter_tests.cpp +++ b/tests/card_sorter_tests.cpp @@ -8,6 +8,7 @@ #include "ccm/domain/Enums.hpp" #include "ccm/domain/MagicCard.hpp" #include "ccm/domain/PokemonCard.hpp" +#include "ccm/domain/YuGiOhCard.hpp" #include "ccm/domain/Set.hpp" #include "ccm/services/CardSorter.hpp" @@ -59,6 +60,22 @@ PokemonCard pc(std::uint32_t id, std::string name, return c; } +YuGiOhCard yc(std::uint32_t id, std::string name, + std::string setName, std::string releaseDate, + std::string setNo = "", + std::string rarity = "", + std::uint8_t amount = 1) { + YuGiOhCard c; + c.id = id; + c.name = std::move(name); + c.set.name = std::move(setName); + c.set.releaseDate = std::move(releaseDate); + c.setNo = std::move(setNo); + c.rarity = std::move(rarity); + c.amount = amount; + return c; +} + std::vector ids(const std::vector& v) { std::vector out; out.reserve(v.size()); @@ -73,6 +90,13 @@ std::vector ids(const std::vector& v) { return out; } +std::vector ids(const std::vector& v) { + std::vector out; + out.reserve(v.size()); + for (const auto& c : v) out.push_back(c.id); + return out; +} + } // namespace TEST_SUITE("CardSorter - Magic columns") { @@ -246,3 +270,15 @@ TEST_SUITE("CardSorter - empty / single-element inputs are no-ops") { CHECK(v.front().id == 42); } } + +TEST_SUITE("CardSorter - YuGiOh columns") { + TEST_CASE("Amount sorts numerically") { + std::vector v = { + yc(1, "a", "X", "2000/01/01", "", "", 9), + yc(2, "b", "X", "2000/01/01", "", "", 11), + yc(3, "c", "X", "2000/01/01", "", "", 1), + }; + sortYuGiOhCards(v, YuGiOhSortColumn::Amount, /*ascending=*/true); + CHECK(ids(v) == std::vector{3, 1, 2}); + } +} diff --git a/tests/domain_json_tests.cpp b/tests/domain_json_tests.cpp index 6a72031..9e0da50 100644 --- a/tests/domain_json_tests.cpp +++ b/tests/domain_json_tests.cpp @@ -4,6 +4,7 @@ #include "ccm/domain/Enums.hpp" #include "ccm/domain/MagicCard.hpp" #include "ccm/domain/PokemonCard.hpp" +#include "ccm/domain/YuGiOhCard.hpp" #include "ccm/domain/Set.hpp" #include @@ -19,6 +20,9 @@ TEST_SUITE("domain enums round-trip JSON as strings") { nlohmann::json j2 = "Pokemon"; CHECK(j2.get() == Game::Pokemon); + nlohmann::json jYgo = "YuGiOh"; + CHECK(jYgo.get() == Game::YuGiOh); + nlohmann::json j3 = Theme::Dark; CHECK(j3.get() == "Dark"); CHECK(j3.get() == Theme::Dark); @@ -121,3 +125,32 @@ TEST_SUITE("Configuration JSON matches Rust serde aliases") { CHECK(back == cfg); } } + +TEST_SUITE("YuGiOhCard JSON") { + TEST_CASE("round-trips with setNo and rarity fields") { + YuGiOhCard c; + c.id = 77; + c.amount = 2; + c.name = "Blue-Eyes White Dragon"; + c.set = Set{"SDK-001", "Starter Deck Kaiba", "2002/03/29"}; + c.setNo = "SDK-001"; + c.rarity = "Ultra Rare"; + c.rarityCode = "(UR)"; + c.note = "classic"; + c.images = {"77+starter+blue-eyes+0.png"}; + c.language = Language::English; + c.condition = Condition::NearMint; + c.firstEdition = true; + c.signed_ = false; + c.altered = false; + + nlohmann::json j = c; + CHECK(j.at("setNo") == "SDK-001"); + CHECK(j.at("rarity") == "Ultra Rare"); + CHECK(j.at("rarityCode") == "(UR)"); + CHECK(j.at("signed") == false); + + const YuGiOhCard back = j.get(); + CHECK(back == c); + } +} diff --git a/tests/local_preview_byte_cache_tests.cpp b/tests/local_preview_byte_cache_tests.cpp new file mode 100644 index 0000000..874199c --- /dev/null +++ b/tests/local_preview_byte_cache_tests.cpp @@ -0,0 +1,293 @@ +#include + +// LocalPreviewByteCache is the only ccm_core test in this binary that +// exercises the real filesystem - by design. The adapter's reason for +// existing is to translate IPreviewByteCache calls into actual on-disk +// state (binary payloads, sidecar key files, mtime-driven LRU eviction +// via std::filesystem), and stubbing those primitives just to test the +// in-memory bookkeeping would defeat the whole point. We pin every test +// to a fresh, unique directory under the OS temp path and clean it up +// even on assertion failure. + +#include "ccm/infra/LocalPreviewByteCache.hpp" +#include "ccm/infra/StdFileSystem.hpp" + +#include +#include +#include +#include +#include + +using namespace ccm; +namespace fs = std::filesystem; + +namespace { + +// Creates and removes a unique temp directory with strong cleanup +// guarantees. Doctest does not have RAII fixtures by default; this struct +// provides the same effect via destructor. +struct TempDir { + fs::path path; + + TempDir() { + std::random_device rd; + const auto stamp = std::chrono::steady_clock::now().time_since_epoch().count(); + path = fs::temp_directory_path() / + (std::string("ccm_preview_cache_test_") + std::to_string(stamp) + + "_" + std::to_string(rd())); + std::error_code ec; + fs::create_directories(path, ec); + } + ~TempDir() { + std::error_code ec; + fs::remove_all(path, ec); + } + + TempDir(const TempDir&) = delete; + TempDir& operator=(const TempDir&) = delete; +}; + +// Touch helper: nudges a file's mtime backwards so eviction-by-oldest is +// deterministic regardless of FS timestamp resolution. +void backdate(const fs::path& p, int seconds) { + std::error_code ec; + auto t = fs::last_write_time(p, ec); + if (ec) return; + fs::last_write_time(p, t - std::chrono::seconds(seconds), ec); +} + +} // namespace + +TEST_SUITE("LocalPreviewByteCache") { + TEST_CASE("store then load round-trips bytes verbatim") { + TempDir td; + StdFileSystem fs; + LocalPreviewByteCache cache(fs, td.path); + + const std::string key = "magic|Lightning Bolt|lea|161"; + const std::string body = std::string("\x89PNG\r\n\x1a\n", 8) + std::string(2048, '\xab'); + + cache.store(key, body); + const auto loaded = cache.load(key); + REQUIRE(loaded.kind == IPreviewByteCache::HitKind::Hit); + CHECK(loaded.payload == body); + } + + TEST_CASE("missing key is a clean miss, not an error") { + TempDir td; + StdFileSystem fs; + LocalPreviewByteCache cache(fs, td.path); + + CHECK(cache.load("never-stored").kind == IPreviewByteCache::HitKind::Miss); + } + + TEST_CASE("empty payload is silently skipped") { + // Empty would be an indistinguishable miss anyway, and writing it + // would waste an inode. The contract is: we treat it as a no-op. + TempDir td; + StdFileSystem fs; + LocalPreviewByteCache cache(fs, td.path); + + cache.store("k", ""); + CHECK(cache.load("k").kind == IPreviewByteCache::HitKind::Miss); + CHECK(cache.currentSizeBytes() == 0); + } + + TEST_CASE("hash collision check via sidecar mismatch is treated as a miss") { + // We fake a collision by writing the same hash file with a wrong + // sidecar key. Even though the .bin is present, load() must + // reject it - otherwise we'd serve the wrong card's bytes, which + // is much worse than re-fetching. + TempDir td; + StdFileSystem fs; + LocalPreviewByteCache cache(fs, td.path); + + cache.store("real-key", "REAL"); + // Find the .idx and corrupt the key inside. + for (const auto& entry : fs::directory_iterator(td.path)) { + if (entry.path().extension() == ".idx") { + std::error_code ec; + fs::remove(entry.path(), ec); + StdFileSystem io; + (void)io.writeText(entry.path(), "different-key"); + break; + } + } + + CHECK(cache.load("real-key").kind == IPreviewByteCache::HitKind::Miss); + } + + TEST_CASE("survives an adapter restart over the same directory") { + // The whole point of the disk tier is persistence. Exercise it by + // dropping one cache instance and bringing up a new one against + // the same path - the previously-stored entry must come back. + TempDir td; + StdFileSystem fs; + const std::string key = "ygo|Dark Magician|SDY|6|1E"; + const std::string body(4096, 'D'); + + { + LocalPreviewByteCache writer(fs, td.path); + writer.store(key, body); + } + { + LocalPreviewByteCache reader(fs, td.path); + const auto loaded = reader.load(key); + REQUIRE(loaded.kind == IPreviewByteCache::HitKind::Hit); + CHECK(loaded.payload == body); + } + } + + TEST_CASE("storeNegative round-trips as NegativeHit, not a miss and not a payload") { + // Negative entries are the "we asked, the upstream said no image" + // marker. They must round-trip as their own load kind so the + // service can short-circuit without re-resolving the URL. + TempDir td; + StdFileSystem fs; + LocalPreviewByteCache cache(fs, td.path); + + const std::string key = "magic|Bogus Card|lea|"; + cache.storeNegative(key); + + const auto loaded = cache.load(key); + CHECK(loaded.kind == IPreviewByteCache::HitKind::NegativeHit); + CHECK(loaded.payload.empty()); + CHECK(cache.currentSizeBytes() == 0); // negatives don't take real space + } + + TEST_CASE("negative entries survive an adapter restart") { + // The "warm restart, same negative answer instantly" property is + // the whole reason negatives go to disk. Verify it explicitly so + // it can never silently regress. + TempDir td; + StdFileSystem fs; + const std::string key = "ygo|Truly Missing|SET|999||UE"; + + { + LocalPreviewByteCache writer(fs, td.path); + writer.storeNegative(key); + } + { + LocalPreviewByteCache reader(fs, td.path); + CHECK(reader.load(key).kind == IPreviewByteCache::HitKind::NegativeHit); + } + } + + TEST_CASE("a later positive store overwrites an earlier negative entry") { + // Upstream eventually grows a scan: the next positive store has + // to flip the entry. If the .neg lingered we'd keep returning a + // NegativeHit even after a successful network resolution, which + // would defeat the recovery story. + TempDir td; + StdFileSystem fs; + LocalPreviewByteCache cache(fs, td.path); + + const std::string key = "magic|Late|lea|"; + const std::string body = std::string(1024, 'L'); + + cache.storeNegative(key); + REQUIRE(cache.load(key).kind == IPreviewByteCache::HitKind::NegativeHit); + + cache.store(key, body); + const auto loaded = cache.load(key); + REQUIRE(loaded.kind == IPreviewByteCache::HitKind::Hit); + CHECK(loaded.payload == body); + } + + TEST_CASE("storeNegative for an existing positive entry replaces the bytes") { + // Symmetric to the previous case: an upstream that *had* a scan + // and now reports "no image" (e.g. file deleted) flips the entry + // back to negative. The .bin must go away so it doesn't keep + // serving stale bytes and doesn't keep wasting cap space. + TempDir td; + StdFileSystem fs; + LocalPreviewByteCache cache(fs, td.path); + + const std::string key = "magic|Recall|lea|"; + cache.store(key, std::string(2048, 'R')); + REQUIRE(cache.currentSizeBytes() > 0); + + cache.storeNegative(key); + const auto loaded = cache.load(key); + CHECK(loaded.kind == IPreviewByteCache::HitKind::NegativeHit); + CHECK(cache.currentSizeBytes() == 0); + } + + TEST_CASE("collision check applies to negative entries too") { + // A hash collision must not let a negative entry stored under + // key A "leak" into a load of key B. We fake the collision by + // rewriting the .idx sidecar with a different key. + TempDir td; + StdFileSystem fs; + LocalPreviewByteCache cache(fs, td.path); + + cache.storeNegative("real-key"); + for (const auto& entry : fs::directory_iterator(td.path)) { + if (entry.path().extension() == ".idx") { + std::error_code ec; + fs::remove(entry.path(), ec); + StdFileSystem io; + (void)io.writeText(entry.path(), "different-key"); + break; + } + } + CHECK(cache.load("real-key").kind == IPreviewByteCache::HitKind::Miss); + } + + TEST_CASE("evicts oldest entry when the size cap would be exceeded") { + TempDir td; + StdFileSystem fs; + // Cap is just big enough to hold 2 of the 1 KiB payloads but not 3. + constexpr std::size_t kCap = 2'400; + LocalPreviewByteCache cache(fs, td.path, kCap); + + const std::string a(1024, 'a'); + const std::string b(1024, 'b'); + const std::string c(1024, 'c'); + + cache.store("k-a", a); + // Make 'a' look definitively older than 'b' regardless of the FS's + // mtime resolution (some filesystems round to whole seconds, which + // can otherwise make the test flaky). + for (const auto& entry : fs::directory_iterator(td.path)) { + backdate(entry.path(), /*seconds=*/10); + } + + cache.store("k-b", b); + cache.store("k-c", c); // would push us to ~3 KiB; 'a' must go. + + CHECK(cache.load("k-a").kind == IPreviewByteCache::HitKind::Miss); + CHECK(cache.load("k-b").kind == IPreviewByteCache::HitKind::Hit); + CHECK(cache.load("k-c").kind == IPreviewByteCache::HitKind::Hit); + CHECK(cache.currentSizeBytes() <= kCap); + } + + TEST_CASE("a hit refreshes mtime so the entry is not the next eviction victim") { + // Without the touch-on-load behavior, an entry that the user + // re-views constantly would still age out simply because newer + // entries piled on top. Verify we promote on hit. + TempDir td; + StdFileSystem fs; + constexpr std::size_t kCap = 2'400; + LocalPreviewByteCache cache(fs, td.path, kCap); + + const std::string a(1024, 'a'); + const std::string b(1024, 'b'); + const std::string c(1024, 'c'); + + cache.store("k-a", a); + cache.store("k-b", b); + // Backdate both so the upcoming touch on 'a' is unambiguously newer. + for (const auto& entry : fs::directory_iterator(td.path)) { + backdate(entry.path(), /*seconds=*/10); + } + + REQUIRE(cache.load("k-a").kind == IPreviewByteCache::HitKind::Hit); // touches 'a' to "now". + cache.store("k-c", c); // forces an eviction. + + // 'a' was the youngest after the touch, so 'b' should be the victim. + CHECK(cache.load("k-b").kind == IPreviewByteCache::HitKind::Miss); + CHECK(cache.load("k-a").kind == IPreviewByteCache::HitKind::Hit); + CHECK(cache.load("k-c").kind == IPreviewByteCache::HitKind::Hit); + } +} diff --git a/tests/magic_card_preview_source_tests.cpp b/tests/magic_card_preview_source_tests.cpp index ccc1453..f86823a 100644 --- a/tests/magic_card_preview_source_tests.cpp +++ b/tests/magic_card_preview_source_tests.cpp @@ -64,38 +64,47 @@ TEST_SUITE("MagicCardPreviewSource::parseResponse") { CHECK(out.value() == "https://img.scryfall.io/normal.jpg"); } - TEST_CASE("empty data array returns an error") { + TEST_CASE("empty data array is classified as NotFound (negative-cacheable)") { const auto out = MagicCardPreviewSource::parseResponse(R"({"data":[]})"); - CHECK(out.isErr()); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::NotFound); } - TEST_CASE("missing data array returns an error") { + TEST_CASE("missing data array is classified as Transient (schema deviation)") { + // No `data` array at all means the API contract failed - this is + // not the user's record being weird, it's the upstream not + // talking to us right now. const auto out = MagicCardPreviewSource::parseResponse(R"({"meta":{}})"); - CHECK(out.isErr()); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::Transient); } - TEST_CASE("entry without image_uris returns an error (double-faced cards)") { + TEST_CASE("entry without image_uris is classified as NotFound (double-faced cards)") { const std::string json = R"({ "data": [ {"name":"DoubleFace","card_faces":[{"image_uris":{"normal":"x"}}]} ] })"; const auto out = MagicCardPreviewSource::parseResponse(json); - CHECK(out.isErr()); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::NotFound); } - TEST_CASE("invalid JSON returns an error") { + TEST_CASE("invalid JSON is classified as Transient") { const auto out = MagicCardPreviewSource::parseResponse("{not json"); - CHECK(out.isErr()); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::Transient); } } TEST_SUITE("MagicCardPreviewSource::fetchImageUrl") { - TEST_CASE("network error is surfaced as a Result error") { + TEST_CASE("network error is surfaced as Transient") { FixedHttpClient http; http.ok = false; MagicCardPreviewSource src{http}; - CHECK(src.fetchImageUrl("Lightning Bolt", "lea", "").isErr()); + const auto out = src.fetchImageUrl("Lightning Bolt", "lea", ""); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::Transient); } TEST_CASE("network success is parsed end-to-end and uses the encoded URL") { diff --git a/tests/pokemon_card_preview_source_tests.cpp b/tests/pokemon_card_preview_source_tests.cpp index ffb6b3a..1c06f81 100644 --- a/tests/pokemon_card_preview_source_tests.cpp +++ b/tests/pokemon_card_preview_source_tests.cpp @@ -85,34 +85,40 @@ TEST_SUITE("PokemonCardPreviewSource::parseResponse") { CHECK(out.value() == "https://small.only/img.png"); } - TEST_CASE("empty data array returns an error") { + TEST_CASE("empty data array is classified as NotFound (negative-cacheable)") { const auto out = PokemonCardPreviewSource::parseResponse(R"({"data":[]})"); - CHECK(out.isErr()); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::NotFound); } - TEST_CASE("missing data array returns an error") { + TEST_CASE("missing data array is classified as Transient (schema deviation)") { const auto out = PokemonCardPreviewSource::parseResponse(R"({"meta":{}})"); - CHECK(out.isErr()); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::Transient); } - TEST_CASE("entry without images returns an error") { + TEST_CASE("entry without images is classified as NotFound") { const auto out = PokemonCardPreviewSource::parseResponse( R"({"data":[{"name":"Pikachu"}]})"); - CHECK(out.isErr()); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::NotFound); } - TEST_CASE("invalid JSON returns an error") { + TEST_CASE("invalid JSON is classified as Transient") { const auto out = PokemonCardPreviewSource::parseResponse("{not json"); - CHECK(out.isErr()); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::Transient); } } TEST_SUITE("PokemonCardPreviewSource::fetchImageUrl") { - TEST_CASE("network error is surfaced as a Result error") { + TEST_CASE("network error is surfaced as Transient") { FixedHttpClient http; http.ok = false; PokemonCardPreviewSource src{http}; - CHECK(src.fetchImageUrl("Pikachu", "base1", "").isErr()); + const auto out = src.fetchImageUrl("Pikachu", "base1", ""); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::Transient); } TEST_CASE("network success is parsed end-to-end and uses the encoded URL") { diff --git a/tests/set_service_tests.cpp b/tests/set_service_tests.cpp index 70739f8..0576cfb 100644 --- a/tests/set_service_tests.cpp +++ b/tests/set_service_tests.cpp @@ -26,7 +26,11 @@ public: Game gameId; explicit FakeGameModule(Game id) : gameId(id) {} Game id() const noexcept override { return gameId; } - std::string dirName() const override { return gameId == Game::Magic ? "magic" : "pokemon"; } + std::string dirName() const override { + if (gameId == Game::Magic) return "magic"; + if (gameId == Game::Pokemon) return "pokemon"; + return "yugioh"; + } std::string displayName() const override { return dirName(); } ISetSource& setSource() override { return source; } }; @@ -116,4 +120,29 @@ TEST_SUITE("SetService") { CHECK(magic.source.calls == 1); CHECK(pokemon.source.calls == 1); } + + TEST_CASE("YuGiOh module routes independently when all games are registered") { + InMemSetRepo repo; + SetService svc{repo}; + + FakeGameModule magic{Game::Magic}; + magic.source.result = Result>::ok({{"lea", "Alpha", "1993/08/05"}}); + FakeGameModule pokemon{Game::Pokemon}; + pokemon.source.result = Result>::ok({{"base1", "Base", "1999/01/09"}}); + FakeGameModule yugioh{Game::YuGiOh}; + yugioh.source.result = Result>::ok({{"LOB", "Legend of Blue Eyes", "2002/03/08"}}); + + svc.registerModule(&magic); + svc.registerModule(&pokemon); + svc.registerModule(&yugioh); + + REQUIRE(svc.updateSets(Game::Magic).isOk()); + REQUIRE(svc.updateSets(Game::Pokemon).isOk()); + const auto ygo = svc.updateSets(Game::YuGiOh); + REQUIRE(ygo.isOk()); + CHECK(ygo.value().front().id == "LOB"); + CHECK(magic.source.calls == 1); + CHECK(pokemon.source.calls == 1); + CHECK(yugioh.source.calls == 1); + } } diff --git a/tests/yugioh_card_preview_source_tests.cpp b/tests/yugioh_card_preview_source_tests.cpp new file mode 100644 index 0000000..ba03206 --- /dev/null +++ b/tests/yugioh_card_preview_source_tests.cpp @@ -0,0 +1,613 @@ +#include + +#include "ccm/games/yugioh/YuGiOhCardPreviewSource.hpp" +#include "ccm/ports/IHttpClient.hpp" +#include "ccm/util/YuGiOhPrintingSlot.hpp" + +#include +#include +#include +#include +#include + +using namespace ccm; + +namespace { + +// Single-shot HTTP fake matching the other game tests. Captures the last URL +// requested and returns a configurable body / failure flag. +class FixedHttpClient final : public IHttpClient { +public: + std::string lastUrl; + std::string body; + bool ok = true; + Result get(std::string_view url) override { + lastUrl = std::string(url); + return ok ? Result::ok(body) + : Result::err("offline"); + } +}; + +// Routing fake used to simulate the two-step Yugipedia -> YGOPRODeck flow. +// Both bodies are queued by URL substring so order-of-call assertions stay +// readable in the tests. Unmatched URLs return a 404-equivalent error so +// regressions are obvious instead of silently passing. +class RoutingHttpClient final : public IHttpClient { +public: + std::string yugipediaBody; + std::string ygoprodeckBody; + bool yugipediaOk = true; + bool ygoprodeckOk = true; + std::vector calls; + Result get(std::string_view url) override { + std::string s(url); + calls.push_back(s); + if (s.find("yugipedia.com") != std::string::npos) { + return yugipediaOk ? Result::ok(yugipediaBody) + : Result::err("yugipedia offline"); + } + if (s.find("ygoprodeck.com") != std::string::npos) { + return ygoprodeckOk ? Result::ok(ygoprodeckBody) + : Result::err("ygoprodeck offline"); + } + return Result::err("RoutingHttpClient: unrouted URL"); + } +}; + +} // namespace + +TEST_SUITE("ygoPrintingSlotsMatch") { + TEST_CASE("matches CCM composed setNo to YGOPRODeck set_code with region infix") { + CHECK(ygoPrintingSlotsMatch("SOD-015", "SOD-EN015")); + CHECK(ygoPrintingSlotsMatch("sod-015", "SOD-EN015")); + CHECK_FALSE(ygoPrintingSlotsMatch("SOD-015", "SOD-EN016")); + CHECK_FALSE(ygoPrintingSlotsMatch("SOD-015", "IOC-EN015")); + } + + TEST_CASE("matches German-style and digits-only suffix variants") { + CHECK(ygoPrintingSlotsMatch("LOB-005", "LOB-DE005")); + CHECK(ygoPrintingSlotsMatch("RA04-001", "RA04-EN001")); + } + + TEST_CASE("detects European alternate numbering suffix E+digit vs EN/DE") { + CHECK(ygoLikelyEuropeanRegionalSetCode("LOB-E003")); + CHECK_FALSE(ygoLikelyEuropeanRegionalSetCode("LOB-EN005")); + CHECK_FALSE(ygoLikelyEuropeanRegionalSetCode("LOB-005")); + CHECK_FALSE(ygoLikelyEuropeanRegionalSetCode("LOB-DE005")); + CHECK_FALSE(ygoLikelyEuropeanRegionalSetCode("SOD-EN015")); + } +} + +TEST_SUITE("YuGiOhCardPreviewSource::normalizeName") { + TEST_CASE("strips whitespace and policy-banned punctuation") { + // Yugipedia's image policy: whitespace and a fixed punctuation set + // (#,.:'"?!&@%=[]<>/\- and friends) get dropped from the slug. + CHECK(YuGiOhCardPreviewSource::normalizeName("Blue-Eyes White Dragon") + == "BlueEyesWhiteDragon"); + CHECK(YuGiOhCardPreviewSource::normalizeName("Dark Magician") == "DarkMagician"); + CHECK(YuGiOhCardPreviewSource::normalizeName("Sasuke Samurai #4") + == "SasukeSamurai4"); + CHECK(YuGiOhCardPreviewSource::normalizeName("Don't Talk to Me!") + == "DontTalktoMe"); + } +} + +TEST_SUITE("YuGiOhCardPreviewSource::rarityCodeFor") { + TEST_CASE("maps the dialog's rarity options to Yugipedia codes") { + CHECK(YuGiOhCardPreviewSource::rarityCodeFor("Common") == "C"); + CHECK(YuGiOhCardPreviewSource::rarityCodeFor("Rare") == "R"); + CHECK(YuGiOhCardPreviewSource::rarityCodeFor("Super Rare") == "SR"); + CHECK(YuGiOhCardPreviewSource::rarityCodeFor("Ultra Rare") == "UR"); + CHECK(YuGiOhCardPreviewSource::rarityCodeFor("Secret Rare") == "ScR"); + CHECK(YuGiOhCardPreviewSource::rarityCodeFor("Quarter Century Secret Rare") + == "QCScR"); + } + TEST_CASE("returns empty string for unknown rarity names") { + // Unknown rarity should fall through to the rarity-less filename + // pattern, not throw and not return a misleading code. + CHECK(YuGiOhCardPreviewSource::rarityCodeFor("").empty()); + CHECK(YuGiOhCardPreviewSource::rarityCodeFor("Mythic Cosmic Rare").empty()); + } +} + +TEST_SUITE("YuGiOhCardPreviewSource::extractSetCode") { + TEST_CASE("returns everything before the first dash") { + CHECK(YuGiOhCardPreviewSource::extractSetCode("LOB-005") == "LOB"); + CHECK(YuGiOhCardPreviewSource::extractSetCode("LOB-DE005") == "LOB"); + CHECK(YuGiOhCardPreviewSource::extractSetCode("RA04-EN001") == "RA04"); + } + TEST_CASE("returns the input unchanged when no dash is present") { + CHECK(YuGiOhCardPreviewSource::extractSetCode("LOB") == "LOB"); + CHECK(YuGiOhCardPreviewSource::extractSetCode("").empty()); + } +} + +TEST_SUITE("YuGiOhCardPreviewSource::buildCandidateFilenames") { + TEST_CASE("primary candidate uses the printed edition + EN region + .png") { + const auto names = YuGiOhCardPreviewSource::buildCandidateFilenames( + "Blue-Eyes White Dragon", "LOB", "UR", /*firstEdition=*/false); + REQUIRE_FALSE(names.empty()); + // Highest-priority filename: Yugipedia's modern English/UE/.png + // shape, which is what most LOB-era reprints actually use. + CHECK(names.front() == "BlueEyesWhiteDragon-LOB-EN-UR-UE.png"); + } + TEST_CASE("includes 1E when the user marked the card as first edition") { + const auto names = YuGiOhCardPreviewSource::buildCandidateFilenames( + "Dark Magician", "SDY", "UR", /*firstEdition=*/true); + REQUIRE_FALSE(names.empty()); + CHECK(names.front() == "DarkMagician-SDY-EN-UR-1E.png"); + } + TEST_CASE("covers EN/NA/EU/AU regions and both png/jpg extensions") { + const auto names = YuGiOhCardPreviewSource::buildCandidateFilenames( + "Blue-Eyes White Dragon", "SDK", "UR", /*firstEdition=*/false); + // Sanity: the standard SDK Blue-Eyes scan is hosted at NA-UR-UE.png, + // so the candidate list must include that exact filename. + bool foundNaUe = false; + for (const auto& n : names) { + if (n == "BlueEyesWhiteDragon-SDK-NA-UR-UE.png") foundNaUe = true; + } + CHECK(foundNaUe); + } + TEST_CASE("falls back to a rarity-less pattern for unknown rarities") { + const auto names = YuGiOhCardPreviewSource::buildCandidateFilenames( + "Token Card", "TKN", /*rarityCode=*/"", /*firstEdition=*/false); + REQUIRE_FALSE(names.empty()); + // Rarity slot omitted -> filename has only one dash before edition. + CHECK(names.front() == "TokenCard-TKN-EN-UE.png"); + } + TEST_CASE("returns empty list when the slug or set code is empty") { + // Don't waste an HTTP call on cards that haven't been filled in yet. + CHECK(YuGiOhCardPreviewSource::buildCandidateFilenames("", "LOB", "UR", false).empty()); + CHECK(YuGiOhCardPreviewSource::buildCandidateFilenames("Dark Magician", "", "UR", false).empty()); + } +} + +TEST_SUITE("YuGiOhCardPreviewSource::buildYugipediaQueryUrl") { + TEST_CASE("encodes filenames into a single MediaWiki batch query") { + const std::vector names = { + "BlueEyesWhiteDragon-LOB-EN-UR-UE.png", + "BlueEyesWhiteDragon-LOB-NA-UR-UE.png", + }; + const std::string url = YuGiOhCardPreviewSource::buildYugipediaQueryUrl(names); + CHECK(url.find("https://yugipedia.com/api.php") == 0); + CHECK(url.find("action=query") != std::string::npos); + CHECK(url.find("prop=imageinfo") != std::string::npos); + CHECK(url.find("iiprop=url") != std::string::npos); + // The two filenames are joined with `|` (URL-encoded as %7C) and + // each one is namespaced with `File:` (encoded `File%3A`). + CHECK(url.find("File%3ABlueEyesWhiteDragon-LOB-EN-UR-UE.png") != std::string::npos); + CHECK(url.find("%7CFile%3ABlueEyesWhiteDragon-LOB-NA-UR-UE.png") != std::string::npos); + } +} + +TEST_SUITE("YuGiOhCardPreviewSource::parseYugipediaResponse") { + TEST_CASE("returns the URL of the highest-priority filename that exists") { + // MediaWiki returns one entry per requested title. Missing files come + // back with `"missing": ""` and no imageinfo; existing files carry an + // imageinfo[0].url. Order matters: we must walk filenameOrder and + // pick the first entry that resolved, not whichever MediaWiki listed + // first in its hash-keyed `pages` object. + const std::string body = R"({ + "query":{"pages":{ + "-1":{"title":"File:DarkMagician-SDY-EN-UR-1E.png","missing":""}, + "96018":{"title":"File:DarkMagician-SDY-NA-UR-UE.png", + "imageinfo":[{"url":"https://ms.yugipedia.com/abc/DarkMagician-SDY-NA-UR-UE.png"}]}, + "99999":{"title":"File:DarkMagician-SDY-EU-UR-UE.png", + "imageinfo":[{"url":"https://ms.yugipedia.com/eu/DarkMagician-SDY-EU-UR-UE.png"}]} + }} + })"; + const std::vector order = { + "DarkMagician-SDY-EN-UR-UE.png", // missing from response entirely + "DarkMagician-SDY-EN-UR-1E.png", // present but `missing` + "DarkMagician-SDY-NA-UR-UE.png", // first existing one + "DarkMagician-SDY-EU-UR-UE.png", + }; + const auto out = YuGiOhCardPreviewSource::parseYugipediaResponse(body, order); + REQUIRE(out.isOk()); + CHECK(out.value() == "https://ms.yugipedia.com/abc/DarkMagician-SDY-NA-UR-UE.png"); + } + + TEST_CASE("pure-miss response is classified as NotFound") { + // Pure-miss response: every page is marked `missing`. The caller + // (fetchImageUrl) treats this as "no Yugipedia scan" and triggers + // the YGOPRODeck fallback. Yugipedia having explicitly answered + // "no such file" is a clean negative (the upstream contract was + // honored), not a transient failure. + const std::string body = R"({ + "query":{"pages":{ + "-1":{"title":"File:Whatever-XYZ-EN-UR-UE.png","missing":""}, + "-2":{"title":"File:Whatever-XYZ-NA-UR-UE.png","missing":""} + }} + })"; + const auto out = YuGiOhCardPreviewSource::parseYugipediaResponse( + body, {"Whatever-XYZ-EN-UR-UE.png", "Whatever-XYZ-NA-UR-UE.png"}); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::NotFound); + } + + TEST_CASE("malformed JSON is classified as Transient") { + const auto out = YuGiOhCardPreviewSource::parseYugipediaResponse( + "{not json", {"Anything-XYZ-EN-UR-UE.png"}); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::Transient); + } +} + +TEST_SUITE("YuGiOhCardPreviewSource::parseFirstPrint") { + TEST_CASE("returns first print for preferred set name") { + const std::string json = R"({ + "data":[ + {"card_sets":[ + {"set_name":"Metal Raiders","set_code":"MRD-001","set_rarity":"Ultra Rare"}, + {"set_name":"Legend of Blue Eyes White Dragon","set_code":"LOB-001","set_rarity":"Ultra Rare"} + ]} + ] + })"; + const auto out = YuGiOhCardPreviewSource::parseFirstPrint( + json, "Legend of Blue Eyes White Dragon"); + REQUIRE(out.isOk()); + CHECK(out.value().setNo == "LOB-001"); + CHECK(out.value().rarity == "Ultra Rare"); + } +} + +TEST_SUITE("YuGiOhCardPreviewSource::parsePrintVariants") { + TEST_CASE("lists distinct set_code entries for an exact name in one display set") { + const std::string json = R"({ + "data":[ + {"name":"Test Goblin", + "card_sets":[ + {"set_name":"Mega Pack","set_code":"MP21-EN001","set_rarity":"Common"}, + {"set_name":"Mega Pack","set_code":"MP21-EN002","set_rarity":"Rare"} + ]} + ] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Mega Pack", "Test Goblin"); + REQUIRE(out.isOk()); + REQUIRE(out.value().size() == 2); + CHECK(out.value()[0].setNo == "MP21-EN001"); + CHECK(out.value()[1].setNo == "MP21-EN002"); + } + + TEST_CASE("lists multiple rarities for one set_code") { + const std::string json = R"({ + "data":[ + {"name":"Odd-Eyes Pendulum Dragon", + "card_sets":[ + {"set_name":"Duelist Alliance","set_code":"DUEA-EN004","set_rarity":"Super Rare"}, + {"set_name":"Duelist Alliance","set_code":"DUEA-EN004","set_rarity":"Ultimate Rare"} + ]} + ] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Duelist Alliance", "Odd-Eyes Pendulum Dragon"); + REQUIRE(out.isOk()); + REQUIRE(out.value().size() == 2); + CHECK(out.value()[0].setNo == "DUEA-EN004"); + CHECK(out.value()[0].rarity == "Super Rare"); + CHECK(out.value()[1].setNo == "DUEA-EN004"); + CHECK(out.value()[1].rarity == "Ultimate Rare"); + } + + TEST_CASE("dedupes identical print pairs") { + const std::string json = R"({ + "data":[ + {"name":"Mirror Force", + "card_sets":[ + {"set_name":"Starter Deck","set_code":"SDY-043","set_rarity":"Super Rare"}, + {"set_name":"Starter Deck","set_code":"SDY-043","set_rarity":"Super Rare"} + ]} + ] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Starter Deck", "Mirror Force"); + REQUIRE(out.isOk()); + REQUIRE(out.value().size() == 1); + CHECK(out.value()[0].setNo == "SDY-043"); + CHECK(out.value()[0].rarity == "Super Rare"); + } +} + +// Helpers aligned with external fixture `yugioh_same_card_set_variant_tests` +// (same_card_same_set: distinct collector numbers vs distinct rarities). +[[nodiscard]] std::size_t countDistinctSetCodes(const std::vector& v) { + std::unordered_set codes; + for (const auto& p : v) { + if (!p.setNo.empty()) codes.insert(p.setNo); + } + return codes.size(); +} + +[[nodiscard]] std::size_t maxRarityVariantsPerCode(const std::vector& v) { + std::unordered_map> byCode; + for (const auto& p : v) { + if (p.setNo.empty() || p.rarity.empty()) continue; + byCode[p.setNo].insert(p.rarity); + } + std::size_t mx = 0; + for (const auto& e : byCode) { + mx = std::max(mx, e.second.size()); + } + return mx; +} + +TEST_SUITE("YuGiOhCardPreviewSource::parsePrintVariants yugioh_same_card_set_variant_tests") { + TEST_CASE("S1-001 Armed Dragon LV7 Soul of the Duelist Ultra vs Ultimate") { + const std::string json = R"({ + "data":[{ + "name":"Armed Dragon LV7", + "card_sets":[ + {"set_name":"Soul of the Duelist","set_code":"SOD-EN015","set_rarity":"Ultra Rare"}, + {"set_name":"Soul of the Duelist","set_code":"SOD-EN015","set_rarity":"Ultimate Rare"} + ] + }] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Soul of the Duelist", "Armed Dragon LV7"); + REQUIRE(out.isOk()); + CHECK(countDistinctSetCodes(out.value()) == 1); + CHECK(maxRarityVariantsPerCode(out.value()) == 2); + } + + TEST_CASE("S1-002 Horus LV8 Soul of the Duelist Ultra vs Ultimate") { + const std::string json = R"({ + "data":[{ + "name":"Horus the Black Flame Dragon LV8", + "card_sets":[ + {"set_name":"Soul of the Duelist","set_code":"SOD-EN008","set_rarity":"Ultra Rare"}, + {"set_name":"Soul of the Duelist","set_code":"SOD-EN008","set_rarity":"Ultimate Rare"} + ] + }] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Soul of the Duelist", "Horus the Black Flame Dragon LV8"); + REQUIRE(out.isOk()); + CHECK(countDistinctSetCodes(out.value()) == 1); + CHECK(maxRarityVariantsPerCode(out.value()) == 2); + } + + TEST_CASE("S1-003 Mobius Soul of the Duelist Super vs Ultimate") { + const std::string json = R"({ + "data":[{ + "name":"Mobius the Frost Monarch", + "card_sets":[ + {"set_name":"Soul of the Duelist","set_code":"SOD-EN022","set_rarity":"Super Rare"}, + {"set_name":"Soul of the Duelist","set_code":"SOD-EN022","set_rarity":"Ultimate Rare"} + ] + }] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Soul of the Duelist", "Mobius the Frost Monarch"); + REQUIRE(out.isOk()); + CHECK(countDistinctSetCodes(out.value()) == 1); + CHECK(maxRarityVariantsPerCode(out.value()) == 2); + } + + TEST_CASE("S2-001 Dark Magician Yugi's Legendary Decks three set codes") { + const std::string json = R"({ + "data":[{ + "name":"Dark Magician", + "card_sets":[ + {"set_name":"Yugi's Legendary Decks","set_code":"YGLD-ENA03","set_rarity":"Common"}, + {"set_name":"Yugi's Legendary Decks","set_code":"YGLD-ENB02","set_rarity":"Common"}, + {"set_name":"Yugi's Legendary Decks","set_code":"YGLD-ENC09","set_rarity":"Common"} + ] + }] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Yugi's Legendary Decks", "Dark Magician"); + REQUIRE(out.isOk()); + CHECK(countDistinctSetCodes(out.value()) == 3); + CHECK(maxRarityVariantsPerCode(out.value()) == 1); + } + + TEST_CASE("S2-002 Dark Magician Girl Yugi's Legendary Decks two set codes") { + const std::string json = R"({ + "data":[{ + "name":"Dark Magician Girl", + "card_sets":[ + {"set_name":"Yugi's Legendary Decks","set_code":"YGLD-ENA04","set_rarity":"Common"}, + {"set_name":"Yugi's Legendary Decks","set_code":"YGLD-ENC10","set_rarity":"Common"} + ] + }] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Yugi's Legendary Decks", "Dark Magician Girl"); + REQUIRE(out.isOk()); + CHECK(countDistinctSetCodes(out.value()) == 2); + CHECK(maxRarityVariantsPerCode(out.value()) == 1); + } + + TEST_CASE("NEG-001 duplicate rarity lines collapse to one variant") { + const std::string json = R"({ + "data":[{ + "name":"Armed Dragon LV7", + "card_sets":[ + {"set_name":"Soul of the Duelist","set_code":"SOD-EN015","set_rarity":"Ultra Rare"}, + {"set_name":"Soul of the Duelist","set_code":"SOD-EN015","set_rarity":"Ultra Rare"} + ] + }] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Soul of the Duelist", "Armed Dragon LV7"); + REQUIRE(out.isOk()); + CHECK(out.value().size() == 1); + CHECK(maxRarityVariantsPerCode(out.value()) == 1); + } + + TEST_CASE("NEG-002 duplicate set codes collapse to one collector slot") { + const std::string json = R"({ + "data":[{ + "name":"Dark Magician", + "card_sets":[ + {"set_name":"Yugi's Legendary Decks","set_code":"YGLD-ENA03","set_rarity":"Common"}, + {"set_name":"Yugi's Legendary Decks","set_code":"YGLD-ENA03","set_rarity":"Common"} + ] + }] + })"; + const auto out = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Yugi's Legendary Decks", "Dark Magician"); + REQUIRE(out.isOk()); + CHECK(countDistinctSetCodes(out.value()) == 1); + CHECK(maxRarityVariantsPerCode(out.value()) == 1); + } + + TEST_CASE("NEG-003 no cross-product merge when display set matches nothing") { + const std::string json = R"({ + "data":[{ + "name":"Dark Magician", + "card_sets":[ + {"set_name":"Legend of Blue Eyes White Dragon","set_code":"LOB-005","set_rarity":"Ultra Rare"}, + {"set_name":"Starter Deck: Yugi","set_code":"SDY-006","set_rarity":"Ultra Rare"} + ] + }] + })"; + const auto bogus = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Different Sets", "Dark Magician"); + CHECK(bogus.isErr()); + + const auto lob = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Legend of Blue Eyes White Dragon", "Dark Magician"); + REQUIRE(lob.isOk()); + REQUIRE(lob.value().size() == 1); + CHECK(lob.value()[0].setNo == "LOB-005"); + + const auto sdy = YuGiOhCardPreviewSource::parsePrintVariants( + json, "Starter Deck: Yugi", "Dark Magician"); + REQUIRE(sdy.isOk()); + REQUIRE(sdy.value().size() == 1); + CHECK(sdy.value()[0].setNo == "SDY-006"); + } +} + +TEST_SUITE("YuGiOhCardPreviewSource::fetchImageUrl") { + TEST_CASE("queries Yugipedia first and uses the per-printing scan when found") { + // Two same-passcode reprints with genuinely different art (LOB vs + // SDK Blue-Eyes). Yugipedia hosts both, so we should always pick the + // SDK one for the SDK input - no leak of the LOB scan into the SDK + // entry, which was the user-reported regression on YGOPRODeck. + RoutingHttpClient http; + http.yugipediaBody = R"({"query":{"pages":{ + "1":{"title":"File:BlueEyesWhiteDragon-SDK-NA-UR-UE.png", + "imageinfo":[{"url":"https://ms.yugipedia.com/sdk/BlueEyesWhiteDragon-SDK-NA-UR-UE.png"}]} + }}})"; + // Make the YGOPRODeck fallback obviously wrong so we can assert it + // isn't being used when Yugipedia returns a hit. + http.ygoprodeckBody = R"({"data":[{"name":"Blue-Eyes White Dragon", + "card_images":[{"image_url":"https://example.invalid/wrong.png"}], + "card_sets":[{"set_code":"SDK-001","set_rarity":"Ultra Rare"}]}]})"; + + YuGiOhCardPreviewSource src{http}; + const auto out = src.fetchImageUrl( + "Blue-Eyes White Dragon", "Starter Deck: Kaiba", "SDK-001||Ultra Rare||UE"); + REQUIRE(out.isOk()); + CHECK(out.value() == "https://ms.yugipedia.com/sdk/BlueEyesWhiteDragon-SDK-NA-UR-UE.png"); + // Verified: only the Yugipedia call was made, not the YGOPRODeck one. + REQUIRE(http.calls.size() == 1); + CHECK(http.calls.front().find("yugipedia.com") != std::string::npos); + } + + TEST_CASE("falls back to YGOPRODeck standard art when Yugipedia has no match") { + // Empty `pages` -> Yugipedia parser returns an error -> fallback + // path kicks in. This is the safety net for OCG-only or just-released + // cards that don't yet have an English scan uploaded to Yugipedia. + RoutingHttpClient http; + http.yugipediaBody = R"({"query":{"pages":{ + "-1":{"title":"File:DarkMagician-LOB-EN-UR-UE.png","missing":""} + }}})"; + http.ygoprodeckBody = R"({"data":[{"name":"Dark Magician", + "card_images":[{"image_url":"https://images.ygoprodeck.com/std-dm.jpg"}], + "card_sets":[{"set_code":"LOB-005","set_rarity":"Ultra Rare"}]}]})"; + + YuGiOhCardPreviewSource src{http}; + const auto out = src.fetchImageUrl( + "Dark Magician", "Legend of Blue Eyes White Dragon", "LOB-005||Ultra Rare||UE"); + REQUIRE(out.isOk()); + CHECK(out.value() == "https://images.ygoprodeck.com/std-dm.jpg"); + // Two HTTP calls: Yugipedia first, YGOPRODeck second. + REQUIRE(http.calls.size() == 2); + CHECK(http.calls[0].find("yugipedia.com") != std::string::npos); + CHECK(http.calls[1].find("ygoprodeck.com") != std::string::npos); + } + + TEST_CASE("falls back when Yugipedia errors out (transient HTTP failure)") { + // We don't want a Yugipedia outage to leave the user without any + // preview at all - YGOPRODeck's generic art is acceptable degraded + // behavior. + RoutingHttpClient http; + http.yugipediaOk = false; + http.ygoprodeckBody = R"({"data":[{"name":"Dark Magician", + "card_images":[{"image_url":"https://images.ygoprodeck.com/std-dm.jpg"}]}]})"; + + YuGiOhCardPreviewSource src{http}; + const auto out = src.fetchImageUrl( + "Dark Magician", "Legend of Blue Eyes White Dragon", "LOB-005||Ultra Rare||UE"); + REQUIRE(out.isOk()); + CHECK(out.value() == "https://images.ygoprodeck.com/std-dm.jpg"); + } + + TEST_CASE("propagates the YGOPRODeck error as Transient when the fallback also fails") { + // Both upstreams unreachable -> the overall outcome is transient. + // CardPreviewService relies on this to avoid negative-caching when + // the user's connection is offline. + RoutingHttpClient http; + http.yugipediaOk = false; + http.ygoprodeckOk = false; + + YuGiOhCardPreviewSource src{http}; + const auto out = src.fetchImageUrl( + "Dark Magician", "Legend of Blue Eyes White Dragon", "LOB-005||Ultra Rare||UE"); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::Transient); + } + + TEST_CASE("classifies as NotFound only when both upstreams answered cleanly with no match") { + // Yugipedia: clean miss (every candidate "missing"). + // YGOPRODeck: clean miss (empty data array). + // -> Both upstreams agree -> NotFound, safe to remember. + RoutingHttpClient http; + http.yugipediaBody = R"({"query":{"pages":{ + "-1":{"title":"File:Whatever-LOB-EN-UR-UE.png","missing":""} + }}})"; + http.ygoprodeckBody = R"({"data":[]})"; + + YuGiOhCardPreviewSource src{http}; + const auto out = src.fetchImageUrl( + "No Such Card", "Legend of Blue Eyes White Dragon", "LOB-999||Ultra Rare||UE"); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::NotFound); + } + + TEST_CASE("Yugipedia transient + YGOPRODeck clean-miss is overall Transient") { + // We can't conclude the card has no image when one upstream + // couldn't speak. This is the cautious path that keeps the offline + // user out of the "permanent no-preview" trap. + RoutingHttpClient http; + http.yugipediaOk = false; // network failure + http.ygoprodeckBody = R"({"data":[]})"; // clean miss + + YuGiOhCardPreviewSource src{http}; + const auto out = src.fetchImageUrl( + "Possibly Real", "Some Set", "ABC-001||Ultra Rare||UE"); + REQUIRE(out.isErr()); + CHECK(out.error().kind == PreviewLookupError::Kind::Transient); + } + + TEST_CASE("skips Yugipedia entirely when the set code is missing") { + // Without a set code we can't construct any candidate filename - go + // straight to the YGOPRODeck fallback to avoid wasting an HTTP call. + FixedHttpClient http; + http.ok = true; + http.body = R"({"data":[{"name":"Dark Magician", + "card_images":[{"image_url":"https://images.ygoprodeck.com/std-dm.jpg"}]}]})"; + + YuGiOhCardPreviewSource src{http}; + const auto out = src.fetchImageUrl( + "Dark Magician", "Legend of Blue Eyes White Dragon", ""); + REQUIRE(out.isOk()); + CHECK(out.value() == "https://images.ygoprodeck.com/std-dm.jpg"); + CHECK(http.lastUrl.find("ygoprodeck.com") != std::string::npos); + CHECK(http.lastUrl.find("yugipedia.com") == std::string::npos); + } +} diff --git a/tests/yugioh_set_source_tests.cpp b/tests/yugioh_set_source_tests.cpp new file mode 100644 index 0000000..d0224a2 --- /dev/null +++ b/tests/yugioh_set_source_tests.cpp @@ -0,0 +1,62 @@ +#include + +#include "ccm/games/yugioh/YuGiOhSetSource.hpp" +#include "ccm/ports/IHttpClient.hpp" + +using namespace ccm; + +namespace { + +class FixedHttpClient final : public IHttpClient { +public: + std::string lastUrl; + std::string body; + bool ok = true; + Result get(std::string_view url) override { + lastUrl = std::string(url); + return ok ? Result::ok(body) + : Result::err("offline"); + } +}; + +} // namespace + +TEST_SUITE("YuGiOhSetSource::parseResponse") { + TEST_CASE("maps set_code/set_name/tcg_date") { + const std::string json = R"([ + {"set_name":"Set A","set_code":"AAA","tcg_date":"2020-01-01"}, + {"set_name":"Set B","set_code":"BBB","tcg_date":"2021-02-03"} + ])"; + const auto out = YuGiOhSetSource::parseResponse(json); + REQUIRE(out.isOk()); + REQUIRE(out.value().size() == 2); + CHECK(out.value()[0].id == "AAA"); + CHECK(out.value()[0].releaseDate == "2020/01/01"); + } + + TEST_CASE("sorts by release date ascending") { + const auto out = YuGiOhSetSource::parseResponse(R"([ + {"set_name":"New","set_code":"N","tcg_date":"2024-01-01"}, + {"set_name":"Old","set_code":"O","tcg_date":"2010-01-01"} + ])"); + REQUIRE(out.isOk()); + CHECK(out.value().front().id == "O"); + CHECK(out.value().back().id == "N"); + } + + TEST_CASE("missing array returns error") { + CHECK(YuGiOhSetSource::parseResponse(R"({"data":[]})").isErr()); + } +} + +TEST_SUITE("YuGiOhSetSource::fetchAll") { + TEST_CASE("network success parses and hits endpoint") { + FixedHttpClient http; + http.body = R"([{"set_name":"Set X","set_code":"X","tcg_date":"2020-01-01"}])"; + YuGiOhSetSource src{http}; + const auto out = src.fetchAll(); + REQUIRE(out.isOk()); + CHECK(out.value().front().id == "X"); + CHECK(http.lastUrl == "https://db.ygoprodeck.com/api/v7/cardsets.php"); + } +} diff --git a/ui_wx/AGENTS.md b/ui_wx/AGENTS.md index fe12826..548d221 100644 --- a/ui_wx/AGENTS.md +++ b/ui_wx/AGENTS.md @@ -6,11 +6,11 @@ - `include/ccm/ui/AppContext.hpp` — the boundary type. A struct of references to shared core services + per-game modules and a `std::vector` of all UI bundles. UI code talks to core only through this struct (and the typed pointers go through `IGameView`, never directly). - `include/ccm/ui/IGameView.hpp` — abstract base class for per-game UI bundles. `MainFrame` only ever sees `IGameView` references; this is the seam that lets the frame swap between Magic, Pokemon, and any future TCG without knowing their card types. -- `include/ccm/ui/MainFrame.hpp` + `src/MainFrame.cpp` — top-level window, menu strip (`File` / `Game` / `Sets` / `Help`), toolbar (Add / Edit / Delete + filter input), and the splitter that swaps the active `IGameView`'s panels. The `Game` and `Sets` menus are built dynamically from `AppContext::gameViews` so adding a new game lights up its menu entries automatically. Filter and toolbar actions forward to `activeView()`. `EVT_PREVIEW_STATUS` (preview fetch outcome → status label; empty string resets to `"Ready"`) is the only event the frame binds; `EVT_CARD_SELECTED` is bound *per view* (each `IGameView` connects its typed list panel to its typed selected panel internally). About is a custom themed dialog (not `wxAboutBox`) so dark mode behavior stays consistent. +- `include/ccm/ui/MainFrame.hpp` + `src/MainFrame.cpp` — top-level window (default size `1210×770`), menu strip (`File` / `Game` / `Sets` / `Help`), toolbar (Add / Edit / Delete + filter input), and the splitter that swaps the active `IGameView`'s panels. The `Game` and `Sets` menus are built dynamically from `AppContext::gameViews` so adding a new game lights up its menu entries automatically. Filter and toolbar actions forward to `activeView()`. `EVT_PREVIEW_STATUS` (preview fetch outcome → status label; empty string resets to `"Ready"`) is the only event the frame binds; `EVT_CARD_SELECTED` is bound *per view* (each `IGameView` connects its typed list panel to its typed selected panel internally). About is a custom themed dialog (not `wxAboutBox`) so dark mode behavior stays consistent. - `include/ccm/ui/BaseCardListPanel.hpp` — header-only template `BaseCardListPanel` that owns ALL the non-game-specific `wxListCtrl` machinery: hidden zero-width spacer column (legacy of the MSW comctl32 image-list gutter workaround, kept to preserve column-index math), themed header row (clickable to sort, edge-drag to resize, divider double-click to autosize), per-icon-column cached `wxBitmap` pairs (normal + selected color) consumed by `IconListCtrl::MSWOnNotify` so row icons are pixel-perfect centered under the themed-header icons, rebuild guard so DESELECTED/SELECTED storms collapse into a single bubbled `EVT_CARD_SELECTED`, case-insensitive substring filter via `setFilter(...)`, per-column toggle-direction sort. Subclasses fill in column descriptors + per-row text + per-icon-column flag predicates + dispatch hooks (`sortBy`, `matchesFilter`). - `include/ccm/ui/IconListCtrl.hpp` + `src/IconListCtrl.cpp` — small `wxListCtrl` subclass that intercepts `NM_CUSTOMDRAW` on Windows and paints flag-icon sub-items at the exact center of each cell. It owns a `HIMAGELIST` (built from the cached `wxBitmap` pairs via straight-RGBA 32 bpp DIB sections) and draws each cell's icon with `ImageList_Draw(ILD_TRANSPARENT)` onto the native `HDC` from `NMLVCUSTOMDRAW`. This is the same low-level pixel path `wxImageList` uses internally, which is the only rendering path that has reliably preserved SVG transparency + correct fill color across light/dark themes on MSW. Two earlier attempts — `wxGraphicsContext::DrawBitmap` and a manually-premultiplied-DIB `AlphaBlend` — both rendered runtime-fill SVG icons as solid white in light mode and were abandoned (see convention 11). The custom-draw is purely about positioning; pixel format handling is delegated to comctl32. -- `include/ccm/ui/BaseSelectedCardPanel.hpp` — header-only template `BaseSelectedCardPanel` that owns the right-hand-side detail panel: preview image fetched via `CardPreviewService` (with the `shared_ptr` + `std::atomic alive`/`currentGen` cancellation pattern), 2-column detail grid, flag-icon strip that collapses when no flags are set, image list with double-click viewer. If preview lookup fails or returns empty bytes, the panel falls back to a per-game card-back image URL (Magic/Pokemon parity with CCM2) instead of leaving the preview empty. Subclasses describe the detail rows / flag icons / preview lookup `(name, setId, setNo)` and own a `Game` constant. -- `include/ccm/ui/BaseCardEditDialog.hpp` — header-only template `BaseCardEditDialog` that owns the standard Add/Edit form: Name, Set picker (read-only `wxComboBox` with prefix-match typeahead and case-insensitive id matching for legacy data), Amount spin, Language and Condition choices, Note, image management (Add multiple via `wxFD_MULTIPLE`, Remove, double-click to view), OK/Cancel + validation. Subclasses build the flags row (`buildFlagsRow`), append game-specific extra rows (e.g. Pokemon's `Set #`) via `appendExtraRows`, and copy values in/out of the typed card (`readExtraFromCard` / `writeExtraToCard`). +- `include/ccm/ui/BaseSelectedCardPanel.hpp` — header-only template `BaseSelectedCardPanel` that owns the right-hand-side detail panel: preview image fetched via `CardPreviewService` (with the `shared_ptr` + `std::atomic alive`/`currentGen` cancellation pattern), 2-column detail grid, flag-icon strip that collapses when no flags are set, image list with double-click viewer. If preview lookup fails or returns empty bytes, the panel loads a per-game **card-back fallback**: Magic and Pokémon use fixed HTTPS URLs (`fallbackImageUrlForGame`, CCM2-aligned); **Yu-Gi-Oh!** tries Yugipedia thumbnail URL, then full `Back-EN.png` on `ms.yugipedia.com`, then reads `/assets/ygo_card_back.png` (copied next to the executable by `app/CMakeLists.txt` on link — source file `ui_wx/assets/ygo_card_back.png`). The constructor caches `/` for that disk path. Subclasses describe the detail rows / flag icons / preview lookup `(name, setId, setNo)` and own a `Game` constant. +- `include/ccm/ui/BaseCardEditDialog.hpp` — header-only template `BaseCardEditDialog` that owns the standard Add/Edit form: Name, Set picker (read-only `wxComboBox` with prefix-match typeahead and case-insensitive id matching for legacy data), Amount spin, Language and Condition choices, Note, image management (Add multiple via `wxFD_MULTIPLE`, Remove, double-click to view), OK/Cancel + validation. After `buildAndPopulate()`, the template snapshots the loaded card into `openingSnapshot_`; in **`EditMode::Edit`**, OK asks **Yes/No** (“Save changes to this card?”) only when the card differs from that snapshot (dirty-only confirm). **Create** mode never prompts. Subclasses build the flags row (`buildFlagsRow`), append game-specific extra rows (e.g. Pokemon's `Set #`) via `appendExtraRows`, and copy values in/out of the typed card (`readExtraFromCard` / `writeExtraToCard`). The template binds `EVT_TEXT` on **Name** and invokes `onCardLookupContextChanged()` so games can drop stale keyed metadata when the user edits the lookup identity (Yu-Gi-Oh! clears its YGOPRODeck print-variant cache here). `YuGiOhCardEditDialog` additionally `CallAfter`s a silent `detectPrintVariants` when opening **Edit** (and after changing **Set**) so multi-print **Next** buttons can appear without pressing Auto detect first, as long as name + display set are populated. The base also exposes helpers to sync current control values and inspect the currently-selected set when a subclass needs derived-field UI. - `include/ccm/ui/Magic*.hpp` + `src/Magic*.cpp` — Magic implementations: `MagicCardListPanel`, `MagicSelectedCardPanel`, `MagicCardEditDialog`, `MagicGameView`. Each is ~50–100 lines of hook overrides on top of the matching base template. - `include/ccm/ui/Pokemon*.hpp` + `src/Pokemon*.cpp` — Pokemon implementations: `PokemonCardListPanel`, `PokemonSelectedCardPanel`, `PokemonCardEditDialog`, `PokemonGameView`. Same shape as the Magic ones; differences are limited to the Set # field, the Holo / 1. Edition flags, and the Pokemon TCG preview lookup key (which includes `setNo`). - `include/ccm/ui/SvgIcons.hpp` + `src/SvgIcons.cpp` — embedded SVG templates with a `@FILL@` placeholder. Magic flags: `kSvgFoil` / `kSvgSigned` / `kSvgAltered`. Pokemon flags: `kSvgHolo` (sparkle, mirroring the original `IconHolo` from `PokemonTable.tsx`) and `kSvgFirstEdition` (themed "1" inside an outlined badge, rebuilt from the original `IconPokemonFirstEdition.tsx` — every fill/stroke uses `@FILL@` so the icon themes alongside the others). Toolbar glyphs: `kSvgToolbarAdd` / `kSvgToolbarEdit` / `kSvgToolbarDelete` (vscode-codicons). `svgIconBitmap` / `paddedSvgIcon` helpers backed by `wxBitmapBundle::FromSVG`. Bitmaps from `svgIconBitmap` go straight to `wxStaticBitmap` / `wxBitmapButton::SetBitmap` cleanly; for the row-icon path `IconListCtrl` packs them into a private premultiplied-BGRA `HIMAGELIST` and draws with `ImageList_Draw`. See convention 11 for the full pitfall write-up. @@ -64,13 +64,18 @@ - Button event handlers must use per-button state that is refreshed when theme changes. Avoid one-time captures of theme colors/mode in lambdas; these can leak dark-mode behavior into light mode. - In High Contrast, use stronger hover/pressed deltas than regular dark mode and keep the button border in the foreground/text color for visibility (currently yellow in this palette). - When validating UI theming changes, rebuild and run `ccm` (the executable), not just `ccm_ui_wx`. -15. **Preview fallback behavior (CCM2 parity):** +15. **Preview fallback behavior (CCM2 parity where applicable):** - Keep unresolved external previews user-visible by showing a per-game card-back image in `BaseSelectedCardPanel` instead of a blank/transparent bitmap. - - Current fallback URLs are intentionally aligned with CCM2: Magic uses `Magic_card_back.jpg`, Pokemon uses `Cardback.jpg`. - - If you change fallback sourcing (URL -> local asset, etc.), keep the "always show a reasonable card-back fallback" behavior intact for both games. + - Magic / Pokémon use single fixed HTTPS URLs (`Magic_card_back.jpg`, Bulbagarden `Cardback.jpg`). Yu-Gi-Oh! uses Yugipedia-hosted backs plus a **bundled** PNG beside the exe (`assets/ygo_card_back.png`) when the network path fails — keep that chain working when touching preview code. + - If you change fallback sourcing (URLs or bundled asset), keep the "always show a reasonable card-back fallback" behavior intact for **every** game with remote previews. +16. **Per-game auto-detect controls:** + - Auto-detect actions in edit dialogs (e.g. detect set print number / rarity from API) are opt-in per game. + - Keep shared templates game-agnostic: put buttons and detection behavior in `CardEditDialog`, not in `BaseCardEditDialog`. + - For games that use composed print IDs (prefix + numeric suffix), allow user editing on the numeric portion and render the full code as a read-only derived label beside the input. ## Required follow-ups +- If you replace **`ui_wx/assets/ygo_card_back.png`**, rebuild the **`ccm`** target so `app/CMakeLists.txt`'s `POST_BUILD` copy refreshes `/assets/`; do not remove the asset without updating `BaseSelectedCardPanel` / `docs/assets-and-info-apis.md`. - After adding a new dialog/panel `.cpp` you **must** add it to `ui_wx/CMakeLists.txt`. - After adding a new menu action you **must** allocate an `Ids::*` value in `MainFrame.hpp` (don't reuse `wxID_HIGHEST` math inline) and `Bind` it in `buildMenuBar`. The dynamic Game / Sets menus consume the `IdGameMenuBase` / `IdSetsMenuBase` ranges; do not stomp on those id ranges. - After changing `AppContext` you **must** update `app/main.cpp` so the composition root populates the new field. diff --git a/ui_wx/CMakeLists.txt b/ui_wx/CMakeLists.txt index 13416f0..36a0454 100644 --- a/ui_wx/CMakeLists.txt +++ b/ui_wx/CMakeLists.txt @@ -15,6 +15,10 @@ add_library(ccm_ui_wx STATIC src/PokemonSelectedCardPanel.cpp src/PokemonCardEditDialog.cpp src/PokemonGameView.cpp + src/YuGiOhCardListPanel.cpp + src/YuGiOhSelectedCardPanel.cpp + src/YuGiOhCardEditDialog.cpp + src/YuGiOhGameView.cpp src/SettingsDialog.cpp src/ImageViewerDialog.cpp diff --git a/ui_wx/assets/ygo_card_back.png b/ui_wx/assets/ygo_card_back.png new file mode 100644 index 0000000000000000000000000000000000000000..79955b9e7567e31de3039c9cad65ad049d06ad8b GIT binary patch literal 189898 zcmV(_K-9m9P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00006 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ⅆ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 M<<;I+fz9Fn1xXY+O8@`> literal 0 HcmV?d00001 diff --git a/ui_wx/include/ccm/ui/AppContext.hpp b/ui_wx/include/ccm/ui/AppContext.hpp index bbda406..3bfd551 100644 --- a/ui_wx/include/ccm/ui/AppContext.hpp +++ b/ui_wx/include/ccm/ui/AppContext.hpp @@ -25,6 +25,7 @@ struct AppContext { CardPreviewService& cardPreview; IGameModule& magicModule; IGameModule& pokemonModule; + IGameModule& yuGiOhModule; // Active per-game UI bundles. The order is the order shown in the // Game menu; the composition root constructs them and hands raw // pointers in. `MainFrame` does not own these — `app/main.cpp` does. diff --git a/ui_wx/include/ccm/ui/BaseCardEditDialog.hpp b/ui_wx/include/ccm/ui/BaseCardEditDialog.hpp index 5462449..eef99a1 100644 --- a/ui_wx/include/ccm/ui/BaseCardEditDialog.hpp +++ b/ui_wx/include/ccm/ui/BaseCardEditDialog.hpp @@ -90,6 +90,7 @@ protected: } buildLayout(); populateChoices(); + openingSnapshot_ = card_; Thaw(); } @@ -119,6 +120,11 @@ protected: return "(no sets cached - use Sets > " + updateMenuName() + ")"; } + // Called when the card name field changes. Games that cache upstream print + // metadata keyed by `(name, set)` should clear it here so stale "Next" + // controls cannot outlive the lookup identity. + virtual void onCardLookupContextChanged() {} + // Common helpers ---------------------------------------------------------- void appendRow(wxFlexGridSizer* grid, const wxString& label, wxWindow* ctrl) { @@ -129,12 +135,26 @@ protected: [[nodiscard]] TCard& mutableCard() noexcept { return card_; } [[nodiscard]] const TCard& constCard() const noexcept { return card_; } + void syncCardFromControls() { writeFromControls(); } + [[nodiscard]] wxComboBox* setComboControl() const noexcept { return setCombo_; } + + [[nodiscard]] const Set* selectedSetFromControls() const { + const auto& available = availableSets(); + if (!setCombo_ || !setCombo_->IsEnabled()) return nullptr; + const int sel = setCombo_->GetSelection(); + if (sel < 0 || static_cast(sel) >= available.size()) return nullptr; + return &available[static_cast(sel)]; + } private: void readSets() { auto loaded = setService_.getSets(game_); if (loaded.isOk()) { sets_ = std::move(loaded).value(); + std::sort(sets_.begin(), sets_.end(), + [](const Set& a, const Set& b) { + return a.releaseDate < b.releaseDate; + }); } } @@ -148,6 +168,10 @@ private: grid->AddGrowableCol(1, 1); nameCtrl_ = new wxTextCtrl(this, wxID_ANY, wxString::FromUTF8(card_.name.c_str())); + nameCtrl_->Bind(wxEVT_TEXT, [this](wxCommandEvent& ev) { + onCardLookupContextChanged(); + ev.Skip(); + }); appendRow(grid, "Name", nameCtrl_); setCombo_ = new wxComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, @@ -393,6 +417,14 @@ private: "Add card", wxOK | wxICON_INFORMATION); return; } + if (mode_ == EditMode::Edit && !(card_ == openingSnapshot_)) { + if (showThemedConfirmDialog( + this, + wxString::FromUTF8("Save changes to this card?"), + wxString::FromUTF8("Save changes")) != wxID_YES) { + return; + } + } ev.Skip(); } @@ -503,6 +535,7 @@ private: SetService& setService_; EditMode mode_; TCard card_; + TCard openingSnapshot_{}; Game game_; std::vector sets_; diff --git a/ui_wx/include/ccm/ui/BaseSelectedCardPanel.hpp b/ui_wx/include/ccm/ui/BaseSelectedCardPanel.hpp index 84dbbc4..eaf5eb2 100644 --- a/ui_wx/include/ccm/ui/BaseSelectedCardPanel.hpp +++ b/ui_wx/include/ccm/ui/BaseSelectedCardPanel.hpp @@ -30,9 +30,12 @@ #include #include #include +#include #include #include +#include #include +#include #include #include #include @@ -43,8 +46,10 @@ #include #include #include +#include #include #include +#include #include #include #include @@ -221,6 +226,9 @@ protected: imageService_(imageService), cardPreview_(cardPreview), state_(std::make_shared()) { + wxFileName exe(wxStandardPaths::Get().GetExecutablePath()); + exe.SetFullName(wxEmptyString); + exeDirForBundledAssets_ = exe.GetPathWithSep().ToStdString(wxConvUTF8); state_->panel = this; } @@ -284,6 +292,9 @@ private: case Game::Pokemon: // Mirrors CCM2's unresolved-preview fallback image. return "https://archives.bulbagarden.net/media/upload/1/17/Cardback.jpg"; + case Game::YuGiOh: + // Yugipedia English TCG backing (thumbnail — smaller than full scan). + return "https://ms.yugipedia.com/thumb/e/e5/Back-EN.png/250px-Back-EN.png"; default: return {}; } @@ -367,25 +378,58 @@ private: CardPreviewService* svcPtr = &cardPreview_; auto [name, setId, setNo] = previewKey(card); const Game game = gameId(); + const std::string exeDirCopy = exeDirForBundledAssets_; std::thread([state, gen, svcPtr, name = std::move(name), - setId = std::move(setId), setNo = std::move(setNo), game]() { + setId = std::move(setId), setNo = std::move(setNo), game, + exeDirCopy]() { auto bytes = svcPtr->fetchPreviewBytes(game, name, setId, setNo); bool ok = bytes.isOk(); bool usedFallback = false; std::string payload = ok ? std::move(bytes).value() : std::string{}; std::string err = ok ? std::string{} : bytes.error(); + auto applyFallbackPayload = [&](std::string p) { + if (p.empty()) return; + payload = std::move(p); + ok = true; + usedFallback = true; + err.clear(); + }; + if (!ok || payload.empty()) { - const std::string fallbackUrl = fallbackImageUrlForGame(game); - if (!fallbackUrl.empty()) { - auto fallbackBytes = svcPtr->fetchImageBytesByUrl(fallbackUrl); - if (fallbackBytes.isOk()) { - payload = std::move(fallbackBytes).value(); - ok = !payload.empty(); - if (ok) { - usedFallback = true; - err.clear(); + if (game == Game::YuGiOh) { + if (auto fb = + svcPtr->fetchImageBytesByUrl( + "https://ms.yugipedia.com/thumb/e/e5/Back-EN.png/" + "250px-Back-EN.png"); + fb.isOk()) { + applyFallbackPayload(std::move(fb).value()); + } + if (!ok || payload.empty()) { + if (auto fb = svcPtr->fetchImageBytesByUrl( + "https://ms.yugipedia.com/e/e5/Back-EN.png"); + fb.isOk()) { + applyFallbackPayload(std::move(fb).value()); + } + } + if (!ok || payload.empty()) { + namespace fs = std::filesystem; + const fs::path asset = + fs::path(exeDirCopy) / "assets" / "ygo_card_back.png"; + std::ifstream in(asset, std::ios::binary); + if (in) { + std::ostringstream ss; + ss << in.rdbuf(); + applyFallbackPayload(ss.str()); + } + } + } else { + const std::string fallbackUrl = fallbackImageUrlForGame(game); + if (!fallbackUrl.empty()) { + auto fallbackBytes = svcPtr->fetchImageBytesByUrl(fallbackUrl); + if (fallbackBytes.isOk()) { + applyFallbackPayload(std::move(fallbackBytes).value()); } } } @@ -419,7 +463,16 @@ private: wxMemoryInputStream stream(bytes.data(), bytes.size()); wxImage img; - if (!img.LoadFile(stream, wxBITMAP_TYPE_ANY)) { + // libpng emits iCCP warnings for some upstream PNGs (e.g. Yugipedia + // scans with embedded sRGB chunks wx considers invalid). wx forwards + // those as wxLogWarning -> modal dialog. Suppress logging for decode + // only; the pixels load correctly either way. + bool decoded = false; + { + wxLogNull suppressPngWarnings; + decoded = img.LoadFile(stream, wxBITMAP_TYPE_ANY); + } + if (!decoded) { previewStatus_->SetLabelText("(preview decode failed)"); clearPreview(); Layout(); @@ -477,6 +530,7 @@ private: ImageService& imageService_; CardPreviewService& cardPreview_; + std::string exeDirForBundledAssets_; std::optional card_; wxStaticBitmap* previewBitmap_{nullptr}; diff --git a/ui_wx/include/ccm/ui/YuGiOhCardEditDialog.hpp b/ui_wx/include/ccm/ui/YuGiOhCardEditDialog.hpp new file mode 100644 index 0000000..9634fc9 --- /dev/null +++ b/ui_wx/include/ccm/ui/YuGiOhCardEditDialog.hpp @@ -0,0 +1,73 @@ +#pragma once + +#include "ccm/domain/YuGiOhCard.hpp" +#include "ccm/ports/ICardPreviewSource.hpp" +#include "ccm/services/CardPreviewService.hpp" +#include "ccm/ui/BaseCardEditDialog.hpp" +#include +#include + +namespace ccm::ui { + +class YuGiOhCardEditDialog final : public BaseCardEditDialog { +public: + YuGiOhCardEditDialog(wxWindow* parent, + ImageService& imageService, + SetService& setService, + CardPreviewService& cardPreview, + EditMode mode, + YuGiOhCard initial, + const std::vector* preloadedSets = nullptr); + +protected: + void buildFlagsRow(wxBoxSizer* flagsBox) override; + void appendExtraRows(wxFlexGridSizer* grid) override; + void readExtraFromCard() override; + void writeExtraToCard() override; + [[nodiscard]] std::string updateMenuName() const override { return "Update Yu-Gi-Oh!"; } + void onCardLookupContextChanged() override; + +private: + void onAutoDetectSetNo(wxCommandEvent&); + void onAutoDetectRarity(wxCommandEvent&); + void onNextSetNo(wxCommandEvent&); + void onNextRarity(wxCommandEvent&); + void onSetNoTextChanged(wxCommandEvent&); + void onSetSelectionChanged(wxCommandEvent&); + void autoDetectFromApi(bool fillSetNo, bool fillRarity); + void refreshSetNoFullPreview(); + void clearCachedPrintVariants(); + bool fetchAndCachePrintVariants(); + void rebuildVariantRingsFromCache(); + void filterCachedVariantsForCardLanguage(); + void syncRingPositionsToControls(); + void applyRarityStringToChoice(const std::string& rarity); + [[nodiscard]] std::string currentFullSetNoFromControls() const; + void refreshVariantNextControls(); + [[nodiscard]] std::string extractSetNoNumeric(std::string_view fullSetNo) const; + [[nodiscard]] std::string composeFullSetNo(std::string_view numeric) const; + void scheduleDeferredVariantPrefetch(); + void prefetchVariantsForCurrentCardSilent(unsigned capturedEpoch); + + EditMode dialogMode_; + unsigned variantFetchEpoch_{0}; + CardPreviewService& cardPreview_; + wxTextCtrl* setNoCtrl_{nullptr}; + wxStaticText* setNoFullPreview_{nullptr}; + wxChoice* rarityChoice_{nullptr}; + wxButton* autoSetNoBtn_{nullptr}; + wxButton* nextSetNoBtn_{nullptr}; + wxButton* autoRarityBtn_{nullptr}; + wxButton* nextRarityBtn_{nullptr}; + wxCheckBox* firstEditionCheck_{nullptr}; + wxCheckBox* signedCheck_{nullptr}; + wxCheckBox* alteredCheck_{nullptr}; + + std::vector cachedVariants_; + std::vector uniqueSetCodes_; + std::vector raritiesForCurrentSetCode_; + std::size_t setCodeRingPos_{0}; + std::size_t rarityRingPos_{0}; +}; + +} // namespace ccm::ui diff --git a/ui_wx/include/ccm/ui/YuGiOhCardListPanel.hpp b/ui_wx/include/ccm/ui/YuGiOhCardListPanel.hpp new file mode 100644 index 0000000..662d61a --- /dev/null +++ b/ui_wx/include/ccm/ui/YuGiOhCardListPanel.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "ccm/domain/YuGiOhCard.hpp" +#include "ccm/services/CardSorter.hpp" +#include "ccm/ui/BaseCardListPanel.hpp" + +namespace ccm::ui { + +class YuGiOhCardListPanel final : public BaseCardListPanel { +public: + explicit YuGiOhCardListPanel(wxWindow* parent); + +protected: + [[nodiscard]] std::vector declareTextColumns() const override; + [[nodiscard]] std::vector declareIconColumns() const override; + [[nodiscard]] std::string renderTextCell(const YuGiOhCard& card, std::size_t idx) const override; + [[nodiscard]] bool isIconColumnSet(const YuGiOhCard& card, std::size_t idx) const override; + void sortBy(YuGiOhSortColumn column, bool ascending) override; + [[nodiscard]] bool matchesFilter(const YuGiOhCard& card, std::string_view filter) const override; +}; + +} // namespace ccm::ui diff --git a/ui_wx/include/ccm/ui/YuGiOhGameView.hpp b/ui_wx/include/ccm/ui/YuGiOhGameView.hpp new file mode 100644 index 0000000..253e03b --- /dev/null +++ b/ui_wx/include/ccm/ui/YuGiOhGameView.hpp @@ -0,0 +1,62 @@ +#pragma once + +#include "ccm/domain/YuGiOhCard.hpp" +#include "ccm/games/IGameModule.hpp" +#include "ccm/services/CardPreviewService.hpp" +#include "ccm/services/CollectionService.hpp" +#include "ccm/services/ConfigService.hpp" +#include "ccm/services/ImageService.hpp" +#include "ccm/services/SetService.hpp" +#include "ccm/ui/IGameView.hpp" + +#include +#include +#include + +namespace ccm::ui { + +class YuGiOhCardListPanel; +class YuGiOhSelectedCardPanel; + +class YuGiOhGameView final : public IGameView { +public: + YuGiOhGameView(ConfigService& config, + CollectionService& collection, + SetService& sets, + ImageService& images, + CardPreviewService& cardPreview, + IGameModule& module); + + [[nodiscard]] Game gameId() const noexcept override { return Game::YuGiOh; } + [[nodiscard]] std::string displayName() const override { return "Yu-Gi-Oh!"; } + + wxPanel* listPanel(wxWindow* parent) override; + wxPanel* selectedPanel(wxWindow* parent) override; + + void refreshCollection() override; + void onAddCard(wxWindow* parentWindow) override; + void onEditCard(wxWindow* parentWindow) override; + void onDeleteCard(wxWindow* parentWindow) override; + std::string onUpdateSets(wxWindow* parentWindow) override; + void setFilter(std::string_view filter) override; + void applyTheme(const ThemePalette& palette) override; + [[nodiscard]] std::string updateSetsMenuLabel() const override { return "Update Yu-Gi-Oh!"; } + +private: + void ensureSetsLoaded(); + const std::vector& setsForDialog(); + + ConfigService& config_; + CollectionService& collection_; + SetService& sets_; + ImageService& images_; + CardPreviewService& cardPreview_; + IGameModule& module_; + + YuGiOhCardListPanel* listPanel_{nullptr}; + YuGiOhSelectedCardPanel* selectedPanel_{nullptr}; + std::vector setsCache_; + bool attemptedInitialSetLoad_{false}; +}; + +} // namespace ccm::ui diff --git a/ui_wx/include/ccm/ui/YuGiOhSelectedCardPanel.hpp b/ui_wx/include/ccm/ui/YuGiOhSelectedCardPanel.hpp new file mode 100644 index 0000000..f567174 --- /dev/null +++ b/ui_wx/include/ccm/ui/YuGiOhSelectedCardPanel.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include "ccm/domain/YuGiOhCard.hpp" +#include "ccm/ui/BaseSelectedCardPanel.hpp" + +namespace ccm::ui { + +class YuGiOhSelectedCardPanel final : public BaseSelectedCardPanel { +public: + YuGiOhSelectedCardPanel(wxWindow* parent, + ImageService& imageService, + CardPreviewService& cardPreview); + +protected: + [[nodiscard]] std::vector declareDetailRows() const override; + [[nodiscard]] std::vector declareFlagIcons() const override; + [[nodiscard]] std::string detailValueFor(const YuGiOhCard& card, DetailKey key) const override; + [[nodiscard]] bool isFlagSet(const YuGiOhCard& card, DetailKey key) const override; + [[nodiscard]] std::tuple + previewKey(const YuGiOhCard& card) const override; + [[nodiscard]] Game gameId() const noexcept override { return Game::YuGiOh; } +}; + +} // namespace ccm::ui diff --git a/ui_wx/src/ImageViewerDialog.cpp b/ui_wx/src/ImageViewerDialog.cpp index 8b5f278..4f92ea6 100644 --- a/ui_wx/src/ImageViewerDialog.cpp +++ b/ui_wx/src/ImageViewerDialog.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -110,7 +111,12 @@ bool ImageViewerDialog::loadImageAt(std::size_t index) { if (imageCacheReady_[index]) return imageCache_[index].IsOk(); wxImage img; - if (!img.LoadFile(paths_[index].string())) { + bool ok = false; + { + wxLogNull suppressPngWarnings; + ok = img.LoadFile(paths_[index].string()); + } + if (!ok) { imageCacheReady_[index] = true; return false; } diff --git a/ui_wx/src/MainFrame.cpp b/ui_wx/src/MainFrame.cpp index eaf4b8c..4501510 100644 --- a/ui_wx/src/MainFrame.cpp +++ b/ui_wx/src/MainFrame.cpp @@ -83,7 +83,7 @@ void ensureDataStorageScaffold(const Configuration& cfg) { MainFrame::MainFrame(AppContext& ctx) : wxFrame(nullptr, wxID_ANY, "Card Collection Manager 3", - wxDefaultPosition, wxSize(1210, 700)), + wxDefaultPosition, wxSize(1210, 770)), ctx_(ctx), activeGame_(ctx.config.current().defaultGame) { buildMenuBar(); diff --git a/ui_wx/src/YuGiOhCardEditDialog.cpp b/ui_wx/src/YuGiOhCardEditDialog.cpp new file mode 100644 index 0000000..aa4641c --- /dev/null +++ b/ui_wx/src/YuGiOhCardEditDialog.cpp @@ -0,0 +1,378 @@ +#include "ccm/ui/YuGiOhCardEditDialog.hpp" +#include "ccm/domain/Enums.hpp" +#include "ccm/util/YuGiOhPrintingSlot.hpp" +#include +#include +#include +#include +#include + +namespace ccm::ui { +namespace { +const char* const kRarityOptions[] = { + "Common", + "Rare", + "Super Rare", + "Ultra Rare", + "Secret Rare", + "Quarter Century Secret Rare", + "Starlight Rare", + "Collector's Rare", + "Ghost Rare", + "Ultimate Rare", + "Platinum Secret Rare", + "Prismatic Secret Rare", +}; +} + +YuGiOhCardEditDialog::YuGiOhCardEditDialog(wxWindow* parent, + ImageService& imageService, + SetService& setService, + CardPreviewService& cardPreview, + EditMode mode, + YuGiOhCard initial, + const std::vector* preloadedSets) + : BaseCardEditDialog( + parent, + mode == EditMode::Create ? "Add Yu-Gi-Oh! Card" : "Edit Yu-Gi-Oh! Card", + imageService, setService, mode, std::move(initial), Game::YuGiOh, preloadedSets), + dialogMode_(mode), + cardPreview_(cardPreview) { + buildAndPopulate(); + if (dialogMode_ == EditMode::Edit) { + scheduleDeferredVariantPrefetch(); + } +} + +void YuGiOhCardEditDialog::onCardLookupContextChanged() { + clearCachedPrintVariants(); +} + +void YuGiOhCardEditDialog::buildFlagsRow(wxBoxSizer* flagsBox) { + firstEditionCheck_ = new wxCheckBox(this, wxID_ANY, "1. Edition"); + signedCheck_ = new wxCheckBox(this, wxID_ANY, "Signed"); + alteredCheck_ = new wxCheckBox(this, wxID_ANY, "Altered"); + flagsBox->Add(firstEditionCheck_, 0, wxRIGHT, 12); + flagsBox->Add(signedCheck_, 0, wxRIGHT, 12); + flagsBox->Add(alteredCheck_, 0, wxRIGHT, 12); +} + +void YuGiOhCardEditDialog::appendExtraRows(wxFlexGridSizer* grid) { + auto* setNoPanel = new wxPanel(this, wxID_ANY); + setNoCtrl_ = new wxTextCtrl(setNoPanel, wxID_ANY); + setNoCtrl_->Bind(wxEVT_TEXT, &YuGiOhCardEditDialog::onSetNoTextChanged, this); + autoSetNoBtn_ = new wxButton(setNoPanel, wxID_ANY, "Auto detect"); + autoSetNoBtn_->Bind(wxEVT_BUTTON, &YuGiOhCardEditDialog::onAutoDetectSetNo, this); + nextSetNoBtn_ = new wxButton(setNoPanel, wxID_ANY, "Next"); + nextSetNoBtn_->Bind(wxEVT_BUTTON, &YuGiOhCardEditDialog::onNextSetNo, this); + nextSetNoBtn_->Show(false); + setNoFullPreview_ = new wxStaticText(setNoPanel, wxID_ANY, "(n/a)"); + auto* setNoRow = new wxBoxSizer(wxHORIZONTAL); + setNoRow->Add(setNoCtrl_, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 6); + setNoRow->Add(autoSetNoBtn_, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 6); + setNoRow->Add(nextSetNoBtn_, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 6); + setNoRow->Add(setNoFullPreview_, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, 8); + setNoPanel->SetSizer(setNoRow); + + auto* rarityPanel = new wxPanel(this, wxID_ANY); + rarityChoice_ = new wxChoice(rarityPanel, wxID_ANY); + autoRarityBtn_ = new wxButton(rarityPanel, wxID_ANY, "Auto detect"); + autoRarityBtn_->Bind(wxEVT_BUTTON, &YuGiOhCardEditDialog::onAutoDetectRarity, this); + nextRarityBtn_ = new wxButton(rarityPanel, wxID_ANY, "Next"); + nextRarityBtn_->Bind(wxEVT_BUTTON, &YuGiOhCardEditDialog::onNextRarity, this); + nextRarityBtn_->Show(false); + wxArrayString rarityItems; + rarityItems.Alloc(static_cast(sizeof(kRarityOptions) / sizeof(kRarityOptions[0]))); + for (const char* rarity : kRarityOptions) { + rarityItems.Add(wxString::FromUTF8(rarity)); + } + rarityChoice_->Append(rarityItems); + auto* rarityRow = new wxBoxSizer(wxHORIZONTAL); + rarityRow->Add(rarityChoice_, 1, wxALIGN_CENTER_VERTICAL | wxRIGHT, 6); + rarityRow->Add(autoRarityBtn_, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 6); + rarityRow->Add(nextRarityBtn_, 0, wxALIGN_CENTER_VERTICAL); + rarityPanel->SetSizer(rarityRow); + + appendRow(grid, "Set #", setNoPanel); + appendRow(grid, "Rarity", rarityPanel); + + if (auto* setCombo = setComboControl()) { + setCombo->Bind(wxEVT_COMBOBOX, &YuGiOhCardEditDialog::onSetSelectionChanged, this); + } +} + +void YuGiOhCardEditDialog::readExtraFromCard() { + clearCachedPrintVariants(); + if (setNoCtrl_) setNoCtrl_->ChangeValue(extractSetNoNumeric(constCard().setNo)); + if (rarityChoice_) { + const wxString rarity = wxString::FromUTF8(constCard().rarity.c_str()); + int rarityIdx = rarityChoice_->FindString(rarity); + if (rarityIdx == wxNOT_FOUND && !constCard().rarity.empty()) { + rarityChoice_->Append(rarity); + rarityIdx = rarityChoice_->GetCount() - 1; + } + if (rarityIdx == wxNOT_FOUND) rarityIdx = 0; + if (rarityIdx != wxNOT_FOUND) rarityChoice_->SetSelection(rarityIdx); + } + if (firstEditionCheck_) firstEditionCheck_->SetValue(constCard().firstEdition); + if (signedCheck_) signedCheck_->SetValue(constCard().signed_); + if (alteredCheck_) alteredCheck_->SetValue(constCard().altered); + refreshSetNoFullPreview(); +} + +void YuGiOhCardEditDialog::writeExtraToCard() { + if (setNoCtrl_) mutableCard().setNo = composeFullSetNo(setNoCtrl_->GetValue().ToStdString(wxConvUTF8)); + if (rarityChoice_) mutableCard().rarity = rarityChoice_->GetStringSelection().ToStdString(wxConvUTF8); + if (firstEditionCheck_) mutableCard().firstEdition = firstEditionCheck_->IsChecked(); + if (signedCheck_) mutableCard().signed_ = signedCheck_->IsChecked(); + if (alteredCheck_) mutableCard().altered = alteredCheck_->IsChecked(); +} + +void YuGiOhCardEditDialog::clearCachedPrintVariants() { + ++variantFetchEpoch_; + cachedVariants_.clear(); + uniqueSetCodes_.clear(); + raritiesForCurrentSetCode_.clear(); + setCodeRingPos_ = 0; + rarityRingPos_ = 0; + refreshVariantNextControls(); +} + +void YuGiOhCardEditDialog::scheduleDeferredVariantPrefetch() { + const unsigned epoch = variantFetchEpoch_; + wxTheApp->CallAfter([this, epoch]() { + prefetchVariantsForCurrentCardSilent(epoch); + }); +} + +void YuGiOhCardEditDialog::prefetchVariantsForCurrentCardSilent(unsigned capturedEpoch) { + if (capturedEpoch != variantFetchEpoch_) return; + if (!cachedVariants_.empty()) return; + const auto& card = constCard(); + if (card.name.empty() || card.set.name.empty()) return; + + auto detected = cardPreview_.detectPrintVariants(Game::YuGiOh, card.name, card.set.name); + if (!detected) return; + if (capturedEpoch != variantFetchEpoch_) return; + + cachedVariants_ = std::move(detected).value(); + rebuildVariantRingsFromCache(); + syncRingPositionsToControls(); + refreshVariantNextControls(); +} + +bool YuGiOhCardEditDialog::fetchAndCachePrintVariants() { + syncCardFromControls(); + const auto& card = constCard(); + if (card.name.empty()) { + showThemedMessageDialog(this, "Enter a card name first.", "Auto detect", + wxOK | wxICON_INFORMATION); + return false; + } + if (card.set.name.empty()) { + showThemedMessageDialog(this, "Select a set first.", "Auto detect", + wxOK | wxICON_INFORMATION); + return false; + } + + auto detected = cardPreview_.detectPrintVariants(Game::YuGiOh, card.name, card.set.name); + if (!detected) { + showThemedMessageDialog(this, "Auto detect failed: " + detected.error(), "Auto detect", + wxOK | wxICON_WARNING); + return false; + } + cachedVariants_ = std::move(detected).value(); + return true; +} + +void YuGiOhCardEditDialog::filterCachedVariantsForCardLanguage() { + if (constCard().language != Language::English) return; + const auto removed = std::remove_if( + cachedVariants_.begin(), cachedVariants_.end(), [](const AutoDetectedPrint& p) { + return ygoLikelyEuropeanRegionalSetCode(p.setNo); + }); + cachedVariants_.erase(removed, cachedVariants_.end()); +} + +void YuGiOhCardEditDialog::rebuildVariantRingsFromCache() { + syncCardFromControls(); + uniqueSetCodes_.clear(); + raritiesForCurrentSetCode_.clear(); + if (cachedVariants_.empty()) return; + + filterCachedVariantsForCardLanguage(); + + std::unordered_set seenSlots; + seenSlots.reserve(cachedVariants_.size()); + for (const auto& p : cachedVariants_) { + if (p.setNo.empty()) continue; + const std::string digits = ygoCollectorDigitsOnly(p.setNo); + if (digits.empty()) continue; + const std::string slotKey = ygoAbbrevBeforeDash(p.setNo) + "|" + digits; + if (!seenSlots.insert(slotKey).second) continue; + uniqueSetCodes_.push_back(p.setNo); + } + + const std::string full = currentFullSetNoFromControls(); + std::unordered_set seenRarity; + for (const auto& p : cachedVariants_) { + if (!ygoPrintingSlotsMatch(p.setNo, full)) continue; + if (p.rarity.empty()) continue; + if (seenRarity.insert(p.rarity).second) raritiesForCurrentSetCode_.push_back(p.rarity); + } +} + +void YuGiOhCardEditDialog::syncRingPositionsToControls() { + const std::string full = currentFullSetNoFromControls(); + setCodeRingPos_ = 0; + for (std::size_t i = 0; i < uniqueSetCodes_.size(); ++i) { + if (ygoPrintingSlotsMatch(uniqueSetCodes_[i], full)) { + setCodeRingPos_ = i; + break; + } + } + + rarityRingPos_ = 0; + if (rarityChoice_) { + const std::string r = rarityChoice_->GetStringSelection().ToStdString(wxConvUTF8); + for (std::size_t i = 0; i < raritiesForCurrentSetCode_.size(); ++i) { + if (raritiesForCurrentSetCode_[i] == r) { + rarityRingPos_ = i; + break; + } + } + } +} + +void YuGiOhCardEditDialog::applyRarityStringToChoice(const std::string& rarity) { + if (!rarityChoice_) return; + const wxString wxRare = wxString::FromUTF8(rarity.c_str()); + int idx = rarityChoice_->FindString(wxRare); + if (idx == wxNOT_FOUND && !rarity.empty()) { + rarityChoice_->Append(wxRare); + idx = rarityChoice_->GetCount() - 1; + } + if (idx != wxNOT_FOUND) rarityChoice_->SetSelection(idx); +} + +std::string YuGiOhCardEditDialog::currentFullSetNoFromControls() const { + if (!setNoCtrl_) return {}; + return composeFullSetNo(setNoCtrl_->GetValue().ToStdString(wxConvUTF8)); +} + +void YuGiOhCardEditDialog::refreshVariantNextControls() { + if (!nextSetNoBtn_ || !nextRarityBtn_) return; + nextSetNoBtn_->Show(uniqueSetCodes_.size() > 1); + nextRarityBtn_->Show(raritiesForCurrentSetCode_.size() > 1); + Layout(); + if (GetSizer()) Fit(); +} + +void YuGiOhCardEditDialog::onAutoDetectSetNo(wxCommandEvent&) { + autoDetectFromApi(true, false); +} + +void YuGiOhCardEditDialog::onAutoDetectRarity(wxCommandEvent&) { + autoDetectFromApi(false, true); +} + +void YuGiOhCardEditDialog::onNextSetNo(wxCommandEvent&) { + if (uniqueSetCodes_.size() <= 1) return; + setCodeRingPos_ = (setCodeRingPos_ + 1) % uniqueSetCodes_.size(); + const std::string& code = uniqueSetCodes_[setCodeRingPos_]; + if (setNoCtrl_) { + setNoCtrl_->ChangeValue(wxString::FromUTF8(extractSetNoNumeric(code).c_str())); + } + for (const auto& p : cachedVariants_) { + if (p.setNo == code) { + applyRarityStringToChoice(p.rarity); + break; + } + } + rebuildVariantRingsFromCache(); + syncRingPositionsToControls(); + refreshSetNoFullPreview(); + refreshVariantNextControls(); +} + +void YuGiOhCardEditDialog::onNextRarity(wxCommandEvent&) { + if (raritiesForCurrentSetCode_.size() <= 1) return; + rarityRingPos_ = (rarityRingPos_ + 1) % raritiesForCurrentSetCode_.size(); + applyRarityStringToChoice(raritiesForCurrentSetCode_[rarityRingPos_]); + refreshVariantNextControls(); +} + +void YuGiOhCardEditDialog::autoDetectFromApi(bool fillSetNo, bool fillRarity) { + if (!fetchAndCachePrintVariants()) return; + + if (fillSetNo && setNoCtrl_ && !cachedVariants_.empty()) { + const auto& p = cachedVariants_.front(); + setNoCtrl_->ChangeValue(wxString::FromUTF8(extractSetNoNumeric(p.setNo).c_str())); + if (fillRarity) applyRarityStringToChoice(p.rarity); + } else if (fillRarity && rarityChoice_) { + const std::string full = currentFullSetNoFromControls(); + bool applied = false; + for (const auto& p : cachedVariants_) { + if (ygoPrintingSlotsMatch(p.setNo, full)) { + applyRarityStringToChoice(p.rarity); + applied = true; + break; + } + } + if (!applied && !cachedVariants_.empty()) { + applyRarityStringToChoice(cachedVariants_.front().rarity); + } + } + + rebuildVariantRingsFromCache(); + syncRingPositionsToControls(); + refreshSetNoFullPreview(); + refreshVariantNextControls(); +} + +void YuGiOhCardEditDialog::onSetNoTextChanged(wxCommandEvent&) { + refreshSetNoFullPreview(); + if (!cachedVariants_.empty()) { + rebuildVariantRingsFromCache(); + syncRingPositionsToControls(); + refreshVariantNextControls(); + } +} + +void YuGiOhCardEditDialog::onSetSelectionChanged(wxCommandEvent& ev) { + clearCachedPrintVariants(); + refreshSetNoFullPreview(); + scheduleDeferredVariantPrefetch(); + ev.Skip(); +} + +std::string YuGiOhCardEditDialog::extractSetNoNumeric(std::string_view fullSetNo) const { + std::string digits; + for (char ch : fullSetNo) { + if (std::isdigit(static_cast(ch))) digits.push_back(ch); + } + return digits; +} + +std::string YuGiOhCardEditDialog::composeFullSetNo(std::string_view numericRaw) const { + std::string numeric; + for (char ch : numericRaw) { + if (std::isdigit(static_cast(ch))) numeric.push_back(ch); + } + const Set* set = selectedSetFromControls(); + if (!set || set->id.empty() || numeric.empty()) return numeric; + return set->id + "-" + numeric; +} + +void YuGiOhCardEditDialog::refreshSetNoFullPreview() { + if (!setNoFullPreview_ || !setNoCtrl_) return; + const std::string full = composeFullSetNo(setNoCtrl_->GetValue().ToStdString(wxConvUTF8)); + if (full.empty()) { + setNoFullPreview_->SetLabel("(n/a)"); + } else { + setNoFullPreview_->SetLabel(wxString::Format("(%s)", wxString::FromUTF8(full.c_str()))); + } + setNoFullPreview_->GetParent()->Layout(); +} + +} // namespace ccm::ui diff --git a/ui_wx/src/YuGiOhCardListPanel.cpp b/ui_wx/src/YuGiOhCardListPanel.cpp new file mode 100644 index 0000000..ebddb7b --- /dev/null +++ b/ui_wx/src/YuGiOhCardListPanel.cpp @@ -0,0 +1,69 @@ +#include "ccm/ui/YuGiOhCardListPanel.hpp" + +#include "ccm/services/CardFilter.hpp" +#include "ccm/ui/SvgIcons.hpp" + +#include + +namespace ccm::ui { + +YuGiOhCardListPanel::YuGiOhCardListPanel(wxWindow* parent) + : BaseCardListPanel(parent) { + buildLayout(); +} + +std::vector +YuGiOhCardListPanel::declareTextColumns() const { + return { + {"Name", 200, wxLIST_FORMAT_LEFT, YuGiOhSortColumn::Name}, + {"Set", 160, wxLIST_FORMAT_LEFT, YuGiOhSortColumn::SetReleaseDate}, + {"Amount", 70, wxLIST_FORMAT_RIGHT, YuGiOhSortColumn::Amount}, + {"Condition", 100, wxLIST_FORMAT_LEFT, YuGiOhSortColumn::Condition}, + {"Language", 100, wxLIST_FORMAT_LEFT, YuGiOhSortColumn::Language}, + {"Note", 180, wxLIST_FORMAT_LEFT, YuGiOhSortColumn::Note}, + }; +} + +std::vector +YuGiOhCardListPanel::declareIconColumns() const { + constexpr int kFlagColWidth = 36; + return { + {kSvgFirstEdition, kFlagColWidth, YuGiOhSortColumn::FirstEdition}, + {kSvgSigned, kFlagColWidth, YuGiOhSortColumn::Signed}, + {kSvgAltered, kFlagColWidth, YuGiOhSortColumn::Altered}, + }; +} + +std::string YuGiOhCardListPanel::renderTextCell(const YuGiOhCard& card, + std::size_t idx) const { + switch (idx) { + case 0: return card.name; + case 1: return card.set.name; + case 2: return std::to_string(card.amount); + case 3: return std::string(to_string(card.condition)); + case 4: return std::string(to_string(card.language)); + case 5: return card.note; + } + return {}; +} + +bool YuGiOhCardListPanel::isIconColumnSet(const YuGiOhCard& card, + std::size_t idx) const { + switch (idx) { + case 0: return card.firstEdition; + case 1: return card.signed_; + case 2: return card.altered; + } + return false; +} + +void YuGiOhCardListPanel::sortBy(YuGiOhSortColumn column, bool ascending) { + sortYuGiOhCards(mutableCards(), column, ascending); +} + +bool YuGiOhCardListPanel::matchesFilter(const YuGiOhCard& card, + std::string_view filter) const { + return matchesYuGiOhFilter(card, filter); +} + +} // namespace ccm::ui diff --git a/ui_wx/src/YuGiOhGameView.cpp b/ui_wx/src/YuGiOhGameView.cpp new file mode 100644 index 0000000..a16b645 --- /dev/null +++ b/ui_wx/src/YuGiOhGameView.cpp @@ -0,0 +1,209 @@ +#include "ccm/ui/YuGiOhGameView.hpp" + +#include "ccm/ui/YuGiOhCardEditDialog.hpp" +#include "ccm/ui/YuGiOhCardListPanel.hpp" +#include "ccm/ui/YuGiOhSelectedCardPanel.hpp" + +#include + +#include +#include +#include + +namespace ccm::ui { + +YuGiOhGameView::YuGiOhGameView(ConfigService& config, + CollectionService& collection, + SetService& sets, + ImageService& images, + CardPreviewService& cardPreview, + IGameModule& module) + : config_(config), + collection_(collection), + sets_(sets), + images_(images), + cardPreview_(cardPreview), + module_(module) {} + +void YuGiOhGameView::ensureSetsLoaded() { + if (attemptedInitialSetLoad_) return; + attemptedInitialSetLoad_ = true; + + auto cached = sets_.getSets(Game::YuGiOh); + if (cached) { + setsCache_ = std::move(cached).value(); + std::sort(setsCache_.begin(), setsCache_.end(), + [](const Set& a, const Set& b) { return a.releaseDate < b.releaseDate; }); + if (!setsCache_.empty()) return; + } else { + setsCache_.clear(); + } + + auto refreshed = sets_.updateSets(Game::YuGiOh); + if (refreshed) { + setsCache_ = std::move(refreshed).value(); + std::sort(setsCache_.begin(), setsCache_.end(), + [](const Set& a, const Set& b) { return a.releaseDate < b.releaseDate; }); + } +} + +wxPanel* YuGiOhGameView::listPanel(wxWindow* parent) { + if (listPanel_ == nullptr) { + listPanel_ = new YuGiOhCardListPanel(parent); + listPanel_->Bind(EVT_CARD_SELECTED, [this](wxCommandEvent&) { + if (selectedPanel_ != nullptr && listPanel_ != nullptr) { + selectedPanel_->setCard(listPanel_->selected()); + } + }); + } + return listPanel_; +} + +wxPanel* YuGiOhGameView::selectedPanel(wxWindow* parent) { + if (selectedPanel_ == nullptr) { + selectedPanel_ = new YuGiOhSelectedCardPanel(parent, images_, cardPreview_); + } + return selectedPanel_; +} + +void YuGiOhGameView::refreshCollection() { + if (listPanel_ == nullptr) return; + auto loaded = collection_.list(Game::YuGiOh); + if (!loaded) { + showThemedMessageDialog(nullptr, "Failed to load Yu-Gi-Oh! collection: " + loaded.error(), + "Error", wxOK | wxICON_ERROR); + return; + } + listPanel_->setCards(std::move(loaded).value()); + listPanel_->activateSelection(); + if (selectedPanel_) selectedPanel_->setCard(listPanel_->selected()); +} + +const std::vector& YuGiOhGameView::setsForDialog() { + ensureSetsLoaded(); + if (!setsCache_.empty()) return setsCache_; + auto loaded = sets_.getSets(Game::YuGiOh); + if (loaded) { + setsCache_ = std::move(loaded).value(); + std::sort(setsCache_.begin(), setsCache_.end(), + [](const Set& a, const Set& b) { return a.releaseDate < b.releaseDate; }); + } + else setsCache_.clear(); + return setsCache_; +} + +void YuGiOhGameView::onAddCard(wxWindow* parentWindow) { + YuGiOhCard fresh; + fresh.amount = 1; + fresh.language = Language::English; + fresh.condition = Condition::NearMint; + + YuGiOhCardEditDialog dlg(parentWindow, images_, sets_, cardPreview_, EditMode::Create, fresh, + &setsForDialog()); + { + const Theme currentTheme = config_.current().theme; + const ThemePalette palette = paletteForTheme(currentTheme); + applyThemeToWindowTree(&dlg, palette, currentTheme); + dlg.SetBackgroundColour(palette.panelBg); + dlg.SetForegroundColour(palette.text); + } + if (dlg.ShowModal() != wxID_OK) return; + + auto added = collection_.add(Game::YuGiOh, dlg.card()); + if (!added) { + showThemedMessageDialog(parentWindow, "Failed to add card: " + added.error(), + "Error", wxOK | wxICON_ERROR); + return; + } + + YuGiOhCard persisted = dlg.card(); + persisted.id = added.value(); + auto normalized = images_.normalizeNamesForPersistedCard( + Game::YuGiOh, persisted.id, persisted.set.name, persisted.name, persisted.images); + if (normalized) { + if (normalized.value() != persisted.images) { + persisted.images = std::move(normalized).value(); + auto updated = collection_.update(Game::YuGiOh, persisted); + if (!updated) { + showThemedMessageDialog(parentWindow, "Card added, but image name normalization failed to persist: " + updated.error(), + "Warning", wxOK | wxICON_WARNING); + } + } + } else { + showThemedMessageDialog(parentWindow, "Card added, but image rename to ID-prefixed format failed: " + normalized.error(), + "Warning", wxOK | wxICON_WARNING); + } + refreshCollection(); +} + +void YuGiOhGameView::onEditCard(wxWindow* parentWindow) { + if (listPanel_ == nullptr) return; + auto sel = listPanel_->selected(); + if (!sel) { + showThemedMessageDialog(parentWindow, "Select a card first.", "Edit", wxOK | wxICON_INFORMATION); + return; + } + YuGiOhCardEditDialog dlg(parentWindow, images_, sets_, cardPreview_, EditMode::Edit, *sel, + &setsForDialog()); + { + const Theme currentTheme = config_.current().theme; + const ThemePalette palette = paletteForTheme(currentTheme); + applyThemeToWindowTree(&dlg, palette, currentTheme); + dlg.SetBackgroundColour(palette.panelBg); + dlg.SetForegroundColour(palette.text); + } + if (dlg.ShowModal() != wxID_OK) return; + auto updated = collection_.update(Game::YuGiOh, dlg.card()); + if (!updated) { + showThemedMessageDialog(parentWindow, "Failed to update card: " + updated.error(), + "Error", wxOK | wxICON_ERROR); + return; + } + refreshCollection(); +} + +void YuGiOhGameView::onDeleteCard(wxWindow* parentWindow) { + if (listPanel_ == nullptr) return; + auto sel = listPanel_->selected(); + if (!sel) { + showThemedMessageDialog(parentWindow, "Select a card first.", "Delete", wxOK | wxICON_INFORMATION); + return; + } + if (showThemedConfirmDialog(parentWindow, "Delete \"" + sel->name + "\"?", + "Confirm") != wxID_YES) { + return; + } + auto removed = collection_.remove(Game::YuGiOh, sel->id); + if (!removed) { + showThemedMessageDialog(parentWindow, "Failed to delete card: " + removed.error(), + "Error", wxOK | wxICON_ERROR); + return; + } + refreshCollection(); +} + +std::string YuGiOhGameView::onUpdateSets(wxWindow* parentWindow) { + auto out = sets_.updateSets(Game::YuGiOh); + if (!out) { + showThemedMessageDialog(parentWindow, "Failed to update sets: " + out.error(), + "Error", wxOK | wxICON_ERROR); + return "Update failed"; + } + setsCache_ = out.value(); + std::sort(setsCache_.begin(), setsCache_.end(), + [](const Set& a, const Set& b) { return a.releaseDate < b.releaseDate; }); + showThemedMessageDialog(parentWindow, "Updated " + std::to_string(out.value().size()) + " Yu-Gi-Oh! sets.", + "Sets updated", wxOK | wxICON_INFORMATION); + return "Yu-Gi-Oh! sets updated."; +} + +void YuGiOhGameView::setFilter(std::string_view filter) { + if (listPanel_) listPanel_->setFilter(filter); +} + +void YuGiOhGameView::applyTheme(const ThemePalette& palette) { + if (listPanel_) listPanel_->applyTheme(palette); + if (selectedPanel_) selectedPanel_->applyTheme(palette); +} + +} // namespace ccm::ui diff --git a/ui_wx/src/YuGiOhSelectedCardPanel.cpp b/ui_wx/src/YuGiOhSelectedCardPanel.cpp new file mode 100644 index 0000000..add9a9b --- /dev/null +++ b/ui_wx/src/YuGiOhSelectedCardPanel.cpp @@ -0,0 +1,89 @@ +#include "ccm/ui/YuGiOhSelectedCardPanel.hpp" + +#include "ccm/ui/SvgIcons.hpp" + +#include + +namespace ccm::ui { + +namespace { +enum YuGiOhDetailKey : int { + kName = 0, + kSet, + kSetNo, + kRarity, + kLanguage, + kCondition, + kAmount, + kFirstEdition, + kSigned, + kAltered, +}; +} // namespace + +YuGiOhSelectedCardPanel::YuGiOhSelectedCardPanel(wxWindow* parent, + ImageService& imageService, + CardPreviewService& cardPreview) + : BaseSelectedCardPanel(parent, imageService, cardPreview) { + buildLayout(); +} + +std::vector +YuGiOhSelectedCardPanel::declareDetailRows() const { + return { + {"Name", kName, "(no card selected)"}, + {"Set", kSet, ""}, + {"Set #", kSetNo, ""}, + {"Rarity", kRarity, ""}, + {"Language", kLanguage, ""}, + {"Condition", kCondition, ""}, + {"Amount", kAmount, ""}, + }; +} + +std::vector +YuGiOhSelectedCardPanel::declareFlagIcons() const { + return { + {kSvgFirstEdition, "1. Edition", kFirstEdition}, + {kSvgSigned, "Signed", kSigned}, + {kSvgAltered, "Altered", kAltered}, + }; +} + +std::string YuGiOhSelectedCardPanel::detailValueFor(const YuGiOhCard& card, + DetailKey key) const { + switch (key) { + case kName: return card.name; + case kSet: return card.set.name; + case kSetNo: return card.setNo; + case kRarity: return card.rarity; + case kLanguage: return std::string(to_string(card.language)); + case kCondition: return std::string(to_string(card.condition)); + case kAmount: return std::to_string(card.amount); + case kNoteKey: return card.note; + } + return {}; +} + +bool YuGiOhSelectedCardPanel::isFlagSet(const YuGiOhCard& card, DetailKey key) const { + switch (key) { + case kFirstEdition: return card.firstEdition; + case kSigned: return card.signed_; + case kAltered: return card.altered; + } + return false; +} + +std::tuple +YuGiOhSelectedCardPanel::previewKey(const YuGiOhCard& card) const { + // Pack rarity and edition into the third tuple slot so the YGO preview + // source can build Yugipedia file names without changing the generic + // ICardPreviewSource interface. Format: "||||<1E|UE>". + // Yugipedia per-printing scans need the edition stamp to disambiguate + // 1st-Edition vs Unlimited reprints. + const char* const editionTag = card.firstEdition ? "1E" : "UE"; + return {card.name, card.set.name, + card.setNo + "||" + card.rarity + "||" + editionTag}; +} + +} // namespace ccm::ui