From 10a45bd361554709840becb5bc26016ca49944c3 Mon Sep 17 00:00:00 2001 From: Jeremy Diviney Date: Fri, 16 Oct 2026 13:52:03 -0700 Subject: [PATCH] Verify six-skip T740 composition through the complete release --- .../rank7-six-skip-cap-release/.gitattributes | 2 + .../rank7-six-skip-cap-release/CLAIM.json | 47 + research/rank7-six-skip-cap-release/FETCH.txt | 12 + .../rank7-six-skip-cap-release/MANIFEST.json | 58 + research/rank7-six-skip-cap-release/NOTICE | 12 + research/rank7-six-skip-cap-release/README.md | 157 + .../SOURCE-PINS.json | 14 + .../rank7-six-skip-cap-release/SOURCES.json | 183 + research/rank7-six-skip-cap-release/TASK.json | 77 + .../rank7-six-skip-cap-release/VENDOR.json | 93 + .../rank7-six-skip-cap-release/VERIFY.json | 40 + .../evidence/ADMISSION-RESULT.json | 382 +++ .../evidence/COMPOSITION-RESULT.json | 90 + .../evidence/ENVIRONMENT.json | 15 + .../evidence/FINITE.json | 133 + .../evidence/INVOICE-PAYLOAD.json | 4 + .../evidence/MATERIALIZED.json | 7 + .../evidence/NATIVE-RECEIPT.json | 113 + .../evidence/NATIVE-base-STEPS.json | 27 + .../evidence/NATIVE-extra-STEPS.json | 27 + .../evidence/OUTER-CLAIM.json | 13 + .../evidence/PREFIX-AND-INVOICE.json.gz | Bin 0 -> 40726 bytes .../evidence/RECIPE.json | 223 ++ .../evidence/RELEASE-RECEIPT.json | 7 + .../evidence/RETAINED-REUSE-RECEIPT.json | 127 + .../evidence/RUN.json | 27 + .../evidence/logs/complete-admission.log.txt | 8 + .../evidence/logs/declared-edit-stage.log.txt | 1 + .../logs/derive-closed-adapters.log.txt | 1 + .../evidence/logs/export-pr2833.log.txt | 1 + .../evidence/logs/export-pr2894.log.txt | 1 + .../evidence/logs/final-outer.log.txt | 7 + .../evidence/logs/final-source.log.txt | 18 + .../evidence/logs/four-kernel-stage.log.txt | 1 + .../logs/fresh-current-native.log.txt | 3 + .../logs/paired-extension-stage.log.txt | 1 + .../evidence/logs/parent-paired-stage.log.txt | 1 + .../evidence/logs/preload-stage.log.txt | 1 + .../evidence/logs/rank7-overlay-stage.log.txt | 1 + .../rank7-six-skip-cap-release/reproduce.py | 84 + .../rank7-six-skip-cap-release/run_release.py | 129 + .../test_bindings.py | 66 + .../vendor/PR3018-EXCHANGE.json | 126 + .../vendor/PR3024-EXCHANGE.json | 559 +++ .../vendor/PR3030-FINITE.json | 94 + .../vendor/PR3042-CAP.json | 124 + .../vendor/PR3042-CLAIM.json | 229 ++ .../vendor/PR3042-EDITS.json | 2984 +++++++++++++++++ .../vendor/PR3042-MANIFEST.json | 156 + .../vendor/PR3042-NOTICE | 28 + .../vendor/PR3042-PROVIDERS.json | 842 +++++ .../vendor/cap_proof.py | 257 ++ .../rank7-six-skip-cap-release/vendor/lift.py | 152 + research/rank7-six-skip-cap-release/verify.py | 159 + .../verify_release.py | 98 + .../words/base.json.gz | Bin 0 -> 72539 bytes .../words/extra.json.gz | Bin 0 -> 72538 bytes 57 files changed, 8022 insertions(+) create mode 100644 research/rank7-six-skip-cap-release/.gitattributes create mode 100644 research/rank7-six-skip-cap-release/CLAIM.json create mode 100644 research/rank7-six-skip-cap-release/FETCH.txt create mode 100644 research/rank7-six-skip-cap-release/MANIFEST.json create mode 100644 research/rank7-six-skip-cap-release/NOTICE create mode 100644 research/rank7-six-skip-cap-release/README.md create mode 100644 research/rank7-six-skip-cap-release/SOURCE-PINS.json create mode 100644 research/rank7-six-skip-cap-release/SOURCES.json create mode 100644 research/rank7-six-skip-cap-release/TASK.json create mode 100644 research/rank7-six-skip-cap-release/VENDOR.json create mode 100644 research/rank7-six-skip-cap-release/VERIFY.json create mode 100644 research/rank7-six-skip-cap-release/evidence/ADMISSION-RESULT.json create mode 100644 research/rank7-six-skip-cap-release/evidence/COMPOSITION-RESULT.json create mode 100644 research/rank7-six-skip-cap-release/evidence/ENVIRONMENT.json create mode 100644 research/rank7-six-skip-cap-release/evidence/FINITE.json create mode 100644 research/rank7-six-skip-cap-release/evidence/INVOICE-PAYLOAD.json create mode 100644 research/rank7-six-skip-cap-release/evidence/MATERIALIZED.json create mode 100644 research/rank7-six-skip-cap-release/evidence/NATIVE-RECEIPT.json create mode 100644 research/rank7-six-skip-cap-release/evidence/NATIVE-base-STEPS.json create mode 100644 research/rank7-six-skip-cap-release/evidence/NATIVE-extra-STEPS.json create mode 100644 research/rank7-six-skip-cap-release/evidence/OUTER-CLAIM.json create mode 100644 research/rank7-six-skip-cap-release/evidence/PREFIX-AND-INVOICE.json.gz create mode 100644 research/rank7-six-skip-cap-release/evidence/RECIPE.json create mode 100644 research/rank7-six-skip-cap-release/evidence/RELEASE-RECEIPT.json create mode 100644 research/rank7-six-skip-cap-release/evidence/RETAINED-REUSE-RECEIPT.json create mode 100644 research/rank7-six-skip-cap-release/evidence/RUN.json create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/complete-admission.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/declared-edit-stage.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/derive-closed-adapters.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/export-pr2833.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/export-pr2894.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/final-outer.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/final-source.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/four-kernel-stage.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/fresh-current-native.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/paired-extension-stage.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/parent-paired-stage.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/preload-stage.log.txt create mode 100644 research/rank7-six-skip-cap-release/evidence/logs/rank7-overlay-stage.log.txt create mode 100644 research/rank7-six-skip-cap-release/reproduce.py create mode 100644 research/rank7-six-skip-cap-release/run_release.py create mode 100644 research/rank7-six-skip-cap-release/test_bindings.py create mode 100644 research/rank7-six-skip-cap-release/vendor/PR3018-EXCHANGE.json create mode 100644 research/rank7-six-skip-cap-release/vendor/PR3024-EXCHANGE.json create mode 100644 research/rank7-six-skip-cap-release/vendor/PR3030-FINITE.json create mode 100644 research/rank7-six-skip-cap-release/vendor/PR3042-CAP.json create mode 100644 research/rank7-six-skip-cap-release/vendor/PR3042-CLAIM.json create mode 100644 research/rank7-six-skip-cap-release/vendor/PR3042-EDITS.json create mode 100644 research/rank7-six-skip-cap-release/vendor/PR3042-MANIFEST.json create mode 100644 research/rank7-six-skip-cap-release/vendor/PR3042-NOTICE create mode 100644 research/rank7-six-skip-cap-release/vendor/PR3042-PROVIDERS.json create mode 100644 research/rank7-six-skip-cap-release/vendor/cap_proof.py create mode 100644 research/rank7-six-skip-cap-release/vendor/lift.py create mode 100644 research/rank7-six-skip-cap-release/verify.py create mode 100644 research/rank7-six-skip-cap-release/verify_release.py create mode 100644 research/rank7-six-skip-cap-release/words/base.json.gz create mode 100644 research/rank7-six-skip-cap-release/words/extra.json.gz diff --git a/research/rank7-six-skip-cap-release/.gitattributes b/research/rank7-six-skip-cap-release/.gitattributes new file mode 100644 index 0000000000..dc29606df8 --- /dev/null +++ b/research/rank7-six-skip-cap-release/.gitattributes @@ -0,0 +1,2 @@ +vendor/** -text +words/** -text diff --git a/research/rank7-six-skip-cap-release/CLAIM.json b/research/rank7-six-skip-cap-release/CLAIM.json new file mode 100644 index 0000000000..f6da716d02 --- /dev/null +++ b/research/rank7-six-skip-cap-release/CLAIM.json @@ -0,0 +1,47 @@ +{ + "admission_sha256": "b1c2b133293daff86b2008a81fe8008d781a22cd09ab56ae3d6f46dba5d6000b", + "baseline_head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "baseline_kappa": "17297361663879159868119999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "baseline_pr": 3042, + "calls": 6660, + "charged_prefix_bits": 2048, + "contribution": "Exact composition of credited PR3042 words and PR3030/3024 allocation, complete finite checks and full release replay.", + "fixed_word_cap_attained": true, + "gain": "178367636256443/100000000000000000000000", + "global_prefix_bits": 1479, + "kappa": "17297379500642785512419999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "kappa_decimal": "0.0017297379500642785512419999999999999999999998999999999999999999999999", + "local_profile": { + "1": 2433, + "2": 712, + "3": 232, + "4": 108, + "5": 18, + "8": 8 + }, + "native_receipt_sha256": "f022b2c493b999cdfa50fc180b6f5770affadc9bb086bc8de2f3a8777bd6e2d8", + "packing_head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "packing_pr": 3030, + "physical": 663549, + "private_zero_buffers": 91, + "profile": { + "1": 16376940, + "2": 4741920, + "3": 1594737, + "4": 719280, + "48": 281903, + "5": 137085, + "8": 53280 + }, + "release_receipt_sha256": "6a3b9e15eb7cf7ca2966b6f47195cf02cfb6fac79590b1b5cfe21a802ee425ee", + "replicas": 740, + "roles": 2717280, + "root": [ + "4324344875160696378107/2500000000000000000000000", + "17297379500642785512429/10000000000000000000000000" + ], + "scientific_review": "pending; not a selected-frontier update", + "scope": "Conditional finite source/native/owner/outer release; inherited all-size, compiler, physical, precision and analytic obligations remain.", + "source_manifest_sha256": "130650ad8833f6df88528c560e4d1cfbae084f4b15a64788a332ddcaff472a17", + "status": "PASS_CONDITIONAL_SIX_SKIP_T740_COMPOSITION" +} diff --git a/research/rank7-six-skip-cap-release/FETCH.txt b/research/rank7-six-skip-cap-release/FETCH.txt new file mode 100644 index 0000000000..d8d8e7d2d7 --- /dev/null +++ b/research/rank7-six-skip-cap-release/FETCH.txt @@ -0,0 +1,12 @@ +git fetch --no-tags https://github.com/CrocSwap/integer-mult-bounds.git \ + 84cc406ad91ec53fff329a11a445d7effe564a77 \ + 78e77d820393c6b8648b47af219e991edfcc54e6 \ + d8e0f83f00191df62174b641e9fff055c357f641 \ + 51309592971e3b5be935599eed2a95404dc7781e \ + 224bd5e56041c40078ff6b5fa7393733a215de5c \ + a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf \ + b74b25f3ccc84c16e1a801d73b2f47e5ea764c78 \ + e62d3eb9005117d82a9babcfa937ecc53237c490 \ + e2ca469b08385d3d5e29a918d66dbefaf889e9f3 \ + 18d03c447886895ef9abf888398178e0428533ca \ + e9307b48d7d1b690939935ecef0f8e524e6d92f4 diff --git a/research/rank7-six-skip-cap-release/MANIFEST.json b/research/rank7-six-skip-cap-release/MANIFEST.json new file mode 100644 index 0000000000..2da999bc03 --- /dev/null +++ b/research/rank7-six-skip-cap-release/MANIFEST.json @@ -0,0 +1,58 @@ +{ + ".gitattributes": "5afc8c7cd1db7ae6d1042a8577cce53e3c512cb4e7608f3d9a507613c6ac4f02", + "CLAIM.json": "f59914dd2687d9c47c1b9ca8ec95ff5b20d4a17eed7dc150b439f0b9bc8c6298", + "FETCH.txt": "695b91df6dcfe7b3c5e2b8b912ea15cd7fba05fed41cb2716250e4613135106b", + "NOTICE": "9df015636574fe4410f87f218c726c39801378d877619d617c74bea500c7ebbc", + "README.md": "a80db73700dfdcc23467964bea90e73aa499197e04efbc027fa57dc531cc0e51", + "SOURCE-PINS.json": "aefe501dcd5312fd57bf537f9d1f6b232cb8d67f88faa1e60ac2c8303b1ed1c1", + "SOURCES.json": "10b03aae02483c02ce4ebfbc2f774dcbb6eff21c221d152e3fc510b8fe329bc5", + "TASK.json": "290ac6146f592e746df5f69fa93f650093440d663323238d78a861ac74b0480c", + "VENDOR.json": "2cbe373cf57d546729979fb29e85d148d378d3c87b94c6675a326556a7c3727f", + "VERIFY.json": "de07a498f241070cc309095af3ee3cd3593b8d0531e2783b4e85e65e12e181dc", + "evidence/ADMISSION-RESULT.json": "b1c2b133293daff86b2008a81fe8008d781a22cd09ab56ae3d6f46dba5d6000b", + "evidence/COMPOSITION-RESULT.json": "b6fe99e8fa26b061ab24ef5711c9a785587a8db5a43f2c1f2fb2e330f31207dc", + "evidence/ENVIRONMENT.json": "7bfa113d97f1773115dd5c60aa6e32b341456d708870e9bfc2a022a7e6dbcce7", + "evidence/FINITE.json": "6b17824cdfdc8ecac9e57b77085127bf3bec4354839f12a4857744ca935f6b87", + "evidence/INVOICE-PAYLOAD.json": "590cb7a9c12db2a49309dd34e9360aae3527e2a21c2b32f9bb1532bc9c4357ba", + "evidence/MATERIALIZED.json": "31e3460e75f9f7c21968bc6f99da0ccf7a6d0a87d0b191d980cf94cfe8ac6b60", + "evidence/NATIVE-RECEIPT.json": "f022b2c493b999cdfa50fc180b6f5770affadc9bb086bc8de2f3a8777bd6e2d8", + "evidence/NATIVE-base-STEPS.json": "c29777578e7f98a08203779a305c53fd6db0ebe8ffed79aadb0eb9e124bf27e9", + "evidence/NATIVE-extra-STEPS.json": "15b5589b50da97b9c42ea1bc8105e811e7980a7ae93e78e11416f55440f9d920", + "evidence/OUTER-CLAIM.json": "2fb2f1dd2c86abe53eb8513b006762c8be542902c99308e4b24642a2b087d3d8", + "evidence/PREFIX-AND-INVOICE.json.gz": "6e1c0974ef360f69293a7f119373e74557600cbbf5604ac56e8ed3b82fe27bce", + "evidence/RECIPE.json": "b2b7701670ab2ac479a64c5fbccea50efea73b307ada931c00e6e094c3d89ae9", + "evidence/RELEASE-RECEIPT.json": "6a3b9e15eb7cf7ca2966b6f47195cf02cfb6fac79590b1b5cfe21a802ee425ee", + "evidence/RETAINED-REUSE-RECEIPT.json": "dd36443f2789ffa6deca7210c76ada781e2b9b7e622a546b366f51a475faff3e", + "evidence/RUN.json": "63364bc8c38331baeebeeff9564324b75ea3fdd0ed858b082f8628c61e1a3aab", + "evidence/logs/complete-admission.log.txt": "16c7e28a72fb06ee6c5e5526e030918739e0f0aaa0a8f2fc5e04eae824a43c48", + "evidence/logs/declared-edit-stage.log.txt": "e0d0595445e237ed99b78764aeb387fea1e7d4e1c5316fc78e49b2ebfc773de5", + "evidence/logs/derive-closed-adapters.log.txt": "cf5381d71952f83a995ef9650b048b6f87807780ba2a7f417c376df0840768af", + "evidence/logs/export-pr2833.log.txt": "7ec13b370a7339288a29ba396b657841241c0f4154dceff6b20f34f4bae05098", + "evidence/logs/export-pr2894.log.txt": "6bd8df30779863897e48441608240db6a7e3fcbd0754511e44f854f3a5c462a6", + "evidence/logs/final-outer.log.txt": "670f60ee3ecc7e2d7fc4b23b468d4cdb8cfab9edaf252cd2410c1cabcb0318dc", + "evidence/logs/final-source.log.txt": "f77be4449fe7fc3ad60adc31688496569bd47ca5a1de0a5434d3f155af392bf0", + "evidence/logs/four-kernel-stage.log.txt": "f2bbb6462b3f5bb8a6415bb33c0c35355353b13343ddb90961660f7473caa5a2", + "evidence/logs/fresh-current-native.log.txt": "57a95a5df95aa0574b48d59d71a6e5e84d017172e51b8627d8713c52a7134206", + "evidence/logs/paired-extension-stage.log.txt": "61cc77beeae833d7473b5c5338b176b150f95f6652a888c0307f080674cfde35", + "evidence/logs/parent-paired-stage.log.txt": "d80d8494c48816e3acf662db00cc0077a888b82392d736826f73beb1c4248299", + "evidence/logs/preload-stage.log.txt": "2eb7601c48840a39c58eb838886aed00a531349b259f0bbc3ea6421376b8ea3c", + "evidence/logs/rank7-overlay-stage.log.txt": "06150c3f42489b14e981b90ac0e594e7e32bfc6ec4a98f3551cf53b6d18acd36", + "reproduce.py": "958a41ff502dc11cf07835e67a52fa8a946f5785ea9517af6f4cc702c6db605e", + "run_release.py": "1acdcc2f713b04d49954596be435d615bec1838833e1ba112f048072bfae072e", + "test_bindings.py": "f334e67e1ccd2b5eb9430e11aa48fffaa11b07aba3e4bc8518f6cd079bb7a6c1", + "vendor/PR3018-EXCHANGE.json": "8a103f643ad12d8074972f41e4359d9487eb8b96fc6849e1a178adb61b36578b", + "vendor/PR3024-EXCHANGE.json": "18b3af92dab108945fa7033a2476a8521416b403415a31cdbbe2d1315bb1c827", + "vendor/PR3030-FINITE.json": "00ee90400fa3f35b19a12b89e4d2a2754a02832d4800351657970dc18042b406", + "vendor/PR3042-CAP.json": "ef10b3d6481155eb3cd6f4ce3c82a6919fc5b5bce285d26cef39621989f22d9f", + "vendor/PR3042-CLAIM.json": "adb2efbaa7c16bf66aede2ac739e445e6fa974d5defbff8b70324f4f10632aa3", + "vendor/PR3042-EDITS.json": "ebffcc1e57e59439b9678ff8d9be518c457af22ce77235c2fdb46540ab9b9b79", + "vendor/PR3042-MANIFEST.json": "da2b0fbe030ed5981ea105720042f5be8f56803c141e0be326776eb08e379406", + "vendor/PR3042-NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "vendor/PR3042-PROVIDERS.json": "04c9f2620178322010f7bafb30c669cad0be1426a905275d28a398398b596cd0", + "vendor/cap_proof.py": "7c5f362ed21dbbdbd6a0632aebef424213a37c47c86151a0520d097e8f4e321f", + "vendor/lift.py": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c", + "verify.py": "418fde9282e72946e48e40944a1b68da36112f520fb9d4d5eef6f9aabeb3ba6e", + "verify_release.py": "43459f1e17a8cd0b7e23ff0aaec5a2cb6aa4fc4e02d6d4b65941a56363ea9de7", + "words/base.json.gz": "7e98f6f2a6c9ce9e7e04b515bd8ce4a4a533ff05f01ea265be2a1a994695260e", + "words/extra.json.gz": "1396410de482883416fc7f534062ab005b484056b035fdcfa3b5cc065536ba35" +} diff --git a/research/rank7-six-skip-cap-release/NOTICE b/research/rank7-six-skip-cap-release/NOTICE new file mode 100644 index 0000000000..6bbe6321ff --- /dev/null +++ b/research/rank7-six-skip-cap-release/NOTICE @@ -0,0 +1,12 @@ +New integration and verification binding: Jeremy Diviney, with substantial +OpenAI Codex assistance. Apache-2.0. + +The scalar constructions, packing witnesses and retained verification engines +are contributions of the named predecessors, not new constructions of this +package. Credit dcharb78 (PR3042), Nick Petalas (PR3018/3024/3030), Jeremy Kothe +(PR3015/2957/2894/2833), Marius-Paul Dumitrean (PR2979/2942), Mason Hale +(PR2917), Jeremy Diviney (PR2908), Yiyang Lu, Tekalign, Ross Richardson, +Dugongue, icekylinx, themilkman216 and their credited source lineage. + +The original retained notice is vendor/PR3042-NOTICE. Source heads, original +paths, Git blob IDs and SHA-256 digests are in SOURCES.json and VENDOR.json. diff --git a/research/rank7-six-skip-cap-release/README.md b/research/rank7-six-skip-cap-release/README.md new file mode 100644 index 0000000000..5275a015f5 --- /dev/null +++ b/research/rank7-six-skip-cap-release/README.md @@ -0,0 +1,157 @@ +# Six restore skips composed with the T740 packing cap + +**Finite checks and the complete composed release pass.** This package composes +dcharb78's PR3042 literal circuit with Nick Petalas's PR3024/3030 T740 allocation. +The finite moment gives the conditional candidate + +``` +kappa = 0.001729737950064278551242 - 10^-46 - 10^-70 +gain over pinned PR3042 = 178367636256443 / 10^23 + ≈ 1.78367636256443e-9 +``` + +This is an integration of two existing constructions. Jeremy Diviney, with +substantial OpenAI Codex assistance, supplies the exact source/word/allocation +binding, completed-profile checks and composed release workflow. There is no new +scalar rewrite or allocation search in this package. No selected-frontier change +or independent human/formal-kernel review is claimed. + +## Concurrent work + +A pre-submission refresh found Petalas's [live claim for the same composition](https://github.com/CrocSwap/integer-mult-bounds/discussions/2612#discussioncomment-18982402), +posted during this local run, and [PR3050](https://github.com/CrocSwap/integer-mult-bounds/pull/3050)'s +separate code-disjoint substitution/frame audit. This package claims neither +priority nor a unique composition idea. Its additional evidence is a separately +executed complete release and explicit bindings from the checked words and +literal allocation to that release. It reuses credited scientific engines; +separate execution is not code-disjoint verification of those engines. + +## Exact sources and contribution + +| Source | Exact head | Contribution retained | +|---|---|---| +| [PR3042](https://github.com/CrocSwap/integer-mult-bounds/pull/3042), dcharb78 | `84cc406ad91ec53fff329a11a445d7effe564a77` | Both six-skip literal words, declared edits and complete source recipe | +| [PR3030](https://github.com/CrocSwap/integer-mult-bounds/pull/3030), Nick Petalas | `78e77d820393c6b8648b47af219e991edfcc54e6` | PR3024 T740 cap allocation, PR3018 journal, materialization and composition pattern | +| [PR2979](https://github.com/CrocSwap/integer-mult-bounds/pull/2979), Marius-Paul Dumitrean | `be191346391661f4d35fc0d1508d0a6029572576` | Joint rank-seven frames, five paired extractions, native/owner/outer chain | + +Live predecessor files are pinned at main +`d8e0f83f00191df62174b641e9fff055c357f641`, priority revision 6. The selected +conditional result at that checkpoint remains 0.001672660197076918. +`SOURCES.json`, `SOURCE-PINS.json` and `VENDOR.json` identify every retained input. + +The two new source words differ from PR2979 only in `restore`, its derived +inverse cleanup and the paid-profile report. Both complete 123-variable restore +matrices agree exactly with PR2979; the full forward/dual operator auditor checks +all 632 independent inputs. Each of the 408 helper widths is checked in its +original order, not merely through a histogram. The 91 restored endpoints and +their private cleanup buffers remain charged. + +The literal `PR3042-EDITS.json` is the source of the circuit: its two blocks have +26 → 33 and 13 → 15 gates. Some prose in the pinned upstream description gives +different carriers and block lengths; those statements are not used as evidence +here. The retained literal gates pass exact matrix, frame and operator checks. + +## Complete bill and cap + +The per-call local bill is `{1:2433, 2:712, 3:232, 4:108, 5:18, 8:8}`. +The unchanged ordered widths allow the literal T740 allocation to be used with +these words. The source journal and ten-copy lift produce 2,717,280 helper roles +across 6,660 calls. The retained owner checker rechecks every role, chronological +window, physical-family collision, mask and capacity. + +The complete profile is + +``` +{1:16376940, 2:4741920, 3:1594737, 4:719280, + 5:137085, 8:53280, 48:281903} +``` + +For each rank this equals `6660 * local + idle`, where +`idle = {1:173160, 3:49617, 5:17205, 48:281903}`. Its rank mass is +`65088 * 740`. Directed rational arithmetic gives the root bracket + +``` +[0.0017297379500642785512428, 0.0017297379500642785512429]. +``` + +Petalas's retained cap checker recertifies all 2,551 feasible patterns at this +changed local tariff: 12 are identically tight and 2,539 strictly positive. +The literal idle counts equal 740 times the optimal fractional counts, so this +construction attains **100% of its fixed-word packing cap**. This is the +appropriate bound for this fixed-capacity inventory model, not a global ceiling +over other circuits or supplier contracts. + +Physical stock is `896*740 + 408 + 8 + 91 + 2 = 663549`. The stock norm uses +1,324 bits; the conservative reserve is 1,512 within the charged 2,048-bit +payload. The completed strict replay rebuilt the precision, physical and outer +invoice: the actual prefix requirement is 1,479 bits, within 2,048. This uses +about ten times PR3042's fixed physical stock (663,549 versus 66,813); the +larger inventory is fully charged, and the exponent gain is small. + +## Reproduction and evidence + +Bounded registered replay (Python 3.12 standard library): + +```sh +python3.12 -B scripts/research_package.py --package research/rank7-six-skip-cap-release +``` + +`verify.py` recomputes both literal word checks, all ordered widths, full owner +geometry, the complete moment and packing cap. It hashes the reconstructed fill +payload, order and dispatch to bind the finite witness to the actual release. +`verify_release.py` checks stored full-run receipts and their input bindings; +that check does not rerun the native/outer computation. Eight finite controls and +ten receipt/invoice controls target coefficient, width-order, journal, paid-cost, +buffer, payload, source, native and release failures. + +Full replay requires POSIX process groups, the exact source commits in `FETCH.txt` to be +available locally, and Python with NumPy, SciPy, SymPy and mpmath as required by +the retained recipes: + +```sh +OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 \ +python3.12 -B research/rank7-six-skip-cap-release/reproduce.py \ + --repo . --work /tmp/six-skip-cap-fresh --jobs 2 +``` + +The reproducer exports the exact upstream packages, uses PR3030's unchanged +materializer and PR3042's unchanged recipe, and changes exactly its three +complete-admission allocation arguments: fill, order and dispatch. Source +recipes, native checks and admission controls remain intact. `--dry-run` checks +exports/materialization/recipe only. `--retained DIR` explicitly reuses an +authenticated retained cache; both current providers still run fresh. +Regenerated gzip inputs are compared by their complete decompressed payload; +committed source files retain exact byte hashes. + +The recorded run uses authenticated retained evidence from the prior session +and two fresh current five-stage native chains. It must not be described as a +fresh retained bootstrap. The 11 composed source stages passed in 31.3 +minutes with two low-priority single-thread audit workers. Exact logs and raw +receipts are under `evidence/`; `RUN.json` records commands and reuse scope. +The public exporter/materializer/recipe dry run passed separately. A full run +with a freshly bootstrapped retained parent was not performed in this session. + +## Scope + +All inherited all-size/compiler, physical backing and movement, precision/tape, +caller, analytic and universal block-energy hypotheses remain. This is a +conditional finite certificate, not an unconditional integer-multiplication +theorem. Archive merge and scientific admission are distinct. + +## Open next questions + +The next useful task is an independent replay of this exact composition and an +audit of a named remaining admission implication. The fixed-word packing cap +is attained; a further gain in this model requires changing the word, inventory +or coverage contract. See `TASK.json` for the scoped handoff. + +## Credit + +Credit dcharb78/PR3042 for the six-skip word; Jeremy Kothe/PR3015 and PR2957 for +literal edit tooling and predecessor rewrites; Nick Petalas/PR3018, PR3024 and +PR3030 for packing and composition; Marius-Paul Dumitrean/PR2979 and PR2942 for +joint frames and extractions; Mason Hale/PR2917; Jeremy Diviney/PR2908 for paired +extraction; Yiyang Lu, Tekalign, Ross Richardson, Dugongue, icekylinx, +themilkman216, and the retained geometry/native/owner lineage. Original notices +are preserved. New work is Apache-2.0; substantial OpenAI Codex assistance was +used, with no independent human review claimed. diff --git a/research/rank7-six-skip-cap-release/SOURCE-PINS.json b/research/rank7-six-skip-cap-release/SOURCE-PINS.json new file mode 100644 index 0000000000..fb414c01f2 --- /dev/null +++ b/research/rank7-six-skip-cap-release/SOURCE-PINS.json @@ -0,0 +1,14 @@ +{ + "research/rank7-joint-endframes/allocation/FILL.json.gz": "c2136be9434cda511a1a8a44d98f9f72ea5376830a8426674253b4ee351c4c39", + "research/rank7-joint-endframes/allocation/ORDER.json": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1", + "research/rank7-joint-endframes/allocation/DISPATCH.json": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c", + "research/rank7-joint-endframes/allocation/PROVIDERS.json": "f2edb7922f3029a5d607437e737775ff3371bca49ebab62e5e2495d16d3bf573", + "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "research/rank7-joint-endframes/allocation/vendor/independent_owners.py": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461", + "research/rank7-joint-endframes/tools/root.py": "55f5aca39b5ee2fe4687ac8863e6c24569010f27a332883c069b8e14b8fe09e3", + "research/rank7-joint-endframes/vendor/preload_move.py": "c8fda4674644fcd5cbf39b6645ce148a21daa90a998b678cbe51f970b78b0044", + "research/rank7-joint-endframes/vendor/audit_local.py": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90", + "research/rank7-joint-endframes/data/WORD-base.json.gz": "abaf67bfcb257528658c906b612f57025617592bd7889828f92b97a5f4f4300d", + "research/rank7-joint-endframes/data/WORD-extra.json.gz": "e0eaf64c4d5d324693d43889bce1b9e53e8da00402105c8c978fd102f208bed7" +} diff --git a/research/rank7-six-skip-cap-release/SOURCES.json b/research/rank7-six-skip-cap-release/SOURCES.json new file mode 100644 index 0000000000..ca3af96651 --- /dev/null +++ b/research/rank7-six-skip-cap-release/SOURCES.json @@ -0,0 +1,183 @@ +{ + "schema_version": 1, + "base_commit": "d8e0f83f00191df62174b641e9fff055c357f641", + "files": [ + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "67f085acd86acd7d4e03922d9cf4b26bca66fed5", + "sha256": "47b42433f5a85809a3aadd29c2c339da2c6ed728e4f7762df6b88bccb7874cf0" + }, + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "b1fea0c94436b236cc2b7d41a7be032811b94c81", + "sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129" + }, + { + "path": "research/rank7-joint-endframes/allocation/FILL.json.gz", + "usage": "input", + "git_blob": "8d4fd644d60ba2c98106dc770803b647afdf0963", + "sha256": "c2136be9434cda511a1a8a44d98f9f72ea5376830a8426674253b4ee351c4c39" + }, + { + "path": "research/rank7-joint-endframes/allocation/ORDER.json", + "usage": "input", + "git_blob": "7409c4df1092241729739596c7648bda504e6aad", + "sha256": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1" + }, + { + "path": "research/rank7-joint-endframes/allocation/DISPATCH.json", + "usage": "input", + "git_blob": "9544fee4e6ee1f202cee22bfaeaf229ee3b2515e", + "sha256": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c" + }, + { + "path": "research/rank7-joint-endframes/allocation/PROVIDERS.json", + "usage": "input", + "git_blob": "e1d99e12cfa3ac8375984d85c0b040dc36ea1312", + "sha256": "f2edb7922f3029a5d607437e737775ff3371bca49ebab62e5e2495d16d3bf573" + }, + { + "path": "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz", + "usage": "input", + "git_blob": "7a1db55a4d53ee99280be4f3ab7d29f7b2033adf", + "sha256": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e" + }, + { + "path": "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz", + "usage": "input", + "git_blob": "114808c32b1799da53524bdc25cea67efb60009e", + "sha256": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e" + }, + { + "path": "research/rank7-joint-endframes/allocation/vendor/independent_owners.py", + "usage": "input", + "git_blob": "16013201b19054f7e45398ecf10af74c9c6a9114", + "sha256": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461" + }, + { + "path": "research/rank7-joint-endframes/tools/root.py", + "usage": "input", + "git_blob": "bd6dc2eb4e5013625d17cc08461b67622bcfed69", + "sha256": "55f5aca39b5ee2fe4687ac8863e6c24569010f27a332883c069b8e14b8fe09e3" + }, + { + "path": "research/rank7-joint-endframes/vendor/preload_move.py", + "usage": "input", + "git_blob": "55b435035bbc439a9d55e8abd125993208cef8d9", + "sha256": "c8fda4674644fcd5cbf39b6645ce148a21daa90a998b678cbe51f970b78b0044" + }, + { + "path": "research/rank7-joint-endframes/vendor/audit_local.py", + "usage": "input", + "git_blob": "8224873d0497cf0b4c202f31b145fa273553d978", + "sha256": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90" + }, + { + "path": "research/rank7-joint-endframes/data/WORD-base.json.gz", + "usage": "input", + "git_blob": "d9aa96a93fea5f7395e7783aef0bc117c0a0ae89", + "sha256": "abaf67bfcb257528658c906b612f57025617592bd7889828f92b97a5f4f4300d" + }, + { + "path": "research/rank7-joint-endframes/data/WORD-extra.json.gz", + "usage": "input", + "git_blob": "74f6cb64595c21f7726ae77e69437868620bdcee", + "sha256": "e0eaf64c4d5d324693d43889bce1b9e53e8da00402105c8c978fd102f208bed7" + } + ], + "retained_sources": [ + { + "path": "words/base.json.gz", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/edits/FINAL-WORD-base.json.gz", + "git_blob": "2ee02e318c98281a71445b954feccd55c153827c", + "sha256": "7e98f6f2a6c9ce9e7e04b515bd8ce4a4a533ff05f01ea265be2a1a994695260e" + }, + { + "path": "words/extra.json.gz", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/edits/FINAL-WORD-extra.json.gz", + "git_blob": "33ba5f34996a31edd197cb58eca575645575e529", + "sha256": "1396410de482883416fc7f534062ab005b484056b035fdcfa3b5cc065536ba35" + }, + { + "path": "vendor/PR3042-EDITS.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/edits/EDITS.json", + "git_blob": "c2042a37bdba0febb791d39bcb1f9f55de9fb14e", + "sha256": "ebffcc1e57e59439b9678ff8d9be518c457af22ce77235c2fdb46540ab9b9b79" + }, + { + "path": "vendor/PR3042-CLAIM.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/CLAIM.json", + "git_blob": "47a55a7f68efc1d5babec487d09a1f45f95c3221", + "sha256": "adb2efbaa7c16bf66aede2ac739e445e6fa974d5defbff8b70324f4f10632aa3" + }, + { + "path": "vendor/PR3042-MANIFEST.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/MANIFEST.json", + "git_blob": "7018d721f594be3e22e291f44cfdd59e02a43485", + "sha256": "da2b0fbe030ed5981ea105720042f5be8f56803c141e0be326776eb08e379406" + }, + { + "path": "vendor/PR3042-CAP.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/certificates/RELAX-CAP.json", + "git_blob": "f4c94b6241ed4dc20558a95d10bb6ff47071a07f", + "sha256": "ef10b3d6481155eb3cd6f4ce3c82a6919fc5b5bce285d26cef39621989f22d9f" + }, + { + "path": "vendor/PR3042-PROVIDERS.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/allocation/PROVIDERS.json", + "git_blob": "c0575e39034932eef6c66b1a7848e4d9771e9bf4", + "sha256": "04c9f2620178322010f7bafb30c669cad0be1426a905275d28a398398b596cd0" + }, + { + "path": "vendor/PR3042-NOTICE", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/NOTICE", + "git_blob": "89c20926ea7f803718f751d95989d5a269908efd", + "sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661" + }, + { + "path": "vendor/lift.py", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/vendor/pr3024/lift.py", + "git_blob": "717067dfce61c530205e8dad7ab3e76376f2c179", + "sha256": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c" + }, + { + "path": "vendor/cap_proof.py", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/vendor/pr3024/cap_proof.py", + "git_blob": "28f0995a69fbb003238f5ee8d1acf407bb1b37be", + "sha256": "7c5f362ed21dbbdbd6a0632aebef424213a37c47c86151a0520d097e8f4e321f" + }, + { + "path": "vendor/PR3024-EXCHANGE.json", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/vendor/pr3024/EXCHANGE.json", + "git_blob": "1b1a904ff05e848bfb2793597b9613cc997c3367", + "sha256": "18b3af92dab108945fa7033a2476a8521416b403415a31cdbbe2d1315bb1c827" + }, + { + "path": "vendor/PR3018-EXCHANGE.json", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/vendor/pr3018/EXCHANGE.json", + "git_blob": "1260c8d95f573a574e007038263adf883b5ecbd2", + "sha256": "8a103f643ad12d8074972f41e4359d9487eb8b96fc6849e1a178adb61b36578b" + }, + { + "path": "vendor/PR3030-FINITE.json", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/evidence/FINITE.json", + "git_blob": "0ddf2aba4629c09810b336ce92e4dbfc35fca9fa", + "sha256": "00ee90400fa3f35b19a12b89e4d2a2754a02832d4800351657970dc18042b406" + } + ] +} diff --git a/research/rank7-six-skip-cap-release/TASK.json b/research/rank7-six-skip-cap-release/TASK.json new file mode 100644 index 0000000000..d36b512199 --- /dev/null +++ b/research/rank7-six-skip-cap-release/TASK.json @@ -0,0 +1,77 @@ +{ + "actual_scope": "Separately execute and source-bind the exact PR3042 six-skip words composed with PR3030/3024 T740 cap allocation; verify the complete changed finite supplier and outer release.", + "ai_assistance": "Substantial OpenAI Codex assistance for integration, exploratory search, implementation and verification. No independent human or formal-kernel review claimed.", + "author": "Jeremy Diviney", + "base_commit": "d8e0f83f00191df62174b641e9fff055c357f641", + "bottleneck_link": "At fixed helper widths, replace T74 idle counts by the literal T740 cap allocation and rerun native/physical/prefix/outer admission on the changed six-skip word.", + "budget_minutes": 60, + "concurrent_work": [ + { + "scope": "Same composition claimed concurrently; no priority claim here.", + "url": "https://github.com/CrocSwap/integer-mult-bounds/discussions/2612#discussioncomment-18982402" + }, + { + "head": "7c9d6b8b01606fa51032c0166f5ed522c8fa5735", + "scope": "Code-disjoint restore substitution/frame audit; separate from this complete source/native/owner/outer replay.", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/3050" + } + ], + "evidence": "Both literal words and 2,717,280 owner roles checked; exact complete moment and 2,551-pattern packing cap; two fresh current native chains and complete source/physical/prefix/outer release PASS. Authenticated retained parent/native evidence reused explicitly. Stored receipt checks are distinct from rerunning the full release.", + "open_questions": [ + { + "blocked_by": "Maintainer scientific review; no new circuit or packing search is justified by this integration alone.", + "first_step": "Reproduce this exact source/word/allocation composition and inspect the complete bill before any selected-frontier adoption.", + "question": "Can the exact composed finite supplier be independently admitted?", + "why_it_matters": "Its improved conditional endpoint still inherits source/native/physical/compiler/all-size assumptions." + } + ], + "original_card": { + "acceptance_gate": "Demonstrate independence, source binding, positive cases and semantic failure controls. Name the existing checks and the missing coverage. More digits or another equivalent evaluation of an unchanged root is not by itself new verification coverage.", + "allowed_variations": [ + "Reconstruct either a source ledger or a numeric enclosure with a different method." + ], + "bottleneck_link": "Independent pricing prevents unsupported frontier claims and can reveal genuine accounting slack.", + "first_experiment": "Prioritize a bounded independent audit of #2979: reconstruct one joint group and its single-lowering control, check the declared frames/chronology, then trace changed children, idle widths and cleanup buffers into the complete invoice and both supplier caps. Choose one still-missing implication after checking existing audits. Stop with exact unresolved dependencies if full admission exceeds the session; do not launch a new lowering census on an unvalidated premise or substitute extra root digits for mechanism checking.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read #2979 joint rank-7 end-frame proposal and the revision-6 evidence status. Its claimed kappa is not selected. Compare coordinated changes with the losing single-change controls and locate the complete physical ledger; an aggregate moment alone does not validate the mechanism.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "id": "independent-moment", + "methods": [ + "Independently reconstruct a coordinated frame/circuit change and its single-change control, then derive the complete rank and physical ledger.", + "Implement certified moment inequalities through a different exact enclosure method." + ], + "overlap_terms": [ + "independent moment", + "rank histogram", + "exact enclosure", + "2979", + "rank7 joint endframes", + "paired extraction", + "joint lowering" + ], + "question": "Does one changed supplier or assembly claim lack a source-bound independent check of a specific new implication?", + "scope_change_triggers": [ + "Importing the primary function and calling its output independent verification.", + "Promoting #2979 from merged source archive to validated supplier solely from author PASS receipts or aggregate pricing." + ], + "starting_points": [ + "certificates/selected-result.json", + "research/rank7-joint-endframes/README.md", + "docs/research/research-family-status.md" + ] + }, + "outcome": "completed", + "priority_revision": 6, + "schema_version": 1, + "scope_change_reason": "The assigned continued-improvement search found no saving in a bounded noncommuting cancellation screen. New PR3042 changes the local circuit bill but retains PR2979 widths and T74 packing; the separate T740 cap construction closes its remaining integrality gap. This is a source-bound integration, not a new scalar rewrite or packing search. A pre-submission discussion refresh found Petalas independently claimed the same composition at 20:21 UTC while this run was active. No priority or unique idea is claimed; publish the separately executed complete release and input-to-receipt bindings with explicit overlap.", + "scope_status": "changed", + "stop_rule": "Require both literal words, every owner role, all 91 private buffers, exact moment/cap and complete outer release; no stronger kappa claim from a partial run.", + "task_id": "independent-moment" +} diff --git a/research/rank7-six-skip-cap-release/VENDOR.json b/research/rank7-six-skip-cap-release/VENDOR.json new file mode 100644 index 0000000000..64d6c2dc17 --- /dev/null +++ b/research/rank7-six-skip-cap-release/VENDOR.json @@ -0,0 +1,93 @@ +[ + { + "path": "words/base.json.gz", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/edits/FINAL-WORD-base.json.gz", + "git_blob": "2ee02e318c98281a71445b954feccd55c153827c", + "sha256": "7e98f6f2a6c9ce9e7e04b515bd8ce4a4a533ff05f01ea265be2a1a994695260e" + }, + { + "path": "words/extra.json.gz", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/edits/FINAL-WORD-extra.json.gz", + "git_blob": "33ba5f34996a31edd197cb58eca575645575e529", + "sha256": "1396410de482883416fc7f534062ab005b484056b035fdcfa3b5cc065536ba35" + }, + { + "path": "vendor/PR3042-EDITS.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/edits/EDITS.json", + "git_blob": "c2042a37bdba0febb791d39bcb1f9f55de9fb14e", + "sha256": "ebffcc1e57e59439b9678ff8d9be518c457af22ce77235c2fdb46540ab9b9b79" + }, + { + "path": "vendor/PR3042-CLAIM.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/CLAIM.json", + "git_blob": "47a55a7f68efc1d5babec487d09a1f45f95c3221", + "sha256": "adb2efbaa7c16bf66aede2ac739e445e6fa974d5defbff8b70324f4f10632aa3" + }, + { + "path": "vendor/PR3042-MANIFEST.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/MANIFEST.json", + "git_blob": "7018d721f594be3e22e291f44cfdd59e02a43485", + "sha256": "da2b0fbe030ed5981ea105720042f5be8f56803c141e0be326776eb08e379406" + }, + { + "path": "vendor/PR3042-CAP.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/certificates/RELAX-CAP.json", + "git_blob": "f4c94b6241ed4dc20558a95d10bb6ff47071a07f", + "sha256": "ef10b3d6481155eb3cd6f4ce3c82a6919fc5b5bce285d26cef39621989f22d9f" + }, + { + "path": "vendor/PR3042-PROVIDERS.json", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/allocation/PROVIDERS.json", + "git_blob": "c0575e39034932eef6c66b1a7848e4d9771e9bf4", + "sha256": "04c9f2620178322010f7bafb30c669cad0be1426a905275d28a398398b596cd0" + }, + { + "path": "vendor/PR3042-NOTICE", + "head": "84cc406ad91ec53fff329a11a445d7effe564a77", + "upstream_path": "research/rank7-restore-carrier-skips/NOTICE", + "git_blob": "89c20926ea7f803718f751d95989d5a269908efd", + "sha256": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661" + }, + { + "path": "vendor/lift.py", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/vendor/pr3024/lift.py", + "git_blob": "717067dfce61c530205e8dad7ab3e76376f2c179", + "sha256": "ae6c1fee78fbdec26976ca74ca89f6aab2528d763c596f6573132cb54d57cd3c" + }, + { + "path": "vendor/cap_proof.py", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/vendor/pr3024/cap_proof.py", + "git_blob": "28f0995a69fbb003238f5ee8d1acf407bb1b37be", + "sha256": "7c5f362ed21dbbdbd6a0632aebef424213a37c47c86151a0520d097e8f4e321f" + }, + { + "path": "vendor/PR3024-EXCHANGE.json", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/vendor/pr3024/EXCHANGE.json", + "git_blob": "1b1a904ff05e848bfb2793597b9613cc997c3367", + "sha256": "18b3af92dab108945fa7033a2476a8521416b403415a31cdbbe2d1315bb1c827" + }, + { + "path": "vendor/PR3018-EXCHANGE.json", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/vendor/pr3018/EXCHANGE.json", + "git_blob": "1260c8d95f573a574e007038263adf883b5ecbd2", + "sha256": "8a103f643ad12d8074972f41e4359d9487eb8b96fc6849e1a178adb61b36578b" + }, + { + "path": "vendor/PR3030-FINITE.json", + "head": "78e77d820393c6b8648b47af219e991edfcc54e6", + "upstream_path": "research/rank7-t740-release/evidence/FINITE.json", + "git_blob": "0ddf2aba4629c09810b336ce92e4dbfc35fca9fa", + "sha256": "00ee90400fa3f35b19a12b89e4d2a2754a02832d4800351657970dc18042b406" + } +] diff --git a/research/rank7-six-skip-cap-release/VERIFY.json b/research/rank7-six-skip-cap-release/VERIFY.json new file mode 100644 index 0000000000..cc1c34c2eb --- /dev/null +++ b/research/rank7-six-skip-cap-release/VERIFY.json @@ -0,0 +1,40 @@ +{ + "commands": [ + { + "argv": [ + "{python}", + "-B", + "{package}/verify.py" + ], + "checks": "Exact literal word/frame/width and cleanup checks, all-column forward/dual operator replay, all 2,717,280 owner roles, exact completed moment and all 2,551 packing patterns; bind stored native/admission/release receipts and meaningful rejection controls. Full native/outer replay is separate.", + "timeout_seconds": 600 + }, + { + "argv": [ + "{python}", + "-B", + "{package}/test_bindings.py" + ], + "checks": "Four behavioral groups: exact three-argument recipe adaptation, stale/missing recipe rejection, gzip payload portability, and optimized-interpreter refusal.", + "timeout_seconds": 30 + } + ], + "inputs": [ + "research/rank7-joint-endframes/allocation/FILL.json.gz", + "research/rank7-joint-endframes/allocation/ORDER.json", + "research/rank7-joint-endframes/allocation/DISPATCH.json", + "research/rank7-joint-endframes/allocation/PROVIDERS.json", + "research/rank7-joint-endframes/allocation/vendor/PLAN.json.gz", + "research/rank7-joint-endframes/allocation/vendor/TEMPLATE.json.gz", + "research/rank7-joint-endframes/allocation/vendor/independent_owners.py", + "research/rank7-joint-endframes/tools/root.py", + "research/rank7-joint-endframes/vendor/preload_move.py", + "research/rank7-joint-endframes/vendor/audit_local.py", + "research/rank7-joint-endframes/data/WORD-base.json.gz", + "research/rank7-joint-endframes/data/WORD-extra.json.gz" + ], + "python": "3.12", + "requirements": [], + "schema_version": 1, + "status": "ready" +} diff --git a/research/rank7-six-skip-cap-release/evidence/ADMISSION-RESULT.json b/research/rank7-six-skip-cap-release/evidence/ADMISSION-RESULT.json new file mode 100644 index 0000000000..5a40680814 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/ADMISSION-RESULT.json @@ -0,0 +1,382 @@ +{ + "actual_expected_helpers": 408, + "comparison_claim_sha256": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77", + "comparison_head": "e2ca469b08385d3d5e29a918d66dbefaf889e9f3", + "comparison_kappa": "17240352247481048785499999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "comparison_pr": 2969, + "complex_lower": "864868975032139275621/500000000000000000000000", + "dispatch_sha256": "90edc935320dd6264e98dc735d868df3c95f5901c70d7d96171001fcb295cce0", + "external_input_sha256": { + "/tmp/intmult-six-skip740-allocation/COMPOSED-FILL.json.gz": "0608f8cc5f5b2d67de84924540c6166ef109c77af6690c95ef4d9b72f86dad2c", + "/tmp/intmult-six-skip740-allocation/DISPATCH.json": "90edc935320dd6264e98dc735d868df3c95f5901c70d7d96171001fcb295cce0", + "/tmp/intmult-six-skip740-allocation/ORDER.json": "927226d702bf3cada076f4c459da9063c0df7e7154a62955cf75c40cf30215b9", + "/tmp/intmult-six-skip740-full/run/adapters/extension_blocknorm.py": "6e6b8683cc87a84e5410c399b1128eb68694f852a3927cb124067f503ed7d7c7", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pr2857/vendor/pr2839/lift_parent.py": "9a1edd7d4ab4a2f2ac8d15b42b7e40f93653d65026bac59e4c1ce80b486bd60e", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pr2857/vendor/pr2839/reconstruct_replica.py": "5472811c24aef3852dc7e189dff5060076a6c0b25bfde928da50dcfe9b5bdc15", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pr2857/vendor/pr2839/replica_parent.py": "48bdbf28f59d80edb266803ec61bf5e22e8fb5e5a0e2b88004b6039147589bd4", + "/tmp/intmult-six-skip740-full/run/pr2969/CLAIM.json": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77" + }, + "fill_sha256": "0608f8cc5f5b2d67de84924540c6166ef109c77af6690c95ef4d9b72f86dad2c", + "gain": "1425681329043418173/250000000000000000000000", + "kappa": "17297379500642785512419999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "kappa_decimal": "0.0017297379500642785512419999999999999999999998999999999999999999999999", + "native_receipt_sha256": "f022b2c493b999cdfa50fc180b6f5770affadc9bb086bc8de2f3a8777bd6e2d8", + "order_sha256": "927226d702bf3cada076f4c459da9063c0df7e7154a62955cf75c40cf30215b9", + "package_manifest_sha256": "b56bd8257820b7aa9abf355842dbfee2d7269a13f302caf7c53e9a56d6cdecad", + "patches": [ + { + "after_sha256": "52f8b4cec2dab69cbe590e1fd0f7a68e1b35de5a540bd22fd2adfce07a92b46b", + "before_sha256": "faf283eb4edd2e6a1ccb40b3cb3ba30ae54338eaf5ea0a10d84d11d7939502af", + "path": "new/rebind.py", + "replacements": [ + [ + "physical=spec['expected']['live'] + 8 + R + 2)", + "physical=spec['expected']['live'] + 8 + R + 2 + max(len(rd(d / 'CANONICAL-WORD.json.gz').get('zero_buffers', [])) for d in locs.values()))" + ] + ] + }, + { + "after_sha256": "99bef04f24a99088e5c0c9b8f6bbc8386669d8315b8f572d6bbfb932c5d51145", + "before_sha256": "7edb4732b34e5814b27650a55c938626cb50d68f06397744dd4fe451437e90e0", + "path": "geometry_controls.py", + "replacements": [ + [ + " i['complete_invocation_sweeps']=i['bridge_sweeps']=333", + " i['complete_invocation_sweeps']-=1;i['bridge_sweeps']-=1" + ], + [ + " o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);oh=digest(o);i['owner_audit_sha256']=oh", + " o,i=copy.deepcopy(owner),copy.deepcopy(invoice);fn(o,i);assert (o,i)!=(owner,invoice), 'geometry mutant must change actual receipts';oh=digest(o);i['owner_audit_sha256']=oh" + ] + ] + }, + { + "after_sha256": "6cfefe80c02a6c0f243f50ca9e146e1ab1440b84a033d8a71d42be5a5fa27f6b", + "before_sha256": "c43680a2da390f79925547a5ee1919d8a76637cccf98e2c8164b6f667fbc3183", + "path": "verify_release.py", + "replacements": [ + [ + "Fraction(1, 10 ** 3046) - Fraction(1, 10 ** 3022)", + "Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 46)) - Fraction(1, 10 ** (spec['outer_refinement']['endpoint_digits'] + 22))" + ], + [ + "epsilon=1-(1025/1024)e-3080", + "epsilon=1-(1025/1024)e-{spec['outer_refinement']['endpoint_digits']+80}" + ], + [ + "at the one 3000-digit rejection call", + "at the one {spec['outer_refinement']['endpoint_digits']}-digit rejection call" + ] + ] + }, + { + "after_sha256": "1dd56009986eb14dd6603c9193c7ad71dd45c7d005bf71c9cd3f916e66f54d98", + "before_sha256": "9e12909c73d3b3a31a45d801ae76c034510d6306400412e474df79bc4f1dc67e", + "path": "outer/check_ledger.py", + "replacements": [ + [ + "assert (m,W)==(73,66304)", + "T=spec['geometry']['replicas']\nassert type(T) is int and T>0\nassert m==73 and W==896*T and W==BJ['live']" + ] + ] + }, + { + "after_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "before_sha256": "08ca58abff11bdfba721dc56ab8acf06ec1b7c48a8699a0955cf35324680aca7", + "path": "code/witness.py", + "replacements": [ + [ + " with open(os.environ['WITNESS_RECORD'],'a')as f:f.write(json.dumps([key,got],default=str)+chr(10))", + " import time as _wr_time\n _wr_path=Path(os.environ['WITNESS_RECORD'])\n _wr_lock=_wr_path.with_name(_wr_path.name+'.append.lock')\n _wr_deadline=_wr_time.monotonic()+60\n _wr_fd=None\n while _wr_fd is None:\n try:_wr_fd=os.open(_wr_lock,os.O_CREAT|os.O_EXCL|os.O_WRONLY)\n except FileExistsError:\n if _wr_time.monotonic()>=_wr_deadline:raise TimeoutError('discovery record lock timeout; existing lock preserved')\n _wr_time.sleep(.005)\n try:\n with _wr_path.open('a',encoding='utf-8',newline='\\n')as _wr_out:\n _wr_out.write(json.dumps([key,got],default=str)+chr(10))\n _wr_out.flush()\n finally:\n os.close(_wr_fd)\n _wr_lock.unlink()" + ] + ] + }, + { + "after_sha256": "2964ea185a64061d72e4a6c648a48cd0ddbfc7ea8174ecb39be2a2eee52a3be8", + "before_sha256": "8dee5aa1663a70edcf1099a30b72166d89c29fa29ba2025fb5707fdbcc237f83", + "path": "verify.py", + "replacements": [ + [ + "run('lift-parent',P/'lift_parent.py','--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')", + "run('lift-parent',P/'lift_parent.py','--package',P,'--owners',work/'rebuilt-owners','--out',work/'rebuilt-parent')" + ] + ] + }, + { + "after_sha256": "0d8cc021d2401d047aaec79060ec2ea28ba06f12eca8dbf4c60c78bb31975c4e", + "before_sha256": "ebaf637f1f818dac9c0fce0ee3f18df300873105818cea29a8ae9e8b737b5c7d", + "path": "code/witness.py", + "replacements": [ + [ + "PAYLOAD==1<<(192+(GEO['dimension']+1)//2+2*CALLS+4).bit_length()", + "PAYLOAD==1<<(128+(GEO['dimension']+1)//2+18+1330+1+4).bit_length()" + ] + ] + }, + { + "after_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "before_sha256": "bb213d0af12218ff7c9c572717e522d8bbeeb2856b87a253f4a7f44e0fd71f15", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " required_prefix=localbits+input_l2_bits+call_count+bridge_sweeps+4", + " from blocknorm_certificate import certify\n blocknorm=certify(template, {pid:base/'providers'/pid for pid in template['local_providers']})\n assert blocknorm['status'] == 'PASS_TENSOR_BLOCK_NORM_CERTIFICATE'\n assert localbits <= 128, 'actual native scalar/Horner prefix exceeds charged local reserve'\n required_prefix=localbits+input_l2_bits+blocknorm['max_active_depth']+blocknorm['stock_l2_bits']+1+4" + ] + ] + }, + { + "after_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "before_sha256": "02502a217fe8c9e10229075b50745518beac512c48db20e64c3e06514a4da5b5", + "path": "independent_core.py", + "replacements": [ + [ + " payload = 1 << (192 + (M+1)//2 + 2*len(c['order']) + 4).bit_length()", + " require(localbits <= 128, 'measured native prefix exceeds local reserve')\n payload = 1 << (128 + (M+1)//2 + 18 + 1330 + 1 + 4).bit_length()" + ] + ] + }, + { + "after_sha256": "d598a2ac1e2e8eaee14a8c285e0277a7ae44ca6a15bd2b5cfc67fb40844fb387", + "before_sha256": "c5106e0d7a97382677fa228fbade989262347968a0e54acfcf6712aa37e02f47", + "path": "code/invoice_allcold.py", + "replacements": [ + [ + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,", + " complete_invocation_sweeps=call_count,bridge_sweeps=bridge_sweeps,row_prefix_extra=2*payload,blocknorm=blocknorm," + ], + [ + " primitive_arithmetic_margin_bits=4,controller_audit_sha256=", + " tensor_block_norm=blocknorm,partial_cover_margin_bits=1,physical_stock_l2_bits=blocknorm['stock_l2_bits'],primitive_arithmetic_margin_bits=4,controller_audit_sha256=" + ], + [ + "Sum every actual invocation and bridge sweep and take the maximum local scalar/Horner prefix over both orientations of the fixed provider.", + "All invocations and bridge sweeps remain charged. Bound completed-boundary energy by at most eighteen active steps per owner replica, using exact tensor-isomorphic whole-family helper unitaries. Add the full group-indexed physical-stock sup-to-l2 factor and one partial-cover margin, then the maximum local scalar/Horner prefix." + ] + ] + }, + { + "after_sha256": "e051aaa166e01263780d5ae03699690670b597fed6593af4c37a7e978825eb85", + "before_sha256": "0d522b09c7fe6a5e62fe80c28f3eefe733557a82d77c6212e5d4b91ffb7e3421", + "path": "independent_core.py", + "replacements": [ + [ + " prefix = localbits + (M + 1) // 2 + len(c['order']) + c['bridges'] + 4", + " bn=c['blocknorm']\n require(bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['max_active_depth']==18 and bn['stock_l2_bits']<=1330, 'independent tensor block certificate')\n prefix = localbits + (M + 1) // 2 + bn['max_active_depth'] + bn['stock_l2_bits'] + 1 + 4" + ], + [ + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], margin=4)", + "prefix_formula=dict(local_scalar=localbits, input_l2=(M + 1) // 2, invocations=len(c['order']), bridges=c['bridges'], active_block_depth=18,stock_l2=bn['stock_l2_bits'],partial_cover=1,margin=4),blocknorm=bn" + ] + ] + }, + { + "after_sha256": "393323f150d0bb686419804d51cf43d0f58450d2a1e7929725acdd26fdbb3640", + "before_sha256": "2286f00e462ff28abbb3f396095463482a1e063213b9526a7225275980c77eaf", + "path": "audit_mixed.py", + "replacements": [ + [ + "pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)", + "import blocknorm_certificate as BN;ctx['blocknorm']=BN.certify_context(ctx,roles,dirs,source_parent=parent);pending=A.check_pending_axes(ctx);receipt=A.check_roles(ctx,roles)" + ] + ] + }, + { + "after_sha256": "0542dde915af8902324db2f59136da078d5256bfaa8f1510f3e59336be7e2680", + "before_sha256": "f25e1e870df5d5a16a1e367b3df8843cb01644ab4b75895d7939af81e4fcb833", + "path": "code/assemble.py", + "replacements": [ + [ + " assert invoice['global_prefix_bits']==max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())+37+CALLS+CALLS+4", + " bn=invoice['blocknorm']\n assert bn['status']=='PASS_TENSOR_BLOCK_NORM_CERTIFICATE' and bn['replicas']==REPLICAS\n assert bn['max_active_depth']==bn['boundary_depth_bits']==18 and bn['active_calls_per_block']==bn['bridges_per_block']==9\n assert bn['block_width_families']==896 and bn['physical_families']==invoice['physical'] and bn['live_families']==invoice['live']\n assert bn['partial_cover_bits']==1 and bn['input_l2_bits']==37 and bn['local_reserve_bits']==128 and bn['retained_payload_bits']==PAYLOAD\n localbits=max(z['prefix_bits']for p in invoice['providers'].values()for z in p['local'].values())\n assert bn['local_actual_prefix_bits']==localbits and localbits<=128\n assert invoice['global_prefix_bits']==bn['actual_prefix_bits']==localbits+37+18+bn['stock_l2_bits']+1+4\n assert bn['required_reserve_bits']==128+37+18+bn['stock_l2_bits']+1+48G87?18WloyG89S~Gi7KXvJIJKD4K8(6`?_rp%5}BMdl)e zH*| zx7WqFm$7WJf_JjHF-&suo7&{ys=am-(P54Q{XUWo6K$tBCOiEn`^FyVjtz{INsheX zo&4V0%Q4of>)hw>6E;4cyLYH%=uJ>q*ym57E`z};PrAP73XRxjo%qUE9n#pfqu*%A zS?CKXU1!wjlTv?ZVHb1U*47hBU8K8F^@`0_Lj56s{rJf-(KqmOsIR2|O?Jbn5!nCYQHU{X^^v;bsJx0OpGLJ|oA&Kxj=>TQr^2fH2D2yIhlS0bhJ`sh zIQ6zLl27<X>qRU?I$9LV`lHY^M8k`>XeF<}(_*&96*xTb|?N}aJ4IlI@ zqPV$XY&nNy=}?Y~&Dcl}dzQ~ceixi{Ys2Rr+K{5wl#0515$^%s$-bbJioF~z)_LaR zC3WL(vc)IGvo5VQKD7P0#!}B-+a+1$H(xUo!fVxW~{yxL`W(rK{0InjI~ zb8@gd%-P0e@Td83@s+m8_N|fEvq!e_UJ5w1D|FA9M=b5R6}-thTEbhOPxSa4Y-+Io zdVR!;SCK)|VnS0XBzv@K`L~*C#@8wAF{fO9XmZdw_d8@e{Al_tF+X&?<;$Md;K`n5 z&tsvP!{>%7X&X-Fud;GX%(flrXzh`-DsCR%>+G~UtGG3P(&vy{ui=$EBaiKPaU&f5V0Jtl=Y{N7q)W0K#cVzQIpG0Vr%F~3nV zu`g&WKlz8_sO}XDyM%^pm%6eGKYmE|<_`=1Eb3MJneLqBQm>nwT`pYB*ibQ;HOO1z z@>1C4ty;WuvGd!5qy5>*9DPLxou3Z|jqLpK(nYf5pkI%RT%OBB>-U|u%9Blvqx*C? zCdSNb_l}s3_;Ymq?elXosV6JDsz8FUaMm?vLE36Qd0--`(%FMs~Cn?bOYe z9dUpAgVAMTbHC%-e?(M}qtwY^q&i!BeJ38u$ zQaCnbEsj=v+K}-gY_oaRPmxDI3l3)gXcm^Vlckw#3kn+_IJfafkMsCmcDL7cU7rib z9a9Gbzcw?I_Jqk~gczF+JEx^AYhg<a_CI z_iR5=7Fm~?Vk;1vSF33|`CzP*!)2mgxX~(0w}R)=XjIFmx{MDZ{cjmH`grPJ4YHUu z+6VLB{M@)*C$B5eJn?RY(Gas@}P6J30RU)(QQiX};wI}IrG3>OWqkr$_X^f8a; zwWUC-TqU|Ynp7w{doOxaDt<-DP-sAEtY;4RwY`pWwNpGLtu)QNc!m>tKd&Ntu zt)f#DGFlwZaus**@mG$%sN9{`yMkRecifiFvM0acaP{Z7;ksQ7G78O%d*#P-^M6G8 zNRAHt7E5T@>&=diN^CCi6My%_(hl{o$M0&DZnW7Oy1LnZ({_n5hCRiW>=L2I zd)G}i#C~v0)%`hQAC<}BquoAe^=u7oYEfd3VTEp}&IzAY$!f!mG#$A?p+AOb4aBmC z?IJum`ZFf|pPw4}BAhw7;ciNfz2ju$PILdkU0Ewae0rQWKGhxnIoNisHCxPSFt|?5 zWgxP%tiAVLeb2Z}cB_5HKiVAZ4UQS&A^Tng6ur>#>3RFPFE)~iaj22xSl{aKfy9CI?O>lk`< ze#R!B?`|FKvbwXi#cy+pJ);4;FwOR+#@Bmvz0HRQcy(osvp@Sxw&h0`NIYyj{>}Du zQJZaCrE`Y*r$TWbrcv=QgVP%tHn*;9Y5tIxkz6NqH*W8@6%)Jo6)j#{v3W(l-?uc< zHgmYKS+cZot9j(R%_$wJr8XIl8tQsqDVKIxjg?tET<4 zmD1tS+;xMbb=4>0l61@b^wXFlbQ{ODI{8}1O#dTDZ}Iph`N&(yP5BO47aDVVmt z)1<3jW-eB2lesReJ+rc+%SQY!u0g9*AKNGAN-c}|C7;uNINCZq@^>p6qvc<*K8~qL zc9PBgjxWl?%u=lOW_j7AMOvn_GkzG+mv3^8j_~wU`p4=_YaLy$gJS7*&#(_VjlIGx zqZv2sVwb#i=wrM=H~p?_X<%#mM^S$Pffh?-9ZW9qW*{FJkCPV8ahz0Cs_;+wlji+kf3u`FGwWWIj(x{*?NRwd?M4?c(3=t zk@B+0UHQF9C(fql-BBFhW~tElBTq7`ynokT$Dbp%pOY0zzSyq#7PMxxcejNN$vCp$ zc4O*FEeXljgQSda$u_&!DdlO2>pUsU@UD~nVmq&|lPgqsSS2mlPC}>7z<#vtrozNz zV^c9t{(#74Tgj|?r8X-u?*==&T^q}ih8yM1m*o3DXmJ*I8+44#w^L`=S?;4YzVhg< zhKU_zuX-%5f6x-sHqSRv$$rDENk9H0-&?KMF_o?1N2^r{t^aO=wxC9baa+4RcTINP zaMu^h8nT#h&L8a^dvRH-y|po7^v6Kl7psg-Nuw5yA)E6}YIYm+1bFXQZ#AM6u@3Fiuch+xniIToIeA#AV?BMrw z-I6*EYvCu>@?(45>3f_OwAtRAYzh0(J~YzR*J9)3Y}?e@e?gxtY^39L}zuz zg}tNNOV5q{?RtYlB&OG$mT@A4*zi;5s>z9GABVqwyvDhVvmvge#;m#hN-mW%np-|$%(qT z?&c}jwXtDbP}9$WmP)$O)t7AzBRA_~Tx8cU8lL1lE$%z)PcjtWAi>SQRh-=~U^P3V zTp@!`{JdsfO?pP7%Lg0p6@Nc14u8MlDVqDBSL%BHe0%~GK9!c6D@Uqdp3dlUz5v(s zQsGrgeL&r`f-UA~alpp0!*d7f~TH0*jBFSGEd0F&AEUjAtOA;)9C3(7$o=7kS z#70T5cKyxG&1Ku^!+&6;Nm+8JHQ>G@X;F@Wi!y&9?}cNML%cWf57NpGe0-j@`{d}J z;Nn-i?=~0R*|N)gK`Q>Gr?zbDVsnnL>fbdc-_~OB<7RnDqcw;8PM=r%+FIbq>fy*D zf+3Ks`XSsb%fD`ge|vL^$*+QVbo^<68GE!2|J2i5si_W=p9_D#;rYI#@wtFeT&cd= zp`AXtaktFaJ+-&gi+}FTIdQbwUZh_9EaRi#gIzgR{f{N!ACo-qOW1_zr`dH%=34cC zboxtLRD{ej)C{tfx(1x~~~~ zq%K#z_|k0n4l}3Gn}%Eeh1mN4_iKP`j&FzKqg>|ng>cr3A8DMq2>j;H@Y@h)a={V4 zu;$!Dpsgr*Fr;S|rQlayVlccKp4z8B#-yFk-dRh!=i z6a2$Fa#%Houy8;8KRJh4mr!UO`_HU%n2xA>pE5emGPVS!aYJa%gp~RSoL+q23ImB* z!GwWFT(eY~U5N9gIjJx!mORVF!pRXdv$d@c-<;48A97_!I)% zr=N?N1b|WD_Arv${ejarCf|5lSy9_CakTjQFVjPR(|z2<4eklv6%>aN#3ZLT#gb{0yaP1IHBy2nj@xGSf#`ly4*XwnDvx6ZNOw5{K| z2|azHveMM<_}v7(qUiPj8ZDjUp1y2QdU68u_Gvte=v7{6dPW@nzJ{?WWZ=ne_`6yq z|Kj9~CyE-+nvYu-Qr>~`oVhRaO;8gPZBGE;UYtC$T&Lmd*a+zDCUnCyK~JIap5VuF zTfW7~+t|H&0l499p#tRu5_@IG;{jg`Y6O0P={JX+iy?op>oi)bRnmp=mv30#qS4w> zrN7d&M%`26nb8qp2hk z1aDcK{HgBx^mE{!XT1!zz)o%5%mzgYe(amsiQityTd}s8y|FvKj=9%rW}|0cvaE(3AV2Q!3Ou_)J_@FNRO&Cm+B=C$U-EOtl3F0BkIq??bo_DZiy|`b#Zb`%mcxX3Gqu4^@{R#7rQ~6i7ZYQY<~ksU=NQzu*2UVUi1{Yas)pf zb>KS{v6un&=7gRX9Ls`z@UO!=RG8hqem0)_MB=rDZn2MtW^I=5P;<-dU4R%<_(FU+ z&aNVjS?69DxIkLwmnfXx)E^nU3>KqYuX^vwj6X-qEs@$o9S z@Qxh8B}W{7x$uyin?)XSQy0w2L-VaudH8{yzA%cMs?%wh$W@pj)h4%SevJel7q>xg zxJUS*0(U<*(j7)A<(9ZXDdoWXLsH6B5Pr&vNV2vk(LRvy^Wdg_pDIUR_~jEf57%Rz zRrlC#)^w}~>hV~DC14*y;&EK$y6zP-Q74_+7f`gWv^!icCTDG2_(jv>=EPb?tUj1C$4WCCzWu-CMa9)jZLW;O5e*^!Mb3Hy2rX(YKTM7~taO(tgtd zV>{5Ewu{`{tX@lHWn>kB`!7=h?$6EoR%a0r#hl!pc~pxQ-oYgykLorn9agKLYr*x~ z=hxWpJh5F`*S(ONad*PugpMy~ z38*-}Jm6Vm>RC5GCKk2B$}zl8;5jN?_dFyHAGiXwvyYh<1Q^vGrxv7 zAAivYe_9@z=4~7o!;7^$?g^?0pJg<>e5Zy9Ntf%YzvK8}m31K(C^>8={4X3~{J1wK}X@0a)Rahg;H6Kf)| zK7f_m^A(jwv<_^R=3q>(RMivO8?-Vc;Js>U7nGrFG%cl<6=C`$J)f(l9*^uQye3Dg zoT%1RcFW7RgK`2uURb~mZ?REaZ2hjKjB@Z^?OcmAqC>^GxlAhE>9jz$t6$lImm?5q#72f*<< z&T|8K0*9aZ7(WWKAw1+PBejvqS;hknA;FNSGf8y%k4dC4lSI~^Hs90h%n626x;XZI zpB$+%sl8?$i*Hi<`*kc#e*3<-#vC^X{Tpjvh1=*(-k8GZXwKC+QY2c)9J+4EwoX{6 zsouZ~^*GOnGx@1Bx@IhDL-EYFhSA;72j0Qu4%;#|Pe`0t`$1oinBz+9e()(d>hok0 z1jOOd@kaP4r8SHmO&=ibw5n}6TOT5?;Dp2B5?kl%v0uDIfD1U8Ef4j2AlVd!ei}dI zExdo6sG- zOWpn8Fzl6&LQ*oy(-)qRl(Gno8-yHPMdWA{k$&l2zdI#wN*kWgGjb|fE97_(KWIdiuIJ}17t}>*v;=Vh%v>QP} z9%$6}?UZZO?^Nm!@Hjt!XY-Ueo0@&h@L{ZrrDSa`(I%*7!b_6c0U~3LGr}<$R@?Hm zKEyEiHHCU-r_k$)nH1Xo?-cr<9*~`@HKvR#q)d1SEFKc|0CgVWkam7d++>*^Fua~X zxdT%u_ke|ra)4!n;SV7x*#jVHavU$ZC74LCI0+FE0L+Pua%q^Tcjx3#=NZT$ZfYn* ztR0{`XX*Nc8C~D;LR%*1qx;T!>7041$sl*_7m)i5LYM+_2mc%7p8N^q0K4)gwkgRi z%>RP;hIPoKGLcB9sX7#k<<6wiAEAyYcQYtQ`UT}?jtEfn*CPs~k;BjF<|>%C`kE)V zyP-V0A6O9T7o|lnT=JAoV7UQ{=0bU{Gi&)g3=@~I7>K(WQd7O3FGpAK1!&#lIXLnaPT7KDhA2wd4lP=PL^G%@+OL-_%FKkWW zz()zL`;KS%`VCfH^6D$N$EFDg7lklag3Dq`xet z173{AjM`;*F%L2Z#K`7MSrx2KM;ti$9F95c*neA1_?esG#ZLABCck)lWf|p1P11{` zZ@Z7oqcN(s=j2m>1Mk@n{*AO)B|BYVRV90&MjMh7FUVqLMJR{*O8r>=-a?F!VVtmi z2pFFUkK8_|h!Tam?ZUBAiUQABISmrG1xSmoP}sMc+w%D~7R+D03B24~+>y)u ze7z#=c&V8gSbE4VAA#ii#Q|WbsWcELjx^Tz7;0pO1#ECL820rL=lWxS)M9|F!vI+t za8ewIkelnbi`*Vf=cVBDwt=MfF6g|;1Qnh_%-rU8Nb%=fv!ku~2l0LA@%e=$I7hl_$!_w@`m)n=+^`8;42_huo3@nvzM40?a-iWaHZN7XjBP~sG z2{VJ?syx`)e_pB66?DH+2S!8$3~uSY$3= z0A%cf4Ckxm+sS-tedwcJAZ+*HWkZj9I}awre7^K{Sx&rztf*8T&@sC+hkt`0|Mvls z?(hj9L{^GogboQY4bbGW);YL6IEEWkd%4Wy4$(l zB>dc0lweqk!2mE~gfId@bC(DjX>xhkXD3`<3CE`V0gjEmGIYt2mKE~SqEbs4<>?C4 zLFn+Q^nuVRrqmXufCzMrw@+7pf~L<@f1uIKL*(lJb#C5Dwk8^4wzRO+6;gOCm8l|wVh-Ide%_^T-FA$ zf^PHmOTKKdP*YW2iYN0k>m}p@4$rAXjZn;ye(9Ll7dxIVa|kD_F!?fSBzjun1wr2V$9#_DA5Dt>Ta! zQdAriu)s<&{)5zH>Jd$$9t?hB6b`yR4g)C$n1rk*Ej?FF3{^yk|J=&bi@iTz2MZ0Y4w@BZ6c(DRDe~>&B zI{Xc_fubB9Vp>1VlcvTpjRwge8YDID%xn#i( zhL&3xEoQ41)*Xij65a~L<5Py6m{q_oCXh#Rov??)Sq8tLX)tk zi=J!swTd_>mttM=(qfrSRMNN8tEi+kP}^!~&$}+&wos40uw|j1_Yfx8{-QDfUul?|1qfNyS_8eCL}Gh9>+JS;c)%0*=5@?DO8iWhI4O=xCplbf=~&XxU0vaHfAX_t!R?OsJbDs|5%)g`$(wT!t`Y zu3|6XL0%$9L4v*YO@ikbUc6qp&riC~_B3>oZ&O?aqJIFs&!;{GuC_b6bOkMUbPNAS zzR!t%g+&Wtxy^dMq~|hsW8e70oART_H^s^-7R7UN8ze4gaT8s!N1BVz^7--rv=x{F z@(l#!7Z$cJWW}9hWsu+bQcp*({w6f-5(G|yGjslcAdS(51A<_l#d$>#Mj4$c#ebmK z3jVd|&0VDv-^9i3$;;C$rXj%(g=^>`7OsmI$)7V-xR?Tjrv0U*iXdB?{sGx)bsh^> z56afBPE)cK6zj7{O5vhVCx#;VMbSaY(K?#0AvUMCNadNC@VOgqO1>;A+hSEYZRGoZP{|5O(zp?skgw(3dydNl=;8@mo-e2*^wL8IjUn||OgQpEVn6)$gj;Ievw+PoewQK6kMxj51HS8G5BV$}>rnO#h8I;B|-LRlpm_xoF}HB-_Lp$3^tgw;$XM2k&sYJepm+7j9~HF(=%LilK$3O8X2XY5Mv=*e$i!N0n`0VRmc3 zst(ll1N+sN3zKO3b@rp@NT_i+umg>BbVmN>c5nLr@S!+wG%pXeQDG>MYB5$OW#t(H zzj2DdCjc2wEYFdHH)IQW7#;#a_$sv9X&I2P3}Ko0P_lpQ3E`OJ32rC8>>&EW`h&)= znPbPF1gUaHuG56gt6NjZX~(ANx8Jw8ph_7GK;*fPAbeDJqTbqxdTaG%ney>7K#tP4 ztYl``4*@8t{W<`SqEY@kjBhoaumge(}4zVB`EM z;-H8tNHPVann318prEK+@{%PCrha|n1q zuy5d~az}z`2P%>WRV376oE4#z;kc0qYARR`IlpMRu+PsT^;wO4#Q3J0s@##y>ack= z7dd&cRzel|%Xr_`;FQ)6}ROki&DfFhb<5cJ!I@>x8dRDVR zk9NZ|;Cr2CrbwTW4^DXGChYvs9?^x7XYg$QVwnW3wQx39lkNe7(O64Qo<0KGdSOBP zSym_)XIbgx)G+#_P{*ku=zS|h&?_W#-0In&2PZif^gdNu#Ej=*;58C~*NuVKh=Hdy zH}FAH7yRHPu|yl7RoHE?2a&LH&?y>)gFc^ z9V?)Do~{EX#&1k~!oMJ#C%S`-atq(8OK`8|_BnXOk8Xn%1&PCLy&YNTz&y z_ASe!zSsX>EaI;gCBi&VX(3cE5apIcbA3*^P5GtVp2eh%B9c~wC7@)92x|b~UdGEb zfg65Ih6K?4b5$K$Rfu-V+RGG(F`s20DO}BuiEtu#5sd6sFO&6?CfOc68tPx-4;;@( zNuI8dje!mr4^kqGP>nHNX`Y$GH0gHi+$#lNMVS@(_H^QRsq&+v#)Q zRnJ--Z+|AeJz~XMR>AjfzMWN2Xdj(C2Q^o*>M{r{L@X;@($*}5&07O-SBW-)GH{}r zo2UxYL|4j?UWfwvZ6hKPIx^EU4}CTXNbe;~z(I%+XtZE6$+n1D@wWSg02m|Q>1dt3 zfSSAXbKkx2PBiQI(WkSf5m^|q=ORB}@SclXPDOMfO|Jq}}6%;H_3X1*^=JTaJ1b)hovi5Si+s z8$opVrl=l(wyC7MZznOi%Wg4jWVFe>A}mi`_s7!UW`d6{vU*1xRu%(@EHkS zm$M?CB_MZ2Jj6sAR$oJ`en?mlv{G&!NAH`cwp!s{0!i(7hs&;y4dAnW+V&_~VY0VK=s; zz4G4>YbU<#z9Fz>ElFs-A~iyG6Eoe0gDI%ynCA$r`|I$sAm*P%YW#%DN{D#M(s5U_ihGdORsi_%hwT`IO zN^mafqvJxZnl5|vdE(T7w7`r`+CsRl1d}-ypkPtSp=qDzPZpr+@R*G3j^VMRvT3bB z|F!_Z;`!AAWQQla&BvG743D9|U$?#!h@}b;%UUFs=@CdQ)#;&3`A5tlmT^cd>U{Gq$I@g_-F-czpLBX2A z3J{XXTEuz#$#G7k6Eq8E(Fsk&z(7>G(A<`_$0%okCa9>^RX7p?Fra+hynQvfdAEg~sRT zY9K^`cv+@x0{>xmS0oHp&X4U{2q_#12jv?th79&9o|%|^155x++ui@$Q1|THxPMkd z6B`wu`&5QcT=IqSfGZ?}0DdrdKpX}+QYg%wITQvu z9L0-cz#NlKKy;@@bWcY}5C4eh{yRsEY;-eJU5g(*d^%Q&o$(1Uzw}iGpsbVVJ)}i> zqou$rz{Yku=I}KXHx$)OCr5<&*Ec|znKB_q#9|hJ=UlQ0d}y+0qi_O>XgfuSwgcr9 z>g+j(I)m)6ErL2qXtv+j_cPQP5FTVFL7n60Q0LPKQGip_WI<5T7wSc&S+@kPN)em_ zP6JDH3Ra+LU}uT>dpHW@$WN->;>y^GTo^?Qiv3SMHm;@)GJn7Ly637x7>NPFrD z{t`ozq;e)(F=9mlYfS$A@Xlm6Ab%$X_^6E(lik2@!8o^8g{R2v3j5onw zejtB&1vPpWe<>3N-xB%DHD~_Thm}|hHJu>PV~9Xcz*;Eea0#aeiR}gJZ2wNe7sCioKnqjMz5uKs^xp_Uuss?c5xy8qq-DGW0S_TfXnA!Ywl#!+ zuPjAkOX&)JzGgM$PW0Kb97yFTd^Tngv0St6@aapnB zM`r^4!XE=2XX^g%0{wT52yyoPa-x62bTu{TZo{;a3{HA+!K7CjG%s_cdKIBA!o58d z@AubGcU*NcvfTNuynx>pb)N&$HRouc(!WtvrYj6FrHLSqU9}N9hn9iH$dZ-;#EzZ_ zUwt52vI@vrtmFh?&_@oa%jwNmz}kVat7(6y`J54!QwLR;M5s}%ZS<(JS*|JIUEd3q zw)#33u(S){VF6plcWCRafbxD6YkYgCF1_5UaiC_a#*dcDMWd_u{3if}y3;}k1|tLr zts(hk>|{FYtM~Fib^x(lnZIfrSebBx((W5c4cn@&Hd)oKkO2b|O1uy4;Q)r;hdPcA z{_jJbT&na_6WR7qXEEsAFPoDOGJqZuE7CqoUTHC_1ySvlA zY^$O-ynv^*5>HEoRD08nWM4pwlYoG}}D@Df;9YsChDpmRLXs_0O6&yh%CJa>Yo_V!O3XX}quvNz31}8& zIPPtuNP~(QY4B#QG-!-p!9ztJW4bmy#snt?q^U#MF>yLWCdQ+4*@ABgO<+(NV)VzBDW@hVhL>HQ4YsUOFkhHVQ=zyd_%FH5ZD-k+)$itH?0gzMN)Nj@zNwbHv zB&k!w0K%OEobcZ`7sWYM3u0q14$CkO>)JKiD3vSs&y|a4#*)=3STe*=;!NcNrZ!W# z=y7m_P^Vx+B5D{S1)@dNu&Wtr|IhS7GV{AmJ)yj7eo@|MDa!kRo;yqe3E!XFo)=Wh z+kG#o-a}R0tiBH`5Liv%zl19=ON*XDHNq$t0AjKlsEi4=;k3$OaX^Iv8U&1y-UrcM!m7%2xw;kl{rl%vpwoVpV^HM?gZ_cCtFzE^Yf$TUp@ z8XS9>%)Lo_@FXqY2K6lA<|)Gd27@TdtVf2cB@X--$R{ZCz4m~)uE z5#;|Yxne%6?Vd<$z^<$nbY=T;8F>nv?F zj0DX1#KcIz3zC}oYqMS6N$c&zCH60puE|`sSo-#p1Dv20G^iIyYfyZAx0SRFM zJcO~E#d~MB;-=9Z?y7DI0YV6^I0V5+&_Z638VG_{jh@cx0!tCMx1i>P+go7tE9k<$ zki1&+H6{m0(7}W*FlwKuUDHB85_=UhLZ33q2)znI`)HvIa%(;XzBFndWkLo))t)tf z@MPMod$vuT_jz*gJNlwnEht02Y&zG0>{f1KT38Sgy8uR1DbpqHhOu~73b^37`9mV9 zda-=T;_E`d&{`jAjNTU9VgSXOLgbezQLb%hgN9ncMXIN3OVOBaC5-9MXiURHaJBCI z-k2sxA>unm+=@VD}h!x0^~K zzgn7ZK$GkjUm8)4@TI#U_kUm`8b>jCMOPi)qh&%B#Z>&Q5^~*1v7Q z&@>MO0zh<6H(&rS&{+h!3sv@)1`PC^DGeA3Ud-IGJ~O*qlt520n`T>ezp_G{Or4qh zn!^e~j{Mt|rm#Y*X;w(I(k(_BdIQX3= z$!ZLyI8=cePPH0szkp#*cxc2x8(te_pzU6WKQZOrjuS*c55JxXBqoSz1ZM6R`gM}N z1yC?wduK?V=HDU2Y)Utx;3jye-13cwW0o^mg}0R?Pocm96J&#L38JA#OsF6mJVp>h z7)V{PmMqnQ{^F$A5HV9G*uirbsgr<6!Vh!b=mv zOOwD6xmm^n@wypf0p^A&#sb{WgQJ}HsHuq7NZ);*e)Z9k-y{}eJrfW0?>at^SkUqL zg%Q?K7$Fq0KXrU6`bxaW6kaOtpE0P97beg{Yef&OFOLxK;0_X{cy7%a1_uAuhNxM? zShKpIW^JqcQ_VsVIdroZfW2WC%B@czw^UI+s*unMr!^meIlO7PwUNx3;CCU2A(bJt z_0NH=&z2l^l(RYaXyVBnsSENS*L@CvNl9JJqbJO++-&F%UwNSf}iMKO77Uc_!Qra zwdczXb-Kc1LXcC%1(;sU1EwB90mss3o=PK|Ss^_DC! zjM;jNWm<1RTZ1xVjw1%djJc?=%e&4wgb+MxFlc7<)-)j`D)H3lrZQpLB}|)kVx2g3 zLpJTEP4~DV<=LjYfopkh^*D4aD4si^^?&ENZ$}eO1qB!63aby^9QB;=Z?V&a{;h#% z9SVNRYz~aJ;bakX>fXMVdIyDABWMGaqCwYAwA`Vy6dxd6lVl7%pzJi6s^S+P>(Vz9NZ6R z{h&rugnFf~lt>3d9xP}W@1L4L45!Rhf+1dH$8-?paNcXWvH`DViP6}oC!GwA8-uvXch(9LHp0#;G@&+N*VGfXu}~7 zJT>J_S3_Btu!qX}0@` z-T=k@JPPionCdcDa+7424Rl604J^<*=7FDR;f@@3`qM9Uz%MEge%efW-T7mBfuS>% zUZajvJQv6{Gm`@ittp9w6ai7&e}~Gfkm-J8G$9vj2MAc#1YtS7=XkGEaA@(_jLbaf09RF z3HuY8dB43`>3R`Qyf>hs_llrB$xw%+#WFx_*@=I{#%c{#uEs6PVT@D_@1;ODT?=oh zaKNGG{~(2MTi-M(q}+6!fP>M=rr)jio1`y;cKeqx5XUh{-XC=$k6-%v2YCj=Fbd_! z;VBUb4glPwT#pT>8f-WLkB2r|GBli&O{W@8#2C;obLAN^KIh5jH7mW?8DscX^I7&m zyS@3t^c_ohyP_6S*hr|h*kk8<3rI+5&paDIR!HVt-a5+tuXe0_yO>8%G{>BIoti0oWj{41|q2H*$&y zKf_;t_}>jjJQr0L&g%woyueQUG5p|L=PVf+Ge<@WQDh|1=J}UF^XyN(1+tYv(83jD zVFI{2UA&Cs5fNMd5dscB`;HBYlVOc_Y}6uL+(#6w0D}0jLJ(2#O}X0ao4w~w%?lPe ztp7JHJcf5T6u%#p1ZsiPw};WyMXWZZn6*unmFQvkoW*-pC5mqKSsdn`UnztUya=T*A_ot}w4ao@Sh>T=0k%s#5t(<>LNh<(hp* z093AMXfAvl{|hEQJo|}>k4fNz3GmQQ%(fBQo4;u;zzswp{!p&mTn&-EKObd)pXDLg zdwkaly#1fjp#C+pPWx7Q!Gx{ zsp9n+*T7l51uZ#iQX1}@!*c9;2$BuQ%r&UL&Y`-$n>w21eIlR#^VHFl_xbD8k)8Ne z1bEGf7v*FtgVMH}Te$w`qZqM&8pYUwAVZ8|I7ye=RWHep59C~T0oZP(1+d-5>&(z1 znVBV>s$0|6C;oU3%$GoK+KmJ`1{fZJ^Cjv(<;gb%fQ?4EDZmhk*Fl`aHG;7jGKHr& z8N}H9?}m<&aCSy$s+s=le4QA~i2Z)Pjv%|}&s;A$Ib~$5C5#NVSw;qmF2cxwNo#7O zSX{u!pf+LzH-p^Y>c#$+EE*so;0}VA#Qqj^exT_^aXheTBC^Pps972Pjb2qY8}MeR z5#nYj>>Ss?!-7U>u&A4q!QxXui<&%OLLQ=lUx!G7d}82EM~@K7mseyR;Srw0{_*tB zcfg%t(?8zZ7*_*RW|RR|J&5s_Q%x1ww?FQp||C(CJbcKQG+DzXnI+I!i z)18xAz;r38b=2eF)X#-Hp8B~E{6SBcW-c1`pAuX+<3tu*jnc~@1b6-rdA*{)(r7 z6YdS7mxCXrbDc#A|0kJsy!|V=$?BU6SyiA82?m3Tm|*`g`vEtw!`v#&Zv82@6n~dn zBmSqz6oYbu0L&YM_X%u+a)ZG14L9VOT#De5DgSfPn)W{72K3q9r)g2Gj`Vt|rAl&d zw zHxR+ZEo@mq_G-*RC2yR|**VST=6l>ZJj%da!u8|LW&_hYlJ0uHaNOW@6!7 zT6}Mw>u2LlQmnTm1f;ZHu|)^fu5lNgW`FaZSw=cKmU?{pb zs(0V*5iT*KdXMPcx)V1Pr8&B^eX8=d)Dj4+Xj5k>`WWK<=H;O`@UWOIll`@;*Z>DZ zG4!c7(ioS}Gc7c}M$bgsqI_|eaH8rH3sHB|h&8-h>ENNB%^oAM+tNuYf&QzxX}mTh zO3(lLvXh>PcPk&hOo{$ophyMDw_YP|$*I(GQeBXm$reFRH4}b8l_XVRoK>a2)ak+YxXz%VRF z;E8N$j2kzd#^r5VnYZ95Y5(hj*mb-qs)C;V@vMQ+r-ow+xa;%gB{WQA*lz8c%y}tz zeEzGKF>S0N5sYl#r>}9Rd!PQu z#OOwi?vjK9^|ZO9cFB;|2tNKJ(#gt8mam{*Tqz>xX_Rp5ak%EjYggzKy4|n95xMKv zSaTHD6+IbMRv&se+W9s?Nb3M}n#9C~wv-jNoRQOqANAn5WaPb(hBa{C;Js&pxN|Xa zYxAC&#;t96W>qiJy1mLy{?IYskjU5jX>#o38H&2KnGYRP&QNf>LhlEkAO@eH#az9_ z^8SMAB?js?)l19^M1`xD)RjLsP*Bl{JCjJdMwM76cGdOvle-UCZ;9226}pP8;AAK+ z$ECe$_0r;&s?|(~Qc5rCrA5N_v8<{jiMoHguer4N%Y98n<98>H!6qgwcwNA7AM#-& zyKawv%Zu{<;_g8KCiR+i2ik%?pJghmy{%t*L2KQnuHB~8vfS6`T<0yhxSg+a^7GE+ z(7rjhR^Zd}Q;n`0ZqeRuNL9*g7-gXG>c6Fd-yw8G_~BPcZT5fj zSm}ckoC+RA%-WXyG*!4g9hY|&B*dBdTbr3&v(z#XjI4n0iWggV%@yXB<6(R3CA_FC z+xN2Gir|NY-Yx)(&?YH}xcOfli_?z6{uruZ^86#eeQ9yGqK2Zeay>unkKcmVf7gW1 za}7Pj0zLD2S5x| z0}Pl{A{Lax;_wc>dZs3X(pAW{BhmwBg)TQ+#nNpYIurM=#2Gq6Nt~4$LzR^;70u3B zkW6kgpO;*jE2`RRuth}0Msg+9R$5^?3%#Y|v{Z@5Xy~XCH{wD=<3*JyAQiH;0@9_J zGxgXFD$BHEH z11c;u=nFrt3yOGl!h18oT}#t(E{3A0pUUcik0AJ~?!%J&cvMea5t66;(%D;&Inyz5 z_OE)Puf8;>;N*R`c2Nz8b8C)6$C#|hc*iar4aZ&M-<^0M@SKpq_ZM*MXlP)_g$T@< z!cagPu{$h!>PsspZ}RR8?IRAhCF_mrq57hR{wpY zMoZ;==9F#cEEFo%6g4kde~6*DyYvV{@v(Z$9{)WDw}>bJdWxhk@Nm^QclXOn(`3k* z+TB!cXOz|gR<6XnIekQkw&mI5z~%F{Upot+s)}d>xFh1Z;I&HLX6H|S6p0i2Rf1ilibeM+ydZi82K46mwoN3s5ydXdXUiDtJfb<(D{O%e9) zWLOJsoAQZ`*N%kY{w}SjUA{tnXEDZn-m}iCCFXuc+L<=#zz07(0HnRrYo z6C3p(9S^n+G;vQnaVDv&2+=+_Itk!34a>x->Z=eB;qWbO@VZoS;lYI#gCaT!(9?oUwiH?IT!P#J+`BGrn8Dv_ED z53IK;YoSaScQMdCO4`bKYh@Au;7JuB-mP9cDoJ{Z!Dq$hD zSHR#V00hF5;6&Dug1lR0>6s21yF=}(LCU90)GRW#M+@9-uKh<)O*3=2xl)s%=u4$0 zebF&(0T~LmDI1b807iB3G<2h4Pa6KTxmL4 zEJ6?6!Sa3;fUV}ig6DF#j0WGo2DVp9ioJI|$4&!SM~2`fqfMnnM*-Tk5!wOJ1LOV; z?KcQ$KZ4M{6QMl?p}l3tAD}&vfcB&VvOtq7DwzA@OcB+iY&GFyP9MFfFLn$fqTC9@ z0>d`Z{8nyxmVW7}nEn8$AYw{afMxXuum;wrb3;0R?T78GQ+)QMzyT`&psQH7@hvn~#K0G%u*ikRNj8_M5;gV!u6Hpk zdL+2zwsbrO_kM_Tk;ubI$SdbiA~6=uQUhZIPzTkEI~G~Sba`12AZWtv2`nZc9%3G- z9ugWc+v9Y(3DJlZ2pE-EdyMNvJR_hI^^*%@s`8Rt62koGHli?o71g-@b3f&>KIW%k z5@V92m_ZVEw7XojnZsrF{E5pXVdb9UGB2(EjO|1cQ&Jz2_z5QQLr7v{-FhZL1^S{d zR|@QOcPK%543O9YHDsIUKeM1V$?Fzu-hKwRGt0JoGpO340Aa?K*z_{QTZ6P9yjx;9 zWKhPbR|I21B3kNy<-qIk;+N}BE-f}&*1JPLurhtoX3N@tL?gEcYY8Bxo%}RQ6MvICeeGr(7t8=~g1n(nwU-0A2syF)s%t7=gvb^$uZTrn zQ3bq0b5E{ojnG-By>A`?3uij_r1@nC!0m!?V? z$;tYummt5OC-25qry6kxJe8r>uU{6we|wS2@*5I%RN$2xA&iWdZ=rj1_;t9CM!q0W zFjBD}d<;AkNgqB0g}*m+5rOH19#q=6W0|`sRj?QQ>*3dRz-oiNv|FC%7%3VhrIx%o z0q_y=5E%@{Aa9T#FcUmiD_k`Ha@VgBeDLMj^Xr#$%iDJVq!Tgsz7|S>{yC7nr>m*} z|3I)Ny`mQOCg&uXG_8bR3`Al#Yu89p?me zXFm-_t<5N*<2K(vf8OMpJLOR)^l5I2czsd+;w{Q)x@R0?dxUnjVBwm`+{vxBAr~mo;ioTe{ z7U>>^-(Vj`xpC4Jz`h#9zU5om3{)}3#f%GpP#6TV-Kux^e_FftaH!Mv-w7SDwVU3O z>9CT**m_G6YImzGBGN(1sgPQyaTts-QJYGotr#NOY)wTer-@-CS!o>Jl7xmFhJ+az zW-w;vcRyd_xOKhnwb$>Txh9_P_j#WCxeuSu=YFacfS&!!Ph%nrMyWLB#h%>~6SC_$ z{B}j78=y?N6~n2I6}}35foo}r0L9LophlSN(A2^J1p@&J?Zo^?zhY@`TY-bC?;WK1|9CmAU+<=N%)turfIP2fg@8F<{wcOXb4JSwcX z@@&oat5e1jx8z~s2E;;!GGC0KOitH0lzHq|gmxH+a3h{RMBD-@j~xD5*)98G*@d+C z;KtCv#+;~*pdUDP8C68;S zb9Jla!?ND)R%~^GnDVv-I^_gkwY<9?Dxcx(25N1BNOls!1*J>}MH5JWt+&D9EVd95 z7XrryxGrb|ulrf9&@FXA@40NH?MHx=b{wfkFw+BIX6-P{?0>gQ(Y>n zQSntq#kZqwZ3B2X^1vmULx$TFb71T2m$Q?XwLI$Wl}#0^Mn4{i11!22K_deLnvYz z*nQ#-IJ?(m-Gz&gZ151JTAAJkOv-lgK_W(R9z4GA>V^$aSVV5_Wkdd3>w=1K)R4X5 zgs^&>4Ar*-tG;i52b@RVwgj+Vh(1)`X`4$?AqHs&jQZUWaGrAW&ZLkvQ&EB_`sB7W z3jAB=*KJ+<7Q@V076|nLa2EMsn7I+d%xFtM zdewGJ%zQ>yH$2HG%zv;h>W2+DR!B9HMokM5BZ$jcg4I}=z;_TSQS)WXwFj32l14=W z)<;Vaup0J3#r@BFq>^F+Unr{27@FNXjAqkP1T%}TJR<};66&a>;CN6tPD9~H{C%=Q z%YTNIgQUHX!%9~%kb6Sj~C+!*2K>aKqKk!dCJLH#W7!Bj+*QxU_iT)z-d^P)Ln zx844|BI80L1pDF0#8Ob5aS8Xio8B;298`#A6iL~II1 zh>a#`9I?Up?x#$P*{qgK3q=$9MS>Bk=|9UABb~Pm7`>nkEANHFH{lvj9WbKq=hgyIS)%Co|+Fhioma zEr(R4F_}poay6m^=W`Jys6mtfJmk4iDRP!kQE6;v1&J^0pO?Zv?9}GE19|~8_11ZB zQCZX&R~C)()R(f{(lAm0J&sl~(kU*Fa)Jg-qsKVGxK==u6DmHW*W}C>gk&chuqgw7|IIrxEk?W}^&fc0iobb>udbb~C3qP1UpYCqe~wPkS^Huv8HtENjhPOt zA~OREeg;NgF>hYM8eoiNVZVMJ!R%iX**7A@lzJrUrah2H(AY7?m@8w9U)0#Ol9II8 zfY~QF2vy~9lya0l19Au9)z%3PlK-e96F6hd|K=cLRYx1K`Kw!}krWNgo^;UB$RQk& zMl;mJ*@K!m7->ZCd)PnD+{TKQ0jgiOkX}(Rs#hHSiU`O#(5XBZ69JoZRzsrF+9Mb# zkavd*WTjgoz!}D_WWs3z*-3TMI}90?#N!w$8v|;7~y+-?$G(F zcc@It{jc6J5T^+kx9!|HhkwNat@|m{-w|ZGV@IEc==VbF@-?bm*HOB`3fLc$ykx+p zdIZ?0jt4d|b7UHC%oePGS%MssmRyru8@K*R>Aht4Nrbg3XE>fHaok6Vqof*@7xj-I z)?%H@%vbgY*4Kilz;FXm!H@26E7TE{l3$>z955rD_~Eg68XeJMbZR4-46V%w5=^_1 z&C%+&@jEu@Kvn5_0^zAfjgEK+l?Jf8#pIz*uL;)Yc?DU(24QkwH4bf?LArgRXaz*^ z<7V|UoUS!Uy0u*a9L^dMxh+He(U#AtNHH>OgK6~l70n#4TTJL9VlMb_Q6cIha-fg6 z5@5y``-sE31=dGgey)8RXlCu(fZw-oLya;?tBFZ<=7E>{fH_(@INCFFu0z1jaSja7 z12c4S%o({g~V|A}ly-Bi=RK*p>m0juGIYI1YGRDv_7< zyGm|i?RrhDja5`VlsrzXJmT|J_xK6oIr$&EN8H`b81OjwqZZVb1)Frh!bR#W%QO8C zfz)}_3Zzb?3cN-i2N6o1FKc%k*ti>k-l>t`VDJ?{uPHQsuTv4|#hBfYzfv%6HO zzHBH#MH8L)kTpz4ncW}5ExCPF7ab3*uewM$knMi$f9xOlCPKH&7g7$}Hxa2n#P1Hg z%q+Cb%+9W*&6qcp-Q;ig-`V(d8GKX9pJDKzcpB8mASlG~AvsFQLXN)TP*&vxBJ#4bA~@DKM8=_;C4Al-^kP1u0iCI$J8NI_wk6x55r2UfkN%MypIdhI}bvRBcOu5WR??$m7+*z@aIrlq8e zo+*3y@mjf0hwe7CWh>oj$%XdKb)hW97QBXWR+qJNpF+du^(@eV+T=h7in1NLxp6BL z>4S>wFup%hF$EwEz05a+j6tKRw;Zkp9=?uOSTT1GUk!;sVV_Rj3-Ca57`CH1hBc(2 zcF!mgpV00ZL&VRI5b>m48GbgNFWINq^MMAr&oav*Wz>f5;l_7lez?X^kOc-ocz=@D zOZL?vY&g5boh}DjBRmM5O}d;yOL}c6bT%21-Cy#u^B~A=(xTUOY!!733I_ zW2n(l0EZlIF%s!y1wW1;yoKgS9H#{ujOZiS&CSBNJdsb=>BSC1xwam-(Kj?V8E^!Csax0`HRFHMo@gPUP$=NRJ;*}qe@q{b$ z5M6bs#`5bpj#{?-98yUBhlA<-^1)~lm5_$To)1dMJGXqem4QyQ0#0<&8#v3O@>`K0 zg0wDGfMt`8BWwmPP9wfsKCb|19O{XkEAGFn4SE7Wcyvs$1($$B<#0!IvLjKzf3cIf zg%qqWos2iu=o{$~v>f+%@YR!9$3wNO<0~<<8=`7V%m`dZV`kXzhqY6j>5Ruk@Za3^ zr2l#ILMia888%qtjFk_-J0Q5=xP}^qqsr-U(`XC``<|_k_*k|!sJ)1znb9oxK=nkoL^NF7}6G?lxYhscpJQ~ zA+Pf7EYosQYVVW^zM4!v39Jj}o@xs)mvtbu+|a2M!Z<5s`1&Xg9tM8h4oU6H{5n5f znRE#L8Wg50LSqH#igV%hV?=FuJ&Md$Ls`WA6KRJNxc9+{>$;uXSMIYEOC0EOGt8z>>^8`_qfz|&(IkyInhjc8cR(I_fbtidtAjoq50G1QQbYYN z*|kA6d@L#gY1~t;O9exBXvPp1I0bZx#%$;kjY0+A7MkkiB$;6BfK-T8qlIRy;yVIP zA)v>C(=4X%n{~V52zYu!$jjXKXNsyj53$cEtP&Cy>)w5DGI>fQNptf}0$%PcTuU4J zHa*?jPmX9P=FP*bWXnAro$9ASN_M{=)vc#U;!{yu{nq^Um zb^09Jx`5Veq=42N!$0H}XbNAGH*jpTm1yrxgbm;R2>ARWd*U$Jvqh*?(r}H`W&{g> zoX@>2@_d==gEQ;Buu_v_3m1+Ecyp67jbxg-Gs}C8=7(#fdlQBtjn1=Jd zrjQVS1=ezSE?VG@(RGZQ!ycIi8D){$-S;dvf7ljguR{v6$M1Q>T2m`#ZUx^>-aRdn zWc|nVRl?Mt7Fuzg!v2j+gJt{?%TBlA-i8vJo5L^D6n2*x(B88Qc(4y%&XLSbF1#FX zY=c?Uv6fQa3Awpv>{u8z`U0@yxb@dV1JWLu)~|B}R|$_WRY0IZ9Ss&iYNev#7OQ;0f*pQzJ=PiqYUZ zD=}Zd_6m;n?GhLQQSbWOGBD`Ot?;Ms&VyAA{sf=$`{mT|h-u@@+c?g1Cb-kECyX=H zncJg|Q!KOUu%%>Php67jvFCRz>3#A%IY3d38s~?PFfn6Li_~ds*4>j8;A-~!{D|x@ z^v$ydIUNJD(q=RuWGDP-Y9u^_zY4$1F@5HW+`1FFH5-m29l5L@o~=;92>@alXAof0Na!C7AvtQuW-Xz;#b2|*zCw?3Q3+b(SA5WOOA5C!|- zN(xi{6nP57AC2N>#oT({A@aJt(4{^CZXJn&4{5Nfg-si+%a}NJ*yv*s)NCaf!aW7Q zJgIf8K4NO>O|r4#i%@}h!;)Dw!lpS(|HH(|O;6`-pFE{gWN~t{DEQkY|2e-v?yNVl z{K0V;?7nwur^qX5Av}D-X$#D>8dU%DQ>N7j6DNfT#1KtnS5%0oxe$H(iyy(1}aJmg>;9a~*66F8RVF*mitVhqog;zwt(ZNmMVx3cNPYhZRk> zh7~Ft1^ebKowx@uE%qZX`)q9W53oD8U)~71mo<7SUpNcdJ}`$GzaZ>KvrWeAAQD~b z_~JGc`2Nt9!;TORZnAZmZ_39B{^kD@=2aM-K;AKCR}4~WGaNGJQ#O_0a)(wUUp$Cx zFwqxxJ435&*pZ%UfeL3I1yhC~Psh)K-#|1Vzi4UPUpW*e*scmJuSLTVTQvaxM8iqyQ0rsdUrS(2Ir@6^YY@E@lsy+ z;^T|;e`6FjnCG<`f4*P!MERmVx!1rWiZa;NTRgAtoykrPm(5vryQ_t5)1o_OCuO;T5LgBo!IWP zU|_IA#C~ah$WGkXrNIk6$ef`l{f3aqs88Q4s^C=i7HL?q7~KNCL}`P>I8V%FTs4+( z6PO|~&P*bb4v6Ve|8DaSD5`4<);;NrP<#<$A3m zk8?sAt{h)RB-&X$d6C1@ys0*vB!34=SLO%fE`ZUS-u*pf0n!*Ef$aNu5=H1B$O)%Vf^&l!nT&VZxD_<2iv}xf zpoq`nMCM2@Hig$`Nb|4K6YBHqjBc1m;oYR4ALZDK>izqcE2ccV+W0U*i$#Caof1Ho zdKyTAvVs;I*1>JtPD`Nj(l`{HBu>wRD54IOb}QuRlk4ro48CeraoO$?&g@jGNaV*RR>X3a9ApaYaK_oqS9el9d5**d zxXs$1f+Pjq!W)|ude1i7Z?HRCnkXOC@S`0ozxz?zV61zB+1;iB;k)>O$_SQmGk#|U zJ7zFEWuUsMzp_e-6VKYmydfz1)HKTnKhuSl;LZ!S2@X1+CC$kgT@GnUhUsUfWtyK!PP`elqAbDc6 z^68;?4p&E2t6q$YYK_UY=!iTLBCcrAyPY+7zM8dQdAXNxn=w-wS;e5U^mujyi?vIt zPcW&P-@h^6^C1zT3rAy7Pc$0&D$*I&l28F+NIVH%Q zOb_>{Pl)RG)BCIKVQmsth* zlGy$}r7%jztIF;&(xB*4lt+6aC&H+PQf|jHUgM{SyJQqEO%FPMh^J_NxV-Lno)T`h zc}gkeZe`W}1doKEz|)s;2}V&kyWpl%qPIm-A3;wT7k49`EUh<`zU|9MkaSaTE87g# z_~gwomtXWOu_bszZl8nnJu|wEDY61iWbXpj{B|NXG2v7MS*_$iP zr%`GOEP87T_{FazpFfwD(l{R0AJ~*Cw&6>PH)UF|caJhfmAOaQ{};Q#E0+<}Cx2M+ zVxqB5QMssqM|qKSDT*j56$|-52nU}9J~osrkj-&#gEEAf$h?(v99;Ri}pv|4L~jHC!g zZF>TR-&0NS@eOz!mzu|x)|N|iNP~Q)ehuZ5HojJGdqm2hhX5~N$NIdwmf%69x+Z+j g)@prTkT32t4GesovsWtKFI74jQ8k literal 0 HcmV?d00001 diff --git a/research/rank7-six-skip-cap-release/evidence/RECIPE.json b/research/rank7-six-skip-cap-release/evidence/RECIPE.json new file mode 100644 index 0000000000..5f0a73080b --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/RECIPE.json @@ -0,0 +1,223 @@ +{ + "changes": [ + { + "flag": "--fill", + "new": "/tmp/intmult-six-skip740-allocation/COMPOSED-FILL.json.gz", + "old": "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-search/pr3042/allocation/FILL.json.gz", + "stage": "complete-admission" + }, + { + "flag": "--order", + "new": "/tmp/intmult-six-skip740-allocation/ORDER.json", + "old": "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-search/pr3042/allocation/ORDER.json", + "stage": "complete-admission" + }, + { + "flag": "--dispatch", + "new": "/tmp/intmult-six-skip740-allocation/DISPATCH.json", + "old": "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-search/pr3042/allocation/DISPATCH.json", + "stage": "complete-admission" + } + ], + "commands": [ + [ + "export-pr2894", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/tmp/intmult-six-skip740-full/run/pr2908/reproduce.py", + "--repo", + "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-worktree", + "--work", + "/tmp/intmult-six-skip740-full/run/parent-export", + "--dry-run" + ] + ], + [ + "export-pr2833", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/tools/materialize_source.py", + "--repo", + "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-worktree", + "--out", + "/tmp/intmult-six-skip740-full/run/pr2833" + ] + ], + [ + "four-kernel-stage", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pr2857/build_overlay.py", + "--source", + "/tmp/intmult-six-skip740-full/run/pr2833", + "--generator", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pr2857/shared_kernel.py", + "--review", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pr2857/review_four_groups.py", + "--candidate-dir", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pr2857/words", + "--out", + "/tmp/intmult-six-skip740-full/run/source4" + ] + ], + [ + "preload-stage", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pm/build_pm_overlay.py", + "--overlay", + "/tmp/intmult-six-skip740-full/run/source4", + "--pm-dir", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pm", + "--out", + "/tmp/intmult-six-skip740-full/run/source-pm" + ] + ], + [ + "parent-paired-stage", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/tmp/intmult-six-skip740-full/run/pr2908/tools/build_channel_overlay.py", + "--source", + "/tmp/intmult-six-skip740-full/run/source-pm", + "--local-package", + "/tmp/intmult-six-skip740-full/run/pr2908", + "--out", + "/tmp/intmult-six-skip740-full/run/source2908" + ] + ], + [ + "paired-extension-stage", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/tmp/intmult-six-skip740-full/run/pr2917/tools/build_extension.py", + "--source", + "/tmp/intmult-six-skip740-full/run/source2908", + "--local-package", + "/tmp/intmult-six-skip740-full/run/pr2917", + "--out", + "/tmp/intmult-six-skip740-full/run/source" + ] + ], + [ + "rank7-overlay-stage", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-search/pr3042/tools/build_overlay.py", + "--source", + "/tmp/intmult-six-skip740-full/run/source", + "--candidate-dir", + "/tmp/intmult-six-skip740-full/run/candidate-words", + "--out", + "/tmp/intmult-six-skip740-full/run/source-rank7", + "--stage-name", + "rank7-joint-endframes" + ] + ], + [ + "declared-edit-stage", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-search/pr3042/tools/build_edits.py", + "--source", + "/tmp/intmult-six-skip740-full/run/source-rank7", + "--local-package", + "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-search/pr3042", + "--out", + "/tmp/intmult-six-skip740-full/run/source-edits" + ] + ], + [ + "derive-closed-adapters", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-search/pr3042/tools/derive_adapters.py", + "--parent-package", + "/tmp/intmult-six-skip740-full/run/pr2908", + "--source", + "/tmp/intmult-six-skip740-full/run/source-edits", + "--retained-receipt", + "/tmp/intmult-routing-replay-20261015/NATIVE-RECEIPT.json", + "--out", + "/tmp/intmult-six-skip740-full/run/adapters", + "--buffers", + "91", + "--source-commit", + "rank7-joint-endframes-pr2917", + "--source-profile", + "rank7-joint-endframes", + "--upstream-head", + "224bd5e56041c40078ff6b5fa7393733a215de5c", + "--comparison", + "pr2917=/tmp/intmult-six-skip740-full/run/pr2917/CLAIM.json", + "--comparison", + "pr2966=/tmp/intmult-six-skip740-full/run/pr2966/CLAIM.json", + "--comparison", + "pr2969=/tmp/intmult-six-skip740-full/run/pr2969/CLAIM.json" + ] + ], + [ + "fresh-current-native", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/tmp/intmult-six-skip740-full/run/adapters/prepare_extension_native.py", + "--source", + "/tmp/intmult-six-skip740-full/run/source-edits", + "--retained-cache", + "/tmp/intmult-routing-replay-20261015/native-cache", + "--retained-receipt", + "/tmp/intmult-routing-replay-20261015/NATIVE-RECEIPT.json", + "--out", + "/tmp/intmult-six-skip740-full/run/native", + "--jobs", + "2" + ] + ], + [ + "complete-admission", + [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/tmp/intmult-six-skip740-full/run/adapters/admit_extension.py", + "--source", + "/tmp/intmult-six-skip740-full/run/source-edits", + "--fill", + "/tmp/intmult-six-skip740-allocation/COMPOSED-FILL.json.gz", + "--order", + "/tmp/intmult-six-skip740-allocation/ORDER.json", + "--dispatch", + "/tmp/intmult-six-skip740-allocation/DISPATCH.json", + "--native-cache", + "/tmp/intmult-six-skip740-full/run/native/native-cache", + "--native-receipt", + "/tmp/intmult-six-skip740-full/run/native/NATIVE-RECEIPT.json", + "--work", + "/tmp/intmult-six-skip740-full/run/candidate", + "--replica-helper-dir", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pr2857/vendor/pr2839", + "--reconstructor", + "/tmp/intmult-six-skip740-full/run/parent-export/pr2894/vendor/pr2857/vendor/pr2839/reconstruct_replica.py", + "--blocknorm-checker", + "/tmp/intmult-six-skip740-full/run/adapters/extension_blocknorm.py", + "--comparison-claim", + "/tmp/intmult-six-skip740-full/run/pr2969/CLAIM.json", + "--source-profile", + "rank7-joint-endframes", + "--comparison-profile", + "pr2969", + "--jobs", + "2" + ] + ] + ] +} diff --git a/research/rank7-six-skip-cap-release/evidence/RELEASE-RECEIPT.json b/research/rank7-six-skip-cap-release/evidence/RELEASE-RECEIPT.json new file mode 100644 index 0000000000..f3b6ed2f71 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/RELEASE-RECEIPT.json @@ -0,0 +1,7 @@ +{ + "status": "PASS_RELEASE", + "kappa_decimal": "0.0017297379500642785512419999999999999999999998999999999999999999999999", + "manifest_sha256": "b56bd8257820b7aa9abf355842dbfee2d7269a13f302caf7c53e9a56d6cdecad", + "proof": "Supplier: the package's own unchanged `verify.py` (retained PR1297 provider and parent admission, owner reconstruction, parent lift, strict T74 admission, geometry controls): `PASS_T74_EXACT_FILL_COMPLETE_FINITE_ADMISSION`, native reuse {'base': 'e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e', 'extra': '7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905'}; its complex endpoint 864868975032139275621/50000000... brackets the ledger's b = 172973795006427855124199999999999999999999999999999999999999999999999999999999999999999999999999999999/100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000. Outer (PR1673 capped phase-cell fusion): regenerated exact ledger (63 strict inequalities: the 62 retained rows plus the explicit main-binding row gaussian_above_main, the fixed-grid maximum kappa = C - 1/F - B asserted, 17 rejecting controls incl. the old g-factor union row, the old linear and old-theta chirp guards, the old 2*beta tag test, epsilon at 1 or at the r0 slack and beta outside its window, larger endpoint rejected by the native moment), independent balance derivation, the exact union-schedule simulation, the (retained, not used for kappa) structured-boundary displacement-rank check, the gauge-free identity/symbol/circuit checks, PR1786's finite prime/underflow controls and 19 exact evidence replays all pass. Conditional kappa 0.0017297379500642785512419999999999999999999998999999999999999999999999 (union schedule outer/UNION-SCHEDULE.md; explicit Strassen boundary tau=45/16 (the structured boundary of outer/STRUCTURED-BOUNDARY.md is not used); gauge-free interiors outer/GAUGEFREE-INTERIORS.md; fine source-prime padding PR1786 at the free point epsilon=1-(1025/1024)e-104, outer/FINE-PADDING-COMPOSITION.md; fixed-grid maximum of PR2180/PR2161 (dataisfire), outer/PROOF-GRID-MAX.md; exact-integer coarse exponential PR2168/PR2184 (dataisfire) at the one 24-digit rejection call).", + "seconds": 959.78 +} diff --git a/research/rank7-six-skip-cap-release/evidence/RETAINED-REUSE-RECEIPT.json b/research/rank7-six-skip-cap-release/evidence/RETAINED-REUSE-RECEIPT.json new file mode 100644 index 0000000000..37b761d7b4 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/RETAINED-REUSE-RECEIPT.json @@ -0,0 +1,127 @@ +{ + "cache_files": { + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/CACHE.json": "2522fdab23e12cd19eb8068838a2b2fc9abff4258e666358173879b672682239", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/STEPS.json": "0548dce7e918b4c3511bcb4c63a7285fd32435bcb6e914b6f2492fb1126b58ca", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/ledgers.log": "2f40f12c67d436dde2ea415ea3e033ec60a9d43cc71427dcc1bf987962da34d7", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local-replay.log": "dd643a58258431c3b07d3b06d9060c49677fa23b4fafc9f10988ed1f6867bd9a", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/CANONICAL-WORD.json.gz": "e38e2136e5a4a75bb843735a59158543eff04bd06384d73752b220d6938af73d", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/CLIFFORD-RECIPES.json": "cf410b60c9e3d9e7f99d94b5b28c4e3ae61c4b32892df4e03257b60fe5a37b02", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/CLIFFORD-REVIEW.json": "ed656d562dd68349a83b1f287eeb2262653956065f5b34a782a5134df9390bb1", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/FULL-WORD.json.gz": "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/INDEPENDENT-LOCAL-REPLAY.json": "39874d664110d1ee85da901e2cd56e7cd0f27e0153813d4608c98122a90815da", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/LOCAL-CHECKS.json": "ef01cb5b6d1779518282c69a20d1dbcdbf57cb89ba616e2101bb209b37d80286", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/LOCAL-PROGRAMS.json.gz": "26c2fd119125bfca1ae655bb8a57df064da250370e60a85e1e8e8c4649e6a904", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/RESIDUAL-ADAPTERS.json": "0102fa3b62b095c14a34d5af95cc321db38e5f5e03a4f226828e8ebf6fdbe20b", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/SCALAR-FRAME-AUDIT.json": "f0b24f3995a67f81db6bf6b45df36e91c3934acd49e66898fc843e4c22adf9bf", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/local/WRAPPER-CHECKS.json": "84a5bc26df5fb70dc12852a868962bcdfad3b85d85408edfd1f343e898a78c0e", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/native.log": "39c99d714ddab83551cc6e05ab7cda0d967c4b200f3f77a3c51263141e717867", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/phases.log": "cb5fb0eb2442c9e5c326a9f1d56220255f53385b9c709fc0ac2b10ad5a9263fa", + "7b0e9fbda32749aabc7e156d9fe09bceb0624a178628fe69e5dfea783462f905/wrappers.log": "74b13cf8570ca2f32ce0018575b1b73e95af77a28e59d09556fec59260bdbba5", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/CACHE.json": "563abeeba301036dff98066c6c74b8334756838be51c8f3f6f1c585535413bd7", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/STEPS.json": "4c5d71b338d02efce7a1424b73509a9075ea2b4fb33374b2c71e45cdbb63a684", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/ledgers.log": "2d9134d3c2bb3e5197292a484f30e7fd58e435bdbc414324ba2f3f830d664ef7", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local-replay.log": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/CANONICAL-WORD.json.gz": "1104842b38ecc58ca2b365610cc33db76bbf360ece292d6288a74ee9696cbf0e", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/CLIFFORD-RECIPES.json": "49437c6094c4393bee059a5cd21548b912fa35671903a99952458200d7c10db9", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/CLIFFORD-REVIEW.json": "1b0e18ba1b81ef7e0d27aa5e0e958445f395915df5805ad64b03ff99908ac6b1", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/FULL-WORD.json.gz": "c197b8d86bc3eb4036a34ae434ba056d6ac0f2ebbe48c796bc406ea065e3609e", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/INDEPENDENT-LOCAL-REPLAY.json": "a57ac0fcaa5247774bec4b37bb44ea585a64ff78ca22569378581342cee8852e", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/LOCAL-CHECKS.json": "c23a2cde2617dd37c6f2097a43c4fef7cf6571964b3f1f460feadc176816a5ab", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/LOCAL-PROGRAMS.json.gz": "e09cd577173aa6a413b4e7efacf85f47dcc043dd313dda6b6366dcf790b7362d", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/RESIDUAL-ADAPTERS.json": "6a807c59d857faed1140f9d7dd4dee863553f7a00a95ddd4601ef4dc8ea93b12", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/SCALAR-FRAME-AUDIT.json": "101f0b96270c44cc74a41e41e6daaafc8a106ad21d2729cabc431d09e5935751", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/WARP-RECIPE-CHECKS.json": "28879154741ca8c3cb9c6ccc161feb5cf13a351abc2cde463cc59e57a4d05d60", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/local/WRAPPER-CHECKS.json": "508fe304ad6bd06c2c80b93b724cbd94368330f1f06f597f20fbcf2db9b4d771", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/native.log": "4488e7b50e8962c46c0fbaef520173f2ae7c92ab34f86962f50bd27d85256686", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/phases.log": "78f715976b5a89ba0ae3faf73842401e2e9eef63a74f80fa284199c7811217ea", + "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790/wrappers.log": "22847743670811f7f5ec80ea71b7c10e5ad6878d2b40734baa78e51c4ee5ddaa", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/CACHE.json": "895fbad4d46db88c76b8930c4538a92f5b9c7351fe7beb9c56e90e3e2dddb5f1", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/STEPS.json": "c5fa1c9e4d664520e7fc5a4f4a0008dafc28214a068f1567989f4159019f3002", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/ledgers.log": "2d9134d3c2bb3e5197292a484f30e7fd58e435bdbc414324ba2f3f830d664ef7", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local-replay.log": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/CANONICAL-WORD.json.gz": "222c5548af24d3560713c3f8f6a4ab90d85e9cd67da9165e7455cb6b82d0a394", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/CLIFFORD-RECIPES.json": "1f92f1a65833690e6e040b84499a96d9f710ab370eb590986abe64eb87e6cba6", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/CLIFFORD-REVIEW.json": "803d32eae5611d37fef441edb232f8b573f20a9efbacce785b789359bbdcf4f0", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/FULL-WORD.json.gz": "d256d5d1ed52b9a7ea50aecd4b30dfbf743b9d4b9c6de350a0e06ea9f3bc0ea9", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/INDEPENDENT-LOCAL-REPLAY.json": "d9eb81fbd9c9fcfd946536b073aee3a2bd3ce3185891be921ea78044b5e8605c", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/LOCAL-CHECKS.json": "c23a2cde2617dd37c6f2097a43c4fef7cf6571964b3f1f460feadc176816a5ab", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/LOCAL-PROGRAMS.json.gz": "e09cd577173aa6a413b4e7efacf85f47dcc043dd313dda6b6366dcf790b7362d", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/RESIDUAL-ADAPTERS.json": "c4dd3cf0ce67c9ef6ab86b051026c0d884c3548dfc6118f047d6f56bb7331352", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/SCALAR-FRAME-AUDIT.json": "66d297e23ec79d0602efbf6852d71d239eebf21caadb4c6a43439eca186168d6", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/WARP-RECIPE-CHECKS.json": "9dd6abcf1535da66dc66ee149dd135a5fadf7b902e34b9a7184189995e2d412e", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/local/WRAPPER-CHECKS.json": "508fe304ad6bd06c2c80b93b724cbd94368330f1f06f597f20fbcf2db9b4d771", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/native.log": "9ceaf63b589f39a7b06c2bcc215a9c18053f3fcf2cb0c5f9cb4c5ce7f25f2bdb", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/phases.log": "7d8d4e0ac74825750cde28ab664784bb37c42857fb37bd475c0904cf26396722", + "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6/wrappers.log": "22847743670811f7f5ec80ea71b7c10e5ad6878d2b40734baa78e51c4ee5ddaa", + "_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/RECEIPT.json": "897c2603412663d6d4b4f49cef6782cbad5aa195a42a2e420e9921077c97f57d", + "_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/RESULT.json": "9778eb7073cfad6f208bf7d563251c3e2b9b28fe9b0e2f0fc8111d67d65fea81", + "_receipts/e0eefc96567fbb45e19e6de0ca295381dbe0e686c08ddc783639b065c7c791d4/STAGES.json": "bafc2e0922ccaede40a2f7f1d1cc9c1ecb00b3740a52e2b73c23dc1b79bbc305", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/CACHE.json": "733443612d88a9d12458573ac20ef73501f4b5dad483f53cf2dba3f3e94f29d1", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/STEPS.json": "322c4684e0731995d83a6e97af772e379933fd32a08b2488c9b00ecabf8df783", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/ledgers.log": "2f40f12c67d436dde2ea415ea3e033ec60a9d43cc71427dcc1bf987962da34d7", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local-replay.log": "dd643a58258431c3b07d3b06d9060c49677fa23b4fafc9f10988ed1f6867bd9a", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/CANONICAL-WORD.json.gz": "f69c0ca2c217eab87a231b67e548cd6491286314b1215e19f0b1d7463afd5e91", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/CLIFFORD-RECIPES.json": "f1b5a509e39293f5d7ffea7b269fd9e5443e625a9286a022caa1fd4b62af8063", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/CLIFFORD-REVIEW.json": "3d88142562d8a920d66c0ff1696f2fbe14c2e967ad6e94b99ef2aa2796d1d98a", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/FULL-WORD.json.gz": "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/INDEPENDENT-LOCAL-REPLAY.json": "70b4b787a5a4529452a58e9ac48826e848748a35b95a9b20c5358f4355705058", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/LOCAL-CHECKS.json": "e52e7feece9cb22e83c1d687c0f98731f8d50b7e8c863732ec662c89453fbcd4", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/LOCAL-PROGRAMS.json.gz": "81d4aefacaa27f2f215e7d35559d5a079ca521f4ca2eb9a9c6a6bd7062179bff", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/RESIDUAL-ADAPTERS.json": "89e5779ba4fcc1b1a76bed05c9b36600bc1dc3c6efd7e623865692ec715c30c5", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/SCALAR-FRAME-AUDIT.json": "ec25630ce0c156a7e44d4499b62349ac0610ee6ad027ad5f549579c8748cc403", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/local/WRAPPER-CHECKS.json": "fc7e24778302326fdacfd08dd3d5e63483cf4539cd5022a6c77f016752fac1a3", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/native.log": "e68d552b5c9da8287d37b6bd4727ca344ed6bfaa2db7c0d8504ccecb2eec1ac1", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/phases.log": "aa622fe55b4b5c0b4b13018c08c9907173d2550db1aa646bf3fb2ca6d04b8479", + "e8e6e78ff7422275c38324499e1f33fb2ecd30de9503aef2b8f1ee80d8c4df8e/wrappers.log": "74b13cf8570ca2f32ce0018575b1b73e95af77a28e59d09556fec59260bdbba5" + }, + "manifest_sha256": "1e75eabffe1ce311cc3bddc05e76118cbdedfc806200a906c57fbc5a5dd213eb", + "providers": { + "base": { + "complete_native_files": { + "STEPS.json": "4c5d71b338d02efce7a1424b73509a9075ea2b4fb33374b2c71e45cdbb63a684", + "ledgers.log": "2d9134d3c2bb3e5197292a484f30e7fd58e435bdbc414324ba2f3f830d664ef7", + "local-replay.log": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402", + "local/CANONICAL-WORD.json.gz": "1104842b38ecc58ca2b365610cc33db76bbf360ece292d6288a74ee9696cbf0e", + "local/CLIFFORD-RECIPES.json": "49437c6094c4393bee059a5cd21548b912fa35671903a99952458200d7c10db9", + "local/CLIFFORD-REVIEW.json": "1b0e18ba1b81ef7e0d27aa5e0e958445f395915df5805ad64b03ff99908ac6b1", + "local/FULL-WORD.json.gz": "c197b8d86bc3eb4036a34ae434ba056d6ac0f2ebbe48c796bc406ea065e3609e", + "local/INDEPENDENT-LOCAL-REPLAY.json": "a57ac0fcaa5247774bec4b37bb44ea585a64ff78ca22569378581342cee8852e", + "local/LOCAL-CHECKS.json": "c23a2cde2617dd37c6f2097a43c4fef7cf6571964b3f1f460feadc176816a5ab", + "local/LOCAL-PROGRAMS.json.gz": "e09cd577173aa6a413b4e7efacf85f47dcc043dd313dda6b6366dcf790b7362d", + "local/RESIDUAL-ADAPTERS.json": "6a807c59d857faed1140f9d7dd4dee863553f7a00a95ddd4601ef4dc8ea93b12", + "local/SCALAR-FRAME-AUDIT.json": "101f0b96270c44cc74a41e41e6daaafc8a106ad21d2729cabc431d09e5935751", + "local/WARP-RECIPE-CHECKS.json": "28879154741ca8c3cb9c6ccc161feb5cf13a351abc2cde463cc59e57a4d05d60", + "local/WRAPPER-CHECKS.json": "508fe304ad6bd06c2c80b93b724cbd94368330f1f06f597f20fbcf2db9b4d771", + "native.log": "4488e7b50e8962c46c0fbaef520173f2ae7c92ab34f86962f50bd27d85256686", + "phases.log": "78f715976b5a89ba0ae3faf73842401e2e9eef63a74f80fa284199c7811217ea", + "wrappers.log": "22847743670811f7f5ec80ea71b7c10e5ad6878d2b40734baa78e51c4ee5ddaa" + }, + "word_sha256": "80e309cc16d0a86a0854d32f4f43e0d856768ea3cf5b6437061b427997ae4790" + }, + "extra": { + "complete_native_files": { + "STEPS.json": "c5fa1c9e4d664520e7fc5a4f4a0008dafc28214a068f1567989f4159019f3002", + "ledgers.log": "2d9134d3c2bb3e5197292a484f30e7fd58e435bdbc414324ba2f3f830d664ef7", + "local-replay.log": "2fac3873f6c1a23bc0393c701003ea73ac06fa077eb049dea0e4e158903ec402", + "local/CANONICAL-WORD.json.gz": "222c5548af24d3560713c3f8f6a4ab90d85e9cd67da9165e7455cb6b82d0a394", + "local/CLIFFORD-RECIPES.json": "1f92f1a65833690e6e040b84499a96d9f710ab370eb590986abe64eb87e6cba6", + "local/CLIFFORD-REVIEW.json": "803d32eae5611d37fef441edb232f8b573f20a9efbacce785b789359bbdcf4f0", + "local/FULL-WORD.json.gz": "d256d5d1ed52b9a7ea50aecd4b30dfbf743b9d4b9c6de350a0e06ea9f3bc0ea9", + "local/INDEPENDENT-LOCAL-REPLAY.json": "d9eb81fbd9c9fcfd946536b073aee3a2bd3ce3185891be921ea78044b5e8605c", + "local/LOCAL-CHECKS.json": "c23a2cde2617dd37c6f2097a43c4fef7cf6571964b3f1f460feadc176816a5ab", + "local/LOCAL-PROGRAMS.json.gz": "e09cd577173aa6a413b4e7efacf85f47dcc043dd313dda6b6366dcf790b7362d", + "local/RESIDUAL-ADAPTERS.json": "c4dd3cf0ce67c9ef6ab86b051026c0d884c3548dfc6118f047d6f56bb7331352", + "local/SCALAR-FRAME-AUDIT.json": "66d297e23ec79d0602efbf6852d71d239eebf21caadb4c6a43439eca186168d6", + "local/WARP-RECIPE-CHECKS.json": "9dd6abcf1535da66dc66ee149dd135a5fadf7b902e34b9a7184189995e2d412e", + "local/WRAPPER-CHECKS.json": "508fe304ad6bd06c2c80b93b724cbd94368330f1f06f597f20fbcf2db9b4d771", + "native.log": "9ceaf63b589f39a7b06c2bcc215a9c18053f3fcf2cb0c5f9cb4c5ce7f25f2bdb", + "phases.log": "7d8d4e0ac74825750cde28ab664784bb37c42857fb37bd475c0904cf26396722", + "wrappers.log": "22847743670811f7f5ec80ea71b7c10e5ad6878d2b40734baa78e51c4ee5ddaa" + }, + "word_sha256": "88e55acb7e274c62fbb0deab7f420d85fde3c2a471735222f0b5d039bc34e2e6" + } + }, + "retained_parent_receipt_sha256": "897c2603412663d6d4b4f49cef6782cbad5aa195a42a2e420e9921077c97f57d", + "source_commit": "local-joint12-refit393", + "status": "PASS_COMPOSED_FRESH_NATIVE_PROVIDERS_AND_AUTHENTICATED_CACHE" +} diff --git a/research/rank7-six-skip-cap-release/evidence/RUN.json b/research/rank7-six-skip-cap-release/evidence/RUN.json new file mode 100644 index 0000000000..cda8653e15 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/RUN.json @@ -0,0 +1,27 @@ +{ + "current_native_providers_fresh": 2, + "full_fresh_retained_bootstrap_run": false, + "ionice_class": 3, + "jobs": 2, + "nice": 15, + "published_controller_revalidation": "PASS: complete inputs and final admission revalidated with published run_release.py; recipe remains identical. Published wrapper adds decoded-gzip portability and process-group cleanup after launch; no scientific source stage changed.", + "recorded_command": [ + "/tmp/intmult-contribution-venv/bin/python", + "-B", + "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-worktree/research/rank7-six-skip-cap-release/run_release.py", + "--run", + "/tmp/intmult-six-skip740-full/run", + "--source", + "/home/jeremydiviney/intmult/build/contribution/t74-double-channel-search/pr3042", + "--allocation", + "/tmp/intmult-six-skip740-allocation", + "--output", + "/tmp/intmult-six-skip740-full/evidence" + ], + "replicas": 740, + "retained_native_providers_reused": 2, + "retained_parent_reused": true, + "seconds": 1879.740661693504, + "status": "PASS_SIX_SKIP_T740_COMPLETE_RELEASE", + "thread_limit": 1 +} diff --git a/research/rank7-six-skip-cap-release/evidence/logs/complete-admission.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/complete-admission.log.txt new file mode 100644 index 0000000000..fb367e77af --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/complete-admission.log.txt @@ -0,0 +1,8 @@ +PASS owners +PASS parent-lift +PASS rebind +PASS discovery +PASS outer-check_ledger.py +PASS outer-independent_check.py +PASS release +PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE 0.0017297379500642785512419999999999999999999998999999999999999999999999 diff --git a/research/rank7-six-skip-cap-release/evidence/logs/declared-edit-stage.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/declared-edit-stage.log.txt new file mode 100644 index 0000000000..621c292a9b --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/declared-edit-stage.log.txt @@ -0,0 +1 @@ +PASS_SOURCE_BOUND_DECLARED_EDIT_OVERLAY 130650ad8833f6df88528c560e4d1cfbae084f4b15a64788a332ddcaff472a17 642 diff --git a/research/rank7-six-skip-cap-release/evidence/logs/derive-closed-adapters.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/derive-closed-adapters.log.txt new file mode 100644 index 0000000000..3808ebf168 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/derive-closed-adapters.log.txt @@ -0,0 +1 @@ +PASS_CHECKED_91_BUFFER_ADAPTER_DERIVATION_R13 130650ad8833f6df88528c560e4d1cfbae084f4b15a64788a332ddcaff472a17 642 {'prepare_extension_native.py': 'd939fb1fc8a376d1', 'admit_extension.py': '1893fa959063f48b', 'extension_blocknorm.py': '6e6b8683cc87a84e'} diff --git a/research/rank7-six-skip-cap-release/evidence/logs/export-pr2833.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/export-pr2833.log.txt new file mode 100644 index 0000000000..000c52bddd --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/export-pr2833.log.txt @@ -0,0 +1 @@ +{"head": "e9307b48d7d1b690939935ecef0f8e524e6d92f4", "manifest_entries": 541, "manifest_sha256": "c8ec4d1b7be08d2ad30730a07392ad9cb6d0222f2c35bef43c9a80a39b16e41f", "network_fetch": false, "source": "/tmp/intmult-six-skip740-full/run/pr2833", "status": "PASS_EXACT_PR2833_SOURCE_EXPORT"} diff --git a/research/rank7-six-skip-cap-release/evidence/logs/export-pr2894.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/export-pr2894.log.txt new file mode 100644 index 0000000000..2bed900376 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/export-pr2894.log.txt @@ -0,0 +1 @@ +PASS_PINNED_PR2894_EXPORT_RECIPE_ONLY diff --git a/research/rank7-six-skip-cap-release/evidence/logs/final-outer.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/final-outer.log.txt new file mode 100644 index 0000000000..ce63b87bf1 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/final-outer.log.txt @@ -0,0 +1,7 @@ +case g=5 L=7: exact tensor product reproduced; sum|F|=28812 = sum|U_i|; g|U|=74035 (x2.57); moves=336140 <= 950796; rounds=5 +case g=4 L=6: exact tensor product reproduced; sum|F|=1944 = sum|U_i|; g|U|=4416 (x2.27); moves=18360 <= 58320; rounds=4 +case g=6 L=5: exact tensor product reproduced; sum|F|=40625 = sum|U_i|; g|U|=90834 (x2.24); moves=459375 <= 1340625; rounds=6 +case g=3 L=8: exact tensor product reproduced; sum|F|=512 = sum|U_i|; g|U|=1086 (x2.12); moves=5120 <= 15360; rounds=3 +PASS_UNION_SCHEDULE +PASS_EXACT_REPLAY 19 +PASS_OUTER diff --git a/research/rank7-six-skip-cap-release/evidence/logs/final-source.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/final-source.log.txt new file mode 100644 index 0000000000..4c5ad52390 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/final-source.log.txt @@ -0,0 +1,18 @@ +PASS fine-engine-oracle +PASS retained-provider-and-parent-admission (hash-checked receipt) +PASS rebuild-words-566 +PASS reconstruct-owners +PASS rebuild-borrow-words +PASS shared-kernel-independent-review +PASS lift-parent +PASS preload-move-independent-review +PASS two-sided-helper408-review +PASS paired-extension-review +PASS declared-edit-review +PASS audit-local-566-base +PASS audit-local-566-extra +PASS rebind-566 +PASS lemmag-labels +PASS strict-t74 +PASS geometry-controls +PASS_T74_EXACT_FILL_COMPLETE_FINITE_ADMISSION 0.001726751123116308 diff --git a/research/rank7-six-skip-cap-release/evidence/logs/four-kernel-stage.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/four-kernel-stage.log.txt new file mode 100644 index 0000000000..257be58c74 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/four-kernel-stage.log.txt @@ -0,0 +1 @@ +{"derived_manifest_sha256": "54dc42f25c1d8b85adcf593c4bf6c0f83f7351388af857812790b8a0b4c3d869", "source_file_count": 547, "status": "PASS_SOURCE_BOUND_FOUR_KERNEL_OVERLAY_DERIVATION"} diff --git a/research/rank7-six-skip-cap-release/evidence/logs/fresh-current-native.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/fresh-current-native.log.txt new file mode 100644 index 0000000000..e8a1b91290 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/fresh-current-native.log.txt @@ -0,0 +1,3 @@ +PASS fresh-current-extra +PASS fresh-current-base +PASS_TWO_FRESH_SHARED_KERNEL_NATIVE_CHAINS_AUTHENTICATED_PARENT_REUSE diff --git a/research/rank7-six-skip-cap-release/evidence/logs/paired-extension-stage.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/paired-extension-stage.log.txt new file mode 100644 index 0000000000..9ca3a42521 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/paired-extension-stage.log.txt @@ -0,0 +1 @@ +PASS_SOURCE_BOUND_PAIRED_EXTENSION_OVERLAY 98d57c82a1c7318be3c330c3b66897844d57232f0aaeaea88fb4bebd0a1bedf1 632 diff --git a/research/rank7-six-skip-cap-release/evidence/logs/parent-paired-stage.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/parent-paired-stage.log.txt new file mode 100644 index 0000000000..de80347a90 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/parent-paired-stage.log.txt @@ -0,0 +1 @@ +PASS_SOURCE_BOUND_TWO_SIDED_HELPER408_OVERLAY 56cf455752722051d598a7da1e5ee700637fbaef09189f534413dbe6e0525a83 610 diff --git a/research/rank7-six-skip-cap-release/evidence/logs/preload-stage.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/preload-stage.log.txt new file mode 100644 index 0000000000..4fa79b5e48 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/preload-stage.log.txt @@ -0,0 +1 @@ +{"derived_manifest_sha256": "4da246899e2c509dd8c6e5af34905c6124ca17671b188e11ac37e36adf449504", "source_file_count": 553, "status": "PASS_SOURCE_BOUND_PRELOAD_MOVE_OVERLAY_DERIVATION"} diff --git a/research/rank7-six-skip-cap-release/evidence/logs/rank7-overlay-stage.log.txt b/research/rank7-six-skip-cap-release/evidence/logs/rank7-overlay-stage.log.txt new file mode 100644 index 0000000000..d058b55c96 --- /dev/null +++ b/research/rank7-six-skip-cap-release/evidence/logs/rank7-overlay-stage.log.txt @@ -0,0 +1 @@ +{"buffers": 91, "derived_manifest_sha256": "751b46364742cbb947f7db07c130ff09085b38b52c520d3b47f2dadc1e21ba80", "source_file_count": 637, "status": "PASS_SOURCE_BOUND_WORDEDIT_OVERLAY_DERIVATION"} diff --git a/research/rank7-six-skip-cap-release/reproduce.py b/research/rank7-six-skip-cap-release/reproduce.py new file mode 100644 index 0000000000..684daf63c4 --- /dev/null +++ b/research/rank7-six-skip-cap-release/reproduce.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Export pinned sources, construct T740, and run the complete composition. + +Fresh retained bootstrap is the default. --retained reuses a source-authenticated +predecessor cache; both current providers are still rebuilt and checked fresh. +New integration: Jeremy Diviney with OpenAI Codex assistance. Exact predecessor +recipes and Petalas's allocation materializer remain unchanged. +""" +import argparse +import hashlib +import io +import json +import os +from pathlib import Path,PurePosixPath +import subprocess +import sys +import tarfile +import types + +P=Path(__file__).resolve().parent +WORD_HEAD='84cc406ad91ec53fff329a11a445d7effe564a77' +WORD_PREFIX='research/rank7-restore-carrier-skips' +PACK_HEAD='78e77d820393c6b8648b47af219e991edfcc54e6' +PACK_PREFIX='research/rank7-t740-release' +BASE='d8e0f83f00191df62174b641e9fff055c357f641' + +def need(ok,why): + if not ok:raise ValueError(why) +def load(path,name): + m=types.ModuleType(name);m.__file__=str(path) + exec(compile(path.read_bytes(),str(path),'exec'),m.__dict__);return m +def sha(path):return hashlib.sha256(path.read_bytes()).hexdigest() +def export(repo,head,prefix,out): + raw=subprocess.run(['git','-C',str(repo),'archive',head,prefix],capture_output=True,check=True,timeout=90).stdout + need(len(raw)<20_000_000,'bounded source archive');out.mkdir(parents=True) + with tarfile.open(fileobj=io.BytesIO(raw)) as tar: + members=tar.getmembers();need(len(members)<500,'bounded source inventory') + for entry in members: + name=PurePosixPath(entry.name) + need(not name.is_absolute() and '..' not in name.parts,'safe source path') + need(entry.isdir() or entry.isfile(),'regular source entry') + if entry.isdir():continue + need(name.is_relative_to(PurePosixPath(prefix)),'source prefix') + target=out/name.relative_to(PurePosixPath(prefix));target.parent.mkdir(parents=True,exist_ok=True) + stream=tar.extractfile(entry);need(stream is not None,'source stream') + with stream:target.write_bytes(stream.read()) + return {p.relative_to(out).as_posix():sha(p) for p in out.rglob('*') if p.is_file()} + +def main(): + ap=argparse.ArgumentParser(description=__doc__) + for key in ['repo','work']:ap.add_argument('--'+key,type=Path,required=True) + ap.add_argument('--retained',type=Path);ap.add_argument('--jobs',type=int,choices=(1,2),default=1);ap.add_argument('--dry-run',action='store_true') + a=ap.parse_args();repo=a.repo.resolve();work=a.work.resolve() + need(__debug__,'inherited validators require assertions') + need(not work.exists() and not work.is_relative_to(P) and not P.is_relative_to(work),'fresh external replay directory') + work.mkdir(parents=True);source=work/'pr3042';packroot=work/'packing-source';pack=packroot/PACK_PREFIX + inventories={'pr3042':export(repo,WORD_HEAD,WORD_PREFIX,source),'pr3030':export(repo,PACK_HEAD,PACK_PREFIX,pack)} + pins=json.loads((pack/'PINS.json').read_bytes());need(len(pins)<=100,'source pin bound') + for relative,expected in pins.items(): + path=PurePosixPath(relative);need(not path.is_absolute() and '..' not in path.parts,'safe dependency path') + target=packroot/path + if not target.exists(): + need(path.is_relative_to(PurePosixPath('research/rank7-joint-endframes')),'pinned main dependency') + raw=subprocess.run(['git','-C',str(repo),'show',BASE+':'+relative],capture_output=True,check=True,timeout=30).stdout + target.parent.mkdir(parents=True,exist_ok=True);target.write_bytes(raw) + need(sha(target)==expected,'exact predecessor input '+relative) + (work/'EXPORTS.json').write_text(json.dumps(inventories,indent=2,sort_keys=True)+'\n') + engine=load(P/'run_release.py','composition_engine');engine.authenticate(source) + materialize=load(pack/'materialize.py','pinned_materialize3030') + allocation=work/'allocation';allocation.mkdir();built=materialize.build(allocation) + (allocation/'MATERIALIZED.json').write_text(json.dumps(built,indent=2,sort_keys=True)+'\n') + run=work/'run';cmd=[sys.executable,'-B',str(source/'reproduce.py'),'--repo',str(repo),'--work',str(run),'--jobs',str(a.jobs),'--dry-run'] + if a.retained:cmd+=['--retained',str(a.retained.resolve())] + env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',OPENBLAS_NUM_THREADS='1',OMP_NUM_THREADS='1') + env.pop('PYTHONOPTIMIZE',None);env.pop('PYTHONPATH',None) + subprocess.run(cmd,check=True,env=env,timeout=120) + recipe=json.loads((run/'PREFLIGHT.json').read_bytes())['commands'] + engine.adapt(recipe,source,allocation) + if a.dry_run: + print('PASS_EXACT_EXPORTS_MATERIALIZATION_RECIPE_ONLY_NOT_A_RELEASE');return + engine.execute(run,source,allocation,work/'evidence') + +if __name__=='__main__':main() diff --git a/research/rank7-six-skip-cap-release/run_release.py b/research/rank7-six-skip-cap-release/run_release.py new file mode 100644 index 0000000000..5c47de9c75 --- /dev/null +++ b/research/rank7-six-skip-cap-release/run_release.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Run the pinned PR3042 recipe with PR3030's exact T740 allocation. + +New integration by Jeremy Diviney with substantial OpenAI Codex assistance. +Recipe, native/admission machinery and all mathematical checks are retained +unchanged from dcharb78, Marius-Paul Dumitrean, Jeremy Kothe, Mason Hale, +Nick Petalas and the credited predecessor chain. This follows PR3030's +three-argument composition mechanism; it does not replace source validators. +""" +import argparse +import hashlib +import gzip +import json +import os +from pathlib import Path +import signal +import subprocess +import time +from fractions import Fraction as Q + +SOURCE_MANIFEST='da2b0fbe030ed5981ea105720042f5be8f56803c141e0be326776eb08e379406' +EDIT_SOURCE='130650ad8833f6df88528c560e4d1cfbae084f4b15a64788a332ddcaff472a17' +PROFILE={1:16376940,2:4741920,3:1594737,4:719280,5:137085,8:53280,48:281903} +LOCAL={1:2433,2:712,3:232,4:108,5:18,8:8} +ALLOCATION={ + 'COMPOSED-FILL.json.gz':'0608f8cc5f5b2d67de84924540c6166ef109c77af6690c95ef4d9b72f86dad2c', + 'ORDER.json':'927226d702bf3cada076f4c459da9063c0df7e7154a62955cf75c40cf30215b9', + 'DISPATCH.json':'90edc935320dd6264e98dc735d868df3c95f5901c70d7d96171001fcb295cce0', +} +FILL_PAYLOAD='57350da6442b107f374eda092a2fe51ea2b5e33a8a60bbd1a471f282cff3e506' +STAGES=['export-pr2894','export-pr2833','four-kernel-stage','preload-stage', + 'parent-paired-stage','paired-extension-stage','rank7-overlay-stage', + 'declared-edit-stage','derive-closed-adapters','fresh-current-native','complete-admission'] + +def need(ok,why): + if not ok:raise ValueError(why) +def sha(p): + with p.open('rb') as f:return hashlib.file_digest(f,'sha256').hexdigest() +def read(p):return json.loads(p.read_bytes()) +def save(p,value):p.write_text(json.dumps(value,indent=2,sort_keys=True)+'\n') + +def authenticate(source): + need(sha(source/'MANIFEST.json')==SOURCE_MANIFEST,'exact PR3042 manifest') + paths=list(source.rglob('*')) + need(not any(p.is_symlink() for p in paths),'regular source files') + # Only the package-root manifest is excluded; nested manifests are inputs. + actual={p.relative_to(source).as_posix():sha(p) for p in paths if p.is_file() and p!=source/'MANIFEST.json'} + need(actual==read(source/'MANIFEST.json'),'complete source inventory') + +def allocation_binding(allocation): + """Regenerated gzip containers may vary; the complete payload must not.""" + payload=hashlib.sha256() + with gzip.open(allocation/'COMPOSED-FILL.json.gz','rb') as stream: + while chunk:=stream.read(1024*1024):payload.update(chunk) + need(payload.hexdigest()==FILL_PAYLOAD,'exact materialized fill payload') + for name in ['ORDER.json','DISPATCH.json']:need(sha(allocation/name)==ALLOCATION[name],'pinned allocation '+name) + return dict(fill_sha256=sha(allocation/'COMPOSED-FILL.json.gz'),fill_payload_sha256=payload.hexdigest(), + order_sha256=sha(allocation/'ORDER.json'),dispatch_sha256=sha(allocation/'DISPATCH.json')) + +def adapt(recipe,source,allocation): + recipe=json.loads(json.dumps(recipe));names=[n for n,_ in recipe] + need(names==STAGES or names==STAGES[:2]+['fresh-retained-bootstrap']+STAGES[2:],'complete source recipe') + changes=[] + for name,cmd in recipe: + if name=='complete-admission': + for flag,old,new in [('--fill','FILL.json.gz','COMPOSED-FILL.json.gz'),('--order','ORDER.json','ORDER.json'),('--dispatch','DISPATCH.json','DISPATCH.json')]: + need(cmd.count(flag)==1,'unique allocation flag') + i=cmd.index(flag)+1 + need(cmd[i]==str(source/'allocation'/old),'allocation preimage') + changes.append(dict(stage=name,flag=flag,old=cmd[i],new=str(allocation/new)));cmd[i]=str(allocation/new) + need(len(changes)==3,'exactly three argument changes') + return recipe,changes + +def validate(run,source,allocation): + candidate=run/'candidate';a=read(candidate/'RESULT.json');r=read(candidate/'release/RELEASE-RECEIPT.json') + need(a['status']=='PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE','complete admission') + need(r['status']=='PASS_RELEASE','complete outer release') + need({int(k):v for k,v in a['profile'].items()}==PROFILE,'exact composed paid profile') + for key,name in [('fill_sha256','COMPOSED-FILL.json.gz'),('order_sha256','ORDER.json'),('dispatch_sha256','DISPATCH.json')]: + need(a[key]==sha(allocation/name),'admitted allocation binding '+name) + need(a['source_manifest_sha256']==EDIT_SOURCE,'unchanged six-skip source') + need(a['native_receipt_sha256']==sha(run/'native/NATIVE-RECEIPT.json'),'fresh native receipt') + need(a['release_receipt_sha256']==sha(candidate/'release/RELEASE-RECEIPT.json'),'release receipt binding') + need(a['package_manifest_sha256']==r['manifest_sha256'],'same admitted/released package') + need(Q(a['kappa'])==Q(r['kappa_decimal']),'same released endpoint') + baseline=Q(read(source/'CLAIM.json')['kappa']) + need(Q(a['kappa'])>baseline,'strict improvement over PR3042') + need(sha(run/'source-edits/MANIFEST.json')==EDIT_SOURCE,'derived literal source binding') + return dict(status='PASS_SIX_SKIP_T740_COMPLETE_RELEASE',kappa=a['kappa'],kappa_decimal=a['kappa_decimal'], + baseline_kappa=str(baseline),gain=str(Q(a['kappa'])-baseline),profile=PROFILE, + source_manifest_sha256=EDIT_SOURCE,admission_sha256=sha(candidate/'RESULT.json'), + release_receipt_sha256=sha(candidate/'release/RELEASE-RECEIPT.json'), + native_receipt_sha256=sha(run/'native/NATIVE-RECEIPT.json'), + scope='Conditional finite source/native/owner/outer release; inherited all-size, compiler, physical, precision and analytic obligations remain.') + +def execute(run,source,allocation,output): + need(__debug__,'inherited validators require assertions');need(not output.exists(),'fresh evidence directory') + need(os.name=='posix','full replay process-group cleanup requires POSIX') + authenticate(source) + allocation_binding(allocation) + recipe,changes=adapt(read(run/'PREFLIGHT.json')['commands'],source,allocation) + output.mkdir(parents=True);save(output/'RECIPE.json',dict(commands=recipe,changes=changes)) + env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',OPENBLAS_NUM_THREADS='1',OMP_NUM_THREADS='1',PYTHONINTMAXSTRDIGITS='0') + for key in ['PYTHONPATH','PYTHONOPTIMIZE','WITNESS_SPEC','WITNESS_RECORD','WITNESS_DISCOVER']:env.pop(key,None) + stages=[] + for name,cmd in recipe: + path=output/(name+'.log');start=time.monotonic() + with path.open('w') as log: + proc=subprocess.Popen(cmd,cwd=run,env=env,stdin=subprocess.DEVNULL,stdout=log,stderr=subprocess.STDOUT,start_new_session=True) + try:code=proc.wait(timeout=3600) + finally: + try:os.killpg(proc.pid,signal.SIGTERM) + except ProcessLookupError:pass + try:proc.wait(timeout=5) + except subprocess.TimeoutExpired: + os.killpg(proc.pid,signal.SIGKILL);proc.wait(timeout=5) + try:os.killpg(proc.pid,signal.SIGKILL) + except ProcessLookupError:pass + stages.append(dict(stage=name,exit_code=code,seconds=time.monotonic()-start,log_sha256=sha(path))) + save(output/'STAGES.json',stages);need(code==0,'failed '+name+'; see '+str(path));print('PASS',name,flush=True) + result=validate(run,source,allocation);result['fresh_retained_bootstrap']=any(n=='fresh-retained-bootstrap' for n,_ in recipe) + result['stages']=stages;save(output/'RESULT.json',result);print(result['status'],result['kappa_decimal'],flush=True) + return result + +if __name__=='__main__': + p=argparse.ArgumentParser(description=__doc__) + for key in ['run','source','allocation','output']:p.add_argument('--'+key,type=Path,required=True) + a=p.parse_args();execute(a.run.resolve(),a.source.resolve(),a.allocation.resolve(),a.output.resolve()) diff --git a/research/rank7-six-skip-cap-release/test_bindings.py b/research/rank7-six-skip-cap-release/test_bindings.py new file mode 100644 index 0000000000..649aa2be9e --- /dev/null +++ b/research/rank7-six-skip-cap-release/test_bindings.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Small source/recipe/portability controls without historical replays.""" +import copy +import gzip +import hashlib +import json +from pathlib import Path +import subprocess +import sys +import tempfile +import types +import unittest + +P=Path(__file__).resolve().parent +def load(name): + path=P/(name+'.py');m=types.ModuleType(name);m.__file__=str(path) + exec(compile(path.read_bytes(),str(path),'exec'),m.__dict__);return m +engine=load('run_release') + +class Bindings(unittest.TestCase): + def recipe(self): + source=Path('/pinned/source');recipe=[[name,['python','stage.py']] for name in engine.STAGES] + recipe[-1][1]=['python','admit.py','--source',str(source),'--fill',str(source/'allocation/FILL.json.gz'), + '--order',str(source/'allocation/ORDER.json'),'--dispatch',str(source/'allocation/DISPATCH.json'),'--jobs','2'] + return source,recipe + + def test_exact_three_allocation_arguments(self): + source,original=self.recipe();recipe,changes=engine.adapt(original,source,Path('/new')) + self.assertEqual(original[:-1],recipe[:-1]);self.assertEqual(len(changes),3) + self.assertEqual(sum(a!=b for a,b in zip(original[-1][1],recipe[-1][1])),3) + self.assertEqual(original[-1][1][-2:],recipe[-1][1][-2:]) + self.assertIn(str(source/'allocation/FILL.json.gz'),original[-1][1]) + fresh=copy.deepcopy(original);fresh.insert(2,['fresh-retained-bootstrap',['python','prepare_retained.py']]) + adapted,changes=engine.adapt(fresh,source,Path('/new')) + self.assertEqual(adapted[2],fresh[2]);self.assertEqual(len(changes),3) + + def test_missing_stage_and_stale_preimage_rejected(self): + source,recipe=self.recipe() + with self.assertRaises(ValueError):engine.adapt(recipe[1:],source,Path('/new')) + bad=copy.deepcopy(recipe);bad[-1][1][bad[-1][1].index('--fill')+1]='/other/fill' + with self.assertRaises(ValueError):engine.adapt(bad,source,Path('/new')) + + def test_regenerated_gzip_payload_not_container(self): + saved_payload,saved_alloc=engine.FILL_PAYLOAD,engine.ALLOCATION + payload=b'{"fixture":"same complete payload"}\n' + try: + engine.FILL_PAYLOAD=hashlib.sha256(payload).hexdigest() + with tempfile.TemporaryDirectory() as tmp: + p=Path(tmp) + for name in ['ORDER.json','DISPATCH.json']:(p/name).write_bytes(b'[]\n') + engine.ALLOCATION={name:engine.sha(p/name) for name in ['ORDER.json','DISPATCH.json']} + hashes=[] + for mtime,level in [(0,1),(1234,9)]: + (p/'COMPOSED-FILL.json.gz').write_bytes(gzip.compress(payload,mtime=mtime,compresslevel=level)) + hashes.append(engine.allocation_binding(p)['fill_sha256']) + self.assertNotEqual(*hashes) + (p/'COMPOSED-FILL.json.gz').write_bytes(gzip.compress(payload+b' ',mtime=0)) + with self.assertRaises(ValueError):engine.allocation_binding(p) + finally:engine.FILL_PAYLOAD,engine.ALLOCATION=saved_payload,saved_alloc + + def test_optimized_interpreter_refused(self): + r=subprocess.run([sys.executable,'-O','-B',str(P/'verify.py'),'--finite-only'],capture_output=True,text=True) + self.assertNotEqual(r.returncode,0);self.assertIn('retained checkers require enabled assertions',r.stderr) + +if __name__=='__main__':unittest.main() diff --git a/research/rank7-six-skip-cap-release/vendor/PR3018-EXCHANGE.json b/research/rank7-six-skip-cap-release/vendor/PR3018-EXCHANGE.json new file mode 100644 index 0000000000..1260c8d95f --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/PR3018-EXCHANGE.json @@ -0,0 +1,126 @@ +{ + "schema_version": 1, + "source_pr": 2979, + "source_head": "be191346391661f4d35fc0d1508d0a6029572576", + "edits": [ + [0,[0,0,13,0,41,0],[0,0,32,6,95,0]], + [816,[2,0,32,6,95,0],[2,0,32,6,95,9]], + [16336,[40,16,3,4,0,9],[40,16,32,6,94,9]], + [20453,[50,53,26,6,5,0],[50,53,3,4,4,9]], + [20458,[50,58,26,6,4,0],[50,58,3,4,3,9]], + [20469,[50,69,26,6,3,0],[50,69,3,4,2,18]], + [20474,[50,74,26,6,2,0],[50,74,3,4,1,18]], + [26450,[64,338,3,4,4,9],[64,338,3,4,4,13]], + [26452,[64,340,3,4,3,9],[64,340,3,4,3,13]], + [29401,[72,25,28,4,0,0],[72,25,3,4,0,9]], + [30439,[74,247,3,4,4,18],[74,247,3,4,4,22]], + [30447,[74,255,3,4,3,18],[74,255,3,4,3,22]], + [30449,[74,257,3,4,2,18],[74,257,3,4,2,22]], + [30456,[74,264,3,4,1,18],[74,264,3,4,1,22]], + [30457,[74,265,3,4,0,18],[74,265,32,6,93,9]], + [30847,[75,247,40,4,4,18],[75,247,32,6,92,9]], + [31281,[76,273,2,5,31,0],[76,273,3,4,0,16]], + [33559,[82,103,12,1,9,0],[82,103,13,0,41,0]], + [33595,[82,139,12,1,8,0],[82,139,3,4,0,24]], + [33967,[83,103,49,1,9,0],[83,103,13,0,41,8]], + [35384,[86,296,13,0,41,9],[86,296,28,4,0,0]], + [44066,[108,2,5,5,98,0],[108,2,2,5,31,0]], + [49778,[122,2,11,4,7,24],[122,2,49,1,9,0]], + [49915,[122,139,11,4,0,24],[122,139,12,1,9,0]], + [50323,[123,139,48,4,0,24],[123,139,12,1,8,0]], + [52434,[128,210,26,6,5,4],[128,210,26,6,5,0]], + [52435,[128,211,26,6,4,4],[128,211,26,6,4,0]], + [52436,[128,212,26,6,3,4],[128,212,26,6,3,0]], + [52437,[128,213,26,6,2,4],[128,213,26,6,2,0]], + [58754,[144,2,18,1,98,0],[144,2,5,5,98,0]], + [66098,[162,2,28,6,13,0],[162,2,11,4,0,24]], + [66100,[162,4,17,6,88,9],[162,4,11,4,7,24]], + [66506,[163,2,65,6,13,0],[163,2,48,4,0,24]], + [67768,[166,40,28,6,13,8],[166,40,28,6,13,0]], + [68176,[167,40,65,6,13,8],[167,40,65,6,13,0]], + [78338,[192,2,19,6,3,0],[192,2,17,6,88,9]], + [78340,[192,4,19,6,2,0],[192,4,18,1,98,0]], + [84180,[206,132,19,6,3,8],[206,132,19,6,3,0]], + [84182,[206,134,19,6,2,8],[206,134,19,6,2,0]], + [86594,[212,98,19,6,3,17],[212,98,19,6,3,9]], + [86596,[212,100,19,6,2,17],[212,100,19,6,2,9]], + [107848,[264,136,26,6,5,13],[264,136,26,6,5,9]], + [107849,[264,137,26,6,4,13],[264,137,26,6,4,9]], + [107852,[264,140,26,6,3,13],[264,140,26,6,3,9]], + [107853,[264,141,26,6,2,13],[264,141,26,6,2,9]], + [109346,[268,2,36,4,1,6],[268,2,19,6,3,18]], + [109348,[268,4,36,4,0,6],[268,4,19,6,2,18]], + [133061,[326,53,23,13,111,9],[326,53,26,6,5,18]], + [133469,[327,53,60,13,111,9],[327,53,26,6,4,18]], + [134760,[330,120,36,4,1,14],[330,120,36,4,1,6]], + [134761,[330,121,36,4,0,14],[330,121,36,4,0,6]], + [144485,[354,53,19,15,58,0],[354,53,26,6,3,18]], + [144490,[354,58,19,15,57,0],[354,58,26,6,2,18]], + [161079,[394,327,28,6,13,17],[394,327,28,6,13,9]], + [161487,[395,327,65,6,13,17],[395,327,65,6,13,9]], + [161961,[396,393,21,14,39,0],[396,393,28,6,13,15]], + [161962,[396,394,21,14,38,0],[396,394,65,6,13,15]], + [161963,[396,395,21,14,37,0],[396,395,36,4,1,15]], + [161964,[396,396,21,14,36,0],[396,396,36,4,0,15]], + [165872,[406,224,32,6,95,9],[406,224,32,6,95,18]], + [165873,[406,225,32,6,94,9],[406,225,32,6,94,18]], + [165874,[406,226,32,6,93,9],[406,226,32,6,93,18]], + [165875,[406,227,32,6,92,9],[406,227,32,6,92,18]], + [167396,[410,116,21,14,39,8],[410,116,21,14,39,0]], + [167398,[410,118,21,14,38,8],[410,118,21,14,38,0]], + [167399,[410,119,21,14,37,8],[410,119,21,14,37,0]], + [167400,[410,120,21,14,36,8],[410,120,21,14,36,0]], + [172176,[422,0,32,6,95,15],[422,0,23,13,111,9]], + [172177,[422,1,32,6,94,15],[422,1,60,13,111,9]], + [172179,[422,3,32,6,93,15],[422,3,26,13,111,9]], + [172181,[422,5,32,6,92,15],[422,5,63,13,111,9]], + [175513,[430,73,19,15,58,4],[430,73,19,15,58,0]], + [175516,[430,76,19,15,57,4],[430,76,19,15,57,0]], + [189539,[464,227,21,14,39,17],[464,227,21,14,39,9]], + [189540,[464,228,21,14,38,17],[464,228,21,14,38,9]], + [189541,[464,229,21,14,37,17],[464,229,21,14,37,9]], + [189542,[464,230,21,14,36,17],[464,230,21,14,36,9]], + [204318,[500,318,19,15,58,13],[500,318,19,15,58,9]], + [204319,[500,319,19,15,57,13],[500,319,19,15,57,9]], + [218754,[536,66,26,13,111,9],[536,66,26,13,111,18]], + [219162,[537,66,63,13,111,9],[537,66,63,13,111,18]], + [219721,[538,217,19,15,58,22],[538,217,19,15,58,18]], + [219722,[538,218,19,15,57,22],[538,218,19,15,57,18]], + [226106,[554,74,26,13,111,18],[554,74,19,15,58,27]], + [226514,[555,74,63,13,111,18],[555,74,19,15,57,27]], + [229431,[562,135,21,14,39,23],[562,135,21,14,39,15]], + [229432,[562,136,21,14,38,23],[562,136,21,14,38,15]], + [229433,[562,137,21,14,37,23],[562,137,21,14,37,15]], + [229436,[562,140,21,14,36,23],[562,140,21,14,36,15]], + [232084,[568,340,26,13,111,22],[568,340,26,13,111,27]], + [232492,[569,340,63,13,111,22],[569,340,63,13,111,27]], + [233782,[572,406,26,13,111,31],[572,406,21,14,38,24]], + [233783,[572,407,23,13,111,13],[572,407,21,14,39,24]], + [234190,[573,406,63,13,111,31],[573,406,21,14,36,24]], + [234191,[573,407,60,13,111,13],[573,407,21,14,37,24]], + [237796,[582,340,23,13,111,21],[582,340,23,13,111,18]], + [238204,[583,340,60,13,111,21],[583,340,60,13,111,18]], + [240720,[590,0,26,13,111,39],[590,0,26,13,111,36]], + [241128,[591,0,63,13,111,39],[591,0,63,13,111,36]], + [243508,[596,340,23,13,111,30],[596,340,23,13,111,27]], + [243916,[597,340,60,13,111,30],[597,340,60,13,111,27]], + [245140,[600,340,23,13,111,39],[600,340,23,13,111,36]], + [245548,[601,340,60,13,111,39],[601,340,60,13,111,36]] + ], + "routes": [ + [[20453,[3,4,4]],[133061,[26,6,5]]], + [[20458,[3,4,3]],[133469,[26,6,4]]], + [[20469,[3,4,2]],[144485,[26,6,3]],[226106,[19,15,58]]], + [[20474,[3,4,1]],[144490,[26,6,2]],[226514,[19,15,57]]], + [[29401,[3,4,0]],[35384,[28,4,0]]], + [[33559,[13,0,41]],[49915,[12,1,9]],[66098,[11,4,0]],[161961,[28,6,13]],[233783,[21,14,39]]], + [[33595,[3,4,0]],[50323,[12,1,8]],[66506,[48,4,0]],[161962,[65,6,13]],[233782,[21,14,38]]], + [[33967,[13,0,41]],[49778,[49,1,9]],[66100,[11,4,7]],[78338,[17,6,88]],[109346,[19,6,3]],[161963,[36,4,1]],[234191,[21,14,37]]], + [[31281,[3,4,0]],[44066,[2,5,31]],[58754,[5,5,98]],[78340,[18,1,98]],[109348,[19,6,2]],[161964,[36,4,0]],[234190,[21,14,36]]], + [[172176,[23,13,111]],[0,[32,6,95]]], + [[172177,[60,13,111]],[16336,[32,6,94]]], + [[172179,[26,13,111]],[30457,[32,6,93]]], + [[172181,[63,13,111]],[30847,[32,6,92]]] + ], + "changed_pattern_bins": [[23,13,111],[60,13,111],[26,13,111],[63,13,111],[3,4,4],[3,4,3],[3,4,2],[3,4,1],[3,4,0],[40,4,4],[13,0,41]] +} diff --git a/research/rank7-six-skip-cap-release/vendor/PR3024-EXCHANGE.json b/research/rank7-six-skip-cap-release/vendor/PR3024-EXCHANGE.json new file mode 100644 index 0000000000..1b1a904ff0 --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/PR3024-EXCHANGE.json @@ -0,0 +1,559 @@ +{ + "schema_version": 1, + "source_pr": 3018, + "source_head": "ca7113157d7c959fdfa9d7cd17ef92d3877070d0", + "copies": 10, + "indexing": "copy * 271728 + base_index; lifted time = 10 * base_time + copy; owner = base_owner + 74 * copy", + "edits": [ + [447,[10,39,40,4,4,0],[10,39,410,4,4,0]], + [26858,[650,338,40,4,4,9],[650,338,410,4,4,18]], + [34068,[830,204,49,1,3,0],[830,204,262,4,4,0]], + [34097,[830,233,49,1,2,0],[830,233,188,4,4,8]], + [34098,[830,234,49,1,1,0],[830,234,114,4,4,16]], + [34100,[830,236,49,1,0,0],[830,236,40,4,4,24]], + [109754,[2690,2,73,4,1,6],[2690,2,654,1,3,0]], + [109756,[2690,4,73,4,0,6],[2690,4,654,1,2,0]], + [199512,[4890,0,72,13,111,0],[4890,0,35,13,111,9]], + [201552,[4940,0,35,13,111,9],[4940,0,35,13,111,18]], + [201960,[4950,0,72,13,111,9],[4950,0,72,13,111,18]], + [208286,[5100,206,26,14,0,0],[5100,206,627,13,111,0]], + [208694,[5110,206,63,14,0,0],[5110,206,627,13,111,9]], + [210540,[5160,12,26,14,0,9],[5160,12,627,13,111,18]], + [210948,[5170,12,63,14,0,9],[5170,12,627,13,111,27]], + [211362,[5180,18,31,14,0,0],[5180,18,31,14,0,14]], + [211770,[5190,18,68,14,0,0],[5190,18,68,14,0,14]], + [216240,[5300,0,26,14,0,18],[5300,0,627,13,111,36]], + [216648,[5310,0,63,14,0,18],[5310,0,26,14,0,22]], + [219504,[5380,0,35,13,111,18],[5380,0,35,13,111,27]], + [219912,[5390,0,72,13,111,18],[5390,0,72,13,111,27]], + [227666,[5580,2,31,14,0,9],[5580,2,650,14,35,6]], + [228074,[5590,2,68,14,0,9],[5590,2,650,14,34,6]], + [244322,[5980,338,31,14,0,17],[5980,338,31,14,0,23]], + [244730,[5990,338,68,14,0,17],[5990,338,68,14,0,23]], + [244965,[6000,165,35,13,111,27],[6000,165,26,14,0,0]], + [245373,[6010,165,72,13,111,27],[6010,165,63,14,0,0]], + [254593,[6240,1,35,13,111,31],[6240,1,35,13,111,36]], + [255001,[6250,1,72,13,111,31],[6250,1,72,13,111,36]], + [263953,[6460,385,35,13,111,40],[6460,385,734,14,0,6]], + [264361,[6470,385,72,13,111,40],[6470,385,697,14,0,6]], + [265527,[6500,327,31,14,0,26],[6500,327,31,14,0,0]], + [265935,[6510,327,68,14,0,26],[6510,327,68,14,0,0]], + [272175,[11,39,114,4,4,0],[11,39,410,4,4,9]], + [298586,[651,338,114,4,4,9],[651,338,484,4,4,9]], + [305796,[831,204,123,1,3,0],[831,204,336,4,4,0]], + [305825,[831,233,123,1,2,0],[831,233,262,4,4,8]], + [305826,[831,234,123,1,1,0],[831,234,188,4,4,16]], + [305828,[831,236,123,1,0,0],[831,236,114,4,4,24]], + [381482,[2691,2,147,4,1,6],[2691,2,654,1,1,0]], + [381484,[2691,4,147,4,0,6],[2691,4,654,1,0,0]], + [470832,[4881,0,109,13,111,0],[4881,0,72,13,111,0]], + [471240,[4891,0,146,13,111,0],[4891,0,109,13,111,0]], + [473280,[4941,0,109,13,111,9],[4941,0,72,13,111,9]], + [473688,[4951,0,146,13,111,9],[4951,0,109,13,111,9]], + [480014,[5101,206,100,14,0,0],[5101,206,26,14,0,4]], + [480422,[5111,206,137,14,0,0],[5111,206,63,14,0,4]], + [482268,[5161,12,100,14,0,9],[5161,12,26,14,0,13]], + [482676,[5171,12,137,14,0,9],[5171,12,63,14,0,13]], + [483090,[5181,18,105,14,0,0],[5181,18,105,14,0,14]], + [483498,[5191,18,142,14,0,0],[5191,18,142,14,0,14]], + [487968,[5301,0,100,14,0,18],[5301,0,63,14,0,22]], + [488376,[5311,0,137,14,0,18],[5311,0,100,14,0,22]], + [491640,[5391,0,146,13,111,18],[5391,0,109,13,111,27]], + [499394,[5581,2,105,14,0,9],[5581,2,650,14,33,6]], + [499802,[5591,2,142,14,0,9],[5591,2,650,14,32,6]], + [516050,[5981,338,105,14,0,17],[5981,338,105,14,0,23]], + [516458,[5991,338,142,14,0,17],[5991,338,142,14,0,23]], + [516693,[6001,165,109,13,111,27],[6001,165,100,14,0,0]], + [517101,[6011,165,146,13,111,27],[6011,165,137,14,0,0]], + [526321,[6241,1,109,13,111,31],[6241,1,109,13,111,36]], + [526729,[6251,1,146,13,111,31],[6251,1,146,13,111,36]], + [535681,[6461,385,109,13,111,40],[6461,385,660,14,0,6]], + [536089,[6471,385,146,13,111,40],[6471,385,623,14,0,6]], + [537255,[6501,327,105,14,0,26],[6501,327,105,14,0,0]], + [537663,[6511,327,142,14,0,26],[6511,327,142,14,0,0]], + [543903,[12,39,188,4,4,0],[12,39,484,4,4,0]], + [570314,[652,338,188,4,4,9],[652,338,484,4,4,18]], + [577553,[832,233,197,1,2,0],[832,233,336,4,4,8]], + [577554,[832,234,197,1,1,0],[832,234,262,4,4,16]], + [577556,[832,236,197,1,0,0],[832,236,188,4,4,24]], + [653210,[2692,2,221,4,1,6],[2692,2,728,1,15,0]], + [653212,[2692,4,221,4,0,6],[2692,4,728,1,14,0]], + [742560,[4882,0,183,13,111,0],[4882,0,146,13,111,0]], + [742968,[4892,0,220,13,111,0],[4892,0,183,13,111,9]], + [745008,[4942,0,183,13,111,9],[4942,0,146,13,111,9]], + [745416,[4952,0,220,13,111,9],[4952,0,183,13,111,18]], + [751742,[5102,206,174,14,0,0],[5102,206,100,14,0,4]], + [752150,[5112,206,211,14,0,0],[5112,206,137,14,0,4]], + [753996,[5162,12,174,14,0,9],[5162,12,100,14,0,13]], + [754404,[5172,12,211,14,0,9],[5172,12,137,14,0,13]], + [754818,[5182,18,179,14,0,0],[5182,18,179,14,0,14]], + [755226,[5192,18,216,14,0,0],[5192,18,216,14,0,14]], + [759696,[5302,0,174,14,0,18],[5302,0,137,14,0,22]], + [760104,[5312,0,211,14,0,18],[5312,0,174,14,0,22]], + [762960,[5382,0,183,13,111,18],[5382,0,146,13,111,18]], + [763368,[5392,0,220,13,111,18],[5392,0,183,13,111,27]], + [771122,[5582,2,179,14,0,9],[5582,2,650,14,19,6]], + [771530,[5592,2,216,14,0,9],[5592,2,650,14,18,6]], + [787778,[5982,338,179,14,0,17],[5982,338,179,14,0,23]], + [788186,[5992,338,216,14,0,17],[5992,338,216,14,0,23]], + [788421,[6002,165,183,13,111,27],[6002,165,174,14,0,0]], + [788829,[6012,165,220,13,111,27],[6012,165,211,14,0,0]], + [798049,[6242,1,183,13,111,31],[6242,1,146,13,111,27]], + [798457,[6252,1,220,13,111,31],[6252,1,183,13,111,36]], + [807409,[6462,385,183,13,111,40],[6462,385,586,14,0,6]], + [807817,[6472,385,220,13,111,40],[6472,385,549,14,0,6]], + [808983,[6502,327,179,14,0,26],[6502,327,179,14,0,0]], + [809391,[6512,327,216,14,0,26],[6512,327,216,14,0,0]], + [815631,[13,39,262,4,4,0],[13,39,558,4,4,0]], + [842042,[653,338,262,4,4,9],[653,338,558,4,4,18]], + [849282,[833,234,271,1,1,0],[833,234,336,4,4,16]], + [849284,[833,236,271,1,0,0],[833,236,262,4,4,24]], + [924938,[2693,2,295,4,1,6],[2693,2,728,1,13,0]], + [924940,[2693,4,295,4,0,6],[2693,4,728,1,12,0]], + [1014288,[4883,0,257,13,111,0],[4883,0,183,13,111,0]], + [1014696,[4893,0,294,13,111,0],[4893,0,220,13,111,0]], + [1016736,[4943,0,257,13,111,9],[4943,0,220,13,111,9]], + [1017144,[4953,0,294,13,111,9],[4953,0,220,13,111,18]], + [1023470,[5103,206,248,14,0,0],[5103,206,174,14,0,4]], + [1023878,[5113,206,285,14,0,0],[5113,206,211,14,0,4]], + [1025724,[5163,12,248,14,0,9],[5163,12,174,14,0,13]], + [1026132,[5173,12,285,14,0,9],[5173,12,211,14,0,13]], + [1026546,[5183,18,253,14,0,0],[5183,18,253,14,0,14]], + [1026954,[5193,18,290,14,0,0],[5193,18,290,14,0,14]], + [1031424,[5303,0,248,14,0,18],[5303,0,211,14,0,22]], + [1031832,[5313,0,285,14,0,18],[5313,0,248,14,0,22]], + [1034688,[5383,0,257,13,111,18],[5383,0,220,13,111,27]], + [1035096,[5393,0,294,13,111,18],[5393,0,257,13,111,27]], + [1042850,[5583,2,253,14,0,9],[5583,2,650,14,17,6]], + [1043258,[5593,2,290,14,0,9],[5593,2,650,14,16,6]], + [1059506,[5983,338,253,14,0,17],[5983,338,253,14,0,23]], + [1059914,[5993,338,290,14,0,17],[5993,338,290,14,0,23]], + [1060149,[6003,165,257,13,111,27],[6003,165,248,14,0,0]], + [1060557,[6013,165,294,13,111,27],[6013,165,285,14,0,0]], + [1069777,[6243,1,257,13,111,31],[6243,1,220,13,111,36]], + [1070185,[6253,1,294,13,111,31],[6253,1,257,13,111,36]], + [1079137,[6463,385,257,13,111,40],[6463,385,512,14,0,6]], + [1079545,[6473,385,294,13,111,40],[6473,385,475,14,0,6]], + [1080711,[6503,327,253,14,0,26],[6503,327,253,14,0,0]], + [1081119,[6513,327,290,14,0,26],[6513,327,290,14,0,0]], + [1087359,[14,39,336,4,4,0],[14,39,558,4,4,9]], + [1113770,[654,338,336,4,4,9],[654,338,632,4,4,9]], + [1121012,[834,236,345,1,0,0],[834,236,336,4,4,24]], + [1196666,[2694,2,369,4,1,6],[2694,2,728,1,11,0]], + [1196668,[2694,4,369,4,0,6],[2694,4,728,1,10,0]], + [1286016,[4884,0,331,13,111,0],[4884,0,257,13,111,0]], + [1286424,[4894,0,368,13,111,0],[4894,0,294,13,111,0]], + [1288464,[4944,0,331,13,111,9],[4944,0,257,13,111,9]], + [1288872,[4954,0,368,13,111,9],[4954,0,294,13,111,9]], + [1295198,[5104,206,322,14,0,0],[5104,206,248,14,0,4]], + [1295606,[5114,206,359,14,0,0],[5114,206,285,14,0,4]], + [1297452,[5164,12,322,14,0,9],[5164,12,248,14,0,13]], + [1297860,[5174,12,359,14,0,9],[5174,12,285,14,0,13]], + [1298274,[5184,18,327,14,0,0],[5184,18,327,14,0,14]], + [1298682,[5194,18,364,14,0,0],[5194,18,364,14,0,14]], + [1303152,[5304,0,322,14,0,18],[5304,0,285,14,0,22]], + [1303560,[5314,0,359,14,0,18],[5314,0,322,14,0,22]], + [1306416,[5384,0,331,13,111,18],[5384,0,257,13,111,18]], + [1306824,[5394,0,368,13,111,18],[5394,0,294,13,111,18]], + [1314578,[5584,2,327,14,0,9],[5584,2,724,14,39,6]], + [1314986,[5594,2,364,14,0,9],[5594,2,724,14,38,6]], + [1331234,[5984,338,327,14,0,17],[5984,338,327,14,0,23]], + [1331642,[5994,338,364,14,0,17],[5994,338,364,14,0,23]], + [1331877,[6004,165,331,13,111,27],[6004,165,322,14,0,0]], + [1332285,[6014,165,368,13,111,27],[6014,165,359,14,0,0]], + [1341505,[6244,1,331,13,111,31],[6244,1,294,13,111,27]], + [1341913,[6254,1,368,13,111,31],[6254,1,294,13,111,36]], + [1350865,[6464,385,331,13,111,40],[6464,385,438,14,0,6]], + [1351273,[6474,385,368,13,111,40],[6474,385,401,14,0,6]], + [1352439,[6504,327,327,14,0,26],[6504,327,327,14,0,0]], + [1352847,[6514,327,364,14,0,26],[6514,327,364,14,0,0]], + [1359087,[15,39,410,4,4,0],[15,39,632,4,4,0]], + [1385498,[655,338,410,4,4,9],[655,338,632,4,4,18]], + [1468394,[2695,2,443,4,1,6],[2695,2,728,1,9,0]], + [1468396,[2695,4,443,4,0,6],[2695,4,728,1,8,0]], + [1557744,[4885,0,405,13,111,0],[4885,0,331,13,111,0]], + [1558152,[4895,0,442,13,111,0],[4895,0,331,13,111,9]], + [1560192,[4945,0,405,13,111,9],[4945,0,331,13,111,18]], + [1560600,[4955,0,442,13,111,9],[4955,0,368,13,111,18]], + [1566926,[5105,206,396,14,0,0],[5105,206,322,14,0,4]], + [1567334,[5115,206,433,14,0,0],[5115,206,359,14,0,4]], + [1569180,[5165,12,396,14,0,9],[5165,12,322,14,0,13]], + [1569588,[5175,12,433,14,0,9],[5175,12,359,14,0,13]], + [1570002,[5185,18,401,14,0,0],[5185,18,401,14,0,14]], + [1570410,[5195,18,438,14,0,0],[5195,18,438,14,0,14]], + [1574880,[5305,0,396,14,0,18],[5305,0,359,14,0,22]], + [1575288,[5315,0,433,14,0,18],[5315,0,396,14,0,22]], + [1578144,[5385,0,405,13,111,18],[5385,0,331,13,111,27]], + [1578552,[5395,0,442,13,111,18],[5395,0,368,13,111,27]], + [1586306,[5585,2,401,14,0,9],[5585,2,724,14,37,6]], + [1586714,[5595,2,438,14,0,9],[5595,2,724,14,36,6]], + [1602962,[5985,338,401,14,0,17],[5985,338,401,14,0,23]], + [1603370,[5995,338,438,14,0,17],[5995,338,438,14,0,23]], + [1603605,[6005,165,405,13,111,27],[6005,165,396,14,0,0]], + [1604013,[6015,165,442,13,111,27],[6015,165,433,14,0,0]], + [1613233,[6245,1,405,13,111,31],[6245,1,331,13,111,36]], + [1613641,[6255,1,442,13,111,31],[6255,1,368,13,111,36]], + [1622593,[6465,385,405,13,111,40],[6465,385,364,14,0,6]], + [1623001,[6475,385,442,13,111,40],[6475,385,327,14,0,6]], + [1624167,[6505,327,401,14,0,26],[6505,327,401,14,0,0]], + [1624575,[6515,327,438,14,0,26],[6515,327,438,14,0,0]], + [1630815,[16,39,484,4,4,0],[16,39,706,4,4,0]], + [1657226,[656,338,484,4,4,9],[656,338,706,4,4,18]], + [1740122,[2696,2,517,4,1,6],[2696,2,728,1,7,0]], + [1740124,[2696,4,517,4,0,6],[2696,4,728,1,6,0]], + [1829472,[4886,0,479,13,111,0],[4886,0,368,13,111,0]], + [1829880,[4896,0,516,13,111,0],[4896,0,405,13,111,0]], + [1831920,[4946,0,479,13,111,9],[4946,0,368,13,111,9]], + [1832328,[4956,0,516,13,111,9],[4956,0,405,13,111,9]], + [1838654,[5106,206,470,14,0,0],[5106,206,396,14,0,4]], + [1839062,[5116,206,507,14,0,0],[5116,206,433,14,0,4]], + [1840908,[5166,12,470,14,0,9],[5166,12,396,14,0,13]], + [1841316,[5176,12,507,14,0,9],[5176,12,433,14,0,13]], + [1841730,[5186,18,475,14,0,0],[5186,18,475,14,0,14]], + [1842138,[5196,18,512,14,0,0],[5196,18,512,14,0,14]], + [1846608,[5306,0,470,14,0,18],[5306,0,433,14,0,22]], + [1847016,[5316,0,507,14,0,18],[5316,0,470,14,0,22]], + [1849872,[5386,0,479,13,111,18],[5386,0,405,13,111,18]], + [1850280,[5396,0,516,13,111,18],[5396,0,405,13,111,27]], + [1858034,[5586,2,475,14,0,9],[5586,2,724,14,35,6]], + [1858442,[5596,2,512,14,0,9],[5596,2,724,14,34,6]], + [1874690,[5986,338,475,14,0,17],[5986,338,475,14,0,23]], + [1875098,[5996,338,512,14,0,17],[5996,338,512,14,0,23]], + [1875333,[6006,165,479,13,111,27],[6006,165,470,14,0,0]], + [1875741,[6016,165,516,13,111,27],[6016,165,507,14,0,0]], + [1884961,[6246,1,479,13,111,31],[6246,1,405,13,111,36]], + [1885369,[6256,1,516,13,111,31],[6256,1,442,13,111,36]], + [1894321,[6466,385,479,13,111,40],[6466,385,290,14,0,6]], + [1894729,[6476,385,516,13,111,40],[6476,385,253,14,0,6]], + [1895895,[6506,327,475,14,0,26],[6506,327,475,14,0,0]], + [1896303,[6516,327,512,14,0,26],[6516,327,512,14,0,0]], + [1902543,[17,39,558,4,4,0],[17,39,706,4,4,9]], + [1928954,[657,338,558,4,4,9],[657,338,737,4,0,5]], + [1935788,[827,236,530,1,0,0],[827,236,40,4,4,0]], + [1935961,[837,1,566,4,6,0],[837,1,566,4,6,14]], + [1935963,[837,3,566,4,5,0],[837,3,566,4,5,14]], + [1935965,[837,5,566,4,4,0],[837,5,566,4,4,14]], + [1935967,[837,7,566,4,3,0],[837,7,566,4,3,14]], + [1935968,[837,8,566,4,2,0],[837,8,566,4,2,14]], + [1935969,[837,9,566,4,1,0],[837,9,566,4,1,14]], + [1937831,[877,239,566,4,6,9],[877,239,566,4,6,23]], + [1937832,[877,240,566,4,5,9],[877,240,566,4,5,23]], + [1937833,[877,241,566,4,4,9],[877,241,566,4,4,23]], + [1937834,[877,242,566,4,3,9],[877,242,566,4,3,23]], + [1937835,[877,243,566,4,2,9],[877,243,566,4,2,23]], + [1937836,[877,244,566,4,1,9],[877,244,566,4,1,23]], + [1943583,[1017,279,566,4,6,18],[1017,279,566,4,6,0]], + [1943584,[1017,280,566,4,5,18],[1017,280,566,4,5,0]], + [1943606,[1017,302,566,4,4,18],[1017,302,566,4,4,0]], + [1943607,[1017,303,566,4,3,18],[1017,303,566,4,3,0]], + [1943630,[1017,326,566,4,2,18],[1017,326,566,4,2,0]], + [1943631,[1017,327,566,4,1,18],[1017,327,566,4,1,0]], + [1952284,[1237,4,566,4,6,24],[1237,4,123,1,3,0]], + [1952286,[1237,6,566,4,5,24],[1237,6,197,1,2,0]], + [1952360,[1237,80,566,4,4,24],[1237,80,271,1,1,0]], + [1952367,[1237,87,566,4,3,24],[1237,87,345,1,0,0]], + [1952376,[1237,96,566,4,2,24],[1237,96,49,1,3,0]], + [1952383,[1237,103,566,4,1,24],[1237,103,123,1,2,0]], + [2011850,[2697,2,591,4,1,6],[2697,2,728,1,5,0]], + [2011852,[2697,4,591,4,0,6],[2697,4,728,1,4,0]], + [2101200,[4887,0,553,13,111,0],[4887,0,442,13,111,0]], + [2101608,[4897,0,590,13,111,0],[4897,0,479,13,111,9]], + [2103648,[4947,0,553,13,111,9],[4947,0,442,13,111,9]], + [2104056,[4957,0,590,13,111,9],[4957,0,479,13,111,18]], + [2110382,[5107,206,544,14,0,0],[5107,206,470,14,0,4]], + [2110790,[5117,206,581,14,0,0],[5117,206,507,14,0,4]], + [2112636,[5167,12,544,14,0,9],[5167,12,470,14,0,13]], + [2113044,[5177,12,581,14,0,9],[5177,12,507,14,0,13]], + [2113458,[5187,18,549,14,0,0],[5187,18,549,14,0,14]], + [2113866,[5197,18,586,14,0,0],[5197,18,586,14,0,14]], + [2118336,[5307,0,544,14,0,18],[5307,0,507,14,0,22]], + [2118744,[5317,0,581,14,0,18],[5317,0,544,14,0,22]], + [2121600,[5387,0,553,13,111,18],[5387,0,442,13,111,18]], + [2122008,[5397,0,590,13,111,18],[5397,0,479,13,111,27]], + [2129762,[5587,2,549,14,0,9],[5587,2,724,14,33,6]], + [2130170,[5597,2,586,14,0,9],[5597,2,724,14,32,6]], + [2146418,[5987,338,549,14,0,17],[5987,338,549,14,0,23]], + [2146826,[5997,338,586,14,0,17],[5997,338,586,14,0,23]], + [2147061,[6007,165,553,13,111,27],[6007,165,544,14,0,0]], + [2147469,[6017,165,590,13,111,27],[6017,165,581,14,0,0]], + [2156689,[6247,1,553,13,111,31],[6247,1,442,13,111,27]], + [2157097,[6257,1,590,13,111,31],[6257,1,479,13,111,36]], + [2166049,[6467,385,553,13,111,40],[6467,385,216,14,0,6]], + [2166457,[6477,385,590,13,111,40],[6477,385,179,14,0,6]], + [2167623,[6507,327,549,14,0,26],[6507,327,549,14,0,0]], + [2168031,[6517,327,586,14,0,26],[6517,327,586,14,0,0]], + [2174271,[18,39,632,4,4,0],[18,39,700,4,0,5]], + [2200682,[658,338,632,4,4,9],[658,338,737,4,1,5]], + [2202055,[698,79,646,6,37,0],[698,79,646,6,37,14]], + [2202057,[698,81,646,6,36,0],[698,81,646,6,36,14]], + [2202058,[698,82,646,6,35,0],[698,82,646,6,35,14]], + [2202060,[698,84,646,6,34,0],[698,84,646,6,34,14]], + [2207514,[828,234,604,1,1,0],[828,234,114,4,4,0]], + [2207516,[828,236,604,1,0,0],[828,236,40,4,4,8]], + [2207688,[838,0,640,4,7,0],[838,0,640,4,7,14]], + [2207689,[838,1,640,4,6,0],[838,1,640,4,6,14]], + [2207691,[838,3,640,4,5,0],[838,3,640,4,5,14]], + [2207693,[838,5,640,4,4,0],[838,5,640,4,4,14]], + [2207695,[838,7,640,4,3,0],[838,7,640,4,3,14]], + [2207696,[838,8,640,4,2,0],[838,8,640,4,2,14]], + [2207697,[838,9,640,4,1,0],[838,9,640,4,1,14]], + [2209557,[878,237,640,4,7,9],[878,237,640,4,7,23]], + [2209559,[878,239,640,4,6,9],[878,239,640,4,6,23]], + [2209560,[878,240,640,4,5,9],[878,240,640,4,5,23]], + [2209561,[878,241,640,4,4,9],[878,241,640,4,4,23]], + [2209562,[878,242,640,4,3,9],[878,242,640,4,3,23]], + [2209563,[878,243,640,4,2,9],[878,243,640,4,2,23]], + [2209564,[878,244,640,4,1,9],[878,244,640,4,1,23]], + [2215291,[1018,259,640,4,7,18],[1018,259,640,4,7,0]], + [2215311,[1018,279,640,4,6,18],[1018,279,640,4,6,0]], + [2215312,[1018,280,640,4,5,18],[1018,280,640,4,5,0]], + [2215334,[1018,302,640,4,4,18],[1018,302,640,4,4,0]], + [2215335,[1018,303,640,4,3,18],[1018,303,640,4,3,0]], + [2215358,[1018,326,640,4,2,18],[1018,326,640,4,2,0]], + [2215359,[1018,327,640,4,1,18],[1018,327,640,4,1,0]], + [2224010,[1238,2,640,4,7,24],[1238,2,197,1,1,0]], + [2224012,[1238,4,640,4,6,24],[1238,4,271,1,0,0]], + [2224014,[1238,6,640,4,5,24],[1238,6,678,1,2,0]], + [2224088,[1238,80,640,4,4,24],[1238,80,49,1,2,0]], + [2224095,[1238,87,640,4,3,24],[1238,87,123,1,1,0]], + [2224104,[1238,96,640,4,2,24],[1238,96,197,1,0,0]], + [2224111,[1238,103,640,4,1,24],[1238,103,604,1,1,0]], + [2240561,[1638,233,646,6,37,9],[1638,233,566,4,6,6]], + [2240562,[1638,234,646,6,36,9],[1638,234,566,4,5,6]], + [2240564,[1638,236,646,6,35,9],[1638,236,566,4,4,6]], + [2240566,[1638,238,646,6,34,9],[1638,238,566,4,3,6]], + [2266719,[2278,279,646,6,37,17],[2278,279,646,6,37,0]], + [2266720,[2278,280,646,6,36,17],[2278,280,646,6,36,0]], + [2266742,[2278,302,646,6,35,17],[2278,302,646,6,35,0]], + [2266743,[2278,303,646,6,34,17],[2278,303,646,6,34,0]], + [2274188,[2458,404,654,1,3,0],[2458,404,646,6,37,6]], + [2274189,[2458,405,654,1,2,0],[2458,405,646,6,36,6]], + [2274190,[2458,406,654,1,1,0],[2458,406,646,6,35,6]], + [2274191,[2458,407,654,1,0,0],[2458,407,646,6,34,6]], + [2283578,[2698,2,665,4,1,6],[2698,2,728,1,3,0]], + [2283580,[2698,4,665,4,0,6],[2698,4,728,1,2,0]], + [2336197,[3978,397,650,14,35,0],[3978,397,73,4,1,6]], + [2336198,[3978,398,650,14,34,0],[3978,398,73,4,0,6]], + [2336199,[3978,399,650,14,33,0],[3978,399,147,4,1,6]], + [2336200,[3978,400,650,14,32,0],[3978,400,147,4,0,6]], + [2336201,[3978,401,650,14,19,0],[3978,401,221,4,1,6]], + [2336204,[3978,404,650,14,18,0],[3978,404,221,4,0,6]], + [2336205,[3978,405,650,14,17,0],[3978,405,295,4,1,6]], + [2336206,[3978,406,650,14,16,0],[3978,406,295,4,0,6]], + [2341633,[4118,121,650,14,35,8],[4118,121,650,14,35,14]], + [2341635,[4118,123,650,14,34,8],[4118,123,650,14,34,14]], + [2341636,[4118,124,650,14,33,8],[4118,124,650,14,33,14]], + [2341637,[4118,125,650,14,32,8],[4118,125,650,14,32,14]], + [2341814,[4118,302,650,14,19,8],[4118,302,650,14,19,0]], + [2341815,[4118,303,650,14,18,8],[4118,303,650,14,18,0]], + [2341838,[4118,326,650,14,17,8],[4118,326,650,14,17,0]], + [2341839,[4118,327,650,14,16,8],[4118,327,650,14,16,0]], + [2363775,[4658,231,650,14,35,17],[4658,231,650,14,35,0]], + [2363802,[4658,258,650,14,34,17],[4658,258,650,14,34,0]], + [2363803,[4658,259,650,14,33,17],[4658,259,650,14,33,0]], + [2363823,[4658,279,650,14,32,17],[4658,279,650,14,32,0]], + [2372928,[4888,0,627,13,111,0],[4888,0,479,13,111,0]], + [2373336,[4898,0,664,13,111,0],[4898,0,516,13,111,0]], + [2375376,[4948,0,627,13,111,9],[4948,0,516,13,111,9]], + [2375784,[4958,0,664,13,111,9],[4958,0,516,13,111,18]], + [2382110,[5108,206,618,14,0,0],[5108,206,544,14,0,4]], + [2382518,[5118,206,655,14,0,0],[5118,206,581,14,0,4]], + [2384364,[5168,12,618,14,0,9],[5168,12,544,14,0,13]], + [2384772,[5178,12,655,14,0,9],[5178,12,581,14,0,13]], + [2385186,[5188,18,623,14,0,0],[5188,18,623,14,0,14]], + [2385594,[5198,18,660,14,0,0],[5198,18,660,14,0,14]], + [2390064,[5308,0,618,14,0,18],[5308,0,581,14,0,22]], + [2390472,[5318,0,655,14,0,18],[5318,0,618,14,0,22]], + [2393328,[5388,0,627,13,111,18],[5388,0,516,13,111,27]], + [2393736,[5398,0,664,13,111,18],[5398,0,553,13,111,27]], + [2401490,[5588,2,623,14,0,9],[5588,2,724,14,19,6]], + [2401898,[5598,2,660,14,0,9],[5598,2,724,14,18,6]], + [2418146,[5988,338,623,14,0,17],[5988,338,623,14,0,23]], + [2418554,[5998,338,660,14,0,17],[5998,338,660,14,0,23]], + [2418789,[6008,165,627,13,111,27],[6008,165,618,14,0,0]], + [2419197,[6018,165,664,13,111,27],[6018,165,655,14,0,0]], + [2428417,[6248,1,627,13,111,31],[6248,1,516,13,111,36]], + [2428825,[6258,1,664,13,111,31],[6258,1,553,13,111,36]], + [2437777,[6468,385,627,13,111,40],[6468,385,142,14,0,6]], + [2438185,[6478,385,664,13,111,40],[6478,385,105,14,0,6]], + [2439351,[6508,327,623,14,0,26],[6508,327,623,14,0,0]], + [2439759,[6518,327,660,14,0,26],[6518,327,660,14,0,0]], + [2445999,[19,39,706,4,4,0],[19,39,700,4,1,5]], + [2472410,[659,338,706,4,4,9],[659,338,739,4,98,4]], + [2473723,[699,19,720,6,88,0],[699,19,720,6,88,14]], + [2473724,[699,20,720,6,87,0],[699,20,720,6,87,14]], + [2473770,[699,66,720,6,47,0],[699,66,720,6,47,14]], + [2473771,[699,67,720,6,46,0],[699,67,720,6,46,14]], + [2473772,[699,68,720,6,45,0],[699,68,720,6,45,14]], + [2473774,[699,70,720,6,44,0],[699,70,720,6,44,14]], + [2473775,[699,71,720,6,43,0],[699,71,720,6,43,14]], + [2473776,[699,72,720,6,42,0],[699,72,720,6,42,14]], + [2473777,[699,73,720,6,41,0],[699,73,720,6,41,14]], + [2473780,[699,76,720,6,40,0],[699,76,720,6,40,14]], + [2473781,[699,77,720,6,39,0],[699,77,720,6,39,14]], + [2473782,[699,78,720,6,38,0],[699,78,720,6,38,14]], + [2473783,[699,79,720,6,37,0],[699,79,720,6,37,14]], + [2473785,[699,81,720,6,36,0],[699,81,720,6,36,14]], + [2473786,[699,82,720,6,35,0],[699,82,720,6,35,14]], + [2473788,[699,84,720,6,34,0],[699,84,720,6,34,14]], + [2474967,[729,39,700,4,1,0],[729,39,700,4,1,14]], + [2474968,[729,40,700,4,0,0],[729,40,700,4,0,14]], + [2475375,[739,39,737,4,1,0],[739,39,737,4,1,14]], + [2475376,[739,40,737,4,0,0],[739,40,737,4,0,14]], + [2479241,[829,233,678,1,2,0],[829,233,188,4,4,0]], + [2479242,[829,234,678,1,1,0],[829,234,114,4,4,8]], + [2479244,[829,236,678,1,0,0],[829,236,40,4,4,16]], + [2479416,[839,0,714,4,7,0],[839,0,714,4,7,14]], + [2479417,[839,1,714,4,6,0],[839,1,714,4,6,14]], + [2479419,[839,3,714,4,5,0],[839,3,714,4,5,14]], + [2479421,[839,5,714,4,4,0],[839,5,714,4,4,14]], + [2479423,[839,7,714,4,3,0],[839,7,714,4,3,14]], + [2479424,[839,8,714,4,2,0],[839,8,714,4,2,14]], + [2479425,[839,9,714,4,1,0],[839,9,714,4,1,14]], + [2481285,[879,237,714,4,7,9],[879,237,714,4,7,23]], + [2481287,[879,239,714,4,6,9],[879,239,714,4,6,23]], + [2481288,[879,240,714,4,5,9],[879,240,714,4,5,23]], + [2481289,[879,241,714,4,4,9],[879,241,714,4,4,23]], + [2481290,[879,242,714,4,3,9],[879,242,714,4,3,23]], + [2481291,[879,243,714,4,2,9],[879,243,714,4,2,23]], + [2481292,[879,244,714,4,1,9],[879,244,714,4,1,23]], + [2483124,[929,36,700,4,1,9],[929,36,700,4,1,23]], + [2483125,[929,37,700,4,0,9],[929,37,700,4,0,23]], + [2483532,[939,36,737,4,1,9],[939,36,737,4,1,23]], + [2483533,[939,37,737,4,0,9],[939,37,737,4,0,23]], + [2487019,[1019,259,714,4,7,18],[1019,259,714,4,7,0]], + [2487039,[1019,279,714,4,6,18],[1019,279,714,4,6,0]], + [2487040,[1019,280,714,4,5,18],[1019,280,714,4,5,0]], + [2487062,[1019,302,714,4,4,18],[1019,302,714,4,4,0]], + [2487063,[1019,303,714,4,3,18],[1019,303,714,4,3,0]], + [2487086,[1019,326,714,4,2,18],[1019,326,714,4,2,0]], + [2487087,[1019,327,714,4,1,18],[1019,327,714,4,1,0]], + [2495738,[1239,2,714,4,7,24],[1239,2,678,1,1,0]], + [2495740,[1239,4,714,4,6,24],[1239,4,49,1,1,0]], + [2495742,[1239,6,714,4,5,24],[1239,6,123,1,0,0]], + [2495816,[1239,80,714,4,4,24],[1239,80,530,1,0,0]], + [2495823,[1239,87,714,4,3,24],[1239,87,604,1,0,0]], + [2495832,[1239,96,714,4,2,24],[1239,96,678,1,0,0]], + [2495839,[1239,103,714,4,1,24],[1239,103,49,1,0,0]], + [2512060,[1639,4,720,6,88,9],[1639,4,566,4,2,6]], + [2512062,[1639,6,720,6,87,9],[1639,6,566,4,1,6]], + [2512136,[1639,80,720,6,47,9],[1639,80,640,4,7,6]], + [2512143,[1639,87,720,6,46,9],[1639,87,640,4,6,6]], + [2512152,[1639,96,720,6,45,9],[1639,96,640,4,5,6]], + [2512159,[1639,103,720,6,44,9],[1639,103,640,4,4,6]], + [2512195,[1639,139,720,6,43,9],[1639,139,640,4,3,6]], + [2512227,[1639,171,720,6,42,9],[1639,171,640,4,2,6]], + [2512240,[1639,184,720,6,41,9],[1639,184,640,4,1,6]], + [2512244,[1639,188,720,6,40,9],[1639,188,714,4,7,6]], + [2512256,[1639,200,720,6,39,9],[1639,200,714,4,6,6]], + [2512260,[1639,204,720,6,38,9],[1639,204,714,4,5,6]], + [2512289,[1639,233,720,6,37,9],[1639,233,714,4,4,6]], + [2512290,[1639,234,720,6,36,9],[1639,234,714,4,3,6]], + [2512292,[1639,236,720,6,35,9],[1639,236,714,4,2,6]], + [2512294,[1639,238,720,6,34,9],[1639,238,714,4,1,6]], + [2525438,[1959,326,720,6,88,17],[1959,326,720,6,88,0]], + [2525439,[1959,327,720,6,87,17],[1959,327,720,6,87,0]], + [2538392,[2279,224,720,6,47,17],[2279,224,720,6,47,0]], + [2538393,[2279,225,720,6,46,17],[2279,225,720,6,46,0]], + [2538394,[2279,226,720,6,45,17],[2279,226,720,6,45,0]], + [2538395,[2279,227,720,6,44,17],[2279,227,720,6,44,0]], + [2538396,[2279,228,720,6,43,17],[2279,228,720,6,43,0]], + [2538397,[2279,229,720,6,42,17],[2279,229,720,6,42,0]], + [2538398,[2279,230,720,6,41,17],[2279,230,720,6,41,0]], + [2538399,[2279,231,720,6,40,17],[2279,231,720,6,40,0]], + [2538426,[2279,258,720,6,39,17],[2279,258,720,6,39,0]], + [2538427,[2279,259,720,6,38,17],[2279,259,720,6,38,0]], + [2538447,[2279,279,720,6,37,17],[2279,279,720,6,37,0]], + [2538448,[2279,280,720,6,36,17],[2279,280,720,6,36,0]], + [2538470,[2279,302,720,6,35,17],[2279,302,720,6,35,0]], + [2538471,[2279,303,720,6,34,17],[2279,303,720,6,34,0]], + [2544858,[2439,162,739,4,98,0],[2439,162,739,4,98,13]], + [2545902,[2459,390,728,1,15,0],[2459,390,720,6,88,6]], + [2545903,[2459,391,728,1,14,0],[2459,391,720,6,87,6]], + [2545904,[2459,392,728,1,13,0],[2459,392,720,6,47,6]], + [2545905,[2459,393,728,1,12,0],[2459,393,720,6,46,6]], + [2545906,[2459,394,728,1,11,0],[2459,394,720,6,45,6]], + [2545907,[2459,395,728,1,10,0],[2459,395,720,6,44,6]], + [2545908,[2459,396,728,1,9,0],[2459,396,720,6,43,6]], + [2545909,[2459,397,728,1,8,0],[2459,397,720,6,42,6]], + [2545910,[2459,398,728,1,7,0],[2459,398,720,6,41,6]], + [2545911,[2459,399,728,1,6,0],[2459,399,720,6,40,6]], + [2545912,[2459,400,728,1,5,0],[2459,400,720,6,39,6]], + [2545913,[2459,401,728,1,4,0],[2459,401,720,6,38,6]], + [2545916,[2459,404,728,1,3,0],[2459,404,720,6,37,6]], + [2545917,[2459,405,728,1,2,0],[2459,405,720,6,36,6]], + [2545918,[2459,406,728,1,1,0],[2459,406,720,6,35,6]], + [2545919,[2459,407,728,1,0,0],[2459,407,720,6,34,6]], + [2555306,[2699,2,739,4,1,6],[2699,2,728,1,1,0]], + [2555308,[2699,4,739,4,0,6],[2699,4,728,1,0,0]], + [2607921,[3979,393,724,14,39,0],[3979,393,369,4,1,6]], + [2607922,[3979,394,724,14,38,0],[3979,394,369,4,0,6]], + [2607923,[3979,395,724,14,37,0],[3979,395,443,4,1,6]], + [2607924,[3979,396,724,14,36,0],[3979,396,443,4,0,6]], + [2607925,[3979,397,724,14,35,0],[3979,397,517,4,1,6]], + [2607926,[3979,398,724,14,34,0],[3979,398,517,4,0,6]], + [2607927,[3979,399,724,14,33,0],[3979,399,591,4,1,6]], + [2607928,[3979,400,724,14,32,0],[3979,400,591,4,0,6]], + [2607929,[3979,401,724,14,19,0],[3979,401,665,4,1,6]], + [2607932,[3979,404,724,14,18,0],[3979,404,665,4,0,6]], + [2607933,[3979,405,724,14,17,0],[3979,405,739,4,1,6]], + [2607934,[3979,406,724,14,16,0],[3979,406,739,4,0,6]], + [2613356,[4119,116,724,14,39,8],[4119,116,724,14,39,14]], + [2613358,[4119,118,724,14,38,8],[4119,118,724,14,38,14]], + [2613359,[4119,119,724,14,37,8],[4119,119,724,14,37,14]], + [2613360,[4119,120,724,14,36,8],[4119,120,724,14,36,14]], + [2613361,[4119,121,724,14,35,8],[4119,121,724,14,35,14]], + [2613363,[4119,123,724,14,34,8],[4119,123,724,14,34,14]], + [2613364,[4119,124,724,14,33,8],[4119,124,724,14,33,14]], + [2613365,[4119,125,724,14,32,8],[4119,125,724,14,32,14]], + [2613542,[4119,302,724,14,19,8],[4119,302,724,14,19,0]], + [2613543,[4119,303,724,14,18,8],[4119,303,724,14,18,0]], + [2613566,[4119,326,724,14,17,8],[4119,326,724,14,17,0]], + [2613567,[4119,327,724,14,16,8],[4119,327,724,14,16,0]], + [2632109,[4579,101,739,4,98,9],[4579,101,739,4,98,0]], + [2633802,[4619,162,739,4,98,13],[4619,162,739,4,98,22]], + [2635499,[4659,227,724,14,39,17],[4659,227,724,14,39,0]], + [2635500,[4659,228,724,14,38,17],[4659,228,724,14,38,0]], + [2635501,[4659,229,724,14,37,17],[4659,229,724,14,37,0]], + [2635502,[4659,230,724,14,36,17],[4659,230,724,14,36,0]], + [2635503,[4659,231,724,14,35,17],[4659,231,724,14,35,0]], + [2635530,[4659,258,724,14,34,17],[4659,258,724,14,34,0]], + [2635531,[4659,259,724,14,33,17],[4659,259,724,14,33,0]], + [2635551,[4659,279,724,14,32,17],[4659,279,724,14,32,0]], + [2642778,[4839,162,739,4,98,22],[4839,162,729,14,0,4]], + [2644656,[4889,0,701,13,111,0],[4889,0,553,13,111,0]], + [2645064,[4899,0,738,13,111,0],[4899,0,590,13,111,0]], + [2646332,[4929,44,700,4,1,18],[4929,44,729,14,0,13]], + [2646333,[4929,45,700,4,0,18],[4929,45,692,14,0,4]], + [2646740,[4939,44,737,4,1,18],[4939,44,729,14,0,22]], + [2646741,[4939,45,737,4,0,18],[4939,45,692,14,0,13]], + [2647104,[4949,0,701,13,111,9],[4949,0,553,13,111,9]], + [2647506,[4949,402,700,4,1,27],[4949,402,700,4,1,0]], + [2647507,[4949,403,700,4,0,27],[4949,403,700,4,0,0]], + [2647512,[4959,0,738,13,111,9],[4959,0,590,13,111,9]], + [2647914,[4959,402,737,4,1,27],[4959,402,737,4,1,0]], + [2647915,[4959,403,737,4,0,27],[4959,403,737,4,0,0]], + [2653838,[5109,206,692,14,0,0],[5109,206,618,14,0,4]], + [2654246,[5119,206,729,14,0,0],[5119,206,655,14,0,4]], + [2656092,[5169,12,692,14,0,9],[5169,12,618,14,0,13]], + [2656500,[5179,12,729,14,0,9],[5179,12,655,14,0,13]], + [2656914,[5189,18,697,14,0,0],[5189,18,697,14,0,14]], + [2657322,[5199,18,734,14,0,0],[5199,18,734,14,0,14]], + [2661792,[5309,0,692,14,0,18],[5309,0,655,14,0,22]], + [2662200,[5319,0,729,14,0,18],[5319,0,692,14,0,22]], + [2665056,[5389,0,701,13,111,18],[5389,0,553,13,111,18]], + [2665464,[5399,0,738,13,111,18],[5399,0,590,13,111,18]], + [2673218,[5589,2,697,14,0,9],[5589,2,724,14,17,6]], + [2673626,[5599,2,734,14,0,9],[5599,2,724,14,16,6]], + [2689874,[5989,338,697,14,0,17],[5989,338,697,14,0,23]], + [2690282,[5999,338,734,14,0,17],[5999,338,734,14,0,23]], + [2690517,[6009,165,701,13,111,27],[6009,165,692,14,0,0]], + [2690925,[6019,165,738,13,111,27],[6019,165,729,14,0,0]], + [2700145,[6249,1,701,13,111,31],[6249,1,590,13,111,27]], + [2700553,[6259,1,738,13,111,31],[6259,1,590,13,111,36]], + [2709505,[6469,385,701,13,111,40],[6469,385,68,14,0,6]], + [2709913,[6479,385,738,13,111,40],[6479,385,31,14,0,6]], + [2711079,[6509,327,697,14,0,26],[6509,327,697,14,0,0]], + [2711487,[6519,327,734,14,0,26],[6519,327,734,14,0,0]] + ] +} diff --git a/research/rank7-six-skip-cap-release/vendor/PR3030-FINITE.json b/research/rank7-six-skip-cap-release/vendor/PR3030-FINITE.json new file mode 100644 index 0000000000..0ddf2aba46 --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/PR3030-FINITE.json @@ -0,0 +1,94 @@ +{ + "calls": 6660, + "idle": { + "1": 173160, + "3": 49617, + "48": 281903, + "5": 17205 + }, + "live": 663040, + "moment": { + "exchange_sign": { + "delta": { + "1": 20, + "14": -10, + "3": 17, + "48": 3, + "5": -15 + }, + "factored_f_derivative_upper": "-9740691/100000", + "saving_interval": "0 < b <= 1/100" + }, + "gain_over_previous_root": [ + "15520213124915363/10000000000000000000000000", + "3104042624983073/2000000000000000000000000" + ], + "previous_released_kappa": "17291512039830184429979999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "r1_cap": { + "cap_lower": "345830551200866186907/200000000000000000000000", + "cap_upper": "17291527560043309345351/10000000000000000000000000", + "idle_per_replica": { + "1": "234", + "3": "1341/20", + "48": "7619/20", + "5": "93/4" + }, + "invariant": { + "cap_requires_T_multiple_of": 20, + "first_multiple_of_74": 740, + "identity": "20*N_[9,9,9,9,9]@48 = 1341*T", + "scope": "Pattern integrality; chronological sufficiency is not asserted." + }, + "minimum_slack_lower": "330765675305227204675371142393288108400151493175513616739741339618653761718041326298111057624781171125553985546713931380045589238715164684519680158082564740064663626585139779201278666945976271879210312552348945421842669479860034347625742282914882395550466970485099678801067095436401756055414599223858358045300620622572136335593899309576755132023072924000625232706202289892486468856482758190936016483225256005340027972594846416378903928488242877276718725872416334489569899876284894464567074525397636741615414416512178272514355557374077726632979830127341350785520875007989552785927437863408466173223802409362040928161903300682009368388022327606117750186058531177130486222532353473629990336123001666673453285550918689932752488873889800407408618663032684827164043100388063145568074124864004671327888352440148634170348081682763216459720440600473567758633447479756936881069232841299315182009213270746341095947229872623984953305659320971822234633628503084874050627189372339056880769747466281694324513868890186542568399493669814325528063369943581616724732903252851537556934617596147852096403830386971101932076078846509096157094005135661650016075760947032213965707873129939184689263987243478656040906464411334211690007822733347623898160446742448648210266592497727349409694316897300189398121201087445724945334874140855821854415515276641951455907807350241364838774433095096175333305053290637933525897282705413481161097167181637390050045065310941579633986151479433320996941088323147696390012023269/81041342522688389710889387537294203079509119498590816677390723091620647310394495647029073126180702147730052952998589633954567841435821298786820185301991996265365431464176659884385965729599723770208940372607986728020752670720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "patterns": 2551, + "strict_patterns": 2539, + "tight_patterns": 12 + }, + "root": [ + "345830551200866186907/200000000000000000000000", + "17291527560043309345351/10000000000000000000000000" + ] + }, + "physical": 663549, + "profile": { + "1": 16443540, + "2": 4708620, + "3": 1594737, + "4": 719280, + "48": 281903, + "5": 137085, + "8": 53280 + }, + "rank_mass": 48165120, + "replicas": 740, + "roles": 2717280, + "scope": "Finite composed allocation and moment; fresh release is separate.", + "status": "PASS_T740_R1_FINITE", + "stock": { + "buffers": 91, + "group_order_times_physical_bit_length": 2647, + "live": 663040, + "namespaces": { + "centers": [ + 663040, + 663048 + ], + "coefficients": [ + 663547, + 663549 + ], + "tableau": [ + 663048, + 663456 + ], + "zero_buffers": [ + 663456, + 663547 + ] + }, + "payload": 2048, + "physical": 663549, + "reserve": 1512, + "stock_l2_bits": 1324 + } +} diff --git a/research/rank7-six-skip-cap-release/vendor/PR3042-CAP.json b/research/rank7-six-skip-cap-release/vendor/PR3042-CAP.json new file mode 100644 index 0000000000..f4c94b6241 --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/PR3042-CAP.json @@ -0,0 +1,124 @@ +{ + "basis_patterns": [ + { + "capacity": 8, + "count_per_replica": "672", + "widths": [ + 8 + ] + }, + { + "capacity": 32, + "count_per_replica": "115/4", + "widths": [ + 7, + 8, + 8, + 9 + ] + }, + { + "capacity": 32, + "count_per_replica": "234", + "widths": [ + 4, + 9, + 9, + 9 + ] + }, + { + "capacity": 48, + "count_per_replica": "1341/20", + "widths": [ + 9, + 9, + 9, + 9, + 9 + ] + }, + { + "capacity": 32, + "count_per_replica": "93/4", + "widths": [ + 9, + 9, + 9 + ] + }, + { + "capacity": 32, + "count_per_replica": "144", + "widths": [ + 6, + 8, + 9, + 9 + ] + }, + { + "capacity": 32, + "count_per_replica": "18", + "widths": [ + 5, + 9, + 9, + 9 + ] + }, + { + "capacity": 16, + "count_per_replica": "35/4", + "widths": [ + 8, + 8 + ] + }, + { + "capacity": 16, + "count_per_replica": "1757/4", + "widths": [ + 7, + 9 + ] + }, + { + "capacity": 48, + "count_per_replica": "7619/20", + "widths": [] + } + ], + "cap_lower": "4324344875160696378107/2500000000000000000000000", + "cap_lower_decimal": "0.0017297379500642785512428", + "cap_upper": "17297379500642785512429/10000000000000000000000000", + "cap_upper_decimal": "0.0017297379500642785512429", + "idle_per_replica": { + "1": "234", + "3": "1341/20", + "48": "7619/20", + "5": "93/4" + }, + "inventory_per_call": { + "4": 26, + "5": 2, + "6": 16, + "7": 52, + "8": 99, + "9": 213 + }, + "local_per_call": { + "1": 2433, + "2": 712, + "3": 232, + "4": 108, + "5": 18, + "8": 8 + }, + "patterns": 2551, + "rank_mass_identity": true, + "scenario": "final words of PR2979 plus declared restore edit list (R1, Stack2979)", + "status": "PASS_EXACT_RELAXATION_CAP", + "strict_patterns": 2539, + "tight_patterns": 12 +} diff --git a/research/rank7-six-skip-cap-release/vendor/PR3042-CLAIM.json b/research/rank7-six-skip-cap-release/vendor/PR3042-CLAIM.json new file mode 100644 index 0000000000..47a55a7f68 --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/PR3042-CLAIM.json @@ -0,0 +1,229 @@ +{ + "admitted_package_manifest_sha256": "2c367a7afa966a7952303364fbccd6332730e2d3ad48d2ef04a524f35daddb03", + "baseline_head": "e2ca469b08385d3d5e29a918d66dbefaf889e9f3", + "baseline_kappa": "17240352247481048785499999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "baseline_pr": 2969, + "baseline_status": "FINITE_NATIVE_OWNER_AND_MOMENT_CANDIDATE_OUTER_PENDING", + "calls": 666, + "complex_lower": "432434041596978996703/250000000000000000000000", + "declared_edits": { + "count": 2, + "edits_sha256": "ebffcc1e57e59439b9678ff8d9be518c457af22ce77235c2fdb46540ab9b9b79", + "previous_kappa": "0.0017290339826465135177169999999999999999999998999999999999999999999999", + "previous_pr": 2979 + }, + "fill_sha256": "c2136be9434cda511a1a8a44d98f9f72ea5376830a8426674253b4ee351c4c39", + "fixed_inventory_cap": { + "cap_lower": "4324344875160696378107/2500000000000000000000000", + "cap_upper": "17297379500642785512429/10000000000000000000000000", + "realized": "below the fractional optimum by the recorded gap (check_cap.py); the cap basis is fractional at T74" + }, + "gain": "2850470819905554131/500000000000000000000000", + "helpers": 408, + "independent_inputs": 632, + "kappa": "17297361663879159868119999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "kappa_decimal": "0.0017297361663879159868119999999999999999999998999999999999999999999999", + "live_families": 66304, + "local_profile": { + "1": 2433, + "2": 712, + "3": 232, + "4": 108, + "5": 18, + "8": 8 + }, + "native_receipt_sha256": "7e982591b1362efe5e8d03fd98f67ff4ef676dd8a5fa3ca765c8ef1370be7019", + "physical_families": 66813, + "previous_claims": { + "pr2942": { + "claim_file": "comparators/PR2942-CLAIM.json", + "gain": "108122601948463419/15625000000000000000000", + "head": "a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf", + "kappa": "17228163198632143279959999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "pr": 2942 + }, + "pr2957": { + "claim_file": "comparators/PR2957-CLAIM.json", + "gain": "6018751317177815841/1000000000000000000000000", + "head": "b74b25f3ccc84c16e1a801d73b2f47e5ea764c78", + "kappa": "17237174150707381709709999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "pr": 2957 + }, + "pr2966": { + "claim_file": "comparators/PR2966-CLAIM.json", + "gain": "28509469322319047/5000000000000000000000", + "head": "e62d3eb9005117d82a9babcfa937ecc53237c490", + "kappa": "17240342725234521774119999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "pr": 2966 + }, + "pr2969": { + "claim_file": "allocation/baseline/CLAIM.json", + "gain": "2850470819905554131/500000000000000000000000", + "head": "e2ca469b08385d3d5e29a918d66dbefaf889e9f3", + "kappa": "17240352247481048785499999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "pr": 2969 + }, + "pr2979": { + "claim_file": "comparators/PR2979-CLAIM.json", + "gain": "140436748280493819/200000000000000000000000", + "head": "be191346391661f4d35fc0d1508d0a6029572576", + "kappa": "17290339826465135177169999999999999999999998999999999999999999999999/10000000000000000000000000000000000000000000000000000000000000000000000", + "pr": 2979 + } + }, + "profile": { + "1": 1637688, + "2": 474192, + "3": 159468, + "4": 71928, + "48": 28190, + "5": 13716, + "8": 5328 + }, + "release_receipt_sha256": "906d15db82f7b5b8938d1b760f54d9229dc7b6f2dbe84cc9286f2d1015e36743", + "replicas": 74, + "scope": "Conditional finite supplier/outer certificate for PR2979's words (mdumitrean: joint rank-7 end frames, five further paired extractions, fourteen PR2957 rewrites) with one declared literal restore edit (R1, Stack2979 / Jeremy Kothe) and PR2979's literal T74 allocation unchanged (paid profile re-derived). Inherited all-size/compiler/theorem hypotheses remain. No selected-frontier change or independent-human-review claim.", + "source_manifest_sha256": "130650ad8833f6df88528c560e4d1cfbae084f4b15a64788a332ddcaff472a17", + "stages": { + "stage1": { + "frame_edits": 139, + "groups": { + "A": { + "W": [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ], + "helpers": [ + 331, + 450, + 451, + 508, + 509 + ] + }, + "B": { + "W": [ + 256, + 128, + 64, + 34, + 17, + 11, + 4 + ], + "helpers": [ + 299, + 448, + 449, + 484, + 485 + ] + }, + "C": { + "W": [ + 256, + 128, + 64, + 32, + 19, + 11, + 6 + ], + "helpers": [ + 452, + 453, + 532, + 533 + ] + }, + "D": { + "W": [ + 256, + 128, + 64, + 37, + 21, + 8, + 3 + ], + "helpers": [ + 454, + 455, + 556, + 557 + ] + }, + "V45": { + "W": [ + 256, + 128, + 64, + 35, + 16, + 11, + 5 + ], + "helpers": [ + 249, + 251, + 265, + 267 + ] + } + }, + "kind": "joint codimension-2 end-frame lowering (frame-only)", + "record_sha256": "5fbfce004330ebc1fbac8de264614fe295f1a074811b478db4892c3bc3852cd3" + }, + "stage2": { + "extractions": [ + { + "helper": 226, + "normal": 42, + "step": 1 + }, + { + "helper": 228, + "normal": 42, + "step": 2 + }, + { + "helper": 230, + "normal": 42, + "step": 3 + }, + { + "helper": 363, + "normal": 7, + "step": 4 + }, + { + "helper": 395, + "normal": 7, + "step": 5 + } + ], + "kind": "rank-8 paired input/output extractions" + }, + "stage3": { + "applier_sha256": "2509f1335e47543f8814b42d6bf83032b30c5899b4f7cc62a6adc03f5138ae13", + "count": 14, + "kind": "declared exactness-preserving gate rewrites (Jeremy Kothe, PR2957), re-addressed", + "rewrites_sha256": "a37ade675876e4f5b00b33066c84f495fccd264863b7eb5d813837b1d01c3e7d" + } + }, + "status": "CONDITIONAL_CANDIDATE_COMPLETE_FINITE_RELEASE", + "width_inventory": { + "4": 26, + "5": 2, + "6": 16, + "7": 52, + "8": 99, + "9": 213 + }, + "zero_buffers": 91 +} diff --git a/research/rank7-six-skip-cap-release/vendor/PR3042-EDITS.json b/research/rank7-six-skip-cap-release/vendor/PR3042-EDITS.json new file mode 100644 index 0000000000..c2042a37bd --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/PR3042-EDITS.json @@ -0,0 +1,2984 @@ +{ + "declared": { + "local_profile": { + "1": 2433, + "2": 712, + "3": 232, + "4": 108, + "5": 18, + "8": 8 + }, + "width_inventory": { + "4": 26, + "5": 2, + "6": 16, + "7": 52, + "8": 99, + "9": 213 + } + }, + "edits": { + "base": [ + { + "id": "R1_E42", + "new": [ + [ + "add", + 40, + 54, + -2, + 1, + [ + 256, + 128, + 64, + 34, + 17, + 11, + 4 + ] + ], + [ + "add", + 40, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 17, + 11, + 4 + ] + ], + [ + "add", + 226, + 40, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 17, + 11, + 4 + ] + ], + [ + "add", + 40, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 17, + 11, + 4 + ] + ], + [ + "add", + 18, + 226, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 18, + 1, + -4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 226, + 18, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 34, + -2, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 228, + -1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 228, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 228, + -1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 230, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 230, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 228, + 108, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 228, + 1, + 4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 108, + 228, + -4, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 18, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 45, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 40, + 18, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 18, + 40, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 40, + 18, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 40, + 54, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 61, + 63, + 1, + 1, + [ + 256, + 128, + 64, + 35, + 16, + 11, + 5 + ] + ], + [ + "add", + 230, + 61, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 61, + 63, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 230, + 92, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 103, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 108, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 230, + 1, + -4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ] + ], + "old": [ + [ + "add", + 18, + 40, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 54, + -2, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 18, + 1, + -4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 226, + 18, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 34, + -2, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 108, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 22, + 1, + 4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 228, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 228, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 228, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 108, + 228, + -4, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 40, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 45, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 54, + -2, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 61, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 63, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 92, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 103, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 108, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 22, + 1, + -4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ] + ], + "section": "restore", + "start": 162, + "stop": 188 + }, + { + "id": "R2_E7", + "new": [ + [ + "add", + 363, + 73, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 19, + 11, + 6 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 59, + 1, + -4, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 363, + 59, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 73, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 395, + 5, + 1, + 1, + [ + 256, + 128, + 64, + 37, + 21, + 8, + 3 + ] + ], + [ + "add", + 96, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 96, + 1, + 4, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 96, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 395, + 96, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 96, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 96, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 96, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ] + ], + "old": [ + [ + "add", + 59, + 73, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 59, + 1, + -4, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 363, + 59, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 96, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 395, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 5, + 1, + -4, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 395, + 5, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 96, + 395, + -4, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ] + ], + "section": "restore", + "start": 190, + "stop": 203 + } + ], + "extra": [ + { + "id": "R1_E42", + "new": [ + [ + "add", + 40, + 54, + -2, + 1, + [ + 256, + 128, + 64, + 34, + 17, + 11, + 4 + ] + ], + [ + "add", + 40, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 17, + 11, + 4 + ] + ], + [ + "add", + 226, + 40, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 17, + 11, + 4 + ] + ], + [ + "add", + 40, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 17, + 11, + 4 + ] + ], + [ + "add", + 18, + 226, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 18, + 1, + -4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 226, + 18, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 34, + -2, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 228, + -1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 228, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 228, + -1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 230, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 230, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 228, + 108, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 228, + 1, + 4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 108, + 228, + -4, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 18, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 45, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 40, + 18, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 18, + 40, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 40, + 18, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 40, + 54, + 2, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 61, + 63, + 1, + 1, + [ + 256, + 128, + 64, + 35, + 16, + 11, + 5 + ] + ], + [ + "add", + 230, + 61, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 61, + 63, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 230, + 92, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 103, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 108, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 230, + 1, + -4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ] + ], + "old": [ + [ + "add", + 18, + 40, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 54, + -2, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 18, + 1, + -4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 226, + 18, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 18, + 226, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 34, + -2, + 1, + [ + 256, + 128, + 64, + 38, + 20, + 10, + 1 + ] + ], + [ + "add", + 22, + 108, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 22, + 1, + 4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 228, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 228, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 228, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 108, + 228, + -4, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 40, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 45, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 54, + -2, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 61, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 63, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 92, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 103, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 108, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "scale", + 22, + 1, + -4, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 230, + 22, + 1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ], + [ + "add", + 22, + 230, + -1, + 1, + [ + 256, + 128, + 64, + 34, + 16, + 10, + 4, + 1 + ] + ] + ], + "section": "restore", + "start": 162, + "stop": 188 + }, + { + "id": "R2_E7", + "new": [ + [ + "add", + 363, + 73, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 19, + 11, + 6 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 59, + 1, + -4, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 363, + 59, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 73, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ], + [ + "add", + 395, + 5, + 1, + 1, + [ + 256, + 128, + 64, + 37, + 21, + 8, + 3 + ] + ], + [ + "add", + 96, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 96, + 1, + 4, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 96, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 395, + 96, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 96, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 96, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 96, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 4, + 2, + 1 + ] + ] + ], + "old": [ + [ + "add", + 59, + 73, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 59, + 1, + -4, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 363, + 59, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 59, + 363, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 96, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 395, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "scale", + 5, + 1, + -4, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 395, + 5, + 1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 5, + 395, + -1, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ], + [ + "add", + 96, + 395, + -4, + 1, + [ + 256, + 128, + 64, + 32, + 16, + 8, + 5, + 3 + ] + ] + ], + "section": "restore", + "start": 190, + "stop": 203 + } + ] + } +} \ No newline at end of file diff --git a/research/rank7-six-skip-cap-release/vendor/PR3042-MANIFEST.json b/research/rank7-six-skip-cap-release/vendor/PR3042-MANIFEST.json new file mode 100644 index 0000000000..7018d721f5 --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/PR3042-MANIFEST.json @@ -0,0 +1,156 @@ +{ + ".gitattributes": "056f4f66161e333f3a8d4c20de323ca05599a7deac1aa02d47ba6f6b96335573", + "ALLOCATION-PINS.json": "7bb1494f220d2d5588e8563d1492f22678de8367ea981f1c2a4cc22d87a1cce0", + "CLAIM.json": "adb2efbaa7c16bf66aede2ac739e445e6fa974d5defbff8b70324f4f10632aa3", + "CREDITS.md": "8475f5e7c090e05196cfd6c2894516cbbedd5876f54193fea575d8064e23574e", + "EDIT-PINS.json": "11e15f1fd1f5ac263261c7834dcb2938da178b5c28070cc63b2fa7764ea0182a", + "NOTICE": "c9731c9cca25ede32c2a1b3aef6d5b249973cb2ed5fb2494407bdca598763661", + "PINS.json": "79a82e455ef97c038169dd305fde230d935e007226083473b84413f74e49fdfe", + "README.md": "a7f24ba0b020afc394197ed2866f9958cfe6628c8b42bf84b09c98da0f681c85", + "RELEASE.json": "59e2e377b62aa785787f418b2bc196d48bc5824c5c4294af1387358642646bf5", + "SOURCES.json": "d5f3f498d4d34125bcaed14dafaceaff342223d511d1099993d5b217a147019c", + "TASK.json": "32c30a45ec317a55548c4f8d459d30ef9940c7787052e6a8b7b8ca2e31c18634", + "VERIFY.json": "5a07ba5f486929903fb736e96c3e1de562b2882876e64f9a32f5d657aae2b7f4", + "allocation/DISPATCH.json": "65e435bd68e97243c003677271b88485a29d4d0fae2dff1354100404a145e74c", + "allocation/FILL.json.gz": "c2136be9434cda511a1a8a44d98f9f72ea5376830a8426674253b4ee351c4c39", + "allocation/ORDER.json": "519d1d5dbb997a219fcfcad34c0b03e7838bef24199784d7e964fa10090f66e1", + "allocation/PROFILE.json": "3245979197e965850eec803879f355a49738a60158cd7043fdc574e9fa810052", + "allocation/PROVIDERS.json": "04c9f2620178322010f7bafb30c669cad0be1426a905275d28a398398b596cd0", + "allocation/SEARCH.json": "2ceb1f825cb68e44d17d4251f74c3975ae5122c845391c1ca8de2e564ac4246a", + "allocation/baseline/CLAIM.json": "656a4c93411b078753783513e2e71b1722a56e7b70120264a38118811982fa77", + "allocation/baseline/ORDER.json": "d559a1dcb83707724afc0310f6ef8e3a36ad6cda0a895ca6abae9d6f39a0fc76", + "allocation/baseline/PROFILE.json": "6de8ac1fd628cdd2afa5a43872da69c7dab9d7219bdc318f9db55fd8ccdb5eb2", + "allocation/vendor/PLAN.json.gz": "d566cfb87b71639d4138e1f89b543e2dd6a7772070226a2a14c799a6835bf21e", + "allocation/vendor/TEMPLATE.json.gz": "21297b20f1f2dc76eb9dd8124416068c3cb096bab9df17fa4da19bc68dfe082e", + "allocation/vendor/independent_owners.py": "77a848729159e271ba64f403dfd59dddb13044b17b2950fa56700f442e2fe461", + "certificates/RELAX-CAP.json": "ef10b3d6481155eb3cd6f4ce3c82a6919fc5b5bce285d26cef39621989f22d9f", + "certificates/RELAX-STAGES.json": "0e5ec700a191b668ba3d4b6d675f5c047d264b9a5109fc55fa92961b3fcb7d68", + "check_allocation.py": "64b2bacd98728a25195d80e5be6c0374e24fba1400290edaafb895dcc5d54368", + "check_cap.py": "3f7901f4c1849074478df3c08ea98b792ae7325fd700948f01d80c11c9106893", + "comparators/PR2942-CLAIM.json": "011aaac80ad79f7f29dc429a672441bb6b3c21a68bbcb34c7a0d5f943c3c3c2e", + "comparators/PR2957-CLAIM.json": "a93e6c9e94bc9bf5664b5e23506dda9647fad1930e1eede66d5ba9f3718b598a", + "comparators/PR2966-CLAIM.json": "4d4c4800bf3bcb36d09021313b2712aebd4aa0830c74dda30991daf6851c220a", + "comparators/PR2979-CLAIM.json": "436e0d297cbdf195445d3697d496ac675e95210b79e70ce602a6a6667a4c6ce9", + "construction/STAGE-PRICES.json": "dfb7d06724bf95367f3fdb398f4828fc70f803d23030bc0eee0b00541457f546", + "construction/allocation/T37-FACE-MIX.json": "10598b7ea2e26fbd49db2b4d2f08122415fd6673b87fb7b458019d503ae60744", + "construction/allocation/T37-FLOW.json.gz": "765c6b774ca207f715dd5f579995700f4787c1f4eb92a7855bfc1424f683eca4", + "construction/allocation/T37-MODEL.json": "74849384ad2160f0402f6577e9d3ea849c21704abcf839af50f3353e141a4355", + "construction/allocation/T37-PATTERNS.json": "df09e4581d7ed73fa22253909197ceb26ced59333f50c008c822894a4082f0e4", + "construction/allocation/T37-SOLVER.json": "f56caa18e9638c568c57e699a8576fa6dcbdfe6ba54ae2da3fc8bc626168d863", + "construction/allocation/T74-CONTROLS.json": "0de2d067d957bbca2580566576030d4f10508b7827a0d83a0bd8c05f19b23bbf", + "construction/allocation/T74-OWNER-CHECK.json": "996234db3632983effc279a93cb5599a945688a3ea476fc9f88e3a714fb330be", + "construction/allocation/assemble.py": "57fcc8dd6f08b5557add7f34c0deb993574f71b3e565d6668085f1f65df5eccd", + "construction/allocation/controls.py": "9e10e5c21fab8ea2fdaf07ce92a141c4e6d63a7ef02d9de25bc9022ad1ae7998", + "construction/allocation/diag_lp.py": "59bfeb9586820f7b653370e20619760e23a4b170e4b7e14dc4e2abad9f5d9c61", + "construction/allocation/double.py": "8a89fafcd69cacb0a5a8d19a90d76f8740cf8f12585dc83796fcd8bc428dd94f", + "construction/allocation/fill17.py": "933be460381d65ea04a6e7f288f977ba22a7e4068b69494d65c38ccd7e5f4dbf", + "construction/allocation/providers_from_words.py": "8cf55c2859a626d86f21b447460321c19db92fec8e1f893b3cd37267f3b145fd", + "construction/allocation/round_mix.py": "0d0a423817b30fda9cceaa61b9bcc90e07710f9829e65098c9a31ed1734341bd", + "construction/records/derive_stage2.py": "f2518333cea351376ee094e8212b71ad753710d4038c55937a9e3bb212249f9e", + "construction/records/make_data.py": "b9528bcb26bc3c1a8e582032fa3899c79dc4cb463814dc6fea617fd83a5b4858", + "construction/records/make_prices.py": "5fcf593b5672b4f66cabd9d2bd5b4e843453248186d95794386331d801280b78", + "construction/search/codim2.py": "1dd77f4ceb0c4cf82ee5f3f4c04123724db09ebb0e7b9f856c4bd000d4e57531", + "construction/search/combine.py": "d06e041082f120b903937a8c7fdf2189eb42411330af625492ff5a24109b49d0", + "construction/search/deliver_l22.py": "b5f0a6ee2eaf1cbef95f0447efb08b75937e7e03c6d27d0b73d5c884c24a91b5", + "construction/search/final_l27.py": "e964d48e7b7705cc64a57bd42d81eb990d69606689349240e5a18155d08f7350", + "construction/search/lowerA.py": "1aba1edb5397701151b2c95afaf23cd8e675ddc48b5ccca1738bc0c5370e9a6c", + "construction/search/lowerA_joint.py": "eb0efbe0c40d063a606dc370362a8d3fe3f4f57877e2e79f63be940fe06ce41b", + "construction/search/realize.py": "6d524f4a1ce0a4bf77f8e5a859e46922334956688c9268dbea3004e3aea6898e", + "construction/search/vlower.py": "3052c96b4f00239fe679f460bbbad2b7271089b5aa73665cb92c052755143ec4", + "data/PARENT-base.json.gz": "54ca34c749e3228d7e2df3d8dbf7aa1568c2872490166997c5962f12fd03da35", + "data/PARENT-extra.json.gz": "eded756dfe8f411c3d1f80a3ac16516f0ea5dd6f9866728b2179b157630fa7b6", + "data/REWRITES-2957.json": "a37ade675876e4f5b00b33066c84f495fccd264863b7eb5d813837b1d01c3e7d", + "data/STAGE1-FRAME-EDITS.json": "5fbfce004330ebc1fbac8de264614fe295f1a074811b478db4892c3bc3852cd3", + "data/TRANSFORM-226.json": "1732a39728c068f9d663111c7876b4e0b96088f3dd3b8e6ff824551b5a711338", + "data/TRANSFORM-228.json": "82346e6a5173c4822e16b2dad06ca232111b6795a340079f9aceabe0098797c0", + "data/TRANSFORM-230.json": "8ad70d545695b5d2246fb9e09d46abcc1e42926c1161884f69b77f978a28f46d", + "data/TRANSFORM-363.json": "84d2a609739eb30d4d9356fb6f04b2ff32c8823a978d7a51db1ace1d6d2352cc", + "data/TRANSFORM-395.json": "065aa5d7713683942bc2156b543681857e33c6e2f30f32cba47e2cbb9d1bef69", + "data/WORD-base.json.gz": "abaf67bfcb257528658c906b612f57025617592bd7889828f92b97a5f4f4300d", + "data/WORD-extra.json.gz": "e0eaf64c4d5d324693d43889bce1b9e53e8da00402105c8c978fd102f208bed7", + "edits/EDITS.json": "ebffcc1e57e59439b9678ff8d9be518c457af22ce77235c2fdb46540ab9b9b79", + "edits/FINAL-WORD-base.json.gz": "7e98f6f2a6c9ce9e7e04b515bd8ce4a4a533ff05f01ea265be2a1a994695260e", + "edits/FINAL-WORD-extra.json.gz": "1396410de482883416fc7f534062ab005b484056b035fdcfa3b5cc065536ba35", + "edits/declared_edits.py": "d3e49b844e9522808a439d505487839addbd957c7d1055bb57fa00e32cbba7b8", + "edits/edits_review.py": "41734b21dfef4fe9c0917e6afcfb2d0652a4a55583f9cbc300af0ffc275af28c", + "evidence/ADAPTER-DERIVATION.json": "a6c42ad0c10713baecc65853108bd4ba8c2295ef7fd85ad03a80d23a6561485a", + "evidence/ADMISSION-RESULT.json": "7f4f43db039b6d0e1dad7ed6549e0c77a97450f3e347db7ee4b60924c61b1187", + "evidence/ADMISSION-STAGES.json": "7ff279bbae26a36e917cf8d29646a436a470c9c6f535e3af4d7d8443767bbe52", + "evidence/EDITS-DERIVATION.json": "f4244fcbf21f41c54c053fb0719c1afaadafe0a5305f061fac6baa04d6da26b7", + "evidence/EDITS-REVIEW.json": "5e45e0108ad21b47d534c607e4da9200ea4f76a103b0c854542d006b711cadbe", + "evidence/ENVIRONMENT.json": "23f2e3174612fd8ad04b5af4bab5b840d50c0c93d68d1eccc4d66a2f9df36896", + "evidence/FULL-NATIVE-RECEIPT.json": "7e982591b1362efe5e8d03fd98f67ff4ef676dd8a5fa3ca765c8ef1370be7019", + "evidence/FULL-NATIVE-RESULT.json": "13990ed299092d7c1b1e963e83bbff11d0c5a68650284e5bba997e13009905a4", + "evidence/FULL-REPLAY-RESULT.json": "9bd72aa02d4665f7f24a356fdd03d8da767234d0b1f4e773000b5cf1a874b070", + "evidence/FULL-REPLAY-STAGES.json": "06b4071f46edb76550d3dd9a1c62cdb879effa305f80156ca89d9fa699b01679", + "evidence/OVERLAY-DERIVATION.json": "145a9491cca7b22f0d04cccb66795a7b6914a1ee415ecfc65e1db7b586573826", + "evidence/README.md": "2b6f99fc0d15d8575f30cff368aed0c2170da54135d7142641bdeceecb7ecdd5", + "evidence/RELEASE-RECEIPT.json": "906d15db82f7b5b8938d1b760f54d9229dc7b6f2dbe84cc9286f2d1015e36743", + "evidence/RUNTIME-PATCHES.json": "25a75bcbc9535bce28c14fbe2fdff6ab42ed7a8193da6d473258ebd53901315c", + "evidence/logs/admission-discovery.log.txt": "7323585286381c3a740f743bd8d34fbac261063475591750f2f6105da2b52b43", + "evidence/logs/admission-outer-check_ledger.py.log.txt": "c3a7a6c9d72696e898ec0e7ebb5327d4bcbb3796296c802fdd3cc52d4ea0ed76", + "evidence/logs/admission-outer-independent_check.py.log.txt": "f49a96248d35bbb371283a8e0f079783974a904c9f59f94b19eba156346cb87b", + "evidence/logs/admission-owners.log.txt": "748837990aea82c6fe4e65a6c342d29db8074c9f31fe59c24dbc0988c2e053eb", + "evidence/logs/admission-parent-lift.log.txt": "7b6249a123ca39fae7b7a6339dd9e8ae8777b081f4336418f2cc101704b70644", + "evidence/logs/admission-rebind.log.txt": "6fcad10d5896199b8a4b3d55e749a3c0d68c0ab709f55e54085de8326a04e7cf", + "evidence/logs/admission-release.log.txt": "805fce9a345ccdda3f35d6a902150f9c79e8156187999fb1e2adeaebd0d3b778", + "evidence/logs/complete-admission.log.txt": "f49b7c5a423df905b7639d736f092df2119f76c472c9e62d6a082ad5caf51752", + "evidence/logs/declared-edit-stage.log.txt": "e0d0595445e237ed99b78764aeb387fea1e7d4e1c5316fc78e49b2ebfc773de5", + "evidence/logs/derive-closed-adapters.log.txt": "e2e9b59cca255f95b2239ff3c9c0b7d5ec32308b7322cef7535ba4c399527bec", + "evidence/logs/export-pr2833.log.txt": "9064165a51df3c763c3ede7e4bb55ce4757e218eca0597fae78c2f9e7fd30030", + "evidence/logs/export-pr2894.log.txt": "6bd8df30779863897e48441608240db6a7e3fcbd0754511e44f854f3a5c462a6", + "evidence/logs/four-kernel-stage.log.txt": "f2bbb6462b3f5bb8a6415bb33c0c35355353b13343ddb90961660f7473caa5a2", + "evidence/logs/fresh-current-native.log.txt": "d7581123b0f3330f2598e7758ccbca466018d2599124fc6ceb1b678a9ee27dec", + "evidence/logs/paired-extension-stage.log.txt": "61cc77beeae833d7473b5c5338b176b150f95f6652a888c0307f080674cfde35", + "evidence/logs/parent-paired-stage.log.txt": "d80d8494c48816e3acf662db00cc0077a888b82392d736826f73beb1c4248299", + "evidence/logs/preload-stage.log.txt": "2eb7601c48840a39c58eb838886aed00a531349b259f0bbc3ea6421376b8ea3c", + "evidence/logs/rank7-overlay-stage.log.txt": "06150c3f42489b14e981b90ac0e594e7e32bfc6ec4a98f3551cf53b6d18acd36", + "evidence/pr2979/ADAPTER-DERIVATION.json": "abfe60c965953c567392b587cbcc4703f2f80fc60e267539251a1eac0f9db2f3", + "evidence/pr2979/ADMISSION-RESULT.json": "be9652312a88fd670eb09a4303679b4e875516d02a008ce90ccbca8a92e6b2ac", + "evidence/pr2979/ADMISSION-STAGES.json": "bf2fcb3012c65d861ccc4ba5950e5b97cbff31f603268afdb7e9ae2a0ac9696f", + "evidence/pr2979/ENVIRONMENT.json": "c6faaaa9b538ddbf0ea3c624bbe2f1c7e4074f8cb504d4bee0f3353f1e7f32a1", + "evidence/pr2979/FULL-NATIVE-RECEIPT.json": "6d27c89d5e3a2c7f28387e4b20c462b0dff6c9fa92aacdde715d4b29cc286d41", + "evidence/pr2979/FULL-NATIVE-RESULT.json": "ee10e7b8f2196b3bd28f5389b9be3372c216f3cfe67e00c7a2bcd130746ac364", + "evidence/pr2979/FULL-REPLAY-RESULT.json": "0293261edd3696408e1067df358644a7f43fd05f6c7b78e255aeac3f4a2530a2", + "evidence/pr2979/FULL-REPLAY-STAGES.json": "d8764bbbc029b13e20dc881783c44b74c689064d9ddf8286fc18371f2ec0d503", + "evidence/pr2979/OVERLAY-DERIVATION.json": "145a9491cca7b22f0d04cccb66795a7b6914a1ee415ecfc65e1db7b586573826", + "evidence/pr2979/RELEASE-RECEIPT.json": "473a5f8e048e45d7e83747077a18985ef87d58da370ca3f2fe5748a057ffdb2d", + "evidence/pr2979/RETAINED-BOOTSTRAP-RECEIPT.json": "ba9ef5709319ceb54928aed10cb250f3d018b3f654a2902c53df27d9e2e1157f", + "evidence/pr2979/RUNTIME-PATCHES.json": "6e4fe608caae2cdc28abc0ab772514d03ede2a4a50b06e9ede2853ab6889f218", + "evidence/pr2979/logs/admission-discovery.log.txt": "68845b7e19574ee2040677640848f0f7aaf71854250dfe0470dfae3ff09210b3", + "evidence/pr2979/logs/admission-outer-check_ledger.py.log.txt": "c56f8e0232d749e0ff33b76a8f9de18d28a7bb3abcd736ba69a4b167f2b5a824", + "evidence/pr2979/logs/admission-outer-independent_check.py.log.txt": "7eab2e50c0b03f058ae320c4791a0ea5a0ae3eae3393d29971663428ca79547a", + "evidence/pr2979/logs/admission-owners.log.txt": "dc4840d279e447e42af2ece9437cb92ab13c7f631440911ca5e8a676e3fa418c", + "evidence/pr2979/logs/admission-parent-lift.log.txt": "7b6249a123ca39fae7b7a6339dd9e8ae8777b081f4336418f2cc101704b70644", + "evidence/pr2979/logs/admission-rebind.log.txt": "6126af0a7935a1605ddad6074978494d462ed67cbd54be809ce13fcb32469d67", + "evidence/pr2979/logs/admission-release.log.txt": "d1e575ccd284596605baf38e5ed5b751cd5f506572ef9cfc578bd88d917b46a0", + "evidence/pr2979/logs/complete-admission.log.txt": "37584a0aed98b08f491b676ba0e4914518027f556495b1ae4e8a9a123d360b4f", + "evidence/pr2979/logs/derive-closed-adapters.log.txt": "d11d75855720cfa75a26f667a61467b5122a7b7ae5521030509bf1cbdd00a496", + "evidence/pr2979/logs/export-pr2833.log.txt": "0fa7e0c6a0f0e31c60aadd0fe2afa6841d046d3272a02d3dc873f999b8508654", + "evidence/pr2979/logs/export-pr2894.log.txt": "6bd8df30779863897e48441608240db6a7e3fcbd0754511e44f854f3a5c462a6", + "evidence/pr2979/logs/four-kernel-stage.log.txt": "f2bbb6462b3f5bb8a6415bb33c0c35355353b13343ddb90961660f7473caa5a2", + "evidence/pr2979/logs/fresh-current-native.log.txt": "d7581123b0f3330f2598e7758ccbca466018d2599124fc6ceb1b678a9ee27dec", + "evidence/pr2979/logs/fresh-retained-bootstrap.log.txt": "4a1625fdd9a947187583e67492c492f309e28669082f2e6f2aa97b5da345ea29", + "evidence/pr2979/logs/paired-extension-stage.log.txt": "61cc77beeae833d7473b5c5338b176b150f95f6652a888c0307f080674cfde35", + "evidence/pr2979/logs/parent-paired-stage.log.txt": "d80d8494c48816e3acf662db00cc0077a888b82392d736826f73beb1c4248299", + "evidence/pr2979/logs/preload-stage.log.txt": "2eb7601c48840a39c58eb838886aed00a531349b259f0bbc3ea6421376b8ea3c", + "evidence/pr2979/logs/rank7-overlay-stage.log.txt": "06150c3f42489b14e981b90ac0e594e7e32bfc6ec4a98f3551cf53b6d18acd36", + "producer.py": "d4577cee26314b36b59723cc68df9b8895b22449cc15807c95f325f555c4da3a", + "reproduce.py": "576152d744078d5cb66cded265c189691403f73b277ce2ed0e80708d77629eda", + "run_registered.py": "3439d214a163223c2ca7b50562bfb24b284551d5c8a36f4cc74791f890d4dd4a", + "structure.py": "83f63b6d9a1a543ecfa2c98d479dbe4e7a1c3caf6fd1c3566123308efbc32e96", + "tools/audit_allocation_moment.py": "c632527ecf092f013862660dbd7f52b599a50b321a8aa88ddc45af0547e79cb5", + "tools/build_edits.py": "7292e18bbbcd2fabc87ed423e3d5d648d03709d0a061563087786ad0d57fb832", + "tools/build_overlay.py": "9d98ace9bffb37aeebd05b93ed386f73e6eee169d960e4956cf14a66e6852140", + "tools/derive_adapters.py": "5c06828151cd230add3e328b42dda72c4a2ed1075bd2902f38ee28727870bc84", + "tools/relax.py": "0fed1c56b50a2e6d44deeeb6db0f1c7e1f71b86d1747130e1a9202216249a728", + "tools/relax_exact.py": "baf1855d6095c951a90d19a0d8094bd33290519940b732e2b758c5647830f044", + "tools/root.py": "55f5aca39b5ee2fe4687ac8863e6c24569010f27a332883c069b8e14b8fe09e3", + "tools/wordedit.py": "cae8ae0f5d7fb3387ec6922fe966068aae05e3a6d3586830d4361b650cfb3617", + "vendor/audit_local.py": "a38940094f7d19cd6376aafdd4734fa68eabc9aff4c98c3c4a3e9540328b1c90", + "vendor/declared_rewrites.py": "2509f1335e47543f8814b42d6bf83032b30c5899b4f7cc62a6adc03f5138ae13", + "vendor/preload_move.py": "c8fda4674644fcd5cbf39b6645ce148a21daa90a998b678cbe51f970b78b0044", + "verify.py": "5c6bdd35c81d9a2b3a12e020874a5d32e8b0783a3c35bff7a28d070586003401", + "verify_manifest.py": "723d726dbbe5b65a49caecae0f1aab664a1413fb639abfd3e826a5a538e14e5b", + "verify_release.py": "812c963df6434a370d1e8031af8d8d8e8acd1ae4ab36124edbbd8e3106ae86cf" +} diff --git a/research/rank7-six-skip-cap-release/vendor/PR3042-NOTICE b/research/rank7-six-skip-cap-release/vendor/PR3042-NOTICE new file mode 100644 index 0000000000..89c20926ea --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/PR3042-NOTICE @@ -0,0 +1,28 @@ +research/rank7-joint-endframes +Copyright 2026 Marius-Paul Dumitrean. Licensed under the Apache License, Version 2.0. +Prepared with substantial AI assistance (Anthropic Claude, via Claude Code). + +This package retains, byte-identical, Apache-2.0 files from: PR #2942 (Marius-Paul Dumitrean, head +a027b0f6fdb0ab2b42ba10fc31b53960166bf2bf, research/paired-extension-normal45): data/PARENT-base.json.gz and +data/PARENT-extra.json.gz (its data/WORD-*.json.gz), comparators/PR2942-CLAIM.json and tools/wordedit.py; PR #2917 +(Mason Hale, head 224bd5e56041c40078ff6b5fa7393733a215de5c, research/paired-helper-extension): structure.py (Jeremy +Diviney's PR2908 two-sided certificate checker), vendor/audit_local.py (PR2833's independent exact auditor, icekylinx +attribution), vendor/preload_move.py (Jeremy Kothe's PR2894 frame accounting and cleanup), allocation/ORDER.json, +allocation/DISPATCH.json and allocation/vendor/ (independent_owners.py: Tekalign's independent owner checker as vendored +by PR2839/PR2917; PLAN.json.gz, TEMPLATE.json.gz); PR #2957 (Jeremy Kothe, head b74b25f3ccc84c16e1a801d73b2f47e5ea764c78, +research/paired-extension-cap-fill-swaps): vendor/declared_rewrites.py (the pure applier of the fourteen declared +rewrites) and comparators/PR2957-CLAIM.json; PR #2966 (Jeremy Kothe, head e62d3eb9005117d82a9babcfa937ecc53237c490, +research/paired-extension-normal45-rewrites): comparators/PR2966-CLAIM.json; PR #2969 (Dugongue, head +e2ca469b08385d3d5e29a918d66dbefaf889e9f3, research/paired-swap-normal45): allocation/baseline/ (its CLAIM.json and its +allocation ORDER.json and PROFILE.json); and PR #2930 (head 81f3b5d12977eba09e06fbff729167d59faabe90): tools/relax.py, +tools/root.py, tools/relax_exact.py. +data/REWRITES-2957.json is Jeremy Kothe's PR2957 rewrite list, re-addressed to this package's stage-2 word with exact +preimages (every entry keeps a credit field). producer.py follows PR2917's producer.py (Mason Hale) for its paired steps; +verify.py, check_allocation.py, check_cap.py, run_registered.py and reproduce.py adapt our PR2942 versions of PR2917's and +PR2930's; tools/audit_allocation_moment.py is PR2917's exact moment auditor with only its authenticated baseline changed (to +the PR2969 headline); tools/derive_adapters.py generalizes PR2917's adapter derivation (PR2908, Jeremy Diviney); +tools/build_overlay.py follows the overlay conventions of PR2908's and PR2917's builders. construction/allocation/ retains +the flow model of PR2857/PR2843 (Yiyang Lu, Marius-Paul Dumitrean) as adapted for this allocation. All original notices of +the exported predecessor packages remain in force. + +Derived work (Apache-2.0): this package (`research/rank7-restore-carrier-skips`) builds on PR #2979 (Marius-Paul Dumitrean, head be191346, research/rank7-joint-endframes) and PR #3015 (Jeremy Kothe, jeremykothe2, research/rank7-joint-endframes-restore-edit), retained byte-identical except for the files named in README.md, plus two declared restore edit blocks (`R1_E42` and `R2_E7` in `edits/EDITS.json` and `edits/FINAL-WORD-*.json.gz`) and their re-derived certificates and complete fresh-native admission and release receipts by dcharb78, with AI assistance. PR #2979's own evidence is kept under evidence/pr2979/. diff --git a/research/rank7-six-skip-cap-release/vendor/PR3042-PROVIDERS.json b/research/rank7-six-skip-cap-release/vendor/PR3042-PROVIDERS.json new file mode 100644 index 0000000000..c0575e3903 --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/PR3042-PROVIDERS.json @@ -0,0 +1,842 @@ +{ + "extra": { + "actual_paid_profile": { + "1": 2433, + "2": 712, + "3": 232, + "4": 108, + "5": 18, + "8": 8 + }, + "widths": [ + 9, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 7, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 7, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 8, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 9, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 6, + 6, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 6, + 6, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 6, + 6, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 5, + 5, + 8, + 8, + 8, + 8 + ] + }, + "gauge44": { + "actual_paid_profile": { + "1": 2433, + "2": 712, + "3": 232, + "4": 108, + "5": 18, + "8": 8 + }, + "widths": [ + 9, + 9, + 8, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 7, + 9, + 7, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 7, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 4, + 9, + 4, + 9, + 8, + 9, + 9, + 4, + 7, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 8, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 9, + 9, + 9, + 9, + 9, + 9, + 4, + 9, + 4, + 9, + 4, + 9, + 9, + 9, + 9, + 4, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 9, + 8, + 8, + 9, + 8, + 9, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 8, + 8, + 7, + 7, + 7, + 7, + 8, + 9, + 8, + 9, + 6, + 6, + 7, + 7, + 7, + 7, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 6, + 6, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 7, + 8, + 8, + 9, + 9, + 9, + 9, + 8, + 8, + 8, + 8, + 7, + 7, + 6, + 6, + 9, + 8, + 9, + 8, + 8, + 8, + 8, + 8, + 7, + 7, + 9, + 8, + 9, + 8, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 5, + 5, + 8, + 8, + 8, + 8 + ] + } +} diff --git a/research/rank7-six-skip-cap-release/vendor/cap_proof.py b/research/rank7-six-skip-cap-release/vendor/cap_proof.py new file mode 100644 index 0000000000..28f0995a69 --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/cap_proof.py @@ -0,0 +1,257 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Exact fixed-inventory cap and replica-divisibility certificate. + +The caller must authenticate the root arithmetic module and bind `certificate` +to the words' actual local profile and width inventory. This module checks the +fixed chronology-free pattern relaxation. It does not prove chronological +feasibility or any scalar/native/physical/outer admission obligation. +""" + +from fractions import Fraction +from itertools import product +from math import gcd + +Q = Fraction +WIDTHS = (4, 5, 6, 7, 8, 9) +CAPS = (8, 16, 32, 48) +BINS = (672, 448, 448, 448) +INVENTORY = (26, 2, 16, 52, 99, 213) +LOCAL = {1: 2445, 2: 706, 3: 232, 4: 108, 5: 18, 8: 8} +Q_ROW = (-3, -6, -12, 0, 0, 0, 1, 2, 3, 4) +TIGHT = ( + (8, (8,)), + (16, (8, 8)), + (16, (7, 9)), + (32, (9, 9, 9)), + (32, (8, 8, 8, 8)), + (32, (7, 8, 8, 9)), + (32, (7, 7, 9, 9)), + (32, (6, 8, 9, 9)), + (32, (5, 9, 9, 9)), + (32, (4, 9, 9, 9)), + (48, ()), + (48, (9, 9, 9, 9, 9)), +) + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def patterns(): + """All 2,551 capacity-feasible count vectors; loops have fixed finite bounds.""" + result = [] + for capacity in CAPS: + for counts in product(*(range(capacity // width + 1) for width in WIDTHS)): + idle = capacity - sum(w * n for w, n in zip(WIDTHS, counts, strict=True)) + if idle >= 0: + result.append((capacity, counts, idle)) + need(len(result) == 2551, "changed pattern domain") + return result + + +def column(pattern): + capacity, counts, _ = pattern + return tuple(int(capacity == cap) for cap in CAPS) + counts + + +def inverse(matrix): + """Gauss-Jordan inversion over Q, explicitly restricted to the 10-row model.""" + need(len(matrix) == 10 and all(len(row) == 10 for row in matrix), "matrix shape") + rows = [ + [Q(value) for value in row] + [Q(i == j) for j in range(10)] + for i, row in enumerate(matrix) + ] + for col in range(10): + pivot = next((r for r in range(col, 10) if rows[r][col]), None) + need(pivot is not None, "singular basis") + rows[col], rows[pivot] = rows[pivot], rows[col] + divisor = rows[col][col] + rows[col] = [value / divisor for value in rows[col]] + for r in range(10): + if r != col: + multiple = rows[r][col] + rows[r] = [ + a - multiple * b for a, b in zip(rows[r], rows[col], strict=True) + ] + return [row[10:] for row in rows] + + +def basis_data(certificate, catalogue): + need( + set(certificate["inventory_per_call"]) == set(map(str, WIDTHS)), + "inventory keys", + ) + need( + tuple(Q(certificate["inventory_per_call"][str(w)]) for w in WIDTHS) + == INVENTORY, + "wrong inventory", + ) + need( + {int(r): Q(n) for r, n in certificate["local_per_call"].items()} == LOCAL, + "wrong local profile", + ) + entries = certificate["basis_patterns"] + need(len(entries) == 10, "wrong basis size") + basis, amounts = [], [] + for entry in entries: + widths = entry["widths"] + need(len(widths) <= 12 and all(w in WIDTHS for w in widths), "basis widths") + pattern = ( + entry["capacity"], + tuple(widths.count(w) for w in WIDTHS), + entry["capacity"] - sum(widths), + ) + need(pattern in catalogue, "infeasible basis pattern") + basis.append(pattern) + amounts.append(Q(entry["count_per_replica"])) + need(len(set(basis)) == 10 and all(x >= 0 for x in amounts), "basis feasibility") + columns = [column(p) for p in basis] + matrix = [[columns[k][r] for k in range(10)] for r in range(10)] + rhs = BINS + tuple(9 * n for n in INVENTORY) + need( + all( + sum(matrix[r][k] * amounts[k] for k in range(10)) == rhs[r] + for r in range(10) + ), + "basis does not supply complete counts", + ) + return basis, amounts, inverse(matrix), rhs + + +def reduced_cost(pattern, basis, basis_inverse): + """Exact coefficients of H_r in c_p - a_p^T B^-T c_B.""" + coefficients = {pattern[2]: Q(1)} if pattern[2] else {} + a = column(pattern) + for k, basic in enumerate(basis): + if basic[2]: + amount = -sum(a[j] * basis_inverse[k][j] for j in range(10)) + coefficients[basic[2]] = coefficients.get(basic[2], Q(0)) + amount + return {rank: value for rank, value in coefficients.items() if value} + + +def check_invariant(tight, rhs, amounts): + """A residue identity isolates the only idle-rank-3 tight pattern.""" + for pattern in tight: + value = sum(a * b for a, b in zip(Q_ROW, column(pattern), strict=True)) + is_five_nines = pattern[0] == 48 and pattern[1] == (0, 0, 0, 0, 0, 5) + need(value == 20 * is_five_nines, "tight-pattern invariant failed") + coefficient = sum(a * b for a, b in zip(Q_ROW, rhs, strict=True)) + need(coefficient == 1341 and gcd(coefficient, 20) == 1, "residue coefficient") + need( + all((20 * x).denominator == 1 for x in amounts), + "20 replicas do not integralize the displayed basis", + ) + return { + "identity": "20*N_[9,9,9,9,9]@48 = 1341*T", + "cap_requires_T_multiple_of": 20, + "first_multiple_of_74": 74 * 20 // gcd(74, 20), + "scope": "Pattern integrality; chronological sufficiency is not asserted.", + } + + +def verify_cap(certificate, root_tools): + """Recertify the complete relaxation and strictness on the entire root bracket.""" + catalogue = patterns() + basis, amounts, basis_inverse, rhs = basis_data(certificate, catalogue) + lower, upper = Q(certificate["cap_lower"]), Q(certificate["cap_upper"]) + need( + 0 < lower < upper <= Q(1, 100) and upper - lower <= Q(1, 10**25), "cap bracket" + ) + profile = {rank: Q(9 * amount) for rank, amount in LOCAL.items()} + idle = {} + for pattern, amount in zip(basis, amounts, strict=True): + if pattern[2]: + profile[pattern[2]] = profile.get(pattern[2], Q(0)) + amount + idle[pattern[2]] = idle.get(pattern[2], Q(0)) + amount + need( + {int(r): Q(n) for r, n in certificate["idle_per_replica"].items()} == idle, + "stored idle differs from primal basis", + ) + need(sum(r * n for r, n in profile.items()) == 65088, "rank mass") + need( + root_tools.moment(profile, lower, 896)[1] + < 1 + < root_tools.moment(profile, upper, 896)[0], + "unproved cap root bracket", + ) + intervals = { + rank: (root_tools.H(rank, lower)[0], root_tools.H(rank, upper)[1]) + for rank in range(1, 49) + } + tight, slacks = [], [] + for pattern in catalogue: + coefficients = reduced_cost(pattern, basis, basis_inverse) + if not coefficients: + tight.append(pattern) + else: + slack = sum( + v * intervals[r][0 if v > 0 else 1] for r, v in coefficients.items() + ) + need(slack > 0, "reduced cost is not strictly positive on cap bracket") + slacks.append(slack) + named = { + (cap, tuple(w for w, n in zip(WIDTHS, counts, strict=True) for _ in range(n))) + for cap, counts, _ in tight + } + need(named == set(TIGHT) and len(slacks) == 2539, "tight domain differs") + invariant = check_invariant(tight, rhs, amounts) + return { + "idle_per_replica": {str(r): str(n) for r, n in sorted(idle.items())}, + "patterns": len(catalogue), + "strict_patterns": len(slacks), + "tight_patterns": len(tight), + "minimum_slack_lower": str(min(slacks)), + "cap_lower": str(lower), + "cap_upper": str(upper), + "invariant": invariant, + } + + +def unit_log_interval(y): + """Three atanh terms and a geometric tail for 1 <= y <= 2.""" + need(Q(1) <= y <= Q(2), "unit log argument") + z = (y - 1) / (y + 1) + lower = 2 * sum(z ** (2 * j + 1) / (2 * j + 1) for j in range(3)) + return lower, lower + 2 * z**7 / (7 * (1 - z * z)) + + +def prove_exchange_sign(): + """For 0 < b <= 1/100, 20H1+17H3-15H5-10H14+3H48 < 0.""" + l2, u2 = unit_log_interval(Q(2)) + a3, b3 = unit_log_interval(Q(3, 2)) + a5, b5 = unit_log_interval(Q(5, 4)) + a14, b14 = unit_log_interval(Q(7, 4)) + logs = { + 2: (l2, u2), + 3: (l2 + a3, u2 + b3), + 5: (2 * l2 + a5, 2 * u2 + b5), + 14: (3 * l2 + a14, 3 * u2 + b14), + } + limits = { + 2: (Q(69, 100), Q(7, 10)), + 3: (Q(109, 100), Q(11, 10)), + 5: (Q(0), Q(161, 100)), + 14: (Q(0), Q(66, 25)), + } + for rank, (lower, upper) in logs.items(): + need(limits[rank][0] < lower <= upper < limits[rank][1], "log bound") + need( + 4 * logs[2][0] + logs[3][0] > Q(77, 20) + and 4 * logs[2][1] + logs[3][1] < Q(39, 10), + "log48 bounds", + ) + need(20 + 51 - 75 - 140 + 144 == 0, "f(0) differs") + derivative_upper = ( + 75 * Q(161, 100) + + 140 * Q(66, 25) + - 51 * Q(109, 100) * Q(989, 1000) + - 144 * Q(77, 20) * Q(961, 1000) + ) + need(derivative_upper == Q(-9740691, 100000) < 0, "derivative sign") + return { + "delta": {1: 20, 3: 17, 5: -15, 14: -10, 48: 3}, + "saving_interval": "0 < b <= 1/100", + "factored_f_derivative_upper": str(derivative_upper), + } diff --git a/research/rank7-six-skip-cap-release/vendor/lift.py b/research/rank7-six-skip-cap-release/vendor/lift.py new file mode 100644 index 0000000000..717067dfce --- /dev/null +++ b/research/rank7-six-skip-cap-release/vendor/lift.py @@ -0,0 +1,152 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Ten interleaved copies and a sparse, preimage-bound allocation journal.""" + +from collections import Counter, defaultdict + +COPIES = 10 +BASE_T = 74 +HELPERS = 408 +BASE_ROLES = 9 * BASE_T * HELPERS +MAX_EDITS = 2000 + + +def need(condition, message): + if not condition: + raise ValueError(message) + + +def row_at(base, index): + need(type(index) is int and 0 <= index < COPIES * BASE_ROLES, "lift row index") + copy, original = divmod(index, BASE_ROLES) + time, helper, owner, child, port, offset = base[original] + return [COPIES * time + copy, helper, owner + BASE_T * copy, child, port, offset] + + +def patch(base, journal): + need(len(base) == BASE_ROLES, "base role count") + need(journal.get("copies") == COPIES, "journal lift multiplicity") + edits = journal.get("edits") + need(type(edits) is list and 0 < len(edits) <= MAX_EDITS, "journal size") + result = {} + for entry in edits: + need(type(entry) is list and len(entry) == 3, "edit shape") + index, before, after = entry + need(type(index) is int, "journal integer index") + need(index not in result, "duplicate journal index") + need(before == row_at(base, index), "journal preimage") + need(type(after) is list and len(after) == 6, "replacement row shape") + need(all(type(x) is int for x in after), "replacement integers") + need(after[:2] == before[:2], "fixed call/helper identity") + result[index] = after + return result + + +class Rows: + """Bounded streaming literal witness, in copy-major source-row order.""" + + def __init__(self, base, edits): + need(len(base) == BASE_ROLES, "stream base count") + self.base, self.edits = base, edits + + def __len__(self): + return COPIES * BASE_ROLES + + def __iter__(self): + for index in range(len(self)): + yield self.edits[index] if index in self.edits else row_at(self.base, index) + + +def chronology(order, dispatch): + need(len(order) == len(dispatch) == 9 * BASE_T, "base chronology size") + lifted_order, lifted_dispatch = [], {} + for stage, owner in order: + for copy in range(COPIES): + call = (stage, owner + BASE_T * copy) + lifted_order.append(list(call)) + lifted_dispatch[call] = dispatch[stage, owner] + return lifted_order, lifted_dispatch + + +def destination_window(key, windows): + owner, child, port = key + need(0 <= owner < COPIES * BASE_T and 0 <= port < 112, "destination bounds") + copy, original = divmod(owner, BASE_T) + need((original, child) in windows, "destination child") + capacity, lower, upper = windows[original, child] + lower = -1 if lower == -1 else COPIES * lower + copy + return capacity, lower, COPIES * upper + copy + + +def bin_members(base, index, key, edits): + copy, owner = divmod(key[0], BASE_T) + members = {} + for original in index.get((owner, key[1], key[2]), []): + global_index = copy * BASE_ROLES + original + if global_index not in edits: + members[global_index] = row_at(base, global_index) + for global_index, row in edits.items(): + if tuple(row[2:5]) == key: + members[global_index] = row + return members + + +def check_bin(key, members, widths, windows): + capacity, lower, upper = destination_window(key, windows) + mask, pattern = 0, [] + for row in members.values(): + time, helper, _, _, _, offset = row + need(lower < time <= upper, "changed source window") + width = widths[time // COPIES][helper] + need(0 <= offset and offset + width <= capacity, "changed capacity") + bits = ((1 << width) - 1) << offset + need(mask & bits == 0, "changed bin overlap") + mask |= bits + pattern.append(width) + used = mask.bit_count() + need(mask == (1 << used) - 1, "changed compact prefix") + return capacity - used, (capacity, tuple(sorted(pattern))) + + +def affected_calls(base, edits, families): + times = {row[0] for row in edits.values()} + need(len(times) <= MAX_EDITS, "affected call count") + for time in times: + original, copy = divmod(time, COPIES) + occupied = set() + for helper in range(HELPERS): + index = copy * BASE_ROLES + original * HELPERS + helper + row = edits[index] if index in edits else row_at(base, index) + family = row[2], families[row[3]], row[4] + need(family not in occupied, "changed same-call physical family") + occupied.add(family) + return len(times) + + +def differential(base, edits, widths, windows, families): + index = defaultdict(list) + for original, row in enumerate(base): + need(row[:2] == [original // HELPERS, original % HELPERS], "base row ordering") + index[tuple(row[2:5])].append(original) + keys = {tuple(row_at(base, i)[2:5]) for i in edits} + keys.update(tuple(row[2:5]) for row in edits.values()) + need(len(keys) <= 2 * MAX_EDITS, "affected bin count") + delta, pattern_delta = Counter(), Counter() + for key in sorted(keys): + before = bin_members(base, index, key, {}) + after = bin_members(base, index, key, edits) + old_idle, old_pattern = check_bin(key, before, widths, windows) + new_idle, new_pattern = check_bin(key, after, widths, windows) + if old_idle: + delta[old_idle] -= 1 + if new_idle: + delta[new_idle] += 1 + pattern_delta[old_pattern] -= 1 + pattern_delta[new_pattern] += 1 + return { + "affected_bins": len(keys), + "affected_calls": affected_calls(base, edits, families), + "idle_delta": {rank: count for rank, count in sorted(delta.items()) if count}, + "pattern_delta": [ + [cap, list(ws), n] for (cap, ws), n in sorted(pattern_delta.items()) if n + ], + } diff --git a/research/rank7-six-skip-cap-release/verify.py b/research/rank7-six-skip-cap-release/verify.py new file mode 100644 index 0000000000..9ef285b960 --- /dev/null +++ b/research/rank7-six-skip-cap-release/verify.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Source-bound finite verification of the six-skip/T740 composition. + +Jeremy Diviney with substantial OpenAI Codex assistance. The exact frame, +operator, owner, interval arithmetic, lift and cap engines are retained from +the credited predecessors. New here is their binding to this composition. +""" +import argparse +import collections +import contextlib +import copy +from fractions import Fraction as Q +import gzip +import hashlib +import io +import json +from pathlib import Path +import tempfile +import types + +P=Path(__file__).resolve().parent +ROOT=P.parents[1] +MAIN=ROOT/'research/rank7-joint-endframes' +LOCAL={1:2433,2:712,3:232,4:108,5:18,8:8} +IDLE={1:173160,3:49617,5:17205,48:281903} +PROFILE={1:16376940,2:4741920,3:1594737,4:719280,5:137085,8:53280,48:281903} + +def need(ok,why): + if not ok:raise ValueError(why) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +def read(p): + raw=p.read_bytes() + return json.loads(gzip.decompress(raw) if p.suffix=='.gz' else raw) +def authenticate(): + paths=list(P.rglob('*')) + need(not any(p.is_symlink() for p in paths),'regular package files') + actual={p.relative_to(P).as_posix():sha(p) for p in paths if p.is_file() and p!=P/'MANIFEST.json'} + need(actual==read(P/'MANIFEST.json'),'complete published package inventory') + for path,expected in read(P/'SOURCE-PINS.json').items():need(sha(ROOT/path)==expected,'external source '+path) + for r in read(P/'VENDOR.json'):need(sha(P/r['path'])==r['sha256'],'vendor source '+r['path']) +def load(p,name): + m=types.ModuleType(name);m.__file__=str(p) + exec(compile(p.read_bytes(),str(p),'exec'),m.__dict__) + return m + +def apply_journal(fill,journal): + """PR3018 journal semantics, following Petalas's PR3021 apply_exchange.""" + rows=[r.copy() for r in fill['rows']];seen=set() + need(len(rows)==271728 and len(journal['edits'])==103,'complete base and journal') + for i,before,after in journal['edits']: + need(type(i)is int and 0<=iprevious,'strict improvement over PR3042') + bad=copy.deepcopy(journal);bad['edits'][0][1][0]+=1 + controls.append(rejection(lambda:apply_journal(base,bad),'changed journal preimage')) + controls.append(rejection(lambda:stock(buffers=90),'omitted private buffer')) + controls.append(rejection(lambda:stock(payload=1511),'insufficient payload')) + badprofile=PROFILE.copy();badprofile[1]-=1 + controls.append(rejection(lambda:root.kappa_from_profile(badprofile,740),'omitted paid child')) + return dict(status='PASS_SIX_SKIP_T740_FINITE',words=checks,owners=owner,stock=actual_stock,materialized=materialized, + profile=PROFILE,root=[str(lo),str(hi)],packing_cap=cap_result,realized_cap_fraction='1 (exact same moment profile)', + kappa=str(headline),baseline_kappa=str(previous),gain=str(headline-previous),controls=controls, + scope='Finite exact word/geometry/moment/cap checks. Stored release binding is separate; inherited source/native/compiler/physical/all-size hypotheses remain.') + +def main(): + p=argparse.ArgumentParser(description=__doc__);p.add_argument('--write',type=Path);p.add_argument('--finite-only',action='store_true');a=p.parse_args() + result=json.loads(json.dumps(finite(),sort_keys=True)) + if a.write:a.write.write_text(json.dumps(result,indent=2,sort_keys=True)+'\n') + else:need(result==read(P/'evidence/FINITE.json'),'committed finite receipt') + if not a.finite_only: + from verify_release import check + check(result) + print(result['status'],result['kappa'],'controls',len(result['controls']),flush=True) + +if __name__=='__main__':main() diff --git a/research/rank7-six-skip-cap-release/verify_release.py b/research/rank7-six-skip-cap-release/verify_release.py new file mode 100644 index 0000000000..58a4161d34 --- /dev/null +++ b/research/rank7-six-skip-cap-release/verify_release.py @@ -0,0 +1,98 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: Apache-2.0 +"""Check stored release bindings; this does not rerun native or outer stages. + +The receipt-binding pattern follows Nick Petalas's PR3030. The scientific +engines and actual release evidence are separately identified in the package. +""" +import copy +import gzip +import hashlib +import json +from fractions import Fraction as Q +from pathlib import Path + +P=Path(__file__).resolve().parent +E=P/'evidence' +SOURCE='130650ad8833f6df88528c560e4d1cfbae084f4b15a64788a332ddcaff472a17' +STAGES=['export-pr2894','export-pr2833','four-kernel-stage','preload-stage','parent-paired-stage','paired-extension-stage','rank7-overlay-stage','declared-edit-stage','derive-closed-adapters','fresh-current-native','complete-admission'] + +def need(ok,why): + if not ok:raise ValueError(why) +def read(p):return json.loads(p.read_bytes()) +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() + +def validate(records,finite,bindings,invoice,materialized,outer): + full,admission,release,native=records + need(full['status']=='PASS_SIX_SKIP_T740_COMPLETE_RELEASE','composition release') + need(admission['status']=='PASS_REPLICA_ORDER_FILL_DERIVATIVE_COMPLETE_RELEASE','complete admission') + need(release['status']=='PASS_RELEASE','complete outer release') + need(full['admission_sha256']==bindings['admission'],'admission binding') + need(full['release_receipt_sha256']==admission['release_receipt_sha256']==bindings['release'],'release binding') + need(full['native_receipt_sha256']==admission['native_receipt_sha256']==bindings['native'],'native binding') + need(admission['fill_sha256']==materialized['sha256'],'actual admitted gzip input') + need(materialized['payload_sha256']==finite['materialized']['fill_payload_sha256'],'literal checked fill payload') + for key in ['order_sha256','dispatch_sha256']: + need(admission[key]==materialized[key]==finite['materialized'][key],'literal allocation '+key) + need(admission['source_manifest_sha256']==native['manifest_sha256']==full['source_manifest_sha256']==SOURCE,'same six-skip source') + need(native['status']=='PASS_COMPOSED_FRESH_NATIVE_PROVIDERS_AND_AUTHENTICATED_CACHE' and native['fresh_current_provider_count']==2,'two fresh current native providers') + for tag in ['base','extra']:need(native['providers'][tag]['word_sha256']==sha(P/f'words/{tag}.json.gz'),'native literal word '+tag) + need(full['fresh_retained_bootstrap'] is False and native['fresh_retained_parent'] is False and native['reused_retained_parent'] is True,'explicit authenticated retained reuse') + need(native['reused_retained_native_count']==2 and native['fresh_retained_native_count']==0,'retained cache accounting') + need(admission['replicas']==740,'T740 admission') + expected={int(r):n for r,n in finite['profile'].items()} + need({int(r):n for r,n in admission['profile'].items()}==expected,'complete admitted bill') + need(admission['package_manifest_sha256']==release['manifest_sha256'],'same released package') + endpoint=Q(finite['kappa']) + need(endpoint==Q(full['kappa'])==Q(admission['kappa'])==Q(release['kappa_decimal'])==Q(outer['kappa_rational'])==Q(outer['kappa']),'same modern outer endpoint') + need(Q(full['baseline_kappa'])==Q(finite['baseline_kappa']) and Q(full['gain'])==Q(finite['gain']),'same strict comparison') + need(Q(finite['baseline_kappa'])F8vh_xt|8&Z+9Ut9n=M z-Q9bw`_kG?90dc@;5BCj_9-qUFD%QTp`a|vU~J^{lhMk_-VS7;v%QKz0EzOEk#HHz zxm(t(TihftU^orDABo`kP|q~!iuez3x)$H$!XlAAKA&28FTdpT)!=i!`(wQO^S%1> z&hN$kbNv%oEt3H_eZAiPeCXCkv|s>fL+~e3@{IF8x!VC@F2}TJ5byE#hXsi__5WP< zdlmY4^3xmD-_reT8r@(%#=YDAc=hvhb|m)$vZC)@F^F%x`@^7_iK|`-eS#3<;?WkL zo88-|kfB_N8}~BrVIh!7*2qStACg%e$veiwAi5xz%QV*vO*(EqI+BCFuA4FU!NcH{ z;3~C#hQAlo=!AwwUbW%AuX}<+w8v{QN8f-2LPQ}^N0&srlBZllv%ZX%pKt4XkZ2@e zB)>rp{s1Ic1!^n_?M*7jgCPD%>gs6!8AG&!ZB!e83WbLwdc&TH67v}c;m(c)UAuVL zA2S*ivDxoO9$?zs><@E`14c$4KK4F*p~ce5#o~2-!6}IDuZwkhh&65{Ob`EnY36?T zb~kus|3NsU>o#0h#=r_Rh2eG~2f$k9u8P0V6mDj67>&*SH%eTl|gjUQ17PYyP1 zW1)-Qar=RKCqcg)m1I{f4K^GuOD9#7L@_U&U`bjnz0g$>C2CRfYozgAN5WKFIDt;m zF(lZQj-<8()A*x=F7z>C@`LDYxjx!3V@0S9Gn<)T27uQKDXZ&eTj@JF!)6C2bHF*Q z;V#+bA2Sn)wFB3G{ZVja??MVdF-3+;*ha?)WSL%%>K*EwSu}*-m;eCHh$x|;VUWPM zt2k#;tAYqGzKuUC#XtIyKr zY_wD+PE_8w3j;z8tpRi$RiHIGMZMq#nY-ZfElJU7ypW?=Lxw@USdn}DMMx+Yn8`CH zjqYK+Kla^&`PGxBYlJ}Qz8U`6P)B@4uTc}_NBQ}X-Gh5K0lF5cb`)p`f4PBVeuI>` z)G7(ECTV^6wJ`ufAa0l`n2>VE<^!Uut&7>i$PoJT_&XzF0HK|j1n3oHOTeTxWG`*6 zy6i2}OG%0;i{_ji)(&jHeN4P3Gyi0y`OW?U$OgG%-F8T3v%u+`#H}$nKdf&#s{hdC zI-K@0%F3?#RU#Qlv1ORo0VKEG)-QI$J`GY(oRtYg3H0nvbDZ?NlQkQdCF zGyeTv>Qon6gjb2^K-1c2taBx9VgCA2_|8_bN2J8YLq>^?{=KX2&$lsw$4)O0V#fOx zP9JYSxo|mg|0Farmfhsq=D#^5>qmU4%F0h3Ol$91z37Q`$K;N%GYDm{$ z%)B868r#a7_p)9A$`c@IJum+OT0I*D-IaO@&Z$RtZPUyzF7&-ZeZA8tE|_@Kz6GpX zd)B@R#SXX29}$Y~>tYVPqo9uHXi)H#8#)pQ&0rgbEee|MVHmQ8hG59t0VE+_V6HGW zDHh-Q)xhX_$#?AoLODnVZ6Qdc-F05X?M4GC&#OE2I6`$onGC^uDGizJ-u@Qtd^cs* z+*M!6vN~aB=7#}{B!6FGoPP&x_Xu$Bv6hV8rR-N3`XGe@Z(N! zOmD8d3xic0YCF<^0J(oMo%0!xDKOFL9x(XZ5oyMFOxW`K6*JE_R1n7u7R_8N(^_GF zYXq*;a@2IL9~x{DeaA2)K}rpRP8j%skhi~gt}!Xbke>;6iU}d+DH?m$=idSWA?bO& zK|B7vNSt=ur851!{eY0&rxVg9O2f(T%^&`Rnq0)wQM)550*s?elOAav^kdxaS6kBD zw#ned1)I70z5x!jCV+vjD`4GqFktt31a))v^SMHN)iMS0tI)#!B25sEhSpO%E;mFi zke*a6LzQ&0Rrw&uHMoCztuCLRnX@qLyc{SiV^pT{w0!rSn#%(Xqk5qNPhle5=TOml zEb|~IXU1TAL7UM!K>k<7mgXu5OtBnUGA z0>Z#ahPVc61e0PJHwfKMY}h4E0;WE6A`>hE6g5yPjMgYiqy=+F-rvM>#892NRdxZ6 zNi%%I7%)(2@vR54YE5nuyR!U{U4kTmC~!Gu8{A+{l(?qfkf|Yolt&v57b!@ak*Sq^ z3L5GY;u)=I?$;aa)3**8{~PL_%W>CD3Xt357J_B@pAd|@rWlsZlwd|12-RU#F#FF$ z7c|lnZnb;>(%@(;lp$T?5_UcayrF@>M1mua)QVn88wEQ z`R^p8B^@oFlzObTaYQy}lPAzt%I-o0?K*#h>|?Om+BGA(o96~V%oR5zgO5l;p5BfI zmh6G&v~I;h`SakV0$M_MqApNmZ(l47gA;e6=%E4#wK|{-r*{^WRRWkYbn z!X)A6Rjv5I{8IHW##IeXBDIl|oO5o)CIl8@n+Nz8P+5akk?2U@iS3N+970#2u1K92 zbvb|u9d3yujB-#G7uv$OfqC0?Np~Gx*G?_NP7#8Av0QquCV&pc4zgGHE}n-;>#vPC zOck+|@ERu=e5J%^4>oD#cY8B;wRT~3Q^@w3z`TreHV;!mi$ca2bHWwZ8d#E+L4bNS z6tHh@fGkF<5vd0$h{0}Mc0uhF#R3A`I2d(q+5C1y{}?(9tXH6a*G6@vliCIguAS#w zbX=foIUvq>NFWd}4Ok$DXu`1};qI!dNQg^tEi1bck0 zjG@Vg_)OozChOdIJHtG9eRWtaf$f}Ljen3|`^Os$rfELzfO~{+PZ(I>x0rmT zaDKQ0@vp6@;B=>U%RwV?`egq8M+8JRPy`@nplRPJ+|qaRyM{TLr+U>Es*l)VNhdp# z1guBhLQLpJY$WpA%GJNP_f${tk-HWi@oocyJrnj?GSEE2l|t?f#W2pz-=4-2YS zF97^~4?o^xbI~-W7cNjG)b>tMbcdORSr|KT7uF3bQHUHh7kmH^!|IZqhl1t~#u){| zQ~{Pf{S0BzEPN7=?RgMF=XKx^_XhdxNzt+8*njC1(tUs)+i{{U15MxXtSasx zZi*o_Pu$-+l*wr%-*nKNTGWdF9n_<5hdWC1AtVnUJS1i5@*)0hHXoIK83v0)KMC7z ztY2&ZhAtNs3!9vtQ5g}`@KathI?Fxf^Xs>WGn6R7TPL%nh<~jfRJ)^(vJs`>G$TiIxzrDzff}e2n(=_G z0ipimoL2BgOpKCR*FJp({$rVsGTMHVnq{V;UgB32<(`PJ!Qw2wGf-OoL z$!@mD3j&Ss*ka42r13{27hN|TU3^48XEetvWCfJW-IO~s2C5x9XtK|c%RKlm%Zy#j z3^~KSB)q^}iv-@2{5wKmdvlp^0r84>xEgYcTIY3l_fCFp}0tB^WRc7{NReSmPl6{f=&xS?x&Kpp)onbD(0zb|9L*Qp}Z*Y01Ct=9#THP@j{}(=0PYg&- zMsD7eOgVupeaXnw2QW7!FlUqSngysW`tYI?2o>kP zU%a|I{k!q{`xX~X1Y1nspS|da<$0kIVFzcwmnIF@LiL_)JS1f`qR~lM}4axKgNAPAGy>f z@|F0AvQFcrj!w@g1Sc{8wEpU!1Md$F|H!0syf zdx2gt>qLD~O?m&#c|ZV#Zq)ZWf20b3MngxYUvvn~QvTDE*rS`k{`pN@G;}1?zV%U8O$Ls12os7LsW6;M&%n$ub;KVqByL$SY2xL5r)UJti$9kSQO%?X+C{92okB zDFMVEaVS2iyNwFFCKB7VLG@FWeDo2S50Ke-$|w^@kdJyc1~5dBEi`~!gPtZy6ZJ}P zK;I6``cd9@BW47Il^kLBo-EW64~k6Y#VqE<sJkXY>vr6@it2MGpUvCI&3RJ(%QS#8iOmhljR`U|s2%+#uN>WEAiq$c(XClK?j z>UNAJ9uNrxB%BNLY&B4vHWtx_Fo1hKNqRn-tP-q9n_XdQc^`SF`2LD5jZt@Qu$U-p zqP(!kk6CW>;G}gJ_2R1PgF^9)T0GRu1q(J+axfjJf^T^KQc>Ylma}FRV(|NTIA;wt zv$HGG!eQ#Sb~}O@kcgp>c`Okdbx1SP(LGcoOH{-? z9d9*J<Mi6ajlqse%X`ZI$D zB^&oC>0i;PE1V#n5G3vh0vMq15ti7d%Rpc@amm(1+>Po<(u`4LSz!JvnYBOp<+3|& zE5ic!3j>Vb)^lj$RKGV_+}=;Y-6Z@z^s8Urr>yP+@j7$=$&6Y&0o{Dm6{GA5F(wOC zaUuwd0enK3xE2w34=%v=BpLG+n}-=;ZW2xadC+nQ9}FNYgN4oGvNUA8Rig2;vp>TE z#!ZFX>(;qn*r%ruw*= z;^C>JoegVYYL_$+FbOCG0V#@2K%>kkh|M1=Ad$rgj%e$d%*PQ`uy+%!k&#Ng5i?K( zP5xi0{GAMz53Wv_H7&Bd(u0XWJ+IJc?U`9OUG53_xX+i!WXX8WtvB&&+Q^(ibJ^!j z3_zy(NLuIsx!Xy$^mD0d=O7g%+@>p>$dDzbBp~RI=3ffT9Kw+(f<*S=>*d1NCxV(= zEwU5bOLQ0gZ)o#VfyFci->xKhjYQ_)8O@D#4s10i$}KN@y}UzL~kbd zzCuEn5C067GS4N=bH^O4 zEPfp8-_jIM72pkM#QwI3PofC47sG;0%8AB@k|8qjIpIwhv|FD^;L_ zk^gbNp+a>JGy5e%UJtrl7hrF~4$W^Tc>N!L*207EkvB0xJb~$Aa?dcq)L~dol(~R> zA(X?qU4E5x*mtUDHmc}foq~zxt^w|4_(o;b>!?ID2p8Qk131tOJ1H$1D(LA}Lb|5DHW!ylLyz<3N%%q9Yn%K4MGtxZEWd`L9xKU|D6pVFkZJ$5Ik{i@BI;FO~!+ z=@^xR6QYf>J;9Z;!2PE}%31opN~IO0G-Hg>07H%p#{Q4c%vbV~{v)(_oUfhT*iz(D zkEOvZ6We6>rRO%HGe)fy1azm+#{%U+?ej_bWn*kc1vAp zT*4BIealZ(`_&Cshar5XhG-P{n7^S9aXD*kQ1uafH4$98C+4Z`>ODBFrVoR=wF)YP zfaB)YvnX50P3G;Pd;eka{S^O@^vspFD!uCOzC_i4y`tCQ>O8KS^{g`kg;|1`(-8J*6s9ml=&imKs>M z>bfeyT9*5#P+Pq{VTcRtoZHstWnmvqBF(-UcIGA-IYMhZVt&-(1jq z)Uus30rzI^o4~@++U@b0@>ktp`m~^%eh`PF$GO3(*A$TJL6E?HHEh+Cq2dfk(YCQF zU{g0yJS4>8vIi<>%(Q?>OKW6rd*-lPE+m8i%}ZA;j^~#paH}S+IZbkC_k`*4(rwCT zi9wbYflyOqTr5&V_N9aJQH~^B4peVYZ}W|nxXNF+-VOvIR;BE^`c>8S6u(Gza@O3V zaXa>v1^6npng%<+>ad(7j*%BIdET`{oyTd=qzIVEnk#vJk4HL}x9FRtFYhE~j(3=r zV54pD*dGFw=ZDRyHY1SRYS0*~bot?dvlqq5(haaj^J?p;`^G=uaz*(#w36D!cWCF9{qnfmqq}!i-jsV%>&LpAB%IwaQ?TZ^=!Qs*m zdAbE`o-O7(ADFhMPj9;WxhJ6~N~Z-G&M=P)WUqTSuMRh$SD+obU&2ah`J23vDlrEj zJs!rSD&fh>mYB{VIUdHzO)6>MWPADbf|BIQ=@+BkiHISiba;EB{mSq`fCmCE-5PdSzWTPg!ewo0Yw@kSdU-m0aiv8}>jtyF*^A4f zF^V&`_HFqo&Gfe{fw+7t@ooco$y-ErH@bP$wA5S{!rG5C!;n+zcsJSE6?rh|M-Ug? z(Bw|zKu$*T?dO(2Rz`G#ehgbv$}SJ)4hN7E&*t&0337F0bdw)ztni3E2_seea0jee z{l&X_l`Q=Iy6c+vdqjzqa19@d(SCD7e(_YY{3ECv(I5> z)jue2&C|ML+JwqxawL2-{U9C)%!7eH?(@EF^$-H5Uddcs`G~{4k1x2Ci7g)|&WbK8 zT|E?Mpg)~6u|BFNj)g44_77Iu-9HDLPyCp(CiQ2b12pF!qnzT?OMx#7EQ8wVZf<*@z?Qho_7@QaaMBJM{>d(mWa_(mu5+ zmo{#8%x|J?(q-M(Y{GIQV1Z;D$o%&-CK#Any@k=rnOG0I|9Wq*dcj6f+WKmrF}9uB z_3giQloK^j{Pw42cF}$?SAjM$8GK4bSs-B`r_c1W%*O7_mly zJDq(o&~Bqbnz#))47J5v_X6ikOQ=zLKaj(PY?k0UCXCUuTd4^*@oXWt4biuOE@y4g z-y>P$oRB%~3yaYs1-`dZ3%@MyJG;r=h(}{p97U*dBej&^7X{X3#j6Un>+7V`XQ5o1vcXtup-vY+eV=Y4iQ9a+ zwI)&(jK^GB)3bOxt5%8o8^D4f=buKRUY<9da+E=X_N2voTVVIxX3xvDZLm%RV`t-J z^UHWybQRK~G$giXgkJL95#Qy5cy)ml`iBCM9B!I~AWaYg&GmiSc;RaSrL+(dV(_eC z?T?6y>5NjUN5D*LshHujn~Oazu@uh}_isFkVXD!KK_Ko6=3V zD&qEhagXN_IEPyom(a8rhIt4CXEMzdU5Dk5>$OKtV$0^Uj<-hetAvhKA6}Csw$2Yv zJmo#-{fy{8Su*gCN2Y#u*Z+O$?etEsH7nQ*qQB6)gt14_;RZk?_ohe+tnFUj9HrI&H{` zEWTW*e|^gk*!0fDsN8R0_KDxunV>cZ`*XWFezqU#etr?xC3s>l%oqtsB3TCLO$fGN zI+RP7I%eY$i1Q=-xo~_N&1$K9dT?Rke{qj9OY9QJoFii}l7uQdve6^;7*lEu6Xg zPXr)g&8YO5+~$}0!h?A$;x5Rnc(%}ClhY}yUjNs%87u4@H?8Jjl~gz7T)be*+@s-p zr7E^3j){!c!8U!kjOE+3CbG1ZUsEH3$zeM@#65J~MxCH}ACc^dCizts%rFMJwX%(h` zjkz}JVp4zjx3&q6Aeq6VDEN>xjF?bzKO~#y^3?E zx!baFP{i<6rKhk6mk;p@TKg=1cQGivw(sBm3aLq}?C|7_Oq=?VjMw~GMJg z?G5DRZrC|ew$77AK04BX^I<&HTMKPFb;ir3bzS^C+e_?DtVMTV1eeemZ+DRH{Qjwg8Hs#qkMl(b zJDK-NNIuCT#0N8fI|`zSqYoNnzj~FK@w#d;)3piMA-whaHt+f=X>^iWGUhV+mpYyJ zA~Mg>`*2Ung$}&V}Y06Jwkwrx)MIPrr49JRAPkcah|!aV7``id9xqj?4d} z^M$BPhe(n`366xm|4CX5x|pt-v__h+O&Z4V(*OG=kV zc3ph(#v)ZF)L6;%&@8Q(Q%PR7k9WtRIRXZ@^XwQEiHSq&%>md^rxv-Czi_(7_piIb z?7EEIXU-U5W0r@Wpn#!-u$>p3RQZ)2jF`*dCjLpkhFTWYN5c4$B`LYg%9yy$mwLo(ekZWF6>(BDO3%zB zxhqym!7tMx_9A#_d%IY0N=H3~N44+0^pI8XIpzWOUV1C$UuM3`pEm2xxPQTya|GBiEm#2$D% z7Y!c1z9wBX3^I*VMRTOc8U!@?z4X1u)J?f#wFPbu=+^h)TDE2 zQCm+ed|9M#$-g0zJ^$*U>;$p8HA3Dmuw3P?Ty94O6031uE;9-xzq?joE9rD&1__pW zlL7lYm;My)Y)5Jel@Ms>E#{H)s3jIqv4y5Te2g_-y#?==&acj9PGF|x7naLeqSNwtY;TD-8jLP{Ab3_A4*;@^1EErg!K};y^+w@ zx_y-;KJxkqiI|&(jj|+xA0Kz(kvW1T!AEtDI>NtA>V)izKIr$6+RP&_aU_^kl3AK0 z4zJTo>z)hbh<}bUMXbtZpW$(y3H>_x@>0D2c_~C^!BR$IXkND|O~vui=l{HvN0W7! z{wrGq@JC_>`L?7t*{WmNE1O$dz1bAf2{+`e0nUWq#MO{Toy*os(C0IB{gTZ?JNA(h z;BDu7uzHzsm-CuIj(5@O)9N+PiwYfZV&oFadB?f4p6Onko7a1-vprSu;8_NJ*sMd?>B9x!!6BpL z>D4RnF1`oPB`NZ6n_uD_9s}tWn><6~ra=pf`i~jmKLck_!6_(DJXOifM5z+6!eIs4 zzzSsWIT3c8{_FOniY&q52;$fvn6X&u*`I8N72$cuEz)H3JzFNhN4dsZ_lM2-I}$(9 zmWy32REMc9TI%!R{)5S9&6qBd&J|WGMeA-%NTD)sn|-!Ug%K;vr1$?^{%`@4?v*Vd zQ~tgNP}z~4T&i9l>SRjKn7hWh_-Xu11LM4E^>9b~H%XRkyXP|ZWfoB_6!l`2l z_eboXRdn1xY$&@xt#b2*f9lUwxv7v@*E^Etzn4Ed8LgW z-`v=vnX8zZhskNk@vf1tbE`sO*NVxP`EfQ)MY<+5gKF9)qgLNwjn2_C;gca4)y^bQ z>ov3c3=T`_MGX!3Dht}vt#(N5Afo0rOs10tZED%))MHpDpo9Ra_%(@_RU-Rm{PbwD zP7W`EKubNjNj^CCSFU9(6hVs>?FS9S#Xp)^L;g~a;CAgi6miW0k3QRqNfN{i@AR>LmJ_bZ zt3g^fl9?74BK6Cp=r8p%+o7ApE+^CdSM5nk3)2qrB}}5kX4uzvNLk07iM(Ff$f8|$ zK>X4;b}us*6AhVP_L%p*B7{_-pLDM;3V3_mUXSuyet#K(#1rQA8u!8^OAYS_`h~7# zfr1Zu2HOPXJkEN=Ko`4W&ux`uvGlF!jKsn6`oZ%3tXMn2pL znF@IK%m%Gx91!wkP}>q|KoSdL#d@vp+>B!HM;Hh&45Znv&(Ett3{dUm2P*9w(55H7 z3ehkc9{ssYi)MNlJHPXRW>fd+1;-C48|CGyuD5087aZaXF6KgUIv5fg#Z^r2mEcs;r>833CyZpsE? zsRb?9oGAOq(xF}B*Ca5fJZkE9UJ&D>Y!e{z>Ppl#6L)#@ZrfA3-{rlzO2(2C+zs6_ zQEcvh%%dj6C_wz>m|Uzcz#U9VBv&{8C=A z{C(u%gL00HM|0g7CW4;Frma-I^e)Ht@QVm3@(V^mj$I-vz-`Wx5`-*^#?TZVz0pGW z%VPLscGXCT8~sQet`iKA*rV>W2j5wzjM-f1@)Y*@>Az_*P^~u;A3?|51%$fky~-CO zKPsrZEo5cCHIo2ZJ~CC*05sBFY7?vPne4@%eYzhe>ReL^S^G!08Pg)~E>r1Qp2&SQ zL8HVSVKb5sCI&!)YK4!vi*|zMOl9syWuLRI@qfwG)A^Ip=-sJkucNot)Wm4Ql=Za{ z=^B@lzSl5%*lI104W->5@6}iWf_Y1OOa-rUb0#1cU&n`YYvZqZxCgP={*nbC^g3dt z;8o;Pm#+d~<3q>3O11pY16M*v63SI12YyL6=6+`|j7I4n+c*F4FWYpe7ogMk6{3o^ z#0h_6F&DLf6>jd49Z?Ft%wMuW_$eZshyuQ=0Y|6r7y+0j*Y7I7wgDF`&SAH_JW4a&%tOQNXsJIs1#2S2`vnG1Wo zMhrLSXi>aNE;_PVf&c!g?J#7lWooPJkzPgVSSh8!#od50t_Oz{&t&J?_w&Kj)HG-f z7|X}W-eb`+Obc+f(^ zPI6_6B8eeBEx`X)j6e568F$Y}TJcV!-$ji1%=8l)8&Aja~A?)Q~Vu?za?vreuqbyeIShg{7pq$K(Blcx#P?{kK3dA&E_ z^73)HU>&!N-+63WeclNiJ1QqLob=;8OJ(m{G=gvV_E!pBY$#Zd)TZ4942C)E-ksK?&GYgF|cMCh7Rod4K<}cl(OFWO%)WQx+01)n5N;*0EkNpjQna9X@ZWdsPQ15LN=cv_6{! zbb_tzz(Ef3<~m{tcNSv-CfW}?1fH`AmL1M1#E~|t<)wy1&G+CN!Ew9Q<2FX<2 zz9OI)c9cyhl(rzttgrU}`4veU*rJGkfq7jm16VLt+y>By2C#x_M8w@b`v4^6^2 zJvoe^e(c*GL&Cn;-r(YGR`K!ddu7|dO2;eD0u!xX#?EIOG17^K%O}d^=KT;EP-Doc zb5Dr&2ag^G=IE&?PTbts!Xok}SJJvR2e6d}?Sg=Bw4*~YoN--(YsvJ#|APU`;5 zT1)-NPxFixqRFOl?Z@Xx#UFp}>iUcPl{+2$%biI5@NTD+mG2<=4zH#5MCvqjwL7p9 z9>b3u$o$(Gs_okuOZ}@bDYY6KJaPR zm`<*ORFkXSHOZf;voVRL=S`QZE*)2g^S?QC9v;NG98qKb>#APDBhsE) z+?ALXLbPRU8m_CGATb|ALBmD93_0u%JxN{L*jT<4L`A#EgO@z?B&1gR3X%$aO!3Vnx_gcJ6(ytQ8!E2L>z&J zeG#G>S0=H#tBE)1os8kzw$CcLPnOaX0l|awr_SCvdZd|i8f7rPC@H*5-m4=TySfgg zDHD7t&*0VgF4<3Me*5tY;&`sUC2SdNdZDnywc-L%uA!yjco6Ns7u7*Lw=S|XLrw!$ zuHX;zrMo>Cm+P>$&;=P=KBGU|@PZ#UJ5ndMZwpJw+YLGB3QDcwqi)}H^l#+aR>&;r z2V;$w;1Pd%CaxBuah7_`X7`$7LI;=Gv%+*|tvL4&I!{;#|{VQcW?x z358MCPpBtC;Sq<5l8%UCGXvM1;I5U;IlcFk=sF@_EA3WM54tUj?!S<0)Q;7x!XRVQ zfJ4;}(xI5eFyS3A%;~|||L!>_WLGk_A1CgMMb*u2#+BtitqHv+nn;}9371Bl^YerA z?4_j7o9JPKDK*eDmaWf+G}1i(rgzUn;b6+{7+lG2%9rXP-fX(UZe?rl5E|0wMq$`8 z{&URxBhi&xKD#q&+Q2*N6MBC20@DYDIy1u~>pvr3T=jaMp}`TB{VLM@R-1L^i7bFE z|whzG1Ojf2LkKXhJ;m~p)ww>vs$i^XU6+sGB* zTkl?{eUw=3{J%DyI&6O7u^92Q{hy7eiZsEOpY=&gkUH`T_WcFoge)eIH$-IgEx28J zsu1aY+!XO6f@&+H`q#pI9V{8-sII!yFSXRMrVPBWVn& zIjRu?Ck2M0aFVqz#*tmj-V3{kGj_2<`Dk4~|3yiCqSp72rvpjYB6&l;ba1|^FAXK6 z0=;W~m_$jDksp=R&q_ZJGq%LlyH*Wvz$14U1iS}kogIsOmWNR!8>L-{hb$S@&&dvc ztq+_jx4pWGx;ae`DQRYpd?Ul4GLp;SMi$MUxQ{4 z+XcYJ$uju*H}Y}XnT|M)m5AKS^N+e|5vt#T-5MXZQR7`f_>c%1}MG+5;DqzO=E z7c?qX_KajN28tusDt}btl`*jfi?H!WE&4WSjh=nIAFtv?3RW&=X`ZJ*8`51(glqmc zSz4Wo`!`v#IsRRD{54oQ`Tq`R_A3{caNm!4&&fPrTcDxrn7`ckOQC}tN z&DFE4DmA(mXRwJ~GI2ht5l)0GBlhoC`8+=d+usslZIRLirA%WlxjSu(XirqOA08%a z(?ymavRCJyL`04!0S!KKcaJLV~0nXT@PqTb@fz zVZ+ePWOHhBEuC-zWbiNrRSCPh#>C+4+COF*3my3?{BV~vVI6Xst^TwGw5FiA9ZPri z3R;LTZ3(-#=`u7d^s|M|UvA%4RiDq_68y1*!AaJ*7(_Pgp;}ZH0R9Loj{7m}_b-^| zS=dYXz~jBvWJ;*>r89ody&dt-zCRvoFHmg%XX|Ng&P@LNeqocXH*=hgHKO-9)i&O$ znx}23rgS-*@kuV$IzBV64|TT5dEjpI+c=sfkvx*pVoW`g8d;c*Vc`fzkXcr(hm`q7 zz=xlm4dEhtTXw=88m_!WYN7a6LK?#ufww8KVMyQxVO z99v36)E}1I}2;8i>S=eV<395$Q$$F zlhQ~Z?EWCpz+F-9~c(nbJ$!<=reODw^O`t@{kv zRi!nCgT7sSrAq?^O2ne1*Jb-l+BSCx_?N_z6C!ns1bn7G7*FHe zUzAQ5Dj4IWr)JuiSz!={%>E*I*V~daiZeAen0frZGyE;0|KT{ZEOguW*lW@oAWXG+ z+RdE$nYtNsXKL=jZ+_=d(LJSIzj!U2?nGA&j*3@Wbs)_VZp=cc%JN^v1o>QpcbUP%)H6>yaPds=gz>oFb+D5wk6-D&VX=B% zn6Mv8uA5VF(4hJi(6hf^_@W7|>-cPt=XiH@egNn`&obfWI?VaFAk-^@0UACxTo1>1 z=idex#2A8jnB%@;PP?;oe$HU7y5KzQ9chzVg_e9SZRS4R!%`i>(4vaq7EJx5IpQk& zM!0Z%ZC{moPi`o2P!a7?Bbk}Re^idaG>3)`WI937kp*}8_>ZlncuF@riKqVtB$1b0 z{Flam#Y&QKRhnoExBtdYv^nyVB7PR~s;^EeC9*0UA!zUpPAvuXoSus=a}^w$VIpNG z0_c3}c#()`$T|f~=m|}*wyrUK1La;eUVTcHubc)&U|P|>LYcn~K+44M$MSQ+MwSeA zsOZ~aiqmVr6J*QITzcy+!yZpb(CDaLb7H}$T)_tOslLJ`>Akh!#j{8YBnijfBV@%?NGoV>#s}f zqJ}0Ead2&X962X7+m`4vNX?_w3NWrtX2R;LzqXQfwuQ-NsQ)8!rU?fo*y>pcdGSl0 z_#rt4VLIkpiN+cS%f`j4eTcm;@^&=@QXo$oIGqM1=siUp<*=)QXCJYn$kq`%b<2}5 zA5{~-?}wK0KU$ocJM4XB^G;nFCw1&GverVF;1gc3Yso%*~< zZ_UXHrhNQd#g8t$1yKe^_u-BI8^||Rs#9!RokYd)%11wIK;7pw3^)KU2z}o6^e%)_ zXO41DgG9v%*DYByD!=ljP5uA!rOm4}0iSIy(*>?&+Jt-GEdsf%%&*s@Jn{d5&PU4! zUiN#V&1`uNv+=VQ(wDAEo>pe3id_FwjFN0}ByL@m55e?}qYv+Cd40pdA1J+01bl9^reyr0NxY6kd^f6J<2 zE?-?$n%Yn#q;nzK4xKlPKgW>@A6UZJEP=ACRUcPU=zj)(sKpnzYzx4A!ZJzqd5 z6!f8NJYy@J-;`{BzCtli*jcc-Zv&fK_f{J|a3Tt+JlS~Vgf50F7IzJwSKF_<~+9`LH^+In= zl)4w0o4c#U(1EtnxdgY`<4wZ@(Dh`FC@2_a4D-IC+~OdVst=gHKUmy9V?~HF7WH9a z+8(dR?N`7VmxAvs*+6B$K`CZ5+)uJhV9o(0?@#wB-&ljJK7+oJ=-BD zgxV?9A~75(d&K8GB1Qu+uzhTF6HyMJ(H*lO2IZ69ncu{>#~vCf*Qx8m^SFxY#M#2f zB263r+Vs>~<*~?Z?i#np&YgH6nu@<+Mdu~_ct)r5z6I2xVf(wMYDU2RU`D3;3qbp~ z7)t~WP=ufTNDV_Apzwm+(qoLl757)jAI`Bb`J<2;mD~a{&@U<@ixTL86A>2g{5YuFuIVODc zDfybDY;+-Gv=QeFp(R{gr;4M#V<6+a^%nS!LdinS4Xi`Ne_v2E0`@J?ogzXa;lG7f zxjKbGcZ|q%HxMP@3HpQeye#3#pyF#tQLWRTd(Nmk&o#FkOZbTn4%E-DxY!3KJ6JhU1wzTq}K4 zO2FV&%?S7(%;6h!iS|CS5Ml4=}h+NQao)YYIEhnKx(-@ZVp9L<+4hIP@!7==Y!q+Wd#^X9gi?Ds&yt`yUn-qNvhxVVND;32o6OjL;Y7yL&yO39VoE8ItrlDJwV?V7VTQ+|ft%HYAeJVj2(M$8S?N0%c++ zs4wMB68f@Z|Lj8Y&3PCuC~|=q zW)np=5W{?u$R~+>lE^0s-3dx!6O^Ddh;R}j(wo)}?c8XC790-X2%p#_e8OD3$OU4U zjThNK4D$&hpCIxHBA+02Cy8v5q%?$JCJ1rw=0kmTd)x?X#;n_+H`Kgt((Xf{&{mAN zt%to8*(1!u#)@nphWR*=j}!Sgk&lzQgGQO4c%RDr!zF(46Z8x%CJJrc2Sff5Vrh#` zT7+2<_YA|oTadBBpE~H1zMPihux6TyiwFOODD*Yd1RB?ukJ~V_CuZpj5xr)vu9MV6 zbL94c=$_#5gOWl#DJh*BqOf}^)0TcWTvqN{O!)qMT)M4$f1!?Q$}_T;EtPj%9xqA| z!q<{Lj^f^9%e3}eSL@|WP1FCbIOe%+`n4~XXX2N>JUHpBn2e}CI5~<-KRwlTfO1*p9Z%IeB^S(_9$Pah!i1z}>=@nl@oc)e>A2Qq$`!-HY4fDorm8)>llY_i61DOML4?<@o_y%}JR3 zv(@tt(KgmY!}KXVC;o7q`eM5U{e3rg-XoU8j-{vcJFD=}CU1JA=R#?FBR=z}$v^L& zkMtpSuf5J~(>_RkC6b;?l%Jn8DsLYZ4gEueYtvDBIhF4O)+?rAT7T$1XT4Zy(=~@E zY)Rm!-`D1!VXdv+Zd~#xhGA{>4D+YtDNHq`<=b2Sx~&<-rB$Z>TujKd=_e8DQN+}p zd%>(bVM;TZe~WC3?M*xWAXd*1Tt{>Gj`E9&=f1Tv{$vyDQy6OIcO&cCX2+||x0IzQ zoufBD2XXGNN~RiTYvu7x1as9rAsOQ=l4)EyRqFODg3}`OM>9$B%S=Hwh(7 zSgWur3dm?*=5ex*&@*@LrKKFl-n-h{9oSl~aWb=eewex>j%ICwSZ-3^--u-%byo7* zFq(eEk=|kB?|kY~%LfwtXCEu&0S3%08jZsuomNCnN!*{e2jnW<+@TmGrZ5h(q0 z>_hE+t#g}}rYLd3)D+kB{J`_{3aGjbLw*yN7rvy}nv2U_@MKtYL&c6ZY`Zd?i?!#$ zkVwk9gDX-7Ho7z$9m(nYW^XD%R_abux9;+>QMXK-)D&3OG*1xY+vwDOWz?#qce4URu?C%LGE4qh(gK-!SrOVYHSNDttUoK>7#)LA6@a1d#7$+RN&&qKH| zgPSWvcbce9eHaDmS+6e|hQ!5c^4JYCRGX%@%*0W%Ii|i4v|^X6Xh
o75;v46&M zRIO>DliCNeQZw9!aGaj|tEZv)Xu)=Yobl>7jlH@m7``qnTn}_0HJk?6nPrw&Ktg4GkV7yLzpyGbG zp-{%dZ<-dGDTh&dsOD)AnDMf5%+rEYYt-C_vJ05{+T`2q7EG_zayiCgqYq8LMM#H@ zz8mI)+rE3$p4?5n(a(l#`jOe%yuPPVEm}TpMCmLV>h8!-Hm~LKFWLvO+>iEIET*iz zTs@nXw<-)NXcRW*CJqG~mzpzO3Fk+ok#lbK?@i48LhHtU4Z9YXAypcB&pVE=aHI=K z!}U1+jk@}(MX%dURG$D4orD>bj#SdvleyEK zkI_|A@2c8tPERAFAk>ZE`#tW;j5XXIKj~-|UF#b0%)Z-aj9S%UGN-I((W!gEubY3z z+w57k5Z4Y^-sI`o7JS?I#c4A%X>QOixdy2_&G-&$4e8pVV+xqe_h{CiFy=5$rs)uy zV;;iuR<3fdz1tMe*WPcQp`>of?^~wWN#xRO8T@i)IUYUVt|kAw$7+{=k7nb}z3TE~ z41RP~u4;|C_iSI;O-(&%T6lva(?Nn9UU|Nt#!sNfv&?m3xojS2U#s)7&sclFMVke~ z_tzq18|zNWhx;sM8{5O~o~&fl^?M5!_siJ$Y5zolrTA?bxh){87FU}S^o_U8F^*o* zZK~NBy(^PPTLkfmR!u*22oLkp$-fB1!OBS}Z+e;NQU z)VHj9B1=Oy#}B!5neHQQ)YyECCLQZm)z5Hi=%7maHaaeB*P}1}UTvmMpu;o~brQ0n zM(Mz+dd>F1%k@M+Eoi&$Ho)ecu7R3q^Nx+57IAOC?DI*RS$*2DV?bUhu+4exjj0lpC#grU|z;YZQp?aRtuW=pRR? z*3}}-KtVpsbdAvX-2Qr?q1|RL3>`>j8rtjF5>1HZ_}N$c<$Yu70uH>r=!@G@I#e)Y zBNGK3C)L=-%;r{asPEC-pT}|kLPHz#EJjZdsZvE1G}90HGX({CMll8+l*VC_?%v#) zeyEJGWOKY38?^ne$r+_cP>d4ATQ8f&s%3r5*&WfoNh)Fse0ATq7G^Q&*R|wNVx~P4 zN_eSWBiL0;e_6e4fo?^c^2<3;C*y0J>)GBv#Ws4wAa#@~7eHNvH>OLXdFwR9(F@T2 zJLX0eX?9Ny-G*Kc8|2!bYBT+#d-qY^l*je#eZ-(H&yCy`62r)6YJ~EP)IeeUNb&p{ z(sR+nZzwL&V@yTV`_z3;mZ^gG`FW^mfCgl01)1}JT^nA zr_*Xo+k;vZiNtx*7>5;-&VIR1(R{i!(%j_jX#lIv5 zwv%DHQCux|ylAmoXvntIBG5=fX&0tr7R*fZ7_u1^6vJXZcF350IyRUf{Ww++A3Qi? zo|UTkSuN43(UkJgDoYfvim#lS8=7;ul)vg!!3|KMyFU4BZb3iEX$L8_+cTliM;|(y z#pIN-T?@%S{WKE6jXg9$uFmTXDlPa4BNu$jjB( z$Rn&D(uM8=PuYLcuX1U|lli4<>}-#xK{f6B1%Iyzu6@2VPh%bi{P;Opb{d)=zi-Kf z$fWr5+^uS1F^GFlVoh#IT64aXrNy?rh)Nk%mN!6?T^cWvJnguvxy*-RWTW3SGr0+` zTCy2R?XvbEIEiZ2LDViqj8(G8YOf8Ow~eb59TF&R^r;alYGdoB5e$y!G=X}2ikyS} z)bkt3GVc>5hGywYh}CIsh;5OK$#G{d2}-Y zW&Wj(U}=Fi3we}bB%pYM8D$uSyf^!Hl3^rBLw?~pC3H({8<>!mVn5r@$=qDN#O!Yu7=My+&!pU_z_%tW z=kn~nr#elx1T}yr32$nh|8lf4D8P3$6 z9Ybmdd*Y}@3Oe=`IqsPf*EVQS)W~IOgNDV;a_B)Pba*dZI7yL~#-YP>bR0>RMkuy1 zN;0=%$BQfT(9q)IH-jH6Uk|9MI`a(yOL_M}cgZ|N@tkc28}w18c}(42HLu;TIYHLj z_kP8ujpW8_7E2?P4ITVh+F%Zx=-x$t`(f1!ul0v6yQj-$(<6Is#`Ak+RvsiG;8J#` zr+AK4Bb~kCW(+)s{%b6s{A%FeL*`Y8_}4PR6ked!Y7F*yTEbgEF!H6Hg@(dvXN8cls|$4V6MRnaS{7A~8weS~s_MQp&1*I4ET z=tfBkUy4GeJ&${W)axbdjTcM#Y5NvZdb(*u0(EM_^Ak*291p_NuLflSG!(qD{M=aY zsvTX=6ctWr`f1@^0@ag$KxKo6Htrcy{QWEJC!S zw(aWBd`E{8zikT-l8>_-6CGo6wpK7)NghG2R#P}HSCII?o%Suz&l)w>32qbF?3myr zX?A-)bYaR};%zCL=+e@@uT*6?ds(SO;Oaf{60UlSo)2{QXv$jiTrRf0h4fNz1ae%R zJYDcAj)|(|(E-l%4w!!y3>_=7=z$_o#cg#>{q70wxt&tSB!-FLHuP*pDMkW&^#i;% zKm!~`5hfwYnkN}1iZI+)TSkUvZ-13;(K+98FH%x>f}5nI%ofw9na7cU%IwzUtNi?A ze|v?Vg3_m4*F}H8^zds5M`#(wqD`!6R zMx*DZg8W7!R~AS$39m$PJQv-c4ov*Yap;rqEdTgRm-hWARvMr8T*b=ujZ^gSBVYY) zdDzdMm4q^LoR&f%t)({_68QXmP1SPi`<>`1NvfDTJS)149~XVq{qHWi{REoE-=w;h z-X9GN?PuI&r-}u`J%1+5OCg0?fuQ^x1PUtD@*=!5aPM;icC3KV-Y6|L<%efSxS(_W zIW7B^5#y!;1gWL&=;v1>4QeB(LGJZ8O{#4i1~1RQ(lE=hrolLL&t#ZnCyQxmxzF&d zjqz=HtGm0s6kl`eHU8mBG8q-UwX@X1?|(*!oV|o=$ zm@w7cptDjd1i-?ZMR>Y~Qt#f;-o&QmZa+O1(4OEkPms}GsKRwie7a?)MSGE*e&=jY zz`S$SEy^JM47D1bb7)+Or^LS01i!1YR#9nh4Lq7Bsmxf@q&?u`{LGA;#o#^bn>v&1R9&Mz!Jf*2 zd}@!2A7tO%>*q=fa}k6*)GMIrlkHNx!PFQ^O=O^``;alSx|xS?@O~tMiM`(IN@%8% z1g)wAt>Ehs^r<0LXPJLIb6lz_nAHC|-+nbWW8y;RYiwP3XWy*@|2W*djq{*6PIGEG z0h&E5zi%)a4sA`{n6dmU^=|r|x&0iY+T0(0a!ku_Eu1X7{yZ=T)#CDK8D+xRDUW(F zXpYyk6Od{H)USzQIo*V~yrM=e4ZoIhrYsez8InBNmz7hv;s^)L_UX|TI_;V`r9Uv` z*xK!DyC0R_6o{3MLhobnfv>qz!s$Rp@wk@wra7h6@Izod6`jGV^}I1e#FP&F?X331 z5m6^7+_e7i^`uMTurYbf=73@ioV}P=<0}zVD6WGwF1Q@MU85(<$-cbfk>@ znAY?=3dMcta5o+SYL9$R8TgbpHEQ204!ue8?paN@o{04@s}&!0 z+f|{f&)}` z4v_?3o_!stObe8l!Yz$+H*v7NY^dI!!s270{Y^K;LHF@e9RI98#RF&)>w}uMmrvUG zL>U#w7bo6fsT)Germsb`3gMIDJFI0kaiDIhmhxu$4l4!i!n(RDZPil?rQv|p#M>^{ zyy)hD_w6wDTps}83A#Q&k=ag_0md;%EMJdztErqt%8=9jl9Nw5|Na}Jo-Q@6Q zzMz?&$`8{`jKn{_j;q~6x!i;B-5bL%^Rg=U_CP_JXr}GblbASc9G+P1P*~J)vQNK* zG#u=l%a6J|?lT>SJV%b~0*A|)v}U$Q#=Fx5=NYb-+1-VGwwj2L=BKFvsm!Iv9uGLt zX-+0-RmsRBCVmmNpPW==F80|_G&#+bA5R%qKK2oAmsToDW%S96=Lbh?$3T=g*89eJ zOCJa8q>BT7xai>PZL{h2fNxckVtMV9$lRFt>}?ux;~+ef<*VG3U*)5DzX)csJGUD3>Ni z#TiZ%8VOYiOsg^7+b<;%>iTWR^gQq9`)9mPrZGp)`?>xJA6SRqW9hN4;HJiS+Uqfk z)`zJK*Lx<{(;U_JjyQ8JcF`$LqB2DjbB zk-}sweY?;qg~@2}>arup$#^%O4{M-n=um!Oo; z2=R&6iA~(IF-H>SldqGk`OGIDm16W!DMnuhK8Hr`{?rS*y9hK1RIlxBBG4q&dhHNI zpdAyMV+5KyvEQ)u ze6%^pVpJNHP=bhaVzzt3a{)86xnl7&j53Um;w*39|hO zBCN^h==TSj!z}?_{`G<019hf8Zjf7|PEX@M&;+L0l2Brpt@+O)E2@^XBS}v)M^^s8 zDlpBFl|L)T#_Px_9;8VR&7oIIxfl3D42|(z^92)jWm4o{iX4-v(=SEThvkX|VoSp} zU$ek;zFmHjeaV-N%XpE7-Z1?}=UU)sM`k#XQWBE)Y>VUE zkUepk-zT>A16#**pV-=O$_pQQ@x;@9U)Y9ky>&jEe*p}9c`2TM0VD}s2<$ao0mdk{ISy_tUqeDciG`a__ZDoqAnA?jJsSn%^% z-~i-_#xTv6go-1TEy;#edD>1QaZfWRR`jEhIZ2$4tb9HzC+O?MDd>YV?x8vK%C$|% z=4V?H%K7}^XIqlZ1$X?}md4fvfBM;$x>4^p$UocC_zkxl;Lo;(FJ!30&$fo|T$t_e zw)8A+dr+(XEII$gO3&JUA*07^>aXl_W2yUbV9PStGfVS{%=OXet^BPN|CZ+mGKv^} zX-zTNndg_r=!dBqrj&n%C)wsIcIa1l63)zbv(S(5H0-r}+vYd;z^UM~iL5`t)0o;c z-;-H?f%guT_5nY@J0_gfy#D@9&k?tp98_@i{mr^3iD#13N`D9xp;gzB+0>X2CZVkJ z0}0ng-}6aKao}?z;WCZ>q!iOiOh|lAjfAzjB1kJ>dFBd>kgl(7C?!YGSoSwsac%^Q zKNqY5JbB!wnpH5vBleZ#q{IlWt{l2+P%tloUvdr8L_uj0{G4mhONGlND}vvT4bxT% zB}GucJmiTp$cdnLRINVdM7XX*k(d(^_{U3g$cdm=TU%unF(-mvRW@B^6T4;-(2K}N z62~Mv3aYv2t^*tE_H4qLgwp8pb&%EMBcBrqm4A#!rPK$sWIplKA6JtS4aQZ~}EYr&lD+soe>miNS$?-So^riN^LiksC-k( zAM)@>XJ)zn4%^h8YaOqJ4xT3m{CEZ4x#gO!UyGA#Ix8jcxC$3Q8De;ptY~?KIz?x6>0SvHl=4U!q5n))!5O$9{7w+B4OJ(3825FL7~rL--v6AcTJk zzAx`3Es8bTa%J~U2j(g54s<{a0d6KLCq>*tHU+rh8Uiug?Lc)nCy=>r`*KZ@5I&S1Bk8W5)-mGp^1| zwFq2}gC)9BdUMrU;9AY)mWwMAuasf9d2hO#_X{o6N2rzVI$4cSAt4RMC<{x!4v#;) zi3&5EzHO$G3SNxfJ(&qp=$J5DU|McV)0co4UHLqqyCZJH4M>^qM`_ zdF^yyp7=0EH>g(yqQo6nn@m@CspOXegH+$5t6fnD^+Pz;f1oQu zVU>~>qNUD7SIeoB^IbE?cR*8n2xQqh3_tqN8{JfUvAdmSILHKK&>Te!{YV8^rcv`H zo?-9eS}n$@0!D1FLD54z<*~b2sYy>2H9ERUQ~iSsos^(M6uonOheR=BoL+E{wM3f` zy}p);p6?^FkWWwjy;+?^T~a~@Cl%+kX-%uA1rN6R<+nE`(*{hbfwqWXkq8d_I6{wd z>g9MH+U|95s+Q^3S20K8B1CS9JB`#}515{Z9H&Pd!SjejmD1rQ#VSFbl5^fAU~QK2 z@6BM0(pz>+7TxLHyCQ-y!${OUSy+sL9+y)6nL~Oho~e>KJStz_)KPX8z`xUB(Shej z=vx?De1M+GqCY)WUv)5MaHWk7?DM2y&7GE>31q5tdQq_Iz{~;&I^ef+v;OpmGrjWN zN=ity)f6?D4DRvs(_C=#BkRKB=}gtmvjS<=fu84rlkC7g@3NoYWM{HyPjBj0JJ7RN z@`4>ugxSVV4`ef)cK84uRhk%%IMvse-Ap2re66v|KeTiAjghtfjb%Z|86k@A#6Po&{`66eRm zC9RerEiYlg$VFoEL!_t35Yj9|^G|~aT-e>}Pr(Z!^QPYjBHC(|8oNlQ93MTk92of$ z6rqCB`WWk}T8OGflaXGN$5KSvFf}S9K`!TF`O3^n$qq|yot#Iiee!x z5Vf#el8>@ubV%FqE#P9GSKrr2(nwsbApl=(iXO}uchWgZ=UhEUeT-Jes83z7BHlbj z{*~N}5jE}Nrw9?#`3R4OJ#lqX5pQJEY7vT;zj4(PLS;l3)G@ABg>b-K*L>1(YB-J* zeF+mWopm7o1&zW?t7j#B7H~U8%e3>~;!phUv_3}GswzB~p->fuf1dN7B3ndfj5@{* z>-_LwKZoWA#R7FOpCWur=f)agX`_l@W`9{oXMaiQC{BF}a`6@1#WH8wIvPqc%z0DE z8vwA6K(RBT)9Dy!tH)g{A9tq{zvsZ*r=T2VekdZMgljN-CttG{SYs_UIn6nw|<6e?ZIkP!XT9%%}#xNR8RPhuzuI|yxhu$@8tMZqCD3ir;PYY=4Fl0Fdh+s37j(tUc zKw3Rx^-IxAgwq+59wF;9l-_l{#4Y>Xe`NA51chkp(I(<3SXefYl+@cEpVM{Ty!nj% z#O2su^GX73-7|TxXA1D7ZEt~lhtNXJixv`-_me?ww2<&*09pvo>nlwJD{8?pc`t(9 zXkj={yzvI81gp+Y7X?Gxt2o1H)4=MGrbTSuEbRcEv=JN(1DCa z`?T8R6YHD|A~F4Hlp}F9hy<+C6w+}=b`OuS)8s5G@HiS=aU#u=bEd6lTniQoi_W;5 zpl&8FDTrX0eDac_2nIyrpa=x5_fb2~2gf2a{pu!#vB>aj3C4m-sntSbQ;=l3I7npO zQ!ZOt`UO#>1;@*bg@C_$D%BM|Yrm!HO2r1egV$?^T4Mcte=vJe*M9E33?Ef&ldb(9oPM2LZk*Bpy`MB z_CW9&^cZjCX17+a#62T2pB)ea|7?$G(TV@9j`>Z&RI<^}MInNR1N{_k%y^)YRfxo4 z{fX6yVyy8kdeOw^G5CvX{t=m(j*t>9{er*JiofF1!{M_K((mp3xQg$$xV0YN>;>sm zGG;wUq@2hwlD_E)2E~D937$~J^8+$^aw3s$e5NDJkoB{BpeVz zlvuU$iRF}xABmw{usk2AAt@_(B9#?P_Ao|PWP6~Bl}=4Ddu)~bYOk6@_L2n~Kr36Y zU4@V()~$Z%bA41Oph;9g>7h7!k}TNvq+N0ev|!&!&;qZ}9-acMehe<)lA6IY^%z_b z?7r?NwOT|Qka#P>nBnoeJ>@gf8O*qrjp6nrdAcQpG=xwCAOyhg-%2%G> z6f*4rh%K$*8m$TZfD0wgx))-f@57HY;d+sC^?aIIE$X);swKCVa-=*aZ)gqXUJ|=8l+_fue451(^`cPB{rbKXLu@nPR~{ark=EhNLj%vDONDs zgAd>AfosLi=~sOLqp8+tSnsl6Vop<3;ue0*e$pE`7B`$*f!q4CCExp8o{G51f|{e} zn3nRoR@!=OUIOSA3jsYb7u=07xhu@2Un7&loTp6J_D z@V9Jur%l#ddD$H)Lt@f3QxRs~Q4*&4nlMQPgXidWy^BADGQ(R1+MNgu_bf`w^pYay z7Xhkwo1&>yw0N!{{njj|e})z0ElBN-l#jUSqqwA9_f@%?t0GUtt#5WJ0zHWf37_QF zZCmMJHsFWS0Mx~Q>ka0(E?q5)R~@2^`6H3$)=*KNb3WlYLi4qvs*BFFGqWUdP~5w~6GP;~Px+wD%2tmE)i$8VX( zZ&txo+Jl)-OtoHw+P&kmW;zMRa9i-xHS#rkTgvN$*D;9y3OGEO2uBLhnR=csZ2}1={S$l zVT3yrdX{5z@56CvaWn5Ud>hE=U12?yI6%>ik`5f8{u5OTpUlyi5!mI*F3i9Q;Q$lVyw|Yz*Uhq(INd zKRDWi4NgtRKfy2zlTHT{(J*{3#Np!3^E^Wa$3HNuh%h+4p8wzs3{1ObgNe78dO70Q z_M&Lhy#`S)eG0D+&~~^554W_B)aI+ykFLW+V!B`#TwXJ~h5J(edA>uc>N4h!(wiW|Q|9l6!2_X# zW%?-_028y&UVRjrH0^`^sA1j8U52me*ah93oS-J1?3 z36CAnPv)&6!j6=#5t=~--z=#^jMUu~<^2bgbG`{U~QoAjzMu4_YaXY^k1e)wf ztOmnYS826)Rzwz8VugaIzDE|*nXvDqk2IZW|ur;+nPr;aRt+&*^x(9k3 zIA84Nei-zZm~jtOL(5yMuSmUMVfC8(;gBodD?Pm~IKBjO4oemLWnc=`+Sd%OF6bh+ z#mGImTMh|wSBp=z=D2kA<=LHrmBTv@uFey^YOpbRPzJXVWUv-8l27sTpRegYRjX(Q zzKH;N&41eR_6`3_ZUA`=xUV}MA@2o;?y!!#tkRb_xM9$rBS2hGO$<=lmsFO!aCd$F z{5dB3N@d{g9G0YMe9qJ9S9nse^4ZPb!Wx4=uj4&~(^V8IN^$y79O~wUS8Ph5%I7>M zTTo^2Cr!C$@XE6r%>c2=i}la(6z(J|RC}*a@Oz+|`=IqNX+5{{&{xT@P_l+qrEG2j zR?64ivO8D1%#XK?Z9PuJ;O6A5N%Wi*YGfd5`M& zU06+BQTq6Tc9XY3Q*G2#g6TH2AlT<>S)b1%%SVcB4GSj?(8wBwk*^7DN8U z$8R45=u-*0usOcI0NY4Id(06d zSGjA|5kuUyVvV0{){lk$J})9Gh*-a7blfbs@?Hn>50lYo?T;hMV67JSp@Q1`qnYyZ z242C+c)9U%VKrq;`Fbz4&l=MVc`(mSv7&F)3u5{j&7ojrBsYlZHS(i=tcmx<-*^f9 z7>3;SH(s9*YE_KXUb)d<-is<&nb~>e)19}a^07MKA23-dPAyEae5}9MKHnef?chg} zSLr{`$$tShE>8(^Sp_5Ys9>~DH5A`pG9EAS5eoKl@Z*DO(x2_Q&&!j?wn{XHG8Jj$ zuUCWdc#XMIRs1zgkq@frjK;AEVSIgVRaf=O{Plv&Qx(H0&Uqb{&985*PPj4r!@#ew zM)3$zY#i=A$YCu?Daorz`4XCt?)s(qk3dx*#LMOECW5l!h(QKx^mrc5w(nFqRJi;( zrT^~$=MSY5|1f2f#e25#@CF;3RjPphvh!7viVt5@(0LU}yuAF%j8J^u2a|N5`L{pIie z@*n=MEGfVJ&wu=X{_P*$e*6Fa{vZDOxBv3n+du!e|M9PHfB#Sa@Y}!q_P2j~`>+4> zkAM5OmfBw)fBF0K|KI-Q|Nejf<*)z!w}1W1-~GqeoMG3V<~&qdn}_q_YS~3!UqnA& z=e;~*x`*-E#QHEJFF)K9`}Jk{NB&)7(^08G+clSN)|)FmBhpueXIF*#Z@>NZZ~x<; zb?n!wdd#+Yn)UGz=}M|+uy20^yu3qY=9~fC_sQ*itg@HC82vlx)3@DkWqFijU3<>Uo~sX$-ymWsxKFxl^R#x>QWMR zgit?crToyO#0O|^OX8UO0cMcScFe#yjWm6}5oDddZS7&?3fh1j6-9ncxT0os6H4Nf z-q5TobRwt^01S*p8)MvT)o}9s>ydwZD%ngzy5Ig}Gp`Q@bKJi%SUDPlk8?2{hdw(# zV28Lrm#x@ujnl8`@N;J9OLWIH^jW}Yv;Nj-hXSmylcRBQP}o`!IItjlTjbSo>}gTGYW ze*+q5aJO(8!_J7h^{=T0BW?ghS}C7fii z&HGD{#XtJOu-%&|_mpZUU(oF!5#_$C8@j>2_79?qQi>lJ8Z1>_DG@@$e`dQTcY=3H-JgUGM9wPDKFi{L0*)>Gp+ThjIF zImq<&`a1mN?RqsH<;?XUJ573CbBRJkI)gVs#nImhnu6$8ny9ecU)imq=&!t4@q2u^GI+%#=gJ}$ zU$w`T&n$?3y%X(#)4WeIp zZo}GsKH^rw%J>_1GVjd8u}%ESejK+f+m(qqhW^S29YhtXe&-=pZSobus)>PmzkMt>!^4}0NPs{i2W#7g!bmYd@$d=QlS zRem8%`>Gicy>h%NL4=VXS5=Il*}ZCWgk}CJDf0HY?$htAsZ}W?8aL9OrBh0boK?dm zivFrS6Gy)a+k~l4ca5DO`c>*D8aLGMnnNYFgy9=0=*eUm_q!vVf*MAGk%~e}2j9%_KcR}>4++Gy@RV6Tv zepMih^1j`r5QB1Q^%$daa}|+{V_yX-!;5O%wK9WZxk`41(YL#LXb}CX9~$NSReCjy z{wnJljl;f*(T3&bDs&r0U+furJSIzS{`c+RoEcM4DuIX20`KZj?_3dL4ldh%^@Cn`l>Qi{b zu?QMh36|+ISxn5-eq^w3XG=>Kmz1-i36OJHeWJ@q{dBO5N?v`U=ryBe2k86i6HT$9 z@ig%RAiL8l`5#z z2GE~NWX6wGX0a~uOX^eO^%i%&n{|n!Keb2vUP?g)oE)^{G@j!}S_<00MQ_y;@%V#c z1+5KS+NnPszgs1s0b0v(>k2-OZHievqr6f--RFG7O_v&`OSSPe#_b&QZ`zcz>>u8h^W@paPbaXlPelAuFh~ zxV|4&Xe0czMB(EyuTP`mkJ$9FEr^QJ=%53fRa%1I_&cpr;^Qw%6jb^|j|b6{H$5#Q zZ`krg4+2L;5B&6zrvT;J%blb)MPFieqPp))!{PU=Dg3ZrH6?hsSrPK_DV=M86acMU z0nb^LD>)Jo`al2rFaK=dZ|CM6*=1wFMTk3=P*N1yuew}1zK8uSh_ zSX$*fkREB=r7yy7oZ|@|2Ybw`4~yf-m6VYPDRJmF*c0dUv4B8e4V^l0L^;wsp&GpU zR+hvR{iV9keZKZ6*)z@$mA?}zI6{C}-=LieHZ&)eoBW8u8k1)X*2HMUU~R3`=o4e| zFjk*0lb5dgmYO^p)`#8X9k4}n0XtSNon~B3omO=LR&|+o8Mg3XC7uXo4)nlVJpzzr z#vb7(KnsA@oc%xz8ZEhom#0Mo)DnGxpDUpo1OpgTYFrU&HLfb*z=1eJv?^K6;hBje z*6M6E2D)m3<)G5k`V&FCDo8U3dXg}rZ_dd(X?@R59zI*4Oz?`l-KAN>Crs%sxtgL+ z{tJ4WEO*V^6n&ImNNz}dH<057ih82CBk~dY_OTdij2Zx*Q9OiE6OY`tu@dl%f;0I){&rGIYZ&33nE&^qqk>6!T#*A|iXfnN&NQUQ(N zhM;C=@Vru4(t@X;YEnlZ_mfBI)!+{l`T*{In+0wF^m05%W=RdL$V9~#D{mPGANCHP z3|D6WP)|ZDlzN0d+x!A*2>8ht5_V$L#H$inR0{zg(HNWS#zKKx4Kqd#G)*<0M94@F zfnSs>(@V^?HR&orygI}ljiwNA6TXs_0z>IE+`!$PMzP2wDzE{Z zzY2iYz^;t&w>!QlMMJMLNI2&b<~?btO9?*DOY!;% z`XUlkJB-JMYieFntv5{+1g4>eB%)3uA4!OuMoVT?O8u}fym%1Xw79xB{IEbdGG3hn zKt73ov~WyOqZah zQ{F;#H0QA?iD27>%;uhUKJ9 zJs+7s)$lG~7CFY&8ucQC$k{1+;6u|$pQSvp(cm{8aOy{X+LL%kM>8Dq)Nh8@js{i> zv6Z2!WH0$6mbBVQx!_J35MF(Sq-P8`+&fmCGQ~Wqm_*bKN2;9Lp#4Vz9jt~I0N>Zn z5u#A_P%Qrv;Vy^o+^MOgaMD_H73=&WU`RN^qKE+X@k0hS@k>ivCTL90>fz4=E`|_R zqD+xdb`qc>M2l47VU8;;_gRgro+ry6+*%`pkYbIeMGJg&k96wzMdRph3=W)_X_xl- z^e+#O?|2H>*P9m9cJ6Z{*aw>=3Tuza;p+kP_e-+pMrMaLT0QkqvR|6c+1F~RcW%I! z^Ff$?m35z&)5@)z&IAA6Qg)9T0uK%0w6px2w+BKxpIuCu{knLPeAfU$k#FeK8O=3; z6VMM1?tL}}q6S-bX5Yr$svSC6lh5Cf_)&o4k7*j3Fgg?xhFSdUYd7!_D^?U^yXcHB zRfGvcGDs2tPQ|5J9xFZZLYMhg$!_XJjTxv{=j#oFAL$>5x70^Pd#}WIxW5T&va1mw zxl{wU#1Os)D&JUWv>N;NKOLRA3zal0KyOR;Pf%8yc9M4--(V>zsr@k44W zR)QdT z%U_M*u6$3LMvh%X5yVn+%YsfhFYei#Q+o@j`G}uQ0D2!^t}8XY-(|sf>m@Z7*GpT! z13(woer}|4BrG>Dk?;alDlLi7Qfr8bDYSA7{e7H60*slVIL=Dd7&D=SpU+?xb4e{} zi0_#U;np;6!jPDd;x5}VD*GU-%sO*oGs8ZK?rh@kx79x zw#+ZvLFEc6xQ4_!F9&5CnthhG;WBad9IjE0D*9J1ahpB?GTG5Ow7k@cO(@~XAl=y* zvih<8VVuU?2K7NR`2lc}iHHuv63Y@f0A~G%93lWR*ya!&h>J^$afg2fVZDa4L6l_$ zC!(Kov0O+P=`RlxF<4KYNf>-dj8AO)n5z7$;_0jF)TtS(=0LDsHR41-4<|`UF{=24 zXw`*>(VXj=o5_2xIG@&HoS?{j%nB>~QdPflRddyq;puZ=$Cl;y8Tq^~MZq&fTPYAo6WB}H{=)Q`!LRZ$xr(>Q_W zhvwu;8PS8Awkuzcp*@1fm~se_PL%^Og{QD(Z0dP6^;NLW2i|7KD*Zn6WF)mMJM+^^ z*VajD)-bfR*8Om!7qjBg0d?HrdE3-(h{UI881xS{uI>oBZ}(|B;6+L-kP`*TzOOC; zn=MQqfHajyB$hbQ)Ion}I5-Xz~lM-gdhu)U5S#($?5|B_%F>{XX4A!aup^&)NWY8j(7uz5+ExpFKu98hNhoh&s2|Y1tZdE>>F&;5)P~Qc8T4< zFfaaNb>KF^>;ub`z0$K7i>2t7q^?yYd0bG>Vry(#R7mOXHX}0J%6hJdcr450gBg#R zrF8UxG$*o=SXB-zqF=|x(HuQc?;vb57+Ww$akGR=%<>g8xbj&#qkYoTE)_pQVKBH< zA$d)MjFVhW>w?D~MWBYS6t%@BLii<{`cRA7XA6Q!*27?tUy0>Lb6rxYzYNjq)f0dT z&72~I!eQbhSM=3AaghY6PU9nvY9izmsx2jsM)c~ppUmgM3?F3T*!VvEiKHP}I!VOz zsy=8QBs82jhtMExRs;hWoE6O&+12mO4^K!E6AX*+eYuodg@K?i6;T)_S5+WQ`oO{? z&#>QrYCM%Mj_mtBc)a{EJ3soZTXqwpQ#toFLyzJMpa_ihOZ8!@n$}DI&}a+oBw{|w z3=wY)@saw%{o!3(W47U_8a@PgHpJf@0h=da4m*7x?$_^Kv!Lq zx3>X=KUmUYsfsOs5d6)Q?-J6`aX24=4mP`)3xBv498$!7edJ$^wG+o%DI?^Ys-Q&X zmOSkC@*;a%7vNi2O!W=`#zL+7-8O{Hfkyabugpffq>3s{3Nd2$(Bt8({_aq;IyZf;BUFtP>0(hdqn>0bI=Vl;Um8bRWn zu=+3NIT%6Wg7yN7v|74fNU|0-k%5NdRuYSSsxu7r7oYGf^ICfwCy#k@w+4ra?#V|dMfyz4Ruc^q)~VX7D{}leuerT9;xfD6REqbIU#>k z6qwXM{d!!gOeVNhWqxCL)B?8>oz$WXA@)o&n3x+SU*Bx}Lu}l+O$ZvC`Wc?VkX!w^ z!`ovbcq+C+h$$m#`{llcR_D%m_$j-Ajp2p+2K$zVe zhf6I-7aE^fj!_1>%P9d*6RL|w1DN6cgTtlv?R%-KO3^PmHLLfGda90C^eAYTx;wiy?~KrrW83J@Ks_4D>39M- zxLwkQrZ(glDRSIN0Q8APvR9(>DDAHUER3Us%xk6-C?z?v4Px&Fg) z+b#`?FK`#6*D>f&F0R7aBJtcV_*WLX}emRqx#eLBn;y_teu(9GBpj zYF}1FGE(IQVT^M&T_-__9%r@|4RKNO|6)Q8{KXnw`4_HRYi8BgO-r|g1eZ^{QLR&S zSpZLb>?8El`=7GY(dhuvp0h*-?bINHa`jBU0P|7LQU+zf@Z#PE5O zuA@56 zY;=sOG}epwd$Mi$A=LSxa)9qn{r$|rRWfpyDOR3*o{Kx>KA@Kat2si5iKXY~m-28gyk-G3-jTnBl-X zqYloGeXL>_E?~m zfv_zrB`Sn!H;3Dk`6Xw0^R@OhBfS+#u|9JxF#NYc6 z?wn2NLT6B7^XFvXTUDcM>f-S_NvM`!nMLRq>tW)L5nZqT@dW?s)ts?t7rx3bkqZJA z$8>VuiltRCTy{&fKhFu-W zg-h7lhAN-O_X`~AAIj}?*4b5(b4{yC2kXj{aVKd!NLZQ4=G;epVw*N>HO9l1Y}}Kt zy=TZ^Kw&=)o2C9uL~r?W-XBlD!yYXNK9aJ2MsSEW6eRrfy#Q5ux>AFl?$`A?#(vs| zG+%rAWM29_z!Wp!x?=*W@0}mMxe>FMa)OC(p1j-~L{yVA>_SZXh3i#MR3uFcMD1-w z+IdFzT=~?RK6RHg^o8qd8!)4=ry`hEHU#yR%WICgT!kP~CNC{4xwOHk@57WKL3QO2 zrtLqtgIGF_DWK@jd z5Pe}+ozLBusXRj6d3LLIq2Tr@9sEqWTec_?LBP59o{~29nNscW(R^rw#i*r**3SX* zPW+d{I-#gO-gDBRG^FIBWG{GqRB&j;7?;PB6-*3^$uAyEtQyU2=XyksopXLeJgYwk zxJX^Bt`n`tGrYv<{%WbdUZWx{v=3S@nN~$EH^_o0{9hZw??KneGekVUiSok=p;lJ& zVGF~bbKTMPb@P*HnE_8tneNx!`A{I&V$yf`-g#U~e}G|{DJB+C+pbNfJo!V~nY+oH zC|b)oPV)x;#RPuR0Q3%B-INV>U0%vdn&UQzKRg9pEMpF+=jWq!LjRoAF_E7etEK4w zO)&XRod?%MPeMoxrQSPX!s^Xay%8S8Fhp~mo#CQKcZHEb>2tOFFQu$6k*tlL;kY1l zf^|J0S#-?#M#3)#)q}g!5L&F%D^7hQF)Wxp1l>NYWdy-6vIqImf5isF0j|pRNM`jo zweO{#5oQ6jE|3ICw3s_&5Yy*|cKtp{Ty>X%d`y|#%02?WfoODAW0h@|F@~SK8k$lD z@hu9~DHMQzLnpMdkqp=I>HI*>gcKisg>-ijLfPYw zk@Q9I5AKoMLvu_fPfv5-%GdI7I&~g@IO99A(B*y^3$ODo{CaX&6r&3tBhSoL&e}Bb zo?wVngIj3MgYEaX82yklIwjehSv_#8r?pBWA!7c87*+S&HV*3`HI=fL0zXO~iM7Ot zcdAe(IhDkrI0H8Cj#8JV?ccTl;qBpq<_!sqAbyLJfj) zR%UV>cIBGa%JqnbdCVm1Vz#hx5jekW~jfDrm zNF9AOP?dTENR%Gyeim`l5KGNqL7;cvBrgKeA>17=N*^o3dJVZ1$QhOn7Pxqi^HY5a z6*K8W=7d%l^HYv--*Tn)%11DYEioT)L@C{|A(Vt8T)Z#>r-AFVG2iXp05>Rw{6|45 ztJG8PDQ(DbJuS^tuPl!d7pImc0VwyrOI@SmX&}vM3~7dTMc*gwGJssyy}TT6r}PRX zkR)|WEwPy_-~v*VJ^nmVu&xdjxB+9M5OVc?Ys7=A_D^tlT=mI+9Ym+vl| z7%Y&k1m?LWYD;>ah-Pce$hzjgEVhI5Zv6-~YL1p34H-V|i3h-46D}iJ@=f|!*#RKK z8!S=QyBlRM){ZC60HRrVMn>f`+SA1ijm?L=5ruy~pY8kl!&p-#Q|Zmd_oD*GG1t>i zZj-vclUh!imUyTM+bvWf!=INF*__@g2-vEaaq8E6j!a2X_riUeF~koIm>L>t#@?EoX2#&RWkVO_R*t$uuio4&}@<%{D{t zOZ+jIoQw}iief1&Rv_HD1n$IW9bb&LIo_9!ab`#VFLxwzRL!FbABT|#6^t9tX#HM7 z_PQ#sTcxYshv^Zy;ps~wFiPas#S;H92ju8eU^Xw%Ml~go*MWKDZIElsg2#S zj8JlU*dZ6r;N-h7e>0KCVMFyMh?{-@N}tgMT6Ll?ng)v(-Q+X1DI=H5dDZp=Jz3ha zKw+gDkbIH?E#0Vad)cncWS*3u`Uz;lWGK)c<(a^OBlVd zGo0L4m<8u=eqI4}NR ztQZon_;mVLt)IURc)oc-_Ct_tgA}Hqw)(^Wj^y|v9mnNAsH}rV-8nKJEF~jK`-8H@ zMaH*L8`n?I1YIQyfvReK-+ZHSqy)0V*YMl(4e$cra%11!uqE?wM>szi5LON=eXt=J z;T@zGLB(4AW>pw+PCPP?U67MT}hKrE!fy-T-yrI`0=x@?4bhOYglMH|4=o2eFmP`M_ zsLchvHpir-Q|?nraY7ka$WhWiFpq*tefe12@me`^yPJr`%@3p)-#yFjI?|osHyWR>}G|)exnTb09gYyr45*( zZ%6XF;9P;?jC?|F@-U`K(I{oIV9Os2J1uiVACt5A!)GZo`Mm~p!yeZ)p@7B_1@pbN zp-ud-v z8r_H*2Wjh6Yi6odE2V9@7jzytH}5TM&uTeZ)j>Gs{UuEOokK0BvhxH&B@dzX=sg3e zu}R}yJshQa*Ku*&pXLN7vg+bYi@Vj9h!sM<2)H|D&yrm)yL4uK{>CmPK{|8lDgd%|rEisXyyt4aHd79dRJ#603D|2QS_>zbmm zL;DGnQeSw633K2q9wXORjRd?=f4C7LBTk! z5i~h}6=<^-!{49Z!}HaRPG7EzS%{1=IAbE;3}fr5Ie?t;TFNosrZYxlT%pl^ zoe9yC{ZY60@34g)KJoUm9%cN&3(EgP_2_2zOyLWEO-d|RR_rfv@K8T8I=$$Zv8r@2 zX5bSrcB~b{yIQw#D}&EDUx)*EK+&*>(hwcz#5m4dQ0f;&Q%VEeE%#i0cG#C|Od{k2 zB5#zPN&Ki)5!dswlzZLkKTr&-zCvOWS{FBg*(kXp+(_X`O9IW!JzHNiqZQ+j_;83ldT z6Fg8^#6KxG^reP&Nn_SIz~~_Az1=IjpOpGipXP>M9F5M1_i#p_z_ri{#w=m@cUnmp ztfG^srPonm=#1-nO#Re1z`=Jv(Mw;`n1dLyyjYTcywg$W)KcoyQs_+noblns)?hh& zATxa8X4jq<#>E#AyauYn4(H&BVr4=D3{ z+R4wDAc(W7hZ|IOFk;lscw69i3O70zDVEF4&sE=n%_9X27&q>NRn9OU@b6~aQH_!y zKT)WTCZrDP>YVRHrt8M0rL=`!QZ<}*tY*#eLLk(Rl~T*jRXwoM$SKq>_>=&|8FSj- zlPu0XZj0Kuyw@OTBHs5tjT|$jbuq09|i99J8pDpBL5he}hn0(>uLg*B~IPsQ{`)wq6%=;a{ zj!r2!hHVXt*q4=ONUJgiNa36cZ?O_!T(g-%tEHf^K?y7%32o&V_? zM~CJ4r&rRulIXKCioRgPH`p$p@xUT!MK76(S<)Dv%3}<|-iJh?>s&e*T1^jhg-EgW z2n|ZH_K*!e^(qnS`o1kM;?I&S5}tHXt48#RUN}7$zD74Qc!FVx{RF#52yv}Gtq*2D z*jEz^%+8>&@y}@QKm|VAwb|SkQ+WyX?cO%bPdj(?E5oemKa)|}{G$iQ)wM4=SD+z( zkZ6j#J=ozK&xnyn0)ZRo*r=9Mr4?3vY125#@A9391U22NW3o9>-cYFG-wz$3e2fnH z(e8Depyh;?esn-*b|#g_vC&Poc~7c;4uW%^=e%J?+i;6PZ6zo%62zTi0V9u?=*hJ$pvs1R=FBOj|XhtMn6A@9?INqd*QT|Xt8=ZV6!jC7QGQQ z$HZA^b(H5V{}{+2>vA?%9<%k`r;@Bzh606Ze;u8R9)2Hp1&w-=M0H+>xVqoBamlfl zM7?tVplFL%116mLyYsJ0f!ugqqy*O!#Q+Cz{-u!r$_hg5|C*HYD+qO9{-x5CXkwpG z+*1*%aT($A5u5%ywU*;&4tp9#1gX6&JIiaWRTg>MOcu1Jjs%h+e(=8DR(Cdv1CE`a zFjNDrp7`n5+@5B4mD4rNmlC%UQ_{}uQnCG2@~x-zV)c49^j-Ni5cM-aOp8$Q&eXE+)kfu*IeZMx1uD9Pnr_|NL+te0o+2!uQ$ zUGWI~R#C-db%w{fJYAhINQyf6LkE2cMX-N_Ep5GVb&p#~PSe(TnmIVH)A8FwpXu$2 zTL|Hx91V@!Z#^26KmjvaJE^ra6bUj^D%l04coGyBCseA4(J_Sbc9Ad3cMUc&L*~Z8 z7X+iiPujS8$2(xxDM#s#7^vb7T{n=OvP2!V4ZB2-brLrm!b+F_G-a}-Iq{Q;YlsRJknwZiehQq{W7A_LE@ zO!7D1?p5-Pw0*3P+Yo~AaPIBsC>r>0{C^-gNmauBK8o;Neb=3$YSGE5AjU;n;x+aR&h`CM ztW#$@NN~BZ+=euv0fz&(SSJ3TUs8$wsW+V79#=!0lnOJc(1Z5S-HnX_J`||qkQmFR zXyJVhPHZ*zYbBJ(7Ht`TaK(OrDCZvvF{wh%lw zU*VQt=fM3d?U%&lRZWaC%EkK!8VHmkV+OL=OF7#pCg>iS1z8~|l^?C#L+_w+X9l0Y zsc_1Mj`J%phRc^7fwQ6EDrZHROAcyH#^w0bNSafr5r6(c3mNP+YJ$BWeyyF55Cq_G#f+Da&^Wt?!J=OQs z&m=cf-~u1SPc-G*HR*$7?$qdeO{rLMC3l)-RvYj(8h1YmNOmguICi(a+gxG888u4R zl>Rxx?#KV_#qcN0$+_n_$i27nv{sBsNSQ9iytMm(sf`sRO>k;<2rS#9Qk7_T`Dta1 zrm>zZpFD-$fV;(0d*NXa!EmJVY5MR<*4i?03f-^D*Gly}4_6+ADoGcG?rY;q>vW@N z60r6wrBsJtyij^|APaytadSwq>A#3Owb@sIJqYCBL_(jfp?c9N!#-58U0GI{3wnwS z46!A2$1XOi=Rnmwtza2ox%DhNXC2~hA71r+MCHnoBOfT1eEt%g2SG79u==tJUtrw@N@7Kc8- ziav6GcVr{$fLy+~p_4q5lH%BCC)>Os)kmnoo^@nA*=Wz7Y&5%nHriY8rZ$fdl)B#s zojG}Y;S8!c?*tnDKWqfQQMuTdK}wnY+~nIoSDhhf!G~vSu&qjw*0dHl9U2NQm>CwU zWI<|h!9TOA*N8vrmYZdX`+wKj%~Au}b8@ijs?U)`%>$1We2!^4MV(z@B&rWlJ*5#d zT4`XVS0h4NK^-sDT0icrq+*<`vCC=Qf)ly#*a~g`gk!|;O8x$Gyh}G0{ZvPA&932i zzD`?W{mARmkT)ij;uBMJIr3zf0dVw6%%qhOBw5^6_)WtYdI<6F88oQ!|8&vou%jdF zE(J-eT}oP&nW<&N7&gSC<*0rYnTDtm#)~QZDST;}WDaA-IWb0tH84A>M~6(bDH!FA zSSGq(mivLhepzVwPb{KAHmb+wMExZWbC0sNMVu+CJhcH$^eKVMb7sns2Keyyp8hUY zO&FD1T>qR2NJrFT5CK#|Z70WPJfMr+3$Yse$dU3kAfxd9$N@U1@D^$zHJ zsPw>~LQ;xliu1sKgcFEr7~nEdLFVl@2!Wg8g#tnt-C^`2% z>KKX6!}FJz?%}Qh@t5z07kA^%#E5}{Fy0}Dwd6;+SUU^qrP&pt*m-|&1`XBpd%3$(;Jh(DXx1nEajRcam3Ptvwy zzh_0m@G)RhVYE3fm3jIjg}Rgg?YLS~1hput)>Xus8kt~~Jd$u5kT$8l_na+G8(J`L z=xoPoPgDIMf0$D}l)H%!6dRhDcJlZQp-Do&Fs$~LOqLT!b|l_m!du^6vSfo8$0azI z;&_{O@ZE+&4<*M%-5V&IA);76Xv8zLMSD9lgh>MGS9Ak+f_k;=R9OLIFd@%=`KUcc zBL7m7kENMII-B$*3|Qq{Q*7cxO#4oehy6fjRuMp!{Aa09PnAnlc?OKZe!fXD`5!YF z)=LgisAJM4b^@tT{qYmGs*@A78lkfa#j;96Hj=r;Qe;v6`>2yJ3?Q$s8~Gq?ue6BY zQ_v0#F#`qAIZ15?+&BNmc(R2#6CWw_gHd$5SGYuG8>+{qPemyMjiR^?ahWS}Ts^&BLkQU(5gpi%L3Q~ekf=&8f>H#j+ z^E$=ES*jZ-N3lrb9hIDV)aZZ5J?=E6$eeVsW0+ro_LXjAUM|a&WsL6JAmBsOxSBYH z>|e*X7gnAuwa#F&0h`}TH234t_bka$K@GfZ_%SiGk5Iz}+QqzcdfhCYgYyLc!*If@ zc^s*Dh>u#Eq6(z%(hN8nLo8z2FiE!n$rvYERZGb3`fJmobyduD3p`~wgloi?D+k;Q za}Isd!IC4yE@BQ;v3Brpee@9dW2Nf!#=(yDJ%KdJM0BA@C&7#}#B&3-DJt4|3VuG8 z!XhOltgXs9Gd!*);I%`Kx2pZ(LxbW9QBZLy;Uq$t>A(#m!kP3p+U$8d8k7t@s#Ie2 z#Joig$FqKxC=kYde?sfXJT?jw^7x`3g=;+9pdskK1aNniJhA-AS!^HfH_VBI__Jl{ zRsP^KawYRGJEyBIWVxNmeE0sKX@t5jh!$Y|cfo}WhmPhKakZw3LKP$Pw-_89>9Qmo zG}JSUK<($H!K@ymBu~1sw3LpCuLsf|0h@yiT*n1NHLZFup1kSzqRak+E6AFkI6TFU z#`F)oV(lnJT{B!Fx}GJY+8^r740bzmQ-h5xZ+I|}AW7jK0)1gF#W~2lsm>D9c$-BRmW!-SN_^C5P!w7Si z!CECByLok}t@G&=79Lb3I-R>sns&!$lt zQo{ci@NQ;VV&&K|taN)ugSC8Yne|BZ~ldRF{0`sa(+=CkoN||f+g_X-OKl|LxacYA{?`-29}Vpp0VW2 z=#c03NrsRF{Fl6`33;O1dMFbM!SVbv!36fg1 zA*8p19;Dx@r*zh8l?u{N?A6cc7jb(j#W#$Dmh{e5Gbqi*9~W z1z+F39}`zBF5nNW~|2M=JNel)tEe2jn9Ko4OZGj z1hQ^}FIDs>(pkX_MvObJ8YzrGEmz{VuLHjh{DZ*f1**U5J76U62S*#LXV>uY&KpvK z7NzQXhbIM}?*gm|8qf?M(OoEM<|dOIGawTEnaiA%I8r69iCI37R2K3=;IgHI-u+=M z`h~!@5%Rvydm?H&qPpXW>eHqTZ4rM!@D+@1!uHt1wb0YqBdt$q60HR2Q^>hP!w}%}D0qbHkhUrbbPOtADNfM#B9Nz=V zy2a^maxb;Pt#yv*(=DSI8KG&+$#`2Tbp14vW3@1=cdzu1-2$At6ehaoRK=n_dwvHn zsXcjN!^K`|Vf53Z70vg24#DWh9FdRQPV9tkI6|vH@|OYNJ-Wx?MfTa}De}MEdYR67 z8adr?i&BEoksBj(&5_B&{?VC8PESs+RApwv3I)!Lk!o>WOeX>N%UO{~bF8ttTl1rS z;zJ|EeO<=H-MTWOWt=5-g40pZ*J@LGB=yt##*v6+797OCtnUbMc)FM>^;!efX2e{> zDz%}rg^@MKhj_iDSbtI`y!p@Ei-g2XYTqu3zfeP-@Fjmi|DD8Q^%Ua2toPu3TFYg0 z+EeY|z}6SOJsE#Y<50YxKFQ3I5rExq=K8e$7+_LH6GP7x!#VULw-jm1aYSDbLd zTGViZb|X>J%Y%6+o{lc5djQpir?d{(h5r@Y!IqB*wj3l8Zn1q+hv_ts1I9y-YVjla zo4J~(&*V15C3g{X{b!J|71z_RUXhd0kN!~-oQy^!fvtR+3&y8-*#!YHeiuv$`GX&l zE2KAKscok0n8*tenLN)s*IHT2ZNu&Cy@gH+27ckBnHg-k=gIhj%PV)WqaDtW7~R}p zfKebwf>4KM8M8f&1Oz3)pLpPGK+}}Y*>)^FjPgDd@tYQ9+s<|qGONB#B2Q^< zy=0LPed3@U>xgf~tjOD11r4LN_Mk9DFjoL;i#ad~0ddwy15a{%i!M-bo&}RrYVZ_< zcemJl5$B<+Uw?=4S8$wI9uf?Kc`<1H-CCC(Tfs#+!_SZXsf5TnSph6Q>;h#Gw#3J=^^{&rVFb?1G-u@{NPHcA z2I7tG7rd8j5E`psew`)8Dk4P29ep?C$N4TKnKG{?2jx`%lIj#s{P})#Apkm6D7Q2vPAn#1R-P<3*61P>!Dc4kyvOR2+*U4 zHY}$t5BjYkCOHbt19T5}F8mi5fe!s&Go4W<`C}isb0|!izQGAXVRa z`^x_J?3`sK>$R*5UK#vIjBOzj&F=BP-*6FWKFXt%TsGE<&R&hQ`E^+PwFBLbPK~s$ z+DF+&XA_@CzyO87MO78NUN%*l6N1U|<2f1(eT>@oKXTc}D*QglDH>DsUA$V% z*j=$klaO4-Aj4ErS_*uQv2{o~?u1dxW*J5P3lZ3wGfu1LCWwj`l>HaGhsf{r4M+A*RV9lg_w1I<>4dL-zt3dbF@b9|TsKbkh`&O|BTbJr5=~B@=Mpx*P#~n}N zX(dPf+)_zZLW;x_!`VsmX>!y?XTLb{e(Qo#MFu^Wjhxqgs+>i2z06e=hZqXnt7xK# zh3JUC{yS&__H^FH9Kl8Umgv9VVt2b=k|5u_QDt2#Rukn)O^C5kjCCEhaLO-U-#g7J z3+WqR<`cyaLiS0$H52cm>I^8C?^I?E1S2R0#RT6_(4o21I<$yjGIB@E%Xu$i(ESv) z0v%IG8{n3O#7YYh?64J39ZGyQrK39}#Z?y(g*lF~Lt;vaG%*P^ zK=6@DvY0lzI0@o)=vpSX+a&u(u5}12-PN1jiQHV3+YeDNBM|~oBjmwm$4i&kFa(wS zIqFJT#H?JZdHTy_o@a-~4w&by#(ZNQXU{)|`9ueUAWSi;_T7YF%`Ss@2%Fg?w}y^r zZQq71L%M2N%hC~u$!yu+5;fs?8cNxgPb=ZV{;jN;Xq9#He0AZ?ei)GyqjM=y`pY7w z=!D{$;>s@l4Xm(!Y+PM=f$tf#rgt60rmV6{R(l{+)eY~Mw^k9ndI0AYLMzTgY!%g< zCDSM`Z|q~FqVFjCF~ydO!5*f1y@~H1QyeoorI>;KDs5cvY~xjcB)dI5_Tvm83DZEv zbKV~%OIN%D(PNq!!6D4mZ9-uogv>9hRqbRv7XO5#cTxTl3)I8w#AE_ivxIppHb@sf zh-`EaNA+XT@7veR&cTa`MJT`4SCqd)Y}Ncsn{2Juj?Wh)zHgx2B{gzzFR$uQ`6>nx zo2d=_?O$3j6pI!JO&4LQZb7xwexJ()Q9Ya`w5I}Es2y$+;p!*WDfa9{3^0)e!>SSJ z5y2q)D12^Q%!;kA92L#0G`|gFoAOF=3g-ZXSRr26d~PUT1D3%F;*&N^;|os{W4KAN zXH}%RWx88YbtMKF3gei^7E2FjF~yfn0Jo@mbzddnPYr8)>6>kU7b9_Cm}gJy04g^c zLuU5qh&3-d8Xs}t!Xk5&78#iEGZwaT2gWLZOF8Gf4UVruU`FHw zGvnQZAcz7|;WYp}nobX^XtkR!N62%vU6IDu~98))cKC{JT^YXXEWH&2H+DFkc{2rstI~Q*7`Bs-x0KXS8 z#}TD6eML2>IUsU9ct-r~zNX)q#G3j1y5#z-{jwbz9H6w?z(7H_Um0&o)2% zxLZyyKhk^Q^e35p3C8c^K%)Msn+ITpN1-18=s{6zkCp)ubupc1!DvgWkB`itkqg%# zG~?$F?S9@4|C2hcu!B|aY zjUR!qkyomSV*+$&|BrSQUrCtRD?s;0ZtIIOBDG3}aGy}cf=tU0wj5#sf#D&V zt?C!5iHh~;9QG|l#hooaCGG<4;e5g;Lc@sIp^XTv!7XNKhGrV`;vvuZaHg+}2z2g6 zLItTgmS%M!l88UhZ88J`AZvsXwJOAKN+=&O(@1za0Nc%F&ANo!qb70f2K&}rJ{`8D zOeqG!4W%85Y9wymogwln;{d&8kubd!CxTT@rUY#MdQ3`M(-`0KDssDMwtEP}SQ2h~ z9Y*-ky`ifpByFiIOYr7_EJB73xWefJqLZ0C#lB|;zK0bSoMH!o51xfHMdznd``Rs$ zkKPGV-^Q|AEyq^ZY}b5-oTHxB>Lin!9A79N5cItC*lRjr5pe9NBSoNtvqr1ADF)wT z7g65;6pPjx1X9~#*a6Sl&JI_^djd5FA_q!TAWP)czjQyT!UHv#6d!0!wl30eJAn0; z0k_9!CP6(VqCeyJ#d5$}*_UA?|a<)T) zi?;!#(pze|R?ks*)e2~Kw0pZuRyR+24NuZPkE2B08f=Knof zV8R%L7m0fQ5qs+~Y588re)_MR-y<|5q))>dak8|xwV#*~;s|h*>wb6m2umEdF1r}dAW76R;bbZ zX$4&-2lDFWOFg@w1BQHe^YR!fd8(MOdcz>=9(eh-wx$%ZsNza;ptdg*z0>tdQYfw% zf!}(jVd~FV&9~YGE+GS&!i4ZwJrd~LGx5LIKHn4jV^R^Hb--x+5x=|##LTAgGD|e- zaVdDdFIaMCMv|I@`CHv??kg0Pxi(S<+QPjs3h~fg@JSFBiO0lmDz*jL5d40?g`V z*mQLWM)z8cb$ACJ*Zv|X4D1^y)AhZ`S(E3K9t(s3a>mytDI@~0W%6EIUDFu|p}XSK zlM-PX(&p893AZ(umjoEZ2Jea4Ka3rS`8vojy4WEIo<@NXQhXe*AENbmltX*y=Pnjp z#mvVS-;8+yw&BDo%t7dm->;R3=A`jmON5-DWAS;0jo32mSXpApaRtgFB$CIk{!Ny< z{(HIg_olP|;n?EuDbwFW*N~epf02bXS4wVCF9WB}M1Ngfb_d-eZdTh?v;(%^bgF*7JCz@MJ}F?#Z+<}EQpl-`(M0)PLIf)`#LTE(;&#xUaX?b-K?KG zgoh7SQ(0F($=JTD3Iz%8xeaJue4;9PSK$N|8_w!*IFr3SENhaTJhCf1inRUq*YSJv z$#)+l{+6i0)gx$6^9vuqd8oC6rRq)y8QA<>vMh4T0Srm)K`QEbY6b*N?xZko0Maik^-jxQvEa)4yzaggDWJ-Pc$33#`vMZ`L z!0_`W@`L9^#aqoIKPK%*wbp0ler4I7S7I^u=LJJ1Bb#EQVT&&oUHPtC@l;>`Nnk~+ zFIM*6z&i;f9^57lCtP2=$mC%7o<#_dX2`obAuUQnLIjbAP6wV9=$BVtSAMn(SR3xN zt?ZP3%E`^k$)%eKIHf~=V(}#J44R(U77tSdJhmlTIe7|PsZizlOwm)MX-p{|x@W0vtg z18#2EJbl&B<2dKapwZu%!DH@lrGsFls`E~I&8n#;&udPxhBjjt$qp4dp1}u}N2Y=O zR{z6djMbeHz4WfP&R;tlPv&WK{x14?g7)^n$u#MsM)pU)PZcE{b<3+L%DV!ZcNaC5 zL3SrJ+)PPZ``m7A$&TMT6K&QTFI_BCR~q#E+s}i4PL)g4kIH~TEkL1$nO%<>My(ed zs$HdL*SH0qoyxvCC2hRC^jQAkyu9(Dli|D3v1>%ku*=}I?pN3?bTz#~k;yxZTmE*Ch z<^4BnA^H?z6?v^|cKGM}Tz4TLd?x#P4HxixoPZP-Xa@E(0y~C2gBb00=7HlPDg$ICdwUe7P132IRVE|>9U%F5Qo#cy0g(N z`Rtqgbg$F-V0J50E6cyW3-A0{mChN{z=03lk26c~#|ztJddu~f?c)KxIqfO%qB@sj z_qmN_-1hQ}!<-Dk;Lk>XyK_UL{>;{2zR@o302$>yef6|zbTrxx@a7+~M9DI%ZM?UW zz4P0-5q>flzloH){`%=gVU<*JMDaJs3Xh<|3w8YC+4IXyVa(>Vnvxqh79K@5}+g6@xXdM-~9s}QBT!#C;R>HU5UVd-+v*c0RQs4GK-d-v7JE3*1#uIRs`p(-tH!qY+Uj3`}Y{iU{ zFH3}+iLn8`vO_|n#mkE>et-)VN|qtPGTspm7pk)Hb=)_iB}T`M*MV^1Jw~=;Y#3oglx-V;c8Xy^+}o2;6X9WVq94Jxq@W?lz&#GkVP4W%%lZtJz4# zS=K&O)_&&G-^}0?nShU@ZhOl?hMvnGVa6_8E|rp8GC$GD>8nuTIdazjR?W?0SJ#*z z4_wO6B%Mo-$$B9x%RGb}=F#PB&|Ln(`7F4PF0=yL>u08g+c(Y{Rw9RA5IR>6`;-m> z7s^~tL=R3y=XQ*6JSo3Mi!&FN9<^9H>s>*IO|RM_OwH-0oZSFo!BY^(>iz{TrFHlG zVrSbTf*eS2Do-X2mIE~1Z`hLa!o?raIsI0K3OZ;3^{7fM5u>nJNa{`193)tsvv#Ao5L(J69N zsM@zH;6i%x`g{jM)i&N^3HlLyd$;r5$*9cfW~v-5>o8uJ2lA(g;OmE@m2)S9drFn_ zrdV$_L%lDSvmtfqeBZKOC2c`gzWr{J1Y=#f&+sXFP4cnv0(ZMwEWZ?Ly|U5iJ>Vn>)~W}@Swzx^dD&3E3OSp4^O8TD!T zACCf^0Dr3h#Zespfv_+DI1QazLMI!BK7M#^Y`XMcJa}xMe@VR!=?z@67S1|ZgYH98 zf?X!GKW1X5AgRmd!2&lv)S)y9n;^YBi>Z%QCU5~rSlzjH#*MbP{bF!2I=Hy~4)?bZ z{F}d3$>pIsJ1L*amU9X7Ixw(>h(E7)osV9IfMDte3$CqT?8o23iM5oRt(o2z;NYp` zVEp`_<^`^!fL5bLU}me6J0ueu+VJ^5YyVW46M~5#@8qo|u*~V#ui$O2_#n3=-Zk}) zddhY0sFdMnjTt@ZApG3@F4s?U^JLeE5fJseW^T?=D?X0%^IrRMUmt zNuqH?5jMg}^G@+>A9pES-oqsIrChU}@`ecTkya~7^n87;kQ9ZtK;79dwAwcSO}C(kQHlv&%`FtX>Pki#v0 zCkVOeQC6_PV(I70564)rUQ@sslLF|KqqO@>EIE?=f+!P zZJF(EK}+?^zuG%Jj=o>6)dj0M?C*U+k&Vv2PzDi65qOH9656^tGCDGb4a>rw4M{8V zy~%O}xgL$6ob>{xI=l0db%N&WFJHOE>s$f85sFMt^*vhi$#kuWy;K=>V&R!LoELof z_{a*=j8T*sReKe@)A+NmL*g(qxY38l|5SK$Q3!r!jL^g4h1|4x&X3n^X<6alh&-$K zGygH7oOI{hPdwLq-A|(3pMmyu+x<*-D{YKGoug~r&yK7Ru+g~z+Y*bpW>Cln|D&Sz z4hJ61Bld~R(Gx}PM(O;=-W&ByMdl>a8!;b{M1$J*$#?HVU{*36lp z-8IMFztyuBv*wpAyLw3-om@^gqI#Kh^ATs!ChPl6tqkidUN6MI#{}_ zGbM`vf|nv(G{`4uwbs!kz4t-Z$*31w=T+ifi0?(;2+jB!;!_K+gWH-P0T<3wy2KaQ zc{X5k@)C1CmGUFtr-1!}fSDIn1C)!&j(&GPO3AknhI%SXNaw7eiA8sAx4N&LtK1^6 z(ZS3`C{a`J+3tV7?@!a9=+ZR_4hZw_b|&0~)rNDKX_`Z91UL^lnzuC#fAcTvE$3gI zpND%w5BEcUdR4W!yuY-a39i}h)qpInVVNMQdPDe+lMh1bx)M<8ej2CB3gABNyu>LX zhl@V#(3?`_e^VAyTK0nf9)G^f7;novZ+Dlx+Xq`=hrW__24?>^_k|L$`)4%m7U5<#CiZ%;%Kv<086-|7=4wsvcc#fV~`y zht#*?g9@=SSssd`i>@p@P27%z^}{I52x`e}%PXIAs)Ps&CTC&x_Jo}My33cB!1ex~ zlXQ7MCWFPGXS-8EAs4fy$@Z>H{U4WfI2@Z6bLgl-kG>ya30-PWDLXUh&9p|r-dSdM zYr$P2cFV8xwnP5PR|Q-cm+2L;8;+jRUYDmYp%s!B^}zGjS!Br%F9vJo1`$?$or(jO zy{;?=Sy{vBQGZQ)%==AUT!BpHkX0}2zr4!&#c#RcvgGz zSU3+rHi8YSqVc)_tge0Oywv!s>+Pjc-#D=8p6p%s$W3=?0Q>wx?rLM#vzb(vOYC{V zOtytUYX-IQ%opN^5G)@A+nND0ZcXmz(L2x-CfFtO$F&P z=%hQEE#2DCyH$oC2Y_FJvW>|x&WQmN5Y}NVSSYVA6};PDTzvN7;~HJP4}p4>P3y*& zP0>};txu*vyM(wjcxwUM+f*O6T#?kskh~^c=lWxFpd?tjVbMyi;|v4kzXRp(>$P%% z_FiGN4$yem#gO$ydB_EkR4`*{*I0>o#gvh)ci@DUS(o6kQZ3!X5N}_T&ev^crvNC@ z_m_#D!wH@8_LpeE%kYoh1P?SF*1-Dj^METsYh#;+dsZ^n`<1uZLmo%Zn1hTjN`hP8 zY&mE*oMRSUL8GtH$Xu+34{S7RbEBV>2V#YCc-+e~p#&$0R|t4^-9dNV0aT(0a5iE2 z_u0{K>0qEnM=%|!zfO3)08XTk?yydy#`R>i;l5vW+m z2b*|C+$ zF?r9jtK~SI_+dz$Vy^v)-#_Z}zevq12Y-c+Lt8hzcBe=G0?RZt*|T0fbLOcMnhYsW zbLOt%80$`D^*f(8hudoZm7i_X(ps933SRZ2-)#6#-F1nu_I4&|#*Gsl4A_bIGl_1# z`?$*Z>X1xpuKu#`!`hT39QCoL8?rc8379PJj4{YV&0nqUO}zxmG(x9x2`Y6bq|r59 zr+n{|>5<6j8)R38P!w0AT=xN&P6RZ5UgV@qJVLeG7I3 zt^G?3!jX4OFs$ppk^^g5Q?6EK6L>mPOWD!+Ov`6h{$^0Pd~%$6+c zlmi-prT?_Molm+l(1Uemh;Q%g|B=3%aZ|xG2z7P1W7_E46^5Pl07_-f4hK^fBRB}` zFcWP2OYHCW;8ng5?}M!Je>x4sT=-gIcgWdsce!%m7PQ9XZyq}6#{wepnvgTfX1@{m z+9GkS$XFGiI(*zEKR||FFLIr%Yc~4eeZ&~*mOHKY&*>UXf*9G_*ZIAiRrZf)+;#ao zD^JJQq%F(q7UNbbOEAWl7_#W_N-IRZeA6iVF!TEM9P0IT;@1nntH17NN_cF3-!;z@YpYxg3r4?$&(f%_N-n9@u zUe4lV%PC=;CpW8yJRdr4D3Wr9-}7^HE&C~$5&|?ASmx32_@iRBqOzc0dV82f5p6xk zN8{hZ6d+!qU8Oz6?qJbcux4T0L5>sx{k84_^mHRU!fc5AUprJMHAW)O3iPcb61^vol+2(Icjw=11>TA{I|I_FV|_5kg_kI+$SZfIHB?ox%wkN z&%Vi|=qY(O1`^mGZru!>1yCSf$|lfVE_Oz+FZw%aFx2(r^KF~%&QkIO(E!zp;4kV2 zyl)Vaoyl2G-3?;uXyDLKI!tKY%QxZnCDq2Yz_}<`HH=Yd1>CcvCH(>kTVwrs zmGGjrdw3;PJplka9xj`qL~Gmd8JKC>$pRIh zY>5(2mlAZdL7h!nEtMxwCSo^Nb7#O>U;Ofht^?hS&{dX0mhVneu@=beszmF?W@!|(7uAGo`>9u}TlVD9-t8sJ7#`f}!R zm=I0N>jFEzbB;&1Dz%q5Qk#+-Tq**NM9s&cPqQql^2lQaQ!`N!8g15raKjpMqyTvG z!JEqNC0PY$h;hG-%RB4{claZAu-jYFH*Do!iaeuhc!yS#?9BP0Jbx1by;O}kRLj18 zFC8rk3w=CzX!QR{geii3-QN6VX5d$hr*eJy1{vn7vqv)UU>Y_Q;Ygi9YO%srd8?8d zj3Do2gC+59idlebpMN7QH<9G{JwKsg?cNA#8*WUB^YkiPU&oLxHG^CaB zCSN{BNHvokl>ckaFUpD(9+M{oeX)`4laeHxQd~o73Z1PUS*r-pvdiGTV;t!CX?Uj_ zZNAD@fweyDUX2(`+=fPBQ8aeidp)Ar9X(O;t@V=k3*g zzLZZ*mGh5pcx?dt8fRVc@A={FN)@%=lSZ>)4Y@U#eF+#?sWfyVn~=T??mtF++(JJzO225BPz_Bw))-48+D3GO;U*f=cz-r|7d6+Qs8wg5WUTnKf{S(M9&wcmpFMYF zprt@TS!J#@>kfsW(h^J(@CIc)`^o;C+fpZ~n!nxrJN~axOzC?)LkF5>#C|jJL6LzD zi6Col`cZaoe|GP|negPN2fs;2IZVv86$#*6o+sMkgzWGUdh|tySH*V3MKF!Dt5<3 zGw3WkErJPqS7$8K2NdYIH-;{fR+=^DCjpwygMLj?_U>4q%Gx}r9Gg5={QMd}#&eL) zJRrQ@pNqa->y;t=Hgo4TJ9QCzvNr#wse#B*%-g~3f`D#wAn&@m==4i=Zfft02C0!p zJ|#*96%EsIoBZGF01U&&Z+a{~Y>k~Aw+;B)f; zjG0wNx`%J+eW!enG&N(kb|*(Q^koz-9JQ6U#yR_L(PVyZXY8&;<)pj@(SeMJx9@4) zG4>gk_uY3<&|huP?3su9=5iwmw7;#_9wjMJE;UW=(2y!w*+W#zfN$hWK4Vba&n70QgC@SWG*X{Ur!WScb_ zc3Z`NpByrHnq6#fE~2Jf;~;(T{6O5}umR(h6mr|9vWRdtuhOKthXiVyXnbALd|eXz zP5!QljdE1RzyvqL1Rk06>g&U+5zu^*UN%3$I|XqsCPANTdL%Bt$iAMWE_X*?jG>oO z`dY%2W}iG_Pfp|lH~$GY1A-mKMLZgfymC@~m3v$;BYPDW40d{iiVrlp)Z;(xq0LeW zT=kaxro~@^5TdLmRK1*{WpUo#ycL3wlZtj)!~W+6f9?x2>oN0iQCT3VEV;k7Q>*+; z!h8K=M#lFIyh}5BB2q!*Vu4YYi5|bNr_Ol#;cXPzPgwyR zEtiYEcOo*2>^D<8nKsT4eC|4S=v~2oEI7l>AHs0z0SBp zB_4#lN66|JdKIH$jBKqmJyw2CqRNXBjWn{1xm?>7=KHqZFqIb_DS(W*-`KXjWCEND zE`1rMv!r-uTVANioF{z=@^H|LYDD2Gv;bmU6yv>3B+{B-v0AFV)r*8U+{zcdA~xcm zNoBJr51UW2lAvZ9KRzf;B4D{id!HJ>(Vt^*V2vC=(Q-rugr`yawOA7i^k~R%oM|Jh zeOmb0a(28(io*N_n5Z;TWM7dRRCX8l*p<;J`BMH&ll_XO`xuVnbdqkTFK6F3=g%}K zle3;bd*{SNuAM~~_1&IA{eL4t+EkF|`})|3&ouivcAih5u`<8}ricbQ*5(&NU@?$d zjc`J`O3vy$_hK5|Cn9qb)3dolx1}mgf;)u+tk){T1z5FDpYSgMR-jCB&eDun*;|uA zrs1Bf^KyWnb7VD==AV?B36;gDZLoG10S|d6ctTi@*OVOYusGT$dE&$@5%iAxa)Dv9 z-)6xO_Sj}BCATyAE9BKqNQ{42yw`TOUN32PqD@=Rx<$B!c^(BWXE4Zd)7q(We3p%6 zI0oY;)YjuA+2#AC`THJjr@ZP3c>*y)QDQWmX&wr3QCU@3Cp z_6ph1*f`5Gcz?rKykX8q^le(hM+^|0{(uE92^hf@Z;rLc)O`U?XFh@Vf9#GIxYyZQ zFL!UT|F%=Ur{lqIo%4G>>k$(q1nE%A+2M)D#*dMI)>krCVz7K%Q?TF$D^jy7K3 z_|qOqj4Prz5bX8`X9A;QJ%`O&HaKZep{)6w_n;W$_<|&L6O1 zi}`|W?rS;1D7<`XOqDtKR7NTz9A|hPW^hZl`XUZc{gw2bSJcscq?d82-AB&vM0*RL zi*As1`Fvi9?=wN`!$~vgr?v^eZ2IDlGpFmKyZmQdJJ+`6^ z&z5fe?$=$;ZFkTbr~rq>+s-`DfJt!2o-w>;v_jEr@z|)ilyKP^gvJ41GPF0s)D9zbuDtDH!>{L`sK zUXR9M>)+pMqzDQlvYE>K!w{MGq@pOv&`jHf4+SK*1Asg&_K^N@fjatAhN@{w6V zP^9j#l{eR#`hWzAXG-{Q6cYXf7nS3Z_z>DVlSCbYkvt0{M~r>dmLH#AxC_Y(;obC% z8Xs07QS9yZuuYM+C)sS_mZ0p~PwE38y@N%ZXB*8j=)0(v9d8jlS{ay0W=uv!69i># zJq3DbbZvC+3>t8d`f{dGaS_i&ON_{Uknei>^bM4zLGr{Bx-a`=uh77PZMNn0`pX=^ z0uvSkVd~L~xYYJRw2Vhm9a^`oB3yG+2JEPwOd5yJc_V6c_+&+kK}>sb<0M1 zU(d)yeOA=+9ydmE*xo@PO(?ft&K5cU;jmD3FFJUJ)>jg7Tjw;eyTMT&^K#D;2bWWW z9ZYyl&>Ffhx-cP@Hk@_;u2h6L4f(8y*@!VZs+o$Z&-$F+z~VZGr>qF(c){F1Ml&7b z9nZO_hu#Y|tb?HMz&mTlk5tbl<;%C)P04UtACr!o9f|)qZP%yd2^rfRKO|HSN(>b<0S)qa$9`hN_y1=A_K4q&y;w~m{^oa z*_-XV*hHRjx}|F6K16V#Nr$S-tOlCh9Z*(xLB4;-N+ zeuDoMwP%72+W_;s7DX<}ei)YXOSY@1j)AB@VI-du|3_MrmEN8pAdK2^NZiJq}dsy|JbLVp$I*?ZkIg(pgHYlTU zN|9R~3%whWY(VW)Ka^?7DA0%OVJnqB#`HN1cWm)JDExC1@ z6__;sTjO}!c6E2#Cx8QM_{rP+yv3BhN5 z1Wwe&M;G}ldpD~`YS2K(PCoqQfWV-Fkfy-cx29BqKJuWg`XX5DCmJ;32~HJz*U7=n z7Po69SUK`IyTPjHA@s;B>nom3bIz zXaZ}fw%84u_{}HdE8ceSbO-rQ|0mL*iY<&n;*baHswxK6N@qh{{^j!>CbppB3~PTD zI-rdHyonk?cT95dQnUBe@U!bp7SvLhpS`WED%l7X{-v$DB9M9bETZq_huGo=EB}LS zK%`tuzHKb!#y$fBuFSYa%Ce;grkLgffBh71jQ9UEe}DyqM_~J;j2`%p?dAAm-p38! zf(s6uX(#>n4RZLupjQXe^m6>Ps8G&%YBs6kUV!_vpC)PCBcp0biMvu{@pY_;McVTY z!~%lz%gwngDoS%}zzqwTul~H_zP@{s!208-2N)nz6n04BGy#*#fVg4ocDQ4x1a_IS z>qp+zn`9om`@Hf6N0!o@WRfJx^D^-uh18mZMH(54_ zFfU4U-zXuGzHBX=3K&q1^WOeuiNQU1XJmPC5Qn5-H52c^T}adzIkp>oc1pB?%4NWP zrF)|87-}d^`8&$7IrNU`_nhxij0HW`?CmZ~u=ZRafxJf%`N~wLP;D!Kze=|VT^hL% z?VG=)h>w!Y1-#8Dd}(5m!+evgl4D1w>o)Urn8#Dy#aWG$>JgF7pPUeZv7s;A$}=YI zN5Z=6>pB9Kq@(71_cE;yreDAS0BK1Rd9nl!XF05aD^sJGyy)5V@Ha8lNr-@e+yX7?TI2evo&eQ1ju`3* z9x)2llB^J9vUZ+2eiD$=wDn$2G{8q-U;wWRcBqenZaocJO?8?+OT!@93^IH?8`d3&Xwk~(#f0_PcwN>l4OjQGim1O&A-=J%VVHKd2BdgBH^-!~@GOB?Ah*YQa7ds@9bv86N7&BUeutB$>*98I4_>-~VqV@YVLVK(Z&xrf zSv7a*3oV}WBE~++G*akes|qEKAj@+yo+FH>=`5$|YASfzD|m1^OJonuPR=V>sfC%N0N2h ztRTMU*ihf!StUCS>?Z*YYI)=A80sTg{|wu3w;BVq6u0(6)M1Yd!Ey^RKn=HHQo@+RH?yap?eY>bjP|UOq+9PW5oa z%-huPLbU7UB@2@Kl()1!99y}B!-*)erVGY@pK$e}75Ml0 z$@v&$S$+n0xEzUP>x{pFH^v?}Z6IPzO(0CnxY2S2)pKmdx9i zu}B$jX75><>X~(cTFu>&s=1TBpr9}nT?88Z_JP1G1eG|&JoI^kELKpFFS=PQt}mJ% z%%Uf?D*1v863%xRhfpG-$xHd3)G_k_oIoth&6PrUy5Rf(!s>>k)1%jNjoO9 z9uQXJbJ{1$Mrz1qr4*dD+F=GI^L_$(mSA&6&!_t)r_8NFb)~kfEW-kszXvEB?57oY zV^}BWy{|^X0|dIm@H%F94@4Jpg9psTdjIyWQ9$=55XANf1s5 z0Fu0%tw(|(p>*O=2BhZO%!|h!jxdRl#2Q;g>|GkexqU<03|uk0$@z~ELv)@dPE^du zT;#qSgP)+Mpb56}&_S2p3R{UQ0F9@vO>TZ21p~b?iC#dHj9|&Es$eQyQc0H`Mh_jb_n|KGX{!GwIz%!a* zq8?Q(IlPr9m@2R$FnAW@bofVAc#oXufcFFENT-*;3JvJq9^tNw0n0dCGB6@hUtUr! zB7OB7^!mrhwA_;TAF%&#suiY^!EGB&v+>KG%>%Aj|0uvp#HJA?uKn9BPv8lgGuEOM z&|CPc1&Fk@5bST&j`Pi6-j*8NmJ+ticz*ml3U0nR?!S6peC4w-O4IT`@Xj`mtV+$W zv2rdGo!SYBU)*bXQ_QW+@5AZxu6u|Y^xXqta(BVlTePCkpu{O0VE{gPx!n9h&w;K0 zUahF^c;WF&FbZU1++Hg+IF_rD!Cd*Fuvh5vXUb;G{V%Kczc6dP7}R=k$5{t`&)G>N zz$uRM;fQ4o6;DCBQH6wxF0laQ-caADoPeuQb9RxhS9)$Us}S-OchAyYZe-w$Q}-|o zVC$rYNo#P@!3e@Q8(d=XlrzGDNcbuO12k^V39JTI;2vxcL#r(i)x#cPRtvFyOY~i? z#zN38kOra5ts+vf3E}PBjAvv0wpvjnRQsQme2ef+7?U_HmO!W>)vIrNsgi3I1lDc| zk7St_uZr9^5^fm~&}i)A_D;}*zZXK%(Yz-FF5N%TyGaaU0W*&#J^=ejb^7&7ELD9K zqqjN_s89^c5rVj&TdL?!p{8tqhCf8l{96m}iXcr=y^{Hv4_hFyd|x7Y2^o8z^pJjU zWKp!dmX7lWj)G2*CmimB8hwxAv=JY{xd0v8`W|mu8>AM$dREl1cA^-r#h*HNK<`i_ zmiqh-TTiUVF157gqh}kYM2!0tHiVNBh>$g3Z2#$J8XgSo@6{)ywFk=t(gR4cpKn)u z9%|oC?W2n4`L^s)6M0|<@0adr`yTz>0;7@_xDj!?I#xgb&N#pMr&20k1ctqbT5!ZV zd>LHfMo}L1#f{Q8HU1I&J^l$HKr5RL>ma*I7>~ ziBBncRhc01F+(ipK`=FA4tZ=ycZd>j)*^bNQdNellP$8p<=1aB^07DUj+wlD%k9|_o5Ko)wAq%w8SaquFotUC*cu+=75%_J#>>x>LH3_$mI>NWjTY$Tk)kStpkcPk>GT+S zj;m;?TN}$%bms1{=rPWgrS?l_cF@#+<5dv*SGhH)+lLa5!* zoV1GJ@c{}qyvs4p@EC5;uyRdl)Sj(+cU=As;W0I^zV$ou;4VyoJQpZNh6CRpmgn|m zNN)Y1K!AeA=cLQ_2|OWj{j??`zM<#XK^t1ADaPhsP{R6ppqw7;f}AzJq^G@GXvq8a zZs92MT8@w;jne_mGvrdx)%Gwn!qUF@Ff_D2d)XSpoO4p}0$K5LfOKV`+4_u)Pmq>@ zDf)*G;)f5}xE@*bG%s!xqvROlG>m!bh(Sz<(%yE&i#dASNXz|Ww@s1;vbmCV7$<)w zFPAb-<9*FuxLc7AMCrUmNi@}aMrDhxM#&xz;ZQUj0K*5(D&2P}D_>OCeXe%(${4g4 zG~IqyNhV~p65j3nJ*QxYC5?EHp@VGQJi@y&%qZTP=^Ko98g$1h_!s^;PtW=iU7zSM z&m=Pt#Z9&5LcMGecsClh&X?@PFw0q$s}T3dUFB9Y)ybGxk#&xtj3*ezO1Fm;M8 zd2#?RsvV;*7Ae$E+UAFkVdR^nk@Sl+wxHss3GWT@;N#$2Qhi#C+4S)ELc`D-9-$Za z;i1}4Iv+_qsZU?Bm!xeezLhp$_BI&3TYqod&rjLY_MV4ybN!8B|Ig4r#i8#k zm^sGII3K?goFsAn`~{HAoHo-_ZhTZ3#iL|UV{FlH>wEW7M6?RRluhWRWY5fEwM&je zdE9eBtqQ)~s({M%43Zf`Ucg+5@V!)&K+x-&r#O4Yt!%h4*7jC8h5jNWEyUwNGb~898~& zlsE&6th6n%x(m2?yW-cg{VJtjG_J~_r(84T{!mKDQY(WMKw@lde+TA;!q|>G@K*hSsa+@X|iLU61 z8-6M?wkaEPB1oI3XImeDWIn9Kt;VS;O8TR}Epm{L*8jAMG*%k0swR1NVzR~M)~SFc zMD5jT)e`vUk~xm=BLSjL;iznaMR*6v8T}Tmi}c8p_7s=sm3%k*K<6e4?Gv5U|fAV-=;fCo2kUpvlAK&`6I{A#DuVoZEv_ zDIezaN7L)M6!%+tP^pMElZJiv?&j3#le#?im9iwHkbGX>Benjc75@`LNj|Ggjhh!vU^*>yc(Fq2rO$ z6D4=~l5%Ev3`Yn;Ml)wcjTnE!lpRIeZ79Y3BFn=8Uo&U_&7Hjf#nG|o8J5I($eM`k zRgl2c!iR!50iD!%k&w=Nw>D23bIIWU5l=AJ)FkNw*liJ$FY);b3ieX?dnsG=&*mJWQY z`f{J(=i9sll@%-^MDT(vYvp>+-#(Chz8({<@a15d0$klC zm_JvRHk!>{l}-97@GjqD@?1|1&nNptbcRP8FT=9J^p)7HR*GlU$Qn#h+PXo=^}@k( z6|cZg+1!H3{{~l-#cfY$_-}u&6Y{Bfu6E|*+LsX$c*1T;i|*IW0VZWJE|GMKn85_L zNHq$9mB(A~UBh+frq)l!Cp~V9=Z}tJW>ortr^U9V|NL?r8C;Cc+PyO|V;=WTXXz~s zSzmn{Yco|CuP1=Q@8#7SO3A#fyNUwei}}sf9vKnGn!IAID*-0i@VS9G=Re?qc;V#Vuac6Ghut};J>~cWfTHa zZ*&#Kb`W_&fdXBD%?Bz92MG~84+oJnwpLu|vjafdR`@^^oaMDpqSH$@p*cB?0kEWY zysJ1D_q&C=!1YcH-)#IjV|7)!FPxGpiWYjvkYJ|fw~|?TvWC>okC$$$^I@5mAUv!8 zmiFcw|DmEr$oiOwpli;l+B*?%JooWU9?-)P&M9YZs_P*&92n@yVl~c6*7>d_`SWQk zJ(|>oVw}H~#3+2GKr1}ME=fzhE;;d_WlX(UREd2&?#$Fy1)brDU?eQ-C=b>{;OhD- zWhVA?*$@^7K3TrpP4M(VWb?rzM$|_VHme#N;$TJ$&{`GdBsC%AiqRr^0++uZQ^oCq z$TA(-(78t;lsfVNI;KzNX(d;-!De?$_X9-6KSAP1n`d`WY#;aRJs+dMDJEvinV7T(c2cNKd-07 zYFWCJYkFQ9$JtkjH9JXRC(mRAv8q4xR_-magoHC;ixZnovhlpDj#E7VQO9ANmK-fshY`qQDSY2nsBgU zTq(U?!OCj~ibe8mh_OFBE^bxpl-Gx+LUDQY5#Fn+)8p-Q`1n9{vzu!SRUp}7f%J>3 z{DDgpx#c%TDxo$e7Ye;LVx>`C`x3%DxL^HITVrL4 zSp1MA^C?Y#uZfakoMZkO`nv{B%fBn1@cTV@JjC6lA}eB5B1Q0LD8YMY~O5RZ$uZAKX#=z?CI z$K|+tzk{pMlc#}(i_6*(rl9bBYVr>4Yx@9&81YfnH{2Bg9zK#G!ooPMbL&5<4|sN@ zJ8Q=2_XztRu8ujDC!C)tnJ6vC{ag4mm3MQqUAiCo&t;pR?E3hWClo$K=B$3eorm&9 z>4&&S^5Fx`^58~ZD^@$O4xoPLxvlJb>5!3vC25`L0)-v9f7W|J_tN~#U)y%-+#O{# zj}4Hq(|LJIsBLU_O+eYxg`A0U7iOELCb|QAS)=-;Xgi+dao^(2{M(%l&5q>rz| z&ZnRM5^D9R4ELM0!G0#}rgr%El&*(JP|O@y_T|Z4Swaaw*e<}A&W3Nlkn(7r_H8&< zRd9sWNH61#x(-a%%om4tR+w=O?skx6U6Ww7XmPE0{R(RzlMXPr%D-Fi3b`ctOAmpc zg+8{)=I?k<$J>>xUGe`qy7qV`xc}efQR$|hgbI7QKPjYgXX{b&L`afcr;^-e?ze50 zRFrJFF2q7Tl*@9z%r=C@utl z?$1v;zo-+`_R#Zb+|ro?>RYe7czt+T_Q|~{0?IuW$Tg9K%`JQ8ueuCc=PwlVlrIFB zS)o`R_|(tQb^?sn21mS&>XjZ;gr`pN)9|dzVF3ri0-ViWX!tB_kH~bm=lMb7Sgq|r zO!R}$H(_oZ)gO1B=b?*6u{T^wQUfDh(o_>_XM^1x_ixX-(yvt3VZvV!-AJ|>+Jm<} zIR9w!wt2AL^UxpRynusu+O1n?PvNsu-qtr5VS|A4diHnUf4MKNo-OW9+Mak+3)k{@ zhl|!zkHsbp_pZ18WS8XGf%9SeQCCcy%Pu>6-Voldzmn#5G&8OE+QNMu%e~XnHH68l zIHR%DTf6gkyQ)&ke^Ff`YmRL}IwgYNf1b=b^6CAT+e1atS``PiPM_1W-zPHK58)!$ z+;4AjzWVr9wm(#71&VQ0$VFsQf_zQ|DVi4kOVl-)Ov2}vM}58>k{RyZ338o| z#(0|5|M6LU%bvC{+|Z>p@6n>K8oSLq?i>o?20Ekv(@Zvm)Q?Y9uE&MsKlt(oVc+PE z-J52MVsibwv}qmt?X7B$n*l%BGNxie^Eqm+VD<+h@0k(eD3nws`vNAVX@}{;uoIpn z?#e&N1zE||2w9N$h3^EEHWWf?ayo-IA|n+bve&mwobFGy>=yo{{096u-EG70gRA~2 z&Toqp#|P7G(gT9$W^uDyJy5zJaYHbmD`Vxl#%~vk5o>eg$^(E#hfy*FAV0z&L*ZBe5=&2BcsK}F z@K)!Ou?a$c@QK31{DRskv28olHokZhhsMT#gYNbxk!k(3~oJBuPkYrH}o z`3en-6n#NTr4(#TZo0XQksz1oBgN8r$pU9}o(7Vyf`Hr^$)W;_SyyEsj*?TLZRud@ zG??lXB-^IRvEECc3Vl`DQYYSHLQK@QByP4zu(Ww%NqkitLN5=@dW8DQTABe<|LI?S zrs_MW|NfnWs1O**7lafF$rG4VKT0C6xN3FeN{?YgQvFP0#N*W(_O$ zr$-=l^~r@QCNpePapTXgIF<(E@`h;Ih`b3iczfM7&7*TMB<)9%0w9OqnAeNqzJu;{s=4fJ%OikZnL8BAoaU3 ztk{)?x73GeJNbQT-FvhmO3*xDI@mmH7K8M~-%w)e48dE$tU8EZRi8^wb4p-DSO9Rk z%*famU{@89c||j|qPY@c50MS|1zG}z`U6P>CTn-t z(kc9+f?6sxWCmB`CXJ$i>r=?VXks()0yb&Dn%#f|VeoW|o_a02N(iAWR2yC(p|C(6 z<^oCU2G{KOKHX?}y&*EhNT1zwd42XxoQK^S&-b6I1BWKj`5NQ!HABa}gB`BsamSuAg1{n$tl7Qior5S=OGI3lGhyp`SAOEUe? z$Uv)PA;-5n?fpq_JNylPA%3cpk(uJG7L{~%Mr<#=YGs3uw%_7is&2fpenPlf)M7O7 z7Ujgx7n*0-+MHvm6+SL^TCkVCS1usGi8vj*pVRaLd#Q-+!j$d_u?aR_$-K8~YNPkt zm4YVDsf3}Y+?m|`28X=0d|}V2NMewBL@d@3{{m}~vsXy{pxbohGh;*jZX%q}CKDVu zd?YZj^f%kJ~Gx7E1BN82w#k!8Xuv2)f+I_j;<{W3NAAe88TsY)1edqVk=crd; z2ZP4!_9%kuiZgpzHvD0Fm!fKhYk8;DneeUJXG2r){aEXp&(t-lPAfmxdJV15_i+Dt zV%0_ZD;SQnKIEV-19v%|2z~31s(Ze!0CzEtG^`qWe3;(6+Dmv7;+KnQx?6OS{Xg{G zt?LaPL3>XRzwXqT8g%-pmZf~Cdvt*N@^2Ir*z}Tg`V4$Cq^PmJ+kOK(v9Wr14`Wlp zL6Fi(ayixywN3rS26$#{7iHR(Y%KBWa?I24mRdAk>zJJTf7>65l~AURWhLbQrtQx} zd_UQ$!O}^nQD!WfG^)27@XLh(=cblF!>-4s`w(7W#ST9crCan5dm*;Vo}!KpIQ6cq zC7jt>o*BCX;kOWaLawtBduU`{e#FnWQWxp48LE`S^4#n|-SAeMVza!9usjK!DQ%~$ zv@s{Be~^Je|Jc9cD(fv@D^fnxu$N#Je+|2thHT6iUO!+4wBSKwXR(u=j&6z5>B}O| zEe>$+4F{IJ;v>wpG*1&=VuP)q&uXKJRrluJiEMEHZGv=TU7t>wcai#LwxyQtB-p*1 z>U7*{#(3A*a21Q|{$$}&wEk)!*EJav&a#)@)@t#YxtnU@Qaag5fvv`TZ^7dU>{ICZ z+p}l)Pub^k9f0_Wn9%k1NIZ{o6k<=J3hz39s|6zLzYNSVB_GGWJlyt`dS>u3-h=t# zbz1Bqp^?FQ#C4a3C}J)$Y=X}>xk(ppMs{`LU7p!!mZ4l7vvx`^*6V*mh25B-##ZDm z>;b8{CrBk&kYbt#0xB+Hz6ziq*{TRBlcK5QlKQYius|Slx{FW^!L@P@WpQTf`dLDl znIHbo29@vza}?)!?c`{K>xAItC=gwTXt*zF?Gb!@$2n8UQU1WmZQ)$hpcnK;m(~)B zAdYbm$4e0CK3?GK>S9le+{cq^#RqsDugx?e#^~*Um9Bnhs7c z={Z+bsEUoP$%`xW*cZ`#mN7B7F3UYC2bn?8rP^WiL-Kfruz0c6xGZB45z~1kxka#p z_?PL(k3#)))O;8pVct6CyYl|B1)+WM!PtJz!7=ve_ob~Bqrym5K?b7AlXT2N30$g; z_bvaW;%J_${jwtea_`*9>7;Rz0slwr?CmSo7BpIr`E}CRJHb8_F=07x+4k(B3$yxv z(kOl5*S}EXQp-gP?vKOzJJ;*S0k{h+aeHc?#Dt-<17uWa`G%$R@d2kqYClFqZk#v$%t#NFL~vH2iig1y zAom6QIB?0Xh;#;+YXbxM1+Eeb*Oh6zHpgG%iSG~dX(z!ye1H@q{W zF~WLt{za-f#Kgj`<=Ty{GlH_| z#*ZAq$bT5KAWi*~Fei9d^D-sKDeUTmx5rwZ9xsQ1amj@o5?zSfU~Ua+9l9)%o=V18 zoTQ`?0DXOJ<-5uog9@i9Bbg5~yTx~_y%dGTI?tl-W;6Lo}>mj>z z=RN;O|5Mh>wJ10V!~54jFwP5!9lY+}*S)|+g{B^r7}wPgXT*UahK+56ygdVM)(kz| zdxi7b+{X@q82+LE3QGU9Pja1?cONHuYa{KBaiFAFm1lRyO^si^QBLbFj9(zVr$onH zkG22V&AwPeI}PIj6_`>hBg~6-V{O(4MoJFNx=6p;mm{kA{kMMV{by0d{+JrgJsM(`XuaaiVge95$3A2JxX9|_n6RYP)uVp@v|dB)WXMkO z2+=3?aLULteA^s$P|qr5*V`yB|EM#Jw*tP>*cqXcjui84z%8tG5ojl0&5%?`O74rt z?b0laL&y}pL8f_+clOc~alA_p{%N%OhmhV5@HNEM9C6#+`HYvuO!DV*RwD{ z>z0y>UD*T2u_XBl2CP^XAr)c@fTmp*#Top2-5iBNv#m;^WW!;wLH+{-JQ$6Zt<vYn2(5Iw%kd zzZqzoRZ*O01e7S3-dSAFMR0MnG@FY2FnJc6ATcq5!C#Tdt;lmKbs=c<+)A}}{Tkl} zCNBX*S;#f0NKZ)hg6Suci0z)t28*PwF#m7bhwH?`QEkAZ`H15Ro$54WWdG`S98$;w z)UMV1@JJLfsYI<}8mTv*r0u?ztR|a!Uc#VN-Ub-{!Lc<8IsdtvZ3 zGCAtxM2qUfyK&-Hi>9x;HD@2ps{bd8=2Mkj*- zm@Qh@Qj?M0Ut}}WS?n#?*+=Y}LN>Xj_bz}w`v3{AquY3>$9sWt$m9)U0f5;R11^A) zRAiBGXDO$428~{ieHaCUFQU=2D=Y0c0U(&L$r3)1g9d}9`X3=+@N;Oi%5%BU4NWHF z5uE+kIs1VSi)T5yZWJ9L_6bnp;uv^2LmWy2K*7y3QHi+mKU^N z(K@+jIT-*_%<|Ak4}2&f&AkDypJij0BU$G!sgnCs&;G@zPKd!JD556{+PLxz*O;+v z5qjgaM2k~y=SFyArs#9)5xK?Skrd<1Pf<4}*4v?qY5t!bM(jx%gKx4pOoODGe@>;o zYnt?DzA?pK7MYotfNcSLVwv4p&4Tl_L)+8F()>7AbJ+@Bnl^85Vq6!C%W^(uo->0# zF?R6-?)X^ZNL93(N(ZxnE;?4*JR6U5oLb;D8Ae>oqO>e1zW%F{F$29Wj_>$<$qf__ zd4LqAL_TJEYmBJ$x}vJt3(vIQe+1ojGx$(!;mf{Qqs6zi9MhiZK5mq$e=luF z)8*yqLPGj%Jh-jW7K-z+be;bzOtJ06JTxe>Vr^usH$m}3Hge~FK;{Qae#u-5MCCkh zM=w0lVA%&+fz~EiJ?=_dN|}n-y6*Wh&*rZe54<#L7iwn|t$|Xdm!jBJv((mGzg(Rc z>qYJ_y+c%K*pb<%%NITlYOJ9idf>bdIT}a;PUMqq1uwJ)FaO5PYKw76uK|zl`lT_` z97>&jTlO5@OL0x}H8tKc{MaRgRNg$UGDWqq3^ByTt1CzX4myG9BYVL_u81f6wmsd*6Cn-CkpLm7G#N7 zB}lmuMZ7Mp+1^@mJnN!${`TRS*nyRw{*EG_vlJ0}kFqXz-bas*^6x(}>+xFXn$hP8 zG5+@D1SkB2!^3oqbc<34wB};>YF1L^&(AT0w_4Dt+WMtw@p)xRTug_30pi4pwF$|VcnMq|Jv z1Fn-gCCkqU{!1?tmA&h0}av&tW}->Z5@`PA!!_q{5GsN&$pt2*zF zkC=punxBMwIo_4bbJ@z#lZ4pHsQz#sO?!P&+RF>sG*;5_=B%y_&^RReOrvIClsZ1+ z4^}wL1`EAQqF8vh_xt|8&Z+9Ut9n=M z-Q9bw`_kG?90dc@;5BCj_9-qUFD%QTp`a|v@YCJd(TLH?$=(iRp|ib;K>&&Jk&$p2 z%(+|EtXte9Fkm5BLdaJm-Xu7X+!WQQu2)RKe^ihVJ^qCXb|u5_lE_EIraZs z_Inljc=FR5)!)+nY#QBQKE}P<{&@BCb9N;61G1v;T``Dny!*qTnTe}j34MYP6>-0Tl?ivvbRA3pXze4)kC%EjV!e!(e-?yrk=dWbb{B}@lteKvonT2?ExpiH5+!O;@@u5=T}Q%HTR4GE z(lI31mX4&h1k?DVgf8?kV)BFNZMi<$Fk?li4KtgWUj~5J3n{DXXItqzIm2cLCUd|! ztl=)%iM0dQfBjK#WbZ->KruyzOV~!o2xOUFkLn%joLMx4-Ao5M*-%G(MXym4VgR9?m;~q*WJ|!LHDoVs zue$6l(@RN;DU0Tu9o7zPzkN)+Co}(Kr1{PM0>}orW8HR0X0yQQoW!j$I6tg!IjaBA z$0+<`0c0yNE4`Ds_JeA?@n5#o?cUA)y;g%eE>6H6bPDKmv>-$% z=neM~93(7CsPo0!KyPib%v>DHr)Tu0I3c4?>NCPC+7P)vHN|hR8Dlv$IV?k>~Gsi_21|T$lgMca;H|$(P?MI}<#zRJlj{d!??$5U|fyYiS5Msvr z7ET{;Ke=!@asMPVGM3%s+UCDGCF@6gsmjVv9!zWRS-t3qb;sn6urzmF$HlF0$q#m% z;;G#yLr&hvg;PPYB4GQ8<&Lof$_1XLoyC;0EYNb8lZ?X8>J17Fquzq4j6gzF9%@L} zV9dNB1{&MSoA5~X+1Ch0a`s91>Kc;3eKrVcWu+mFD~@GLVdl{C@z?I)V>9* zTYJ{N3dIh$%O4Sn?(1R>yrZCw=x9*zl^Z$|2+d#{hAj%3?qL|RhK69s+yNvZUSO^; zHYpb0`qjYbddYX~1421S25lioq}_F1#O+1{D$lDs^*BOxLYWM~dnpZ>?cV+t?R+<7 z*4$NJ$+9|OXXb|ij3j?wVw`^mZTARp@3EGQ-KFeTUy?ilNBTjRTFUYsde}(Om%0d6 zp~WQyAu@innMU|BJ>_sc(GpkbM4?&u5x{)j9BMn#fB?CFGM)1okSQ?H=^iln+YxETcud&x`xP_KH&hVE3>M8?EYn(H ze`^G;)N<5xt{)m~5`D)oBtc3If=(FtfsnVqcdjuh#*m*0cZvxi<|!I`*5}^>0U_ym zy+J$vy-1vP+@&)8z5RfY-KP`MCQ8G}@68|ngqmE$(^0!4Dgun7OOqaH9`s|}?pIsV z+_uT!#RZ$W`n~}Uv?hRouPb2PbueJ}dIWWI_Vc+yeAO}q@~hCo{vu5fj)vA#J1#dw zEs&m6Ekl)bvQ_yY$ThfsdaW*>pP92T?7SQ(D`Qlq^0a*Sotn!74WoLY0#9Kg+~-iy zdMxuGCuhcBdqJDgIzawc#g^)bB%XDUpk>$zKw`iaERoSUCCq`kKmJN|>P)bxm9)n zj!83o!x%77Y4NQGvT99k61%eekX?c#fhce}W*gjKPL#N&-;k*xfs{uZ4i_m%n~|xN zeF_@t6XF@IXzte=?9;an8UGvVp38C9O$w0P;}(Kt`JWJsyQUbH&6Hq98wk~5RWSR{ zL>DyD6K=J9IeF}i8_KjXz77v?KQ*aAee2cyFX6*<1MIH;;Bq>}h3Y9ZnsS239vL-; zn)&Y}q$M3KpOkv6wsAx@XOkz;R?6-|1noM1gY09l+1fQDx|`<)K+F|4B!iDgLZ04^ z2A1rB=d^CcLizLHr2<+)ccLy(WN%+A41*JQqUfOl2(>z(45xP%l~n?mGUOrr)@rFG zMuHN9cTd|s9_vUSz1h@E` zI>IF3=T)uv!2DA6Fve94O(M0ClbmyI#U=z6Vw(r}7f@M)R*~pP--+#v>>NT@p{_`s z7l<*oS7<{F~XAd@M<#&5CceQq5byLXpn!vn_b2blCLW@Gi7<0lE*BV%omO+4e zH59OKZh$OCs}ZRODTu*tU3Nk36vYAp+c+3?ZrS{HME@8%46Ik6f7eEJrIXqQ3$C5# zTXbBYYdIj!ct{`+Fb!BBhiJmFA>r<-t4N4Ta4tZ;b|>MEp*C*)WscRS=rt>s&HIU#ddZev>R4n6Bj3C2EVI1YZk8yw(=t{U7 z`CsTe*O#;n+TJbsY5}m-RVdkjFbGHW0_=qoNDj{m@wmm4UG3-|q&rgvPvI!$V@3Z! zJ)?Ut{yijygUucvuBe`t>4P*E|72Z=SOk5I6Ox`uglfGy!%m3fY;*t2nNJsq<^+3u zu8g6{hxkn2!Y1q7css*9cztzPE`jZwUX6c{U;D=!45n#5?t(*Vtm;K0@=q98;J283 zrEq?@1M#n|sNi&`cFRE{ar$Kb{zn8vHc$j0XP{}{DcsU`^Sg#QnWuWy7OIcfVM!-D zlLV|s-9k+0MrnT@jLiDW6B;?2{sj=@SOampqe9l;w%!o1Fh{!j|d&a3l9sb zS1$nkeGfn0V{_3orWYGC1|Z8jg3ei;UfL_Z1J zZmeHy0ER9X6$_i3o>3VQ)bLYYGdjyX<@4*eh%=NZ!CNh8#^9AJ?f=2|$2=O zA6Jz`>5YtAUG+@FdiF~)yH!IoMoH0Rz$#iZ2DNGsWI{VS5UU_}5T-Fak9q+c(mj+= zd$c{^)eh^lljbcZv++cUR2af+RCrg{EON&#beYkkM!zp(!q=%Ecc2RE)^`7sNiWCs zc`4OrOf`SJ9;J#U^ZIbts_kaYe85m>QKrIedWr6wK5uY&rzc^^?ONS28UGhPRZk2^ zPDXWtj(gmyl~FkRgeV2KDhP;B3c~EA*+L6yFiRkF(Uu2$xiN}Q>sIM(r!4avp8k8W z9Rt!YOsJg=jYf;mYZb7X8Qv#VSOMkdu{yC;F7kO>i6js|O<&5VlQF?^_<&0%NG~F# zE}^&`y#AL+uOTd`mGm#LYl!WE3gWQSkz05m0|)C9p2D%iG^37xEw*4Lhzu?UYJ)!F zMnd=yg3-ZH=0v&UA;aSfNz0zV`J(aSg~W>I6`;DY@5PF5%))4(qR)!50}LQyIN<<) z%O*v;T6ym#ep53eE^9b0@vO|&OrdVD5==RPEPcty)CVv(B`{}`@R|jvE&A}H69^UO zzF)k$JN>)y`ui3aO$1v^-=Dqch~;^q5n%^szn3Nr*FyE4Z9F7pE?PixXbZ<+mCqV; zXt#)x*PyzeK_fN7fMbF!?8hJldu`-}bl|sKo9!0WQ9<91@cPr$ibs8`AV0=^Kp(l( zCi0c|h_X)OrH)R|C4~sfxMXRWuphU=jAkEO1jiad|VaTc6HlLVK~a*}(29 z`Fnw0G3!KqQB8UO&3Qlog>KaMI)9`Je?~(`reAaj%~Jl;lh~u1!2bD7Tr_kf)WCV1 z)^JRao?WFr)2I!lg%*-%^x)dop2;#CQDR)A2goZgbtlLPtya zlM+l`tB_dj4W%ePD+dV%U9rp%bX2>7+*xhVE0*yPg8B=yNX*o#b?S&r7o;Zk3MUZr ztm<}*B_0q71SFgb^K3OxoHiEGhA@D8JxO{#nyeD6NSj?@YIz@dr}+MgEsarkZm^gr zY@)od$d6fW^Wda)81>?+>Vrb@j9NU@%moWJRdO&LsDf{J{!&rlRF<=56=LxFcsOSb zHM6rT(!yctw{|;%8IXvfka;W-8+AxC($PI%x8Fb!XG+^3!|1TjlP;Y54%(0eZA(ho3O$Z2NDhL~B|3 zMQxG|*qhcD+83a;MmRks5gB~W&cQKfJQ&CdzjW$0-eQXb6U;uOQ3n&Co)&6W=Xs-q zEAd9nKoT^*z0sXr9VgKG3ny!pV6e20v+?pI!nY=F)~N0p3&j0}=!Fs`mOvYrV)Q^( zaBF=m->et{>pdF{jevnrO;>3h!-iqKSk1PSXJyVX?14gTeK4p0R0(!?aT{6@u#Ipx zPjO|L=1XO~>VByVv0nZ1Mxa@|H+J6JOSN&)D@%b3Na=N zRB<8*ivfH>n79@Zcn>bX_9Pke6`O|{VQvym0C~`I2p({+-0Rl4U)ZOo5Vs?N4k1p5sr;P`mJhB@m^Cf3ywZb-Ks~R}XziI3;fsiRg@<#&=hNWzV#F{Po{LAe;_=T}cSLU{ z_r5|xm=FI9mNL&J&2z^sBOHufgjF~H+GZ91FVXR}$^NhCI1u*NHYzZIq=O{X9{FN7 z8!Ubt>)+B8PZi(|Xyi3NZ`uI(pjC!!g&QFD;AGk9LLk~o?&vW)^pb5|2`Yb?6)B=3 z!}5$3Rqqk{I{&kCO?ZJSW;eWl?%MvC!!FA~!^13(KsMOjU{}Gjo=J^^Cb{&WTSGhptcWX<11C5 zgOUGnzM(>O4>S8ELS7HLTo+((!Vb-ECwToIf7Zf-@R2t$K|F!!Vsg(g!PH?`PL#QT zd?A#>x?O&ibl7*QXEv(nU!8)9=B@$mW%x#A)$6E4a6vv)cuUz1l_1TB`PR>M&o$; z=skxk;Wnp;V#vfZ35Vlh>#d_JF6hI$1wGa+lv2wu<`M{C1S@?A=f%}Mqc&nUuIR(s zR$Rgoi+#&aRr}QqSBD{driN$~_?W+;4{6mH&F;w_I)j+!V+x?ryWX?HDED>T=>o*5c_t&l>@9Pez1qKnRM?Iw~QI{EwLzWs? zx9Yko!CIF4r%+(}t88yLs7HCXnI3o{-SkWkGD~dE_?=kPr~*^72R!q=enB}8Y60YS zYTNxFbDCR6yhjki&%)U-*nK;ZM-C=!m4G$p_sfel={>l%e7bNYS>j zDqvGLQ9LBX;<5)SXUw#KNlR;FZ+qsjTP`Go0L@EREsp1xC2*@It~pI|X!nHa^3rX} zXNf_U7J*PxWLzv#ME0eF@==Z?TnF- zqj5X-l?C`JwVDPyzv{4@B#x06FnQj!L!HNI(4+{M$eJs8evd~wm$&Gfr7!O!W{!85 zmSCf8@Yo*$mFI`esWu~!+vLT!;H#9dW_=IqFUWOkE?=GdBgsMA+{Ge5Zh1C;K(FF0 zs@)H9UCj3Aic~~j+F_JQnOgd-T)kosRv!vrdWK^#3=p--K0WN8^#g zs=Cx#hvhT&$pD#`C41(ZMEGvCB+L`3TQB`+T=x9Um^BVFb#$u>L)APg5Kp1_!;&I!i`ZzDRfX5pinA2P3a1IUKiLSoJgA z-%m!oT;2u`8=%N;=%uUOvSdGH-TkPDZ)Tbl-lw#1edLU4w5oWGGK)Oty2^D|Ip-OT zv}F?|Ff@@L+vZUD`IpK|Ffzdatv-#jUgGkLPQrC7Z=|?9c~%A$R1w__7oxpT}h?Kg&nGM;-Z%V_P~wU&mB5vFp~!-iFQD zhE1dHJ6j$$DjDAD&ae=R?Fo-dLSzE7;iHUcNV*%f&(=tmG2 z-O%Jt<3LVE^6lrAKvqU{gMJKKQ_3z6<_-st6VK-HtO;^;WOS1sYpn2yJqaUK`)~)W zS^dSkdX+5v{krR#_j^Q%m2$FXqy48;M2SjI;tk%{RIj=&*JrwPXj69#D`~wa*tU1R zXroo}%VF#aodwMJj2B!N`e<{H(DG)}Qr+WOt2aE>A(JxpF5|I1pK@&Wah@qi_`5IV zj6O5fr9wiVS|TnquW^yEaH2okR2+V_lKkoCsZS@cWr(VfiT=|H@y^k-rl!+}LC(ep4 zD_uPlXP`fwGqFCZCys?I!}bqW+uc70n@{|hvnKUtp#wDMAETV&(@TLb3obrBcV$O2 zPMzjMdP2{#caxQo6rFKgR9+h9UK+)O^TUuc1ajy72|n5_NQgd~b;IB>tB$;vqJi&C z89c33`%rQ@&6Tbj_@ATdwL%kD3`Z@6J_(092;=&@+=CC6`=3|M$mjj1_cMfuNXpwM zj_}*1y9nsG5zNy*IJ}F<3_ryy!@u)wJhhy7e%Xj4>4&F`JW@K+t2^}wn9@8NCel8& zDwj5HcFb?0ZPI1k*KERaBVd7K9LW6lG$t6BTD^tQ%9&UXyZ?G`uzJBpQQG=ypE0(b z+V$07KIwp+KvsoE6-iSwIRUAdAawD~r;23yJ=??^_-<(l}Y~rA= z*;Bx;-3C_^PiOb2Ds&tB*qaqtit3paX~nAwwd?Do(`TVvo3g=JYoSgTKYgEWBZ=F5 zxwR%z6^zGRTGO+5JF8ZS`y0T5Am^V(qF$aiopO{xgZ8Awds|@l+-A?qwQaCY1Y>98 zWb?~-S#%ZBqBJD7XM|qz-4WmAgLrj;75aw)ksNNCgdj~20?qY(+IZn>0j0DM5@PVI zVeOBIi|LF~sz<;~YpIyw&p$}>;Bl3I!{qHVO6vv^X>vr3o`~Gk`!HTg-od5ZC7aSs zxGLiId~uKG5jcli7njhq7>0QW1ZOhM6h1JSuQe;!45Gi#yMWxpIexYu>VAF^*ClvjFU%MTNFrGV=uHT= zU^;On<_R_NY9_V%m6F+P(D#Z|SDLX28k9Z{VP+KctZMN(Nt6!la6JuRHM z`%eTQVa=%YncU`=`ND&FE8;H5ta!H2VUyD-t6u-twHYhy95=1zVU<)jk zd!;J2Cyt4X*1S9uV__wwYj~p@YP&X#CS)m;k7d{s07OWM@QWFhJnqcpCgt3R?Rtes?h_y|(Y){tBr{tL*UPj7*#Qk&M^;Sw$)=jxPBs zpi7dih5zi&DtL-^@iC^rMO=HD=!uZw?{MMm{>yfb(HI)LRQ}J9Wm(rFGFYr7q$hg=w@=0=N%Kzke9JCKdxj zV}QsMr=+W8v6g#ETMFQW3T08l0kQpo!4HmgzIOpb#FqE1%LW)Cu5N`9QB)FOIg(A8 zXCLPb>D?L=tDsp$-{0W9UgFX=x#gOw_)1IiK7o1WWRcqnen=6G1IjP*de_2`Zn+SDQR?)S~BJ``j|m>7jM5XR^cZBLLW$;wxR2%-}_0QJ-= zB@#IAIE7XG6uAy}Pf^82WQcFsg zM|NF&^2Q=nCe&ET^w2D=m{Un!wvTtmp*aEuw)5;56^V&M>&*e!QKuHUl)rGg#`mwg z!R)$>-Dl1iVPlquo}hrCgs`0#omBai9*mgF;3ob_+I@ZMAE`jzq3CZ+BKocDX|{zr-}uy{sm)!8zUYK#>CkQ&4l6K!>lWYSS}?; z53SwfD11ai;vf>N50p_7PR6YGO_K$`3m8hx@D0Q$=&6$QlGR`Mvbjss@WzaRM7~fJm{0fv~)9OvWYI3b6V};nbva zYEfHHEPPp{Z^^$Ql0E$HsKhRMv5hzu)iz^L zE_qPBZ2f%#_B3pjnbaiB6UvCAJl~hsdY@?eX!Y9ci1gT9ALVbwP3nZ~i$3W0k=o27FL5N8Rgzhn zBo43BOY5EseK2q&x;BjaAM>V?{u@7N3)qvrjr;EYr$W-3!T;Rxc`AegaO>e-)ch85v?$1T!i^F3Q8!AH5qTla^}`8yIn z(Uyx{EmVi8E?VmI;r@fkXU&){lFk)YD@E&WOh}fwYlkSx* zAXEOn22k0Nom{G3IVJ}=k60jsH5XneT;3!$azZ75yXmuLV#{^+181Oh_km{{SHh`d z3in6spH+191_cQt+eWKC#M6r8*~@-mRk+wxyt$nC2-q!fxk)}a_E)nrak7ZYdkVAuaA?zc`D2mTiRjh4{87F0X}IVMC61+MYmS7$ zc>GVU$%T{$q?j85jTAwP73~KN#Kk|FSwsF(kKlIgJQQ)w0*^l1ib)d04Da-@ewGui z%Bw+IHsor%0&*~p?@ zcR>8oICd{H7ZVMcU-p>yy&{BEp`UcGFA8{j++L6JTYi5Tfy5K$^&0oWBufqN2l|Ds zWr2bZdIsAB5Rm|^7_H@{jJk|T8r4F2cu2FO8u}^9RC>!PFs;;+X<`*2|Gc0XIYXO2^4~PH@-4l|p zm;4;uVmzr`UYkjJpp!%*i>8#k~G2b}w z@zmcX)ZC*qjuRNw^Q=v5`^d87vL7$OWqAH74?o96mk|?z()6KSZ+JbrFc|=wGH%KS zVyOi!*PJN($kL%*86Wk5m zGEr>qe$1mL#3(@g<(OQoQokG%O|sP=tS=C)C%GKARfPta?$0O7dFsW*ryV46j{H(y zvHX4H;e&FHj7M|b876|B$EK}RzVt4~_V9}cDe?AlJq zBR?vryDem8zcrHpT0SyW)BrTnU1}4n@0skypMAO?ChA;M30eC`xEa$T?=Dm6S)Ry! zH9@1q9bq$)4<-gcf@+12xr=s!=1gVoMrEI~uJM1#)YJKs(dgZ&Xs@HU*3`sk!j$#3 z5$PJ2lfKt5de~|$j}4{WAMe#z0)lxcmHVgo~H!Y23q++^AVgSVF0 zqM*PGc~?b<-|AMZiT_}foY~P;b{26ad?^Stwjaeftqsb^mP?|j^gGOYX9qvNiJ1#~ zyhaQ+=V(#9OD;OHS%LrlsqHXitYvDe?2%qY=~yYH!NuKxF|G%P6whSm+V}Ip)YLR+ z4H(PE$={nll66icCz5A3`}O!1e|j65Ee52G#@$ZDCVl1-ZZEYGRs+MAh&ffqH#5_B zX>1vN<{B>b?LO;^&J?JQ_zAWMpts#rtk|BbGv1?$%48pHUWi2_nc`O!*me|`Sa{Gv z!cKB!iXw?2J}toiR*XOQLK%0@NLukuqu)i0`Q<4StM=g2-1Rc}{NZ^IV{pn;2^%Ewbrg8anQ(Sed{Lryu^S=AEAs>vfqMDecODgj zc9bC*E_GGhABSAcETkm)@{^|t)bDeKZh5^o z;PUcuxnLc)jNf@|T7BLL96Kr}Go19}JxgWpTQq`i`1V%{U2G^=kJP5!1q_BdCz(I$ z5`mFweHV3EG%2}4)>M)S&o~B0_UYyH96<@#RD(ln<0k3&>Q|qDJZK37d5x;UWnhol z1lZn^NCfuEh8w*ltix-%Vm^()#t(O6qY$DutY>L``UU~hxp3yJUF1g;N$1Fx6iFY1Xk`FrZfrA00k#s(V!jDG*iyy|g}? z1$2U~?Z80}^5!~X33nD_0VdiHJOrMz36>qsDa4U8mF4New$-^_sWe%dYb~$JOa{qR z-M%8A7;^cWyIFhHSTB@5>M8aPW85Y0fk3i ztbXoIn05WE^x9?~Rkr&2o~8-eda~2TJv+GQ0vB?di(x+knd!)q9L6?98@Ef$X%9`p zI6XOxpnmMz9z(*u*xumcZC3H|?0aR~ze>j|&jJ&zUdGO68!^&}hRY|)<>vhm8Bk-$ zsdG<=_6Lt1KR2a&WG(_E9(5?2J)KG^0zEeNy%ZtR6oq7eMcKx=yx)nBJ+cy{OHS(k z%vwwR$WQZ(7NW_faqY+FNW~w2?&|uB{FOT${L7t4{qSz5l$Gxw`3|q8_C)G5bhSIM z5+28yqb3(RBLxthyfzgU#(Ho2q4Dqz!4d6SAALA?E3lecoioc9ZLcBZmvfxTfIjeP z*O*SOf>e{M-8IRdsk1SOrsqwUt1cZ^hx5NVbRMokjNZ@cuTj=YtX^gg6S3#1n1%$1 zTqjz_U)9S*HXk%8PC6fbF9qq{u3L@T$6uNf(t>b(G+mLcXS&kv>iCG*Ct@d!h~ouq zMUlRqhbV`8X(+cU?iJctdw?FR^vJ|2W^yDLqPR3?yf%5Tr0aP4TO3hi{_Cnt2>b}{LO2J3If+-MST*ATeS>l z#95GMa~H&bk3O}~-)MVIQCNqkb}YWLYtEx+R4(|8%8j_~Na37?WkK!TYIgAqf+v-W z_y3|L;<&EdV`w+H*MAKE6AeGHmMt5Tw(RA<>{KDtpm6GD2%4t~FFRd{zfm_!*hCzG zhJ6vD8doN79(>+qTatxlfkT69K`4^QX?kd$=eM%=n6`$;-hZgbo6iJ+E&Oc z=?7ztm*5e9dMF2_O@y3Ta7Rr=VI)d@#rVELtH)&Lg5jIijt0qVlxBRo#3vO%{jgIl;}DlUn}iaQ4hK;i|)UWYt)X_tim8; z(||+O57MES#W3L=FwE(}+5hf2CuCPLwjU?%i$&GVZpM}6KdlM9Cz?o{-U*jRo%8d9 z^X#Rh&ztCBgDEx8GnTE-hcwbW|E71(L*Zb`?igIjZpxSHA>M4d!fs`2?+_Z&=SE@J zGX8VS`yJxf?^#aoeg*r3CBkMmSUtINio}s}Jmi;Qy{8pQF=7}tT zE#*mUFaLNo^>`)ER}=@I%agto_U*L+K!^vdF^z-9t3PyJizYDIwNTe zsX3|<0w)EAqHvP6FUFBw%-##Th%PvJ)w@;=Z@?pW7zDfrW}O|2e3pk%Bpan&h=(j0)z8Te zeytCjDYw14in=*X4=HJ8k9;G;pfZxn;N-IVCBfF_!wqMhp@r^<#>p)9>gp}`TVI1_ z5ZeX7#>q1H`Zw}%+L?|xj+KwnVmtN+^dt0OwJc&{aYs%Q6JPr0_8t z^lC5$mXGN@tOBlK8j(D8}Q8ZZO@T3V) zWfwFmR`!f!F9wPu*D8Nh`z8d`Vc3yUyJ_-gdkfJQ%r(yHQ^y z>&?}(tSU9S7H6=DT{3Y#su50vEF<>sSNS|Y2ixBgVQrDp1*J@5FS$Eyi)c?&wjUlQ zYtu!RAF@~HpF~8CGORJBJcax=Kr@r2ohWAwG=!ZRs*ul{fOUMpau+Y&om7T$Wc-Bc z_4ERGHVMnvb`Al%-=C)Y+{A#NVyT-)e?AkwO8VeoyD*SMlG+`Zbnyvn{1hl50xE)J( z_6k~vFl`CDx9Ku8EcCO5&R=fdR#l(R-xB<>guzMHxEMq>?4epz76ASTD~|gy?DsF2 z=ULcG_`u`6)?`Yk^QAL>&%GV-&%Qq%YcEi2|7YuIZO%;o{C;7Rtv7R=jWwe8In_4a zs+y;5sHSu|oAF65);c~juMc&$$$8*z^V>L@C6PRm(qc?KlNwo=j$z>lN03=ot%sEP zM!<)koekk4d*hf@bAV*grrtz8$0BUPXZ*lc4Yw?1JopuYh8G#Cj_%9*F0{i&SG%c6 z6dtY`bWCy6A7Gu4E72`+MP(pHp-eqjRTrGc+DcE%M-?gg$U6&btBa`2(PJQbvB(?q z;gixxAMYj{hilkGzCRU!RM7x&`~G@yrBB_ym?qUfn}Xy?K^LVEzH*)pb8>~zxXP)z zkv7htrpBNk$7Nw$z{}e>uhba{q^u)@rFbht<0m@uW!*+|0h!WE+vVLXC@PxZRjvCB z*j1))cG*Xu9}*pp(*nh{j)T5ke5FeR1xm!Cq}OHpOWHPf2>6%8k`p3ziv)b8J{V8q z++UPV7%CX!q^D-um|0;EhRpsVdDq*LGm0}cHJEw)zBBwSqW|GIvn+Jm_}FXG8z4-z zdD_jK`kA^Jb7yMq!Eb)&QPDl6UB7rOobE(d4UUReT6G~)y#FxzGuTsLJwR#sv9XgLj$1!_+fRI&kq!@PzTW-*vE)E0164zG1O? zUYM{SO0JtzanPXp70|Q4U-+U4t?T$~kmq=Jb$$ToKF>1Y<~q#zxFFOkf&m&nH(U?L zc<0{+7{nNYc$nk9VotlWbbiiYuDakn>>X*7T7{N;E^X#M-NRBH!qB3M;1*2%q&ea$ z`$o8Md~IKqdQWaBaZnNMQX`p}#D7$d!8C`44rDq((UApr`S_2mrFcp=JBg?N1|*S} zUHq5Ef5l3YaaEdV3%CEqPP94llOlc=@~W>+DkZWi93g1%4o)ov^_-rIE^`$en_(hl zCj#hv>v)lfXvjJROy~(su(qx-eFNoQHeP*7m9LxzMPORdzCxM54nWGp@W=9V!bX-1 zcBtsvVT#jhz!PN4&RlxyF2f#ANzmx1U2|f=s9eDY^QpeVCF#Aj;KsC0VM0uy_6VTk zLgeD)mDwFxuyuD1y(XV*4D9JRKRbvF*!mO!R&9j|d4+MMYic$rV}JYELG4h$AnUJ7 z?4pJy6mf8Ed>lC^HQScxGf2&&)e11KPG-XDtG~9Ab+(1cW~l!oa;6CfCfMp(33>5L zp7NQBw2kR%c#RZ7eaHb2kn1m8MW1afE zNpH=`3Z{JgT*Z$ryaiDPNB7~4{~O3RRjN~LTb)G3@ybU(Ye3!SGz>TZF9?0!_Vg}< zQfH2GPlH6o3D+%IGb+FGrA__+@}Hto!^$aw-OvnX1=?v?R zVcH(A$L&|ZLusv(Q}l-v$jFxzyw$-de`)`C@$m@9oA&{vWD7j?gwD5;?zwI=R>O!q z6`}s{q6NRXIv*x>s0+^3`=gJ_3-fin>}*`GK#CexWVG(VrD;|>GdNFAh=5rHd*`p> zE#*A9>;zgUT6Tf3c9(+hEZIP1z(Fu59p>*)rV=I|5{B*9OajorrX<>3&^y{7rajvs zD1_Q6)gmz*DSO1{Jt9T}FtB}WuD-nNVjbG!cxekkDF0juCvS*wukGV_G><8f#$tMJ z;VW{`M)Y5Aky_EQ{1m_+=2mcszY|dopwS((AO_`=-kIOTx5pkDDc7m%!t=O_>crW? z$0AJ||JwA_TII3GZSESk$IhL2A)1Q6VMXU9{CGyE^S%YtqG9{Hr)oyP{$NI?`U^n& zw-`$V4p4-j{YVW%9H8)m+|px=!4>yc$REzJF!`g98kO7vGSDw7Ba0H~ffErH@BX!* z^6gPj%Bx}z;LsVJurRuwv+W5Upn%oZ_E9z0qX-%?YV8H0Oi=tg$KB%FjX%sDDC&R+ zT`BpRq-=B{W3&Ad=X5YR*sT|FiRDv!L zSprNFHOcr;RO{@=2=S^rCpD3JTGM zO#bcztO;$=C5+G)=ev77qY15F_ZgD(IVmeR6=1m@jNH*j^)@7u&|(@7-^XuLHv(m1 zC#WywO%nRDWB=?z^38b|KRyQacPI)ndhia~5a<{t4tNlDAC)}({{v(|o4=nhmnd?9 z7-kbiHW0&nlE^2Ce3Hl~3Ec@wViT00G>C8#BGQ}I4(;4%gBBbP;0T}CBz(eLyvPM& zn2i_NKn(KpvnOWh3lY6$uC9~R zM04c!f#{y#@q>~=JSi!i8=|m#D$|yJH(XZkT1@!a{DJpwTMVj5lp4@SvN5 zE)&MkgDLNAr17mh`boi*7e-vL*BqKKsW_|oOOtP8t%fsw%0D*NJD#Jg6u+odl15SK zhb3R@VCV6237yKdYPFx;HJ`t2ose-7haTW8Gm(EVn9kuQ*O!ClPw#!4$+6!0nZKok zjdH_j7MP5vJ~%mwOFuo;b%1hN<{eMfJ0%y)n;u&;DZ+%LXXQe9!O)J)(h~``%xki| z$!zIE-%7&J26k#e^K-^6^>$+J=&oyfif{hbTs1#n?(l5~v0Ra!`pdt=mOVzCzPq<_ zxt5=z$vz#-ZM()lWf{`@eYFVD)T$?3E1WbXA8In+qJ#NU`()s-zZp?Cxce#pZglR; z?M=!oUApqTA^WhTQJOYkN!1cu6H?RbEZvLS<0?%r4Axgnr}t^?6H9#SL*@AaTg^$B z{j=5c579Q(L&NkbJtzKfo%&+C1^s^gFBY&?awsq~}6udm}#csL4O? zo{#h)cCWq8ZPPwTekGEgOO&6VG%9Z&6%GAEglp4LdO4Nv1lB92VOoFaK4-mHY11`_ zC~QgKr{CA+pJA=7-fmp-D28Ee^$hc;QThh zoqNHoJ7G#QnSYCHi|tK2{vcM*5L`!d_>S_6is!zyGX7)}>r)tN=656O+GfYA&9{`L zD4nA>KL>H{uS%vGXKUs0O$2k*Js}z6ERtzlIaTWRXKC%xpeD}Ozb4sDCpuz8)3$j3 zo@Q#uGP|d%w`OlqRwBw$(`%L}?*1L@gRkonBxUdNAgem4mv zOjxV1D+VLkI*xB?xm$1$KJcz+a1_iu5mK6dw!U@B#vfnf>>@+-`|L39(7jo z+c27b#F5@&Au(&^&yZ)!rh&HIOD&^JR13DN6>jEdb4Ufv&DpCqaha)SOOyeXVnwmZm6i!qgPk^!&i{^a`lD4MTntmlwXI*qV#WUGQXBbVJ3CHf*~xoQt*R z!H`JGx`QiH1~$4h8y(5%`(|${L00NcQ@8H&u~D~7oYWLp)-+ELL^ww9_%?*w}aVNQ`gbrRVQ7o=6YikepSVThv)3`fw0wa>=wJ_RmAO zF@u{cM0c8~PJI{!>RGQZ8ivHhYVz0(GgOv)vpJ@|5VT^KtY}ClUF$G0rLlj; zb5yNqp_AGNvQjhLhH#vo`>Us+`Dnp*ft>N`IE}r!Dj2>lEL;zCAT^u@*qLRULu8hd z0gZzp&kJh@s~A^$S!*7}vnkk1-dZ^}U5t#9^a?I0$RBP1Shq4Qp`r72%?G{Y0)p9w;VxtdDzePxg zjlLV^gWJA))Slc;z0uExZ2FPe+PuD}Q7u|NZA9rT8tU%IPd2aR@-Ny4vD}aLSuCck zy<9z;mbWSlDQFZn=OzvX8<(0hT?yw$q>*!O_3us0{X*-;ehs@8mmyUede1wKuyCXc zNyGIx{*Ai&uu;|82eb>A_cnBgaPW)6e!-3Xb<)OS+yrr50C0m1?7Z11O#ZfCxtq!v zHA~ZMbm4Srujl)NyZ5OZqP7h~q=9z-H99qI|0!M8)O-3gczVp*G&RaJ&kcQhIa7aZ zoEH+RvF%&rZ}z;mh1ICSyf-6hO$i)OplK3|zBD0ryQOKT&%6KnY6Gce5{^{T*ps=_ zosZE~Q}3$UY)(%jqaf6c;QKx9%8WJK9zW@57G3Ka@yx#4XN+3aVKS$zXVIy9!LOTt z$J^{#wh-42Sl;C6*%o};_{C{6G-+o}r{}$?sdH*h%ElY#ID=W;q@`->xP9yT@vmfRAS5&b{jL zV+?+DRjz7{y7z2f*-cG7Xt1z(tz{ z!}r%BWE<;F%7^ zp+@Pzs(Q`#!OQhTKrLvy?l!>YovwkJY4eVapB8a%zwGl#n^}F@?2!93^`~V2E@VCa z=31`a6R{sxIlA|0>=;@fs+D-!ZImCJQkYjsy3%RN;J^IG@9ouj`sHidbA*BWAU!*b z)J_MB^t7#t<5q*Lz1NVxR~u(Wr?b%9d|j9#L4Km4J(L@*ccuxqHft1!?r{aq+UOrg zr`FXX%|Jmu%XE#<_}u<_prPGnFAN<>W*XY-*b+^M<@niG`{jLO>H-eDz37YEQaV&H zVaCl+@HsB|3X6>^DIVB5UEl{6*SWi`7;Ftc}6h?9+bvmlJ4Hz znSQ8@v1D_+85^|yugMvuNKlLt#al0%#;Rp~%-J2$zDX)#3w(9ow-#nG>DRU7PhzG$ z6H0igUL)95On+IuZGmn@oAS#!P$%PSoa@=%KgBkB!yt8(Di=Uqgg2&3qIv5y#L)}T z{yXMI6=`-)4c&%b4jbg!pK3GxqkH#J-jv7n?0v+bF3*kJ781kAXKIATeIgB6etWQ3o?xvw+2q~m)ezPuZ^hQ7jhnf{Y zBQ<6I82TkGw<^{TMax?&wwSF*@>sm%q^6oAG$#>pnckL-h#R34q#^lfX(cBnI7*xL zj3|k!Pib1U!YNPt9{ab)X49W@GgN25wD8tCLPX%&uM&!P7Bsh~WtQ4?@&FLtxjZ&Q zsi)IwOxuH66p6%n(in#olFoj)Ptkn3HPYPT)mmI{IwVEf1{yL>Gj@HZp}lskl*PX! z2DX!7x=~y$cf4q^TWH9()FRMGLunVLV;0Oz^BA%j6%@l_K6c2MeL6OnApJO24<9@@ zW1f|&`B^Q|s?n74&?-w5uZpjnnj4yPxs<=^RKX2Up}Ri$Y;Hk6$!P~Ewc9hH&_^FS zo5kdmvRwH15eq1(ywx9#*_J_YwT=~r$IIC`vrfm39fyVCy@*N~RhBnElU*7wl05CWtGUdFVq~M=G&8vg zuUfJhO6{`tAvlR@)j`xQMT}Ll$ZD?*o41Xt6de*MZuF@UDr#fvrV$K|=QM$Oe2Scd z{nYat$ujQ~CFK*|wIA}HX4vbGE1IVQb2Sh_4Y@Qtm+J4SU~6T&+Nqx4?m(Fkym@pp z0cHNBj$mnlHVb)_VI-hVY~;FPH-{W2bB~cO^WEP6YSKnT*T^pE?mSR8K&&k|ezQpWr7Z`t%anGdOsKB=- zEa&p%NZO2L!?^V$&sTMAquYH7ag+*+@j@MY` z2Ixjf3tx&trag~)g4F9J>x~yn`DyzWQhK^+L;`hc!t)bMSsV|-)2{|)0W=i6vi#gw z@2VYL&lD9-X!>d4T>{mUe?Vn}hc@mRQ~doa>?jEduZDNrZ9i8i=oY(J9?yZH0n)L# zMs4(gBD!J}hF*+#y3F4`U)raeWHlgp6U+iqx_8|s&|Z4#;O$bZXmfNss@|SL=5p^% zY_{#{(0oUS62EN=50a0w91|U5a<*15TuB~5u2xexFISNGz@7Fj(9aq*)(LJC+3c9$ zBx!bgK6GKqUE*yio9NQgzOPheID1*CMBwT@@)E9ki=Gd3_h`ym^IR^rzJ>Hsa0GH( zojhIeDvpV&($0UY{;5PJZMkz)Dd-Vgn zHb4U$MiC|<$(kn_CWRwq|6r6r=fq*02Af_}I0qZktf{e*5tIYvS0mybz|k$|GP#kue$V>P4! zdAi_NYe~OP&*mOanLB21&Lf@@V$|^c&^~24m@Zjo{+@nRaZSGEbNUsk6K|0}QHpT4 zc+B#r=ZQ!0IYlaK>)N?~eNK^Yu%?!-_Xh6M-(MPDM_lBJ3K48j2{<$)&1`-y8Q&2#^0p6 zmfjx?4DDy!Wv7Y-!##f{%u6AKT7jVa90Up~)bb*{GjQ*719q%{(B3F5HsyzBN4TJK z{W&fBmJ#Eo0tBh0?&#-NBMoXJs6p=aH%+Q-90o7XztS+vv8KT|bkAg%WG9PhX}Qnv ztc~$)d8@m-y%b+_>oxx2N-`N0y|uH{!tZ}Zh@8EIYE-v3aA_Wp>Z!Rty2C}Q+Yj`r zJeV-m+@P~kD+Iv8n?-oKhEng|(cZ+S)1*D-TXTE)_X?}VS4%Aa zQc-`UcptBs+cRBx75zg{0>{MN&J;9#J zfqZI@iyvg)-RtK{3v&^KJk%?o>67hJyus8MN=;;-sQZvHv$~mwaPWR4f{DG}>q=;* zk_4@)1Fhie5%j4cRcD!hJab&CDwx#&I^TXZH)G;L=WA?TcxT_O1OGVOyp8jqIZktG zIRTnIEWd9s8V+qu-I%fbEcI^sow@xSquSgbesWC9Z!MfGyZ$^d2i4;8Xc=X~*(r~D zF=&q0v=fkO1JtjHVL9D|xV)l9Ee*exa;7X5su_|z*_V}5xZ(&0&GzZh6*}#jIHf-@ z<=EQoYr7wn-V}(HjzaHa@PV(nQo`v#M)A0o_@+6f)$l`LJr$k7s`b1vM8uR1{Ozpv z#1T;^DBQIE@b#oj4QY4m0o`~H@7Y(5lamhEdd{(U8gxU0oQ#pC2Km*jVf#gq&Ki3u zo6M&{Jp?o<-dSTX^`;>GnsqC&rz3~F9#Xl%JQAvQSgj56PICNVgHl&rp3`&O+vni| z(5o z{Fv7CI|{{p>2Nn50cwwYPZ{`>H#KVCD-OL$^6ptpx8%TXnX-7j)>9rjBBVV_O;60K zJrk9N(Fuz4CR%n!C~fs)LqT(=LcbfKV-MiVgsxW(ZEw)N-#tg%az!VXN1llFFsl_G zb=y^*`t;e5Pw)7G=R9ZLY|0^VlY&FhPlV4gArHBVG<<3L&Ed%*rh)`x8nGLWUnaN9 z0lno?JhX);3MEI8hcd^Z3sLkx@eiv6g?#EMy^+yLeNf;%OP!ta4#)`Olw*JR zb`FsQU!Hv(s7wo#n8GcMb2o9Yy=x>vNGxBEcjSxtVgot1o{Tp0t}ll6c)_JLI*qg% zLT^?kV0*7EzLgMqGc%ERlw#JZGts-8Of>J#=vAjyjxB|@*BhFnD;(aKX-MjFH{Im$ zX1<`Ap2`o?O^n1pzK*NiL%H08@ZB53FY~f0_x3;i|&nY3oMNXEO<1m_v9m)YHgeYTp2kmjeU0jbQT#~u$j z(P>U5X;sO{BPM!gbVez@r1>us~?_JD6ylVW-8l*rte`0Q;Of1*bh?I`)#+d1Y52r2E;*VGsl zUZP_pM%DlY?aZ4q!e1Nl`MEO8Y~Uj0U&e z#F4^eEPcDsDuu~t@anQ7$H{m%o)2*{QdWqkNEyBG=R-+Npc|MVC`2#xeIPQ;g^4t( zIj}7=e`4mo5UGA~lco0R1Gh5~{r>LHN^XQuXP4VX?%-?(mb$s9?o=NJn5F!N~2us$R$me}VMWUd`xKEOVE1dXHaOA`%d{BzH zPJFaE$YNA0Ik4$cS4TtsA%bLDifN!9B1ke5?1vvBbgMwI`xzqetr#~EqF*6gy$Q1Y z2_me?=jitbn!_ytUHOC5tw2_Kq+D6#(>C#swBw->1pD?#BZ4d zrZ_P1CuP`p9eBj86zQSZ_GBsRB1yBq>X*9!%Xndi-YWe@=URYhM`k!+QWB5%Y>R{3kUjC2 z-zT>A16#**pV-=O$_pQQ@x;x3U)Y9ky>&jEf9VT+NhzLx=_3hU2<$avW0`wls*y_tXTd-BQC`h%aDDoO@k3F?{8SnxAh;6USv z#xTv6go+@Qt;dE{dBRR2aZfWRR`lbLIZ2$4tb9HzC+O?MDd>YV?x8vK%C*hL=I2=w z%K7}^=UI}?1$X>;md4fvfBJcrx>4^j$Uo20_zkxi;Lo#$FJ7p_&$EW_R+#PYv-JFJ zdpN89{5b!VO3&ARA)`lY>aXc?W2yTQV9PStGfVS{%=J;{t^BRz{+8zlGKvg-X-zTN zndg_r=m)48j+B3HC)ws|b?Dc263)zbu+Wd~H0-rZ+vd0Sz$xFeiL5`h)0o;c--lU$ zY4;A5@Bu%xJ0_gfy#CHk&kncR8&p{J{cXA@iD#13N_+?up;gh5+0@t%CZX)|0}0na z-}6aKao}?z;c|@rq!iOiNl1K7jfAy|B1j)#dFD!rkgl&`C?!GASoSwpaSjBFKNqF~ zJbB!w+Eg%;BlZ>Jqyz}Aq8z&GPB8z0Uu+H2L_z5f{A_E`OC`%C`+?ty4bxT%B|lJL zJmiTp$bF#qQmsDbKDe$Fk(m1s_(w`}$bF#KSz84aG53L9Pc~fz6T4;%(96e162~Mv z3aYK>t^*tE_H4qLgwo~mb&%EMBcBrqm3fRurPPPAWIplKA6JtP4lyq!aH4cNf=V z!r-c^TZ-Jhy$cDrMDdP*c$h5@s+M>lak(r1D$1#kT=pc%b{EdO=t&4uNO&_wl=w@&>ACkIgWL>r&lDhcbemLZGS$>~4o^rZK^bs7zDJAM)); zXJ)zP4%^h8YZ|Ww4W6e3{CL&fx#c>pUyG1yIx8jchzb`v8De;pmC(K7R0|=mHOcvc z{3>Y~?KIz$x6@N6vHl=4UzSIb)|X3%M}2cE&NJ11(3825FL7~rEBGA(AcTJkyD#q| zEs8bTas~HJ2j(f^4s<{Qq;`Z@5I&S1Bk8W5?`7O|k#rfW=T@hO}H9tMx9%!BVw& zbd|G~PMs?>bY*7-N!KT$x#aeIbFmuu5DU|MM`f@>o4Wd~qqyDEI=!D=^qM`_bM16s zp7=0EB>g(pnQo6q2@Lo$sam6#_Vrd$U zH7T5*f_OwYR}Q2!Y4787b+FVaoE{0xTqJFg(%t5H!1^+Pz;d7!I6VU>~> zqNSciSF@>;^IbE?_dZj5@MGCJ3_tqNTijG*vAcz4ILHKK&>Te!{YV8^j#2Yvoni0d zTFu3&(nV~qKGB0awM3f`y}pWy zp6Mg9kWWwgz1f>YT~a~@Cl%-PXicl91rM|O<+nE`(*{hbfwqWXkq8d_I6{wa>g9MH z+U|95s+Q^3*DpunB1CS9JB`#}515_@8>hz_!83?NmD1tG#416al5^fAU~QK2?9E_| z(wlWm7TxK6yCQ-y!${OUSy+sL9+6W0nL~OJo~e>KJRV=(&QW$2z`xUB(Shg3=35wB zd}yA@qCY)KUv)5MaHWk7?DKSC&5@R#17xandO5J_z{~;&I^Z{Qv;Op0Gri{BN=Hbv z)f6?D4DRvs(_C=#W9q^q=}gtmvjS<=fu84rlkC7g@2{WVUT3msPjBZ|JJ7RN@`4>u zgxSVV4`DN%cK84uRK%Z|86k@A!(Po&{`66D9jC9Rer zEiYcd$VFoEL!_t35Yj9|^G|~aT)^GxPr(Z!^QPYjBHC(|8oNlQ93MBe92of$6rsY= z`WWk}T8OGflaXGN$5KSvFf}S9K`z&F`O3^n$qq|yot#Iiee!x5Vf#e zl8>@ubV%FqE#P9G*WK4h(nwsbApl=(iXO}uchWgZ=UhEUeT-Jes83z7BHlbj{*~N} z5jE}Nrw9?#`3R4OJ#lqX5pQJEY7vT;zj4(PLS;l3)G@ABg>b-K*L>1(YB-J*eF+mW zopm7o1&zW?t7j#B7H~U8%e3>~;!pg(v_3}GswzB~p->fuf1dN7B3ndfj5@{*>-_Lw zKZoWA#R7FOpCWur=f+xKX`_l@W`9{oXMaiQC{BF}a`9E$#WH8wIvPqc%z0DE8vwA6 zK(RBT)9Dy!tH)g{A9tq{zvsZ*r=T2VekdZMgljN-CttG{SYs_UInSTbEU$LMA~b1E<^4LWo3Vv)W?LYd4c>6nw| z<6e?ZIkP!XT9%%}#xNR8RPhuzuI|yxhu$@8tMZqCD3ir;PYY=4Fl0Fdh+s37j(z2RKw3Rx z^-IxAgwq+59vka3l-_l{#4Y>Xe`NA51chkp(I(<3SXefYl+@cEnbURNy!nj%#O2su z^GX73-7|TxXA1D7ZEt~lhtNXJixv`-_me?ww2<&*09pvoD=SR|D{8?pc`t(9Xkj={ zyzvI81gp+Y7X>rxt2o1H)4=MGrbTSuEbRcEv=JN(1DCa`?T8R z6YHD|A~F4Hlp}F9hy<+C6w+}=b`OuS)8s5G@HiS=St8AobEd6lTniQoi_W;5pl&8F zDTrX0eDac_2nIyrpa=x5_fb2~2gf2a{pu!#vB>aj3C4m-rqzOCQ;=l3I7npOlPz0X z`UO#>1;@*bg@C_$D%BM?Yrm!HO2r1egV$?Gr*@Gte?_|e*M9E33?Ef&ldb(9oPM2LZk*Bpy`MB_7LzI z^cZjCX17+U#62T2pB)ea|7?$G(TV@9g85CsRGQJxMInNR1N{_e%y^)YRfxo4{fX6y zVyy8kdbz~sG5CvX`w^L$j*t>9{er*JiofF11L3m}((mp3h>GvGxV7%y>;>smGG;wU zq@2hwlD_E)2E~D937$~J^8+$^&1LvC^tlI%USOfe=(3+q$e5NDJkoB{BpeVzlvuSg ziRF}xAA_M>usk2AAt@_(B9#?P_Ao|PWP6~>luk`Cdu)~bI7fXEk}TNvq+N0ev|!&!&;qZ}9-cz0ehe<)(wV_C^%z_b?7rn5tOGQJ2a#P>nBnod8>@gf8O*qrjp6nrdAcQpG=nbT~9OHZN%2%G>4l?bb zhb^t)TC55DfD0wgx))-f@57HV;kuA>m3*37E$X);zhz> z0nJxwaZ)gqXUJ|=8l+_fue451(^`cPB{ravXLu@kPR~;Xrk=EhNLj%vDONDsgAd>A zfosCf=~sOLqp7B7Snsl6Vop<3;ue0*e$pE`7B`$*A=~=1CExp8o`kr`f|{e}n3nRo zR@!=OUIOSA3jsYb7uJn1xhu>iUL%vkoTp6J_D*tcwW zr%l#dVc8uiLt@f3QxRs~Q4*&4nlMR)f#>LUy^BADGQ(T#*_{Xt_bf`w^pYay7Xhkw zo1&>yoOrGj{njR?e})z0Ej;axl#jUSqqwA9_f@%?s~=Cqt#5WJ_B@FT37_QFZCmMJHsFWS0Mx~Q>ka0(E?q5)R~?{^`6H3$)=S8T(iWlYLi4qvs*BFFGqWUdP~5w~6GP;~Px+wD%2tmE)i$8VX(Z&txo z+Jl)-OtoHw+P&kmW;zMRa9i-xHS#rkTgvN$*D;9y3OGEO2uBL2bYJ_sZ2}1={S$lVT3yr zdX{5z@56CvaWn5Ud>hE={b&A}(49!R_=?Z-vMpV9ux=KjKbXu5N_a}E_abYlTsuFL z9fl2^NXv>2?yI6%>ik`5f8{u5OTpUlyi5!mI*F3i9Q;Q$lVyw|Yz*Uhq(INdKRDWi z4NgtRKfy2zlTHT{(J*{3#Np!3^E^Wa$3HNuh%h+4p8wzs3{1ObgNe78dO70Q_M&Lh zy#`S)eG0D+&~~^554W_B)aI+ykFLW+V!B`#TwXJ~h5J(edA>uc>N4h!(wiW|ljZM*!2_X#W%?-_ z028y&UVRjrH0^`^sA1j8U52me*ah93oS-J1?336CAn zPv)&6!j6=#5t=~%3XV(oo-{oAd21=qn{S?962EpLO zvnO_t92>TS%;Tp>RjvM5)ZYAc{tb9za?uy9MX@M~qDV<3?|sy-x{!^CuhBI=tVT$F zu2}JYI_jlT%ZB~+jMmc>*(&#btW1$Nl`a%2zZ<>32WlLC2DkhHhn3tJCAZJd^)a4| zc;(sS{Z->1K-Nc}QRa5L$c%}DRV4WwDu3+6LF3y#C$-zcY6NKe6u0wxL7>Tw#A+~X zbrnbXlrM0%;MD2;oNJ+N7hE;amsr?M=&lu%$zNVTZa6&NYvnA=c~hrFuPZ8ml}11CEnNbWVhtETa4V3 zyXBA|ceVIbYmQ4-U!L75SUJ4o;Oacls|FjB2W4;@K?Z9fBl#3R|M{BkQ?-g_;F}1L z*Zij~Z{P60+Q?z?aHO)@-=Q|Bf;stpxz&dgfh7G7G$s%;d-x7_2Gp2wHTLzmG`KQ--XrG z6{U|aXg7HqG}T5;C75nQ3xa*Fmi75OvV5et8u*v2k}j;K$+wzM9FA82WZ+Y^d>E&|$g4vy71)JmR3$Tqew8tDVa+SMQ z9WlgRE7thQX8l;`@AD$Ef{68NM#s&9EAMq6|1cSi*8Vu64AyFKA1bK5Kbk2oZ{QWI zjF%fP7gkfol&|+v`>Zj|kO%YJ6f62xy&$Hq(Hsg^MskCgUL!y1$C`Lw{Ee5uk73AN zf8+HDp;pC6?Uft-<-Mqam6@GaKHYg+Dj%!!{Q;Ae;?%+v%g6eA?eqPy-VS~wd6oY2 zoctGHVzA^KMec|YZQ+l z#m3>@gB;ePl#;xflrNzP>8@Xz{|HnCLcCngZXzfvju>RHMvv#=Z2L}?LxszqQ~Li7 zaQ;v_@eflrS-jVbCYjP&i|-W(KV%Mnt+}XRxmPF4_$#dCuIlwQcUAV1N~=DY$c@S^^)jwe(T>84J~w<M+>Wdj^hwl~bLzK6Jpu;;3`>fPbK%!ehMo-XFEvZ-+WC7#NMRf4@U3Xfpp z@9U|`hQC@+^=Zd`%G~YMRF(IW;@^igi8xYFB$UUa{sD{s)8jAy`LF-_+h6|fFaP2H z%98Ti|NO`Q=imO}?YIB$@BiVifBP@Lz5Vll`yc=M_V@qv55N7(Z-4u@xBvQ2|M<6m zYpMO^@t40p|Nre@{_p?yU;g^vfBVY0g8XwRt!%u9jW&^+ojab>7P} zrh6ElO{@f`br&%8lk*=hA2K)9$z{@*SX3iPFeV^RU$0~dIi_yQ6ULHS2c?}a@&6owy>2T8Q zZE3N3uRnnP;-ca%KSw&?%xTI`J%24x^kVQMEH41L!lq+Hhq}OpfG@8z1g?+I5$={A z2z7Xdv@+tZP?QIq!W`6lw1W_m(BzbgrZP_UDI-(gkHm#AhqacruhcYQ%5z+*PS7dk z@$Uh-LFYIr8IzI$DPm1Qp`CKX={Bi-OTQTTGnaZ?buQFkwZUPQpF+MgP;h$YsbyPy zd&>qLwpLC9EG~mV)OWh&u#R1b0U2eN(#QdB@l~_7oE+S8ruuU6S*da5tu7^DM+o(E zR>}`eN_>F!wj_?ZA7BRQY{v|Y(@4|j8$s6T+twaNuAmLrQBmaAgez)BH=!gx=?%@g zLMMXy0KmXlv@yobRt+c5zaIIwr;^Pir2FkpHuL&mFvtBHgO#H(_&68Sap<$-19ph} zbJ>dh);Rr|4nJpxzC?FSL!SkVHtTPVb|}CKJ2@H`2ZgN#fddOt`F==zvJ_Sd0tfC! z(Ewb1IvMpL?3v}hNP}nTuWD4WQ@dj2o+ZcWQ4cjWM34DbF?x)gl_4ZXjy`N{VXIZ6 zF;fDgO_pXQieB^-QPZM_HNy#83ebe7gFuj2yr~BF=OAFJpWC)zWr|X7t#y5CNQWIXqMo;{VQei{Z!>!L3@;9J? zR^H(tIpxw>sE2@yhb(sSfWU!x>Sds0)`47{EGl8=;C5mlCVM%Q z!)m=~@Hw-H3$@UN7<~#3PK}f1)SU=FG+H(P0B~TERYFSS_;~qu!9}mWT|VM=Q|Wbe z2v4xWDoJm|hrB+Ke()2-t<~Jg!0%CTa2B4l(iHN;v_qDJcJB0{>|WptTEa;N+q}ON zS^T3f4BNela!;vt@&(-v5>f8Ex}h8VYyTj+D5dyup}|t+l@bxu6P9Q@%g~-G5Y#Gs zC8V0c2Xb&FJk_IZHgC~0gS2|QkrSlV?eUYJ0EbjdKOSI@HP~xch_dw{Y|W#ez7`M* zJ<0&^mIEh|l{3`4kJF>kw*}0YrVvUQsMD?$X8=KZ_5|Ry+EYpiXkUH8egM^Fb`kP* z+tn-9;ddAD5KO|&pw05ulJUzR?x^6-VE$K(rwG6%H3hf83FIG4xk_ zU>tq9VikkvSHxueDl1*Vo3Z6|g^4Pn3HY2&IOt-#)x#9xuU;e%&cLC!&; zSy9g6NtG+&JBWS7oyXDVD+E4>eg)#k7gW7+0tC-8R%U`Y`f?>n2%=x98p5~!SAL18 z#9xUk!a{lF+lZ>lE0afjLCq_vND%!>Z4yV{uOur$^efRzT-(em&W9YAZ&~fzT%1j+Ze;c!Vf0sm`>+>&rTPz^PON1AVYxZ3!UsXAU*#9V zw6B^G(JRNR5=0pJaaF|#n%%25M_A^sk|J-P>puO?np%}YqH!bbSvsY}$XPX9qUf*M zGja5*uuYiybl2DkqF<$cqH#n0t~pdNUl&uOdw0$4dFGOBF+ZmB$LB zKkiapLG-I;SdK=Ew7Y;=iJfwXaOfSC7qW15%*s8KpdQVl&p2`7PUAU#q@|z@T=Z5w5syD8R?ynO zrJefI@!JIjt(9cGQ0n8WR_oz_OLoy?oA`yPf{GBqJgvhSzhs})y2O{&*$}^SR8Xnl zgkBFC;s?13DkuY&F2gW-1+C;L_he*^>l_8mg!ktfsqwcf3Myb(iH3H?6|#a#i|hMg zg*L)ZOB6mX^ZGO@{)kN<+k&VljSf1%S*0cTjla`6B|iSLL_wub^mq_GdDGJ}@`f!> z^dN9l^uSLac?wXjz1&G^Q}iWfC#w6-G#q}H}i1l#v zREi-`W1PfbO{Q}Qc8O7tT$_y}`k<6NgA{uz?di1Fee+zioh4A$04jXp6Z4`cQD zGI{B$Z>h<%VSU(5-T_-Q7qDaX(rL!k)M-^0U{#lSmthMJR^o|Z=0Fd;)gu5|X6zAu z0<-{V&DjsspwW_RczIehKrPW1__-3gK`?+ZrN$MZR^zG?4jhOxM5~h39G;mtVy(_r zW1y=hSPm*ptv?aOtAaFxpeG3<`sSRxlh*g_gBh2)0RcLOh_fCzJ++wg+DYgc+muAo?L0C2UB>Ki*5VzS=a}8$z&-NR9hpzz{1>{M#2n!Iv zp&=6moE>WnL;+9b_2oEvB(0CxM?p{V(?o#*xaX)#KUJd?0p%38Rw^`r@KrhFGWR}#>icC~|vGSI2@L})p$#8WB z0QDraLa9gSv&}D{hJc@ZAz>#*O}r|RMYRy{5sk6AZY&hI)i7h^K+{y?Nra5_5coy8 zGQGrHTa&I5#H&N>(P#<*H{mN;DKL~y!wuZsX%vf0Le6oAYour>OCgqwy2If8hX$LJ zI#{F+D5znPIN?|pi>zrWoSkmP9Zf_HNDyd|IPpNA#hdm>WU!4<6MrbW274gM$rWgh zBM5$3CpN9Y)2mhHFNXGHpaiiV%Ije4iUwT7Uml1>P{iT$qk-H3vcgN^=+hk>lcIq` z1<@mS{7Q<3_LR!TTjK?OEba+J4rv@y3nfIpck2_lAMuDVL6ldCYXFUr3WZ?ZFC)~> zm~qMh&&9wQ)2P3tF?CusW6jlNc za95{6aY9nc-cevF8X1?#Oq9H%{j?e`?55lVnpayB*+ zMH#=J)5MgB4iM#bl?;h9`vIgRZY}5>me@J$IVB}_gQpK|W8RaNx|HDaycDmWpf4gp zwZnL9xTfYM)q2xJL0}qcNFwSq@{xqdX|!ZUrPL1#!;1&8O^d6G!w(CTBjeRM0OXVS zM+?U!=(Ei*p$33!@Fuy@G-~43q=lY#MomYOQ^;k5k#jI|;)g#b1rpP9#&ij4I%SEJ zAneHwk!ZXliP6(oN)&Y0DvDs#NK+D$SS{finf?4AHQO|PRO1-q@P`E^lJS;!9)2aC z#G5Ml2z{{`2Gk(%BN~f)A26K2t;K_y!9WuOKcYd(_d%NaLUAUNYY!v6Fw#q0f2njy z4vz99TaIXaDG7{JwE>oqM$&?tvK0yp$k7{Na7eEC1V|!keZfs$2WZ-{A#7Z|bx@ma z&^?R?5AJTko#O89?(QzdU5iVx;?Nd%Z7BpuAxQD!rNO1p2A3iqectz--^@3Y|1z1m zCwunnxz66#ZtvMUPDWaZS+llLgouti#YF^o8dCXNinlbpMkr;vc|ADY8l(68`2K1V zPkySh@X~ZX$=lh{M6&*CvlA>56j^4ACIZ$FK=sgc?S~I#S(;ohg9U9- z^;NzZaKy+>e-K?-dMy=d%vXT=ykMuR_T#~92s}jsVL97Lk5@Hwblmpsz(C8q zYSklqI@5HEsS3kG@lM?*E!pNTV?)}fgxc@lYK=lBLk~OtQfTKiy`e9oRiXW1oaOwf z-d$3a{hDItro}tkT_P|?O0oG2+rBDOYNzH`B5F=j!+CN+#H=&4D|>gVD&A-X zxZ2BsIW^gITV-VjACWisT((FFuH2^pigk;lXv5McxY0~=x;weMdy<~aFnVZ8X`x*x z3!iEX+;omKr=FJI20vW@@UE^tDl2p>dKDpHROP;NAw1*nRh4#+fB#Cu5PKwV^a4cA zu}15Huw>(qpjF`R5MfmC;SA9wRKlmba0wlE9`O@dkb&VW8RiAUm4!_DrN~43{0{s_ zPqw}CzCn87h_i&0Z8&w9INrfboP)Au@jLXXsk)hCVtrA%M zYB5tIF%i{mu;I?4EVZ1bF9NrbHXj)>6S0*YVSlek5t(u`mP4ze6u-$XV{RHWmVlvL zp4d_IVV1u8p^UNX7xYji3}l*TXr@B3*ZIaEFi+GaYp+-by<~usUe@QHzdBn%o^!Sv z6H9&0-J2l4Y6f@K|25lTU)V&bXSrLZxu|oJ)+=F2JQZT1mId5hi<3pBFVSxJ?(Vqk zUAYCmyPvegI_5Y*ssVMvmw16hm#vpn?onyMsCXd|kCK~87XC$rvcuy3ED-qGNf+9{ zD@p@Vn>FZ%;TK6k8SjuUWywVK#&HyHj?LK#zJ1KBQxPneI-u8mbzcThT;07yZxBRf zx$evdz76Jb#%g3~p1(2^Pngk}V{ZhQB)F}QS-ao7*^Dh`)I6I#@K2Zy=v^7FtGiuR+E_#7#UwjI$ya2h5% zZu7g63Mq9Ax@Bg9u+3+Sy_AxTkFxDv>Po6Tf#cKgx=qpNT$hFYkK z>{lT%RCLCzZ`nOXsrpDipY}IEN*rqr2ptC;S>d=^B}mVzV!U{9>T=VcYsRu`(YnRufIbwNN&`OSHtp(% zVQPs*!^^#AprBJXQn44x5#&s*`TM<F;3ba%ZSRmNmO z+nJb&&n_!;oS0m--DFVWBJbWQa?#_LZV zhiFMy841aS7v3Y$-adR>M#EN`+i3BH16mcPR}nMWw6zf|h-rfQ$fEE)cn)~nai6R?I5G1mMbf{LIM*0Sd)Bb}H()=u-nS-GAXs6S zmPK;%JtBAGD^LAs&h)(dNOWmmSV0cAN}FuhOuNW^TTZwB4AI=a0=rhD!W zgr2P}eVAkoFRUoDP4e42kwXP2f5VibKc#as-x^w&ti+(l3t*Uq^=jwt;v(T} z!dQPWQ4hx{6x{&Eh4txyK&hJC{zkvtb!u>VukIB zFt>d=A6uB27rhTru%*y`@N67`R?xvnC_=LX0oEtHZVE=+k1H0{zn1tvL%Aqtq?VdQ^5B1rUPZfDs_(cq7yjs=N3K1-5 z&r)@w?Ah3l{++f)$EuU&m>v8j>l-4b^q`%hh4gG?>4dPyD9V?*o@BUF z=q{7?@O9Lqp1uZfWN55t5#&b7|B7(#aS(sGpKHy)PJ_{J6L)k9@{rF(a-r0#WFlE| z%u7m0G}*h!Kyb(*e7&b0zeaQvc-gvnH)z?|Xds3tXdf}K#tDo_C-clCRVJpyj8LaCd4>yVFi_~j%dLo>6i851 zlEu5rJrCy1YV=H$Xmr-%lEcL@^{A?-Lg-e0C06HFf-dPh^`Om>|khHRWF8d>#jyRA?y*iJ*^tduV8fpAN9 zGG?|38x$~u6@q)tPD%=tsCLPtH82PWH0%CeyT( znGnY>YPZ_lkVLHZ+=OLb9nEoFo2zxnR>FhQm2)l>WPvM{~uN;zyM~Y1L`-bq2MOR2= zg_WM@qKbsu=`~0T*u!j&Ih;Q<2nFXJrg8c>n~_TmHv`nOD^1x1k5tGay0|qcw%)aaWKtF6q=`qe8mFsX;EzSM=9I0J+E+$9EknG$0_)JnH|IxswV|qd zJ-j!A)x!-qrAMs`>fdzntu#RnirghxYJ8}!NF&tJC@6>Jn`06CCpM=e{(n3XK8&`ouDz0Y1nZ_J zRx_HRv4}W6W)%I>OpOR-61Ye0&K*+zbRk$L=H(LSx?8qh10LQI7IH@SgCjw+&y0>yU0(~Oh_SNY+Ck}RQ^oVdrt z@GWI7&D$r&$j@$0YBBTSkewSM!R+(e#d5+Ad%5FLWa9G@Lgro36+31$H4{H|R}p2} zxo^|>p23Jt#7#YTj;SoO%2rf$kDFQCyc^2)ktF`Is;Y~aS2c}aj?WtAq*Ibc5m$%X zLcrL5KHl%JsSL+dp)e|)Ow$z-jVJ?OA;>nAKV&v9ESeg?h z)Cn<@$S3FBiX?}!0>VVKTNk8Rd)B#xGubf*xBy%Dil)cea*vuAbiZ*h?HnOI zh5lI~xKYNGF@SQCGWe^%Uw^jFfD!&4v7QzA9Y;_rMrH%;A|&^OBbOg$`q8NT zVg4oK$UDq45T7s#t4^wJlDVCLNo#oEPBPyQugaH64s({Wg;%?9mfCtlMZ^eqT&N!H z4w-rejYPt8a$Ph}?TU4O!EIs<_cC&2FtsvI=RJG)0kr<5*=O{9P z-~bg|_?{Im}Ui?3XM&S(5wx8KSy zhvyfqL!ocIz3O z>_37NX%ZNT?-);>Ky2=+rTxh0{qd}gwHD*yS~Y5oG&n2wj@Ta{4m29RlQxPcC}cLq zfN#ixDJ=p`3zW55E>_LP26AD% zD+op%qF)x7@>7ij4Nh<@|Kp0L70pY3`?Ii6ilGf$MqJB@TwzZ7j^;J0CnFtYIl^Zg z#_}mR8Fs&PR=f~Wq&E8+LpBCzN@faMLK3rm4D+ID=v76S>$|DCI;dccF&A=Qc}RSPSWU$$CA=PN0Ele$Vg|Ean)AR_f%T`;*)z(=$+I@w>)O4ipx0YA|QI(u*P&=@ayev*wYAA?CHDwceMakxt^ zZzT!CQ~Dr(= zWK!6VzTdOl$E5!h0O;^I1E1P{Tt$dQzsf?&_K`aS!^Fm$NdD zADK&--@26S>SjQ8H}?*kSVSD;w0n#|d+O((jYVBX$B^c$s{lelZY8JB*S7$P+KVEb zFC`1AdV7o%log%lSQQTENAh|iPBo{No1w6U^Ho)>F=tp!W?zfkds!w6qQj*^ySQDR zyG2vCd32(^Qe#C@W0^X+*wS(7%t=3Na-3%j#Zs|6+peWJWhrC%KgJVP`N3jhTxi4D zi=tpq|B}yog+J?)=gz((e0`=cK;GTu&3I4^k#K7js-?|Uo!TK~jLNqugHY+fd!34= zn9v!b^k{A#6J^IR{`kt{R9X3{bV?&>E9f68DT9~8tD3S`JVyiDJ^8Agu^r;mhr*p? zUsdt~J_I@dyK#Ab;s$jAz?sVF?r9Pjor@aa1zquYVZZGjwNG^1Za^?8{ayMl zx_BE%TE#5Vu`fE$OZ#%}-KZ+-jE>2}$@{bV)YOVw-{Ceex$@2-sk|yt zt>3fEU+6Zg4$D4$PLp#4V;S#H5*MSr_!MM1$4y5Z^Ne z=|<_sn|pW-{SXXC4jWAmy*b;EIKPf4f~g8e$=!p0cq zy$vSY#$ey2(~4p!gLZOzYc!1VgnGoL{2zC~O#CRQWjeT3=9W_|_ND~2(|`Uos-ad2 zf$*STA@tyVMb^fQBh{!o;?+lOB(qBc{ zD7SEoN9pOeZlE1GnZ#^XsVPABQhQ+RhwQ>{hYNLZ&znt|6r0mhb9eAd15_?xwLA>H9%v0*j6`j!IlbDbK9hercED;DqNw;SHDak z?3D_Gm{PRBdQB*{`*wWN4Etui4fj_*7XIotG#uG%~9bC{;Tp?SolNV>?xFhZng= zEDXHrPpOSj%fR1(zU&=&NYSRzkS=Q#?e7}RmS+0{VbXz%?3I$E%I<1U>}XZgV|4Br z+O+BJsuPW)MRVq<5+(c&MDOni1Gs%QbRaMLi-%MI5QG%|)i^gQS$9bqb7E>5>YJ;C zSSY>~^OcarMd=EbxmS>d9YIk8vq}yDoH#}gcp|yWW1uTh0V^jR5x%r1!qYh_cznQK z7@BFZRx{6uZZlT31=-#(E2+$#P_?&AxW6qHBvdl;4j=`jn+jtX?tw5~#nf8&r>JKP zC+(c^Ba@;$*}D0g2yOxPf6#MdNrnSLFywDNY%%0P4@`$GUr@qfW}Lf*Ws+0h=tNA_ z0`UIm%OI(cJgFwpCE(f)dvZTH7{Jj(d&hF?2%>&_=*f~fT&moSQoRf;*2+CIC@daj zWMM<|i=kE`dfI8HFUX3zHoR^&<9~;e2fL!YKMND*T>nk@gO_j(2o(cUa@O4@r%jqO zUwOv&R%fo+p3B&lCOw}3KrgVq7x+lX z0JSEq?9|>b!gWI>s-2-&_$l|;m6ywg=eNl6vOJf;X)0R0lh8=~tF+JXL2zsJZ(qGi zA`JKilPSmnW5q%lFk7)Pz7UF>0U|iD9j2y{Y2)^IcL<$RT8Ef$fYc-x*nO{22b9`9{$M#&UP{9%C(gZi6EoOJ>m89I4pjFtu5oCsX9gYV+;*~#H{|AJ|_A#a+UUxu8Av8Mdir@U~lJ( z*nh!Zpj|)bsIoF0oEi0wTt%()A1K1}60G5PXw^IBOabVR z=JF&i(-84I3e@LbFDUatc~sGlPs|;n$-h3IQ$OB*uf;fW44ix=nY*Azn| z)_1dtl-DRqNp#Z4^0lrcu{$h}#HRnqctHQV-SRh2K=Vk40Xv>L(ff=HJj?*W)jI_{ ztJhI0xfr`Wg_mqjEs?d2$o%m0I<7W5Z6 z{#E=7XE>uJ43DXfu_)p_=HB*#>h6(FBau9$(!%+}9C_hd0f}Cr=>5aLNImW`IyeRT z-_^@DU2b$MCqxE2YNuE@BourMp>!Hg`GtGuzqfNKYT&mF7bx_fTMzM;( zDsisPQnRBNB%Gw^KE2&SUG!BYJwKG(X9}292$*CFz^XIv+dt>hP^0lsEi93a6uQ@j zC>P;Et_l1q*jTqzEQlmRJKbu=hSCFcGR{Qbi?U~+JeE8r0*&+ESX;1zoL86)l&0g! z$d$dqQC2)Xr*5+|`21p#PZ#uO^@-eFNhw??oYDGd`e6WZ1wXeLrq)RlrrDhL$Dl7&lNLolc z(DJ-EK?XuM=%vaT`Z(|T>l@Q7T_395zCDa7>^S5zNy3lbWWg4~K{nm8y9FXSo(M6Z zD*h>l;$Xcw7FBLalAUbLQO*jpY*{q$vM6E)kUYG-DQzXGi+6@RtQ3EFS;+5wV^&8GyLL<5)^L8Y7S?B#gU`R7paINeJ^J|SpMA|!`zP!CJ^;ML-C12Pq>;CViJ;V~I*bI-qCg;hMoh!fiRGZ1|6>CvM z79Zu;E*Xu7Fv@90u`j+_f*?9Neofbbl2n}RiUcI6+#6X2Ig7R@xhE|*cGTwDOHRg`iP(UZhF8g(7n9Od$0V0(l(JF4J(x+B0<#Gf5jGVzNHtzAstRS_wz*c8J#?g7r2uUFpfs>XK04mOS|rakwcAQgv-tLhr?Xh)nm(eBZ?k0du3zHAawh~b?lJ8tQe#}i4B-g_qJ}Q5t9m%t+o5)7L4H2eZT6FS8;zX^=K=@upxAXQ zhT~Fn38sPUFgZK?Vj`JTJWS^HMi~*-_MxJTnEgi-EsQ|b?dHY3bbe!D2|g}Fd=$6r zkc&ynhwQl64dCvZZrRowRi=94-aA?i+peije`*bN!I-eQ@lu+>(&O<@5a;W>Vv-vw ztrv00B&$pnlmq!xk^brHAKL)0l#>#>a`T5Z1L5OH8QqMrgF2?3SgIS<4O5pP2#>=r z8|9eH+cb8;Spn$KpEYD!%6(dqT&fHFK~D*K)A~f*Ag1nn!#)JzdVyztFW}J>;rrm> zYu+v2-JT!w*%-WtW5gunh=gb1NM$`;ZSid07cmygs;@w40LA*h-1K4d)+UWF;Cq94Kl}KvOiT-W0_ld zSxbtrHu8@b9L4a~)uAyTD&iS^b>W9>AG2uy!t=6HQwMqbwIckNSBXG>z3qaS_9cK# z4X@HDb?6Qw`YPv9qPDNnX!+CfKMVA#OKAhvr!>DA(GP4jnBG;iHqS`t7n@WmE?Z|>hGGP;sZteD5UWmy;1_$gYdwT)FbJ703p!52iW|> zcW7uZC_K&(5cfBPhuss!mSd?FCbXDwS@e;AAEDMap#=sceySRwR;B4k92p=o_zam_ z?#P79r3TVhRWRbN$Nl)!dMXx4TJ5jy@G)Oqd^AEb$3{c34`TmYBL|>=Do17Biv2Ao z#d?#t27mu7`Dfg(Hqr6HvHpnk@-0xx9Uz0vIrNg(>&voCw*l(j1%Uw~G1bl27pVX; zT&eUTS}*x$YejrT3yz!^XDTAqHgUk#fLve%Z$iL3d04HBbm!_sDfh}Sxx9qm{s<4n zdhG%Pd+jS)LEI>tw7Eq#=>0j=GCjH|13_YTz@TGh0b@c5iTT0?k<;Qlj5I+~G%NDn zY?^Dd@yY#MAGnr|w~y@J+JCTU{G)Mblo;3AmHYE;%_(`xtmbf^_9xlt&fMQIzX1a1 ztlvr9Dry^t-Dr8||Ko`NCnDY^t52U%7oVU<=H|()s~pm5$!mf574;}fmIP==ut0# zQl?=?iRM#FCHfy=02l>n$Ir4$gj)Jp`sAZvdY{3g(+$@!N{4{K*-tycp=v zZ?_a5D&@gP%|scnGkeb~orIWisjnW4|zFi>;66OEEJx38A_Lh!)o4xkRQEB*hvp-}shMYMA}^pyF!FYMjv@b<5+qm2Gn5!vbp9197zT>u zQU#Z3o{!Yf9u~GsZ<`uvt7NUT3s?_I4fv+L6pys?l2YCtAyqEFrw<1V? zfKF6_VwDc^3b5fR@Dz9f*;H>2F=A&fn_7i{&Urm9nHU`$XfK-enmma+PzqDU%?nN^ z;kO0+MW$%E%`B`YUJ9n_P9f?S1XIb=0_}7+)U>FqXoS47*n<&!Zm}XzcO4i(*imvs zI_g8Pm;v1t0v@3bXbNpB&BtaBA>7F036fE({qeupOXC>U(cKoe&Lt%tyYYZ9yB0Rw zNV`nwV4e#LBe`IIZgaSj{T85KG_3?)FZP~bF-9mjE6iytQ$MPT+n&zH=Hh+ibR%SF z9fPKO@=e)R%rZBoHCkND*{y}5rL5v_e@)i{-h%@+C$8p`ne+~PKK)B-*1xv9c(?Nz zy-c-1sIk>+Lfj&cR32#V$MHN7bhi|PX*!E)T4WaA-rROa#TIBS{QYnAFm(kE)&7-;pI)CdRn;YxN(`W1u5Y4VzfF}UpF));gghf zp|-X)No=|@UBa12x5em@cHhyEM}AEl_y8Sr(t)7UII)Y@A%@QI4W!<%YTVj2)q()P<1vP;D*F*csv}-*%6w zNGnN54%BJ_rF=4s$rLZ5iM}Z$%`Wj)aZ)es;iRn7Z3`6Ma+WFWM5H~_>BNL@vsDTN z)I8yq$?SFdy++SzY5zd&7d`+52W2aDlX3FiieFuw6&VUV!_3EAz+lJKnQ zR~?pj5?05gU797^5`rD93)2PZ{VC%A;6?KGl^9I(x38dVkV}4dVu{UOA%`v z|K{T-P_i+_A}n2aCPF8jVD=IDju5#HjsB^vLQ)Io6~9T>$_h)dPLku_Dj<4EbDRg^ zvKykfi#@C~Mt{{|A$tU!ymC`_M2_f&&UsWgbpXNu5`gb{-( zVG8&4#B@fU*oBptpqrQw0iq<=o9FS+ASkzr&wMOEnI7AU`yN98WY2=|2RpoVsGD$L z3@EOxgUI8ueds-O1c2v-rR!a6yb0ad@UkCL4ouEzhTFQEOzOk{OIoS*3|JN428p}` zd^@*kk`lj1Ynmy{X}cqs!tyBfnV5C$7PQIS$>`rZCU44}(rg267u&rJ&jwl`neBXv zI?D}k`7hjQQ=<|n=d3(ZUrpI7`gN%u{Zokj`tf5Dy-cCN-#I^eIcJY3pk3W`B___b!bCd+BzcQlB6K+Ab6=YcK7*h3jut8=wc&qSykfp_y^1lP$6>5WpMvPZ0Rt*{@4>K43U46 zC6ej_DphBPZli{&kv;0)66#G5ny8YVZV{5{OF)$PzstYcK-%Jn_g3NNIgje93jImA zKJ+i;(J-Ufy~!l016#)x;l#tj-QIy{W!!t2w?!3!YZT`oXc)F@%I#R}wTRFP)aJXL zJ#Ara-0FZwftC--|0cbcE$r?8B|Y{3B|TQy&1zPhJ)FGnXYEMMJ*bk0GwBPyFlY`p zU3c++b6%`B#w>R!yV!ox<{Q5V8sryeB`(s|&jQC=hI-;xI0ZcmbsK>}Y4U=p*(e!u zW(nesippvT8$n+%(~H&86=bwiwxin1sN1pdsRYEpe#>#RDCPe$U;HKWTd@1vh9)p* zXN;R(0KoJDfLKPRCbMi-p_!&y$T!b#E#Y~+cOPmv!dEDkE@xrLAP+~Pw;F5&E3$j^ zWqW3_s7&se)q`I@QvC-3j)=2zCYt1^ZA&>0{v`E&?rG*ZI`#O8;vneR9RqDI3Q@m; z$paHL<~#mMf6gl#`(}*uLzD0~9R@NK44yY_S_w0QW(DCZ7Rher zFI2xOVTfi8REX5f5)b^x^(iS7PhkCd%!PMCkL7#Gv!FHGSzN-P-Z8vH zZR|~=x2;#GG;#@Z(t7}p8YPX5D1K9xFdd@D-0L?1?Rbo?b2QTFqA(Njcv`$j{@c{Z z8sWWyhB~0Q-IkgFp(qE8>O|(Uv5(8g3#()u>7cu{j|=D^x`f=`A-B*;11YLyP4KIO zh?2Cvvsf}qXr{f7uE3pyE7I1!+`(OEx<@VBaYv2TM$uC2XkY!}Fi5y>Qcimd*1ug9 zGEmG&A9CIes>Ve!oM}?y_g&=h^=3b@*=MP!O$>ps+{T467U+D~6f^Lq4y`_;to4(* ze9JX9F>9U57yj1(&F*>LiyDKH+)LA-KqKgwuM(ya6e_q1(GqDRG>eZe!B>0^cOA=E zATFblqL2`|w1Hn$Nl&XINs-+uz}V5>_A8Fxn?IQ7%Vt_cZX@>`I^@V{s&ntxOv_>f z9d02?U?BCuJv-0dRr)t#(!9zi?!xUEOXSEa!HNio6B!d9yon*AmXXI+OJah~d01dh zKIiNUw_3fprNc_w2nD=x5puR&q$UGf+7g=QQv~F@xXXX>TejVhKElb5grf&7v2ond zRU4CBQoQ+{{q=v|KVfBSp}ruYsK3P$g(sDY zp~$0(C609Tn?5Ib*uI&C3v~`c=1bMDdR4eza`w67J&}yj$$KJ})liOK^f|78N@`4s zt_^u~bKvRxp-W0klKB}>;=PjAZinF0HIjnLR?deVxY)){bEvz*t_xWluPgXhMT7zCzhP-IS zMLh0<0*xr8hte$%V+NkVA%KNSmeG8)%M46XLf*^k!}^Z&%sb_j>7W`U zp9v^!Qf=^AZvgglj`X6XW9SQIX+0S^gV6hy!%cEX$@~_sqNkaO*+Hit)VJ7t5hYPv`bT+Px z#O35+x0c)bH&NTJNzAhOK@4NY6J_5S`&+T42)mHsA9w6rf+OBfgsMz zY;OFTutd)nH9{MV>Eu+bzg=Lh&W2#@$cCzui=FajrCGUGJoz(hP@={oBY1yEzvP_umh)?qlo0MEdd4vd2~`sS zMqHU8gw3p*z}GrHC|bhI{3sf;K@QcRh}LS{i5}XUu=o*eD~#x=&q~byhkjE3pR}9O zvjO?d*Dluxer7M6c9mO-@o{{5wh`Iq2YJ5*GQw0zS`k9O06b>2c&x76>DEU}wrjFQ zISOMMDH4mJyd-G2_>Qsj=Pcs`%Ve*}FbDgL2Ke9vJFIWDu-c;^X)*SeW29w4%-;gD z{Y5bAz3c{v?UgQZ=D!BGwiOj)%)VUDog0WAA&?+6Y1oMcxbuX2cd)Q!SSkjO{;|~MqjhugHEUJlQRRXYR0tf_$lg}*ym-9 zG2*oGqzK#cQXj0F5Tsp=9Xw*>SY9nE9n=r?x%o6xlr)U)*Jm5LOV~Y}K=sfgVIlkx z4xO{&etAQits0+jOJ$>frimey<3E_0QG0=47IO|wxnF2wKxoq_`rO+;lXus%Fv1#_ zwZpd~+FC*Qfb*y&zf5r%bgKxhiqQQgRX>Yj(!T-*hFcuvLYAVDTr64D_L{u9G71Xc z#^m6o+%Z#16=Fz1DqFZS!tYWV5m7;et+PpYnP725;opSE>6tKOF;m$G?IkSH*G4{m zm>`!XLG+(I=NLQ*X9Uq8w6ay3zjZaC4_SX+`c8v1kDj|%!AmV02@6^#jM8#{3B?}b zU48lbEBw4s!ZRSPneWnNZ!xw~)9EDCzrCnsHah3yK#6^BH!_>_=kvn* zgt#!@&&m`5<|xB2{RH}O#u39ddf10z7IS@Aw%&_)6V`0C)gnaev>IZ3&wKw7DzHE& zH6M~)R-M|_mW>+&M;$gs|Cyyz{GnvfLO4P%9D@6%!S-F9Z)=g<|9rR7yg(kzk4x{w z(it;0EB(4I(TbjBH$6vE_LP%fPpA{`33H1w);g8F%`@I5v=8hbo{a#X0M{7=p$yho zp?i0}WYRNHm~0~Lxnf#zFHbC(V?ijzmNxZQQQZfTaQWTB?3Kb$f?6+>kOhTULc~GT zLeCwD#_$$N%ma{@i7G0=-q^fb)_$IE!&GsAAKDVD=sGfOabeQF3v-jvfM>B z3K~^Iup$pm&A1wHn-MB&taGgy3_{m3T(FT($ei|c-}}Id9)(Xt>mzA)`@ndl=!#m` zo@4da2v6Gl%8&DA+7INCbO;c<%?^&w|Ap5Z&+%16q^hf=YS*Fq__O7bY=|JcdK2zt zr6ZRj?QHKRwukIwUG|QWo+ReqXs&juOs;Q%+_$Yeb1e5Vu2*+4E9k|TZf_{NJn3#z zE8s*#3zl^;UEWwR%-izRMz};iot6bF#6~MffwMuUcuqMPHUW96>47T7Nv#>u@y;6U zR%f0}hE`dS&;;Ymw-sHod1Mb^Yc)DarU?-h^0A{aus)~prYTIdL_9-<2r`(WnxSgLk!#lk~^O(P6^Lr+}P?v z_mki%ezJ(Rj|i-wMd+$;l$UZzg0M~yN6H)^4uM3*8px=!7-nr#TrD`4_~~A>2Ad>~ zA5;+ku);lB$3Zk0ygmU=Eyci9s{0Ptv2EOnBn`~}`OhzxF zBRr+_Z;q%ylBIb37V6NtDBti;ItgkY?Z%OLLZmdMS9X>NX%(EE^6#lBPUzUg_Fsz+ z#yAFb=OdG$qh(6Zt^(!}w+NZg7v)Ug5OPoGdY1qWzjF}oTkxai5&Gt|Ao^3NOt2Wt z%=BfIi~FoO3Ot=)(KQJ}ye2NFc8)Kqv5j1N!Oi$f@v7>y_0C%x|CqOd^!-E@{yY!3 zy5BMz)LbzBve%4+^SGD}4`9ZUqH7UNrxOf_MjudNfGyBNG}ASrxhM(^t_&JA z0`*yiwF!pRwtQhg4rnJk92!JmRZwK`s%P!0D5wzF&ek#96?fNwa zGmoX!8Kj7?kqH)wjsznHh-?G9jeCoO|NaKaMC|?nA{lT#FM)Kvp5Gco*<=5CASoxY%*%Yb2|ZK$O8vUWA8V zmRQjrk(=KJW`z|nut?uWJFLmN07Ovg(4T&~Vq6R7VBizVOO%|YAN%c!K*V%nS^gq~ za=4RHkm{@7%8f|LW4DO(Te{Fa;0!MyzS}|-lOWZ+tvo@L&f-6%>qMqTdM8MzYXYQ_ zLIg&^`shh2gFFYiBmMR4*ad%7zT*U)({ZxzII=tH{v=I@=bs$?iz z?oVmml@4D&Pdh;8T*pQRSliDJ?f2?x#w=;_fZS~ilr1I3SxM8jpC_)eMTNkrDY=-U ztX`aqcDDH#Mb)>9TRMId?9OcbG(kg9?ev))Q5rAUHLX~WK0Fbg^0L?avgii|qv|^q zzgD@wWs&J4lRZQpWK?c~Dw;9JPefq~(><4bi!HuaT+($mVZ)f+AIs&uVG8yX{dB>5 zQMbgOw=x?{P(kcVFphXqB`Mu;v~s$Kn7|WCgLZG7Njc`f`mZSCXgOG7C6*R1DhYo2 z?D9=IZt3AU_W)>dchJCuHltUy{v@lv3y->VWyZsa5$)~(xSu||M$Ut&7t=uPgfdC0XV*l^tG>p zVbJ${8All;OtrRm>O9LKQp?o?HZ@8#tR#z;zeHB}Y(BR>rPhfIR{|SsQ#3Df{|PAZvR{q`YYoSZVBoc; zg}oG_H@4*J1=hv|*80Wd7oqqOtMRhI57#!g*_fnFT|-yZ3UzwhM+8w?wQ`sLdor$)!l|HQDVmiE6@7Ff+-6eBs!Js)_C#aVwNT z9_C{`&BvRt@dHYU`*=`!5w*jx|CDfWR!Yeii|mf1*^WNqph0>e0r)7G{!EAWeOsTJ zvOJbL#V64FL*vM}rKq&XxPqmfEhn^};11hU9p9uWu}1oXXU5s*cS!7Umf-Q|k7b5yo@;R5`U>w>|*nSYAhv{7EWd>wo6+VRpZU;hX!&(sY2(Rri!ccruCPo!u5i1((B zX$O|q%?WPsh4fnL&y8?S`;qOoyW?7^U(TzYf8lp7G(~rC(Q;t<1x3VZ`m4Pg&wc&j zIUv%VVHp+t=+yx*^h}=si8f^V&*t#hekRZK;6%;xrto1>>XWNzq$~IDtWDa{a93|B zzWE5j1!a9)(tak|urpDk3AAweaMyR&zpKlo?vFbfz4q(8OpG2|mT)FFJ(FhOo{Wxv zfCdAdfBj}(Nw`z`eUgrw0j!s|-JB5q6c$){_qi&O2QX5er5kbh?WKzzU#>LceE8A# z0yVTF`J?vsrD_Q!!ABl`|6BjdPM!(p??>us`9R;HM|xL7T4xpY%&?Wu!td2H2Va4# z*Sc!TZsv9~1wYFb3%?O{j>?77{uB*2oQkmL6glO8y!Mm+?9*xZlNG5&(sS*dcI0~2 z0|uY~&UAk6W#1flq0M!M`%E-Nnl-L`I#J44Ovbw<+>@J<^A)pJ7#BCiySl!j zy1uRc<$)MlN`7VE_2rT&oQsd%%s;#82FQA}I&Np(AY%U?Q~v?Y_W%8X@+1hoO614Qxh`RpaLxo40mX2bJ>{B?HcyZr*b6wHGb> zD4*&VmlpcPk5~BVtIg74r`%+z4Zp*dPy{%o3D-q1Z>y&BL%;pWMpLVhTIQx)1`9wMhG&O?MX^ZP)80SC1CdaQxR2LiG{GVVFF4DSg zY%ePs(|4SmtLI1c7F~f3s|Ufy)0Q)EeMyU;PFnAchO5|`tDLC0g`g8x1^dM%k>#?x zgXP9+*yPR}qn}&b$i|cB=GQ*`Ig30m+8-#)Y1kZ3*&RC+U(V^yQ8c;|&q;>49>|CK zScv&rShjTn&Jz%437XrWdvK*i$*sVd1~35qFsEbL_Iv`0m&LM+<%aXN+tZhCB1e{& zK@V+gRO2amqTDUx(Hqi|Ia|}2jON!TBr=K6YkQ-ji+!;+*renO$!pxS#$-j7i?;;Z zfgU=cF2AGh{23e&rvXG^>TOG zn2oF#To>7UyqP2k{3 zgeODi43C|gYF0;=M#kGqshf=*FxY=%sEhYb8^zCiiJdCrRcU(RKD%2oU&`&O7gjKG zH=i~om~&R^EaZ0mSnRq)Avr;ZA?mKxiH+ZP!;muI0-aO6QRkE&+{OZtNRiynIqZlQe-!~}uQj2id$>q^3(g5JNLYdEL;vfMOfGv2Z6fX+EX`_B=F%q_WtZmQg{ zE*GO$B|$w=jmb?1ao&p>hKtb(`GVQC$-}ksa*{>NpdAN4IhnXcL{`r>;2p1j^?U}d z_;g+0qKOjbk4zQP4k(&BQm%G-pw-##hCP9{ja=t~F$16hu=Jqvzx0H=XB~GzuIW&3 zyuvS<-fk@G8YM#8l2CfH&fceL;z}p882DD>$1^#n->W}cu4VUfmgllVh}h;y@*y$f z`LWv}K2-xN79yR6#?E^`FH@BK2k6e-rk&49yCFMJts*?-flro0r=Zs!B>GgH0bzX%@#ie|3UG9A;9OVJqnnMkMi&InQxLa*K6#@X z!teVdDMpdHn=qd|)ejrp1d!KrVwg-A_;qim{|c(2hD?q^D4 zXU)rR{d$`AP^dcZ*>#UUnM7dti2cPEH1-94S)6*B#v>1>C>E=kIxNKCo%R>OXzXqF z^0h?Ixibm{0d)jPN=E(dX=*~D7MMYS&KGBs*!`;7+W$N5a1i@{=JI#}it7pa`F&@( z;#$V#UtH^XcIjN@*dbhZ>=tdP(nnAY!cuNOah{ueFS1+}@+-dz@$$hRmio1nn5Pt<$JW-!BRn*HN42DIS!``1Z z(JR9H>1IhdruG~CHam+pyQ$36n#{X_A3a;4gC*@Qv*6yGm0ukqyPwAK8g^myezw5@ z2wlXMT=&LP?)NwpSJmwW`m$b}AUBE8Cx0~Zan2HUiys4(>J4-V`Y)gv7X60jw_Q2~kD5txJb zd+c64zu8zj{^}xSA!+dp?OvUOoZM?_qJ+;O-8<%57Z<>(V_^6e2y&93ahjmv8)ERc z>FgI%RFb{RFBZHzooT?|hj??}wl;#U97-4(Mmub7)Q_)c=TXAY9WJvoALbyKYQZN) zHyK2%U-TsR=iiP76e*|onMuAL)#`dv@h`Z`)g6+308Xly(f&Bm^j;DtN7d}~vNRy7 z_+n|oo%QZwu+~XSkRW#CbS0!gyfdI#wOsBldwyd>p^4JRS8fJ=|Lu8BsT}Qm{>VXn z&9%TD{{8`u9*{dOYIx@h#;khOQsf^k>q24|_v+ynt4#Ae@T=qJLCg7f;L?BSZG0KY zvDWA7Wd~vlCP5%?+J%je0Jck?oYZDj9b8VER%~@s`tPbcq}ws=2iU$1fn4mIn-dq} z41si)-2&+^f*r(j$opsKL5!s{u*o39Mt4)=QZq@c&V2Q6k4_UR;OuAr^R%XM0m#Gr zl)7c>7n1vU6*wjNo03$#{y#jZWkK9JQga|yxk;H`hlgut2edQ&#Au)IOptxfOZ0@w zidH{%sw>m&_+&;R=rX%cWrbEMXXNwt$cfJ6yy0)WoaXaQ|MOQ(^^U{!U@a;57wOL}@yhwg&;KY96 z_nfnhBBnb-_5W#m!uISo2?VwTdaORz;GduUzJ8&$d2@r&+Rf+kM2x%{+Y{xU!|UQi zkZ*Q07nxP%I_mz*rAMWcrt5&*>hWcTuCW?5Ubkwg zu?6D|YLr}ojTrs-zm1bxjgZXoM~T4_15KwZpUNs4iW6>l{`qw~ zXP5=n`S}xFaO`P%syU^?1lKoHs5aG%=Ia?AG*5O`u2-^AI zGIj>J5ZZo*UMqV<%B_mEV6s3vo5a@`57#Txx9Y+zAJtv)DIAT1CG%-rKZ(Ie%(H7A zQFMsF=uN-KvulnZ*JDSNE8gk5EETt|Z5h9wlg+_(fsL}0irs1|26h`aq1RCKE;$&0 zaEHu+ZO;x8-?@y&Q=ZyzvKQg)RiSW+`Y>i_kA=0FDY06%o-?#Dz9lHCOzRmckJBv~s&aKi&R#YcTEU3e*EmAmoz)}GBDa$_HI z5ovpT(CeHralq_nw>sy-8ZZ9OE_y0ANWgwJEx~zJB>*hz<)g>B|(qUz| zNYRi4y*`=iw>OB=TF1cs+(w7cm74wygNUQm?zc0UhQSEf@oJx$!1$x`s^X1`Ybayh z+`?joVX*!=+VKBG4&vz695J=G+K9HIeY9)I8x>dVGOZJvWOw{$48C_u9Fmad(d9h* z;ab9>tv72H!?XM_Z45S9zuYD=UEWAKo8p%HcRRzhPC4&X**Rk zh$#=$IJ8`7oNj;Y-O;e&UWZ<^z5RfhO5XS!n>n!|vPJgI;TZ}sO7=MtpmeStsxB7#VtAuWW8bUwrTHH+9|m&{*~=V!gA>K7W7^#c6>E7 z>zp;)pYrs5<>)QU-q4dbH8l`FHze+aU0@aaUHzGUw$tiV&uR74Y?-ql>M-&%YvXg`txfsUYhTt)Y|6kgH?4d5LyC z`y+s2YyKtTI&0*b`#3=B0Eb5fz(2*7sex}+B(BMWwx`xuyRN2ks6d2UUOjV4&c4d=vurlkc@A74t1uf{=?g(+-H=$!vX6FsDOgvCFrPW*%nEda|Z*%)C9$ zbJsI+YL8Qd(<-&1<+>$1Z(}Fb`ly-g;2^lp9*DTw4^jvO0&lS~Ec5-Mk&BR^mC~f3 zE2BwCZTR;5H&4I0`O6wC7$D0gc=5!)dMSsj_UB)?SW}BWN8oYAt25|n%YkA3adv4^ z@s)VC)dc)-wDa9Iy6SlP)~9H`(+N9Wn9q`v=W?O6*XE6o!`Rbwwp{)~^Du()EnPGf zQ7B%2CXXpKTV7p~(E%Ug35hejQG*D&mry*^q5-g{za=kqxjr zw~b~~(0*A@(*3j9RP~!W;O*dt1C|3|XMj)IMC=$mH+nb!;hL?=hM?o}-ErqE-0$Zy_$bmCx_s`lRcYCG$t}4kypu?Yq-kyovG3 z4t=-!VV7z>)W5UcWyu%pHJY=l7v>%j4I8P9OH1H4=$%-5fg;ziTZLbJRY~Z-Z(ga_s%z9FJ(u^ z<~q80GLvNAyOt%``$$b7VBFl)BvvcH>F%Zad9B93B8lsps=nKIRUmQK@dfbycxlHY z2wWX>f!=Wh;T$1ibCJ2hcweSFcN;Mt2Y^VX2ur?_y-Aal9AfLB8=*`pt)?jH+$j}e zALsGB+I6|=mJWI%SxVC0aO(VOg!6iI1#FnHuKqJFq*FxFSS9b&*8U&1KJmR{oe=DK zDITXjG77|Ly~mv4xpr`yfb5R|^PBoF%OpN9v|U)S`)p}ki5p5U2e2@2Kd#aDVw)*g zF=`5tm1u5?T|TyRAr`;6hwj0X*KO~xAh!)4H+!4b`r33m{FEr}n;!Ypn-u$_Mv%8h@ef^Uh3lbmk^H3l0#om(| zjm{T%;(^((jykjPc062Rf*@@D^;Q4|u}Nk-cz^i=nc5{??%#hH^Ohlcqgw7g`ZSiErH(6dXUUX9#7p~?hf>g-EQyRf%_wo zHk>#cv2TCOm^YV;@TEfh7ni@TH;U#RF0oIXUB2FuF+<$@eMrQE+@NgdE_bjJ8PBt=gVP*!_viTKZd)~$ zbUPpUWFeQ;>+VL$_-ap(2nlxE?zqO5)FaLskVUQb407{*0taC{)d68jXdM7XMQ{a- zkD6R9>dB1W6OzGhglVxMt~l{TJV*cEKzkIzb$U7pA6Uv-)=J4HAMfPEWrG_u{^fYP zbOk|X8D7K%Dm@1a;Wjs%Zcp+jN1&F!D(@EbZri_K31Km3lyKaioSm|RiTt?Ywk2OY zp$$6Gza_Q_RaVllJ4Q$+t?}RC^aFkgjr@bUxA*^ z$k&2@5Y6|9gVRGyZ0-Y@KzY{0~0XgmS&E-lHmlc+^j zho7E(0-*Px5~@GTH8v6vw|2cs`oq-G+0;>HN8ED8ItnE4_S>?c|Kr1mwCyw}>7Gh; z@LvRZ#ku8CZwc$3zk<{>wV<%ZQsQrl$v={jfOxS;P)pex8>f?gn>V5eaLhMQPu?=J#ydI2WB!*~(&s~$az1I)*r=zWhjeEZ zS+60ABxx`cA(INQH~yX-$NO!y1G`qLNl23FAdj=107UsM2qsF+;yk4LpN0Ncjp^a7 zcbZcMm~(3!Qu5$t!!M|tzq(hVzlgI7OrM{8@O2%!iPG#AvK0e=+fLU&A z&Qf%yLNUMJLjt#1qkQax7Dm8^QXWDK!!!p7>fFo!FSUbCe=>wZ!r92wV4i5Fu< z(o@Vx*ee;=FD7a8|MG-56t|nZZ)M+LMLzRW1=#mgE$i(tKgE9I$l&{|!DUfI(v>#w zR^e#!Pke%edvL^VK)hr9?&&f6A4Q#U7}gP}ku<`0W|^|a%}j)rm~K;cK$BER#ZwCB z&M4IItfHWy`m0J8yK?Dd%0~`bEi^W?=#gw5yuW2x5sA5 zFlE)3$JVwEo(0ecuA((R2J)5|`P979VGASSE>) zkGY7gi)>?I0?KlqG(Gk}u44F>HE3U2-1!C0wq>&Kq*8A;^t;iO4`FVicmmVfPp2Q3-qjDY<2 zfeapv?ouY~p~hYc>2$7nMx{M7PE+;{h#E>NcYw$?DZ;TlE#Zf&;xzE)QSQ^nxGdBA zE~X`7F+3Sr^tb?4LdT8UctT*fA>-3Dza-7fg(%NHEyHd$@zP^kRk0r8&(d>0uoWKw zxMN$22YIQ2W3}9M;*BqzDM0Bnxf1R%0%BbE)DJ1VvtDH8#Ib})uxLOs;leGRL6yQ7 zd?DijGgw5uVY7#}KPt=@F!_RyfqCyA(qJgTO8bvuTcxTApNh`IO}E?HwSTp<>=@%@;;R3X4JXe}6QLFFwiVnmYlv>^nvtxv zvNP;r#VEYIBz-8?+AY=Q=it;hMB^M4{c|<+k?m3%^xII6{zx2`-oym$Ug#ract1$U zo&e2A0jd{R?5P-_@e9u&XY9CpfTKGa_+5E#3j4^PJ-DGfrfbc5+UtvVbEdZxtK1W2 z+Tzx)#+-3+PEmMSef#!hUQd*nVnFTP8>~bvzG>1*mth$-Iva+4ue9vEnH=OB(Y1LQ zkpX@nD0)4idk}z9Y7=GoY>&t=-y!HyWuTXS5>u#=Gw;on>F80kJ5r3WR#dn5H^tcnZ+>%<2XdW- zO^0x9O`ggq#n`}6b2jPs3Uuj_dR3SeP{6ZiFo1(IfMc~X(3wJ}2kG$`Q8-|nI;?y+ zG@ljd6G;Mc4)0P@pNo_>vC3>8H1Y+yE$=b7VTOm#ytIp!n3e1@2U2BT8VHIhK~rC_ zhgpfQCOdJNRlK%i)qWQ6LR=_w@W~p+vCo9BC(KH)-XO9iYWQ<$?9WLPksv~tAE$K| zE3`RIXPznF+%Vv>(m=DI!YHELdiUX|(40^F*-r(oXHOxNNh_iD%0|7QF|Z0OQa&_w zz>vUCqx_BOs8Rb^E&-@UMqMUnzNK(bLV8n`{fn~QkAvWJ2+MbyANOlK;@|tnAGbb< zC6CJbQ@}ig=lu_huzN+9J+#1A*Mt&>KAkcBMeb`) z{7TkrfT#RbD2e6rOXM+Km)VEmpb|E5V_WFkZNNehR1 zU4C)dy9X1rzNWk?#cBC`9wioPD)juSTo#fa4L<@tdJj(WT{zQ7nY6@4*Ehtg7jN-Q zx^SEG-VtebFqjVi5n>4 zTu1F06Ahoe{-IlUppr?MJCmm`7rGa76J3jpSvGEUp)icB4V!dUtf2E9@mPQCY?W!F zr0?k_7(UV4|0Qh-S#I>b9KjW_60=fdQ{e1{9OO*PkXN0hF+a$+_Da5BtU2OSjnMy4 zMUIKyz_zRnsIIWa{&pryn|fGQm|ColCAYZvt~3a}k&SVr=b`B}Ckm{CRs33D<{wx5 zjy4WX^yQKxk@>8p=MZfjMJ}5eIkPFHBw#=&$UGUIVD_s`Skq-XoFo2|Mt!JnMef5Q zxUl*Eb4}|54Cs^*q%3BQvB9D}uFkoulC=^s*!56K&ZjYL1&P07IPAAcEfulM-L z+z`^UFy98;jw5YFQG%gLj?p7mYhNGpe&Rs_sEgq{>(zx`knbgu{N5WEeeswTZ~H~! z;l1yplSa9|PGQ9a%K;bZmfYKsN`A;Z(|m1hILoOMoz2TxZTdMzL5g~A6mb($)3&m} zb5$l|JI_j?sJWhx)#Yey_6<_6>^)KuqHd$VM)7dc_U z$)5+{1URN?!B?JW^iuxpmPQz;V zB&`@}SB6)-`J$W4D!k2#9_M1FdA}*8iPBi4%Jf!r<#gr!H5L;KmEr4LiVWaFCSr#; z$so-E@h;Z!Yi(ny@C2KLsIMr6H>=+tL|50A;EcvS?klVf+xtk`)NE*H$~JF54wo_% z&$=Z&piET_h1L+p@x)b6FDSaWv&>zx^3`=&Z^M9O$h7514;f3$%bClW`!UtclL3Fq zk5gp2kmWqxDzZDx{NYQe8k=N(1O=R7qR&Juy81#CmQ2`dn885utxbxZQv5)mqm`E} z`~Xg!y<~Z$m|g^?g24Y=eh`l(iR0<6AfdqcP3I+r`fe8V;#xTCxMHg{cM!5uc{0_j zA9X`zQavKd>wRi`yk6v#z2R3K&!z_2yHrALcFzJ+(~qflS=w_mJYK@-ILwKL(IS!5 z;L4q)@@(O6lnf4D-pGeT-K`fW`}4=x#NW-e04bUBdgo@xztfp7V!M&K8RO$KkgBK?^XI?Hvb9TjBqXz&@~U6a&cGbpOB>Je#gZa8 zR0KalY6+_%YEr9e?OZNqlaT;fd8TBS%d&TSKRe4vO^AR zueBjdWwV(*ws`r!w{~$%ac$K8R-udnY=z|&oyQ8kbcY)Gh0`raW>2@|qU)Hs_K|m! zQ8FJ#49^0BN#&#+^z#e{U&6P?aGpe6t~N(_FXniEnZsz3bTMEc-!Y{RYGhA2^T=>l z4SwmdX(!lAyB(GWK&D_cjmaR&NyB0piAkGel6vcm0BJ!l8cbHPusXeK`(p%d^%4m> zi<+*{60h)&ro4`pS#?$LHTbs_^iN^$ng>U{QmFIdQwcc^`8x5p2T%aRuCV0>_A`1c zVvd(&Zk*zDi-v=Di?AUnL9gYMx?h5TMrt=$2WIQ1U8&PQN;>fK#p769Vm?Qr2*qmV zePRDn&JsqUTmmSK_|G?H6+0MbqQ||jMCCk~;aaEEao1cBMykkEJR8Ib`fP{VSN%Bh zE=C%v0dPi6(Khs9`D~P)<<{8m4;}(0gV2U*xo?HS?NVlR^(3-3wpfw0lAe{;*xFc* zM12Z~fk>~!0q65n4G{xwhm?UV+t_5$fNvU@VKonS*-YC6+W}7FBW|s3S9UaWj!rx@ zrcF)_qp%bsj&ucvKA91XNq-(1?8TgwtIQpBL+50RA3k2=iMm$+Re#D&eq+TYanIuk3-2JN3H?Y%I;AHYuX^ zxLIUSBZZpnKHwt{!yI!rKKXM^O#PMV)8`c13F;EsPk<$!_WlmI={N9*gkh(LG4(;Z zM%*psF#;-Yb~3q)H@RYZTTTs9!Y?ef^8Dz8XzD-C39G`NA|9iMpc;tV!QM2c==w9~ z1|bkhZb*MfL8)$4oHw${bH|cmQQzjbu-~`^b-7Ny4op#q_bQ_Oa2% z$%UVzTF+lz2|A)8^&gp*YBL>#!bvek=NvAU^l9Q&_id`hY4?U#kP+OkWh%BX%z`GI z;T#H5eq5`((s~RZ$t|E~6Lhyi5!p_Txr(~1PM?foMQiEo5dRY;fh1}Y8a)B+d$%th zzcQugH$?FpGP;+hBqqg@vXb9X>B>Oh3Le6_MjH>-hiBT4saSM8nLdoHG3F15{O=R5 ztp9;tvKxb)%V0e^2Uq5~S|HaUrJ8ibSXfKTui9EOl%?lcq336{IhPN;ir1j2@mJA2 za~PubIPO!ywU!^lFHjNbU!JmJ>E1IA^H+u&CdU&Jrj2J>gOYcUnB<3HJ$>Q^G28m z8q-mjC~Kh(M|>)%JT=Wpr!32;qNwx8%(EEbErC2b+?{#vT@5i$Vq)Je)HjYhyNr;B9F=xZWM!pq8RliQd3-1c8AbSY1r(yCS% z<*o2cSC5asBDH%_w=8uJIk2DYc*!{&?OGLWQ=szoJ7PSk*O+NybyGUdAJVsdgNW&^ z_?o3os7NcYz#KbL(W4C)h5*Lcf2>i)nTZs7R|7{1Nb@rS2om%oBc22)cmhkv?DKhE zs>)`)h!CAIHWha+!4G4~sk{)j@%^oHH(o49K1Z?yV z6Y7fX&o6AEL@3FeAH%>d_5d*$i4|Nk?D9a^Qd$a8hz;x%3Fs>(<&)Q%7!@1}7uUA}8fxlD9>`>XunBAno?Jne0@!Jg#LVBy!{%{;u4 zxmHol+`PTMs`%Q14?41rQNTEBZSohjK+MHXYBcy`(Xyc&yAfk>34^>$e**3~byV|wIM(ymIB4SD7X`N3 zA?-NqnvS8WyeXcRi|Gzf4_+Y$uQ<|A!!k}45ZfOd%gHZax|;Oqyv2V>%&1)piJUko zZj`-OA&eS8`Jsc{wUrE$#m%^3pABFNWfLWovn35KCBQ3u4~+|Oj?g@Ffp5nR8eM;c zqO!-6JJWz%PJ8Zy2+;o&jTw;9dNcddi6FVwx!KO zE_`^Mx{rCht?V<;oP9*f@S*KX)3U7pkJ(%G=}>=m;luOUq}qG{vN*FTvuSd}I=^I- z@So6>B)smPhfFh0jc8@~;`d7pfgmP1Fe#)JxMGK9cQc)mNC62A&>n!sU^cj=Gg7N; zQdB)@?lx`CH6!%}(J&z(l2ZTq1_z3k$`elE`G=JsMI!eV;K`{oI($QY)Z#&L#9^=% zS`9K4r@raa41Vf++OSl-wj{!#C`WEyO=fPz5JiZuBr0umDiSVL|JKU0LSR^5)J=CW z6O(GjE&0*=t%}2y$6xN2v^rr^JWCADew9Tx&;G|&WsN#RDfxnW1+}6UDNFpjOXZEC z`JYcJUzf!mPS>6@uSa^a_Z4wI1TeT$_HA~%9xanuZ&$9G=0BMxQWu3pb{P+FY;Bf1 z9_8@plZXp2kz=2c!oSfXEgR0~a1dA(HQU{x^p%LY$MIZDu6)T1*Wdu^y{lOvuwc%r(r# zkI`QkB3r?~nCcTq8B1$lk*cH}+7P7ETR5h53gwP@e=t-4FWlfy!9T{kswObJBB%#2 zcwv-5YCjOVGO#uvpyKX=a25l(wLr}q)oUqKszj_-Sq2mnxekQyXHPOp+8ek3QB1MT z|{t=U1D?|^_i1A82w0e<~k8f=NP-$uE~ z;|vYBXJ&Mtrgo?4_*~dpNQ*wIB}_vQrdgBm1(5MsRmFg8pFy7pLA47aX88SCb4)m!B}L;PwI7op)>-DyFleQTa@TfmYNHH6=H=kE zIqBg>31nR@Ow08>Q9Q$INwaTF;vc4s4mwng;~1&rOSdgcUOg>?7ZCxe6`xIu*Z7{C zXRiH9pSDR9i2)qh9u?eshzBl4+4yYF&?kqjB-vvT&0oJu{r>A*=C=7}9vqC6S_vFg zgaa(2LC0F;MewX6?A4+v*1x99Gdf?Hna(|@i+oJnezBivtd^)duO-k<|Lh}yG0QS? zP2p40a5K|bCg)y+aV~n@C4=$lqsrHHJ`bE4CNaS(9!`p)GOXP$pOtiY?rv7pzPhtC+0r7i>7;(5wq5FZ-{_JaU|5Y*M(g|CE~aOz8e(|ZkDC~~VW#PAXHPI>09gH| z?koAEl`c1%v-qyNx#%hmCG||0W)s>QK$~du_zNg7G^W`#SA@}l0>u>O`OY$znX!}@ zl{_OQCOnLnbm4d{tfds{I8t6XN zZR>A7!xN?y(SmiNo0UUK>1mJ2UneJiQJD zf|^PcH6{qD~k>pQ4;=)Bz4g!OIllEnR|3r6r3v(@MK zqpQpP5Ejd^8Qx_p&v}seZR!XEAWXF5zSd^fctqdJn-bgS{Y8Q++CXC!ylh7Q^~?t{ z2jc_RPyIY<4Kf$voixN_h*kyvo`mke=vN|LAA+3Ox(irrBP`` z1XJ!Ng@`Lt?iK}x`h6eA62+Hwis2CAO*w@jPZUuR`YUiZ`NUG6xI#3XPoW`?{%>Ei z8k%tC4S0g>U;=2uAi2Y%^vjZi_cmLWywM*|Z}Ywt{jVU*2c zpXUp`*q;|pE#*3U3`=0&(YO@S3-!)&FIOZnn{O*zV6H#H>@GR8yZfeXkhuxVZR*u4 z)Q6^P+Jg6URwr~-YB!;z|M?>qvh3(8$78t#3(1yI;w~Z;E|xaw^me&DF{^oMzgUNl z2DpC>3mZ7ON=fCMZ&eAl=6j#70tM<+G^fbFkP-sAkh_r_I(thZ_+DE;+1Lo|w`R*J zDpu`RT&*0aMCuA>WRbkbG(b}^tS2zKj866u71d7;YaWogfW$lN=3vEH= zJ-Uw1)~)HXX6m&Jxw7P1G-NbDnSWkQ=K z5qR{=8nIlw4}75!e~gGBTj~%o&4dTkkO3r@k*KiL7^Iqj4!fJGyI^limZ{NLL^?j$ z)NI_7`J}l;LEOJi=m{{}C6j_n?&@O<$6u-1DwINnXRsY+yYGQ6J-^1pb4rG}Oj3)y zvAz!n)-QqTI?+7kEv*&ab(;uN!@kL%JJ!EEhk?1rM4NDApWX*xBPj#1Id2KR(V~aV z6XK}SmE0eR^tcf^2b*)%7!)JS=5luxZd6bvXe zZun=nw6B+0oj!-A!f3K=;P}fLu^J|JRB|EKV`;O`Jte>3J8rU%TNCv7OZ*5m;fWX_ zjewDK{mEl|us#A!JPweTh|0zE!=>`#->{AS69G98;s|3w+-ig$IP!LFA zOQv1y!2s+?-g`Y0A;q7Hfep0V_Z2rT>mur{HUg|fhaT7@G->G+6xZXiV@y@UG`X9+ zBT*CkCm+Ggq8Ou+``J4bQI=|S79z^I^lsLNT%$hn<9H+yIfGF61mI@Vk0!tVF|CVT ziRP#JQ@X@&JU|}LZ-)|YDvuF0%S6qH3u>&Q^eKPnP?V7U&~2u6uz0=v9#5#BrWP90 z2Cly@WIo(`U~}_u$m0y_N&9{Z_^yR|bCT(fr_6@5@X3uUhp@K$1;Q#y#`C z5g;L+wTH!-A-{Uv*AA!~>rHvL+B7G^YE&u4(rs^LI%9j;!+Ytai%P|-}Z(JO)Vc!CM=5iMTc!J4Yre--~Cbi+&|?`9$_%&uqZd$w{``i^oueb2Wit{q~?K!!)q%2yDrC? z8QLj)Dsnrrw{&mc4HaxG}oNx0g17c=ul--tet{LB)*{ik*vQdRicdW}N0u0qRvkW$~7?7H= zY*3C3-FE9J!e*cFin7gj>>|!P){}qxL^OK$BNcKUE)cN}$w_|9=^`3A3X3dy4Qw*; z6(QQSeh}I0?VGv|U~`gsPyiD(Z|%y%{hl-)?jg|%1iDVNX!#!K=3VOn_38WXRI`fP zGBv{i`&#=oA$(k3CjQS~CQI z%~g56cw&p51k}mzRfK`$f{S#_u+5)FLU+E2Kp(7ffi|};xFelv_ltW7JleX~F+fwo zKoN`kXA^aaT2=+4RvM5{&x&7ersER}@Dws1&keuy;cn&<{9gUfhgH6c!JEGhF~)u0 zs*XEI-`G(tgf09VCpw5vB8XBSB-6Av))E?C*}d$>7t%dXK7r7Lwtb*n4p7WkdX1I# zQ4>xb@*HqHs}+Gv&5-&>@T?lsSg7Lz!N)^ytP`55sSjQ)MBKo493J=7p+>qjzA5*L z-J+zwP=h;Ex-U}xTjiH@`KomvL*zm#1SP)uMhRDAj}|H=#7%^uJ#^!k+Q|r)6;qh( zhMxasKOk43e-uX16*CsKktjl}nodKI5^f7Wt^KfW;&4e%zVw83F7!FwH&UXSyHtUW z1`QfA9mUW!*25ZS$1_;B!w50_)G{SM85Q@`aF6q)=`W$62P(`$%}T$>Ntibui3*-E zv^H;zrk1)04yQ&o|Bc6TtT{+4Ukp`~jzE{9WDx?POHO&=lKGPy@PRm230^lg_1e8O zA~2L&mN_5A1t-09V(Fdh*23qIG|+(KXd&S@E+#OWbr)ke*(NtOQe6E~`I*et)meKn z@!~tVt%op`ZKVam02?oJVy2byb9sNO!$>xtd*_zZnRZPwF^Bf}wqz^3KDoas3a%~Z zNp=&pw3Ff6knn>r-_5ob67z!zpeEV`dwD@URYmD3Kk`+^hd7q)1h#n5RiSUaZ0jFN zx$NZsp>*c^5PlxL+}7qd^Txgo6PJp_E9wEj-!lA%&0`|cLrUrbEauN6S2_w{QgIF{ zI10La(1j{|`v9niKfm+q#&GsE5xu_wMyL$zsN*MvJ?*BAGCX-aG$z6*DJW(vOSxS9 zeCQv4_wZP-YDiQzkMkFxo~$vh*HAi%!v!+E5$38XpnHl`X6xPxOMqOoH}yy!6g3tU z5$sWDsgS^=rI8=Y1+++T#Q~(~FbP1SAWGC1v7K8$yF?HkfA3o)quY%rF z#_+^#zQu*K!LP;_LvBxQ5A$7vdcWr1-K{3M&sw6NF078jhNXTVCcGguci&AteC>7< z_o#a6$#1YlC9xMO>G|Kll5JtVs7IS@LqULVV~KIEhnl_@UWW3EBt=%LJy^1xYMIYn z<4N4Nd{yvBtFq29;*l1gAE~b%=r7$V6c@%ZYuR6WKe-#1!Y90F5_6>p9M&JDk`c)L zJNEimtdJPfOYS^epbjSDaeoi8J+wy)64 z4TNsCRtZg4ZgjJ36!JGEq`l)qQ2g;Kie+nf?DK9+Ch}^4nl+H(X}tG0;1S2#d2)=z zZ08bdRWNm=nH^#LWW-egmEz2cKOIs8w*Hqk534zvI>Q&NGG#5%!awRu#h0Kgx2^VljB|#-X z#03Q8@B9C7o@YLsncq3{oM&dvhu@4{#lgH_cZy*{pu2Z8`22AfhaY0ExY)hS(Dt<| zPHoKGs|P2BB2t_#zP*;BcES{P*c9fdzju?f@?L1K!M~*%_P!p)Q@x>o?mlf=nwvk| zaZO^TA%9aG6n#Cpq9pZeSWJ!!-(c!-ISk;={_a?4Xz3ZGTnV z2?dvbHLSb5^6qum=t$|SSsT;UP2UT*Cq>_Kwu|xVkDLGR$&Z|yfQxk{&%%>*0QRMs z>Vmqt@X-UuO}|EL3)rzQFfnO6z9i<8nUQbR_5RD=&V{r?wq7K1_RPR>MSQc1(M`=FLB$o5;cL# zu{FWMEZa^cWzngMNuZr#k)~&dQsMDIwXSRxx|XR6DuZ$n%}Ojx#HZ>RA+#gH%Sp@tgVAW!zd@|!mg`en6Hh%>Ko^fr)^pC6# zg2U^;9WU9;Y8Pf&W_j2;%Zox>7=JAPDEmy))Qdl$ELi;}of-KTd*K2`J@YCQ3zMHX zm0TXLfXCnKtekdWX9x;zof`k!TH1it=)bhi6hZB{B4?RdG%`z3zcv^AZ;`R}u8`i8 zMDLq6vi3%zOCv*btp(?=r-t9sO@<;-yltoH!&J!4g=Gd#>Fr*2?zQKzxCJL3w^wLg zVB)3=fP5PQTdCat=u!=qqNsyUahTiXb%It5M=nhkNjRb?`L$-_RXzp+R?heBp{~u- z^i=Z%JVrJx!K0OvJp3A|Q^h0LDHSpxMmFhc7r!>ka%E!-@uqn6xO0%Yci0tv4yn5>z249Ya2;l9+O2 zzvq}N*NznR@W$o9;T}tt12^htec;%#h!+`~tzS>_DXuLC?CW_(jKati0l_ph9^khc z@vgqDhf3noySaWkfEo0`(_z60=se>e@WTc22zC2xEQQ-XdG@NHt25voeIJw4G|}W% z)vescV*Mc1UwJR2W>>f7*!M$MnpW2zh@!QtoE2I{RnB7V(BQlez0K?F-m5M%e^GP0 z>QZaI1wX_Uk4LexrAW1ij{MN@i(b?O{NhSs{Kcu`Yk7Y_!8cgnv--?R(CQcm zx7k;1>j@*=!m&94Z~j4|872G!n6G0geses!xg&?#B6uY@jy@IAVpGROe^MupeRF*` z?`<2^$Gq|et!_8;yeC%hV7Ex}a9xAeyHQnNvpIIt@;ZE43yuh=W1}zl97*d5J8f9o z*BS2UV7DFZ1D(e4AZ_e7n$V*jJ1OcVO`t}Er7_zJRA4x|!&{4#BJMQcl1|lCtQew$ zbSU@+^Y}^jO+_;;F}4I?y+33f$>mStwvze(v@RWO`MhbNJSNI%XU^Z0M0`%Nhn9QHaXqeRgLYyMJ{}s2?*TtAP zEM7ORMvSxanw9!fOQl!TTa)lS=HcTt$fS?Lbu$g?H}157?8 zh(Rrz$4{6aYGr=#yiA`tJ+Uf^QMY?|f%YyzbC{AIa zglC+Op6gzoDGw)Ief#xLUt*8PP8}YQZ)%a@!??oXuO>TvaV}`%<7m{cxBbUs-+B6`ZOK^LFDO%nif8NV0<%S6YbY*X8p)F|^9D zaFX`Oa^eVN?+7oIME3~6TMmKu)qo0XK_6;B?qt*!pGNl~VKm9IMqoe`BoqmDJpkio zVzNMhp@QPL{Z&(Fo;TWc&2x#Wtm{NPn6HkQ1cOWixK`k zpE7}X+bJ-bLHsnnt>`P zVJ|JSjq@~K5iB!N#y0uQhmktSVbtS&+IV4;dlfyM@A;fC!SDCMg`_JcAL{qnr^3}Q z*Eb!Fzb3aVqG*NX1buqNTYUu6pS9HP*Zs<1?SZI69=>Squw|}Gy2!h^2WJJ`nwPn} z<~y8=lN1j*=O)+7E-n?J$Gf|ElJ>oNtEB0_@G{g}s=>%g#208G%t>J}+-zhX)GSBW zY!x+a3tBuax?Mw8G`1zxpnp)$*|6%U-;#p4{1n+mi0x`pRpS;|HDD9t&$|);a0hR- z1+#hS;18kG9qNHB%f?Gw>ux6Yxq^F)fF(r1!ji=^iqMt57e;Z=)0>Kq4$0whcj0- z`c~|KzyuO7Ki5?;0=SIToN)N$P_vW-D2DCIUaGxbJspQQ5$_$j`!n&xy(q3Mznhz| zu=G*5??~4(pv+M6R`)g}IuYTWElYazO&s|FuyhNEMh$Q>JV$jc6lZG3#)lW(0+Km} zzQ9D{SpXVgVwm!3BsdAu=Qq9}uQIGQIRZUS7c566dupA)vwzK}5quHXA64j&<~>W; ztP?J6gu&4OpP5VBlj)7(QYxl1tU+Xv`&!_IuP1uOUNPN=IA7d>PO+)ms+8i%^Hyy_b^ z&QmSi_`yA8CjHK7TGVDNG@MvGmQeo@3Tg@8X@BO^<%`GT z20k+(eoEE&XAYd{czei`%-jhMuVKc|U8fcX>r}zomp#qv29v(OqrZow#}90Rgbn}$ z`x|01smvnUK23Jje7%~yJlLE}qc^jmKXaC{&+uSWrX@)cOLU_Q;=c2XFzM#<2*~7S z23*g=x8?BZNAQT49hA%*)OJ|HF{k{MY`5_cho=)OkmW3CBion4s`xf-F$pY$v`3;$ zZle)Tsw;Mun@(r+{S@Z+yWEy`e!~86gR18t!H~}WB8#%7pyX#OH`Dn7#{rynL@=~B(GOY3 z2pcD#QBe0cbG;j?TfYUHp4yFnbS2KT&xUvvpV96PoMTtCBOpJneq!4&fK$zUn}vn6 z-+;ZMuU~ghT!|__kd`QE2rq#@B;6jiI-FWX>>W>cL3aB>D?~|5<+a72F~lzk%WiFf zuLo9%pcolvcvEc!NNXBRV~8WX18XYq)}g=#bQu;a5Leov&*V*n<(Ic z5dxgiDK3DQcP?>!y^%;Jl+z8B^uCdWtVlcA3bt zED&6${uJthj97!5?hDhS`D3wSY32%c`U!I##}>>i$e^qR(lLt#DKtHf3|ngA0diQf z#CY?=l}30~(4Jkx_Rl=@^hP)wV^rub=rNL*OT3LKe;1glsK^TqRgj@$dzK=C|1t`2IO6X`t> zr3mq6Mk#N39^m^R<9}nZG4eqE1tOoeAibrhC+GOsg1Jf`#L2fbddFC#he9mYC6Ga|e@oWDLsC=^zZco4 zK%2TRc4~?J-D=m%2e4FN*95sR=-(_~ZPb04yV_t9xiv<7K!dE^eeg6-{RDLDR-V&r z!AAOM<|&r0zsKr(vqnZ)?ujTRhQja}KXj5PRVd>feQ9p-xTDCTMfg#hpTh&D{PTmO zF*Z=&GqGNxrS`ihU9x}AtH|4)O1%TK=iL-0SD>z%8OQk!VPR{wQC&N=hhsP=BvUWp zSMFt~V>b$0uL1A=xAV6%}Q;_#FW*T0+{3swZw8bub(u zZ%7-kAP2LW3?6XyY9^X&qPwRap#PH_MFQzt<;a>%x4Ovgyen`Nf2+2P^b+l?yE!Y^ zSH?5cIVxm7KB|Nzr=*Wt-yITB8`#5+#;~dy0=mYFEZFF;dp-+za*OWo^kCbRy5`x@6nYh_anN9w-k5-ZPnc&P>l05|HYds0d1IJ_B`PbS6)&_C3n^3v%2- z>)Ci^2!FtcW8iO>>?^s|4z4_+wM_{hwO7IaTHyTIS;lB$%$o0L*1z3)UsjT8%)4|h zyKl(}QRP@Mf0q8rm`LPzO~oW|;@b1Ohb*}}hQ;xqSikRk{}P(>Uys`so~`Gef*_{e zRYr=aPs;?D=3{rGgnl!y+`-b3Blngq@|^9dg;@aUTiQgNS3R4F{7)o2AKszkq%h%fglU|Xzmf>)V%Pf9)xZh0J zrF`Xx#g!qa%Ht0Cu^P(*j&Jp=dw#$i_MfS4eROr3tA>McF$dGe_{kr8I{nV3JFDg3 zA$$}8?Sii`mca7~(cxvVL~L~USPrQ`)Y~G>G|_bWnLUSn?~hX?BYw zT5NG-#9`9n#B??~TyLIhFn{*}xeGzaA^?J^elIQNtZbSp7iESt?aqcBqSOaHv7!)Q zW!a0qV7D`RJ8k_M1#vb5w(g;^o2awy^rKF1%q;EVkd7~d8Vg?<0e8%029qM4{`o#? z&EaU=Q&>avPyTL+Dst!3ub4s6TC%(cdCr=_m!Iy3U_=5NDAIj*T2`gT;oGL}uY6-v zN|8;wt=>4v-A^%B<3YdLXz0VT)4!Mm@1C+rtQt!zd7N^K^MlU|>VU)U3(BcPlR>yX zr4Hb?q6c2d+c2vt@33N~tm<&=%>e(faXu0J@ z$mu(|qTcV6ji3z(`-0D_AeGij^?Nq=X#@GuO2N}kGJ2T%qwLdge9K~A!wv6Lmii~| zKjjg8#~&8ZU@yF(W|W73Ml3a{Kn!&^9hkTu_WsUFMCipXWkst0O_peuJ94qr=qGvE a;;3qwuG+a_gG#k&!%Od_;o?KvH~b%}O)h}| literal 0 HcmV?d00001