From 0ca6ee45b5620fc79006198d4b6fa95068e2ba6c Mon Sep 17 00:00:00 2001
From: Guillaume Thiolliere <gui.thiolliere@gmail.com>
Date: Mon, 14 Jun 2021 16:33:55 +0200
Subject: [PATCH] companion for staking/election: prolonged era and emergency
 mode for governance submission. (#3201)

* companion

* update Substrate

Co-authored-by: parity-processbot <>
---
 polkadot/Cargo.lock                      | 314 ++++++++++++-----------
 polkadot/runtime/kusama/Cargo.toml       |   3 +
 polkadot/runtime/kusama/src/lib.rs       |   4 +
 polkadot/runtime/polkadot/Cargo.toml     |   3 +
 polkadot/runtime/polkadot/src/lib.rs     |   4 +
 polkadot/runtime/test-runtime/src/lib.rs |   2 +
 polkadot/runtime/westend/Cargo.toml      |   3 +
 polkadot/runtime/westend/src/lib.rs      |   4 +
 8 files changed, 182 insertions(+), 155 deletions(-)

diff --git a/polkadot/Cargo.lock b/polkadot/Cargo.lock
index 5ba56d2ba9a..7df9fe6885e 100644
--- a/polkadot/Cargo.lock
+++ b/polkadot/Cargo.lock
@@ -1889,7 +1889,7 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
 [[package]]
 name = "fork-tree"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
 ]
@@ -1907,7 +1907,7 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking"
 version = "3.1.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1926,7 +1926,7 @@ dependencies = [
 [[package]]
 name = "frame-benchmarking-cli"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "Inflector",
  "chrono",
@@ -1949,7 +1949,7 @@ dependencies = [
 [[package]]
 name = "frame-election-provider-support"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1962,7 +1962,7 @@ dependencies = [
 [[package]]
 name = "frame-executive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -1977,7 +1977,7 @@ dependencies = [
 [[package]]
 name = "frame-metadata"
 version = "13.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -1988,7 +1988,7 @@ dependencies = [
 [[package]]
 name = "frame-support"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "bitflags",
  "frame-metadata",
@@ -2015,7 +2015,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "Inflector",
  "frame-support-procedural-tools",
@@ -2027,7 +2027,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support-procedural-tools-derive",
  "proc-macro-crate 1.0.0",
@@ -2039,7 +2039,7 @@ dependencies = [
 [[package]]
 name = "frame-support-procedural-tools-derive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -2049,7 +2049,7 @@ dependencies = [
 [[package]]
 name = "frame-support-test"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-metadata",
  "frame-support",
@@ -2069,7 +2069,7 @@ dependencies = [
 [[package]]
 name = "frame-system"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "impl-trait-for-tuples",
@@ -2086,7 +2086,7 @@ dependencies = [
 [[package]]
 name = "frame-system-benchmarking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -2100,7 +2100,7 @@ dependencies = [
 [[package]]
 name = "frame-system-rpc-runtime-api"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -2109,7 +2109,7 @@ dependencies = [
 [[package]]
 name = "frame-try-runtime"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "parity-scale-codec",
@@ -3236,6 +3236,7 @@ dependencies = [
  "beefy-primitives",
  "bitvec",
  "frame-benchmarking",
+ "frame-election-provider-support",
  "frame-executive",
  "frame-support",
  "frame-system",
@@ -4041,7 +4042,7 @@ dependencies = [
 [[package]]
 name = "max-encoded-len"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "impl-trait-for-tuples",
  "max-encoded-len-derive",
@@ -4052,7 +4053,7 @@ dependencies = [
 [[package]]
 name = "max-encoded-len-derive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "proc-macro2",
@@ -4555,7 +4556,7 @@ checksum = "13370dae44474229701bb69b90b4f4dca6404cb0357a2d50d635f1171dc3aa7b"
 [[package]]
 name = "pallet-authority-discovery"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4570,7 +4571,7 @@ dependencies = [
 [[package]]
 name = "pallet-authorship"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4584,7 +4585,7 @@ dependencies = [
 [[package]]
 name = "pallet-babe"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4607,7 +4608,7 @@ dependencies = [
 [[package]]
 name = "pallet-balances"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4637,7 +4638,7 @@ dependencies = [
 [[package]]
 name = "pallet-bounties"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4673,7 +4674,7 @@ dependencies = [
 [[package]]
 name = "pallet-collective"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4689,7 +4690,7 @@ dependencies = [
 [[package]]
 name = "pallet-democracy"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4704,7 +4705,7 @@ dependencies = [
 [[package]]
 name = "pallet-election-provider-multi-phase"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -4725,7 +4726,7 @@ dependencies = [
 [[package]]
 name = "pallet-elections-phragmen"
 version = "4.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4742,7 +4743,7 @@ dependencies = [
 [[package]]
 name = "pallet-gilt"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4756,7 +4757,7 @@ dependencies = [
 [[package]]
 name = "pallet-grandpa"
 version = "3.1.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4778,7 +4779,7 @@ dependencies = [
 [[package]]
 name = "pallet-identity"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -4793,7 +4794,7 @@ dependencies = [
 [[package]]
 name = "pallet-im-online"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4812,7 +4813,7 @@ dependencies = [
 [[package]]
 name = "pallet-indices"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4828,7 +4829,7 @@ dependencies = [
 [[package]]
 name = "pallet-membership"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4843,7 +4844,7 @@ dependencies = [
 [[package]]
 name = "pallet-mmr"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "ckb-merkle-mountain-range",
  "frame-benchmarking",
@@ -4860,7 +4861,7 @@ dependencies = [
 [[package]]
 name = "pallet-mmr-primitives"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4876,7 +4877,7 @@ dependencies = [
 [[package]]
 name = "pallet-mmr-rpc"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -4894,7 +4895,7 @@ dependencies = [
 [[package]]
 name = "pallet-multisig"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4909,7 +4910,7 @@ dependencies = [
 [[package]]
 name = "pallet-nicks"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4922,7 +4923,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4938,7 +4939,7 @@ dependencies = [
 [[package]]
 name = "pallet-offences-benchmarking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -4960,7 +4961,7 @@ dependencies = [
 [[package]]
 name = "pallet-proxy"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -4976,7 +4977,7 @@ dependencies = [
 [[package]]
 name = "pallet-randomness-collective-flip"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -4989,7 +4990,7 @@ dependencies = [
 [[package]]
 name = "pallet-recovery"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "enumflags2",
  "frame-support",
@@ -5003,7 +5004,7 @@ dependencies = [
 [[package]]
 name = "pallet-scheduler"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5018,11 +5019,12 @@ dependencies = [
 [[package]]
 name = "pallet-session"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
  "impl-trait-for-tuples",
+ "log",
  "pallet-timestamp",
  "parity-scale-codec",
  "sp-core",
@@ -5037,7 +5039,7 @@ dependencies = [
 [[package]]
 name = "pallet-session-benchmarking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5053,7 +5055,7 @@ dependencies = [
 [[package]]
 name = "pallet-society"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5066,7 +5068,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-election-provider-support",
@@ -5090,7 +5092,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking-reward-curve"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "proc-macro2",
@@ -5101,7 +5103,7 @@ dependencies = [
 [[package]]
 name = "pallet-staking-reward-fn"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "log",
  "sp-arithmetic",
@@ -5110,7 +5112,7 @@ dependencies = [
 [[package]]
 name = "pallet-sudo"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5123,7 +5125,7 @@ dependencies = [
 [[package]]
 name = "pallet-timestamp"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5141,7 +5143,7 @@ dependencies = [
 [[package]]
 name = "pallet-tips"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5156,7 +5158,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-support",
  "frame-system",
@@ -5172,7 +5174,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -5189,7 +5191,7 @@ dependencies = [
 [[package]]
 name = "pallet-transaction-payment-rpc-runtime-api"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "pallet-transaction-payment",
  "parity-scale-codec",
@@ -5200,7 +5202,7 @@ dependencies = [
 [[package]]
 name = "pallet-treasury"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5216,7 +5218,7 @@ dependencies = [
 [[package]]
 name = "pallet-utility"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-benchmarking",
  "frame-support",
@@ -5231,7 +5233,7 @@ dependencies = [
 [[package]]
 name = "pallet-vesting"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "enumflags2",
  "frame-benchmarking",
@@ -6466,6 +6468,7 @@ dependencies = [
  "beefy-primitives",
  "bitvec",
  "frame-benchmarking",
+ "frame-election-provider-support",
  "frame-executive",
  "frame-support",
  "frame-system",
@@ -7506,7 +7509,7 @@ dependencies = [
 [[package]]
 name = "remote-externalities"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "env_logger 0.8.2",
  "hex",
@@ -7809,7 +7812,7 @@ dependencies = [
 [[package]]
 name = "sc-authority-discovery"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -7838,7 +7841,7 @@ dependencies = [
 [[package]]
 name = "sc-basic-authorship"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.3.15",
  "futures-timer 3.0.2",
@@ -7861,7 +7864,7 @@ dependencies = [
 [[package]]
 name = "sc-block-builder"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "sc-client-api",
@@ -7877,7 +7880,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -7898,7 +7901,7 @@ dependencies = [
 [[package]]
 name = "sc-chain-spec-derive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "proc-macro2",
@@ -7909,7 +7912,7 @@ dependencies = [
 [[package]]
 name = "sc-cli"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "chrono",
  "fdlimit",
@@ -7947,7 +7950,7 @@ dependencies = [
 [[package]]
 name = "sc-client-api"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "derive_more",
  "fnv",
@@ -7981,7 +7984,7 @@ dependencies = [
 [[package]]
 name = "sc-client-db"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "blake2-rfc",
  "hash-db",
@@ -8011,7 +8014,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parking_lot 0.11.1",
  "sc-client-api",
@@ -8023,7 +8026,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -8069,7 +8072,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-babe-rpc"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "derive_more",
  "futures 0.3.15",
@@ -8093,7 +8096,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-epochs"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "fork-tree",
  "parity-scale-codec",
@@ -8106,7 +8109,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-slots"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "futures 0.3.15",
@@ -8134,7 +8137,7 @@ dependencies = [
 [[package]]
 name = "sc-consensus-uncles"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "sc-client-api",
  "sp-authorship",
@@ -8145,7 +8148,7 @@ dependencies = [
 [[package]]
 name = "sc-executor"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "derive_more",
  "lazy_static",
@@ -8174,7 +8177,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-common"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "derive_more",
  "parity-scale-codec",
@@ -8191,7 +8194,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmi"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -8206,7 +8209,7 @@ dependencies = [
 [[package]]
 name = "sc-executor-wasmtime"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -8223,7 +8226,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -8264,7 +8267,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa-rpc"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "derive_more",
  "finality-grandpa",
@@ -8288,7 +8291,7 @@ dependencies = [
 [[package]]
 name = "sc-finality-grandpa-warp-sync"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "derive_more",
  "futures 0.3.15",
@@ -8309,7 +8312,7 @@ dependencies = [
 [[package]]
 name = "sc-informant"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "ansi_term 0.12.1",
  "futures 0.3.15",
@@ -8327,7 +8330,7 @@ dependencies = [
 [[package]]
 name = "sc-keystore"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -8347,7 +8350,7 @@ dependencies = [
 [[package]]
 name = "sc-light"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "hash-db",
  "lazy_static",
@@ -8366,7 +8369,7 @@ dependencies = [
 [[package]]
 name = "sc-network"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-std",
  "async-trait",
@@ -8419,7 +8422,7 @@ dependencies = [
 [[package]]
 name = "sc-network-gossip"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.3.15",
  "futures-timer 3.0.2",
@@ -8436,7 +8439,7 @@ dependencies = [
 [[package]]
 name = "sc-offchain"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "bytes 0.5.6",
  "fnv",
@@ -8464,7 +8467,7 @@ dependencies = [
 [[package]]
 name = "sc-peerset"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.3.15",
  "libp2p",
@@ -8477,7 +8480,7 @@ dependencies = [
 [[package]]
 name = "sc-proposer-metrics"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "log",
  "substrate-prometheus-endpoint",
@@ -8486,7 +8489,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.3.15",
  "hash-db",
@@ -8521,7 +8524,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-api"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "derive_more",
  "futures 0.3.15",
@@ -8546,7 +8549,7 @@ dependencies = [
 [[package]]
 name = "sc-rpc-server"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.1.29",
  "jsonrpc-core",
@@ -8564,7 +8567,7 @@ dependencies = [
 [[package]]
 name = "sc-service"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "directories",
@@ -8629,7 +8632,7 @@ dependencies = [
 [[package]]
 name = "sc-state-db"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "log",
  "parity-scale-codec",
@@ -8644,7 +8647,7 @@ dependencies = [
 [[package]]
 name = "sc-sync-state-rpc"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "jsonrpc-core",
  "jsonrpc-core-client",
@@ -8664,7 +8667,7 @@ dependencies = [
 [[package]]
 name = "sc-telemetry"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "chrono",
  "futures 0.3.15",
@@ -8684,7 +8687,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "ansi_term 0.12.1",
  "atty",
@@ -8721,7 +8724,7 @@ dependencies = [
 [[package]]
 name = "sc-tracing-proc-macro"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "proc-macro2",
@@ -8732,7 +8735,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-graph"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "derive_more",
  "futures 0.3.15",
@@ -8754,7 +8757,7 @@ dependencies = [
 [[package]]
 name = "sc-transaction-pool"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.3.15",
  "intervalier",
@@ -9233,7 +9236,7 @@ dependencies = [
 [[package]]
 name = "sp-allocator"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "log",
  "sp-core",
@@ -9245,7 +9248,7 @@ dependencies = [
 [[package]]
 name = "sp-api"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "hash-db",
  "log",
@@ -9262,7 +9265,7 @@ dependencies = [
 [[package]]
 name = "sp-api-proc-macro"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "blake2-rfc",
  "proc-macro-crate 1.0.0",
@@ -9274,7 +9277,7 @@ dependencies = [
 [[package]]
 name = "sp-application-crypto"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "max-encoded-len",
  "parity-scale-codec",
@@ -9287,7 +9290,7 @@ dependencies = [
 [[package]]
 name = "sp-arithmetic"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "integer-sqrt",
  "num-traits",
@@ -9301,7 +9304,7 @@ dependencies = [
 [[package]]
 name = "sp-authority-discovery"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -9313,7 +9316,7 @@ dependencies = [
 [[package]]
 name = "sp-authorship"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "parity-scale-codec",
@@ -9325,7 +9328,7 @@ dependencies = [
 [[package]]
 name = "sp-block-builder"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -9337,7 +9340,7 @@ dependencies = [
 [[package]]
 name = "sp-blockchain"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.3.15",
  "log",
@@ -9355,7 +9358,7 @@ dependencies = [
 [[package]]
 name = "sp-chain-spec"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "serde",
  "serde_json",
@@ -9364,7 +9367,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "futures 0.3.15",
@@ -9391,7 +9394,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-babe"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "merlin",
@@ -9413,7 +9416,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-slots"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "sp-arithmetic",
@@ -9423,7 +9426,7 @@ dependencies = [
 [[package]]
 name = "sp-consensus-vrf"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "schnorrkel",
@@ -9435,7 +9438,7 @@ dependencies = [
 [[package]]
 name = "sp-core"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "base58",
  "blake2-rfc",
@@ -9480,7 +9483,7 @@ dependencies = [
 [[package]]
 name = "sp-database"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "kvdb",
  "parking_lot 0.11.1",
@@ -9489,7 +9492,7 @@ dependencies = [
 [[package]]
 name = "sp-debug-derive"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "proc-macro2",
  "quote",
@@ -9499,7 +9502,7 @@ dependencies = [
 [[package]]
 name = "sp-externalities"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "environmental",
  "parity-scale-codec",
@@ -9510,7 +9513,7 @@ dependencies = [
 [[package]]
 name = "sp-finality-grandpa"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "finality-grandpa",
  "log",
@@ -9527,7 +9530,7 @@ dependencies = [
 [[package]]
 name = "sp-inherents"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "impl-trait-for-tuples",
@@ -9541,7 +9544,7 @@ dependencies = [
 [[package]]
 name = "sp-io"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.3.15",
  "hash-db",
@@ -9566,7 +9569,7 @@ dependencies = [
 [[package]]
 name = "sp-keyring"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "lazy_static",
  "sp-core",
@@ -9577,7 +9580,7 @@ dependencies = [
 [[package]]
 name = "sp-keystore"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "derive_more",
@@ -9594,7 +9597,7 @@ dependencies = [
 [[package]]
 name = "sp-maybe-compressed-blob"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "ruzstd",
  "zstd",
@@ -9603,7 +9606,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "serde",
@@ -9616,7 +9619,7 @@ dependencies = [
 [[package]]
 name = "sp-npos-elections-compact"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "proc-macro2",
@@ -9627,7 +9630,7 @@ dependencies = [
 [[package]]
 name = "sp-offchain"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "sp-api",
  "sp-core",
@@ -9637,7 +9640,7 @@ dependencies = [
 [[package]]
 name = "sp-panic-handler"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "backtrace",
 ]
@@ -9645,7 +9648,7 @@ dependencies = [
 [[package]]
 name = "sp-rpc"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "rustc-hash",
  "serde",
@@ -9656,7 +9659,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "either",
  "hash256-std-hasher",
@@ -9678,7 +9681,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -9695,7 +9698,7 @@ dependencies = [
 [[package]]
 name = "sp-runtime-interface-proc-macro"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "Inflector",
  "proc-macro-crate 1.0.0",
@@ -9707,7 +9710,7 @@ dependencies = [
 [[package]]
 name = "sp-serializer"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "serde",
  "serde_json",
@@ -9716,7 +9719,7 @@ dependencies = [
 [[package]]
 name = "sp-session"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "sp-api",
@@ -9729,7 +9732,7 @@ dependencies = [
 [[package]]
 name = "sp-staking"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "sp-runtime",
@@ -9739,7 +9742,7 @@ dependencies = [
 [[package]]
 name = "sp-state-machine"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "hash-db",
  "log",
@@ -9762,12 +9765,12 @@ dependencies = [
 [[package]]
 name = "sp-std"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 
 [[package]]
 name = "sp-storage"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -9780,7 +9783,7 @@ dependencies = [
 [[package]]
 name = "sp-tasks"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "log",
  "sp-core",
@@ -9793,7 +9796,7 @@ dependencies = [
 [[package]]
 name = "sp-timestamp"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "futures-timer 3.0.2",
@@ -9810,7 +9813,7 @@ dependencies = [
 [[package]]
 name = "sp-tracing"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "erased-serde",
  "log",
@@ -9828,7 +9831,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-pool"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "derive_more",
  "futures 0.3.15",
@@ -9844,7 +9847,7 @@ dependencies = [
 [[package]]
 name = "sp-transaction-storage-proof"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "log",
@@ -9859,7 +9862,7 @@ dependencies = [
 [[package]]
 name = "sp-trie"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "hash-db",
  "memory-db",
@@ -9873,7 +9876,7 @@ dependencies = [
 [[package]]
 name = "sp-utils"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.3.15",
  "futures-core",
@@ -9885,7 +9888,7 @@ dependencies = [
 [[package]]
 name = "sp-version"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "impl-serde",
  "parity-scale-codec",
@@ -9898,7 +9901,7 @@ dependencies = [
 [[package]]
 name = "sp-version-proc-macro"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "parity-scale-codec",
  "proc-macro-crate 1.0.0",
@@ -9910,7 +9913,7 @@ dependencies = [
 [[package]]
 name = "sp-wasm-interface"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "impl-trait-for-tuples",
  "parity-scale-codec",
@@ -10067,7 +10070,7 @@ dependencies = [
 [[package]]
 name = "substrate-browser-utils"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "chrono",
  "console_error_panic_hook",
@@ -10093,7 +10096,7 @@ dependencies = [
 [[package]]
 name = "substrate-build-script-utils"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "platforms",
 ]
@@ -10101,7 +10104,7 @@ dependencies = [
 [[package]]
 name = "substrate-frame-rpc-system"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-system-rpc-runtime-api",
  "futures 0.3.15",
@@ -10124,7 +10127,7 @@ dependencies = [
 [[package]]
 name = "substrate-prometheus-endpoint"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-std",
  "derive_more",
@@ -10138,7 +10141,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-client"
 version = "2.0.1"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "async-trait",
  "futures 0.1.29",
@@ -10167,7 +10170,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils"
 version = "3.0.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "futures 0.3.15",
  "substrate-test-utils-derive",
@@ -10177,7 +10180,7 @@ dependencies = [
 [[package]]
 name = "substrate-test-utils-derive"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "proc-macro-crate 1.0.0",
  "quote",
@@ -10932,7 +10935,7 @@ checksum = "e604eb7b43c06650e854be16a2a03155743d3752dd1c943f6829e26b7a36e382"
 [[package]]
 name = "try-runtime-cli"
 version = "0.9.0"
-source = "git+https://github.com/paritytech/substrate#a4b0fd8fa5939879e5a3f9a1a009323ccb4d4a30"
+source = "git+https://github.com/paritytech/substrate#c666a251691300c1651075a3b59ba1cf59c5a664"
 dependencies = [
  "frame-try-runtime",
  "log",
@@ -11608,6 +11611,7 @@ dependencies = [
  "beefy-primitives",
  "bitvec",
  "frame-benchmarking",
+ "frame-election-provider-support",
  "frame-executive",
  "frame-support",
  "frame-system",
diff --git a/polkadot/runtime/kusama/Cargo.toml b/polkadot/runtime/kusama/Cargo.toml
index 937692811a2..8c5d87754dd 100644
--- a/polkadot/runtime/kusama/Cargo.toml
+++ b/polkadot/runtime/kusama/Cargo.toml
@@ -72,6 +72,7 @@ pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "m
 pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 pallet-xcm = { path = "../../xcm/pallet-xcm", default-features = false }
+frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 
 frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
 frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
@@ -176,6 +177,7 @@ std = [
 	"xcm-executor/std",
 	"xcm-builder/std",
 	"max-encoded-len/std",
+	"frame-election-provider-support/std",
 ]
 runtime-benchmarks = [
 	"runtime-common/runtime-benchmarks",
@@ -212,6 +214,7 @@ runtime-benchmarks = [
 	"frame-system-benchmarking",
 	"hex-literal",
 	"xcm-builder/runtime-benchmarks",
+	"frame-election-provider-support/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-executive/try-runtime",
diff --git a/polkadot/runtime/kusama/src/lib.rs b/polkadot/runtime/kusama/src/lib.rs
index 0edff142462..4fd091a04ff 100644
--- a/polkadot/runtime/kusama/src/lib.rs
+++ b/polkadot/runtime/kusama/src/lib.rs
@@ -475,6 +475,10 @@ impl pallet_staking::Config for Runtime {
 	type UnixTime = Timestamp;
 	type CurrencyToVote = CurrencyToVote;
 	type ElectionProvider = ElectionProviderMultiPhase;
+	type GenesisElectionProvider =
+		frame_election_provider_support::onchain::OnChainSequentialPhragmen<
+			pallet_election_provider_multi_phase::OnChainConfig<Self>
+		>;
 	type RewardRemainder = Treasury;
 	type Event = Event;
 	type Slash = Treasury;
diff --git a/polkadot/runtime/polkadot/Cargo.toml b/polkadot/runtime/polkadot/Cargo.toml
index 11cc9d6407e..5bb05d61260 100644
--- a/polkadot/runtime/polkadot/Cargo.toml
+++ b/polkadot/runtime/polkadot/Cargo.toml
@@ -67,6 +67,7 @@ pallet-tips = { git = "https://github.com/paritytech/substrate", branch = "maste
 pallet-treasury = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 pallet-vesting = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 pallet-utility = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
+frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 
 frame-benchmarking = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
 frame-try-runtime = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false, optional = true }
@@ -157,6 +158,7 @@ std = [
 	"beefy-primitives/std",
 	"pallet-mmr-primitives/std",
 	"max-encoded-len/std",
+	"frame-election-provider-support/std",
 ]
 runtime-benchmarks = [
 	"runtime-common/runtime-benchmarks",
@@ -189,6 +191,7 @@ runtime-benchmarks = [
 	"pallet-session-benchmarking",
 	"frame-system-benchmarking",
 	"hex-literal",
+	"frame-election-provider-support/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-executive/try-runtime",
diff --git a/polkadot/runtime/polkadot/src/lib.rs b/polkadot/runtime/polkadot/src/lib.rs
index 6d8fea24a28..4ab27194d9f 100644
--- a/polkadot/runtime/polkadot/src/lib.rs
+++ b/polkadot/runtime/polkadot/src/lib.rs
@@ -423,6 +423,10 @@ impl pallet_staking::Config for Runtime {
 	type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator;
 	type NextNewSession = Session;
 	type ElectionProvider = ElectionProviderMultiPhase;
+	type GenesisElectionProvider =
+		frame_election_provider_support::onchain::OnChainSequentialPhragmen<
+			pallet_election_provider_multi_phase::OnChainConfig<Self>
+		>;
 	type WeightInfo = weights::pallet_staking::WeightInfo<Runtime>;
 }
 
diff --git a/polkadot/runtime/test-runtime/src/lib.rs b/polkadot/runtime/test-runtime/src/lib.rs
index 7e744749593..68e285ae988 100644
--- a/polkadot/runtime/test-runtime/src/lib.rs
+++ b/polkadot/runtime/test-runtime/src/lib.rs
@@ -341,6 +341,8 @@ impl pallet_staking::Config for Runtime {
 	type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator;
 	type NextNewSession = Session;
 	type ElectionProvider = frame_election_provider_support::onchain::OnChainSequentialPhragmen<Self>;
+	type GenesisElectionProvider =
+		frame_election_provider_support::onchain::OnChainSequentialPhragmen<Self>;
 	type WeightInfo = ();
 }
 
diff --git a/polkadot/runtime/westend/Cargo.toml b/polkadot/runtime/westend/Cargo.toml
index fa90e89a038..9398f8c2b61 100644
--- a/polkadot/runtime/westend/Cargo.toml
+++ b/polkadot/runtime/westend/Cargo.toml
@@ -32,6 +32,7 @@ tx-pool-api = { package = "sp-transaction-pool", git = "https://github.com/parit
 block-builder-api = { package = "sp-block-builder", git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 sp-npos-elections = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 
+frame-election-provider-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 frame-executive = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 frame-support = { git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
 frame-system = {git = "https://github.com/paritytech/substrate", branch = "master", default-features = false }
@@ -171,6 +172,7 @@ std = [
 	"xcm-executor/std",
 	"xcm-builder/std",
 	"max-encoded-len/std",
+	"frame-election-provider-support/std",
 ]
 runtime-benchmarks = [
 	"runtime-common/runtime-benchmarks",
@@ -203,6 +205,7 @@ runtime-benchmarks = [
 	"frame-system-benchmarking",
 	"hex-literal",
 	"xcm-builder/runtime-benchmarks",
+	"frame-election-provider-support/runtime-benchmarks",
 ]
 try-runtime = [
 	"frame-executive/try-runtime",
diff --git a/polkadot/runtime/westend/src/lib.rs b/polkadot/runtime/westend/src/lib.rs
index b4ac1747dc2..e4dc9ce1258 100644
--- a/polkadot/runtime/westend/src/lib.rs
+++ b/polkadot/runtime/westend/src/lib.rs
@@ -420,6 +420,10 @@ impl pallet_staking::Config for Runtime {
 	type MaxNominatorRewardedPerValidator = MaxNominatorRewardedPerValidator;
 	type NextNewSession = Session;
 	type ElectionProvider = ElectionProviderMultiPhase;
+	type GenesisElectionProvider =
+		frame_election_provider_support::onchain::OnChainSequentialPhragmen<
+			pallet_election_provider_multi_phase::OnChainConfig<Self>
+		>;
 	type WeightInfo = weights::pallet_staking::WeightInfo<Runtime>;
 }
 
-- 
GitLab