From 128d164f2b42dd813dde00c16e902a6770958e4e Mon Sep 17 00:00:00 2001 From: Hero Bird Date: Tue, 5 Mar 2019 09:00:37 +0100 Subject: [PATCH] Make use of parity-codec "derive" crate feature (#1919) * Make use of parity-codec "derive" crate feature * Bump impl_version * Update wasm files and Cargo.lock files * Transferred to parity_codec derive feature for the rest of the crates * Update wasm binaries and lock files * Update core and node wasm binaries --- substrate/Cargo.lock | 28 +----------------- substrate/core/client/Cargo.toml | 4 +-- substrate/core/client/db/Cargo.toml | 3 +- .../core/client/db/src/cache/list_entry.rs | 2 +- substrate/core/client/db/src/cache/mod.rs | 1 - .../core/client/src/block_builder/api.rs | 2 +- substrate/core/consensus/rhd/Cargo.toml | 3 +- substrate/core/consensus/rhd/src/lib.rs | 1 - substrate/core/executor/wasm/Cargo.lock | 2 +- substrate/core/finality-grandpa/Cargo.toml | 3 +- .../finality-grandpa/primitives/Cargo.toml | 4 +-- .../finality-grandpa/primitives/src/lib.rs | 2 +- .../core/finality-grandpa/src/authorities.rs | 2 +- .../finality-grandpa/src/consensus_changes.rs | 2 +- .../finality-grandpa/src/finality_proof.rs | 1 - .../finality-grandpa/src/justification.rs | 3 +- substrate/core/finality-grandpa/src/lib.rs | 1 - substrate/core/inherents/Cargo.toml | 3 +- substrate/core/inherents/src/lib.rs | 2 +- substrate/core/network/Cargo.toml | 3 +- substrate/core/network/src/message.rs | 2 -- substrate/core/primitives/Cargo.toml | 3 +- substrate/core/primitives/src/authority_id.rs | 2 +- substrate/core/primitives/src/changes_trie.rs | 2 +- substrate/core/primitives/src/ed25519.rs | 2 +- substrate/core/primitives/src/lib.rs | 2 +- substrate/core/primitives/src/sandbox.rs | 4 +-- substrate/core/primitives/src/sr25519.rs | 2 +- substrate/core/sr-primitives/Cargo.toml | 3 +- .../core/sr-primitives/src/generic/block.rs | 3 +- .../core/sr-primitives/src/generic/digest.rs | 1 - .../src/generic/unchecked_extrinsic.rs | 1 - .../unchecked_mortal_compact_extrinsic.rs | 2 +- .../src/generic/unchecked_mortal_extrinsic.rs | 2 +- substrate/core/sr-primitives/src/lib.rs | 17 +++++------ substrate/core/sr-primitives/src/testing.rs | 3 +- .../sr-primitives/src/transaction_validity.rs | 2 +- substrate/core/sr-version/Cargo.toml | 3 +- substrate/core/sr-version/src/lib.rs | 7 +++-- substrate/core/state-db/Cargo.toml | 3 +- substrate/core/state-db/src/noncanonical.rs | 3 +- substrate/core/state-db/src/pruning.rs | 1 - substrate/core/test-runtime/Cargo.toml | 3 +- substrate/core/test-runtime/src/lib.rs | 1 - substrate/core/test-runtime/wasm/Cargo.lock | 9 +----- .../substrate_test_runtime.compact.wasm | Bin 56839 -> 55908 bytes substrate/core/util/fork-tree/Cargo.toml | 3 +- substrate/core/util/fork-tree/src/lib.rs | 2 +- substrate/node-template/runtime/Cargo.toml | 4 +-- substrate/node-template/runtime/src/lib.rs | 2 +- .../node-template/runtime/wasm/Cargo.lock | 15 +--------- substrate/node/runtime/Cargo.toml | 3 +- substrate/node/runtime/src/lib.rs | 2 +- substrate/node/runtime/wasm/Cargo.lock | 20 +------------ .../release/node_runtime.compact.wasm | Bin 864636 -> 864932 bytes substrate/srml/aura/Cargo.toml | 3 +- substrate/srml/aura/src/lib.rs | 4 +-- substrate/srml/balances/Cargo.toml | 4 +-- substrate/srml/balances/src/lib.rs | 3 +- substrate/srml/consensus/Cargo.toml | 3 +- substrate/srml/consensus/src/lib.rs | 3 +- substrate/srml/contract/Cargo.toml | 4 +-- substrate/srml/contract/src/lib.rs | 3 +- substrate/srml/contract/src/wasm/mod.rs | 2 +- substrate/srml/democracy/Cargo.toml | 3 +- substrate/srml/democracy/src/lib.rs | 2 +- .../srml/democracy/src/vote_threshold.rs | 2 +- substrate/srml/grandpa/Cargo.toml | 3 +- substrate/srml/grandpa/src/lib.rs | 2 +- substrate/srml/grandpa/src/mock.rs | 3 +- substrate/srml/metadata/Cargo.toml | 4 +-- substrate/srml/metadata/src/lib.rs | 3 -- substrate/srml/staking/Cargo.toml | 4 +-- substrate/srml/staking/src/lib.rs | 3 +- substrate/srml/support/Cargo.toml | 3 +- .../support/procedural/src/storage/impls.rs | 2 +- substrate/srml/support/src/event.rs | 13 ++++---- substrate/srml/support/src/lib.rs | 2 -- substrate/srml/support/src/metadata.rs | 2 -- substrate/srml/system/Cargo.toml | 4 +-- substrate/srml/system/src/lib.rs | 5 +--- substrate/srml/timestamp/Cargo.toml | 4 +-- substrate/srml/timestamp/src/lib.rs | 4 +-- substrate/srml/treasury/Cargo.toml | 4 +-- substrate/srml/treasury/src/lib.rs | 2 +- 85 files changed, 88 insertions(+), 221 deletions(-) diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index fa169c393b..00d2eb47ef 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -794,7 +794,6 @@ name = "fork-tree" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1927,7 +1926,6 @@ dependencies = [ "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "node-primitives 0.1.0", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1994,7 +1992,6 @@ name = "node-template-runtime" version = "0.9.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2132,6 +2129,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2991,7 +2989,6 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3026,7 +3023,6 @@ version = "0.1.0" dependencies = [ "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -3055,7 +3051,6 @@ dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -3077,7 +3072,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -3095,7 +3089,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -3114,7 +3107,6 @@ dependencies = [ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", "pwasm-utils 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3158,7 +3150,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3226,7 +3217,6 @@ name = "srml-grandpa" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -3263,7 +3253,6 @@ name = "srml-metadata" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0", @@ -3295,7 +3284,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -3335,7 +3323,6 @@ dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3385,7 +3372,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3402,7 +3388,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", "sr-primitives 0.1.0", @@ -3420,7 +3405,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -3623,7 +3607,6 @@ dependencies = [ "kvdb-memorydb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-api-macros 0.1.0", "sr-primitives 0.1.0", @@ -3652,7 +3635,6 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "substrate-client 0.1.0", @@ -3748,7 +3730,6 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "rhododendron 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -3802,7 +3783,6 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -3823,7 +3803,6 @@ name = "substrate-finality-grandpa-primitives" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", "substrate-client 0.1.0", @@ -3835,7 +3814,6 @@ name = "substrate-inherents" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -3881,7 +3859,6 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3941,7 +3918,6 @@ dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4067,7 +4043,6 @@ dependencies = [ "env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", ] @@ -4131,7 +4106,6 @@ dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", diff --git a/substrate/core/client/Cargo.toml b/substrate/core/client/Cargo.toml index 99191f02aa..495b11b61d 100644 --- a/substrate/core/client/Cargo.toml +++ b/substrate/core/client/Cargo.toml @@ -20,8 +20,7 @@ trie = { package = "substrate-trie", path = "../trie", optional = true } substrate-telemetry = { path = "../telemetry", optional = true } hash-db = { version = "0.11", optional = true } kvdb = { git = "https://github.com/paritytech/parity-common", optional = true, rev="b0317f649ab2c665b7987b8475878fc4d2e1f81d" } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } primitives = { package = "substrate-primitives", path = "../primitives", default-features = false } runtime-primitives = { package = "sr-primitives", path = "../sr-primitives", default-features = false } runtime-version = { package = "sr-version", path = "../sr-version", default-features = false } @@ -37,7 +36,6 @@ kvdb-memorydb = { git = "https://github.com/paritytech/parity-common", rev="b031 default = ["std"] std = [ "parity-codec/std", - "parity-codec-derive/std", "consensus", "primitives/std", "inherents/std", diff --git a/substrate/core/client/db/Cargo.toml b/substrate/core/client/db/Cargo.toml index 19bed5daa6..8828eefa4f 100644 --- a/substrate/core/client/db/Cargo.toml +++ b/substrate/core/client/db/Cargo.toml @@ -17,8 +17,7 @@ primitives = { package = "substrate-primitives", path = "../../primitives" } runtime_primitives = { package = "sr-primitives", path = "../../sr-primitives" } client = { package = "substrate-client", path = "../../client" } state-machine = { package = "substrate-state-machine", path = "../../state-machine" } -parity-codec = "3.1" -parity-codec-derive = "3.1" +parity-codec = { version = "3.1", features = ["derive"] } executor = { package = "substrate-executor", path = "../../executor" } state_db = { package = "substrate-state-db", path = "../../state-db" } trie = { package = "substrate-trie", path = "../../trie" } diff --git a/substrate/core/client/db/src/cache/list_entry.rs b/substrate/core/client/db/src/cache/list_entry.rs index b54094fa00..d2d88ab12f 100644 --- a/substrate/core/client/db/src/cache/list_entry.rs +++ b/substrate/core/client/db/src/cache/list_entry.rs @@ -18,7 +18,7 @@ use client::error::Result as ClientResult; use runtime_primitives::traits::{Block as BlockT, NumberFor}; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; use crate::cache::{CacheItemT, ComplexBlockId}; use crate::cache::list_storage::{Storage}; diff --git a/substrate/core/client/db/src/cache/mod.rs b/substrate/core/client/db/src/cache/mod.rs index 8df8e42518..12f8c5e519 100644 --- a/substrate/core/client/db/src/cache/mod.rs +++ b/substrate/core/client/db/src/cache/mod.rs @@ -24,7 +24,6 @@ use kvdb::{KeyValueDB, DBTransaction}; use client::blockchain::Cache as BlockchainCache; use client::error::Result as ClientResult; use parity_codec::{Encode, Decode}; -use parity_codec_derive::{Encode, Decode}; use runtime_primitives::generic::BlockId; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, NumberFor, As, AuthorityIdFor}; use crate::utils::{self, COLUMN_META}; diff --git a/substrate/core/client/src/block_builder/api.rs b/substrate/core/client/src/block_builder/api.rs index f0f9a23122..9096b8f469 100644 --- a/substrate/core/client/src/block_builder/api.rs +++ b/substrate/core/client/src/block_builder/api.rs @@ -20,7 +20,7 @@ use runtime_primitives::{traits::Block as BlockT, ApplyResult, RuntimeString}; use rstd::vec::Vec; use sr_api_macros::decl_runtime_apis; pub use inherents::{InherentData, CheckInherentsResult}; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; /// The old representation of the inherent data. #[doc(hide)] diff --git a/substrate/core/consensus/rhd/Cargo.toml b/substrate/core/consensus/rhd/Cargo.toml index e18180514e..22d847e80e 100644 --- a/substrate/core/consensus/rhd/Cargo.toml +++ b/substrate/core/consensus/rhd/Cargo.toml @@ -7,8 +7,7 @@ edition = "2018" [dependencies] futures = "0.1.17" -codec = { package = "parity-codec", version = "3.0" } -parity-codec-derive = { version = "3.1" } +codec = { package = "parity-codec", version = "3.1", features = ["derive"] } primitives = { package = "substrate-primitives", path = "../../primitives" } consensus = { package = "substrate-consensus-common", path = "../common" } client = { package = "substrate-client", path = "../../client" } diff --git a/substrate/core/consensus/rhd/src/lib.rs b/substrate/core/consensus/rhd/src/lib.rs index 020703ab20..a2a06fec90 100644 --- a/substrate/core/consensus/rhd/src/lib.rs +++ b/substrate/core/consensus/rhd/src/lib.rs @@ -38,7 +38,6 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use std::time::{self, Instant, Duration}; use parity_codec::{Decode, Encode}; -use parity_codec_derive::{Decode, Encode}; use consensus::offline_tracker::OfflineTracker; use consensus::error::{ErrorKind as CommonErrorKind}; use consensus::{Authorities, BlockImport, Environment, Proposer as BaseProposer}; diff --git a/substrate/core/executor/wasm/Cargo.lock b/substrate/core/executor/wasm/Cargo.lock index 4b7b54ebc6..27c80a723e 100644 --- a/substrate/core/executor/wasm/Cargo.lock +++ b/substrate/core/executor/wasm/Cargo.lock @@ -58,6 +58,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -186,7 +187,6 @@ dependencies = [ "hash-db 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "hash256-std-hasher 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.79 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/substrate/core/finality-grandpa/Cargo.toml b/substrate/core/finality-grandpa/Cargo.toml index 64d1a1f874..9c17a5a770 100644 --- a/substrate/core/finality-grandpa/Cargo.toml +++ b/substrate/core/finality-grandpa/Cargo.toml @@ -11,8 +11,7 @@ log = "0.4" parking_lot = "0.7.1" tokio = "0.1.7" rand = "0.6" -parity-codec = "3.1" -parity-codec-derive = "3.1" +parity-codec = { version = "3.1", features = ["derive"] } runtime_primitives = { package = "sr-primitives", path = "../sr-primitives" } consensus_common = { package = "substrate-consensus-common", path = "../consensus/common" } substrate-primitives = { path = "../primitives" } diff --git a/substrate/core/finality-grandpa/primitives/Cargo.toml b/substrate/core/finality-grandpa/primitives/Cargo.toml index acb509b6b5..3891db8f01 100644 --- a/substrate/core/finality-grandpa/primitives/Cargo.toml +++ b/substrate/core/finality-grandpa/primitives/Cargo.toml @@ -7,8 +7,7 @@ edition = "2018" [dependencies] client = { package = "substrate-client", path = "../../client", default-features = false } substrate-primitives = { path = "../../primitives", default-features = false } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } sr-primitives = { path = "../../sr-primitives", default-features = false } rstd = { package = "sr-std", path = "../../sr-std", default-features = false } @@ -18,7 +17,6 @@ std = [ "substrate-primitives/std", "client/std", "parity-codec/std", - "parity-codec-derive/std", "sr-primitives/std", "rstd/std", ] diff --git a/substrate/core/finality-grandpa/primitives/src/lib.rs b/substrate/core/finality-grandpa/primitives/src/lib.rs index 9055156ca3..4878b79efb 100644 --- a/substrate/core/finality-grandpa/primitives/src/lib.rs +++ b/substrate/core/finality-grandpa/primitives/src/lib.rs @@ -22,7 +22,7 @@ #[cfg(not(feature = "std"))] extern crate alloc; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; use substrate_primitives::Ed25519AuthorityId; use sr_primitives::traits::{DigestFor, NumberFor}; use client::decl_runtime_apis; diff --git a/substrate/core/finality-grandpa/src/authorities.rs b/substrate/core/finality-grandpa/src/authorities.rs index d8849acc36..b6cc1baed3 100644 --- a/substrate/core/finality-grandpa/src/authorities.rs +++ b/substrate/core/finality-grandpa/src/authorities.rs @@ -20,7 +20,7 @@ use fork_tree::ForkTree; use parking_lot::RwLock; use substrate_primitives::Ed25519AuthorityId; use grandpa::VoterSet; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; use log::{debug, info}; use std::cmp::Ord; diff --git a/substrate/core/finality-grandpa/src/consensus_changes.rs b/substrate/core/finality-grandpa/src/consensus_changes.rs index 3e891e8b30..9d701152dd 100644 --- a/substrate/core/finality-grandpa/src/consensus_changes.rs +++ b/substrate/core/finality-grandpa/src/consensus_changes.rs @@ -15,7 +15,7 @@ // along with Substrate. If not, see . use std::sync::Arc; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; /// Consensus-related data changes tracker. #[derive(Clone, Debug, Encode, Decode)] diff --git a/substrate/core/finality-grandpa/src/finality_proof.rs b/substrate/core/finality-grandpa/src/finality_proof.rs index efce7aa1cb..14f011a10c 100644 --- a/substrate/core/finality-grandpa/src/finality_proof.rs +++ b/substrate/core/finality-grandpa/src/finality_proof.rs @@ -37,7 +37,6 @@ use client::{ light::fetcher::RemoteCallRequest, }; use parity_codec::{Encode, Decode}; -use parity_codec_derive::{Encode, Decode}; use grandpa::BlockNumberOps; use runtime_primitives::generic::BlockId; use runtime_primitives::traits::{ diff --git a/substrate/core/finality-grandpa/src/justification.rs b/substrate/core/finality-grandpa/src/justification.rs index 563840bc17..52ce9006e1 100644 --- a/substrate/core/finality-grandpa/src/justification.rs +++ b/substrate/core/finality-grandpa/src/justification.rs @@ -20,8 +20,7 @@ use client::{CallExecutor, Client}; use client::backend::Backend; use client::blockchain::HeaderBackend; use client::error::{Error as ClientError, ErrorKind as ClientErrorKind}; -use parity_codec::Decode; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; use grandpa::VoterSet; use grandpa::{Error as GrandpaError}; use runtime_primitives::generic::BlockId; diff --git a/substrate/core/finality-grandpa/src/lib.rs b/substrate/core/finality-grandpa/src/lib.rs index 64e36a46e4..806fc6cfaa 100644 --- a/substrate/core/finality-grandpa/src/lib.rs +++ b/substrate/core/finality-grandpa/src/lib.rs @@ -61,7 +61,6 @@ use client::{ }; use client::blockchain::HeaderBackend; use parity_codec::{Encode, Decode}; -use parity_codec_derive::{Encode, Decode}; use runtime_primitives::traits::{ NumberFor, Block as BlockT, Header as HeaderT, DigestFor, ProvideRuntimeApi, Hash as HashT, DigestItemFor, DigestItem, diff --git a/substrate/core/inherents/Cargo.toml b/substrate/core/inherents/Cargo.toml index 9258f28790..2ea3c69a76 100644 --- a/substrate/core/inherents/Cargo.toml +++ b/substrate/core/inherents/Cargo.toml @@ -7,8 +7,7 @@ edition = "2018" [dependencies] parking_lot = { version = "0.7", optional = true } rstd = { package = "sr-std", path = "../sr-std", default-features = false } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } runtime_primitives = { package = "sr-primitives", path = "../sr-primitives", default-features = false } [features] diff --git a/substrate/core/inherents/src/lib.rs b/substrate/core/inherents/src/lib.rs index becd99e481..4f9c8b8006 100644 --- a/substrate/core/inherents/src/lib.rs +++ b/substrate/core/inherents/src/lib.rs @@ -33,7 +33,7 @@ #![cfg_attr(not(feature = "std"), no_std)] use parity_codec as codec; -use parity_codec_derive::{Encode, Decode}; +use codec::{Encode, Decode}; use rstd::{collections::btree_map::{BTreeMap, IntoIter, Entry}, vec::Vec}; diff --git a/substrate/core/network/Cargo.toml b/substrate/core/network/Cargo.toml index 206998e799..4d78eeb602 100644 --- a/substrate/core/network/Cargo.toml +++ b/substrate/core/network/Cargo.toml @@ -25,8 +25,7 @@ primitives = { package = "substrate-primitives", path = "../../core/primitives" consensus = { package = "substrate-consensus-common", path = "../../core/consensus/common" } client = { package = "substrate-client", path = "../../core/client" } runtime_primitives = { package = "sr-primitives", path = "../../core/sr-primitives" } -parity-codec = "3.1" -parity-codec-derive = "3.1" +parity-codec = { version = "3.1", features = ["derive"] } network_libp2p = { package = "substrate-network-libp2p", path = "../../core/network-libp2p" } tokio = "0.1.11" keyring = { package = "substrate-keyring", path = "../../core/keyring", optional = true } diff --git a/substrate/core/network/src/message.rs b/substrate/core/network/src/message.rs index 416574e387..98860cae88 100644 --- a/substrate/core/network/src/message.rs +++ b/substrate/core/network/src/message.rs @@ -19,7 +19,6 @@ use bitflags::bitflags; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT}; use parity_codec::{Encode, Decode, Input, Output}; -use parity_codec_derive::{Encode, Decode}; pub use self::generic::{ BlockAnnounce, RemoteCallRequest, RemoteReadRequest, RemoteHeaderRequest, RemoteHeaderResponse, @@ -131,7 +130,6 @@ pub mod generic { use parity_codec::{Encode, Decode}; use network_libp2p::{CustomMessage, CustomMessageId}; use runtime_primitives::Justification; - use parity_codec_derive::{Encode, Decode}; use crate::config::Roles; use super::{ BlockAttributes, RemoteCallResponse, RemoteReadResponse, diff --git a/substrate/core/primitives/Cargo.toml b/substrate/core/primitives/Cargo.toml index 0582614a1e..ad42502ddc 100644 --- a/substrate/core/primitives/Cargo.toml +++ b/substrate/core/primitives/Cargo.toml @@ -6,8 +6,7 @@ edition = "2018" [dependencies] rstd = { package = "sr-std", path = "../sr-std", default-features = false } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } rustc-hex = { version = "2.0", default-features = false } serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } diff --git a/substrate/core/primitives/src/authority_id.rs b/substrate/core/primitives/src/authority_id.rs index c7f8fd6958..5f2c84fd06 100644 --- a/substrate/core/primitives/src/authority_id.rs +++ b/substrate/core/primitives/src/authority_id.rs @@ -16,7 +16,7 @@ #[cfg(feature = "std")] use serde::{Serialize, Serializer, Deserialize, Deserializer}; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; use crate::H256; /// An identifier for an authority in the consensus algorithm. The same size as ed25519::Public. diff --git a/substrate/core/primitives/src/changes_trie.rs b/substrate/core/primitives/src/changes_trie.rs index 8ccd3eb4c0..f06bf49a8e 100644 --- a/substrate/core/primitives/src/changes_trie.rs +++ b/substrate/core/primitives/src/changes_trie.rs @@ -18,7 +18,7 @@ #[cfg(any(feature = "std", test))] use serde_derive::{Serialize, Deserialize}; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; /// Substrate changes trie configuration. #[cfg_attr(any(feature = "std", test), derive(Serialize, Deserialize))] diff --git a/substrate/core/primitives/src/ed25519.rs b/substrate/core/primitives/src/ed25519.rs index 313952ed2f..dcf95b21e6 100644 --- a/substrate/core/primitives/src/ed25519.rs +++ b/substrate/core/primitives/src/ed25519.rs @@ -23,7 +23,7 @@ use blake2_rfc; use ring::{rand, signature, signature::KeyPair}; use crate::{hash::H512, Ed25519AuthorityId}; use base58::{ToBase58, FromBase58}; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; #[cfg(feature = "std")] use serde::{de, Serializer, Deserializer, Deserialize}; diff --git a/substrate/core/primitives/src/lib.rs b/substrate/core/primitives/src/lib.rs index cb1f722043..3eff7059f4 100644 --- a/substrate/core/primitives/src/lib.rs +++ b/substrate/core/primitives/src/lib.rs @@ -34,7 +34,7 @@ macro_rules! map { use rstd::prelude::*; use rstd::ops::Deref; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; #[cfg(feature = "std")] use std::borrow::Cow; #[cfg(feature = "std")] diff --git a/substrate/core/primitives/src/sandbox.rs b/substrate/core/primitives/src/sandbox.rs index 71f9199cf5..01bfd4143d 100644 --- a/substrate/core/primitives/src/sandbox.rs +++ b/substrate/core/primitives/src/sandbox.rs @@ -16,9 +16,7 @@ //! Definition of a sandbox environment. -#[cfg(test)] -use parity_codec::Encode; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; use rstd::vec::Vec; /// Error error that can be returned from host function. diff --git a/substrate/core/primitives/src/sr25519.rs b/substrate/core/primitives/src/sr25519.rs index 842de7c682..729b8790f9 100644 --- a/substrate/core/primitives/src/sr25519.rs +++ b/substrate/core/primitives/src/sr25519.rs @@ -23,7 +23,7 @@ use blake2_rfc; use rand::rngs::OsRng; use schnorrkel::{signing_context, Keypair, MiniSecretKey, PublicKey}; use sha2::Sha512; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; use crate::hash::H512; #[cfg(feature = "std")] diff --git a/substrate/core/sr-primitives/Cargo.toml b/substrate/core/sr-primitives/Cargo.toml index bd18b40b80..2a971c3941 100644 --- a/substrate/core/sr-primitives/Cargo.toml +++ b/substrate/core/sr-primitives/Cargo.toml @@ -9,8 +9,7 @@ num-traits = { version = "0.2", default-features = false } integer-sqrt = { version = "0.1.2" } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } substrate-primitives = { path = "../primitives", default-features = false } rstd = { package = "sr-std", path = "../sr-std", default-features = false } runtime_io = { package = "sr-io", path = "../sr-io", default-features = false } diff --git a/substrate/core/sr-primitives/src/generic/block.rs b/substrate/core/sr-primitives/src/generic/block.rs index 951e5cbfbb..1e6255c681 100644 --- a/substrate/core/sr-primitives/src/generic/block.rs +++ b/substrate/core/sr-primitives/src/generic/block.rs @@ -23,8 +23,7 @@ use std::fmt; use serde_derive::Serialize; use rstd::prelude::*; -use parity_codec_derive::{Encode, Decode}; -use crate::codec::Codec; +use crate::codec::{Codec, Encode, Decode}; use crate::traits::{self, Member, Block as BlockT, Header as HeaderT, MaybeSerialize}; use crate::Justification; diff --git a/substrate/core/sr-primitives/src/generic/digest.rs b/substrate/core/sr-primitives/src/generic/digest.rs index 64bc0396fd..243cf05164 100644 --- a/substrate/core/sr-primitives/src/generic/digest.rs +++ b/substrate/core/sr-primitives/src/generic/digest.rs @@ -20,7 +20,6 @@ use serde_derive::Serialize; use rstd::prelude::*; -use parity_codec_derive::{Encode, Decode}; use crate::codec::{Decode, Encode, Codec, Input}; use crate::traits::{self, Member, DigestItem as DigestItemT, MaybeHash}; diff --git a/substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs b/substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs index 25661031e6..a0800fe502 100644 --- a/substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs +++ b/substrate/core/sr-primitives/src/generic/unchecked_extrinsic.rs @@ -20,7 +20,6 @@ use std::fmt; use rstd::prelude::*; -use parity_codec_derive::{Encode, Decode}; use crate::codec::{Decode, Encode, Codec, Input, HasCompact}; use crate::traits::{self, Member, SimpleArithmetic, MaybeDisplay, Lookup, Extrinsic}; use super::CheckedExtrinsic; diff --git a/substrate/core/sr-primitives/src/generic/unchecked_mortal_compact_extrinsic.rs b/substrate/core/sr-primitives/src/generic/unchecked_mortal_compact_extrinsic.rs index 3ffe7fae40..9c74995d0a 100644 --- a/substrate/core/sr-primitives/src/generic/unchecked_mortal_compact_extrinsic.rs +++ b/substrate/core/sr-primitives/src/generic/unchecked_mortal_compact_extrinsic.rs @@ -190,7 +190,7 @@ impl fmt::Debug for UncheckedMortalCompactExtri mod tests { use super::*; use runtime_io::blake2_256; - use parity_codec_derive::{Encode, Decode}; + use crate::codec::{Encode, Decode}; use serde_derive::{Serialize, Deserialize}; struct TestContext; diff --git a/substrate/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs b/substrate/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs index 06c9003e33..e7d104a1da 100644 --- a/substrate/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs +++ b/substrate/core/sr-primitives/src/generic/unchecked_mortal_extrinsic.rs @@ -189,7 +189,7 @@ impl fmt::Debug for UncheckedMortalExtrinsic = RawLog<::AuthorityId>; @@ -611,7 +610,7 @@ mod tests { mod b { use super::RuntimeT; - use parity_codec_derive::{Encode, Decode}; + use crate::codec::{Encode, Decode}; use serde_derive::Serialize; pub type Log = RawLog<::AuthorityId>; @@ -630,24 +629,24 @@ mod tests { // encode/decode regular item let b1: Log = b::RawLog::B1::(777).into(); let encoded_b1 = b1.encode(); - let decoded_b1: Log = DecodeHidden::decode(&mut &encoded_b1[..]).unwrap(); + let decoded_b1: Log = Decode::decode(&mut &encoded_b1[..]).unwrap(); assert_eq!(b1, decoded_b1); // encode/decode system item let auth_change: Log = a::RawLog::AuthoritiesChange::(vec![100, 200, 300]).into(); let encoded_auth_change = auth_change.encode(); - let decoded_auth_change: Log = DecodeHidden::decode(&mut &encoded_auth_change[..]).unwrap(); + let decoded_auth_change: Log = Decode::decode(&mut &encoded_auth_change[..]).unwrap(); assert_eq!(auth_change, decoded_auth_change); // interpret regular item using `generic::DigestItem` - let generic_b1: super::generic::DigestItem = DecodeHidden::decode(&mut &encoded_b1[..]).unwrap(); + let generic_b1: super::generic::DigestItem = Decode::decode(&mut &encoded_b1[..]).unwrap(); match generic_b1 { super::generic::DigestItem::Other(_) => (), _ => panic!("unexpected generic_b1: {:?}", generic_b1), } // interpret system item using `generic::DigestItem` - let generic_auth_change: super::generic::DigestItem = DecodeHidden::decode(&mut &encoded_auth_change[..]).unwrap(); + let generic_auth_change: super::generic::DigestItem = Decode::decode(&mut &encoded_auth_change[..]).unwrap(); match generic_auth_change { super::generic::DigestItem::AuthoritiesChange::(authorities) => assert_eq!(authorities, vec![100, 200, 300]), _ => panic!("unexpected generic_auth_change: {:?}", generic_auth_change), diff --git a/substrate/core/sr-primitives/src/testing.rs b/substrate/core/sr-primitives/src/testing.rs index b854ca317a..a1c05aa7d7 100644 --- a/substrate/core/sr-primitives/src/testing.rs +++ b/substrate/core/sr-primitives/src/testing.rs @@ -24,13 +24,12 @@ use std::{fmt::Debug, ops::Deref, fmt}; use crate::codec::{Codec, Encode, Decode}; use crate::traits::{self, Checkable, Applyable, BlakeTwo256, Convert}; use crate::generic::DigestItem as GenDigestItem; -use parity_codec_derive::{Encode, Decode}; pub use substrate_primitives::{H256, Ed25519AuthorityId}; use substrate_primitives::U256; /// Authority Id -#[derive(Default, PartialEq, Eq, Clone, Decode, Encode, Debug)] +#[derive(Default, PartialEq, Eq, Clone, Encode, Decode, Debug)] #[cfg_attr(feature = "std", derive(Serialize, Deserialize))] pub struct UintAuthorityId(pub u64); impl Into for UintAuthorityId { diff --git a/substrate/core/sr-primitives/src/transaction_validity.rs b/substrate/core/sr-primitives/src/transaction_validity.rs index 472cc198fd..8cdd419278 100644 --- a/substrate/core/sr-primitives/src/transaction_validity.rs +++ b/substrate/core/sr-primitives/src/transaction_validity.rs @@ -17,7 +17,7 @@ //! Transaction validity interface. use rstd::prelude::*; -use parity_codec_derive::{Encode, Decode}; +use crate::codec::{Encode, Decode}; /// Priority for a transaction. Additive. Higher is better. pub type TransactionPriority = u64; diff --git a/substrate/core/sr-version/Cargo.toml b/substrate/core/sr-version/Cargo.toml index f4a0d8111f..3ad1ac299e 100644 --- a/substrate/core/sr-version/Cargo.toml +++ b/substrate/core/sr-version/Cargo.toml @@ -8,8 +8,7 @@ edition = "2018" impl-serde = { version = "0.1", optional = true } serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } rstd = { package = "sr-std", path = "../sr-std", default-features = false } runtime_primitives = { package = "sr-primitives", path = "../sr-primitives", default-features = false } diff --git a/substrate/core/sr-version/src/lib.rs b/substrate/core/sr-version/src/lib.rs index 6d16f2e47c..67c151cbeb 100644 --- a/substrate/core/sr-version/src/lib.rs +++ b/substrate/core/sr-version/src/lib.rs @@ -27,6 +27,9 @@ use std::collections::HashSet; #[cfg(feature = "std")] use runtime_primitives::traits::RuntimeApiInfo; +use parity_codec::Encode; +#[cfg(feature = "std")] +use parity_codec::Decode; use runtime_primitives::RuntimeString; pub use runtime_primitives::create_runtime_str; @@ -59,8 +62,8 @@ macro_rules! create_apis_vec { /// This triplet have different semantics and mis-interpretation could cause problems. /// In particular: bug fixes should result in an increment of `spec_version` and possibly `authoring_version`, /// absolutely not `impl_version` since they change the semantics of the runtime. -#[derive(Clone, PartialEq, Eq, parity_codec_derive::Encode)] -#[cfg_attr(feature = "std", derive(Debug, Serialize, parity_codec_derive::Decode))] +#[derive(Clone, PartialEq, Eq, Encode)] +#[cfg_attr(feature = "std", derive(Debug, Serialize, Decode))] #[cfg_attr(feature = "std", serde(rename_all = "camelCase"))] pub struct RuntimeVersion { /// Identifies the different Substrate runtimes. There'll be at least polkadot and node. diff --git a/substrate/core/state-db/Cargo.toml b/substrate/core/state-db/Cargo.toml index 8b867c837e..17cd633518 100644 --- a/substrate/core/state-db/Cargo.toml +++ b/substrate/core/state-db/Cargo.toml @@ -8,8 +8,7 @@ edition = "2018" parking_lot = "0.7.1" log = "0.4" primitives = { package = "substrate-primitives", path = "../../core/primitives" } -parity-codec = "3.1" -parity-codec-derive = "3.1" +parity-codec = { version = "3.1", features = ["derive"] } [dev-dependencies] env_logger = "0.6" diff --git a/substrate/core/state-db/src/noncanonical.rs b/substrate/core/state-db/src/noncanonical.rs index 78a958b066..c11fcd74c3 100644 --- a/substrate/core/state-db/src/noncanonical.rs +++ b/substrate/core/state-db/src/noncanonical.rs @@ -23,8 +23,7 @@ use std::fmt; use std::collections::{HashMap, VecDeque, hash_map::Entry}; use super::{Error, DBValue, ChangeSet, CommitSet, MetaDb, Hash, to_meta_key}; -use crate::codec::{Decode, Encode}; -use parity_codec_derive::{Decode, Encode}; +use crate::codec::{Encode, Decode}; use log::trace; const NON_CANONICAL_JOURNAL: &[u8] = b"noncanonical_journal"; diff --git a/substrate/core/state-db/src/pruning.rs b/substrate/core/state-db/src/pruning.rs index 83cd51b70b..95af8c553f 100644 --- a/substrate/core/state-db/src/pruning.rs +++ b/substrate/core/state-db/src/pruning.rs @@ -26,7 +26,6 @@ use std::collections::{HashMap, HashSet, VecDeque}; use std::mem; use crate::codec::{Encode, Decode}; use crate::{CommitSet, Error, MetaDb, to_meta_key, Hash}; -use parity_codec_derive::{Encode, Decode}; use log::{trace, warn}; const LAST_PRUNED: &[u8] = b"last_pruned"; diff --git a/substrate/core/test-runtime/Cargo.toml b/substrate/core/test-runtime/Cargo.toml index 67396ee96a..a3e413e5e6 100644 --- a/substrate/core/test-runtime/Cargo.toml +++ b/substrate/core/test-runtime/Cargo.toml @@ -9,8 +9,7 @@ log = { version = "0.4", optional = true } hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } keyring = { package = "substrate-keyring", path = "../keyring", optional = true } substrate-client = { path = "../client", default-features = false } primitives = { package = "substrate-primitives", path = "../primitives", default-features = false } diff --git a/substrate/core/test-runtime/src/lib.rs b/substrate/core/test-runtime/src/lib.rs index 36de756c80..1aa172fd60 100644 --- a/substrate/core/test-runtime/src/lib.rs +++ b/substrate/core/test-runtime/src/lib.rs @@ -23,7 +23,6 @@ pub mod system; use rstd::{prelude::*, marker::PhantomData}; use parity_codec::{Encode, Decode, Input}; -use parity_codec_derive::{Encode, Decode}; use substrate_client::{ runtime_api as client_api, block_builder::api as block_builder_api, decl_runtime_apis, diff --git a/substrate/core/test-runtime/wasm/Cargo.lock b/substrate/core/test-runtime/wasm/Cargo.lock index 3be629da2d..1dae80fcba 100644 --- a/substrate/core/test-runtime/wasm/Cargo.lock +++ b/substrate/core/test-runtime/wasm/Cargo.lock @@ -704,6 +704,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1179,7 +1180,6 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -1200,7 +1200,6 @@ version = "0.1.0" dependencies = [ "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1212,7 +1211,6 @@ name = "srml-metadata" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0", @@ -1226,7 +1224,6 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1292,7 +1289,6 @@ dependencies = [ "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-api-macros 0.1.0", "sr-primitives 0.1.0", @@ -1361,7 +1357,6 @@ name = "substrate-inherents" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -1396,7 +1391,6 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.14.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1461,7 +1455,6 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", diff --git a/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/core/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index d35194b45d18cd750055b14deef6c5e7179cc61f..f4a22553c152bebc5c38eeae6597a2c05a8c76f3 100644 GIT binary patch delta 7193 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 delta 7985 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 VQ*j+;RTC1pOExOu#*i}M{{RSiFTel* diff --git a/substrate/core/util/fork-tree/Cargo.toml b/substrate/core/util/fork-tree/Cargo.toml index b751a8cf85..7dfd82991f 100644 --- a/substrate/core/util/fork-tree/Cargo.toml +++ b/substrate/core/util/fork-tree/Cargo.toml @@ -5,5 +5,4 @@ authors = ["Parity Technologies "] edition = "2018" [dependencies] -parity-codec = "3.1" -parity-codec-derive = "3.1" +parity-codec = { version = "3.1", features = ["derive"] } diff --git a/substrate/core/util/fork-tree/src/lib.rs b/substrate/core/util/fork-tree/src/lib.rs index ee347b940c..caed51adf6 100644 --- a/substrate/core/util/fork-tree/src/lib.rs +++ b/substrate/core/util/fork-tree/src/lib.rs @@ -20,7 +20,7 @@ #![warn(missing_docs)] use std::fmt; -use parity_codec_derive::{Decode, Encode}; +use parity_codec::{Decode, Encode}; /// Error occured when interating with the tree. #[derive(Clone, Debug, PartialEq)] diff --git a/substrate/node-template/runtime/Cargo.toml b/substrate/node-template/runtime/Cargo.toml index 24f9ab7ad9..986b12ce94 100644 --- a/substrate/node-template/runtime/Cargo.toml +++ b/substrate/node-template/runtime/Cargo.toml @@ -8,8 +8,7 @@ edition = "2018" serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } rstd = { package = "sr-std", path = "../../core/sr-std", default_features = false } runtime-io = { package = "sr-io", path = "../../core/sr-io", default_features = false } version = { package = "sr-version", path = "../../core/sr-version", default_features = false } @@ -32,7 +31,6 @@ consensus-aura = { package = "substrate-consensus-aura-primitives", path = "../. default = ["std"] std = [ "parity-codec/std", - "parity-codec-derive/std", "primitives/std", "client/std", "rstd/std", diff --git a/substrate/node-template/runtime/src/lib.rs b/substrate/node-template/runtime/src/lib.rs index 7c68046707..9caef856fd 100644 --- a/substrate/node-template/runtime/src/lib.rs +++ b/substrate/node-template/runtime/src/lib.rs @@ -7,7 +7,7 @@ #[cfg(feature = "std")] use serde_derive::{Serialize, Deserialize}; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; use rstd::prelude::*; #[cfg(feature = "std")] use primitives::bytes; diff --git a/substrate/node-template/runtime/wasm/Cargo.lock b/substrate/node-template/runtime/wasm/Cargo.lock index 0354ebd8ce..f1b317903e 100644 --- a/substrate/node-template/runtime/wasm/Cargo.lock +++ b/substrate/node-template/runtime/wasm/Cargo.lock @@ -643,7 +643,6 @@ name = "node-template-runtime" version = "0.9.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", @@ -752,6 +751,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1244,7 +1244,6 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -1265,7 +1264,6 @@ version = "0.1.0" dependencies = [ "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1278,7 +1276,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -1296,7 +1293,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1312,7 +1308,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1375,7 +1370,6 @@ name = "srml-metadata" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0", @@ -1405,7 +1399,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1439,7 +1432,6 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1488,7 +1480,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1505,7 +1496,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -1538,7 +1528,6 @@ dependencies = [ "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-api-macros 0.1.0", "sr-primitives 0.1.0", @@ -1607,7 +1596,6 @@ name = "substrate-inherents" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -1642,7 +1630,6 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.14.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/substrate/node/runtime/Cargo.toml b/substrate/node/runtime/Cargo.toml index 8c2e24ffb3..ac220ab7a8 100644 --- a/substrate/node/runtime/Cargo.toml +++ b/substrate/node/runtime/Cargo.toml @@ -7,8 +7,7 @@ edition = "2018" [dependencies] integer-sqrt = { version = "0.1.2" } safe-mix = { version = "1.0", default-features = false } -parity-codec-derive = { version = "3.1" } -parity-codec = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } substrate-primitives = { path = "../../core/primitives", default-features = false } client = { package = "substrate-client", path = "../../core/client", default-features = false } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } diff --git a/substrate/node/runtime/src/lib.rs b/substrate/node/runtime/src/lib.rs index ad4403da0d..ecbdbf691e 100644 --- a/substrate/node/runtime/src/lib.rs +++ b/substrate/node/runtime/src/lib.rs @@ -21,7 +21,7 @@ #![recursion_limit="256"] use rstd::prelude::*; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; #[cfg(feature = "std")] use support::{Serialize, Deserialize}; use support::construct_runtime; diff --git a/substrate/node/runtime/wasm/Cargo.lock b/substrate/node/runtime/wasm/Cargo.lock index 316675d085..c4b1e60dc3 100644 --- a/substrate/node/runtime/wasm/Cargo.lock +++ b/substrate/node/runtime/wasm/Cargo.lock @@ -646,7 +646,6 @@ dependencies = [ "integer-sqrt 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "node-primitives 0.1.0", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", @@ -763,6 +762,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayvec 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1256,7 +1256,6 @@ dependencies = [ "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-io 0.1.0", @@ -1288,7 +1287,6 @@ version = "0.1.0" dependencies = [ "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1301,7 +1299,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -1319,7 +1316,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1335,7 +1331,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1351,7 +1346,6 @@ name = "srml-contract" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-wasm 0.31.3 (registry+https://github.com/rust-lang/crates.io-index)", "pwasm-utils 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1391,7 +1385,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1436,7 +1429,6 @@ name = "srml-grandpa" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1471,7 +1463,6 @@ name = "srml-metadata" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-std 0.1.0", @@ -1501,7 +1492,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1535,7 +1525,6 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "once_cell 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "paste 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1584,7 +1573,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1601,7 +1589,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -1617,7 +1604,6 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.81 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", @@ -1663,7 +1649,6 @@ dependencies = [ "kvdb 0.1.0 (git+https://github.com/paritytech/parity-common?rev=b0317f649ab2c665b7987b8475878fc4d2e1f81d)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-api-macros 0.1.0", "sr-primitives 0.1.0", @@ -1732,7 +1717,6 @@ name = "substrate-finality-grandpa-primitives" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", "substrate-client 0.1.0", @@ -1744,7 +1728,6 @@ name = "substrate-inherents" version = "0.1.0" dependencies = [ "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", "sr-std 0.1.0", @@ -1779,7 +1762,6 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "impl-serde 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec-derive 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "primitive-types 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "ring 0.14.5 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm b/substrate/node/runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm index 565063ef790fee35daa19d40db5a87c62c6f8af3..b86fbdea66f2b33f8dd92eaf97bf4bed6d301ac8 100644 GIT binary patch delta 87453 zcmeFa2Xs|M*FSvEoOY9&n_NhTlzT%s#xSW#&xZvuDrVd-m*^d;3_` zg(s^9I=Z~mQ*t;Q((s9amu30mwB>hRWAa>i_N3S3nV%}96iw39Nl8kdNz;{TrQIs? z>8h$qNL3_7(lkjzM0KkUwKl9z1^ipw|BaBdX=X-R!<7kN=V;Ms-eZle$S!`746&Q?bmzt?DS68uCF_? z>2MKu3Uh3rprY;)%(0Ow7Ik}>;|F@Ks5>&mv55s-l_ZBDxkgDPCQS0^;b~*p7&ehD zV?VM9ER$_z@fS2{mu@tXIeLEK1LcR9cL%lJT{-rW%H!@(p+f<`;1LzCs{fh#O_I_*d6Jv zbXz*j_OstQuzf6-&0@3JOm>E4Nz0{7=`8zM+9v%Zont?EHzD~IhJ zX_sA@{Kv#Xd5w&q@3%)oWV0}(26qK7(?@muErNAdIL-Rs_Jke{xsGWR&2;d4d zP~g+w--9Uy0I?hMH_~cSfP5(ffft&Qy9ns8Fq0V zzPfVzy=EckpkN}$#QzuKubL6XrS6624ZM&-h3^=msEhU_Vx5Zuu1^adL&)o`RZ zE?D(~dA)Ok>5bD;n<@{f7h=_Op`MOW?cSCmqsLm}wU2cKu7PFJ&SZYT>BMZ?^+y$w{!-&#PTqXSgBssDR4EftZH2Z?o z@?rIKYs95dPZl`dmIrvEW9uM_zbLgd9s+j}3+_a~?Loa1$B{w)#lxv8$#I|n+&czQ zCYpIz_rX^8WzoGR>YXY8cFrKG_?Ohtt`}gfOMy0C4`@q4_g1}s3iNkz5M}?B-(SIc z9;;pj)U)6mI#^H!)_juV_8>AYNiFS_lM9p^GuYgC34&P4pniW#YorXb z;uUG3#`bPA_x~$>87SSLK?++gEvG6f+koJz%6dpk%~v(1No=)AsXD8R%1dm+_x`dkx7GgR;4~)Fpt0vfNzry#Q89bT=!I zos*WEBVDYY6j89T0+mAD>^30v1hbyfQu;WU^$uAo7xOAcx|Hgby{adJ?gX=eC{ihc z6{9I3?0J-%9l>Hq@vx2<&1)W3&(2=w;n`-9BCI$|E7;@zt?%4iaQ-BR%MtaapvO#+)#o=Ql}X9Tj@uk`TSx~)g6bRs+qr0hgen}gPan} zW(L?8oj~mqSd7^wj`d?wrn$|_t}?4_P8bzRvPrQSoG`p^xrT1ptAPzD9?X4^ur#KqtHDR5k^&~ZA@iyL-!gyCKyw_>Umb3L!>93}&3MY?}&tlssT_kUF z7U9kx9!4srgxWV}eR=sE%~@*{E75`-KtH!yu+b0}=7^T;ZH0f_XwAw?9FW8pvDriA z*fxxl(o1dF>j>7hVa1gU*{9LCmspf+jGabVoj_l~ZP}B&R*SZ5PR!Rc1ik2fxR=ck z^rCaPKc|3pY^oS&J2vp~C2PIJb_STAVL^KMR8Q#0A|#W_zRaq|teh@-aQb`rYP#sb z$$MBpAHB@B0n|qA*$4zX+Ou#3C);Dwn?X}wVSNz{SRX(g$mI6&TK6w zqb^L5u)qhs${O(=v7$oFKVHSIpZz(-T-%i~PKoQ^V0&1x{02DtGSbglJi{2e-CWv@ zwUXG(*_8RK96@2-*?So9=_~#Zq_cm+C z89ExN>aRZ}K5u%lk;6ZaYNR#7!UHhXSZBkeA-!1Td(q(hNAklz z&5mO7CtReXz1VBK`9{52`=Y~dZ*YXT>O1)2mpswN?Ax@mH>)aLqTJpr#$I4{OMb>C zSqseD2i6p8oE7OpAC}B!AEV-ZSyKFZiMI$Kv$4jV*ooG6RF?rX59%35sO~!~k(Tvg z?!4+h_XXLBjOXmpfU1S2>K~1x@MwSwF`Dn*VIxZ9Pj&&mRrr&B|5l6kvtJ&XpY>xs zn6%w=zRyN6ZSEM5r<2YPV<|G$lDYLmmLf^l=-NlDG21hap6bsUYgrRe$W3#%v(mf} zechkE$g(C-&;UyUgEfUx`vI)F_B}5do>$V`Fn|@)rSIsEA?&iW$NY6Di;|?{bb1(T zDT5zU=XBQ5q~S0svG12r>_}FbW9GS$tTWrU%v?DV_9ixW4AmIJ$|1w-I))|4(smj# zp1q9V_;^-1VEeRehffI_FVXT@tQ0kvz$&n_XDN3Wt6?skz&1)Tw~p82RAQ6$6-!Ei zl9C+f%u%0$kF)fZbZ8Q*6uam|p`x=+2=*b0PB}q|li4S1>3Lc{nN{O(o|z1mc#5K? zu))$*%H9HYw|okFh8-MBx2CXW+O+dn;$d`e3QM7nrm_-j-FccbmDS+g9h~}~boUh1 z{1)19IK1!O)g#AU(-iLEp^}yYn_98H{OEjTB3!|2EnPy|oJTjNFP@)s_ z*wY*(E+Y~e66XXqWzZCSc%c~pP zX~!Zqt(Y}Yb1_B1UiScuBVAAR24H8jl?Hvz>iKb*1zb9fW6NmA=PWIG`$WM2nV)5B znpkKEYwak8uxcWGw3z)Hd})He2-0#V(4Zx37n{N;Xa#$UCVc@8IVF>Be8K8#x0eB( z(X?wTSk_x#vLHUyx3;i~^!b;pJiEP&_J7H~4_m~%ipAt)9$bQYGnE#9g*AxczkLOA zJxlshwmou0)&?w7Bf;kiY6yJ`f#Nd0%%ZbPSuCi=nSo7@w20a-W2Ms8&hStA|H$7~ z@7yT1X~y}<{wjOzx~pu;nQ4CvwLdPM^cT*`^naYNvv`m359;}a0HL@{_8e!aeKMKv zKjy*oD@yZPmovrcjmTnMBXXy1fIQ1q{j)8Wu;;KjF^fe@vDeAq+O}z-gj)l1MPLtwjC3k z7JQ>T&;4=@YoVEi)5afRm8tVu);4kZSdN3B2$#XFHQ)hC9*&2M&0ih2=*U`V(glEb z)AjFJFlB$w20wn(9oMnXc}3A@jrEw6eKd5v1)I&VVkzwfS*0`USyTz=MY1sshL9)f zJG`|lMM*YbGZ31RNT8D0?0dH5A3B~5G8#RWv<=woVt-J61FIaeb!tI1DTw-fi|NE* zRhqtmr95%sAA7`w2pKqgU`JckZ`#1*+}gmRAKWkqWuneTm^>~~yN%2!Kjf-tJkZ4{ zP4m;6;q`E)sQAOxM%4-Y9aY17V zscAp4$&c3>%qBl$yAky$#B*j6O{MEPi%{rxR?)9km80I#@{&jI zz;e=QAJfenzcO87xw}Z(30=HERuM|u3AK0uy}yekL@r=%kIP%K0K-q0jXS&O!cL3f z+YO3Z5!7xM_TX048ltLE)LL+STfmom1;@PIMuJjMJDZLKm22^WflS;@yLLh8vhZJp z#_nb(k2sW@!2p(1ScD%=*}0o&(+O6wY=PXIAN<04tNl?R6FZZ*lWe~1 zeZzdA)5R$ubGRnb;D6afSlPpFvOf|0eUr^Cu6osm*!`=Z_P~a2%^S$g znZmRs)8bn!)-7}16=)f{0_l%iEJcGw3#KMhzs-ut+)7{Kp0MF}xyPPC?_b_y4HW=$ zNtRQjWfZ5#uXvW(1|=!g*vdyRN|BqO%w9!)7eP~1j*WsvM)C$4xkCNV0e5zwXb+T4 zQ|0GSXqPHiM0-m#xe-01$v)9&24AkZN2(opV8|veo zGPj6!bjt76;7TnlYrHx9)lw4zDoBn5#rQBaK{nKWz=AQwX; zr32)b5ey2DKR|FZK&}T^Y6r^Q1uUG8+$~A_Od0Zi^x>2h05)tbaHdHI`BF5cv?Fqw67ZEmW!Ok;h1x z=6a8;OUT_)L{3KVPZ9Y#GS3&4TVa>xb9=*#F~EY;$id&De3up~zln0ILq+l4VX~Lh zFu4knYKFl3ax{WvbUj)wg&?+=+zG+JV)8bd#x;w^ z>BHjk#~^Ib|FdR;82Jk&eA71@u^1h$PzT7#S&bDr35*g znr+vLn4S`HZK(^?0U1+WGBuGwZhQGDH)L&qSHj|u#o|z4i!p+DK8Pc&nOjHH!`Yz^ zwqdSJNQUz0+A7U0DNnAp)gfv)xnY>s;`X3KQ7gdiGZ2092#C{Kf|84Rm6D^9R505L zQV^F%4s_*J_;Ecqz<5<|3dhzI1(IY>b(&gAE*}Ktni;{VDGo<12c0b?Hx89xVzx>+ zBoxOHhJ&6gE!U&*rR6#rj`n%NzS441D7TB1gbB)+=4XbUW)z&E6{BKhiyo*c5;+OuR-YN1vD=*UQP+r~)+lpDDvfP_#!m6TD%W85db6r*W6A3%? zM%Cn_R_U_TySyxhhw!JDWnr^Penl=% zRojDIe?f1zm&KNCc6<3H7z%H+mxT!sMS3yw7|nV`=7$)>t4!?x65e)L|ac9iwcnrQc~Ui?cwarO*!@<&7=#<$qyIDT+U^8~P8* z(%w#TW0rk|Vmr&N*@-J=-_CMf#>V|a%U_klS^7!Z`l=kq7i8|M@?lWbme(LGGtI!) z<@sWrF6%14%(DaEfH=c~Nqz$hkS)1Iv)_`__pPV%>nXaj@DxX zGf;ky$IE{#x8z`@eJqE^EWEYB;j3jF-?;p^=Bo{5rVjp>I5)j`&CL2( zW)hgz$~5^|w(Qo_bUBvoy+!fqa%r~X8Z}Or`^7K3E(p|!_mv2G-etrXao#$`eI<;u zH=$q-zhxdumzOf$?T8`rn>@TcM2>zUcko7sucx8--Zswh&t4$w-bRkY*T-=C`Whel z-Z6rG{fw=HkoT^k``$Blq;I6BhRWe-2hx%DkrC+YZye>H0}SRHXq@Ap9~)PBkY>1i z>5?&>R~{r8V|h3j0?9W-GSYcusAS~uaF}FVsX>0eQaSMrmIOtmj^h+%Y`x_7Gd{7<@_mn`R7` zJF!dG>DF+F-%P6hiQJ|F-;{IlH&SZk4#i)5j*vvXP>4&(I|}Iz{Pm~P+E3(K(V~*b z9xJlP^6W9FMj<2Q{%Csi2)TwR6(C9t5~T+5Qt7IJv^J zcW+p<^^*g{)e0t7Pc#@IM;cgSP|N!hTHK$|JU@YojF)4)cGaf&8CF|OAn%RsH>mk| zxft8>FLfJlt>MwACE0#Otbkt;*Ltuw2!*y^$hS}BWzG#Y4^EK3mqP9Sp3d)&zW7w; zo5B2%Zzr*)Qf+PpYRb~Al510*AEny~vF;==0BdGY{hGrc??t7raA^N0Cz znB=|)A~UK9CkC`|Vu4&wW1DZ9rN5LnO6>MkI{TG8manxBmx4ttr?pGvPm03mqI3O1 zoY+;Dy~YtrS|*pK{uvgt9ho7|fy6*sgThRQK3pbOXIWQi#WMLtcJL|%WP)#lA6Cnh zQ#qrXpD9mgY~d}cy8;{rjPC0dvM{y$wL)$UzSdx+;Qi(YE9DQt*UZ0HBl*5Qp8rm6 zEl!fWN9APN`<>hhV=uJ^1vBW-EoTzVU&HrA=J_@9NljWxyEn=mkX7*qD8_J*`azz^ z`Csi#^5+Q6=EE3?UhfkORqiLVg0NPo9ul-kwD2^4V>JCY1CPRfm~q$FB#63U=RN}_uwPJH^)N!%Rruwr! zFK!O{TYizx$bl645Gkye$(dT(g34cd*mWAm?2{rXSqpN;h4&E4R&uKJ-E8 zJKYnV4!#GmmO;zzVSAJDwXFQ9Aa+zyZXh_MD%=wDnx?GgV8#T9=%N7S1FRV{&aLzg zbkDYYM}*=%l|GA9Ug692-$-Q#Hv|0~rR-tS26J|CrL9Z>@k&hE%$3$z4}6FC0Yf!N z7GPHFs5p+XZ8XAQlH~gnr< zFBDHkI@n(rV$OT1_FQ;pRSpPTq+Me&*Kpm}v!n6{P!InLY?uT+s;3+^s&bg2p^2peyySUODQ_y(loK*f z%C4k@k+&%d&1s;dTgCaE+G6f#tazNRY4)k$v`h={7wam)W`$PDUPZ%59Y#gkkg9~5F)u2!<)DRU{3FAM zz>ImjopM17I)B!mjt>iC_pU3NS*f$KQFaaW6QeP7rPaj~uPbHQZznn0`|%JECDOgu z6>J#H!(Ejb5{G_t8>JY%Szakm^-`4&srFk+1W!&cg$WiZcWYq$MY<_b7)#l1N_FPi zn|CfcS#)GB=&ocs1ziXP&Z>;oTD_buH;{DQ#rGTQl`Qp7D# z05ZlD50yw_YO-1EePt*oqd6Za^Mh=I2DfZj2pRIB@|ENobJdTKF;}T(e%lTk`Xt5CRkYm{=qDV;RWOj17A!YM-v(9)!jr8N0t zIZgSPA!O#<8OmB~A$m6`#m$dqDq}6_+XCHM3(T5CpRQK1+E^cImtWnRie|bO4q1e>aU3eV67MfYdp1L4)cjFdDL2^(!+%KX6Ap*3D8S{h(9}wZL6qaxh2$&Z zWhnp__H39+cS=4S7Nj_KOTJ(p-z)hb@lpV}FPu+OIl44c(dhjRikr^G$u8OJ)u_vI zrFeues0zB^2;xS3_{+&O=x2zXCi9hOdh(3ok^<@N`ATv4@gDeDNyfS;GFu5vTb&0} z1V-anBZ2w=+jxP0g0gasIlYlee6GdsKi{Eu)lfH$#6h1)Q! z&5ep<^?2~*X;R#4Va*R>NOLy_(LQL-pETAlaijq*nD)P$l>vKw3vxXn@%RBzEdN+`n1hk3&dPrtqy z_3z!grw>8RY%#M&R6lPBZm=K=K=QmkeW}uRrGgYmUA8MPN|C0yT^XX+`HyH#^V1p# zOVFBP(Hadni@`|wlm(;sN1K&c+W)muln(60pN3vJ!o0Uv8La&8d!p=vO4U5#4WK&* zmCl&pj)#jW#TAQfQSCC;ti)k=aq2O zymJPNBb>^f#kvnOTb_k94M3?B$63i&jAorvUWyFk8~}y~kYb9%iN(v0QWC;(-;CFx zUb)~E!J==gq>;}n0?<*H^WYU>yuV85Xyth&S&sG=qhsflbx59fK{F+jby#g{?95T5qTlSJo z)U>Ty0|I?WTeTs|{?t~jqmAXRiIMbcTQyOZjD1wComv{|M2B{2T`tCFwo|uA-Y@(hs>3s{s@?d`WkpwYQ&Ay@-94RgL?5WJ?DKi_%?G%T zfWC4*fLjL)37H?_j`|A9N>ih{0z(Rb73Wys+zua3RbWEGB?MfS0BwmwEbe(D^#ePR z`J{4|p*De;$#6V_)BbvPb)2$+-4)|?r69OH^V4a?jWaiu%BQPdHwKLJ0)FKJf2j9I zK-V3r)n6?`J3mr|zsQM?)EBL^T9rPZ$DPdTK^q2RJbh;aKOKYq@A(V|^#WuEW}cK#m?TmHW^Y_om3`nnYRspSD;->(>D zd4LF=bnv{X!_`Q-GDv+JI@GI!Rc`B;Hdy^bIz#UcQN=D)xWSwnqCP1dpi)ECc$8>3 zRE433`VPfZgCb@QRU1pTqlw*(-_b;LGnscYlT*d);p$tZxH*6sbD=vhTz@e(;Iv<) z@Y5llEK;c4C+dmdGfS`a%K%RoKO0daZ+7C z=VPTwR@xssta9@-S%yNZlW&|Wl+t@^3SAltPyBFxVFo9+iA?czePjjhhVMW66&0XuG<1V2JhVa}?*jLOaKK8-x50;L%{bMY24TJ! z;t{=hta?}--1&m97wAku{N|1xkFs7{0m33g$s&>@#uoB zv3C4T`Wt#!lM2*x#jSDo4=09T*!yZsqqtvLIHYgJtI26HU&Hn)7EHi8$%bnQd^_xu zY}5=BN9O??1scDuC2>VJKeef~?!ha#-;QW9Ku81&@jjO~0H_M$6BXp;5sqfb6@+$z z_`zWyutLvHP>Y2JaZGWg$}4OkT$XsDyG>9V0354%9B1#Jpw^Q9rXmy75uA|MO;(?v zofFl1Y6ACe9hU{$E)6jiv^3+TpAQJw74Zkj$t zZLVFw!Z5U<>Na zpXNbbo`%g*pNlO3fPIJ6lh>trWtO^4lFrlmIqI9*&@41mlsA+}owo@jnHXt5#-?V` zzWM5O6zsJ?ZOCExW`QaU_m>u^*LXa4q1u`ktGh@|_M@#lO<$yz)28xPLoM(y{Ut1v zMNs1BYDr$Q#ph~cZ5ba!7(KO3jm@W#ACTkPe+W4to)BZ~atdFpR?=?p_QWLRLz%W% zouU+)z9*LoM3|Vqcb%^kKtlefz3>X4{$aC`U%`O(@}U2lneesxkqTO#^_^NvTc3x+ zk|eEBxpOrqq4MU_Yt&$c3xXHctNZk-{PYWl)mVK{(IBPaRKo2aW|r_gRJn*nbh#bH z_ZL}ahb?L=E>D+jRjVtRvRk3$TU9Rw`~>YGlj45@-_N91eo_Y`IP#Oa2bcO*{;bxN z;I8?z+Dtl4wYI6kO<&OOjBRQar2V=LQW#>R?sl~_8?ndix?OF@Ewk%(s@!HUWETWo z26f&I4Qm;FvRkd~8F6K!!`sp8@+_7haYkG*ckfnb$eaq^-mi*t`p@>O7kHba4yezt z3Fm0<0X0z?M|TdW6>K-^N8TWPiEcK~gDLYji;xCY!#y+SL9~PRxbt`^=sebSsj=2w z9lNDrb`;3EL*oysQ#kTb-=H@SsoeS8TzE+Btj753*+SS~PYB^VNpPK*^}x}KC0fQ)YDRxX?qGtde~sNq@R&pK+;3a z=V_}BS>-;E6v}?e8D%cYRcA}VSpn8HU2pdUR? zts>wr9DG&%Sb}fW*lX%;xJ-4vu1>&}I=cL?dYBXbuA6E_=@zkDJeT&}Quo+%D9i}? zOPTRyjXB(WTm1@~jy`wP1Z@}R84^EFfUU02qCW$)WNLL+E)17Ha31S(3J2vN@|53C0#mn`EsMTeX+)>Qts#WGV2-CFMZ1xU%PSd>F zX+EYRbS6@ZqbZse!s!)*sYv@ZEso9GN!K*(G{$gP*Su`{o~cd*>3b=`skJEw&Q>BQ z!DTGpla1YQ(9`yp5e4lA4usrH>WL1j?=o^|fm18-_)#2lYKNpX^nHL9C*7n!0yH7P z!vnRqttdR(uK1ObZv(Xf(pswK(yA61cOp%5X~BE|!jo=|OY0&dAa;0#g>J1kJDf>5;V>(g3)U(;epK%TYg=MJ+f``xChy9hy)nDY zmqWBDW{b;tNucCeMKo~_RWPCTMYOhV>$YA+sFlXly;P#8R^FaDR7j+>qR=Ysnftz| z7GqQOBLvj7qFPOM-+4Vp3B3@m6@hS}H^a5}!TFAaYmEw!y;x&4xZmEW2<;`Ib|;1Jr2UhiXQBQ@~PQj9@Q^n})d)6=ylw5KI(5o%Z0>g6rd3DvcIfccFY8m^Cx#rz^x` zJsqFZYEa4MpsX*>QuF3mbeHJO=30`?8*Ezk^9Di7cW7yIjX1jOCW_NLEwp-JP?=#- z_p*Ur+>aXQ)iVZq*3*_2&?|sN&RluOT53<)L$>v3zkn2a^q5`Lp`|v4H_u(SvDqHq zTCPJaT4^3$y>lzA^5cP9)=K-VAaDa&wnSOaYmsn`+xom#nuAr6;!5@=vsXZ>@Eym``cgBo^9e*f=Y+{>7!)Vw5#9uqaJ?LHqIX6ZO%H z+GIWk!7R{SG}URN)dz@aZ6JONWI%~~Lu*DA+d_#tLM_{BO&{Oz*KM`=!OPZ(tF>Y> zm#m|%?Zj-FciVws1RpGrxn~_!e_8u7c;%V=3d_#WUr39cw_DtIw+D;Mg8U3fw27;N z-?Z00({LkB_FSO0uV_^stzU7vFd=mBNiicP8hi_3H<@lZ^ou5M(Eg6vSN8i6b_xIc z5u(I7n$-y<{Ch~dL}9vpy|XryIhet!JGqPuFd@&<<9JA)XK-+(>UCKVeZ{=x||k|_C2$mYiZK;7Qd7CxSslHRh| zfIa3oy7HFx?4zf;O*gHB{j$wNk!%9VrKHDq3LYkgiq%_{K7LMf(M51IwqByn-L*&@ z@Y5?jG;vV@CFWtch?b$3dunx|_Dt)kJ$>H_2mM8v(%afsTn=RPvUVY-dTAqYwAHJ( z_6rz$-9B2Whzke#mi-1;96$KPUmT5kHq!@vwAW)N9})_Fh~GLi#*RYp4?RTx_R$9N ziTI$eR=)U;XduObyRX6ArI25%!VNOr@+RESSDVOr+zan$rFhu?9gRDLE_g?K3$O+C z)0**SV6_URp8d2wyhu(zEvwws17f=og2BCT^Cr{77r6S&xJ8stNq0VW;dr`a@<#y8V%sfFZ~C zhZ3=s>h*`_yPrDu*UJ7!k30ODqDRr@{+dVQvxS4mg7BHj0Bx;~1DFj%v{tHgkcy6k zigJ)@kJP3~8_m5Vu?Iu$vC&$VB>hN(W@#~iBx@{WVg~&@R!eYO2R(E7?0XKD0h3D#xF@mj_2^3wZ?1kn7~})h&NaF=~U^S9E$AMCSaR&kba+_{hpsIi(Gz^ z;+2iy#_kZxxgv*~e^1m>B^2&3N&6mf6`!m%2Yl3Rs)&{$K7a5SohCZGI8FOh$%lIO zECKcESz3ZPO3EhIb59sW#^#z^jz(21)Z#1 z2+ii8Ict%&&;8%MY%+VL*7tvSE+b`?)>WE9lU8Zz_rIFq`x?qBTTRsR8?0#%`@(Ou zdeM_{ikjkh%a9x4lttx-#o{l#VDEebxp#|VOs$2#7Ea<#tujWr%G65!SD>59YUq7f zR3_eON@it;o-1Itb6YmLIlmXM+xf3sW?!I6YqgrV!`FSSHkc-SqA2EHYqftQ>04TV zO#8)M31@MB8=L1BTDM+n5Acd*1M**~X14ZfMX1o+3TIjBtWz>rQ_2cu%DNhf6E+58 zq$uRsL32-NGu%m{Sy9QelX`5>iu;qqwN1}1>UC0E9l+1mj6i4NdhoZJ*xg|IR3B;zh`$|9^6| zc$GgGKiyn&QJXHYX@_aYb*&Q3zN!V%#7mHq3(ZcKwPoDO8GJ?CDD9#RSX#0(8 z+V3bc$E8P5_8l#ZdR(`Rm{39@DEbCyaK&}4xF0^DE6X>uzfkka4eduj_1(YP7q-M? zg(aqKqwq^iVF)=)<8Er#IV<|)mX`Tn4X4X(Z7#1U-_hDe{&ob$2i+)V*{&M7YX#ND zlYmEHXx3`jyZJs>VGDF8>f&S+8~-#6zsp^Sz)Tu+SL~|i-_;UbupBw?WRuGnl0*CM zYENND8h%fEQnJ+$dl-H-L=0o-p((xfuM&r?-N2!UhxN9y%UE$(z~n`&5_epw0UN%7 z=gB<#sDY%{u+glA=taqusOOs~f0Xpv(r#i*Pl95S%yeP8?aK5NX_GmL>Ay&9*%5kG z(QhVC!M~`QQJ=#YF3ruZ}+~PzFrAxWb^KyXRfD1e&_|Tgd)VFEsC_IKiZ88Sc>I{~X0iUQy=b4iRd~@pK`j&Y z9sdh@WEC{-z^cWiB0*%VAbg46401dAI2|HDr3OXl~^ z9-e`RtLzMgpI+f4&R>&GltZtX6q>A8MjeRnuko)s3&I zx1j+Q^fGMBJz7*jx6i0wq4E{=$xeH@(D9mjC;vhVrM9*71p#)JgCgqa$3Thy*3r93 z6Dg{W{uDi3Tc3xdQ?>O<$~^_Htev0MQ6|yRPr^Q zKjZS=YdUT@Qub^5tpXK-M1`MU*Qa53@LE^>4~eb0Z5nUtJyUhQ*BF(m_e`@k z856L{V8&6nMe=)Q*cpiJB5Z3$AkRRyogpG3-A)NMLK?%r2yZMukY@z@f?Zy?Bc*bu zaRct#g&Kn?gWl_|zYbV_@2+>{o4E%Xp%;4S9nHU<*KtiJ!@SoT(~jZ;+UVmDxZ3K^ z`$x^&4)=xvO+DJ`H<9;dJH6!td7Il|_HxZ7FXe-RJZr2;!dCchQO-dS7<%4wdeymj;=bEqdyU#d^B_w%*!y z?X&sleQ!v8`<~u{zV4+z%jwJBTI&?k8?piKVDuKq__{ZEWCs1wTTl5Pnk(H$?`Ibg z{+N8vZ22t0{+#5%t5s$nT{u9r=&O%GqrdmnV-ft@S6|K+@1dpdfYcGX`{|=ONHhBB zqary0Nc>egBie6yFt+elhHAg7FO1Jy3NB*=ftBY!09O2NnvZB}<_Exv zzle<$e|G{a=q}|${T(zt??e54DTksz(wnn=x%AdYzy`vfKEmqGpep_KzR3N&zuqA1 zVZ#<c-64A1qm6QPCI=+aD?_oi{-$9=^{PNKt{X>Dul9i&{Weq&M#AZ#`Zow> z4-=%ic9`z9>^x#C&Wt6B^^7`Q8m99r-7SWTb=!S7mT?AsF(HbjDmdTED7k>&}9Lqi6%^iL~QWUA!G~_fx&GHj>+4 z@vhobJ(gmpV#L4_GRhanJ{xFBQ0qIM$HDn3|6RuVu)wG^kMv@A@A%Lpy$&xQH5vT< zIK4GlZ}w>1Y@e)`lJVp+ts}i0#ZR#`bKVubJO!HG{^*8hcUT7^rfN$h+>O%U*G}CA3MI`PAKj|}F_`xIf?0qD@YNnnN$Mq2y__*Ey+D$0REq#82Un}Dd-J5Bt zzXFB^vvi|~<)fY>`Rkm%LsMqqst_ik(_B5m{ACt)7w~6C#RR%DN3ZaZ3U%k^RcOm$ zTs>D``{=0~Gf$8HZ_lgu%mdH;egZ6Fx;PEouuQK`2j}Z0_=Mb@58o}o3%|8cYO+A@ z%r>2-aSQb%nx5(3u`SR$JQ|=j3sK*yA{sxs0FCR5^vXCruC)l0o^zT$SY*vM@+#Ab zMS6RlXnc-M$5oo}xh^&v0IDK|%yX*bT&#z)Pxny#Vry-*SPb!pIKWS$IXrUXG&Y~Bz8**+F;&MHKPvVEm^%mMJ;|wJuztQRuFVUzYck^Ook%$2a~~KlAXNxi|iSgZGCQ9#}eEkWR^HRM<@{}Wqe?vLC`kmfJ`i+{c(eGi3o2|u8Fbj57@apBXW-Y`|mU(b3 zmKYDRyY&Zu+5sSAxA<^6ecwA0sJYdo5V{984*B zMJxL)Aw~V+KUi`wjbp6-N+*&v0;XbodZ^VY3p$R)JQqI{0j&x%uRKw*|aW~ja#a()N z{_HAvPjfc?3}x=JSPKgBc|@6~{hY8Y&E1VWG`efI)mXqDeeEMIc3FNO=FvS+JBu8| zJ*R3chr6Eei?I+WQTwo1K+|>hp_g+sW}n^^RB~V+HfM*(y`&*gg=*H7dcL=a`Y#)b>~4;ZW7~*J!*-uvPbo2FiYx7lz<_ER-98PVWglxn4e~;?5!tBDe?gb|{4KJGSmuSsu*B zZeSoUO|r`Ey-8zE=wGE}-6~KXVb1h_3e@$t zH+g7*a@M^+W7;T@R-(|Wp38@Ef-l_QKV!{QSKV89M9yfT&*7H$W6@xd`(a!g`lwp{|@%|v;{RcE7^A;-`S}egalgamwUc0(TEn%mgM;QbEL>W=I z43_IcJVXKvTQz}f$uo*3{iFXBi`g@pLa(=`CC*z*%pM;dzUafN`t+hG(x3%SVUd~2 z{~*2OH7rYD?3(_hz?dMD)C7xG_)zoFka0~+*E84kAAK3JWs5}iP6rUd1M$i)ckaa} ze#h;G{wy!%#JxHW)cwVrR)w|M~uMgu=z@l64D_2qE=wfYOdbHr8&8N9TJRbu~LeM%Tg zI5^IEJ~ql$PTD=4Kic%wJ$;2YzX`h&8J+O&R8e@!KqmpPaLLKtN$N_@k%(=PoN-A4 zExMsLaXUCvkV+*%F1T;WDFlTTu^3ERB8xI|mTz6ZD4GudmMyWLRB!HU1DI2Oz=W^LPWm(~PJ3@Sj#iG5lx^ z7(H(p1|rRu<}vth{^sYjHUF8R_Yl9DVwF-F-2X^z=>qV8Vqn`8x z;{zPBtjG`fkMT4XfLBaWHpuBh{XZPAYrFV`dADbo)!xQp0Na*yw(# z#<8)BEHiCn`1sW z46;Qnj$r1HFt%I!*&>Hph#~ps({LZ`7C0d`KZ&RK4>7wg~f!n_|QCfMwwD*m~aoTwI7Dy@O#nL>m|l z#)2gLQkITe?qagR#{nWIdykRHJc;0Hp^7v6{EwEqJ% z^F|7yS;aCGD+FuGS|}XPvn7G&C=1UZ7pd=?27AxY-^r+-j{kN#hWet7G}(vAaP#9Q zn5+daw%)hE%S-%C73RgmBHWOQccCDS@PRw^4&14S)0YUq2q9nsQ^917^`J1$3B4{} z2I7I2L12|}6)poyCd6|wl3Oz*> zFdfce1vvm)V8akQz!`>#Zx8>*Ln!<^EnPw9XaWI=kF1a z7Tq-EqK`knf-KKaG=eD+FJ$1oC{Tq}mS@x10B5;ye*f32x@^tj9M>#@scfLLJ=;B% zdKbm3wpoGBB)&WSJjT%NfnngcTsmoc|Ad?;R#ZvBeEf*w8)GyUYgi0yE2!)8rrsJBWga1PKa)Fp-=W5JhKI zR74a|q)^d|=?V&pf(!yGdi9!6K~VuwFU_R?nnX8`Zanst=0^vAp%r3+j%QN?PJ8HaxC zh6R;o8>5x0S6~4bUx~r-&aQlVh_x)dx3l-hjBR5_=}RzhRVV2KI5nN6_ASJx9JR#7 zryMD1e9H0Z&S+epvSXbkI%oe(7pb>#!^*A_86@u1Rk~DQPlp7cjZ_VLI=ut?fv!@r zem8?9g>Dj=5E@=vo?{rB+;hcSVPjCKbWmS){aFgT1(`qpd~ImJCh1b zcNFxL1`y`3o)Z6ZTy0N@-+$QHQ#y~nB=>Vq>8#W){f92q{lOx|cM%DBu2&un`+GgL8QmCnDWYDen+P5iuoD7`X zzGHWel-h9ti8EwaOy=wB_&mi1_RdJDFDkJ4DCuf^Gv=;Q5cQ9+xtB^2?PI%l+{Qk> z6z1k0XQt6o5S_OBXzBcrHkPO#graqrMSK{+@x<_9RZ8XcHV;8NGKFjD=0JEEHmQ#z zhCMTy59%L`hCEouei|*&Vq?`9X(gQPW26>gBF&MFb;u|LM@EdAl1fiYNh>5Jq$bhy zGM+@>GO0`DDwFL_Of+mK=+A99TWNcc-u^{@9wqOO?1syrU#w^EUnX@g#)wU3R$vP3 z=K_b71;_I2CB{M*e4KqcR+7fj(E{qVX(la7ZKujyPuyj8OMQkH(yR-X&pDYfY?SaZd#O!BS|CLF4zszM zmx1iiT4AnFDsO}%py-P@fxwT-kVb=(Gezu?8B&Mg>Tc%cK&eG%gE>F?;;e0zQ4Ihf zrY2a)!SZG;mR}%fn^&sYrAoRfi$<=uD{zSashlsVoIdUYsJD$m12(?yw|`^f_vg zT_zLBbYPrTS~Z3i`;kus{&C{`Q#F*dWLLnrN-QB^Fb(6M4Hgq=K5q;g*zYr?d>ACQ zQf``eZJ^Hum_lpLSl^P6H`rEEvyw@jeLYKRIgW_i(8zRow@cWEz-PVGWfLejf1Y8^ z9%`$|G2g_%fDN{yuGoaxl9TqP@0u<3$U27g*=)%RtE)|FB>pYAp*7O*&TEhIE7{_Z z{hFiNaRya+UM0NHa+V!sduyZ)#t+#4YNVTJIJjw!bUS2Ki@986EtxC%xM>HRAbjK~ zdu^_?&4M!kX6mA~MmG3fYdL%MgjC#v+9jsbVf#$vjcsGS~5B^HWTbL zv4$CRgTsJcfknzmSn9(ELfD$4l06m9n_HPjEsQ8n!uKez!I~S@u`&G5J5g&8Q-p!I zFsMzo-H=87G_thpVWwpdb2xx5Pm3O^VJf~fnwOPckH4KDwsdNZw4{g_A89HoapB=dPnS!lEbPd$|WG3x^9X4B96*s2B6V}-DNjxS~JV;5c}eP8$# zc^2(w=UpxJH7(koUV60@GqPS+GtD7)_ zZb}ch3FAkjO{jWEaLSQE{aU5nXxqd#-7H-~v+gArJ2$azOQd0N7B0a|`AJrM3*j^1 zk7QrmBsEVzev9;>@$XVPmu+1pML=%ZZCHcY#LinTU0e7haswH~?8`Bg=V8^%cbhaS z19tE2(rni4cBywZEFzwxDaF_oQZ?V?h7Q8DDkx`%pjDBg0)8V5Lo?qN!>k*Ad@X(* zdvgVJbQEeuqyXS_2NAFVzgD9ZR@)W(_Z<>h?;NmF8cbQ> zM_-;;DYes7oqSSt@=4XnCsik(RGoZMb@HL={JK)=*JvMef(Z@tR|;xuXNncwvDx3BaMUsq^s6Qo#|s% zkFJrpK>%L#1@~dx$N9pQBHfzdg(eqeX?F^VcNfR6&Hf#v7z9oY*JdN`qOe$ED#F zDlhR#aXu3u^X}Mj#b1bk@7S`((Z#m0FCND%7fDxdlsrZBA#?|J7O~@oim%-$wKOeU z%GPX@BE)j@6H>6Ob|W>-!7Ae_RK5*-LTWUqj&BHC2)A7nM6kS~I*a7kJ94mZA8r1bE)QY1IEwA^`R@-}b zScqlGB|O|}_de`62eDz7K+R_OH_B}nWb?OYq!#+)Seed( zQB&1*gi8`xK` zp?%>C*01xCEcrU7GCSBEuS?VM+4THf(lFE7Q|!`RQXAq2&fU`&7K~x=;nrPJFW|ko zi_aDty&=70`t2k;@&+0bK7RG4v7%Sf+IVCzNU=D9ivA1^Pqil&i(k}oX`?f@1I(z(WsbK{s z0Jx(VJjOP^gQoHrE8Hv9z*(?Yq7QpN zvRA@UQTFp*Otd$!r{9J17`x&<$bRJKJ+zF+*l+Ji_u{_gUGL){7&^h*?@OOh8+&S> zbPf4~`=vSB9GX75t)5Y%IrPr`d@_4*KN8x&EC-|^r61n$Jhnv}Ad~bKZV0(B^#GUq zHy)4%Hd=k}PTE~Zcgq6^`NGX?kEf3uz;2dj5$|Vce>5n3Lw!RX6b|E+r^@Y?sGs)G zx*i*{$yAme`5~rj$U(s;(r=J4rcWUjnyZok8}3{ZkfMUg1m)fKRr;OJq@(7p%XoT_ zc9b583N<;5N_cON{%Pk(TJKCB`%lKfb#rw=LjFqP$2Gfrh2C`}J?ks!dwypt zc?1g-5Y0~>k@yu_F0_9`|$>AZ)Zl6J;}x zN)yWJ>yccEWZxW>#^sC{dkk%prLQ?AZ7{Q5|CL&$c5Tx3pHV!&sTw8Nx|Np3AT|Ev zTV*X(xrPG&rEir1yfc`J88$JMf2$1pT@}RDKmJzP=aj=+SDwHzpCxS73F(?<8=*wd z$#+{Nu8edr(?^PqKauL4!j^*P2dQs*; zvN=CUL78UU=J02R{%rdX()>n(jWnm`8oA2J{y$1H&lI=kN2x5R8iW7LFrWwfC z8&2{e7T;^^BZ4YVNp!n&$|%)1?VT?#rv@x>|3Kucf8VzP4ZAWvG|c$CYybhJeh3v1@dIF**7Imeh2mo zs`KT48TY313gmKQ=Y>1CsVv@^Kf+n5H)WYy5I}^J67 zdVdGI-6C@pjhj2{Rw_4TEt|-4`jka(M0_b%@ zi1Tx35$ETkA{jOi(=QdtYmKIZTiNsm@@~`iXVPJte5VoDuRkb}dy)7SdD+q8k1J6s zlPBUj;H)zF#=loDZOVD=vlq(cuGka#u3T;n1~+UdCm@WkY$#W7fryWpHW?H?xbuLcwJ$Bw zlnY`Bg@da6G8133)o%6{a_G?G^TygJ&=NPvzF6^Y{ z_(&(7)yAFWj>u~7&N8ew?N9&GMZVZrm8o!^Q9=WIS z7;E5_m%&-%m0JmOfgBv%e#0wAVPwVWgFw(M35uwsPu|{uX1eC^NyvUQ2iq~`^vg|X zVDImjUo+9=wMHSCpG+7Wl3N--OHU8UsDcOHhL~x}re7hqVPkvBWo*k?@>vC^zD8){ zy3hvcj@@O8x!@Sxz-m+%+yRDZZt5x9$S}=}usnqoRLfVH9z4RXua>`t#c+iEW+W4j zQ_qplr;_6KZy9_29Qj7my2I>PU%4Th*hg+t7ZdC!w_rQ_$jwZrzGese$Yir1EuSkl zL;~qn=gDsxH9UUqf{3MovRO;MoXr>^U&2QAmlq38L#gXv0H?p}FHe9`l~EVS-yo}f z2grNGC1MVNOT=w2l-HZS`kL*%Q2s;T1>NWf#kC)Aqy6nUa0%<%{LErWHrh$1Xl^cf|?{=-M#q(@#VA2rfV_VdTcq{yYO7z4Q`s0j0a z8WnD15!b&?UM6oPPH!12PvE=S=I~Bv?mXY&=hclOd~NA0!x~Z@=pv($*7*R#W7*(w z^5tmBua1NCqO?(WAM+Up`*Gj;>FgoFKoGN5*FNOqK62X4PrBX1aWBU8m!0 zKvT$@$(zE|nev4VX*%Fg!bS&L0Y8JBj~PPxt(o$trjoii%=Tc}7~wC}$Op`_7XINK z?4ir$T6`Tu8i_`C^?W%bZsChs%)0cycfNcFT^I!4Iy69fuyaAjJNSs6e&7muR^11g z&OpGuKz@YZ4d=C^RSh{NxnKjt%Z2fpyN&n|M^jcW& zh~FT;Y7(MF$oTFz$q`7Mdv20@rB;2V6SPnZNf{IiMO;2&v4Mx(se{wDw;%jLx92Y4 zPUynKHaG_3I)zgc=Ie1v17WFpw~Kb~)*)*f_Itn5g^3$Kd`6{R?$Hun4FhX+iD+<# zemos_&6Bz?Qy;Z-yKyC}4p~!wzrbd3U6@vqgP-aW(Gp(uDQkJNjMMt*ye0A_Mw~ku za|^`WLnqkcTjX1z6*Rq7-e!9F1bg>Zd2E-@PoRCu&?{}Ucu`FIXY|=3IgCA65^SnD zSsb3{b`T;<<-1Hz$OGx0_B`6&fkTH8(w{At&oMR99h=#iIf#}66-vCu42R`h`WFRG6z(r*N_FnyPWr%I@;P~hv`J!C9%3Et zmn&HHKjc@9>zQSZd?f_@4Qu52#tmEUlOuWgO#ud#Q@&UWaW=*m2(bl+%_aF^N3(D~bbN!usNBwm9F<$Ljcj5GY?eHe-|gKk#MxW|`J{p4%+Xfa82hju8Z} z#qCc)3(?@avJ2Dl9P)sCXLdXd38zwOo8GWh9&KWU+vOH*XmgZ|S9it66s^ZoV>Z&) z$y#r~$3n5E+hqgx_b=Qo2a1|mxy{2oF8|q*EpjKedAr<4qgs`2xkG-1vQ4?IV#;&! zEt-c{jg>wBoV=7mkkzX6+?{g138h)^0=n7;_U;Q*+36wwqNzwzcH~95X;CvA7se+x zup)C6YQ5woD56bSrdDv&Gzv%I2$;5rae|O3q_hd zbC$zsU+}P_DSP83c{)(f{x>$5o24)Nw|uh1_+9$aeexK}!P5tL4oW|e=OPC;eIUP{ zkB`6%|D=As!i+XGrX96;j!JsjiWlB0*q%@1kXFz#w(KR@lJ4*+N>LY7dqOUzW(kG* zFj{xv=W_Mwap@VK%P$J%sbtusujLXJ|5ASEbZ{c|8wHQ~N*+k=2F*RCxfgydkEif0 zU&}k|&?$55jwAAbx{yrXkbVo+?i);dRH`l5)8D8)2_)LEz_+q!(fA5qU5S9zn0@}O z+Q3om`kePas&X(ByymF>S8$g&Ht6tA|#EFc?IM{)9J*j zeyd|i2llU1NYr;yen5+MGRrC1A{(j0qPLq_i&OHI8X*q-h34V?qcr{X|K#6IW#$bF zxsGABx24_qcGw4JM~jS&*{{FL4r)xdWXGPI&8MQF6C{q z8N0Fy#nPOX=t7DmgcdzpvHXOk(#b^@7o2;FEF(u@WtL7C6i@16fNEnmw>R~}-6A-B zaK?dR8j#9YFsahg&1eYEpHvCcFoa^oG8!UwVfFyi4_L-E<2HyTT+rP}r~hG+uz(FN z2F_!ww%F1c&W2)3mvUMtMuVq4V1hQ+OtLp%M~f{@Q#^)mK2Tq`V0v9h2^uF6L1f2J zX`>IYD`}C-(K>}K3`bRXila?EP1z}j}v)NnGi4@1A%C7cG9?{L- z2_KxTwpm=M29uC%SD@g6VgCJ|S# zbO{e-xxn6fCgKVwQ|76{yV6AyG;O;~#|&(CAXMR=pShY}ZV=gR*WE~W7;OYvXh$&% zL9-o7NVgsAoq-O96yQkx~QcCqy{9)*456-hC9uq zy~%1cSlX2uVmG9q77XXNyMYuHOh!3c&vaC_vlrBr3>`$}P&;D2L?vs>8kJh?BX~8n zvx^$C+o)|9QV(yB{@1}#Z10E;C^>MQ2W3^;U}2@&3hgBqV&4HD_9laJ1VW&M(w^N= zYUzL;zOmHO$BLZeW(alAV)lEf<(z3YG)$@#bf-$3^}`!^3#r~MoH?>q@4!Js0q>Xu zj}8hybyN+E^9ENVi8nTg1$2JUM0ZD{LATQ zmKSUo*WRkKB(aQ{_V>38l1-})vm1w6u=|wWI@I#A$@p-(c7&xtAy(0sjj_z>f6v0+ zel*Q|tXY#%ddI@vbh;{^FJpBu+#@h05%t4$=|PuSel!_xVdq6G zQR6M?brFkV?El?$_2_>kP-vN~gW(h5Rq5{+UX}hH;RWQY*RkKDmZqK4A`2?U6T+)v ztP@^f+_x~@CuZqvGVT5{Ju6`uV>T{jyC+yYE|MP>`@67FuQ=3`So~Af^o3#^FQq$7 zM$$wiTt3JrsbgW@iI#iO3f`G$8DQFYIPI8Zd5}*2{d)?;|6?nsT0TVNM^i0V;W#{6 zk8EFut+0=cb{r@GjkQMFjjNevxeq9frd!-_&Yx}>0cXv08ZpvuPq$n~M+IFoEi++; zz;TlivYu$*$OF;H*J$jRX=w?t4`y0^2J+rn7TUuz&9+R3Gi$cxIygVh=7IOjwRC4= zYb<^Qt*o(p0jvdcEdPaX##}yZ0AMzJCG#v-p~jZZv%G~G8+*CsEDJ#Iy4F&~jWq6o z_G5sNnUlr=MMLdxk`H1Y;|OsGLNLR(bBiD|B)Z{G977xzlKDjj49vhl6h+|Tvw9+j zc#V5ZMfQA0E3l|87Gn{}(9yI}=I}-cwmkpY*Xh(=Rd7QtTv(4ulcV_MJG zRdi7QHBue38?Uq2tMfN3v@7-vrW+R8A2TfkRmpyviKH}=uSTwho}? zQ~)#gLd(TcE0Pv;%WC;TaC}4h*@c#?%%)|F*x8FL{Y}emO5e1|@=AW2onKqq-4r&Fz*vG{y7{cUV@LOslU= z+gDjmnwfpI#es_Kz1s4f+3aYQcHd*U)JUsNOYgPJBUk!|WsI^l{k*}klGe<&rqeV3 zVHs6~eC}Frd4tZM-1WHSeL9sf>j}$63fz~Tv3y9Ya1ZRX++|#x?)ki>c?rCu-nJ}+ z^YPo3#c(FQV_6R8BKpc_ zmiB0LY2UY&UY(7L83+3urC{`5iul3#2MGh$?f#GYF*?SC>-+u=6Js zhpv+w!l2k|<}Ae1jc(fH-nb6PDoOtZ+(14kZrs2r;z$iPHG3O@*K6j68?J-FKOD^6 z`3ss0VzJC0KCb!mROs4YIdT9#e15>%*0_*8JIK1WkncOL zy)!*^u=PTd>CiW9$3@nj1&hEJ?6?lKo@Y9Kg!LP0^~#Irnlc@PW-~9cHe`1VwRSPB z`i8wa)Y>z(Rm9a@X5NeY?by3ErEsFsIl0mdy9@2;W9?it7!u1PWyj`$mILcx zy?=lH{ca<$&{yEV$VTTd3m!&7v|CH27wm@0IzN1BPH6WQ(ghKPneE$ro)QwuY~a@A zC8dodVVNvzXhd*@7DV!~6#>CQN!23`D^~T2gVhvNt+olQF(lm1p2rV_(g{>2oi@$0 zeq3NI$ZFU)r&xV|VSXyyi5n@f({a>F91xgUX>1O?4y)m0;GrO#hnwX5NF-U%!Wu~z zL~5{kINnNUpG}bMXmmKKOA9{)j6lBdM9LIKL%YdgM2%s-ftDNIi5^sIJdaE%7{e(L z#h1J3>ad01UB^eVpchR>N*SU!lnI_gO~Ua>+duJ%KuWBM9hNoF)GJ7*SFbM9apn5| z5YIpS0NqKVMz+ir9|%5jYGhf>d9`4o3k$C<|~17FD6A+ue2x{h?E?SoKmbDMM{Z z(Me>GKrkPpK`@hL+;9ZhN|_J^vny!|sInUZjiMZ|uYi0}IClH^nRJ=bhUN`rQ)LQ9 zY>L-fUjOWO-C{FeSk5zq_x>k6XqdHpVEkMp{!?tVrKI(t4xCxHR25 zZvD-a_x(-1{VX!Y+M1m^-s&knbrV;&3&T)uf4qt98E@^(#*ep_6faqviMW0-MV#IJ z2@$3$+Utc^Rhu6aUR7;gExe$-VljJu0w|vX<^NYIXLsKxD684nBfM%hUKL(78_x?b zvhnm{cEuEH6&pL=TFBxPt<#H7>0*Cc%s!cDot7i4BfD{uwNK6n^W-x`q;f>;nQWcb z{lS|x#;Uo$M|joT-yyte?r#xZ#l+p$CmK+D~^>`)Ro~fcpmBZnJhMzfz1HUJ;x*R!m+bqR(#JxQ?OwCPh&OJJ!)Prs^nUcf|Ngh?_=#uk zNm++$QyEZJjZmTakZMbc6KM@va-<1ByE0YVP3)6C)@J22j=}O9l*U@g2m?Vhrm{~i zC~U-EC2Z)acWP9n5Eidt9}~!==^-zZpfek=b_Mo_Q?nffpaor$E^s;c4Bt$8J5)Ys zhrlw!{79umwGC$Bw!tiRTxx@sM$2PJ!K^8CP@VGm6*bMI7Zfvd*o2E0&^s(-JWPRu znHh-bjE7mVR)Fbrc05)%xs?=d`|C^zn(g^~&y*`Nv<}}TW#GodtQ-wCRd6rmd`&ZU z6rq9WBkGbMTVgqrz;!sD01N{`WwIBMV%%#c?A36Mnxl}hI!po;&8Aq2jEY%ip@?dI z3N}Gu#WFusODN7@w%LKD5jza?sEe`!+Q1pkS2v+XqiCoZGiiGKTA96&TL-G{N3210 z5kctM%^moIYQ+mR1>AO|*$*($`f1$-Z=~k)$~U2$z(fT@6{OPW)O=p$R1AIbIDUZ6x=@GIcMf<}tsjH;jk_HYFj9eurb(Ivn zp%l8O5li#HhxNe*fTdQf5#(m?G6c(1vv=hHY6yajaD)l_SY+r7TUp$J(Jt&}86C|v zdN`=V>A|a6$1{gB*75qH^XSdvnZp_Lc;;|D^LS>Rc|3ENo5v&Tc$~bMEtf2f*`a@0 z3sS`<16jz!)(Z^HVF|L347Wk>mS}8(-%yE(9^HH_u}kM;*{H%!%8= zGa<*SEj+xz(jKoneDRa4K&rOzN>y8U#gw|eXfoOlS@NXDQLGul!>tXD3kM}5uu@?N zFGXhjU%dRC4B(6zpDnkxf|)yL6x?(u-Q~eV9<~|P<|_VDg=17Qp>dL=Ho(CcR)E`6 zI^%LCGA;)hXE$Yx%jMS@m&+%^a#*HC(l9OuQ*{R3cd$8=LgwswFo6iMQwPtln~{aN zd=-}PkjwhjNfC9&Br^mz6z9+7xbd86g(2 zd~2AAS;IAJt;dSC{AxDQ3ja=n^_nNsSFN-DU@D(5eQKiHtm#qw?>1xB^ht?W&1_b? z-Z~^_O#0*X)~$s(qX?-*`i0Hbf-?{uleV^EKWwpv3JvPRx}>d@IccQ<8!_gN+O^es zPVOkmK_%<8&Dw=c+h%RwE)9hNoOq;1yD ze>qzlzPHZG$&hrH|5_cU|BLpPUipJ{swF4Qr%IIGxwFn9MrDgtSKhSUq@16-etAP= zx92Hk>HG7P3NtGxQ*3{awdn#0A20ZuI3voGMsm(_rLU+^S{nae>nUofTzLjwaN)J7 zm2!_MeNm;d{S4i$d3y!NF!gPOfoE>ExTEsI>A~s6os?4Z>EY}^S7n9Kz>H-|!@tK5 zwxyeLNp5yjIF*Zx?7@$)FBwW(8|4PN$EB1QdHedSjWzwDTiIKjT7(nm)-|sf8yake zDoC5#Zn7B~!>u+M3^IuyJQ0u0AgQm0lXuz-X6>Dv^1EyXqt5>>=qSR!&Sn6ax~C!w z_7j7RIeRN|>9GCviB#RiF6gZ^8)*jtJ@L+21b#(g7LB|Yar(si=={6J+IV4v`!0L7 zx6)1)-p%Z2Z>4qWY*4xazXJST$g>$L;9g?38A5P};77&27vaPv5k682pM`KN6V-*^ zj`sohorUnAE_^xOJK|T0@bnVIE-bGswZm%rd z{_N`Wl*SzO6&>on9H@hVT10fUM@98hs)ux_$8(^L0jg-Rgsso<&pKS`zSDD@$ih9r zJ{qCr*amR%*mIyx&6#6f*!DWqU=GwPvQkwG8=}Hi>re;hK)n{IqIFa5c<*4>c$Bgf zpskf;)RAE5fLh~VJ!(IflHH%P59BMuoQkO zxd?w+3*U|Krg%TD!GDW);y~X9Dkl#mgT>MTLN5tmK)nxDy1~yf^qYounM2F zsE6AY{$^Y-mQuC7SPz{w7^w6#RGA$I!*O_1h5_{h3_Hs+Lb=Do^?(h- zvi!RMD_AxH>Hs4Tk_MdhY71xXoGq!+;e!!;Y-Dy;=Tm z8fN;_fAM}crGGbGNGGFbg$_XUm-z^5u0|VX;yqt`pNn^rLvFaew6J~A)B784-PEza zSchMR_e$!m|3wKz0-;73eUE4kXvE%{sWjrvsQucEi0OATdwsCdG9{#Mu6n-~v;=1i z>*{OMHuy#Rpmc5lte_s;RzI#u7VJHMC83KaWyqd3wa)@x2Vha}&a6yS>tMzFNVsDf z+YAkn!a%sBa|lUR0zXZjO#O*2>Q8+^i$_AE5V5SO+5@WLQV+3V54a{xkq5q{Br$p4j& z@HdFlS4rOb`u-mQE2>D*;wXLoR3ShNiWE@LEW`F5S#b-q{N;cxQOOuqYlJngVRII2 z8^8)q>{<_%L!aZ%vw+!95#=v|ha@IFQH+;@ zy{lWO-R{9w&`c3`60Tt1m3S9*`vJPF)|w3ug)&^!&&X~9yhuY2e_IL>LbQqm$F@`x zOv5FyT?Ux;aD~dz9sX+g>CtCc5H1Ja1!}axhIi3^MEqkY80keskJtY$1oY7mZpFLE zslEgZ;es2Kz>#qK0+G7l zeQ-r1$;HyvfG5tR;0}iS7Ti{F>Cq<;imB^Eub^#=K-@;SP2i4(JB<605CzcVKsykL zlE3Q&_WM$$5g+@jHi??Y2#9ylXocGqxO!DbkK03sJ0J&c5V+-(p!R6ECP?UGBb8=N zMH&OL($H&{x+E6lNMb}*5;|>ay$*F@4piLBtP@6*!K>_CtKl=nB|6;Ico(ZJBFB>k zWqJnTs>yOxeX^IldpbjJK(eA!WuflSrMfFej&I9CRr$o#umPJh)wnkY>b*eKH-Sgt zZ_U*(-U@1T=m&u=I+iH!n*bMmhcd14ifi%uq)+BZ`hDQiSSx7h=OKCtMV(fkk38fl zo9~~37D*?KR;u2l<~Sk+7l>Guu2AJVVpIVBIMkZRm9eWpOB6VpmKU^C9HE+kngU`% z;UnS)*tAjFiiN&VJ?e1l3SlS(s=kYz0kuyK)C!;qX-%oBErM66zFMdR;t{3osFhxX z`yFiTZJJORjikggMVG7yy9~G)2!mmogH0c$&42WzU8utq>85~Nr+R_lVs`JPO5=u< z#U;9AR}(6GbFk95g$qzs?NnvIjg|$XMsxj7+5doj?myb9i;nte527zZ_=RxIa0kKF z$J507#x^#?1h~iGma{h_N~;kxkB-3G7H&JZxLITPwKc8G84Sa#RO$SL<`yBo8N#1N zd>HOP4Q?G=;?Mp{n_(>6U~Bf)Xr)ofo$yz~e+^s`&I$J8Xr-O0MI~!BMroA#46LE# z^tlYe|0u%A6*HLxm_aic8c>K4LetF-N0i~0PMNCe{8XlAQ``XfMGu2FWso~(RJWZWkWC1u0z2?Csv|ZA@6nl=NYyilhX-7d^29kxVTUu}jWCOk~8+RjoMTFM^+T^ytx7@R>6v6jvZr0a=$b ztlnh$h#PUOIa#%TTwX6@G#75hK8z?;`NIJ?n{^zhv|=3wDz+4fl-&sH2Ukq}gea-s zGYy6{PF29p2Cqpx3IBZfJ8Oxzb7vIb_S-TwP0`LQe`hxoWHIPv&#J3+z=Bn?K%7LT zm<0Rbr!`%A7UNyes?p(6+yeN8jI(;w_OJr*!%5tHg_lYI33=2A05mKRJ4Lz8sEU`1!mE|fD1Hj)Cc5CuU*3OPoEFVO+72OKFHcfh3vBsd`4cgL!2 zLAVnEC#q!U$V?hNcGS;os!vwH%eo95KUg1lKo;y?v8W?*TTSN`*&9 zR~5H4S->CsK_(XHU?*RyvU-`#Mj=ZHlVyc)J+O<7dqpAB6XO!a42*yB&eIsLHl z#f2GJt6x;p&uK@1w!TU%llhE~ua&JqTH?V>3`?%f*qEdur7qBA$op(o{lhQ15h0HR ztmqZHKdBEpItw=jSTQ~}`LsT4JOewBXX?B_Cg-t*RWfHqXVs3Zbmst8s1q+D zPT#?l7qS-o{>}-8mqFNvjM0;8QHa9V0!D}y{mF;t>I%>v${#$mzFG@cOd_PSGGh`E z(zfAw8(pI78ST+%M6C+96>xPs{bfug};Y z(b@`Hs*J&iNyz?c8*VgWc^@umD2X{E!p*_{f^8IiJ!~Z>8+HdHW(hv(l@L~jf(L>#tyACCzeegqYX+vKm zP}p6S(^0szsQE11{o>k1)-M^M(m~MI=l-mF2lRX z;2OLO8Ul~tpF+48;6hVlnJLWkh!Ct2gvKMRg0S$6#=GbN<43FGbPI&_LfqZp47H!{ z;dUZmJWrz#A|dj>)SGXqb20UxPD~BMyWpIt)?L6Qu_qpFompMU)#1kRE^vhVF>pmb z317E>JVl4PAP4H#Kou+?)H7vyVGi7*z}1f*T9)~YSuaRd=fLeWCR2x$E?0RoGiE)v zHs?SW6K=r)p)nJw?~tu3dci}zcn9#svr9)ygf%=T(|HhPHncp4Z^}+2WWC(z*x1y$G&ec9A;Y1>u!&zd}NNvf^p|ZwnhZOKIHn7DSUs)T5K=o5rq2 zbjpe7p75?YSJl}!A`7i`{wFm5e8f`&?!82vY<`X^qTb>}I7!wU(ehg8{P*CUaw*~; zq<8$p+~F|rFn37tB2ux%^g4T@DZ;ZSAtF3`5+cI21nTJT>Z|sspWxC8;b#2uXr}vS zKUD`35o>t_WInQ`!`?@jm&6|YtEeE zl;IbRsF;;z`^8TEhk&E;8o@@JtE*11Rr} zjLZ^K<2^ti(K`Yz^)BbA>D2knOdAlK_!YR+o`nAh{DL#t%XwRM zw7glg8e_)Yis-=A=9{T{%hY||s^1H0;1`Jk&)^55Xsipe;<91&OWG^4=)PFz*Q&G! z2n!zUMWnuWRqU>xi2;BWlg6s7xE@*lF@P0nLLbD55tj;6L$JCgWjNE~L@uRf$v}0E zMuhZuS0G%>G&Uk}(OaL!JGDJ}^qfh}1p*DezXISwxP9U8Mo@V4g!QW>3!#Sy!lH)} z{12d!PcL}H8N)pYD_4UIIWlyy;cfs3jp;VLQ)cMVFUGIb5f*0@CLyf73Tk);nHCL_ zf_^zavjweh+{gE3s#3J8UBK0MjQ82C^OeR0)GxNa%er5sv>am^q?T8p2&qF!SrO-; z7d*Vf>)O8!?*d1Kz#=c;_4=7kPwJ;bZK6XJB!WPt#cT2C)ib*e*O>$NJmBg}sV2+S zq`~itmX8g#9H>LGk{wH=GK(a&I`rxs=zp*qqAzf+E&jPkNnfoWvZGgOd%^lz9hW23 z>wzkoDDg{0Jx$tOo&)t(pb|#}+r^kcWbQ>=7ka@%wOtE*@hsEP5@D|cp8CH=D^=Gm z2w)!~J86(aY?Y4KS{*Tw5%b{sVpu=%72S=<5iNbCZmgpPX(NbPK#Uk9{Q6S^F1U91^=c^eKZ6b74!G|R zRR=zOJZZ6u5l%vEI9wmxk1w(r=E4Qf(znVT&Z&Gk#9}R~(6`_28hUvgFyaL30 zdcjkHIPp&YKJe?+jW+-*T2S@{#nFHjl}Nbn0#;PyuvAuLJj<_F-lrf=pXdS|tWcB1 zJURRDLn(Hm=!ll`-Hz zeQt^Vh$Q%uv6The%pspeLJHRSsg=YeVXRFuw2C8Q|jSagecvN=wVXv6R#nfwzxg&n?8P zsz3ba!{0^&r1Fwv2qK(BwV2XnH@!oboj!AmjLl4Xblbk1^3PdW9}n1KYO?(KuzvHh zW%=g-Sg4}eJMvDzib@ib?YZOB9bC~tMSna9IyBC>5PvS*U1L+KEEkB^0N?^OONOrj zBvkx0AJ=cvhvC;tkE4JUI|Dx>PGpEk*$!p6LjIotE2f6kDMadlFM(eWBH;f4SWMxv z`_Wp!3OPxz4I&x;;Vim_PwLCu#u_Z!aHG=XY|-V3N-M+&e|Cx!vZz!6R%SgHVZm)} zR#X>6iP=>4cJX1r>I)tI1K8tPu)_f>R(^lZ#HsDb_Gx{>697y~Ej`)$&`!YWt8flr z8>^rO9bq0)oke#EVC!my$LWT?aaq8dCuFKrzhj?kvP`L+h-E6^7rawKXMx5zxOc&A z2A3W?-qC~j(=`PT^^oLvRdMAbuJ1gU3<@Zsd3%`)BwTz`4%| zhx!*e2Taa79E^;S68C2b5x)MEhge=H13pRaFQb{$K6P-^{=`_i6##bl>3JCMq6dhf zumQpbA?`A`B>In_HIo)f&u+X6`6DJ*_aMxJIDG#0w8gs15k`%$P9fHv3XmRk^w$~LC{Xdy0KL*u?;O5vjh6A3&mq`v7poxK6m*(jK36ch=$N>ON`U zin05TaJ@OweGRyooYkevyPiJXlR3(J0Jx;fibpLjN7c7f1=$zH6rkT^W%&%8s?wnf z62AkrPAr0+#wp&}^f~SU-0Y?!O*wPZ5y~uOk!o8nX5%^XQ3_hRKA&f3HO0nkE0u=4 z&h!jepu-jnZ~$8`i=0#VrIC@8vcAo((BTpXVzV_%3K}5_qp52d!Ux0sde-Utw>=Pk zKYQ~wrLkooqDfyd%worIN9C-yXR3qe|7NJy@W#VG8PU(eUk!IE+#zt=;71Q7M}uvj z8LZdsN}~>Yr>iq(p%pX$Jk7YT$O?aoU46UKxZ_9DAjA;eAJI;@FT+pD;aPA;!Ce8D zhQvnG*mFewqp9kIL!Ue;3sHm*fJ@w>=P~v_kZ*bvOs#=e4^Fw=%et&l=Dn|=CMKK_M68TxkKi$kI5Z1kF{F~H!_b+CwJmJmL_+` zJoY=e^X9R>3~uc_wv^l(=dt(6y<;A0wF>To^VoQ}#z)y>tCYU5zxX3L+gZ;$;XKD~ zfHUG>^D=5&pYJmA4XiK>gP(XrkLW2s0iI@DufgreW1zU=T`vX_$!c&Hq7OI5bhfA8<&g*T4sc>Jx zkEVBPZcsa@xRasWsIF=XW($KDHv*Ot$_`(qg~KuQTa+0n)jFrSf%Y6fk!j5obP0fk zbQcXo!2Ya*T>v=Z(0I7idN;zQ1GT&1QX?CVUnPF$-lQ&2&w@(@y&A5$1zxVf3zbw@ zx%(PANk06z4EWnUN?YD_$otDGwL2dKJSFr6SV(Y`IXm15aH%O#X6T`&w-~=sOVlnt z4lZRxoadPeb`k!y2&bxF1(#Znh@Y*-rwso>1T7@Lh71tkL+}&v4I1JBv`J$9TEx?Y zXA4~FkK5oQoxqEPh?8(hSY;DDq7f9; z)bn$mH%si!eFu0W1a0UKAQZ(gJP zCoffv2s?1w;YZaf{O$2>*ZE0!>f@AC1)VNW)agvdJwZQXYn98&;(k{$67u>JZgy!&hgWg!o z@AmqmUavD6O17G=MLxPt>0agxMFWXQARhO`l2LEeXBV**k093L3x;9|moMmdC*9GA z&oL#Fqe8am5#{W%sN0?3ws4b)V8kDFR)T=YbYEM<j$J1)3415fFkK2_pJf|01pA8`7qOmVk9dT7&GiJCdHrh$w%7L101vA8$l z33+{f7rXBXWlnh{;7SBMRN3)}CmwNmuhS79+AjR4;G+wkWo8Z@?AxfU48$b9sVZUymE~ zFfArdn=uC>Vd52(J%7R%b;bh`cf#cfxqS)t-4ChRYCMz-cmnK~txA>6AM-`MewWkZ3b{f)e}Z*+T6w(G7l|f)5wF{o^q^`y zu|9p&rj5ocGi967s4Rj;;C1>T2YdmqGw3=O-AAI2}I(NvM z@b+VCwkemffiEf+o7d@v3`vB*@}$r0kFdr&l#ngrO?tseSIF%SxjoSU8@EFlWb^r= zk%-3^^2L#iD-vYS?NA)Wkga~d%NGIlsK>>Q?ofJ_04N?yCj5a|6!qx5a2C67n=+EU z{-Pq=oL-MVk?^`9EaFLjD9$!Mqa;d^zk~->lJs~X#3PYG{n(h_l@{#fFO>!@#>QqP zA~h4IjYs*Nu~^cVbS69jcM>H^3}*M)iYnRU=M=Xs9t{SZ$w(ZeJfVnt2z%lgC63~I zU2dcoNA@Dgfb*g{3|DE?9d{-DevAUBUOUWwU4PIt)Vc0-t>ow(dF*7XGpQ1O@>637eT zfkxtY#zvmShU~=^y=8AJ65H^CB9-_(?vNkND&X-XBko9K6mxbha+JiKehh5ESil`| zC6fW)rR@1bO4rgz(C>-4y^%NsiZdAuj80L3E7%P$D(A9aw<*OXkzg_zN6$zmecnJc z8Xd!yb}4FAie4YWAQtk(-7%LdP3?Z zM&giy7``LE#JG#t%x4t`D|`uymT1Wlm(w4MC;V|w(i6ErjT_s#s98w@=|;UyZzzF& z>qDPavx7G6bfL+4Q5lg~EFN1>m)N<@$0usgeR&NgVU*q(ig>+2z(-s@=J~gBr7hz0 z`XdQ{1g$ROjW}KG*?%kDN}W&=LjITwQVf#J?@9J%JO2&djD1;Yz{VX^3T-}&r9q$D z3)dBhx#KMSvJxtFq1`$?!AL9`^E%OmC(L9sUct5MM_*RXDRH@j=tO?6CxpS(>z+7W zjcfUeQf&(b{oYW(i%|-_GZOQ%X|E`wOT8hVD-`rlD}#88hbC(%zX7E*5%C4%q|gL> ze&pXbWvWVV%BxDxQolDDbE0x05p)2T-!oN<`~ZLctuGdFyI6%ovc@suN0TuZ z^pLHuNYTi6CZO+uOvlFDEK#%ZyojweXu}~D_92@sK>`|c+d%TGxhI;5+!BB!N zdmV}g+LqG;mis(TXhLyU%`kS)F2%oc7uuBz3J1mnG=4V*>Of#lSQU=GT}lN?6-v0# z(~=PPe#kZ!*`;)}(Ws1Z3Zt&y7eQxbckhB!isCy2QLxtML05s4zMMsNC<9A90f;~P zGyzn+5PIAE^He46X!{}yoAQRz&=x?4NkXMcx)K=r;sLh&4dotN!sUv^oJk1RND{rz z&3eA6%nx}z2^YE|L`otKVCRB%vFWoQOJ>*1g8DXV`qZ&=YLY>)2Sb7%xh>)(vgKQqcI?4D zimS{W2ah0jf!DvDE9i)p#ytu>%|DC{obu(NLk5 z`+RQ5SErXb-c{O{2NUtA3t}wjhV)Ow63dKJd$8w^qgGPiDd(0up@N4Xq`ByeI-|>t zGc~38^LLf=%lxh<Pl_p-?2`Ox~u|h%LKD*o^m-wq+rAEa7*#1JM02-1(g=jJn1H z(dI@0g6QB7?yg{zRlKiEY#8-{OHj2S6@y-{&$H4qX#ZVa9=44!W2iV=3~11K0MA>=+Z4_`3h$HaoU4l4dKmp6o&T*Qlp8I44v z?)#1X*oJ)=qz4`Zi%|W=#qK0@(x?wAJd_*{d*Ptc!-k>46A4A#E+3?I5`#(chsrf2 zPQTX|f;JZoVj>6;`;f{4j~AK<;(|UW1RAua;~%0xp+q2(aN~O`5I7MJW@BSNQaY3c zNMV7NV<11Lh7-Xy2)(C3>(4=|Qg%V>6~ zAKqO1m`rx+N63qw(We?NjUC(=03l=E8{Jaf)JQF=4QLr63lVcldEgl)lsXeAx){PK z$}A4IFrn3>PJdRP)<_dRAcwTMguV+X+w`oy)FelM++LxA1hiIukLa%MIr{~=_lKX; z7n@Ln*o&MnBJyIG&8@Y68g|Ln=k$dp0i{qtlq8N1l(BBBtsi#D%;)tbrV~(k0h)Fa z22LF2x7R*5?2>OjuODlMC8dFcw_szj6{g>>4Gg=a?FFQPB=_PZbHVYzf}n`+sQv5E zC8wH{Gl&hPUI`CTZ2h1%ICOTL9J^CrYB(XKnsy!&77+yZe`Jq3Tt;+VpdG0g6YbfZ za?4Kr)D}M{%y^U?<&dTLhqYzR=goUjZ#Rj4!iT`%ByG$3QSI{zd{2@WzoVbfzOES9 zph_?VCL<0aR1~73bnZIz4Axhd2VR6|B%$xH2$0#7#R=@Y<&;0@pEYxrj%GnjBFCnN z#P`&e41xO=6P1FjXFdXoDHq;bTi!f7`X&C2tSF%(0pbD=DTdMgSXwXXYmKBxEaKkv zqKL4I-2195F}x7@!HO;DonwVr`IF0DCZ!a3pcm&95YV3Q+~2&Ix&anR!qm!<lVz zGmag;!3!LRW@ACNlArx;qs&Th9xO%aFNjC^1NOp z8AJsJ`d`y08(B&mB&4cmp?`SRBl7as5WHwaq(tFmP7sis$*)N8jUA#*Zhu{$Y-Xts z)}zX~tYc;u+lD`qvmboqqr=bs%?lrs_r0#irsKwW;m}-iL^LqVuWNbp`)2MUgQ%Lc z`q)PagV6-`34Zr`PkX$2Pm+u|I|$z-^}6SegR zRkA6&$s}5D;pBN1ge4yxmQTtZyY*`g$gV1uNP79h&hlGSE(}r03geM zS3|)%=P967#~XTNWIpTTSU%0%-=B z`}^8w%gr#$1IGuCLepZ)&z>HB)+p3>Sqbf)*MaP}SJ7>Rux|=e&Ugdc zv#cEl5BoNHV@S92fsV2FO!F`(-Od5{pcj`;lRhhVzo}mj-U36C=9W)S#S=g1SmPWj}Y^{s}F zoQ6t6o1rhjFJ3&DvsU6miozg*>w@q8&^#QHQx?$O2aM-=8Nbv#9D~mT#|r!qd96%} zmz#$(00Hs?i;i+be|e=kY{GgoCyhYXG3+VyUakGZ&}_HKwR`lIMnacF41`(mBWGFi zn%uMpDb)_55Wy)gP#&B-kQeO%omdvaavZxJbu~a_*`=;^;g9hR`m3jb|6`91w#Owd-0=o6HP z2T2&kdjRNN@9C4KEncvI-?{7WTbHa>S|;Qg!5ry4K|DJ9bKsAan zWsk0zgk|uqoU&iHj1bTllR1>E3<=fRE6>=k`vx);lCqx`iqX+<_sQ$_>n8(?9h3`7 zG$`F;tnYzXm+j*fd*4&_myfXs7so}w_u_az)ww$RsRtBTgXNncG}hF9@=TC<)T?xmx!@j=H*6 zNx$p*2H@`lMK(B4kuUUTY65dX%gfy&|B7s_iCKoqfjGwsptr(#%k$*NYr-}VuY4Qt zqELu~^!lpYSQGP1Cq+$$x61|U6$&0VZjLXrVdp!{b{QDLE4xtru8En=F9Bocw43K*K>qfK3+9Vb`R zg(*LwiJ7e)m7;K!{^17D4EJl=c{SDJ+vF$r;W${TPDKH>j| z>^_XOf!UJhZW=KM2|CDsYRf7$M>eL4BMfR3z6x4Z0TqgT`@iIt!$f3eE?R}cO%W*- zM)^0j#Z8z~WioA-lADraD8R9ueM>GFC42*9K91`eFI1u#k$R#MvP}$ zopHEuTRoK{NraP!1`QkW^M{KGvhQ&5k=ESKNmVoeG)ag}a-()`O>R6=Oq4qg z7pEH;)r9^|-N>liPI;3&Q5PG=)0#`lE6o9A0seincHF|_rTw(tF5l8cyMa0#+jL_j z2|Bz}-XgmMtH5+Xop5+cBwA|CcdJw|crUdOsuC#2D6+T6%Y~RQajRyWP^?e#WPQ@J z=HMUS)6RGw^^BIU3gKXt07UpTP~tYE?cFN7#}Wu-gnSu zfB)*Udhn44de^S&&3>S@f8cc4ySCDodQx@MW^?59+MRMlL!4wJ2|41?4`VcSuZ({v zi-tJLh(TlYY&t9otM7R~l2}I9hP}b9sd+LKA)43;dG4274#kexd!Hyvh_asuE#(fM48TtRiqe z-rYmmNkeCm&Jn;`60AL#KiJcY^E|SCsVSdgx&i8NJoB zc9bzT3tciy3-1x_eL=IeWX;_Kik87RnEPL8!x6XXBK8wvZWIPcCb6|mE1FM!e7soH zaBTb+zzv%M3Y_`!j;Tk8#kEERm_=SdB|@(b9@Cnhi33qY1@ua&5)x|h>x0MHO@NV| z(FLJBVHrK%JZ`ek2>Tce5q1WM_cz)?xuQd~H`yHxhYxlL6_`or=1)*;tFuGIu7M%~ zar96t=sk2sxn-g_(ggY<8S&AKCqt0_t#<6tjqMGPDN+rd2+Yz0o=ba@_%z>%)Q8rW zDuED{QC>euoMu|caWvx)RnH+{oTs!i<&Bd>r}WyG8$2>B-^jHnYM6k5Jf}_MEjd<2 z5h8fz1qIrBT3ge+Wqi9>V#Y8nz%SCZqdensyS7%Hog&XwXA6gf#>cT~+N?*sL)*~2 z_w9CZ+&JtHWL<1AmYS*~Pv{Wc4eSq!1Cs@<5>TdqbqTkh@@I`U^hQ?kG)C~i=@SE_Ne zWqpHdvug7NZmi1W*tM{T5VGV+Qv}33C_#vP8LcB^Wz#_d>mRZ1|=GcQZ?-?+SUBH_1LW#&dUBSe7YJoFuM-eWr7pj*Chh>iSY6w zXPb=^d3O0n`f@ebJG#V3lQ~cT2vy4?e#`U?&aTkKczNPfaS&l6^dn{_G(WgzWkKEo=b50b%C^ z0t~=mpLU8m>B#-lh1qbFzUF!!QZHskax=gR7@)qQ&eeg|=L9q=;H$Hfg2sPWF?aKW5JP z^+Og6adNx~g9W}LYVu>}0M+Dz`bUS%!_o3HbHsQ9Qw7-rSsdR7AKJT6Zki)pGjM?z z#0VNX8(FMuRMZVI&yg=%MHe&=?~6V!7fdVb8MB zBJe`skD*H?N;cI`{C_4;J~Lmm%50XHz^(!+73pHp@W9H!C3UqY;$#yYIVXMTwQPu@ zAbzdBa+m}%cdjtapa3EQ1oJS!=y%J_bziQSD<*WVTnyD`r^?zQXNABz%8o;yW?NV3 zIP$A=0YgZ=5O|BKL1*-n=+gSf<%M&_yvhB2{XH9!)q_=jM~MDx1cO0gH}VSEb+m|& zC@?3K>XxYgFdk(6n1!dUl$(CXUcSay5Jr}Vz~!9iqF{p+zfqS<$B9$N(h_VWEC*!) zIZd{9i(WhgTM4IhQ;&{iXL4h=nA!*-r%Vb>6D=GQO5WWKAqz<_g2Mu+Fu9I*m7G6M zF~kCh1u<179h!xIb$x-nYMz)ep>ldxQG-GXQ~?iW28!YudBr^PwkT9>BVbT>+4<*w z`_NrYmddCiKn4Y#@`%}at!$eQxy3m2N+dTAJu(GnT~}W&H_j3>y8anPQS|f=6lL#c znf1)}*uFpzD1?!E_IECuM=<#o?c^8D1|>oG%tmU>6h{Ba{QBEb-F*@4B-v zTb0O1ySXPtJqL#qw}3j(?G19;#3&AL zs*hY#tYI6#&D9@S|5>-x597$1z7559n}^o)Z>f*&=^4y>H>~eTb?%lv0PM9HAx$vq;wxYRjE`&(S4fA zR8^Ibt4NZjNfMq_x9V^^f)$7AP?YfTx0R&819vw%T&WJ@z}@jlYKs@YWu6y5?D0h(_hj$J-{tFz;KmS5y{`T(Wg?9!>H{ejYg z-T9c~N9yKr$4U+wZ6)a*cVXsOMVX=QSmyYdMu)iz;Olo`?$Sv1hq)7w+zWI2m}ArU z%UV?Ge^|gRNpcvHYlKvIkX)*CnX=`|SEyL2a&ncb)t;+fm}e~@R%-^)KrUAuH%DW!Be$ll+vlvYSb*m7x^v{c$54PnRG zF?N(4W`|h)=5-s7l159X*lG4Po5NCPv)R(u(ky8zo5rTFGi)Fm#M0PV_DFgxJ(SL| z{pRtt{ihUw{Jjl3GjDHCw147C z-|-1|3-PYjXT^-~b}MB32Y1W!SF1_hW8(O?|4Pisvcb1+IlrSBRZ!~8DS$)ShK~89;%wz&3XGRJuwA35OT1J-+cXLU+;o=PN09npe0CPCUM^QPJ-O8a?6a*`xVEbSsKC@vM%#$Md$ z@Qk7Ni%T!EtP57&^$Q~JU~%a=c6S0rl#oiYF>Go5z!od$s}okU4^K$tIo(mY)6xom zTEq-KBXyO6GX~bG=5To3hNFz*=Ycf*thAtf-n?4RIUI)UDHtDI$L;h68!W|elyYpe z>IL(9>j%>N=cJYuo>DKws^>yI9rcnNqaPc|=nwUh977))bmN@V>KPS-vnx)|RdEt3 z_B}7ve-ip#=cSLI)>xngMK~IB0*W$@<&O=F%7S76Z|s89`t{YWZ=T=$Mg4zN=DGo3#9J(}1f|M4{zr{>8$nD9N!P7o79bXi2VW z_Ie7wCPf6V$pzMmG%9~hdc$r$z`yQh@N&QAYHw2-ZMc>LhFvc1I?5f&Rc?10y?Fia zD&MCH)X6ZJ^H-wnSP? zl~lGK$sLt-k>;CkYfO{atQFKnXEo5q4?25QT1by|NLb|Va567XuQ^$@rW@vDIE+7K z&r1%M@xMHK4apOOvXjq&l_lZ9pW*2!GR-~#tcd7)W+1yHEjCBGST89ecgr~~P<}Vm zjKvfd%(_bRp$D;UA@k(|Ud2e0QoOQP^`z6|VAdZ++DEbiL?P@Il$#a7Vo39_H!!q! zJglbuIm079Z;xcrX30>-SZeNW|F53yfqM!$TweABHoVT<8Rmj;R!{{`)(!t07} zL0AtRg0Qylr}l+dGUkp7v1tJ|3dhpx@hrw{9m{$#X`#8p%Wg3=yRopqR=ET=z7Qzi zt9aFF4lk&}n_@^kEb1_RcYrufB(Qhbn#)wb2&={gs=FvFPb-SBqHND)I#z_0@@Mvu z7SWKR>?PoHcTv_FNr_@?P@R7Q-G(pE6kk1#@l+7Q$@REt0^Kaeo=1!264_n=U#~dp z{Es-v-QnVML`iJXzpG*%D9$#?7?nArG&{*KtbygQQ`QjR6L(7 z&z`gMt5gtxihMjr(6<%XEh&wrS7ePM(q?BkDl>;yN@PLt4!0D2XEYl?`4> zA5>y*$Iz*oob$?l&OhcLR4|!&Te>C8ro~SrpXTyvSoDe~UG`z^dzH#8%1ZJfkt;KgR|N@p z84^#5rva;J{qw4c%p0%qBr%>D0AW-zi^Ru>`jkq*K`{ zEFoIK8m{AZcy&*-%gC8mPb2!M3M=W>kj-j(6<$O(7gk|Sz?02~RoM)gW!$CdHCUXs z1v^5|7;{4nmZ9V0XLW#mp!~PGtOtft!0P~)IPXZo|DJU7<$5fhf9+MDrT^_Km2JQ( zv7IOBy$0+Bj!WMT;Bs{X)=0`AXG0ce&w!G51{7-sUTnygu&op6c0*Qy*M4(13pbyC ziJg}cu1P^omzQfDPB&2D_9H!Kz!HPr_whW z%p4nOSVvZucgt6;d8#9J_w3vRbK^UVaYEnxF5ANje)m++%HIvxw z>7;gMqkx5Rodp}xy09wtM6tY6%B(4UtqV*L=y%}ja`>dKtSl#?@?BXS&bUA6${P7$ zDob~|vg$<^%UDBYQ@m;|hgYlR@Q8O$N-YQ8k%xC9^B%SSfVJk*0QF1I(GOTab|Xe7=X*${)`b3^RN3o({~fOvgRHmq>YeCFbK zc^|1uFBZ+`!vD(bvK4GOK=`=n3 zl-1L&d;ua2r)Jw(8TzCz%f~j2p)q|~2|k83eOU|s-e@}}>iK>wgl7s~*RdZm_EgK z{kFhdH5}F>4&)1?thTz0V)3%HipGp#uOYcOhLuNBXe?{ThFzp33rYq<^3uP3rM*dL?F^9zfoofBCA&DzQ|sxXNaWGgRGvq`}Eu}k#L zBvyrYoHglx>G%ceN~|#NY#gDpKWRO&1gy}r#9lAKS(w@wP`%cZolhw)hIUdNr!WsIYrC$raq$e6EKl5YzL+NT8d zcX^#&W)})dbs4880}Br0wE6B=tenJlETpfduyP!{?NcycXBJZFslfd>^Tt$`C`l8j zz;xCzc&+4>6WL0sj=P+(bRmtH4&gbD7EEWA(c$UotPPUqXNY<1K7*yO`zPt>4E9oB z`UF3V`jN`d1dhL>3@1u$q3fECyPf#*qcI{~MNCGHa}0T+Gh~4vftMZKnMSXt#`|f#0&ff(PfydoYHE zeaCi5ljybY*&H?oo5k;0E$ud6TG1BmcKN|tr_d_O(t;nb*lsVNqd%~<`MzOZrIsUE zhKj_K>&&=0krvKpW%%?SpAYIgOTp=Ed*q-+*<-E)y$eHET*ll*bR!)kHqQ)MfQ^sz z4Ru_|ilkni?4QE_%B{}t++giQr;Ybl8T^(1;k2Ez-F{eRKg>GqFO#*v|1iNO8s1~v z-&OrQfY9}AESjEQge3_s*=G^+{ZDLl%_3}6P~q+(u^0<2X75DYoVXqmC<7|4AOf)> zJtxe`i&?Z(XdnrLl1+8@a#7vQNwjkboAJavnxFm%{WF4d9j@(UHww+gbDRz@g={%D zfd*`5r73wCd)Lp!t7EFnqsv%e9=2YJgIe0eu3;Q?HCbm~^N`85+QQ6+$}h|Wha5`l zRA+ct_a*05;z^ih7Q2boW#vumIa=K{n{kJhqa`eiK}^lT{J`I&vgE24w`U>YOW zS&}6W(?}`|B}6tR!%$HPT1YiZD}fwzSZayLpb{BuEt~TPUCdxUHg6QU*R!J9&XeGU z1+xWKr}gaZwi$o$r4ba7dlQmZBxkF375}chd;D2t|NaSR=Q2Dthk60^b#8btW@#zj z5SY~@&kbt7ff-51Eg%9pKjI(p7y7Q(!#S4X&#MlrOa^V;z+&YwCo|~7tt^pV`zeTu-un+*8Jq#;E+{^qH`KG9N^Qm_!y?VGerZ@E z_w0#ABWdz4th6?UD;N1KzGQa}zEpuKZ2>1)OwG5jmpp4FR+Ed5yWo=!W9}EUa0^Rd zKYu|VY-LIGa7!+B_WV}Nu=V9X&z9+CvtQXTDJln>c_)dph1dM5O$%EGn%R#PrPS?A zr@h-*I9G2jY-g4IV|z_HL;ZFz!~YsZzwcmmkXL9Y8_h19qy;;zqBmSxxOsOc3zpcH zOmb#I)dhv}T&l8*6{BgH*z?Y%0lQdy!MV)sad{JR@#HkwIGPEZ<)gB@p=5lp*HVt{ z>UI1zk<8x3B76gP8SzSP9q6x2BVOg3eX+)GWYU3MY$yOQf%Pa!`)rqx6M5Peasr5T z(&;^{qqgxY5U@LM_jwjn5PiRwwb!QcrXqQ{qV!xQ%g1Rk3tkMqpUWO@sQK|emg!{E zc2R?4tZkvYv+`(c*Jp{noPhQGELwjID%&CQ9A~Yx&AjLJZ@n@@R9jh*lHg> z&N^$q^CAWR25C5fvJ+@=7Aq+&p`%%BDa@~5o?uf!Z>3Jc&bNpfoMbV`eD@?P6Lm#; zasqDhcJt@$djClltBpSa)I?h!qE4}ke5EL-S<=7V+O<8+>XcZ@dkN=eDz3l^Q|;4< zb@E2qcAAwfp6lz_4Sq>_cfJ21*T<{J%_3*m*K$DiK8iBWvk2@}&z)xt*`2Sb!Ub!K zl5zpY0u;YB}`>d21{(wcv+c^#`Vp zEqquL6uAM)98=_vDswH7bHMZ5)NN=f@md+lVSJJj?=aL}=*}m31C8^rI)MJciydg8 z3z`_N$}gjd!>U{s-2`d!d!m~V%r;uGy7^3#OIsi7(p^nX{CkPAy4(`24AtdYNPg92 zZc9&c%G{9ozEl1P$uXxKhvbn{j)(y?Q9x2!K#Es4rs1z*e3}yPG#CJ-vH|jIC^#}e z?t?@Llxw2zI)QR$(JkM(X9JcIC|AYDdx7#NNP4;Co`1*D9hY1MAIk>GBhcLHAh|k{ zyFqeSB=5TAc}RkSPGB#%PnJNS4zOm3DBLv?%e8KW>OP9qC{!!X3x!sYi+ZbP^zel1*XZdHz= zw)x~(JR{3%PRS>i=k&fKzuX#IEMGE6r+A9DfHw(pmd|JvWR&C?B~rX@Z>f~{5N~OY z!DbQi0uDxmoPeZY6h>Af67VjdK9TarNUlf9#jP(*k#vrde?>Qyqme8iseoJrNwETQ zdn7{($lL6N5uUv;F3VDYWqhSwci0Q`TR}j&kg$wiG8@Op-z&xcT($xFqQe#L0HrxA zGX=@4vBD&5<+-f9X+N1>pL|dX``#%lsqz4cH(R!IJWFtxp@rp!QVYpQ;A;uw3#|bv z64sp}v zlZ(nP=rC>bGE_5DOQ1(ZWoH36=6N}8$x48!$k^iNvM@H6D<*%!$uzx~%pGdjoX7AGSe_#kPtCyF%adXasiZWb{tEhct`Gi%5n~%-j$?|f>PVc8u z)#MM|+?raMT?fB30Lk~&(lvx?kKwd6OYbaPuR zIgOWXR9o(dWKnIA8(Ig%5|Q;(K||f^%DqtYY+ZSc1f9^FTVK8^`9X=H#SP`x^1?%a zC&{e&lH7xLw6qZi$~@3WZp~lIHQ^l+z<9yj-30W3mmFAH(vD`b3t0dt!Ff-++m|vi(9;TFNi5siWzWmU07odyv{fF6*yfiORH++p!I!>5Eo!AuU6y zm0HVPbA2dG+gi)7{99$>r8aVP?bk_YJ&MxakbShUjT`}Z z%*}1&0upypoP13dwiK9fOT$tQ&Q3J6tt^aiW?Q)ptS+JLWU+HYkqXqOom`!7-&VAf zg?mEOi+)|M%J+D$zAg*XATm2kYk0-t!D4X>gQ=ire1fj~1|(J{^?f6|VUbsWj=Ujn zXqux=><~oOWiR7#3lEgB$41^jwzy~C&sg_ET90bfz4RIKuav^`aRiH*2N z(P?raw)h@ZNt27R`M0P;n%pZX?KVe&V#N6h2fgAlVvJaC^@6^_#^%4!)Jgo|uToGm z7mZGnBh2uD@+ii^nf;mkULt2iUa4R_7L&mrjKnS}zRrg1>tg&oaD&6w70`WPAj+xi zV7Wl*j5K6@Waz%$#=OTE$H#`|>r?B@^-pmVV;fIW4VN!XGOqFGfs%2Gr-LBKe4k0ie*Q98GFI@8K9`J5JRKq#LwWwt>XH%S z8zvc(_}g&F7{kAgkc{0t9SM==8zmVh`O6oQF^{LCB_q@~Ml$X_UQg=h^4Aep|3p z`{AK4THZBW&WG}6heJnONQFm$%`c>^5&X?8G*bRj<{&N}Etg@3?$C+Ra=uF2Es_ap z>f)|iufwo2nmn1&I46UOkC9{EuuC?~`5?$Ir~&s0e|N{C#qyxV`Y!J@2=+u)r7<)L zhcV}_^$jR5j0u3&yIA=D;=#tb`T&363Ue;{$d1edNs7q4onz&Q;Eh()ooYqhnK#GE zYo%}-n%X(g(1vmHY6z?Wt#1MVK*U-3h@TA4G zFI^rQmLYj{Ya}X9yv7*%V1dP0zg{5Eglht?Md|&8a-qD;g~lzEli8?0Y1=}%1zY|n z#V-Q;1_NxmNKWCJ%IZb(SB!y0wEPjA1pI5~k8%~>y>lsa=O3xvQXvD(FPF-nfPa~; zpOF1TADverFP+w{f|i+1&##u72l73W=2aTFHR^s`j-sWj`DVye*T`oy1eaXeAis{H z4K_k)PN(%7dv%li4QG81Hp%b9S2@mncQeACIWWSe68|gL+GkRWZL-0oJB*ak z=8|plGU48SZ-;!8=hoc`C1x@GvQyrP4k!I4AI40WJ$8Y!s~oCeO4}vpqf&c>YJPVQ z-{+aN_R8mEKvMhw_6_M~s{?W|K7XkPvG&BkO47N5@`rdvOhzc9FvoCkfU43`Oh)AgI%E3aSj1*z(-?` z3mtRkad`_5EF1r3;9RrD3Hfa)r-jdG{RKIOemRLno=(2Y7+JGxawru!C1+Y0K8ido zzkugfr)9X}co`pUIW2Q{iTjM)2+6fGauR)Z2KytC6;GSaU>76u>)Bat&I0*xE}a#P z962j0CY_Ucf$rzTKJ?r<`5iwd&cjC{_Ttp`Ja$a!6mUU)3yBS2Fpaq&C+5lsrK1<* zBY858UzA592&g%-EKardEG{)kEUFgn_yE70|2l8ll1onlpAv4 z0F;0%Qi6)p%Rj)*_u>t)`@L`jYHm8UyD3K_>3x&;WKOv$x8SsO{SUc&E^Mh@4M8W} z{)AG6k4J9FzaW`=8^oPXZSKg^QS;6nc`K)<_4nj>B&YAmqw_T22H_37FQ3bkiB{?3 z2Qr~T$U~8Q`w)A2;Omh^&yTnQPugP{K@s%EV*zTP$D)U+k0Gqm>6gdY_)9%aRb2ngx|sa(={AU}MKahZuM@=jQpmGOfSk3{SNq^|mju{68pxT_p@b21;4G zH2zY+dVzjd(0YmzWe|?U%UHXj*3j#vWY!27r_owvRv%9&UJ?1=lQFz$1WoXGCJqp~ zL1a`-@thBjRm77APi4hZSv)189D2IUfg8iMh= zo4NMd&a%CeO>bdkEhgJMmY~#OGDwKpbW)zD_QjRZNoCYPGqsp96Sy_wiYp5^QS2z8 zm`FY^snmC!k&G;|&_U(iREpB0l1kg4?Z5i1fp{QaVWl#qHBuFtSxVU@ZK3X^l>?Dm zFfIrwY_Th|Ab^f7v*g*r=tK${8B#|1C}{f~yOBFqBW8`V%EyXpnVrAvj=8R);*rp# zR7{IAuT@g=DGY7wdR-|@$Eqo5lvPU!;eG4$b2Z+#Ircf_1($34KEDTV`#!?xlPR>G zasbWXYku=_J>|ac+G0ETwk!}u%<9dQlL}ghYoV-=U3<^@f!lk|%xbM9=t0vi_;c_e z#%$K@plp#{%ly=0EL&pr)$DDhI2(4F`n|36;wb<~q?$sUEObqjC@TRob@V-D3?KKpSFD#$sMJSF5S8nsgahC@ zos?we8f?2U2amVL^K)lqkyFg}m(QV>MpXeovvx`xHLj<0rdb~=D#gB|xOh`Opr+|Z z%I~5ykXy?t)1iUl;mB3#Qg0;`Jw5ELtl!LjI-3eAHa0?QzGn@ zEyCFbQ`vq>Pgf>)8{`)ysarp#AZ_iZs0{xYm$ZOkQ5g{@nZ(e_; zA_8U)^;dp$LgDyg2)ex^d=NR^M$?@kiu)g&IT;%$W~kCwnn%(|B|oJOMLZ(5zvfWo zQ|`+$D-2gY;OO~!gz^TQ*C@mSqzk4pLHR}teVi`oTB-!|m^?sE)dnc$x+xYmn=DY` z%&F6qk=EKAGfio1_MWNSlEid~*VVI?AQ|zCTjnY+R>o>dWKN%sMRi9?sU+-2_ob9_ z4o5BTkioU0hQR9NxF*F1)=C^U*yr>HBFh&@i+)sMBo}2YQS!?QwhOzyRw|l<<|*3{ zqDX+@1d_4~l|GVA-!IJRCg5LoGh)3G6A4d48R?R4+uGvI^2=45Xans#MD}WUvp|f7;N3%8PDk?M$VanZ8OnsoSGb|8Ec| z0fCD7+XjWCnzbB09#$5J|6wcO;bqJ?!p+mQ9D|d&6oOURg{Qp$oNLF%JFk?ZtA%7YHI9{C6n;U83f0jMycxVJl~1>e zj%-xCRQ($zn#P`16sMav69giC^BXMa>YKo?M*ONoOYjcPPzrd%(Yj-`#7REMu}<>k z^Rh~gUnF0CNK@=mJoM%f4=?`vWKsLwN~D6IVu{a9seqtl zwv0Ea)9k%URk|=;i7>D4RR$^lqB%*SO$U|Ax!RHsDILgMgUKCwNGU{dvlQLQy)i&p z3>n{WS%ldzw;WPlS0W?uAro#^Ve58$&V;Ym8$s2ND?OzMbMbMdzJ!nlUywb(+>{uY zO^GgVkWGp3tL0E4)jOg1Se9gVJ)x9QYS@h+tx% z@}sq~7nPDyB!y%tk-->@)ZM4R|K;rMi!cXWRO(0psKR-kFPbthDQzMnM3>wffov!I zNMeOWQq9XsLbHfGM2c;Up@2w(1*}#@L*`}&!R`aRk@%1UBn~!NKyt7JkP!k%+Iks$ zK9bH}R!YiI-e~Mzl%E0l-Yd%QNYbw=X;P$F>YDQQdo`~?=mJ33UP+SuUK>Y(gVp5! zjBKaw28V%vcFZ&$D>E;ckpv08tEKA2M)_t-wLBuainLN|<`SL4apZRr9oRtqTd7qb zc2~4g>!9p|R%&(aK0%a6lGIvFlqF*$b!x2^mB!N8)~bl}_^q}2i!|1xHmC@poB5hr zkqdaOt=i6dO`?o8Y9LK&s}_I-cu8B8%VR>drc|Y!+DFPXm$XwW$uW7%py*OqensRm zq&DlIo)H^+p(H$bQ|-@XdEbs|C%(Zr^NzYH43hDOK7i@oEV|GKrv=bS_$TU))SPyC zd@ohg0%F$_Ik=5k0r^E~2mY7K%;wM>-8QV#P;|4M+TiziVQ!E=&uXr9_18&T@ z0LUU9Do}m5#9OtzTPPI?6F`A@Fmx#hB0zz=OBJptYM-Wh-B3>8vV#W;gsjrnp8|>7 zs7qh97_q);7#~AKU$upmS1sh;EKUkFy&_6@;{#gW7jy;X=J&oT&MPgXKl-WNLUYDz zBd=F~wJS^A@_#m9`I!U$-^Xi?N>ksK3Z1p0KJe!vee;oNhD2j+ywd|sZV&JsM zDU3Q@QeDKxsNU2dullXEJc6v+kfU|naQULP#({%S)Pn+f;=fS`<6>4yG8$# z*FS8oYrvoS-|MskKz1dpnE$O(t~wk5bfmyZ4JCqyi8zChSQ}*ebBtQD6IL+i+yOaj zmyaz_tXe=Q;z|5YX+8xa?j$~dqaHOa-?$G)j<7fbIL8P; z`D4`rG2plu5s=IeNbx5gye*!*fploB`eK-;5ki5$V|XZ#H-M*9>`S#8oNQeusujj} z4r~NJxsd@{6kfKM$Lo=_meg4CjZ`VRUEimGfyo| zndz#N+K*R1#~!R3VU;}?ulo2Bu-l5FCKJ?rC36@`ZtvXPO#cot&u1DvL2W4A<-M1n zsicat9CmxLRC}VDXpNwH?v7$9Yoh98vv$$NiE3jDPKe*tYJN|Uz-g|5=79dgB(<_V z&_GhfX@teI)H2kN)FRfHgecif6BT>vDJxWH?X6+g3Hc47Ro>}U9 z+RjA)B#gRGR}*N#HkF?_FfpQDjAbpNqI1-*P%vYTT8EupNcvn=Smuqn>TUjBb)MRs z7aKiKEy-~UJhjoXc!S|qgP?`N7FHtYlW)|7+!GK*JHJt*w7UyY9Qx%pwNMV}q{}s=FEHW4VqBi3a`0*By z$3jZp3PHY*x^0CpSV#-Ds)LY}{Z-u~4JT!rT2-1#&u>#3As}(&HdVyi3&Op$O|5{u zxb2YFAd=DB)uL?WE_20pwKX@khU`)|A=$eN;xC<+?1mn;fDY_dpYyD|vBBYe!|U>V zD?tpcykQpJqfU`IS*+Wy3J3l3RrPjM|9ACE-tghy)%q;s0u?!c7HO z&@Y`5Cj;&J{t<}!Ln-5g)vsN@H;!nXIH~3jUe9BXyjElnKv7PqBUmB-WZOgVPqskD zAB$-I8Fe%t!*gfV!5sYcXVr63cx~Y4(T}wCU2BR zKo=8^((HNhwz?YuP2b;9$0D$aG9H7cG`Xk#$_co@eYLE# zoL;)mi%{$Xb&oweVn>y;6d7NZn4RE<>U?P$t$L`&W0`#zp%o|nktH3<71PR6{YPqH zHheMd4AhcBFfb7skBW~ z92D;|F73|1Ry3%#{bWS>5H3*1{UWw8p6H-jE@KK^c4~#64Sb0J?GQxvf;cT!T1Gnp zF@~mrnm7*kMxgeAl_vs&aLyx~ig^(>SJkD}k=9bGORH#)`$q3qvTeA} z#lpcuu#kjQ6h|MPa4YlE5V`iPxkLjV>55zHhOXWS*6KWaIO~G7UkdHZJ6k(*&DQ2j zb54jB#Sjm^CR9u2h!-s5g_2qvCAQK$lpLldx~&s#WwEO>GWSrIFs-zSW&kwY%+(nD?Yaer>Z66E*c|JlbYms(G z9%Z*DLTiI4I~>J}0;L?xq>fQq=|az<$V|#u$s%b}lr}w^vc^Yiko8(87rtdyQKu`9jnbk&B!=yVxCnaR*2-)GNpC2+pEp9rJc<&{L)S^ zu>~~VXQ8@ky!IYM{p@(H+`kM2gjoD9XSQk-)|TWZ?*uBAptUcU!R6sFImMgcE!^K5 z>n+)zKfSu3KhFBhPS93yS^s(wEuK@}z#^bLu&BdDHE|^XW?%$V)HTJdg>$QzmclOW zr8g6`aQ5?Fvv(r+g@yk}3x6TSpTu9A;#y7i`+gex2b4>J<3c4ZZj-YN)e>421a&-L zLQAxTzP+yeLLad^{CxJH654mUhu8`F()T5`BwH`WT1_H7#%kZDhJy5bDXkbgypP^1 zrM<|^bXtpITvAj9X87h`Y`9LB(q3T?_EMG7T60YJsL~n_dNst}+_e z|5}yN>Vi+sD5Jgi>=ouKs|g!~pyX?1QR`=_TuvLp9_^!_%V}fLR@3qj3eYUA+Ch5WEgIn^e>Sq-uE>E*6rovUx-QcI1T1 z?k9LGmS9rRr`E^D$ZvlX`X?wPtCIFQr;ryaYqce4;DeJft@e^Tn5^vsxQnW2IFgOR zkE?2H@xHd2R)NVDC26Dn6UZli5(4`RvK)@sc)~v)-UaTKi{{S)0yUb2`*WtIJ0?x`|er znl;vH$NX}Eb3P+K;{FiR&ec+G7Xb}19Nb&nSWB{bfK9x99w3N!0o`h>k-xzY@J$KM;*KBaoQQBv<^gs*;bCc^&9$PG z)}i&AgINM5A(`90sXw@S_M0hINqVG}UaXhf~(8+Aq(ZzKt!k3I2{sQmJ>faBX0fzO2LQ7i51;L&TvQCBg?!`9Nm)?$*)dTqcyf`7{Oap_u0drkWx z_>1$oDx9Y(ZM7c?;hY~olN%0{_7P)iK%p!m+)`=>=Jp&c|iwlY&MoV zzp05$_?|ZR z*%Z>_eQU|1-EvgDllIa-PMugSW+!O7{u_9niai4MiqQ)x+M{Rp3kD_>!9!iNid3?T z_69b`BfDtP7*@ZoXkmL7YX#%`Y%A|=s4*wHYPIvOVR03a+3*8xz9h}2+aFqLK$&jZ zFv{o-Y_IO7@e@!(x@$!uW*_8R;*tq5mln|f-+kbSwQ_P%DOL(=7^xSm=p z_35Q0@!E5GX?*ieNgrv8ODy_bY~O+eYe{l^_q*sn$lw1g`xX69CZ)Hw6AhSqduwxe z)Ki~6+K`gx4~hnY{S9PU5L-84COHn+uV^6iAQk^ao5?O8q-~#Q!ZvgF6Rlmea5-4) zQ*hA?+3=se6=0A2)KYTAX^Q!uYRTH!G3#Nb5`zly8`v^szj9)iDnxbqYCJsf{k~8e zw$kvvP-I8Y_kFeE|I@t(zS4RW1^3fDn9jI<8aFJOjr(b9bhtPI2W!n#=`gh&4jtq$ z4IZvdmNuG&Mqp{+Yl%_XVhOWzYYwv>ZPTG5s>#%R}3dCXWX2IEd2t9=aM628<9OTSDS z$MeiW)HCV!=kQ~ov%#5Oz$i!?)v z7qLLbXId=Gy4nif%Ke!F{jsy4`5rdEK%$_l2Xmp}95&C+)AqUl-3=h;mTEoz%jFWi zmuc@vljz7YE$zuWCQ_C|J7pUt(c~3cbG`_!tk7yo6LD9B771YMn%LuiPVbmn6JBV! zsntX7LsLumS3sJLS3|Wv9wH9p40yAa1whz8-eh#rb+rH22m8lg|o)~uTeNPN~ zr1Z1_Cj1UoxSJaNuB`_}V@L&@|Cgh|b#wo}njMwjKTc-wHSH^0+HlnT{<`LbmD2q2 zhPIFs-kX1D8*1%?Ax$@8V2_1!HXiH%QNK`1(~tS>fYz;EbC3D$fR@u>n*9nnfKyw4 zYClN($#Y9vIim9KIl1IL3fNcJ;WZ>q=yeR z5%VcF-D!z>Jau}cH4NbPP#)`)NJk%mB`u`AkHmKO)*~&^1>+1q)}W_y#( z&6Gl(rWMhnaRY!Jnk!Vp*m9N!L(>UW56`PpnN2hu7vueli7?MP^$OCznRBytpx%TZ ztRL^v->~ozLCzpuXeTzMRpewjAV?SPDm$|v9Szc-YxvZ$XDB>B4c695nFbnae=wyg4f?#Yi0s1Myqu;{R7YNn6+17(9v?)yg37G@J^;ZMIH1`zJ ze?~GcR^N}LQ=HB%2xH@PzXhR(*T}XY{2r&LgpT1VIXNbE`xb?}u^tqVful}Vk@#hKVpYeL^znh^N3Hop;zXj(3Zlc3kc-c50 zbmqfF^e%SyHjpT(ZdpY6c|86NnADnhiXYQvXI^_sf#No zC*#%Dx#he%w{7(Bla(-fK%5#; zB0p5q=LFboIB0ft{Um5=a1Fg2wR%oJf#<5#^-jt-T=YQe2RNhXVFNwE)EeurO6G|M z`WdD?RuJoLe=2Q0uAv{-q|@f{+B#F|wI=#fGxL4D23NI%Q*^HKmPpZ8A~~I+^CMO6 z&U$|&BRlKgA*t9!-(|klRu6%0YW8dgEFkmx8#+H)mD*l^#eY}`KPTcvJT3H}toHgn zd^_AhZ~C`yRo}#5&Y3YC^-p9(&`)|tuO^%Brg~GZ_`co@E0L@9@Srzvt5o(CJsH%RTO z_h8E(;EGedC}_i+-Btfqtcivn>do!IG@BtlaSc+?$9fZTcGF+tMAf33-Wc7@>88Jp z#MvE;EuG4A*Gv7EMn37T_p*zK=s~a{e?Jb+k`Mrw_6cSvwue5D_cObPJ_;?D?x`0- z(x|7tgbm$Ik9+FvdD@|uK9ZNZ(n}v9?%9?2g=$8$e;aT7!Y|Dk{gFO5I-B%e#_ZkL zukOhXlzaGIKoqUsrUy{kY32-m;_IN^dRIFz(8h~DFi;2z1O@^xlQ|FwbSXd?AM2G7 z{&(kN-3NH1`v~+5=p)cGuMg1U4>J6RwyyO7di+If^!U3I=s|Zt55KAV&rkG^rBl@9 zQ@t@;bdFYk3XC9)=_|-!NMF4NzW&u$e=+RuLnrC|fP6V)X0vzGNB#6JPu^Q`t)D*M zw%0s8m|;bKU6_Uii@`n9F6uf!f3<*c-IV1w9mnI23T}v%c~aIGLx%_G!ik(yqf{yw z!x);Ms@KY^a0nv~g{A2wY-6RyDFnvKm(uhZz_@uSO`k2X(HS&)ke*~)4mH1^^IHx@ zol&%BkS{C}tNa4bwMs=Jv)2{TDx5TFg&$ z;A}g1>qz}q>Ad-Pq<%}&j==Vh8#rE?q!*#M@eo=dRK$waV?UjwDdY80{`b;!XS^QF zPTwJYf?fnSD)tVXGsPrs7-Zq$J+1|X*rt7bUTH)1MlE3c82XuZqPP2gG183-k z8KSUJ_vNP)8#_xBqaSDKtvHyj+4`D)p0?w&_2_@;&84DW>m#*Y+~Sv?yg!1dj(n|0 za!iOgsu_!c@FH{c;(T^qo?}htjs1FA`e}~-BAaoRPR!Ml=<*`nm0jmrx*j)ap{`Qr zxq8um2KM{8Xw7OsIPgS&*>zu=r_Q1RJ*2nPR-FahQ8avk zUX*_RMo-Y@@!M~p4$RYwQOLKTu{;BL+!2~hTV!kgtM^bbHV61`^`iC%fr$>k=z;X$ zTexv|^L`3i&DQx&7ZDga_!;t@UO>CTi$rixVrfUZF2Y!{i=-lQIteG`Cr3_L_AEQ; z{`Xi!z!3a(;nZZaoTR%C*|F;i^LWi+%HMS8D{JxuuO1;mluvZenq?AiO2Z5$zldBXa0PFr4j$QKwqfc z=kNtt@B#NuKBYl4bD^H3eRdAm%>g}_;#%v00S3Q~R4}D%OjGSeU<99?qrQvu#@a+) ztpH^%$vw?Hz);Y2(qcW)o;NY!PtIFQ`)leVy@5?zqA}2xMqQU!=(9VIqaT)Fx$Zto z+n4A~xH=Q_qeZq~u7vuY{-e&X!8Kbi)z2!@PSjFuY|WK z53Qc^lYSxBA(LEW;f?#7TRqp;e|StZ6cNd4r@2Tg6ROGIqg*i?6^O0YlWhG?@`j~& zL$mceoRAaxUH#R1OX(2JT&+I_am-wU9q1zZc@5;uVhUah>A1)&xfbFM+pO1r))TOs z9`v(*N@82jneS!jF-k1goWUEtFY<$RFY@3+gdyVi86+UyX!a(krVGq#n;>@c5V1X9 zHvM)BzQ0>IEX8K{&)u|rv%XB+UD|4d-l9+8 zTez$(P-FbWpPzdDs-J3^gE4PS3t@I@Oy0N=`W((leanrx_Db{{Uy#GUV}ymR?>P;j zC<3ze$nd%QQ2;@fDR!9&`|0;>dZFwgc~g=c7!upA_l0k0z;-=a+G0-L4*7-jhaLJB zzT@hdiERMH;nYm5_v4)U^I7YOqe|h#MYA#>RA1T!b#^gz-KE#IuQvsaSEehw^lUe4qWrL2Qb^#iT<}4v-=yzM;1Ak`N6uPeR6hc?cVF&iMEZVml7$Z}W@d zD;%~KtH?|{tPf?|FHyh|ORubcL@$90`rkjIZ;0lu#Uwegmh_7F^^LKZGq;f?RK25m zYVOY{Xyp2Q_^AG|eVeeY)$TYY47oz9#V-VWcufD&R?+Pu{s06~WGKZPxAYeqOt-oF zI4l|YtqZ=d^Dd+KcIi4SILAppp+B!3<3o3o7<#u8*1YsTq1VSuZa$&!;e(%gQm<1# z7g=V(_=u1a)uPwy{LN{MmX*BJAu5yS)<{`Gbjyy+#?{4Hy4~z3wh4@%~z+|5gi5w9=x|+AI1LfY|z~zMflRufeW|bo_N) z;z*cyLzr;R-GGF_T{1UyeuJxVQ|!#&x~bR1+uWOaCm~NbXc2aoe5~1UQi(tGa^fH! zA9tKLw5I?r&KgoIa&n3e{6lQoX8fTSjpt+G|6vpui@$i~JjKucq1TEY%Dizt*_-5Z z@aU{0aD8Mz0UAoipL$_W`ZzH9Sh%Bwq*ybKdi|+Cmn?D%+qu(FCR>__!o?s%_VSu` z86Z{ijHI)F>RSt8mW+njnONwL^;Q$J#7BoG+I~y_Dhx$lY=Viz#}xht`5)ib`BBEX zxAo@*#soQ}#9K7MhnkIsNq5AoOueITE{>CC3RnT}EYkrz@I+j;%foZ=$gu=Xuc@2S zgS+tY&$+7?_o0##H?Kae67Edoob&2ky-95pL)DyO4!doBPlVMrH-lmOC9X>qIKv?X zfk`jm!Vi>W3gX;Fmw=oflM_(3d!#RkvD*&7&5TwF83+lrN+dnjC*q1b!@-fw zzw=vzMcv(xAwh6`@?-r+{NjfNUVzu`L`En4IYktnnCT<{_P*rgktSm$=Wx6gV9wYi zpcnVV8L)hc!+Q`e37{1CvpLBC3_n?=kE1u4vuxBT9u+tsB_93Z7q8@+7$0{(kD~9H z^F=;p)jwj+25^Q^%qr#(bIhIG4wUrBP9H;i6=dfbKoPAtm#10-#H@(fu*!38gn{xa zu5*!s=3`g|{Ji0H|E&GV0mWeui~djZH+bU2TMVE}WKqV{#Ty(3j;0tf+>y>N;l^(_ zhl<(6yVrrUw~A*ry`nlR2W8@}Z_ZoA@4QV=o$dH#$2V1HQdst7$6K9Jm^j}~Wi+Re z$`4hF>r2Sm&XtzGd zD@5D@5P}iJKv)_sP_g>}nTQ@ZQ1K32yy3FC@_Ixu51P3yTE@0g^Mx6XJRh(s zU8$nYAl@bp-ry%!Ea1IiR>NU@v@UO$e+0Z=U?YT=1T^Rb0EP83($cOwy7%yg^uSQk z(l&7i3zjBswfH-Tr$1D=y1%w)uf_X63;g~Fk--{olb)beQgTyN1&Ra&@ z5Tc}_DsQ{9H!z#HP*=x*F<%@=>pBy~7b=Sx&z^Z}K==_PVe-P+Br(-|a4ImvZ-YR% z1=?^JsVVW{hVqhIHDpdX-tb`jUc4&n4&XA?=fSUF`hu(zybhe*2YwyiP+Tn&>PMx_ zZ=9D=?iQy-G=Ve4-cWBCu2(l=y7x9hy2l3@WqWvo;3-JK-@pb1QH~kdpA|&^Vdx(d zkLNH>UxhyKjXRq{+x!}27KTxz-9{S;3f`%wje*Y zJfVsMs0J-Caod3*fr_}k9%J26hNmbzC5SwJgP9jO-W1Oe8Ev|~!JWM=UEJNFd0n6h zG=s^NtjU!Cn3!Jh;Oyyb$mt3v()bt8P&5K$;nXuV)LBMaY>oB-^;+qU4gKU|f@QamSUKt5;Fm`RiJ z{7lc7TtCw@lrH3R@}G$_o8)(XFY%w50$@peP-E?@x=TemztX|$YvFht9gA>AOH=4X zh_g7gPjWgDr_9X*Vgpbv%2`9&N*_i!U(^;&!eGL!!5ocp3M(^*!IV2CFos|@@d|dVw<17=$1-Qh|({BM=<^wa79(XvQ;_^8zsXr^= zYyzRQyMVJr>pWV2#{Yb$@-+MBn4VsL*;kZW(8-16{DMw?-{k3n&T0TOE=Iuna*UJf zEd%&lIxUWIa!1n67-uus(c=m^Rp#b*VEZb7QYvyhm5XyG7n%ax_-Yxd??sGdua@Gg zjkQq62=~=B7EPkh~oO1^%)GhCx)142`So?2YGuWM@N=<*Uig zL?r!_oe9YNI$2cCOm_0X$MeZxBJki;adxQmbYjnyyUG5&vFrzIZ?{%)w&2@bZ&fFL zC528@bw)>7OSDKe2bSpDpcM?vIL_B*ST*Mxh5W3?-f8<;kIZp3bP{Df?|d}?oR(Qk z1W^k=@#g0}=d5SPV%l*J{-2Dq8}k2ToM;F?85dRE*`6a^#63)@?yL((`HAXaEYNYQ zJEO&KzJgGyIV=glf2f%mf7u@MiZz@+pycuYhrIU=kfK=rz<2l3%ihow`~6mrp6;%yuCDH`uCDIs>COjn;RT=tF6g6@G_zpBxRSqDxBLRBvpAJ1 z_|QIi#`(Y}&rqR}#0MNrQFd<+$x4K_^pHLmgVsbf$M@{k^^~3y(o9Kq}ffwuM$ zKS5jTSe!OGR(`J<+HH+rv&Fq6{zA)N9yJhhh}WJuFVGXhOUo8Yw+)V(P0{#t;on= zp1!c5H?iS;rOr)Nbh>d41hV=39>UrL6Y~GJ4sy0-CBvjLF~^I(Q){55Mh=s9W)-}8 zn){=<>+S_yo-hJ~*mUr8>a&rU2IxZq%2m<;?e-;nAd?Op!RZ;hN}>;Srf$6o-*~33 zdgyA2@3dG)OAUzN8!;E%irZJUUvs!MK679|QgS7|R|j zg|#nEzE#DhjFn0OQZ<&(tgnuh2B6XW_@g(hB4ah)B&tq?WRKWnBV;&cr_&Y6_i#`EW{g3aDhkG4^a|UmUpFURk^ZTs=ufO9ib;PXi$|rdxma@i zoNH%qj+2_?V*c!(pT{;u!Qv+NK~$QLU_?xsir|$Pl>a97V@zs^pg~-EC@q^8;v}2Y z=W&<;rWd!dPU9q7a^Dl$G0ZjM;dk-ysd!knO@%>SmO&T8*=WEcE}UCNqWBqi&H7AL zc%(~#D@no?n<%LQkBFcRk3ZQiXwdHck_{Ozbyv0#Yne5SeIWa$zUM7MIPw86CHbJk~? z^t*9mDl}c{iPM^?n`TIt(s6`CGo>eUPssSNkBKdrB^ATx{?II`&+uGae)vc}d<2h_ z=Fv?>*`}VDQu1gGmWPAO5_$lx#p63lk{#a}N7qIMY)m++p&P{2M9pfRV8`UK3(BQt z&_?!Lc4fKLvc5{0s1hvM(a;bTnOp+xvgskETp!>_EHa%pRfhgXdmDLkv!+gNP z!EDPyfZk4SWu9ooA{~kRgF`im*y2~1XSP(9RQDz30k#6;jhqG;9M+XaH33v<)ri~u z+M6nj_5vu(rll&|v{4|Dk(Gx6ZDuNxN5H0~CIYuMKIo(6*q~%_tsBr$TN@H>wt{Y0 zIpu}gTV=?hF$9frD(M@BwgS3#4sSA$BZE$umcm_2YL{-!%27XCCb33yq>dM>HK-tt zA%hpN&!X~fU2UWl6>mR~l|TW370pWBErkEX&3}MHSA+Kml3g-KYMNAN-3?&AJkJ6r zoQPtR=+Z(utO_@Rq{+R&2ab{W*KFVeFGNr(&9hk`(Ngm{naIOsR$!u-T`*UYk_CEB zAR>Of6?{A(S776JDB@c6x;Q{(c$4y`RBKNKThYS0dfBi^kM(Dsx?ue?sZJo0DO4^+ z>h5$`FG{h&*RKihySb8scBxv=le%RbHJLI`@?h!tz&usmADJf&7oYPMr+@$Y1LUKx zk;;r8vW3@3x6-^(e66$;TJDi+x$0|ho#f>Q;o%6V{Duv?PI?BXp6kt*Iw)Bo+YAg^ zw43!NHe|k3KME7bZpeb2Xu~vc7K@QAayw*`+aa5~9kR*oz&~>ZcY~cgwApiTjU2fS zXq1#@g>Hlwm>M15L}BPlP<2ELc_D+%Fv)r|FDRMyR|WZTzyJU1agBf~yj6S)pa(QAHu&?n+83%>_wvN0CDjQcfck=Ai0S9{!;ThDypr!|_x; zbTNDxtB~$6t$&ZTxl!7bx1Asn`S*>|cPv?nmGx8a;oP0nA7QH5%~F)!zptp2=)()0 zZ@~hfIyL(i>A!i1&bkxk#S^UhPRzjDQt#i1*`@&s#sO?zdxQE(IGYjm?pY;`z#Rsw zsxbF%V>_#)VF(JBV7>bUTfKzv8SqE4p-ZtY9lc1xEn@U^?;`01N_+KxrQ4VFT`q+| zyg7r9VHMak~SbF`i~u~O=(S!1*t zM?wxAC2Oq5DsCxVwThchvsX#guC=`L;Nt@{g@2Deq*(&kwk1n|9A*{t079A}z%IL6 zqI>k-zgrqgrSZci6%R={toLfERI`$D$V$o~D=CMpq#Ux6@P$f>{=^onmM&bW%&1zU_EoZ(uHFE@gA>ow9%&F){tUo;X{?W$FLe;T8-%&>&*StG>=l6Lh| zUGI_JF~Y#Ccb~M=xIeY;KIsypExqc|9YaAs61S+Oy5BGLz)^+N^$$Wijl^;Y)#qEZ zCVEf8WZl8Gtdm9>cQW%sQb+!|tA`|h(TS*j5Bh5E^BIZFSeu6>e}+z-@UYZ8xSq>> zx+-_fL_+RR$z0s@nF2DB*@4Rb+R7qjOYN;##@Yk@7()ILRuy;1X zvxS!dH%Vimr>AX_9y0Du)!!_=ZZxl6vai4_(3GAi#AL-?O|xb ztqT@jUzA$6ReF*WpZc9NlvO_=4R5AO7oYy+(xrDxVddjrsDbZT^KBSvJJ`%^SmT0~ zH?~Rcd^!jScQJ1ECeK;^cBzHw%{y7A?NXQ;p=!GnNN(Yx9BSiTn7(A8+OoL$7|+pMj-iMl|TdxZIrr+GFtP<|XcX_(S=6S^4oBZ)kd+*R6t6AY5 z$q&8Xs zH#YBWbUJ)v&`e9nQ>vgHi-%|6x3tanfTVI`=lHRooay zU%TCNP?`wPPKV%g+sH0I1P|OscK;#CA<@QTR%lz2jXESXX5Sr>enB}W-j#;9K&t`l zXQCx@S~z70T3PmnNc|MF4ZDh+1OXUdU z_u=8&$o%h1IF-h3d7t~``u!WhMwa&h*7acT19Ya1Y~csez3>3H`w+$-hSQi2rDN1B zdmWMZs}L_8k!EWX2YvHbJ=#JO$HgDugG6bm)6Zc5Gj7+YMfr}!X7FQ$3u z1PwHG6w^l=I3xT51@%L{>NrlleN5U-uMIE#O#01Oom%`kv`tf0!C*PY6$}|eSlLiT ztY4_=HqHS0g+Bgk&++Q`ZG#rl}r~72inw*w-`PU^t#g zo&84oj=$A%=396~p!s{8lK9(#d^))Kltk}JrQSRRanraY1!#POJ@=i|6?L~(t~eu& zFRpEass`wFXQZ)pW}G~O{<%D5{T|)Q3W;bR3`&vftc30S34Vd!x2hkR0ndN^nV=S` zH{hRsCJ5jjNDJ%uIzJNx^AshPOl;#Ouz>;Ql12=i;7KgBLO)QpMKqjL%vqWD5EZuifc zVUwqp%AqyM$yk0MiaXImU~TGxfv)>itKuI^qje(jbfg`s&*9&ayB4c{KIw zbIboF(_P}oZpI3YGEMCKdAw1k7v}IBNAQzT?q=MY@|fg{@y%U!Q;xjHL+^ZNVNmmT zzF{4P^7%H$r#ra!kShk5UmuGop5NQS=H<%t2284co_radj+!9JbWzxHNhYt?9!aK) z!hVwEcTmdfviySaP-?MRE-`jI@eIF_hmSRo`t+GvrFR`Ob_m0 z_vg!e3o`sR4q%_mmwRf7Wo%@D%+Je$6V_fcV@F)}o%wZ9x9EXjL=0 zG_|mv+<>ZnpH=Q<`u<7wAFJ&AN7s+|3uSsW{+2>6vaN+&WFHlBkrfxAfi|Uv7Rl?4 zraMyX*J63U>A{_;eI@cLTJanNc1aHmc&PZmIAoV+7(Yq%FO^r<+b>ly&T=noo4(XpzL&YnWIs-3Pb!md$Yvwk%l|Ir z+d!J$`SK~9F4DGvp5M=I=_2`W!;Pod-2u4@!FfTsrMO9qLqeV-f^q~mfb0m$?K87Z2jw070BBa| zcj$FAxE0IXtkCz|1JXAiF3a|&>9{WzS9S`SGbi4|nLJV5rN z3^s0nOxG5qmJN{WgLZ1eK>1Ch294A5H_IjYCi3yr9O4kz%~MAQ$xLIXgxxV%{zM2I z<{4gq{F2QdB9Av7WShsp=UE0QY2F1Ga&x!UyVS8U9s@-Y;SighPzEO|NA zDK+s5d7jC%cYo^Bk+Ml&(g=3hRr35M-;m(<<3#vLI0pLW59jyv4!4Bx3g1^($u86K zFIe+Y@>O^xFLmuG>K`ZB*6ZaF?CY!L*5d6CF%6ws%RK^|F}&T|akP9tiRG=)GG2Lq z_UqKAW8{-Ydi&*ISSBMal@o!o5>&)>Vj2~G85^i9h{{hWq?R%kbDa?W(< zd2+t(ipjJ$^g&FXhi*G8j`qu4KyUuy9o+?TXV!VLEHm3Uc}cr%c$MNGT%4i4;raDA zneQ0mEx)o1&jGziTrYIrag=eNQTq%>>dNslz7@OR?Nrue`DS|cV!;&ooou?1a@0(D zxiO>JQfFt$H`NR;URkvE;@P~lf1WL0T%XK&9Nxk=VPL7#Wg_3 zvob+)Q}KoJttR8Asc&zSUo{E!AvE>NcgkUCmiCL}9?895=(MHg{t%ucu2r?;{Xa7u zoVK@p@QiN5UBG>(OA~wGDIKn+kw3(V3@G@dYDQ}2VZ~cIWX-g!{8E=D&ieC}k9MqI zD|p|3bcJYeRX_Y0cmEb$nyHU!t5)c_)|h$jw9bCjYI4UhT_IY*dyle57t1)nn_65Y zk1!fHvoDuGo!xkb)xS$#gxP%EUGg)g2hXsvOXV@9-DlYIOXcRGGoxGb*R)S8mG2I$ z*o6)&+X``Hun<#uA$_f-kd|$j%C);5ap^0!Uvb2Uwz~=m{SNl*GMV26c=d957#y09 zFITNOM7yvCD{!3Q<1=jV3K`q7si`aE-lk@{V=!2}^7~}d69s=g`{+ujngi^uRq_*b z*@o>Ixov90-SRI+<9lq~8o4LFr}5buxd(za_wXRD1`nwL5)bx=)(56RcSD7*b3Ih>u-1OScM z=||<(8f=pd@?2uFBLKwPv5 z@)uMe-6Z$dBCT12&2l+KhU}C(vZpqyxFl#@;oY~$ZvrNjzg2$UL=Rs+As^2oEL5!> zF4B^U1~T}B(7I0K4)Xv9`iwr2Gj?P$|h8}ZdXbkt58?c}@7wROf`5*<5W z?>;B{a~fN45iu@aG6&gZyVc5rgVw3dyXC!92V%W7yXOV@PKuz>wo?dhTc`3~l5lk%b+JWVA(qMlw6cu1#Qc$ugOhQ&wP$LQN9288Q%%#z3tQq8OyUT zv3k=dKlzpXk|~YIemf}_vLC*d->C(~fc!h9ocu-}OyLD5)o_s(esoeEN9p~)m3Ql? zwLK*dszqqUS8@yX)G4e#RASB9z|-;-8fF`|_q5Erb`95nZ^UMQC;N0nIg1~BC;N42 z&NK2Oy68`5WII-TjlY-W?3(iX{w${uNrCunxs)mf!(ob`*OakgCUf!fm(36AbNM*U zVXKX1vz$dklq--;M)P%gw9m9i=M+XlVODYW#!7A!WZT+OM{kF{?WIfpC}9P8W+!_) z*Zfm{lZ~YobaY!|f@IF!xCdlvo;iQ%y?^AT{>U@mCt07f=2`fcXN@A;Ty%vF!(-ACj*QVTUME=4~{obQazgbb8&>C zi_s9eW@0Hn)j_YZ&=HK#KG^wrp{#Opt`@+3o7>fBu;G1`uEtzjKF*BT>#;*cK;6i4 zip?DnxQfl4lH|EXU#7ieLdq(ih%lGJQlgB~@=%&BcM?(Nz-M zy-6t7-ZXTLy&39YZw}u^i%^!mCETfY8;(8O?V)S!r8q9%s+Y~)n*34rHrSf5w+&6U zw+kIK*m3V8Zdyd~_A*;h7h^8YPna*t$KAGAKSDW4bcRK;)h9V1pfw}DGpTw?ZOMit zu3S3A%jMkxPmTHKRq2>~k*&!@{L^$|>3JXzfi%;E-Vr2PP*!uu+}4uIyc5#wlm`Et zY%85u+S%5MXLPZhXKPAw!Hptd0*bRU`V+*FXY0a_l$e_&3nqev&Y*-hpR|(>`L@<* zF|KCIY)vmh|0|+b>T+#m9B3lAE2F5!SlOh~&b)bYZ3?wz5!gd6@y0Rk%a?E)Cn|p%eorrou(oxGS7zE=7DAzw%E}|7F)+83WL0G@U0`BNXAr_ zL~@s@^W{y_%Hmb)1WHt^PHOD{sR4<)byn-vnb!>k@odztGqpjNnu@iXh)6C~tUapK znQB&selBW;-mglijD#;y&Dyi&4a~NoytT^2krWyNd@!J0i>S{0BvuEETnTeu5o)XU z%)C;yZ`z74#>N0Xs7u#U5l9DSX=pBkF7P%q_pzWo3>b$P(S@wCp}BXmh<1%3EsQOa z5S}QSXG4pdxmaYa#estiK6D8xqz+*k(i#|Vaaom05k@w&1!$s6qPt+6sim08X)6N+ za39YHkL-5W`5u4D++|F2(TGGh8$Es*23dz-6k5!eKTd=id=7QS) zh&8>&{2368*P72D_QSP&l0sfrcJ+1U0FqW*2Obx(lKJMh&}yH~ zH=j?pLbhCBZk?q5cYqGt;1Y}9jf3(pX-zkZN(Kd2dde zQ=h$Hu+6cRtDfcWDsYl)pL*BZmd}NsXFRt5bPTnlDulUb)A71nDgBlKF0Ij+`fgu_2JTX2Xf z75?1ZgVOK+!rUIcEcM!HbB~V3+fyLiD;MY&x3;WC@KtLI4V!UoEI5gs`lF3yN(sWr z=UYCP5MI{X@*RkPoRE_NIYe2t+RCP*X@o zAHi|{(0uIq(T>@hhN*b#8+(U%`#Tq#c~fER@XfhBhKXGahOX!#+1Sg&yq2eK-_>N| z)lbUJ0x2wk4572nzt`m=Y)|Ldfr68Rv@=MWinay$yRkfu@q`q-PmLD|z=k|fJLbk2 z<1aVU6$pIGFncNhuw`h&%WCOO!y3MlU`(bLMzvaLJC0a3(%xbX7#-VCt4%L*!lcEi z$BF3pSixZ^)@(XLF4zOrZ#wd~4-J-+7NbN`woWR|ZEaBHOP@zGBtz%%H#}8ALuxZh zjZL9AF}m>%GR#XDv7zi4r52cr!~|UjgY-_=Y@QCCSDUOY`|lm$2k<=6I4_#!Kfm^BlXGo$g?2pM<8N zGlw`HL8tUe6`Oo9EGnGjo&oa}u}Sv)kda<)c9a@HHmhILP!_5{N0p7V5r|CzyNs2u zsV5F4t8WFv9!J^Wyb<)9LA=mSZ;|F(2@dl`4M>vC5K+I-z4i?#6&wAcb`Hqq!tI1J zop=THpOwhr^d;6VFu`9m&&Qz(&hKBBsMaflRf_|BIbg!-d8oU_{G76x4OwYvlFY}| zpJ|bzgQ3+jq)O*DAk{2LH49R;<)bg)m^t+fv;z)Q&9Te$G{>Hgm%ZtDHqLQV$=Rhw z9N8tC5wCEbZy@ioqBaZC>+$p?X!oElGV^=`Ei;Uv+&Oqd9sLFgc$b(XAQhwNA~Y`n z2ym>;RB(}?;w$uCG7dg+{4Dj=VZmmW#wKUoP8CWDmL*~tYbWY(wYWxS1QFbrukuW< zBBgnNZK(1fSf&v|b*u$dkH?DU;5a35C2)xEB&Db|0pm3_!D>;lgpzinsVBw~jU2Q| zKCLTo&m2Fxnv21KhO5;{(TBlktxi}2pV{mA=rH$9@^Pk;{Bx&AJ*d3Wd`JbZBDLr9 z_np2wmNBi={#q`0^!8tIXmT3U{nvgnKHrn;s}o1qtG!C~i|BPq9{G>6XD+%W%V zY0Il~ibN;IfaJ3*oyMZMpC&=j&?Z3|!dkjYJ9GB@^DLP~vt$+y{L}R=vRq^ z#CEz+g)XV62heQjD-=)k@@PIt(<=%sy%)H}04f2!`q=t}zw8jDB^#HwWPM!ow%GV-f$!ogD}8*nR5}yRVTN`REfw3e@L6&Ym^Q2;FgUO z`uOaLp)xh=^(A;VU!0!{>LxlPa4Pu|Rsz&q>QbQMXC8e`yK}EfjaHb{+_hRXTa9i} zqkbOCLLVpL7nlr2bZ2;iCc=>j*H|Zmu{3+4y->B;#J`koC^gxVxnvy`+9YDI(8hfb zxEyGr-2_dHjR^E1x-k=V#G~ zs+EE`Z|E6zQ|P_b5Ilw$S?WnDhKxDYCznlJ6@(g{E55nDYf9k*jS*S}kXe9R-P!W74 z0}TSTV4Q)qJ~a$=CtO%U0o_v)+HA76hp~)1k@#CSxZQxnTVgA&TfE>9IV9jBRlX$y zFtiG74TfL{mDn2A$Tvv>Zd^;iO;iClO$)e46>tdzTnqs>!sRTgfb}Ul0iU@qE#SYA zFU{F{0jr{dcuzgB2Wp5$H#N>*iuXdg&!k4CgjknIQEgRrg&};s8^Yx6QJ)`bps~i? zD%lF%pJHTF@3*vUid4*vbde5DHPU%i17=E0c{zR)JJrw97Wa)d>~C40$5$_hS?cBf zmW#2?^);(M&~gFpM&!puM-H^~Gp#+&?jLCJ@rJF zY~3Ed%yJpFvN{g4+=9f%hgs$#=rG)p#O_GyvEh~lW@A;#J=XG@srmke+(U;o3iock zx{!Ofpbg6m&o5*bMJ?S6KG3BdT*!_^Egjk1sHL#rxGv*AJfnNp#kXn%RF~UrBC2}J zZW2+ov|n`uzFWu+#6USeW-0uCOQn0)Cq+Rj8=FN`W#bVMRoS>tL{VvWE4yvHr8S!t zwdAq#xMf7^r;#>L`9tMAdPyT0~XiOGOj}ZofTM?y2GzDGSzI zt|zYAs@{Uez-5ej=Z)nz*{CE{PgoX=ezdEVh2N9wC-Ee~t;gL>*{VMe1{7|l?Pps;UFV(s5Bc6HVfU+m#^Z3nC^-`_zpnqPx){RkQXPP-@SLP z0+ENh;Z|_JbqFd(Z4x?v58XFNMb<*A$790Dg99P8iKtZ5PM)M8A6_0aInuC*r~lBF z)N+ueg?fo_re%>c&5WqdYBRyuwBDO# z2VdA2hF+sdtJmwlymRxB4fk%kjFqp!M6~y7_WBx2yCmKlkTn%ZTP}PdN4G*Wf=`5$ zWob6&jC;gM9a9}~i6%%Z6VdnWbP>LKzX)!1K_0Cush{NWvD+WRRK3A83sTnqhkDWV zn@PH^lD1qhP-z>BUsj3T68HhK&_+2(!bmcU%PO(Tw3%^PWma|$zpN6cj&WBdc{eeX zpe8^{Qg0SPMd)%!yi2CLl@gBdnP@7ymD0d(r9}Cr5PXhJQBp2S3c(ZC)SgQ#OcQA1 zT1skcbh#|L>k^kx!qtJ6r7EGWnuuxygd(A!_eM8o$B<8o_5!FgXpgom%d^Ne4GFI&sk`Lii+I^%hoNa#~!u(U@90sD?W2pmvP}aU3yQO8E4l&V<~0tR$IDc zWTYBzv^N{f+&|ITnzFQHT~n4Io1em+yR}P6AvbKyOlxDsK%%Mo_?qG69GoJe?LF=sp&i@O7?=?+ViOwt2(SjzGo zU1rXnRUYl)_=l9bu#;Y;5qoiu#qm!IPc?nP@>70B=`5I|G)wh5U}=$4XHM0-mM@L} zH|A0=9=22&|1o#h{o8V3W=o~s`w%2D8N2QyORLPZ$3L>%#?JrPGVmXl_t?jlV7-3| z%`D$q2DJa5+NNHYjDGd#x0c^B>ymovG<*|Cp7F&RAwdJ zA1zbN83eb#r1Z+G1UCh z4bLDW7rXL2WshPoWF)7q?5GrF{W+a&=%Ot9zX^{mb0{M+Q`;fC z(AedF)IO;X+{(d%UQb~aW?8$}Sl?hZv_|#!EwmaMBJ6207-UTx7Pr+PY0n*3Sq)j* zGX;HCvD3YjCPj|*Rs&FKeuGxA=Dn3B$;!i4gRv&nU>F8`ef(>bTTja$3L5&nQ5mqm z0@kd-#*n8kuUr@JIL69(N0`eWyliK0rJXF&OW29tN~x}e(E`14}JK!%D>FsstcNwsxb0Og) z6sXTwhBP8vjdaQv1@FZ(F?0*k+v(Ex<2f6D9Wv;=i!{+rZ=-M_}n(x`cP z`D=n{fEMGehE^KE>V(yhqdgA-OtJQSu7Z9*p_v8!g0z7e-fldL;iS=1>whkS$8-qC z@odou)m6~95bb5i7n13fV})s)jzmjGS#T!Pa$_Y!V<9d4iw+>sf$gW1>%m4=+_o;uW_b)bgN$u&nGp+g^E z2l~{ElGBwgBF3ld&@0xm)8m!m5@3i9PW9vigiAR|7z=e6E9)rm7NCE-8FT%3KL8=o*^WO_(sL0<9g;N}JG6`~$Y_k`{Tjlzc&6If>#4QufzW~Y6)06```Jj- zHJ(A=5pG1D7)vDYo$JzLZ{BUK(h<>Ew*sL61&E(IfcV&3QwukZDnJ=f^{FZ<@5_IO z`Up@-tqLyWiD@ogxJuRcR18(&;5pb3xLZJrw2u}aVi-I(Ju_zZi!n>0TC8&Q3qf%_}sO}IMa3h?_{=qxl&X~NnKQCb^I*q|YbKPiURVhph! zkd_~^pe`ZOtE^T!Lu?p@KkCt^5T}u1EwmagM7RU+H1`Sk5lANs@G1NWv7W^+Ekc}r zvG3AiM>J`eUpv8YTS;13G0%y{& z0l;GX?#sygG$Z~vV8x7oA|o&Rk=hk_vVM9{?ZR_+DnE_~vZ&}cS_dEoO>d+%RkICU z@tmVQ_rx*H68r|kv|W*yG$c1Bfn~Pkk^LZbZhF z$Qat#Y6v1UAfy3eMTs;(sv4>BFEF}DwH-yA29kgi14+Pr131C>t)N8>MZaMibd{j) zQ>jltd+JYP1H@xqw@K07!t(9NC__k zSa3f%BX3(q{2*WpRWgQs8euJJ_%s9dGabXfKW0tV=omsMsjkh$cL3%hMqWqc34KJc zeGu381xu4O6Pd8XGGO<$6jDU}4u8W z{30!XKb}SZ5&2V*Mz#^r0ceOo9#=N^;R{YN{gS0fB~K7@-(0b&2#pAVQMq0lc9I7b9$mkbe3CR-tLg znX?e^mm{2xuo1#$2#4`F3Zex19Ya%yLMgsz99wdQ(tywZ!yXqcj|mXZq9cm%ByjcS zjvjZi4tIVXxIY6|=Xn$5a#N{Nhr6r}T*X$qT)ow)L#?g@wEb5#i zI{;NED3Vlnc50;3kfZL@q3*-87@joHawt}DfS0Ii}aPoR{n@v z13jbLbhx7E9>5hQ7~u{?+@4+>?9>&#?+JFvKzN*;0QMQ_Y5t317Q=yuR%UBU7*2DKuC?Ts?=&2gYajBT@noI!zwU-@#R1^AbfvrRSVEPT)nbv$1*N*~I9cl%hMQI{z zF)FQ@iQ(%(ss-01s@GJ9UKi7Dpp&u{BOTj2 zFC&B0G|5gh()T*zLqALt1BhY7Gqr2^2Vlj>%&gSd3|PKXEA;MoWD2E4gcs_7FL$dR zlO71Ew+IP{&^ty|jv_1uoM;l)$h2>1@{ZcfmLr}NwWLC408!{68)~Z0o1cMv4Pb>v zu0)=GJ-#LbwgRv@Q~-V%bd!d48Nj#v1ryae*dte}qQ2at4$x)@X`&SALK;F!zk{v~ z`R^m7=Dic)AnJdj?PDN7_DEO!QO!mAa-@?z@|c$H@TxwS=?H1Y7Csj|8tTIhEt>J~ z=BclNpT{cVO2bR_N{qK$(S1@Dg_rEh?V6ZvwGo0t1{rj;-`(#9#J zNnSJ+gkNk|MnfYm#tY^D0@`A18IIM4y(0rR%a_)N7iPdNOT!K(x`xjIESUZZ&opjs zK{x{85rkx#cR)yHSP4Qhr|9?0L>)tj>#XqXSJQR<{kb%+q9gwoWW?|!Qo4ySdv_YO z1kVCRgl2zjyIMu%Hg#(qYO^{}8)Tq=$`I=0R>!|~`6u82UAdXAe*a_N_W8MpC zj=KR>-)IEt25K5YRF+SmdelL>QVETIy@5(?E-J5I&WWZXIO?~0TEps~b#d()m^7jP ziH}hkxF-XupG0r?dQs+ETKZOmnR|ky^=?IadxWo}+|dZj5Fd+hHR2A0a}lzID!H8a#Co&kT4_IMAe2+ZQhe6xW?fG=iq4>FvEMVdhDp5OQU>FC&R73jJ zIS3jre(jKHJxF}ezfbQ{uy^w#59-}AQ{)uRHu1Ml3M?k6MAt3r2p5*YYh@bWB^t(->uGNkwEuDUGmMM&n)8HBV_ z?ghM|2=78zAECf|1aUfYatrYLB5Z|v&<=S8!ghK%#G$2=22)pcwLBW(Kpnt(#0fD6 zggWWcT^eJe0Av}?qE4cxwtlJhP#lK1ez++;(?-bTmy+q8ON1%`EF@0xVgL(w&mG7U z!-(=uWWY89tXTAZpOL4$T$}EBfaT+dY`IL}5&-L!iT{Fm|ucUGLA$NFa28KS%}erXEDNi;#m+8hy*_z>1tntS&X%&SeAs5 zE+i%BsEsYOnQozu_&|Ei_H1%wsU22 zP^XA0@hl`KnsG94_0C+)b**}Hb-2s$EO11a1g;pERIY9UU!y~!tN+9q3{eEhHc;V&#DuD?m3ZyX9N8P?yj?jStMBcD3?%-hv<=ci~z8c_RDkpT!7pmR2-^@B*b2Z>Y@5nqRA2mZu5 zVj&1pO-Kq zE~F2_vq*nbOFxQqZYW_Fnif1_^B9kYq<(=}^?G{9Ql^+k=$U>Of`IT(tp%)pTx7xy z2CPtUPo0}C)gQ`BM|dxQNxb5hN%$(jik|#;u(7{|RmT@Nu@?ctnjd~;92ZSW91+v~c1ai$3pXtZ@Qb#M6L5l&eB^bRC zp|&JV*78r6zgb(%>kt=A0MGCw5XC5{&dAGz)%&tv%%J;yO7CuU`;%sPVA4T5vJF6uITl)>s!jR@&o9>2onA=VoX zJd5EP#4~k1`spQ;{1F+{ldna1F~V06lCGzpp0M7RassxBAS{L$!OsS64n5!}jwoJ& zG}+3)*04hmDh+WJfM5YDuI?)4u)Y@BsFMhjqv_#rPfG2gJ(Mr~g5&{^3%=0uz zBDPmY?68iQVB}`N>$S3eX)Hz`kt16AMm<_X3!9*V*li%D@6-BP{#nJdN3X@1!ll3= zZ7gW4LY&k){e)VfXD%6Cw=f(^D_FukaG82kZ!1C@;(BuwEE=kiZbx_p!eBbT2``w; zLNhW*cOAM^^#YAyr*2Rhnw^M}Is2bWSYc9W&}8c+suiiHPx+OXun_X)VaRtNZewGU za0&c0RJD$uLbYZixf9|u5#EPz1VZ{13`6 zWe_659k{;$S4;y`uIgarT2rqDcE8I`SKtN5vCMiS#Mp6;@DYx^09yrg9LHo9f^dD*bOYyiQ0b;dVy|?U6JL!UL^@$EXR0 zsR(I?x(T6Xl^FDU|9KiQN zP5UG4j!?iK1oLE3--pnvOHT?yS0W>X4AI`lL4W{zS~rg|P}Vl{%j z+1h8E+kcoAH0T;$0dN65;O9V|UMuv>h#vy1FbXrb&ByBKie>P-7}Ejj*<#R&LD~%& zG@UF#*cYM57l_AD&_%=%egns*)!hD%YIpNSAJ=AhFkpojzdiDJPZCR+o=6a4A;Kd7 zEaKAzFlFGk5OG0>;-dj8)>fJ0@GxM7>Ll1{fEDpZM>F>09Y`Q;A%1gpz$1_+`ab1P z&wxz=R^Vnbu`&a;60q7Fm^AE0rk?QO4B$HfEY?Dq`@xNl)yBR5FJNsMu-gG!Y+!FJ zz#!0Y!aWeDUtNr}kE;XcdW0dsJd2PlOhM0*P+hTCBcxeQq}NYsghj$40MJ(J#F#qL zMEZ8biJ%FD$rusog0Y&omJbla0N{vzIT+96Vy%aeRI2Ew$&Vtcv$%$UuBJ!vEF6Ph z;JG~z*C6bpBXBPKiGU+pTNHE-I8_PM)rMQZ7-`_YApnTlZ$}9~z%1amMP7e|9XV8O zICZ*3`HcWz(*W}DEJlDZJf?-!t-EIt(o}E}!qytR1J6PqiDl1!(c5V%shaTTDc~^D zL?^LQ4?%Ib<`rj*_|o6}EcKPpu&L zFX$^+SqJJxKoxT*;p>jLY&)J7tLTLUB3k4Mpo-3tM&%}y9`z2CDm14+jRBSBI1$&c z#r4lr>>3>#YjicBBI!4$Hm%zG=kt+CYhe0i5?faXvF(5-olzHKLc0oD)xa0Ooi(&D zq6D%yJ|yD$nhAv@h`p#Ib`a0PY8JRJf-xFtBCe+;Mjoe?yv=IRi~mF&#NGt4bGbqe zAx{i%l34cfbS+EpoY|DW0A8p7V!)^yU43-8t??|F7a{KQPfzf`)xRG!N{2hBM!IPM zGz2cq1mbrt+*lpB9e|szRZY2k!05~E2p%%)dp>Z<@)bYbSkw2^Zo29U&_Nk2tEeU% zm2198DJ>d}7+Q_^fYNg{8Kg72$9UkLt9uCRmWWb|>NV{$9h;(6W`dS(TxS`Q zlUU(W?ad5*9jkT7qK-ELS+9z!5LaIc`IBOJQHM@tzc5q1HKC10i_*H{Zx+&rA{>aY z452>18{#IUUzm|jE8a~rR3m0A!ojqX)g#i<*@X<6Vntar*i&1mC~UYL`HpNv_yuUa1X>U0N`YV8xT4WwnIop z=G{}&HU0MpX=+1 z1T`+U%0*mkm5cReW1*CO`-6GIcz(HugziqrSQNU)^{bsf6rleQh00*J4E5Pb6E3L z2>+PF;s}j7ta_Ew-q4)a~Q&hr3A4w+#HX~>A4x(IRVsrTTI_z@i|GaXrmvw#({*6w+LKGA-e z_dJ}3C6!n-h?@=yktWt*7vfo`T@Aw#ccu5w_Jeov6PFR}uTal6Ekp*@W&e#9>jS^zggw82qEdA6{Lb5dN|&-Q(~WhvXf#!x?0d^ZQq( z0vLh5mu@FxLJ1+PT@c?e%XNRk@~q7;hq{s8^9 zbmX)39jbe&BSKPEnFN2+2#RL99B?G5o(QRCJ;1~-*~#h1umPbR{-`ZQygi<6x;SY}eLmHukuIMmP8H3zcCxS zN$G8k$6~>t#}SDIV?jsI;bzMpRYn(i!(m_4@4#KMfw0pT_qMo!9cY{1h!s4hD6DLQ za#3N}>q`U!ez(izbh;w0meXngirD52inqw`b$b0C0C<9Nx5MSIr6Kwk1w8(s%jpk9 ze359x9r4>ItLR`UkA1vev9sh`ie<%SrLf51kH+KPc+44zy4~Suv{a)5(DQ1btnpyL z7k5O${;{7l;M?4o5H$_XqrKuc@gbmw|;{wo&O?FBWtMJkCTc z7;!uO5kI?Uqtd>}8x2HaQCGm_jK&i|SG>K4-M3L`%ua1oEJa>dBeL^x*|@0+~bAx96nDl>SQ-=R;Co8O2Ht2<9tkW zK_sS96?{H4yfYE?`C<{DH|BG)wT~;4o6L-d%Ly~!c7)Lj6W(|@;tB)y9nM(T38MXP zHnPw!N{n5jFPM_`(>fto|+~ zXmvz|1?^1?X!_Zj}C93X-VZ^)Hu3d_~AQp9a-4WcK9rcHUF?M2? z(xcGfbH*bck2?|zB+%_Hp2_app^R)Coi=641X3DdS0WILdi^nUzKACtV4I#*;zbci z5@H3f&_n2NLoTFBG-mt1gktOaoYJU>I-(0>)#GqFqlsW}XoPKfRtd6c#rch`33r%8 z?+!pEc@ps`JMbKcLVZV|#XJ!|+A19OUaCVWas>kJgu@TTmGB0=!N6tZ#OT!xqtjyQ zc=Lw6t}wc9z!3<>+|2g8GQKF`^kAR|9WEE{40kz(zhq>me+8R;_ABFA(>;pE8ug$r zx-gia1^sbHkd4`+bcCp*L7(3j_QpJc0Hy%8dXI8r5ypDZ=X8U9*zHa@6C*}4<4L6< z>-&P@DvUcLo|wz&@_ND;E79OcHg=EFlr4Hkk($Kk#HW%h6H#Y4>WI05K~gCR@0AXA z!F!6W(C5IY3%kMzzuS+V;=GF4jw+pt02F}sa$>Cc9MPC#RFbOPj4gg0g|2={>CArK zp%fHC%>+nqK#L_3u}Ju8HluSsh(_FQKc+hf^Dz<7?u{9`YrhP1O$Mfvt3S2W>3zl+3Ok$BvL>RqH}E-K6~ zV3S(sD}}BAMwB@X)aF`IwaAHGS6c@ z&nkIVM=XH*<2?bN2P!2ViL)Mim0*#B238dRClby;%;O(FgH3%^X~`bltMo4PV9Z2= z@dPHym@DC*Fip*C_9|XT@g+bCJste`1L%Bg@~g_IBB-N86b%q{V5$l`;*&I#Uw~3X zEgp|Ule>aZSQzoiQ&f5rUsEn9f=Hci^deW#>BcaQPSG;oM?vbr#i^qL-V2ikvh&5GZhv5AXBK`#DQOa!ea#q5H-Nwpb2xo|j~B*D z1OtaH+NZQHcKHKdXCxBvVPIoqN6LqFW6oCj_1Q=J(4Sr5AQYj~i3vCCh&tV~L#iTm zzo9g?9FkuBF*Yso0ugAz4`=-*;>cfPAvFZwY;?No3fAO2j zJ;lL@6Q)Ga7xc!UAw7}n{$*5gxIq|sOS!D8*PV#E(4U|{;cwu zFtuh*n=)p0c_IL=oC!2v48to6&(Zt#|jTsC0#YLV#JQnx3VU#$X0dM>!qo0NMC{0>KU@=Y_Gd?_P zJec>!15oY`kJA-&pwmZhX5HRXO6zATs?IKNrI9UuT4~1~cw2E6I}(ntI}&tw;$DZt z;fda2yric14#mEJGY+H23*#*qbw%U<(u!_AVd{kP3E{~TW|1bRJ_54?9p4v)$?0J; z-cimg^g6={H;lz7KKT#`MhZt|X8(N$sm=rpE9%+~2TWC0 zkX?LGnOf|1pewrqPAEecOsLrH#v9nsgGveehk;Cepu!~ zZv<`V46~N+D(wrMFqbiOTrkLjG$yN<<2z+cG0bP!!)TU7FhL+oj5AcD_mg*(0a&~E zy-{b3sKsJf9U&DtV$>Q|h1cy$p!@n0!DU8W-?3uebOaObAjTT3 zJfE92Ijl@5i3j3QSHu(bc@selcIOHs`V^lhw;WckD2^lon3=q;L=+RB52mWI4_lIx z-;g=qSDIVnq{V{{6z7B5@xNp&O$-j3EVm;q-?i!F$;0Q_5&7Xw$j|>Wu0aO|XwXP!<(?QECwN z!52jwFb(7P8KIa15vR|M$>y666&Iupb%83ubalq!SUYt& zqWFqESgWCxAPQC;}Z3Ff+o)#_o@ z>V}1dzUJ|HUA_dn`eUW61j{_kAI=E$mXRD?je`JAE-I1+1as8`J^j3k1Ag^zC>e5y$#3!ZsgO$_vpU(2p@E#?Xx&5pOkX zc~t3A?106GFL*#t!&boJZ=Q(TLvz3o@_`qwm-! zN*gx+KT5Y^n5i)r3@psH3Cu!~?Z$F7_tbx2K1baNtjXP8Oq2n4(CvEi|7q(?p!BH9 zG<^R0F_2i7{MFSVdv|A{A%P^dFG*)p*;Edh8JIJRV^ejj%48;;?n$R}2Aw$s0Yxy2 zGU3jK11bnAkm$@Hvf~bd83Y^$!lH!5kOc%xNFejv`m-<`&S6Q{?b`1BzW00I_q$MP z$@Aub?K*JSihv{eO9b=njn(awc06w`v=gEQeTULzTBF4OUgPiEqkpl(Jj)J~fQ5sf zAVfgH^p3_zd-T^kcsX=vUXi3>&NGEs{(TUh2{}nUww(eT7c%i;h=5MkD9r9`$oA;f zFTfoLhg2p(;uoZJl-;GCd%^VW6q@VF5Rrqpp-$cnE)p%3TK}SXf(2pa)zPsqK;X`~ zN1rrPJ@}$Iw$sTeq8_m7;T}|xe{bXRcA(81UP&G4UtRKbp|xcJs)JS;$V$d%7%oA4 zUt{sR6vO71%&|5wN;tYP#9OjV@_qv0h^UxkBYgoizWEcNJo3(ln7VKM3TUo^oBoGi+7ryo#J)y)PCYn zx68QtS!1bMx)Y?hey7=Kv!EU|D@$D%F1YX@5X&>psJW~yL-Nr94V+A3ITQ~y&S{V8 z(nPdVNTA0RkD5#A{G4a1&(&qf2A(1JzUJrXqtJbrU}AK<+A&3pRgb( zF+bkIL5g9@)JN)d=u*gw6` zoH7nW1?LuDAg;7slkI-bI35ZS0*Sy0T<|8Lw@t7eMPRw7Ask7a`x<;2@wwRpcd zXayMxHVxbeQ6=9N~EW+}Q?#u#3(*z^rG`k;A{C3y^{6a=9X6+!W)y858` z5epB41S+)G0a;i9rI6YR19U=$Gk*y=VktOqfeO!x#XUAKuj;pK>#ub^BNK5z5|}tqjL|L z6YT&HfF8pca4$&7Lya?!j&`Vf#t75KeaOg0tPuz^4TE(C_JOvr)_00=Ev;0b-Ll|U zJSV(FJ$J|qY_Nj}hF&>H%S0xhHO@L(p^j5q#)wH4{v5bJ6wv8o|h^@!O7I$V5qIL#SEK@9lIe`5~eKN)7fau z(XE2<6YBoO@(MF14loD&6n#`?n~d5+ItdAxK?wAh0MS~m{F34H^`5VKnqsO2w+}U; zb5W9jcl>2Fswv{mT#_L^L?%Zy z#+y(V5wAecyD76ALM^>uGjm!O@{fK%bXY!%UI2BNV)!$%x<(CrKy0=Gn1qAVl;Fl` zLsBVwl=y_DE545yjw!#nEP{Vh>qdzuEf=1Ri-PDYB#9sXvs!t)_>7I4Lw_dKFNLR@ zWdFi?Y2!xKL>bekgj*puHC0ZWe>Ils(b+XowxAwB06htJ_Z>1@HpLevh7c-JSZe8f#ek4$&Qd2el?n3@)j;$_NtOM(fd^cV zqJ3H(3(V^U&<8>|x=vj)TI3{91WSPn>W%^{aXt4NJRb6J*CBEmt188hkNAZg_bB`- z_p3)gzTKQ?fe>kdh-39A8D;!6wP}o)Z+VFP5Mxez71%8K*VU6_L~jR)iY35Ak&q?M z!41YWyUlRidr8fW#=C*P4cupQ^9lh2Z%V5Wmh%n6)E~#}U(2U5R}8MY$!OI-W+Q8s z53a_!D2H!0I_g8^-<5J?P1#?2Dc@92eNgz8kI#a~2wb8^;wt}^>d_K7%PL&=nz~UE zz5Ls1qbV+e`$U*ZxI1`1x;J!-ajClY0ZfH0ruZ{XqQRB9K#U(cm2_@Z*9qppr4VDe z0SZ2=90s?kog6+X)jEh`i$-#?#EZ5Z%a2)JiuemkkGh|MHThO!T>S>eteEyod`De! zqOhCaH7-;a-fb>WV;?t1sbwuOc06GgMzpYedKDGo?LUkUYq74C`aBj(le7>?DP0;Z z@;}w0vEl+Nt`M=ITk;QTi}e4ieK?`vqTK@A*Q|hl+}=LSk5t0MDdAn7n@8VMLoLzO zxI=AhiK&h6t6N%PdgD&DttHO05`utviGz~<5>EPE%CQ9gAu=DozKm!OQHbT;M%`1G zrZA{oD-1J~8$=+`R5Q-+QQItTaIe~9iPVN7q&dutb{3|PSKenFbH1myqA(`UvVw-J zrZxAg4IN@q;{kPZhnUm&f%;X4n9=y5I?y3{CjZD7w{&E6wsdGk|M1GeHT?xYtRawo z{O*T2iRJ^AG={W8vls*CC&yL`@x!w~9ksa@AfSF~ELWTEFniVOw(!SAfu@SMU{sj0 z%zpN+6QzTdRz{j60IrVrpmBz3j1x24m;nuhY>>tw*OpcJknvGH>TAq6p#{OGZ4#5) zL5!sSxjNJ-mfA5NUk%a1bW4Ca={;-=>2oHiuZ$CCchC&g6w;&9uB~$S5#yLS*?}qK z&_>i&6UKcQ|H4q&tLAxJQYIDN7f^?J<9XYRvVBQJ>q6`b*j|F7B{jmb3UBWoFBUag zuzbLlrc@fcRq&|MZkc!?Ar@<1fD;UR{^jB08ej1Uap?-=ZkavSJ`PLNMmPO?JPGNC z;p4gnP6ShR6TzknNV~ftUMW@--6z0QMyGDxCOTW-4Ke9Z8>#o&0l#&kI2DAeG(=;@ zXVlHY`yb=X`V_V96?0;Xb_IMIXh$&@a2hpllK7MkB{(Adm+lJgq^EA2B>u7m)Z>Q* z=v`DfGDKOE#V1>VE@nX%rqpw)RH81PEQ$`l%4l`FT$F=xw%r&|H%}5>%AO(?+dw!S zin8$NCegzzo;FtL(Qb8_9>p|G^9c9UrPCC!dJBCvoxZgUIvz-@FgR@=R=W0LpPRQ4&@0 zTVsh@)+0_)f7K;Mk7bGimqiCwSQbx>bcs1YN`wqX{kTXp480v{UALH}p6U`~Y&wtu zECojqOrvnWV0@^3xt?zEK?{mPdh>x`u(0yI@J-IO4W0WVj( zG>HdaROj{x)H6K_v`&yyS0uLZE5)Jz|VS7HGOcrwK|MmF2GXE1o!wSA;s2 zB^?D!B_OVhcOQPm$!pkhFg&vQBJPRT3d&(SL>^i&uhhUa5p@)0?&CRlaB28~+)K^X z?=fR|q!{ER7)F3u=eiMhly3E^v8Zo&^}x#hsw~x#?dHi->8?Xv+5S?YcZw)`4WvKv z8^h}QF=Cb-;5TtH&U%nT%iZ4}zR7qlqT5AuiO7DE4>b3DS*kmy3)xCDc%Vc1fh;6& zQ8jmln9-seO@}ma5DgG5r%)M3ZHb40^9xsoSh0iW4@SK~=EFz###q{4qGGcNBrAE* zbf5a8abmiSa%GLe2*g6S1l4}yy*ey=#AMZDr9YU4Ddp8BQQ*em9>P+K@Q z8C`V{kzF0?kzUOxpusfAu}iT|sA`{8`y7yd*=b_Dg{?E(w&8Xgh)BF?MJn@eTg^peXnx?Te%M5thy`&JAL zt?bbUIkg;?*-+U}^o@K{3|r(hl$FGDT{<<=`MheJDyCbA z|CCq(M#z%lie{ghHtPr~(?5i=&|bq}!|!sw&|IoV4>MhwX>4Wipw$k>yzgJBx@W<3 z>1#yv+rV77c^XGoHR}$`G5W!y=zOtx#?fBkX!Xu4F^>4t#vEF- zq+ZasUC&)toepB1JDcoe?-l+TNC;nHD^|GS$OSH$jhI7R`+yxd!{!)Ix*OG&*or zlPd>T)vhhpA6Wbkj_=w*%% zo#TO7zru;HS7$k*%ceOmb7qA5F%T4AZ60eB=-qIU%ceIiFwq+GMDN79$Ge=iVu}6W z(}_V*N%{5W0yTb~m^q=H4a*aH+!;NMKwENbXSqS2e7c44%hov;QwfYIGyg{Q@H{cY z3IGU)OS&P39549|wbl`Ro0z30*obPKp3vVvFtU"] edition = "2018" [dependencies] -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } @@ -16,7 +15,6 @@ primitives = { package = "substrate-primitives", path = "../../core/primitives", default = ["std"] std = [ "parity-codec/std", - "parity-codec-derive/std", "rstd/std", "primitives/std", "serde", diff --git a/substrate/srml/metadata/src/lib.rs b/substrate/srml/metadata/src/lib.rs index 6b67b5adb5..f47843c871 100644 --- a/substrate/srml/metadata/src/lib.rs +++ b/substrate/srml/metadata/src/lib.rs @@ -26,10 +26,7 @@ use serde_derive::Serialize; #[cfg(feature = "std")] use parity_codec::{Decode, Input}; -#[cfg(feature = "std")] -use parity_codec_derive::Decode; use parity_codec::{Encode, Output}; -use parity_codec_derive::Encode; use rstd::vec::Vec; #[cfg(feature = "std")] diff --git a/substrate/srml/staking/Cargo.toml b/substrate/srml/staking/Cargo.toml index eead2b3ea5..5fc70e27ea 100644 --- a/substrate/srml/staking/Cargo.toml +++ b/substrate/srml/staking/Cargo.toml @@ -8,8 +8,7 @@ edition = "2018" hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } safe-mix = { version = "1.0", default-features = false} -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } substrate-keyring = { path = "../../core/keyring", optional = true } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } primitives = { package = "sr-primitives", path = "../../core/sr-primitives", default-features = false } @@ -31,7 +30,6 @@ std = [ "safe-mix/std", "substrate-keyring", "parity-codec/std", - "parity-codec-derive/std", "rstd/std", "srml-support/std", "primitives/std", diff --git a/substrate/srml/staking/src/lib.rs b/substrate/srml/staking/src/lib.rs index 180eb68fb3..71a7f27ce1 100644 --- a/substrate/srml/staking/src/lib.rs +++ b/substrate/srml/staking/src/lib.rs @@ -21,8 +21,7 @@ #![cfg_attr(not(feature = "std"), no_std)] use rstd::{prelude::*, result}; -use parity_codec::HasCompact; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{HasCompact, Encode, Decode}; use srml_support::{StorageValue, StorageMap, EnumerableStorageMap, dispatch::Result}; use srml_support::{decl_module, decl_event, decl_storage, ensure}; use srml_support::traits::{ diff --git a/substrate/srml/support/Cargo.toml b/substrate/srml/support/Cargo.toml index 07dbc9b626..cda9aaa904 100644 --- a/substrate/srml/support/Cargo.toml +++ b/substrate/srml/support/Cargo.toml @@ -8,8 +8,7 @@ edition = "2018" hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } srml-metadata = { path = "../metadata", default-features = false } sr-std = { path = "../../core/sr-std", default-features = false } runtime_io = { package = "sr-io", path = "../../core/sr-io", default-features = false } diff --git a/substrate/srml/support/procedural/src/storage/impls.rs b/substrate/srml/support/procedural/src/storage/impls.rs index e008c81f83..0f953967d8 100644 --- a/substrate/srml/support/procedural/src/storage/impls.rs +++ b/substrate/srml/support/procedural/src/storage/impls.rs @@ -217,7 +217,7 @@ impl<'a> Impls<'a> { // generator for linked map let helpers = quote! { /// Linkage data of an element (it's successor and predecessor) - #[derive(#scrate::parity_codec_derive::Encode, #scrate::parity_codec_derive::Decode)] + #[derive(#scrate::codec::Encode, #scrate::codec::Decode)] pub(crate) struct #linkage { /// Previous element key in storage (None for the first element) pub previous: Option, diff --git a/substrate/srml/support/src/event.rs b/substrate/srml/support/src/event.rs index 093effc2e4..6d00e6b10b 100644 --- a/substrate/srml/support/src/event.rs +++ b/substrate/srml/support/src/event.rs @@ -26,9 +26,8 @@ pub use srml_metadata::{EventMetadata, DecodeDifferent, OuterEventMetadata, FnEn /// ```rust /// #[macro_use] /// extern crate srml_support; -/// extern crate parity_codec as codec; /// #[macro_use] -/// extern crate parity_codec_derive; +/// extern crate parity_codec as codec; /// #[macro_use] /// extern crate serde_derive; /// @@ -48,7 +47,7 @@ pub use srml_metadata::{EventMetadata, DecodeDifferent, OuterEventMetadata, FnEn /// extern crate srml_support; /// extern crate parity_codec as codec; /// #[macro_use] -/// extern crate parity_codec_derive; +/// extern crate parity_codec; /// #[macro_use] /// extern crate serde_derive; /// @@ -111,7 +110,7 @@ macro_rules! decl_event { } ) => { // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. - #[derive(Clone, PartialEq, Eq, $crate::parity_codec_derive::Encode, $crate::parity_codec_derive::Decode)] + #[derive(Clone, PartialEq, Eq, $crate::codec::Encode, $crate::codec::Decode)] #[cfg_attr(feature = "std", derive(Debug))] $(#[$attr])* pub enum Event { @@ -230,7 +229,7 @@ macro_rules! __decl_generic_event { ) => { pub type Event<$event_generic_param> = RawEvent<$( $generic_type ),*>; // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. - #[derive(Clone, PartialEq, Eq, $crate::parity_codec_derive::Encode, $crate::parity_codec_derive::Decode)] + #[derive(Clone, PartialEq, Eq, $crate::codec::Encode, $crate::codec::Decode)] #[cfg_attr(feature = "std", derive(Debug))] $(#[$attr])* pub enum RawEvent<$( $generic_param ),*> { @@ -373,7 +372,7 @@ macro_rules! impl_outer_event { $( $module_name:ident::Event $( <$generic_param:ident> )*, )*; ) => { // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. - #[derive(Clone, PartialEq, Eq, $crate::parity_codec_derive::Encode, $crate::parity_codec_derive::Decode)] + #[derive(Clone, PartialEq, Eq, $crate::codec::Encode, $crate::codec::Decode)] #[cfg_attr(feature = "std", derive(Debug))] $(#[$attr])* #[allow(non_camel_case_types)] @@ -452,7 +451,7 @@ macro_rules! __impl_outer_event_json_metadata { mod tests { use super::*; use serde_derive::Serialize; - use parity_codec_derive::{Encode, Decode}; + use parity_codec::{Encode, Decode}; mod system { pub trait Trait { diff --git a/substrate/srml/support/src/lib.rs b/substrate/srml/support/src/lib.rs index 5980f5ddad..a7bbf32938 100644 --- a/substrate/srml/support/src/lib.rs +++ b/substrate/srml/support/src/lib.rs @@ -25,8 +25,6 @@ pub use serde; pub use sr_std as rstd; #[doc(hidden)] pub use parity_codec as codec; -#[doc(hidden)] -pub use parity_codec_derive; #[cfg(feature = "std")] #[doc(hidden)] pub use once_cell; diff --git a/substrate/srml/support/src/metadata.rs b/substrate/srml/support/src/metadata.rs index d9750975ee..229f132ac9 100644 --- a/substrate/srml/support/src/metadata.rs +++ b/substrate/srml/support/src/metadata.rs @@ -239,8 +239,6 @@ mod tests { ModuleMetadata, RuntimeMetadataPrefixed }; use crate::codec::{Encode, Decode}; - use parity_codec_derive::{Decode, Encode}; - mod system { pub trait Trait { diff --git a/substrate/srml/system/Cargo.toml b/substrate/srml/system/Cargo.toml index 8cb2822da2..f1f3692aa3 100644 --- a/substrate/srml/system/Cargo.toml +++ b/substrate/srml/system/Cargo.toml @@ -9,8 +9,7 @@ hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default-features = false} -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } substrate-primitives = { path = "../../core/primitives", default-features = false } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } runtime_io = { package = "sr-io", path = "../../core/sr-io", default-features = false } @@ -24,7 +23,6 @@ std = [ "serde_derive", "safe-mix/std", "parity-codec/std", - "parity-codec-derive/std", "substrate-primitives/std", "rstd/std", "runtime_io/std", diff --git a/substrate/srml/system/src/lib.rs b/substrate/srml/system/src/lib.rs index d8070c2bb8..0a0cf624e7 100644 --- a/substrate/srml/system/src/lib.rs +++ b/substrate/srml/system/src/lib.rs @@ -30,10 +30,7 @@ use primitives::traits::{self, CheckEqual, SimpleArithmetic, SimpleBitOps, Zero, use substrate_primitives::storage::well_known_keys; use srml_support::{storage, StorageValue, StorageMap, Parameter, decl_module, decl_event, decl_storage}; use safe_mix::TripletMix; -use parity_codec_derive::{Encode, Decode}; - -#[cfg(any(feature = "std", test))] -use parity_codec::Encode; +use parity_codec::{Encode, Decode}; #[cfg(any(feature = "std", test))] use runtime_io::{twox_128, TestExternalities, Blake2Hasher}; diff --git a/substrate/srml/timestamp/Cargo.toml b/substrate/srml/timestamp/Cargo.toml index 56000c0363..d2133daebb 100644 --- a/substrate/srml/timestamp/Cargo.toml +++ b/substrate/srml/timestamp/Cargo.toml @@ -7,8 +7,7 @@ edition = "2018" [dependencies] hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } runtime_primitives = { package = "sr-primitives", path = "../../core/sr-primitives", default-features = false } inherents = { package = "substrate-inherents", path = "../../core/inherents", default-features = false } @@ -29,7 +28,6 @@ std = [ "consensus/std", "serde/std", "parity-codec/std", - "parity-codec-derive/std", "system/std", "inherents/std", ] diff --git a/substrate/srml/timestamp/src/lib.rs b/substrate/srml/timestamp/src/lib.rs index d1d1f9f54e..a7fa9e9663 100644 --- a/substrate/srml/timestamp/src/lib.rs +++ b/substrate/srml/timestamp/src/lib.rs @@ -33,8 +33,8 @@ #![cfg_attr(not(feature = "std"), no_std)] #[cfg(feature = "std")] -use parity_codec_derive::Decode; -use parity_codec_derive::Encode; +use parity_codec::Decode; +use parity_codec::Encode; use srml_support::{StorageValue, Parameter, decl_storage, decl_module}; use srml_support::for_each_tuple; use runtime_primitives::traits::{As, SimpleArithmetic, Zero}; diff --git a/substrate/srml/treasury/Cargo.toml b/substrate/srml/treasury/Cargo.toml index 4e695375e5..d417a0e7e2 100644 --- a/substrate/srml/treasury/Cargo.toml +++ b/substrate/srml/treasury/Cargo.toml @@ -8,8 +8,7 @@ edition = "2018" hex-literal = "0.1.0" serde = { version = "1.0", default-features = false } serde_derive = { version = "1.0", optional = true } -parity-codec = { version = "3.1", default-features = false } -parity-codec-derive = { version = "3.1", default-features = false } +parity-codec = { version = "3.1", default-features = false, features = ["derive"] } rstd = { package = "sr-std", path = "../../core/sr-std", default-features = false } runtime_primitives = { package = "sr-primitives", path = "../../core/sr-primitives", default-features = false } srml-support = { path = "../support", default-features = false } @@ -26,7 +25,6 @@ std = [ "serde/std", "serde_derive", "parity-codec/std", - "parity-codec-derive/std", "rstd/std", "runtime_primitives/std", "srml-support/std", diff --git a/substrate/srml/treasury/src/lib.rs b/substrate/srml/treasury/src/lib.rs index 4a8913bc4d..2087846233 100644 --- a/substrate/srml/treasury/src/lib.rs +++ b/substrate/srml/treasury/src/lib.rs @@ -24,7 +24,7 @@ use rstd::prelude::*; use srml_support::{StorageValue, StorageMap, decl_module, decl_storage, decl_event, ensure}; use srml_support::traits::{Currency, OnDilution, ArithmeticType}; use runtime_primitives::{Permill, traits::{Zero, EnsureOrigin, StaticLookup}}; -use parity_codec_derive::{Encode, Decode}; +use parity_codec::{Encode, Decode}; use system::ensure_signed; type BalanceOf = <::Currency as ArithmeticType>::Type;