diff --git a/Cargo.lock b/Cargo.lock
index bfa7949ebf275ea6576f0711eb5f4b5d7a5dd0ea..0664351fd508e8c5bf7018690c2efed341d75eb4 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -10873,11 +10873,10 @@ dependencies = [
 
 [[package]]
 name = "num-integer"
-version = "0.1.45"
+version = "0.1.46"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
 dependencies = [
- "autocfg",
  "num-traits",
 ]
 
@@ -12848,6 +12847,9 @@ dependencies = [
  "hex-literal",
  "impl-trait-for-tuples",
  "log",
+ "num-bigint",
+ "num-integer",
+ "num-traits",
  "pallet-balances",
  "pallet-proxy",
  "pallet-revive-fixtures",
@@ -12863,6 +12865,7 @@ dependencies = [
  "pretty_assertions",
  "rand 0.8.5",
  "rand_pcg",
+ "ripemd",
  "rlp 0.6.1",
  "scale-info",
  "secp256k1 0.28.2",
@@ -12880,6 +12883,7 @@ dependencies = [
  "sp-tracing 16.0.0",
  "staging-xcm",
  "staging-xcm-builder",
+ "substrate-bn",
  "subxt-signer 0.38.0",
 ]
 
@@ -24533,6 +24537,19 @@ dependencies = [
  "zeroize",
 ]
 
+[[package]]
+name = "substrate-bn"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c"
+dependencies = [
+ "byteorder",
+ "crunchy",
+ "lazy_static",
+ "rand 0.8.5",
+ "rustc-hex",
+]
+
 [[package]]
 name = "substrate-build-script-utils"
 version = "11.0.0"
diff --git a/Cargo.toml b/Cargo.toml
index efb224cd6ded9e5b66f5512a5291f49fe573763b..c355679143037ae2b420ba416fc57371dc6b5943 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -645,6 +645,7 @@ bitvec = { version = "1.0.1", default-features = false }
 blake2 = { version = "0.10.4", default-features = false }
 blake2b_simd = { version = "1.0.2", default-features = false }
 blake3 = { version = "1.5" }
+bn = { package = "substrate-bn", version = "0.6", default-features = false }
 bounded-collections = { version = "0.2.3", default-features = false }
 bounded-vec = { version = "0.7" }
 bp-asset-hub-rococo = { path = "bridges/chains/chain-asset-hub-rococo", default-features = false }
@@ -888,8 +889,9 @@ node-rpc = { path = "substrate/bin/node/rpc" }
 node-testing = { path = "substrate/bin/node/testing" }
 nohash-hasher = { version = "0.2.0" }
 novelpoly = { version = "2.0.0", package = "reed-solomon-novelpoly" }
-num-bigint = { version = "0.4.3" }
+num-bigint = { version = "0.4.3", default-features = false }
 num-format = { version = "0.4.3" }
+num-integer = { version = "0.1.46", default-features = false }
 num-rational = { version = "0.4.1" }
 num-traits = { version = "0.2.17", default-features = false }
 num_cpus = { version = "1.13.1" }
@@ -1137,6 +1139,7 @@ relay-substrate-client = { path = "bridges/relays/client-substrate" }
 relay-utils = { path = "bridges/relays/utils" }
 remote-externalities = { path = "substrate/utils/frame/remote-externalities", default-features = false, package = "frame-remote-externalities" }
 reqwest = { version = "0.12.9", default-features = false }
+ripemd = { version = "0.1.3", default-features = false }
 rlp = { version = "0.6.1", default-features = false }
 rococo-emulated-chain = { path = "cumulus/parachains/integration-tests/emulated/chains/relays/rococo" }
 rococo-parachain-runtime = { path = "cumulus/parachains/runtimes/testing/rococo-parachain" }
diff --git a/prdoc/pr_7810.prdoc b/prdoc/pr_7810.prdoc
new file mode 100644
index 0000000000000000000000000000000000000000..edfee175718da5588603dbb48bc6b64d10caa5b6
--- /dev/null
+++ b/prdoc/pr_7810.prdoc
@@ -0,0 +1,11 @@
+title: '[pallet-revive] precompiles 2->9'
+doc:
+- audience: Runtime Dev
+  description: Add missing pre-compiles 02 -> 09
+crates:
+- name: pallet-revive
+  bump: patch
+- name: pallet-revive-fixtures
+  bump: patch
+- name: pallet-revive-uapi
+  bump: patch
diff --git a/substrate/frame/revive/Cargo.toml b/substrate/frame/revive/Cargo.toml
index 9f57e45fafbeeb571e229d5e24f344c9416a5733..685bbc8f8ea6f665c344cae3fe16b6a84518b5e4 100644
--- a/substrate/frame/revive/Cargo.toml
+++ b/substrate/frame/revive/Cargo.toml
@@ -26,6 +26,9 @@ ethereum-types = { workspace = true, features = ["codec", "rlp", "serialize"] }
 hex-literal = { workspace = true }
 impl-trait-for-tuples = { workspace = true }
 log = { workspace = true }
+num-bigint = { workspace = true }
+num-integer = { workspace = true }
+num-traits = { workspace = true }
 paste = { workspace = true }
 polkavm = { version = "0.21.0", default-features = false }
 polkavm-common = { version = "0.21.0", default-features = false, optional = true }
@@ -39,6 +42,7 @@ serde = { features = [
 ], workspace = true, default-features = false }
 
 # Polkadot SDK Dependencies
+bn = { workspace = true }
 frame-benchmarking = { optional = true, workspace = true }
 frame-support = { workspace = true }
 frame-system = { workspace = true }
@@ -46,6 +50,7 @@ pallet-revive-fixtures = { workspace = true, optional = true }
 pallet-revive-proc-macro = { workspace = true }
 pallet-revive-uapi = { workspace = true, features = ["scale"] }
 pallet-transaction-payment = { workspace = true }
+ripemd = { workspace = true }
 sp-api = { workspace = true }
 sp-arithmetic = { workspace = true }
 sp-consensus-aura = { workspace = true, optional = true }
@@ -89,6 +94,9 @@ std = [
 	"frame-support/std",
 	"frame-system/std",
 	"log/std",
+	"num-bigint/std",
+	"num-integer/std",
+	"num-traits/std",
 	"pallet-proxy/std",
 	"pallet-revive-fixtures?/std",
 	"pallet-timestamp/std",
@@ -97,6 +105,7 @@ std = [
 	"polkavm-common?/std",
 	"polkavm/std",
 	"rand?/std",
+	"ripemd/std",
 	"rlp/std",
 	"scale-info/std",
 	"secp256k1/std",
diff --git a/substrate/frame/revive/fixtures/contracts/call_and_return.rs b/substrate/frame/revive/fixtures/contracts/call_and_return.rs
index 36c9ee850cb048760fdb7d84e3420f3356cbf039..75eb619fe9554b8efd6f30490e7e552274366413 100644
--- a/substrate/frame/revive/fixtures/contracts/call_and_return.rs
+++ b/substrate/frame/revive/fixtures/contracts/call_and_return.rs
@@ -30,14 +30,14 @@ pub extern "C" fn deploy() {}
 #[polkavm_derive::polkavm_export]
 pub extern "C" fn call() {
 	input!(
-		256,
+		512,
 		callee_addr: &[u8; 20],
 		value: u64,
 		callee_input: [u8],
 	);
 
 	// Call the callee
-	let mut output = [0u8; 32];
+	let mut output = [0u8; 512];
 	let output = &mut &mut output[..];
 
 	match api::call(
diff --git a/substrate/frame/revive/fixtures/contracts/crypto_hashes.rs b/substrate/frame/revive/fixtures/contracts/crypto_hashes.rs
index f673c5b3b42dfa4fd7bf1768ffa540de3b9525fe..751f0c065b8f7bc3072bbe14d8e1556667fc65c9 100644
--- a/substrate/frame/revive/fixtures/contracts/crypto_hashes.rs
+++ b/substrate/frame/revive/fixtures/contracts/crypto_hashes.rs
@@ -43,10 +43,9 @@ pub extern "C" fn deploy() {}
 ///
 /// | value | Algorithm | Bit Width |
 /// |-------|-----------|-----------|
-/// |     0 |      SHA2 |       256 |
-/// |     1 |    KECCAK |       256 |
-/// |     2 |    BLAKE2 |       256 |
-/// |     3 |    BLAKE2 |       128 |
+/// |     2 |    KECCAK |       256 |
+/// |     3 |    BLAKE2 |       256 |
+/// |     4 |    BLAKE2 |       128 |
 /// ---------------------------------
 
 #[no_mangle]
@@ -59,11 +58,6 @@ pub extern "C" fn call() {
 	);
 
 	match chosen_hash_fn {
-		1 => {
-			let mut output = [0u8; 32];
-			api::hash_sha2_256(input, &mut output);
-			api::return_value(uapi::ReturnFlags::empty(), &output);
-		},
 		2 => {
 			let mut output = [0u8; 32];
 			api::hash_keccak_256(input, &mut output);
diff --git a/substrate/frame/revive/src/benchmarking/mod.rs b/substrate/frame/revive/src/benchmarking/mod.rs
index ac39a48d416744c4145a216b42491945e85bde0b..54496c22a2dd1205b0f3872a88b6f2c37fd5210e 100644
--- a/substrate/frame/revive/src/benchmarking/mod.rs
+++ b/substrate/frame/revive/src/benchmarking/mod.rs
@@ -1854,16 +1854,50 @@ mod benchmarks {
 
 	// `n`: Input to hash in bytes
 	#[benchmark(pov_mode = Measured)]
-	fn seal_hash_sha2_256(n: Linear<0, { limits::code::BLOB_BYTES }>) {
-		build_runtime!(runtime, memory: [[0u8; 32], vec![0u8; n as usize], ]);
+	fn sha2_256(n: Linear<0, { limits::code::BLOB_BYTES }>) {
+		let input = vec![0u8; n as usize];
+		let mut call_setup = CallSetup::<T>::default();
+		let (mut ext, _) = call_setup.ext();
 
 		let result;
 		#[block]
 		{
-			result = runtime.bench_hash_sha2_256(memory.as_mut_slice(), 32, n, 0);
+			result = pure_precompiles::Sha256::execute(ext.gas_meter_mut(), &input);
 		}
-		assert_eq!(sp_io::hashing::sha2_256(&memory[32..]), &memory[0..32]);
-		assert_ok!(result);
+		assert_eq!(sp_io::hashing::sha2_256(&input).to_vec(), result.unwrap().data);
+	}
+
+	#[benchmark(pov_mode = Measured)]
+	fn identity(n: Linear<0, { limits::code::BLOB_BYTES }>) {
+		let input = vec![0u8; n as usize];
+		let mut call_setup = CallSetup::<T>::default();
+		let (mut ext, _) = call_setup.ext();
+
+		let result;
+		#[block]
+		{
+			result = pure_precompiles::Identity::execute(ext.gas_meter_mut(), &input);
+		}
+		assert_eq!(input, result.unwrap().data);
+	}
+
+	// `n`: Input to hash in bytes
+	#[benchmark(pov_mode = Measured)]
+	fn ripemd_160(n: Linear<0, { limits::code::BLOB_BYTES }>) {
+		use ripemd::Digest;
+		let input = vec![0u8; n as usize];
+		let mut call_setup = CallSetup::<T>::default();
+		let (mut ext, _) = call_setup.ext();
+
+		let result;
+		#[block]
+		{
+			result = pure_precompiles::Ripemd160::execute(ext.gas_meter_mut(), &input);
+		}
+		let mut expected = [0u8; 32];
+		expected[12..32].copy_from_slice(&ripemd::Ripemd160::digest(input));
+
+		assert_eq!(expected.to_vec(), result.unwrap().data);
 	}
 
 	// `n`: Input to hash in bytes
@@ -1957,6 +1991,74 @@ mod benchmarks {
 		assert_eq!(result.unwrap().data, expected);
 	}
 
+	#[benchmark(pov_mode = Measured)]
+	fn bn128_add() {
+		use hex_literal::hex;
+		let input = hex!("089142debb13c461f61523586a60732d8b69c5b38a3380a74da7b2961d867dbf2d5fc7bbc013c16d7945f190b232eacc25da675c0eb093fe6b9f1b4b4e107b3625f8c89ea3437f44f8fc8b6bfbb6312074dc6f983809a5e809ff4e1d076dd5850b38c7ced6e4daef9c4347f370d6d8b58f4b1d8dc61a3c59d651a0644a2a27cf");
+		let expected = hex!("0a6678fd675aa4d8f0d03a1feb921a27f38ebdcb860cc083653519655acd6d79172fd5b3b2bfdd44e43bcec3eace9347608f9f0a16f1e184cb3f52e6f259cbeb");
+		let mut call_setup = CallSetup::<T>::default();
+		let (mut ext, _) = call_setup.ext();
+
+		let result;
+
+		#[block]
+		{
+			result = pure_precompiles::Bn128Add::execute(ext.gas_meter_mut(), &input);
+		}
+
+		assert_eq!(result.unwrap().data, expected);
+	}
+
+	#[benchmark(pov_mode = Measured)]
+	fn bn128_mul() {
+		use hex_literal::hex;
+		let input = hex!("089142debb13c461f61523586a60732d8b69c5b38a3380a74da7b2961d867dbf2d5fc7bbc013c16d7945f190b232eacc25da675c0eb093fe6b9f1b4b4e107b36ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
+		let expected = hex!("0bf982b98a2757878c051bfe7eee228b12bc69274b918f08d9fcb21e9184ddc10b17c77cbf3c19d5d27e18cbd4a8c336afb488d0e92c18d56e64dd4ea5c437e6");
+		let mut call_setup = CallSetup::<T>::default();
+		let (mut ext, _) = call_setup.ext();
+
+		let result;
+
+		#[block]
+		{
+			result = pure_precompiles::Bn128Mul::execute(ext.gas_meter_mut(), &input);
+		}
+
+		assert_eq!(result.unwrap().data, expected);
+	}
+
+	// `n`: pairings to perform
+	#[benchmark(pov_mode = Measured)]
+	fn bn128_pairing(n: Linear<0, { limits::code::BLOB_BYTES / 192 }>) {
+		let input = pure_precompiles::generate_random_ecpairs(n as usize);
+		let mut call_setup = CallSetup::<T>::default();
+		let (mut ext, _) = call_setup.ext();
+
+		let result;
+		#[block]
+		{
+			result = pure_precompiles::Bn128Pairing::execute(ext.gas_meter_mut(), &input);
+		}
+		assert_ok!(result);
+	}
+
+	// `n`: number of rounds to perform
+	#[benchmark(pov_mode = Measured)]
+	fn blake2f(n: Linear<0, 1200>) {
+		use hex_literal::hex;
+		let input = hex!("48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001");
+		let input = n.to_be_bytes().to_vec().into_iter().chain(input.to_vec()).collect::<Vec<_>>();
+		let mut call_setup = CallSetup::<T>::default();
+		let (mut ext, _) = call_setup.ext();
+
+		let result;
+		#[block]
+		{
+			result = pure_precompiles::Blake2F::execute(ext.gas_meter_mut(), &input);
+		}
+		assert_ok!(result);
+	}
+
 	// Only calling the function itself for the list of
 	// generated different ECDSA keys.
 	// This is a slow call: We reduce the number of runs.
diff --git a/substrate/frame/revive/src/lib.rs b/substrate/frame/revive/src/lib.rs
index b13ff6c032637f0abc5f5faa317401b8736b1225..07e393f1556da2efda64f3df28ee0e3422cf01aa 100644
--- a/substrate/frame/revive/src/lib.rs
+++ b/substrate/frame/revive/src/lib.rs
@@ -495,6 +495,8 @@ pub mod pallet {
 		RefcountOverOrUnderflow,
 		/// Unsupported precompile address
 		UnsupportedPrecompileAddress,
+		/// Precompile Error
+		PrecompileFailure,
 	}
 
 	/// A reason for the pallet contracts placing a hold on funds.
diff --git a/substrate/frame/revive/src/pure_precompiles.rs b/substrate/frame/revive/src/pure_precompiles.rs
index 8882b7dc44064d0936890d4d244fd8b1dc94a5bd..fda2d7a94f1ca17aa09ecbd13aab439777f7101f 100644
--- a/substrate/frame/revive/src/pure_precompiles.rs
+++ b/substrate/frame/revive/src/pure_precompiles.rs
@@ -15,11 +15,29 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-use crate::{exec::ExecResult, Config, Error, GasMeter, H160};
+use crate::{exec::ExecResult, Config, Error, ExecReturnValue, GasMeter, H160, LOG_TARGET};
 
 mod ecrecover;
 pub use ecrecover::*;
 
+mod sha256;
+pub use sha256::*;
+
+mod ripemd160;
+pub use ripemd160::*;
+
+mod identity;
+pub use identity::*;
+
+mod bn128;
+pub use bn128::*;
+
+mod modexp;
+pub use modexp::*;
+
+mod blake2f;
+pub use blake2f::*;
+
 /// Determine if the given address is a precompile.
 /// For now, we consider that all addresses between 0x1 and 0xff are reserved for precompiles.
 pub fn is_precompile(address: &H160) -> bool {
@@ -30,7 +48,7 @@ pub fn is_precompile(address: &H160) -> bool {
 /// The `Precompile` trait defines the functionality for executing a precompiled contract.
 pub trait Precompile<T: Config> {
 	/// Executes the precompile with the provided input data.
-	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> ExecResult;
+	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> Result<ExecReturnValue, &'static str>;
 }
 
 pub struct Precompiles<T: Config> {
@@ -39,10 +57,119 @@ pub struct Precompiles<T: Config> {
 
 impl<T: Config> Precompiles<T> {
 	pub fn execute(addr: H160, gas_meter: &mut GasMeter<T>, input: &[u8]) -> ExecResult {
-		if addr == ECRECOVER {
-			ECRecover::execute(gas_meter, input)
-		} else {
-			Err(Error::<T>::UnsupportedPrecompileAddress.into())
+		match addr.as_bytes()[19] {
+			1u8 => ECRecover::execute(gas_meter, input),
+			2u8 => Sha256::execute(gas_meter, input),
+			3u8 => Ripemd160::execute(gas_meter, input),
+			4u8 => Identity::execute(gas_meter, input),
+			5u8 => Modexp::execute(gas_meter, input),
+			6u8 => Bn128Add::execute(gas_meter, input),
+			7u8 => Bn128Mul::execute(gas_meter, input),
+			8u8 => Bn128Pairing::execute(gas_meter, input),
+			9u8 => Blake2F::execute(gas_meter, input),
+			_ => return Err(Error::<T>::UnsupportedPrecompileAddress.into()),
 		}
+		.map_err(|reason| {
+			log::debug!(target: LOG_TARGET, "Precompile failed: {reason:?}");
+			Error::<T>::PrecompileFailure.into()
+		})
+	}
+}
+
+#[cfg(test)]
+mod test {
+	use super::*;
+	use crate::{tests::Test, ExecReturnValue, Weight};
+	use alloy_core::hex;
+	use pallet_revive_uapi::ReturnFlags;
+
+	#[derive(Debug, serde::Deserialize)]
+	#[serde(rename_all = "PascalCase")]
+	struct EthConsensusTest {
+		input: String,
+		expected: String,
+		name: String,
+	}
+
+	#[derive(Debug, serde::Deserialize)]
+	#[serde(rename_all = "PascalCase")]
+	struct EthConsensusFailureTest {
+		input: String,
+		expected_error: String,
+		name: String,
+	}
+
+	/// Run a precompile with the given input data.
+	pub fn run_precompile<P: Precompile<crate::tests::Test>>(
+		input: Vec<u8>,
+	) -> Result<ExecReturnValue, &'static str> {
+		let mut gas_meter = GasMeter::<Test>::new(Weight::MAX);
+		P::execute(&mut gas_meter, &input)
+	}
+
+	/// Tests a precompile against the ethereum consensus tests defined in the given json
+	/// The  JSON format is expected to contain an array of test vectors,
+	/// where each vector can be deserialized into an "EthConsensusTest".
+	pub fn test_precompile_test_vectors<P: Precompile<crate::tests::Test>>(
+		json: &str,
+	) -> Result<(), String> {
+		let tests: Vec<EthConsensusTest> = serde_json::from_str(json).expect("expected json array");
+
+		for test in tests {
+			let input: Vec<u8> =
+				hex::decode(test.input).expect("Could not hex-decode test input data");
+
+			let mut gas_meter = GasMeter::<Test>::new(Weight::MAX);
+			match P::execute(&mut gas_meter, &input) {
+				Ok(ExecReturnValue { data, flags }) => {
+					assert_eq!(
+						flags,
+						ReturnFlags::empty(),
+						"test '{}' failed (unexpected flags)",
+						test.name
+					);
+
+					assert_eq!(
+						hex::encode(data),
+						test.expected,
+						"test '{}' failed (different output)",
+						test.name
+					);
+				},
+				Err(err) => {
+					return Err(format!("Test '{}' returned error: {:?}", test.name, err));
+				},
+			}
+		}
+
+		Ok(())
+	}
+
+	pub fn test_precompile_failure_test_vectors<P: Precompile<crate::tests::Test>>(
+		json: &str,
+	) -> Result<(), String> {
+		let tests: Vec<EthConsensusFailureTest> =
+			serde_json::from_str(json).expect("expected json array");
+
+		for test in tests {
+			let input: Vec<u8> =
+				hex::decode(test.input).expect("Could not hex-decode test input data");
+
+			let mut gas_meter = GasMeter::<Test>::new(Weight::MAX);
+			match P::execute(&mut gas_meter, &input) {
+				Ok(ExecReturnValue { data, .. }) => {
+					panic!("Test should failed, got {data:?}");
+				},
+				Err(reason) => {
+					assert_eq!(
+						test.expected_error, reason,
+						"Test '{}' failed (different error)",
+						test.name
+					);
+				},
+			}
+		}
+
+		Ok(())
 	}
 }
diff --git a/substrate/frame/revive/src/pure_precompiles/blake2f.rs b/substrate/frame/revive/src/pure_precompiles/blake2f.rs
new file mode 100644
index 0000000000000000000000000000000000000000..e60049e6544f3cee448ca489ce2983483bffd999
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/blake2f.rs
@@ -0,0 +1,105 @@
+// This file is part of Substrate.
+
+// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// 	http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+use super::Precompile;
+use crate::{Config, ExecReturnValue, GasMeter, RuntimeCosts};
+use pallet_revive_uapi::ReturnFlags;
+
+mod eip_152;
+
+/// The Blake2F precompile.
+pub struct Blake2F;
+
+impl<T: Config> Precompile<T> for Blake2F {
+	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> Result<ExecReturnValue, &'static str> {
+		const BLAKE2_F_ARG_LEN: usize = 213;
+
+		if input.len() != BLAKE2_F_ARG_LEN {
+			return Err("invalid input length");
+		}
+
+		let mut rounds_buf: [u8; 4] = [0; 4];
+		rounds_buf.copy_from_slice(&input[0..4]);
+		let rounds: u32 = u32::from_be_bytes(rounds_buf);
+
+		gas_meter.charge(RuntimeCosts::Blake2F(rounds))?;
+
+		// we use from_le_bytes below to effectively swap byte order to LE if architecture is BE
+
+		let mut h_buf: [u8; 64] = [0; 64];
+		h_buf.copy_from_slice(&input[4..68]);
+		let mut h = [0u64; 8];
+		let mut ctr = 0;
+		for state_word in &mut h {
+			let mut temp: [u8; 8] = Default::default();
+			temp.copy_from_slice(&h_buf[(ctr * 8)..(ctr + 1) * 8]);
+			*state_word = u64::from_le_bytes(temp);
+			ctr += 1;
+		}
+
+		let mut m_buf: [u8; 128] = [0; 128];
+		m_buf.copy_from_slice(&input[68..196]);
+		let mut m = [0u64; 16];
+		ctr = 0;
+		for msg_word in &mut m {
+			let mut temp: [u8; 8] = Default::default();
+			temp.copy_from_slice(&m_buf[(ctr * 8)..(ctr + 1) * 8]);
+			*msg_word = u64::from_le_bytes(temp);
+			ctr += 1;
+		}
+
+		let mut t_0_buf: [u8; 8] = [0; 8];
+		t_0_buf.copy_from_slice(&input[196..204]);
+		let t_0 = u64::from_le_bytes(t_0_buf);
+
+		let mut t_1_buf: [u8; 8] = [0; 8];
+		t_1_buf.copy_from_slice(&input[204..212]);
+		let t_1 = u64::from_le_bytes(t_1_buf);
+
+		let f = if input[212] == 1 {
+			true
+		} else if input[212] == 0 {
+			false
+		} else {
+			return Err("invalid final flag");
+		};
+
+		eip_152::compress(&mut h, m, [t_0, t_1], f, rounds as usize);
+
+		let mut output_buf = [0u8; u64::BITS as usize];
+		for (i, state_word) in h.iter().enumerate() {
+			output_buf[i * 8..(i + 1) * 8].copy_from_slice(&state_word.to_le_bytes());
+		}
+
+		Ok(ExecReturnValue { data: output_buf.to_vec(), flags: ReturnFlags::empty() })
+	}
+}
+
+#[cfg(test)]
+mod tests {
+	use super::*;
+	use crate::pure_precompiles::test::*;
+
+	#[test]
+	fn test_blake2f() -> Result<(), String> {
+		test_precompile_test_vectors::<Blake2F>(include_str!("./testdata/9-blake2f.json"))?;
+		test_precompile_failure_test_vectors::<Blake2F>(include_str!(
+			"./testdata/9-blake2f-failures.json"
+		))?;
+		Ok(())
+	}
+}
diff --git a/substrate/frame/revive/src/pure_precompiles/blake2f/eip_152.rs b/substrate/frame/revive/src/pure_precompiles/blake2f/eip_152.rs
new file mode 100644
index 0000000000000000000000000000000000000000..53f5d81134d482e59dde83d2ba59b666b4a56628
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/blake2f/eip_152.rs
@@ -0,0 +1,92 @@
+// This file is part of Substrate.
+
+// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// 	http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+/// The precomputed values for BLAKE2b [from the spec](https://tools.ietf.org/html/rfc7693#section-2.7)
+/// There are 10 16-byte arrays - one for each round
+/// the entries are calculated from the sigma constants.
+const SIGMA: [[usize; 16]; 10] = [
+	[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
+	[14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3],
+	[11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4],
+	[7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8],
+	[9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13],
+	[2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9],
+	[12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11],
+	[13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10],
+	[6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5],
+	[10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0],
+];
+
+/// IV is the initialization vector for BLAKE2b. See https://tools.ietf.org/html/rfc7693#section-2.6
+/// for details.
+const IV: [u64; 8] = [
+	0x6a09e667f3bcc908,
+	0xbb67ae8584caa73b,
+	0x3c6ef372fe94f82b,
+	0xa54ff53a5f1d36f1,
+	0x510e527fade682d1,
+	0x9b05688c2b3e6c1f,
+	0x1f83d9abfb41bd6b,
+	0x5be0cd19137e2179,
+];
+
+#[inline(always)]
+/// The G mixing function. See https://tools.ietf.org/html/rfc7693#section-3.1
+fn g(v: &mut [u64], a: usize, b: usize, c: usize, d: usize, x: u64, y: u64) {
+	v[a] = v[a].wrapping_add(v[b]).wrapping_add(x);
+	v[d] = (v[d] ^ v[a]).rotate_right(32);
+	v[c] = v[c].wrapping_add(v[d]);
+	v[b] = (v[b] ^ v[c]).rotate_right(24);
+	v[a] = v[a].wrapping_add(v[b]).wrapping_add(y);
+	v[d] = (v[d] ^ v[a]).rotate_right(16);
+	v[c] = v[c].wrapping_add(v[d]);
+	v[b] = (v[b] ^ v[c]).rotate_right(63);
+}
+
+/// The Blake2 compression function F. See https://tools.ietf.org/html/rfc7693#section-3.2
+/// Takes as an argument the state vector `h`, message block vector `m`, offset counter `t`, final
+/// block indicator flag `f`, and number of rounds `rounds`. The state vector provided as the first
+/// parameter is modified by the function.
+pub fn compress(h: &mut [u64; 8], m: [u64; 16], t: [u64; 2], f: bool, rounds: usize) {
+	let mut v = [0u64; 16];
+	v[..h.len()].copy_from_slice(h); // First half from state.
+	v[h.len()..].copy_from_slice(&IV); // Second half from IV.
+
+	v[12] ^= t[0];
+	v[13] ^= t[1];
+
+	if f {
+		v[14] = !v[14] // Invert all bits if the last-block-flag is set.
+	}
+	for i in 0..rounds {
+		// Message word selection permutation for this round.
+		let s = &SIGMA[i % 10];
+		g(&mut v, 0, 4, 8, 12, m[s[0]], m[s[1]]);
+		g(&mut v, 1, 5, 9, 13, m[s[2]], m[s[3]]);
+		g(&mut v, 2, 6, 10, 14, m[s[4]], m[s[5]]);
+		g(&mut v, 3, 7, 11, 15, m[s[6]], m[s[7]]);
+
+		g(&mut v, 0, 5, 10, 15, m[s[8]], m[s[9]]);
+		g(&mut v, 1, 6, 11, 12, m[s[10]], m[s[11]]);
+		g(&mut v, 2, 7, 8, 13, m[s[12]], m[s[13]]);
+		g(&mut v, 3, 4, 9, 14, m[s[14]], m[s[15]]);
+	}
+
+	for i in 0..8 {
+		h[i] ^= v[i] ^ v[i + 8];
+	}
+}
diff --git a/substrate/frame/revive/src/pure_precompiles/bn128.rs b/substrate/frame/revive/src/pure_precompiles/bn128.rs
new file mode 100644
index 0000000000000000000000000000000000000000..406ea49b6645921c0d7c07bb5cf65c7e329de37d
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/bn128.rs
@@ -0,0 +1,236 @@
+// This file is part of Substrate.
+
+// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// 	http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+use super::Precompile;
+use crate::{Config, ExecReturnValue, GasMeter, RuntimeCosts};
+use alloc::vec::Vec;
+use bn::{pairing_batch, AffineG1, AffineG2, Fq, Fq2, Group, Gt, G1, G2};
+use pallet_revive_uapi::ReturnFlags;
+use sp_core::U256;
+
+/// The Bn128Add precompile.
+pub struct Bn128Add;
+
+impl<T: Config> Precompile<T> for Bn128Add {
+	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> Result<ExecReturnValue, &'static str> {
+		gas_meter.charge(RuntimeCosts::Bn128Add)?;
+
+		let p1 = read_point(input, 0)?;
+		let p2 = read_point(input, 64)?;
+
+		let mut buf = [0u8; 64];
+		if let Some(sum) = AffineG1::from_jacobian(p1 + p2) {
+			// point not at infinity
+			sum.x().to_big_endian(&mut buf[0..32]).expect("0..32 is 32-byte length; qed");
+			sum.y().to_big_endian(&mut buf[32..64]).expect("32..64 is 32-byte length; qed");
+		}
+
+		Ok(ExecReturnValue { data: buf.to_vec(), flags: ReturnFlags::empty() })
+	}
+}
+
+/// The Bn128Mul builtin
+pub struct Bn128Mul;
+
+impl<T: Config> Precompile<T> for Bn128Mul {
+	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> Result<ExecReturnValue, &'static str> {
+		gas_meter.charge(RuntimeCosts::Bn128Mul)?;
+
+		let p = read_point(input, 0)?;
+		let fr = read_fr(input, 64)?;
+
+		let mut buf = [0u8; 64];
+		if let Some(sum) = AffineG1::from_jacobian(p * fr) {
+			// point not at infinity
+			sum.x().to_big_endian(&mut buf[0..32]).expect("0..32 is 32-byte length; qed");
+			sum.y().to_big_endian(&mut buf[32..64]).expect("32..64 is 32-byte length; qed");
+		}
+
+		Ok(ExecReturnValue { data: buf.to_vec(), flags: ReturnFlags::empty() })
+	}
+}
+
+/// The Bn128Pairing builtin
+pub struct Bn128Pairing;
+
+impl<T: Config> Precompile<T> for Bn128Pairing {
+	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> Result<ExecReturnValue, &'static str> {
+		if input.len() % 192 != 0 {
+			return Err("invalid input length");
+		}
+
+		let ret_val = if input.is_empty() {
+			gas_meter.charge(RuntimeCosts::Bn128Pairing(0))?;
+			U256::one()
+		} else {
+			// (a, b_a, b_b - each 64-byte affine coordinates)
+			let elements = input.len() / 192;
+			gas_meter.charge(RuntimeCosts::Bn128Pairing(elements as u32))?;
+
+			let mut vals = Vec::new();
+			for i in 0..elements {
+				let offset = i * 192;
+				let a_x = Fq::from_slice(&input[offset..offset + 32])
+					.map_err(|_| "Invalid a argument x coordinate")?;
+
+				let a_y = Fq::from_slice(&input[offset + 32..offset + 64])
+					.map_err(|_| "Invalid a argument y coordinate")?;
+
+				let b_a_y = Fq::from_slice(&input[offset + 64..offset + 96])
+					.map_err(|_| "Invalid b argument imaginary coeff x coordinate")?;
+
+				let b_a_x = Fq::from_slice(&input[offset + 96..offset + 128])
+					.map_err(|_| "Invalid b argument imaginary coeff y coordinate")?;
+
+				let b_b_y = Fq::from_slice(&input[offset + 128..offset + 160])
+					.map_err(|_| "Invalid b argument real coeff x coordinate")?;
+
+				let b_b_x = Fq::from_slice(&input[offset + 160..offset + 192])
+					.map_err(|_| "Invalid b argument real coeff y coordinate")?;
+
+				let b_a = Fq2::new(b_a_x, b_a_y);
+				let b_b = Fq2::new(b_b_x, b_b_y);
+				let b = if b_a.is_zero() && b_b.is_zero() {
+					G2::zero()
+				} else {
+					G2::from(
+						AffineG2::new(b_a, b_b).map_err(|_| "Invalid b argument - not on curve")?,
+					)
+				};
+				let a = if a_x.is_zero() && a_y.is_zero() {
+					G1::zero()
+				} else {
+					G1::from(
+						AffineG1::new(a_x, a_y).map_err(|_| "Invalid a argument - not on curve")?,
+					)
+				};
+				vals.push((a, b));
+			}
+
+			let mul = pairing_batch(&vals);
+
+			if mul == Gt::one() {
+				U256::one()
+			} else {
+				U256::zero()
+			}
+		};
+
+		let buf = ret_val.to_big_endian();
+		Ok(ExecReturnValue { data: buf.to_vec(), flags: ReturnFlags::empty() })
+	}
+}
+
+fn read_point(input: &[u8], start_inx: usize) -> Result<bn::G1, &'static str> {
+	let mut px_buf = [0u8; 32];
+	let mut py_buf = [0u8; 32];
+	read_input(input, &mut px_buf, start_inx);
+	read_input(input, &mut py_buf, start_inx + 32);
+
+	let px = Fq::from_slice(&px_buf).map_err(|_| "Invalid point x coordinate")?;
+	let py = Fq::from_slice(&py_buf).map_err(|_| "Invalid point y coordinate")?;
+
+	Ok(if px == Fq::zero() && py == Fq::zero() {
+		G1::zero()
+	} else {
+		AffineG1::new(px, py).map_err(|_| "Invalid curve point")?.into()
+	})
+}
+
+fn read_fr(input: &[u8], start_inx: usize) -> Result<bn::Fr, &'static str> {
+	let mut buf = [0u8; 32];
+	read_input(input, &mut buf, start_inx);
+
+	let r = bn::Fr::from_slice(&buf).map_err(|_| "Invalid field element")?;
+	Ok(r)
+}
+
+/// Copy bytes from input to target.
+fn read_input(source: &[u8], target: &mut [u8], offset: usize) {
+	// Out of bounds, nothing to copy.
+	if source.len() <= offset {
+		return;
+	}
+
+	// Find len to copy up to target len, but not out of bounds.
+	let len = core::cmp::min(target.len(), source.len() - offset);
+	target[..len].copy_from_slice(&source[offset..][..len]);
+}
+
+#[cfg(feature = "runtime-benchmarks")]
+pub fn generate_random_ecpairs(_n: usize) -> Vec<u8> {
+	use alloc::vec;
+	use bn::{Fr, Group, G1, G2};
+	use rand::SeedableRng;
+	use rand_pcg::Pcg64;
+	let n = 1;
+	let mut rng = Pcg64::seed_from_u64(1);
+
+	let mut buffer = vec![0u8; n * 192];
+
+	let mut write = |element: &bn::Fq, offset: &mut usize| {
+		element.to_big_endian(&mut buffer[*offset..*offset + 32]).unwrap();
+		*offset += 32
+	};
+
+	for i in 0..n {
+		let mut offset = i * 192;
+		let scalar = Fr::random(&mut rng);
+
+		let g1 = G1::one() * scalar;
+		let g2 = G2::one() * scalar;
+		let a = AffineG1::from_jacobian(g1).expect("G1 point should be on curve");
+		let b = AffineG2::from_jacobian(g2).expect("G2 point should be on curve");
+
+		write(&a.x(), &mut offset);
+		write(&a.y(), &mut offset);
+		write(&b.x().imaginary(), &mut offset);
+		write(&b.x().real(), &mut offset);
+		write(&b.y().imaginary(), &mut offset);
+		write(&b.y().real(), &mut offset);
+	}
+
+	buffer
+}
+
+#[cfg(test)]
+mod tests {
+	use super::*;
+	use crate::pure_precompiles::test::*;
+
+	#[test]
+	fn test_bn128add() -> Result<(), String> {
+		test_precompile_test_vectors::<Bn128Add>(include_str!("./testdata/6-bn128add.json"))?;
+		test_precompile_failure_test_vectors::<Bn128Add>(include_str!(
+			"./testdata/6-bn128add-failure.json"
+		))?;
+		Ok(())
+	}
+
+	#[test]
+	fn test_bn128mul() -> Result<(), String> {
+		test_precompile_test_vectors::<Bn128Mul>(include_str!("./testdata/7-bn128mul.json"))?;
+		Ok(())
+	}
+
+	#[test]
+	fn test_bn128pairing() -> Result<(), String> {
+		test_precompile_test_vectors::<Bn128Pairing>(include_str!(
+			"./testdata/8-bn128pairing.json"
+		))?;
+		Ok(())
+	}
+}
diff --git a/substrate/frame/revive/src/pure_precompiles/ecrecover.rs b/substrate/frame/revive/src/pure_precompiles/ecrecover.rs
index 8fde0fb40d2f7a284d96cb2e7662bb86cb6dcc47..447862dd4ed2befc23aa69dc042ccc95b60004d3 100644
--- a/substrate/frame/revive/src/pure_precompiles/ecrecover.rs
+++ b/substrate/frame/revive/src/pure_precompiles/ecrecover.rs
@@ -15,17 +15,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 use super::Precompile;
-use crate::{exec::ExecResult, Config, ExecReturnValue, GasMeter, RuntimeCosts};
-use hex_literal::hex;
+use crate::{Config, ExecReturnValue, GasMeter, RuntimeCosts};
 use pallet_revive_uapi::ReturnFlags;
-use sp_core::H160;
-pub const ECRECOVER: H160 = H160(hex!("0000000000000000000000000000000000000001"));
 
 /// The ecrecover precompile.
 pub struct ECRecover;
 
 impl<T: Config> Precompile<T> for ECRecover {
-	fn execute(gas_meter: &mut GasMeter<T>, i: &[u8]) -> ExecResult {
+	fn execute(gas_meter: &mut GasMeter<T>, i: &[u8]) -> Result<ExecReturnValue, &'static str> {
 		gas_meter.charge(RuntimeCosts::EcdsaRecovery)?;
 
 		let mut input = [0u8; 128];
@@ -58,3 +55,15 @@ impl<T: Config> Precompile<T> for ECRecover {
 		Ok(ExecReturnValue { data, flags: ReturnFlags::empty() })
 	}
 }
+
+#[cfg(test)]
+mod tests {
+	use super::*;
+	use crate::pure_precompiles::test::test_precompile_test_vectors;
+
+	#[test]
+	fn test_ecrecover() -> Result<(), String> {
+		test_precompile_test_vectors::<ECRecover>(include_str!("./testdata/1-ecRecover.json"))?;
+		Ok(())
+	}
+}
diff --git a/substrate/frame/revive/src/pure_precompiles/identity.rs b/substrate/frame/revive/src/pure_precompiles/identity.rs
new file mode 100644
index 0000000000000000000000000000000000000000..59541b6c86e3f0147bc76a1e13614f00e3678c24
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/identity.rs
@@ -0,0 +1,30 @@
+// This file is part of Substrate.
+
+// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// 	http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+use super::Precompile;
+use crate::{Config, ExecReturnValue, GasMeter, RuntimeCosts};
+use pallet_revive_uapi::ReturnFlags;
+
+/// The identity precompile.
+pub struct Identity;
+
+impl<T: Config> Precompile<T> for Identity {
+	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> Result<ExecReturnValue, &'static str> {
+		gas_meter.charge(RuntimeCosts::Identity(input.len() as u32))?;
+
+		Ok(ExecReturnValue { data: input.to_vec(), flags: ReturnFlags::empty() })
+	}
+}
diff --git a/substrate/frame/revive/src/pure_precompiles/modexp.rs b/substrate/frame/revive/src/pure_precompiles/modexp.rs
new file mode 100644
index 0000000000000000000000000000000000000000..2e0c51af66ed8a69af2826abbaae8759f4345725
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/modexp.rs
@@ -0,0 +1,379 @@
+// This file is part of Substrate.
+
+// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// 	http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the Liense.
+use super::Precompile;
+use crate::{Config, ExecReturnValue, GasMeter, RuntimeCosts};
+use alloc::{vec, vec::Vec};
+use core::cmp::max;
+use num_bigint::BigUint;
+use num_integer::Integer;
+use num_traits::{One, Zero};
+use pallet_revive_uapi::ReturnFlags;
+
+/// The Modexp precompile.
+/// ModExp expects the following as inputs:
+/// 1) 32 bytes expressing the length of base
+/// 2) 32 bytes expressing the length of exponent
+/// 3) 32 bytes expressing the length of modulus
+/// 4) base, size as described above
+/// 5) exponent, size as described above
+/// 6) modulus, size as described above
+///
+/// # Note
+///
+/// input sizes are bound to 1024 bytes, with the expectation
+/// that gas limits would be applied before actual computation.
+/// maximum stack size will also prevent abuse.
+/// see <https://eips.ethereum.org/EIPS/eip-198>
+pub struct Modexp;
+
+/// See EIP-2565
+const MIN_GAS_COST: u64 = 200;
+
+// Calculate gas cost according to EIP 2565:
+// https://eips.ethereum.org/EIPS/eip-2565
+fn calculate_gas_cost(
+	base_length: u64,
+	mod_length: u64,
+	exponent: &BigUint,
+	exponent_bytes: &[u8],
+	mod_is_even: bool,
+) -> u64 {
+	fn calculate_multiplication_complexity(base_length: u64, mod_length: u64) -> u64 {
+		let max_length = max(base_length, mod_length);
+		let mut words = max_length / 8;
+		if max_length % 8 > 0 {
+			words += 1;
+		}
+
+		// Note: can't overflow because we take words to be some u64 value / 8, which is
+		// necessarily less than sqrt(u64::MAX).
+		// Additionally, both base_length and mod_length are bounded to 1024, so this has
+		// an upper bound of roughly (1024 / 8) squared
+		words * words
+	}
+
+	fn calculate_iteration_count(exponent: &BigUint, exponent_bytes: &[u8]) -> u64 {
+		let mut iteration_count: u64 = 0;
+		let exp_length = exponent_bytes.len() as u64;
+
+		if exp_length <= 32 && exponent.is_zero() {
+			iteration_count = 0;
+		} else if exp_length <= 32 {
+			iteration_count = exponent.bits() - 1;
+		} else if exp_length > 32 {
+			// from the EIP spec:
+			// (8 * (exp_length - 32)) + ((exponent & (2**256 - 1)).bit_length() - 1)
+			//
+			// Notes:
+			// * exp_length is bounded to 1024 and is > 32
+			// * exponent can be zero, so we subtract 1 after adding the other terms (whose sum must
+			//   be > 0)
+			// * the addition can't overflow because the terms are both capped at roughly 8 * max
+			//   size of exp_length (1024)
+			// * the EIP spec is written in python, in which (exponent & (2**256 - 1)) takes the
+			//   FIRST 32 bytes. However this `BigUint` `&` operator takes the LAST 32 bytes. We
+			//   thus instead take the bytes manually.
+			let exponent_head = BigUint::from_bytes_be(&exponent_bytes[..32]);
+
+			iteration_count = (8 * (exp_length - 32)) + exponent_head.bits() - 1;
+		}
+
+		max(iteration_count, 1)
+	}
+
+	let multiplication_complexity = calculate_multiplication_complexity(base_length, mod_length);
+	let iteration_count = calculate_iteration_count(exponent, exponent_bytes);
+	max(MIN_GAS_COST, multiplication_complexity * iteration_count / 3)
+		.saturating_mul(if mod_is_even { 20 } else { 1 })
+}
+
+/// Copy bytes from input to target.
+fn read_input(source: &[u8], target: &mut [u8], source_offset: &mut usize) {
+	// We move the offset by the len of the target, regardless of what we
+	// actually copy.
+	let offset = *source_offset;
+	*source_offset += target.len();
+
+	// Out of bounds, nothing to copy.
+	if source.len() <= offset {
+		return;
+	}
+
+	// Find len to copy up to target len, but not out of bounds.
+	let len = core::cmp::min(target.len(), source.len() - offset);
+	target[..len].copy_from_slice(&source[offset..][..len]);
+}
+
+impl<T: Config> Precompile<T> for Modexp {
+	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> Result<ExecReturnValue, &'static str> {
+		let mut input_offset = 0;
+
+		// Yellowpaper: whenever the input is too short, the missing bytes are
+		// considered to be zero.
+		let mut base_len_buf = [0u8; 32];
+		read_input(input, &mut base_len_buf, &mut input_offset);
+		let mut exp_len_buf = [0u8; 32];
+		read_input(input, &mut exp_len_buf, &mut input_offset);
+		let mut mod_len_buf = [0u8; 32];
+		read_input(input, &mut mod_len_buf, &mut input_offset);
+
+		// reasonable assumption: this must fit within the Ethereum EVM's max stack size
+		let max_size_big = BigUint::from(1024u32);
+
+		let base_len_big = BigUint::from_bytes_be(&base_len_buf);
+		if base_len_big > max_size_big {
+			return Err("unreasonably large base length");
+		}
+
+		let exp_len_big = BigUint::from_bytes_be(&exp_len_buf);
+		if exp_len_big > max_size_big {
+			return Err("unreasonably large exponent length");
+		}
+
+		let mod_len_big = BigUint::from_bytes_be(&mod_len_buf);
+		if mod_len_big > max_size_big {
+			return Err("unreasonably large modulus length");
+		}
+
+		// bounds check handled above
+		let base_len: usize = base_len_big.try_into().expect("base_len out of bounds");
+		let exp_len: usize = exp_len_big.try_into().expect("exp_len out of bounds");
+		let mod_len: usize = mod_len_big.try_into().expect("mod_len out of bounds");
+
+		// if mod_len is 0 output must be empty
+		if mod_len == 0 {
+			return Ok(ExecReturnValue { data: vec![], flags: ReturnFlags::empty() })
+		}
+
+		// Gas formula allows arbitrary large exp_len when base and modulus are empty, so we need to
+		// handle empty base first.
+		let r = if base_len == 0 && mod_len == 0 {
+			gas_meter.charge(RuntimeCosts::Modexp(MIN_GAS_COST))?;
+
+			BigUint::zero()
+		} else {
+			// read the numbers themselves.
+			let mut base_buf = vec![0u8; base_len];
+			read_input(input, &mut base_buf, &mut input_offset);
+			let base = BigUint::from_bytes_be(&base_buf);
+
+			let mut exp_buf = vec![0u8; exp_len];
+			read_input(input, &mut exp_buf, &mut input_offset);
+			let exponent = BigUint::from_bytes_be(&exp_buf);
+
+			let mut mod_buf = vec![0u8; mod_len];
+			read_input(input, &mut mod_buf, &mut input_offset);
+			let modulus = BigUint::from_bytes_be(&mod_buf);
+
+			// do our gas accounting
+			let gas_cost = calculate_gas_cost(
+				base_len as u64,
+				mod_len as u64,
+				&exponent,
+				&exp_buf,
+				modulus.is_even(),
+			);
+
+			gas_meter.charge(RuntimeCosts::Modexp(gas_cost))?;
+
+			if modulus.is_zero() || modulus.is_one() {
+				BigUint::zero()
+			} else {
+				base.modpow(&exponent, &modulus)
+			}
+		};
+
+		// write output to given memory, left padded and same length as the modulus.
+		let bytes = r.to_bytes_be();
+
+		// always true except in the case of zero-length modulus, which leads to
+		// output of length and value 1.
+		if bytes.len() == mod_len {
+			Ok(ExecReturnValue { data: bytes.to_vec(), flags: ReturnFlags::empty() })
+		} else if bytes.len() < mod_len {
+			let mut ret = Vec::with_capacity(mod_len);
+			ret.extend(core::iter::repeat(0).take(mod_len - bytes.len()));
+			ret.extend_from_slice(&bytes[..]);
+			Ok(ExecReturnValue { data: ret.to_vec(), flags: ReturnFlags::empty() })
+		} else {
+			Err("failed")
+		}
+	}
+}
+
+#[cfg(test)]
+mod tests {
+	use super::*;
+	use crate::pure_precompiles::test::*;
+	use alloy_core::hex;
+
+	#[test]
+	fn process_consensus_tests() -> Result<(), String> {
+		test_precompile_test_vectors::<Modexp>(include_str!("./testdata/5-modexp_eip2565.json"))?;
+		Ok(())
+	}
+
+	#[test]
+	fn test_empty_input() {
+		let input = Vec::new();
+		let result = run_precompile::<Modexp>(input).unwrap();
+		assert_eq!(result.data, Vec::<u8>::new());
+	}
+
+	#[test]
+	fn test_insufficient_input() {
+		let input = hex::decode(
+			"0000000000000000000000000000000000000000000000000000000000000001\
+			0000000000000000000000000000000000000000000000000000000000000001\
+			0000000000000000000000000000000000000000000000000000000000000001",
+		)
+		.expect("Decode failed");
+
+		let result = run_precompile::<Modexp>(input).unwrap();
+		assert_eq!(result.data, vec![0x00]);
+	}
+
+	#[test]
+	fn test_excessive_input() {
+		let input = hex::decode(
+			"1000000000000000000000000000000000000000000000000000000000000001\
+			0000000000000000000000000000000000000000000000000000000000000001\
+			0000000000000000000000000000000000000000000000000000000000000001",
+		)
+		.expect("Decode failed");
+
+		let result = run_precompile::<Modexp>(input).unwrap_err();
+		assert_eq!(result, "unreasonably large base length");
+	}
+
+	#[test]
+	fn test_simple_inputs() {
+		let input = hex::decode(
+			"0000000000000000000000000000000000000000000000000000000000000001\
+			0000000000000000000000000000000000000000000000000000000000000001\
+			0000000000000000000000000000000000000000000000000000000000000001\
+			03\
+			05\
+			07",
+		)
+		.expect("Decode failed");
+
+		// 3 ^ 5 % 7 == 5
+
+		let precompile_result = run_precompile::<Modexp>(input).unwrap();
+		assert_eq!(precompile_result.data.len(), 1); // should be same length as mod
+		let result = BigUint::from_bytes_be(&precompile_result.data[..]);
+		let expected = BigUint::parse_bytes(b"5", 10).unwrap();
+		assert_eq!(result, expected);
+	}
+
+	#[test]
+	fn test_large_inputs() {
+		let input = hex::decode(
+			"0000000000000000000000000000000000000000000000000000000000000020\
+			0000000000000000000000000000000000000000000000000000000000000020\
+			0000000000000000000000000000000000000000000000000000000000000020\
+			000000000000000000000000000000000000000000000000000000000000EA5F\
+			0000000000000000000000000000000000000000000000000000000000000015\
+			0000000000000000000000000000000000000000000000000000000000003874",
+		)
+		.expect("Decode failed");
+
+		// 59999 ^ 21 % 14452 = 10055
+
+		let precompile_result = run_precompile::<Modexp>(input).unwrap();
+		assert_eq!(precompile_result.data.len(), 32); // should be same length as mod
+		let result = BigUint::from_bytes_be(&precompile_result.data[..]);
+		let expected = BigUint::parse_bytes(b"10055", 10).unwrap();
+		assert_eq!(result, expected);
+	}
+
+	#[test]
+	fn test_large_computation() {
+		let input = hex::decode(
+			"0000000000000000000000000000000000000000000000000000000000000001\
+			0000000000000000000000000000000000000000000000000000000000000020\
+			0000000000000000000000000000000000000000000000000000000000000020\
+			03\
+			fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e\
+			fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
+		)
+		.expect("Decode failed");
+
+		let precompile_result = run_precompile::<Modexp>(input).unwrap();
+		assert_eq!(precompile_result.data.len(), 32); // should be same length as mod
+		let result = BigUint::from_bytes_be(&precompile_result.data[..]);
+		let expected = BigUint::parse_bytes(b"1", 10).unwrap();
+		assert_eq!(result, expected);
+	}
+
+	#[test]
+	fn test_zero_exp_with_33_length() {
+		// This is a regression test which ensures that the 'iteration_count' calculation
+		// in 'calculate_iteration_count' cannot underflow.
+		//
+		// In debug mode, this underflow could cause a panic. Otherwise, it causes N**0 to
+		// be calculated at more-than-normal expense.
+		//
+		// TODO: cite security advisory
+
+		let input = vec![
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+		];
+
+		let precompile_result = run_precompile::<Modexp>(input).unwrap();
+		assert_eq!(precompile_result.data.len(), 1); // should be same length as mod
+		let result = BigUint::from_bytes_be(&precompile_result.data[..]);
+		let expected = BigUint::parse_bytes(b"0", 10).unwrap();
+		assert_eq!(result, expected);
+	}
+
+	#[test]
+	fn test_long_exp_gas_cost_matches_specs() {
+		use crate::{gas::Token, tests::Test, GasMeter, Weight};
+
+		let input = vec![
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			16, 0, 0, 0, 255, 255, 255, 2, 0, 0, 179, 0, 0, 2, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 255, 251, 0, 0, 0, 0, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 255, 255, 255, 2, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+			255, 255, 255, 249,
+		];
+
+		let mut gas_meter = GasMeter::<Test>::new(Weight::MAX);
+		Modexp::execute(&mut gas_meter, &input).unwrap();
+
+		// 7104 * 20 gas used when ran in geth (x20)
+		assert_eq!(
+			gas_meter.gas_consumed(),
+			Token::<Test>::weight(&RuntimeCosts::Modexp(7104 * 20))
+		);
+	}
+}
diff --git a/substrate/frame/revive/src/pure_precompiles/ripemd160.rs b/substrate/frame/revive/src/pure_precompiles/ripemd160.rs
new file mode 100644
index 0000000000000000000000000000000000000000..5177fa865a02dedd3b3e26baf0cd7ca404128bab
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/ripemd160.rs
@@ -0,0 +1,45 @@
+// This file is part of Substrate.
+
+// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// 	http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+use super::Precompile;
+use crate::{Config, ExecReturnValue, GasMeter, RuntimeCosts};
+use pallet_revive_uapi::ReturnFlags;
+use ripemd::Digest;
+
+/// The Ripemd160 precompile.
+pub struct Ripemd160;
+
+impl<T: Config> Precompile<T> for Ripemd160 {
+	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> Result<ExecReturnValue, &'static str> {
+		gas_meter.charge(RuntimeCosts::Ripemd160(input.len() as _))?;
+
+		let mut ret = [0u8; 32];
+		ret[12..32].copy_from_slice(&ripemd::Ripemd160::digest(input));
+		Ok(ExecReturnValue { data: ret.to_vec(), flags: ReturnFlags::empty() })
+	}
+}
+
+#[cfg(test)]
+mod tests {
+	use super::*;
+	use crate::pure_precompiles::test::test_precompile_test_vectors;
+
+	#[test]
+	fn test_ripemd160() -> Result<(), String> {
+		test_precompile_test_vectors::<Ripemd160>(include_str!("./testdata/3-ripemd160.json"))?;
+		Ok(())
+	}
+}
diff --git a/substrate/frame/revive/src/pure_precompiles/sha256.rs b/substrate/frame/revive/src/pure_precompiles/sha256.rs
new file mode 100644
index 0000000000000000000000000000000000000000..0b835a9d3be58194c3a72df86fbae411223fc404
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/sha256.rs
@@ -0,0 +1,42 @@
+// This file is part of Substrate.
+
+// Copyright (C) Parity Technologies (UK) Ltd.
+// SPDX-License-Identifier: Apache-2.0
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// 	http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+use super::Precompile;
+use crate::{Config, ExecReturnValue, GasMeter, RuntimeCosts};
+use pallet_revive_uapi::ReturnFlags;
+
+/// The Sha256 precompile.
+pub struct Sha256;
+
+impl<T: Config> Precompile<T> for Sha256 {
+	fn execute(gas_meter: &mut GasMeter<T>, input: &[u8]) -> Result<ExecReturnValue, &'static str> {
+		gas_meter.charge(RuntimeCosts::HashSha256(input.len() as u32))?;
+		let data = sp_io::hashing::sha2_256(input).to_vec();
+		Ok(ExecReturnValue { data, flags: ReturnFlags::empty() })
+	}
+}
+
+#[cfg(test)]
+mod tests {
+	use super::*;
+	use crate::pure_precompiles::test::test_precompile_test_vectors;
+
+	#[test]
+	fn test_sha256() -> Result<(), String> {
+		test_precompile_test_vectors::<Sha256>(include_str!("./testdata/2-sha256.json"))?;
+		Ok(())
+	}
+}
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/1-ecRecover.json b/substrate/frame/revive/src/pure_precompiles/testdata/1-ecRecover.json
new file mode 100644
index 0000000000000000000000000000000000000000..b033cbbb8247ca05e665914119b91c3a7238a9a7
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/1-ecRecover.json
@@ -0,0 +1,37 @@
+[
+  {
+    "Input": "a8b53bdf3306a35a7103ab5504a0c9b492295564b6202b1942a84ef300107281000000000000000000000000000000000000000000000000000000000000001b307835653165303366353363653138623737326363623030393366663731663366353366356337356237346463623331613835616138623838393262346538621122334455667788991011121314151617181920212223242526272829303132",
+    "Expected": "",
+    "Gas": 3000,
+    "Name": "CallEcrecoverUnrecoverableKey",
+    "NoBenchmark": false
+  },
+  {
+    "Input": "18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000000000000000000000000000001c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549",
+    "Expected": "000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b",
+    "Gas": 3000,
+    "Name": "ValidKey",
+    "NoBenchmark": false
+  },
+  {
+    "Input": "18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c100000000000000000000000000000000000000000000000000000000000001c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549",
+    "Expected": "",
+    "Gas": 3000,
+    "Name": "InvalidHighV-bits-1",
+    "NoBenchmark": false
+  },
+  {
+    "Input": "18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000001000000000000000000000001c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549",
+    "Expected": "",
+    "Gas": 3000,
+    "Name": "InvalidHighV-bits-2",
+    "NoBenchmark": false
+  },
+  {
+    "Input": "18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000001000000000000000000000011c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549",
+    "Expected": "",
+    "Gas": 3000,
+    "Name": "InvalidHighV-bits-3",
+    "NoBenchmark": false
+  }
+]
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/2-sha256.json b/substrate/frame/revive/src/pure_precompiles/testdata/2-sha256.json
new file mode 100644
index 0000000000000000000000000000000000000000..d343dd7ee51bbe485a9f50a1806451070ef69ba3
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/2-sha256.json
@@ -0,0 +1,1607 @@
+[
+  {
+    "Input": "",
+    "Expected": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
+    "Name": "sha256_0_0"
+  },
+  {
+    "Input": "ec07171c4f0f0e2b",
+    "Expected": "d0591ea667763c69a5f5a3bae657368ea63318b2c9c8349cccaf507e3cbd7c7a",
+    "Name": "sha256_8_0"
+  },
+  {
+    "Input": "6f0117700c040e0f",
+    "Expected": "f6cc1343d87b8298c6fcd31c3b0329c580b18c0d76ee825e81745d7717b6c736",
+    "Name": "sha256_8_1"
+  },
+  {
+    "Input": "664a82ab2e5cadf0",
+    "Expected": "f47777a411fbca205cabc6c4f3e6079fccbc2f6ceefd08ac464711f6589205eb",
+    "Name": "sha256_8_2"
+  },
+  {
+    "Input": "2d2779384a6a2847",
+    "Expected": "91b1f2cbde8ad1ecd235667c9b6c70857ed69ee981dea7f06c652e0f3f0e941a",
+    "Name": "sha256_8_3"
+  },
+  {
+    "Input": "b3c940fe79b69664",
+    "Expected": "5bae9afc9feadf571239225642c17fa93c2d9d18b7d289b312d9466f43914055",
+    "Name": "sha256_8_4"
+  },
+  {
+    "Input": "89b527955de75991",
+    "Expected": "aca2785357b7a1cba6c85ebe68f5c89fa458de871ff5e8f604329583881eadc3",
+    "Name": "sha256_8_5"
+  },
+  {
+    "Input": "94a9ac69a6ff58b8",
+    "Expected": "2c214a2159dc8089059bbe38593d08d00eac41760f55b487a2763f95adfd2c2c",
+    "Name": "sha256_8_6"
+  },
+  {
+    "Input": "d99e7b1084f0464e",
+    "Expected": "352c8183ff8c8f017d46084ec11b29880493135d2c2ff5c326e29977ef094d46",
+    "Name": "sha256_8_7"
+  },
+  {
+    "Input": "d110aa42ed72703d",
+    "Expected": "3432308d82ed8476976b31281fc80c504bdee387803fd2e02669dac653cb9501",
+    "Name": "sha256_8_8"
+  },
+  {
+    "Input": "ccae31f1bea28a88",
+    "Expected": "0a81c359db86cb8a2d98edc56228671fdeb9208cfd62b5af6fbdab7f4f1a6a48",
+    "Name": "sha256_8_9"
+  },
+  {
+    "Input": "e607b49a47e9ed24d864d6582ea29485",
+    "Expected": "3fe658f501287784079b99c9fb2da1afcd435dcc15f95bc6467c5161d0901d19",
+    "Name": "sha256_16_0"
+  },
+  {
+    "Input": "4d0e25bf3f6fc9f4da25d21fdc71773f",
+    "Expected": "f03ee7dec727a3fac251ebd94906d4f407097b70a3e28d1694d1f8b9a8da7bdc",
+    "Name": "sha256_16_1"
+  },
+  {
+    "Input": "1947b7a8a775b8177f7eca990b05b71d",
+    "Expected": "829e070258593defc82f874386c49e7b9948c8df4c517113974169d951cde50a",
+    "Name": "sha256_16_2"
+  },
+  {
+    "Input": "2b062a0f245febdba0fb1811d53b22b4",
+    "Expected": "44a2d4dad763ae21bce84a6a99fdef41a5473c83d02ec19b3d41e1ddef0ac0fc",
+    "Name": "sha256_16_3"
+  },
+  {
+    "Input": "246866eb1318f56a162be6bccc53bf19",
+    "Expected": "31dda57d89d095b17cc2036d1aaf9a279325aeda61e61a57ae3f6d3c6bdff49b",
+    "Name": "sha256_16_4"
+  },
+  {
+    "Input": "973f40c12c92b703d7b7848ef8b4466d",
+    "Expected": "6cafdeb5e141ef25476b40670d00cd3c7de404f5b2b2bd4043a8f97b46ea463a",
+    "Name": "sha256_16_5"
+  },
+  {
+    "Input": "40823aad3943a312b57432b91ff68be1",
+    "Expected": "63139aa066e248576a5a655153ef9b4cb21babb27e636fabedae8600a14fac93",
+    "Name": "sha256_16_6"
+  },
+  {
+    "Input": "ec40da9845626890213bd5ba6a195004",
+    "Expected": "bc65409c16df494e08f19f298745fb132bee93eb8faf9c784eca8ef35e69c992",
+    "Name": "sha256_16_7"
+  },
+  {
+    "Input": "2ce4c74efbdd6e9d44f1718ea9326e0a",
+    "Expected": "26e735f6724cc095a254fe51d3fe7757bc5599126cefeab8bc8d56172f634c03",
+    "Name": "sha256_16_8"
+  },
+  {
+    "Input": "4c51f97bcdda93904ae26991b471e9ea",
+    "Expected": "7fc3b9d40c39ee396e4313dc02c3e0387b30053b84a8b889885265d379137d6b",
+    "Name": "sha256_16_9"
+  },
+  {
+    "Input": "942e2b5b8ed26055da11c58bc7b5002a9d615d28ba32fa7b",
+    "Expected": "9ea1aeaf9ad4f5fd845bee772364185cac087ceb00664df68b19b4989e5e371e",
+    "Name": "sha256_24_0"
+  },
+  {
+    "Input": "deb712d8968f93f770490134a8c2c49ee93a25d324f0a1b8",
+    "Expected": "7ad7dbaaf4d9d3ab2df05a5195e363e50c8e187f6a6747defd8cb960dfbdafae",
+    "Name": "sha256_24_1"
+  },
+  {
+    "Input": "8964d5867927bc3e35a0b4c457482373969bff5edff8a781",
+    "Expected": "f176aa7e9b516f511467b8874f26f72e8814a3c941ca67fd9d5be24fd2ff5eea",
+    "Name": "sha256_24_2"
+  },
+  {
+    "Input": "d65573e07fd87b89edc1fa2b4da52595da8f82ef750a6db8",
+    "Expected": "6496c57003b328580d35a9728cf0a1594a488b5c0f394aa4df75886422fa6135",
+    "Name": "sha256_24_3"
+  },
+  {
+    "Input": "3c416545108bd2fd2f37d50622ab3bd6787c38b944eadbd0",
+    "Expected": "127038f47b16090504c536eb967bdb936de96b050149a79cc19941461716a9eb",
+    "Name": "sha256_24_4"
+  },
+  {
+    "Input": "3fd3187f450571740f6cd00e5b2e560165846eb800e5c944",
+    "Expected": "bfe9158a1051f64480691515be1e135ed728a3952d2c32b0b063f79e9df7d36d",
+    "Name": "sha256_24_5"
+  },
+  {
+    "Input": "8249f4c911826079f46ce1b5ad7e0bbeb788d8d517e8d5a8",
+    "Expected": "3df9711f5b310e264e6bde91793ff0a8a49815f7cd27095f1a31c114528d97c5",
+    "Name": "sha256_24_6"
+  },
+  {
+    "Input": "35b7ed16535df6f3aaee7ae2a237e8e53560c79e7baa9adf",
+    "Expected": "2839d354c33cd5fdc92d82a59918b2890676bf3cca5b5bf083da255bc7fb59be",
+    "Name": "sha256_24_7"
+  },
+  {
+    "Input": "9c00a0ea4d6f514e7a6832eb15cef1e15796bf0b6abb51ce",
+    "Expected": "b98d701220798dedd056e0f53ec50b9a8c533d019d003aa169bee2d3246cc4b6",
+    "Name": "sha256_24_8"
+  },
+  {
+    "Input": "626b58b6da9ab6d995a24c2eddc6856d74b3f318fa9afe75",
+    "Expected": "43a96a949b20cc2c3903114010371e21a7965088d507b2d7257f687bfbbf5687",
+    "Name": "sha256_24_9"
+  },
+  {
+    "Input": "dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c",
+    "Expected": "2f3fe18b2197138dfbd00807c6dab8debe385a7a32a8d8c6948f07719eb56755",
+    "Name": "sha256_32_0"
+  },
+  {
+    "Input": "71eae4c9cb2aba83032f67f084857a02d85023ece5d39dbe02ec4b77ca11cba1",
+    "Expected": "41da036176b9ef84f09274d0001864da8f2f9f976b9e912428d173048a2cd77d",
+    "Name": "sha256_32_1"
+  },
+  {
+    "Input": "bb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108",
+    "Expected": "276da90e9128325603ab221d7eff6599b2f1cffc0985e19c382a000253e4516d",
+    "Name": "sha256_32_2"
+  },
+  {
+    "Input": "285b4dbf34ce55544c00eebf7c51603cc3d921e9bd8eff13ee00dcdcb84109e2",
+    "Expected": "8028b1fda0844f8b80d466aa949ef56d99a2da1fa0adac59f67be8a6939e8695",
+    "Name": "sha256_32_3"
+  },
+  {
+    "Input": "fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f8187672",
+    "Expected": "a362760fe220615069ec962969511a626b51b4e7212760bb98aaf309ed29e30b",
+    "Name": "sha256_32_4"
+  },
+  {
+    "Input": "643424fe335e160cc3c2e702bfab94c0dd20cc1fd10295a1fa3d589dbdb4f4f8",
+    "Expected": "7ddf042b058263e14282c82693feb4efa3782754cac6e6ed901041fa90d371c8",
+    "Name": "sha256_32_5"
+  },
+  {
+    "Input": "b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea",
+    "Expected": "19bf9a3934d24112e56e19ee70684718d5b711d34cd9998155ad991b71e62731",
+    "Name": "sha256_32_6"
+  },
+  {
+    "Input": "a99147f8df36eabec4b8963e324f46296a5948edd2d6fb02d11e208918ef0492",
+    "Expected": "89b333ae33eede0cc40c758b056914e4b4e2eeaebb51a722c2964f29440953bd",
+    "Name": "sha256_32_7"
+  },
+  {
+    "Input": "3b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76",
+    "Expected": "e494c199933ba96c4dcec83c18ad3a29e6d3086b96268466869b576def8675cc",
+    "Name": "sha256_32_8"
+  },
+  {
+    "Input": "d146ced7db0c85069fdeefaf51290db84f08501dea3c9d33200757e29afdc133",
+    "Expected": "444f8afea113a2aa2d9f232a22d15173b0973267f2ec3622ae4a3b476a35d3fd",
+    "Name": "sha256_32_9"
+  },
+  {
+    "Input": "dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257cbd22a93ce96582ad",
+    "Expected": "a66273d6626039c35c060dcdefcd177c716a375de2239d01d13141d89ea82315",
+    "Name": "sha256_40_0"
+  },
+  {
+    "Input": "8fd1729190cc10c625a2d9b39a34ca0d0562330a9f5b074a7010b134989c8368c7f831f9dd9f9a89",
+    "Expected": "156d6f2ef8113d8c00415af26c201993c07044f53e0b1862c6a9066a1f3ada0d",
+    "Name": "sha256_40_1"
+  },
+  {
+    "Input": "0e2c1435681107414f2e8637153bbf6a101e5ffee2dcaa870e6e5881a38aac1278b90514d63a99c5",
+    "Expected": "fe9b793e4380cb78d77795193f6cc32935791aa7b087eefdc5c65631e3f1bda2",
+    "Name": "sha256_40_2"
+  },
+  {
+    "Input": "7514f387ba6f7cf194c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a659054",
+    "Expected": "1f29aaaad3dd0efe4b4a914f859463f3b22116e43d5f248d0c39c82f1c239dc9",
+    "Name": "sha256_40_3"
+  },
+  {
+    "Input": "ffe0c7e78bf16706968ffcb92694926e13418ab6e015588fa2bb85d270364c28b3682accc3939283",
+    "Expected": "821fd9b0663af03f6872c2caf160c209509e043da5bd4687cba4a4177bfed9aa",
+    "Name": "sha256_40_4"
+  },
+  {
+    "Input": "b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746d9112b71a4ca578dcceb1e9e351ddf67",
+    "Expected": "9c6cbd983d97485cf21e921bc378f728e389c8ab0091e8821e3efc1c327c8ca6",
+    "Name": "sha256_40_5"
+  },
+  {
+    "Input": "ce6d534e4a8c627da1484b14a8c9e28b07f80a5e502f63375d672379584e11e41d58d2ed58f3e5c3",
+    "Expected": "a1dffc5040a450e21c1d19713cc0faf0cdd9977cb3633705073dbee3db08d6e4",
+    "Name": "sha256_40_6"
+  },
+  {
+    "Input": "f67d9ea1138493cf4c3ffeb038656d5c8ed24e0e487cae5dee2ceb1ceece982bb1b33a53a2c9587d",
+    "Expected": "9261f020b3461e23d4574dfd0e4ef494adcc636c731c8879a725e043f22c602c",
+    "Name": "sha256_40_7"
+  },
+  {
+    "Input": "bb169138f94093d5c1c6b253cc001ce8baf78858dae053173fa812d2d1c800da0cc12ac543bcf74d",
+    "Expected": "e27716ec67e4d5baea0317c167b768c7a9f01b13e37408efe80f21370d83728e",
+    "Name": "sha256_40_8"
+  },
+  {
+    "Input": "92b6e30a5fb179d63d28c84563912db572f66da2295885b9e40608bdaf3e7764358a64a920cbb33a",
+    "Expected": "ab2670197de0eb74982f62a355b6d2846a85370796b1c33843380efc94c03726",
+    "Name": "sha256_40_9"
+  },
+  {
+    "Input": "b4d571c7b3092e1ae11d9697f82ed83342814d7a297c4410d5121a37205547c55b9b16d3241080e05b3aeb07d381faf8",
+    "Expected": "86ebac80ab00f4903eeda345b49c81ffa6b147f6e1693710d2e115d78521f9a3",
+    "Name": "sha256_48_0"
+  },
+  {
+    "Input": "d411519f2a33b07f65e7d721950e0f0d5161c71a402810e46817627a17c56c0f42e0802efa9fb74bb3180421f9252948",
+    "Expected": "177dac47de7e70219d37c0b9a96d7edb0c3447782f55571ca9d0889b123e1fa4",
+    "Name": "sha256_48_1"
+  },
+  {
+    "Input": "4e5e8261cb553d963f06fd97d4fffa966bb3f9e512311699f110a5e6ae57e0a7d2caaa8f94e41ca71e4af069a93d08cc",
+    "Expected": "f3802f2236f4ca89123d4d68fdbfd937991828e72a03c97434a4b457f6134793",
+    "Name": "sha256_48_2"
+  },
+  {
+    "Input": "a0822d15d5fc5555dbec1ebec46b763388d7374a4f397eb0af634ff9091fe7792a0c988d97e86dccaeb8bd4e27f9e30f",
+    "Expected": "313c22759d011d585ac0319b816c6a319f7bf301f87b8e40008c7d147f894e7e",
+    "Name": "sha256_48_3"
+  },
+  {
+    "Input": "ad5d5742202cdde17d800642db633c5204e67eaa4763caa20b1ab9d4fc992a659b1d3938809118c9eaa36dd5c225b9e4",
+    "Expected": "39ea78f2944bb385eb349142a27f75072c36285caaf4e76ec23ce3f7b11517d8",
+    "Name": "sha256_48_4"
+  },
+  {
+    "Input": "0b299c14892e0519b0accfa17e1a758c8aae54794fb61549f1396395c967e1b181af1d6da3cb5e89c8c77e0581371bbf",
+    "Expected": "ac311f0013bac280e2b261f5b237f999bcb251221eeebb11d76485e11c07a5cf",
+    "Name": "sha256_48_5"
+  },
+  {
+    "Input": "44e6fa3fcb31864094fe35b34c70f4d57064d43d6802ad4c3794705065f870263fef19b81604839c9dea8648388094e9",
+    "Expected": "2ec217f8a5a4a6f6297253613c41f6ef1c93839e55a7bfb102a104cc18aee998",
+    "Name": "sha256_48_6"
+  },
+  {
+    "Input": "22ea839e50eea41a9b3d096542e4d12880c982a98e6469947d76a0b8df66f41f686285a0e22f177fe3adbfc435e9c178",
+    "Expected": "1f5df0150f414beb6b85af4e12aa3f7b1362cdb1b372207703c869d891e4f3be",
+    "Name": "sha256_48_7"
+  },
+  {
+    "Input": "6752dcf3c11b723539789b0cdeb0647bbf9a3a6a2a2833cf45dbbe18cc7a0246d1ff53f889ea77aef168fd4038ae7c15",
+    "Expected": "e09c8b7144e9c20997f4077694a62bde418c413cead514fe6fef70fcb03425b5",
+    "Name": "sha256_48_8"
+  },
+  {
+    "Input": "3176b6724cf984632daf95c869d56838ab2baef94be3a4bd15df2dd8e49a90a6ee0eeb2ec30ecfb438baac023347c920",
+    "Expected": "48efbeadc9918f6729d655376521c7592ee5d37bb26479df2c509b5bc9e788dd",
+    "Name": "sha256_48_9"
+  },
+  {
+    "Input": "baa12356ab04569aa3104cfde620d697d76db3dcb659eaf6c086be6b414a494dea4bd30aef8450ae639f473148c05b36725147a6a9ce1a8c",
+    "Expected": "f62d60f4bffe89dcaa4daa46686117869fd9317361740ec2a579137ae2cd6a37",
+    "Name": "sha256_56_0"
+  },
+  {
+    "Input": "cee4ab81332d1a69a32d4af525da7faf90d62c71331ee7c99915646de2449b3cb78d142b6018f3da7a16769722ec2c7185aedafe2699a8bc",
+    "Expected": "75ab11d221d2b77e3f1642bfc0be99626614a78f09c8a1e8f11d4b2bf9be417b",
+    "Name": "sha256_56_1"
+  },
+  {
+    "Input": "0f8d4a9bb82f118d191694a644ca0d5e7f16e09114878895626faa93b9c8c5a35061073223f066e35242772385c67aaefb3f7ea7df244d73",
+    "Expected": "8af26d84d003864324e1b30487aaf780465991cc579510929974763dfcdf6227",
+    "Name": "sha256_56_2"
+  },
+  {
+    "Input": "369db1ea0b208792475450c4cefb21de11951fb8617d33132ce18755d99fa98440255ac05f900a48f396ee22209271ea0bda10fb5e2584e7",
+    "Expected": "76df6756df20b1891d5e5fe8c7650c9638d67e8a12a05c3ac7036c6193f56158",
+    "Name": "sha256_56_3"
+  },
+  {
+    "Input": "536e8bb1d00a0dd7b852b0aa653cd86c5b3ecb86d8ff2f39d74f22118262b4bca9aa52632448c525bce79a269f312539f0d3d4cf46265fc0",
+    "Expected": "1ecf7fcd430d3137d417c196dc5574d64623207c71af7acfa43df8a8160d7ddc",
+    "Name": "sha256_56_4"
+  },
+  {
+    "Input": "f69e093181f8b02114e492485696c671b648450c4fcd97aa4d2efa758272cb30d58ced16f2c60402b90828a69c211ccdce97edb797e4fa93",
+    "Expected": "208f11afe979400d6f0eceb2d842767f063bf80ed6df143703b71f0502aeee18",
+    "Name": "sha256_56_5"
+  },
+  {
+    "Input": "915b717562844d59623bc582f1a95fc678cf0d39af32560c6c06e3a74023c89cae49e9cb36d99776ee61f8c9b289f714bb16d2955e33445d",
+    "Expected": "dbe5ff664c8bef65494dfe39f7fc40a991165da731b6da2de2abb1367ce65848",
+    "Name": "sha256_56_6"
+  },
+  {
+    "Input": "09deb9575577abffd5c1c9fa11c36b86430cbb1f3ec10ebbe3787d0f5641d6d7fb96c810eda202ddce635c394249e55c6b73ce0855ad13c0",
+    "Expected": "de774ffe0b2f3d40bfbd992c515fa4fcb349b39157c6b3848ee208ce948290ad",
+    "Name": "sha256_56_7"
+  },
+  {
+    "Input": "8ae48b1ac011526c0a627c17b51c584ac00eb20fe7c292f3ad820a074d8b3d8d24506612752d8677c2d6ca24f556cc4518c90b6549ada023",
+    "Expected": "ca8da46f993103353155abd42033639f5b0792e2e166887e5076b5e2da87a495",
+    "Name": "sha256_56_8"
+  },
+  {
+    "Input": "3913ae51079cf276c8d88a4dd5fe666b5b1f704ab6a080a8f661d7b30fb11bef70e15b257d7073885468a380862202b2d705a84827644b5b",
+    "Expected": "5ad4742083d1c10ea3d48ab413386c06a37790f9471d85199f687439fb73707c",
+    "Name": "sha256_56_9"
+  },
+  {
+    "Input": "d24631c0405a84635a6d0a6b4056606b288a2d2117823a60f7536258eddcd931346ce87c847376c8967cc18297e6007dcfacb6424e1d273930f38bb0e88fc5ca",
+    "Expected": "d46e283a2838a012a525b58c9428f6f32393fc2257464183a14e94ed5af330ee",
+    "Name": "sha256_64_0"
+  },
+  {
+    "Input": "ab92e23d34352e3cf253d3d3af3c8f357f87d11c44961b5156131e18be3e385439a142c443a666499a880aa1cb9f523411bbc8e5554de099ab485b6c2c2e57cc",
+    "Expected": "f2836707fa7754d9ea1d3d8a68f2d39cad4bf5d8c33676a53072fed138706a7b",
+    "Name": "sha256_64_1"
+  },
+  {
+    "Input": "8414e76ca876f6f7ed665e41a4060d3495771a60080e1d24686dc6963261a2ca2c01b7795c2d16b5bbbb1e107be36cc91b25130888956b0cdd344de9b4659447",
+    "Expected": "b625856052c92a58e9893c38457eacc46fd0fc600720d25ad709fd73195a36c0",
+    "Name": "sha256_64_2"
+  },
+  {
+    "Input": "a0ab3ed63aa3a986ee84c20647f89fe21f2cdfc16df7a40a23e75318ae791305c712943d8795a6104f024b9701c70b09cdee9494755bbab0576e2c7f7c9d4828",
+    "Expected": "ab0037151b6df4c6d5fe52a4fb2a7758ac9fb9279b0c4feb0e9adca89d1b8bb4",
+    "Name": "sha256_64_3"
+  },
+  {
+    "Input": "3efc991bcb6d9a7979ead865c3381709d34dbbdd9a97e5773d30ccd567dbad65d4d77f6246c57d398c57848db8d3f986c475a41a23d424cd3cc2b362c1b99f2a",
+    "Expected": "01952266b323d962c345153131f3416c00f97a0dd0aef1ec5468fd42d28ecd73",
+    "Name": "sha256_64_4"
+  },
+  {
+    "Input": "03e3ac1399a8c2f89f379c047cd71ad3e782daa7e570b14ae39674af4615d0aa41776ed9d1029918af4c5113a6110139b8bd7f938caa204373a28ddaa51430eb",
+    "Expected": "e02908c549b889c1563cbf5a01f3d868700b179a27dd2c3f411a4bcbfc3b670d",
+    "Name": "sha256_64_5"
+  },
+  {
+    "Input": "06e6cc85f948fec3cff4d774cc53291ff97a37fd265cbfccf2b80507ed3ce752fa64411438542922a7bac10806efaa633d31d37c0b223314a8b6221155b9c425",
+    "Expected": "5e34ccf2a40a8b4f07762d241b2dc79e9f235e7445f99c601cb280c1ab3c5ab7",
+    "Name": "sha256_64_6"
+  },
+  {
+    "Input": "093e7bc0777fd54d93174649ff014849a9f5da50021612b6dc7591cf28d2dfc6e7002f41c6acab677a0ad023bad2a61b11c1b7221d944018b5ce60bb61e87e96",
+    "Expected": "c8c01656a56cb66874ed879b05f1b3b13239134b0048881d3658ba4c7028f282",
+    "Name": "sha256_64_7"
+  },
+  {
+    "Input": "f60c5d0adc91a116dbe009ab3b2855ca3bb78d2887ecb83233dd53d6322324b5c26e55f09b787c0542878e4d720027d9ea465f829a4e0164cf618c5d9cde49bc",
+    "Expected": "5c2c04e00d7c0a65b3d028c6184654a506b7625de57eb5950de818edc34105ed",
+    "Name": "sha256_64_8"
+  },
+  {
+    "Input": "e9b759c4664442aaf8cafe94c55bb166054e5e6ffc5687d7feef4cb5e1e5cf59bba67cc47e38a129ab1140fbcf0386ddba2feefc919aacdce6059a27a1e2efca",
+    "Expected": "e0aa00beb0d8428d0a45edd80f55368cb3eaaa50dccccba359d925b266000c73",
+    "Name": "sha256_64_9"
+  },
+  {
+    "Input": "b997f147c4f531fff16a7308b47b3cbdf57fbb76333b5406eafde39539d55ccb705fb566367d9fc142c4194b0525c16672b843aac1160f9056ebb115e80d377af4aa00cd8b145125",
+    "Expected": "1b57b0db687d57ff2e911c37e529de852061baa921bcc17d9ea57c4d96e04605",
+    "Name": "sha256_72_0"
+  },
+  {
+    "Input": "2ca020bf6da2ba7d24f025b5475f7d18a4bde6a25fcae70af7bfd990cc4dac62a0d730f56b4eb1c1ad77ca9cd58b089c23c2f6efa00b7fa49d77c76b130f49b38324f7ea761089b6",
+    "Expected": "dec22734d862d0f6e8514a21069617935e2398e848c5e1170972a3b8b8dd2894",
+    "Name": "sha256_72_1"
+  },
+  {
+    "Input": "a5e2a2e6f558681de7b4e84eec171cb0807c5a41ae2baa1e10ebee15363d1d4569f731d77a418998108f5dfae0e90556f6d6d70ec7c487dc48f5b4ca174f87b3f75f5703a60214e1",
+    "Expected": "8a8c4d43a78a19798ed1a4d420c7d242c40cdca7ec27596b6fe8ce845cf2fe03",
+    "Name": "sha256_72_2"
+  },
+  {
+    "Input": "79b5678c15ac1105a7e300bcb3c740fd1f693d4c8915c4c46dcb627f6de6e4847f123623cd23bac7f4a1eaaecaed9e0deca3a89ebf5f1a8849aa04735ee90e89508c625204c6df08",
+    "Expected": "f6bc1bc852e30d39a07c07b8bf75111b8fce4409d5bb5dc3e0425af82ff7941b",
+    "Name": "sha256_72_3"
+  },
+  {
+    "Input": "b473df5e282565a0783d23e65e283a103ebbddb5c884183cceb62fc32d0e96020a41ca5a5fb00ca216fb2b1cd8797eae0cbfb4a6cd6dfd61afd94d2287d4a07fa048ef7cf5d1f6f6",
+    "Expected": "67588d876a000dd38368aaee1d1531a0198be873bee1465692b9689f57e23106",
+    "Name": "sha256_72_4"
+  },
+  {
+    "Input": "25ee3aba091147c389ebebc5b8f3d285e16ef4e8afe5c013fdf3ed894b9eb09bba6878d0870281c4f17315223ef3483d9571662ee4db3fe2a9b63c6bf36997118d58600c1e429c10",
+    "Expected": "407d21366deac7b6983ad52402d91568492e748b6701a9b0fb78c0d9c568361d",
+    "Name": "sha256_72_5"
+  },
+  {
+    "Input": "5a379b9e8b0de934ab9f433a4fa63dc8f5795b8fc0b8a2f3d8df3ad5ee1410f0c84fd0a42a875242a75495411f8f5231f228da17f49667c113d2bc2a2c8a338f80be68496f5145b4",
+    "Expected": "41318bc9798227da98a3fd8bfeceb7630c1db5a18333b1efaa281b0677aafd6a",
+    "Name": "sha256_72_6"
+  },
+  {
+    "Input": "be21a5786ca6d46b28894467866214f9cb04eda87c30c46645f88a2520aed07f4d36dbbf1ab6dbf89431e18a462fba704216b516e819fb3392e315b0c92a7411a329cdafeb511244",
+    "Expected": "6ddffe0380f27707fc570ebccc2ace720e3ff0a548bdc8c275ca8a94e9a62c29",
+    "Name": "sha256_72_7"
+  },
+  {
+    "Input": "8823045b436896eba3c4d02dfb559bfb6331f9816f8575d93eb72b720d003e532051041bd2f12f6e6e29924139770fe209b7bbdbcd6c0bcabbf5021a7dff2d83ee132885826ad414",
+    "Expected": "e01186e0b3e7521321320f5bb3bfc8a50ab273374abf434147f44e6aa18879f1",
+    "Name": "sha256_72_8"
+  },
+  {
+    "Input": "8eea7619ca284cf5eee23e30111e0987e4b6852966c11bbdb96df57a600dc3b5aabff5b1034886d24f6fcf035bcacaaec738deb2cfb8f852c810352ac79f55d24a9d0e916471a706",
+    "Expected": "c1762a61728a7a66f7ef85e48543028d107e8ba377ee5f99d1faa8a0b5c2ecf1",
+    "Name": "sha256_72_9"
+  },
+  {
+    "Input": "28929684da8e43fa15b8421fc8c6532278176412b07eb7f423f23ffeaa0ee642590e0b7016bc063f3fffa93e1e35484c088319649165f56e773fd41f56193912dad990baf4fa8c7ff55d1dc1291f341b",
+    "Expected": "5e4920d634ede2cf73e8eea6a9b5bb1e488fe5e01bc287d3ea718236b42b2fbb",
+    "Name": "sha256_80_0"
+  },
+  {
+    "Input": "9c4b5627d84e153f3a4ecc14ddd6baaf1d62253a0f88d3af51be18d991976da00b3c49b1dd49e982e7851f9eaa580252859f53aab38c3c62ae0d6e0001c2e9402ed270764791aff081f1dc8051d22b8e",
+    "Expected": "9626dc5ef8bf734b0a8ee1045595c7fa8244af362addeda948f183ee8efa25f7",
+    "Name": "sha256_80_1"
+  },
+  {
+    "Input": "18803a7e310393f21bb4a495a445cd4545375def142bbd85d4530935b4d0c61ab62b271cad46ae709f2c460fb31e2923fbfb7606b64eef0460b8f33a0be54451fb655ce0b81db89eb7862f392450354f",
+    "Expected": "a568dc7228779a93d3ba0c5d9da78ec9a56a3e68be8338f98a27adb4650f3017",
+    "Name": "sha256_80_2"
+  },
+  {
+    "Input": "8497454c69164e12a93011571ffe40b264a6d9d2081f46b0d1e50c6e095e09db8a29fcc442d0c2446697e94dc47181dca7a314f9073c06aba6dc55aa79978d7df40ad821cceca4bbf2a710bf36d937ae",
+    "Expected": "a775628a69e2aad9788bf769abadb08be822d909476c7af45781a523f796c84a",
+    "Name": "sha256_80_3"
+  },
+  {
+    "Input": "aee9594f05ae07d3a0ac12e9dd26fcf9d5b468797b4af1978983faebe59a28f34956dacf5b7f65d25548bcedb518f45abc658147b055e7bed95c16b1fecbdd4bbceb3d073e74f3830d000080c8a92725",
+    "Expected": "02bc42eb73315a3ad4bcf0baebfd5f3adb677ef386051189aa587c614be46b93",
+    "Name": "sha256_80_4"
+  },
+  {
+    "Input": "dbc6afcdd409e5d50d7b655580f1144de77f3efe5d6268032eccab7deaaad997b13e159a24dd2fdaf3b0c6f9dbdb12a3be99c1907fb0a33430df2ef8ed0fd7cd807347519f114e78f99617f6b147ca83",
+    "Expected": "b74eeb27ded6b53f8a263df9a6d3de65f698c522550de9719a55f884727ed889",
+    "Name": "sha256_80_5"
+  },
+  {
+    "Input": "3bff7be962c9b1e1f32b5babe6067d7ab5acc94c97865c23bc352a514943f2c386f35fc264bdf005b3ef77055f0cce54830630695c8dabe9aded1b5365bf93770aab7e9ef4140a2bbde2f0a7b109724d",
+    "Expected": "71a9c46cde18167339314f4866dcf7aac15501cec62444a30d03c36a116fe635",
+    "Name": "sha256_80_6"
+  },
+  {
+    "Input": "eedd3f2669c0e95d63242c7df695cea0acfcc67855913f6b6daf2c775be599a3184ef5eceadfd77b3a4092696ec34d0551c88e434567638623740b7d5f9e36168810cf23fb020bbe75d387985c62e13a",
+    "Expected": "3e393c2a25c88c9633320e14a86c05a448a567375e04761239f5fbed44dada5a",
+    "Name": "sha256_80_7"
+  },
+  {
+    "Input": "d87ef161c7b40b8728c3b121c0b67310a80d9efab033e920061cee8f8d7ea6023cc05f08340642613628b39e7b7fd0af9d14785920ca7a2881a58f2fac2c8803bc0ccd9a0ffe1864a0fce9369d5b4674",
+    "Expected": "1f1b9b463902eab86af6bfdcde6498686c20a73b77a978f7877a0c76b3267d6e",
+    "Name": "sha256_80_8"
+  },
+  {
+    "Input": "45111c860f6f5725f99b225c53b9fe1a70150e7ce922bfe214900aaa2790d14578a87849d463cb52a9d3bfacb13e2665056191e9206a4de01bcf3db25bbcbae6c07041840216d60ff445cf53b273a460",
+    "Expected": "c2bc6e37a7b523d169fc232844c7e6798e3c7e071c42e4bef441d81e5bd859b9",
+    "Name": "sha256_80_9"
+  },
+  {
+    "Input": "16c8ecefefb53550f8bafc79966f863aa8bca3b3fefdc44ea4a573d2a39a80db873b6875d9132a1c7dcb3b533b16b18c29b031b82dc8c9f4ea9524793b54207d4e13a548d73297f2aa6241aff57abfd0cf3ce0b08ea1aafb",
+    "Expected": "2e04ce34901b41c42bc63572b61a66b55119cc759143b1dda7a396f5cf63614d",
+    "Name": "sha256_88_0"
+  },
+  {
+    "Input": "63d85a5faf691974a725aec54d4aa66b9a1eb6e272475d5d63d26ae92119c7b06d83d7e2922e06559b1740eae315c6623d3e543c9bf54258c7cd54b263bf6fe085d0577d991cf632f5d5d826eae2d1bbeddec178b81751fa",
+    "Expected": "e5399f7f784f62ce03937b36221b66fdbdf2c6ef7f37b98a2d6a66d5a0b28908",
+    "Name": "sha256_88_1"
+  },
+  {
+    "Input": "7a02c61a7a75342ee7f0745886c0ea2a73c21500aef8078d21d20b7216c2990eec9f31a0ccc141127f83f73ec57fbefe01515cd227a50fcee22b614cfc352c4181b0c87102055dc2901826875d5e85a794befd93fccca2b9",
+    "Expected": "e7972db526ad74ea0d2edadf3139417600a18123a840d2bbfaa053a45157d607",
+    "Name": "sha256_88_2"
+  },
+  {
+    "Input": "c0a1f70ef5610d831e667afd6190105242c25ae15515b009ebc8d427e8c791f14a43eec67ffc7d4febf66fce49c6beb12737fe05e3adc0a51ecfa9144ccf6253088dd1a7a483de077e6d555d37d10818f3a69a3387c0aac0",
+    "Expected": "3b146c2a7faf642f2f869aa107c15a76b9cdc587521c21b946e167d97ded029c",
+    "Name": "sha256_88_3"
+  },
+  {
+    "Input": "717b6236e395bd68390bf68e984cce180305523dc79dc4b905e65587fbd095ed57aa42403d2df5dd489db8f50c99e9b6948dace319c84497645527a65599fc5c737fbbdb1d600e6a4d941ef6ea8d904eac23d04ee3acc757",
+    "Expected": "7b187564b828cf15c2175b169eb1b3d29eb7b7de5b9766409818951f68716e36",
+    "Name": "sha256_88_4"
+  },
+  {
+    "Input": "aae6795532ce4c9f34534e506a4d843a26b052a040c79659b5e8637bae1594637a4a7256332b31b9e05a73dd851d891eb4a56cda796534ea8586d7ad8fc3e4fb42981a4415224c0d976ebe1c342e9bc1cd66d35168bae33d",
+    "Expected": "63d1dfe389cf8965cc99b2d8d3dbe7d523a4ca75858944834a44d0157d64f1cf",
+    "Name": "sha256_88_5"
+  },
+  {
+    "Input": "95a1c6d277df34caf22d1b0063e70b20fe2026c70a9085ab354c2872ec8d670d6e7db0fbd2a7327c85054b4c0de9727dc0b051058f8bb4ecb1dcc7f825781712171d489a2215e8d29a790c146efd73bd72ef0967b4a7daf5",
+    "Expected": "0d9c5abf4418d341dee32175e65994ec850cf1d67d03489ac6da7ad1f3df65bb",
+    "Name": "sha256_88_6"
+  },
+  {
+    "Input": "3cd06d8292d5d7a085cc8d88273d4aa822f44a447cc22f5a58c420bcfe757a459772825619669a72166e22c86927615ef8f0321b29f739baa66cb0619655bd3689d684ba4ffe71cf5b6e462d809f8bf1a62f276dcb27e42d",
+    "Expected": "1a4af82f8b260d64396b30218fbcdb10ef0006b1a2c1b0c96800e61c04df78bc",
+    "Name": "sha256_88_7"
+  },
+  {
+    "Input": "9aa0ce33fc4e149e87181aca70a4ccc64306408019db1fbc3d32dba6b2ed97055d816585fb45e0c7e0cdd5b8355d9502535b53ab5f1c596eb966f57867e021d0f3b099e17bf384479c959794b17d6a4b07425867bc7a2707",
+    "Expected": "d734f7908355472c32c28a142b5d49c42dc896130f8287e3ed1da084c358d3c2",
+    "Name": "sha256_88_8"
+  },
+  {
+    "Input": "b134342f1343ab379b774692f50d88ae29359720f359494d6e0512ecbc5a1b02ab19bc9bee4d3d9c721278e07b7a6e389c4d6443232a40357b458b1513587d5eedf6143f1ed2310b9eeede44d69bd7f0bfb8ec689e36c8ed",
+    "Expected": "e5a3973f486813ef22102fd8c425ae9c0db0f34398ec7739f748f12f4f64f24f",
+    "Name": "sha256_88_9"
+  },
+  {
+    "Input": "a79fd15e80b694122dddb01f836460b3eff99e61ea6309d6b395c94fb5a43dff3c6bfa69da4371f4ea3416f7b13e1ce5a50a055f0cfd1421a02ce3675b7f0e63bd012914a96253926fdaabec06944ffcdb4637a05e3e78a9bcf1b21b68b9dd9b",
+    "Expected": "2df0c0837ac131f746fc6fd035f294bfa92bc3f3d0baeabda3a82d245f90d55d",
+    "Name": "sha256_96_0"
+  },
+  {
+    "Input": "5635c681fe6124e97752976554b1f713f95a2ba3f3f4ca69571711b6d06dc218a300c7e1041d94df0e0201e1135fa6eafc98bd33b2dfbe4c59b546a52538c07d193565a2a82d9c189fbfe088b6bf9df4c191db7fff02d386fd49420b2c273b12",
+    "Expected": "7285e5d8a8e76046a72469e3da47c2326bd3278a9dc3fb304c11b88e66b0f9f9",
+    "Name": "sha256_96_1"
+  },
+  {
+    "Input": "33e9cdb10fc117afb17803b61a2bca7de1d190a325639eb23743f51f28294b3379e97116d927b757e33aeee2ff4d8688b7472511a52342ff8c27e86c5b76bbd6c48b98edd9c229037751d02e58f3d4234d9a3b0ad9ae4947ae14beebb274746f",
+    "Expected": "386af4ec64e9855d9cabdcb317ac1d539abe7678af29cc18e8499a648bc32abc",
+    "Name": "sha256_96_2"
+  },
+  {
+    "Input": "e3624bb9752c7eb3d0457ea8896563649c4fdd86b6c682c4334b889e463ab8e14228758d2cf8105f2ef11d83018157a3119a44874dc34d5f0bddb533f50df52c688ec28f7663a4be2cac642310977aa759fc503c769772a1b84a71a7518bc0d4",
+    "Expected": "4c288692d078300c9c488b3065f39f44670e70c7bc424c86312ab991e863fe13",
+    "Name": "sha256_96_3"
+  },
+  {
+    "Input": "a417c96f0cf4355a78513c77cdc676a7b09125802c8045756da867e0025a36f185fd325def522f04c7b6d6d9b501739aab1967506281a12eff6aad42b6b5d14046561328b7689b0a89014823537cf9eeaca6ea5c56a3e58d2abfc2ee455dfccb",
+    "Expected": "2cfd873a9a7e24e191cac9a4e908a90c24e6c5a97afbb7e21169fa880f00cd8a",
+    "Name": "sha256_96_4"
+  },
+  {
+    "Input": "505d2ac250a97562db71b599dd018ab0410ada2023182aefb49723dd24e1473dcf6c3fcd4b9e6b72853934b306a078b1f2fb17879db4a0a93d484abbc2b746cfb30db6f7844b1e5b7aebfcb240a2fe4879e5620f7acd89a6ea457bf367152a4e",
+    "Expected": "a33cc4c53092d16f913ec0a65bf646c5c0ed3cb7faec6c74d57edd2e317a8fbe",
+    "Name": "sha256_96_5"
+  },
+  {
+    "Input": "f6787b565e8d71be6fdb0c97c4659389c800a2047f668b366214adc716f402d53e0ab2c1e93467ac032bc60329cda6c1d9cc14904e624105d6cfed378783d5c040ed91f6ceb2ccf87e4106a16227a3cd7b2821b4f3a6e629001f78ba1aa7346e",
+    "Expected": "2e3c01942ec73a1cf0ac09c07b2ac54fd02cac35f82d2a9bab29bcf24b412267",
+    "Name": "sha256_96_6"
+  },
+  {
+    "Input": "5738ebd3e7cd26cf1c4bdcb5ca261b7ede80b8f45b22080d4d0cdb5aaa5c51fdae8ddfcdb4748981acb9b2037c017174a140f2457fb0148fe807fd194a9f7be50c3c5b3270e5e618c363d5e97c306dd021cd3d3b5362df1470d0565616e401ef",
+    "Expected": "1409417ff21f6522cd307ed255e7480d33cd3782f5212d8e4a7f971619115e1a",
+    "Name": "sha256_96_7"
+  },
+  {
+    "Input": "1268803aeb58a2d57fc797358fb456d5cf96afecb1ee0d2b90782aa0d652b8c0e0bd315031a90d14d8bd10e70e6d3ce5f4123f38e370024166fb9e2306b6cc25f9a8a4e5c65973b785c1e2637937de239bb0fde34b786dceea66f6bb12eb4169",
+    "Expected": "b4ffc968897f9f7e1813ca350e085ef1b6cd128d24af6b4dc63f92f2da72c5ac",
+    "Name": "sha256_96_8"
+  },
+  {
+    "Input": "c9f7366744743cc2df9bf5cae8e08aac0fc2d27c85076d5d9444203bb86e56c0070e7e2ae2751a1f71962726a31f77553c2da38f4fecda435b6e5459d5e833b4a2f96f2234d143b611579f4c176bc167a42c3e3aa6905c92237acd247e343848",
+    "Expected": "8e7926000783ad5b6ed32e702bc8bee74ad97bfaf7d2291a8f4e889a112f3498",
+    "Name": "sha256_96_9"
+  },
+  {
+    "Input": "d16aa883a20307f5436354bab32b4633e83178f33626af3edb14f82724b8e125013a24174530fd504da844b719064c9fc3d38ea9afa148102b65dc82a7c75f7d041390a2209b80f7c64d14965cc2f515d5fbdf37953f75c4a0203bf0d9fb674b33a0ae8344ae4aee",
+    "Expected": "bd4674d9760a5982be378a550e918a88082c6dae3aab5b54919541ae6f928b20",
+    "Name": "sha256_104_0"
+  },
+  {
+    "Input": "0dad5dc70c3f90b375bec94506004afe07ef55d4dec20fe67cf23dee8d95d94046678f3bdb4b0ea3d4e3a1a2f07f582e2a98ad6eb7562cbfc5bd3e128de774ff815c1afd7b345e20207569c7cfaa799ff513a8b07714846112adc8edb64db5bf0ed6724f3b54140e",
+    "Expected": "7766a6cf151ac2d49fdf677592bf40662d3faf20d7d7a397ad8df80b4f5d2512",
+    "Name": "sha256_104_1"
+  },
+  {
+    "Input": "d6c81ca65ef9d1b38c8bca6a62bfd3c61685c9869887eebaa2ed4684e77a35df22b51e155e2202db61ef9a68d7420c1cd1535bfcd68e8136808edf89967fbbf76b7f58d1a8ac95ebd4944b9e440f20b24c9d91a01a9527e63e500824d421e096b9b5b7bab068e260",
+    "Expected": "ca187959faac0a07ea4347e4558a21018f4382c00f6de4d9b50ef2959ecf539d",
+    "Name": "sha256_104_2"
+  },
+  {
+    "Input": "324d0d06a62274914c576996d90abde581afb58903cde4b9443eeb65e21b0d68c578e04c8f28f3d3ab35d6efb8f104efcd9a6da01f6990ea8b62b5b494ccf47c358a83b0abd532d93c558cc615b1c61c9a42b8b0ab4668ffcfc9e95bbe958e72e7a5500058e6b0bd",
+    "Expected": "f69a214b54a37db24426ec5ce5b5dd6ee2fdffa39024189486e931e9288f6e50",
+    "Name": "sha256_104_3"
+  },
+  {
+    "Input": "90e702a84bb427aef543dd2bf0e265112bb9e4ae50c5f23df0ebf1fcfce4bdc261301b4957a468e2817db5914ff102bc96460a2c5c15e78bd42884b1223fa71a16f4e764234019d79c104b4778693664ac662a3f32212f221b1aff3d75c955ea95cd2686d24a5bdd",
+    "Expected": "a5c3c28fa8d90796da55a600028eccc1301054422f455aeea351600f20aa11dd",
+    "Name": "sha256_104_4"
+  },
+  {
+    "Input": "a0bcb118a2c0eb5ccfe411ec452e1beb3adbda7e93ea367c464e621fe922392d7f2f92852c2f3b4ed34826433404eca7612e11b36035c424fb81d555d1e2df92cdb487a888fbedad976dce54b5c46a39893edeac21a12d6ea6dba8494af1882664a9ff7b932bd878",
+    "Expected": "b2d462f1a5c48fd27e4262227809df330283b1ef19baafef524855ef57a036ec",
+    "Name": "sha256_104_5"
+  },
+  {
+    "Input": "c5baa277da17c116ef28f390d10dce29bfeed84bd95fb955d1b1045c059ffd051324dc8966e504164e54f76f02eb1b866ebb8fee0c5c91df9436110a2f8f0b53eb1accc0c24fe8957d6ece167ce9b319e3b308b95f6d496e6d5b910b6aabef8d9f868471653e8254",
+    "Expected": "4b6c9f6b72d3d9b4067e59482986faea0a08b7f4a9c68494eddac7fb0c08cf1a",
+    "Name": "sha256_104_6"
+  },
+  {
+    "Input": "ab4d49d593180d25d3d2e870bdbbdc35b88c67aae7d0e3e782f8abd159b07a0182feee977060736ed4ea92e0e776be341c8444d4040ec121a2847256c5c9bc918adb28618548b048a582258ac580a0fd70e073dadb6f4d10ddf7dbb66bef844f8bf6b10ab173f971",
+    "Expected": "d8d599bf5b20a688bd4e91c03a489e63bded9eaadedfc7c792bed5649684858d",
+    "Name": "sha256_104_7"
+  },
+  {
+    "Input": "4c07f5188e4c6270a7e9e2f551683c4f9dc943ffc7ec279d15816a7f4910b8d382245632dbb7b590f1eefcbb9f9bd5a833c8242be3a91216b646c54a1225c84ea819a0438efd7ec0c1e3eea07ba201af6a832fecec818adbb781ad0c23e81dae591ab93e8379b3b1",
+    "Expected": "3845f331eb4335923b9f79584e22bbd17225d01d1d21ab85e4ebf4cc5047fc44",
+    "Name": "sha256_104_8"
+  },
+  {
+    "Input": "3bf673d1c6406e9040ebf3667cf9a64cfd1c2a020e04a0e0b15af019ea2de662bf187930caea19d0aa07a74b49fa7d1819a539e06e4c69ff7e9e808c1592d87b1ae1e45694dd5be3efdca06bb4a357d41564caa545ba4098064a6af51c1d499c4c28556ad1255af7",
+    "Expected": "bfd23eeb58c015d7d96482c8952bec775193de19dbb816e2c8263b2226563860",
+    "Name": "sha256_104_9"
+  },
+  {
+    "Input": "467bc750bf2db2842d626647bdb3346196e9420ab4e2881f629c8b6bf563e6afc621f5b26ee830eac6116fdd55380a41a3daea5a083af43711fcb09282b66882ae5b5b8e1714e9186f33ac0dfe48b7ca2dfc659e5a0a7cceb16f27a2b333a7d25e399263acc1924d487551d4dafe803f",
+    "Expected": "ac8825bbd712ccda3ce4c63dd6eb949e14b4b032884faaf657fe1844e7e3a350",
+    "Name": "sha256_112_0"
+  },
+  {
+    "Input": "bd682acd154f6e16a583ca4968d28471653375ef79df078b17b2cd9634258dc17bc82587f1336c32a162cac9295ac6617a2009c83171a99b8fd7ec0189d2a852562223d3fae1d303a01ee4642fb4cc70f21937ba7fe377260fe82262a8455a77383aa075e84355ecfdac429978cd903c",
+    "Expected": "2c148469d3ea0bcb9d40616d3726158f93244b05b6154411135eec06e8886386",
+    "Name": "sha256_112_1"
+  },
+  {
+    "Input": "28419548d101990ebb61308288877138af1d0fdab6185e1c3f9f621ddc169ba92584db0b40b6ace7ed563eee0090629f65d54f489a74d3ca13da46d64bb22f5d76a0fd6b377edb3a3dadaddac9e130fae910487c91f3839d5961f02a67f3b357206e406ba207dde969498e40d4a26e88",
+    "Expected": "89ee9b687cda0963d7f25b5de6038abbde276f816dbfd789a37d7b74683720b5",
+    "Name": "sha256_112_2"
+  },
+  {
+    "Input": "97ec37e02407d6e176df21d3c4bfa42ed3bda871e57b1620feca11fd071040f6396d32c2c9ef685120995d2244756bd45591618597306193422f3b5df4b075d2d678175bab1e68c1fb78ad45aa92203af08c11da5f4c0d5b658d4975a4f4c24b2087e21d775fbc2c20dda715e46c9c49",
+    "Expected": "10df08dd6d4ce056e56a43314a2e9f9c94a465bafa2a9295c01fc576b2dcd88d",
+    "Name": "sha256_112_3"
+  },
+  {
+    "Input": "70394e40e991c78ecc13a2a5d0b0f30fe78d473e1f1bbd8c37453439f107d3abd98ff9a91a1cf8cd6fe57e56de8ca165f44043002a94560d725da2ac44f30cc5f14f52dff5671c6689efebd803b1df7a6e54bf37a3be19b2ce980935c560d9b2d44e087f300b9b00052c2d79adb48b00",
+    "Expected": "255b7773b9f4a9242b0bb01c1735652a3debf3cc69e55cde62b8c6f94524fe90",
+    "Name": "sha256_112_4"
+  },
+  {
+    "Input": "8624c83d846ad2e53f3f8ff5ffd3fca8723e6cd431e89ca29a4d662e82004b60573d61d5aa9af990b21fef8cbd5198b4fc49cf6885a2bf342f3959c0208d3ab6b2b2a8a42887ca6dff5b5364d88962068496bee79cbe74de0e8a06209feb3832ea5121210c8bda5aa32c984efc5209bb",
+    "Expected": "69fceb20f1828d39aeb5985078cd629a01d78d6dc91170ac2104093c00a1183c",
+    "Name": "sha256_112_5"
+  },
+  {
+    "Input": "76ea8c908091801ec75bf291b7659d6088ecb5976f63a38d7f3d8c8ec441b705563c5e3d899870ab5d2ff84467fffefbc2d08e376ab21518f2f4129df0251b91d1ff52d053816165695cde6fc7c0a227951f4960d6614b098249eb9420077ea5ad11e38d1694f4df33719d1127338f44",
+    "Expected": "a4bc5a173f863e01b9951210f2825af621158a140c85a17c7d32262660737c0e",
+    "Name": "sha256_112_6"
+  },
+  {
+    "Input": "622c74d17e465baaefaeb550d5b99e6d389ff91d4f42e16dca5bde90150816087056c7d93d8453be369831dc0575df6438db488780d518a53d19b8f5d22d506abbaa00ab8eded7c8584793fd85db461684febdb8b364e8ceb15326a9e32f9c898aa982de1583c25307e9e2c8cf2469a0",
+    "Expected": "866ce1e40983b5096e31d0eef4655f4de191c3e40f52fd8f0cfa0627acfe08cc",
+    "Name": "sha256_112_7"
+  },
+  {
+    "Input": "b1076c6be2fbf12caa8584f34988221a335578111592f5b234f88b650c54e56b8e45e7b8bd0d9ca6020bec9ca769e8dda18ca15f0d931619363f5ee56bd7657b2298f228cae8d185c9d062910193e9c4363066784810fb72466298f56f96617d75fecf34f4d11c9e231aa0a8b63303d9",
+    "Expected": "ce845bb5ecfbe231310414b2de79a2f0618e419d338f9ee161b5c130627f7748",
+    "Name": "sha256_112_8"
+  },
+  {
+    "Input": "b54274927eb29fea0cdc464271c918826d5249b2180a52a5020480d1020c9795e7feb56d833b82588584f389a57e29a401eea966749fbe2faae17c3a166c4fd55849bffc842c21277be88dfae0040c54b072ff526731947cbec0cfe963f2d0dd9b7113747769d1a9c3868c3e9b289564",
+    "Expected": "a8c26e8a4e06fa062db0689c6090b0221725328f24bda8b1f4d3a49b2251d9ed",
+    "Name": "sha256_112_9"
+  },
+  {
+    "Input": "3b12e58be1485da99779bdf38b46a13eaeff769da1b62fde321d46c66f8ee7f2129446d805ab7f7bd586268de8f57c43911f76aff9aed72938957e906ae10934edfa9c2b0139a8bf99ac1bdb210462a052c9e56cfe957b924c9c0294e1c1f12474331c662c8e86288c97e6a8b8b5b20209a1b2857da85999",
+    "Expected": "8ad17f5c4596621a7a649e4a36bb277bf7191f95625ca4c3073b22a945b57252",
+    "Name": "sha256_120_0"
+  },
+  {
+    "Input": "2d169f05537c1792f13dbd829b77f3d6163d202bc529fc02decec569d223c724d162250ed1d074ed9f4080aaae3f44b77df05292be48ebd9a46fc7717d97e8e7e5423ce2a44811616db1e12b139811889ec83a8855e58563915ac9453b831c41becd3c1f412cdf5379e9cd5c80bc6df92ecfc5005356d2aa",
+    "Expected": "2808a4f85a9fc2f4de457438ce392388b833868a5c0c5ed8520596e147bc9a79",
+    "Name": "sha256_120_1"
+  },
+  {
+    "Input": "51e4679941c27a0d7fc0e8239f6ab01bd44053bdf5f5e0666e2a6e030e5c129b58fa60bc7cff4edde18301af2348faa69ed4f31d437decb7d4fe51142d179e6084684ae3cb179837b2e8a4ac74a5133c3ae4ad8c2b9c7c7b8e0a16f0fd298f51c29be0b271d4e22d39e9e06db9e50845515880f30c5bfac8",
+    "Expected": "b860514d320554e0c2c9473855de7d06d20c0ca60a2c63bd3958d5650606d75f",
+    "Name": "sha256_120_2"
+  },
+  {
+    "Input": "0bca39a2d8d61ea05a50ad515843954bb3b190278f0b6e7178aa7a4aecaf14ab148eab09ddce9808dc8c2e971a3a4b9909dcc5cc6a0de50286294ee15f441521e0f1d2c3ad3a76e91c3ce479c3b858f2990a51a6acefaafeb928f6a604025f9174d774bfb9980a1621c9ae0132a4886820115e71e280d333",
+    "Expected": "8af69f7258555beba8b1e315b5d742660ae67c6bddda32bb501301fd8d6ea575",
+    "Name": "sha256_120_3"
+  },
+  {
+    "Input": "78a04344f635c769fffe91e89fa7ea477a8ff31ed761cb4ef708ca290e840e3b4a5404b9645fd4acb97720d5e7b7419ae1067c01d5565d0f387516d9721f7f4e5253d5af8353db4a55500e20a95f3c96ffc1769359dfa10380ab7f511177ca256e339600327fc00da1f64fa1666f4bd7a23bf766a1e1c068",
+    "Expected": "fe3efc70350c577f04c4697d4b9c14db445e731cf1ba4e9e2bb2e5e14c1b87dc",
+    "Name": "sha256_120_4"
+  },
+  {
+    "Input": "e6e8e4b60391583ac197ade53caf0f8a43c53d1bae9f13e5520f896cb03b089b4fe2ea6ed3ee7d17f180aa338fe8a5e96e9764d0c7f097282c505d4fd8287a897e01517ddbd7d7ea9d26ae4f58fbca172e5265e2b62858b62e6afc885250acc84b9f9000771afa77bca33c1ca94eb8b6f2f556326d78d895",
+    "Expected": "dfdc621ea63fd917086cefde4927d1a9f0008c21ca5aa829b17196c4a88c877b",
+    "Name": "sha256_120_5"
+  },
+  {
+    "Input": "2908006c06ceb9188651c59d434988cb5b51a5a75772ba71875444c65ddf0f4f6e70adc2a68a2760490a2384a7d8e7b575e0601ce52b4e40e710a3dc34c90a57e8e8724c80f3527de5f0b2b98ecdf0b8d0471e63c0763a89da8a21a70dbf83992a4b32089ab0e452469738f9bb24c77d325b36e72e472190",
+    "Expected": "ec120365e60eff20f05e3dacfc111b3a13a936e6dd04ea4f474a534deb3e85e2",
+    "Name": "sha256_120_6"
+  },
+  {
+    "Input": "cb709ead3f7b38e9e14282bc687a00264b4e4678ff238d5205f6b6fcc10040d9b4393e93f76297a83eafdae38cfd453ae990d458dec1474bd734d27d7c0f6e684089c19437e3fde15307650d6cfc681508fc7b8dcb5291837582eba6588132f46ab8fba674a1f5afd566f7557215af3545c3ec4eed35104c",
+    "Expected": "06178b8e450fdbcf21e637b96cd96713a50250c5f9557fc068a2fd8837d16716",
+    "Name": "sha256_120_7"
+  },
+  {
+    "Input": "74333fa2c4a676ef84a6a8c7c15cda0a7d6a25511ba63f0b7ebd2189cfc4c551083ac92b144e30dd81d27e59dd86e22673e199441a47861b3174c3b41ad82586d4233c0dfe0bab24a691668bd86d2b23eac8e5cf13de6db37982390c8b6b0474795f479584960748b7ffed881285e2df00b5f1702cbe3604",
+    "Expected": "70047d5e6b0e1d1d9eb251764ed79b812dfb2ab1eaf1fce7d99a3bbc22a4933b",
+    "Name": "sha256_120_8"
+  },
+  {
+    "Input": "5ae9c1e3252ac02888c364d5d6c01264377e75881efccda12c134652c27da0a0272b0783551ae44db6bf592ff299b48c50c550367d470b5ba5e74db977821e9141afd421a934e520df8f43f65aa62b93d9bd0117ec83481e8dca9ff432bb483ad726bd20cf96b07ab6f07170a1449f0f1b50ddc6e1a02538",
+    "Expected": "eff8b3f3e252b3745c72dc7471058dddb576a202dc91b90433f677bc5b97e714",
+    "Name": "sha256_120_9"
+  },
+  {
+    "Input": "13132ec71bfd6132c42e101e4fa7270bb39b26bc09209281f1586b1eac994028146433a0738ab1b044e059f49a8af8d85546d0e34eaa0edf2b2a6ee466c0def8c6d35d997946ab33550d01a60334d2a83c0166df270c97b605d4521820891921de0399ce1ed861c0ebce1d4e811ea0a3d87e21a54ae34e6b5e1284cbb9497368",
+    "Expected": "82715949e782325eba5da196054d72fb7bff71d554b119bb8f9473197b0980e6",
+    "Name": "sha256_128_0"
+  },
+  {
+    "Input": "d12d0ac6e9d242da1d3dbf31128473c3085d8054eb1899983089065036c40a0fc2b034594fa53a0951e2116db1b063345fa42dc8c870e1146f1b00f626dbcfdfdc93657a68cb1d65c77f30936c908732931e2a64f5dfe7ef894b39fff2a033f1c1e6d9c5f8911014f0f540211af5184d96fdfd47c03bf2d7bbbb3bf1a330017b",
+    "Expected": "f50aabfe648219464d7a86ac8bf5122d138696f687d83d17637a754169720ead",
+    "Name": "sha256_128_1"
+  },
+  {
+    "Input": "1863b8d3946ed295f6f918b95e42eecb98585edba92bfedda9ae57a32ff4121a6df5a133d3332e1f79f41201f8cb2c8c8d4d1ab0f640c4de6bd6e34884a77aa263e06ec068cb513c0712576a4ede661d7948bcaacddc0418e03211ca4211aee18e7219a9d431c597fe9700d43da8b545072f5a27a9f1af99053ac0494087dca1",
+    "Expected": "b29d101cdebb0fa56fc530ac3c07be11166079dba67996747993099236ff3ded",
+    "Name": "sha256_128_2"
+  },
+  {
+    "Input": "6ba608579a37ccb1b42394f9415d37bc528f1eaeec0dbe7e0c086f26d584b4208efb8a7a5e48d5f4a011a4aa0dbab22ede62c903414d005d507ea3d77bd47a6cb894ed2421bfd87bf41f45b76bdc260d23c12645115fb9fb2d459c645108625f47f53e2c06664e1daffd7d9b114e12d4190d5d0fa2244d61a13da915c39b8d53",
+    "Expected": "51f100bf54e554acdb23f15cfde53b1316fc910d84b4c8c9e4ede1e30ec6bd72",
+    "Name": "sha256_128_3"
+  },
+  {
+    "Input": "6e615fb4732b3fbc604d27e024814bdfb2df5090781a71d5fb01e70f82e3268cfb109d9a0a7b62c7c452bdf0a2853c4bf65e5439fdc83aedec8c0bf73a16b55834508dc39815cbf8818a0c531c42f8a3a7aa5d0aa1199aaaf1d6f59df18f7cfc4b0a931b894fbe61115fcf52be51d44afdcb96c94117c75adffcd8729b0a699a",
+    "Expected": "ebb8d7fa2fb80ada2f92d60c5b6727c76aab63f35c7cedf6d89e13690b07239e",
+    "Name": "sha256_128_4"
+  },
+  {
+    "Input": "08f3dfe5ed8dc087cea74b32ce4ea4e061a6f9fa36f3d579155ecf163cb0dfd468ce22e379ddb8352d12eb597c179c7089c6388542909876c69ee377b14054e75cde1ba41d50b316a3e9cd7d637fd9381aaf4a42f62cf5ce7a4467dcf21ab62f61529338195b665f1b80c4b95b7c3a26a7229884be1f4be9d49e1274a9ec3f81",
+    "Expected": "7f057789ba92acdf344cb1f8df438ec5e2c9a74fd895b6d53a77a8213fa85e4c",
+    "Name": "sha256_128_5"
+  },
+  {
+    "Input": "336bf7c4fc2af075a8fef4951b12d0eba1520194172d52600b9e6152961e4a3944d740a72e6c8b5632314408022093618321c8c0a8cf2fcd9ebacbe43505a01c1bfbe59d8035042e9465a297f853378ba65cb83924c61f36b68b15b29fa68c8324872a78e340ccb077259aae65d6c448fe6bfb64daf4e2b6ecce2cc9525e35a7",
+    "Expected": "34c324568a052bd06e29fb80705f34db6d7b1ee460422aecc4c381e39cbf4357",
+    "Name": "sha256_128_6"
+  },
+  {
+    "Input": "d1752e182a16cbb951f43f160afff51b58811e7037b385912a40f17891ed48cc01a1d84826bf78f493417a06a800d58dba688800026638316fcf9ae534436fc03b2ee18333401b71c818c942468505f88bfc1f722330aed9867cabd300fc5007c5a3268a8ab5a12214b266aaa4eb562aa05dd19575a7f3ba2d549a25f1900cb8",
+    "Expected": "0aafa78cfa7820ae0bde3484db568bdaea3073a2ca6b4c417f81a8077c77d5e4",
+    "Name": "sha256_128_7"
+  },
+  {
+    "Input": "0de62fa79235c0809b220c7793bf5bab7b3b9c733ffc71f210007fe42b9cae92e62a7b00d2be967df04ef56121c95c8736efa95e1faa0196e1f4485da82b3c3c46a3fd2db4a537b66fa0c2ac34bf7e71cec559b154cc48baaac23003e75a33877a883bf845d1ed04e0664d814cf0b49cf8c3e8b8594ae5d2834c753851ed7803",
+    "Expected": "c95eb0a714baca0e45595dc55e8eb6a8259eb1a249c4cf443e6a73f4ca4a99de",
+    "Name": "sha256_128_8"
+  },
+  {
+    "Input": "c51971fdb0333e05c076bd9703136b539a97a1264d83f6d2a5e481ae7d0979a50f474e8f4051c4e91124c14895fe9e2516b315d805b79013caf830524fce88804b5070f57ff9ce6364abedb640f1d170190554078d0145130a3e28c8be8d8c379b3a5790750825ab75ab7422f833c671b95c6c58619189db66a6215ce907381c",
+    "Expected": "30cab63743d2e3dbc81d902891de5b38f45def962c478f3ff066c391cf2bcaa4",
+    "Name": "sha256_128_9"
+  },
+  {
+    "Input": "43198b266a861eb1b9145de01440863cc607b9422df4d107b2d0210fa2b7a9016607a48ba3fa5c033a1ef90260ada14ee50c95e5167bf801ddbd3acb77c3b388a0040cc5dcf7ee07a976241981a69a0fd68a16aa5fd836da8e6c9de0b270e93a030db724eadd2f487d31dd4354b5c0321a7983aead21759807bd893217c4d4051e262ab0ff016381",
+    "Expected": "297a203b1218af99e96ecc68c34b679c53d35a106ef9d66ff3df5e2715ddaf36",
+    "Name": "sha256_136_0"
+  },
+  {
+    "Input": "51f57dfef5622a5d98a5d1bc042724258c89e2342f78d13a88e71d0be8fd050f6dbb8b2fb3ae2a9e593bef7a5163255aabeb07282e8793e3f65da5e05895eb917d6ea686702373f9459bf33336897ffe02c51f4bb207172b26989184bb87a586b8752733f9ce9ea06422c6a898f0f402cbcf760a7a21c95c85fd85c59da55060cb36e4dcdc1e33c9",
+    "Expected": "e384389a92ea20bc840ea8980ec7d4df4c1bfefbdf60980ba4e03b917c93d713",
+    "Name": "sha256_136_1"
+  },
+  {
+    "Input": "aabbb0230c8e29c66caa863b3e96126a3d1dd9cc44b30a4623a4d14861688cb678bbb8b2f8ae3ba140f60e64c05514b1e15b00c6b76130ba473c9fa9e1c636ba155d2d7ebeb6294718c70417d70a091b5639d80f55e24e05e3d943340e324f6738a593a915a6bddb40f01bf12f73daef89b154dbf829efedf55d58c3ba0d27ff2e3381810f6ab515",
+    "Expected": "4d4fe3c668fcbfadacdcabae7cdccb6d043792e56d00a79759b7e4c975cdfd3d",
+    "Name": "sha256_136_2"
+  },
+  {
+    "Input": "b92a03145ebf8ed342fe1e5b3c0245e5cfaa1ee8dd8ccc4ea8878ce2272d152fd8b24032297ac0185e0ff79eb2750d1819d2ec2ffff4e634c2804d12dcc79e61ecadab280ae5e92b253bdc5565b6ebc219a75ab74dc5ffd304c94e67160389f87111899ac07a71b7c38366a6aab547168a2c97c4a2e90cf8fb15e66ae81727413a90a93cf42f77a3",
+    "Expected": "725d5a367c7d1d1ff8a7b49346fbed091368dc44dd8fb6670654baf7031ee4c3",
+    "Name": "sha256_136_3"
+  },
+  {
+    "Input": "acbf64f93f6f85805517ddf0358ecfea1fd58a3666b8dd9d3773a28590fb8a13d3f6c873446ea603cc9e0b9586a119d118ab53e5b82db7d53c34831cbbb38a00d9d3f97893eb4f14f21f68110f612a444815fbf2f76b8399ba6045c8a44270df575d0bf5d24c557732b2f6946aa7cec9e1ba80663f596ebb420b289a9a1a612605fb554531f53b8c",
+    "Expected": "785af55038e44b3001ce57a6dc7ce278bed3da8add18e5af2def464832a8adcb",
+    "Name": "sha256_136_4"
+  },
+  {
+    "Input": "ef8d93566df80878baa96f92bb54aec19445980b1a1f6c345442a1db17de1968658264a19ccda4f59e82c62477098982e9c47b07b72160d4d79ba2c485f0aa0e35212fd7fecf970258903bd2427c4c8b97c2c425ee119099d4eb27971e3b617f1f9eb27c06efb4652fd165cd56baaabb5a890053e3900e9144c7017258bb979cc9bb8acbd3a3e62e",
+    "Expected": "b73132e703fc77adb17238672bd4e10dea06f8fb3d8e3f9077b67da6a5f7b233",
+    "Name": "sha256_136_5"
+  },
+  {
+    "Input": "ac7aa152db46cd7398ef07edd031e4f6ba41c9af06312bb67473826485a43fb3c9e71e560d4f52b980923cce4e1c69802583e821328ae90a7db16b20525228e8d915bc8d46a642cb0a06dfb64168cf1cdca4b0713a4c1eaf85e0bfe193115586c1d33772213e152f8e48b031a21e471f506f22d323a740553d6107e651c192c1dc6e0a0161a82351",
+    "Expected": "928e3201eeaa7fc0a1faa64f505c4cc9dde6a8f980cf980f091e8e79a0ee1c79",
+    "Name": "sha256_136_6"
+  },
+  {
+    "Input": "f125f08c77e53fdb420c1189a1dd3dc55ab7efc86de7dfeca895aded698d56c69ea7b6730ac241607f1bc0e1ebff8f935330c35573f9fc3b900606da9cca9a36b425977af47c7ca62ddca44c0f318aacaf1bf36f79512d2aa5a50240e3e6fdbd90bc244a348ac20a4429b85fae16200da6eb8f62e95e027c24aa6ee2a145f6ef225139f29aaca29c",
+    "Expected": "7edfe95d37b7ab183ebb9e89499094c99055a38e7438c40fa12343e64aeb0539",
+    "Name": "sha256_136_7"
+  },
+  {
+    "Input": "a00a0a0b2d9d8c569f66046eb9d14be7fa984fbcab1f188e69a065c3a5671a7a54a852baf21df9f4ec8d711a48e6ffb36be8c09c8c60eaa090876236b2eae37a35d6fbe18624e6124d7f9a3096b54955748b3c6aa150dd49c02e5eaa18dba3b213814a3c6386b19f7b93c2c4e0eb1568e8bd3f0012a1ae1357b127c33808aa04b82587f9abad479f",
+    "Expected": "009680a1045ed9c02b9c9ece8fee2ac9edcbc535b10ceee98891d35525b51f87",
+    "Name": "sha256_136_8"
+  },
+  {
+    "Input": "1d1a1461cf35ab35277cc1f5c1bd4957c7814c968cdb25faaba0fb0440b2461ef64af6ec5f15db381714fce1da6e03ca962cfc94bba26d748d5c30754f9994a4d78979d1399118c883683b3fcad0653fc0d14f22e91dd22ec01749cac36dbbdba5662687fd1ea5391ef9d0bbd24e05bb5904a20fa6a1e11e6db3c522391a27b3c840b8ac682847bf",
+    "Expected": "1ac2cabc75438d21116f5bbded5422f23ac95cf7925aa8b8c16908dfee050e21",
+    "Name": "sha256_136_9"
+  },
+  {
+    "Input": "36ba16b0df886b3b7a31bb55cd5739d39680fbd6e6c7b1b14b000d3d18bf93242c74662ef108d711d85d8d442e415ffdbd8d85e0dc81bc49ae76f1674f1da060839c84acae5a9b01351833edb92a198d1ddff10527bb64de6ee2e3ab4959ebef9e7a6964b7482f9fae396b2b9b0cff9e50286db13aa4e25441413626c80acb4029853c986021bed95f4f164d7f919355",
+    "Expected": "91a89e984b006b294d8142129b12b94d55bf2d3345480c86b8637cdeecf0af1a",
+    "Name": "sha256_144_0"
+  },
+  {
+    "Input": "2943fa2957d267019309f4fe5b6725379d893dcc270ff7f35b3811ad1d8d12b1c38b4391fb2086da100871fea6082edb939dbe5647eed4bd654093cb890a53601551a3c2d0391fd8dedade892e8e2171e652d2a9b52f2288451c55f77fac788ab49a06b1a654c028cfd2287701937c38807d2abde76b65976e6deaa62906d27a8eb2fa94a5c97c28d95008dd1fe60137",
+    "Expected": "55c002d1ce02fafd81ad0c2a2e6b9810136f25f43e771257bdfc036948992c73",
+    "Name": "sha256_144_1"
+  },
+  {
+    "Input": "b34c2e763292d1b86993c02790b8c91f0e24861b4e65f22f02e08a0c3bd4d55ebb2d59746bee3dc89e8dec93d4e76863f72ae1def6c988f9242bff0e683b8d2a5c1aecfd6ebb9442131ec5b5b825d0f6c4ff736b0f76db8c01d4731172cef966b6908092e7e7bcc58df0e04afd2dc2e2331451748146f0564ab0d91b09db87e8a6ba8b14f8329bc041911616195f9fc0",
+    "Expected": "b77f36d6cc0e1f5c444c145f5e14ceef3eea7e79761515dcab30d80238df0287",
+    "Name": "sha256_144_2"
+  },
+  {
+    "Input": "269388891d7c9d90d66ba3320c9dfe08962e22c5bbdf24be72eef0977d171a6b16d298bf591bd927aee24a37c5ba508c3bc121f5150fcd1a70c1f27a79da7d7334e5ae8893e669faef417c164bff4f8b532c37743801dfc1d5535835924719c156be810c3fa86e35bc935fc2b27971c9c41d03c8ab7b6c8869db90b6e0986ef49456532496c009cf8d0172ff1b2f5b7f",
+    "Expected": "4f47a6d8c8bad4ee449468802a567f931dfbdd3a98a76f15699b0d7c4369b27d",
+    "Name": "sha256_144_3"
+  },
+  {
+    "Input": "923102c154548e40a14b9f2fbe9a1a89aea4445926775a6baffb4dbeb249dfe3b3e0c29f2a579927f540d8f6451553ef64b71c67aa9cd18aedba3abe5269b4c99740914b83b1a34d088725266784b14c9ee0e58d08779add74b68dd75e82df172b719cb5a772b0bbb34d3401b9f212eaf9d351bc9eab4c847137b627048e4c5aaf50b0687c1641899ab5da1fcb24d821",
+    "Expected": "3a80598b46a069adf3eee84708d1594517754a161bcc34081a457ccee245fee4",
+    "Name": "sha256_144_4"
+  },
+  {
+    "Input": "773d07cb9d20744a2c3ac88082a8d6606acdc892666753793a2b8bb81116cc6d5f25bbb9590d315bfe2f02ba31da73b75d8082d731040a0491a6dcaf09435786f6bb1445e9146b117bd0c95b009fba670a5391874dd314cefc884bdb0a4eba681449be655570580d6a15d38a24d0a330cdc9c2a7b8dfd669adefbc7b0e32b055d4158de4e23d793ba77c24a70f0ad073",
+    "Expected": "0d4f4dd6ab5d60c8f50a21e766f5dd59ee9fdad831529cf646609d6a0af46bc9",
+    "Name": "sha256_144_5"
+  },
+  {
+    "Input": "14927fff34361b0d74b25e8922512d7a4183c179dbb0bfad0a7a0ed14885bac1b5cd14b4848a7de42b620146663f8453c629ef41d5a2ce49fd81930406f19e760a47074e159ce372dd67e7ea46ad706b35883b1ff3bc56718be45ea05b77aa4e9b24138deea06649f56f4b1ec8d34603c718651715ab786b4855092ed21be41b499b7824d0bcf68ad31b31ee4cb730d5",
+    "Expected": "f7f24d0862c84ca333a45ddbd407acc94d2651626347d3333a513d61592d4351",
+    "Name": "sha256_144_6"
+  },
+  {
+    "Input": "70dc723532f65d0a299bd46c28cb0e3c85013c9f3698357a8a49f0b27783edf8c685a2872c4980518fe60c61e2276ef53c007166f7eceb355b4cd533f42c00b7c8aa9e5958797833f85c56aacaa2871c7883e3b0859ea140f5bb0858ccd3b879c067ecd54e9ef59996493f846ecca63bbd7ec28da586f0b8d41bfdc6d97a35cb94c29c552ca365696f366847e96feb27",
+    "Expected": "41a6b87445cbf81fc1bed057d773f32d16c102e62d0717b5aea26df7bf752524",
+    "Name": "sha256_144_7"
+  },
+  {
+    "Input": "e281d094972ce8d0aba335d6a30addaa8b5112baca5e0f2bfb885c5041189612918d203a117d886bcb3b27df7e64d17d5022a343c0bfeb6b1528f48d415ff07bcd431b2191ed3817e3dba03b818153c22db7ad39ec8129e9e9206bd46cec6a8ad3362ade1beaa97befe148f6c67a9c2bc84d8fa4709242900e5eb421b45a36e957ab0937d46e5cb39f129b30c20d236b",
+    "Expected": "72ac710de86843acd8e3b027fd2d20c89a34c212a3719fc8ac86975bcf397758",
+    "Name": "sha256_144_8"
+  },
+  {
+    "Input": "e2400a11d9a67041824b97a96f0ea9da8848e7990373655d76e8bd4eb84df5dca6fdf57f30647e0931c321a800c3cfdeb20d070ea6b7a2f448da3c52ccc44bf2aa2d17c409ade92566ddb3913806723d41067540a36a9c283bdacb273c5b258a37038a62b7b488a9bfb9ebd025e4b770bfc2164246ebd7ae62997c23e4c725ece5e3d21862b64e09a0893ece646de60c",
+    "Expected": "6e4c6b79b4288f6438551cb7f89118e97aa73af3c4e4cb493c61e5accf78ad52",
+    "Name": "sha256_144_9"
+  },
+  {
+    "Input": "d66aa483662125ffabc46cc52f1cdefa782b8c5a5e1f748ce7db9e2f5f85ab2579bd471e00dfe532587b7deb159a859249510ab1b7850badf58cacad67fe47135f6524f0d160f3013e8ff1c881e469e4ce6bb4370170dbadfb9217e9b42ef1423fd78fd697eea2a0323077f5a624383e713aa69664a8c721cefa7d6dd3fe9f92432b4d350621d5297805fcabb21ff8c61d23b39a5cfcee1a",
+    "Expected": "f6de23708fe737ed13e5b85e6eb4bfdebadbaf85baf05b808add60c0c09c342f",
+    "Name": "sha256_152_0"
+  },
+  {
+    "Input": "bced7251af6d71579707d9544c1db839ca0861ff9c1ea123c040d8bf0a787346560fa3b100b2dd9adb3f7ee716b8103abdd9609363345ae4d44fccf29389a34dab1c9bd8f7d257ed6692757d4a63cb2c3c5cb52c37f3267f17b811aeac4fb7d91abc655f8a4392176f9060346073c957ef903e25d10935a05016e6905f25a88ccd65c05d2594b355555c47f57f1d0838bef9b866f05b63af",
+    "Expected": "725a7e02cfac04a1f564bfe355f9c70b158ca8fa1eae9e3fda17e40fce21ac42",
+    "Name": "sha256_152_1"
+  },
+  {
+    "Input": "bd1f096026159218836a46b9801a4f0c43189324d20220aca777b826eaf25752e3a9baee74102042d852c0a76824ed4a676923718774c233b5b631967f0edcb5f221dedfc21098ff9a9507e493d0fdb1efa6029fcdab23a016515078c76f76271880c9adaf2b091059102bea8c52b77e02d49f9f0dc092c65ea9897471b66eb0ba5b30d1397bf28100f108b84e05107ddd6cae2e82f1973c",
+    "Expected": "2c9a49b4331dc504b339ac4ccf3998132c5d4489c351df097b851d654a2f0a2c",
+    "Name": "sha256_152_2"
+  },
+  {
+    "Input": "e187e8c3a7d02f3e3b9bba632f6d22e045297267e46798276f434c905c0ff463663a3a9562c8797119aadc83d1db9140af303c0492d2b9bb9e2b53ddb62cd2132bdf8ef62aaed683156a9dc7cc59a845d5a15fc5aae0cef304f12fdf14b54ed8c1f627e0df91686487eb6fc40b00246910626ab66bfbac96ea09242d1d70496466e4d681942050702d1c367d0e42d052e669136470b1b695",
+    "Expected": "93fa36686429102a5674252daf06ff2e5ed0e11123063d45e66a6a4e36f7408e",
+    "Name": "sha256_152_3"
+  },
+  {
+    "Input": "9f00ac58b6f9bc881eed1f77bcef02573bb5926f36808c0024ea7388998b4cc8c6c48d32917f6456b39d514143c6ededcc841ab189fdf7c4a15c86090c5cda8a7f9583efb326e394da03bbaf1d10d9f7f44b0204792359895b448bfe6ffaedc14d54a6d72be7a49718c0a933807a399d5651d878d97cf5c8dfcc21b5814d9ae345e27259064e023aad3afe81569939b0de25977e7426cd56",
+    "Expected": "99fa4bf48f9fa1f71dec6382ab75888978ff44742d6ca8adff0c11300357f1e2",
+    "Name": "sha256_152_4"
+  },
+  {
+    "Input": "52559626ff8b195ab7ec679de987a6a22a6a0e366759dea09f1b7e02f64d7194683a6bd143542c835a057c717ee87c6f83274ce765f923062e7ae497b44f531fe203a599622954804c06d5348dc17eb1537e750006584b2105dd30bd871105fa726f29513986d92a92ae3a111b0c61c3fab929d9a804273fe073adfb5ab96730c53015a4ab6210a35a37b2331ff5123e00798c33e040a913",
+    "Expected": "9153f2e917fed1bbacf2270f33de8b372110fd33ccc58d5865ecbbe1e2c9b8e4",
+    "Name": "sha256_152_5"
+  },
+  {
+    "Input": "28ad03b11a0c101861320448c1d5f3113a5035bd5aebdd25ba42234c22cbf1c3e6e752d40d411f1ee6e67f48109c9a059226b446601047a2189ab815a3fe13c405d074231b002ab97c2593682b282e33b3225fb6bbc69c5ff1b0d5ae70baf8ece657fda33cf4ed1aa89dbc19d58fbe3043acb5795dfb8c0cb97620f16f8f24353cea27e156b31a8a12897d78852e3369955f9bb733ca44e8",
+    "Expected": "2884f7bb0144cbed9c0e682cb75737df767ab4293b9aedff68b093466cc306b6",
+    "Name": "sha256_152_6"
+  },
+  {
+    "Input": "30fbe57c2fb5528cc73458e18d6f832f362dec7c49140e6523ead045131a1b719b0c836c1ef13a79e88d79bb16d31b121ae28866d45d94c8e39ff5bf6868ba7337cc03525e41133838cb0a2b191f538b30187dc730a8c665bbfce8186883500baaa6c3242a0d1474372a462bf4a782a438b34d9de680e4497f0ce953f1bce5e2e607c112e8564f7f8a27de64d41d13ab67c1f7b1a7390ab4",
+    "Expected": "983c24aa30a252070cb7aa4be279eb2c131fcdc106702368db45eaec6ac64be3",
+    "Name": "sha256_152_7"
+  },
+  {
+    "Input": "dbba7d219dfeb31255f9401d5b3c62f8eeea0534e5bdcfb9d8715fa30c01364a3ec07f51617f9b95bb0d12cd744bd63780030798960729d63db70b8bc3c0030e80d9b8ae766e3330128557e6c34442f652f75e9e317ab5358016906fed23108bbab19de22a3b677c3006ac93e350a9990d32b6969af54dd345f42320ea96def3c6f4dfd4e22a82686b7a3c57a0df5250a868007b1088ac02",
+    "Expected": "801d7f0a71345bc3545c9266be5ab542db23adfe18180e049f11ced90b983b49",
+    "Name": "sha256_152_8"
+  },
+  {
+    "Input": "0c45f7b6ad239e703e40a30832a5296ede52fa626796f8e3969848f1b8b36bd28967b762168edb451322e2f0c4b99b7f9112c9a66093fb3f36dce8deb60b1f7c3ec3ac9298222f71e749bee9ddad786d7f26399922ec0a91957ee08a513c5e22bbec04722575a9b4f3a1343db0ae5beef4e66fbbe1ac9044b9a633dca1bd2eeff6beb22bc5e884ea429dc3ab2efe9a31e5b3618f0ca06e42",
+    "Expected": "65257f68dfb5f99fba0b52d1721cb48db61fceb079b54c357a8bf517a29f5831",
+    "Name": "sha256_152_9"
+  },
+  {
+    "Input": "8e0cf0f590f77d13819001916d2c58a654d0b9d3c47c842f2d649cb2570dc0d5cb5ce6c84f7b88c4ffd26495b1df1b407dd3e1ba6d95343d1e4b748e36eb0c1071a8c2a479dec43d644ec4113142e666bcefd6d729d4faccbc147effa836ddab608716cbb75957d1d56c83dedb69a99ca9d0fbe380b70a8890872a4d5fd81a9a2d2d59a7f138327a20263d6338d2a92fa5a2f741daefe9aa81d06f20a6fe3641",
+    "Expected": "f19f61cca9f34b7121b843fd67e674085580d738885e5a76081817c2c950b10e",
+    "Name": "sha256_160_0"
+  },
+  {
+    "Input": "af9e28bdef215a58bd19ef060814daf05a31fe09d33c22809bff7efe08ce24de7740a826d524fdb7969776bede5ada468a0115229152907cb2b050760c18c8e28e4c5b68ce9fa196887887654c042dc71b1fa0758ea165efd2c778b1d5bad81ed226f56bf3935ea95d976fde5790ba0584e5bbc78b37279aed8e50389899b9e9eed636f12c3c0e5266f795ee75c6c5cb45f8038cb55acfafeda6a0ee2223b30b",
+    "Expected": "6605ccbcb8f6097fae4b9d4d2c22daacdf0953a29765dfdcb62a5c1cb8ae05f0",
+    "Name": "sha256_160_1"
+  },
+  {
+    "Input": "c133e1989ac82e4d1c9852a6c7156a34b05784a58231d59e3cc875ac5834d5c825c36b4f6bb205787fa1337a952d251b3fb7460af6ca855f20a05ab83b7b218a0fdae1b53f6442c4378774a981c90d282d5f8793feb2334470c873491e41740fea09a3a682fbde7f418c39a8e954e805e7e1babbf91f30335ac60f574e9f071070f1de7cc5e6a2cf7dd4b6e60ada67ca47e7b9417bb5f599048fb0c9b2abf33d",
+    "Expected": "e25877b9570cbce673579b3cd05d11783e214295dd91ccd70aeedf36a76f57db",
+    "Name": "sha256_160_2"
+  },
+  {
+    "Input": "94f0feb3fdd59487a4a211ca6f2e1f6ae809212eec0a3b0f2d8d78481bbe87dbca82cffdf59b742a736ae9a6d36f7840c46c20c126ec054f47ad52a22948d7219b4653e30be25783b35f58b411df552ffe234b5686d4306ab4bbe31c6e42cf9dfad69492cab4ec7eb89ed37f1e7fe898ff49ffac4ef2aeb75d9c6b544109a08ffb1946d91fbcba1901423b1166ab5e9e97f03e772be0a8bb15964870e106261b",
+    "Expected": "1f4cb16cc79286d0bcd1087371554058044ec20c2a5b668eb0241c6ccc88ee96",
+    "Name": "sha256_160_3"
+  },
+  {
+    "Input": "5af71c9baaf54967683f8553f72abf789da465041ee5a92c9ce1ad562c91c4d70586acfedb0d4e9defbed6a4a8166857ee2e6ecd4dc2a32070219331bcac5926c7effc9a7fe773a420ca430c58bb94e7baf26b9a97b618a15e7a18b31e5914f1a49b2f34b83fe75070755d20cc04d273a943683b83a11b5245a82699c92b317a2d5a3d0370f4a58c21016d208609f1d3e7cdf43abdb85199bfc67dd12f589b8a",
+    "Expected": "3898c0020966812c70a37d84652e41020a133897b7fdeff7d86ddd53d347bbd9",
+    "Name": "sha256_160_4"
+  },
+  {
+    "Input": "6e279c1650e11c0292976b3d30ea616da517319ad273c27fbfac741e2bf5267c3549b86ed3fb880269be22b9cb8be6f24385bb5e24bba81bce9fd5b72ce2ab71c7e0b8f30f1497ad9cc5a7b6e6eb3398ff9eb9ac0bd09bb9816998318fd8f336c8f6dd56906fa13144dc87c31b53186b0683cad220ab2de89d2fb515bb269cbc9d50c83a4f8839bff2914c03dec6b85e2c398c2642b68455017e2032adc036aa",
+    "Expected": "ad69809c7828b0c034c6b28294a4101e5c3ef204292bb0af49d3958efb520ace",
+    "Name": "sha256_160_5"
+  },
+  {
+    "Input": "9ec934eddc44729d05f193ac927fbcb022288ffb2bc7d4f46d1bfcc7efacef946848a31608381c4495641c63cd347d8ae2cd91864079e823648950a39f1ae8c0bd211ec887635ca841c4608fd00bdc0f5fd0f6365dcdfd7d6f4c36f4b25b5b1bae04af9ba3a5ab08edc5b84e4381ff8f666e966cea58453982655ab1731fdcc210bce61d4e35770e7737636c0f9a664eefa948662d3d22d1f1708fa48d3043de",
+    "Expected": "d344b9b3b98ebed1ac0ba533d28de327adb12ec7b93939ecc3895bb26fcdb036",
+    "Name": "sha256_160_6"
+  },
+  {
+    "Input": "7bfd67fdaf7c6c3d0b8bbbe28908bb2560a5f5e7353422b9c913ff87ffbcfd7a65c86930c1d142985bf85ce70bbad170947e850e5c6ac7803fc45980dd37a57d2397f158eb83dfe393dbe9ad2c0aa6f9b4d23a2d23cce532afbc33d1cf3b0d1808e559e394a9c1ff07a45bb3e022f9c212eea4ee5b77db1c5b93ce72c0512b7989f436b07b2c9077993dc27130c744524de3d15578eed4a36e219ac36a0393b7",
+    "Expected": "562dc8a78d1b1392dba747edc2d72bbcfb5ea26937bd5455cae30cffd25812a3",
+    "Name": "sha256_160_7"
+  },
+  {
+    "Input": "5e55826db8d12169a31ca27beec80554954f522b56f7994c62bdb527c2438d5d01811ae493f9ba67ab066eed97dbcada465be8eae9512e5a595fe8c75032724b1362e8e39ec661cb3c5af64e0001cc94701194344a7404f1ecf7df0d5633eff98aa2646d482d10bfd1cd824db43277cd62a94f85eeae0bbb1b10bce02a7c2a9474d3d66cde7c4c8a4499708a0c6f7c4da458eb970b6ca87e23601c702365b6de",
+    "Expected": "52c58991c971f3b588ced99f71752ca215739a75ddac607c40da22dc1a1f718b",
+    "Name": "sha256_160_8"
+  },
+  {
+    "Input": "292855137cd6a02ef3b62ebd0843dcd05a2d726a5e054942caba188a826ceeb8389e0d43f2006449fe2de506dcdba4cd0e6077e2228f7d8b6ec9d8a4129c494fe5f26716946b0471634ff51303e85f1037c0863958548c6b1d80bbd2b9754b3d5f8dc332cb31e43bc2e551356cb8d1533c6e567d34622667e7e4e3ddef352f03389cc6cd7670a599797ba35bafbd5921e0c287d8463f136acef92b2ae18d73c6",
+    "Expected": "50bb8b7812cf7874e165aa1906a8971646070a400cc0d90541fe9e057fabbdf3",
+    "Name": "sha256_160_9"
+  },
+  {
+    "Input": "0dc7052044251fd360538fa6d5dec9fcee53faf2f07de5d8df212d04f968a0b6e038e59631dd1c65942b5208c76d00bdbf609d0288c0eb81aa557c18376daca6c579dd4f361fed9084d9c66a3ec4c6af5293710ba5299df3abc4cbaf5802b536dfecd9b1402b13ab154c0c5ace2235c48391f4bab6e48f88567ddbb0d11a95dd69f0f3c3f516ae34fbecf45f4636c22acffbee765952b332c0f3d8cadb9c93f1a531a2f072942b58",
+    "Expected": "38e545449fa5546d980caafb0e8a09180d7086863dda3d7bef45e9833dc8ce8a",
+    "Name": "sha256_168_0"
+  },
+  {
+    "Input": "442a605577117838c420b6d984b73add6d945c8998df577176618f1954730111e572937cf0c9f7b3298a11d18cd890cb419f732c766bc621a5eddb7c0a0ec231e416fb81764074937821613020cbf211ccb3e748563da179fbb9f2400ed1dec7ea63d2b26bb3e9c2acf70117e3026626f6f88a0787617788b25bd3905122b4863937a9d6320fe1e5f7d6e5eff0c764c83a31eb576a3c9ebaa0170d7b7604b8951a95d49b6697e2d0",
+    "Expected": "a9b503ba164bc7fb210dcdab805c0b498b7f7892dd98988d0ded02d7d92207b7",
+    "Name": "sha256_168_1"
+  },
+  {
+    "Input": "cd2a41c3671d8f96e936cca911dd516d34858ca787d0064930dcb5814220ef620eac89a150d274def2c10ff1a102f9ea2c2afc06f19e627e9ec0edf1083823d30ac569346040965e1c92e0c15011c90bb6c4f271a81f8b9d770e3e58b1d73e1b14770efc6241bd3994bd58915173367c141d0ff346e46a20c2498a74f910e9bb2d5d8530afc7ba47c3525861c9e8c59289a3b3888f8aa519320dc8ba0239f6079e7d4c12aa7c8827",
+    "Expected": "eb738d9092b240e1d67bf15dcc7b0a4d823928449526639caa609c70b5ee5fed",
+    "Name": "sha256_168_2"
+  },
+  {
+    "Input": "f444d3dd65485b6b1d688a1aca2a837e0a353039294a9988a7111ac134a6a8a68e4f881e7486025c7a33844df8a5feae967b56f28e722fba52995cd60437d68de3671dccecc7670d1b59c33ff02791031e7a9424c781ff17a209d132af06f5b825df363fbd902cd4830f0a6e93bcda7e9a8b9cf7ac448547c82dcd79463858d2ccb98bc1752546ac58fef5bc887b7caf72f2a533fe1455ae523841bd49b4adf16cfe87edc6f573eb",
+    "Expected": "82678e32dce1730c8aa86d2182827ec887212b0048cb209f7666164c807e0e71",
+    "Name": "sha256_168_3"
+  },
+  {
+    "Input": "52c3445f0f3bd7c387c97111aad3d86510d2ff1cc39d8a66645d28f96884ce5a73b243b83d44158a66eb6d31e7c4ae1f4b3ddbba81b2cf9a654ca7c4ea2147ad6c6015ce9598a929a13d93d7c81e4f43cd003c26af5934435d1a040d6bfc86361ea87af09f6e62111c48993c408efd3db9ebe218ac68f61a461ad9ec1306873d399d3732db202d9bd21202bfbf2cb0ba85b0e0343a6539c6ad6b0269e667ec52a691b9635e38a46e",
+    "Expected": "5c634084921638a0fbda433f7b4e47670c48da6c9dae9babe24119f2c7beae79",
+    "Name": "sha256_168_4"
+  },
+  {
+    "Input": "2469811405ef6325ae7ef88a67c1d1c5b05806da329f27e0968063a924b6f2e212b1d90a7461dbd6092c0963daf53d146e87abd3ae8c76de0d9a35f474325d0f065442805cab3beae4a186b252ebae54a567dec6695588f13d438676c4c2515584648760e05617d31478cc97cbcf504c8121a817c2d5617ec20e998acda67d406a238f16bc2b3066a6d69d2436577b8900a180e6a71b0a01c6d5e8cb6ae97998c4d3127b2228942a",
+    "Expected": "a1c6a73a1bdb610d59d8be9a2d6bb6a81824b26be31342f17bf8859b40faf091",
+    "Name": "sha256_168_5"
+  },
+  {
+    "Input": "538e5fa76b113af05b705b1dea9e05966fb773cde356e2edac3afd2bf703b59161162dc1e915873ecf606dfc0e6efec5cef6c96ce38ee76a68f01bfddb7fa3cbe79fffe88d8439be92bb839c7e520e4cbffc1a58dd06752a2a77abab835d089599b4781ae51ab998ff3c5b68329068bf3a276b60e0775530d1095881c8f04a7a4c5a2143bfcf50d8e5430799bd2ce6b457f35cfd74f62fa39f919400f4d692855a4b4e9f91920e43",
+    "Expected": "bb7eb3cd3235f593ea642380b9ec1e79724af8de210abf89e9a55805df873865",
+    "Name": "sha256_168_6"
+  },
+  {
+    "Input": "06ebb2e772a484f423357d1987b6d02e80824a5e0f1a3c8fe6f2187f0c17d7d494d183de294400b12d1f3709700634653374fba5a94d69163ef616a72a63d462afd9f01c9ddba840b0721f50aa8613918608b40b5e4ec60da437e7a604d3ccabc30e970031041c3f614ed9a08dfd406df00719d5eeacfb0a96413b608974fd0aa1d4c6176b968dc01d48007ae822b89be28efaba18696816688b506e284ba534c05e465a39dc330f",
+    "Expected": "2804ebbc9d1876e340d9f618fac427a21fbff1552d55e45ca34358a2e9f855e8",
+    "Name": "sha256_168_7"
+  },
+  {
+    "Input": "7c1dd2e5e5f630fb1d07e8934dd3ab029917e7775e401c0bcf7e1fd83aef7284f27b66cb70cc9122eb275b01c5134312944302eae8e05c46b7f3e09e9506379464e9d16cb61f2bcdef30cf544d97e078fccb999b96a1da0eeaa0bf232f01995f0be70a0acd2107d1f773610f4d9b6698f50509c5d05de82d516d1229cd27028535bca9082d66c06761f702dd439faa4957caa70ce0343268787f41a2f4bc0cbf302ccb8d5d9ca774",
+    "Expected": "5421f7ad57555b62a07cf3db29d11a6ba8fc4015948b08bbe03f0eeff5c95980",
+    "Name": "sha256_168_8"
+  },
+  {
+    "Input": "0e97b4dd507b85073c7dfbd36a56f69bfdae83e20616f0ce7980eac6c8db86ef83748d10b210835e53baf8cc9f607915df272b6e28ac6b2854a148217a40ebff8795c9c85a6ab6bdb93e90d9615ddd7cd09a3cf837dbd6f6a256ebae4b204b3888d7bd244bbff26431ab5890098870f13800bb3be3e842cab9d3169f923053ea20570a0912a3d2d42a2970fdb641d48e1bb43cd59d57b7945805f2e8013007c4f6d8abf441728eda",
+    "Expected": "7e01e2db95ed88a3280fd6500a224f6c90b067a43b7db0b390d9969dc1c1b747",
+    "Name": "sha256_168_9"
+  },
+  {
+    "Input": "8d742ea2f1df545f85d092f50ca8275c19357c8d10d82e74e8385b17c7955d76e8b2e51afc0709186de05bd6cca4324c502d777b25f3112ba2264022e2f28dfb6e5d5239ba097e9d815928be44b6a62a5327b48106ddeaec4b75f21087f5f90f94c5572f952fef954e483416c2d2a1d6e7d64b471cca34ab0c91f61ff26719c7186dfcdef13895d37ead407873736a744b44c34932afeb336cdfbd4e23cc6b69593cd93a0f9625545865c3f437a5fec3",
+    "Expected": "58d318a8c68791612d9c2bd03968386117edff3a0833183985800899c2fdfd24",
+    "Name": "sha256_176_0"
+  },
+  {
+    "Input": "e5723630020fdb48e44adda735943c91ad7d1e12f3c32d823833eacfcc8b02ba347a105bfe18ceb7cc8e2329cf3cd187db37c85f34dd0698167566ad31135fa36e9e37bd811b76133c12268d325ebbd6656e7ed718cd777458867dc98b1b3bc50f4812e13846c72b5e4aad0e43ef5713168f7660a6f3917170b80a1565608bb97d46516db284a3938e672ad3c6bd40313d77c5d643ffcc59e3f55ad983cdc0ed9933411035e0492ef2fdb220b280f5cb",
+    "Expected": "d409d1077d92456281ceb69c421963ee14b20a95ac589723ec38350df47cf4b4",
+    "Name": "sha256_176_1"
+  },
+  {
+    "Input": "aebf31d295a518b36983f20455636563586cf63c5e52b44aaa79cdda6dd6fa92c6fce11d867b2ff5a04c9e44e0b39300f878861265c2fb9c1666b62a13dc27b7b7334796f023edd4ad69f24d44e3bcc4efaac96bc5f686d6b952e7082236622b737fda0dd3900bec71654bdebc8ba2e4bc515d3a2cd3608afc4f850fdbda8aff27a48a2f49ebffa365aa208678e4d52f39d6045573dafd09ab2a0d8ab6e97b0ade43bd79d820749ecf19cf7d99792ca8",
+    "Expected": "cfea5cdf944fdb50b799968cb21918250c5d312bf6d43dae7b4f7f901ec8b884",
+    "Name": "sha256_176_2"
+  },
+  {
+    "Input": "f17c1c3baae951048e8955018cd87ecac6ce5d129e69ca99d09a7e346b9ef8084c4a2ff4ce4b633ec8fe0bfea42ccc329b7d3fbce96c26989b3c7a391c9e806a72e5142d1d85fe86bdef886e0eec96001ba6238a2f0c87f885e15bd13c911a669af09ef1f27cb83189e4e13f3801c08d3a2adc8b5f88717954ee84499defc0c4c58027ae2ed6e15b486579357dd806f6d04fb564ceb5b03195c51dcf3b29180fc72c1dc1efefb775a1bda754ff17389a",
+    "Expected": "ec6247295544e9037541b972d29560d710f288cf179d1960ca1a8e6d7c794561",
+    "Name": "sha256_176_3"
+  },
+  {
+    "Input": "6b6b6bb25e22697847d24a117eb8974b54b24ea2910f04935c2f9bd4f9293922f8e332f54802f9460424154b7eba88a0b4a0c7c2e611a24c722975ae882dcb4b45e6f6b41cfc87e8c766beefd5b10bfdffa4ccfe26c07c299013e835e189cd95fb2cbd0efaa00fc1d85f0eb4394a754d986d48aa5b00fc16c36dcad061d10937b55ec4deee63cc2841b7ebab84f910d28524dd2ea3e14565f503e293d4146bc690f95501e048574bd41729c8b1777a56",
+    "Expected": "7465df8456214d10419eeea80bddc84e0c412058f0d4e11ccbb13d71c345908e",
+    "Name": "sha256_176_4"
+  },
+  {
+    "Input": "979d4df836daac0960fbbb8919d2f90c3457cc987153def711d6e8a12fb14363843fcc9917b28c9cc9a7337b49ab870562844ffdd68daa04656f41e2874da4da25ae495ba75cdd0bfe200ee24d813e1aa93c100ce861c9ed7fa5537e11778990dde4f11daa0091bbfa320a5815f7e083b83ca51176fa02222e81962b16834aafbb2a329761a3d6a2e4d9d63d7bbf7fc6fd321ec0344cc4d7d1b6565c475ee9679d0151568f4201a30088084a60fc3e67",
+    "Expected": "bfd2d8a91da69f2bf493b9ba639231e2ec918b844f4ca48bc3fafd1dbedd738d",
+    "Name": "sha256_176_5"
+  },
+  {
+    "Input": "f344bdb9717c0110f9be471ead9c0a8e43cbc3dd7ec63ac63618a9e5da1f9c3fb952c6fc6972dfec6caf1a415a0aa79eadd03a50f9ac6147b60a94d3443fc775e936fef30b4ab2b9312600ca2a1d7186733a3a84eddaf3af8c5009646a899f6ae8cf233f535e360e29e2952088ebd7b6352eaa97553ed22bac15d9a414215bad0c69466ba7d2dcd145c9c4bd680ce3c95112b5912aa3cba657d8de3dc8138fec92b391d5f988b82e19f16fe52fafea71",
+    "Expected": "cc9b802616e893146e1033ef83590844eaec04379e79994fe4964e55328dd0a3",
+    "Name": "sha256_176_6"
+  },
+  {
+    "Input": "a38fbf292d35aac378f3d759babc607d22e677a85cade63a4bd54cdc1427b1a45683e0b33b5463bc71283f0625269b2b33ead69c1eb7b23a996c31c514d06937b823c51c796d60b3288a7bfde30ceb84252706b1d99fbd010c7fb620ede3e6fc5bcc597c5ed7f79173942a0250e618c93cd0917b37b5f354d63a2c02a576080c2857edf92f1f7e307c69e753fb80151c46c0d28ff431954ff31d5127ba53f397f2613a8e50fbc6683ecdd7c7fd38b4ca",
+    "Expected": "5e3de833fcdc9acf2e23cd12cc015f9de4e22d3b6af82b13421f9e08039a3c04",
+    "Name": "sha256_176_7"
+  },
+  {
+    "Input": "a8e5dc9778909fc8680a58b16ebf40da2bf0c1aa5ba9e99ea4fb93eff792f7306a7c1295e2bc624651215c36476db0ba57a747bc919991ef9b7b10388bf3f301fd910f807ccd31e322be46580a71b7c65890cb3a50e0fc5723f3263a4cea6447a8fb4b21b16105915927b79c0988e1fc86ba09829f4bbb383e2e131d554c42edf1065022975655c07df2b3445a3e6cbb48c0a91904cc227307f8d9a8a89d9d7233b8612577124640b8c338272a6ad6b9",
+    "Expected": "96befb0b93d4915e06a01ba16da93604ea16439c67a891a05afadc5f86a91f44",
+    "Name": "sha256_176_8"
+  },
+  {
+    "Input": "03fd5e91f590fbe171aa3f006617b20ad645626c970c2351e048b2ac37732136d0cc1348f1361d017a8bd63f7cff5302aac6f0d47bc8b23ccc19b4b759b8812a35ee16785c004dd2a01920c52d3244e2160fec2d17a519974d4331527cc62791f1fffedc64c89586d0d8665e46e1ddf1fb89f7da29ac09f2e04ac19a2f5f088404a6d6e29336015d99e107cd312e300bd54f815c785f6008c47c99fa008452703892fb2600926a2c15b4241d3541b2f9",
+    "Expected": "d6d28d4dd94034388b3b8fc9371509b0975fbb090487ce7fe5031275eae12867",
+    "Name": "sha256_176_9"
+  },
+  {
+    "Input": "696622039f0ea07be2991c435dc3cc2803f9cd3873dc6243748e16e4806f8eaa339edcfdbf4408a8e41a3df80c9816211bb722381c21e5d29eeb1fc229dd5c57b622eb7a3601fd818c4983bca07e870d34135a2e7853c74725bdaee1ceadead7b4c7d729650df6544bd525c05c942342cb115ed520b32731c2b746df02599981b3d06ca4adc9dea8d383cc42c193d6090033fdcb731830951dc3c4b33f06310eca51762cb7279039b3d7d9ace93c5f2a69c039b4c6e42c0c",
+    "Expected": "d62429a957bbf46fb80f25c0d129c4b21a3b6576bc89f1663f3d647290200102",
+    "Name": "sha256_184_0"
+  },
+  {
+    "Input": "bfce2a6ee70f41bdaeaa01c75c6c60ac59100794090b8c214c8112ebfe12bf44e84796e8b0cd03a93d2164d6edf1f06a5c520330a177da87aec34070d22bd29d861b69b7b5155ae3c3e7719504c2f199974fbb6648097f55dbb32a4fd8b9dc58a382a7e436e23f49a134915372553eee8c605436221acc80a602225a5559ab460c016ed3490c9333af0fee7936909365e99b56c62e360c6d57df9664d3e17d9d46a886efde4e37e38859893113558843bc019699eeed8ec0",
+    "Expected": "f3c0145ae69074ecd92d979f45e777134ffd6b3a27953a95d703898c3dfe6323",
+    "Name": "sha256_184_1"
+  },
+  {
+    "Input": "6ea9b0bbc65391bac93e2393de507524e776b01a14198f2afabfd0a09ef8ad2ee2b433b7a95c26e598002cc00b7904816d59baaba79bae7c6a7c26dcc48a487e51c54007bd153b0f1cfd11e0705535da2a695edb01191f0c83fc896357bb67132897583b53567bcfdbc63ae3e864a9cda24bb732694a6b27415c5212c7f45a94b557381c596e7d6163864de141aaf2a255c4a97c3f622cf6079cdf7b9f91484c2f7ff17e54d759eb9c51e16cf6f12d645bf2d091427416b4",
+    "Expected": "38a9b81acb525235cccf788e8d712b975be30dff5a75e7385751643e6b5c8144",
+    "Name": "sha256_184_2"
+  },
+  {
+    "Input": "edbe1dd21947b4d95e34e0cf84fd53c8b5d886f7d3c5718cc752fd42c1381515a60997d4ba11cad6ce0a097efee666c22d1dd0ae8c8e11283aae781e1deadceb3ebbcbc5e5280a618053d8bac4ca58b67a85d22e45cdaf1e43d99366bf31ed164d9faeac78aa0bcc7b2baa349884b54b542e3993210ef002f70c6467c7d512801f0003da789c00583b20441ff972ee0923882fcb622e90975381eba92d57e8d3e3b331643962c4722b94d087c3ea101649ed57ff308dd3ae",
+    "Expected": "fef5dcd513e6e69f40ebc700ee1098f2e0deb7126075b620f788608449d94c8f",
+    "Name": "sha256_184_3"
+  },
+  {
+    "Input": "0d25a1ad8884763cea1b0b7c56a3834ec66eaeeadfe5746230768446a5f44e1594700f8cd726904923ecc02cc2de494e4f8c35b920a35b71dcf8d15a8a826e5a7c2a2c4f1ac2c2e3a6d100363e7f541882c905364a0f22c3697b9ff3ab478948e1ded850efd35383dfb41f8b080ea9890ae6101fac82c10267770e74a0ee16b5be6eae2d455d742303a3c624d52aa726216b2278158f3df98af5f2e8c39b1cf7629d0c9cd1ec5c89d5067df65a59ace5002fb31d0372e773",
+    "Expected": "fd181f9e089584b581d165789e9819fa1ed3140f84a830fd2908eb255c409974",
+    "Name": "sha256_184_4"
+  },
+  {
+    "Input": "0499b26d617b53ea04821c6eae922326d755a0df31b559ae5c0edf248b5e531e7bbe80c3076b13a0b73c627cb69241f8a398f43e29878405aa846e68337f4e9c99dde506a3af792732342e3b836376d4816557fc1fc9b9165ee07c5c29fa713babeb4d7c0c2464a4ce5ea11fa14fb5abcff9b6b891ee773ddf9035283f1afc294ee68b2668870aa45e483d208483d9e967b11990cb55d860369e6daa5ced8d8f43e742d2cd869670c73accb64fc6cb562a4b769367171257",
+    "Expected": "70c40d0df5c46faf7d28ec23c296f56deb7c7a6329428d9355abc317769f7fed",
+    "Name": "sha256_184_5"
+  },
+  {
+    "Input": "4005df80aa522e889e7720a9f2e44e6e7e19c3160ea282ec87a4b446d7b1c45fb85bc2515c11a9a85208da4bf742ea31e9c0b672121c7592960e7609b508e86a893c9daec43032946a9e892dce960e07d29b304000378145148b9a24afd151579c3e7b93c4220edf1ad03c2ffba039f67eeffcbc27e24a12745c3fdb90013ae0f685e6bb7713f8fe202c05dfd18003eff261456026a5185ee9e68aa821fe7c5b4d4e7d10f1e8d78bccea9574899fa4c8f6af51322d59f506",
+    "Expected": "505f1c8a566c8661c7b1e59c78f3ecd689d31b3f7002ba836870ecf2b421293e",
+    "Name": "sha256_184_6"
+  },
+  {
+    "Input": "b510eddd5684593194b3c88e51af5822177b85978526036a426c9ca1077d594618ebb8fac4cdfc89c55e40cbefb37c461370a17b4e005c1476c223ddf6f1637ec137320e391898fa6e456b39f4efe6581657f5c701c696fde8acb59e856943f15cdd639c1fa68ed7ea826fe4a3d08a0e1365818cc2949d2e293b7db68dea2aeea6a30469c011fdabe5d306f46a31c14de7b2940104d0a4424ebaff805a81f1c4a910566057c81604512f4679728af531bd07f6e1a43f1053",
+    "Expected": "5d497eeff877ffb281c41d935a42d18fd561e5dde6add20594f7a7503e18bc42",
+    "Name": "sha256_184_7"
+  },
+  {
+    "Input": "30ae641b34115f86ad25c5d7eecdfa054ff6d13bb0967945ff3b6fbbc104296805e4fedc3c25bb55b75cc997834de6b7b649139ccd0d0d109fc7fccdf601f348a7afab4edaa0b036ac595b1d401777cdde4fb2dea292b76d8130e6aa8aff5edf0097de935b252d42a777d4d9b8615ef1048e5f96696673bd2f5760c7dabd31c5d62474af7f5f12895db80e4c6b039904bac5c50a3a8a37111114c22839c88ce4072940c06f0d8b6d53fed155d0399ed7353a5716e5ad8223",
+    "Expected": "0343dc7ca4931e482a8b95698b5d3fad15cb289e210e287e79694bbda5033ec0",
+    "Name": "sha256_184_8"
+  },
+  {
+    "Input": "a0ec7bf9e61a0ddfa0152470c473ff465789c7608375aad7c3f37387bad1af3a896a7e66a80dfce2df1709fa252b6fbe4334d02bdced4329c4b0469b8a96b75c73c36ff66ffd74c035b51a6eba7df98e4d4305066759fd6170fbf5da3959a49fab7e97b3df3f2a38d16d714dd798a1f04ec2cbf84fce76915526af57576b34abcd154b0d9da6682a0bb0db04140dbd0c33940d59c18d3e36e538bcefab5d8d0be5fc143e632e86fc065af3f2f621f293b914980abfd6a0c7",
+    "Expected": "7bb13203277cfc15c68b6f3e2919bfb41dea82cb2e322fd3b4e38519d5053a46",
+    "Name": "sha256_184_9"
+  },
+  {
+    "Input": "2787ebafbdfe14ad7a0ae367173d37a64944165540b9fd5f1fd832208b86f23f30b921d8cd2ca46aa6f3e0dc6ff08d77972fb0a248bd39e90a1e9f32be9e892aefc0660976ef912d80cb34e7b6c52e81c40c70be23ae381cef0e115d8e73e5aa3a5ccd9436b15d4d04a8ee9894c116190062c4e7cfabb047b585f3aa1eeb4605d45d56c1e2787a03158b9235a288be077ccd7574781618a4cdeb730559887bf6c7a5bf2cfedd7048be7ac7d2ff19d4f8bf0a94295ebdc5e792393e0e4bc27d56",
+    "Expected": "ebd07b21993f8d08e18bcb59ccecf6781ff75d4ad9ae37ed2df3141bd5769790",
+    "Name": "sha256_192_0"
+  },
+  {
+    "Input": "c9fb35df3c82d015bddbddea37330a520c61912200c6c1b3f6e3c5b7b2ed55b43563651d5f5729a0ffca6b383d884823aa3b0215fa057bffd8142199a16e4ffea9c594fad45be7dd6413f14c3d464ec9306bab95aabb7572b3ecdbb6fb2b1f0d833323c3a668541ceba18375531c3781dd98525b49dafce4c4b3188c90f3f4b58301af7a0db283784aa84c3180b536237c0b972199c6e144b738bb109515b786d422e21fbffa7d55270eca9c96bbefa29dd915aca266071673e970daa0ca9c05",
+    "Expected": "caefb738992ccc1e65368ee7619ec5d18c8d83015620e8fb36b2e08820f404b6",
+    "Name": "sha256_192_1"
+  },
+  {
+    "Input": "bf2247078366582aca293e7747241494a0be78aa12b9fd43deb80bc5248a08f03ba7ea9ffda87131452b24a9efcdc91d1262d0d7550e5a6b787eace3577159b0bc55cde4d6c75e5ffb2d81df952c29a419edc72ae0ff0e838ff43655383796b816aa2cadacb129598aa459bb2e6b7fb26d1bcb7a49617b6ef8e57018c3db1f51feb22d73fbe4e9c6fb862959de8f47f6aa69e3e87186a461e0caaf74d4825cbe8c02014d5392d30863a12102d1c9315839b5611dccfdb489207f918662513850",
+    "Expected": "dcf2370236ae5327c5b35a3c30343fadde9874d3d26063ee02f4598f3a975879",
+    "Name": "sha256_192_2"
+  },
+  {
+    "Input": "21eee0406c21946ee13bf163bcc5d0f141ac06b6ac64567954769293bfbc18e4d960ff678e1b46ada4f866adf354ba8c1514df10ebe7d88d2c8de117ef5ea249729435a100d898ebb2a00bf07acd05ab6c4a9ea667deeb8b98f148263686a3a304753af76295f72295645243ffc87ffc2110c9d8dfd20b464760ad965d7a9794f6384f048a8fca1c0c7b98e1f0b0f2ce50a907b365d6f9fb0d929bd9feccb582d1b8760cc40d093912fb073c5012f910ae90f0a979cfe6d81c603adbb9828903",
+    "Expected": "25734009aa172168d98995c4705d68bfc22425eb256e9aba5b0627e53ef0d9a6",
+    "Name": "sha256_192_3"
+  },
+  {
+    "Input": "8617d12e2288a2c0aa2a90c84be5438702bf882189c0bff5ee6133bc9ea2c224ab79d640b042664b23667d6c60ef9a5d59de72aee57a78d75752b350ce56d8dadadb60e2213adbf647ef303c29a0462470111cc0603139ef17b1c8544f149e451d1a2965e995bd4380d4ec52fe8e65e7fd99b1ca9f4f0c656adf7051c4b9a99a1da591dca779e6db3e66ba0cf4990adbc576e28a7f0d2162931c75bdf0f73f322cfbf2abd851d2c1f55c56d4f8b11b196c020c2584cb03764580d410d66784d4",
+    "Expected": "009e3d5d1d710830ded857f810886f96a6fa64f6c1c0606f935dfd333e3adab6",
+    "Name": "sha256_192_4"
+  },
+  {
+    "Input": "4800de911ca6e9f9ccc78b4d7ca3c6ba2c287bdb19ac166f90b3b07c3922e2f3214edaf16742762baa58a3d22d5bb2305cb03a1326adc68adcd268428f82a1e09776df26f740cf99209f359df3c36c718768daac134df14f52170c7e3b306869c1f38916d6bdd5d379967dcd058ebce5887ef2bccd5fb7c2bcd758e374a195e29085bccddde28db5e7264d909bab9cdffd2525f6eeaa642c9bcbe7d5cf621def1cb8c8303157f23987f8a2d206f3add697b9d0a303393008429e93cd35711f74",
+    "Expected": "73ecaab286cce858847d8d1059d362a877c12d5cf3555c270be47b477514af77",
+    "Name": "sha256_192_5"
+  },
+  {
+    "Input": "2062255246b154dbe045648a401b7d05ad4d307cec1d90021b1373aa0eba394761ca9ab9c3df673b7ff8be098cdadd8354c17becdf82e7e99ce264174653007a334c43489ece679dacaf27ad2d43c5d572afb58724920524c703cfb458e2ec4b681a0861df30946911d789a5da1f5b89c38fa1a8c0407b608122a18be05955dafe0a2e7ebb38e9c48dbfde46ef7434362df143387e3ae2b598d97306b54675936f0798b448ea0d10c84e2a8896f153b1ac3b84c5fed6a4ba6c932260bf01d34e",
+    "Expected": "b463695050c4a218679db5dc10e239e5acb08fb6c7990e5f739a15944bfe1e94",
+    "Name": "sha256_192_6"
+  },
+  {
+    "Input": "920a6eaa072ae13644662c4247492494cbfbc44e06514a712d0775501512ade6a8b7de8f34053facf1338b54cfbe38dad73121a0429663f484277af9a230abe6290aad4f185494a76901fa8f141e6b3072a6b0170804811278be2f4d7792dc258823cdb73dd076ad95679a9d7b11145c12a81b825477f799300d1fd761417c2b2427787428b3175657424e795673f0b06b230405105e61ee71e536e542506fd69f2e54f21b7f2116c30d6e444ca82fe800435cbbd72a98a6d22bac92039c5407",
+    "Expected": "c5a2757cc948375c75bff2d18de395a92ce7a662911f0b519a5d81186dff026b",
+    "Name": "sha256_192_7"
+  },
+  {
+    "Input": "aa9b495e26cce0397382e1caa8abf669f7f9707b438bce44b36bfa82af3b8d5ec8cecea241dd6a924c9b9cc3d390fbf40ab897208ce9d3e4a148b2c30c25e7eb92872d76529fc90d0a296f5ccea8728e85bf799457910bd585d509f0922726ebe428fab2c596f23bc3c9e9855b74295f52caf73cb7371c93c65370583f7fef4caa89c8ce4bbe1bbc6d242f6610b90e5142ef01db8ffb89baffac9aa565477881f7d3d755410f77a0e4b2fad0f184fa9312b559785fb04c6020432465799ebe22",
+    "Expected": "b29e50e50faff9457c7054f1303da05962b04262cc6b026072324b4c5f9abb72",
+    "Name": "sha256_192_8"
+  },
+  {
+    "Input": "194efa97f1da3192d4b64bd552b7d003b7bb1f46d707e55a49e790d26eb07c54557b05efdd02ac9d8e1453c82a321d798f3106bd18764140faede610ae01fa8077d2fc0c469446476928e860aba24f30bfa1cada04fa5da92624d7886d95c0c53313884abc4d430c06ae843d263f2efc1bba35f6cc270de05551e1f86096bb75ae1f052ee56ebfa7bee82655ec7c87fcbdf479fa5165eda62a0aecc4476e4b038faea236e782a8fbe27ab15f051ed007a61e25247f1f259b9300974f521f30c8",
+    "Expected": "860b36e8efc62dda15ffefd4c0b3bd87527f561e07bc5e455fc003073971af4a",
+    "Name": "sha256_192_9"
+  },
+  {
+    "Input": "dcf8ecc4d9d9817722dce580e38967c82ba2ee6b9ef1d8122b3b72bcd795ae4813994f5645c6ce83741e48ae472674921bb2d9b8abb7d04ddbbb85a3f2f7f0909dc6cce56058692d7565bca39759e4b4b8999f37736d5250c13d8510a7f63b8681eda24db328588e8c670ab70431ddeebb0749b431bc1bfbd992c91f35d59b18427d13e4c5afcfc21fb2c3916fef3757a671b128f242bf975049601bc491c4f35bf25b5070829e3d5a66ad24ba9930f3ad64767c51e432b51bdbe2fab470688db83ef442db4ac660",
+    "Expected": "c107f0b61b91b9564e36c51e7249bf8686699a0a01c74765e0e7c9c898c04582",
+    "Name": "sha256_200_0"
+  },
+  {
+    "Input": "db7f108c3d5333423da4d1a14eb213f350e5f2fc48eb8024a9535c082e11b366cda0000d8ed0f92ee30fd2c4364c163a718518321c5e85d2b8fe7c86bd65830e115a46f8bb8ecb002439236130169874605cc4be55a326e22c4cb49adce0292e259e92b229bf7965864a945de86eda3ce0bc9f1a6dc8b7b2c764884db0eecaa2b53e5545d262ad497c990d47434047b228600b5ec922927c5e927f57aa85b2df54b4bddaa041d43766c8929c8b9146d723806ee0cf042275f523f97f482fd09c69cb2b08dfb24a6d",
+    "Expected": "8c23841b7df6df66ff309dc991fcea04f62e68bd3c5908a513277c55f0419906",
+    "Name": "sha256_200_1"
+  },
+  {
+    "Input": "08d21adb4c0cadc673e78b90f7636fa8606ee8a5fdd9890b8017f6c432a45517d65328f13f3a2bb42d7115c02929db7a4773dec98152c9242cd33e4f83290fec0e3b71d61b2642b88c255c0115578a94c1a77ccb4b32a762d60b37827ad6c3448c33af6af861c131adb5920ba3c2b8514ba8984241cf6c783c22cde69c49f771196daaf64aa2a2e8a0a1f1676bbf81ac47cde609c38eabf457cdbd1e0c5366bf523dd5801d66a0282bc187d80417f455458fe27c4a9e5957138331b106ee884475d9782c7eb948b7",
+    "Expected": "eb08b94d169ae021957f166963e40f014b86d19188f316421c6a4318b8f8ce17",
+    "Name": "sha256_200_2"
+  },
+  {
+    "Input": "9f9d5c8a0caaa7893c79fe6374bf8f91bf7851ff935a124b54fdb5db498d2d37939fcd43bb93d29ae882f9eebb1de5b5933dfb9a3c2aba94811476b631cfe32b7b78b7689b54192da59fcd2baa47621ebd90c5cd12b89f2a533ae86d537fbb61a14b1a80982c92579bbe847b5f177fc1920b6a938b035a55dd1f740b033488325b9f7df1a49cbe7419ef9fdfc5f0c4ac41255eb172d485317c124211498a8b9a74c0bfda15b986c52b8256c42a814902775dd126a9066fd6958158a6a50456e83dc6c04442da34ea",
+    "Expected": "cf6ef8fc49494ca53116f577d1ef1af60dd43cd9fda056c884d168adcdbc2d3c",
+    "Name": "sha256_200_3"
+  },
+  {
+    "Input": "b8ba028831f429d027319a92fc0f30def8b97a43da456ddc79443d9f8df72cc129230f5787fffae14d719194cd6ca732db179f1c08d5af2a09d2ab357511633cedf8a6d86471f58c69c1a5e7518c69c34165e72ce84fbe0b7f69d9c2717e5d4df6d7875a4112bfa3d80524aa1b482c0c0f1670685a2c063327e586b99c0e84d70dbaac3f5e25ca3d1d50ebb31258ec4450feca1e02c84672ef15c49b4de2cebddab3bff49773fdb00a632d0ba8343bc1366e13c868dd299334c97cf3873dfaeb109ccbb8fcd4d465",
+    "Expected": "1a41bb8522369061ec4c06376d7e5685acc9b8dc4082ac4e1fe847d53fc35b5e",
+    "Name": "sha256_200_4"
+  },
+  {
+    "Input": "1b84f4708799d84ad0a717aedaf5a76d2970a7b93bd23d372bda072454f25c768ee2f8f4205a8d2d380b4137d6911ea609fbc195cbefdad26326fded2b8a3fbf7637bc25bd201d20e3d4d724806cfa678ee039a39c24e86aee9502f00279284499dc7928ced19e03b699d7e7270c30e0ac994b060a28aef3e005efa8ee75dec8a013029292976e107a507ec09e3c34fb4baf2979fb759f1db20b502f0a12da750db8bd416c2d6ba7a8afc908f9a626ad801ef7019f5309ff3917f8baf17f71222166cb9b6c4beb2e",
+    "Expected": "81f5e56fd6acf64b7335e23185315907eeb89fdcbe0fbc93549f73e254f10e4c",
+    "Name": "sha256_200_5"
+  },
+  {
+    "Input": "57d0d054cba3f7fd3a28cd3dc4b40949da87899b9b8620db3de9f88f92c3538b7532335c3673f88375d301cbd4d65bdef0f73e1b62561f5b0fbc409e6534ad9e37d1c0724b35cdd3f94bf6489e500fbf216732cb6174ef712650bc8b6f6af24eff07a1163635e71cec6bb37527d6cfa83ea24fb6447f2493c78a267daa158eabb70c1b60af8175d0d4594c99122cb44247ee72fa5f707686bc1b0f7db37c389ee5b955f358db94c6cdea43c3f2cbc39e5ed307c01d9e29a0571de07c62d5fcfc80749f02b8dbaaee",
+    "Expected": "50b195a09f2907ffa813af2a1f841f618f506302104b4f9b0a1c99a84d064927",
+    "Name": "sha256_200_6"
+  },
+  {
+    "Input": "9f69dc9263e9918885b753710cd59cc931cd7db8acf1a0bf4296a3538f1db87c6c43fa2a0efa6f92877f31ddcb55d961bf9bc09903bd927451390922d647d589302855141cf5cef54599669ea896aebd853d07008c4ee3822443e528468b37e1f069e5d84ecbea40145c1442ab82241f56c27dec2cd4dbfa9fc3cf1ab72bc521ab32a82346f8f6071c1041635017d16beb4d8e0954b00ab99996a0d20a702831d182b24ac313d6a6de4d1470f6cbce027465b4dc2a3deaca14e34218910aa76cb45d47139b31df88",
+    "Expected": "de0666f94d3dac33d83fa41d64c4412e975d640f270e57ee6db0795b800f4095",
+    "Name": "sha256_200_7"
+  },
+  {
+    "Input": "d7398a8735582dd31915aefa3eb08c8b19641e5d7f734be432b4c76e94f424802576b42e0728db912a78eec2b7b4c96575e341e86a7592a07a660c11e0044839f712f5de6615ffed1581b29f07f9a4e68e2db090db4ef18559cd408e5771ed4f79f9205ef0e3a85199c60ad9267349fdc7b6fba4cb765ab21750eb3dcfc48d8bf716b9f245ca3493dc5b38f4285276115ff0422b9071111e352fc12817df858b300679b7be7c71224247e8034f5d30a63f8707d92d843a703f0fa93160f657158ab58cf05a5c3354",
+    "Expected": "8416fb397eb32bc86c542b8ef3f820b9e4c7d1deb16f710d3708b899786e84b4",
+    "Name": "sha256_200_8"
+  },
+  {
+    "Input": "14719a2d3166d487a4b361123eec7edc74349222f93b53060454b01910548432a0f706818a98151e38ff9e854f1faa95ad41a7239b5cc491a416d1e3f63d4426babaf73f5b19648c455a6be7d360c7e01b346762cd5765ce3685617371b27ba8898ce7f30776d817ff09ef68a9d6721d4a923ed244ae82069aff32166ba47e9d4cd9f4bbf8b017a84f445829f3e06d412b6f4e5c2a84cb4960cb5aa2a0cd1e8c3fdc06a3a1f6f9b6d52a8cc2e98c85b8e258f72d03efc254ccbdbbf71685cd63c5f16af4bca293b7",
+    "Expected": "668411c65788e7bb59f821b9bd2d19b3b350285fdfa2562d912ec9120e262b83",
+    "Name": "sha256_200_9"
+  },
+  {
+    "Input": "5f3cec9dc1ff06929dd041314b12ed1baddb1fe778c84242953db87d2307b40eeb776f17767c3a4311b5d2ffd738f1512dcd4d3d3edf04adb28d14c70722fb1f70a08c4cf07bfac7a007e0a421e2cd6228416b4b4e965a5f024723fbad6ef2f65a1381e70201e26ccb40188dc3d0fae845150e07b7ee987b17e7c93485558b0aaccd587de67909c18fcf83ba2782f4ea78077a51f88236dba6d16d7fd681c631510106b0eb7448df456eb9ce758e74cbc312f84b7bd88bd7894f45d292742dbdfe07c8365c4909bf3360c847bc059791",
+    "Expected": "7032611c9db4f614f4bd9a656f399e17a43d4c9fb875537c17250036bfc9410c",
+    "Name": "sha256_208_0"
+  },
+  {
+    "Input": "871716e790e1a0120fd26d169b8ffe3fcc0d03683dcdba7d2f953f05444076ce2b596bbefeb813159ec17cec35c874901179327421eb6efc03b514f694fe17c076ed0a27553db6ac6d3959ff4c9bc5807fb7d4f0a56095ed2bbe31dbfa4182773a6fb82280b36e64c099f832f483105793f730b666a0d3a7c51b1351303dcf8295ce72b30d989889c8779c4056e441bbcd93629efc2877d36d27f670711e21c4c301574e3df00d249e7601e5d92e1f29206bb0dff3e4779465c52c7a1f4595aa06d220f64de05bdd6e1140c1e409fdc1",
+    "Expected": "a48145fb0294e7f5e593c55f7a6a8bb11e6e57f0b32e240549c8c920b26e2b4c",
+    "Name": "sha256_208_1"
+  },
+  {
+    "Input": "3f43bd31cd94e633be38ecf22ebd77dbc4b90800f4054f076be4f59416a50df20ae48eb7aa3791c86f447cf3036ac66c257da8ac7d23c5ed965d8bfc76a642a36ea6ec4c45baf6882021372e8643f098205906b1d7f91f8c55f7b61bd66b400187fd0c82507daef16f300e5dc3fe125f63d017ba8c7ed138b1bc70141abc5cdc3afbccd8b1db5a6b5f775efa62b8dbc3089e717c64454bc19d36a6c8439fa0d641dad1269adb2abd7c00c14420d549967a16e23e37ecffd514d47199cff249415a6d366fdfaa82450f0744520258955c",
+    "Expected": "5146c787b5c9ab8361c4df6435eedf4fff35ef38199788003140db4ff9e5416f",
+    "Name": "sha256_208_2"
+  },
+  {
+    "Input": "77b21580f82491d09a3d9fa283343c5479b2977957ef78202f75507beace7dce26a9bd0a71fd58edf81459152782733536e960d27e35f9f84d00da256bdc118c86bded5900218e68349ca39d6ff9539f8e6666abc3d4f9b294bc3a331da3a233f1e168ab93674bd7f2bf73318a48ef17ef4464fbefd39f77c17ebfdb24d679b638bfe36f80196ae6fa3a03c6e81cb3be796edbcc7bc8cb7a32f9c0a53ee5b28397fb0d947d71a1b032070a12588b85065c19affd0db53e466f194f04f58dba2e87145aab3c4a7f183dac87647d50a89e",
+    "Expected": "0c60974fa2f9b2e47c42b2ac48dc12d8007404a8ed1be1ccab3088d57f7149e0",
+    "Name": "sha256_208_3"
+  },
+  {
+    "Input": "03912de53009e107b5ab5e5ebb33a982640f850bad2f22049f2f8aaf3ee57564fb38a847e428e252f003eaac465f7d67b2dc14617c7df222510ffbdea7fcf153274bc7945edd6f2525dfe8233b0b20ff8bf91051da5bce0a51bcba6f4e1b3c9063743646f4e75e3e5a8cbc84e8112af462f64a01f8d0e2c8e24b5ca850aa5d0c5fb4f25ae9ca4984d98200ce63beee2f8da771e0e827a52a2f7e79e0e5d93ebae04c1ed78cab87d4353f24ffc52099b31a03c5968501f77fd944f4a12ac711db81d27265830c4ea29f469fa111ede2f4",
+    "Expected": "df8a798b19c79e213d7deaa72c4a25a1640df2be97b06b47661e8be5fc3934aa",
+    "Name": "sha256_208_4"
+  },
+  {
+    "Input": "d6cff707bff10fd53ffeff8e9400966d8ffba6d4ad6a8e7e456df10f8f5ebed2d4bd27315f62f13cc1bbeeb875c08498ac074194e16c1523f1ebe8ee3119d150e00831cce307cb44e8dbd5edf24f1535b837277160d2cf6daa4e862e57fe73b13685a1f9b014eeea59e401f6883daed89e9bd32d004102b79558d84ebb6e33e7a8168d56385722f339a5b27fc25a88034d348e3d533ff4dc99d28536c1c09a7723befa3ba8108946fa13805e234cbdff51fe581182a05a1f507f1b4104ffd254b929ae82ded73a4876c041d2e52fa811",
+    "Expected": "e07a5e022762e46fc57f8628322c051d22e8e0b9275f1f9d9a3249195f5cd9e5",
+    "Name": "sha256_208_5"
+  },
+  {
+    "Input": "882fb8e22690a27cb4ad3ca05169bbf0a1dc5cd34c4517bb970e03fee701d9d5297655e04a7269e146aff8076740331a36999c516d4acdfbcd488d39e3073db9db6cdd0c0fd1d29d58294ace6d2d199fe13145784fcd14739c2a8bec2500afbaa8e434eb34329f3eb120f58bc2b79949fd0bc405e3970dc2bbd7dfe0c54b7c64543fc241000adeef4f7aa2f1dd250677f68c6e27110cff3843796dda1e87039c54a159cf2aa3060fe86410be433fab3ec36afa3c8581df069292d53b8ce3e35ca136a0b3f95a894958105fde9c77e39d",
+    "Expected": "a04c4571b0d10ed4cecad9d11ffb9262b5be7e9cbdae5d2fe4ceef3633971b03",
+    "Name": "sha256_208_6"
+  },
+  {
+    "Input": "bf4f442f3c86192c378ee20a60473b8cefd80f819486c761ad2f4a7f63671c290f0a2bd678c5858be2a49ca54de8716fdeec84e1935b8f44545c740417efa7e4410d83224199ee1c74f0deba6f6fda61108f095ba1314533ed3a557e5f8346ccc8e420db340ef2c1b5c6a71645e303eee95cd93228770b639287b14b6a5c59badc619f4290ec157a57795fbd9ad895cd75d1bd741ec219a1ab82cae7c0c7f8845398541eb5a03271e2ab5ec2aeb2da80e634f63a050c25de98ad13e9d63d09bcb57fd3376e1860c1b7126bb5416e7940",
+    "Expected": "1521069fb1f2d3f39054977091aab7a692bf4591268215bcab931c36ea13a416",
+    "Name": "sha256_208_7"
+  },
+  {
+    "Input": "2c9ffbecb549992d1b188ac02d6d0a4b9f99387baca30b9cf63ad10c445daa142fcae1ab3c0a366a068bb5efc9abb3a962bca60c20301bd65e7cb595c2606ca1219d10983324859711edeca99ee2446b4283a1773995bbc97a6df107082fed4ba40e2d30c5472a25a7643ca9e78b8b8b1cec8bd3c78de8a4a1dcbbee22a6b8390546dfb5cc63b9550ee3d76520d0a2997f4202d670fc3b48eaa92e925f48821d2ae057d90c5f184edcce9ea900ab51a6505961c06f9e0d4c1c51ba13c0f198385a84f9f28c8227d2651bd4132efe3dec",
+    "Expected": "5400471245bb3335bbf897e3c420df9203b9646a85dd0b3f2e19bb00a54ef8e5",
+    "Name": "sha256_208_8"
+  },
+  {
+    "Input": "a76cd8d292a7053c449cb98f13cf768c6e37da9d702af28c16dceacfaf9cdef53da4f3b9d9b84fa42acadc3dda12e63c378b10189c7140c1047e161a5ecf6a1697b7bf8acdfbb148814afee1df79aea17261dad6f78772111a6dcb021d8c79d091b6add5ecde655047ca9f090db69a1511933bade4aad7d32b8fed24657f07e4efdbd5953bc33bfba09fe7b3ee22c46c3a86f557e4b5f272853e67fd95a0f9b0e624c64befe57cacf3752b686b8dab152c7a306fb8b9282423d49f176ec3165e9a331bb218b99fd38451483a10e8add2",
+    "Expected": "2062f8512ba414f4e5c910b3b311fe557266f7e752a47faa171b58957827c241",
+    "Name": "sha256_208_9"
+  },
+  {
+    "Input": "3c9641b975af3897670884efef90d452ff1c91e77f4480b598a5887ace112d8c509234e3f59120548c5abb6b5495fc8fe9301dc826bfe2988cf93c29ca9f01421b75ba63c5ed2cee1599122012ada36e701f01deb083ca576d62a4e336881c90daff3046af23e44574969385c8e3baf10a1cb530e8b828542fa4114de6aa936bd2be5ef3a9b7a0e20e475022381d62d44881ccd247793635d820fe958264b1513d69c1e7c3c8bb61ccdc27059e3d68dfcf2f0c33bd044e8c4468b4b7e137ae294c178e7b6c9f19878331fb93220db2cb6f578dc0ed52248b",
+    "Expected": "b6974af37364dcca593e990d4670e0740d47afcc14ca2c28f2a9f0ca56ec71ba",
+    "Name": "sha256_216_0"
+  },
+  {
+    "Input": "231d19c13fc3999a2cc90530fb461f99fea0e690e60932c4e5f460dacc592bb947ff6f1c15b8464824aa5c957a645a763138ac1581ac576825262a18eee8f6bdd122efc9c9ac091c63ba5b55be99e05f39c1a9efe15797bef26a9736f728e16d7b8ce0cc59e2ccc848c181459fff4321982c08e9cac57946ccc7b90de37e3833f0f8fc9bd0292313df0b67d056b85820d5ff1f5c2f307856ccf0a9be4775d65bbfc894f8ca66fa6f69d4249ea7f6b076fe193f2805e64f9479ef702c9e2184dd3923a40d469330e6dea3904d23f3e4b1cdb3759d86a9bdff",
+    "Expected": "b6740dc01a637755a9777a514981e5edeac1d3185b15081079750e59e87ad005",
+    "Name": "sha256_216_1"
+  },
+  {
+    "Input": "fc6bfb37cbfb10a1ffdfcb91d9a52883cb9a606f4ffa8849a6e07386dc9bb340c3e76e2b633a3a25b298553c9f89e4e0bf3ae8bc63e6f548c777f5d837b5991cd94959e16f6d780628694075ba5aa1a476d89d8fffcf4b4ab7e6343c011fee92423bd1f3f026f1e7e7656b7c7c6b9f9ec658eee40d24468aff2c25adac7684c8122f3a5e940ee7e5038421619daffb8a6f433605f37e78d863f814b51b2ec4e217245e55a947ca4ef3790f5c9f30789ffbc1a23b293e4927d21bae00902f0c5eb3908c739d505a1d6fa85a6dfb7a155202710b45861f1a8a",
+    "Expected": "d6a508c3be9e1137feca94fa07aabf0be6b3d774a3d303d270bcda39cced6050",
+    "Name": "sha256_216_2"
+  },
+  {
+    "Input": "7ac7bb3274a180cb675a1dd56d89a18ff40fcd63f88988ad4c3079928f291011f636a91a12bb87f37e0e27a8a416eb38c989a66b84f037a5a24ef3358e20cd553f037a0a2461d310c2bbfabfe3350f8346bdb659152de7d220b8a9b8fb22f3426efb43ae36e427450a3cbab01c34856b892aacdabe63d0a0c241ebc137a88c83ad22cf38997b211b6ecc5f80420174666b9def27bcd702378e514049f537f88fa4e7a7d4bb7539f5b386bebe0e49b7f07b0ac61b15306c2515a1ad6fd76a1825dd29a60e845c0e4ad9f9a948c96c01ae1550d691d7d404a9",
+    "Expected": "e968288f4fc17da2b3607ffc7635aee601536916d0c2ecae06283275ea798255",
+    "Name": "sha256_216_3"
+  },
+  {
+    "Input": "1f9764ae3ec1a60ba76ed32806a5fea78902a82d33993a10c56b2fa3333cabf1c5d47a9c78354d58f70ce4807cf2062845d790629ac84753b1f564f3b36ceeec94a4200812be4e65770653b11a6f472e426a4e2317fee033a226a91a52a5830f9ac2cf5f329feb6bdb382438b8a39f2a636f650b3273403c8176bb25ed93eef2a4e4d0d22fc436ed76a8c71318203095de0390c05fb0dc9b4a3f76b51cf952a11b909ce13f9abc9fed6a349b8efa98ad6ebb81a823a197d3bedaccebc301ea815b80152443a3e54a8b9971c7bf7c44167431db9e576643f9",
+    "Expected": "dda5ced6f0b5d0e59c1c51ff990326c5546135375b674bbfe2bd4dc384d5d7de",
+    "Name": "sha256_216_4"
+  },
+  {
+    "Input": "3505b5b25836218759e736c0d650a5221a652338b0073eb6013245c11fe96ec99d4e46eae2d703ac592d3e44d012a6fabf994c22d3e642906745a32591e359efa41e9ea93a016d2eedf1da112cddbf31818e8d687b36af2edaff3ce84c09a527bf725823418413743667de7b68ee3e74daa713949508ca7ced37a5f4bfca6b77ff9e4f7e03bfed52ecf02a8f84ed3da6da2787a4ee81ad9be7afd843d53bc00aa074e4974335b160250990e6b19885edd5b07059958d82b081633dd6e729bc17ddc596cb1f17dc6f0e50c052a0b8c5a4c83900d918a9eb56",
+    "Expected": "ae97e97f9b8a6112757364d7f8f279ac380597bd042860222b48851f4af1346b",
+    "Name": "sha256_216_5"
+  },
+  {
+    "Input": "ebc3fb062c7b728f73dd6457ee1dcc5c0769f084aec947989010b9e92443a6d5c6b019d29219b57404baa955f66cf1b2ee6571ad5b80d471ff6db569e32a1a501b6b6276d4eb61a3d2b079612cc3b5e09256ea85b03279296de82a8547f7c8cb6a76411ce02b4dfc84ddf62ed26508a2dfa5edb5a98a6a20dd69e8b8e7ad2f59403834810dd57ff5feec220e4838462a78f3900a9a984c0151c11018633e8f035906098e4ad7e4eb2e996075c7cd660fbc399bc942f9080404b9d0758c4ae14c75cca75c4aec261f336eceef6cec3da95a599bcbdfb8f7e3",
+    "Expected": "556541e86202fb7787df653bcfbfb9385f5684a6bbffce9389de31dc1d98b0d4",
+    "Name": "sha256_216_6"
+  },
+  {
+    "Input": "64edd47f7e30cc3994ef8c281a9be3766fe784ae017d93f608dc2cb97cbb7dd3e3814b5ade845d37a1d24ee88f32d6d62ff594d097e0340b8ae07195e1fa54f209541e85652c82296feced33019b3b66d335f2118cd22b2952cdf9757fb3a0cff55b7c4f245fb4383d969c837af66d4951af63e48681b47e13ddfe197026063fe61fe6c60d0e841ccb5e7df372d346fd13faa90b0d6961372ce2f32ec379e5e50e7ed8a13942cd9d2e319e2c1f7e7be250443180e5021a77695ad0aaaa42629352877b99b2b3d13e13a5fa1674c20c97d08608d200f3f761",
+    "Expected": "2a9977c10c79a5bdc15ce3c6a076a3be3b75cda5d4b829e5666d845d41fc063e",
+    "Name": "sha256_216_7"
+  },
+  {
+    "Input": "1010e6a25a790853ed4ba0c5aacf111b483ae589874037996f8f0f5e9b77f6cbd723616b44657148d2ef276aa2071512ace10870acf190b373c19ce615e20e5cb96d3c6be3ec155f2b29825f8476b7740e8c6efc9415ec0c53ae6942ccf3a58d8a1023050fe50f694bc51b66d76182c48d9e38d9383f09cf0f8a8077f1d1dba091ff0abdf7e77c3b65c2df48d6c6f536ee41e9dcdb4676005a600cb63bc3572e2e1127b86fd8d50adf670edf1e29d04fabeffecf9b404c6bb2e2d0c78fbb8609a38e3d3187587c3848e8f9781b7e9f44bda80a997b636843",
+    "Expected": "e6e0d823cd3345055ace3e24ec4da060be4ac1c10e23c1169c01a5724f1d4ad0",
+    "Name": "sha256_216_8"
+  },
+  {
+    "Input": "f67864f4c7afb44b4ca937876a714487bc0a3050ea5d14beadfe53846c0038203d8b8df0cb636aec7d4ed7f78b0b0c1734be448bace08f34e6e4667912e8410ef0425aa0d75c9beb96d494a54eb994a4ee22abd608a1e7e706e9d4e41b628be51690b86aa8938db066c052f3adff774d35eee1e332312d3f4197195a388161a847421d44574fef12d471da84364816200939b78e7f4a4ae6b3d349b1546a8c235d60c41408c969a0fd42425f8b5ddc1fa5102d2821bde2c6aa5afa8b5b7e377600e0df364f5807e54f6171bc3c157971f3246fb891d67567",
+    "Expected": "22e69411049b195a80d8d744f13e3d9be014a34e2ad91c8bacad7a445e1879ff",
+    "Name": "sha256_216_9"
+  },
+  {
+    "Input": "29b83950e79750e9827ed92856e4d1e1b5f0b47c6bbf3611a1fef8f2fc47659c9d3d8f47e01fe6e3cbf8ded64b1f326005a56f5e37a8a58de8019cac779ba45c6b5ac07fb4a184dfed685b93d2265cebd02a3296a3b0416cc6a115242079752e94b21629bddbb348fc5821c181851844841d06d80a5bbe0e990493c527a527453a7a25ad9f02bf51fd73550ccde12374d9b151f2f6fe535bfaa43efc391f789776abd8e8d55cb82ccc34a82597667e72b5f0d05f6e5160b1da1d0ad53293c15447944c8c814f143f746175ba0b2d75e2ae73730a265d869763f0e986c088bfcd",
+    "Expected": "ff2e4f019b29a879e25fdd4b17db2cdfc34167deb1459bf4dad03f8d839e40f3",
+    "Name": "sha256_224_0"
+  },
+  {
+    "Input": "da7cc05c09750af9a3e8a930fe9f6101a415185e538110f48283838b6363108630f33b187df3516866f259ff959d57fa9c53323d5c851fdabb96e5ea470518aceb0d1903b15d0a25e5479ce3ec54c28faa667f44415cef33b6964d3227c1b5af4da8401050f30459e026a207ca631f0684a10813c64ee86dbdf06b7b29cd9786fe58c5d05ea274ff154bbedbce2b78e3f79d8019cbaabc434aa7736a91d777484d940555d48649f30026f70450b2caf2b8f7148b28bfd4349458ae89c323512e86b8d4020b6a68930aeaf968ed9311cf0112a6682c154eb89511401f6b678d5c",
+    "Expected": "4c8b549f310b6b28ca2f95ac0812563fad3d9df610cbad3d659ec728f767e689",
+    "Name": "sha256_224_1"
+  },
+  {
+    "Input": "e140e30424d2cccc91be1fd3a62d9ee49c9d64fa062d9350b3fa567ec21bb06b55e3e6b5f213d47cb9fd9eb5c38e1b5e1e3265dce3e1f20071a7c3427c542cc0a57b2c351a7946a20cbae1fd789ecc5f77376b09e911749831e9b5680185b1538fd031035972f23b77e8c9fc62e38f2334fab7ae01357f06e9ef46b5d09e8ee98fbff9f8ac4ad10718d46a857ba28f182263bf2d13c8b6a00902af737dea5616e63d26c0a183c6d63a6c72ddeb70d67c9abbee8d0dfad76f71588a21832514eeb061de16f4f609c6947733b58c6444fa9549721fd9a2459652e8e4b8c69b5d61",
+    "Expected": "82490af70dfce98f04bbf40b7a92eed54436488e8641749d23b2be7aa8c5859d",
+    "Name": "sha256_224_2"
+  },
+  {
+    "Input": "9948eeecb76c06577db83fc817893145a8ab05dbab0702bf66bccb8a19e57b43355ed5b57b28451ad98fbacd5ae87551b7304e4ef5cf7b7dc443a66432406f9a40109ba561673c0601bcd250f9085cb0a21738cd0b66da28a5e52ded392366bd30b6eeb01874ff4b0fb07dc9f23d8e45455c1480eba7fb3033942214e85a7720d7dca30297e78aef597509ef4ad233755ffd6a69ba1964d1721d63751630299e89a697a0e8d2cf512edd2a3c3df354eb30a3eaf697779dd9270234b367c2b5ff820de55c46e8f66e85fac07da0a9372cb938ca583e5fa7815d89c9fb2d45226a",
+    "Expected": "bb8c7fd9be0b123cb58d44880ffd674e1627d68765fd34e41c830ef1594cc06d",
+    "Name": "sha256_224_3"
+  },
+  {
+    "Input": "20b72463d54ac1d8f1b3f56f0f98861768b05d5174cf1883dd8eb0410420d562c602b7de0b15919bc2a6925e14788c9551f94bf37e9361e0069d0e2bab0cb4dd3de7997113708f9d092836c2b0b59abf710d8401baea6de73ee0689436f035fe0485fbdf7b9c4b57bceff184540b14d55767c4d6b09167ddaf09e0d68cf6dba37fc3d0560432dbb721f8a0610f0db31dfdfea8cd5ebe8da3fe3b8ac5358dd440c4cc01ca94e4b004377a719029f0287484758bb045b39c33c3d7272856c3bd1bf0b271f02031a126f8632e30d8b17cc5b57de7b8b873e0971ff392d4246a40f4",
+    "Expected": "0c43f3f259fd779d9e69b6b39a99f3b66fb4a8654a44b9b2c5f333b12717fe61",
+    "Name": "sha256_224_4"
+  },
+  {
+    "Input": "ccabc9773e6b20e34e7669a02d398f57db6f226dda80bb8d254c8b668857e348f8b5c136aa5e2d670edcfb5bee9ff6095d85a332ad55763fe1e5e8babd145c0766f0fb29c913ada4502d9759232389be548c0748c6edf884a4ade564200a8293285193e7c10646a4601787edfad3d76e19d5b013a0a954873d92bd5293d32582d3c6a8172f749335da24018b62c714270d03db76f53347d8d3fbe25a3a084cdb35bb2175fff61894ccbb69d90375df627e925f1ac430a349e75580dd39546e44a8f244a234d331f2f88fc12de5d9381b98b96c9e1271b8e2f29c27c382820d1e",
+    "Expected": "ae93851bb95679a4cd3b528478a8c32b904d24478d641a2a6060673786e7b180",
+    "Name": "sha256_224_5"
+  },
+  {
+    "Input": "a25856e5fb9547c48d41783bf2cd13493a1fd71e56b9c7e62af84a1f6cdae1c88522696e172bbfb5221e7cfd5b89883ba5f9d21cbb8e79509807e94d2f9d54321155c0b9c4185025310e8020eb52abb6f2f1780da15e4ba81f3c9a88ed1b4a64f78177aece7c3b5c92c91805af2fb9315668d323eebd89a4b4a41e67af3b229fc5610b2707ce84ce67e82d5c0e5f5cd2c90925aefc1e39468ca86475012df045370f1dc356275d4db9c62d1d387871d996b03ef2105efd56784296254a4e747732fac970e52778cc90396a5ba92ab98e26499eb1ff17d4bc4c1f78b64887d3f1",
+    "Expected": "e0e5c3893deae8fcac64de5f1e970a0585b192a28fbdfd60079f782a352aa4e3",
+    "Name": "sha256_224_6"
+  },
+  {
+    "Input": "2d3747b275a530ae804dc4d8177840b5cdcf353e73de05151e3957ef236461596583bac9672a77f2fe62bea4364aacf62d5e10eb3a757fa0595a81f76543e8630398600ad0eaed51262143aca0ac918d919d3f834c5cbabdcc104508c849b1085a8e1d77c9e42a187054c938a8a5b4bafa834021b727036ed3941b1c1deb9d03c7e7e7263342ae51d9f9d391fd2dfa7d5a243a64344da6472869b54926308ce539c02150e4e89b25563985c7802c0c43d00c721d521b54e767c1f509f584bf2bde1926a6c308efe16013b6466faff99167bc87074405b79ee1286c685470b234",
+    "Expected": "54753a0bdebee7439eb98dd140ef1d919d1678e8025f27222e46a39f7f990f78",
+    "Name": "sha256_224_7"
+  },
+  {
+    "Input": "2196ec0e9d2f572856217521fcc5e2869f16d5ec5fe76f7d350698f55ff0c5659673e021ea3db723073e2b169573265c44c7787e0cfdbae49a3c2eabb148fbc48df5017c9c35604f061a7095d976d08bb3570ef8fb518cb606cd39a3060157ab10686e214fe6b9f5035485982429c98ba5feb5d942f004e36d8593517206d1937b82e7e565f8a521d1a9d0ecafc029f76b70042e1ec36c20e3789b49c7e50ef0855484fd180cb6bbed277829d8dfdfaefa9620710a82fd7af78552927aa923c28260c1b7a249ba215f0dc127a41876f858b20f4422140bb7695c8f98e4c474d0",
+    "Expected": "6e373c30617f5481acb66340ec13712f445885e1d3a98f5820d801edd6a266c6",
+    "Name": "sha256_224_8"
+  },
+  {
+    "Input": "c031d0e9dc82950673fa1be4f0513e92462c08fab9d22150ac72d26bf71f030bcd68d2b074d038ee0d9887168dc16805ed55df26329a4c0e062c2124a6e5066796a4aabbdb245dd1ea6331fc1f824aac140d2a427682697ae290300d21b192f52a40c2e796148ed1c539b0584b90cb386844fdcde5d3766cbfb1d1b58626fcd1d5e605f60bea362c7bfa52146126aa246f5f40fd7e94bd66f03bbfe5089053904a1e176fb26983e549aefff9aeb220f50e071222073422dc2c44abd85528ee283170769a74ed39579b4931d5e87fc48cb9611aa5236ad03d9381f2621a8966cd",
+    "Expected": "e733f5efc43f7c9eb4aa750a9b9103d0e84dcbe27e7838ee0e0d29f05212c900",
+    "Name": "sha256_224_9"
+  },
+  {
+    "Input": "a62e07bb97ca3805ba2d30f39f44e70a7b2917889c26b84bac8f9739bdf764091b5b093840160fb2420560370cc59719a694346b963243a1e9793e9687712631a14278fe7a08174660c08323de272b2110047a1d1d8bd0e3c7d76dde030e00a657c4976b5b22780cfc1f1bbc6a6ecd1a18a4adcf4c2d0a020e368a668bba45171f516ab5b36a59e6300a54d17363ffebba35fa0c64cadb21e541af5078545b402ceed19d189fa662c05a2c48293f4ed2c20bfcc09a12f496dea024bc0477301f3bcdb23f9568e409271b5f907fd64b0cd81939a52a6db38fd8d95de76213f7b5dd2b6dd8c7d7a3cc",
+    "Expected": "c3937a8e7f0c0eab7873c8be8ea7ec04ba83aef189aa01e1282b71db900269fc",
+    "Name": "sha256_232_0"
+  },
+  {
+    "Input": "924439c5543358c841dada79522715ab76fb07a431beccad1b716b02b3e94600867e019be166f4532d264e0aa65d723dc0e117aded59245d2a63202625951089267c1b9b99b58fe411a393c1bbbf27cc55109d8c225f2715bcfdf0495e49dbb8a8f9a0dc517351f39a6d823dcd42715f329dc78400bd74fca9f1b4d218a60607c78590bf88b355e6522f19934f6d1da1167a989a3e531ad1f095238bcee61ec1317c0f98ad4f8f9b39c5940cf37a8a3a676787d9dda99438fb1e8392bab3b7fbf44fe91955d7ae84fd75500eee3d3c48f24df91ba7251fe9e45a6d64cac817cd479a501c77b6720c",
+    "Expected": "89c9497ff859e438e12a631a8f437af4ec2267537c1799d82ca4226786844582",
+    "Name": "sha256_232_1"
+  },
+  {
+    "Input": "6777c6026dbee471b490fee9f242a670ce7eea4148b7a91579fecf08409c3c4ac78732587e6879003e623277042e42d954868215022673de608cb43a3cb74ef2073ffff34c54fbb43f19b22a02bcc2adbaa9cfa73bd0f8c9da53397313d3a3cba431fb11a8428d1e206593a78a017d727068c3ba82e52fce0223a9f28c1d42681c7863c94797d1786c1adbc3e6d10dbb03fd7c69c434e39d6e55f086b726a753255dbddd42177c592662235dab65db370042b8005283c7b91ef4b3ff7e20a91349c8c3d1301c9b54b901e8348a7d186e807156a10683a02dc2aa3159437868f43fcda0e65eda31cf",
+    "Expected": "40b95bb119e3b6910d85ce9127e63650d29cc2b52a8ac2a4b5195dd2414728a6",
+    "Name": "sha256_232_2"
+  },
+  {
+    "Input": "c01e821b93d79fac0a3eb64ce8fe140d94956b0685f91a5462dba1a90093e803dc617559a66d20da4bc7fd7d672bca3a63d643c890dfd7117e8583825a1779e9d8345f3ffc47db90ec88ed0eac8d0f2f618530e91cdb9ea36b8d56c1001a6792a09e11ff65fc02aa9b014adf68b75775fcc3c00695f69cbba47e5534b16371fce080aefcbee9daa05f03e53ff983fe4886a3dfc03a353fb77927d7a0d1998a1c55ca7421a4bdac6fc7b35976cce8553e31abf4b93660bfb30d3ac30851a041996b3df085334306cdcc1b04dc356bd348211ccc4c50d12cb382660a4f9526539c2a0c52b021ed2165",
+    "Expected": "023e86ef2de1af81408a37840a6e78d4378e7b9e3fd2f6782fa885b21d9883d3",
+    "Name": "sha256_232_3"
+  },
+  {
+    "Input": "71a903794a4f617cb02f725cfa89503660e67c527ae81124e74cd3e97e177e5b97b584ee05c27d45390aba36772ed49d571837567e95f1fd3ba3fc1ba5916727bec07cc98ae657b8c06f4c461534bd5d2c76eb724dad8f7553fe9850c97531e4752542cd551cafc5d50852526ba0a23d274317e1e4a6e75c0d19319e5853b8b6d330eded0c7b5c8cfbe2b39a6640e5eec19e0a6a970ce105ea924000f40462c42f76a0fa585828f79553fbf3baac6a2776b782de66dedd6b734f9342e734ee308b0c1cfb60d3b77e12e387a629b28fe70782ecfc2962003cc88906a5bb79823ff638e6a70917c898",
+    "Expected": "a66cb5197a5696f59b0daa6934adea7cdfbc7f225bcc3cc6b02c204131a0f22f",
+    "Name": "sha256_232_4"
+  },
+  {
+    "Input": "11851109296a7225f9c7c5b3d7fe6d6ba6c7d1ee77db4458892523c5bce0bcc1dae330a1e80bd1dff67202032acb9d2570d29503a1174c541c4ac944341dc68fee586d221db2a8167e833f18f012afa7c3844def6dfb26bce4bbe6589a1a018725fde90446939f8fca20cbe2c323916d81fbda26bf59ac55b0eedaee9347b10ab7b346fbc16c10cc9db486f561f88b756c269ebbba23a7f4ef434534f6fd271e1815c054c956b7992b24f3876eb11aa6601826f2f31904d184adc8cfd2e42abc2f0e0d7e9c4b378f73731905760bfeeef01c94f8d5c3cacdf4b3860349ad3d1d824116459ef659de",
+    "Expected": "7ced18821a9c765ae58aa4fb7cb7dcb0621a1e9d76bc156b78ab6e1b613c8c7e",
+    "Name": "sha256_232_5"
+  },
+  {
+    "Input": "b2e776e81048d118d9003cefa6f6c0febbd5d4a15998d733326ce23cced86ec5d5b410c29ee98a4de19f2662c3933dd12d23cc9673ee108c87b19fda9c8201e71a0023101b174b1b7c8e7f3c0dfe81d73717aadf16301a9c8741d65c86ad7f849101e30b7b1a344643b100a8582a6ad16d5696c2866b9724fe4cb0897a8f080908955d79fe0a09e67d7dd5ede24ceba022788b3597da7b9b106203dd0ea97527aa8f5149754bbb0c10bb6eca8a46d940e4bd3085d4ae06539f290fec82cf68663681b7663af3a1006061779593b843b53c21276fc1371060c226424eb9886de6897b15b075fc5a51",
+    "Expected": "6c6837936511fe1078b43d1697c901f18d9557f83eb43baa4d90b555d9b9de8f",
+    "Name": "sha256_232_6"
+  },
+  {
+    "Input": "aab4710e9dddd384bd37019f7cc93e1915fa699af0e34c809b90661602cefcf97a3a902c7b0f24cbccbce4e92cf377f67244995badc72db0b80fe37c9b7d443595156fa41abea17a39e05b1ecceee508f891fad413b4dca379d2476273c3f34564ef8645ebb7bc03ff79345f31c107841ae388f6cf116d10bc696aec4933de56bb9affe7e20c649f3bb1fc20168a1f870cf22e9c77fe922357e622e6bf8f169d83b043767a9996c221cf773387d5351aeab99971eaa3b207fa6a318ad60f1c3e16b7f68251f9c9100827ae1154f812cfa7a86bf88ac537a70320c1c7f7b0499f291dc23a6e94c023",
+    "Expected": "2985b032ffff89dfb7cdd96031dbc1dae6312dc86a2e44a566b3bd9c2b56822b",
+    "Name": "sha256_232_7"
+  },
+  {
+    "Input": "2d69cfed6bb2d33fedcbd215dd4e9632a3cf86a4b2716406305f6a85e6090a05332563978c3fafb23665eb655415fb30c5e43fbed1ffa77586e65b4b0c0be2a379cabae288f8a9a8cd54523c20825b8fb07886bbf0ba0c5c807956f268af4fa109008429f3e466100605bd51b6d4558d5d09d8844924bea30d90921a8d0741391973977d8e8c592f9063c5a14a658990f9c3405643089eb58324cd3f05b5b5e461fdbab4a52723f13eec9ca75578c8ee18c1fa8d0dc10c658e2cb125bdf21688a610bfd375a7b8d0b034c17c8fa27d4366b06c681131fa7daaeeeb08e25c2ca6c127ceab10f91007",
+    "Expected": "dda94825fae84cd012b58a6dfe8a958831fa94444d2ec73bb81f670807562e30",
+    "Name": "sha256_232_8"
+  },
+  {
+    "Input": "e6d9d9505354d6942799fc4e9131a4ce4ad72c50d0657e7699ffe1dc2d7526338462860501d75380a5ed9d53e675125342afb6652a97437b22ad0fc7604d7207733e6ed77319f3b0f2d42f0a9a81a39fbba998397a178811fdd97465982b58e69993711a6a64134bc4e76b88ba1948af91ba3339e9b9d3e9d036513e697d3bd1edb278755a5110011e0040b68af39abc2ed1c50c6dcbdc8f786a2a3974c84752b32f29707805c71992d5d473f4b7bc1f0757d126607a1c075447b1d2e1494828804a8d840befa660ac8f753802ce18528b572fbcb229a6eb85d33a7fbe6ac6eb42eb932dfbbca2f7",
+    "Expected": "35e8780401cab6f95f9f5b6d5fb8b0fa5534df7bd0a721f33ac8e7fd3ff02502",
+    "Name": "sha256_232_9"
+  },
+  {
+    "Input": "71ffad5e80fde686e5df9d34e9f83ad628c35de7be28e65670b75e8ca2eba28dbd3def8446562be36498b79a6b8fd20019582dfd9cb80d44c17c5f62360e62f6736d186194f0f8483e34d8d18d832d37ee03fc95953d0f1a2e83660a04580c51b8c29a242bb01a4715345b79428fa44aac0bd9b8746fd02aa70d8b8a2b5d3be46baecf9449d8cd3d620cf9efb3c615d10c964038dd0e1c6bc085a14cb9f2fe333cf2320fe17fd3843e651cc43e2cb300069d889881d5bb87dd65a9a02a7fe239bdb55ee54a6310bc987e7c5772404d7d3be1ae6df7d59b5282e9a7e6f46bfef1c9eb43eb3baffb67bfb1c9be59cc6abc",
+    "Expected": "894a464b5bf59e83118e8d3b20f8c658bd4d1303d5e91697bc7837ef964ee572",
+    "Name": "sha256_240_0"
+  },
+  {
+    "Input": "be658348e299bbf2438a0c013f86eeeb69a013b8004a4996189472f3372b326c30de07495a84c295ae1077f244f6e10fd65f6078d4e401f93a69b9b3dffaeab39b9d0ec92ae7df3f52a95747659f8fa3ca2cd01e8d7ef6de384111246886bafba9539364a04bfc0926d34aa76188ec88ce8c1c76e668569d894b746ce6693780d2ffdf1237b4e03c219806f2dea745c94bf08924e1b9f11deeedf0db19da6f3f177e0f54c6fba1c421e16298265f9cd9c47d4cf600d7f83d77521cb27d4e4289cca0751c9534cee7f14d11b7c8ccbb2c537a799df59f850bb125c6362d72e9c401231492817c49b5342ca5b25758523d",
+    "Expected": "19654bb8f647f4880df4755f7636a0083d8ddbd94373db7bd6888daab19955db",
+    "Name": "sha256_240_1"
+  },
+  {
+    "Input": "d7786d0eefa03ef050f6616b8b8b5ec417f890a1120daca4a1bc1bc0fa7529f0a87b5fd6ec385f12b270bc0f1a5281b419fd2e99882e5d7291f9889ed8792720f08e0fced7d0bd5580ef208c65aed29761ca18257d9d989ec13d4f158b18ec17d59344f4558b6dae6c0aa0c2f37affb5a28df5656a9500a78c1831653bde572b6ede06e281ac0e41542916aceb9c25390fc004ed8a135ad97cdd1bc4d0c3ccd15e65031ad7e3cc13ef2c260958bc43be5b176bbf3a89cdcbf885b4f3aa46b650285280b7bb99a31012456f4743d80ea5d8cfaa1037e2c81c6973b221dc7badf25ebe3fb4b42bbdef1124265df2c7ccc4",
+    "Expected": "2e454657c6cd86a9893a53ad5080db9598fa6bc3831a5e26a4cb86b7eebcb6a7",
+    "Name": "sha256_240_2"
+  },
+  {
+    "Input": "7b5c488ded26ae8b259dc4e7782595453502f18ac8c492704a527cb3b81f2e5fc25ecc5d37659ebb0c9e21ea2f8fddc518e3d8faa99627b21faf105445f69d7dcd1a6040b65e7cce3178c51f528a788d425f8ecdab212be14fc91bd5a4e3789c26cbb32382902d9b1963779070d749cbc4df1e7605f840819f2c04aaf89c732f2d8613af1ac315297372fea288aed9117060c822207a42a511e97ef4f8b40f28699aa549077a80ff8732b5fc9df148a90f405bccc14bf7305266836566b7a98b24c5e49d1a3cc7174679086986e1dcafbcdcaa14df15a33a84994b10da9ad35840e2de1a2901f1380a383a741d79fbb0",
+    "Expected": "681a6295a8ef9d01674f5cc7c57fb996f96f282c4d370d7766beb5d7442f6c4e",
+    "Name": "sha256_240_3"
+  },
+  {
+    "Input": "a041da5d7bfb92edab74cd483edf9523ad4dcdac6c32fed6346cb5f59331547811bb32bee99378993e98f2c7faf1f31e062b323592118868d547e83b731d15ba2c7bdb1ee4fdf73600c2584f1db0b45d9ca27398ab74e21155fc23981483ef60d7aa8d65e1cdc86719548ee03f9c65fc764ab6f4c43630d5e79e8c474d76d8973a7b7bd1c7f1a985333cf1a6be5ccff2764b67f874ba8a32b208b51d168d17953958e957aa11d7309a7f9285032dc4ac3280f1b1e78d2339f64b5b2f2bd77aa24623b79fe2c9debab4212f4ff564983bd3dd131d4a96ce51463fda6784409d9fe1ebe31cf152ba398f7a2c8f8e92c0fa",
+    "Expected": "288aea9562cabbf57c716c4bce36488cfbb2f28f95df3dd40c3789e0a84e9bc2",
+    "Name": "sha256_240_4"
+  },
+  {
+    "Input": "d4d27ff9d03ab9120ac2adfeb36b070015f0e90782255ddc9111704c5fb11177f08e303fa1cd740ae7a944c63963253c432dd987dce16c2bc77e84c845f0afdfc66d5291311c7cdd1f33e5365ec0689608b3569427a8f6a9cd0b94b671472e664f76c14700596a5bc3fbb64dcb28b759bc5e881554a7231cf02fb1e69db2a0064b718a5129659250640e333f4567043ca749063e63d87efd86a9995adfd3b845bee1ff492295494274d10bd521c6ae565b2feae0e15604ee24ba0f656ae7b045708891f45d7bee38fe382820260061e212c6cb9a8572b4d1854f3ab09409b05a86af8f9e88c6ddecf1faf98e13bedf54",
+    "Expected": "ccf23be6ba7fe4ca9c550ab77344c9146c44c5259b7956e39b788409c62c5f73",
+    "Name": "sha256_240_5"
+  },
+  {
+    "Input": "91d8cfb766a124b541eb4bf4fdfccd5d85ac0f94f300b004c7f20aafcfd9129d6c2590749504a3f08c4cc708fa301003b1ce5ef643fb311e2577a02cab05b5ae8a7d9eaef960e43f7f21d21093e64c16fdbb634bc0f99c5795f3c4d6a0efcda7f71427f1eaa1c5411caa6cb05ee3147807c05db137edfbddde801208919cc3d79623c188ecf5518a0880d91656b135ddf5e4695c01849259fb969183de385ef30c2403e081067c2d9b6b5522c73fcf20965c15d93b01901481b9109de39c78c41699fab70bcff72345a6333b44baac3b0ea6fd588db5efc5fb2248634cca683d39d610886b59eb3077fa9612c368d769",
+    "Expected": "75cace1a6790912b65b103fe604807b15beb81bb529e92671ed9fd568df0619c",
+    "Name": "sha256_240_6"
+  },
+  {
+    "Input": "deda78675bf7320dc8f1d2a86105917ac78e9edbc0328c4188d7ef7e396fa78cdc2060a3421c5a8336c80983c9a160345901a496c3a74fc5248fca081d099539bf698d8f32b6443751acab6bd89de7faaad3c31e6603240c97efdb3a49bc14fce27e4afc3e6d59d0f5871b35eb83b46cf15da6c326e88dd8edf84031f58e23f9f50d9b081818e0bf99185189607be06cac27c4bcf4c85b03d68dcf0294cd9b6dcc7efff04f143e2d038de153861da5e04016a7eb17fbe6365de13069d088b1a1b09f7772aaec487397d19c9dfc3d46b05bbe027e8d201b4a305070313f2258b009a2c3dbb4ee4f485dc60dfbd94a358a",
+    "Expected": "800ac09cd41235ed674c0314891c2b9233998d8bcf24651b3b3dd68d89485eab",
+    "Name": "sha256_240_7"
+  },
+  {
+    "Input": "7c62204c021f2d7b140187ee9ffdc4ceb955b881839f7e9279a327446786e6adff1bb0ee2d035488354511f1ce305d68d9b15c065497392e4b477a556ad620d44e671137cfd570d53590b7528f8ff680c8a3613c26d7ec6fd6d4348188b98ab51233c4844b91988d4a762daa7edc8b4a9e2a72eff2ec29a65b417767e7090b73c2fb530de6c8f4e4ba30543946423b1228262480327dd5c232549c5a55047d925465c933f2b29c5a574019e2edaf3c987b9aa7e0bfaf135ff24720773ccd1e0a46fab6d678d91a14de137061e145fb9dd2f8fefc2c2fed3ecc25e2df9ca7719828e44293232d81c43abc830ab1b7db1f",
+    "Expected": "cc86c885f56756ab05d85ccbf1d36e7bd3fb96d066bf6da3830e5c584fed9897",
+    "Name": "sha256_240_8"
+  },
+  {
+    "Input": "c6733c9bb7bd195622b96c4181e8c8837d1912fbadf77d6029f7fc44d793b4804dab06eb1fe94964001fafc70906a1e3f385233d5992091687d8e1a9fc129b42410bb66334c677397d04f59eade9630463065cd7da3c9d50580c7d66bbaf487d6fd1104a1b4fd2f3f582437d91cf4e45fef5198951d9d2e894bae7897edee6bad97a16fc5b2c70829b15f73615286eba334de1f520b5f0f6a83d2578399cc0b3a7d7b74ca4329d3f8280046e2ff892d955066a2b8e19b4fd2a96feb77a53e3f9bdbac08202bbe5df1229e99c76c1727f7789e0f8c2002f0a2c195bdfc00acb365f969ccadeb6c7b8934a52bfb3caa1d1",
+    "Expected": "eba08317c55dc78782ec762d3566d873d11d924113a67b17522ba24aaf16ef3c",
+    "Name": "sha256_240_9"
+  },
+  {
+    "Input": "b690a1ffdab8557ad1637e57dfcf558843da827b812ec6ac23b00208cbad0f2e8b3a32434aa61dde029683c34c1ab190b38c85425f5d9971e8e675ae10ea0eb6760880d89cc54863bb2d0b62801594a33c7a8f7bf434ce5e63ac9365448da8663745f66689b4b04968f9b8b1b680589317b0534788508b8b288b8efd1ff984aa50378d70d92653a1102e0d280f66cca551f2e2bcfa6ebf84d3ad83c57257b9032e5d62a8663ed5d77afce00f33382bc6f5861a7c1ea14202008e490adac53c95a6d4b93d5ec8e42a8c7a9b6cd070fa1f6d8b15ec8908bfe008414757c0c7f79b3079f9db86d91ac3ec8f38ae2c94d48b9f4cf49b8e60378e",
+    "Expected": "a818ff03588fb82a71b3abf312df6c42a8321bfa3d9d398d6ef82cd35f58a9b3",
+    "Name": "sha256_248_0"
+  },
+  {
+    "Input": "4bd91ae4104440cb5379e9f29044efc7a70d0df5d2b7a43cf4723e85076d48389c3fb5a5df16b6bc6f7a69ca701632b1159677bd8a6f7bb1c8c1403026d0e011312b261080114b7a80d1334cc059455b3a8e1b7ae857fe58a632938a6df169fb64daa55d2f874ef7629d5be41dfa0d50827c082333f0fca0c3d97498c20596a7de911ac7669c208060f7a4be634d0ba9fdad8cba66d5cb3e283a4da7f71bde54d4b7e28b2b23e2eb05d8b025e77e15810625d71faca6d6e5e33a05468296cd6c087194ca304d279ab5ae9af5024fe3f5877c969ce8ec783cd402b71c1fc5c3f3a4ed9edc73457a27ea427f83a784796e01b7a1451b3305b0",
+    "Expected": "73d8fb52c35235f2c273de03240eb59a6fede86200b7cb1e83ba07d4894ca499",
+    "Name": "sha256_248_1"
+  },
+  {
+    "Input": "e35f14c9daa6ea6b190dbb239e7fbfba6dc43fd1e674ddefc17ff5144eb1f755310bc47acb3aba7eaa490ec104ed9b2985f65c7347f69fdc67b76f6f43846a9935a1160d1e43182e351dde3c71ce5bf166c6fc49f47c10a5d6eaeb69dc89ec4691b88ce9888e5dcfef70d6f960a456dbabc792571f2a98746b7d833e7fab98505891f691ab998b2474d0c60160409094fb7fc9b1a8eef7c992c285fe620e00e83e82cc1261ac3864266379b4d518e25c05bc492a8946b38b8a64acf47aeec4b8f3c40adf95569ccef8f383598c71abc6f6180f4f7cc70b63d6e45125e1d6ebb8a2a1148f1ba719b2da92c418fd137efe21a44dd4cce013ab",
+    "Expected": "2446b78d853fa8e3f093c1810d615d94088bd4531f1d3cc2256af569be089d09",
+    "Name": "sha256_248_2"
+  },
+  {
+    "Input": "36e57d97dfed9299603e472024af6614cbac4a6c8848b86281ce157b48512b5a32823e63d57a62c3fec5d6167d7777169348cf81ad3eab5153f8f2f18fb5935c5ee5e3a759f9b5af9cbce3c9e2571d08aa8a6cb0cfd213b00d9fc0643076808690856d52b8a0c67cda609e1c8fa42a993ff355a70d44dfeebc71a801daa36acd437daec5d7b645d1d21822931f0dce0b402d3cbd3ec7334142a354c2e2e889b9be8483e507a5563abc5f7f5d096247ababa51852724ce9ddcc6acc7ab6180beaa1cda97dba94b4ea2a1937f352614b411f68bc72b633e33c49835677003d0d6d2e5c60fc97be3bd93222b41a59f9551e91572ae00582e1e4",
+    "Expected": "c12bae37e2e300bceca0b32f96e3d623c97f051f9d8d2bf5b606d2cfff749447",
+    "Name": "sha256_248_3"
+  },
+  {
+    "Input": "1989ff5f8e2cd1ee1a78f55c2b28ecb4eec8f817c3232a7074b0e887d27d9052d670fe83516feba2680042605f9fedb17431e5c1fe5f8d38c759bc48e8207695a3cdf07d4c1fd02f1009088539085da164543b5a100abef53edd3b30c0076e79fde476f9499f9dfcc97fa1125a2af81bd474e755f6ce9045baaed65c80f5a686547089e8cdf4ad2b7c2ce7c255cb5c73ba1ef4d0f593bb94d2c9c46f1ca157fa2271268aa87f4ac26ab4898b46bb91cc976c8775b0eaa1e4aa384d222efc476305c7ea2d625cf5c67ea4368d7a9fccd1a9b865aacbf71fc622ae32fed1c9b04bfe9097cc08870ff53564279e61c814539db274233c46caaa",
+    "Expected": "ce3aa0d74bf1b174b4b1de2515db25b919b6bc1496418c5be48fa70f858ee2df",
+    "Name": "sha256_248_4"
+  },
+  {
+    "Input": "9c99690fd00fcbfa4eaaad7c41f8ae84313448c787165f65b83fb1749fad2e87f7e84101762d379cb78d86614d9636938cd23e9dc00047b84ac9f9ed46ae5aca33af9ba1c0fa5a2138d4ca02b962fd1d02b4636114ce1997dba326c3acf93835ad988749e796b71051d779e6aba77e147917496119b5e5cdab300ee55e90ac046dbd772da788dacddf72c559d9378b39507987a9774301b0228c20c2405e75a2a7feaa303e190a8ac1d58d4c4e050244af943a231fba23f9275b22db781d5e8fd07f36788bc1219c4b4a13554c28d92a381adae111b2657324efebbcbd2b935fadf1a96e53330230b86873d3a87f7b1533c07e3444f5c715",
+    "Expected": "a4e6285aa0807d92c2a9bfc69d7f0f947cc56818a62149fdaa48c66f2de2bdcf",
+    "Name": "sha256_248_5"
+  },
+  {
+    "Input": "ec69b95dccdbf193d9ee4c51615c0b7be5ac6bed3f2559f0cb2755c634839ce7a6172057a0b0696ed9a96d01e30feb023fb521558be3ee76eeafa11a4e2f6f4031e2bf1816a84c190eaa850ecfe1a9376123e0d0732d90ac3537668f8f18b9f732d69326269c450be4dd24b5afd6668a97a3fc3242ad7f15f499278631f4483af4087feda4bd8205d96cd0bf6eee44c27a6669d7ae8e16c731849cfbb2324e1eb7dd8882b65098f1b8ff3aee6f9b8e818c8b2f457f7e01763888ff4f4b375fba67b81583fcdc9afe5f35974dc9b6310ee8e1c92031a49c08b05555fc0d33517fae5bf810acc8a8fd7cfa06ab4a7d395d6878ce8f952c9834",
+    "Expected": "46cd64c8c868b54cc0129a54a40dfebca63a2a10c5689b2ac6b7696e68433e17",
+    "Name": "sha256_248_6"
+  },
+  {
+    "Input": "60e5d1a81d0e943e9f3c65c2c25c6c37aa45b1104745cb8ec511a165ffdb7e304f5478aa3add4d7e0fc40f13b24468d57ca8dabdf0166eadee902cc08d11f65747ca073fc18203e28fd50c46bade91a13d6dc5a06ee62e5e89e0ae7ee885e5516ca6c2dacc36f6f3932a55faf43ae287a21ddc482302de0a59b08c5906142fcf4c31b66783e8839d128db1a106328916ca5d63c0b5722642febed26f00a89430d52ec3eae25a019b3222de61a1529ff4617fd90732e39e96618cc10642dcc5084c882bc48864cda5d45665afb6a864893e389511a0f7b2df74c9e45a86fb69f6bd79854e3a88c206ff4e117af03f1dc3bffe30a61b31a1b4",
+    "Expected": "30bd8bf556516da0ffd9d12735bac4a10e3473fff5afd9a269d3511d338683aa",
+    "Name": "sha256_248_7"
+  },
+  {
+    "Input": "c6f737440fa2ff6e696c1b4f78a58ff228f5fd09c2c1819adf8e6d0e0f4e4681babff46757edeff3839e9691888c13221feed8e00622d16c99cb9649ef795ff70dd9d0d00310f43527dfc1ca91575dc6e6e61390ef88f20591570ec1fe71c3ed769ee8e234c7cc7303a4cdc065717736f342ca90b9c22a85a3836a2892231ba5183004674b09e8b4eef3e3c8d35e98b4a83c5af2f9d10c06552ea7d1749cbfa7574b238433c1c0e4788efd0cafeffa57f46f1dc9bde6362bed2358cbbe2a5f4bee8e1f697e8e80f5689ccdfff553754d4bcc88d85a5a8a29dfad37ba97ab3a5defde4ec356146db8d10f33bfb36ddd370174d182a90fce52",
+    "Expected": "09d6d97916f5781fda8e5de45985e9266c40f8473c3fa5d8021fb143a877678b",
+    "Name": "sha256_248_8"
+  },
+  {
+    "Input": "a6cfa4755484c8a9109cb0a0e87c2182f54aabd1b09eac3c29d5d818e62c9791c320e01a3164e142d9804e9caa7f96b4c3b76baff38ee2e6be92420ef3d72e09baac09fb3e306e09cf84a31307584d6c484597dae47100a2971c8aad41e401ab6c49dccba28ef26acf4961978e94e633b72c581ac03621e4ba349379e29dd67e1b3b30a54b8e4a481c559ca860f46f62d5f3a3469c15875a659ff910eea5280dc5c24c542516053637a5dbea576a94a22acefc902e56568ecea893b979ab54b8c7afafce1a7774f2426485d6881297cbaa4df5780929682912ff32d44eb442a711250875d86a401d0dccc95e5ee39bec71738fd812d487c6",
+    "Expected": "3bca006b16fe84783d9e8c39dd8067b7b47b3d56802da978ae9a0afd31dea83a",
+    "Name": "sha256_248_9"
+  },
+  {
+    "Input": "6bc13ed6e1498ce5daba3b464bd1e4be656af19e1bfbb5199d7fc3820788351a666b820fae2459b98f9bff20275a3c96ddcaf98a78f3f5fa4a2c0a26cea7935263207816e77f4343b9635c342b1f3efb1743922c25bd7674b959e0a3a9cd2ca840a9181633a146d7f307ca7606cd45b8e721c46b955a6989d421baafd8e40139063180731170feb05b5334ce614925f8625f5f8ac0c862c93cf4a0a5a8cf1c77662ac80797c633d8b9c8907acc2960ebdcb5bdad82d9fceb4411d5173b7411fd102d42bdf3c37fb089bb9f0feda659797b2edfd5680ff19b6cac406967019add59401af15d9b83e2ad68cc8e2ad1508391516ba0b26fcc5ec6eda8b318a374b6",
+    "Expected": "e0515ca2e6daa6733f563207ec287c9c0377fbad1e8c09905febf8186d2e6a1b",
+    "Name": "sha256_256_0"
+  },
+  {
+    "Input": "9e8b694c5ecce57179d9d785b8c6a896889a9d96393345c9792762f28ba22f229c351c585d1920b8cfb89a5bcd72fe041b17f7bd091ba505b287778b0be4e87c426ba2792c4af254171d8f63d1657c58e7edee32bc628bf49fbef7ef5d1c1e54ec42da11e95cebbeed0ebaecd31be24801fdec8b81f4046fea52f553c4e7910b421779e7d05791afca220a56084021d2099ecdfdb779c7d8170cdcdfe4362507dfdd8996780460757702e34ad98f5f64a8c1e0bc8851d6c97f02749b8f77cd03df1b9ab97547bbc2a7c2e7f91ba3fe911816d3f898664be0cc727e2743ebfc43f256ff23b38b3b986a62074c5a3e05e86ead9431fcdeb67512f6d502fcefe3c3",
+    "Expected": "ad60e02167f52b6f7ce3be3cd150718640e6dbb2b02a5044aaba69c73c913ee8",
+    "Name": "sha256_256_1"
+  },
+  {
+    "Input": "33d5885700a00a94f5b1c2393e2582e5f055b2f4c6e1793585b318194dce47edc01b3c8bb0acb17198bde9adce3b0f7ed4cd8615f837aee928524b0984c99d0eee4d562d4baedfb5ca7056e66d5467067250c199f71824d139f2a184fc1a59b8458f882b63c99ada33d8215111a6df21c8f7424eb2fe9f429256201d099413c154c7b6989ed061256686ea3aeeee04673d09a649b7c568622aa6df0cc14aec4c804d7a35e5731b111a6904e0998d90ce86cf612914152fe3d2fca0201a41166a21ae2c4d259530d65da551f1fc34972949cae201edee295398d22e2f55338ebf6f1629a801db6bb4066588ed79f75223120728c3a57f7129d88f7f8771492233",
+    "Expected": "fb1f0a7f4e57a5e29b0cf2cbf467eae979cdfb3a7475c7c851a8ca5bf32af6d8",
+    "Name": "sha256_256_2"
+  },
+  {
+    "Input": "90c8b1b074059f12b049e5693cecad48f1586676ec47389c1235d3dfd8ee38f8fe80ddbcaeb784e24975b9a42801c89bdfb842cbde5fbc0c3d70c0632cfcdab8a82f806609ce2c88a9060de818bc5987343ec3e0a3f8710e8a8fc98e375b3ac41aeff13de7bcc4bc2ac1b37e28ce466805757dda29c9c743eaea9da33f47f4fdd9d010ccf3c6e3b19fa065fdb3cdf7a22c572be884c05047a9f1e197b32c678bc4984739882bd2f882e12660815b96d2af7812d7ae87f5be034b88e9e04fa2897b8931cd84afebdf2937907414abd6efc49dedae1290f82cdbc324d9e05df083e7f33141d383a1a927b7645656ff7a5795901a997e27003c5672ae4fbab4aecf",
+    "Expected": "83680c43080de0652b3726343e4db7f5258930c168686be0cfda8303f7bcdd57",
+    "Name": "sha256_256_3"
+  },
+  {
+    "Input": "e20b7d8204f77bbf7f1e7b83ce61ca390e5f8253ad4121335029f26891f15c02fba4674313a9727aa4b733832a0e06666d3e38184836edf786317de9dd055cbf0d8f4e66faaa8ff86c457ef853c553a7530077b57db42a3031c2753a71e13503dc0c4d0e34d8a16b3bfb51ffc9b3c353817e8e357c608b5075c173204963606e72625c28856fdf23e27a199d23380ef0a29b8a3b1178f1e3e7c069b549392734e4e31f5b6629463311b9d3c8333c33c5b2e79761ffff9863acd9d636e1a9586a6f792cb4120fef101aaf7490540bcc3fc3eafce851ff0380349c3ab56cb7f3ea03f256e58f60307ac1888a1b0b14b56c7435213e271eecc79b4a6f88d102be4c",
+    "Expected": "ec157fd97eb2de2bd0f8175908fda0e7c6cbd7e536c7adbdae39155d10a73f2a",
+    "Name": "sha256_256_4"
+  },
+  {
+    "Input": "a714037bc620b9dc5892702ecdb564920a2da1f1e89c0be46330434ebb2e3ef9eb850f01feb55bb99e4accee0aea8fe6ed0bd29b2ca942ffe09456733aff10eaf60c96e121d2770b3bb641cca669c5a1d43065f023123645d0840784af45050e2b373fd7e5806d227ca1f49ab0a7f8be2b5950906c8974de9f2cb4e13ed20a9a55598188c09ec4f2d38454b2852b037ee19ecafc262d2e2aac464a3ca31d725bbabde7f3fdf9fba868b5eac61337be0d73517ac3f06c39b4eaceeb27ab6311db7340f1ca31ebd0b5ffff35cce9d1699ccfe8dbdc061960ee32c9c98dfba7fd5f5ba1635cf82b25b2d7e466717f5716c33f5f3e826bdedf19dbc1d95ff0c8052e",
+    "Expected": "77936e5518bdc88d76d3ec46b44d71821c766539348a1d9047ad980071e4e3ee",
+    "Name": "sha256_256_5"
+  },
+  {
+    "Input": "a8adb25e930c79b97ed53f28c1da7d288bed69e3e1780592fadb474461aa2a821a0a832e5bbdf897553c1aed35fab43aa3f4510c1782115e14e5d56229de2dff83d95a7c25ed89aea540b9636d06f4f2714fc8588861c9b97ca2dc10640949429b75e0582e9ad7aa4a02ed5ffa22e55570c9f20e6a24e2186e8a2a2f838fa453ce7585cba0d94dc27d424fb9401ae0ce572d2b2eeb7107827c97984115b7648f3b7252f8f3cc6341d490c5c4464bb36e012f1b05057f405aa907ebb2c983f64631cf499a2a33a8c3b9b2942989948edb8ef86a0f2aabd98d52c154012d37d1aef10427f6e461e7b63b781e116a4d5136ddc79ff86b71fa754f00c797c035412b",
+    "Expected": "ffa7a0a1e6ac448f29b6bc0f4fbcd21cf3f12fbb3b326b7ca5685cbe47b7a5c6",
+    "Name": "sha256_256_6"
+  },
+  {
+    "Input": "5abee62da4e3318bf54f5b248b9196066deb9a1ed907b21a9dc768e45208c0566440c89f8b10ce15806938b7ad65ece194d2fa3cc8d7d5591bc1d52d010896af15011245e8f58eb2bb27d03180f7192eff41d6fbd8ca323e5adf6f8ee09c2b6f43f1bb26469b778edd10127e634fed4d749e25b41d8eba86eff2c068c33e714f67df3fd7fb69a7852aa49fea9c18de2c873e33056b6765bbd93accac24cd0a70a40251ec7a7e9f7cc29948b122010d9745752df3f4a9c67427a8b58122ad4e7ef37851e6c4e499a78094418b771f6d80697996eddb1f4185677e2302f34f5deae03e5eb477506c397bc1a5204b30872085a36b65b7a8df3e0e187f3022736329",
+    "Expected": "e8b09d277b9b825f230abc2b2a0e9579ed0f10e1f48235bf14de06ecca3cbecb",
+    "Name": "sha256_256_7"
+  },
+  {
+    "Input": "008a2c11820275d2aacf021aab55ca2838a6c35d10ded827de3aab2b0d55b65165cb04110bbfcdf00616c2826e253f61cf955756e94dffcbb6001f59ae4a93c1be46802b22d6211a607f9abb879407e08f8b9bc958c41fdde4c116b56dd869693ce1bb7cf7d7a55f0624bf5c4c35327b178923d88be748a9b079720c27b500e6c1f3af22a03c35cc6f631553a74d5fb0969133edac608688c8647070142d083ae2b4c64b363efef0c5525b0337bf407879755f060af451075f4345dea7e681a313bb885e6ce5f1d6561b5a226475428e9c170995d45a8accb868f83e56d38ca34c85e47ebe2c26e0aa25661d3353b5d88c632182aaecb35303d8d47f01308a0d",
+    "Expected": "d4fda66315b3e7b1a54a438ffdc0cfb1b649ec1c691177625b66e43bc5ac7d1a",
+    "Name": "sha256_256_8"
+  },
+  {
+    "Input": "3f0f3e84ae75244869a8e9916d88bfcd12218cb988ba6ed24cea180e02f7d53f5bc589e7d89994400c511789cbcaea19b077e0b02d625e549bc6f2673ce401287b4bef9b211d073c24c230cdbaff37ea14c5620b4c3f880f7bfde24472107d112c3d2a0cba111642a6354c117d494be805cad5b5c486bc47906a2d37a9cd9f85fdba019e5f85283d80110d618d6a841a72edc1896883baf0ee0d32f947c0dbc0530ff74626657262fb49460b2c6981155871f2eb5562581a74f968233c3cbe3d62f2be454a7a2d9ce293eaf81f0f793410c6e686ac03ee71f0fb37ddbe16ca21d182ac912b005e90ab81d4f2a906da8309a69576a8afaa160fad2540ec049913",
+    "Expected": "5ea25c33cbb9eff9db37b47091a8f699ee1eac323a58666a2d6cc33c219c887b",
+    "Name": "sha256_256_9"
+  }
+]
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/3-ripemd160.json b/substrate/frame/revive/src/pure_precompiles/testdata/3-ripemd160.json
new file mode 100644
index 0000000000000000000000000000000000000000..44349ba4b24c23134e4995204b730a8e8aff50de
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/3-ripemd160.json
@@ -0,0 +1,1607 @@
+[
+  {
+    "Input": "",
+    "Expected": "0000000000000000000000009c1185a5c5e9fc54612808977ee8f548b2258d31",
+    "Name": "ripemd_0_0"
+  },
+  {
+    "Input": "ec07171c4f0f0e2b",
+    "Expected": "000000000000000000000000a9c5ebaf7589fd8acfd542c3a008956de84fbeb7",
+    "Name": "ripemd_8_0"
+  },
+  {
+    "Input": "6f0117700c040e0f",
+    "Expected": "0000000000000000000000002f37ca2feae47f1ad999fc5d207034fccb77489b",
+    "Name": "ripemd_8_1"
+  },
+  {
+    "Input": "664a82ab2e5cadf0",
+    "Expected": "000000000000000000000000df0aadfcfb8926f2ce97bfffcfdb3a6f3524249c",
+    "Name": "ripemd_8_2"
+  },
+  {
+    "Input": "2d2779384a6a2847",
+    "Expected": "00000000000000000000000043dfdff840fbf0e5ca3670177339210bf1f4bc23",
+    "Name": "ripemd_8_3"
+  },
+  {
+    "Input": "b3c940fe79b69664",
+    "Expected": "0000000000000000000000009d6f287ceabdfb29e1f8726ab458f4fa2042d45c",
+    "Name": "ripemd_8_4"
+  },
+  {
+    "Input": "89b527955de75991",
+    "Expected": "0000000000000000000000001dde2d4b81772ccbab6ed1ed210fbf5aff8dacb2",
+    "Name": "ripemd_8_5"
+  },
+  {
+    "Input": "94a9ac69a6ff58b8",
+    "Expected": "000000000000000000000000ea1a0f2ccb7afba8b140fb895a22f0261459d119",
+    "Name": "ripemd_8_6"
+  },
+  {
+    "Input": "d99e7b1084f0464e",
+    "Expected": "0000000000000000000000004ea3ca1c8fb3206a05e83b5b3c1cf6f310a138b2",
+    "Name": "ripemd_8_7"
+  },
+  {
+    "Input": "d110aa42ed72703d",
+    "Expected": "000000000000000000000000af0e7fc2b7dc136d0b9b2e6dd85fd4151a760b8e",
+    "Name": "ripemd_8_8"
+  },
+  {
+    "Input": "ccae31f1bea28a88",
+    "Expected": "000000000000000000000000e58edaebe3b0c40736b82a80b908049b4a48f68d",
+    "Name": "ripemd_8_9"
+  },
+  {
+    "Input": "e607b49a47e9ed24d864d6582ea29485",
+    "Expected": "000000000000000000000000ba796435094f320e4e4eddb7a841633b3dc9788a",
+    "Name": "ripemd_16_0"
+  },
+  {
+    "Input": "4d0e25bf3f6fc9f4da25d21fdc71773f",
+    "Expected": "0000000000000000000000001828f6dedcc424d49ebb6bf6b4e21c9f907b6854",
+    "Name": "ripemd_16_1"
+  },
+  {
+    "Input": "1947b7a8a775b8177f7eca990b05b71d",
+    "Expected": "0000000000000000000000002460f9e4b03211048fd67b1c70ca0d6f116ccdbf",
+    "Name": "ripemd_16_2"
+  },
+  {
+    "Input": "2b062a0f245febdba0fb1811d53b22b4",
+    "Expected": "000000000000000000000000725d6c93ee52ff3b86592135244a83ae623d1ec7",
+    "Name": "ripemd_16_3"
+  },
+  {
+    "Input": "246866eb1318f56a162be6bccc53bf19",
+    "Expected": "000000000000000000000000d9e5597054d68bcb6550e9661e3460967ac5ba70",
+    "Name": "ripemd_16_4"
+  },
+  {
+    "Input": "973f40c12c92b703d7b7848ef8b4466d",
+    "Expected": "0000000000000000000000007d1c950022d27a958816844d670a02c1b8877d3a",
+    "Name": "ripemd_16_5"
+  },
+  {
+    "Input": "40823aad3943a312b57432b91ff68be1",
+    "Expected": "000000000000000000000000b7d9c1a356a255bac71eae61acfeebbe000306b7",
+    "Name": "ripemd_16_6"
+  },
+  {
+    "Input": "ec40da9845626890213bd5ba6a195004",
+    "Expected": "000000000000000000000000d29f6c84e12ceac57724be6ed92aa9ce44199cf7",
+    "Name": "ripemd_16_7"
+  },
+  {
+    "Input": "2ce4c74efbdd6e9d44f1718ea9326e0a",
+    "Expected": "0000000000000000000000008a78cef6f2e096770c316456fbbdabd7eeecf5d0",
+    "Name": "ripemd_16_8"
+  },
+  {
+    "Input": "4c51f97bcdda93904ae26991b471e9ea",
+    "Expected": "000000000000000000000000c4196d02a1faecbd42c5345a2c611a201df0dba0",
+    "Name": "ripemd_16_9"
+  },
+  {
+    "Input": "942e2b5b8ed26055da11c58bc7b5002a9d615d28ba32fa7b",
+    "Expected": "000000000000000000000000bf2cfe18c2312811fd8aaeaa5e04d86656c83b2c",
+    "Name": "ripemd_24_0"
+  },
+  {
+    "Input": "deb712d8968f93f770490134a8c2c49ee93a25d324f0a1b8",
+    "Expected": "00000000000000000000000009bd9ea3829a5130719ee5241d81b55aa7ab7033",
+    "Name": "ripemd_24_1"
+  },
+  {
+    "Input": "8964d5867927bc3e35a0b4c457482373969bff5edff8a781",
+    "Expected": "00000000000000000000000071895025db48be1d219433985e6e9d28e090caf4",
+    "Name": "ripemd_24_2"
+  },
+  {
+    "Input": "d65573e07fd87b89edc1fa2b4da52595da8f82ef750a6db8",
+    "Expected": "000000000000000000000000305ffff5b85f013dfa303682f2384b122c6d2891",
+    "Name": "ripemd_24_3"
+  },
+  {
+    "Input": "3c416545108bd2fd2f37d50622ab3bd6787c38b944eadbd0",
+    "Expected": "0000000000000000000000009a5671a4b1185da6a4edf23da97424c46936dc6a",
+    "Name": "ripemd_24_4"
+  },
+  {
+    "Input": "3fd3187f450571740f6cd00e5b2e560165846eb800e5c944",
+    "Expected": "0000000000000000000000008d36dcab3b093aa677224ceaa6e66ca4cee72e92",
+    "Name": "ripemd_24_5"
+  },
+  {
+    "Input": "8249f4c911826079f46ce1b5ad7e0bbeb788d8d517e8d5a8",
+    "Expected": "000000000000000000000000485347573dbba522255cf834aeec25317c278607",
+    "Name": "ripemd_24_6"
+  },
+  {
+    "Input": "35b7ed16535df6f3aaee7ae2a237e8e53560c79e7baa9adf",
+    "Expected": "000000000000000000000000b45970f570ab90af518747998ef6b03026aa3e29",
+    "Name": "ripemd_24_7"
+  },
+  {
+    "Input": "9c00a0ea4d6f514e7a6832eb15cef1e15796bf0b6abb51ce",
+    "Expected": "000000000000000000000000c73bfa3087f3cb3bec1d20809a8e5d6daf665a47",
+    "Name": "ripemd_24_8"
+  },
+  {
+    "Input": "626b58b6da9ab6d995a24c2eddc6856d74b3f318fa9afe75",
+    "Expected": "00000000000000000000000075c22ba960004d181977295dc3699a23b6b78af4",
+    "Name": "ripemd_24_9"
+  },
+  {
+    "Input": "dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c",
+    "Expected": "000000000000000000000000f46b83b3a0b7efb805c88b82425a8c1db412ba79",
+    "Name": "ripemd_32_0"
+  },
+  {
+    "Input": "71eae4c9cb2aba83032f67f084857a02d85023ece5d39dbe02ec4b77ca11cba1",
+    "Expected": "0000000000000000000000007e10fbf757f1dea526900d2127fb36c5d4b8c79a",
+    "Name": "ripemd_32_1"
+  },
+  {
+    "Input": "bb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108",
+    "Expected": "000000000000000000000000ebd756fef9205a57baeeffb555f937738cdb9a4d",
+    "Name": "ripemd_32_2"
+  },
+  {
+    "Input": "285b4dbf34ce55544c00eebf7c51603cc3d921e9bd8eff13ee00dcdcb84109e2",
+    "Expected": "000000000000000000000000185ef17ffcdc124d1b755e0eedc1e8984a098f86",
+    "Name": "ripemd_32_3"
+  },
+  {
+    "Input": "fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f8187672",
+    "Expected": "000000000000000000000000dbe7518db6ed5b192247dcb67e4f89c88707581d",
+    "Name": "ripemd_32_4"
+  },
+  {
+    "Input": "643424fe335e160cc3c2e702bfab94c0dd20cc1fd10295a1fa3d589dbdb4f4f8",
+    "Expected": "000000000000000000000000538defc203c5143abcbcc6ed148c7bece634edfd",
+    "Name": "ripemd_32_5"
+  },
+  {
+    "Input": "b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea",
+    "Expected": "0000000000000000000000001b40debb3ece937e9aab18a0fe104f7d0994d595",
+    "Name": "ripemd_32_6"
+  },
+  {
+    "Input": "a99147f8df36eabec4b8963e324f46296a5948edd2d6fb02d11e208918ef0492",
+    "Expected": "000000000000000000000000f9d5d5d30a529ebb832aac7af27ac46a3e234245",
+    "Name": "ripemd_32_7"
+  },
+  {
+    "Input": "3b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76",
+    "Expected": "0000000000000000000000006f38651179753f6aefbc06d9887758604b20532c",
+    "Name": "ripemd_32_8"
+  },
+  {
+    "Input": "d146ced7db0c85069fdeefaf51290db84f08501dea3c9d33200757e29afdc133",
+    "Expected": "0000000000000000000000005e22dde421248a1091dc8753a2f51cd1184a152c",
+    "Name": "ripemd_32_9"
+  },
+  {
+    "Input": "dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257cbd22a93ce96582ad",
+    "Expected": "0000000000000000000000007f94dcab1241a64e56bc386889657272db8e3ec5",
+    "Name": "ripemd_40_0"
+  },
+  {
+    "Input": "8fd1729190cc10c625a2d9b39a34ca0d0562330a9f5b074a7010b134989c8368c7f831f9dd9f9a89",
+    "Expected": "000000000000000000000000ae3456ffd25955007726b7f313bd88844530843f",
+    "Name": "ripemd_40_1"
+  },
+  {
+    "Input": "0e2c1435681107414f2e8637153bbf6a101e5ffee2dcaa870e6e5881a38aac1278b90514d63a99c5",
+    "Expected": "00000000000000000000000052aa724b010e439cd2ac8e3b5143b49eccb127b8",
+    "Name": "ripemd_40_2"
+  },
+  {
+    "Input": "7514f387ba6f7cf194c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a659054",
+    "Expected": "0000000000000000000000002d1f82be9bdcc57ef69948cc67abc573e7b2cae1",
+    "Name": "ripemd_40_3"
+  },
+  {
+    "Input": "ffe0c7e78bf16706968ffcb92694926e13418ab6e015588fa2bb85d270364c28b3682accc3939283",
+    "Expected": "00000000000000000000000065c1f879fdc28fda70f252c73df098d74d596e46",
+    "Name": "ripemd_40_4"
+  },
+  {
+    "Input": "b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746d9112b71a4ca578dcceb1e9e351ddf67",
+    "Expected": "0000000000000000000000001f8ede3bc5fbc8ed3e2ba906c5536ba4ce3bd88a",
+    "Name": "ripemd_40_5"
+  },
+  {
+    "Input": "ce6d534e4a8c627da1484b14a8c9e28b07f80a5e502f63375d672379584e11e41d58d2ed58f3e5c3",
+    "Expected": "00000000000000000000000016faeba94f4758a2e6ead3f585a23d5f882bd9b1",
+    "Name": "ripemd_40_6"
+  },
+  {
+    "Input": "f67d9ea1138493cf4c3ffeb038656d5c8ed24e0e487cae5dee2ceb1ceece982bb1b33a53a2c9587d",
+    "Expected": "0000000000000000000000007b65b562cddc71fe0409172ecfc2cf51a5daa643",
+    "Name": "ripemd_40_7"
+  },
+  {
+    "Input": "bb169138f94093d5c1c6b253cc001ce8baf78858dae053173fa812d2d1c800da0cc12ac543bcf74d",
+    "Expected": "0000000000000000000000001d2aef1ea9b9489cd8c4aa7da840661d53f8f2a4",
+    "Name": "ripemd_40_8"
+  },
+  {
+    "Input": "92b6e30a5fb179d63d28c84563912db572f66da2295885b9e40608bdaf3e7764358a64a920cbb33a",
+    "Expected": "000000000000000000000000fde14e4c764b3b48fab4f6a0e2a5262a4bcb26d2",
+    "Name": "ripemd_40_9"
+  },
+  {
+    "Input": "b4d571c7b3092e1ae11d9697f82ed83342814d7a297c4410d5121a37205547c55b9b16d3241080e05b3aeb07d381faf8",
+    "Expected": "00000000000000000000000089f619c210b905305895f9fbf529cd42c3456c78",
+    "Name": "ripemd_48_0"
+  },
+  {
+    "Input": "d411519f2a33b07f65e7d721950e0f0d5161c71a402810e46817627a17c56c0f42e0802efa9fb74bb3180421f9252948",
+    "Expected": "000000000000000000000000c48114a79786300b5357b40dc5389a6f7cefc645",
+    "Name": "ripemd_48_1"
+  },
+  {
+    "Input": "4e5e8261cb553d963f06fd97d4fffa966bb3f9e512311699f110a5e6ae57e0a7d2caaa8f94e41ca71e4af069a93d08cc",
+    "Expected": "0000000000000000000000005c983a64f34d58b4ed7222784782bfd192edcd9e",
+    "Name": "ripemd_48_2"
+  },
+  {
+    "Input": "a0822d15d5fc5555dbec1ebec46b763388d7374a4f397eb0af634ff9091fe7792a0c988d97e86dccaeb8bd4e27f9e30f",
+    "Expected": "00000000000000000000000009eb82a038c1e5f080d0296e2a5ea0e22e8063a6",
+    "Name": "ripemd_48_3"
+  },
+  {
+    "Input": "ad5d5742202cdde17d800642db633c5204e67eaa4763caa20b1ab9d4fc992a659b1d3938809118c9eaa36dd5c225b9e4",
+    "Expected": "0000000000000000000000004ac2458708b501e47b90fca466103e3c04cb30c4",
+    "Name": "ripemd_48_4"
+  },
+  {
+    "Input": "0b299c14892e0519b0accfa17e1a758c8aae54794fb61549f1396395c967e1b181af1d6da3cb5e89c8c77e0581371bbf",
+    "Expected": "0000000000000000000000001e39f2946de4d883d3eb18ed02d323bc8bcc7f78",
+    "Name": "ripemd_48_5"
+  },
+  {
+    "Input": "44e6fa3fcb31864094fe35b34c70f4d57064d43d6802ad4c3794705065f870263fef19b81604839c9dea8648388094e9",
+    "Expected": "0000000000000000000000005be85803f338af09acfbe376378534afa403f0c2",
+    "Name": "ripemd_48_6"
+  },
+  {
+    "Input": "22ea839e50eea41a9b3d096542e4d12880c982a98e6469947d76a0b8df66f41f686285a0e22f177fe3adbfc435e9c178",
+    "Expected": "0000000000000000000000008ce03fcabdea2539e3cedb38a090a5c50b57f5cc",
+    "Name": "ripemd_48_7"
+  },
+  {
+    "Input": "6752dcf3c11b723539789b0cdeb0647bbf9a3a6a2a2833cf45dbbe18cc7a0246d1ff53f889ea77aef168fd4038ae7c15",
+    "Expected": "0000000000000000000000002c80a02989204a69b8424d32fcb00a6453cd2abc",
+    "Name": "ripemd_48_8"
+  },
+  {
+    "Input": "3176b6724cf984632daf95c869d56838ab2baef94be3a4bd15df2dd8e49a90a6ee0eeb2ec30ecfb438baac023347c920",
+    "Expected": "0000000000000000000000006db2bfd198a8137f7ffedac6e5cc42331294b285",
+    "Name": "ripemd_48_9"
+  },
+  {
+    "Input": "baa12356ab04569aa3104cfde620d697d76db3dcb659eaf6c086be6b414a494dea4bd30aef8450ae639f473148c05b36725147a6a9ce1a8c",
+    "Expected": "000000000000000000000000dab467ffa1ef891ce98d06efaf8e854818494ddb",
+    "Name": "ripemd_56_0"
+  },
+  {
+    "Input": "cee4ab81332d1a69a32d4af525da7faf90d62c71331ee7c99915646de2449b3cb78d142b6018f3da7a16769722ec2c7185aedafe2699a8bc",
+    "Expected": "00000000000000000000000084fac446903991c7b7be8919adae625402e3f940",
+    "Name": "ripemd_56_1"
+  },
+  {
+    "Input": "0f8d4a9bb82f118d191694a644ca0d5e7f16e09114878895626faa93b9c8c5a35061073223f066e35242772385c67aaefb3f7ea7df244d73",
+    "Expected": "0000000000000000000000005d772fc094741da8797e95d64edeabafbc6c94ac",
+    "Name": "ripemd_56_2"
+  },
+  {
+    "Input": "369db1ea0b208792475450c4cefb21de11951fb8617d33132ce18755d99fa98440255ac05f900a48f396ee22209271ea0bda10fb5e2584e7",
+    "Expected": "0000000000000000000000008e651af8c80369e24edc7e5df02298b44b4addf7",
+    "Name": "ripemd_56_3"
+  },
+  {
+    "Input": "536e8bb1d00a0dd7b852b0aa653cd86c5b3ecb86d8ff2f39d74f22118262b4bca9aa52632448c525bce79a269f312539f0d3d4cf46265fc0",
+    "Expected": "000000000000000000000000414592fd4dbd13b023a55915436ab34ae79b57b1",
+    "Name": "ripemd_56_4"
+  },
+  {
+    "Input": "f69e093181f8b02114e492485696c671b648450c4fcd97aa4d2efa758272cb30d58ced16f2c60402b90828a69c211ccdce97edb797e4fa93",
+    "Expected": "0000000000000000000000009530951d5540b2c9ee0ff156a03f2d5209501328",
+    "Name": "ripemd_56_5"
+  },
+  {
+    "Input": "915b717562844d59623bc582f1a95fc678cf0d39af32560c6c06e3a74023c89cae49e9cb36d99776ee61f8c9b289f714bb16d2955e33445d",
+    "Expected": "000000000000000000000000c1761982010400915ff67bc6e8b6758b94059ba3",
+    "Name": "ripemd_56_6"
+  },
+  {
+    "Input": "09deb9575577abffd5c1c9fa11c36b86430cbb1f3ec10ebbe3787d0f5641d6d7fb96c810eda202ddce635c394249e55c6b73ce0855ad13c0",
+    "Expected": "000000000000000000000000d12a23162a2ec870321c87b4367d1568b2e7f735",
+    "Name": "ripemd_56_7"
+  },
+  {
+    "Input": "8ae48b1ac011526c0a627c17b51c584ac00eb20fe7c292f3ad820a074d8b3d8d24506612752d8677c2d6ca24f556cc4518c90b6549ada023",
+    "Expected": "000000000000000000000000bc8a70bfb6e12386d644eb88f7b671824284e5bc",
+    "Name": "ripemd_56_8"
+  },
+  {
+    "Input": "3913ae51079cf276c8d88a4dd5fe666b5b1f704ab6a080a8f661d7b30fb11bef70e15b257d7073885468a380862202b2d705a84827644b5b",
+    "Expected": "0000000000000000000000000d739bdce1a89358ced648cdf7ae32951b173f81",
+    "Name": "ripemd_56_9"
+  },
+  {
+    "Input": "d24631c0405a84635a6d0a6b4056606b288a2d2117823a60f7536258eddcd931346ce87c847376c8967cc18297e6007dcfacb6424e1d273930f38bb0e88fc5ca",
+    "Expected": "000000000000000000000000d5eea244bf61daa8ebabbce58d79fc96346be95e",
+    "Name": "ripemd_64_0"
+  },
+  {
+    "Input": "ab92e23d34352e3cf253d3d3af3c8f357f87d11c44961b5156131e18be3e385439a142c443a666499a880aa1cb9f523411bbc8e5554de099ab485b6c2c2e57cc",
+    "Expected": "0000000000000000000000004f7eea942f623c27c2478ce1fd079ef4ee5b10df",
+    "Name": "ripemd_64_1"
+  },
+  {
+    "Input": "8414e76ca876f6f7ed665e41a4060d3495771a60080e1d24686dc6963261a2ca2c01b7795c2d16b5bbbb1e107be36cc91b25130888956b0cdd344de9b4659447",
+    "Expected": "0000000000000000000000003eec23d5307a4ab3728cd334fce591aa0ba17350",
+    "Name": "ripemd_64_2"
+  },
+  {
+    "Input": "a0ab3ed63aa3a986ee84c20647f89fe21f2cdfc16df7a40a23e75318ae791305c712943d8795a6104f024b9701c70b09cdee9494755bbab0576e2c7f7c9d4828",
+    "Expected": "000000000000000000000000bf4b2e60518708be66e91215edb5b8ec0b753be5",
+    "Name": "ripemd_64_3"
+  },
+  {
+    "Input": "3efc991bcb6d9a7979ead865c3381709d34dbbdd9a97e5773d30ccd567dbad65d4d77f6246c57d398c57848db8d3f986c475a41a23d424cd3cc2b362c1b99f2a",
+    "Expected": "000000000000000000000000a81b027ea4b21509f4786b91292ee1ed0ca81f35",
+    "Name": "ripemd_64_4"
+  },
+  {
+    "Input": "03e3ac1399a8c2f89f379c047cd71ad3e782daa7e570b14ae39674af4615d0aa41776ed9d1029918af4c5113a6110139b8bd7f938caa204373a28ddaa51430eb",
+    "Expected": "000000000000000000000000593a8edd53ebe45c1a9560f4ba13ac5277212b11",
+    "Name": "ripemd_64_5"
+  },
+  {
+    "Input": "06e6cc85f948fec3cff4d774cc53291ff97a37fd265cbfccf2b80507ed3ce752fa64411438542922a7bac10806efaa633d31d37c0b223314a8b6221155b9c425",
+    "Expected": "000000000000000000000000efdb88dadcc853e21f4114ad1f317ae984154af1",
+    "Name": "ripemd_64_6"
+  },
+  {
+    "Input": "093e7bc0777fd54d93174649ff014849a9f5da50021612b6dc7591cf28d2dfc6e7002f41c6acab677a0ad023bad2a61b11c1b7221d944018b5ce60bb61e87e96",
+    "Expected": "000000000000000000000000902b94f23e746515bccce9c17f67f7baeacb331b",
+    "Name": "ripemd_64_7"
+  },
+  {
+    "Input": "f60c5d0adc91a116dbe009ab3b2855ca3bb78d2887ecb83233dd53d6322324b5c26e55f09b787c0542878e4d720027d9ea465f829a4e0164cf618c5d9cde49bc",
+    "Expected": "000000000000000000000000e47651b8dc2946932496127c53bf5714f3112c2c",
+    "Name": "ripemd_64_8"
+  },
+  {
+    "Input": "e9b759c4664442aaf8cafe94c55bb166054e5e6ffc5687d7feef4cb5e1e5cf59bba67cc47e38a129ab1140fbcf0386ddba2feefc919aacdce6059a27a1e2efca",
+    "Expected": "000000000000000000000000e41d7c56de9639eda08cb8d6063be4084f7f2114",
+    "Name": "ripemd_64_9"
+  },
+  {
+    "Input": "b997f147c4f531fff16a7308b47b3cbdf57fbb76333b5406eafde39539d55ccb705fb566367d9fc142c4194b0525c16672b843aac1160f9056ebb115e80d377af4aa00cd8b145125",
+    "Expected": "000000000000000000000000ad3cf9d66d73bf4eb1e175d52e1f2e917214984e",
+    "Name": "ripemd_72_0"
+  },
+  {
+    "Input": "2ca020bf6da2ba7d24f025b5475f7d18a4bde6a25fcae70af7bfd990cc4dac62a0d730f56b4eb1c1ad77ca9cd58b089c23c2f6efa00b7fa49d77c76b130f49b38324f7ea761089b6",
+    "Expected": "000000000000000000000000068bcfb08abe189865006641bdec4b97f4f44e55",
+    "Name": "ripemd_72_1"
+  },
+  {
+    "Input": "a5e2a2e6f558681de7b4e84eec171cb0807c5a41ae2baa1e10ebee15363d1d4569f731d77a418998108f5dfae0e90556f6d6d70ec7c487dc48f5b4ca174f87b3f75f5703a60214e1",
+    "Expected": "000000000000000000000000143cb941121b3e8fb0bf2a246797bad4bf644e6a",
+    "Name": "ripemd_72_2"
+  },
+  {
+    "Input": "79b5678c15ac1105a7e300bcb3c740fd1f693d4c8915c4c46dcb627f6de6e4847f123623cd23bac7f4a1eaaecaed9e0deca3a89ebf5f1a8849aa04735ee90e89508c625204c6df08",
+    "Expected": "000000000000000000000000f0313db32c876eed7b3450f4f40d810b1c79df09",
+    "Name": "ripemd_72_3"
+  },
+  {
+    "Input": "b473df5e282565a0783d23e65e283a103ebbddb5c884183cceb62fc32d0e96020a41ca5a5fb00ca216fb2b1cd8797eae0cbfb4a6cd6dfd61afd94d2287d4a07fa048ef7cf5d1f6f6",
+    "Expected": "000000000000000000000000f6d867a2a6909a34376b29747c4a5cb6a9ccbe41",
+    "Name": "ripemd_72_4"
+  },
+  {
+    "Input": "25ee3aba091147c389ebebc5b8f3d285e16ef4e8afe5c013fdf3ed894b9eb09bba6878d0870281c4f17315223ef3483d9571662ee4db3fe2a9b63c6bf36997118d58600c1e429c10",
+    "Expected": "000000000000000000000000b743121ec085112d427247a22bc866da04f8b1c7",
+    "Name": "ripemd_72_5"
+  },
+  {
+    "Input": "5a379b9e8b0de934ab9f433a4fa63dc8f5795b8fc0b8a2f3d8df3ad5ee1410f0c84fd0a42a875242a75495411f8f5231f228da17f49667c113d2bc2a2c8a338f80be68496f5145b4",
+    "Expected": "000000000000000000000000e3ae7c9b610c686bae8a3854d1908e29ee4f7521",
+    "Name": "ripemd_72_6"
+  },
+  {
+    "Input": "be21a5786ca6d46b28894467866214f9cb04eda87c30c46645f88a2520aed07f4d36dbbf1ab6dbf89431e18a462fba704216b516e819fb3392e315b0c92a7411a329cdafeb511244",
+    "Expected": "000000000000000000000000ad8a3817396da18d0c16d3124fcefd2cb55d7dae",
+    "Name": "ripemd_72_7"
+  },
+  {
+    "Input": "8823045b436896eba3c4d02dfb559bfb6331f9816f8575d93eb72b720d003e532051041bd2f12f6e6e29924139770fe209b7bbdbcd6c0bcabbf5021a7dff2d83ee132885826ad414",
+    "Expected": "0000000000000000000000005f9a94aef472e7f5c96c07d1ac5de71a9d0cdf66",
+    "Name": "ripemd_72_8"
+  },
+  {
+    "Input": "8eea7619ca284cf5eee23e30111e0987e4b6852966c11bbdb96df57a600dc3b5aabff5b1034886d24f6fcf035bcacaaec738deb2cfb8f852c810352ac79f55d24a9d0e916471a706",
+    "Expected": "000000000000000000000000228c18539c6d9eaa547b0f8121b8927efe654423",
+    "Name": "ripemd_72_9"
+  },
+  {
+    "Input": "28929684da8e43fa15b8421fc8c6532278176412b07eb7f423f23ffeaa0ee642590e0b7016bc063f3fffa93e1e35484c088319649165f56e773fd41f56193912dad990baf4fa8c7ff55d1dc1291f341b",
+    "Expected": "00000000000000000000000071c5e70a64400e888e481e1b6e47b873bbeb215b",
+    "Name": "ripemd_80_0"
+  },
+  {
+    "Input": "9c4b5627d84e153f3a4ecc14ddd6baaf1d62253a0f88d3af51be18d991976da00b3c49b1dd49e982e7851f9eaa580252859f53aab38c3c62ae0d6e0001c2e9402ed270764791aff081f1dc8051d22b8e",
+    "Expected": "0000000000000000000000001ba518fe4585617b25153b9eeed6a825d6f72608",
+    "Name": "ripemd_80_1"
+  },
+  {
+    "Input": "18803a7e310393f21bb4a495a445cd4545375def142bbd85d4530935b4d0c61ab62b271cad46ae709f2c460fb31e2923fbfb7606b64eef0460b8f33a0be54451fb655ce0b81db89eb7862f392450354f",
+    "Expected": "000000000000000000000000ad9df53efeacfa60cad5532b6cfe7ecbc355f47c",
+    "Name": "ripemd_80_2"
+  },
+  {
+    "Input": "8497454c69164e12a93011571ffe40b264a6d9d2081f46b0d1e50c6e095e09db8a29fcc442d0c2446697e94dc47181dca7a314f9073c06aba6dc55aa79978d7df40ad821cceca4bbf2a710bf36d937ae",
+    "Expected": "000000000000000000000000166d466f7a49e46eaa145584b1637fc7800a55e4",
+    "Name": "ripemd_80_3"
+  },
+  {
+    "Input": "aee9594f05ae07d3a0ac12e9dd26fcf9d5b468797b4af1978983faebe59a28f34956dacf5b7f65d25548bcedb518f45abc658147b055e7bed95c16b1fecbdd4bbceb3d073e74f3830d000080c8a92725",
+    "Expected": "0000000000000000000000006d4a39086a3afa94168790c24618ef789056f34b",
+    "Name": "ripemd_80_4"
+  },
+  {
+    "Input": "dbc6afcdd409e5d50d7b655580f1144de77f3efe5d6268032eccab7deaaad997b13e159a24dd2fdaf3b0c6f9dbdb12a3be99c1907fb0a33430df2ef8ed0fd7cd807347519f114e78f99617f6b147ca83",
+    "Expected": "000000000000000000000000e5b1ef0aa77cec1d75a3d0dcf5c48c9a04bc2fb8",
+    "Name": "ripemd_80_5"
+  },
+  {
+    "Input": "3bff7be962c9b1e1f32b5babe6067d7ab5acc94c97865c23bc352a514943f2c386f35fc264bdf005b3ef77055f0cce54830630695c8dabe9aded1b5365bf93770aab7e9ef4140a2bbde2f0a7b109724d",
+    "Expected": "0000000000000000000000003945ee9e48804ff4032876d99818d375a487d922",
+    "Name": "ripemd_80_6"
+  },
+  {
+    "Input": "eedd3f2669c0e95d63242c7df695cea0acfcc67855913f6b6daf2c775be599a3184ef5eceadfd77b3a4092696ec34d0551c88e434567638623740b7d5f9e36168810cf23fb020bbe75d387985c62e13a",
+    "Expected": "000000000000000000000000a888416c5784146e9d055e0c88c09fa15d60e2d7",
+    "Name": "ripemd_80_7"
+  },
+  {
+    "Input": "d87ef161c7b40b8728c3b121c0b67310a80d9efab033e920061cee8f8d7ea6023cc05f08340642613628b39e7b7fd0af9d14785920ca7a2881a58f2fac2c8803bc0ccd9a0ffe1864a0fce9369d5b4674",
+    "Expected": "00000000000000000000000008eec4df1f0681d94f0cf022639841a0ea11a021",
+    "Name": "ripemd_80_8"
+  },
+  {
+    "Input": "45111c860f6f5725f99b225c53b9fe1a70150e7ce922bfe214900aaa2790d14578a87849d463cb52a9d3bfacb13e2665056191e9206a4de01bcf3db25bbcbae6c07041840216d60ff445cf53b273a460",
+    "Expected": "0000000000000000000000004bd10f090f54a492e4f79ec3b6c608fae50bf74f",
+    "Name": "ripemd_80_9"
+  },
+  {
+    "Input": "16c8ecefefb53550f8bafc79966f863aa8bca3b3fefdc44ea4a573d2a39a80db873b6875d9132a1c7dcb3b533b16b18c29b031b82dc8c9f4ea9524793b54207d4e13a548d73297f2aa6241aff57abfd0cf3ce0b08ea1aafb",
+    "Expected": "000000000000000000000000c60b6044848dc2b78a8b5cf446a99ae6e3ac5117",
+    "Name": "ripemd_88_0"
+  },
+  {
+    "Input": "63d85a5faf691974a725aec54d4aa66b9a1eb6e272475d5d63d26ae92119c7b06d83d7e2922e06559b1740eae315c6623d3e543c9bf54258c7cd54b263bf6fe085d0577d991cf632f5d5d826eae2d1bbeddec178b81751fa",
+    "Expected": "000000000000000000000000fa71297fa106a5eac40821a1d67f9c8b3f133cdb",
+    "Name": "ripemd_88_1"
+  },
+  {
+    "Input": "7a02c61a7a75342ee7f0745886c0ea2a73c21500aef8078d21d20b7216c2990eec9f31a0ccc141127f83f73ec57fbefe01515cd227a50fcee22b614cfc352c4181b0c87102055dc2901826875d5e85a794befd93fccca2b9",
+    "Expected": "000000000000000000000000aab1f35ebdd0aa0e39ea1c7d84c06842cf7ed7c8",
+    "Name": "ripemd_88_2"
+  },
+  {
+    "Input": "c0a1f70ef5610d831e667afd6190105242c25ae15515b009ebc8d427e8c791f14a43eec67ffc7d4febf66fce49c6beb12737fe05e3adc0a51ecfa9144ccf6253088dd1a7a483de077e6d555d37d10818f3a69a3387c0aac0",
+    "Expected": "0000000000000000000000003fb2a81601f1a6e384bfed5d5eb175de584779e4",
+    "Name": "ripemd_88_3"
+  },
+  {
+    "Input": "717b6236e395bd68390bf68e984cce180305523dc79dc4b905e65587fbd095ed57aa42403d2df5dd489db8f50c99e9b6948dace319c84497645527a65599fc5c737fbbdb1d600e6a4d941ef6ea8d904eac23d04ee3acc757",
+    "Expected": "0000000000000000000000005134cceb79e29f69d08ae28cd2a42f2efcb5d9fb",
+    "Name": "ripemd_88_4"
+  },
+  {
+    "Input": "aae6795532ce4c9f34534e506a4d843a26b052a040c79659b5e8637bae1594637a4a7256332b31b9e05a73dd851d891eb4a56cda796534ea8586d7ad8fc3e4fb42981a4415224c0d976ebe1c342e9bc1cd66d35168bae33d",
+    "Expected": "00000000000000000000000039bf3d6863774a1a2c52a29da50758917fbfb2d5",
+    "Name": "ripemd_88_5"
+  },
+  {
+    "Input": "95a1c6d277df34caf22d1b0063e70b20fe2026c70a9085ab354c2872ec8d670d6e7db0fbd2a7327c85054b4c0de9727dc0b051058f8bb4ecb1dcc7f825781712171d489a2215e8d29a790c146efd73bd72ef0967b4a7daf5",
+    "Expected": "000000000000000000000000196aeb46706df01b9fe13cf2d2e39a0b67eea583",
+    "Name": "ripemd_88_6"
+  },
+  {
+    "Input": "3cd06d8292d5d7a085cc8d88273d4aa822f44a447cc22f5a58c420bcfe757a459772825619669a72166e22c86927615ef8f0321b29f739baa66cb0619655bd3689d684ba4ffe71cf5b6e462d809f8bf1a62f276dcb27e42d",
+    "Expected": "000000000000000000000000659f62a62b5f30509bbee442d4483d8a2a59ad68",
+    "Name": "ripemd_88_7"
+  },
+  {
+    "Input": "9aa0ce33fc4e149e87181aca70a4ccc64306408019db1fbc3d32dba6b2ed97055d816585fb45e0c7e0cdd5b8355d9502535b53ab5f1c596eb966f57867e021d0f3b099e17bf384479c959794b17d6a4b07425867bc7a2707",
+    "Expected": "00000000000000000000000002a818867a2d18bca7023a8bcad8e8024af51675",
+    "Name": "ripemd_88_8"
+  },
+  {
+    "Input": "b134342f1343ab379b774692f50d88ae29359720f359494d6e0512ecbc5a1b02ab19bc9bee4d3d9c721278e07b7a6e389c4d6443232a40357b458b1513587d5eedf6143f1ed2310b9eeede44d69bd7f0bfb8ec689e36c8ed",
+    "Expected": "00000000000000000000000001229ed7cb4d0157279e9367dd54a434c0021573",
+    "Name": "ripemd_88_9"
+  },
+  {
+    "Input": "a79fd15e80b694122dddb01f836460b3eff99e61ea6309d6b395c94fb5a43dff3c6bfa69da4371f4ea3416f7b13e1ce5a50a055f0cfd1421a02ce3675b7f0e63bd012914a96253926fdaabec06944ffcdb4637a05e3e78a9bcf1b21b68b9dd9b",
+    "Expected": "000000000000000000000000481f381487485ecedb410c93359e69be596395da",
+    "Name": "ripemd_96_0"
+  },
+  {
+    "Input": "5635c681fe6124e97752976554b1f713f95a2ba3f3f4ca69571711b6d06dc218a300c7e1041d94df0e0201e1135fa6eafc98bd33b2dfbe4c59b546a52538c07d193565a2a82d9c189fbfe088b6bf9df4c191db7fff02d386fd49420b2c273b12",
+    "Expected": "0000000000000000000000007f946edea01470740bc5a88f497bc4b0c3fe3049",
+    "Name": "ripemd_96_1"
+  },
+  {
+    "Input": "33e9cdb10fc117afb17803b61a2bca7de1d190a325639eb23743f51f28294b3379e97116d927b757e33aeee2ff4d8688b7472511a52342ff8c27e86c5b76bbd6c48b98edd9c229037751d02e58f3d4234d9a3b0ad9ae4947ae14beebb274746f",
+    "Expected": "0000000000000000000000005e6f4a9a6a180e2642f18db95bd5cf477c944ede",
+    "Name": "ripemd_96_2"
+  },
+  {
+    "Input": "e3624bb9752c7eb3d0457ea8896563649c4fdd86b6c682c4334b889e463ab8e14228758d2cf8105f2ef11d83018157a3119a44874dc34d5f0bddb533f50df52c688ec28f7663a4be2cac642310977aa759fc503c769772a1b84a71a7518bc0d4",
+    "Expected": "000000000000000000000000ec5423a6d822e1a29bbedb7e13cc9ff34d718dc9",
+    "Name": "ripemd_96_3"
+  },
+  {
+    "Input": "a417c96f0cf4355a78513c77cdc676a7b09125802c8045756da867e0025a36f185fd325def522f04c7b6d6d9b501739aab1967506281a12eff6aad42b6b5d14046561328b7689b0a89014823537cf9eeaca6ea5c56a3e58d2abfc2ee455dfccb",
+    "Expected": "000000000000000000000000274da96767a72fad123024884bbb9ddf46efce6f",
+    "Name": "ripemd_96_4"
+  },
+  {
+    "Input": "505d2ac250a97562db71b599dd018ab0410ada2023182aefb49723dd24e1473dcf6c3fcd4b9e6b72853934b306a078b1f2fb17879db4a0a93d484abbc2b746cfb30db6f7844b1e5b7aebfcb240a2fe4879e5620f7acd89a6ea457bf367152a4e",
+    "Expected": "000000000000000000000000ef4b4bf67ddca7334b2c86abf20ae3513b995785",
+    "Name": "ripemd_96_5"
+  },
+  {
+    "Input": "f6787b565e8d71be6fdb0c97c4659389c800a2047f668b366214adc716f402d53e0ab2c1e93467ac032bc60329cda6c1d9cc14904e624105d6cfed378783d5c040ed91f6ceb2ccf87e4106a16227a3cd7b2821b4f3a6e629001f78ba1aa7346e",
+    "Expected": "000000000000000000000000748103f6d918430f44715e644dba5d4e1c859e3a",
+    "Name": "ripemd_96_6"
+  },
+  {
+    "Input": "5738ebd3e7cd26cf1c4bdcb5ca261b7ede80b8f45b22080d4d0cdb5aaa5c51fdae8ddfcdb4748981acb9b2037c017174a140f2457fb0148fe807fd194a9f7be50c3c5b3270e5e618c363d5e97c306dd021cd3d3b5362df1470d0565616e401ef",
+    "Expected": "0000000000000000000000003ffc3a936f2edfcec08e08250ddd22842b8401d1",
+    "Name": "ripemd_96_7"
+  },
+  {
+    "Input": "1268803aeb58a2d57fc797358fb456d5cf96afecb1ee0d2b90782aa0d652b8c0e0bd315031a90d14d8bd10e70e6d3ce5f4123f38e370024166fb9e2306b6cc25f9a8a4e5c65973b785c1e2637937de239bb0fde34b786dceea66f6bb12eb4169",
+    "Expected": "000000000000000000000000215de2001c1fa60b3380d09695a1e6a54e6a2da7",
+    "Name": "ripemd_96_8"
+  },
+  {
+    "Input": "c9f7366744743cc2df9bf5cae8e08aac0fc2d27c85076d5d9444203bb86e56c0070e7e2ae2751a1f71962726a31f77553c2da38f4fecda435b6e5459d5e833b4a2f96f2234d143b611579f4c176bc167a42c3e3aa6905c92237acd247e343848",
+    "Expected": "0000000000000000000000000c10062cb24b6d7f14ddbf30bf535a4f99e6cc18",
+    "Name": "ripemd_96_9"
+  },
+  {
+    "Input": "d16aa883a20307f5436354bab32b4633e83178f33626af3edb14f82724b8e125013a24174530fd504da844b719064c9fc3d38ea9afa148102b65dc82a7c75f7d041390a2209b80f7c64d14965cc2f515d5fbdf37953f75c4a0203bf0d9fb674b33a0ae8344ae4aee",
+    "Expected": "00000000000000000000000079a9aec0ca2f648ab8c729b1b1ecb12a48429ced",
+    "Name": "ripemd_104_0"
+  },
+  {
+    "Input": "0dad5dc70c3f90b375bec94506004afe07ef55d4dec20fe67cf23dee8d95d94046678f3bdb4b0ea3d4e3a1a2f07f582e2a98ad6eb7562cbfc5bd3e128de774ff815c1afd7b345e20207569c7cfaa799ff513a8b07714846112adc8edb64db5bf0ed6724f3b54140e",
+    "Expected": "00000000000000000000000008ba4c99ee1014abdeddc4720569ebdc09493bb8",
+    "Name": "ripemd_104_1"
+  },
+  {
+    "Input": "d6c81ca65ef9d1b38c8bca6a62bfd3c61685c9869887eebaa2ed4684e77a35df22b51e155e2202db61ef9a68d7420c1cd1535bfcd68e8136808edf89967fbbf76b7f58d1a8ac95ebd4944b9e440f20b24c9d91a01a9527e63e500824d421e096b9b5b7bab068e260",
+    "Expected": "0000000000000000000000000ac8fc36eff4ce17151f5a5716bc4a33632fc8bd",
+    "Name": "ripemd_104_2"
+  },
+  {
+    "Input": "324d0d06a62274914c576996d90abde581afb58903cde4b9443eeb65e21b0d68c578e04c8f28f3d3ab35d6efb8f104efcd9a6da01f6990ea8b62b5b494ccf47c358a83b0abd532d93c558cc615b1c61c9a42b8b0ab4668ffcfc9e95bbe958e72e7a5500058e6b0bd",
+    "Expected": "000000000000000000000000b15816d17d765018fca3d1770ab0a9048815d3cf",
+    "Name": "ripemd_104_3"
+  },
+  {
+    "Input": "90e702a84bb427aef543dd2bf0e265112bb9e4ae50c5f23df0ebf1fcfce4bdc261301b4957a468e2817db5914ff102bc96460a2c5c15e78bd42884b1223fa71a16f4e764234019d79c104b4778693664ac662a3f32212f221b1aff3d75c955ea95cd2686d24a5bdd",
+    "Expected": "000000000000000000000000e2b80e9f31377359051e884d962e8991ed0a07c6",
+    "Name": "ripemd_104_4"
+  },
+  {
+    "Input": "a0bcb118a2c0eb5ccfe411ec452e1beb3adbda7e93ea367c464e621fe922392d7f2f92852c2f3b4ed34826433404eca7612e11b36035c424fb81d555d1e2df92cdb487a888fbedad976dce54b5c46a39893edeac21a12d6ea6dba8494af1882664a9ff7b932bd878",
+    "Expected": "000000000000000000000000609533e0c687eef92c50267266448e7c6e507aef",
+    "Name": "ripemd_104_5"
+  },
+  {
+    "Input": "c5baa277da17c116ef28f390d10dce29bfeed84bd95fb955d1b1045c059ffd051324dc8966e504164e54f76f02eb1b866ebb8fee0c5c91df9436110a2f8f0b53eb1accc0c24fe8957d6ece167ce9b319e3b308b95f6d496e6d5b910b6aabef8d9f868471653e8254",
+    "Expected": "000000000000000000000000e9d42a0cd343c0c346be396df6a4a15a0c167f63",
+    "Name": "ripemd_104_6"
+  },
+  {
+    "Input": "ab4d49d593180d25d3d2e870bdbbdc35b88c67aae7d0e3e782f8abd159b07a0182feee977060736ed4ea92e0e776be341c8444d4040ec121a2847256c5c9bc918adb28618548b048a582258ac580a0fd70e073dadb6f4d10ddf7dbb66bef844f8bf6b10ab173f971",
+    "Expected": "000000000000000000000000b2e07b1d188429d67585f19a104fbb8181cedcf6",
+    "Name": "ripemd_104_7"
+  },
+  {
+    "Input": "4c07f5188e4c6270a7e9e2f551683c4f9dc943ffc7ec279d15816a7f4910b8d382245632dbb7b590f1eefcbb9f9bd5a833c8242be3a91216b646c54a1225c84ea819a0438efd7ec0c1e3eea07ba201af6a832fecec818adbb781ad0c23e81dae591ab93e8379b3b1",
+    "Expected": "000000000000000000000000958eac81290a96aaa830ea3c5564dff3e99f32d8",
+    "Name": "ripemd_104_8"
+  },
+  {
+    "Input": "3bf673d1c6406e9040ebf3667cf9a64cfd1c2a020e04a0e0b15af019ea2de662bf187930caea19d0aa07a74b49fa7d1819a539e06e4c69ff7e9e808c1592d87b1ae1e45694dd5be3efdca06bb4a357d41564caa545ba4098064a6af51c1d499c4c28556ad1255af7",
+    "Expected": "0000000000000000000000004a5c12c570ba984c16875da635375c033ee3a92f",
+    "Name": "ripemd_104_9"
+  },
+  {
+    "Input": "467bc750bf2db2842d626647bdb3346196e9420ab4e2881f629c8b6bf563e6afc621f5b26ee830eac6116fdd55380a41a3daea5a083af43711fcb09282b66882ae5b5b8e1714e9186f33ac0dfe48b7ca2dfc659e5a0a7cceb16f27a2b333a7d25e399263acc1924d487551d4dafe803f",
+    "Expected": "000000000000000000000000b840fcfa83c178c578fd8c33b616b5909381d5a1",
+    "Name": "ripemd_112_0"
+  },
+  {
+    "Input": "bd682acd154f6e16a583ca4968d28471653375ef79df078b17b2cd9634258dc17bc82587f1336c32a162cac9295ac6617a2009c83171a99b8fd7ec0189d2a852562223d3fae1d303a01ee4642fb4cc70f21937ba7fe377260fe82262a8455a77383aa075e84355ecfdac429978cd903c",
+    "Expected": "00000000000000000000000031609bd87ae81ac5f7c4e7673fc4d0944224c3c9",
+    "Name": "ripemd_112_1"
+  },
+  {
+    "Input": "28419548d101990ebb61308288877138af1d0fdab6185e1c3f9f621ddc169ba92584db0b40b6ace7ed563eee0090629f65d54f489a74d3ca13da46d64bb22f5d76a0fd6b377edb3a3dadaddac9e130fae910487c91f3839d5961f02a67f3b357206e406ba207dde969498e40d4a26e88",
+    "Expected": "00000000000000000000000039874de14699c82c465a56341b06fb0026081122",
+    "Name": "ripemd_112_2"
+  },
+  {
+    "Input": "97ec37e02407d6e176df21d3c4bfa42ed3bda871e57b1620feca11fd071040f6396d32c2c9ef685120995d2244756bd45591618597306193422f3b5df4b075d2d678175bab1e68c1fb78ad45aa92203af08c11da5f4c0d5b658d4975a4f4c24b2087e21d775fbc2c20dda715e46c9c49",
+    "Expected": "0000000000000000000000005f357652ce612d90c2933ae80fdc8e03cdc66f23",
+    "Name": "ripemd_112_3"
+  },
+  {
+    "Input": "70394e40e991c78ecc13a2a5d0b0f30fe78d473e1f1bbd8c37453439f107d3abd98ff9a91a1cf8cd6fe57e56de8ca165f44043002a94560d725da2ac44f30cc5f14f52dff5671c6689efebd803b1df7a6e54bf37a3be19b2ce980935c560d9b2d44e087f300b9b00052c2d79adb48b00",
+    "Expected": "00000000000000000000000034e533794371e4045c13d1516a2beb2b1123576f",
+    "Name": "ripemd_112_4"
+  },
+  {
+    "Input": "8624c83d846ad2e53f3f8ff5ffd3fca8723e6cd431e89ca29a4d662e82004b60573d61d5aa9af990b21fef8cbd5198b4fc49cf6885a2bf342f3959c0208d3ab6b2b2a8a42887ca6dff5b5364d88962068496bee79cbe74de0e8a06209feb3832ea5121210c8bda5aa32c984efc5209bb",
+    "Expected": "000000000000000000000000ced81ce447adf1101e398b81ca09d872a0e15d7e",
+    "Name": "ripemd_112_5"
+  },
+  {
+    "Input": "76ea8c908091801ec75bf291b7659d6088ecb5976f63a38d7f3d8c8ec441b705563c5e3d899870ab5d2ff84467fffefbc2d08e376ab21518f2f4129df0251b91d1ff52d053816165695cde6fc7c0a227951f4960d6614b098249eb9420077ea5ad11e38d1694f4df33719d1127338f44",
+    "Expected": "00000000000000000000000070c55f83b891492b48307518829ae75c80b0432d",
+    "Name": "ripemd_112_6"
+  },
+  {
+    "Input": "622c74d17e465baaefaeb550d5b99e6d389ff91d4f42e16dca5bde90150816087056c7d93d8453be369831dc0575df6438db488780d518a53d19b8f5d22d506abbaa00ab8eded7c8584793fd85db461684febdb8b364e8ceb15326a9e32f9c898aa982de1583c25307e9e2c8cf2469a0",
+    "Expected": "00000000000000000000000088f6c0418a3e61b4cdf72376d5dc25c6c16bc18d",
+    "Name": "ripemd_112_7"
+  },
+  {
+    "Input": "b1076c6be2fbf12caa8584f34988221a335578111592f5b234f88b650c54e56b8e45e7b8bd0d9ca6020bec9ca769e8dda18ca15f0d931619363f5ee56bd7657b2298f228cae8d185c9d062910193e9c4363066784810fb72466298f56f96617d75fecf34f4d11c9e231aa0a8b63303d9",
+    "Expected": "0000000000000000000000001a74492d1ebc71c959f61bb89ed60eeb0291d4a3",
+    "Name": "ripemd_112_8"
+  },
+  {
+    "Input": "b54274927eb29fea0cdc464271c918826d5249b2180a52a5020480d1020c9795e7feb56d833b82588584f389a57e29a401eea966749fbe2faae17c3a166c4fd55849bffc842c21277be88dfae0040c54b072ff526731947cbec0cfe963f2d0dd9b7113747769d1a9c3868c3e9b289564",
+    "Expected": "000000000000000000000000391095216d4cc054cd701d4c950c7ba54fe5b44f",
+    "Name": "ripemd_112_9"
+  },
+  {
+    "Input": "3b12e58be1485da99779bdf38b46a13eaeff769da1b62fde321d46c66f8ee7f2129446d805ab7f7bd586268de8f57c43911f76aff9aed72938957e906ae10934edfa9c2b0139a8bf99ac1bdb210462a052c9e56cfe957b924c9c0294e1c1f12474331c662c8e86288c97e6a8b8b5b20209a1b2857da85999",
+    "Expected": "000000000000000000000000aef7b50c0df01fe32ae8432729b3959444c33459",
+    "Name": "ripemd_120_0"
+  },
+  {
+    "Input": "2d169f05537c1792f13dbd829b77f3d6163d202bc529fc02decec569d223c724d162250ed1d074ed9f4080aaae3f44b77df05292be48ebd9a46fc7717d97e8e7e5423ce2a44811616db1e12b139811889ec83a8855e58563915ac9453b831c41becd3c1f412cdf5379e9cd5c80bc6df92ecfc5005356d2aa",
+    "Expected": "00000000000000000000000092ce2fd25bba83839e1de7f8a4fe6fbeeb735065",
+    "Name": "ripemd_120_1"
+  },
+  {
+    "Input": "51e4679941c27a0d7fc0e8239f6ab01bd44053bdf5f5e0666e2a6e030e5c129b58fa60bc7cff4edde18301af2348faa69ed4f31d437decb7d4fe51142d179e6084684ae3cb179837b2e8a4ac74a5133c3ae4ad8c2b9c7c7b8e0a16f0fd298f51c29be0b271d4e22d39e9e06db9e50845515880f30c5bfac8",
+    "Expected": "000000000000000000000000703f60041c2531842070f1c40739cbe7cd72685c",
+    "Name": "ripemd_120_2"
+  },
+  {
+    "Input": "0bca39a2d8d61ea05a50ad515843954bb3b190278f0b6e7178aa7a4aecaf14ab148eab09ddce9808dc8c2e971a3a4b9909dcc5cc6a0de50286294ee15f441521e0f1d2c3ad3a76e91c3ce479c3b858f2990a51a6acefaafeb928f6a604025f9174d774bfb9980a1621c9ae0132a4886820115e71e280d333",
+    "Expected": "000000000000000000000000a7a32af8c99216fa2cb50cbe47211f9c7e404188",
+    "Name": "ripemd_120_3"
+  },
+  {
+    "Input": "78a04344f635c769fffe91e89fa7ea477a8ff31ed761cb4ef708ca290e840e3b4a5404b9645fd4acb97720d5e7b7419ae1067c01d5565d0f387516d9721f7f4e5253d5af8353db4a55500e20a95f3c96ffc1769359dfa10380ab7f511177ca256e339600327fc00da1f64fa1666f4bd7a23bf766a1e1c068",
+    "Expected": "00000000000000000000000046cc728c14846d42afaf6ab2a4bf5ddfc75a063e",
+    "Name": "ripemd_120_4"
+  },
+  {
+    "Input": "e6e8e4b60391583ac197ade53caf0f8a43c53d1bae9f13e5520f896cb03b089b4fe2ea6ed3ee7d17f180aa338fe8a5e96e9764d0c7f097282c505d4fd8287a897e01517ddbd7d7ea9d26ae4f58fbca172e5265e2b62858b62e6afc885250acc84b9f9000771afa77bca33c1ca94eb8b6f2f556326d78d895",
+    "Expected": "00000000000000000000000018dcff636bd203a3954965e73604823a65f1f98f",
+    "Name": "ripemd_120_5"
+  },
+  {
+    "Input": "2908006c06ceb9188651c59d434988cb5b51a5a75772ba71875444c65ddf0f4f6e70adc2a68a2760490a2384a7d8e7b575e0601ce52b4e40e710a3dc34c90a57e8e8724c80f3527de5f0b2b98ecdf0b8d0471e63c0763a89da8a21a70dbf83992a4b32089ab0e452469738f9bb24c77d325b36e72e472190",
+    "Expected": "000000000000000000000000edcf50e8f13f2f0829e5ae3fc066725b67dd06b3",
+    "Name": "ripemd_120_6"
+  },
+  {
+    "Input": "cb709ead3f7b38e9e14282bc687a00264b4e4678ff238d5205f6b6fcc10040d9b4393e93f76297a83eafdae38cfd453ae990d458dec1474bd734d27d7c0f6e684089c19437e3fde15307650d6cfc681508fc7b8dcb5291837582eba6588132f46ab8fba674a1f5afd566f7557215af3545c3ec4eed35104c",
+    "Expected": "00000000000000000000000022aac6fcb79112f5c9490ee57ba3be01267c63b6",
+    "Name": "ripemd_120_7"
+  },
+  {
+    "Input": "74333fa2c4a676ef84a6a8c7c15cda0a7d6a25511ba63f0b7ebd2189cfc4c551083ac92b144e30dd81d27e59dd86e22673e199441a47861b3174c3b41ad82586d4233c0dfe0bab24a691668bd86d2b23eac8e5cf13de6db37982390c8b6b0474795f479584960748b7ffed881285e2df00b5f1702cbe3604",
+    "Expected": "000000000000000000000000777a92555e381373d08f7c9d25cdf2232a294f39",
+    "Name": "ripemd_120_8"
+  },
+  {
+    "Input": "5ae9c1e3252ac02888c364d5d6c01264377e75881efccda12c134652c27da0a0272b0783551ae44db6bf592ff299b48c50c550367d470b5ba5e74db977821e9141afd421a934e520df8f43f65aa62b93d9bd0117ec83481e8dca9ff432bb483ad726bd20cf96b07ab6f07170a1449f0f1b50ddc6e1a02538",
+    "Expected": "00000000000000000000000019c76b65d7de60b74f770da65364602ad53c2f9a",
+    "Name": "ripemd_120_9"
+  },
+  {
+    "Input": "13132ec71bfd6132c42e101e4fa7270bb39b26bc09209281f1586b1eac994028146433a0738ab1b044e059f49a8af8d85546d0e34eaa0edf2b2a6ee466c0def8c6d35d997946ab33550d01a60334d2a83c0166df270c97b605d4521820891921de0399ce1ed861c0ebce1d4e811ea0a3d87e21a54ae34e6b5e1284cbb9497368",
+    "Expected": "00000000000000000000000063b6802427a1e8f46f83c0b188c41e0e2ac0a653",
+    "Name": "ripemd_128_0"
+  },
+  {
+    "Input": "d12d0ac6e9d242da1d3dbf31128473c3085d8054eb1899983089065036c40a0fc2b034594fa53a0951e2116db1b063345fa42dc8c870e1146f1b00f626dbcfdfdc93657a68cb1d65c77f30936c908732931e2a64f5dfe7ef894b39fff2a033f1c1e6d9c5f8911014f0f540211af5184d96fdfd47c03bf2d7bbbb3bf1a330017b",
+    "Expected": "000000000000000000000000cc5c268f21701af107dd293c23c549d8911f6cea",
+    "Name": "ripemd_128_1"
+  },
+  {
+    "Input": "1863b8d3946ed295f6f918b95e42eecb98585edba92bfedda9ae57a32ff4121a6df5a133d3332e1f79f41201f8cb2c8c8d4d1ab0f640c4de6bd6e34884a77aa263e06ec068cb513c0712576a4ede661d7948bcaacddc0418e03211ca4211aee18e7219a9d431c597fe9700d43da8b545072f5a27a9f1af99053ac0494087dca1",
+    "Expected": "00000000000000000000000059169a83982619b917dde717bbe58fdcfc38d703",
+    "Name": "ripemd_128_2"
+  },
+  {
+    "Input": "6ba608579a37ccb1b42394f9415d37bc528f1eaeec0dbe7e0c086f26d584b4208efb8a7a5e48d5f4a011a4aa0dbab22ede62c903414d005d507ea3d77bd47a6cb894ed2421bfd87bf41f45b76bdc260d23c12645115fb9fb2d459c645108625f47f53e2c06664e1daffd7d9b114e12d4190d5d0fa2244d61a13da915c39b8d53",
+    "Expected": "00000000000000000000000087c415b9a0f6357fca59bddf5d3c44e483f3adae",
+    "Name": "ripemd_128_3"
+  },
+  {
+    "Input": "6e615fb4732b3fbc604d27e024814bdfb2df5090781a71d5fb01e70f82e3268cfb109d9a0a7b62c7c452bdf0a2853c4bf65e5439fdc83aedec8c0bf73a16b55834508dc39815cbf8818a0c531c42f8a3a7aa5d0aa1199aaaf1d6f59df18f7cfc4b0a931b894fbe61115fcf52be51d44afdcb96c94117c75adffcd8729b0a699a",
+    "Expected": "000000000000000000000000d7b6463fb57ebd16cf4bdbe6ae57973974892d9c",
+    "Name": "ripemd_128_4"
+  },
+  {
+    "Input": "08f3dfe5ed8dc087cea74b32ce4ea4e061a6f9fa36f3d579155ecf163cb0dfd468ce22e379ddb8352d12eb597c179c7089c6388542909876c69ee377b14054e75cde1ba41d50b316a3e9cd7d637fd9381aaf4a42f62cf5ce7a4467dcf21ab62f61529338195b665f1b80c4b95b7c3a26a7229884be1f4be9d49e1274a9ec3f81",
+    "Expected": "000000000000000000000000b369ed2a43ddf125e7874158f7d85e0448f1bb8f",
+    "Name": "ripemd_128_5"
+  },
+  {
+    "Input": "336bf7c4fc2af075a8fef4951b12d0eba1520194172d52600b9e6152961e4a3944d740a72e6c8b5632314408022093618321c8c0a8cf2fcd9ebacbe43505a01c1bfbe59d8035042e9465a297f853378ba65cb83924c61f36b68b15b29fa68c8324872a78e340ccb077259aae65d6c448fe6bfb64daf4e2b6ecce2cc9525e35a7",
+    "Expected": "00000000000000000000000091dd6274f0d02066eb09e018804804eeda6213c2",
+    "Name": "ripemd_128_6"
+  },
+  {
+    "Input": "d1752e182a16cbb951f43f160afff51b58811e7037b385912a40f17891ed48cc01a1d84826bf78f493417a06a800d58dba688800026638316fcf9ae534436fc03b2ee18333401b71c818c942468505f88bfc1f722330aed9867cabd300fc5007c5a3268a8ab5a12214b266aaa4eb562aa05dd19575a7f3ba2d549a25f1900cb8",
+    "Expected": "0000000000000000000000007b1de4f528907c2b08941433b8fd7d68384e6e33",
+    "Name": "ripemd_128_7"
+  },
+  {
+    "Input": "0de62fa79235c0809b220c7793bf5bab7b3b9c733ffc71f210007fe42b9cae92e62a7b00d2be967df04ef56121c95c8736efa95e1faa0196e1f4485da82b3c3c46a3fd2db4a537b66fa0c2ac34bf7e71cec559b154cc48baaac23003e75a33877a883bf845d1ed04e0664d814cf0b49cf8c3e8b8594ae5d2834c753851ed7803",
+    "Expected": "0000000000000000000000002e4ebf4b9dc68f15d5edad5747cd1e1bac665089",
+    "Name": "ripemd_128_8"
+  },
+  {
+    "Input": "c51971fdb0333e05c076bd9703136b539a97a1264d83f6d2a5e481ae7d0979a50f474e8f4051c4e91124c14895fe9e2516b315d805b79013caf830524fce88804b5070f57ff9ce6364abedb640f1d170190554078d0145130a3e28c8be8d8c379b3a5790750825ab75ab7422f833c671b95c6c58619189db66a6215ce907381c",
+    "Expected": "00000000000000000000000093aa2cf4de412f5d4512a6ae8690902b4635847d",
+    "Name": "ripemd_128_9"
+  },
+  {
+    "Input": "43198b266a861eb1b9145de01440863cc607b9422df4d107b2d0210fa2b7a9016607a48ba3fa5c033a1ef90260ada14ee50c95e5167bf801ddbd3acb77c3b388a0040cc5dcf7ee07a976241981a69a0fd68a16aa5fd836da8e6c9de0b270e93a030db724eadd2f487d31dd4354b5c0321a7983aead21759807bd893217c4d4051e262ab0ff016381",
+    "Expected": "00000000000000000000000089efb228572bd7637e94465464c955c4e37e17ce",
+    "Name": "ripemd_136_0"
+  },
+  {
+    "Input": "51f57dfef5622a5d98a5d1bc042724258c89e2342f78d13a88e71d0be8fd050f6dbb8b2fb3ae2a9e593bef7a5163255aabeb07282e8793e3f65da5e05895eb917d6ea686702373f9459bf33336897ffe02c51f4bb207172b26989184bb87a586b8752733f9ce9ea06422c6a898f0f402cbcf760a7a21c95c85fd85c59da55060cb36e4dcdc1e33c9",
+    "Expected": "00000000000000000000000035a1cef792ca4bf028b12718a2d92e93395b4336",
+    "Name": "ripemd_136_1"
+  },
+  {
+    "Input": "aabbb0230c8e29c66caa863b3e96126a3d1dd9cc44b30a4623a4d14861688cb678bbb8b2f8ae3ba140f60e64c05514b1e15b00c6b76130ba473c9fa9e1c636ba155d2d7ebeb6294718c70417d70a091b5639d80f55e24e05e3d943340e324f6738a593a915a6bddb40f01bf12f73daef89b154dbf829efedf55d58c3ba0d27ff2e3381810f6ab515",
+    "Expected": "000000000000000000000000aa9b2edd747b039c3cbe0a9ccb2595d70cc4449e",
+    "Name": "ripemd_136_2"
+  },
+  {
+    "Input": "b92a03145ebf8ed342fe1e5b3c0245e5cfaa1ee8dd8ccc4ea8878ce2272d152fd8b24032297ac0185e0ff79eb2750d1819d2ec2ffff4e634c2804d12dcc79e61ecadab280ae5e92b253bdc5565b6ebc219a75ab74dc5ffd304c94e67160389f87111899ac07a71b7c38366a6aab547168a2c97c4a2e90cf8fb15e66ae81727413a90a93cf42f77a3",
+    "Expected": "00000000000000000000000044d3dd20789dfe51a295671432b8bc0fe358ff73",
+    "Name": "ripemd_136_3"
+  },
+  {
+    "Input": "acbf64f93f6f85805517ddf0358ecfea1fd58a3666b8dd9d3773a28590fb8a13d3f6c873446ea603cc9e0b9586a119d118ab53e5b82db7d53c34831cbbb38a00d9d3f97893eb4f14f21f68110f612a444815fbf2f76b8399ba6045c8a44270df575d0bf5d24c557732b2f6946aa7cec9e1ba80663f596ebb420b289a9a1a612605fb554531f53b8c",
+    "Expected": "000000000000000000000000052123dacf69a759645c9c1a1de9fbddc3f6aa42",
+    "Name": "ripemd_136_4"
+  },
+  {
+    "Input": "ef8d93566df80878baa96f92bb54aec19445980b1a1f6c345442a1db17de1968658264a19ccda4f59e82c62477098982e9c47b07b72160d4d79ba2c485f0aa0e35212fd7fecf970258903bd2427c4c8b97c2c425ee119099d4eb27971e3b617f1f9eb27c06efb4652fd165cd56baaabb5a890053e3900e9144c7017258bb979cc9bb8acbd3a3e62e",
+    "Expected": "0000000000000000000000006346aa953981d269e70f88876791ccddb36aac6e",
+    "Name": "ripemd_136_5"
+  },
+  {
+    "Input": "ac7aa152db46cd7398ef07edd031e4f6ba41c9af06312bb67473826485a43fb3c9e71e560d4f52b980923cce4e1c69802583e821328ae90a7db16b20525228e8d915bc8d46a642cb0a06dfb64168cf1cdca4b0713a4c1eaf85e0bfe193115586c1d33772213e152f8e48b031a21e471f506f22d323a740553d6107e651c192c1dc6e0a0161a82351",
+    "Expected": "000000000000000000000000e8a20708ebba920fe59ba89ef742d672c8a2d59f",
+    "Name": "ripemd_136_6"
+  },
+  {
+    "Input": "f125f08c77e53fdb420c1189a1dd3dc55ab7efc86de7dfeca895aded698d56c69ea7b6730ac241607f1bc0e1ebff8f935330c35573f9fc3b900606da9cca9a36b425977af47c7ca62ddca44c0f318aacaf1bf36f79512d2aa5a50240e3e6fdbd90bc244a348ac20a4429b85fae16200da6eb8f62e95e027c24aa6ee2a145f6ef225139f29aaca29c",
+    "Expected": "000000000000000000000000db451de302d8d7893be9af591db60993792444d4",
+    "Name": "ripemd_136_7"
+  },
+  {
+    "Input": "a00a0a0b2d9d8c569f66046eb9d14be7fa984fbcab1f188e69a065c3a5671a7a54a852baf21df9f4ec8d711a48e6ffb36be8c09c8c60eaa090876236b2eae37a35d6fbe18624e6124d7f9a3096b54955748b3c6aa150dd49c02e5eaa18dba3b213814a3c6386b19f7b93c2c4e0eb1568e8bd3f0012a1ae1357b127c33808aa04b82587f9abad479f",
+    "Expected": "0000000000000000000000002537578da8bf7fd21b049ceab1e7522dcc1b0399",
+    "Name": "ripemd_136_8"
+  },
+  {
+    "Input": "1d1a1461cf35ab35277cc1f5c1bd4957c7814c968cdb25faaba0fb0440b2461ef64af6ec5f15db381714fce1da6e03ca962cfc94bba26d748d5c30754f9994a4d78979d1399118c883683b3fcad0653fc0d14f22e91dd22ec01749cac36dbbdba5662687fd1ea5391ef9d0bbd24e05bb5904a20fa6a1e11e6db3c522391a27b3c840b8ac682847bf",
+    "Expected": "000000000000000000000000b5cd9fb9c3bb67f786f61139e7ff0e8ba8335eb3",
+    "Name": "ripemd_136_9"
+  },
+  {
+    "Input": "36ba16b0df886b3b7a31bb55cd5739d39680fbd6e6c7b1b14b000d3d18bf93242c74662ef108d711d85d8d442e415ffdbd8d85e0dc81bc49ae76f1674f1da060839c84acae5a9b01351833edb92a198d1ddff10527bb64de6ee2e3ab4959ebef9e7a6964b7482f9fae396b2b9b0cff9e50286db13aa4e25441413626c80acb4029853c986021bed95f4f164d7f919355",
+    "Expected": "0000000000000000000000001011ee6a22dc1f956aae24c18d6097dc1ea3ef87",
+    "Name": "ripemd_144_0"
+  },
+  {
+    "Input": "2943fa2957d267019309f4fe5b6725379d893dcc270ff7f35b3811ad1d8d12b1c38b4391fb2086da100871fea6082edb939dbe5647eed4bd654093cb890a53601551a3c2d0391fd8dedade892e8e2171e652d2a9b52f2288451c55f77fac788ab49a06b1a654c028cfd2287701937c38807d2abde76b65976e6deaa62906d27a8eb2fa94a5c97c28d95008dd1fe60137",
+    "Expected": "0000000000000000000000000ae9da0c42dcecfee657b7480f8b6d6377dae0c5",
+    "Name": "ripemd_144_1"
+  },
+  {
+    "Input": "b34c2e763292d1b86993c02790b8c91f0e24861b4e65f22f02e08a0c3bd4d55ebb2d59746bee3dc89e8dec93d4e76863f72ae1def6c988f9242bff0e683b8d2a5c1aecfd6ebb9442131ec5b5b825d0f6c4ff736b0f76db8c01d4731172cef966b6908092e7e7bcc58df0e04afd2dc2e2331451748146f0564ab0d91b09db87e8a6ba8b14f8329bc041911616195f9fc0",
+    "Expected": "0000000000000000000000005ee2f2871ff5063d8f5142ebd6220dbb0766b116",
+    "Name": "ripemd_144_2"
+  },
+  {
+    "Input": "269388891d7c9d90d66ba3320c9dfe08962e22c5bbdf24be72eef0977d171a6b16d298bf591bd927aee24a37c5ba508c3bc121f5150fcd1a70c1f27a79da7d7334e5ae8893e669faef417c164bff4f8b532c37743801dfc1d5535835924719c156be810c3fa86e35bc935fc2b27971c9c41d03c8ab7b6c8869db90b6e0986ef49456532496c009cf8d0172ff1b2f5b7f",
+    "Expected": "00000000000000000000000001dcc7ee8afa645b7639053b7c21115a7ae12c39",
+    "Name": "ripemd_144_3"
+  },
+  {
+    "Input": "923102c154548e40a14b9f2fbe9a1a89aea4445926775a6baffb4dbeb249dfe3b3e0c29f2a579927f540d8f6451553ef64b71c67aa9cd18aedba3abe5269b4c99740914b83b1a34d088725266784b14c9ee0e58d08779add74b68dd75e82df172b719cb5a772b0bbb34d3401b9f212eaf9d351bc9eab4c847137b627048e4c5aaf50b0687c1641899ab5da1fcb24d821",
+    "Expected": "00000000000000000000000044bf5f3f103a6f6ad1668d6425988eb59bba3e91",
+    "Name": "ripemd_144_4"
+  },
+  {
+    "Input": "773d07cb9d20744a2c3ac88082a8d6606acdc892666753793a2b8bb81116cc6d5f25bbb9590d315bfe2f02ba31da73b75d8082d731040a0491a6dcaf09435786f6bb1445e9146b117bd0c95b009fba670a5391874dd314cefc884bdb0a4eba681449be655570580d6a15d38a24d0a330cdc9c2a7b8dfd669adefbc7b0e32b055d4158de4e23d793ba77c24a70f0ad073",
+    "Expected": "00000000000000000000000093f46f44c7430ac2fe4f93e00d5ca70b96823019",
+    "Name": "ripemd_144_5"
+  },
+  {
+    "Input": "14927fff34361b0d74b25e8922512d7a4183c179dbb0bfad0a7a0ed14885bac1b5cd14b4848a7de42b620146663f8453c629ef41d5a2ce49fd81930406f19e760a47074e159ce372dd67e7ea46ad706b35883b1ff3bc56718be45ea05b77aa4e9b24138deea06649f56f4b1ec8d34603c718651715ab786b4855092ed21be41b499b7824d0bcf68ad31b31ee4cb730d5",
+    "Expected": "000000000000000000000000942589bcf958d4540d9eee2302e1641b741e297d",
+    "Name": "ripemd_144_6"
+  },
+  {
+    "Input": "70dc723532f65d0a299bd46c28cb0e3c85013c9f3698357a8a49f0b27783edf8c685a2872c4980518fe60c61e2276ef53c007166f7eceb355b4cd533f42c00b7c8aa9e5958797833f85c56aacaa2871c7883e3b0859ea140f5bb0858ccd3b879c067ecd54e9ef59996493f846ecca63bbd7ec28da586f0b8d41bfdc6d97a35cb94c29c552ca365696f366847e96feb27",
+    "Expected": "000000000000000000000000eaf342a14b185f598a480880872929f982c69719",
+    "Name": "ripemd_144_7"
+  },
+  {
+    "Input": "e281d094972ce8d0aba335d6a30addaa8b5112baca5e0f2bfb885c5041189612918d203a117d886bcb3b27df7e64d17d5022a343c0bfeb6b1528f48d415ff07bcd431b2191ed3817e3dba03b818153c22db7ad39ec8129e9e9206bd46cec6a8ad3362ade1beaa97befe148f6c67a9c2bc84d8fa4709242900e5eb421b45a36e957ab0937d46e5cb39f129b30c20d236b",
+    "Expected": "000000000000000000000000a3474c78d05ca8a20c40723251f952ec37cae159",
+    "Name": "ripemd_144_8"
+  },
+  {
+    "Input": "e2400a11d9a67041824b97a96f0ea9da8848e7990373655d76e8bd4eb84df5dca6fdf57f30647e0931c321a800c3cfdeb20d070ea6b7a2f448da3c52ccc44bf2aa2d17c409ade92566ddb3913806723d41067540a36a9c283bdacb273c5b258a37038a62b7b488a9bfb9ebd025e4b770bfc2164246ebd7ae62997c23e4c725ece5e3d21862b64e09a0893ece646de60c",
+    "Expected": "0000000000000000000000002267e4c91790cc76af5f23aab314afc9722e7bb6",
+    "Name": "ripemd_144_9"
+  },
+  {
+    "Input": "d66aa483662125ffabc46cc52f1cdefa782b8c5a5e1f748ce7db9e2f5f85ab2579bd471e00dfe532587b7deb159a859249510ab1b7850badf58cacad67fe47135f6524f0d160f3013e8ff1c881e469e4ce6bb4370170dbadfb9217e9b42ef1423fd78fd697eea2a0323077f5a624383e713aa69664a8c721cefa7d6dd3fe9f92432b4d350621d5297805fcabb21ff8c61d23b39a5cfcee1a",
+    "Expected": "000000000000000000000000b626bb3e502aaeacedee01aafb8cd8e9abe18255",
+    "Name": "ripemd_152_0"
+  },
+  {
+    "Input": "bced7251af6d71579707d9544c1db839ca0861ff9c1ea123c040d8bf0a787346560fa3b100b2dd9adb3f7ee716b8103abdd9609363345ae4d44fccf29389a34dab1c9bd8f7d257ed6692757d4a63cb2c3c5cb52c37f3267f17b811aeac4fb7d91abc655f8a4392176f9060346073c957ef903e25d10935a05016e6905f25a88ccd65c05d2594b355555c47f57f1d0838bef9b866f05b63af",
+    "Expected": "000000000000000000000000ddd31a3c60281a54a5ae250bc4665c4bf4408c6f",
+    "Name": "ripemd_152_1"
+  },
+  {
+    "Input": "bd1f096026159218836a46b9801a4f0c43189324d20220aca777b826eaf25752e3a9baee74102042d852c0a76824ed4a676923718774c233b5b631967f0edcb5f221dedfc21098ff9a9507e493d0fdb1efa6029fcdab23a016515078c76f76271880c9adaf2b091059102bea8c52b77e02d49f9f0dc092c65ea9897471b66eb0ba5b30d1397bf28100f108b84e05107ddd6cae2e82f1973c",
+    "Expected": "00000000000000000000000066a92c8423e1699d46b3c75c16d30fbcf40780e0",
+    "Name": "ripemd_152_2"
+  },
+  {
+    "Input": "e187e8c3a7d02f3e3b9bba632f6d22e045297267e46798276f434c905c0ff463663a3a9562c8797119aadc83d1db9140af303c0492d2b9bb9e2b53ddb62cd2132bdf8ef62aaed683156a9dc7cc59a845d5a15fc5aae0cef304f12fdf14b54ed8c1f627e0df91686487eb6fc40b00246910626ab66bfbac96ea09242d1d70496466e4d681942050702d1c367d0e42d052e669136470b1b695",
+    "Expected": "0000000000000000000000004c64a19a3f0d23d02d7eaa4b79a18bbcbcafae4d",
+    "Name": "ripemd_152_3"
+  },
+  {
+    "Input": "9f00ac58b6f9bc881eed1f77bcef02573bb5926f36808c0024ea7388998b4cc8c6c48d32917f6456b39d514143c6ededcc841ab189fdf7c4a15c86090c5cda8a7f9583efb326e394da03bbaf1d10d9f7f44b0204792359895b448bfe6ffaedc14d54a6d72be7a49718c0a933807a399d5651d878d97cf5c8dfcc21b5814d9ae345e27259064e023aad3afe81569939b0de25977e7426cd56",
+    "Expected": "00000000000000000000000091d86054f8d8c274de9a8b7abc5ce66feae2a778",
+    "Name": "ripemd_152_4"
+  },
+  {
+    "Input": "52559626ff8b195ab7ec679de987a6a22a6a0e366759dea09f1b7e02f64d7194683a6bd143542c835a057c717ee87c6f83274ce765f923062e7ae497b44f531fe203a599622954804c06d5348dc17eb1537e750006584b2105dd30bd871105fa726f29513986d92a92ae3a111b0c61c3fab929d9a804273fe073adfb5ab96730c53015a4ab6210a35a37b2331ff5123e00798c33e040a913",
+    "Expected": "000000000000000000000000da21dccaf37fdd0c1b58089fd1f1e3169d52667c",
+    "Name": "ripemd_152_5"
+  },
+  {
+    "Input": "28ad03b11a0c101861320448c1d5f3113a5035bd5aebdd25ba42234c22cbf1c3e6e752d40d411f1ee6e67f48109c9a059226b446601047a2189ab815a3fe13c405d074231b002ab97c2593682b282e33b3225fb6bbc69c5ff1b0d5ae70baf8ece657fda33cf4ed1aa89dbc19d58fbe3043acb5795dfb8c0cb97620f16f8f24353cea27e156b31a8a12897d78852e3369955f9bb733ca44e8",
+    "Expected": "000000000000000000000000e20154baadbfd9f2a82f6097dad43be535f0e4f7",
+    "Name": "ripemd_152_6"
+  },
+  {
+    "Input": "30fbe57c2fb5528cc73458e18d6f832f362dec7c49140e6523ead045131a1b719b0c836c1ef13a79e88d79bb16d31b121ae28866d45d94c8e39ff5bf6868ba7337cc03525e41133838cb0a2b191f538b30187dc730a8c665bbfce8186883500baaa6c3242a0d1474372a462bf4a782a438b34d9de680e4497f0ce953f1bce5e2e607c112e8564f7f8a27de64d41d13ab67c1f7b1a7390ab4",
+    "Expected": "000000000000000000000000f6743366ef085ddb4673d1f58d6f58249adc5e26",
+    "Name": "ripemd_152_7"
+  },
+  {
+    "Input": "dbba7d219dfeb31255f9401d5b3c62f8eeea0534e5bdcfb9d8715fa30c01364a3ec07f51617f9b95bb0d12cd744bd63780030798960729d63db70b8bc3c0030e80d9b8ae766e3330128557e6c34442f652f75e9e317ab5358016906fed23108bbab19de22a3b677c3006ac93e350a9990d32b6969af54dd345f42320ea96def3c6f4dfd4e22a82686b7a3c57a0df5250a868007b1088ac02",
+    "Expected": "000000000000000000000000c25fa02fbdc61341da3f4583404c9049e561c087",
+    "Name": "ripemd_152_8"
+  },
+  {
+    "Input": "0c45f7b6ad239e703e40a30832a5296ede52fa626796f8e3969848f1b8b36bd28967b762168edb451322e2f0c4b99b7f9112c9a66093fb3f36dce8deb60b1f7c3ec3ac9298222f71e749bee9ddad786d7f26399922ec0a91957ee08a513c5e22bbec04722575a9b4f3a1343db0ae5beef4e66fbbe1ac9044b9a633dca1bd2eeff6beb22bc5e884ea429dc3ab2efe9a31e5b3618f0ca06e42",
+    "Expected": "000000000000000000000000946547a513ec99bccc5cdb091b6a9f0451485524",
+    "Name": "ripemd_152_9"
+  },
+  {
+    "Input": "8e0cf0f590f77d13819001916d2c58a654d0b9d3c47c842f2d649cb2570dc0d5cb5ce6c84f7b88c4ffd26495b1df1b407dd3e1ba6d95343d1e4b748e36eb0c1071a8c2a479dec43d644ec4113142e666bcefd6d729d4faccbc147effa836ddab608716cbb75957d1d56c83dedb69a99ca9d0fbe380b70a8890872a4d5fd81a9a2d2d59a7f138327a20263d6338d2a92fa5a2f741daefe9aa81d06f20a6fe3641",
+    "Expected": "000000000000000000000000e11056c9a2360f027b66a041cf3eed334b1a79dc",
+    "Name": "ripemd_160_0"
+  },
+  {
+    "Input": "af9e28bdef215a58bd19ef060814daf05a31fe09d33c22809bff7efe08ce24de7740a826d524fdb7969776bede5ada468a0115229152907cb2b050760c18c8e28e4c5b68ce9fa196887887654c042dc71b1fa0758ea165efd2c778b1d5bad81ed226f56bf3935ea95d976fde5790ba0584e5bbc78b37279aed8e50389899b9e9eed636f12c3c0e5266f795ee75c6c5cb45f8038cb55acfafeda6a0ee2223b30b",
+    "Expected": "0000000000000000000000008894bdd32e3669fa4e73e68304a19314d88bebb6",
+    "Name": "ripemd_160_1"
+  },
+  {
+    "Input": "c133e1989ac82e4d1c9852a6c7156a34b05784a58231d59e3cc875ac5834d5c825c36b4f6bb205787fa1337a952d251b3fb7460af6ca855f20a05ab83b7b218a0fdae1b53f6442c4378774a981c90d282d5f8793feb2334470c873491e41740fea09a3a682fbde7f418c39a8e954e805e7e1babbf91f30335ac60f574e9f071070f1de7cc5e6a2cf7dd4b6e60ada67ca47e7b9417bb5f599048fb0c9b2abf33d",
+    "Expected": "0000000000000000000000003a6f9ca99d18bbc03c808b398d69a11b29cfd320",
+    "Name": "ripemd_160_2"
+  },
+  {
+    "Input": "94f0feb3fdd59487a4a211ca6f2e1f6ae809212eec0a3b0f2d8d78481bbe87dbca82cffdf59b742a736ae9a6d36f7840c46c20c126ec054f47ad52a22948d7219b4653e30be25783b35f58b411df552ffe234b5686d4306ab4bbe31c6e42cf9dfad69492cab4ec7eb89ed37f1e7fe898ff49ffac4ef2aeb75d9c6b544109a08ffb1946d91fbcba1901423b1166ab5e9e97f03e772be0a8bb15964870e106261b",
+    "Expected": "000000000000000000000000795dfc5a9f31e408577e66075bc3cc7fc4877441",
+    "Name": "ripemd_160_3"
+  },
+  {
+    "Input": "5af71c9baaf54967683f8553f72abf789da465041ee5a92c9ce1ad562c91c4d70586acfedb0d4e9defbed6a4a8166857ee2e6ecd4dc2a32070219331bcac5926c7effc9a7fe773a420ca430c58bb94e7baf26b9a97b618a15e7a18b31e5914f1a49b2f34b83fe75070755d20cc04d273a943683b83a11b5245a82699c92b317a2d5a3d0370f4a58c21016d208609f1d3e7cdf43abdb85199bfc67dd12f589b8a",
+    "Expected": "0000000000000000000000009e68d2d87c9ee3ef0d8bd09c17048e77f257b71d",
+    "Name": "ripemd_160_4"
+  },
+  {
+    "Input": "6e279c1650e11c0292976b3d30ea616da517319ad273c27fbfac741e2bf5267c3549b86ed3fb880269be22b9cb8be6f24385bb5e24bba81bce9fd5b72ce2ab71c7e0b8f30f1497ad9cc5a7b6e6eb3398ff9eb9ac0bd09bb9816998318fd8f336c8f6dd56906fa13144dc87c31b53186b0683cad220ab2de89d2fb515bb269cbc9d50c83a4f8839bff2914c03dec6b85e2c398c2642b68455017e2032adc036aa",
+    "Expected": "00000000000000000000000085914ce645639ed930d96c4f34f85848ea8c3166",
+    "Name": "ripemd_160_5"
+  },
+  {
+    "Input": "9ec934eddc44729d05f193ac927fbcb022288ffb2bc7d4f46d1bfcc7efacef946848a31608381c4495641c63cd347d8ae2cd91864079e823648950a39f1ae8c0bd211ec887635ca841c4608fd00bdc0f5fd0f6365dcdfd7d6f4c36f4b25b5b1bae04af9ba3a5ab08edc5b84e4381ff8f666e966cea58453982655ab1731fdcc210bce61d4e35770e7737636c0f9a664eefa948662d3d22d1f1708fa48d3043de",
+    "Expected": "000000000000000000000000d684f9689cb21595c0920a1982057130769bf0a9",
+    "Name": "ripemd_160_6"
+  },
+  {
+    "Input": "7bfd67fdaf7c6c3d0b8bbbe28908bb2560a5f5e7353422b9c913ff87ffbcfd7a65c86930c1d142985bf85ce70bbad170947e850e5c6ac7803fc45980dd37a57d2397f158eb83dfe393dbe9ad2c0aa6f9b4d23a2d23cce532afbc33d1cf3b0d1808e559e394a9c1ff07a45bb3e022f9c212eea4ee5b77db1c5b93ce72c0512b7989f436b07b2c9077993dc27130c744524de3d15578eed4a36e219ac36a0393b7",
+    "Expected": "0000000000000000000000002d6edabd4f90383eefe8aee32583c0783ff392ca",
+    "Name": "ripemd_160_7"
+  },
+  {
+    "Input": "5e55826db8d12169a31ca27beec80554954f522b56f7994c62bdb527c2438d5d01811ae493f9ba67ab066eed97dbcada465be8eae9512e5a595fe8c75032724b1362e8e39ec661cb3c5af64e0001cc94701194344a7404f1ecf7df0d5633eff98aa2646d482d10bfd1cd824db43277cd62a94f85eeae0bbb1b10bce02a7c2a9474d3d66cde7c4c8a4499708a0c6f7c4da458eb970b6ca87e23601c702365b6de",
+    "Expected": "000000000000000000000000a1ba7cb01ffba46295f65b25de7d31158aa672f0",
+    "Name": "ripemd_160_8"
+  },
+  {
+    "Input": "292855137cd6a02ef3b62ebd0843dcd05a2d726a5e054942caba188a826ceeb8389e0d43f2006449fe2de506dcdba4cd0e6077e2228f7d8b6ec9d8a4129c494fe5f26716946b0471634ff51303e85f1037c0863958548c6b1d80bbd2b9754b3d5f8dc332cb31e43bc2e551356cb8d1533c6e567d34622667e7e4e3ddef352f03389cc6cd7670a599797ba35bafbd5921e0c287d8463f136acef92b2ae18d73c6",
+    "Expected": "000000000000000000000000a75da1895e99e914127838f58407cdd7212385ee",
+    "Name": "ripemd_160_9"
+  },
+  {
+    "Input": "0dc7052044251fd360538fa6d5dec9fcee53faf2f07de5d8df212d04f968a0b6e038e59631dd1c65942b5208c76d00bdbf609d0288c0eb81aa557c18376daca6c579dd4f361fed9084d9c66a3ec4c6af5293710ba5299df3abc4cbaf5802b536dfecd9b1402b13ab154c0c5ace2235c48391f4bab6e48f88567ddbb0d11a95dd69f0f3c3f516ae34fbecf45f4636c22acffbee765952b332c0f3d8cadb9c93f1a531a2f072942b58",
+    "Expected": "000000000000000000000000d53d19ba25e56faae2a4724f16772a6794a754b0",
+    "Name": "ripemd_168_0"
+  },
+  {
+    "Input": "442a605577117838c420b6d984b73add6d945c8998df577176618f1954730111e572937cf0c9f7b3298a11d18cd890cb419f732c766bc621a5eddb7c0a0ec231e416fb81764074937821613020cbf211ccb3e748563da179fbb9f2400ed1dec7ea63d2b26bb3e9c2acf70117e3026626f6f88a0787617788b25bd3905122b4863937a9d6320fe1e5f7d6e5eff0c764c83a31eb576a3c9ebaa0170d7b7604b8951a95d49b6697e2d0",
+    "Expected": "00000000000000000000000009f0103b937f5d46c8a74c0d2a1b85ab305c4656",
+    "Name": "ripemd_168_1"
+  },
+  {
+    "Input": "cd2a41c3671d8f96e936cca911dd516d34858ca787d0064930dcb5814220ef620eac89a150d274def2c10ff1a102f9ea2c2afc06f19e627e9ec0edf1083823d30ac569346040965e1c92e0c15011c90bb6c4f271a81f8b9d770e3e58b1d73e1b14770efc6241bd3994bd58915173367c141d0ff346e46a20c2498a74f910e9bb2d5d8530afc7ba47c3525861c9e8c59289a3b3888f8aa519320dc8ba0239f6079e7d4c12aa7c8827",
+    "Expected": "00000000000000000000000000ba290e3ab4c50da9d9f5e2f310054cec43aeca",
+    "Name": "ripemd_168_2"
+  },
+  {
+    "Input": "f444d3dd65485b6b1d688a1aca2a837e0a353039294a9988a7111ac134a6a8a68e4f881e7486025c7a33844df8a5feae967b56f28e722fba52995cd60437d68de3671dccecc7670d1b59c33ff02791031e7a9424c781ff17a209d132af06f5b825df363fbd902cd4830f0a6e93bcda7e9a8b9cf7ac448547c82dcd79463858d2ccb98bc1752546ac58fef5bc887b7caf72f2a533fe1455ae523841bd49b4adf16cfe87edc6f573eb",
+    "Expected": "000000000000000000000000e16ab63d077935c36cd73886efe0bf4acac339a2",
+    "Name": "ripemd_168_3"
+  },
+  {
+    "Input": "52c3445f0f3bd7c387c97111aad3d86510d2ff1cc39d8a66645d28f96884ce5a73b243b83d44158a66eb6d31e7c4ae1f4b3ddbba81b2cf9a654ca7c4ea2147ad6c6015ce9598a929a13d93d7c81e4f43cd003c26af5934435d1a040d6bfc86361ea87af09f6e62111c48993c408efd3db9ebe218ac68f61a461ad9ec1306873d399d3732db202d9bd21202bfbf2cb0ba85b0e0343a6539c6ad6b0269e667ec52a691b9635e38a46e",
+    "Expected": "000000000000000000000000072d49250eb7dff7d71011dc3f5fb4642926e0e6",
+    "Name": "ripemd_168_4"
+  },
+  {
+    "Input": "2469811405ef6325ae7ef88a67c1d1c5b05806da329f27e0968063a924b6f2e212b1d90a7461dbd6092c0963daf53d146e87abd3ae8c76de0d9a35f474325d0f065442805cab3beae4a186b252ebae54a567dec6695588f13d438676c4c2515584648760e05617d31478cc97cbcf504c8121a817c2d5617ec20e998acda67d406a238f16bc2b3066a6d69d2436577b8900a180e6a71b0a01c6d5e8cb6ae97998c4d3127b2228942a",
+    "Expected": "000000000000000000000000aeebfb4e48182e804f36062482dcd9e4a0cfa6e2",
+    "Name": "ripemd_168_5"
+  },
+  {
+    "Input": "538e5fa76b113af05b705b1dea9e05966fb773cde356e2edac3afd2bf703b59161162dc1e915873ecf606dfc0e6efec5cef6c96ce38ee76a68f01bfddb7fa3cbe79fffe88d8439be92bb839c7e520e4cbffc1a58dd06752a2a77abab835d089599b4781ae51ab998ff3c5b68329068bf3a276b60e0775530d1095881c8f04a7a4c5a2143bfcf50d8e5430799bd2ce6b457f35cfd74f62fa39f919400f4d692855a4b4e9f91920e43",
+    "Expected": "0000000000000000000000000610680fae2f0ab314db7047fc7bbb45845d2850",
+    "Name": "ripemd_168_6"
+  },
+  {
+    "Input": "06ebb2e772a484f423357d1987b6d02e80824a5e0f1a3c8fe6f2187f0c17d7d494d183de294400b12d1f3709700634653374fba5a94d69163ef616a72a63d462afd9f01c9ddba840b0721f50aa8613918608b40b5e4ec60da437e7a604d3ccabc30e970031041c3f614ed9a08dfd406df00719d5eeacfb0a96413b608974fd0aa1d4c6176b968dc01d48007ae822b89be28efaba18696816688b506e284ba534c05e465a39dc330f",
+    "Expected": "000000000000000000000000c8ec44f22a281439e7b886da289f8ddc38c0f2b7",
+    "Name": "ripemd_168_7"
+  },
+  {
+    "Input": "7c1dd2e5e5f630fb1d07e8934dd3ab029917e7775e401c0bcf7e1fd83aef7284f27b66cb70cc9122eb275b01c5134312944302eae8e05c46b7f3e09e9506379464e9d16cb61f2bcdef30cf544d97e078fccb999b96a1da0eeaa0bf232f01995f0be70a0acd2107d1f773610f4d9b6698f50509c5d05de82d516d1229cd27028535bca9082d66c06761f702dd439faa4957caa70ce0343268787f41a2f4bc0cbf302ccb8d5d9ca774",
+    "Expected": "0000000000000000000000008ab69d1937b5bb149628a40306e8a93e3542e944",
+    "Name": "ripemd_168_8"
+  },
+  {
+    "Input": "0e97b4dd507b85073c7dfbd36a56f69bfdae83e20616f0ce7980eac6c8db86ef83748d10b210835e53baf8cc9f607915df272b6e28ac6b2854a148217a40ebff8795c9c85a6ab6bdb93e90d9615ddd7cd09a3cf837dbd6f6a256ebae4b204b3888d7bd244bbff26431ab5890098870f13800bb3be3e842cab9d3169f923053ea20570a0912a3d2d42a2970fdb641d48e1bb43cd59d57b7945805f2e8013007c4f6d8abf441728eda",
+    "Expected": "0000000000000000000000002b802bdc4397af5ca582a5a681c15804d5eabb70",
+    "Name": "ripemd_168_9"
+  },
+  {
+    "Input": "8d742ea2f1df545f85d092f50ca8275c19357c8d10d82e74e8385b17c7955d76e8b2e51afc0709186de05bd6cca4324c502d777b25f3112ba2264022e2f28dfb6e5d5239ba097e9d815928be44b6a62a5327b48106ddeaec4b75f21087f5f90f94c5572f952fef954e483416c2d2a1d6e7d64b471cca34ab0c91f61ff26719c7186dfcdef13895d37ead407873736a744b44c34932afeb336cdfbd4e23cc6b69593cd93a0f9625545865c3f437a5fec3",
+    "Expected": "000000000000000000000000b97d0e1d7ae069da8c9ad87f7405c8036d8b5491",
+    "Name": "ripemd_176_0"
+  },
+  {
+    "Input": "e5723630020fdb48e44adda735943c91ad7d1e12f3c32d823833eacfcc8b02ba347a105bfe18ceb7cc8e2329cf3cd187db37c85f34dd0698167566ad31135fa36e9e37bd811b76133c12268d325ebbd6656e7ed718cd777458867dc98b1b3bc50f4812e13846c72b5e4aad0e43ef5713168f7660a6f3917170b80a1565608bb97d46516db284a3938e672ad3c6bd40313d77c5d643ffcc59e3f55ad983cdc0ed9933411035e0492ef2fdb220b280f5cb",
+    "Expected": "000000000000000000000000226d51989ccd0eb84491dda5189cbd9746305d33",
+    "Name": "ripemd_176_1"
+  },
+  {
+    "Input": "aebf31d295a518b36983f20455636563586cf63c5e52b44aaa79cdda6dd6fa92c6fce11d867b2ff5a04c9e44e0b39300f878861265c2fb9c1666b62a13dc27b7b7334796f023edd4ad69f24d44e3bcc4efaac96bc5f686d6b952e7082236622b737fda0dd3900bec71654bdebc8ba2e4bc515d3a2cd3608afc4f850fdbda8aff27a48a2f49ebffa365aa208678e4d52f39d6045573dafd09ab2a0d8ab6e97b0ade43bd79d820749ecf19cf7d99792ca8",
+    "Expected": "000000000000000000000000b0a211dd8da3e4a234500c2900a518dd8a5c0cb2",
+    "Name": "ripemd_176_2"
+  },
+  {
+    "Input": "f17c1c3baae951048e8955018cd87ecac6ce5d129e69ca99d09a7e346b9ef8084c4a2ff4ce4b633ec8fe0bfea42ccc329b7d3fbce96c26989b3c7a391c9e806a72e5142d1d85fe86bdef886e0eec96001ba6238a2f0c87f885e15bd13c911a669af09ef1f27cb83189e4e13f3801c08d3a2adc8b5f88717954ee84499defc0c4c58027ae2ed6e15b486579357dd806f6d04fb564ceb5b03195c51dcf3b29180fc72c1dc1efefb775a1bda754ff17389a",
+    "Expected": "000000000000000000000000a428a0e7cdffba3b687d153f4f1972f7b95ad9c0",
+    "Name": "ripemd_176_3"
+  },
+  {
+    "Input": "6b6b6bb25e22697847d24a117eb8974b54b24ea2910f04935c2f9bd4f9293922f8e332f54802f9460424154b7eba88a0b4a0c7c2e611a24c722975ae882dcb4b45e6f6b41cfc87e8c766beefd5b10bfdffa4ccfe26c07c299013e835e189cd95fb2cbd0efaa00fc1d85f0eb4394a754d986d48aa5b00fc16c36dcad061d10937b55ec4deee63cc2841b7ebab84f910d28524dd2ea3e14565f503e293d4146bc690f95501e048574bd41729c8b1777a56",
+    "Expected": "00000000000000000000000081cf979787a87f0c0db3cb8fa912474d1e1ae34f",
+    "Name": "ripemd_176_4"
+  },
+  {
+    "Input": "979d4df836daac0960fbbb8919d2f90c3457cc987153def711d6e8a12fb14363843fcc9917b28c9cc9a7337b49ab870562844ffdd68daa04656f41e2874da4da25ae495ba75cdd0bfe200ee24d813e1aa93c100ce861c9ed7fa5537e11778990dde4f11daa0091bbfa320a5815f7e083b83ca51176fa02222e81962b16834aafbb2a329761a3d6a2e4d9d63d7bbf7fc6fd321ec0344cc4d7d1b6565c475ee9679d0151568f4201a30088084a60fc3e67",
+    "Expected": "0000000000000000000000002a602362492abcf0275deed6ace6b0c1c2b0ddb0",
+    "Name": "ripemd_176_5"
+  },
+  {
+    "Input": "f344bdb9717c0110f9be471ead9c0a8e43cbc3dd7ec63ac63618a9e5da1f9c3fb952c6fc6972dfec6caf1a415a0aa79eadd03a50f9ac6147b60a94d3443fc775e936fef30b4ab2b9312600ca2a1d7186733a3a84eddaf3af8c5009646a899f6ae8cf233f535e360e29e2952088ebd7b6352eaa97553ed22bac15d9a414215bad0c69466ba7d2dcd145c9c4bd680ce3c95112b5912aa3cba657d8de3dc8138fec92b391d5f988b82e19f16fe52fafea71",
+    "Expected": "0000000000000000000000007d24910533c6d3a3a13e69cdd7ae31b00038be04",
+    "Name": "ripemd_176_6"
+  },
+  {
+    "Input": "a38fbf292d35aac378f3d759babc607d22e677a85cade63a4bd54cdc1427b1a45683e0b33b5463bc71283f0625269b2b33ead69c1eb7b23a996c31c514d06937b823c51c796d60b3288a7bfde30ceb84252706b1d99fbd010c7fb620ede3e6fc5bcc597c5ed7f79173942a0250e618c93cd0917b37b5f354d63a2c02a576080c2857edf92f1f7e307c69e753fb80151c46c0d28ff431954ff31d5127ba53f397f2613a8e50fbc6683ecdd7c7fd38b4ca",
+    "Expected": "0000000000000000000000009f22c3e2c4ee8ebcca3b494e6c74c0aaf18bc18f",
+    "Name": "ripemd_176_7"
+  },
+  {
+    "Input": "a8e5dc9778909fc8680a58b16ebf40da2bf0c1aa5ba9e99ea4fb93eff792f7306a7c1295e2bc624651215c36476db0ba57a747bc919991ef9b7b10388bf3f301fd910f807ccd31e322be46580a71b7c65890cb3a50e0fc5723f3263a4cea6447a8fb4b21b16105915927b79c0988e1fc86ba09829f4bbb383e2e131d554c42edf1065022975655c07df2b3445a3e6cbb48c0a91904cc227307f8d9a8a89d9d7233b8612577124640b8c338272a6ad6b9",
+    "Expected": "00000000000000000000000019a6a1d820d0f33a97b06177f8f02b56b414ce86",
+    "Name": "ripemd_176_8"
+  },
+  {
+    "Input": "03fd5e91f590fbe171aa3f006617b20ad645626c970c2351e048b2ac37732136d0cc1348f1361d017a8bd63f7cff5302aac6f0d47bc8b23ccc19b4b759b8812a35ee16785c004dd2a01920c52d3244e2160fec2d17a519974d4331527cc62791f1fffedc64c89586d0d8665e46e1ddf1fb89f7da29ac09f2e04ac19a2f5f088404a6d6e29336015d99e107cd312e300bd54f815c785f6008c47c99fa008452703892fb2600926a2c15b4241d3541b2f9",
+    "Expected": "000000000000000000000000cfac70ddd8799ed49dfd0022c2fb91895817ba5a",
+    "Name": "ripemd_176_9"
+  },
+  {
+    "Input": "696622039f0ea07be2991c435dc3cc2803f9cd3873dc6243748e16e4806f8eaa339edcfdbf4408a8e41a3df80c9816211bb722381c21e5d29eeb1fc229dd5c57b622eb7a3601fd818c4983bca07e870d34135a2e7853c74725bdaee1ceadead7b4c7d729650df6544bd525c05c942342cb115ed520b32731c2b746df02599981b3d06ca4adc9dea8d383cc42c193d6090033fdcb731830951dc3c4b33f06310eca51762cb7279039b3d7d9ace93c5f2a69c039b4c6e42c0c",
+    "Expected": "000000000000000000000000ff18d85f1af8cbd0d33c2ff7e10100a7e1716462",
+    "Name": "ripemd_184_0"
+  },
+  {
+    "Input": "bfce2a6ee70f41bdaeaa01c75c6c60ac59100794090b8c214c8112ebfe12bf44e84796e8b0cd03a93d2164d6edf1f06a5c520330a177da87aec34070d22bd29d861b69b7b5155ae3c3e7719504c2f199974fbb6648097f55dbb32a4fd8b9dc58a382a7e436e23f49a134915372553eee8c605436221acc80a602225a5559ab460c016ed3490c9333af0fee7936909365e99b56c62e360c6d57df9664d3e17d9d46a886efde4e37e38859893113558843bc019699eeed8ec0",
+    "Expected": "000000000000000000000000ad2970fa51a3fda6dadd0f1bbed22c966fb23c94",
+    "Name": "ripemd_184_1"
+  },
+  {
+    "Input": "6ea9b0bbc65391bac93e2393de507524e776b01a14198f2afabfd0a09ef8ad2ee2b433b7a95c26e598002cc00b7904816d59baaba79bae7c6a7c26dcc48a487e51c54007bd153b0f1cfd11e0705535da2a695edb01191f0c83fc896357bb67132897583b53567bcfdbc63ae3e864a9cda24bb732694a6b27415c5212c7f45a94b557381c596e7d6163864de141aaf2a255c4a97c3f622cf6079cdf7b9f91484c2f7ff17e54d759eb9c51e16cf6f12d645bf2d091427416b4",
+    "Expected": "000000000000000000000000b7cc9e2733ff6b1c3955e2ace56abd6749e0ece5",
+    "Name": "ripemd_184_2"
+  },
+  {
+    "Input": "edbe1dd21947b4d95e34e0cf84fd53c8b5d886f7d3c5718cc752fd42c1381515a60997d4ba11cad6ce0a097efee666c22d1dd0ae8c8e11283aae781e1deadceb3ebbcbc5e5280a618053d8bac4ca58b67a85d22e45cdaf1e43d99366bf31ed164d9faeac78aa0bcc7b2baa349884b54b542e3993210ef002f70c6467c7d512801f0003da789c00583b20441ff972ee0923882fcb622e90975381eba92d57e8d3e3b331643962c4722b94d087c3ea101649ed57ff308dd3ae",
+    "Expected": "0000000000000000000000003dce154231a400f6228b5cbdba5d86d47e346fdd",
+    "Name": "ripemd_184_3"
+  },
+  {
+    "Input": "0d25a1ad8884763cea1b0b7c56a3834ec66eaeeadfe5746230768446a5f44e1594700f8cd726904923ecc02cc2de494e4f8c35b920a35b71dcf8d15a8a826e5a7c2a2c4f1ac2c2e3a6d100363e7f541882c905364a0f22c3697b9ff3ab478948e1ded850efd35383dfb41f8b080ea9890ae6101fac82c10267770e74a0ee16b5be6eae2d455d742303a3c624d52aa726216b2278158f3df98af5f2e8c39b1cf7629d0c9cd1ec5c89d5067df65a59ace5002fb31d0372e773",
+    "Expected": "000000000000000000000000d9169c855cad08eb4769c8ce90a47ba0dbd55842",
+    "Name": "ripemd_184_4"
+  },
+  {
+    "Input": "0499b26d617b53ea04821c6eae922326d755a0df31b559ae5c0edf248b5e531e7bbe80c3076b13a0b73c627cb69241f8a398f43e29878405aa846e68337f4e9c99dde506a3af792732342e3b836376d4816557fc1fc9b9165ee07c5c29fa713babeb4d7c0c2464a4ce5ea11fa14fb5abcff9b6b891ee773ddf9035283f1afc294ee68b2668870aa45e483d208483d9e967b11990cb55d860369e6daa5ced8d8f43e742d2cd869670c73accb64fc6cb562a4b769367171257",
+    "Expected": "000000000000000000000000ea699290c275f48fc7e78e9b5aed0a7645be6197",
+    "Name": "ripemd_184_5"
+  },
+  {
+    "Input": "4005df80aa522e889e7720a9f2e44e6e7e19c3160ea282ec87a4b446d7b1c45fb85bc2515c11a9a85208da4bf742ea31e9c0b672121c7592960e7609b508e86a893c9daec43032946a9e892dce960e07d29b304000378145148b9a24afd151579c3e7b93c4220edf1ad03c2ffba039f67eeffcbc27e24a12745c3fdb90013ae0f685e6bb7713f8fe202c05dfd18003eff261456026a5185ee9e68aa821fe7c5b4d4e7d10f1e8d78bccea9574899fa4c8f6af51322d59f506",
+    "Expected": "000000000000000000000000581b8fc66d7ee135787c5149e02bb807bcbd4abf",
+    "Name": "ripemd_184_6"
+  },
+  {
+    "Input": "b510eddd5684593194b3c88e51af5822177b85978526036a426c9ca1077d594618ebb8fac4cdfc89c55e40cbefb37c461370a17b4e005c1476c223ddf6f1637ec137320e391898fa6e456b39f4efe6581657f5c701c696fde8acb59e856943f15cdd639c1fa68ed7ea826fe4a3d08a0e1365818cc2949d2e293b7db68dea2aeea6a30469c011fdabe5d306f46a31c14de7b2940104d0a4424ebaff805a81f1c4a910566057c81604512f4679728af531bd07f6e1a43f1053",
+    "Expected": "0000000000000000000000002fab30b769e4ff35e40dcece0d0518bbc2f096b1",
+    "Name": "ripemd_184_7"
+  },
+  {
+    "Input": "30ae641b34115f86ad25c5d7eecdfa054ff6d13bb0967945ff3b6fbbc104296805e4fedc3c25bb55b75cc997834de6b7b649139ccd0d0d109fc7fccdf601f348a7afab4edaa0b036ac595b1d401777cdde4fb2dea292b76d8130e6aa8aff5edf0097de935b252d42a777d4d9b8615ef1048e5f96696673bd2f5760c7dabd31c5d62474af7f5f12895db80e4c6b039904bac5c50a3a8a37111114c22839c88ce4072940c06f0d8b6d53fed155d0399ed7353a5716e5ad8223",
+    "Expected": "000000000000000000000000e28ac948cc0679a0718af94a0ca846f6a23c586c",
+    "Name": "ripemd_184_8"
+  },
+  {
+    "Input": "a0ec7bf9e61a0ddfa0152470c473ff465789c7608375aad7c3f37387bad1af3a896a7e66a80dfce2df1709fa252b6fbe4334d02bdced4329c4b0469b8a96b75c73c36ff66ffd74c035b51a6eba7df98e4d4305066759fd6170fbf5da3959a49fab7e97b3df3f2a38d16d714dd798a1f04ec2cbf84fce76915526af57576b34abcd154b0d9da6682a0bb0db04140dbd0c33940d59c18d3e36e538bcefab5d8d0be5fc143e632e86fc065af3f2f621f293b914980abfd6a0c7",
+    "Expected": "00000000000000000000000058a6625b2867f80a013d04f052be4eb91b6ec2d0",
+    "Name": "ripemd_184_9"
+  },
+  {
+    "Input": "2787ebafbdfe14ad7a0ae367173d37a64944165540b9fd5f1fd832208b86f23f30b921d8cd2ca46aa6f3e0dc6ff08d77972fb0a248bd39e90a1e9f32be9e892aefc0660976ef912d80cb34e7b6c52e81c40c70be23ae381cef0e115d8e73e5aa3a5ccd9436b15d4d04a8ee9894c116190062c4e7cfabb047b585f3aa1eeb4605d45d56c1e2787a03158b9235a288be077ccd7574781618a4cdeb730559887bf6c7a5bf2cfedd7048be7ac7d2ff19d4f8bf0a94295ebdc5e792393e0e4bc27d56",
+    "Expected": "0000000000000000000000003446ab13973688a2966f1ba3262f5e85c0db4967",
+    "Name": "ripemd_192_0"
+  },
+  {
+    "Input": "c9fb35df3c82d015bddbddea37330a520c61912200c6c1b3f6e3c5b7b2ed55b43563651d5f5729a0ffca6b383d884823aa3b0215fa057bffd8142199a16e4ffea9c594fad45be7dd6413f14c3d464ec9306bab95aabb7572b3ecdbb6fb2b1f0d833323c3a668541ceba18375531c3781dd98525b49dafce4c4b3188c90f3f4b58301af7a0db283784aa84c3180b536237c0b972199c6e144b738bb109515b786d422e21fbffa7d55270eca9c96bbefa29dd915aca266071673e970daa0ca9c05",
+    "Expected": "000000000000000000000000dc8e513a6217a5c242da3f4a18b39a3af80df3eb",
+    "Name": "ripemd_192_1"
+  },
+  {
+    "Input": "bf2247078366582aca293e7747241494a0be78aa12b9fd43deb80bc5248a08f03ba7ea9ffda87131452b24a9efcdc91d1262d0d7550e5a6b787eace3577159b0bc55cde4d6c75e5ffb2d81df952c29a419edc72ae0ff0e838ff43655383796b816aa2cadacb129598aa459bb2e6b7fb26d1bcb7a49617b6ef8e57018c3db1f51feb22d73fbe4e9c6fb862959de8f47f6aa69e3e87186a461e0caaf74d4825cbe8c02014d5392d30863a12102d1c9315839b5611dccfdb489207f918662513850",
+    "Expected": "0000000000000000000000003e75964e29835704705b5cabf936f17582e4925f",
+    "Name": "ripemd_192_2"
+  },
+  {
+    "Input": "21eee0406c21946ee13bf163bcc5d0f141ac06b6ac64567954769293bfbc18e4d960ff678e1b46ada4f866adf354ba8c1514df10ebe7d88d2c8de117ef5ea249729435a100d898ebb2a00bf07acd05ab6c4a9ea667deeb8b98f148263686a3a304753af76295f72295645243ffc87ffc2110c9d8dfd20b464760ad965d7a9794f6384f048a8fca1c0c7b98e1f0b0f2ce50a907b365d6f9fb0d929bd9feccb582d1b8760cc40d093912fb073c5012f910ae90f0a979cfe6d81c603adbb9828903",
+    "Expected": "0000000000000000000000006f3da33384e815db010babf4f5c09d1e37dc46d9",
+    "Name": "ripemd_192_3"
+  },
+  {
+    "Input": "8617d12e2288a2c0aa2a90c84be5438702bf882189c0bff5ee6133bc9ea2c224ab79d640b042664b23667d6c60ef9a5d59de72aee57a78d75752b350ce56d8dadadb60e2213adbf647ef303c29a0462470111cc0603139ef17b1c8544f149e451d1a2965e995bd4380d4ec52fe8e65e7fd99b1ca9f4f0c656adf7051c4b9a99a1da591dca779e6db3e66ba0cf4990adbc576e28a7f0d2162931c75bdf0f73f322cfbf2abd851d2c1f55c56d4f8b11b196c020c2584cb03764580d410d66784d4",
+    "Expected": "0000000000000000000000005fd6bca29b2f04152afb1c8f63be929e6bd654ab",
+    "Name": "ripemd_192_4"
+  },
+  {
+    "Input": "4800de911ca6e9f9ccc78b4d7ca3c6ba2c287bdb19ac166f90b3b07c3922e2f3214edaf16742762baa58a3d22d5bb2305cb03a1326adc68adcd268428f82a1e09776df26f740cf99209f359df3c36c718768daac134df14f52170c7e3b306869c1f38916d6bdd5d379967dcd058ebce5887ef2bccd5fb7c2bcd758e374a195e29085bccddde28db5e7264d909bab9cdffd2525f6eeaa642c9bcbe7d5cf621def1cb8c8303157f23987f8a2d206f3add697b9d0a303393008429e93cd35711f74",
+    "Expected": "000000000000000000000000012491954489df7ef71894d8b7530b979579b750",
+    "Name": "ripemd_192_5"
+  },
+  {
+    "Input": "2062255246b154dbe045648a401b7d05ad4d307cec1d90021b1373aa0eba394761ca9ab9c3df673b7ff8be098cdadd8354c17becdf82e7e99ce264174653007a334c43489ece679dacaf27ad2d43c5d572afb58724920524c703cfb458e2ec4b681a0861df30946911d789a5da1f5b89c38fa1a8c0407b608122a18be05955dafe0a2e7ebb38e9c48dbfde46ef7434362df143387e3ae2b598d97306b54675936f0798b448ea0d10c84e2a8896f153b1ac3b84c5fed6a4ba6c932260bf01d34e",
+    "Expected": "0000000000000000000000001e2e28d9dfe9e1bf46bbcd54e6032e3501ff9969",
+    "Name": "ripemd_192_6"
+  },
+  {
+    "Input": "920a6eaa072ae13644662c4247492494cbfbc44e06514a712d0775501512ade6a8b7de8f34053facf1338b54cfbe38dad73121a0429663f484277af9a230abe6290aad4f185494a76901fa8f141e6b3072a6b0170804811278be2f4d7792dc258823cdb73dd076ad95679a9d7b11145c12a81b825477f799300d1fd761417c2b2427787428b3175657424e795673f0b06b230405105e61ee71e536e542506fd69f2e54f21b7f2116c30d6e444ca82fe800435cbbd72a98a6d22bac92039c5407",
+    "Expected": "000000000000000000000000a38594fbeb543a0cb85793a683776b460f7b59e5",
+    "Name": "ripemd_192_7"
+  },
+  {
+    "Input": "aa9b495e26cce0397382e1caa8abf669f7f9707b438bce44b36bfa82af3b8d5ec8cecea241dd6a924c9b9cc3d390fbf40ab897208ce9d3e4a148b2c30c25e7eb92872d76529fc90d0a296f5ccea8728e85bf799457910bd585d509f0922726ebe428fab2c596f23bc3c9e9855b74295f52caf73cb7371c93c65370583f7fef4caa89c8ce4bbe1bbc6d242f6610b90e5142ef01db8ffb89baffac9aa565477881f7d3d755410f77a0e4b2fad0f184fa9312b559785fb04c6020432465799ebe22",
+    "Expected": "000000000000000000000000733c99da9818ba753fadd58c68cdf43a7252f212",
+    "Name": "ripemd_192_8"
+  },
+  {
+    "Input": "194efa97f1da3192d4b64bd552b7d003b7bb1f46d707e55a49e790d26eb07c54557b05efdd02ac9d8e1453c82a321d798f3106bd18764140faede610ae01fa8077d2fc0c469446476928e860aba24f30bfa1cada04fa5da92624d7886d95c0c53313884abc4d430c06ae843d263f2efc1bba35f6cc270de05551e1f86096bb75ae1f052ee56ebfa7bee82655ec7c87fcbdf479fa5165eda62a0aecc4476e4b038faea236e782a8fbe27ab15f051ed007a61e25247f1f259b9300974f521f30c8",
+    "Expected": "00000000000000000000000091e47e1b28c02798bf9669b8de38fa91a8450b5b",
+    "Name": "ripemd_192_9"
+  },
+  {
+    "Input": "dcf8ecc4d9d9817722dce580e38967c82ba2ee6b9ef1d8122b3b72bcd795ae4813994f5645c6ce83741e48ae472674921bb2d9b8abb7d04ddbbb85a3f2f7f0909dc6cce56058692d7565bca39759e4b4b8999f37736d5250c13d8510a7f63b8681eda24db328588e8c670ab70431ddeebb0749b431bc1bfbd992c91f35d59b18427d13e4c5afcfc21fb2c3916fef3757a671b128f242bf975049601bc491c4f35bf25b5070829e3d5a66ad24ba9930f3ad64767c51e432b51bdbe2fab470688db83ef442db4ac660",
+    "Expected": "00000000000000000000000028eb34dc6d07bf956b7d86b9f00c361cef80c177",
+    "Name": "ripemd_200_0"
+  },
+  {
+    "Input": "db7f108c3d5333423da4d1a14eb213f350e5f2fc48eb8024a9535c082e11b366cda0000d8ed0f92ee30fd2c4364c163a718518321c5e85d2b8fe7c86bd65830e115a46f8bb8ecb002439236130169874605cc4be55a326e22c4cb49adce0292e259e92b229bf7965864a945de86eda3ce0bc9f1a6dc8b7b2c764884db0eecaa2b53e5545d262ad497c990d47434047b228600b5ec922927c5e927f57aa85b2df54b4bddaa041d43766c8929c8b9146d723806ee0cf042275f523f97f482fd09c69cb2b08dfb24a6d",
+    "Expected": "000000000000000000000000c56fdbda31422f5d3352080d38b82991cdc85cf6",
+    "Name": "ripemd_200_1"
+  },
+  {
+    "Input": "08d21adb4c0cadc673e78b90f7636fa8606ee8a5fdd9890b8017f6c432a45517d65328f13f3a2bb42d7115c02929db7a4773dec98152c9242cd33e4f83290fec0e3b71d61b2642b88c255c0115578a94c1a77ccb4b32a762d60b37827ad6c3448c33af6af861c131adb5920ba3c2b8514ba8984241cf6c783c22cde69c49f771196daaf64aa2a2e8a0a1f1676bbf81ac47cde609c38eabf457cdbd1e0c5366bf523dd5801d66a0282bc187d80417f455458fe27c4a9e5957138331b106ee884475d9782c7eb948b7",
+    "Expected": "0000000000000000000000001e3d126bb1c83a8154f634f79ecb1834c1e8e58b",
+    "Name": "ripemd_200_2"
+  },
+  {
+    "Input": "9f9d5c8a0caaa7893c79fe6374bf8f91bf7851ff935a124b54fdb5db498d2d37939fcd43bb93d29ae882f9eebb1de5b5933dfb9a3c2aba94811476b631cfe32b7b78b7689b54192da59fcd2baa47621ebd90c5cd12b89f2a533ae86d537fbb61a14b1a80982c92579bbe847b5f177fc1920b6a938b035a55dd1f740b033488325b9f7df1a49cbe7419ef9fdfc5f0c4ac41255eb172d485317c124211498a8b9a74c0bfda15b986c52b8256c42a814902775dd126a9066fd6958158a6a50456e83dc6c04442da34ea",
+    "Expected": "0000000000000000000000004349b8134d6f7fdfad617d7cf8c4959050b2a32a",
+    "Name": "ripemd_200_3"
+  },
+  {
+    "Input": "b8ba028831f429d027319a92fc0f30def8b97a43da456ddc79443d9f8df72cc129230f5787fffae14d719194cd6ca732db179f1c08d5af2a09d2ab357511633cedf8a6d86471f58c69c1a5e7518c69c34165e72ce84fbe0b7f69d9c2717e5d4df6d7875a4112bfa3d80524aa1b482c0c0f1670685a2c063327e586b99c0e84d70dbaac3f5e25ca3d1d50ebb31258ec4450feca1e02c84672ef15c49b4de2cebddab3bff49773fdb00a632d0ba8343bc1366e13c868dd299334c97cf3873dfaeb109ccbb8fcd4d465",
+    "Expected": "0000000000000000000000001cc7fb9849905835a061c2fca52ffad52f8ced3f",
+    "Name": "ripemd_200_4"
+  },
+  {
+    "Input": "1b84f4708799d84ad0a717aedaf5a76d2970a7b93bd23d372bda072454f25c768ee2f8f4205a8d2d380b4137d6911ea609fbc195cbefdad26326fded2b8a3fbf7637bc25bd201d20e3d4d724806cfa678ee039a39c24e86aee9502f00279284499dc7928ced19e03b699d7e7270c30e0ac994b060a28aef3e005efa8ee75dec8a013029292976e107a507ec09e3c34fb4baf2979fb759f1db20b502f0a12da750db8bd416c2d6ba7a8afc908f9a626ad801ef7019f5309ff3917f8baf17f71222166cb9b6c4beb2e",
+    "Expected": "0000000000000000000000001aa254e230c0718d7b4d49d1719ed91b0d543d8e",
+    "Name": "ripemd_200_5"
+  },
+  {
+    "Input": "57d0d054cba3f7fd3a28cd3dc4b40949da87899b9b8620db3de9f88f92c3538b7532335c3673f88375d301cbd4d65bdef0f73e1b62561f5b0fbc409e6534ad9e37d1c0724b35cdd3f94bf6489e500fbf216732cb6174ef712650bc8b6f6af24eff07a1163635e71cec6bb37527d6cfa83ea24fb6447f2493c78a267daa158eabb70c1b60af8175d0d4594c99122cb44247ee72fa5f707686bc1b0f7db37c389ee5b955f358db94c6cdea43c3f2cbc39e5ed307c01d9e29a0571de07c62d5fcfc80749f02b8dbaaee",
+    "Expected": "00000000000000000000000055f3ddee85acc10e391135c556ba1356141a4ac2",
+    "Name": "ripemd_200_6"
+  },
+  {
+    "Input": "9f69dc9263e9918885b753710cd59cc931cd7db8acf1a0bf4296a3538f1db87c6c43fa2a0efa6f92877f31ddcb55d961bf9bc09903bd927451390922d647d589302855141cf5cef54599669ea896aebd853d07008c4ee3822443e528468b37e1f069e5d84ecbea40145c1442ab82241f56c27dec2cd4dbfa9fc3cf1ab72bc521ab32a82346f8f6071c1041635017d16beb4d8e0954b00ab99996a0d20a702831d182b24ac313d6a6de4d1470f6cbce027465b4dc2a3deaca14e34218910aa76cb45d47139b31df88",
+    "Expected": "000000000000000000000000b0c1f88aa896efe51f9af322841df1c801bf7c60",
+    "Name": "ripemd_200_7"
+  },
+  {
+    "Input": "d7398a8735582dd31915aefa3eb08c8b19641e5d7f734be432b4c76e94f424802576b42e0728db912a78eec2b7b4c96575e341e86a7592a07a660c11e0044839f712f5de6615ffed1581b29f07f9a4e68e2db090db4ef18559cd408e5771ed4f79f9205ef0e3a85199c60ad9267349fdc7b6fba4cb765ab21750eb3dcfc48d8bf716b9f245ca3493dc5b38f4285276115ff0422b9071111e352fc12817df858b300679b7be7c71224247e8034f5d30a63f8707d92d843a703f0fa93160f657158ab58cf05a5c3354",
+    "Expected": "0000000000000000000000001580e843c33f08b81fdede98cb004aa398f7023f",
+    "Name": "ripemd_200_8"
+  },
+  {
+    "Input": "14719a2d3166d487a4b361123eec7edc74349222f93b53060454b01910548432a0f706818a98151e38ff9e854f1faa95ad41a7239b5cc491a416d1e3f63d4426babaf73f5b19648c455a6be7d360c7e01b346762cd5765ce3685617371b27ba8898ce7f30776d817ff09ef68a9d6721d4a923ed244ae82069aff32166ba47e9d4cd9f4bbf8b017a84f445829f3e06d412b6f4e5c2a84cb4960cb5aa2a0cd1e8c3fdc06a3a1f6f9b6d52a8cc2e98c85b8e258f72d03efc254ccbdbbf71685cd63c5f16af4bca293b7",
+    "Expected": "0000000000000000000000002a6510eb50d5eddc5b1952aed61d67422323d491",
+    "Name": "ripemd_200_9"
+  },
+  {
+    "Input": "5f3cec9dc1ff06929dd041314b12ed1baddb1fe778c84242953db87d2307b40eeb776f17767c3a4311b5d2ffd738f1512dcd4d3d3edf04adb28d14c70722fb1f70a08c4cf07bfac7a007e0a421e2cd6228416b4b4e965a5f024723fbad6ef2f65a1381e70201e26ccb40188dc3d0fae845150e07b7ee987b17e7c93485558b0aaccd587de67909c18fcf83ba2782f4ea78077a51f88236dba6d16d7fd681c631510106b0eb7448df456eb9ce758e74cbc312f84b7bd88bd7894f45d292742dbdfe07c8365c4909bf3360c847bc059791",
+    "Expected": "0000000000000000000000005c402e41cfcc075d0c8f636fb5e889327e99a7a9",
+    "Name": "ripemd_208_0"
+  },
+  {
+    "Input": "871716e790e1a0120fd26d169b8ffe3fcc0d03683dcdba7d2f953f05444076ce2b596bbefeb813159ec17cec35c874901179327421eb6efc03b514f694fe17c076ed0a27553db6ac6d3959ff4c9bc5807fb7d4f0a56095ed2bbe31dbfa4182773a6fb82280b36e64c099f832f483105793f730b666a0d3a7c51b1351303dcf8295ce72b30d989889c8779c4056e441bbcd93629efc2877d36d27f670711e21c4c301574e3df00d249e7601e5d92e1f29206bb0dff3e4779465c52c7a1f4595aa06d220f64de05bdd6e1140c1e409fdc1",
+    "Expected": "000000000000000000000000d07bc4cbed386302bf3e83e07593a18e6146c869",
+    "Name": "ripemd_208_1"
+  },
+  {
+    "Input": "3f43bd31cd94e633be38ecf22ebd77dbc4b90800f4054f076be4f59416a50df20ae48eb7aa3791c86f447cf3036ac66c257da8ac7d23c5ed965d8bfc76a642a36ea6ec4c45baf6882021372e8643f098205906b1d7f91f8c55f7b61bd66b400187fd0c82507daef16f300e5dc3fe125f63d017ba8c7ed138b1bc70141abc5cdc3afbccd8b1db5a6b5f775efa62b8dbc3089e717c64454bc19d36a6c8439fa0d641dad1269adb2abd7c00c14420d549967a16e23e37ecffd514d47199cff249415a6d366fdfaa82450f0744520258955c",
+    "Expected": "00000000000000000000000029c39b9a2c6666bed343994e8c8e02303807e5bf",
+    "Name": "ripemd_208_2"
+  },
+  {
+    "Input": "77b21580f82491d09a3d9fa283343c5479b2977957ef78202f75507beace7dce26a9bd0a71fd58edf81459152782733536e960d27e35f9f84d00da256bdc118c86bded5900218e68349ca39d6ff9539f8e6666abc3d4f9b294bc3a331da3a233f1e168ab93674bd7f2bf73318a48ef17ef4464fbefd39f77c17ebfdb24d679b638bfe36f80196ae6fa3a03c6e81cb3be796edbcc7bc8cb7a32f9c0a53ee5b28397fb0d947d71a1b032070a12588b85065c19affd0db53e466f194f04f58dba2e87145aab3c4a7f183dac87647d50a89e",
+    "Expected": "000000000000000000000000050e89edb9f67383ea6a75e63515239cb5deabf3",
+    "Name": "ripemd_208_3"
+  },
+  {
+    "Input": "03912de53009e107b5ab5e5ebb33a982640f850bad2f22049f2f8aaf3ee57564fb38a847e428e252f003eaac465f7d67b2dc14617c7df222510ffbdea7fcf153274bc7945edd6f2525dfe8233b0b20ff8bf91051da5bce0a51bcba6f4e1b3c9063743646f4e75e3e5a8cbc84e8112af462f64a01f8d0e2c8e24b5ca850aa5d0c5fb4f25ae9ca4984d98200ce63beee2f8da771e0e827a52a2f7e79e0e5d93ebae04c1ed78cab87d4353f24ffc52099b31a03c5968501f77fd944f4a12ac711db81d27265830c4ea29f469fa111ede2f4",
+    "Expected": "0000000000000000000000009743c29de210eccc772c9d3fbae273e9f2042d21",
+    "Name": "ripemd_208_4"
+  },
+  {
+    "Input": "d6cff707bff10fd53ffeff8e9400966d8ffba6d4ad6a8e7e456df10f8f5ebed2d4bd27315f62f13cc1bbeeb875c08498ac074194e16c1523f1ebe8ee3119d150e00831cce307cb44e8dbd5edf24f1535b837277160d2cf6daa4e862e57fe73b13685a1f9b014eeea59e401f6883daed89e9bd32d004102b79558d84ebb6e33e7a8168d56385722f339a5b27fc25a88034d348e3d533ff4dc99d28536c1c09a7723befa3ba8108946fa13805e234cbdff51fe581182a05a1f507f1b4104ffd254b929ae82ded73a4876c041d2e52fa811",
+    "Expected": "00000000000000000000000005360312231ba38b0dc656d28701cd00671f1adc",
+    "Name": "ripemd_208_5"
+  },
+  {
+    "Input": "882fb8e22690a27cb4ad3ca05169bbf0a1dc5cd34c4517bb970e03fee701d9d5297655e04a7269e146aff8076740331a36999c516d4acdfbcd488d39e3073db9db6cdd0c0fd1d29d58294ace6d2d199fe13145784fcd14739c2a8bec2500afbaa8e434eb34329f3eb120f58bc2b79949fd0bc405e3970dc2bbd7dfe0c54b7c64543fc241000adeef4f7aa2f1dd250677f68c6e27110cff3843796dda1e87039c54a159cf2aa3060fe86410be433fab3ec36afa3c8581df069292d53b8ce3e35ca136a0b3f95a894958105fde9c77e39d",
+    "Expected": "0000000000000000000000002af7c2624fa1d779acb0db2e5360adaac65b8dd2",
+    "Name": "ripemd_208_6"
+  },
+  {
+    "Input": "bf4f442f3c86192c378ee20a60473b8cefd80f819486c761ad2f4a7f63671c290f0a2bd678c5858be2a49ca54de8716fdeec84e1935b8f44545c740417efa7e4410d83224199ee1c74f0deba6f6fda61108f095ba1314533ed3a557e5f8346ccc8e420db340ef2c1b5c6a71645e303eee95cd93228770b639287b14b6a5c59badc619f4290ec157a57795fbd9ad895cd75d1bd741ec219a1ab82cae7c0c7f8845398541eb5a03271e2ab5ec2aeb2da80e634f63a050c25de98ad13e9d63d09bcb57fd3376e1860c1b7126bb5416e7940",
+    "Expected": "000000000000000000000000fe211b26c8a9a6d471930daf9164e73180d56b19",
+    "Name": "ripemd_208_7"
+  },
+  {
+    "Input": "2c9ffbecb549992d1b188ac02d6d0a4b9f99387baca30b9cf63ad10c445daa142fcae1ab3c0a366a068bb5efc9abb3a962bca60c20301bd65e7cb595c2606ca1219d10983324859711edeca99ee2446b4283a1773995bbc97a6df107082fed4ba40e2d30c5472a25a7643ca9e78b8b8b1cec8bd3c78de8a4a1dcbbee22a6b8390546dfb5cc63b9550ee3d76520d0a2997f4202d670fc3b48eaa92e925f48821d2ae057d90c5f184edcce9ea900ab51a6505961c06f9e0d4c1c51ba13c0f198385a84f9f28c8227d2651bd4132efe3dec",
+    "Expected": "000000000000000000000000f59535712db5dae2c53803fa33a867cc12ad506c",
+    "Name": "ripemd_208_8"
+  },
+  {
+    "Input": "a76cd8d292a7053c449cb98f13cf768c6e37da9d702af28c16dceacfaf9cdef53da4f3b9d9b84fa42acadc3dda12e63c378b10189c7140c1047e161a5ecf6a1697b7bf8acdfbb148814afee1df79aea17261dad6f78772111a6dcb021d8c79d091b6add5ecde655047ca9f090db69a1511933bade4aad7d32b8fed24657f07e4efdbd5953bc33bfba09fe7b3ee22c46c3a86f557e4b5f272853e67fd95a0f9b0e624c64befe57cacf3752b686b8dab152c7a306fb8b9282423d49f176ec3165e9a331bb218b99fd38451483a10e8add2",
+    "Expected": "000000000000000000000000fbda2d02baeae5c3bbb09462014dc895c6e66850",
+    "Name": "ripemd_208_9"
+  },
+  {
+    "Input": "3c9641b975af3897670884efef90d452ff1c91e77f4480b598a5887ace112d8c509234e3f59120548c5abb6b5495fc8fe9301dc826bfe2988cf93c29ca9f01421b75ba63c5ed2cee1599122012ada36e701f01deb083ca576d62a4e336881c90daff3046af23e44574969385c8e3baf10a1cb530e8b828542fa4114de6aa936bd2be5ef3a9b7a0e20e475022381d62d44881ccd247793635d820fe958264b1513d69c1e7c3c8bb61ccdc27059e3d68dfcf2f0c33bd044e8c4468b4b7e137ae294c178e7b6c9f19878331fb93220db2cb6f578dc0ed52248b",
+    "Expected": "0000000000000000000000007e6dac29e2c060a2f2dd6d788ded320eea7ce5fd",
+    "Name": "ripemd_216_0"
+  },
+  {
+    "Input": "231d19c13fc3999a2cc90530fb461f99fea0e690e60932c4e5f460dacc592bb947ff6f1c15b8464824aa5c957a645a763138ac1581ac576825262a18eee8f6bdd122efc9c9ac091c63ba5b55be99e05f39c1a9efe15797bef26a9736f728e16d7b8ce0cc59e2ccc848c181459fff4321982c08e9cac57946ccc7b90de37e3833f0f8fc9bd0292313df0b67d056b85820d5ff1f5c2f307856ccf0a9be4775d65bbfc894f8ca66fa6f69d4249ea7f6b076fe193f2805e64f9479ef702c9e2184dd3923a40d469330e6dea3904d23f3e4b1cdb3759d86a9bdff",
+    "Expected": "0000000000000000000000001a9ad5a366418e2cbbf51ff121c0a898dd88a046",
+    "Name": "ripemd_216_1"
+  },
+  {
+    "Input": "fc6bfb37cbfb10a1ffdfcb91d9a52883cb9a606f4ffa8849a6e07386dc9bb340c3e76e2b633a3a25b298553c9f89e4e0bf3ae8bc63e6f548c777f5d837b5991cd94959e16f6d780628694075ba5aa1a476d89d8fffcf4b4ab7e6343c011fee92423bd1f3f026f1e7e7656b7c7c6b9f9ec658eee40d24468aff2c25adac7684c8122f3a5e940ee7e5038421619daffb8a6f433605f37e78d863f814b51b2ec4e217245e55a947ca4ef3790f5c9f30789ffbc1a23b293e4927d21bae00902f0c5eb3908c739d505a1d6fa85a6dfb7a155202710b45861f1a8a",
+    "Expected": "000000000000000000000000ad53581a7890d73098adc4d7f0b536af4364cfb1",
+    "Name": "ripemd_216_2"
+  },
+  {
+    "Input": "7ac7bb3274a180cb675a1dd56d89a18ff40fcd63f88988ad4c3079928f291011f636a91a12bb87f37e0e27a8a416eb38c989a66b84f037a5a24ef3358e20cd553f037a0a2461d310c2bbfabfe3350f8346bdb659152de7d220b8a9b8fb22f3426efb43ae36e427450a3cbab01c34856b892aacdabe63d0a0c241ebc137a88c83ad22cf38997b211b6ecc5f80420174666b9def27bcd702378e514049f537f88fa4e7a7d4bb7539f5b386bebe0e49b7f07b0ac61b15306c2515a1ad6fd76a1825dd29a60e845c0e4ad9f9a948c96c01ae1550d691d7d404a9",
+    "Expected": "000000000000000000000000b3a7dfe1891511719f4987ae1e22bef26ac0c26a",
+    "Name": "ripemd_216_3"
+  },
+  {
+    "Input": "1f9764ae3ec1a60ba76ed32806a5fea78902a82d33993a10c56b2fa3333cabf1c5d47a9c78354d58f70ce4807cf2062845d790629ac84753b1f564f3b36ceeec94a4200812be4e65770653b11a6f472e426a4e2317fee033a226a91a52a5830f9ac2cf5f329feb6bdb382438b8a39f2a636f650b3273403c8176bb25ed93eef2a4e4d0d22fc436ed76a8c71318203095de0390c05fb0dc9b4a3f76b51cf952a11b909ce13f9abc9fed6a349b8efa98ad6ebb81a823a197d3bedaccebc301ea815b80152443a3e54a8b9971c7bf7c44167431db9e576643f9",
+    "Expected": "000000000000000000000000687cbcee5256ea32a7a1dad9f8f5acea8412fe4d",
+    "Name": "ripemd_216_4"
+  },
+  {
+    "Input": "3505b5b25836218759e736c0d650a5221a652338b0073eb6013245c11fe96ec99d4e46eae2d703ac592d3e44d012a6fabf994c22d3e642906745a32591e359efa41e9ea93a016d2eedf1da112cddbf31818e8d687b36af2edaff3ce84c09a527bf725823418413743667de7b68ee3e74daa713949508ca7ced37a5f4bfca6b77ff9e4f7e03bfed52ecf02a8f84ed3da6da2787a4ee81ad9be7afd843d53bc00aa074e4974335b160250990e6b19885edd5b07059958d82b081633dd6e729bc17ddc596cb1f17dc6f0e50c052a0b8c5a4c83900d918a9eb56",
+    "Expected": "000000000000000000000000e9e99f11b5610547e1ff5d94d3979b5513660c16",
+    "Name": "ripemd_216_5"
+  },
+  {
+    "Input": "ebc3fb062c7b728f73dd6457ee1dcc5c0769f084aec947989010b9e92443a6d5c6b019d29219b57404baa955f66cf1b2ee6571ad5b80d471ff6db569e32a1a501b6b6276d4eb61a3d2b079612cc3b5e09256ea85b03279296de82a8547f7c8cb6a76411ce02b4dfc84ddf62ed26508a2dfa5edb5a98a6a20dd69e8b8e7ad2f59403834810dd57ff5feec220e4838462a78f3900a9a984c0151c11018633e8f035906098e4ad7e4eb2e996075c7cd660fbc399bc942f9080404b9d0758c4ae14c75cca75c4aec261f336eceef6cec3da95a599bcbdfb8f7e3",
+    "Expected": "000000000000000000000000194896f89f797d63c849edfb2702a2bc00c22240",
+    "Name": "ripemd_216_6"
+  },
+  {
+    "Input": "64edd47f7e30cc3994ef8c281a9be3766fe784ae017d93f608dc2cb97cbb7dd3e3814b5ade845d37a1d24ee88f32d6d62ff594d097e0340b8ae07195e1fa54f209541e85652c82296feced33019b3b66d335f2118cd22b2952cdf9757fb3a0cff55b7c4f245fb4383d969c837af66d4951af63e48681b47e13ddfe197026063fe61fe6c60d0e841ccb5e7df372d346fd13faa90b0d6961372ce2f32ec379e5e50e7ed8a13942cd9d2e319e2c1f7e7be250443180e5021a77695ad0aaaa42629352877b99b2b3d13e13a5fa1674c20c97d08608d200f3f761",
+    "Expected": "000000000000000000000000a9f8aa2dcdc0cb0da4720c7076ad4a4653f2698b",
+    "Name": "ripemd_216_7"
+  },
+  {
+    "Input": "1010e6a25a790853ed4ba0c5aacf111b483ae589874037996f8f0f5e9b77f6cbd723616b44657148d2ef276aa2071512ace10870acf190b373c19ce615e20e5cb96d3c6be3ec155f2b29825f8476b7740e8c6efc9415ec0c53ae6942ccf3a58d8a1023050fe50f694bc51b66d76182c48d9e38d9383f09cf0f8a8077f1d1dba091ff0abdf7e77c3b65c2df48d6c6f536ee41e9dcdb4676005a600cb63bc3572e2e1127b86fd8d50adf670edf1e29d04fabeffecf9b404c6bb2e2d0c78fbb8609a38e3d3187587c3848e8f9781b7e9f44bda80a997b636843",
+    "Expected": "000000000000000000000000f3d19de32f6646bec06d8cad27830836842a8a71",
+    "Name": "ripemd_216_8"
+  },
+  {
+    "Input": "f67864f4c7afb44b4ca937876a714487bc0a3050ea5d14beadfe53846c0038203d8b8df0cb636aec7d4ed7f78b0b0c1734be448bace08f34e6e4667912e8410ef0425aa0d75c9beb96d494a54eb994a4ee22abd608a1e7e706e9d4e41b628be51690b86aa8938db066c052f3adff774d35eee1e332312d3f4197195a388161a847421d44574fef12d471da84364816200939b78e7f4a4ae6b3d349b1546a8c235d60c41408c969a0fd42425f8b5ddc1fa5102d2821bde2c6aa5afa8b5b7e377600e0df364f5807e54f6171bc3c157971f3246fb891d67567",
+    "Expected": "0000000000000000000000001ff276d191f91d7726139e73cb184e5cbdc9bcaf",
+    "Name": "ripemd_216_9"
+  },
+  {
+    "Input": "29b83950e79750e9827ed92856e4d1e1b5f0b47c6bbf3611a1fef8f2fc47659c9d3d8f47e01fe6e3cbf8ded64b1f326005a56f5e37a8a58de8019cac779ba45c6b5ac07fb4a184dfed685b93d2265cebd02a3296a3b0416cc6a115242079752e94b21629bddbb348fc5821c181851844841d06d80a5bbe0e990493c527a527453a7a25ad9f02bf51fd73550ccde12374d9b151f2f6fe535bfaa43efc391f789776abd8e8d55cb82ccc34a82597667e72b5f0d05f6e5160b1da1d0ad53293c15447944c8c814f143f746175ba0b2d75e2ae73730a265d869763f0e986c088bfcd",
+    "Expected": "00000000000000000000000022a6ebeaa1dc9474800ee7a3ab32c9a19158b416",
+    "Name": "ripemd_224_0"
+  },
+  {
+    "Input": "da7cc05c09750af9a3e8a930fe9f6101a415185e538110f48283838b6363108630f33b187df3516866f259ff959d57fa9c53323d5c851fdabb96e5ea470518aceb0d1903b15d0a25e5479ce3ec54c28faa667f44415cef33b6964d3227c1b5af4da8401050f30459e026a207ca631f0684a10813c64ee86dbdf06b7b29cd9786fe58c5d05ea274ff154bbedbce2b78e3f79d8019cbaabc434aa7736a91d777484d940555d48649f30026f70450b2caf2b8f7148b28bfd4349458ae89c323512e86b8d4020b6a68930aeaf968ed9311cf0112a6682c154eb89511401f6b678d5c",
+    "Expected": "00000000000000000000000067d2a020c39a24803508d9fc0fd400b97311c577",
+    "Name": "ripemd_224_1"
+  },
+  {
+    "Input": "e140e30424d2cccc91be1fd3a62d9ee49c9d64fa062d9350b3fa567ec21bb06b55e3e6b5f213d47cb9fd9eb5c38e1b5e1e3265dce3e1f20071a7c3427c542cc0a57b2c351a7946a20cbae1fd789ecc5f77376b09e911749831e9b5680185b1538fd031035972f23b77e8c9fc62e38f2334fab7ae01357f06e9ef46b5d09e8ee98fbff9f8ac4ad10718d46a857ba28f182263bf2d13c8b6a00902af737dea5616e63d26c0a183c6d63a6c72ddeb70d67c9abbee8d0dfad76f71588a21832514eeb061de16f4f609c6947733b58c6444fa9549721fd9a2459652e8e4b8c69b5d61",
+    "Expected": "0000000000000000000000008bf4d01ea3ced3b465452ae0fe106c456c8edd5a",
+    "Name": "ripemd_224_2"
+  },
+  {
+    "Input": "9948eeecb76c06577db83fc817893145a8ab05dbab0702bf66bccb8a19e57b43355ed5b57b28451ad98fbacd5ae87551b7304e4ef5cf7b7dc443a66432406f9a40109ba561673c0601bcd250f9085cb0a21738cd0b66da28a5e52ded392366bd30b6eeb01874ff4b0fb07dc9f23d8e45455c1480eba7fb3033942214e85a7720d7dca30297e78aef597509ef4ad233755ffd6a69ba1964d1721d63751630299e89a697a0e8d2cf512edd2a3c3df354eb30a3eaf697779dd9270234b367c2b5ff820de55c46e8f66e85fac07da0a9372cb938ca583e5fa7815d89c9fb2d45226a",
+    "Expected": "0000000000000000000000004ba72b223249be5a97590dd0b1bf94dcb0a64e1c",
+    "Name": "ripemd_224_3"
+  },
+  {
+    "Input": "20b72463d54ac1d8f1b3f56f0f98861768b05d5174cf1883dd8eb0410420d562c602b7de0b15919bc2a6925e14788c9551f94bf37e9361e0069d0e2bab0cb4dd3de7997113708f9d092836c2b0b59abf710d8401baea6de73ee0689436f035fe0485fbdf7b9c4b57bceff184540b14d55767c4d6b09167ddaf09e0d68cf6dba37fc3d0560432dbb721f8a0610f0db31dfdfea8cd5ebe8da3fe3b8ac5358dd440c4cc01ca94e4b004377a719029f0287484758bb045b39c33c3d7272856c3bd1bf0b271f02031a126f8632e30d8b17cc5b57de7b8b873e0971ff392d4246a40f4",
+    "Expected": "00000000000000000000000080073fbee650ca90d764ee211581cf6b6c331a59",
+    "Name": "ripemd_224_4"
+  },
+  {
+    "Input": "ccabc9773e6b20e34e7669a02d398f57db6f226dda80bb8d254c8b668857e348f8b5c136aa5e2d670edcfb5bee9ff6095d85a332ad55763fe1e5e8babd145c0766f0fb29c913ada4502d9759232389be548c0748c6edf884a4ade564200a8293285193e7c10646a4601787edfad3d76e19d5b013a0a954873d92bd5293d32582d3c6a8172f749335da24018b62c714270d03db76f53347d8d3fbe25a3a084cdb35bb2175fff61894ccbb69d90375df627e925f1ac430a349e75580dd39546e44a8f244a234d331f2f88fc12de5d9381b98b96c9e1271b8e2f29c27c382820d1e",
+    "Expected": "00000000000000000000000096000a3b36675cd9c4b716b83312e885095db1fb",
+    "Name": "ripemd_224_5"
+  },
+  {
+    "Input": "a25856e5fb9547c48d41783bf2cd13493a1fd71e56b9c7e62af84a1f6cdae1c88522696e172bbfb5221e7cfd5b89883ba5f9d21cbb8e79509807e94d2f9d54321155c0b9c4185025310e8020eb52abb6f2f1780da15e4ba81f3c9a88ed1b4a64f78177aece7c3b5c92c91805af2fb9315668d323eebd89a4b4a41e67af3b229fc5610b2707ce84ce67e82d5c0e5f5cd2c90925aefc1e39468ca86475012df045370f1dc356275d4db9c62d1d387871d996b03ef2105efd56784296254a4e747732fac970e52778cc90396a5ba92ab98e26499eb1ff17d4bc4c1f78b64887d3f1",
+    "Expected": "000000000000000000000000d94447de1f3e8b7c33bb6431688bdbb3d4aceccb",
+    "Name": "ripemd_224_6"
+  },
+  {
+    "Input": "2d3747b275a530ae804dc4d8177840b5cdcf353e73de05151e3957ef236461596583bac9672a77f2fe62bea4364aacf62d5e10eb3a757fa0595a81f76543e8630398600ad0eaed51262143aca0ac918d919d3f834c5cbabdcc104508c849b1085a8e1d77c9e42a187054c938a8a5b4bafa834021b727036ed3941b1c1deb9d03c7e7e7263342ae51d9f9d391fd2dfa7d5a243a64344da6472869b54926308ce539c02150e4e89b25563985c7802c0c43d00c721d521b54e767c1f509f584bf2bde1926a6c308efe16013b6466faff99167bc87074405b79ee1286c685470b234",
+    "Expected": "000000000000000000000000bf7d2a05a0f3aac07efb6ff61f5663520db17e33",
+    "Name": "ripemd_224_7"
+  },
+  {
+    "Input": "2196ec0e9d2f572856217521fcc5e2869f16d5ec5fe76f7d350698f55ff0c5659673e021ea3db723073e2b169573265c44c7787e0cfdbae49a3c2eabb148fbc48df5017c9c35604f061a7095d976d08bb3570ef8fb518cb606cd39a3060157ab10686e214fe6b9f5035485982429c98ba5feb5d942f004e36d8593517206d1937b82e7e565f8a521d1a9d0ecafc029f76b70042e1ec36c20e3789b49c7e50ef0855484fd180cb6bbed277829d8dfdfaefa9620710a82fd7af78552927aa923c28260c1b7a249ba215f0dc127a41876f858b20f4422140bb7695c8f98e4c474d0",
+    "Expected": "0000000000000000000000003b564e99571551f476bcfbf8f8981a3201dec0bc",
+    "Name": "ripemd_224_8"
+  },
+  {
+    "Input": "c031d0e9dc82950673fa1be4f0513e92462c08fab9d22150ac72d26bf71f030bcd68d2b074d038ee0d9887168dc16805ed55df26329a4c0e062c2124a6e5066796a4aabbdb245dd1ea6331fc1f824aac140d2a427682697ae290300d21b192f52a40c2e796148ed1c539b0584b90cb386844fdcde5d3766cbfb1d1b58626fcd1d5e605f60bea362c7bfa52146126aa246f5f40fd7e94bd66f03bbfe5089053904a1e176fb26983e549aefff9aeb220f50e071222073422dc2c44abd85528ee283170769a74ed39579b4931d5e87fc48cb9611aa5236ad03d9381f2621a8966cd",
+    "Expected": "0000000000000000000000009c62083cbcdb3847fc380bf0e329256932638e5b",
+    "Name": "ripemd_224_9"
+  },
+  {
+    "Input": "a62e07bb97ca3805ba2d30f39f44e70a7b2917889c26b84bac8f9739bdf764091b5b093840160fb2420560370cc59719a694346b963243a1e9793e9687712631a14278fe7a08174660c08323de272b2110047a1d1d8bd0e3c7d76dde030e00a657c4976b5b22780cfc1f1bbc6a6ecd1a18a4adcf4c2d0a020e368a668bba45171f516ab5b36a59e6300a54d17363ffebba35fa0c64cadb21e541af5078545b402ceed19d189fa662c05a2c48293f4ed2c20bfcc09a12f496dea024bc0477301f3bcdb23f9568e409271b5f907fd64b0cd81939a52a6db38fd8d95de76213f7b5dd2b6dd8c7d7a3cc",
+    "Expected": "000000000000000000000000193343b8ac87323484bc26369f1b1052d99a30d1",
+    "Name": "ripemd_232_0"
+  },
+  {
+    "Input": "924439c5543358c841dada79522715ab76fb07a431beccad1b716b02b3e94600867e019be166f4532d264e0aa65d723dc0e117aded59245d2a63202625951089267c1b9b99b58fe411a393c1bbbf27cc55109d8c225f2715bcfdf0495e49dbb8a8f9a0dc517351f39a6d823dcd42715f329dc78400bd74fca9f1b4d218a60607c78590bf88b355e6522f19934f6d1da1167a989a3e531ad1f095238bcee61ec1317c0f98ad4f8f9b39c5940cf37a8a3a676787d9dda99438fb1e8392bab3b7fbf44fe91955d7ae84fd75500eee3d3c48f24df91ba7251fe9e45a6d64cac817cd479a501c77b6720c",
+    "Expected": "0000000000000000000000003142d97c73dcd05b3714bf59c59fe93534ec042f",
+    "Name": "ripemd_232_1"
+  },
+  {
+    "Input": "6777c6026dbee471b490fee9f242a670ce7eea4148b7a91579fecf08409c3c4ac78732587e6879003e623277042e42d954868215022673de608cb43a3cb74ef2073ffff34c54fbb43f19b22a02bcc2adbaa9cfa73bd0f8c9da53397313d3a3cba431fb11a8428d1e206593a78a017d727068c3ba82e52fce0223a9f28c1d42681c7863c94797d1786c1adbc3e6d10dbb03fd7c69c434e39d6e55f086b726a753255dbddd42177c592662235dab65db370042b8005283c7b91ef4b3ff7e20a91349c8c3d1301c9b54b901e8348a7d186e807156a10683a02dc2aa3159437868f43fcda0e65eda31cf",
+    "Expected": "00000000000000000000000078f4095d3a4b556eb415ce714b9df140b68d0ad8",
+    "Name": "ripemd_232_2"
+  },
+  {
+    "Input": "c01e821b93d79fac0a3eb64ce8fe140d94956b0685f91a5462dba1a90093e803dc617559a66d20da4bc7fd7d672bca3a63d643c890dfd7117e8583825a1779e9d8345f3ffc47db90ec88ed0eac8d0f2f618530e91cdb9ea36b8d56c1001a6792a09e11ff65fc02aa9b014adf68b75775fcc3c00695f69cbba47e5534b16371fce080aefcbee9daa05f03e53ff983fe4886a3dfc03a353fb77927d7a0d1998a1c55ca7421a4bdac6fc7b35976cce8553e31abf4b93660bfb30d3ac30851a041996b3df085334306cdcc1b04dc356bd348211ccc4c50d12cb382660a4f9526539c2a0c52b021ed2165",
+    "Expected": "000000000000000000000000be32c245d5e82efb370c51fe00ec18e0f03a515f",
+    "Name": "ripemd_232_3"
+  },
+  {
+    "Input": "71a903794a4f617cb02f725cfa89503660e67c527ae81124e74cd3e97e177e5b97b584ee05c27d45390aba36772ed49d571837567e95f1fd3ba3fc1ba5916727bec07cc98ae657b8c06f4c461534bd5d2c76eb724dad8f7553fe9850c97531e4752542cd551cafc5d50852526ba0a23d274317e1e4a6e75c0d19319e5853b8b6d330eded0c7b5c8cfbe2b39a6640e5eec19e0a6a970ce105ea924000f40462c42f76a0fa585828f79553fbf3baac6a2776b782de66dedd6b734f9342e734ee308b0c1cfb60d3b77e12e387a629b28fe70782ecfc2962003cc88906a5bb79823ff638e6a70917c898",
+    "Expected": "0000000000000000000000007f63ff38d88072edf63d0530cb9e3b53e7097f82",
+    "Name": "ripemd_232_4"
+  },
+  {
+    "Input": "11851109296a7225f9c7c5b3d7fe6d6ba6c7d1ee77db4458892523c5bce0bcc1dae330a1e80bd1dff67202032acb9d2570d29503a1174c541c4ac944341dc68fee586d221db2a8167e833f18f012afa7c3844def6dfb26bce4bbe6589a1a018725fde90446939f8fca20cbe2c323916d81fbda26bf59ac55b0eedaee9347b10ab7b346fbc16c10cc9db486f561f88b756c269ebbba23a7f4ef434534f6fd271e1815c054c956b7992b24f3876eb11aa6601826f2f31904d184adc8cfd2e42abc2f0e0d7e9c4b378f73731905760bfeeef01c94f8d5c3cacdf4b3860349ad3d1d824116459ef659de",
+    "Expected": "000000000000000000000000a4fabd7d3f1811a929b7ca7711bb69cee0e95606",
+    "Name": "ripemd_232_5"
+  },
+  {
+    "Input": "b2e776e81048d118d9003cefa6f6c0febbd5d4a15998d733326ce23cced86ec5d5b410c29ee98a4de19f2662c3933dd12d23cc9673ee108c87b19fda9c8201e71a0023101b174b1b7c8e7f3c0dfe81d73717aadf16301a9c8741d65c86ad7f849101e30b7b1a344643b100a8582a6ad16d5696c2866b9724fe4cb0897a8f080908955d79fe0a09e67d7dd5ede24ceba022788b3597da7b9b106203dd0ea97527aa8f5149754bbb0c10bb6eca8a46d940e4bd3085d4ae06539f290fec82cf68663681b7663af3a1006061779593b843b53c21276fc1371060c226424eb9886de6897b15b075fc5a51",
+    "Expected": "0000000000000000000000006d33fa58b5a098008e52153d1f0fa19771f1ab0f",
+    "Name": "ripemd_232_6"
+  },
+  {
+    "Input": "aab4710e9dddd384bd37019f7cc93e1915fa699af0e34c809b90661602cefcf97a3a902c7b0f24cbccbce4e92cf377f67244995badc72db0b80fe37c9b7d443595156fa41abea17a39e05b1ecceee508f891fad413b4dca379d2476273c3f34564ef8645ebb7bc03ff79345f31c107841ae388f6cf116d10bc696aec4933de56bb9affe7e20c649f3bb1fc20168a1f870cf22e9c77fe922357e622e6bf8f169d83b043767a9996c221cf773387d5351aeab99971eaa3b207fa6a318ad60f1c3e16b7f68251f9c9100827ae1154f812cfa7a86bf88ac537a70320c1c7f7b0499f291dc23a6e94c023",
+    "Expected": "000000000000000000000000ada850137fd4afd118fe0fa9c82c68cdb4b3fc8f",
+    "Name": "ripemd_232_7"
+  },
+  {
+    "Input": "2d69cfed6bb2d33fedcbd215dd4e9632a3cf86a4b2716406305f6a85e6090a05332563978c3fafb23665eb655415fb30c5e43fbed1ffa77586e65b4b0c0be2a379cabae288f8a9a8cd54523c20825b8fb07886bbf0ba0c5c807956f268af4fa109008429f3e466100605bd51b6d4558d5d09d8844924bea30d90921a8d0741391973977d8e8c592f9063c5a14a658990f9c3405643089eb58324cd3f05b5b5e461fdbab4a52723f13eec9ca75578c8ee18c1fa8d0dc10c658e2cb125bdf21688a610bfd375a7b8d0b034c17c8fa27d4366b06c681131fa7daaeeeb08e25c2ca6c127ceab10f91007",
+    "Expected": "0000000000000000000000006982b6bdfcf81e0a8bef5466bc497c941d268dda",
+    "Name": "ripemd_232_8"
+  },
+  {
+    "Input": "e6d9d9505354d6942799fc4e9131a4ce4ad72c50d0657e7699ffe1dc2d7526338462860501d75380a5ed9d53e675125342afb6652a97437b22ad0fc7604d7207733e6ed77319f3b0f2d42f0a9a81a39fbba998397a178811fdd97465982b58e69993711a6a64134bc4e76b88ba1948af91ba3339e9b9d3e9d036513e697d3bd1edb278755a5110011e0040b68af39abc2ed1c50c6dcbdc8f786a2a3974c84752b32f29707805c71992d5d473f4b7bc1f0757d126607a1c075447b1d2e1494828804a8d840befa660ac8f753802ce18528b572fbcb229a6eb85d33a7fbe6ac6eb42eb932dfbbca2f7",
+    "Expected": "000000000000000000000000c15d929f63a9f65ca589d54a75115eeff583c12d",
+    "Name": "ripemd_232_9"
+  },
+  {
+    "Input": "71ffad5e80fde686e5df9d34e9f83ad628c35de7be28e65670b75e8ca2eba28dbd3def8446562be36498b79a6b8fd20019582dfd9cb80d44c17c5f62360e62f6736d186194f0f8483e34d8d18d832d37ee03fc95953d0f1a2e83660a04580c51b8c29a242bb01a4715345b79428fa44aac0bd9b8746fd02aa70d8b8a2b5d3be46baecf9449d8cd3d620cf9efb3c615d10c964038dd0e1c6bc085a14cb9f2fe333cf2320fe17fd3843e651cc43e2cb300069d889881d5bb87dd65a9a02a7fe239bdb55ee54a6310bc987e7c5772404d7d3be1ae6df7d59b5282e9a7e6f46bfef1c9eb43eb3baffb67bfb1c9be59cc6abc",
+    "Expected": "000000000000000000000000415cfe8c02fb64f391dd167d1c451e79d6bf6761",
+    "Name": "ripemd_240_0"
+  },
+  {
+    "Input": "be658348e299bbf2438a0c013f86eeeb69a013b8004a4996189472f3372b326c30de07495a84c295ae1077f244f6e10fd65f6078d4e401f93a69b9b3dffaeab39b9d0ec92ae7df3f52a95747659f8fa3ca2cd01e8d7ef6de384111246886bafba9539364a04bfc0926d34aa76188ec88ce8c1c76e668569d894b746ce6693780d2ffdf1237b4e03c219806f2dea745c94bf08924e1b9f11deeedf0db19da6f3f177e0f54c6fba1c421e16298265f9cd9c47d4cf600d7f83d77521cb27d4e4289cca0751c9534cee7f14d11b7c8ccbb2c537a799df59f850bb125c6362d72e9c401231492817c49b5342ca5b25758523d",
+    "Expected": "00000000000000000000000025150e2b40b54744b60fd1cad64e507c13c399b2",
+    "Name": "ripemd_240_1"
+  },
+  {
+    "Input": "d7786d0eefa03ef050f6616b8b8b5ec417f890a1120daca4a1bc1bc0fa7529f0a87b5fd6ec385f12b270bc0f1a5281b419fd2e99882e5d7291f9889ed8792720f08e0fced7d0bd5580ef208c65aed29761ca18257d9d989ec13d4f158b18ec17d59344f4558b6dae6c0aa0c2f37affb5a28df5656a9500a78c1831653bde572b6ede06e281ac0e41542916aceb9c25390fc004ed8a135ad97cdd1bc4d0c3ccd15e65031ad7e3cc13ef2c260958bc43be5b176bbf3a89cdcbf885b4f3aa46b650285280b7bb99a31012456f4743d80ea5d8cfaa1037e2c81c6973b221dc7badf25ebe3fb4b42bbdef1124265df2c7ccc4",
+    "Expected": "000000000000000000000000f4b0ee6b8f5f0cd8700c846cf18512c557bbcc16",
+    "Name": "ripemd_240_2"
+  },
+  {
+    "Input": "7b5c488ded26ae8b259dc4e7782595453502f18ac8c492704a527cb3b81f2e5fc25ecc5d37659ebb0c9e21ea2f8fddc518e3d8faa99627b21faf105445f69d7dcd1a6040b65e7cce3178c51f528a788d425f8ecdab212be14fc91bd5a4e3789c26cbb32382902d9b1963779070d749cbc4df1e7605f840819f2c04aaf89c732f2d8613af1ac315297372fea288aed9117060c822207a42a511e97ef4f8b40f28699aa549077a80ff8732b5fc9df148a90f405bccc14bf7305266836566b7a98b24c5e49d1a3cc7174679086986e1dcafbcdcaa14df15a33a84994b10da9ad35840e2de1a2901f1380a383a741d79fbb0",
+    "Expected": "000000000000000000000000088279a14110d09ed5ad736c0231891350a7333b",
+    "Name": "ripemd_240_3"
+  },
+  {
+    "Input": "a041da5d7bfb92edab74cd483edf9523ad4dcdac6c32fed6346cb5f59331547811bb32bee99378993e98f2c7faf1f31e062b323592118868d547e83b731d15ba2c7bdb1ee4fdf73600c2584f1db0b45d9ca27398ab74e21155fc23981483ef60d7aa8d65e1cdc86719548ee03f9c65fc764ab6f4c43630d5e79e8c474d76d8973a7b7bd1c7f1a985333cf1a6be5ccff2764b67f874ba8a32b208b51d168d17953958e957aa11d7309a7f9285032dc4ac3280f1b1e78d2339f64b5b2f2bd77aa24623b79fe2c9debab4212f4ff564983bd3dd131d4a96ce51463fda6784409d9fe1ebe31cf152ba398f7a2c8f8e92c0fa",
+    "Expected": "000000000000000000000000fceafb353802b5096e0ee598fb69117e39b1a103",
+    "Name": "ripemd_240_4"
+  },
+  {
+    "Input": "d4d27ff9d03ab9120ac2adfeb36b070015f0e90782255ddc9111704c5fb11177f08e303fa1cd740ae7a944c63963253c432dd987dce16c2bc77e84c845f0afdfc66d5291311c7cdd1f33e5365ec0689608b3569427a8f6a9cd0b94b671472e664f76c14700596a5bc3fbb64dcb28b759bc5e881554a7231cf02fb1e69db2a0064b718a5129659250640e333f4567043ca749063e63d87efd86a9995adfd3b845bee1ff492295494274d10bd521c6ae565b2feae0e15604ee24ba0f656ae7b045708891f45d7bee38fe382820260061e212c6cb9a8572b4d1854f3ab09409b05a86af8f9e88c6ddecf1faf98e13bedf54",
+    "Expected": "0000000000000000000000007902b151be6b0e17add5a8c08dc36959085f6be6",
+    "Name": "ripemd_240_5"
+  },
+  {
+    "Input": "91d8cfb766a124b541eb4bf4fdfccd5d85ac0f94f300b004c7f20aafcfd9129d6c2590749504a3f08c4cc708fa301003b1ce5ef643fb311e2577a02cab05b5ae8a7d9eaef960e43f7f21d21093e64c16fdbb634bc0f99c5795f3c4d6a0efcda7f71427f1eaa1c5411caa6cb05ee3147807c05db137edfbddde801208919cc3d79623c188ecf5518a0880d91656b135ddf5e4695c01849259fb969183de385ef30c2403e081067c2d9b6b5522c73fcf20965c15d93b01901481b9109de39c78c41699fab70bcff72345a6333b44baac3b0ea6fd588db5efc5fb2248634cca683d39d610886b59eb3077fa9612c368d769",
+    "Expected": "000000000000000000000000b0b68717fcc0082f5deadbbb3d84ad1c5cf0a7b0",
+    "Name": "ripemd_240_6"
+  },
+  {
+    "Input": "deda78675bf7320dc8f1d2a86105917ac78e9edbc0328c4188d7ef7e396fa78cdc2060a3421c5a8336c80983c9a160345901a496c3a74fc5248fca081d099539bf698d8f32b6443751acab6bd89de7faaad3c31e6603240c97efdb3a49bc14fce27e4afc3e6d59d0f5871b35eb83b46cf15da6c326e88dd8edf84031f58e23f9f50d9b081818e0bf99185189607be06cac27c4bcf4c85b03d68dcf0294cd9b6dcc7efff04f143e2d038de153861da5e04016a7eb17fbe6365de13069d088b1a1b09f7772aaec487397d19c9dfc3d46b05bbe027e8d201b4a305070313f2258b009a2c3dbb4ee4f485dc60dfbd94a358a",
+    "Expected": "000000000000000000000000e7a19646c6a62defca7cb0f7b4c84166279b7951",
+    "Name": "ripemd_240_7"
+  },
+  {
+    "Input": "7c62204c021f2d7b140187ee9ffdc4ceb955b881839f7e9279a327446786e6adff1bb0ee2d035488354511f1ce305d68d9b15c065497392e4b477a556ad620d44e671137cfd570d53590b7528f8ff680c8a3613c26d7ec6fd6d4348188b98ab51233c4844b91988d4a762daa7edc8b4a9e2a72eff2ec29a65b417767e7090b73c2fb530de6c8f4e4ba30543946423b1228262480327dd5c232549c5a55047d925465c933f2b29c5a574019e2edaf3c987b9aa7e0bfaf135ff24720773ccd1e0a46fab6d678d91a14de137061e145fb9dd2f8fefc2c2fed3ecc25e2df9ca7719828e44293232d81c43abc830ab1b7db1f",
+    "Expected": "0000000000000000000000007fb4f44c6c5a810df7b4acb6fe72e2eb38b71f76",
+    "Name": "ripemd_240_8"
+  },
+  {
+    "Input": "c6733c9bb7bd195622b96c4181e8c8837d1912fbadf77d6029f7fc44d793b4804dab06eb1fe94964001fafc70906a1e3f385233d5992091687d8e1a9fc129b42410bb66334c677397d04f59eade9630463065cd7da3c9d50580c7d66bbaf487d6fd1104a1b4fd2f3f582437d91cf4e45fef5198951d9d2e894bae7897edee6bad97a16fc5b2c70829b15f73615286eba334de1f520b5f0f6a83d2578399cc0b3a7d7b74ca4329d3f8280046e2ff892d955066a2b8e19b4fd2a96feb77a53e3f9bdbac08202bbe5df1229e99c76c1727f7789e0f8c2002f0a2c195bdfc00acb365f969ccadeb6c7b8934a52bfb3caa1d1",
+    "Expected": "000000000000000000000000aa693fafe12490f18d58f6a011597750322da2c6",
+    "Name": "ripemd_240_9"
+  },
+  {
+    "Input": "b690a1ffdab8557ad1637e57dfcf558843da827b812ec6ac23b00208cbad0f2e8b3a32434aa61dde029683c34c1ab190b38c85425f5d9971e8e675ae10ea0eb6760880d89cc54863bb2d0b62801594a33c7a8f7bf434ce5e63ac9365448da8663745f66689b4b04968f9b8b1b680589317b0534788508b8b288b8efd1ff984aa50378d70d92653a1102e0d280f66cca551f2e2bcfa6ebf84d3ad83c57257b9032e5d62a8663ed5d77afce00f33382bc6f5861a7c1ea14202008e490adac53c95a6d4b93d5ec8e42a8c7a9b6cd070fa1f6d8b15ec8908bfe008414757c0c7f79b3079f9db86d91ac3ec8f38ae2c94d48b9f4cf49b8e60378e",
+    "Expected": "000000000000000000000000706b6151b372a8a992d7c3e1c0c84afae0437f3c",
+    "Name": "ripemd_248_0"
+  },
+  {
+    "Input": "4bd91ae4104440cb5379e9f29044efc7a70d0df5d2b7a43cf4723e85076d48389c3fb5a5df16b6bc6f7a69ca701632b1159677bd8a6f7bb1c8c1403026d0e011312b261080114b7a80d1334cc059455b3a8e1b7ae857fe58a632938a6df169fb64daa55d2f874ef7629d5be41dfa0d50827c082333f0fca0c3d97498c20596a7de911ac7669c208060f7a4be634d0ba9fdad8cba66d5cb3e283a4da7f71bde54d4b7e28b2b23e2eb05d8b025e77e15810625d71faca6d6e5e33a05468296cd6c087194ca304d279ab5ae9af5024fe3f5877c969ce8ec783cd402b71c1fc5c3f3a4ed9edc73457a27ea427f83a784796e01b7a1451b3305b0",
+    "Expected": "000000000000000000000000ccbee6bf94e8d67f3b3ecd9cd61c0549e468f21e",
+    "Name": "ripemd_248_1"
+  },
+  {
+    "Input": "e35f14c9daa6ea6b190dbb239e7fbfba6dc43fd1e674ddefc17ff5144eb1f755310bc47acb3aba7eaa490ec104ed9b2985f65c7347f69fdc67b76f6f43846a9935a1160d1e43182e351dde3c71ce5bf166c6fc49f47c10a5d6eaeb69dc89ec4691b88ce9888e5dcfef70d6f960a456dbabc792571f2a98746b7d833e7fab98505891f691ab998b2474d0c60160409094fb7fc9b1a8eef7c992c285fe620e00e83e82cc1261ac3864266379b4d518e25c05bc492a8946b38b8a64acf47aeec4b8f3c40adf95569ccef8f383598c71abc6f6180f4f7cc70b63d6e45125e1d6ebb8a2a1148f1ba719b2da92c418fd137efe21a44dd4cce013ab",
+    "Expected": "000000000000000000000000ebbc79fcf3a76d1b4463e041023af312f6c885c7",
+    "Name": "ripemd_248_2"
+  },
+  {
+    "Input": "36e57d97dfed9299603e472024af6614cbac4a6c8848b86281ce157b48512b5a32823e63d57a62c3fec5d6167d7777169348cf81ad3eab5153f8f2f18fb5935c5ee5e3a759f9b5af9cbce3c9e2571d08aa8a6cb0cfd213b00d9fc0643076808690856d52b8a0c67cda609e1c8fa42a993ff355a70d44dfeebc71a801daa36acd437daec5d7b645d1d21822931f0dce0b402d3cbd3ec7334142a354c2e2e889b9be8483e507a5563abc5f7f5d096247ababa51852724ce9ddcc6acc7ab6180beaa1cda97dba94b4ea2a1937f352614b411f68bc72b633e33c49835677003d0d6d2e5c60fc97be3bd93222b41a59f9551e91572ae00582e1e4",
+    "Expected": "0000000000000000000000006a8620ac3af75f98eaec81c9076e3a8bcb445043",
+    "Name": "ripemd_248_3"
+  },
+  {
+    "Input": "1989ff5f8e2cd1ee1a78f55c2b28ecb4eec8f817c3232a7074b0e887d27d9052d670fe83516feba2680042605f9fedb17431e5c1fe5f8d38c759bc48e8207695a3cdf07d4c1fd02f1009088539085da164543b5a100abef53edd3b30c0076e79fde476f9499f9dfcc97fa1125a2af81bd474e755f6ce9045baaed65c80f5a686547089e8cdf4ad2b7c2ce7c255cb5c73ba1ef4d0f593bb94d2c9c46f1ca157fa2271268aa87f4ac26ab4898b46bb91cc976c8775b0eaa1e4aa384d222efc476305c7ea2d625cf5c67ea4368d7a9fccd1a9b865aacbf71fc622ae32fed1c9b04bfe9097cc08870ff53564279e61c814539db274233c46caaa",
+    "Expected": "0000000000000000000000003981dcd04420b24de5b6277500cf5130b74af8e3",
+    "Name": "ripemd_248_4"
+  },
+  {
+    "Input": "9c99690fd00fcbfa4eaaad7c41f8ae84313448c787165f65b83fb1749fad2e87f7e84101762d379cb78d86614d9636938cd23e9dc00047b84ac9f9ed46ae5aca33af9ba1c0fa5a2138d4ca02b962fd1d02b4636114ce1997dba326c3acf93835ad988749e796b71051d779e6aba77e147917496119b5e5cdab300ee55e90ac046dbd772da788dacddf72c559d9378b39507987a9774301b0228c20c2405e75a2a7feaa303e190a8ac1d58d4c4e050244af943a231fba23f9275b22db781d5e8fd07f36788bc1219c4b4a13554c28d92a381adae111b2657324efebbcbd2b935fadf1a96e53330230b86873d3a87f7b1533c07e3444f5c715",
+    "Expected": "0000000000000000000000008a67f7c3d7e45a1897a27e75dd56ac4b6769774a",
+    "Name": "ripemd_248_5"
+  },
+  {
+    "Input": "ec69b95dccdbf193d9ee4c51615c0b7be5ac6bed3f2559f0cb2755c634839ce7a6172057a0b0696ed9a96d01e30feb023fb521558be3ee76eeafa11a4e2f6f4031e2bf1816a84c190eaa850ecfe1a9376123e0d0732d90ac3537668f8f18b9f732d69326269c450be4dd24b5afd6668a97a3fc3242ad7f15f499278631f4483af4087feda4bd8205d96cd0bf6eee44c27a6669d7ae8e16c731849cfbb2324e1eb7dd8882b65098f1b8ff3aee6f9b8e818c8b2f457f7e01763888ff4f4b375fba67b81583fcdc9afe5f35974dc9b6310ee8e1c92031a49c08b05555fc0d33517fae5bf810acc8a8fd7cfa06ab4a7d395d6878ce8f952c9834",
+    "Expected": "000000000000000000000000e1edf5597a57a0a57597f87d80db9fc54fb6d85d",
+    "Name": "ripemd_248_6"
+  },
+  {
+    "Input": "60e5d1a81d0e943e9f3c65c2c25c6c37aa45b1104745cb8ec511a165ffdb7e304f5478aa3add4d7e0fc40f13b24468d57ca8dabdf0166eadee902cc08d11f65747ca073fc18203e28fd50c46bade91a13d6dc5a06ee62e5e89e0ae7ee885e5516ca6c2dacc36f6f3932a55faf43ae287a21ddc482302de0a59b08c5906142fcf4c31b66783e8839d128db1a106328916ca5d63c0b5722642febed26f00a89430d52ec3eae25a019b3222de61a1529ff4617fd90732e39e96618cc10642dcc5084c882bc48864cda5d45665afb6a864893e389511a0f7b2df74c9e45a86fb69f6bd79854e3a88c206ff4e117af03f1dc3bffe30a61b31a1b4",
+    "Expected": "0000000000000000000000003762bbea745526cb535193ce9e032b2e7b78a517",
+    "Name": "ripemd_248_7"
+  },
+  {
+    "Input": "c6f737440fa2ff6e696c1b4f78a58ff228f5fd09c2c1819adf8e6d0e0f4e4681babff46757edeff3839e9691888c13221feed8e00622d16c99cb9649ef795ff70dd9d0d00310f43527dfc1ca91575dc6e6e61390ef88f20591570ec1fe71c3ed769ee8e234c7cc7303a4cdc065717736f342ca90b9c22a85a3836a2892231ba5183004674b09e8b4eef3e3c8d35e98b4a83c5af2f9d10c06552ea7d1749cbfa7574b238433c1c0e4788efd0cafeffa57f46f1dc9bde6362bed2358cbbe2a5f4bee8e1f697e8e80f5689ccdfff553754d4bcc88d85a5a8a29dfad37ba97ab3a5defde4ec356146db8d10f33bfb36ddd370174d182a90fce52",
+    "Expected": "000000000000000000000000b29987fc32dfe7316fe931db9b34ac78d6432e53",
+    "Name": "ripemd_248_8"
+  },
+  {
+    "Input": "a6cfa4755484c8a9109cb0a0e87c2182f54aabd1b09eac3c29d5d818e62c9791c320e01a3164e142d9804e9caa7f96b4c3b76baff38ee2e6be92420ef3d72e09baac09fb3e306e09cf84a31307584d6c484597dae47100a2971c8aad41e401ab6c49dccba28ef26acf4961978e94e633b72c581ac03621e4ba349379e29dd67e1b3b30a54b8e4a481c559ca860f46f62d5f3a3469c15875a659ff910eea5280dc5c24c542516053637a5dbea576a94a22acefc902e56568ecea893b979ab54b8c7afafce1a7774f2426485d6881297cbaa4df5780929682912ff32d44eb442a711250875d86a401d0dccc95e5ee39bec71738fd812d487c6",
+    "Expected": "000000000000000000000000818187fa3556adbd5de4453ffa52c485dc95b7eb",
+    "Name": "ripemd_248_9"
+  },
+  {
+    "Input": "6bc13ed6e1498ce5daba3b464bd1e4be656af19e1bfbb5199d7fc3820788351a666b820fae2459b98f9bff20275a3c96ddcaf98a78f3f5fa4a2c0a26cea7935263207816e77f4343b9635c342b1f3efb1743922c25bd7674b959e0a3a9cd2ca840a9181633a146d7f307ca7606cd45b8e721c46b955a6989d421baafd8e40139063180731170feb05b5334ce614925f8625f5f8ac0c862c93cf4a0a5a8cf1c77662ac80797c633d8b9c8907acc2960ebdcb5bdad82d9fceb4411d5173b7411fd102d42bdf3c37fb089bb9f0feda659797b2edfd5680ff19b6cac406967019add59401af15d9b83e2ad68cc8e2ad1508391516ba0b26fcc5ec6eda8b318a374b6",
+    "Expected": "000000000000000000000000db3ed3c2623cfa9171af7e453907ebec4aa99f3f",
+    "Name": "ripemd_256_0"
+  },
+  {
+    "Input": "9e8b694c5ecce57179d9d785b8c6a896889a9d96393345c9792762f28ba22f229c351c585d1920b8cfb89a5bcd72fe041b17f7bd091ba505b287778b0be4e87c426ba2792c4af254171d8f63d1657c58e7edee32bc628bf49fbef7ef5d1c1e54ec42da11e95cebbeed0ebaecd31be24801fdec8b81f4046fea52f553c4e7910b421779e7d05791afca220a56084021d2099ecdfdb779c7d8170cdcdfe4362507dfdd8996780460757702e34ad98f5f64a8c1e0bc8851d6c97f02749b8f77cd03df1b9ab97547bbc2a7c2e7f91ba3fe911816d3f898664be0cc727e2743ebfc43f256ff23b38b3b986a62074c5a3e05e86ead9431fcdeb67512f6d502fcefe3c3",
+    "Expected": "0000000000000000000000006aba06f9ccf485a6d07194d9bedc5fe6159095fd",
+    "Name": "ripemd_256_1"
+  },
+  {
+    "Input": "33d5885700a00a94f5b1c2393e2582e5f055b2f4c6e1793585b318194dce47edc01b3c8bb0acb17198bde9adce3b0f7ed4cd8615f837aee928524b0984c99d0eee4d562d4baedfb5ca7056e66d5467067250c199f71824d139f2a184fc1a59b8458f882b63c99ada33d8215111a6df21c8f7424eb2fe9f429256201d099413c154c7b6989ed061256686ea3aeeee04673d09a649b7c568622aa6df0cc14aec4c804d7a35e5731b111a6904e0998d90ce86cf612914152fe3d2fca0201a41166a21ae2c4d259530d65da551f1fc34972949cae201edee295398d22e2f55338ebf6f1629a801db6bb4066588ed79f75223120728c3a57f7129d88f7f8771492233",
+    "Expected": "000000000000000000000000d7b450a4c4ba93b5d2ac0ee813c6bdc04616076d",
+    "Name": "ripemd_256_2"
+  },
+  {
+    "Input": "90c8b1b074059f12b049e5693cecad48f1586676ec47389c1235d3dfd8ee38f8fe80ddbcaeb784e24975b9a42801c89bdfb842cbde5fbc0c3d70c0632cfcdab8a82f806609ce2c88a9060de818bc5987343ec3e0a3f8710e8a8fc98e375b3ac41aeff13de7bcc4bc2ac1b37e28ce466805757dda29c9c743eaea9da33f47f4fdd9d010ccf3c6e3b19fa065fdb3cdf7a22c572be884c05047a9f1e197b32c678bc4984739882bd2f882e12660815b96d2af7812d7ae87f5be034b88e9e04fa2897b8931cd84afebdf2937907414abd6efc49dedae1290f82cdbc324d9e05df083e7f33141d383a1a927b7645656ff7a5795901a997e27003c5672ae4fbab4aecf",
+    "Expected": "00000000000000000000000010e065d096f4f8f00bfeeb4a3434748391905def",
+    "Name": "ripemd_256_3"
+  },
+  {
+    "Input": "e20b7d8204f77bbf7f1e7b83ce61ca390e5f8253ad4121335029f26891f15c02fba4674313a9727aa4b733832a0e06666d3e38184836edf786317de9dd055cbf0d8f4e66faaa8ff86c457ef853c553a7530077b57db42a3031c2753a71e13503dc0c4d0e34d8a16b3bfb51ffc9b3c353817e8e357c608b5075c173204963606e72625c28856fdf23e27a199d23380ef0a29b8a3b1178f1e3e7c069b549392734e4e31f5b6629463311b9d3c8333c33c5b2e79761ffff9863acd9d636e1a9586a6f792cb4120fef101aaf7490540bcc3fc3eafce851ff0380349c3ab56cb7f3ea03f256e58f60307ac1888a1b0b14b56c7435213e271eecc79b4a6f88d102be4c",
+    "Expected": "000000000000000000000000aea000b137648c91b070e173adf88b2bdc05efe9",
+    "Name": "ripemd_256_4"
+  },
+  {
+    "Input": "a714037bc620b9dc5892702ecdb564920a2da1f1e89c0be46330434ebb2e3ef9eb850f01feb55bb99e4accee0aea8fe6ed0bd29b2ca942ffe09456733aff10eaf60c96e121d2770b3bb641cca669c5a1d43065f023123645d0840784af45050e2b373fd7e5806d227ca1f49ab0a7f8be2b5950906c8974de9f2cb4e13ed20a9a55598188c09ec4f2d38454b2852b037ee19ecafc262d2e2aac464a3ca31d725bbabde7f3fdf9fba868b5eac61337be0d73517ac3f06c39b4eaceeb27ab6311db7340f1ca31ebd0b5ffff35cce9d1699ccfe8dbdc061960ee32c9c98dfba7fd5f5ba1635cf82b25b2d7e466717f5716c33f5f3e826bdedf19dbc1d95ff0c8052e",
+    "Expected": "000000000000000000000000eb62fc8a586a593949f918310f8ac841951b915b",
+    "Name": "ripemd_256_5"
+  },
+  {
+    "Input": "a8adb25e930c79b97ed53f28c1da7d288bed69e3e1780592fadb474461aa2a821a0a832e5bbdf897553c1aed35fab43aa3f4510c1782115e14e5d56229de2dff83d95a7c25ed89aea540b9636d06f4f2714fc8588861c9b97ca2dc10640949429b75e0582e9ad7aa4a02ed5ffa22e55570c9f20e6a24e2186e8a2a2f838fa453ce7585cba0d94dc27d424fb9401ae0ce572d2b2eeb7107827c97984115b7648f3b7252f8f3cc6341d490c5c4464bb36e012f1b05057f405aa907ebb2c983f64631cf499a2a33a8c3b9b2942989948edb8ef86a0f2aabd98d52c154012d37d1aef10427f6e461e7b63b781e116a4d5136ddc79ff86b71fa754f00c797c035412b",
+    "Expected": "000000000000000000000000ae7c380ac16e3dfdb70ed8daaa298a4ad1c8333a",
+    "Name": "ripemd_256_6"
+  },
+  {
+    "Input": "5abee62da4e3318bf54f5b248b9196066deb9a1ed907b21a9dc768e45208c0566440c89f8b10ce15806938b7ad65ece194d2fa3cc8d7d5591bc1d52d010896af15011245e8f58eb2bb27d03180f7192eff41d6fbd8ca323e5adf6f8ee09c2b6f43f1bb26469b778edd10127e634fed4d749e25b41d8eba86eff2c068c33e714f67df3fd7fb69a7852aa49fea9c18de2c873e33056b6765bbd93accac24cd0a70a40251ec7a7e9f7cc29948b122010d9745752df3f4a9c67427a8b58122ad4e7ef37851e6c4e499a78094418b771f6d80697996eddb1f4185677e2302f34f5deae03e5eb477506c397bc1a5204b30872085a36b65b7a8df3e0e187f3022736329",
+    "Expected": "000000000000000000000000175d4c4baea39fc01a8b8dc8db1f01cfdf6e29f2",
+    "Name": "ripemd_256_7"
+  },
+  {
+    "Input": "008a2c11820275d2aacf021aab55ca2838a6c35d10ded827de3aab2b0d55b65165cb04110bbfcdf00616c2826e253f61cf955756e94dffcbb6001f59ae4a93c1be46802b22d6211a607f9abb879407e08f8b9bc958c41fdde4c116b56dd869693ce1bb7cf7d7a55f0624bf5c4c35327b178923d88be748a9b079720c27b500e6c1f3af22a03c35cc6f631553a74d5fb0969133edac608688c8647070142d083ae2b4c64b363efef0c5525b0337bf407879755f060af451075f4345dea7e681a313bb885e6ce5f1d6561b5a226475428e9c170995d45a8accb868f83e56d38ca34c85e47ebe2c26e0aa25661d3353b5d88c632182aaecb35303d8d47f01308a0d",
+    "Expected": "00000000000000000000000036e79fc576c0e7cd0f32111f2b616fce4f6bcfcb",
+    "Name": "ripemd_256_8"
+  },
+  {
+    "Input": "3f0f3e84ae75244869a8e9916d88bfcd12218cb988ba6ed24cea180e02f7d53f5bc589e7d89994400c511789cbcaea19b077e0b02d625e549bc6f2673ce401287b4bef9b211d073c24c230cdbaff37ea14c5620b4c3f880f7bfde24472107d112c3d2a0cba111642a6354c117d494be805cad5b5c486bc47906a2d37a9cd9f85fdba019e5f85283d80110d618d6a841a72edc1896883baf0ee0d32f947c0dbc0530ff74626657262fb49460b2c6981155871f2eb5562581a74f968233c3cbe3d62f2be454a7a2d9ce293eaf81f0f793410c6e686ac03ee71f0fb37ddbe16ca21d182ac912b005e90ab81d4f2a906da8309a69576a8afaa160fad2540ec049913",
+    "Expected": "0000000000000000000000006b98d182741c82881e56ee048b0febf179fc11fb",
+    "Name": "ripemd_256_9"
+  }
+]
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/5-modexp_eip2565.json b/substrate/frame/revive/src/pure_precompiles/testdata/5-modexp_eip2565.json
new file mode 100644
index 0000000000000000000000000000000000000000..916bb56fcc4b5135865e9199163c4a69ee0ce22f
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/5-modexp_eip2565.json
@@ -0,0 +1,121 @@
+[
+  {
+    "Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002003fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2efffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "eip_example1",
+    "Gas": 1360,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2efffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "eip_example2",
+    "Gas": 1360,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000040e09ad9675465c53a109fac66a445c91b292d2bb2c5268addb30cd82f80fcb0033ff97c80a5fc6f39193ae969c6ede6710a6b7ac27078a06d90ef1c72e5c85fb502fc9e1f6beb81516545975218075ec2af118cd8798df6e08a147c60fd6095ac2bb02c2908cf4dd7c81f11c289e4bce98f3553768f392a80ce22bf5c4f4a248c6b",
+    "Expected": "60008f1614cc01dcfb6bfb09c625cf90b47d4468db81b5f8b7a39d42f332eab9b2da8f2d95311648a8f243f4bb13cfb3d8f7f2a3c014122ebb3ed41b02783adc",
+    "Name": "nagydani-1-square",
+    "Gas": 200,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000040e09ad9675465c53a109fac66a445c91b292d2bb2c5268addb30cd82f80fcb0033ff97c80a5fc6f39193ae969c6ede6710a6b7ac27078a06d90ef1c72e5c85fb503fc9e1f6beb81516545975218075ec2af118cd8798df6e08a147c60fd6095ac2bb02c2908cf4dd7c81f11c289e4bce98f3553768f392a80ce22bf5c4f4a248c6b",
+    "Expected": "4834a46ba565db27903b1c720c9d593e84e4cbd6ad2e64b31885d944f68cd801f92225a8961c952ddf2797fa4701b330c85c4b363798100b921a1a22a46a7fec",
+    "Name": "nagydani-1-qube",
+    "Gas": 200,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000040e09ad9675465c53a109fac66a445c91b292d2bb2c5268addb30cd82f80fcb0033ff97c80a5fc6f39193ae969c6ede6710a6b7ac27078a06d90ef1c72e5c85fb5010001fc9e1f6beb81516545975218075ec2af118cd8798df6e08a147c60fd6095ac2bb02c2908cf4dd7c81f11c289e4bce98f3553768f392a80ce22bf5c4f4a248c6b",
+    "Expected": "c36d804180c35d4426b57b50c5bfcca5c01856d104564cd513b461d3c8b8409128a5573e416d0ebe38f5f736766d9dc27143e4da981dfa4d67f7dc474cbee6d2",
+    "Name": "nagydani-1-pow0x10001",
+    "Gas": 341,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080cad7d991a00047dd54d3399b6b0b937c718abddef7917c75b6681f40cc15e2be0003657d8d4c34167b2f0bbbca0ccaa407c2a6a07d50f1517a8f22979ce12a81dcaf707cc0cebfc0ce2ee84ee7f77c38b9281b9822a8d3de62784c089c9b18dcb9a2a5eecbede90ea788a862a9ddd9d609c2c52972d63e289e28f6a590ffbf5102e6d893b80aeed5e6e9ce9afa8a5d5675c93a32ac05554cb20e9951b2c140e3ef4e433068cf0fb73bc9f33af1853f64aa27a0028cbf570d7ac9048eae5dc7b28c87c31e5810f1e7fa2cda6adf9f1076dbc1ec1238560071e7efc4e9565c49be9e7656951985860a558a754594115830bcdb421f741408346dd5997bb01c287087",
+    "Expected": "981dd99c3b113fae3e3eaa9435c0dc96779a23c12a53d1084b4f67b0b053a27560f627b873e3f16ad78f28c94f14b6392def26e4d8896c5e3c984e50fa0b3aa44f1da78b913187c6128baa9340b1e9c9a0fd02cb78885e72576da4a8f7e5a113e173a7a2889fde9d407bd9f06eb05bc8fc7b4229377a32941a02bf4edcc06d70",
+    "Name": "nagydani-2-square",
+    "Gas": 200,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000080cad7d991a00047dd54d3399b6b0b937c718abddef7917c75b6681f40cc15e2be0003657d8d4c34167b2f0bbbca0ccaa407c2a6a07d50f1517a8f22979ce12a81dcaf707cc0cebfc0ce2ee84ee7f77c38b9281b9822a8d3de62784c089c9b18dcb9a2a5eecbede90ea788a862a9ddd9d609c2c52972d63e289e28f6a590ffbf5103e6d893b80aeed5e6e9ce9afa8a5d5675c93a32ac05554cb20e9951b2c140e3ef4e433068cf0fb73bc9f33af1853f64aa27a0028cbf570d7ac9048eae5dc7b28c87c31e5810f1e7fa2cda6adf9f1076dbc1ec1238560071e7efc4e9565c49be9e7656951985860a558a754594115830bcdb421f741408346dd5997bb01c287087",
+    "Expected": "d89ceb68c32da4f6364978d62aaa40d7b09b59ec61eb3c0159c87ec3a91037f7dc6967594e530a69d049b64adfa39c8fa208ea970cfe4b7bcd359d345744405afe1cbf761647e32b3184c7fbe87cee8c6c7ff3b378faba6c68b83b6889cb40f1603ee68c56b4c03d48c595c826c041112dc941878f8c5be828154afd4a16311f",
+    "Name": "nagydani-2-qube",
+    "Gas": 200,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000080cad7d991a00047dd54d3399b6b0b937c718abddef7917c75b6681f40cc15e2be0003657d8d4c34167b2f0bbbca0ccaa407c2a6a07d50f1517a8f22979ce12a81dcaf707cc0cebfc0ce2ee84ee7f77c38b9281b9822a8d3de62784c089c9b18dcb9a2a5eecbede90ea788a862a9ddd9d609c2c52972d63e289e28f6a590ffbf51010001e6d893b80aeed5e6e9ce9afa8a5d5675c93a32ac05554cb20e9951b2c140e3ef4e433068cf0fb73bc9f33af1853f64aa27a0028cbf570d7ac9048eae5dc7b28c87c31e5810f1e7fa2cda6adf9f1076dbc1ec1238560071e7efc4e9565c49be9e7656951985860a558a754594115830bcdb421f741408346dd5997bb01c287087",
+    "Expected": "ad85e8ef13fd1dd46eae44af8b91ad1ccae5b7a1c92944f92a19f21b0b658139e0cabe9c1f679507c2de354bf2c91ebd965d1e633978a830d517d2f6f8dd5fd58065d58559de7e2334a878f8ec6992d9b9e77430d4764e863d77c0f87beede8f2f7f2ab2e7222f85cc9d98b8467f4bb72e87ef2882423ebdb6daf02dddac6db2",
+    "Name": "nagydani-2-pow0x10001",
+    "Gas": 1365,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100c9130579f243e12451760976261416413742bd7c91d39ae087f46794062b8c239f2a74abf3918605a0e046a7890e049475ba7fbb78f5de6490bd22a710cc04d30088179a919d86c2da62cf37f59d8f258d2310d94c24891be2d7eeafaa32a8cb4b0cfe5f475ed778f45907dc8916a73f03635f233f7a77a00a3ec9ca6761a5bbd558a2318ecd0caa1c5016691523e7e1fa267dd35e70c66e84380bdcf7c0582f540174e572c41f81e93da0b757dff0b0fe23eb03aa19af0bdec3afb474216febaacb8d0381e631802683182b0fe72c28392539850650b70509f54980241dc175191a35d967288b532a7a8223ce2440d010615f70df269501944d4ec16fe4a3cb02d7a85909174757835187cb52e71934e6c07ef43b4c46fc30bbcd0bc72913068267c54a4aabebb493922492820babdeb7dc9b1558fcf7bd82c37c82d3147e455b623ab0efa752fe0b3a67ca6e4d126639e645a0bf417568adbb2a6a4eef62fa1fa29b2a5a43bebea1f82193a7dd98eb483d09bb595af1fa9c97c7f41f5649d976aee3e5e59e2329b43b13bea228d4a93f16ba139ccb511de521ffe747aa2eca664f7c9e33da59075cc335afcd2bf3ae09765f01ab5a7c3e3938ec168b74724b5074247d200d9970382f683d6059b94dbc336603d1dfee714e4b447ac2fa1d99ecb4961da2854e03795ed758220312d101e1e3d87d5313a6d052aebde75110363d",
+    "Expected": "affc7507ea6d84751ec6b3f0d7b99dbcc263f33330e450d1b3ff0bc3d0874320bf4edd57debd587306988157958cb3cfd369cc0c9c198706f635c9e0f15d047df5cb44d03e2727f26b083c4ad8485080e1293f171c1ed52aef5993a5815c35108e848c951cf1e334490b4a539a139e57b68f44fee583306f5b85ffa57206b3ee5660458858534e5386b9584af3c7f67806e84c189d695e5eb96e1272d06ec2df5dc5fabc6e94b793718c60c36be0a4d031fc84cd658aa72294b2e16fc240aef70cb9e591248e38bd49c5a554d1afa01f38dab72733092f7555334bbef6c8c430119840492380aa95fa025dcf699f0a39669d812b0c6946b6091e6e235337b6f8",
+    "Name": "nagydani-3-square",
+    "Gas": 341,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000100c9130579f243e12451760976261416413742bd7c91d39ae087f46794062b8c239f2a74abf3918605a0e046a7890e049475ba7fbb78f5de6490bd22a710cc04d30088179a919d86c2da62cf37f59d8f258d2310d94c24891be2d7eeafaa32a8cb4b0cfe5f475ed778f45907dc8916a73f03635f233f7a77a00a3ec9ca6761a5bbd558a2318ecd0caa1c5016691523e7e1fa267dd35e70c66e84380bdcf7c0582f540174e572c41f81e93da0b757dff0b0fe23eb03aa19af0bdec3afb474216febaacb8d0381e631802683182b0fe72c28392539850650b70509f54980241dc175191a35d967288b532a7a8223ce2440d010615f70df269501944d4ec16fe4a3cb03d7a85909174757835187cb52e71934e6c07ef43b4c46fc30bbcd0bc72913068267c54a4aabebb493922492820babdeb7dc9b1558fcf7bd82c37c82d3147e455b623ab0efa752fe0b3a67ca6e4d126639e645a0bf417568adbb2a6a4eef62fa1fa29b2a5a43bebea1f82193a7dd98eb483d09bb595af1fa9c97c7f41f5649d976aee3e5e59e2329b43b13bea228d4a93f16ba139ccb511de521ffe747aa2eca664f7c9e33da59075cc335afcd2bf3ae09765f01ab5a7c3e3938ec168b74724b5074247d200d9970382f683d6059b94dbc336603d1dfee714e4b447ac2fa1d99ecb4961da2854e03795ed758220312d101e1e3d87d5313a6d052aebde75110363d",
+    "Expected": "1b280ecd6a6bf906b806d527c2a831e23b238f89da48449003a88ac3ac7150d6a5e9e6b3be4054c7da11dd1e470ec29a606f5115801b5bf53bc1900271d7c3ff3cd5ed790d1c219a9800437a689f2388ba1a11d68f6a8e5b74e9a3b1fac6ee85fc6afbac599f93c391f5dc82a759e3c6c0ab45ce3f5d25d9b0c1bf94cf701ea6466fc9a478dacc5754e593172b5111eeba88557048bceae401337cd4c1182ad9f700852bc8c99933a193f0b94cf1aedbefc48be3bc93ef5cb276d7c2d5462ac8bb0c8fe8923a1db2afe1c6b90d59c534994a6a633f0ead1d638fdc293486bb634ff2c8ec9e7297c04241a61c37e3ae95b11d53343d4ba2b4cc33d2cfa7eb705e",
+    "Name": "nagydani-3-qube",
+    "Gas": 341,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000100c9130579f243e12451760976261416413742bd7c91d39ae087f46794062b8c239f2a74abf3918605a0e046a7890e049475ba7fbb78f5de6490bd22a710cc04d30088179a919d86c2da62cf37f59d8f258d2310d94c24891be2d7eeafaa32a8cb4b0cfe5f475ed778f45907dc8916a73f03635f233f7a77a00a3ec9ca6761a5bbd558a2318ecd0caa1c5016691523e7e1fa267dd35e70c66e84380bdcf7c0582f540174e572c41f81e93da0b757dff0b0fe23eb03aa19af0bdec3afb474216febaacb8d0381e631802683182b0fe72c28392539850650b70509f54980241dc175191a35d967288b532a7a8223ce2440d010615f70df269501944d4ec16fe4a3cb010001d7a85909174757835187cb52e71934e6c07ef43b4c46fc30bbcd0bc72913068267c54a4aabebb493922492820babdeb7dc9b1558fcf7bd82c37c82d3147e455b623ab0efa752fe0b3a67ca6e4d126639e645a0bf417568adbb2a6a4eef62fa1fa29b2a5a43bebea1f82193a7dd98eb483d09bb595af1fa9c97c7f41f5649d976aee3e5e59e2329b43b13bea228d4a93f16ba139ccb511de521ffe747aa2eca664f7c9e33da59075cc335afcd2bf3ae09765f01ab5a7c3e3938ec168b74724b5074247d200d9970382f683d6059b94dbc336603d1dfee714e4b447ac2fa1d99ecb4961da2854e03795ed758220312d101e1e3d87d5313a6d052aebde75110363d",
+    "Expected": "37843d7c67920b5f177372fa56e2a09117df585f81df8b300fba245b1175f488c99476019857198ed459ed8d9799c377330e49f4180c4bf8e8f66240c64f65ede93d601f957b95b83efdee1e1bfde74169ff77002eaf078c71815a9220c80b2e3b3ff22c2f358111d816ebf83c2999026b6de50bfc711ff68705d2f40b753424aefc9f70f08d908b5a20276ad613b4ab4309a3ea72f0c17ea9df6b3367d44fb3acab11c333909e02e81ea2ed404a712d3ea96bba87461720e2d98723e7acd0520ac1a5212dbedcd8dc0c1abf61d4719e319ff4758a774790b8d463cdfe131d1b2dcfee52d002694e98e720cb6ae7ccea353bc503269ba35f0f63bf8d7b672a76",
+    "Name": "nagydani-3-pow0x10001",
+    "Gas": 5461,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000200db34d0e438249c0ed685c949cc28776a05094e1c48691dc3f2dca5fc3356d2a0663bd376e4712839917eb9a19c670407e2c377a2de385a3ff3b52104f7f1f4e0c7bf7717fb913896693dc5edbb65b760ef1b00e42e9d8f9af17352385e1cd742c9b006c0f669995cb0bb21d28c0aced2892267637b6470d8cee0ab27fc5d42658f6e88240c31d6774aa60a7ebd25cd48b56d0da11209f1928e61005c6eb709f3e8e0aaf8d9b10f7d7e296d772264dc76897ccdddadc91efa91c1903b7232a9e4c3b941917b99a3bc0c26497dedc897c25750af60237aa67934a26a2bc491db3dcc677491944bc1f51d3e5d76b8d846a62db03dedd61ff508f91a56d71028125035c3a44cbb041497c83bf3e4ae2a9613a401cc721c547a2afa3b16a2969933d3626ed6d8a7428648f74122fd3f2a02a20758f7f693892c8fd798b39abac01d18506c45e71432639e9f9505719ee822f62ccbf47f6850f096ff77b5afaf4be7d772025791717dbe5abf9b3f40cff7d7aab6f67e38f62faf510747276e20a42127e7500c444f9ed92baf65ade9e836845e39c4316d9dce5f8e2c8083e2c0acbb95296e05e51aab13b6b8f53f06c9c4276e12b0671133218cc3ea907da3bd9a367096d9202128d14846cc2e20d56fc8473ecb07cecbfb8086919f3971926e7045b853d85a69d026195c70f9f7a823536e2a8f4b3e12e94d9b53a934353451094b8102df3143a0057457d75e8c708b6337a6f5a4fd1a06727acf9fb93e2993c62f3378b37d56c85e7b1e00f0145ebf8e4095bd723166293c60b6ac1252291ef65823c9e040ddad14969b3b340a4ef714db093a587c37766d68b8d6b5016e741587e7e6bf7e763b44f0247e64bae30f994d248bfd20541a333e5b225ef6a61199e301738b1e688f70ec1d7fb892c183c95dc543c3e12adf8a5e8b9ca9d04f9445cced3ab256f29e998e69efaa633a7b60e1db5a867924ccab0a171d9d6e1098dfa15acde9553de599eaa56490c8f411e4985111f3d40bddfc5e301edb01547b01a886550a61158f7e2033c59707789bf7c854181d0c2e2a42a93cf09209747d7082e147eb8544de25c3eb14f2e35559ea0c0f5877f2f3fc92132c0ae9da4e45b2f6c866a224ea6d1f28c05320e287750fbc647368d41116e528014cc1852e5531d53e4af938374daba6cee4baa821ed07117253bb3601ddd00d59a3d7fb2ef1f5a2fbba7c429f0cf9a5b3462410fd833a69118f8be9c559b1000cc608fd877fb43f8e65c2d1302622b944462579056874b387208d90623fcdaf93920ca7a9e4ba64ea208758222ad868501cc2c345e2d3a5ea2a17e5069248138c8a79c0251185d29ee73e5afab5354769142d2bf0cb6712727aa6bf84a6245fcdae66e4938d84d1b9dd09a884818622080ff5f98942fb20acd7e0c916c2d5ea7ce6f7e173315384518f",
+    "Expected": "8a5aea5f50dcc03dc7a7a272b5aeebc040554dbc1ffe36753c4fc75f7ed5f6c2cc0de3a922bf96c78bf0643a73025ad21f45a4a5cadd717612c511ab2bff1190fe5f1ae05ba9f8fe3624de1de2a817da6072ddcdb933b50216811dbe6a9ca79d3a3c6b3a476b079fd0d05f04fb154e2dd3e5cb83b148a006f2bcbf0042efb2ae7b916ea81b27aac25c3bf9a8b6d35440062ad8eae34a83f3ffa2cc7b40346b62174a4422584f72f95316f6b2bee9ff232ba9739301c97c99a9ded26c45d72676eb856ad6ecc81d36a6de36d7f9dafafee11baa43a4b0d5e4ecffa7b9b7dcefd58c397dd373e6db4acd2b2c02717712e6289bed7c813b670c4a0c6735aa7f3b0f1ce556eae9fcc94b501b2c8781ba50a8c6220e8246371c3c7359fe4ef9da786ca7d98256754ca4e496be0a9174bedbecb384bdf470779186d6a833f068d2838a88d90ef3ad48ff963b67c39cc5a3ee123baf7bf3125f64e77af7f30e105d72c4b9b5b237ed251e4c122c6d8c1405e736299c3afd6db16a28c6a9cfa68241e53de4cd388271fe534a6a9b0dbea6171d170db1b89858468885d08fecbd54c8e471c3e25d48e97ba450b96d0d87e00ac732aaa0d3ce4309c1064bd8a4c0808a97e0143e43a24cfa847635125cd41c13e0574487963e9d725c01375db99c31da67b4cf65eff555f0c0ac416c727ff8d438ad7c42030551d68c2e7adda0abb1ca7c10",
+    "Name": "nagydani-4-square",
+    "Gas": 1365,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000200db34d0e438249c0ed685c949cc28776a05094e1c48691dc3f2dca5fc3356d2a0663bd376e4712839917eb9a19c670407e2c377a2de385a3ff3b52104f7f1f4e0c7bf7717fb913896693dc5edbb65b760ef1b00e42e9d8f9af17352385e1cd742c9b006c0f669995cb0bb21d28c0aced2892267637b6470d8cee0ab27fc5d42658f6e88240c31d6774aa60a7ebd25cd48b56d0da11209f1928e61005c6eb709f3e8e0aaf8d9b10f7d7e296d772264dc76897ccdddadc91efa91c1903b7232a9e4c3b941917b99a3bc0c26497dedc897c25750af60237aa67934a26a2bc491db3dcc677491944bc1f51d3e5d76b8d846a62db03dedd61ff508f91a56d71028125035c3a44cbb041497c83bf3e4ae2a9613a401cc721c547a2afa3b16a2969933d3626ed6d8a7428648f74122fd3f2a02a20758f7f693892c8fd798b39abac01d18506c45e71432639e9f9505719ee822f62ccbf47f6850f096ff77b5afaf4be7d772025791717dbe5abf9b3f40cff7d7aab6f67e38f62faf510747276e20a42127e7500c444f9ed92baf65ade9e836845e39c4316d9dce5f8e2c8083e2c0acbb95296e05e51aab13b6b8f53f06c9c4276e12b0671133218cc3ea907da3bd9a367096d9202128d14846cc2e20d56fc8473ecb07cecbfb8086919f3971926e7045b853d85a69d026195c70f9f7a823536e2a8f4b3e12e94d9b53a934353451094b8103df3143a0057457d75e8c708b6337a6f5a4fd1a06727acf9fb93e2993c62f3378b37d56c85e7b1e00f0145ebf8e4095bd723166293c60b6ac1252291ef65823c9e040ddad14969b3b340a4ef714db093a587c37766d68b8d6b5016e741587e7e6bf7e763b44f0247e64bae30f994d248bfd20541a333e5b225ef6a61199e301738b1e688f70ec1d7fb892c183c95dc543c3e12adf8a5e8b9ca9d04f9445cced3ab256f29e998e69efaa633a7b60e1db5a867924ccab0a171d9d6e1098dfa15acde9553de599eaa56490c8f411e4985111f3d40bddfc5e301edb01547b01a886550a61158f7e2033c59707789bf7c854181d0c2e2a42a93cf09209747d7082e147eb8544de25c3eb14f2e35559ea0c0f5877f2f3fc92132c0ae9da4e45b2f6c866a224ea6d1f28c05320e287750fbc647368d41116e528014cc1852e5531d53e4af938374daba6cee4baa821ed07117253bb3601ddd00d59a3d7fb2ef1f5a2fbba7c429f0cf9a5b3462410fd833a69118f8be9c559b1000cc608fd877fb43f8e65c2d1302622b944462579056874b387208d90623fcdaf93920ca7a9e4ba64ea208758222ad868501cc2c345e2d3a5ea2a17e5069248138c8a79c0251185d29ee73e5afab5354769142d2bf0cb6712727aa6bf84a6245fcdae66e4938d84d1b9dd09a884818622080ff5f98942fb20acd7e0c916c2d5ea7ce6f7e173315384518f",
+    "Expected": "5a2664252aba2d6e19d9600da582cdd1f09d7a890ac48e6b8da15ae7c6ff1856fc67a841ac2314d283ffa3ca81a0ecf7c27d89ef91a5a893297928f5da0245c99645676b481b7e20a566ee6a4f2481942bee191deec5544600bb2441fd0fb19e2ee7d801ad8911c6b7750affec367a4b29a22942c0f5f4744a4e77a8b654da2a82571037099e9c6d930794efe5cdca73c7b6c0844e386bdca8ea01b3d7807146bb81365e2cdc6475f8c23e0ff84463126189dc9789f72bbce2e3d2d114d728a272f1345122de23df54c922ec7a16e5c2a8f84da8871482bd258c20a7c09bbcd64c7a96a51029bbfe848736a6ba7bf9d931a9b7de0bcaf3635034d4958b20ae9ab3a95a147b0421dd5f7ebff46c971010ebfc4adbbe0ad94d5498c853e7142c450d8c71de4b2f84edbf8acd2e16d00c8115b150b1c30e553dbb82635e781379fe2a56360420ff7e9f70cc64c00aba7e26ed13c7c19622865ae07248daced36416080f35f8cc157a857ed70ea4f347f17d1bee80fa038abd6e39b1ba06b97264388b21364f7c56e192d4b62d9b161405f32ab1e2594e86243e56fcf2cb30d21adef15b9940f91af681da24328c883d892670c6aa47940867a81830a82b82716895db810df1b834640abefb7db2092dd92912cb9a735175bc447be40a503cf22dfe565b4ed7a3293ca0dfd63a507430b323ee248ec82e843b673c97ad730728cebc",
+    "Name": "nagydani-4-qube",
+    "Gas": 1365,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000200db34d0e438249c0ed685c949cc28776a05094e1c48691dc3f2dca5fc3356d2a0663bd376e4712839917eb9a19c670407e2c377a2de385a3ff3b52104f7f1f4e0c7bf7717fb913896693dc5edbb65b760ef1b00e42e9d8f9af17352385e1cd742c9b006c0f669995cb0bb21d28c0aced2892267637b6470d8cee0ab27fc5d42658f6e88240c31d6774aa60a7ebd25cd48b56d0da11209f1928e61005c6eb709f3e8e0aaf8d9b10f7d7e296d772264dc76897ccdddadc91efa91c1903b7232a9e4c3b941917b99a3bc0c26497dedc897c25750af60237aa67934a26a2bc491db3dcc677491944bc1f51d3e5d76b8d846a62db03dedd61ff508f91a56d71028125035c3a44cbb041497c83bf3e4ae2a9613a401cc721c547a2afa3b16a2969933d3626ed6d8a7428648f74122fd3f2a02a20758f7f693892c8fd798b39abac01d18506c45e71432639e9f9505719ee822f62ccbf47f6850f096ff77b5afaf4be7d772025791717dbe5abf9b3f40cff7d7aab6f67e38f62faf510747276e20a42127e7500c444f9ed92baf65ade9e836845e39c4316d9dce5f8e2c8083e2c0acbb95296e05e51aab13b6b8f53f06c9c4276e12b0671133218cc3ea907da3bd9a367096d9202128d14846cc2e20d56fc8473ecb07cecbfb8086919f3971926e7045b853d85a69d026195c70f9f7a823536e2a8f4b3e12e94d9b53a934353451094b81010001df3143a0057457d75e8c708b6337a6f5a4fd1a06727acf9fb93e2993c62f3378b37d56c85e7b1e00f0145ebf8e4095bd723166293c60b6ac1252291ef65823c9e040ddad14969b3b340a4ef714db093a587c37766d68b8d6b5016e741587e7e6bf7e763b44f0247e64bae30f994d248bfd20541a333e5b225ef6a61199e301738b1e688f70ec1d7fb892c183c95dc543c3e12adf8a5e8b9ca9d04f9445cced3ab256f29e998e69efaa633a7b60e1db5a867924ccab0a171d9d6e1098dfa15acde9553de599eaa56490c8f411e4985111f3d40bddfc5e301edb01547b01a886550a61158f7e2033c59707789bf7c854181d0c2e2a42a93cf09209747d7082e147eb8544de25c3eb14f2e35559ea0c0f5877f2f3fc92132c0ae9da4e45b2f6c866a224ea6d1f28c05320e287750fbc647368d41116e528014cc1852e5531d53e4af938374daba6cee4baa821ed07117253bb3601ddd00d59a3d7fb2ef1f5a2fbba7c429f0cf9a5b3462410fd833a69118f8be9c559b1000cc608fd877fb43f8e65c2d1302622b944462579056874b387208d90623fcdaf93920ca7a9e4ba64ea208758222ad868501cc2c345e2d3a5ea2a17e5069248138c8a79c0251185d29ee73e5afab5354769142d2bf0cb6712727aa6bf84a6245fcdae66e4938d84d1b9dd09a884818622080ff5f98942fb20acd7e0c916c2d5ea7ce6f7e173315384518f",
+    "Expected": "bed8b970c4a34849fc6926b08e40e20b21c15ed68d18f228904878d4370b56322d0da5789da0318768a374758e6375bfe4641fca5285ec7171828922160f48f5ca7efbfee4d5148612c38ad683ae4e3c3a053d2b7c098cf2b34f2cb19146eadd53c86b2d7ccf3d83b2c370bfb840913ee3879b1057a6b4e07e110b6bcd5e958bc71a14798c91d518cc70abee264b0d25a4110962a764b364ac0b0dd1ee8abc8426d775ec0f22b7e47b32576afaf1b5a48f64573ed1c5c29f50ab412188d9685307323d990802b81dacc06c6e05a1e901830ba9fcc67688dc29c5e27bde0a6e845ca925f5454b6fb3747edfaa2a5820838fb759eadf57f7cb5cec57fc213ddd8a4298fa079c3c0f472b07fb15aa6a7f0a3780bd296ff6a62e58ef443870b02260bd4fd2bbc98255674b8e1f1f9f8d33c7170b0ebbea4523b695911abbf26e41885344823bd0587115fdd83b721a4e8457a31c9a84b3d3520a07e0e35df7f48e5a9d534d0ec7feef1ff74de6a11e7f93eab95175b6ce22c68d78a642ad642837897ec11349205d8593ac19300207572c38d29ca5dfa03bc14cdbc32153c80e5cc3e739403d34c75915e49beb43094cc6dcafb3665b305ddec9286934ae66ec6b777ca528728c851318eb0f207b39f1caaf96db6eeead6b55ed08f451939314577d42bcc9f97c0b52d0234f88fd07e4c1d7780fdebc025cfffcb572cb27a8c33963",
+    "Name": "nagydani-4-pow0x10001",
+    "Gas": 21845,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000400c5a1611f8be90071a43db23cc2fe01871cc4c0e8ab5743f6378e4fef77f7f6db0095c0727e20225beb665645403453e325ad5f9aeb9ba99bf3c148f63f9c07cf4fe8847ad5242d6b7d4499f93bd47056ddab8f7dee878fc2314f344dbee2a7c41a5d3db91eff372c730c2fdd3a141a4b61999e36d549b9870cf2f4e632c4d5df5f024f81c028000073a0ed8847cfb0593d36a47142f578f05ccbe28c0c06aeb1b1da027794c48db880278f79ba78ae64eedfea3c07d10e0562668d839749dc95f40467d15cf65b9cfc52c7c4bcef1cda3596dd52631aac942f146c7cebd46065131699ce8385b0db1874336747ee020a5698a3d1a1082665721e769567f579830f9d259cec1a836845109c21cf6b25da572512bf3c42fd4b96e43895589042ab60dd41f497db96aec102087fe784165bb45f942859268fd2ff6c012d9d00c02ba83eace047cc5f7b2c392c2955c58a49f0338d6fc58749c9db2155522ac17914ec216ad87f12e0ee95574613942fa615898c4d9e8a3be68cd6afa4e7a003dedbdf8edfee31162b174f965b20ae752ad89c967b3068b6f722c16b354456ba8e280f987c08e0a52d40a2e8f3a59b94d590aeef01879eb7a90b3ee7d772c839c85519cbeaddc0c193ec4874a463b53fcaea3271d80ebfb39b33489365fc039ae549a17a9ff898eea2f4cb27b8dbee4c17b998438575b2b8d107e4a0d66ba7fca85b41a58a8d51f191a35c856dfbe8aef2b00048a694bbccff832d23c8ca7a7ff0b6c0b3011d00b97c86c0628444d267c951d9e4fb8f83e154b8f74fb51aa16535e498235c5597dac9606ed0be3173a3836baa4e7d756ffe1e2879b415d3846bccd538c05b847785699aefde3e305decb600cd8fb0e7d8de5efc26971a6ad4e6d7a2d91474f1023a0ac4b78dc937da0ce607a45974d2cac1c33a2631ff7fe6144a3b2e5cf98b531a9627dea92c1dc82204d09db0439b6a11dd64b484e1263aa45fd9539b6020b55e3baece3986a8bffc1003406348f5c61265099ed43a766ee4f93f5f9c5abbc32a0fd3ac2b35b87f9ec26037d88275bd7dd0a54474995ee34ed3727f3f97c48db544b1980193a4b76a8a3ddab3591ce527f16d91882e67f0103b5cda53f7da54d489fc4ac08b6ab358a5a04aa9daa16219d50bd672a7cb804ed769d218807544e5993f1c27427104b349906a0b654df0bf69328afd3013fbe430155339c39f236df5557bf92f1ded7ff609a8502f49064ec3d1dbfb6c15d3a4c11a4f8acd12278cbf68acd5709463d12e3338a6eddb8c112f199645e23154a8e60879d2a654e3ed9296aa28f134168619691cd2c6b9e2eba4438381676173fc63c2588a3c5910dc149cf3760f0aa9fa9c3f5faa9162b0bf1aac9dd32b706a60ef53cbdb394b6b40222b5bc80eea82ba8958386672564cae3794f977871ab62337cf02e30049201ec12937e7ce79d0f55d9c810e20acf52212aca1d3888949e0e4830aad88d804161230eb89d4d329cc83570fe257217d2119134048dd2ed167646975fc7d77136919a049ea74cf08ddd2b896890bb24a0ba18094a22baa351bf29ad96c66bbb1a598f2ca391749620e62d61c3561a7d3653ccc8892c7b99baaf76bf836e2991cb06d6bc0514568ff0d1ec8bb4b3d6984f5eaefb17d3ea2893722375d3ddb8e389a8eef7d7d198f8e687d6a513983df906099f9a2d23f4f9dec6f8ef2f11fc0a21fac45353b94e00486f5e17d386af42502d09db33cf0cf28310e049c07e88682aeeb00cb833c5174266e62407a57583f1f88b304b7c6e0c84bbe1c0fd423072d37a5bd0aacf764229e5c7cd02473460ba3645cd8e8ae144065bf02d0dd238593d8e230354f67e0b2f23012c23274f80e3ee31e35e2606a4a3f31d94ab755e6d163cff52cbb36b6d0cc67ffc512aeed1dce4d7a0d70ce82f2baba12e8d514dc92a056f994adfb17b5b9712bd5186f27a2fda1f7039c5df2c8587fdc62f5627580c13234b55be4df3056050e2d1ef3218f0dd66cb05265fe1acfb0989d8213f2c19d1735a7cf3fa65d88dad5af52dc2bba22b7abf46c3bc77b5091baab9e8f0ddc4d5e581037de91a9f8dcbc69309be29cc815cf19a20a7585b8b3073edf51fc9baeb3e509b97fa4ecfd621e0fd57bd61cac1b895c03248ff12bdbc57509250df3517e8a3fe1d776836b34ab352b973d932ef708b14f7418f9eceb1d87667e61e3e758649cb083f01b133d37ab2f5afa96d6c84bcacf4efc3851ad308c1e7d9113624fce29fab460ab9d2a48d92cdb281103a5250ad44cb2ff6e67ac670c02fdafb3e0f1353953d6d7d5646ca1568dea55275a050ec501b7c6250444f7219f1ba7521ba3b93d089727ca5f3bbe0d6c1300b423377004954c5628fdb65770b18ced5c9b23a4a5a6d6ef25fe01b4ce278de0bcc4ed86e28a0a68818ffa40970128cf2c38740e80037984428c1bd5113f40ff47512ee6f4e4d8f9b8e8e1b3040d2928d003bd1c1329dc885302fbce9fa81c23b4dc49c7c82d29b52957847898676c89aa5d32b5b0e1c0d5a2b79a19d67562f407f19425687971a957375879d90c5f57c857136c17106c9ab1b99d80e69c8c954ed386493368884b55c939b8d64d26f643e800c56f90c01079d7c534e3b2b7ae352cefd3016da55f6a85eb803b85e2304915fd2001f77c74e28746293c46e4f5f0fd49cf988aafd0026b8e7a3bab2da5cdce1ea26c2e29ec03f4807fac432662b2d6c060be1c7be0e5489de69d0a6e03a4b9117f9244b34a0f1ecba89884f781c6320412413a00c4980287409a2a78c2cd7e65cecebbe4ec1c28cac4dd95f6998e78fc6f1392384331c9436aa10e10e2bf8ad2c4eafbcf276aa7bae64b74428911b3269c749338b0fc5075ad",
+    "Expected": "d61fe4e3f32ac260915b5b03b78a86d11bfc41d973fce5b0cc59035cf8289a8a2e3878ea15fa46565b0d806e2f85b53873ea20ed653869b688adf83f3ef444535bf91598ff7e80f334fb782539b92f39f55310cc4b35349ab7b278346eda9bc37c0d8acd3557fae38197f412f8d9e57ce6a76b7205c23564cab06e5615be7c6f05c3d05ec690cba91da5e89d55b152ff8dd2157dc5458190025cf94b1ad98f7cbe64e9482faba95e6b33844afc640892872b44a9932096508f4a782a4805323808f23e54b6ff9b841dbfa87db3505ae4f687972c18ea0f0d0af89d36c1c2a5b14560c153c3fee406f5cf15cfd1c0bb45d767426d465f2f14c158495069d0c5955a00150707862ecaae30624ebacdd8ac33e4e6aab3ff90b6ba445a84689386b9e945d01823a65874444316e83767290fcff630d2477f49d5d8ffdd200e08ee1274270f86ed14c687895f6caf5ce528bd970c20d2408a9ba66216324c6a011ac4999098362dbd98a038129a2d40c8da6ab88318aa3046cb660327cc44236d9e5d2163bd0959062195c51ed93d0088b6f92051fc99050ece2538749165976233697ab4b610385366e5ce0b02ad6b61c168ecfbedcdf74278a38de340fd7a5fead8e588e294795f9b011e2e60377a89e25c90e145397cdeabc60fd32444a6b7642a611a83c464d8b8976666351b4865c37b02e6dc21dbcdf5f930341707b618cc0f03c3122646b3385c9df9f2ec730eec9d49e7dfc9153b6e6289da8c4f0ebea9ccc1b751948e3bb7171c9e4d57423b0eeeb79095c030cb52677b3f7e0b45c30f645391f3f9c957afa549c4e0b2465b03c67993cd200b1af01035962edbc4c9e89b31c82ac121987d6529dafdeef67a132dc04b6dc68e77f22862040b75e2ceb9ff16da0fca534e6db7bd12fa7b7f51b6c08c1e23dfcdb7acbd2da0b51c87ffbced065a612e9b1c8bba9b7e2d8d7a2f04fcc4aaf355b60d764879a76b5e16762d5f2f55d585d0c8e82df6940960cddfb72c91dfa71f6b4e1c6ca25dfc39a878e998a663c04fe29d5e83b9586d047b4d7ff70a9f0d44f127e7d741685ca75f11629128d916a0ffef4be586a30c4b70389cc746e84ebf177c01ee8a4511cfbb9d1ecf7f7b33c7dd8177896e10bbc82f838dcd6db7ac67de62bf46b6a640fb580c5d1d2708f3862e3d2b645d0d18e49ef088053e3a220adc0e033c2afcfe61c90e32151152eb3caaf746c5e377d541cafc6cbb0cc0fa48b5caf1728f2e1957f5addfc234f1a9d89e40d49356c9172d0561a695fce6dab1d412321bbf407f63766ffd7b6b3d79bcfa07991c5a9709849c1008689e3b47c50d613980bec239fb64185249d055b30375ccb4354d71fe4d05648fbf6c80634dfc3575f2f24abb714c1e4c95e8896763bf4316e954c7ad19e5780ab7a040ca6fb9271f90a8b22ae738daf6cb",
+    "Name": "nagydani-5-square",
+    "Gas": 5461,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000400c5a1611f8be90071a43db23cc2fe01871cc4c0e8ab5743f6378e4fef77f7f6db0095c0727e20225beb665645403453e325ad5f9aeb9ba99bf3c148f63f9c07cf4fe8847ad5242d6b7d4499f93bd47056ddab8f7dee878fc2314f344dbee2a7c41a5d3db91eff372c730c2fdd3a141a4b61999e36d549b9870cf2f4e632c4d5df5f024f81c028000073a0ed8847cfb0593d36a47142f578f05ccbe28c0c06aeb1b1da027794c48db880278f79ba78ae64eedfea3c07d10e0562668d839749dc95f40467d15cf65b9cfc52c7c4bcef1cda3596dd52631aac942f146c7cebd46065131699ce8385b0db1874336747ee020a5698a3d1a1082665721e769567f579830f9d259cec1a836845109c21cf6b25da572512bf3c42fd4b96e43895589042ab60dd41f497db96aec102087fe784165bb45f942859268fd2ff6c012d9d00c02ba83eace047cc5f7b2c392c2955c58a49f0338d6fc58749c9db2155522ac17914ec216ad87f12e0ee95574613942fa615898c4d9e8a3be68cd6afa4e7a003dedbdf8edfee31162b174f965b20ae752ad89c967b3068b6f722c16b354456ba8e280f987c08e0a52d40a2e8f3a59b94d590aeef01879eb7a90b3ee7d772c839c85519cbeaddc0c193ec4874a463b53fcaea3271d80ebfb39b33489365fc039ae549a17a9ff898eea2f4cb27b8dbee4c17b998438575b2b8d107e4a0d66ba7fca85b41a58a8d51f191a35c856dfbe8aef2b00048a694bbccff832d23c8ca7a7ff0b6c0b3011d00b97c86c0628444d267c951d9e4fb8f83e154b8f74fb51aa16535e498235c5597dac9606ed0be3173a3836baa4e7d756ffe1e2879b415d3846bccd538c05b847785699aefde3e305decb600cd8fb0e7d8de5efc26971a6ad4e6d7a2d91474f1023a0ac4b78dc937da0ce607a45974d2cac1c33a2631ff7fe6144a3b2e5cf98b531a9627dea92c1dc82204d09db0439b6a11dd64b484e1263aa45fd9539b6020b55e3baece3986a8bffc1003406348f5c61265099ed43a766ee4f93f5f9c5abbc32a0fd3ac2b35b87f9ec26037d88275bd7dd0a54474995ee34ed3727f3f97c48db544b1980193a4b76a8a3ddab3591ce527f16d91882e67f0103b5cda53f7da54d489fc4ac08b6ab358a5a04aa9daa16219d50bd672a7cb804ed769d218807544e5993f1c27427104b349906a0b654df0bf69328afd3013fbe430155339c39f236df5557bf92f1ded7ff609a8502f49064ec3d1dbfb6c15d3a4c11a4f8acd12278cbf68acd5709463d12e3338a6eddb8c112f199645e23154a8e60879d2a654e3ed9296aa28f134168619691cd2c6b9e2eba4438381676173fc63c2588a3c5910dc149cf3760f0aa9fa9c3f5faa9162b0bf1aac9dd32b706a60ef53cbdb394b6b40222b5bc80eea82ba8958386672564cae3794f977871ab62337cf03e30049201ec12937e7ce79d0f55d9c810e20acf52212aca1d3888949e0e4830aad88d804161230eb89d4d329cc83570fe257217d2119134048dd2ed167646975fc7d77136919a049ea74cf08ddd2b896890bb24a0ba18094a22baa351bf29ad96c66bbb1a598f2ca391749620e62d61c3561a7d3653ccc8892c7b99baaf76bf836e2991cb06d6bc0514568ff0d1ec8bb4b3d6984f5eaefb17d3ea2893722375d3ddb8e389a8eef7d7d198f8e687d6a513983df906099f9a2d23f4f9dec6f8ef2f11fc0a21fac45353b94e00486f5e17d386af42502d09db33cf0cf28310e049c07e88682aeeb00cb833c5174266e62407a57583f1f88b304b7c6e0c84bbe1c0fd423072d37a5bd0aacf764229e5c7cd02473460ba3645cd8e8ae144065bf02d0dd238593d8e230354f67e0b2f23012c23274f80e3ee31e35e2606a4a3f31d94ab755e6d163cff52cbb36b6d0cc67ffc512aeed1dce4d7a0d70ce82f2baba12e8d514dc92a056f994adfb17b5b9712bd5186f27a2fda1f7039c5df2c8587fdc62f5627580c13234b55be4df3056050e2d1ef3218f0dd66cb05265fe1acfb0989d8213f2c19d1735a7cf3fa65d88dad5af52dc2bba22b7abf46c3bc77b5091baab9e8f0ddc4d5e581037de91a9f8dcbc69309be29cc815cf19a20a7585b8b3073edf51fc9baeb3e509b97fa4ecfd621e0fd57bd61cac1b895c03248ff12bdbc57509250df3517e8a3fe1d776836b34ab352b973d932ef708b14f7418f9eceb1d87667e61e3e758649cb083f01b133d37ab2f5afa96d6c84bcacf4efc3851ad308c1e7d9113624fce29fab460ab9d2a48d92cdb281103a5250ad44cb2ff6e67ac670c02fdafb3e0f1353953d6d7d5646ca1568dea55275a050ec501b7c6250444f7219f1ba7521ba3b93d089727ca5f3bbe0d6c1300b423377004954c5628fdb65770b18ced5c9b23a4a5a6d6ef25fe01b4ce278de0bcc4ed86e28a0a68818ffa40970128cf2c38740e80037984428c1bd5113f40ff47512ee6f4e4d8f9b8e8e1b3040d2928d003bd1c1329dc885302fbce9fa81c23b4dc49c7c82d29b52957847898676c89aa5d32b5b0e1c0d5a2b79a19d67562f407f19425687971a957375879d90c5f57c857136c17106c9ab1b99d80e69c8c954ed386493368884b55c939b8d64d26f643e800c56f90c01079d7c534e3b2b7ae352cefd3016da55f6a85eb803b85e2304915fd2001f77c74e28746293c46e4f5f0fd49cf988aafd0026b8e7a3bab2da5cdce1ea26c2e29ec03f4807fac432662b2d6c060be1c7be0e5489de69d0a6e03a4b9117f9244b34a0f1ecba89884f781c6320412413a00c4980287409a2a78c2cd7e65cecebbe4ec1c28cac4dd95f6998e78fc6f1392384331c9436aa10e10e2bf8ad2c4eafbcf276aa7bae64b74428911b3269c749338b0fc5075ad",
+    "Expected": "5f9c70ec884926a89461056ad20ac4c30155e817f807e4d3f5bb743d789c83386762435c3627773fa77da5144451f2a8aad8adba88e0b669f5377c5e9bad70e45c86fe952b613f015a9953b8a5de5eaee4566acf98d41e327d93a35bd5cef4607d025e58951167957df4ff9b1627649d3943805472e5e293d3efb687cfd1e503faafeb2840a3e3b3f85d016051a58e1c9498aab72e63b748d834b31eb05d85dcde65e27834e266b85c75cc4ec0135135e0601cb93eeeb6e0010c8ceb65c4c319623c5e573a2c8c9fbbf7df68a930beb412d3f4dfd146175484f45d7afaa0d2e60684af9b34730f7c8438465ad3e1d0c3237336722f2aa51095bd5759f4b8ab4dda111b684aa3dac62a761722e7ae43495b7709933512c81c4e3c9133a51f7ce9f2b51fcec064f65779666960b4e45df3900f54311f5613e8012dd1b8efd359eda31a778264c72aa8bb419d862734d769076bce2810011989a45374e5c5d8729fec21427f0bf397eacbb4220f603cf463a4b0c94efd858ffd9768cd60d6ce68d755e0fbad007ce5c2223d70c7018345a102e4ab3c60a13a9e7794303156d4c2063e919f2153c13961fb324c80b240742f47773a7a8e25b3e3fb19b00ce839346c6eb3c732fbc6b888df0b1fe0a3d07b053a2e9402c267b2d62f794d8a2840526e3ade15ce2264496ccd7519571dfde47f7a4bb16292241c20b2be59f3f8fb4f6383f232d838c5a22d8c95b6834d9d2ca493f5a505ebe8899503b0e8f9b19e6e2dd81c1628b80016d02097e0134de51054c4e7674824d4d758760fc52377d2cad145e259aa2ffaf54139e1a66b1e0c1c191e32ac59474c6b526f5b3ba07d3e5ec286eddf531fcd5292869be58c9f22ef91026159f7cf9d05ef66b4299f4da48cc1635bf2243051d342d378a22c83390553e873713c0454ce5f3234397111ac3fe3207b86f0ed9fc025c81903e1748103692074f83824fda6341be4f95ff00b0a9a208c267e12fa01825054cc0513629bf3dbb56dc5b90d4316f87654a8be18227978ea0a8a522760cad620d0d14fd38920fb7321314062914275a5f99f677145a6979b156bd82ecd36f23f8e1273cc2759ecc0b2c69d94dad5211d1bed939dd87ed9e07b91d49713a6e16ade0a98aea789f04994e318e4ff2c8a188cd8d43aeb52c6daa3bc29b4af50ea82a247c5cd67b573b34cbadcc0a376d3bbd530d50367b42705d870f2e27a8197ef46070528bfe408360faa2ebb8bf76e9f388572842bcb119f4d84ee34ae31f5cc594f23705a49197b181fb78ed1ec99499c690f843a4d0cf2e226d118e9372271054fbabdcc5c92ae9fefaef0589cd0e722eaf30c1703ec4289c7fd81beaa8a455ccee5298e31e2080c10c366a6fcf56f7d13582ad0bcad037c612b710fc595b70fbefaaca23623b60c6c39b11beb8e5843b6b3dac60f",
+    "Name": "nagydani-5-qube",
+    "Gas": 5461,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000400c5a1611f8be90071a43db23cc2fe01871cc4c0e8ab5743f6378e4fef77f7f6db0095c0727e20225beb665645403453e325ad5f9aeb9ba99bf3c148f63f9c07cf4fe8847ad5242d6b7d4499f93bd47056ddab8f7dee878fc2314f344dbee2a7c41a5d3db91eff372c730c2fdd3a141a4b61999e36d549b9870cf2f4e632c4d5df5f024f81c028000073a0ed8847cfb0593d36a47142f578f05ccbe28c0c06aeb1b1da027794c48db880278f79ba78ae64eedfea3c07d10e0562668d839749dc95f40467d15cf65b9cfc52c7c4bcef1cda3596dd52631aac942f146c7cebd46065131699ce8385b0db1874336747ee020a5698a3d1a1082665721e769567f579830f9d259cec1a836845109c21cf6b25da572512bf3c42fd4b96e43895589042ab60dd41f497db96aec102087fe784165bb45f942859268fd2ff6c012d9d00c02ba83eace047cc5f7b2c392c2955c58a49f0338d6fc58749c9db2155522ac17914ec216ad87f12e0ee95574613942fa615898c4d9e8a3be68cd6afa4e7a003dedbdf8edfee31162b174f965b20ae752ad89c967b3068b6f722c16b354456ba8e280f987c08e0a52d40a2e8f3a59b94d590aeef01879eb7a90b3ee7d772c839c85519cbeaddc0c193ec4874a463b53fcaea3271d80ebfb39b33489365fc039ae549a17a9ff898eea2f4cb27b8dbee4c17b998438575b2b8d107e4a0d66ba7fca85b41a58a8d51f191a35c856dfbe8aef2b00048a694bbccff832d23c8ca7a7ff0b6c0b3011d00b97c86c0628444d267c951d9e4fb8f83e154b8f74fb51aa16535e498235c5597dac9606ed0be3173a3836baa4e7d756ffe1e2879b415d3846bccd538c05b847785699aefde3e305decb600cd8fb0e7d8de5efc26971a6ad4e6d7a2d91474f1023a0ac4b78dc937da0ce607a45974d2cac1c33a2631ff7fe6144a3b2e5cf98b531a9627dea92c1dc82204d09db0439b6a11dd64b484e1263aa45fd9539b6020b55e3baece3986a8bffc1003406348f5c61265099ed43a766ee4f93f5f9c5abbc32a0fd3ac2b35b87f9ec26037d88275bd7dd0a54474995ee34ed3727f3f97c48db544b1980193a4b76a8a3ddab3591ce527f16d91882e67f0103b5cda53f7da54d489fc4ac08b6ab358a5a04aa9daa16219d50bd672a7cb804ed769d218807544e5993f1c27427104b349906a0b654df0bf69328afd3013fbe430155339c39f236df5557bf92f1ded7ff609a8502f49064ec3d1dbfb6c15d3a4c11a4f8acd12278cbf68acd5709463d12e3338a6eddb8c112f199645e23154a8e60879d2a654e3ed9296aa28f134168619691cd2c6b9e2eba4438381676173fc63c2588a3c5910dc149cf3760f0aa9fa9c3f5faa9162b0bf1aac9dd32b706a60ef53cbdb394b6b40222b5bc80eea82ba8958386672564cae3794f977871ab62337cf010001e30049201ec12937e7ce79d0f55d9c810e20acf52212aca1d3888949e0e4830aad88d804161230eb89d4d329cc83570fe257217d2119134048dd2ed167646975fc7d77136919a049ea74cf08ddd2b896890bb24a0ba18094a22baa351bf29ad96c66bbb1a598f2ca391749620e62d61c3561a7d3653ccc8892c7b99baaf76bf836e2991cb06d6bc0514568ff0d1ec8bb4b3d6984f5eaefb17d3ea2893722375d3ddb8e389a8eef7d7d198f8e687d6a513983df906099f9a2d23f4f9dec6f8ef2f11fc0a21fac45353b94e00486f5e17d386af42502d09db33cf0cf28310e049c07e88682aeeb00cb833c5174266e62407a57583f1f88b304b7c6e0c84bbe1c0fd423072d37a5bd0aacf764229e5c7cd02473460ba3645cd8e8ae144065bf02d0dd238593d8e230354f67e0b2f23012c23274f80e3ee31e35e2606a4a3f31d94ab755e6d163cff52cbb36b6d0cc67ffc512aeed1dce4d7a0d70ce82f2baba12e8d514dc92a056f994adfb17b5b9712bd5186f27a2fda1f7039c5df2c8587fdc62f5627580c13234b55be4df3056050e2d1ef3218f0dd66cb05265fe1acfb0989d8213f2c19d1735a7cf3fa65d88dad5af52dc2bba22b7abf46c3bc77b5091baab9e8f0ddc4d5e581037de91a9f8dcbc69309be29cc815cf19a20a7585b8b3073edf51fc9baeb3e509b97fa4ecfd621e0fd57bd61cac1b895c03248ff12bdbc57509250df3517e8a3fe1d776836b34ab352b973d932ef708b14f7418f9eceb1d87667e61e3e758649cb083f01b133d37ab2f5afa96d6c84bcacf4efc3851ad308c1e7d9113624fce29fab460ab9d2a48d92cdb281103a5250ad44cb2ff6e67ac670c02fdafb3e0f1353953d6d7d5646ca1568dea55275a050ec501b7c6250444f7219f1ba7521ba3b93d089727ca5f3bbe0d6c1300b423377004954c5628fdb65770b18ced5c9b23a4a5a6d6ef25fe01b4ce278de0bcc4ed86e28a0a68818ffa40970128cf2c38740e80037984428c1bd5113f40ff47512ee6f4e4d8f9b8e8e1b3040d2928d003bd1c1329dc885302fbce9fa81c23b4dc49c7c82d29b52957847898676c89aa5d32b5b0e1c0d5a2b79a19d67562f407f19425687971a957375879d90c5f57c857136c17106c9ab1b99d80e69c8c954ed386493368884b55c939b8d64d26f643e800c56f90c01079d7c534e3b2b7ae352cefd3016da55f6a85eb803b85e2304915fd2001f77c74e28746293c46e4f5f0fd49cf988aafd0026b8e7a3bab2da5cdce1ea26c2e29ec03f4807fac432662b2d6c060be1c7be0e5489de69d0a6e03a4b9117f9244b34a0f1ecba89884f781c6320412413a00c4980287409a2a78c2cd7e65cecebbe4ec1c28cac4dd95f6998e78fc6f1392384331c9436aa10e10e2bf8ad2c4eafbcf276aa7bae64b74428911b3269c749338b0fc5075ad",
+    "Expected": "5a0eb2bdf0ac1cae8e586689fa16cd4b07dfdedaec8a110ea1fdb059dd5253231b6132987598dfc6e11f86780428982d50cf68f67ae452622c3b336b537ef3298ca645e8f89ee39a26758206a5a3f6409afc709582f95274b57b71fae5c6b74619ae6f089a5393c5b79235d9caf699d23d88fb873f78379690ad8405e34c19f5257d596580c7a6a7206a3712825afe630c76b31cdb4a23e7f0632e10f14f4e282c81a66451a26f8df2a352b5b9f607a7198449d1b926e27036810368e691a74b91c61afa73d9d3b99453e7c8b50fd4f09c039a2f2feb5c419206694c31b92df1d9586140cb3417b38d0c503c7b508cc2ed12e813a1c795e9829eb39ee78eeaf360a169b491a1d4e419574e712402de9d48d54c1ae5e03739b7156615e8267e1fb0a897f067afd11fb33f6e24182d7aaaaa18fe5bc1982f20d6b871e5a398f0f6f718181d31ec225cfa9a0a70124ed9a70031bdf0c1c7829f708b6e17d50419ef361cf77d99c85f44607186c8d683106b8bd38a49b5d0fb503b397a83388c5678dcfcc737499d84512690701ed621a6f0172aecf037184ddf0f2453e4053024018e5ab2e30d6d5363b56e8b41509317c99042f517247474ab3abc848e00a07f69c254f46f2a05cf6ed84e5cc906a518fdcfdf2c61ce731f24c5264f1a25fc04934dc28aec112134dd523f70115074ca34e3807aa4cb925147f3a0ce152d323bd8c675ace446d0fd1ae30c4b57f0eb2c23884bc18f0964c0114796c5b6d080c3d89175665fbf63a6381a6a9da39ad070b645c8bb1779506da14439a9f5b5d481954764ea114fac688930bc68534d403cff4210673b6a6ff7ae416b7cd41404c3d3f282fcd193b86d0f54d0006c2a503b40d5c3930da980565b8f9630e9493a79d1c03e74e5f93ac8e4dc1a901ec5e3b3e57049124c7b72ea345aa359e782285d9e6a5c144a378111dd02c40855ff9c2be9b48425cb0b2fd62dc8678fd151121cf26a65e917d65d8e0dacfae108eb5508b601fb8ffa370be1f9a8b749a2d12eeab81f41079de87e2d777994fa4d28188c579ad327f9957fb7bdecec5c680844dd43cb57cf87aeb763c003e65011f73f8c63442df39a92b946a6bd968a1c1e4d5fa7d88476a68bd8e20e5b70a99259c7d3f85fb1b65cd2e93972e6264e74ebf289b8b6979b9b68a85cd5b360c1987f87235c3c845d62489e33acf85d53fa3561fe3a3aee18924588d9c6eba4edb7a4d106b31173e42929f6f0c48c80ce6a72d54eca7c0fe870068b7a7c89c63cdda593f5b32d3cb4ea8a32c39f00ab449155757172d66763ed9527019d6de6c9f2416aa6203f4d11c9ebee1e1d3845099e55504446448027212616167eb36035726daa7698b075286f5379cd3e93cb3e0cf4f9cb8d017facbb5550ed32d5ec5400ae57e47e2bf78d1eaeff9480cc765ceff39db500",
+    "Name": "nagydani-5-pow0x10001",
+    "Gas": 87381,
+    "NoBenchmark": false
+  }
+]
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/6-bn128add-failure.json b/substrate/frame/revive/src/pure_precompiles/testdata/6-bn128add-failure.json
new file mode 100644
index 0000000000000000000000000000000000000000..4c872304851223f4e324c5019ddd7f015db3b4e5
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/6-bn128add-failure.json
@@ -0,0 +1,27 @@
+[
+  {
+    "Input": "0000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb00000000000000000000000000000008b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e10000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0000000000000000000000000000000008b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1",
+    "ExpectedError": "Invalid point y coordinate",
+    "Name": "bls_g1add_short_input"
+  },
+  {
+    "Input": "0000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb000000000000000000000000000000000008b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e10000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0000000000000000000000000000000008b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1",
+    "ExpectedError": "Invalid point y coordinate",
+    "Name": "bls_g1add_large_input"
+  },
+  {
+    "Input": "0000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0000000000000000000000000000000108b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e10000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0000000000000000000000000000000008b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1",
+    "ExpectedError": "Invalid point y coordinate",
+    "Name": "bls_g1add_violate_top_bytes"
+  },
+  {
+    "Input": "0000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb000000000000000000000000000000001a0111ea397fe69a4b1ba7b6434bacd764774b84f38512bf6730d2a0f6b0f6241eabfffeb153ffffb9feffffffffaaac0000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0000000000000000000000000000000008b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1",
+    "ExpectedError": "Invalid point y coordinate",
+    "Name": "bls_g1add_invalid_field_element"
+  },
+  {
+    "Input": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000017f1d3a73197d7942695638c4fa9ac0fc3688c4f9774b905a14e3a3f171bac586c55e83ff97a1aeffb3af00adb22c6bb0000000000000000000000000000000008b3f481e3aaa0f1a09e30ed741d8ae4fcf5e095d5d00af600db18cb2c04b3edd03cc744a2888ae40caa232946c5e7e1",
+    "ExpectedError": "Invalid curve point",
+    "Name": "bls_g1add_point_not_on_curve"
+  }
+]
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/6-bn128add.json b/substrate/frame/revive/src/pure_precompiles/testdata/6-bn128add.json
new file mode 100644
index 0000000000000000000000000000000000000000..5f0b5c12f1b26a910da8a82a7dabe57b2e3c4305
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/6-bn128add.json
@@ -0,0 +1,114 @@
+[
+  {
+    "Input": "18b18acfb4c2c30276db5411368e7185b311dd124691610c5d3b74034e093dc9063c909c4720840cb5134cb9f59fa749755796819658d32efc0d288198f3726607c2b7f58a84bd6145f00c9c2bc0bb1a187f20ff2c92963a88019e7c6a014eed06614e20c147e940f2d70da3f74c9a17df361706a4485c742bd6788478fa17d7",
+    "Expected": "2243525c5efd4b9c3d3c45ac0ca3fe4dd85e830a4ce6b65fa1eeaee202839703301d1d33be6da8e509df21cc35964723180eed7532537db9ae5e7d48f195c915",
+    "Name": "chfast1",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "2243525c5efd4b9c3d3c45ac0ca3fe4dd85e830a4ce6b65fa1eeaee202839703301d1d33be6da8e509df21cc35964723180eed7532537db9ae5e7d48f195c91518b18acfb4c2c30276db5411368e7185b311dd124691610c5d3b74034e093dc9063c909c4720840cb5134cb9f59fa749755796819658d32efc0d288198f37266",
+    "Expected": "2bd3e6d0f3b142924f5ca7b49ce5b9d54c4703d7ae5648e61d02268b1a0a9fb721611ce0a6af85915e2f1d70300909ce2e49dfad4a4619c8390cae66cefdb204",
+    "Name": "chfast2",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "cdetrio1",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "cdetrio2",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "cdetrio3",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "cdetrio4",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "cdetrio5",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
+    "Name": "cdetrio6",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
+    "Name": "cdetrio7",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
+    "Name": "cdetrio8",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
+    "Gas": 150,
+    "Name": "cdetrio9",
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
+    "Gas": 150,
+    "Name": "cdetrio10",
+    "NoBenchmark": false
+  },
+  {
+    "Input": "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002",
+    "Expected": "030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd315ed738c0e0a7c92e7845f96b2ae9c0a68a6a449e3538fc7ff3ebf7a5a18a2c4",
+    "Name": "cdetrio11",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd315ed738c0e0a7c92e7845f96b2ae9c0a68a6a449e3538fc7ff3ebf7a5a18a2c4",
+    "Name": "cdetrio12",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa901e0559bacb160664764a357af8a9fe70baa9258e0b959273ffc5718c6d4cc7c039730ea8dff1254c0fee9c0ea777d29a9c710b7e616683f194f18c43b43b869073a5ffcc6fc7a28c30723d6e58ce577356982d65b833a5a5c15bf9024b43d98",
+    "Expected": "15bf2bb17880144b5d1cd2b1f46eff9d617bffd1ca57c37fb5a49bd84e53cf66049c797f9ce0d17083deb32b5e36f2ea2a212ee036598dd7624c168993d1355f",
+    "Name": "cdetrio13",
+    "Gas": 150,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa901e0559bacb160664764a357af8a9fe70baa9258e0b959273ffc5718c6d4cc7c17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa92e83f8d734803fc370eba25ed1f6b8768bd6d83887b87165fc2434fe11a830cb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "cdetrio14",
+    "Gas": 150,
+    "NoBenchmark": false
+  }
+]
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/7-bn128mul.json b/substrate/frame/revive/src/pure_precompiles/testdata/7-bn128mul.json
new file mode 100644
index 0000000000000000000000000000000000000000..d575174ba1892577269b943db9d8d4d11791baa6
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/7-bn128mul.json
@@ -0,0 +1,135 @@
+[
+  {
+    "Input": "2bd3e6d0f3b142924f5ca7b49ce5b9d54c4703d7ae5648e61d02268b1a0a9fb721611ce0a6af85915e2f1d70300909ce2e49dfad4a4619c8390cae66cefdb20400000000000000000000000000000000000000000000000011138ce750fa15c2",
+    "Expected": "070a8d6a982153cae4be29d434e8faef8a47b274a053f5a4ee2a6c9c13c31e5c031b8ce914eba3a9ffb989f9cdd5b0f01943074bf4f0f315690ec3cec6981afc",
+    "Name": "chfast1",
+    "Gas": 6000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "070a8d6a982153cae4be29d434e8faef8a47b274a053f5a4ee2a6c9c13c31e5c031b8ce914eba3a9ffb989f9cdd5b0f01943074bf4f0f315690ec3cec6981afc30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd46",
+    "Expected": "025a6f4181d2b4ea8b724290ffb40156eb0adb514c688556eb79cdea0752c2bb2eff3f31dea215f1eb86023a133a996eb6300b44da664d64251d05381bb8a02e",
+    "Name": "chfast2",
+    "Gas": 6000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "025a6f4181d2b4ea8b724290ffb40156eb0adb514c688556eb79cdea0752c2bb2eff3f31dea215f1eb86023a133a996eb6300b44da664d64251d05381bb8a02e183227397098d014dc2822db40c0ac2ecbc0b548b438e5469e10460b6c3e7ea3",
+    "Expected": "14789d0d4a730b354403b5fac948113739e276c23e0258d8596ee72f9cd9d3230af18a63153e0ec25ff9f2951dd3fa90ed0197bfef6e2a1a62b5095b9d2b4a27",
+    "Name": "chfast3",
+    "Gas": 6000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "1a87b0584ce92f4593d161480614f2989035225609f08058ccfa3d0f940febe31a2f3c951f6dadcc7ee9007dff81504b0fcd6d7cf59996efdc33d92bf7f9f8f6ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+    "Expected": "2cde5879ba6f13c0b5aa4ef627f159a3347df9722efce88a9afbb20b763b4c411aa7e43076f6aee272755a7f9b84832e71559ba0d2e0b17d5f9f01755e5b0d11",
+    "Name": "cdetrio1",
+    "Gas": 6000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "1a87b0584ce92f4593d161480614f2989035225609f08058ccfa3d0f940febe31a2f3c951f6dadcc7ee9007dff81504b0fcd6d7cf59996efdc33d92bf7f9f8f630644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000",
+    "Expected": "1a87b0584ce92f4593d161480614f2989035225609f08058ccfa3d0f940febe3163511ddc1c3f25d396745388200081287b3fd1472d8339d5fecb2eae0830451",
+    "Name": "cdetrio2",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "1a87b0584ce92f4593d161480614f2989035225609f08058ccfa3d0f940febe31a2f3c951f6dadcc7ee9007dff81504b0fcd6d7cf59996efdc33d92bf7f9f8f60000000000000000000000000000000100000000000000000000000000000000",
+    "Expected": "1051acb0700ec6d42a88215852d582efbaef31529b6fcbc3277b5c1b300f5cf0135b2394bb45ab04b8bd7611bd2dfe1de6a4e6e2ccea1ea1955f577cd66af85b",
+    "Name": "cdetrio3",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "1a87b0584ce92f4593d161480614f2989035225609f08058ccfa3d0f940febe31a2f3c951f6dadcc7ee9007dff81504b0fcd6d7cf59996efdc33d92bf7f9f8f60000000000000000000000000000000000000000000000000000000000000009",
+    "Expected": "1dbad7d39dbc56379f78fac1bca147dc8e66de1b9d183c7b167351bfe0aeab742cd757d51289cd8dbd0acf9e673ad67d0f0a89f912af47ed1be53664f5692575",
+    "Name": "cdetrio4",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "1a87b0584ce92f4593d161480614f2989035225609f08058ccfa3d0f940febe31a2f3c951f6dadcc7ee9007dff81504b0fcd6d7cf59996efdc33d92bf7f9f8f60000000000000000000000000000000000000000000000000000000000000001",
+    "Expected": "1a87b0584ce92f4593d161480614f2989035225609f08058ccfa3d0f940febe31a2f3c951f6dadcc7ee9007dff81504b0fcd6d7cf59996efdc33d92bf7f9f8f6",
+    "Name": "cdetrio5",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa901e0559bacb160664764a357af8a9fe70baa9258e0b959273ffc5718c6d4cc7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+    "Expected": "29e587aadd7c06722aabba753017c093f70ba7eb1f1c0104ec0564e7e3e21f6022b1143f6a41008e7755c71c3d00b6b915d386de21783ef590486d8afa8453b1",
+    "Name": "cdetrio6",
+    "Gas": 6000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa901e0559bacb160664764a357af8a9fe70baa9258e0b959273ffc5718c6d4cc7c30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000",
+    "Expected": "17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa92e83f8d734803fc370eba25ed1f6b8768bd6d83887b87165fc2434fe11a830cb",
+    "Name": "cdetrio7",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa901e0559bacb160664764a357af8a9fe70baa9258e0b959273ffc5718c6d4cc7c0000000000000000000000000000000100000000000000000000000000000000",
+    "Expected": "221a3577763877920d0d14a91cd59b9479f83b87a653bb41f82a3f6f120cea7c2752c7f64cdd7f0e494bff7b60419f242210f2026ed2ec70f89f78a4c56a1f15",
+    "Name": "cdetrio8",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa901e0559bacb160664764a357af8a9fe70baa9258e0b959273ffc5718c6d4cc7c0000000000000000000000000000000000000000000000000000000000000009",
+    "Expected": "228e687a379ba154554040f8821f4e41ee2be287c201aa9c3bc02c9dd12f1e691e0fd6ee672d04cfd924ed8fdc7ba5f2d06c53c1edc30f65f2af5a5b97f0a76a",
+    "Name": "cdetrio9",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa901e0559bacb160664764a357af8a9fe70baa9258e0b959273ffc5718c6d4cc7c0000000000000000000000000000000000000000000000000000000000000001",
+    "Expected": "17c139df0efee0f766bc0204762b774362e4ded88953a39ce849a8a7fa163fa901e0559bacb160664764a357af8a9fe70baa9258e0b959273ffc5718c6d4cc7c",
+    "Name": "cdetrio10",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "039730ea8dff1254c0fee9c0ea777d29a9c710b7e616683f194f18c43b43b869073a5ffcc6fc7a28c30723d6e58ce577356982d65b833a5a5c15bf9024b43d98ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
+    "Expected": "00a1a234d08efaa2616607e31eca1980128b00b415c845ff25bba3afcb81dc00242077290ed33906aeb8e42fd98c41bcb9057ba03421af3f2d08cfc441186024",
+    "Name": "cdetrio11",
+    "Gas": 6000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "039730ea8dff1254c0fee9c0ea777d29a9c710b7e616683f194f18c43b43b869073a5ffcc6fc7a28c30723d6e58ce577356982d65b833a5a5c15bf9024b43d9830644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000",
+    "Expected": "039730ea8dff1254c0fee9c0ea777d29a9c710b7e616683f194f18c43b43b8692929ee761a352600f54921df9bf472e66217e7bb0cee9032e00acc86b3c8bfaf",
+    "Name": "cdetrio12",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "039730ea8dff1254c0fee9c0ea777d29a9c710b7e616683f194f18c43b43b869073a5ffcc6fc7a28c30723d6e58ce577356982d65b833a5a5c15bf9024b43d980000000000000000000000000000000100000000000000000000000000000000",
+    "Expected": "1071b63011e8c222c5a771dfa03c2e11aac9666dd097f2c620852c3951a4376a2f46fe2f73e1cf310a168d56baa5575a8319389d7bfa6b29ee2d908305791434",
+    "Name": "cdetrio13",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "039730ea8dff1254c0fee9c0ea777d29a9c710b7e616683f194f18c43b43b869073a5ffcc6fc7a28c30723d6e58ce577356982d65b833a5a5c15bf9024b43d980000000000000000000000000000000000000000000000000000000000000009",
+    "Expected": "19f75b9dd68c080a688774a6213f131e3052bd353a304a189d7a2ee367e3c2582612f545fb9fc89fde80fd81c68fc7dcb27fea5fc124eeda69433cf5c46d2d7f",
+    "Name": "cdetrio14",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "039730ea8dff1254c0fee9c0ea777d29a9c710b7e616683f194f18c43b43b869073a5ffcc6fc7a28c30723d6e58ce577356982d65b833a5a5c15bf9024b43d980000000000000000000000000000000000000000000000000000000000000001",
+    "Expected": "039730ea8dff1254c0fee9c0ea777d29a9c710b7e616683f194f18c43b43b869073a5ffcc6fc7a28c30723d6e58ce577356982d65b833a5a5c15bf9024b43d98",
+    "Name": "cdetrio15",
+    "Gas": 6000,
+    "NoBenchmark": true
+  },
+  {
+    "Input": "039730ea8dff1254c0fee9c0ea777d29a9c710b7e616683f194f18c43b43b869073a5ffcc6fc7a28c30723d6e58ce577356982d65b833a5a5c15bf9024b43d980000000000000000000000000000000000000000000000000000000000000000",
+    "Expected": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "zeroScalar",
+    "Gas": 6000,
+    "NoBenchmark": true
+  }
+]
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/8-bn128pairing.json b/substrate/frame/revive/src/pure_precompiles/testdata/8-bn128pairing.json
new file mode 100644
index 0000000000000000000000000000000000000000..2b134f55f7863e3a3435c65a94c6b11607730759
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/8-bn128pairing.json
@@ -0,0 +1,100 @@
+[
+  {
+    "Input": "1c76476f4def4bb94541d57ebba1193381ffa7aa76ada664dd31c16024c43f593034dd2920f673e204fee2811c678745fc819b55d3e9d294e45c9b03a76aef41209dd15ebff5d46c4bd888e51a93cf99a7329636c63514396b4a452003a35bf704bf11ca01483bfa8b34b43561848d28905960114c8ac04049af4b6315a416782bb8324af6cfc93537a2ad1a445cfd0ca2a71acd7ac41fadbf933c2a51be344d120a2a4cf30c1bf9845f20c6fe39e07ea2cce61f0c9bb048165fe5e4de877550111e129f1cf1097710d41c4ac70fcdfa5ba2023c6ff1cbeac322de49d1b6df7c2032c61a830e3c17286de9462bf242fca2883585b93870a73853face6a6bf411198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "jeff1",
+    "Gas": 113000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "2eca0c7238bf16e83e7a1e6c5d49540685ff51380f309842a98561558019fc0203d3260361bb8451de5ff5ecd17f010ff22f5c31cdf184e9020b06fa5997db841213d2149b006137fcfb23036606f848d638d576a120ca981b5b1a5f9300b3ee2276cf730cf493cd95d64677bbb75fc42db72513a4c1e387b476d056f80aa75f21ee6226d31426322afcda621464d0611d226783262e21bb3bc86b537e986237096df1f82dff337dd5972e32a8ad43e28a78a96a823ef1cd4debe12b6552ea5f06967a1237ebfeca9aaae0d6d0bab8e28c198c5a339ef8a2407e31cdac516db922160fa257a5fd5b280642ff47b65eca77e626cb685c84fa6d3b6882a283ddd1198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "jeff2",
+    "Gas": 113000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "0f25929bcb43d5a57391564615c9e70a992b10eafa4db109709649cf48c50dd216da2f5cb6be7a0aa72c440c53c9bbdfec6c36c7d515536431b3a865468acbba2e89718ad33c8bed92e210e81d1853435399a271913a6520736a4729cf0d51eb01a9e2ffa2e92599b68e44de5bcf354fa2642bd4f26b259daa6f7ce3ed57aeb314a9a87b789a58af499b314e13c3d65bede56c07ea2d418d6874857b70763713178fb49a2d6cd347dc58973ff49613a20757d0fcc22079f9abd10c3baee245901b9e027bd5cfc2cb5db82d4dc9677ac795ec500ecd47deee3b5da006d6d049b811d7511c78158de484232fc68daf8a45cf217d1c2fae693ff5871e8752d73b21198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "jeff3",
+    "Gas": 113000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "2f2ea0b3da1e8ef11914acf8b2e1b32d99df51f5f4f206fc6b947eae860eddb6068134ddb33dc888ef446b648d72338684d678d2eb2371c61a50734d78da4b7225f83c8b6ab9de74e7da488ef02645c5a16a6652c3c71a15dc37fe3a5dcb7cb122acdedd6308e3bb230d226d16a105295f523a8a02bfc5e8bd2da135ac4c245d065bbad92e7c4e31bf3757f1fe7362a63fbfee50e7dc68da116e67d600d9bf6806d302580dc0661002994e7cd3a7f224e7ddc27802777486bf80f40e4ca3cfdb186bac5188a98c45e6016873d107f5cd131f3a3e339d0375e58bd6219347b008122ae2b09e539e152ec5364e7e2204b03d11d3caa038bfc7cd499f8176aacbee1f39e4e4afc4bc74790a4a028aff2c3d2538731fb755edefd8cb48d6ea589b5e283f150794b6736f670d6a1033f9b46c6f5204f50813eb85c8dc4b59db1c5d39140d97ee4d2b36d99bc49974d18ecca3e7ad51011956051b464d9e27d46cc25e0764bb98575bd466d32db7b15f582b2d5c452b36aa394b789366e5e3ca5aabd415794ab061441e51d01e94640b7e3084a07e02c78cf3103c542bc5b298669f211b88da1679b0b64a63b7e0e7bfe52aae524f73a55be7fe70c7e9bfc94b4cf0da1213d2149b006137fcfb23036606f848d638d576a120ca981b5b1a5f9300b3ee2276cf730cf493cd95d64677bbb75fc42db72513a4c1e387b476d056f80aa75f21ee6226d31426322afcda621464d0611d226783262e21bb3bc86b537e986237096df1f82dff337dd5972e32a8ad43e28a78a96a823ef1cd4debe12b6552ea5f",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "jeff4",
+    "Gas": 147000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "20a754d2071d4d53903e3b31a7e98ad6882d58aec240ef981fdf0a9d22c5926a29c853fcea789887315916bbeb89ca37edb355b4f980c9a12a94f30deeed30211213d2149b006137fcfb23036606f848d638d576a120ca981b5b1a5f9300b3ee2276cf730cf493cd95d64677bbb75fc42db72513a4c1e387b476d056f80aa75f21ee6226d31426322afcda621464d0611d226783262e21bb3bc86b537e986237096df1f82dff337dd5972e32a8ad43e28a78a96a823ef1cd4debe12b6552ea5f1abb4a25eb9379ae96c84fff9f0540abcfc0a0d11aeda02d4f37e4baf74cb0c11073b3ff2cdbb38755f8691ea59e9606696b3ff278acfc098fa8226470d03869217cee0a9ad79a4493b5253e2e4e3a39fc2df38419f230d341f60cb064a0ac290a3d76f140db8418ba512272381446eb73958670f00cf46f1d9e64cba057b53c26f64a8ec70387a13e41430ed3ee4a7db2059cc5fc13c067194bcc0cb49a98552fd72bd9edb657346127da132e5b82ab908f5816c826acb499e22f2412d1a2d70f25929bcb43d5a57391564615c9e70a992b10eafa4db109709649cf48c50dd2198a1f162a73261f112401aa2db79c7dab1533c9935c77290a6ce3b191f2318d198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "jeff5",
+    "Gas": 147000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "1c76476f4def4bb94541d57ebba1193381ffa7aa76ada664dd31c16024c43f593034dd2920f673e204fee2811c678745fc819b55d3e9d294e45c9b03a76aef41209dd15ebff5d46c4bd888e51a93cf99a7329636c63514396b4a452003a35bf704bf11ca01483bfa8b34b43561848d28905960114c8ac04049af4b6315a416782bb8324af6cfc93537a2ad1a445cfd0ca2a71acd7ac41fadbf933c2a51be344d120a2a4cf30c1bf9845f20c6fe39e07ea2cce61f0c9bb048165fe5e4de877550111e129f1cf1097710d41c4ac70fcdfa5ba2023c6ff1cbeac322de49d1b6df7c103188585e2364128fe25c70558f1560f4f9350baf3959e603cc91486e110936198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "jeff6",
+    "Gas": 113000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "empty_data",
+    "Gas": 45000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000000",
+    "Name": "one_point",
+    "Gas": 79000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "two_point_match_2",
+    "Gas": 113000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "two_point_match_3",
+    "Gas": 113000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "105456a333e6d636854f987ea7bb713dfd0ae8371a72aea313ae0c32c0bf10160cf031d41b41557f3e7e3ba0c51bebe5da8e6ecd855ec50fc87efcdeac168bcc0476be093a6d2b4bbf907172049874af11e1b6267606e00804d3ff0037ec57fd3010c68cb50161b7d1d96bb71edfec9880171954e56871abf3d93cc94d745fa114c059d74e5b6c4ec14ae5864ebe23a71781d86c29fb8fb6cce94f70d3de7a2101b33461f39d9e887dbb100f170a2345dde3c07e256d1dfa2b657ba5cd030427000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000021a2c3013d2ea92e13c800cde68ef56a294b883f6ac35d25f587c09b1b3c635f7290158a80cd3d66530f74dc94c94adb88f5cdb481acca997b6e60071f08a115f2f997f3dbd66a7afe07fe7862ce239edba9e05c5afff7f8a1259c9733b2dfbb929d1691530ca701b4a106054688728c9972c8512e9789e9567aae23e302ccd75",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "two_point_match_4",
+    "Gas": 113000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "ten_point_match_1",
+    "Gas": 385000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002203e205db4f19b37b60121b83a7333706db86431c6d835849957ed8c3928ad7927dc7234fd11d3e8c36c59277c3e6f149d5cd3cfa9a62aee49f8130962b4b3b9195e8aa5b7827463722b8c153931579d3505566b4edf48d498e185f0509de15204bb53b8977e5f92a0bc372742c4830944a59b4fe6b1c0466e2a6dad122b5d2e030644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd31a76dae6d3272396d0cbe61fced2bc532edac647851e3ac53ce1cc9c7e645a83198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "ten_point_match_2",
+    "Gas": 385000,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "105456a333e6d636854f987ea7bb713dfd0ae8371a72aea313ae0c32c0bf10160cf031d41b41557f3e7e3ba0c51bebe5da8e6ecd855ec50fc87efcdeac168bcc0476be093a6d2b4bbf907172049874af11e1b6267606e00804d3ff0037ec57fd3010c68cb50161b7d1d96bb71edfec9880171954e56871abf3d93cc94d745fa114c059d74e5b6c4ec14ae5864ebe23a71781d86c29fb8fb6cce94f70d3de7a2101b33461f39d9e887dbb100f170a2345dde3c07e256d1dfa2b657ba5cd030427000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000021a2c3013d2ea92e13c800cde68ef56a294b883f6ac35d25f587c09b1b3c635f7290158a80cd3d66530f74dc94c94adb88f5cdb481acca997b6e60071f08a115f2f997f3dbd66a7afe07fe7862ce239edba9e05c5afff7f8a1259c9733b2dfbb929d1691530ca701b4a106054688728c9972c8512e9789e9567aae23e302ccd75",
+    "Expected": "0000000000000000000000000000000000000000000000000000000000000001",
+    "Name": "ten_point_match_3",
+    "Gas": 113000,
+    "NoBenchmark": false
+  }
+]
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/9-blake2f-failures.json b/substrate/frame/revive/src/pure_precompiles/testdata/9-blake2f-failures.json
new file mode 100644
index 0000000000000000000000000000000000000000..637037165614de0e21ce737d20293857d1c21aae
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/9-blake2f-failures.json
@@ -0,0 +1,22 @@
+[
+  {
+    "Input": "",
+    "ExpectedError": "invalid input length",
+    "Name": "vector 0: empty input"
+  },
+  {
+    "Input": "00000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",
+    "ExpectedError": "invalid input length",
+    "Name": "vector 1: less than 213 bytes input"
+  },
+  {
+    "Input": "000000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",
+    "ExpectedError": "invalid input length",
+    "Name": "vector 2: more than 213 bytes input"
+  },
+  {
+    "Input": "0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000002",
+    "ExpectedError": "invalid final flag",
+    "Name": "vector 3: malformed final block indicator flag"
+  }
+]
diff --git a/substrate/frame/revive/src/pure_precompiles/testdata/9-blake2f.json b/substrate/frame/revive/src/pure_precompiles/testdata/9-blake2f.json
new file mode 100644
index 0000000000000000000000000000000000000000..6ce0f8f532f811cedda5c06d40aebf783abea201
--- /dev/null
+++ b/substrate/frame/revive/src/pure_precompiles/testdata/9-blake2f.json
@@ -0,0 +1,37 @@
+[
+  {
+    "Input": "0000000048c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",
+    "Expected": "08c9bcf367e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d282e6ad7f520e511f6c3e2b8c68059b9442be0454267ce079217e1319cde05b",
+    "Name": "vector 4",
+    "Gas": 0,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",
+    "Expected": "ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923",
+    "Name": "vector 5",
+    "Gas": 12,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000",
+    "Expected": "75ab69d3190a562c51aef8d88f1c2775876944407270c42c9844252c26d2875298743e7f6d5ea2f2d3e8d226039cd31b4e426ac4f2d3d666a610c2116fde4735",
+    "Name": "vector 6",
+    "Gas": 12,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "0000000148c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",
+    "Expected": "b63a380cb2897d521994a85234ee2c181b5f844d2c624c002677e9703449d2fba551b3a8333bcdf5f2f7e08993d53923de3d64fcc68c034e717b9293fed7a421",
+    "Name": "vector 7",
+    "Gas": 1,
+    "NoBenchmark": false
+  },
+  {
+    "Input": "007A120048c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001",
+    "Expected": "6d2ce9e534d50e18ff866ae92d70cceba79bbcd14c63819fe48752c8aca87a4bb7dcc230d22a4047f0486cfcfb50a17b24b2899eb8fca370f22240adb5170189",
+    "Name": "vector 8",
+    "Gas": 8000000,
+    "NoBenchmark": false
+  }
+]
diff --git a/substrate/frame/revive/src/tests.rs b/substrate/frame/revive/src/tests.rs
index 90cb687b9de6f671d04a0834e5dca4f68ebd3e90..2583edeb870e931df4f0b0b98d83b0b7d6b8c321 100644
--- a/substrate/frame/revive/src/tests.rs
+++ b/substrate/frame/revive/src/tests.rs
@@ -27,7 +27,7 @@ use crate::{
 	},
 	evm::{runtime::GAS_PRICE, CallTrace, CallTracer, CallType, GenericTransaction},
 	exec::Key,
-	limits, pure_precompiles,
+	limits,
 	storage::DeletionQueueManager,
 	test_utils::*,
 	tests::test_utils::{get_contract, get_contract_checked},
@@ -1458,16 +1458,14 @@ fn crypto_hashes() {
 			};
 		}
 		// All hash functions and their associated output byte lengths.
-		let test_cases: &[(Box<dyn Fn(&[u8]) -> Box<[u8]>>, usize)] = &[
-			(dyn_hash_fn!(sha2_256), 32),
-			(dyn_hash_fn!(keccak_256), 32),
-			(dyn_hash_fn!(blake2_256), 32),
-			(dyn_hash_fn!(blake2_128), 16),
+		let test_cases: &[(u8, Box<dyn Fn(&[u8]) -> Box<[u8]>>, usize)] = &[
+			(2, dyn_hash_fn!(keccak_256), 32),
+			(3, dyn_hash_fn!(blake2_256), 32),
+			(4, dyn_hash_fn!(blake2_128), 16),
 		];
 		// Test the given hash functions for the input: "_DEAD_BEEF"
-		for (n, (hash_fn, expected_size)) in test_cases.iter().enumerate() {
-			// We offset data in the contract tables by 1.
-			let mut params = vec![(n + 1) as u8];
+		for (n, hash_fn, expected_size) in test_cases.iter() {
+			let mut params = vec![*n];
 			params.extend_from_slice(input);
 			let result = builder::bare_call(addr).data(params).build_and_unwrap_result();
 			assert!(!result.did_revert());
@@ -4591,7 +4589,7 @@ fn unknown_precompiles_revert() {
 
 		let cases: Vec<(H160, Box<dyn FnOnce(_)>)> = vec![
 			(
-				H160::from_low_u64_be(0x2),
+				H160::from_low_u64_be(10),
 				Box::new(|result| {
 					assert_err!(result, <Error<Test>>::ContractTrapped);
 				}),
@@ -4619,42 +4617,91 @@ fn unknown_precompiles_revert() {
 }
 
 #[test]
-fn ecrecover_precompile_works() {
+fn pure_precompile_works() {
 	use hex_literal::hex;
 
 	let cases = vec![
-			(
-				hex!("18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000000000000000000000000000001c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549"),
-				hex!("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b").to_vec(),
-			),
-			(
-				hex!("18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000000000000000000000000000000173b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549"),
-				[0u8; 0].to_vec(),
-			),
-		];
-
-	for (input, output) in cases {
+		(
+			// ECRecover
+			H160::from_low_u64_be(1),
+			hex!("18c547e4f7b0f325ad1e56f57e26c745b09a3e503d86e00e5255ff7f715d3d1c000000000000000000000000000000000000000000000000000000000000001c73b1693892219d736caba55bdb67216e485557ea6b6af75f37096c9aa6a5a75feeb940b1d03b21e36b0e47e79769f095fe2ab855bd91e3a38756b7d75a9c4549").to_vec(),
+			hex!("000000000000000000000000a94f5374fce5edbc8e2a8697c15331677e6ebf0b").to_vec(),
+		),
+		(
+			// Sha256
+			H160::from_low_u64_be(2),
+			hex!("ec07171c4f0f0e2b").to_vec(),
+			hex!("d0591ea667763c69a5f5a3bae657368ea63318b2c9c8349cccaf507e3cbd7c7a").to_vec(),
+		),
+		(
+			// Ripemd160
+			H160::from_low_u64_be(3),
+			hex!("ec07171c4f0f0e2b").to_vec(),
+			hex!("000000000000000000000000a9c5ebaf7589fd8acfd542c3a008956de84fbeb7").to_vec(),
+		),
+		(
+			// Identity
+			H160::from_low_u64_be(4),
+			[42u8; 128].to_vec(),
+			[42u8; 128].to_vec(),
+		),
+		(
+			// Modexp
+			H160::from_low_u64_be(5),
+			hex!("00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002003fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2efffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f").to_vec(),
+			hex!("0000000000000000000000000000000000000000000000000000000000000001").to_vec(),
+		),
+		(
+			// Bn128Add
+			H160::from_low_u64_be(6),
+			hex!("18b18acfb4c2c30276db5411368e7185b311dd124691610c5d3b74034e093dc9063c909c4720840cb5134cb9f59fa749755796819658d32efc0d288198f3726607c2b7f58a84bd6145f00c9c2bc0bb1a187f20ff2c92963a88019e7c6a014eed06614e20c147e940f2d70da3f74c9a17df361706a4485c742bd6788478fa17d7").to_vec(),
+			hex!("2243525c5efd4b9c3d3c45ac0ca3fe4dd85e830a4ce6b65fa1eeaee202839703301d1d33be6da8e509df21cc35964723180eed7532537db9ae5e7d48f195c915").to_vec(),
+		),
+		(
+			// Bn128Mul
+			H160::from_low_u64_be(7),
+			hex!("2bd3e6d0f3b142924f5ca7b49ce5b9d54c4703d7ae5648e61d02268b1a0a9fb721611ce0a6af85915e2f1d70300909ce2e49dfad4a4619c8390cae66cefdb20400000000000000000000000000000000000000000000000011138ce750fa15c2").to_vec(),
+			hex!("070a8d6a982153cae4be29d434e8faef8a47b274a053f5a4ee2a6c9c13c31e5c031b8ce914eba3a9ffb989f9cdd5b0f01943074bf4f0f315690ec3cec6981afc").to_vec(),
+		),
+		(
+			// Bn128Pairing
+			H160::from_low_u64_be(8),
+			hex!("1c76476f4def4bb94541d57ebba1193381ffa7aa76ada664dd31c16024c43f593034dd2920f673e204fee2811c678745fc819b55d3e9d294e45c9b03a76aef41209dd15ebff5d46c4bd888e51a93cf99a7329636c63514396b4a452003a35bf704bf11ca01483bfa8b34b43561848d28905960114c8ac04049af4b6315a416782bb8324af6cfc93537a2ad1a445cfd0ca2a71acd7ac41fadbf933c2a51be344d120a2a4cf30c1bf9845f20c6fe39e07ea2cce61f0c9bb048165fe5e4de877550111e129f1cf1097710d41c4ac70fcdfa5ba2023c6ff1cbeac322de49d1b6df7c2032c61a830e3c17286de9462bf242fca2883585b93870a73853face6a6bf411198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c21800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa").to_vec(),
+			hex!("0000000000000000000000000000000000000000000000000000000000000001").to_vec(),
+		),
+		(
+			// Blake2F
+			H160::from_low_u64_be(9),
+			hex!("0000000048c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001").to_vec(),
+			hex!("08c9bcf367e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d282e6ad7f520e511f6c3e2b8c68059b9442be0454267ce079217e1319cde05b").to_vec(),
+		),
+	];
+
+	for (precompile_addr, input, output) in cases {
 		let (code, _code_hash) = compile_module("call_and_return").unwrap();
 		ExtBuilder::default().build().execute_with(|| {
+			let id = <Test as Config>::AddressMapper::to_account_id(&precompile_addr);
 			let _ = <Test as Config>::Currency::set_balance(&ALICE, 100_000_000_000);
 			let Contract { addr, .. } = builder::bare_instantiate(Code::Upload(code))
 				.value(1000)
 				.build_and_unwrap_contract();
 
 			let result = builder::bare_call(addr)
-				.data((pure_precompiles::ECRECOVER, 100u64, input).encode())
+				.data(
+					(&precompile_addr, 100u64)
+						.encode()
+						.into_iter()
+						.chain(input)
+						.collect::<Vec<_>>(),
+				)
 				.build_and_unwrap_result();
 
-			test_utils::get_balance(&<Test as Config>::AddressMapper::to_account_id(
-				&pure_precompiles::ECRECOVER,
-			));
+			assert_eq!(test_utils::get_balance(&id), 101u64);
 			assert_eq!(
-				test_utils::get_balance(&<Test as Config>::AddressMapper::to_account_id(
-					&pure_precompiles::ECRECOVER
-				)),
-				101u64
+				alloy_core::hex::encode(result.data),
+				alloy_core::hex::encode(output),
+				"Unexpected output for precompile: {precompile_addr:?}",
 			);
-			assert_eq!(result.data, output);
 			assert_eq!(result.flags, ReturnFlags::empty());
 		});
 	}
diff --git a/substrate/frame/revive/src/wasm/runtime.rs b/substrate/frame/revive/src/wasm/runtime.rs
index 5e4c29f289c100754f0eed8c339ae55f98386361..9be256b3ff3e2dd6fafb1308d5638b30b1da0e2e 100644
--- a/substrate/frame/revive/src/wasm/runtime.rs
+++ b/substrate/frame/revive/src/wasm/runtime.rs
@@ -38,7 +38,7 @@ use frame_support::{
 use pallet_revive_proc_macro::define_env;
 use pallet_revive_uapi::{CallFlags, ReturnErrorCode, ReturnFlags, StorageFlags};
 use sp_core::{H160, H256, U256};
-use sp_io::hashing::{blake2_128, blake2_256, keccak_256, sha2_256};
+use sp_io::hashing::{blake2_128, blake2_256, keccak_256};
 use sp_runtime::{DispatchError, RuntimeDebug};
 
 type CallOf<T> = <T as frame_system::Config>::RuntimeCall;
@@ -372,9 +372,11 @@ pub enum RuntimeCosts {
 	CallTransferSurcharge,
 	/// Weight per byte that is cloned by supplying the `CLONE_INPUT` flag.
 	CallInputCloned(u32),
-	/// Weight of calling `seal_instantiate` for the given input lenth.
+	/// Weight of calling `seal_instantiate` for the given input length.
 	Instantiate { input_data_len: u32 },
-	/// Weight of calling `seal_hash_sha_256` for the given input size.
+	/// Weight of calling `Ripemd160` precompile for the given input size.
+	Ripemd160(u32),
+	/// Weight of calling `Sha256` precompile for the given input size.
 	HashSha256(u32),
 	/// Weight of calling `seal_hash_keccak_256` for the given input size.
 	HashKeccak256(u32),
@@ -382,7 +384,7 @@ pub enum RuntimeCosts {
 	HashBlake256(u32),
 	/// Weight of calling `seal_hash_blake2_128` for the given input size.
 	HashBlake128(u32),
-	/// Weight of calling `seal_ecdsa_recover`.
+	/// Weight of calling `ECERecover` precompile.
 	EcdsaRecovery,
 	/// Weight of calling `seal_sr25519_verify` for the given input size.
 	Sr25519Verify(u32),
@@ -400,6 +402,18 @@ pub enum RuntimeCosts {
 	GetImmutableData(u32),
 	/// Weight of calling `set_immutable_dependency`
 	SetImmutableData(u32),
+	/// Weight of calling `Bn128Add` precompile
+	Bn128Add,
+	/// Weight of calling `Bn128Add` precompile
+	Bn128Mul,
+	/// Weight of calling `Bn128Pairing` precompile for the given number of input pairs.
+	Bn128Pairing(u32),
+	/// Weight of calling `Identity` precompile for the given number of input length.
+	Identity(u32),
+	/// Weight of calling `Blake2F` precompile for the given number of rounds.
+	Blake2F(u32),
+	/// Weight of calling `Modexp` precompile
+	Modexp(u64),
 }
 
 /// For functions that modify storage, benchmarks are performed with one item in the
@@ -517,17 +531,37 @@ impl<T: Config> Token<T> for RuntimeCosts {
 			CallTransferSurcharge => cost_args!(seal_call, 1, 0),
 			CallInputCloned(len) => cost_args!(seal_call, 0, len),
 			Instantiate { input_data_len } => T::WeightInfo::seal_instantiate(input_data_len),
-			HashSha256(len) => T::WeightInfo::seal_hash_sha2_256(len),
+			HashSha256(len) => T::WeightInfo::sha2_256(len),
+			Ripemd160(len) => T::WeightInfo::ripemd_160(len),
 			HashKeccak256(len) => T::WeightInfo::seal_hash_keccak_256(len),
 			HashBlake256(len) => T::WeightInfo::seal_hash_blake2_256(len),
 			HashBlake128(len) => T::WeightInfo::seal_hash_blake2_128(len),
-			EcdsaRecovery => T::WeightInfo::seal_ecdsa_recover(),
+			EcdsaRecovery => T::WeightInfo::ecdsa_recover(),
 			Sr25519Verify(len) => T::WeightInfo::seal_sr25519_verify(len),
 			ChainExtension(weight) | CallRuntime(weight) | CallXcmExecute(weight) => weight,
 			SetCodeHash => T::WeightInfo::seal_set_code_hash(),
 			EcdsaToEthAddress => T::WeightInfo::seal_ecdsa_to_eth_address(),
 			GetImmutableData(len) => T::WeightInfo::seal_get_immutable_data(len),
 			SetImmutableData(len) => T::WeightInfo::seal_set_immutable_data(len),
+			Bn128Add => T::WeightInfo::bn128_add(),
+			Bn128Mul => T::WeightInfo::bn128_mul(),
+			Bn128Pairing(len) => T::WeightInfo::bn128_pairing(len),
+			Identity(len) => T::WeightInfo::identity(len),
+			Blake2F(rounds) => T::WeightInfo::blake2f(rounds),
+			Modexp(gas) => {
+				use frame_support::weights::constants::WEIGHT_REF_TIME_PER_SECOND;
+				/// Current approximation of the gas/s consumption considering
+				/// EVM execution over compiled WASM (on 4.4Ghz CPU).
+				/// Given the 2000ms Weight, from which 75% only are used for transactions,
+				/// the total EVM execution gas limit is: GAS_PER_SECOND * 2 * 0.75 ~= 60_000_000.
+				const GAS_PER_SECOND: u64 = 40_000_000;
+
+				/// Approximate ratio of the amount of Weight per Gas.
+				/// u64 works for approximations because Weight is a very small unit compared to
+				/// gas.
+				const WEIGHT_PER_GAS: u64 = WEIGHT_REF_TIME_PER_SECOND / GAS_PER_SECOND;
+				Weight::from_parts(gas.saturating_mul(WEIGHT_PER_GAS), 0)
+			},
 		}
 	}
 }
@@ -1923,21 +1957,6 @@ pub mod env {
 		)?)
 	}
 
-	/// Computes the SHA2 256-bit hash on the given input buffer.
-	/// See [`pallet_revive_uapi::HostFn::hash_sha2_256`].
-	fn hash_sha2_256(
-		&mut self,
-		memory: &mut M,
-		input_ptr: u32,
-		input_len: u32,
-		output_ptr: u32,
-	) -> Result<(), TrapReason> {
-		self.charge_gas(RuntimeCosts::HashSha256(input_len))?;
-		Ok(self.compute_hash_on_intermediate_buffer(
-			memory, sha2_256, input_ptr, input_len, output_ptr,
-		)?)
-	}
-
 	/// Checks whether a specified address belongs to a contract.
 	/// See [`pallet_revive_uapi::HostFn::is_contract`].
 	fn is_contract(&mut self, memory: &mut M, account_ptr: u32) -> Result<u32, TrapReason> {
diff --git a/substrate/frame/revive/src/weights.rs b/substrate/frame/revive/src/weights.rs
index ff320cd408eb6b577e39d3e46fb4e9889ed5e94d..70570e99ac6c78cd88f3b384171956e28e30ef5b 100644
--- a/substrate/frame/revive/src/weights.rs
+++ b/substrate/frame/revive/src/weights.rs
@@ -35,9 +35,9 @@
 //! Autogenerated weights for `pallet_revive`
 //!
 //! THIS FILE WAS AUTO-GENERATED USING THE SUBSTRATE BENCHMARK CLI VERSION 32.0.0
-//! DATE: 2025-02-26, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
+//! DATE: 2025-03-06, STEPS: `50`, REPEAT: `20`, LOW RANGE: `[]`, HIGH RANGE: `[]`
 //! WORST CASE MAP SIZE: `1000000`
-//! HOSTNAME: `d802342bffd2`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
+//! HOSTNAME: `0530c2a53c3a`, CPU: `Intel(R) Xeon(R) CPU @ 2.60GHz`
 //! WASM-EXECUTION: `Compiled`, CHAIN: `None`, DB CACHE: `1024`
 
 // Executed Command:
@@ -58,7 +58,6 @@
 // --no-storage-info
 // --no-min-squares
 // --no-median-slopes
-// --genesis-builder-policy=none
 // --exclude-pallets=pallet_xcm,pallet_xcm_benchmarks::fungible,pallet_xcm_benchmarks::generic,pallet_nomination_pools,pallet_remark,pallet_transaction_storage,pallet_election_provider_multi_block,pallet_election_provider_multi_block::signed,pallet_election_provider_multi_block::unsigned,pallet_election_provider_multi_block::verifier
 
 #![cfg_attr(rustfmt, rustfmt_skip)]
@@ -142,12 +141,18 @@ pub trait WeightInfo {
 	fn seal_call(t: u32, i: u32, ) -> Weight;
 	fn seal_delegate_call() -> Weight;
 	fn seal_instantiate(i: u32, ) -> Weight;
-	fn seal_hash_sha2_256(n: u32, ) -> Weight;
+	fn sha2_256(n: u32, ) -> Weight;
+	fn identity(n: u32, ) -> Weight;
+	fn ripemd_160(n: u32, ) -> Weight;
 	fn seal_hash_keccak_256(n: u32, ) -> Weight;
 	fn seal_hash_blake2_256(n: u32, ) -> Weight;
 	fn seal_hash_blake2_128(n: u32, ) -> Weight;
 	fn seal_sr25519_verify(n: u32, ) -> Weight;
-	fn seal_ecdsa_recover() -> Weight;
+	fn ecdsa_recover() -> Weight;
+	fn bn128_add() -> Weight;
+	fn bn128_mul() -> Weight;
+	fn bn128_pairing(n: u32, ) -> Weight;
+	fn blake2f(n: u32, ) -> Weight;
 	fn seal_ecdsa_to_eth_address() -> Weight;
 	fn seal_set_code_hash() -> Weight;
 	fn instr(r: u32, ) -> Weight;
@@ -161,10 +166,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `Revive::DeletionQueueCounter` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`)
 	fn on_process_deletion_queue_batch() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `1485`
-		// Minimum execution time: 726_000 picoseconds.
-		Weight::from_parts(771_000, 1485)
+		//  Measured:  `109`
+		//  Estimated: `1594`
+		// Minimum execution time: 2_764_000 picoseconds.
+		Weight::from_parts(2_891_000, 1594)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
@@ -172,20 +177,20 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `k` is `[0, 1024]`.
 	fn on_initialize_per_trie_key(k: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `230 + k * (69 ±0)`
-		//  Estimated: `222 + k * (70 ±0)`
-		// Minimum execution time: 10_616_000 picoseconds.
-		Weight::from_parts(10_903_000, 222)
-			// Standard Error: 966
-			.saturating_add(Weight::from_parts(1_172_694, 0).saturating_mul(k.into()))
+		//  Measured:  `425 + k * (69 ±0)`
+		//  Estimated: `415 + k * (70 ±0)`
+		// Minimum execution time: 15_875_000 picoseconds.
+		Weight::from_parts(2_425_095, 415)
+			// Standard Error: 1_376
+			.saturating_add(Weight::from_parts(1_220_494, 0).saturating_mul(k.into()))
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(k.into())))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 			.saturating_add(T::DbWeight::get().writes((1_u64).saturating_mul(k.into())))
 			.saturating_add(Weight::from_parts(0, 70).saturating_mul(k.into()))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:2 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:2 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:0)
@@ -199,18 +204,18 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `c` is `[0, 104857]`.
 	fn call_with_code_per_byte(c: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `524 + c * (1 ±0)`
-		//  Estimated: `6458 + c * (1 ±0)`
-		// Minimum execution time: 69_463_000 picoseconds.
-		Weight::from_parts(95_173_875, 6458)
-			// Standard Error: 14
-			.saturating_add(Weight::from_parts(1_798, 0).saturating_mul(c.into()))
+		//  Measured:  `853 + c * (1 ±0)`
+		//  Estimated: `6794 + c * (1 ±0)`
+		// Minimum execution time: 81_753_000 picoseconds.
+		Weight::from_parts(107_587_646, 6794)
+			// Standard Error: 11
+			.saturating_add(Weight::from_parts(1_804, 0).saturating_mul(c.into()))
 			.saturating_add(T::DbWeight::get().reads(7_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(c.into()))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:2 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:2 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:0)
@@ -224,10 +229,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `b` is `[0, 1]`.
 	fn basic_block_compilation(_b: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `3892`
-		//  Estimated: `9832`
-		// Minimum execution time: 106_781_000 picoseconds.
-		Weight::from_parts(110_275_234, 9832)
+		//  Measured:  `4184`
+		//  Estimated: `10124`
+		// Minimum execution time: 117_907_000 picoseconds.
+		Weight::from_parts(123_831_875, 10124)
 			.saturating_add(T::DbWeight::get().reads(7_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 	}
@@ -235,8 +240,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	/// Storage: `Balances::Holds` (r:2 w:2)
 	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(427), added: 2902, mode: `Measured`)
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Timestamp::Now` (r:1 w:0)
@@ -249,14 +254,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `i` is `[0, 262144]`.
 	fn instantiate_with_code(c: u32, i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `93`
-		//  Estimated: `6033`
-		// Minimum execution time: 1_493_236_000 picoseconds.
-		Weight::from_parts(130_892_279, 6033)
-			// Standard Error: 44
-			.saturating_add(Weight::from_parts(19_685, 0).saturating_mul(c.into()))
-			// Standard Error: 17
-			.saturating_add(Weight::from_parts(5_186, 0).saturating_mul(i.into()))
+		//  Measured:  `474`
+		//  Estimated: `6383`
+		// Minimum execution time: 1_506_201_000 picoseconds.
+		Weight::from_parts(141_233_205, 6383)
+			// Standard Error: 37
+			.saturating_add(Weight::from_parts(19_180, 0).saturating_mul(c.into()))
+			// Standard Error: 15
+			.saturating_add(Weight::from_parts(5_412, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(7_u64))
 			.saturating_add(T::DbWeight::get().writes(6_u64))
 	}
@@ -264,8 +269,8 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	/// Storage: `Revive::PristineCode` (r:1 w:0)
 	/// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`)
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Timestamp::Now` (r:1 w:0)
@@ -277,17 +282,17 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `i` is `[0, 262144]`.
 	fn instantiate(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `987`
-		//  Estimated: `4452`
-		// Minimum execution time: 135_005_000 picoseconds.
-		Weight::from_parts(72_934_362, 4452)
-			// Standard Error: 25
-			.saturating_add(Weight::from_parts(5_282, 0).saturating_mul(i.into()))
+		//  Measured:  `1316`
+		//  Estimated: `4763`
+		// Minimum execution time: 151_101_000 picoseconds.
+		Weight::from_parts(94_582_111, 4763)
+			// Standard Error: 23
+			.saturating_add(Weight::from_parts(5_240, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(7_u64))
 			.saturating_add(T::DbWeight::get().writes(4_u64))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:2 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:2 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:0)
@@ -300,10 +305,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`)
 	fn call() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1194`
-		//  Estimated: `7134`
-		// Minimum execution time: 72_372_000 picoseconds.
-		Weight::from_parts(73_359_000, 7134)
+		//  Measured:  `1523`
+		//  Estimated: `7463`
+		// Minimum execution time: 84_249_000 picoseconds.
+		Weight::from_parts(86_696_000, 7463)
 			.saturating_add(T::DbWeight::get().reads(7_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 	}
@@ -316,12 +321,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `c` is `[0, 104857]`.
 	fn upload_code(c: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `3465`
-		// Minimum execution time: 38_319_000 picoseconds.
-		Weight::from_parts(19_271_971, 3465)
-			// Standard Error: 20
-			.saturating_add(Weight::from_parts(14_786, 0).saturating_mul(c.into()))
+		//  Measured:  `164`
+		//  Estimated: `3629`
+		// Minimum execution time: 48_797_000 picoseconds.
+		Weight::from_parts(27_426_757, 3629)
+			// Standard Error: 18
+			.saturating_add(Weight::from_parts(14_569, 0).saturating_mul(c.into()))
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 			.saturating_add(T::DbWeight::get().writes(3_u64))
 	}
@@ -333,10 +338,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`)
 	fn remove_code() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `181`
-		//  Estimated: `3646`
-		// Minimum execution time: 34_399_000 picoseconds.
-		Weight::from_parts(35_029_000, 3646)
+		//  Measured:  `322`
+		//  Estimated: `3787`
+		// Minimum execution time: 41_775_000 picoseconds.
+		Weight::from_parts(43_278_000, 3787)
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 			.saturating_add(T::DbWeight::get().writes(3_u64))
 	}
@@ -346,36 +351,36 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	fn set_code() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `424`
-		//  Estimated: `6364`
-		// Minimum execution time: 19_108_000 picoseconds.
-		Weight::from_parts(19_626_000, 6364)
+		//  Measured:  `528`
+		//  Estimated: `6468`
+		// Minimum execution time: 22_359_000 picoseconds.
+		Weight::from_parts(23_064_000, 6468)
 			.saturating_add(T::DbWeight::get().reads(3_u64))
 			.saturating_add(T::DbWeight::get().writes(3_u64))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:1)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:1)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Balances::Holds` (r:1 w:1)
 	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(427), added: 2902, mode: `Measured`)
 	fn map_account() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `3465`
-		// Minimum execution time: 35_959_000 picoseconds.
-		Weight::from_parts(36_316_000, 3465)
+		//  Measured:  `164`
+		//  Estimated: `3629`
+		// Minimum execution time: 46_178_000 picoseconds.
+		Weight::from_parts(47_281_000, 3629)
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 	}
 	/// Storage: `Balances::Holds` (r:1 w:1)
 	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(427), added: 2902, mode: `Measured`)
-	/// Storage: `Revive::AddressSuffix` (r:0 w:1)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:0 w:1)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	fn unmap_account() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `56`
-		//  Estimated: `3521`
-		// Minimum execution time: 29_677_000 picoseconds.
-		Weight::from_parts(30_167_000, 3521)
+		//  Measured:  `93`
+		//  Estimated: `3558`
+		// Minimum execution time: 36_864_000 picoseconds.
+		Weight::from_parts(37_846_000, 3558)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(2_u64))
 	}
@@ -385,10 +390,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `TxPause::PausedCalls` (`max_values`: None, `max_size`: Some(532), added: 3007, mode: `Measured`)
 	fn dispatch_as_fallback_account() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `3465`
-		// Minimum execution time: 6_105_000 picoseconds.
-		Weight::from_parts(6_359_000, 3465)
+		//  Measured:  `145`
+		//  Estimated: `3610`
+		// Minimum execution time: 13_925_000 picoseconds.
+		Weight::from_parts(14_653_000, 3610)
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 	}
 	/// The range of component `r` is `[0, 1600]`.
@@ -396,61 +401,61 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 6_095_000 picoseconds.
-		Weight::from_parts(6_725_498, 0)
-			// Standard Error: 257
-			.saturating_add(Weight::from_parts(167_338, 0).saturating_mul(r.into()))
+		// Minimum execution time: 7_068_000 picoseconds.
+		Weight::from_parts(8_391_380, 0)
+			// Standard Error: 241
+			.saturating_add(Weight::from_parts(166_603, 0).saturating_mul(r.into()))
 	}
 	fn seal_caller() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 252_000 picoseconds.
-		Weight::from_parts(300_000, 0)
+		// Minimum execution time: 1_077_000 picoseconds.
+		Weight::from_parts(1_127_000, 0)
 	}
 	fn seal_origin() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 260_000 picoseconds.
-		Weight::from_parts(308_000, 0)
+		// Minimum execution time: 1_039_000 picoseconds.
+		Weight::from_parts(1_109_000, 0)
 	}
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	fn seal_is_contract() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `202`
-		//  Estimated: `3667`
-		// Minimum execution time: 6_409_000 picoseconds.
-		Weight::from_parts(6_639_000, 3667)
+		//  Measured:  `306`
+		//  Estimated: `3771`
+		// Minimum execution time: 9_791_000 picoseconds.
+		Weight::from_parts(10_441_000, 3771)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	fn seal_to_account_id() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `144`
-		//  Estimated: `3609`
-		// Minimum execution time: 5_975_000 picoseconds.
-		Weight::from_parts(6_218_000, 3609)
+		//  Measured:  `269`
+		//  Estimated: `3734`
+		// Minimum execution time: 9_650_000 picoseconds.
+		Weight::from_parts(10_056_000, 3734)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 	}
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	fn seal_code_hash() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `298`
-		//  Estimated: `3763`
-		// Minimum execution time: 7_359_000 picoseconds.
-		Weight::from_parts(7_605_000, 3763)
+		//  Measured:  `402`
+		//  Estimated: `3867`
+		// Minimum execution time: 10_759_000 picoseconds.
+		Weight::from_parts(11_304_000, 3867)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 	}
 	fn seal_own_code_hash() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 262_000 picoseconds.
-		Weight::from_parts(293_000, 0)
+		// Minimum execution time: 285_000 picoseconds.
+		Weight::from_parts(309_000, 0)
 	}
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
@@ -458,64 +463,64 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	fn seal_code_size() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `368`
-		//  Estimated: `3833`
-		// Minimum execution time: 10_585_000 picoseconds.
-		Weight::from_parts(10_890_000, 3833)
+		//  Measured:  `472`
+		//  Estimated: `3937`
+		// Minimum execution time: 14_289_000 picoseconds.
+		Weight::from_parts(15_007_000, 3937)
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 	}
 	fn seal_caller_is_origin() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 300_000 picoseconds.
-		Weight::from_parts(342_000, 0)
+		// Minimum execution time: 345_000 picoseconds.
+		Weight::from_parts(386_000, 0)
 	}
 	fn seal_caller_is_root() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 255_000 picoseconds.
-		Weight::from_parts(272_000, 0)
+		// Minimum execution time: 294_000 picoseconds.
+		Weight::from_parts(331_000, 0)
 	}
 	fn seal_address() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 222_000 picoseconds.
-		Weight::from_parts(264_000, 0)
+		// Minimum execution time: 328_000 picoseconds.
+		Weight::from_parts(383_000, 0)
 	}
 	fn seal_weight_left() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 661_000 picoseconds.
-		Weight::from_parts(722_000, 0)
+		// Minimum execution time: 685_000 picoseconds.
+		Weight::from_parts(739_000, 0)
 	}
 	fn seal_ref_time_left() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 263_000 picoseconds.
-		Weight::from_parts(304_000, 0)
+		// Minimum execution time: 254_000 picoseconds.
+		Weight::from_parts(300_000, 0)
 	}
 	fn seal_balance() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `102`
+		//  Measured:  `103`
 		//  Estimated: `0`
-		// Minimum execution time: 4_549_000 picoseconds.
-		Weight::from_parts(4_834_000, 0)
+		// Minimum execution time: 4_554_000 picoseconds.
+		Weight::from_parts(4_792_000, 0)
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `System::Account` (r:1 w:0)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`)
 	fn seal_balance_of() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `160`
-		//  Estimated: `3625`
-		// Minimum execution time: 8_286_000 picoseconds.
-		Weight::from_parts(8_643_000, 3625)
+		//  Measured:  `272`
+		//  Estimated: `3737`
+		// Minimum execution time: 11_860_000 picoseconds.
+		Weight::from_parts(12_411_000, 3737)
 			.saturating_add(T::DbWeight::get().reads(2_u64))
 	}
 	/// Storage: `Revive::ImmutableDataOf` (r:1 w:0)
@@ -523,12 +528,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `n` is `[1, 4096]`.
 	fn seal_get_immutable_data(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `134 + n * (1 ±0)`
-		//  Estimated: `3599 + n * (1 ±0)`
-		// Minimum execution time: 4_758_000 picoseconds.
-		Weight::from_parts(6_137_118, 3599)
-			// Standard Error: 7
-			.saturating_add(Weight::from_parts(550, 0).saturating_mul(n.into()))
+		//  Measured:  `238 + n * (1 ±0)`
+		//  Estimated: `3703 + n * (1 ±0)`
+		// Minimum execution time: 5_949_000 picoseconds.
+		Weight::from_parts(9_680_803, 3703)
+			// Standard Error: 19
+			.saturating_add(Weight::from_parts(583, 0).saturating_mul(n.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
 	}
@@ -539,141 +544,141 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_665_000 picoseconds.
-		Weight::from_parts(1_850_060, 0)
-			// Standard Error: 1
-			.saturating_add(Weight::from_parts(539, 0).saturating_mul(n.into()))
+		// Minimum execution time: 1_895_000 picoseconds.
+		Weight::from_parts(2_124_646, 0)
+			// Standard Error: 3
+			.saturating_add(Weight::from_parts(554, 0).saturating_mul(n.into()))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
 	fn seal_value_transferred() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 265_000 picoseconds.
-		Weight::from_parts(308_000, 0)
+		// Minimum execution time: 271_000 picoseconds.
+		Weight::from_parts(321_000, 0)
 	}
 	fn seal_minimum_balance() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 239_000 picoseconds.
-		Weight::from_parts(277_000, 0)
+		// Minimum execution time: 276_000 picoseconds.
+		Weight::from_parts(304_000, 0)
 	}
 	fn seal_return_data_size() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 251_000 picoseconds.
-		Weight::from_parts(280_000, 0)
+		// Minimum execution time: 249_000 picoseconds.
+		Weight::from_parts(295_000, 0)
 	}
 	fn seal_call_data_size() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 238_000 picoseconds.
-		Weight::from_parts(287_000, 0)
+		// Minimum execution time: 249_000 picoseconds.
+		Weight::from_parts(293_000, 0)
 	}
 	fn seal_gas_limit() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 372_000 picoseconds.
-		Weight::from_parts(423_000, 0)
+		// Minimum execution time: 455_000 picoseconds.
+		Weight::from_parts(503_000, 0)
 	}
 	fn seal_gas_price() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 227_000 picoseconds.
-		Weight::from_parts(293_000, 0)
+		// Minimum execution time: 265_000 picoseconds.
+		Weight::from_parts(299_000, 0)
 	}
 	fn seal_base_fee() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 244_000 picoseconds.
-		Weight::from_parts(272_000, 0)
+		// Minimum execution time: 272_000 picoseconds.
+		Weight::from_parts(302_000, 0)
 	}
 	fn seal_block_number() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 253_000 picoseconds.
-		Weight::from_parts(279_000, 0)
+		// Minimum execution time: 265_000 picoseconds.
+		Weight::from_parts(300_000, 0)
 	}
 	/// Storage: `Session::Validators` (r:1 w:0)
 	/// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	fn seal_block_author() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `1485`
-		// Minimum execution time: 13_181_000 picoseconds.
-		Weight::from_parts(13_532_000, 1485)
+		//  Measured:  `142`
+		//  Estimated: `1627`
+		// Minimum execution time: 21_000_000 picoseconds.
+		Weight::from_parts(21_777_000, 1627)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 	}
 	/// Storage: `System::BlockHash` (r:1 w:0)
 	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `Measured`)
 	fn seal_block_hash() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `3465`
-		// Minimum execution time: 2_295_000 picoseconds.
-		Weight::from_parts(2_370_000, 3465)
+		//  Measured:  `30`
+		//  Estimated: `3495`
+		// Minimum execution time: 3_464_000 picoseconds.
+		Weight::from_parts(3_719_000, 3495)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 	}
 	fn seal_now() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 262_000 picoseconds.
-		Weight::from_parts(285_000, 0)
+		// Minimum execution time: 347_000 picoseconds.
+		Weight::from_parts(383_000, 0)
 	}
 	fn seal_weight_to_fee() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_220_000 picoseconds.
-		Weight::from_parts(1_317_000, 0)
+		// Minimum execution time: 1_545_000 picoseconds.
+		Weight::from_parts(1_629_000, 0)
 	}
 	/// The range of component `n` is `[0, 262140]`.
 	fn seal_copy_to_contract(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 383_000 picoseconds.
-		Weight::from_parts(637_157, 0)
+		// Minimum execution time: 444_000 picoseconds.
+		Weight::from_parts(844_055, 0)
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(201, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(200, 0).saturating_mul(n.into()))
 	}
 	fn seal_call_data_load() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 234_000 picoseconds.
-		Weight::from_parts(266_000, 0)
+		// Minimum execution time: 263_000 picoseconds.
+		Weight::from_parts(290_000, 0)
 	}
 	/// The range of component `n` is `[0, 262144]`.
 	fn seal_call_data_copy(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 231_000 picoseconds.
-		Weight::from_parts(315_183, 0)
+		// Minimum execution time: 244_000 picoseconds.
+		Weight::from_parts(256_051, 0)
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(113, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(112, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 262140]`.
 	fn seal_return(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 264_000 picoseconds.
-		Weight::from_parts(465_692, 0)
+		// Minimum execution time: 257_000 picoseconds.
+		Weight::from_parts(407_599, 0)
 			// Standard Error: 0
 			.saturating_add(Weight::from_parts(201, 0).saturating_mul(n.into()))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::DeletionQueueCounter` (r:1 w:1)
 	/// Proof: `Revive::DeletionQueueCounter` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:1)
@@ -684,10 +689,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `Revive::ImmutableDataOf` (`max_values`: None, `max_size`: Some(4118), added: 6593, mode: `Measured`)
 	fn seal_terminate() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `215`
-		//  Estimated: `3680`
-		// Minimum execution time: 14_167_000 picoseconds.
-		Weight::from_parts(14_488_000, 3680)
+		//  Measured:  `340`
+		//  Estimated: `3805`
+		// Minimum execution time: 18_236_000 picoseconds.
+		Weight::from_parts(19_062_000, 3805)
 			.saturating_add(T::DbWeight::get().reads(3_u64))
 			.saturating_add(T::DbWeight::get().writes(4_u64))
 	}
@@ -697,41 +702,41 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_745_000 picoseconds.
-		Weight::from_parts(3_752_672, 0)
-			// Standard Error: 2_630
-			.saturating_add(Weight::from_parts(215_379, 0).saturating_mul(t.into()))
-			// Standard Error: 28
-			.saturating_add(Weight::from_parts(999, 0).saturating_mul(n.into()))
+		// Minimum execution time: 4_342_000 picoseconds.
+		Weight::from_parts(4_292_832, 0)
+			// Standard Error: 3_477
+			.saturating_add(Weight::from_parts(200_348, 0).saturating_mul(t.into()))
+			// Standard Error: 38
+			.saturating_add(Weight::from_parts(1_079, 0).saturating_mul(n.into()))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn get_storage_empty() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `552`
-		//  Estimated: `552`
-		// Minimum execution time: 5_458_000 picoseconds.
-		Weight::from_parts(5_843_000, 552)
+		//  Measured:  `648`
+		//  Estimated: `648`
+		// Minimum execution time: 10_362_000 picoseconds.
+		Weight::from_parts(11_044_000, 648)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn get_storage_full() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `10562`
-		//  Estimated: `10562`
-		// Minimum execution time: 39_710_000 picoseconds.
-		Weight::from_parts(41_492_000, 10562)
+		//  Measured:  `10658`
+		//  Estimated: `10658`
+		// Minimum execution time: 44_021_000 picoseconds.
+		Weight::from_parts(45_163_000, 10658)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn set_storage_empty() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `552`
-		//  Estimated: `552`
-		// Minimum execution time: 6_503_000 picoseconds.
-		Weight::from_parts(6_788_000, 552)
+		//  Measured:  `648`
+		//  Estimated: `648`
+		// Minimum execution time: 11_554_000 picoseconds.
+		Weight::from_parts(12_180_000, 648)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -739,10 +744,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn set_storage_full() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `10562`
-		//  Estimated: `10562`
-		// Minimum execution time: 41_564_000 picoseconds.
-		Weight::from_parts(42_945_000, 10562)
+		//  Measured:  `10658`
+		//  Estimated: `10658`
+		// Minimum execution time: 46_083_000 picoseconds.
+		Weight::from_parts(47_113_000, 10658)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -752,14 +757,14 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `o` is `[0, 416]`.
 	fn seal_set_storage(n: u32, o: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + o * (1 ±0)`
-		//  Estimated: `151 + o * (1 ±0)`
-		// Minimum execution time: 6_228_000 picoseconds.
-		Weight::from_parts(7_403_163, 151)
-			// Standard Error: 78
-			.saturating_add(Weight::from_parts(359, 0).saturating_mul(n.into()))
-			// Standard Error: 78
-			.saturating_add(Weight::from_parts(919, 0).saturating_mul(o.into()))
+		//  Measured:  `248 + o * (1 ±0)`
+		//  Estimated: `247 + o * (1 ±0)`
+		// Minimum execution time: 8_947_000 picoseconds.
+		Weight::from_parts(11_982_367, 247)
+			// Standard Error: 198
+			.saturating_add(Weight::from_parts(714, 0).saturating_mul(n.into()))
+			// Standard Error: 198
+			.saturating_add(Weight::from_parts(3_070, 0).saturating_mul(o.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(o.into()))
@@ -769,12 +774,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_clear_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + n * (1 ±0)`
-		//  Estimated: `151 + n * (1 ±0)`
-		// Minimum execution time: 5_834_000 picoseconds.
-		Weight::from_parts(7_142_600, 151)
-			// Standard Error: 124
-			.saturating_add(Weight::from_parts(1_559, 0).saturating_mul(n.into()))
+		//  Measured:  `248 + n * (1 ±0)`
+		//  Estimated: `247 + n * (1 ±0)`
+		// Minimum execution time: 8_420_000 picoseconds.
+		Weight::from_parts(11_835_497, 247)
+			// Standard Error: 346
+			.saturating_add(Weight::from_parts(4_354, 0).saturating_mul(n.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
@@ -784,12 +789,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_get_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + n * (1 ±0)`
-		//  Estimated: `151 + n * (1 ±0)`
-		// Minimum execution time: 5_640_000 picoseconds.
-		Weight::from_parts(7_020_908, 151)
-			// Standard Error: 113
-			.saturating_add(Weight::from_parts(1_856, 0).saturating_mul(n.into()))
+		//  Measured:  `248 + n * (1 ±0)`
+		//  Estimated: `247 + n * (1 ±0)`
+		// Minimum execution time: 7_897_000 picoseconds.
+		Weight::from_parts(11_277_209, 247)
+			// Standard Error: 329
+			.saturating_add(Weight::from_parts(4_715, 0).saturating_mul(n.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
 	}
@@ -798,12 +803,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_contains_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + n * (1 ±0)`
-		//  Estimated: `151 + n * (1 ±0)`
-		// Minimum execution time: 5_162_000 picoseconds.
-		Weight::from_parts(6_328_321, 151)
-			// Standard Error: 117
-			.saturating_add(Weight::from_parts(1_450, 0).saturating_mul(n.into()))
+		//  Measured:  `248 + n * (1 ±0)`
+		//  Estimated: `247 + n * (1 ±0)`
+		// Minimum execution time: 7_575_000 picoseconds.
+		Weight::from_parts(10_652_293, 247)
+			// Standard Error: 335
+			.saturating_add(Weight::from_parts(4_592, 0).saturating_mul(n.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
 	}
@@ -812,12 +817,12 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_take_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + n * (1 ±0)`
-		//  Estimated: `151 + n * (1 ±0)`
-		// Minimum execution time: 6_266_000 picoseconds.
-		Weight::from_parts(7_758_145, 151)
-			// Standard Error: 124
-			.saturating_add(Weight::from_parts(2_268, 0).saturating_mul(n.into()))
+		//  Measured:  `248 + n * (1 ±0)`
+		//  Estimated: `247 + n * (1 ±0)`
+		// Minimum execution time: 9_071_000 picoseconds.
+		Weight::from_parts(12_618_975, 247)
+			// Standard Error: 343
+			.saturating_add(Weight::from_parts(4_573, 0).saturating_mul(n.into()))
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
@@ -826,36 +831,36 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_403_000 picoseconds.
-		Weight::from_parts(1_515_000, 0)
+		// Minimum execution time: 1_471_000 picoseconds.
+		Weight::from_parts(1_559_000, 0)
 	}
 	fn set_transient_storage_full() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_736_000 picoseconds.
-		Weight::from_parts(1_844_000, 0)
+		// Minimum execution time: 1_791_000 picoseconds.
+		Weight::from_parts(1_882_000, 0)
 	}
 	fn get_transient_storage_empty() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_382_000 picoseconds.
-		Weight::from_parts(1_485_000, 0)
+		// Minimum execution time: 1_450_000 picoseconds.
+		Weight::from_parts(1_502_000, 0)
 	}
 	fn get_transient_storage_full() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_548_000 picoseconds.
-		Weight::from_parts(1_610_000, 0)
+		// Minimum execution time: 1_579_000 picoseconds.
+		Weight::from_parts(1_648_000, 0)
 	}
 	fn rollback_transient_storage() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_018_000 picoseconds.
-		Weight::from_parts(1_076_000, 0)
+		// Minimum execution time: 1_162_000 picoseconds.
+		Weight::from_parts(1_218_000, 0)
 	}
 	/// The range of component `n` is `[0, 416]`.
 	/// The range of component `o` is `[0, 416]`.
@@ -863,53 +868,55 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_051_000 picoseconds.
-		Weight::from_parts(2_307_119, 0)
-			// Standard Error: 13
-			.saturating_add(Weight::from_parts(211, 0).saturating_mul(n.into()))
-			// Standard Error: 13
-			.saturating_add(Weight::from_parts(287, 0).saturating_mul(o.into()))
+		// Minimum execution time: 2_209_000 picoseconds.
+		Weight::from_parts(2_409_510, 0)
+			// Standard Error: 15
+			.saturating_add(Weight::from_parts(340, 0).saturating_mul(n.into()))
+			// Standard Error: 15
+			.saturating_add(Weight::from_parts(339, 0).saturating_mul(o.into()))
 	}
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_clear_transient_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_844_000 picoseconds.
-		Weight::from_parts(2_187_216, 0)
-			// Standard Error: 18
-			.saturating_add(Weight::from_parts(325, 0).saturating_mul(n.into()))
+		// Minimum execution time: 2_036_000 picoseconds.
+		Weight::from_parts(2_345_540, 0)
+			// Standard Error: 19
+			.saturating_add(Weight::from_parts(290, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_get_transient_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_739_000 picoseconds.
-		Weight::from_parts(1_948_795, 0)
-			// Standard Error: 14
-			.saturating_add(Weight::from_parts(234, 0).saturating_mul(n.into()))
+		// Minimum execution time: 1_830_000 picoseconds.
+		Weight::from_parts(2_030_862, 0)
+			// Standard Error: 21
+			.saturating_add(Weight::from_parts(274, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_contains_transient_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_593_000 picoseconds.
-		Weight::from_parts(1_780_040, 0)
-			// Standard Error: 15
-			.saturating_add(Weight::from_parts(197, 0).saturating_mul(n.into()))
+		// Minimum execution time: 1_652_000 picoseconds.
+		Weight::from_parts(1_838_447, 0)
+			// Standard Error: 21
+			.saturating_add(Weight::from_parts(154, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 416]`.
-	fn seal_take_transient_storage(_n: u32, ) -> Weight {
+	fn seal_take_transient_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_292_000 picoseconds.
-		Weight::from_parts(2_515_910, 0)
+		// Minimum execution time: 2_398_000 picoseconds.
+		Weight::from_parts(2_621_838, 0)
+			// Standard Error: 18
+			.saturating_add(Weight::from_parts(111, 0).saturating_mul(n.into()))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:0)
@@ -920,18 +927,20 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`)
 	/// The range of component `t` is `[0, 1]`.
 	/// The range of component `i` is `[0, 262144]`.
-	fn seal_call(t: u32, _i: u32, ) -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `1165 + t * (242 ±0)`
-		//  Estimated: `4630 + t * (2436 ±0)`
-		// Minimum execution time: 30_071_000 picoseconds.
-		Weight::from_parts(31_203_349, 4630)
-			// Standard Error: 63_646
-			.saturating_add(Weight::from_parts(7_097_249, 0).saturating_mul(t.into()))
+	fn seal_call(t: u32, i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1313 + t * (243 ±0)`
+		//  Estimated: `4778 + t * (2511 ±0)`
+		// Minimum execution time: 35_387_000 picoseconds.
+		Weight::from_parts(36_233_832, 4778)
+			// Standard Error: 62_744
+			.saturating_add(Weight::from_parts(7_331_152, 0).saturating_mul(t.into()))
+			// Standard Error: 0
+			.saturating_add(Weight::from_parts(3, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(4_u64))
 			.saturating_add(T::DbWeight::get().reads((1_u64).saturating_mul(t.into())))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
-			.saturating_add(Weight::from_parts(0, 2436).saturating_mul(t.into()))
+			.saturating_add(Weight::from_parts(0, 2511).saturating_mul(t.into()))
 	}
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
@@ -941,10 +950,10 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`)
 	fn seal_delegate_call() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1108`
-		//  Estimated: `4573`
-		// Minimum execution time: 23_440_000 picoseconds.
-		Weight::from_parts(24_296_000, 4573)
+		//  Measured:  `1236`
+		//  Estimated: `4701`
+		// Minimum execution time: 30_155_000 picoseconds.
+		Weight::from_parts(31_146_000, 4701)
 			.saturating_add(T::DbWeight::get().reads(3_u64))
 	}
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:1)
@@ -958,87 +967,141 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 	/// The range of component `i` is `[0, 262144]`.
 	fn seal_instantiate(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1130`
-		//  Estimated: `4608`
-		// Minimum execution time: 105_570_000 picoseconds.
-		Weight::from_parts(93_244_583, 4608)
+		//  Measured:  `1273`
+		//  Estimated: `4715`
+		// Minimum execution time: 113_701_000 picoseconds.
+		Weight::from_parts(105_202_490, 4715)
 			// Standard Error: 11
-			.saturating_add(Weight::from_parts(4_070, 0).saturating_mul(i.into()))
+			.saturating_add(Weight::from_parts(4_047, 0).saturating_mul(i.into()))
 			.saturating_add(T::DbWeight::get().reads(4_u64))
 			.saturating_add(T::DbWeight::get().writes(3_u64))
 	}
 	/// The range of component `n` is `[0, 262144]`.
-	fn seal_hash_sha2_256(n: u32, ) -> Weight {
+	fn sha2_256(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 633_000 picoseconds.
-		Weight::from_parts(2_028_267, 0)
-			// Standard Error: 3
-			.saturating_add(Weight::from_parts(1_346, 0).saturating_mul(n.into()))
+		// Minimum execution time: 742_000 picoseconds.
+		Weight::from_parts(3_723_181, 0)
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_121, 0).saturating_mul(n.into()))
+	}
+	/// The range of component `n` is `[0, 262144]`.
+	fn identity(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 280_000 picoseconds.
+		Weight::from_parts(308_244, 0)
+			// Standard Error: 0
+			.saturating_add(Weight::from_parts(112, 0).saturating_mul(n.into()))
+	}
+	/// The range of component `n` is `[0, 262144]`.
+	fn ripemd_160(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 741_000 picoseconds.
+		Weight::from_parts(2_450, 0)
+			// Standard Error: 1
+			.saturating_add(Weight::from_parts(3_780, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 262144]`.
 	fn seal_hash_keccak_256(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_026_000 picoseconds.
-		Weight::from_parts(1_828_261, 0)
+		// Minimum execution time: 1_040_000 picoseconds.
+		Weight::from_parts(4_614_461, 0)
 			// Standard Error: 3
-			.saturating_add(Weight::from_parts(3_566, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(3_567, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 262144]`.
 	fn seal_hash_blake2_256(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 652_000 picoseconds.
-		Weight::from_parts(1_883_702, 0)
+		// Minimum execution time: 674_000 picoseconds.
+		Weight::from_parts(4_628_583, 0)
 			// Standard Error: 3
-			.saturating_add(Weight::from_parts(1_469, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(1_472, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 262144]`.
 	fn seal_hash_blake2_128(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 619_000 picoseconds.
-		Weight::from_parts(2_402_538, 0)
+		// Minimum execution time: 669_000 picoseconds.
+		Weight::from_parts(3_333_102, 0)
 			// Standard Error: 2
-			.saturating_add(Weight::from_parts(1_464, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(1_470, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 261889]`.
 	fn seal_sr25519_verify(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 42_251_000 picoseconds.
-		Weight::from_parts(30_574_101, 0)
-			// Standard Error: 10
-			.saturating_add(Weight::from_parts(5_043, 0).saturating_mul(n.into()))
+		// Minimum execution time: 49_635_000 picoseconds.
+		Weight::from_parts(35_441_301, 0)
+			// Standard Error: 11
+			.saturating_add(Weight::from_parts(5_194, 0).saturating_mul(n.into()))
+	}
+	fn ecdsa_recover() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 44_896_000 picoseconds.
+		Weight::from_parts(45_593_000, 0)
 	}
-	fn seal_ecdsa_recover() -> Weight {
+	fn bn128_add() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 48_588_000 picoseconds.
-		Weight::from_parts(49_800_000, 0)
+		// Minimum execution time: 15_131_000 picoseconds.
+		Weight::from_parts(15_934_000, 0)
+	}
+	fn bn128_mul() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_016_474_000 picoseconds.
+		Weight::from_parts(1_020_567_000, 0)
+	}
+	/// The range of component `n` is `[0, 1365]`.
+	fn bn128_pairing(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 12_582_084_000 picoseconds.
+		Weight::from_parts(12_648_387_115, 0)
+			// Standard Error: 5_577
+			.saturating_add(Weight::from_parts(6_468, 0).saturating_mul(n.into()))
+	}
+	/// The range of component `n` is `[0, 1200]`.
+	fn blake2f(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 384_000 picoseconds.
+		Weight::from_parts(507_334, 0)
+			// Standard Error: 6
+			.saturating_add(Weight::from_parts(22_429, 0).saturating_mul(n.into()))
 	}
 	fn seal_ecdsa_to_eth_address() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 12_393_000 picoseconds.
-		Weight::from_parts(12_656_000, 0)
+		// Minimum execution time: 12_632_000 picoseconds.
+		Weight::from_parts(12_855_000, 0)
 	}
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:1)
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	fn seal_set_code_hash() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `196`
-		//  Estimated: `3661`
-		// Minimum execution time: 10_003_000 picoseconds.
-		Weight::from_parts(10_329_000, 3661)
+		//  Measured:  `300`
+		//  Estimated: `3765`
+		// Minimum execution time: 14_048_000 picoseconds.
+		Weight::from_parts(14_365_000, 3765)
 			.saturating_add(T::DbWeight::get().reads(1_u64))
 			.saturating_add(T::DbWeight::get().writes(1_u64))
 	}
@@ -1047,20 +1110,20 @@ impl<T: frame_system::Config> WeightInfo for SubstrateWeight<T> {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 11_475_000 picoseconds.
-		Weight::from_parts(45_314_927, 0)
-			// Standard Error: 458
-			.saturating_add(Weight::from_parts(126_444, 0).saturating_mul(r.into()))
+		// Minimum execution time: 11_581_000 picoseconds.
+		Weight::from_parts(78_858_605, 0)
+			// Standard Error: 675
+			.saturating_add(Weight::from_parts(131_406, 0).saturating_mul(r.into()))
 	}
 	/// The range of component `r` is `[0, 100000]`.
 	fn instr_empty_loop(r: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_711_000 picoseconds.
-		Weight::from_parts(8_586_335, 0)
-			// Standard Error: 18
-			.saturating_add(Weight::from_parts(73_090, 0).saturating_mul(r.into()))
+		// Minimum execution time: 2_740_000 picoseconds.
+		Weight::from_parts(6_368_891, 0)
+			// Standard Error: 10
+			.saturating_add(Weight::from_parts(77_239, 0).saturating_mul(r.into()))
 	}
 }
 
@@ -1070,10 +1133,10 @@ impl WeightInfo for () {
 	/// Proof: `Revive::DeletionQueueCounter` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`)
 	fn on_process_deletion_queue_batch() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `1485`
-		// Minimum execution time: 726_000 picoseconds.
-		Weight::from_parts(771_000, 1485)
+		//  Measured:  `109`
+		//  Estimated: `1594`
+		// Minimum execution time: 2_764_000 picoseconds.
+		Weight::from_parts(2_891_000, 1594)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
@@ -1081,20 +1144,20 @@ impl WeightInfo for () {
 	/// The range of component `k` is `[0, 1024]`.
 	fn on_initialize_per_trie_key(k: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `230 + k * (69 ±0)`
-		//  Estimated: `222 + k * (70 ±0)`
-		// Minimum execution time: 10_616_000 picoseconds.
-		Weight::from_parts(10_903_000, 222)
-			// Standard Error: 966
-			.saturating_add(Weight::from_parts(1_172_694, 0).saturating_mul(k.into()))
+		//  Measured:  `425 + k * (69 ±0)`
+		//  Estimated: `415 + k * (70 ±0)`
+		// Minimum execution time: 15_875_000 picoseconds.
+		Weight::from_parts(2_425_095, 415)
+			// Standard Error: 1_376
+			.saturating_add(Weight::from_parts(1_220_494, 0).saturating_mul(k.into()))
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 			.saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(k.into())))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 			.saturating_add(RocksDbWeight::get().writes((1_u64).saturating_mul(k.into())))
 			.saturating_add(Weight::from_parts(0, 70).saturating_mul(k.into()))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:2 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:2 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:0)
@@ -1108,18 +1171,18 @@ impl WeightInfo for () {
 	/// The range of component `c` is `[0, 104857]`.
 	fn call_with_code_per_byte(c: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `524 + c * (1 ±0)`
-		//  Estimated: `6458 + c * (1 ±0)`
-		// Minimum execution time: 69_463_000 picoseconds.
-		Weight::from_parts(95_173_875, 6458)
-			// Standard Error: 14
-			.saturating_add(Weight::from_parts(1_798, 0).saturating_mul(c.into()))
+		//  Measured:  `853 + c * (1 ±0)`
+		//  Estimated: `6794 + c * (1 ±0)`
+		// Minimum execution time: 81_753_000 picoseconds.
+		Weight::from_parts(107_587_646, 6794)
+			// Standard Error: 11
+			.saturating_add(Weight::from_parts(1_804, 0).saturating_mul(c.into()))
 			.saturating_add(RocksDbWeight::get().reads(7_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(c.into()))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:2 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:2 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:0)
@@ -1133,10 +1196,10 @@ impl WeightInfo for () {
 	/// The range of component `b` is `[0, 1]`.
 	fn basic_block_compilation(_b: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `3892`
-		//  Estimated: `9832`
-		// Minimum execution time: 106_781_000 picoseconds.
-		Weight::from_parts(110_275_234, 9832)
+		//  Measured:  `4184`
+		//  Estimated: `10124`
+		// Minimum execution time: 117_907_000 picoseconds.
+		Weight::from_parts(123_831_875, 10124)
 			.saturating_add(RocksDbWeight::get().reads(7_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 	}
@@ -1144,8 +1207,8 @@ impl WeightInfo for () {
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	/// Storage: `Balances::Holds` (r:2 w:2)
 	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(427), added: 2902, mode: `Measured`)
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Timestamp::Now` (r:1 w:0)
@@ -1158,14 +1221,14 @@ impl WeightInfo for () {
 	/// The range of component `i` is `[0, 262144]`.
 	fn instantiate_with_code(c: u32, i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `93`
-		//  Estimated: `6033`
-		// Minimum execution time: 1_493_236_000 picoseconds.
-		Weight::from_parts(130_892_279, 6033)
-			// Standard Error: 44
-			.saturating_add(Weight::from_parts(19_685, 0).saturating_mul(c.into()))
-			// Standard Error: 17
-			.saturating_add(Weight::from_parts(5_186, 0).saturating_mul(i.into()))
+		//  Measured:  `474`
+		//  Estimated: `6383`
+		// Minimum execution time: 1_506_201_000 picoseconds.
+		Weight::from_parts(141_233_205, 6383)
+			// Standard Error: 37
+			.saturating_add(Weight::from_parts(19_180, 0).saturating_mul(c.into()))
+			// Standard Error: 15
+			.saturating_add(Weight::from_parts(5_412, 0).saturating_mul(i.into()))
 			.saturating_add(RocksDbWeight::get().reads(7_u64))
 			.saturating_add(RocksDbWeight::get().writes(6_u64))
 	}
@@ -1173,8 +1236,8 @@ impl WeightInfo for () {
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	/// Storage: `Revive::PristineCode` (r:1 w:0)
 	/// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`)
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Timestamp::Now` (r:1 w:0)
@@ -1186,17 +1249,17 @@ impl WeightInfo for () {
 	/// The range of component `i` is `[0, 262144]`.
 	fn instantiate(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `987`
-		//  Estimated: `4452`
-		// Minimum execution time: 135_005_000 picoseconds.
-		Weight::from_parts(72_934_362, 4452)
-			// Standard Error: 25
-			.saturating_add(Weight::from_parts(5_282, 0).saturating_mul(i.into()))
+		//  Measured:  `1316`
+		//  Estimated: `4763`
+		// Minimum execution time: 151_101_000 picoseconds.
+		Weight::from_parts(94_582_111, 4763)
+			// Standard Error: 23
+			.saturating_add(Weight::from_parts(5_240, 0).saturating_mul(i.into()))
 			.saturating_add(RocksDbWeight::get().reads(7_u64))
 			.saturating_add(RocksDbWeight::get().writes(4_u64))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:2 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:2 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:1)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:0)
@@ -1209,10 +1272,10 @@ impl WeightInfo for () {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`)
 	fn call() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1194`
-		//  Estimated: `7134`
-		// Minimum execution time: 72_372_000 picoseconds.
-		Weight::from_parts(73_359_000, 7134)
+		//  Measured:  `1523`
+		//  Estimated: `7463`
+		// Minimum execution time: 84_249_000 picoseconds.
+		Weight::from_parts(86_696_000, 7463)
 			.saturating_add(RocksDbWeight::get().reads(7_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 	}
@@ -1225,12 +1288,12 @@ impl WeightInfo for () {
 	/// The range of component `c` is `[0, 104857]`.
 	fn upload_code(c: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `3465`
-		// Minimum execution time: 38_319_000 picoseconds.
-		Weight::from_parts(19_271_971, 3465)
-			// Standard Error: 20
-			.saturating_add(Weight::from_parts(14_786, 0).saturating_mul(c.into()))
+		//  Measured:  `164`
+		//  Estimated: `3629`
+		// Minimum execution time: 48_797_000 picoseconds.
+		Weight::from_parts(27_426_757, 3629)
+			// Standard Error: 18
+			.saturating_add(Weight::from_parts(14_569, 0).saturating_mul(c.into()))
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 			.saturating_add(RocksDbWeight::get().writes(3_u64))
 	}
@@ -1242,10 +1305,10 @@ impl WeightInfo for () {
 	/// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`)
 	fn remove_code() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `181`
-		//  Estimated: `3646`
-		// Minimum execution time: 34_399_000 picoseconds.
-		Weight::from_parts(35_029_000, 3646)
+		//  Measured:  `322`
+		//  Estimated: `3787`
+		// Minimum execution time: 41_775_000 picoseconds.
+		Weight::from_parts(43_278_000, 3787)
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 			.saturating_add(RocksDbWeight::get().writes(3_u64))
 	}
@@ -1255,36 +1318,36 @@ impl WeightInfo for () {
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	fn set_code() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `424`
-		//  Estimated: `6364`
-		// Minimum execution time: 19_108_000 picoseconds.
-		Weight::from_parts(19_626_000, 6364)
+		//  Measured:  `528`
+		//  Estimated: `6468`
+		// Minimum execution time: 22_359_000 picoseconds.
+		Weight::from_parts(23_064_000, 6468)
 			.saturating_add(RocksDbWeight::get().reads(3_u64))
 			.saturating_add(RocksDbWeight::get().writes(3_u64))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:1)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:1)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Balances::Holds` (r:1 w:1)
 	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(427), added: 2902, mode: `Measured`)
 	fn map_account() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `3465`
-		// Minimum execution time: 35_959_000 picoseconds.
-		Weight::from_parts(36_316_000, 3465)
+		//  Measured:  `164`
+		//  Estimated: `3629`
+		// Minimum execution time: 46_178_000 picoseconds.
+		Weight::from_parts(47_281_000, 3629)
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 	}
 	/// Storage: `Balances::Holds` (r:1 w:1)
 	/// Proof: `Balances::Holds` (`max_values`: None, `max_size`: Some(427), added: 2902, mode: `Measured`)
-	/// Storage: `Revive::AddressSuffix` (r:0 w:1)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:0 w:1)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	fn unmap_account() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `56`
-		//  Estimated: `3521`
-		// Minimum execution time: 29_677_000 picoseconds.
-		Weight::from_parts(30_167_000, 3521)
+		//  Measured:  `93`
+		//  Estimated: `3558`
+		// Minimum execution time: 36_864_000 picoseconds.
+		Weight::from_parts(37_846_000, 3558)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(2_u64))
 	}
@@ -1294,10 +1357,10 @@ impl WeightInfo for () {
 	/// Proof: `TxPause::PausedCalls` (`max_values`: None, `max_size`: Some(532), added: 3007, mode: `Measured`)
 	fn dispatch_as_fallback_account() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `3465`
-		// Minimum execution time: 6_105_000 picoseconds.
-		Weight::from_parts(6_359_000, 3465)
+		//  Measured:  `145`
+		//  Estimated: `3610`
+		// Minimum execution time: 13_925_000 picoseconds.
+		Weight::from_parts(14_653_000, 3610)
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 	}
 	/// The range of component `r` is `[0, 1600]`.
@@ -1305,61 +1368,61 @@ impl WeightInfo for () {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 6_095_000 picoseconds.
-		Weight::from_parts(6_725_498, 0)
-			// Standard Error: 257
-			.saturating_add(Weight::from_parts(167_338, 0).saturating_mul(r.into()))
+		// Minimum execution time: 7_068_000 picoseconds.
+		Weight::from_parts(8_391_380, 0)
+			// Standard Error: 241
+			.saturating_add(Weight::from_parts(166_603, 0).saturating_mul(r.into()))
 	}
 	fn seal_caller() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 252_000 picoseconds.
-		Weight::from_parts(300_000, 0)
+		// Minimum execution time: 1_077_000 picoseconds.
+		Weight::from_parts(1_127_000, 0)
 	}
 	fn seal_origin() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 260_000 picoseconds.
-		Weight::from_parts(308_000, 0)
+		// Minimum execution time: 1_039_000 picoseconds.
+		Weight::from_parts(1_109_000, 0)
 	}
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	fn seal_is_contract() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `202`
-		//  Estimated: `3667`
-		// Minimum execution time: 6_409_000 picoseconds.
-		Weight::from_parts(6_639_000, 3667)
+		//  Measured:  `306`
+		//  Estimated: `3771`
+		// Minimum execution time: 9_791_000 picoseconds.
+		Weight::from_parts(10_441_000, 3771)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	fn seal_to_account_id() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `144`
-		//  Estimated: `3609`
-		// Minimum execution time: 5_975_000 picoseconds.
-		Weight::from_parts(6_218_000, 3609)
+		//  Measured:  `269`
+		//  Estimated: `3734`
+		// Minimum execution time: 9_650_000 picoseconds.
+		Weight::from_parts(10_056_000, 3734)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 	}
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	fn seal_code_hash() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `298`
-		//  Estimated: `3763`
-		// Minimum execution time: 7_359_000 picoseconds.
-		Weight::from_parts(7_605_000, 3763)
+		//  Measured:  `402`
+		//  Estimated: `3867`
+		// Minimum execution time: 10_759_000 picoseconds.
+		Weight::from_parts(11_304_000, 3867)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 	}
 	fn seal_own_code_hash() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 262_000 picoseconds.
-		Weight::from_parts(293_000, 0)
+		// Minimum execution time: 285_000 picoseconds.
+		Weight::from_parts(309_000, 0)
 	}
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
@@ -1367,64 +1430,64 @@ impl WeightInfo for () {
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	fn seal_code_size() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `368`
-		//  Estimated: `3833`
-		// Minimum execution time: 10_585_000 picoseconds.
-		Weight::from_parts(10_890_000, 3833)
+		//  Measured:  `472`
+		//  Estimated: `3937`
+		// Minimum execution time: 14_289_000 picoseconds.
+		Weight::from_parts(15_007_000, 3937)
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 	}
 	fn seal_caller_is_origin() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 300_000 picoseconds.
-		Weight::from_parts(342_000, 0)
+		// Minimum execution time: 345_000 picoseconds.
+		Weight::from_parts(386_000, 0)
 	}
 	fn seal_caller_is_root() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 255_000 picoseconds.
-		Weight::from_parts(272_000, 0)
+		// Minimum execution time: 294_000 picoseconds.
+		Weight::from_parts(331_000, 0)
 	}
 	fn seal_address() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 222_000 picoseconds.
-		Weight::from_parts(264_000, 0)
+		// Minimum execution time: 328_000 picoseconds.
+		Weight::from_parts(383_000, 0)
 	}
 	fn seal_weight_left() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 661_000 picoseconds.
-		Weight::from_parts(722_000, 0)
+		// Minimum execution time: 685_000 picoseconds.
+		Weight::from_parts(739_000, 0)
 	}
 	fn seal_ref_time_left() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 263_000 picoseconds.
-		Weight::from_parts(304_000, 0)
+		// Minimum execution time: 254_000 picoseconds.
+		Weight::from_parts(300_000, 0)
 	}
 	fn seal_balance() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `102`
+		//  Measured:  `103`
 		//  Estimated: `0`
-		// Minimum execution time: 4_549_000 picoseconds.
-		Weight::from_parts(4_834_000, 0)
+		// Minimum execution time: 4_554_000 picoseconds.
+		Weight::from_parts(4_792_000, 0)
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `System::Account` (r:1 w:0)
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`)
 	fn seal_balance_of() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `160`
-		//  Estimated: `3625`
-		// Minimum execution time: 8_286_000 picoseconds.
-		Weight::from_parts(8_643_000, 3625)
+		//  Measured:  `272`
+		//  Estimated: `3737`
+		// Minimum execution time: 11_860_000 picoseconds.
+		Weight::from_parts(12_411_000, 3737)
 			.saturating_add(RocksDbWeight::get().reads(2_u64))
 	}
 	/// Storage: `Revive::ImmutableDataOf` (r:1 w:0)
@@ -1432,12 +1495,12 @@ impl WeightInfo for () {
 	/// The range of component `n` is `[1, 4096]`.
 	fn seal_get_immutable_data(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `134 + n * (1 ±0)`
-		//  Estimated: `3599 + n * (1 ±0)`
-		// Minimum execution time: 4_758_000 picoseconds.
-		Weight::from_parts(6_137_118, 3599)
-			// Standard Error: 7
-			.saturating_add(Weight::from_parts(550, 0).saturating_mul(n.into()))
+		//  Measured:  `238 + n * (1 ±0)`
+		//  Estimated: `3703 + n * (1 ±0)`
+		// Minimum execution time: 5_949_000 picoseconds.
+		Weight::from_parts(9_680_803, 3703)
+			// Standard Error: 19
+			.saturating_add(Weight::from_parts(583, 0).saturating_mul(n.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
 	}
@@ -1448,141 +1511,141 @@ impl WeightInfo for () {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_665_000 picoseconds.
-		Weight::from_parts(1_850_060, 0)
-			// Standard Error: 1
-			.saturating_add(Weight::from_parts(539, 0).saturating_mul(n.into()))
+		// Minimum execution time: 1_895_000 picoseconds.
+		Weight::from_parts(2_124_646, 0)
+			// Standard Error: 3
+			.saturating_add(Weight::from_parts(554, 0).saturating_mul(n.into()))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
 	fn seal_value_transferred() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 265_000 picoseconds.
-		Weight::from_parts(308_000, 0)
+		// Minimum execution time: 271_000 picoseconds.
+		Weight::from_parts(321_000, 0)
 	}
 	fn seal_minimum_balance() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 239_000 picoseconds.
-		Weight::from_parts(277_000, 0)
+		// Minimum execution time: 276_000 picoseconds.
+		Weight::from_parts(304_000, 0)
 	}
 	fn seal_return_data_size() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 251_000 picoseconds.
-		Weight::from_parts(280_000, 0)
+		// Minimum execution time: 249_000 picoseconds.
+		Weight::from_parts(295_000, 0)
 	}
 	fn seal_call_data_size() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 238_000 picoseconds.
-		Weight::from_parts(287_000, 0)
+		// Minimum execution time: 249_000 picoseconds.
+		Weight::from_parts(293_000, 0)
 	}
 	fn seal_gas_limit() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 372_000 picoseconds.
-		Weight::from_parts(423_000, 0)
+		// Minimum execution time: 455_000 picoseconds.
+		Weight::from_parts(503_000, 0)
 	}
 	fn seal_gas_price() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 227_000 picoseconds.
-		Weight::from_parts(293_000, 0)
+		// Minimum execution time: 265_000 picoseconds.
+		Weight::from_parts(299_000, 0)
 	}
 	fn seal_base_fee() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 244_000 picoseconds.
-		Weight::from_parts(272_000, 0)
+		// Minimum execution time: 272_000 picoseconds.
+		Weight::from_parts(302_000, 0)
 	}
 	fn seal_block_number() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 253_000 picoseconds.
-		Weight::from_parts(279_000, 0)
+		// Minimum execution time: 265_000 picoseconds.
+		Weight::from_parts(300_000, 0)
 	}
 	/// Storage: `Session::Validators` (r:1 w:0)
 	/// Proof: `Session::Validators` (`max_values`: Some(1), `max_size`: None, mode: `Measured`)
 	fn seal_block_author() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `1485`
-		// Minimum execution time: 13_181_000 picoseconds.
-		Weight::from_parts(13_532_000, 1485)
+		//  Measured:  `142`
+		//  Estimated: `1627`
+		// Minimum execution time: 21_000_000 picoseconds.
+		Weight::from_parts(21_777_000, 1627)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 	}
 	/// Storage: `System::BlockHash` (r:1 w:0)
 	/// Proof: `System::BlockHash` (`max_values`: None, `max_size`: Some(44), added: 2519, mode: `Measured`)
 	fn seal_block_hash() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `0`
-		//  Estimated: `3465`
-		// Minimum execution time: 2_295_000 picoseconds.
-		Weight::from_parts(2_370_000, 3465)
+		//  Measured:  `30`
+		//  Estimated: `3495`
+		// Minimum execution time: 3_464_000 picoseconds.
+		Weight::from_parts(3_719_000, 3495)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 	}
 	fn seal_now() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 262_000 picoseconds.
-		Weight::from_parts(285_000, 0)
+		// Minimum execution time: 347_000 picoseconds.
+		Weight::from_parts(383_000, 0)
 	}
 	fn seal_weight_to_fee() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_220_000 picoseconds.
-		Weight::from_parts(1_317_000, 0)
+		// Minimum execution time: 1_545_000 picoseconds.
+		Weight::from_parts(1_629_000, 0)
 	}
 	/// The range of component `n` is `[0, 262140]`.
 	fn seal_copy_to_contract(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 383_000 picoseconds.
-		Weight::from_parts(637_157, 0)
+		// Minimum execution time: 444_000 picoseconds.
+		Weight::from_parts(844_055, 0)
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(201, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(200, 0).saturating_mul(n.into()))
 	}
 	fn seal_call_data_load() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 234_000 picoseconds.
-		Weight::from_parts(266_000, 0)
+		// Minimum execution time: 263_000 picoseconds.
+		Weight::from_parts(290_000, 0)
 	}
 	/// The range of component `n` is `[0, 262144]`.
 	fn seal_call_data_copy(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 231_000 picoseconds.
-		Weight::from_parts(315_183, 0)
+		// Minimum execution time: 244_000 picoseconds.
+		Weight::from_parts(256_051, 0)
 			// Standard Error: 0
-			.saturating_add(Weight::from_parts(113, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(112, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 262140]`.
 	fn seal_return(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 264_000 picoseconds.
-		Weight::from_parts(465_692, 0)
+		// Minimum execution time: 257_000 picoseconds.
+		Weight::from_parts(407_599, 0)
 			// Standard Error: 0
 			.saturating_add(Weight::from_parts(201, 0).saturating_mul(n.into()))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::DeletionQueueCounter` (r:1 w:1)
 	/// Proof: `Revive::DeletionQueueCounter` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:1)
@@ -1593,10 +1656,10 @@ impl WeightInfo for () {
 	/// Proof: `Revive::ImmutableDataOf` (`max_values`: None, `max_size`: Some(4118), added: 6593, mode: `Measured`)
 	fn seal_terminate() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `215`
-		//  Estimated: `3680`
-		// Minimum execution time: 14_167_000 picoseconds.
-		Weight::from_parts(14_488_000, 3680)
+		//  Measured:  `340`
+		//  Estimated: `3805`
+		// Minimum execution time: 18_236_000 picoseconds.
+		Weight::from_parts(19_062_000, 3805)
 			.saturating_add(RocksDbWeight::get().reads(3_u64))
 			.saturating_add(RocksDbWeight::get().writes(4_u64))
 	}
@@ -1606,41 +1669,41 @@ impl WeightInfo for () {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 3_745_000 picoseconds.
-		Weight::from_parts(3_752_672, 0)
-			// Standard Error: 2_630
-			.saturating_add(Weight::from_parts(215_379, 0).saturating_mul(t.into()))
-			// Standard Error: 28
-			.saturating_add(Weight::from_parts(999, 0).saturating_mul(n.into()))
+		// Minimum execution time: 4_342_000 picoseconds.
+		Weight::from_parts(4_292_832, 0)
+			// Standard Error: 3_477
+			.saturating_add(Weight::from_parts(200_348, 0).saturating_mul(t.into()))
+			// Standard Error: 38
+			.saturating_add(Weight::from_parts(1_079, 0).saturating_mul(n.into()))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn get_storage_empty() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `552`
-		//  Estimated: `552`
-		// Minimum execution time: 5_458_000 picoseconds.
-		Weight::from_parts(5_843_000, 552)
+		//  Measured:  `648`
+		//  Estimated: `648`
+		// Minimum execution time: 10_362_000 picoseconds.
+		Weight::from_parts(11_044_000, 648)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn get_storage_full() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `10562`
-		//  Estimated: `10562`
-		// Minimum execution time: 39_710_000 picoseconds.
-		Weight::from_parts(41_492_000, 10562)
+		//  Measured:  `10658`
+		//  Estimated: `10658`
+		// Minimum execution time: 44_021_000 picoseconds.
+		Weight::from_parts(45_163_000, 10658)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 	}
 	/// Storage: `Skipped::Metadata` (r:0 w:0)
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn set_storage_empty() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `552`
-		//  Estimated: `552`
-		// Minimum execution time: 6_503_000 picoseconds.
-		Weight::from_parts(6_788_000, 552)
+		//  Measured:  `648`
+		//  Estimated: `648`
+		// Minimum execution time: 11_554_000 picoseconds.
+		Weight::from_parts(12_180_000, 648)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -1648,10 +1711,10 @@ impl WeightInfo for () {
 	/// Proof: `Skipped::Metadata` (`max_values`: None, `max_size`: None, mode: `Measured`)
 	fn set_storage_full() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `10562`
-		//  Estimated: `10562`
-		// Minimum execution time: 41_564_000 picoseconds.
-		Weight::from_parts(42_945_000, 10562)
+		//  Measured:  `10658`
+		//  Estimated: `10658`
+		// Minimum execution time: 46_083_000 picoseconds.
+		Weight::from_parts(47_113_000, 10658)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -1661,14 +1724,14 @@ impl WeightInfo for () {
 	/// The range of component `o` is `[0, 416]`.
 	fn seal_set_storage(n: u32, o: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + o * (1 ±0)`
-		//  Estimated: `151 + o * (1 ±0)`
-		// Minimum execution time: 6_228_000 picoseconds.
-		Weight::from_parts(7_403_163, 151)
-			// Standard Error: 78
-			.saturating_add(Weight::from_parts(359, 0).saturating_mul(n.into()))
-			// Standard Error: 78
-			.saturating_add(Weight::from_parts(919, 0).saturating_mul(o.into()))
+		//  Measured:  `248 + o * (1 ±0)`
+		//  Estimated: `247 + o * (1 ±0)`
+		// Minimum execution time: 8_947_000 picoseconds.
+		Weight::from_parts(11_982_367, 247)
+			// Standard Error: 198
+			.saturating_add(Weight::from_parts(714, 0).saturating_mul(n.into()))
+			// Standard Error: 198
+			.saturating_add(Weight::from_parts(3_070, 0).saturating_mul(o.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(o.into()))
@@ -1678,12 +1741,12 @@ impl WeightInfo for () {
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_clear_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + n * (1 ±0)`
-		//  Estimated: `151 + n * (1 ±0)`
-		// Minimum execution time: 5_834_000 picoseconds.
-		Weight::from_parts(7_142_600, 151)
-			// Standard Error: 124
-			.saturating_add(Weight::from_parts(1_559, 0).saturating_mul(n.into()))
+		//  Measured:  `248 + n * (1 ±0)`
+		//  Estimated: `247 + n * (1 ±0)`
+		// Minimum execution time: 8_420_000 picoseconds.
+		Weight::from_parts(11_835_497, 247)
+			// Standard Error: 346
+			.saturating_add(Weight::from_parts(4_354, 0).saturating_mul(n.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
@@ -1693,12 +1756,12 @@ impl WeightInfo for () {
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_get_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + n * (1 ±0)`
-		//  Estimated: `151 + n * (1 ±0)`
-		// Minimum execution time: 5_640_000 picoseconds.
-		Weight::from_parts(7_020_908, 151)
-			// Standard Error: 113
-			.saturating_add(Weight::from_parts(1_856, 0).saturating_mul(n.into()))
+		//  Measured:  `248 + n * (1 ±0)`
+		//  Estimated: `247 + n * (1 ±0)`
+		// Minimum execution time: 7_897_000 picoseconds.
+		Weight::from_parts(11_277_209, 247)
+			// Standard Error: 329
+			.saturating_add(Weight::from_parts(4_715, 0).saturating_mul(n.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
 	}
@@ -1707,12 +1770,12 @@ impl WeightInfo for () {
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_contains_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + n * (1 ±0)`
-		//  Estimated: `151 + n * (1 ±0)`
-		// Minimum execution time: 5_162_000 picoseconds.
-		Weight::from_parts(6_328_321, 151)
-			// Standard Error: 117
-			.saturating_add(Weight::from_parts(1_450, 0).saturating_mul(n.into()))
+		//  Measured:  `248 + n * (1 ±0)`
+		//  Estimated: `247 + n * (1 ±0)`
+		// Minimum execution time: 7_575_000 picoseconds.
+		Weight::from_parts(10_652_293, 247)
+			// Standard Error: 335
+			.saturating_add(Weight::from_parts(4_592, 0).saturating_mul(n.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
 	}
@@ -1721,12 +1784,12 @@ impl WeightInfo for () {
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_take_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `152 + n * (1 ±0)`
-		//  Estimated: `151 + n * (1 ±0)`
-		// Minimum execution time: 6_266_000 picoseconds.
-		Weight::from_parts(7_758_145, 151)
-			// Standard Error: 124
-			.saturating_add(Weight::from_parts(2_268, 0).saturating_mul(n.into()))
+		//  Measured:  `248 + n * (1 ±0)`
+		//  Estimated: `247 + n * (1 ±0)`
+		// Minimum execution time: 9_071_000 picoseconds.
+		Weight::from_parts(12_618_975, 247)
+			// Standard Error: 343
+			.saturating_add(Weight::from_parts(4_573, 0).saturating_mul(n.into()))
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 			.saturating_add(Weight::from_parts(0, 1).saturating_mul(n.into()))
@@ -1735,36 +1798,36 @@ impl WeightInfo for () {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_403_000 picoseconds.
-		Weight::from_parts(1_515_000, 0)
+		// Minimum execution time: 1_471_000 picoseconds.
+		Weight::from_parts(1_559_000, 0)
 	}
 	fn set_transient_storage_full() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_736_000 picoseconds.
-		Weight::from_parts(1_844_000, 0)
+		// Minimum execution time: 1_791_000 picoseconds.
+		Weight::from_parts(1_882_000, 0)
 	}
 	fn get_transient_storage_empty() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_382_000 picoseconds.
-		Weight::from_parts(1_485_000, 0)
+		// Minimum execution time: 1_450_000 picoseconds.
+		Weight::from_parts(1_502_000, 0)
 	}
 	fn get_transient_storage_full() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_548_000 picoseconds.
-		Weight::from_parts(1_610_000, 0)
+		// Minimum execution time: 1_579_000 picoseconds.
+		Weight::from_parts(1_648_000, 0)
 	}
 	fn rollback_transient_storage() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_018_000 picoseconds.
-		Weight::from_parts(1_076_000, 0)
+		// Minimum execution time: 1_162_000 picoseconds.
+		Weight::from_parts(1_218_000, 0)
 	}
 	/// The range of component `n` is `[0, 416]`.
 	/// The range of component `o` is `[0, 416]`.
@@ -1772,53 +1835,55 @@ impl WeightInfo for () {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_051_000 picoseconds.
-		Weight::from_parts(2_307_119, 0)
-			// Standard Error: 13
-			.saturating_add(Weight::from_parts(211, 0).saturating_mul(n.into()))
-			// Standard Error: 13
-			.saturating_add(Weight::from_parts(287, 0).saturating_mul(o.into()))
+		// Minimum execution time: 2_209_000 picoseconds.
+		Weight::from_parts(2_409_510, 0)
+			// Standard Error: 15
+			.saturating_add(Weight::from_parts(340, 0).saturating_mul(n.into()))
+			// Standard Error: 15
+			.saturating_add(Weight::from_parts(339, 0).saturating_mul(o.into()))
 	}
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_clear_transient_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_844_000 picoseconds.
-		Weight::from_parts(2_187_216, 0)
-			// Standard Error: 18
-			.saturating_add(Weight::from_parts(325, 0).saturating_mul(n.into()))
+		// Minimum execution time: 2_036_000 picoseconds.
+		Weight::from_parts(2_345_540, 0)
+			// Standard Error: 19
+			.saturating_add(Weight::from_parts(290, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_get_transient_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_739_000 picoseconds.
-		Weight::from_parts(1_948_795, 0)
-			// Standard Error: 14
-			.saturating_add(Weight::from_parts(234, 0).saturating_mul(n.into()))
+		// Minimum execution time: 1_830_000 picoseconds.
+		Weight::from_parts(2_030_862, 0)
+			// Standard Error: 21
+			.saturating_add(Weight::from_parts(274, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 416]`.
 	fn seal_contains_transient_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_593_000 picoseconds.
-		Weight::from_parts(1_780_040, 0)
-			// Standard Error: 15
-			.saturating_add(Weight::from_parts(197, 0).saturating_mul(n.into()))
+		// Minimum execution time: 1_652_000 picoseconds.
+		Weight::from_parts(1_838_447, 0)
+			// Standard Error: 21
+			.saturating_add(Weight::from_parts(154, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 416]`.
-	fn seal_take_transient_storage(_n: u32, ) -> Weight {
+	fn seal_take_transient_storage(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_292_000 picoseconds.
-		Weight::from_parts(2_515_910, 0)
+		// Minimum execution time: 2_398_000 picoseconds.
+		Weight::from_parts(2_621_838, 0)
+			// Standard Error: 18
+			.saturating_add(Weight::from_parts(111, 0).saturating_mul(n.into()))
 	}
-	/// Storage: `Revive::AddressSuffix` (r:1 w:0)
-	/// Proof: `Revive::AddressSuffix` (`max_values`: None, `max_size`: Some(32), added: 2507, mode: `Measured`)
+	/// Storage: `Revive::OriginalAccount` (r:1 w:0)
+	/// Proof: `Revive::OriginalAccount` (`max_values`: None, `max_size`: Some(52), added: 2527, mode: `Measured`)
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:0)
@@ -1829,18 +1894,20 @@ impl WeightInfo for () {
 	/// Proof: `System::Account` (`max_values`: None, `max_size`: Some(128), added: 2603, mode: `Measured`)
 	/// The range of component `t` is `[0, 1]`.
 	/// The range of component `i` is `[0, 262144]`.
-	fn seal_call(t: u32, _i: u32, ) -> Weight {
-		// Proof Size summary in bytes:
-		//  Measured:  `1165 + t * (242 ±0)`
-		//  Estimated: `4630 + t * (2436 ±0)`
-		// Minimum execution time: 30_071_000 picoseconds.
-		Weight::from_parts(31_203_349, 4630)
-			// Standard Error: 63_646
-			.saturating_add(Weight::from_parts(7_097_249, 0).saturating_mul(t.into()))
+	fn seal_call(t: u32, i: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `1313 + t * (243 ±0)`
+		//  Estimated: `4778 + t * (2511 ±0)`
+		// Minimum execution time: 35_387_000 picoseconds.
+		Weight::from_parts(36_233_832, 4778)
+			// Standard Error: 62_744
+			.saturating_add(Weight::from_parts(7_331_152, 0).saturating_mul(t.into()))
+			// Standard Error: 0
+			.saturating_add(Weight::from_parts(3, 0).saturating_mul(i.into()))
 			.saturating_add(RocksDbWeight::get().reads(4_u64))
 			.saturating_add(RocksDbWeight::get().reads((1_u64).saturating_mul(t.into())))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
-			.saturating_add(Weight::from_parts(0, 2436).saturating_mul(t.into()))
+			.saturating_add(Weight::from_parts(0, 2511).saturating_mul(t.into()))
 	}
 	/// Storage: `Revive::ContractInfoOf` (r:1 w:0)
 	/// Proof: `Revive::ContractInfoOf` (`max_values`: None, `max_size`: Some(242), added: 2717, mode: `Measured`)
@@ -1850,10 +1917,10 @@ impl WeightInfo for () {
 	/// Proof: `Revive::PristineCode` (`max_values`: None, `max_size`: Some(262180), added: 264655, mode: `Measured`)
 	fn seal_delegate_call() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1108`
-		//  Estimated: `4573`
-		// Minimum execution time: 23_440_000 picoseconds.
-		Weight::from_parts(24_296_000, 4573)
+		//  Measured:  `1236`
+		//  Estimated: `4701`
+		// Minimum execution time: 30_155_000 picoseconds.
+		Weight::from_parts(31_146_000, 4701)
 			.saturating_add(RocksDbWeight::get().reads(3_u64))
 	}
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:1)
@@ -1867,87 +1934,141 @@ impl WeightInfo for () {
 	/// The range of component `i` is `[0, 262144]`.
 	fn seal_instantiate(i: u32, ) -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `1130`
-		//  Estimated: `4608`
-		// Minimum execution time: 105_570_000 picoseconds.
-		Weight::from_parts(93_244_583, 4608)
+		//  Measured:  `1273`
+		//  Estimated: `4715`
+		// Minimum execution time: 113_701_000 picoseconds.
+		Weight::from_parts(105_202_490, 4715)
 			// Standard Error: 11
-			.saturating_add(Weight::from_parts(4_070, 0).saturating_mul(i.into()))
+			.saturating_add(Weight::from_parts(4_047, 0).saturating_mul(i.into()))
 			.saturating_add(RocksDbWeight::get().reads(4_u64))
 			.saturating_add(RocksDbWeight::get().writes(3_u64))
 	}
 	/// The range of component `n` is `[0, 262144]`.
-	fn seal_hash_sha2_256(n: u32, ) -> Weight {
+	fn sha2_256(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 633_000 picoseconds.
-		Weight::from_parts(2_028_267, 0)
-			// Standard Error: 3
-			.saturating_add(Weight::from_parts(1_346, 0).saturating_mul(n.into()))
+		// Minimum execution time: 742_000 picoseconds.
+		Weight::from_parts(3_723_181, 0)
+			// Standard Error: 2
+			.saturating_add(Weight::from_parts(1_121, 0).saturating_mul(n.into()))
+	}
+	/// The range of component `n` is `[0, 262144]`.
+	fn identity(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 280_000 picoseconds.
+		Weight::from_parts(308_244, 0)
+			// Standard Error: 0
+			.saturating_add(Weight::from_parts(112, 0).saturating_mul(n.into()))
+	}
+	/// The range of component `n` is `[0, 262144]`.
+	fn ripemd_160(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 741_000 picoseconds.
+		Weight::from_parts(2_450, 0)
+			// Standard Error: 1
+			.saturating_add(Weight::from_parts(3_780, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 262144]`.
 	fn seal_hash_keccak_256(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 1_026_000 picoseconds.
-		Weight::from_parts(1_828_261, 0)
+		// Minimum execution time: 1_040_000 picoseconds.
+		Weight::from_parts(4_614_461, 0)
 			// Standard Error: 3
-			.saturating_add(Weight::from_parts(3_566, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(3_567, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 262144]`.
 	fn seal_hash_blake2_256(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 652_000 picoseconds.
-		Weight::from_parts(1_883_702, 0)
+		// Minimum execution time: 674_000 picoseconds.
+		Weight::from_parts(4_628_583, 0)
 			// Standard Error: 3
-			.saturating_add(Weight::from_parts(1_469, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(1_472, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 262144]`.
 	fn seal_hash_blake2_128(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 619_000 picoseconds.
-		Weight::from_parts(2_402_538, 0)
+		// Minimum execution time: 669_000 picoseconds.
+		Weight::from_parts(3_333_102, 0)
 			// Standard Error: 2
-			.saturating_add(Weight::from_parts(1_464, 0).saturating_mul(n.into()))
+			.saturating_add(Weight::from_parts(1_470, 0).saturating_mul(n.into()))
 	}
 	/// The range of component `n` is `[0, 261889]`.
 	fn seal_sr25519_verify(n: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 42_251_000 picoseconds.
-		Weight::from_parts(30_574_101, 0)
-			// Standard Error: 10
-			.saturating_add(Weight::from_parts(5_043, 0).saturating_mul(n.into()))
+		// Minimum execution time: 49_635_000 picoseconds.
+		Weight::from_parts(35_441_301, 0)
+			// Standard Error: 11
+			.saturating_add(Weight::from_parts(5_194, 0).saturating_mul(n.into()))
+	}
+	fn ecdsa_recover() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 44_896_000 picoseconds.
+		Weight::from_parts(45_593_000, 0)
 	}
-	fn seal_ecdsa_recover() -> Weight {
+	fn bn128_add() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 48_588_000 picoseconds.
-		Weight::from_parts(49_800_000, 0)
+		// Minimum execution time: 15_131_000 picoseconds.
+		Weight::from_parts(15_934_000, 0)
+	}
+	fn bn128_mul() -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 1_016_474_000 picoseconds.
+		Weight::from_parts(1_020_567_000, 0)
+	}
+	/// The range of component `n` is `[0, 1365]`.
+	fn bn128_pairing(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 12_582_084_000 picoseconds.
+		Weight::from_parts(12_648_387_115, 0)
+			// Standard Error: 5_577
+			.saturating_add(Weight::from_parts(6_468, 0).saturating_mul(n.into()))
+	}
+	/// The range of component `n` is `[0, 1200]`.
+	fn blake2f(n: u32, ) -> Weight {
+		// Proof Size summary in bytes:
+		//  Measured:  `0`
+		//  Estimated: `0`
+		// Minimum execution time: 384_000 picoseconds.
+		Weight::from_parts(507_334, 0)
+			// Standard Error: 6
+			.saturating_add(Weight::from_parts(22_429, 0).saturating_mul(n.into()))
 	}
 	fn seal_ecdsa_to_eth_address() -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 12_393_000 picoseconds.
-		Weight::from_parts(12_656_000, 0)
+		// Minimum execution time: 12_632_000 picoseconds.
+		Weight::from_parts(12_855_000, 0)
 	}
 	/// Storage: `Revive::CodeInfoOf` (r:1 w:1)
 	/// Proof: `Revive::CodeInfoOf` (`max_values`: None, `max_size`: Some(96), added: 2571, mode: `Measured`)
 	fn seal_set_code_hash() -> Weight {
 		// Proof Size summary in bytes:
-		//  Measured:  `196`
-		//  Estimated: `3661`
-		// Minimum execution time: 10_003_000 picoseconds.
-		Weight::from_parts(10_329_000, 3661)
+		//  Measured:  `300`
+		//  Estimated: `3765`
+		// Minimum execution time: 14_048_000 picoseconds.
+		Weight::from_parts(14_365_000, 3765)
 			.saturating_add(RocksDbWeight::get().reads(1_u64))
 			.saturating_add(RocksDbWeight::get().writes(1_u64))
 	}
@@ -1956,19 +2077,19 @@ impl WeightInfo for () {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 11_475_000 picoseconds.
-		Weight::from_parts(45_314_927, 0)
-			// Standard Error: 458
-			.saturating_add(Weight::from_parts(126_444, 0).saturating_mul(r.into()))
+		// Minimum execution time: 11_581_000 picoseconds.
+		Weight::from_parts(78_858_605, 0)
+			// Standard Error: 675
+			.saturating_add(Weight::from_parts(131_406, 0).saturating_mul(r.into()))
 	}
 	/// The range of component `r` is `[0, 100000]`.
 	fn instr_empty_loop(r: u32, ) -> Weight {
 		// Proof Size summary in bytes:
 		//  Measured:  `0`
 		//  Estimated: `0`
-		// Minimum execution time: 2_711_000 picoseconds.
-		Weight::from_parts(8_586_335, 0)
-			// Standard Error: 18
-			.saturating_add(Weight::from_parts(73_090, 0).saturating_mul(r.into()))
+		// Minimum execution time: 2_740_000 picoseconds.
+		Weight::from_parts(6_368_891, 0)
+			// Standard Error: 10
+			.saturating_add(Weight::from_parts(77_239, 0).saturating_mul(r.into()))
 	}
 }
diff --git a/substrate/frame/revive/uapi/src/host.rs b/substrate/frame/revive/uapi/src/host.rs
index 676af60ec804474b426f6c1acd51486b15821d75..af15e6d89139810ff42ffc264568a46dbbe01dd1 100644
--- a/substrate/frame/revive/uapi/src/host.rs
+++ b/substrate/frame/revive/uapi/src/host.rs
@@ -547,20 +547,6 @@ pub trait HostFn: private::Sealed {
 	#[unstable_hostfn]
 	fn ecdsa_to_eth_address(pubkey: &[u8; 33], output: &mut [u8; 20]) -> Result;
 
-	/// Computes the sha2_256 32-bit hash on the given input buffer.
-	///
-	/// - The `input` and `output` buffer may overlap.
-	/// - The output buffer is expected to hold at least 32 bits.
-	/// - It is the callers responsibility to provide an output buffer that is large enough to hold
-	///   the expected amount of bytes returned by the hash function.
-	///
-	/// # Parameters
-	///
-	/// - `input`: The input data buffer.
-	/// - `output`: The output buffer to write the hash result to.
-	#[unstable_hostfn]
-	fn hash_sha2_256(input: &[u8], output: &mut [u8; 32]);
-
 	/// Computes the blake2_256 32-bit hash on the given input buffer.
 	///
 	/// - The `input` and `output` buffer may overlap.
diff --git a/substrate/frame/revive/uapi/src/host/riscv64.rs b/substrate/frame/revive/uapi/src/host/riscv64.rs
index 23b69bd4ca90f6cde1bed7a3ed15ff4162bb6622..537359829ef6ff353a293319b8df4bcdc370657d 100644
--- a/substrate/frame/revive/uapi/src/host/riscv64.rs
+++ b/substrate/frame/revive/uapi/src/host/riscv64.rs
@@ -121,7 +121,6 @@ mod sys {
 		pub fn block_number(out_ptr: *mut u8);
 		pub fn block_hash(block_number_ptr: *const u8, out_ptr: *mut u8);
 		pub fn block_author(out_ptr: *mut u8);
-		pub fn hash_sha2_256(input_ptr: *const u8, input_len: u32, out_ptr: *mut u8);
 		pub fn hash_keccak_256(input_ptr: *const u8, input_len: u32, out_ptr: *mut u8);
 		pub fn hash_blake2_256(input_ptr: *const u8, input_len: u32, out_ptr: *mut u8);
 		pub fn hash_blake2_128(input_ptr: *const u8, input_len: u32, out_ptr: *mut u8);
@@ -511,11 +510,6 @@ impl HostFn for HostFnImpl {
 		ret_code.into()
 	}
 
-	#[unstable_hostfn]
-	fn hash_sha2_256(input: &[u8], output: &mut [u8; 32]) {
-		unsafe { sys::hash_sha2_256(input.as_ptr(), input.len() as u32, output.as_mut_ptr()) }
-	}
-
 	#[unstable_hostfn]
 	fn hash_blake2_256(input: &[u8], output: &mut [u8; 32]) {
 		unsafe { sys::hash_blake2_256(input.as_ptr(), input.len() as u32, output.as_mut_ptr()) }