From cd0cca62642744b94dba582e5e7e679f46598ff6 Mon Sep 17 00:00:00 2001 From: gouyt13clear Date: Fri, 9 Oct 2026 14:44:03 +0800 Subject: [PATCH] test: add historical index persistence compatibility coverage --- AGENTS.md | 3 + docs/docs/quick_start.md | 10 ++ tests/CMakeLists.txt | 3 + tests/README.md | 5 + tests/fixtures/persistence/.gitattributes | 3 + tests/fixtures/persistence/CMakeLists.txt | 13 ++ tests/fixtures/persistence/README.md | 55 ++++++++ tests/fixtures/persistence/generate.cpp | 96 ++++++++++++++ tests/fixtures/persistence/manifest.json | 34 +++++ .../persistence/v0.5.2/hnsw4_ip.expected | 17 +++ .../persistence/v0.5.2/hnsw4_ip.index | Bin 0 -> 6577 bytes .../persistence/v0.5.2/hnsw4_l2.expected | 17 +++ .../persistence/v0.5.2/hnsw4_l2.index | Bin 0 -> 6577 bytes .../persistence/v0.5.2/ivf32_ip.expected | 17 +++ .../persistence/v0.5.2/ivf32_ip.index | Bin 0 -> 11134 bytes .../persistence/v0.5.2/ivf32_l2.expected | 17 +++ .../persistence/v0.5.2/ivf32_l2.index | Bin 0 -> 11134 bytes .../persistence/v0.5.2/ivf4_ip.expected | 17 +++ .../fixtures/persistence/v0.5.2/ivf4_ip.index | Bin 0 -> 4390 bytes .../persistence/v0.5.2/ivf4_l2.expected | 17 +++ .../fixtures/persistence/v0.5.2/ivf4_l2.index | Bin 0 -> 4390 bytes .../persistence/v0.5.2/qg0_ip.expected | 17 +++ .../fixtures/persistence/v0.5.2/qg0_ip.index | Bin 0 -> 38250 bytes .../persistence/v0.5.2/qg0_l2.expected | 17 +++ .../fixtures/persistence/v0.5.2/qg0_l2.index | Bin 0 -> 38250 bytes .../persistence/v0.5.2/qg4_ip.expected | 17 +++ .../fixtures/persistence/v0.5.2/qg4_ip.index | Bin 0 -> 32578 bytes .../persistence/v0.5.2/qg4_l2.expected | 17 +++ .../fixtures/persistence/v0.5.2/qg4_l2.index | Bin 0 -> 32578 bytes .../persistence/v0.5.2/qg8_ip.expected | 17 +++ .../fixtures/persistence/v0.5.2/qg8_ip.index | Bin 0 -> 34690 bytes .../persistence/v0.5.2/qg8_l2.expected | 17 +++ .../fixtures/persistence/v0.5.2/qg8_l2.index | Bin 0 -> 34690 bytes tests/python/test_historical_persistence.py | 108 ++++++++++++++++ .../index/historical_persistence_test.cpp | 117 ++++++++++++++++++ 35 files changed, 651 insertions(+) create mode 100644 tests/fixtures/persistence/.gitattributes create mode 100644 tests/fixtures/persistence/CMakeLists.txt create mode 100644 tests/fixtures/persistence/README.md create mode 100644 tests/fixtures/persistence/generate.cpp create mode 100644 tests/fixtures/persistence/manifest.json create mode 100644 tests/fixtures/persistence/v0.5.2/hnsw4_ip.expected create mode 100644 tests/fixtures/persistence/v0.5.2/hnsw4_ip.index create mode 100644 tests/fixtures/persistence/v0.5.2/hnsw4_l2.expected create mode 100644 tests/fixtures/persistence/v0.5.2/hnsw4_l2.index create mode 100644 tests/fixtures/persistence/v0.5.2/ivf32_ip.expected create mode 100644 tests/fixtures/persistence/v0.5.2/ivf32_ip.index create mode 100644 tests/fixtures/persistence/v0.5.2/ivf32_l2.expected create mode 100644 tests/fixtures/persistence/v0.5.2/ivf32_l2.index create mode 100644 tests/fixtures/persistence/v0.5.2/ivf4_ip.expected create mode 100644 tests/fixtures/persistence/v0.5.2/ivf4_ip.index create mode 100644 tests/fixtures/persistence/v0.5.2/ivf4_l2.expected create mode 100644 tests/fixtures/persistence/v0.5.2/ivf4_l2.index create mode 100644 tests/fixtures/persistence/v0.5.2/qg0_ip.expected create mode 100644 tests/fixtures/persistence/v0.5.2/qg0_ip.index create mode 100644 tests/fixtures/persistence/v0.5.2/qg0_l2.expected create mode 100644 tests/fixtures/persistence/v0.5.2/qg0_l2.index create mode 100644 tests/fixtures/persistence/v0.5.2/qg4_ip.expected create mode 100644 tests/fixtures/persistence/v0.5.2/qg4_ip.index create mode 100644 tests/fixtures/persistence/v0.5.2/qg4_l2.expected create mode 100644 tests/fixtures/persistence/v0.5.2/qg4_l2.index create mode 100644 tests/fixtures/persistence/v0.5.2/qg8_ip.expected create mode 100644 tests/fixtures/persistence/v0.5.2/qg8_ip.index create mode 100644 tests/fixtures/persistence/v0.5.2/qg8_l2.expected create mode 100644 tests/fixtures/persistence/v0.5.2/qg8_l2.index create mode 100644 tests/python/test_historical_persistence.py create mode 100644 tests/unit/rabitqlib/index/historical_persistence_test.cpp diff --git a/AGENTS.md b/AGENTS.md index 17a83263..8f0b56e5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -170,6 +170,9 @@ validated sizes before allocation, checked reads, and a compatibility fixture or path. Review each affected index format; preserve SymphonyQG's versioned quantized format and legacy raw fallback unless a breaking change is authorized. +Frozen release-produced indexes and reference searches live in `tests/fixtures/persistence/`; +keep their provenance and hashes, and do not regenerate them with the current writer. + Use `python_bindings/bindings_common.hpp` for shared conversions. Validate array rank, dimensions, index state, and parameter ranges before entering the core. `py::array::forcecast` permits copies; do not use it where callers expect in-place mutation or pointer identity. diff --git a/docs/docs/quick_start.md b/docs/docs/quick_start.md index b086dbfa..456a5dac 100644 --- a/docs/docs/quick_start.md +++ b/docs/docs/quick_start.md @@ -187,6 +187,16 @@ before starting the program. Index save/load paths are UTF-8 strings on Windows and native path bytes on POSIX in C++; Python paths are Unicode strings on all platforms. +### Index file compatibility + +The compatibility suite loads frozen files written by v0.5.2, compares search +IDs and distances, and verifies save/load migration and rejection of truncated +or unsupported versions. See the +[fixture provenance and coverage](https://github.com/VectorDB-NTU/RaBitQ-Library/tree/main/tests/fixtures/persistence). +Compatibility is format-specific; preserving old readers' ability to open new +files is not guaranteed. Consult each index's format documentation before +downgrading the library. + ### Build the Python bindings from source Source builds require Python 3.11 or newer, a C++17 compiler, CMake 3.20 or diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index e03bcf03..1c8f0eee 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -27,6 +27,9 @@ add_executable(rabitq_tests ${INTEG_TESTS} ) target_include_directories(rabitq_tests PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/common) +set_source_files_properties(unit/rabitqlib/index/historical_persistence_test.cpp + PROPERTIES COMPILE_DEFINITIONS + "RABITQ_TEST_FIXTURE_DIR=\"${CMAKE_CURRENT_SOURCE_DIR}/fixtures/persistence/v0.5.2\"") rabitq_configure_target(rabitq_tests) # Link google test and rabitqlib headers diff --git a/tests/README.md b/tests/README.md index 469c1897..e614c588 100644 --- a/tests/README.md +++ b/tests/README.md @@ -3,6 +3,11 @@ This directory contains the C++ unit and integration tests and the Python binding tests for RaBitQ Library. +Persistence tests include [frozen release-produced indexes](fixtures/persistence/README.md) +and search results, in addition to current round trips. C++ and installed-wheel +tests load the same fixtures, compare search results, and verify save/load migration +and rejection of truncated or unsupported formats. + ## Prerequisites - CMake 3.20 or newer for the `ctest --test-dir` commands below (4.2 or newer diff --git a/tests/fixtures/persistence/.gitattributes b/tests/fixtures/persistence/.gitattributes new file mode 100644 index 00000000..df5ad8ed --- /dev/null +++ b/tests/fixtures/persistence/.gitattributes @@ -0,0 +1,3 @@ +*.index -text +*.expected text eol=lf +manifest.json text eol=lf diff --git a/tests/fixtures/persistence/CMakeLists.txt b/tests/fixtures/persistence/CMakeLists.txt new file mode 100644 index 00000000..34c51b95 --- /dev/null +++ b/tests/fixtures/persistence/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.20) +project(rabitq_historical_fixtures LANGUAGES CXX) + +if(NOT IS_DIRECTORY "${RABITQ_HISTORICAL_SOURCE}") + message(FATAL_ERROR "Set RABITQ_HISTORICAL_SOURCE to the pinned historical checkout") +endif() +set(RABITQ_BUILD_TESTS OFF CACHE BOOL "" FORCE) +set(RABITQ_BUILD_SAMPLES OFF CACHE BOOL "" FORCE) +set(RABITQ_BUILD_PYTHON_BINDINGS OFF CACHE BOOL "" FORCE) +set(RABITQ_ENABLE_NATIVE_OPTIMIZATION OFF CACHE BOOL "" FORCE) +add_subdirectory("${RABITQ_HISTORICAL_SOURCE}" historical) +add_executable(generate_fixtures generate.cpp) +target_link_libraries(generate_fixtures PRIVATE rabitqlib::rabitqlib) diff --git a/tests/fixtures/persistence/README.md b/tests/fixtures/persistence/README.md new file mode 100644 index 00000000..e4858802 --- /dev/null +++ b/tests/fixtures/persistence/README.md @@ -0,0 +1,55 @@ +# Historical persistence fixtures + +These files were written by release **v0.5.2**, commit +`d929e30dbb7ded52db1830736a2356fbc7dba99a`, using [generate.cpp](generate.cpp). +Tests load committed bytes; they do not generate indexes with the current writer. +[manifest.json](manifest.json) records the producer and SHA-256 hashes of every +index and its reference search results. Keep existing fixtures unchanged when +adding a new format or release. + +The twelve cases cover L2 and inner product for: + +- IVF four-bit legacy files without a header, and raw-vector IVF v1 files; +- HNSW four-bit files, including persisted removal of point 0; +- SymphonyQG legacy raw files and versioned four/eight-bit files. + +IVF also persists removal of point 0. Each file contains 33 points in 65 original +dimensions and the historical **128-dimensional padded domain**. This differs +from current construction's 96 dimensions and detects accidental regeneration +of rotation or padding on load. The `.expected` files hold the point count, +dimension, query count, k, original queries, and ordered ID/distance pairs from +the historical implementation. + +Tests require identical result IDs and allow distance error of +`2e-4 * max(1, abs(reference))` in C++, or `rtol=atol=2e-4` in Python, to account +for compiler and SIMD reductions. The native formats contain `size_t`: these +fixtures target the supported little-endian, 64-bit platforms, not a portable +interchange format for arbitrary architectures. Python also tests synthetic IVF +v1 headers around the frozen historical payload, unknown versions, and invalid +padding. That header test is distinct from release-produced fixtures. + +The small IVF fixtures use Flat centroid routing. Current round-trip and failure +tests exercise explicit HNSW routing and its sidecar; historical auto-selected +HNSW routing at 20,000 clusters is not represented by these small fixtures. + +## Deliberate regeneration + +Use an isolated copy of the pinned release. Do not point this build at the +current source tree. For example, from the repository root: + +```bash +mkdir -p build/fixtures/v0.5.2 +git archive v0.5.2 | tar -x -C build/fixtures/v0.5.2 +cmake -S tests/fixtures/persistence -B build/fixtures/generator \ + -DRABITQ_HISTORICAL_SOURCE="$PWD/build/fixtures/v0.5.2" \ + -DCMAKE_BUILD_TYPE=Release +cmake --build build/fixtures/generator --config Release --parallel 2 +``` + +Run the resulting `generate_fixtures` executable with a **new output directory**. +On Windows it is under `build/fixtures/generator/Release/`. Review the new +artifacts and record their hashes and compiler/ISA in a separate manifest before +adopting them. Some historical constructors seed rotation from `random_device`, +so rebuilding does not promise byte-identical files; each committed index and its +reference results form a fixed pair. `.gitattributes` prevents newline conversion +from changing fixture hashes on Windows. diff --git a/tests/fixtures/persistence/generate.cpp b/tests/fixtures/persistence/generate.cpp new file mode 100644 index 00000000..548aa5ba --- /dev/null +++ b/tests/fixtures/persistence/generate.cpp @@ -0,0 +1,96 @@ +// Build only against the pinned historical source, never the current checkout. +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rabitqlib/index/hnsw/hnsw.hpp" +#include "rabitqlib/index/ivf/ivf.hpp" +#include "rabitqlib/index/symqg/qg.hpp" +#include "rabitqlib/index/symqg/qg_builder.hpp" + +int main(int argc, char** argv) { + if (argc != 2) { + throw std::invalid_argument("Pass the fixture output directory"); + } + using namespace rabitqlib; + constexpr size_t kCount = 33, kDim = 65, kQueries = 3, kTopK = 5; + const std::filesystem::path directory(argv[1]); + std::filesystem::create_directories(directory); + uint32_t state = 713; + const auto next = [&state] { + state = state * 1664525U + 1013904223U; + return static_cast(static_cast((state >> 8) % 2001) - 1000) / 256.0F; + }; + std::vector data(kCount * kDim), queries(kQueries * kDim), centroid(kDim); + for (auto& value : data) + value = next(); + for (auto& value : queries) + value = next(); + for (size_t i = 0; i < kCount; ++i) { + for (size_t d = 0; d < kDim; ++d) + centroid[d] += data[i * kDim + d] / kCount; + } + std::vector clusters(kCount, 0); + for (auto metric : {METRIC_L2, METRIC_IP}) { + for (const std::string kind : {"ivf4", "ivf32", "hnsw4", "qg0", "qg4", "qg8"}) { + const std::string name = kind + (metric == METRIC_L2 ? "_l2" : "_ip"); + const auto path = (directory / (name + ".index")).string(); + std::vector ids(kQueries * kTopK); + std::vector distances(ids.size()); + if (kind.substr(0, 3) == "ivf") { + ivf::IVF index(kCount, kDim, 1, kind == "ivf32" ? 32 : 4, metric); + index.construct(data.data(), centroid.data(), clusters.data(), false, 1); + const PID removed = 0; + index.remove(&removed, 1); + index.save(path.c_str()); + index.search_batch( + queries.data(), kQueries, kTopK, 1, ids.data(), distances.data() + ); + } else if (kind == "hnsw4") { + hnsw::HierarchicalNSW index(kCount, kDim, 4, 8, 64, 42, metric); + index.construct( + 1, centroid.data(), kCount, data.data(), clusters.data(), 1 + ); + const PID removed = 0; + index.remove(&removed, 1); + index.save(path.c_str()); + const auto result = index.search(queries.data(), kQueries, kTopK, 64, 1); + for (size_t i = 0; i < kQueries; ++i) { + for (size_t j = 0; j < kTopK; ++j) { + ids[i * kTopK + j] = result[i][j].second; + distances[i * kTopK + j] = result[i][j].first; + } + } + } else { + const size_t bits = kind == "qg0" ? 0 : (kind == "qg4" ? 4 : 8); + symqg::QuantizedGraph index( + kCount, kDim, 32, metric, RotatorType::FhtKacRotator, bits, 42 + ); + symqg::QGBuilder builder( + index, 64, data.data(), 1, symqg::QGInitialization::PiPNN, 42 + ); + builder.build(); + index.save(path.c_str()); + index.set_ef(64); + index.search_batch( + queries.data(), kQueries, kTopK, ids.data(), distances.data(), 1 + ); + } + std::ofstream expected(directory / (name + ".expected"), std::ios::binary); + expected.exceptions(std::ios::failbit | std::ios::badbit); + expected << std::setprecision(std::numeric_limits::max_digits10); + expected << kCount << ' ' << kDim << ' ' << kQueries << ' ' << kTopK << '\n'; + for (size_t i = 0; i < queries.size(); ++i) + expected << queries[i] << (i + 1 == queries.size() ? '\n' : ' '); + for (size_t i = 0; i < ids.size(); ++i) + expected << ids[i] << ' ' << distances[i] << '\n'; + expected.close(); + } + } +} diff --git a/tests/fixtures/persistence/manifest.json b/tests/fixtures/persistence/manifest.json new file mode 100644 index 00000000..635f7aeb --- /dev/null +++ b/tests/fixtures/persistence/manifest.json @@ -0,0 +1,34 @@ +{ + "source_tag": "v0.5.2", + "source_commit": "d929e30dbb7ded52db1830736a2356fbc7dba99a", + "writer": "generate.cpp", + "producer": "Windows x86-64, MSVC 19.51.36257, AVX2, one thread, native optimization OFF", + "byte_order": "little", + "size_t_bytes": 8, + "sha256": { + "v0.5.2/hnsw4_ip.expected": "b4cace8e528f3934167b3a3724d0d5a4a1f6b9aca26317b7f6eed3ae522e4497", + "v0.5.2/hnsw4_ip.index": "6015e29fed514ba7c6b90ccd538218a1719cdfac5c548da837e85af1012818ba", + "v0.5.2/hnsw4_l2.expected": "632a19638aa7f7c716e3310f21b28773d5956d708295ff821ff861084a67020d", + "v0.5.2/hnsw4_l2.index": "8161c900b3b85ba00b6aa89a9c24740fce94541bdee0e7b1dbe23073156cad88", + "v0.5.2/ivf32_ip.expected": "e0d953927d08b619c75b9424a032f136d32d3756d3fde4bf8c6abe0b7b743a28", + "v0.5.2/ivf32_ip.index": "f98eabdaf408569ffeb4480b4c5f12d8a2b893f970646f9c26a7773ff453b93d", + "v0.5.2/ivf32_l2.expected": "a9ba0430f4c8a517168aa1ff75bad72d7f6089161561412a75976fc970400f9c", + "v0.5.2/ivf32_l2.index": "c395ace9210c79ea55fa7f842920413cf9848aba02b6c0f3cbee30538a20c4c2", + "v0.5.2/ivf4_ip.expected": "6cc51bd995a4d6dad7f1467074de13d1d8d129895c90e67bf3ade771b6ad741d", + "v0.5.2/ivf4_ip.index": "34135508210fa39db36b7ccef7f04b029d5d9185d35be702982682d83137ab8a", + "v0.5.2/ivf4_l2.expected": "e7881505994bbb518c75d466dffcba2a5fa4dc81d3782fa6417d0c3ccc965e26", + "v0.5.2/ivf4_l2.index": "477c0f37502efc0a7a99587eb3bc0abe24b8b11d465b35aed87a60eb7a48b0c2", + "v0.5.2/qg0_ip.expected": "f7b9c5d1884c21b7cef507b43ee13c69fc1e5037168d1e432a12aa1e6ccedddb", + "v0.5.2/qg0_ip.index": "3f22cbc4a7daa3fdf9024fa8afb38de8ea26216bb5ebb6d4d3d92d15b83b08cf", + "v0.5.2/qg0_l2.expected": "ddfe995d8c67d4bd7123dbe8b8eef60b713899d5c58b0bfada112b4c965c9319", + "v0.5.2/qg0_l2.index": "50b28977edb17048744dd6c2039963bb550ecc471076d0c98c1bcb47f8d08ea8", + "v0.5.2/qg4_ip.expected": "ea91f5dd31b7c395998b16d72e645708d5d1b523d5a9f68e8c1b760679ee4cd4", + "v0.5.2/qg4_ip.index": "8039c3b58d927cc281bc2e9785b4efc2bb9a046bb06189d8e3040fe87d032227", + "v0.5.2/qg4_l2.expected": "6913d262200c128d20940bb2223354d45b51749d137e6344588091aa039e5495", + "v0.5.2/qg4_l2.index": "77554486d9b0de7beb414d1a4d6201dc0c13d1f1c8afda662bdbc732113b63f0", + "v0.5.2/qg8_ip.expected": "4151968625f09edba7dd0061acef59368094890ab3975a551ffe723b4133193a", + "v0.5.2/qg8_ip.index": "542a8e86cc686349406896c3838d889ee7873f6edc7de1c09b5806176846a5f6", + "v0.5.2/qg8_l2.expected": "7385b1a5396c84e994821a0a512ff039337852c9a4e0d2075c1cbbe3246cef2a", + "v0.5.2/qg8_l2.index": "be5ea3d4fd3d61059d7ec985a79eaadbc3d3e7f744042707a7df0d846e2d1efb" + } +} diff --git a/tests/fixtures/persistence/v0.5.2/hnsw4_ip.expected b/tests/fixtures/persistence/v0.5.2/hnsw4_ip.expected new file mode 100644 index 00000000..b9a79485 --- /dev/null +++ b/tests/fixtures/persistence/v0.5.2/hnsw4_ip.expected @@ -0,0 +1,17 @@ +33 65 3 5 +-1.2578125 -3.078125 -3.328125 0.67578125 3.171875 -0.2578125 -2.796875 0.91015625 -3.859375 0.328125 2.296875 -2.0859375 -0.66015625 -3.3046875 2.19140625 2.1484375 2.328125 3.7890625 3.3515625 0.08203125 1.41796875 1.43359375 -1.1484375 1.4375 2.55078125 2.0703125 -1.5859375 -2.8046875 -2.2890625 1.73828125 -2.41796875 -3.09765625 1.53515625 -3.6953125 -0.66796875 0.67578125 0.96484375 -2.9296875 2.41796875 1.25390625 -1.8984375 3.14453125 2.359375 0.65625 -2.52734375 -0.17578125 -0.80859375 -2.171875 -1.63671875 -0.421875 -3.08203125 -0.1328125 -1.94140625 2.734375 2.1875 -2.1015625 3.828125 3.82421875 -3.61328125 -0.9921875 -3.27734375 2.9765625 2.29296875 0.7421875 3.48828125 -2.58203125 1.0234375 -3.12109375 1.83203125 -2.29296875 1.05859375 2.15234375 -2.5390625 -2.3125 -2.7265625 -3.33203125 1.671875 3.6796875 3.53515625 -1.75 0.6328125 -3.1171875 -2.6875 -0.3671875 -2.640625 -2.52734375 -0.65625 1.89453125 -1.08984375 0.25390625 -3.65234375 1.08203125 -0.55078125 3.6171875 2.80078125 2.265625 2.80078125 0.98828125 -1.03515625 1.0234375 -0.04296875 2.95703125 1.8125 -1.6796875 2.75390625 -3.70703125 1.60546875 0.27734375 -3.2265625 -2.57421875 -0.875 1.40234375 -3.55078125 2.80859375 2.953125 3.37109375 -0.02734375 3.16796875 3.23828125 -0.21875 0.57421875 -2.82421875 3.80078125 1.66796875 -3.30859375 -1.21875 1.05078125 1.0546875 2.2890625 3.84765625 1.58984375 -0.7734375 -0.48046875 1.28125 -1.30859375 -1.27734375 2.67578125 1.19921875 2.3515625 -0.140625 -3.828125 -3.84375 1.0703125 -2.27734375 -2.05859375 3.59375 1.3359375 -3.44140625 -0.40234375 -0.26953125 1.671875 -3.24609375 -3.42578125 0.76953125 -0.67578125 -1.53125 -3.2578125 3.65234375 -2.9921875 3.4609375 0.25390625 1.5390625 -0.78125 2.109375 0.99609375 1.5078125 -0.33203125 -1.4296875 -0.01953125 -0.625 2.609375 0.796875 -1.1875 1.125 3.62890625 -3.23046875 -2.91015625 3.0859375 2.23828125 -3.6015625 -1.38671875 3.0703125 -2.2890625 -3.375 3.0390625 -2.02734375 -0.9140625 1 -0.0546875 0.66796875 -3.52734375 -2.8046875 0.93359375 -3.21875 -2.05859375 +17 -107.63942 +30 -97.97155 +26 -96.9916306 +9 -67.9665985 +12 -56.8626518 +10 -88.5409393 +4 -52.2220459 +24 -42.5000038 +29 -40.7176285 +23 -28.9736595 +8 -71.0609741 +31 -47.7379608 +14 -38.9586029 +26 -37.554657 +19 -36.1280594 diff --git a/tests/fixtures/persistence/v0.5.2/hnsw4_ip.index b/tests/fixtures/persistence/v0.5.2/hnsw4_ip.index new file mode 100644 index 0000000000000000000000000000000000000000..992ba0c3514012436613aada95680a34a1977360 GIT binary patch literal 6577 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 MvZ8mBRG`~`0TZ5)I{*Lx literal 0 HcmV?d00001 diff --git a/tests/fixtures/persistence/v0.5.2/hnsw4_l2.expected b/tests/fixtures/persistence/v0.5.2/hnsw4_l2.expected new file mode 100644 index 00000000..75dd4c9c --- /dev/null +++ b/tests/fixtures/persistence/v0.5.2/hnsw4_l2.expected @@ -0,0 +1,17 @@ +33 65 3 5 +-1.2578125 -3.078125 -3.328125 0.67578125 3.171875 -0.2578125 -2.796875 0.91015625 -3.859375 0.328125 2.296875 -2.0859375 -0.66015625 -3.3046875 2.19140625 2.1484375 2.328125 3.7890625 3.3515625 0.08203125 1.41796875 1.43359375 -1.1484375 1.4375 2.55078125 2.0703125 -1.5859375 -2.8046875 -2.2890625 1.73828125 -2.41796875 -3.09765625 1.53515625 -3.6953125 -0.66796875 0.67578125 0.96484375 -2.9296875 2.41796875 1.25390625 -1.8984375 3.14453125 2.359375 0.65625 -2.52734375 -0.17578125 -0.80859375 -2.171875 -1.63671875 -0.421875 -3.08203125 -0.1328125 -1.94140625 2.734375 2.1875 -2.1015625 3.828125 3.82421875 -3.61328125 -0.9921875 -3.27734375 2.9765625 2.29296875 0.7421875 3.48828125 -2.58203125 1.0234375 -3.12109375 1.83203125 -2.29296875 1.05859375 2.15234375 -2.5390625 -2.3125 -2.7265625 -3.33203125 1.671875 3.6796875 3.53515625 -1.75 0.6328125 -3.1171875 -2.6875 -0.3671875 -2.640625 -2.52734375 -0.65625 1.89453125 -1.08984375 0.25390625 -3.65234375 1.08203125 -0.55078125 3.6171875 2.80078125 2.265625 2.80078125 0.98828125 -1.03515625 1.0234375 -0.04296875 2.95703125 1.8125 -1.6796875 2.75390625 -3.70703125 1.60546875 0.27734375 -3.2265625 -2.57421875 -0.875 1.40234375 -3.55078125 2.80859375 2.953125 3.37109375 -0.02734375 3.16796875 3.23828125 -0.21875 0.57421875 -2.82421875 3.80078125 1.66796875 -3.30859375 -1.21875 1.05078125 1.0546875 2.2890625 3.84765625 1.58984375 -0.7734375 -0.48046875 1.28125 -1.30859375 -1.27734375 2.67578125 1.19921875 2.3515625 -0.140625 -3.828125 -3.84375 1.0703125 -2.27734375 -2.05859375 3.59375 1.3359375 -3.44140625 -0.40234375 -0.26953125 1.671875 -3.24609375 -3.42578125 0.76953125 -0.67578125 -1.53125 -3.2578125 3.65234375 -2.9921875 3.4609375 0.25390625 1.5390625 -0.78125 2.109375 0.99609375 1.5078125 -0.33203125 -1.4296875 -0.01953125 -0.625 2.609375 0.796875 -1.1875 1.125 3.62890625 -3.23046875 -2.91015625 3.0859375 2.23828125 -3.6015625 -1.38671875 3.0703125 -2.2890625 -3.375 3.0390625 -2.02734375 -0.9140625 1 -0.0546875 0.66796875 -3.52734375 -2.8046875 0.93359375 -3.21875 -2.05859375 +26 453.392426 +17 463.42041 +30 493.784241 +31 524.302551 +9 537.602112 +10 489.697937 +4 576.82843 +24 614.970398 +25 631.867432 +29 639.606873 +31 504.269501 +8 524.510742 +26 542.575867 +25 569.645813 +14 586.446594 diff --git a/tests/fixtures/persistence/v0.5.2/hnsw4_l2.index b/tests/fixtures/persistence/v0.5.2/hnsw4_l2.index new file mode 100644 index 0000000000000000000000000000000000000000..278606902a879e63a2811cd45696bc9879f6c296 GIT binary patch literal 6577 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 RhHmx8*gbx{wNK*(^*{L^t|I^d literal 0 HcmV?d00001 diff --git a/tests/fixtures/persistence/v0.5.2/ivf32_ip.expected b/tests/fixtures/persistence/v0.5.2/ivf32_ip.expected new file mode 100644 index 00000000..a3382ec4 --- /dev/null +++ b/tests/fixtures/persistence/v0.5.2/ivf32_ip.expected @@ -0,0 +1,17 @@ +33 65 3 5 +-1.2578125 -3.078125 -3.328125 0.67578125 3.171875 -0.2578125 -2.796875 0.91015625 -3.859375 0.328125 2.296875 -2.0859375 -0.66015625 -3.3046875 2.19140625 2.1484375 2.328125 3.7890625 3.3515625 0.08203125 1.41796875 1.43359375 -1.1484375 1.4375 2.55078125 2.0703125 -1.5859375 -2.8046875 -2.2890625 1.73828125 -2.41796875 -3.09765625 1.53515625 -3.6953125 -0.66796875 0.67578125 0.96484375 -2.9296875 2.41796875 1.25390625 -1.8984375 3.14453125 2.359375 0.65625 -2.52734375 -0.17578125 -0.80859375 -2.171875 -1.63671875 -0.421875 -3.08203125 -0.1328125 -1.94140625 2.734375 2.1875 -2.1015625 3.828125 3.82421875 -3.61328125 -0.9921875 -3.27734375 2.9765625 2.29296875 0.7421875 3.48828125 -2.58203125 1.0234375 -3.12109375 1.83203125 -2.29296875 1.05859375 2.15234375 -2.5390625 -2.3125 -2.7265625 -3.33203125 1.671875 3.6796875 3.53515625 -1.75 0.6328125 -3.1171875 -2.6875 -0.3671875 -2.640625 -2.52734375 -0.65625 1.89453125 -1.08984375 0.25390625 -3.65234375 1.08203125 -0.55078125 3.6171875 2.80078125 2.265625 2.80078125 0.98828125 -1.03515625 1.0234375 -0.04296875 2.95703125 1.8125 -1.6796875 2.75390625 -3.70703125 1.60546875 0.27734375 -3.2265625 -2.57421875 -0.875 1.40234375 -3.55078125 2.80859375 2.953125 3.37109375 -0.02734375 3.16796875 3.23828125 -0.21875 0.57421875 -2.82421875 3.80078125 1.66796875 -3.30859375 -1.21875 1.05078125 1.0546875 2.2890625 3.84765625 1.58984375 -0.7734375 -0.48046875 1.28125 -1.30859375 -1.27734375 2.67578125 1.19921875 2.3515625 -0.140625 -3.828125 -3.84375 1.0703125 -2.27734375 -2.05859375 3.59375 1.3359375 -3.44140625 -0.40234375 -0.26953125 1.671875 -3.24609375 -3.42578125 0.76953125 -0.67578125 -1.53125 -3.2578125 3.65234375 -2.9921875 3.4609375 0.25390625 1.5390625 -0.78125 2.109375 0.99609375 1.5078125 -0.33203125 -1.4296875 -0.01953125 -0.625 2.609375 0.796875 -1.1875 1.125 3.62890625 -3.23046875 -2.91015625 3.0859375 2.23828125 -3.6015625 -1.38671875 3.0703125 -2.2890625 -3.375 3.0390625 -2.02734375 -0.9140625 1 -0.0546875 0.66796875 -3.52734375 -2.8046875 0.93359375 -3.21875 -2.05859375 +17 -111.448395 +26 -98.9153748 +30 -97.6609802 +9 -70.2647552 +18 -59.205368 +10 -88.1517792 +4 -52.7075806 +24 -42.3019562 +29 -40.4504089 +23 -36.7008667 +8 -65.2822876 +31 -45.8321991 +19 -41.9718628 +26 -35.1358032 +14 -33.196228 diff --git a/tests/fixtures/persistence/v0.5.2/ivf32_ip.index b/tests/fixtures/persistence/v0.5.2/ivf32_ip.index new file mode 100644 index 0000000000000000000000000000000000000000..8d7b85938b8187df0b18140119d6f98e0d5378c7 GIT binary patch literal 11134 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 JPy?t5{0~?Wd|m(m literal 0 HcmV?d00001 diff --git a/tests/fixtures/persistence/v0.5.2/ivf32_l2.expected b/tests/fixtures/persistence/v0.5.2/ivf32_l2.expected new file mode 100644 index 00000000..1afdb5b4 --- /dev/null +++ b/tests/fixtures/persistence/v0.5.2/ivf32_l2.expected @@ -0,0 +1,17 @@ +33 65 3 5 +-1.2578125 -3.078125 -3.328125 0.67578125 3.171875 -0.2578125 -2.796875 0.91015625 -3.859375 0.328125 2.296875 -2.0859375 -0.66015625 -3.3046875 2.19140625 2.1484375 2.328125 3.7890625 3.3515625 0.08203125 1.41796875 1.43359375 -1.1484375 1.4375 2.55078125 2.0703125 -1.5859375 -2.8046875 -2.2890625 1.73828125 -2.41796875 -3.09765625 1.53515625 -3.6953125 -0.66796875 0.67578125 0.96484375 -2.9296875 2.41796875 1.25390625 -1.8984375 3.14453125 2.359375 0.65625 -2.52734375 -0.17578125 -0.80859375 -2.171875 -1.63671875 -0.421875 -3.08203125 -0.1328125 -1.94140625 2.734375 2.1875 -2.1015625 3.828125 3.82421875 -3.61328125 -0.9921875 -3.27734375 2.9765625 2.29296875 0.7421875 3.48828125 -2.58203125 1.0234375 -3.12109375 1.83203125 -2.29296875 1.05859375 2.15234375 -2.5390625 -2.3125 -2.7265625 -3.33203125 1.671875 3.6796875 3.53515625 -1.75 0.6328125 -3.1171875 -2.6875 -0.3671875 -2.640625 -2.52734375 -0.65625 1.89453125 -1.08984375 0.25390625 -3.65234375 1.08203125 -0.55078125 3.6171875 2.80078125 2.265625 2.80078125 0.98828125 -1.03515625 1.0234375 -0.04296875 2.95703125 1.8125 -1.6796875 2.75390625 -3.70703125 1.60546875 0.27734375 -3.2265625 -2.57421875 -0.875 1.40234375 -3.55078125 2.80859375 2.953125 3.37109375 -0.02734375 3.16796875 3.23828125 -0.21875 0.57421875 -2.82421875 3.80078125 1.66796875 -3.30859375 -1.21875 1.05078125 1.0546875 2.2890625 3.84765625 1.58984375 -0.7734375 -0.48046875 1.28125 -1.30859375 -1.27734375 2.67578125 1.19921875 2.3515625 -0.140625 -3.828125 -3.84375 1.0703125 -2.27734375 -2.05859375 3.59375 1.3359375 -3.44140625 -0.40234375 -0.26953125 1.671875 -3.24609375 -3.42578125 0.76953125 -0.67578125 -1.53125 -3.2578125 3.65234375 -2.9921875 3.4609375 0.25390625 1.5390625 -0.78125 2.109375 0.99609375 1.5078125 -0.33203125 -1.4296875 -0.01953125 -0.625 2.609375 0.796875 -1.1875 1.125 3.62890625 -3.23046875 -2.91015625 3.0859375 2.23828125 -3.6015625 -1.38671875 3.0703125 -2.2890625 -3.375 3.0390625 -2.02734375 -0.9140625 1 -0.0546875 0.66796875 -3.52734375 -2.8046875 0.93359375 -3.21875 -2.05859375 +26 450.112122 +17 458.235657 +30 499.837524 +31 524.303589 +9 532.450073 +10 492.983521 +4 575.742737 +24 616.615479 +25 633.027588 +12 635.89978 +31 497.363464 +8 526.510376 +26 553.711975 +25 572.029541 +14 589.477295 diff --git a/tests/fixtures/persistence/v0.5.2/ivf32_l2.index b/tests/fixtures/persistence/v0.5.2/ivf32_l2.index new file mode 100644 index 0000000000000000000000000000000000000000..5bcceb64adff86e0734506f4215ed2f7d1d5f45c GIT binary patch literal 11134 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 b08|7j0hNI&Kvkd`5Cv2RY5+BXTEPDR#$tOO literal 0 HcmV?d00001 diff --git a/tests/fixtures/persistence/v0.5.2/ivf4_ip.expected b/tests/fixtures/persistence/v0.5.2/ivf4_ip.expected new file mode 100644 index 00000000..66b6febb --- /dev/null +++ b/tests/fixtures/persistence/v0.5.2/ivf4_ip.expected @@ -0,0 +1,17 @@ +33 65 3 5 +-1.2578125 -3.078125 -3.328125 0.67578125 3.171875 -0.2578125 -2.796875 0.91015625 -3.859375 0.328125 2.296875 -2.0859375 -0.66015625 -3.3046875 2.19140625 2.1484375 2.328125 3.7890625 3.3515625 0.08203125 1.41796875 1.43359375 -1.1484375 1.4375 2.55078125 2.0703125 -1.5859375 -2.8046875 -2.2890625 1.73828125 -2.41796875 -3.09765625 1.53515625 -3.6953125 -0.66796875 0.67578125 0.96484375 -2.9296875 2.41796875 1.25390625 -1.8984375 3.14453125 2.359375 0.65625 -2.52734375 -0.17578125 -0.80859375 -2.171875 -1.63671875 -0.421875 -3.08203125 -0.1328125 -1.94140625 2.734375 2.1875 -2.1015625 3.828125 3.82421875 -3.61328125 -0.9921875 -3.27734375 2.9765625 2.29296875 0.7421875 3.48828125 -2.58203125 1.0234375 -3.12109375 1.83203125 -2.29296875 1.05859375 2.15234375 -2.5390625 -2.3125 -2.7265625 -3.33203125 1.671875 3.6796875 3.53515625 -1.75 0.6328125 -3.1171875 -2.6875 -0.3671875 -2.640625 -2.52734375 -0.65625 1.89453125 -1.08984375 0.25390625 -3.65234375 1.08203125 -0.55078125 3.6171875 2.80078125 2.265625 2.80078125 0.98828125 -1.03515625 1.0234375 -0.04296875 2.95703125 1.8125 -1.6796875 2.75390625 -3.70703125 1.60546875 0.27734375 -3.2265625 -2.57421875 -0.875 1.40234375 -3.55078125 2.80859375 2.953125 3.37109375 -0.02734375 3.16796875 3.23828125 -0.21875 0.57421875 -2.82421875 3.80078125 1.66796875 -3.30859375 -1.21875 1.05078125 1.0546875 2.2890625 3.84765625 1.58984375 -0.7734375 -0.48046875 1.28125 -1.30859375 -1.27734375 2.67578125 1.19921875 2.3515625 -0.140625 -3.828125 -3.84375 1.0703125 -2.27734375 -2.05859375 3.59375 1.3359375 -3.44140625 -0.40234375 -0.26953125 1.671875 -3.24609375 -3.42578125 0.76953125 -0.67578125 -1.53125 -3.2578125 3.65234375 -2.9921875 3.4609375 0.25390625 1.5390625 -0.78125 2.109375 0.99609375 1.5078125 -0.33203125 -1.4296875 -0.01953125 -0.625 2.609375 0.796875 -1.1875 1.125 3.62890625 -3.23046875 -2.91015625 3.0859375 2.23828125 -3.6015625 -1.38671875 3.0703125 -2.2890625 -3.375 3.0390625 -2.02734375 -0.9140625 1 -0.0546875 0.66796875 -3.52734375 -2.8046875 0.93359375 -3.21875 -2.05859375 +17 -109.125069 +26 -93.5928345 +30 -92.5121231 +9 -72.1383209 +18 -54.2376633 +10 -95.452652 +4 -55.3820267 +24 -45.6153336 +29 -43.3235931 +23 -36.7782784 +8 -65.693634 +31 -47.2862206 +19 -38.6103706 +26 -37.5991898 +14 -34.2773666 diff --git a/tests/fixtures/persistence/v0.5.2/ivf4_ip.index b/tests/fixtures/persistence/v0.5.2/ivf4_ip.index new file mode 100644 index 0000000000000000000000000000000000000000..cde16bf4eff07245af2a3194acb8a62e517f330c GIT binary patch literal 4390 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/persistence/v0.5.2/ivf4_l2.expected b/tests/fixtures/persistence/v0.5.2/ivf4_l2.expected new file mode 100644 index 00000000..0ea8b42b --- /dev/null +++ b/tests/fixtures/persistence/v0.5.2/ivf4_l2.expected @@ -0,0 +1,17 @@ +33 65 3 5 +-1.2578125 -3.078125 -3.328125 0.67578125 3.171875 -0.2578125 -2.796875 0.91015625 -3.859375 0.328125 2.296875 -2.0859375 -0.66015625 -3.3046875 2.19140625 2.1484375 2.328125 3.7890625 3.3515625 0.08203125 1.41796875 1.43359375 -1.1484375 1.4375 2.55078125 2.0703125 -1.5859375 -2.8046875 -2.2890625 1.73828125 -2.41796875 -3.09765625 1.53515625 -3.6953125 -0.66796875 0.67578125 0.96484375 -2.9296875 2.41796875 1.25390625 -1.8984375 3.14453125 2.359375 0.65625 -2.52734375 -0.17578125 -0.80859375 -2.171875 -1.63671875 -0.421875 -3.08203125 -0.1328125 -1.94140625 2.734375 2.1875 -2.1015625 3.828125 3.82421875 -3.61328125 -0.9921875 -3.27734375 2.9765625 2.29296875 0.7421875 3.48828125 -2.58203125 1.0234375 -3.12109375 1.83203125 -2.29296875 1.05859375 2.15234375 -2.5390625 -2.3125 -2.7265625 -3.33203125 1.671875 3.6796875 3.53515625 -1.75 0.6328125 -3.1171875 -2.6875 -0.3671875 -2.640625 -2.52734375 -0.65625 1.89453125 -1.08984375 0.25390625 -3.65234375 1.08203125 -0.55078125 3.6171875 2.80078125 2.265625 2.80078125 0.98828125 -1.03515625 1.0234375 -0.04296875 2.95703125 1.8125 -1.6796875 2.75390625 -3.70703125 1.60546875 0.27734375 -3.2265625 -2.57421875 -0.875 1.40234375 -3.55078125 2.80859375 2.953125 3.37109375 -0.02734375 3.16796875 3.23828125 -0.21875 0.57421875 -2.82421875 3.80078125 1.66796875 -3.30859375 -1.21875 1.05078125 1.0546875 2.2890625 3.84765625 1.58984375 -0.7734375 -0.48046875 1.28125 -1.30859375 -1.27734375 2.67578125 1.19921875 2.3515625 -0.140625 -3.828125 -3.84375 1.0703125 -2.27734375 -2.05859375 3.59375 1.3359375 -3.44140625 -0.40234375 -0.26953125 1.671875 -3.24609375 -3.42578125 0.76953125 -0.67578125 -1.53125 -3.2578125 3.65234375 -2.9921875 3.4609375 0.25390625 1.5390625 -0.78125 2.109375 0.99609375 1.5078125 -0.33203125 -1.4296875 -0.01953125 -0.625 2.609375 0.796875 -1.1875 1.125 3.62890625 -3.23046875 -2.91015625 3.0859375 2.23828125 -3.6015625 -1.38671875 3.0703125 -2.2890625 -3.375 3.0390625 -2.02734375 -0.9140625 1 -0.0546875 0.66796875 -3.52734375 -2.8046875 0.93359375 -3.21875 -2.05859375 +26 458.689331 +17 462.833405 +30 500.558167 +31 519.726562 +9 533.570984 +10 494.876587 +4 579.590942 +24 613.134827 +12 626.338196 +25 631.41272 +31 495.197601 +8 533.827515 +26 554.517944 +25 575.35553 +14 595.575134 diff --git a/tests/fixtures/persistence/v0.5.2/ivf4_l2.index b/tests/fixtures/persistence/v0.5.2/ivf4_l2.index new file mode 100644 index 0000000000000000000000000000000000000000..b73391815e0bdb2582551f6db729f57331f086f9 GIT binary patch literal 4390 zcmchZXHyj07KX_|GJ;430WV-6=b5IVNrDOjDj+C=fS{s+C`rizlB2{S3`s!J5Dzoc zGYUwMAUPe$NjwC}NVrf}?uYpSr>mY?`(1l=ty;UfdcVSC|9dq4MDjn8^8Z@+&*~+$ z(V%TV9p8#&5j{pXFG;}?T9Dy9w@xr?y zdXU+QsX!`MEw1q&dUZY34P3KSCjKX#Et1vE1BcB(16Y+w#O4_}oZ0juc0M>5&*E1A z6kxi5(F7ad)~R0PgX%=QU{@NBtZg1JFQEZ!1@iDI0ubKwUJ4MFp9R38qqsX7Ie5$9 z0-$TN4H3a{8?WQC2pkMu!W&9V0c2DjYG-a5;OtwA@nNPifWrAwy!WsrprzT3_s
  • dHZx$edve;#YPW@ba$%AhU!@EzRyGj!9+_XYG)H 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/persistence/v0.5.2/qg0_ip.expected b/tests/fixtures/persistence/v0.5.2/qg0_ip.expected new file mode 100644 index 00000000..c035a8da --- /dev/null +++ b/tests/fixtures/persistence/v0.5.2/qg0_ip.expected @@ -0,0 +1,17 @@ +33 65 3 5 +-1.2578125 -3.078125 -3.328125 0.67578125 3.171875 -0.2578125 -2.796875 0.91015625 -3.859375 0.328125 2.296875 -2.0859375 -0.66015625 -3.3046875 2.19140625 2.1484375 2.328125 3.7890625 3.3515625 0.08203125 1.41796875 1.43359375 -1.1484375 1.4375 2.55078125 2.0703125 -1.5859375 -2.8046875 -2.2890625 1.73828125 -2.41796875 -3.09765625 1.53515625 -3.6953125 -0.66796875 0.67578125 0.96484375 -2.9296875 2.41796875 1.25390625 -1.8984375 3.14453125 2.359375 0.65625 -2.52734375 -0.17578125 -0.80859375 -2.171875 -1.63671875 -0.421875 -3.08203125 -0.1328125 -1.94140625 2.734375 2.1875 -2.1015625 3.828125 3.82421875 -3.61328125 -0.9921875 -3.27734375 2.9765625 2.29296875 0.7421875 3.48828125 -2.58203125 1.0234375 -3.12109375 1.83203125 -2.29296875 1.05859375 2.15234375 -2.5390625 -2.3125 -2.7265625 -3.33203125 1.671875 3.6796875 3.53515625 -1.75 0.6328125 -3.1171875 -2.6875 -0.3671875 -2.640625 -2.52734375 -0.65625 1.89453125 -1.08984375 0.25390625 -3.65234375 1.08203125 -0.55078125 3.6171875 2.80078125 2.265625 2.80078125 0.98828125 -1.03515625 1.0234375 -0.04296875 2.95703125 1.8125 -1.6796875 2.75390625 -3.70703125 1.60546875 0.27734375 -3.2265625 -2.57421875 -0.875 1.40234375 -3.55078125 2.80859375 2.953125 3.37109375 -0.02734375 3.16796875 3.23828125 -0.21875 0.57421875 -2.82421875 3.80078125 1.66796875 -3.30859375 -1.21875 1.05078125 1.0546875 2.2890625 3.84765625 1.58984375 -0.7734375 -0.48046875 1.28125 -1.30859375 -1.27734375 2.67578125 1.19921875 2.3515625 -0.140625 -3.828125 -3.84375 1.0703125 -2.27734375 -2.05859375 3.59375 1.3359375 -3.44140625 -0.40234375 -0.26953125 1.671875 -3.24609375 -3.42578125 0.76953125 -0.67578125 -1.53125 -3.2578125 3.65234375 -2.9921875 3.4609375 0.25390625 1.5390625 -0.78125 2.109375 0.99609375 1.5078125 -0.33203125 -1.4296875 -0.01953125 -0.625 2.609375 0.796875 -1.1875 1.125 3.62890625 -3.23046875 -2.91015625 3.0859375 2.23828125 -3.6015625 -1.38671875 3.0703125 -2.2890625 -3.375 3.0390625 -2.02734375 -0.9140625 1 -0.0546875 0.66796875 -3.52734375 -2.8046875 0.93359375 -3.21875 -2.05859375 +17 -111.448395 +26 -98.9153748 +30 -97.6609802 +9 -70.2647552 +18 -59.205368 +10 -88.1517792 +0 -87.2659454 +4 -52.7075806 +24 -42.3019562 +29 -40.4504089 +8 -65.2822876 +31 -45.8321991 +19 -41.9718628 +26 -35.1358032 +14 -33.196228 diff --git a/tests/fixtures/persistence/v0.5.2/qg0_ip.index b/tests/fixtures/persistence/v0.5.2/qg0_ip.index new file mode 100644 index 0000000000000000000000000000000000000000..b1684776657b4c4731997f3283df0abf9eef8d99 GIT binary patch literal 38250 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/persistence/v0.5.2/qg4_ip.expected b/tests/fixtures/persistence/v0.5.2/qg4_ip.expected new file mode 100644 index 00000000..993b6d7e --- /dev/null +++ b/tests/fixtures/persistence/v0.5.2/qg4_ip.expected @@ -0,0 +1,17 @@ +33 65 3 5 +-1.2578125 -3.078125 -3.328125 0.67578125 3.171875 -0.2578125 -2.796875 0.91015625 -3.859375 0.328125 2.296875 -2.0859375 -0.66015625 -3.3046875 2.19140625 2.1484375 2.328125 3.7890625 3.3515625 0.08203125 1.41796875 1.43359375 -1.1484375 1.4375 2.55078125 2.0703125 -1.5859375 -2.8046875 -2.2890625 1.73828125 -2.41796875 -3.09765625 1.53515625 -3.6953125 -0.66796875 0.67578125 0.96484375 -2.9296875 2.41796875 1.25390625 -1.8984375 3.14453125 2.359375 0.65625 -2.52734375 -0.17578125 -0.80859375 -2.171875 -1.63671875 -0.421875 -3.08203125 -0.1328125 -1.94140625 2.734375 2.1875 -2.1015625 3.828125 3.82421875 -3.61328125 -0.9921875 -3.27734375 2.9765625 2.29296875 0.7421875 3.48828125 -2.58203125 1.0234375 -3.12109375 1.83203125 -2.29296875 1.05859375 2.15234375 -2.5390625 -2.3125 -2.7265625 -3.33203125 1.671875 3.6796875 3.53515625 -1.75 0.6328125 -3.1171875 -2.6875 -0.3671875 -2.640625 -2.52734375 -0.65625 1.89453125 -1.08984375 0.25390625 -3.65234375 1.08203125 -0.55078125 3.6171875 2.80078125 2.265625 2.80078125 0.98828125 -1.03515625 1.0234375 -0.04296875 2.95703125 1.8125 -1.6796875 2.75390625 -3.70703125 1.60546875 0.27734375 -3.2265625 -2.57421875 -0.875 1.40234375 -3.55078125 2.80859375 2.953125 3.37109375 -0.02734375 3.16796875 3.23828125 -0.21875 0.57421875 -2.82421875 3.80078125 1.66796875 -3.30859375 -1.21875 1.05078125 1.0546875 2.2890625 3.84765625 1.58984375 -0.7734375 -0.48046875 1.28125 -1.30859375 -1.27734375 2.67578125 1.19921875 2.3515625 -0.140625 -3.828125 -3.84375 1.0703125 -2.27734375 -2.05859375 3.59375 1.3359375 -3.44140625 -0.40234375 -0.26953125 1.671875 -3.24609375 -3.42578125 0.76953125 -0.67578125 -1.53125 -3.2578125 3.65234375 -2.9921875 3.4609375 0.25390625 1.5390625 -0.78125 2.109375 0.99609375 1.5078125 -0.33203125 -1.4296875 -0.01953125 -0.625 2.609375 0.796875 -1.1875 1.125 3.62890625 -3.23046875 -2.91015625 3.0859375 2.23828125 -3.6015625 -1.38671875 3.0703125 -2.2890625 -3.375 3.0390625 -2.02734375 -0.9140625 1 -0.0546875 0.66796875 -3.52734375 -2.8046875 0.93359375 -3.21875 -2.05859375 +17 -111.787849 +30 -102.768173 +26 -96.29216 +9 -70.8524017 +29 -61.8877907 +0 -89.5730743 +10 -88.9742966 +4 -48.0263214 +24 -40.3652878 +23 -35.4038467 +8 -62.934021 +31 -50.3188286 +19 -46.4694748 +25 -34.6623192 +26 -32.6777267 diff --git a/tests/fixtures/persistence/v0.5.2/qg4_ip.index b/tests/fixtures/persistence/v0.5.2/qg4_ip.index new file mode 100644 index 0000000000000000000000000000000000000000..92033ed3b8f43e457b9069488467151f305f4bfa GIT binary patch literal 32578 zcmYh@3p|wB|2Xi65M51D>9RYGl4#qQkQDPw<5H`lj7w1(;~`1qHcB!{HO6I0GD9Ls zj7y?oOlHm_goduRY$mpqghsozRAT;JSLW7}7kt$BYw=X}oRaQE0sM|U~9 zYaj@+oCx@k)gKWA{l8c4|GoZ9ylQA@{olW>Pa15vpS?(C-J2u*x8a)oV%H}Prxq=; z&qcmT@8f6e%}qdq^;{R}!I2pbo?8&^p<7JT)85wM7y1BK%w6EB{J+@xj z{o6(R%f*=eWm(52zwjOQB!72lUs1=s>UU42(bo&@H;}GNKRTYZ-}$$Z>|_4>O`*IT zdsB9<{fz!Rdx1`DgJ?uk`t+kfdbjbL{nPZ@_SHJM_V=|@r2hFD_RN6u(t_fvoL5{s#bGE(9U(fCT zeP7)0=GW7kskZhGb&Sr<{@-+@7n71U_Z=U%)6ad>QWMIRwoq)GeVPMM1Qi`XAe3D3y+`oJ}&h1=BKY-?;zh~Dcc*a za-bLqq!WTM3H9sdTvMN{D>;(mdaIX&7+t8ySz=A4M%%Aibt;HzL$#)|j7w6k^6GT? zSG9CSLY}^^o+tBWtC28#Q^qS*_s;H5isZ6ul8NqDy<*v<`0IqYwy>k)@%8rC6{(ly zj85-?5y`dcZ)arxmfdZznUHLh)ug=Nu{@>c18>olck53&cg&8G8A~?4;n;Dg0aP0k zj-{(|q)DliD_i<^jEoG(l{>=*I=789g}xaWacybxAKA=p`>Nk+n}R|FZteI(~vBX@&@?cqzP8rr*a!?G00S={DM z-+ulZ$0MtzJfmsOL7sGW0LF-BJ4HB!VPRpz7#3b>Cc?0=V$4nzD~YhNv8%P9MnrIG zcK7;Zy^ix)xNM=J7l-*G>XRm-xn+f}4w;N-YUv=W$aVW|425A&C=#BwQ>XJl1je?RkF5$~ znXry}I!1C-!vo6Zu=gLnjC}tfSAOnqqCfd}8r!Lbj3HXlek+`IHH9+hEx*tP*tAWD zv3^>G!wHUgS#8<36O%<7WikmC9T;eGWGXr+UK#iqQ(9^bYtzB)Fq&Xf3+jDfIUOvC zLknm=DD9B~xV3eoz||6cyk#k!yEe8FDEHt@8qLxUb!)qh7wmFIk@^L+qj5Zx7FrDuCrA2L zp%7^Nngd>07lZZW8qnx_6O0`efy|&=VAkDQV7tE>{PsZ%B9=V>FO_0&Ls|h!KnKtX z17P9EJy6JQ0&92O1343NaQ$-wVBKs0q|&=!?(WA{PF zl@{=mq8Ti-XayH1=|n6c!jOnLM9d;$84;R97!a|Dh?zvpAc9PUJ`oy3XcIAy z2pu985VP;qDL=uY0fF-5SOk`I^!CFF{*q9vKH^2@v!NP-b zhk9R6m8;4t{~R3obE-SVzbU{m%qr+X%V?0(02ar|7nz2HbUIah4izPSU`5`K9egh@t8LWf?GuqLy5 zNnDaXpPJSwZ|98&T$D-<8Pl`j_lMHWzWtrCj|>r6{`Ca<`@fJ|d) z(HL567aE(vV$c{hHnIC_;)TcEy*|Bix3I|OER2eZ*u8M!F%pLpZWXyZTXst!HcHAA z=apv1=Gh9{Q&L)Wd5PR~;`g7TE9XTs7z_;iH=MQuV>l5%Z%$rrs?g}HP)NMg)eD6h z)w<*ouBNUoWd?;zHsxJZx-|7YIwzMmHOpJUA0v0>@kxs^GVGS?KNXTlq>O8o|JF+? zMfIZU>LIhr%EDRuI!@;wp8t6ItNCC2ofwa46cZLpld^)m!ih}7OeoA{OC7uYF7I~N zFm!WwGs-&3)mlSK&?I@9{f203Rgp_)-pZ7Sg}FjuW~o4&l#2`=!jZTSGUS34&OQ1E z4FuGKb!}X{ARq}Pb9K?GYyaQ{e(^Zh{U5w);}z8Z!(9|`%kh_ssf`796gVQpW$8O| zaqcfDK)$)7U^5p0>SmmF_#usZ%@yzatpG*HYzO}U2b`?og1UXE$C23&@W*d%<6H-v z_S=hM;C{0jyuDuqj=GnC)TcMWz^hu2-cZv(4MJbgGPDOBLd(!6bP7E~>(DMV39UnyFbBW~nuWOm zI)%<*et@Q-VVDnKE`avQM8I63$B%S5j~zc}b+{x*SbQd@ZKG#W(AJ<3=j@>12wpA! zOm=F7n*`PBg;t z%n{}aE-aRmN(4etGEbZoLSctRV~t@)SR9kjCSll_p5B-FiksaHe^zuW6g@qfvlfXG zR+`PDTWS=n*PoHjn)cIydm_!{h5pkh#+sDEKGB$H4OqK^a!$bG^LceqSR^|L3*tm# zVG&Nz%;-nsy><=Sk{wydLR1u>_tJMo?Mtt(|z63lhPq?O-UI^X>AAXt*(x8 z$6yA-RsD^T=$Jy+(3_ULhlgl^tuE;owZmSwwmvv8%hmHBCZ8H<{(Yl_AV#4qx*!tq z>l4h9x!hS?1TjU354wP>iv&lFhZ`P>Q1wp+hAxfdIQ~;@TT{O=xojiFZW^_I1C{OM zggFuN8JIJThWTTT@ExO}Mbbjt-D!xv*53Gye>;dIH$wI=nW&%0y!&-BZ@V~EHTiwC z>-|?hzh3b~4b`DmlG(i^cS2m_V0UfWl3Ls4iyf!|x6Cc9d9%57t;8ChTUeqy6Jc@- z$V{6krj1uT(`$jgyPqR-A?+*~eOykX^X@I6`$wkYJe_@wWa}m9QAasSUOIv!Yh4}4 z-Inxq8w*h+6?fpG<|wVL4L=#jZ7leOj&tSyG}@}K!2fFv%G*e$BN|l>VCE&%KVOs1 zzlTuT8Yzyj-qS$iuXx`VQ?$VD8m=E+g1Q|~M#IJn0H!JhM#n2avYiObH@*c* zg(bjyZYk)YHh?d4D}i6;J#eeL2Dtd$12G%w)pdH6ju==kx~q1aom3B)?{0(o88~=) zuN^qJH3P*T_rRVz|!G1z@v78mB}5T-?kMLzIm#y$IugW2rWaa z&>wUReM6(rADIYf85)ESviLe~!o8y`DVFCOAlPV)y7yQ;$Cc2UCa6#gr-H&!0O~=2V*yaI9X? zbh+?+q=475nl-a#(b;qpm-cqvm-lHOM7&|4P&8Dm z%xQVBc4XwQruAEct+XEONHp8Xno&q86ul8$6H$VTMHeHcU2>Rp_MBh1vFZI)8pA!I ziXKI;GWBKe_tEc;k4E@8xzBPXm!IV;?&akYbwE>dxiLk9Y+yk$rmoYNMhb3imCIW@ z<>@<`=&o}A5ey*~1-T{7--=vyr?;-hEDWd?85Ul)HWr4q?n{^k9Rroak5Y!}Dm&#B zEp?rP1UOemR|dlc!fRqMz8`FydKVw~&Tk7kI>kQqboY1W^KL(8*0Sy=ihRGWydHUv zZ%6A$Plw=Q8{Q`G$y$`b*I!g>Kq@d;bijy|&PzC_%hl50r|9x#wQ^mx61#Zv-&(Ws z<|i-f&`uW!Q0`G(z2Lm7ZKvIRT(~c_Ptr78v_?9b(watp8JV4_naA;!^uVqxDNLX_GBnr zNU2@S48ilfzHKv5-Agx7-kB??;PiL2?{Wl6KI?@d9m%qSgGbTy53}j|WHE{q>&uWK zp#!r0rOYiZ2Q8@i1=k-F;^{leP(*(cAljCoZ=)Vcn^=s34@*(<9eotIJK$Bv(ort@ zE6P1ph68Va(q2CS+%LNTZQ>~IPd|bl=*$JcF&&KU$pMV>IiOQ=19X(ufZPo?!SK@S zz|OuBy#MPuxM?aXHY&2IsE4-QT}YyoVadT?ef4muqEx3=DzavwmK(BO|XFmwm~Lfg zQ4q7Ru4^mzn`=?_iqhOtM)!?SryQSBoj-L}ui9|jDCzQsuJJ>gIHkwMmI*NzPlT*1 z&vaP)+XrdW{T&^%T(^hK>su)g>}lFD9v{!C@f@#px2vJb9CrUJBw1&0=TVI^4D2#3 zjMAyj#zQL)tmyAr{PQ0lH%@n(XOx@tHOq%IOOV+mHWCUmJe;uzs~|tlevTU_$|}%L zk@iyF)2dLUD*o(9?dg5Z@UC0B?95L|+WL#S6LWQWXD%Nwp1u6iiHPmp6Vo+Dyoc6` zhHn;smJHo2CKi*mZ;UCJeF$b2WFJz9VOT;j*@@jxb_yj{uf(#IjX8OEdG3z#BHs5* zCdbXj&+DSWvy9W;%WN~Nwp&<{>@t2PR%#g#(a9?-nvR9W|y6f>>uI_=K8MN8$2FN4Lm$b{%_1#3}_6eME4)H|6 z4;+jL2i01oRQ7G?TcuQKCp{shO*0udWOKk|y}h-z1}P}O*mT~;8ODn#6lBA^aLN+R zSvwd_O+=QWxi$eUB3E%oLr*zn81NZh#x(R z;01d#Q15G>(J!apq5l2uD6KXD?;A8j^~t3;0)C})Cm*7wd=7oXMZZQcFRc-nGVnfG z2TH4d2$03IX+ZE81ynzje6j*9SQLvQ_GG$#=rEq%a}MRc`4<$hKjHs9IoDXQLIdUc z_yVL&2H^gf*n0q2m#2Tf3UuaO1rIwaz}4PjFc;heN6T)j9dA8Q3BJy#1Pfl>1y5&- zK*6(npu(pX{B`^`xcX88S~YJ2&mpmTO}#9r7UZ3J2qre&2J^-r0Au3&ziHQlpzF0@ zVXqAA36_GEY#C^EcmSX$=noo&7NJpS8+wD5p>J4|p=oFt8inqmb!Z$K{!w3{Vdxqf zhi;)^XdQZmwHvyIzR5)VsMF4oxm`J#W~ICK~GybYHkcNYn3&+%{SUvfFo5?tDPVg1>y9wSu_`E&JTUEhNh+q(dBhu;gu z&wlfJLYuZS7~4CUO$^k@)3K+ke2{1~waZIfA2ki~O4@m5H`Y>E6xN$UiW$o|XzdBh zGn%F*b-D$*WYfhw-K&^P$|@}@vMw6LuH>CIS?xL?;)^=T$WioMUy>k>x|f2raZ!l_ad(#A4>QMn`f3*yj(xo^6poOL{cWHpH#n0NOEnk z_#kYxMfRSz?AQQH>NH2Tqob1}lfjtp$nbFTV9=LqXc!>CXTHaZMR%RF*UMvuLUSi& z51zM-^vipvrUvsK?aNOoeI)LFB>w$~_*Iy2bavZIRd07na$9Hq5_StnrIrKSnRLL(EafZs2qoRp~`Vh&@`qK>GhaM+4Z*h_{dY&?x z<)CE;m#5=2M{A^M#I#9k*3ihyPGw2S>!I(Rs*%>VK}7#&lSE7lBT+1A9zm9xB30Q` zz4YeIvRCyoV#D*LRpa-Ri!YL2h8wq;cJV~b<;oA8Q&Yprp()jrQZ*tcw*2Q9MF@k= zV6bV7S&T{M{)pZ#53epSre73ieE+(NUc4Z@iRe3h27M2lQ0}S?V9^olMx=jSTJ<#< z1xs$A1&+IL@V*z2D;Q|sk!n1BS2|u$vmHI^xuDU%^cNhVmCL~Hd3S*5awD;?y$zgRRReSEj=CO;2-BI{B%o6hSNFV* z{R2P`kz$}@xHsO?a}OBz;ef_z0atsTfL{MLP_*?4m=SRw*z9`<4%EB?&?~eF9sgMC zLd(z_bou|UjiE(o7`lYE$wWZ=&@6nQX=oMJZ|E830GK0wthb@}A9Wt)3YZJL_T0Tu zBB%`!oLhb2!P)u*ET{Fx4c6y~8^Mg^;}zaEyi$*l=-SA$@mWPKCNb7NQP1y2WBeD} zH(frL6P$hgEcYA9{^IPFviziL63uT3g$}ot+x`Bs)H0-?$TXO3CK_O+3Fnxwm$$mM zjdaK_`Vx!Z)*jckW({|D3lC<7e!3Tlq@hpJkK1gxkZBm@x4&!IKR!O)alJl%-G1Xy zK3zs#iv5Z>1r@tnXjjGx!dS&7)n=AKff_U|6mcV=0MXQE>T4Hu^M&FoHNuVJR9x77 z{^3cLBC0oTe-E(@o{Zq8 zp&CZS+u7Nf7>Gp1#;gL-zzj-=<#0$vW$h8^gv{=`YIuTEdn(`9^4f_^NsV2Z^_x3( zRf}y*Y=51>=PfZSC=I^Kvq&hzf`Uu}OfW1k8pEt3oP!F!QIsmf> z^1M5;#D+=2(j`W@S)}?2$)rj(C6P@{s8lN1MDN>2ljl{vQ&*1c{QCOd==TzlsIs7B z2ANXQ$1fDEt>k8KlhbvRguL8Ew@64v(&fC=ZlkPjW?pxeBF{+JjZicZ*x4XnO(@7} zicQzy-C5r~3`kardr{BkX5~EOrKHv;)b;X8%9Fm8Rn%Xb*myzXYZ0$9<*jY$IsV7j zbLoiJM;!6Vka1W3g@f61>2(7u8r`b0@W+eo=<9gJC|RM6`rjgfe9nD%B}_#n9OS&n^^@0c3uPH8|%T7>2-isD*^s?0C?!u0NBfNvc99Px8%us z&_wj1@65dqGWy!VSO2FV{*nx^RyBho?*Hpq_XprWGLzUBKYIyE7v2Y|myN)E^eM0l zk%PW%t!l?`P2KcchkB2^Kkx;BUZGED78-;`;W`-lgBEp(fG(kD==_I2SZASk=otEi z519y<7ocnC{YU+Vj$u8AbsGAIzG2>graKO9jr1&!`0^lTYni)^FIBjA#)Y8BCnriy z^alsl3ONE^jO4Q0dJd(%B$1L?niF;0E@(j;#?P|8v28!cLhlI74<2}NQqF)K8$FQZ6ob3y|wqQh*c0T?GJ{I^KzzDkj(s9}r5@y(n3riZgbHY5Z^#|sNHc*E9 z;)9%nuyHIf>IBD;&58Cp{eZCxux7FXDP~2%GfWTOJ`%Me#QHDHGKhoiijA%niF1kW zS%y(}=BvqDxf1bYlUzB{+LJi-NIo*y*&*kpmI+IQulPvhV5 zrpNi+kDhn=GCi28fBgK~mG3ao(Apu+;__66focs10E#?G?js*M-xHFo7 zC7nm-&eH=xFAyh>zC*z=E{@nQYDB)cG#7U&42rG9>b)^sTMuLb-aMkbd3y*vPAeIE3*|BNJC1R=c(X#AzF$Bt3HR# za184`_3p^2(a}d!UsV(1!z!J#vl!DCZkPYz)9mfxu@D$7$|H4e%`jSSlqVGCr5jzv zxj>M?)6!ccFw)4-(06twcFIJbOC3!N#@{SPS)o}UpJFDWko(rKPt%6I$_Od`)r2*)mW3@g3!xMi7AE43&L~4y%hVMtr|Gz8c^Q(7+`SB$ zo0(or4%6^S2`?#uh$K--67Mu$k4J3l9ak_Ip`K39iQg@QAsR><8c}w3$~%?H`a$LI zzCO$Rgnmylx=G9OzV>uy4Cke!>I!&i^ONKPUfu6Wzjpr|yE;{mo2+M)F>~2o(ks&> zp@C&iW?n?KMDKT_nzD&y8zY7-%q8Bk%zx@`+@iU;F|=r|h>K<-vCBrb$~)!qM?KGb zI(p>t&gLFDVsH|GBkS;jXZspUJk~aXl36%Xbk$z)epTZ=y*+et-fo=MmX02cx{m7~ zyn!PBy#@to`y08YBf#G=93}HE;oJ`vC^B*jf2`kxgWo*pT)GKP`}a4(@(bKe_Zm9L z_Gqj+K8b_u`Hi~k{OE{a56)dvNz--O+}PNX2ii8|gAJ>%0_naoFg-&AcG(qx+nH5h zudrO*_k!n8xy9umCcg@l$J_ujBW0Nm zpZ=JXb|{`J@)R#SUbZT_J9>ILl%;I$7IGIW2yodFc*5Qv$3gJZo{G4+StV3iFeav&=3ZhrcKxMXJa(1(5%3WfA#bQ zGc!a~z!#n7mz3~ycNB!;nj+D2-K&WF%30vk28XO4B!M|E1ZuyZ;Rd? zFsgrGm9>tgMTAK`l^H>tku8|1xdvmU5k}YP6q*gNOpG#wxkf}2ODIgw?G|PTH#Hel zq|a&v9*hO2*9$N1jJCNs8c>sIdFaThh+0WajT3{h%!%RX6yl6I9wzq32FEpa-_dr@ zwj)`Rwq>1OU{+(CR=ja$O-+5x-vyeBOL!Va`drPVgsMy-zb^gs1@>$$ZDM1MX*qkl z%-3~gVEtM<{JAN_sv}It$<>8HHD12)Rv~qrMGcV=EDS6LRVT*}jVMPyD8GH1no@-^ z4|P6Nec5UK@Km$v{UgY8xqf+v2wF)6#NY@dx7>;-o{P`0KE=`8{(k7uJi) zfH-ZamB&jnEi5b(iOfW03DZOsqDoQz=;kv4y&ii+SA6Dt5pG%Hc5MLfdt-sRX`jQ7 zKC8s_kJ!`QE*+zDP5+@GvPN9LPk|St1<}*Z#&KF4AEy;J(~z)46tOaDfc~7J+Fuh-5G?m#5GQZb@THyn59L2#O&l|wQC-=d-%~JJD$li}K zko>1iU5}wBXbjd#=nvY2_MlDZ8XAYS6&i)6p+RULdWLpk9fszib!Zy;g~rK5K=-f? z!yEwf!;keh%oETybpECO_ubw}E+wglFBKK>?ZhX}#@yxK4)K#8{4@9vvt%#d*C@Ks z&ME3-&@RWo;Ahe2P91!6A#l%Nlx`0%dN-4u-n_!$!QcN$nTw3Fe1w~gNIoQujCA+M zmBWb_$lOa$CbC(=83*^SUf_OU9#x-YU~I9#Vx2K*+Q!P8{|&K3zoZhqs!C;L*)1xS zI2xL6kZn$UV&Qgd=t@Fz67O>QS)Q&@>&uipH`g^Tt6%#j%G*r_uKO{}LIPQDD6H_X z8w1WW}rxr%Pj|6X@l z?(gC!|1;j6;uK6*eAyienu>rCLRBB&%#3 z%sCNuvaxRm&Hk<%n^H}T-n5$dHheyQY<$U)JBQwlaen@I_v~e6$9AJx&xJdEJKD}( zZYJh2avL%hTiB6uZ{=o)GdlGYALN}M2D4r&E`zTllTK;3b>5g%Iw>)}GPKa2hH05} z7M?RPVYAkxVU$5rx3g^^H%0K$Pm%s5sr77IJX7_E6U0#wdzRk)R#U3x=ko2%+x>bv zd|iFz3g+{MN1r?cB94S@i@&6d99Ipyy>v%E`XY@;@V^fFR#7N2|1!UMJ{RS#UO}U+S&PTqH*Z9^RN2SSCbU4GI76P4;ItJ9=$G}xJlMZq zX??k3-2e7`oa^});F5IdNK}HuQKO6ax)1Hdo>_qVA3cid_oz^0EE=z1W~4> zz+KnXeXg&*rN9Nb4m4safZ5y%aM7exU5DY>(}`U*Ady)GROuBUJ@z(Ox~^W`$8L

    vphIZitZNnS@^8s`X4gatXa{M~TgXN`So=<@PnXb}~T#>TXqSS#5KC#)vIj*}B%P+Kee z#V+F5Dr?8L&P*qdxF|>FzLS1_jIOfNL$>vz88n92R8a|KwOW z79bSlC3WTbbYIR(QskxPe0d!Z7;UfJ2z9 zGZa%6OIe;yIs<{Ohflpw#lo7kjm5L>FTDExQjIYj*ozIHmdwdyV2~)shH@l%P%JP zPd<5j#IM)FZ+w4l-YcX0yyUuk@dUB4_#$j-esp+tBAEXiVdrVMG^3PhlzC=$6dhL8 zH;N{OY{zJ=^Kb6Fm?)<=^=RpUHZMoiz=Qae8B8}O@sF0K)>?A0jwZ%1VfiPR_#;T^ z8k8&g53Nhrp(A-;X&@;GA8eXN2Nxo6w`yxTa`zlcUb6#T_n{aE+CwN}%cJ%A?m-Lg ztw9;tr|H~3ih%xDDT;ji*`ZIGgwjsXQ8%m*jY*56)9~9gWMMZr%Fjis6cf09=mfeh zt^w6A_n{+oBM!)#U>RIT@841Z)ZSjHtDQT{y=z z)1w}wYTg6Fr*(i#Z&J@{eu((rIWnC8@R<(4n9*Z(4=g&k9z3f9V1-Esi0*9#k@wrw zXHc*%kA*%}_pjj|8Ty1Sp+jgHI)nzHQ&=;hXIOioK{650A9Verw!%CB>ohb8{X?@q z*4ohV59=@|K=05xbPV$a%paaFcqtDzb|*52^*GbNdd7weCr*?mZuLI*Eb_wGru5o} z7V(DX&Q!B%^L?ftwAy?35^eWJf8(t|oPR9u|Ho!HlataM`jwqhenQg7$d`6Gg)T2t z_S@1TNZCviBYo1X)l|KoS7zB6+}g-9659*-=IP|h(xiGv8u4cI2=s7dbVa!{mCVHt6JStgW-c(y|l zi6A*wlv5`XrRK<6x786Vz_yWuq@2za_DRpBI=V2_Oi(Ca6c%#oBmrmO%~<&}^^~Q=t15yT7sQHQsQSFWr%Tp5LG-udKXb-=i_0oSlKLS@Sy_#wzCtq0 z(@iSokrQT~{ky89fRb*zjTOmeu$|Z*S|$vP;o-QQ$z*Q#BR()49X|Pr>QySIeLZ& zU(c9}FLhf+{JFe-Hn~3#J@9q=9g;;9)#kVjhf{ORAj+mjIWQQs24g(@)H2e^{&zI& zNXtm5GBhk38yHoFsW=18oxO_Q6os;5GQVePsC|d9@k4BqR0RMgq99gs+Tf##NMJMp=n2|{W}!3a4w{5MpKF}>R z4}C+E&?qzy>oar->oW8U-IIxc_F;a2xdD2G)}e7|9p(v`3t;YG*+sWSgruK{tc+Te zZM~Nk^CCYy#Pf`2_>JP2^QlK;4&T1i_Rr8m)$u>QA0Du3y%GGmY}??U<&j&@bF%q) zSpsCiY=@}d|B@ypwecqk?^W~5D(h1d(sD&ok)%*mW-cu&Bz9AkZ#q{q;XZNA+Q596uKIRN*DupJnLY ztH^xm&}DGT$4b0gVkfq}wfNAusyF^ceD=}(&QYJd;-`enCr{8UCf>7*q{uMJ@bMam zh@4(y8GCGi;}*R$ghjr3VRq~M8lF(NQn1{Bl)Uo!&wgDUy>VW(a~hQSiWh@_NhThC zOTD5Po>B4P{1pPR9ksq@Z5id-#zJ#rN|`~rUR6$M_h7rw!^P+TH|LYrag#IT+e@rJ zX${8?X6InPa-1;sN>4AkHWnIW!Y=2P^E&0c6k==18|3w!JI5<5H{++wG0kb`^3r)L z$;6*Mo%pLJli_CwVzykgRa9}6ynmDUfxU71SkYsp~wDif7 zj0}zL->+t#HWL1xEX*Z|H)Loe&(uJ)m+Nb~krry`FCT$c?Ag0aU@ z7AQF4hE|;(!B3hK|7%6RqNa0g>Bx8)SQq&a?|XvKxqn*GK*BT>>HB~dWY(eNiWN8_ zO>p@BC7trIJ>mTcNm@nW1^M~X{bk?4iUYzGqK@S{DF1qY-df{=<{I-qFLC)Fs!E;%;F+8t> z*M^hNUJ?ec_iDMs(T#8{HSwN)d`qA+b|dz7)%rAt6Um0MXbX#v?iSUYeG&7$yjHOy z4`f*^F*?-Lbo(j%x<~Tl zimvCriY|pBUZI*)O!{^8`dQq{zm;<^V)?Sgtz!Kpvixh*EeljsQdESsb$k@@<3C8{ zDGjZEE3c%z{_^P0!C^$d&={#g$eNn-(#S24N316pGw$cWvEX(8M130H|NZkgCvNluaY(OF#*cgb zGtP;KCq~0K9O8;q;1LezzsWy>#y#Q#8N?Z#BHys%nGX}5Eq6U>6K0LeJ~@u=zv&e_ z`AIbyCsXMb7j6@kQuqkp#jGTU%P+W1%yb+V*nIQl*rN5-Gxw5b#z=-fc}KYJYKt}h4N z1Eqj#RD{x6Z_|L=-vF7j+o5kT2PJ>XL_zjaIzr5iabM2@-+D{Im90YXt4su_(G}`5 zCwS)x)?e)pRq8tt)G>*A9SzOG`K=9?8UUQd)Gew3ygL#A=Raa|00<-QK)|zPsbzE13vr9=eA40J?^`0NRDNf7E1{2Vf3>c>&gam^WZvfUYlHSh7DfCNb^A!O@sD zX59&%9hT*i+i+Lt75B*V?g>@#miOmsos;+;rlp+r+LZHIXWqBp`?I+!M(1+$aIwUb zIO%oJV1AG?f{D2$x!g5W?kaEUa8>T0_){}tlV?PD{CV=+q` z`>Qgy*A?4*My`H;bkk+zPw%Zrvj4!`kI|I9)EbR^mvV>q`2~08S=r_R(hH|c;K+B^8UFU{U%LpBqXd!u2V!b%nOHzX){q_A&sY- z_L4a|-rMtH|ES_c5mVu&JZ9=Td+y!j5&5|s-9cTaW?}=uxai3A_4Qz$CMLkP{}-fv z!0G6gfoMkH0h%Y%zo#&{b#L8vVRq8%u9WmP!7^=^`SW!aGTWZ`X@|P`x+_K=_$iuC zzVvMCeWV!a{9?P<+!9&0UVplN)jT(36I1+a!(UyXzC>z@vb5xRI%Uj`SU5iQ(cAz23iKY^-1#$w9je~4RLU?1^`_t zje8~yr$y$W1sP1VuZV>{{!)z|74_p>GlXt>;a58C-(MR024~;`*2+de3;-gHC?M6m!(NZdV=xv>a+MFx&?hv(e6gtldm-HCTASUI0(3JifFWqa-7^E zN5S|QK$fmYw{I>6@azfBSHpV}@ZOVq%^e`#Q?1@Nm%X_O0$0|6-_mcZXEZxXu7kn_ zWx)MjC72_>17LlIeXs148ughn>}6Ak`xV>&kb&aIGNL^$SI>1p&!O8Ns_!zw^){RZ zIV61ypt&FQ7}|qwf2@ChteJlpg@$3BB@+SNLzmDt^!lU!4821C&^NRS^8|Db>o&|2 z@PRo3dWZQy=3>J;A-H(Y>8iI~`?-PhXCFA1#PBT7?O}Q!nx1g+#M$QG1P2ps#hfHb zR*uNg+iRBxzkP7eedh|7RX^3yZizduI$Z6ZD?U1~qN;Ydn{~;F3 zj8d%Aw>G4ba(^IfEE3~bV*_4T^msVOf5vr}K5hwdRWGGPw-Tgvq zz_%$VF51)hsdF^yFm~b;Cn~(YUR<9mkqK)gW6#7ASv^f3p*=>KZrb|341MCMElEoo z8NA~Bp{?wc_(R^8mYSN0RfhtMIX7zVYz&%OMYS}gSSC=g8O5U2l#OPE)_-eKZYXOe z!|TV&D*rCN)-=Fic$qsfny>&}wg-c8WC9y`H;R3JrzGxSepZGlr&RI1s)>ey?AM?7 zt2V1TN>aN!ggLzY%ehxn!n_8BJhkm*$E>$q9r8+fv$y=BQ*f5d=ea^0dF3q!Z zrj-#FLS~xV)w4wA*UTuLg&{|V4u1_3l@Nz;l|yD{GHx%+(96g&%n)`jGRW$dXc|*2 z&8}($vHFY+R@u&LI@{Di(=I7+*{;{Rh}XT<#+FK*D~T}4uC=kKk=R*22*Y+@55fjU zk6>Y)N^HuI#9Zh*Ml$Rr9bdN4on$mQwX|~dM%ea|PFdNn#Kup zT$_9vn0JA`jw8Yc`7;_nhL)lJr`h;AhGrw}1O-PfzQPfg15#w^6DiR72S*miI{256 z(2uHYR6k%8{g_>ayL~^6#>i$ja_>*!@XjKf1A%tC!^_oooZvkPAMRc7YgR4LqY(XO zVqFc-i+@e12mMoG^=$RXG#uzW2LHQ@tdgr|ykL)O?9c=Cxl>MKBWS#%479hCUgsHFkCN_iGY@2t%XLRaad!a)gLt!`h=cgjfTGA1Fb@r z&^@fN&@%K6-9qEgFmw;yLgUaebPs*UaIWn?%MbMmt^H^E?cf2{RtsHoy33qUM>+k_gE#Gopqx zHgwEtEl-{zztYqLUY56}C8e}cOxJ}I?=y2Ug?NY$Z)PY({o5LqVXgg@@@-~A8eAj9 zP`r%v7;zV580u+s8(kI}EZdy9;oa@5y+Wg_-AQM%#rb*Nd6xxOcnQgQR-9riDB_Sk zYhiRaC&HRz5HMZisDb`+%k@^6iG?M_$64W5)ywp}!}ObE#y#@VT&}s9L>%1eTTn9( zkSX3RVVwa3Gn>{>2C7Q=GuW7YSPkPYp$A}&QmF*&vI_p*$dy}1P3nHAx|}EMZfN_e8Ya3; zs!5q@G`=^hd-y9S`sb+8-u((@9MjLe_mkJR8=TQoW5Z*rXxZ?Q*uPbuPR2#o?hGUr z#jJSZQVK`OvJRtC%`tWW1zXEHXQPc6xsj2X3y}Hx8t#bx@^Q{*uPCC!7QuY$8SVLk zliTap`?dF3{+Io)pC8%3L=|IhY3CnqZEkKCVKXMHsaACP!KHf_aj#3>L2N-7-qoge z=&PEMwVISLK0}ABiD;Sb6Cf++11*=W(~$JNr*R}D191CEAW{dT`=5@-fssYy$NYDA zU$rgDrA^1V^Mg^^Uj?)cS<~oM8`JO@Dsg8bLLY!N#lY>|Ac~Z3M?dO6N7q;-H_|kP zG+K5yn*O#BMK*Zb7YqfWt)G8xtWurF$qyazb*y$2=^4dA&{JAp`|?J3HzF*$MBVFx zcNXFL`m238aC0sP^uZ!9tale|i@&X|zwith-a#(e^uNA!;FdBFYf`J8v4%4sy%x9C z_nwZ-t5?r!!mlgfHcJA|{QE%dxc}aL^-LE$b6UV_RPT?WNoWt+f`*|v=nXo97NKM4 z6*`ALp?l~XnuVsJXXx>V^B?PN=o&sSA3*1@#{XEiL)*|Z%nwC-ZsjK4Xvd;_yG(>D z?y|hY16|lBH`RrBJ#Psu_dKuDA@n}E(X;F!C-}u~UN$3nxc$=ipyE3s4z?k>^u}*r z9&#Q2em6}vU{+=(k|;&Qum_Q#3#Dg;UBbu2Y)GGMBu^n$$WcbKN8-ix%`Ht@wC6s} zP8mYO)B2>d`qOwuByXXwkfS+V25%;eW!C4~eJic|gA*~<#W})>+Z<0g;Kcj-bt$}l z?^e8K5+lJ1KlkSz3g+bY@$DY_y|z30Ir@H%f5$!*9XJ~7ggK9@;-dsYA@2-7DVN7f z67Z9fc=^Lqz1?=I{P?ev!*+KhpUhg`OtoN@$^q%{9Mgn)rOnE*LlT=^9MAA=(E*$r zCRUbI>O5+Qr3J;3syS`>JXd1VFvqp2U!IaEcWtFL)z7>pHm+?^)=T(jC#p-Nwj_R% zMO}t~#~ae+R%M8&tRN>cMMp=IOeb4Y3a5#Qi_64(r%;$v$4kl;CLMX#Ik_h+w39Uu zh6Nqy9AeV%FJyBvP`AgsBW(j$pBn2G{MjpcWh?#j=Z5?|m1KpEjt<5O@;C7hW`)q5 z>95}3$?aAwJKin4YUChO2s3BUG!|M+w>rJtXd1FkWB%s|OY8`n6A|(A!ef>e7B+|x z3DI3bL%6(|ix2_#v=-u_<)Oo-Inn$XnhZqCiNpHLdivC6)_RZW+8j$w`CzhXlBhC) zTo_Vfrd2S96J@b~%NWP%M6FfCl3V+k!rWW~_q`;8%$dS0pVSN?h$7+0rRTsuYBq|H z!-2lx8T8}n7r6iONu10a!nwV^jX-Z#Hr#f_6yW4PkishOS|Rg2#OhfP__YJzY$iVffa9)D)b}J{zZzPC z_Mm0x61s)9p;PD%I)z4|W9S;zRp^*Z1T^|%9}JyByU;((127-J=SP1G`iFHN`u(xi zhPi{~SyENjddc=qQb4&4cK+o->h&whhlUR!8+gKOj#bQ-gI;+p;Rh4F?SZv#Dhr0* zt=S*=;7!h>@UtZ^0vm$*16V8_6Rnkj7>zP->k9t76nSOSka94sb!2E{M-eYHEX*I9 z<E|I?J`l8c1hzhrG=>RlcL^d533bC$8n=`pAdsb59eur+!FHyD}{1Rrb`iw*J4a&OIFJ^#A`ur>V9w$ub?sXeqT8Q*7+!{hl3E zt1@LAwv@!E6h$*rsb+|p8HY$R<4`(j45_FbCcI}>g+=TpY$mpCB{8-wRAPSj%ja@k z-|P3*JJlZ@t~_3^`+nWe=ku<+Qoibb*s*+<1-iGDt9B3d^>x(u)z|mw>jz%ccl0L- z7~V6l@`cXJLtYoTL`B#n^(tnF3YIn2!9A~*%_IbD?RW{2TIV(xCV=yb*FMS(+ zqtVcidJZ;&P9mXixpXnfa2cJZ2s_&=CH*FP`@~Qh^Tzyg#j=6?%AWEs(U})7D#}Vr zb%mR{b>Xjcvvo*Q_fn_(``JHQ{mzE`*CthoH6NS(bh@zW{_dbhZZE}|iH)1LR&w~c8N z5=OQ+e$4J^lau1+U^%mvXoC73m;p{3@Y`MvOe4-`-1cyuIzX`n52!_F!tVuY(#>^P zSLN?`Q{h=Ow_b@Iadl#19&^cNhth@g0 z?;II?PvD~feHUbdfCdE4pCI!G=GH$)R1j;PRT7XVAemY^?q57fuNc=`gCBWOP$jWo z{bSs%lC1tv)N zr!#Mvc%RwrvsIA1=U~RY6kp#0v2^KxYu9ev2hi^HM>Hdj!GUvH9F zSI|?asOxR4)YbJOZ3TK5lh#mdDHJ0U10CAq^xo%naSD`!Q*@T1oHz04w1ou zru+1t%lJ3Y3AA2UQKEmFFE|{=3ljPS@ws8%KHP4ux&C7Ln~_mr_sBEvCtq~jT%>9% zSE9c~c~$SN^1{OY9h=5F^p7{bXdHO@p>gz|s2Lqo<}tb4e+~I3U42dke;s1MX51;Z zJ>*itWC#`@m&l=X4o|>lvyCanKBmSZu}BvaLr%QdSExvm5KS(ohql?hW1FsF@J!Nq zj!P8MQnEx$iV;c0f0D%_(Xj9%S1>eut8XkkSl|7))oY-+_DJUg-R~zGA5~O6Xcov8%@q%Xf`e4KB$>BO+%Ww2qUGxb-{Mk5CL0qaFL<_Z+gOE5>#t7t@kw2 zUn{D*g0?fe@*k*4We3y;&nVS7n$0+A>LQKp;3+jRIt%x$GGSuO&FX;FvG_K+Z2asP zv|Qkgfb}$F`@p$Vmy=>#3$i7?gy?x*IPQgld6r6khbYTZj{6sNi%Q3PaQLYk#Le*g z1n>)bYRKpU-?40C$#@P(EaUO`tQz!~us4Pbf%K|B2pVDum;^SVUjk#$J16*@*z*F1 z!14rtz&`LjvF?U?0CfO*IMf1ofM;MB_=dg?wE=1Yunc@dop3*QFFF58Nk+gXKQQ-7@YgwjK-eyKr}_pecWUPR-qz)BE||3G#jQ85i%So4A*{m+zD-Wp_h! zbb6Q8YJKJC;P9|kAZYQ?59^0p1$uX`7ni%kE!-_A=v5egAgDc4QX_hhQj;aG>FJ8D zNm%ba&xDkN{-reBU>PaLs8gHWphfEF?9ujytd7o(MzZ)-yW)C%)|>v^`oy-LEarNO zQ5q}mOs#bK<%i6<8=ntqM@Qqdwf-M#8npg9t!*t(!?3VAw!&!cBt!c^(f#;R3$obS zg1%f~p+I)3SKg5|g0Pc^z4br`RsHxg(&P+eX@Jg7){J$ggUmk=0jS6NlUh zw|Zad3YC?Gy}Fl`N*(V6-`}0X(KJl*ziAQZyLL9RH`Fcn_b}1H$$#qR_ z>&U0YU&+Ml(zLZTv$8v~M*S|;Cu+4?vPeArESV&}NVdM6Q=lZjT_gNzMhGWAaOKqYZUfdG(>J3VI~dN1QeXs zkObwp=j%50zxX+|=t2%A`t5+4lr>U?-H*Yr=bs4CK~FU{`V{ZUXKOxA`G$$iV zQvlASVCDt;WH>v9oG$-`C}ZFUFdnIb;|Bqu}4_E^( zp=SbLz#lL>G0Or*q3;5(z&r2=oC2E@Jr>x98Zfawhx!1#LXChL05t*nG}HuO9s05V z{gJ2`R!__|_L~`(4&*pWMCZ@UJKdU_d#qr!A|P(Tn#WuJ!mY!0FTHZ+;SI^!Ez;P$ zz0%wgvDWmkDSqU=e2+eMZTq*cDko2I^_ct(jTOvt+hyeSE4LNd3NPHt){mm|*-j){ zJTIP3T}Y)$Y9z9S@^wHZ+cT*gD$N z8H{3vJ>AjX-rj=Vin_KR`rvTd*%VGIo4Vw=p5gCb(ay$^Mr!8HG5&DKpg<^m#eWqd zL-Cdk0D8XcJzGEgoeXIUgGOYIeZ#6Rjv%>$i{RfxzPtg!-pQ-=- zn5oHG7KA4&vee1s)f8!!2GmWV61h&Uu6EooMDqP%%wAs6N;-rtBOzfE&%kf9+ z^MGaQ7vBgR)k{Y9)z8t^6_q6R>}1-5}%U>kUz*bf84 zP$QrYzytgO<4`O3X9^;Yx#lVcZHs*bo5`C67v5X?`Aq#TVwjsA%-gUp?QZ1v-jDy> zawNUd>ifgn9=oN!@3HLQ|%va{Ql$dKo$X=}TQTzl^% zIsh4pI=pFB_^!Zzo*kgBW!Y@}%7^+eS$)q`{j2E{k);Z$XqgwAhZr_-Mc)T|d-1#k`l{g}z2HA2BrG`@ zr56qhUhn!GrC&SzKB_o$?CtQ>84=w5z1#pMvvH4M4L2x-la`$#r`F0BQK;?N@h^OY8)7QzVVT+etSb~LUl!b{ipi2_LvyOIl~Nv z(z=}fy;OQTr)t3VzWx`L%iC}JqonAM*N+VkoGkoipf`MYO!uVl^+J>Ev#PYCpW3st zwXNx`e&17#8O{dAjErK6V0CJ7nweZqMdm6wa`wxcE9CNrSu6v#NAkQhe~F|?%l4vj z{yF{O=|g<`cCCkZ%ito89~(I?%hF``v?=%eDXE2DB_(N;y6(DOU2lO>*Qcr+x%6Nx zDg0CF8NKRl#T)CnSFR`xX`&dz%Q0d@k#(O=SJ*p%j?Z-HAWhe++Zy6&MGLVL*ts)` zLxhn$;ZVq$+~kygl=@nil^R%JbQ#_WYBo@wB*x zas$c;QOJBv*N_!6pj3z-JgLG(Nhmw$%1_K33j!zh?NLKs=4jycaXkq1VbEp5z8F}( z6`V&*Pc9*j4Hu1jBEVw|zC`difo5weI&Xq3kpEI1j%VwEmKySWAOqKT*~9U(W5^VM zd36@bx`m9c54MlS=UhEcpN_Aqfj8g@*aH@UFJKea%fL0T3XD&zyMc4y6?g`|Cwe&a zbLh9gI6S~A)B#`^Y5_0|y_tqys2kAVp*P>qJ)suNk;eTn8TZnje!#T6&qz3-ITpNC zCJ2bFd&?{L-FEHv{E(y*WVx*`Z$pCL$s>Q9YY$CZdcm*x!U=M^r$epF4(lhC^JNCf zVv@)xC0a(FD@h^QQH<8irL0*%qMF+o%tgjIs+^L7KG~t~4CEB!V0WIY*Xsk`C*8d` zn})o{PDb*Dk&#G8<~S_i3j_{RDC=7UCa&xj_93=E&&YFN2njLADhB%Xox^&4*y!pd zK9Q4**z74ku{mk%CKsipPS;i19hO_TZ|tRRZMT5u%IEMxSR9{et~_s!XMTT~^ip}H zsyx3pUusdPGP7Hd=9D9!`Mt$C(wfC{7hF=wE1n;cFZuMmv;ETO9c{b3zFmegJkunl zcv)HYtn%Aj`HdgtwYR7#=X=U-wHqai(@3IZs-!tOg*x5L$luu5m%}zlnc2+y!+*V> zNqwDEoTTg%_b3~s31Yn>AZRf+!fonbzaUkNw{6H_FOFLft6RWz69$EZc!dinj>aZz zkjFYAlqhUUy-y z#^~^Kyor7TC+BU|y{$n_Mf;kuD-h!qJvVO9AD#q8>z$dT=tOC!#G4T6;Sp^26M+1AnCNK*O z0;9krJkWcAW8fbchCUD60{6f%)CQ;-P%nUe8hW8_h*hQQXk|_ZOIUH?p&<=Y{_lax zH0kN(mXG3jJMM-2l;)duG~?`wy%$o`hIuu|@BPw|u>XemXhF<{^6Q)8Lw^x7WG-(L z`YU53DNb#M)1)gV9Wr13tpOE9+oCTdZFZTw47HK$c1p^E?39$n@>4&~qf(6Q{0iSF zRmzb}q{}S7iUc02Yhgh;9g4Zsba&Tn>b4BTu%^kl>pJW!GAjjR8+rct%v<1o%+uf7 z$H&Wuf7pxd(Ua)EE}?1R7hkVhfAZ#mfnN00IiTxB(`xRRj{DtjmT&VVN=c05R8o0- zn}TjFx;o!Jhpb%Fb1G0F%}X_J=Dj!K7#ElMc(qa}X=%SDj`}~W*6Q2ZgP&_T5)(Fx zo8B#O+=WhP(Hek#YJO&hykAzHk#SL+DUNR|dtatfmF@hlJpPnwI?_j2p?+7Gqueb1 zbKvdFzvo~1o-y6XFquN0OClQ?8AltqKIYy&zkOpxng{PV-<=nCQm|XaaC2V3h={n) zV+b9e3&W1@)am&Dbq)=OzYZU3FpEv2wzoIG&@QU=UDBL=Gk{DJxsh^Nd#+8LicOB8 z(POTNDI$6)Y1y0=ORu2+X7S`$(NYnK97{5w=8z1;J(@jiAakc%U=V#ObMdS{Wm^5E_Kx<^jt=c;$7rIhg*j>zlhN;M zJ{Kd+Bi|&;44X*NWHF2EKQkNidOtGu2_^G?`dME#^oLR(mov+X*)^vOTj-dEa%^pI zk?xvWl#!0kqFP;ObL=!Zdp*@TJz?s9jef%kVH5GO%1TqCKsxNFpVpGX))F*-CpBqh zHzu;3jIUd=S3}&ti`kB>(GcG~CUX8cjURlIi7#U=*N|QY5~MvhF_Ga+HQ~?4N!`B4 zE0Kr8tQyXn&YGu>vkdF&xJd=$SpuN5hRjUxEkaL*ToB0HgDh*vzy(bRc%R@L8RlNc z6v(&y{cQsGy-U=-D<0n`gKiVFU64<|cX!cvz7P11A)^bt62KR*IMI87Ltqg2gPuFF zzXgtgRbU=?1eT#61G~T}a1Fcz>%cM8go)V}un!Lny}&-y2w)j%hQ*m*g7Z)B5%UC$ z)VQc4g2=XG>r2i%OViKzoOTP@ur8W^UUnv5Am@d8yC2Rwzf8dQ&As63%bg<5h%ZUp zdpBqP)wS2?=2ey2&i1NyapG^;FSJ>;+1Z}K-jf}|+1GI>=)0d8*RFIL8_bN0da{<**w$xcN|6Qtlh2)exepbeF z<$>V0F9*i>dV2ncLPnwT_NC!VJAScWGEI0h*niWWt2OoKCG9t}#C3_{#H55?N&mr` z?wU;~tits`ebA$NRz_;R>dt~SWpeofXFIBMnQeq)pk=p(y+x4&ov}91elYDp)wAuq zk!P1XyDmvNfhm1w+gS2yiO0j*>iGIBnd2M!?cBVzhB;g(tE;=Yx%#zhJF5mqhDYFU zJ)$2_jG`s0aw>%MzgcXvP;rgZDpd-EfG_;x~p{qR+uy-8JfzaW7|mt zi88B-7Ilg^av5d$yhP{8_D)qfTlV3^l*dH!H}7!LQaN6F-M}SK>=o zpJfv1lW_92ZA=k+CoY;5L$qm0ny%OwJg1^k-KCqtB)v~`A@$G1n;uMMiq4ed0e0Sa zK#?KRR(GpCKegbbIVmo%rk=sNI^K(6wgs62;5&Y|IB(n=0hwKrfLvlEuy|b01-aGW zcLL1^unO8s$hRHO*F)z^km&dRUKwxfNJ@4^&W+rH>;l2sj9|NDj z9ju@K?;e+iehwT1cfdF>3fuy}z#p&+JscPX)`3f?3BWqk1>hTapQs7IIWP`&0D3Y! zP%{RvZeV1mC0K6D-SWuS)2Af;Ost}A*(>7A+8<6oKP|bfaK~CDal=su%HocE-gcoT zSLt!s;F{<4TDOEK$EzEhyiy;!WU2nH{D8vn(AsRR1v1AS9+#-%?q>4vbQbk?O7(Np9Gm2Rbu|ZegMDQ67ys+T? z5BZ0m2%q>o^XYiVpPz${WtX9W%LZv_9X($mDAeiVy84uzx_(`tt~)mLuW3;OYl|!2 z+a2Qy^-{w*3tSuz+3^J1e4-*9d8-|nLHn39YIc!4IIGX>kp%8?V+B>SSgz=U^@z0* z^N2Pooh~mE$InfsMjM#XD1$znLp;+}e>hU9EgT;cyJ9ZNjSS-pzi`7wPjX)iNmJuU zGc38T)xJiT zn_ETFEN=Z7C8eYdHB|Vu5w^N@1oc14R<@t%|GZIdDUTS?utqD`6vlfN)#%qq|ft|lKh^to-EdO z7HPl61ADe{sz(hesM^E*>6ZgLT%UBU-1x+;`dbeFSUA&*>FORS;P6Bt#brOD^+=h1 zWZQ^JrK(aTJ6WqqM(ZnRHJ0j}AMUGf|51sbU-dn+I^LYwWF^7_HZ|d-{b>H&T}~ty zrQxCjdx?YLkJThGyE5nL0d?{c8z#YY!#x+&sB>f35kzCT8ip?z`4IpW_#GIg@WZ8e-37hlXHAS)B@hJj2F$Pj?}H25T7Ee#%I z$l?OsH1u1@+k>22IA{8YR5G69vjt^=goox6znPbf-ys41MVN7czX|w->}t?}fG!iX zT#!Q#dt_h_7zGaDnV3~g^itp(m;^q7Szs5~1|ES;r~%Nsfmh(2hF;(oSO-p_7C>(X z)`4%R1yBQ^9zYH8U3px-{7m@W9a7WQX<6B&q5(d3<_^D#CI;2=4-a2&9_w!%tE=y896Qi|yzg_NvZG*SuR?L_Recgl+p>)aX4sk< z-B~@!e3dN;2vc;yOuU zj{+^tGtq}!CC@~iO(hp}z84M)PoQbmV5?BzBb+Q}q~`_v=q` zcMODAABrjwpgWpcc_#$Jk&Iy%3bl-ihE`@|DoO}4Dx(&c(2-yI>Q#n=bycAB%GLGS zgwY{i5jEj%gG~G!rF3P=Gm92POXTw9D0NGsx)yrW$JT;>@qDNy&CK=sxBX+cM(TRY zM*5ZcV_E$p`eb(X6i+YLrpr@YU5)&rUAMQiXi>y4XH?5UpZvAm^Ni9ru5x6#*}0u@ zJKWga-EB2=tM~7(&ASD|7Vm~_M^v{8KbJqx*Hxh*fwEjLZ%$p5B1_3m(WX)5?ItPt zy=T$h7oA`iDv{B&t~V=MmYq8Pa<*J7%SJOf`D0hkV1r2C()ZoI&0AmX^grPB@O3zE z-+`xp$DLobdE+aRs|7~xoTeeDYnY;u#aKYiay9LJr&?qbh?9IR)?zV-aK$|oCOdBz zF8bLJ`}eIHUp9g>vHStGXo;nUwEqPr`rwX<_WebW!s1b8K)l-1;=Ee)pbP73mNIR3 zcdChxWHrevtCIBJIgD5^56#T}!$??cg>Cv$CiG&+%mghaWZm{GE+rsO4{|=>oEWlu zz>^3bC)oEw4i~JOP41MBGYr}-@E$|%Jlq8XnE^24`cm@0tZL9y!yOVZqXyjvcq8C$ zr{8%`2{?BG#(+y;3s?rGfmzr$1E&-FWay#5G%yP+)6fh371#u3fm7fYmFS6* zTp2%IdE8l$cOY|FcI|p;nn3P)j2jZ#b%}8KX5O5te{2$H@%c4nd6_HvHi>N-^xBb2 zZ4cVpFSS&RYTGY#j+CV=P`RYGt6)egU$Ca?pMlFicM9)3IPn^#AGhdYx1XA<5S@5hkzLy`#cjm7SbB^FwSvfj{%qCBsZn)lTK4rR*IlA_4 zCYd&OY5-|6&CokwGAV#$!1h5$Mvi|hGNp2S{CJBvhn>-h9^K+S{R-X1;z~}w)vQ|` zt)m^CiP>!`zxM3Nb}kmQKgh6pa^P;8Ko69)w*8M1w(mXHohZ7`WUGN-=ZmAC4?Eu4 z`D<0!rm{idGa=FYCz8g0uc7^ga(FtAVOT;l*7fm<+UW1Q>YR)lIL1NuDINNniItqg zlX>^hzSb4Xc|99fxNp)Bzm5{LE$(XC$w)O((2v=ke~b5Ax73IhwBcq(ZW^M!l^{Ks zgp*WfU78Fs)S@-h2@)1fi0G3sQut{s$8tUs^q6oj44gl~*)eFX!RrLMnXpfWjGrx+ z)dXbHL)ISLGXZzFt%HE;{e0>i-fL>~rr|L=Yn zSce`Cbph%J*D=*+|C%+@g!_Ei^}V@A(zmDYjjD}`EIaCRkNS9-LK?HjM8FL?cIKBe zxxIUM;?v~??yhME*To%`>$;*#%AM<$w=dL=qF`tr|r-6NI9s?5J;nxo&} zkY+d)V;Nvm{daV19MnE-=|^Xz{({ygFM3bvbwejZ!pC%D-Dp0=#}4m~3gOy(J=r@b z(4H9*Rc@V8YJDUL>9uTBbysiFJyU4q*7hldS7f&9@~q9bZ8zA-Y4LOA8KSV6&4z+f zbH%w*TjjO+;taY&j6!KjHDWW2jXl}O>|UPnY_uMLDKe> znOL5jAwStYG}c=ft{WMv8nYSDjb)-jWJEEe_?n{I+f4n+mQ-*mRQl|svdl~J%+H@x zQdwsG%>+gCO0gnSl9(i(EBMtTa@8d6pkS-R*IPJ@Vou(NZD-d`I=H{nXXhD?zp`xZ zb?2)p)rxZG%v^>_B|82d6D^&DkshAHYYxrUV5|Tnwpmw=Km?Utz+x6aMYl{+c6&}2(DHv-q4 zAkEz{jk$~E?#6awVFAHzK>^U-MEfP|LK` z=SSIh7W$uScCT1y`?_@z3J09To0}{mBgr>q?xe4ydGEBpdMxT2)wcQz+I>1%?|aMR zbMtrS4_w@Lt8%1IN2YE)cX#^DXn9f*h7PBqDMm@8JGP3D;*7N^;wu>xnH(jA$M6J1CJTmflokwGJ*Q;*b$wrSb zX7@mMxUT!PL+=o`QaI#fqYE2;g2rf@`;rDidi%m&cYn}@oVkDB5i_=oGGHDeme`)8 z7tyVq*W{Eltc&RRj3Viw|K?L12cCCy`@G*N{DJ$fqq@JoqwVA7*8YZv^-rE?)tw$* z8=snm4;|RJoj<3W>O0Ffji|5j?P#htL*9~0HJR~QOQae71qn5hXlaA|J5;Tzey&rF zM1H>V`Ok0So;K8b#BOh>$Lj0bkcA|HL_O_j@II`Ke$ZN!S){szi`5L z$_1R3jn07Yni98*sOou6vzbPrYtXs!O8k7_x6F>^i<#u561At%b#+g;2A_96n3;U9 z9}oC+RV|`!K$#$mHKKx>L{nuJnw8DRNDp!dY+w?~u-?QJeH~4Zp5ChjeKp+g1oLXh z6M+0%$lL=>h@tDX@yxC*Kgq|vPvDb)GbuP%1|KqLyI=+e48uJWa9<4E!3cM@fld=L zL7-2=z8QRsu-1lrddRSbydStj6_^9YfIr|2cm*DTGhh(-rlA-5G%yTY1B<{va1KmQ z?5}}K;2*e!S^ykFZGbufwE*e>^kCo~IESZv-NE9TI7!BZM<@9g$`_RWAPGIfJ#tu< z{&QZb1533bZ9~i5y$;i!-CloRCdj+ySAIIpl6T&IFE4cO`g?h)>94kixvbkYr78jq zuY`;$fwOa@6~oz)u}=Gl`>MJDDe*TyT8O=>dxX|zE4ek?kn{FIUT%#c{D45r#idND@k4CL^bHTf!aOS0htsrePQ zlQDy?w6~^*q0A_{HS*C~TbQusE@YvbDb^qQW{Nr5qC6=a6G-ywb3?n6s`9Vo`>IBY zKfW2e`Dc>q^P5H#;&lE-;p;~A%Kpan1*DGG4@#pKP?n2lPA4m=WCL1JucW%6q49$U zireU@cdc%3sNVnZt4*jMy0bhsvOJLU328{18(LdNwc3`>tPbt-JDJW^BUQy!RYj`Q zJEfOY8Sejl@|&hQapv)%P>$QGcV3&;xuP4Es#(>@-0b?a8Xc1LhUvJ4C>JJl4?7GZCd1gVb?z8Ys9M)tGD~>vg+HP+0 zgOR*-jmf;SRO2LzlY)}3@$eQ~L1-X@`yOTE>Ie2A-?Z)(l76_o&W<$N!Zx9p8v6)L z>>}AeI)7JE72p-#@v$?o2>$E}Glntk|xE3=veDZfbY+8GfvFp@Gx?pBUX5os+{|EM5p9}y1 literal 0 HcmV?d00001 diff --git a/tests/fixtures/persistence/v0.5.2/qg4_l2.expected b/tests/fixtures/persistence/v0.5.2/qg4_l2.expected new file mode 100644 index 00000000..1a254669 --- /dev/null +++ b/tests/fixtures/persistence/v0.5.2/qg4_l2.expected @@ -0,0 +1,17 @@ +33 65 3 5 +-1.2578125 -3.078125 -3.328125 0.67578125 3.171875 -0.2578125 -2.796875 0.91015625 -3.859375 0.328125 2.296875 -2.0859375 -0.66015625 -3.3046875 2.19140625 2.1484375 2.328125 3.7890625 3.3515625 0.08203125 1.41796875 1.43359375 -1.1484375 1.4375 2.55078125 2.0703125 -1.5859375 -2.8046875 -2.2890625 1.73828125 -2.41796875 -3.09765625 1.53515625 -3.6953125 -0.66796875 0.67578125 0.96484375 -2.9296875 2.41796875 1.25390625 -1.8984375 3.14453125 2.359375 0.65625 -2.52734375 -0.17578125 -0.80859375 -2.171875 -1.63671875 -0.421875 -3.08203125 -0.1328125 -1.94140625 2.734375 2.1875 -2.1015625 3.828125 3.82421875 -3.61328125 -0.9921875 -3.27734375 2.9765625 2.29296875 0.7421875 3.48828125 -2.58203125 1.0234375 -3.12109375 1.83203125 -2.29296875 1.05859375 2.15234375 -2.5390625 -2.3125 -2.7265625 -3.33203125 1.671875 3.6796875 3.53515625 -1.75 0.6328125 -3.1171875 -2.6875 -0.3671875 -2.640625 -2.52734375 -0.65625 1.89453125 -1.08984375 0.25390625 -3.65234375 1.08203125 -0.55078125 3.6171875 2.80078125 2.265625 2.80078125 0.98828125 -1.03515625 1.0234375 -0.04296875 2.95703125 1.8125 -1.6796875 2.75390625 -3.70703125 1.60546875 0.27734375 -3.2265625 -2.57421875 -0.875 1.40234375 -3.55078125 2.80859375 2.953125 3.37109375 -0.02734375 3.16796875 3.23828125 -0.21875 0.57421875 -2.82421875 3.80078125 1.66796875 -3.30859375 -1.21875 1.05078125 1.0546875 2.2890625 3.84765625 1.58984375 -0.7734375 -0.48046875 1.28125 -1.30859375 -1.27734375 2.67578125 1.19921875 2.3515625 -0.140625 -3.828125 -3.84375 1.0703125 -2.27734375 -2.05859375 3.59375 1.3359375 -3.44140625 -0.40234375 -0.26953125 1.671875 -3.24609375 -3.42578125 0.76953125 -0.67578125 -1.53125 -3.2578125 3.65234375 -2.9921875 3.4609375 0.25390625 1.5390625 -0.78125 2.109375 0.99609375 1.5078125 -0.33203125 -1.4296875 -0.01953125 -0.625 2.609375 0.796875 -1.1875 1.125 3.62890625 -3.23046875 -2.91015625 3.0859375 2.23828125 -3.6015625 -1.38671875 3.0703125 -2.2890625 -3.375 3.0390625 -2.02734375 -0.9140625 1 -0.0546875 0.66796875 -3.52734375 -2.8046875 0.93359375 -3.21875 -2.05859375 +26 455.358521 +17 457.556763 +30 489.623047 +31 529.379272 +9 531.274658 +10 491.338501 +0 493.655945 +4 585.105225 +24 620.488831 +12 631.73877 +31 488.390228 +8 531.206909 +26 558.628113 +25 567.648071 +19 590.280762 diff --git a/tests/fixtures/persistence/v0.5.2/qg4_l2.index b/tests/fixtures/persistence/v0.5.2/qg4_l2.index new file mode 100644 index 0000000000000000000000000000000000000000..dc6838cb70b29683e5d924573aa27410247f3dcf GIT binary patch literal 32578 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%0DPC1}&@xg?vYxw#rEHGMS<2qaTHbEGD{ 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 z z`A2r%%hCqHhuqe(R>3qqgdWavaB&C;4P~)hSSbq>KPGDGuoXF~V@e!u%tA+s!sUcD zOUVRha)N)Z+EB!^@cd^{|2Z!Al(Uwzrq{KCQZ7OI~sY{VD%ZE+IVxCB2CO?D1@bp=FGIzT<~7zAZ%AC)S|sp#P!m zGej!8A`&GCS0MxfyGd9)4`YaIQTB(8n62r&Ht_5qCS+xyZ05g!KrBKDjDi;So~x)Z zuNJH9p4W!_ZvtUgHz7!t1Y;-dL%@k87`v2+fOobi81BLTmz)PUVJSdsPynjpv%vi1 z6423C4ZNa?fR$zy@X0O*Ds@G`yjV2rgC&=*fzR(mV6dweR9iQKi0G=>TtI_+8@R4$ z1RCe-K-h;`5K>wND8cREzo;sZcLoDLl{&ytr+Oer0wD8P7s%({nLQsso*}!x^LNNC z9r2BQg&&L@=j@ti@y|=a4LOSerDjhTle=TjkX`S zU~}arZ=ZcWe@hv!`k#vAO+@vbA-Rl`naGSyy|HJ5m?c z>c|SMsjJ#^gyLdQGbP}~5GiWgH1##J)p%*!)b?qQtsh_ack~NKWx}!QZEJ{A0;gz! z`l9E841u7Em}bv1bUV8*gcTLyZ{!gX;@IEwTsp{kJ~%kQ?H{;*d61@|k<@ZTD?$CZ zia_Z(haJ0Fp@TUgNC9fOY?b_{WJaHJdAvYhGZX+?H}8bss0Rk> zZHUDm3+@n9+lG);i&6`AIc&LvAB$KalkhQ$70U8tnaLVk^yD*RjpZ{fVKUQlk?yBZ3@Bf|7*b4(Bteug3hS)Ry1TBCRtzPdcNXom?ry!tqFp9sQ@iR)8fz-V zdPPoo`x{+Sckv1`m=ujK{Nums7q^l2e!*;=-lD<{3oydQe-KN>a+FXr)GB;@6&pUS zfq{yX7~#!Pg!FO~MiR_m$l4!(P^pW1qZa*qC>h`DQ&A-HE;8H}i!xTGpxf3YplqN{ zC7gR^N>HPrgk#CbL$e#0ZkT$TZe)C$>e?oZ5OdE=XjF{B`T((q4~DGr0n80-{}lq| zoC;7Ga}6X~-vr5nwX+^@4k-uo?w5gbb|Vn=T?dPLYQQVxHrT$f7PN#{fvjZ`u=c0~ z=)A9+JrnGtSAoS=Qt*+|2s$PjK$b!`5bbLKLhDxGk_~{wv=xZPI{;)6atnEeoI}Q; z8-CXapdVm90KM?LHt>7T|6Najd_%UO2cRFI7a;$TeaJgJTR>+(H~g*(knq>g4;K#9 zA1g7ro^Eq4=SfDY(Y2VrFXjFvKL0S`atz1fl4}L~YD85cU4Qq$iDa+yzI&K_o_CQ# znXAP$7UTTazsgc>CZ@+aqY;^hFU0w{oGSRmU_+7jbr*G{f0L<%6>3cYKgv<+O@qaIC?pXD3u-lpD{HpI+U#@fT|4uwT zO{3ZOSkTN-YYTI!eNtEXczcCam$a+>JxBCDMZ94P+4Xe^*^R8n(Dp13Bo`SN>y)bK zsif*^a8#mIMdJJSIpVPtE|)7R=ZY@3Z(LbnkgXn`R=oaNw9fnk{}Ydid&Huc_xEMu zlJc_mg*`s(&EBLouDDRiJyw$t6~Ky`++fO*`?*B=vszsoiFTpHP;>hF<@Ce$v?C6Y ztVtH-_RGjE)vXhLj`D|$?Q74(tk${aZBVjhdm_2ISu!R0IMpbTG)p9ssfKJL!$?mi z&+g+c9ryEY25$2_?9I*bZ%*BwW^Qh8;ZCEjMdzqF5RS&p*U`8dx}GHce%~j%bFjU3 za{QBYC~~I0dE#V#S4023%e_sBe!PJ^f#2eL1FtyWhZ4Jb@^W4+H<+_eX zTvMvuGddxY|LPg@8Ig_u=Of3zNiJ*bWBJrrMeLNfq@wZf_M`_Vth%L!LCC;knt2CM z?qPG3l*ii_w2$b%ZCBz--}lI#zn>7N^n4%h`YNTj#6vLgfM3r@^D@mhU_lG^MqEEFgF=x z(+p5B_yJ*Ca*<)%0Mu4|6GcAk$GyQpg_#8?urbEiPBsA9nTfGqsG&l`aJ(*{f>j1S zKpCw774F_dRsFjYMRrrL;Vf?y`H_RXPuop>sEVPj|6KtKwpPrZ2hw-n0NT@)V2w@% zkSX2*|9z_ji~VbWMt3d9c~}i3akb!7{4Egwykj;W2>7Q3=qc3!ljW_m^+M7E3>4L4 zvo3&jfnhlS1!k>a=3)m(Q@#hbVh_P#ttX(%qyrp3*9&yD`T^t}@(dmDJ6DG;fV@Jk zf9Lj){ohPOexVy6=OjF!L*Rm(!@L0I56}hBFVG_}r+}V-`Ni)V19T0{J3_Df1jQ$x z&vRwm$iJR-+b7v8**Jtzyg4PtAhkZaJkh5xIxy1s49z>EsU+XyXGm~@eRZnzQgEKT zb;9}Llhov_1EMog`;SInck>D^3+DXiW|MgKqSw`^tP;B|p)_Yl`dL4ZYf-(Ck8Xzf zavmRPZ3!r0M`j!|%es{5dF6a^7n)$Uzrv`wsG*`dhMQkdYO<$3`X$+**vDIMXR&YL zFn>g6$wuzld-uBD=2}TlNb&XDQrcl>XQ!V|SNKzvsA{V~R8>{iblwqSbe=vq>Eh&U zrxoEm?a~+FIOKG`zfX%k*gtq%Oevf=W8i8^_VupQx$cP&%n5b`cUwCpv|ZIfVJ95JsODx6H8V64vNhAz6D9JWGje%ri)6Z0J~bnG**kSv-Z$}T z=3R51&rpNSFR@s}<#1l>>LuxM+2UbwoI+|eJ2g6+C*i1SC}<`m3s&{_XCyo2KFa7% z*UIQu+(?>3CM%N2Bm#k~tVlj9&$PGe-=VJFK&(4Ike0zITT3F~sHk65o8O z%r*YE^m}>C7^iIawKxtt{Q!pC>PHC{SJ2euWmx5zzfntfgv!X-kEy;=r0xtqOJ!^~ zN0IeUF!mN5eBZwWY-9Jfsdj5o*=t3}=Oy_6wTwWvHQhi-qlGBaUyLAN9RDjtKG$`i zq(AJi&x>NPhk29Ow!d#Jvl|d%p3S-d81>Aa3t)|)$o?6Cd-ZSTA-C{c0C|V3LoYy{ zA>YskkX^_)WEnCHeF3?Li-ZUC0n8boTc9_fCtw}{Jpf$;bA{je1@sQ|!jr3+2Rxg1 zr?j834|XdFod{%S)^7;Mc1a=*WwJxtDe_FqtMgq z8+?D1}tOTzvy-5NOqeO^^7$(y20%8bT}RH_ZM&)n$0$2V?&_4IgY_o1A4Zon3uP#NU%Q|5l9dWA+k;z3;j)QOUU8!q-tA`#hOHJ@$o$c$%|V zp^gGC+Oc8Rxvpo{-7WN1(e-ve9J0>a=rvQ{)sN{J7HX1Jl`UvU6D)p|+x$b4^)kEr zy;L^d^NRCJ+WuDB+ug(IFB6FP{RxSJWG-LCJj4C<5HUpmq;Fl3K!|4+X< z+j;AG>WF3DW93_9;)?IzWZRloW1zYK0jXIi!!94?C?%q)XX4Od#V>gOpaA>6Jr{RC z5GrKNrxF%iz_xw3i=X>Hp{mRVloWCt+qUr@x^4X%l$|{n+%Ha|3O$Okb6_!E7pMTp zd}oY}3XtLFH!vhviW0Q0f#H$WZEX2!gpgr`usc0xdxm9+C16Vv9|W>RfMmr7eUw5F zGbEnv9~ivK1Dod+gYE2_v$=tqVKqpdD+aurn_$W9YEUGum~}+OnL6N=*fd)kgl7U+ z7f^WE2s%GBf&Ruekh!!OI1V&{(#rtE%&h?f(~rQhaNH00f=okxA(tdPpc^3H&;ig1 zkmcVTLq9-o{NC$-p9vuIFn@r2Ls!6j0r~@a1$qEF1bPDc0eS+u1bQSr$)oJ7n_Z}P z1pT<{;gen&Vpa)DJJCC%u!wUtzzhHQIYgxeG$oy@`(+ng{Uot^cS~z@vQJ}vLR?z= zd9>ghE2ARzf!AJoHjiec6bQ~`^G|!{ zas!xnuc17#vfR|D^zw7jIkRfN70ueG3}2JiuPF42*D*XmaPw|G`_7^D8|%YF>qzhG z*3s!blAzmP!YaNRwaVUj27c@x8f}%&%*ZZ8PQR1O|7n(cd#y82P%_Xh+Z^rcsvD#2 z9P-MCe&U(SFIIl%V92PoA_qw;U8I}&9Awy^~5q=Z*N9)oW+*Cd-1nsmy#Ft9+h!j z=Qh55>x}7;@l0WdD-$G$p3YV7>0wyK-P~*`Q>3g=6X=;-YDlYTt*WUqk*wq=3$VJ< z%MA^J?pyWQxq3QV#lEh1BV>VI3E8zok>+SlJ55tiu(Sdy$hr>Y<(kChJLp8ZGu@HS za#ru-#3bmJ;(bxED1jTDz~R#HQ;9v^Pt>vKqtT=^+Rw2RnM@{?j`zsM8f7D#RnA&? z^`SpkK-B8%=Q-tMCns_Ed0Y-HLE6H3mCIQZw#GRjdw%qp`I<}rNFUT{6eKLoGEU3Z z3aU9ieeni60ue4k#-NX4-5@-4@kRv z$9phngrqO}R~YcLT;gzXugkUSh*{4q+hn3$o3l5*v;{|;kKwF9t>QaEvsRpw=vY`#^t_OtT6jRPOoi@VVo#@U&VjCgW0QjHC z!AKR$+Q8dd6j>`p84fSeVd=Uy)#bUM=|3TO#4QE64h0}~OBwjDE+2ejSIpK7VgGPT z!%YyVQ~~Ct;xz%GXf|g!lUW1aDYed?8H`3t0Z|u#iQq<1G1vs0b8gM{3Fd}00*7NQ zvo46uZ2|#jn?Qy`^K5;9a_#@m5B#nVLWUuukk8+HIAj^R0Qv!P47r8AfH^+&0rUsl z<00431CVp*2mYmcEl7o9*t_lXNqDn58Sb>=-9!H%8$RCXy*05tr>;+X#$VLUh9-g zeWKXQ4w74?UNJAr-yS`AWS3Khuf2N&^X5@kznk?|aXWK){w@OV$LF#Oty6*vTskan z`@{sF7R7~`xmu_+cR$5H5`)jXbDj_O_x22S%Vf;AzRXw59$%TCuP@W4T>Np2EG`q5 z%gRONDP!W0KZ6~egF`$VT;!f#Lg@76w~UPZj~LbIt8HNEM;b-hA_!GUX)c1STgPy< zK$wMMah7h;g2HGqn=91Qi{=)Hyt>K@r0l}t1urZ)ipl*6J$*UO_ndP(#s{BwwTDc2 z(t<(}Pj}V^=CQpj)l=FA8?LTBW=IJNqU@mj`R77!GFf*CA;w!MeywB5)Y0S#a6jNJ zdORKqvIVPnsvU==%M|!=?L5Q%*Zv5tDKhe-m{hw(WlHMKe5|ps$7_qU0~Y4{tj(Dg z>NK_JxdOZuF^@+)&ZDlf`%`a)PEAc?4W;ZSVNOwXd?_bdHM&7jbxuO8N_Io4>J@h@ zB|n;yy@SPFnu>f;(-P86U13Z(-wO<4#FiOVKCm3v09~6t${d`tRjo6XU;r zP592pevZi|ed+QZlOC_$Z}OS_z3)OF1a6` z0fJ4r*|3olCY&ch2~JDeNR9h35E)5j^x-{&!G{2O_!zJkcVUQV8%D@ngAvXJpxXv6 zqR8|xQhEI)#{X+qn@YV(8{x;_tqhONC}FQHAgo>h2wfx$xh@5S$Llen+7^sJQ)pwX zJ&Y2n{=x`d4H$S`gTT6AesnQ7qgOOr7uaGZ2K;B&KryL)mizU&H-MVoP2jz~a<)$p zC%Fw4WLJZQZnePhYZa(pcN;`B-Jb0ewtsG$ogIMZg>zdP0hibemK1b>-n}hgc{>J@ zsyl(>o)*yU-#R;21oHvNB;+4*3YmrsL#}_H5uhJnegGMVUV!{UcR(LN<{|%ZzlYpI zFFiudrj@*IsgRVcUxyJve>Prld~5_PUx^ za0#i*JsR(sd${y*NK#N0=hhh~Nor0^t#d+ogYSJG-;+fr3NW7gmI`mj=u^5E@~C!! zjiJUT953$mi}F0V|FlUkg2HKY(Jlt7Xyk*G%0U#qG- z_Nih_R=nU}vEI0E`Dl4LQM*Q8O+SsYoMJ@TW?~n_WyfeGWOFz6}wZX_pJ1S`E`qoavn-Kmb--poCQ~T9NuQn5}jLCiGCo2)W9DP`w`r9|fR{Bll6^fDguw6eH|) z>R9EDN|b=?Xy)C?m^~91oyi8)cdrAiuxPec`1Rj1a4(}|wqM8*RD!|(M6ga>p0bO`hW{wKI+8I_TJ1mNG!tNr%EGguN`x*NLUJtz8;c_Zr zFpJ}K&$l8XMD$!+>SPp$S6{l&FdvOE+dE>~ z{Eo$PJ>ni{gtx2L%Qpm##FVIV69lQL&YbyIQ=7Vv;&rt}x@9IOt7T^{Ts8f{adfd8 zRM+~NVb`ZMeWd>uorc%knaWI*=I*XTW-yp5Sd_4AmbPR=-4nCsupp!V*_+cn-_cK) zheU+f*xL8$Q9c$mCP+-grLlUAySzyX)NKLwf1K9$2*mzpYsd2JOAzn}1qr!1{my*? zL9Sq3hpdp=r5u z)ZozcOL?Emw7hkw0W{sK=fwADvN@a>1rBEb>Z@ zsGO{*TgYL0;NwlqCxM~vZmzEQ#FMI;qI!@%@d!~rAn>r7KE>ReuB3{h>UIP=Lbs*a ztE$XT=+aPG%qK*1IBYG2p&7TCny5YU$(hON?3uK4)6e1qe*NR@_wLz0E}vLtF8TbI zf^7a&^GpLi{D=QMl0Dil{?YEWxLpfNeQKqI>Zy_`WaWRW$%7kMFNJtN(+D=yBe zi=FzoU1BywE2GL_)YP-Id`@dOpoKC1BUKJ@buF)H*h zKnaT)QTB*G#_wB5MM5%xYX5pF*qVnTFXB+!HD6ISxdBNvGog}BzQX5>*I=K)d(_hO z59)KXzoDj_EbVZS*F2%kQi5oq(N56zm;bC$=bgzN(t z!RBPE!5>w#XMs=OZ-9fM>);2k0))S=2UqkYv-5-b>+l+3$!)Mts|j4Ze|whslb2e+ z|7vSz=Zt+0-JP8yfHOp}ez^H02K>7*@Xh}Tcq(iF%d+l+zs>K153hP=^8wgDyz%7e zY~KLZ2q3?|`GzilEJL;-$8c|lUVuIz;Q?I$^8m;&^aos!Y3K^bG-MvK4}AiehwMXN zK&L>LKu7#O6F}EM|D1{7HrE!W9%9^2#*3$S*(WQ~gTt@5m$?otIj{AvYp{Om&5|^` z%j}3Nug~Qt*c}VleL&v?CeSLDru-28VP|u918bj1ogFm0gY*#Ah(*H>e@knC&k@CM9%5ZFQ$9kxo$$Ks+>-=uJAN#1cW}2*!u>@%Z0_uA?re?M(BSt(bGAQP z(-JA^o0^Jpc@-KtIVqoJIXgNAggC+{`VJN=IAEDW=Be`P;9zpEbnw;mVBSnmx18>M_+(Vyj*^4D94F!tY56CZ=q50$wxh3WS;Vt$d5CZoqOe@@=Xiy zAG=sgCY6!JMTG_8Ku4A%CBW5)MWL`lSS*hu&Kzpxkt7s(!T}_^It=OeL)Z;L7{Ru* zdAQ*;N+|6B$kduPq*EXBukFTb0X@i0iBg-YVmv0i^#Gp)5?Lrt1X&3@- z0OUv`hOpjVMeb-=XRt?lgzf)MCWU%bs$LMWbkj^u9Z8Oy-kk5h+mj{DV4ZPGb~cLeii>)r zo*aB#7;-T&^jw$y>8!P)vNvZcuQW{luVeH|L3G*1lW`Y_xil#+;$u9 zscY8#k3|>w=fZ=oKXBq&B?VsPWM-rb)y|vE?D)}ik6W7ZOCl-c7N%6+%uW#FrGS>Q zO@(Fnu~IC4JtMZUlJ@BM_`dULpBWh+*?2eaI?{jgV)N0j-L!$02kH^;C7VR}=S;MT z-B6k$5m)s0+eQ7`|0u#S!zF`0NT=_*mH&^X$&p(Pb`s-;70*q+xcIq5DJ%8#4$6_XDQM7`KTcDv8%_H|Nw_x6Eq^AkzkCvp@}DH~fx zd+UCv-Ky)<#eR(|#Eb#WWke$JkzKzQFIyotdSzk)erC|G(nu%}EZjj*AUhK9wk?r( zagKuO{%3y%I=d3W0*nINh$kW@wRe)0$&GX7tT5cP&0uX|)%W7d7q5$--#k{>+r9N? zMPhu$;qP%vVh9EMw;`M_G>)+EBCvg9h9c?SC__sVBRuoMmNA!831>c;eOFmVMgHjo z!sSE^bjP72ulXn;ej`GVugA7;4WJI&+F{`B-+&-un0bwzp{gogMcJp1VE(H+QBK!d zDyi}>6cpQFNMZ>h6q2ZjO)MhJ+=CKoSAb#T!zlZ69kSLlZ?;Yd`-gCz5cUcp(ISAM z#j|${cK@#tnC-3we+`$;)(OJvNH-v%AOYG>W>e6SkOSvSEU z(milVxp6i>$fDK)#?SWIbHa=K+S$1xoxaZ5`$xa?0mv_86*3DMg@nNCjybCE# zcU{lfFd_mOu?H{Ri}Y%>$>rJS2b?>YQn5ek#DNaCvxZe@SX$)KBDT+|y}qGI?Ju}# zm6xJJuUOWIGb5r;F-r!MPx$i^Yy-VKSiTf={ila@}x#eV@~^NynDa z722-zDOX%y@0>$X)+H#rX`EVFlU3B1T_zDH;(L07xJ>XtKHb{ZJN@a^D@pHV=}c>O z*hFtoVPlz?Sw2zN*sDi!rD^MsbSzw5sY=T3%!YnVwTkTehKB5h=8R@RF3~Y8c=?_` z9Ril)L$qo;CQJmUppA3`ZG)vcr|jEn@j9aAb8{;z%XXThm2~?# zN}7XOh>=}5YPU1<{P8%xN)jP~pDg8ba{2fTsg!5;P7vDKtpz{3KJ@hFw11ou+!`Bl z`!ZB9^y+0(@AQ?c#BAdH%pGUX<(Q}_sIMICmUeYXrT46Jx_jlbuC>UYYRlz*M7xb>heYI^!mgtLoWrKFIn z#}$gndX@+A<}a6UiiWAa%)-EsG3FnwKqY97m@%|ZVzyHosNm9a?6b&-%I10@!$B@o zLiuGgVg3bd7(B-iiYAH_;IqN^ULu5BqoA^eK@~2zfDSLYhavv87~f%08|kq*O3z zy;F2d-?t2X0yl4g#&t3p|h1^0ep#vb}a6zUav(N>QamY8!`60uQZRiXV z9?%)k2XK#vPJupw{6k+rZ$M8#r$7flm%x1Dw_Bha&Tem*YD+lu;wq1Hj2RZ6D84!w zlkSpG6v2ERbeB;PoLJ@I$i4a4oo()S<#0w-+2!D#ai*7W=IYU~CWp$9nKLM#c|JU? zApgKX-0ef$L`!!1g}jLN@S|Jv!`g3f;^@Y_ygQ{Q2v;t>?WpMMtWP@I>{;Pi<#Rzb zGwgM4{i)%>3ubRzel=NnjlXS|O09jYtnf)8D;a_p?|jKL9Yxnd{CZ)rj)Bn|lj=!{ zL155Go~KEesj$`g)$jrP@q`;)zYa|F9-|Y0{eA^iyErsjNt2+^}MQOlPd`1m0$z2k(vd0gKK z+CjSYS5M_rG=GaumOI13+>Xw8S(w;$qJCd$?vDYkAfqQqMIBkDrL1Y&t1!^#Lw8nq zHs0+#*bzG5e6PD}XrlMM$qJIe{B1_IN~)DaM@4tiJDayNvYrX6dpWYCUsm^|lpugJw3yVl+}~L}S8MUpc~1ux z_t92uVbJvxujmuuNgnp=6en1}!RW%X&$h2GOKV{iYCNL;F;FqCx84kO7DQU5!w=r+#wHsn76!f36;gb)2t0!Rdv zVR}?mjdvJ0oPvtJDp6tI5Z*2Lx=J*A?-1TK`d@4{fc1jxEw{n_;A*hwWhJ;&gx@*% zPYf2imdwr?FO!#ny|P=gc>=5*w)s}g&J)01g62wm2I(+9TiAht&i&HanL_9QVo~?( zSpnWfhVw-0G#>%TC1e`13z>)9LOvnukXOh*+f|T|mME<_XXZka5U5^ax}h z`UCpmcU=H_0_F_RG0-n?L0>?>yiW{G%uBLvDzh_>3CX@v?xh`byTqFrW?g#Jypj7n z@#MMScy9D&FKz?9IP&7|iv=eVZ-yDz7dp7Q253d6hMzosBRbnkki~Ac&i1~DRz+r% zpC}Z$#ziESr>7PlI2vrczvNncDb3OCSbY5}H!P%^8#x@Ow2>~_zioZFZRLsX0JG*R z2le*yz33qUur^U>R5G~HoWt! zn{o@gzSAI9uP~nMx~o)=tYb(L8;pkPOv>g=7D{T~6n@&G-9FMz^VG38Xz#UGiDvIk z8=0DrjmkphqcUHc@o!A#giIFkU~;PUYTnG0S@V#*Ta??^oWo6c@G3hui7%Jnx1zeb zI?_M&^(?yS+#&7bTeRjLSk`yVJyfz|cZtXJ@WXYZVxhKpllJ|>5^u5Bsk39^ znX!p2;w^DJH7%aPE&O%`&nZ`3<4KL;8QnJW+66}1Lb3r#ZF&1e+C9QzuWMbFrT6+$ zRjnu{`6ecHlugU4f($6PYfL(QM?0AlzN3D=%q_k$*^D}|j~L!(r{-6*Vhv32whbl7$cTkM z8Nnxfx*DIf#)l^xBvVs0H8mn}c_V&~!x#QkCK3}o_JY*7QZ#k?Hb#2-Ka4Pg0QRS6 zfPHQbx{aQNJ+$k@NY!gFt>#hvGylW9zNt`!KS}s(-~nW~Whut~<&Ut} zsH3Xg>TSqdC#+KKCzk5)2HWNvk0Sdf0J{XgyAbgi6>j_&zrXw+-e)+E0o5uD&Je*n z$B=pFmYcJ84B@g{=nUux=m6-D-!%m20_Y9s zhl}UUe;pHI=R?m48Oe!$Cr=FJGi`qDKH{n~wuQXqb*HbdxA!`Y zRE{83z|ZCP^HuK)QWI90&eB9E+$aOV7-4|pO zsJ7OB&b+0n>z3*pl08t0VY73kb^Gj9etqL->M^D!j8W;qHZZa_mDqL&UScjiG2An$v2BaMwgHMzD29+#p$<;KA z9@6?H%7^t-*d!(01%xBIN*Sup@ei*e&DQBDCcJ(Q16Th-RSy@S!$VG}(A)zfoX3l7 zwh{#Vor4g1r&`%F_*`Mj7vR76IZ7b-?&g?L+8BGusPNet6gje$N;u?%lD64XD?cV- zs*BcA84LMnYDES{8oh!ccc>Vi2c8&-aQ`5{C^+6NiEg3 zCRt|Nwux4!T{(oxmYHcttsG)V5s4wy5N4(lGY-{^^CUHci708vv2vK0`?it_<-JKZ z6YaKYheo>{RKoZ5^m+I_e)o2_v;NpedAP3E^YwgQ*Y&jEWYfT31bssCx&QMU!~NjT zyQR3zt1|qzzU%lDn*Bi?kaP6vbPfUN2rl1|<1jN=w4rI*ZwUG!@E9C@*MKkh={jz5 ztsV~%{a+>tXpLtdxI4`QrejEVj5LMN8-TgtKwm2kxCUGTmVpBRvw%^+>`bi>908aH zz5u)fCji!gAAmD}9{|(93&0N)^a6*#1H1tI0JQ~h1MtpF4FPq-cG=3RZT!ojB>}bP zQm)=%`QZTvq;9O$eCC~>Gk>ZHKWQD5?2I>@^o`r^b@;@Fio#gWh}+Gj$53(6-cX8d_bkW>~IPsO9R?qKdM{9_b@lPT%0b!-i{8 z)vf+c!YSFy@pkK3TjV?@yjrP9X^@bkpJ1GqU`+Ot`ifs_HmC=yN$4?MkaVMD{zBtOKi2Gzj^AVD9lOQu3OC%$#_Bs{!LzbM`XlRQ+9tC)Iv5=;tr;C1X=&|vE2Bd` z&#bOUQ`>m2AtkZ2`ST5t*0R!#5|KnA8pOoN8?`mujBYmvqs&?EWKv{mf=Ly9;|i%X zMJj1Xl}d%e2QU35H67uspx2=xUEyraZTdbV&wb3utf#)5RjyVs*#l3Xe%hdHyzs}; zrm4Jw1|6MH?d5@Hfh<;d&{ldNT`{bZ^&IQ#Bj;5vl{HvOw|r-$m1T3Wm;id3Pg$q{e+Htme9>y*$kcpeyw5zlxKQX2AWnVp=x<^#SA&%-V{2fXIV@KW(1QD}sK(y=C>& z8Y0jYL-xqf0FKw~csT7df_VX85^xQ81}*^X&z$GL5rFL(9)L3)Fi$}*;2d}W&U?W4 zOdnvT-bY`W=9HN}!A#u&*auz!-T?mj`9RYAvXkNBP#;-sks{MEC})e3bC{Q2COTNS zHB|V&Jg2>XRNSnsiri9oE;V9+MLwBuHa^xjjl4DG{JB_0EF&xW_T{r@*Kd#9o!hTC z>Cr+ze(_x9$&!3R_&M@Q+(kxdD1V=qLr-u>&VjgZ4phYlU3A?YWpkpV{cypW_^c?( z;#h~*=N2^eO%13%jgR-K##K!d0}T^zBF$E;DGp~^JP+z|VmX<8)8$HMZFLdl|Bc#O zBdzn1oM^GVxXMyYwl**%Ei{mq9$am*;FY{0WvHaceE83;D+*ffg#K|ld^D^vxHs*^ z{_xd-W^){=tl4xkk(G%-dAlY<-ReBjq1j$~YGmY4c<|uRd{!`P&?$(;MgqnnEqx0e z3i`eZ=1_E&X=7bo>37;YUiY}Vcy+XN_7Gm~-|t~Qyo==WNO$~5>d{r7B72>l(Ja##arrfW zEvR_4vO_SpwCr9*MyXsQR~tpyk&bzgEDV`TjIw7N`KmSQNxtUlAI;4rm6NYt{X?>| zBpDc3FGSx52LsDxkz2V`7c-|rp-!RRp)AHBmO%TzK^FC=d)t4Z6jCVW-(cF>=to3g zQbN&PZi1y0mM-fQq^R>AlwpZ-lf(tfMpi06HMscET`SPFW@x!)0UO;C zhBTVLx_c@oROyCyo<5j-l77>dJ;H7qX=OZf8j6@abePTZ5pDJF|agCULLfVJGZBy7P?h7xb|vk8IdJ&r9B;)8m#>4l>X z$di1Zif!0Jbx+Npd4JBr>k=;DDT^xcp0fYb7Xt@CzYuf;mSqh%c#yz*2$@8nFNApk z=!YP;EWA`PolA1SzG-@%m~yxdKl9+$wATQ9$dE~pG`|HuyNZ~;E9`N)Gul-XonP*q{qS~Vq%w~$mHLHS$L_myJn9ZRBI`=P;;2x? z1H8%YfYhormvyMDg&CeMI+}3yi#PiOJ&JZBpRy-|ve& zT4FuYuR@F@)H9Tlv`9(92ID2tq`7Bu^+*Y+-}SGsGqkTYjV3ijTI}cjdQ*Pw6}P-X zEz>kkcDUCewEbIB5q480>hqQ`avsr8?vGD&kzpSY_-BY%~m(Uf*H zs?}W;8Z=KMkx7;Y)@X2Mqpvlq0^M}gWoo&3P*G#EyvVGD^&-feH_Sp3Bb~i-TPe}3 zuaJg#j+d@0?>of_8GFoR~ZoFEq*~WYOn;{-`{z zy!k~v);#`?vTi8iB|C=2eH7ypv6sd24h`qx7oL-Ju7cp4dbl7wA}!i*8^lafC(1chZ8Px#gzV;c-Sj4Um4j`0kQjOvBR zk2p^+B}=F)5Ijjq8Ef0cKfxa3zx*)uGL+lg->(Q8IIgbObnI=e?tJk2y?{DWOy)4g0;F`l=`qX$c!>Z`P#~gRI@e!<0)j zENjtb%92NfZr_rYH|H)PAL9BJO#hF~f~-Y2ws51vo2ZrahYL;V)aVB&Yp8?z>Wm4U z;-E|axIw4Ixrj`UbQ>lxgXIKvuO7!vuA~Wm?Ip149W?xJ3qn5wX%;>&p$)X1pVkh* zT>!L%;46Y`GE>pj>Dl3l4L5Pn5hTQA8>xqi&GFL0l$DtINN8=Z8+-z?@%KE z9{_gYtOpzeCjfWM+#BEy0ek{H0<}Lpz$d^ZGc^Tp#Y}Ag+yI;a9COqnV9|B!qq3d3 zH!?3@x|VC=RlD1rBQ6nV-aPB(S+@Juz1^Adt%pl<%pZ|W1(^0EN?a=m=zEl z%x19m^+^Qn`T0^|LVf$)!L+*x&hGk%?sT-Y3NK_j0a>SNLZ(u6_NnswRsCJM zq8H__p0xFpcV6ufmJa9BsU)Y{BGIB8XT8FfM8h4b36;qI_LKJ$eiNMo>xrVZG?$sjGLT%mPpyX^;-td)Sb;hfT zLCuL_6vm-wRIlD^)m$-IWFFMGdMGb1yZLEugW}!zp7Fd3*A&*K+9m92Qxi)vZ`m@d zXp5E**AX1m2lrajG_75Xc8$77T~Vs6)O?m}{%q7}&~3(_!*t>}Iy(7;Y~?WTt2;zJ zB0)N}BTcx=C3*h7Qe)xAxh_wz_EW<75}|XCszG2`l4Hn*Zj?Qk=)PH#1Fj^ z3^pv%(RY7WNIOc{A`jptVsPEhw1kgJ`wIqE+Mah1MO9`PfOruDlPCpG_8tPK^R-Ov=sL05ctDETu^I(*LQwHr*?Y~ z)O#PPfzCTy+#k%MQ)9F6K=1p+L)))gjy{)7XOcC)xjbDHKo-Gw=9M__pAsDI1TZgv z{L=H;Wz(KR$9=WrCC_yI5v_=a8qU>z_GoS}tY z;1l2#;E0*~2Jj2i2*4*ZTmn1+{LvA9y~4)rw2gPw@bUB=eb~)X_x7bCJU3lQQC?Tcjkf5~s^!?ahqbMm`bMOBcZQ>sLN)rCF zz(Hv?b<6QKv*U1AXNPNRXIJ|Us}&a3$YWz=Wo2z*g__qMJw8ld zrU#Sh(PKzr`ucks`3Cq*Y^qZQ>_J~7d5jHB@;E3`>+g^uE}!eg?>*O>Cd(XntxS2= zG1T0tq)LS8w@;kA>djcTh_vtA7ExNdu)kDzx2q#v(wp88mUNSRrRaOsjfVKXSHpxUsVKoEL$2;n3-4vJ zqK~b!`wBT3O&y|nn`=Y64xc;Xrt{)ZNGt91x*viW-v^9t4n3~F)Yj=IZqSOa_C3(m z73Xk%A3pCf@0^#gTVK!p>#y}zqIk5QGrv!rZJZEo6U3|ej~Bz;X%#&-%R1_Te7Jt9 z>{(fb2I;}%jjxzU1L?zIa_l&sOui2?tfkH2lfE^_fIkH@r!lX@-KEfeM7GgI37wFg>WMNwJ=v!Bzd z44x9$>$5FcKhx=0m_98q#Ee!|yQ@V&E~et9l{BpH7Rn(pZPEYw3=OZM5Krc=Zow`8 zrD8+jv^SS)3FrsR`mqw<`tcHe!~D{;&k$yWpex?A{^oSA5M~CDPX-x8UtPIAts#P1 z0PX^e_qEe`gy1y-?1QfWv;>e#I_J1z+H(v!B#=RHt*Zm~^X#0?ECx-Xi(3Z{SO*RO z%mTgvpMd?DI|1Mta1LiUU?1uMz&zj@c!Ppo;1S>ixLW|`fg6AmX1D{m1@I3X0@#NK zxB|E);>4|A^7e(N9v8^sj(N+ZtYr)iw?ARv>DKbVxLxy^$3vYWqcKhV@} zGdD7NPq4H&dLTUg$O-R5`#rWMMjX9tdqy7r>;A^py~%NpkDc0eEiNX#dObZR;QG#E zAt9&gQW{ZuU;CZNkkG_Ey9AlXj;Cx%$_z@|5*C{#Jmp}%b9s~RK)0%I=@Xf(FU!Br zK&oQK@8v%Ga4?u{@5W+1{~wF|L-JZaC?eVB?y zH3$y{_)W&Xw0n6Z{xg67*wnc4Aa8hbPPn!XlT2KB&^0;P*O}4Po_4pjGx<`-?T=l3&x(q! zCTi!dRFu`5S_p)V@+pVNA^y(48Wd~(;h!EqUOS~3>t$EGA6*^sa!k`zG3xhT7Lb=C zl^qkSp7zRm$?G>5c<#|Mur{t0M_Zr2Ax5-=bp9f;R4kPCHHf7>-!sHCXMtXhpXj8x z&z-r=(a`(Rqn`O49x69l|IiOTQV*3(+Lv=HM<%WIFwChK(YUtAH7V$lGg8qwGNNFQ zEAuBa#G<_3@ut^`QF$V^uvA-6q>Uw{pisiqBN~lHJ*p{TYbG_@)f!DS??|Y7h~)}P zN9&sXo+t|1jQ1g&H`exs*Y?3@YQ(I|_Ebb0-n2ZDX5r1UxvV#kekGtiPc_h#s>*DV z)qmz54&eGQp1u7t$zt=IUVgy;)2CsF@8Xnw!8EE_Ee%tlOtC%JsaWn)YU$%2=z@X? zDi)rIV;8B^hrYkjC~lDi&MqRVt_;)G4`TGvc5(~Wl}HtAR^#o@5pP)hy9qP7=Rhs# zqzTm4I3*WpkLzy`l$d0i;I|;8Ltctk4g5rZ^>#KLe>;vtUUB(fML6h*pbh{{G4uo; zT9;1qzz#G!oYPQ?gVzYW#gIV+nWW$|ljhIamX!18r2U56ioks*`1i9rj%2v8a(;|>c=DK~B&h97 z>_RcNC(hv%W%Sl}S?DKPS0EIlU;2V9k)=IGT1X;WQWjg1wMe8h4WvyZFj9|yDlYSrK`L-z9JBByL8MBM##;=&&)2F|c6ym}0Kq{NaC1{HF za&qdO>Vs-(YIJfUV#?;oSNfhywU|trhhEm69xb`1!aVTi5IVut>{ml38Xgw~b;kHO z&h`oo<+wAw%TgLNO63LQ7id(ZtdZA#f7U+gyNesJCu`2kve-!ep+GraooCNevU8;X>r7&J`zbEBa{4h z%_19mdi);SJzMPI=uhqtsvl&?(^A??H7O{-r!+8lZ|Fh>mleK`{-^gkR-_lpEP(Mh z$|~W;M40)6#*hpRY)I#k|9X=++SAw4hB5!pU|WaIH``tC3^hs$?N{xJdoU2=|KQ@;&{Yi?#Y803+xH&h!KTK_91H70zLRY-GDa(k9=L?z3R zz0MeBpQ5ynIHv` z;Yy0b90HGhNCm$k*1X zcmOy6?gnti&-4iZ=YW5}?@X@%a159RzJLe#0Pqi702~1v0N4lq0B!*enW+^h=riz6 zYE8OOJNtrhVtJj%+A8YtZ3Y~s=Q8yhqIebhS{wx4JcyepXdt9&rD0S2@9>; z*Y6iaU41JteouL@yLZB_>_YYRvuAdljTWCYKN7hifWJ4nbyr?)-fNyR=K7@u;#OSR zxu(7Mk`I@NPF%DOyA=4mruyQ^obp1q(=2~?C$7U1zgbO$NMC!`+%eHS`l@BiOf8Mk zSX}x^)r5X;kfC1#^TZ@evGfP&SDO;Zi@q0oH2#AE^~V*8yfQh`7b_ZB>|lz9^(yF3 zO_$nfXo#&(eaNJt#0wW4tcS4+^9p**Jiax~-OJm@$K3~Iiav39uIo?r8xT$`@oM)I zGSs7^no&)}keWTjLLPng&HHP|%S0){qSTa(TG6W_!Rkc$!u5lzRlWyRoy??3s5D#PQ(xc!u&Uk3@&?cw0H1skzzdQnjQ$ zH#bjsAtm=o!`p@ir83iW_x%RNEJdthv*x97MWuRs>9f?~Z`5T)8?1E&b0k`N3lYN` z8~ zGfwX#qszgCo+o|&OT_uQfnRG2oC=F{0-fgQ=q^ubF-g2A)TWe{YBzpUN-5HoV1mMA zK{A@_YhgO*@OdSC{Xi@t4rp zSB$^?R4Z+G|Mb(An|YN}nbf}1R7|*;=5BP3c;j@1R(0kZTHvuIMA)l^2-n}VU=5Qv zcCdvi_|cOHd`c$pn^=nleHk5VtyWT({!LKDDLA%l(gAy4ap(6q_Dhfw`{oGBA+aK`|2E(jY1e5mGlY4;y_$2=Tmbh2$RX)O zngQ?`KyESA1CU7sS|act!wv(;Ed~D}o3G=FzMJ^t!^oF>{^qo%5Ol}T zCx9I%2XkwtbIKrt05S@}YXmr+Isf782Ta2^Z|1BAECVOZocX{TP(uKB0N#Nc0PDaB zzyZJ;z!ktLz!x)h2KqQ%3qWlE`~sW+oU@H{F{q54EU-`AA8|2}o$Pyz;T(J=DgO9T z$MmE)ZZtI^?@Ww$%|+gwc$ezTt*OzxnD7uzep0${Z<<>q)5o0cnHVRJJ%9RGwm7LU zP8?Jd#q|-pCB+=x>lR;-y$*F2qK=$C$>v4-=8E_1X75duRdavK_Ru|@ky?|;z8dyW z;IPk?-qhSVpi-(N>A$Nk$mVzUHCZyf>E3fZD))tO96edf%@ldf|D|RY+-p)y{-a14 zp7f0J++sI(#l9f(WxRu2%JT84afhj?S`@pd93LN7DweF?NLF0UPDuTnB+UCd^}c#C z=)cP^D*0Dlmzho49hAH4PDa$_1TDU@)Sth}EwA{Ax*@$aeIz}lT-bgg?XC#P?@_cD zQaC#wc6rnq!)VOAxFJumK|wayAVrzU4HOew6T6`OwswEo)|jF#Q$0O5N59njPd@f9 zDC6HN*iY*`d%NJ#+4RnQ(cPyVuOuZUW@a^Y?0FWY@*w;DgC)u-hp8`5$KQ`nj*mSZ zcNqORt{JWPJaKRGT7`PDd2-YwsaEk5E*Ixx7V=WzDRY;e16@VVr}LeXvD=H!x$iQ| zTp3hy#+0&HXV=B&+5+9-HI19>l~%b5vZS%PFmKgHtJJkca;4h5Os!OY{ztx-KR)gd z&yRgOHI+I3DVlF-O|r?Z?nBj8G}(YG&3PB=a(4r1bLfk~Io~*G+DtJMqj+xT1Z_ShfoknWmbrlUuxa1&M_ahPc0c&|U zoKM63TdD5rub_Wse(oARCnex8bvRTCh=ZG&+;p$1)jb_ zbN}@vZDs5dlx1wvjFtRGgF6A#0oT@Ep6(4o9tmU*lrOxBJFmWsgRcm77l7CBjZHNU zS%sh_1icVo9kNLwqZ~BEu(t&C0^l=-IpMEa%IRz}@ESlKQO)by_)lnN0J+7m?+E$> zfN{V-U>MG4z$jpyf?lW#pza5(17-o^fMci)0Q*ow0G@#>0Q0~Pz$?HHz%9Tfz#qT` zz%4U(0pJjLfOB>;H!76w=wcY@HxZNTO8AWPffWYjM3ud`A6TB?{K}Fl>8#9=UmX~D>b1BVO7b| z|L)1S9bTx|w#x0BJ(r3+<4A>j3eQG1RPeVH7Akh8aj6$Qf6EBDb*5Y2)fUEIHH+gjN>95h5-_&9y5k+4kx&k%W2~e`1JemyLvTia^-TA%B9(!QgcsUxKc9| zTAr+VSu~*eQ*$^&GqiT&LCs69vf@8KUty=QXGFVl zg~35jT1&zg=&(btqo#atF#64mKE%GniVy1cap_6x(IS(59i5$B^hmbWrpL4o*qV6; zS(yYHcEe@FE?WZ(^-KGmd+gX z7clb85%-Dvx^qy%`q`!VlGl~vnyIO=sb11fE7&#tzo_!$n$jeNGZF_;Q>G?2aN_TS}&N1F+W&@`@pk z2xbG2K>~LG@ESq>0A!Xz79n^Cno&+UocS;(gbXqptRD3;m3XA4D za0p-?c!Ppo-~-?dz&UUPa0%20z!5VX0{jE~l1?<`WW{UTkfAv9=QP%}rx&;}CmK7` z{Sue9e}}yJi(a$l#ZgR*P7TIyORU=?$;qMnRp;HSNLasDn9bfen>CIz&p))zaye3Y zbnigbfr9Ac$A3Jw{U~bh#)K|@V0SGbJwtNHGhzLCt;j<~-MV&S`^p_Pc<`xBlA~!J zM}>o=7>7dZ$y?aBS&5{qh5CZoCVE0+p_a50h3o0`_4q%^@i5d<<+N(X951k6cHW!N zbbLA7$$uq(CO5xSE-zJ=zRHw;(O`ilfd-a5n}%<7eneA(<;g-!y5zn%OR&fT(@zi> zhnpNSFOzpwp#F7*Tysz@k>Bggkl!u6ClR#^)63;~4d};Firzf*NuiLw3>fG0P>v27 zVoq_8Hu1W+Sc-Co4D2nJEnFqe7T4Eo)SJ6eV0Eryfvt(PHYvKO+SY3S8tctA_GM#r zHx~;SI{J%@8H+G29_4uvNc@v)}sRAz&m3iB++Jow7 z=g{2*QqOL(GqRiG>XhIVvq&@N!<7#ab*4khjG{lR_*cDo zTrpMlM@3mPTaNM+Wqo16$m7zhL<7I2`gKBIe%9M~9NLZQPhcfq~|P#f`g!!2VaX z5iyStWJ{=3z6r!&r;5P7?N(y3bR3^3#NBrxUx9jm3l@`!Q#XC2VxxZ$*r!=k{F@%C z;O9kD!MuG`%q2{Tt$(SsC}|?_gPUlSxIyCk_!K%`Jb^!)Yejb-{zTy4#t~S`cSu|K z9Ivu9q(dD5dBvb3hOF|cf`;j=A;=;HpCR1$ZBhOh)coKr2CV>O5JtK*PU{AN17LRv z>@$N50>~YK9^o11x@kWF>??pBMldG;UlC}BV7K9aobxbIX*+379ESOq#-MzupNZ}2)UsL|KZ6G#&59wWNN*i#}lOqr7bAGT$s^# zwX926x{igGsCkFXvWgB44s{IjUP4Bp#M^W{mgFR~lKOUalSm%=$f~c8Bu*eeA|2}L z(rEr3oz#p>Y94frbeS#CmY2#eR;*T}$~USDvmChlxm>&O6;Z6?_Aj|SR$Hk?bNMH^ z{8UNq)wwIx_nC2_lietn#3v*!W|T9*REJeI7HMk6&%}P%SX=!mCrf`Zv5-u{1QL>- zf!0D&gHWz}WuCF9G?X>+U)fVNE6CQ;)}Cz}67y%(!v&LnYtsdk+o0nCPQBzCfUc26E|Ll)Xv(gOsq_-iXB#zQTq7#x6%iu zgep~otjsrC)f&j62hR_l6%_na5Ixv6*x8fG+*Qr=Xd1|#-M!Su!@K(eulKS;*VKN; zV|?X1KAvhoqdY&_5}3iIWldeD6`n)7LXS+s;#vjj5qw9d>^x2s{;z~4c(;Wrh;AdO zAvg{DxSguM2xSf9CD0QP|gfExhsGj+iKzaId6 z0W}8H5Wqj7u?&vl{Mo!i+tT-hF`Q2+A`T|)&pe!TN*^L9qwl6d1TzOnf+{vR!hYnrd9qIgQqQm-nM$_)8HB<7nBO0Y< zN210 zlu71zF&{71D<pWz*3H_OaU$IHvx$Z4Hd zyOg9SA=(opmpUzcBwJHCn*9f=1zsi zGXqXDnMId3mX#GNsui`X6(#l!#bH0T(=gLdRQ>sKBC<_G8%#M%VE>#}z7bXsm?VTw zsd1oTD=hI>zszf~_@|df$v;4&zaGD7h6VQSzOZPY8Y zr5D~%5R|H~3GB=`js+jXanCt4i^x`5;HxkK3#-{&SVg5hw7X7&djWWkA&=}}yL?(l z2$+W*r!Xr3uOZY3kWXx2TQj}a0JKEVE9i5nnf4ffwitGsKt3UOkDylwSw)aT0=o@i zuNmZ(LM{Q!4`B~7XbE7S5nvY1X}~W9y?}2xs{yZ23jodmvw(l#2f!}y1=JCMd*Bhk zJk%1v88dwYxEIXy7Jxs13jqJX8Sp@T0Q@5N3p(Hy6&fFY^7=?*f}h{%*yM|05$Vdp z-O_8am}BC5w7Akkr`s=|$ZGnP%a`meDZ74v<8j{KEqZ%uX!)ho)H12S;>%lp+^$3x zKYkA@+$p{$-o@_x?&bb6S<>OCqhk!tsjwpfZsu3g)10zS1tr|ebj+^Q_tl+(4a(>`)|Kf8zS<1C_6>U#H4n0Hext&8-#{(I$l7xq zg_5fRlKX|Z7cCM(CE_%FN#RD4P%0H8*AenK2}JtnKR8}I*@LHT+>Q>}Q_iWWg7_-&#iw`bwE{dPThl58wY z+m<8ATby4Y6#gSeS?S#=ck}u3#^U?i%jBPgeV^3YnTEE~;2k^Aj>oQ!j`XUm zT;v^Sp;C=XXyw@p==x9Pw9+d=;$!by8Wv{ifQKw3Fwp|4yU}U_zZQu06z1W=e_zwG zCesP`v022~1RXk6brm1X`kwZtuYwq~K)X^g#7XTS@v0~s{NkVynPPp4}H)HeVRGTaqlzX|LxfQ&NOgAN!5oWj`; zSO=^Eo&l$TUEl}c0}6Tp^MGUE4Zu5a0dN9vz)Z~m`~h4t!vVl4z%?^`0z3kI0z3iF zg_GD8fq%}`O0THvM50h~@W7wp2MTVaWjDn0GRs%gC^E}a4hpvm?bFzCkx_ByqN+1f z4|~;K%=0R)qwlQP$t?EXmdB0?&HMFHbtq%reIrTm>3GSn;__|sj1!kH?Yek`85#Ji zof!Qe?V>Um!GUF2XM)Z<#T*Zf+nGN$vq7$QtX7uSq0qpcj!d(y+EgtH#<0Si+)t`xDld}M zzu*7lS<(ZBSm;;vr$krs@T5qT+%FYm8>}xP@61Xe)y~r<$#+^?$xYB=wAE(lJgz_v zdXptCI}I56SfnGi%1{eit~GTfBUV(>KEzg}R+iON_$fYKeD=?)YiLxV>1!UopLh96 z#@}tXf7;eDVvgVXs<#^Hi`EE*B64ZtT)jc#!{bvP|R zOAdB)F&H`whLehr^>)g7R6Q!y)T4fx%CZ1$a#kv86iQ{SSfWsYJW8_66rY&CL3O-@#5f;5`O+<#Il)Qt@l_2ZSuX&|rLY(+6G zGH;d_u2K#bsVlvZdMbFwR#!(a4;@B`ezLC~*<+dhFTK**4TkwBC^~+{W^UaNG>h}L zHV1?D@BcW-=Y2+`p?NW+VY{NjYg3fIkB1S-$LL5j$-}^UgJLaD8ERjtFdHBLFIMSb zUG~4yl_X)BG$}DborBq4!mSqQ^z~14FdPwr2#@XgduPT*3$6WfS?`+VsLpD`;5F zI-Gj_0Lm&(A>O!NCbA5MX?X5>f;uvc7oHargBmr;C$b=n=ObOww>xmb%XNfc!AUCR zRz87cuBQqxG{5gYO?&v_5C`X3m|I*YJb>m z3LZnqDut|K*n12*!v2T~9DGHv+YI^zkWU1jW5^+cej#L+!=59U7eZbk>^z741)v=O zJrV3U1RMiy0h@qTsQ=-d2aE&W0mr}-zyZJsz!5X|2=wv)s|BED01g3u01g1`1CIdi zfnxyoz!AVTz$?Hfz#Rei-}v&wby|czEta z$opJ8v@jUV8Z_X8oBb7oA^+be@Bcnmqn}zBz5n~OEg2)NcZ-bLZH9{5{%x&r_=)zo zHOa`xL4x_#b{Cv>*k~$mwfWJt?daHiM=vK#+rPSPt;S14ZHn{KHq6*aYsdASt!6JP z9lGON+6HzPIGnF!Ih=3r+3t6Ij{}zB(f0CE&z<_WPukd*%N@31FSmW5raA0=ZQTB$ z^zZHA{9*^QK#9ZrHzf|Dx$&*iG3~Y|A4F}p72h15^)g-Pul`E3rDOzyPq(Xnv&^y7X9d|Hiz%hlwzAB=4s((YYqyL1=d`bSElgLXnm zE3T)ljlC<=fm$zY>pt;gn-L|oEyupDwfpW_hd)->M1MD7`xv-{!UzWMu4kd2*7dFL~TbXK@di#yEo?x&SzZ?rHAw5O3OUm8F>k*x!obhGDG$p%RifVS|mDl zx+E$62s_u?KW$M{kyGi$p4NjV7aH@d2|FaK-AkH29&R?v3;KD!_(ER)zv8))8sGIc zHYPUg7!J$U)YgPRaNtxmC5!l30zDl}&3v(Ovh=XTQ6$d(aZ)HQACjmJ*=2tHO(v6l zZEk*E(_T7xy}z>Z5UFplV>r93cZ_yOIV#Ki_D$B%*j_2CZ)hddT+hl<+le-CdQLo! zn7`OlW!OpP(!CnZ3!@-xPmYR}OjX|Km<&&822 zm`zP4%LxXn=M!Rxgm_}zF(Sk03?nmVWbEJT^Y8RZr8yeTB#X_7iI3xOlWaL`P8RpC zGngaHUgi((!7sI#yqINcIcsg)WB0Lw+0HJ(ERAwl{ny{h&m&QPj}N|iug=mYX$O=? zuYJV)ox$>&o3+nv(-tO$af#I%MCo9VTrQh`yAtoe)$!l!91S9isbQH;1hH8&>R{(2 z2Y)7;>l0aykced@`C(f!Dc_&WBe@`NtU3@<=uxu#u{HAOmJ_m&s^|3KTOu+nU+q+O zGmrdeVJyN3UWa_Cs79Ku{o=$hi$P9YtW;p;8w1i80)n}_8yT5%6X8kH<)4HBC3t{mSEZcv=TiC+;Az0Lv5e@g{R|0ILBn+UKf zv$!Fhm2}nXX`gtuxR;ef$F&E6`Yo#$q%K z(ZHcGAB|OL7@=W+hBg|;Xe>oT7mWpIEI|W{2DJN6XlS7^7Y%(h7NM~mjX7w{L*qv@ zentc4fR$)0LxbzK_a?t;YhJD6p?14OcACU3lE+SruPXF8XdTXrJFxp+L*9w%;s9pM znTF5{hfOWn;g`+^Wwl1;#U46Qlu|5Rmb=DN22rdgN&Vx0QLhIJeBBC7H=S*x=NbdZCr2j_kSnh81ZM z896@e92st2UTM9t#$HxGYHf1Syc~aTIGh#8WW`3Zyjd((2Wx6@=s(H8=+MlatJl7% zM+A&cm*A-PtQgk4`!+$;`&^e$W<>FuO+KcV8WaM)R2k3p<8Zv`aopA1w;V1f-sgGl z&{X_{zt!jXYhN3T3;7vFe34tSNFb`t5M=QA;yNpX6@rY6CnfpD#@tNnpOsy%{BHHt zG^BT|cbB@WZYp0!&@_uzPe}+eN&Cs}(W|55z5T!TsMYUk@4d@J_^eGXV;v+~I1>}t z@rIGuC}}<@E)@n6T2_&*zy=}PTX>jbn!sG_~diD=Az~m*Grm91pE$CS5}r1 z$LI62_+9+Z&IrP$IO{NDDS?4h=SV?DTC=#hN+Qk>8)ui4NVITxoSqp5SEY^NY2%7h zQXk$^=H7GdA5$tjdOQ9aE5u?~Hwis{!Wyp;JrOR+t!R@OJtIYIbxo&k%WtT4|t#c2Bgb0#UqN2VpAOUE@{yx1u1lg z;?QfIyEuiUQpbiIV(t7>531bcNJwG*8nDepBz)t1bF8!$uWQbBggdC0@F+Dz~dluux6z- z*l%D8WSgx(x2qL+;$RP+9oz=iYHtC}d~2|)h5())-U6QN-UcX3ZNL`6Ht@pkf85Xf zLjpBt5zsP5293uZK;$h1?B44Ho?aq>HSOEMCO>~As%Tj~VXK6L{YnFugX-wA#z zcLR`9=mE$m^Z;ZWG7TAqyh83F=a65>HuMDK8hQbG06vg^=m^L^bO>Y~`UScLx&(&? zMItB6%{Q(`5Bi)&LGF%vGn0eAIBY-1dJUSC2i9#wJg3FJdtxV4;I)Ai?U2v*O z;ozTobYI}HQ%UU1?fjEfZuv(;Pw=j#J8&+S6(WkO{KA{L+#`asQ9TiY^EJ1oGmo51 zO1R;B;`Yu{Pi2KQDJM?*NBbPgIvRS8;gD636qiz(cd(%8ax;_p zCKUuu9lqYAVq+^mg{GuUGB7puyg71=>o}@&iNZRt z@a->Nf4vpls4td?GmRx83BNg6Ty4%`v01^NBAJn!P46?A=2uih*Hi;T17`5)}Di}U^4JoxufOj9cn>2->k`;AH?=X zf5X6FPGBG>iOr51dOxvuZ01?*eT}9)LH%r6;NCemT7C4@ihC_15icbNdj(geSyCxq zrhZYIdbMh#t+{o|QGCI+Mj|V%Zf_AE$|Ykm=)$LcIikUgh4~%5JXO{oSv^Y8*kG5k zE9(y>g-`2nrqL)=3N4UIrO}e}e>LKf`GR>QvAeD|_2)(RkMz=-!b3uSADesDiz;1$ zFKel}VP-9@7no;e7SFx`ybcTx!_&i|(f=tn>_02RDCVo!@HpyU!E2=U_JkHY!jwr% z!)X(1y+9U=LJD+tMn3|BScFg)<5uXCCgpxU>=n3c* z=o;t|=n&|G?|y*Z$PuJ>tr8|)iawlM6<_~LhwubH#>GU)Utd;8{cGxYe5B9KHg0Ns zL*1qHpUBZit1CzoulPHU3gZ3y_FDTr%s$s$7ARyFZgNV? z4l3VMlN!GEQVLB@NOV8hP}EdVl^K_^o8_44)7VoK#n{738201%=Q)+FOla-WexrR_ zCvel;U0DcgjTs{1cV}e$`+oG^=*VboPR$?b4&6b@wSQ7BoS}3qR6nrAkJ?L_+T~JH zX?ZB#Tv}!56>Iimei~c&x`Z(}C*?}dV7Nx5RI7%@x@a2J*}s0xFK(3#o&PPPxV>4@ ztP&Fl+9volxH%?Euox?Ctd;Beu6s)53mRiY-r=fL($0LE>)QLa>T)0>^zMRlse1dZ zu*Oza-ga9JmK%E5SrL0{-uGO8JKELzHs_8qr=>~>k)=`4$F&1~EIS+?d4DFzW#*rC zEKSneH-<|;s(gp&ef0AxzY;%j2~F7}R(Xt_9~|sab}9QGSS>L$%1y4W5Q?<0Ay|Fm zGiX}p>0#z)X;V@=^!S+ml?5vWoh8})!c?(dheU4FCGhOzfC+k%pT_Ew4Jow&V5ENK&0OM>WrUJ3qeE+>x7@#fMw+8Y-OGDny3bOdMnF5?ISCAdikW6pUcU)KmLPY@}86Amwd@)q(TI( z6%dS=M{@7CM=)i6WCkA~Bo8)VMEfIUb;W?uu0qchn-rL~6-cgq7Q&BT41Ul48LUzn zgSs<6fe@|o4mI5w>k%2gi1WE-?v*(0wI#f_}z!gBg zA|@ZA;A1<(VKap(x>0m%P%-k~3$XP^hZ*Bj`M zvu=PM;4-RjU(BRXF7*^U=cb*=I0A0&f9MuNo9o}s4b5puJ(JGOI8v~*wCMQSTirXe z-gfLdwI}bI(8aST47|~Z9>6ybU#Z(1KV)(ha!mghzHdEtQWZpS* zAgK`~h(wOP|FWpu>f&=YR@rXnFU8c`pXP|UEYG(RCp+Vm)(*<>&u$&c@Q&AbxocJg z$$S51Zw?{m_7Jg-*bv`1C0=1ICgkQ4gjg#hf-%;>+tgfZ?8cfcr}qD`_~qKP)k3=Q z`Q*9@^yu9$HWtpy4`lq#iHM8i&^cTJhZ^HO&|Q_Sdf3HRzEG(KvIkW%A|L?j7yzWy|r}Pv7EaAXX8D+YB3=eljq&61Gn@ zOT_KMzEx;Jj1@{s=!QRdkk=S2HP&qw8?Kt;;ZdkO-$xZ1t{@M3&=;*r6DJ1gVCEUD zx7=??ejDR$WX17F-e+YHu#aGCWne&L30Q-#vfj)yHyDI(io3#Bn&mY!3QNayZyEa<{0QUS7nC|#aT`xktj6M_}Kd~C0p4) zzUR$_k=~sIVtvEM7#l(iffz&hNZ|BzQeHCMXuTbgI*2nnxJPPV(L$8UHbzMsTRxWC zR~X;6JL3PPIM?UG#Vv%w;)9-%<%$mu8x=|dACVI?$&4;JAf@M!N6Li?-Z>|Q=azir zW%VKjMpj9}1g@21yqX>5=Q_!lrCX5xf6pWO?GA|hxF_=RWf+2K{gZ?fm6IRQLXZz2 z6LI|n6d30y(j(>tL@vk%O~iCW9{yDEXbx6Eq8gELK|BEa1K3_8FhpAoU~OndGpj)6DaA?4~0Qv!X2D$>e z;nc3C1C_)p1$$1M|E)0B_HxRf=_S8NPd>^xo5FWaXI|%>ORUSJTWudalpS(1atBK! z46V?rVLD&tFiuYVQj>Env*5HJIk9Npsnl@)6BiT2y(!0b+V3koSV+oaAFjwf6@Br` z((u&k`ZH%PuN1k(MWyAXTDkd(<*X}r3U=^4%zmkII`d~iE4`#c^+@%?Q$>$ZaSp9~ zI_SK|`6!ig2(61Lfco@M7GF71JEE-W=o(kPsp?9dk7or~tT$0J@p!y6bp5Fmftiu@ zHnWR!ar4A{?FxN@2VWF9jQ?Z z1l_gQq@xHErxSi!dNiwhe%TU1ul6`+CYr)yu7C)~*SYE@75i5KYf)sc)5y%BIjprK}ZgS5C2xZE>P(?{Eu~O{oINQiBK>9LxohdCedo?Gja`Eq>?j%Qj(XE8 zyFdJ2!r+(bt_-nk-2VZ1IMkI>8rJ$er>nO&YB7KC>)A1tL@ZYQV70+`&YULkR;-nz zy3Tq{@3)yZ<6~o*sNpg7O!(WemN4}TsrRzk4X2w5LPK z*mP#3H?>2jYm|cN7@La`jF0>`($zgstNxOs?oz55Ua6EHgRPht(6fB%nEv(rx(q+PtLR!_}b+xrdum#b&S|5Nu;D5yPB5tE0yb6R4YCtZiYQWMOpU}g`5_mz-WR={pliv zLA647*_LRnu#d#3k%L_QKadkXXVHFPvK$u?g!t6nM@YPo-M#!#}?pzC4)2l)Y+aPak=9x z{}oMSaO@uk@KQqp7abjEdjefVDws*5g8aEV!DiqN_O03v4xZQx%vSjV$UWp5=4{A2 zbOCe#bOB@>vJKgVPJnDft|7-bG$7}YW%xjkz}f-&0rC#r0-XUJ0R8dZ6|k;=4uF1v z&R|~&k2#Zl@&c1_we(8y?eOf7Y`ZwdrA;|0*11i|wVC1N$;XrI!YHAIcPdMRzQx66 zc-H4C(_=3Lx@DZabQsAl-c=RG-RYBjB_JfWCYJvxU{7X5TF5zWaixa^o8sq9kBADo z%zc>j_*#4<|H=OLwqupNq{0J^#py-Cc_*`-Om8~vyx!Pq((ZWiT4s4uo?VMs%HwAH zr58qPhpVKx(DQ+(L-06L->fblC9UJV@`3U}4^64m!eX)d9v+q$EZtaVnY&@1v7g_N zt>M^nd|q#| zC(1F+cai6SCsnsVm+rwVuT}pw|5apdy@f@&R3^1rvSOZC`}C4x!f6857>j4Ijz_&4 z=CF>lSup_t!NW4grdvefKMgV>!JwI7N0gdZN=LQJD{&j~rY5GZn3Ijyi81Z%!8L7D zHA(F=l8*-~>{r;=#B6Ah)nIR1+qD~2n(^$3X6EJmBR@A+S8>qpDV4=CF%33lnXou4 z#jj<0+B0iMYHLicj(--68(L)=i$%FuL&L%it>VI!vhfyK`*fQ|hW0l!GgCtkFO+K3 z?;lRTkZIgH+k(DG%gu1+SyKK>LDfiAl|Wj6<%vX+oke8$XkQu()6qthRB-|;?UEYE&GU>-cvX3B7 z!RSU5k6wl;9{t%2dw~dv`WRq3myQ74SUzRsv>X9xxhGOQkHaIvfrt^ z#ES{fB7?8xC#5ByX>3{M&N<6FaZ}9Pp0MTonSGW-Va3*tiVWNQi)Rmh$e`FP7OyD_+Gvx-eS!@^TWbiId zP!KvHs1C%9gjKsT?=#Ikbwfh6Z_-b(j|pYx>>eziE8FA@)kGNcdgbg$|a>t$y0PxJfvJ>QIsv*x*8 z(0h=1q3gn4WobsYw0x!v$Ei?{O3Qv8epfXWLo}SZKBKvP-G0WrffMxgT85x1`TC8v z>MCi;^_rG(H9I@!Y=3WW@5sH%;d`BgLk!MVgMedOx3awr(4&aqr~Q6U{rn%&`#jSI z>E08g>%UdjR)&tM)tfCsM=HPZ?91fQ=UfoX(UpkNy6s5xubv3+YcII@;u)g6K^ zh8lSp`<{FP%R|umfc)sr41)RK=U}$10f~P0Cqi1BN0uM$1U%t$IqDCm4{Z(#kepm}?GEHaa2^G@+)dyR6zW@UpYal%T3&_C|a@ucn@v|11$(Rkl+Rer#%3Q;{VqRfG&Vu zfILG+A|bP41hx&pcbdII_Y`UAS6 zAS9?fm>6L?_4) z*PM&u6B5zU&=SEh7CLLF&Ad_TU|W4Qd{?2XSL>R_DlWqrz$`9}C$QHBZDaF^xJKfLq`eRZ6L-*B_>OYQ7jlUhANz!mN_xl%;oO!yQh7>n%JEgO`IAfJDn)ievELKc5ek>Nv zD>F(?7HMf=x`m>Z8Aj;wnd0)lP{Olxx%r#5uR}&RnP--bnulr!Vkl>}XdyaIc%9Rc zyN+VI*rBYA>zSr3=CEl1K8R(Xv$%hkd@RuP#e=j<3-xfc#tjB_rwOGpNy|^ogt~?X z@k3QpO<{ARgfD#1EE=f8hem0eqb<@(mW4D_+ms28q)~L_BntHhUmcoG$XbuB9v;h= zd&e328hX=Jejfa)>MDM6b%t3AIuy;2@}GL5hZ4#<3MB|_anPJQ#>Q&9x<}P*!``)FW{l*g9=iS8}TdufKeUFSef8X)Zjwr>;%wLdPEsO$Jc8-i$^$6g$Y*66F z&jZr4dB8Gs2O>Y>54vvDAn5r3yrj1R#*c-d>kp{{W6mX^+$-e9y$U^>0)=ISH^LJv zA!DlS$nt_$Po0#fLdqq+kCxg&b3alz6QHcRt~O{_<7eQ{(E{9^qrb2JoWH z44k&u2!6;V0Nb}4z-QiOa9n5e>@3lu`4GZHBD+5vRq>;ar39E;dK+aG{C1cb}~>k~ruAJi$I%4V2bC1o2QWKRE_(ZL73fY;O3|*n?$_b&SpA>{Jy!c zyfj}Nl=;vtC%v!g^jR<2t?H1J=e2Kq4)3@3EsXRGOk`d2VMbkRqNQ#t5k~uqL!X?G zl)L4`Ui9yDz8#(td(_$af)mr3->MuMRH;-wFO(gk0acf(hZPygibR(R)RDbI!;x?H z)Tr@N^=NIaT2NC3dv|DhiHq~(26?gRoQbIAbX#n+w=H3Ll2x3o?fQmBE(5QFAyGV8 zBoY;aqaZA4nVGcQq)Z?*7tBwQN|XDgT~%l;p~oO6ORp-bvvF^sVF0nOb232qpyk{cOVeW%x?7xf>(rtIh2h+T}c^=|HX+ zJ*FFrON7P}iC8GMJhQKJ<<+I)E^+}D=oJ3gz=gG(P z?4mlmcv7fKtUTt>SDY7O#a7;08Otg^HrzHB;Iw5e6%BLj4XSTsG-HgG@N+YSycKii zBg6wSv>ceCzo{qOq_pucYKL zRw#VT_Z6=&R#2&vQC)|67IygU4RRZ%JW%P){PPGTrWsERMSR`s<&1ODLC^hj=j?lm zJaP^+yr)(VE@-K$k~WnIYMQfhq!s1TDyfB3T3a*Uyu4icap$$y4rfK;*! zf?2!}?ei@|NL$B&ywO-;8SkRt-F;2MoJ;`d{s4lW7ZBc$<0SbLgp47euY)+3EU(zC z(BH&X;8;Znk8uVt(k_G2}#p>LkA5c{~+H23tnywCc@KBta)oO`!snKc1xWx2-EYMK5T z18j`esY~j}@zMFOYAtFie2q&?z1eOIC>++KE_WyA{GZu|(M0bN)e3cFBvu_q?%@ z_qu9?g|`SCRkJX=!)sZ3IS4Bff2lH+#j3)aS`5F^!MpP^vok*U3?`o+=;A-%Kj8X% z2Wf^T-_B^z;_6}CWM@wwO?jxtkJ_i~KSWdYwX$QlLF&CR?UA2mW_-JcafcTpykFnQ zdFNadm`Fzjra4*eQ_`fs_~HQCH$=)_XCu7rYI2v$O(a?igFLEUgkUb&gBy>n6+Ce` zsQO8a@Yu@`J#iXxWA$9*B}0t7>GF zAR=)p;%;D%2=5vK+pzzg4M4dGnD}=icu@GixgqQusy>;4_xr4X+x_*kH3FO+?0B$w zcGnPkq5YIS&|PE!_);sd;yD8NVoTs3x)o4=um)Lw*n+PXwxG+54EFrxFxx|bdqw%F z6hM68IJ-jtIfpLz|L1X-h0(1d%17sa?4_yEmhYo>W zfqsB)fZl*^fR2Dpfi8gls0^jWunUSa!gC^c8KL5}PXdxmwF zUydCY9Hj9!jeUK59j{8B`ygYVFgy2*NbEQN_LRfO;VfaGkFI;jJJIB8&VAprs9@kVkRdK9Q5A~Miw6cWN_+|} zdiE$s{y=w#U!*0+-hVh|itZ@|-wyiWo{L2cixsmcvNw$NV8j~J>88k z^A;ItQ*P8rE4SQ13_Qf$~W_tP=J8Jvm_g~`PPx^cK|HGAtC9RTX zP00m`Nc^RwTFj5=So9;dN16ImR~Sg?B;l9f>$SDbwXH*NCZCBWxU~!lO^?@^;o2eZ zPt6f&>(23}d(b^8o+P@br!Iw#;IuJ0OqO;kQpRwet7AH{r~%ghKt4~8TvdM#dC5&D z^R`=%qo0~77{C1nP^QuT-v+t+9MloTJb5%B5%oZ|0;ewqmfKws`9n`K11};o(j$>F zpax$yUr`uEry*#c5Wz@}BbdZOfaZQOIwu73LtL`und6AQ&JCnX`-*}T5v15%wSKn# zfB$6@u>R2sd=+j6rE9kVmsQ)rc%{uO(`nr{AmPpaUS^ zknQg*!@P|{1Ns2g0MG@Hb?64jHGIDF3>k+mfy_hpVQm5VhRj2EKunc< zpm(5W!V(3oH_LPPGP<*~+er6$hp!jJCgcUyFozbOT=g$A)++Z}WxmH*USi&>6Qvm* z2aavuWkrNAx49zV+dT zNcCa|QJiR>A2rb0Ej-C|E5&0sJ&rT%-264#)$L?)p3|94tk&+7O1Xgaw$=AhDQ`T{;TwrUM@RP_N3P}O zl-+GM%@yrPExcjH-x++S5*JZne}$NGG{sb5o?265FKLiANZX0l=CT@mjks9cQY@`$ zl8K2;{F-ml_bGy|tllnBaTiT6lF^*)9&m5rZ5G|{1Xq`~a_@m8qou-qMndsn+L;GW zg~CoftCF_*DE11*I!=rMA;xw&cXGmCGwILyJT)}=ALsT^y{u-mT_&xmscC3$leJ7W z@%g;6+?2I??=aex6*#+4iYFz|lTBgjI0pt&SX4KvpC8rF6a9~&`q8PLJ|DRg2a{&n zKXYF^ZA=16I!XKVB6x+yj-QH~I!1Vl&iXhUcISVb z&>2n9%*=~nP0W<$GiP#Alc+(Li8x+d?&sl2Fw>|$t$wcI%tSsM_tR)<%BA>?Qe63( z8mYEaS|L5o3EQfLyK{WH%xbn*P?WS8d<@wJlBVpy-(g$8X}Rre?r&Oc3;fIN zfb%{3*}fp$8-jj-^Mw9$jzHr}1#cN1pkqG`^n30Es!db?S%lof91U58%tDUg1Nnwr zf3Ni+$Iuy&cjyI}|8Z!1_XXq|dgXhc0D1$~2G9xL`w!3!&;{T74c0YB^S58ZRt1vd z@5KfcB)b28IEx*0L;qA2$1IOlYA0N3BO_E}&| zq7w-*SAO*s(6Wx7;};bc;13o%&1^l{x`Cfr{tyEy~DJl!^*(7y-QVH?gO_j$I33G9gdyu5!FcfHC3{fW`SBNEyuO{ z(vOw=Q~GS6)UU7aIGx^C{QM(*wNfX z*`uToYxuaY(72C2`IZwl=YSQ<C2clcJY4$gM)iC@5W!W zO}*>+Z@OAmCdE~zSeMtBOYs6h8P8MM@pJ>FBfN*M>yslA|KWJgDW5~Y+x%poX^GYe^~=`uU*%uB-YJ#t{Y7*A3V+|!T&I6YDXvx* z-1&SRowVvN`jz*{+rpMA^p7n^7{7Wdp8h33FoEWv>-Q1_ljH|@Z}a77pMZ?1-a+DR z4nT09OUdZn0|ZkWLdI;IH^)2YghPA8~^2)c7j#)O&4G0)bJ-5p&J z-nlq3x=$pR12x(5?lPyc%Ks3|`E(K~dkwNC_~+R@Lf9*Wvw|eD2>|4^0L~K=8chM6 zgU$!gK7r%*E#Q}z8vt|wyn7%zXfwM@a1q@rE=JJ3!vD4a>5q0``|tJu?i|B&LBGlx zq|dbnf0UwsAKfQ{^}=4l4FGwCe8U_Kb3gO~WEVOBat+-8od8*e zc^}pS&<)Tb&<8j)Ap4N*@AW>cBcK>9y_r+=lV|WpGrM|kLcZDl_ze`ZNKQ0Gc0XgL;rcX$NsfjSR7mTegD*R>I~y1gFPF6JND}54d(O> zrgP@#ndI4Q(|W~RroC-m0IMalMl3~_^(758GHFB0#fPf)A&q)w=0WzuSIXwrukWO< znB!7*JNJ5fzO?4oU$t2{mJ`A>HP;C=T}v`$ipBk{t7XQm;)cTK&CS)4_+_7C(D9bP z)lyqOLvQS#gqAfG_%(Vava$x-Q`#E|%J-^4Kh;3ri$f}L58BaGO+V|Ko>uuiRjKGh zPq}`p>q?#tgZ=aRh=b+nLb7-OB#M0Bb)uQ~O7DPOt3!$U|jQ*6U$y zeeER}?Xo2}oXkXP4Mu;tor!7DzL>Q~Oqo{4h`JumR96=Y&6S3h4NZgShAx3)=yL9m z6>(|)iI|f<9{WWl{d``RUPfw`NGuX9Gbnk zziOhMkI!huH423xD~Z|*jKqaDtBjT6F=ZF6N7>W$K-q&nw#4=98lpWh;9X4HXF{Wf z!qPS3`uPFdAm%^v;m4ESoS?Vk-07LVxM}}s)RNxlej-|&O!#x+;wC3!{5g@&*p&ac z!Er$!Tqe2qSbeGiv4PmQP~7LC8hGeY5;r+Dtx242Z#?KX@o?{TO^W%AT>|qeDIdKA zR_2W7dG2|pK<9+yvfb?fy=$m=x$_e_`oSK=-Q7%qX&ol>u7v<}XBeRSg9;44S1#{w zBkRQLI_dxP4dIplEq`S7NWpvP2^h_D5ez0oj`_<$PCA)D&b{J{n3XPdYIAI6tWK4g^a`84?O`n#-RauhkQd9KxaT# zK)#_npcf$j&>PS%&FA&{o|YvcYqatCR2KDGNr&j zqau;jA9J5^JvOs0$XjsjNg$6JmA9|3uI6lP?-(njZ04L#{2i|waWi3L5$j|^{>9Q= zgQ>Uo3Nl@J1*a|~b|m<0E{#W5Z&K-Y!V7n+4`K4s-*jH@yVsNz(HeX`xGwyZeo_3Z zlBOfR>#sPy_D^V4q8EFWYKl@B5l*3vC_9`38K!vCS{7oev$h=1WHuzdnu>9FRa9>s zPl&f=5&f=~?YY_~|MvAx>gYp%SG7JRO$U1@W8P9N9vvgc>M(s?Ip6ovq4fAopo#XA z*;9{2gVh6mMx->Kr+$9v{foSVs8sq=>cm`6cj~^A|Gp+*DZTE8=$jnnFl&$No8Cp?6bi+3_rl22<b;CUqyV84n z5A{5p9`jN?98M>vY3{E5=6q-G*o-<$OnbOT**mj`U`s$BEP=@7 z7+4t)<8?BYE+m1DRE&|1&O(|i1$}jN;7j<3hrVJsjG6vIUEwqDK9%Px)grpLj_NMf zGss(im3QZUFFG}7nmR`J-`hEaa(B2@KH%|{>Tm$6Mn*$VO6g{L& z%MC&I2LR)7D8fry1~6Tzj=9HPAm}_nQGh{zKLw90&oM(#{>kWWp#r^ktiTkZv&78X zr0BF<1l=h@;JpGkGhDzl1rsaHX73rnyN63P8^Q0Vt!MX$6_Hl6y+PPR2>E0_TNiZ4 zT7!kpEob)!oYY%EdWAJGUaAwE)cfkXOhkWE_VE(C*PZOA-y2jm-i0Qv!X0y^b; z?STF`>lx@5=o9FMkxX{xg)Fx_H6GNII7wb@h)K%r%1~CkTeT0hMbMvl_(bd(LGq>$ zK{NeQQrh;ki-$6=#anxpdoh{ERwd^q96oq8Swa&R^IF{`p=sp0q{7-mJv7Pe&xJ*DG?NGW^YO#J%6urt3L}Kb~^paGsbZaM@H&HF{g|V}q={MONJMT+$%J z=bFUn z@v*5rGr_F(k|}Pl!@Fs8mGbg? z-NAl(>Q)zJ2Rhw%adzGrGk0SPvF4Szy;Oj&sE}@$kC)c|8Cp9k4XunA$B%@6GcPFI zincGXt@-mxupXkq$0oRACUOGPY=OBo9>3rUwt&F$OUxGKs!ykkV4Jl1k=J|F!5kJK^7j2oKeP5^&Tl9&swUspx8>YU> zh%)pKbl+N5RU>VZq7OO(MxPcbx+kP)O2gen?+YnVh838WDn}l*P+{~-t^&PJsJJou zv%+XapWtAggXI>ev9jhFLQ1x+!wpvHCr&M(03EUS)ihqU!Xn$0hy;9K#Z9KfV04NdjFdPz#T%^ z1Ask2i8=bup}AiYKm&>LJ-|D8H?Y3o0W#0;p4}^k9OKY{K7e&UbO7WWG7Oynd4`-r zA3#sQ{0^Ci4|E4~0dxXnA9@4&0`d*{hu(m0fF6MC!&(D+1bPK}0M-v_C#nA(C<7 zBP(ZLe89fD@#h2?m(CYl6kZ4}cRKnPIxl#2kLes}9vNv-X>P%ce8nF?>s@_ut|&P- zS5(q1K2%b;b>0f^7b@VnJa*vELW3CDl!5JI!??dpUVkLio$P&aH7kdvd?3#{-@lfh zRe)YQ*oemy@Hjli40jxlf7Lyv92*^#UUjbRepRL8Dx60bCS#0+m{q<;x|rk}#_t>U zKd%-Gjq=e=#G<7J%@@QO{G!Z~l8h?@s`LEJAOlX)dUhqpnr&lC3}&-q2$pMDYqSw- ztK}y8IziZ0Z+EXgzoBQH@#rcw-K}qliDdxRN4v@FqBd5Gu+iZ2yY{T&0A3|CrPiUt zIb`9BppCn|sf}yLKOWm->k=4fpSSCejH32Gx8>*>8LX(Z;x_(6r*mz&vdP3r87r~T zPtv5y=rb0hTMCBlUBZEWvG}?8t5|%tz5l`2v62#v#(!u+Gc_?3S#x>(yf4|@8 zhTao>L%(yUC;Cpsw7qWU#*C}Elao`d&7W^^gI#9O>x7)i#Du@N$DJJl0!$+vY=U)I zrp$K%%q8pe^_O6A`dEF;Jbi6<436Xd7l*}}^nT>c;!M!v=pX$bb6qqCRYv~PrTIfI z2Ewh6PsP*_tY!88nzM;(VtSOy&OQ|#z0sxW8ytM9youMLF4ntgis6-aIa};Qa6k29 zTy^GPbdg+bGaZa?2Z68P2PG>$q=YLNKYa%1`GAZI-h=QaI0*0Z9x}!yfK>Ly0>Q0$ zM#fau1N5Gu+`ZHuLBErLjQgCWK=+3b##MVH*GLPw(Y*xWnZ+p3IfBA$(KO<&wF$v3 zc?dAbUOCzeP#9s(DCDP{$&8{}GH?GoGOn-*f%l7GkMPw4Gf;S91AylP<8vEk?;dX* z**Kg3;qHJ2J?~$>Z$5j^@b19>zLQ|_rY!*O58j$ekTc>Bb@kT2ZAz) zv-^W^*BJH!;Jk2X;QuvsF5pn-ZQLJ{blBD;tI75>Ar+eq8_8~F#yHd>V(38RFe7Cg z$CT5IQw_#pLS`HyN(@ct$Sh|5sU&PYWn*iiw#A~cyB$bkc2 ze*X9G{@vg2O_du?qyFI0-SbQUeS>B}o1kmZEa({+09pk$EY$hH2H*v70C)k604@;G z2N(gmh6nTyYyf@$XMhX97GT7}c>|aLwZoqB&5gS`7a2AFSI=hE-J|=;{Ev$E(oHzD zdt39qYYxk>3`}>HwPYMf3i1k1w2@RMct+f54^9X<__#gfoIgM0N%5(+^AR^zwVw5l zCHtRih)p}OBQwG2c3fo7p`84muQgsg+Q|wJO#i*Ta4w{_@f_<|N|YeFxhghfXKYQK zd->aXdv){twu#yrvBY#-Y$6r6PDox!?hN)To|Naeh=v~CZ)j7TbGWaT-swfX>ri-? zs^M$yQgi^nhL$48%wMA~APCCVWZT}9*3~DRS&l65t#fr1Z++tWIn({t?4+a^4x7Q& zRrDY5^YQWX%Xr~OLnFt%uFu~)`6;~o_PY4__`P@VnMzJ(G3Wd^abvL&$>ENfnY^sb ztb!aVPneyVnJGMM-SMpBnP^7YQZe^e$IKtEOvbx+eK2nBV;ZC25%J0(2IFc~Py)-$ zBF=OV$7j2t;r3M~mKFvU*5->W79Fv4aqe;H>~Z6F_Vo0m_sF_l{d>@)=4Q2YW$SoL zR%=(bn43uy)Y_zI359jzJb{+A!4l&d$~F@^QB#9rq)sf&&KwjW&tglK2o3a!G9@8X zK0R~eqmy*(4f8mY{>OHQqZ{;S|0PETBRMHv!DE^>BasR zH(|ujl9)`?j#P0q!f=&UQI_nVeLUIMS<^fHw_oM3OZ^TU5a^4R7aY9XS?P-2+${hngM2sMutf9`6F;o06wFe zuI_Ts^}_of^bafmodX{hdVrv7-~nhG-shlw&@`|Ev|wQ**W!@$10r|y#JOu9{yc&<7#81edXEg zh#@*5Bc(7o;Q*iDlvR8-ftoyCfD>A%ixh5WpcG7RttN_&vF= zoq0Wz-AeHVWXU@o#w2M5j|4a#rw5`bMmke{1NvRtrq0zM)(}^t-`Kw1H$8qmhsj;{ zI{Q*lz?s*R74G-l9Xx2yXujG9ifDbgS#MqlOS{@GcirN*Fblv58nRSxnm$ zh1Xkr;H26*yrs3S$LF!}`>>1q*ZcLmo>usM+U?g%8y#20*mfui5w_;r57I}bH9hulRBCjNh z?*6*uGV`ru(jq%bq@fX(erM0^fV2zbe64@5N}__ipC?B@ zhc1`t29ZC?v$1Wy==0_~O!nt?Iqr%*3Dp8}Zq^OiNBtp6<$v#yy+3QqZ>At$K|N6p z^Tb)J|EGWG5yI>s%m{(c5bgyan+*I%aAyef1XwfUw@p>D1y9!uv**s zToUje7j7ZTkJ|nuPg_BeA98e>uLYn#0Oy3m-LCU}LU_-EMnT^T=YG&H)B&J(&@8Y5 zp8vn*C!&7`&4ZqS37~P{%0iz3SOPTza0M6x%m9u6Q-BS?ijEQuxK2 znMjEyCzcTp<=GecvGJK{4RCl zsa<0colTlye^R~J(INCeC-1meR)~*v;Hqxr=Z@c0VV7E^qo1awe@*R0bJoFhHpe^3 zhY{yJ68z6^=MqC_w$9w0oBI6a=~P6`6?D>WMIYsr_6em#ta#(*=F&H+`ts#TpI`r% z$*{QRjNyH86q4q94YlC3FwL8W)`lFtCi6ov=0W!QdU%~EpVc0E@A1W+KDs)3`2CX9 z>{LE4HFx-&l2<7k;IN`}Jz}E%5$Rf6>JY5;YI(PKb=j3XEnEqY_mG=49r5vokMdsJ zmk8wtHv8VtWZ%G4Xshpw)`{Ljqw+Qtt|bHc5V>Tv{W5pl&!lA>tK+fTn5+=J3ygrr z`+~pT_P~(Botz~79d1VRZ>y#ZQ#B|!)juTEE2OyZT1u%c z7E^E^#3bZLrjUL#lOvy^9MuJs;od-s^93DylwF7+CQyctMWg$Mm$CsuA0@Iy6XSL$ zHlt$8)j~q&nbI6Z6b$W zp)q%xeA)O9@Vg8!c6pbP^?Y_AFyTAho%4AF;5C4|1jrvTa&?%` zCxZE6=n**o>LVv2EyDX5^bVQ^or30}E&x4)wt*9%UC=S`0yGV5fI0!V06hZG^g`bN z>Il$3Z~)i>OaVRsW1waLz5oY+A1Ai?ufAq^qI_S;^}LH0E|(a1T|MZ|64VItZWQkI ztUvfm_rbj6&hXkIv&j6zF}sD4S)@y@B}`gFS-^>-`%A9cC;jJ2hbGU>FY(T$@N>7W znuWJVh0D*B@pI@g11V=hv9jO2Vguqc+Y0l=#ilNo*;T`(75qJoyXy`YRpd2<<0~)Q zcl~&#ZFU-&d#8uc9n=TT&{NfW2J>(*-H(o9vSPg)j|4{ymgSGhcq#XLc%ol~DffBK zIIRtp+G?64HLpqyoVNDR?DKL(1-j20RP>ZT?^X1THQc?=>#uFd(W-s&;IGNDJES@i zWwrXLuH9!+G6=e^emPx!v+rj^*M7-hvI#?i$S4awv8#@>t$@2sE5LvPH(228P3Vq((V{CVdM zrLwf-S*d5~yV?3u(Of&~i&-`uF^FDdZkTLsxXPG#-UjRG?8$ZLeog8*-q+Km>{QlP zO;w4}uhTm9xfKzIMPr3Hu^nhE$2ccfmJjVg=71l+o0Oj6GTf8N=dC!h?28s}4UWe< z+tB4az;o{RQ}7kN{ND1RLD7Kd{&OuY-1+(}Zljrasg{VZrFHD4JA1-%vFUW2UFh*9 zwX0UUt(s)+NPshUK&x<&vI z{U!Q_vLQOiIdGNcg}4zqT}6)=VFsZ;q&RwdW=aaznX84<;thxfad;zx5fkGq1I9$) zHUkr5<1le+mH1h=bZ2Yxl^<_it`++g9x&$}ez+Qk-{3{g*I7*p;>vNGpI`$nw=nmY zZP?%ImS7~~7V@xpCr0{r?d=`58CcgZb67rA3*&~OcQQ>+j`Bw^2ac?XQ^5l3zmX<@Zi#aJUl7sJszJ8-T73i0k^Ir0`^T@xY-PNNZv z%r3=Fyj&+||7AR%O$HeR?SF5auL&Tl^vHj<%8Lt3<=`=d`vEu?pqQQc{1NaMI2^H@ zze9vM0hl3zo!vib;-2)$h1E6=%F6bMy44eRs12=#rz>tL=0`Ozu>;QZK-2+E}3&0Lw2(Y6k z?3!fz-qYK?8z-UAE~vcY zz^QNjCFf37IaP;px0EJR3=PCD?RQBJymU8NvNy>GXqypQDLcP9+aE#u&IKj0v+}U9;~n=Cl!wG*;j7=%hN392^%rE~1xr z{5CW+`&6MAdOxI^EuSS2gd)*%ex{JHbOp*3ElYpi>F1T>+2WT`unjY<~55dFly`R5c zlP&5CpqK%+GVafaX_j~F2WCa??3;US#XUo(hFb5wd69iLW&7%fM}@16qxe)|jlf}m z-_VtrnIp`t<@Nm1mD3Y0BCHef22-*{rTGK$Qqjm>w-0V^%;3?HWV&*MG36oBJ*4BM zVyzQ+((px(^l#pz#jrY}-p@M3=>0?6Za+Q4zG;ophu`kAUa!}r!x<9gWTH$_Q5iD( z2!$fWILZLHD;8&odGJMC`(^gc8-?=4ud@o(?1vYsH>&pv)|4uIN~IWj@#I(b^Fh3z z{E=wgqc!Uu9T*fH!1H)B<8{2y9_2VMt4o|!iz1)n9L-P0*e+oQUA@|2NKM}RgvlM;6Lo;KX>iw;axK|x-CpSgUN27et+B&@D-9n7q7TYs@RFiGQJ^GFX-GR zZJfbKQ(oAK8q?cc%OrI7hw_8N!!TUXcNj6jiGu2WN|)IciY$Ffj%EgKPg)t>md)_x zC@9vhQu}udS9XDf<_EFH=^r42fYP;N9IO292kaxGAG>a5BzO8~G~W|gwDJ3SUm;|V zK`#*Q0^uD`eQ!CRIRtY;Fju_f(hu^Vc391O2f$whbwAu8fS(v<1|XYIGv0Py|Bycd zxuh^Z2>Ha2LEy62MSi)@MeghQ|IP)VabN)G6yDtn^*hx2MDzjegWf^Epl9F#=p1+e z+yI>eFMtcc6yOKE|A8&Q1mFZbzyRP5Fa$Udk@(AxrANZD^bJ&2-1C&7 zXHE?PN&8pO;u($+A`Vl*5&UlJ7hq_;D=sqTP_U>vW+*HtD$)CRkcU%h#EFYmXT-@r z2eoz{PEY#nWfGJ#9ilgZANowPl}Zm+$%?z{<3R87;Tr&OG&4-8eGa!NgGGmop4n#wb&LO1jV zM4AUxm*&lKVA0sYH1u#()9ep(oPTes-b&eQ6-w-~o|&7ONgj=vYCppMtir)=!!f@DO8%sJx4IO-?xA9?%sF5J$f|h`zO`$xflMCsHm;HNKoY4PbhEm z5EUu;N+s6N*VnxVxj0+L$Ft8JJN?UyqT*9i`%K51a}(UEEVWuKZe`UfZdR(gI#DT^ zWR5F8D^cG-={7#4G~X0sNn}|1crc=FGCUnv(|5oB5SDn45%6Jj&RfOabi;U8B>j$6 zSAOti--zubwWo@_wvR$Z_htXKoR0GBnW0(whfya6?Rbn51);y2<5~WSaeHsd(EO0x zSvZVUUOa?xz4XZYvl}qv8NwnjFULq}7v$REVHB;xD;OzjmHfxs-`vJ^{vkuTL)b^b z+S}Ug`k4E%BCOH&G&bzMma?tb2g6-4Bmcdl4I_F^$Z>ugIWEOSj^3(v#L&|iafKa) zH0CKMzI%W*{9!PkSq$?-4=s_`7|jmDJ72TKa^5rKitY^I{13W^90BkV!%QG}3n6z1 za>*fU5VA-icZ?HFo}Upo$g-EOZv5Z90Qd^}t~k%%8$t#N^as@*c+Z~;K$DsnLt}r-%`4%kl}Le4Y^9KBuUq2(`J$ zT(}Cw_~@&dYZJ`z%LN2{8v&1!{mcmhJYKNWlI0TO==BFLd!F4-fY#)u<|bb_m_5xvJ(yRI`g&*7!&6o@6!JdxHC7 z!SXERTr^e&D8(c6cI0**@nNyzd}xckeH*80!Vc4@YBg-Ab{ zVEMa|h1#0xGdSC|>pM!@T4tZARD&(H0z!p?F!)?l+HxyX=u(8d$hW@wU3jCVuCry0(gF|N27Y(f7hYejl2%icBNA^&hMm%DJ8QxwDui!YNVDBjo!6jz{A@0) za2ckO99;rdboa^fCaK5!2a=vlt7biXzdW5yqP^Ie71GWey<*$f@jx~6<-zbbf|j*9 z1yY^sHh3K!o3~Am=5j6rWrT$DWw}!i%hzR1Fvlhxb6<^VnK4}&l$i!sH`U@yQw`J} zuHR+w=uE|sVz7A7vv_EButV{jGn>CbU#(rsbc>EYcP)xbFEMH0OOW4N+;FRBT&xt| zHTXc^88K}fXDN-ST*212>e z=L6gwVwHuj^FUR|K06U221FQjd09SxLz?@B*n*j9{6x8y0@y)DF6FSIO=pSnGiar4M?-)NG_FR96g8iL)uQ}!2Bj$bQ0v%fG#kYN@T zY2(j1oZh*=w50S6yCe46g%O}J;i#~14Bnwt$8w{404vIvxqLzwJ73I%FEdtTroFXP+A6LSOIxL-5;~o!F*0V1PS_*H#{*w`P_?P<8qWJkPe@OEaZcAJ|Gw8r!FKNlsr8 zubmh-dr@EOJgm9HCSPj}o(F$g0yTBK>`q+Ko$IcNaVMP|X_?oZ0uwBMW;WYKhgh=X zI6>XGEhDRk2@^?vBLsj27@5&m6&dAUfj=26$cqw*KJ0dy_WRwJBNjaFrVQThek zM*~cKRc&RZiI#y@>hf9>4V*9?r(sl^f=>8299MfReJu4+kLHThV6DRv^q+Kid7`zg zbyA&H(~tkj6t@^?n5w0`3)Z1;G7fy9;Yb=1^$rQYJpZB?98f6o6hp+#YT7t84K#va zsh*Dhia*iXul|)*1~uES_5f+WR%6g7iKt*^P<2&0qw-Imsrz&rmjev6+l(Z6*`l(A~lx8uouj zET)8JH&BS$hcKDnFq%2sLek!vPa#>x%5l|yko#uevpGd5$2GNl~~AO_84}bz-%G(4j_*Ja?8MT1i6Kvd(bgxbK(3Bng$Lm z)BwN=&@}J@m;l-aMl944zy#pILah%B02UC@2ec0lumf}tTmgPS-2qJ4%{m`g&rIjq zW(P%_Pi3YbI7xL5zLb_6f5IUrEh#RBlu~*o*1P#U`(Cn3Q=U_H3_CU~gjJT7!#m91 z8%gsqV|u10i4%%XpDYlhRVE1no1^1=1bfqB!w>IGt|<5cbrzzdPG>OLF$YQnhYm6i zrf0~qI}>Ny5jbt;%CaDTNGw7>S+F{rFw&V9Y z{bkaW9MMc^cA8FB8W#O}V%Np*@Xu&O4t= zai7>-UERD3J+*w^!yaC4Pc9GDC!(vO76M+HQo2D(ASh;k=@obJhGvJlYO^lqWCd(C z(0mn4LNQd129a@e;@^>9$i(&O@~+B4iqP^`3d$s*kRBf-qZ|Sf>K{^ufAR&t5%MA0 zQSw)1Py*aq$SAj*g0c)Ll}GQ8H-F$$P+loTh+ASG(6op0@K`hj%^*^c?|_2)O(xT} zDx`3i5y<=B$tfh?Y|1vp0A=9B8w&C#L!W>Gb%3+UM)~FMH_G9R0GT8WtG3MN5J3MB z{D$B+`g^^Xw$Vz@(u zohLu%+s*rvp-%wX2NuA)9JCBNC87^#A9M?P1tx&TLGKHFK+rPO2*3o;Gw6Jw)&~ZF z{(&!03%~;mS*QbmDZmQg%t5M{)D>_q;&qi9Nm!P;qakQ(X!>$a?7=!;S)lj9Ms~E* z>GD*UCBoC0m)cB*q@1U%k=KLI>YlcD$a$Qdb)6ThhGs%yZirpo?x&@{j_yAjc=}Q^ zBPFykJ?5W7xp%@UrMtK6{rb>_D$gW*<)O;L$QB95zOqufj~_=m@A>0CvtoO^TS8m^ zfTE&v_J!YLMZyrW?@X*C)4X&SJ5W7hJ-k93Xu3KMRtfmuUtV8YvA7(H ziqNE9tW15ae5wqunNp4_11D>8zn@}6&D6(>Esk(F%(?MgJN8cr{?@ka1h%;@o?Ub^ zP%CORg&v~TlfK8pnHv}oi~_wJsZKyfmemyHuD-&|XesdFgG} zIq*pD085wUL9dC8JzS*R7av_70EGku+jhp3Btglx z+r_YGx1eS@Gy3QnPhwXFN}O+?hy!}C(m3uyAo|7)T_6TN%JAL&EzTK#z~#~Y-MUYA zTdAM1@H7nAU`eD08lQ|Ys2kP4s@>r^>>a` zZJXcZz6x~Rp!QK_b+Dm%m_)O4AfnzO1u=2>NE7#~xk zuY=PJ)KT6SOR~o^JI3p|&y?b^E2s(akaSm5wu0p4;_lL=?xN^@O?4!Bz5kxtd;H$r zzSs~imTQKmlLMRMV3FV+^pmvZ(_3lj47y4=)FSPW;sR{sXr~$K>9NVa<+muWTO<^m zT{GknV#sSmLH7j|bUvW)&OX8#i^UkRwOKxV_KuwU_%Rvz2|7?N8JSynMTU!yA(M{1 zA#*GJJVNjq!F>Uo4~wUY*S*H&Ak5@b`}5+ zw&Qlp`wSaB?B@3xLEmr$%@M&oA;0o{qG!JJ0&^&MfxB;A4s3CIXZAJOX%Du=?oVS%vzx?c6 zTx?=%Z;o&3`mVJiVg2ei^yNuJ1HDtj$-7f;9ugK6QGA<9yCo?*4)Y3_I~UVuWVGUk zmiaDGS56!rYCKvI6Cc0vvw`{(2ek9(%L=j|zQ+k3ZF#+YrDbwkK2D9Nt-VILDs`16cg@D71h1lX{r%`p>(PCMpITv2XJ4P| zXz!Qsb9YAPx+C6jc(0WW67iIH^XGmV&v0(C*;iu{ zW~N!zY)hm)LW_vNMPJuw5eS5!j%F#*vem@kMs>C2DT8WP;khsTHrGR$icSK5;J!+f z*<65Tj0u^gDVZYP7U{JO4?Rz^Yc?hxt2tL_A7XfU?(^p>GZSxqLCw!MpQK;h9Z0J? zb&C#=JTlyyJjf2nJoyyO{i43CUq9k*|2L<@3$?9Bez017kE$8#_L@HZ_2*3^qfJ30 zZ@<~_FMFr7{j>NA`aF|L>zVbfDiHy{Mn_RJC>q3<7op7Ji7LtX6=WA^9q&fRfAM%( zd1;BTTu7)*5tO5tHqm>h-dLJ$clu)o|Nbw3?)CktaPOaYMngEkUSZ)+?D-?84!~p= z-Q*~<7(4OwC04l>7 znQ&yoj(^Cx-TTn}U?Pd@ahcqB{0ZcbkV#j}HwG@hRkBf9ff=$$SH5Eu$i9;fI1&MhTtoXblEwdMFxF@PuriQALE6_pOZBwL<(7gs-#^f3hvkC+%3*8D-S8O&F}Ea zIha_u{{r(w)7iu#m&D@{p?@A~w!ctQ+m?}L_F&R>bFCYHOS#z_Q`yjL+jA8fEL12e zUYz|jFeDX;D*l<#v8fR0i=?8fwr-=N9BJFo5X+|_`MUeW%O~e@&ZYNIe)rY5otxSF zD08Q&MQeRb411GRhjl`X-6kRL00}1(@$ZWs@p#_~%cJAs*bF9}6%riBaAL=OFgIVN zgSXsnX^2uq@MQdUegh9Zd>&dA*aiCn>6V{PCL|xb#5VlPl0mnQugh-D?1G;aX{{m< zs_3`GnY?8KlUm2>FHKL-IX913Suw3FtSyqQP2)_R)rf1BYA;)}O>60zpYC|H9ONC{@5l`s373LMalZIkC>zagLX10Gf?2cH*xLs$Me$%!bu z%4VTiVp8Lar&xnT^Y-w%C6rrE*D&NSfPMg(8@GglJcqEuM7G9k6bq%zVU5@AG42Pk z3>WB6CW(CICl(4q=B0>@(6G|9*b&Da;W; zR%w?hS?>LDhaBGd&=Z7uAF>4?ixBP&V1^JfiNJpZ`6IBq0KCSq*AO@Wx#gf;c=v-= zL6^V*-~zn&LARh^&^2hDh(7QDA3*=W3OG{$2Y?O06yOE00vG^#U+5J8Cx9=&6kr9^ z3&0*m0+l5#E-XF1JLga+)%lb(;#gWxUU=FmaZG+ycu6crc2amLr`90!QxB!22c(xhjO3&pEx*AD z30a(-)l};0TAaN1NM6y|hNRe}j1y_ck6%0(d6-^jzvEVCTkGfg?;DiH${2^K4r=#ks=z@2k)XfSnKU%c>4a3N{;Ln{P46uO(iHdT)x-j5Z#4 z?|@@_X}oYCF5?kfvr@B6jl}2AsGFxo>iFp3J)(RTY2#_0x&%B5?ftEPqeD^LYQO#; zLhksKigXGVZC<;m*~YN74yV6kQJOeYTe`(k`p=FgkAnKfQ*nH_D? zlJ{s;>FlTM-tjVi7EkuOATzZZMIsyC+ZVe!AUcR)wck$D%F2D_XHWmeMS00A&x1Zs zBQi3Y54Bd;qctd&(xxig8+AL00X8UC1W)GX{X`zyR*mIvUWK7t@^;h@!19Y9Q*hkV z@`sJ}*u(XjD38#WjOqm0HtjXCW z6zPv4k0OP;a!M9(c#bR^!pXPQtinhkTrw%egq;7~4-_~TfZzC7m&yG6;Gm1ed@eck z1K@rDa>^i^7_tXJ_fRK5KM?kwLLL$Li(sAz_L+ds0CpWf_6W=tpF2jDgGUkaN+E*) zb{xXKW7uN^_lPh<02&6Z6VV6s4Y~#{fTls)pkvTH@B!Z8pkH7FXc@E(%m99X#(^oI zZD0W~0N4TVf8YY>A6Nqqa0NI4oDus59^D(wNDj-mHW``X>w7vO{d{OdPDkZI(dF{k zlY(w?Qtk26T^AGc+kTGY2oKlPUpvb3DE8YMvnQL;a3LGTfpE8ddCN)KpGxN>AEJjj zCO0R$SQj5O@+&V-3y(fAO=X=5jq=}Xb}5JNn13oTr901|q%r+yiFdB+p4XByPF#DJ z<>_r~?@b)~s5gtnS{bC1WHdcmf5V{Sg=%E~Nc-%ds{T2Ty3&!GyTTc_>^MK&sEdEO zqhH#dfNyW&ypOT{Jf#{BIAXB)1V6~NlgQ-NrGE1&{cz7fm}5`vSg`Z24X1e2U}t87 zjOyUHFWh+X9xq4V*nO#sR$g{gi#Fcl^jdd>;pi@N2yvtbkf_0Qx})R$XX%mU!u#pG z^yhtDr_$5EEi4zkEE2SMKPn)sixLdJTvz6^{HNy%y+^C`Tw9t3b+lKVK`&pNzM6L0 zH+YtC(8uLdl8?eqG3#<~Xz+GfYs851t+G`$RsYAtWJ#%6L1p6_p4&lTW(wM2cK^(> zTyzV9U(2r)FxF_7dN2qtlpQ@Rq zHXmkV*bk1e|2gPJ9V3k~VK+N{gwxZhH2PpQGG#Y1&ZNi9wI`1#rzZD~PBFhsP9uW? z@(qmL^|mh4i@K_9Yh2CwXUPq6RkKuTxYNSsYHMwpg@K8FJeu$P$4AF*L}B}7BwB5% zxA!@U8GX}rXYas};&sp7#N)0{<$kUjBN4*&bcWX>o`Xz_r|re(@BfGbr;B>Bd)5nt zd|uYTUnRo2Y+>f-w^H%<)#7Ki;`prh@nW>zk>8h&oE9?ljZ3eKZzbD?vU*TL8Qbbj zkv(`#N_Agqzu)aC@(G4h0zCFX50QMs)X4t$(NYTXBclBUwEs3T~``MEQ5E{WccfKL6|^3U|tt61w;urBY*v(zsT0r(6cuM~33A)5qpjJ+!e^F2hEHG=y@@FRi`39_>%~0d^WdW*M9(U`IOaL;>G2Xcct5&>sNJgJwayMDzh3 zfL?(Kpn1?ba0B=NdIoj?13=eM9{>Y@3&06r3}_$t0c-(o07u{fUH~J`W#H_&enoXx zyrQqkQ+dK;M_+{uFXh~-0HEe2@<~3v;5y{?`w^{T!} z*(cdYtM=Yq%8X`|{`{ngL0$epPZ)eUS@^S{VYfIp@#2O3=c8zm0Y6&{(64A6ol6Z4 zsLwwWSnL=Z&xqW2t+u#yUBVgrOV)*LH)HIq6W9ivt8BKlrLDE$-SF3i)Vp1-D_+08 z+jsYPw=%fL*P2du4o2_Nz(OViEwj-i(iuyPa5NH8oxFWrMR})Ry8ENm843qKk?*<{ zEvfmLJOQthH=LO-?C%#=5j>Z#Drh{vXqAOWmQFRY%^QfTEW}k}GqW&bvAX(djSX8! z>u_q{+Ar3PBrWbsu4~AyQQb1Vl_NIO+3NjiC`lqCRmz z875S(PHJaoCzZ-X=ZU#-<(!!qeTTdUEm@M*nUYrIFsQ$xY^jwPnEWxd#p0%f*iO76 zZm+C%aHp>J2>0^wS{#z@;6@Fx@e|-}a0h-VBW%zmJT1Vx#V|s*n`9d7gYpLv_$zDx~=wjXWW zf{ah;yHSwI14B&v=(iZsyd2FKlhIv)ob(Ev?el(;qnu(n$|E6>!j8%-w{E4NoC14a z+8jlOvxgj03fgT(LK#IQ)FYI0JI6^}Ln8{BJ*0G9e@u~?1<4~DQ2)R(mQ36}g>p(C zkx8{Sa`zNE>^dZmh25qM?`WI%7r+h^&^*i-!(9RFH--8Da*833_93)dkkQX0CpY1E_9eP0v&@! zp$-83g6@G0plPT9K=bf`{z12(Y0x%sV4=@X6IbXPN^{$?>SXQH(b8wlb>y@ U-u-iyN781B*~_1oN=#$^4_&;u8UO$Q literal 0 HcmV?d00001 diff --git a/tests/python/test_historical_persistence.py b/tests/python/test_historical_persistence.py new file mode 100644 index 00000000..09304b01 --- /dev/null +++ b/tests/python/test_historical_persistence.py @@ -0,0 +1,108 @@ +"""Frozen historical writer outputs must remain searchable with current wheels.""" + +import hashlib +import json +import struct +from pathlib import Path + +import numpy as np +import pytest +from rabitqlib import HnswIndex, IvfIndex, SymqgIndex + +FIXTURES = Path(__file__).resolve().parents[1] / "fixtures" / "persistence" +NAMES = [ + f"{kind}_{metric}" + for kind in ("ivf4", "ivf32", "hnsw4", "qg0", "qg4", "qg8") + for metric in ("l2", "ip") +] + + +def reference(name): + path = FIXTURES / "v0.5.2" / f"{name}.index" + lines = path.with_suffix(".expected").read_text().splitlines() + count, dim, nq, k = map(int, lines[0].split()) + queries = np.fromstring(lines[1], sep=" ", dtype=np.float32).reshape(nq, dim) + results = np.loadtxt(lines[2:]) + ids = results[:, 0].astype(np.uint32).reshape(nq, k) + distances = results[:, 1].astype(np.float32).reshape(nq, k) + cls = ( + IvfIndex + if name.startswith("ivf") + else (HnswIndex if name.startswith("hnsw") else SymqgIndex) + ) + options = {"nprobe": 1} if name.startswith("ivf") else {"ef": 64} + return path, cls, count, queries, ids, distances, options + + +def test_fixture_hashes_match_pinned_manifest(): + manifest = json.loads((FIXTURES / "manifest.json").read_text()) + for filename, digest in manifest["sha256"].items(): + assert hashlib.sha256((FIXTURES / filename).read_bytes()).hexdigest() == digest + + +@pytest.mark.parametrize("name", NAMES) +def test_historical_load_search_and_resave(name, tmp_path): + path, cls, count, queries, ids, distances, options = reference(name) + original = cls.load(str(path)) + destination = tmp_path / "migrated.index" + original.save(str(destination)) + for index in (original, cls.load(str(destination))): + assert index.dim == 65 + assert index.metric == name.rsplit("_", 1)[1] + assert (index.max_elements if cls is IvfIndex else index.num_points) == count + actual_ids, actual_distances = index.search(queries, 5, **options) + np.testing.assert_array_equal(actual_ids, ids) + # Distances may differ across AVX2, AVX-512, NEON, and compiler reductions. + np.testing.assert_allclose(actual_distances, distances, rtol=2e-4, atol=2e-4) + if cls in (IvfIndex, HnswIndex): + assert not np.any(actual_ids == 0) # Historical removal markers survive. + damaged = tmp_path / "truncated.index" + damaged.write_bytes(path.read_bytes()[:-1]) + with pytest.raises(RuntimeError): + cls.load(str(damaged)) + + +@pytest.mark.parametrize("name", ["ivf32_l2", "qg4_l2", "qg8_l2"]) +def test_unknown_historical_version_is_rejected(name, tmp_path): + path, cls, *_ = reference(name) + damaged = bytearray(path.read_bytes()) + struct.pack_into(" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "rabitqlib/index/hnsw/hnsw.hpp" +#include "rabitqlib/index/ivf/ivf.hpp" +#include "rabitqlib/index/symqg/qg.hpp" + +namespace rabitqlib { +namespace { +class HistoricalPersistenceTest : public ::testing::TestWithParam {}; + +TEST_P(HistoricalPersistenceTest, LoadsSearchesResavesAndPreservesStateAfterFailedLoad) { + const std::filesystem::path directory(RABITQ_TEST_FIXTURE_DIR); + const auto name = GetParam(); + const auto path = (directory / (name + ".index")).string(); + std::ifstream expected(directory / (name + ".expected")); + ASSERT_TRUE(expected.is_open()); + size_t count = 0, dim = 0, nq = 0, k = 0; + expected >> count >> dim >> nq >> k; + ASSERT_EQ(count, 33U); + ASSERT_EQ(dim, 65U); + ASSERT_EQ(nq, 3U); + ASSERT_EQ(k, 5U); + std::vector queries(nq * dim), distances(nq * k), reference_distances(nq * k); + std::vector ids(nq * k), reference_ids(nq * k); + for (auto& value : queries) + expected >> value; + for (size_t i = 0; i < ids.size(); ++i) + expected >> reference_ids[i] >> reference_distances[i]; + ASSERT_TRUE(expected.good()); + const auto output = + std::filesystem::temp_directory_path() / ("rabitq_historical_" + name); + const auto compare = [&] { + EXPECT_EQ(ids, reference_ids); + for (size_t i = 0; i < ids.size(); ++i) { + EXPECT_NEAR( + distances[i], + reference_distances[i], + 2e-4F * std::max(1.0F, std::abs(reference_distances[i])) + ); + } + }; + const auto exercise = [&](auto& index, const auto& search) { + index.load(path.c_str()); + EXPECT_EQ(index.dimension(), dim); + const auto metric = name.find("_ip") != std::string::npos ? METRIC_IP : METRIC_L2; + EXPECT_EQ(index.metric_type(), metric); + search(); + compare(); + index.save(output.string().c_str()); + index.load(output.string().c_str()); + search(); + compare(); + std::filesystem::resize_file(output, std::filesystem::file_size(output) - 1); + EXPECT_THROW(index.load(output.string().c_str()), std::runtime_error); + search(); + compare(); + std::filesystem::remove(output); + }; + if (name.find("ivf") == 0) { + ivf::IVF index; + exercise(index, [&] { + EXPECT_EQ(index.padded_dim(), 128U); + EXPECT_EQ(index.initializer_type(), ivf::InitializerType::Flat); + index.search_batch(queries.data(), nq, k, 1, ids.data(), distances.data()); + }); + } else if (name.find("hnsw") == 0) { + hnsw::HierarchicalNSW index; + exercise(index, [&] { + const auto results = index.search(queries.data(), nq, k, 64, 1); + for (size_t i = 0; i < nq; ++i) { + ASSERT_EQ(results[i].size(), k); + for (size_t j = 0; j < k; ++j) { + ids[i * k + j] = results[i][j].second; + distances[i * k + j] = results[i][j].first; + } + } + }); + } else { + symqg::QuantizedGraph index; + exercise(index, [&] { + EXPECT_EQ(index.padded_dim(), 128U); + index.set_ef(64); + index.search_batch(queries.data(), nq, k, ids.data(), distances.data(), 1); + }); + } +} + +INSTANTIATE_TEST_SUITE_P( + V052, + HistoricalPersistenceTest, + ::testing::Values( + "ivf4_l2", + "ivf4_ip", + "ivf32_l2", + "ivf32_ip", + "hnsw4_l2", + "hnsw4_ip", + "qg0_l2", + "qg0_ip", + "qg4_l2", + "qg4_ip", + "qg8_l2", + "qg8_ip" + ), + [](const auto& info) { return info.param; } +); +} // namespace +} // namespace rabitqlib