From 85520906831d68ad81246cf98650cdfe4d8c87fe Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 20:38:19 +0200 Subject: [PATCH 01/24] Remove unneeded script --- .gitlab-ci.yml | 2 -- README.adoc | 1 - ci/script.sh | 1 - scripts/build-demos.sh | 28 ---------------------------- scripts/common.sh | 3 --- 5 files changed, 35 deletions(-) delete mode 100755 scripts/build-demos.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f4d781880bffb..cc9e3985e62d0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -50,7 +50,6 @@ test:rust:stable: &test - ./scripts/init.sh - export PATH="${CI_PROJECT_DIR}/cargo/bin/:$PATH" - ./scripts/build.sh - - ./scripts/build-demos.sh - time cargo test --all --release tags: - rust-stable @@ -74,7 +73,6 @@ build:linux:ubuntu:amd64: &build - ./scripts/init.sh - export PATH="${CI_PROJECT_DIR}/cargo/bin/:$PATH" - ./scripts/build.sh - - ./scripts/build-demos.sh - cargo build --release <<: *collect_artifacts tags: diff --git a/README.adoc b/README.adoc index f1502ca3313fc..a6d7ab30c643a 100644 --- a/README.adoc +++ b/README.adoc @@ -145,7 +145,6 @@ Then build the code: [source, shell] ---- ./scripts/build.sh # Builds the WebAssembly binaries -./scripts/build-demos.sh # Builds the WebAssembly binaries cargo build # Builds all native code ---- diff --git a/ci/script.sh b/ci/script.sh index 812da2d816805..7eee447bb06cb 100755 --- a/ci/script.sh +++ b/ci/script.sh @@ -24,6 +24,5 @@ case $TARGET in # Install prerequisites and build all wasm projects ./scripts/init.sh ./scripts/build.sh - ./scripts/build-demos.sh ;; esac diff --git a/scripts/build-demos.sh b/scripts/build-demos.sh deleted file mode 100755 index 285da143c17d8..0000000000000 --- a/scripts/build-demos.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash - -# This script assumes that all pre-requisites are installed. - -set -e - -PROJECT_ROOT=`git rev-parse --show-toplevel` -source `dirname "$0"`/common.sh - -export CARGO_INCREMENTAL=0 - -# Save current directory. -pushd . - -cd $ROOT - -for DEMO in "${DEMOS[@]}" -do - echo "*** Building wasm binaries in $DEMO" - cd "$PROJECT_ROOT/$DEMO" - - ./build.sh - - cd - >> /dev/null -done - -# Restore initial directory. -popd diff --git a/scripts/common.sh b/scripts/common.sh index a75be8e406e80..1bdcd20ae371f 100644 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -5,9 +5,6 @@ ROOT=`dirname "$0"` # A list of directories which contain wasm projects. SRCS=( "substrate/executor/wasm" -) - -DEMOS=( "demo/runtime/wasm" "substrate/test-runtime/wasm" ) From 5e80b1a467b1e6b5bbee1726251524531889ca5b Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 20:41:52 +0200 Subject: [PATCH 02/24] Rename Substrate Demo -> Substrate --- demo/api/src/lib.rs | 10 +++++----- demo/build.rs | 8 ++++---- demo/cli/Cargo.toml | 2 +- demo/cli/src/cli.yml | 2 +- demo/cli/src/error.rs | 8 ++++---- demo/cli/src/lib.rs | 10 +++++----- demo/consensus/src/error.rs | 8 ++++---- demo/consensus/src/evaluation.rs | 8 ++++---- demo/consensus/src/lib.rs | 8 ++++---- demo/consensus/src/offline_tracker.rs | 8 ++++---- demo/consensus/src/service.rs | 8 ++++---- demo/executor/Cargo.toml | 2 +- demo/executor/src/lib.rs | 8 ++++---- demo/network/src/consensus.rs | 8 ++++---- demo/network/src/lib.rs | 10 +++++----- demo/primitives/src/lib.rs | 10 +++++----- demo/runtime/src/checked_block.rs | 8 ++++---- demo/runtime/src/lib.rs | 10 +++++----- demo/service/src/chain_spec.rs | 10 +++++----- demo/service/src/lib.rs | 10 +++++----- demo/src/main.rs | 10 +++++----- demo/transaction-pool/src/error.rs | 8 ++++---- demo/transaction-pool/src/lib.rs | 8 ++++---- 23 files changed, 91 insertions(+), 91 deletions(-) diff --git a/demo/api/src/lib.rs b/demo/api/src/lib.rs index 848c0530464b5..59d0066902d88 100644 --- a/demo/api/src/lib.rs +++ b/demo/api/src/lib.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Strongly typed API for Substrate Demo runtime. +//! Strongly typed API for Substrate runtime. #![warn(missing_docs)] #![warn(unused_extern_crates)] diff --git a/demo/build.rs b/demo/build.rs index 0f2f3b9bdcaf8..4e48353aeac42 100644 --- a/demo/build.rs +++ b/demo/build.rs @@ -1,18 +1,18 @@ // Copyright 2015-2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . extern crate vergen; diff --git a/demo/cli/Cargo.toml b/demo/cli/Cargo.toml index 5c5b0f7a36f41..f7e1645e426f9 100644 --- a/demo/cli/Cargo.toml +++ b/demo/cli/Cargo.toml @@ -2,7 +2,7 @@ name = "demo-cli" version = "0.1.0" authors = ["Parity Technologies "] -description = "Substrate Demo node implementation in Rust." +description = "Substrate node implementation in Rust." [dependencies] log = "0.3" diff --git a/demo/cli/src/cli.yml b/demo/cli/src/cli.yml index 263af9d9ef300..54ec9bcd985a1 100644 --- a/demo/cli/src/cli.yml +++ b/demo/cli/src/cli.yml @@ -1,6 +1,6 @@ name: substrate-demo author: "Parity Team " -about: Substrate Demo Node Rust Implementation +about: Substrate Node Rust Implementation args: - log: short: l diff --git a/demo/cli/src/error.rs b/demo/cli/src/error.rs index c8b4fdedde099..a83466fbe679d 100644 --- a/demo/cli/src/error.rs +++ b/demo/cli/src/error.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Initialization errors. diff --git a/demo/cli/src/lib.rs b/demo/cli/src/lib.rs index 09c09e1cc6ccb..3483cdeb514e0 100644 --- a/demo/cli/src/lib.rs +++ b/demo/cli/src/lib.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Substrate Demo CLI library. +//! Substrate CLI library. #![warn(missing_docs)] #![warn(unused_extern_crates)] diff --git a/demo/consensus/src/error.rs b/demo/consensus/src/error.rs index e8b60c847c34d..ddf663b103635 100644 --- a/demo/consensus/src/error.rs +++ b/demo/consensus/src/error.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Errors that can occur during the consensus process. diff --git a/demo/consensus/src/evaluation.rs b/demo/consensus/src/evaluation.rs index 0d073aa52109c..12270373aece2 100644 --- a/demo/consensus/src/evaluation.rs +++ b/demo/consensus/src/evaluation.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Block evaluation and evaluation errors. diff --git a/demo/consensus/src/lib.rs b/demo/consensus/src/lib.rs index 7f55bc1e68fef..766066087e311 100644 --- a/demo/consensus/src/lib.rs +++ b/demo/consensus/src/lib.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! This service uses BFT consensus provided by the substrate. diff --git a/demo/consensus/src/offline_tracker.rs b/demo/consensus/src/offline_tracker.rs index 243b801bcec0c..f060d50d6b942 100644 --- a/demo/consensus/src/offline_tracker.rs +++ b/demo/consensus/src/offline_tracker.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Tracks offline validators. diff --git a/demo/consensus/src/service.rs b/demo/consensus/src/service.rs index e70bc78ab2154..e361e7a8c8512 100644 --- a/demo/consensus/src/service.rs +++ b/demo/consensus/src/service.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Consensus service. diff --git a/demo/executor/Cargo.toml b/demo/executor/Cargo.toml index 5bf56e9a8f0c4..1f770f2c5f43a 100644 --- a/demo/executor/Cargo.toml +++ b/demo/executor/Cargo.toml @@ -2,7 +2,7 @@ name = "demo-executor" version = "0.1.0" authors = ["Parity Technologies "] -description = "Substrate Demo node implementation in Rust." +description = "Substrate node implementation in Rust." [dependencies] hex-literal = "0.1" diff --git a/demo/executor/src/lib.rs b/demo/executor/src/lib.rs index 1c1631bea071b..abd7490254cfe 100644 --- a/demo/executor/src/lib.rs +++ b/demo/executor/src/lib.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! A `CodeExecutor` specialisation which uses natively compiled runtime when the wasm to be //! executed is equivalent to the natively compiled code. diff --git a/demo/network/src/consensus.rs b/demo/network/src/consensus.rs index d7c5fd92c570a..e6650bfee8291 100644 --- a/demo/network/src/consensus.rs +++ b/demo/network/src/consensus.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! The "consensus" networking code built on top of the base network service. //! This fulfills the `demo_consensus::Network` trait, providing a hook to be called diff --git a/demo/network/src/lib.rs b/demo/network/src/lib.rs index f32c039669f3a..ffb7789601b41 100644 --- a/demo/network/src/lib.rs +++ b/demo/network/src/lib.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Substrate Demo-specific network implementation. +//! Substrate-specific network implementation. //! //! This manages gossip of consensus messages for BFT. diff --git a/demo/primitives/src/lib.rs b/demo/primitives/src/lib.rs index d93b75f3954e4..4cd2474e33c8c 100644 --- a/demo/primitives/src/lib.rs +++ b/demo/primitives/src/lib.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Low-level types used throughout the Substrate Demo code. +//! Low-level types used throughout the Substrate code. #![warn(missing_docs)] diff --git a/demo/runtime/src/checked_block.rs b/demo/runtime/src/checked_block.rs index 281a9e4136fca..045bad863f8b3 100644 --- a/demo/runtime/src/checked_block.rs +++ b/demo/runtime/src/checked_block.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . //! Typesafe block interaction. diff --git a/demo/runtime/src/lib.rs b/demo/runtime/src/lib.rs index 838fb9c3306f7..e2c03aca9649a 100644 --- a/demo/runtime/src/lib.rs +++ b/demo/runtime/src/lib.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! The Substrate Demo runtime. This can be compiled with ``#[no_std]`, ready for Wasm. +//! The Substrate runtime. This can be compiled with ``#[no_std]`, ready for Wasm. #![cfg_attr(not(feature = "std"), no_std)] diff --git a/demo/service/src/chain_spec.rs b/demo/service/src/chain_spec.rs index 84d0084da8850..8fb6413ab4b7f 100644 --- a/demo/service/src/chain_spec.rs +++ b/demo/service/src/chain_spec.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Substrate Demo chain configurations. +//! Substrate chain configurations. use ed25519; use primitives::AuthorityId; diff --git a/demo/service/src/lib.rs b/demo/service/src/lib.rs index 3f761b7542bc4..3d29669366e65 100644 --- a/demo/service/src/lib.rs +++ b/demo/service/src/lib.rs @@ -1,22 +1,22 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . #![warn(unused_extern_crates)] -//! Substrate Demo service. Specialized wrapper over substrate service. +//! Substrate service. Specialized wrapper over substrate service. extern crate ed25519; extern crate demo_api; diff --git a/demo/src/main.rs b/demo/src/main.rs index 7b219728c38c7..b59fa2eb97cfd 100644 --- a/demo/src/main.rs +++ b/demo/src/main.rs @@ -1,20 +1,20 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . -//! Substrate Demo CLI +//! Substrate CLI #![warn(missing_docs)] diff --git a/demo/transaction-pool/src/error.rs b/demo/transaction-pool/src/error.rs index 2303372084e13..56ea615f490b8 100644 --- a/demo/transaction-pool/src/error.rs +++ b/demo/transaction-pool/src/error.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . use extrinsic_pool; use demo_api; diff --git a/demo/transaction-pool/src/lib.rs b/demo/transaction-pool/src/lib.rs index 637356a098fb5..1bf8ae2f44245 100644 --- a/demo/transaction-pool/src/lib.rs +++ b/demo/transaction-pool/src/lib.rs @@ -1,18 +1,18 @@ // Copyright 2018 Parity Technologies (UK) Ltd. -// This file is part of Substrate Demo. +// This file is part of Substrate. -// Substrate Demo is free software: you can redistribute it and/or modify +// Substrate is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. -// Substrate Demo is distributed in the hope that it will be useful, +// Substrate is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License -// along with Substrate Demo. If not, see . +// along with Substrate. If not, see . extern crate ed25519; extern crate substrate_client as client; From 4aa94ecc05d7bfe4c03a3040766bc699b6fc5cbc Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 20:44:15 +0200 Subject: [PATCH 03/24] Rename demo -> node --- .gitignore | 2 +- Cargo.lock | 368 +++++++++--------- Cargo.toml | 22 +- .../release/demo_runtime.compact.wasm | Bin 707342 -> 0 bytes .../release/demo_runtime.wasm | Bin 707428 -> 0 bytes {demo => node}/Cargo.toml | 2 +- {demo => node}/api/Cargo.toml | 6 +- {demo => node}/api/src/lib.rs | 6 +- {demo => node}/build.rs | 0 {demo => node}/cli/Cargo.toml | 4 +- {demo => node}/cli/src/cli.yml | 2 +- {demo => node}/cli/src/error.rs | 0 {demo => node}/cli/src/lib.rs | 4 +- {demo => node}/consensus/Cargo.toml | 10 +- {demo => node}/consensus/README.adoc | 0 {demo => node}/consensus/src/error.rs | 2 +- {demo => node}/consensus/src/evaluation.rs | 8 +- {demo => node}/consensus/src/lib.rs | 22 +- .../consensus/src/offline_tracker.rs | 2 +- {demo => node}/consensus/src/service.rs | 4 +- {demo => node}/executor/Cargo.toml | 6 +- {demo => node}/executor/src/lib.rs | 18 +- {demo => node}/network/Cargo.toml | 10 +- {demo => node}/network/src/consensus.rs | 16 +- {demo => node}/network/src/lib.rs | 18 +- {demo => node}/primitives/Cargo.toml | 2 +- {demo => node}/primitives/src/lib.rs | 0 {demo => node}/runtime/Cargo.toml | 6 +- {demo => node}/runtime/src/checked_block.rs | 4 +- {demo => node}/runtime/src/lib.rs | 8 +- {demo => node}/runtime/wasm/Cargo.lock | 6 +- {demo => node}/runtime/wasm/Cargo.toml | 6 +- {demo => node}/runtime/wasm/build.sh | 2 +- {demo => node}/runtime/wasm/src | 0 {demo => node}/service/Cargo.toml | 16 +- {demo => node}/service/src/chain_spec.rs | 8 +- {demo => node}/service/src/lib.rs | 26 +- {demo => node}/src/main.rs | 2 +- {demo => node}/transaction-pool/Cargo.toml | 8 +- {demo => node}/transaction-pool/src/error.rs | 4 +- {demo => node}/transaction-pool/src/lib.rs | 8 +- scripts/common.sh | 2 +- substrate/runtime/version/src/lib.rs | 2 +- 43 files changed, 321 insertions(+), 321 deletions(-) delete mode 100644 demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm delete mode 100755 demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm rename {demo => node}/Cargo.toml (91%) rename {demo => node}/api/Cargo.toml (74%) rename {demo => node}/api/src/lib.rs (97%) rename {demo => node}/build.rs (100%) rename {demo => node}/cli/Cargo.toml (81%) rename {demo => node}/cli/src/cli.yml (92%) rename {demo => node}/cli/src/error.rs (100%) rename {demo => node}/cli/src/lib.rs (97%) rename {demo => node}/consensus/Cargo.toml (78%) rename {demo => node}/consensus/README.adoc (100%) rename {demo => node}/consensus/src/error.rs (97%) rename {demo => node}/consensus/src/evaluation.rs (92%) rename {demo => node}/consensus/src/lib.rs (96%) rename {demo => node}/consensus/src/offline_tracker.rs (99%) rename {demo => node}/consensus/src/service.rs (98%) rename {demo => node}/executor/Cargo.toml (92%) rename {demo => node}/executor/src/lib.rs (97%) rename {demo => node}/network/Cargo.toml (62%) rename {demo => node}/network/src/consensus.rs (96%) rename {demo => node}/network/src/lib.rs (87%) rename {demo => node}/primitives/Cargo.toml (97%) rename {demo => node}/primitives/src/lib.rs (100%) rename {demo => node}/runtime/Cargo.toml (96%) rename {demo => node}/runtime/src/checked_block.rs (96%) rename {demo => node}/runtime/src/lib.rs (98%) rename {demo => node}/runtime/wasm/Cargo.lock (99%) rename {demo => node}/runtime/wasm/Cargo.toml (96%) rename {demo => node}/runtime/wasm/build.sh (90%) rename {demo => node}/runtime/wasm/src (100%) rename {demo => node}/service/Cargo.toml (66%) rename {demo => node}/service/src/chain_spec.rs (97%) rename {demo => node}/service/src/lib.rs (92%) rename {demo => node}/src/main.rs (98%) rename {demo => node}/transaction-pool/Cargo.toml (79%) rename {demo => node}/transaction-pool/src/error.rs (97%) rename {demo => node}/transaction-pool/src/lib.rs (98%) diff --git a/.gitignore b/.gitignore index 2e0651ba435d1..8058ae508f8eb 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ substrate/pwasm-alloc/target/ substrate/pwasm-libc/target/ substrate/pwasm-alloc/Cargo.lock substrate/pwasm-libc/Cargo.lock -demo/runtime/wasm/target/ +node/runtime/wasm/target/ **/._* .vscode polkadot.* diff --git a/Cargo.lock b/Cargo.lock index 14ab7f229bb92..302d51f2dc1cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -402,189 +402,6 @@ dependencies = [ "tempfile 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "demo-api" -version = "0.1.0" -dependencies = [ - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "substrate-client 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", -] - -[[package]] -name = "demo-cli" -version = "0.1.0" -dependencies = [ - "demo-service 0.1.0", - "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-cli 0.3.0", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-consensus" -version = "0.1.0" -dependencies = [ - "demo-api 0.1.0", - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "demo-transaction-pool 0.1.0", - "ed25519 0.1.0", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-bft 0.1.0", - "substrate-client 0.1.0", - "substrate-codec 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-executor" -version = "0.1.0" -dependencies = [ - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "ed25519 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-executor 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-staking 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", - "substrate-runtime-treasury 0.1.0", - "substrate-state-machine 0.1.0", - "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-network" -version = "0.1.0" -dependencies = [ - "demo-api 0.1.0", - "demo-consensus 0.1.0", - "demo-primitives 0.1.0", - "ed25519 0.1.0", - "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-bft 0.1.0", - "substrate-network 0.1.0", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-primitives" -version = "0.1.0" -dependencies = [ - "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-serializer 0.1.0", -] - -[[package]] -name = "demo-runtime" -version = "0.1.0" -dependencies = [ - "demo-primitives 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 1.0.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.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-contract 0.1.0", - "substrate-runtime-council 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-executive 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-staking 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", - "substrate-runtime-treasury 0.1.0", - "substrate-runtime-version 0.1.0", -] - -[[package]] -name = "demo-service" -version = "0.1.0" -dependencies = [ - "demo-api 0.1.0", - "demo-consensus 0.1.0", - "demo-executor 0.1.0", - "demo-network 0.1.0", - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "demo-transaction-pool 0.1.0", - "ed25519 0.1.0", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-client 0.1.0", - "substrate-network 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-service 0.3.0", - "substrate-telemetry 0.3.0", - "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "demo-transaction-pool" -version = "0.1.0" -dependencies = [ - "demo-api 0.1.0", - "demo-primitives 0.1.0", - "demo-runtime 0.1.0", - "ed25519 0.1.0", - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-client 0.1.0", - "substrate-codec 0.1.0", - "substrate-extrinsic-pool 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", -] - [[package]] name = "difference" version = "1.0.0" @@ -1693,6 +1510,189 @@ dependencies = [ "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "node-api" +version = "0.1.0" +dependencies = [ + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "substrate-client 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "node-cli" +version = "0.1.0" +dependencies = [ + "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-service 0.1.0", + "substrate-cli 0.3.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-consensus" +version = "0.1.0" +dependencies = [ + "ed25519 0.1.0", + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-api 0.1.0", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "node-transaction-pool 0.1.0", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-bft 0.1.0", + "substrate-client 0.1.0", + "substrate-codec 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-support 0.1.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-executor" +version = "0.1.0" +dependencies = [ + "ed25519 0.1.0", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "substrate-codec 0.1.0", + "substrate-executor 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-balances 0.1.0", + "substrate-runtime-consensus 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-session 0.1.0", + "substrate-runtime-staking 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", + "substrate-runtime-timestamp 0.1.0", + "substrate-runtime-treasury 0.1.0", + "substrate-state-machine 0.1.0", + "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-network" +version = "0.1.0" +dependencies = [ + "ed25519 0.1.0", + "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "node-api 0.1.0", + "node-consensus 0.1.0", + "node-primitives 0.1.0", + "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-bft 0.1.0", + "substrate-network 0.1.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-primitives" +version = "0.1.0" +dependencies = [ + "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-codec-derive 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-serializer 0.1.0", +] + +[[package]] +name = "node-runtime" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-primitives 0.1.0", + "rustc-hex 1.0.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.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-codec-derive 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-balances 0.1.0", + "substrate-runtime-consensus 0.1.0", + "substrate-runtime-contract 0.1.0", + "substrate-runtime-council 0.1.0", + "substrate-runtime-democracy 0.1.0", + "substrate-runtime-executive 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-session 0.1.0", + "substrate-runtime-staking 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", + "substrate-runtime-timestamp 0.1.0", + "substrate-runtime-treasury 0.1.0", + "substrate-runtime-version 0.1.0", +] + +[[package]] +name = "node-service" +version = "0.1.0" +dependencies = [ + "ed25519 0.1.0", + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-api 0.1.0", + "node-consensus 0.1.0", + "node-executor 0.1.0", + "node-network 0.1.0", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "node-transaction-pool 0.1.0", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-client 0.1.0", + "substrate-network 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-service 0.3.0", + "substrate-telemetry 0.3.0", + "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "node-transaction-pool" +version = "0.1.0" +dependencies = [ + "ed25519 0.1.0", + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "node-api 0.1.0", + "node-primitives 0.1.0", + "node-runtime 0.1.0", + "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-client 0.1.0", + "substrate-codec 0.1.0", + "substrate-extrinsic-pool 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-primitives 0.1.0", +] + [[package]] name = "nodrop" version = "0.1.12" @@ -2428,9 +2428,9 @@ name = "substrate" version = "0.1.0" dependencies = [ "ctrlc 3.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "demo-cli 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", + "node-cli 0.1.0", "vergen 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/Cargo.toml b/Cargo.toml index a0550303dcccd..637894e4a9317 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,20 +40,20 @@ members = [ "substrate/test-runtime", "substrate/telemetry", "substrate/keystore", - "demo", - "demo/cli", - "demo/api", - "demo/consensus", - "demo/executor", - "demo/network", - "demo/primitives", - "demo/runtime", - "demo/service", - "demo/transaction-pool", + "node", + "node/cli", + "node/api", + "node/consensus", + "node/executor", + "node/network", + "node/primitives", + "node/runtime", + "node/service", + "node/transaction-pool", "subkey", ] exclude = [ - "demo/runtime/wasm", + "node/runtime/wasm", "substrate/executor/wasm", "substrate/pwasm-alloc", "substrate/pwasm-libc", diff --git a/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm deleted file mode 100644 index 392a6759728e1ede026e4c5ad9b591e2376fe3d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 707342 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 z�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 Kf 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
dfcn2PJN7 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 QCd%z4z$ z9l44~Xru%udPxtLt6<$~3O!sR#GuVn3yzx+h;%k`2 zyf=|(o%&R&4^qi5({okZ3;3VXy?@(jjEK;EJ$7a;){@d?uRjIK&=T3}3d7}d+{zT63(*y=DWHpNveYne!e0<1DE=D z7{cTSF=@L)AChBDtio!q-*b5f3yi2r*2;c^bkgUp#ph;8412XTHN^<4edTVZDPZ3b zN)>v}ayQE_=eEr42Xfmy7P#8MtRoicC&g~RgM&Uwp0*&DY$Zu~iD%XEB#-;~<&Azr zb8tJ%6b@rpARXgS#B5n;(%wCbj@!^*A`sn)KebW6rye!(T_g&3=}5T)TV4hwUgmN; zN%QRX_70u%aI>C~YhB`chz471_lYeKt#U7MP3LhE-k<++Sxa2R>RCmw zQ9A1dF(1mB<~6?~ni7jr^)*qt-_x@fu0ghveo|gWX*3isH~3R3Qc$f(wE$WZuMo-a z_6PB(h21(ssj2mZZ5#FT8D`V&=WD%#_pxXtx?VWG@$5^#C+vAzLgaw83_x763G* zjvMPH$s{Mo(v*GRJT9hFNJrH3stJ|B1Z9uDdtyi!#D4qFRGbkDIK{M>`zE=HJ?Zgm zz{1RaTzp{SS^4~C`P~RH<4r@9n(dbf_nroWa}h=>)C<&?bggzIP@7UEsr>k)8@1zx zD4e@?LF=O<42@$-QZvmHnwnbKB9?Ha1(oavB&n=pS|2qr74*#9zu+glcEmaK$Sj1! z-8GA=9J=v?lX`6)rC-(pNq5&Y^fZ$wH6ErCsbR(XD5QTWTgQplm4n3ifDB5FcQz*R zFoH=6soO=QGVXss0#n0|^$}?2f7OQRdD)KWFREoMW{0=R^;H6A$2vyD!=3e| z+bOjTJ5RxEwd;;6OBPDKu;oO96qrb%K$cxfXbUT;@$33X+gj|{IvGmZqE6XX`SFrq zGX7{PN+pQ^ySO!$(0|CjK&K2(ZYoo?c?ib>kOtv z+t_R?S`vZT*A)gE@wNtS|7Sq6l#64fCK_LVgdUX8f{eu; zVpxpm(4ku!f0F?}+=j;aT?Nv7yYkP=x~;?Q4{^iZI*`4n$)0DMrnMkFOsTOG8=F#W zpFh5SuZ}jj)uxC0#`1c^@|5e*T)CDYlUil>>y7)ONZKktFznfDD%PtqTQ83 zH?p9srlH$bVrN{FCQ{Z(TifWAnf0}gQWq#rhT7D%nfOLP30f&xT?j*fovk)%H1AKt zO1EM>icgb{wJY7lIo?5G>I={80stk_+*~RxI~pD+Af?874%pf#qtt$FJ+wu2j&}nW z_~PXVh;>EmyVn$-T7$%6JrSilh?-+uQ&6vJm$x0+t>3!kWDZahv)_RpSO0pQifrQE z9qDFE8^gI7P%E#}9*nPVFhU`a>s0Lm6Q5gc)}~ifE9qEn7jpQ@A->Mny)YbI;N3~T z{TYhw#ZfuNyA0xLKYom;HHwp#o|MZ6Yvqs{I2qc=)|P4=Jv>AR!jgJ`bsN z+VXRBu`j=6nL1etcu>a*iQS$~!q2iB96~$SnAMNp?E2SOY&NzwE!qGwx}DqD1E=Ze zQPL8fIA^h2X=zrw{&RvMeUc;eJ6`8jlANwL`FZ_$qrw|mv*du3$o&lap%c9Ks!RIj>-)cU8$AO*=% zc3jG(Ps+s(t=}Wt0l{{b9p0nkR#ZQf)984Qt;%M-1ph_8>*D)MXuo*N~l?N6s=_d?jx2U)mRzQ+2COifC_edS!Q%Z7nZlCZJF z&HBB<3=J8a?E^H~b!c&JSX%B+U4jd{?tGyhV$ZQRwas3>xJ3-Q zRjxHU;}(+?tDe6t`~I>|*b%!tE|*d^k!@(lZ7dsC0!oXASLCZMVZ8T+4t-qA%JMK_q(I z1-{Bxxapxjj$`4ezOMbt5(t|4R0PdB`}4`mlt9TA^}a1krxm5_Ba*LvK5J!luZ|TI}tGcjYub4#jxLYLH(8=~ygX3ysqc#B4Dn zmc(~nPN+$Ywi*3cL_VCUU^Eb7Cv~8$l?>7n;tKh^0w#=`Wwvn*LlZ2=9ZRe+T9i-v z#AP(5q*NBg_fF`nDI*fSP0dNDPY`-!DYOEfOnSq1KyoOBkT1QgIp#ddr z^9^|ocYf3#x|~t`5}NU%Lv@`LjpV{Ba1Zx}aN&qaGrNg}1|~sB>%UokQg?O43C9n^ z+$-0P_GEljW z`0MhyQ7e86y}U5xce}_n74Y8_Pm&w>LR$|K=)zUFr6f>W+o^G5yhbiNaB9=K8Jjcs zskYy!Pp{Ru7!Ff4{ONB-s0@$o5`FGKQQ-9*(0EfGdf-C&0gct4!smxtoKXa~_hsa= zNw*fv3%#n%SyF?bR6-lEWnL22VhY;~q)yS{Zf##G({7t!(ilJSNzmD`7O2}XM{4hw zAJPOysJ~+epBE7RS_nn_p)(VDpPuggF3V3Rjra#s`4h|!uhX>Cucqtb#u3<+hp~8`ckHJ`|%({nkG-V2%vRd7x=r*=)g+lDgBP~g>R;EW`xT63mze(Dx`i>7- zl!4^(ddH?Y4xZ2Rw^eNtQa`A~*wA(p@)3T^^CR}BM-iL$GW#yYpej~&ckc(yMfVkn zE_~VlmK=ly$8&F@$Nv6cI#T#tezlb9Pihr$_aMwP`uD{|%UIa9)E=+F;uuy7_F<#T zvW|u6jXYu~BN)`xsPaq7NX;@>CRpC2Tb@GHA4H)7m42MHN$ApSRyT-CU+PJ;(ZUBL zY)&`hL3P>uroGLf2bS$k9SNvuft(Y5rBqLGEAMcpmd^`zP> zlNi*-ZqyI!BiXKtv`U65j)o%Y?FyJM=9gO=t;CiGjKKJgb_hl#LT#YZdbOG+idGtG zyQvb9f`1v?9ygHvhm&F$n1SfEb4PNrRjCKytijp{6|S<@W~`MZ z&t#$!Grw`YZ0xRmcBP8Gy6YB!^2N{egf>>^}Mi(DH8HU$>_hBrI{DT*0sjRld6_Mq@@T63Cn`6pvgxP=$Hyj>H%5FzY z?mbNF&DWRfO<80cO?*PTcFgH;ye!(*dv|B(#8g^sR!AG({?g4aZf)_{PHK_$T=o(Y zEmZ*3j!l#B?lvXrHt|kp(7L&%sB~qJwgiRcn)PKRUXkL?a8|Y@_0;*>1kcy=lexb- z-mt*S#w^Xno8W99V@kNL*)A{l5fXE$*+fsbcB-mUm%N_hkyHp~x{l`V~LxERwFnx(dIXdjEHr#jMLBD6HumVrz_^)|7&+`z2GJ@=y)y zI+uxuRMy1C`T-UX?Ro_tN3|@GHdBFjchO`*W>3+FT_2WA67gJZB0=dcIN zGEn+SAC=pW{zl+Ypm386(D%fc$=Cm$fa z5hf1&K0noxFo|U1j|f?gch2P8EuRxvb+q$4;<^@jZ8%j**I#zYR^fOlnQ$*DTuq4v zHALm~E!n4-U=6f=uNJKqKZw(yvLNI+ud0dY|s3agU2Yz7c<9Sy3Lsy#4(M>#CxZbl4=M(W<(x_mrA%psmDzI0xxp>L8Lc1Pv=)+5+EFS#E(oj-}hx#8mM4LCIu zGTOBW=};CnHE-(NZeV%#RO5oG`CCsQ9In+n*ht`5)tm@_@gt>d?$j0cH0+dWqcr_* zXtfTUL)394O6vmbQ60PScw;WNPq!#2ERnVTiIUM#B4d30Vas(}Z@0tnt`mH(B}tOD zQLivP@zTu@7`l>?MbC`V!4#(Jz9)}$@;b(1=Rx0ZAWoUZDu;wB6_$`RG+Xc5En_!SUt2y_?1?T_wNB@f&~65`7;~|N znWpS)>`X3?nYPAd*p=Je&c(|58Muv@NQOr}QQ1BBHn|$MB+S<{Z}-<6*o@hx&?Onn zsDb0#W9u7FU`IuC~Q<>H2Aql@@SYt?#YcbZUJ zaXXY<(_^JoHZA9dv$&xXk2^{1GM0yt4QfAaJ^tBm=plb9HO5>mLUuC)FB89E6e`(J zJ~QvBE5>J!x`j?;i_Wq#?_Q7Lhq`lg$3-{fc8+sBbRF2TViUx|Y>)v^x2)R;TK4Sm z`H;?$z$9OWJxl{ss@K0jsg63NX+=jHr_1bph4^WMl3bZ6{l+Ao7n9#15~|#S0{hkC z{ZE)c{zg8+M$OoVYDIYe?Qe3AyBe)A*cy&z$aGaENi1qEKYkH^VMAv~scA(^)1nZY zoAp)s*&^AFnsi`(CoiJVKV9-udFvmVvTmR{$s*#q0lCzcXD39D3gw^O&=8y<3CRMT zYl$Lk?T+azMQAF9ugJ@IQ=}~PoNLxoyLunsBw|TryOaZ6z(J^OyAK8ViN-AC3tBFG zi6BWF>Ak>yC=jy!CHd<@b4xRq`GsP9P+qpty`fef5N!0SpcD(EiI8snij(c3h&L6Y zhdFyE^}x&c+@j0V5h|~R6U?jaRlQ%{W^LS!4@RuN@WCplMYQsFMAUchj?F6yZmrs$fLOZ9-k1p^N9v>3oEa zr3bMDfku1R8Kf%TCZ&I#?)6ENR?5WtaW>3z{n#RCl(Z*oA)9q+O!HdpaK|R0*Kb+q zL}+UL=0nZPMKd)6Y5u>2-{`osZOBmVMFqvmAv?;TQR5y1HHtE z*Yyyi=x+Q2*Rh77Em^nGo(#slezHg~_Sq46y>>q^gVp-Ac7X9_px&fp-o1d8KQ#9m zd~k53Z27M=!u_Al!v~{VBkZ+*ryN}TJ8Uj1s=5a-c@|k4Lt`b6oAn?09oVfOjsm`o zLYYvn(%9DJbmF!}+%U-oD1-;@3TK6ro^IBcKyg96Zt!P;`o5y~` z2Cw9KG;Q!=CGSaj-KZPZR>T}HTL)Y9PonuSi&SeAK@S7o@-xA$+FWtyW&8t zDb<*1@L@Ev5sOdjUq~uj4M|-9rKH2?6p58+RX1Qf;u~@k! zElus*E!kC-+3gs;R3%9%oyoW>?SAYvB5b`$T_e|Rel2s#Z~3}OawSNhdIPEL)Idk1 zI@6vA^<6D`vG^YGj)i)!P6r39O?S6NxVsexrQCTgqwab=$u87Q5XYgIT1-+JnRyO1 zuwxGOzFuRGFXfS#;P^XwJR>Q-9eM*a>uz^fvPxsO{&^A_PikD+91g(PR%L(f zl#Muz2Ihp_q~BFp-{sAjP=#zT)e|kHjq{=WyIsTGFbYD7K~$ycagWQlAPh7-~1skTLreV@U*A~ec}pg5T}LEU+8{2d!BF_yOqHyI^7n=`5lu*_L|_M z??t`FFKSxQaU7eA7PqY7qF%o*EvGAc-7q)HcBwgcFu$33d?sNkvJFv<6PBIMM}W)a z_T;-1Q?Zy&!R3Q*{q~F$mdSS;pW+Wl^CEy;uJTNNT;;iZB3FDgwvVDRdsnyucMJ73 z076~GkE^_fPgMDNzM0Bf`DT3#ugE%z{XA-Z)|j7P%TMK6zBvn30X^%$icgSk6(*CZ z%<|(Z^L%4^WKV1<`>F?rIoEGq6PxsY!bOBjDDpF*zUA^k)Z@98JwzJq&Q zrcCEUna%=InQp$fbA9=>V(6`6DD=U1p$^Ncaa%Zd3MMnCcT{yTz|Vx-TnRGDxiy%~ zfL=sjc!^K-F9wUkKCb{@PCPl+XGO-jF9KrY3a`u0UFN6nKY$01_jDD`z*o(~IN-1F z<$-wpnm$IsU0XUga0D4V&Ujh}ST&5#p0ay3id@y4faT4{iNstunNL5}n$Kfk?0NjS z%1;Zy^~m1N^$+=8d8~8yVWPJ))qjSDVy=%evxERS*Y^c%Mu^T_pO*p8vKXp<3m3SM z+C_IoQPpCAhlQM^sV*@%M^CnF0#K>|s;Pzngg=oOTL!Fc7 z+_jM#aBV;iz{WvZC_SNZi~J3cO3#|rwgB@m*&SoRZ0(eTU&#&XCsYJg8yb;@6(N+H^!>=!) zZ^??pAw~t7F1!f)u7%f!cwleuA)xnF$VWOy|Q(;rSR$tDr!FmUPsu9Co1cn2L2s!sjgI9R5|$X zB#_`oP?zd5#Qp|8Al+5`v~uuNLI~%_5nJ5}xc>tjF)Mt?p((uPdMx>?y9CSaheWPF zNcP;Q?wjDdfRlhLd@);hbqen{J74z@v8UVze=~(wERle7bu9>Ns+QWh80QbH#s{J>=t(gADM??S0?M_vyq< zl&;tDL)6v+T6LWpKKvMZHk`$^Ud#Eo!3RL$-B=w0l9`s-Vmd({^Dy7s6?}GrxAk`d zZ21qx+dFQ}l26qS`IaDIyOmXU6SfBfV&i4!mSnpbllycgsyY?mK_SbtQB~TdOm0sp zMYY&R<-FY9&L=0i{TFD#t!Ghw9)4X^b6mCk+~Mm-XHJ=47Qy#rvJtX+fqRhKWc(21Qy+hk%TDbM(z%36di6}T(vs%V$PC3 z8c-C~ceYAXRQ+Qj9hU2RJ3sGH0T3Nu1#BZsRM+<#fa>uPbl(BI#}e=JNC0cx2#p1b zxlzBhen!?JBSh86ZDPPxYp@X0b+saNWkhHY(X;DOon2k^!Y)>1^m~11TDd;+ zA+OR3u8&ySuCglj*_$HlkZn!X5Ajz)1gs<1Z=Wl%$(8t+EAernaqL=8hxlk-M@eu`XE}1g)ypKUbyyh)u&KND5%{? zX=^K}zJ~$ELL@g4t7d#uA7|eB%9|g;roB~1zO?1q+%=MFO5p`X@&#Z2<;_=$bR@YB ztS`hz?ka!_h%xt7;@TXWZMK5?ZPjG9{Q)1ByBi-_9Ncta7{1DCJWza-d>#yz8r~-o zFAN6P$-6rY(>1*20!jFiuuKQ_lLl3FUuoWMpqm{-Q$5&<#?9)zcw?ZlD+FGi2)pdOs!U1-cRXegfT( z4#tK`^!Bl|{*Ob~ud~B6VN?la8L*p%B0X^VoRWn2bMX)lT+XqKyD)J1AwH~DJsW$~ zXeI7&1(rhhIB>D4aoIqsYp3!<&u(=p2Kr7Vhb`noU`nhVZC=Yn%|fg;PORBn%#}ql zjdVJTHBVNVx0@lz#M%P@Ce~ge^^#aq#o6{PJ}&nHK1{52FFm$Fj+Vqy8zK5>hItVH z${H~@D35^FsEe1C%Z=05E4B8CqmYfNsh5zFg`LG*K|Oon7(|*0xbbVxkKD}^>E2Y6 zpQ@_-X6PEEpV%G!w)QSSQ~3P7IN|H0F%j$H*j#NNsL*>^#c{d8HvkX6z)y*?6LPgf z!I$8cotUe=1NdUWYodwULDy}-xqn8JwgPS-%oe1SyFN2%C=>{<68?>7yFMwr;tQ2- z($}$=iU)NLxqG8Yx1{iVA-lyY@W+TeuL-uBbUg7Nj`y+h{>9Ajqf&U`b~ouH@b6vd zXE?cAGs8814|w4^x1FXq$6w^9IJqwqx2sz~R{lT`xZtvrbA!K~#$U=aY=l>T#sg8A zhj;K9@XCdGH+U=_-Uu;lpL2un$H&!Bc?Thi<8!qQM7b9F1s?|NNH}|1g>kfA@Erx? z=&piejxGU)qub3S*;z!cV7bp^wrjxtpqLtPFi;|UJOC+tRMZxb)RQm8v0 z=FTL%70*`-btk9rs+Oqk_%wcQv2J)8A732YFNLeL_}gxG^1cUgiUlHI2h!UbTs+I( zDNZ{#es3&R0Q{B4qrr0Y!mw2k@c?v1FS_w};`|q!+vhp=4kr5b(C3N$896^)`+dMS z0gJB}t@MkOVzD7>rC$#mN`H#rxb%+{9GCt|;86MxkdksAO8*IPoP}HI{}Mc1`ohzt zAMm8~U%^AV^aCDBUp-Q)^fNT{bm<2?l>SuQ)1@EqQ2LkS-l_B_V3jWY1P`VEfOrv? zek-2Sr62H6`UxJFeuBrPAMkYPcMvCCQBwLxf~QMAHA#vzN%F(TD+p0Iee+nvR-Fg* zBqpVq{jH-SfkaIv5Gb;WrrmERz!iK$_wSsTu zm6NKc$$4=&X4_m;)kME@9j3T76Ct0mYTTB|{clA41>B--K>kux&O2)+PomA0YbH-2 z@TTg5Yb7S{$of(Asck&xu>J5*Xy0z6>@U_h@t_{6Z=>q%}JM> z*3ME1l-C@;eB&9xd(`WkS^VMvc5677koPc6ODT9b8B1(HrJ67p)6912vZ#$c)yR%bCGtow+o~ z5>rvGT+9}D<<{WX``;Y)npl>6iXuK?N#%Fh8oAcu;M+&K&$Tw3tl`n*LE}s+!+?Yqn z(T=YXl3-!hUayJVmS(xquYhPVj*h}*rFRv;q~kiib4bCKNP-7U z(MV}QGsU7CH68$=|8J~!gW(m2Bl4=xgo&BRW;&k%#EVUx%B)O1sUnw*G_9?bgG!Hb z5H(>9))i_{cobfl>)hnO@)?WzBHAt*FqPlsg0VroVHCQPnke-)JWyN$nNCPhSO(IL%#bMG2T8YV`q_1)nYo0`jfu0i0h@oT@ z{?5jTk}`xW*^KfvIDv+~3P1QS+yNn_HP-=mfyyfPB{4juIb1}6{v4C@pYaW*QIp6mM@bt@F)aWsjzRlsY_ztrYF&cH?TNq;MGw)!rDtRc^c0m^-Ez^@Tq z#h3NTl=NBzqNhU|C`myp+uITv%RvV`+>T492se#@lozB`KpRqD;i=o`K zMdt&Uwn(d+n=`%gN^lkOwvBvTPTCmL7JXS5hA#{WqGkr{Djy0JzEOc>`<_0J@|p4z zKF8xf+A4Y*P=9_)(rTcKFvVggty2BT*lu|%AEK`QJ%MV9wtBf5o1zzh*ViK!i+$JP zXkeAAcm}vojF%tW%&LUklw?$1gJj%?LMan+*_33IC+SqYtkbZiTJvqT7zl2`l}0cE zo0DLMs`-=o#PurgdLK3|-Zk#-KIQ%F%FpG@J&9on;1cuG=RCmgU>g~g?FhemZ*L5%FbOQnnEMs*E@+T}7ok&fP~7(6J2 zXS79Nf_6k)1AuQ=wFHjcf{6wf{nnDIGho>dG0|mo{~d7Y9!#`%6>~7g0TuL#(KI^T z)aus_@O9P%?7t0f4+8k3kXu3i3~<3jkcUAo12E)q&C05#6Wel3^iPWCN}_#0QU4j_ z2?5(?FQo#d>z`P z6rR!67XFNub&71Nr)4S;^v5C45^$rX_T!LJL++woinRv=Ybp}`IA6O5u%-*qqlMa? zfLjIMUZ@obs|4R$n4skE0#1_dkHRN8=j0Ktq>;u(qp>#kM zWEt>E!8>Or{Da_99Y^b;I>ASO%ByywC{stZar3}cZFB6o5giGxJvW0-Bc{dppg}Np z&R7he1g{aE_c2`4DTV}3Vz?0>G(m+Jd=W9;5%5B0uxNS&oYY*@J7X#SG`RQ9OpyOI zqQ4qo@GUUn@3{7p?_G+6Plw`$E8_|(y+<3fB{oYid7H+Z zOOA3m8|wO<8_?O0@+s}~Oz$E2yG3DpNT!qB)PS!Ss8K4dsxq}9dq~ohZqy!<(=Blu z@EKSd@O{COAN8R9jC_$FQ8n^!G0@F`uZ)N;dq~P$KfoT6^Q}N_z$aZnJm7m%wxuP< ziq1=pwZ7-jfUjO)j{`o5cuH%d27I$U9UAZ%=m&hyQcdFlpC+d9fX@hh-vOUZZT%GS zNxGWd=nk?kYs6wR)~e~)oq);IRfaAi*!&4)TzZmPm7cy5zUzWvGRwPyn%j+vwSbBh z7gxPNMeesh#Qm$bKg8|AHk9rMUhy$L>@mKapG;IXH2HrMNsoAM_LVP{@7$NMN{x7J zcSu+Eq_=(iv1=s1q6T#y@y3IlbXvPmrEJ7|41kSz$55F|BVN_=ZKv{axl{3BBi{Q| z4OM>0;-)6o9~)2_LQa96vZ9%GRejKsmD&IQ8u4Rf+eLISGQjjopEa2uYbIBD$&ixf zev`{aiHb`p3PhGfg@N(hkS;M675|k7KR4V-CD*WX2VINSmNR!(L_6OF@)u0zi}`5h z{{T$c0pwPY-FHTCZ3A*0-W~;c7nAuJ1H1L_S4;1->uq(#ro{sV_9!LWsjreoB~AIQ z(4lTFdqp()$2&6W+6j2;X!7R#UMTp~X!0p+0|LXS!XWV5s-b`4b>F$Rl(N}JyeZ|DvQcPT;;n+VD`g zE?!aFZ^&7oHJ}=1W%nDpCmtut6(-X_q~@qj>2$I22NSL6Q@P^wv=;~9DMbgTmmbkwQw$8e&2+AU6RFLJONut7G%1V_ntmSf3=PZTeEXy7sTmZ+^Uk#%igI zzvP<8eGLjHHL_I!6CFF`0Z8~U*7LEBG>0nfm8`0S(T8Iy9<_eB&`Wx4kvr%dD(#kd zb_;yFDIAcgdz+YKU$00G%+$5P;DBe=kHMQtg{ z?AB&o^@UI!kCr}zzj8g z?lIay#Up%j#WH{YQ;3~`=t}#u??d}$BgV673bK2qGqr9dEuC%bdYKSx?D{1?uJT#F zQRVZp0=1>m_$<>zQjcjGhf~bYcVe1kb1^ewOB#)b=j#D6;Br1;o6JehRS!pY#^-xZ z!4pM10Glyn0QJ{^pB_U6_!yhDA4!={F50lHCB!@VqVn;IHeni?*biyL*h{fxYWADbF}KL)y)8kP~! zWolUFdX!@EM<)EygdUC;Y|Li=Ij9@r(U*aK^krq|HS?_ui{sJPD=M3Ys{40mDGw9v z%Ean#0HgN+IV2bD+;?AgGGU^_7=0ZGaGsEhLH6B`(H$nbk*y>*06Z;ZGxkipoh)_kcqH{bIwNwUMbfqvb@Dq790BU0ao)dh zjYIJ7YR@K-C5r5OIrDt-X|d-x@_;MyK}23dVzf?0j)L;agG;;|^qCtYr{(H*Vc$=1 zi2jhPYo~zk!rth4H8o{?!u2D3z_YOYE3iDl#qwH(s8?tdZt^{Lbv#gveJ8jT z&|=cs0w0V|6v9GJQE1e23VkSUN;{;L;7RD&_)x`B2&Mf!aEKxYK87EGtIG;8BzO|T zllV|s5n@6+^vqHEQrM9j@oNcq;MYpQF~6>nznEWl3EtV$|Cr!)QLX5I6*#0^e^X3J z!Y5@r@M&LMRZWBM1W)MP6(5$4noor zl0q(-EJvCw*U?GO!9;IpvYa}2_8oNrewFxPfw`)^_GH@^CfX~CcKaox%;V{$wm|?b z#6;txiJF9dcb7#(*6T%hzO!cUM#xqp{7W_>05nNOdg?Oea z7e7;dJ-Ea(Rk^&4&mPXi{hAUdMVl}b)OS@~0R1|Z79E`<4Rt(Kllhp{_vqv<4ah^e zXt!-|h}=rT-%9?>$IUq_nilMzB-Q8^IA z*niT_fX@;jmayABgRcZv^_;#0A9Lh+;KXA9mjGtZE==kG?)&LD;MC%zzY#FO#}v1F zC56W=bN6!zGl4L$gy<$cnnICz79==lE$z+gom;82M^4(B_*M~CwW^|bX3~%po;xc$ zDVN4?h_=fSH2BAzP!m5%daH>|!Jh(tjp*W5zukKTPjG9N)0OzWN_?wH3i*9}OP++# zk97*2;0kTz{ste)Y9Ke@f!qX-$xU!0*A3qvnl}He?-~1S<*WqPh@dG}f^Q1+B{<D0?oQRKf2?jino8U3I z37#s!ZA&HSo9h!qDjrllY0dTLpmB4hFW8>;d@&>=3Tn3oehj##HL9HjTtu+f42*^x z3OpaJ2~Mu&PCgSPRCdLcMOqUu(y7Qb`cc8{vG{ziE@^0rrO?vNH$$Arx?X;k)}6pl zg8nr>q>ys%|1gej(0yk|ZUG|dzY91AzK~GwW$S(cGxJDE$)>27t7}f-SuR|dm%^1ZVG2wM=mXN!sE?2t~GJRzXZv%V{aK)~<3I7K_cL_c# zS2ux?@7GDeN)3EA{sNv`o~gSeg;$)N8(g4A2=0vPlvh_fiILx9N@xfp8Q}jA;deyx zp1Hcs2r%IsFL3Ef>aGEw0j{7LxGB@Sf{OqXVs#Hg(mvSGEvoaW%Mx?IA!+bT_!n^8 z8NSHo3_{TUU35gw84Z9?f zwoED3K2N|J;uU;2{u+RxvR0+HtL)Ft)vDx<1g6yLo&^4E9A1T>W7r99vVe%);4Sg? zW4sZ{MfGsnucZHHHw|)ZX?qtE*3$OwY}jgr3wT9iY^tLTwrYBxCmw70r z`br%$ur*n)K)!LhbAQ6vF5)7?;yD=GIQ%4l?%FVy!880_8(m$>mTt?CPV2a(BPAyg z^Vcz1ZJlZ)X59{8$Za5h#Te3WCi*6fZ8iSOuKwNtLniFu-0hgIE@2~t#Iy_}#Q6&pE(d)?Rs||1 zJFvHp=^Ajw{%Ce+UcG*WeRt~(H8;T(Bum)5ZA+S#<|p<=TY@R>K}`u;$BNTHK1usj zwu;w-tR>meb3o35w6OQAsJ&;8V_RWusFHl<_G9#nDZWbE3wy_k>Ahpc^xm-|d&g2+ z)Fu;`cBK_hD?|ltLfiBI+!DEMAbs2-gd?R|Tr4rz<;JhkFyJyw<-)9S;0pOEoeT?y z!K%K+38704VM2n@j1CI9msHuvg zo$n1uYZOi160NQ{r5h>=V~|Q!mt*q~rXRJR@U{%HAMqCs;j{BXK3~W5{yGwrKienq zHvL-e)3gWOZ#705?=5cvbNR5AkXsG*qQvnCeAtrzZvkxS;t70~mM%0$-S#;J&OJo} zotG|rqf0McSd358)N&GWshtZwtwAs;mhe;xmIJ>#e{V{PnozE$PhBvUQzbmK5;iOY z@XKOjKxynHg?wpaRD54Vd2~H50sLQaadR`>aiS^agwLq0h+9u#n};ta%X{ep4=Kr` zx@(0#6VM?q2_0GG+-kWF9|yFTvC9ozJ3XY~g&dT1Ket8p%)MNXi;a=Vn@i7%SD@>MUqH z%v%ss=Fhpl4F}?_jgnbP&8nNpL0gI6m!Pb~PvXZ_?ji)>e?xnBQ}YRX#z9lO^7mTI z9@*^LkLs&}XDy!#OrK$vDQsFJOaB6#FLt>KHIDu-MSNig81(G@crB}qV5c`Z_bp5`b(m6H zQv@Zz2QiN6=t0>5> z`V~IIa($Zl$ybQYeJ%mKLo6uvc@*$zm0|Aze+Ar*8kU_#1$z#J4)RHU&bB~(e*vhD zFjwsROaQ4Cg%u#x=kqDMy3Y0?3=&V{tLyd|^+mt7wGXsjg{f#K@JmFv&z87Awaa0< zJtns^F{W-0I>{5D9jn$qUuI-fm_0oVfc6nNqX;kr!*zQ@Cf++=)x3P(5DtobBE;90;|jEy_! z6QR$pADBIS7`h2ev=%GpuU4=le$k#((P8dFz7G=YaennT2Q5VAX^_lw`mE)XeT~n= zB>*TFvNHhA7s55l*)J?*6%~`Mu8OiBJDv$5CfnFQ%03Rz{{)b$tE22?0BeN2P#I9Eq#nTHWs;GJlUk*u zUjEQY-JePdg#dbc%wI`HCVJPbcE##npfb_Bx?|fNfVqPjYzPxl_cVx+Iv&&wjSrSprF^#tD8+j+hYO>u~^Zi|}RebcDjoB7Cb9z!G=|JdUthXC60)XEDWj zQ6KP%3tVsQ1ss7p0#^i7PXpg3<^Lq?172~C>n$NM0eAk5U~%wZkdOhnAC_`g{O#Z> zSY_}$elG$K9F%{K!zJ;p0$&3jGA#cCGo|>Io@ff;gCw#ae+0k1U-yiRHS?YL+T3NN33|jM^&RFp8*yNl;jjVrL#Pvg!_v4I;qr9 z5oM@|pC|l&7-Mta$Z!=!z;^>a6l2-y8&!WBSQV!iCWC*mrK}<;LRF*?f$+OhxFTfS zP!{3S;OPj3D?zK7ir^0zGG{3Ye*+UIP`wup{mEraVg3%>0!~G$J_L8o%qo5O{3HAZ zTwMD(`24^nawJ@n+Bm*`FMz)(ZugD)D6OJ8jJ}bjb1`o6M(mObBct~~4pcl76=w5$qu{5|2l9K+@xbRtg%L>Hm6(bbqQZ0h?$ivt zGAeux`5*jTLkASwy8$oZp%%xAL!traLeISzV5m8ojOLsj2aN8As$pE8kA`kX=XU2; ze`^Lo+QA^1h58)FC)>*Bhr*tUvOj7=?}Ev+M%fXJfKJ6^o{6%bT0y6W$uvjVzwodc{80r-b)k|e`Km&He$@_Msl%`9_9{=qoY5L~{-;?{Uv?IYjc z;tptt``D7R^1cAn(`iX945&{kpd?k%o>cbm`H$MN`>&)5^>blo;ayg-R3HCMQCqJU{1fp&LRHfXCu)E`=0XjJqN}cc-A5%D$yxaonb6R;J z=&p)mQsp~cQ1fJ)|x&_Ce}ha~ev=-)%!{f*FoD(=k* zy{_b}!2b<#Z)Qoo8&IEAK$X;;_|DxF=W>9>)gRPyHNXh@YKXep2zenvjgWu_LVj0r z79p>Ol=~L$1Fa-#%T#ZR`uX76tFRi^hd{}TIxV3;1vSrAmhi7Zt>mgK;ee7bf7uf+ zU?hN1jZjl~k{pbrHZ1lvBClq_V8LC9eg5RU8c2ekkiP^Mp`$SQ5d}4rfGT5Z9lPRG zCuiSSB(ety^^N6vK&vPdt+D9h`?#^}<3Tl+`2u}oS%?2rW6_jk3&rLei*Cw~8_R8g zabvj?Ps&;>;}Z0+xUn3FyV2kq%NmPB{x?VPes zRG4#$kK$BM?(zpz-U%z_07Ap>@o+gVsRo;%&``NQSvl>`pf+rW>a&GD8r)Tn z1Zu`)Gnpv&YC95p1<0qO>ccuXYKF;vCW@+W26#`%@=R3y*h!@z)x#J~oq)+s$J>(A zQZC;ENnG|nE9G(%Na8XLvJ(PMKCeW;0}S~R0yd*^1_B`cEC}`VpAYmrrsA8>-v%My z$5gC|a=lJ3!EcdZY+rpVtol2qqLr)+C%q85`iCim63DbBOj-e?QEzUWUQzW77^IfO~FmZW~94E1zd2Y(v7G&9?UYm`oPbbS3 z27Og^Gj%V7fwZG2g3Ph{SRpP1dK6O_K)45Cz$i#6uo0koYk*6IECtC^B8j)d;ZNf2 zK9I!QYxJjyw_VOodAkWD@z$3*77*CQL@5s++`BZQT=XNF#W1Jt^KW#o`$wf4G}W^7s$8a7NhMj@xgbWWd&o?+B2BV1&9YSIUCOdF)go7x6g0Dg#W=f!D#n9A zE&n@^pKYj7GW2kjvOEGa5RO(|Pi>LK-k8kds=fG0(ESRlh-aeGuPJ;Ua36tv4V*8q zPhJ{;v4pY0>6@1)@m;->Z5Qn|hT>m_VPF;YR?MxKsqpG7@oOs{Rw8JB>~>a=rh`>WJnUkxe@JP_Z z^5O)A=XF9`84Dgzl3N)I#^Yj1Zk7KQ9z{W=q8V+dvSw|x-q77ZtL3UryVpo6({Y%D zK?qLw37GR#%peh`YP6? zY-m!GsKKt+<0M|~c~YuLFJUqIO50`=uA;=Vr)v@}#wbtM z_T_XXHA-|5=HW|dVNdWGaVf!`ii#`weOmA{QSl7q;cqb67oy^1dI@>gNEqBF-Fxlk6CPlZ3nyRbNV^iLdQx?+J1-ND|~Z zkPzf&w1wcyvhyk>kaLexjdRfsuy&X`iSL2C(?#*CzsH6{)sH|jPw2BopI`FHKF?>; zRbUXAy%ykAAq78tpy$RqCLbUc(^VyWk-5`m}3q(BfTD)l`?PY)j`O@b&w1vqs zn#m4_;sm(|ij#B>hngg|i&mE+5N$h%w!QV)PoFt_a&!5t!sIKW+!=7?UX0+)h;>r72P&LXcp;4*h7YANF?P@QE5K4)1+_H#nX8(xh|2dd zbaOx>sJ9WM@rZfuZ3G1rg7Btb(=mHd_3|f!Js|paFU-X*mCr`dR6h5Q^I5=}e7?w! z@+nmLJQC+;d_Mnz)jFTgN3j+AL`$5{1XVtj#&)qg`CJXSLkX3uB!q|}pF$_;X;{dhu5BXPnjyF! zlwU+b4FX40{)RtiHU=>bsU%RYcJ3 zG3P;@3>4~u#rYy@ZoU-?Pw^CLsCSL0P|Od^jVVmf!2E4WB&`MZR%eY-{ z#b3tlUXNdgt`0-Lm3fNa+zWhmp)KdT7}EWf#>e2njlV$SY|H@V2bS>17UiXvZ>KLQD`O5nu2guz|jRw7}Iz)c_$-c&p_ zl@bXx!;G`4l`88LXA?Bk${l0(SR_m>p^bn$U?4Gwgpq(Lk&v{x-d0Hi8gq6vo*N(p z&Rz^5(?i(Fg?ge4sORj_bPO_Zws!`PU&UO06R&Jz7)9n+Bl~t$TqoquBk&S|`xKVr zi-DI3#(bgjbU5wH1vm3QK89|H?Y?KBMWz#j87UoO2Z@ly=6#8&}&mh?LDCX{lRkj*a<_IdF7 zn|(GfDnhnGw&c%*nl%EC%HIin>jaLd+?&)Ih7;cfM)em7Z&Z7sn4p2`Ie5*FG^&?) zP*krJSZ`!rW1x|F7oaE84>x-4MbpqQps*t9^*4SG_zdvMsMq1~U_9dM)~V3I0Dfl;Xes#!@^#U7dt=xj&HTFh&psRASdNmU#*z zcn>_Ch5>ffU>{Oa&@2CKi3hFKSxQaooIRjSH79U)+Kff9Fo`8(X(_ELd@BYg7Ae z*s8AijpbVr^pK|Zj^-8aX{`2aU)b2%blCEx3tJX79lD}%MU&&yrrW)xWBCgAC{V`~ zo4quQaYuvAX=z`&Vrk2AtJb5jyeElckEX?q#OmXKNOw@H`P9y}4xTr7Lcf!CwBGlm z6^#p;o9y-5SLmE#$ylElm z*!o7rHf>t`o_pu#EvElBa*f>lCGrsH3CVDjD{!bcjH_Dx%&}-8K;-AAEOfM z{oB#UENp3Onl^3mvK7;&&1yTYLwP)W(y{hNXiRF#M;pFQnpE=Xbn|&S3o)S!6Lz#u zo3>y@TN6nvr|70l+rO!C@qs|o8^(;SZx}OUhT8`DJ9}Ac^U|h8rcvnZ!|74n(aSnk z)F08dl!DjuqK2mE+N-5)S>uWoO>OoTZ=+3ohm@#tej)v-=5+Z@<*$_m?)vRlh3O^eEMp*N6ywVz&A z{+&zrSgI%)T)e!Ya~{Xm_gDgB>c`Ef_bh3%20U$=Z^%~SDPGY=TH0nfy*wLuV^1N+ zly$T(J*|nnLMu(D$xZP<=QcEz_Tn4M4EHUHH*Oa1TfCiX*$jI=d_yZo=g^MnuIskO z=#gwMraCCKkkP{@+2iP)WWom^T2GR%zYJY1>8di!X>4m;=JY1FhxCN6)z|s7uh~@g z>8Zjg5jw-^=EroCN>_%oKRtIA@OIaSf{Df7k6_OG%CzJ0f9Q&~rOS_V5ecTm+eGD2 ztxbP@Fd6sVYUg$p%AdFSH#SFk3tRZgxVbp&j*Z4aySJQdZr`Mb$+*wrqW64n!;~>E zP%i;^BaU5LapxxDj)3eSy>wJPC8+d(OOMUO>5bVmSIY#I*8kFSMh}pt*>2^ghfKRt zSjvOb^R6amjwJJmoH-8!Idc;~DLL~3`6$U09WO?v=$YLhQ}h(+M=J?hp~$4x#n8Qh z@<}s-kYjsyw_JMYrCXC8Yw_os;mu?%grFIoV_8hq{LUqOtlNVSr3N$_%r~G1fUF?; z5y$!(ke<9v7j?QMOQg(j%_-8_ogTnVs{LT-&$ui5m#VbSDAr*(@+%yFNmJJAb#cQ} zi|iz0)PLwTzaTSj0FIlT-Y86yDX%9H+50x#Um{ad?NucCMtS=X_N$O7{msK<+&71! z&BtaSCT7F(j%CxPAv>)<*l+3bMUK&`glWk_^>@=wRIes$kuzHq!k(=7}-=j>^n>Sr0M&}yu^r%vhX&KeR(%`F6(F;wrn3CAg zizI1s%VgS21x*FBrlY5P(t=J)5nU-PH4?Xm!ZM}}gL{cgn}O}%36aSD_YRf(roV- z*jU$DCH4(uDI#v#v;!Jj<1v}X_gdOq8m6^3FI~ud>QE+5D{QLhLo!Z6nzoy?JYosq z+FKhJHq96tH`v(uz?KzzE^A$JYPtPk%i9|lH|=&Rf#$Z*DKOErrqU@gr`HJ5jaKiG zSew+VB1xOn`ysSFJui}Kk$PRAE7ME0#_27AbcM3|#{!1iz??cg976NfdmW*9>s^F6 zQ6|ND;lx__m5>{^qlI)VGn^jw*uW-V51Airlm8XO1iqL~H5O1OQ6`;B%C1ECzh7Mz zb*k~GAZ9qd>*7U{o{R^eFhwA}hNgd*-$+ZL;Se%2}?P7g9n_XNGzf za`h=0Pnqh0hIE$8WS%Zo_XV!2_^rUDl3yPSHKp>rChU6UMkDzzu}xR}n@G|X>uJ7Q zWZF2~!XROo#4aK%R}5OiNX?Avks zW7Fb5o!&MWI=!8^4G3r^W-%1m09Qb#0pmFHz3mj|P$S2~U=1Totw3C*yS~b*C!H%O+O$fNeA~D2pt@!UeX=h zQwfS>aLdJpcBgAxKibNX8o~Y=x~zZGy;Es^nK)i8s$)g3n^R&%tZ&n0S1~WF95*ld zNOQEaw4CAgBBx%=>*}D80wO_oW|dK)cxSjT4TxL5M_U8hZ3)b9cMyF^7+((Ng|V(D zvf_Qdb22?dbO8CE)3|8XqQ+JgkS>&4U&h?s-7}z+!5QwkK)YnL?$)Q3szL2szvHo_ z#+FkIdiR4^_=WHt!Qv#BHMX6gkzSfVp6(@$?MtRjYhT*R5N~Pgq{)Y{)Ul|2hAkj& zxbIFa|1_iHzjN3ViCk@i7O7L6E}V%8(l}_^wA~xqn;1>BqKuPpc60G?5IWdj5Pt3w zwE1pZZ04TaVwJzM?>BIZ$13Vd6eZz;PT;UZ{YEp{G-EREI&5?^NQy6}6QF|-d54*7 zT7cKsVtQOvXP2zJpHyyF;wEK5Nr!-in`naUzPT(D(*^22iXH`-t^?>Q6FOIWr;9;? znA5EnDKV!L|2>O2UAB=f$1+)_YZyk)T7Ih2%?9b#sH+6hwbg3At|aJ6YN>)c-DY9p zOI%LG*S;W#FAeci<8$@Qa~fG_o2|7v-B(cRRCPHD!c2FPgpu`BxEhzW`ce}+x~L?` z*K|M8nRzTP=t7c@RxU=$We|6|qNIGRqgz94AfoFo0@2+_4qD!=#N-8>E_?`aBH(lp zNm)JWl2JR+P?BD+6O)%-x-r7aP}iiaZycmcLDJPFT?tC0%y7CoBH-;#cb0VLv)!)r z*uQ0Aqpf{vFK;5U7+vV{3={rpGhUPT&!ZVr3gyq+j5~%UUq&P)n_Cz7$J0wT6^z~= zBl42XPdiv~X4q?$UV_8lJ#>5Pz2wXPWL;i06-( z*D!Bj!rwytEx|0qv|_^FTI#jRd2h^jF?V9p@kuZLH0C+XUqc{%D~Lh^roNcXO3~RK z2`SGfW2U6+ioi_ufodJH=JZ7TmEzGsO0 zdCaSr*HY=+aAoA~#XO8zi|Kz=cRAhsd$g$hL4q)b1|R9T#flE=041um^bKjb981~V8&pkVpe0qpX|59 zjK;`4{2c^*Fy?T~F)902;5N+3m@`uLZ;@6bX;om?FJ=Fq_1NpN%dIhEG2w3#@Jx)} zu{;XXIld3;-a(wtV){el@D!cvv)5yoH)3wVgumN?zm3tmmOsaIj_<>|>tV+!@U9;7 zHR#m4i#KERQsVs>Jzn@0_XdZ*=9Q6KjyVN$D<=F2{x;?@Hg)Qn_VBkpd)?jN+5c~_ z`}4WfOXAo&6_0M1UyRYs@HcFLePa*)HazDZR0rNU0{OOUkcQJZEZ7e4I zeFpfum>W;yRf*Gi)Cn`^jFS7$Q}*A%E&S=lv{x|iVf0#B_&W&yhhy~Unc~!AXIo>! zpI#ID_-foR{cb{zUjwULcY3~kR=&Q*p_2S_Hu4|X1cBY zyxNs_XC=#)WFrHHB!J9K2m)em3ye8TB5sI@2^a|Y2$;hGLpYKEhWtaqk?;4ax_f$N zXLeWek!0=Gbk|+4UcL9~)vH&$%N=A}c%gS)?l8Gg>`jUApYr~5p8w+cZ6dsN%%XBi zwEgKk&)`{~=trk;xv^^(kKD%fjzs!T@qQ=I4|)D05w33Ovd-e!&+{#IqUG+Z74K~H zL+;Lc2hXQ?+FS7h=yl%5x{r&v;62XvBYxcn+fJa7DP>$@A1iyxf=c5Kr*h zE^CS>{^R{r9w|@q#eW^b<+`GG^T<6!zu@@~9;r9_>l7|G6MdCO?hpDNPxN;(d8J=H z)cph=xrrv(FS#XXkmnOTU*w7YF6VtGPn2)2aJi)C_dIg@&ILRd^9=Juf1SeRKAy99 z%g`o#!Jw(cdG@f2{RZXx{|S z9-f;D3W#cQctGxiWI|;e$Wa{L38qY;Mm-9q_x0Ch`o{#f< zKap?iX~3Vy=XnuN^cQ>tl?%^Hc>ap#FwY%4(VzH=^(kMR!u|`7_)UE>kF+t%Bi>*S z@rVoCFDCM#GtxFCALRGLQDOW>;h*MR^eoZepYrkw9`V;F3ef1!p{Yflr}3<5G~4PF zzLLDFc%H^{VWOOuQJ|DBuH@dA2tR?a0iG<6=u)CT371W;wLBL@f&5C=+rnSzmwbPY zN1C=I{FOZNeM$KHe10XJ*sjR$&-te{o?!haMtRt?S!eK^sYA>^ox*EGZ|6Y=ru9E2 zbyy!C4$oygTY28fa|_SsdA`K+6`tr%!f)mIYo5R1nJbpQM+0Cit*{N77Y!0-mdRjy646^k1?JsWS}G@eB-67*YL>v z5`356?}xvF=i(adB*t07zs9%xCi^S-*YK?4xs)gRJBOF^cx28FMuGg=i7?3*{Uyth z`5pZ|ftNFQWR49)f&8xIkvgR8WI2*XU@vr{%oF`x!pmhm&*e#$pR708{zt3c6R1yU z?Gt&VAJLz@KbhxTo>fs`B5XD9r9}9tyh|C9=j=qdybBzp-vZm{FAB>O@boB<-!pk6 zPb)m15{6~@mA#DUub&rzb!$7%3d36K6?pzJkNnEUa`JmP{FZqj;lgX=cVGCMj3-F{ zNxW>j3M`(cL(D(R`8kc8Mk zu1)!^@g&iIG6vEnk(Hjw6a7hhg`RHYxhM+cSHdNa%!?tOM>{@(yUZ6EkJj>A<4L0b zgnmey*7BUML(D${^D&-ro*Q{y#`6}Q_w#&^C;FRjx+jq#nxBF<(O)u5#y9%w6fS9` zZxx=Xeb@3X?K{ZR+P=BclSThs$G`h|q>R_-5c7|ON&h8G`XBvC8!qA5!ZRENwuDI= zqrYU@WVp01>W8%92A zw3Vb;)7#t2F1blAiH|FHNo1y{OHze-7Mw%UCy;sJfHl5YEgtNBTB@IXy)6|l?OK-R zXiu5ccn(@lNnrttkJs&?0VT36(O-SxSKo5t!gNciwlDr#HegAKQH{?y<)$wBwmfb_ zue4zW{UHlyhfF7)aSE;LH9bFZ0MH~0fY_hjWiQ`$(s1u{Qcz?0kQC4{?ad?ImuVX1sRNj{?*`@4WEF!mf7+1}nY6mc%~^oot z!9oZf@)esJkP12h$}pVY+*-td1W+hEF+YbQEy=MagDSFl9|>< z;*W!##}fpyA-Thetoz+-f~53CiP8b;@shKFNQ>iwh+C3~qlbNxGn$1<;|~%pYibb# zK7($|7do_7fSG`ge1^bD_9)%lw&N1LB10zb1|JLJrt-0{0q5SCtzOiCbvQ1^$02&) z=G_m|izGqR1CdHLtaYH1?aajWh9FtcX!yeBzB9NDqAm3_#iHCI-V`Y69)r z4M78o+YLf;JR6+|`#WnVqFIAg@6BDkq5ay}=(sPOzDKW(ySlo53nS!5I6P0+YEBna zubP;yub!H$t{xk$h>0N9fml&g`*yG9FircI_Mxlwakvg~6Fa9m#B_w)>QS+KZVznC z*DXuDnS?N-sUb{5=mOK7^+^fq!8NIYIHbzMeaUtSMRW?G--tghi46qDg93CDL&z7^ zW0&1rW5%-Tlip~3N`m>2)_e5{-3C5`>2d9wCagSc(gLJogBX;G+ee1})>GIiyQ8P8 zN2Q*;P<>&4W~iqpl~Hf(&fL|LO07^oKfYfF+&nojuS_d<>+PrPTp-py#;M)733K!{p4UKb&+ht-kXo z2YWK9zO?#>ll#-^wkwbHbW?!(n;zo+?z)3L3sQ^I>ZhrG307a-U+-C%>QS%TdtXm4 zwLa+ppU12Jv^J&HU+h2Jvq-WYR)=WHa`mzOnN6uP(}z--?(8zkS(H|H_GIc5L;?E; zQeByw)9Q2A9USWbTV*gpRnI-s-6v}Q`wAQJd&nw-!`CG7!0?!_cS-FsYDs&`@cQ)0VFgsB|uz`$7>S%1eA>S~tiCNy2Q93<1Ab zQmSuub*1_iW}XhLd)2|NI(VKrEE6uR{x&th{9L3C?~(c0tL{llY`@IiwED>si9AjH z=i}ztEBCXz*8cy{+BV|9AdD^4yzOJ5Due`o{ zRTne#nQ8TbjLgDi>eJWOQ%jgvOxmwo1F2P%(RU!dF?Aj?hYcw4G}nntZs zH!8Yy_wGZaFd2ImsCOD`xI&~it@%Xg*wlwt}`|qRvv(h-Mr_SDk0cI) zDKFiNn4aL7Sn8_pfM?4WX4a=qCQ(m`SoUjsrP>Eu6CZU4nh=`}fnD8B$VS0yfV6uhc zf$&{`SlbK`?*fQtE>sWh&(u?=s@uCVL8|YG(uRT5$!YaZU7LQJIwP}2)7OuwBQ)}4 z_2s?&SEkPRxemKS)pgk2d;4qTXI5I^$o@kN!ne9MrIx2vpG?v~y?#Gm>Ze_IrTY5$ z7?7xkAtHV0e)Y=zo20O``uBzXl(s_s2AmRJ`?3YYe4noV->%Gn4tSq33BI|vo?8C@ zk$ITRI;xTRz;2WI4;hpBMd9~bm3*&IKiCUNdD;F0%~k#(tnz@aa)tWuT_EzG?>`{( z>4xt9)H8pPTC^s$;6{ysS>V^BkH2;v0-^5_85J%zJ6CSLa3=BK!-RH67=AQ(hPI9G(c13L?P{)H^YyR< z;Zm{WulYEp?&?)bM8@wv)9~@{Oldyeqi$Ig^6~FX2_M%1hL0zb7)}oIim|+UT~kT- zM6Ev3)ROAMAPb{yEm~Sm`dEo&HAAVc>254+g>j0>y?SR~*FyEJiSDO#A;cU9bL|uO9Z)}-5a|Ok z?fXb#GMcw_u_{@X1@wodl0UtkX8vGeKw5ODuOIpCmlhF-U715d&VMiw$Vk7ZZ#b2^ zAG#f+azjXL_aosfSMQ|~d4EW1Jlu!S(|zX2GHg=ecPwgF-`M|fSgj$XS(bp4}o%_hqubhV+IknIs&`4kzat^-KBC)tuf;0um*bg$jCzHZ zRxhphr$w4%nBRPS9g=?!?qJmK#x_aF2bY;v{BTmBauO-b+R>z-PD=hjAL~x_naS>z z0AGFP_{>5530ablBl?4-seBz~m?uOiO{>?jLhKTN{p?!9tzMTJkcI4wW{`@me5g+Z zGClsm1Ca_t#TBZ%M1y?j4d5yRqj0*$=7TU#FoV;9-6OFj=E!R8y`g zlgj}kkd%AX*(__x`X7y~Pz0S-D*DMzu&+7GQuWl~l%p;`%(y^|QB@E;-|-!^H0On?D0X`Cp{VZCB}o?a7vVpgs!TAqk# zCkS{P*32Cv9?mL_qo*PJXz<8TRD-aG^d7<<>u(y|R918T*qCG|L1lV$tmaQfD?xGZ zG=j25mmbo5IjW()ZGqe@;8FwW?z5Jq5RbY=v2oABA*Lb7lIdO}E9z8Qy?;8hOba@= z5KMK;`407_t}c?FvrzrnqRb{JQJ?yMQxGw*{fAlrJBM*QUNjdc5dn$&0V3Y15N(9O zzR9FK35tCB`Xh*uLyWjue^=@ZwMLdq871Qj)#Gt@H<>o}1!C2n4F=93^I zEXz`?fbQs)C2GI={@%l>0rg$$;2EhieHwp3utvxKrd!JGQ!m>$3_kX%A1x8x5$ym7 zI|m5rQC~hCxkO0sM=C>z=%2G#XnlA8Ly{eB4nk$4{0DXUS5V&iM_j%L$XZ-RKyD*1 zr)Bt(H<%uKmBEJGEBM2*C`LYDrL^{@^VQCdPdUAAAv+7z zS5O`tmrALR?8)4xd7Mro2aD8$QJN!Rn!DmO3n)hp9jQMOMbR2yfe`Yf^y<`8V02IF zSATq1^lI6Dh{wTHKj9~*?;<|)?6kTBf(k72{ZZKR)F4!~Tqj@Zq(D+VJ*_r9EVJWF zme9;#lf3UB(}j{r*}QG06p+v1RSG0D&+A3J!UJ4hpKTHp`n#9W@!6LIv&UYvOeD@r zpb4EN&bi5vUMxh^OBBq}d!)hA0&qmMqR5t|O+z$oNTba%s96I*wUP>AK0|WXAZ(DU zP)#MWZ9{ZL4;2$k^68b0rg!MC!%ERNH!XUINiJ~0R1}2Aon8K<)}8Z}B%ZWG1Z1(p zSARg+c=E!`vr~&RE_7$l0bbS#a;jJE6AA2O^|S5+sG@s?XGrj$>fjU9|LaCd-j&LH z5vsFLCcq-~YIGj5y8oFH8Ez4(<3o_imoDyJE$h*H5MYEiBL=;0dKh66iRdnw$4`YO zpMWTr8BRY9=BQuRgdsBf`|7DDrn}ExrVj5G!ubRis>{LR=Ti0uuCMEo`_&dBihK(8 zFLUv8$IBwPSN#Iv4LV1r)sX37_1F9ADcJCR;Ah{B62C_nLYmJ;3N5MKpE-=8dbf^M zcM`uyErAb24LSH|Hsm?;Zpas;A(`i=&bXhsegHu_Bl`FGLWB*M;bTbMzWWFjs4r!h%TywInr5km@Ph;ksDHhXR5I`s`-*sA(;2hu zy>XxD$okdqyF~|r+C=>uW%sF9qv;?w%8`W#=_jef*9)7x$2vgjjC#xT0A%VwDsxDE zZ#VH>tcIj55A1$OUNkucgXIK?dOsIu9w)k;-|p+A+tFoy#d?TzC#&~gFIbpS->~lD z`wVs4^+pC1wk+|Y_R$IM#@oFl_~7-2HRcO%mIU+S&GXU$9Y>d&bU^CJZqZPlu0C=7 z!@5r4UXrSXdod9W|C6|+B1rNk6+sdobFZdcNkx#PYRkQVLrP^2MCwR6siR)8peuC} zYK>D;nYX6SR-aafQ3HRTsSZBb%=Uw&G zX=(MB=vB{F|Dw>LLn`X2MNilG^rHpj_}y3?ML2oBh~R$wMl`u^yB-~t`X|OjsL+=! z(d){p#t?vEQfJiPT^-Qk)73Y6kj%c%!kYpoC+tn-#;KF#u%6}Hd?^{-TZ zihAST;nbOGA%dK`&!VN%cawX1NF7?Z34HxNI1OswMxV|~KP1fX@1Cl;%1^+r%^0b2m?-j^{;#5>h}YFFl9>Zx|B2td9!eMC6tI~E>F zEuTieyhOcj50eB=eCOV~M7{7y(eA%EQr5Sq|LHRG=#w-gr50ua-82e$Y&Qky4#IC5 z`qK;Ge|4?Q@A%XReEos}m(*ptu$-61cY8Jr%m|<1- z^=T$M5dOObd;noy`Xl6%<6-LUAm8aC+b>T;v-+UwIYfE^Sz5gwt!&@Nn_>304lsL+ zp#!~o#{zKh+q=*+)3kRnIE$cXrw*l98lL))`qnN)wgs#g7C_bhk&f~bbyUv3sUI#t z$?+GYO6#>Xi2V63pKrkisl&?TaO$|5Wzno| z+AG9XD+QvZYbIK{zD3Wc_jaKd_}R6xKde{F{jyp%dEUR+P-dB8(Q-GLM^=}}@ITS` z_Y|1}znH#{w6yHyJq%~Gb`Bc=N7b@`E<)DbQmS69PszHQg)_LJ0=9aRi)hl^+yw!E zcmESwhcsn(_mlN3^%n{uLVbIQtZzfMw|dL>hRT@0L&582%Gr2vFBi_M?PZc_J@6IQw#u6zutcka0I9lHu3dxvZKxs zy+Q<=D8G=nV}uRVNZpbWZKSO9z?&cKJw&&9)k~LvkiQ(Sqd%(iJ0yA}`Ia@{_m^xU zjcB0^c@@=FCZW2bm>=&0%U*Id3#GLBc{elp=6yy0NUIkwKm5ojc2@ljyP>Bc(fn>& zucf3+mY)eOaAba5pbKhy)9wIDe*6(3?Jd_IM*onx4~~Rp zY$@tGa7(sK4@`D*x0yP!|A6{J7fS+pGgc%YMxnTn3IB$@2bjX6Lp{gClpkC&OyFti zmYr~FR<2*%e^<|9Ax)oLEmSozlhKkg5}Os=DF2;necgGM7kw zVQN{Ptivi8P^TVH!Cld`MWZjP8!1Hn<&I4~OAr!o>O$MLn1$2t_rn5~vBo|j{YR!~;;TNmdUWcgiR9(h_E-7=7`on&zUzx(x8e;=>IV&Bbgk7xOc%318 zH!d?`kfiTXx9`}LTAZcRB69!H;{~M5EB|l6C!^lAV?g8EEnSeY5AQz&&_IwcTm4Lz zaroB-18VTFx?o5R9@76F)c+nyyh{j0FoYk*9-=+Eib4*$`4P-4&{;tt?+`84-%n6M zsLx7-H7~G4KdjZmeNw`ocY~zA-lvuHg0w$eya}Xu5Z8a|<2wa02|?5)gh@w8PoJne z-_nK1@qVZud%NKFN7)O3Ok~stg)k=568ToNh!XdO{QBi|iHe(HGWLu=$MVdUp# zMAFw=X@bjoK3`Au5A`e+V(@$G;F+o3Dvg$AQuRx(A4;v*t!w}2@vPsZ0@E?#q1qn^ zEBIJc!Ck4;?zH;roeY+AoNC^DwU)~7TGHRG%r=pD3P9e}^yov7^wZQ=rb7kW?AoUF zC`Nkpq0G+OruN&UwMp;FiScNkboN?ik9|ApnI3CmHf4OQzS5h}JH?;qRiV*hL&qe_ zb%_bv6l$-C_r~{xVGZq7s1gzv2dc!j2J5>Oni77vTW?!0R(J0Ux2->ns#!KZ2r!$? zVG@j(FhCPUCmcb1B&cU}r4}sA{0Z|QqjrggV2RNb@g>@s!}5L{f;b+j=PH$PN?gO4ysO>prtftHA%O2LmCIy*90k2$i+haZ0Hp}GnRK1E7?~a|LWB%lbDC_E@<5MG3+ede- z9vG1SwNkPrUd)}XN04_l#uFXP@Qm&=X`eV<8{H*%)3h5;t3q6AZ0?9|kwljIz1~Yf zCV2bxtSDWJIcA zU!V_iw1|z+v|2C(4x^WV5~bBLp4(sqVSNyl8}`eVCYy8T##H5)`(&wm*d>C++|DkM z$RKoMiL6T=n_kFnlq@$zk!pH$w(gK<@%~SCNLJ84kSMyaRnsuyX!Zq-3 zT-e(JwcvQ}k(vILPP3>UEyELO*i9@+Z02Q}I~XE{~GND3rp)R6Wluwg$S{^Cm!DHmt7I=2|K*+O1R6pD#HS%@RYG z9=-}h{m*?v>Za~Z;n?mu7)=iN;Y}=xrKF3D#xk!{4-+i*f^gf5WT|jpajQaIX2+Du%J3y0%_`Oe>E|Tz>Sa~cPps!C7Ow-~J$TD)Y)IcF7Yi8th0oWuC*QMdu52jAi zi<`6xo395*rB<@`UTom<^Q#3eQj12(MrU-d0ggcFh~&!*^H%3g=r82&l`9_7kbL;6 zL+SnlhYk{pITMJ&OVF+&-EFleY;#CS(&`G`5RG|Km(-vq8-sixnr$)G)2fAPDGSW* zbC=N!2KdEbIP_cifC1Zo35Nd?41X0P`%6alRTw2&yosgGtMo25gM46_S@!*5hfX~# zsZ76Kx)T-j!0U5ySH@lc7U|h|I%>$|LZCpkodkU-Jdy>Ie3s9 zQVY%aB}%m!11`-ZMh_6bTHkA?Mfa%*y7&%uXY{ad1H_=cIuBbH0%XHZe;$Zvqb8#! zIW+lsLX$&6s?IVyG|w|x&KlNPzQfLEkF}a?GiCKhAQL@C^3*XLl48p@DStHttjeg~ z)x{(x4C_f)&q(OBHko1CHO@jb1T_)Q5-bZov<>`JA7pNItFMVg9`6S+O?&UMexaXO zh+Ku%Pkm!W0D*JV%O?cw`_w!3B2Xkk1Z$1I!Rrl|}>P5;5GaG{S zmHlF2u|oY0TQ(tJFNQ@+DxslL#mrRQ(DVnd>en=#9BK72Bm!6cBN|J|@^{*jt53ae zuNWbOBX|1C|xI2#hn1@mG5TFiT`%r2LYMyD0k`HvTL>G=g5?Bz0Nt)NA zSZbuXH%gy7XT4^*zj#XAg+t$`twC)Q~Rno!82S zBF9A77e`gAz9ySKt92W`5S8B}y7fOJgCzWJmz>5pQ@s;in0(8j49R%U9yr?Sv^qcJ zEH{XLR(g=>An#ZF*&IFaTt0s|VpdBOqR=OY3HIJi*V%wCcnkXK*B{*|ER zza3{r=EeINGlL=Q)(LFBm{!k|BPmUoA#i)Tj@yP|fLI&0#|N<*SgpQ!oy>(Kp4>+r zf+vt|jVA-9g732bt!sbhwGUx_6NdgI4Fxsm!hWXcq%V*O7otfj^;ES(uw=PfKAbu; zV~6lz&nQG4T@0ur6HrjepwDfzi8XSf#(DkbL;sA z)sh5(9Y~3}Tj~jc2+meAtZP+nX#|VtJ>cJLjbIgM+McoyRsTSja47QEk{oQA@ z1I@>mg5-Vb%iTwihd;Vcwy_teFO2K?(x+as!m#GwB26%)d>i5Vw^zyFpR0}_Yztgp zHf6qlv&dlG%k;s81?p4Rp$q-yzK5a)X+@q~gwvxvB>rDv@XZVx6cWez8iB6MtDfrS3wx+zm>7lC!u1)?bM|qPh=(v`2js<@KQed#k>X!-y)2Set5@yYq}XvHgLUV{>?s5-4ZtYJIBy$Rv)xbj8Yb; z7ML1I7nnW-$k-#-gD!*o8wOdx^@_a)TnxH^Fg*~2qfMIIWxM{Tdk?DDtA2hTGQ%sA zH`KrC{+lXJU8wE^5qi~IF-K+t>Cvf(CO%nxUY~ea04_ch5!6J*^bJ)7RUV;ATMzyB zbzej|F%unxyd07h>+i2SC>*rTix|jjsuZ;E*nPTVw_Gn)Y|^nuT8r-0Jz=j7ck0!v zG&(g#?C!W%GqI($S9EHw(fY3L)a@;!buaGovmqWAEWi?($@B8?`L29 zJc7lVR$w<%-H^UQX~V@43!?aF0ilhB&{U|fv?vMJX8HNY~Zcq1{os6HLa6))4E&d)w;j=+wO&-A0kc;RL3~b)PK=MmtWj} zjwW3F7}-yaPK@{41G(%#_Pp`YE4SCj_Vk}q%ogm5Q!KjuPS!4+mo1&=l+Ha@=#SnV zlnp)EI%}es(PfY4oNJxUqmMtEOHDvO*lBR)_FU<>S%q>W*{GoP3)#LJS<6* z)^X{yuU+xPL0rmf8IMTfQpnnH@ugdzGjiGH&09w<*}Q%OJLHqnikesVEWgGjiE<## z+Bw0-D9s(87{69-a2*-RMpuC9<_r!d+A}z)%O4z+3I+!+^1a{^-iFROcUAv6=dOvb zRSoYDJ?aA1SR>{hTlkz@XWMj9<6uHP)CvZe8W?nX-0yV^g4Q3#><;dx@(% zX4{Doa`gb^WqfS61q1BjcDI@>c=?JGl=FVA;FmX8m5Iqo@ala1yP;DVsEI1|GE;!|4 zzU(<0!jiUKdg&Y`HKmXal!9Wen9tgNHSnCQ7nQW`!nK#JUAJ|^Wh3h@TDxTn&Xm{f zwyv<&;}!LyYpiY7wrlWvzILiQIx2VhdR4}49n@p0srim=n%`0w)jD>q>NpjzR11Qj z5K!%g9XsoLKmZ13w6=cq%F((NPttAUoZZyZl`(GI8yw!B3Y-Q9n(;Kj zaKrkMOE+I(XD#l1XPVnQj&%+ntNO{Q|2ek_9L2D(QdF3$3$vYMX#mI07jxNMp;WEp z>_XtU8!U4`c9*6#BSK}uIRSwJtFNqYxAeu!a#d{U1)T8$)bFsBhwmP;3zlJ`jmLdMBNP41=yMRlS5%n z@sP!R*z+r}rM{@hHCz|4ZG6fL{PXwF;H?u|=mVEshjqxP4h}vB)iyP!wE=6QYkE!f z|MSh+w)KM2h|H*wD>km*dSL^@7(LrcP&VtDY=HB(hP23aXBjf&V@zF@$_~!TIb;<_6I^DS*l7OSXtlik$ zS!Mz!N$!kES};jnom41h(aq`LCTH&|P**gXGoN>OSV8d!(xx!FS1^}V7O zY%uNFx*5VVpEi|swUV5|s(vx+XZ=FSFI2LXJnaf&p>{`8Sk947mfR|Ap%4^`u4k7T zEfZ3gU{IZ)6}7C8r?8S=uDF$|?f8{!wGzN2qjo!`d6i~o8yP6iDfynAbqkez)v?_Q z7#&7C?)=~umq!N5%hkMG;MA%G4+z?Mn9*h1wrpLw;gW3^uUx-z%VpNq?UTMQ)5Y2> z;<7j8Lk4y-CpI#VBKjc5fd>a$Be}s`rpS<qRr2yGLtqo5Zd3(Us;AOEU8n$$oIK z^|Ez{z$~#Zh%b4cHPsq4GPDRW0oFdkapqmt$iyg`n~_O>#{^=1lZ>m$&jsTM)N9t5 z>)exZ2f!UmIcBs25pGt#aVzAa8|i&MRcy8dGa#GV8kQM&UdA_BCh$ zB2F$hvht#>D_=G$}Mf3b}K8luAFvj zE2W)z5gh~=ZZQZPyHLnNY^qrbl!!)&Wm^{`qc=BqZ`M7JeuhLMYnbSqfF;^%Cq>Xk|XoSpC{p|~NHYP3O!Z#1<(0_B?6wS*>Cf*A44 z&?s7pFsCHhB|dCGHebt^bA@s~$Eu_z)9aWTV4xL}%ErtzaG5vO0~b3F$EuHvj#o#f z>WG}cC||AyMb~x8PB!oh#R^hxQ<4UPo5l5<#LFp-teh@Zm}UGEf{=G+wERPjp5qsS znv=`rZM$4^3LBtfVLC{e;E+J~F~r?DTUadToP5D?yh6>+RcwfFqJ@Udtum})Cf0;K znH#}ne@5?-Xk04lnc4xzNjflK_EQGd)@mBV4XJetZo%`ixm@7qy>hOkNp0*K+qz)< z;^}&ft2xRkMSing9apNNxfy}CGA?e>E){C7!-~fVie;qDC~~OdJYCg1f7gidn6KE zRI>v|#wmgXSsR01tCn(h(Xn$yhN9%@L1-X7s|2S-Br?-X=%FiuuPDe^DKHIWNV64I zU9~df>E<2Jg=w^;nP<_qz8?Xp&JoeAhkHeX?;CgMZAzLr7T>4<0Q*bNvB z)iCqOh_eF&Mw}HS-x@Lb4SEJifAiDhyC=P!BNLM&{@9dHcT2(>Jty$;j_;HU`3+Wc z5^2-?niTQ&c(FDVE8EsItpo%!Lxs4!BK2CH^{lZ8_Gqljyxo`kRjpbJYYl%)yy>=K zd^%!aAaY4QV6rxKJf5(&ty3dq!~E#AU#nJpx5S*u=e=qr3*D6c3==Q4hqZ=3$;z{u zfar)0l>=x2xSiY0u!Gsq~_{;|9YgHGWs^jFdYHF~| z1XED*U%*>Ly^i2z`(CLG#v@cn%BEopdt@N1saz8c4x`t~sA!6-11LHu689LGi*JO-?&bv3+?ZLSvlYj(1)MuoXTzGzp=xxn?R zxqKG2wuzFdX~Ym3HaHlrSd*$yqDF$~fen_T7=v;=0hd5$@JuqN^Jrk7x&cJ{kMm;ODX0)UqRN^|K z3=7It2Thxk2U8o-Qq?@>U)0`mu2{}y3%;KVyh0@>`eNFvC$)@86ZX%GXyu@c(!?wZ z0N-Z<=5l^53j_(Dokj^($TrwK8K03Q0~Cz~rBVe!WvEDiDDr7lC|+W9OSQb;7Ni5~4{6vGOr9J*h$vz2P#WUI^^ z=1mwkYn}5z^h6zHuk4~jW?Adx3aEOLbr^D|Q7{%eT_dS9D1}zlBt`$tleH#UHE3WX$UzFaO@NipY_ zY~L?cYL#rZY#OAO;PWEEw(XCLF-k;+1LQn5H_EVbpS=WBXo+}fx1DQh_)JM7u}lhk zrPFMINo}~Mj<#2?tD0A4TO$e7h^XPhN|YozaU0cKB-7Yalskfgje_-rDpkwbLY~bP zH_JF7(KO=0>v_vcMN{NRFgdYfM7M|1t0-v7kl3Oh_!X)X1}haOQbl#d76zS3t0NM& zY;ufDO|t^pj{QTen9te#Czb~y^(7K$1a1QT{CEQzS;{V;U_w_>%~fh{kh7t9gwHz9 zi)I~~9Kt4nGBM0%(6sUaGXg&t7+5bqs1$^e0x&*8-2t+mTXFqDE+}GmB|AZJY%}CU zk=(Kp76mmL2tE5-)YBdcaK{Y_ZWU3I!ejMx)8ckMWrnKha=;?l_Z+ueLiF*`J;8)# zw9wTu0N~B#(2x5?wB)StvGNF|gDAs1Xl4#+hl28cwTgfbXd@_ zJq7byi4;NUbnjD&}s#_^l9OP+KI+08s){{4ggE7)f^wqLHf-n0&JuZR6nIo}P9ev#tyC_f=ms7pDjxTo(2*8R(X5+iC>hc1m-4R7o)8L!1`6q-=1=CT z9vl1!$N|gtYOMrZBU}_6nO&ZoHp{6IZR6$1jx!x9IOuFJO(_>KG++^f7&0?mqa=EV z@||$AT(xIO^~pU016wEem_?oD=h0ff1XLUk)kPjtIbYWLjcBu1CN+mVNOXXStzTK3f3F--bHbyorni0L;X*>pk1o5 z*@2!@77z^qM9{j!#CL@(P64e7Q_{_Pr3x$KvMuU#9V5_sTx>Jg{>m4G*f3({3ijs4 zHlwv0wkswZBYIt|j~mc*8-82ySVB2$qhe-fvL@0r8|up1RluX+6YlAmK?O_$1M37J ziM6dPXJ@c40r6bcCfOp=oA3K*x;!s0OHyfi(>4mHEJBljsGmu}KcqEtthL)21Ox$; z!!P(*jQX%TM96D42#9KvZfp6(ZtNJrNVZpUrIKjq{j7@#knD6N;+rOrT@oenh*zxw z@A3Lb1?y!BDCe>$3$cGw*0Sy2P{ zmFX)-*lon!;C4-BJXE7WCBX8kkPm7#*6%H8<|u1==gzn+*Y>lyvRA>7!>txf$dF7+lEeQYJ^VsT(g#!x~C#k_ED*&GO%N+)yl@x244T(OtT^oH(Vqh-touQ2=_` z0GU}d6j(q$%OCeAN2`~4wb5&4fX8-{(M1|AI$p|x;MR(MHtR8@<*ZmThjAgT;ER(< za=IewXHuFnQ0X8GYUm^vFs`gpWFrOBjH1KVRk>WrVLctLU$h-?F}aj(ln_-ulL9r; zBzq{(a%*yegzB7PRkYWI3M*QaOOR9@BS3mw6bvz^tCdjZdpWmOKoHCNP(saABOdkm z=@H@FEe?@Y~3c*6snY*t(wb`VGe>8Wo;VER)WSN ztA_DCN*QRH6LzA*n?SV!{QpY&~G;lEdmm7WxoS(Rt5N#Zj#y&>MIq z*Y!NN;#K^BG1IGvIjT5na8<#LO0E{vJa_^&y$P&7DuA#fYrAZSVKe8mPY?T!0DE-3 zt~ktQ4v1k;f|Qb&FGp33Q*|A*W;Xg_G%zKKX$4;EaS)9NkITA>9ebbCk2M>Gsa!1T9o2T{YoiUphEZn|ZHp6cl;aD??JXJLmU(FclQ@SkP^gtK5Gi3$ zoP{GK+NM`Op*8nxtzDHkD3Z*hjjYWYZ>A0XQT0W7)cH_>sEzU{eK@Uve7RbUbnjcnRtUmI=CZJa4cn(>;wk6H=SeUX5wid+XW zNC!Nc9kH_|CvR5}Pn==_p%luUKZlr zHeyQN)QFZ;fochG`n6g$K#Aw(Y!rD>lMor-fjwBZ6j#|f*uT)FfB8cjgO89J`(?sThjT^oHg+Z>fzw&tRqU^(c+q#|j(nK_iFWNUlp*tBRfSnP0? zsel$Jlc?AtJM8?kBK~Q9eG*p`>Q+4ROZD8l^#xc`~ zIA205BvyA7=$4buLnI0q+e=$C6r0m^D$~(N1t>^-U{Dx?0ZUU2zm3jkxmvMM zZZR7%C~rtm8yO<0^fpPga!?nA9YkcN6`x*-mOKHwx!4=j$}ARxyy#>#(bmixXER<+ z+aO;#$vK*+k@SnknZ5-Op(r|UKMNWItOJng!t{Iy74l{M@gse+rRj=N1 zVx2-0?Fz?AY!7oy7Lp~|m5yg6<#*Uq53M8E@hWHSDspnE%y9;|9%Y6AoMAY)HFA@( zCKjHl;HX69a=b@N!}B)hwgL{evhU(!v>ZvT92;zR9K5l^*-E6VrDERW>=--qsLAr6 z0raN~r%ILZ8sU4YiN%;sbTDNoF#nk&FZRb>oUH&|zn?!s($=i~%i9{7)odKM|r3nrl` z`a&(`7Tp1uyd%>D+P=PsIw(aT>QKM=VT$ca4}O0aKjW|pI0lE zSUP&H<9h7dqc+o&c}BvctIW=a01S5yWZuG<3R#Yyak|B;1&n)hlDGnW4ywf_F5D!y zG5lsznL_{~Pl-s1*N_}@x$0p#Yi9%4N>d741+gV1qZ1b&jYT<*vK=7P_+qrN)bQAJ z!N9eKvkQoKGQlh*VY-9iHqEL6%38tWU|AVz<7hfcOq}(owe+y{0w<@PfFs4Zs(8Q( zH#N=?e|gg-ymLlx(e6t8-L#H~LPH~$#;4%wqoPTHMad9n%Qg179q}vEV(QXVXVdcX zvC=7Fv|Yl81C6`OMw}RNXc4ceAzD0s47ZwX*UloKL-e40zF3aKc70Ayl{#%T$5!h| z@i_X5h>5E|jq?Y$Wu6#ntrH+TNw(&#(~=NmQvg_sm0RA$1QV}FHFmO~FgmB^C2rFC zVW#Czi!!@m2xLl_ljU$W6gI{zLrW=&oaQCH7(<2bue3cDU7xSW$;q>wnl4~Qz_vc# z8`%nyEdauYC=3q{O*+&^)=xu$*mPzKw1x((BtE4K2%@e1CaY|-c+mr+Pj)pd6`B}m z$2AV47cX1bhGr89wPht=!_u%>!c4db0+`xuMF`N)&}_c&Y*=+-U_;Vp^Rex7cvX%M*3d|2If3c3|G&%kKTu8Vg4T`s9W<3H0%444uSXGVXQ5;7g?;8^;4YUx)q&T-~;E9D!UE9x)cZ z4-!817uvT$u29Y8JlTydp;{3e)^-Wwa`_#YUE z&p{2~VaeNxDloBhnB93?qnI{phzcSG*43Pm7SEeSWJyz#ELLan7V+4(v&oPZ)M0kB z-YZ}!Qq3~e81l!h4PY|kS+;%r&{SLuxdWW2A~zaH5jzW@60(q!)k2x*2>fg0u;hr~ z3MKpO-(uJXdScvG6(ZIyVLUxT>kTKFXkwCeP*ff}^=y{nH3ki>obzukuaPt^QS=&R zO#(%4ON($ThTU-v&9v{kwF+1f$2MiM3#JkJU{h2*p2ykvz_80@gP|x3iPl6?M$@9W zt$J}|?V4E@#p}f^OX6js(qtxD7P?u(8wV0mMQHjCP92Hog@#f{(#~aAtjkSmKx5TO zSQDax>u@d&e~VtFQZziLVBGG6eAFKs8yGO2;`Q8~$=vj$oY99WK7J9igb|>J#+(H} z6_Vm(HBmC>oR6mPLS9T1S=HyVqJmE-OXGE1Y?M}tY{v>?6BAcWix|jxUN46tt5VE^ zTLp-xiE7{jU5XDTv+rEW*Wj`E?u2L~%IV3{lsLJ^YiFmnPwbAjc`<*(PYGM-_*JRm z0SOd}qnpY|aMdQ&F%9ONZ-JSR!#_|BBdSDyWgI(YoKxIJYvJc=D4lC1yuXMK55}m? zhJdJxXa&xn?W*s}iDRG5-Gq)tCS9!gYrFW+(+0mW$Ex|8q4zV!x^s3>yfDaNn<7hP z8y^p*i>8Uf7v_o0~U}v>jX7w2XzZ}a+ zc1gdQ(~xrR&*%|ETZzbrTw3t+B?lHVGg+I`Ou3O~r7|iKY~Zj!W*006TADKGN1Rpk z5h!TTTS4gA?!!C{G(aol=L@+Sk^rkI2Q+9(!E!3+7=5S_08rSrdi_J-gZGb{^Q1P~ z){#2bvTy+g#rxTSD;G+xgQr}a!Xerx;zLP8H+66@^2s|m*iHr;9K2-WQX^qDsAdDU zM&hGFr-XAWPR(-otRxPF8Us-jE-w>mk7nJ!6+(mQ^a_daeRbdO}y8L)uMR8(lH{ZThnq7 zWn@Htrbcsu=&nIh%#EATw53wckd344zQ~)rlAQ~E+&#aYTZX6))lDVO4k>QRkT1lF zS|T1<**Oj_QMAi0E=KG~?3_<4%d(8{#`K(JpMIat{fLG%+SH0$x*Po$%Wg4X!>SHW7@}cTZ57UkUKz zhq#xO9YHw^*pfy=>zI)yT)jspLCSd-S35N>=wb7zCX8JRr#gCGJ&4EIoV;?`{3$TT z*-`*wC@}!hIBUcQ-5=pNn`(-sENfQwFtP5h`r`H~Mue~)BSp-Dpn35|%F4WU{B$Lbz4}%k!E+qW@2y)bFD9FVzVhue>$?*R+)Fa3AZYZ@l7Qq=f zc3N;e#i|mN3Qfr(*4DXuVLN7QNmMIk<{vB@g|i584KCA`R))pI!)xYOfUDgC=cH}6 z%Q&KCb~&RVCCek2x;}ycQXU)0oJ?|xtaN6jc=-+IF;-eFlPJ{3&OY*!sfg3T)HOnG-=P1)ONv1rLV9!ax=k5rP)-2s@g= z)rG;0Omp>T<4rR?9ZT@kXg*9@i<5?LfQkgQIDsyN)c7u&$$4e&6TB zQci-FO1S62jb_fry(uUm7RQMcM^m7g0bHI?ETIv@doKGFa@wjn_|3h|ScVrs(+JaG9d_=P$w|i^C zU>5Q-#09ZF)Cv%}rFLM;c5T^_o7yf)C#ULg${3Z58(=kOLsSXZGU=?8#s~n3d1D$| zfW-whzsR9={3_&NK{4egfwVEAi$^KaB#WWdTq}V6X2AMCpZD|O$)jT*u{ngs*hzh- z#>W6|xTs${C6wDzifIK71qM-LrLW!MOZw}L4qN|!3Q(w3*q7)hEVh2cRHKa*u~TZ?iX&KM5? z2_B7+H1%Y0mCik54jzeN>Y*y&*hlhcCAoRdm@%yfoZ2oEGG9T_WoNmJrBLDYzbHSq z8`L)3Wsd1*MlOLKIWtNP4B?D3r&g<3OuTXVDRNFz3LzhQi=+e57rK#`GB(@A3ED|E`t8L7WX*qSkChRuyOGH0&Q8%G77B^VM> z(GK8>qO&wny428nL&s9X*}i4EVj8HOUE=MRjTxsZYY6O{Sk&PJQx~VFV8b-Gt#1gT zIH?xk5U7Gq zm$Topu4r8WwV5+>swg_M>c-l{VS^QwZLZ92h&UsSML&9^^;~T#771;}WJR0FN!S3Q zh`9&8`J>6ICCEq*+(4rC>-7W@aiNGziD;ERY9xCzMbYUMD=w>-JT$E;yVSy(aIrlnd4!ZGr%yYdALKh4YK0!x`%-Y$BWgd}aw8!!#!h3JMrnV|y%v+~{usCu4bgID2H z75BMfpTlk1ZRh#1*P$nR6;%Q*2g=Y=oYBZ7VKFUfqsfS;K`Z0M0e+>3^%DEYm<5^L z!DF2TNoFc?C1b@IaUY8XF3<>VCL&R6&QZI>H=FC@zMPH9mr!(ps#vm6oXdc2I-&)dP0R9ZN_H8JdqtW31=^`S6$V=|6J}UW0%zlg}+BQ zLZ;|EN?a%-T0vxCd`Fm`8@aM`&ov;oY}Zatn%8}TP}s%gV48U7va!MOjDk2MWOI~h z24}VvH`o2y+~4fr%@3~v;?7Rb&WXCHT9ebWMfiyI$1PMBEjgaFu74c!M_l;@D3em1f)9&5u^>9i96gn z-*X;YTX-LJIPPCVFfv0PDnyR9$1M|{BMR6L_P(8!4Pb{6RJ+nO}+0 zQ{5*@WRno{3zzNe91@E-PSqvGN&e65159ln4eHj~P_NektgcR#msEL=e*geizPVKd z7#v4po+cbbB8;;BaoAfBG1hua_5*}-bzp?;sn^k&WXyJn9}OnyYb55xw@JY_QHJI)t>(~$heiYM zJK|zqB8H+xbJ*;8%3JM*4DrQS`GnRvIM zGU8znE`X-7RK)p%8Fi?P;oj^cY>(CzkHyMozGWVb92ZU5Ifd+&DO<@^@pFO}69+hG z3XKdq>-0(T)sSZ6je{%daG(XYunUl6gQS>+3pR!(o{%o%%f4p?I|a~{NDp>PXIYoiO zG;n2arXg+7`-%UR(pEx1X%dJYZI%K6+SsVF;bKj(Rb;IfgVTlrK3lRF0D{e4l@%!JI@S$kxp95A)`pAu)=h~2 z9afQA-=doz>cm?i6DxY!Ynwam_O_vNkIF{loJNq3#r|EJ&S>+pmU)5{>f(=xEqd-> z1rft}5^dpx3h_Ca{ET_heiKk{tIbO#X(k7!C9$R`U}4BfShw)#D7;M3SXNdrAHdfQ z%qm+I{n0G5H&W`hD2*O>>&g(}JB~+tgm1Tt+5tZrO8Pl0BWD9vNa|u>8H>aJ9j5aa zPiRZ14&66wgfw{!HAf(uwNeTDfC8s6vVy5q*ngtcr^#c|>IsC1cm*qT(o6wo&UjIEZ1%>R|VQH(POY z74upWNJAef%Qp2?016v1az-#;(3huZpc-k}bY^y~q{imPP>^`eq2Q=bg>w&V19^6y zyKyyHJSw>3Nfebbm#X@#=^fcd$bMtXz$?11g&M?B;KuVY$F&(iuDXPiDC^3-f$Y;Fw$e)u8t>? zDVyC1#1e71h?%n^Zkd{xbW0OurKJ%kW<0A4(qMnYdts*R8m`a9BQ7??;s|}#t@#<;n2WFr z9v;4N`6UQJX2YgJjRhZiT8wDEBZoG4nO&t|NTfM#q4#AB%9QY6h>-}_xpDfQyLXd| ze^SiFjFKuV({0YS%JFF&8Rg2{ZPQdBDJ<)OtxE=sigKVmd%7$u z!(+UPSVO#;W3of%;IW<^gwSz|J~h3@x>Scn`gvNS-w~=&*H+hvmX?=)SIUze` zeTg>=W34_?hQ3&=*UP)FuWq)^CSJGfuLv|jHxY#QQgK6PeS-HZed}40Dzs2VPO!3) zghlsv`Q72+=*xI@*ve;;idcUvh3=5kmDl1sP@Ka^Lh%cxs~Q{(f1WiqQSrtwuciQw zYg<>5kKT4p_(voR;W#L-yZp(3Q>AhePullF-NPw=au?^ZLl-!m3wxLn@T@cDSLLE) z87s@Wgs0njwW9sJZRBB8*YhKzDv^xpGx*W4+r~@SnkPz>8P(_V8e$D^*3CUq;;$(2 zt_7C$BPp3%b@UY$)@d0Fv*#V*!EkYrH8^-N{Wtif-429zlj!uT`tidxH9hHbtK{`$ zHADT2<7nN)7`M|4kVD*@nK#TDdaDn{&oRmS_0PHe=dCesYplHhQF~mD@XlIIT^qye zNvwd63&!zzVO>bYSBOhY>y^Ao>%(rXCyDH@eU4!NY8e3WrzHcn;o?iTK4;{z&6~H5 zT(Wun25TcJjcQ>WFom#u7lHU>uzpTZ=&EO8a>O5-@@4LYsFN5t9M8t1xONQpNzBQH z)FY4&9Sa(uUrX^aweF{NEpGfw0+rIE?$X|I9Aa6&C!qk?dMY`kn{rKy)lci9>2fhC zj1wBrq>~exZgMAN>_=<3o=4q!wDs())F*x4`VnE$Q0v>$*Kh)hoO~T$7z?jZ3Ttg22WT^-jtV`g}PVo2Ibtz(;lW zD9N(c@pM}sKi;yQ$=i86khydCkp?;Z(jXye8ca{-C7haNUK6xUI9IpzTZ(xOZ)Znypms+I}$y%kVu-3e!)ZV>#v2>1ZYwKdu4QZwU zl9a@e{z<$H$luL8-PRjO_FH9Hi+D`qeglIKQSi0E$+#{XF(3z;dK%F#0lBnG$N=q% z8Rm^-58GAYH6&2R+gKZ4VlN;~qU~quM!kAjqwTFACV};HGId+`lIk7?dJ`crG`FPV z)_;fB*!7k5A<#&CS&8Q;%Ox8h8qQbq9-;nX-giz{b4T_)2ZenV)!Pul5g=1ua5&g-Ea z9E>D|f1yN~Ss&zAI%3^I0lL){vg3Qp4>U!Rww%^f;2P^TP#}g^Cn~+0g2iVGq$H-B zxUZr(K?LwZWFYCAuru)D#U0Xj@_;J7Aws!njddq2G`KrRF%dU87`KypI<<2t8A7%u zjr$Wm4SJtLnZ^}z>x4U>m?^pzA;zZxojHOD|1iej@dUg5=jol4#>ae0E#^^aRU#A#c(~&EhYRR9Ip0BaM7EzsW{k z!FO2YWskZEfqftgDdL20;!})As1C#dD%{HW4AZ4C@~49@%9lIO?w{ z5EKq zJOQ0SK)P~|5pBlmoHD33d5=TQ9V}LSDuYAV*^AACn~n)pfka z4EwWj$~9)yEn0&j6*ZxNbv}8bsj!S#;e1opO}y!ge$c!(Zu+sVmbyZIyBcylL(*AF z0+~VQNU39TD^ddgs)AueJ`pYv!sf>`Qt(G3&D)6A5}oE9yII?Yqw@|jgcCxVx5ip; zx?zn`jb_!aAuE^nX;Ecl7d6+6!`m;B6Fm6>KY}M;;}<;n6{&GyJC6HXe*|hSMHr`Y z-sB$Z-)WP%+y2_r)YN7w3E|b#=Cu^B z^N;vQna0hhbsmA?lIn%LYKmd);7wY^Xw-bXG@*=Wv#4jDuCY>*N!;TldnIc{4P0H3 zURFm7d$|;48!}#~c=`*1b^Hm2(VnTpGSR4mMXpl_gSlg-PkOaEZ-JwY*9eO1p zaH+NLrSH&ia=yUfpG>w7?x2%2V_KNoSC2lIN~Va{NC@Y zI#p-Cx0j@yhdfDcopb8j-fw%?|GUf(g*yq2>v@th>mR62FVH;`NVQW4+Q>e>o9c%b z^VQUFMZQQ@j&wH(CXN|@+UwSu&|1yN*LdkL$`fOmaSi6SUf{w$o}xMY0RNT5vVZ9XX`a{of+?yh9~5p z`fX~guHetXh)ANM2k>3*-YJ!!KU!c)sl1uTtn8N#EPzJ(2UP{SL>VnN z;f$=xD!-xeF3RoTOjkAv0)s#yFvSYdqtDQ5RF7Kn`B_ymW==uDPxq2~=* z&G;BY(oEJ3jNuB{*+v>IBWK%=O0Rik^}VDvHTFR_;q5QeOQhttV9~l=Rdu(k(nmHj z!maS;2r1$qT~K1zit!cRP-FTLdxdqUPtf<*t5fFVpLnTx*&2r+Kx5O1Inda_2pc0F z!5g2%lKD0r8oYvsmYwlMRzWGIjLt7D6Q>p1nD5Ypo(uo9m2b*>=9xTlc|VOm!Vu>C z<(%%>2A{&`@~HTM{G=t<{X8}}nNRYuW&H3O!;tG?AD@)Wxp$ZC_lc}4^)J3>JehaP z`hJ=p)Z(h7-tBy`_rNYKy7q~{&#&vibZ>~9tKYh%dfK}SuRG%=hFNyp;g@VVK8Qu- zT|BC(&+50)s>wf^z1z13>mHw^BSQRXMg^g6*^FrV8$>zE$CmLX>ie0J;&O#Ohi|K^ z@@;j2_sZj{>YmJk;yfF(@FspPTX{NosSd3qds@7YMX=klLIt-cQry~#*;rv}S@AM;rwi^`>~rsSV_U|y9& zL!Sr33{{n<1KQ)ui~|r)l!Ud=evcuo8^U#MS0U{qc(p7A~2RCpjpn^zTo zr}2?LLWk-=6p=8$)%T4!s4VIsl%6$zqKCjIak%*#HH3k91mmrI+b>Fdtw#n`jc1(C zglbBtnmncDu52CBkM~KUTH4koM)D7eU9C@ty>6@xF%f`SYk=Npg3fev@dkh&vWTE9p#? z8`42mlnxmeKiR*d0)8w#_ij~1mW^-m?N!)j@8oZ9s$t}fd+~y(E|qd9 zHzjZp52r4OU!pmxHP)LH+BLpIEqdSFi#G-2=7H7r=!Np1qlaTSj0Iup4qmL*t*oQR zNkJCrojn3ntv#9o`3*`%-dl=N;<_GH)hyC+<8zRyQ=booi*>2z4? zQ~A0_815~`Sq0m@m7iq6?%=N?&kWnIUOp0kbuk5mKyuruf+`|U&IkGRa%QMriz;C4 zk#w{96%%$fZ_65%-Cl>wzD1oz(iNG<@2dK%h`;&4ek>{9vz^lByJ zBd!Dg#T3oTGUROKFRSXWdd({WK89C^QXLrIP-{;5A+>jSXR}b~ft01Igk`I;vZncd z*$~U9tmEyxC_^c?{DTLHV4T&fK$e|9NH>bJbMFw_w6*%bMt-` zuk|Lgpw6wVjJv3fznqvxR=vyzaRtw*gvT;I;W3m}^L#xeWma$K{Vcs&yI*gNaZrmm^)P!HeJpMID7-*3Dp{Ww=$ z0{TrkGH<2@eY|~xH}%H*VWY058~IC`-IKlg0)|Re<-|R=H()i7vRq`5+)m#Wjb+k* zUJX|f&^2!DJ8k7kI6#HN>*h<1F{rA$@>+RO2{Eo{e3oj&NU8cI7x*1Qd1(1!eGKVK z^y7RfN5s+UO`*-r3_y9Y%3Q?!qCz2s|709;cHUl*NZbyk;X9gNNXzPXuW zU%tz{vt^ts8kPmc$(ZNJbAhK;>%Q_t@`htG4C!9?mrr7%Utu?qKk(ic$``_Zm0yVJ zeCa;-lW&vx_)zZ5z_Oq9sQ%A0Ib#xO9oHbO(_LCxJzEu07EEP#Ip=&Sq(AfePw4LD z3+dtG=k}f#4xe|Pyta@pEa2mG-|7dtc>V?QLkhF8Ty^e#50S4{xM>o`Lz$)Jn#GM&8Of$~j$Y;I+BrKKtTznCe0`u(`z}ONa8GeE9Io zDfX$du7CAJ78_E6*sR0`ly|1r<14h^Peq|{() z#-9nswYh6;_3#?XZE@(JphZqb09`va?&8%9OGLeFBqENKA58MO%qS=ysd50E7|L5|Uw%voI%9=p)B=t~sii z!=733x8lrXB`kULvn}&B#sEe>@gS14aLlf zPQ6bc=@lMX&-GKedov7ejtGGJCqSxuYz zhJKLWD-0Z>rped|ENADUrDoOT8g93D$47f4EVFNJu4$<#En9GIvD=;5v=$^RBmPGt z;zrH0tSkOUg8=#g4HJ0;Q&B(dP8j5ycI@qw&fDqVn84CR0Sg^bj6XCav@C|?fYO1=0KknRkQzzOM!MWI+IFQPC)r|ZK}yrDcK{26E6Z$OeQ=1vfy&5* z*Rg==jB*Qh$%(dav}dH@#nW?54bvf=VG&3Y11kYS+P&fl6NZTxvoudUrv!H?D-^vU zV?l~|LSdqkZO46*F9Tux@#0)6R z7x?AM|6Lyk16OwQwJAqW>g7cQsD|Y53xKb@>g-a>bM@M~x826>phh@|%mq0rV~5<- zV4#C%knXyqZ_ku2Mcpo1!nJwkR;i$?53@l)K67v;$u7Y&rLNyN{6?-gF5;VaJcu)D1*{HnR9qONIU#wJWf9Z+n zZLIC^71Cg%in0CM1CXc$4fam>Dk)80;p$8o9G#TX#9|P3&eX!tlCm@5ItzC{w>hPWfumFwBe`zb%QJDv(&Hsp6jJdxpz=H zicC%u14QfFYqAro@s|K;W%*efWOtCr0n#Feapq@xpVl0l64=LyqSLz`fPs+%-iCY_ zGynd+pznw}7;{{g*8tC`__!CUKI7=Sf%`xJ6&g&22VrNX>V~u!GH4hE*AIlBl)QzfJQrv;h3)Vsjna z4%4STqe-MN_^=*;4C71wl)E~a_^cu^PHI-bWT2Uy;axe8`u!ex>>?BXSVgyTcd<8+H z+ue4A8=b3N{>(gUWoZ$G_i9WaLrm}dP63LLO&)0!b{zWGzjPdj)s#^x#$}6W_V*rL zLTT9S`EXxG6@C&nGChy8JV{^B)W8XlY5;YB>n2Zs<2}%qQ5Fd``QWrCBqTw5oNyXWyrEMn9ytmj(;zu=BhjOx`77xuXx$cA$K!hsdq!cZ*j|rM~ z9TCzKEyz2UJ3e_OGt#J_UQDl2YeydnYGrI_)sSbegVNq-i)6rg`Ps=b6@cXf*5Z;7 zgZxRM+sPlN2R+2yC?;bzhPz|IhU7q2={}0*4G!mkfHbt*+9^>DaB~(PW?RYW%MugD zxD;lF#LNa&R5f~S>8iwU3i_j0$8h11Jt?+fB;13)cz1O`6F`!~yG548zAFm;VD@fn z9|I5LkAPr8H_yS3&bpHpbI)ij(i6DmL~XChT#gSEJn{u+HpvVVt4N=v(9?Rc3d${P zAS91o0iPF;TMdJb<&qfJI#lw=WrRbsR2^kUIZjoS5@`akZ=M65J^yohG-|Ah2@@w# zUd(J4R9zSCNS*`t?JkttPQ9qBSJ6vKrsw?*%qIFS*9P6F1Kio-X1z>UM9pKavEa52 z9?)=$=n!DXCJnmhdgQ3weR!n;w zTbyO&2}iSnialK2)gWo@bIx*}T{=3W&}b;d4eIBlgi2#jw>>Y0RP*yk7ND2yIzbc# zJ~uyzc~)@I+MY&*V>yN?)}Pc1ayKJ2Wfo$!3-TjnFqztc{gu+YATG$;(R;J^OhGm z0)}Oi>^-x&SdKZm$0Ln^Cn@JoA<)!UucpB6yja(}+NBq1aBa15 z|H&ay-hmB~r~GDW`&FGg$>ghMW}^kSWt>;ihjL0w?%4G#ugGm1_~@k5$+GACn06wi z>h)0(eGKiA$PQ7t3{D=x2k1igs9TY(I^{ z{JEd}G5ty{$@KL%Q_P8UD>)5Gae-#v4l|N2|Kg9=V5MoAPD5b>u=b(}_fzg!GS9is z`|%oFKmE!z7+M}G5|TN`F#>WC-)R1rh#MwiQ6S+ZSj;S8V>{k2nfnwIGpv-sR3sLN zO4}?fM#JC~A3i*P9My)r1(!UF$C1)RxN(r9esZ2~-s8qN<<&O}-lLzXQ9KCCC9rdj6`m<+ zLT&enb*v~2a=X1(?9{^Vv&wo)OO}yZzqzV^Cf2`TYnB$+LIoybmt4zH)Ikg`?3bF? z)@!ZmW@)#dvM)tU1I32i12K_4)J`3U36QvkMAA6o-Z@C z)@20o%K6dO!h!QU%LzfB!$)1K|M3(m{Ei=Zn1~7-VbhnJw~Zy)-Q-MB-YfvCAnKzW zPBWXFV8ts=#Q~1B-ts&*^U+@6yk@`h6s|s87QF;RP!W>_8W*Kknfu3FvGpz-IY+BY ztMU9y`4UslscJc1lw?i<40@8j+SD5Q;i;ce@p68YNCDX>7za7CZLC&qo;ltvW~riA z>K(QnPBU`vrEAM8a_>1EJZ4!bo*Oxtox86&6?1{d3AH&Su1~xO|Hxa-UBe?9J_*(q z#V{m3Rzv%rG?ocDJ^e6nZQG8m*P7{=8ITZYIia{AM^3>?jK>E4cGz*4ipu#;JGm6Z zCBToyHa`CyvQ@v%+`6%TYX&92jm*u->kTeF4k`X^ruLK=QCD?V;ViDqcCx2O9vP#p zdE_f1`5{h0ZtlfSR=nO^9YdDhrP9}u<|+oc25sNhXZ=VcVt_3nE1Zr6+hUV&{SD?( z)oh=Qvvvbe>hB$kbF15q9qv=8k9mI&ku)5;m8k)Rll~~nH4JRaj&gjl@b2wIZ#1X@pUcgp3;44)}O)d=I( z0d+YvE|wLLs}+^o2L^6*b!FHY$|f**`eQeQlwti%eEx0^3m_kP^S2AI-~H1I=W z8WJbsb|M+;JIq(EyBp=Pu#>RDnw=YW4AfhBN{{SN=dJ}l1h9LIXj)h47#wSGIOXfuinkw?Aj>7Y2;;^`L-Y6 z??KWv2Ztv2-KKUJ>JLx29G!V{eA);%K1dCxnw)IaShxzWlUV+H%tK>118FB+j#JEJ zsu3k74p4JiYbc*moF$_iUe>|a$~q8OVkDzdcv(GHeoTieZ^jsWBiYQZSpQI9k{XJ zYUl0dYT5YRh9f@yZyldQjgYX&yTd#->1q-8RH9_~|CXif_{lXLT6j1Xc+3#oN~Cb` ze)Gi>&r_T<5o(B6UR`Dl@0QroIGN9PiVytC$#o?UNkmB4rH7@&wmbF*%o`_mr8ftc zuc3EbI3+V7xxIq~M`Dlv3aj%$^QMV?P#}kd^W!b6%=o1ya>#vZ<7*;KSc^eI@EJ+F z0?Ymo8sSDQ&1i!9WFK@kXcTC->l>}UP~;G=Tn$P?A^f}AxO>!Jt%d5bCU7Eoh9cEN zgpL!@blAT>nG@;F()#CT%7u$L5(oe^kpZe4{MLWN+}0RplQ3o5=%Dp3-K}mpiMlz; zK=3@boD3Q}NL6SAe$#y8DWh<62rW>_`e#*=vN8CGsbifdU+DF{wGM_QjZueM z9goN!E(kCEsOe7dnHh|Q$7jYSDDt9@-SZUF3KML91y&t5a0oiZGyl#rrDJXq2RLv> zh}WGg@H@YKrgRLBG4cT8$eb*Nag9HI#&oP8Kn|(6W9NBNc=5kGQ#uv{KY)qI%_5@M z@W%a}Go@ohis8-X+cp6mC{e6WoGBdx2*L)OghR|t)6j{2x74|w*f}=NFqXnd7ah(p z*G6X=M!#piTi+`6fmjP)uy}Dwyjx{^$`XlvLz}%?id$O&WvOEb*IPwhxF`Im3rEz@ zwX&W#f4FdxVkhF)9;BZfYiOUMte0?sM!kMSbSa#sk6GLIiq5CbFbec6=(7?R>0-&u zT#`9s>ie{L&3F<6;Igy^A1ENjNVu8=MYh{jq)inCB_YY0;YD4$RK>{) z%mm4xap`0w=0*A+Dw$wfhpK8tt+PHsUt}lFXBji_F zxiNS>SV0H_^N3uu$;oULpS{QCKgrm%BzFgV$1kij`kZ=i^Sy|?nMyApEuum#+*WO35iGmnSf3zBHu?X6cxT7Cto;) zHg3F9P;eFf81%lol*@Qh1lRbL(tpMG)!A@a>%X5dM1_En zArOW!_HX-(W?$ItC~y90hjhgSKzp1NT|%8gl>7vQI{uf;DY1MY&iUXGWauLjSewq5 z|Ai2=aouBU&j{YZtq_og(EEyc=NZ2wdUrPP62SghX%Z267f0TIHZ^eHv>S55m918T zQZuq1(002Rp77-Y(=70uKQc8U%e4CU)0@TBZKAA{OSpfB3|z^o!8#tFVet|TOQ=$(82hF_lRR-0$9xc@ zOHB(T_y~Z>KQo_NH(kj)!yYoDd|1V)N}T0N;QLwIi}6#4i8&_hj!4V@atbdA+sWK0 zC^}9O1Fq=$Uq6L)v+S_Ic{YLbVTSwQH%?{UMQVkhAD}CX;o##xH?KQca@W3zz`bCE zcLN+B1^UJP=BaR@O1V0S+h$8T0Ey(uf8D^^v>X@bs}QpoF0pts{e`K+$kz)dGZ@=i z0M>`D(TaWCI??`rt5gIG)F-imBZcpNh2}U#08zw5;$?n-F2u8~;x9{!)9^%LTpOVW zSTFyf4posh>WdCw!U7@2O~E1|6vq84bI15ryWJxKoV0jE+*1W=Lwqh5k08(r^2RKH zjZp?31=jZv$v*pU=DriCOCk97^%0N~LdC?hECn|=%m4cc*DEJrJ$9@W1cnEe1-xL6 zHTAE}t52}MDOaCdjE>8-h?gYzi{cXeKPDMT%X!R?DU4kH531GD;^j;*6d1lA8@ylH zT9E*;fnbiiqg!-b=YLLCNsO5~A-9q@h0AtteUW%dcyXF8;g7V5uSP_S~$5q}>IZM34gU0LP;pp$! zo>c%ZhZP?Y)sOz~>5DM}>K{~mMgj0`WWnUZ3=$^h1pjDWI!vN^-O4%E?Q$wFt`rJ1 z3X60Ed@e2!1ulM$_fKYbQh9a0s$*OlM^6ryjI?Y6|IEGh19K8&H;YeTt_x9bWI#Lo z(0sjFx7E*&&n=QZc1ER2oDq<&K`(=Wa)U7JP5bwzo!4x7a^(Vj<)+=&^ukp>ppWc|^Z(={SI@Ja@cqJTLFqRu~?f2?IN8P_${xSmoy?5-a6R1bTrhkez< z{_5dC_3+f{;o9oqIz_0F>|Q0l)IK1!TDw1_W^!B%D0eCHC6K2X_NO?xv86-u>bb32 zYPhhCJdkp3ibMi&reaYL1rY#Gj`ASEROtD?)Y?7f1e|h(tSu6ymoKY5h(+54v)6Y0 ztOI{*J-?+DQyU*hiR;GYmoGCY!Ks_IJd8)6=y!1UW?xTx=e= zM*7Ifk%JlVg)I%ixLzAzHA6kP)(oV|cr~5Xn3eJ*zFOMCQT@iC0t>x1+I|E<-^DKU zqSn}Oxj~P@!4+_lYgCxfK3I|AS*y-~!$QX|PurK^`Z4W3_oZT?9ruI!^mm2to zF(G|8w+)U>$uft*@LyVq1q^l;9Dn>G$vEMHp$QlJ;&RWNhA`IN6%%wiNIW<|5kA8) znY^SmF5G3xo|#(|9(;uhxnUq}+JQns?m=vH{0w+jv~DkLZ5}ZjI?D@^*#cI^YE8|o z&aN%8|A7R97mKVcRzc0SeRE64uGAGZ&#f}E3L%k%D`fixCU!kC?#NhLAB3AMv{M3u zJYa;=m$h{4$|-GmoOB(NWCYP&^a%kdRq4xHv+9&6)s>{h$w43AvZPRdhI|Fh~rN1>ejem{3&}ugH&nkG&$rWmxB;Y;tbBna_n1LuNkjtEnU>7d05wz zdZMRvf`4#<;Vg!A16b63P3zXFy_)KTeG0l2dm;8b+*W{dM=5Y?ORN5eYwq10Rj)=K zuquhSBI^8-pz0NQ02(*2ejQd3K!~qxT{Gs!oifQai;&^$oZ(nOI4qYzkiD*T^@&xv zGOw{U!;Yk=5kPFvv5Awqtu@75g{wIZWr<59y_3aZ{Q9v(n=&X-t(60V>(UX15DlkM zo4hF?*!e!JQ1XV;cQf@YCg3;-8|T0r7kFekZ!8(F$=u7dV28ob3fw6jD-17sQ%mF8 z4KK546q7mY(F|G<*cNyRXSxC9*2dGEPSXb9=F^3sxP-yBD3&G6(mI&oug6Y$`2|G zqI}*ncW^OARi$yoMlxvYxMx_`VJHSxxzLC?di%e?fel~RvQ-irSpl3&KgQsnH zXxxm6ypGEB2*_jGsz;fLJqjtH64n$qT7B5Lv~+0gaP{e$__!nhs6Li}2RPmkEDLw3 z8S{Y^G_$zGzbH;r&iMIUG>&*9_-Glx(IX<+3W9gGNQ5VS!_!S9uXnZXS7}1@7r)Ya z(A?szh%u5@uhP4`yLErC_~!sC#-b&s^XhwA=k~r?`PJ4>NVXP&nHLVfw{;$Bifn0t zw1j!~zSjADDxzO&-LJetOTd&n?uPRQiN)i{aXSc+D5k9Uw@$HzHc3#X5PJl`0sg;E z{DIc`{Ej9VwHv!nAAFPij(i#gD&Teq8k&t}OBK;d8rFoK(lF=^5d;JpFCjHS$N#NT zCKCU_wq9Pn?uUgyv$5TJSlA#50;EWQn?w|-CN@%(WZI%7kpM_SBpM`k zZdw3{qG(!@W7?r@#!(d7kxkhaCrskR%EXCbTd|dRiJdsM;w5JCX~uFAJDN;pCYjI6 z{Ql?Os#ovzdyNK3JI;J22-K@vcRBamv)yxUor(^fek_inDE^&z-NEX)bLZl72P?(D zXAjmXI(IIzN72EWzlkY`RntH9O(;4WYEaOycB(V#e_5ZAwL6#4Y zQ^${=@jYAf6Q}6!z~g5=bYnE8K3i(;3uzdQtIW^k@M902csh!D3LZP*3z};6*x|<> zJO0Gs-YU$;7c5bg2Om9r=u|O38*qinPait=&;#ItE{>miTGNf18fef%^=J><*3#q3 zPs=d7RK0+c* zLq|gKAb^e?eloHFRt=cS87BPD@h6Y@RbN@Iapc(PGl!0yIl|gRNdaJviX+FKIDYhS z)Y5}B^P4?*_&}-azg78x%EVYSHa0OfR@48D#@IxIfB28m@L$cIHB^EB;<1K*R*M_8 zk+HFaORW)&G@^+(9*g5Brd~bPeTK>l3vl%WDmKV(eO7|6NvJ!M`h)OpT4j zmrpXC=~YZ}tR34Nw7ajmFxwOy)#< z%{BFE94%>FUOg9Q=g(h=n&+bI@Bfvb?OsRzePycQ39%AgegJ-Z=*X$V55l~UAA9i3 zk>ke>oH_Ksqle?DdEme!hYy`N@W7$dhpX}Ufdda6I&%nqd#GAbdvVKZ{Sd)kH^L9& zj(6EJ80TOkh=)Tp6AKTFK$EBGKl&S$*4$~vdF=3+L+Ug7T%~#F@iUJcKXv5Hk;A8> zzgcM?ImXXJj~+RF7y)qn!K2a3mB~XVPCWWFln(GPN=)ke##~wT!eX%m}=<(x6A3t&6&_fTMI(+(c z^lD}7U2&Af%`G3=chAu$4xc!A>I0|G{9gR^`1j-g5dWw6599wFeuo zkuS&pBL129=i)z!e=Yva_*dh99e?oeRbGn!TKo?xf4}k*l~>{~RmQ*XXV(5er4lv& z_|tK99C;j{TOVcaXs5Cva+NIFUYT;0UGa`;+eI^#D6Q%;nnsnKS*;y)YO^h>x!U$h zn`+OV7h&wEEO#{*ZI7sw|8bEj(m4Bi^ypk#r|b4yHaeF^)uK*bcmCB?XDSD?c(=xy zp?5*jsqJpXu9n4forbIJZ7tL9Go2CF;Lph3Rh`i++N09hR#mOq>6jY@;*r_bxEpcY z0A$UL?qAhjJ?+NYaZ+mz?|tdO-YK1JF_*>k-e?-IX~S0^Nviz?^=1wrbt`UkJ2S1g z5m4K7k!x(PM8I8}%i^0OP`M?FvU78tS~jx3RZYf=wwlH8wvn~Xz81}CF~@UM+r&Gg z0kKE3+TEbKmem4oC){W+ZpVaMN@rODn|%`u8g55`ksGi(>c%{7o8Y#h$=2q&v!@`m zVA>ToHe|AH95O0T_O8}Qvj^&e7zA)m3@!bhM+}q}02jm{fCmtR0UY-N9LUE29=bY) zVPln=VKr^!;C8RB3Zz;4Tc^fnAhu)fjFUbJ_!%$^-@T9Y(X;g zB#bPW>r`ERcWXRp76d%9V9P+jMaz+7l$KfCUK4e%V}191&$|opm%siJ1OI=*fU8Z6 zM)gWHZj996haP3=)s0t{e~8K+ARtvd+gjyCdLbb{hY}hjB3JhffW#>T@E;5wK*h5t zj$V!V*Mey%! zN>~XsSqa#9)stC#M~hPWtnhG40NsGt875e;J-Td%yh__u?HQ1NW*BYh)$VaNy{U0{IU89acBXImdz0!W^e1aD!Ms?kuHmMlnss< z;VPbO-Q%$_ZZ)m|=yfkEh_ml^~ ztX*9~_rDp8ZWYhAzPWEbhl%WODUki#!pN@qozAG)*|t%t?Qg9U2TjzYHB+ls^y|kx zB~X8TFsLe?ZT(U|`~1`p%J}6jWjwnuu%m%80^36!4XDHK@2dMf<4@G0TBX_#b(x+& zJ{W2h&$hn1AL?OD|5y8&euGC0f_ZQ2d>EpS3ROJY`eYcQAj2QdsYE;N5*a=>WC+{H z|EcZj=WX6pJlp!V{#h`@K;z{3g@*W(!9%Ec0HTI5{yao&Dk18R!w`LlQt@o-#ePIF zgy+{jM14<}f}UBJg0!Qmc%`v8*>ZV__5bBy)>rXt>wSH!|2;XZa&j z4e+aj2T<{R+49{(2I!G33@}w1;8z9@pyJuqy?ryl#2P3azqODp=NCqH#gMIDyV|$x ze)#3VjHu$-mbnE=-YD2}AO+)Q=rtg^{-Hk+aSwO$G`#4m%fu;rB1S|YUAw}2A7Jak z`(P~oOM_Wl#j~xAeW?6Ij>i@eiv?IML!YsqZD2TNswFaz^)I8Cu;@Q^s#2%%^zV8Qz5a#y^&@$;y zm4^8F!9%Ecw)N4z5r!%GkM#{OT^isUgJrjhXIr1@pTpl6GKWw1&!IfTe;z!9iU*+S zwoEoZnd5C{FcnB5Gw*J9lhxmzk6Thv0 zo>?CdSC!`Z4+aCF;@Q?uE*6M?3=q9q>z@7sEco6U7!JJ!?+*n9)jZH&{$aKK_V#BL%?jXY+9&?oBEUJE16 zc4bW~g@ok9luTPYpx7_uk$VoIkRe4!wK{aXuzZ7T8&fc>`y zgRSEEVE^_df{l9pH)XKrMaV+XD7$)*NJhL4Lb8hIL;IVT4()HerO=|%20^Rh`Otp# z(xLs=i-LCBB60iugP~RNd}x3D(xLrVZz;6jHyBzK&xiKcE*;umT@AG|y&R#YDa+fEB~{qrHqW8U7fG^8Lv{!bT%T-!cFL=Jg1+qTHf!zTwr zuHqtGQEVOza(VAca$K7Sb2^td4-^E?k!kPnA0wss{>w`tNa~T~>fXw#ou@I&ZaWSz6F+HT#ul zk;we-@j!X4;(}<4rN1x)nMSnbrSB5$KU#Pirozj}%-M}&6yEq4^G7He;n+t*$3D#E z{C~%eNP5}jJg##eDlQ;zxp8j*{S)TnxPxrR+_*pa(Sm3JR6TaL00DBe_&+Q|K7aN4 z_blItlm8>E9*t%07OQvh#(xkef7oqo=6G(c4Q>3@#V+w53|?Xt7iyzeVhs9${9;yG zd5I|qxcz%J*KvPFrq8%+%(>?FD5}V@BMQZD+zl8}(ic_0CsU5o{>Q;vT@}x^p6j>z z|D8aWSdzD=baLw31Ydb~!*c~L%y04^1`na)0a2FU9WuncP*lA%#P1ItLd64I#;*?< zLTWC^mA_*MU-WMJYjN_w(L!_XdUh6}YD=M`FWQJh1-J>LDhKAmv8{`28(648Hlm6P z&MhX()_UN!!DLRKq73ThM;C@R9Pg=@#AP9ae=AOYo7SPDFD%@VB4+HC{IqL22H4hl zs-D@81i3XLxy8{wLSCY^`kLcChp40R&tADMP^TMD9)*C zzm*%A;~*X|;Z+_@WGRPv{P4o_2(HF5LN*RU&cBY6U#F))g`c-hhf<+G8rSvd{L46z zHLS+W>j%q?n>wEvu`gmjif1;T1fi^^_YfOamZzhMN`iiTx!gma)L~2O_l96*aU}Wl zK#HVvwiTA7nD-A3AxM^__Yk3ue)(gEpEFp8vQMC+#o9kl41|@^Sq_vMRTR?v^MX}M zug_LnE?CRboPq%BXBUQb0IhtbIIh`4`L%fmHUHUQzE^Pp`bE)fpqKfcfP6OOp7pYc`LCXhn(~b$66O{qdqopjVLY7wiIjh@{l#+L`Lr#b&qJ6^L99_ zA-KF)dYT&uE2Z;c{oEzM8u;|Z@}kV=Q&Sy{u*d2*`g%yn!aolWwD~A4U@c6(&q7v% zOg_VF+2rfuRolb`Xdv)uSxy#;<0s!=iLPpf6lHpmuIxIO7L9tN^qeQ~5%i z{79F^?2N-jw-^O=|4^LBh6n`utf6bD=I^KOAB>Z~MT@Xoc*YtJ-YwMpZUM0SJQraT zh&Ooj7sTF~|ECP`c%~)Uq9Z=sDeA;0Kz8oH}_};Ex-QVC7XxxJ-528IySmi!R;|szXwB%x8{f@z~s(7~5^7d>2>(hf_o#;2cDF|eA`l4&HkTn0)V8x^20=Po) zJULkJ7;t61LqR|!F}>m3mYbZ5MI?vM1}(aZ3%6*2mL~=y(tNmO;_muz2}mvgYfzDk zh4tCNu&Q`ItY4RYv&7Kbm2BNP5%$`^4kN>=3F zzb6J-Yn0BmR(jD>aQ88w);_w=xi|%AW#3}C_s0kJPHC}OxmfRPO@{V&VRdM z2<)p1aq!?p5nLw1eYY`U2cqz>D64>@7muB|G}_i@6mSSDTXZW zPq__wmjH)8E-jdXBa>026J-tDHQeI|$?vChKULhjT6i*oW4xwuYp$6coa;1OQF6ot zQdw~?>cyKNTt6siFSZdbY{3T;&J2Z??_aQGP+mpLg9+;yT5?orfic5YqiA_wa(~g1 zQ%?)D>>u;}$p?y-_bk}5|4rKWCBPV^^@R z_pQF>x-_wf4E*yHiwMPPw%W8@gI~+NzVq6dofI#W z%nNw&KA4|=PrQrL()5FF8h@kejdT^E3&Th7O$}9V@f%Wa=&AwhNNH&zL0SFJv5ti< zh*;K;^Q2RLCnLNFP<8Q4rG`@G5~ZUq+7<1nMy{euTWjvUIlS>H4IFWd#~!=N=4#u1 zWo@#n)Y?@jgxDmmj5aG!LE&zQCVRztpLocy)g{iyBQ$;ND(x{;bM^~Ab|K0-?U5*I z{t;P<&gJB%tBZZmuT$Zdg=Ra|qux-d%22^J+pD)+w30;W`BTSGY3S$(rCLdwBu7jz zJL<|lQD=T2fWBvPuMsrADE|Y!emMU3IP#V}-b= zYl_4&Ridt`V%4LrDHDTLGhza|aG`m$WEY;f5Vh}&nx7+~(>V_eGbam9hc@k02=Q5P zV(huOG_G2Fn#J?Tp-zY2wi)JX{H!wCRRE9m_AlZ@S*5+6B4d4Z%x|#CP`sa`$y0A= z1<0%U^NU+3J7KI>i{H|P!lm)X7RnL@_2T>wDt#1ZsIova=|TcpJ3XN*=u9+6UX?SP zIuS)Rx-?e}(j$VuL_tWCy73h9l|Q{SXAx%0=_5X@rj4BLXa(Jw5vR2+=*~FOh*2lK zT^tVM7^eWrQ5VaEuRC_cX|}4 zk%nnBtqC&rqL%T83`_wkS?gkb<^9IkrCjQrYh_~y08Vx@Ub?385F>TExv;fDzEWibYak)sp zJDUnP##tNYQulNCseY2N*6xcY+FAWRImOBsb5RPX zFc+Jk$*Cy2kqPln*eFFrX1FIjq(XF7=vLQ4LjI+Jo+6 zagz-Zk-Q74fL09;S;cnBj9pDgxMcIKKscnJ2m={jx>Oa5zThx$n76&#Bo(7bI*@40 zwsnjsg_cF8p(I7T2Qp@3p93_K3Vs$=5`=R?DO{@yp$d3hArjBFC5~+VQEQ&Gt{AfO ze_gbNGl_9Fc`|G5w|Cj&iHWFEt<@VNqhk}}%|ye6m66jwtV%ncY$ExK2gPz>+E}@% z(vB%#DS9v{JsivOiTrto*;c|&r$-C*Mjh*G7XO1xgmQJ$+a1i7Vt8EG%X;0)=1=Fy@3+n@%d4eBimOHtF0y(v}204b6u)5N81sb)dOk;Z-Xx)(39*#5wT;4n|;*jN@Dov_? zLAnDLGfm!_nKHSld`1N~gmB96Ny!`tI9Yg7|1+&r+&d`=UMul(m*hc~GYAE6M=N$Q zd4nQPe5S;_EGXnrk5Kgsj;=74ZlJ#E#D0)&bw;SMV>Rik-(_lMvs17UY}r9sipRU8 z;e}P=x#>*KP4X)TZk7=q7#gLTGjmww0(>(hZK@vVz|97<(byXTBPamb;Q>v;P5xU` z3F1@5&Ck~2N{{g@`4e3+4wS^W;o78^s7 zKbh;u>}byzoJDPl1cj79z_@oJFPP%m2|d+|VGchKVjg|>_Z8yCZATDBqfq-siD zfG)J^Qw8yLNlq>Vs7@%$Cnb^$lai8=EI~Uxl2cJ+TETj(LTeaSW}d|<_MLPXhAj|bac!@lUf5S^OQgF|EcYv;W<8Qw z_gis13jJvX%^xvSNjlqmD)^HbHiN33_6yeO8 zV=*d9xe_UlH7x$)HErB(WKq;P0gNNU#*+kBSLBcu0hC{|kkustJEvYT`!H z$;wVxtRnv`(}ayWZ6=AY#kU}K+cPyhNf|lYEQTsjs@aHb2{%_A{59^qz0KhC6>jKo zNx1c6^mOm~x_5Nwdb(d{-HSJ>ZajAv!wj9aYZkW*veYffZ{EcKEf# zEiKp6wBe-*Hwk^a#7%hTP}L>uktc0&mf7Oe+%heWe7~wMBGvM=XVG$PLNQf>F)dfs zei_T1G~BM5l2Ma4N+8wn# zq^ux&Tzm~VZ2;S(U;_ZHexMTxzwriUhXmiis5;3jrX}pz__sz92MYW?d2|lk;EFZRJy!kc1Hz9FsWOR5zHJGQ=Ukc zASWtb-?Inad09MQO@c`FUQ9gz@(5uiY-w>qM`~X*R-4`i47M{UgGvxaf#Cy)#?F)8 z5<6e3ik(Nq%I%U?8+Gw;PKLBES*rm`VB}HH$ZG>5R~F64ZLij9T|SQCSHB)P1 zy_6F}X_ddyXdGWp6L37+j-gECI-M}8oiM7M@Kmc>In`F@ zT+1s^B2HD;lxz=UGMStblYUAx>shp+aA=nVl9J5#&x`^l__hURz%Pu{N1*`h>wyB@ zsMgyx*z0CpgCw@DdpmXFo%*bVEWpOm4z6n~A0`LpII$GwKE=s z`M3%5nzwDtcGpKYIATUR&3@Y^kZ=}*k1=oC5OeL?HX+U{8xbDniJ3B7$>Nw!8WCKG zI5~>8cHW%m=q*qFIEUxImaSuDuA7EdRE#kHmYBifW$sc}FJ!Lxe*tlBZG$)u zzq#zhE-`T)y6%eerLHT^>t38!y*RJAZeIqILqe%97z5%KV@xRQC+*dC6W&HboR0?^ zY5WzLkDf7XL(*oMmxwXYZM2Y$)HcSze8WZ}&53Lz)q)rh=e)wKzRl!`A`~d%T=>x; zy*9Y@7M!S ztLxOc8ehGM&yMkzKT*A`dtetfQK_appHqzS$emsG(^F+>mNcXv1@2LRwDqASA{ z!GfEcm*P(C)m>kY&UWfydsClp&p{-Jntl=RjX2-l5FGO&U+oQi#!hj?bk_!cW}i zB+h3=v*ujNi`3aSVD6Q3Dar1$KO};B8L+P4?@IoXQ!>5W@39nk0@IuV(iYN0E$#z; zhi(z9ZG_ugXF7}b2WQ80MgT3AWObD-wC+qJ=@E^q9F^EZgAwZ@l{`cDsehCoYZ*Be zb=Pm27TTUpv!49j+nHXa<0WR=OnU|RQk<>^N0=^6}WBEH90D> z(fzG!!OS#YKC4%2m61_CXm%;UOCnge*D~#D4~{91?~up$x-8BruDVL@EL(H!$PBNz zoMOKpca^QNyCq(0=3M-eePybe#V6CXyP|X*eLMc9{O#~}O>%8hvq-jG3aDYBgoCZc z{PCV{wfQ%qD>lw-(#~J>bm_!kq_DxGqk5M{n1PhAODfv(l!>ZDucK}QhE1`lo+HFWTC0D&cj9lX}(&D-xymHgb zhqu~=mktbGX>9whS9hr^1C|;b=~!ER*XZ-qFW}n;16CZ$A z(b$~Z+r1l~6A3+$jh^B9r}4>Cx5NlXw|+DBJBSn|;yf|#$)=tFoM|TJ7kEDl zE2*8#x!rzz-L>Z29o@T$IX7znSWRq?cXppGnRB;y@0QNFUEP|?=iDA~fFA*Iu@BT( zfd+pbk~!hBT{k}eN_r>P8LoG6#RHhWi|Z8EySa{X3e7%J(<224vJ2v z--OVKPNsY@VM}x({brZFl70)+S9MwXKDRf$*S$aeR`8sjtvPvbPyP)c3xen2fY`dRpA)Y4JW!i}!n4Jm6{Zpr^${p86gr zQJ)qU>U+>_D5y_GP~QXHRfHA}b?=~sgWWr5;XrqVp@sXq&!C0-x_8jRzHUuuVP}^X zhST?nKAgT`RQ9U%fXTO>k9U?Z`Iho=FL~rDB`1%Zk27=&^l7sCwu?xHVLcW~D(~nW zaNC6*nV`F_Owe6dCg`p!6Lhx(%Pp4*y6;K_60l{HG8;s6#?0EaR5F!AmYdvz+Q`Tq z6gC!aXIW&N*ij|*e=aB)qd_-dVdyG=f&17 z8VxaZvzy)uL^lSAnsYPU-4Hrms!q)!(QKC}`jhSq&)RmkFWgO7&HKWg#fj4U!(C!E z4}?2=Uo}nLCUxc{4|k_BETY@fw@EB!=|d7;JJV}*IgoBbFm6OJ9(M1;6nSU5!`+s? zJ>ig4CA%a$SMqOf>#AHZW_*d|Dzm@p(X!>2t;GBqqL=S`Q<8C?CsiclRbDc#_u3Y> zk;kp6=M7#Y;tv#74tZJlfESPly(qokOGeO`b58aZ)64EY+IShJ0_5U>?j2I=e#oTr zp!D+nCB1yxj_Ox%R!Q+|ozQV*OHoCB`>_wR>wa2l`*A|?~o&pcJGiQN4=I%P2|X2_Zj-+NcRpY@<_L4Sd0FZ zIKHF$)vyxcpT3n)(Mt?db3)a9?mkl{+Yju+iOS2FPZ2+bije zdst;Ra>0ta$vsk%CC9DWR(IU&mTg=m5U%AayXLyEtR`RpV6rP2xbt$t`1W^WG4AH* z7vl6C?)WR|HCdEi;XZ^AJD7IdAz1x^)VT-KP43}zN3!w_GA<(1+tV4}BD&HTw-&V~ zCWrIw8&<=my|w5s*wcS$(JZK|ao6^2(7bWzEgBPnIUWyt2CjN`-q9ll*LXhO26K5_6|)cw*g8Pz%XM$1Hk?SX>Eg4EeYbfyuD^1n5nSC^XU%Hwc1go+r80Xj7UGG zYQ6H`5MVGp-C3*3xk8?257Yx!n?nySuLrKz2Kbe9t9zgAYPN6{_g~Fb(%>qt+STM1 zOIHeLN`(|K6U5sG5?Dfmw-0g~z*__?o;~vx0m|R*nr0tt@}>ZyWCpDdN@k)DAj_}_ zzBSz}=D!zV#y0&L_r6!sX_GOB(|STA1(_L~b5-v=EBQHw`sJXXe1BfWG~oTFdY}F( zHs)`YAYp(%n~nLKFzC$ycvJqz+^h$G-VWICX8c%T3yU_(yW96Bx--Ee)tGmN!us=b z9rWx2yz4-G9zD4ux}xBCF+s7jNN>eGdi}E@4dS|=?I`_>?3%RSq!k=I&KPgjXZZlTpNm#VHD@srC z_jIzlDW6!fp($_@5}ph(w%;mVBR#lyZGG;BFl%wAw-)z#EpwmOGWUBebHHnvgI>!V zGNqE{Ziw4B(I7`gXG7M0!m9;|I26H#VBT?OK8oOy&{Gsqa7pM6MRc&+5=9h@bUi~6 z-QVp8MHE~TdWIs}*KLO)+S#o+#3g}gfA1S)nqCh?92R!x8| z&Q!jC@$nTqqQ40k>cE+!-D?c56j5j5Idm2p?61XAVVk4B9%B{f-su1-u4*V{{jE{t zpRlOwQOR#N@9C{_Q8U6;0uzc+Y?F$=mP`8y4D?O16*^qFV?(WHE_Z0J59)k7!mezbWcsO@n35muAo^bAj2xSM}#npSaJ>lGK#3}D~wQy_i_HOOl zy<0o;Ztb18wb#q7tw@x3CwFPDgWeVhaV#P*wbnhJO`UO1=vA$elc&-%?#Wko-T0h) zYM0*K(tpt>o;8oV$l|@yL+)uH{&4y&?jtzYKgz5=mcGlK#aADoa_7=J-T64(pR659 z^#|XSAE+CjaXHnO9YCDl6D{xaI_W;IlkWFA>44Ws54eM#+$~IVD0d^}#BY||K^D5t zfuJJqKoBh*#77`k&Osaq{N39**o__?Y+;O;E9YT#6Kv`Y18iz~BGyf$yK~UuZwKv5 z=w@SV$f|eK565DkVAF6&GHDGC2}Mjcu@W0`2y}1=q&Nf|p1gH91!Uk{tD_`;7B+!5 z0olf{GgH9!O`SFJ!E|gBmOc%IZuBCg^OWH1Y)YT>+P<1TVcXNrbozcX9XdPH586U? z_NC`+sXF(iAGO8m+@F5TmaB6hJ!=crNz)IT8PRd+M{LbIP}q7yP3Lit^Hd5iEaN`6 zDZDDE-V&h-x-!3_ov5?`76YdkBzHK$;O@I6TE+$A;4&^dZ;n=QnZ6}j894Onz`wvXHSVGGIt;WwTlBB-wpS5{>0RrCcH*uBHa9p=>O&LrZ z0t;89w}d+%0JxbRqkk-W=+;-#eQXXigB$pJy*rR@6kkmD@ddOEU!Zxl>fSk1W|9q_ zN#G7K3F=r(0xyX>Jd2U*(d`o@to4)t|LlBKA(xG>KFd5f>`_nGG?S5`oUka5_8>Qy z8N%I2z*MdQjNTU&2{7t^&|Lj#aDgB24015A#BF{2yC`6Lz5BWQ9pAnId%xVD0oe0= zqD0PhF9?Ge3_>u7z#ssF_(S+9FoEc^Sw7+U`0)VkQ>68E%rb`$Pnx@)TcYf(_P{|s7uqm zUxoL%kLa%LKCDZH*EGcu4;MGsw86sV2_n$%G~H9SM*)Wl2fV)&2YAYu_Bt@>{r^vy zfZN8sn44ojjveK;BC1f{md9G>nyOvr*;1NL9<#+R3)Bb%2 zXKrPS5O*~i68CmiMG8wQ!yQi7FJN}PHF#f<%euuQJV?c1c-N*1dhg<01zo&{J=Y+- zUskfUR1N=4wd+mkh6?noyB@mhu7~c}{Dt+1wN3k04lF3OJE4u zzg3>F<$eMFVjUwXWdFrH_Tt~%!z=;6JP3FW`~44fiYUfr4tTvoUZ0ab zZgB!`s|ByFjKE!(eYazFz7y+92BC~Z8H;#)d4nl8aI}H)T<&)TLmWhfXQ-mcmUanH zrVJoNgbW~zChZdX?4Wm;x#QND^|OxyC$|PWPn!c-aN0ch@K5e9dWQ~3j>taZtI`*b z8VvGVba$HOHs+MQX~3Ot&>xT=dE__|T?H4=5N2AGEbE2Y2Qa&iZcHIwc9_?ol+K;LRi%L(j(EX!~RwAU?^02azHNfM0PHAaOp4%THoH2$^T& z?o*`9C+z9MA`LP5OsN$@^5dmj1m1~mmk7L|Ry5uauhmJ(G~3%VgOg?_oZu=uftmY_ z<#YNWBKkJ{5EZf2@?`Yw`k~6;qvVlFPk{}Bey82ZSA;n>CeLzk8(z6BJ&D8hQ?Z3V z-kjH{>h{WOv?uo(eJWpq(}3bPi?VMGGQX1y3+A6%0*lnI+w*aH3YOM>jyc|;`Rz`b z+phG}F|7TW7~Td8S$b0P{Y`qi4sa$}$gs>vwI24{zBN_|R<`A3H%u3_1=oVQoL(+(I#aF=0i6~9#n^FF6TGgO05-cgbGKDDEQj_Yo0 zPvei$MkjaklQv*Y;p%s{x_6XL_MJ3tyFpxZJ@Nr5{%lMH|C2G^if@atz|3!Yh5+nn2aq(xc6>x^N3){Gcg`Sdle?0e&esX^msdXG04;f z=^5w~zPh*)8U|;sIoRRx=8^A}RYv;i44fP8@$_%^_&o*22zi3#!s+@wMjD_TIp4)jRZ3)KG4FZ^3Qv>EpKd_HkPdDqgA{PTL6hhIh9uWyV@kPFQ3DREl&kXQ(uA+7*I6Ro8&eXxqNjR2yWSUd9&IuTg$&vQ4wT zcB|L4Ks4+>=dSR*k%e`QoPvngIXC0W_!RYKU$&YZ0;peTs z>aXzg?fxfrn|p`<`8q#Wi3+OO*Z8?wKUe4t+ZAr5KGvJA^y|+Xj=YzLG%dZ4ZVTSv z1z06Fs_=(S9+^Y=lO>GwnP{>|?{AY3ng=KJzIQ$AT3zcdu&lD%|})D`5x zQCg|&QMJjckfHT`#y1qKCwxOHv2aFrnRTldYWq9$DV;7?ElUxEmiBL+y2xGbU%d}` zTd{(tj3e?I<%B8!yip`fiS=&nUnWfP*4_VX2~#FZ2~$FT6HAz~w3Ot;l@q3j_Ii?> z=&ksHNluEl;;SMyz3*NmIcYm3naJOYSLUF$PZyzDdAbOaoM720&>qoTZ^h@SOzf?A z%Y9@|AXG~k!_8ZhYeYG>T%V#PXBge-pB>1-s zTqq$j3bO>`vQkKz-kX7|$W+3IiMmNDicBRWVzVrGoEyk|iV|gIOF%?Lh)B4wb>_pQ z#Lz9%Mr&24ZkaZun@GP!24~5em^yW`ndx_trlbxU8+n=%%f_I*3f(j%W3nvdX?Ug6 z%F5XoT1*H0H{1kK0rKAPr)Aj~^syz}3hB61uxc@BR4@s&eCBc_XE{xYjmd=a3=1Jm z$+)1j(u$W&g+Rc%2yO1TsVaF1z$k0+gz|^z= zllja^<6>#$w?vbvvIWL&T$YmZ_hBiGgHWaOCp`_hxAj=UK;Ho&f6FLBfDCFhp^+^L z_bdv@{4h3>mrF{sZ-}qI?2+*uF_E&AzUXGllOKNT*b4N+;?6AQUWTmvXg` zp#@qcT^DFxY7%ACEe%FJpG(gZ6q4O#jKHHC$L)Ps1JfWReb zRlGs{IlgpcqGC)^Z*&I~*>)p$gOZRBDM3n-tz#UhjnFNdF5VC2w@7O!$`-vT%^p%q z^I?2$Mq_Mw*(M^rFhsj3cn>S*M#A48eyy zK|vN@r$JCkmVIZ1Wb%C~EOGI0X0Sw6ayB58?Q|6#3D!YrBwZB@v64xrKU*Z?jBJsR zR+S7#!b4yR6t*KI+iB4m z2tnvcmY8}n!S5r7LGpxDl$LuBgqTkE(m~W_i|9WY6LPh(22$)SY(?@G;uJ>+4bg6| z9f?9nH9|9JP%$0Jl@Rj|s|vW_EnP}&NxH1IRcTf}%Hyg>eM^0@LhVe+7ws5KMn?Nu z&tTRmh=#>>*fcdc!A+e&K}rNmn}R@MxJguOxCpZGbE@A{Qzs)4C6(4wSyW{(xbkzwke(6TgW+p%l;;IYgYH zk1>8+pRJ68cJ~^4bej@4!pLl@g%%stx8oMZ638GT$@&|D(w){jDK1`&O|16>x zv-zxqcTqg~$D~ilUSyeF`BcQ?orWc68!;Kh*B)N!ATjqK9QFA?3}~oIiS*@W!UbgN zT_uQIeGTHHb6MpHrifUt8nuIb%@W>|P+&ZMba=N1X!%Hs$|}3g^I!Y@eA%MrzezFb zxjuh#PfKL+iiiU(T^1VRn9=6Q{4bId;dVNvHtGw)KhP5hK~bFeevS|a?(?DhZiXCSC7LXn=6`P3VblLyEj=cxKi;y)|p z2UlXv@YH}&IyQelQfkC(NckGzbsC9b&)orgOzOOnM2;p!XOl(dSYJec-BhzJHxkZ1 zgQa|;ZQFo#8a|<$wrM`0+lXuFwQf}jg$cBa zOtwq>mJipRA44Ns3*JAV;!>Y5)H*`@765tZbAVt^17+MpfMPDXIUkosW?u=3HQj`$ z8$<~K5h6u`ui0+s$_!L?k<4SE4WIoXxQou>}m2)8rh zJMJxeUZg`b` zRFqGqRFqF8hs8JxaEK6*j8fZEY;4+gs-a7n;85M23h z%K-CP9mC}v#D~l}?CGV4;5F`FP=YVk1zy-(o$2DP7gfes zTBZ`R{bCqp=lB<^SuHp@U!s{%lrxBkmR^if{3>wM+qG>1tf*LOQ9)nVA{1YgcP)Wy zlMsjW(Snx^Wn!5}Ox9gLPJ+)8@Q8w*uut>s1Ru~Fq*R;hOC6NBFpTbU>#+H&lAXgTQ z&+YOKn;VTXb~G~!T{~v!kB{hL;^X4jqf+gmnhXf+W9;NdoP15Au4&FF zeg7`TP8_jqy=>!g{Zf65L^hR8ePbON#ab#*Rmol>v^Ij@Dgz?=MyvSE66LJ8U>nJr zyRk1ZQty_GHS^lLI`zKs2x`#guN`^Dn-S7HEL<;68R)Au1%s3TbaVB!ie>aPNuYty zYxV52`nDbw*<(YOo z7J1t4F}F=oYevN1GxH#skxif29V+6ljcGP>4D;$uFj!b@yq9p{6hAmk$GDrTuj}g` zR$ndW+FydqXDYAPvZmBNHZBz6yL;JC!w@$|8z{o?rE8IhwO~*vnsS+4F7{qmJgWOm zaN|}ZMXIZAi8gd9dUMR$T&Sd6X~92?lhsazRn+&xGV)hzMtac5$-o}KBy4Vdi#d{7 z>GT{(n~5&)!J5^~%|M4?Wf8Kq^_B##d;`wYNtAtoiAnlX1ISlzkA4IjQbgw(oDWm{ zHOl@rceOxE*s3EYA#$4N78oq;e;7AQ*6REZ;+1@R6HCS}Rq=z`mE1UHz!MB&vQdsfhaltn94P zt?*pW?%|_j*kChCQ#{Hyu{z^OE(w)v#Oyj&XKVa2XUZ?s-MDz$vIXn6IX_KcN>_~O z8@#I|GtYE50M4Hf0IEILX_I5z7LeMfZpd}Qc(1@m42h|-pngg^X%2s$J)H3HL+-MM+VKENu-o_AD zB-UO!VMOeSblMudRugfsCfg&tW4k^s*UpY;R1Y^-F4T7*3N<$rs#Zc1vQMXwpjCwP zcTM?NXEGsR*SeWSl}LWTx~vjkhVhb@VFdXy+X4X~+ctf=Ctn$UF_a+VBW6qO&1Jqk1V955iW3U6A(O_0=P!~6dDeeW! z()I&KAD=%u#HrCSJzS$ZdUL?&O)Xs*T|qrM^P}@)_~-`%FVEv%JQ)3B+ow96#v!8+ z;@Xx9w#6UyDrBw*^JT7O5$3vLkC%0Ygr|3XH<}>Hs9Tb;y!t``-fVGVjl|;$A`v}N zsEBWpE~WQnwp!#IH%X*3+@d@J87l~htgMQSmboz*m&>48s;`tLSm~CAudpu%($17| z6S%)jcb97cCM3RWx&QnSzRZmushY6sO1rUF3~< z&6|H~a`R7q=?m<6U*kg#K#qvm61BWLiL+Z~?Rq*H_3jKT0c!2;tlf^J(xvF1J zQ0-ahsObo&1JQDQq(P!*`CKZ^1Fqvt=q$Las;Y+cHK(^2tX>1R>Kk6Nu3 z_x?Aqgu=X@e)3;vR2lZ)dQtjMn)SmxSgyo1y^mfJ@6{i=5M?XccSu`*xz6s7rMpn? z)LZA{E)K-^#>qzp0wF=M5DsTst>nW2 z6CYd%i0`;K5TA*YrxkxYt50Yl7xS@yMYx+BguCyIlc&PqA6RH`-emF97`_b8#mSS4 z#DJ&0Sr#|>eiqp*}Te#sOR5!#2tJCdBy&~S?3DsM0xS4{9U6O_$~ z=4fIbW98CzZ|l=>@)?`Q;yZ)yPKJ4W%fNZyQWE`t=X}KH*kkQpWYj?bK?vVr0C@=S z#$NL1_)W=y2~k4c%Xh@dcV80ht;ZNsib7U)j)S{fBO<*)u$)WI(|;jlV;w)qevzdK ziuNlUDL0p%&X%BM`F#PxMWt7FyZXubx)yoOw8q^kY5(Tl*0;yWr-tC+X|Yz9yv&=y z$lW#0vB26&6bz7{xy?9Kf_^AD(Vci7XrGLe=Z1iGs%VrvQ>xO}!8394i85R{z3y+3 z&oxJ?-}4@o#NXd~JJf_w-QyRWf6YoUMQ!3$UoLC5cjpAq`lJXf$ZzYN-QQg;9sgfQ zYPAj}4-Y`sejS{Y_iMqn2a^w$DJQQ#pEl3h$)N9c%xs(+dVS*cm6t-R`Fb^>qXA}Bgsbv z5VPy0BV30Nj~GJ{$?N;a|8l(}1zj5ZtQQB^jYup`sqQwZcsFm550g1hgZ9FR50b$X zaR-~_x}G7;u>)lb>%HTCtQa>uUgYRc4KWu2HcGZqE*+lqsG4Wx3~%wo5Nlw5i#~ho zTatH`c_XhspEu5!yv+%|YqRAoy7DTY#c8SfvZ1%mTlMS6&ySBQUk9`JkD}Nn_->S2 zCoA&S{2?0w^MbGyV*?72{CKV7^0ld@sU)~LV01`^t=e+>)izABiSB0T4%tLv3>cCQ zSX6y+%&D1Hx8_n@>&a$(8=f#d)vqlP+Y>y=rIm>qlWYqz`6*M|d8;m_6nR}xPQ53Y z4J!H;n9*kIAvF%zP5j4H^anye!%dC%C+{B8(K@qrm%4S*^><#hqy5R;^6VGv2r`3pAbr}^;EX+E4hx|j}bo!3Dx7tgkCNp_2kb9+#Ss6=XA!=t~!yOTSH zPU~>;p`p(nN)9uSxax*N9F`}Z7=g8v6d`HtyC~dyliL}}V9j-xy46;37M(9RhCDnd zK!!a$kUSI~Qbmd^EwS{2lwBfAA4m?WKQt`9BBrQAC-4Q)G+fcuZMa$zJ-^Y*BF$hM z;wB-@RA3(S*XUfV+!gY5Xm#cb+53_Q=tt(Md_}!x=Y7fjT4MHEeAG;D68lbuFY%4Z zt!0{+-yp~H`;!BUtN5)Rgq+Ie_t;Nm*CsbDuIKl86K(N5UzO|-rsnUBc8Q|8hULX! zyd}9oJ*_jG^QHNdt?QDvb^GpHg>Opk8T#zK$v1VMmG^5`>4S4QuzelAJ9$s{S-H{1 zWD^gDQ2$-Yd)0~{1cZ`^tismthGcu*D%Z#f$tZn4Uzd5fs(pty4Ml>V_+d(}pkz&6 zr)WjqNZ+a`;S-d7C8YcIB|oZu*ykmetAs5UQFib3!TW<~%)VrLy0tI)00Pgl(^PM$ zT>q@<LYv=Qx)M4G>Cw$0sO;WLwLp~+xnKZB8UiQR3mCWE`%kZja4 z_8GYQeTXYQX%`~Q`WnjuxDF0C_R3e5-$;z)5gMsQ8}H6EsKQ?f`IcD0$}h$ zudpVAyIY~}_;kAqE~f>%TWU=PcegZIHXM$2B4#c?U(8soWGPJskJUPh2LyNj*K;O^{2u0B;lj1~f3gL$HW5TO6K9gJAXaf{VG zQBmDI(0qAzb=t{;&7G;%Wr>7u&Lu%e&$gD>EY!1G!ryvpiI#+eY<3VVTsgnw@7XA+ zJad_S8=7+ejc8Ar&q*Ii`*29jm;AfWQ-arBxmx>5ggztaum4Tztfh|em`MBum0V2; zDNB5vf2n@(Kr4RlOMW&lspKWEsbm>-3Rd~a&<{28dCNwUwhfQnBM820e-#z*e@BaTgi zoa`I*IU=Ri?7wo|$n|_{+gxxW2$uezO<3UcvQcuIsqI#x>=7fve;CI@cMl zzruAh*ROHClIu6PUd8pla=n@>r=8L*T%YB74c8aAZsqzi*KJ%s&y`$4HW!ZB$gTQy zK$H9AYh2&P^}lhI2j_XZWPgyo#C1E@FL2$#_48bBewnK_ zJ74AccCNq1^&MQl&h<8~|BWlcK6@TeGOjOi-Np4quG-3df$KXh%6>WVH63ImWrU7| zvzxGAwazROeu`DO!>Y})DxGmT;;hE3qNgia$Hu~uQ#h)Q9bW|YR?-6@Z;tFtW8)V? zTO5~y?UffQj#C76UJuD*$W_h_@Sc?A$k0J@KJn;JLV0oktlj=?;8oeLo9B9UwoC_F zHo8e|KGtSSb+^git?^Cy_>7*d%Pa#)nms$JlXA{`z9BS!tR}LAAz({HS)8}5s>2It zQ1wW-c_y>BnK$b|R^+bqF7vDWs8{<@xA;-7@o;X635JbX#YA*+u z#{Jw+zzWy#7;z53&XOR$l$K^pm% zk7pb^V8I)I;Z=+;@}`~{Y{89P!Y&%3z;1z>NU;WUhcC6$HrxrW5y%4S zjM2qWlPVky!&5M=L=G!C?7&Gv4x{jglf0chukI>N60X!qLXLXuQ8kA02T=Ao9nVIf zK$ngiJ1)U!6K>j{B;02w34P^JofZ%E(Uef9q1e8Z&5e$OL9D_aSu42};~D$4-$lG5 z_$eS}oIagVol@ppTY+miVrf4V*L1!xu64+UbBbg1GX&vM@q*W&n~)Qj;?Gyp{ccZMhl(VCbE5JqwNxv0r&h{V2*xV^ng}wq81`nv#m1o=s@@iZNuS6WL2`X>IKS2~3bniUV9;jKa}l z5*lM}p9F6Zw+&f_d|=Tm(tY8&(uhI6JLa)h7sS0u->yV9qndr3WOhtQK@{<(C0Wz$ zmv-MH{n0bL#?T0FejF(-NQ3EvjFe1|9K;n#0KFG7GH(10^xO0VK4IJ?M0n2CFVDVn zurY!P+7atRJ38Vkp_KQz1w+AWOK+_B7>&NqQ)TZCZOovJm@h-xcdJdY`l@!gwj};{ zGpw(<3M%rQUPoD}%G-)6tBWev_g2|hR9Rb8xuLhprlQK4qRRH(DpwR$2#*96Mf zKJQS!hAa;CbKVPqSku_G%Lxb2LUI+@;(qHNPF26Ib!NvQ+s0GVA3{cHQyS;Hg} zK%?afwXCtdqUD%dp_brUt(LOSuLCoxw`j*qnGkPLRKOg8>D5^!U2X%7(t4Bw!m;-A zJs`%)<4Y4>8!0#GtHybClsy{4Pm5+$i+vJk!?PR3uxW@1!3F`SaifO?!XDkcWDTLum7IL^ny z`1Z>4F_xImDm_j~a&tr`YM$I2eFsHux=;!Ge3Ff%xm{h)Hj_jx)!=!k@9sI5x;V8WZ8r#5=(I0=9e*nkwUf8RtE@ zbjFQujT;@u3Zxu1&>O1yLoLpQ>-{R)F<^Es<1DqvU>QdvRx$qx-Vt1;C2Z<+1V)1> zD$$DxqD(jKcU}%2AWd*Ai;5Rh0Glo$C?+GKvgC9arEVWL4CR**^vGl6B44hl z;2yFh-~@g)S6_(vQXf~+S0n$Ft0R4n&8nl1ig5aaXsJk@W)KP-V_~ock5-Marf>W9Qq%3Bn~EIVAYw9 zy=j=S;XaX7bkNE>Mg7EJ8+*^kR*2~`VVmgnIA>T(ZGQw0F1yXuZR*v?8!6=W8J0xI zZiCQf5VDmz z9CN&TNA)Rgd6V`8mv`@|KEmZaJE{lSO-hVkmJm-fLcLOniLUfS%0)0=*-ND6&xB<` zCdYEdv(HrQbt<;b`BXcbD1Npmp5^Y3;-V6F|25oQ(7SZbC~7||Ij(m^wPe}ToP^T? zuV%0-Sy~>w$V-}u7IHP@NR|*S(v>a|GkHG|;9Tci*s=Q}?2GH&rk)~*>IOHP7YSDi z=D&uosIn8XX>c;1!Kej|K?u9B01qCE9+;HaQJF_EZGb+xwLx}N%yg8C9q zeTk>O#HdgHXc72_=Q@1Nhi-HO8pyszU!<7CHm;s@&7AH@9I26~aoK55p+ti=Ko@q{ zjG&~hA6eOdJ>56_$PGVo!$xkp8K?RM;cIUVGOuyh5{#c$VS$sR(wLL|2a+BMg7pW6DVqU1&ij2c4l2i_tYlx7IOZ)Oq0~e%7hzI|&H@Ghq%v(a zSWZuxw>Zb|E}3uQu1wv_dZ>F@nYz^pG`&n~as@bMIayQbW=42BV_vU^BJFXl)oT3R ziDWE=ukmkFRH)Y~mF$4C8}ia4ib%}DF$ zFtazNx=hmLje#t|v~vpBR4n}L{Pn(oF9mQsw#nIQJhV(aG%in;pMkOq=@yG&Mh^@d zSG$R$owsX#Nb+&FU+b`}SCUT{S&zH72U<26ZZt*RamiJqCc9w)jgE8^=!lQl|qixIIP9>I449t|BZo}GpeugBb#irx=s11*R+dM0~+vwA?bY88*%{c}d zWen)`y8;8IHQ*#*!;k3syJJ!ltP7?q=1AS`u4ZyLxf&h^xBzl!racbqgeKhKsQyRF zaS9G(1%ob6RP)J=jJ8H;(8TsaAnz#T@J;i@FM$&IPh};sM#kuF9MOLZuDT?>64?kr zr&sE}=^2=sXy9SClrb=TA}j3ON>TVCBFRiLmTf!REleZ9?aeHf5EDf-V>VR~q?xj| zOQ?tt#HUii6@Q1)_Cm;>p{l(g;trt?Zs+_;qO_`FVo1f*hsP+^iImorx}a)pYz54X zV*+Iv(dgxAzf=S}fKkli0<#2KF=l~GMJQI;6O0SYVuJsYNJWyWSlFCjkRWp+EkvdP z;%SAc=Cs0Wgh0;X+}&CVzu56t+kqJ0451n0n;@cCENBKa$hmvLHn;rnyId$ky|aLu ztC%i3dw1tDdXa+om1X!Y^iJtp^g{I3+&8e$E6M%-0RKMgJTHLEC{&^jv70+2pK1sV zVZGRcA`oFXn6kG3s!FydWYy=|?}pV#Vji)vx=iGkZqlA}P8%kRJYV7KWdx%Y+tsLq zn-w@xxLLvI^Xw@Ue%2%CSz9g(G4JL2GS3u}R)|@l=nGsGf>vl*q374Rrd$P3bT4bU)XxG6O}O6@^yRSnc ziJ8hf{gzZ((*L2lY9STa(UIOy=80r7`GwCZGNC`zAwD6BW-Etd%C>UyBS`YHmE&Kw za_si-vuG=4fg1IOys@pEaxvm4nE(dN9k$?lzm~0DgD#;F$tLqi>GK|S(=^Mp8xi!Q z2qSn;KkGPqELX=?A9uJc1g2N`fUl>R>*cbu2=yu-E8gbs{8M_uQ)iv*^|9*JK32Up z#H!c$SoJy|bxwT@de(=f^2l@^sovvzc7B{0-|apR+vX6AzRJVKr`#krmLbV~^o>j! z#M_htU^OWK){+9CMv{5Xe%;wxE0jxw;CjP8#A#BsP>m35NjyhW#H>%?iJK-P);GD= zl8$E2e1VAQ`B)KA@aRvxKmf=j;*ILm$?-@V)BsKQGBCg8I8pwM1fNS%3K#)Z$Q0s1 zvO@w&sXAXSuOrtQ9ZRQcOlEE;!{}A+Thdsq@)MGyiwzwU8ZS-AQlD6U z8>$&W10h%?OTGxNI~mJv!%&(`oyk-f&1b<6D|8ATt8`Ho3(j{VIDf^4C>h}erVhb%8?zWO zSUpBcWLD9tn~fx-fFyov*@PrTbxG%4M0LwZ!n6Sa9!cm}Ly}$|w-xVA0o1^OGtT~I ztcxcw%Lz6aXUrSgwu2ltsVngh$SVN!o59eIC@!Xr#h0@+ ze+V|{Lvgem=~4n7mgL%~Wrv9=>H%_oRilq`9h)kgLZH$w?R0kj>`8nJcUwx~^XGSd zqI0*azxpg*-!6o}U|)a^)t5&Emlr7L zi_mR_dIkp#XQY2h$nwf$gGzma6-A$YAw9*0`ooL9HDLF4x~-_%jg|F9{}eX%y>%mz zebK*eu(BJ8?2G<&V~E{IWMA~J8$;|yBKx9$-56q8OujGrCy%)Y*A-RzqJKKD;;VGS zjD69+eMOaSu(B`u*9}&7BawH~th8kEb23oQQlE*R#m%WNm0_8#ben>_RBRz~x2vM9 zlBd0b6w*}YA%m$xuwh=`Nt=&#^sMk1S(8LU?BxTjn)24^>qm9C;OGz@aQ;z)i>;(}+5rf?~uC*yya3$u@?`Mw%Y|p$<9D zQN@}eHiDUK<7$P~g~`Uhm~1k}kU5xa=m?pN<5*_iWSj6N+e$`7-D9#%$Yf(vPM5jK zrcaP4YNj&n_D02)jA5n=Xrb6sxftKa-`uj@oJJ!P`7=L)sd7WGRF+G7^TZz_FvOVs z!><}=QR)_eoHoP|U77N@=2x3AjaiWCBom&%L&_ZRu>r#XvzIFKOkKm<8!>gYT*FLV z%!QSynYz%?P*ayw<00u1`o-{9FYt#ahq5m6tgfPUQwruyxoM+Uw^V`NrEa;uv-cVN zffoox`3g|4I$&pKkg!Ie9{sbY{Y}n}4HI~X94q6G6SH0>#3L`ZIeT}x&fZ;aM~`dD z&0k(L&S%)c>Mw`n&-g+@$&39zAT7&PnUxOgF*|=erhE07JlSJdzu};EabSBa)E6H! zvCRbaj7fRbr*vvjX%@nf#b4|GBypuFmlt?3C!AL#qC)V4jicgy8G1$}D#i2L3Kf-9 zkoL6f?Sx04mQGkT>`q}Gr`r$|ICk_8p)!3?8Ti`Y1XGwKStUubvHi{5D-~qmjV&sT zq_k=*gu!d;QMdP!w!QkS)&=~J2>&Bp{L@Ds3DVge4f>FHjq5?WWRRKN>yk;>6bhm&6g_G2B{b=r+4w;Eeuzs>c(i* zVTg#dqW)L}D%iwg#1NetJ#=CtG=4#$v|!u8Aq(Z@Awo+# zAws>e^=6+#3aKn*_WE6gyq!A0$9EXc;KRk>_kmx1VumS&TF5QKEcsiRAJV}hX39`6 zVDduXvwr3}%q95QtQlS&bGj+{u6>+B+0NNpi$d=vDLfdjXv=03cNO8i0(ey>SP68@ zr&d`gM*(&x=+Lf{RadG|VVpZl$7oAso-r0|= zUq}?ItLVBKKxWq7WfkrLxu(}QJ;++-j*wwzU^O*a>QI5!OUWIiLk9IwA*-=qf%r-< z`O@2BU;!DLeF0*%`}(s-JETQd9z*#W6TTTUqRI8kq{+gKz1@C;AJD?3dMUvwbvkFzXrqdp7VXllHjkVC_UL+C^bBR-oY$48i-ZB;=Z*qHTr1Wn{ZRzAQHAqVagHTJ;f zM{g{MT0c6@B0pVD1Zr%Pt59P)LLaDqWJ8Wq;33mAtJJ9oL;%w82nK!aM~!(-Bhn7f zr7=H9`g{jbH6;YM^{3&8);ToP?^r!(DyhC5s>w=z5`c3}zN@0o2~|YhEjq#6@hBo; zuJ{Gwu$3|{v04~-f&ZNZH{)TCVUp$q^@ugx~6lhvs{NI0?dHQKBXEHl&TAJV< z`^Cik3@saKKEc&~f>S9LQ!W`x`fx&eFo4*6E-t>p;rSehYV;k{J(=}^xA=-h33w7a z2jF?Sf&RYoU0M^lUMNor;M)dh4LF^C*{bnSZ(7KC%~sdG%<jfWtUuhNK(VI(~&1LToP zYzenBC_C1IY-aCS(PdP0rj3Ox1%|V}_*Rw13vT%tI5RtmN<*}#o-CZg(DC% zR_^BXZJRHQS8B2;cmCP_F#__R5#g&|0!M~`p#eS6sfy@p*)^p21dX+ct4C*A1|J+gc!$=bRIxZ9svXL2oMoX2#H1o#U~vUjf&br_#5Xx&O}7zuMX4W zpu^u$neT6{z0W=OQQegg75{(JpUORFpL6zJd+qhwYp=cbsax6`wl4M8u36qay*S(K zp0aV*)Iy^-Q_nV?e%iWu=o!tZfvxqj_C6V!4=Ux>e5-wW`RH^Wk$OSIaW?o9-I%4- zON-NZblT)cr|^jF?vuXS#-ruQj}SENQzt*#&7)nDALTqcW%8pPJX+GD0CMbaJC=`k zYJo@n$|psaf?l;?o`T%l!?-3ea6biP3Y*l~-pY@*@Q9QVlfK%_BXUQSU>Ex+V2}Ew zcX#oK-35bp8x)X2V$!?od9-Qrqn$h=mNd}Ao^a=U*PnW*KW&MgIkn3YJ=^h&Z13rb z@a*Jg#Q|Z>EXV{gxfTJ^22LD1@K-R#kWI#Yw!o(eEb@=M{pffou)Q$gAPaYqb_!&O z_PS51dznW#=O;bd#3S-Zgi7n-ZUQ%L&%hcF@P*w9F_$?Q2Mbd3jdFkVDb3Gy6Ato`hVy!<2*;Pld!ZdMy=-?6lQ!Z^iSUwaVoHzUc z6D~es#W`Mnmdo%t+L6QH?2%pmUG)(LhHU&hSP65j&2oy`iyw1#RZT@4Bd4GJ{&R`_ zu-!m~wd<+i&R9WkAxMls9C1}2Jssx7SS+%M_`_3dM`6zLD?5q#P_M(^9DnotabSIK zP3?e9Y}c_ih7{19|HFF37?L%M^Shr)$u1Q0rh1o?C1O0%J>gP%N$Q>rU^imqShHx08m>qiDK zkdv*wuJ0U~_a^#!v#;swLO#D@6V|RF-`YiFmrXOpR?|$ez3H8LLnjW?Y)ED{4DG3W!5I>((H;|0&9fy2z18YLEo(pb*?+0pB6x0rkUM?o(}e-1y({*tDr~A64&XY-Zanz02Bq!q1s{yOp15Qgcn- ziU^Yqh=@s^HpGZ63^8U9s_8Hsxw=+j#XR4fz@l+KUHt^~GwH%Jz>0B@{&$-GC!7dx zhL_7MhK2fBxKiJqsRo+)Gi~vQqr_w1d@RcDVMal8U-r0Lzigsp{c?)aFzm(I61pAc zkk)NUgW+zUW$=2peH+ylqP-T$N3s=}nhp^|+3DxgX&ZcwOH-%MRwa%6?9l1PS9+(< zF?hYxd+DUc`fNIV4xPrIG1O@rZRdcRX3i2)2rHKWY|TQHQxQmDcRKNd`k$?05Kfrp z8{DrSgj-eM$LoCC+*}jM-)uIsdTVOBG1F9KWyPwtnQx{Ztihg+R3U1;VcXM@Y&hpv zsSmIiTX}AuDs+E~3;UJ72Zo?&)uW(`je0O3jCftxV|cc-fJ2osvbGvz5`$YK5&ZLU zHDlDuPZLn0p|%1TkQz|8lTR1_5X0e5-c#a)h55kBUf0o$y#sRUoOQuh^1X9vxAX{_ z$k+AP$Z*3L%-6_E$hb+OuBlSiLea*IaYo0I=z}D&Vmg&BbOHh>UTRyoiFN%ABb*sO8d;v#M!u!68-CM7ErZOZ&}Pl1KRTr?-TN*9YL zNYvyafyQU~#aS3@*j@{2t0b1}b&0lL#KmNBQXj2C;S=WOQI#U7T-m_RNPmQB2)0Nc*` zKgnblG4cr-Q0s~^AxYvQa{7bvxt@JrlwUX7Bd(%F{YW=taZdzkyIidGY?(+)=*2~O&w`oDL-pa zzCV=n=>@v%t+g6G{>R~8YuHh|{@Q3H_R|ie4*MgJTw0SM+~|nX4a-Hwc?Az9ZW48$^1)wNhucqyzV2z zr?|&X_vIq?eJPO-Ww_Or{c7P*-uElka(jNY^-!Ms6>+|&`IRs3Xtal-Gtq$uF zO3~5Kx&+DjIerPrX|S?dv0tX0G9D#0}YcQ^R7d>heAwC7dOC zACWXmWvG<~CuK@n4ZT`$ccdq*QDl~hdTWoH5T+$h8xo}+r%Quhb9^bSi9qu0sBxKr zmC4;1o4l6Yt*qr{<7DMc$vm7ZyOdc0*DHl{5hxkLxp=MOO%4%S>=*tyaCFe!5U%slKX z7|&FqFd_djtG;ywt8smOpH*f4H3(K~T3(V$up0J73|2F}t}{ic5IaXMaAx*(ru5uU z5u06GIBbH;9OsxVA^Tf$lmmcsoa!*zQlV96UkB2Yquk@yY{b}0tz!@D>JrB4@a>d{T(*EPWWoUZYiD2UgqgYPgX{=KZ&^XGEvfOKutw zGxQP{w0RU0#gtq{ZDM}Wg)~2crQ-UxH5pNnmH;3d`~Cb80W(dy((5yJ@H9z+jUb4k0+0l{DC|V=1`;K~(uKGa`P}6^Y`W1a8??zS>r{cU zp(`q6Sv9uB1GgK^dC1Gx_kAk~;n8z>M;m+;q&Dv%;q!oi2Y4#)&>m$x>UZ;QKJR1G zfF@zQCf?&lucOQG0pzJ#<=by?s(rFo2P8KNTfAx@>eU;D(7Ms48{E~19Z+%;-Vz(` zi@Ez6B5vuF5U0?92f5!gxJPA(be;0Ww)Bc9b#MXPJ(lPs12qV1go{n=;o9Bx7P9nC>Rmc~>~= zj9`lRvw-OiqIm=-oe{KkM$pQ~J^+x<`hY=U&g^?zh^a00HjZFzk73PRa7~L)FR?c7 zSmWmq^ab^RweAqsSOjsbfj&?U-k>mH&0cq`EjZTZdtIu4C-`@!I86c z5T;||8#vPFj94X>b>PK0hz%m+0B9C|K%0IBD1*L6P-dIvI+#gDWDEZkC}R=0L>cl` z{He9P+6A_jN4V19A4m<8#cj@@+6?hjNR36k7CDZDxKUEmne{NJ=xdINJ=x46xp5nD z$M=ZV?Zf0|=fHRJt&Y1z$KAGnJaP+oV|Y0$C5?NZbK&liUT=UklWW+xQrx!Gh?}H} zwZlmNb1ifz%Ho90ehhr=l~1um=;R z8V&lu)Mn7E1Fd1&aG*)G1c`sl%pF{A_S<-pzoDB#?-Pz*vSpHxuD2^2GIvNSvdvpxj7 zoJLP^8a?&tqS3*yL^V7hPy*gknYfFhN2(-X_s& zRT)osswu=ExttLjEm{bjQYML?pmX%=Y%8<$-u9kp@} zxT7{yuL-^NtNrx!3w(u08zSuo-5bP0DM~+f!Ge%>J3I>Gq6?-?cIBsrQP@>>!D=X> z{fZfdQ-r=<-UUss=t77VW2K>)_fE8iWGf9#g;p6!DEuJFdtR4<)2PeL=&giTD1Z{v zHKIeVhd6S{(>8J;6bOr<966_#Jgp8}xt0ll%#bf;-9LSWrD!J(L*6%*?JmyA`09ll zy>N{R$v5kTTB+ep#YOYu@llGoz_qj@%6RdFOJhw1*f}Z{uXP&rifE~q& zEmZsWe0uAyvmQHZ!_-Xc?|v#B70S)(3s=cA)4JlzNl0Rjs%gf&E(fIUw+c3*4B2DW_kZ0FCk}m5`{90SK5c4?Iry6ioTnkc zFp=5hLGsY_9;3l3#)q%-I)(?E`ba<0AzoS)&dnvYtZpH4bF(cHjlfgU#OQEoLY-kJ zqt(Toxwer+`GN#UctNC6558w7LU-62or@jnG3h~@OPhhlT6I{WeO+2MgIZ&qvcKzY z8^q7r@;~TJ6LR%naT)(<4F@u{kc`x1c37-3Xm}`qWbN5YSXWNRWxq%vU@v*ETiSPW zl7>)1D>Wo653Cv`L?{6u=uc3hfJOjd8LR?;0(}7>pa-^%NO$<`bjb3tMEB63%_zvR ze5{qHp~nqvd$Hb4+aS2fWJ72fRi}Vnc7z+YfE5UE0**_oR@*9ozY=F1@IM*vmcC5X zsI5$Vr&03$GfK#IOij05%U-a(pn{)iZPc+YNZn1Q1PrT{28a$~RB0eEszwHa<-yT{2(0ZVI(z?NZ4Ro>0PF&`AK^BFKO(sOe($8 zu78*H)<+lf*|oAx66o8)CKH?)fjJb%8ki}H(=hsN@+TM*`7)yMqNSLc4sw7QY(CA} z7{XHmLz7!G*mPYbc%qw2mIF}Vq+JoiI+TejX-`~%N#>k4d45Y^K$HMs{5=at1U?Kd zl{G5ByDdiJ*2Gf+C+Hlx5quWxB3I}h;8JSP7*bs_MTzm<`orZ+Cj3^#a2%!6$7|>FSAB2z zS~(Xdb5*D+#`E zx;zw3!7@a|w2^S;eAQdS@?X-&nY)ICYHp}>`K2WNTB}o3VOM~ zQ+awsX4pIhZQ89pGDje2EUFO*=WKcy)f zG0N7yx6DM4nH`cYJ75#OF(5*+Af=;i41j35Ko|nTj$4wSOBDfxQxHIiwpRq=YU{q( zcnk$O;?7Y}w(c2()DlRVjWatgHA!SJv6dG|D5owe)wZ@Jv-%$iozQ57P!q1C)?9St z>*y73VCD=QMVQnW2hUxIxFUg{GVHb0P0d9xvPj;CY+)ozXUR=6>BIs2^zkT=2}OW7 z2?CRhFAXRZ2>ubQB%Kd+a>{|!3%&yL>`C=B00lEgVx9^^{y(nR#7P}208E*^zhYzb zS1+n>jgvmRGrIW}+tw?mG|nMAqH0Y}kUN|jhC(g(w_a%O z9PJxp4-S#=a`DT`kOQe%diz)30NsDRG zB2>N}+UB!aDQF40j4z`=ZmOLH``r9C9JIhHHW?83ZXHVr90@0p5>+Be)1?xn)ewyc z>KzXq%w7}1-ZtWPf)o+dyr#e)X*fo42j^OBSBYkXCwND2^^G-}vFNyRLMer@zK(_VBEV9kM1_ug3lzx>CjZ8>P zs2OAui?V$#g&?`s0luO>9pIZ+VoleTaPpd|McQI9WD6rfm<^v2U8)>Tf%>#r3NNLQ zJd1;tO996RWHH&^BO{8$6Qi)*z6_DfY|OT#vKkf3Y7s~rwnOZkv_r6=dLrx(deuEq zuexQgcrEsdb%V|HiMW%oUMV;w^h$2$&?`OwQ%NBy<{)MP7S zv#T_jvNdXqn8^=h5CbT~ii3QSNC?@SKf-hDn{CA{uV8}%a#)Anq1q9^+Ya}3+WHIY zn_IN#M_s4{x?qPca?}un4ujYf+LakXnDtc|j>4GOSYxl(pfCQlAc3`&+?XWX55d$; z5fL#cZqYNY^XPpNtOTjv>sib+W+Us9IX7l_h8&q%ID+FXbGP0PCZaC;^S}aMTQoJW ziJEjQkRRbZ0M{gU} zTiM>EP3GTPy4*WKm$weOth3pfTnJ>seYEtu_Ci8=)C|1X^8C}$Xolfb2QJWhbuCHNOO}8u$nXT@aRa@+F0y2g469Hsmqsv0B_xg%~Rn27T(~U^fj< z%2;>iY}Rh3xpcwY&fo1`X{q+m zn$qTx62qD^d3EoFvzrkxrLYkym0IQw`mWC1!!OC-vU~Z}y!^4+`N_NW?8o_%`%eNe zHB03SmHK^HDCPG-yN5Qeu>M@qS;v(;PmmEV63!HQKZ0@2nt{dDPcRM z1fedaZFkaP+%53K@i93+kAs8#{K9gugC@>j!`+_q(<}L*!mB9^j7;81AgKg^;E<{K z$ss*kH1;49rS`ClFMMKL=j@(0sxuDFUx0hm<1Wspn-X=SEKe?5TLt{mdk@@h-ahOs z*k7+kif~te-@%lG?u#;p>CHVfoH>*oI`~?=G{? zN%wNr?&AgWVklvG@i1?o8=Fd>2(o=)e}&(IJ<(eDFK|WMFPh#00pk1Yezx+M^*lU} z+0P+OZ~enlNi-g-zx0xcmTa%2cp$Y!zUt$zgliTZKbSr*ss5MhzbvcQr>3T-8;zNn zX7jRH4(Dc#uXFkH=jP_;yWKTw)~;Q*Zed~l`VAX4ZrrqK^X4sE78kc}-L`G}_8mL& z`~|&UzkkKfol8qso^r~rU8kP9yu5q&X{WvL^wan3*}M0QGxqJ5tDg0&^UuHFf@eSbInQ~~bDw+QKv5h#_|;$iHD7b#g%@3P@x_;1 zQsckpwTf9X-jkfW=<-)T!QT|ms(;hmH~4Eki9hU^V$vVW@kPpC7XEZU`gfw|9o~N` zfAf5&zq#-m??->v@O&+Q>i;_a7Wfl%m$&!%Ftx9|UWHipA`(Y}n5Z!$rOh zDIbAJwmxZ?EocSDvBD79Ybcq@3`u*X$OMh8NW_Vv4r`h^DAE9@uY4=)y2G|)Dy~Sr zT0S#yOk?WUdkq;q;Z>${$U-ST0cM*?H3da2vFIo#s{jH3b59Fm^x3pbz9P{IRdygp zwctZV@?+H6?ofOoTIHytLUA}|7=oNHC>v1rktDvvuZ#{Pu*V6JIl-jDhv(C^T0eN$ zGtdpNrYnQJkEnal5BH`kZ0cm5f~$mX6M=-~L1UR8NXd_@b3nFCvY$=V9g~U(N889M z@rC&CNFBP8=~QnzFBi`=m9aEL>2y9baPbhYBBP1EVc9aP0MAqScZf6NiEK_C0q6c5 z4%fhys!m&v6}cqvz((-zXv`F4q#>X;`n=4ItHGlKN|B3x#fu|=<*tVuW;jR``^L^i z)q(<$D14}|-Gd?*?JAue0d6nH~L_xtYq5W)xGM zY?vBD;T9=tY03s|K;`MzwyCAn=9G89rYUwGqg%& zU~JqT^|0_+dg(i4m{DY`eTa|sIFNJ#Q^Xa=#@IvLmUk?)$GQm9`N6)y z#%FrT8mR=IKm4kCk|E2_QJ~3KNig!L9~N z*KaG#0o_+E8*MbJsJZJtRxSPv3cElMp7~B6z($X z6qM-igszcQMi7x@MqOi5x06=CuHL!dS^avcXfv~ZDSXDxWo9lC`^CN#6Rdetn8!f~+jNEAXv&60uL~S%4THkA3suXm74<;eMZZPH zqa%_V1$>6@JP9A1EiE? z;3F93_XJCQyd1;IL9oIWU*!%-~B1XMFzg0Rg^0*`uu!jSEi%)F4P(%&Y` zz^*Nhq!-EKTT}Hl1_9J~6f}d33*@kNnM()r5XL~zN$KiJYEG;DXyKu4oZcPl5|wIF z8e-kB>}GU02;^}sT93QKJ>JNZy~%$3HTYOBS}bCcFDMp+1Ds&TVGH0!x5LDf?)R|9 z0z8}GR)wV5mT%VH)+C7_#LWhxF*OITH&*pJszh`5q}XpmBtNIxQb#G->d*qKc9!c< zH7R;)8@^EN3N$1XDil*hCc}eMChUU**g(G}^W&WxpeMbmt8jP>1=<$G@X-{*M=SMy zt@u(RK?1ovD^cRxrq&fGoxcnuDv!f+HG0=QE7@ju(>D}5u4PCm*h;i;Q?!F4NnGki z^eBpGh}yoCg+|Kiw#Vv*>u=wnwcjVae#l75T~MsOp*U`ZLon^IJH8pN1R!GpS$A3F zbBwa$SHbA4FzO~|z$r_RX)gL!E(|-6Cg4=6pd<{8XX~%N7e5Q}kUdooMu#&S7@}BH z7#gcYl%t6i&+Ia3y*x20hCZna$~5zpacAiZXrP4R^B*|MQZJ-iAwz1gXMdz;T11=h z?9+PI9)8wZ5U2bc-V(Ve?sz~ak|eDgQ%nAW1j!(59ShU1d-iC>bo8gB3! zP0kIm2vWT+*GQuJ<-ad)&?1&3Lr>&1v3D}-e(P90s}Z&|8&l8FJSFl%~qqP zY|9sxY{(K0C;Eg-+^aJI8EeugAWICRz~;I~YsA#S4KBPUXLIx<$k=Naqcd_GqBbow zRUl!kqvmU}YP0~U#3?Cu`VEp^C_Bqe4IA}l8F9^|;+8h3akgJO490zu$rOQh^A`Tm zymqOvIa5fiM*ht)g|yHcm|s)45JscS7;V-}DD^lS3{0}}=5v5F&$&#nn=16fZuJfO zQdo0PhQ2o4z;tMp(?*;`Krcfk!YqTH18W%GG!7}ZjBu@TORr}ugPc<_^Go}(D+S0% zry50b-!js6a+%#Q(zEf2Mmpym_}{j*D77%xvYp-eH=qS09@SftjJe#|#~SHLMkS*W z?z7@(C5H;@`R3AMmaE@Wp)w@35g|j zZM}0Q?N-QdY!7<{Dv$S-ivrokOwmO4l@vKB=C^0kTO_Go3d`K}rYw|W%$6c-T z>qp3$F8?wd$B{q!(HTtq@hg^y z9`W(*X`*_bHe+S%24a>X+(Jj0;(oe$69qr3?ITbxJCN9Fqfwd4b%?RGN0mmu=I(Z_ zhqCENh2}Ol6Na(IXvT1jfdDfQwG{uUbQ4)I#doy>`I^E4L)V~sX(qT>dTT|?w#u}| ztWkEhuzaVCm%_9%X%-eD!4=h!=ufI3`e)Wyq;!9+(mAeZ?mmN+KmJiZIAb*yJBA)u&2@yzU+Vby#TugI@Y!IW8Qk8anKl` zX=E9tME|HctX};LkY+PrKZM8z0&|oXL=c!Mb~SKOtTut-s+O1y3W z@Vb%AnpFNMGhvSk*&KW=WEb~yBeymmLe~0*mC7|DLx|AiAK&??tw@40yl8bAi1-;m z1Pp+J9Ig`|Bmxn94%J$N#{;ei*kOvG_#HJaz{OkopJdyTN}Sf|fcVH{jH&8)owV*s z{VXtLNlVa_NkLXQ$(lPKlp>XcS+?`QOfpChVkGz}U_xWOg4y@*>g(U7kGfo8sxR>K z;GaHXQb85Fe@9p6!4Ug%T`hB!^Gmh&@U6}?+RE_CM)+?ZJ(?6^u8JMd>Po_i4)niz z_r})qIBLoE_@U{Q`?U%U4Jg!t#!XOY5i&4 zXC3SoR84B72eVK52UJI}SM8-4=K2DrOymagFU8o-Jp6=3FAG0m&Fd1CN;6v3OoiQ% zV%{~WBmULhxymWzrWYkr+eZ5|XuHTouh9}DT?cm+`?amzZioeV1wW))sMQbV;s?Vu zR4mkXky#D)Vzf}fPo>p)yQ^5JB^a?*mS6~O0tlf6<-!k0!iW&YPz>hY5Q;34h)%2X z7!R4F$b3ryMapZ2vy*j77*F#_tnvYhnBCZW9((WDWIlisK|^f*=hDrr(Ufmmw39&_ z68oabz71l6A;dSDDTF3fcXU$Y)(ehk593okd}@7BOMoxG0-{&j?={)b_CI;=?W|Y~ zEYs&ugnqxxIW7<^ga}A7UTajzhoIW?U0{G%5e-QOC=H2t7>C;r*$(18L59c)v2o1{uAY_Veh-NkQ(fuMj;%q@+0?q0T2p9~E z(yR@L9awG;$iIl>&{3!W=(+z;OuETDe!ec{)eP| zP?wRSq@&2Mau%e~VwC+lH`8T5RA~PC;&ZpT!lDl!TEfeWW5=~M?~iM`W4D^{X6?$Y@Fw121+uvQVt&epFX$km6&R-J%M~0y zF^mJ=1vXo632!J6c^FG6dpAcqFdbhiJ8-pk;Oc7){(G4LjCP zm&dUnIsRNUC;o>*G>cM@J<}CXkQTQ>Gr%I}Xrnk%>zS*HC-g~*2nYNjk=sXad7c7H zeYF$z!ilVT7v2qCfZC=RRea>&(HsHxg1iNo2o_Z&*<~?CSdUX=8Yaxq&q{s6FC2xq zD4F1Qm0rE9&+>tkx<(Moki&q*)46dyT1h?^e&mbgxxsn>*1%-Ysk_$UTrcyE1@Y5m z+$&8@OI1tkB||wq=%=1&Ay@j`ygJN~FJekyj$;|_LOTq~Bte!FqQI;ju!jQnBIS}p z%K`wv&(ObRdd%9VEOiZ0xLYXi_S+*fY3j_Unfv=$#l+N{Q@fnk?>7OekStz0i=PMo zM0Wgnv{5&k{Sv!UrXNDIDAO^eFSaY%)tSXs@6jMmfwQKCrU-BdlPrNWBhBvyK$7V! zLhtZ~w;bMZ6W~2o!b^eRy_=zq@M_-S@U}~M1-Zj3$gduQ{CI%8NNu|jW0-5q{477w z__U+}iccPPjBcLWD8Umjod|^~kfv=a*b7lV_gXn^r*Sp+m_wQb93Nk+$Pmxlyc zYM)R!a!h^|q_sq}j(DOPWGTK8qKJ6XwC{ru7%emnW=oM|!1=&W0&-eBpdYIBt@A>s zfSV2G70XJO1Eh!)H{fCXj5?fK+tq8upZv69dvpa%dfsGp2z+p;BUM~yFJA&%Fv<=z zsglHe_F>R4hRuc+kE+;I&A{|jv5CVRli&(KYZUi=Xw}%%!B%6~)c0f9^ui%*e*D9L zoEE>P9}x1SunCH4#m7Ff8f+p%MzN_6!KS(Gp$rQ~xBXn?viZA<5AnYivIYEp<_FjX z^_e&9@w@ll&)s`B`OSa%3^#Lr{SRN#D8A?TtV`Mt{M0KC6}$b>Z@rmo0##rdM4J|2 zCvp#QfIP-oz&3^M%W&h(7C%wzzLbkW!Fy5_l%Brw0{b=UbWD1f95X!;RTgd{$Tnf> z45eo|y23nm+VL)k@(kt{c3SN=M_V$fngDY19$`eN&~TGyoW z`>&(pzfWWi`&y+F0Go(GUOafqO(9tl*D^P+x!tPFnM?$)Dx@;pXm|JxqZk$jC5QEm z^i!?%*3>;Han7nqB&JR{UV|Swtk4&7@5u=yb1+EpUSfhBQD7l_gX!#^aypCI%CdEF z=c}b*2v7_2*qq8V1(vo;8CHECd@jmQmZz;J>TU=hnG|do2b8H7TBUofsGV!z$%>p= zSaB*|%aGZrrW<4{#KOdkO@TCLk6zBq@c2*O!cO05H0jF~@Nj+cnFo;``;z4RgpuMf zSIojjaStzzKFp}e8u`*AzrXJ?g}KqXQgKn2?)X6zG9`7$GAKAPC^U6re2JF3762IU zDI4!8jkmke5dZ2({f2%$U?CT)Wx%c4jt~kgpXum2z`ol z#X)E7W!|3hEXDTDW%)HWr!W-j2hE|5MICA`nbaIrd2`u#bJlB3wm*x$K)y{;Me}(! ztFQR*L zL*|7eb(@*V$$YiUnI}9Bp!nQtc~43>Eq;S&3k`C1eep$__OGcN5Aikn?5y$^eM7!Qo}tfXCN$%ilzAEx35=B)`b2+py zpOy<}HoPW#OFk=4Gyv4(MFE||acOvxY#}ArmJyj#Q|9~Nl9}|N0ZoVTOlfM}&gD1K ztd_YA@L8+cgsVQ3joWcBa&_6e?DHMWm7DlQjW|VX{?Dx$hU2h>04mmiQS3Lh^53+I zX{agGkUHW8G6cB?K_YMsudrgVu!s6B0U@N22t%`fO}*(2f!p+``oLSKGgeD0)H0Vt zOG29VCLc$)$|U1^VrxPX4h2;NCJ4vLJBA5or&yI^BGzaz1fWwD;x(A9V4@WEq;v_e2;ei{GWx;XqR+sCPe2}7s2ZODh$-AlmTLQ~Y_j?yV+lfa0lcjD z85-ndF;|;>TfB@d;2S!lS6cwc)vN{thXwmmAHc;>Nz{{ED%1SM>U5buxhi@8aNaPo z_b5y4H4jmiO&R&LX(_-6MAQ=2$;o$B@6b0w8?B4FlK2653gq3)2BMMn>ez)YA6b8M z`6#EYC@;uI$}93wcOwhMgZEuNRzD!X#y^OXjKCWTM&zSvu=0U?tX4vJj(;;;iD~}A z0x%^XJxtbvL+eohz)A`Zbq0hEY=HqMxrj=;Shb~6C`~HijB@WIV0b1a<4**iuf=L- z*DaEagW4>Neo&iNRsA4-o3wUeJz0Bw1T}g~;#s2*WVOQYyWgF(@P@aOgKz%xJHPa< zU;V&qzoqrV4HwQwYvvkfbo6C^O1mkhi&?2L?OGwiit;v&i}p*AucQu`WuJqhzjadD z%wdWZ{;lwEB(5z%%d3m0WjAZWTurg}6W4IgXHcfDYzGMK;FOG?>q~l6eva}ApTo1N z&w?DyPltB(01eBcroIZ}>EK&TU=Q_IOnJRHTEm3*_{|xq4A3Fb)yAjyo&=FeaXlI^=K@?A);QuN?a{AU0wu%ToErsPRz_;cV{&}9(+?9_> zPZUp9K3P6D>+*zxC7=Lrxk-K-N&L0t;L7I&0NRn)Z;5UhDpZKZrWwa3Y)mM}1}Ql- zv@--q`j_~ChrZOHR7aIqpztN}mgN|UQFT6C;_?OV1f zqy)^Wuh1MU7ODqz;82mEe7#DLs$0Pjo9_NaJ==1XR;>sMQh!4D1~eBo5)u_*p}0n+ z#4>Xe&K_8{n_OJr5xaaJMky(lc<4hH2QHE-r0Kzxf80vvWk223SeZqgI~$hxdWPi> zqhIZj%NvI&^nF{oc$0w7#Dalmxa6Kdj(D%IQeX@BXqa%Ng-vCTt0@HmuY3;cNs%#( zhw(2>EF1gdlHi4`$Sr6Ts;m`9tiYp8t>BBc8QjB6t-yDOm&qK6KT^agk48B7b{N9= zJ4wz-gi1C<1c}hF0ulJtQrZUg_vJ9f?&QXElhj8{+9>v|4l*n9z;hRwJh(SRHzT`T z9`GZ6GRaogNhHPF*(2J+B9#~bhsOJGtMRuOQN={}cEHf%BgIIHIf{=}id7@U^J4jW z#G5xnCCXg!xshU;B!;m#K2n@pPL<+|gJNEKG_<6J2EYl=Zp3V(UXwF{scie6C`Das zXoz{^$P}&`jV+rI4(O#^oCH8E0iACg)Cy^BLGFzuLpz5x?4R!uCqZ4+U}RJG7u~ zv`tl1T1K=d#hOs$a9N!sxwN+&b}ORKlo^!!=^1l#e}wxB;E3|%4n8ll@V2$k7#xc zUyyu9l%Mgx0F{?fbKDPLwdg%+mUTMx9yQBGi)DdE-=5}L{1qu!b%c&$k47P_n7N>p zOG7Oh0l3F1vKZq7O{l3+aZIvUiA$JbXwGQ%89$Q8vp^8~@~Gr-o15GONkgWS$k#eS z8GUG&B(9Y4al^!LDC16|Qg=Buk%fekfha8z)ToGEFSObRBH9bB`hhr?yF1EW@Wj>* z6TZf&HvRcS}@|Tzb?|3WDbMf zXKSKHn5*?ekI<4E{1I0hhaRCRH~Ay3HpfTW81;5i8Nmy>%+JlP_)Kw5R%SU2Mr(V2#;>SqJCcEjK_PdlU&Q5u{7(iTGWoqr9p2W@5LOh5W z;%Je95te|YCjwI1M*z}ENjic26#*;SL&Jr!n<9u%8@BppY9rX}s12V?N>ex~1Wloh z81|{|Q4`vTSl*)}L@(w2QNxqbrpg!|R}e-crSMDwK6$Sk2v-o(QXSz-ptyunUzvEg zb-SMv?lp6mj#3h-=o;g;3>@yW0YsD`!)LlI~bsv4XP8oaTpZY1Heu zN-aN>QLq=tY2a5j15h#oGdZo35`j$TtgAJ|U%w%dkTdC%=u(Lu8&I{lNt_9%NkTji zde9H)6W&kalPScaeMtp&3c4DhQ|_S2Nos~?!KZji4T%3g#W9GYWA&Z{@azI_+0-ms zQD@VA0jT~_w^WyOv3vnXlokbs(c_BKgG~hX_!2c^*t56Lr?=8?*M3;Bradce54#tg zFh?7BIx5=qs5~7f)}{jHBXW00MhC#rT$ZB5AxCLKs-w_1D!vcty6Ek=#8jQU9b>AF zX@1w0o!lL!vvUorYx7evx19_0Tg({$Rhj;8C5Xu58x>DZmAVeFhx(=DjaTA2u% zju@wDd4Ethx^iS#?oLC5%t0Q>IpZT(jx7v)Bs(`dPvQ_>)vAJv{Q}jez z=^VR!U@n_!C0JYXe&qutG3PTIQxZ}k$g@lML4-*RBaN>z!8=B1=h62G1QzMfI_iBi zA}eLQ+5ix>Ap^xVlZ2WYl!*UwTatt}TP6BggpMGa@vH>dj64D{=0()vi*5#<6>bKe z6(Kqx(*%CNaKvw94LmIFS@}sFWmOfSe6I*l$x%+ac&Xf-mfr>>>w$?CydCcBv|%-m zL>#|p;<~dl#m@;3^JNf7<(DhFti~lCP8ZxQaK3<2`twraSxB`?v_YsQF+3F|9+3`E zRPBJ)^d#|SG$U>lce8MoAo1)=gkdT1sNN(Vl25FHe^dl1-O{6Kt$HfIgCyQjEt^(R z=73Fu6V0{R(q?n*f!2wR;hounNO!7-V7tp(!5;I%9PhB)ATts|=wQQ)piTe2GDXx?zx^ z76uXB!XR{}IKyx>k7MvXjoQ>Lna=zxgM-X;=w}DbcBttmFW&t-M~RT7hWt?1!+J_* z0Joz0i~+9xR2&(a>uywAQVGE^+rmbC7` zlV$4!S`JuQ8*vv(nzIxxt(O#e7Y)LS-XH(o(FD?9RTdvTJLPM30-_b$(y!u;;vFl? zS_*T+WC~*f|2sc3ETQq!#kVeVgqKR21kO1(As~vRlnIoQH)N<-Hm)UpAnlwV5WGBu zr8`o(U}?vIs8wu5-O)XI9= zNlO+H!yyGmiDABo7`99oSlUAv7M5Y{Zid6ah|^I`vBkeBfa`yKie5dl`)oqWNW3D? zOR+Zm&in71GSU~qoos&0i24G?nFu2$pd#8)9+q+tk;?YVB&i+ne@=V^fL{-qc$2?o z#*h!99gsOqa#a+$LYCAQT=dwTc+|A3k;Qr~53#F}v}Kp5RB;!|bPdxHH%xO#OUW(m zFYRFmzM!&nUKv#cbQoV#!_P783KslqHf{UDyU=n>S5N9GtI~Xee-Dr#n}V*%bTQWt zlD=EV03wkPNhfKVYHF7*vbG1t)GYU?tLfsuD~Jhm=Sr?FgI`8LQ46wM$6CNwR%roj z@(O!LyoE{CFb9Hl0`(b?-J!dgc&AscL>OUEjdm*^X*B1RylgZrc06CIt2hIFy*GK0 z!1HEBP?Krg86ZTUZxH&)FV=^=O1{1W)$=CKkA2NjC zt)~fLghf8TLk!%PGOIcj`CjR}Jv3h(rVoufNh}qR#f#*j=PClMeP3pGTQA)qBYsyo zzCQ6J7%3erR*s`jghTnJvL1DuOx>5evVgtzLyHywu7Echw9OihVhycq!>GW+=$3-a zkt%Z~LaEv>KR<1I?fZSe?aYwTzK(T%LV;>)pP!_868Hb(I+roeyTFAox>8m%0kIlj z%MJ=s2&o{-!ZeMp%zsK$x6RTu*Xwe@e4=89mC{ zD}OV5h~K2Ih4H}KW{a7Ss6PoIQ8yvMw!VRosE-N>he=Zhq=TdZ*)9bR<~HiFepuZ? zbLI-HcNu|#4Kf0+mD*M}TR(XGUBI75M7$4zI{=E}0{s7Gp4JU@Z zzMG_e=>idMogKX;wzQ9~K0lzwuAV_qK!dAD!<%QA-=L zT!_y#%LU<>&`A%!Rluv~RYO*^xk0RJcX3+$ecIhADb?*6-reU&2OAcvIJ*b%=L^@D(6 zyNmX+#9mkm6?VFqrIpq)@-n!!nl2@^12$u_s8LwLHu@Z7#r1~+?0mdxB z6bFeL%tA3oBWbF{r6WcLVfP0JK-E}@pl!xGn6c3*GgpfrdF&{HNK*Ri7qJGz6zASF zQ%a(AV6Pr@DF#3TlYRxeI-2x0^K!cyC_u#umbD%krZ^WtZV9)mL51vU3mG@VS~>3r zhV?y{P1SIc%mStF+$TH{WYR6XVTLKUzAU32fl`mCpE|gb$4mfNQ*a*-jo2K)(0Lc9 zpBzuCv^IPlJ{#|dwQ@~-tY29PmEO?e?(CXgc90>#eF`?~t>O;^(|RV&O6B-M zUQ?7{(ObjmF++W68yQZoIX63|8uSbg2Lqj4>>0&-(}<8ePbX=>6%2 zO=!=F>dCezmwtAoBJb0ploBUG)|22Tp=cOY#CQ+?b7LEK>8tu#@qk8JY%ySvoBK%) zSzpEUPMk6Ym3Lp0XGe;+Y0&lV%?G=8G6_%F-hHV1Ca|+yd$`tPKB}va)N~dBF}sA1 z5){>&&B;uGH>bia_#_)E5fKc1pX9QnWwo*Aah}}NOY)i=V45c2!J1ZFi|x`on121D z4UK)wH+gbpN8UQnqEEA%^W;ePEouC`q0hCeB(#jHOQhP!iL%hEG&FCUT?{ZQI|u-3 z#-7>slQ{#N(Vx0WRkwglA@R2D+!2Rr^N=YgN;&0R)Um@1q7ZHobwV3AljYn8#WTvu z$m5EfnjyDYfSk`JFG2OxIi6fgE&#g=roCT_*4l~iquXpFW)Krq0$D;^cMJP z9l3^aCa%xdc+ROR@mF<7KK;u6x`z%fBZw@+IsW31;hdc>DB}gq90ygQan_((7kajv zF*^{31$QIMGGQIXY*Gyt&Pl~#`)W#A%1CQ>qOYl_G;f#}_Zlo5^4MspGSvj}VScq% z@F6MFhY=s;YQbQr!V{|0d8nm9@Gvu+yYv}Q@P9FoEh3;>CG74FRsk_KkVi!X@eQFK z;S2lTq~A(oy~1dt#~1+Sn5M~VXmVQ;Fe~A1Y870v5)48*7TPl_;bH71Vcd>)y7=4ZSuvk z5AxE^=2pJIRZ`^n+;<-C{-8}Rw7V98+e_waGWaxGle!UAAeyjp>ULmXuBC@KxJZBEG&AmfZ+0Xyx}I10iR zlO;sPu~>@4wupi#@~RVFkh_xU6rF%3`-g2}VC^zF#3Y6E!}{0&6$DAofdXP5mR|;? z!4j7(_K|c9@v}s@fkDh@{rx&b+gE7 z-58^#HkjgQWSBSztg<_ab;@`~R=!RcUT`*g7(OW{j0?2`!~aC$Odkj0WL_dZI}qoJ znvWrpVU+4zv7C=hnk(wW>rx<(&J}HjMn9IBHc7$R3@r#=aeHG}C=-)7#_EWt1|w)= zA%qOmqXn55M@r0DkO^{Ct20FMsT%~D#3}C}%EXT8J~7Y+EI`keKv$XPxOO#2VI$xX zON1^|L5$|GaPR#Ykw~UFkSoa|NSO_4BT6U?#{)6L1JgfF%hf~p27Mw;Stl! zVb0ASMzMgMxr$wKa_Za=SG*pp->fnns`fCtX3n%U?lp}&q@!_fo0nqdA+*clo%bma0#zdg zLk>dIP{DeV7B*$!(Ke*7k@{SZEVXT*>IMFBM2fnNH5Vsuut1;+hB zF@USPBWZO{OR&M*d;lrdv+~y|7Ig&8SJaWwF{*2h(u(Se)J^F?&E@N5O)&Xd?+Qq` z0_P}V5mr-aIc;trnMFe!BNXMJnH;n-TkeT1t$B9#$G1e`=nO1mi_kL4PvC9o#96&$ zH|RvOP<0b{f=ehvQrNbp2uO@FQ>F&74m(u9a=2kkLr1jb3()1?Vt&K&wd+-pQyZgn zFhWM>krob44}`-n|H31ZKBqtvk2CWEqUG9+Bg(`Tj{V6O{e|d-jI}jr%Vp1In>uK$XEV zIxL;RT#7j-uK(VGVx6HgLJTw{$|0G;q-K=4qaG&s0Vh!?4d z$br?-sIE7SkdtW{!%rgsL|!2utspO94gq9DJQymzJJC=zRzE@!0*qimz{V4iip@7U zBS>VYT(x2f@%xchLp9;ET(ffy#UidB z&y)g%;v|j=Io2t{V*NKw6WtgS%yCIHpPX6d1uPrQ%)%_r>gwC9&x=qvnsfNND^bMZ zW%W@SExyS;pv;7cqUkbKe2hU+88bZ>u*~)%XkHMto5Aof)zIM3s;t~ASX?9cL5MqU zx;2E&gu&pc4Mew7;5TFy6rx(AZ}uCc3ne`L0rq%Ar)1#>5H1Ix@(9vc7anmL_x#ea z-N5IOg-qX_=^<>J>w`m|RmW|_UO=bg252v!({b0cRk&X}lR1S@#-@o3WIdc5CnJ;O zCvtzB>Z#qFZR*cJove>GbVUb4T~GW^)?oODBj^^>vqnxa+SQpWM!Qz0E|^4d-X<1; z4i-jeeC?J6mj-4+#AHTQ?)j5cddMj4;Tlo&DuQD1Yew_$~#x6z(5C7vn- z0DISf8vp_DWl%C2W?UHxFtB{8gto*^lW8n}p80N@GOwCZNiK=yH|Q-0Hf9=&@-@8wi>`ANBqcANJ(v91~R|6;8)6&WcD*Y|f*-VTdQz~hX z%t9Vk*A$ZCH4j1x=+>@i;|X^b;E1deG=zAy%b~&l!^@Mjr|Wa8tIKOuZ;%Zj?oA~8 zlmtD&Lr`E4LH1L;OYmR<0M80wtlYFB9j=GqtRp@hwsGn{Q-p&svE?g{EP30V_3ifRTQ5~UWyK%%@YrfB$QC$ zLg6){BFP41??^H*58K+$NJou}ShiKBkjSf@5oMy;mR$o0Vo-YXwCJ2u`*wbWe1FwY z*j+5)p>j{(TFVZI3e+IGMD`{LkaI5elq@HrP(fYJ0)oQ&?aI=>YR;RX4J0>w3m&!U z2pUTlpAkyR>qUkpqvDLPUtScmsv`SF*%UVoO07~cGJbLa=4TOWHiN_g!Or7Hln^}Z zR$}c!=I>vpb&sixJC)cx#>xf(aI{n&<{an|N?^+okB9<;<73pZ?UI5exzQT3L|ANt4o30 zY@{mV?sCAdq9qTY5u|o!k+04F!HPxPEF+D35ikxK!D~y+GZjb^d?zts9 z@kz4;Zf(aOA*F*2S{0!G({TLjV5Dp~h6alkHCSp;Kcj=y4Uqd_jlm9+3ur!f)RqE^ zjl)!@d;^fLhO_b#dk1|Lu4ymX_A^PetS7b<8pQ0T-7~NuLag-dNUg@Piq-hz+5v(o zZ4$-DLJxg9xKKtQ-}VGjalz(LlHkJX$`Qz{hrl)3dL!of0fel2F3!+iv|^LD!&t?3 zHkIu>u27#%t852I)ed4hv@=aRWu&uF0nxyOf8Rvs@hsW|bd&$SUKlVg^bOWVSqUr0 z3OEubEJz&m+dg7pVhLV{Zc9wa_vUR6?FuI5ix;5;TT@@qQW_)3ej^6bkRc##)60~^ zgy2hW>i!iWmodso?vx|0&y0UiRY z^@F3EC{=lawbylkl~3(zG@%FmDVo|2eLqGtbzPz9z?&B9wbsE%@<#{!AD#e^d#xQc z6Qr_@GB4>oK8C0J1qogqb70zng1<)o$^=yFR9m}&WzX!TtWRP^aH=-CZr0j+2JIo^ zEkClbM7~P)|F?@5ACmFfF_&q7?yCOmBK}h?>@mw@_v<1aOcsY0^#;p+dY6~Fi`1Yj zSt{UpC+{v^)nBtnv&x9fQgoXan$|?CY(hr0zHTjIYm*`SI(cgOpyiEF+^JNnH|N#P z+G;!Vw6kte%TIKWb{2TS6XdKd+tK_^U$++tNC6FGlH&EYw?bh@RmQHYRTJy0O{}Gf zg+)w+TEVPu5fFKY6bocpooB9yOPD-~q)sH{mHcS2eYGj@t9rna99#IfZ zQ!--UBZIHMp$bN8@gruVzg1IsL55JNjwnoAtA$^xJPNCt!nYUJGTiO16UR z&hCee4ckioJ?(g?B>ztH4aF_5IMmxvq!;Fm>%>5rHk-f~G{>m67JC~Qz6;}1m-5}e zNjrn%vcR|*ZyR!Qs%xZefcom08Pr$7lqJ@Au8t04(Xg)kvt>rM66?q{VXnlkjUH&7 zr<|V{`BD$!Ct_W5R3=1*buDv5tlMamSYPW{k2%}cIM&xW)|-y?#IeqDQ5c(r66@_U z5$H@Mn_7u=2}IfrDI5EX<@DQ1=+xG7tgM9YY%85Ck&IBM8Z{VL;RK4eKv?A|*7@l5(Y~jQQHW^Yo0lEVy^BIS`0j%5o=Ft2ZHv-fTTp?r zX!s=%Hd0lxr6<>Pk2#Lbx`WuEe8$hOBohK+h2iaKf7&*wCdiA0niu0^v6|%3<}rub z!hG9wK;e-TwnQ)Sr(tjNx1houd6(v-md@yHM4+|ujqGwQmS3)>s{erPzGKN{{Tu<= zERNhlk~ytER;P;tDs-A{|xPa$*NfQ+qUOEJUy5n$fgO^ga zgRcNcl(vkFV{L1rNmo`ewB@%==fs*XQQ}5qy-OdhG2}ZOMF0}2w;I||xE0yr%mx{4 zLJsOh#}618_Sg4j>F#XaR134TAk1B*Efqnq={O0(7&p*@azTX8W_#;f4B>3P9y9^j z!eQP)7!vKY#f-z^e!MNvV?W=RFYHYicyKEUrFzjIt@8rpyOV}2P-##KfwLDMmKk~% z7T8KDZjw-gfqHIse{HA{%3-mV z87Xj$HiJ6t=50g2(~krm)wuGFR3-?kmWI=rumibObR^|an&YNKveyf(tv584#zRyc zP@7pG$`%@>@eW-FX`JhNvs)lb2o)Rmh_1CRl-IdX-V#;flJMFubzxrWy&a`4+dv$G zlf4UN8;Zc8ke!X0i5Ej+Z=*!aMh144F$JHX50Wj>0bi#7E4Bmm zfG_M^{X}Dn{o@8O_>%2c;YF}!ww+;c6W0uaVQ@3ojF4easIze#pw6(gE}Cm*%CYyy zQ5S=Nvst}UYW=uo za3ZbWDz*M>srB2X)}NWA^>HS08mV-dO|J484wok=p~!A9{eT97K@ko{SlFovs3X4- zuC5EI#Cwu3UOnv4!_bQH5@NZb6k9J@7+gLWon0{ zJmMs^!Vo`S!VHeX21toh4}v3tT*{F`h0O*mqsDFj&mzuIkL#BzZAAv>fvYD*yn75NVrgiwwcUPU_vrTr=DK z*f<)@O|xYs0D{*&!_hBZVQWXnI$9;Z2vPCECq{(KYlE#pC~EwxVXy z4zp$x&{cJV9%R;0Efre&(@@K_{N;cQI*dN45|nW`wstvi^bK`_%wK3H)#b8nEF98)Ez zFvZX^gvvLMKqFf^eMiViFUZ<8|5odL!Rt+qIM1f#j^p5%Hy56qg(=>+r;w1$oW?a~ z{J4!(!O%Jv^L@FE`Jp@bK!?4*6@T})yJOz7dVr}+qbi`rywo){*w!N|B{53rrDhul zMI;^_KH9J1ZGOkJ9Z7CE8cw(baF>>awQuDlO8^4W|MBkX7X$XmU+jwkbdqaZk+qO$ z5~rH;8_nv8MHEcL6Y6(QshZ2}Epu@uyDcdp-c9qA<7g*WM_sFFJu1LWs_cI(2H85E z7Q=B%~BO z-kQp1hSL?YGEyGr7{hgV1#sq2o0Jen<4+2maY(w1W0FV zpPXMc=z#T2uJk_G_1rM!n>Haq{|E$_w5;$})@D`s>NJW(sBAQk6%yWk|k4oX4GrnAcBn`zlqJ_KkKak`JQpVR%8 zW{pED9yAfJ#aODr%c!Fs{oQO|x?ic(ly_%$E$L}hjK;_Xt+UC1S^UF!c$Onga-X=S z`SRto+&!rl&Z_3WsTO#c7$YlAP(aJ_gy z8Lj@m-}k&e_rWx2ZSAHXOz%%0NZ+3>brwF5*4Hn-E4^y_DPK2zPUC&)>(W=8`j+&E z)BDo1oAW=AKI=W{kET<#^S|bmmtX%4Z%nhzwi6gnYrbC>o&hN z{h@T{JJNTjKbHQRA4xaelm6Qs-?H|->Ah+12h$sGXs@~OlG8W5J>B+g&$v5%bNc#p z&z5uFnLhip?|i|Fzw6tdeQ-{1Vwt1tNa=N`J^qL*Fy@|PU`j^};j*M8GC zBd;@^wSi*eLf*9QJ!$(7;L5C+8ZCaD;=tp!fztAnS%}94Bd=Or2*Xro(z8&Y~iOvX#B_`=Swr+n|2K^?d?@EK%`DF=Cl>mFysCV}>&hUdkR zPP9M0BA(A5dDS~Kg6I1u>|l%K+e0s|4VYwEftM7})b=0Px9G0&p~K zf67MY_eSZf{d+3{cJ^ujyKnN)99tz|znmHXS@H2PzQFZruF(S$9nD3;hP;i@P_ zS~6c46QwG?u=BAAqV&@%h|*sf>MWM|$$NQG=T}!bC_k09KW<1qK89qqn-#x4R{k+7 z|F2`^k68KtHCBGq%KzW7@{dwpCGg&A`t{4J?AL>7+v<;$OqQ*aQ}QpZvhok6?O(P| z{nc2fesQEzODncplH^65Usz?kA4uD(KPx^n*6z<+`5VUUou9MvKO1}hBUXO**!w?g z<$o~t{?AzX{77%wAEtP+-LyRNDo_VOU3UE9&KoC-s}HRbAMZ;IfUNlKF?fG^MZos2 z2Cz3w2JEL+3D~`9TL5Imr^W#LNh|-IvGRwl{O`xgf5OWD`&jvpTlp8q${(`wca9D0 zgI50iW91*T^2f&NdBDo=8hif(R{q+t^82m)3uE=%XXW>dz5ioY{;sj|AEkUUMV+;p zfjcsJ;NHK=fqP5ZUKxPXzYG9=WR(ECIc>k+F!Q%#n0%j=zkdv4KWydi9xK0hMNFQz znvT56Id)`9^WIhV;|*zh<@TTb)Z0gUuWCy5`n3IC!^=;M;pN>{{&!>ey~oObaP0ke zS@}FX^=L)voZPv%z$NKnsEC14H=h{DD58Vf*t@#I(On#UB_O z&3~uj|7Yy&f2-n8j1^z4;z!4dzg5M*J68N}RQwxb#owahw~s+$a6dR!{7riMHDkpu zQSlvP#owsnw~iIRSjG2`6@P<@e`Kuq>s9=|vEr{&@o$ZF=PDJyW9;p(Rq>CG6~9Qu zuNy0V;Yv((#uyn+V5+mJ6IL5xsw-DV_Rne4c*Yk0k(Sz5tOV1!BX4@^BTjcMxsJp1 zg4Mxvff~<>|1}2F^HqH382T<3r~|R^E2G~zvu?6b4SaWBH(*|(IjXB5N{8_zRzaRo zVczFYWL`=y>|8j`yf2x|ycel|tdO5z4NZHe-@~n7btj%Yu`2QX&zF?*C`>K-zb#Z6O zK^+;t^H&Gz?lz5Q#h;A9^eh$s=~(estpw^bRs(8(BBt!L-!4PVP$X#s-p7OmwrVoU;Zh?u7}TGgH9y3Ni@U8jd_ARI=m z?kd8F#a#k|F6~@EI0y?8TBOkZ|6%W4fbBZ3`@XZ!r{y%BiJN*-C({|LZ8Glfzt*>3=W%f_9u(DFT@icl@9f9-t#7@* zwbmEbc4<{~SH7~#uPloYD?%I#&xVCyU)W`LV-N9iV34}YrbxumgeM-RdYBiF(967H zgnBi?OyONrnqmuEie&)Uaz88%F`lL{!fi$4RA!EmeC5(T(MU& zPJ{IdpR(o|K<-~1kQWOeYY)WKfNVkUEXa}dmy+WDFae{0QoHZ!I_&HFu(s%B*&V?| zRFOc~W#H@!$e-=(TWnC4L)!x7xD(K6LVX)DgP!&#OS>%Iv&pc)XVcpuQ7MfahSnM1 zlhI*l<=grS`T>T7V=sHykFh%nF_wV|aF*s#P_ztYO3Gj*;OdnJ3QVsrL%w|)=O@|e z$s{!_oK$1(Umrz|;|D~Me=1=a6_fbNpFEMgWqmKd zExu0!CRD7(P2xiuZ~4h&;&&fUO<6mU99-WgZ_&$J*Iv@JGaGq*Lmk^eAhbf+#27x&O2A)JJxyUmUz!P z?;OUruk+63c)ZR#mtuJGy3i$wVfrPykQ%tI#|H7O>%6lc-*Pn{=*7F%`GKysO4#@a zI`PhRexMy&LfSfLuN9MEye{}P<8AA_Gm6(YCnuAw1rsjhhbk%>n<5IlkREGxu#`RQ ze^7m@gz!=kVrGDsjFCjt4Qb!cTscEJ5~+r|;mUW@gL&E$l$@pzu*Q6t zq`kVg5gE_hNKFZEVirNAQLeik8m^54YR|QVJ|>A-~Sk7|2Dgw&(X3X$}+jOXITl%{l(pP-~MckwVs)$=p@szYmMGR>xWJPG>6tqTCno#hxr!9)3 z>)dE{QnB+}P2Uc8({+m?x6*97!AOMpC&hxecheKqJ=G%;IW((T4lM%2ti4f%hUuTfbpVW3svi2CJm`l4)B4SGy{?lWzs0RAMlc1$zK9^DK30Ut@?OJ zb4KAHI%D-!wU0#tv!MEc!nz+#wh9F%#6UVK$%;13$HZX(I|Z%+p>zZ9a&>Y~>V%X#)wwV+2|4vf{`q z7?W@`?mBe4D)kF=RcZw2PNW0TD(Duh+7f**7~y7sRvA8|2RVTI4&eOOA}xr!L0;o^ zivqK8b)j)E6rm5Rswm{ek_y0vK$wvVSDFc9g6;(4|F;<>RTy6ZkF`UXO!Nge(T{b1 zavVLz)oYDskB=8H+K*j)f4Xq~Q{!%d;06VvvaJr>Tm*-c2>PW>sZo#nfv2v zPlVv%RuG)s3IzF%;W?Pk{zJ@N>T3P!2ia^fNzj5oFktG zF(Uzf9GyST6kI$>d7c{N*T-6}40)mb1msEDw(SDmNXWxl3drmGlaLo{Suf=ORjZ|9 zaJB)s7s-RTC{@r>A{VjzWH}AURWeN5 zIx|_IBm<>^kwmL{b&cgCjoa)@brN>MVUS+Z6%c)@2-ZDKP126xrCcSwSC6${8pl?} zlkI&f?TF@cIQ8$otqGqwhJsH|n>Q|T`J@o*6sjy}>?QWfP_k#_qU zw~7~8Kx7eFgpbeI_Pt>{mrX^I_-uW5%Z`n5nN znC)n*stY9r<{dCm!cawNfAa0E1?IaYR`)t7fFv#RjAj2J7{~${Q(aXI78m^E9LW5l zliuxS_D5XV2%1^{Fu8Tj?B$<$4FCukXnz-nKW9_t!_8BgUL5w|<{>*h#Mxss3Eq0? z@C?U)O2)Uc9T^STs5wS7zRjNa$0UynfgDpBN5K>TM<8|y#xPr*0MIaxO$O%aYG{6i z`r%^mYW_u$q|m+uCyu;GK$0l5aru_IDQ7b=P+4+U&+i&)((fd1ZUHCiEOVMAu z{THHNCll|!Uh=u<$QPr(8?~bcvu96#@&i8;H5cEt`rPx6{CM=~@tr^XlTkOmWB+jb z-;91Ky6sn@UyZ&Jedy(A+ux2pvg?D(Un2SLmd{5Q&i9v&9pAh4m!q4WJoq0(KTk5> zz8&`yLwDCxXTI}e-}mm%9R1OIe>(ab(LFyK{bIEH#KQ-EF8ZN|ZvCgM1?r*X5g~?eT&u@p2x_84$xfmr)hv?}w4X z3+Im%pZnS)6%UnQ6&H1GYT4s~n^N@vxo?8VgqX=0>?fBv$A0|MrAvP(QB!s=TN-sO ze0h4LB+hMYq;HB>Wbb4^3U8k7&E*XaD0>U9A|jY2YEFLL-U*;Fk{ut8W~6%mz3|d^ zP0M!fErfdo;t%sO#SKq)@T(i`;2*1F#1s?1!3jac#6)qTs9}?^^{&ENY(m%F)$8&S z7G>ztFVnZTawHHKk z6X&!%^=9R?r1)izFkE6;v$u03qM4{PP6%QpLV^>bR@r8NlZykw!8pD!AoPXfj}6cy zIeuo4{aYP>bU-jD#~&HMfI0s40RclCpC4pDsUzW{(*XU+jRN%AUqLhly}2;RKCfPV zYCu#N$Mds#_u{qpZlkZrzNp^(wE>|#9DitlgM;G_4zgcU`!j>=r*%9xAd-gT*+F)g z!w(Dy!{JEe=rnvjvoTqc{WHDkjX8dJKQj&DTKy>mo|IkO!A6+z3k_4 z5lb8E>c6y0ng6&ENvovfyg3ZInCqs%bmeCo4_?*N&%XLn+Ix{uhqgH>QYzMCw3yEm zH>e!=T64l7gn4EkL-^q;;NRY{i{S-4p503)|7V!Xp9{v{F(6Eo^dS3Rb$x1({ViRe z9Ay7W*Cz(qZ|M5?Ap4iPe%FAM8IIpJAi$mDu|f9hI%Wf6NI4!I5Ms*lkwNxl9UmSL zx61LIgY4&Ye8+&OL5>d%h*sxFxYjfUzJFsB=<}tbY7zhSnYV;BhbX)4O!A+Hd3(y| z4d)NjsClCp1e#GfZ#XOE>acm!qt9MQ`{$W`qM6R3r)rHPpED~N!JM_joY{w7vN_}5 zes~&NdJG}rpW#$&D-Gt(aRhk7-avWuJ0dY4{~_xAiJN#eS_>F z4sRJ`4{$g%AOM=z=GI`quA@N6g)6M}IJRElnvftBj`yl&&erDf|eurn)K0jttBy4|qPPIY?Qn=fh z8-mE5(IwuqAu#=cy2MJ+GnC^J_uwu8l%2M0*qG5n{o$oN^cV@W$yW z76W~wR#d0FJxai!WGh%QMNtO;*pA+KuirNq;B|C)iHmUkNLajjTuelies)4$#*-EJia!O99Wx3?hizA;$6oB zku-tl$7S)A)w3^29u zkPsZw&Qw#?h*)`7O7pr6_Pc#jWf9sKG$<7GcYW2v>%=TNL+9Gby?4EG?wl$u>y*Br4WIV|usVet) zj|t|*1${DElm{Tn($fj!I?g{}!KdV$emeWaS&I)NO6VgG?A)O9;$Y*@LyZn+gwa(DVi;wpU0ehn z;O^!1_sN@ILv!=KlV4>Tbpg9JWwaf-xQ>q}cMQzq%OPTa4~2BuR&UnnEdw0M9c}F*oYPh>y2f?wO`NRN$}?@dk?82~Y}c+q+HgJj`{ecH z{k7{E@6Y?%wfA58o3Gg(M`?>%1_bf}d-#T?0Mn8wVA_eMj22)p?);JNKuF8d5e2;z z^ZUj=6+$FKhb-3e%Kk}Vm~txQ#atxRRcK?*P4l&w2dnSDf@B1c0*f%d!Pi<*SCNg{ z+(6s0D6Y{r#}EM#%xc_tWbv%cqxm1Pteq@klN z9@Mjxu@r^StTrh@yJM>x-ScKxvbv$KTw-%qVVW2Pgi|6on~0WEM2e=8BybklR>{TG zQ8%;NZUS0K6=^jX^Zv7ySWNkvJxnU)41n+9;IWu{#UV+eINW^D&K~4Ua@Rb>Y{GJe z^LyM|Ty+}^k2EkZrvfe;=@DU_VOMrnzRgB;3_f)-qbp;8)_O)SL|F@;FZWt;9(TO4 z*~(|FdbAm2b*h-bp0*AmLq$7?uzl4D*msK!O4y8qTmzHE?3bt+?9G|MUOs~%WVPl= z7mL+Cb7IM0)gVg{VK@ea31`w?IoYS59d~wRS_QlG0>AD$PicTo(&CwPiC3`faIsdPJ8R3vef zCW-~7E6Q9~k4W<%ZBA)3uO4f@G+wfp?4@++GFyk>D_PP*o^%0ZCGC~rp+}MVD)??m z?a+s0j?_StWeuqU%gQj&eYjM!-gD#StarhIdS25-Mvd>ggv6N)ySBs|L&$+{El?3J zRje-*)Ke17JF29!${kKRP>M)rKL;lr$b@r|&d|<=PDHG$(7YGYLCYjna4j4Wqb4V) zE+paA7K#^^Y4SCixIduN9rx?Q)-{;DTEYq4(e*|K@u0e?KJ%b*))++DbvyUvAy^~| z#BOMXgH-g!Xql09;x4GoVL_sD(a4uASAw{!U0aB`HbgSXluIC~1Nyj4j**=WnC+CL zr`QyCnBI0uHVPAKib&22!!&MgHDY4Qw|>~%YGiY(5l{ZWY1GO#w;Dm_Xa|zbtwz{W z=4&WFuye$1rF6@QWOJ*L7e~K=ZSF@5%S5}(Y+-gLW z=TQ26gHjF~>L4gOadWGYUxNn2Zae>IopiUk)dB${W9KZZ%?-=x4~W*xYJF;Wnk+xw+LyZY-TlHn$qlDt7yvl@e1`@6D}7f_G+f zs}Wmkv=D{dN7c$Uw;HLjQX=a%w;Cz*GU5d{w;G8Q)VR6TNN`7PZZ!ffY;HATC3)k~ z=2j!4&8U5)}z54MksP zFOz;mwo01{11ULC>1h%N#tUb&27hU~aE=<^w~-uo-_7A(@&HtNUmNZ%oEww7N=k~7 z1E>Q|bagd1B0nebK=I?3qO-(+kHa^0+EJP9R{q;iJJwl$h#VjHYQM1&0U_e*D?)7C z&wnEwqVaNcq;-j)ez9?OD$x5#o6~u$bM|@AdE(z8jRi?qUXY1mcQuvZLTtS~t^_|` zsduHgXE?kZrOjh>RYwCDRk$-%fzv)IEdvMhP4@|oJvX+LOI0LmFWPO$yi&foU)Tw%r^?26q88{Kn~G?Kc55 z{Kn~0{#ymMe7=A!SuF)Tm(sq@mmRjm&kMMfE1(-dt>0#V_h<=T18a_g>w$?VY)n?C z0JB9#LLmR|LS;fEPi2}So%vZO|%&ZWe0oO=mbcR+}g9f zP&^$XM}`7H@_`$YSQeIua%j0!Mu$#d;eH}`0(}Y>Er^^$^$$&Zm~Uu60uq^3Vp4WHI>!p?~8_S2{X%Y zH12DDH6j&@ltE7)Vmc^B_4e`}m}j^r(tc2EwqmrG!VSJkCsj(oI?J^BCx&m+!59;f2zYMO z<}O0JjuMhPa9*Cz;%9g#BEh$I(OzHF!=ieD4&mlSHpVzcVem_z{A{}XB5sThAn%M8 zl>Nmv8u}2gk+euuJuK{a<&O+M!~N`up)G*I{utVZsYtivJw4#Zx0q?|N+Av@%!VyS zoTfU1aXH)45AZ~7F~kqhLiGn2qU04ncsN@jtoR}17*77eyTpcHgB?^}#)Rne5^(yZ z@_pVU4v+pxwtC z*(wMkdE_d(1aDt`M@t|T}7w?E-Z656k*z^`uE6_5%nrYW9788mQXU>Iwue&jDcqfLuxU2ttn z^rbXfC8;l1b|ZS&1ty(@Sn%z#e&6D|GSzvOlE{X4lQqkWlt{KJFua65qvW~Y`!($= z!ahwqJMD|j7upxwzG=;C&9I3{PEObJD3z>{k#^O}7RgMXes$Vf>Ngfz?Wo)9^tByT zUI5G(jP`tPolN$^&D#7DE8|pU6}17P?Ro++VziJS4AKq%e#9_MYbnwKH3vc-e)b75 z%zv$EJfA#xy;a1)d&$6TJu9w8f~G!t7e5^m8L@p$L>8gWg!f->f=YB{xQ~l3*aekM zbTQx?`k6N}YTJ+{+o3k@sFCz+E=sJZ z|8#M@NTw)x-Mn38H;J`xGf@r&GGz@4>KQ}$RU0UxoK}6tb1Q)=d!-ffHA{4Ti(NMw z46k*t5j_-rfpO9f18}hxWp`Ll>3N6tz2^1nb4I5cjQ|0i4V1{KaRK{d&G$1Ujf^Zz zpU-1WpIPL;z1wFRYV*m>k>WRn6jJFqSURW8sXuy1lVdaM*L!uH>T7bl@i4Nkc( z_}Kc8EbqsEsD9YCMh!lB!gh}yb?eOmjb3-V z9fX5T>Pn$~mQ$U!Z7QW^*gUeGl#9JU9dBW}y8H&_^p^kT8aqbG;?U6w3>SbrjdI_XY}_y78bWGA(Q|5kA zCYKL1ztE&A$BUxiea$a5kY8oIxQq*789+_w$W7LB{n8UB3c}X*(j|ZV2FBL-9 zRHuR+obJ#Z7hSfjZA%gM#9#q2mp(RcBQzm`z3(dn(A5es0^P!g4x&Q!S&P1{WJuhi|^zUF~UBfY;1_uCL3xrt^cu6y1 z5PJ$d6o{j2e>sRK+nxUy0YV1P@5}l<8(uhXJZ-0OH}SbuJ9Eg1QKlbs8SYM;DK z6Y3z>q?_1)MFFpz3?!nQxVkWGQ&iu?ea?H@^a*V})JOn+C~~qa4lsPqCsO6x{7hKn z7!NRlkVp9oxX&~PBu52wp=ua?2>q=f-hdM5g*l{!8FnA)VGe1DZUMOvB!MQ8lMBd6 zbpHbTIWuXI^E;SO;CB$V>J7Dy!Hl#+aQTkTsHL+0Ml6AH#@&*acHxYY$AR=44;gz3 zssAN{3oZ@~Mjn_F$ZTfR1oJXS28DMu!V2vJMQoy1Uv!!*xl&azpxYoVV;S0*f!288 z@~EFKNPDH9f`|Exs}E%ZT3c2^$c8NvKxGq#I@9P=6~TU~XdpmE+#`S~*Gm?GLySR| z!>RW1E{{+;V&-qutf9)3lplUK)*&@XJIvTK*Gw9cWlqk5jFWTVijcEPnqU~_2*ru- z&}UfXx*%-@+bPLe7$Yt4l`nd!qU;ZTC7gWj7sJWR`N{9(C*R2LdF9vhdw99jf2%Y_ z!DZu?#`DB11KyOl1O^Qqm+G`598(dIMO9|8A|hr}t%G(*CZUgy5(FRK1e8+7(gi!qeIL_vgKPz=Rx z36J=V3v+%@Mx>r@WS>JAEw+c^Y8ZfK5x3mFxL?a@~MS5*g62~K;GTqZuj{J>W(UWF`Naq ziTn=&SvM4Kc_pwaxsiVP=1ymWo}z-On_=0Q$Fr`z9ludsNWkC@Fd`EX>>l#WaW)mli5sCTx!rc$2VnPbT*YguJ5gGHuTxgtoRrEKw4~ak<7~a^=Z| z2Xhd~NNq&iiZvMVkI2Lx#afJld282{=aYgGelK-SD;u}=x15|R->SdMEYsSzCi^nd zw@2axCj6=@uh^SA)LQOPLnANg5nh8>6y;Jflx=pJ2DaR3wNSXxI6Il_<5fZ5=WMT8 z>RQ9QQEs%3yU~JUPa*~-e@U}qJZiYs)lMex>iLfbqbdz zuv!m%z4=gdC#N_G=(meukV;)F-CzMZz0Zik77lD~$lYMtMZl9CF4QBJA@jGYU$v{lvx3UShSC|AJ za7n#6b^6|5XbusIZ;n_Z*p2wRN&{K&aRWK#3`4j9*x;v3YHmq#Qgp`Kj6IY_a~M*^ z-zAVZwe+r=zw5^JIq#|YyO=roy9|wmxTu6eV>EV69!R~)0gPn=HEx!Nn!7oL_C$2h z9z^H9vK9_T*n#`XT3YX9eYlyM3oX>(0OA~yCY^$*wSf1=RdBhg#X8hLUw?rN*b)oQBZNXz@ z&jdT|>IqUj%RN?tj1y#V$w83z;hZ2Rh)<#d`m7OYL6BfYTb{N*{k2IC$My4JwbCth zju%{6Ml5wIapx8oCcjlb_^m)Prwt#7bP{9pMjl^-_qxLu5;Tw1z)(x-zC1}Ba5Wht z4chtO#a^pL5Mp0`n?LkA*})TIW=FoNHq-d2m@T~7m~6rN%xfmZ0sr*nDEp(xyss^8 z4Tb|T6TYbTuNz{>{9Cke^Mr}_$FxKl{|5D;k-cs${9CmAnYHk5(efA8!oNk!H>`z! zitF@+P+QRgX%?FOMJPz3T6PJqVeQ@0b%Nc3cV>m-;_36 zJQsWs>v%5jcI#F8d@Fs%e@+qS%PhCkZHURcO`s0knr<%=3f1#K49H}mHUis)z&m20 z0}rY$`M6KFLSR8Enj1rs+PP7x9lROT7%S|On<3z^Orbm8A>N51@Zi|$00X+S_}By~ zwp5@5yFJoAPu2ej-II+H(AbtNn1OJ3Ub>XV`Rn+qKD?X`g6?kK=~UK2lv<%^agTH< z+^_zo%Ymc>Q^DJIFaQjZeV8fSNBC;XM>fEn492tT6oZPn$Ym4C>!LNM0AZ(gxV4z5 zB|vCnkebGze3TXlWAx+RY)MZ!TIftzVmAj^G3US^hdh`?H<}lQyLr32q|7-Y5geWl zK9WH10b#S(gNxl_Yw&Eyx&DnWH(T3^0_;R1xAruy-L0|thFK7BuaXsSPR?kl0DEky zvAED}_2b@BCuz0^=F>5EpgALqKFp>v{IbvlcQMNfbBjZ3L!QEKHRwSN*zOO5v)0Jb zZqxQe+o2_53S;fU@)aV+6;zmjy>XflIF0Z;WzEOg3J?6$BH#e}hZestO$csej}HC@ z9!9uC7~w|>4aDqq?~e2@?~ZAO_$0>c*D&25O3Ei`qW*OFeDZf8OZ5k4#NPt_>8d|! zKF+>M)*k}NosI5E*?$4`i5H~ZGOY0yrDhx9(+2~S=t6FRwv%cP6-oE7m^9rX0F+b! z^yS$AQuFcTR_{HaX;7CBtdKws71!OysR(fV0PE|qncV_od&Bv1;ndst= z&F9HtcTlme*c~dL&gzbukF%qzVR(U1=Vo{32g>fqx^d`iE4s5CBSqc8r+UTid}(%f z)OR>R3~SF$=O8_1jM@5 z3GDWG$SrE%t7=H(60SG=*kr>GO*T9|*#NEA-@!J1^@c|$8`$Eme#gU;4G&H>Ai(R7 z+%(xh+)(`v;(UUZg7dj4jb2s{7KLf_tpkl8W*2dT|Ck7E{ko8{P@+Apnn(RFpEU9l zdO&QPoJ$AFu1L~B(3XDE%!;bE#9l3@5;dE>A~=(YHX%asntpuz5&A^fJ;D*rL*EFMKzh~(_>AG;EnrPk-T!hg!;*~)+0 z`EOg+IG((q-O2+l@$IJDWdV*}fV5S^UG zKmOXKP7Wab#(^d{+{=9SJ#xcbvOq(fQLHAnXs3u+-WcUe#%F;Yh6!6~um-Q>j0BHr zqAko?>DI&U!gZ%ESdluE_Y`AZ(PIXnEIL1Cn^97@1mvJ%_K+}Rv%bOWwz8BW>|&QS zF=x5C({t^eFZY71F-jN;$_9Or1*ZUb_-j%Ab-E48e2z@fjBPOV`yo?o&9=tddboK% z{e|RkK!-Uzq>0p95bTv_^GTM=&A(CoRn-=0g{ES*L*T1SPlIid02Yp(eT}D&G=7^m zD23WjjAm|?u+~R$oon;pIQt~Fom>h$3L6OXN9QcsbH-=Wg~ZrE^(W1ldAii8D-0|K zfz}wdO#@V&k6u|n!i3>H9H3O8pd2c|GR!iN4M@)MWi3|)swGiG4j{b9ImuqEk!(zg zDny%Og0W3`PvHi9MN&>MggL-LPA5O0^9zui?8gCQ#zM|1wF)0Q>K5C>Ih9GiX|Fh0 zz9E4w@J{3U7+JdAXe~SeOc2oGK=55-L}K~OJLak`jp8fw zh?E41yAe7ZcHSs*{A^GZrl}gy^`QW__WMCAlP)Aa!rDaNT>-xQs5VwoOh6P9 zk?sttG67S$t_7@z|B?EWnEHcWgfeP8>9;vO(AWuYLvI70L3!4Y(3cv>CRA6hM_^k^ zB>^m4Ugy%w_HzWOa<=8OsVn1KnhU1n$s5JDo}8&h&^pbvB!V}lMzGGaL9PX}n8&wJ zehR+z#7w?L>onh5oXfZBOb14m%U+u-7f?vnAhgBLf+)|YO-(Zdcrk;4**!I1etSOE zJozo7bFTc3&lVaFdKt?P>hN{Yc%(EK_pE$8R~$@fpnWC&B)8NRgF=zGZk+Z?cJPzf zgIh5+&SEuh9kp`}^h!MUN&0P8v1oTT&(#c;R`D#J>+1dncVHMA0yW8C=hU+SbgG0(;g^jmMsHR&DpN)UQbMcFx9c|ao;<<$AVds%6 zMhJJrr8`%fScxz)dnN3aJ8)2ZideaP3Z!;31!xG;0pA4$zD6vCt$zjhzsvdG(NQ<= zNkOJ#DJWxRNA$?+$67dd=LBz&NVNUW6L(J}!9DTgveu{l6KXD}Vq5NX*aFYv0yBux zOm2Q`bMphHJTVo78WHgCd;{BwsZfUs2L%e0926{E;wm!-0^?p1OfhH#2rUQYfYGw! zEWlL!H8UU+0D`N{M&5RR8+kS`!P7}T@&qofhFwe-CL_&@LuG8+_%WbXWKeR4#=Pib z9#qF{#uoSC67Bf@+=xSscaZM1&@PT-B=Q!U5L7{&GCp*G7<@D3z{vY{R`+fC>`9d!Rf=vs}Fl~U;9RKQW&%7}pmn;SaCx;Vh$n`yhh zFjMH#`lc4TKQdG3(mE}4ZB2XHYDdP-5W2o{+s6Uqcu=^U%mNIKs4#66DJ-dJvf0qZ z88Y-1gzi_PLh9BpO2D>G1&yU6Lyv*+7$?E-A?V83+pKqk^ygZgBZFYLjmN$N^(rzQL4r0l9 zEqtZwl{6Qwa|Hk0+yiFx8{q@1(GIYnblk#mLieg42`^uP;hM{HyKrSirf6eCPLUaK zJD%(nj-LwT)h_YSIv1j<$3FcT^nJ@y_fG+XOOkIN3Ai#Fx{|H7| z3Mc0RQY;+o>`X6j8S-m)O_QMLOx1qdeKq!5GhI?8GB>iK^8}0-3Z_<~@N*Ou`Z2N~8f0uEfVaV;}3~52T%?Zb;cR z@t}ou=F2q1({tyvB8OQwAxhlVP5KPiCv%I&x0nuem{=}h2OF`$j>;$E$NfCw*Yy$8 zG4k~iH6KqvDoqn53F#2>`Q3D(>k)e?N(@ei!C;{@(l#~DEA_)tB@ zKQ+7K@*&f4K7Km+1?hRFNLg?4j;q=7o7M4~tm6#iJLxbN;3C-QI>k+N9F@rfJ@Ss9 zc>_BB^RqjyW|SI-c+v6q&hGdYbzC7&dB@-N26X)AW_Mi8(%KAFijE(j-Eo$Bjn5Sw zm%n?q6?APl9#F+_oCU{OIIia7i4ji)$4|}1aWVxwL@9^(`)*LjwSt%v=g-XUxSEeA zH%$=dqq94HvpTMYoxI~`-hht(^z4qSd77)dXLiSpt0?R#@A!>El`6!4YIeufd_1{j z0^+A5)pFELli|;M^_Kq9UH~awe`?hDTzOBS}7k#_$hV%^roZq+G*XrA{vK@m=ed|Cq za(zw-2Po%M#wy}!YED-*r)W{&hkbtLoNk-nHwp*FpH~RA@HV+i8o6sjVjoeZW~k z6gvl7Heh9nd@f7Z!_Pc_A=CpL+(wdltQUv%X1(}%WyaYT^$J#>fz9Vb`p`vLJ~981 z0*Q+RosYr|O1v)aw>6mZ0WG|yh1uk{O@2?W!yuD^Xs=A}(Hob>_)QAQyytK;&HYU(&AjJ`5}5lN z@tSjgV*zRIZ^nS;zzmX}`<&L(=JiwVhk3slx0?MuJrx*SjdNP-RKS|NI9e3O?=VPX zaT>WFV0Ag8g`;G%n9VF7BWMew#8+2vwQY!zDKA_RU4Y7r_ipm{^~i zq{yPMKz=L7)A)Rq_-IR5+EH5>2UVvMqmZLk)2r!E-7A)jX$M%bQxn z8*#4X#b$h3f@d42fN0wPNt=A5TK=4jxos-8>e2Wy)}qnKS%d(UHWHJG^?G@0%Po~7jz=o*}`pO3%89GZrdrsZDVu7DU@J_E3j@-=L?I$-Nigi zxQZqsYadrk`UL{2wG!XO;bPfkk1JGLm8CV4%o1jbl>p$Vkm){VMJ2_|^wutTyoi@a z;c*@|+w&kw#mlk6Tnn7MQ`AtJ8K&wthjs7!v0&6zAX)ENvH+ST^TJ&A!^e&f~|+iPM6MU0hzfq!QQ6AJ7XoWwoONu>|WlZ zU=GtvDw6A)rkQ+1Okqkhp|z0iMYvhKVa>$WIW`#oxh|dLgEMs!TBp~L`b_xjfU~+z zVuEItSg<+PQf7S4=5uO(aYAc;6V0#0!mRm~FqjlA5L%%w!xNpix@?*X_5=-2kb`cl z^LblsvMh-rR1;3CMJGjA6s$8oUZ`0}?W<6;X7@#8Cw4r=bK`fHk}41PoRDONB)Mv~ z3vYcA56P0Pt?Up7;6G59RGg*Jz_{wbxaz>T>LBN;9D*Y zJ=G^Fulk%Vzv%lQUF{d+v=$7Ih|9u=jnlGJ&e&zN z@zPbvA)sYS%+@qM&`8GHvyRqLSZ(hSEfMD-7yL#vX0gy=UOc1|s5nPD&0nZuR0&bs zaN%*8!~^A=PCnq!>skhOA(Lno8&VDtVu;WN1}ZOK+cTXlG@YLT=_0@(a|k;~K<#-o z2}|jTd8YCUf!%_4NK5jEYd6?@6q-|x$7UB3jv#-GiFc4K7fCwKM?80Xf_Twf#H)+* znTS`yti-s-XJXvr8^AbLIy=a&I>vDwFmC1AFpiE`c*ZuP%fWsEd)Vqi8niT@i=RSb zKk_W08RwZcuHTLBc+j zYav-ZJfdhkRhC=~qv^jSns8&*h-2eaV3jIS1%AX=bNP@z$_+4ZC=$~l-J0$=$yabd zga?3W`9SD}ynQ*IJXbg?`r)nhKnl{I5M99$#gct;bFlz%aNG=X4oV|t+ zAJ72c-^Sl%YD}WU&Ei4|FwmP!!ck2)Brf|?IQDfP~6xu;@ zlK#eKgLo}^peD@Em(5kP1nBB@prqa2RYQ0J5!v)C-M%*If?p_e3rr*!L6-<>){+ze zm0NN}heNRy>`RSWvL04p(UT?Ny+>1^UEDOk?BeFi60Jqw;l=cwtVoqWQ4ryD#;#tM z_ub0gg(s}pDmzt5n2->L{lIcAUN=gae^+PMRNss*00pgC2q}U~ziZ zTlOVRtw-oEhb?hd#;tTvLHF}Il9KsL95G4xN5*P%_;s~oINW4gs7ZOVsE}Zwf{IK^ z$P{QW40#v^vPzk)GLy!m)Pje_GHIkNb89DF6-n4p=9E#wRqN&R;=CkfAf;{D>NAtR zkZn!|jyR@3&Gd&j-`_ZITCY3g#7uX{31?91+&94;GA4M|s7^BuC#CL#uPn}Ti8uh$ zZKjh8b?}CaR)q{=UXsi*VMU0<^~)JjER`4|!*bH13BTLIi1|qZ;ZCk3Cvt{(Y8{*; zguhv0Y%Dg|%6{UdOSaY8g>3jKwtI2im#JeVZH_uu*L^Klg}kI9aw}a?zeDc-gaKCa z6iE7X@_y$jRGkyYfTvhkGOgk%wgkUj5z68ztgxqC7*7eI$=jVD+I_}M!mX?ktmM(j zP%yy^75-r?HBr1NSYkP#@DRa4K=dfCGRDw=Cq-+Plfhc2to{MnMB+|LDq523sg3Jt zD>?C882i>QxR?lLVwNYqxpYG0&nF@8HgO=#y6VcH6NbMYLGg5T z?rh?s-bxp3`Ci?T8%+|$1oBK*S`o-4>|0OF-}C~-1Sc2scp6U~NT7Aw{VY$*26I=NO4ipwG zux8jEt3wc-+8|h6z9}Hc;AAt@A;@)r;F5xO1$nEMQeXC|{Zc}(w(O$|7EL6E zq_}id3`C^>w^?0~NqU&PF4R?|w#02|W2rEz*;ss_z+$S}OqIw`K%&nhKoJPNyii#k zgB+~W$vfa^F!_l>jI>HL1sf|^;@XjV34ANOlQ(N2R3;U#s8<#WPnexz1_Fy~rrw2u zNJT9qAgo$QxQL(&Kvi@&x3Nfi3aT22U{r)19;#zJBxk#9ELnZBv22--)}rqqKxt#i z!cusDrG}*XE}{sOS_7tPD$j26(Co6RIN75AhULuk_k5IV+^hbYY9< zj)`lqKx9Q49487wfF4hRZL8T{Y!LBc)oAm0rPaxV&m6?nqfziwX`})EN?%nlY?#Li zXRj)h3NBXcIoBBTnJm)nU|y$_Q*P!li%C=lPEoYGUCrQWz;&ExnOopp~k%J0G zR>7t7)S?@UwOK{ojD~_bung<7J432xX_A07S_f@VFNHIrzBp5zR!Z@4hTW3gtY=0$ zIJ@aA{$$+o(m2F)wW{kz467$@?wDcYCXNi5s$rwR!fO1imFEeDO$WNQydK~c3Jdtd z3fh=@$fGs^SK<#@TC7_Ext3N9GMR+am9LTgt!J6^2>nVlr1k6u2X>&*vNq){-9U!8 zw3)!{rLCItE;q7po;xm#EltB=B5TvLYD%me8&WJhYQC5SZ57`+jjx*+46zsCrPvEZ zbxN(rDIIG_w-vXgxu5Ri4lZDiOKHcE6O%)A^DPv==>NX;^*?v|JLsXBu}W9dD;tii zWnE5C70eO$jhG{-uChnwfKp*tT?eY7)qLTK*WM-yld*U=cW`0j45X#pU7WV9np^tr z_4OVwTds@;VypL7mMKg|4t<=dPCV{GV>P2GPZ_z$@~M8p^C09()^(^?Osm!?4EEdL zy;f!Y9`4`*W(+%a*sJ#n|EjG3+`GQsUoGrG%mVgL&xAd#70d~+e+#hRT8Dj(Ihv!6 z#kJ~e!RA9}-6C4QBk>Ymbi1NP-K8Q&+-{ThBZBUj{ZfInPEN8qC;lc518VGv0Vra` zV&~x+Cz9ou%!~l+G2$%u)F9Y*r=p}0ys2~&k%WhL2Dc$ zGPs5`9Xe`m64XfEhV58i1>{<*fNo$|Pb`o7a{zqJf`eB45VsN0OP+E@Mf`KF(Ahd5 z`Wt(aQc0T?ALCl+P5h~{c2f|brY;a*%u;&MkM3mrxUY?2H5~$~7M4R`L1)(wv8JR7 ztMJ-`7XVN{6fGRU0j%8nWZZc{=ww!p)g28kD02Y@WRkd>K-#nt4>_!dITJ z3F}9h^REhxg}?Sywpqfx=5wkU_8GMR>oB7`v_VIvjaMC!83Wli>idjIEK!-{$3iOQ zA~Byy`!aZKT)ivh2$>_7CEF_^R8bw?@S}| z74lq}(eqy9J^{C<9eOmP0-_Iyp!6w!zb`{s){qjD;R)X?=UxblfnLO1AvmkiN2}(h z?%ZR83bBk0IQNWy-w5a4duBTKXw@oq-MP1mam{eW(k%RR%Pd65iMZdW!pXHSbIY|b1LF3i63mUs54bx9vzfo5o-wUrgeX?mP`QZ+Y!}wBLdpeQzk0^2waQIq*O$dHw92>x zv<*gNY6Xoci)@~>w#qWAM3NUYZgS>!`Zms7pp^xUJCf}~Onq0iCFnU-wVrB0W7i9U z>TQc@x~o>!7&YU5rW7!&Ro2*^1?KKH+>YByPVg1w$!R#y;q@qjo%?F%BaIDF_O{pM zJ?F!hMQHZygiH6GGx3Mk5`S>Ky6w<6Nm?t{fqoVgo{4f(sIu$EpRt^KNGlUE7GRTC z#HP^{`|YD9Ff`97A$+-G7LTl&uNP>i>Ct@PIHS+mE>>f!ScU2&Es^zvM;vs-zVH{L zgIJ`@BZ@FVK{EiNMD=l<5&eMzLOi4^{k3{kRxXYE3}7A;BWI`TbIHU*Q908W z>-sAVb5xu#O+wtM)nVsx=8OpQBiAF9cm?WO|98VzlhoFDyXmY z@~YL>dUsG@R(QE7FqID%%eJ)jwXbfj|K&#>Fk}x%U+9-tt@eBaZ_a=7m4Ap{I6PrA z5&YZ=MYrf6`Isa-EjUaUp@z%W+>)*zJ!))+yvp>^y~=I(D%-y17~%&SH{st`nftcd3PC3xKu&1nnd=B7L?CbhPRBwTTK^F;F8?}G*`6*M$^E9a>jksBaMllU>ph{9mq-0mncC8@azjY z<|*40z^J=;wLP^ZT_$GSDr0?}h_9eDunYo;{T6BSe96RZec`i%?5i$(vREY8T2QGi zy|4OeQ!v62m9}U|YtS;j&J^0JAyRWFL1|)+STGluRS1JXdjTh|SwY&p(Q^3<$_8y* zOF6W8jh3G%5iR`@mK1_Z+YE>~NIQab?hvP-atl_X2+E(;tPS0{B!$uM;a^}f{7-Bu zUuMreg{>{7%X*1JIz=GLWz2M`#Kk1i;yaURLp4*rV-ag`j7TiG+nv0=6}^| z%5lg4VSZaEfXO`EP|v;Opol8_=M9mPNT@Md7WQ!7j$`#qqr;B zre4U~m-j_u|4(Vm>$~7?;y3SwBgR3lsDd|wKE&Wp8k8z6Flamk-^pz#%?fWtxsW`zuskfJ+*MNqKLqojRjw_eIMMOck&S_vxO2i1{brNWbpk3xaDnZ118x|b9w{gx; zyz#VVTgmIbRKdKlnqY!M@&U57Uo0 z>n?{oW|6A(vGS-zcw{fT{7Nj+Bh-LXYE_S7_w1m6@mh=@{$j}mUaTG|iY3tkreb4z zGLe>y3ES(H%UAs+7#w;f&_zwqu&Oth$uYdGfo$>lEi^4K(KImSs5`1wk=2G~$SO1= zSGSej%%l#L0RU2ht3jZ%1H-5bk#4`y5lPX$R&o)kpw7XzTK-a$6lygz;m-DrWxM3t(5O-fMCGEY06#1` zE$f7xq}W24euD$8OuDHJ!DS4rHGkY2>dCc3ITG8CCeEuC+!eEW62cX&1{#G z7743CbO8gJM9tCF1%d{cx~T(xg%vLBKuaz)jo9ll|juxc^V?Fap1ZGD|B>7StTn_&s;`tPPS}VS;<9#I4{{SN?6EA`Ym4?Gr#<6F1*0Yi<<`z3a0p~XPZDC7jzt1$Z8U!KA-P{wj zPn`zsvoe81&+J+Y%Gx0BVpd6yz|Kf@DHOZ~(L+QTQw+ z%;!OQ*US-OSlnD0p>;n%!bY$czk!dSG)E<~9gRYWjy@jz4fcIS{b=})=T3wI%s0>K z#9H4kAvpDYK8a1D?@$HbHaab*^QKwfQ8d|3`&a?dV$wx$0g&3!+>p11E~p0D$v!+; zY-(S-2QLHL_;A-8qSOXU0bOv@6vXGQgL0%`^wq3Z8O;TpC|n1D1I z&7jhG(8CNWET3FW=d=#ZSVXO1)mj=Z$sD;26U>}~Rag6-kLNf++Cdalf36HIOq>nv zIzY0Ye|gU50ztniA-OoK?|GY&yJkRAYaqqiN51A2qEU+Wc?AT5y*~KYTbsj+(F?aX z2=6#IZtcN|jH-uwpmZqX-IYU<$(DuJ(Lp&g9D0OZw6x}RlqH&O)&euRS#C=ZD7d%f z5>d2Wcht=Fxbg@ZY^rQ$LMqTv)^ZwS6gE7B@@h|cMPK71VOz8h_#U5+ zjo=FYhj)ySKr5cr)H)W4%xA|#g#_XQ^L4BtJFyh&SolYAJzJPmq!l6UlI3B6yr}Ru z2mfbG{15(5Zd2WJM#}#^Qp7?M;&jN;u!RPq&WI%tL$FMu5$j&qZR$w~4MZPoq{||$ z1gEf;H}n2a9z9J!5N5f|0Zb4syKhM?&(mvJdLxzu!A62C=}nei>po;flUPqfQJTj{ zD`n+Gkv>gjVh!?oj7sIUOsxGm_z5YR3I6>R=v%-?75V`v9?sfNZBMY~xzKTAE$*8p zwNb_5nx~U3z89D>HFX`*vuF*z=~!X9zRI|RJGfwea3A~JXnl(rVPS@viaHCol5DV) z=QEMoz|07B`JHcQPRvC;LW20xSL%E}L2_hqCP#f?ZjQSfn3Xkp<9AqPO_2EmYI3=~hksA*{+@aM4{^4rGu3rD&^St;KvE?ndhCwC-ofAB zCZlgi612*>w$d&3toX>5JR&ho;6KV((6J+L(@gt(`N9&fLZ-ATt)|0pzo(W0FPmn(R@`&-rwNFAV{iZ3o~VP17kfIqnx} z0xsT={T2UfJsWP#myVnA3W3M+3Mo2GqBjU>c#a9g*BkDi)vbb{2h@nuI0g(dVr(Sv zUx}2b25_(VMV|;qVv89uC$5dwg}VI0#ves@$O?_vf)snmdy^ddrO~KFBG&(GX%Hg~ z3U-8exgtBVMC->!{hW#N1*q1t2$wmBNv?w-^;tD#Rbzr7(JGpjU_k-~E~6?>$}3$K zmv@E)F^dh^eN~1;kP3xLL@jKftV4|<5xp-VQDsObB5bJ>gs@T|Ozg$?@J`K}!QA8| zoeHIdG5{&Mhz@HBF#t=_{BZyd)xtXqu}PrW-sWSYgja>d$uS};D3DDU_TJ{>6;6%p zIt@Mc9WYw%DL6H)3N#2So-i!I2K|n5(l(w7v(|=_tc~Qi#uiW|dactYeG>aCVyBvN zvKvhZVWHNsm?&W=hP818YbS}sHtZC^6-2@gNidK}ysc6(JS!~y(=kzT1(B;XY*Dec z>=6dcO1?npldLhiW)Og?sgVW%#@JM=xgvgSRaqfv3=uC!!#0;q-3dkq0tHv~zCzE- zV_%vG?rPRsxE|ik!c92;y;ih%5rr>3H}0VCb<}?1?G08|^k;(KL=5`=;U=N5uKX!v zg}9a5T<)_P8AH$Um5xglY zxE}EXYIeN3i77@+5fPk)xhLWvNG*Qny(XGG3bZX1Ranp$W9NZ@3aqwCq6Jhjm9)=u zUUWn&wgRxKbiiZ`SF7chmb9i!tGI7pgIQMX0!4@^2#yQ7O4`072MU}ifxHfL#csEd zxbOrd+V}dbsE39c#2Skk!^8<*nyeYsME=k>1XdH40rxZPB%DpX*EnI6q-;feAJM{H z;*pqPDv_c{IAy0>_i2?mWBsA>H{D0^Q=~ccil#BEb;U_GNFtsx-S#0h((9PMD1 z%IPqsHFVX(V$}2X=pCi%K_>&x3X80TW>9rK917|IqhPGoON;Xe9i_HI-@zmZ1i%Rd z9`41oDOFxo!RVhwo?2yqKo*5I(jdr3SVaDw*ruU$$jntrzj)Wn-PQ^wX;eXPX`W+? zni01GX%>V7;Gp2&^OzwaRt3SR72wngPSJ7k9M^^0Tg2? z1)^38c7$0OFI(J}97IlD!*ppBvI-r-EmS$#09yQD!y)o09HoG z6PiSFECa8qHeMBUVCp*1T_!_W3fn5sCR9k! zhN}zOi>HaY4;)_5mYuyI3Z}Jy_I3-8Ku3^Ba}Il7L!xn@wo6JmLVC(2}zmQX}GgERc~ z!4tO3It8u5;R01cus-VwEf)2PsrDUDLY^kwlL=u|X?PNz0Du8cER0X{PZMf}QK;zy zh9^Y1Hl79J!IQq>$s*c)AMEdIiba*kG4YzJQIRg5ORXvixUcd|AiYA=U@;+;l)+en z5+VTS64l8xBsimzXNb18afAdVEHtwhcoSca@hhNFaH|c#0#XHRW4{uOFkMtLLRHhn zvj9Z(NkB3*rGQk9KY_cVu3J8zMHCqUPnGQu9>SiS5vsp$wm&*} z(bMaw8FHFQG1PIwusOWC4#OhzMbp8Vq%rR$1Z~BQZoAX$EiMdN{iq@Tt9(j$sfe>3 z_23Qd?6xz>$6#%2ZSeiDNxFNdu8b^CCwD09Q?so4Ne8g9`bHo;_3VYTr);0Ld`l#- zF;D&MQuM6oq@AUwlLyoO)7dA^TG%+**bipOD2hKOq-CD5JV^j!svnmsP2=9?69|Uh zbDH<;&l*yvM8~?9?ka6)5I?!r!;I=V`cOQK!CQOyLu);}IPqolzuLp!wbsKZ^tEnJ ze)-$idiYA+e$QGD+n4pZ05HL>3a}GvJ&Xsl2C&J8vzZTnzfaYb#(Z|>!_dFxd2-B? z^Ze174}aJn#=@vUd-CCr)E_o@kd{^=+lLB%l13;mvW*%@XCn){7E6N(2IDPT5z{GH z5M`h&yuWfw6FJEva6ypPIpSWG9q_q`r6DO>5!Sb_`NWY{3gszNp#}9tqQ3WgT`LU) z-5xzmD(x70JYr-BaT!_eKrA9ADORx;CB>)_e1{Y0ldj+JI>@qhegwxBSxUiklFSIm z%M_hX5{G>??UclM`q^=`D?`D^F1^67yUrtdBD#fef0N5cwBj%1b_HDnmp zVBH^n#Q^<;6j3AY6UnXBpTErBsUqz-UDg5bJqST4dw%mR)tmEo0m|^M-M~#W{s+bt z#^h%iys>awr~JvRkzKmf9^Qu-M10Bm2%t9Lx|xR79w2S?8dO*;ZJh%xc@p68F9JI{ z4I^ZUOWFynJ4U)9*K_2eLz)BFn3Z`j7HQoI{g-2nrMk3*UId38q^3C2^}WsaFgqMh zkp>qj_GwWal%FR#mVWN?m{8`+QjBoo35n>&M|FMyWm>f>P>fz35034AVZ2SZ^W(P5 zUd-a7Hez!GY8MoAOex%ySmE*A&+uMU4(Uo@1;$?*kx_{R)vc%_D9wp&JN3!Wrh^w% z6_MzAeSk;L^6VCTgZZxqa*61 z=DtQ=`bxS`Bd<F+#rV|q8tS*rAL_lep{jr-ER!|9YZ@vD!i-KaOe=F( zVVW?D1e#)(OC4Fqp=vp8;8cX8ydg!#t!yDAM8FKtTxBY z2dfGXH)gOCBGG1dWP^Qht-)@DX5Ts=k?*P@GMq<Hw>bEP7>kpB<^3);{IFHM4)o4VZe_|IYCyW0H;0Fn7**p{9j& zi_{%zSvN9LGr1W9GZ*G~%H495PA1J3-?kZ@lqfLCpJ8xHH<>Uv>52W!FQ^KBCk}6W z2PWqBgOSYe9T+rPymObTE+EUj%{}hcOGmA&LxLMZvL*HzNxshh;|7^|C}W6gdk0Wr zH#l2m$BZF7PeMYOr#mLiRs2A&Hze>|$WThtt7sm+HKdi?4kodbSZ+)5Cb8rnF0r2= zM@cMn3i!GPii(E^gXho$$<~KH)Oq}#QV3mwq34;MhC;}~jd)wDCau7H=WX3WA;iI| z9Av7*vm8ui+HBb&(|iMFE6k7d#hZP8cIl9gc58kH>23zUixJ+8eYuPxRsZwlGyI9? zMz>HvYti>QVMYzkec*gc+8-~TmDdY(Q46@e)2vqNR>EgMi7lQ8jI=!k2mt*BTt(=~ z=g}Airx#zq)0v^>Y2s>FlJ=L{ji}ke@NV%URznD^z?qjd^DBie&=qiuA6aa7TtnAu zolZW@T%z~giWb*TZ_OQIpVsiwmV0;_<69NZdMk=5kML*SFyMiIByIT=$pePEK@EdG zdM0<`DT2iC83{3P9C6@-UFlv*ICsFb7z@iIMlt#ql>*(KF9UhA*&FFjr=pvjiWKF+ zsB$vZY)Q{{b5vKT_6MVnfRF?-d|0;qfd-nth(e=T6;id`62L;#YyfFRCRrssXh>Xw z2C4ryoI`+ETa8PMZwq{4oYpwSc%-qyE5_r%EylNxZt=k+D=OV=z0BFxy7<@($C)^) zoMgO598IjW!p16uvBwGH4kwH|v4Vt|y$f0AJfH@?LzPc)e5G}#wUWqJZCvoigdkUD zVu8Xh*_Zy8-(})5IAR!@el+eQ6H!dhcI`aP;uXLEN#I5z8nHb2B@I_Ga8AM87XYbN z0*rVT&yQIEp^N|4IOZa;Xa2>V+ILex7rX^z!M6l$98=`uqV-_-gYw9NysREP1BKD* zO~rN3uJOU@cf3=+9)6K)J&K>!+9~bu99U@{4cTHV@MAcMJo#Fmx)W-;gFft`FF3j6 zjf3-nI6{bVVM$ zU=6aEVAi1d<9PS!P%=3V zSdPRR?3gu3X&jA2w_*+AY@TBc5^}5+V+mati4YUcW3d4eab*4a-o+K0j!4TW-i=My zfAv`U(g+6k>PYDdZtYqJ)gz#ZtG9KOUqT%WbzSQSnglDq!FLtZ)WV$B8veEywVDNd zbfYb2F0zp4J}q-0ClADj84^X)aCQTAKeD#q)6Vn@4RBos^l3Z#2&3AeN$9mk>*TYO z*M^-_@0z?zbIT&UN11I!sygPAL>t_d}r)T6De zskRfojDGbi2$RbPRhGE7xmR7=*Ge5b%%^g-ScVu-jXM#cDo=o9@vZ_8`%5q!%7L&a zfFP{_AO--(X8@q8(E1Fn2KBa?K~yv3L2V&r5)6{jjtRbsg1XA>KXuQ0^UWtVACcDKy3k-R%gWc0{Q5W_v)N zZTXs~NV=sA-pGC~GI;r{W$;GeD2^782N~2E!O-Z8=HNb?gZqMXeNdy7ucIbjg`l~0 z@aL8D8bl?knz{?Ld+P7%h;pFc5N9#%s#P@<)^ZzW8S}aROr_jV~N8HXir?edprTtrj{?$DH z14>khxlzec2W&&Rr%ky*=~Yy;-{{Cd=u^1FY47^!3AYf=3W22_sZ-xRZ<97Y;pFtj2Csnz%~- zSGW%ij`9+qz02>Kw;D57o0TE;F0gy?7XDV;TfLflt4~Qkp{yXgmub*4DphNxF$TFQ zKm}Xk9qcA*-s&yW-fG>7m_Y}fqo1(FG|!@X!r+40CN%}+%xNR-zWU;LpcIyhrh;Y| zB7@8V650q38<%uF7`-jn&6jjS#B1X6>lJpSzFk43B4I=-6%aF(3Z^9kmTj6~w0n%v z?m^GWR|Ra5@quRJ#nD}GAoNFaU(7%>Te6ALT=ms#EII&{26z|TciPa|hf`*oXec%2 zD&y3QZM2vSt5%o38`q^vpLy0s<*Y(F21^BcwxS{Rwbdj}koDb*A+YXyQJmL(FNXg` zbUf*x6hxJ-2RC;ewE()-cm(j=a7#Pq`GBki2D$Are9Gc;Ensyq@c#Z3?-xZGG6We^ z1|BIKLBd$eGl*X1C2sV)c$&KI0rzuv+A9y#waQWoWi;R=l=S!>RkOn^Ew zEx5?EmGe$MHEHEEb1Ubag_ZM8<04fnNB&^9a++7NazKJPT%<_|l^Hh`Cead;fU5^L z$<;Fn6stHBf0@rDHWpBmYbv6jPw?JJ4uQ}xbr=HIijixx)RID*r5;fcJRsQy5nHH* zW~ORaA%q2aw1+Wegv}Kj zp}`pTm~=-)ocvo`%3Ehb@5I^q;%qgk{GTD(Y?^$;rBX0N*c)@BV<)r+V@4hrHQChL zF}>Y>nw{OK<`x{AeJ^ipj!h-P&vk5WryGmlgxs0UR@>Z}syVhD|6I&=LDkQZxuwtD zLL-XLt+meuod@x+CF9A@{RQ4V`Tr~W%-oUgKn>};CpC1W$%aBSvXD)`D1{_W+>+ya zySlTB*8XW~eypb3eUdU6!hFo9*aAjTf#iQ@##}L>izkyYFI_M@W`@Q?d4ki)2W>1= z4P4dRrSWV#w)chcUA8{|!St@nW8xG}B_9+T_={IjV<>)cGr_J@1?Ta-uJNo+YdpFY zjfdTt3SNa;jDC`@&$FQ|8V`%?(s*p|6+G6i@lX|;rJR%u7O&}(FUqqNzwFxQP4GEi zvcDNOnxE~)8R5UeNKlm;RaJ?=?68sGHL6N2xS)mVOmIP0)C>C!@-G*9Hfj*hV}#;v z<`*#aQ_zPg!j|1ao05*2wLFEc!KvBFE;aYMu}h&RGj@Xt<+kc0#$g|+aaaXm$2dCc ze0NBzTr}~|kP7K4Zbgd( zK*2IR(D+_0ejaFiL@SFy(AbZ(e^cREY6vk^>>#A!46>T9&Dg9c_6txC>r*9=+$+A_fQHAM&AWHvH%IRk?ZUj#e^sT${37Ny za*vDZ7pGf-GCb`FF>+@${i?}*QFYxG<(kTsWT{GMowNWTm>HBCp0zcn#9LwBy<@MUaXp`~r3h4Sr+0qbueZZ5b$^pM;fU$ripq7j~8 zxhCjPPB->~abUerlHw!rWuX|0Qks%5dpK}Is--C&8a~9qR40%9Yr8^54ob;xQ7X04 zja)s8g82x&9j|z3n+roJ13{XG(6*IoXj_nufW%10Lfb-+8=-ALrY14F8f-TmUbEfM zhZ`Le-L5Gyue*N%+^jp(Ywko55~d!r(|XhSkA1raxQbTwTqfUTGWjk+F>peW9_-zT z$K;<*#k;Hb^etGE7J=96FH|1HKUncDV7AB(k-l86JFrTYGn{L1q{~|ts$CPTpxB2_ z;B&P_wb~59nBKHA)H4r%m5max3L6zkN}4(w9cz!Jm9@>yn)^Z1;cC5eR-I!+YAI(6 ztkw3IKzK3Hin8`(2Y9AMS!24@9JU>^m9$)HWRKTLK_GHY*gAISJefU`>M~vwngD`? z&kr$Png<(%t)nS~rCrApuZU2`8hEwhAq;tpF_TLjwA7k+gl?Wjc{T3{0Y?07b+#Gj zKGtJmn;4F#l4Hg;eL)9aNF}^w!dg`8g`EqYVI3EH*4Sok4Y=iObH0z2tTvuq6vrgB zQfjKL0c%B=1SQ2RwJ<9J$EL>qg2VZvRaS_?qwlnWnivx{ zdg31}&F3pEiP2x(-E&vGx9Y0&s0mi`w5$$ENw**jA9Pk2KFWdd!Upcuh%kI^kf#oU&n(S(Ey5Sb}41UkjxYL+e?jbFdSH1LK$ zP_&~jT*@8Dx+aZo2TSogqk-l4zvvdm;?tlOu<|UC}iLat->GWf@)!!G=#R} zkFq(`2Vod6JcWa}snRMEEepdR0_h{Q!_cWx#7{~TvLqnLL;__GZD`lzCz(CSfOw=O z13_IsO|T%^tIdVhy00BQ%4O{WJ9w|z1fYg|iiQ)Y7DyjDUR&5^eu68AB$3+mB#Vl) znH-U*NWI^WYsstz=U*hqTFR1J4}3@J3J1w!DLBd_);c>&UwKxIqt`4ayo-U@-Ze<7$4R_#FeQ!h$Ln z?-zuE`9D{F3B{(|Efx7y1Ubw9B1&_L&*`j;h=Io9%ocHsCP~wqATe?2|BtpS<}=RVGT^*y&=x>D=0&r!?1Z6w^bMR#LC=-q{FHL_xP%JH}eRH>$B3Rla_SVA_Q zD#_~D!f0X=E5tJx;y?pVWD^U-K!O-ZxW;BIz)8fw41y>@2EsT)!3YC|6AYf;|NpJE z_de&|eo3<9nZehsv!83P^}WAued}A7_BrHlPFKC?=SpSD!Ov@2P^h>bY~4wnOZcW8 zt~A6*ot^%shNMqucE2QHJj!5o{TH0gE{H$~ z%ed?J0F7ngfa*G;wdOqHpoZ$*cagP=BMs{O;y!e|4D(cd7(C2#brsIXmcNhx4 zMQ(wrR`E)2ypm<65;Z6A0CwgxO+$j19LfMIN3NdHF7YL;R#0IjmwdGf6YhojljoqN z!evbuSbm>#`3~qzF$_=o<4xEHyu_u#fI$4?>=-8I-TurX;da^8pj~#wm+1t{H{@4* znniT`BqBII;fR)2%i}&UgP^)k9I*)RMH~tDB=j6gxj6EKe34p=F_qv5lcoMQdCGgK zzNWX7UcQE!z>l&IFR-erqp(9ZgctCa9EbC)N+M`GA%f!PH7mvLl2uGeLA}mE!*3^S zh1bq%;|Y*E&D=McI;WYJkB%`AF?;-Ob)nK3`m7tK9-0AxHmlIP%CDmX6kZb$s z5Uv>Dmpj1;>BM7JG>ot1_=*m#46v=duq>b$!4$&-O29kkraJ4wB~~?@>olCxYqg%Q zfq!1@mU34JASxMiHcLaR-If~CR#jgN!PNcLOH-@euBcaGoxIx3XWeQyPQBWVvQqNG zStRmO%ot~Usr-|?bV5^u_prD{RSsUtGr3wp%%$c&+&NJOYEg4?OiTDc1~(GzvS>^BZa+7N;kNSsK|Kp!6yS zqvppR{us4Hb-dTNsei!ShC2zv(?_VY?I7#*=-n;lo1i~dQEBRKK`k@cczW$79pB4W zO8#yDUpG9ebx47)n}jcz@Yc1P+;e9s%C$cHDiV9K-Q_V59sMBEd zD6@RymHGyfZ+INBLAICRro{&JexXSkIw!IqUcFVj3sEem5lC2T(czm^iaISJ%8MQq z{(F%?OSX)D;4tHv5@B*BT=A z6_NQvF-s(>bgRuzPf@yfST7uZmF793j<&?Q4N%M|;*nVSY5HYu?fO-cfPKI7ypb5z z56{)SKw8bZoMMq^HDZ(s4R&i+@TYL{dcD$=&?%e!sqA>@01{~ejlj)lR3HgbV;NG} ztY9TM+LFe~=P*}aqp$LDXsMTH<14-4>49X>A|blyJ%?B*(;4l%3L+TvOrbqKcHN>JsEnQ7{qAZzVo2!ThUDERr47tdotKJlwkA0cJ zM>PnT>(bg=QmC{MK$|qga%YN+vf6!hB==}BmaMJ!7OSy)F;>8u7cwtqIvB08mMStU z5XxGhnCB9v#KPs#gSgV(&GRJ*2BJb%TEeQeWP6@}CV};_3XEFb0I!j(C1AE=ZM9dg z!cKWDwHGSzluV3>r%TBW9b#W<6Txz*J+7muQ{Bl}-ta;WAT6___aM;vI}WVCM=3jE z?~WxA|L>7t*sMEOIxkOpIy%P-t?Y`>0yELVe&{Aw9Ar+l_*JqzBM-p=)s>bM^&uDi9DM4`*LsMXAn>-AU=z=UAJ{U!5t~L|JG!Nwvz9>j4$>7oM&dHXBiw}ug8vPwc*T}0N@e} zo@7k!_SdGsbWm1;K(=nsEU_}jHKBzL3Y{1$3UG*>5iNFe*EOAX8j%1$fdrD*V!;3@ zM-fCrqbdnzkbT3!Jrfg^E1_)2H`J8>a@WavqvshC8<0UZSY1^elyp|9+5{;Ap2~Z* za`u++Mo{D?3mj}2t9$XeGeuCb4?P>im-DQ!)^VRJnXsnWH2BdEmT{guEU3#Aox&Fy zX1`vc^hOx`Q;9bi`KQ^g(up@C$aIO6J{$aP@r6wp{B}~=WtT>rcq7k~q|bvmVEARc z?&1q-Y)A10J&NJVl+Jk!{wTgcoI?97v00C=KBNt@c{z3)2nQ~L==qLZwm7s|{eoEB#0 ztZ`d2OOH})ZA?kQSXadwRupM}l2F3)(yWMGg$Xv=1+(e_e?8?)9FAyQO(0D3l{S@> z(}Af}Vk!lvG8s`)EnbDiE#!p7OYdms0QKApceFEqjas@E4cqX&U_a>~{y|Dx(qxJI zXCa);RD?rP=!?55^e-ct*i~z95EAK4g1Jfurc~4&K|08Y;ykA?_Us{B&tRX8}zkyfyv z49QW&P;lLY<*0kG*vZ>|%D!_q6|^GeHMPFK%{|qkZj{Fq}z*o$<$HE?s=!7B2Obd z>r15#LD`W3+E4_7!ik`U7iN2jXg}9j0+dxo(2>P@q^xTaDTKW8r!X^Ex57pRgdDrr znn-`1RZ`wsYPQf;ID>hW`qWF=2|-GnUnZp)eWc*-Q|&cD-Izl33=I>CsE?Nxw5bTL zeH!zjXB5-SE{hpGvs<8gV!2{rt#hP$Q%wD`2T0ZYCekBCg$w2`J3ypK+5U`VOvbMK z>OwV)9TA>9TY5(Xi9eNo=}AF`LKqBWz%sLcoe&&2xotAkJ}eGEGsB@77}C@<1EV0g zJv53nJGdXaQ1ogzrs9pmCT5W&29!`*kU>h)b(d61#-J2B(8GFHI<6dm&2A=7W(qGm zH%(oicqk&K1$v9M%|;fQy5mDIc{tB8rnMpIfH+hXAW7@L8^dO2p#*~}(UK!;vmAiMHx>B{U9-K~%I zVR~CNhg&gxV|xVmf6zC>OWWizM70c<5XrSeb-Yj5?gM&|JN$CC#nIy&@v}+bPE4l^ z13Ef4rE;0`=dm`;AYK9n3=(jtj+`y5N8AfFh#QjC#iw-Isg8b6c~UPPtA5r8(cA6R zLmJ!B-zWT>Mv^*io9p9o{un>%P=WRm+}h6W*8h*i5bf_kzz}UvT!6OxuW4GO@pI6;`_ede^48!R5y_CNd#(Sc?ICR{;{=koAS z&zCpMJBbf)zJhzzuw7F|0v|A|8hikE_*Uc&i`mP%pF4cDqW^lAUT>n-Dg+lun#?(K z*tt>$h-gxQM8RYr1VR-WoVGPk{&;cfEdLt?2@cPkiae7HA09-g{+J}eHhxG)e80w7 zM|)4}fnbtt9dhRr`VGQ+fHhNO>w{Mv&Vx0GQB-EJYIZ! zxEr-?bEhS?Po|yCit40*a&?-<*>rTT8&Dqr5@}+w&PGE{VN4qZRt>Zz*N`7=Tcsw2 z?$A=hUdBpGQ8iD<_%)+zwy5Q129U(iGeLZa#Z2io&p$L*&Wpac*+M(*p_8doUmcPl z&JR2Lip-4|mH6z$)y;jBd=0k(BhauAa+sgM$ClBt4hBy6NQvD?x$Af{$pE);{1TDh zrrEv})xh?n6(=diNuF>)$?4)G(FSulaYx-MS zW6oP!5wpM~^gATWuyBqEqE`y1HHI0oQXlrWiXgYh2Rc$N99OphRmk&%M?A((9@IT~ zaCoOYz@hB&s&YdjoWtX}0DA;s#8_^XZo+0v@2cI>U8^p&T?j3fMyPploqPhR0#k&I z6LXV?XG^CWTj$hS9{ze+R-zL2-5ea2vx2@8)xx>(H_nRo`lF-1Gtv({H76+QHanz( zNH9i+G)g_yJoCpt&xNKK#g0Q({{C{GjHZ%*75@gkV_n;LV3F(9JLjwe z*0K&DA>y2pgE|i36WCf%$GIgqf^2?uYcgoc+W-?GufXnK{TCFn%Oq@c6A%PGtZP!R zY_MmgxA7CH4wd%K5{ykr0xl4aN*67V1NRBY=5RN@rs@Uh18kyt+uFNIzA(3EzWB zxkJkTaF6EJ{!59hmll6Ce@n@D827XDUI$nFv6Iw~6n_>|=*1W2adF5&eD{J^q8IO7 zQ0ClC#rqaiyIy%AK#c5`ZJw(6eF}0@FKM;yVCtKQkl6QB-&j}Mkfzl2tXaIB9kh^j z=ayUvUjy1?uo*HsXTR;m{yD%HrE~pc0O3LR0JQgF0P1(*y4%NP@ZO0;|*WCH4Q=c>@9IwIT%ep4SECl;o%VgnWQ}A%=f^V3>lXkFDHNK8}*P zsn}le^19;VE1K&*Qhaj7wZ4mgy`qe#BgL<-xWHTSZ&sq3#&4}?0|8;_@r7H;vnb#(q-*BItUfwk=0)QvfT(1{jkxD{q@%b_M;sYVF&bvSF&XrRcq{J_IT^OmNhA z`gTrG4&Q3_a8<`_NGA4CNrJ#mmQT1qQ=}mRW(%PnX$)?sUGxs5q1lHZjXoiaGN1U~ zEZ4MORI1Vid8PkRNa4RT*ru69J2Qz{NF6YI+SS+3MM%%U3mVir;}%`EszJDKG# zH4Fjy#F@!8c_2DJdS-HM|9tDru-PEO8xpgsm4qr5N z51xB*y2s(x)IFH*NV>=2OQ!BI*srMTdzb;Bxi;n&hcK-ZxVS;f+e8Tzp6^5DM8d)vu zQ+WH@x9!3Nu&$YaBr7w)jfn}aOH6Q6VuCs`!MJ4t^p2$)zkMc{^od+_)IS#y#rcck zXDfbQ(tijNNOzMO!oCZInFl_tup#ejp!X6%C2d)X0rVf}{TjRhoj~nx1KWw(Us6vX zfgk`~qL(+AqPk0T^u;Eu?h+)Psg}cXss%{=D-uO>IL%9t_$$&q4yQSRq264#jMJm` zNiDVrs=mHQ)rWgjUG}K@njTee)vwUIU!|_UsJ>ap$6^?w6!ci{3~KjtSrpfa6HHSr zC+G}nPn@7Ls6BCl&Y0+PS|Jefl3I6a-mg*G#o0)K=dW*WCRDN;g zX1-9S3w6G5I9=Gv7p_kij^+!Kbm2t4V21lV3@1ueCm&x>*H-^qZ1~1|RO9om*@)-W z%d`*`iDd$xu!c;~*C%~CXqIkUdwnGnbouqgt>5tK+yDA)cf98HO3{kC@hD!oCP|!U z($-Z8afPG%G_8RC+-bHa#Md-U>qF9`v0140RheJC?K#-Djw8G0Z)|&xZTm*|e7-nz z@X7-+ZN;Ej^AINOS!GIKNu5^hr#U=(RfRl+{Y-!q({M6Sr{%5Sv#s%!)-rr*rB!=R zc86lgDaDVNX+N31re`pUr$AH#q8g@80FuP}8zJ#zeTfinDzK(3@vyF-D_dLIb5Yh8 z1Z!)|W&qY1n9v*BE3d?|=6G-nV}akz<5<@G&L6{A;CJ6~j0JwnV;Bqk;_|=GRA#%n z47;x`Z^8J0N<__P7nNbI#y{%~tWBNIB1f_AHXXux>$?dD&pmqT3+20IvmcRJLO+ib z-?@NwxcLa1R5&H_IZ$d)DbXr9O4_cZhuJ<}XR%rW-4L%TA0UH2!x?j*W)f26E1#;w z$nbP6%}?ttm#bPctc98h@Zy2L}1tFGA(50#_8TPY-aoyZ_6AMW^8 z2EuHw?eLp{1OSt=+}u~G?1!v$u1IX~jql79hM=#Sk1U<>;tFx--}VI1Kk;H6FTAim z^kYA{bOwB@eM!gS2Qj(A(`Y`r6w}{Q^=V`kX-PEqvwp`u!FC)9){n;_ZpxAB6D#un zwklj6yE^Y)6cNjL8JqszwWzpnkN$wPHagK_0Sg#PiDshECTfz4;eGO)iIJH%P1&73 zbY|j}5KIrO%?(B)lfW&RLK>_mYTe z9v~w20t)d^8XA7(->BD54Ie^oqI1%!4SSjEkBs+AJ)dF`(WnZ&ZbxBFv>5X$vhic8 zBC}cGy2%<}k}s6C~A4j|GF3Z^mDQe#LSsln$hZ7Zwa|J^ zv$zDR;!wQdHtwr)Jm5C&t8*OSe%yCk701r!>z|+FTmM2TRCd429XY0qxr@>20{(6n z_00qq!_3|WtM4@L#?>(eA-T2D{~&7*5X=S7zl5U4I{l|EIVt? zA3M8fO{6bu@&$cAF0Fnmr#-%#`e68@jB3i> z>9lGBst!voN;O4){%C%}RmVyA1;P6gX!eC2r9Bt|{F8&>RoDE!e-Ki~E0c>R<+stf zrH~n(bFehBonEjYGD{VJ8hMeEki|As-#ktk;5#T&*wH=AaWS}Nw#@NWF)g#0WMp; zrDKKXONUH;S_4ZI&an! zt2ZZjii00l@Kf7z^Z+i)?A2>;>^&t7pYqrmSI{WxD_&VBVG$ELDR89-N}5{HCkF&Y zpHx1IKDiz6esV?RfLL&7)14c55n&Lvf_g7~FA3h)_b;4UCJ81;oi7BSy)H+9?y2Qn zeP-v+V0VKMxWpy$F$Un0qtT|8FXApFE>ZmCuZbGtna8p2l9g*GDWP-jp5}v<(q`wH zl~;R@667)WB(Z#>Iai^4h@#zIQ_0r`GiC};NN&fgc_20la;R{3+KJfuR3re?${}8s zj=YWqq`2=Z%Bp>#R2*^HBw7ZvoaycTg9#A_g=T7gKSeI02`aQnA_a6yvLnN=lp7bM zBr5q7b1OZoa2Gm$*$f@)3t?3@%cj?Q)P4csoCtV1loDjS7}xNdnf%dR$aa5RgI+^r zg}3axC(dY6NY9bdnRHtw=UzvH-+}|DJH5l19*nj~{gb{^c z0#Jx(W(ok`)KdV~lS~2N(|8I1jNeocH(^jc^)WjIVCtJ3?3>B5mwF}GE-#vih8MDaV)0H5$B-mgW)|=h~tz(%~VfU zRqq#ydnQS;M07hlDH`ANRr%womSKC9710o;5R*;XX&rQN1z#rxzb}IG_9BT`$}6}W z&~#dOXVid6w^opci2Y)7022x-8`si0{&}+1sfU}{sbeDzk*O{H?(MV?eO|4B%bqgJ>~$$JvkRgygU14Y zQ4f8zBHM>EHZL>tawO)3_y;RQgU`7`%!EY&gfETsT#)oc{Uz!Z2AEh}qo}45V~dQqXcuF7h6&34WmfN5}erldi-nd!brKG4xwUO|BR( z&yl415>pZ6E{wJ&Q)Q3jW-rQQdD%CSE`@CS-+=vgd?R)@oX*PG)t3!_gzU|JdQKT0 z2^08|PucpNFw13!f#2*fIFX8ypJC1uc}Wff+h^PhGex=aWY|*_Qb%~EYjK27+ihwr zd9axH$wy^ZJPE}sLMYzIa^LvePA4RH)g9ewsEf$M@HhOsQ|(z)I%1lyF(pRw0yTnW z+yx7|N_uTNY#02q>vz?5cDrKs1j=1}^_u2v^5=3OKZWyRcChZ?**RbdVn8uXAx^1= zZh|o>4xktljP=2QA|RNJ=dZI4pCCi5NSsc~gsnHUpl3f%XpV3|oLR1Mj!cntN-a0! znxz6hhv1WMo}<#JFT0rURrT^C6GBe6u3c4W`5Hlk zq8{PnvnBF1WGii`R+0*%qR;A)i^Ebkf(6IGLUf}?H`qO4h0jN9R~6FM+4M8|qtcYT ziAj9{j8>fSZIF%?K7x12y{pxrD@#+Lb7xz zWlpwVT*ogD(2~yEzi#_WnmLxW>UjW8)TdnkA%z5g|v7kJN;0)3~$Au>E26rE)_dGvz~@d&aS6n#mtM7YS?Y@ z%#n1DbfNjQ4kRm-$ycO%yDgr1#jcBIuIVkFnZ)uiFIKre7SebbOIdq)n3sCZ$3hy@ z@K!9ONsDK^kfyg>2A$G7L)(3sEuK-N=)#LiM*cJa(4U1%52eaLWeZhXuoDTnC*6kD*hsTJm}^-C-Cvq&wI-{X2|D zWFDz!Q+F7Ih+KEtg-r1sMk5l}o!)5l9Y*ttbf-5O-C;CLQTv@~H2pJ1^N-VLw0!v) z>8Pi9gDL)3awsP5?Yw|S-)3#h(^->Yq6ae=V|x69K0X3Eju+b;H}6_IQ@=82HR!3QsqA%jtv(JcFy&4F3V9_B3p0R* z51DKMARK8|H#=C z-hL44Q^}_GzxN&^4IoAdUdkWhxcOVl$iNVs!84@TM5u z2RW?c>NyU9pN8}<4g-XxPJd9R0Y#mDgwqb~Kh9Z)_MhggL;J@#>(Ks-oONjb70x=e z{|09*+MD0y%zjfyj*nAPs>NFKX>KOWsW-S9{8tS2aaTWLwHHyYRkn{d8OYt=UU7Xo zy_HUhiAy+!ZcQ!|!EIlF=fj86M1!6{JY=Uza*SE@xQ;;SU&jxR>pkZzq;I;8(2D2l zbOHI68UVboraUACA--I@redu zwC{jv?rYn%+}9Tz-52Vb#Av{SgHY)Low+aom#zo#wAaxG@q7@QuS+e&#h^@Ily-=V zF)m+}l8B2jdS8^Th>L+fT@Lidrq-JqXzRCdUtRtfW2utFVWq5Md%=7WR*ONjCZY?`C0&)iAJqnB%jH z)k&g1^q`2@fKR!CoM>gb~GLo+zF74G-=JbIxAqdP2+nHh+mgZtlqw z9J?nhWm0Xh*+v+LiecK4o9PyP%DvKi80#ro=@6fj5>uiQmU{|NA}mwr_)4{k5f+V7 znUB#ABMs$g4pUyp?{K&jsUQC*hbc$o|K@NduKqEHDV_1pIb8GAde1A1FDSL;ED_t3 zBmHg;Sx}^&ekX@1W8{4trqq(Z&tXcD{0AH!jFy;~`+=&4C0<%qw-leIQ5_by6n~4s zN2b)uFI8pvfI^DXe|4d_X4$YX9Vc(kayjIG)nIOZh+Go9ph#|Cdv9~?+nNWyfwiUJ z_BB-H)KU;$)v7nG58-fB5@ysZqxV(mC|+K?yP1!T0!7I@!WIYm?C7WIY5zrz)wt@0 zrM+u(=&irn#%WT|D7SpqW^O9xbRTf+et);C(0Kbr!9IOaqq#Z;sjIFQr+%#b(A;3& z1-!a4WrW{`gbVp8#uOh^B~h4^eFPLSB!>({b%2kkF3ZB3Ej9{T)Z_e{Q~VlRZ9L3R z)|8sNs~NtICYU)^Wktfrl=)Zqm~Hp?TV`*uWkrj*N~O7anNO~~3g29N1!!x)`Fhzw zV)8Fl%67b=f)Pp6)sYN=KoT5-Stg_X4E2G(HR_CoCmyH>^71pT~5MjqciL8p? zD}YsD_oyQ0nOLS16h9fkCMxqbI+Lr&3Hma%Ni2yfa=I(*jRug2OXxfJJfLeT?xs4x z^>X9Q(DQFYa9{HHdlt*3UKu+RMyk7)NW<-cVev4xwRhnVbP(|;cwEnK6@~81E4D95 zBY!OI%FwWvm&Y$^8#aphgTzWbO%PMvVz#h2RTnRisMQC7I#vd8XGT*;`Dq_oH8^ZMQ%`5 zw}!mQA4%OGiU64A$OOO`b>1R;C;|`_w*+!0RFe?S(4Bvv=9W$aIr!i*q&Dq z7%hvt2m+%;uRbrdtTdoy#dAhtGw?N2#&MPbbFH*l23))l11|2)fDOf@#fa2@3^-=$6uyo-8 zsIhUCMF0apHJb)T4s;R@05x3Gi6Hofh()$+%1C``l>`QP#$r9XRI!kZ*jUWZf zbW;@MY>;7+%5Y!_2hJy0OO}(<(v!+jZG2Hozl=;K-NnVmp~n^-5X@x$uF%2rq9}x{ z5V9bOnvqvr)fbbzk`*ANi0DFIEl`jb#Spq*jZxqvNhG=oMN#irvXdK<94ag+@83S( zykv4u32V<#kGj2YrQ8zMvY3ClmC0Z`%Yf&igaMn;$oMctgvKc)oOwO}CZ2z$YL)OT zr;BZi>b#s@o6qsR*i=qW^3PS^jp7zJn06Dm-MR#;ujTe4aAUy3?d-uVeTlIgxJiPU ziuOnn66&l=Or13(CXA@D;Pzw^7&llObXz+=iRmK+eV(0pC-beX!*iKo5||UieD9ya zFngyMCYw9u48trK(k=$QlVLK1lbQ3jezD%2;Cx;<*Lu1n0~5<;_IzScE+^I$UQ4CI zZXy~eWsX%R99fodXK0&0 z@61g42RkG|0BR0A`|+VJq&F~`kRiwDI;6yCv=Og8T1Y85q!NeNv>z+!`iCGBpDBR& z1e=D*>3ID9l$hXKmhl3azqTL7_eYC*ntuNDU+fULyVH-7bx@&UZQ>Np2wZj;u~ts> z^A|6xRuHrqwEua2O)?X4e51XqDwU5aSIM}9utwK27U@eN+p!qa+vs{ODjZObuH^{z zD%~`Cy38ZsUDtHOWs-LC+joT&ub^f~1-szuzy_qE>h~%pen^XUZ`IXADpDs4kP6BM zX$+BI;q$j3fx#y6K`Lr4kVg)bNF}|2#Kq%N{9Ije%vvLo5f&taY)8FItUCxX(blm^ zm`j_PciVG>JDJt(eLSR43q|w2)I^8yoBvqAF#LWsl8c`!W!EPlKvc?~>a<#hl74x1 zQ(=ZEXU?>;s*i&M^%EGqO2=X+jl5+iuCjBHNVVwLX(O?djFcWb;s5Pu_3L+Sm8-8J zLUBp0T2V4|@T*P?W%8@n-353xaji%x5(AA2Er<OCtoqQ9LKbGp*M;m$WSUhUS6hO{Ac3G!anpu;PBzm%5?`(IxdUY8jc^FBr<6P>h)%&vC z|0St+JXIJh-HX z_XsTjy?fXc5<6JKg`+Y3u#Qzde(ioekmeL2RzYj(0msp+ullnZ-r(*4=TN&{Whdg9|7p7zy%yIqABdJ5q)*lpXpQsy3jo{@y+(>a zVhW&VY$@DH^u77$KS<5C2YSfEE>-MP#~!yv5&&{PCsNdtwNur9VLnHtak?s8YnU6vEUVCqZ9T=X2ZH$X|X3eE~|qdT|4qtaoh zIS_QDVCx?+&cMe>a%$7uDe2jRst9xDQEzNw2Az^bqN5g6f+tvL;l%O1lC4P!*+6)y zNhI`67zjwAW#A+kB;_}2AfT1{Qb-1Z!gOenySfCFlKvZfJ(k*G=^p0T%r6l$w z2$E@)Audt@vH4tPf%f2`zn`c#A7pmP%z=v~3TBNt)Xat}93$9D)l-~d_e6W^06!$3 zO$M{Na-cgdHe^TR+;zl-J1~cIg48dyQnpl~EB@0%Mm^#7E z=`~FrPnoY&XuMTdTP{}Y+~%u7kg^IyopYfh37rNP+kUhWW%D(?VYGMVtLQXQr~Mto zi0sz3a_KHmT8RNIop@p-6u}wb2Qkqf=by^9Q@wodh zG_#3~HIwJ92@q8zTv9o;{s#7MCh%p#vH!VhsFdHOq zwVAb7?%$NX>*@Yhcf^aRtR%xl=d7zU&9jwf`ef*`R@(V~*Lk#P&|U`9cFP~mzE;$Wa+6!z)nk#tD4xga%?R2d!<{QRYgsWGWR+c^Po_l*k-`7dnRq1e*~P&1Wi>qUX``x&R6TXPj#~ zD=}>=>~^7pWK&t>vHjLAbimbC&w;zmx z+*ja=RiuNJ$PsFu$lh>1$O?NAr*ZW0a^<~crR^XipR7DwR41GL*flUc4-nGywAFsi zSb28uUC(@sUa^C;@JsXz{jjOHVOi&?Z?%igQCbm)QjAa$Kcn}Sn#7K|F0ZOC847b~ zbL>^QKg`*mD@hfkE83@Zo?BBhzi`*o%&*T086cP)E75t(84nl*7BY1*Inbd7Bj>JK zLkGpDni4sx(8jUqX1%A4S}A9vom=OL)G;eE$0+9!qnd3yp)nE(IWl0qR$cp;-j9Bv zb^V1C7WG^eL{4t?|`Sz-!=^)4|I!8Bh2p1P?mMUJMDG1dv{ z2msYaxPzmby^&R?XGZ_BY}rsj=Lx2PwzjQyZbGWj-psp{$D@fDbl1)a??WnPVazpJwT^{CH=nyRP$mo+Cf)YT_uNlD)>Qc@Th*S(e1!O8gxpyhkOSzq<*5*9f;QT7@;xT@)` zY!yDZ6QIo-es|O=JI>C6E~vZD{tjg!U4BWsGCaYj=my)Hv@PorU%#T>Gj)lNZBADx zzw`Lu2@T~lyujT(we~^`ZYD{9VO_%vB0Daa9KLRebA^ zVxWiWvc8I92OITOiZYEiMEY9AkGbCzQ%bwSP#IaTF()HsYvfg z)O=8&_X%`-MSB7TZ>AHoET6y*yHACsLUz{qRP~fZ`1? zSb}{^Uzw5&d)-vohz(D%9}vn$pbQ*drDL%;RUQ+nY7g|1+Q4(Fvw5g7ME?`hKPZFJrF?|Zs)5xEcGBfX;W46;gagUVf~qPV&t?f=Ilc@yI|n0*M@z zfkBSUt>Ap{q!93|8?M*-%|1r6&+6v3#}%XFLBxGr4Au`^Z&z%KQHC@&RnY7nQw8s7 z8f>fjwTk_AL1O@BLLwVqGfvmk>jQyP9{hw&0O7b^monHx(9|qSQ!ROZafU^O#>xVc zF~{&mE{_^rvPPN4a}35Yl0f}0ix>C3>K;bamo7aSUoS&F677g3JZ|ZW(Z3Q%&kn53 zoAt&KwvjTeuZrWx22Sc?1~R!)7|4Kc$dqx_97UB$j7Fepk{0S+P1an(hf*IX#w&&U znu#)KOe>zdWQ)2pl0#5iGj|UFx0_Xt>U%tBBBSBJmA9X37Pz?1|Hcz zkZwvH2;-5wA`2x)G6)@!3hj5H$gJ7Ps3EUXh45n`0bCMy5hkkj-r9n36+GZsgOOzW zF^k40d~ydbe$LJIl(R0N5^~CNJVBqjy+riH7Tu*Etn-)*Bw4bsl=Z@ZKi9j09m5p} zzkTL$UwNpzB8Z~R-(mXwOnUbNC1{GzKT#+zi1C!>p1RPsdv)&uFfGPTWD7OxEY`s* z$~jq1!u5Up;1~k6W0gKL)J`6hYM%_Hsw8^m9woVzOe5?`G^jYW}dd_!!FUt+b&{?=f2UtUY^! zGy|_Hpg*dO&#d7xx%1J3^Z&PAW}VZZs95B*w6KWcpZ*TThs96OC5d~q%UY&+AS6Hx zPkn*^t-t$0z$GY=qRF&>zG}D((7(&d9gBqtY2Uk*hkXt^+UQ+kxoCE=yVBAg_$ zKMLftYND&Ar88=WOt)& zbF(eEbxHOGuhh0Aa4S@2jR0asOUdj^s2NMAzRb_^0}UmJw=ABdh%dLcRVzz;8Ej7&lK(H17&xHHnCJD|{L;*DBpZ_gd8-?pc-fjk) zMxzZ)_!(-+K$n|G^62TcRf((}3kSI>yRx@%a1iE2S~$31G0*&{LJZE#YZngEH$uP5 zS~7r~M-?`E-j0=22-v`rlGi4(_!%&*D0pTxDT)*KGgtuwt0psWcf?C7js9NYRL=Xc z>a9M6m`9X7k-#RaUcj+k6R4d-qPXNP>K=KZ$ZHAr7ro0dfsg`U&C}nv9f@0M{Xjp2 zlGphuXht`gZEP0qy-OO-t0R#-GByUIzemFT>tn$-3ovBdc)7wNPfNhjzcDM>0<|T! z+$AD6kepHMYJ@vcY^}5d#azuOUKNa1L68HJ<|vPeY3KdyPv-31UfukvgKJ%LVG`6rKxSyP3MRumT-vrsIMGQg4$ zqVOW-Flu|s5>p40xUW$m^EDg3S;xjYtO4Kgs8QLP(Ux^8N;yr+vKQ^aRs1aw#aMdu z)ckuUdtCexUmcT4VGSPBum|*r!76oTSv&@bP1f3j;o9(SF8} z&&N6sEc)DKOsmn~DeIC#z;j;3+b$9ugpbL0fs|gGEYR>|k0qJx8Z|vx)HN?Lv!oMI zKnX)#-O!T*cW<({h3rNg@%|`|Xnl{nTkj1`OleaA!+Ry!64%NQ17o#=L=$~yy?wYo zJ0YPyxLr~k(Omfi7-$@Erv*Us;BTWy4q7AMH>N60L44t}Wp%RodFdjz0X{BeU|H^uSIaAvMe3tt0zMcMTx_&_FTQL4Fgh8ovzI00W}{I%&WqV! zRKs!zc}We^Cc-(li4l-HiZs;cb=Lv0n4H4{)#W%@`H3Z0pO{lL4X^>ZE{k z+0hh`MZ2Y(epl(u z;;T1UMtTlJwX9wOMzO2 zFKGD=VU*~FF&fbe1t;toBF*|i3}#3TQYeEU1}phw;wjV-i+Hq-p3n;{XyzvZpdSPQ1X)Ra&mb9s?U?L_U{J9j#2uSP_ zyMTfs#?gZba0)*?_a>oH(7BXg2J?tCi&1|yFy!a(WMv2KWlD=_!xMg^Pl}k;nf3-u zCQH)bfWRVl_YzraWdXh{LDct$sEux$ERDbvVOUBL29X!`84-qCry>kXIl`cJcSIP_ zFm4w+JiJl>Hr3K>grRNavLXy=ObT=ufDF0g(uxE_fSRsBu}215nMpZ5aXd4qRrVz^ zXrt)crNsn3x=;=!u%1C+#gsfYw`{DbIeA@!c%~-hbq#8e5|9OB>ndjDPYM@G6&Psh zO>^kPR=(#$SS~|+V@1CB53i4Y$CL2;nIJ&%Q1v9ZyZf&$-;CqT&xy(6UHaXexaLo^B_m&~zNYU`oF5NA@LK6sHq0+`7#IobMQ?un;$N8t;>ZkSwc ze2%D$KpXagQd$5&gq{V&lVTAjWb}jBGxR3v_SYjP__-A(;^!oT@J$)W`P+J!kLJz2 z<34>$aR6J3Xej^_?IKLnduX8TpU%Nr-k&>-t_>Bq|0fwC{U>+1Ab^A}mD}b_W_p;s z8A5-mmSkmQ|E4(_sKI<~t>TE$C99aVv^DLCVTx0asdD~;VlAZu_|eVOwzM!UJGV^s zv>g z6A*P|LX;L$NE^*Uoe2BtW-pwC53pI(Q5P+U2cd%u4|vF3gjjB+i&jX6rwlUn6lf@S zS=kS~CSyMdjuOF9@!DCqpm_@I?}wBK;8PL-QcsP;G_98zO$M4$EVI34Qd0mdEH_km zwx)QHfFPAXgpX2z^Y_$?F$v*FnROf(gA|=41)b|vF()=1Xv1`f`5?$`DsX>%09lX9 zOz3RVL<7YUb0E-vQY3fRG?$d+-95;}Mj3hw(IEA090-rMR;b*OhJ&b?v0DCbdk#y=_-W4*O{8-O8-jVV z6eab@d}J!0n!ruj=|5XW(Fo>hLlxAPVJWO+IZ+Ff=CUlqa!kQ8phgV{&f>crfx>|T zg(~fUnkCnQQR}fY>{bhGYYAw`0}ibY3n9>#(F4zPHs=r_P|8e|^ws5FTJ6v_=M?CWc6YFKDm|+H(h0#{n_*zm?$#iR1+%u@v%zs49#`Lz3B=WaT#VuNx2s z5fa+s9OJ+pB$e=2%VOoxvYdZFH^@M)PD00eW-^B%ORUGSFy6>9VQ$aY_(sq-eHt^t z+LU~WQ48WtJz93ffkO=r62%7;X(~h|oO<~UhHRwZ&ov8Ys3<5~SzZwRXR4f)T(m3e zi7DuD!BB8)Fxz#N2~W-LtUO$nZ7yMf93!M62drrR*-eL8^pD3(7?%zsIchmOVKH%J$zh-^0Zv;bQeI z#3mmYFA7B=5o!XN`W#_DKB)f;CxR9KP9Fjhc7P)yX*3b`x%H6Bj=7jvx&dyRQm@>0 zNdIMbzm@P*mlA>&iHn->Skoe#SvK%Q9~9L&adTmGL_|l_6iDh9RjEiJAZo=t5+s#S z5?I|~V&Bp3_vBR;8Qg+LN{sDjX<$%8lsAxhna+eGZJHX~O! zfS%#|Zwv}qJ;FpH_j$eepv^5r?Rw;K{ z^Hp@Fbk;*94_I{ZROB!og$F{v@tYr)6=?|whx8`TxN14b)!sZCSCcg4H*FW55GP=YIG4199)tMlts`-Qi(pB>*Ag1nWJZN}Le(P{6G8=V> zieKick|D*8+x)Kb`%zw8gCNNTgvYVYltHEEdn3^u>@=lx=?;gZ+;hJLL6C*lUP8?? zwh4)g{A3_$C=X#UzFAJT!TTm=r;%v;lr2+`*y#MN1Cg(##VzC{sF^G3z5O=cMADT8 z`i#5CN4iu;U7~NBbuare+91C%_fGwIGd1lKun>1{YxI8r?)Z}_`%oFhMWk|_FXqYY zbxEl42)v}c$dOE7a@{mbP4QI`C3#Ci+`2L~oPsvFQk=BWS#?*+R@$f!$nMyPeXZ9U zvN$NtDkElmP`Wn;cob6?#O3jO&|A8;d>x#NQmC>{?o zqM^~Rmse@Zw-~dF(VpIu(L!K?55_x@A}UOp&(x8Y(e|dEwUoJ;F0||=+KrL)(ft8( zT0F?7+OOms!>1x!PTaI%CfJUVv+27Jax+Tf6EW%oy2D{hWCF!gd}3R}29JWrR3hv) zH_r~3h1o^MJf)XJJ!JNo2;BbYDKr08^{o2`LH2>p!Kmku_H@}0ZX$fZYh~HmtMgn6xif%G#^-y8_P3cn9CTp zh5|o&2){BLFKCU(O|o5MMG~PYD?Q|l4Ho8aZ0q{7P;m59+787;Um^2kw*Yy}W0@{x1$T+A8W5kX?%vW=$gW(&$ed@ zr;+EJyC~QhS!cVmHyXb!YA55uE=c#GpG#)OpwPdiAi997g&1*Lk3Q90Wo=nn&< z!x98zNoTYrhfa*v1V&kts5vJ)Kt%aq$*+(-A#8M3C%8Hf>6f&Z?}F8m(HNg_yxxuK z6P7h&o^768gsy4?LN?Yh-3cY+=BHX7jA5)W{25={Sb2|IVj5t)Op6TH#t37zG4gBt zDwCYSIFp+a@8k8sNnHv0bmVwB1=TgOH_!vdbO(=sdh?L*Dr#*ppc_W2k=xrGN;gaa z+<5RE>gaUzQ)2t_wc72M!!ok64<{u(#nkJj+$f+O7EYkPB3`r4Kw zB$X#5An7xDr*<(7+8sz{1Rn(1Ds&UF0UDMm8-jzAy&$V)mkmx@RjC}^R*^1o z(s3kQrFKO-Q6hCKjIueWxI=r=Zr)Wqrpj!%E!68FPY9|EO?sA*PcDqh=1IwYXw1$l zOF_BNyNb0_geu@i63hZLNbw1D0TjciX#5yS)eO(iSbVW23^9rXa#G$vjo?bg1A#g) zBVHW}M;YEm1ejrby3s-;-T*UN3&f2UZkZm$I1)2}O3{zt?6y_i5Fx~k-sf~fgb+7+ zp9}87gmqKx=NK*y;bh=c3_j^~K?RIQk8CnW5D^+P!TJuA==3N~+*|1B!v>q}*0Lc9 zvkj6Gf#WO_Y$-#vHIGZ%BAGNx*}Lk%hi&E-(k$o~#7HS^82W~eS&i#Q759W5*(4z? z7LgHjTx#fdR|i7{LZpfw!y%hPm>}C!44WUyrRs+QhSkaVtLjE8WkOP$on zV0!3Ilf|Q`*&2B@%VC+V`dxNE<>iKT7xu>2V##>#UO42udHRsv$026{2MKYS0Hh}? z@{V02UJ`OG87E6&oD7rC&RhXqqS&8|699luE#m~QSpXc0@oXwVcBzPB5jIJ2tSBxHshc@uX*2mi&74YU0Q5kf$YU&|;C_huhiVxtN3E+6TL9 zoC&#!kGA;CoFCThSVl3|AmLtHrEx zsSz~_S++iM1{k2`qHbfX)~lLQ_H5=*<8*ID=rrkAO*nBX-7MlX3n*jj%|a{6zeNVu z2r;}_4sZV&zVHx<8xt9_SMwWuL2n>l=U`V`lrek*rUw&NCN+wYQV(uST%j719w!E! zhiEZNjU8n8oO}$ZHO3CH@8J*(p-+sS@gl620VA;C-3ZzmX-0>?>RAj#VWODH)Nl}d z5M`#uL_nU^j+PkHi3^aVcxfaACAzFYDh5V}BdOXR!eU{Lh%iD%B0y26D*`|o#QR{# zba9&6LZ`vxqDbfrq73r0-t2)<%fc0XlazH3PH{PpUtfA0AqUB3tUiqR7r2Cb0FyN& zNM%yF3JsYa$gqY86Da$10U+NDO)24FvIhB0mLa{Cuvp^6DkRY(@8*f(iHT@gRH+9~ zglM723pykIPE$!WB5u8B@_z0@(vKfnI|b2lr04#GLt0jksXM3L2~+c zXZ)Bw#uY#Q_cQV1Rkib_h#&vcG<%U}dqS@vR5cGk`gRvT4r~=!{b?q^5oAvbK_(-K z7qJVI6GvE#i#ZlWB>S$vQsFm(bilJ)Oqm7}yoH%@S z64mVqGe8wQNei++ic=41&XWj`>Hws9nopJ`$z3PAKfV^F9rfKH|G{0cKaIMH^El8% zd8IUSIoWVJGgS_)b5(0}=@>mCK1}d!}Ten!{J}4_%kzJ&7Z<+&1Ceo#me_B&doD1J&dIt z%04UQLneQ2QpM0+a{i8Pj|LndfGU!a^=Y6&3SP=O$>d~VMCkrPt)n?l zdBquabArMUaUY>0ny=>$q4DC|DWOr_5UFCiE~D^FN*N${2`d4RG_{%F(jP)i(nvRi zs=4lVl@1|ZBBGJF4{$JCz-l)_WgaY8L%b z@BwSe_0+eqgL1pN!nao=KO8sI&+zTFHd=3V9u*fs<>|eZwgoJ&+?M(XFWpgLUC9!v z7r;wf^oFU|^Yz9f6HSd#!ve|?GK+c@ae~=Btk=*l zng!WRVrbqN6cfe{F|A?-(THCXhw5YEB7>(PT+!Gckse}HE_jBt0){uT%cS~aLy z+btZh)LY1*o&#n9yv|u4ankaxD%Q&!|Yo|Gg0v>(7?@ z0FH)7_xlsjUJJb%PMEd;@p4moMR(n_fvhH{S$%i5Ywg15lIdV2$j)cBj#fz3XIvn9df}a%xP3}Lt2BA`A3aW1mkMsdt+knM zX%Kb2Mz_|m8nwARb=EmTD!E&0S^lAfB!u=vfCT>0{_~bX>n<4}mWoS!8)EE>mu=V) z08wjWfDv9czl(#q*nBWW4}eTuOIMa!8MfR_GvHnRWgBIx}5Wyr7rueTQoZGB- zbe1bf%zj_FvU^wS>Ll}z$}`4rf20+K#Fw2S9!1ElFhNa2B6MD&mMsD#9@# z73md$KV}~l4vd+W5}{$XiB7P2q}XN_otbC26*QD7!-R@l&V)2|9VwluDPM09PmC$y z2d`LE2T*VY33-ajMq9oTv-R3orLt6?v)~5Qvx3_Kdm{ukAhqEByVXGTn4Blm=0t_? z?&n0o+Jry6+38vK2{(Bl8s5;i){7n(IGgD{>+D zd^Zz0I?(27N*$^L>Eqav*yDk}G?8_w8CE~^f+#Y;fS%f+1}dwtxTy!Gl^A4hCB~gy zbXd<2{%^vas^K7;AiOAm7N^e1k22lLY#{Jnh;=Xxav0y|CPeJ`eBT5}$k^v-hPtui z@}Z4tBNS#*>V(E~v2~YmL&|MZGGs#QF5sb5pV4G-qb!tb#3)fOun}$%`otMKL~N`? zP#|MJ;>p%!Vh*xP6!x0_tCw#qu&%!=xlefyB^0c)PWGPm6E%}V`habwRZOqt_!9A0 zJ+_Bto^{JOhQslwA;{Fb@wzo!W;MC0Cb35udF8%+JG!O07NZ5H+He}hcUbqUKt z-#*@Ge&k2DX+%Ibn%BV&7AqjRsVFA|?M8l;vjSzcA?3q*zthyw8c|>Abyzlgn*T%- zF>ObN8aB0p)T?Shn4~-p_h`^~=6%+SP^qZixQ$0gJg}F$d)-DV<~w^)Sz+$_-Jq|e zuOInwy1d%_h<^4AOpT_m$=+u3-e&V{Xgrk^toP81QN8!B30VK@5u4o8{QIBKQm_TO zEn4ROM)QRNSlnChp~Lt1VOG~d3VOi(|2BHK>KE00)$UPu7H^}KJ|xxhbAaRmkoMjIJ0iK1} zAN~$<`17w} zD&+Gk*ae*Z_IsHa`R%`RW1RiKhdKL!%{cjYzs(7>tH=KG3&Q&MKTEx6oqpthe%qPm zNZk76zsK=1ceITTMq|mf8N1|9~5<8L`zG zLx4~h%os*N?YiHk7K$nGRh~g;Ha`cQ&WmB4+k>`MZ}^F4irzDIyrfp|az((6qF7^I zILJTP9N1EYmuv@Gp-raj)Et{rP%5IfLD;a-wyRLh-6o5W?Y!rUg}Hg9vF-Ch#P{9# zZu0Zyo4;UI0~H~3EGzG2m1|GuYx7h_L11tV>WjzbgtfK_gKAr#>c2KnDU|7F>UiYO zbITP47-k+h8jt*Gexy`p>ALLNJ;alntM7ihc4#0Tat|Z@bqx8kVW-=1$>^LvweQpe z_oX$Kv@F&8R*Lh`v6^)r9->>E?iUV!{|W7EFDR%{I3BzfXo*tClpUnR5N;sHXGzl? z%jT>Rhx``x%3Xxb$N1;9w$7mEa>ZpfG}JPgI^;wdLMj-BnV`6><_GOm%IEs;;ekSJ zo`>Qf!=#sk+{g(K?)g#RM&vdrGQlw$K-ai+m(q4uAtW43cr=q(|BjeI#)BZmIHL3N z+ugy7^tc`1${$oSabf@|Z$XYJ1}Q_=5j&Z?APKuVY9@@G%rQ$8=wTX!Kh;85kd?tz z`_R0TBE`gOG;^j%F{bNGq*%?xl(S}L1~@hhO7UghV$@EF(a>;SB3kUQheOCr{tjUAe19S}T$aP+9ZZF8s3DtW@m@>qphg#Sv**QCWk4zRJZ!7s(2b>I`X@BDFLg zV4ZjoMl8F?B1OH@nl4cbCZN+{2%4V(gC&#Q(@|`kSQ~}kGgo@;?_(?tV$vO8V-;fW z)hP>l&aqLvXGJ#%A7fMEEyq=y(gm)D<=I}vF;(0l>`z?{%XOfMU@TX!VetDYtyXhf zn~_ng2Li!xj87un2n2hkKc-7@BFIasOQT05pT;%KUY;|wPr}@8YzAAo6Ab;Qf%^ThK_a= z4w~S+$vGP`KT~~GHFrOR0ifPk&);zmp)Dqic`2NjMtlMLgK-};fA)`v{Qt>7q5sbg zs=4q*o+RvV!V9iRywm?Ie62+%@}>A0NL3;7SS%4gvC)&0|HZl~?M?XFY%!6iQ3R`m z9si`SF);ibq`@3Xp?fA(^G->`3O@AAzh*HrPLH-nTlq-0Y6}!z2mk#RhMd}|(_$*5 z^+|dE$E&aBOWUSbzi@*{=aphcKLUZ*Q_p1b=OZa%VMbKl zC%|mYk?%}Fvk&nWkWXb0=Y#)cX->hOg_uFx&N4iP(*N%TVBBLUNny=bVq2nWSzgQ! z28$wUwY&oxTp0`tqyNV~kgsV5^doQa`9Dzt2Id?6^#fB`){0ot0I(+*5aRM~ZWF zUXq!ih~qg^^2Z4>t~8WdMI!0=30W?{l{#O0Fa#`g7T3r>l0-QtHQ{m4W38TMHc1^F zG)%D3SCug*mf&xoA@q$~Ia31Fa{34|XREpuD(B~p$s!-2c%dZQ${OnpB+QvL5QZju za9bDd0NV@pzZbsIoI>x<;UY-8ZdI?PN|u&)awPR(0_NmvbTSV$YoO>EowA&@N8HJ45#z-)fV~<9X}6Hn$uhc%(oFpG`mu zEE=0B1e=k^=Zwv%%QWW828Qh$!FMwuf!W(y?a~$gdyfAK>`!r(a(<)VC!Mcezkf`2 zK%^%M3~#kP)5wT4g3cvFgse_3e7-Y8B>3-*?=VkNVrP!=e1sN-%~PrpeZ7xf2@^nh z5ig<$oP5Z#L^FB`FB}Llfr|^E2Fw<9Aw}O!t8)vardQLu zx2{?dqR9LbbEt8~mJ=w3*oe*3|D%j?(NLJ>`)L$Rh4x{(6yqqPk|Mzsv91CzEl^7!WPdU198v@ea?_p_+u^D+@-mDCL(5r>7I~LUm^L)YYT_~AFV7k z#93>#9&t&X3VUt=1V##suY!)8(J_>}(_+-)MBBC~_k}396nahzLRfeCYLfQ*T1kCG|{F%zP?$ZYui&9~SPXC1| zkb2DbiZW0tf5F&qD&8zvTEg`|wF|!<4irYltecDU%77>7uQy7?M1%fF0923_MD5kH zPL3y%B;iPnMUJLuGny79nvdTyCNPt+h-yu6Zx@c_7cfoYDYulnqqQ7LTcl%1^fyC8 z*iH%g0H1u@cVI}ydWM9McL*Vg2>y400VGFyqQnprn)Fq~Cb{UA7!>jBAbSsL<@*-M zmMGsj*X3DF+21`fza+Qo1+Wrj8-~Xw+i=TPqHM#P&GHKKT#A*5a*Z{%FrrN!l*ee2 zj6=LGDaGMr*f$RK3M_UjT2GdekR&P`o}LWCx&n5n{#!w|6*oqlK7lIt2Yn3L7o8f2tR$RHzWh#4<V6IPgv<-LynHp(Eoq16V`0|X65es4GcBBSn#?>C9X6$iaW1F2O*NsD3p9|N zAj~YQ^2@a_F6H?h#z*U%{`0bu6+#w~@;PmTbmm8$3=r42wAo>KqYzf}6WAyreDIvz z@n4tKqB57*AZ?Un)&?n)4Pwg;#HtvnTfQM!n3n%wwq@`}9B=f^5GurkgdBZyQ#YR5 z_&3!+iBO*HXI8hz*B9{kkU4!vOnrfHbd`^{TN=E!m|tB&dE}7@451;3$O^bLgc&CJNKc()mawlLwec#Hhgg z%E4Bqs>P(I=T`nj>FN3eo=Xy$Yn8ejO(<{{!f&Gd6reY_iz{BOIf?C>1#uxsqvSR| zLyjpZDkYg85w+A`Rg~#MYv(=AL4)5fOK+Y*b_nzW@*n*fo7?X#>yoPX_e+KYR%vgmN5jS^3K~yo{0@V>n#puPP=~9{DumRq6O#*(OjK|8;Tr zkZ)(C0)c^=<|3v4Ji!0QcMj zcq@T^4M!XPm3)SM_?>ImBR&bGX7f2a}%9-u(EbEs@6 zh=&7W=+OBG^*j)xz6hz$1tTMQJS`@2xh{~Nd+KssRr8-dwVk#p6OBAq5_;i#itRPi z)7GPf2$-769AdFV*ov#W6&710;)X}7xhu?gJX-uI5(*=Xo(hYtU1ni1+1tIsVuhTC z0_u~9cTMeFrCQtVaD`c^rS=(&WocK}-PT)XE?rm-$2RB@zLWLY@g3SpM%WH=G@ecT zF2CngEPp;2Q%i8^9VbjLrXxgNK9ZJwsDuX)0cZJb&Jx^eOH5j9pyz&vI}#boAu^UK zt6}Jis}B+(((gkhTQcb29h1eFU|bY4Gr=hD2@Jrl{I%1dTusxUXXVjpMiWjV+aH%+ zW+7TPrWpw>D40OYJcwD{&4BVeVFgkZ(~^GV%2`{YOfXWKNukLY5FlqE4ikn59(t`p zRiT?(*k6dlf-R^5G!6Z?(o)M`d`ORtM*Ex17>P0|lAzmEmLL@pB;z-=tA(7&=P&5A z4C3`Ny(_IjmA!{5`*R@?MVAVxzd(iL+b`rTRF$KjkK5lA;K=chhAC7BJkoM2_`~Oa zSYh9K>y)%!DU(z4q3vX@cKZMRy81@2RW$GY5gE5KG#K4gvYr^Z!b3F-(|qqQ+Ftk$ z6`!)Pr({huoi?Afafb5N?wUpOkNWMrIJJX~CIfK3)5G_DqaFNz^*g<<9_DE$Qs~o^ zPpjwepEVnF4Oz4xeZ%a!Lhb{!zS!G~W4J0VKbqBzZlYKRO|55?lWSgOjw9^>>pQCQ zr^vpl$$Oa;_K3!!!N(DThe}2Tfe^ZeX-H3bXIpN-$`1^eR9Q?mNB0lg17i!*BLiQy zplm-}uD2_{=nIQ?PX1^`XW#Tu7N7l-u~QOJO&4zwb9U%M7)qs_NRB|%hb4d{`o3H<}YgDQuYn&jY@T0Z*2GkXBN*BWhTHdiiOkyDmd8iZJri6;KJXTjnxkmx(l! zoz^BocGl}AK@~FLbuBT2>}(S#Dh=65g3*m!25vFPZYju)RSlvSi2=y2oFcnDk_jeN zLXzo-_+L6=g>yQ>q6o5+Vo23J&%J+}t|ARj7YI#OKr|2Q3aqUw|8}^jWlJF(NU@M( zGA$e=Bp7-5cJ0?x5Y@3{pdkl%Q0_`K93SMNHRVUMDn%v$Tm8O{N!T?G6z+%f=^}>* z)8QKqQDcpF{G5C9I(d?D-yF|Lk{G-xJz%K-`0(%r#S8~u78be8PXDbP z)`77FN~McKBt~{jDL0tj9<_^rC?JroQB^3(j)PIXi|7McrT~k)NQ>$5Jg`@}uMo2e zT0)|NNf20`1nEFyD)e^0^e%%2p}ZStmbfekrS4=p&tuA913HGRp|&r8uSzY@ye1^+ zO|H#CNjCvyIUq$rL7kaxHbAlgR_WqU>v~$iWDqgOldi3{z`~>o5TW$WONZXO>Y%o; zVu91e>Clg3v?_!3f^?{vP)3(2D$!jAmx2w6`!!6FUm`7?n$8TRL}!9grZX$2md><{ zfX`&cC%aS)tOoR$pwn5#$rPOtT1@~u(9#)o7F)n(xweze@RmrjcdBO+9-rxniYA@R zOKvnz=?>i6KZ!eif%AVY&8d)%Y>-y4Kwi&y)54;8Q>-pVIyEmp-OX8d$-#Io7AJT_ z5*)5atC8SVYz42sK{G#NTs)?OkO9hYRjFQGA(M2n4z$bt_ScyoNpK17sfg!? zNYPl|Nj*|SK&_ZwCRa-Cvg|l@3eaeI3kDBeP1l$ONJpb~jUj9L(zOj9Z6^h_79p1W z(?07?7(#k12GE+Ln{v|BCDxp^x`VzbLv|$*fqX6?$h1jn!&6;c+3sC=#?PGS9(l?a zj&>KG^aW4(m_Id<$m&g%ILU+{D%FNnR}v3&V*Q!%CSEBtmVab+8+4lLUahZGOX-Rn zWCL6CI(1q{DDVP_7B!-ej2&eylTnyk8cCm%jkZpnOlW-V3XsA23Hb7`05j?K^i6P#9+q#(~gJ|L`*U6W8?7myh=`EgO@ z-BIflw6qsFYW}raV4;4raK4wZdli?}pEr|mD4FRKC0lyQ4J@5kBQCCtWE1$k1KO?fW_a44DtT z`C6$2(}Y37_TCb+I~}W&Komk)RbHQZ?rYm?ayq;~kvgwqFGS&&<%eUZknqcLFBZ08 z|MPDj|C9xCfPV-1cLo18`FAD%uHqkcV#inW?;8GH%fJ7Jy>|hV?5OTMGjC>9)+4hj zyQ^Q-)sLImtyZ;ABLSjYymiZTOT9vi@bd97yS9h*dOS=^WsP)|dul z-i*tJv1A*K+iTXyj}J-$j2L5R9-a{fLjm$w9`IVc7VPyb`}?00aUYpkrIyt2t@m3R z)x9?|Zrq4-PMlYqII)-iQvU1lU!VW>@!x*_yMX@=@ZW{}x5$6^Kzj!zVbg<1Tpch1 zsKr^KiB%|40Wlx8WGVEwOctx1f-Xb~AMS`GG7U?VfMd2_542&15tjS3hc<)5(B`2aW^+_v0Q|~I zpu9JASO)n{SboS>4DT!`O+}itBHFvC=!X>nMtFX#C7W-xLo{9o-dlKiEp0FYIQ0-}<8Xk}A z(?zw-1J#}ys%@v*r;2Ku2C6+JR3jol`bO+qcc9v(q1rsvK3P(t`s+@J`F*)|B3)EqO_MTg z7Qg)pw-@^DSGhglx9mGeFYw#H;^{ugfd`R!kG+xJ^S0n?t}{tdUO-~Lx__xkPE zxZUHoU*~qW-~KJPyZrY5;C8`p|Bl<8ek;Rj-fzFb?GC^FCb!%D_S@WU_1kZ8yUlOE z!|fKo{Xe;#^V{!oyV-A9_)0hV?ca0T_1k~ocGhqIFK%c2mYDRk@cxLd z0Q*mL1=1hY6)-=bD=_|;t^oKy>I!uKR98Uzab1DypXmxvKcOoS{iLpd^Q^AG@>9A3 z$WQAE6hEsgApDH3!0*p>1$h5SS0MMFbp>n>>I%$0rz-&a3tfTM=XC{CU(gje{iUt| z>5IAop)YYAX@PvFVm~~J1!CF_fisPag*X^WP>gixX1Bk$tTnG^iD-i8bnJnb-=UYi zj~GJhyllz));b>8_TA6$#?!QI&sHMIte};~QvMP!??v&a@8PSmE&O3M@|Ws~B2cl_ z2vVzS9W0we6}5eWC~lTYYiUjgZD}DOd-Xkha1PrjshPfv8lhQ1wsKo_BF7kj!rTK8^z zU69ynuhESWpAVnqal``#9u2@>uFGaNZQJrBK_YCAc0zKKz5AC) zi&Af|%|7${HV3RD2G{8HwN743gqFAIaRvis3Ir#U?J|+0D(HAHYl*)sFdq>;UMt#W zCGueMVzElwL=F9H*b8e6GRc>o^3M2oFdZ$03}>}1VFxG}lErSfpfyB)AE#yfiuayH ziZJ$wxnNE?=KQrT`Jk+mysqefx8=PE`=;=4=R<+{$6A8DA(m-oo;YZc=9tLtd_ri{ zh;Q^F_di(?n<%W7yP#C$^Sj0(p6;$aQoD>dpN+*7ETNio7w?|6pgj)q8p=vynZ=TB zDjuFxQTnEYumP#m4+(rLD|JL0A*`(0lS_}(UQBt2_bBnZ(ngaH);U4%eDgJNvL4hU z_68;E34jEl5+WlFdoUD)j(#yJj>}y}IL0UW$zql;;sJ;@1voz}xZ!=%%<(agAl5dl zmPaXASgnU|$#8R<03Q)o5<3aubyf;vawk)z z6gE3cU0@tT@fvn_1#Q7xb&McQ#^e)t(I9B;Gt{sApRY6Z?7@>yXr;@yi2Xb#z_ZEe zCOXY(7)}?R_@=tF$6wTKrJnHSJ@rIOESHjJ$30#x+vwCP@=EylQdP>+OX!PvdI_CW z#c@fAIh@F$1H8inF_s4t@}O&Ad>cK-`Fu+n$0<6ZNBSIke`n~L*H+#Mh1vTC8WdTr zX9c2DvJ$~w`{f7G0KP_`!Pj6TzzsR3Eomt>mf~y|LjLKXL72_aAe`iA5KewDXuwNY zLIX%(M!|nA7S99CT3OhsW(T-hs*aER54PsJ-8JlGj!%J!gMPwHFZIi!UoPjeynJ$b znLsw-!O8liltR`&M!~(wiR|C~dl*ThdrS=e-2S0f<7yOZ!__Slv87D@OTS10B@;p| zJ9lqw;#qb5^!5Z|zoh;!sr&UvI?z+VQ)9eCaFvnWvfb6z9qvyhC%V6rz$;pZYQLcT z1H48sy}rlwdI>e}`LC(xv+6nhFZW2>ylT(NJN9ZicBvGV4Lde7&@qB_H|W?K@I!>2 zoie6L*G}4r=-#(8Mc+cUaD$e2iV-qVmTse8>7({*cA#Hx-LPN3S@dfq_UoOcetl5= znlPBP3YZbln!^mx9j<9E2&b>5i;oy93b5nk3Bhpysq9CrAeF>28^G?qqL25+KEAKi z$B(LyQ|G&nn+E#$z=nPNT+zp~v5y}w_3=|hABXWP$W@WcM!$9D!{&i*t!>z?Zxr2n zICkryQnx;@Zq0O$0sT86G6VxFv^a1aYjgfB7)6+Snwsm*y}wU#68EDgA@Q%%KOjAYoL`Ev!{PPJ+8Iewfzu*?l?^(-ojRO6 zq+eHV)9!NhUX_foef_idQFL03w=yQg;be`P+=F2fMX9O}P=mU5n8smb~?CN z<8|vxD}z?E?|d56Hce;B>MYk;bYGI)^s3A@k^L}xYVfhNB=B##EJX?cm!*gL-|Ull z)m1IV$ndD!{XKx7Lk!spt9{-X3V+u0HCi$JI}()nnQ5XOlJ+ivgg3LX8(6fZQh2;r zX-HdkTJap$yV1(Fa3wc1u?paV>o%^Sskfc$TebY7Qkx>J{Zz|V#Xd}dCNqcEF>*2>Tuz9)$-^@t$aPyWgN1(wBe|IBoaBQ=tV z$?@sN6nM{qbwa)qu7c>q9CHEicFCX)+JW7>du6tmERY1LewP zGWuV-&X^hPl^wRKOs5AjrP5{K+>Kq?nbrsoWMo&I(%23t*X5)}bwCqlLgP7*O_2Xm zX>JZ=EU1oa3F$Joy6CQa0p4AGhzI|?B}DMgFZ$rO7D+ z!ma@z*jxE{o9Ab|Hc$hQfwzE+(t-sz7@!06y8}R&hRW#iBtY1*F%W?D79T7-GJrLy zQiVrL8M05UrfR0g?kk9tCR;QqbZ!9GLG(e?)9F5?b)Co(rR>74RUR*Ejh>6txgYzd z1Kx25FLS}5QJEFme`wpkH7U*yH89mQAB-pl=Ny4iIq8#{wTwFML0&E0t3Ro5xl4KZ zcKe2PeyXP_XQY8k97jG!=(5H3gQDU?J|)^tB{w>iD1o#!-lvTwr$3I<$QZI|jAc$b ztDwauUP80JbnkQ3Av0-TeQaOkd$QTXWK}v;Zq+lkSuySTxu*g3861T<`SR&0$r|xl zcJ~Mp`ENuEPAI>wBtpR;%XjOr@~qyg!^e@zb!8SF<3cjwDJ~P!S%XW9W8JunPiGTc zNDY*5VY|gR7k2x%xWJmHxgbp@wOPw;F+}=)WtMSURmSKV=ab$m6LThQYXr(Xjo5D= zCsCT^Xu1HtH<4aIIMoIBEM0s{f7Z^-m`!Kzav$le#-kKPFj&keAkdOKk$2kJ#nUn8^MaD%mA~K{n|m-Y6*6 zvUSe@w)ONilnm2cY;!2?s5=q|O^@?Wmb$0zqK(<539dn9)?{Th^)Al52xI{mW&n|L ziUW@e87^OjV6qppKg1{wsO}Wh+B+q(>>$64SSF?R&Kme0v=*6!D_XBT$7?K)_3+Kw zE=l_&xX^L$Byh6>Pum>SiGytsCEHWkt4E^t3Hm~pMlY=6i7&8SL1Pu^Fe;Ky& ztZJHoEMcWT2@n#gL)K41*CrVtU8SS2Jod`q*xjNbFtHv82!8@L5=PF(Hj+O4#|iYr z_1;8>@`jNFUldejWLBlDM3j|?vS2Cf6k^dZCoeZIaZJfd@hYbq)1Uqa& ztz?lnfciQ#XH|W;@JQocS&BX%-ChL!-Ip+Snm+}-i+`DsBbt=A8#_n05F!s4K|Dln zok57L8tXxbS4_wTkAeuTc|-RM2R?!71)&;aN^2Q%ObZ5{Hw$N}SOEm)Bei!lm(=y@ zz_1h79T;wP`r7@G%GhiaI8^vW+?GM#AtN725PIap)e&wGM&1qYXMa6{50li0oSiB_aKWU`_f4TNbTz-jVlm_nzU{O@P)0wPs@v}Tz%o8`!JAd zFf`raGM(zkhoFDF;Zc&D2=FRtlhm@sH-11fh9f1~4Z-QRnC!^f>2$aK;tivy0F1q9 z{pyAOo}-;D=^nV*o`v2nd#k5jd-5-xDCHEhUxT~~yO_%hdJ7DqPoJ5d{c!qrH@nqY zsf`fj!uV>s-v*;U6R1d=QvM@N>Qo;sMFV4B2iv8ydfH>1ZlRyjS&X|-&dMXd@W#~( z`pfxYs9IQj>Jwk?>a^`{n%Wr&)9C{5;*;rzW47z*!qLulinVoRA??#>!mybkz@XO$ zS=6O)3;KSdBdQ^(bl0I8>II4WGn}@9RX^QD&%KDec{F63|J6jQpK3ii-a|0~Ai&~< zV3irJpk?-`Fsc+6h6c@r1$=c{pV`D8P=-fH{R`2Z7`f@L%)==;?)1u^6<&CmSPh}q zZk6iSZ>gacwn)`Y{CEWPDa5jrO&pC|bXQ~PmkViluhyWL+pNx0tS9C4Wv}`|cWZx7 zcB`ml4&g}Pi#;FfY)0LYnrt4ohhcbHtytr;?u6D+uCRtR{lI#~@+u1yIMyc83!hu7 zsY})^h~=R=oq)?YJSVPmH=XoqsFOYRY++P5e4XwwQuMbeC_$yhWf%DZ5^#!-GN`Fk zi@{U$os^-T52KCRfx)l#fG*#ozLkVmn2w|hai^brh-;=~%5Q|b(Re+bChkxI_Asc4 zvKD#DL26P0;7I%9fPl1#E{UifbHP|Ddwm63ao3AkghUrxu9=dFaJ8yG=aI#|Q1I+Y}%6@h}-5Kovx3 zt9!`BdNwP?!5RHUCzzH~(4#L4iTA@ddTINTdhkK3h@Ex2@(pzUA}hXo^G$7D#B%TM zd0{65eZ z>J>l1wk1@B>+^$l_{I+lYpslJ5)j!X)oUY){#o&L_C$bUwi~r}GJ}Ih{{% z&FOrC_jy=ng5!CXdQqC-?FcDT?reh33{UX5MYS}+wK3ZlJjDiVg6Ff@+Oi4WkF|a{ z6CC5)Cing_Xr1Svin#q z?CENs*#w4d_RX)Nf?cK<+w3=_jU7I>Tf#`qo@HUhuD)hr+8*kbbp(}^D{`xcEG0hA zEHjpp&VoWITanlRHIh^bK$lUJpCT4OP{6 z7e~*|q)D$1J!0i9CSrS1E)mhMn0&vikXC8zy{|XnXyP1 zY$pFKBS6lFK9)K!1tITz=(qc7yw`No^aH7yg%amrsJy#Tm-7zOi&VPN1kL4=+qGPS zIChah?mB`iFUBPL`*_PckL-FFV{pytUz_uQEd)DS1ubb=G)T59R|p8Ew4tYVf$JqZ)484L<7J2SD7#zYtx>bw9P_Vu;~1A{Y3&8;&AxPUmFn#uPnvoKQT z0RoP>>!2>Eg_&sXIvt{>`x~YD@h?H$OYT`3yFIw;IDsIz>zX!9R6a8xAE={j$!&*O zp?vE+(9D>$Mzl9q1cS#j)MBm3mWV$NhLn7nIR&{>DCZHfVM^L3l%_Fhtrh^IhBCoa zl*oCP4?4+k+u449`w4%Y@kx8Q2|G$}Ov&@a6 zanlkGcq#kRLvWRGiv-ZG(2}Usx)|7M@?oJ*bwPnh)Om6Md>RVO0g|g*s92DYps9bF z?ZStR72{C&;J&PW*9Y;DNFS$~^l?Q_5Ce$zE$s0sI8bi<#BmVLz#=1pbn;M{RgISB zf}sLU98^rn9+!SR4yly&qx)mQY6F2d^(yb_8E*$5Q}Fk z2P`2KTe0?xqu-klj?M3S*T`WzN7%Cgwg&ud&T89(*-@kq(k^YncN9Kj+bsYqo~@c| z#TFBl)!{E3St;^hqbdI-8Kh<{?_ibTX00JL!AUEFdcUqQ05HY?+f9)BeSE}H2WC28 zlA{P3l6HAN(pvV5Z4YvKtC_}KONd zZw}$m#JO07Z@)bh{9v#EMhfT~Mk*LEUqc6{0TY=~wL}vZ94vQQPcCYR0;p^9UM$PJ zE~jo?PF*`E!j=oh^_Cs%Xx{z}UBT2eHAaeEHqTB!t1hHV~VU>1L?sbb; zK=r$Uj>xypn;=lMm#cfsLO8gntmcU#YuXiu;E+yI8uj#1(n_kb{r+>Z`y1EHE6$r4l~e$&N8qg$4Nl==Z)d>6LG7k6?ma)>#lK~A4bxU?aj0o zr-r<5R89>3jUhSNXfDPK!P2-$nj8W!k(QQ_Nz}lKpv>$sXU*gS7Ee}l#4cEM_(X3^ zh2bs5f7tnibOIVydQj=mk+9)ZgdO9-V9XxpU4w$fla(_|&INm>x+X(>1}654%O9{v z|HIIl8X9RqH8e|!(6A0S7}~fGZJa|FL(&Y8r1KzsTas9HWMwWJB{C$mviiO6H3 zafaeYLE2DE1%qEgj6RghV^_6FgRWm%Jljwf^JfhuWsu>VM!IYoJ=q6zeN6&d(;9eS z=UXohS62h)W5#X(L4jR{4tB|UpoAfUgRonLLm9h<+3<#8))J>1W=r5O;YiMk92|sD zJ0=4-h@y_q299?AEO0ana0D>ickP7E4V>b?7Q0qjw;r(6{ZnzuoNh_kipw{)N9HsU zUP^Gj8$j_h8)euiMVfuSSJ|3&x^<-Sh$)6;=nme8mxuTH*`BcX(YV(*oSe~z&bBmD zi4W^uqFHgarFDOsPoHfW+X@{H`#aa|@EIFdp09=$4mQ-`Gw42 zz5&VT0wDfCJ2~fgg`dv}5L6YcMhsVi>8!qPzjHlHFE9;!XCo13^zjfiHW=klZ!{3l z60`DbFv?o@j(YZo_upT$0~eI0{zb^uS~_-{&Kf`s&CX1n=&l*0&u|{Sqfschcd9Q= z4=*QiqI59fNvBr`cZR9k;9H^oboKzoZ;~QaxV!!YT9)5s_uedHh|Q+ybZ^!T$ivBJ zfrrF2a2a!mbZ<-gWJpcBFX4a@b^?S_Uu6fkfBEIT@j7oxK|}oNcNhEv=vZ#4x>Xtg>{;Dvt3S?o z-D*4kBYu03TOxK$iuveb8^8%e(YY34pX)^o*BfJ)>2tgcXm}YwNT2Ox0L#mO zQTi+|1D0L}2-9bJ8KCwuAe=tK%Rq{kJ%b4WTFCgvAg^TFT&@bu^oZ93(O&Ne^+2`P zyPOA*O+G+gx{3$TO^#6>j$^1D)~mDW({<^jmw9_n^Y$PzZ|`Zm1(|t!m+=6hd3#Ui z0aEk!4%6OKy}hS+d+Zfe|1R9_D1QuG0zB;9d@s#Js< zk#CnGW4Y3FGm}$#jX4BmN^05D;t7Z{f5Kz`{Nf31ajAHMLLt_?D#Qt$=8w=NB$_`m zU6?ufBNPg;=8w=`dS&qlT|%PyuaGWOoIgTl>G9$b5=^fu9wAStH?IuoLdE$bBn4&W zkB}P_nm63~_$O7uhe}!bygT*7{lyb~jd>2wv)C!Nv(7q~Rd(0djbvRoiDoLia zS%9;fI;b~iNGE6t28u;@weISZjA?T0N;sKO`-%xSf=S?qlzq{2zrn2O5Q$>V)nKoq#lhfH_t8ynG&=R^ zeb~k{kF|pRtIwgY|ZpZ!f2X$O~u3+oC)j1oxgf!8B+#xL>A` zx&j@PD+VLG)XuU+ot93-Ff_#WMneo*X3Vh)WsT6K!JPS0n&vynPQS(7A*G%F*|*<0 zTvp`Hh}lNSo9TvJaBayQ02u9*zF9n61@&SmzgoP}jLoK;S4O^!iW$JD+!aK$4iGWF zPd!`X*0$=_vxm4vixsFJ=9XQ826b+kcDii_eVxX-|F)i;ye}xvB`Ayet|U6j!|;XP zTDvKHzScd-)Ll%V16;f|8^0}QyIWGAp{wb`dgN}I{Kj&+i!zfjJkGSTvr^UPIMLP2 zfw$}1^E?@uXc8*@1O~+}Uf|sp?!_J62!Fx-6;(4#9l;x?*vpI~N}x>b!NL6vVR7TZ zP=mj|1^y6u&Z0{OU`z|DW#pVK!dQT zSsgu0u5FDlf<*=ay*C2|J0+M%5d>)m#Cr&=hNhj%XiNrw`Hkcku$EZEQDsvpmucs9yK^u>Wg0To%wBu!nr0Gr3p=tS>sdTqi((pmQH(|e* zQ>@+z)y)z^zUXs8tTj^5QIrBTNN$uA_{OSH>;=wsV(;|y*%nM+d%ya)nrv5~;^ble zxSBR&fPpNsh4XI)R}%|nSE*F=HUp@2M6U?~9p=dSizPuYgINfx*Zfg~y;-40?+BDB zzlxiKowjpxW{Fr`*>i9PpBvw`8D!@DX|F@}z%ntP!Etc9CHggfIl{R2GkP@_X~AbF z6v1PO4{wusYFpqU1KzG-D$F19*24BI|53(HDT+e!r4j?h)-7|!h?){>oLQ>%I8+d0 zbz2aDZ>Wo1X)zPQqR1X;_w(GDixB(O45bCc2&!Q`bhZ{8iKdPsX@WLN)-W_sOUO#U zrI@g+10xE97bSgJM4%+SPK~?@+H(yBrU1nANeo|I20_%2YXPZjB55%>(~_BAl1RKH zO(CLb9qb4mj(`F8i@07QT7kV7uZ3}ne+t>U(r=h)SB?ek`~zNxa0XBx8kBm#pTvaB z68;kCRi5eu8|zj5&O*B5CZLTwCFQ<*6M-f(5=08bPq*XvL^lyWgqL)?#WB%2!(th+ z+xSLuMR775IBR!bQ(DbRchGo$eknQC->H+8cc$|k7zDX=EYwlwTEJ^q(O@2A&wbTB zR*iYeD5%O|lIS_Yx_-jpb5Cz4uwt6j;2t}d>bLiI>T*(-bmuMUd{(0}n_`{r$<07y9^CHY6Jt=q&T9cGNS~%f zo|e^Uf5Dr@tCcP+_sP;ORE??OE;kF_BDwdVuAQ_qT)Nc>5i9*A~$D= zq61x2wB>HI^Nj~J7O%ixiIJ$K5JV`FXG+Iu2#31eG?fX6Wpg&Bra9u_sIKd_j0;Um zn(&nBJPmq_K57orkyDjl(HF0-vi;a&fs=|L-I8v^~PC4?W^@^jyyfoJtz||& zm3`?;NQmuJmA_d%S@CM)dE)=N>-#UU#4Dnu)Z7 zI-A_+!$GMgrWR_Ife372BT5Ebf$%=Sfy8u!;I!n0^p+?m%}h`!YK6QxzU-z_^F~T( zVA7g@-Hs%hzGrFimVVdtP(sh|QXIkybkuDUR#V$3FPo84wnJ}obi&KdUA&&H6xre{ z`VD1OKw-EM981BSLT8#PwL7bJQ6{cpC!PdYx{WqLKk*10uE4rC|F-#R-R7>z!_7Um z-g)A&P}f345}dU5VKcm)He@LV`$<9E=Dx>DH3JG=pu+D&N`56;iG3jZCDl$2=$K#%LYiZZdwZk2HJJX_Z*fJE;;VbsYlbcTwX7k%(m1PI;on?vfiyz5ve2Fhi!EZnwED79`Q;Lp3#yIjci!d^y}^C%PR| zR>y}FlapJ`*hvaaA9kbFk0rI)4`=$KVdwNzZ&Sg6_}*z_Rx)Mgn36J1q=XTz1TAec zl^X^vhGE0eKp^{gs!hNW`G})&VQ2#w@xUW(C5Df9uV}(j+(*7*&s8nmrU_a#6L5iP z&MbkWYL=YQELk{$N-ZGKjW@0_OBQUFoaT|?2Yp(%v*qdH#tyI1dySa+{CzZiY3Vbf z*gIPokz7x+ywCPQ=Z(7XO{^~e9+Zk-FAmcfda$94*#!llk|#83>Ftu1u3_Z5f`(Ba z)YGvQI)k$|^upxJ$XQFHHfNbH_zj^ftpP)8LABSSB|8YS`m0XB8m73r^=It?O(20Q zBDbgE#{Fp|EI%XqfI5JI<4NBaF*s3VwfrYn{TGH+|4pLoxiq;hx0tv4rtrwl4qb=ay_Mb`R*nHZfh0mk8n@C1=QTF@P2^M@MWyB#D z(fLJU*)E?C^f#9pyGl~yjZ#B)*?bUPh4~<;R!vq352He$XEO=eVRON3cq~?%6HpgRC0#J$=v%W4n;qGyt!V_AW${NqW3Wg z-p4bz#guu4D61#XTD{a7t|Ya#%PCoO|Gt*3EwGd>;$%_ztAKX4E7UZ*q#XFtw|U;e zFi^FWk~ED`2g>{@h{KLQqdIMpQTK!Mm58siB1y+c2Koc#;fkf0;Rm9{)Pi9t~b@uHI%a z8T;I~4S%w+VH(Me95!WUfV_7i42YF=JDbb8MN5aPnmj{=7Bx$y<_Oo|_mpH*#CX5c zRrs)R)MTlS;p}a}k?7t^aw_uoimh^z#DERQ*6XZLlAoG>$z)2Yls zW1zlNtBeRv5`qRPHmeybA5i|xOlZ*G{25jv?@=!G9CaAGH%H3`oQZSVmcV9q6F#`? z=gmCHnmu;lrnbRD5r4u86IjK%Z}4A7%CI&$;-76IUewvF?#M$v-Xu(grrk9fhYN56 zQxI@1!Ubgk;EJpSTq30SLcQ0)A~VQ4fM*TBP8*{Djc;Cn=BFIgI%$k$Es`Ap3Ea@z zw8TXwTWRUr(Yd#!+tJdu-?Nn59<=|-TuY~#q_#BgElOy_Mp5cFpct+9xT+47%$NgO z(ZV>SK&r+gx&beaRNMnXYNS5L?RZ?)fNHf$Y`AT6j;CuVIwTLm$#JWb@OaK~tHbbk zestV6VKIdGYY?D`SkLXsl?t-7J;eKfIK`oF3w#w?AdVM1HKGFNhGrAAz`kQko`2`R z8(K8t2-X;sYgcFS5)WGD5!(=zJQ&zV_XDy<05V%AT+DBUw|+|ur_=ok>k7bZfZGJ` zgBFYMN!@eH((1|QEcXp~Lu8!;yd)ff;xHRC#-(!OYj7ywKFGkF4T>5cm4Q*|w0LL4 zxK7`;_eL~(kHY!n)<5@V&6HT3(h1$KX(lbtl*$1BbpmY(s>Er#QVqA)@dOr;UQcoO zrf^S|i1+hN&QvHb5U0IbK!^rO+P#UV<_>30eT23%8sm*W|`ge-NXp9 zq_Q56!Xh(7T@W85Y(H(V5Ne8bT_BRxRAS9);f)ntmbPt07rmdmu%g?{NcV=2JJ?9g z;ykMlwv&gZ%lGw3&=CfYY`H?0Z(+j z_~w@Uo41iMo63*#n_A*AnCP4I4i0it_nQ#3K6!KZZNAvNpNQjV9%ow|qTiTq=oDEy zocfXGb^WHp$0@z|o8=3+3LLIwI~f*GSA+vWz~~pvrJWdUTul@Bjsh!oG8(2E%Y}eM z|Mc{}gd^0rvbUwOg&&(%QwOb2{vq3!FaMB-Z!=@+wsjw~brP?_xQrM6+17o8r4~7- z%o#MUsbhQiCpC4n7lv+9(^ov14?5dfvxknSliiG7(K>Jv;ON(cOm%+MFzl~X6Xp=3 z(7|Ui+lj(olx{-u^|Y4#9{Q~%ZT9>(3R&l@Cn+Wg)d)Fk`c4xIO?O>P#&SHW!6$D3 zFElI&u9h)OmIYSQU9#h|DocH&FQrXs;VbPbwa(IPizzNJWm2b&R9ERtII zx?@UBm61fue}N;Cj2S5Ut+49ZLIVOTEK!phO&CJa=b!Dm6NV@ihP2!chLjJB>FbV2*2K!pJxQAg{bilMsk*jzeA zx`<^m+EM@%z$t_7-dFd5toN6JKj>#+wOCHElpl17tS<%l%K{(&u{KL8UQ{D3wf#SbWl>hK3B)tutR(g(JV{s3MCH3x6E>eC8&s1|6qWTl37 z^*B`E$W3WCK-i*Jcm&eE&6T(CkYFiE7Yp@S1K+s5YyfGMp*~9n8`sBIQ1g%4fts)l zK}(vQ#txF*Bn#41ET%FW*;{BHBl8u-3?CY`NnW^tWaw=TWTy0%v z;QFqq`n0wmo%QWU!xP0=h7Eu@t(jOCbC-DnZ_Bv`>JM``zAbI2?MhL1gi@pkFoluM8ei)E|IXosvz-P}RBwSl|ni-)kD}vawm z)0CJ{{xvD&e!>XrdP?DIrnB-eXZ4acy=p?b zF4$Dep=?PxKoyq-h2k-Qj)E0EGIXZow3qV)rjlFPbs0#kN5IfgHZ>vGio%!!5VYr^ zh@%O!3`-%Ol4CGhF}3o9;|r>p$J0y+LYKjuxm>D^h$Tna6{h%EbJCOiJY6(|a(np% z)(VGfbqUrG#&S#HEiJ7r(`U! zjnV3H`sSVU-v!*p!^Rr;Qlyx|H zeC?!Jln7=}J)RJ=B5|_AELzPpPj;th1E245cD0od4uw}_j^-fJ4m*Zih)Da;B(c+U zQAg^R)H>*TjqD^*U5T&So5E_J&Xyb2O)S88@`_4GaOChpr4mYwG$f`gwz z&YxwiGj){8hVKwnS!d-|8~h2*Y%0X4nUM!j)((!rSJ06=5Ux3VY$qj?xRKqN7xU$2 z{!vzTmXUB;?p;ZaBqw!0^Q`)c#QF@mN}pN#b#AjY#=(2IOyZkXB+Dpwd&fo^YmID? zpxR%34@R>6A&DVD0drbkTF{?&ng@YIDsfgqsJ=c`4(>3(c{-W~cu;;H?RU=b9qz zTvEG_(Dy^N55YbS?2YW>W@o^ly|O<^8c>}R;3s;MZF!$XN|9_lw~SUQ?OVKCKUAAU zccmLXyb4h`h=EImBmxnv$+~IT!2*+6^Xks^)H7<~YUE}e9pkBUVzDOLNJtZEWZ`S5a6?f#CQcy*OArDKr0p2wWr>q2V# zkeCd6WPDB&$WzQyru^iy>dWFKj$-i*=O9A1a}}{5=QLtbyKu5gzR>xx;ls_Qf{L!^S?Hek$- zg!66>l3Ov%GP$jY2}E);967no=C3;e<=N@@R!(l)Bf06tL2{cu7jm0E7joNFAvfAJ za^qDax4A%Wb7gWP%Qzr`+;H89U}jtrh_rn?Cew^~yaztZ`r0$T=!{DYkIm$`R0+Tjmis>Y-Q8sirThHG2XRGW`@t@HuftgjS%Am7& zqE?yF_M^y1+@aoWw6_|;*wg_gCB0$UCJtpb6{Yo-w1#B|rX;_>J;>lS(&{)9&BtiC5`3tcat5^xU#( z_mzfm`77hJ!?RP*S~-so{FO2$QDUAX=eck@PWX(A&=AHYHN;1la8QQou83Y-K@e@Y zjF7(R9G{h$L$wRE+vZSB4lQ756ve{#jH~Q6=1f0xvR2oNO!LJ#aXSPEU-)vRw&TFS%ik5SR2gu7#6A3(hBkb^5_fm3^Unc09tGp>V%w23vxC()#c+Jpzmhh+ zI??&($rafLIhf7jlGuq-JY>J6;;qE_+>}ngr1Rs<;0WS%WQMoH$Gyu@X0Wog!Pu#8 zsP8s}51w#%OYf*cV*sq@(xT+hZ(=EU`tV{7(<#&g zrn(c$ReBB|rdRF03G!EFQ+VEDaup$53TYL!*Rh`dD2K^E$+0S_fuS^vmE4{T^2I*Z zYi+D#j`Fc`ZP|FEv7kM*Za~a)=K@1}7hH%aOh?=p1{I9Gid~gtTa7839V97?j7qYd z1)~m%L@??l9^_G!UbroolxS*KYpM@v6sF#Z{&S6@DU)&6o}H#ltXZ#c8paOh%-Gqc z8I!IURH(EgCD(Nb?~Fu@1jtGwNNJPdB~AYz)mI$`g$E*#UyN#YdSvut(POG6*JyIp z&A0>{s*RQThM}&`0*FkJ^Nk+u_yB1u3Mj)fEltmvp7OYYnygdOh)~M4-HE=6Q23 z+il{8N&6y+vq{KJnnKhoXvg#l^b6A{AjjX+?`RnB*Ojoc59$h7m(jpX%W!-6*Hzp; zq71Tl;DTjH^Iw&}gXaHQSDOEt`9BWV{!Uk#|CX*a|6N^ap2&RSj19D3(QWwB8uwA` zY|8=fc(XlcE^stO%Ie!VZ@KzLXhLkDUzid;uaVFG8%9Y!#Rbct)aAy!nv*fFHD766 zLX4b7B89%8hA0&E1X|7!Rq+p%4ECV7X^>HI8)>k!cPaMVGWnNP*ecCcG*^vjc<7xR zc46qE`9S_dZnLsJtLCK7ipcY!OHSlNXSG{H#|u~tUBnP+>v8C;EMCUxE>BaO?uCuv zlabKqJ~DKCAQhtbkc_^BkneL_ zbVeZxlYaDdYD$jho=};vLO}G0LMtY~5?}O8vWqZFK8i`A%ry=Z+>E8MZI5F!crjt4 zZqMyhgh?DL<4!v75q94{POPwg_BqQ_jyf9$kToB!u9~B|((^UW5BVM4Yi8QjO)72$ zZ2p27cD8@3j;6(8fjl>+bNcGQ0cmD<>t=0X&%$A{s5K3^uJ<9SCZO@vX_NldxFoo)n97G3d#GlCw}jui_g4deJu` z=$U5(=&cFs?uh&fw*h)MERfsz}$-pz%o!b@$cBa4Nbs0kMu+<`~ z8?gq~Q&ZHhu7TaI?u&a_OFyhNu-8Hi!)t%*IegztAETIE$9R9o<97H?5UQ@I(qx2I ztG(5}Q4;LCfdM;f`aVwu%5hOk^P%UiK*3H{iShoj$|OTbk86t5m{xOZe|!Gsz~=WQ}$Ih6Ib4O0F&N zTnH0V;B2TUb)zuJJzOOWrnA8$nss(uH;p#u4jVJURt_1b*$oF}668*UD>H;?jUy_5 zUn~Jg%;dXWqs(Zmip5Fh*!FLm&L8AS!!MMhageBWLtQmoT_vP(XPV5>AXOFy$*m#R zb|~E={Toe# z&4g%2->5WaGA&t>G3($8#ItPG8IslVn0GDCQ1fJ?M~4=ZTskJDOoxcIY*o;ah8hc zlO6pgv!k_iVCI~CQUWj63v+=dqXsCH7XxyEhX-~|zqtq21RkQU`zyeGCmuyZz!JZM z09j~DTQQuXnEJ18Ft4K!5Y#?Hzyo&hiy9Rl||9aDdgZ#Q;4AQW|Pnqrzgv;SZQh(O-V^J2}|%DA3z@^&Wmpa088%x z`UW|kRqhJ3c$5({{i95;5GQ%}Lsqq_81 zs3-eXNTMguMj{eC@Sr{*+6nFn?;c_9p=VU*C>o`};R;Aa3M&X{G76AXOI*UA;c1aH z?02#D(%f1>LD5z~{nm|q#WIP+%odUNl=)!bKCsq`m{{>6jSRNx2>UssN|s68p)Vvv zs}zmkuMBvZok||esL)0qy0}XIwI~LQ_QhJjYu1!PErP8tCV1nJUd;9wC80`}QDP!@u# z3kTKSRykOAleTMlY`Fn}(9566{sX(fVY_>!zP1Q3Z?VAu*Wd_EN&d4@OXEMsroz`G z#tVNgLKeKh(nWosD9SJcF~AUe&@ThRrtF4MJC0u+kmn-M3INxT-2pGjgLU+x^ay|5 zzED;tVym?2?iZW8LbE9s{#5arRh%)^U>$U8fzmq_LFt_@J9ngzjgEUNfzmXX zk)UKlbTw{I4&V_Kd9-sebiPAUdPlb7dZyBL#Vb>$H42!qe$ie#3v#B=);Fxs7dXTr zq;oL&I@!x%F^cuI86k~j{%Ge{>g_wlMI_ok1WT2B$Q`GqUfv&^zuIuqSghaAHZr!P zMLi0Ml8bTls9cQSrTw_3M@9B4fuR))vE_cpwov^9Jt7W=sLSJ>UsqfPdm%7k_}4-( zl7;0eD?Zw}hMCM^yGJ`OWHS>n%PWu-)|{vcOM()rHY>+N@p5l$Ckhy+~B0L47_TBjA}NYRb3(q zt+bJDvGxa=^|TXtv**}a*ceVg99?hkGA;L3k;j$zvhfK|=k`VMxxucjoKNNZwsJLb1fTk8=Tq!kJl=U*;8V)K*5ZUe z6nOC|6&rhkPq7vFMRFZ$<0bzl2l&*r8^A7l7=~ddbkfSm<$=dhcMjOp>g z?)@KNChs5uB%OX~=YP&V$s^iT2Z8>R8;n8tcX1iN9-Y-1opZ?Y7$m9<|3Agg|2gVJ zHij?pRKdT=C#3F2C8xmupXwU$|4H4;!*16gyW&2ziyZ%^-LgF^*KYGv2H@W*<{Kl0kTT`Co&qlLzyGmH|pv*T4xY3Ow=DRB}!ZD_C z8gUw>u5*Wz)4H-F>rO5Fs$I>ZTDtk3rS$f6;+~U~Ac2^x+J(8T`?qYAPHlrjf7~2- z%kN#q)?DM0h&fw7(<(V{p=xyh#C&f-yA>fW>kGMl!Tsr`0v@{GfFp-?Y(e>AkGlkZxcTX-+~zM09{7PLC@v>fZav)+D} zS%)Q1dmTt@!JCvCLla11tV^UMx#JFLqcM*QQy`a8onrgl;K%P?KJa zpm8Mmg35#gOyb<&wE~Qx!X$PqVRHMz z@*Wu|eREA7<)Rk{!>+^Tnsvgiy;Bh+-uaS|Sy@`FhFuFJbRu6$9vOCxp(pM-yila* zv@vaqf8I$i5mh;6&p#Jc#<9?Wga)md}RTGQK0nE+3NFXPy&=8Pf`KO zFv%;R9Nb$W7Cbn~E1-1NQKGJZpa4oe6?`u`#L;O7ms8k5N4pV}k{+Y?R#OYqw5hBX-T z5)dv2eGRlauy1L@#`v}-C4u4wiS~6iOH8+0jjXM|wOE*5U!>s>k*XsBSDBP9k6U)G3s}olABrj1rZmG$il^y3#;|b?0gaonTm>B6Y)vAjb=7;+6l4< z2pWy$cYQ+ZsY6&k2OQgG1&($97bxDOlduibU?5*_W9&4`Wb;)mmZ=b5OwOQ86BTb- zOger|2jgFMCl>iQ$sbTRk998cRUPJH+MPOzmjxB)r`rF^D0r`~3vd0hA-q=w@1Mr` zWGf$H4CqXS{iOm_r3&aPfvtc(#urf=_4VSAapqf(3ZgW zgItSq7@L1_aB*BSj`04#@v{{(mC8>O@i!H&m@%t5yr#OTXHz7XA~TxxylXVE3o2BV zG8sie^v@LJWmF%UtTMwD>@h*t1c1>iB0Z;UXRG0hd-EkfI3VKKec#&ekm4rz3Jd?9 zxnPmNzg`QPLy#+IV3EK;5l3A&mob*} zO*=ICg!KS0DzY#{48+_Zi$>}K67I(G@(35pF5Sr3ZnTJF%R~WzK}t7KN}N7jO2e*& zH<9a1wqhstxW+(k<(t9}6H1z%w`hunT9lB%aZCi3mWXgHvWj_Zfu){fLaD9WZnu?N zr3<&ETU)KAs;ehD-;XZxZ22q{l?72TrP$NY-mhZeH@r=wkA2~{sfAxWNxtw)6D(@g zw5TP;mlOKvnzpF*lZ^b1|EhgrI$QZeqCUn_y3WQ-TL$aAqW!N${-g0buwB*B2RI*H zmydd$IDGW&<&zNgyu535lc4Rv@sTKq7%&_W1a;JjMBi;Gp|MfEp+TFSJEe=#9AFH2I4qv8vcTrzFf zI2DmNeBvPsy;($|pz|%>=zgi*8xtwTPX~a}*NI|7k--pe+U9gq;AWj_x(~@A&=I=L zTo|dfl)CLK5b9PZ@^0r!i^~ft4F(WNo+hg{3YPX{1K2RnU3B0Q$X&sbpjESy(F>qt zjs+%`1Wjz1`?2f|p91Fdz^k9U(22p6j}nkv>&QU_@Tmdm=bK@o#9py&5^au9__h$K zBNTe%L=DnO7tG=TgK1>9jqrVn4JuwpJaI_d=3_Miq#UvgGPjm`%E0GGJUA7yH`vyl zdg2HCN5;T`zI{XLrzR3`$7FvTeS6dy4(VIKNU8<2>-v42Q%H(oaMH4a1A2o$aNZ^d z3KUrYvj^U|3O6OB^>}SM+l+Ou(~jb`sF(H>7{lI*+k0EeQ{Q0QOjDovi;^pnE?c^9 zfxHhk7VipcHU}G*_S$wT33I4CVL6o~UtK=+833kJNzP@SYD&1IV!9f^uZiHRIMB!* z9RX18DDps}ppT-}7=C-{q#w<5t`w6FQ4CEmc$TbuwqQfomXyj(ITrhq3?{YQib?kk zEFs^-4~ZuoY{tW#(`lW4>9suXB5hH*eM>sMERcs6CiTLk1Xv2)@`imd@nd0(i4`2P zjDRz8GMy^|az?4y%LCk!Reo{H(?*tE(=_dClOmpe%Hg-I7|>j%fpS3eFMpCQZ2e)= zz)1Wb69YR(_FxH?E9{}4&qB7<2O6TxCtx@~Cfgb&TzoDjTxpIPz4*ie**!5@k&clK zM8lEu2E6n8oQKVR%F6YQjpD?uO$5`N^Dcus>?X*laLW0sbb9fc@yoL4!r%+5?M$aM zQ&X8OcKNsRGV^+=%nd#2H8QeP%U~87l#_Z^F^se6F6ry;QV+>xi0$~7?U$E@6GZ*i z1aUNSR^&ozSXh-`2*0KrKTT?Puvq>vX2p%!a_7Tz4AYWMv%2po`EB_>-r_*AkeGL( z_PfcSoqn@c@NJ;zq9)S5PDU6HyBF}r(ZX!`9XMnw)b9REhL(me#zB1VE&T9;>X=tU z*`s#nPi>kI16KfWt`{(A%@SU>KL9Xk7_P;v&1!G3ycytzA8{_s1) zPal4JxGABoF1K;#a@>m+p2~b@O0_Wkx?CdQiT%6hOZU|)4ppNy+ke9r3sQqL)i_9=9nOvQ!rZ}LD`MiX#^9YAR&y5O>h_*C&qv<80j&Qc$ z9laIP%OoI%E>nv`SKuog>cqXD9##NFX0Y+|wBs6-c-1(p2bDvCV^5pTehZD7r)Ti= z)Il(8E5NXxr8%G==ffUhX~K3V;?UvB>kj_heF`NH0E-&7WoE*)W+7{{kfj07TnATv z*@+$p+GJPA9BpMQx1J!BX@=}ys7A9KU`2hDJC6i1xiFb_uFJk((^)aCl=vM>`sAU^ znqgX}pbWKGKe4w=9IW&M3!DDKYRr%mUm@R_|FUdHHYJ&^YGSQilVh$WEQm*yFk#~+ zCm2dv>7zcXCTGPVU>KJxq2c421ybwqa~cQy9jpZK%O(t+fALgN1c>GYITMLNO){_I zY$*`$A3lznG;6l)`S2<(-5LUJf{7T8F$n1mD_S&zV@`mzc$NVM^auk{;+F7a=&111 zH8MHjFq&Hd7bSO~yXQiASi;amQ#l`V+zq$`6;Fbapnt>yO(-~wJiGD+aSY50bbq6~ z59+?o+PG(F?Dqb&9Y6d6rTk13iApt71OPYehD5?bDX&T+SM+>w^ag@bF+CGZM7WTS zDd7bqaMOs?+`7KxCp88^827+yk3krSkE^B%HYOijke=EfVPZv5Vzyj}P(WzhJzl6~ zK(%|aE|6ZLU5M>VD&lN5u*4)>kvc$cblj1C8HhWwBfK!}9pa`<`4j#3-=qorTwhU* z?!54PFb2}THg~90VaB?Km`B}0AFBCn^TI1d{j)5> zzE?jHJ^gEva+Rlwr+*DDS7aXN2L~=6yJ-dUo|vrQvg+^G__T3Q@}qH@o4pJ z8mPQFwG{xk*3fE@q+`xOxR>RVz5A1^;+Y4SikFoneo~eAk3;k^idDg4z>yBl&(RJH zj&xs4hw&ryNa;}$dTFx zN(Y5rcyUnZeasQqccFKg3BAjNYIE*NDT;mq=1V@^M*0by?lzikGUu#ToNk5|rW;~N zZVOGjINid5FH!KJviWbNkeg}%tb0bKozVO9Kt0&SAru2y@z7SX3fe zoJbY}!Q-8)bgzSZI{dTK3`?^3D#_wG$zrNW7VE4WraY_~S*+}{%mxYZxdB;B(;NoI zh{6lpNw-qS3RpwtOvq3jmc=my!Gy4F0;ZZJ2bb9w4kjx>o7Fo26 z(;;d^!O$ntpJU@@(B4w*GCVB22X(ezHWydx)KE|~a4YS}tJ;dIl^uEPu zNbzXLf^1B-^^=llTCK;Unuk76vC8}duofDQ|LBuV%+Uf$P6@9Oyb{2MXK9U>ikWCN z&NikpJ-{$3nc-OqCpZauoTs{43suB1C+6?m>M>xA9T-(-Rznb4Ow(|=OM@z$~bO2FR>9K^SCGEF)X`RLE zDOQG{1*w{-_(Qp4S<_utfR^d{0a`jr^qO>Kav08plXFWfv5~z&dvCXC$%+joG-TAN z2_uM5!{YQ>QF8vTxDbKy}~cHpann8{#HkJIUIKxE33QC^giT z`SV&{IKZ0S@g|$Ah!^{&RgS4Y#o}TjHJGE;BIS;Xd8Qr_pL;!@-+7k@mXQzgft;le zFuY|%lY(3)fa@vrMcc(JzqOqvz`p3Kgu5G|Bb{q*|_39V!5ltFEMIo>%g$CJ9O{;10)xhPea87HHkFo8tZ zN$HyM0G&@p;l*iD-fLfLxB4?GkqpylMd@tA@&j+QO-ocR5YvG<$tLY@VQ7JNSflsf zH58*XBY+VDnv;`#=DN(rGvm$8cG#uLt@4C7II z+InW=VGk#YIb#a1jcH8u+{Of}(U>r^^D%_ERW-l!r)ey(U(>w_Z+OG0RXN%q9t{7Oni7raCfa~ z3?7Vi+=2shXd$l$t7vRkYf@F%HOJtZEHSIbRlGS{?qkKY$8SMgpcO^^X~v8v;3U$X z0SCxu5WxbgJ>$gTz_;QV;CH})|DNTfBpN@dEtyDSM5o)FOfj|RvaEz$mAikmid>a% zfLxo(d?-%vn3gH{%U8j@(lTjNuF+K~EtC5>Jiss4eEyBAD4f;9_x={C2z+=JZ5GRG_N_4@B9^P)Wf!FrA~Q z(<$l(V1SMC5G)TvEa`-7DCZaG7>}-C(Kt(^OTWn3*~CwY+p=w1P|>a1iOff%GCkR> zW#JyqwANtd-i&gu=(GTRnV;PDf0|)#G?)a%SR1J|NhPt2obkYhd}hgKC(Ks_!Gj1h zWrP^{iVQJ)y_6&`ARk;jI`XLk)(!ilC`Ri-gJN_d?>`cGqop!SMBdUz8<|UseDGy~ zk;9-YGgO$5KFA&y75dEI4p2W3YGmKZ3!M*I;eX2uORb^L3<@FQ23-i74)Vi80v*9rs?XuIJOI zNzL%-?l*-q-L|`LOWJ!-S7k~N@L|pYQto+hRz7LV4uZ3FYT-T{kiu05LGBvlP=ZI3 zpEPB1b6Kzoxe>)AjL#W%3N&sC{5qW1gz zZ}!zE`_mzD#T8ga+2=oazdZINuCTBu5t$-8-|xlyu@@w*Y;gh4q-p-}laicR)A)6) zr%ga-D7GAA@0fAqzf?&{+x^$_aAnyp@=RjF$wxSOyz@*q=g@ojC-Y~*1xo48)4XD|eVDvv4_lxOhi~$xY zMM+`cN8CF{H!U5n zVmavA7FP5HWwWtJUiYtTU?_N1TCeJ)=cbX0kfK-tCYt~FCTy}-Buo$)3;?q5%oqkk zQyx?*zqNEgD>as=QYa&WI5()Ypn&v{&=oU(y9Bx>$eK8Ul!}?|J5(l`<6Gl}$KQ(h zqJ2n z+f|s&xduopco(qJk-?B7ugPSmod=TZi9<&(bO-qyWGIUBYC@)5VrG5A>dm8|mi$E# z1w%G72_u59sdqt3%%+b%jcHlpESHXY*Odaq@qSOuTE*K`gwk_s>-e zpUQ8jFV$Wo-;xwA{yI^M&;hVTrG-M*2&@oYjKX{U@F0~a0gdTTKD&UD9l(x)ju6vy zfE;XzGxz9yd6ntkwE&Y<^c2Gz;5~&Mq4px;OvSRVQA_8qE4QLlT`(~+k?9kREE!H@ z+8K{YtFWWoIAt_W4iEon*1o(DPD+^pm*qtu+%Oe^&6 zY1v@RK%2g1f-#{`1C?44x_Uj|MBcH$+3rkdzw1wz@lu<1A*cM5KO!35u;bKNOJ|lL|9Wj)sDKVl0L4O7YoKaH~FB zoA{;#C8AD(lKUHx%!0`n{Hj$lSf802tj`=~SF%P)iL8uKGIxD(n|K{FTzBHMGj0`X zafpj~`i)zmqn7=j)*B-~u`k%Nni^Q^gA@xPAVHZ+1dLD1TvQV+m=OaA&xu~*EOquG z$d{6G5^*fL!6AB_tj|U_W9A?gjLe3oRJwx(I48PcMH4WHZrpS)=teG6>7bLM4b^9U zqDPNaX+u=!^2&_tf;LPW8+R%>ue<^{;W1r7G4(#djDDy*qwE|lYh2rN?B zD?5P8iz6uIVR6JKTq$`TzIirC$nOF@X>FnNG^eMq_Mtf^jet_oQ%LbDU%X5a(bHgx zSExvh!F9L`OC#_a^i%N~9PnC;T5>DheQ0^MZ`mHpP^KwK(v2j*T@Y56VjZ6%5eW8dv?En#lw2F_Wj2rN`OdA~Qk!jHX#W%DJ60 zKMZz%)#ak`L1%tuMEFPJJCbKB_;SqLTH||g3#pB)klKqXf}7|YJvV)O|hiPN=RY8V#EhObn~>RRpLC*O*go?^TB`4VFQt=_J_4=p);&L10E^9)y;g zdBWe069I^l9(=p}R0-$;vyM$!l&YK3EL##}MW!t_HR?->?ot>Z(Or`A0njpf{abxg z26MPp!bbXePM{!g%%szMC=xlQq83qxx}BC*0&!5bNi0)_y5Yw5CeSf=C3JnSf^E-b^WTbWez+_yM#S-rAhoK(o2=GoMew?fF@A z+uUXl@~m&lUdo-dsh9#NtTgk7Sk9{PhP>V4Jt@TcvD*#qeYyGX>dh>%K?>_f&V&`8 zauHdf<6aI~d3l*TP~TKpA-8ZNWXrK!*c>Rgc2r(!NA;QNj^RQ-%Rw53FO)4yBoz`I zhs%qQ0QAg}ET+3+t>vB9FHnRguzo3hR=+?`nxOin)X`P{#ngu3UubQNchu`rYkCJV z1O4_(br>s3#Gu(D%HV!g9d*StClCe!F!N-Q7SE6`QDxtYiki*pWxSAPrQ4Hyk~wdY zMQR@3Xu&XH<@q&eLX;lEzy#plVi+EY&L~EMYww*&d+T(z{2f!r=MjbMnV@UV;(?Tj z53OM2?8Q*3a-dNzH_|Y+keAa578S)o%Daj}@X-(AGv#n^#DZ%g=hx>d@>3jj)SNx7 z^b_;BvUxi$8{``ImXd{b+ZwBoTg=#epkW%lH0<2cloJm|VSGy|8n!Mn+MV5x)fL6yHfrYQfhsM9F&Ea& zMUdpo@-YOqW`$(e3Wd(MtnkZup|dP2{2OmA`W3%nb;4AREBk++7nWN4MOabJBw|fJ za=nqgl^=sza+=$qDl!g5kg&ILOPHVGN<()vl)R(|(Tc6vdO2*(WGsFaHhS<|Qdw9+ z(+{X(U2D?? z5^>QId3kBIM!z6h=yyO<6i335X6LfKT55-L!LGs{QFTWvW!bFDnj1h}rNoza# zk+ZT*Y;A`%9y|2xT-J7C(6~fXoQ3BrXxunWDQH|HUe7ZqKn=`^5!(!fZ9!C8%s@P+ ztbudOOMyKr&KNcvVDs391KZv_h9gSt8(O$={0`tIlo#59O*=!7R%^1aeR7p~!CRe#6@pRW<&m&hh9Hfg<}H+n1?g!76?u^gYBB?i2^oLRd3E+0;*H?KTi{+S zTwnobx1!E?NCJ|$hc$b!Ho=M%mu_4{R+NIoG!$fu#T=Z7PG4hdI1^H2r4?aQAeeFH z0_BL`{|^OqcRP_`RQ!Vh%!S%!6W3H5fxoQi!BLF0sCcOnixq9Jw1l&&c7{ zN(AD78(y#%g89pcV%&-`gA&KWw}=|Xd}BdN+w^K#+to50yaYGYY7{A&#HUW+VZvLp zBK9>i`OpA=t1$QhnNQL#MV`^JEj^={VWDMT{nVI5kIGu~$BwWvBO0J>^{Tig<#`&yEA)9qK%IU}cZ z@;ZW?*~Z-ENM^QY&vViC>>YR>ZJ+G!6TQuR1-~>v2ahb#;obMm*#w|zJ9QI^!%wL# z15U{Be|g6(69=m)O}-ea&ERrbuhM)`$zu*Qe}|gd;k9OL_K zb`+JWsHoK1?X|`X1?=aytK#{`22kO&KzZ0=s2&2XKDhyUGmL@>Bh^6=88baXAjXF+ z&}jQWPF1XrtJ}OgClJp?5TgVEHW&?DBHg5H{>&0*JmFcBX2ytKN;bZah`1p>Z~hX2 zZiv%cDs}x*<@NHU75n3Cy3M9jT40;f0vl(+A7_1xd$xT7oFv_hvwyy{z&5D`HYV9s zswTD(mK-25khz&xA%!lu-s~X&tOCjBuY`+Jy?NcnH45lTf@V!$5dlFy)4b<;Jp8}Q z$lcv$4`>WAe4@*s@^fwxjwgDvu#LT98-yNQ1AfF0P}#&37+K)~9iX^D3 zZcWAcbzu^wx;0I8gGco^rl7Yu-3IHK?@ftu#*JMMlZ}Mx6G~f_?iJ@U1qZA}S{TNf zwquRP+I;wBeXKFWZNk?!;fwT-$60*fUicDk6TZ47d~slPh~J=^@FmH+S&N|fO{u?4 z_}Z3kiy<4xFd-=nHb!so0wRgb1`e|VNd~@%mnLMG<3$@)QgbPTJ|#n7Hwtryv^&bq z*fOpGiVX7v(HM%jNUP=|tvX*;6^its4YX_Vs^541xQ%JGtuw9l?L3qb4=25N!hw+< z3Ax&cv&!1^NJtfy%yo~1RH0+vYGSUh8wn{_qx+e%*KoVZ!~PW?$&pBbsFbwGsH^)$ zZseHK5}q4cCNmXPP?DyQ%B~km;%72RX0L->n5I`Rq`QtAooZ>82tT#1jY#419N&~q zd8wi|{PXFqV7qJ&w##O>T_mML*ekB8mQU#we6%E5tk0$VwsJu5J5>2mFYFk}M7WQY)&;HeiclQuUtCn}I=AQN3Tcb)c_gFj;+liRN_nPCw(RQ{}GK@1adp#P?w)PT_&W2!Sr?Y8o zzO`@jS6H&)Fq=&Kbe$BT&cLC%7_?-Zy?I0Ea|A%x&!Z_~6u%bz{@!wBKhMi5`*|Mg zFh}g?86Zu(A#t1>svr^T+bxFAYDe$BAPha)a_2;#5WS^OVhtxGP|m$iN!2l>&++@)hDBuGu4#2k5{5M`_Y z%R}mrJ-BDeB6PIjl3MtifS&6qwkJlBsQELpSE0N4GrU{Q+3=i56_uLGg=5LgGUzK3 z6#H^oeX=Ao-@tqAbSC;P66rvbGcXGYV!a%i>GgCEr0~$%Q-a@lPb;5@LKD)0^ zui?#M>omy4nM2X$-IJV^3TH0>>ZQAIt3bEb7`8O*7PIt%SKtmdJb z+!U=>Wx=}PE&VXuJmI|9%Sn7m&Ff*fB2XDs43IGLYVmzOy647h&;Od;`rmbGU^h{N z`t?$+R7l*{vx{|0f6ZHxk3^NiNc5#$USFklVxo{mY~10b$;E?4v$d%c`)kv0J6)fw z-&((Aod25qm+)VD>%LlcmJG)A{q*AT{>#4kdLliQD7p_5(@HuT*lkO-AMGq;AN^(f z>CSq;akR5QFCQee0}5R|`(Di?X>f88ZF{8g^VwT(S9SjtSz6ETwk42!9fKDSHh%s{ zTWk(Z8BZk*fn_Ao2*7tpR6Kb(ijC~OT#1OgP zR8-WUXrdCudc%7_6!22W6+xKVpee6NcdTw;*9)nb zm8@(PjmMiIVf!@ynI2$?2-v*24HM=&P+7#pDlYtJQG7Na<*da`ttOp~nNJG5AuV&h zxh4cUZekke-z~3qlLfzg?VgF-T2c*ahyvdDL|WdovCX6y#r5vp(zwS@M;l3ru!Gh7 z)Q#TD&_2&bgHIQ>L zC^sFJpeWxRA$H6_?B((J##R}tk8!@+)`<*KxkJ1X2eDFTJ~ux|RW5o5XKu>;Ow^ji zuZev*etNb6I}Zvjp8zoPX45r|w5rq&(q;oH_QB;+cUf&8v1Wx_KEj%Lg(|7B4*iqC(;hmq%|N3tjbzV-KjjSmIECjY`BNp5?x2&4gE0i z3IT-<25ygfdDYH+7<-FWNDZ$fy^KyJ%9-RX( zrv}H4fo&&RSUOPbF%3+rXEji1FW-9eg^a40Gh|Ve8|?f8eEoEGER7y`f=w& zE(rk6s%L>TW8yyM#b>zKa9k8GoQICYM|i5T?L_WX!~3#r3nUt3*v)4iwZ`b)On!xD zJTk>oZt7z8bZr1U;+4FhA6|2v7Z~>3sWcl%OGl*c`zFpNRn@7Ws#J2KGGJxgRLecrNb&DVcZ`q zCux`c)+)v+2@YBd?o+3z%19J9VRk4|@aVw)LRc7;JfvWHa zjwpOv&R8*=6i)^#T}$cgY_lT}O#{);y;8&XE(Jp+0r!ic4(~F3B{6ESsd`ThrbHSw zY`cOA2by0o!kCU~d7eXLySpqq51J6-3Y)+E!T{IaH4Y(i%$TAV=1_cj#QkT#k zjm^R+{Tm7$Grr_&X7(zt7OCw%RhW68VF4VzoIWKafjKXW&*m~>nxfS3Em8K}iy1F$ zAVYu;MsOgT+#Zp71ZUwu&rvCfkwUR}IjgQHNzD|xTpGE3)W@tW%-0;$!`KGm_Kq0o zZ-)Yz(h_;09WLO)?29h;9gPwyh41P?bLxHZO&SYI9E`@T>2ocmrs--vqzb6E=k)FI zqAdLzz)1g=8nsXTyMq4RsaCABvbJ3wLkbGGWz{2)^1r~#Z9fNu+Sx70L7J+J&nY3b z7b-RhyEmyuq;%29!F0*39N;C7VYhixqzTuIsm&W2I2qW`I1uv94^-+Fu6MxVpxv$j zd1v96sSI50?d{O@#2O@$rZQ~G9m574Zk!5Qy?mU0@jr*~u2@^BNXd(DjF}p*wfbG5 ziKsXkHu*Tv0#9Zg#u2&+go_AGEjh6{2v7AgEFdtniSXqM1tp*Z=T5hdah+}B7r`B2 z-4e(sFh!RpG$wRu-yJHg!tA4krJbz?6b#|v1SwhkMYiReu#$mhZ+5L@z;R81{H_=y zA6d)R0qRz66?Sa6v(YHB2QK1`VX42YWJoz9`E;TP9HAK##)neUY9FMW@yPykQ1iaN zD3pq(tyK-Dn4bix1BGoiZPHjhvWJW_IvGeHGEU1gNIcIa7$sP}n3IA?O745GEM`sz zEl+G3uaSCl9^5fNS6G1Hjk1^LnfX*ylwFx;I?<$(+C>{yDh>i|m0m)vb9i3_9{rt^ zbhi|soKA0EAo6kMB`tMovUN;(1ywoEE2zuLbBcB_EawR6`Bbnd=TKu_zwgH!C&yg< zd7g<&Vyt)6dKn%bY&1frMQan2^}o^ue<+(z<)vD|2q&!=S{mZ?rTmj)dr%t{76)( z_B+ zjD8gTXY}LfC(%!%hob+8z8C#lba(XC=v&d(qI;qTqkE%&iT*wMdi0IxzUcmFOZ>s; z!_h~gk47Jh_C&Wtw??0hJ|5i`eIoi~bbEApd`EO=^r`66(PyHU#qW#WAKe^%D0+Kz zW3)Tk6}>gOG=5Wb*xY$(>xoY~ZrSqVPg?s2>z?tETCjJ8KFk1mR?h+Y}JD!MkhGP)|dI=UvhIC@2NNpxv+S#){y z>*!a}1<}^%ob~5!iO!2&bmrfm_2SL{aAEwCzxwOv|MxTg?uGy3f4<;vPy1g#i#Bfh zd35^UTok`NzBu0Sr_cSf|MsjuJoS&By*)nViumLwuUPqeCqCu(SFd^M3FpPxs`KNg zJ$-B3K78@~1q+WDUv%Wr+v1}xi!X^s`sYWH=qpU5#_hc%Orh@vz1fc*D5b z%ZT7BVhrMHOJW{;lLrKctx4`HXO}ADUzK4_N`S5@5*}Qp2lv|p(}-GfGMl1= zl{4scD4TDPQpt$vypw{arCfQ8(`jxHz3NG*rlr$h?|Y?3_Ap%vAxdWBhW?pd9X4q| zCj(2E<=>25B85omSvt@fY+UG6HR)%Kt=wxyPx-o+`lcYtf1y8SP)pJB-<+Vh*{5Az zuD4kWTwYMys8S7KKef%7AayS_n@J&9C_JN}oMC74HtSP z*&1g9)O?TC3=y=_#x*v5$GoGasK(=(&D*xpzEvpWa(ax%O_`TzbKO|Gy*jxj&Zbkt zSE-?GVQ3D+!H+?*?BCniS8i zEwPH$iOH4B<5=DqdV2aAF_vwm% zV;s^9n2l~={u*&}Wy#t|)o}+vv`$=gW!IXkjmrmT;XH3nu?_{8|>o!D5I?*bF4 z3mPBwZ-I@xwM}o`Le{L-{Os3)${rF6a=|L^m6!!M6^@oR&JolNV;(`#usOY;VkF`c zNxD#CcA>)q{ueO?xfwU^Hx_-LxCDST3U$QWPSzyn#jKv2=b8+ghF~|riL&t*h`&-l zxSfqr;3Kpd&ZAlCEpax7oDaJkO;@uZd0yi~jCF}FLYiC`HXg;0jamz{3)JNgsIVdc zI&A<|)g0PzPn>O4p_?fLE10?wFH?#4yKinKnDlFLwoO^@b6H!6v&k-0#(T+Fm<_E< zz8YuWQO0{LBRX05@m*!S+cNOj3}g=}{f|ng1L87B%C*TG*wj?{?{fK@+D$py$^E`^ zZz5NralofNTeKwBLe7BYj3`H{LA&%Ez4EYLc_*)=`92n@V-qZ>VP?Uzr4+6JgBZ~z zY{HR>Z!tHm%djuk(JzOYNy$0JED||eNl4_}2YC8dn;BC*J2=}xEqVuo#kOZC3KfI^ z8M|pBi(A$wZ!Bj&QO1pAFx_LF60fjkrF81La`sadc)Q*Z#O$@}%h}JA`?kVsoo^d< zhkkXYR2}m$1TU}{!|?*kWh!`m^7?Z2bJhP=>QA6G?e&PJlB{KloZS-AG7C?brn;`& zcr7Jnx60WMReUFja+-P&nAQ}w7||E=-9Jp%vx#%YvMiaLX5UidT6nPgZ?@jvj>g0|%yI9FLDv5|1x2#K)bv;?*ta`Wu^`+Jt z=QlgMR1e<3g9TCu7IE1Hq8^DtJ`7bI#qa2JVQX>Yc8Gcg_luJ|W2>NqLV2HFzK)j% z)8^V_TRFR583M>)x^P``UOD?$WxU3fKtQWM%!R(JoPARdUd@9=>4;{57NDq0!>S{gccqloZ=`M3o;X0p-TXxD-S|5nIOCl8_xuR#ij-t>h@wkI=CI}4n11g z$B;ma(lE7`=w5-3RKHaBgqi9xomojk&SOcbEu&7mpXrqP#TrO>D;gJ1QvS>~6^EhL_{&|fnEJMEORB9=;#HZ2|->(?( zR+68_jYrhj>>L$4l8IUdz0_LFk27af%Vnx1Ew4#F5@%N_<5Dupk~&a|4O%;X4t=T! zT$NPSCdr55>}r+0B$TDk5-zUW)bvR`y_ly-*0)Yo->!^{$S`F6COc;;nitFgU! zZ9?vy%H3|ci-p3lW^zBP+zZL|KqN8*6!olmv2n2hK%n7kv-KBA1DlW~+9SWb^x zo7@y-A64$pT&_-Gm9eV*l`9sF;;fN(MA^qwOmt#wp17172_aD4Pxb2Ri;_Pf zDK-yjlXa`IeoPk8bkuv4$aO#_s>LOhQ)Z+A&v4_@{;gqq>*IRsM`TrC_^(jnha`s6 zqj_Bow_w$Bx>$C{(dx_5B7(QY*=tqy2d*qjVL<@@3X0b1$>dxO&7R@#_S`Hz|Pwh5}k z=`of)Q(EcJTGerbUU`65$`YSsyjdCFBx6k56)uI@3>g)&^iP$IiedA>xhJHRq(hq^ zh0#saKe}EuyhAnoD>aOJPer@ZoHNQ&R$gnSobP^8^3FKBNu{K>!(}bwUCI#oEW&P} zVq6&6KPvAV6|I)+ziqk zWfB%gI@dG_flLR+XzC!^VVT=Dp|Nj{vv;d8Usq!!1W-X4%h}RGcEydil0D7~lX`l6 zoV`u&-Ae(W^o)dzw=3fwGGrl{a)(t&Z*Nro*U0CiV4avbT?$<}wLL=gvG1dJBJIfg zXlkDw5aN^s)BNm!kdUU2c0h<%NU3!kZ{`?%@SYfydwiW_LB6wWAa|=hU!^?+Ca$C5 zjW=@7ur%JlRSn*y0$(NpD6+RI@y{e+E_%b9BiZ;Fn>6@K(+iueidb}QtFGO;6axXD52yRNWxjNS1a*(5=X2~ zUL9qxQSvU5<2;+o{pYxk()lj*W`PU6S*Xw(r|LC7%)`~mwGn52<8`4h25y#eFXblJ z;>tdZN|(*qquZG-mk$J;aKCYdvngjzh6yo+uZpr3pZSbFQ-~{|sE^-pPAXZtJ`f!F z!b@#l5-Y_BHWw5&0XFN|t)-1uMKVTbWu?~A>~KomX{Gk$(O&zE0h_(MU0OA^eP{B@ zD4WmA=<8{TGrGNB>NQcekX&ix==-FOAoWS5BnOo7Gr6rkp`6Uc1rqw4jg$9r@*E&h zI1&$yoEF^^)Q$oFB&W(8_#^&FPM?gOP1-Zwo|Au3OQ>xRwOOp#n1Q;~8q?Rb!^110>_`fH zbn@py$3?Z_tD(zz9%K+Y>+{B>c#dU9QRzphG{j`E8?$}vX!1X7A7eU!k1r-IfuqO` z=$S~37gREz9sF=a?;XQyAGGQT2Nrwf>(Xl(LSwGtonrH61Z_@dQ=JwP zNOeVRh@IenEolM++*v}MAE3_M-^Mw4R;J{$7-|&Ft}GPH;ast_!6nvSfr-IQjRz{I zO)iT{X5`9~%c7D|BKRG5%P}N)7bO9L5*y%OsM9%6J2eVt+`JZR-0^p=R@au&wVUah zOaQi-yEKv~Qx1LKyUo1p@B(=q`~(3%pwG_Gs1)5m66G!Obf@t? zCHXwQb#?l^*6F*=KF&Qc)Myikh0#|AsGfg7K-NHSfMYG>w`5gx%If4JQRAa9GLmTn zxHhf<#;!7kF!Vb#D10OgX;=OPvI3b6Em$bD!GLMrhJ}p}7~6CWpjRJ=vahRG@4{h0 zBeHKOaT8q}hSnGI&V9;wr}g=Ga|sxEIq!h%c~MQ2@yIhZ2Z#28;v>K+uI3=pJ~})S zL^dohAI~F+3~&PDCOmXfL@YFipk>(*<-@Kjj<=;yGvUm{>+XrN`_sqqD3Edg;}s|?out{Q(u(2JCZw(*P8Dq z+TA|?uloFMK0k_R{iYH(8uauHx~Rn}0cy%J1`&Ea*y*f#W>Jv(%m#S?KE@1^Due0b& zKpZl@r;IlR#POWhBTkSd2a7o2z27L}d?d=gueM8DKM2HG=#b{dsIl82jYF2*QTA`D zZ3neARww6XPaq)!pdWI6BKNQ7ehfosb~?sHD6(=(ls$?3*BJ**m=j`Z9F^=i@~)#S z#@iZ|Sw{M`q~(0HEeOe5PTp&HPs|IaEjh=N^J+@j1TQqT7v3d)X`Ik;HLlitWxQQRPWcDc?Q^rQ>CvS;s^~3-hwaw|-*w508=E`1R#$lP_u239(#5=#XEU-I zI1Qi%P6H_Et^w3WcntpPmH~XT^NV^XHD{w?Dr}9a*AR^Z$$FAFIk&k zlKqp~yq$+-@h>43qN$Rc)%bf^e*@-pm(E&F$Ao0JsQ5ODkFj*=+)(5kf}DMkmo)w% z%YCokEb#b*W2uaJah#*lF9{Uc+t6 z-LeUa^qTHfGEq9)ng2wDz(C|$+!A#g@$9gG8TXRx<7(8eXjBslzD#l(A*I0n|oCSaK**ltjXbOyta9?5lDEeUsKN&YyOFyA!4k z9l0e^4{34Za5`pf4w;HwzsIB@jyZq*Dp$oj-0jm};aVpBWv+@T{AaES*Dv|>7rAQT z)ffEr^Zt65zkbeN*&N!+eb!$;{|T-atAV$1 zbCGU7&W%E=Zsn?2v0Hq44_5_=qE*}!8 z-|sWt$2BF5cA5QB81x=)exaLpb0eqJKXTQ&vv>LHP5$~$e|?9)N(E858@c{m6}+7r zxs%?;brILMa+QB%7gsr7c5?lp3ciJ#W4XTBUvJ6{SIG-C^mvJ69M)_N~F`WRB@p<*}oO)(b{iXHnOG=+z$KvDqzw6mobVZ2V zqw7oR&V1fncUt3%eflh)MoO7QeWp*p$fy6V?hNY}`usC|`fq*u1@-I)s{e1;t5(<3 z>)Cg7-Q=Hd^wKu5$mQo_$x>|6b1?*7f=I?8mzPH49mE{i}L*o-p|@ z>)FdiGS91L=PUgebr)Io=XDq4^Jn$!Wy*hU-9_U3X&re_`Z;_@*FUKf8pw4+-Gw>) zaXq_C>1X@vAJv^Z`&6I)L&j9kpH)YH;QHU{Za(@Ha7*d+43VzSth+h*ll}D>bvJ9a zuI}di{=lc#`t(UYePZ1?)7RA9%-QO?bD2NAp1n@>KFwcO)!m#^R(EqvC$NE#orwUW6MB9mIIZiVdS+9L<34=^n63PU z_3Uf9E~q=bGwLq*gw<`oP?}}(-_wJSu6jay4HP~J>h?>bYDGtL{}DQ{aV*vf9(NJh1XT^R@X}11?@2rZ)w!KE0ho2 zU#@GZUca?o?LW7Cj@EI)0H ztqacxJ6~uYL(M{S+1#%BgVw4#Xssu$vVRRCp14MBkJ*#xeTPO(Yz&Mw)qMo%UN}ehM{I6|%cBI)L7xg`AeCb=aK0ibAd3wOtcYJpI0XvDCXW zDA3~`q14&gzhTQhl8ee`;NH_39Ue_wAR21K4btN@MfZhp_E*cr2m@1UTMbod zvlc!x|FpJU0}e6fnt4??uFXvjT(zA9P82I;PjIi;p zpLUXbh)vA$r?hFh2ddz3iYi*m@(|51Ao-il_gm;OG-oU$c_~b$`4rL^O>J4=HpNdSQGMT zQHegDQCt@5w@Q``WkdG(e4)4qmsvkEr^E-v05Fi*-|by-)GOYd7It$BM`U7ZYwy-3 zJ~deO5M&A>R0|1xh0GiUtS@l_nw#|CNRz;Y`VzgA_fs_s;t;AePsPm6FX7UgVAOJdm8K(M&D zaRT(gC-uZ^aE2qe$0OmXVFpiaTTLgX1Rgk&TNvLpE)Ia#M6q_lb3ikBXXi<|mnGx) zq>hss0>}U?KQ2qM0tg}1Sb+lCbP$t$M&~MDu|HfmvRIKorRK$K|BoaA58V>}v;=sf zvzt1DDGn|42NvDaQ&y{bG?;r>PEeT-0&CZclncaCvhad5;+$K0SJ7{6yJxIjQt$=I zw8XxWY`D8{0ak)&1&$Cyl1p9tFt&9jrs8-6`9|84mjeZs!eoFgNaMCpL{0$PwYEV4 zm@3BELu54pHM{8?J!LHy4{JLe>Xro!*G-`#TTileH@kCEM^-tr4Q_cHrjy_>M>|N< zP*M5}7fD(q`%pEg?rgZ1+K<3OaQa4a?1!+E>?$1q5+!-$5X0J%M$`Z_w23<*t<$T1 zsE=pM5IC3Xf2#*{1$5R>4)swt34rTSMcO%=tsa-f6kT=RmMvTO(34h0Ex0TsM$3Fb z)YWIb$CR$WAd1d)gPfLxB4CpC$&NGa zg3G1swt}rR4>u5^y`)j|-iQ<5BIs+1%(61UGK#gVR8+{QUmZoUF!Vl-Ac;WxDBHm- zd`TOWgP}X(ma=XGTkJu;H#w+Q%Ib~--q!2)*}_*ik`&n34k`aTI78tvGP2Gv z|Nr?eXXiWmkOuwh5+Q13TD{a;sm8Uwo_e|8@$?m?9Pr}m$c=7>u06KEYh&qc4#7h^ zSe+!9{1*rdYR7%CF1aY8`s%c5>6rErV^;CQI4{assvkZAls$Ik;xA3Bn`Hc=RzE?y zql)!1k0Vh9O|;pmo)VH*`Y2DFyh>}ysZvyzlzvcM8L7pKOAl9D{qW|}kE$)C)1uN( zt1{5XOOIBWzaxD?4-1n>U);lFBjqpeX-NlDDIZ{V*abawQy`pNf(KK9b-eRi2n=3T}REp#~-(Nuzq;4d9f$S;7# zE^u+{EleX9Bq<&!_au)A0+VGGeVZlR(>kfhy-9)xdbFYyqrofTh*+q89PoZe5MCY zS@*NF9rk8=LZfvLi8Mm#jXX6{&ZU2nh!@HiP z8{6~!Gj11jJ%cnB`e)o8(e(`C828V(UDWjq@;K5z<&=u&%6bmm1%g+E-l)2a~nOrSLFWOBr;I*R8ABqD*B9#f1vLhSGj11Q6Rj7+jq< z8CT~C2@F^9p;LJ`XXZdM!&OGxaP?@9t1XYKi#@I~;)bh-PmQaX+y{%V^E#~6u+`xz zxn_|Vrk(`^Jf|rPx8;WT^QagU}}^eAq+Fzs5;CuteKTA$}w`D!$QNf`RP$PMlML7 zsQcrDoeR?^>3*5RR3|yoLJCZ^a!#s%sUC|}5=`}2tQ45)u~;cE)nlTR54^-Y$h z2hi9*&Krxe_s7=IYH4id>|yD8UCNW%=Qn8WMFq;msHVX>ik;f&q;+pX-MInChW{>MPJOxvwlk$K*P?937Ku&oXpOt}~V+b-6M}cd@Pnb6sxuVj5=T6r(g+ z31?(@g=AZLH)dGFRQ^K>BMiipA4V#p{*11|HMQl83s7S5Bt05kAnkRLv{~A@sB~cu z>eJ{>ykcXAK8z@4(unYq?QPHsLpB9k*nhtYrIeX##O6w-JLd6N>El?} z);1oxCKdxu3+8Du&Y9ss7s(0Zyt@leZLir8Q?-4y-c4y$RSWL(CndhmY zJ$l#>)DShVh;>@>Jchj5n0r7UakQH|&9uL}`vCPYbu3+#9MjsO=JtR{a(88K?c2Dd zR9YEHvAC#LIdAXV=>4Bg$XT)X^abCv*jed%G66<0QkvuQ`&epTFz3?Zf zU7Kf{Qa=-d?wDGvj3}B~`lw7T?1-*PnP8_De$--$`^=O{dGCv44#!wxuO@PFbZ5=8 zpv9`#Vo$1g&*quzqU&pJ7^CEnt8NtAzhxY_`qCn5EcK{ybf2L&|5xX z0_ZU^MBN@au)R06?d(gLA0UUBVz7wkyB_F3xpcawNYd#$+cwnz>yYhCyvB>DiWwD< ziobqgoaX*s6rZ3D%cZ9!qHKx%VpinPN1(3P#+q}W0o-zF)%M=EQV`}@bw1=+c3R%O zmE+NP$v(~DXs{UZcUPc!HeIYy2@{_()`yunY5X~JCxG>kr19BdxWpdl(}@W=T_|-B zQrIxJS2YAFJfWrzg_<;%$gO(X%GC{FW2gb@^sH)yA9$wS^f11m&q657$=3`InTC3f ze~18f>_b8uN~{n}cE~{TvQF~D14-;lx&tmL{noanpad18+byMHbPg2*kz!M6ye9p{ zd&5kB85ZB}O)$4*{!FQA;MFiyLu^u>5XsKmGg4GF+I(U2E(sl2IpWEw^`bKguc8don(Lwr z8zDYpU7|P3u}bi;X-dOKCq$%bO1u)5k5Q#gx?& zNBX&Qhb^>)zydwRmTS1XhA69cW?K0>y%*;O(!^op(Lqz86OL2Z5T1L@p;B3vSfp0F z%)vbPg?#K*mtPEuA>WiES|bOkFE0w+Q+F2Wv2q$4?c!F$TWM}KxRklwq>bcGXPnT` zx;drsZi*lLpxOq@jVis{t!wx-eHt{M0$=T7FwUK+F@GB0lIDYY)l~~3idy)2T>+Z3 zhzfD5pa7vf81k6%{&Zgvw#5V{O{9b#ib=!4#fRlBf=Ut3n%PFefmoHsYGcV$s{@2_ zUuDflM%W&W6 zJ2}5Yws53gbfKZ@+Mh5mG@P|FJmkWPQXeVE+>|b3Af81G<%|IWG_0M#N*pVaQ-~&0r^ff1^2!p-G3OKU-jvM! zj`FI2RasBV4oKZ=RR`#j$U=n^P)~M1AX?K%r3`h<6`L9A5G}Rrg=i<3E2jBlz({}2 zr`yn@{&a%=sXvOQq{Lso|kI+nPjuS1*`J5|a&1wxg$sYI=aI(d+`Y8Mw1?JyDD z;hr6GcTk~ie{Eviw!hBlQ3NgxIW(X^oL$UPc3)tYJ)5A4F6SJw&FP00;a8MJG7B}} zz4FCOVwk|h7^bXo%@+oSX!Dr%QY{);<>G1E`bfvPyUwm3FX+#V}pT zzfun;HS4eQX36q>y2^AR!2wH5wmdN7$s6t+=WkDPN2L7 zMg~pHuj`BoOvd(1F9EsQJZI5z(P`)2a$)ggEjL-J7(PNt7Hb^mt(3?C$Ll|Y;=NE- zj9D`dC7|VMW4VW+i1KC~%w7O66hX}ApBG9-1yNQL?udAY@6`7aIsx>!8P!pHF5JX7Yq+NNl3SI(7imWHC9ofIo{(_3ujk1`ns zQs=@J;cb02cZ2nn05f*u>qV+m>#n;+$$c<9M0`l*ZEJa9ooz0^dh~fYq1ZxtTpW;m$ms~a9JZ|4%KDdCs&GG)_t3t?ZUxJBk%+)?IIMq9;lM-Opn*hfTYIH+!PCb zgn-as@pycPlYoSF7z&pz>=gZ>a0MoE1nX)oMKks`0Gy8KChA0e?`h~(zpMb*C z*=eD%s<~~exfL2IC$w*)4-VD**M{JAJ&h9|3)(%c8|`{qJ%)5e(X*Y!9&$?l#<^1l zx-vh8N#khNkF2J8&cd_gN!%EbB<1hDFH@a0(cRV3M8sXQ8CrMRZ`00quG4$EcVqpju4ZEyYqwjYwm0MmmbtGpM% z`x&|>2uwzp%~5k+y~Is5^t-7BrVA`q%Df9x>YBI!)zHa`V@DA+;B=C8#-Yky0+q zuza(oRL~hvR*takAs-aZbw@r6PsP)B+R{8teG}ENHc1h7%)-kAuQ3%qw!1wfH($fn zHKu7}XB#{HB-)lw%hz!A5j1c(8uB3TR9TKgz1Z`%Hn+;gNt&A<6sD*s`}(yDbMr$s zH9zR4=6O}o$;^A9={iffDm)LJM*ULk>~a>M7Uu4mr?wPSd?7!jV9=7#>{OX#(ZR}i~w9?*Y)M%L+lCixt zK@qDH0@S%x!IAzM zx7|w=SbK1kf5vV15(Q-b6a6!8^Cb$1%&=f4atmPmG6Y+aU>MWmmL%AM0KX)`mJ0YK z3ATv9FG;ZF1%63FVc`LsyO2U?{Z^MDETG$>fP5Lke4mjoLkO!5@?{8N)j_@tK}N6Y zc#e*St{qE32>&EsR^gt&cstk~YLlL#>6P!%z@TUDQe*EU=AVuT=M~SB1Kd5K z8^U-!$szBa&>!KuivbE>vD)Z_uw75`v2gFu8{xX16ndi;&>La8o)mhcC-mk?{z><0 zk@wM?xA@*@edT?ULHF_obG?K*8liWo^~8IujP4DR3PsK~D=MMFSy>DU+b%25z^({q zeWSKB-#bs;w8z^?X%(7FT|sI=p1PKlR;AgqbYume1?01ru}+gK7R~Ltjx8fPk?Wl0 z%)4?uY#Hk`xz1g|I!&$&*Y~O`iE-3DyW3Znm+s>}yMx+A=I+aPkjn^)M-|L2{`_NNE+4rDUn@U|DaPE-SrB*Q1x0cIw(%R(hwdio3T@EZ*0ChZ| zknxidF%LBCmRSY2%kPr~4?Vnv91jL1?d4414wozCmd>F3}sg&(7;-O`mJuR&G<*kL}#LWr5ih+_qfqHQX+C zy}ORvw#(hYE$~y9&ga&FFjDe*B^?x%d@IS$u)m8`XV^bLsx$1jkm?NkouoR${&`ZJ zVgD+reAu%GNSTe}xXs6-!l-5U^U#l+TGN^1`*u|@F`)yHa}t=#N^kk3aZsli zQiUub=sAQ8Djxz2l-QLIrMi50MzK8Fk;{k66!XpSQvHRHMAdJGm$SgS%A1X%e0bl4 zkVICXDQL&|FYMrVsM(r6DgYnbte7;%>+jxJzY*~)IqC+$U+?TGzmWWz4gee~|i%IGRw$!fsYxW7V^ zLqw19U(OBVg7SaZ4E;p6p=TiO4OiCHbXC|BgIcfPev1~Q!b@@AIe-6WV8VeNi_hBk zrNw*-6;y4Jqwcu0!)pdg^> zT!Gna)e50HX;@-gUw~y^LUwAFSOs}YoG~r;yxo4ATkr4wKDUX>{Smi5PVg7p4p?s5 zTv2*dp(dOT5aNR`;Fe`7s`Nr`z4!ZaZoTXLYHq!E{I%Q;yP80YH?ZZAIvTGm-A|>u zEv+n_N9Wy0)n8t5yFxCVw4pCMCE8}WqC>DFP2*MU9VhFAUHfkR#w|GUIVuX5SQ>Wo zjZaW=ejAm0JRYB7KVMdPO|hRZx%=GDm$@4J&zu*b`9qwT+RK-_u$M1)oy~l+p0m_< zYa>=pai3k5B&FgTskVoN>b(w$N=kB3IYl{@A5oo{YCm6fp4or5O{Qv5F&)S#2($^n z5{np@3sYfDfPv{N`lWaYnUhpaI;kkhiNT7fwNn%drwnnD?QQ4Sg1U7((I_=XlQI3#M8pF*oRbp3_c4|(kL^EJn7G_?e?q0cCdz|ZbDJ$*k zpL<=@+hCXHGP_6hu$xq(9i*-x__{ow@(1&0J4|uFHX9?c-0>h^K9~>vrpvOSQ(vhX zm!qEEO0A^r(rouJMwqY$8*43Hv(3pEUcBxVMT`LU@lr`qmM{t3K@f{eQLA5*sZdcDq$+BoN-(X)v_aHoDB!v)a51{+lmeu4MQtri#LjxqX%`EQJf|2h3!#V zXG)5<>nhwY!3_WCjWIa=u^>@_-c-!}_ zDNATl8!2c#rC|?7`tFbPjNDziQV~4|4l7FEi6Nf2!M<;ir$?;;GcN-nFy-t4Hi4#5 zQP$f5JR1ayA?R4LMX@<}%Gxv-ppti32k6m~5=)Jq&xbVXR`eup9V&Ftqd$!nmns${ zv=>x>5eXHvy1=7?@aAzxg(@pE`GV_lEk^|n2i*-P>p5hZ3KdSHrydi)3Y)|hCa6+} z39hC|n4oM!$Vr&s+H&ZaaGKV91w;TX0wRz*B_dSW{(irNiMA0&V~?S18&WNfhQc8L#sjZNH~Slut9RIQKKc&JaE@o+tSjN>tZ zQF2@a5-J;Kxmv^`nm62lW@rCcmu7Oyh+|C1){ZsNTwXKQX7^6E{KE`+fwYVr}p>CydnsCxS(_dqJt+8pAc| z{&+K7Rr))_a5<0UkPr$52ZTCZeZ2v`gL))2t01L!8E+!=q)SdK7ph0*PL|X+hy~}O zdRJ^%eqb10NuI}>4#WDmb26S~wNA1-{Qy0pn)C7P*1Y_9f?TTh7x~5w@bQzJRMiQ# z+hd5112Y0E=YTY6fjAbfqUnoEgwG;xXOsIaDN>6|7u%||pmALviCPeXCN~~2UF+4B z=Ou}2QkjEutuzQXjaxWl!teGAt zeNwozkNqXYqv-gXLmGaxUf$j)YpI$Y2{*bOPGpu{_5j@g9r#A3(avXi%9#^ah~Utk zT!`ukw!6zmSM$PEO71Sk!1c%}xd^Cg@@Eu%5N10=g4fNBxD3pG_Z_EU2Z8(ml?V=| zuIegvRaf+-Ju&L3?xj{B_#*7azzTD8ao9}0Q$9ljt%u+($lbnIZ#_)DEcF;gLj3ON|{#KzwtLdXx}zqK<|<X-YfPFr5OTDOiPT*R&E_B1b6NGqm|E)T}pwc9xDQI!5*EMEk` zaAb-X!j%&aNy&4N5+XOJuTC1-ogC1OsGiFa0~|JX2yp7x#|-k}Q)V3OgH8gRWDE*U ze?kpkWVHKpINfbrX9_r(-UpmMP8UTTx9dvJfYYaS>)>>2Y$yDpQ2YUTY;q>>>SW(b z1VA-5KbE`$PcfS-EPl^wG)q;0WUTowu-f)2vcW0&5F3T*`XCG@jl0Got)$Y{4rU;9 z5{lc+$gR)PzfgQ>f2riMrgXLn}K-*e#`^2I*D~qop`6?n}K$I8@%(61VTpY zcbRv}*Z|um@J?~m-x=P?%8kd3IO`^-ZWU2M9OALvgp&;+p%0Of^<*E}X7q9lb;t>V z_w+B=uM7H@o@J~_TwpI>zUMO7=N$L=0NE#njqNqdFiw32^TctQy?o<#edFL*wEqSN z`f>u~0e0o5hy0lupZODwxB6vV&k;JqR`jt!k&fjUScAJx@1WLHq&s?7ozuAGKQo7% z6G*{5N2=omU`oRzU;na_lYC21rrL5(Fl6HIyUZ(NqL5q@{&LU7lJlCj`kiYtvxq~? zg&?9<&_hI&RAZg{^iUv=N4E)Gm<|bQh;-HQ_+i_#(|{szE`ew~#!3Ydg`zhe-xfPj zwI`M?6p+$SUwFL%B~nV^1X*Q)Fj6k2QW{znWR;dLaPAbxIgaoV<|Mqtn}Vp{d?Edi zpLfDX_Mw^BVN)4XCmcw}!FzaEHB)jMy-;Ukf-$YzR7e{6%#4YNVuAAsx^>bydpMTs z0JXPvaza2UE32w!+Gz!X*qTIV1USUunEKVpX!a^6a%a<}DgoZl;&#zJRl zr%VbyJB-|Mv?nMRj9ji<6h@9F8c5WrgHkR)>Bm*MsB6H2a$#L_2aMCFmK251&@N3T zoML_;W9Kw(Q#&V~T!}AH<0s4x<0owQXv>$~_-&8c4Q=O8*5PuDTdu)#j%3Qt0DX=A zE<%@$V`f`mPSUjvKODmkoXIKO+l}EAxRc{;fjd12`|9|_lfGN+>I_kSQq+|r>IGgUC-|Jz^cPIq3%iP zz^XE5@d2)9kN}T3d<8Mp4-fW1EgqAF)CY;p`AM>%M=+#Cm4|@OfA|}~=e-Wg1gvEy ze)4!gbdK|wRb9$HiO@rCEX1njsBACkk9q9!0>U&DrrPzd}{ zY@ayFobAgb%(ZH#7<;y_LJY5yUEb9i$VBotn}C><@+nFWH@=Ygum39>FRcYFGToxHfLx>vxglNgk*S=nw?ZGsMDFA?^A}l)Lm3LRvglr zjbLge+n|7vo6aSa%a-)96Cf+>hjd&wtNIxBnvO#Mw)w!=EDQ8*kZB6XiHSl*rFd{C z{m-0cIMcSOCR4#PLDkSX25sxXJ?3e`3WZF5& zNlsQj423((#zp~|2c06({^e0&c&6D!{C$ENjpU{ zIUiw(4b}-pGGzfXAQ27)n}Ds?J%-s6hN9np4Pd+N3

0$pYL~4Mgxgb?aItjWVtF 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 z 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 jJoT#%MVo=$y+u5aee)G(VHvd5EM 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"] [dependencies] -demo-runtime = { path = "../runtime" } -demo-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } +node-primitives = { path = "../primitives" } substrate-client = { path = "../../substrate/client" } substrate-primitives = { path = "../../substrate/primitives" } diff --git a/demo/api/src/lib.rs b/node/api/src/lib.rs similarity index 97% rename from demo/api/src/lib.rs rename to node/api/src/lib.rs index 59d0066902d88..233d82aac2bdb 100644 --- a/demo/api/src/lib.rs +++ b/node/api/src/lib.rs @@ -19,8 +19,8 @@ #![warn(missing_docs)] #![warn(unused_extern_crates)] -extern crate demo_primitives as primitives; -extern crate demo_runtime as runtime; +extern crate node_primitives as primitives; +extern crate node_runtime as runtime; extern crate substrate_client as client; extern crate substrate_primitives; @@ -44,7 +44,7 @@ pub trait BlockBuilder { fn bake(self) -> Result; } -/// Trait encapsulating the demo API. +/// Trait encapsulating the node API. /// /// All calls should fail when the exact runtime is unknown. pub trait Api { diff --git a/demo/build.rs b/node/build.rs similarity index 100% rename from demo/build.rs rename to node/build.rs diff --git a/demo/cli/Cargo.toml b/node/cli/Cargo.toml similarity index 81% rename from demo/cli/Cargo.toml rename to node/cli/Cargo.toml index f7e1645e426f9..f68997fcd5fd9 100644 --- a/demo/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "demo-cli" +name = "node-cli" version = "0.1.0" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." @@ -9,4 +9,4 @@ log = "0.3" tokio = "0.1.7" exit-future = "0.1" substrate-cli = { path = "../../substrate/cli" } -demo-service = { path = "../service" } +node-service = { path = "../service" } diff --git a/demo/cli/src/cli.yml b/node/cli/src/cli.yml similarity index 92% rename from demo/cli/src/cli.yml rename to node/cli/src/cli.yml index 54ec9bcd985a1..6c1fe186e793b 100644 --- a/demo/cli/src/cli.yml +++ b/node/cli/src/cli.yml @@ -1,4 +1,4 @@ -name: substrate-demo +name: substrate-node author: "Parity Team " about: Substrate Node Rust Implementation args: diff --git a/demo/cli/src/error.rs b/node/cli/src/error.rs similarity index 100% rename from demo/cli/src/error.rs rename to node/cli/src/error.rs diff --git a/demo/cli/src/lib.rs b/node/cli/src/lib.rs similarity index 97% rename from demo/cli/src/lib.rs rename to node/cli/src/lib.rs index 3483cdeb514e0..75cbf5d003f7e 100644 --- a/demo/cli/src/lib.rs +++ b/node/cli/src/lib.rs @@ -22,7 +22,7 @@ extern crate tokio; extern crate substrate_cli as cli; -extern crate demo_service as service; +extern crate node_service as service; extern crate exit_future; #[macro_use] @@ -82,7 +82,7 @@ pub fn run(args: I, exit: E, version: cli::VersionInfo) -> error::Resul T: Into + Clone, E: IntoExit, { - match cli::prepare_execution::(args, exit, version, load_spec, "substrate-demo")? { + match cli::prepare_execution::(args, exit, version, load_spec, "substrate-node")? { cli::Action::ExecutedInternally => (), cli::Action::RunService((config, exit)) => { info!("Parity ·:· Substrate"); diff --git a/demo/consensus/Cargo.toml b/node/consensus/Cargo.toml similarity index 78% rename from demo/consensus/Cargo.toml rename to node/consensus/Cargo.toml index 1dc8eb8367711..617e590b4b8e6 100644 --- a/demo/consensus/Cargo.toml +++ b/node/consensus/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "demo-consensus" +name = "node-consensus" version = "0.1.0" authors = ["Parity Technologies "] @@ -12,10 +12,10 @@ error-chain = "0.12" log = "0.3" exit-future = "0.1" rhododendron = "0.3" -demo-api = { path = "../api" } -demo-primitives = { path = "../primitives" } -demo-runtime = { path = "../runtime" } -demo-transaction-pool = { path = "../transaction-pool" } +node-api = { path = "../api" } +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } +node-transaction-pool = { path = "../transaction-pool" } substrate-bft = { path = "../../substrate/bft" } substrate-codec = { path = "../../substrate/codec" } substrate-primitives = { path = "../../substrate/primitives" } diff --git a/demo/consensus/README.adoc b/node/consensus/README.adoc similarity index 100% rename from demo/consensus/README.adoc rename to node/consensus/README.adoc diff --git a/demo/consensus/src/error.rs b/node/consensus/src/error.rs similarity index 97% rename from demo/consensus/src/error.rs rename to node/consensus/src/error.rs index ddf663b103635..01823a8e50384 100644 --- a/demo/consensus/src/error.rs +++ b/node/consensus/src/error.rs @@ -20,7 +20,7 @@ use primitives::AuthorityId; error_chain! { links { - Api(::demo_api::Error, ::demo_api::ErrorKind); + Api(::node_api::Error, ::node_api::ErrorKind); Bft(::bft::Error, ::bft::ErrorKind); } diff --git a/demo/consensus/src/evaluation.rs b/node/consensus/src/evaluation.rs similarity index 92% rename from demo/consensus/src/evaluation.rs rename to node/consensus/src/evaluation.rs index 12270373aece2..9d4d5b0911905 100644 --- a/demo/consensus/src/evaluation.rs +++ b/node/consensus/src/evaluation.rs @@ -19,12 +19,12 @@ use super::MAX_TRANSACTIONS_SIZE; use codec::{Decode, Encode}; -use demo_runtime::{Block as GenericBlock, CheckedBlock}; -use demo_primitives::{Block, Hash, BlockNumber, Timestamp}; +use node_runtime::{Block as GenericBlock, CheckedBlock}; +use node_primitives::{Block, Hash, BlockNumber, Timestamp}; error_chain! { links { - Api(::demo_api::Error, ::demo_api::ErrorKind); + Api(::node_api::Error, ::node_api::ErrorKind); } errors { @@ -54,7 +54,7 @@ error_chain! { } } -/// Attempt to evaluate a substrate block as a demo block, returning error +/// Attempt to evaluate a substrate block as a node block, returning error /// upon any initial validity checks failing. pub fn evaluate_initial( proposal: &Block, diff --git a/demo/consensus/src/lib.rs b/node/consensus/src/lib.rs similarity index 96% rename from demo/consensus/src/lib.rs rename to node/consensus/src/lib.rs index 766066087e311..002b9e170775f 100644 --- a/demo/consensus/src/lib.rs +++ b/node/consensus/src/lib.rs @@ -18,10 +18,10 @@ extern crate ed25519; extern crate parking_lot; -extern crate demo_api; -extern crate demo_transaction_pool as transaction_pool; -extern crate demo_runtime; -extern crate demo_primitives; +extern crate node_api; +extern crate node_transaction_pool as transaction_pool; +extern crate node_runtime; +extern crate node_primitives; extern crate substrate_bft as bft; extern crate substrate_codec as codec; @@ -48,8 +48,8 @@ use std::sync::Arc; use std::time::{self, Duration, Instant}; use codec::{Decode, Encode}; -use demo_api::Api; -use demo_primitives::{AccountId, Hash, Block, BlockId, BlockNumber, Header, Timestamp, SessionKey}; +use node_api::Api; +use node_primitives::{AccountId, Hash, Block, BlockId, BlockNumber, Header, Timestamp, SessionKey}; use primitives::AuthorityId; use transaction_pool::TransactionPool; use tokio::runtime::TaskExecutor; @@ -202,9 +202,9 @@ impl bft::Proposer for Proposer type Evaluate = Box>; fn propose(&self) -> Result { - use demo_api::BlockBuilder; + use node_api::BlockBuilder; use runtime_primitives::traits::{Hash as HashT, BlakeTwo256}; - use demo_primitives::InherentData; + use node_primitives::InherentData; const MAX_VOTE_OFFLINE_SECONDS: Duration = Duration::from_secs(60); @@ -363,8 +363,8 @@ impl bft::Proposer for Proposer fn import_misbehavior(&self, misbehavior: Vec<(AuthorityId, bft::Misbehavior)>) { use rhododendron::Misbehavior as GenericMisbehavior; use runtime_primitives::bft::{MisbehaviorKind, MisbehaviorReport}; - use demo_primitives::UncheckedExtrinsic as GenericExtrinsic; - use demo_runtime::{Call, UncheckedExtrinsic, ConsensusCall}; + use node_primitives::UncheckedExtrinsic as GenericExtrinsic; + use node_runtime::{Call, UncheckedExtrinsic, ConsensusCall}; let local_id = self.local_key.public().0.into(); let mut next_index = { @@ -408,7 +408,7 @@ impl bft::Proposer for Proposer let local_id = self.local_key.public().0.into(); let extrinsic = UncheckedExtrinsic { - signature: Some((demo_runtime::RawAddress::Id(local_id), signature)), + signature: Some((node_runtime::RawAddress::Id(local_id), signature)), index: payload.0, function: payload.1, }; diff --git a/demo/consensus/src/offline_tracker.rs b/node/consensus/src/offline_tracker.rs similarity index 99% rename from demo/consensus/src/offline_tracker.rs rename to node/consensus/src/offline_tracker.rs index f060d50d6b942..18845dd68b213 100644 --- a/demo/consensus/src/offline_tracker.rs +++ b/node/consensus/src/offline_tracker.rs @@ -16,7 +16,7 @@ //! Tracks offline validators. -use demo_primitives::AccountId; +use node_primitives::AccountId; use std::collections::HashMap; use std::time::{Instant, Duration}; diff --git a/demo/consensus/src/service.rs b/node/consensus/src/service.rs similarity index 98% rename from demo/consensus/src/service.rs rename to node/consensus/src/service.rs index e361e7a8c8512..08bfe40af6d0b 100644 --- a/demo/consensus/src/service.rs +++ b/node/consensus/src/service.rs @@ -26,8 +26,8 @@ use bft::{self, BftService}; use client::{BlockchainEvents, ChainHead, BlockBody}; use ed25519; use futures::prelude::*; -use demo_api::Api; -use demo_primitives::{Block, Header}; +use node_api::Api; +use node_primitives::{Block, Header}; use transaction_pool::TransactionPool; use tokio::executor::current_thread::TaskExecutor as LocalThreadHandle; diff --git a/demo/executor/Cargo.toml b/node/executor/Cargo.toml similarity index 92% rename from demo/executor/Cargo.toml rename to node/executor/Cargo.toml index 1f770f2c5f43a..4fa548d42f961 100644 --- a/demo/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "demo-executor" +name = "node-executor" version = "0.1.0" authors = ["Parity Technologies "] description = "Substrate node implementation in Rust." @@ -14,8 +14,8 @@ substrate-runtime-support = { path = "../../substrate/runtime-support" } substrate-state-machine = { path = "../../substrate/state-machine" } substrate-executor = { path = "../../substrate/executor" } substrate-primitives = { path = "../../substrate/primitives" } -demo-primitives = { path = "../primitives" } -demo-runtime = { path = "../runtime" } +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } [dev-dependencies] substrate-keyring = { path = "../../substrate/keyring" } diff --git a/demo/executor/src/lib.rs b/node/executor/src/lib.rs similarity index 97% rename from demo/executor/src/lib.rs rename to node/executor/src/lib.rs index abd7490254cfe..ff515bcf406f7 100644 --- a/demo/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -17,13 +17,13 @@ //! A `CodeExecutor` specialisation which uses natively compiled runtime when the wasm to be //! executed is equivalent to the natively compiled code. -extern crate demo_runtime; +extern crate node_runtime; #[macro_use] extern crate substrate_executor; extern crate substrate_codec as codec; extern crate substrate_state_machine as state_machine; extern crate substrate_runtime_io as runtime_io; extern crate substrate_primitives as primitives; -extern crate demo_primitives; +extern crate node_primitives; extern crate ed25519; extern crate triehash; @@ -40,7 +40,7 @@ extern crate triehash; #[cfg(test)] #[macro_use] extern crate hex_literal; pub use substrate_executor::NativeExecutor; -native_executor_instance!(pub Executor, demo_runtime::api::dispatch, demo_runtime::VERSION, include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm")); +native_executor_instance!(pub Executor, node_runtime::api::dispatch, node_runtime::VERSION, include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm")); #[cfg(test)] mod tests { @@ -52,17 +52,17 @@ mod tests { use runtime_support::{Hashable, StorageValue, StorageMap}; use state_machine::{CodeExecutor, TestExternalities}; use primitives::{twox_128, Blake2Hasher}; - use demo_primitives::{Hash, BlockNumber, AccountId}; + use node_primitives::{Hash, BlockNumber, AccountId}; use runtime_primitives::traits::Header as HeaderT; use runtime_primitives::{ApplyOutcome, ApplyError, ApplyResult}; use {balances, staking, session, system, consensus, timestamp, treasury}; use system::{EventRecord, Phase}; - use demo_runtime::{Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, + use node_runtime::{Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, BuildStorage, GenesisConfig, BalancesConfig, SessionConfig, StakingConfig, System, Event}; use ed25519::{Public, Pair}; - const BLOATY_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm"); - const COMPACT_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm"); + const BLOATY_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.wasm"); + const COMPACT_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm"); // TODO: move into own crate. macro_rules! map { @@ -490,7 +490,7 @@ mod tests { twox_128(&>::key_for(0)).to_vec() => vec![0u8; 32] ]; - let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm"); + let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.wasm"); let r = WasmExecutor::new().call(&mut t, 8, &foreign_code[..], "initialise_block", &vec![].and(&from_block_number(1u64))); assert!(r.is_ok()); let r = WasmExecutor::new().call(&mut t, 8, &foreign_code[..], "apply_extrinsic", &vec![].and(&xt())).unwrap(); @@ -511,7 +511,7 @@ mod tests { twox_128(&>::key_for(0)).to_vec() => vec![0u8; 32] ]; - let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm"); + let foreign_code = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm"); let r = WasmExecutor::new().call(&mut t, 8, &foreign_code[..], "initialise_block", &vec![].and(&from_block_number(1u64))); assert!(r.is_ok()); let r = WasmExecutor::new().call(&mut t, 8, &foreign_code[..], "apply_extrinsic", &vec![].and(&xt())).unwrap(); diff --git a/demo/network/Cargo.toml b/node/network/Cargo.toml similarity index 62% rename from demo/network/Cargo.toml rename to node/network/Cargo.toml index 3329f779b4719..16e79910b62fe 100644 --- a/demo/network/Cargo.toml +++ b/node/network/Cargo.toml @@ -1,13 +1,13 @@ [package] -name = "demo-network" +name = "node-network" version = "0.1.0" authors = ["Parity Technologies "] -description = "Substrate demo networking protocol" +description = "Substrate node networking protocol" [dependencies] -demo-api = { path = "../api" } -demo-consensus = { path = "../consensus" } -demo-primitives = { path = "../primitives" } +node-api = { path = "../api" } +node-consensus = { path = "../consensus" } +node-primitives = { path = "../primitives" } substrate-bft = { path = "../../substrate/bft" } substrate-network = { path = "../../substrate/network" } ed25519 = { path = "../../substrate/ed25519" } diff --git a/demo/network/src/consensus.rs b/node/network/src/consensus.rs similarity index 96% rename from demo/network/src/consensus.rs rename to node/network/src/consensus.rs index e6650bfee8291..5d422ea55d05e 100644 --- a/demo/network/src/consensus.rs +++ b/node/network/src/consensus.rs @@ -15,16 +15,16 @@ // along with Substrate. If not, see . //! The "consensus" networking code built on top of the base network service. -//! This fulfills the `demo_consensus::Network` trait, providing a hook to be called +//! This fulfills the `node_consensus::Network` trait, providing a hook to be called //! each time consensus begins on a new chain head. use bft; use ed25519; use substrate_network::{self as net, generic_message as msg}; use substrate_network::consensus_gossip::ConsensusMessage; -use demo_api::Api; -use demo_consensus::Network; -use demo_primitives::{Block, Hash, SessionKey}; +use node_api::Api; +use node_consensus::Network; +use node_primitives::{Block, Hash, SessionKey}; use rhododendron; use futures::prelude::*; @@ -200,7 +200,7 @@ impl Future for MessageProcessTask { Ok(Async::Ready(None)) => return Ok(Async::Ready(())), Ok(Async::NotReady) => return Ok(Async::NotReady), Err(e) => { - debug!(target: "demo-network", "Error getting consensus message: {:?}", e); + debug!(target: "node-network", "Error getting consensus message: {:?}", e); return Err(e); }, } @@ -215,7 +215,7 @@ pub struct InputAdapter { impl Stream for InputAdapter { type Item = bft::Communication; - type Error = ::demo_consensus::Error; + type Error = ::node_consensus::Error; fn poll(&mut self) -> Poll, Self::Error> { match self.input.poll() { @@ -253,7 +253,7 @@ impl Network for ConsensusNetwork

{ type Input = InputAdapter; /// The output sink of BFT messages. Messages sent here should eventually pass to all /// current validators. - type Output = BftSink<::demo_consensus::Error>; + type Output = BftSink<::node_consensus::Error>; /// Get input and output streams of BFT messages. fn communication_for( @@ -285,7 +285,7 @@ impl Network for ConsensusNetwork

{ match process_task { Some(task) => task_executor.spawn(task), - None => warn!(target: "demo-network", "Cannot process incoming messages: network appears to be down"), + None => warn!(target: "node-network", "Cannot process incoming messages: network appears to be down"), } (InputAdapter { input: bft_recv }, sink) diff --git a/demo/network/src/lib.rs b/node/network/src/lib.rs similarity index 87% rename from demo/network/src/lib.rs rename to node/network/src/lib.rs index ffb7789601b41..d24c39c0e6c71 100644 --- a/demo/network/src/lib.rs +++ b/node/network/src/lib.rs @@ -23,9 +23,9 @@ extern crate substrate_bft as bft; extern crate substrate_network; -extern crate demo_api; -extern crate demo_consensus; -extern crate demo_primitives; +extern crate node_api; +extern crate node_consensus; +extern crate node_primitives; extern crate ed25519; extern crate futures; @@ -37,7 +37,7 @@ extern crate log; pub mod consensus; -use demo_primitives::{Block, Hash, Header}; +use node_primitives::{Block, Hash, Header}; use substrate_network::{NodeIndex, Context, Severity}; use substrate_network::consensus_gossip::ConsensusGossip; use substrate_network::{message, generic_message}; @@ -49,7 +49,7 @@ pub const PROTOCOL_ID: ::substrate_network::ProtocolId = *b"dot"; type FullStatus = GenericFullStatus; -/// Specialization of the network service for the demo protocol. +/// Specialization of the network service for the node protocol. pub type NetworkService = ::substrate_network::Service; @@ -60,7 +60,7 @@ pub struct Protocol { } impl Protocol { - /// Instantiate a demo protocol handler. + /// Instantiate a node protocol handler. pub fn new() -> Self { Protocol { consensus_gossip: ConsensusGossip::new(), @@ -92,13 +92,13 @@ impl Specialization for Protocol { fn on_message(&mut self, ctx: &mut Context, who: NodeIndex, message: message::Message) { match message { generic_message::Message::BftMessage(msg) => { - trace!(target: "demo-network", "BFT message from {}: {:?}", who, msg); + trace!(target: "node-network", "BFT message from {}: {:?}", who, msg); // TODO: check signature here? what if relevant block is unknown? self.consensus_gossip.on_bft_message(ctx, who, msg) } generic_message::Message::ChainSpecific(_) => { - trace!(target: "demo-network", "Bad message from {}", who); - ctx.report_peer(who, Severity::Bad("Invalid demo protocol message format")); + trace!(target: "node-network", "Bad message from {}", who); + ctx.report_peer(who, Severity::Bad("Invalid node protocol message format")); } _ => {} } diff --git a/demo/primitives/Cargo.toml b/node/primitives/Cargo.toml similarity index 97% rename from demo/primitives/Cargo.toml rename to node/primitives/Cargo.toml index b517210d1951b..7d8b81c7ad5eb 100644 --- a/demo/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "demo-primitives" +name = "node-primitives" version = "0.1.0" authors = ["Parity Technologies "] diff --git a/demo/primitives/src/lib.rs b/node/primitives/src/lib.rs similarity index 100% rename from demo/primitives/src/lib.rs rename to node/primitives/src/lib.rs diff --git a/demo/runtime/Cargo.toml b/node/runtime/Cargo.toml similarity index 96% rename from demo/runtime/Cargo.toml rename to node/runtime/Cargo.toml index 3bf3b5af928db..2a775928ba745 100644 --- a/demo/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "demo-runtime" +name = "node-runtime" version = "0.1.0" authors = ["Parity Technologies "] @@ -30,7 +30,7 @@ substrate-runtime-system = { path = "../../substrate/runtime/system" } substrate-runtime-timestamp = { path = "../../substrate/runtime/timestamp" } substrate-runtime-treasury = { path = "../../substrate/runtime/treasury" } substrate-runtime-version = { path = "../../substrate/runtime/version" } -demo-primitives = { path = "../primitives" } +node-primitives = { path = "../primitives" } [features] default = ["std"] @@ -53,7 +53,7 @@ std = [ "substrate-runtime-timestamp/std", "substrate-runtime-treasury/std", "substrate-runtime-version/std", - "demo-primitives/std", + "node-primitives/std", "serde_derive", "serde/std", "log", diff --git a/demo/runtime/src/checked_block.rs b/node/runtime/src/checked_block.rs similarity index 96% rename from demo/runtime/src/checked_block.rs rename to node/runtime/src/checked_block.rs index 045bad863f8b3..bba748dd15fd4 100644 --- a/demo/runtime/src/checked_block.rs +++ b/node/runtime/src/checked_block.rs @@ -54,7 +54,7 @@ impl CheckedBlock { } /// Extract the timestamp from the block. - pub fn timestamp(&self) -> ::demo_primitives::Timestamp { + pub fn timestamp(&self) -> ::node_primitives::Timestamp { let x = self.inner.extrinsics.get(TIMESTAMP_SET_POSITION as usize).and_then(|xt| match xt.function { Call::Timestamp(TimestampCall::set(x)) => Some(x), _ => None @@ -87,7 +87,7 @@ impl ::std::ops::Deref for CheckedBlock { /// Assert that a block is structurally valid. May lead to panic in the future /// in case it isn't. #[macro_export] -macro_rules! assert_demo_block { +macro_rules! assert_node_block { ($block: expr) => { $crate::CheckedBlock::new_unchecked($block, file!(), line!()) } diff --git a/demo/runtime/src/lib.rs b/node/runtime/src/lib.rs similarity index 98% rename from demo/runtime/src/lib.rs rename to node/runtime/src/lib.rs index e2c03aca9649a..928702523fcf2 100644 --- a/demo/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -55,7 +55,7 @@ extern crate substrate_runtime_timestamp as timestamp; extern crate substrate_runtime_treasury as treasury; #[macro_use] extern crate substrate_runtime_version as version; -extern crate demo_primitives; +extern crate node_primitives; #[cfg(feature = "std")] mod checked_block; @@ -63,7 +63,7 @@ mod checked_block; use rstd::prelude::*; use substrate_primitives::u32_trait::{_2, _4}; use codec::{Encode, Decode, Input}; -use demo_primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature, InherentData}; +use node_primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, SessionKey, Signature, InherentData}; use runtime_primitives::generic; use runtime_primitives::traits::{Convert, BlakeTwo256, DigestItem}; use version::RuntimeVersion; @@ -88,8 +88,8 @@ pub struct Runtime; /// Runtime version. pub const VERSION: RuntimeVersion = RuntimeVersion { - spec_name: ver_str!("demo"), - impl_name: ver_str!("substrate-demo"), + spec_name: ver_str!("node"), + impl_name: ver_str!("substrate-node"), authoring_version: 1, spec_version: 1, impl_version: 0, diff --git a/demo/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock similarity index 99% rename from demo/runtime/wasm/Cargo.lock rename to node/runtime/wasm/Cargo.lock index 89017d1a91d4d..32b36ad8355d3 100644 --- a/demo/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -77,7 +77,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "demo-primitives" +name = "node-primitives" version = "0.1.0" dependencies = [ "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", @@ -90,10 +90,10 @@ dependencies = [ ] [[package]] -name = "demo-runtime" +name = "node-runtime" version = "0.1.0" dependencies = [ - "demo-primitives 0.1.0", + "node-primitives 0.1.0", "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-codec 0.1.0", diff --git a/demo/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml similarity index 96% rename from demo/runtime/wasm/Cargo.toml rename to node/runtime/wasm/Cargo.toml index 198e8c6280ad9..f77e471c75c22 100644 --- a/demo/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "demo-runtime" +name = "node-runtime" version = "0.1.0" authors = ["Parity Technologies "] @@ -28,7 +28,7 @@ substrate-runtime-system = { path = "../../../substrate/runtime/system", default substrate-runtime-timestamp = { path = "../../../substrate/runtime/timestamp", default-features = false } substrate-runtime-treasury = { path = "../../../substrate/runtime/treasury", default-features = false } substrate-runtime-version = { path = "../../../substrate/runtime/version", default-features = false } -demo-primitives = { path = "../../primitives", default-features = false } +node-primitives = { path = "../../primitives", default-features = false } [features] default = [] @@ -52,7 +52,7 @@ std = [ "substrate-runtime-timestamp/std", "substrate-runtime-treasury/std", "substrate-runtime-version/std", - "demo-primitives/std", + "node-primitives/std", ] [profile.release] diff --git a/demo/runtime/wasm/build.sh b/node/runtime/wasm/build.sh similarity index 90% rename from demo/runtime/wasm/build.sh rename to node/runtime/wasm/build.sh index 0769faeba9b3e..9fe3f0ca10d68 100755 --- a/demo/runtime/wasm/build.sh +++ b/node/runtime/wasm/build.sh @@ -2,7 +2,7 @@ set -e cargo +nightly build --target=wasm32-unknown-unknown --release -for i in demo_runtime +for i in node_runtime do wasm-gc target/wasm32-unknown-unknown/release/$i.wasm target/wasm32-unknown-unknown/release/$i.compact.wasm done diff --git a/demo/runtime/wasm/src b/node/runtime/wasm/src similarity index 100% rename from demo/runtime/wasm/src rename to node/runtime/wasm/src diff --git a/demo/service/Cargo.toml b/node/service/Cargo.toml similarity index 66% rename from demo/service/Cargo.toml rename to node/service/Cargo.toml index 8b38012870e17..7926efdafd244 100644 --- a/demo/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "demo-service" +name = "node-service" version = "0.1.0" authors = ["Parity Technologies "] @@ -12,13 +12,13 @@ slog = "^2" tokio = "0.1.7" hex-literal = "0.1" ed25519 = { path = "../../substrate/ed25519" } -demo-api = { path = "../api" } -demo-primitives = { path = "../primitives" } -demo-runtime = { path = "../runtime" } -demo-executor = { path = "../executor" } -demo-consensus = { path = "../consensus" } -demo-network = { path = "../network" } -demo-transaction-pool = { path = "../transaction-pool" } +node-api = { path = "../api" } +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } +node-executor = { path = "../executor" } +node-consensus = { path = "../consensus" } +node-network = { path = "../network" } +node-transaction-pool = { path = "../transaction-pool" } substrate-runtime-io = { path = "../../substrate/runtime-io" } substrate-primitives = { path = "../../substrate/primitives" } substrate-network = { path = "../../substrate/network" } diff --git a/demo/service/src/chain_spec.rs b/node/service/src/chain_spec.rs similarity index 97% rename from demo/service/src/chain_spec.rs rename to node/service/src/chain_spec.rs index 8fb6413ab4b7f..0765dbac8e7ce 100644 --- a/demo/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -18,7 +18,7 @@ use ed25519; use primitives::AuthorityId; -use demo_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, +use node_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, SessionConfig, StakingConfig, TimestampConfig, BalancesConfig, TreasuryConfig, ContractConfig, Permill}; use service::ChainSpec; @@ -26,7 +26,7 @@ use service::ChainSpec; const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/"; pub fn testnet_config() -> Result, String> { - //ChainSpec::from_embedded(include_bytes!("../res/demo.json")) + //ChainSpec::from_embedded(include_bytes!("../res/node.json")) Ok(staging_testnet_config()) } @@ -42,7 +42,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig { ]; GenesisConfig { consensus: Some(ConsensusConfig { - code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm").to_vec(), // TODO change + code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), // TODO change authorities: initial_authorities.clone(), }), system: None, @@ -133,7 +133,7 @@ fn testnet_genesis(initial_authorities: Vec) -> GenesisConfig { ]; GenesisConfig { consensus: Some(ConsensusConfig { - code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm").to_vec(), + code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm").to_vec(), authorities: initial_authorities.clone(), }), system: None, diff --git a/demo/service/src/lib.rs b/node/service/src/lib.rs similarity index 92% rename from demo/service/src/lib.rs rename to node/service/src/lib.rs index 3d29669366e65..10384e5f3a122 100644 --- a/demo/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -19,13 +19,13 @@ //! Substrate service. Specialized wrapper over substrate service. extern crate ed25519; -extern crate demo_api; -extern crate demo_primitives; -extern crate demo_runtime; -extern crate demo_executor; -extern crate demo_network; -extern crate demo_transaction_pool as transaction_pool; -extern crate demo_consensus as consensus; +extern crate node_api; +extern crate node_primitives; +extern crate node_runtime; +extern crate node_executor; +extern crate node_network; +extern crate node_transaction_pool as transaction_pool; +extern crate node_consensus as consensus; extern crate substrate_primitives as primitives; extern crate substrate_network as network; extern crate substrate_client as client; @@ -42,11 +42,11 @@ pub mod chain_spec; use std::sync::Arc; use transaction_pool::TransactionPool; -use demo_api::Api; -use demo_primitives::{Block, Hash}; -use demo_runtime::GenesisConfig; +use node_api::Api; +use node_primitives::{Block, Hash}; +use node_runtime::GenesisConfig; use client::Client; -use demo_network::{Protocol as DemoProtocol, consensus::ConsensusNetwork}; +use node_network::{Protocol as DemoProtocol, consensus::ConsensusNetwork}; use tokio::runtime::TaskExecutor; use service::FactoryFullConfiguration; use primitives::{Blake2Hasher, RlpCodec}; @@ -97,13 +97,13 @@ impl service::ServiceFactory for Factory { type Block = Block; type ExtrinsicHash = Hash; type NetworkProtocol = DemoProtocol; - type RuntimeDispatch = demo_executor::Executor; + type RuntimeDispatch = node_executor::Executor; type FullExtrinsicPoolApi = transaction_pool::ChainApi>; type LightExtrinsicPoolApi = transaction_pool::ChainApi>; type Genesis = GenesisConfig; type Configuration = CustomConfiguration; - const NETWORK_PROTOCOL_ID: network::ProtocolId = ::demo_network::PROTOCOL_ID; + const NETWORK_PROTOCOL_ID: network::ProtocolId = ::node_network::PROTOCOL_ID; fn build_full_extrinsic_pool(config: ExtrinsicPoolOptions, client: Arc>) -> Result>, Error> diff --git a/demo/src/main.rs b/node/src/main.rs similarity index 98% rename from demo/src/main.rs rename to node/src/main.rs index b59fa2eb97cfd..dca5e5ed90967 100644 --- a/demo/src/main.rs +++ b/node/src/main.rs @@ -18,7 +18,7 @@ #![warn(missing_docs)] -extern crate demo_cli as cli; +extern crate node_cli as cli; extern crate ctrlc; extern crate futures; diff --git a/demo/transaction-pool/Cargo.toml b/node/transaction-pool/Cargo.toml similarity index 79% rename from demo/transaction-pool/Cargo.toml rename to node/transaction-pool/Cargo.toml index 94eaae111ae7d..be889642a8173 100644 --- a/demo/transaction-pool/Cargo.toml +++ b/node/transaction-pool/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "demo-transaction-pool" +name = "node-transaction-pool" version = "0.1.0" authors = ["Parity Technologies "] @@ -7,9 +7,9 @@ authors = ["Parity Technologies "] log = "0.3.0" error-chain = "0.12" parking_lot = "0.4" -demo-api = { path = "../api" } -demo-primitives = { path = "../primitives" } -demo-runtime = { path = "../runtime" } +node-api = { path = "../api" } +node-primitives = { path = "../primitives" } +node-runtime = { path = "../runtime" } substrate-client = { path = "../../substrate/client" } substrate-codec = { path = "../../substrate/codec" } substrate-keyring = { path = "../../substrate/keyring" } diff --git a/demo/transaction-pool/src/error.rs b/node/transaction-pool/src/error.rs similarity index 97% rename from demo/transaction-pool/src/error.rs rename to node/transaction-pool/src/error.rs index 56ea615f490b8..7d1712a55ac2c 100644 --- a/demo/transaction-pool/src/error.rs +++ b/node/transaction-pool/src/error.rs @@ -15,14 +15,14 @@ // along with Substrate. If not, see . use extrinsic_pool; -use demo_api; +use node_api; use primitives::Hash; use runtime::{Address, UncheckedExtrinsic}; error_chain! { links { Pool(extrinsic_pool::Error, extrinsic_pool::ErrorKind); - Api(demo_api::Error, demo_api::ErrorKind); + Api(node_api::Error, node_api::ErrorKind); } errors { /// Unexpected extrinsic format submitted diff --git a/demo/transaction-pool/src/lib.rs b/node/transaction-pool/src/lib.rs similarity index 98% rename from demo/transaction-pool/src/lib.rs rename to node/transaction-pool/src/lib.rs index 1bf8ae2f44245..7907a13e5c948 100644 --- a/demo/transaction-pool/src/lib.rs +++ b/node/transaction-pool/src/lib.rs @@ -20,9 +20,9 @@ extern crate substrate_codec as codec; extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_primitives; extern crate substrate_runtime_primitives; -extern crate demo_runtime as runtime; -extern crate demo_primitives as primitives; -extern crate demo_api; +extern crate node_runtime as runtime; +extern crate node_primitives as primitives; +extern crate node_api; extern crate parking_lot; #[cfg(test)] @@ -44,7 +44,7 @@ use std::{ use codec::{Decode, Encode}; use extrinsic_pool::{Readiness, scoring::{Change, Choice}, VerifiedFor, ExtrinsicFor}; -use demo_api::Api; +use node_api::Api; use primitives::{AccountId, BlockId, Block, Hash, Index}; use runtime::{Address, UncheckedExtrinsic, RawAddress}; use substrate_runtime_primitives::traits::{Bounded, Checkable, Hash as HashT, BlakeTwo256}; diff --git a/scripts/common.sh b/scripts/common.sh index 1bdcd20ae371f..f698110976395 100644 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -5,7 +5,7 @@ ROOT=`dirname "$0"` # A list of directories which contain wasm projects. SRCS=( "substrate/executor/wasm" - "demo/runtime/wasm" + "node/runtime/wasm" "substrate/test-runtime/wasm" ) diff --git a/substrate/runtime/version/src/lib.rs b/substrate/runtime/version/src/lib.rs index c8e3b8f4a6dc1..632351b76314a 100644 --- a/substrate/runtime/version/src/lib.rs +++ b/substrate/runtime/version/src/lib.rs @@ -62,7 +62,7 @@ macro_rules! ver_str { #[derive(Clone, PartialEq, Eq, Encode)] #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize, Decode))] pub struct RuntimeVersion { - /// Identifies the different Substrate runtimes. There'll be at least polkadot and demo. + /// Identifies the different Substrate runtimes. There'll be at least polkadot and node. /// A different on-chain spec_name to that of the native runtime would normally result /// in node not attempting to sync or author blocks. pub spec_name: VersionString, From eb5cc9d8c64174d97eab80411619a4405b07bcc6 Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 20:53:16 +0200 Subject: [PATCH 04/24] Build wasm from last rename. --- node/runtime/wasm/Cargo.lock | 82 +++++++++--------- .../release/runtime_test.compact.wasm | Bin 48108 -> 48108 bytes .../release/runtime_test.wasm | Bin 48318 -> 48318 bytes .../substrate_test_runtime.compact.wasm | Bin 54010 -> 54064 bytes .../release/substrate_test_runtime.wasm | Bin 54142 -> 54196 bytes 5 files changed, 41 insertions(+), 41 deletions(-) diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 32b36ad8355d3..90ec3c7a4b221 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -76,47 +76,6 @@ name = "crunchy" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "node-primitives" -version = "0.1.0" -dependencies = [ - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", -] - -[[package]] -name = "node-runtime" -version = "0.1.0" -dependencies = [ - "node-primitives 0.1.0", - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-contract 0.1.0", - "substrate-runtime-council 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-executive 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-staking 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", - "substrate-runtime-treasury 0.1.0", - "substrate-runtime-version 0.1.0", -] - [[package]] name = "ed25519" version = "0.1.0" @@ -300,6 +259,47 @@ name = "nan-preserving-float" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "node-primitives" +version = "0.1.0" +dependencies = [ + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-codec-derive 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-std 0.1.0", +] + +[[package]] +name = "node-runtime" +version = "0.1.0" +dependencies = [ + "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "node-primitives 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-codec 0.1.0", + "substrate-codec-derive 0.1.0", + "substrate-primitives 0.1.0", + "substrate-runtime-balances 0.1.0", + "substrate-runtime-consensus 0.1.0", + "substrate-runtime-contract 0.1.0", + "substrate-runtime-council 0.1.0", + "substrate-runtime-democracy 0.1.0", + "substrate-runtime-executive 0.1.0", + "substrate-runtime-io 0.1.0", + "substrate-runtime-primitives 0.1.0", + "substrate-runtime-session 0.1.0", + "substrate-runtime-staking 0.1.0", + "substrate-runtime-std 0.1.0", + "substrate-runtime-support 0.1.0", + "substrate-runtime-system 0.1.0", + "substrate-runtime-timestamp 0.1.0", + "substrate-runtime-treasury 0.1.0", + "substrate-runtime-version 0.1.0", +] + [[package]] name = "nodrop" version = "0.1.12" diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm index 9feda33fa2347299ffba1b67593813392d89a588..b8f4005069c281322964d6404fae66b9b6e582e7 100644 GIT binary patch delta 239 zcmVTAORo(5Gu2E7McOG2p)0?5h)-AK?rI=@Q1(vK?^|y z5Gk{ZCvpS;ez~C;$Ke6tg5T`~esgY-wU+Z*pZX zb8Km2WiM@SWG-@Z073kd95Z(T?30u;F9DR3#4}K{Ff?U@lYF^*0w#BpeYsMTR=FjU pPPnxOYhNTxR3wv7xEYhQw@n5rOJ5{RRFiPF6q6gcGqd-(^#O9{P)Ps) delta 220 zcmaF!o$1YYrVX-8Y>aIDTr4b`m6@1?8DDHx6IEx__`t->TF+R=RIkk7XppVMqQaoS z;`qG%0D~j5fEth~k)^<>z$BoyIZtL5qIBuzU1G*elYPZ< zH*?4paSEy`usU*NIeq|X=XPWfP~F_EUc>@a`cL~XP~RaPMHVJc=E+YD%s6i_2{33d z0KsMz!#|9ZZH$WTAORo(5HYj%7McOGi5_wZ5ilSHK?rI=@Q1(vK?^|y z5HPb0C~^b=ER%mM!vQU`LoFc$0%!u0W-&Gi>;ez~C;$Ke6tkr<`~esgY-wU+Z*pZX zb8Km2WiM@SWG-@Z073kdoildaIDTr4b`qnW&g8DDH(E~?I`@qvk%wVtt#sa~1E(I8uiMTJ3u z#qoLj0R~5A0bL+dB1?f$fk{Aj^Lv?DjFa;uUo#qPj*|M$$Y?k@NTzhNwYV|U*!-I0bbSSRFaC96x}xb33vK=xpZEC}IIBt=BmW)aR_L$in2wJUPwKjPnMQ0D}et z5Nuv*_=j=wUgKiM8oot&t&sb{nMw4yLlLdC=FzQaO-Q_bmdgoTg Y^2r%Hf+m~oR0SHFzN32c$z5L=0sj$5od5s; diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm index dc0c4e46cea881810e42e9e111dcba1f8b55171f..ad4c785a98f27ac1364bc10442a290bb9bce8d3e 100644 GIT binary patch delta 2887 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 Bk68c! diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm index 5b61818cf57b27d5f19f05cbc1a995b662dc1119..ebb9d5788618079f70b5bce60d9c974969a1a2c9 100755 GIT binary patch delta 2796 zcma)8T}%{L6u$S)E<4QZzySVW1-%Sd*tUR(E|HMNivG+3^+g(*wbmDlCi-CgDQ#_=m_A_I#HMZ1CQWQ(tm(NkyUT)_z=S<> z&pC5`zI)EO_sJ*Hg>%wa43m;#{y8q<_i%pt_>n6}jUYCDocuF?dAf=b!>V)fiUPx{ zJo*$D6Qn-oOC1Yh#Ztb6M`Cqp6HXxW+#gEXpMzHrb5No$VSf+CE@yVi#`P$$(%A@D zW$@@Si_~j~5{A5_g{)%Nqr5ivI2nxcA96QpbL!40mxWhZpG#f*>-s!?udXdF+*991 zE=T#7^&f!k)-~mL;Z#(54p^L8vJrl2Z6i53#D8B~ne#EY^b(ySM!aMWkiQP|iUtq9 zz_&Ln1LN;CyeT4Iu)c!8hbtRRaxoe^+Ze<)_Xeo^yxvc45Aw#Qn#kd~k`%#jyCa2& zohJJXQY4@q!zPnWL#jnp608Lo!)$m6a&g&WJss$TrA8%>Wb0Al0lg||0+Utt6Iaro zy?ru`*hX~FlTGHZwik>#nlwU536Tq+7G@jGSM7OM|OSOPQL0D zNTr&Np+)&yn+)iulbdn@shRC^X!h;$93Y?v*uU6}SD#(O(^hg~RU3i*v-UhuP$FL{ z5HmzQX&B0CaTAdEh8v=Ug-)(%D2dV)wV<0uW?TfXTB-N$)01kAKlM_@VWh)TkZLNyactL5f2G2tkaMr-L2s*FZ6)tQIt zR6|qMz9J;(_YUHOGZ9WiKDf0K`umHmqvEXI+jbNd58L*^Z^yRK{F`DV5PgxFgD7H7 zFL3~QGRXhfHh|r{r+sykThfvEyMc8?fL;Qc1@uP=At%rWL`OwH?*i3;Hp0KqI}huU z6#gc`=l``|V5s^)cn@OYUZct#zJRZ{(+^tWmZqlL-vs=#h!es7thc`hF);}2 z<^C=ovThU!quq!d71E5gzEBtK?F&=?8~wfjVkZSRv+h7R*xeiI?xg-;urG+%`5`{O zqio4tA=N^`&T@z??C-IFxG$J#y?u6U4~BU5&X>}~g-S(;jc|R}%GkzT-2wGi-O=mo l@#9IoDt7&=Z(MFAp3&~Uy({?RZ|jM-nxC4O$J@Uv`X6HNfbIYQ delta 2749 zcmbtWYfKbZ6u$S)vODZBI@A|Lu$N`kMGFYXq8pQPQBVjVwepZ6bil2!!Y=MEjV4Xk z$|J^v)Oef58si^rX-r6s+a{*kbZz|6*2Z9^sV4o=hl$!B)-*wFqPFMG>;P(i*fg8X znS0Ke^ZL%YXFeU19)BdAj$@MN;h$kQw)5*aJ2f$qKuQd;1pgb~UsRf^V8pPJ@}f7# zRpz`sjy(h^4|$<2Grmm9mT)4z!9I}!WI@_dN&Ra$ftZaFZ7F*+96vv|OLmG9L*k}NiCW8MQ@(CHR_}0677%*Mzaj{RWTnUu*s3!4R*mTNfKk zm!ueeTZ!c&b{Fq*5w|Gv1P(Ac;F2m(nFMD+CNP^4={QWWmI_oBT2#uDOf^dKK&?!Y zNxAtmRkVLcaRP%l1|~GqBC{DVgJ)ZvN+|J=37i8>@qdF!2BE18SE@KoQW#Q+!X5~~ zTz0cF_-Ordezv|DO2yMRAL~lyKj(@3sgtIe;Xv{ZI_H_Rlb)VRR{}Nw2K5t_oz9nM zG-Lsjmo^k(nRhp^yG;fM*_lLeDtlE1G>X zj+~XMo$qeWg$Yq z#atp5{hDAR?#Tq&<&uOt3>V<;vYDVuF+nvd(h?%LB_t42TM|r3K&=7Nq+H0S$Hdxg z5?d2UT4GcT?yQ4s9R!b>2EYiYQ87<0n^=!AL~ZQFI#`nsTb@MAAT=Z|1Vhp68iS=J zS!UB1EOCzubC3=a@dESd^n~jtvIBQdq_zS=Gp%Tv3J(bcMV#QTG!WYB^q)g zB(#tUvxzM`-G#%)V5<)3_^tFqM-KP&kyL|}08hGLM zlHwCE{E8#8H{#n9-GP``=Zf5^_v*neKWK?>6eZPsr`I1u?A#!KZ+mf@xU|gIf&+cX zxI)Zhf47c|EovFf~6OPRE>nY3L&vsDE45;jBRp=545ikTmDj;hrlO7eOo=bG0cy* zEn-tpT7~$ao}$PK@#G;UKEV`Q)E|i=_y&V#rC$&CMEB;KtOFy!O6k^ndqW7W%#YjG zI*k5RQ2giiK(F#ux-F>p`SIuJYvPTUt~g>Xk%7)gG^|Jc9pQmsw5QMC5gF+34~3&X zUnCj|>pT5E-%fwf4=SOs&-bdui|V`l9iebXzaH%A^7*<;i@f^U9i62m`da@geN{=R zGYLRP=nZdWhr4#G+g;n>c5i|IK=CTK9ub81ed6Ht=k2`ZDkWt;UU+38KXldo52^&0 A?f?J) From 41472865b6f8a755f3c542b17be13319ce0b4cf4 Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 21:29:45 +0200 Subject: [PATCH 05/24] Merge ed25519 into substrate-primitives --- Cargo.lock | 33 ++++--------------- doc/packages/substrate.adoc | 2 -- node/consensus/Cargo.toml | 1 - node/consensus/src/lib.rs | 5 ++- node/executor/Cargo.toml | 1 - node/executor/src/lib.rs | 4 +-- node/network/Cargo.toml | 2 +- node/network/src/consensus.rs | 2 +- node/network/src/lib.rs | 2 +- node/service/Cargo.toml | 1 - node/service/src/chain_spec.rs | 3 +- node/service/src/lib.rs | 1 - node/transaction-pool/Cargo.toml | 1 - node/transaction-pool/src/lib.rs | 1 - subkey/Cargo.toml | 1 - subkey/src/main.rs | 4 +-- substrate/bft/Cargo.toml | 1 - substrate/bft/src/error.rs | 3 +- substrate/bft/src/lib.rs | 5 ++- substrate/client/Cargo.toml | 1 - substrate/client/src/genesis.rs | 3 +- substrate/client/src/lib.rs | 1 - substrate/ed25519/Cargo.toml | 12 ------- substrate/ed25519/README.adoc | 13 -------- substrate/executor/Cargo.toml | 1 - substrate/executor/src/lib.rs | 1 - substrate/executor/src/wasm_executor.rs | 6 ++-- substrate/keyring/Cargo.toml | 2 +- substrate/keyring/src/lib.rs | 5 +-- substrate/keystore/Cargo.toml | 1 - substrate/keystore/src/lib.rs | 4 +-- substrate/network/Cargo.toml | 1 - substrate/network/src/lib.rs | 1 - substrate/network/src/message.rs | 3 +- substrate/primitives/Cargo.toml | 9 ++++- .../src/lib.rs => primitives/src/ed25519.rs} | 26 +++++++-------- substrate/primitives/src/lib.rs | 11 +++++++ substrate/runtime-io/Cargo.toml | 2 -- substrate/runtime-io/with_std.rs | 3 +- substrate/runtime-support/Cargo.toml | 2 -- substrate/test-runtime/Cargo.toml | 2 -- substrate/test-runtime/src/lib.rs | 2 -- substrate/test-runtime/wasm/Cargo.toml | 2 -- 43 files changed, 60 insertions(+), 127 deletions(-) delete mode 100644 substrate/ed25519/Cargo.toml delete mode 100644 substrate/ed25519/README.adoc rename substrate/{ed25519/src/lib.rs => primitives/src/ed25519.rs} (95%) diff --git a/Cargo.lock b/Cargo.lock index 302d51f2dc1cd..622086c6beeee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -425,18 +425,6 @@ name = "dtoa" version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ed25519" -version = "0.1.0" -dependencies = [ - "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "edit-distance" version = "2.0.1" @@ -1536,7 +1524,6 @@ dependencies = [ name = "node-consensus" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1561,7 +1548,6 @@ dependencies = [ name = "node-executor" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "node-primitives 0.1.0", "node-runtime 0.1.0", @@ -1587,7 +1573,6 @@ dependencies = [ name = "node-network" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "node-api 0.1.0", @@ -1596,6 +1581,7 @@ dependencies = [ "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-bft 0.1.0", "substrate-network 0.1.0", + "substrate-primitives 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1651,7 +1637,6 @@ dependencies = [ name = "node-service" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1678,7 +1663,6 @@ dependencies = [ name = "node-transaction-pool" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "node-api 0.1.0", @@ -2418,7 +2402,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "subkey" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", ] @@ -2438,7 +2421,6 @@ dependencies = [ name = "substrate-bft" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2488,7 +2470,6 @@ dependencies = [ name = "substrate-client" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2559,7 +2540,6 @@ version = "0.1.0" dependencies = [ "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2601,16 +2581,15 @@ dependencies = [ name = "substrate-keyring" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", ] [[package]] name = "substrate-keystore" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-crypto 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2641,7 +2620,6 @@ name = "substrate-network" version = "0.1.0" dependencies = [ "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", - "ed25519 0.1.0", "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "ethcore-io 1.12.0 (git+https://github.com/paritytech/parity.git)", @@ -2692,6 +2670,7 @@ dependencies = [ name = "substrate-primitives" version = "0.1.0" dependencies = [ + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2699,9 +2678,11 @@ dependencies = [ "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2712,6 +2693,7 @@ dependencies = [ "substrate-serializer 0.1.0", "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2894,7 +2876,6 @@ dependencies = [ name = "substrate-runtime-io" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "environmental 0.1.0", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2996,7 +2977,6 @@ dependencies = [ name = "substrate-runtime-support" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "hex-literal 0.1.1 (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.70 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3177,7 +3157,6 @@ dependencies = [ name = "substrate-test-runtime" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/doc/packages/substrate.adoc b/doc/packages/substrate.adoc index 75f391e2b6409..f72a7450d3e76 100644 --- a/doc/packages/substrate.adoc +++ b/doc/packages/substrate.adoc @@ -11,8 +11,6 @@ include::../../substrate/client/README.adoc[] include::../../substrate/codec/README.adoc[] -include::../../substrate/ed25519/README.adoc[] - include::../../substrate/environmental/README.adoc[] include::../../substrate/executor/README.adoc[] diff --git a/node/consensus/Cargo.toml b/node/consensus/Cargo.toml index 617e590b4b8e6..0d457a5f7aed6 100644 --- a/node/consensus/Cargo.toml +++ b/node/consensus/Cargo.toml @@ -7,7 +7,6 @@ authors = ["Parity Technologies "] futures = "0.1.17" parking_lot = "0.4" tokio = "0.1.7" -ed25519 = { path = "../../substrate/ed25519" } error-chain = "0.12" log = "0.3" exit-future = "0.1" diff --git a/node/consensus/src/lib.rs b/node/consensus/src/lib.rs index 002b9e170775f..2135beebd0ce2 100644 --- a/node/consensus/src/lib.rs +++ b/node/consensus/src/lib.rs @@ -16,7 +16,6 @@ //! This service uses BFT consensus provided by the substrate. -extern crate ed25519; extern crate parking_lot; extern crate node_api; extern crate node_transaction_pool as transaction_pool; @@ -50,7 +49,7 @@ use std::time::{self, Duration, Instant}; use codec::{Decode, Encode}; use node_api::Api; use node_primitives::{AccountId, Hash, Block, BlockId, BlockNumber, Header, Timestamp, SessionKey}; -use primitives::AuthorityId; +use primitives::{AuthorityId, ed25519}; use transaction_pool::TransactionPool; use tokio::runtime::TaskExecutor; use tokio::timer::Delay; @@ -427,7 +426,7 @@ impl bft::Proposer for Proposer // alter the message based on whether we think the empty proposer was forced to skip the round. // this is determined by checking if our local validator would have been forced to skip the round. if !was_proposed { - let public = ::ed25519::Public::from_raw(primary_validator.0); + let public = ed25519::Public::from_raw(primary_validator.0); info!( "Potential Offline Validator: {} failed to propose during assigned slot: {}", public, diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 4fa548d42f961..e3b4f8f7c2fab 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -7,7 +7,6 @@ description = "Substrate node implementation in Rust." [dependencies] hex-literal = "0.1" triehash = "0.2" -ed25519 = { path = "../../substrate/ed25519" } substrate-codec = { path = "../../substrate/codec" } substrate-runtime-io = { path = "../../substrate/runtime-io" } substrate-runtime-support = { path = "../../substrate/runtime-support" } diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index ff515bcf406f7..936a25f6db7d6 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -24,7 +24,6 @@ extern crate substrate_state_machine as state_machine; extern crate substrate_runtime_io as runtime_io; extern crate substrate_primitives as primitives; extern crate node_primitives; -extern crate ed25519; extern crate triehash; #[cfg(test)] extern crate substrate_keyring as keyring; @@ -51,7 +50,7 @@ mod tests { use keyring::Keyring; use runtime_support::{Hashable, StorageValue, StorageMap}; use state_machine::{CodeExecutor, TestExternalities}; - use primitives::{twox_128, Blake2Hasher}; + use primitives::{twox_128, Blake2Hasher, ed25519::{Public, Pair}}; use node_primitives::{Hash, BlockNumber, AccountId}; use runtime_primitives::traits::Header as HeaderT; use runtime_primitives::{ApplyOutcome, ApplyError, ApplyResult}; @@ -59,7 +58,6 @@ mod tests { use system::{EventRecord, Phase}; use node_runtime::{Header, Block, UncheckedExtrinsic, CheckedExtrinsic, Call, Runtime, Balances, BuildStorage, GenesisConfig, BalancesConfig, SessionConfig, StakingConfig, System, Event}; - use ed25519::{Public, Pair}; const BLOATY_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.wasm"); const COMPACT_CODE: &[u8] = include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/node_runtime.compact.wasm"); diff --git a/node/network/Cargo.toml b/node/network/Cargo.toml index 16e79910b62fe..8f426378aab4e 100644 --- a/node/network/Cargo.toml +++ b/node/network/Cargo.toml @@ -10,7 +10,7 @@ node-consensus = { path = "../consensus" } node-primitives = { path = "../primitives" } substrate-bft = { path = "../../substrate/bft" } substrate-network = { path = "../../substrate/network" } -ed25519 = { path = "../../substrate/ed25519" } +substrate-primitives = { path = "../../substrate/primitives" } futures = "0.1" tokio = "0.1.7" log = "0.4" diff --git a/node/network/src/consensus.rs b/node/network/src/consensus.rs index 5d422ea55d05e..63ed119afec0d 100644 --- a/node/network/src/consensus.rs +++ b/node/network/src/consensus.rs @@ -19,7 +19,7 @@ //! each time consensus begins on a new chain head. use bft; -use ed25519; +use substrate_primitives::ed25519; use substrate_network::{self as net, generic_message as msg}; use substrate_network::consensus_gossip::ConsensusMessage; use node_api::Api; diff --git a/node/network/src/lib.rs b/node/network/src/lib.rs index d24c39c0e6c71..a01dae79b4c94 100644 --- a/node/network/src/lib.rs +++ b/node/network/src/lib.rs @@ -22,12 +22,12 @@ extern crate substrate_bft as bft; extern crate substrate_network; +extern crate substrate_primitives; extern crate node_api; extern crate node_consensus; extern crate node_primitives; -extern crate ed25519; extern crate futures; extern crate tokio; extern crate rhododendron; diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 7926efdafd244..5fc9f9be326de 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -11,7 +11,6 @@ log = "0.3" slog = "^2" tokio = "0.1.7" hex-literal = "0.1" -ed25519 = { path = "../../substrate/ed25519" } node-api = { path = "../api" } node-primitives = { path = "../primitives" } node-runtime = { path = "../runtime" } diff --git a/node/service/src/chain_spec.rs b/node/service/src/chain_spec.rs index 0765dbac8e7ce..bf502cdbd1284 100644 --- a/node/service/src/chain_spec.rs +++ b/node/service/src/chain_spec.rs @@ -16,8 +16,7 @@ //! Substrate chain configurations. -use ed25519; -use primitives::AuthorityId; +use primitives::{AuthorityId, ed25519}; use node_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig, SessionConfig, StakingConfig, TimestampConfig, BalancesConfig, TreasuryConfig, ContractConfig, Permill}; diff --git a/node/service/src/lib.rs b/node/service/src/lib.rs index 10384e5f3a122..469349d1c4ab2 100644 --- a/node/service/src/lib.rs +++ b/node/service/src/lib.rs @@ -18,7 +18,6 @@ //! Substrate service. Specialized wrapper over substrate service. -extern crate ed25519; extern crate node_api; extern crate node_primitives; extern crate node_runtime; diff --git a/node/transaction-pool/Cargo.toml b/node/transaction-pool/Cargo.toml index be889642a8173..496551e2dcb8d 100644 --- a/node/transaction-pool/Cargo.toml +++ b/node/transaction-pool/Cargo.toml @@ -16,4 +16,3 @@ substrate-keyring = { path = "../../substrate/keyring" } substrate-extrinsic-pool = { path = "../../substrate/extrinsic-pool" } substrate-primitives = { path = "../../substrate/primitives" } substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -ed25519 = { path = "../../substrate/ed25519" } diff --git a/node/transaction-pool/src/lib.rs b/node/transaction-pool/src/lib.rs index 7907a13e5c948..97ef5b59f2fdc 100644 --- a/node/transaction-pool/src/lib.rs +++ b/node/transaction-pool/src/lib.rs @@ -14,7 +14,6 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -extern crate ed25519; extern crate substrate_client as client; extern crate substrate_codec as codec; extern crate substrate_extrinsic_pool as extrinsic_pool; diff --git a/subkey/Cargo.toml b/subkey/Cargo.toml index c9bb23962dea4..a66ca922f3e4d 100644 --- a/subkey/Cargo.toml +++ b/subkey/Cargo.toml @@ -4,7 +4,6 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -ed25519 = { version = "*", path = "../substrate/ed25519" } substrate-primitives = { version = "*", path = "../substrate/primitives" } rand = "0.4" diff --git a/subkey/src/main.rs b/subkey/src/main.rs index aa4cf48585049..2b824664a86c5 100644 --- a/subkey/src/main.rs +++ b/subkey/src/main.rs @@ -1,14 +1,12 @@ #![cfg_attr(feature = "bench", feature(test))] #[cfg(feature = "bench")] extern crate test; -extern crate ed25519; extern crate substrate_primitives; extern crate rand; use rand::{OsRng, Rng}; use std::env::args; -use ed25519::Pair; -use substrate_primitives::hexdisplay::HexDisplay; +use substrate_primitives::{ed25519::Pair, hexdisplay::HexDisplay}; use std::cmp; fn good_waypoint(done: u64) -> u64 { diff --git a/substrate/bft/Cargo.toml b/substrate/bft/Cargo.toml index f15f24a0d5bd8..b38d073893779 100644 --- a/substrate/bft/Cargo.toml +++ b/substrate/bft/Cargo.toml @@ -10,7 +10,6 @@ substrate-primitives = { path = "../primitives" } substrate-runtime-support = { path = "../runtime-support" } substrate-runtime-primitives = { path = "../runtime/primitives" } substrate-runtime-version = { path = "../runtime/version" } -ed25519 = { path = "../ed25519" } tokio = "0.1.7" parking_lot = "0.4" error-chain = "0.12" diff --git a/substrate/bft/src/error.rs b/substrate/bft/src/error.rs index d8de262364965..fb41e7efa9055 100644 --- a/substrate/bft/src/error.rs +++ b/substrate/bft/src/error.rs @@ -16,6 +16,7 @@ //! Error types in the BFT service. use runtime_version::RuntimeVersion; +use primitives::ed25519; error_chain! { errors { @@ -44,7 +45,7 @@ error_chain! { } /// Error checking signature - InvalidSignature(s: ::ed25519::Signature, a: ::primitives::AuthorityId) { + InvalidSignature(s: ed25519::Signature, a: ::primitives::AuthorityId) { description("Message signature is invalid"), display("Message signature {:?} by {:?} is invalid.", s, a), } diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index 4b9d3be90c291..9e8359a626212 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -41,7 +41,6 @@ extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_runtime_version as runtime_version; -extern crate ed25519; extern crate tokio; extern crate parking_lot; extern crate rhododendron; @@ -63,7 +62,7 @@ use ed25519::LocalizedSignature; use runtime_primitives::generic::BlockId; use runtime_primitives::traits::{Block, Header}; use runtime_primitives::bft::{Message as PrimitiveMessage, Action as PrimitiveAction, Justification as PrimitiveJustification}; -use primitives::AuthorityId; +use primitives::{AuthorityId, ed25519}; use futures::{Async, Stream, Sink, Future, IntoFuture}; use futures::sync::oneshot; @@ -316,7 +315,7 @@ impl> rhododendron::Context for BftInstance use std::collections::HashSet; let collect_pubkeys = |participants: HashSet<&Self::AuthorityId>| participants.into_iter() - .map(|p| ::ed25519::Public::from_raw(p.0)) + .map(|p| ed25519::Public::from_raw(p.0)) .collect::>(); let round_timeout = self.round_timeout_duration(next_round); diff --git a/substrate/client/Cargo.toml b/substrate/client/Cargo.toml index 5512b0d65832a..949de8cd4df4a 100644 --- a/substrate/client/Cargo.toml +++ b/substrate/client/Cargo.toml @@ -11,7 +11,6 @@ parking_lot = "0.4" triehash = "0.2" hex-literal = "0.1" futures = "0.1.17" -ed25519 = { path = "../ed25519" } slog = "^2" heapsize = "0.4" substrate-bft = { path = "../bft" } diff --git a/substrate/client/src/genesis.rs b/substrate/client/src/genesis.rs index 93b8244fec534..9c7810aedca3d 100644 --- a/substrate/client/src/genesis.rs +++ b/substrate/client/src/genesis.rs @@ -50,8 +50,7 @@ mod tests { use test_client; use test_client::runtime::genesismap::{GenesisConfig, additional_storage_with_genesis}; use test_client::runtime::{Hash, Transfer, Block, BlockNumber, Header, Digest, Extrinsic}; - use ed25519::{Public, Pair}; - use primitives::{Blake2Hasher, RlpCodec}; + use primitives::{Blake2Hasher, RlpCodec, ed25519::{Public, Pair}}; native_executor_instance!(Executor, test_client::runtime::api::dispatch, test_client::runtime::VERSION, include_bytes!("../../test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm")); diff --git a/substrate/client/src/lib.rs b/substrate/client/src/lib.rs index 127aafe848bfb..fd30eaae72e32 100644 --- a/substrate/client/src/lib.rs +++ b/substrate/client/src/lib.rs @@ -31,7 +31,6 @@ extern crate substrate_state_machine as state_machine; #[macro_use] extern crate substrate_telemetry; #[macro_use] extern crate slog; // needed until we can reexport `slog_info` from `substrate_telemetry` -extern crate ed25519; extern crate fnv; extern crate futures; extern crate parking_lot; diff --git a/substrate/ed25519/Cargo.toml b/substrate/ed25519/Cargo.toml deleted file mode 100644 index 34494fc8be9b0..0000000000000 --- a/substrate/ed25519/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "ed25519" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -ring = "0.12" -untrusted = "0.5" -substrate-primitives = { version = "0.1", path = "../primitives" } -hex-literal = "0.1" -base58 = "0.1" -blake2-rfc = "0.2" diff --git a/substrate/ed25519/README.adoc b/substrate/ed25519/README.adoc deleted file mode 100644 index 97c10769ee902..0000000000000 --- a/substrate/ed25519/README.adoc +++ /dev/null @@ -1,13 +0,0 @@ - -= ED25519 - -.Summary -[source, toml] ----- -include::Cargo.toml[lines=2..5] ----- - -.Description ----- -include::src/lib.rs[tag=description] ----- diff --git a/substrate/executor/Cargo.toml b/substrate/executor/Cargo.toml index 0c4e658740517..8d3b51e12f192 100644 --- a/substrate/executor/Cargo.toml +++ b/substrate/executor/Cargo.toml @@ -11,7 +11,6 @@ substrate-primitives = { path = "../primitives" } substrate-serializer = { path = "../serializer" } substrate-state-machine = { path = "../state-machine" } substrate-runtime-version = { path = "../runtime/version" } -ed25519 = { path = "../ed25519" } serde = "1.0" serde_derive = "1.0" wasmi = "0.4" diff --git a/substrate/executor/src/lib.rs b/substrate/executor/src/lib.rs index 7898411be47d4..7b9779a9b6467 100644 --- a/substrate/executor/src/lib.rs +++ b/substrate/executor/src/lib.rs @@ -36,7 +36,6 @@ extern crate substrate_primitives as primitives; extern crate substrate_serializer as serializer; extern crate substrate_state_machine as state_machine; extern crate substrate_runtime_version as runtime_version; -extern crate ed25519; extern crate serde; extern crate wasmi; diff --git a/substrate/executor/src/wasm_executor.rs b/substrate/executor/src/wasm_executor.rs index 50488ac285087..7a7707dc9d7bb 100644 --- a/substrate/executor/src/wasm_executor.rs +++ b/substrate/executor/src/wasm_executor.rs @@ -27,7 +27,7 @@ use wasmi::memory_units::{Pages, Bytes}; use state_machine::Externalities; use error::{Error, ErrorKind, Result}; use wasm_utils::UserError; -use primitives::{blake2_256, twox_128, twox_256}; +use primitives::{blake2_256, twox_128, twox_256, ed25519}; use primitives::hexdisplay::HexDisplay; use primitives::sandbox as sandbox_primitives; use primitives::Blake2Hasher; @@ -359,7 +359,7 @@ impl_function_executor!(this: FunctionExecutor<'e, E>, this.memory.get_into(pubkey_data, &mut pubkey[..]).map_err(|_| UserError("Invalid attempt to get pubkey in ext_ed25519_verify"))?; let msg = this.memory.get(msg_data, msg_len as usize).map_err(|_| UserError("Invalid attempt to get message in ext_ed25519_verify"))?; - Ok(if ::ed25519::verify(&sig, &msg, &pubkey) { + Ok(if ed25519::verify(&sig, &msg, &pubkey) { 0 } else { 5 @@ -684,7 +684,7 @@ mod tests { fn ed25519_verify_should_work() { let mut ext = TestExternalities::default(); let test_code = include_bytes!("../wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm"); - let key = ::ed25519::Pair::from_seed(&blake2_256(b"test")); + let key = ed25519::Pair::from_seed(&blake2_256(b"test")); let sig = key.sign(b"all ok!"); let mut calldata = vec![]; calldata.extend_from_slice(key.public().as_ref()); diff --git a/substrate/keyring/Cargo.toml b/substrate/keyring/Cargo.toml index 69bd55a6f3e24..04d6c2bd134bf 100644 --- a/substrate/keyring/Cargo.toml +++ b/substrate/keyring/Cargo.toml @@ -4,6 +4,6 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -ed25519 = { path = "../ed25519" } +substrate-primitives = { path = "../primitives" } hex-literal = { version = "0.1.0" } lazy_static = { version = "1.0" } diff --git a/substrate/keyring/src/lib.rs b/substrate/keyring/src/lib.rs index 6f0270c9d4de9..33869ae7ad8ac 100644 --- a/substrate/keyring/src/lib.rs +++ b/substrate/keyring/src/lib.rs @@ -20,11 +20,12 @@ #[macro_use] extern crate hex_literal; #[macro_use] extern crate lazy_static; -pub extern crate ed25519; +extern crate substrate_primitives; use std::collections::HashMap; use std::ops::Deref; -use ed25519::{Pair, Public, Signature}; +use substrate_primitives::ed25519::{Pair, Public, Signature}; +pub use substrate_primitives::ed25519; /// Set of test accounts. #[derive(Clone, Copy, PartialEq, Eq, Hash)] diff --git a/substrate/keystore/Cargo.toml b/substrate/keystore/Cargo.toml index eb1da7e02061b..7ec5444e417bd 100644 --- a/substrate/keystore/Cargo.toml +++ b/substrate/keystore/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] substrate-primitives = { path = "../primitives" } parity-crypto = { version = "0.1", default_features = false } -ed25519 = { path = "../ed25519" } error-chain = "0.12" hex = "0.3" rand = "0.4" diff --git a/substrate/keystore/src/lib.rs b/substrate/keystore/src/lib.rs index 5686e637371b7..f3eeb4be3f81f 100644 --- a/substrate/keystore/src/lib.rs +++ b/substrate/keystore/src/lib.rs @@ -21,7 +21,6 @@ extern crate substrate_primitives; extern crate parity_crypto as crypto; extern crate subtle; -extern crate ed25519; extern crate rand; extern crate serde_json; extern crate serde; @@ -41,8 +40,7 @@ use std::path::PathBuf; use std::fs::{self, File}; use std::io::{self, Write}; -use substrate_primitives::hashing::blake2_256; -use ed25519::{Pair, Public, PKCS_LEN}; +use substrate_primitives::{hashing::blake2_256, ed25519::{Pair, Public, PKCS_LEN}}; pub use crypto::KEY_ITERATIONS; diff --git a/substrate/network/Cargo.toml b/substrate/network/Cargo.toml index 17b16e74d3558..1b19abe1e1254 100644 --- a/substrate/network/Cargo.toml +++ b/substrate/network/Cargo.toml @@ -16,7 +16,6 @@ futures = "0.1.17" linked-hash-map = "0.5" rustc-hex = "1.0" ethcore-io = { git = "https://github.com/paritytech/parity.git" } -ed25519 = { path = "../../substrate/ed25519" } substrate-primitives = { path = "../../substrate/primitives" } substrate-client = { path = "../../substrate/client" } substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } diff --git a/substrate/network/src/lib.rs b/substrate/network/src/lib.rs index 14d3d82da5dbc..7f0817653eb59 100644 --- a/substrate/network/src/lib.rs +++ b/substrate/network/src/lib.rs @@ -31,7 +31,6 @@ extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_network_libp2p as network_libp2p; extern crate substrate_codec as codec; extern crate futures; -extern crate ed25519; extern crate rustc_hex; #[macro_use] extern crate log; #[macro_use] extern crate bitflags; diff --git a/substrate/network/src/message.rs b/substrate/network/src/message.rs index 875529f0fe923..3bb080e13354d 100644 --- a/substrate/network/src/message.rs +++ b/substrate/network/src/message.rs @@ -147,9 +147,8 @@ pub struct RemoteReadResponse { /// Generic types. pub mod generic { - use primitives::AuthorityId; + use primitives::{AuthorityId, ed25519}; use runtime_primitives::bft::Justification; - use ed25519; use service::Roles; use super::{ BlockAttributes, RemoteCallResponse, RemoteReadResponse, diff --git a/substrate/primitives/Cargo.toml b/substrate/primitives/Cargo.toml index 206bb24c5626a..ce5c41f1140be 100644 --- a/substrate/primitives/Cargo.toml +++ b/substrate/primitives/Cargo.toml @@ -21,7 +21,10 @@ wasmi = { version = "0.4", optional = true } hashdb = { version = "0.2.1", default_features = false } patricia-trie = { version = "0.2.1", optional = true } plain_hasher = { version = "0.2", default_features = false } - +ring = { version = "0.12", optional = true } +untrusted = { version = "0.5", optional = true } +hex-literal = { version = "0.1", optional = true } +base58 = { version = "0.1", optional = true } blake2-rfc = { version = "0.2.18", optional = true } [dev-dependencies] @@ -43,6 +46,10 @@ std = [ "rustc-hex/std", "twox-hash", "blake2-rfc", + "ring", + "untrusted", + "hex-literal", + "base58", "serde_derive", "byteorder/std", "patricia-trie", diff --git a/substrate/ed25519/src/lib.rs b/substrate/primitives/src/ed25519.rs similarity index 95% rename from substrate/ed25519/src/lib.rs rename to substrate/primitives/src/ed25519.rs index a7f419f47842c..7a95e4307c04c 100644 --- a/substrate/ed25519/src/lib.rs +++ b/substrate/primitives/src/ed25519.rs @@ -18,20 +18,12 @@ //! Simple Ed25519 API. // end::description[] -extern crate ring; -extern crate base58; -extern crate substrate_primitives as primitives; -extern crate untrusted; -extern crate blake2_rfc; - +use untrusted; +use blake2_rfc; use ring::{rand, signature}; -use primitives::{hash::H512, AuthorityId}; +use {hash::H512, AuthorityId}; use base58::{ToBase58, FromBase58}; -#[cfg(test)] -#[macro_use] -extern crate hex_literal; - /// Alias to 512-bit hash when used in the context of a signature on the relay chain. pub type Signature = H512; @@ -72,11 +64,16 @@ impl ::std::hash::Hash for Public { } } +/// An error type for SS58 decoding. #[derive(Clone, Copy, Eq, PartialEq, Debug)] pub enum PublicError { + /// Bad alphabet. BadBase58, + /// Bad length. BadLength, + /// Unknown version. UnknownVersion, + /// Invalid checksum. InvalidChecksum, } @@ -189,7 +186,7 @@ impl ::std::fmt::Display for Public { impl ::std::fmt::Debug for Public { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { let s = self.to_ss58check(); - write!(f, "{} ({}...)", ::primitives::hexdisplay::HexDisplay::from(&self.0), &s[0..8]) + write!(f, "{} ({}...)", ::hexdisplay::HexDisplay::from(&self.0), &s[0..8]) } } @@ -261,6 +258,7 @@ pub fn verify_strong>(sig: &Signature, message: &[u8], pubkey: } } +/// Something that acts as a signature allowing a message to be verified. pub trait Verifiable { /// Verify something that acts like a signature. fn verify>(&self, message: &[u8], pubkey: P) -> bool; @@ -285,7 +283,7 @@ mod test { fn _test_primitives_signature_and_local_the_same() { fn takes_two(_: T, _: T) { } - takes_two(Signature::default(), primitives::Signature::default()) + takes_two(Signature::default(), ::Signature::default()) } #[test] @@ -310,7 +308,7 @@ mod test { #[test] fn seeded_pair_should_work() { - use primitives::hexdisplay::HexDisplay; + use ::hexdisplay::HexDisplay; let pair = Pair::from_seed(b"12345678901234567890123456789012"); let public = pair.public(); diff --git a/substrate/primitives/src/lib.rs b/substrate/primitives/src/lib.rs index 5fddf350d811f..0d6d4191e3a17 100644 --- a/substrate/primitives/src/lib.rs +++ b/substrate/primitives/src/lib.rs @@ -45,6 +45,15 @@ extern crate twox_hash; #[cfg(feature = "std")] extern crate blake2_rfc; +#[cfg(feature = "std")] +extern crate ring; +#[cfg(feature = "std")] +extern crate base58; +#[cfg(feature = "std")] +extern crate untrusted; +#[cfg(test)] +#[macro_use] +extern crate hex_literal; #[cfg(feature = "std")] #[macro_use] @@ -90,6 +99,8 @@ pub mod hashing; pub use hashing::{blake2_256, twox_128, twox_256}; #[cfg(feature = "std")] pub mod hexdisplay; +#[cfg(feature = "std")] +pub mod ed25519; pub mod u32_trait; diff --git a/substrate/runtime-io/Cargo.toml b/substrate/runtime-io/Cargo.toml index cf8a01dcf8731..8bf3c3406f6f7 100644 --- a/substrate/runtime-io/Cargo.toml +++ b/substrate/runtime-io/Cargo.toml @@ -14,7 +14,6 @@ substrate-state-machine = { path = "../state-machine", optional = true } substrate-primitives = { path = "../primitives", default_features = false } substrate-codec = { path = "../codec", default_features = false } triehash = { version = "0.2", optional = true } -ed25519 = { path = "../ed25519", optional = true } hashdb = { version = "0.2", default_features = false } rlp = { version = "0.2", optional = true, default_features = false } @@ -27,7 +26,6 @@ std = [ "substrate-primitives/std", "substrate-codec/std", "substrate-runtime-std/std", - "ed25519", "rlp" ] nightly = [] diff --git a/substrate/runtime-io/with_std.rs b/substrate/runtime-io/with_std.rs index c1d85d914ebef..3790f925bd4a2 100644 --- a/substrate/runtime-io/with_std.rs +++ b/substrate/runtime-io/with_std.rs @@ -22,14 +22,13 @@ extern crate substrate_primitives as primitives; extern crate substrate_state_machine; extern crate triehash; -extern crate ed25519; extern crate hashdb; extern crate rlp; #[doc(hidden)] pub extern crate substrate_codec as codec; // re-export hashing functions. -pub use primitives::{blake2_256, twox_128, twox_256}; +pub use primitives::{blake2_256, twox_128, twox_256, ed25519}; pub use primitives::Blake2Hasher; // Switch to this after PoC-3 diff --git a/substrate/runtime-support/Cargo.toml b/substrate/runtime-support/Cargo.toml index ee8e524cf7133..a886568cdd791 100644 --- a/substrate/runtime-support/Cargo.toml +++ b/substrate/runtime-support/Cargo.toml @@ -4,7 +4,6 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -ed25519 = { path = "../ed25519", optional = true } hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } @@ -21,7 +20,6 @@ substrate-codec-derive = { path = "../../substrate/codec/derive" } [features] default = ["std"] std = [ - "ed25519", "hex-literal", "serde/std", "serde_derive", diff --git a/substrate/test-runtime/Cargo.toml b/substrate/test-runtime/Cargo.toml index 5482936f05733..421946bea095f 100644 --- a/substrate/test-runtime/Cargo.toml +++ b/substrate/test-runtime/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] log = { version = "0.3", optional = true } hex-literal = { version = "0.1.0", optional = true } -ed25519 = { path = "../ed25519", optional = true } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } substrate-keyring = { path = "../keyring", optional = true } @@ -24,7 +23,6 @@ default = ["std"] std = [ "log", "hex-literal", - "ed25519", "serde", "serde_derive", "substrate-keyring", diff --git a/substrate/test-runtime/src/lib.rs b/substrate/test-runtime/src/lib.rs index eb1deca741c3f..e1e28c955d536 100644 --- a/substrate/test-runtime/src/lib.rs +++ b/substrate/test-runtime/src/lib.rs @@ -45,8 +45,6 @@ extern crate substrate_runtime_version as runtime_version; #[macro_use] extern crate hex_literal; #[cfg(test)] -extern crate ed25519; -#[cfg(test)] extern crate substrate_keyring as keyring; #[cfg_attr(test, macro_use)] extern crate substrate_primitives as primitives; diff --git a/substrate/test-runtime/wasm/Cargo.toml b/substrate/test-runtime/wasm/Cargo.toml index 599733e271c17..b4bef46da0e44 100644 --- a/substrate/test-runtime/wasm/Cargo.toml +++ b/substrate/test-runtime/wasm/Cargo.toml @@ -6,7 +6,6 @@ authors = ["Parity Technologies "] [dependencies] log = { version = "0.3", optional = true } hex-literal = { version = "0.1.0", optional = true } -ed25519 = { path = "../../ed25519", optional = true } substrate-codec = { path = "../../codec", default-features = false } substrate-codec-derive = { path = "../../codec/derive", default-features = false } substrate-runtime-std = { path = "../../runtime-std", default-features = false } @@ -21,7 +20,6 @@ default = [] std = [ "log", "hex-literal", - "ed25519", "substrate-codec/std", "substrate-runtime-std/std", "substrate-runtime-io/std", From 0ac78f9598d7fbf283fe6ba108898b4831d35e14 Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 21:30:15 +0200 Subject: [PATCH 06/24] Minor tweak --- substrate/bft/src/lib.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/substrate/bft/src/lib.rs b/substrate/bft/src/lib.rs index 9e8359a626212..e6f2615f0fd53 100644 --- a/substrate/bft/src/lib.rs +++ b/substrate/bft/src/lib.rs @@ -58,11 +58,10 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use std::time::{Instant, Duration}; use codec::Encode; -use ed25519::LocalizedSignature; use runtime_primitives::generic::BlockId; use runtime_primitives::traits::{Block, Header}; use runtime_primitives::bft::{Message as PrimitiveMessage, Action as PrimitiveAction, Justification as PrimitiveJustification}; -use primitives::{AuthorityId, ed25519}; +use primitives::{AuthorityId, ed25519, ed25519::LocalizedSignature}; use futures::{Async, Stream, Sink, Future, IntoFuture}; use futures::sync::oneshot; From 804ad47e55257a0c399f679a53a5f967b62588bc Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 23:02:09 +0200 Subject: [PATCH 07/24] Rename substrate -> core --- .gitignore | 12 +-- CONTRIBUTING.adoc | 4 +- Cargo.toml | 88 +++++++++--------- {substrate => core}/bft/Cargo.toml | 0 {substrate => core}/bft/README.adoc | 0 {substrate => core}/bft/src/error.rs | 0 {substrate => core}/bft/src/lib.rs | 0 {substrate => core}/cli/Cargo.toml | 12 +-- {substrate => core}/cli/README.adoc | 0 {substrate => core}/cli/build.rs | 0 .../cli/doc/shell-completion.adoc | 0 {substrate => core}/cli/src/cli.yml | 0 {substrate => core}/cli/src/error.rs | 0 {substrate => core}/cli/src/informant.rs | 0 {substrate => core}/cli/src/lib.rs | 0 {substrate => core}/cli/src/panic_hook.rs | 0 {substrate => core}/client/Cargo.toml | 2 +- {substrate => core}/client/README.adoc | 0 core/client/db/Cargo.toml | 24 +++++ {substrate => core}/client/db/src/cache.rs | 0 {substrate => core}/client/db/src/lib.rs | 0 {substrate => core}/client/db/src/light.rs | 0 {substrate => core}/client/db/src/utils.rs | 0 {substrate => core}/client/src/backend.rs | 0 .../client/src/block_builder.rs | 0 {substrate => core}/client/src/blockchain.rs | 0 .../client/src/call_executor.rs | 0 {substrate => core}/client/src/cht.rs | 0 {substrate => core}/client/src/client.rs | 0 {substrate => core}/client/src/error.rs | 0 {substrate => core}/client/src/genesis.rs | 0 {substrate => core}/client/src/in_mem.rs | 0 {substrate => core}/client/src/lib.rs | 0 .../client/src/light/backend.rs | 0 .../client/src/light/blockchain.rs | 0 .../client/src/light/call_executor.rs | 0 .../client/src/light/fetcher.rs | 0 {substrate => core}/client/src/light/mod.rs | 0 .../client/src/notifications.rs | 0 {substrate => core}/codec/Cargo.toml | 0 {substrate => core}/codec/README.adoc | 0 {substrate => core}/codec/derive/Cargo.toml | 0 .../codec/derive/src/decode.rs | 0 .../codec/derive/src/encode.rs | 0 {substrate => core}/codec/derive/src/lib.rs | 0 {substrate => core}/codec/derive/tests/mod.rs | 0 {substrate => core}/codec/src/codec.rs | 0 {substrate => core}/codec/src/joiner.rs | 0 {substrate => core}/codec/src/keyedvec.rs | 0 {substrate => core}/codec/src/lib.rs | 0 {substrate => core}/environmental/Cargo.toml | 0 {substrate => core}/environmental/README.adoc | 0 {substrate => core}/environmental/src/lib.rs | 0 {substrate => core}/environmental/with_std.rs | 0 .../environmental/without_std.rs | 0 {substrate => core}/executor/Cargo.toml | 0 {substrate => core}/executor/README.adoc | 0 {substrate => core}/executor/src/error.rs | 0 {substrate => core}/executor/src/lib.rs | 0 .../executor/src/native_executor.rs | 0 {substrate => core}/executor/src/sandbox.rs | 0 .../executor/src/wasm_executor.rs | 0 .../executor/src/wasm_utils.rs | 0 {substrate => core}/executor/wasm/Cargo.lock | 0 {substrate => core}/executor/wasm/Cargo.toml | 0 {substrate => core}/executor/wasm/build.sh | 0 {substrate => core}/executor/wasm/src/lib.rs | 0 {substrate => core}/extrinsic-pool/Cargo.toml | 8 +- .../extrinsic-pool/README.adoc | 0 .../extrinsic-pool/src/error.rs | 0 {substrate => core}/extrinsic-pool/src/lib.rs | 0 .../extrinsic-pool/src/listener.rs | 0 .../extrinsic-pool/src/pool.rs | 0 .../extrinsic-pool/src/rotator.rs | 0 .../extrinsic-pool/src/watcher.rs | 0 {substrate => core}/keyring/Cargo.toml | 0 {substrate => core}/keyring/README.adoc | 0 {substrate => core}/keyring/src/lib.rs | 0 {substrate => core}/keystore/Cargo.toml | 0 {substrate => core}/keystore/README.adoc | 0 {substrate => core}/keystore/src/lib.rs | 0 .../misbehavior-check/Cargo.toml | 0 .../misbehavior-check/README.adoc | 0 .../misbehavior-check/src/lib.rs | 0 {substrate => core}/network-libp2p/Cargo.toml | 0 .../network-libp2p/README.adoc | 0 .../network-libp2p/src/connection_filter.rs | 0 .../network-libp2p/src/custom_proto.rs | 2 +- .../network-libp2p/src/error.rs | 0 {substrate => core}/network-libp2p/src/lib.rs | 0 .../network-libp2p/src/network_state.rs | 0 .../network-libp2p/src/service.rs | 6 +- .../network-libp2p/src/timeouts.rs | 0 .../network-libp2p/src/topology.rs | 0 .../network-libp2p/src/traits.rs | 0 .../network-libp2p/src/transport.rs | 0 .../network-libp2p/tests/tests.rs | 0 core/network/Cargo.toml | 29 ++++++ {substrate => core}/network/README.adoc | 0 {substrate => core}/network/src/blocks.rs | 0 {substrate => core}/network/src/chain.rs | 0 {substrate => core}/network/src/config.rs | 0 .../network/src/consensus_gossip.rs | 0 {substrate => core}/network/src/error.rs | 0 .../network/src/import_queue.rs | 0 {substrate => core}/network/src/io.rs | 0 {substrate => core}/network/src/lib.rs | 0 {substrate => core}/network/src/message.rs | 0 {substrate => core}/network/src/on_demand.rs | 0 {substrate => core}/network/src/protocol.rs | 0 {substrate => core}/network/src/service.rs | 0 .../network/src/specialization.rs | 0 {substrate => core}/network/src/sync.rs | 0 {substrate => core}/network/src/test/mod.rs | 0 {substrate => core}/network/src/test/sync.rs | 0 {substrate => core}/primitives/Cargo.toml | 0 {substrate => core}/primitives/README.adoc | 0 .../primitives/src/authority_id.rs | 0 {substrate => core}/primitives/src/bytes.rs | 0 {substrate => core}/primitives/src/ed25519.rs | 0 {substrate => core}/primitives/src/hash.rs | 0 {substrate => core}/primitives/src/hasher.rs | 0 {substrate => core}/primitives/src/hashing.rs | 0 .../primitives/src/hexdisplay.rs | 0 {substrate => core}/primitives/src/lib.rs | 0 .../primitives/src/rlp_codec.rs | 0 {substrate => core}/primitives/src/sandbox.rs | 0 {substrate => core}/primitives/src/storage.rs | 0 {substrate => core}/primitives/src/tests.rs | 0 .../primitives/src/u32_trait.rs | 0 {substrate => core}/primitives/src/uint.rs | 0 {substrate => core}/pwasm-alloc/Cargo.toml | 0 {substrate => core}/pwasm-alloc/README.adoc | 0 {substrate => core}/pwasm-alloc/build.rs | 0 {substrate => core}/pwasm-alloc/src/lib.rs | 0 {substrate => core}/pwasm-libc/Cargo.toml | 0 {substrate => core}/pwasm-libc/README.adoc | 0 {substrate => core}/pwasm-libc/src/lib.rs | 0 {substrate => core}/rpc-servers/Cargo.toml | 0 {substrate => core}/rpc-servers/README.adoc | 0 {substrate => core}/rpc-servers/src/lib.rs | 0 {substrate => core}/rpc/Cargo.toml | 0 {substrate => core}/rpc/README.adoc | 0 {substrate => core}/rpc/src/author/error.rs | 0 {substrate => core}/rpc/src/author/mod.rs | 0 {substrate => core}/rpc/src/author/tests.rs | 0 {substrate => core}/rpc/src/chain/error.rs | 0 {substrate => core}/rpc/src/chain/mod.rs | 0 {substrate => core}/rpc/src/chain/tests.rs | 0 {substrate => core}/rpc/src/errors.rs | 0 {substrate => core}/rpc/src/helpers.rs | 0 {substrate => core}/rpc/src/lib.rs | 0 {substrate => core}/rpc/src/metadata.rs | 0 {substrate => core}/rpc/src/state/error.rs | 0 {substrate => core}/rpc/src/state/mod.rs | 0 {substrate => core}/rpc/src/state/tests.rs | 0 {substrate => core}/rpc/src/subscriptions.rs | 0 {substrate => core}/rpc/src/system/error.rs | 0 {substrate => core}/rpc/src/system/mod.rs | 0 {substrate => core}/rpc/src/system/tests.rs | 0 {substrate => core}/runtime-io/Cargo.toml | 0 {substrate => core}/runtime-io/README.adoc | 0 {substrate => core}/runtime-io/build.rs | 0 {substrate => core}/runtime-io/src/lib.rs | 0 {substrate => core}/runtime-io/with_std.rs | 0 {substrate => core}/runtime-io/without_std.rs | 0 .../runtime-sandbox/Cargo.toml | 0 .../runtime-sandbox/README.adoc | 0 {substrate => core}/runtime-sandbox/build.rs | 0 .../runtime-sandbox/src/lib.rs | 0 .../runtime-sandbox/with_std.rs | 0 .../runtime-sandbox/without_std.rs | 0 {substrate => core}/runtime-std/Cargo.toml | 0 {substrate => core}/runtime-std/README.adoc | 0 {substrate => core}/runtime-std/build.rs | 0 {substrate => core}/runtime-std/src/lib.rs | 0 {substrate => core}/runtime-std/with_std.rs | 0 .../runtime-std/without_std.rs | 0 .../runtime-support/Cargo.toml | 2 +- .../runtime-support/README.adoc | 0 .../runtime-support/src/dispatch.rs | 0 .../runtime-support/src/event.rs | 0 .../runtime-support/src/hashable.rs | 0 .../runtime-support/src/lib.rs | 0 .../runtime-support/src/metadata.rs | 0 .../runtime-support/src/storage/generator.rs | 0 .../runtime-support/src/storage/mod.rs | 0 {substrate => core}/runtime/README.adoc | 0 .../runtime/balances/Cargo.toml | 0 .../runtime/balances/src/address.rs | 0 .../runtime/balances/src/genesis_config.rs | 0 .../runtime/balances/src/lib.rs | 0 .../runtime/balances/src/mock.rs | 0 .../runtime/balances/src/tests.rs | 0 .../runtime/consensus/Cargo.toml | 0 .../runtime/consensus/src/lib.rs | 0 .../runtime/contract/Cargo.toml | 0 .../runtime/contract/src/account_db.rs | 0 .../runtime/contract/src/double_map.rs | 0 .../runtime/contract/src/exec.rs | 0 .../runtime/contract/src/gas.rs | 0 .../runtime/contract/src/genesis_config.rs | 0 .../runtime/contract/src/lib.rs | 0 .../runtime/contract/src/tests.rs | 0 .../runtime/contract/src/vm/env_def/macros.rs | 0 .../runtime/contract/src/vm/env_def/mod.rs | 0 .../runtime/contract/src/vm/mod.rs | 0 .../runtime/contract/src/vm/prepare.rs | 0 .../runtime/council/Cargo.toml | 0 .../runtime/council/src/lib.rs | 0 .../runtime/council/src/motions.rs | 0 .../runtime/council/src/seats.rs | 0 .../runtime/council/src/voting.rs | 0 .../runtime/democracy/Cargo.toml | 0 .../runtime/democracy/src/lib.rs | 0 .../runtime/democracy/src/vote_threshold.rs | 0 .../runtime/example/Cargo.toml | 0 .../runtime/example/src/lib.rs | 0 .../runtime/executive/Cargo.toml | 0 .../runtime/executive/src/lib.rs | 0 .../runtime/primitives/Cargo.toml | 0 .../runtime/primitives/src/bft.rs | 0 .../runtime/primitives/src/generic/block.rs | 0 .../src/generic/checked_extrinsic.rs | 0 .../runtime/primitives/src/generic/digest.rs | 0 .../runtime/primitives/src/generic/header.rs | 0 .../runtime/primitives/src/generic/mod.rs | 0 .../runtime/primitives/src/generic/tests.rs | 0 .../src/generic/unchecked_extrinsic.rs | 0 .../runtime/primitives/src/lib.rs | 0 .../runtime/primitives/src/testing.rs | 0 .../runtime/primitives/src/traits.rs | 0 .../runtime/session/Cargo.toml | 0 .../runtime/session/src/lib.rs | 0 .../runtime/staking/Cargo.toml | 0 .../runtime/staking/src/genesis_config.rs | 0 .../runtime/staking/src/lib.rs | 0 .../runtime/staking/src/mock.rs | 0 .../runtime/staking/src/tests.rs | 0 {substrate => core}/runtime/system/Cargo.toml | 0 {substrate => core}/runtime/system/src/lib.rs | 0 .../runtime/timestamp/Cargo.toml | 0 .../runtime/timestamp/src/lib.rs | 0 .../runtime/treasury/Cargo.toml | 0 .../runtime/treasury/src/lib.rs | 0 .../runtime/version/Cargo.toml | 0 .../runtime/version/src/lib.rs | 0 {substrate => core}/serializer/Cargo.toml | 0 {substrate => core}/serializer/README.adoc | 0 {substrate => core}/serializer/src/lib.rs | 0 core/service/Cargo.toml | 31 ++++++ {substrate => core}/service/README.adoc | 0 {substrate => core}/service/src/chain_ops.rs | 0 {substrate => core}/service/src/chain_spec.rs | 0 {substrate => core}/service/src/components.rs | 0 {substrate => core}/service/src/config.rs | 0 {substrate => core}/service/src/error.rs | 0 {substrate => core}/service/src/lib.rs | 0 {substrate => core}/state-db/Cargo.toml | 6 +- {substrate => core}/state-db/README.adoc | 0 {substrate => core}/state-db/src/lib.rs | 0 {substrate => core}/state-db/src/pruning.rs | 0 {substrate => core}/state-db/src/test.rs | 0 .../state-db/src/unfinalized.rs | 0 {substrate => core}/state-machine/Cargo.toml | 0 {substrate => core}/state-machine/README.adoc | 0 .../state-machine/src/backend.rs | 0 {substrate => core}/state-machine/src/ext.rs | 0 {substrate => core}/state-machine/src/lib.rs | 0 .../state-machine/src/proving_backend.rs | 0 .../state-machine/src/testing.rs | 0 .../state-machine/src/trie_backend.rs | 0 {substrate => core}/telemetry/Cargo.toml | 0 {substrate => core}/telemetry/README.adoc | 0 {substrate => core}/telemetry/src/lib.rs | 0 {substrate => core}/test-client/Cargo.toml | 2 +- {substrate => core}/test-client/README.adoc | 0 .../test-client/src/block_builder_ext.rs | 0 .../test-client/src/client_ext.rs | 0 {substrate => core}/test-client/src/lib.rs | 0 {substrate => core}/test-runtime/Cargo.toml | 0 {substrate => core}/test-runtime/README.adoc | 0 .../test-runtime/src/genesismap.rs | 0 {substrate => core}/test-runtime/src/lib.rs | 0 .../test-runtime/src/system.rs | 0 .../test-runtime/wasm/Cargo.lock | 0 .../test-runtime/wasm/Cargo.toml | 0 .../test-runtime/wasm/build.sh | 0 {substrate => core}/test-runtime/wasm/src | 0 doc/packages/substrate.adoc | 58 ++++++------ node/api/Cargo.toml | 6 +- node/cli/Cargo.toml | 2 +- node/consensus/Cargo.toml | 14 +-- node/executor/Cargo.toml | 30 +++--- node/network/Cargo.toml | 6 +- node/primitives/Cargo.toml | 12 +-- node/runtime/Cargo.toml | 40 ++++---- node/runtime/wasm/Cargo.toml | 38 ++++---- node/service/Cargo.toml | 12 +-- node/transaction-pool/Cargo.toml | 12 +-- scripts/common.sh | 4 +- subkey/Cargo.toml | 2 +- substrate/client/db/Cargo.toml | 24 ----- .../release/runtime_test.compact.wasm | Bin 48108 -> 0 bytes .../release/runtime_test.wasm | Bin 48318 -> 0 bytes substrate/network/Cargo.toml | 29 ------ substrate/service/Cargo.toml | 31 ------ .../substrate_test_runtime.compact.wasm | Bin 54064 -> 0 bytes .../release/substrate_test_runtime.wasm | Bin 54196 -> 0 bytes 309 files changed, 274 insertions(+), 274 deletions(-) rename {substrate => core}/bft/Cargo.toml (100%) rename {substrate => core}/bft/README.adoc (100%) rename {substrate => core}/bft/src/error.rs (100%) rename {substrate => core}/bft/src/lib.rs (100%) rename {substrate => core}/cli/Cargo.toml (59%) rename {substrate => core}/cli/README.adoc (100%) rename {substrate => core}/cli/build.rs (100%) rename {substrate => core}/cli/doc/shell-completion.adoc (100%) rename {substrate => core}/cli/src/cli.yml (100%) rename {substrate => core}/cli/src/error.rs (100%) rename {substrate => core}/cli/src/informant.rs (100%) rename {substrate => core}/cli/src/lib.rs (100%) rename {substrate => core}/cli/src/panic_hook.rs (100%) rename {substrate => core}/client/Cargo.toml (93%) rename {substrate => core}/client/README.adoc (100%) create mode 100644 core/client/db/Cargo.toml rename {substrate => core}/client/db/src/cache.rs (100%) rename {substrate => core}/client/db/src/lib.rs (100%) rename {substrate => core}/client/db/src/light.rs (100%) rename {substrate => core}/client/db/src/utils.rs (100%) rename {substrate => core}/client/src/backend.rs (100%) rename {substrate => core}/client/src/block_builder.rs (100%) rename {substrate => core}/client/src/blockchain.rs (100%) rename {substrate => core}/client/src/call_executor.rs (100%) rename {substrate => core}/client/src/cht.rs (100%) rename {substrate => core}/client/src/client.rs (100%) rename {substrate => core}/client/src/error.rs (100%) rename {substrate => core}/client/src/genesis.rs (100%) rename {substrate => core}/client/src/in_mem.rs (100%) rename {substrate => core}/client/src/lib.rs (100%) rename {substrate => core}/client/src/light/backend.rs (100%) rename {substrate => core}/client/src/light/blockchain.rs (100%) rename {substrate => core}/client/src/light/call_executor.rs (100%) rename {substrate => core}/client/src/light/fetcher.rs (100%) rename {substrate => core}/client/src/light/mod.rs (100%) rename {substrate => core}/client/src/notifications.rs (100%) rename {substrate => core}/codec/Cargo.toml (100%) rename {substrate => core}/codec/README.adoc (100%) rename {substrate => core}/codec/derive/Cargo.toml (100%) rename {substrate => core}/codec/derive/src/decode.rs (100%) rename {substrate => core}/codec/derive/src/encode.rs (100%) rename {substrate => core}/codec/derive/src/lib.rs (100%) rename {substrate => core}/codec/derive/tests/mod.rs (100%) rename {substrate => core}/codec/src/codec.rs (100%) rename {substrate => core}/codec/src/joiner.rs (100%) rename {substrate => core}/codec/src/keyedvec.rs (100%) rename {substrate => core}/codec/src/lib.rs (100%) rename {substrate => core}/environmental/Cargo.toml (100%) rename {substrate => core}/environmental/README.adoc (100%) rename {substrate => core}/environmental/src/lib.rs (100%) rename {substrate => core}/environmental/with_std.rs (100%) rename {substrate => core}/environmental/without_std.rs (100%) rename {substrate => core}/executor/Cargo.toml (100%) rename {substrate => core}/executor/README.adoc (100%) rename {substrate => core}/executor/src/error.rs (100%) rename {substrate => core}/executor/src/lib.rs (100%) rename {substrate => core}/executor/src/native_executor.rs (100%) rename {substrate => core}/executor/src/sandbox.rs (100%) rename {substrate => core}/executor/src/wasm_executor.rs (100%) rename {substrate => core}/executor/src/wasm_utils.rs (100%) rename {substrate => core}/executor/wasm/Cargo.lock (100%) rename {substrate => core}/executor/wasm/Cargo.toml (100%) rename {substrate => core}/executor/wasm/build.sh (100%) rename {substrate => core}/executor/wasm/src/lib.rs (100%) rename {substrate => core}/extrinsic-pool/Cargo.toml (52%) rename {substrate => core}/extrinsic-pool/README.adoc (100%) rename {substrate => core}/extrinsic-pool/src/error.rs (100%) rename {substrate => core}/extrinsic-pool/src/lib.rs (100%) rename {substrate => core}/extrinsic-pool/src/listener.rs (100%) rename {substrate => core}/extrinsic-pool/src/pool.rs (100%) rename {substrate => core}/extrinsic-pool/src/rotator.rs (100%) rename {substrate => core}/extrinsic-pool/src/watcher.rs (100%) rename {substrate => core}/keyring/Cargo.toml (100%) rename {substrate => core}/keyring/README.adoc (100%) rename {substrate => core}/keyring/src/lib.rs (100%) rename {substrate => core}/keystore/Cargo.toml (100%) rename {substrate => core}/keystore/README.adoc (100%) rename {substrate => core}/keystore/src/lib.rs (100%) rename {substrate => core}/misbehavior-check/Cargo.toml (100%) rename {substrate => core}/misbehavior-check/README.adoc (100%) rename {substrate => core}/misbehavior-check/src/lib.rs (100%) rename {substrate => core}/network-libp2p/Cargo.toml (100%) rename {substrate => core}/network-libp2p/README.adoc (100%) rename {substrate => core}/network-libp2p/src/connection_filter.rs (100%) rename {substrate => core}/network-libp2p/src/custom_proto.rs (99%) rename {substrate => core}/network-libp2p/src/error.rs (100%) rename {substrate => core}/network-libp2p/src/lib.rs (100%) rename {substrate => core}/network-libp2p/src/network_state.rs (100%) rename {substrate => core}/network-libp2p/src/service.rs (99%) rename {substrate => core}/network-libp2p/src/timeouts.rs (100%) rename {substrate => core}/network-libp2p/src/topology.rs (100%) rename {substrate => core}/network-libp2p/src/traits.rs (100%) rename {substrate => core}/network-libp2p/src/transport.rs (100%) rename {substrate => core}/network-libp2p/tests/tests.rs (100%) create mode 100644 core/network/Cargo.toml rename {substrate => core}/network/README.adoc (100%) rename {substrate => core}/network/src/blocks.rs (100%) rename {substrate => core}/network/src/chain.rs (100%) rename {substrate => core}/network/src/config.rs (100%) rename {substrate => core}/network/src/consensus_gossip.rs (100%) rename {substrate => core}/network/src/error.rs (100%) rename {substrate => core}/network/src/import_queue.rs (100%) rename {substrate => core}/network/src/io.rs (100%) rename {substrate => core}/network/src/lib.rs (100%) rename {substrate => core}/network/src/message.rs (100%) rename {substrate => core}/network/src/on_demand.rs (100%) rename {substrate => core}/network/src/protocol.rs (100%) rename {substrate => core}/network/src/service.rs (100%) rename {substrate => core}/network/src/specialization.rs (100%) rename {substrate => core}/network/src/sync.rs (100%) rename {substrate => core}/network/src/test/mod.rs (100%) rename {substrate => core}/network/src/test/sync.rs (100%) rename {substrate => core}/primitives/Cargo.toml (100%) rename {substrate => core}/primitives/README.adoc (100%) rename {substrate => core}/primitives/src/authority_id.rs (100%) rename {substrate => core}/primitives/src/bytes.rs (100%) rename {substrate => core}/primitives/src/ed25519.rs (100%) rename {substrate => core}/primitives/src/hash.rs (100%) rename {substrate => core}/primitives/src/hasher.rs (100%) rename {substrate => core}/primitives/src/hashing.rs (100%) rename {substrate => core}/primitives/src/hexdisplay.rs (100%) rename {substrate => core}/primitives/src/lib.rs (100%) rename {substrate => core}/primitives/src/rlp_codec.rs (100%) rename {substrate => core}/primitives/src/sandbox.rs (100%) rename {substrate => core}/primitives/src/storage.rs (100%) rename {substrate => core}/primitives/src/tests.rs (100%) rename {substrate => core}/primitives/src/u32_trait.rs (100%) rename {substrate => core}/primitives/src/uint.rs (100%) rename {substrate => core}/pwasm-alloc/Cargo.toml (100%) rename {substrate => core}/pwasm-alloc/README.adoc (100%) rename {substrate => core}/pwasm-alloc/build.rs (100%) rename {substrate => core}/pwasm-alloc/src/lib.rs (100%) rename {substrate => core}/pwasm-libc/Cargo.toml (100%) rename {substrate => core}/pwasm-libc/README.adoc (100%) rename {substrate => core}/pwasm-libc/src/lib.rs (100%) rename {substrate => core}/rpc-servers/Cargo.toml (100%) rename {substrate => core}/rpc-servers/README.adoc (100%) rename {substrate => core}/rpc-servers/src/lib.rs (100%) rename {substrate => core}/rpc/Cargo.toml (100%) rename {substrate => core}/rpc/README.adoc (100%) rename {substrate => core}/rpc/src/author/error.rs (100%) rename {substrate => core}/rpc/src/author/mod.rs (100%) rename {substrate => core}/rpc/src/author/tests.rs (100%) rename {substrate => core}/rpc/src/chain/error.rs (100%) rename {substrate => core}/rpc/src/chain/mod.rs (100%) rename {substrate => core}/rpc/src/chain/tests.rs (100%) rename {substrate => core}/rpc/src/errors.rs (100%) rename {substrate => core}/rpc/src/helpers.rs (100%) rename {substrate => core}/rpc/src/lib.rs (100%) rename {substrate => core}/rpc/src/metadata.rs (100%) rename {substrate => core}/rpc/src/state/error.rs (100%) rename {substrate => core}/rpc/src/state/mod.rs (100%) rename {substrate => core}/rpc/src/state/tests.rs (100%) rename {substrate => core}/rpc/src/subscriptions.rs (100%) rename {substrate => core}/rpc/src/system/error.rs (100%) rename {substrate => core}/rpc/src/system/mod.rs (100%) rename {substrate => core}/rpc/src/system/tests.rs (100%) rename {substrate => core}/runtime-io/Cargo.toml (100%) rename {substrate => core}/runtime-io/README.adoc (100%) rename {substrate => core}/runtime-io/build.rs (100%) rename {substrate => core}/runtime-io/src/lib.rs (100%) rename {substrate => core}/runtime-io/with_std.rs (100%) rename {substrate => core}/runtime-io/without_std.rs (100%) rename {substrate => core}/runtime-sandbox/Cargo.toml (100%) rename {substrate => core}/runtime-sandbox/README.adoc (100%) rename {substrate => core}/runtime-sandbox/build.rs (100%) rename {substrate => core}/runtime-sandbox/src/lib.rs (100%) rename {substrate => core}/runtime-sandbox/with_std.rs (100%) rename {substrate => core}/runtime-sandbox/without_std.rs (100%) rename {substrate => core}/runtime-std/Cargo.toml (100%) rename {substrate => core}/runtime-std/README.adoc (100%) rename {substrate => core}/runtime-std/build.rs (100%) rename {substrate => core}/runtime-std/src/lib.rs (100%) rename {substrate => core}/runtime-std/with_std.rs (100%) rename {substrate => core}/runtime-std/without_std.rs (100%) rename {substrate => core}/runtime-support/Cargo.toml (93%) rename {substrate => core}/runtime-support/README.adoc (100%) rename {substrate => core}/runtime-support/src/dispatch.rs (100%) rename {substrate => core}/runtime-support/src/event.rs (100%) rename {substrate => core}/runtime-support/src/hashable.rs (100%) rename {substrate => core}/runtime-support/src/lib.rs (100%) rename {substrate => core}/runtime-support/src/metadata.rs (100%) rename {substrate => core}/runtime-support/src/storage/generator.rs (100%) rename {substrate => core}/runtime-support/src/storage/mod.rs (100%) rename {substrate => core}/runtime/README.adoc (100%) rename {substrate => core}/runtime/balances/Cargo.toml (100%) rename {substrate => core}/runtime/balances/src/address.rs (100%) rename {substrate => core}/runtime/balances/src/genesis_config.rs (100%) rename {substrate => core}/runtime/balances/src/lib.rs (100%) rename {substrate => core}/runtime/balances/src/mock.rs (100%) rename {substrate => core}/runtime/balances/src/tests.rs (100%) rename {substrate => core}/runtime/consensus/Cargo.toml (100%) rename {substrate => core}/runtime/consensus/src/lib.rs (100%) rename {substrate => core}/runtime/contract/Cargo.toml (100%) rename {substrate => core}/runtime/contract/src/account_db.rs (100%) rename {substrate => core}/runtime/contract/src/double_map.rs (100%) rename {substrate => core}/runtime/contract/src/exec.rs (100%) rename {substrate => core}/runtime/contract/src/gas.rs (100%) rename {substrate => core}/runtime/contract/src/genesis_config.rs (100%) rename {substrate => core}/runtime/contract/src/lib.rs (100%) rename {substrate => core}/runtime/contract/src/tests.rs (100%) rename {substrate => core}/runtime/contract/src/vm/env_def/macros.rs (100%) rename {substrate => core}/runtime/contract/src/vm/env_def/mod.rs (100%) rename {substrate => core}/runtime/contract/src/vm/mod.rs (100%) rename {substrate => core}/runtime/contract/src/vm/prepare.rs (100%) rename {substrate => core}/runtime/council/Cargo.toml (100%) rename {substrate => core}/runtime/council/src/lib.rs (100%) rename {substrate => core}/runtime/council/src/motions.rs (100%) rename {substrate => core}/runtime/council/src/seats.rs (100%) rename {substrate => core}/runtime/council/src/voting.rs (100%) rename {substrate => core}/runtime/democracy/Cargo.toml (100%) rename {substrate => core}/runtime/democracy/src/lib.rs (100%) rename {substrate => core}/runtime/democracy/src/vote_threshold.rs (100%) rename {substrate => core}/runtime/example/Cargo.toml (100%) rename {substrate => core}/runtime/example/src/lib.rs (100%) rename {substrate => core}/runtime/executive/Cargo.toml (100%) rename {substrate => core}/runtime/executive/src/lib.rs (100%) rename {substrate => core}/runtime/primitives/Cargo.toml (100%) rename {substrate => core}/runtime/primitives/src/bft.rs (100%) rename {substrate => core}/runtime/primitives/src/generic/block.rs (100%) rename {substrate => core}/runtime/primitives/src/generic/checked_extrinsic.rs (100%) rename {substrate => core}/runtime/primitives/src/generic/digest.rs (100%) rename {substrate => core}/runtime/primitives/src/generic/header.rs (100%) rename {substrate => core}/runtime/primitives/src/generic/mod.rs (100%) rename {substrate => core}/runtime/primitives/src/generic/tests.rs (100%) rename {substrate => core}/runtime/primitives/src/generic/unchecked_extrinsic.rs (100%) rename {substrate => core}/runtime/primitives/src/lib.rs (100%) rename {substrate => core}/runtime/primitives/src/testing.rs (100%) rename {substrate => core}/runtime/primitives/src/traits.rs (100%) rename {substrate => core}/runtime/session/Cargo.toml (100%) rename {substrate => core}/runtime/session/src/lib.rs (100%) rename {substrate => core}/runtime/staking/Cargo.toml (100%) rename {substrate => core}/runtime/staking/src/genesis_config.rs (100%) rename {substrate => core}/runtime/staking/src/lib.rs (100%) rename {substrate => core}/runtime/staking/src/mock.rs (100%) rename {substrate => core}/runtime/staking/src/tests.rs (100%) rename {substrate => core}/runtime/system/Cargo.toml (100%) rename {substrate => core}/runtime/system/src/lib.rs (100%) rename {substrate => core}/runtime/timestamp/Cargo.toml (100%) rename {substrate => core}/runtime/timestamp/src/lib.rs (100%) rename {substrate => core}/runtime/treasury/Cargo.toml (100%) rename {substrate => core}/runtime/treasury/src/lib.rs (100%) rename {substrate => core}/runtime/version/Cargo.toml (100%) rename {substrate => core}/runtime/version/src/lib.rs (100%) rename {substrate => core}/serializer/Cargo.toml (100%) rename {substrate => core}/serializer/README.adoc (100%) rename {substrate => core}/serializer/src/lib.rs (100%) create mode 100644 core/service/Cargo.toml rename {substrate => core}/service/README.adoc (100%) rename {substrate => core}/service/src/chain_ops.rs (100%) rename {substrate => core}/service/src/chain_spec.rs (100%) rename {substrate => core}/service/src/components.rs (100%) rename {substrate => core}/service/src/config.rs (100%) rename {substrate => core}/service/src/error.rs (100%) rename {substrate => core}/service/src/lib.rs (100%) rename {substrate => core}/state-db/Cargo.toml (51%) rename {substrate => core}/state-db/README.adoc (100%) rename {substrate => core}/state-db/src/lib.rs (100%) rename {substrate => core}/state-db/src/pruning.rs (100%) rename {substrate => core}/state-db/src/test.rs (100%) rename {substrate => core}/state-db/src/unfinalized.rs (100%) rename {substrate => core}/state-machine/Cargo.toml (100%) rename {substrate => core}/state-machine/README.adoc (100%) rename {substrate => core}/state-machine/src/backend.rs (100%) rename {substrate => core}/state-machine/src/ext.rs (100%) rename {substrate => core}/state-machine/src/lib.rs (100%) rename {substrate => core}/state-machine/src/proving_backend.rs (100%) rename {substrate => core}/state-machine/src/testing.rs (100%) rename {substrate => core}/state-machine/src/trie_backend.rs (100%) rename {substrate => core}/telemetry/Cargo.toml (100%) rename {substrate => core}/telemetry/README.adoc (100%) rename {substrate => core}/telemetry/src/lib.rs (100%) rename {substrate => core}/test-client/Cargo.toml (90%) rename {substrate => core}/test-client/README.adoc (100%) rename {substrate => core}/test-client/src/block_builder_ext.rs (100%) rename {substrate => core}/test-client/src/client_ext.rs (100%) rename {substrate => core}/test-client/src/lib.rs (100%) rename {substrate => core}/test-runtime/Cargo.toml (100%) rename {substrate => core}/test-runtime/README.adoc (100%) rename {substrate => core}/test-runtime/src/genesismap.rs (100%) rename {substrate => core}/test-runtime/src/lib.rs (100%) rename {substrate => core}/test-runtime/src/system.rs (100%) rename {substrate => core}/test-runtime/wasm/Cargo.lock (100%) rename {substrate => core}/test-runtime/wasm/Cargo.toml (100%) rename {substrate => core}/test-runtime/wasm/build.sh (100%) rename {substrate => core}/test-runtime/wasm/src (100%) delete mode 100644 substrate/client/db/Cargo.toml delete mode 100644 substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm delete mode 100755 substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm delete mode 100644 substrate/network/Cargo.toml delete mode 100644 substrate/service/Cargo.toml delete mode 100644 substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm delete mode 100755 substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm diff --git a/.gitignore b/.gitignore index 8058ae508f8eb..e315ab2a9534b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,12 +3,12 @@ *.swp .wasm-binaries polkadot/runtime/wasm/target/ -substrate/executor/wasm/target/ -substrate/test-runtime/wasm/target/ -substrate/pwasm-alloc/target/ -substrate/pwasm-libc/target/ -substrate/pwasm-alloc/Cargo.lock -substrate/pwasm-libc/Cargo.lock +core/executor/wasm/target/ +core/test-runtime/wasm/target/ +core/pwasm-alloc/target/ +core/pwasm-libc/target/ +core/pwasm-alloc/Cargo.lock +core/pwasm-libc/Cargo.lock node/runtime/wasm/target/ **/._* .vscode diff --git a/CONTRIBUTING.adoc b/CONTRIBUTING.adoc index b789e03ed114c..32976ad7757be 100644 --- a/CONTRIBUTING.adoc +++ b/CONTRIBUTING.adoc @@ -18,9 +18,9 @@ There are a few basic ground-rules for contributors (including the maintainer(s) Merging pull requests once CI is successful: -. A pull request that does not alter any logic (e.g. comments, dependencies, docs) may be tagged https://github.com/paritytech/substrate/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3AA2-insubstantial[`insubstantial`] and merged by its author. +. A pull request that does not alter any logic (e.g. comments, dependencies, docs) may be tagged https://github.com/paritytech/core/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+label%3AA2-insubstantial[`insubstantial`] and merged by its author. . A pull request with no large change to logic that is an urgent fix may be merged after a non-author contributor has reviewed it well. -. All other PRs should sit for 48 hours with the https://github.com/paritytech/substrate/pulls?q=is%3Apr+is%3Aopen+label%3AA0-pleasereview[`pleasereview`] tag in order to garner feedback. +. All other PRs should sit for 48 hours with the https://github.com/paritytech/core/pulls?q=is%3Apr+is%3Aopen+label%3AA0-pleasereview[`pleasereview`] tag in order to garner feedback. . No PR should be merged until all reviews' comments are addressed. .Reviewing pull requests: diff --git a/Cargo.toml b/Cargo.toml index 637894e4a9317..dc64a843c101c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,45 +1,45 @@ [workspace] members = [ - "substrate/bft", - "substrate/cli", - "substrate/client", - "substrate/client/db", - "substrate/codec", - "substrate/codec/derive", - "substrate/environmental", - "substrate/executor", - "substrate/extrinsic-pool", - "substrate/keyring", - "substrate/misbehavior-check", - "substrate/network", - "substrate/primitives", - "substrate/rpc", - "substrate/rpc-servers", - "substrate/runtime-io", - "substrate/runtime-sandbox", - "substrate/runtime-std", - "substrate/runtime-support", - "substrate/runtime/balances", - "substrate/runtime/consensus", - "substrate/runtime/contract", - "substrate/runtime/council", - "substrate/runtime/democracy", - "substrate/runtime/example", - "substrate/runtime/executive", - "substrate/runtime/primitives", - "substrate/runtime/session", - "substrate/runtime/staking", - "substrate/runtime/system", - "substrate/runtime/timestamp", - "substrate/runtime/treasury", - "substrate/runtime/version", - "substrate/serializer", - "substrate/service", - "substrate/state-db", - "substrate/state-machine", - "substrate/test-runtime", - "substrate/telemetry", - "substrate/keystore", + "core/bft", + "core/cli", + "core/client", + "core/client/db", + "core/codec", + "core/codec/derive", + "core/environmental", + "core/executor", + "core/extrinsic-pool", + "core/keyring", + "core/misbehavior-check", + "core/network", + "core/primitives", + "core/rpc", + "core/rpc-servers", + "core/runtime-io", + "core/runtime-sandbox", + "core/runtime-std", + "core/runtime-support", + "core/runtime/balances", + "core/runtime/consensus", + "core/runtime/contract", + "core/runtime/council", + "core/runtime/democracy", + "core/runtime/example", + "core/runtime/executive", + "core/runtime/primitives", + "core/runtime/session", + "core/runtime/staking", + "core/runtime/system", + "core/runtime/timestamp", + "core/runtime/treasury", + "core/runtime/version", + "core/serializer", + "core/service", + "core/state-db", + "core/state-machine", + "core/test-runtime", + "core/telemetry", + "core/keystore", "node", "node/cli", "node/api", @@ -54,10 +54,10 @@ members = [ ] exclude = [ "node/runtime/wasm", - "substrate/executor/wasm", - "substrate/pwasm-alloc", - "substrate/pwasm-libc", - "substrate/test-runtime/wasm", + "core/executor/wasm", + "core/pwasm-alloc", + "core/pwasm-libc", + "core/test-runtime/wasm", ] [badges] diff --git a/substrate/bft/Cargo.toml b/core/bft/Cargo.toml similarity index 100% rename from substrate/bft/Cargo.toml rename to core/bft/Cargo.toml diff --git a/substrate/bft/README.adoc b/core/bft/README.adoc similarity index 100% rename from substrate/bft/README.adoc rename to core/bft/README.adoc diff --git a/substrate/bft/src/error.rs b/core/bft/src/error.rs similarity index 100% rename from substrate/bft/src/error.rs rename to core/bft/src/error.rs diff --git a/substrate/bft/src/lib.rs b/core/bft/src/lib.rs similarity index 100% rename from substrate/bft/src/lib.rs rename to core/bft/src/lib.rs diff --git a/substrate/cli/Cargo.toml b/core/cli/Cargo.toml similarity index 59% rename from substrate/cli/Cargo.toml rename to core/cli/Cargo.toml index 7ae824c3dc104..df08233480d26 100644 --- a/substrate/cli/Cargo.toml +++ b/core/cli/Cargo.toml @@ -23,12 +23,12 @@ futures = "0.1.17" fdlimit = "0.1" exit-future = "0.1" sysinfo = "0.5.7" -substrate-client = { path = "../../substrate/client" } -substrate-network = { path = "../../substrate/network" } -substrate-network-libp2p = { path = "../../substrate/network-libp2p" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-service = { path = "../../substrate/service" } -substrate-telemetry = { path = "../../substrate/telemetry" } +substrate-client = { path = "../../core/client" } +substrate-network = { path = "../../core/network" } +substrate-network-libp2p = { path = "../../core/network-libp2p" } +substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-service = { path = "../../core/service" } +substrate-telemetry = { path = "../../core/telemetry" } names = "0.11.0" [build-dependencies] diff --git a/substrate/cli/README.adoc b/core/cli/README.adoc similarity index 100% rename from substrate/cli/README.adoc rename to core/cli/README.adoc diff --git a/substrate/cli/build.rs b/core/cli/build.rs similarity index 100% rename from substrate/cli/build.rs rename to core/cli/build.rs diff --git a/substrate/cli/doc/shell-completion.adoc b/core/cli/doc/shell-completion.adoc similarity index 100% rename from substrate/cli/doc/shell-completion.adoc rename to core/cli/doc/shell-completion.adoc diff --git a/substrate/cli/src/cli.yml b/core/cli/src/cli.yml similarity index 100% rename from substrate/cli/src/cli.yml rename to core/cli/src/cli.yml diff --git a/substrate/cli/src/error.rs b/core/cli/src/error.rs similarity index 100% rename from substrate/cli/src/error.rs rename to core/cli/src/error.rs diff --git a/substrate/cli/src/informant.rs b/core/cli/src/informant.rs similarity index 100% rename from substrate/cli/src/informant.rs rename to core/cli/src/informant.rs diff --git a/substrate/cli/src/lib.rs b/core/cli/src/lib.rs similarity index 100% rename from substrate/cli/src/lib.rs rename to core/cli/src/lib.rs diff --git a/substrate/cli/src/panic_hook.rs b/core/cli/src/panic_hook.rs similarity index 100% rename from substrate/cli/src/panic_hook.rs rename to core/cli/src/panic_hook.rs diff --git a/substrate/client/Cargo.toml b/core/client/Cargo.toml similarity index 93% rename from substrate/client/Cargo.toml rename to core/client/Cargo.toml index 949de8cd4df4a..f374a5e6d34b8 100644 --- a/substrate/client/Cargo.toml +++ b/core/client/Cargo.toml @@ -21,7 +21,7 @@ substrate-runtime-io = { path = "../runtime-io" } substrate-runtime-support = { path = "../runtime-support" } substrate-runtime-primitives = { path = "../runtime/primitives" } substrate-state-machine = { path = "../state-machine" } -substrate-keyring = { path = "../../substrate/keyring" } +substrate-keyring = { path = "../../core/keyring" } substrate-telemetry = { path = "../telemetry" } hashdb = "0.2.1" patricia-trie = "0.2.1" diff --git a/substrate/client/README.adoc b/core/client/README.adoc similarity index 100% rename from substrate/client/README.adoc rename to core/client/README.adoc diff --git a/core/client/db/Cargo.toml b/core/client/db/Cargo.toml new file mode 100644 index 0000000000000..4d28ea037d8d8 --- /dev/null +++ b/core/client/db/Cargo.toml @@ -0,0 +1,24 @@ +[package] +name = "substrate-client-db" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +parking_lot = "0.4" +log = "0.3" +kvdb = "0.1" +kvdb-rocksdb = "0.1.3" +hashdb = "0.2.1" +memorydb = "0.2.1" +substrate-primitives = { path = "../../../core/primitives" } +substrate-runtime-primitives = { path = "../../../core/runtime/primitives" } +substrate-client = { path = "../../../core/client" } +substrate-state-machine = { path = "../../../core/state-machine" } +substrate-runtime-support = { path = "../../../core/runtime-support" } +substrate-codec = { path = "../../../core/codec" } +substrate-codec-derive = { path = "../../../core/codec/derive" } +substrate-executor = { path = "../../../core/executor" } +substrate-state-db = { path = "../../../core/state-db" } + +[dev-dependencies] +kvdb-memorydb = "0.1" diff --git a/substrate/client/db/src/cache.rs b/core/client/db/src/cache.rs similarity index 100% rename from substrate/client/db/src/cache.rs rename to core/client/db/src/cache.rs diff --git a/substrate/client/db/src/lib.rs b/core/client/db/src/lib.rs similarity index 100% rename from substrate/client/db/src/lib.rs rename to core/client/db/src/lib.rs diff --git a/substrate/client/db/src/light.rs b/core/client/db/src/light.rs similarity index 100% rename from substrate/client/db/src/light.rs rename to core/client/db/src/light.rs diff --git a/substrate/client/db/src/utils.rs b/core/client/db/src/utils.rs similarity index 100% rename from substrate/client/db/src/utils.rs rename to core/client/db/src/utils.rs diff --git a/substrate/client/src/backend.rs b/core/client/src/backend.rs similarity index 100% rename from substrate/client/src/backend.rs rename to core/client/src/backend.rs diff --git a/substrate/client/src/block_builder.rs b/core/client/src/block_builder.rs similarity index 100% rename from substrate/client/src/block_builder.rs rename to core/client/src/block_builder.rs diff --git a/substrate/client/src/blockchain.rs b/core/client/src/blockchain.rs similarity index 100% rename from substrate/client/src/blockchain.rs rename to core/client/src/blockchain.rs diff --git a/substrate/client/src/call_executor.rs b/core/client/src/call_executor.rs similarity index 100% rename from substrate/client/src/call_executor.rs rename to core/client/src/call_executor.rs diff --git a/substrate/client/src/cht.rs b/core/client/src/cht.rs similarity index 100% rename from substrate/client/src/cht.rs rename to core/client/src/cht.rs diff --git a/substrate/client/src/client.rs b/core/client/src/client.rs similarity index 100% rename from substrate/client/src/client.rs rename to core/client/src/client.rs diff --git a/substrate/client/src/error.rs b/core/client/src/error.rs similarity index 100% rename from substrate/client/src/error.rs rename to core/client/src/error.rs diff --git a/substrate/client/src/genesis.rs b/core/client/src/genesis.rs similarity index 100% rename from substrate/client/src/genesis.rs rename to core/client/src/genesis.rs diff --git a/substrate/client/src/in_mem.rs b/core/client/src/in_mem.rs similarity index 100% rename from substrate/client/src/in_mem.rs rename to core/client/src/in_mem.rs diff --git a/substrate/client/src/lib.rs b/core/client/src/lib.rs similarity index 100% rename from substrate/client/src/lib.rs rename to core/client/src/lib.rs diff --git a/substrate/client/src/light/backend.rs b/core/client/src/light/backend.rs similarity index 100% rename from substrate/client/src/light/backend.rs rename to core/client/src/light/backend.rs diff --git a/substrate/client/src/light/blockchain.rs b/core/client/src/light/blockchain.rs similarity index 100% rename from substrate/client/src/light/blockchain.rs rename to core/client/src/light/blockchain.rs diff --git a/substrate/client/src/light/call_executor.rs b/core/client/src/light/call_executor.rs similarity index 100% rename from substrate/client/src/light/call_executor.rs rename to core/client/src/light/call_executor.rs diff --git a/substrate/client/src/light/fetcher.rs b/core/client/src/light/fetcher.rs similarity index 100% rename from substrate/client/src/light/fetcher.rs rename to core/client/src/light/fetcher.rs diff --git a/substrate/client/src/light/mod.rs b/core/client/src/light/mod.rs similarity index 100% rename from substrate/client/src/light/mod.rs rename to core/client/src/light/mod.rs diff --git a/substrate/client/src/notifications.rs b/core/client/src/notifications.rs similarity index 100% rename from substrate/client/src/notifications.rs rename to core/client/src/notifications.rs diff --git a/substrate/codec/Cargo.toml b/core/codec/Cargo.toml similarity index 100% rename from substrate/codec/Cargo.toml rename to core/codec/Cargo.toml diff --git a/substrate/codec/README.adoc b/core/codec/README.adoc similarity index 100% rename from substrate/codec/README.adoc rename to core/codec/README.adoc diff --git a/substrate/codec/derive/Cargo.toml b/core/codec/derive/Cargo.toml similarity index 100% rename from substrate/codec/derive/Cargo.toml rename to core/codec/derive/Cargo.toml diff --git a/substrate/codec/derive/src/decode.rs b/core/codec/derive/src/decode.rs similarity index 100% rename from substrate/codec/derive/src/decode.rs rename to core/codec/derive/src/decode.rs diff --git a/substrate/codec/derive/src/encode.rs b/core/codec/derive/src/encode.rs similarity index 100% rename from substrate/codec/derive/src/encode.rs rename to core/codec/derive/src/encode.rs diff --git a/substrate/codec/derive/src/lib.rs b/core/codec/derive/src/lib.rs similarity index 100% rename from substrate/codec/derive/src/lib.rs rename to core/codec/derive/src/lib.rs diff --git a/substrate/codec/derive/tests/mod.rs b/core/codec/derive/tests/mod.rs similarity index 100% rename from substrate/codec/derive/tests/mod.rs rename to core/codec/derive/tests/mod.rs diff --git a/substrate/codec/src/codec.rs b/core/codec/src/codec.rs similarity index 100% rename from substrate/codec/src/codec.rs rename to core/codec/src/codec.rs diff --git a/substrate/codec/src/joiner.rs b/core/codec/src/joiner.rs similarity index 100% rename from substrate/codec/src/joiner.rs rename to core/codec/src/joiner.rs diff --git a/substrate/codec/src/keyedvec.rs b/core/codec/src/keyedvec.rs similarity index 100% rename from substrate/codec/src/keyedvec.rs rename to core/codec/src/keyedvec.rs diff --git a/substrate/codec/src/lib.rs b/core/codec/src/lib.rs similarity index 100% rename from substrate/codec/src/lib.rs rename to core/codec/src/lib.rs diff --git a/substrate/environmental/Cargo.toml b/core/environmental/Cargo.toml similarity index 100% rename from substrate/environmental/Cargo.toml rename to core/environmental/Cargo.toml diff --git a/substrate/environmental/README.adoc b/core/environmental/README.adoc similarity index 100% rename from substrate/environmental/README.adoc rename to core/environmental/README.adoc diff --git a/substrate/environmental/src/lib.rs b/core/environmental/src/lib.rs similarity index 100% rename from substrate/environmental/src/lib.rs rename to core/environmental/src/lib.rs diff --git a/substrate/environmental/with_std.rs b/core/environmental/with_std.rs similarity index 100% rename from substrate/environmental/with_std.rs rename to core/environmental/with_std.rs diff --git a/substrate/environmental/without_std.rs b/core/environmental/without_std.rs similarity index 100% rename from substrate/environmental/without_std.rs rename to core/environmental/without_std.rs diff --git a/substrate/executor/Cargo.toml b/core/executor/Cargo.toml similarity index 100% rename from substrate/executor/Cargo.toml rename to core/executor/Cargo.toml diff --git a/substrate/executor/README.adoc b/core/executor/README.adoc similarity index 100% rename from substrate/executor/README.adoc rename to core/executor/README.adoc diff --git a/substrate/executor/src/error.rs b/core/executor/src/error.rs similarity index 100% rename from substrate/executor/src/error.rs rename to core/executor/src/error.rs diff --git a/substrate/executor/src/lib.rs b/core/executor/src/lib.rs similarity index 100% rename from substrate/executor/src/lib.rs rename to core/executor/src/lib.rs diff --git a/substrate/executor/src/native_executor.rs b/core/executor/src/native_executor.rs similarity index 100% rename from substrate/executor/src/native_executor.rs rename to core/executor/src/native_executor.rs diff --git a/substrate/executor/src/sandbox.rs b/core/executor/src/sandbox.rs similarity index 100% rename from substrate/executor/src/sandbox.rs rename to core/executor/src/sandbox.rs diff --git a/substrate/executor/src/wasm_executor.rs b/core/executor/src/wasm_executor.rs similarity index 100% rename from substrate/executor/src/wasm_executor.rs rename to core/executor/src/wasm_executor.rs diff --git a/substrate/executor/src/wasm_utils.rs b/core/executor/src/wasm_utils.rs similarity index 100% rename from substrate/executor/src/wasm_utils.rs rename to core/executor/src/wasm_utils.rs diff --git a/substrate/executor/wasm/Cargo.lock b/core/executor/wasm/Cargo.lock similarity index 100% rename from substrate/executor/wasm/Cargo.lock rename to core/executor/wasm/Cargo.lock diff --git a/substrate/executor/wasm/Cargo.toml b/core/executor/wasm/Cargo.toml similarity index 100% rename from substrate/executor/wasm/Cargo.toml rename to core/executor/wasm/Cargo.toml diff --git a/substrate/executor/wasm/build.sh b/core/executor/wasm/build.sh similarity index 100% rename from substrate/executor/wasm/build.sh rename to core/executor/wasm/build.sh diff --git a/substrate/executor/wasm/src/lib.rs b/core/executor/wasm/src/lib.rs similarity index 100% rename from substrate/executor/wasm/src/lib.rs rename to core/executor/wasm/src/lib.rs diff --git a/substrate/extrinsic-pool/Cargo.toml b/core/extrinsic-pool/Cargo.toml similarity index 52% rename from substrate/extrinsic-pool/Cargo.toml rename to core/extrinsic-pool/Cargo.toml index ba62e6a382e0f..8490e6e28b2bc 100644 --- a/substrate/extrinsic-pool/Cargo.toml +++ b/core/extrinsic-pool/Cargo.toml @@ -11,9 +11,9 @@ futures = "0.1" log = "0.3" parking_lot = "0.4" transaction-pool = "1.13.2" -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime/primitives" } [dev-dependencies] -substrate-test-client = { path = "../../substrate/test-client" } -substrate-keyring = { path = "../../substrate/keyring" } -substrate-codec = { path = "../../substrate/codec" } +substrate-test-client = { path = "../../core/test-client" } +substrate-keyring = { path = "../../core/keyring" } +substrate-codec = { path = "../../core/codec" } diff --git a/substrate/extrinsic-pool/README.adoc b/core/extrinsic-pool/README.adoc similarity index 100% rename from substrate/extrinsic-pool/README.adoc rename to core/extrinsic-pool/README.adoc diff --git a/substrate/extrinsic-pool/src/error.rs b/core/extrinsic-pool/src/error.rs similarity index 100% rename from substrate/extrinsic-pool/src/error.rs rename to core/extrinsic-pool/src/error.rs diff --git a/substrate/extrinsic-pool/src/lib.rs b/core/extrinsic-pool/src/lib.rs similarity index 100% rename from substrate/extrinsic-pool/src/lib.rs rename to core/extrinsic-pool/src/lib.rs diff --git a/substrate/extrinsic-pool/src/listener.rs b/core/extrinsic-pool/src/listener.rs similarity index 100% rename from substrate/extrinsic-pool/src/listener.rs rename to core/extrinsic-pool/src/listener.rs diff --git a/substrate/extrinsic-pool/src/pool.rs b/core/extrinsic-pool/src/pool.rs similarity index 100% rename from substrate/extrinsic-pool/src/pool.rs rename to core/extrinsic-pool/src/pool.rs diff --git a/substrate/extrinsic-pool/src/rotator.rs b/core/extrinsic-pool/src/rotator.rs similarity index 100% rename from substrate/extrinsic-pool/src/rotator.rs rename to core/extrinsic-pool/src/rotator.rs diff --git a/substrate/extrinsic-pool/src/watcher.rs b/core/extrinsic-pool/src/watcher.rs similarity index 100% rename from substrate/extrinsic-pool/src/watcher.rs rename to core/extrinsic-pool/src/watcher.rs diff --git a/substrate/keyring/Cargo.toml b/core/keyring/Cargo.toml similarity index 100% rename from substrate/keyring/Cargo.toml rename to core/keyring/Cargo.toml diff --git a/substrate/keyring/README.adoc b/core/keyring/README.adoc similarity index 100% rename from substrate/keyring/README.adoc rename to core/keyring/README.adoc diff --git a/substrate/keyring/src/lib.rs b/core/keyring/src/lib.rs similarity index 100% rename from substrate/keyring/src/lib.rs rename to core/keyring/src/lib.rs diff --git a/substrate/keystore/Cargo.toml b/core/keystore/Cargo.toml similarity index 100% rename from substrate/keystore/Cargo.toml rename to core/keystore/Cargo.toml diff --git a/substrate/keystore/README.adoc b/core/keystore/README.adoc similarity index 100% rename from substrate/keystore/README.adoc rename to core/keystore/README.adoc diff --git a/substrate/keystore/src/lib.rs b/core/keystore/src/lib.rs similarity index 100% rename from substrate/keystore/src/lib.rs rename to core/keystore/src/lib.rs diff --git a/substrate/misbehavior-check/Cargo.toml b/core/misbehavior-check/Cargo.toml similarity index 100% rename from substrate/misbehavior-check/Cargo.toml rename to core/misbehavior-check/Cargo.toml diff --git a/substrate/misbehavior-check/README.adoc b/core/misbehavior-check/README.adoc similarity index 100% rename from substrate/misbehavior-check/README.adoc rename to core/misbehavior-check/README.adoc diff --git a/substrate/misbehavior-check/src/lib.rs b/core/misbehavior-check/src/lib.rs similarity index 100% rename from substrate/misbehavior-check/src/lib.rs rename to core/misbehavior-check/src/lib.rs diff --git a/substrate/network-libp2p/Cargo.toml b/core/network-libp2p/Cargo.toml similarity index 100% rename from substrate/network-libp2p/Cargo.toml rename to core/network-libp2p/Cargo.toml diff --git a/substrate/network-libp2p/README.adoc b/core/network-libp2p/README.adoc similarity index 100% rename from substrate/network-libp2p/README.adoc rename to core/network-libp2p/README.adoc diff --git a/substrate/network-libp2p/src/connection_filter.rs b/core/network-libp2p/src/connection_filter.rs similarity index 100% rename from substrate/network-libp2p/src/connection_filter.rs rename to core/network-libp2p/src/connection_filter.rs diff --git a/substrate/network-libp2p/src/custom_proto.rs b/core/network-libp2p/src/custom_proto.rs similarity index 99% rename from substrate/network-libp2p/src/custom_proto.rs rename to core/network-libp2p/src/custom_proto.rs index 72807f21e8f2e..b6c3d5c5d354d 100644 --- a/substrate/network-libp2p/src/custom_proto.rs +++ b/core/network-libp2p/src/custom_proto.rs @@ -72,7 +72,7 @@ impl RegisteredProtocol { /// passed inside the `RegisteredProtocolOutput`. pub fn new(custom_data: T, protocol: ProtocolId, versions: &[(u8, u8)]) -> Self { - let mut proto_name = Bytes::from_static(b"/substrate/"); + let mut proto_name = Bytes::from_static(b"/core/"); proto_name.extend_from_slice(&protocol); proto_name.extend_from_slice(b"/"); diff --git a/substrate/network-libp2p/src/error.rs b/core/network-libp2p/src/error.rs similarity index 100% rename from substrate/network-libp2p/src/error.rs rename to core/network-libp2p/src/error.rs diff --git a/substrate/network-libp2p/src/lib.rs b/core/network-libp2p/src/lib.rs similarity index 100% rename from substrate/network-libp2p/src/lib.rs rename to core/network-libp2p/src/lib.rs diff --git a/substrate/network-libp2p/src/network_state.rs b/core/network-libp2p/src/network_state.rs similarity index 100% rename from substrate/network-libp2p/src/network_state.rs rename to core/network-libp2p/src/network_state.rs diff --git a/substrate/network-libp2p/src/service.rs b/core/network-libp2p/src/service.rs similarity index 99% rename from substrate/network-libp2p/src/service.rs rename to core/network-libp2p/src/service.rs index 4e82973893240..1f6f54a979624 100644 --- a/substrate/network-libp2p/src/service.rs +++ b/core/network-libp2p/src/service.rs @@ -630,9 +630,9 @@ fn listener_handle<'a, C>( sender.send( IdentifyInfo { public_key: shared.network_state.local_public_key().clone(), - protocol_version: concat!("substrate/", + protocol_version: concat!("core/", env!("CARGO_PKG_VERSION")).to_owned(), // TODO: ? - agent_version: concat!("substrate/", + agent_version: concat!("core/", env!("CARGO_PKG_VERSION")).to_owned(), listen_addrs: shared.listened_addrs.read().clone(), protocols: Vec::new(), // TODO: protocols_to_report, @@ -771,7 +771,7 @@ fn build_kademlia_response( } /// Handles a newly-opened connection to a remote with a custom protocol -/// (eg. `/substrate/dot/0`). +/// (eg. `/core/dot/0`). /// Returns a future that corresponds to when the handling is finished. fn handle_custom_connection( shared: Arc, diff --git a/substrate/network-libp2p/src/timeouts.rs b/core/network-libp2p/src/timeouts.rs similarity index 100% rename from substrate/network-libp2p/src/timeouts.rs rename to core/network-libp2p/src/timeouts.rs diff --git a/substrate/network-libp2p/src/topology.rs b/core/network-libp2p/src/topology.rs similarity index 100% rename from substrate/network-libp2p/src/topology.rs rename to core/network-libp2p/src/topology.rs diff --git a/substrate/network-libp2p/src/traits.rs b/core/network-libp2p/src/traits.rs similarity index 100% rename from substrate/network-libp2p/src/traits.rs rename to core/network-libp2p/src/traits.rs diff --git a/substrate/network-libp2p/src/transport.rs b/core/network-libp2p/src/transport.rs similarity index 100% rename from substrate/network-libp2p/src/transport.rs rename to core/network-libp2p/src/transport.rs diff --git a/substrate/network-libp2p/tests/tests.rs b/core/network-libp2p/tests/tests.rs similarity index 100% rename from substrate/network-libp2p/tests/tests.rs rename to core/network-libp2p/tests/tests.rs diff --git a/core/network/Cargo.toml b/core/network/Cargo.toml new file mode 100644 index 0000000000000..a25f545eb58a7 --- /dev/null +++ b/core/network/Cargo.toml @@ -0,0 +1,29 @@ +[package] +description = "Polkadot network protocol" +name = "substrate-network" +version = "0.1.0" +license = "GPL-3.0" +authors = ["Parity Technologies "] + +[lib] + +[dependencies] +log = "0.3" +parking_lot = "0.4" +error-chain = "0.12" +bitflags = "1.0" +futures = "0.1.17" +linked-hash-map = "0.5" +rustc-hex = "1.0" +ethcore-io = { git = "https://github.com/paritytech/parity.git" } +substrate-primitives = { path = "../../core/primitives" } +substrate-client = { path = "../../core/client" } +substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-codec = { path = "../../core/codec" } +substrate-codec-derive = { path = "../../core/codec/derive" } +substrate-network-libp2p = { path = "../../core/network-libp2p" } + +[dev-dependencies] +env_logger = "0.4" +substrate-keyring = { path = "../../core/keyring" } +substrate-test-client = { path = "../../core/test-client" } diff --git a/substrate/network/README.adoc b/core/network/README.adoc similarity index 100% rename from substrate/network/README.adoc rename to core/network/README.adoc diff --git a/substrate/network/src/blocks.rs b/core/network/src/blocks.rs similarity index 100% rename from substrate/network/src/blocks.rs rename to core/network/src/blocks.rs diff --git a/substrate/network/src/chain.rs b/core/network/src/chain.rs similarity index 100% rename from substrate/network/src/chain.rs rename to core/network/src/chain.rs diff --git a/substrate/network/src/config.rs b/core/network/src/config.rs similarity index 100% rename from substrate/network/src/config.rs rename to core/network/src/config.rs diff --git a/substrate/network/src/consensus_gossip.rs b/core/network/src/consensus_gossip.rs similarity index 100% rename from substrate/network/src/consensus_gossip.rs rename to core/network/src/consensus_gossip.rs diff --git a/substrate/network/src/error.rs b/core/network/src/error.rs similarity index 100% rename from substrate/network/src/error.rs rename to core/network/src/error.rs diff --git a/substrate/network/src/import_queue.rs b/core/network/src/import_queue.rs similarity index 100% rename from substrate/network/src/import_queue.rs rename to core/network/src/import_queue.rs diff --git a/substrate/network/src/io.rs b/core/network/src/io.rs similarity index 100% rename from substrate/network/src/io.rs rename to core/network/src/io.rs diff --git a/substrate/network/src/lib.rs b/core/network/src/lib.rs similarity index 100% rename from substrate/network/src/lib.rs rename to core/network/src/lib.rs diff --git a/substrate/network/src/message.rs b/core/network/src/message.rs similarity index 100% rename from substrate/network/src/message.rs rename to core/network/src/message.rs diff --git a/substrate/network/src/on_demand.rs b/core/network/src/on_demand.rs similarity index 100% rename from substrate/network/src/on_demand.rs rename to core/network/src/on_demand.rs diff --git a/substrate/network/src/protocol.rs b/core/network/src/protocol.rs similarity index 100% rename from substrate/network/src/protocol.rs rename to core/network/src/protocol.rs diff --git a/substrate/network/src/service.rs b/core/network/src/service.rs similarity index 100% rename from substrate/network/src/service.rs rename to core/network/src/service.rs diff --git a/substrate/network/src/specialization.rs b/core/network/src/specialization.rs similarity index 100% rename from substrate/network/src/specialization.rs rename to core/network/src/specialization.rs diff --git a/substrate/network/src/sync.rs b/core/network/src/sync.rs similarity index 100% rename from substrate/network/src/sync.rs rename to core/network/src/sync.rs diff --git a/substrate/network/src/test/mod.rs b/core/network/src/test/mod.rs similarity index 100% rename from substrate/network/src/test/mod.rs rename to core/network/src/test/mod.rs diff --git a/substrate/network/src/test/sync.rs b/core/network/src/test/sync.rs similarity index 100% rename from substrate/network/src/test/sync.rs rename to core/network/src/test/sync.rs diff --git a/substrate/primitives/Cargo.toml b/core/primitives/Cargo.toml similarity index 100% rename from substrate/primitives/Cargo.toml rename to core/primitives/Cargo.toml diff --git a/substrate/primitives/README.adoc b/core/primitives/README.adoc similarity index 100% rename from substrate/primitives/README.adoc rename to core/primitives/README.adoc diff --git a/substrate/primitives/src/authority_id.rs b/core/primitives/src/authority_id.rs similarity index 100% rename from substrate/primitives/src/authority_id.rs rename to core/primitives/src/authority_id.rs diff --git a/substrate/primitives/src/bytes.rs b/core/primitives/src/bytes.rs similarity index 100% rename from substrate/primitives/src/bytes.rs rename to core/primitives/src/bytes.rs diff --git a/substrate/primitives/src/ed25519.rs b/core/primitives/src/ed25519.rs similarity index 100% rename from substrate/primitives/src/ed25519.rs rename to core/primitives/src/ed25519.rs diff --git a/substrate/primitives/src/hash.rs b/core/primitives/src/hash.rs similarity index 100% rename from substrate/primitives/src/hash.rs rename to core/primitives/src/hash.rs diff --git a/substrate/primitives/src/hasher.rs b/core/primitives/src/hasher.rs similarity index 100% rename from substrate/primitives/src/hasher.rs rename to core/primitives/src/hasher.rs diff --git a/substrate/primitives/src/hashing.rs b/core/primitives/src/hashing.rs similarity index 100% rename from substrate/primitives/src/hashing.rs rename to core/primitives/src/hashing.rs diff --git a/substrate/primitives/src/hexdisplay.rs b/core/primitives/src/hexdisplay.rs similarity index 100% rename from substrate/primitives/src/hexdisplay.rs rename to core/primitives/src/hexdisplay.rs diff --git a/substrate/primitives/src/lib.rs b/core/primitives/src/lib.rs similarity index 100% rename from substrate/primitives/src/lib.rs rename to core/primitives/src/lib.rs diff --git a/substrate/primitives/src/rlp_codec.rs b/core/primitives/src/rlp_codec.rs similarity index 100% rename from substrate/primitives/src/rlp_codec.rs rename to core/primitives/src/rlp_codec.rs diff --git a/substrate/primitives/src/sandbox.rs b/core/primitives/src/sandbox.rs similarity index 100% rename from substrate/primitives/src/sandbox.rs rename to core/primitives/src/sandbox.rs diff --git a/substrate/primitives/src/storage.rs b/core/primitives/src/storage.rs similarity index 100% rename from substrate/primitives/src/storage.rs rename to core/primitives/src/storage.rs diff --git a/substrate/primitives/src/tests.rs b/core/primitives/src/tests.rs similarity index 100% rename from substrate/primitives/src/tests.rs rename to core/primitives/src/tests.rs diff --git a/substrate/primitives/src/u32_trait.rs b/core/primitives/src/u32_trait.rs similarity index 100% rename from substrate/primitives/src/u32_trait.rs rename to core/primitives/src/u32_trait.rs diff --git a/substrate/primitives/src/uint.rs b/core/primitives/src/uint.rs similarity index 100% rename from substrate/primitives/src/uint.rs rename to core/primitives/src/uint.rs diff --git a/substrate/pwasm-alloc/Cargo.toml b/core/pwasm-alloc/Cargo.toml similarity index 100% rename from substrate/pwasm-alloc/Cargo.toml rename to core/pwasm-alloc/Cargo.toml diff --git a/substrate/pwasm-alloc/README.adoc b/core/pwasm-alloc/README.adoc similarity index 100% rename from substrate/pwasm-alloc/README.adoc rename to core/pwasm-alloc/README.adoc diff --git a/substrate/pwasm-alloc/build.rs b/core/pwasm-alloc/build.rs similarity index 100% rename from substrate/pwasm-alloc/build.rs rename to core/pwasm-alloc/build.rs diff --git a/substrate/pwasm-alloc/src/lib.rs b/core/pwasm-alloc/src/lib.rs similarity index 100% rename from substrate/pwasm-alloc/src/lib.rs rename to core/pwasm-alloc/src/lib.rs diff --git a/substrate/pwasm-libc/Cargo.toml b/core/pwasm-libc/Cargo.toml similarity index 100% rename from substrate/pwasm-libc/Cargo.toml rename to core/pwasm-libc/Cargo.toml diff --git a/substrate/pwasm-libc/README.adoc b/core/pwasm-libc/README.adoc similarity index 100% rename from substrate/pwasm-libc/README.adoc rename to core/pwasm-libc/README.adoc diff --git a/substrate/pwasm-libc/src/lib.rs b/core/pwasm-libc/src/lib.rs similarity index 100% rename from substrate/pwasm-libc/src/lib.rs rename to core/pwasm-libc/src/lib.rs diff --git a/substrate/rpc-servers/Cargo.toml b/core/rpc-servers/Cargo.toml similarity index 100% rename from substrate/rpc-servers/Cargo.toml rename to core/rpc-servers/Cargo.toml diff --git a/substrate/rpc-servers/README.adoc b/core/rpc-servers/README.adoc similarity index 100% rename from substrate/rpc-servers/README.adoc rename to core/rpc-servers/README.adoc diff --git a/substrate/rpc-servers/src/lib.rs b/core/rpc-servers/src/lib.rs similarity index 100% rename from substrate/rpc-servers/src/lib.rs rename to core/rpc-servers/src/lib.rs diff --git a/substrate/rpc/Cargo.toml b/core/rpc/Cargo.toml similarity index 100% rename from substrate/rpc/Cargo.toml rename to core/rpc/Cargo.toml diff --git a/substrate/rpc/README.adoc b/core/rpc/README.adoc similarity index 100% rename from substrate/rpc/README.adoc rename to core/rpc/README.adoc diff --git a/substrate/rpc/src/author/error.rs b/core/rpc/src/author/error.rs similarity index 100% rename from substrate/rpc/src/author/error.rs rename to core/rpc/src/author/error.rs diff --git a/substrate/rpc/src/author/mod.rs b/core/rpc/src/author/mod.rs similarity index 100% rename from substrate/rpc/src/author/mod.rs rename to core/rpc/src/author/mod.rs diff --git a/substrate/rpc/src/author/tests.rs b/core/rpc/src/author/tests.rs similarity index 100% rename from substrate/rpc/src/author/tests.rs rename to core/rpc/src/author/tests.rs diff --git a/substrate/rpc/src/chain/error.rs b/core/rpc/src/chain/error.rs similarity index 100% rename from substrate/rpc/src/chain/error.rs rename to core/rpc/src/chain/error.rs diff --git a/substrate/rpc/src/chain/mod.rs b/core/rpc/src/chain/mod.rs similarity index 100% rename from substrate/rpc/src/chain/mod.rs rename to core/rpc/src/chain/mod.rs diff --git a/substrate/rpc/src/chain/tests.rs b/core/rpc/src/chain/tests.rs similarity index 100% rename from substrate/rpc/src/chain/tests.rs rename to core/rpc/src/chain/tests.rs diff --git a/substrate/rpc/src/errors.rs b/core/rpc/src/errors.rs similarity index 100% rename from substrate/rpc/src/errors.rs rename to core/rpc/src/errors.rs diff --git a/substrate/rpc/src/helpers.rs b/core/rpc/src/helpers.rs similarity index 100% rename from substrate/rpc/src/helpers.rs rename to core/rpc/src/helpers.rs diff --git a/substrate/rpc/src/lib.rs b/core/rpc/src/lib.rs similarity index 100% rename from substrate/rpc/src/lib.rs rename to core/rpc/src/lib.rs diff --git a/substrate/rpc/src/metadata.rs b/core/rpc/src/metadata.rs similarity index 100% rename from substrate/rpc/src/metadata.rs rename to core/rpc/src/metadata.rs diff --git a/substrate/rpc/src/state/error.rs b/core/rpc/src/state/error.rs similarity index 100% rename from substrate/rpc/src/state/error.rs rename to core/rpc/src/state/error.rs diff --git a/substrate/rpc/src/state/mod.rs b/core/rpc/src/state/mod.rs similarity index 100% rename from substrate/rpc/src/state/mod.rs rename to core/rpc/src/state/mod.rs diff --git a/substrate/rpc/src/state/tests.rs b/core/rpc/src/state/tests.rs similarity index 100% rename from substrate/rpc/src/state/tests.rs rename to core/rpc/src/state/tests.rs diff --git a/substrate/rpc/src/subscriptions.rs b/core/rpc/src/subscriptions.rs similarity index 100% rename from substrate/rpc/src/subscriptions.rs rename to core/rpc/src/subscriptions.rs diff --git a/substrate/rpc/src/system/error.rs b/core/rpc/src/system/error.rs similarity index 100% rename from substrate/rpc/src/system/error.rs rename to core/rpc/src/system/error.rs diff --git a/substrate/rpc/src/system/mod.rs b/core/rpc/src/system/mod.rs similarity index 100% rename from substrate/rpc/src/system/mod.rs rename to core/rpc/src/system/mod.rs diff --git a/substrate/rpc/src/system/tests.rs b/core/rpc/src/system/tests.rs similarity index 100% rename from substrate/rpc/src/system/tests.rs rename to core/rpc/src/system/tests.rs diff --git a/substrate/runtime-io/Cargo.toml b/core/runtime-io/Cargo.toml similarity index 100% rename from substrate/runtime-io/Cargo.toml rename to core/runtime-io/Cargo.toml diff --git a/substrate/runtime-io/README.adoc b/core/runtime-io/README.adoc similarity index 100% rename from substrate/runtime-io/README.adoc rename to core/runtime-io/README.adoc diff --git a/substrate/runtime-io/build.rs b/core/runtime-io/build.rs similarity index 100% rename from substrate/runtime-io/build.rs rename to core/runtime-io/build.rs diff --git a/substrate/runtime-io/src/lib.rs b/core/runtime-io/src/lib.rs similarity index 100% rename from substrate/runtime-io/src/lib.rs rename to core/runtime-io/src/lib.rs diff --git a/substrate/runtime-io/with_std.rs b/core/runtime-io/with_std.rs similarity index 100% rename from substrate/runtime-io/with_std.rs rename to core/runtime-io/with_std.rs diff --git a/substrate/runtime-io/without_std.rs b/core/runtime-io/without_std.rs similarity index 100% rename from substrate/runtime-io/without_std.rs rename to core/runtime-io/without_std.rs diff --git a/substrate/runtime-sandbox/Cargo.toml b/core/runtime-sandbox/Cargo.toml similarity index 100% rename from substrate/runtime-sandbox/Cargo.toml rename to core/runtime-sandbox/Cargo.toml diff --git a/substrate/runtime-sandbox/README.adoc b/core/runtime-sandbox/README.adoc similarity index 100% rename from substrate/runtime-sandbox/README.adoc rename to core/runtime-sandbox/README.adoc diff --git a/substrate/runtime-sandbox/build.rs b/core/runtime-sandbox/build.rs similarity index 100% rename from substrate/runtime-sandbox/build.rs rename to core/runtime-sandbox/build.rs diff --git a/substrate/runtime-sandbox/src/lib.rs b/core/runtime-sandbox/src/lib.rs similarity index 100% rename from substrate/runtime-sandbox/src/lib.rs rename to core/runtime-sandbox/src/lib.rs diff --git a/substrate/runtime-sandbox/with_std.rs b/core/runtime-sandbox/with_std.rs similarity index 100% rename from substrate/runtime-sandbox/with_std.rs rename to core/runtime-sandbox/with_std.rs diff --git a/substrate/runtime-sandbox/without_std.rs b/core/runtime-sandbox/without_std.rs similarity index 100% rename from substrate/runtime-sandbox/without_std.rs rename to core/runtime-sandbox/without_std.rs diff --git a/substrate/runtime-std/Cargo.toml b/core/runtime-std/Cargo.toml similarity index 100% rename from substrate/runtime-std/Cargo.toml rename to core/runtime-std/Cargo.toml diff --git a/substrate/runtime-std/README.adoc b/core/runtime-std/README.adoc similarity index 100% rename from substrate/runtime-std/README.adoc rename to core/runtime-std/README.adoc diff --git a/substrate/runtime-std/build.rs b/core/runtime-std/build.rs similarity index 100% rename from substrate/runtime-std/build.rs rename to core/runtime-std/build.rs diff --git a/substrate/runtime-std/src/lib.rs b/core/runtime-std/src/lib.rs similarity index 100% rename from substrate/runtime-std/src/lib.rs rename to core/runtime-std/src/lib.rs diff --git a/substrate/runtime-std/with_std.rs b/core/runtime-std/with_std.rs similarity index 100% rename from substrate/runtime-std/with_std.rs rename to core/runtime-std/with_std.rs diff --git a/substrate/runtime-std/without_std.rs b/core/runtime-std/without_std.rs similarity index 100% rename from substrate/runtime-std/without_std.rs rename to core/runtime-std/without_std.rs diff --git a/substrate/runtime-support/Cargo.toml b/core/runtime-support/Cargo.toml similarity index 93% rename from substrate/runtime-support/Cargo.toml rename to core/runtime-support/Cargo.toml index a886568cdd791..f1a1db7216b98 100644 --- a/substrate/runtime-support/Cargo.toml +++ b/core/runtime-support/Cargo.toml @@ -15,7 +15,7 @@ substrate-codec = { path = "../codec", default_features = false } [dev-dependencies] pretty_assertions = "0.5.1" serde_json = { version = "1.0" } -substrate-codec-derive = { path = "../../substrate/codec/derive" } +substrate-codec-derive = { path = "../../core/codec/derive" } [features] default = ["std"] diff --git a/substrate/runtime-support/README.adoc b/core/runtime-support/README.adoc similarity index 100% rename from substrate/runtime-support/README.adoc rename to core/runtime-support/README.adoc diff --git a/substrate/runtime-support/src/dispatch.rs b/core/runtime-support/src/dispatch.rs similarity index 100% rename from substrate/runtime-support/src/dispatch.rs rename to core/runtime-support/src/dispatch.rs diff --git a/substrate/runtime-support/src/event.rs b/core/runtime-support/src/event.rs similarity index 100% rename from substrate/runtime-support/src/event.rs rename to core/runtime-support/src/event.rs diff --git a/substrate/runtime-support/src/hashable.rs b/core/runtime-support/src/hashable.rs similarity index 100% rename from substrate/runtime-support/src/hashable.rs rename to core/runtime-support/src/hashable.rs diff --git a/substrate/runtime-support/src/lib.rs b/core/runtime-support/src/lib.rs similarity index 100% rename from substrate/runtime-support/src/lib.rs rename to core/runtime-support/src/lib.rs diff --git a/substrate/runtime-support/src/metadata.rs b/core/runtime-support/src/metadata.rs similarity index 100% rename from substrate/runtime-support/src/metadata.rs rename to core/runtime-support/src/metadata.rs diff --git a/substrate/runtime-support/src/storage/generator.rs b/core/runtime-support/src/storage/generator.rs similarity index 100% rename from substrate/runtime-support/src/storage/generator.rs rename to core/runtime-support/src/storage/generator.rs diff --git a/substrate/runtime-support/src/storage/mod.rs b/core/runtime-support/src/storage/mod.rs similarity index 100% rename from substrate/runtime-support/src/storage/mod.rs rename to core/runtime-support/src/storage/mod.rs diff --git a/substrate/runtime/README.adoc b/core/runtime/README.adoc similarity index 100% rename from substrate/runtime/README.adoc rename to core/runtime/README.adoc diff --git a/substrate/runtime/balances/Cargo.toml b/core/runtime/balances/Cargo.toml similarity index 100% rename from substrate/runtime/balances/Cargo.toml rename to core/runtime/balances/Cargo.toml diff --git a/substrate/runtime/balances/src/address.rs b/core/runtime/balances/src/address.rs similarity index 100% rename from substrate/runtime/balances/src/address.rs rename to core/runtime/balances/src/address.rs diff --git a/substrate/runtime/balances/src/genesis_config.rs b/core/runtime/balances/src/genesis_config.rs similarity index 100% rename from substrate/runtime/balances/src/genesis_config.rs rename to core/runtime/balances/src/genesis_config.rs diff --git a/substrate/runtime/balances/src/lib.rs b/core/runtime/balances/src/lib.rs similarity index 100% rename from substrate/runtime/balances/src/lib.rs rename to core/runtime/balances/src/lib.rs diff --git a/substrate/runtime/balances/src/mock.rs b/core/runtime/balances/src/mock.rs similarity index 100% rename from substrate/runtime/balances/src/mock.rs rename to core/runtime/balances/src/mock.rs diff --git a/substrate/runtime/balances/src/tests.rs b/core/runtime/balances/src/tests.rs similarity index 100% rename from substrate/runtime/balances/src/tests.rs rename to core/runtime/balances/src/tests.rs diff --git a/substrate/runtime/consensus/Cargo.toml b/core/runtime/consensus/Cargo.toml similarity index 100% rename from substrate/runtime/consensus/Cargo.toml rename to core/runtime/consensus/Cargo.toml diff --git a/substrate/runtime/consensus/src/lib.rs b/core/runtime/consensus/src/lib.rs similarity index 100% rename from substrate/runtime/consensus/src/lib.rs rename to core/runtime/consensus/src/lib.rs diff --git a/substrate/runtime/contract/Cargo.toml b/core/runtime/contract/Cargo.toml similarity index 100% rename from substrate/runtime/contract/Cargo.toml rename to core/runtime/contract/Cargo.toml diff --git a/substrate/runtime/contract/src/account_db.rs b/core/runtime/contract/src/account_db.rs similarity index 100% rename from substrate/runtime/contract/src/account_db.rs rename to core/runtime/contract/src/account_db.rs diff --git a/substrate/runtime/contract/src/double_map.rs b/core/runtime/contract/src/double_map.rs similarity index 100% rename from substrate/runtime/contract/src/double_map.rs rename to core/runtime/contract/src/double_map.rs diff --git a/substrate/runtime/contract/src/exec.rs b/core/runtime/contract/src/exec.rs similarity index 100% rename from substrate/runtime/contract/src/exec.rs rename to core/runtime/contract/src/exec.rs diff --git a/substrate/runtime/contract/src/gas.rs b/core/runtime/contract/src/gas.rs similarity index 100% rename from substrate/runtime/contract/src/gas.rs rename to core/runtime/contract/src/gas.rs diff --git a/substrate/runtime/contract/src/genesis_config.rs b/core/runtime/contract/src/genesis_config.rs similarity index 100% rename from substrate/runtime/contract/src/genesis_config.rs rename to core/runtime/contract/src/genesis_config.rs diff --git a/substrate/runtime/contract/src/lib.rs b/core/runtime/contract/src/lib.rs similarity index 100% rename from substrate/runtime/contract/src/lib.rs rename to core/runtime/contract/src/lib.rs diff --git a/substrate/runtime/contract/src/tests.rs b/core/runtime/contract/src/tests.rs similarity index 100% rename from substrate/runtime/contract/src/tests.rs rename to core/runtime/contract/src/tests.rs diff --git a/substrate/runtime/contract/src/vm/env_def/macros.rs b/core/runtime/contract/src/vm/env_def/macros.rs similarity index 100% rename from substrate/runtime/contract/src/vm/env_def/macros.rs rename to core/runtime/contract/src/vm/env_def/macros.rs diff --git a/substrate/runtime/contract/src/vm/env_def/mod.rs b/core/runtime/contract/src/vm/env_def/mod.rs similarity index 100% rename from substrate/runtime/contract/src/vm/env_def/mod.rs rename to core/runtime/contract/src/vm/env_def/mod.rs diff --git a/substrate/runtime/contract/src/vm/mod.rs b/core/runtime/contract/src/vm/mod.rs similarity index 100% rename from substrate/runtime/contract/src/vm/mod.rs rename to core/runtime/contract/src/vm/mod.rs diff --git a/substrate/runtime/contract/src/vm/prepare.rs b/core/runtime/contract/src/vm/prepare.rs similarity index 100% rename from substrate/runtime/contract/src/vm/prepare.rs rename to core/runtime/contract/src/vm/prepare.rs diff --git a/substrate/runtime/council/Cargo.toml b/core/runtime/council/Cargo.toml similarity index 100% rename from substrate/runtime/council/Cargo.toml rename to core/runtime/council/Cargo.toml diff --git a/substrate/runtime/council/src/lib.rs b/core/runtime/council/src/lib.rs similarity index 100% rename from substrate/runtime/council/src/lib.rs rename to core/runtime/council/src/lib.rs diff --git a/substrate/runtime/council/src/motions.rs b/core/runtime/council/src/motions.rs similarity index 100% rename from substrate/runtime/council/src/motions.rs rename to core/runtime/council/src/motions.rs diff --git a/substrate/runtime/council/src/seats.rs b/core/runtime/council/src/seats.rs similarity index 100% rename from substrate/runtime/council/src/seats.rs rename to core/runtime/council/src/seats.rs diff --git a/substrate/runtime/council/src/voting.rs b/core/runtime/council/src/voting.rs similarity index 100% rename from substrate/runtime/council/src/voting.rs rename to core/runtime/council/src/voting.rs diff --git a/substrate/runtime/democracy/Cargo.toml b/core/runtime/democracy/Cargo.toml similarity index 100% rename from substrate/runtime/democracy/Cargo.toml rename to core/runtime/democracy/Cargo.toml diff --git a/substrate/runtime/democracy/src/lib.rs b/core/runtime/democracy/src/lib.rs similarity index 100% rename from substrate/runtime/democracy/src/lib.rs rename to core/runtime/democracy/src/lib.rs diff --git a/substrate/runtime/democracy/src/vote_threshold.rs b/core/runtime/democracy/src/vote_threshold.rs similarity index 100% rename from substrate/runtime/democracy/src/vote_threshold.rs rename to core/runtime/democracy/src/vote_threshold.rs diff --git a/substrate/runtime/example/Cargo.toml b/core/runtime/example/Cargo.toml similarity index 100% rename from substrate/runtime/example/Cargo.toml rename to core/runtime/example/Cargo.toml diff --git a/substrate/runtime/example/src/lib.rs b/core/runtime/example/src/lib.rs similarity index 100% rename from substrate/runtime/example/src/lib.rs rename to core/runtime/example/src/lib.rs diff --git a/substrate/runtime/executive/Cargo.toml b/core/runtime/executive/Cargo.toml similarity index 100% rename from substrate/runtime/executive/Cargo.toml rename to core/runtime/executive/Cargo.toml diff --git a/substrate/runtime/executive/src/lib.rs b/core/runtime/executive/src/lib.rs similarity index 100% rename from substrate/runtime/executive/src/lib.rs rename to core/runtime/executive/src/lib.rs diff --git a/substrate/runtime/primitives/Cargo.toml b/core/runtime/primitives/Cargo.toml similarity index 100% rename from substrate/runtime/primitives/Cargo.toml rename to core/runtime/primitives/Cargo.toml diff --git a/substrate/runtime/primitives/src/bft.rs b/core/runtime/primitives/src/bft.rs similarity index 100% rename from substrate/runtime/primitives/src/bft.rs rename to core/runtime/primitives/src/bft.rs diff --git a/substrate/runtime/primitives/src/generic/block.rs b/core/runtime/primitives/src/generic/block.rs similarity index 100% rename from substrate/runtime/primitives/src/generic/block.rs rename to core/runtime/primitives/src/generic/block.rs diff --git a/substrate/runtime/primitives/src/generic/checked_extrinsic.rs b/core/runtime/primitives/src/generic/checked_extrinsic.rs similarity index 100% rename from substrate/runtime/primitives/src/generic/checked_extrinsic.rs rename to core/runtime/primitives/src/generic/checked_extrinsic.rs diff --git a/substrate/runtime/primitives/src/generic/digest.rs b/core/runtime/primitives/src/generic/digest.rs similarity index 100% rename from substrate/runtime/primitives/src/generic/digest.rs rename to core/runtime/primitives/src/generic/digest.rs diff --git a/substrate/runtime/primitives/src/generic/header.rs b/core/runtime/primitives/src/generic/header.rs similarity index 100% rename from substrate/runtime/primitives/src/generic/header.rs rename to core/runtime/primitives/src/generic/header.rs diff --git a/substrate/runtime/primitives/src/generic/mod.rs b/core/runtime/primitives/src/generic/mod.rs similarity index 100% rename from substrate/runtime/primitives/src/generic/mod.rs rename to core/runtime/primitives/src/generic/mod.rs diff --git a/substrate/runtime/primitives/src/generic/tests.rs b/core/runtime/primitives/src/generic/tests.rs similarity index 100% rename from substrate/runtime/primitives/src/generic/tests.rs rename to core/runtime/primitives/src/generic/tests.rs diff --git a/substrate/runtime/primitives/src/generic/unchecked_extrinsic.rs b/core/runtime/primitives/src/generic/unchecked_extrinsic.rs similarity index 100% rename from substrate/runtime/primitives/src/generic/unchecked_extrinsic.rs rename to core/runtime/primitives/src/generic/unchecked_extrinsic.rs diff --git a/substrate/runtime/primitives/src/lib.rs b/core/runtime/primitives/src/lib.rs similarity index 100% rename from substrate/runtime/primitives/src/lib.rs rename to core/runtime/primitives/src/lib.rs diff --git a/substrate/runtime/primitives/src/testing.rs b/core/runtime/primitives/src/testing.rs similarity index 100% rename from substrate/runtime/primitives/src/testing.rs rename to core/runtime/primitives/src/testing.rs diff --git a/substrate/runtime/primitives/src/traits.rs b/core/runtime/primitives/src/traits.rs similarity index 100% rename from substrate/runtime/primitives/src/traits.rs rename to core/runtime/primitives/src/traits.rs diff --git a/substrate/runtime/session/Cargo.toml b/core/runtime/session/Cargo.toml similarity index 100% rename from substrate/runtime/session/Cargo.toml rename to core/runtime/session/Cargo.toml diff --git a/substrate/runtime/session/src/lib.rs b/core/runtime/session/src/lib.rs similarity index 100% rename from substrate/runtime/session/src/lib.rs rename to core/runtime/session/src/lib.rs diff --git a/substrate/runtime/staking/Cargo.toml b/core/runtime/staking/Cargo.toml similarity index 100% rename from substrate/runtime/staking/Cargo.toml rename to core/runtime/staking/Cargo.toml diff --git a/substrate/runtime/staking/src/genesis_config.rs b/core/runtime/staking/src/genesis_config.rs similarity index 100% rename from substrate/runtime/staking/src/genesis_config.rs rename to core/runtime/staking/src/genesis_config.rs diff --git a/substrate/runtime/staking/src/lib.rs b/core/runtime/staking/src/lib.rs similarity index 100% rename from substrate/runtime/staking/src/lib.rs rename to core/runtime/staking/src/lib.rs diff --git a/substrate/runtime/staking/src/mock.rs b/core/runtime/staking/src/mock.rs similarity index 100% rename from substrate/runtime/staking/src/mock.rs rename to core/runtime/staking/src/mock.rs diff --git a/substrate/runtime/staking/src/tests.rs b/core/runtime/staking/src/tests.rs similarity index 100% rename from substrate/runtime/staking/src/tests.rs rename to core/runtime/staking/src/tests.rs diff --git a/substrate/runtime/system/Cargo.toml b/core/runtime/system/Cargo.toml similarity index 100% rename from substrate/runtime/system/Cargo.toml rename to core/runtime/system/Cargo.toml diff --git a/substrate/runtime/system/src/lib.rs b/core/runtime/system/src/lib.rs similarity index 100% rename from substrate/runtime/system/src/lib.rs rename to core/runtime/system/src/lib.rs diff --git a/substrate/runtime/timestamp/Cargo.toml b/core/runtime/timestamp/Cargo.toml similarity index 100% rename from substrate/runtime/timestamp/Cargo.toml rename to core/runtime/timestamp/Cargo.toml diff --git a/substrate/runtime/timestamp/src/lib.rs b/core/runtime/timestamp/src/lib.rs similarity index 100% rename from substrate/runtime/timestamp/src/lib.rs rename to core/runtime/timestamp/src/lib.rs diff --git a/substrate/runtime/treasury/Cargo.toml b/core/runtime/treasury/Cargo.toml similarity index 100% rename from substrate/runtime/treasury/Cargo.toml rename to core/runtime/treasury/Cargo.toml diff --git a/substrate/runtime/treasury/src/lib.rs b/core/runtime/treasury/src/lib.rs similarity index 100% rename from substrate/runtime/treasury/src/lib.rs rename to core/runtime/treasury/src/lib.rs diff --git a/substrate/runtime/version/Cargo.toml b/core/runtime/version/Cargo.toml similarity index 100% rename from substrate/runtime/version/Cargo.toml rename to core/runtime/version/Cargo.toml diff --git a/substrate/runtime/version/src/lib.rs b/core/runtime/version/src/lib.rs similarity index 100% rename from substrate/runtime/version/src/lib.rs rename to core/runtime/version/src/lib.rs diff --git a/substrate/serializer/Cargo.toml b/core/serializer/Cargo.toml similarity index 100% rename from substrate/serializer/Cargo.toml rename to core/serializer/Cargo.toml diff --git a/substrate/serializer/README.adoc b/core/serializer/README.adoc similarity index 100% rename from substrate/serializer/README.adoc rename to core/serializer/README.adoc diff --git a/substrate/serializer/src/lib.rs b/core/serializer/src/lib.rs similarity index 100% rename from substrate/serializer/src/lib.rs rename to core/serializer/src/lib.rs diff --git a/core/service/Cargo.toml b/core/service/Cargo.toml new file mode 100644 index 0000000000000..c45e13ee6a4d1 --- /dev/null +++ b/core/service/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "substrate-service" +version = "0.3.0" +authors = ["Parity Technologies "] + +[dependencies] +futures = "0.1.17" +parking_lot = "0.4" +error-chain = "0.12" +lazy_static = "1.0" +log = "0.3" +slog = "^2" +tokio = "0.1.7" +exit-future = "0.1" +serde = "1.0" +serde_json = "1.0" +serde_derive = "1.0" +target_info = "0.1" +substrate-keystore = { path = "../../core/keystore" } +substrate-runtime-io = { path = "../../core/runtime-io" } +substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-primitives = { path = "../../core/primitives" } +substrate-network = { path = "../../core/network" } +substrate-client = { path = "../../core/client" } +substrate-client-db = { path = "../../core/client/db" } +substrate-codec = { path = "../../core/codec" } +substrate-executor = { path = "../../core/executor" } +substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } +substrate-rpc = { path = "../../core/rpc" } +substrate-rpc-servers = { path = "../../core/rpc-servers" } +substrate-telemetry = { path = "../../core/telemetry" } diff --git a/substrate/service/README.adoc b/core/service/README.adoc similarity index 100% rename from substrate/service/README.adoc rename to core/service/README.adoc diff --git a/substrate/service/src/chain_ops.rs b/core/service/src/chain_ops.rs similarity index 100% rename from substrate/service/src/chain_ops.rs rename to core/service/src/chain_ops.rs diff --git a/substrate/service/src/chain_spec.rs b/core/service/src/chain_spec.rs similarity index 100% rename from substrate/service/src/chain_spec.rs rename to core/service/src/chain_spec.rs diff --git a/substrate/service/src/components.rs b/core/service/src/components.rs similarity index 100% rename from substrate/service/src/components.rs rename to core/service/src/components.rs diff --git a/substrate/service/src/config.rs b/core/service/src/config.rs similarity index 100% rename from substrate/service/src/config.rs rename to core/service/src/config.rs diff --git a/substrate/service/src/error.rs b/core/service/src/error.rs similarity index 100% rename from substrate/service/src/error.rs rename to core/service/src/error.rs diff --git a/substrate/service/src/lib.rs b/core/service/src/lib.rs similarity index 100% rename from substrate/service/src/lib.rs rename to core/service/src/lib.rs diff --git a/substrate/state-db/Cargo.toml b/core/state-db/Cargo.toml similarity index 51% rename from substrate/state-db/Cargo.toml rename to core/state-db/Cargo.toml index d3e4c878cf50b..f867fc9fafc76 100644 --- a/substrate/state-db/Cargo.toml +++ b/core/state-db/Cargo.toml @@ -6,9 +6,9 @@ authors = ["Parity Technologies "] [dependencies] parking_lot = "0.5" log = "0.4" -substrate-primitives = { path = "../../substrate/primitives" } -substrate-codec = { path = "../../substrate/codec" } -substrate-codec-derive = { path = "../../substrate/codec/derive" } +substrate-primitives = { path = "../../core/primitives" } +substrate-codec = { path = "../../core/codec" } +substrate-codec-derive = { path = "../../core/codec/derive" } [dev-dependencies] env_logger = "0.4" diff --git a/substrate/state-db/README.adoc b/core/state-db/README.adoc similarity index 100% rename from substrate/state-db/README.adoc rename to core/state-db/README.adoc diff --git a/substrate/state-db/src/lib.rs b/core/state-db/src/lib.rs similarity index 100% rename from substrate/state-db/src/lib.rs rename to core/state-db/src/lib.rs diff --git a/substrate/state-db/src/pruning.rs b/core/state-db/src/pruning.rs similarity index 100% rename from substrate/state-db/src/pruning.rs rename to core/state-db/src/pruning.rs diff --git a/substrate/state-db/src/test.rs b/core/state-db/src/test.rs similarity index 100% rename from substrate/state-db/src/test.rs rename to core/state-db/src/test.rs diff --git a/substrate/state-db/src/unfinalized.rs b/core/state-db/src/unfinalized.rs similarity index 100% rename from substrate/state-db/src/unfinalized.rs rename to core/state-db/src/unfinalized.rs diff --git a/substrate/state-machine/Cargo.toml b/core/state-machine/Cargo.toml similarity index 100% rename from substrate/state-machine/Cargo.toml rename to core/state-machine/Cargo.toml diff --git a/substrate/state-machine/README.adoc b/core/state-machine/README.adoc similarity index 100% rename from substrate/state-machine/README.adoc rename to core/state-machine/README.adoc diff --git a/substrate/state-machine/src/backend.rs b/core/state-machine/src/backend.rs similarity index 100% rename from substrate/state-machine/src/backend.rs rename to core/state-machine/src/backend.rs diff --git a/substrate/state-machine/src/ext.rs b/core/state-machine/src/ext.rs similarity index 100% rename from substrate/state-machine/src/ext.rs rename to core/state-machine/src/ext.rs diff --git a/substrate/state-machine/src/lib.rs b/core/state-machine/src/lib.rs similarity index 100% rename from substrate/state-machine/src/lib.rs rename to core/state-machine/src/lib.rs diff --git a/substrate/state-machine/src/proving_backend.rs b/core/state-machine/src/proving_backend.rs similarity index 100% rename from substrate/state-machine/src/proving_backend.rs rename to core/state-machine/src/proving_backend.rs diff --git a/substrate/state-machine/src/testing.rs b/core/state-machine/src/testing.rs similarity index 100% rename from substrate/state-machine/src/testing.rs rename to core/state-machine/src/testing.rs diff --git a/substrate/state-machine/src/trie_backend.rs b/core/state-machine/src/trie_backend.rs similarity index 100% rename from substrate/state-machine/src/trie_backend.rs rename to core/state-machine/src/trie_backend.rs diff --git a/substrate/telemetry/Cargo.toml b/core/telemetry/Cargo.toml similarity index 100% rename from substrate/telemetry/Cargo.toml rename to core/telemetry/Cargo.toml diff --git a/substrate/telemetry/README.adoc b/core/telemetry/README.adoc similarity index 100% rename from substrate/telemetry/README.adoc rename to core/telemetry/README.adoc diff --git a/substrate/telemetry/src/lib.rs b/core/telemetry/src/lib.rs similarity index 100% rename from substrate/telemetry/src/lib.rs rename to core/telemetry/src/lib.rs diff --git a/substrate/test-client/Cargo.toml b/core/test-client/Cargo.toml similarity index 90% rename from substrate/test-client/Cargo.toml rename to core/test-client/Cargo.toml index f36ec382f6028..52441e6ddea5b 100644 --- a/substrate/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -9,7 +9,7 @@ substrate-bft = { path = "../bft" } substrate-client = { path = "../client" } substrate-codec = { path = "../codec" } substrate-executor = { path = "../executor" } -substrate-keyring = { path = "../../substrate/keyring" } +substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } substrate-runtime-support = { path = "../runtime-support" } substrate-test-runtime = { path = "../test-runtime" } diff --git a/substrate/test-client/README.adoc b/core/test-client/README.adoc similarity index 100% rename from substrate/test-client/README.adoc rename to core/test-client/README.adoc diff --git a/substrate/test-client/src/block_builder_ext.rs b/core/test-client/src/block_builder_ext.rs similarity index 100% rename from substrate/test-client/src/block_builder_ext.rs rename to core/test-client/src/block_builder_ext.rs diff --git a/substrate/test-client/src/client_ext.rs b/core/test-client/src/client_ext.rs similarity index 100% rename from substrate/test-client/src/client_ext.rs rename to core/test-client/src/client_ext.rs diff --git a/substrate/test-client/src/lib.rs b/core/test-client/src/lib.rs similarity index 100% rename from substrate/test-client/src/lib.rs rename to core/test-client/src/lib.rs diff --git a/substrate/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml similarity index 100% rename from substrate/test-runtime/Cargo.toml rename to core/test-runtime/Cargo.toml diff --git a/substrate/test-runtime/README.adoc b/core/test-runtime/README.adoc similarity index 100% rename from substrate/test-runtime/README.adoc rename to core/test-runtime/README.adoc diff --git a/substrate/test-runtime/src/genesismap.rs b/core/test-runtime/src/genesismap.rs similarity index 100% rename from substrate/test-runtime/src/genesismap.rs rename to core/test-runtime/src/genesismap.rs diff --git a/substrate/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs similarity index 100% rename from substrate/test-runtime/src/lib.rs rename to core/test-runtime/src/lib.rs diff --git a/substrate/test-runtime/src/system.rs b/core/test-runtime/src/system.rs similarity index 100% rename from substrate/test-runtime/src/system.rs rename to core/test-runtime/src/system.rs diff --git a/substrate/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock similarity index 100% rename from substrate/test-runtime/wasm/Cargo.lock rename to core/test-runtime/wasm/Cargo.lock diff --git a/substrate/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml similarity index 100% rename from substrate/test-runtime/wasm/Cargo.toml rename to core/test-runtime/wasm/Cargo.toml diff --git a/substrate/test-runtime/wasm/build.sh b/core/test-runtime/wasm/build.sh similarity index 100% rename from substrate/test-runtime/wasm/build.sh rename to core/test-runtime/wasm/build.sh diff --git a/substrate/test-runtime/wasm/src b/core/test-runtime/wasm/src similarity index 100% rename from substrate/test-runtime/wasm/src rename to core/test-runtime/wasm/src diff --git a/doc/packages/substrate.adoc b/doc/packages/substrate.adoc index f72a7450d3e76..688854fd1a17b 100644 --- a/doc/packages/substrate.adoc +++ b/doc/packages/substrate.adoc @@ -3,62 +3,62 @@ :leveloffset: +3 -include::../../substrate/bft/README.adoc[] +include::../../core/bft/README.adoc[] -include::../../substrate/cli/README.adoc[] +include::../../core/cli/README.adoc[] -include::../../substrate/client/README.adoc[] +include::../../core/client/README.adoc[] -include::../../substrate/codec/README.adoc[] +include::../../core/codec/README.adoc[] -include::../../substrate/environmental/README.adoc[] +include::../../core/environmental/README.adoc[] -include::../../substrate/executor/README.adoc[] +include::../../core/executor/README.adoc[] -include::../../substrate/extrinsic-pool/README.adoc[] +include::../../core/extrinsic-pool/README.adoc[] -include::../../substrate/keyring/README.adoc[] +include::../../core/keyring/README.adoc[] -include::../../substrate/keystore/README.adoc[] +include::../../core/keystore/README.adoc[] -include::../../substrate/misbehavior-check/README.adoc[] +include::../../core/misbehavior-check/README.adoc[] -include::../../substrate/network/README.adoc[] +include::../../core/network/README.adoc[] -include::../../substrate/network-libp2p/README.adoc[] +include::../../core/network-libp2p/README.adoc[] -include::../../substrate/primitives/README.adoc[] +include::../../core/primitives/README.adoc[] -include::../../substrate/pwasm-alloc/README.adoc[] +include::../../core/pwasm-alloc/README.adoc[] -include::../../substrate/pwasm-libc/README.adoc[] +include::../../core/pwasm-libc/README.adoc[] -include::../../substrate/rpc/README.adoc[] +include::../../core/rpc/README.adoc[] -include::../../substrate/rpc-servers/README.adoc[] +include::../../core/rpc-servers/README.adoc[] -include::../../substrate/runtime/README.adoc[] +include::../../core/runtime/README.adoc[] -include::../../substrate/runtime-io/README.adoc[] +include::../../core/runtime-io/README.adoc[] -include::../../substrate/runtime-sandbox/README.adoc[] +include::../../core/runtime-sandbox/README.adoc[] -include::../../substrate/runtime-std/README.adoc[] +include::../../core/runtime-std/README.adoc[] -include::../../substrate/runtime-support/README.adoc[] +include::../../core/runtime-support/README.adoc[] -include::../../substrate/serializer/README.adoc[] +include::../../core/serializer/README.adoc[] -include::../../substrate/service/README.adoc[] +include::../../core/service/README.adoc[] -include::../../substrate/state-db/README.adoc[] +include::../../core/state-db/README.adoc[] -include::../../substrate/state-machine/README.adoc[] +include::../../core/state-machine/README.adoc[] -include::../../substrate/telemetry/README.adoc[] +include::../../core/telemetry/README.adoc[] -include::../../substrate/test-client/README.adoc[] +include::../../core/test-client/README.adoc[] -include::../../substrate/test-runtime/README.adoc[] +include::../../core/test-runtime/README.adoc[] :leveloffset: -3 diff --git a/node/api/Cargo.toml b/node/api/Cargo.toml index 7f3c494f4fd7b..5a0cee1387772 100644 --- a/node/api/Cargo.toml +++ b/node/api/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] node-runtime = { path = "../runtime" } node-primitives = { path = "../primitives" } -substrate-client = { path = "../../substrate/client" } -substrate-primitives = { path = "../../substrate/primitives" } +substrate-client = { path = "../../core/client" } +substrate-primitives = { path = "../../core/primitives" } [dev-dependencies] -substrate-keyring = { path = "../../substrate/keyring" } +substrate-keyring = { path = "../../core/keyring" } diff --git a/node/cli/Cargo.toml b/node/cli/Cargo.toml index f68997fcd5fd9..d26a47aade099 100644 --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -8,5 +8,5 @@ description = "Substrate node implementation in Rust." log = "0.3" tokio = "0.1.7" exit-future = "0.1" -substrate-cli = { path = "../../substrate/cli" } +substrate-cli = { path = "../../core/cli" } node-service = { path = "../service" } diff --git a/node/consensus/Cargo.toml b/node/consensus/Cargo.toml index 0d457a5f7aed6..a50d94b643f85 100644 --- a/node/consensus/Cargo.toml +++ b/node/consensus/Cargo.toml @@ -15,12 +15,12 @@ node-api = { path = "../api" } node-primitives = { path = "../primitives" } node-runtime = { path = "../runtime" } node-transaction-pool = { path = "../transaction-pool" } -substrate-bft = { path = "../../substrate/bft" } -substrate-codec = { path = "../../substrate/codec" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-runtime-support = { path = "../../substrate/runtime-support" } -substrate-client = { path = "../../substrate/client" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } +substrate-bft = { path = "../../core/bft" } +substrate-codec = { path = "../../core/codec" } +substrate-primitives = { path = "../../core/primitives" } +substrate-runtime-support = { path = "../../core/runtime-support" } +substrate-client = { path = "../../core/client" } +substrate-runtime-primitives = { path = "../../core/runtime/primitives" } [dev-dependencies] -substrate-keyring = { path = "../../substrate/keyring" } +substrate-keyring = { path = "../../core/keyring" } diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index e3b4f8f7c2fab..d725f0443b32a 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -7,22 +7,22 @@ description = "Substrate node implementation in Rust." [dependencies] hex-literal = "0.1" triehash = "0.2" -substrate-codec = { path = "../../substrate/codec" } -substrate-runtime-io = { path = "../../substrate/runtime-io" } -substrate-runtime-support = { path = "../../substrate/runtime-support" } -substrate-state-machine = { path = "../../substrate/state-machine" } -substrate-executor = { path = "../../substrate/executor" } -substrate-primitives = { path = "../../substrate/primitives" } +substrate-codec = { path = "../../core/codec" } +substrate-runtime-io = { path = "../../core/runtime-io" } +substrate-runtime-support = { path = "../../core/runtime-support" } +substrate-state-machine = { path = "../../core/state-machine" } +substrate-executor = { path = "../../core/executor" } +substrate-primitives = { path = "../../core/primitives" } node-primitives = { path = "../primitives" } node-runtime = { path = "../runtime" } [dev-dependencies] -substrate-keyring = { path = "../../substrate/keyring" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-runtime-balances = { path = "../../substrate/runtime/balances" } -substrate-runtime-session = { path = "../../substrate/runtime/session" } -substrate-runtime-staking = { path = "../../substrate/runtime/staking" } -substrate-runtime-system = { path = "../../substrate/runtime/system" } -substrate-runtime-consensus = { path = "../../substrate/runtime/consensus" } -substrate-runtime-timestamp = { path = "../../substrate/runtime/timestamp" } -substrate-runtime-treasury = { path = "../../substrate/runtime/treasury" } +substrate-keyring = { path = "../../core/keyring" } +substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-balances = { path = "../../core/runtime/balances" } +substrate-runtime-session = { path = "../../core/runtime/session" } +substrate-runtime-staking = { path = "../../core/runtime/staking" } +substrate-runtime-system = { path = "../../core/runtime/system" } +substrate-runtime-consensus = { path = "../../core/runtime/consensus" } +substrate-runtime-timestamp = { path = "../../core/runtime/timestamp" } +substrate-runtime-treasury = { path = "../../core/runtime/treasury" } diff --git a/node/network/Cargo.toml b/node/network/Cargo.toml index 8f426378aab4e..645edcfc42b77 100644 --- a/node/network/Cargo.toml +++ b/node/network/Cargo.toml @@ -8,9 +8,9 @@ description = "Substrate node networking protocol" node-api = { path = "../api" } node-consensus = { path = "../consensus" } node-primitives = { path = "../primitives" } -substrate-bft = { path = "../../substrate/bft" } -substrate-network = { path = "../../substrate/network" } -substrate-primitives = { path = "../../substrate/primitives" } +substrate-bft = { path = "../../core/bft" } +substrate-network = { path = "../../core/network" } +substrate-primitives = { path = "../../core/primitives" } futures = "0.1" tokio = "0.1.7" log = "0.4" diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index 7d8b81c7ad5eb..292d270a21e27 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -6,14 +6,14 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../substrate/codec", default_features = false } -substrate-codec-derive = { path = "../../substrate/codec/derive", default_features = false } -substrate-primitives = { path = "../../substrate/primitives", default_features = false } -substrate-runtime-std = { path = "../../substrate/runtime-std", default_features = false } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives", default_features = false } +substrate-codec = { path = "../../core/codec", default_features = false } +substrate-codec-derive = { path = "../../core/codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +substrate-runtime-std = { path = "../../core/runtime-std", default_features = false } +substrate-runtime-primitives = { path = "../../core/runtime/primitives", default_features = false } [dev-dependencies] -substrate-serializer = { path = "../../substrate/serializer" } +substrate-serializer = { path = "../../core/serializer" } pretty_assertions = "0.4" [features] diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 2a775928ba745..0c1b3c7ad0a96 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -10,26 +10,26 @@ log = { version = "0.3", optional = true } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} -substrate-codec = { path = "../../substrate/codec" } -substrate-codec-derive = { path = "../../substrate/codec/derive" } -substrate-runtime-std = { path = "../../substrate/runtime-std" } -substrate-runtime-io = { path = "../../substrate/runtime-io" } -substrate-runtime-support = { path = "../../substrate/runtime-support" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-keyring = { path = "../../substrate/keyring" } -substrate-runtime-balances = { path = "../../substrate/runtime/balances" } -substrate-runtime-consensus = { path = "../../substrate/runtime/consensus" } -substrate-runtime-contract = { path = "../../substrate/runtime/contract" } -substrate-runtime-council = { path = "../../substrate/runtime/council" } -substrate-runtime-democracy = { path = "../../substrate/runtime/democracy" } -substrate-runtime-executive = { path = "../../substrate/runtime/executive" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-runtime-session = { path = "../../substrate/runtime/session" } -substrate-runtime-staking = { path = "../../substrate/runtime/staking" } -substrate-runtime-system = { path = "../../substrate/runtime/system" } -substrate-runtime-timestamp = { path = "../../substrate/runtime/timestamp" } -substrate-runtime-treasury = { path = "../../substrate/runtime/treasury" } -substrate-runtime-version = { path = "../../substrate/runtime/version" } +substrate-codec = { path = "../../core/codec" } +substrate-codec-derive = { path = "../../core/codec/derive" } +substrate-runtime-std = { path = "../../core/runtime-std" } +substrate-runtime-io = { path = "../../core/runtime-io" } +substrate-runtime-support = { path = "../../core/runtime-support" } +substrate-primitives = { path = "../../core/primitives" } +substrate-keyring = { path = "../../core/keyring" } +substrate-runtime-balances = { path = "../../core/runtime/balances" } +substrate-runtime-consensus = { path = "../../core/runtime/consensus" } +substrate-runtime-contract = { path = "../../core/runtime/contract" } +substrate-runtime-council = { path = "../../core/runtime/council" } +substrate-runtime-democracy = { path = "../../core/runtime/democracy" } +substrate-runtime-executive = { path = "../../core/runtime/executive" } +substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-session = { path = "../../core/runtime/session" } +substrate-runtime-staking = { path = "../../core/runtime/staking" } +substrate-runtime-system = { path = "../../core/runtime/system" } +substrate-runtime-timestamp = { path = "../../core/runtime/timestamp" } +substrate-runtime-treasury = { path = "../../core/runtime/treasury" } +substrate-runtime-version = { path = "../../core/runtime/version" } node-primitives = { path = "../primitives" } [features] diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index f77e471c75c22..a7978f20a0a69 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -9,25 +9,25 @@ crate-type = ["cdylib"] [dependencies] integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } safe-mix = { version = "1.0", default_features = false} -substrate-codec-derive = { path = "../../../substrate/codec/derive" } -substrate-codec = { path = "../../../substrate/codec", default-features = false } -substrate-primitives = { path = "../../../substrate/primitives", default-features = false } -substrate-runtime-std = { path = "../../../substrate/runtime-std", default-features = false } -substrate-runtime-io = { path = "../../../substrate/runtime-io", default-features = false } -substrate-runtime-support = { path = "../../../substrate/runtime-support", default-features = false } -substrate-runtime-balances = { path = "../../../substrate/runtime/balances", default-features = false } -substrate-runtime-consensus = { path = "../../../substrate/runtime/consensus", default-features = false } -substrate-runtime-contract = { path = "../../../substrate/runtime/contract", default-features = false } -substrate-runtime-council = { path = "../../../substrate/runtime/council", default-features = false } -substrate-runtime-democracy = { path = "../../../substrate/runtime/democracy", default-features = false } -substrate-runtime-executive = { path = "../../../substrate/runtime/executive", default-features = false } -substrate-runtime-primitives = { path = "../../../substrate/runtime/primitives", default-features = false } -substrate-runtime-session = { path = "../../../substrate/runtime/session", default-features = false } -substrate-runtime-staking = { path = "../../../substrate/runtime/staking", default-features = false } -substrate-runtime-system = { path = "../../../substrate/runtime/system", default-features = false } -substrate-runtime-timestamp = { path = "../../../substrate/runtime/timestamp", default-features = false } -substrate-runtime-treasury = { path = "../../../substrate/runtime/treasury", default-features = false } -substrate-runtime-version = { path = "../../../substrate/runtime/version", default-features = false } +substrate-codec-derive = { path = "../../../core/codec/derive" } +substrate-codec = { path = "../../../core/codec", default-features = false } +substrate-primitives = { path = "../../../core/primitives", default-features = false } +substrate-runtime-std = { path = "../../../core/runtime-std", default-features = false } +substrate-runtime-io = { path = "../../../core/runtime-io", default-features = false } +substrate-runtime-support = { path = "../../../core/runtime-support", default-features = false } +substrate-runtime-balances = { path = "../../../core/runtime/balances", default-features = false } +substrate-runtime-consensus = { path = "../../../core/runtime/consensus", default-features = false } +substrate-runtime-contract = { path = "../../../core/runtime/contract", default-features = false } +substrate-runtime-council = { path = "../../../core/runtime/council", default-features = false } +substrate-runtime-democracy = { path = "../../../core/runtime/democracy", default-features = false } +substrate-runtime-executive = { path = "../../../core/runtime/executive", default-features = false } +substrate-runtime-primitives = { path = "../../../core/runtime/primitives", default-features = false } +substrate-runtime-session = { path = "../../../core/runtime/session", default-features = false } +substrate-runtime-staking = { path = "../../../core/runtime/staking", default-features = false } +substrate-runtime-system = { path = "../../../core/runtime/system", default-features = false } +substrate-runtime-timestamp = { path = "../../../core/runtime/timestamp", default-features = false } +substrate-runtime-treasury = { path = "../../../core/runtime/treasury", default-features = false } +substrate-runtime-version = { path = "../../../core/runtime/version", default-features = false } node-primitives = { path = "../../primitives", default-features = false } [features] diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 5fc9f9be326de..5890c2ab7456a 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -18,9 +18,9 @@ node-executor = { path = "../executor" } node-consensus = { path = "../consensus" } node-network = { path = "../network" } node-transaction-pool = { path = "../transaction-pool" } -substrate-runtime-io = { path = "../../substrate/runtime-io" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-network = { path = "../../substrate/network" } -substrate-client = { path = "../../substrate/client" } -substrate-service = { path = "../../substrate/service" } -substrate-telemetry = { path = "../../substrate/telemetry" } +substrate-runtime-io = { path = "../../core/runtime-io" } +substrate-primitives = { path = "../../core/primitives" } +substrate-network = { path = "../../core/network" } +substrate-client = { path = "../../core/client" } +substrate-service = { path = "../../core/service" } +substrate-telemetry = { path = "../../core/telemetry" } diff --git a/node/transaction-pool/Cargo.toml b/node/transaction-pool/Cargo.toml index 496551e2dcb8d..c3b6aaf97d8d1 100644 --- a/node/transaction-pool/Cargo.toml +++ b/node/transaction-pool/Cargo.toml @@ -10,9 +10,9 @@ parking_lot = "0.4" node-api = { path = "../api" } node-primitives = { path = "../primitives" } node-runtime = { path = "../runtime" } -substrate-client = { path = "../../substrate/client" } -substrate-codec = { path = "../../substrate/codec" } -substrate-keyring = { path = "../../substrate/keyring" } -substrate-extrinsic-pool = { path = "../../substrate/extrinsic-pool" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } +substrate-client = { path = "../../core/client" } +substrate-codec = { path = "../../core/codec" } +substrate-keyring = { path = "../../core/keyring" } +substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } +substrate-primitives = { path = "../../core/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime/primitives" } diff --git a/scripts/common.sh b/scripts/common.sh index f698110976395..c7629f2d9e918 100644 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -4,9 +4,9 @@ ROOT=`dirname "$0"` # A list of directories which contain wasm projects. SRCS=( - "substrate/executor/wasm" + "core/executor/wasm" "node/runtime/wasm" - "substrate/test-runtime/wasm" + "core/test-runtime/wasm" ) # Make pushd/popd silent. diff --git a/subkey/Cargo.toml b/subkey/Cargo.toml index a66ca922f3e4d..171c5163b2631 100644 --- a/subkey/Cargo.toml +++ b/subkey/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -substrate-primitives = { version = "*", path = "../substrate/primitives" } +substrate-primitives = { version = "*", path = "../core/primitives" } rand = "0.4" [features] diff --git a/substrate/client/db/Cargo.toml b/substrate/client/db/Cargo.toml deleted file mode 100644 index c88e338970e39..0000000000000 --- a/substrate/client/db/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "substrate-client-db" -version = "0.1.0" -authors = ["Parity Technologies "] - -[dependencies] -parking_lot = "0.4" -log = "0.3" -kvdb = "0.1" -kvdb-rocksdb = "0.1.3" -hashdb = "0.2.1" -memorydb = "0.2.1" -substrate-primitives = { path = "../../../substrate/primitives" } -substrate-runtime-primitives = { path = "../../../substrate/runtime/primitives" } -substrate-client = { path = "../../../substrate/client" } -substrate-state-machine = { path = "../../../substrate/state-machine" } -substrate-runtime-support = { path = "../../../substrate/runtime-support" } -substrate-codec = { path = "../../../substrate/codec" } -substrate-codec-derive = { path = "../../../substrate/codec/derive" } -substrate-executor = { path = "../../../substrate/executor" } -substrate-state-db = { path = "../../../substrate/state-db" } - -[dev-dependencies] -kvdb-memorydb = "0.1" diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm deleted file mode 100644 index b8f4005069c281322964d6404fae66b9b6e582e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48108 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 diff --git a/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm deleted file mode 100755 index 26740188c831c7b1e8b6e2a2b7df16786baefa40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48318 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⁡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 diff --git a/substrate/network/Cargo.toml b/substrate/network/Cargo.toml deleted file mode 100644 index 1b19abe1e1254..0000000000000 --- a/substrate/network/Cargo.toml +++ /dev/null @@ -1,29 +0,0 @@ -[package] -description = "Polkadot network protocol" -name = "substrate-network" -version = "0.1.0" -license = "GPL-3.0" -authors = ["Parity Technologies "] - -[lib] - -[dependencies] -log = "0.3" -parking_lot = "0.4" -error-chain = "0.12" -bitflags = "1.0" -futures = "0.1.17" -linked-hash-map = "0.5" -rustc-hex = "1.0" -ethcore-io = { git = "https://github.com/paritytech/parity.git" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-client = { path = "../../substrate/client" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-codec = { path = "../../substrate/codec" } -substrate-codec-derive = { path = "../../substrate/codec/derive" } -substrate-network-libp2p = { path = "../../substrate/network-libp2p" } - -[dev-dependencies] -env_logger = "0.4" -substrate-keyring = { path = "../../substrate/keyring" } -substrate-test-client = { path = "../../substrate/test-client" } diff --git a/substrate/service/Cargo.toml b/substrate/service/Cargo.toml deleted file mode 100644 index a7e1d65c88425..0000000000000 --- a/substrate/service/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -[package] -name = "substrate-service" -version = "0.3.0" -authors = ["Parity Technologies "] - -[dependencies] -futures = "0.1.17" -parking_lot = "0.4" -error-chain = "0.12" -lazy_static = "1.0" -log = "0.3" -slog = "^2" -tokio = "0.1.7" -exit-future = "0.1" -serde = "1.0" -serde_json = "1.0" -serde_derive = "1.0" -target_info = "0.1" -substrate-keystore = { path = "../../substrate/keystore" } -substrate-runtime-io = { path = "../../substrate/runtime-io" } -substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" } -substrate-primitives = { path = "../../substrate/primitives" } -substrate-network = { path = "../../substrate/network" } -substrate-client = { path = "../../substrate/client" } -substrate-client-db = { path = "../../substrate/client/db" } -substrate-codec = { path = "../../substrate/codec" } -substrate-executor = { path = "../../substrate/executor" } -substrate-extrinsic-pool = { path = "../../substrate/extrinsic-pool" } -substrate-rpc = { path = "../../substrate/rpc" } -substrate-rpc-servers = { path = "../../substrate/rpc-servers" } -substrate-telemetry = { path = "../../substrate/telemetry" } diff --git a/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm deleted file mode 100644 index ad4c785a98f27ac1364bc10442a290bb9bce8d3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54064 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 Date: Tue, 11 Sep 2018 23:11:25 +0200 Subject: [PATCH 08/24] Move substrate-runtime-support to core/runtime/support --- Cargo.toml | 2 +- core/bft/Cargo.toml | 2 +- core/client/Cargo.toml | 2 +- core/client/db/Cargo.toml | 2 +- core/runtime/balances/Cargo.toml | 2 +- core/runtime/consensus/Cargo.toml | 2 +- core/runtime/contract/Cargo.toml | 2 +- core/runtime/council/Cargo.toml | 2 +- core/runtime/democracy/Cargo.toml | 2 +- core/runtime/example/Cargo.toml | 2 +- core/runtime/executive/Cargo.toml | 2 +- core/runtime/primitives/Cargo.toml | 2 +- core/runtime/session/Cargo.toml | 2 +- core/runtime/staking/Cargo.toml | 2 +- core/{runtime-support => runtime/support}/Cargo.toml | 10 +++++----- core/{runtime-support => runtime/support}/README.adoc | 0 .../support}/src/dispatch.rs | 0 core/{runtime-support => runtime/support}/src/event.rs | 0 .../support}/src/hashable.rs | 0 core/{runtime-support => runtime/support}/src/lib.rs | 0 .../support}/src/metadata.rs | 0 .../support}/src/storage/generator.rs | 0 .../support}/src/storage/mod.rs | 0 core/runtime/system/Cargo.toml | 2 +- core/runtime/timestamp/Cargo.toml | 2 +- core/runtime/treasury/Cargo.toml | 2 +- core/runtime/version/Cargo.toml | 2 +- core/test-client/Cargo.toml | 2 +- core/test-runtime/Cargo.toml | 2 +- core/test-runtime/wasm/Cargo.toml | 2 +- node/consensus/Cargo.toml | 2 +- node/executor/Cargo.toml | 2 +- node/runtime/Cargo.toml | 2 +- node/runtime/wasm/Cargo.toml | 2 +- 34 files changed, 30 insertions(+), 30 deletions(-) rename core/{runtime-support => runtime/support}/Cargo.toml (61%) rename core/{runtime-support => runtime/support}/README.adoc (100%) rename core/{runtime-support => runtime/support}/src/dispatch.rs (100%) rename core/{runtime-support => runtime/support}/src/event.rs (100%) rename core/{runtime-support => runtime/support}/src/hashable.rs (100%) rename core/{runtime-support => runtime/support}/src/lib.rs (100%) rename core/{runtime-support => runtime/support}/src/metadata.rs (100%) rename core/{runtime-support => runtime/support}/src/storage/generator.rs (100%) rename core/{runtime-support => runtime/support}/src/storage/mod.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index dc64a843c101c..bb6267b2d383b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,7 +18,7 @@ members = [ "core/runtime-io", "core/runtime-sandbox", "core/runtime-std", - "core/runtime-support", + "core/runtime/support", "core/runtime/balances", "core/runtime/consensus", "core/runtime/contract", diff --git a/core/bft/Cargo.toml b/core/bft/Cargo.toml index b38d073893779..928348ce7b652 100644 --- a/core/bft/Cargo.toml +++ b/core/bft/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] futures = "0.1.17" substrate-codec = { path = "../codec" } substrate-primitives = { path = "../primitives" } -substrate-runtime-support = { path = "../runtime-support" } +substrate-runtime-support = { path = "../runtime/support" } substrate-runtime-primitives = { path = "../runtime/primitives" } substrate-runtime-version = { path = "../runtime/version" } tokio = "0.1.7" diff --git a/core/client/Cargo.toml b/core/client/Cargo.toml index f374a5e6d34b8..2beb777d1787d 100644 --- a/core/client/Cargo.toml +++ b/core/client/Cargo.toml @@ -18,7 +18,7 @@ substrate-codec = { path = "../codec" } substrate-executor = { path = "../executor" } substrate-primitives = { path = "../primitives" } substrate-runtime-io = { path = "../runtime-io" } -substrate-runtime-support = { path = "../runtime-support" } +substrate-runtime-support = { path = "../runtime/support" } substrate-runtime-primitives = { path = "../runtime/primitives" } substrate-state-machine = { path = "../state-machine" } substrate-keyring = { path = "../../core/keyring" } diff --git a/core/client/db/Cargo.toml b/core/client/db/Cargo.toml index 4d28ea037d8d8..92041798ea229 100644 --- a/core/client/db/Cargo.toml +++ b/core/client/db/Cargo.toml @@ -14,7 +14,7 @@ substrate-primitives = { path = "../../../core/primitives" } substrate-runtime-primitives = { path = "../../../core/runtime/primitives" } substrate-client = { path = "../../../core/client" } substrate-state-machine = { path = "../../../core/state-machine" } -substrate-runtime-support = { path = "../../../core/runtime-support" } +substrate-runtime-support = { path = "../../../core/runtime/support" } substrate-codec = { path = "../../../core/codec" } substrate-codec-derive = { path = "../../../core/codec/derive" } substrate-executor = { path = "../../../core/executor" } diff --git a/core/runtime/balances/Cargo.toml b/core/runtime/balances/Cargo.toml index 5a86a99c11f30..e496102205a51 100644 --- a/core/runtime/balances/Cargo.toml +++ b/core/runtime/balances/Cargo.toml @@ -14,7 +14,7 @@ substrate-codec-derive = { path = "../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/consensus/Cargo.toml b/core/runtime/consensus/Cargo.toml index dfdebbddc118f..cd47df2280f95 100644 --- a/core/runtime/consensus/Cargo.toml +++ b/core/runtime/consensus/Cargo.toml @@ -12,7 +12,7 @@ substrate-codec-derive = { path = "../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/contract/Cargo.toml b/core/runtime/contract/Cargo.toml index a53cb5e886c6b..bfcef5594a941 100644 --- a/core/runtime/contract/Cargo.toml +++ b/core/runtime/contract/Cargo.toml @@ -12,7 +12,7 @@ substrate-runtime-primitives = { path = "../../runtime/primitives", default_feat substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-sandbox = { path = "../../runtime-sandbox", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-system = { path = "../../runtime/system", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } parity-wasm = { version = "0.31", default_features = false } diff --git a/core/runtime/council/Cargo.toml b/core/runtime/council/Cargo.toml index aa1bbd0bdf079..8deb81a3304e2 100644 --- a/core/runtime/council/Cargo.toml +++ b/core/runtime/council/Cargo.toml @@ -15,7 +15,7 @@ substrate-codec-derive = { path = "../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } diff --git a/core/runtime/democracy/Cargo.toml b/core/runtime/democracy/Cargo.toml index 4667e22be3781..23a05cbed86d6 100644 --- a/core/runtime/democracy/Cargo.toml +++ b/core/runtime/democracy/Cargo.toml @@ -13,7 +13,7 @@ substrate-codec-derive = { path = "../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } diff --git a/core/runtime/example/Cargo.toml b/core/runtime/example/Cargo.toml index 92c0d887e7f3a..1332e154ae33e 100644 --- a/core/runtime/example/Cargo.toml +++ b/core/runtime/example/Cargo.toml @@ -9,7 +9,7 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-codec = { path = "../../codec", default_features = false } substrate-codec-derive = { path = "../../codec/derive", default_features = false } diff --git a/core/runtime/executive/Cargo.toml b/core/runtime/executive/Cargo.toml index 965bbe2a1e2c1..bfe2d7e35e999 100644 --- a/core/runtime/executive/Cargo.toml +++ b/core/runtime/executive/Cargo.toml @@ -10,7 +10,7 @@ serde_derive = { version = "1.0", optional = true } substrate-codec = { path = "../../codec", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/primitives/Cargo.toml b/core/runtime/primitives/Cargo.toml index e7adc094d6789..ad8737539a824 100644 --- a/core/runtime/primitives/Cargo.toml +++ b/core/runtime/primitives/Cargo.toml @@ -13,7 +13,7 @@ substrate-codec-derive = { path = "../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } log = {version = "0.3", optional = true } [dev-dependencies] diff --git a/core/runtime/session/Cargo.toml b/core/runtime/session/Cargo.toml index c2acfc1de2638..8b49c40a78c45 100644 --- a/core/runtime/session/Cargo.toml +++ b/core/runtime/session/Cargo.toml @@ -14,7 +14,7 @@ substrate-codec-derive = { path = "../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/staking/Cargo.toml b/core/runtime/staking/Cargo.toml index 78ea8b2958e95..f52f69933e818 100644 --- a/core/runtime/staking/Cargo.toml +++ b/core/runtime/staking/Cargo.toml @@ -15,7 +15,7 @@ substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-sandbox = { path = "../../runtime-sandbox", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } diff --git a/core/runtime-support/Cargo.toml b/core/runtime/support/Cargo.toml similarity index 61% rename from core/runtime-support/Cargo.toml rename to core/runtime/support/Cargo.toml index f1a1db7216b98..f7a2dc5c127ac 100644 --- a/core/runtime-support/Cargo.toml +++ b/core/runtime/support/Cargo.toml @@ -7,15 +7,15 @@ authors = ["Parity Technologies "] hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-runtime-std = { path = "../runtime-std", default_features = false } -substrate-runtime-io = { path = "../runtime-io", default_features = false } -substrate-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../codec", default_features = false } +substrate-runtime-std = { path = "../../runtime-std", default_features = false } +substrate-runtime-io = { path = "../../runtime-io", default_features = false } +substrate-primitives = { path = "../../primitives", default_features = false } +substrate-codec = { path = "../../codec", default_features = false } [dev-dependencies] pretty_assertions = "0.5.1" serde_json = { version = "1.0" } -substrate-codec-derive = { path = "../../core/codec/derive" } +substrate-codec-derive = { path = "../../../core/codec/derive" } [features] default = ["std"] diff --git a/core/runtime-support/README.adoc b/core/runtime/support/README.adoc similarity index 100% rename from core/runtime-support/README.adoc rename to core/runtime/support/README.adoc diff --git a/core/runtime-support/src/dispatch.rs b/core/runtime/support/src/dispatch.rs similarity index 100% rename from core/runtime-support/src/dispatch.rs rename to core/runtime/support/src/dispatch.rs diff --git a/core/runtime-support/src/event.rs b/core/runtime/support/src/event.rs similarity index 100% rename from core/runtime-support/src/event.rs rename to core/runtime/support/src/event.rs diff --git a/core/runtime-support/src/hashable.rs b/core/runtime/support/src/hashable.rs similarity index 100% rename from core/runtime-support/src/hashable.rs rename to core/runtime/support/src/hashable.rs diff --git a/core/runtime-support/src/lib.rs b/core/runtime/support/src/lib.rs similarity index 100% rename from core/runtime-support/src/lib.rs rename to core/runtime/support/src/lib.rs diff --git a/core/runtime-support/src/metadata.rs b/core/runtime/support/src/metadata.rs similarity index 100% rename from core/runtime-support/src/metadata.rs rename to core/runtime/support/src/metadata.rs diff --git a/core/runtime-support/src/storage/generator.rs b/core/runtime/support/src/storage/generator.rs similarity index 100% rename from core/runtime-support/src/storage/generator.rs rename to core/runtime/support/src/storage/generator.rs diff --git a/core/runtime-support/src/storage/mod.rs b/core/runtime/support/src/storage/mod.rs similarity index 100% rename from core/runtime-support/src/storage/mod.rs rename to core/runtime/support/src/storage/mod.rs diff --git a/core/runtime/system/Cargo.toml b/core/runtime/system/Cargo.toml index 28388bd5390f9..7f7c96f9ed4fb 100644 --- a/core/runtime/system/Cargo.toml +++ b/core/runtime/system/Cargo.toml @@ -13,7 +13,7 @@ substrate-codec-derive = { path = "../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } [features] diff --git a/core/runtime/timestamp/Cargo.toml b/core/runtime/timestamp/Cargo.toml index c87da900bfe19..a224b9d399f17 100644 --- a/core/runtime/timestamp/Cargo.toml +++ b/core/runtime/timestamp/Cargo.toml @@ -9,7 +9,7 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-codec = { path = "../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } diff --git a/core/runtime/treasury/Cargo.toml b/core/runtime/treasury/Cargo.toml index 0c76961434c2c..851b9e960b91b 100644 --- a/core/runtime/treasury/Cargo.toml +++ b/core/runtime/treasury/Cargo.toml @@ -9,7 +9,7 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } substrate-codec = { path = "../../codec", default_features = false } substrate-codec-derive = { path = "../../codec/derive", default_features = false } diff --git a/core/runtime/version/Cargo.toml b/core/runtime/version/Cargo.toml index 2f471fe6ed085..22701476b2bb8 100644 --- a/core/runtime/version/Cargo.toml +++ b/core/runtime/version/Cargo.toml @@ -9,7 +9,7 @@ serde_derive = { version = "1.0", optional = true } substrate-codec = { path = "../../codec", default_features = false } substrate-codec-derive = { path = "../../codec/derive", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-support = { path = "../../runtime-support", default_features = false } +substrate-runtime-support = { path = "../../runtime/support", default_features = false } [features] default = ["std"] diff --git a/core/test-client/Cargo.toml b/core/test-client/Cargo.toml index 52441e6ddea5b..c57f4e449fe33 100644 --- a/core/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -11,7 +11,7 @@ substrate-codec = { path = "../codec" } substrate-executor = { path = "../executor" } substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } -substrate-runtime-support = { path = "../runtime-support" } +substrate-runtime-support = { path = "../runtime/support" } substrate-test-runtime = { path = "../test-runtime" } substrate-runtime-primitives = { path = "../runtime/primitives" } hashdb = "0.2.1" diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index 421946bea095f..6eba01f1cba19 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -13,7 +13,7 @@ substrate-codec = { path = "../codec", default-features = false } substrate-codec-derive = { path = "../codec/derive", default-features = false } substrate-runtime-std = { path = "../runtime-std", default-features = false } substrate-runtime-io = { path = "../runtime-io", default-features = false } -substrate-runtime-support = { path = "../runtime-support", default-features = false } +substrate-runtime-support = { path = "../runtime/support", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } substrate-runtime-primitives = { path = "../runtime/primitives", default-features = false } substrate-runtime-version = { path = "../runtime/version", default-features = false } diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index b4bef46da0e44..68848f9d90a72 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -10,7 +10,7 @@ substrate-codec = { path = "../../codec", default-features = false } substrate-codec-derive = { path = "../../codec/derive", default-features = false } substrate-runtime-std = { path = "../../runtime-std", default-features = false } substrate-runtime-io = { path = "../../runtime-io", default-features = false } -substrate-runtime-support = { path = "../../runtime-support", default-features = false } +substrate-runtime-support = { path = "../../runtime/support", default-features = false } substrate-runtime-version = { path = "../../runtime/version", default-features = false } substrate-primitives = { path = "../../primitives", default-features = false } substrate-runtime-primitives = { path = "../../runtime/primitives", default-features = false } diff --git a/node/consensus/Cargo.toml b/node/consensus/Cargo.toml index a50d94b643f85..e38eb2059ee94 100644 --- a/node/consensus/Cargo.toml +++ b/node/consensus/Cargo.toml @@ -18,7 +18,7 @@ node-transaction-pool = { path = "../transaction-pool" } substrate-bft = { path = "../../core/bft" } substrate-codec = { path = "../../core/codec" } substrate-primitives = { path = "../../core/primitives" } -substrate-runtime-support = { path = "../../core/runtime-support" } +substrate-runtime-support = { path = "../../core/runtime/support" } substrate-client = { path = "../../core/client" } substrate-runtime-primitives = { path = "../../core/runtime/primitives" } diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index d725f0443b32a..0e8c352e277a6 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -9,7 +9,7 @@ hex-literal = "0.1" triehash = "0.2" substrate-codec = { path = "../../core/codec" } substrate-runtime-io = { path = "../../core/runtime-io" } -substrate-runtime-support = { path = "../../core/runtime-support" } +substrate-runtime-support = { path = "../../core/runtime/support" } substrate-state-machine = { path = "../../core/state-machine" } substrate-executor = { path = "../../core/executor" } substrate-primitives = { path = "../../core/primitives" } diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 0c1b3c7ad0a96..54f5795b68585 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -14,7 +14,7 @@ substrate-codec = { path = "../../core/codec" } substrate-codec-derive = { path = "../../core/codec/derive" } substrate-runtime-std = { path = "../../core/runtime-std" } substrate-runtime-io = { path = "../../core/runtime-io" } -substrate-runtime-support = { path = "../../core/runtime-support" } +substrate-runtime-support = { path = "../../core/runtime/support" } substrate-primitives = { path = "../../core/primitives" } substrate-keyring = { path = "../../core/keyring" } substrate-runtime-balances = { path = "../../core/runtime/balances" } diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index a7978f20a0a69..a75ee31960285 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -14,7 +14,7 @@ substrate-codec = { path = "../../../core/codec", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } substrate-runtime-std = { path = "../../../core/runtime-std", default-features = false } substrate-runtime-io = { path = "../../../core/runtime-io", default-features = false } -substrate-runtime-support = { path = "../../../core/runtime-support", default-features = false } +substrate-runtime-support = { path = "../../../core/runtime/support", default-features = false } substrate-runtime-balances = { path = "../../../core/runtime/balances", default-features = false } substrate-runtime-consensus = { path = "../../../core/runtime/consensus", default-features = false } substrate-runtime-contract = { path = "../../../core/runtime/contract", default-features = false } From bcab22718dafb1c9bb4184c4c2b9e177614f1182 Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 23:18:46 +0200 Subject: [PATCH 09/24] Rename/move substrate-runtime-version --- Cargo.toml | 2 +- core/bft/Cargo.toml | 2 +- core/executor/Cargo.toml | 2 +- core/rpc/Cargo.toml | 2 +- core/{runtime/version => runtime-version}/Cargo.toml | 8 ++++---- core/{runtime/version => runtime-version}/src/lib.rs | 0 core/test-runtime/Cargo.toml | 2 +- core/test-runtime/wasm/Cargo.toml | 2 +- node/runtime/Cargo.toml | 2 +- node/runtime/wasm/Cargo.toml | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) rename core/{runtime/version => runtime-version}/Cargo.toml (55%) rename core/{runtime/version => runtime-version}/src/lib.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index bb6267b2d383b..a73f749747b01 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,6 +18,7 @@ members = [ "core/runtime-io", "core/runtime-sandbox", "core/runtime-std", + "core/runtime-version", "core/runtime/support", "core/runtime/balances", "core/runtime/consensus", @@ -32,7 +33,6 @@ members = [ "core/runtime/system", "core/runtime/timestamp", "core/runtime/treasury", - "core/runtime/version", "core/serializer", "core/service", "core/state-db", diff --git a/core/bft/Cargo.toml b/core/bft/Cargo.toml index 928348ce7b652..b7987302697a3 100644 --- a/core/bft/Cargo.toml +++ b/core/bft/Cargo.toml @@ -9,7 +9,7 @@ substrate-codec = { path = "../codec" } substrate-primitives = { path = "../primitives" } substrate-runtime-support = { path = "../runtime/support" } substrate-runtime-primitives = { path = "../runtime/primitives" } -substrate-runtime-version = { path = "../runtime/version" } +substrate-runtime-version = { path = "../runtime-version" } tokio = "0.1.7" parking_lot = "0.4" error-chain = "0.12" diff --git a/core/executor/Cargo.toml b/core/executor/Cargo.toml index 8d3b51e12f192..8b5a118b889c5 100644 --- a/core/executor/Cargo.toml +++ b/core/executor/Cargo.toml @@ -10,7 +10,7 @@ substrate-runtime-io = { path = "../runtime-io" } substrate-primitives = { path = "../primitives" } substrate-serializer = { path = "../serializer" } substrate-state-machine = { path = "../state-machine" } -substrate-runtime-version = { path = "../runtime/version" } +substrate-runtime-version = { path = "../runtime-version" } serde = "1.0" serde_derive = "1.0" wasmi = "0.4" diff --git a/core/rpc/Cargo.toml b/core/rpc/Cargo.toml index 423a0523b8b69..3727bafa0c4ac 100644 --- a/core/rpc/Cargo.toml +++ b/core/rpc/Cargo.toml @@ -16,7 +16,7 @@ substrate-executor = { path = "../executor" } substrate-extrinsic-pool = { path = "../extrinsic-pool" } substrate-primitives = { path = "../primitives" } substrate-runtime-primitives = { path = "../runtime/primitives" } -substrate-runtime-version = { path = "../runtime/version" } +substrate-runtime-version = { path = "../runtime-version" } substrate-state-machine = { path = "../state-machine" } tokio = "0.1.7" serde_json = "1.0" diff --git a/core/runtime/version/Cargo.toml b/core/runtime-version/Cargo.toml similarity index 55% rename from core/runtime/version/Cargo.toml rename to core/runtime-version/Cargo.toml index 22701476b2bb8..836d1dbb3ff3b 100644 --- a/core/runtime/version/Cargo.toml +++ b/core/runtime-version/Cargo.toml @@ -6,10 +6,10 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-codec = { path = "../codec", default_features = false } +substrate-codec-derive = { path = "../codec/derive", default_features = false } +substrate-runtime-std = { path = "../runtime-std", default_features = false } +substrate-runtime-support = { path = "../runtime/support", default_features = false } [features] default = ["std"] diff --git a/core/runtime/version/src/lib.rs b/core/runtime-version/src/lib.rs similarity index 100% rename from core/runtime/version/src/lib.rs rename to core/runtime-version/src/lib.rs diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index 6eba01f1cba19..26394abff5f36 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -16,7 +16,7 @@ substrate-runtime-io = { path = "../runtime-io", default-features = false } substrate-runtime-support = { path = "../runtime/support", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } substrate-runtime-primitives = { path = "../runtime/primitives", default-features = false } -substrate-runtime-version = { path = "../runtime/version", default-features = false } +substrate-runtime-version = { path = "../runtime-version", default-features = false } [features] default = ["std"] diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index 68848f9d90a72..1fdf4a74dfc1e 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -11,7 +11,7 @@ substrate-codec-derive = { path = "../../codec/derive", default-features = false substrate-runtime-std = { path = "../../runtime-std", default-features = false } substrate-runtime-io = { path = "../../runtime-io", default-features = false } substrate-runtime-support = { path = "../../runtime/support", default-features = false } -substrate-runtime-version = { path = "../../runtime/version", default-features = false } +substrate-runtime-version = { path = "../../runtime-version", default-features = false } substrate-primitives = { path = "../../primitives", default-features = false } substrate-runtime-primitives = { path = "../../runtime/primitives", default-features = false } diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 54f5795b68585..a426599d183a9 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -29,7 +29,7 @@ substrate-runtime-staking = { path = "../../core/runtime/staking" } substrate-runtime-system = { path = "../../core/runtime/system" } substrate-runtime-timestamp = { path = "../../core/runtime/timestamp" } substrate-runtime-treasury = { path = "../../core/runtime/treasury" } -substrate-runtime-version = { path = "../../core/runtime/version" } +substrate-runtime-version = { path = "../../core/runtime-version" } node-primitives = { path = "../primitives" } [features] diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index a75ee31960285..e701ae00e0aa3 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -27,7 +27,7 @@ substrate-runtime-staking = { path = "../../../core/runtime/staking", default-fe substrate-runtime-system = { path = "../../../core/runtime/system", default-features = false } substrate-runtime-timestamp = { path = "../../../core/runtime/timestamp", default-features = false } substrate-runtime-treasury = { path = "../../../core/runtime/treasury", default-features = false } -substrate-runtime-version = { path = "../../../core/runtime/version", default-features = false } +substrate-runtime-version = { path = "../../../core/runtime-version", default-features = false } node-primitives = { path = "../../primitives", default-features = false } [features] From 54330e4fefd9240170c502c9631e4b2d1dc8724c Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 23:24:44 +0200 Subject: [PATCH 10/24] Move codec up a level --- Cargo.toml | 4 ++-- {core/codec => codec}/Cargo.toml | 0 {core/codec => codec}/README.adoc | 0 {core/codec => codec}/derive/Cargo.toml | 0 {core/codec => codec}/derive/src/decode.rs | 0 {core/codec => codec}/derive/src/encode.rs | 0 {core/codec => codec}/derive/src/lib.rs | 0 {core/codec => codec}/derive/tests/mod.rs | 0 {core/codec => codec}/src/codec.rs | 0 {core/codec => codec}/src/joiner.rs | 0 {core/codec => codec}/src/keyedvec.rs | 0 {core/codec => codec}/src/lib.rs | 0 core/bft/Cargo.toml | 2 +- core/client/Cargo.toml | 2 +- core/client/db/Cargo.toml | 4 ++-- core/executor/Cargo.toml | 2 +- core/extrinsic-pool/Cargo.toml | 2 +- core/misbehavior-check/Cargo.toml | 2 +- core/network/Cargo.toml | 4 ++-- core/primitives/Cargo.toml | 4 ++-- core/rpc/Cargo.toml | 2 +- core/runtime-io/Cargo.toml | 2 +- core/runtime-sandbox/Cargo.toml | 2 +- core/runtime-version/Cargo.toml | 4 ++-- core/runtime/balances/Cargo.toml | 4 ++-- core/runtime/consensus/Cargo.toml | 4 ++-- core/runtime/contract/Cargo.toml | 2 +- core/runtime/council/Cargo.toml | 4 ++-- core/runtime/democracy/Cargo.toml | 4 ++-- core/runtime/example/Cargo.toml | 4 ++-- core/runtime/executive/Cargo.toml | 4 ++-- core/runtime/primitives/Cargo.toml | 4 ++-- core/runtime/session/Cargo.toml | 4 ++-- core/runtime/staking/Cargo.toml | 4 ++-- core/runtime/support/Cargo.toml | 4 ++-- core/runtime/system/Cargo.toml | 4 ++-- core/runtime/timestamp/Cargo.toml | 2 +- core/runtime/treasury/Cargo.toml | 4 ++-- core/service/Cargo.toml | 2 +- core/state-db/Cargo.toml | 4 ++-- core/state-machine/Cargo.toml | 2 +- core/test-client/Cargo.toml | 2 +- core/test-runtime/Cargo.toml | 4 ++-- core/test-runtime/wasm/Cargo.toml | 4 ++-- doc/packages/substrate.adoc | 2 +- node/consensus/Cargo.toml | 2 +- node/executor/Cargo.toml | 2 +- node/primitives/Cargo.toml | 4 ++-- node/runtime/Cargo.toml | 4 ++-- node/runtime/wasm/Cargo.toml | 4 ++-- node/transaction-pool/Cargo.toml | 2 +- 51 files changed, 63 insertions(+), 63 deletions(-) rename {core/codec => codec}/Cargo.toml (100%) rename {core/codec => codec}/README.adoc (100%) rename {core/codec => codec}/derive/Cargo.toml (100%) rename {core/codec => codec}/derive/src/decode.rs (100%) rename {core/codec => codec}/derive/src/encode.rs (100%) rename {core/codec => codec}/derive/src/lib.rs (100%) rename {core/codec => codec}/derive/tests/mod.rs (100%) rename {core/codec => codec}/src/codec.rs (100%) rename {core/codec => codec}/src/joiner.rs (100%) rename {core/codec => codec}/src/keyedvec.rs (100%) rename {core/codec => codec}/src/lib.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index a73f749747b01..25545165bd46f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,11 +1,11 @@ [workspace] members = [ + "codec", + "codec/derive", "core/bft", "core/cli", "core/client", "core/client/db", - "core/codec", - "core/codec/derive", "core/environmental", "core/executor", "core/extrinsic-pool", diff --git a/core/codec/Cargo.toml b/codec/Cargo.toml similarity index 100% rename from core/codec/Cargo.toml rename to codec/Cargo.toml diff --git a/core/codec/README.adoc b/codec/README.adoc similarity index 100% rename from core/codec/README.adoc rename to codec/README.adoc diff --git a/core/codec/derive/Cargo.toml b/codec/derive/Cargo.toml similarity index 100% rename from core/codec/derive/Cargo.toml rename to codec/derive/Cargo.toml diff --git a/core/codec/derive/src/decode.rs b/codec/derive/src/decode.rs similarity index 100% rename from core/codec/derive/src/decode.rs rename to codec/derive/src/decode.rs diff --git a/core/codec/derive/src/encode.rs b/codec/derive/src/encode.rs similarity index 100% rename from core/codec/derive/src/encode.rs rename to codec/derive/src/encode.rs diff --git a/core/codec/derive/src/lib.rs b/codec/derive/src/lib.rs similarity index 100% rename from core/codec/derive/src/lib.rs rename to codec/derive/src/lib.rs diff --git a/core/codec/derive/tests/mod.rs b/codec/derive/tests/mod.rs similarity index 100% rename from core/codec/derive/tests/mod.rs rename to codec/derive/tests/mod.rs diff --git a/core/codec/src/codec.rs b/codec/src/codec.rs similarity index 100% rename from core/codec/src/codec.rs rename to codec/src/codec.rs diff --git a/core/codec/src/joiner.rs b/codec/src/joiner.rs similarity index 100% rename from core/codec/src/joiner.rs rename to codec/src/joiner.rs diff --git a/core/codec/src/keyedvec.rs b/codec/src/keyedvec.rs similarity index 100% rename from core/codec/src/keyedvec.rs rename to codec/src/keyedvec.rs diff --git a/core/codec/src/lib.rs b/codec/src/lib.rs similarity index 100% rename from core/codec/src/lib.rs rename to codec/src/lib.rs diff --git a/core/bft/Cargo.toml b/core/bft/Cargo.toml index b7987302697a3..ed592c5a72fd3 100644 --- a/core/bft/Cargo.toml +++ b/core/bft/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] [dependencies] futures = "0.1.17" -substrate-codec = { path = "../codec" } +substrate-codec = { path = "../../codec" } substrate-primitives = { path = "../primitives" } substrate-runtime-support = { path = "../runtime/support" } substrate-runtime-primitives = { path = "../runtime/primitives" } diff --git a/core/client/Cargo.toml b/core/client/Cargo.toml index 2beb777d1787d..573dccaaf0fef 100644 --- a/core/client/Cargo.toml +++ b/core/client/Cargo.toml @@ -14,7 +14,7 @@ futures = "0.1.17" slog = "^2" heapsize = "0.4" substrate-bft = { path = "../bft" } -substrate-codec = { path = "../codec" } +substrate-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-primitives = { path = "../primitives" } substrate-runtime-io = { path = "../runtime-io" } diff --git a/core/client/db/Cargo.toml b/core/client/db/Cargo.toml index 92041798ea229..44edf8147c860 100644 --- a/core/client/db/Cargo.toml +++ b/core/client/db/Cargo.toml @@ -15,8 +15,8 @@ substrate-runtime-primitives = { path = "../../../core/runtime/primitives" } substrate-client = { path = "../../../core/client" } substrate-state-machine = { path = "../../../core/state-machine" } substrate-runtime-support = { path = "../../../core/runtime/support" } -substrate-codec = { path = "../../../core/codec" } -substrate-codec-derive = { path = "../../../core/codec/derive" } +substrate-codec = { path = "../../../codec" } +substrate-codec-derive = { path = "../../../codec/derive" } substrate-executor = { path = "../../../core/executor" } substrate-state-db = { path = "../../../core/state-db" } diff --git a/core/executor/Cargo.toml b/core/executor/Cargo.toml index 8b5a118b889c5..a4eeb57067be0 100644 --- a/core/executor/Cargo.toml +++ b/core/executor/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] [dependencies] error-chain = "0.12" -substrate-codec = { path = "../codec" } +substrate-codec = { path = "../../codec" } substrate-runtime-io = { path = "../runtime-io" } substrate-primitives = { path = "../primitives" } substrate-serializer = { path = "../serializer" } diff --git a/core/extrinsic-pool/Cargo.toml b/core/extrinsic-pool/Cargo.toml index 8490e6e28b2bc..b9df68b86dfde 100644 --- a/core/extrinsic-pool/Cargo.toml +++ b/core/extrinsic-pool/Cargo.toml @@ -16,4 +16,4 @@ substrate-runtime-primitives = { path = "../../core/runtime/primitives" } [dev-dependencies] substrate-test-client = { path = "../../core/test-client" } substrate-keyring = { path = "../../core/keyring" } -substrate-codec = { path = "../../core/codec" } +substrate-codec = { path = "../../codec" } diff --git a/core/misbehavior-check/Cargo.toml b/core/misbehavior-check/Cargo.toml index aa726c18b18db..9a35eaebb4999 100644 --- a/core/misbehavior-check/Cargo.toml +++ b/core/misbehavior-check/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -substrate-codec = { path = "../codec", default-features = false } +substrate-codec = { path = "../../codec", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } substrate-runtime-primitives = { path = "../runtime/primitives", default-features = false } substrate-runtime-io = { path = "../runtime-io", default-features = false } diff --git a/core/network/Cargo.toml b/core/network/Cargo.toml index a25f545eb58a7..a537910f9e249 100644 --- a/core/network/Cargo.toml +++ b/core/network/Cargo.toml @@ -19,8 +19,8 @@ ethcore-io = { git = "https://github.com/paritytech/parity.git" } substrate-primitives = { path = "../../core/primitives" } substrate-client = { path = "../../core/client" } substrate-runtime-primitives = { path = "../../core/runtime/primitives" } -substrate-codec = { path = "../../core/codec" } -substrate-codec-derive = { path = "../../core/codec/derive" } +substrate-codec = { path = "../../codec" } +substrate-codec-derive = { path = "../../codec/derive" } substrate-network-libp2p = { path = "../../core/network-libp2p" } [dev-dependencies] diff --git a/core/primitives/Cargo.toml b/core/primitives/Cargo.toml index ce5c41f1140be..f725f31ccc6b2 100644 --- a/core/primitives/Cargo.toml +++ b/core/primitives/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] crunchy = "0.1" substrate-runtime-std = { path = "../runtime-std", default_features = false } -substrate-codec = { path = "../codec", default_features = false } -substrate-codec-derive = { path = "../codec/derive", default_features = false } +substrate-codec = { path = "../../codec", default_features = false } +substrate-codec-derive = { path = "../../codec/derive", default_features = false } elastic-array = {version = "0.10", optional = true } fixed-hash = { version = "0.2.2", default_features = false } rustc-hex = { version = "2.0", default_features = false } diff --git a/core/rpc/Cargo.toml b/core/rpc/Cargo.toml index 3727bafa0c4ac..dfc007e6e1714 100644 --- a/core/rpc/Cargo.toml +++ b/core/rpc/Cargo.toml @@ -10,7 +10,7 @@ jsonrpc-macros = { git="https://github.com/paritytech/jsonrpc.git" } jsonrpc-pubsub = { git="https://github.com/paritytech/jsonrpc.git" } log = "0.3" parking_lot = "0.4" -substrate-codec = { path = "../codec" } +substrate-codec = { path = "../../codec" } substrate-client = { path = "../client" } substrate-executor = { path = "../executor" } substrate-extrinsic-pool = { path = "../extrinsic-pool" } diff --git a/core/runtime-io/Cargo.toml b/core/runtime-io/Cargo.toml index 8bf3c3406f6f7..43d00b2f7f84d 100644 --- a/core/runtime-io/Cargo.toml +++ b/core/runtime-io/Cargo.toml @@ -12,7 +12,7 @@ substrate-runtime-std = { path = "../runtime-std", default_features = false } environmental = { path = "../environmental", optional = true } substrate-state-machine = { path = "../state-machine", optional = true } substrate-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../codec", default_features = false } +substrate-codec = { path = "../../codec", default_features = false } triehash = { version = "0.2", optional = true } hashdb = { version = "0.2", default_features = false } rlp = { version = "0.2", optional = true, default_features = false } diff --git a/core/runtime-sandbox/Cargo.toml b/core/runtime-sandbox/Cargo.toml index b80cb4443f8ae..24c2b6b70770c 100755 --- a/core/runtime-sandbox/Cargo.toml +++ b/core/runtime-sandbox/Cargo.toml @@ -12,7 +12,7 @@ wasmi = { version = "0.4", optional = true } substrate-primitives = { path = "../primitives", default_features = false } substrate-runtime-std = { path = "../runtime-std", default_features = false } substrate-runtime-io = { path = "../runtime-io", default_features = false } -substrate-codec = { path = "../codec", default_features = false } +substrate-codec = { path = "../../codec", default_features = false } [dev-dependencies] wabt = "0.4" diff --git a/core/runtime-version/Cargo.toml b/core/runtime-version/Cargo.toml index 836d1dbb3ff3b..b0126fea5a7ca 100644 --- a/core/runtime-version/Cargo.toml +++ b/core/runtime-version/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../codec", default_features = false } -substrate-codec-derive = { path = "../codec/derive", default_features = false } +substrate-codec = { path = "../../codec", default_features = false } +substrate-codec-derive = { path = "../../codec/derive", default_features = false } substrate-runtime-std = { path = "../runtime-std", default_features = false } substrate-runtime-support = { path = "../runtime/support", default_features = false } diff --git a/core/runtime/balances/Cargo.toml b/core/runtime/balances/Cargo.toml index e496102205a51..a0a28974779fc 100644 --- a/core/runtime/balances/Cargo.toml +++ b/core/runtime/balances/Cargo.toml @@ -9,8 +9,8 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } diff --git a/core/runtime/consensus/Cargo.toml b/core/runtime/consensus/Cargo.toml index cd47df2280f95..a829cd0ca339f 100644 --- a/core/runtime/consensus/Cargo.toml +++ b/core/runtime/consensus/Cargo.toml @@ -7,8 +7,8 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } diff --git a/core/runtime/contract/Cargo.toml b/core/runtime/contract/Cargo.toml index bfcef5594a941..ee14439da0e2d 100644 --- a/core/runtime/contract/Cargo.toml +++ b/core/runtime/contract/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-primitives = { path = "../../runtime/primitives", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } diff --git a/core/runtime/council/Cargo.toml b/core/runtime/council/Cargo.toml index 8deb81a3304e2..5139f4aba73a3 100644 --- a/core/runtime/council/Cargo.toml +++ b/core/runtime/council/Cargo.toml @@ -10,8 +10,8 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } diff --git a/core/runtime/democracy/Cargo.toml b/core/runtime/democracy/Cargo.toml index 23a05cbed86d6..ddc15a0cb2b3f 100644 --- a/core/runtime/democracy/Cargo.toml +++ b/core/runtime/democracy/Cargo.toml @@ -8,8 +8,8 @@ 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} -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } diff --git a/core/runtime/example/Cargo.toml b/core/runtime/example/Cargo.toml index 1332e154ae33e..bc66ccd97fa61 100644 --- a/core/runtime/example/Cargo.toml +++ b/core/runtime/example/Cargo.toml @@ -11,8 +11,8 @@ substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } diff --git a/core/runtime/executive/Cargo.toml b/core/runtime/executive/Cargo.toml index bfe2d7e35e999..5a97b17fc41a8 100644 --- a/core/runtime/executive/Cargo.toml +++ b/core/runtime/executive/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } @@ -17,7 +17,7 @@ substrate-runtime-system = { path = "../system", default_features = false } [dev-dependencies] substrate-primitives = { path = "../../primitives" } substrate-runtime-balances = { path = "../balances" } -substrate-codec-derive = { path = "../../codec/derive" } +substrate-codec-derive = { path = "../../../codec/derive" } [features] default = ["std"] diff --git a/core/runtime/primitives/Cargo.toml b/core/runtime/primitives/Cargo.toml index ad8737539a824..b00f0f8fa2208 100644 --- a/core/runtime/primitives/Cargo.toml +++ b/core/runtime/primitives/Cargo.toml @@ -8,8 +8,8 @@ num-traits = { version = "0.2", default_features = false } integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } diff --git a/core/runtime/session/Cargo.toml b/core/runtime/session/Cargo.toml index 8b49c40a78c45..c677b7f0a25be 100644 --- a/core/runtime/session/Cargo.toml +++ b/core/runtime/session/Cargo.toml @@ -9,8 +9,8 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } diff --git a/core/runtime/staking/Cargo.toml b/core/runtime/staking/Cargo.toml index f52f69933e818..3ebba90dfa546 100644 --- a/core/runtime/staking/Cargo.toml +++ b/core/runtime/staking/Cargo.toml @@ -9,8 +9,8 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } diff --git a/core/runtime/support/Cargo.toml b/core/runtime/support/Cargo.toml index f7a2dc5c127ac..2ea7f206f389f 100644 --- a/core/runtime/support/Cargo.toml +++ b/core/runtime/support/Cargo.toml @@ -10,12 +10,12 @@ serde_derive = { version = "1.0", optional = true } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } [dev-dependencies] pretty_assertions = "0.5.1" serde_json = { version = "1.0" } -substrate-codec-derive = { path = "../../../core/codec/derive" } +substrate-codec-derive = { path = "../../../codec/derive" } [features] default = ["std"] diff --git a/core/runtime/system/Cargo.toml b/core/runtime/system/Cargo.toml index 7f7c96f9ed4fb..f754aba69c76b 100644 --- a/core/runtime/system/Cargo.toml +++ b/core/runtime/system/Cargo.toml @@ -8,8 +8,8 @@ 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} -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } diff --git a/core/runtime/timestamp/Cargo.toml b/core/runtime/timestamp/Cargo.toml index a224b9d399f17..795690abf3de8 100644 --- a/core/runtime/timestamp/Cargo.toml +++ b/core/runtime/timestamp/Cargo.toml @@ -11,7 +11,7 @@ substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } diff --git a/core/runtime/treasury/Cargo.toml b/core/runtime/treasury/Cargo.toml index 851b9e960b91b..19d344078fa87 100644 --- a/core/runtime/treasury/Cargo.toml +++ b/core/runtime/treasury/Cargo.toml @@ -11,8 +11,8 @@ substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-codec = { path = "../../../codec", default_features = false } +substrate-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } diff --git a/core/service/Cargo.toml b/core/service/Cargo.toml index c45e13ee6a4d1..fcd76822d9591 100644 --- a/core/service/Cargo.toml +++ b/core/service/Cargo.toml @@ -23,7 +23,7 @@ substrate-primitives = { path = "../../core/primitives" } substrate-network = { path = "../../core/network" } substrate-client = { path = "../../core/client" } substrate-client-db = { path = "../../core/client/db" } -substrate-codec = { path = "../../core/codec" } +substrate-codec = { path = "../../codec" } substrate-executor = { path = "../../core/executor" } substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } substrate-rpc = { path = "../../core/rpc" } diff --git a/core/state-db/Cargo.toml b/core/state-db/Cargo.toml index f867fc9fafc76..1097ede624f52 100644 --- a/core/state-db/Cargo.toml +++ b/core/state-db/Cargo.toml @@ -7,8 +7,8 @@ authors = ["Parity Technologies "] parking_lot = "0.5" log = "0.4" substrate-primitives = { path = "../../core/primitives" } -substrate-codec = { path = "../../core/codec" } -substrate-codec-derive = { path = "../../core/codec/derive" } +substrate-codec = { path = "../../codec" } +substrate-codec-derive = { path = "../../codec/derive" } [dev-dependencies] env_logger = "0.4" diff --git a/core/state-machine/Cargo.toml b/core/state-machine/Cargo.toml index 3635627999f35..41fb4913226e6 100644 --- a/core/state-machine/Cargo.toml +++ b/core/state-machine/Cargo.toml @@ -17,5 +17,5 @@ triehash = "0.2" rlp = "0.2.4" substrate-primitives = { path = "../primitives", version = "0.1.0" } -substrate-codec = { path = "../codec", default_features = false } +substrate-codec = { path = "../../codec", default_features = false } diff --git a/core/test-client/Cargo.toml b/core/test-client/Cargo.toml index c57f4e449fe33..d60800445d5fe 100644 --- a/core/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] rhododendron = "0.3" substrate-bft = { path = "../bft" } substrate-client = { path = "../client" } -substrate-codec = { path = "../codec" } +substrate-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index 26394abff5f36..988e08454d158 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -9,8 +9,8 @@ hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } substrate-keyring = { path = "../keyring", optional = true } -substrate-codec = { path = "../codec", default-features = false } -substrate-codec-derive = { path = "../codec/derive", default-features = false } +substrate-codec = { path = "../../codec", default-features = false } +substrate-codec-derive = { path = "../../codec/derive", default-features = false } substrate-runtime-std = { path = "../runtime-std", default-features = false } substrate-runtime-io = { path = "../runtime-io", default-features = false } substrate-runtime-support = { path = "../runtime/support", default-features = false } diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index 1fdf4a74dfc1e..d0f86c8df00ad 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] log = { version = "0.3", optional = true } hex-literal = { version = "0.1.0", optional = true } -substrate-codec = { path = "../../codec", default-features = false } -substrate-codec-derive = { path = "../../codec/derive", default-features = false } +substrate-codec = { path = "../../../codec", default-features = false } +substrate-codec-derive = { path = "../../../codec/derive", default-features = false } substrate-runtime-std = { path = "../../runtime-std", default-features = false } substrate-runtime-io = { path = "../../runtime-io", default-features = false } substrate-runtime-support = { path = "../../runtime/support", default-features = false } diff --git a/doc/packages/substrate.adoc b/doc/packages/substrate.adoc index 688854fd1a17b..a90fde6285949 100644 --- a/doc/packages/substrate.adoc +++ b/doc/packages/substrate.adoc @@ -9,7 +9,7 @@ include::../../core/cli/README.adoc[] include::../../core/client/README.adoc[] -include::../../core/codec/README.adoc[] +include::../../codec/README.adoc[] include::../../core/environmental/README.adoc[] diff --git a/node/consensus/Cargo.toml b/node/consensus/Cargo.toml index e38eb2059ee94..b255edb5b5384 100644 --- a/node/consensus/Cargo.toml +++ b/node/consensus/Cargo.toml @@ -16,7 +16,7 @@ node-primitives = { path = "../primitives" } node-runtime = { path = "../runtime" } node-transaction-pool = { path = "../transaction-pool" } substrate-bft = { path = "../../core/bft" } -substrate-codec = { path = "../../core/codec" } +substrate-codec = { path = "../../codec" } substrate-primitives = { path = "../../core/primitives" } substrate-runtime-support = { path = "../../core/runtime/support" } substrate-client = { path = "../../core/client" } diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 0e8c352e277a6..79eb2bc87800e 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -7,7 +7,7 @@ description = "Substrate node implementation in Rust." [dependencies] hex-literal = "0.1" triehash = "0.2" -substrate-codec = { path = "../../core/codec" } +substrate-codec = { path = "../../codec" } substrate-runtime-io = { path = "../../core/runtime-io" } substrate-runtime-support = { path = "../../core/runtime/support" } substrate-state-machine = { path = "../../core/state-machine" } diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index 292d270a21e27..a9c1e6094e40f 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../core/codec", default_features = false } -substrate-codec-derive = { path = "../../core/codec/derive", default_features = false } +substrate-codec = { path = "../../codec", default_features = false } +substrate-codec-derive = { path = "../../codec/derive", default_features = false } substrate-primitives = { path = "../../core/primitives", default_features = false } substrate-runtime-std = { path = "../../core/runtime-std", default_features = false } substrate-runtime-primitives = { path = "../../core/runtime/primitives", default_features = false } diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index a426599d183a9..317367d2606a3 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -10,8 +10,8 @@ log = { version = "0.3", optional = true } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} -substrate-codec = { path = "../../core/codec" } -substrate-codec-derive = { path = "../../core/codec/derive" } +substrate-codec = { path = "../../codec" } +substrate-codec-derive = { path = "../../codec/derive" } substrate-runtime-std = { path = "../../core/runtime-std" } substrate-runtime-io = { path = "../../core/runtime-io" } substrate-runtime-support = { path = "../../core/runtime/support" } diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index e701ae00e0aa3..1c358e21b9fb6 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -9,8 +9,8 @@ crate-type = ["cdylib"] [dependencies] integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } safe-mix = { version = "1.0", default_features = false} -substrate-codec-derive = { path = "../../../core/codec/derive" } -substrate-codec = { path = "../../../core/codec", default-features = false } +substrate-codec-derive = { path = "../../../codec/derive" } +substrate-codec = { path = "../../../codec", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } substrate-runtime-std = { path = "../../../core/runtime-std", default-features = false } substrate-runtime-io = { path = "../../../core/runtime-io", default-features = false } diff --git a/node/transaction-pool/Cargo.toml b/node/transaction-pool/Cargo.toml index c3b6aaf97d8d1..10601c935f7c6 100644 --- a/node/transaction-pool/Cargo.toml +++ b/node/transaction-pool/Cargo.toml @@ -11,7 +11,7 @@ node-api = { path = "../api" } node-primitives = { path = "../primitives" } node-runtime = { path = "../runtime" } substrate-client = { path = "../../core/client" } -substrate-codec = { path = "../../core/codec" } +substrate-codec = { path = "../../codec" } substrate-keyring = { path = "../../core/keyring" } substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } substrate-primitives = { path = "../../core/primitives" } From 6b02eb5198414aeaa95544df30fd995fee6a9d65 Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 23:28:24 +0200 Subject: [PATCH 11/24] Rename substrate-codec -> parity-codec --- Cargo.lock | 146 ++++++++++++++--------------- codec/Cargo.toml | 2 +- codec/derive/Cargo.toml | 4 +- codec/derive/tests/mod.rs | 4 +- core/bft/Cargo.toml | 2 +- core/bft/src/lib.rs | 2 +- core/client/Cargo.toml | 2 +- core/client/db/Cargo.toml | 4 +- core/client/db/src/lib.rs | 4 +- core/client/src/lib.rs | 2 +- core/executor/Cargo.toml | 2 +- core/executor/src/lib.rs | 2 +- core/executor/wasm/Cargo.lock | 12 +-- core/extrinsic-pool/Cargo.toml | 2 +- core/extrinsic-pool/src/lib.rs | 2 +- core/misbehavior-check/Cargo.toml | 4 +- core/misbehavior-check/src/lib.rs | 2 +- core/network/Cargo.toml | 4 +- core/network/src/lib.rs | 4 +- core/primitives/Cargo.toml | 6 +- core/primitives/src/lib.rs | 4 +- core/rpc/Cargo.toml | 2 +- core/rpc/src/lib.rs | 2 +- core/runtime-io/Cargo.toml | 4 +- core/runtime-io/with_std.rs | 2 +- core/runtime-io/without_std.rs | 2 +- core/runtime-sandbox/Cargo.toml | 4 +- core/runtime-sandbox/src/lib.rs | 2 +- core/runtime-version/Cargo.toml | 6 +- core/runtime-version/src/lib.rs | 4 +- core/runtime/balances/Cargo.toml | 8 +- core/runtime/balances/src/lib.rs | 4 +- core/runtime/consensus/Cargo.toml | 8 +- core/runtime/consensus/src/lib.rs | 4 +- core/runtime/contract/Cargo.toml | 4 +- core/runtime/contract/src/lib.rs | 2 +- core/runtime/council/Cargo.toml | 8 +- core/runtime/council/src/lib.rs | 4 +- core/runtime/democracy/Cargo.toml | 6 +- core/runtime/democracy/src/lib.rs | 4 +- core/runtime/example/Cargo.toml | 8 +- core/runtime/example/src/lib.rs | 4 +- core/runtime/executive/Cargo.toml | 6 +- core/runtime/executive/src/lib.rs | 4 +- core/runtime/primitives/Cargo.toml | 6 +- core/runtime/primitives/src/lib.rs | 4 +- core/runtime/session/Cargo.toml | 8 +- core/runtime/session/src/lib.rs | 4 +- core/runtime/staking/Cargo.toml | 8 +- core/runtime/staking/src/lib.rs | 4 +- core/runtime/support/Cargo.toml | 6 +- core/runtime/support/src/lib.rs | 4 +- core/runtime/system/Cargo.toml | 8 +- core/runtime/system/src/lib.rs | 4 +- core/runtime/timestamp/Cargo.toml | 4 +- core/runtime/timestamp/src/lib.rs | 2 +- core/runtime/treasury/Cargo.toml | 8 +- core/runtime/treasury/src/lib.rs | 4 +- core/service/Cargo.toml | 2 +- core/service/src/lib.rs | 2 +- core/state-db/Cargo.toml | 4 +- core/state-db/src/lib.rs | 4 +- core/state-machine/Cargo.toml | 2 +- core/state-machine/src/lib.rs | 2 +- core/test-client/Cargo.toml | 2 +- core/test-client/src/lib.rs | 2 +- core/test-runtime/Cargo.toml | 6 +- core/test-runtime/src/lib.rs | 4 +- core/test-runtime/wasm/Cargo.lock | 26 ++--- core/test-runtime/wasm/Cargo.toml | 6 +- node/consensus/Cargo.toml | 2 +- node/consensus/src/lib.rs | 2 +- node/executor/Cargo.toml | 2 +- node/executor/src/lib.rs | 2 +- node/primitives/Cargo.toml | 8 +- node/primitives/src/lib.rs | 4 +- node/runtime/Cargo.toml | 6 +- node/runtime/src/lib.rs | 4 +- node/runtime/wasm/Cargo.lock | 70 +++++++------- node/runtime/wasm/Cargo.toml | 6 +- node/transaction-pool/Cargo.toml | 2 +- node/transaction-pool/src/lib.rs | 2 +- 82 files changed, 282 insertions(+), 282 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 622086c6beeee..a2e00656edaa1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1532,11 +1532,11 @@ dependencies = [ "node-primitives 0.1.0", "node-runtime 0.1.0", "node-transaction-pool 0.1.0", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-bft 0.1.0", "substrate-client 0.1.0", - "substrate-codec 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", @@ -1551,7 +1551,7 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "node-primitives 0.1.0", "node-runtime 0.1.0", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", @@ -1589,11 +1589,11 @@ dependencies = [ name = "node-primitives" version = "0.1.0" dependencies = [ + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", @@ -1607,12 +1607,12 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "node-primitives 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "rustc-hex 1.0.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.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", @@ -1668,9 +1668,9 @@ dependencies = [ "node-api 0.1.0", "node-primitives 0.1.0", "node-runtime 0.1.0", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-client 0.1.0", - "substrate-codec 0.1.0", "substrate-extrinsic-pool 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", @@ -1748,6 +1748,23 @@ name = "parity-bytes" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "parity-codec" +version = "0.1.0" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", + "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parity-crypto" version = "0.1.0" @@ -2424,9 +2441,9 @@ dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", @@ -2477,12 +2494,12 @@ dependencies = [ "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-bft 0.1.0", - "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", @@ -2505,10 +2522,10 @@ dependencies = [ "kvdb-rocksdb 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-client 0.1.0", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-executor 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", @@ -2517,23 +2534,6 @@ dependencies = [ "substrate-state-machine 0.1.0", ] -[[package]] -name = "substrate-codec" -version = "0.1.0" -dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-codec-derive" -version = "0.1.0" -dependencies = [ - "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-executor" version = "0.1.0" @@ -2545,10 +2545,10 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-version 0.1.0", @@ -2567,10 +2567,10 @@ dependencies = [ "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-keyring 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-test-client 0.1.0", @@ -2606,9 +2606,9 @@ dependencies = [ name = "substrate-misbehavior-check" version = "0.1.0" dependencies = [ + "parity-codec 0.1.0", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-bft 0.1.0", - "substrate-codec 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", @@ -2626,11 +2626,11 @@ dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "linked-hash-map 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-client 0.1.0", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-network-libp2p 0.1.0", "substrate-primitives 0.1.0", @@ -2679,6 +2679,8 @@ dependencies = [ "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2687,8 +2689,6 @@ dependencies = [ "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-runtime-std 0.1.0", "substrate-serializer 0.1.0", "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2707,11 +2707,11 @@ dependencies = [ "jsonrpc-macros 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", "jsonrpc-pubsub 8.0.1 (git+https://github.com/paritytech/jsonrpc.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-client 0.1.0", - "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-extrinsic-pool 0.1.0", "substrate-primitives 0.1.0", @@ -2741,11 +2741,11 @@ name = "substrate-runtime-balances" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", @@ -2760,10 +2760,10 @@ name = "substrate-runtime-consensus" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", @@ -2777,11 +2777,11 @@ name = "substrate-runtime-contract" version = "0.1.0" dependencies = [ "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parity-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)", "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-io 0.1.0", @@ -2799,11 +2799,11 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", @@ -2821,11 +2821,11 @@ name = "substrate-runtime-democracy" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", @@ -2841,10 +2841,10 @@ name = "substrate-runtime-example" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-io 0.1.0", @@ -2859,10 +2859,10 @@ name = "substrate-runtime-executive" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-io 0.1.0", @@ -2878,9 +2878,9 @@ version = "0.1.0" dependencies = [ "environmental 0.1.0", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-std 0.1.0", "substrate-state-machine 0.1.0", @@ -2894,11 +2894,11 @@ dependencies = [ "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -2910,8 +2910,8 @@ name = "substrate-runtime-sandbox" version = "0.1.0" dependencies = [ "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -2924,11 +2924,11 @@ name = "substrate-runtime-session" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", @@ -2945,11 +2945,11 @@ name = "substrate-runtime-staking" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", @@ -2978,12 +2978,12 @@ name = "substrate-runtime-support" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -2994,11 +2994,11 @@ name = "substrate-runtime-system" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", @@ -3011,9 +3011,9 @@ name = "substrate-runtime-timestamp" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", "substrate-runtime-io 0.1.0", @@ -3028,10 +3028,10 @@ name = "substrate-runtime-treasury" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-io 0.1.0", @@ -3045,10 +3045,10 @@ dependencies = [ name = "substrate-runtime-version" version = "0.1.0" dependencies = [ + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", ] @@ -3070,6 +3070,7 @@ dependencies = [ "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3077,7 +3078,6 @@ dependencies = [ "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-client 0.1.0", "substrate-client-db 0.1.0", - "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-extrinsic-pool 0.1.0", "substrate-keystore 0.1.0", @@ -3098,9 +3098,9 @@ version = "0.1.0" dependencies = [ "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-primitives 0.1.0", ] @@ -3114,10 +3114,10 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", "substrate-primitives 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -3141,10 +3141,10 @@ name = "substrate-test-client" version = "0.1.0" dependencies = [ "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-bft 0.1.0", "substrate-client 0.1.0", - "substrate-codec 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", @@ -3159,10 +3159,10 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", diff --git a/codec/Cargo.toml b/codec/Cargo.toml index a228686e90b1d..00bbed49852c1 100644 --- a/codec/Cargo.toml +++ b/codec/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-codec" +name = "parity-codec" description = "Serialization and deserialization codec for runtime values" version = "0.1.0" authors = ["Parity Technologies "] diff --git a/codec/derive/Cargo.toml b/codec/derive/Cargo.toml index d5ccd9fdd57aa..f92b1f5981202 100644 --- a/codec/derive/Cargo.toml +++ b/codec/derive/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-codec-derive" +name = "parity-codec-derive" description = "Serialization and deserialization derive macro" version = "0.1.0" authors = ["Parity Technologies "] @@ -13,7 +13,7 @@ quote = "0.6" proc-macro2 = "0.4" [dev-dependencies] -substrate-codec = { path = "../" } +parity-codec = { path = "../" } [features] default = ["std"] diff --git a/codec/derive/tests/mod.rs b/codec/derive/tests/mod.rs index 6b3260f8f64e2..f7b4b77be3d93 100644 --- a/codec/derive/tests/mod.rs +++ b/codec/derive/tests/mod.rs @@ -14,10 +14,10 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -extern crate substrate_codec as codec; +extern crate parity_codec as codec; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; use codec::{Encode, Decode}; diff --git a/core/bft/Cargo.toml b/core/bft/Cargo.toml index ed592c5a72fd3..9afb91f843bce 100644 --- a/core/bft/Cargo.toml +++ b/core/bft/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] [dependencies] futures = "0.1.17" -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } substrate-primitives = { path = "../primitives" } substrate-runtime-support = { path = "../runtime/support" } substrate-runtime-primitives = { path = "../runtime/primitives" } diff --git a/core/bft/src/lib.rs b/core/bft/src/lib.rs index e6f2615f0fd53..33d185cc3ebc8 100644 --- a/core/bft/src/lib.rs +++ b/core/bft/src/lib.rs @@ -36,7 +36,7 @@ pub mod error; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; diff --git a/core/client/Cargo.toml b/core/client/Cargo.toml index 573dccaaf0fef..1fbeb29dd66d2 100644 --- a/core/client/Cargo.toml +++ b/core/client/Cargo.toml @@ -14,7 +14,7 @@ futures = "0.1.17" slog = "^2" heapsize = "0.4" substrate-bft = { path = "../bft" } -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-primitives = { path = "../primitives" } substrate-runtime-io = { path = "../runtime-io" } diff --git a/core/client/db/Cargo.toml b/core/client/db/Cargo.toml index 44edf8147c860..442ab086858d6 100644 --- a/core/client/db/Cargo.toml +++ b/core/client/db/Cargo.toml @@ -15,8 +15,8 @@ substrate-runtime-primitives = { path = "../../../core/runtime/primitives" } substrate-client = { path = "../../../core/client" } substrate-state-machine = { path = "../../../core/state-machine" } substrate-runtime-support = { path = "../../../core/runtime/support" } -substrate-codec = { path = "../../../codec" } -substrate-codec-derive = { path = "../../../codec/derive" } +parity-codec = { path = "../../../codec" } +parity-codec-derive = { path = "../../../codec/derive" } substrate-executor = { path = "../../../core/executor" } substrate-state-db = { path = "../../../core/state-db" } diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index acbd935ce8c32..8f0e332d17988 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -28,7 +28,7 @@ extern crate substrate_state_machine as state_machine; extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_executor as executor; extern crate substrate_state_db as state_db; @@ -36,7 +36,7 @@ extern crate substrate_state_db as state_db; extern crate log; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[cfg(test)] extern crate kvdb_memorydb; diff --git a/core/client/src/lib.rs b/core/client/src/lib.rs index fd30eaae72e32..f5804fa8c0ca6 100644 --- a/core/client/src/lib.rs +++ b/core/client/src/lib.rs @@ -20,7 +20,7 @@ #![recursion_limit="128"] extern crate substrate_bft as bft; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_support as runtime_support; diff --git a/core/executor/Cargo.toml b/core/executor/Cargo.toml index a4eeb57067be0..c3a49cbc0fe24 100644 --- a/core/executor/Cargo.toml +++ b/core/executor/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] [dependencies] error-chain = "0.12" -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } substrate-runtime-io = { path = "../runtime-io" } substrate-primitives = { path = "../primitives" } substrate-serializer = { path = "../serializer" } diff --git a/core/executor/src/lib.rs b/core/executor/src/lib.rs index 7b9779a9b6467..024c16a3a6622 100644 --- a/core/executor/src/lib.rs +++ b/core/executor/src/lib.rs @@ -30,7 +30,7 @@ #![warn(missing_docs)] #![recursion_limit="128"] -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_runtime_io as runtime_io; extern crate substrate_primitives as primitives; extern crate substrate_serializer as serializer; diff --git a/core/executor/wasm/Cargo.lock b/core/executor/wasm/Cargo.lock index ed26df817ed7b..c05da1c85d306 100644 --- a/core/executor/wasm/Cargo.lock +++ b/core/executor/wasm/Cargo.lock @@ -108,14 +108,14 @@ version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "substrate-codec" +name = "parity-codec" version = "0.1.0" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "substrate-codec-derive" +name = "parity-codec-derive" version = "0.1.0" dependencies = [ "proc-macro2 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", @@ -134,8 +134,8 @@ dependencies = [ "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-runtime-std 0.1.0", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -146,7 +146,7 @@ version = "0.1.0" dependencies = [ "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-std 0.1.0", ] @@ -156,7 +156,7 @@ name = "substrate-runtime-sandbox" version = "0.1.0" dependencies = [ "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", diff --git a/core/extrinsic-pool/Cargo.toml b/core/extrinsic-pool/Cargo.toml index b9df68b86dfde..e3b8038d55a16 100644 --- a/core/extrinsic-pool/Cargo.toml +++ b/core/extrinsic-pool/Cargo.toml @@ -16,4 +16,4 @@ substrate-runtime-primitives = { path = "../../core/runtime/primitives" } [dev-dependencies] substrate-test-client = { path = "../../core/test-client" } substrate-keyring = { path = "../../core/keyring" } -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } diff --git a/core/extrinsic-pool/src/lib.rs b/core/extrinsic-pool/src/lib.rs index bcd2b03c80e00..d31dd18766b28 100644 --- a/core/extrinsic-pool/src/lib.rs +++ b/core/extrinsic-pool/src/lib.rs @@ -33,7 +33,7 @@ extern crate serde_derive; extern crate transaction_pool as txpool; #[cfg(test)] extern crate substrate_test_client as test_client; #[cfg(test)] extern crate substrate_keyring as keyring; -#[cfg(test)] extern crate substrate_codec as codec; +#[cfg(test)] extern crate parity_codec as codec; pub mod watcher; mod error; diff --git a/core/misbehavior-check/Cargo.toml b/core/misbehavior-check/Cargo.toml index 9a35eaebb4999..126bb6aafd901 100644 --- a/core/misbehavior-check/Cargo.toml +++ b/core/misbehavior-check/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" authors = ["Parity Technologies "] [dependencies] -substrate-codec = { path = "../../codec", default-features = false } +parity-codec = { path = "../../codec", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } substrate-runtime-primitives = { path = "../runtime/primitives", default-features = false } substrate-runtime-io = { path = "../runtime-io", default-features = false } @@ -16,4 +16,4 @@ substrate-keyring = { path = "../keyring" } [features] default = ["std"] -std = ["substrate-codec/std", "substrate-primitives/std", "substrate-runtime-primitives/std", "substrate-runtime-io/std"] +std = ["parity-codec/std", "substrate-primitives/std", "substrate-runtime-primitives/std", "substrate-runtime-io/std"] diff --git a/core/misbehavior-check/src/lib.rs b/core/misbehavior-check/src/lib.rs index eff87ab1e5efb..a5ae19675b166 100644 --- a/core/misbehavior-check/src/lib.rs +++ b/core/misbehavior-check/src/lib.rs @@ -20,7 +20,7 @@ #![cfg_attr(not(feature = "std"), no_std)] -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_primitives as runtime_primitives; diff --git a/core/network/Cargo.toml b/core/network/Cargo.toml index a537910f9e249..fe19b3d73ffe8 100644 --- a/core/network/Cargo.toml +++ b/core/network/Cargo.toml @@ -19,8 +19,8 @@ ethcore-io = { git = "https://github.com/paritytech/parity.git" } substrate-primitives = { path = "../../core/primitives" } substrate-client = { path = "../../core/client" } substrate-runtime-primitives = { path = "../../core/runtime/primitives" } -substrate-codec = { path = "../../codec" } -substrate-codec-derive = { path = "../../codec/derive" } +parity-codec = { path = "../../codec" } +parity-codec-derive = { path = "../../codec/derive" } substrate-network-libp2p = { path = "../../core/network-libp2p" } [dev-dependencies] diff --git a/core/network/src/lib.rs b/core/network/src/lib.rs index 7f0817653eb59..246e39c939375 100644 --- a/core/network/src/lib.rs +++ b/core/network/src/lib.rs @@ -29,13 +29,13 @@ extern crate substrate_primitives as primitives; extern crate substrate_client as client; extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_network_libp2p as network_libp2p; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate futures; extern crate rustc_hex; #[macro_use] extern crate log; #[macro_use] extern crate bitflags; #[macro_use] extern crate error_chain; -#[macro_use] extern crate substrate_codec_derive; +#[macro_use] extern crate parity_codec_derive; #[cfg(test)] extern crate env_logger; #[cfg(test)] extern crate substrate_keyring as keyring; diff --git a/core/primitives/Cargo.toml b/core/primitives/Cargo.toml index f725f31ccc6b2..c09dc8ea7a4e2 100644 --- a/core/primitives/Cargo.toml +++ b/core/primitives/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] crunchy = "0.1" substrate-runtime-std = { path = "../runtime-std", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } elastic-array = {version = "0.10", optional = true } fixed-hash = { version = "0.2.2", default_features = false } rustc-hex = { version = "2.0", default_features = false } @@ -40,7 +40,7 @@ std = [ "fixed-hash/std", "fixed-hash/heapsizeof", "fixed-hash/libc", - "substrate-codec/std", + "parity-codec/std", "substrate-runtime-std/std", "serde/std", "rustc-hex/std", diff --git a/core/primitives/src/lib.rs b/core/primitives/src/lib.rs index 0d6d4191e3a17..0f4284b027314 100644 --- a/core/primitives/src/lib.rs +++ b/core/primitives/src/lib.rs @@ -30,11 +30,11 @@ extern crate fixed_hash; #[macro_use] extern crate uint as uint_crate; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; extern crate rustc_hex; extern crate byteorder; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; #[cfg(feature = "std")] extern crate rlp; diff --git a/core/rpc/Cargo.toml b/core/rpc/Cargo.toml index dfc007e6e1714..a5acd4951485c 100644 --- a/core/rpc/Cargo.toml +++ b/core/rpc/Cargo.toml @@ -10,7 +10,7 @@ jsonrpc-macros = { git="https://github.com/paritytech/jsonrpc.git" } jsonrpc-pubsub = { git="https://github.com/paritytech/jsonrpc.git" } log = "0.3" parking_lot = "0.4" -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } substrate-client = { path = "../client" } substrate-executor = { path = "../executor" } substrate-extrinsic-pool = { path = "../extrinsic-pool" } diff --git a/core/rpc/src/lib.rs b/core/rpc/src/lib.rs index b4e07fc823e80..dbba9a79a21bd 100644 --- a/core/rpc/src/lib.rs +++ b/core/rpc/src/lib.rs @@ -23,7 +23,7 @@ extern crate jsonrpc_core as rpc; extern crate jsonrpc_pubsub; extern crate parking_lot; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_client as client; extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_primitives as primitives; diff --git a/core/runtime-io/Cargo.toml b/core/runtime-io/Cargo.toml index 43d00b2f7f84d..2550c7c08de66 100644 --- a/core/runtime-io/Cargo.toml +++ b/core/runtime-io/Cargo.toml @@ -12,7 +12,7 @@ substrate-runtime-std = { path = "../runtime-std", default_features = false } environmental = { path = "../environmental", optional = true } substrate-state-machine = { path = "../state-machine", optional = true } substrate-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } +parity-codec = { path = "../../codec", default_features = false } triehash = { version = "0.2", optional = true } hashdb = { version = "0.2", default_features = false } rlp = { version = "0.2", optional = true, default_features = false } @@ -24,7 +24,7 @@ std = [ "substrate-state-machine", "triehash", "substrate-primitives/std", - "substrate-codec/std", + "parity-codec/std", "substrate-runtime-std/std", "rlp" ] diff --git a/core/runtime-io/with_std.rs b/core/runtime-io/with_std.rs index 3790f925bd4a2..4a69c45eed4bb 100644 --- a/core/runtime-io/with_std.rs +++ b/core/runtime-io/with_std.rs @@ -26,7 +26,7 @@ extern crate hashdb; extern crate rlp; #[doc(hidden)] -pub extern crate substrate_codec as codec; +pub extern crate parity_codec as codec; // re-export hashing functions. pub use primitives::{blake2_256, twox_128, twox_256, ed25519}; diff --git a/core/runtime-io/without_std.rs b/core/runtime-io/without_std.rs index 34c4191e97e22..b48e594c21da4 100644 --- a/core/runtime-io/without_std.rs +++ b/core/runtime-io/without_std.rs @@ -22,7 +22,7 @@ extern crate hashdb; pub extern crate substrate_runtime_std as rstd; #[doc(hidden)] -pub extern crate substrate_codec as codec; +pub extern crate parity_codec as codec; use core::intrinsics; use rstd::vec::Vec; diff --git a/core/runtime-sandbox/Cargo.toml b/core/runtime-sandbox/Cargo.toml index 24c2b6b70770c..edd828ce5d9f2 100755 --- a/core/runtime-sandbox/Cargo.toml +++ b/core/runtime-sandbox/Cargo.toml @@ -12,7 +12,7 @@ wasmi = { version = "0.4", optional = true } substrate-primitives = { path = "../primitives", default_features = false } substrate-runtime-std = { path = "../runtime-std", default_features = false } substrate-runtime-io = { path = "../runtime-io", default_features = false } -substrate-codec = { path = "../../codec", default_features = false } +parity-codec = { path = "../../codec", default_features = false } [dev-dependencies] wabt = "0.4" @@ -24,7 +24,7 @@ std = [ "wasmi", "substrate-primitives/std", "substrate-runtime-std/std", - "substrate-codec/std", + "parity-codec/std", "substrate-runtime-io/std", ] nightly = [] diff --git a/core/runtime-sandbox/src/lib.rs b/core/runtime-sandbox/src/lib.rs index 16066af160f15..ee16733c78bba 100755 --- a/core/runtime-sandbox/src/lib.rs +++ b/core/runtime-sandbox/src/lib.rs @@ -43,7 +43,7 @@ #![cfg_attr(not(feature = "std"), feature(core_intrinsics))] #![cfg_attr(not(feature = "std"), feature(alloc))] -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_runtime_io as runtime_io; #[cfg_attr(not(feature = "std"), macro_use)] extern crate substrate_runtime_std as rstd; diff --git a/core/runtime-version/Cargo.toml b/core/runtime-version/Cargo.toml index b0126fea5a7ca..d7e04497d4ee8 100644 --- a/core/runtime-version/Cargo.toml +++ b/core/runtime-version/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } substrate-runtime-std = { path = "../runtime-std", default_features = false } substrate-runtime-support = { path = "../runtime/support", default_features = false } @@ -16,7 +16,7 @@ default = ["std"] std = [ "serde/std", "serde_derive", - "substrate-codec/std", + "parity-codec/std", "substrate-runtime-std/std", "substrate-runtime-support/std", ] diff --git a/core/runtime-version/src/lib.rs b/core/runtime-version/src/lib.rs index 632351b76314a..439e07710e503 100644 --- a/core/runtime-version/src/lib.rs +++ b/core/runtime-version/src/lib.rs @@ -30,9 +30,9 @@ extern crate serde_derive; extern crate substrate_runtime_std as rstd; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; #[cfg(feature = "std")] use std::fmt; diff --git a/core/runtime/balances/Cargo.toml b/core/runtime/balances/Cargo.toml index a0a28974779fc..48f9b390c5be3 100644 --- a/core/runtime/balances/Cargo.toml +++ b/core/runtime/balances/Cargo.toml @@ -9,8 +9,8 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } @@ -25,8 +25,8 @@ std = [ "serde_derive", "safe-mix/std", "substrate-keyring", - "substrate-codec/std", - "substrate-codec-derive/std", + "parity-codec/std", + "parity-codec-derive/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", diff --git a/core/runtime/balances/src/lib.rs b/core/runtime/balances/src/lib.rs index 3451b55f6aa47..a85727a0e6424 100644 --- a/core/runtime/balances/src/lib.rs +++ b/core/runtime/balances/src/lib.rs @@ -32,9 +32,9 @@ extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_std as rstd; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_primitives as primitives; diff --git a/core/runtime/consensus/Cargo.toml b/core/runtime/consensus/Cargo.toml index a829cd0ca339f..49a366a9fdc87 100644 --- a/core/runtime/consensus/Cargo.toml +++ b/core/runtime/consensus/Cargo.toml @@ -7,8 +7,8 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } @@ -21,8 +21,8 @@ default = ["std"] std = [ "serde/std", "serde_derive", - "substrate-codec/std", - "substrate-codec-derive/std", + "parity-codec/std", + "parity-codec-derive/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", diff --git a/core/runtime/consensus/src/lib.rs b/core/runtime/consensus/src/lib.rs index 07ff10d0714b6..3e3b242ceb91f 100644 --- a/core/runtime/consensus/src/lib.rs +++ b/core/runtime/consensus/src/lib.rs @@ -33,11 +33,11 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_primitives as primitives; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_runtime_system as system; extern crate substrate_primitives; diff --git a/core/runtime/contract/Cargo.toml b/core/runtime/contract/Cargo.toml index ee14439da0e2d..c6e3229b99709 100644 --- a/core/runtime/contract/Cargo.toml +++ b/core/runtime/contract/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../../codec", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-primitives = { path = "../../runtime/primitives", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } @@ -27,7 +27,7 @@ default = ["std"] std = [ "serde_derive", "serde/std", - "substrate-codec/std", + "parity-codec/std", "substrate-primitives/std", "substrate-runtime-primitives/std", "substrate-runtime-io/std", diff --git a/core/runtime/contract/src/lib.rs b/core/runtime/contract/src/lib.rs index 34acb7dcc0505..26c443235b2d4 100644 --- a/core/runtime/contract/src/lib.rs +++ b/core/runtime/contract/src/lib.rs @@ -62,7 +62,7 @@ extern crate serde; extern crate parity_wasm; extern crate pwasm_utils; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_sandbox as sandbox; diff --git a/core/runtime/council/Cargo.toml b/core/runtime/council/Cargo.toml index 5139f4aba73a3..b9a55be41fa39 100644 --- a/core/runtime/council/Cargo.toml +++ b/core/runtime/council/Cargo.toml @@ -10,8 +10,8 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } @@ -29,8 +29,8 @@ std = [ "serde_derive", "safe-mix/std", "substrate-keyring", - "substrate-codec/std", - "substrate-codec-derive/std", + "parity-codec/std", + "parity-codec-derive/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", diff --git a/core/runtime/council/src/lib.rs b/core/runtime/council/src/lib.rs index 1c0883877fcba..b62845b591067 100644 --- a/core/runtime/council/src/lib.rs +++ b/core/runtime/council/src/lib.rs @@ -30,8 +30,8 @@ extern crate serde_derive; extern crate hex_literal; extern crate integer_sqrt; -extern crate substrate_codec as codec; -#[macro_use] extern crate substrate_codec_derive; +extern crate parity_codec as codec; +#[macro_use] extern crate parity_codec_derive; extern crate substrate_primitives; #[cfg(feature = "std")] extern crate substrate_keyring as keyring; #[macro_use] extern crate substrate_runtime_std as rstd; diff --git a/core/runtime/democracy/Cargo.toml b/core/runtime/democracy/Cargo.toml index ddc15a0cb2b3f..2a88e9ce92db5 100644 --- a/core/runtime/democracy/Cargo.toml +++ b/core/runtime/democracy/Cargo.toml @@ -8,8 +8,8 @@ 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} -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } @@ -25,7 +25,7 @@ std = [ "serde/std", "serde_derive", "safe-mix/std", - "substrate-codec/std", + "parity-codec/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", diff --git a/core/runtime/democracy/src/lib.rs b/core/runtime/democracy/src/lib.rs index 12f2e7e7aa402..ed2aa7fe87d3f 100644 --- a/core/runtime/democracy/src/lib.rs +++ b/core/runtime/democracy/src/lib.rs @@ -29,13 +29,13 @@ extern crate substrate_primitives; extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[macro_use] extern crate substrate_runtime_std as rstd; #[macro_use] extern crate substrate_runtime_support; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_primitives as primitives; extern crate substrate_runtime_balances as balances; diff --git a/core/runtime/example/Cargo.toml b/core/runtime/example/Cargo.toml index bc66ccd97fa61..a8e9c755491bc 100644 --- a/core/runtime/example/Cargo.toml +++ b/core/runtime/example/Cargo.toml @@ -11,8 +11,8 @@ substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } @@ -27,8 +27,8 @@ std = [ "substrate-runtime-balances/std", "serde/std", "serde_derive", - "substrate-codec/std", - "substrate-codec-derive/std", + "parity-codec/std", + "parity-codec-derive/std", "substrate-primitives/std", "substrate-runtime-system/std", ] diff --git a/core/runtime/example/src/lib.rs b/core/runtime/example/src/lib.rs index 8247106e38466..5e88c8b146e43 100644 --- a/core/runtime/example/src/lib.rs +++ b/core/runtime/example/src/lib.rs @@ -41,8 +41,8 @@ extern crate serde_derive; // Needed for deriving `Encode` and `Decode` for `RawEvent`. #[macro_use] -extern crate substrate_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec_derive; +extern crate parity_codec as codec; // Needed for type-safe access to storage DB. #[macro_use] diff --git a/core/runtime/executive/Cargo.toml b/core/runtime/executive/Cargo.toml index 5a97b17fc41a8..0bb50b3cc1fbc 100644 --- a/core/runtime/executive/Cargo.toml +++ b/core/runtime/executive/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../../codec", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } @@ -17,7 +17,7 @@ substrate-runtime-system = { path = "../system", default_features = false } [dev-dependencies] substrate-primitives = { path = "../../primitives" } substrate-runtime-balances = { path = "../balances" } -substrate-codec-derive = { path = "../../../codec/derive" } +parity-codec-derive = { path = "../../../codec/derive" } [features] default = ["std"] @@ -26,7 +26,7 @@ std = [ "substrate-runtime-support/std", "serde/std", "serde_derive", - "substrate-codec/std", + "parity-codec/std", "substrate-runtime-primitives/std", "substrate-runtime-io/std", "substrate-runtime-system/std", diff --git a/core/runtime/executive/src/lib.rs b/core/runtime/executive/src/lib.rs index 9b7e736f6d934..5471e6e4a90d4 100644 --- a/core/runtime/executive/src/lib.rs +++ b/core/runtime/executive/src/lib.rs @@ -26,14 +26,14 @@ extern crate serde_derive; #[cfg(test)] #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[cfg_attr(test, macro_use)] extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_std as rstd; extern crate substrate_runtime_io as runtime_io; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_runtime_primitives as primitives; extern crate substrate_runtime_system as system; diff --git a/core/runtime/primitives/Cargo.toml b/core/runtime/primitives/Cargo.toml index b00f0f8fa2208..18d45ab0b44b8 100644 --- a/core/runtime/primitives/Cargo.toml +++ b/core/runtime/primitives/Cargo.toml @@ -8,8 +8,8 @@ num-traits = { version = "0.2", default_features = false } integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } @@ -29,6 +29,6 @@ std = [ "substrate-runtime-std/std", "substrate-runtime-io/std", "substrate-runtime-support/std", - "substrate-codec/std", + "parity-codec/std", "substrate-primitives/std", ] diff --git a/core/runtime/primitives/src/lib.rs b/core/runtime/primitives/src/lib.rs index e9bddc3286d87..3666e09aac239 100644 --- a/core/runtime/primitives/src/lib.rs +++ b/core/runtime/primitives/src/lib.rs @@ -31,14 +31,14 @@ extern crate serde_derive; extern crate log; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; extern crate num_traits; extern crate integer_sqrt; extern crate substrate_runtime_std as rstd; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_support as runtime_support; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives; #[cfg(test)] diff --git a/core/runtime/session/Cargo.toml b/core/runtime/session/Cargo.toml index c677b7f0a25be..6dd98f4ae7e0f 100644 --- a/core/runtime/session/Cargo.toml +++ b/core/runtime/session/Cargo.toml @@ -9,8 +9,8 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } @@ -27,8 +27,8 @@ std = [ "serde_derive", "safe-mix/std", "substrate-keyring", - "substrate-codec/std", - "substrate-codec-derive/std", + "parity-codec/std", + "parity-codec-derive/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", diff --git a/core/runtime/session/src/lib.rs b/core/runtime/session/src/lib.rs index 007dd43729f7c..544e5afa7cb6f 100644 --- a/core/runtime/session/src/lib.rs +++ b/core/runtime/session/src/lib.rs @@ -39,10 +39,10 @@ extern crate substrate_runtime_std as rstd; extern crate substrate_runtime_support as runtime_support; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; extern crate substrate_runtime_io as runtime_io; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_runtime_primitives as primitives; extern crate substrate_runtime_consensus as consensus; extern crate substrate_runtime_system as system; diff --git a/core/runtime/staking/Cargo.toml b/core/runtime/staking/Cargo.toml index 3ebba90dfa546..f9908f076cf77 100644 --- a/core/runtime/staking/Cargo.toml +++ b/core/runtime/staking/Cargo.toml @@ -9,8 +9,8 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} substrate-keyring = { path = "../../keyring", optional = true } -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } @@ -30,8 +30,8 @@ std = [ "serde_derive", "safe-mix/std", "substrate-keyring", - "substrate-codec/std", - "substrate-codec-derive/std", + "parity-codec/std", + "parity-codec-derive/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", diff --git a/core/runtime/staking/src/lib.rs b/core/runtime/staking/src/lib.rs index f9737d6a3c26a..6f4d9e9b11495 100644 --- a/core/runtime/staking/src/lib.rs +++ b/core/runtime/staking/src/lib.rs @@ -34,9 +34,9 @@ extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_std as rstd; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_primitives as primitives; diff --git a/core/runtime/support/Cargo.toml b/core/runtime/support/Cargo.toml index 2ea7f206f389f..c94a9c0a0f800 100644 --- a/core/runtime/support/Cargo.toml +++ b/core/runtime/support/Cargo.toml @@ -10,12 +10,12 @@ serde_derive = { version = "1.0", optional = true } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-codec = { path = "../../../codec", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } [dev-dependencies] pretty_assertions = "0.5.1" serde_json = { version = "1.0" } -substrate-codec-derive = { path = "../../../codec/derive" } +parity-codec-derive = { path = "../../../codec/derive" } [features] default = ["std"] @@ -25,7 +25,7 @@ std = [ "serde_derive", "substrate-primitives/std", "substrate-runtime-io/std", - "substrate-codec/std", + "parity-codec/std", "substrate-runtime-std/std", ] nightly = [] diff --git a/core/runtime/support/src/lib.rs b/core/runtime/support/src/lib.rs index 73099360dad47..309337d4f15f6 100644 --- a/core/runtime/support/src/lib.rs +++ b/core/runtime/support/src/lib.rs @@ -41,10 +41,10 @@ extern crate serde_derive; extern crate serde_json; #[cfg(test)] #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[doc(hidden)] -pub extern crate substrate_codec as codec; +pub extern crate parity_codec as codec; pub use self::storage::generator::Storage as GenericStorage; #[cfg(feature = "std")] diff --git a/core/runtime/system/Cargo.toml b/core/runtime/system/Cargo.toml index f754aba69c76b..fc1dfd9df60f3 100644 --- a/core/runtime/system/Cargo.toml +++ b/core/runtime/system/Cargo.toml @@ -8,8 +8,8 @@ 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} -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } @@ -22,8 +22,8 @@ std = [ "serde/std", "serde_derive", "safe-mix/std", - "substrate-codec/std", - "substrate-codec-derive/std", + "parity-codec/std", + "parity-codec-derive/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", diff --git a/core/runtime/system/src/lib.rs b/core/runtime/system/src/lib.rs index ae8ceff6a6047..78d3025257172 100644 --- a/core/runtime/system/src/lib.rs +++ b/core/runtime/system/src/lib.rs @@ -36,9 +36,9 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_runtime_io as runtime_io; extern crate substrate_runtime_primitives as primitives; extern crate safe_mix; diff --git a/core/runtime/timestamp/Cargo.toml b/core/runtime/timestamp/Cargo.toml index 795690abf3de8..f2625be8e9dee 100644 --- a/core/runtime/timestamp/Cargo.toml +++ b/core/runtime/timestamp/Cargo.toml @@ -11,7 +11,7 @@ substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../../codec", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } @@ -29,7 +29,7 @@ std = [ "substrate-runtime-consensus/std", "serde/std", "serde_derive", - "substrate-codec/std", + "parity-codec/std", "substrate-primitives/std", "substrate-runtime-system/std", ] diff --git a/core/runtime/timestamp/src/lib.rs b/core/runtime/timestamp/src/lib.rs index bf7000e60bd4b..1a19e6fd08ffb 100644 --- a/core/runtime/timestamp/src/lib.rs +++ b/core/runtime/timestamp/src/lib.rs @@ -51,7 +51,7 @@ extern crate substrate_primitives; extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_runtime_system as system; extern crate substrate_runtime_consensus as consensus; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; use runtime_support::{StorageValue, Parameter}; use runtime_support::dispatch::Result; diff --git a/core/runtime/treasury/Cargo.toml b/core/runtime/treasury/Cargo.toml index 19d344078fa87..32b58bcfaeb5d 100644 --- a/core/runtime/treasury/Cargo.toml +++ b/core/runtime/treasury/Cargo.toml @@ -11,8 +11,8 @@ substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-primitives = { path = "../primitives", default_features = false } -substrate-codec = { path = "../../../codec", default_features = false } -substrate-codec-derive = { path = "../../../codec/derive", default_features = false } +parity-codec = { path = "../../../codec", default_features = false } +parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } @@ -27,8 +27,8 @@ std = [ "substrate-runtime-balances/std", "serde/std", "serde_derive", - "substrate-codec/std", - "substrate-codec-derive/std", + "parity-codec/std", + "parity-codec-derive/std", "substrate-primitives/std", "substrate-runtime-system/std", ] diff --git a/core/runtime/treasury/src/lib.rs b/core/runtime/treasury/src/lib.rs index 1edf33a563066..c0d9c9d1dc0af 100644 --- a/core/runtime/treasury/src/lib.rs +++ b/core/runtime/treasury/src/lib.rs @@ -32,9 +32,9 @@ extern crate substrate_runtime_io as runtime_io; extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; #[cfg(test)] extern crate substrate_primitives; extern crate substrate_runtime_primitives as runtime_primitives; diff --git a/core/service/Cargo.toml b/core/service/Cargo.toml index fcd76822d9591..dc5d39a9c6c71 100644 --- a/core/service/Cargo.toml +++ b/core/service/Cargo.toml @@ -23,7 +23,7 @@ substrate-primitives = { path = "../../core/primitives" } substrate-network = { path = "../../core/network" } substrate-client = { path = "../../core/client" } substrate-client-db = { path = "../../core/client/db" } -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } substrate-executor = { path = "../../core/executor" } substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } substrate-rpc = { path = "../../core/rpc" } diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index d7c1e90e599d9..5ea169f6811b2 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -32,7 +32,7 @@ extern crate substrate_network as network; extern crate substrate_executor; extern crate substrate_client as client; extern crate substrate_client_db as client_db; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_rpc; extern crate substrate_rpc_servers as rpc; diff --git a/core/state-db/Cargo.toml b/core/state-db/Cargo.toml index 1097ede624f52..5093f70612a8f 100644 --- a/core/state-db/Cargo.toml +++ b/core/state-db/Cargo.toml @@ -7,8 +7,8 @@ authors = ["Parity Technologies "] parking_lot = "0.5" log = "0.4" substrate-primitives = { path = "../../core/primitives" } -substrate-codec = { path = "../../codec" } -substrate-codec-derive = { path = "../../codec/derive" } +parity-codec = { path = "../../codec" } +parity-codec-derive = { path = "../../codec/derive" } [dev-dependencies] env_logger = "0.4" diff --git a/core/state-db/src/lib.rs b/core/state-db/src/lib.rs index 7e7dd3369c918..349abc63c3dc2 100644 --- a/core/state-db/src/lib.rs +++ b/core/state-db/src/lib.rs @@ -33,9 +33,9 @@ // end::description[] #[macro_use] extern crate log; -#[macro_use] extern crate substrate_codec_derive; +#[macro_use] extern crate parity_codec_derive; extern crate parking_lot; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; mod unfinalized; diff --git a/core/state-machine/Cargo.toml b/core/state-machine/Cargo.toml index 41fb4913226e6..6f762dd4ef59d 100644 --- a/core/state-machine/Cargo.toml +++ b/core/state-machine/Cargo.toml @@ -17,5 +17,5 @@ triehash = "0.2" rlp = "0.2.4" substrate-primitives = { path = "../primitives", version = "0.1.0" } -substrate-codec = { path = "../../codec", default_features = false } +parity-codec = { path = "../../codec", default_features = false } diff --git a/core/state-machine/src/lib.rs b/core/state-machine/src/lib.rs index 7dab6e6af6375..5cdef5b064fcb 100644 --- a/core/state-machine/src/lib.rs +++ b/core/state-machine/src/lib.rs @@ -36,7 +36,7 @@ extern crate rlp; extern crate heapsize; #[cfg(test)] extern crate substrate_primitives as primitives; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; use std::collections::HashMap; use std::fmt; diff --git a/core/test-client/Cargo.toml b/core/test-client/Cargo.toml index d60800445d5fe..4e21edcff5bac 100644 --- a/core/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -7,7 +7,7 @@ authors = ["Parity Technologies "] rhododendron = "0.3" substrate-bft = { path = "../bft" } substrate-client = { path = "../client" } -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } diff --git a/core/test-client/src/lib.rs b/core/test-client/src/lib.rs index 3aeefed0fafb2..fa4d135768d54 100644 --- a/core/test-client/src/lib.rs +++ b/core/test-client/src/lib.rs @@ -22,7 +22,7 @@ extern crate rhododendron; extern crate substrate_bft as bft; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index 988e08454d158..ff5899099a2cc 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -9,8 +9,8 @@ hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } substrate-keyring = { path = "../keyring", optional = true } -substrate-codec = { path = "../../codec", default-features = false } -substrate-codec-derive = { path = "../../codec/derive", default-features = false } +parity-codec = { path = "../../codec", default-features = false } +parity-codec-derive = { path = "../../codec/derive", default-features = false } substrate-runtime-std = { path = "../runtime-std", default-features = false } substrate-runtime-io = { path = "../runtime-io", default-features = false } substrate-runtime-support = { path = "../runtime/support", default-features = false } @@ -26,7 +26,7 @@ std = [ "serde", "serde_derive", "substrate-keyring", - "substrate-codec/std", + "parity-codec/std", "substrate-runtime-std/std", "substrate-runtime-io/std", "substrate-runtime-support/std", diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index e1e28c955d536..2d3406c23f13b 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -21,7 +21,7 @@ #![cfg_attr(not(feature = "std"), no_std)] extern crate substrate_runtime_std as rstd; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_runtime_primitives as runtime_primitives; #[cfg(feature = "std")] @@ -34,7 +34,7 @@ extern crate serde_derive; #[macro_use] extern crate substrate_runtime_support as runtime_support; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[macro_use] extern crate substrate_runtime_io as runtime_io; #[macro_use] diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index f42241061f26e..56e2fea1fd7b5 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -507,14 +507,14 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "substrate-codec" +name = "parity-codec" version = "0.1.0" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "substrate-codec-derive" +name = "parity-codec-derive" version = "0.1.0" dependencies = [ "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -538,8 +538,8 @@ dependencies = [ "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-runtime-std 0.1.0", "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -555,7 +555,7 @@ dependencies = [ "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-std 0.1.0", "substrate-state-machine 0.1.0", @@ -571,8 +571,8 @@ dependencies = [ "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -596,7 +596,7 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -608,8 +608,8 @@ version = "0.1.0" dependencies = [ "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", ] @@ -627,7 +627,7 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -639,8 +639,8 @@ dependencies = [ "ed25519 0.1.0", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index d0f86c8df00ad..7ba7b606c9dd2 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] log = { version = "0.3", optional = true } hex-literal = { version = "0.1.0", optional = true } -substrate-codec = { path = "../../../codec", default-features = false } -substrate-codec-derive = { path = "../../../codec/derive", default-features = false } +parity-codec = { path = "../../../codec", default-features = false } +parity-codec-derive = { path = "../../../codec/derive", default-features = false } substrate-runtime-std = { path = "../../runtime-std", default-features = false } substrate-runtime-io = { path = "../../runtime-io", default-features = false } substrate-runtime-support = { path = "../../runtime/support", default-features = false } @@ -20,7 +20,7 @@ default = [] std = [ "log", "hex-literal", - "substrate-codec/std", + "parity-codec/std", "substrate-runtime-std/std", "substrate-runtime-io/std", "substrate-runtime-support/std", diff --git a/node/consensus/Cargo.toml b/node/consensus/Cargo.toml index b255edb5b5384..6f57394fafa2c 100644 --- a/node/consensus/Cargo.toml +++ b/node/consensus/Cargo.toml @@ -16,7 +16,7 @@ node-primitives = { path = "../primitives" } node-runtime = { path = "../runtime" } node-transaction-pool = { path = "../transaction-pool" } substrate-bft = { path = "../../core/bft" } -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } substrate-primitives = { path = "../../core/primitives" } substrate-runtime-support = { path = "../../core/runtime/support" } substrate-client = { path = "../../core/client" } diff --git a/node/consensus/src/lib.rs b/node/consensus/src/lib.rs index 2135beebd0ce2..984ec41582430 100644 --- a/node/consensus/src/lib.rs +++ b/node/consensus/src/lib.rs @@ -23,7 +23,7 @@ extern crate node_runtime; extern crate node_primitives; extern crate substrate_bft as bft; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 79eb2bc87800e..c3f7d7ef53435 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -7,7 +7,7 @@ description = "Substrate node implementation in Rust." [dependencies] hex-literal = "0.1" triehash = "0.2" -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } substrate-runtime-io = { path = "../../core/runtime-io" } substrate-runtime-support = { path = "../../core/runtime/support" } substrate-state-machine = { path = "../../core/state-machine" } diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index 936a25f6db7d6..d3b894ed26f0f 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -19,7 +19,7 @@ extern crate node_runtime; #[macro_use] extern crate substrate_executor; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_state_machine as state_machine; extern crate substrate_runtime_io as runtime_io; extern crate substrate_primitives as primitives; diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index a9c1e6094e40f..b300abf459a60 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-codec = { path = "../../codec", default_features = false } -substrate-codec-derive = { path = "../../codec/derive", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } substrate-primitives = { path = "../../core/primitives", default_features = false } substrate-runtime-std = { path = "../../core/runtime-std", default_features = false } substrate-runtime-primitives = { path = "../../core/runtime/primitives", default_features = false } @@ -19,8 +19,8 @@ pretty_assertions = "0.4" [features] default = ["std"] std = [ - "substrate-codec-derive/std", - "substrate-codec/std", + "parity-codec-derive/std", + "parity-codec/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-primitives/std", diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs index 4cd2474e33c8c..2d1ffe52b2121 100644 --- a/node/primitives/src/lib.rs +++ b/node/primitives/src/lib.rs @@ -29,12 +29,12 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; extern crate substrate_runtime_std as rstd; extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_primitives as primitives; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; use rstd::prelude::*; use runtime_primitives::generic; diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 317367d2606a3..e94377d80a738 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -10,8 +10,8 @@ log = { version = "0.3", optional = true } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} -substrate-codec = { path = "../../codec" } -substrate-codec-derive = { path = "../../codec/derive" } +parity-codec = { path = "../../codec" } +parity-codec-derive = { path = "../../codec/derive" } substrate-runtime-std = { path = "../../core/runtime-std" } substrate-runtime-io = { path = "../../core/runtime-io" } substrate-runtime-support = { path = "../../core/runtime/support" } @@ -35,7 +35,7 @@ node-primitives = { path = "../primitives" } [features] default = ["std"] std = [ - "substrate-codec/std", + "parity-codec/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index 928702523fcf2..e462f8acdc3d1 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -34,11 +34,11 @@ extern crate serde_derive; #[cfg(feature = "std")] extern crate serde; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_primitives; #[macro_use] -extern crate substrate_codec_derive; +extern crate parity_codec_derive; #[cfg_attr(not(feature = "std"), macro_use)] extern crate substrate_runtime_std as rstd; diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 90ec3c7a4b221..8894de1476d0d 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -265,8 +265,8 @@ version = "0.1.0" dependencies = [ "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", @@ -279,8 +279,8 @@ dependencies = [ "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", "node-primitives 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", @@ -566,14 +566,14 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "substrate-codec" +name = "parity-codec" version = "0.1.0" dependencies = [ "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "substrate-codec-derive" +name = "parity-codec-derive" version = "0.1.0" dependencies = [ "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -606,8 +606,8 @@ dependencies = [ "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-runtime-std 0.1.0", "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -622,8 +622,8 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", @@ -640,8 +640,8 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", @@ -658,7 +658,7 @@ dependencies = [ "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-io 0.1.0", @@ -678,8 +678,8 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", @@ -700,8 +700,8 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", @@ -719,7 +719,7 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", @@ -736,7 +736,7 @@ dependencies = [ "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-std 0.1.0", "substrate-state-machine 0.1.0", @@ -752,8 +752,8 @@ dependencies = [ "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -765,7 +765,7 @@ name = "substrate-runtime-sandbox" version = "0.1.0" dependencies = [ "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -780,8 +780,8 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", @@ -801,8 +801,8 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", @@ -834,7 +834,7 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -848,8 +848,8 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", @@ -864,7 +864,7 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", "substrate-runtime-io 0.1.0", @@ -881,8 +881,8 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-io 0.1.0", @@ -898,8 +898,8 @@ version = "0.1.0" dependencies = [ "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", - "substrate-codec-derive 0.1.0", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", ] @@ -917,7 +917,7 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-codec 0.1.0", + "parity-codec 0.1.0", "substrate-primitives 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index 1c358e21b9fb6..58a0c964ff712 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -9,8 +9,8 @@ crate-type = ["cdylib"] [dependencies] integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } safe-mix = { version = "1.0", default_features = false} -substrate-codec-derive = { path = "../../../codec/derive" } -substrate-codec = { path = "../../../codec", default-features = false } +parity-codec-derive = { path = "../../../codec/derive" } +parity-codec = { path = "../../../codec", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } substrate-runtime-std = { path = "../../../core/runtime-std", default-features = false } substrate-runtime-io = { path = "../../../core/runtime-io", default-features = false } @@ -34,7 +34,7 @@ node-primitives = { path = "../../primitives", default-features = false } default = [] std = [ "safe-mix/std", - "substrate-codec/std", + "parity-codec/std", "substrate-primitives/std", "substrate-runtime-std/std", "substrate-runtime-io/std", diff --git a/node/transaction-pool/Cargo.toml b/node/transaction-pool/Cargo.toml index 10601c935f7c6..3330af2bd1552 100644 --- a/node/transaction-pool/Cargo.toml +++ b/node/transaction-pool/Cargo.toml @@ -11,7 +11,7 @@ node-api = { path = "../api" } node-primitives = { path = "../primitives" } node-runtime = { path = "../runtime" } substrate-client = { path = "../../core/client" } -substrate-codec = { path = "../../codec" } +parity-codec = { path = "../../codec" } substrate-keyring = { path = "../../core/keyring" } substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } substrate-primitives = { path = "../../core/primitives" } diff --git a/node/transaction-pool/src/lib.rs b/node/transaction-pool/src/lib.rs index 97ef5b59f2fdc..35868e874dd98 100644 --- a/node/transaction-pool/src/lib.rs +++ b/node/transaction-pool/src/lib.rs @@ -15,7 +15,7 @@ // along with Substrate. If not, see . extern crate substrate_client as client; -extern crate substrate_codec as codec; +extern crate parity_codec as codec; extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_primitives; extern crate substrate_runtime_primitives; From 6412d0223832402d572ab4344a7d4651b8d4bc5d Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 23:32:08 +0200 Subject: [PATCH 12/24] Move environmental up a level --- Cargo.toml | 2 +- core/runtime-io/Cargo.toml | 2 +- doc/packages/substrate.adoc | 2 +- {core/environmental => environmental}/Cargo.toml | 0 {core/environmental => environmental}/README.adoc | 0 {core/environmental => environmental}/src/lib.rs | 0 {core/environmental => environmental}/with_std.rs | 0 {core/environmental => environmental}/without_std.rs | 0 8 files changed, 3 insertions(+), 3 deletions(-) rename {core/environmental => environmental}/Cargo.toml (100%) rename {core/environmental => environmental}/README.adoc (100%) rename {core/environmental => environmental}/src/lib.rs (100%) rename {core/environmental => environmental}/with_std.rs (100%) rename {core/environmental => environmental}/without_std.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index 25545165bd46f..236d8c17af331 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,11 +2,11 @@ members = [ "codec", "codec/derive", + "environmental", "core/bft", "core/cli", "core/client", "core/client/db", - "core/environmental", "core/executor", "core/extrinsic-pool", "core/keyring", diff --git a/core/runtime-io/Cargo.toml b/core/runtime-io/Cargo.toml index 2550c7c08de66..d314d874dbe75 100644 --- a/core/runtime-io/Cargo.toml +++ b/core/runtime-io/Cargo.toml @@ -9,7 +9,7 @@ rustc_version = "0.2" [dependencies] substrate-runtime-std = { path = "../runtime-std", default_features = false } -environmental = { path = "../environmental", optional = true } +environmental = { path = "../../environmental", optional = true } substrate-state-machine = { path = "../state-machine", optional = true } substrate-primitives = { path = "../primitives", default_features = false } parity-codec = { path = "../../codec", default_features = false } diff --git a/doc/packages/substrate.adoc b/doc/packages/substrate.adoc index a90fde6285949..815d956b3d8ac 100644 --- a/doc/packages/substrate.adoc +++ b/doc/packages/substrate.adoc @@ -11,7 +11,7 @@ include::../../core/client/README.adoc[] include::../../codec/README.adoc[] -include::../../core/environmental/README.adoc[] +include::../../environmental/README.adoc[] include::../../core/executor/README.adoc[] diff --git a/core/environmental/Cargo.toml b/environmental/Cargo.toml similarity index 100% rename from core/environmental/Cargo.toml rename to environmental/Cargo.toml diff --git a/core/environmental/README.adoc b/environmental/README.adoc similarity index 100% rename from core/environmental/README.adoc rename to environmental/README.adoc diff --git a/core/environmental/src/lib.rs b/environmental/src/lib.rs similarity index 100% rename from core/environmental/src/lib.rs rename to environmental/src/lib.rs diff --git a/core/environmental/with_std.rs b/environmental/with_std.rs similarity index 100% rename from core/environmental/with_std.rs rename to environmental/with_std.rs diff --git a/core/environmental/without_std.rs b/environmental/without_std.rs similarity index 100% rename from core/environmental/without_std.rs rename to environmental/without_std.rs From 750c7ee3f2c2b66f34179424a4b6b8d6966aea56 Mon Sep 17 00:00:00 2001 From: Gav Date: Tue, 11 Sep 2018 23:37:57 +0200 Subject: [PATCH 13/24] Move pwasm-* up to top, ready for removal --- .gitignore | 8 ++++---- Cargo.toml | 4 ++-- core/runtime-std/Cargo.toml | 4 ++-- doc/packages/substrate.adoc | 4 ++-- {core/pwasm-alloc => pwasm-alloc}/Cargo.toml | 0 {core/pwasm-alloc => pwasm-alloc}/README.adoc | 0 {core/pwasm-alloc => pwasm-alloc}/build.rs | 0 {core/pwasm-alloc => pwasm-alloc}/src/lib.rs | 0 {core/pwasm-libc => pwasm-libc}/Cargo.toml | 0 {core/pwasm-libc => pwasm-libc}/README.adoc | 0 {core/pwasm-libc => pwasm-libc}/src/lib.rs | 0 11 files changed, 10 insertions(+), 10 deletions(-) rename {core/pwasm-alloc => pwasm-alloc}/Cargo.toml (100%) rename {core/pwasm-alloc => pwasm-alloc}/README.adoc (100%) rename {core/pwasm-alloc => pwasm-alloc}/build.rs (100%) rename {core/pwasm-alloc => pwasm-alloc}/src/lib.rs (100%) rename {core/pwasm-libc => pwasm-libc}/Cargo.toml (100%) rename {core/pwasm-libc => pwasm-libc}/README.adoc (100%) rename {core/pwasm-libc => pwasm-libc}/src/lib.rs (100%) diff --git a/.gitignore b/.gitignore index e315ab2a9534b..0a2ce91ba00ff 100644 --- a/.gitignore +++ b/.gitignore @@ -5,10 +5,10 @@ polkadot/runtime/wasm/target/ core/executor/wasm/target/ core/test-runtime/wasm/target/ -core/pwasm-alloc/target/ -core/pwasm-libc/target/ -core/pwasm-alloc/Cargo.lock -core/pwasm-libc/Cargo.lock +pwasm-alloc/target/ +pwasm-libc/target/ +pwasm-alloc/Cargo.lock +pwasm-libc/Cargo.lock node/runtime/wasm/target/ **/._* .vscode diff --git a/Cargo.toml b/Cargo.toml index 236d8c17af331..7b50ebc6d604b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,8 +55,8 @@ members = [ exclude = [ "node/runtime/wasm", "core/executor/wasm", - "core/pwasm-alloc", - "core/pwasm-libc", + "pwasm-alloc", + "pwasm-libc", "core/test-runtime/wasm", ] diff --git a/core/runtime-std/Cargo.toml b/core/runtime-std/Cargo.toml index 42745a0152a10..a8c2b45931be0 100644 --- a/core/runtime-std/Cargo.toml +++ b/core/runtime-std/Cargo.toml @@ -8,8 +8,8 @@ build = "build.rs" rustc_version = "0.2" [dependencies] -pwasm-alloc = { path = "../pwasm-alloc" } -pwasm-libc = { path = "../pwasm-libc" } +pwasm-alloc = { path = "../../pwasm-alloc" } +pwasm-libc = { path = "../../pwasm-libc" } [features] default = ["std"] diff --git a/doc/packages/substrate.adoc b/doc/packages/substrate.adoc index 815d956b3d8ac..5bb85f879cb59 100644 --- a/doc/packages/substrate.adoc +++ b/doc/packages/substrate.adoc @@ -29,9 +29,9 @@ include::../../core/network-libp2p/README.adoc[] include::../../core/primitives/README.adoc[] -include::../../core/pwasm-alloc/README.adoc[] +include::../../pwasm-alloc/README.adoc[] -include::../../core/pwasm-libc/README.adoc[] +include::../../pwasm-libc/README.adoc[] include::../../core/rpc/README.adoc[] diff --git a/core/pwasm-alloc/Cargo.toml b/pwasm-alloc/Cargo.toml similarity index 100% rename from core/pwasm-alloc/Cargo.toml rename to pwasm-alloc/Cargo.toml diff --git a/core/pwasm-alloc/README.adoc b/pwasm-alloc/README.adoc similarity index 100% rename from core/pwasm-alloc/README.adoc rename to pwasm-alloc/README.adoc diff --git a/core/pwasm-alloc/build.rs b/pwasm-alloc/build.rs similarity index 100% rename from core/pwasm-alloc/build.rs rename to pwasm-alloc/build.rs diff --git a/core/pwasm-alloc/src/lib.rs b/pwasm-alloc/src/lib.rs similarity index 100% rename from core/pwasm-alloc/src/lib.rs rename to pwasm-alloc/src/lib.rs diff --git a/core/pwasm-libc/Cargo.toml b/pwasm-libc/Cargo.toml similarity index 100% rename from core/pwasm-libc/Cargo.toml rename to pwasm-libc/Cargo.toml diff --git a/core/pwasm-libc/README.adoc b/pwasm-libc/README.adoc similarity index 100% rename from core/pwasm-libc/README.adoc rename to pwasm-libc/README.adoc diff --git a/core/pwasm-libc/src/lib.rs b/pwasm-libc/src/lib.rs similarity index 100% rename from core/pwasm-libc/src/lib.rs rename to pwasm-libc/src/lib.rs From 9a3cd9f2781cf0773a1edfe172c3c980a72b45b9 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 00:25:58 +0200 Subject: [PATCH 14/24] Remove requirement of s-r-support from s-r-primitives --- Cargo.lock | 1 - core/runtime/executive/src/lib.rs | 9 ++++++--- core/runtime/primitives/Cargo.toml | 2 -- .../primitives/src/generic/checked_extrinsic.rs | 9 ++++----- core/runtime/primitives/src/lib.rs | 1 - core/runtime/primitives/src/testing.rs | 11 ++++++----- core/runtime/primitives/src/traits.rs | 3 ++- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a2e00656edaa1..3f14c4257dadf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2902,7 +2902,6 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] diff --git a/core/runtime/executive/src/lib.rs b/core/runtime/executive/src/lib.rs index 5471e6e4a90d4..f3366674503fc 100644 --- a/core/runtime/executive/src/lib.rs +++ b/core/runtime/executive/src/lib.rs @@ -52,6 +52,7 @@ use rstd::marker::PhantomData; use rstd::result; use primitives::traits::{self, Header, Zero, One, Checkable, Applyable, CheckEqual, OnFinalise, MakePayment, Hash}; +use runtime_support::Dispatchable; use codec::{Codec, Encode}; use system::extrinsics_root; use primitives::{ApplyOutcome, ApplyError}; @@ -87,7 +88,9 @@ impl< Finalisation: OnFinalise, > Executive where Block::Extrinsic: Checkable Result> + Codec, - Result>>::Checked: Applyable + Result>>::Checked: Applyable, + < Result>>::Checked as Applyable>::Call: Dispatchable, + << Result>>::Checked as Applyable>::Call as Dispatchable>::Origin: From> { /// Start the execution of a particular block. pub fn initialise_block(header: &System::Header) { @@ -191,8 +194,8 @@ impl< } // decode parameters and dispatch - let r = xt.apply(); - + let (f, s) = xt.deconstruct(); + let r = f.dispatch(s.into()); >::note_applied_extrinsic(&r); r.map(|_| internal::ApplyOutcome::Success).or_else(|e| Ok(internal::ApplyOutcome::Fail(e))) diff --git a/core/runtime/primitives/Cargo.toml b/core/runtime/primitives/Cargo.toml index 18d45ab0b44b8..438b94654b661 100644 --- a/core/runtime/primitives/Cargo.toml +++ b/core/runtime/primitives/Cargo.toml @@ -13,7 +13,6 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } log = {version = "0.3", optional = true } [dev-dependencies] @@ -28,7 +27,6 @@ std = [ "log", "substrate-runtime-std/std", "substrate-runtime-io/std", - "substrate-runtime-support/std", "parity-codec/std", "substrate-primitives/std", ] diff --git a/core/runtime/primitives/src/generic/checked_extrinsic.rs b/core/runtime/primitives/src/generic/checked_extrinsic.rs index e5aee32a02c58..e8be8dd53482d 100644 --- a/core/runtime/primitives/src/generic/checked_extrinsic.rs +++ b/core/runtime/primitives/src/generic/checked_extrinsic.rs @@ -17,7 +17,6 @@ //! Generic implementation of an extrinsic that has passed the verification //! stage. -use runtime_support::Dispatchable; use traits::{self, Member, SimpleArithmetic, MaybeDisplay}; /// Definition of something that the external world might want to say; its @@ -39,11 +38,11 @@ impl traits::Applyable where AccountId: Member + MaybeDisplay, Index: Member + MaybeDisplay + SimpleArithmetic, - Call: Member + Dispatchable, - ::Origin: From> + Call: Member { type Index = Index; type AccountId = AccountId; + type Call = Call; fn index(&self) -> &Self::Index { &self.index @@ -53,7 +52,7 @@ where self.signed.as_ref() } - fn apply(self) -> Result<(), &'static str> { - self.function.dispatch(self.signed.into()) + fn deconstruct(self) -> (Self::Call, Option) { + (self.function, self.signed) } } diff --git a/core/runtime/primitives/src/lib.rs b/core/runtime/primitives/src/lib.rs index 3666e09aac239..d3cc4ed5716a4 100644 --- a/core/runtime/primitives/src/lib.rs +++ b/core/runtime/primitives/src/lib.rs @@ -37,7 +37,6 @@ extern crate num_traits; extern crate integer_sqrt; extern crate substrate_runtime_std as rstd; extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_support as runtime_support; extern crate parity_codec as codec; extern crate substrate_primitives; diff --git a/core/runtime/primitives/src/testing.rs b/core/runtime/primitives/src/testing.rs index 764828bfe5662..b9646ea339ff2 100644 --- a/core/runtime/primitives/src/testing.rs +++ b/core/runtime/primitives/src/testing.rs @@ -19,7 +19,6 @@ use serde::{Serialize, de::DeserializeOwned}; use std::fmt::Debug; use codec::Codec; -use runtime_support::Dispatchable; use traits::{self, Checkable, Applyable, BlakeTwo256}; pub use substrate_primitives::H256; @@ -122,17 +121,19 @@ impl(pub Option, pub u64, pub Call); -impl Checkable for TestXt { +impl Checkable for TestXt { type Checked = Self; fn check_with(self, _: Context) -> Result { Ok(self) } } impl Applyable for TestXt where - Call: Sized + Send + Sync + Clone + Eq + Dispatchable + Codec + Debug + Serialize + DeserializeOwned, - ::Origin: From> + Call: 'static + Sized + Send + Sync + Clone + Eq + Codec + Debug + Serialize + DeserializeOwned, { type AccountId = u64; type Index = u64; + type Call = Call; fn sender(&self) -> Option<&u64> { self.0.as_ref() } fn index(&self) -> &u64 { &self.1 } - fn apply(self) -> Result<(), &'static str> { self.2.dispatch(self.0.into()) } + fn deconstruct(self) -> (Self::Call, Option) { + (self.2, self.0) + } } diff --git a/core/runtime/primitives/src/traits.rs b/core/runtime/primitives/src/traits.rs index 32aa47a16f95a..460d52042be7f 100644 --- a/core/runtime/primitives/src/traits.rs +++ b/core/runtime/primitives/src/traits.rs @@ -435,9 +435,10 @@ impl Checkable for T { pub trait Applyable: Sized + Send + Sync { type AccountId: Member + MaybeDisplay; type Index: Member + MaybeDisplay + SimpleArithmetic; + type Call: Member; fn index(&self) -> &Self::Index; fn sender(&self) -> Option<&Self::AccountId>; - fn apply(self) -> Result<(), &'static str>; + fn deconstruct(self) -> (Self::Call, Option); } /// Something that acts like a `Digest` - it can have `Log`s `push`ed onto it and these `Log`s are From 2f47756fbfbc17d911e5fdd1c4cba8dceee563ac Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 00:41:41 +0200 Subject: [PATCH 15/24] Move core/runtime/primitives into core/runtime-primitives --- Cargo.toml | 2 +- core/bft/Cargo.toml | 2 +- core/cli/Cargo.toml | 2 +- core/client/Cargo.toml | 2 +- core/client/db/Cargo.toml | 2 +- core/extrinsic-pool/Cargo.toml | 2 +- core/misbehavior-check/Cargo.toml | 2 +- core/network/Cargo.toml | 2 +- core/rpc-servers/Cargo.toml | 2 +- core/rpc/Cargo.toml | 2 +- .../primitives => runtime-primitives}/Cargo.toml | 10 +++++----- .../primitives => runtime-primitives}/src/bft.rs | 0 .../src/generic/block.rs | 0 .../src/generic/checked_extrinsic.rs | 0 .../src/generic/digest.rs | 0 .../src/generic/header.rs | 0 .../src/generic/mod.rs | 0 .../src/generic/tests.rs | 0 .../src/generic/unchecked_extrinsic.rs | 0 .../primitives => runtime-primitives}/src/lib.rs | 0 .../primitives => runtime-primitives}/src/testing.rs | 0 .../primitives => runtime-primitives}/src/traits.rs | 0 core/runtime/balances/Cargo.toml | 2 +- core/runtime/consensus/Cargo.toml | 2 +- core/runtime/contract/Cargo.toml | 2 +- core/runtime/council/Cargo.toml | 2 +- core/runtime/democracy/Cargo.toml | 2 +- core/runtime/example/Cargo.toml | 2 +- core/runtime/executive/Cargo.toml | 2 +- core/runtime/session/Cargo.toml | 2 +- core/runtime/staking/Cargo.toml | 2 +- core/runtime/system/Cargo.toml | 2 +- core/runtime/timestamp/Cargo.toml | 2 +- core/runtime/treasury/Cargo.toml | 2 +- core/service/Cargo.toml | 2 +- core/test-client/Cargo.toml | 2 +- core/test-runtime/Cargo.toml | 2 +- core/test-runtime/wasm/Cargo.toml | 2 +- node/consensus/Cargo.toml | 2 +- node/executor/Cargo.toml | 2 +- node/primitives/Cargo.toml | 2 +- node/runtime/Cargo.toml | 2 +- node/runtime/wasm/Cargo.toml | 2 +- node/transaction-pool/Cargo.toml | 2 +- 44 files changed, 37 insertions(+), 37 deletions(-) rename core/{runtime/primitives => runtime-primitives}/Cargo.toml (63%) rename core/{runtime/primitives => runtime-primitives}/src/bft.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/generic/block.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/generic/checked_extrinsic.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/generic/digest.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/generic/header.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/generic/mod.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/generic/tests.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/generic/unchecked_extrinsic.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/lib.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/testing.rs (100%) rename core/{runtime/primitives => runtime-primitives}/src/traits.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index 7b50ebc6d604b..5647bd915b1c1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ members = [ "core/runtime/democracy", "core/runtime/example", "core/runtime/executive", - "core/runtime/primitives", + "core/runtime-primitives", "core/runtime/session", "core/runtime/staking", "core/runtime/system", diff --git a/core/bft/Cargo.toml b/core/bft/Cargo.toml index 9afb91f843bce..d82ec33180cec 100644 --- a/core/bft/Cargo.toml +++ b/core/bft/Cargo.toml @@ -8,7 +8,7 @@ futures = "0.1.17" parity-codec = { path = "../../codec" } substrate-primitives = { path = "../primitives" } substrate-runtime-support = { path = "../runtime/support" } -substrate-runtime-primitives = { path = "../runtime/primitives" } +substrate-runtime-primitives = { path = "../runtime-primitives" } substrate-runtime-version = { path = "../runtime-version" } tokio = "0.1.7" parking_lot = "0.4" diff --git a/core/cli/Cargo.toml b/core/cli/Cargo.toml index df08233480d26..d3e78a78f2564 100644 --- a/core/cli/Cargo.toml +++ b/core/cli/Cargo.toml @@ -26,7 +26,7 @@ sysinfo = "0.5.7" substrate-client = { path = "../../core/client" } substrate-network = { path = "../../core/network" } substrate-network-libp2p = { path = "../../core/network-libp2p" } -substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime-primitives" } substrate-service = { path = "../../core/service" } substrate-telemetry = { path = "../../core/telemetry" } names = "0.11.0" diff --git a/core/client/Cargo.toml b/core/client/Cargo.toml index 1fbeb29dd66d2..f4734e6e74e1b 100644 --- a/core/client/Cargo.toml +++ b/core/client/Cargo.toml @@ -19,7 +19,7 @@ substrate-executor = { path = "../executor" } substrate-primitives = { path = "../primitives" } substrate-runtime-io = { path = "../runtime-io" } substrate-runtime-support = { path = "../runtime/support" } -substrate-runtime-primitives = { path = "../runtime/primitives" } +substrate-runtime-primitives = { path = "../runtime-primitives" } substrate-state-machine = { path = "../state-machine" } substrate-keyring = { path = "../../core/keyring" } substrate-telemetry = { path = "../telemetry" } diff --git a/core/client/db/Cargo.toml b/core/client/db/Cargo.toml index 442ab086858d6..f00650e9918fb 100644 --- a/core/client/db/Cargo.toml +++ b/core/client/db/Cargo.toml @@ -11,7 +11,7 @@ kvdb-rocksdb = "0.1.3" hashdb = "0.2.1" memorydb = "0.2.1" substrate-primitives = { path = "../../../core/primitives" } -substrate-runtime-primitives = { path = "../../../core/runtime/primitives" } +substrate-runtime-primitives = { path = "../../../core/runtime-primitives" } substrate-client = { path = "../../../core/client" } substrate-state-machine = { path = "../../../core/state-machine" } substrate-runtime-support = { path = "../../../core/runtime/support" } diff --git a/core/extrinsic-pool/Cargo.toml b/core/extrinsic-pool/Cargo.toml index e3b8038d55a16..f0fbf11a75694 100644 --- a/core/extrinsic-pool/Cargo.toml +++ b/core/extrinsic-pool/Cargo.toml @@ -11,7 +11,7 @@ futures = "0.1" log = "0.3" parking_lot = "0.4" transaction-pool = "1.13.2" -substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime-primitives" } [dev-dependencies] substrate-test-client = { path = "../../core/test-client" } diff --git a/core/misbehavior-check/Cargo.toml b/core/misbehavior-check/Cargo.toml index 126bb6aafd901..07fb957a6118d 100644 --- a/core/misbehavior-check/Cargo.toml +++ b/core/misbehavior-check/Cargo.toml @@ -6,7 +6,7 @@ authors = ["Parity Technologies "] [dependencies] parity-codec = { path = "../../codec", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } -substrate-runtime-primitives = { path = "../runtime/primitives", default-features = false } +substrate-runtime-primitives = { path = "../runtime-primitives", default-features = false } substrate-runtime-io = { path = "../runtime-io", default-features = false } [dev-dependencies] diff --git a/core/network/Cargo.toml b/core/network/Cargo.toml index fe19b3d73ffe8..312923eecd0f9 100644 --- a/core/network/Cargo.toml +++ b/core/network/Cargo.toml @@ -18,7 +18,7 @@ rustc-hex = "1.0" ethcore-io = { git = "https://github.com/paritytech/parity.git" } substrate-primitives = { path = "../../core/primitives" } substrate-client = { path = "../../core/client" } -substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime-primitives" } parity-codec = { path = "../../codec" } parity-codec-derive = { path = "../../codec/derive" } substrate-network-libp2p = { path = "../../core/network-libp2p" } diff --git a/core/rpc-servers/Cargo.toml b/core/rpc-servers/Cargo.toml index 6b7038d44a628..08de43147cb57 100644 --- a/core/rpc-servers/Cargo.toml +++ b/core/rpc-servers/Cargo.toml @@ -11,4 +11,4 @@ jsonrpc-ws-server = { git = "https://github.com/paritytech/jsonrpc.git" } log = "0.3" serde = "1.0" substrate-rpc = { path = "../rpc", version = "0.1" } -substrate-runtime-primitives = { path = "../runtime/primitives" } +substrate-runtime-primitives = { path = "../runtime-primitives" } diff --git a/core/rpc/Cargo.toml b/core/rpc/Cargo.toml index a5acd4951485c..fd1d368f4196a 100644 --- a/core/rpc/Cargo.toml +++ b/core/rpc/Cargo.toml @@ -15,7 +15,7 @@ substrate-client = { path = "../client" } substrate-executor = { path = "../executor" } substrate-extrinsic-pool = { path = "../extrinsic-pool" } substrate-primitives = { path = "../primitives" } -substrate-runtime-primitives = { path = "../runtime/primitives" } +substrate-runtime-primitives = { path = "../runtime-primitives" } substrate-runtime-version = { path = "../runtime-version" } substrate-state-machine = { path = "../state-machine" } tokio = "0.1.7" diff --git a/core/runtime/primitives/Cargo.toml b/core/runtime-primitives/Cargo.toml similarity index 63% rename from core/runtime/primitives/Cargo.toml rename to core/runtime-primitives/Cargo.toml index 438b94654b661..730114e739247 100644 --- a/core/runtime/primitives/Cargo.toml +++ b/core/runtime-primitives/Cargo.toml @@ -8,11 +8,11 @@ num-traits = { version = "0.2", default_features = false } integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } -parity-codec = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../primitives", default_features = false } +substrate-runtime-std = { path = "../runtime-std", default_features = false } +substrate-runtime-io = { path = "../runtime-io", default_features = false } log = {version = "0.3", optional = true } [dev-dependencies] diff --git a/core/runtime/primitives/src/bft.rs b/core/runtime-primitives/src/bft.rs similarity index 100% rename from core/runtime/primitives/src/bft.rs rename to core/runtime-primitives/src/bft.rs diff --git a/core/runtime/primitives/src/generic/block.rs b/core/runtime-primitives/src/generic/block.rs similarity index 100% rename from core/runtime/primitives/src/generic/block.rs rename to core/runtime-primitives/src/generic/block.rs diff --git a/core/runtime/primitives/src/generic/checked_extrinsic.rs b/core/runtime-primitives/src/generic/checked_extrinsic.rs similarity index 100% rename from core/runtime/primitives/src/generic/checked_extrinsic.rs rename to core/runtime-primitives/src/generic/checked_extrinsic.rs diff --git a/core/runtime/primitives/src/generic/digest.rs b/core/runtime-primitives/src/generic/digest.rs similarity index 100% rename from core/runtime/primitives/src/generic/digest.rs rename to core/runtime-primitives/src/generic/digest.rs diff --git a/core/runtime/primitives/src/generic/header.rs b/core/runtime-primitives/src/generic/header.rs similarity index 100% rename from core/runtime/primitives/src/generic/header.rs rename to core/runtime-primitives/src/generic/header.rs diff --git a/core/runtime/primitives/src/generic/mod.rs b/core/runtime-primitives/src/generic/mod.rs similarity index 100% rename from core/runtime/primitives/src/generic/mod.rs rename to core/runtime-primitives/src/generic/mod.rs diff --git a/core/runtime/primitives/src/generic/tests.rs b/core/runtime-primitives/src/generic/tests.rs similarity index 100% rename from core/runtime/primitives/src/generic/tests.rs rename to core/runtime-primitives/src/generic/tests.rs diff --git a/core/runtime/primitives/src/generic/unchecked_extrinsic.rs b/core/runtime-primitives/src/generic/unchecked_extrinsic.rs similarity index 100% rename from core/runtime/primitives/src/generic/unchecked_extrinsic.rs rename to core/runtime-primitives/src/generic/unchecked_extrinsic.rs diff --git a/core/runtime/primitives/src/lib.rs b/core/runtime-primitives/src/lib.rs similarity index 100% rename from core/runtime/primitives/src/lib.rs rename to core/runtime-primitives/src/lib.rs diff --git a/core/runtime/primitives/src/testing.rs b/core/runtime-primitives/src/testing.rs similarity index 100% rename from core/runtime/primitives/src/testing.rs rename to core/runtime-primitives/src/testing.rs diff --git a/core/runtime/primitives/src/traits.rs b/core/runtime-primitives/src/traits.rs similarity index 100% rename from core/runtime/primitives/src/traits.rs rename to core/runtime-primitives/src/traits.rs diff --git a/core/runtime/balances/Cargo.toml b/core/runtime/balances/Cargo.toml index 48f9b390c5be3..3a61187c6bf63 100644 --- a/core/runtime/balances/Cargo.toml +++ b/core/runtime/balances/Cargo.toml @@ -15,7 +15,7 @@ substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } [features] diff --git a/core/runtime/consensus/Cargo.toml b/core/runtime/consensus/Cargo.toml index 49a366a9fdc87..339c031853b2b 100644 --- a/core/runtime/consensus/Cargo.toml +++ b/core/runtime/consensus/Cargo.toml @@ -13,7 +13,7 @@ substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } [features] diff --git a/core/runtime/contract/Cargo.toml b/core/runtime/contract/Cargo.toml index c6e3229b99709..fd9cf57dc6353 100644 --- a/core/runtime/contract/Cargo.toml +++ b/core/runtime/contract/Cargo.toml @@ -8,7 +8,7 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-primitives = { path = "../../runtime/primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-sandbox = { path = "../../runtime-sandbox", default_features = false } diff --git a/core/runtime/council/Cargo.toml b/core/runtime/council/Cargo.toml index b9a55be41fa39..6ae5ed0c1a1f6 100644 --- a/core/runtime/council/Cargo.toml +++ b/core/runtime/council/Cargo.toml @@ -16,7 +16,7 @@ substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-democracy = { path = "../democracy", default_features = false } diff --git a/core/runtime/democracy/Cargo.toml b/core/runtime/democracy/Cargo.toml index 2a88e9ce92db5..2f2b5ae839bec 100644 --- a/core/runtime/democracy/Cargo.toml +++ b/core/runtime/democracy/Cargo.toml @@ -14,7 +14,7 @@ substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/example/Cargo.toml b/core/runtime/example/Cargo.toml index a8e9c755491bc..12d7efd9b109b 100644 --- a/core/runtime/example/Cargo.toml +++ b/core/runtime/example/Cargo.toml @@ -10,7 +10,7 @@ serde_derive = { version = "1.0", optional = true } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } diff --git a/core/runtime/executive/Cargo.toml b/core/runtime/executive/Cargo.toml index 0bb50b3cc1fbc..f65379991bc83 100644 --- a/core/runtime/executive/Cargo.toml +++ b/core/runtime/executive/Cargo.toml @@ -11,7 +11,7 @@ parity-codec = { path = "../../../codec", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } [dev-dependencies] diff --git a/core/runtime/session/Cargo.toml b/core/runtime/session/Cargo.toml index 6dd98f4ae7e0f..a2fa249153b65 100644 --- a/core/runtime/session/Cargo.toml +++ b/core/runtime/session/Cargo.toml @@ -15,7 +15,7 @@ substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } substrate-runtime-timestamp = { path = "../timestamp", default_features = false } diff --git a/core/runtime/staking/Cargo.toml b/core/runtime/staking/Cargo.toml index f9908f076cf77..fa0c7f47f5e3b 100644 --- a/core/runtime/staking/Cargo.toml +++ b/core/runtime/staking/Cargo.toml @@ -16,7 +16,7 @@ substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-sandbox = { path = "../../runtime-sandbox", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/system/Cargo.toml b/core/runtime/system/Cargo.toml index fc1dfd9df60f3..eb53609706ecc 100644 --- a/core/runtime/system/Cargo.toml +++ b/core/runtime/system/Cargo.toml @@ -14,7 +14,7 @@ substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } [features] default = ["std"] diff --git a/core/runtime/timestamp/Cargo.toml b/core/runtime/timestamp/Cargo.toml index f2625be8e9dee..d54e64f2564bc 100644 --- a/core/runtime/timestamp/Cargo.toml +++ b/core/runtime/timestamp/Cargo.toml @@ -10,7 +10,7 @@ serde_derive = { version = "1.0", optional = true } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/treasury/Cargo.toml b/core/runtime/treasury/Cargo.toml index 32b58bcfaeb5d..b129d1369f18e 100644 --- a/core/runtime/treasury/Cargo.toml +++ b/core/runtime/treasury/Cargo.toml @@ -10,7 +10,7 @@ serde_derive = { version = "1.0", optional = true } substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../primitives", default_features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } diff --git a/core/service/Cargo.toml b/core/service/Cargo.toml index dc5d39a9c6c71..7dfb4478e3440 100644 --- a/core/service/Cargo.toml +++ b/core/service/Cargo.toml @@ -18,7 +18,7 @@ serde_derive = "1.0" target_info = "0.1" substrate-keystore = { path = "../../core/keystore" } substrate-runtime-io = { path = "../../core/runtime-io" } -substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime-primitives" } substrate-primitives = { path = "../../core/primitives" } substrate-network = { path = "../../core/network" } substrate-client = { path = "../../core/client" } diff --git a/core/test-client/Cargo.toml b/core/test-client/Cargo.toml index 4e21edcff5bac..00fd0ec176241 100644 --- a/core/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -13,6 +13,6 @@ substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } substrate-runtime-support = { path = "../runtime/support" } substrate-test-runtime = { path = "../test-runtime" } -substrate-runtime-primitives = { path = "../runtime/primitives" } +substrate-runtime-primitives = { path = "../runtime-primitives" } hashdb = "0.2.1" diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index ff5899099a2cc..1eb0585bf50b9 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -15,7 +15,7 @@ substrate-runtime-std = { path = "../runtime-std", default-features = false } substrate-runtime-io = { path = "../runtime-io", default-features = false } substrate-runtime-support = { path = "../runtime/support", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } -substrate-runtime-primitives = { path = "../runtime/primitives", default-features = false } +substrate-runtime-primitives = { path = "../runtime-primitives", default-features = false } substrate-runtime-version = { path = "../runtime-version", default-features = false } [features] diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index 7ba7b606c9dd2..d787da403368f 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -13,7 +13,7 @@ substrate-runtime-io = { path = "../../runtime-io", default-features = false } substrate-runtime-support = { path = "../../runtime/support", default-features = false } substrate-runtime-version = { path = "../../runtime-version", default-features = false } substrate-primitives = { path = "../../primitives", default-features = false } -substrate-runtime-primitives = { path = "../../runtime/primitives", default-features = false } +substrate-runtime-primitives = { path = "../../runtime-primitives", default-features = false } [features] default = [] diff --git a/node/consensus/Cargo.toml b/node/consensus/Cargo.toml index 6f57394fafa2c..3f7d44a99a10d 100644 --- a/node/consensus/Cargo.toml +++ b/node/consensus/Cargo.toml @@ -20,7 +20,7 @@ parity-codec = { path = "../../codec" } substrate-primitives = { path = "../../core/primitives" } substrate-runtime-support = { path = "../../core/runtime/support" } substrate-client = { path = "../../core/client" } -substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime-primitives" } [dev-dependencies] substrate-keyring = { path = "../../core/keyring" } diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index c3f7d7ef53435..0bc30a24a2e5c 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -18,7 +18,7 @@ node-runtime = { path = "../runtime" } [dev-dependencies] substrate-keyring = { path = "../../core/keyring" } -substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime-primitives" } substrate-runtime-balances = { path = "../../core/runtime/balances" } substrate-runtime-session = { path = "../../core/runtime/session" } substrate-runtime-staking = { path = "../../core/runtime/staking" } diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index b300abf459a60..1c1a0bcc0e1b3 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -10,7 +10,7 @@ parity-codec = { path = "../../codec", default_features = false } parity-codec-derive = { path = "../../codec/derive", default_features = false } substrate-primitives = { path = "../../core/primitives", default_features = false } substrate-runtime-std = { path = "../../core/runtime-std", default_features = false } -substrate-runtime-primitives = { path = "../../core/runtime/primitives", default_features = false } +substrate-runtime-primitives = { path = "../../core/runtime-primitives", default_features = false } [dev-dependencies] substrate-serializer = { path = "../../core/serializer" } diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index e94377d80a738..d6fafdf1d56f1 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -23,7 +23,7 @@ substrate-runtime-contract = { path = "../../core/runtime/contract" } substrate-runtime-council = { path = "../../core/runtime/council" } substrate-runtime-democracy = { path = "../../core/runtime/democracy" } substrate-runtime-executive = { path = "../../core/runtime/executive" } -substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime-primitives" } substrate-runtime-session = { path = "../../core/runtime/session" } substrate-runtime-staking = { path = "../../core/runtime/staking" } substrate-runtime-system = { path = "../../core/runtime/system" } diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index 58a0c964ff712..39b886b5b788b 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -21,7 +21,7 @@ substrate-runtime-contract = { path = "../../../core/runtime/contract", default- substrate-runtime-council = { path = "../../../core/runtime/council", default-features = false } substrate-runtime-democracy = { path = "../../../core/runtime/democracy", default-features = false } substrate-runtime-executive = { path = "../../../core/runtime/executive", default-features = false } -substrate-runtime-primitives = { path = "../../../core/runtime/primitives", default-features = false } +substrate-runtime-primitives = { path = "../../../core/runtime-primitives", default-features = false } substrate-runtime-session = { path = "../../../core/runtime/session", default-features = false } substrate-runtime-staking = { path = "../../../core/runtime/staking", default-features = false } substrate-runtime-system = { path = "../../../core/runtime/system", default-features = false } diff --git a/node/transaction-pool/Cargo.toml b/node/transaction-pool/Cargo.toml index 3330af2bd1552..1a7e97f60f9fd 100644 --- a/node/transaction-pool/Cargo.toml +++ b/node/transaction-pool/Cargo.toml @@ -15,4 +15,4 @@ parity-codec = { path = "../../codec" } substrate-keyring = { path = "../../core/keyring" } substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } substrate-primitives = { path = "../../core/primitives" } -substrate-runtime-primitives = { path = "../../core/runtime/primitives" } +substrate-runtime-primitives = { path = "../../core/runtime-primitives" } From bc8265cf8840a12eda064c1de731fafd98d5fd46 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 00:46:44 +0200 Subject: [PATCH 16/24] Remove s-r-support dep from s-r-version --- Cargo.lock | 1 - core/runtime-version/Cargo.toml | 2 -- 2 files changed, 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3f14c4257dadf..a5da1d048ab99 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3049,7 +3049,6 @@ dependencies = [ "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] diff --git a/core/runtime-version/Cargo.toml b/core/runtime-version/Cargo.toml index d7e04497d4ee8..fe19006398780 100644 --- a/core/runtime-version/Cargo.toml +++ b/core/runtime-version/Cargo.toml @@ -9,7 +9,6 @@ serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../codec", default_features = false } parity-codec-derive = { path = "../../codec/derive", default_features = false } substrate-runtime-std = { path = "../runtime-std", default_features = false } -substrate-runtime-support = { path = "../runtime/support", default_features = false } [features] default = ["std"] @@ -18,5 +17,4 @@ std = [ "serde_derive", "parity-codec/std", "substrate-runtime-std/std", - "substrate-runtime-support/std", ] From b25b7897a071e7688e53d68410ff9fe76880aecd Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 00:48:44 +0200 Subject: [PATCH 17/24] Remove dep of s-r-support from bft --- Cargo.lock | 1 - core/bft/Cargo.toml | 1 - core/bft/src/lib.rs | 1 - 3 files changed, 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a5da1d048ab99..ef968033cc236 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2448,7 +2448,6 @@ dependencies = [ "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", "substrate-runtime-version 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/core/bft/Cargo.toml b/core/bft/Cargo.toml index d82ec33180cec..30bdc08f37a4f 100644 --- a/core/bft/Cargo.toml +++ b/core/bft/Cargo.toml @@ -7,7 +7,6 @@ authors = ["Parity Technologies "] futures = "0.1.17" parity-codec = { path = "../../codec" } substrate-primitives = { path = "../primitives" } -substrate-runtime-support = { path = "../runtime/support" } substrate-runtime-primitives = { path = "../runtime-primitives" } substrate-runtime-version = { path = "../runtime-version" } tokio = "0.1.7" diff --git a/core/bft/src/lib.rs b/core/bft/src/lib.rs index 33d185cc3ebc8..e2c55955c9342 100644 --- a/core/bft/src/lib.rs +++ b/core/bft/src/lib.rs @@ -38,7 +38,6 @@ pub mod error; extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_runtime_version as runtime_version; extern crate tokio; From 0fb1e94019d147df29ca4bcdd59e0eb6cc1ead67 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 00:50:58 +0200 Subject: [PATCH 18/24] Remove dep of s-r-support from node/consensus --- Cargo.lock | 1 - node/consensus/Cargo.toml | 1 - node/consensus/src/lib.rs | 1 - 3 files changed, 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ef968033cc236..f83c13ff23e39 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1540,7 +1540,6 @@ dependencies = [ "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/node/consensus/Cargo.toml b/node/consensus/Cargo.toml index 3f7d44a99a10d..1b1b8927a3b37 100644 --- a/node/consensus/Cargo.toml +++ b/node/consensus/Cargo.toml @@ -18,7 +18,6 @@ node-transaction-pool = { path = "../transaction-pool" } substrate-bft = { path = "../../core/bft" } parity-codec = { path = "../../codec" } substrate-primitives = { path = "../../core/primitives" } -substrate-runtime-support = { path = "../../core/runtime/support" } substrate-client = { path = "../../core/client" } substrate-runtime-primitives = { path = "../../core/runtime-primitives" } diff --git a/node/consensus/src/lib.rs b/node/consensus/src/lib.rs index 984ec41582430..9e2d4e5bb7be8 100644 --- a/node/consensus/src/lib.rs +++ b/node/consensus/src/lib.rs @@ -25,7 +25,6 @@ extern crate node_primitives; extern crate substrate_bft as bft; extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_client as client; From c70f16aa7e1cc3cc3e9f2e58c505563808d88aae Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 09:54:09 +0200 Subject: [PATCH 19/24] Sever all other core deps from s-r-support --- Cargo.lock | 11 +- Cargo.toml | 1 + core/client/Cargo.toml | 2 +- core/client/db/Cargo.toml | 1 - core/client/db/src/lib.rs | 1 - core/client/src/client.rs | 4 +- core/client/src/lib.rs | 2 +- core/metadata/Cargo.toml | 13 ++ core/metadata/README.adoc | 13 ++ core/metadata/src/lib.rs | 186 ++++++++++++++++++++++++ core/runtime/support/Cargo.toml | 2 + core/runtime/support/src/lib.rs | 1 + core/runtime/support/src/metadata.rs | 203 +++------------------------ core/test-runtime/src/lib.rs | 2 +- node/executor/Cargo.toml | 2 +- 15 files changed, 252 insertions(+), 192 deletions(-) create mode 100644 core/metadata/Cargo.toml create mode 100644 core/metadata/README.adoc create mode 100644 core/metadata/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index f83c13ff23e39..2ef94bcddcef9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2500,10 +2500,10 @@ dependencies = [ "substrate-bft 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", + "substrate-metadata 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", "substrate-state-machine 0.1.0", "substrate-telemetry 0.3.0", "substrate-test-client 0.1.0", @@ -2527,7 +2527,6 @@ dependencies = [ "substrate-executor 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", - "substrate-runtime-support 0.1.0", "substrate-state-db 0.1.0", "substrate-state-machine 0.1.0", ] @@ -2600,6 +2599,13 @@ dependencies = [ "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "substrate-metadata" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", +] + [[package]] name = "substrate-misbehavior-check" version = "0.1.0" @@ -2981,6 +2987,7 @@ dependencies = [ "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-metadata 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", diff --git a/Cargo.toml b/Cargo.toml index 5647bd915b1c1..e95128ceae036 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,6 +10,7 @@ members = [ "core/executor", "core/extrinsic-pool", "core/keyring", + "core/metadata", "core/misbehavior-check", "core/network", "core/primitives", diff --git a/core/client/Cargo.toml b/core/client/Cargo.toml index f4734e6e74e1b..a2ab4a8d397f3 100644 --- a/core/client/Cargo.toml +++ b/core/client/Cargo.toml @@ -18,7 +18,7 @@ parity-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-primitives = { path = "../primitives" } substrate-runtime-io = { path = "../runtime-io" } -substrate-runtime-support = { path = "../runtime/support" } +substrate-metadata = { path = "../metadata" } substrate-runtime-primitives = { path = "../runtime-primitives" } substrate-state-machine = { path = "../state-machine" } substrate-keyring = { path = "../../core/keyring" } diff --git a/core/client/db/Cargo.toml b/core/client/db/Cargo.toml index f00650e9918fb..c9f9f4f24fee0 100644 --- a/core/client/db/Cargo.toml +++ b/core/client/db/Cargo.toml @@ -14,7 +14,6 @@ substrate-primitives = { path = "../../../core/primitives" } substrate-runtime-primitives = { path = "../../../core/runtime-primitives" } substrate-client = { path = "../../../core/client" } substrate-state-machine = { path = "../../../core/state-machine" } -substrate-runtime-support = { path = "../../../core/runtime/support" } parity-codec = { path = "../../../codec" } parity-codec-derive = { path = "../../../codec/derive" } substrate-executor = { path = "../../../core/executor" } diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index 8f0e332d17988..34de8b43cb629 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -26,7 +26,6 @@ extern crate memorydb; extern crate parking_lot; extern crate substrate_state_machine as state_machine; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; extern crate parity_codec as codec; extern crate substrate_executor as executor; diff --git a/core/client/src/client.rs b/core/client/src/client.rs index 9b82413c6a670..f5dc77c116279 100644 --- a/core/client/src/client.rs +++ b/core/client/src/client.rs @@ -23,7 +23,7 @@ use primitives::AuthorityId; use runtime_primitives::{bft::Justification, generic::{BlockId, SignedBlock, Block as RuntimeBlock}}; use runtime_primitives::traits::{Block as BlockT, Header as HeaderT, Zero, One, As, NumberFor}; use runtime_primitives::BuildStorage; -use runtime_support::metadata::JSONMetadataDecodable; +use substrate_metadata::JsonMetadataDecodable; use primitives::{Blake2Hasher, RlpCodec}; use primitives::storage::{StorageKey, StorageData}; use codec::{Encode, Decode}; @@ -255,7 +255,7 @@ impl Client where /// Returns the runtime metadata as JSON. pub fn json_metadata(&self, id: &BlockId) -> error::Result { self.executor.call(id, "json_metadata",&[]) - .and_then(|r| Vec::::decode(&mut &r.return_data[..]) + .and_then(|r| Vec::::decode(&mut &r.return_data[..]) .ok_or("JSON Metadata decoding failed".into())) .and_then(|metadata| { let mut json = metadata.into_iter().enumerate().fold(String::from("{"), diff --git a/core/client/src/lib.rs b/core/client/src/lib.rs index f5804fa8c0ca6..4d1ba136191b4 100644 --- a/core/client/src/lib.rs +++ b/core/client/src/lib.rs @@ -21,9 +21,9 @@ extern crate substrate_bft as bft; extern crate parity_codec as codec; +extern crate substrate_metadata; extern crate substrate_primitives as primitives; extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_support as runtime_support; extern crate substrate_runtime_primitives as runtime_primitives; extern crate substrate_state_machine as state_machine; #[cfg(test)] extern crate substrate_keyring as keyring; diff --git a/core/metadata/Cargo.toml b/core/metadata/Cargo.toml new file mode 100644 index 0000000000000..f3d068c08bd1e --- /dev/null +++ b/core/metadata/Cargo.toml @@ -0,0 +1,13 @@ +[package] +name = "substrate-metadata" +version = "0.1.0" +authors = ["Parity Technologies "] + +[dependencies] +parity-codec = { path = "../../codec", default_features = false } + +[features] +default = ["std"] +std = [ + "parity-codec/std" +] diff --git a/core/metadata/README.adoc b/core/metadata/README.adoc new file mode 100644 index 0000000000000..8f4939087eed7 --- /dev/null +++ b/core/metadata/README.adoc @@ -0,0 +1,13 @@ + += Substrate BFT + +.Summary +[source, toml] +---- +include::Cargo.toml[lines=2..5] +---- + +.Description +---- +include::src/lib.rs[tag=description] +---- diff --git a/core/metadata/src/lib.rs b/core/metadata/src/lib.rs new file mode 100644 index 0000000000000..ca3e30d51880a --- /dev/null +++ b/core/metadata/src/lib.rs @@ -0,0 +1,186 @@ +// Copyright 2017 Parity Technologies (UK) Ltd. +// This file is part of Substrate. + +// Substrate is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// Substrate is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with Substrate. If not, see . + +//! Decodable variant of the JsonMetadata. +//! +//! This really doesn't belong here, but is necessary for the moment. In the future +//! it should be removed entirely to an external module for shimming on to the +//! codec-encoded metadata. + +extern crate parity_codec as codec; + +use codec::{Encode, Decode, Input, Output}; + +/// The metadata of a runtime encoded as JSON. +#[derive(Eq)] +#[cfg_attr(feature = "std", derive(Debug))] +pub enum JsonMetadata { + Events { name: &'static str, events: &'static [(&'static str, fn() -> &'static str)] }, + Module { module: &'static str, prefix: &'static str }, + ModuleWithStorage { module: &'static str, prefix: &'static str, storage: &'static str } +} + +impl Encode for JsonMetadata { + fn encode_to(&self, dest: &mut W) { + match self { + JsonMetadata::Events { name, events } => { + 0i8.encode_to(dest); + name.encode_to(dest); + events.iter().fold(0u32, |count, _| count + 1).encode_to(dest); + events + .iter() + .map(|(module, data)| (module, data())) + .for_each(|val| val.encode_to(dest)); + }, + JsonMetadata::Module { module, prefix } => { + 1i8.encode_to(dest); + prefix.encode_to(dest); + module.encode_to(dest); + }, + JsonMetadata::ModuleWithStorage { module, prefix, storage } => { + 2i8.encode_to(dest); + prefix.encode_to(dest); + module.encode_to(dest); + storage.encode_to(dest); + } + } + } +} + +impl PartialEq for JsonMetadata { + fn eq(&self, other: &JsonMetadata) -> bool { + match (self, other) { + ( + JsonMetadata::Events { name: lname, events: left }, + JsonMetadata::Events { name: rname, events: right } + ) => { + lname == rname && left.iter().zip(right.iter()).fold(true, |res, (l, r)| { + res && l.0 == r.0 && l.1() == r.1() + }) + }, + ( + JsonMetadata::Module { prefix: lpre, module: lmod }, + JsonMetadata::Module { prefix: rpre, module: rmod } + ) => { + lpre == rpre && lmod == rmod + }, + ( + JsonMetadata::ModuleWithStorage { prefix: lpre, module: lmod, storage: lstore }, + JsonMetadata::ModuleWithStorage { prefix: rpre, module: rmod, storage: rstore } + ) => { + lpre == rpre && lmod == rmod && lstore == rstore + }, + _ => false, + } + } +} + +/// Utility struct for making `JsonMetadata` decodeable. +#[derive(Eq, PartialEq, Debug)] +#[cfg(feature = "std")] +pub enum JsonMetadataDecodable { + Events { name: String, events: Vec<(String, String)> }, + Module { module: String, prefix: String }, + ModuleWithStorage { module: String, prefix: String, storage: String } +} + +#[cfg(feature = "std")] +impl JsonMetadataDecodable { + /// Returns the instance as JSON string. + /// The first value of the tuple is the name of the metadata type and the second in the JSON string. + pub fn into_json_string(self) -> (&'static str, String) { + match self { + JsonMetadataDecodable::Events { name, events } => { + ( + "events", + format!( + r#"{{ "name": "{}", "events": {{ {} }} }}"#, name, + events.iter().enumerate() + .fold(String::from(""), |mut json, (i, (name, data))| { + if i > 0 { + json.push_str(", "); + } + json.push_str(&format!(r#""{}": {}"#, name, data)); + json + }) + ) + ) + }, + JsonMetadataDecodable::Module { prefix, module } => { + ("module", format!(r#"{{ "prefix": "{}", "module": {} }}"#, prefix, module)) + }, + JsonMetadataDecodable::ModuleWithStorage { prefix, module, storage } => { + ( + "moduleWithStorage", + format!( + r#"{{ "prefix": "{}", "module": {}, "storage": {} }}"#, + prefix, module, storage + ) + ) + } + } + } +} + +#[cfg(feature = "std")] +impl Decode for JsonMetadataDecodable { + fn decode(input: &mut I) -> Option { + i8::decode(input).and_then(|variant| { + match variant { + 0 => String::decode(input) + .and_then(|name| Vec::<(String, String)>::decode(input).map(|events| (name, events))) + .and_then(|(name, events)| Some(JsonMetadataDecodable::Events { name, events })), + 1 => String::decode(input) + .and_then(|prefix| String::decode(input).map(|v| (prefix, v))) + .and_then(|(prefix, module)| Some(JsonMetadataDecodable::Module { prefix, module })), + 2 => String::decode(input) + .and_then(|prefix| String::decode(input).map(|v| (prefix, v))) + .and_then(|(prefix, module)| String::decode(input).map(|v| (prefix, module, v))) + .and_then(|(prefix, module, storage)| Some(JsonMetadataDecodable::ModuleWithStorage { prefix, module, storage })), + _ => None, + } + }) + } +} + +#[cfg(feature = "std")] +impl PartialEq for JsonMetadataDecodable { + fn eq(&self, other: &JsonMetadata) -> bool { + match (self, other) { + ( + JsonMetadataDecodable::Events { name: lname, events: left }, + JsonMetadata::Events { name: rname, events: right } + ) => { + lname == rname && left.iter().zip(right.iter()).fold(true, |res, (l, r)| { + res && l.0 == r.0 && l.1 == r.1() + }) + }, + ( + JsonMetadataDecodable::Module { prefix: lpre, module: lmod }, + JsonMetadata::Module { prefix: rpre, module: rmod } + ) => { + lpre == rpre && lmod == rmod + }, + ( + JsonMetadataDecodable::ModuleWithStorage { prefix: lpre, module: lmod, storage: lstore }, + JsonMetadata::ModuleWithStorage { prefix: rpre, module: rmod, storage: rstore } + ) => { + lpre == rpre && lmod == rmod && lstore == rstore + }, + _ => false, + } + } +} diff --git a/core/runtime/support/Cargo.toml b/core/runtime/support/Cargo.toml index c94a9c0a0f800..c90d2b7ad7fe8 100644 --- a/core/runtime/support/Cargo.toml +++ b/core/runtime/support/Cargo.toml @@ -11,6 +11,7 @@ substrate-runtime-std = { path = "../../runtime-std", default_features = false } substrate-runtime-io = { path = "../../runtime-io", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } +substrate-metadata = { path = "../../metadata", default_features = false } [dev-dependencies] pretty_assertions = "0.5.1" @@ -27,6 +28,7 @@ std = [ "substrate-runtime-io/std", "parity-codec/std", "substrate-runtime-std/std", + "substrate-metadata/std", ] nightly = [] strict = [] diff --git a/core/runtime/support/src/lib.rs b/core/runtime/support/src/lib.rs index 309337d4f15f6..227b1ad9dbcff 100644 --- a/core/runtime/support/src/lib.rs +++ b/core/runtime/support/src/lib.rs @@ -30,6 +30,7 @@ extern crate serde; extern crate substrate_runtime_std as rstd; extern crate substrate_runtime_io as runtime_io; extern crate substrate_primitives as primitives; +extern crate substrate_metadata; #[cfg(test)] #[macro_use] diff --git a/core/runtime/support/src/metadata.rs b/core/runtime/support/src/metadata.rs index 12953871d324a..5fc57636c3f7a 100644 --- a/core/runtime/support/src/metadata.rs +++ b/core/runtime/support/src/metadata.rs @@ -14,10 +14,8 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use codec::{Encode, Output}; -#[cfg(feature = "std")] -use codec::{Decode, Input}; use alloc; +pub use substrate_metadata::JsonMetadata; /// Make Box available on `std` and `no_std`. pub type Box = alloc::boxed::Box; @@ -39,10 +37,10 @@ macro_rules! impl_json_metadata { $( $rest:tt )* ) => { impl $runtime { - pub fn json_metadata() -> $crate::metadata::Vec<$crate::metadata::JSONMetadata> { + pub fn json_metadata() -> $crate::metadata::Vec<$crate::metadata::JsonMetadata> { let events = Self::outer_event_json_metadata(); __impl_json_metadata!($runtime; - $crate::metadata::JSONMetadata::Events { + $crate::metadata::JsonMetadata::Events { name: events.0, events: events.1, }; @@ -53,167 +51,6 @@ macro_rules! impl_json_metadata { } } -/// The metadata of a runtime encoded as JSON. -#[derive(Eq)] -#[cfg_attr(feature = "std", derive(Debug))] -pub enum JSONMetadata { - Events { name: &'static str, events: &'static [(&'static str, fn() -> &'static str)] }, - Module { module: &'static str, prefix: &'static str }, - ModuleWithStorage { module: &'static str, prefix: &'static str, storage: &'static str } -} - -impl Encode for JSONMetadata { - fn encode_to(&self, dest: &mut W) { - match self { - JSONMetadata::Events { name, events } => { - 0i8.encode_to(dest); - name.encode_to(dest); - events.iter().fold(0u32, |count, _| count + 1).encode_to(dest); - events - .iter() - .map(|(module, data)| (module, data())) - .for_each(|val| val.encode_to(dest)); - }, - JSONMetadata::Module { module, prefix } => { - 1i8.encode_to(dest); - prefix.encode_to(dest); - module.encode_to(dest); - }, - JSONMetadata::ModuleWithStorage { module, prefix, storage } => { - 2i8.encode_to(dest); - prefix.encode_to(dest); - module.encode_to(dest); - storage.encode_to(dest); - } - } - } -} - -impl PartialEq for JSONMetadata { - fn eq(&self, other: &JSONMetadata) -> bool { - match (self, other) { - ( - JSONMetadata::Events { name: lname, events: left }, - JSONMetadata::Events { name: rname, events: right } - ) => { - lname == rname && left.iter().zip(right.iter()).fold(true, |res, (l, r)| { - res && l.0 == r.0 && l.1() == r.1() - }) - }, - ( - JSONMetadata::Module { prefix: lpre, module: lmod }, - JSONMetadata::Module { prefix: rpre, module: rmod } - ) => { - lpre == rpre && lmod == rmod - }, - ( - JSONMetadata::ModuleWithStorage { prefix: lpre, module: lmod, storage: lstore }, - JSONMetadata::ModuleWithStorage { prefix: rpre, module: rmod, storage: rstore } - ) => { - lpre == rpre && lmod == rmod && lstore == rstore - }, - _ => false, - } - } -} - -/// Utility struct for making `JSONMetadata` decodeable. -#[derive(Eq, PartialEq, Debug)] -#[cfg(feature = "std")] -pub enum JSONMetadataDecodable { - Events { name: String, events: Vec<(String, String)> }, - Module { module: String, prefix: String }, - ModuleWithStorage { module: String, prefix: String, storage: String } -} - -#[cfg(feature = "std")] -impl JSONMetadataDecodable { - /// Returns the instance as JSON string. - /// The first value of the tuple is the name of the metadata type and the second in the JSON string. - pub fn into_json_string(self) -> (&'static str, String) { - match self { - JSONMetadataDecodable::Events { name, events } => { - ( - "events", - format!( - r#"{{ "name": "{}", "events": {{ {} }} }}"#, name, - events.iter().enumerate() - .fold(String::from(""), |mut json, (i, (name, data))| { - if i > 0 { - json.push_str(", "); - } - json.push_str(&format!(r#""{}": {}"#, name, data)); - json - }) - ) - ) - }, - JSONMetadataDecodable::Module { prefix, module } => { - ("module", format!(r#"{{ "prefix": "{}", "module": {} }}"#, prefix, module)) - }, - JSONMetadataDecodable::ModuleWithStorage { prefix, module, storage } => { - ( - "moduleWithStorage", - format!( - r#"{{ "prefix": "{}", "module": {}, "storage": {} }}"#, - prefix, module, storage - ) - ) - } - } - } -} - -#[cfg(feature = "std")] -impl Decode for JSONMetadataDecodable { - fn decode(input: &mut I) -> Option { - i8::decode(input).and_then(|variant| { - match variant { - 0 => String::decode(input) - .and_then(|name| Vec::<(String, String)>::decode(input).map(|events| (name, events))) - .and_then(|(name, events)| Some(JSONMetadataDecodable::Events { name, events })), - 1 => String::decode(input) - .and_then(|prefix| String::decode(input).map(|v| (prefix, v))) - .and_then(|(prefix, module)| Some(JSONMetadataDecodable::Module { prefix, module })), - 2 => String::decode(input) - .and_then(|prefix| String::decode(input).map(|v| (prefix, v))) - .and_then(|(prefix, module)| String::decode(input).map(|v| (prefix, module, v))) - .and_then(|(prefix, module, storage)| Some(JSONMetadataDecodable::ModuleWithStorage { prefix, module, storage })), - _ => None, - } - }) - } -} - -#[cfg(test)] -impl PartialEq for JSONMetadataDecodable { - fn eq(&self, other: &JSONMetadata) -> bool { - match (self, other) { - ( - JSONMetadataDecodable::Events { name: lname, events: left }, - JSONMetadata::Events { name: rname, events: right } - ) => { - lname == rname && left.iter().zip(right.iter()).fold(true, |res, (l, r)| { - res && l.0 == r.0 && l.1 == r.1() - }) - }, - ( - JSONMetadataDecodable::Module { prefix: lpre, module: lmod }, - JSONMetadata::Module { prefix: rpre, module: rmod } - ) => { - lpre == rpre && lmod == rmod - }, - ( - JSONMetadataDecodable::ModuleWithStorage { prefix: lpre, module: lmod, storage: lstore }, - JSONMetadata::ModuleWithStorage { prefix: rpre, module: rmod, storage: rstore } - ) => { - lpre == rpre && lmod == rmod && lstore == rstore - }, - _ => false, - } - } -} - #[macro_export] #[doc(hidden)] macro_rules! __impl_json_metadata { @@ -225,7 +62,7 @@ macro_rules! __impl_json_metadata { ) => { __impl_json_metadata!( $runtime; - $( $metadata, )* $crate::metadata::JSONMetadata::Module { + $( $metadata, )* $crate::metadata::JsonMetadata::Module { module: $mod::$module::<$runtime>::json_metadata(), prefix: stringify!($mod) }; $( $rest )* @@ -238,7 +75,7 @@ macro_rules! __impl_json_metadata { ) => { __impl_json_metadata!( $runtime; - $( $metadata, )* $crate::metadata::JSONMetadata::Module { + $( $metadata, )* $crate::metadata::JsonMetadata::Module { module: $mod::$module::<$runtime>::json_metadata(), prefix: stringify!($mod) }; ) @@ -251,7 +88,7 @@ macro_rules! __impl_json_metadata { ) => { __impl_json_metadata!( $runtime; - $( $metadata, )* $crate::metadata::JSONMetadata::ModuleWithStorage { + $( $metadata, )* $crate::metadata::JsonMetadata::ModuleWithStorage { module: $mod::$module::<$runtime>::json_metadata(), prefix: stringify!($mod), storage: $mod::$module::<$runtime>::store_json_metadata() }; @@ -265,7 +102,7 @@ macro_rules! __impl_json_metadata { ) => { __impl_json_metadata!( $runtime; - $( $metadata, )* $crate::metadata::JSONMetadata::ModuleWithStorage { + $( $metadata, )* $crate::metadata::JsonMetadata::ModuleWithStorage { module: $mod::$module::<$runtime>::json_metadata(), prefix: stringify!($mod), storage: $mod::$module::<$runtime>::store_json_metadata() }; @@ -286,6 +123,8 @@ mod tests { use super::*; use serde; use serde_json; + use substrate_metadata::JsonMetadataDecodable; + use codec::{Decode, Encode}; mod system { pub trait Trait { @@ -381,12 +220,6 @@ mod tests { type Origin = u32; } - impl_json_metadata!( - for TestRuntime with modules - event_module::Module, - event_module2::ModuleWithStorage with Storage - ); - fn system_event_json() -> &'static str { r#"{ "SystemEvent": { "params": null, "description": [ ] } }"# } @@ -399,8 +232,14 @@ mod tests { r#"{ "TestEvent": { "params": [ "Balance" ], "description": [ ] } }"# } - const EXPECTED_METADATA: &[JSONMetadata] = &[ - JSONMetadata::Events { + impl_json_metadata!( + for TestRuntime with modules + event_module::Module, + event_module2::ModuleWithStorage with Storage + ); + + const EXPECTED_METADATA: &[JsonMetadata] = &[ + JsonMetadata::Events { name: "TestEvent", events: &[ ("system", system_event_json), @@ -408,7 +247,7 @@ mod tests { ("event_module2", event_module2_event_json), ] }, - JSONMetadata::Module { + JsonMetadata::Module { module: concat!( r#"{ "name": "Module", "call": "#, r#"{ "name": "Call", "functions": "#, @@ -418,7 +257,7 @@ mod tests { ), prefix: "event_module" }, - JSONMetadata::ModuleWithStorage { + JsonMetadata::ModuleWithStorage { module: r#"{ "name": "ModuleWithStorage", "call": { "name": "Call", "functions": { } } }"#, prefix: "event_module2", storage: concat!( @@ -439,7 +278,7 @@ mod tests { fn json_metadata_encode_and_decode() { let metadata = TestRuntime::json_metadata(); let metadata_encoded = metadata.encode(); - let metadata_decoded = Vec::::decode(&mut &metadata_encoded[..]); + let metadata_decoded = Vec::::decode(&mut &metadata_encoded[..]); assert_eq!(&metadata_decoded.unwrap()[..], &metadata[..]); } @@ -448,7 +287,7 @@ mod tests { fn into_json_string_is_valid_json() { let metadata = TestRuntime::json_metadata(); let metadata_encoded = metadata.encode(); - let metadata_decoded = Vec::::decode(&mut &metadata_encoded[..]); + let metadata_decoded = Vec::::decode(&mut &metadata_encoded[..]); for mdata in metadata_decoded.unwrap().into_iter() { let json = mdata.into_json_string(); diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index 2d3406c23f13b..9e82d2d051721 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -142,7 +142,7 @@ pub mod api { version => |()| super::version(), json_metadata => |()| { let mut vec = ::runtime_support::metadata::Vec::new(); - vec.push(::runtime_support::metadata::JSONMetadata::Events { + vec.push(::runtime_support::metadata::JsonMetadata::Events { name: "Test", events: &[ ("event", super::test_event_json) ] }); vec diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 0bc30a24a2e5c..4a338848d12b8 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -9,7 +9,6 @@ hex-literal = "0.1" triehash = "0.2" parity-codec = { path = "../../codec" } substrate-runtime-io = { path = "../../core/runtime-io" } -substrate-runtime-support = { path = "../../core/runtime/support" } substrate-state-machine = { path = "../../core/state-machine" } substrate-executor = { path = "../../core/executor" } substrate-primitives = { path = "../../core/primitives" } @@ -19,6 +18,7 @@ node-runtime = { path = "../runtime" } [dev-dependencies] substrate-keyring = { path = "../../core/keyring" } substrate-runtime-primitives = { path = "../../core/runtime-primitives" } +substrate-runtime-support = { path = "../../core/runtime/support" } substrate-runtime-balances = { path = "../../core/runtime/balances" } substrate-runtime-session = { path = "../../core/runtime/session" } substrate-runtime-staking = { path = "../../core/runtime/staking" } From 24e37a97f56f534d3f55f9659e990a9cc44d0964 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 10:02:42 +0200 Subject: [PATCH 20/24] Forgot the no_std directive --- core/executor/wasm/Cargo.lock | 40 +++++------ core/metadata/src/lib.rs | 6 +- node/runtime/wasm/Cargo.lock | 122 ++++++++++++++++------------------ 3 files changed, 84 insertions(+), 84 deletions(-) diff --git a/core/executor/wasm/Cargo.lock b/core/executor/wasm/Cargo.lock index c05da1c85d306..5104d0a7f6402 100644 --- a/core/executor/wasm/Cargo.lock +++ b/core/executor/wasm/Cargo.lock @@ -31,6 +31,22 @@ name = "nodrop" version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "parity-codec" +version = "0.1.0" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "0.1.0" +dependencies = [ + "proc-macro2 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "plain_hasher" version = "0.2.0" @@ -107,22 +123,6 @@ name = "serde" version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "parity-codec" -version = "0.1.0" -dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parity-codec-derive" -version = "0.1.0" -dependencies = [ - "proc-macro2 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-primitives" version = "0.1.0" @@ -131,11 +131,11 @@ dependencies = [ "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", "substrate-runtime-std 0.1.0", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -145,8 +145,8 @@ name = "substrate-runtime-io" version = "0.1.0" dependencies = [ "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", + "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "substrate-runtime-std 0.1.0", ] @@ -155,8 +155,8 @@ dependencies = [ name = "substrate-runtime-sandbox" version = "0.1.0" dependencies = [ - "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", + "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", diff --git a/core/metadata/src/lib.rs b/core/metadata/src/lib.rs index ca3e30d51880a..926740892528c 100644 --- a/core/metadata/src/lib.rs +++ b/core/metadata/src/lib.rs @@ -20,9 +20,13 @@ //! it should be removed entirely to an external module for shimming on to the //! codec-encoded metadata. +#![cfg_attr(not(feature = "std"), no_std)] + extern crate parity_codec as codec; -use codec::{Encode, Decode, Input, Output}; +use codec::{Encode, Output}; +#[cfg(feature = "std")] +use codec::{Decode, Input}; /// The metadata of a runtime encoded as JSON. #[derive(Eq)] diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 8894de1476d0d..df16aadd485f7 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -76,18 +76,6 @@ name = "crunchy" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ed25519" -version = "0.1.0" -dependencies = [ - "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "elastic-array" version = "0.10.0" @@ -263,10 +251,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "node-primitives" version = "0.1.0" dependencies = [ - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", @@ -278,9 +266,9 @@ version = "0.1.0" dependencies = [ "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", "node-primitives 0.1.0", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", @@ -331,6 +319,22 @@ name = "parity-bytes" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "parity-codec" +version = "0.1.0" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "0.1.0" +dependencies = [ + "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parity-wasm" version = "0.31.0" @@ -566,51 +570,46 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "parity-codec" -version = "0.1.0" -dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parity-codec-derive" +name = "substrate-keyring" version = "0.1.0" dependencies = [ - "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", ] [[package]] -name = "substrate-keyring" +name = "substrate-metadata" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", ] [[package]] name = "substrate-primitives" version = "0.1.0" dependencies = [ + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", "substrate-runtime-std 0.1.0", "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -619,11 +618,11 @@ name = "substrate-runtime-balances" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", @@ -638,10 +637,10 @@ name = "substrate-runtime-consensus" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", @@ -654,11 +653,11 @@ dependencies = [ name = "substrate-runtime-contract" version = "0.1.0" dependencies = [ + "parity-codec 0.1.0", "parity-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)", "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-io 0.1.0", @@ -675,11 +674,11 @@ version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", @@ -697,11 +696,11 @@ name = "substrate-runtime-democracy" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", @@ -717,9 +716,9 @@ name = "substrate-runtime-executive" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", "substrate-runtime-std 0.1.0", @@ -731,12 +730,11 @@ dependencies = [ name = "substrate-runtime-io" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "environmental 0.1.0", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-std 0.1.0", "substrate-state-machine 0.1.0", @@ -750,22 +748,21 @@ dependencies = [ "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] name = "substrate-runtime-sandbox" version = "0.1.0" dependencies = [ - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -777,11 +774,11 @@ name = "substrate-runtime-session" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", @@ -798,11 +795,11 @@ name = "substrate-runtime-staking" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", @@ -830,11 +827,11 @@ dependencies = [ name = "substrate-runtime-support" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", + "substrate-metadata 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-std 0.1.0", @@ -845,11 +842,11 @@ name = "substrate-runtime-system" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-io 0.1.0", "substrate-runtime-primitives 0.1.0", @@ -862,9 +859,9 @@ name = "substrate-runtime-timestamp" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", "substrate-runtime-io 0.1.0", @@ -879,10 +876,10 @@ name = "substrate-runtime-treasury" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-io 0.1.0", @@ -896,12 +893,11 @@ dependencies = [ name = "substrate-runtime-version" version = "0.1.0" dependencies = [ - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] @@ -914,10 +910,10 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", "substrate-primitives 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] From 5103a6976d7ee29f2e66c757d1fba46291076913 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 10:16:29 +0200 Subject: [PATCH 21/24] Rename non-SRML modules to sr-* to avoid match clashes --- Cargo.lock | 280 +++++++++--------- Cargo.toml | 10 +- core/bft/Cargo.toml | 4 +- core/bft/src/lib.rs | 4 +- core/cli/Cargo.toml | 2 +- core/cli/src/lib.rs | 2 +- core/client/Cargo.toml | 4 +- core/client/db/Cargo.toml | 2 +- core/client/db/src/lib.rs | 2 +- core/client/src/lib.rs | 4 +- core/executor/Cargo.toml | 4 +- core/executor/src/lib.rs | 4 +- core/executor/src/wasm_executor.rs | 12 +- core/executor/wasm/Cargo.lock | 48 +-- core/executor/wasm/Cargo.toml | 4 +- core/executor/wasm/src/lib.rs | 4 +- core/extrinsic-pool/Cargo.toml | 2 +- core/extrinsic-pool/src/lib.rs | 2 +- core/misbehavior-check/Cargo.toml | 6 +- core/misbehavior-check/src/lib.rs | 4 +- core/network/Cargo.toml | 2 +- core/network/src/lib.rs | 2 +- core/primitives/Cargo.toml | 4 +- core/primitives/src/lib.rs | 2 +- core/rpc-servers/Cargo.toml | 2 +- core/rpc-servers/src/lib.rs | 6 +- core/rpc/Cargo.toml | 4 +- core/rpc/src/lib.rs | 4 +- core/runtime/balances/Cargo.toml | 12 +- core/runtime/balances/src/lib.rs | 6 +- core/runtime/consensus/Cargo.toml | 12 +- core/runtime/consensus/src/lib.rs | 6 +- core/runtime/contract/Cargo.toml | 16 +- core/runtime/contract/src/lib.rs | 8 +- core/runtime/council/Cargo.toml | 12 +- core/runtime/council/src/lib.rs | 6 +- core/runtime/democracy/Cargo.toml | 12 +- core/runtime/democracy/src/lib.rs | 6 +- core/runtime/example/Cargo.toml | 12 +- core/runtime/example/src/lib.rs | 6 +- core/runtime/executive/Cargo.toml | 12 +- core/runtime/executive/src/lib.rs | 6 +- core/runtime/session/Cargo.toml | 12 +- core/runtime/session/src/lib.rs | 6 +- core/runtime/staking/Cargo.toml | 16 +- core/runtime/staking/src/lib.rs | 8 +- core/runtime/support/Cargo.toml | 8 +- core/runtime/support/src/lib.rs | 4 +- core/runtime/system/Cargo.toml | 12 +- core/runtime/system/src/lib.rs | 6 +- core/runtime/timestamp/Cargo.toml | 14 +- core/runtime/timestamp/src/lib.rs | 6 +- core/runtime/treasury/Cargo.toml | 12 +- core/runtime/treasury/src/lib.rs | 6 +- core/service/Cargo.toml | 4 +- core/service/src/lib.rs | 2 +- core/{runtime-io => sr-io}/Cargo.toml | 6 +- core/{runtime-io => sr-io}/README.adoc | 0 core/{runtime-io => sr-io}/build.rs | 0 core/{runtime-io => sr-io}/src/lib.rs | 0 core/{runtime-io => sr-io}/with_std.rs | 0 core/{runtime-io => sr-io}/without_std.rs | 2 +- .../Cargo.toml | 10 +- .../src/bft.rs | 0 .../src/generic/block.rs | 0 .../src/generic/checked_extrinsic.rs | 0 .../src/generic/digest.rs | 0 .../src/generic/header.rs | 0 .../src/generic/mod.rs | 0 .../src/generic/tests.rs | 0 .../src/generic/unchecked_extrinsic.rs | 0 .../src/lib.rs | 4 +- .../src/testing.rs | 0 .../src/traits.rs | 0 .../Cargo.toml | 10 +- .../README.adoc | 0 core/{runtime-sandbox => sr-sandbox}/build.rs | 0 .../src/lib.rs | 4 +- .../with_std.rs | 0 .../without_std.rs | 0 core/{runtime-std => sr-std}/Cargo.toml | 2 +- core/{runtime-std => sr-std}/README.adoc | 0 core/{runtime-std => sr-std}/build.rs | 0 core/{runtime-std => sr-std}/src/lib.rs | 0 core/{runtime-std => sr-std}/with_std.rs | 0 core/{runtime-std => sr-std}/without_std.rs | 0 .../Cargo.toml | 6 +- .../src/lib.rs | 2 +- core/test-client/Cargo.toml | 2 +- core/test-client/src/lib.rs | 2 +- core/test-runtime/Cargo.toml | 16 +- core/test-runtime/src/lib.rs | 8 +- core/test-runtime/wasm/Cargo.lock | 163 +++++----- core/test-runtime/wasm/Cargo.toml | 16 +- doc/packages/substrate.adoc | 6 +- node/consensus/Cargo.toml | 2 +- node/consensus/src/lib.rs | 2 +- node/executor/Cargo.toml | 4 +- node/executor/src/lib.rs | 4 +- node/primitives/Cargo.toml | 8 +- node/primitives/src/lib.rs | 4 +- node/runtime/Cargo.toml | 16 +- node/runtime/src/lib.rs | 8 +- node/runtime/wasm/Cargo.lock | 214 ++++++------- node/runtime/wasm/Cargo.toml | 16 +- node/service/Cargo.toml | 2 +- node/transaction-pool/Cargo.toml | 2 +- node/transaction-pool/src/lib.rs | 4 +- 108 files changed, 609 insertions(+), 614 deletions(-) rename core/{runtime-io => sr-io}/Cargo.toml (85%) rename core/{runtime-io => sr-io}/README.adoc (100%) rename core/{runtime-io => sr-io}/build.rs (100%) rename core/{runtime-io => sr-io}/src/lib.rs (100%) rename core/{runtime-io => sr-io}/with_std.rs (100%) rename core/{runtime-io => sr-io}/without_std.rs (99%) rename core/{runtime-primitives => sr-primitives}/Cargo.toml (76%) rename core/{runtime-primitives => sr-primitives}/src/bft.rs (100%) rename core/{runtime-primitives => sr-primitives}/src/generic/block.rs (100%) rename core/{runtime-primitives => sr-primitives}/src/generic/checked_extrinsic.rs (100%) rename core/{runtime-primitives => sr-primitives}/src/generic/digest.rs (100%) rename core/{runtime-primitives => sr-primitives}/src/generic/header.rs (100%) rename core/{runtime-primitives => sr-primitives}/src/generic/mod.rs (100%) rename core/{runtime-primitives => sr-primitives}/src/generic/tests.rs (100%) rename core/{runtime-primitives => sr-primitives}/src/generic/unchecked_extrinsic.rs (100%) rename core/{runtime-primitives => sr-primitives}/src/lib.rs (99%) rename core/{runtime-primitives => sr-primitives}/src/testing.rs (100%) rename core/{runtime-primitives => sr-primitives}/src/traits.rs (100%) rename core/{runtime-sandbox => sr-sandbox}/Cargo.toml (68%) rename core/{runtime-sandbox => sr-sandbox}/README.adoc (100%) rename core/{runtime-sandbox => sr-sandbox}/build.rs (100%) rename core/{runtime-sandbox => sr-sandbox}/src/lib.rs (98%) rename core/{runtime-sandbox => sr-sandbox}/with_std.rs (100%) rename core/{runtime-sandbox => sr-sandbox}/without_std.rs (100%) rename core/{runtime-std => sr-std}/Cargo.toml (90%) rename core/{runtime-std => sr-std}/README.adoc (100%) rename core/{runtime-std => sr-std}/build.rs (100%) rename core/{runtime-std => sr-std}/src/lib.rs (100%) rename core/{runtime-std => sr-std}/with_std.rs (100%) rename core/{runtime-std => sr-std}/without_std.rs (100%) rename core/{runtime-version => sr-version}/Cargo.toml (75%) rename core/{runtime-version => sr-version}/src/lib.rs (99%) diff --git a/Cargo.lock b/Cargo.lock index 2ef94bcddcef9..1832338d0506a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1535,11 +1535,11 @@ dependencies = [ "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-bft 0.1.0", "substrate-client 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1551,13 +1551,13 @@ dependencies = [ "node-primitives 0.1.0", "node-runtime 0.1.0", "parity-codec 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-runtime-session 0.1.0", "substrate-runtime-staking 0.1.0", "substrate-runtime-support 0.1.0", @@ -1593,9 +1593,9 @@ dependencies = [ "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-serializer 0.1.0", ] @@ -1612,6 +1612,10 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", @@ -1620,16 +1624,12 @@ dependencies = [ "substrate-runtime-council 0.1.0", "substrate-runtime-democracy 0.1.0", "substrate-runtime-executive 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-runtime-session 0.1.0", "substrate-runtime-staking 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", "substrate-runtime-timestamp 0.1.0", "substrate-runtime-treasury 0.1.0", - "substrate-runtime-version 0.1.0", ] [[package]] @@ -1649,10 +1649,10 @@ dependencies = [ "node-transaction-pool 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", "substrate-client 0.1.0", "substrate-network 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", "substrate-service 0.3.0", "substrate-telemetry 0.3.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1669,11 +1669,11 @@ dependencies = [ "node-runtime 0.1.0", "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-extrinsic-pool 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", ] [[package]] @@ -2399,6 +2399,72 @@ dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "sr-io" +version = "0.1.0" +dependencies = [ + "environmental 0.1.0", + "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", + "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-primitives" +version = "0.1.0" +dependencies = [ + "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "sr-sandbox" +version = "0.1.0" +dependencies = [ + "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", + "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-std" +version = "0.1.0" +dependencies = [ + "pwasm-alloc 0.1.0", + "pwasm-libc 0.1.0", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-version" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", +] + [[package]] name = "stable_deref_trait" version = "1.0.0" @@ -2443,11 +2509,11 @@ dependencies = [ "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-version 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-version 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2470,10 +2536,10 @@ dependencies = [ "names 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-network 0.1.0", "substrate-network-libp2p 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-service 0.3.0", "substrate-telemetry 0.3.0", "sysinfo 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2497,13 +2563,13 @@ dependencies = [ "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", "substrate-bft 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-metadata 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-state-machine 0.1.0", "substrate-telemetry 0.3.0", "substrate-test-client 0.1.0", @@ -2523,10 +2589,10 @@ dependencies = [ "parity-codec 0.1.0", "parity-codec-derive 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-executor 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-state-db 0.1.0", "substrate-state-machine 0.1.0", ] @@ -2546,9 +2612,9 @@ dependencies = [ "parking_lot 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-version 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-version 0.1.0", "substrate-serializer 0.1.0", "substrate-state-machine 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2568,8 +2634,8 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-keyring 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-test-client 0.1.0", "transaction-pool 1.13.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2612,11 +2678,11 @@ version = "0.1.0" dependencies = [ "parity-codec 0.1.0", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", "substrate-bft 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", ] [[package]] @@ -2634,11 +2700,11 @@ dependencies = [ "parity-codec-derive 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-keyring 0.1.0", "substrate-network-libp2p 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-test-client 0.1.0", ] @@ -2693,7 +2759,7 @@ dependencies = [ "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-runtime-std 0.1.0", + "sr-std 0.1.0", "substrate-serializer 0.1.0", "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2715,12 +2781,12 @@ dependencies = [ "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-version 0.1.0", "substrate-client 0.1.0", "substrate-executor 0.1.0", "substrate-extrinsic-pool 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-version 0.1.0", "substrate-state-machine 0.1.0", "substrate-test-client 0.1.0", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2736,8 +2802,8 @@ dependencies = [ "jsonrpc-ws-server 8.0.0 (git+https://github.com/paritytech/jsonrpc.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-rpc 0.1.0", - "substrate-runtime-primitives 0.1.0", ] [[package]] @@ -2750,11 +2816,11 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -2768,10 +2834,10 @@ dependencies = [ "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -2786,12 +2852,12 @@ dependencies = [ "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-sandbox 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2808,14 +2874,14 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", "substrate-runtime-democracy 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -2830,12 +2896,12 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -2849,11 +2915,11 @@ dependencies = [ "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -2867,61 +2933,15 @@ dependencies = [ "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] -[[package]] -name = "substrate-runtime-io" -version = "0.1.0" -dependencies = [ - "environmental 0.1.0", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-state-machine 0.1.0", - "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-primitives" -version = "0.1.0" -dependencies = [ - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", -] - -[[package]] -name = "substrate-runtime-sandbox" -version = "0.1.0" -dependencies = [ - "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", - "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-runtime-session" version = "0.1.0" @@ -2932,12 +2952,12 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", "substrate-runtime-timestamp 0.1.0", @@ -2953,29 +2973,20 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-sandbox 0.1.0", "substrate-runtime-session 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", "substrate-runtime-timestamp 0.1.0", ] -[[package]] -name = "substrate-runtime-std" -version = "0.1.0" -dependencies = [ - "pwasm-alloc 0.1.0", - "pwasm-libc 0.1.0", - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-runtime-support" version = "0.1.0" @@ -2987,10 +2998,10 @@ dependencies = [ "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", "substrate-metadata 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", ] [[package]] @@ -3003,10 +3014,10 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", ] @@ -3018,11 +3029,11 @@ dependencies = [ "parity-codec 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -3036,26 +3047,15 @@ dependencies = [ "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] -[[package]] -name = "substrate-runtime-version" -version = "0.1.0" -dependencies = [ - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-runtime-std 0.1.0", -] - [[package]] name = "substrate-serializer" version = "0.1.0" @@ -3079,6 +3079,8 @@ dependencies = [ "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", "substrate-client 0.1.0", "substrate-client-db 0.1.0", "substrate-executor 0.1.0", @@ -3088,8 +3090,6 @@ dependencies = [ "substrate-primitives 0.1.0", "substrate-rpc 0.1.0", "substrate-rpc-servers 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-telemetry 0.3.0", "target_info 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3146,12 +3146,12 @@ dependencies = [ "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", "substrate-bft 0.1.0", "substrate-client 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-runtime-support 0.1.0", "substrate-test-runtime 0.1.0", ] @@ -3166,13 +3166,13 @@ dependencies = [ "parity-codec-derive 0.1.0", "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", - "substrate-runtime-version 0.1.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e95128ceae036..73b86baf94aa9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,10 +16,10 @@ members = [ "core/primitives", "core/rpc", "core/rpc-servers", - "core/runtime-io", - "core/runtime-sandbox", - "core/runtime-std", - "core/runtime-version", + "core/sr-io", + "core/sr-sandbox", + "core/sr-std", + "core/sr-version", "core/runtime/support", "core/runtime/balances", "core/runtime/consensus", @@ -28,7 +28,7 @@ members = [ "core/runtime/democracy", "core/runtime/example", "core/runtime/executive", - "core/runtime-primitives", + "core/sr-primitives", "core/runtime/session", "core/runtime/staking", "core/runtime/system", diff --git a/core/bft/Cargo.toml b/core/bft/Cargo.toml index 30bdc08f37a4f..96e1c6a523c36 100644 --- a/core/bft/Cargo.toml +++ b/core/bft/Cargo.toml @@ -7,8 +7,8 @@ authors = ["Parity Technologies "] futures = "0.1.17" parity-codec = { path = "../../codec" } substrate-primitives = { path = "../primitives" } -substrate-runtime-primitives = { path = "../runtime-primitives" } -substrate-runtime-version = { path = "../runtime-version" } +sr-primitives = { path = "../sr-primitives" } +sr-version = { path = "../sr-version" } tokio = "0.1.7" parking_lot = "0.4" error-chain = "0.12" diff --git a/core/bft/src/lib.rs b/core/bft/src/lib.rs index e2c55955c9342..469f9710a3849 100644 --- a/core/bft/src/lib.rs +++ b/core/bft/src/lib.rs @@ -38,8 +38,8 @@ pub mod error; extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_primitives as runtime_primitives; -extern crate substrate_runtime_version as runtime_version; +extern crate sr_primitives as runtime_primitives; +extern crate sr_version as runtime_version; extern crate tokio; extern crate parking_lot; extern crate rhododendron; diff --git a/core/cli/Cargo.toml b/core/cli/Cargo.toml index d3e78a78f2564..23107218e2f1a 100644 --- a/core/cli/Cargo.toml +++ b/core/cli/Cargo.toml @@ -26,7 +26,7 @@ sysinfo = "0.5.7" substrate-client = { path = "../../core/client" } substrate-network = { path = "../../core/network" } substrate-network-libp2p = { path = "../../core/network-libp2p" } -substrate-runtime-primitives = { path = "../../core/runtime-primitives" } +sr-primitives = { path = "../../core/sr-primitives" } substrate-service = { path = "../../core/service" } substrate-telemetry = { path = "../../core/telemetry" } names = "0.11.0" diff --git a/core/cli/src/lib.rs b/core/cli/src/lib.rs index 94d8849b05b35..199f3688ec036 100644 --- a/core/cli/src/lib.rs +++ b/core/cli/src/lib.rs @@ -37,7 +37,7 @@ extern crate sysinfo; extern crate substrate_client as client; extern crate substrate_network as network; extern crate substrate_network_libp2p as network_libp2p; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_service as service; #[macro_use] extern crate slog; // needed until we can reexport `slog_info` from `substrate_telemetry` diff --git a/core/client/Cargo.toml b/core/client/Cargo.toml index a2ab4a8d397f3..ab26b99cd0d65 100644 --- a/core/client/Cargo.toml +++ b/core/client/Cargo.toml @@ -17,9 +17,9 @@ substrate-bft = { path = "../bft" } parity-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-primitives = { path = "../primitives" } -substrate-runtime-io = { path = "../runtime-io" } +sr-io = { path = "../sr-io" } substrate-metadata = { path = "../metadata" } -substrate-runtime-primitives = { path = "../runtime-primitives" } +sr-primitives = { path = "../sr-primitives" } substrate-state-machine = { path = "../state-machine" } substrate-keyring = { path = "../../core/keyring" } substrate-telemetry = { path = "../telemetry" } diff --git a/core/client/db/Cargo.toml b/core/client/db/Cargo.toml index c9f9f4f24fee0..cb69ed4856b1e 100644 --- a/core/client/db/Cargo.toml +++ b/core/client/db/Cargo.toml @@ -11,7 +11,7 @@ kvdb-rocksdb = "0.1.3" hashdb = "0.2.1" memorydb = "0.2.1" substrate-primitives = { path = "../../../core/primitives" } -substrate-runtime-primitives = { path = "../../../core/runtime-primitives" } +sr-primitives = { path = "../../../core/sr-primitives" } substrate-client = { path = "../../../core/client" } substrate-state-machine = { path = "../../../core/state-machine" } parity-codec = { path = "../../../codec" } diff --git a/core/client/db/src/lib.rs b/core/client/db/src/lib.rs index 34de8b43cb629..0871b0cfe9170 100644 --- a/core/client/db/src/lib.rs +++ b/core/client/db/src/lib.rs @@ -26,7 +26,7 @@ extern crate memorydb; extern crate parking_lot; extern crate substrate_state_machine as state_machine; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate parity_codec as codec; extern crate substrate_executor as executor; extern crate substrate_state_db as state_db; diff --git a/core/client/src/lib.rs b/core/client/src/lib.rs index 4d1ba136191b4..fdf8c3c22bc4e 100644 --- a/core/client/src/lib.rs +++ b/core/client/src/lib.rs @@ -23,8 +23,8 @@ extern crate substrate_bft as bft; extern crate parity_codec as codec; extern crate substrate_metadata; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_io as runtime_io; +extern crate sr_primitives as runtime_primitives; extern crate substrate_state_machine as state_machine; #[cfg(test)] extern crate substrate_keyring as keyring; #[cfg(test)] extern crate substrate_test_client as test_client; diff --git a/core/executor/Cargo.toml b/core/executor/Cargo.toml index c3a49cbc0fe24..9ed88a215ed9c 100644 --- a/core/executor/Cargo.toml +++ b/core/executor/Cargo.toml @@ -6,11 +6,11 @@ authors = ["Parity Technologies "] [dependencies] error-chain = "0.12" parity-codec = { path = "../../codec" } -substrate-runtime-io = { path = "../runtime-io" } +sr-io = { path = "../sr-io" } substrate-primitives = { path = "../primitives" } substrate-serializer = { path = "../serializer" } substrate-state-machine = { path = "../state-machine" } -substrate-runtime-version = { path = "../runtime-version" } +sr-version = { path = "../sr-version" } serde = "1.0" serde_derive = "1.0" wasmi = "0.4" diff --git a/core/executor/src/lib.rs b/core/executor/src/lib.rs index 024c16a3a6622..02cdf65c903ce 100644 --- a/core/executor/src/lib.rs +++ b/core/executor/src/lib.rs @@ -31,11 +31,11 @@ #![recursion_limit="128"] extern crate parity_codec as codec; -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; extern crate substrate_primitives as primitives; extern crate substrate_serializer as serializer; extern crate substrate_state_machine as state_machine; -extern crate substrate_runtime_version as runtime_version; +extern crate sr_version as runtime_version; extern crate serde; extern crate wasmi; diff --git a/core/executor/src/wasm_executor.rs b/core/executor/src/wasm_executor.rs index 7a7707dc9d7bb..70d02d01891c5 100644 --- a/core/executor/src/wasm_executor.rs +++ b/core/executor/src/wasm_executor.rs @@ -173,29 +173,29 @@ impl_function_executor!(this: FunctionExecutor<'e, E>, ext_memcpy(dest: *mut u8, src: *const u8, count: usize) -> *mut u8 => { this.memory.copy_nonoverlapping(src as usize, dest as usize, count as usize) .map_err(|_| UserError("Invalid attempt to copy_nonoverlapping in ext_memcpy"))?; - debug_trace!(target: "runtime-io", "memcpy {} from {}, {} bytes", dest, src, count); + debug_trace!(target: "sr-io", "memcpy {} from {}, {} bytes", dest, src, count); Ok(dest) }, ext_memmove(dest: *mut u8, src: *const u8, count: usize) -> *mut u8 => { this.memory.copy(src as usize, dest as usize, count as usize) .map_err(|_| UserError("Invalid attempt to copy in ext_memmove"))?; - debug_trace!(target: "runtime-io", "memmove {} from {}, {} bytes", dest, src, count); + debug_trace!(target: "sr-io", "memmove {} from {}, {} bytes", dest, src, count); Ok(dest) }, ext_memset(dest: *mut u8, val: u32, count: usize) -> *mut u8 => { - debug_trace!(target: "runtime-io", "memset {} with {}, {} bytes", dest, val, count); + debug_trace!(target: "sr-io", "memset {} with {}, {} bytes", dest, val, count); this.memory.clear(dest as usize, val as u8, count as usize) .map_err(|_| UserError("Invalid attempt to clear in ext_memset"))?; Ok(dest) }, ext_malloc(size: usize) -> *mut u8 => { let r = this.heap.allocate(size); - debug_trace!(target: "runtime-io", "malloc {} bytes at {}", size, r); + debug_trace!(target: "sr-io", "malloc {} bytes at {}", size, r); Ok(r) }, ext_free(addr: *mut u8) => { this.heap.deallocate(addr); - debug_trace!(target: "runtime-io", "free {}", addr); + debug_trace!(target: "sr-io", "free {}", addr); Ok(()) }, ext_set_storage(key_data: *const u8, key_len: u32, value_data: *const u8, value_len: u32) => { @@ -389,7 +389,7 @@ impl_function_executor!(this: FunctionExecutor<'e, E>, ext_sandbox_invoke(instance_idx: u32, export_ptr: *const u8, export_len: usize, args_ptr: *const u8, args_len: usize, return_val_ptr: *const u8, return_val_len: usize, state: usize) -> u32 => { use codec::{Decode, Encode}; - trace!(target: "runtime-sandbox", "invoke, instance_idx={}", instance_idx); + trace!(target: "sr-sandbox", "invoke, instance_idx={}", instance_idx); let export = this.memory.get(export_ptr, export_len as usize) .map_err(|_| UserError("Sandbox error")) .and_then(|b| diff --git a/core/executor/wasm/Cargo.lock b/core/executor/wasm/Cargo.lock index 5104d0a7f6402..9ae42e7b30242 100644 --- a/core/executor/wasm/Cargo.lock +++ b/core/executor/wasm/Cargo.lock @@ -87,9 +87,9 @@ dependencies = [ name = "runtime-test" version = "0.1.0" dependencies = [ + "sr-io 0.1.0", + "sr-sandbox 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-sandbox 0.1.0", ] [[package]] @@ -124,51 +124,51 @@ version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "substrate-primitives" +name = "sr-io" version = "0.1.0" dependencies = [ - "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-runtime-std 0.1.0", - "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] -name = "substrate-runtime-io" +name = "sr-sandbox" version = "0.1.0" dependencies = [ - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-std 0.1.0", ] [[package]] -name = "substrate-runtime-sandbox" +name = "sr-std" version = "0.1.0" dependencies = [ - "parity-codec 0.1.0", + "pwasm-alloc 0.1.0", + "pwasm-libc 0.1.0", "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", ] [[package]] -name = "substrate-runtime-std" +name = "substrate-primitives" version = "0.1.0" dependencies = [ - "pwasm-alloc 0.1.0", - "pwasm-libc 0.1.0", - "rustc_version 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.27 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/core/executor/wasm/Cargo.toml b/core/executor/wasm/Cargo.toml index 44e0dafe5d995..6c650e9463015 100644 --- a/core/executor/wasm/Cargo.toml +++ b/core/executor/wasm/Cargo.toml @@ -7,8 +7,8 @@ authors = ["Parity Technologies "] crate-type = ["cdylib"] [dependencies] -substrate-runtime-io = { path = "../../runtime-io", version = "0.1", default_features = false } -substrate-runtime-sandbox = { path = "../../runtime-sandbox", version = "0.1", default_features = false } +sr-io = { path = "../../sr-io", version = "0.1", default_features = false } +sr-sandbox = { path = "../../sr-sandbox", version = "0.1", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } [profile.release] diff --git a/core/executor/wasm/src/lib.rs b/core/executor/wasm/src/lib.rs index 3046fd1f166ca..3bec626091f9e 100644 --- a/core/executor/wasm/src/lib.rs +++ b/core/executor/wasm/src/lib.rs @@ -7,8 +7,8 @@ extern crate alloc; use alloc::vec::Vec; #[macro_use] -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_sandbox as sandbox; +extern crate sr_io as runtime_io; +extern crate sr_sandbox as sandbox; extern crate substrate_primitives; use runtime_io::{ diff --git a/core/extrinsic-pool/Cargo.toml b/core/extrinsic-pool/Cargo.toml index f0fbf11a75694..9de07854a2e53 100644 --- a/core/extrinsic-pool/Cargo.toml +++ b/core/extrinsic-pool/Cargo.toml @@ -11,7 +11,7 @@ futures = "0.1" log = "0.3" parking_lot = "0.4" transaction-pool = "1.13.2" -substrate-runtime-primitives = { path = "../../core/runtime-primitives" } +sr-primitives = { path = "../../core/sr-primitives" } [dev-dependencies] substrate-test-client = { path = "../../core/test-client" } diff --git a/core/extrinsic-pool/src/lib.rs b/core/extrinsic-pool/src/lib.rs index d31dd18766b28..f7c6c4bfd2f26 100644 --- a/core/extrinsic-pool/src/lib.rs +++ b/core/extrinsic-pool/src/lib.rs @@ -23,7 +23,7 @@ extern crate futures; extern crate parking_lot; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; #[macro_use] extern crate log; diff --git a/core/misbehavior-check/Cargo.toml b/core/misbehavior-check/Cargo.toml index 07fb957a6118d..3ae60d2d30f2f 100644 --- a/core/misbehavior-check/Cargo.toml +++ b/core/misbehavior-check/Cargo.toml @@ -6,8 +6,8 @@ authors = ["Parity Technologies "] [dependencies] parity-codec = { path = "../../codec", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } -substrate-runtime-primitives = { path = "../runtime-primitives", default-features = false } -substrate-runtime-io = { path = "../runtime-io", default-features = false } +sr-primitives = { path = "../sr-primitives", default-features = false } +sr-io = { path = "../sr-io", default-features = false } [dev-dependencies] substrate-bft = { path = "../bft" } @@ -16,4 +16,4 @@ substrate-keyring = { path = "../keyring" } [features] default = ["std"] -std = ["parity-codec/std", "substrate-primitives/std", "substrate-runtime-primitives/std", "substrate-runtime-io/std"] +std = ["parity-codec/std", "substrate-primitives/std", "sr-primitives/std", "sr-io/std"] diff --git a/core/misbehavior-check/src/lib.rs b/core/misbehavior-check/src/lib.rs index a5ae19675b166..69ddb525400d3 100644 --- a/core/misbehavior-check/src/lib.rs +++ b/core/misbehavior-check/src/lib.rs @@ -22,8 +22,8 @@ extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_io as runtime_io; +extern crate sr_primitives as runtime_primitives; #[cfg(test)] extern crate substrate_bft; diff --git a/core/network/Cargo.toml b/core/network/Cargo.toml index 312923eecd0f9..0e4364b1ff967 100644 --- a/core/network/Cargo.toml +++ b/core/network/Cargo.toml @@ -18,7 +18,7 @@ rustc-hex = "1.0" ethcore-io = { git = "https://github.com/paritytech/parity.git" } substrate-primitives = { path = "../../core/primitives" } substrate-client = { path = "../../core/client" } -substrate-runtime-primitives = { path = "../../core/runtime-primitives" } +sr-primitives = { path = "../../core/sr-primitives" } parity-codec = { path = "../../codec" } parity-codec-derive = { path = "../../codec/derive" } substrate-network-libp2p = { path = "../../core/network-libp2p" } diff --git a/core/network/src/lib.rs b/core/network/src/lib.rs index 246e39c939375..996504889dc9d 100644 --- a/core/network/src/lib.rs +++ b/core/network/src/lib.rs @@ -27,7 +27,7 @@ extern crate linked_hash_map; extern crate parking_lot; extern crate substrate_primitives as primitives; extern crate substrate_client as client; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_network_libp2p as network_libp2p; extern crate parity_codec as codec; extern crate futures; diff --git a/core/primitives/Cargo.toml b/core/primitives/Cargo.toml index c09dc8ea7a4e2..5b28fcfb3e463 100644 --- a/core/primitives/Cargo.toml +++ b/core/primitives/Cargo.toml @@ -5,7 +5,7 @@ authors = ["Parity Technologies "] [dependencies] crunchy = "0.1" -substrate-runtime-std = { path = "../runtime-std", default_features = false } +sr-std = { path = "../sr-std", default_features = false } parity-codec = { path = "../../codec", default_features = false } parity-codec-derive = { path = "../../codec/derive", default_features = false } elastic-array = {version = "0.10", optional = true } @@ -41,7 +41,7 @@ std = [ "fixed-hash/heapsizeof", "fixed-hash/libc", "parity-codec/std", - "substrate-runtime-std/std", + "sr-std/std", "serde/std", "rustc-hex/std", "twox-hash", diff --git a/core/primitives/src/lib.rs b/core/primitives/src/lib.rs index 0f4284b027314..c5fc9c07f62ce 100644 --- a/core/primitives/src/lib.rs +++ b/core/primitives/src/lib.rs @@ -69,7 +69,7 @@ extern crate patricia_trie; #[cfg(feature = "std")] extern crate elastic_array; -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[cfg(test)] extern crate substrate_serializer; diff --git a/core/rpc-servers/Cargo.toml b/core/rpc-servers/Cargo.toml index 08de43147cb57..56a9c62006b21 100644 --- a/core/rpc-servers/Cargo.toml +++ b/core/rpc-servers/Cargo.toml @@ -11,4 +11,4 @@ jsonrpc-ws-server = { git = "https://github.com/paritytech/jsonrpc.git" } log = "0.3" serde = "1.0" substrate-rpc = { path = "../rpc", version = "0.1" } -substrate-runtime-primitives = { path = "../runtime-primitives" } +sr-primitives = { path = "../sr-primitives" } diff --git a/core/rpc-servers/src/lib.rs b/core/rpc-servers/src/lib.rs index 6139d32aec963..8d9620535c7bf 100644 --- a/core/rpc-servers/src/lib.rs +++ b/core/rpc-servers/src/lib.rs @@ -27,13 +27,13 @@ extern crate jsonrpc_http_server as http; extern crate jsonrpc_pubsub as pubsub; extern crate jsonrpc_ws_server as ws; extern crate serde; -extern crate substrate_runtime_primitives; +extern crate sr_primitives; #[macro_use] extern crate log; use std::io; -use substrate_runtime_primitives::traits::{Block as BlockT, NumberFor}; +use sr_primitives::traits::{Block as BlockT, NumberFor}; type Metadata = apis::metadata::Metadata; type RpcHandler = pubsub::PubSubHandler; @@ -48,7 +48,7 @@ pub fn rpc_handler( system: Y, ) -> RpcHandler where Block: BlockT + 'static, - ExHash: Send + Sync + 'static + substrate_runtime_primitives::Serialize + substrate_runtime_primitives::DeserializeOwned, + ExHash: Send + Sync + 'static + sr_primitives::Serialize + sr_primitives::DeserializeOwned, PendingExtrinsics: serde::Serialize + serde::de::DeserializeOwned + Send + Sync + 'static, S: apis::state::StateApi, C: apis::chain::ChainApi, Block::Extrinsic, Metadata=Metadata>, diff --git a/core/rpc/Cargo.toml b/core/rpc/Cargo.toml index fd1d368f4196a..3caf7a84b6adb 100644 --- a/core/rpc/Cargo.toml +++ b/core/rpc/Cargo.toml @@ -15,8 +15,8 @@ substrate-client = { path = "../client" } substrate-executor = { path = "../executor" } substrate-extrinsic-pool = { path = "../extrinsic-pool" } substrate-primitives = { path = "../primitives" } -substrate-runtime-primitives = { path = "../runtime-primitives" } -substrate-runtime-version = { path = "../runtime-version" } +sr-primitives = { path = "../sr-primitives" } +sr-version = { path = "../sr-version" } substrate-state-machine = { path = "../state-machine" } tokio = "0.1.7" serde_json = "1.0" diff --git a/core/rpc/src/lib.rs b/core/rpc/src/lib.rs index dbba9a79a21bd..a62c78955134a 100644 --- a/core/rpc/src/lib.rs +++ b/core/rpc/src/lib.rs @@ -27,9 +27,9 @@ extern crate parity_codec as codec; extern crate substrate_client as client; extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_state_machine as state_machine; -extern crate substrate_runtime_version as runtime_version; +extern crate sr_version as runtime_version; extern crate tokio; extern crate serde_json; diff --git a/core/runtime/balances/Cargo.toml b/core/runtime/balances/Cargo.toml index 3a61187c6bf63..66111da04320f 100644 --- a/core/runtime/balances/Cargo.toml +++ b/core/runtime/balances/Cargo.toml @@ -12,10 +12,10 @@ substrate-keyring = { path = "../../keyring", optional = true } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } [features] @@ -28,9 +28,9 @@ std = [ "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-system/std", ] diff --git a/core/runtime/balances/src/lib.rs b/core/runtime/balances/src/lib.rs index a85727a0e6424..fb67fc6126269 100644 --- a/core/runtime/balances/src/lib.rs +++ b/core/runtime/balances/src/lib.rs @@ -29,15 +29,15 @@ extern crate serde_derive; extern crate substrate_runtime_support as runtime_support; #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] extern crate parity_codec_derive; extern crate parity_codec as codec; extern crate substrate_primitives; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; extern crate substrate_runtime_system as system; use rstd::prelude::*; diff --git a/core/runtime/consensus/Cargo.toml b/core/runtime/consensus/Cargo.toml index 339c031853b2b..a43bea440ec8d 100644 --- a/core/runtime/consensus/Cargo.toml +++ b/core/runtime/consensus/Cargo.toml @@ -10,10 +10,10 @@ serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } [features] @@ -24,9 +24,9 @@ std = [ "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-system/std", ] diff --git a/core/runtime/consensus/src/lib.rs b/core/runtime/consensus/src/lib.rs index 3e3b242ceb91f..60438bf37b80b 100644 --- a/core/runtime/consensus/src/lib.rs +++ b/core/runtime/consensus/src/lib.rs @@ -20,7 +20,7 @@ #[allow(unused_imports)] #[macro_use] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] extern crate substrate_runtime_support as runtime_support; @@ -35,8 +35,8 @@ extern crate serde_derive; #[macro_use] extern crate parity_codec_derive; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; extern crate parity_codec as codec; extern crate substrate_runtime_system as system; extern crate substrate_primitives; diff --git a/core/runtime/contract/Cargo.toml b/core/runtime/contract/Cargo.toml index fd9cf57dc6353..80c6fd6763c83 100644 --- a/core/runtime/contract/Cargo.toml +++ b/core/runtime/contract/Cargo.toml @@ -8,10 +8,10 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-sandbox = { path = "../../runtime-sandbox", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-sandbox = { path = "../../sr-sandbox", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } substrate-runtime-system = { path = "../../runtime/system", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } @@ -29,11 +29,11 @@ std = [ "serde/std", "parity-codec/std", "substrate-primitives/std", - "substrate-runtime-primitives/std", - "substrate-runtime-io/std", - "substrate-runtime-std/std", + "sr-primitives/std", + "sr-io/std", + "sr-std/std", "substrate-runtime-balances/std", - "substrate-runtime-sandbox/std", + "sr-sandbox/std", "substrate-runtime-support/std", "substrate-runtime-system/std", "parity-wasm/std", diff --git a/core/runtime/contract/src/lib.rs b/core/runtime/contract/src/lib.rs index 26c443235b2d4..962c63dedf38a 100644 --- a/core/runtime/contract/src/lib.rs +++ b/core/runtime/contract/src/lib.rs @@ -63,11 +63,11 @@ extern crate parity_wasm; extern crate pwasm_utils; extern crate parity_codec as codec; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_sandbox as sandbox; +extern crate sr_io as runtime_io; +extern crate sr_sandbox as sandbox; #[macro_use] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; extern crate substrate_runtime_balances as balances; extern crate substrate_runtime_system as system; @@ -75,7 +75,7 @@ extern crate substrate_runtime_system as system; #[macro_use] extern crate substrate_runtime_support as runtime_support; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_primitives; #[cfg(test)] diff --git a/core/runtime/council/Cargo.toml b/core/runtime/council/Cargo.toml index 6ae5ed0c1a1f6..0afe44ef36db0 100644 --- a/core/runtime/council/Cargo.toml +++ b/core/runtime/council/Cargo.toml @@ -13,10 +13,10 @@ substrate-keyring = { path = "../../keyring", optional = true } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-democracy = { path = "../democracy", default_features = false } @@ -32,10 +32,10 @@ std = [ "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-consensus/std", "substrate-runtime-balances/std", "substrate-runtime-democracy/std", diff --git a/core/runtime/council/src/lib.rs b/core/runtime/council/src/lib.rs index b62845b591067..fd4d11b6dd89e 100644 --- a/core/runtime/council/src/lib.rs +++ b/core/runtime/council/src/lib.rs @@ -34,10 +34,10 @@ extern crate parity_codec as codec; #[macro_use] extern crate parity_codec_derive; extern crate substrate_primitives; #[cfg(feature = "std")] extern crate substrate_keyring as keyring; -#[macro_use] extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_io as runtime_io; +#[macro_use] extern crate sr_std as rstd; +extern crate sr_io as runtime_io; #[macro_use] extern crate substrate_runtime_support; -extern crate substrate_runtime_primitives as primitives; +extern crate sr_primitives as primitives; extern crate substrate_runtime_balances as balances; extern crate substrate_runtime_democracy as democracy; extern crate substrate_runtime_system as system; diff --git a/core/runtime/democracy/Cargo.toml b/core/runtime/democracy/Cargo.toml index 2f2b5ae839bec..c7fc9e96aec1e 100644 --- a/core/runtime/democracy/Cargo.toml +++ b/core/runtime/democracy/Cargo.toml @@ -11,10 +11,10 @@ safe-mix = { version = "1.0", default_features = false} parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } @@ -27,10 +27,10 @@ std = [ "safe-mix/std", "parity-codec/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-consensus/std", "substrate-runtime-balances/std", "substrate-runtime-system/std", diff --git a/core/runtime/democracy/src/lib.rs b/core/runtime/democracy/src/lib.rs index ed2aa7fe87d3f..13ad74be50e2c 100644 --- a/core/runtime/democracy/src/lib.rs +++ b/core/runtime/democracy/src/lib.rs @@ -31,13 +31,13 @@ extern crate serde_derive; #[macro_use] extern crate parity_codec_derive; #[macro_use] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] extern crate substrate_runtime_support; extern crate parity_codec as codec; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; extern crate substrate_runtime_balances as balances; extern crate substrate_runtime_system as system; diff --git a/core/runtime/example/Cargo.toml b/core/runtime/example/Cargo.toml index 12d7efd9b109b..7f3245ba9befc 100644 --- a/core/runtime/example/Cargo.toml +++ b/core/runtime/example/Cargo.toml @@ -7,10 +7,10 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } @@ -20,10 +20,10 @@ substrate-runtime-balances = { path = "../balances", default_features = false } [features] default = ["std"] std = [ - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-balances/std", "serde/std", "serde_derive", diff --git a/core/runtime/example/src/lib.rs b/core/runtime/example/src/lib.rs index 5e88c8b146e43..baa93146c031f 100644 --- a/core/runtime/example/src/lib.rs +++ b/core/runtime/example/src/lib.rs @@ -22,11 +22,11 @@ // Assert macros used in tests. #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std; +extern crate sr_std; // Needed for tests (`with_externalities`). #[cfg(test)] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; // Needed for the set of mock primitives used in our tests. #[cfg(test)] @@ -49,7 +49,7 @@ extern crate parity_codec as codec; extern crate substrate_runtime_support as runtime_support; // Needed for various traits. In our case, `OnFinalise`. -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; // `system` module provides us with all sorts of useful stuff and macros // depend on it being around. extern crate substrate_runtime_system as system; diff --git a/core/runtime/executive/Cargo.toml b/core/runtime/executive/Cargo.toml index f65379991bc83..120180a7e422e 100644 --- a/core/runtime/executive/Cargo.toml +++ b/core/runtime/executive/Cargo.toml @@ -8,10 +8,10 @@ hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../../codec", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } [dev-dependencies] @@ -22,12 +22,12 @@ parity-codec-derive = { path = "../../../codec/derive" } [features] default = ["std"] std = [ - "substrate-runtime-std/std", + "sr-std/std", "substrate-runtime-support/std", "serde/std", "serde_derive", "parity-codec/std", - "substrate-runtime-primitives/std", - "substrate-runtime-io/std", + "sr-primitives/std", + "sr-io/std", "substrate-runtime-system/std", ] diff --git a/core/runtime/executive/src/lib.rs b/core/runtime/executive/src/lib.rs index f3366674503fc..1bcf321ce1cd9 100644 --- a/core/runtime/executive/src/lib.rs +++ b/core/runtime/executive/src/lib.rs @@ -31,10 +31,10 @@ extern crate parity_codec_derive; #[cfg_attr(test, macro_use)] extern crate substrate_runtime_support as runtime_support; -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_io as runtime_io; +extern crate sr_std as rstd; +extern crate sr_io as runtime_io; extern crate parity_codec as codec; -extern crate substrate_runtime_primitives as primitives; +extern crate sr_primitives as primitives; extern crate substrate_runtime_system as system; #[cfg(test)] diff --git a/core/runtime/session/Cargo.toml b/core/runtime/session/Cargo.toml index a2fa249153b65..53f68252a5de6 100644 --- a/core/runtime/session/Cargo.toml +++ b/core/runtime/session/Cargo.toml @@ -12,10 +12,10 @@ substrate-keyring = { path = "../../keyring", optional = true } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } substrate-runtime-timestamp = { path = "../timestamp", default_features = false } @@ -30,10 +30,10 @@ std = [ "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-consensus/std", "substrate-runtime-system/std", "substrate-runtime-timestamp/std" diff --git a/core/runtime/session/src/lib.rs b/core/runtime/session/src/lib.rs index 544e5afa7cb6f..e0aa8dd69f445 100644 --- a/core/runtime/session/src/lib.rs +++ b/core/runtime/session/src/lib.rs @@ -33,7 +33,7 @@ extern crate substrate_keyring as keyring; extern crate substrate_primitives; #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] extern crate substrate_runtime_support as runtime_support; @@ -41,9 +41,9 @@ extern crate substrate_runtime_support as runtime_support; #[macro_use] extern crate parity_codec_derive; -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; extern crate parity_codec as codec; -extern crate substrate_runtime_primitives as primitives; +extern crate sr_primitives as primitives; extern crate substrate_runtime_consensus as consensus; extern crate substrate_runtime_system as system; extern crate substrate_runtime_timestamp as timestamp; diff --git a/core/runtime/staking/Cargo.toml b/core/runtime/staking/Cargo.toml index fa0c7f47f5e3b..9c124af2c3e03 100644 --- a/core/runtime/staking/Cargo.toml +++ b/core/runtime/staking/Cargo.toml @@ -12,11 +12,11 @@ substrate-keyring = { path = "../../keyring", optional = true } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } -substrate-runtime-sandbox = { path = "../../runtime-sandbox", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } +sr-sandbox = { path = "../../sr-sandbox", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } @@ -33,11 +33,11 @@ std = [ "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", - "substrate-runtime-sandbox/std", + "sr-std/std", + "sr-io/std", + "sr-sandbox/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-balances/std", "substrate-runtime-session/std", "substrate-runtime-system/std", diff --git a/core/runtime/staking/src/lib.rs b/core/runtime/staking/src/lib.rs index 6f4d9e9b11495..065454b398dd6 100644 --- a/core/runtime/staking/src/lib.rs +++ b/core/runtime/staking/src/lib.rs @@ -31,18 +31,18 @@ extern crate serde_derive; extern crate substrate_runtime_support as runtime_support; #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] extern crate parity_codec_derive; extern crate parity_codec as codec; extern crate substrate_primitives; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; extern crate substrate_runtime_balances as balances; extern crate substrate_runtime_consensus as consensus; -extern crate substrate_runtime_sandbox as sandbox; +extern crate sr_sandbox as sandbox; extern crate substrate_runtime_session as session; extern crate substrate_runtime_system as system; extern crate substrate_runtime_timestamp as timestamp; diff --git a/core/runtime/support/Cargo.toml b/core/runtime/support/Cargo.toml index c90d2b7ad7fe8..2791906bd73b1 100644 --- a/core/runtime/support/Cargo.toml +++ b/core/runtime/support/Cargo.toml @@ -7,8 +7,8 @@ authors = ["Parity Technologies "] hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } substrate-metadata = { path = "../../metadata", default_features = false } @@ -25,9 +25,9 @@ std = [ "serde/std", "serde_derive", "substrate-primitives/std", - "substrate-runtime-io/std", + "sr-io/std", "parity-codec/std", - "substrate-runtime-std/std", + "sr-std/std", "substrate-metadata/std", ] nightly = [] diff --git a/core/runtime/support/src/lib.rs b/core/runtime/support/src/lib.rs index 227b1ad9dbcff..e467dc06795de 100644 --- a/core/runtime/support/src/lib.rs +++ b/core/runtime/support/src/lib.rs @@ -27,8 +27,8 @@ extern crate alloc; #[cfg(feature = "std")] extern crate serde; -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_io as runtime_io; +extern crate sr_std as rstd; +extern crate sr_io as runtime_io; extern crate substrate_primitives as primitives; extern crate substrate_metadata; diff --git a/core/runtime/system/Cargo.toml b/core/runtime/system/Cargo.toml index eb53609706ecc..d488f25910c89 100644 --- a/core/runtime/system/Cargo.toml +++ b/core/runtime/system/Cargo.toml @@ -11,10 +11,10 @@ safe-mix = { version = "1.0", default_features = false} parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } [features] default = ["std"] @@ -25,8 +25,8 @@ std = [ "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", ] diff --git a/core/runtime/system/src/lib.rs b/core/runtime/system/src/lib.rs index 78d3025257172..1d156c5890ac7 100644 --- a/core/runtime/system/src/lib.rs +++ b/core/runtime/system/src/lib.rs @@ -23,7 +23,7 @@ extern crate substrate_primitives; #[cfg_attr(any(feature = "std", test), macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] extern crate substrate_runtime_support as runtime_support; @@ -39,8 +39,8 @@ extern crate serde_derive; extern crate parity_codec_derive; extern crate parity_codec as codec; -extern crate substrate_runtime_io as runtime_io; -extern crate substrate_runtime_primitives as primitives; +extern crate sr_io as runtime_io; +extern crate sr_primitives as primitives; extern crate safe_mix; use rstd::prelude::*; diff --git a/core/runtime/timestamp/Cargo.toml b/core/runtime/timestamp/Cargo.toml index d54e64f2564bc..666cfc0397fac 100644 --- a/core/runtime/timestamp/Cargo.toml +++ b/core/runtime/timestamp/Cargo.toml @@ -7,25 +7,25 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } [dev-dependencies] -substrate-runtime-io = { path = "../../runtime-io", default_features = true } +sr-io = { path = "../../sr-io", default_features = true } [features] default = ["std"] std = [ - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-consensus/std", "serde/std", "serde_derive", diff --git a/core/runtime/timestamp/src/lib.rs b/core/runtime/timestamp/src/lib.rs index 1a19e6fd08ffb..3275a25f97388 100644 --- a/core/runtime/timestamp/src/lib.rs +++ b/core/runtime/timestamp/src/lib.rs @@ -34,13 +34,13 @@ #![cfg_attr(not(feature = "std"), no_std)] #[cfg_attr(any(feature = "std", test), macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] extern crate substrate_runtime_support as runtime_support; #[cfg(any(feature = "std", test))] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; #[cfg(feature = "std")] #[macro_use] @@ -48,7 +48,7 @@ extern crate serde_derive; #[cfg(test)] extern crate substrate_primitives; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_runtime_system as system; extern crate substrate_runtime_consensus as consensus; extern crate parity_codec as codec; diff --git a/core/runtime/treasury/Cargo.toml b/core/runtime/treasury/Cargo.toml index b129d1369f18e..27b312034f49b 100644 --- a/core/runtime/treasury/Cargo.toml +++ b/core/runtime/treasury/Cargo.toml @@ -7,10 +7,10 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -substrate-runtime-std = { path = "../../runtime-std", default_features = false } -substrate-runtime-io = { path = "../../runtime-io", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } @@ -20,10 +20,10 @@ substrate-runtime-balances = { path = "../balances", default_features = false } [features] default = ["std"] std = [ - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-balances/std", "serde/std", "serde_derive", diff --git a/core/runtime/treasury/src/lib.rs b/core/runtime/treasury/src/lib.rs index c0d9c9d1dc0af..b5d642af2cabb 100644 --- a/core/runtime/treasury/src/lib.rs +++ b/core/runtime/treasury/src/lib.rs @@ -19,13 +19,13 @@ #![cfg_attr(not(feature = "std"), no_std)] #[cfg_attr(feature = "std", macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] extern crate substrate_runtime_support as runtime_support; #[cfg(feature = "std")] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; #[cfg(feature = "std")] #[macro_use] @@ -37,7 +37,7 @@ extern crate parity_codec_derive; extern crate parity_codec as codec; #[cfg(test)] extern crate substrate_primitives; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_runtime_system as system; extern crate substrate_runtime_balances as balances; diff --git a/core/service/Cargo.toml b/core/service/Cargo.toml index 7dfb4478e3440..4dfe64350ce55 100644 --- a/core/service/Cargo.toml +++ b/core/service/Cargo.toml @@ -17,8 +17,8 @@ serde_json = "1.0" serde_derive = "1.0" target_info = "0.1" substrate-keystore = { path = "../../core/keystore" } -substrate-runtime-io = { path = "../../core/runtime-io" } -substrate-runtime-primitives = { path = "../../core/runtime-primitives" } +sr-io = { path = "../../core/sr-io" } +sr-primitives = { path = "../../core/sr-primitives" } substrate-primitives = { path = "../../core/primitives" } substrate-network = { path = "../../core/network" } substrate-client = { path = "../../core/client" } diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index 5ea169f6811b2..56e894a0bdc98 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -27,7 +27,7 @@ extern crate serde; extern crate serde_json; extern crate substrate_keystore as keystore; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_network as network; extern crate substrate_executor; extern crate substrate_client as client; diff --git a/core/runtime-io/Cargo.toml b/core/sr-io/Cargo.toml similarity index 85% rename from core/runtime-io/Cargo.toml rename to core/sr-io/Cargo.toml index d314d874dbe75..c23e7aed361f5 100644 --- a/core/runtime-io/Cargo.toml +++ b/core/sr-io/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-io" +name = "sr-io" version = "0.1.0" authors = ["Parity Technologies "] build = "build.rs" @@ -8,7 +8,7 @@ build = "build.rs" rustc_version = "0.2" [dependencies] -substrate-runtime-std = { path = "../runtime-std", default_features = false } +sr-std = { path = "../sr-std", default_features = false } environmental = { path = "../../environmental", optional = true } substrate-state-machine = { path = "../state-machine", optional = true } substrate-primitives = { path = "../primitives", default_features = false } @@ -25,7 +25,7 @@ std = [ "triehash", "substrate-primitives/std", "parity-codec/std", - "substrate-runtime-std/std", + "sr-std/std", "rlp" ] nightly = [] diff --git a/core/runtime-io/README.adoc b/core/sr-io/README.adoc similarity index 100% rename from core/runtime-io/README.adoc rename to core/sr-io/README.adoc diff --git a/core/runtime-io/build.rs b/core/sr-io/build.rs similarity index 100% rename from core/runtime-io/build.rs rename to core/sr-io/build.rs diff --git a/core/runtime-io/src/lib.rs b/core/sr-io/src/lib.rs similarity index 100% rename from core/runtime-io/src/lib.rs rename to core/sr-io/src/lib.rs diff --git a/core/runtime-io/with_std.rs b/core/sr-io/with_std.rs similarity index 100% rename from core/runtime-io/with_std.rs rename to core/sr-io/with_std.rs diff --git a/core/runtime-io/without_std.rs b/core/sr-io/without_std.rs similarity index 99% rename from core/runtime-io/without_std.rs rename to core/sr-io/without_std.rs index b48e594c21da4..6e9d391a657cd 100644 --- a/core/runtime-io/without_std.rs +++ b/core/sr-io/without_std.rs @@ -19,7 +19,7 @@ extern crate substrate_primitives as primitives; extern crate hashdb; #[doc(hidden)] -pub extern crate substrate_runtime_std as rstd; +pub extern crate sr_std as rstd; #[doc(hidden)] pub extern crate parity_codec as codec; diff --git a/core/runtime-primitives/Cargo.toml b/core/sr-primitives/Cargo.toml similarity index 76% rename from core/runtime-primitives/Cargo.toml rename to core/sr-primitives/Cargo.toml index 730114e739247..a1316b300fde9 100644 --- a/core/runtime-primitives/Cargo.toml +++ b/core/sr-primitives/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-primitives" +name = "sr-primitives" version = "0.1.0" authors = ["Parity Technologies "] @@ -11,8 +11,8 @@ serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../codec", default_features = false } parity-codec-derive = { path = "../../codec/derive", default_features = false } substrate-primitives = { path = "../primitives", default_features = false } -substrate-runtime-std = { path = "../runtime-std", default_features = false } -substrate-runtime-io = { path = "../runtime-io", default_features = false } +sr-std = { path = "../sr-std", default_features = false } +sr-io = { path = "../sr-io", default_features = false } log = {version = "0.3", optional = true } [dev-dependencies] @@ -25,8 +25,8 @@ std = [ "serde", "serde_derive", "log", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "parity-codec/std", "substrate-primitives/std", ] diff --git a/core/runtime-primitives/src/bft.rs b/core/sr-primitives/src/bft.rs similarity index 100% rename from core/runtime-primitives/src/bft.rs rename to core/sr-primitives/src/bft.rs diff --git a/core/runtime-primitives/src/generic/block.rs b/core/sr-primitives/src/generic/block.rs similarity index 100% rename from core/runtime-primitives/src/generic/block.rs rename to core/sr-primitives/src/generic/block.rs diff --git a/core/runtime-primitives/src/generic/checked_extrinsic.rs b/core/sr-primitives/src/generic/checked_extrinsic.rs similarity index 100% rename from core/runtime-primitives/src/generic/checked_extrinsic.rs rename to core/sr-primitives/src/generic/checked_extrinsic.rs diff --git a/core/runtime-primitives/src/generic/digest.rs b/core/sr-primitives/src/generic/digest.rs similarity index 100% rename from core/runtime-primitives/src/generic/digest.rs rename to core/sr-primitives/src/generic/digest.rs diff --git a/core/runtime-primitives/src/generic/header.rs b/core/sr-primitives/src/generic/header.rs similarity index 100% rename from core/runtime-primitives/src/generic/header.rs rename to core/sr-primitives/src/generic/header.rs diff --git a/core/runtime-primitives/src/generic/mod.rs b/core/sr-primitives/src/generic/mod.rs similarity index 100% rename from core/runtime-primitives/src/generic/mod.rs rename to core/sr-primitives/src/generic/mod.rs diff --git a/core/runtime-primitives/src/generic/tests.rs b/core/sr-primitives/src/generic/tests.rs similarity index 100% rename from core/runtime-primitives/src/generic/tests.rs rename to core/sr-primitives/src/generic/tests.rs diff --git a/core/runtime-primitives/src/generic/unchecked_extrinsic.rs b/core/sr-primitives/src/generic/unchecked_extrinsic.rs similarity index 100% rename from core/runtime-primitives/src/generic/unchecked_extrinsic.rs rename to core/sr-primitives/src/generic/unchecked_extrinsic.rs diff --git a/core/runtime-primitives/src/lib.rs b/core/sr-primitives/src/lib.rs similarity index 99% rename from core/runtime-primitives/src/lib.rs rename to core/sr-primitives/src/lib.rs index d3cc4ed5716a4..c0d1133d415df 100644 --- a/core/runtime-primitives/src/lib.rs +++ b/core/sr-primitives/src/lib.rs @@ -35,8 +35,8 @@ extern crate parity_codec_derive; extern crate num_traits; extern crate integer_sqrt; -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_io as runtime_io; +extern crate sr_std as rstd; +extern crate sr_io as runtime_io; extern crate parity_codec as codec; extern crate substrate_primitives; diff --git a/core/runtime-primitives/src/testing.rs b/core/sr-primitives/src/testing.rs similarity index 100% rename from core/runtime-primitives/src/testing.rs rename to core/sr-primitives/src/testing.rs diff --git a/core/runtime-primitives/src/traits.rs b/core/sr-primitives/src/traits.rs similarity index 100% rename from core/runtime-primitives/src/traits.rs rename to core/sr-primitives/src/traits.rs diff --git a/core/runtime-sandbox/Cargo.toml b/core/sr-sandbox/Cargo.toml similarity index 68% rename from core/runtime-sandbox/Cargo.toml rename to core/sr-sandbox/Cargo.toml index edd828ce5d9f2..f62a5c0809f23 100755 --- a/core/runtime-sandbox/Cargo.toml +++ b/core/sr-sandbox/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-sandbox" +name = "sr-sandbox" version = "0.1.0" authors = ["Parity Technologies "] build = "build.rs" @@ -10,8 +10,8 @@ rustc_version = "0.2" [dependencies] wasmi = { version = "0.4", optional = true } substrate-primitives = { path = "../primitives", default_features = false } -substrate-runtime-std = { path = "../runtime-std", default_features = false } -substrate-runtime-io = { path = "../runtime-io", default_features = false } +sr-std = { path = "../sr-std", default_features = false } +sr-io = { path = "../sr-io", default_features = false } parity-codec = { path = "../../codec", default_features = false } [dev-dependencies] @@ -23,9 +23,9 @@ default = ["std"] std = [ "wasmi", "substrate-primitives/std", - "substrate-runtime-std/std", + "sr-std/std", "parity-codec/std", - "substrate-runtime-io/std", + "sr-io/std", ] nightly = [] strict = [] diff --git a/core/runtime-sandbox/README.adoc b/core/sr-sandbox/README.adoc similarity index 100% rename from core/runtime-sandbox/README.adoc rename to core/sr-sandbox/README.adoc diff --git a/core/runtime-sandbox/build.rs b/core/sr-sandbox/build.rs similarity index 100% rename from core/runtime-sandbox/build.rs rename to core/sr-sandbox/build.rs diff --git a/core/runtime-sandbox/src/lib.rs b/core/sr-sandbox/src/lib.rs similarity index 98% rename from core/runtime-sandbox/src/lib.rs rename to core/sr-sandbox/src/lib.rs index ee16733c78bba..ca94edf4e4107 100755 --- a/core/runtime-sandbox/src/lib.rs +++ b/core/sr-sandbox/src/lib.rs @@ -44,9 +44,9 @@ #![cfg_attr(not(feature = "std"), feature(alloc))] extern crate parity_codec as codec; -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; #[cfg_attr(not(feature = "std"), macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; extern crate substrate_primitives as primitives; #[cfg(test)] diff --git a/core/runtime-sandbox/with_std.rs b/core/sr-sandbox/with_std.rs similarity index 100% rename from core/runtime-sandbox/with_std.rs rename to core/sr-sandbox/with_std.rs diff --git a/core/runtime-sandbox/without_std.rs b/core/sr-sandbox/without_std.rs similarity index 100% rename from core/runtime-sandbox/without_std.rs rename to core/sr-sandbox/without_std.rs diff --git a/core/runtime-std/Cargo.toml b/core/sr-std/Cargo.toml similarity index 90% rename from core/runtime-std/Cargo.toml rename to core/sr-std/Cargo.toml index a8c2b45931be0..459d0f72d1a3c 100644 --- a/core/runtime-std/Cargo.toml +++ b/core/sr-std/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-std" +name = "sr-std" version = "0.1.0" authors = ["Parity Technologies "] build = "build.rs" diff --git a/core/runtime-std/README.adoc b/core/sr-std/README.adoc similarity index 100% rename from core/runtime-std/README.adoc rename to core/sr-std/README.adoc diff --git a/core/runtime-std/build.rs b/core/sr-std/build.rs similarity index 100% rename from core/runtime-std/build.rs rename to core/sr-std/build.rs diff --git a/core/runtime-std/src/lib.rs b/core/sr-std/src/lib.rs similarity index 100% rename from core/runtime-std/src/lib.rs rename to core/sr-std/src/lib.rs diff --git a/core/runtime-std/with_std.rs b/core/sr-std/with_std.rs similarity index 100% rename from core/runtime-std/with_std.rs rename to core/sr-std/with_std.rs diff --git a/core/runtime-std/without_std.rs b/core/sr-std/without_std.rs similarity index 100% rename from core/runtime-std/without_std.rs rename to core/sr-std/without_std.rs diff --git a/core/runtime-version/Cargo.toml b/core/sr-version/Cargo.toml similarity index 75% rename from core/runtime-version/Cargo.toml rename to core/sr-version/Cargo.toml index fe19006398780..b78fbbebba1cd 100644 --- a/core/runtime-version/Cargo.toml +++ b/core/sr-version/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-version" +name = "sr-version" version = "0.1.0" authors = ["Parity Technologies "] @@ -8,7 +8,7 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../codec", default_features = false } parity-codec-derive = { path = "../../codec/derive", default_features = false } -substrate-runtime-std = { path = "../runtime-std", default_features = false } +sr-std = { path = "../sr-std", default_features = false } [features] default = ["std"] @@ -16,5 +16,5 @@ std = [ "serde/std", "serde_derive", "parity-codec/std", - "substrate-runtime-std/std", + "sr-std/std", ] diff --git a/core/runtime-version/src/lib.rs b/core/sr-version/src/lib.rs similarity index 99% rename from core/runtime-version/src/lib.rs rename to core/sr-version/src/lib.rs index 439e07710e503..2a66e0a794b39 100644 --- a/core/runtime-version/src/lib.rs +++ b/core/sr-version/src/lib.rs @@ -27,7 +27,7 @@ extern crate serde_derive; #[allow(unused_imports)] #[macro_use] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; #[macro_use] extern crate parity_codec_derive; diff --git a/core/test-client/Cargo.toml b/core/test-client/Cargo.toml index 00fd0ec176241..d326221266213 100644 --- a/core/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -13,6 +13,6 @@ substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } substrate-runtime-support = { path = "../runtime/support" } substrate-test-runtime = { path = "../test-runtime" } -substrate-runtime-primitives = { path = "../runtime-primitives" } +sr-primitives = { path = "../sr-primitives" } hashdb = "0.2.1" diff --git a/core/test-client/src/lib.rs b/core/test-client/src/lib.rs index fa4d135768d54..9021d5959ce42 100644 --- a/core/test-client/src/lib.rs +++ b/core/test-client/src/lib.rs @@ -25,7 +25,7 @@ extern crate substrate_bft as bft; extern crate parity_codec as codec; extern crate substrate_primitives as primitives; extern crate substrate_runtime_support as runtime_support; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; #[macro_use] extern crate substrate_executor as executor; extern crate hashdb; diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index 1eb0585bf50b9..33bb560691e63 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -11,12 +11,12 @@ serde_derive = { version = "1.0", optional = true } substrate-keyring = { path = "../keyring", optional = true } parity-codec = { path = "../../codec", default-features = false } parity-codec-derive = { path = "../../codec/derive", default-features = false } -substrate-runtime-std = { path = "../runtime-std", default-features = false } -substrate-runtime-io = { path = "../runtime-io", default-features = false } +sr-std = { path = "../sr-std", default-features = false } +sr-io = { path = "../sr-io", default-features = false } substrate-runtime-support = { path = "../runtime/support", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } -substrate-runtime-primitives = { path = "../runtime-primitives", default-features = false } -substrate-runtime-version = { path = "../runtime-version", default-features = false } +sr-primitives = { path = "../sr-primitives", default-features = false } +sr-version = { path = "../sr-version", default-features = false } [features] default = ["std"] @@ -27,10 +27,10 @@ std = [ "serde_derive", "substrate-keyring", "parity-codec/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", "substrate-primitives/std", - "substrate-runtime-primitives/std", - "substrate-runtime-version/std" + "sr-primitives/std", + "sr-version/std" ] diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index 9e82d2d051721..e2fc21ece1e64 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -20,9 +20,9 @@ #![cfg_attr(not(feature = "std"), no_std)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; extern crate parity_codec as codec; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; #[cfg(feature = "std")] extern crate serde; @@ -36,9 +36,9 @@ extern crate substrate_runtime_support as runtime_support; #[macro_use] extern crate parity_codec_derive; #[macro_use] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; #[macro_use] -extern crate substrate_runtime_version as runtime_version; +extern crate sr_version as runtime_version; #[cfg(test)] diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index 56e2fea1fd7b5..c50d8a4937634 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -76,18 +76,6 @@ name = "crunchy" version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "ed25519" -version = "0.1.0" -dependencies = [ - "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "elastic-array" version = "0.10.0" @@ -290,6 +278,22 @@ name = "parity-bytes" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "parity-codec" +version = "0.1.0" +dependencies = [ + "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "parity-codec-derive" +version = "0.1.0" +dependencies = [ + "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parity-wasm" version = "0.31.0" @@ -502,85 +506,38 @@ dependencies = [ ] [[package]] -name = "stable_deref_trait" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "parity-codec" -version = "0.1.0" -dependencies = [ - "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "parity-codec-derive" -version = "0.1.0" -dependencies = [ - "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-primitives" +name = "sr-io" version = "0.1.0" dependencies = [ - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "substrate-runtime-std 0.1.0", - "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-io" -version = "0.1.0" -dependencies = [ - "ed25519 0.1.0", "environmental 0.1.0", "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-state-machine 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "substrate-runtime-primitives" +name = "sr-primitives" version = "0.1.0" dependencies = [ "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] -name = "substrate-runtime-std" +name = "sr-std" version = "0.1.0" dependencies = [ "pwasm-alloc 0.1.0", @@ -589,29 +546,68 @@ dependencies = [ ] [[package]] -name = "substrate-runtime-support" +name = "sr-version" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "substrate-metadata" +version = "0.1.0" +dependencies = [ "parity-codec 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", ] [[package]] -name = "substrate-runtime-version" +name = "substrate-primitives" version = "0.1.0" dependencies = [ + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "substrate-runtime-support" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-runtime-support 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-metadata 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -624,10 +620,10 @@ dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "memorydb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", "substrate-primitives 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -636,17 +632,16 @@ dependencies = [ name = "substrate-test-runtime" version = "0.1.0" dependencies = [ - "ed25519 0.1.0", "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "parity-codec 0.1.0", "parity-codec-derive 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", - "substrate-runtime-version 0.1.0", ] [[package]] diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index d787da403368f..4d46e2c67d39d 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -8,12 +8,12 @@ log = { version = "0.3", optional = true } hex-literal = { version = "0.1.0", optional = true } parity-codec = { path = "../../../codec", default-features = false } parity-codec-derive = { path = "../../../codec/derive", default-features = false } -substrate-runtime-std = { path = "../../runtime-std", default-features = false } -substrate-runtime-io = { path = "../../runtime-io", default-features = false } +sr-std = { path = "../../sr-std", default-features = false } +sr-io = { path = "../../sr-io", default-features = false } substrate-runtime-support = { path = "../../runtime/support", default-features = false } -substrate-runtime-version = { path = "../../runtime-version", default-features = false } +sr-version = { path = "../../sr-version", default-features = false } substrate-primitives = { path = "../../primitives", default-features = false } -substrate-runtime-primitives = { path = "../../runtime-primitives", default-features = false } +sr-primitives = { path = "../../sr-primitives", default-features = false } [features] default = [] @@ -21,12 +21,12 @@ std = [ "log", "hex-literal", "parity-codec/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", - "substrate-runtime-version/std", + "sr-version/std", "substrate-primitives/std", - "substrate-runtime-primitives/std" + "sr-primitives/std" ] [lib] diff --git a/doc/packages/substrate.adoc b/doc/packages/substrate.adoc index 5bb85f879cb59..ba53e3ba1146b 100644 --- a/doc/packages/substrate.adoc +++ b/doc/packages/substrate.adoc @@ -39,11 +39,11 @@ include::../../core/rpc-servers/README.adoc[] include::../../core/runtime/README.adoc[] -include::../../core/runtime-io/README.adoc[] +include::../../core/sr-io/README.adoc[] -include::../../core/runtime-sandbox/README.adoc[] +include::../../core/sr-sandbox/README.adoc[] -include::../../core/runtime-std/README.adoc[] +include::../../core/sr-std/README.adoc[] include::../../core/runtime-support/README.adoc[] diff --git a/node/consensus/Cargo.toml b/node/consensus/Cargo.toml index 1b1b8927a3b37..e733d7ae7e9f9 100644 --- a/node/consensus/Cargo.toml +++ b/node/consensus/Cargo.toml @@ -19,7 +19,7 @@ substrate-bft = { path = "../../core/bft" } parity-codec = { path = "../../codec" } substrate-primitives = { path = "../../core/primitives" } substrate-client = { path = "../../core/client" } -substrate-runtime-primitives = { path = "../../core/runtime-primitives" } +sr-primitives = { path = "../../core/sr-primitives" } [dev-dependencies] substrate-keyring = { path = "../../core/keyring" } diff --git a/node/consensus/src/lib.rs b/node/consensus/src/lib.rs index 9e2d4e5bb7be8..a807ad69a70ec 100644 --- a/node/consensus/src/lib.rs +++ b/node/consensus/src/lib.rs @@ -25,7 +25,7 @@ extern crate node_primitives; extern crate substrate_bft as bft; extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; extern crate substrate_client as client; extern crate exit_future; diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 4a338848d12b8..aad3174287565 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -8,7 +8,7 @@ description = "Substrate node implementation in Rust." hex-literal = "0.1" triehash = "0.2" parity-codec = { path = "../../codec" } -substrate-runtime-io = { path = "../../core/runtime-io" } +sr-io = { path = "../../core/sr-io" } substrate-state-machine = { path = "../../core/state-machine" } substrate-executor = { path = "../../core/executor" } substrate-primitives = { path = "../../core/primitives" } @@ -17,7 +17,7 @@ node-runtime = { path = "../runtime" } [dev-dependencies] substrate-keyring = { path = "../../core/keyring" } -substrate-runtime-primitives = { path = "../../core/runtime-primitives" } +sr-primitives = { path = "../../core/sr-primitives" } substrate-runtime-support = { path = "../../core/runtime/support" } substrate-runtime-balances = { path = "../../core/runtime/balances" } substrate-runtime-session = { path = "../../core/runtime/session" } diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index d3b894ed26f0f..bc97c3851df0a 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -21,13 +21,13 @@ extern crate node_runtime; #[macro_use] extern crate substrate_executor; extern crate parity_codec as codec; extern crate substrate_state_machine as state_machine; -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; extern crate substrate_primitives as primitives; extern crate node_primitives; extern crate triehash; #[cfg(test)] extern crate substrate_keyring as keyring; -#[cfg(test)] extern crate substrate_runtime_primitives as runtime_primitives; +#[cfg(test)] extern crate sr_primitives as runtime_primitives; #[cfg(test)] extern crate substrate_runtime_support as runtime_support; #[cfg(test)] extern crate substrate_runtime_balances as balances; #[cfg(test)] extern crate substrate_runtime_session as session; diff --git a/node/primitives/Cargo.toml b/node/primitives/Cargo.toml index 1c1a0bcc0e1b3..7d8840da42f0b 100644 --- a/node/primitives/Cargo.toml +++ b/node/primitives/Cargo.toml @@ -9,8 +9,8 @@ serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../codec", default_features = false } parity-codec-derive = { path = "../../codec/derive", default_features = false } substrate-primitives = { path = "../../core/primitives", default_features = false } -substrate-runtime-std = { path = "../../core/runtime-std", default_features = false } -substrate-runtime-primitives = { path = "../../core/runtime-primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } [dev-dependencies] substrate-serializer = { path = "../../core/serializer" } @@ -22,8 +22,8 @@ std = [ "parity-codec-derive/std", "parity-codec/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-primitives/std", + "sr-std/std", + "sr-primitives/std", "serde_derive", "serde/std", ] diff --git a/node/primitives/src/lib.rs b/node/primitives/src/lib.rs index 2d1ffe52b2121..670e0bdc3d276 100644 --- a/node/primitives/src/lib.rs +++ b/node/primitives/src/lib.rs @@ -31,8 +31,8 @@ extern crate serde_derive; #[macro_use] extern crate parity_codec_derive; -extern crate substrate_runtime_std as rstd; -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_std as rstd; +extern crate sr_primitives as runtime_primitives; extern crate substrate_primitives as primitives; extern crate parity_codec as codec; diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index d6fafdf1d56f1..072585ba5e4dc 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -12,8 +12,8 @@ serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} parity-codec = { path = "../../codec" } parity-codec-derive = { path = "../../codec/derive" } -substrate-runtime-std = { path = "../../core/runtime-std" } -substrate-runtime-io = { path = "../../core/runtime-io" } +sr-std = { path = "../../core/sr-std" } +sr-io = { path = "../../core/sr-io" } substrate-runtime-support = { path = "../../core/runtime/support" } substrate-primitives = { path = "../../core/primitives" } substrate-keyring = { path = "../../core/keyring" } @@ -23,13 +23,13 @@ substrate-runtime-contract = { path = "../../core/runtime/contract" } substrate-runtime-council = { path = "../../core/runtime/council" } substrate-runtime-democracy = { path = "../../core/runtime/democracy" } substrate-runtime-executive = { path = "../../core/runtime/executive" } -substrate-runtime-primitives = { path = "../../core/runtime-primitives" } +sr-primitives = { path = "../../core/sr-primitives" } substrate-runtime-session = { path = "../../core/runtime/session" } substrate-runtime-staking = { path = "../../core/runtime/staking" } substrate-runtime-system = { path = "../../core/runtime/system" } substrate-runtime-timestamp = { path = "../../core/runtime/timestamp" } substrate-runtime-treasury = { path = "../../core/runtime/treasury" } -substrate-runtime-version = { path = "../../core/runtime-version" } +sr-version = { path = "../../core/sr-version" } node-primitives = { path = "../primitives" } [features] @@ -37,8 +37,8 @@ default = ["std"] std = [ "parity-codec/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", "substrate-runtime-balances/std", "substrate-runtime-consensus/std", @@ -46,13 +46,13 @@ std = [ "substrate-runtime-council/std", "substrate-runtime-democracy/std", "substrate-runtime-executive/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-session/std", "substrate-runtime-staking/std", "substrate-runtime-system/std", "substrate-runtime-timestamp/std", "substrate-runtime-treasury/std", - "substrate-runtime-version/std", + "sr-version/std", "node-primitives/std", "serde_derive", "serde/std", diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index e462f8acdc3d1..5acaf50b63c1e 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -19,13 +19,13 @@ #![cfg_attr(not(feature = "std"), no_std)] #[macro_use] -extern crate substrate_runtime_io as runtime_io; +extern crate sr_io as runtime_io; #[macro_use] extern crate substrate_runtime_support; #[macro_use] -extern crate substrate_runtime_primitives as runtime_primitives; +extern crate sr_primitives as runtime_primitives; #[cfg(feature = "std")] #[macro_use] @@ -41,7 +41,7 @@ extern crate substrate_primitives; extern crate parity_codec_derive; #[cfg_attr(not(feature = "std"), macro_use)] -extern crate substrate_runtime_std as rstd; +extern crate sr_std as rstd; extern crate substrate_runtime_balances as balances; extern crate substrate_runtime_consensus as consensus; extern crate substrate_runtime_contract as contract; @@ -54,7 +54,7 @@ extern crate substrate_runtime_system as system; extern crate substrate_runtime_timestamp as timestamp; extern crate substrate_runtime_treasury as treasury; #[macro_use] -extern crate substrate_runtime_version as version; +extern crate sr_version as version; extern crate node_primitives; #[cfg(feature = "std")] diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index df16aadd485f7..5637e21b1ada2 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -255,9 +255,9 @@ dependencies = [ "parity-codec-derive 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", ] [[package]] @@ -269,6 +269,10 @@ dependencies = [ "parity-codec 0.1.0", "parity-codec-derive 0.1.0", "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "sr-version 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", @@ -276,16 +280,12 @@ dependencies = [ "substrate-runtime-council 0.1.0", "substrate-runtime-democracy 0.1.0", "substrate-runtime-executive 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", "substrate-runtime-session 0.1.0", "substrate-runtime-staking 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", "substrate-runtime-timestamp 0.1.0", "substrate-runtime-treasury 0.1.0", - "substrate-runtime-version 0.1.0", ] [[package]] @@ -564,6 +564,69 @@ dependencies = [ "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "sr-io" +version = "0.1.0" +dependencies = [ + "environmental 0.1.0", + "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", + "substrate-state-machine 0.1.0", + "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-primitives" +version = "0.1.0" +dependencies = [ + "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", + "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "sr-sandbox" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-primitives 0.1.0", + "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-std" +version = "0.1.0" +dependencies = [ + "pwasm-alloc 0.1.0", + "pwasm-libc 0.1.0", + "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sr-version" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", +] + [[package]] name = "stable_deref_trait" version = "1.0.0" @@ -606,7 +669,7 @@ dependencies = [ "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-runtime-std 0.1.0", + "sr-std 0.1.0", "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -623,11 +686,11 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -641,10 +704,10 @@ dependencies = [ "parity-codec-derive 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -658,12 +721,12 @@ dependencies = [ "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-sandbox 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -679,14 +742,14 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", "substrate-runtime-democracy 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -701,12 +764,12 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -719,56 +782,13 @@ dependencies = [ "parity-codec 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] -[[package]] -name = "substrate-runtime-io" -version = "0.1.0" -dependencies = [ - "environmental 0.1.0", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "substrate-runtime-std 0.1.0", - "substrate-state-machine 0.1.0", - "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-primitives" -version = "0.1.0" -dependencies = [ - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", - "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", -] - -[[package]] -name = "substrate-runtime-sandbox" -version = "0.1.0" -dependencies = [ - "parity-codec 0.1.0", - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-runtime-session" version = "0.1.0" @@ -779,12 +799,12 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", "substrate-runtime-timestamp 0.1.0", @@ -800,29 +820,20 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-sandbox 0.1.0", "substrate-runtime-session 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", "substrate-runtime-timestamp 0.1.0", ] -[[package]] -name = "substrate-runtime-std" -version = "0.1.0" -dependencies = [ - "pwasm-alloc 0.1.0", - "pwasm-libc 0.1.0", - "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "substrate-runtime-support" version = "0.1.0" @@ -831,10 +842,10 @@ dependencies = [ "parity-codec 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", "substrate-metadata 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-std 0.1.0", ] [[package]] @@ -847,10 +858,10 @@ dependencies = [ "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", ] @@ -862,11 +873,11 @@ dependencies = [ "parity-codec 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-consensus 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] @@ -880,26 +891,15 @@ dependencies = [ "parity-codec-derive 0.1.0", "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", "substrate-primitives 0.1.0", "substrate-runtime-balances 0.1.0", - "substrate-runtime-io 0.1.0", - "substrate-runtime-primitives 0.1.0", - "substrate-runtime-std 0.1.0", "substrate-runtime-support 0.1.0", "substrate-runtime-system 0.1.0", ] -[[package]] -name = "substrate-runtime-version" -version = "0.1.0" -dependencies = [ - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-runtime-std 0.1.0", -] - [[package]] name = "substrate-state-machine" version = "0.1.0" diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index 39b886b5b788b..c7f1d771dc39c 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -12,8 +12,8 @@ safe-mix = { version = "1.0", default_features = false} parity-codec-derive = { path = "../../../codec/derive" } parity-codec = { path = "../../../codec", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } -substrate-runtime-std = { path = "../../../core/runtime-std", default-features = false } -substrate-runtime-io = { path = "../../../core/runtime-io", default-features = false } +sr-std = { path = "../../../core/sr-std", default-features = false } +sr-io = { path = "../../../core/sr-io", default-features = false } substrate-runtime-support = { path = "../../../core/runtime/support", default-features = false } substrate-runtime-balances = { path = "../../../core/runtime/balances", default-features = false } substrate-runtime-consensus = { path = "../../../core/runtime/consensus", default-features = false } @@ -21,13 +21,13 @@ substrate-runtime-contract = { path = "../../../core/runtime/contract", default- substrate-runtime-council = { path = "../../../core/runtime/council", default-features = false } substrate-runtime-democracy = { path = "../../../core/runtime/democracy", default-features = false } substrate-runtime-executive = { path = "../../../core/runtime/executive", default-features = false } -substrate-runtime-primitives = { path = "../../../core/runtime-primitives", default-features = false } +sr-primitives = { path = "../../../core/sr-primitives", default-features = false } substrate-runtime-session = { path = "../../../core/runtime/session", default-features = false } substrate-runtime-staking = { path = "../../../core/runtime/staking", default-features = false } substrate-runtime-system = { path = "../../../core/runtime/system", default-features = false } substrate-runtime-timestamp = { path = "../../../core/runtime/timestamp", default-features = false } substrate-runtime-treasury = { path = "../../../core/runtime/treasury", default-features = false } -substrate-runtime-version = { path = "../../../core/runtime-version", default-features = false } +sr-version = { path = "../../../core/sr-version", default-features = false } node-primitives = { path = "../../primitives", default-features = false } [features] @@ -36,8 +36,8 @@ std = [ "safe-mix/std", "parity-codec/std", "substrate-primitives/std", - "substrate-runtime-std/std", - "substrate-runtime-io/std", + "sr-std/std", + "sr-io/std", "substrate-runtime-support/std", "substrate-runtime-balances/std", "substrate-runtime-consensus/std", @@ -45,13 +45,13 @@ std = [ "substrate-runtime-council/std", "substrate-runtime-democracy/std", "substrate-runtime-executive/std", - "substrate-runtime-primitives/std", + "sr-primitives/std", "substrate-runtime-session/std", "substrate-runtime-staking/std", "substrate-runtime-system/std", "substrate-runtime-timestamp/std", "substrate-runtime-treasury/std", - "substrate-runtime-version/std", + "sr-version/std", "node-primitives/std", ] diff --git a/node/service/Cargo.toml b/node/service/Cargo.toml index 5890c2ab7456a..045b8c8286d1b 100644 --- a/node/service/Cargo.toml +++ b/node/service/Cargo.toml @@ -18,7 +18,7 @@ node-executor = { path = "../executor" } node-consensus = { path = "../consensus" } node-network = { path = "../network" } node-transaction-pool = { path = "../transaction-pool" } -substrate-runtime-io = { path = "../../core/runtime-io" } +sr-io = { path = "../../core/sr-io" } substrate-primitives = { path = "../../core/primitives" } substrate-network = { path = "../../core/network" } substrate-client = { path = "../../core/client" } diff --git a/node/transaction-pool/Cargo.toml b/node/transaction-pool/Cargo.toml index 1a7e97f60f9fd..45455bcfd6230 100644 --- a/node/transaction-pool/Cargo.toml +++ b/node/transaction-pool/Cargo.toml @@ -15,4 +15,4 @@ parity-codec = { path = "../../codec" } substrate-keyring = { path = "../../core/keyring" } substrate-extrinsic-pool = { path = "../../core/extrinsic-pool" } substrate-primitives = { path = "../../core/primitives" } -substrate-runtime-primitives = { path = "../../core/runtime-primitives" } +sr-primitives = { path = "../../core/sr-primitives" } diff --git a/node/transaction-pool/src/lib.rs b/node/transaction-pool/src/lib.rs index 35868e874dd98..b6dfcd3f25013 100644 --- a/node/transaction-pool/src/lib.rs +++ b/node/transaction-pool/src/lib.rs @@ -18,7 +18,7 @@ extern crate substrate_client as client; extern crate parity_codec as codec; extern crate substrate_extrinsic_pool as extrinsic_pool; extern crate substrate_primitives; -extern crate substrate_runtime_primitives; +extern crate sr_primitives; extern crate node_runtime as runtime; extern crate node_primitives as primitives; extern crate node_api; @@ -46,7 +46,7 @@ use extrinsic_pool::{Readiness, scoring::{Change, Choice}, VerifiedFor, Extrinsi use node_api::Api; use primitives::{AccountId, BlockId, Block, Hash, Index}; use runtime::{Address, UncheckedExtrinsic, RawAddress}; -use substrate_runtime_primitives::traits::{Bounded, Checkable, Hash as HashT, BlakeTwo256}; +use sr_primitives::traits::{Bounded, Checkable, Hash as HashT, BlakeTwo256}; pub use extrinsic_pool::{Options, Status, LightStatus, VerifiedTransaction as VerifiedTransactionOps}; pub use error::{Error, ErrorKind, Result}; From 0840e3f73da5c68bb0f9f19e778e73e620239ca8 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 10:32:05 +0200 Subject: [PATCH 22/24] Move runtime/* to srml/* --- Cargo.toml | 26 +++++++++---------- core/{runtime => srml}/README.adoc | 0 core/{runtime => srml}/balances/Cargo.toml | 2 +- .../{runtime => srml}/balances/src/address.rs | 0 .../balances/src/genesis_config.rs | 0 core/{runtime => srml}/balances/src/lib.rs | 0 core/{runtime => srml}/balances/src/mock.rs | 0 core/{runtime => srml}/balances/src/tests.rs | 0 core/{runtime => srml}/consensus/Cargo.toml | 2 +- core/{runtime => srml}/consensus/src/lib.rs | 0 core/{runtime => srml}/contract/Cargo.toml | 4 +-- .../contract/src/account_db.rs | 0 .../contract/src/double_map.rs | 0 core/{runtime => srml}/contract/src/exec.rs | 0 core/{runtime => srml}/contract/src/gas.rs | 0 .../contract/src/genesis_config.rs | 0 core/{runtime => srml}/contract/src/lib.rs | 0 core/{runtime => srml}/contract/src/tests.rs | 0 .../contract/src/vm/env_def/macros.rs | 0 .../contract/src/vm/env_def/mod.rs | 0 core/{runtime => srml}/contract/src/vm/mod.rs | 0 .../contract/src/vm/prepare.rs | 0 core/{runtime => srml}/council/Cargo.toml | 2 +- core/{runtime => srml}/council/src/lib.rs | 0 core/{runtime => srml}/council/src/motions.rs | 0 core/{runtime => srml}/council/src/seats.rs | 0 core/{runtime => srml}/council/src/voting.rs | 0 core/{runtime => srml}/democracy/Cargo.toml | 2 +- core/{runtime => srml}/democracy/src/lib.rs | 0 .../democracy/src/vote_threshold.rs | 0 core/{runtime => srml}/example/Cargo.toml | 2 +- core/{runtime => srml}/example/src/lib.rs | 0 core/{runtime => srml}/executive/Cargo.toml | 2 +- core/{runtime => srml}/executive/src/lib.rs | 0 core/{runtime => srml}/session/Cargo.toml | 2 +- core/{runtime => srml}/session/src/lib.rs | 0 core/{runtime => srml}/staking/Cargo.toml | 2 +- .../staking/src/genesis_config.rs | 0 core/{runtime => srml}/staking/src/lib.rs | 0 core/{runtime => srml}/staking/src/mock.rs | 0 core/{runtime => srml}/staking/src/tests.rs | 0 core/{runtime => srml}/support/Cargo.toml | 0 core/{runtime => srml}/support/README.adoc | 0 .../{runtime => srml}/support/src/dispatch.rs | 0 core/{runtime => srml}/support/src/event.rs | 0 .../{runtime => srml}/support/src/hashable.rs | 0 core/{runtime => srml}/support/src/lib.rs | 0 .../{runtime => srml}/support/src/metadata.rs | 0 .../support/src/storage/generator.rs | 0 .../support/src/storage/mod.rs | 0 core/{runtime => srml}/system/Cargo.toml | 2 +- core/{runtime => srml}/system/src/lib.rs | 0 core/{runtime => srml}/timestamp/Cargo.toml | 2 +- core/{runtime => srml}/timestamp/src/lib.rs | 0 core/{runtime => srml}/treasury/Cargo.toml | 2 +- core/{runtime => srml}/treasury/src/lib.rs | 0 core/test-client/Cargo.toml | 2 +- core/test-runtime/Cargo.toml | 2 +- core/test-runtime/wasm/Cargo.toml | 2 +- doc/packages/substrate.adoc | 4 +-- node/executor/Cargo.toml | 16 ++++++------ node/runtime/Cargo.toml | 24 ++++++++--------- node/runtime/wasm/Cargo.toml | 24 ++++++++--------- 63 files changed, 63 insertions(+), 63 deletions(-) rename core/{runtime => srml}/README.adoc (100%) rename core/{runtime => srml}/balances/Cargo.toml (93%) rename core/{runtime => srml}/balances/src/address.rs (100%) rename core/{runtime => srml}/balances/src/genesis_config.rs (100%) rename core/{runtime => srml}/balances/src/lib.rs (100%) rename core/{runtime => srml}/balances/src/mock.rs (100%) rename core/{runtime => srml}/balances/src/tests.rs (100%) rename core/{runtime => srml}/consensus/Cargo.toml (92%) rename core/{runtime => srml}/consensus/src/lib.rs (100%) rename core/{runtime => srml}/contract/Cargo.toml (87%) rename core/{runtime => srml}/contract/src/account_db.rs (100%) rename core/{runtime => srml}/contract/src/double_map.rs (100%) rename core/{runtime => srml}/contract/src/exec.rs (100%) rename core/{runtime => srml}/contract/src/gas.rs (100%) rename core/{runtime => srml}/contract/src/genesis_config.rs (100%) rename core/{runtime => srml}/contract/src/lib.rs (100%) rename core/{runtime => srml}/contract/src/tests.rs (100%) rename core/{runtime => srml}/contract/src/vm/env_def/macros.rs (100%) rename core/{runtime => srml}/contract/src/vm/env_def/mod.rs (100%) rename core/{runtime => srml}/contract/src/vm/mod.rs (100%) rename core/{runtime => srml}/contract/src/vm/prepare.rs (100%) rename core/{runtime => srml}/council/Cargo.toml (94%) rename core/{runtime => srml}/council/src/lib.rs (100%) rename core/{runtime => srml}/council/src/motions.rs (100%) rename core/{runtime => srml}/council/src/seats.rs (100%) rename core/{runtime => srml}/council/src/voting.rs (100%) rename core/{runtime => srml}/democracy/Cargo.toml (93%) rename core/{runtime => srml}/democracy/src/lib.rs (100%) rename core/{runtime => srml}/democracy/src/vote_threshold.rs (100%) rename core/{runtime => srml}/example/Cargo.toml (92%) rename core/{runtime => srml}/example/src/lib.rs (100%) rename core/{runtime => srml}/executive/Cargo.toml (91%) rename core/{runtime => srml}/executive/src/lib.rs (100%) rename core/{runtime => srml}/session/Cargo.toml (94%) rename core/{runtime => srml}/session/src/lib.rs (100%) rename core/{runtime => srml}/staking/Cargo.toml (95%) rename core/{runtime => srml}/staking/src/genesis_config.rs (100%) rename core/{runtime => srml}/staking/src/lib.rs (100%) rename core/{runtime => srml}/staking/src/mock.rs (100%) rename core/{runtime => srml}/staking/src/tests.rs (100%) rename core/{runtime => srml}/support/Cargo.toml (100%) rename core/{runtime => srml}/support/README.adoc (100%) rename core/{runtime => srml}/support/src/dispatch.rs (100%) rename core/{runtime => srml}/support/src/event.rs (100%) rename core/{runtime => srml}/support/src/hashable.rs (100%) rename core/{runtime => srml}/support/src/lib.rs (100%) rename core/{runtime => srml}/support/src/metadata.rs (100%) rename core/{runtime => srml}/support/src/storage/generator.rs (100%) rename core/{runtime => srml}/support/src/storage/mod.rs (100%) rename core/{runtime => srml}/system/Cargo.toml (91%) rename core/{runtime => srml}/system/src/lib.rs (100%) rename core/{runtime => srml}/timestamp/Cargo.toml (92%) rename core/{runtime => srml}/timestamp/src/lib.rs (100%) rename core/{runtime => srml}/treasury/Cargo.toml (92%) rename core/{runtime => srml}/treasury/src/lib.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index 73b86baf94aa9..7a0fb155ce959 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,20 +20,20 @@ members = [ "core/sr-sandbox", "core/sr-std", "core/sr-version", - "core/runtime/support", - "core/runtime/balances", - "core/runtime/consensus", - "core/runtime/contract", - "core/runtime/council", - "core/runtime/democracy", - "core/runtime/example", - "core/runtime/executive", + "core/srml/support", + "core/srml/balances", + "core/srml/consensus", + "core/srml/contract", + "core/srml/council", + "core/srml/democracy", + "core/srml/example", + "core/srml/executive", "core/sr-primitives", - "core/runtime/session", - "core/runtime/staking", - "core/runtime/system", - "core/runtime/timestamp", - "core/runtime/treasury", + "core/srml/session", + "core/srml/staking", + "core/srml/system", + "core/srml/timestamp", + "core/srml/treasury", "core/serializer", "core/service", "core/state-db", diff --git a/core/runtime/README.adoc b/core/srml/README.adoc similarity index 100% rename from core/runtime/README.adoc rename to core/srml/README.adoc diff --git a/core/runtime/balances/Cargo.toml b/core/srml/balances/Cargo.toml similarity index 93% rename from core/runtime/balances/Cargo.toml rename to core/srml/balances/Cargo.toml index 66111da04320f..0aa73b06f1c6f 100644 --- a/core/runtime/balances/Cargo.toml +++ b/core/srml/balances/Cargo.toml @@ -14,7 +14,7 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/balances/src/address.rs b/core/srml/balances/src/address.rs similarity index 100% rename from core/runtime/balances/src/address.rs rename to core/srml/balances/src/address.rs diff --git a/core/runtime/balances/src/genesis_config.rs b/core/srml/balances/src/genesis_config.rs similarity index 100% rename from core/runtime/balances/src/genesis_config.rs rename to core/srml/balances/src/genesis_config.rs diff --git a/core/runtime/balances/src/lib.rs b/core/srml/balances/src/lib.rs similarity index 100% rename from core/runtime/balances/src/lib.rs rename to core/srml/balances/src/lib.rs diff --git a/core/runtime/balances/src/mock.rs b/core/srml/balances/src/mock.rs similarity index 100% rename from core/runtime/balances/src/mock.rs rename to core/srml/balances/src/mock.rs diff --git a/core/runtime/balances/src/tests.rs b/core/srml/balances/src/tests.rs similarity index 100% rename from core/runtime/balances/src/tests.rs rename to core/srml/balances/src/tests.rs diff --git a/core/runtime/consensus/Cargo.toml b/core/srml/consensus/Cargo.toml similarity index 92% rename from core/runtime/consensus/Cargo.toml rename to core/srml/consensus/Cargo.toml index a43bea440ec8d..27f32a0837e72 100644 --- a/core/runtime/consensus/Cargo.toml +++ b/core/srml/consensus/Cargo.toml @@ -12,7 +12,7 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/consensus/src/lib.rs b/core/srml/consensus/src/lib.rs similarity index 100% rename from core/runtime/consensus/src/lib.rs rename to core/srml/consensus/src/lib.rs diff --git a/core/runtime/contract/Cargo.toml b/core/srml/contract/Cargo.toml similarity index 87% rename from core/runtime/contract/Cargo.toml rename to core/srml/contract/Cargo.toml index 80c6fd6763c83..2073590a59f1d 100644 --- a/core/runtime/contract/Cargo.toml +++ b/core/srml/contract/Cargo.toml @@ -12,8 +12,8 @@ sr-primitives = { path = "../../sr-primitives", default_features = false } sr-io = { path = "../../sr-io", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-sandbox = { path = "../../sr-sandbox", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } -substrate-runtime-system = { path = "../../runtime/system", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } +substrate-runtime-system = { path = "../../srml/system", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } parity-wasm = { version = "0.31", default_features = false } pwasm-utils = { version = "0.3", default_features = false } diff --git a/core/runtime/contract/src/account_db.rs b/core/srml/contract/src/account_db.rs similarity index 100% rename from core/runtime/contract/src/account_db.rs rename to core/srml/contract/src/account_db.rs diff --git a/core/runtime/contract/src/double_map.rs b/core/srml/contract/src/double_map.rs similarity index 100% rename from core/runtime/contract/src/double_map.rs rename to core/srml/contract/src/double_map.rs diff --git a/core/runtime/contract/src/exec.rs b/core/srml/contract/src/exec.rs similarity index 100% rename from core/runtime/contract/src/exec.rs rename to core/srml/contract/src/exec.rs diff --git a/core/runtime/contract/src/gas.rs b/core/srml/contract/src/gas.rs similarity index 100% rename from core/runtime/contract/src/gas.rs rename to core/srml/contract/src/gas.rs diff --git a/core/runtime/contract/src/genesis_config.rs b/core/srml/contract/src/genesis_config.rs similarity index 100% rename from core/runtime/contract/src/genesis_config.rs rename to core/srml/contract/src/genesis_config.rs diff --git a/core/runtime/contract/src/lib.rs b/core/srml/contract/src/lib.rs similarity index 100% rename from core/runtime/contract/src/lib.rs rename to core/srml/contract/src/lib.rs diff --git a/core/runtime/contract/src/tests.rs b/core/srml/contract/src/tests.rs similarity index 100% rename from core/runtime/contract/src/tests.rs rename to core/srml/contract/src/tests.rs diff --git a/core/runtime/contract/src/vm/env_def/macros.rs b/core/srml/contract/src/vm/env_def/macros.rs similarity index 100% rename from core/runtime/contract/src/vm/env_def/macros.rs rename to core/srml/contract/src/vm/env_def/macros.rs diff --git a/core/runtime/contract/src/vm/env_def/mod.rs b/core/srml/contract/src/vm/env_def/mod.rs similarity index 100% rename from core/runtime/contract/src/vm/env_def/mod.rs rename to core/srml/contract/src/vm/env_def/mod.rs diff --git a/core/runtime/contract/src/vm/mod.rs b/core/srml/contract/src/vm/mod.rs similarity index 100% rename from core/runtime/contract/src/vm/mod.rs rename to core/srml/contract/src/vm/mod.rs diff --git a/core/runtime/contract/src/vm/prepare.rs b/core/srml/contract/src/vm/prepare.rs similarity index 100% rename from core/runtime/contract/src/vm/prepare.rs rename to core/srml/contract/src/vm/prepare.rs diff --git a/core/runtime/council/Cargo.toml b/core/srml/council/Cargo.toml similarity index 94% rename from core/runtime/council/Cargo.toml rename to core/srml/council/Cargo.toml index 0afe44ef36db0..21a629f95b4de 100644 --- a/core/runtime/council/Cargo.toml +++ b/core/srml/council/Cargo.toml @@ -15,7 +15,7 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } diff --git a/core/runtime/council/src/lib.rs b/core/srml/council/src/lib.rs similarity index 100% rename from core/runtime/council/src/lib.rs rename to core/srml/council/src/lib.rs diff --git a/core/runtime/council/src/motions.rs b/core/srml/council/src/motions.rs similarity index 100% rename from core/runtime/council/src/motions.rs rename to core/srml/council/src/motions.rs diff --git a/core/runtime/council/src/seats.rs b/core/srml/council/src/seats.rs similarity index 100% rename from core/runtime/council/src/seats.rs rename to core/srml/council/src/seats.rs diff --git a/core/runtime/council/src/voting.rs b/core/srml/council/src/voting.rs similarity index 100% rename from core/runtime/council/src/voting.rs rename to core/srml/council/src/voting.rs diff --git a/core/runtime/democracy/Cargo.toml b/core/srml/democracy/Cargo.toml similarity index 93% rename from core/runtime/democracy/Cargo.toml rename to core/srml/democracy/Cargo.toml index c7fc9e96aec1e..5c4e702c0aee5 100644 --- a/core/runtime/democracy/Cargo.toml +++ b/core/srml/democracy/Cargo.toml @@ -13,7 +13,7 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } diff --git a/core/runtime/democracy/src/lib.rs b/core/srml/democracy/src/lib.rs similarity index 100% rename from core/runtime/democracy/src/lib.rs rename to core/srml/democracy/src/lib.rs diff --git a/core/runtime/democracy/src/vote_threshold.rs b/core/srml/democracy/src/vote_threshold.rs similarity index 100% rename from core/runtime/democracy/src/vote_threshold.rs rename to core/srml/democracy/src/vote_threshold.rs diff --git a/core/runtime/example/Cargo.toml b/core/srml/example/Cargo.toml similarity index 92% rename from core/runtime/example/Cargo.toml rename to core/srml/example/Cargo.toml index 7f3245ba9befc..16a39b63cd731 100644 --- a/core/runtime/example/Cargo.toml +++ b/core/srml/example/Cargo.toml @@ -9,7 +9,7 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } diff --git a/core/runtime/example/src/lib.rs b/core/srml/example/src/lib.rs similarity index 100% rename from core/runtime/example/src/lib.rs rename to core/srml/example/src/lib.rs diff --git a/core/runtime/executive/Cargo.toml b/core/srml/executive/Cargo.toml similarity index 91% rename from core/runtime/executive/Cargo.toml rename to core/srml/executive/Cargo.toml index 120180a7e422e..6c096536edbdc 100644 --- a/core/runtime/executive/Cargo.toml +++ b/core/srml/executive/Cargo.toml @@ -10,7 +10,7 @@ serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../../codec", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/executive/src/lib.rs b/core/srml/executive/src/lib.rs similarity index 100% rename from core/runtime/executive/src/lib.rs rename to core/srml/executive/src/lib.rs diff --git a/core/runtime/session/Cargo.toml b/core/srml/session/Cargo.toml similarity index 94% rename from core/runtime/session/Cargo.toml rename to core/srml/session/Cargo.toml index 53f68252a5de6..3872a9a410821 100644 --- a/core/runtime/session/Cargo.toml +++ b/core/srml/session/Cargo.toml @@ -14,7 +14,7 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } substrate-runtime-system = { path = "../system", default_features = false } diff --git a/core/runtime/session/src/lib.rs b/core/srml/session/src/lib.rs similarity index 100% rename from core/runtime/session/src/lib.rs rename to core/srml/session/src/lib.rs diff --git a/core/runtime/staking/Cargo.toml b/core/srml/staking/Cargo.toml similarity index 95% rename from core/runtime/staking/Cargo.toml rename to core/srml/staking/Cargo.toml index 9c124af2c3e03..d8f6d0c6fe3d3 100644 --- a/core/runtime/staking/Cargo.toml +++ b/core/srml/staking/Cargo.toml @@ -15,7 +15,7 @@ substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } sr-sandbox = { path = "../../sr-sandbox", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } substrate-runtime-balances = { path = "../balances", default_features = false } substrate-runtime-consensus = { path = "../consensus", default_features = false } diff --git a/core/runtime/staking/src/genesis_config.rs b/core/srml/staking/src/genesis_config.rs similarity index 100% rename from core/runtime/staking/src/genesis_config.rs rename to core/srml/staking/src/genesis_config.rs diff --git a/core/runtime/staking/src/lib.rs b/core/srml/staking/src/lib.rs similarity index 100% rename from core/runtime/staking/src/lib.rs rename to core/srml/staking/src/lib.rs diff --git a/core/runtime/staking/src/mock.rs b/core/srml/staking/src/mock.rs similarity index 100% rename from core/runtime/staking/src/mock.rs rename to core/srml/staking/src/mock.rs diff --git a/core/runtime/staking/src/tests.rs b/core/srml/staking/src/tests.rs similarity index 100% rename from core/runtime/staking/src/tests.rs rename to core/srml/staking/src/tests.rs diff --git a/core/runtime/support/Cargo.toml b/core/srml/support/Cargo.toml similarity index 100% rename from core/runtime/support/Cargo.toml rename to core/srml/support/Cargo.toml diff --git a/core/runtime/support/README.adoc b/core/srml/support/README.adoc similarity index 100% rename from core/runtime/support/README.adoc rename to core/srml/support/README.adoc diff --git a/core/runtime/support/src/dispatch.rs b/core/srml/support/src/dispatch.rs similarity index 100% rename from core/runtime/support/src/dispatch.rs rename to core/srml/support/src/dispatch.rs diff --git a/core/runtime/support/src/event.rs b/core/srml/support/src/event.rs similarity index 100% rename from core/runtime/support/src/event.rs rename to core/srml/support/src/event.rs diff --git a/core/runtime/support/src/hashable.rs b/core/srml/support/src/hashable.rs similarity index 100% rename from core/runtime/support/src/hashable.rs rename to core/srml/support/src/hashable.rs diff --git a/core/runtime/support/src/lib.rs b/core/srml/support/src/lib.rs similarity index 100% rename from core/runtime/support/src/lib.rs rename to core/srml/support/src/lib.rs diff --git a/core/runtime/support/src/metadata.rs b/core/srml/support/src/metadata.rs similarity index 100% rename from core/runtime/support/src/metadata.rs rename to core/srml/support/src/metadata.rs diff --git a/core/runtime/support/src/storage/generator.rs b/core/srml/support/src/storage/generator.rs similarity index 100% rename from core/runtime/support/src/storage/generator.rs rename to core/srml/support/src/storage/generator.rs diff --git a/core/runtime/support/src/storage/mod.rs b/core/srml/support/src/storage/mod.rs similarity index 100% rename from core/runtime/support/src/storage/mod.rs rename to core/srml/support/src/storage/mod.rs diff --git a/core/runtime/system/Cargo.toml b/core/srml/system/Cargo.toml similarity index 91% rename from core/runtime/system/Cargo.toml rename to core/srml/system/Cargo.toml index d488f25910c89..c4e10ca8bdd99 100644 --- a/core/runtime/system/Cargo.toml +++ b/core/srml/system/Cargo.toml @@ -13,7 +13,7 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } [features] diff --git a/core/runtime/system/src/lib.rs b/core/srml/system/src/lib.rs similarity index 100% rename from core/runtime/system/src/lib.rs rename to core/srml/system/src/lib.rs diff --git a/core/runtime/timestamp/Cargo.toml b/core/srml/timestamp/Cargo.toml similarity index 92% rename from core/runtime/timestamp/Cargo.toml rename to core/srml/timestamp/Cargo.toml index 666cfc0397fac..d216f2d24fdb9 100644 --- a/core/runtime/timestamp/Cargo.toml +++ b/core/srml/timestamp/Cargo.toml @@ -9,7 +9,7 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } diff --git a/core/runtime/timestamp/src/lib.rs b/core/srml/timestamp/src/lib.rs similarity index 100% rename from core/runtime/timestamp/src/lib.rs rename to core/srml/timestamp/src/lib.rs diff --git a/core/runtime/treasury/Cargo.toml b/core/srml/treasury/Cargo.toml similarity index 92% rename from core/runtime/treasury/Cargo.toml rename to core/srml/treasury/Cargo.toml index 27b312034f49b..8a5d600181b5b 100644 --- a/core/runtime/treasury/Cargo.toml +++ b/core/srml/treasury/Cargo.toml @@ -9,7 +9,7 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../runtime/support", default_features = false } +substrate-runtime-support = { path = "../../srml/support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } diff --git a/core/runtime/treasury/src/lib.rs b/core/srml/treasury/src/lib.rs similarity index 100% rename from core/runtime/treasury/src/lib.rs rename to core/srml/treasury/src/lib.rs diff --git a/core/test-client/Cargo.toml b/core/test-client/Cargo.toml index d326221266213..84399810d3a58 100644 --- a/core/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -11,7 +11,7 @@ parity-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } -substrate-runtime-support = { path = "../runtime/support" } +substrate-runtime-support = { path = "../srml/support" } substrate-test-runtime = { path = "../test-runtime" } sr-primitives = { path = "../sr-primitives" } hashdb = "0.2.1" diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index 33bb560691e63..70087cdf19d3b 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -13,7 +13,7 @@ parity-codec = { path = "../../codec", default-features = false } parity-codec-derive = { path = "../../codec/derive", default-features = false } sr-std = { path = "../sr-std", default-features = false } sr-io = { path = "../sr-io", default-features = false } -substrate-runtime-support = { path = "../runtime/support", default-features = false } +substrate-runtime-support = { path = "../srml/support", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } sr-primitives = { path = "../sr-primitives", default-features = false } sr-version = { path = "../sr-version", default-features = false } diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index 4d46e2c67d39d..e77d75c7adeae 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -10,7 +10,7 @@ parity-codec = { path = "../../../codec", default-features = false } parity-codec-derive = { path = "../../../codec/derive", default-features = false } sr-std = { path = "../../sr-std", default-features = false } sr-io = { path = "../../sr-io", default-features = false } -substrate-runtime-support = { path = "../../runtime/support", default-features = false } +substrate-runtime-support = { path = "../../srml/support", default-features = false } sr-version = { path = "../../sr-version", default-features = false } substrate-primitives = { path = "../../primitives", default-features = false } sr-primitives = { path = "../../sr-primitives", default-features = false } diff --git a/doc/packages/substrate.adoc b/doc/packages/substrate.adoc index ba53e3ba1146b..583be3332a1e9 100644 --- a/doc/packages/substrate.adoc +++ b/doc/packages/substrate.adoc @@ -37,7 +37,7 @@ include::../../core/rpc/README.adoc[] include::../../core/rpc-servers/README.adoc[] -include::../../core/runtime/README.adoc[] +include::../../core/srml/README.adoc[] include::../../core/sr-io/README.adoc[] @@ -59,6 +59,6 @@ include::../../core/telemetry/README.adoc[] include::../../core/test-client/README.adoc[] -include::../../core/test-runtime/README.adoc[] +include::../../core/test-srml/README.adoc[] :leveloffset: -3 diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index aad3174287565..320c51efc2df5 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -18,11 +18,11 @@ node-runtime = { path = "../runtime" } [dev-dependencies] substrate-keyring = { path = "../../core/keyring" } sr-primitives = { path = "../../core/sr-primitives" } -substrate-runtime-support = { path = "../../core/runtime/support" } -substrate-runtime-balances = { path = "../../core/runtime/balances" } -substrate-runtime-session = { path = "../../core/runtime/session" } -substrate-runtime-staking = { path = "../../core/runtime/staking" } -substrate-runtime-system = { path = "../../core/runtime/system" } -substrate-runtime-consensus = { path = "../../core/runtime/consensus" } -substrate-runtime-timestamp = { path = "../../core/runtime/timestamp" } -substrate-runtime-treasury = { path = "../../core/runtime/treasury" } +substrate-runtime-support = { path = "../../core/srml/support" } +substrate-runtime-balances = { path = "../../core/srml/balances" } +substrate-runtime-session = { path = "../../core/srml/session" } +substrate-runtime-staking = { path = "../../core/srml/staking" } +substrate-runtime-system = { path = "../../core/srml/system" } +substrate-runtime-consensus = { path = "../../core/srml/consensus" } +substrate-runtime-timestamp = { path = "../../core/srml/timestamp" } +substrate-runtime-treasury = { path = "../../core/srml/treasury" } diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 072585ba5e4dc..dcf8ebb866310 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -14,21 +14,21 @@ parity-codec = { path = "../../codec" } parity-codec-derive = { path = "../../codec/derive" } sr-std = { path = "../../core/sr-std" } sr-io = { path = "../../core/sr-io" } -substrate-runtime-support = { path = "../../core/runtime/support" } +substrate-runtime-support = { path = "../../core/srml/support" } substrate-primitives = { path = "../../core/primitives" } substrate-keyring = { path = "../../core/keyring" } -substrate-runtime-balances = { path = "../../core/runtime/balances" } -substrate-runtime-consensus = { path = "../../core/runtime/consensus" } -substrate-runtime-contract = { path = "../../core/runtime/contract" } -substrate-runtime-council = { path = "../../core/runtime/council" } -substrate-runtime-democracy = { path = "../../core/runtime/democracy" } -substrate-runtime-executive = { path = "../../core/runtime/executive" } +substrate-runtime-balances = { path = "../../core/srml/balances" } +substrate-runtime-consensus = { path = "../../core/srml/consensus" } +substrate-runtime-contract = { path = "../../core/srml/contract" } +substrate-runtime-council = { path = "../../core/srml/council" } +substrate-runtime-democracy = { path = "../../core/srml/democracy" } +substrate-runtime-executive = { path = "../../core/srml/executive" } sr-primitives = { path = "../../core/sr-primitives" } -substrate-runtime-session = { path = "../../core/runtime/session" } -substrate-runtime-staking = { path = "../../core/runtime/staking" } -substrate-runtime-system = { path = "../../core/runtime/system" } -substrate-runtime-timestamp = { path = "../../core/runtime/timestamp" } -substrate-runtime-treasury = { path = "../../core/runtime/treasury" } +substrate-runtime-session = { path = "../../core/srml/session" } +substrate-runtime-staking = { path = "../../core/srml/staking" } +substrate-runtime-system = { path = "../../core/srml/system" } +substrate-runtime-timestamp = { path = "../../core/srml/timestamp" } +substrate-runtime-treasury = { path = "../../core/srml/treasury" } sr-version = { path = "../../core/sr-version" } node-primitives = { path = "../primitives" } diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index c7f1d771dc39c..edd567fdf9976 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -14,19 +14,19 @@ parity-codec = { path = "../../../codec", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } sr-std = { path = "../../../core/sr-std", default-features = false } sr-io = { path = "../../../core/sr-io", default-features = false } -substrate-runtime-support = { path = "../../../core/runtime/support", default-features = false } -substrate-runtime-balances = { path = "../../../core/runtime/balances", default-features = false } -substrate-runtime-consensus = { path = "../../../core/runtime/consensus", default-features = false } -substrate-runtime-contract = { path = "../../../core/runtime/contract", default-features = false } -substrate-runtime-council = { path = "../../../core/runtime/council", default-features = false } -substrate-runtime-democracy = { path = "../../../core/runtime/democracy", default-features = false } -substrate-runtime-executive = { path = "../../../core/runtime/executive", default-features = false } +substrate-runtime-support = { path = "../../../core/srml/support", default-features = false } +substrate-runtime-balances = { path = "../../../core/srml/balances", default-features = false } +substrate-runtime-consensus = { path = "../../../core/srml/consensus", default-features = false } +substrate-runtime-contract = { path = "../../../core/srml/contract", default-features = false } +substrate-runtime-council = { path = "../../../core/srml/council", default-features = false } +substrate-runtime-democracy = { path = "../../../core/srml/democracy", default-features = false } +substrate-runtime-executive = { path = "../../../core/srml/executive", default-features = false } sr-primitives = { path = "../../../core/sr-primitives", default-features = false } -substrate-runtime-session = { path = "../../../core/runtime/session", default-features = false } -substrate-runtime-staking = { path = "../../../core/runtime/staking", default-features = false } -substrate-runtime-system = { path = "../../../core/runtime/system", default-features = false } -substrate-runtime-timestamp = { path = "../../../core/runtime/timestamp", default-features = false } -substrate-runtime-treasury = { path = "../../../core/runtime/treasury", default-features = false } +substrate-runtime-session = { path = "../../../core/srml/session", default-features = false } +substrate-runtime-staking = { path = "../../../core/srml/staking", default-features = false } +substrate-runtime-system = { path = "../../../core/srml/system", default-features = false } +substrate-runtime-timestamp = { path = "../../../core/srml/timestamp", default-features = false } +substrate-runtime-treasury = { path = "../../../core/srml/treasury", default-features = false } sr-version = { path = "../../../core/sr-version", default-features = false } node-primitives = { path = "../../primitives", default-features = false } From 2a919d182607a297dd9dd6900b5d5ea26ad525c6 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 10:39:26 +0200 Subject: [PATCH 23/24] Rename substrate-runtime-* -> srml-* --- Cargo.lock | 544 ++++++++++----------- core/srml/balances/Cargo.toml | 10 +- core/srml/balances/src/lib.rs | 4 +- core/srml/consensus/Cargo.toml | 10 +- core/srml/consensus/src/lib.rs | 4 +- core/srml/contract/Cargo.toml | 14 +- core/srml/contract/src/lib.rs | 6 +- core/srml/council/Cargo.toml | 22 +- core/srml/council/src/lib.rs | 10 +- core/srml/council/src/motions.rs | 6 +- core/srml/council/src/seats.rs | 2 +- core/srml/council/src/voting.rs | 6 +- core/srml/democracy/Cargo.toml | 18 +- core/srml/democracy/src/lib.rs | 10 +- core/srml/example/Cargo.toml | 14 +- core/srml/example/src/lib.rs | 6 +- core/srml/executive/Cargo.toml | 12 +- core/srml/executive/src/lib.rs | 6 +- core/srml/session/Cargo.toml | 18 +- core/srml/session/src/lib.rs | 8 +- core/srml/staking/Cargo.toml | 24 +- core/srml/staking/src/lib.rs | 12 +- core/srml/support/Cargo.toml | 2 +- core/srml/support/src/dispatch.rs | 2 +- core/srml/support/src/storage/generator.rs | 2 +- core/srml/system/Cargo.toml | 6 +- core/srml/system/src/lib.rs | 2 +- core/srml/timestamp/Cargo.toml | 14 +- core/srml/timestamp/src/lib.rs | 6 +- core/srml/treasury/Cargo.toml | 26 +- core/srml/treasury/src/lib.rs | 6 +- core/test-client/Cargo.toml | 2 +- core/test-client/src/lib.rs | 2 +- core/test-runtime/Cargo.toml | 4 +- core/test-runtime/src/lib.rs | 2 +- core/test-runtime/wasm/Cargo.lock | 4 +- core/test-runtime/wasm/Cargo.toml | 4 +- node/executor/Cargo.toml | 16 +- node/executor/src/lib.rs | 16 +- node/runtime/Cargo.toml | 48 +- node/runtime/src/lib.rs | 24 +- node/runtime/wasm/Cargo.lock | 118 ++--- node/runtime/wasm/Cargo.toml | 48 +- 43 files changed, 560 insertions(+), 560 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1832338d0506a..6d4ab0eac72c4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1553,17 +1553,17 @@ dependencies = [ "parity-codec 0.1.0", "sr-io 0.1.0", "sr-primitives 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-session 0.1.0", + "srml-staking 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "srml-treasury 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-staking 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", - "substrate-runtime-treasury 0.1.0", "substrate-state-machine 0.1.0", "triehash 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1616,20 +1616,20 @@ dependencies = [ "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-contract 0.1.0", + "srml-council 0.1.0", + "srml-democracy 0.1.0", + "srml-executive 0.1.0", + "srml-session 0.1.0", + "srml-staking 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "srml-treasury 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-contract 0.1.0", - "substrate-runtime-council 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-executive 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-staking 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", - "substrate-runtime-treasury 0.1.0", ] [[package]] @@ -2465,6 +2465,256 @@ dependencies = [ "sr-std 0.1.0", ] +[[package]] +name = "srml-balances" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-consensus" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-contract" +version = "0.1.0" +dependencies = [ + "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", + "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "srml-council" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-democracy 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-democracy" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-example" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-executive" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-session" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-staking" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-sandbox 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-session 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-support" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-metadata 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-system" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-support 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-timestamp" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "srml-treasury" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-primitives 0.1.0", + "sr-std 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "stable_deref_trait" version = "1.0.0" @@ -2806,256 +3056,6 @@ dependencies = [ "substrate-rpc 0.1.0", ] -[[package]] -name = "substrate-runtime-balances" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-consensus" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-contract" -version = "0.1.0" -dependencies = [ - "assert_matches 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)", - "pwasm-utils 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-sandbox 0.1.0", - "sr-std 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "substrate-runtime-council" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-democracy" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-example" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-executive" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-session" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", -] - -[[package]] -name = "substrate-runtime-staking" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-sandbox 0.1.0", - "sr-std 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", -] - -[[package]] -name = "substrate-runtime-support" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "pretty_assertions 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.24 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-std 0.1.0", - "substrate-metadata 0.1.0", - "substrate-primitives 0.1.0", -] - -[[package]] -name = "substrate-runtime-system" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-support 0.1.0", -] - -[[package]] -name = "substrate-runtime-timestamp" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - -[[package]] -name = "substrate-runtime-treasury" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-primitives 0.1.0", - "sr-std 0.1.0", - "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", -] - [[package]] name = "substrate-serializer" version = "0.1.0" @@ -3147,12 +3147,12 @@ dependencies = [ "parity-codec 0.1.0", "rhododendron 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", "sr-primitives 0.1.0", + "srml-support 0.1.0", "substrate-bft 0.1.0", "substrate-client 0.1.0", "substrate-executor 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-support 0.1.0", "substrate-test-runtime 0.1.0", ] @@ -3170,9 +3170,9 @@ dependencies = [ "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", + "srml-support 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-support 0.1.0", ] [[package]] diff --git a/core/srml/balances/Cargo.toml b/core/srml/balances/Cargo.toml index 0aa73b06f1c6f..476b7f1240f41 100644 --- a/core/srml/balances/Cargo.toml +++ b/core/srml/balances/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-balances" +name = "srml-balances" version = "0.1.0" authors = ["Parity Technologies "] @@ -14,9 +14,9 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } +srml-system = { path = "../system", default_features = false } [features] default = ["std"] @@ -30,7 +30,7 @@ std = [ "substrate-primitives/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-primitives/std", - "substrate-runtime-system/std", + "srml-system/std", ] diff --git a/core/srml/balances/src/lib.rs b/core/srml/balances/src/lib.rs index fb67fc6126269..c14cd6235787d 100644 --- a/core/srml/balances/src/lib.rs +++ b/core/srml/balances/src/lib.rs @@ -26,7 +26,7 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg_attr(feature = "std", macro_use)] extern crate sr_std as rstd; @@ -38,7 +38,7 @@ extern crate parity_codec as codec; extern crate substrate_primitives; extern crate sr_io as runtime_io; extern crate sr_primitives as primitives; -extern crate substrate_runtime_system as system; +extern crate srml_system as system; use rstd::prelude::*; use rstd::{cmp, result}; diff --git a/core/srml/consensus/Cargo.toml b/core/srml/consensus/Cargo.toml index 27f32a0837e72..90ee4312d975a 100644 --- a/core/srml/consensus/Cargo.toml +++ b/core/srml/consensus/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-consensus" +name = "srml-consensus" version = "0.1.0" authors = ["Parity Technologies "] @@ -12,9 +12,9 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } +srml-system = { path = "../system", default_features = false } [features] default = ["std"] @@ -26,7 +26,7 @@ std = [ "substrate-primitives/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-primitives/std", - "substrate-runtime-system/std", + "srml-system/std", ] diff --git a/core/srml/consensus/src/lib.rs b/core/srml/consensus/src/lib.rs index 60438bf37b80b..40da2f25af0fb 100644 --- a/core/srml/consensus/src/lib.rs +++ b/core/srml/consensus/src/lib.rs @@ -23,7 +23,7 @@ extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg(feature = "std")] extern crate serde; @@ -38,7 +38,7 @@ extern crate parity_codec_derive; extern crate sr_io as runtime_io; extern crate sr_primitives as primitives; extern crate parity_codec as codec; -extern crate substrate_runtime_system as system; +extern crate srml_system as system; extern crate substrate_primitives; use rstd::prelude::*; diff --git a/core/srml/contract/Cargo.toml b/core/srml/contract/Cargo.toml index 2073590a59f1d..18e6964588144 100644 --- a/core/srml/contract/Cargo.toml +++ b/core/srml/contract/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-contract" +name = "srml-contract" version = "0.1.0" authors = ["Parity Technologies "] @@ -12,9 +12,9 @@ sr-primitives = { path = "../../sr-primitives", default_features = false } sr-io = { path = "../../sr-io", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-sandbox = { path = "../../sr-sandbox", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } -substrate-runtime-system = { path = "../../srml/system", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-balances = { path = "../balances", default_features = false } parity-wasm = { version = "0.31", default_features = false } pwasm-utils = { version = "0.3", default_features = false } @@ -32,10 +32,10 @@ std = [ "sr-primitives/std", "sr-io/std", "sr-std/std", - "substrate-runtime-balances/std", + "srml-balances/std", "sr-sandbox/std", - "substrate-runtime-support/std", - "substrate-runtime-system/std", + "srml-support/std", + "srml-system/std", "parity-wasm/std", "pwasm-utils/std", ] diff --git a/core/srml/contract/src/lib.rs b/core/srml/contract/src/lib.rs index 962c63dedf38a..f20e8ceb54a4e 100644 --- a/core/srml/contract/src/lib.rs +++ b/core/srml/contract/src/lib.rs @@ -69,11 +69,11 @@ extern crate sr_sandbox as sandbox; #[macro_use] extern crate sr_std as rstd; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_system as system; +extern crate srml_balances as balances; +extern crate srml_system as system; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; extern crate sr_primitives as runtime_primitives; extern crate substrate_primitives; diff --git a/core/srml/council/Cargo.toml b/core/srml/council/Cargo.toml index 21a629f95b4de..860a7d2c98f99 100644 --- a/core/srml/council/Cargo.toml +++ b/core/srml/council/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-council" +name = "srml-council" version = "0.1.0" authors = ["Parity Technologies "] @@ -15,12 +15,12 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } -substrate-runtime-democracy = { path = "../democracy", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } +srml-balances = { path = "../balances", default_features = false } +srml-democracy = { path = "../democracy", default_features = false } +srml-system = { path = "../system", default_features = false } [features] default = ["std"] @@ -34,10 +34,10 @@ std = [ "substrate-primitives/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-primitives/std", - "substrate-runtime-consensus/std", - "substrate-runtime-balances/std", - "substrate-runtime-democracy/std", - "substrate-runtime-system/std", + "srml-consensus/std", + "srml-balances/std", + "srml-democracy/std", + "srml-system/std", ] diff --git a/core/srml/council/src/lib.rs b/core/srml/council/src/lib.rs index fd4d11b6dd89e..1ca42835748eb 100644 --- a/core/srml/council/src/lib.rs +++ b/core/srml/council/src/lib.rs @@ -36,11 +36,11 @@ extern crate substrate_primitives; #[cfg(feature = "std")] extern crate substrate_keyring as keyring; #[macro_use] extern crate sr_std as rstd; extern crate sr_io as runtime_io; -#[macro_use] extern crate substrate_runtime_support; +#[macro_use] extern crate srml_support; extern crate sr_primitives as primitives; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_democracy as democracy; -extern crate substrate_runtime_system as system; +extern crate srml_balances as balances; +extern crate srml_democracy as democracy; +extern crate srml_system as system; #[cfg(feature = "std")] use rstd::prelude::*; @@ -49,7 +49,7 @@ use std::collections::HashMap; #[cfg(feature = "std")] use primitives::traits::As; #[cfg(feature = "std")] -use substrate_runtime_support::StorageValue; +use srml_support::StorageValue; pub mod voting; pub mod motions; diff --git a/core/srml/council/src/motions.rs b/core/srml/council/src/motions.rs index b9b26df00f015..babbec78347b9 100644 --- a/core/srml/council/src/motions.rs +++ b/core/srml/council/src/motions.rs @@ -20,8 +20,8 @@ use rstd::prelude::*; use rstd::result; use substrate_primitives::u32_trait::Value as U32; use primitives::traits::{Hash, EnsureOrigin, MaybeSerializeDebug, OnFinalise}; -use substrate_runtime_support::dispatch::{Result, Dispatchable, Parameter}; -use substrate_runtime_support::{StorageValue, StorageMap}; +use srml_support::dispatch::{Result, Dispatchable, Parameter}; +use srml_support::{StorageValue, StorageMap}; use super::{Trait as CouncilTrait, Module as Council}; use system::{self, ensure_signed}; @@ -221,7 +221,7 @@ mod tests { use super::RawEvent; use ::tests::*; use ::tests::{Call, Origin, Event as OuterEvent}; - use substrate_runtime_support::Hashable; + use srml_support::Hashable; use system::{EventRecord, Phase}; #[test] diff --git a/core/srml/council/src/seats.rs b/core/srml/council/src/seats.rs index 294035a25a941..8941dbeccb919 100644 --- a/core/srml/council/src/seats.rs +++ b/core/srml/council/src/seats.rs @@ -19,7 +19,7 @@ use rstd::prelude::*; use primitives::traits::{Zero, One, As, Lookup, OnFinalise}; use runtime_io::print; -use substrate_runtime_support::{StorageValue, StorageMap, dispatch::Result}; +use srml_support::{StorageValue, StorageMap, dispatch::Result}; use democracy; use balances::{self, address::Address}; use system::{self, ensure_signed, ensure_root}; diff --git a/core/srml/council/src/voting.rs b/core/srml/council/src/voting.rs index 450eb034f12cc..886adfc7bf664 100644 --- a/core/srml/council/src/voting.rs +++ b/core/srml/council/src/voting.rs @@ -20,8 +20,8 @@ use rstd::prelude::*; use rstd::borrow::Borrow; use primitives::traits::{OnFinalise, Hash}; use runtime_io::print; -use substrate_runtime_support::dispatch::Result; -use substrate_runtime_support::{StorageValue, StorageMap, IsSubType}; +use srml_support::dispatch::Result; +use srml_support::{StorageValue, StorageMap, IsSubType}; use {system, democracy}; use super::{Trait as CouncilTrait, Module as Council}; use system::{ensure_signed, ensure_root}; @@ -244,7 +244,7 @@ mod tests { use super::*; use ::tests::*; use ::tests::{Call, Origin}; - use substrate_runtime_support::Hashable; + use srml_support::Hashable; use democracy::VoteThreshold; #[test] diff --git a/core/srml/democracy/Cargo.toml b/core/srml/democracy/Cargo.toml index 5c4e702c0aee5..f7c08397217b9 100644 --- a/core/srml/democracy/Cargo.toml +++ b/core/srml/democracy/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-democracy" +name = "srml-democracy" version = "0.1.0" authors = ["Parity Technologies "] @@ -13,11 +13,11 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } +srml-balances = { path = "../balances", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } +srml-system = { path = "../system", default_features = false } [features] default = ["std"] @@ -29,9 +29,9 @@ std = [ "substrate-primitives/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-primitives/std", - "substrate-runtime-consensus/std", - "substrate-runtime-balances/std", - "substrate-runtime-system/std", + "srml-consensus/std", + "srml-balances/std", + "srml-system/std", ] diff --git a/core/srml/democracy/src/lib.rs b/core/srml/democracy/src/lib.rs index 13ad74be50e2c..f74f37094d8ae 100644 --- a/core/srml/democracy/src/lib.rs +++ b/core/srml/democracy/src/lib.rs @@ -33,19 +33,19 @@ extern crate parity_codec_derive; #[macro_use] extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support; +extern crate srml_support; extern crate parity_codec as codec; extern crate sr_io as runtime_io; extern crate sr_primitives as primitives; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_system as system; +extern crate srml_balances as balances; +extern crate srml_system as system; use rstd::prelude::*; use rstd::result; use primitives::traits::{Zero, OnFinalise, As, MaybeSerializeDebug}; -use substrate_runtime_support::{StorageValue, StorageMap, Parameter, Dispatchable, IsSubType}; -use substrate_runtime_support::dispatch::Result; +use srml_support::{StorageValue, StorageMap, Parameter, Dispatchable, IsSubType}; +use srml_support::dispatch::Result; use system::{ensure_signed, ensure_root}; #[cfg(any(feature = "std", test))] diff --git a/core/srml/example/Cargo.toml b/core/srml/example/Cargo.toml index 16a39b63cd731..23b82b02c4e84 100644 --- a/core/srml/example/Cargo.toml +++ b/core/srml/example/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-example" +name = "srml-example" version = "0.1.0" authors = ["Parity Technologies "] @@ -9,26 +9,26 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-balances = { path = "../balances", default_features = false } [features] default = ["std"] std = [ "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-primitives/std", - "substrate-runtime-balances/std", + "srml-balances/std", "serde/std", "serde_derive", "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", - "substrate-runtime-system/std", + "srml-system/std", ] diff --git a/core/srml/example/src/lib.rs b/core/srml/example/src/lib.rs index baa93146c031f..77e77ef1ad4df 100644 --- a/core/srml/example/src/lib.rs +++ b/core/srml/example/src/lib.rs @@ -46,17 +46,17 @@ extern crate parity_codec as codec; // Needed for type-safe access to storage DB. #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; // Needed for various traits. In our case, `OnFinalise`. extern crate sr_primitives as runtime_primitives; // `system` module provides us with all sorts of useful stuff and macros // depend on it being around. -extern crate substrate_runtime_system as system; +extern crate srml_system as system; // `balances` module is needed for our little example. It's not required in // general (though if you want your module to be able to work with tokens, then you // might find it useful). -extern crate substrate_runtime_balances as balances; +extern crate srml_balances as balances; use runtime_primitives::traits::OnFinalise; use runtime_support::{StorageValue, dispatch::Result}; diff --git a/core/srml/executive/Cargo.toml b/core/srml/executive/Cargo.toml index 6c096536edbdc..858848780405c 100644 --- a/core/srml/executive/Cargo.toml +++ b/core/srml/executive/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-executive" +name = "srml-executive" version = "0.1.0" authors = ["Parity Technologies "] @@ -10,24 +10,24 @@ serde_derive = { version = "1.0", optional = true } parity-codec = { path = "../../../codec", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } +srml-system = { path = "../system", default_features = false } [dev-dependencies] substrate-primitives = { path = "../../primitives" } -substrate-runtime-balances = { path = "../balances" } +srml-balances = { path = "../balances" } parity-codec-derive = { path = "../../../codec/derive" } [features] default = ["std"] std = [ "sr-std/std", - "substrate-runtime-support/std", + "srml-support/std", "serde/std", "serde_derive", "parity-codec/std", "sr-primitives/std", "sr-io/std", - "substrate-runtime-system/std", + "srml-system/std", ] diff --git a/core/srml/executive/src/lib.rs b/core/srml/executive/src/lib.rs index 1bcf321ce1cd9..a1086e0881534 100644 --- a/core/srml/executive/src/lib.rs +++ b/core/srml/executive/src/lib.rs @@ -29,13 +29,13 @@ extern crate serde_derive; extern crate parity_codec_derive; #[cfg_attr(test, macro_use)] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; extern crate sr_std as rstd; extern crate sr_io as runtime_io; extern crate parity_codec as codec; extern crate sr_primitives as primitives; -extern crate substrate_runtime_system as system; +extern crate srml_system as system; #[cfg(test)] #[macro_use] @@ -45,7 +45,7 @@ extern crate hex_literal; extern crate substrate_primitives; #[cfg(test)] -extern crate substrate_runtime_balances as balances; +extern crate srml_balances as balances; use rstd::prelude::*; use rstd::marker::PhantomData; diff --git a/core/srml/session/Cargo.toml b/core/srml/session/Cargo.toml index 3872a9a410821..04bab24084b31 100644 --- a/core/srml/session/Cargo.toml +++ b/core/srml/session/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-session" +name = "srml-session" version = "0.1.0" authors = ["Parity Technologies "] @@ -14,11 +14,11 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-timestamp = { path = "../timestamp", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-timestamp = { path = "../timestamp", default_features = false } [features] default = ["std"] @@ -32,9 +32,9 @@ std = [ "substrate-primitives/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-primitives/std", - "substrate-runtime-consensus/std", - "substrate-runtime-system/std", - "substrate-runtime-timestamp/std" + "srml-consensus/std", + "srml-system/std", + "srml-timestamp/std" ] diff --git a/core/srml/session/src/lib.rs b/core/srml/session/src/lib.rs index e0aa8dd69f445..61cf47a095717 100644 --- a/core/srml/session/src/lib.rs +++ b/core/srml/session/src/lib.rs @@ -36,7 +36,7 @@ extern crate substrate_primitives; extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[macro_use] extern crate parity_codec_derive; @@ -44,9 +44,9 @@ extern crate parity_codec_derive; extern crate sr_io as runtime_io; extern crate parity_codec as codec; extern crate sr_primitives as primitives; -extern crate substrate_runtime_consensus as consensus; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_timestamp as timestamp; +extern crate srml_consensus as consensus; +extern crate srml_system as system; +extern crate srml_timestamp as timestamp; use rstd::prelude::*; use primitives::traits::{Zero, One, OnFinalise, Convert, As}; diff --git a/core/srml/staking/Cargo.toml b/core/srml/staking/Cargo.toml index d8f6d0c6fe3d3..166082ba3a41d 100644 --- a/core/srml/staking/Cargo.toml +++ b/core/srml/staking/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-staking" +name = "srml-staking" version = "0.1.0" authors = ["Parity Technologies "] @@ -15,13 +15,13 @@ substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } sr-sandbox = { path = "../../sr-sandbox", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-session = { path = "../session", default_features = false } -substrate-runtime-timestamp = { path = "../timestamp", default_features = false } +srml-balances = { path = "../balances", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-session = { path = "../session", default_features = false } +srml-timestamp = { path = "../timestamp", default_features = false } [features] default = ["std"] @@ -36,10 +36,10 @@ std = [ "sr-std/std", "sr-io/std", "sr-sandbox/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-primitives/std", - "substrate-runtime-balances/std", - "substrate-runtime-session/std", - "substrate-runtime-system/std", - "substrate-runtime-timestamp/std" + "srml-balances/std", + "srml-session/std", + "srml-system/std", + "srml-timestamp/std" ] diff --git a/core/srml/staking/src/lib.rs b/core/srml/staking/src/lib.rs index 065454b398dd6..1e0ec4b7b2078 100644 --- a/core/srml/staking/src/lib.rs +++ b/core/srml/staking/src/lib.rs @@ -28,7 +28,7 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg_attr(feature = "std", macro_use)] extern crate sr_std as rstd; @@ -40,12 +40,12 @@ extern crate parity_codec as codec; extern crate substrate_primitives; extern crate sr_io as runtime_io; extern crate sr_primitives as primitives; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_consensus as consensus; +extern crate srml_balances as balances; +extern crate srml_consensus as consensus; extern crate sr_sandbox as sandbox; -extern crate substrate_runtime_session as session; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_timestamp as timestamp; +extern crate srml_session as session; +extern crate srml_system as system; +extern crate srml_timestamp as timestamp; use rstd::prelude::*; use runtime_support::{Parameter, StorageValue, StorageMap}; diff --git a/core/srml/support/Cargo.toml b/core/srml/support/Cargo.toml index 2791906bd73b1..cfaa674bd491b 100644 --- a/core/srml/support/Cargo.toml +++ b/core/srml/support/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-support" +name = "srml-support" version = "0.1.0" authors = ["Parity Technologies "] diff --git a/core/srml/support/src/dispatch.rs b/core/srml/support/src/dispatch.rs index 90f6fd7a6d4ff..092f1560903ba 100644 --- a/core/srml/support/src/dispatch.rs +++ b/core/srml/support/src/dispatch.rs @@ -78,7 +78,7 @@ macro_rules! decl_module { #[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))] // TODO: switching based on std feature is because of an issue in // serde-derive for when we attempt to derive `Deserialize` on these types, - // in a situation where we've imported `substrate_runtime_support` as another name. + // in a situation where we've imported `srml_support` as another name. #[cfg(feature = "std")] pub struct $mod_type<$trait_instance: $trait_name>(::std::marker::PhantomData<$trait_instance>); diff --git a/core/srml/support/src/storage/generator.rs b/core/srml/support/src/storage/generator.rs index 7c820cc5ccecf..1ff9731cf1c15 100644 --- a/core/srml/support/src/storage/generator.rs +++ b/core/srml/support/src/storage/generator.rs @@ -28,7 +28,7 @@ //! //! ```rust //! #[macro_use] -//! extern crate substrate_runtime_support; +//! extern crate srml_support; //! //! type AuthorityId = [u8; 32]; //! type Balance = u64; diff --git a/core/srml/system/Cargo.toml b/core/srml/system/Cargo.toml index c4e10ca8bdd99..89cb0a17f40de 100644 --- a/core/srml/system/Cargo.toml +++ b/core/srml/system/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-system" +name = "srml-system" version = "0.1.0" authors = ["Parity Technologies "] @@ -13,7 +13,7 @@ parity-codec-derive = { path = "../../../codec/derive", default_features = false substrate-primitives = { path = "../../primitives", default_features = false } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } [features] @@ -27,6 +27,6 @@ std = [ "substrate-primitives/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-primitives/std", ] diff --git a/core/srml/system/src/lib.rs b/core/srml/system/src/lib.rs index 1d156c5890ac7..39b2e2b0c19a2 100644 --- a/core/srml/system/src/lib.rs +++ b/core/srml/system/src/lib.rs @@ -26,7 +26,7 @@ extern crate substrate_primitives; extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg(feature = "std")] extern crate serde; diff --git a/core/srml/timestamp/Cargo.toml b/core/srml/timestamp/Cargo.toml index d216f2d24fdb9..e4f8accf5a7ae 100644 --- a/core/srml/timestamp/Cargo.toml +++ b/core/srml/timestamp/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-timestamp" +name = "srml-timestamp" version = "0.1.0" authors = ["Parity Technologies "] @@ -9,12 +9,12 @@ serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } sr-std = { path = "../../sr-std", default_features = false } sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } +srml-support = { path = "../support", default_features = false } sr-primitives = { path = "../../sr-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-consensus = { path = "../consensus", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-consensus = { path = "../consensus", default_features = false } [dev-dependencies] sr-io = { path = "../../sr-io", default_features = true } @@ -24,12 +24,12 @@ default = ["std"] std = [ "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-primitives/std", - "substrate-runtime-consensus/std", + "srml-consensus/std", "serde/std", "serde_derive", "parity-codec/std", "substrate-primitives/std", - "substrate-runtime-system/std", + "srml-system/std", ] diff --git a/core/srml/timestamp/src/lib.rs b/core/srml/timestamp/src/lib.rs index 3275a25f97388..2556b3211c741 100644 --- a/core/srml/timestamp/src/lib.rs +++ b/core/srml/timestamp/src/lib.rs @@ -37,7 +37,7 @@ extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg(any(feature = "std", test))] extern crate sr_io as runtime_io; @@ -49,8 +49,8 @@ extern crate serde_derive; #[cfg(test)] extern crate substrate_primitives; extern crate sr_primitives as runtime_primitives; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_consensus as consensus; +extern crate srml_system as system; +extern crate srml_consensus as consensus; extern crate parity_codec as codec; use runtime_support::{StorageValue, Parameter}; diff --git a/core/srml/treasury/Cargo.toml b/core/srml/treasury/Cargo.toml index 8a5d600181b5b..c5b1d5975b32c 100644 --- a/core/srml/treasury/Cargo.toml +++ b/core/srml/treasury/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "substrate-runtime-treasury" +name = "srml-treasury" version = "0.1.0" authors = ["Parity Technologies "] @@ -7,28 +7,28 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } -substrate-runtime-support = { path = "../../srml/support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } parity-codec = { path = "../../../codec", default_features = false } parity-codec-derive = { path = "../../../codec/derive", default_features = false } substrate-primitives = { path = "../../primitives", default_features = false } -substrate-runtime-system = { path = "../system", default_features = false } -substrate-runtime-balances = { path = "../balances", default_features = false } +sr-std = { path = "../../sr-std", default_features = false } +sr-io = { path = "../../sr-io", default_features = false } +sr-primitives = { path = "../../sr-primitives", default_features = false } +srml-support = { path = "../support", default_features = false } +srml-system = { path = "../system", default_features = false } +srml-balances = { path = "../balances", default_features = false } [features] default = ["std"] std = [ - "sr-std/std", - "sr-io/std", - "substrate-runtime-support/std", - "sr-primitives/std", - "substrate-runtime-balances/std", "serde/std", "serde_derive", "parity-codec/std", "parity-codec-derive/std", "substrate-primitives/std", - "substrate-runtime-system/std", + "sr-std/std", + "sr-io/std", + "sr-primitives/std", + "srml-support/std", + "srml-system/std", + "srml-balances/std", ] diff --git a/core/srml/treasury/src/lib.rs b/core/srml/treasury/src/lib.rs index b5d642af2cabb..867cd631bcace 100644 --- a/core/srml/treasury/src/lib.rs +++ b/core/srml/treasury/src/lib.rs @@ -22,7 +22,7 @@ extern crate sr_std as rstd; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[cfg(feature = "std")] extern crate sr_io as runtime_io; @@ -38,8 +38,8 @@ extern crate parity_codec as codec; #[cfg(test)] extern crate substrate_primitives; extern crate sr_primitives as runtime_primitives; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_balances as balances; +extern crate srml_system as system; +extern crate srml_balances as balances; use rstd::prelude::*; use runtime_support::{StorageValue, StorageMap}; diff --git a/core/test-client/Cargo.toml b/core/test-client/Cargo.toml index 84399810d3a58..1e21914e97065 100644 --- a/core/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -11,7 +11,7 @@ parity-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } -substrate-runtime-support = { path = "../srml/support" } +srml-support = { path = "../srml/support" } substrate-test-runtime = { path = "../test-runtime" } sr-primitives = { path = "../sr-primitives" } hashdb = "0.2.1" diff --git a/core/test-client/src/lib.rs b/core/test-client/src/lib.rs index 9021d5959ce42..808b151727d73 100644 --- a/core/test-client/src/lib.rs +++ b/core/test-client/src/lib.rs @@ -24,7 +24,7 @@ extern crate rhododendron; extern crate substrate_bft as bft; extern crate parity_codec as codec; extern crate substrate_primitives as primitives; -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; extern crate sr_primitives as runtime_primitives; #[macro_use] extern crate substrate_executor as executor; extern crate hashdb; diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index 70087cdf19d3b..03cbe15fbdf44 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -13,7 +13,7 @@ parity-codec = { path = "../../codec", default-features = false } parity-codec-derive = { path = "../../codec/derive", default-features = false } sr-std = { path = "../sr-std", default-features = false } sr-io = { path = "../sr-io", default-features = false } -substrate-runtime-support = { path = "../srml/support", default-features = false } +srml-support = { path = "../srml/support", default-features = false } substrate-primitives = { path = "../primitives", default-features = false } sr-primitives = { path = "../sr-primitives", default-features = false } sr-version = { path = "../sr-version", default-features = false } @@ -29,7 +29,7 @@ std = [ "parity-codec/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "substrate-primitives/std", "sr-primitives/std", "sr-version/std" diff --git a/core/test-runtime/src/lib.rs b/core/test-runtime/src/lib.rs index e2fc21ece1e64..2418ad34001dd 100644 --- a/core/test-runtime/src/lib.rs +++ b/core/test-runtime/src/lib.rs @@ -32,7 +32,7 @@ extern crate serde; extern crate serde_derive; #[macro_use] -extern crate substrate_runtime_support as runtime_support; +extern crate srml_support as runtime_support; #[macro_use] extern crate parity_codec_derive; #[macro_use] diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index c50d8a4937634..7a59574f8a02c 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -597,7 +597,7 @@ dependencies = [ ] [[package]] -name = "substrate-runtime-support" +name = "srml-support" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -641,7 +641,7 @@ dependencies = [ "sr-std 0.1.0", "sr-version 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-support 0.1.0", + "srml-support 0.1.0", ] [[package]] diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index e77d75c7adeae..211bb2611729b 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -10,7 +10,7 @@ parity-codec = { path = "../../../codec", default-features = false } parity-codec-derive = { path = "../../../codec/derive", default-features = false } sr-std = { path = "../../sr-std", default-features = false } sr-io = { path = "../../sr-io", default-features = false } -substrate-runtime-support = { path = "../../srml/support", default-features = false } +srml-support = { path = "../support", default-features = false } sr-version = { path = "../../sr-version", default-features = false } substrate-primitives = { path = "../../primitives", default-features = false } sr-primitives = { path = "../../sr-primitives", default-features = false } @@ -23,7 +23,7 @@ std = [ "parity-codec/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", + "srml-support/std", "sr-version/std", "substrate-primitives/std", "sr-primitives/std" diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 320c51efc2df5..507ca336926bc 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -18,11 +18,11 @@ node-runtime = { path = "../runtime" } [dev-dependencies] substrate-keyring = { path = "../../core/keyring" } sr-primitives = { path = "../../core/sr-primitives" } -substrate-runtime-support = { path = "../../core/srml/support" } -substrate-runtime-balances = { path = "../../core/srml/balances" } -substrate-runtime-session = { path = "../../core/srml/session" } -substrate-runtime-staking = { path = "../../core/srml/staking" } -substrate-runtime-system = { path = "../../core/srml/system" } -substrate-runtime-consensus = { path = "../../core/srml/consensus" } -substrate-runtime-timestamp = { path = "../../core/srml/timestamp" } -substrate-runtime-treasury = { path = "../../core/srml/treasury" } +srml-support = { path = "../../core/srml/support" } +srml-balances = { path = "../../core/srml/balances" } +srml-session = { path = "../../core/srml/session" } +srml-staking = { path = "../../core/srml/staking" } +srml-system = { path = "../../core/srml/system" } +srml-consensus = { path = "../../core/srml/consensus" } +srml-timestamp = { path = "../../core/srml/timestamp" } +srml-treasury = { path = "../../core/srml/treasury" } diff --git a/node/executor/src/lib.rs b/node/executor/src/lib.rs index bc97c3851df0a..a226834f1c80b 100644 --- a/node/executor/src/lib.rs +++ b/node/executor/src/lib.rs @@ -28,14 +28,14 @@ extern crate triehash; #[cfg(test)] extern crate substrate_keyring as keyring; #[cfg(test)] extern crate sr_primitives as runtime_primitives; -#[cfg(test)] extern crate substrate_runtime_support as runtime_support; -#[cfg(test)] extern crate substrate_runtime_balances as balances; -#[cfg(test)] extern crate substrate_runtime_session as session; -#[cfg(test)] extern crate substrate_runtime_staking as staking; -#[cfg(test)] extern crate substrate_runtime_system as system; -#[cfg(test)] extern crate substrate_runtime_consensus as consensus; -#[cfg(test)] extern crate substrate_runtime_timestamp as timestamp; -#[cfg(test)] extern crate substrate_runtime_treasury as treasury; +#[cfg(test)] extern crate srml_support as runtime_support; +#[cfg(test)] extern crate srml_balances as balances; +#[cfg(test)] extern crate srml_session as session; +#[cfg(test)] extern crate srml_staking as staking; +#[cfg(test)] extern crate srml_system as system; +#[cfg(test)] extern crate srml_consensus as consensus; +#[cfg(test)] extern crate srml_timestamp as timestamp; +#[cfg(test)] extern crate srml_treasury as treasury; #[cfg(test)] #[macro_use] extern crate hex_literal; pub use substrate_executor::NativeExecutor; diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index dcf8ebb866310..11d415fe11bb7 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -14,21 +14,21 @@ parity-codec = { path = "../../codec" } parity-codec-derive = { path = "../../codec/derive" } sr-std = { path = "../../core/sr-std" } sr-io = { path = "../../core/sr-io" } -substrate-runtime-support = { path = "../../core/srml/support" } +srml-support = { path = "../../core/srml/support" } substrate-primitives = { path = "../../core/primitives" } substrate-keyring = { path = "../../core/keyring" } -substrate-runtime-balances = { path = "../../core/srml/balances" } -substrate-runtime-consensus = { path = "../../core/srml/consensus" } -substrate-runtime-contract = { path = "../../core/srml/contract" } -substrate-runtime-council = { path = "../../core/srml/council" } -substrate-runtime-democracy = { path = "../../core/srml/democracy" } -substrate-runtime-executive = { path = "../../core/srml/executive" } +srml-balances = { path = "../../core/srml/balances" } +srml-consensus = { path = "../../core/srml/consensus" } +srml-contract = { path = "../../core/srml/contract" } +srml-council = { path = "../../core/srml/council" } +srml-democracy = { path = "../../core/srml/democracy" } +srml-executive = { path = "../../core/srml/executive" } sr-primitives = { path = "../../core/sr-primitives" } -substrate-runtime-session = { path = "../../core/srml/session" } -substrate-runtime-staking = { path = "../../core/srml/staking" } -substrate-runtime-system = { path = "../../core/srml/system" } -substrate-runtime-timestamp = { path = "../../core/srml/timestamp" } -substrate-runtime-treasury = { path = "../../core/srml/treasury" } +srml-session = { path = "../../core/srml/session" } +srml-staking = { path = "../../core/srml/staking" } +srml-system = { path = "../../core/srml/system" } +srml-timestamp = { path = "../../core/srml/timestamp" } +srml-treasury = { path = "../../core/srml/treasury" } sr-version = { path = "../../core/sr-version" } node-primitives = { path = "../primitives" } @@ -39,19 +39,19 @@ std = [ "substrate-primitives/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", - "substrate-runtime-balances/std", - "substrate-runtime-consensus/std", - "substrate-runtime-contract/std", - "substrate-runtime-council/std", - "substrate-runtime-democracy/std", - "substrate-runtime-executive/std", + "srml-support/std", + "srml-balances/std", + "srml-consensus/std", + "srml-contract/std", + "srml-council/std", + "srml-democracy/std", + "srml-executive/std", "sr-primitives/std", - "substrate-runtime-session/std", - "substrate-runtime-staking/std", - "substrate-runtime-system/std", - "substrate-runtime-timestamp/std", - "substrate-runtime-treasury/std", + "srml-session/std", + "srml-staking/std", + "srml-system/std", + "srml-timestamp/std", + "srml-treasury/std", "sr-version/std", "node-primitives/std", "serde_derive", diff --git a/node/runtime/src/lib.rs b/node/runtime/src/lib.rs index 5acaf50b63c1e..4eee9a24495cb 100644 --- a/node/runtime/src/lib.rs +++ b/node/runtime/src/lib.rs @@ -22,7 +22,7 @@ extern crate sr_io as runtime_io; #[macro_use] -extern crate substrate_runtime_support; +extern crate srml_support; #[macro_use] extern crate sr_primitives as runtime_primitives; @@ -42,17 +42,17 @@ extern crate parity_codec_derive; #[cfg_attr(not(feature = "std"), macro_use)] extern crate sr_std as rstd; -extern crate substrate_runtime_balances as balances; -extern crate substrate_runtime_consensus as consensus; -extern crate substrate_runtime_contract as contract; -extern crate substrate_runtime_council as council; -extern crate substrate_runtime_democracy as democracy; -extern crate substrate_runtime_executive as executive; -extern crate substrate_runtime_session as session; -extern crate substrate_runtime_staking as staking; -extern crate substrate_runtime_system as system; -extern crate substrate_runtime_timestamp as timestamp; -extern crate substrate_runtime_treasury as treasury; +extern crate srml_balances as balances; +extern crate srml_consensus as consensus; +extern crate srml_contract as contract; +extern crate srml_council as council; +extern crate srml_democracy as democracy; +extern crate srml_executive as executive; +extern crate srml_session as session; +extern crate srml_staking as staking; +extern crate srml_system as system; +extern crate srml_timestamp as timestamp; +extern crate srml_treasury as treasury; #[macro_use] extern crate sr_version as version; extern crate node_primitives; diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 5637e21b1ada2..2e1b7aee62727 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -274,18 +274,18 @@ dependencies = [ "sr-std 0.1.0", "sr-version 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-contract 0.1.0", - "substrate-runtime-council 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-executive 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-staking 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", - "substrate-runtime-treasury 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-contract 0.1.0", + "srml-council 0.1.0", + "srml-democracy 0.1.0", + "srml-executive 0.1.0", + "srml-session 0.1.0", + "srml-staking 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", + "srml-treasury 0.1.0", ] [[package]] @@ -677,7 +677,7 @@ dependencies = [ ] [[package]] -name = "substrate-runtime-balances" +name = "srml-balances" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -691,12 +691,12 @@ dependencies = [ "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", ] [[package]] -name = "substrate-runtime-consensus" +name = "srml-consensus" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -708,12 +708,12 @@ dependencies = [ "sr-primitives 0.1.0", "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", ] [[package]] -name = "substrate-runtime-contract" +name = "srml-contract" version = "0.1.0" dependencies = [ "parity-codec 0.1.0", @@ -726,13 +726,13 @@ dependencies = [ "sr-sandbox 0.1.0", "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", ] [[package]] -name = "substrate-runtime-council" +name = "srml-council" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -747,15 +747,15 @@ dependencies = [ "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-democracy 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-democracy 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", ] [[package]] -name = "substrate-runtime-democracy" +name = "srml-democracy" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -768,14 +768,14 @@ dependencies = [ "sr-primitives 0.1.0", "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", ] [[package]] -name = "substrate-runtime-executive" +name = "srml-executive" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -785,12 +785,12 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", ] [[package]] -name = "substrate-runtime-session" +name = "srml-session" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -804,14 +804,14 @@ dependencies = [ "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", ] [[package]] -name = "substrate-runtime-staking" +name = "srml-staking" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -826,16 +826,16 @@ dependencies = [ "sr-std 0.1.0", "substrate-keyring 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-session 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", - "substrate-runtime-timestamp 0.1.0", + "srml-balances 0.1.0", + "srml-consensus 0.1.0", + "srml-session 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", + "srml-timestamp 0.1.0", ] [[package]] -name = "substrate-runtime-support" +name = "srml-support" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -849,7 +849,7 @@ dependencies = [ ] [[package]] -name = "substrate-runtime-system" +name = "srml-system" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -862,11 +862,11 @@ dependencies = [ "sr-primitives 0.1.0", "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-support 0.1.0", + "srml-support 0.1.0", ] [[package]] -name = "substrate-runtime-timestamp" +name = "srml-timestamp" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -877,13 +877,13 @@ dependencies = [ "sr-primitives 0.1.0", "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-consensus 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", + "srml-consensus 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", ] [[package]] -name = "substrate-runtime-treasury" +name = "srml-treasury" version = "0.1.0" dependencies = [ "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -895,9 +895,9 @@ dependencies = [ "sr-primitives 0.1.0", "sr-std 0.1.0", "substrate-primitives 0.1.0", - "substrate-runtime-balances 0.1.0", - "substrate-runtime-support 0.1.0", - "substrate-runtime-system 0.1.0", + "srml-balances 0.1.0", + "srml-support 0.1.0", + "srml-system 0.1.0", ] [[package]] diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index edd567fdf9976..8561f7dcecdb1 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -14,19 +14,19 @@ parity-codec = { path = "../../../codec", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } sr-std = { path = "../../../core/sr-std", default-features = false } sr-io = { path = "../../../core/sr-io", default-features = false } -substrate-runtime-support = { path = "../../../core/srml/support", default-features = false } -substrate-runtime-balances = { path = "../../../core/srml/balances", default-features = false } -substrate-runtime-consensus = { path = "../../../core/srml/consensus", default-features = false } -substrate-runtime-contract = { path = "../../../core/srml/contract", default-features = false } -substrate-runtime-council = { path = "../../../core/srml/council", default-features = false } -substrate-runtime-democracy = { path = "../../../core/srml/democracy", default-features = false } -substrate-runtime-executive = { path = "../../../core/srml/executive", default-features = false } +srml-support = { path = "../../../core/srml/support", default-features = false } +srml-balances = { path = "../../../core/srml/balances", default-features = false } +srml-consensus = { path = "../../../core/srml/consensus", default-features = false } +srml-contract = { path = "../../../core/srml/contract", default-features = false } +srml-council = { path = "../../../core/srml/council", default-features = false } +srml-democracy = { path = "../../../core/srml/democracy", default-features = false } +srml-executive = { path = "../../../core/srml/executive", default-features = false } sr-primitives = { path = "../../../core/sr-primitives", default-features = false } -substrate-runtime-session = { path = "../../../core/srml/session", default-features = false } -substrate-runtime-staking = { path = "../../../core/srml/staking", default-features = false } -substrate-runtime-system = { path = "../../../core/srml/system", default-features = false } -substrate-runtime-timestamp = { path = "../../../core/srml/timestamp", default-features = false } -substrate-runtime-treasury = { path = "../../../core/srml/treasury", default-features = false } +srml-session = { path = "../../../core/srml/session", default-features = false } +srml-staking = { path = "../../../core/srml/staking", default-features = false } +srml-system = { path = "../../../core/srml/system", default-features = false } +srml-timestamp = { path = "../../../core/srml/timestamp", default-features = false } +srml-treasury = { path = "../../../core/srml/treasury", default-features = false } sr-version = { path = "../../../core/sr-version", default-features = false } node-primitives = { path = "../../primitives", default-features = false } @@ -38,19 +38,19 @@ std = [ "substrate-primitives/std", "sr-std/std", "sr-io/std", - "substrate-runtime-support/std", - "substrate-runtime-balances/std", - "substrate-runtime-consensus/std", - "substrate-runtime-contract/std", - "substrate-runtime-council/std", - "substrate-runtime-democracy/std", - "substrate-runtime-executive/std", + "srml-support/std", + "srml-balances/std", + "srml-consensus/std", + "srml-contract/std", + "srml-council/std", + "srml-democracy/std", + "srml-executive/std", "sr-primitives/std", - "substrate-runtime-session/std", - "substrate-runtime-staking/std", - "substrate-runtime-system/std", - "substrate-runtime-timestamp/std", - "substrate-runtime-treasury/std", + "srml-session/std", + "srml-staking/std", + "srml-system/std", + "srml-timestamp/std", + "srml-treasury/std", "sr-version/std", "node-primitives/std", ] From f7195cfae53d2e9ebfa6445449cb3d58d73c9281 Mon Sep 17 00:00:00 2001 From: Gav Date: Wed, 12 Sep 2018 11:02:21 +0200 Subject: [PATCH 24/24] Move srml to top-level --- Cargo.toml | 26 ++-- core/test-client/Cargo.toml | 2 +- core/test-runtime/Cargo.toml | 6 +- core/test-runtime/wasm/Cargo.lock | 30 ++-- core/test-runtime/wasm/Cargo.toml | 4 +- doc/packages/substrate.adoc | 2 +- node/executor/Cargo.toml | 16 +-- node/runtime/Cargo.toml | 24 ++-- node/runtime/wasm/Cargo.lock | 128 +++++++++--------- node/runtime/wasm/Cargo.toml | 24 ++-- {core/srml => srml}/README.adoc | 0 {core/srml => srml}/balances/Cargo.toml | 14 +- {core/srml => srml}/balances/src/address.rs | 0 .../balances/src/genesis_config.rs | 0 {core/srml => srml}/balances/src/lib.rs | 0 {core/srml => srml}/balances/src/mock.rs | 0 {core/srml => srml}/balances/src/tests.rs | 0 {core/srml => srml}/consensus/Cargo.toml | 12 +- {core/srml => srml}/consensus/src/lib.rs | 0 {core/srml => srml}/contract/Cargo.toml | 16 +-- .../srml => srml}/contract/src/account_db.rs | 0 .../srml => srml}/contract/src/double_map.rs | 0 {core/srml => srml}/contract/src/exec.rs | 0 {core/srml => srml}/contract/src/gas.rs | 0 .../contract/src/genesis_config.rs | 0 {core/srml => srml}/contract/src/lib.rs | 0 {core/srml => srml}/contract/src/tests.rs | 0 .../contract/src/vm/env_def/macros.rs | 0 .../contract/src/vm/env_def/mod.rs | 0 {core/srml => srml}/contract/src/vm/mod.rs | 0 .../srml => srml}/contract/src/vm/prepare.rs | 0 {core/srml => srml}/council/Cargo.toml | 14 +- {core/srml => srml}/council/src/lib.rs | 0 {core/srml => srml}/council/src/motions.rs | 0 {core/srml => srml}/council/src/seats.rs | 0 {core/srml => srml}/council/src/voting.rs | 0 {core/srml => srml}/democracy/Cargo.toml | 12 +- {core/srml => srml}/democracy/src/lib.rs | 0 .../democracy/src/vote_threshold.rs | 0 {core/srml => srml}/example/Cargo.toml | 12 +- {core/srml => srml}/example/src/lib.rs | 0 {core/srml => srml}/executive/Cargo.toml | 12 +- {core/srml => srml}/executive/src/lib.rs | 0 {core/srml => srml}/session/Cargo.toml | 14 +- {core/srml => srml}/session/src/lib.rs | 0 {core/srml => srml}/staking/Cargo.toml | 16 +-- .../staking/src/genesis_config.rs | 0 {core/srml => srml}/staking/src/lib.rs | 0 {core/srml => srml}/staking/src/mock.rs | 0 {core/srml => srml}/staking/src/tests.rs | 0 {core/srml => srml}/support/Cargo.toml | 12 +- {core/srml => srml}/support/README.adoc | 0 {core/srml => srml}/support/src/dispatch.rs | 0 {core/srml => srml}/support/src/event.rs | 0 {core/srml => srml}/support/src/hashable.rs | 0 {core/srml => srml}/support/src/lib.rs | 0 {core/srml => srml}/support/src/metadata.rs | 0 .../support/src/storage/generator.rs | 0 .../srml => srml}/support/src/storage/mod.rs | 0 {core/srml => srml}/system/Cargo.toml | 12 +- {core/srml => srml}/system/src/lib.rs | 0 {core/srml => srml}/timestamp/Cargo.toml | 12 +- {core/srml => srml}/timestamp/src/lib.rs | 0 {core/srml => srml}/treasury/Cargo.toml | 12 +- {core/srml => srml}/treasury/src/lib.rs | 0 65 files changed, 216 insertions(+), 216 deletions(-) rename {core/srml => srml}/README.adoc (100%) rename {core/srml => srml}/balances/Cargo.toml (58%) rename {core/srml => srml}/balances/src/address.rs (100%) rename {core/srml => srml}/balances/src/genesis_config.rs (100%) rename {core/srml => srml}/balances/src/lib.rs (100%) rename {core/srml => srml}/balances/src/mock.rs (100%) rename {core/srml => srml}/balances/src/tests.rs (100%) rename {core/srml => srml}/consensus/Cargo.toml (58%) rename {core/srml => srml}/consensus/src/lib.rs (100%) rename {core/srml => srml}/contract/Cargo.toml (67%) rename {core/srml => srml}/contract/src/account_db.rs (100%) rename {core/srml => srml}/contract/src/double_map.rs (100%) rename {core/srml => srml}/contract/src/exec.rs (100%) rename {core/srml => srml}/contract/src/gas.rs (100%) rename {core/srml => srml}/contract/src/genesis_config.rs (100%) rename {core/srml => srml}/contract/src/lib.rs (100%) rename {core/srml => srml}/contract/src/tests.rs (100%) rename {core/srml => srml}/contract/src/vm/env_def/macros.rs (100%) rename {core/srml => srml}/contract/src/vm/env_def/mod.rs (100%) rename {core/srml => srml}/contract/src/vm/mod.rs (100%) rename {core/srml => srml}/contract/src/vm/prepare.rs (100%) rename {core/srml => srml}/council/Cargo.toml (67%) rename {core/srml => srml}/council/src/lib.rs (100%) rename {core/srml => srml}/council/src/motions.rs (100%) rename {core/srml => srml}/council/src/seats.rs (100%) rename {core/srml => srml}/council/src/voting.rs (100%) rename {core/srml => srml}/democracy/Cargo.toml (65%) rename {core/srml => srml}/democracy/src/lib.rs (100%) rename {core/srml => srml}/democracy/src/vote_threshold.rs (100%) rename {core/srml => srml}/example/Cargo.toml (61%) rename {core/srml => srml}/example/src/lib.rs (100%) rename {core/srml => srml}/executive/Cargo.toml (61%) rename {core/srml => srml}/executive/src/lib.rs (100%) rename {core/srml => srml}/session/Cargo.toml (63%) rename {core/srml => srml}/session/src/lib.rs (100%) rename {core/srml => srml}/staking/Cargo.toml (64%) rename {core/srml => srml}/staking/src/genesis_config.rs (100%) rename {core/srml => srml}/staking/src/lib.rs (100%) rename {core/srml => srml}/staking/src/mock.rs (100%) rename {core/srml => srml}/staking/src/tests.rs (100%) rename {core/srml => srml}/support/Cargo.toml (58%) rename {core/srml => srml}/support/README.adoc (100%) rename {core/srml => srml}/support/src/dispatch.rs (100%) rename {core/srml => srml}/support/src/event.rs (100%) rename {core/srml => srml}/support/src/hashable.rs (100%) rename {core/srml => srml}/support/src/lib.rs (100%) rename {core/srml => srml}/support/src/metadata.rs (100%) rename {core/srml => srml}/support/src/storage/generator.rs (100%) rename {core/srml => srml}/support/src/storage/mod.rs (100%) rename {core/srml => srml}/system/Cargo.toml (57%) rename {core/srml => srml}/system/src/lib.rs (100%) rename {core/srml => srml}/timestamp/Cargo.toml (62%) rename {core/srml => srml}/timestamp/src/lib.rs (100%) rename {core/srml => srml}/treasury/Cargo.toml (61%) rename {core/srml => srml}/treasury/src/lib.rs (100%) diff --git a/Cargo.toml b/Cargo.toml index 7a0fb155ce959..81ec49dc999ae 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,20 +20,20 @@ members = [ "core/sr-sandbox", "core/sr-std", "core/sr-version", - "core/srml/support", - "core/srml/balances", - "core/srml/consensus", - "core/srml/contract", - "core/srml/council", - "core/srml/democracy", - "core/srml/example", - "core/srml/executive", + "srml/support", + "srml/balances", + "srml/consensus", + "srml/contract", + "srml/council", + "srml/democracy", + "srml/example", + "srml/executive", "core/sr-primitives", - "core/srml/session", - "core/srml/staking", - "core/srml/system", - "core/srml/timestamp", - "core/srml/treasury", + "srml/session", + "srml/staking", + "srml/system", + "srml/timestamp", + "srml/treasury", "core/serializer", "core/service", "core/state-db", diff --git a/core/test-client/Cargo.toml b/core/test-client/Cargo.toml index 1e21914e97065..fe85532d71877 100644 --- a/core/test-client/Cargo.toml +++ b/core/test-client/Cargo.toml @@ -11,7 +11,7 @@ parity-codec = { path = "../../codec" } substrate-executor = { path = "../executor" } substrate-keyring = { path = "../../core/keyring" } substrate-primitives = { path = "../primitives" } -srml-support = { path = "../srml/support" } +srml-support = { path = "../../srml/support" } substrate-test-runtime = { path = "../test-runtime" } sr-primitives = { path = "../sr-primitives" } hashdb = "0.2.1" diff --git a/core/test-runtime/Cargo.toml b/core/test-runtime/Cargo.toml index 03cbe15fbdf44..dc7266fc2e3a2 100644 --- a/core/test-runtime/Cargo.toml +++ b/core/test-runtime/Cargo.toml @@ -8,15 +8,15 @@ log = { version = "0.3", optional = true } hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", optional = true } serde_derive = { version = "1.0", optional = true } -substrate-keyring = { path = "../keyring", optional = true } parity-codec = { path = "../../codec", default-features = false } parity-codec-derive = { path = "../../codec/derive", default-features = false } +substrate-keyring = { path = "../keyring", optional = true } +substrate-primitives = { path = "../primitives", default-features = false } sr-std = { path = "../sr-std", default-features = false } sr-io = { path = "../sr-io", default-features = false } -srml-support = { path = "../srml/support", default-features = false } -substrate-primitives = { path = "../primitives", default-features = false } sr-primitives = { path = "../sr-primitives", default-features = false } sr-version = { path = "../sr-version", default-features = false } +srml-support = { path = "../../srml/support", default-features = false } [features] default = ["std"] diff --git a/core/test-runtime/wasm/Cargo.lock b/core/test-runtime/wasm/Cargo.lock index 7a59574f8a02c..b4a0da92bba36 100644 --- a/core/test-runtime/wasm/Cargo.lock +++ b/core/test-runtime/wasm/Cargo.lock @@ -556,6 +556,20 @@ dependencies = [ "sr-std 0.1.0", ] +[[package]] +name = "srml-support" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-io 0.1.0", + "sr-std 0.1.0", + "substrate-metadata 0.1.0", + "substrate-primitives 0.1.0", +] + [[package]] name = "stable_deref_trait" version = "1.0.0" @@ -596,20 +610,6 @@ dependencies = [ "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "srml-support" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-io 0.1.0", - "sr-std 0.1.0", - "substrate-metadata 0.1.0", - "substrate-primitives 0.1.0", -] - [[package]] name = "substrate-state-machine" version = "0.1.0" @@ -640,8 +640,8 @@ dependencies = [ "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", - "substrate-primitives 0.1.0", "srml-support 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] diff --git a/core/test-runtime/wasm/Cargo.toml b/core/test-runtime/wasm/Cargo.toml index 211bb2611729b..0720a20896fd4 100644 --- a/core/test-runtime/wasm/Cargo.toml +++ b/core/test-runtime/wasm/Cargo.toml @@ -8,12 +8,12 @@ log = { version = "0.3", optional = true } hex-literal = { version = "0.1.0", optional = true } parity-codec = { path = "../../../codec", default-features = false } parity-codec-derive = { path = "../../../codec/derive", default-features = false } +substrate-primitives = { path = "../../primitives", default-features = false } sr-std = { path = "../../sr-std", default-features = false } sr-io = { path = "../../sr-io", default-features = false } -srml-support = { path = "../support", default-features = false } sr-version = { path = "../../sr-version", default-features = false } -substrate-primitives = { path = "../../primitives", default-features = false } sr-primitives = { path = "../../sr-primitives", default-features = false } +srml-support = { path = "../../../srml/support", default-features = false } [features] default = [] diff --git a/doc/packages/substrate.adoc b/doc/packages/substrate.adoc index 583be3332a1e9..f82ed0ee688bc 100644 --- a/doc/packages/substrate.adoc +++ b/doc/packages/substrate.adoc @@ -37,7 +37,7 @@ include::../../core/rpc/README.adoc[] include::../../core/rpc-servers/README.adoc[] -include::../../core/srml/README.adoc[] +include::../../srml/README.adoc[] include::../../core/sr-io/README.adoc[] diff --git a/node/executor/Cargo.toml b/node/executor/Cargo.toml index 507ca336926bc..fe93fd278da7c 100644 --- a/node/executor/Cargo.toml +++ b/node/executor/Cargo.toml @@ -18,11 +18,11 @@ node-runtime = { path = "../runtime" } [dev-dependencies] substrate-keyring = { path = "../../core/keyring" } sr-primitives = { path = "../../core/sr-primitives" } -srml-support = { path = "../../core/srml/support" } -srml-balances = { path = "../../core/srml/balances" } -srml-session = { path = "../../core/srml/session" } -srml-staking = { path = "../../core/srml/staking" } -srml-system = { path = "../../core/srml/system" } -srml-consensus = { path = "../../core/srml/consensus" } -srml-timestamp = { path = "../../core/srml/timestamp" } -srml-treasury = { path = "../../core/srml/treasury" } +srml-support = { path = "../../srml/support" } +srml-balances = { path = "../../srml/balances" } +srml-session = { path = "../../srml/session" } +srml-staking = { path = "../../srml/staking" } +srml-system = { path = "../../srml/system" } +srml-consensus = { path = "../../srml/consensus" } +srml-timestamp = { path = "../../srml/timestamp" } +srml-treasury = { path = "../../srml/treasury" } diff --git a/node/runtime/Cargo.toml b/node/runtime/Cargo.toml index 11d415fe11bb7..a79cd9409bf29 100644 --- a/node/runtime/Cargo.toml +++ b/node/runtime/Cargo.toml @@ -14,21 +14,21 @@ parity-codec = { path = "../../codec" } parity-codec-derive = { path = "../../codec/derive" } sr-std = { path = "../../core/sr-std" } sr-io = { path = "../../core/sr-io" } -srml-support = { path = "../../core/srml/support" } +srml-support = { path = "../../srml/support" } substrate-primitives = { path = "../../core/primitives" } substrate-keyring = { path = "../../core/keyring" } -srml-balances = { path = "../../core/srml/balances" } -srml-consensus = { path = "../../core/srml/consensus" } -srml-contract = { path = "../../core/srml/contract" } -srml-council = { path = "../../core/srml/council" } -srml-democracy = { path = "../../core/srml/democracy" } -srml-executive = { path = "../../core/srml/executive" } +srml-balances = { path = "../../srml/balances" } +srml-consensus = { path = "../../srml/consensus" } +srml-contract = { path = "../../srml/contract" } +srml-council = { path = "../../srml/council" } +srml-democracy = { path = "../../srml/democracy" } +srml-executive = { path = "../../srml/executive" } sr-primitives = { path = "../../core/sr-primitives" } -srml-session = { path = "../../core/srml/session" } -srml-staking = { path = "../../core/srml/staking" } -srml-system = { path = "../../core/srml/system" } -srml-timestamp = { path = "../../core/srml/timestamp" } -srml-treasury = { path = "../../core/srml/treasury" } +srml-session = { path = "../../srml/session" } +srml-staking = { path = "../../srml/staking" } +srml-system = { path = "../../srml/system" } +srml-timestamp = { path = "../../srml/timestamp" } +srml-treasury = { path = "../../srml/treasury" } sr-version = { path = "../../core/sr-version" } node-primitives = { path = "../primitives" } diff --git a/node/runtime/wasm/Cargo.lock b/node/runtime/wasm/Cargo.lock index 2e1b7aee62727..37115314320fe 100644 --- a/node/runtime/wasm/Cargo.lock +++ b/node/runtime/wasm/Cargo.lock @@ -273,7 +273,6 @@ dependencies = [ "sr-primitives 0.1.0", "sr-std 0.1.0", "sr-version 0.1.0", - "substrate-primitives 0.1.0", "srml-balances 0.1.0", "srml-consensus 0.1.0", "srml-contract 0.1.0", @@ -286,6 +285,7 @@ dependencies = [ "srml-system 0.1.0", "srml-timestamp 0.1.0", "srml-treasury 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -627,55 +627,6 @@ dependencies = [ "sr-std 0.1.0", ] -[[package]] -name = "stable_deref_trait" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "substrate-keyring" -version = "0.1.0" -dependencies = [ - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "substrate-primitives 0.1.0", -] - -[[package]] -name = "substrate-metadata" -version = "0.1.0" -dependencies = [ - "parity-codec 0.1.0", -] - -[[package]] -name = "substrate-primitives" -version = "0.1.0" -dependencies = [ - "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", - "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", - "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", - "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "parity-codec 0.1.0", - "parity-codec-derive 0.1.0", - "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", - "sr-std 0.1.0", - "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", - "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "srml-balances" version = "0.1.0" @@ -689,10 +640,10 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -707,9 +658,9 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-primitives 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -725,10 +676,10 @@ dependencies = [ "sr-primitives 0.1.0", "sr-sandbox 0.1.0", "sr-std 0.1.0", - "substrate-primitives 0.1.0", "srml-balances 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -745,13 +696,13 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", "srml-balances 0.1.0", "srml-consensus 0.1.0", "srml-democracy 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -767,11 +718,11 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-primitives 0.1.0", "srml-balances 0.1.0", "srml-consensus 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -802,12 +753,12 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", "srml-consensus 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", "srml-timestamp 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -824,14 +775,14 @@ dependencies = [ "sr-primitives 0.1.0", "sr-sandbox 0.1.0", "sr-std 0.1.0", - "substrate-keyring 0.1.0", - "substrate-primitives 0.1.0", "srml-balances 0.1.0", "srml-consensus 0.1.0", "srml-session 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", "srml-timestamp 0.1.0", + "substrate-keyring 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -861,8 +812,8 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-primitives 0.1.0", "srml-support 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -876,10 +827,10 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-primitives 0.1.0", "srml-consensus 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", + "substrate-primitives 0.1.0", ] [[package]] @@ -894,10 +845,59 @@ dependencies = [ "sr-io 0.1.0", "sr-primitives 0.1.0", "sr-std 0.1.0", - "substrate-primitives 0.1.0", "srml-balances 0.1.0", "srml-support 0.1.0", "srml-system 0.1.0", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "stable_deref_trait" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "substrate-keyring" +version = "0.1.0" +dependencies = [ + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-primitives 0.1.0", +] + +[[package]] +name = "substrate-metadata" +version = "0.1.0" +dependencies = [ + "parity-codec 0.1.0", +] + +[[package]] +name = "substrate-primitives" +version = "0.1.0" +dependencies = [ + "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "fixed-hash 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "hashdb 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-codec 0.1.0", + "parity-codec-derive 0.1.0", + "patricia-trie 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "plain_hasher 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rlp 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)", + "sr-std 0.1.0", + "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "uint 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/node/runtime/wasm/Cargo.toml b/node/runtime/wasm/Cargo.toml index 8561f7dcecdb1..ec718c477ef76 100644 --- a/node/runtime/wasm/Cargo.toml +++ b/node/runtime/wasm/Cargo.toml @@ -14,19 +14,19 @@ parity-codec = { path = "../../../codec", default-features = false } substrate-primitives = { path = "../../../core/primitives", default-features = false } sr-std = { path = "../../../core/sr-std", default-features = false } sr-io = { path = "../../../core/sr-io", default-features = false } -srml-support = { path = "../../../core/srml/support", default-features = false } -srml-balances = { path = "../../../core/srml/balances", default-features = false } -srml-consensus = { path = "../../../core/srml/consensus", default-features = false } -srml-contract = { path = "../../../core/srml/contract", default-features = false } -srml-council = { path = "../../../core/srml/council", default-features = false } -srml-democracy = { path = "../../../core/srml/democracy", default-features = false } -srml-executive = { path = "../../../core/srml/executive", default-features = false } +srml-support = { path = "../../../srml/support", default-features = false } +srml-balances = { path = "../../../srml/balances", default-features = false } +srml-consensus = { path = "../../../srml/consensus", default-features = false } +srml-contract = { path = "../../../srml/contract", default-features = false } +srml-council = { path = "../../../srml/council", default-features = false } +srml-democracy = { path = "../../../srml/democracy", default-features = false } +srml-executive = { path = "../../../srml/executive", default-features = false } sr-primitives = { path = "../../../core/sr-primitives", default-features = false } -srml-session = { path = "../../../core/srml/session", default-features = false } -srml-staking = { path = "../../../core/srml/staking", default-features = false } -srml-system = { path = "../../../core/srml/system", default-features = false } -srml-timestamp = { path = "../../../core/srml/timestamp", default-features = false } -srml-treasury = { path = "../../../core/srml/treasury", default-features = false } +srml-session = { path = "../../../srml/session", default-features = false } +srml-staking = { path = "../../../srml/staking", default-features = false } +srml-system = { path = "../../../srml/system", default-features = false } +srml-timestamp = { path = "../../../srml/timestamp", default-features = false } +srml-treasury = { path = "../../../srml/treasury", default-features = false } sr-version = { path = "../../../core/sr-version", default-features = false } node-primitives = { path = "../../primitives", default-features = false } diff --git a/core/srml/README.adoc b/srml/README.adoc similarity index 100% rename from core/srml/README.adoc rename to srml/README.adoc diff --git a/core/srml/balances/Cargo.toml b/srml/balances/Cargo.toml similarity index 58% rename from core/srml/balances/Cargo.toml rename to srml/balances/Cargo.toml index 476b7f1240f41..28059c34093f6 100644 --- a/core/srml/balances/Cargo.toml +++ b/srml/balances/Cargo.toml @@ -8,14 +8,14 @@ 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} -substrate-keyring = { path = "../../keyring", optional = true } -parity-codec = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-keyring = { path = "../../core/keyring", optional = true } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } srml-system = { path = "../system", default_features = false } [features] diff --git a/core/srml/balances/src/address.rs b/srml/balances/src/address.rs similarity index 100% rename from core/srml/balances/src/address.rs rename to srml/balances/src/address.rs diff --git a/core/srml/balances/src/genesis_config.rs b/srml/balances/src/genesis_config.rs similarity index 100% rename from core/srml/balances/src/genesis_config.rs rename to srml/balances/src/genesis_config.rs diff --git a/core/srml/balances/src/lib.rs b/srml/balances/src/lib.rs similarity index 100% rename from core/srml/balances/src/lib.rs rename to srml/balances/src/lib.rs diff --git a/core/srml/balances/src/mock.rs b/srml/balances/src/mock.rs similarity index 100% rename from core/srml/balances/src/mock.rs rename to srml/balances/src/mock.rs diff --git a/core/srml/balances/src/tests.rs b/srml/balances/src/tests.rs similarity index 100% rename from core/srml/balances/src/tests.rs rename to srml/balances/src/tests.rs diff --git a/core/srml/consensus/Cargo.toml b/srml/consensus/Cargo.toml similarity index 58% rename from core/srml/consensus/Cargo.toml rename to srml/consensus/Cargo.toml index 90ee4312d975a..e6945f15bdd83 100644 --- a/core/srml/consensus/Cargo.toml +++ b/srml/consensus/Cargo.toml @@ -7,13 +7,13 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -parity-codec = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } srml-system = { path = "../system", default_features = false } [features] diff --git a/core/srml/consensus/src/lib.rs b/srml/consensus/src/lib.rs similarity index 100% rename from core/srml/consensus/src/lib.rs rename to srml/consensus/src/lib.rs diff --git a/core/srml/contract/Cargo.toml b/srml/contract/Cargo.toml similarity index 67% rename from core/srml/contract/Cargo.toml rename to srml/contract/Cargo.toml index 18e6964588144..2e83124092797 100644 --- a/core/srml/contract/Cargo.toml +++ b/srml/contract/Cargo.toml @@ -6,17 +6,17 @@ authors = ["Parity Technologies "] [dependencies] serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -parity-codec = { path = "../../../codec", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-sandbox = { path = "../../sr-sandbox", default_features = false } +pwasm-utils = { version = "0.3", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-wasm = { version = "0.31", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-sandbox = { path = "../../core/sr-sandbox", default_features = false } srml-support = { path = "../support", default_features = false } srml-system = { path = "../system", default_features = false } srml-balances = { path = "../balances", default_features = false } -parity-wasm = { version = "0.31", default_features = false } -pwasm-utils = { version = "0.3", default_features = false } [dev-dependencies] wabt = "0.4" diff --git a/core/srml/contract/src/account_db.rs b/srml/contract/src/account_db.rs similarity index 100% rename from core/srml/contract/src/account_db.rs rename to srml/contract/src/account_db.rs diff --git a/core/srml/contract/src/double_map.rs b/srml/contract/src/double_map.rs similarity index 100% rename from core/srml/contract/src/double_map.rs rename to srml/contract/src/double_map.rs diff --git a/core/srml/contract/src/exec.rs b/srml/contract/src/exec.rs similarity index 100% rename from core/srml/contract/src/exec.rs rename to srml/contract/src/exec.rs diff --git a/core/srml/contract/src/gas.rs b/srml/contract/src/gas.rs similarity index 100% rename from core/srml/contract/src/gas.rs rename to srml/contract/src/gas.rs diff --git a/core/srml/contract/src/genesis_config.rs b/srml/contract/src/genesis_config.rs similarity index 100% rename from core/srml/contract/src/genesis_config.rs rename to srml/contract/src/genesis_config.rs diff --git a/core/srml/contract/src/lib.rs b/srml/contract/src/lib.rs similarity index 100% rename from core/srml/contract/src/lib.rs rename to srml/contract/src/lib.rs diff --git a/core/srml/contract/src/tests.rs b/srml/contract/src/tests.rs similarity index 100% rename from core/srml/contract/src/tests.rs rename to srml/contract/src/tests.rs diff --git a/core/srml/contract/src/vm/env_def/macros.rs b/srml/contract/src/vm/env_def/macros.rs similarity index 100% rename from core/srml/contract/src/vm/env_def/macros.rs rename to srml/contract/src/vm/env_def/macros.rs diff --git a/core/srml/contract/src/vm/env_def/mod.rs b/srml/contract/src/vm/env_def/mod.rs similarity index 100% rename from core/srml/contract/src/vm/env_def/mod.rs rename to srml/contract/src/vm/env_def/mod.rs diff --git a/core/srml/contract/src/vm/mod.rs b/srml/contract/src/vm/mod.rs similarity index 100% rename from core/srml/contract/src/vm/mod.rs rename to srml/contract/src/vm/mod.rs diff --git a/core/srml/contract/src/vm/prepare.rs b/srml/contract/src/vm/prepare.rs similarity index 100% rename from core/srml/contract/src/vm/prepare.rs rename to srml/contract/src/vm/prepare.rs diff --git a/core/srml/council/Cargo.toml b/srml/council/Cargo.toml similarity index 67% rename from core/srml/council/Cargo.toml rename to srml/council/Cargo.toml index 860a7d2c98f99..7f546dd2773d4 100644 --- a/core/srml/council/Cargo.toml +++ b/srml/council/Cargo.toml @@ -9,14 +9,14 @@ integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", bran serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } safe-mix = { version = "1.0", default_features = false} -substrate-keyring = { path = "../../keyring", optional = true } -parity-codec = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-keyring = { path = "../../core/keyring", optional = true } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } srml-consensus = { path = "../consensus", default_features = false } srml-balances = { path = "../balances", default_features = false } srml-democracy = { path = "../democracy", default_features = false } diff --git a/core/srml/council/src/lib.rs b/srml/council/src/lib.rs similarity index 100% rename from core/srml/council/src/lib.rs rename to srml/council/src/lib.rs diff --git a/core/srml/council/src/motions.rs b/srml/council/src/motions.rs similarity index 100% rename from core/srml/council/src/motions.rs rename to srml/council/src/motions.rs diff --git a/core/srml/council/src/seats.rs b/srml/council/src/seats.rs similarity index 100% rename from core/srml/council/src/seats.rs rename to srml/council/src/seats.rs diff --git a/core/srml/council/src/voting.rs b/srml/council/src/voting.rs similarity index 100% rename from core/srml/council/src/voting.rs rename to srml/council/src/voting.rs diff --git a/core/srml/democracy/Cargo.toml b/srml/democracy/Cargo.toml similarity index 65% rename from core/srml/democracy/Cargo.toml rename to srml/democracy/Cargo.toml index f7c08397217b9..5a523d5f5c31d 100644 --- a/core/srml/democracy/Cargo.toml +++ b/srml/democracy/Cargo.toml @@ -8,13 +8,13 @@ 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 = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } srml-balances = { path = "../balances", default_features = false } srml-consensus = { path = "../consensus", default_features = false } srml-system = { path = "../system", default_features = false } diff --git a/core/srml/democracy/src/lib.rs b/srml/democracy/src/lib.rs similarity index 100% rename from core/srml/democracy/src/lib.rs rename to srml/democracy/src/lib.rs diff --git a/core/srml/democracy/src/vote_threshold.rs b/srml/democracy/src/vote_threshold.rs similarity index 100% rename from core/srml/democracy/src/vote_threshold.rs rename to srml/democracy/src/vote_threshold.rs diff --git a/core/srml/example/Cargo.toml b/srml/example/Cargo.toml similarity index 61% rename from core/srml/example/Cargo.toml rename to srml/example/Cargo.toml index 23b82b02c4e84..cb173c08960e2 100644 --- a/core/srml/example/Cargo.toml +++ b/srml/example/Cargo.toml @@ -7,13 +7,13 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } -parity-codec = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } srml-system = { path = "../system", default_features = false } srml-balances = { path = "../balances", default_features = false } diff --git a/core/srml/example/src/lib.rs b/srml/example/src/lib.rs similarity index 100% rename from core/srml/example/src/lib.rs rename to srml/example/src/lib.rs diff --git a/core/srml/executive/Cargo.toml b/srml/executive/Cargo.toml similarity index 61% rename from core/srml/executive/Cargo.toml rename to srml/executive/Cargo.toml index 858848780405c..113a7d307a71e 100644 --- a/core/srml/executive/Cargo.toml +++ b/srml/executive/Cargo.toml @@ -7,17 +7,17 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -parity-codec = { path = "../../../codec", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } srml-system = { path = "../system", default_features = false } [dev-dependencies] -substrate-primitives = { path = "../../primitives" } +parity-codec-derive = { path = "../../codec/derive" } +substrate-primitives = { path = "../../core/primitives" } srml-balances = { path = "../balances" } -parity-codec-derive = { path = "../../../codec/derive" } [features] default = ["std"] diff --git a/core/srml/executive/src/lib.rs b/srml/executive/src/lib.rs similarity index 100% rename from core/srml/executive/src/lib.rs rename to srml/executive/src/lib.rs diff --git a/core/srml/session/Cargo.toml b/srml/session/Cargo.toml similarity index 63% rename from core/srml/session/Cargo.toml rename to srml/session/Cargo.toml index 04bab24084b31..5e2e29ab05e72 100644 --- a/core/srml/session/Cargo.toml +++ b/srml/session/Cargo.toml @@ -8,14 +8,14 @@ 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} -substrate-keyring = { path = "../../keyring", optional = true } -parity-codec = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } +substrate-keyring = { path = "../../core/keyring", optional = true } +substrate-primitives = { path = "../../core/primitives", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } srml-consensus = { path = "../consensus", default_features = false } srml-system = { path = "../system", default_features = false } srml-timestamp = { path = "../timestamp", default_features = false } diff --git a/core/srml/session/src/lib.rs b/srml/session/src/lib.rs similarity index 100% rename from core/srml/session/src/lib.rs rename to srml/session/src/lib.rs diff --git a/core/srml/staking/Cargo.toml b/srml/staking/Cargo.toml similarity index 64% rename from core/srml/staking/Cargo.toml rename to srml/staking/Cargo.toml index 166082ba3a41d..6fa892e5c6698 100644 --- a/core/srml/staking/Cargo.toml +++ b/srml/staking/Cargo.toml @@ -8,15 +8,15 @@ 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} -substrate-keyring = { path = "../../keyring", optional = true } -parity-codec = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } -sr-sandbox = { path = "../../sr-sandbox", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-keyring = { path = "../../core/keyring", optional = true } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-sandbox = { path = "../../core/sr-sandbox", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } srml-balances = { path = "../balances", default_features = false } srml-consensus = { path = "../consensus", default_features = false } srml-system = { path = "../system", default_features = false } diff --git a/core/srml/staking/src/genesis_config.rs b/srml/staking/src/genesis_config.rs similarity index 100% rename from core/srml/staking/src/genesis_config.rs rename to srml/staking/src/genesis_config.rs diff --git a/core/srml/staking/src/lib.rs b/srml/staking/src/lib.rs similarity index 100% rename from core/srml/staking/src/lib.rs rename to srml/staking/src/lib.rs diff --git a/core/srml/staking/src/mock.rs b/srml/staking/src/mock.rs similarity index 100% rename from core/srml/staking/src/mock.rs rename to srml/staking/src/mock.rs diff --git a/core/srml/staking/src/tests.rs b/srml/staking/src/tests.rs similarity index 100% rename from core/srml/staking/src/tests.rs rename to srml/staking/src/tests.rs diff --git a/core/srml/support/Cargo.toml b/srml/support/Cargo.toml similarity index 58% rename from core/srml/support/Cargo.toml rename to srml/support/Cargo.toml index cfaa674bd491b..3f6d4e9e45779 100644 --- a/core/srml/support/Cargo.toml +++ b/srml/support/Cargo.toml @@ -7,16 +7,16 @@ authors = ["Parity Technologies "] hex-literal = { version = "0.1.0", optional = true } serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -parity-codec = { path = "../../../codec", default_features = false } -substrate-metadata = { path = "../../metadata", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +substrate-metadata = { path = "../../core/metadata", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } [dev-dependencies] pretty_assertions = "0.5.1" serde_json = { version = "1.0" } -parity-codec-derive = { path = "../../../codec/derive" } +parity-codec-derive = { path = "../../codec/derive" } [features] default = ["std"] diff --git a/core/srml/support/README.adoc b/srml/support/README.adoc similarity index 100% rename from core/srml/support/README.adoc rename to srml/support/README.adoc diff --git a/core/srml/support/src/dispatch.rs b/srml/support/src/dispatch.rs similarity index 100% rename from core/srml/support/src/dispatch.rs rename to srml/support/src/dispatch.rs diff --git a/core/srml/support/src/event.rs b/srml/support/src/event.rs similarity index 100% rename from core/srml/support/src/event.rs rename to srml/support/src/event.rs diff --git a/core/srml/support/src/hashable.rs b/srml/support/src/hashable.rs similarity index 100% rename from core/srml/support/src/hashable.rs rename to srml/support/src/hashable.rs diff --git a/core/srml/support/src/lib.rs b/srml/support/src/lib.rs similarity index 100% rename from core/srml/support/src/lib.rs rename to srml/support/src/lib.rs diff --git a/core/srml/support/src/metadata.rs b/srml/support/src/metadata.rs similarity index 100% rename from core/srml/support/src/metadata.rs rename to srml/support/src/metadata.rs diff --git a/core/srml/support/src/storage/generator.rs b/srml/support/src/storage/generator.rs similarity index 100% rename from core/srml/support/src/storage/generator.rs rename to srml/support/src/storage/generator.rs diff --git a/core/srml/support/src/storage/mod.rs b/srml/support/src/storage/mod.rs similarity index 100% rename from core/srml/support/src/storage/mod.rs rename to srml/support/src/storage/mod.rs diff --git a/core/srml/system/Cargo.toml b/srml/system/Cargo.toml similarity index 57% rename from core/srml/system/Cargo.toml rename to srml/system/Cargo.toml index 89cb0a17f40de..ce3f148fe4f8c 100644 --- a/core/srml/system/Cargo.toml +++ b/srml/system/Cargo.toml @@ -8,13 +8,13 @@ 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 = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } [features] default = ["std"] diff --git a/core/srml/system/src/lib.rs b/srml/system/src/lib.rs similarity index 100% rename from core/srml/system/src/lib.rs rename to srml/system/src/lib.rs diff --git a/core/srml/timestamp/Cargo.toml b/srml/timestamp/Cargo.toml similarity index 62% rename from core/srml/timestamp/Cargo.toml rename to srml/timestamp/Cargo.toml index e4f8accf5a7ae..dd610998504b4 100644 --- a/core/srml/timestamp/Cargo.toml +++ b/srml/timestamp/Cargo.toml @@ -7,17 +7,17 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } -parity-codec = { path = "../../../codec", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } srml-system = { path = "../system", default_features = false } srml-consensus = { path = "../consensus", default_features = false } [dev-dependencies] -sr-io = { path = "../../sr-io", default_features = true } +sr-io = { path = "../../core/sr-io", default_features = true } [features] default = ["std"] diff --git a/core/srml/timestamp/src/lib.rs b/srml/timestamp/src/lib.rs similarity index 100% rename from core/srml/timestamp/src/lib.rs rename to srml/timestamp/src/lib.rs diff --git a/core/srml/treasury/Cargo.toml b/srml/treasury/Cargo.toml similarity index 61% rename from core/srml/treasury/Cargo.toml rename to srml/treasury/Cargo.toml index c5b1d5975b32c..01166c04320e3 100644 --- a/core/srml/treasury/Cargo.toml +++ b/srml/treasury/Cargo.toml @@ -7,12 +7,12 @@ authors = ["Parity Technologies "] hex-literal = "0.1.0" serde = { version = "1.0", default_features = false } serde_derive = { version = "1.0", optional = true } -parity-codec = { path = "../../../codec", default_features = false } -parity-codec-derive = { path = "../../../codec/derive", default_features = false } -substrate-primitives = { path = "../../primitives", default_features = false } -sr-std = { path = "../../sr-std", default_features = false } -sr-io = { path = "../../sr-io", default_features = false } -sr-primitives = { path = "../../sr-primitives", default_features = false } +parity-codec = { path = "../../codec", default_features = false } +parity-codec-derive = { path = "../../codec/derive", default_features = false } +substrate-primitives = { path = "../../core/primitives", default_features = false } +sr-std = { path = "../../core/sr-std", default_features = false } +sr-io = { path = "../../core/sr-io", default_features = false } +sr-primitives = { path = "../../core/sr-primitives", default_features = false } srml-support = { path = "../support", default_features = false } srml-system = { path = "../system", default_features = false } srml-balances = { path = "../balances", default_features = false } diff --git a/core/srml/treasury/src/lib.rs b/srml/treasury/src/lib.rs similarity index 100% rename from core/srml/treasury/src/lib.rs rename to srml/treasury/src/lib.rs